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
January 2015
- 2 participants
- 248 discussions
commit/galaxy-central: dannon: Slightly more comprehensive fix for default_order_by; there's no reason to have two methods for setting ordering here.
by commits-noreply@bitbucket.org 22 Jan '15
by commits-noreply@bitbucket.org 22 Jan '15
22 Jan '15
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/2daef93671e3/
Changeset: 2daef93671e3
User: dannon
Date: 2015-01-22 17:23:05+00:00
Summary: Slightly more comprehensive fix for default_order_by; there's no reason to have two methods for setting ordering here.
Affected #: 1 file
diff -r 9afcd69657ad3f66c156038e4b32ce3cadfd49c0 -r 2daef93671e3b1e16b80190d25541515ec7c90cf lib/galaxy/managers/base.py
--- a/lib/galaxy/managers/base.py
+++ b/lib/galaxy/managers/base.py
@@ -162,7 +162,6 @@
def __init__( self, app ):
self.app = app
- self.default_order_by = None
def _default_order_by( self ):
"""
@@ -235,8 +234,7 @@
Use the manager's default_order_by if order_by is None.
"""
if order_by is None:
- default_order_by = self.default_order_by or self._default_order_by()
- return query.order_by( *default_order_by )
+ return query.order_by( *self._default_order_by() )
if isinstance( order_by, ( list, tuple ) ):
return query.order_by( *order_by )
@@ -439,7 +437,7 @@
Set up serializer map, any additional serializable keys, and views here.
"""
self.app = app
-
+
# a map of dictionary keys to the functions (often lambdas) that create the values for those keys
self.serializers = {}
# a list of valid serializable keys that can use the default (string) serializer
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 ModelManager._apply_order_by when using default_order_by.
by commits-noreply@bitbucket.org 22 Jan '15
by commits-noreply@bitbucket.org 22 Jan '15
22 Jan '15
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/9afcd69657ad/
Changeset: 9afcd69657ad
User: dan
Date: 2015-01-22 17:00:08+00:00
Summary: Fix for ModelManager._apply_order_by when using default_order_by.
Affected #: 1 file
diff -r d7b26e59a22e01288135f22bde90ca5259647837 -r 9afcd69657ad3f66c156038e4b32ce3cadfd49c0 lib/galaxy/managers/base.py
--- a/lib/galaxy/managers/base.py
+++ b/lib/galaxy/managers/base.py
@@ -235,7 +235,8 @@
Use the manager's default_order_by if order_by is None.
"""
if order_by is None:
- return query.order_by( *self.default_order_by() )
+ default_order_by = self.default_order_by or self._default_order_by()
+ return query.order_by( *default_order_by )
if isinstance( order_by, ( list, tuple ) ):
return query.order_by( *order_by )
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
[galaxyproject/usegalaxy-playbook] 5eaef6: Update Test tool_data_table_conf.xml for bwa 0.6+
by GitHub 22 Jan '15
by GitHub 22 Jan '15
22 Jan '15
Branch: refs/heads/master
Home: https://github.com/galaxyproject/usegalaxy-playbook
Commit: 5eaef6de05369d48cc57b47947493bd0aa7bbd4f
https://github.com/galaxyproject/usegalaxy-playbook/commit/5eaef6de05369d48…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2015-01-22 (Thu, 22 Jan 2015)
Changed paths:
M files/galaxy/test.galaxyproject.org/config/tool_data_table_conf.xml
Log Message:
-----------
Update Test tool_data_table_conf.xml for bwa 0.6+
Commit: 30c31e179d3190c30be3d06179bcd01488a71508
https://github.com/galaxyproject/usegalaxy-playbook/commit/30c31e179d3190c3…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2015-01-22 (Thu, 22 Jan 2015)
Changed paths:
M files/galaxy/test.galaxyproject.org/var/integrated_tool_panel.xml
M files/galaxy/test.galaxyproject.org/var/migrated_tools_conf.xml
M files/galaxy/test.galaxyproject.org/var/shed_tool_conf.xml
Log Message:
-----------
Fetch mutable configs from Test.
Commit: 24a403ec1613506fec8567a768a8b86a53e1ada7
https://github.com/galaxyproject/usegalaxy-playbook/commit/24a403ec1613506f…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2015-01-22 (Thu, 22 Jan 2015)
Changed paths:
M files/galaxy/usegalaxy.org/config/tool_data_table_conf.xml
Log Message:
-----------
Update Main tool_data_table_conf.xml for bwa 0.6+
Commit: 354df02e63cc72d920c91375f9730eca66b18173
https://github.com/galaxyproject/usegalaxy-playbook/commit/354df02e63cc72d9…
Author: Nate Coraor <nate(a)bx.psu.edu>
Date: 2015-01-22 (Thu, 22 Jan 2015)
Changed paths:
M files/galaxy/usegalaxy.org/var/integrated_tool_panel.xml
M files/galaxy/usegalaxy.org/var/shed_tool_conf.xml
Log Message:
-----------
Fetch/distribute mutable configs from/to Main.
Compare: https://github.com/galaxyproject/usegalaxy-playbook/compare/f81320e766c1...…
1
0
commit/galaxy-central: carlfeberhard: UI: update Raven.js to 1.1.16 (463f68f)
by commits-noreply@bitbucket.org 22 Jan '15
by commits-noreply@bitbucket.org 22 Jan '15
22 Jan '15
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/d7b26e59a22e/
Changeset: d7b26e59a22e
User: carlfeberhard
Date: 2015-01-22 16:29:07+00:00
Summary: UI: update Raven.js to 1.1.16 (463f68f)
Affected #: 4 files
diff -r f6e5390c830084b629ec1a5efb95fe29fff03ceb -r d7b26e59a22e01288135f22bde90ca5259647837 client/GruntFile.js
--- a/client/GruntFile.js
+++ b/client/GruntFile.js
@@ -71,7 +71,7 @@
"jquery-migrate-official": [ "index.js", "jquery/jquery.migrate.js" ],
"traceKit": [ "tracekit.js", "tracekit.js" ],
- //"ravenjs": [ "dist/raven.js", "raven.js" ],
+ "ravenjs": [ "dist/raven.js", "raven.js" ],
//"underscore": [ "underscore.js", "underscore.js" ],
//"backbone": [ "backbone.js", "backbone/backbone.js" ],
diff -r f6e5390c830084b629ec1a5efb95fe29fff03ceb -r d7b26e59a22e01288135f22bde90ca5259647837 client/galaxy/scripts/libs/raven.js
--- a/client/galaxy/scripts/libs/raven.js
+++ b/client/galaxy/scripts/libs/raven.js
@@ -1,11 +1,1089 @@
-(function(){
+/*! Raven.js 1.1.16 (463f68f) | github.com/getsentry/raven-js */
-// Raven.js
-//
-// Originally based on the Arecibo JavaScript client.
-//
-// Requires:
-// * TraceKit (included in the full and minified distribution files)
+/*
+ * Includes TraceKit
+ * https://github.com/getsentry/TraceKit
+ *
+ * Copyright 2014 Matt Robenolt and other contributors
+ * Released under the BSD license
+ * https://github.com/getsentry/raven-js/blob/master/LICENSE
+ *
+ */
+;(function(window, undefined){
+'use strict';
+
+/*
+ TraceKit - Cross brower stack traces - github.com/occ/TraceKit
+ MIT license
+*/
+
+var TraceKit = {
+ remoteFetching: false,
+ collectWindowErrors: true,
+ // 3 lines before, the offending line, 3 lines after
+ linesOfContext: 7
+};
+
+// global reference to slice
+var _slice = [].slice;
+var UNKNOWN_FUNCTION = '?';
+
+
+/**
+ * TraceKit.wrap: Wrap any function in a TraceKit reporter
+ * Example: func = TraceKit.wrap(func);
+ *
+ * @param {Function} func Function to be wrapped
+ * @return {Function} The wrapped func
+ */
+TraceKit.wrap = function traceKitWrapper(func) {
+ function wrapped() {
+ try {
+ return func.apply(this, arguments);
+ } catch (e) {
+ TraceKit.report(e);
+ throw e;
+ }
+ }
+ return wrapped;
+};
+
+/**
+ * TraceKit.report: cross-browser processing of unhandled exceptions
+ *
+ * Syntax:
+ * TraceKit.report.subscribe(function(stackInfo) { ... })
+ * TraceKit.report.unsubscribe(function(stackInfo) { ... })
+ * TraceKit.report(exception)
+ * try { ...code... } catch(ex) { TraceKit.report(ex); }
+ *
+ * Supports:
+ * - Firefox: full stack trace with line numbers, plus column number
+ * on top frame; column number is not guaranteed
+ * - Opera: full stack trace with line and column numbers
+ * - Chrome: full stack trace with line and column numbers
+ * - Safari: line and column number for the top frame only; some frames
+ * may be missing, and column number is not guaranteed
+ * - IE: line and column number for the top frame only; some frames
+ * may be missing, and column number is not guaranteed
+ *
+ * In theory, TraceKit should work on all of the following versions:
+ * - IE5.5+ (only 8.0 tested)
+ * - Firefox 0.9+ (only 3.5+ tested)
+ * - Opera 7+ (only 10.50 tested; versions 9 and earlier may require
+ * Exceptions Have Stacktrace to be enabled in opera:config)
+ * - Safari 3+ (only 4+ tested)
+ * - Chrome 1+ (only 5+ tested)
+ * - Konqueror 3.5+ (untested)
+ *
+ * Requires TraceKit.computeStackTrace.
+ *
+ * Tries to catch all unhandled exceptions and report them to the
+ * subscribed handlers. Please note that TraceKit.report will rethrow the
+ * exception. This is REQUIRED in order to get a useful stack trace in IE.
+ * If the exception does not reach the top of the browser, you will only
+ * get a stack trace from the point where TraceKit.report was called.
+ *
+ * Handlers receive a stackInfo object as described in the
+ * TraceKit.computeStackTrace docs.
+ */
+TraceKit.report = (function reportModuleWrapper() {
+ var handlers = [],
+ lastArgs = null,
+ lastException = null,
+ lastExceptionStack = null;
+
+ /**
+ * Add a crash handler.
+ * @param {Function} handler
+ */
+ function subscribe(handler) {
+ installGlobalHandler();
+ handlers.push(handler);
+ }
+
+ /**
+ * Remove a crash handler.
+ * @param {Function} handler
+ */
+ function unsubscribe(handler) {
+ for (var i = handlers.length - 1; i >= 0; --i) {
+ if (handlers[i] === handler) {
+ handlers.splice(i, 1);
+ }
+ }
+ }
+
+ /**
+ * Remove all crash handlers.
+ */
+ function unsubscribeAll() {
+ uninstallGlobalHandler();
+ handlers = [];
+ }
+
+ /**
+ * Dispatch stack information to all handlers.
+ * @param {Object.<string, *>} stack
+ */
+ function notifyHandlers(stack, isWindowError) {
+ var exception = null;
+ if (isWindowError && !TraceKit.collectWindowErrors) {
+ return;
+ }
+ for (var i in handlers) {
+ if (hasKey(handlers, i)) {
+ try {
+ handlers[i].apply(null, [stack].concat(_slice.call(arguments, 2)));
+ } catch (inner) {
+ exception = inner;
+ }
+ }
+ }
+
+ if (exception) {
+ throw exception;
+ }
+ }
+
+ var _oldOnerrorHandler, _onErrorHandlerInstalled;
+
+ /**
+ * Ensures all global unhandled exceptions are recorded.
+ * Supported by Gecko and IE.
+ * @param {string} message Error message.
+ * @param {string} url URL of script that generated the exception.
+ * @param {(number|string)} lineNo The line number at which the error
+ * occurred.
+ * @param {?(number|string)} colNo The column number at which the error
+ * occurred.
+ * @param {?Error} ex The actual Error object.
+ */
+ function traceKitWindowOnError(message, url, lineNo, colNo, ex) {
+ var stack = null;
+
+ if (lastExceptionStack) {
+ TraceKit.computeStackTrace.augmentStackTraceWithInitialElement(lastExceptionStack, url, lineNo, message);
+ processLastException();
+ } else if (ex) {
+ // New chrome and blink send along a real error object
+ // Let's just report that like a normal error.
+ // See: https://mikewest.org/2013/08/debugging-runtime-errors-with-window-onerror
+ stack = TraceKit.computeStackTrace(ex);
+ notifyHandlers(stack, true);
+ } else {
+ var location = {
+ 'url': url,
+ 'line': lineNo,
+ 'column': colNo
+ };
+ location.func = TraceKit.computeStackTrace.guessFunctionName(location.url, location.line);
+ location.context = TraceKit.computeStackTrace.gatherContext(location.url, location.line);
+ stack = {
+ 'message': message,
+ 'url': document.location.href,
+ 'stack': [location]
+ };
+ notifyHandlers(stack, true);
+ }
+
+ if (_oldOnerrorHandler) {
+ return _oldOnerrorHandler.apply(this, arguments);
+ }
+
+ return false;
+ }
+
+ function installGlobalHandler ()
+ {
+ if (_onErrorHandlerInstalled) {
+ return;
+ }
+ _oldOnerrorHandler = window.onerror;
+ window.onerror = traceKitWindowOnError;
+ _onErrorHandlerInstalled = true;
+ }
+
+ function uninstallGlobalHandler ()
+ {
+ if (!_onErrorHandlerInstalled) {
+ return;
+ }
+ window.onerror = _oldOnerrorHandler;
+ _onErrorHandlerInstalled = false;
+ _oldOnerrorHandler = undefined;
+ }
+
+ function processLastException() {
+ var _lastExceptionStack = lastExceptionStack,
+ _lastArgs = lastArgs;
+ lastArgs = null;
+ lastExceptionStack = null;
+ lastException = null;
+ notifyHandlers.apply(null, [_lastExceptionStack, false].concat(_lastArgs));
+ }
+
+ /**
+ * Reports an unhandled Error to TraceKit.
+ * @param {Error} ex
+ * @param {?boolean} rethrow If false, do not re-throw the exception.
+ * Only used for window.onerror to not cause an infinite loop of
+ * rethrowing.
+ */
+ function report(ex, rethrow) {
+ var args = _slice.call(arguments, 1);
+ if (lastExceptionStack) {
+ if (lastException === ex) {
+ return; // already caught by an inner catch block, ignore
+ } else {
+ processLastException();
+ }
+ }
+
+ var stack = TraceKit.computeStackTrace(ex);
+ lastExceptionStack = stack;
+ lastException = ex;
+ lastArgs = args;
+
+ // If the stack trace is incomplete, wait for 2 seconds for
+ // slow slow IE to see if onerror occurs or not before reporting
+ // this exception; otherwise, we will end up with an incomplete
+ // stack trace
+ window.setTimeout(function () {
+ if (lastException === ex) {
+ processLastException();
+ }
+ }, (stack.incomplete ? 2000 : 0));
+
+ if (rethrow !== false) {
+ throw ex; // re-throw to propagate to the top level (and cause window.onerror)
+ }
+ }
+
+ report.subscribe = subscribe;
+ report.unsubscribe = unsubscribe;
+ report.uninstall = unsubscribeAll;
+ return report;
+}());
+
+/**
+ * TraceKit.computeStackTrace: cross-browser stack traces in JavaScript
+ *
+ * Syntax:
+ * s = TraceKit.computeStackTrace.ofCaller([depth])
+ * s = TraceKit.computeStackTrace(exception) // consider using TraceKit.report instead (see below)
+ * Returns:
+ * s.name - exception name
+ * s.message - exception message
+ * s.stack[i].url - JavaScript or HTML file URL
+ * s.stack[i].func - function name, or empty for anonymous functions (if guessing did not work)
+ * s.stack[i].args - arguments passed to the function, if known
+ * s.stack[i].line - line number, if known
+ * s.stack[i].column - column number, if known
+ * s.stack[i].context - an array of source code lines; the middle element corresponds to the correct line#
+ *
+ * Supports:
+ * - Firefox: full stack trace with line numbers and unreliable column
+ * number on top frame
+ * - Opera 10: full stack trace with line and column numbers
+ * - Opera 9-: full stack trace with line numbers
+ * - Chrome: full stack trace with line and column numbers
+ * - Safari: line and column number for the topmost stacktrace element
+ * only
+ * - IE: no line numbers whatsoever
+ *
+ * Tries to guess names of anonymous functions by looking for assignments
+ * in the source code. In IE and Safari, we have to guess source file names
+ * by searching for function bodies inside all page scripts. This will not
+ * work for scripts that are loaded cross-domain.
+ * Here be dragons: some function names may be guessed incorrectly, and
+ * duplicate functions may be mismatched.
+ *
+ * TraceKit.computeStackTrace should only be used for tracing purposes.
+ * Logging of unhandled exceptions should be done with TraceKit.report,
+ * which builds on top of TraceKit.computeStackTrace and provides better
+ * IE support by utilizing the window.onerror event to retrieve information
+ * about the top of the stack.
+ *
+ * Note: In IE and Safari, no stack trace is recorded on the Error object,
+ * so computeStackTrace instead walks its *own* chain of callers.
+ * This means that:
+ * * in Safari, some methods may be missing from the stack trace;
+ * * in IE, the topmost function in the stack trace will always be the
+ * caller of computeStackTrace.
+ *
+ * This is okay for tracing (because you are likely to be calling
+ * computeStackTrace from the function you want to be the topmost element
+ * of the stack trace anyway), but not okay for logging unhandled
+ * exceptions (because your catch block will likely be far away from the
+ * inner function that actually caused the exception).
+ *
+ * Tracing example:
+ * function trace(message) {
+ * var stackInfo = TraceKit.computeStackTrace.ofCaller();
+ * var data = message + "\n";
+ * for(var i in stackInfo.stack) {
+ * var item = stackInfo.stack[i];
+ * data += (item.func || '[anonymous]') + "() in " + item.url + ":" + (item.line || '0') + "\n";
+ * }
+ * if (window.console)
+ * console.info(data);
+ * else
+ * alert(data);
+ * }
+ */
+TraceKit.computeStackTrace = (function computeStackTraceWrapper() {
+ var debug = false,
+ sourceCache = {};
+
+ /**
+ * Attempts to retrieve source code via XMLHttpRequest, which is used
+ * to look up anonymous function names.
+ * @param {string} url URL of source code.
+ * @return {string} Source contents.
+ */
+ function loadSource(url) {
+ if (!TraceKit.remoteFetching) { //Only attempt request if remoteFetching is on.
+ return '';
+ }
+ try {
+ var getXHR = function() {
+ try {
+ return new window.XMLHttpRequest();
+ } catch (e) {
+ // explicitly bubble up the exception if not found
+ return new window.ActiveXObject('Microsoft.XMLHTTP');
+ }
+ };
+
+ var request = getXHR();
+ request.open('GET', url, false);
+ request.send('');
+ return request.responseText;
+ } catch (e) {
+ return '';
+ }
+ }
+
+ /**
+ * Retrieves source code from the source code cache.
+ * @param {string} url URL of source code.
+ * @return {Array.<string>} Source contents.
+ */
+ function getSource(url) {
+ if (!isString(url)) return [];
+ if (!hasKey(sourceCache, url)) {
+ // URL needs to be able to fetched within the acceptable domain. Otherwise,
+ // cross-domain errors will be triggered.
+ var source = '';
+ if (url.indexOf(document.domain) !== -1) {
+ source = loadSource(url);
+ }
+ sourceCache[url] = source ? source.split('\n') : [];
+ }
+
+ return sourceCache[url];
+ }
+
+ /**
+ * Tries to use an externally loaded copy of source code to determine
+ * the name of a function by looking at the name of the variable it was
+ * assigned to, if any.
+ * @param {string} url URL of source code.
+ * @param {(string|number)} lineNo Line number in source code.
+ * @return {string} The function name, if discoverable.
+ */
+ function guessFunctionName(url, lineNo) {
+ var reFunctionArgNames = /function ([^(]*)\(([^)]*)\)/,
+ reGuessFunction = /['"]?([0-9A-Za-z$_]+)['"]?\s*[:=]\s*(function|eval|new Function)/,
+ line = '',
+ maxLines = 10,
+ source = getSource(url),
+ m;
+
+ if (!source.length) {
+ return UNKNOWN_FUNCTION;
+ }
+
+ // Walk backwards from the first line in the function until we find the line which
+ // matches the pattern above, which is the function definition
+ for (var i = 0; i < maxLines; ++i) {
+ line = source[lineNo - i] + line;
+
+ if (!isUndefined(line)) {
+ if ((m = reGuessFunction.exec(line))) {
+ return m[1];
+ } else if ((m = reFunctionArgNames.exec(line))) {
+ return m[1];
+ }
+ }
+ }
+
+ return UNKNOWN_FUNCTION;
+ }
+
+ /**
+ * Retrieves the surrounding lines from where an exception occurred.
+ * @param {string} url URL of source code.
+ * @param {(string|number)} line Line number in source code to centre
+ * around for context.
+ * @return {?Array.<string>} Lines of source code.
+ */
+ function gatherContext(url, line) {
+ var source = getSource(url);
+
+ if (!source.length) {
+ return null;
+ }
+
+ var context = [],
+ // linesBefore & linesAfter are inclusive with the offending line.
+ // if linesOfContext is even, there will be one extra line
+ // *before* the offending line.
+ linesBefore = Math.floor(TraceKit.linesOfContext / 2),
+ // Add one extra line if linesOfContext is odd
+ linesAfter = linesBefore + (TraceKit.linesOfContext % 2),
+ start = Math.max(0, line - linesBefore - 1),
+ end = Math.min(source.length, line + linesAfter - 1);
+
+ line -= 1; // convert to 0-based index
+
+ for (var i = start; i < end; ++i) {
+ if (!isUndefined(source[i])) {
+ context.push(source[i]);
+ }
+ }
+
+ return context.length > 0 ? context : null;
+ }
+
+ /**
+ * Escapes special characters, except for whitespace, in a string to be
+ * used inside a regular expression as a string literal.
+ * @param {string} text The string.
+ * @return {string} The escaped string literal.
+ */
+ function escapeRegExp(text) {
+ return text.replace(/[\-\[\]{}()*+?.,\\\^$|#]/g, '\\$&');
+ }
+
+ /**
+ * Escapes special characters in a string to be used inside a regular
+ * expression as a string literal. Also ensures that HTML entities will
+ * be matched the same as their literal friends.
+ * @param {string} body The string.
+ * @return {string} The escaped string.
+ */
+ function escapeCodeAsRegExpForMatchingInsideHTML(body) {
+ return escapeRegExp(body).replace('<', '(?:<|<)').replace('>', '(?:>|>)').replace('&', '(?:&|&)').replace('"', '(?:"|")').replace(/\s+/g, '\\s+');
+ }
+
+ /**
+ * Determines where a code fragment occurs in the source code.
+ * @param {RegExp} re The function definition.
+ * @param {Array.<string>} urls A list of URLs to search.
+ * @return {?Object.<string, (string|number)>} An object containing
+ * the url, line, and column number of the defined function.
+ */
+ function findSourceInUrls(re, urls) {
+ var source, m;
+ for (var i = 0, j = urls.length; i < j; ++i) {
+ // console.log('searching', urls[i]);
+ if ((source = getSource(urls[i])).length) {
+ source = source.join('\n');
+ if ((m = re.exec(source))) {
+ // console.log('Found function in ' + urls[i]);
+
+ return {
+ 'url': urls[i],
+ 'line': source.substring(0, m.index).split('\n').length,
+ 'column': m.index - source.lastIndexOf('\n', m.index) - 1
+ };
+ }
+ }
+ }
+
+ // console.log('no match');
+
+ return null;
+ }
+
+ /**
+ * Determines at which column a code fragment occurs on a line of the
+ * source code.
+ * @param {string} fragment The code fragment.
+ * @param {string} url The URL to search.
+ * @param {(string|number)} line The line number to examine.
+ * @return {?number} The column number.
+ */
+ function findSourceInLine(fragment, url, line) {
+ var source = getSource(url),
+ re = new RegExp('\\b' + escapeRegExp(fragment) + '\\b'),
+ m;
+
+ line -= 1;
+
+ if (source && source.length > line && (m = re.exec(source[line]))) {
+ return m.index;
+ }
+
+ return null;
+ }
+
+ /**
+ * Determines where a function was defined within the source code.
+ * @param {(Function|string)} func A function reference or serialized
+ * function definition.
+ * @return {?Object.<string, (string|number)>} An object containing
+ * the url, line, and column number of the defined function.
+ */
+ function findSourceByFunctionBody(func) {
+ var urls = [window.location.href],
+ scripts = document.getElementsByTagName('script'),
+ body,
+ code = '' + func,
+ codeRE = /^function(?:\s+([\w$]+))?\s*\(([\w\s,]*)\)\s*\{\s*(\S[\s\S]*\S)\s*\}\s*$/,
+ eventRE = /^function on([\w$]+)\s*\(event\)\s*\{\s*(\S[\s\S]*\S)\s*\}\s*$/,
+ re,
+ parts,
+ result;
+
+ for (var i = 0; i < scripts.length; ++i) {
+ var script = scripts[i];
+ if (script.src) {
+ urls.push(script.src);
+ }
+ }
+
+ if (!(parts = codeRE.exec(code))) {
+ re = new RegExp(escapeRegExp(code).replace(/\s+/g, '\\s+'));
+ }
+
+ // not sure if this is really necessary, but I don’t have a test
+ // corpus large enough to confirm that and it was in the original.
+ else {
+ var name = parts[1] ? '\\s+' + parts[1] : '',
+ args = parts[2].split(',').join('\\s*,\\s*');
+
+ body = escapeRegExp(parts[3]).replace(/;$/, ';?'); // semicolon is inserted if the function ends with a comment.replace(/\s+/g, '\\s+');
+ re = new RegExp('function' + name + '\\s*\\(\\s*' + args + '\\s*\\)\\s*{\\s*' + body + '\\s*}');
+ }
+
+ // look for a normal function definition
+ if ((result = findSourceInUrls(re, urls))) {
+ return result;
+ }
+
+ // look for an old-school event handler function
+ if ((parts = eventRE.exec(code))) {
+ var event = parts[1];
+ body = escapeCodeAsRegExpForMatchingInsideHTML(parts[2]);
+
+ // look for a function defined in HTML as an onXXX handler
+ re = new RegExp('on' + event + '=[\\\'"]\\s*' + body + '\\s*[\\\'"]', 'i');
+
+ if ((result = findSourceInUrls(re, urls[0]))) {
+ return result;
+ }
+
+ // look for ???
+ re = new RegExp(body);
+
+ if ((result = findSourceInUrls(re, urls))) {
+ return result;
+ }
+ }
+
+ return null;
+ }
+
+ // Contents of Exception in various browsers.
+ //
+ // SAFARI:
+ // ex.message = Can't find variable: qq
+ // ex.line = 59
+ // ex.sourceId = 580238192
+ // ex.sourceURL = http://...
+ // ex.expressionBeginOffset = 96
+ // ex.expressionCaretOffset = 98
+ // ex.expressionEndOffset = 98
+ // ex.name = ReferenceError
+ //
+ // FIREFOX:
+ // ex.message = qq is not defined
+ // ex.fileName = http://...
+ // ex.lineNumber = 59
+ // ex.columnNumber = 69
+ // ex.stack = ...stack trace... (see the example below)
+ // ex.name = ReferenceError
+ //
+ // CHROME:
+ // ex.message = qq is not defined
+ // ex.name = ReferenceError
+ // ex.type = not_defined
+ // ex.arguments = ['aa']
+ // ex.stack = ...stack trace...
+ //
+ // INTERNET EXPLORER:
+ // ex.message = ...
+ // ex.name = ReferenceError
+ //
+ // OPERA:
+ // ex.message = ...message... (see the example below)
+ // ex.name = ReferenceError
+ // ex.opera#sourceloc = 11 (pretty much useless, duplicates the info in ex.message)
+ // ex.stacktrace = n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'
+
+ /**
+ * Computes stack trace information from the stack property.
+ * Chrome and Gecko use this property.
+ * @param {Error} ex
+ * @return {?Object.<string, *>} Stack trace information.
+ */
+ function computeStackTraceFromStackProp(ex) {
+ if (!ex.stack) {
+ return null;
+ }
+
+ var chrome = /^\s*at (?:((?:\[object object\])?\S+(?: \[as \S+\])?) )?\(?((?:file|https?|chrome-extension):.*?):(\d+)(?::(\d+))?\)?\s*$/i,
+ gecko = /^\s*(\S*)(?:\((.*?)\))?@((?:file|https?|chrome).*?):(\d+)(?::(\d+))?\s*$/i,
+ lines = ex.stack.split('\n'),
+ stack = [],
+ parts,
+ element,
+ reference = /^(.*) is undefined$/.exec(ex.message);
+
+ for (var i = 0, j = lines.length; i < j; ++i) {
+ if ((parts = gecko.exec(lines[i]))) {
+ element = {
+ 'url': parts[3],
+ 'func': parts[1] || UNKNOWN_FUNCTION,
+ 'args': parts[2] ? parts[2].split(',') : '',
+ 'line': +parts[4],
+ 'column': parts[5] ? +parts[5] : null
+ };
+ } else if ((parts = chrome.exec(lines[i]))) {
+ element = {
+ 'url': parts[2],
+ 'func': parts[1] || UNKNOWN_FUNCTION,
+ 'line': +parts[3],
+ 'column': parts[4] ? +parts[4] : null
+ };
+ } else {
+ continue;
+ }
+
+ if (!element.func && element.line) {
+ element.func = guessFunctionName(element.url, element.line);
+ }
+
+ if (element.line) {
+ element.context = gatherContext(element.url, element.line);
+ }
+
+ stack.push(element);
+ }
+
+ if (!stack.length) {
+ return null;
+ }
+
+ if (stack[0].line && !stack[0].column && reference) {
+ stack[0].column = findSourceInLine(reference[1], stack[0].url, stack[0].line);
+ } else if (!stack[0].column && !isUndefined(ex.columnNumber)) {
+ // FireFox uses this awesome columnNumber property for its top frame
+ // Also note, Firefox's column number is 0-based and everything else expects 1-based,
+ // so adding 1
+ stack[0].column = ex.columnNumber + 1;
+ }
+
+ return {
+ 'name': ex.name,
+ 'message': ex.message,
+ 'url': document.location.href,
+ 'stack': stack
+ };
+ }
+
+ /**
+ * Computes stack trace information from the stacktrace property.
+ * Opera 10 uses this property.
+ * @param {Error} ex
+ * @return {?Object.<string, *>} Stack trace information.
+ */
+ function computeStackTraceFromStacktraceProp(ex) {
+ // Access and store the stacktrace property before doing ANYTHING
+ // else to it because Opera is not very good at providing it
+ // reliably in other circumstances.
+ var stacktrace = ex.stacktrace;
+
+ var testRE = / line (\d+), column (\d+) in (?:<anonymous function: ([^>]+)>|([^\)]+))\((.*)\) in (.*):\s*$/i,
+ lines = stacktrace.split('\n'),
+ stack = [],
+ parts;
+
+ for (var i = 0, j = lines.length; i < j; i += 2) {
+ if ((parts = testRE.exec(lines[i]))) {
+ var element = {
+ 'line': +parts[1],
+ 'column': +parts[2],
+ 'func': parts[3] || parts[4],
+ 'args': parts[5] ? parts[5].split(',') : [],
+ 'url': parts[6]
+ };
+
+ if (!element.func && element.line) {
+ element.func = guessFunctionName(element.url, element.line);
+ }
+ if (element.line) {
+ try {
+ element.context = gatherContext(element.url, element.line);
+ } catch (exc) {}
+ }
+
+ if (!element.context) {
+ element.context = [lines[i + 1]];
+ }
+
+ stack.push(element);
+ }
+ }
+
+ if (!stack.length) {
+ return null;
+ }
+
+ return {
+ 'name': ex.name,
+ 'message': ex.message,
+ 'url': document.location.href,
+ 'stack': stack
+ };
+ }
+
+ /**
+ * NOT TESTED.
+ * Computes stack trace information from an error message that includes
+ * the stack trace.
+ * Opera 9 and earlier use this method if the option to show stack
+ * traces is turned on in opera:config.
+ * @param {Error} ex
+ * @return {?Object.<string, *>} Stack information.
+ */
+ function computeStackTraceFromOperaMultiLineMessage(ex) {
+ // Opera includes a stack trace into the exception message. An example is:
+ //
+ // Statement on line 3: Undefined variable: undefinedFunc
+ // Backtrace:
+ // Line 3 of linked script file://localhost/Users/andreyvit/Projects/TraceKit/javascript-client/sample.js: In function zzz
+ // undefinedFunc(a);
+ // Line 7 of inline#1 script in file://localhost/Users/andreyvit/Projects/TraceKit/javascript-client/sample.html: In function yyy
+ // zzz(x, y, z);
+ // Line 3 of inline#1 script in file://localhost/Users/andreyvit/Projects/TraceKit/javascript-client/sample.html: In function xxx
+ // yyy(a, a, a);
+ // Line 1 of function script
+ // try { xxx('hi'); return false; } catch(ex) { TraceKit.report(ex); }
+ // ...
+
+ var lines = ex.message.split('\n');
+ if (lines.length < 4) {
+ return null;
+ }
+
+ var lineRE1 = /^\s*Line (\d+) of linked script ((?:file|https?)\S+)(?:: in function (\S+))?\s*$/i,
+ lineRE2 = /^\s*Line (\d+) of inline#(\d+) script in ((?:file|https?)\S+)(?:: in function (\S+))?\s*$/i,
+ lineRE3 = /^\s*Line (\d+) of function script\s*$/i,
+ stack = [],
+ scripts = document.getElementsByTagName('script'),
+ inlineScriptBlocks = [],
+ parts,
+ i,
+ len,
+ source;
+
+ for (i in scripts) {
+ if (hasKey(scripts, i) && !scripts[i].src) {
+ inlineScriptBlocks.push(scripts[i]);
+ }
+ }
+
+ for (i = 2, len = lines.length; i < len; i += 2) {
+ var item = null;
+ if ((parts = lineRE1.exec(lines[i]))) {
+ item = {
+ 'url': parts[2],
+ 'func': parts[3],
+ 'line': +parts[1]
+ };
+ } else if ((parts = lineRE2.exec(lines[i]))) {
+ item = {
+ 'url': parts[3],
+ 'func': parts[4]
+ };
+ var relativeLine = (+parts[1]); // relative to the start of the <SCRIPT> block
+ var script = inlineScriptBlocks[parts[2] - 1];
+ if (script) {
+ source = getSource(item.url);
+ if (source) {
+ source = source.join('\n');
+ var pos = source.indexOf(script.innerText);
+ if (pos >= 0) {
+ item.line = relativeLine + source.substring(0, pos).split('\n').length;
+ }
+ }
+ }
+ } else if ((parts = lineRE3.exec(lines[i]))) {
+ var url = window.location.href.replace(/#.*$/, ''),
+ line = parts[1];
+ var re = new RegExp(escapeCodeAsRegExpForMatchingInsideHTML(lines[i + 1]));
+ source = findSourceInUrls(re, [url]);
+ item = {
+ 'url': url,
+ 'line': source ? source.line : line,
+ 'func': ''
+ };
+ }
+
+ if (item) {
+ if (!item.func) {
+ item.func = guessFunctionName(item.url, item.line);
+ }
+ var context = gatherContext(item.url, item.line);
+ var midline = (context ? context[Math.floor(context.length / 2)] : null);
+ if (context && midline.replace(/^\s*/, '') === lines[i + 1].replace(/^\s*/, '')) {
+ item.context = context;
+ } else {
+ // if (context) alert("Context mismatch. Correct midline:\n" + lines[i+1] + "\n\nMidline:\n" + midline + "\n\nContext:\n" + context.join("\n") + "\n\nURL:\n" + item.url);
+ item.context = [lines[i + 1]];
+ }
+ stack.push(item);
+ }
+ }
+ if (!stack.length) {
+ return null; // could not parse multiline exception message as Opera stack trace
+ }
+
+ return {
+ 'name': ex.name,
+ 'message': lines[0],
+ 'url': document.location.href,
+ 'stack': stack
+ };
+ }
+
+ /**
+ * Adds information about the first frame to incomplete stack traces.
+ * Safari and IE require this to get complete data on the first frame.
+ * @param {Object.<string, *>} stackInfo Stack trace information from
+ * one of the compute* methods.
+ * @param {string} url The URL of the script that caused an error.
+ * @param {(number|string)} lineNo The line number of the script that
+ * caused an error.
+ * @param {string=} message The error generated by the browser, which
+ * hopefully contains the name of the object that caused the error.
+ * @return {boolean} Whether or not the stack information was
+ * augmented.
+ */
+ function augmentStackTraceWithInitialElement(stackInfo, url, lineNo, message) {
+ var initial = {
+ 'url': url,
+ 'line': lineNo
+ };
+
+ if (initial.url && initial.line) {
+ stackInfo.incomplete = false;
+
+ if (!initial.func) {
+ initial.func = guessFunctionName(initial.url, initial.line);
+ }
+
+ if (!initial.context) {
+ initial.context = gatherContext(initial.url, initial.line);
+ }
+
+ var reference = / '([^']+)' /.exec(message);
+ if (reference) {
+ initial.column = findSourceInLine(reference[1], initial.url, initial.line);
+ }
+
+ if (stackInfo.stack.length > 0) {
+ if (stackInfo.stack[0].url === initial.url) {
+ if (stackInfo.stack[0].line === initial.line) {
+ return false; // already in stack trace
+ } else if (!stackInfo.stack[0].line && stackInfo.stack[0].func === initial.func) {
+ stackInfo.stack[0].line = initial.line;
+ stackInfo.stack[0].context = initial.context;
+ return false;
+ }
+ }
+ }
+
+ stackInfo.stack.unshift(initial);
+ stackInfo.partial = true;
+ return true;
+ } else {
+ stackInfo.incomplete = true;
+ }
+
+ return false;
+ }
+
+ /**
+ * Computes stack trace information by walking the arguments.caller
+ * chain at the time the exception occurred. This will cause earlier
+ * frames to be missed but is the only way to get any stack trace in
+ * Safari and IE. The top frame is restored by
+ * {@link augmentStackTraceWithInitialElement}.
+ * @param {Error} ex
+ * @return {?Object.<string, *>} Stack trace information.
+ */
+ function computeStackTraceByWalkingCallerChain(ex, depth) {
+ var functionName = /function\s+([_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*)?\s*\(/i,
+ stack = [],
+ funcs = {},
+ recursion = false,
+ parts,
+ item,
+ source;
+
+ for (var curr = computeStackTraceByWalkingCallerChain.caller; curr && !recursion; curr = curr.caller) {
+ if (curr === computeStackTrace || curr === TraceKit.report) {
+ // console.log('skipping internal function');
+ continue;
+ }
+
+ item = {
+ 'url': null,
+ 'func': UNKNOWN_FUNCTION,
+ 'line': null,
+ 'column': null
+ };
+
+ if (curr.name) {
+ item.func = curr.name;
+ } else if ((parts = functionName.exec(curr.toString()))) {
+ item.func = parts[1];
+ }
+
+ if ((source = findSourceByFunctionBody(curr))) {
+ item.url = source.url;
+ item.line = source.line;
+
+ if (item.func === UNKNOWN_FUNCTION) {
+ item.func = guessFunctionName(item.url, item.line);
+ }
+
+ var reference = / '([^']+)' /.exec(ex.message || ex.description);
+ if (reference) {
+ item.column = findSourceInLine(reference[1], source.url, source.line);
+ }
+ }
+
+ if (funcs['' + curr]) {
+ recursion = true;
+ }else{
+ funcs['' + curr] = true;
+ }
+
+ stack.push(item);
+ }
+
+ if (depth) {
+ // console.log('depth is ' + depth);
+ // console.log('stack is ' + stack.length);
+ stack.splice(0, depth);
+ }
+
+ var result = {
+ 'name': ex.name,
+ 'message': ex.message,
+ 'url': document.location.href,
+ 'stack': stack
+ };
+ augmentStackTraceWithInitialElement(result, ex.sourceURL || ex.fileName, ex.line || ex.lineNumber, ex.message || ex.description);
+ return result;
+ }
+
+ /**
+ * Computes a stack trace for an exception.
+ * @param {Error} ex
+ * @param {(string|number)=} depth
+ */
+ function computeStackTrace(ex, depth) {
+ var stack = null;
+ depth = (depth == null ? 0 : +depth);
+
+ try {
+ // This must be tried first because Opera 10 *destroys*
+ // its stacktrace property if you try to access the stack
+ // property first!!
+ stack = computeStackTraceFromStacktraceProp(ex);
+ if (stack) {
+ return stack;
+ }
+ } catch (e) {
+ if (debug) {
+ throw e;
+ }
+ }
+
+ try {
+ stack = computeStackTraceFromStackProp(ex);
+ if (stack) {
+ return stack;
+ }
+ } catch (e) {
+ if (debug) {
+ throw e;
+ }
+ }
+
+ try {
+ stack = computeStackTraceFromOperaMultiLineMessage(ex);
+ if (stack) {
+ return stack;
+ }
+ } catch (e) {
+ if (debug) {
+ throw e;
+ }
+ }
+
+ try {
+ stack = computeStackTraceByWalkingCallerChain(ex, depth + 1);
+ if (stack) {
+ return stack;
+ }
+ } catch (e) {
+ if (debug) {
+ throw e;
+ }
+ }
+
+ return {};
+ }
+
+ /**
+ * Logs a stacktrace starting from the previous call and working down.
+ * @param {(number|string)=} depth How many frames deep to trace.
+ * @return {Object.<string, *>} Stack trace information.
+ */
+ function computeStackTraceOfCaller(depth) {
+ depth = (depth == null ? 0 : +depth) + 1; // "+ 1" because "ofCaller" should drop one frame
+ try {
+ throw new Error();
+ } catch (ex) {
+ return computeStackTrace(ex, depth + 1);
+ }
+ }
+
+ computeStackTrace.augmentStackTraceWithInitialElement = augmentStackTraceWithInitialElement;
+ computeStackTrace.guessFunctionName = guessFunctionName;
+ computeStackTrace.gatherContext = gatherContext;
+ computeStackTrace.ofCaller = computeStackTraceOfCaller;
+
+ return computeStackTrace;
+}());
'use strict';
@@ -13,7 +1091,9 @@
// If there is no JSON, we no-op the core features of Raven
// since JSON is required to encode the payload
var _Raven = window.Raven,
- hasJSON = !isUndefined(window.JSON),
+ hasJSON = !!(window.JSON && window.JSON.stringify),
+ lastCapturedException,
+ lastEventId,
globalServer,
globalUser,
globalKey,
@@ -21,24 +1101,31 @@
globalOptions = {
logger: 'javascript',
ignoreErrors: [],
- ignoreUrls: []
- };
-
-var TK = TraceKit.noConflict();
-
-// Disable Tracekit's remote fetching by default
-TK.remoteFetching = false;
+ ignoreUrls: [],
+ whitelistUrls: [],
+ includePaths: [],
+ collectWindowErrors: true,
+ tags: {},
+ extra: {}
+ },
+ authQueryString,
+ isRavenInstalled = false;
/*
- * The core Raven object
+ * The core Raven singleton
+ *
+ * @this {Raven}
*/
var Raven = {
- VERSION: '@VERSION',
+ VERSION: '1.1.16',
+
+ debug: true,
/*
- * Raven.noConflict()
+ * Allow multiple versions of Raven to be installed.
+ * Strip Raven from the global context and returns the instance.
*
- * Allow multiple versions of Raven to be installed.
+ * @return {Raven}
*/
noConflict: function() {
window.Raven = _Raven;
@@ -46,12 +1133,20 @@
},
/*
- * Raven.config()
+ * Configure Raven with a DSN and extra options
*
- * Configure raven with a DSN and extra options
+ * @param {string} dsn The public Sentry DSN
+ * @param {object} options Optional set of of global options [optional]
+ * @return {Raven}
*/
config: function(dsn, options) {
- var uri = parseUri(dsn),
+ if (globalServer) {
+ logDebug('error', 'Error: Raven has already been configured');
+ return Raven;
+ }
+ if (!dsn) return Raven;
+
+ var uri = parseDSN(dsn),
lastSlash = uri.path.lastIndexOf('/'),
path = uri.path.substr(1, lastSlash);
@@ -65,97 +1160,177 @@
// "Script error." is hard coded into browsers for errors that it can't read.
// this is the result of a script being pulled in from an external domain and CORS.
globalOptions.ignoreErrors.push('Script error.');
+ globalOptions.ignoreErrors.push('Script error');
+
+ // Other variants of external script errors:
+ globalOptions.ignoreErrors.push('Javascript error: Script error on line 0');
+ globalOptions.ignoreErrors.push('Javascript error: Script error. on line 0');
+
+ // join regexp rules into one big rule
+ globalOptions.ignoreErrors = joinRegExp(globalOptions.ignoreErrors);
+ globalOptions.ignoreUrls = globalOptions.ignoreUrls.length ? joinRegExp(globalOptions.ignoreUrls) : false;
+ globalOptions.whitelistUrls = globalOptions.whitelistUrls.length ? joinRegExp(globalOptions.whitelistUrls) : false;
+ globalOptions.includePaths = joinRegExp(globalOptions.includePaths);
globalKey = uri.user;
- globalProject = ~~uri.path.substr(lastSlash + 1);
+ globalProject = uri.path.substr(lastSlash + 1);
// assemble the endpoint from the uri pieces
- globalServer = uri.protocol + '://' + uri.host +
+ globalServer = '//' + uri.host +
(uri.port ? ':' + uri.port : '') +
'/' + path + 'api/' + globalProject + '/store/';
+ if (uri.protocol) {
+ globalServer = uri.protocol + ':' + globalServer;
+ }
+
if (globalOptions.fetchContext) {
- TK.remoteFetching = true;
+ TraceKit.remoteFetching = true;
}
+ if (globalOptions.linesOfContext) {
+ TraceKit.linesOfContext = globalOptions.linesOfContext;
+ }
+
+ TraceKit.collectWindowErrors = !!globalOptions.collectWindowErrors;
+
+ setAuthQueryString();
+
// return for chaining
return Raven;
},
/*
- * Raven.install()
- *
* Installs a global window.onerror error handler
* to capture and report uncaught exceptions.
+ * At this point, install() is required to be called due
+ * to the way TraceKit is set up.
+ *
+ * @return {Raven}
*/
install: function() {
- if (!isSetup()) return;
-
- TK.report.subscribe(handleStackInfo);
+ if (isSetup() && !isRavenInstalled) {
+ TraceKit.report.subscribe(handleStackInfo);
+ isRavenInstalled = true;
+ }
return Raven;
},
/*
- * Raven.context()
- *
* Wrap code within a context so Raven can capture errors
* reliably across domains that is executed immediately.
+ *
+ * @param {object} options A specific set of options for this context [optional]
+ * @param {function} func The callback to be immediately executed within the context
+ * @param {array} args An array of arguments to be called with the callback [optional]
*/
context: function(options, func, args) {
if (isFunction(options)) {
- args = func;
+ args = func || [];
func = options;
options = undefined;
}
- Raven.wrap(options, func).apply(this, args);
+ return Raven.wrap(options, func).apply(this, args);
},
- /* Raven.wrap()
+ /*
+ * Wrap code within a context and returns back a new function to be executed
*
- * Wrap code within a context and returns back a new function to be executed
+ * @param {object} options A specific set of options for this context [optional]
+ * @param {function} func The function to be wrapped in a new context
+ * @return {function} The newly wrapped functions with a context
*/
wrap: function(options, func) {
+ // 1 argument has been passed, and it's not a function
+ // so just return it
+ if (isUndefined(func) && !isFunction(options)) {
+ return options;
+ }
+
// options is optional
if (isFunction(options)) {
func = options;
options = undefined;
}
- return function() {
+ // At this point, we've passed along 2 arguments, and the second one
+ // is not a function either, so we'll just return the second argument.
+ if (!isFunction(func)) {
+ return func;
+ }
+
+ // We don't wanna wrap it twice!
+ if (func.__raven__) {
+ return func;
+ }
+
+ function wrapped() {
+ var args = [], i = arguments.length,
+ deep = !options || options && options.deep !== false;
+ // Recursively wrap all of a function's arguments that are
+ // functions themselves.
+
+ while(i--) args[i] = deep ? Raven.wrap(options, arguments[i]) : arguments[i];
+
try {
- func.apply(this, arguments);
+ /*jshint -W040*/
+ return func.apply(this, args);
} catch(e) {
Raven.captureException(e, options);
+ throw e;
}
- };
+ }
+
+ // copy over properties of the old function
+ for (var property in func) {
+ if (hasKey(func, property)) {
+ wrapped[property] = func[property];
+ }
+ }
+
+ // Signal that this function has been wrapped already
+ // for both debugging and to prevent it to being wrapped twice
+ wrapped.__raven__ = true;
+ wrapped.__inner__ = func;
+
+ return wrapped;
},
/*
- * Raven.uninstall()
+ * Uninstalls the global error handler.
*
- * Uninstalls the global error handler.
+ * @return {Raven}
*/
uninstall: function() {
- TK.report.unsubscribe(handleStackInfo);
+ TraceKit.report.uninstall();
+ isRavenInstalled = false;
return Raven;
},
/*
- * Raven.captureException()
+ * Manually capture an exception and send it over to Sentry
*
- * Manually capture an exception and send it over to Sentry
+ * @param {error} ex An exception to be logged
+ * @param {object} options A specific set of options for this error [optional]
+ * @return {Raven}
*/
captureException: function(ex, options) {
+ // If not an Error is passed through, recall as a message instead
+ if (!(ex instanceof Error)) return Raven.captureMessage(ex, options);
+
+ // Store the raw exception object for potential debugging and introspection
+ lastCapturedException = ex;
+
// TraceKit.report will re-raise any exception passed to it,
// which means you have to wrap it in try/catch. Instead, we
// can wrap it here and only re-raise if TraceKit.report
// raises an exception different from the one we asked to
// report on.
try {
- TK.report(ex, options);
+ TraceKit.report(ex, options);
} catch(ex1) {
if(ex !== ex1) {
throw ex1;
@@ -166,15 +1341,17 @@
},
/*
- * Raven.captureMessage()
+ * Manually send a message to Sentry
*
- * Manually send a message to Sentry
+ * @param {string} msg A plain message to be captured in Sentry
+ * @param {object} options A specific set of options for this message [optional]
+ * @return {Raven}
*/
captureMessage: function(msg, options) {
// Fire away!
send(
- arrayMerge({
- message: msg
+ objectMerge({
+ message: msg + '' // Make sure it's actually a string
}, options)
);
@@ -182,29 +1359,119 @@
},
/*
- * Raven.setUser()
+ * Set/clear a user to be sent along with the payload.
*
- * Set/clear a user to be sent along with the payload.
+ * @param {object} user An object representing user data [optional]
+ * @return {Raven}
*/
- setUser: function(user) {
+ setUserContext: function(user) {
globalUser = user;
return Raven;
+ },
+
+ /*
+ * Set extra attributes to be sent along with the payload.
+ *
+ * @param {object} extra An object representing extra data [optional]
+ * @return {Raven}
+ */
+ setExtraContext: function(extra) {
+ globalOptions.extra = extra || {};
+
+ return Raven;
+ },
+
+ /*
+ * Set tags to be sent along with the payload.
+ *
+ * @param {object} tags An object representing tags [optional]
+ * @return {Raven}
+ */
+ setTagsContext: function(tags) {
+ globalOptions.tags = tags || {};
+
+ return Raven;
+ },
+
+ /*
+ * Get the latest raw exception that was captured by Raven.
+ *
+ * @return {error}
+ */
+ lastException: function() {
+ return lastCapturedException;
+ },
+
+ /*
+ * Get the last event id
+ *
+ * @return {string}
+ */
+ lastEventId: function() {
+ return lastEventId;
}
};
-var uriKeys = 'source protocol authority userInfo user password host port relative path directory file query anchor'.split(' '),
- uriPattern = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/;
+Raven.setUser = Raven.setUserContext; // To be deprecated
+
+function triggerEvent(eventType, options) {
+ var event, key;
+
+ options = options || {};
+
+ eventType = 'raven' + eventType.substr(0,1).toUpperCase() + eventType.substr(1);
+
+ if (document.createEvent) {
+ event = document.createEvent('HTMLEvents');
+ event.initEvent(eventType, true, true);
+ } else {
+ event = document.createEventObject();
+ event.eventType = eventType;
+ }
+
+ for (key in options) if (hasKey(options, key)) {
+ event[key] = options[key];
+ }
+
+ if (document.createEvent) {
+ // IE9 if standards
+ document.dispatchEvent(event);
+ } else {
+ // IE8 regardless of Quirks or Standards
+ // IE9 if quirks
+ try {
+ document.fireEvent('on' + event.eventType.toLowerCase(), event);
+ } catch(e) {}
+ }
+}
+
+var dsnKeys = 'source protocol user pass host port path'.split(' '),
+ dsnPattern = /^(?:(\w+):)?\/\/(\w+)(:\w+)?@([\w\.-]+)(?::(\d+))?(\/.*)/;
+
+function RavenConfigError(message) {
+ this.name = 'RavenConfigError';
+ this.message = message;
+}
+RavenConfigError.prototype = new Error();
+RavenConfigError.prototype.constructor = RavenConfigError;
/**** Private functions ****/
-function parseUri(str) {
- var m = uriPattern.exec(str),
- uri = {},
- i = 14;
+function parseDSN(str) {
+ var m = dsnPattern.exec(str),
+ dsn = {},
+ i = 7;
- while (i--) uri[uriKeys[i]] = m[i] || '';
+ try {
+ while (i--) dsn[dsnKeys[i]] = m[i] || '';
+ } catch(e) {
+ throw new RavenConfigError('Invalid DSN: ' + str);
+ }
- return uri;
+ if (dsn.pass)
+ throw new RavenConfigError('Do not specify your private key in the DSN!');
+
+ return dsn;
}
function isUndefined(what) {
@@ -215,48 +1482,70 @@
return typeof what === 'function';
}
+function isString(what) {
+ return typeof what === 'string';
+}
+
+function isEmptyObject(what) {
+ for (var k in what) return false;
+ return true;
+}
+
+/**
+ * hasKey, a better form of hasOwnProperty
+ * Example: hasKey(MainHostObject, property) === true/false
+ *
+ * @param {Object} host object to check property
+ * @param {string} key to check
+ */
+function hasKey(object, key) {
+ return Object.prototype.hasOwnProperty.call(object, key);
+}
+
function each(obj, callback) {
var i, j;
- if (obj.length === undefined) {
+ if (isUndefined(obj.length)) {
for (i in obj) {
- if (obj.hasOwnProperty(i)) {
+ if (hasKey(obj, i)) {
callback.call(null, i, obj[i]);
}
}
} else {
- for (i = 0, j = obj.length; i < j; i++) {
- callback.call(null, i, obj[i]);
+ j = obj.length;
+ if (j) {
+ for (i = 0; i < j; i++) {
+ callback.call(null, i, obj[i]);
+ }
}
}
}
-var cachedAuth;
-function getAuthQueryString() {
- if (cachedAuth) return cachedAuth;
+function setAuthQueryString() {
+ authQueryString =
+ '?sentry_version=4' +
+ '&sentry_client=raven-js/' + Raven.VERSION +
+ '&sentry_key=' + globalKey;
+}
- var qs = [
- 'sentry_version=2.0',
- 'sentry_client=raven-js/' + Raven.VERSION
- ];
- if (globalKey) {
- qs.push('sentry_key=' + globalKey);
+
+function handleStackInfo(stackInfo, options) {
+ var frames = [];
+
+ if (stackInfo.stack && stackInfo.stack.length) {
+ each(stackInfo.stack, function(i, stack) {
+ var frame = normalizeFrame(stack);
+ if (frame) {
+ frames.push(frame);
+ }
+ });
}
- cachedAuth = '?' + qs.join('&');
- return cachedAuth;
-}
-
-function handleStackInfo(stackInfo, options) {
- var frames = [], i = 0, j = stackInfo.stack && stackInfo.stack.length || 0, frame;
-
- for (; i < j; i++) {
- frame = normalizeFrame(stackInfo.stack[i]);
- if (frame) {
- frames.push(frame);
- }
- }
+ triggerEvent('handle', {
+ stackInfo: stackInfo,
+ options: options
+ });
processException(
stackInfo.name,
@@ -277,14 +1566,22 @@
lineno: frame.line,
colno: frame.column,
'function': frame.func || '?'
- }, context = extractContextFromFrame(frame);
+ }, context = extractContextFromFrame(frame), i;
if (context) {
- var i = 3, keys = ['pre_context', 'context_line', 'post_context'];
+ var keys = ['pre_context', 'context_line', 'post_context'];
+ i = 3;
while (i--) normalized[keys[i]] = context[i];
}
- normalized.in_app = !/(Raven|TraceKit)\./.test(normalized['function']);
+ normalized.in_app = !( // determine if an exception came from outside of our app
+ // first we check the global includePaths list.
+ !globalOptions.includePaths.test(normalized.filename) ||
+ // Now we check for fun, if the function name is Raven or TraceKit
+ /(Raven|TraceKit)\./.test(normalized['function']) ||
+ // finally, we do a last ditch effort and check for raven.min.js
+ /raven\.(min\.)?js$/.test(normalized.filename)
+ );
return normalized;
}
@@ -331,70 +1628,83 @@
function processException(type, message, fileurl, lineno, frames, options) {
var stacktrace, label, i;
- // IE8 really doesn't have Array.prototype.indexOf
- // Filter out a message that matches our ignore list
- i = globalOptions.ignoreErrors.length;
- while (i--) {
- if (message === globalOptions.ignoreErrors[i]) {
- return;
- }
- }
+ // In some instances message is not actually a string, no idea why,
+ // so we want to always coerce it to one.
+ message += '';
+
+ // Sometimes an exception is getting logged in Sentry as
+ // <no message value>
+ // This can only mean that the message was falsey since this value
+ // is hardcoded into Sentry itself.
+ // At this point, if the message is falsey, we bail since it's useless
+ if (type === 'Error' && !message) return;
+
+ if (globalOptions.ignoreErrors.test(message)) return;
if (frames && frames.length) {
+ fileurl = frames[0].filename || fileurl;
+ // Sentry expects frames oldest to newest
+ // and JS sends them as newest to oldest
+ frames.reverse();
stacktrace = {frames: frames};
- fileurl = fileurl || frames[0].filename;
} else if (fileurl) {
stacktrace = {
frames: [{
filename: fileurl,
- lineno: lineno
+ lineno: lineno,
+ in_app: true
}]
};
}
- i = globalOptions.ignoreUrls.length;
- while (i--) {
- if (globalOptions.ignoreUrls[i].test(fileurl)) {
- return;
- }
- }
+ // Truncate the message to a max of characters
+ message = truncate(message, 100);
+
+ if (globalOptions.ignoreUrls && globalOptions.ignoreUrls.test(fileurl)) return;
+ if (globalOptions.whitelistUrls && !globalOptions.whitelistUrls.test(fileurl)) return;
label = lineno ? message + ' at ' + lineno : message;
// Fire away!
send(
- arrayMerge({
- 'sentry.interfaces.Exception': {
+ objectMerge({
+ // sentry.interfaces.Exception
+ exception: {
type: type,
value: message
},
- 'sentry.interfaces.Stacktrace': stacktrace,
+ // sentry.interfaces.Stacktrace
+ stacktrace: stacktrace,
culprit: fileurl,
message: label
}, options)
);
}
-function arrayMerge(arr1, arr2) {
- if (!arr2) {
- return arr1;
+function objectMerge(obj1, obj2) {
+ if (!obj2) {
+ return obj1;
}
- each(arr2, function(key, value){
- arr1[key] = value;
+ each(obj2, function(key, value){
+ obj1[key] = value;
});
- return arr1;
+ return obj1;
+}
+
+function truncate(str, max) {
+ return str.length <= max ? str : str.substr(0, max) + '\u2026';
}
function getHttpData() {
var http = {
- url: window.location.href,
+ url: document.location.href,
headers: {
'User-Agent': navigator.userAgent
}
};
- if (window.document.referrer) {
- http.headers.Referer = window.document.referrer;
+ if (document.referrer) {
+ http.headers.Referer = document.referrer;
}
return http;
@@ -403,36 +1713,126 @@
function send(data) {
if (!isSetup()) return;
- data = arrayMerge({
+ data = objectMerge({
project: globalProject,
logger: globalOptions.logger,
site: globalOptions.site,
platform: 'javascript',
- 'sentry.interfaces.Http': getHttpData()
- }, data );
+ // sentry.interfaces.Http
+ request: getHttpData()
+ }, data);
- if (globalUser) data['sentry.interfaces.User'] = globalUser;
+ // Merge in the tags and extra separately since objectMerge doesn't handle a deep merge
+ data.tags = objectMerge(globalOptions.tags, data.tags);
+ data.extra = objectMerge(globalOptions.extra, data.extra);
+
+ // If there are no tags/extra, strip the key from the payload alltogther.
+ if (isEmptyObject(data.tags)) delete data.tags;
+ if (isEmptyObject(data.extra)) delete data.extra;
+
+ if (globalUser) {
+ // sentry.interfaces.User
+ data.user = globalUser;
+ }
if (isFunction(globalOptions.dataCallback)) {
data = globalOptions.dataCallback(data);
}
+ // Check if the request should be filtered or not
+ if (isFunction(globalOptions.shouldSendCallback) && !globalOptions.shouldSendCallback(data)) {
+ return;
+ }
+
+ // Send along an event_id if not explicitly passed.
+ // This event_id can be used to reference the error within Sentry itself.
+ // Set lastEventId after we know the error should actually be sent
+ lastEventId = data.event_id || (data.event_id = uuid4());
+
makeRequest(data);
}
+
function makeRequest(data) {
- new Image().src = globalServer + getAuthQueryString() + '&sentry_data=' + encodeURIComponent(JSON.stringify(data));
+ var img = new Image(),
+ src = globalServer + authQueryString + '&sentry_data=' + encodeURIComponent(JSON.stringify(data));
+
+ img.onload = function success() {
+ triggerEvent('success', {
+ data: data,
+ src: src
+ });
+ };
+ img.onerror = img.onabort = function failure() {
+ triggerEvent('failure', {
+ data: data,
+ src: src
+ });
+ };
+ img.src = src;
}
function isSetup() {
if (!hasJSON) return false; // needs JSON support
if (!globalServer) {
- console.error("Error: Raven has not been configured.");
+ logDebug('error', 'Error: Raven has not been configured.');
return false;
}
return true;
}
+function joinRegExp(patterns) {
+ // Combine an array of regular expressions and strings into one large regexp
+ // Be mad.
+ var sources = [],
+ i = 0, len = patterns.length,
+ pattern;
+
+ for (; i < len; i++) {
+ pattern = patterns[i];
+ if (isString(pattern)) {
+ // If it's a string, we need to escape it
+ // Taken from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expre…
+ sources.push(pattern.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"));
+ } else if (pattern && pattern.source) {
+ // If it's a regexp already, we want to extract the source
+ sources.push(pattern.source);
+ }
+ // Intentionally skip other cases
+ }
+ return new RegExp(sources.join('|'), 'i');
+}
+
+// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-java…
+function uuid4() {
+ return 'xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
+ var r = Math.random()*16|0,
+ v = c == 'x' ? r : (r&0x3|0x8);
+ return v.toString(16);
+ });
+}
+
+function logDebug(level, message) {
+ if (window.console && console[level] && Raven.debug) {
+ console[level](message);
+ }
+}
+
+function afterLoad() {
+ // Attempt to initialize Raven on load
+ var RavenConfig = window.RavenConfig;
+ if (RavenConfig) {
+ Raven.config(RavenConfig.dsn, RavenConfig.config).install();
+ }
+}
+afterLoad();
+
+// Expose Raven to the world
window.Raven = Raven;
-})();
+// AMD
+if (typeof define === 'function' && define.amd) {
+ define('raven', [], function() { return Raven; });
+}
+
+})(this);
This diff is so big that we needed to truncate the remainder.
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: Fix workflow step tracking migration downgrade -- previously blew up because there are no TABLES
by commits-noreply@bitbucket.org 21 Jan '15
by commits-noreply@bitbucket.org 21 Jan '15
21 Jan '15
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/f6e5390c8300/
Changeset: f6e5390c8300
User: dannon
Date: 2015-01-21 23:22:58+00:00
Summary: Fix workflow step tracking migration downgrade -- previously blew up because there are no TABLES
Affected #: 1 file
diff -r 21e33d438d07b3a91013f7803772ca0f19baadfc -r f6e5390c830084b629ec1a5efb95fe29fff03ceb lib/galaxy/model/migrate/versions/0125_workflow_step_tracking.py
--- a/lib/galaxy/model/migrate/versions/0125_workflow_step_tracking.py
+++ b/lib/galaxy/model/migrate/versions/0125_workflow_step_tracking.py
@@ -31,9 +31,6 @@
metadata.bind = migrate_engine
metadata.reflect()
- for table in TABLES:
- __drop(table)
-
__drop_column( "label", "workflow_step", metadata )
__drop_column( "uuid", "workflow_step", metadata )
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
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/21e33d438d07/
Changeset: 21e33d438d07
User: dannon
Date: 2015-01-21 21:38:00+00:00
Summary: Merge.
Affected #: 1 file
diff -r 0fb3b7dc30d6f837e0b81627712016935381aac7 -r 21e33d438d07b3a91013f7803772ca0f19baadfc .hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -22,4 +22,4 @@
2092948937ac30ef82f71463a235c66d34987088 release_2014.10.06
9bd6f8b5b8153db752f4e61ed62f2b6c01ae4a11 latest_2014.10.06
2e8dd2949dd3eee0f56f9a3a5ebf1b2baca24aee release_2015.01.13
-507edf82ad1d888faab25e9ba66d29f6eab538f4 latest_2015.01.13
+4039bfd5584aac053f686197a76ac176253e6f3d latest_2015.01.13
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
MzcgbmV3IGNvbW1pdHMgaW4gZ2FsYXh5LWNlbnRyYWw6CgpodHRwczovL2JpdGJ1Y2tldC5vcmcv
Z2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvNzQwZDc1OGMyMjg1LwpDaGFuZ2VzZXQ6ICAg
NzQwZDc1OGMyMjg1ClVzZXI6ICAgICAgICBjYXJsZmViZXJoYXJkCkRhdGU6ICAgICAgICAyMDE0
LTEyLTE3IDIwOjI2OjQzKzAwOjAwClN1bW1hcnk6ICAgICBJbml0aWFsIGNvbW1pdCBmb3IgY2hh
bmdlcyB0byBtYW5hZ2VyczogaW1wbGVtZW50IGJhc2UgTW9kZWxNYT0KbmFnZXIsIFNlcmlhbGl6
ZXIsIGFuZCBEZXNlcmlhbGl6ZXI7IGluY29ycG9yYXRlIGludG8gaGRhcyBhbmQgaGlzdG9yaWVz
IG1hPQpuYWdlcnM7IGltcGxlbWVudCB1c2VycywgZGF0YXNldHMgbmFiYWdlcnM7IHJlLXdvcmsg
aGlzdG9yaWVzIGFwaSB0byB1c2UgdGg9CmUgbWFuYWdlcnMgYmV0dGVyOyB1bml0IHRlc3RzIGZv
ciBtYW5hZ2Vyczsgc2VhcmNoIGFuZCBkZXN0cm95IG9uIFVzZXNIaXN0bz0KcnlNaXhpbjsgbWlu
b3IgZml4ZXMgdG8gbGlzdC1wYW5lbApBZmZlY3RlZCAjOiAgMjkgZmlsZXMKCmRpZmYgLXIgY2M3
MTQ3NTE0ZDc3Nzk5OTg5Nzc3ZmQyMWFhODE4ZTQzZDlmM2QzOSAtciA3NDBkNzU4YzIyODViZWMx
NDBlNjkwMT0KMDI1ZTkwNmY1MGEwZDdhMmEgY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9saXN0
L2xpc3QtcGFuZWwuanMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9saXN0L2xpc3Qt
cGFuZWwuanMKKysrIGIvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9saXN0L2xpc3QtcGFuZWwu
anMKQEAgLTg3MiwxMCArODcyLDEwIEBACiAgICAgICAgIHRoaXMubG9nKCB0aGlzICsgJy5fc2V0
VXBNb2RlbExpc3RlbmVycycsIHRoaXMubW9kZWwgKTsKICAgICAgICAgLy8gYm91bmNlIG1vZGVs
IGVycm9ycyB1cCB0byB0aGUgcGFuZWwKICAgICAgICAgdGhpcy5tb2RlbC5vbiggJ2Vycm9yJywg
ZnVuY3Rpb24oKXsKLSAgICAgICAgICAgIC8vVE9ETzogbmFtZXNwYWNlPwotICAgICAgICAgICAg
Ly92YXIgYXJncyA9M0QgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoIGFyZ3VtZW50cywgMCAp
OwotICAgICAgICAgICAgLy9hcmdzWzBdID0zRCAnbW9kZWw6JyArIGFyZ3NbMF07Ci0gICAgICAg
ICAgICB0aGlzLnRyaWdnZXIuYXBwbHkoIHBhbmVsLCBhcmd1bWVudHMgKTsKKyAgICAgICAgICAg
IHZhciBhcmdzID0zRCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCggYXJndW1lbnRzLCAwICk7
CisgICAgICAgICAgICAvL2FyZ3MudW5zaGlmdCggJ21vZGVsOmVycm9yJyApOworICAgICAgICAg
ICAgYXJncy51bnNoaWZ0KCAnZXJyb3InICk7CisgICAgICAgICAgICB0aGlzLnRyaWdnZXIuYXBw
bHkoIHRoaXMsIGFyZ3MgKTsKICAgICAgICAgfSwgdGhpcyApOwogICAgICAgICByZXR1cm4gdGhp
czsKICAgICB9LAoKZGlmZiAtciBjYzcxNDc1MTRkNzc3OTk5ODk3NzdmZDIxYWE4MThlNDNkOWYz
ZDM5IC1yIDc0MGQ3NThjMjI4NWJlYzE0MGU2OTAxPQowMjVlOTA2ZjUwYTBkN2EyYSBsaWIvZ2Fs
YXh5L21hbmFnZXJzL2Jhc2UucHkKLS0tIGEvbGliL2dhbGF4eS9tYW5hZ2Vycy9iYXNlLnB5Cisr
KyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvYmFzZS5weQpAQCAtMSwyMSArMSwyMCBAQAotZnJvbSBn
YWxheHkgaW1wb3J0IGV4Y2VwdGlvbnMKK2ltcG9ydCByZQorCitpbXBvcnQgcGtnX3Jlc291cmNl
cworcGtnX3Jlc291cmNlcy5yZXF1aXJlKCAiU1FMQWxjaGVteSA+PTNEIDAuNCIgKQoraW1wb3J0
IHNxbGFsY2hlbXkKPTIwCiBmcm9tIGdhbGF4eSBpbXBvcnQgbW9kZWwKK2Zyb20gZ2FsYXh5IGlt
cG9ydCBleGNlcHRpb25zCiBmcm9tIGdhbGF4eS5tb2RlbCBpbXBvcnQgdG9vbF9zaGVkX2luc3Rh
bGwKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHNhbml0aXplX2h0bWwKPTIwCj0yMAogaW1wb3J0
IGxvZ2dpbmcKIGxvZyA9M0QgbG9nZ2luZy5nZXRMb2dnZXIoIF9fbmFtZV9fICkKPTIwCj0yMAot
Y2xhc3MgTW9kZWxNYW5hZ2VyKCBvYmplY3QgKToKLSAgICBwYXNzCi0KLQotY2xhc3MgTW9kZWxT
ZXJpYWxpemVyKCBvYmplY3QgKToKLSAgICBwYXNzCi0KLQorIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKIGRlZiBzZWN1
cml0eV9jaGVjayggdHJhbnMsIGl0ZW0sIGNoZWNrX293bmVyc2hpcD0zREZhbHNlLCBjaGVja19h
Y2Nlc3NpYmxlPQo9M0RGYWxzZSApOgogICAgICIiIiBTZWN1cml0eSBjaGVja3MgZm9yIGFuIGl0
ZW06IGNoZWNrcyBpZiAoYSkgdXNlciBvd25zIGl0ZW0gb3IgKGIpIGk9CnRlbQogICAgIGlzIGFj
Y2Vzc2libGUgdG8gdXNlci4gVGhpcyBpcyBhIGdlbmVyaWMgbWV0aG9kIGZvciBkZWFsaW5nIHdp
dGggb2JqZWM9CnRzCkBAIC0xMTgsMyArMTE3LDU0MiBAQAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoIGNsYXNzX25hbWUsIGdldGF0dHIoIGk9CnRl
bSwgJ25hbWUnLCBpZCApICksIHR5cGU9M0Qid2FybmluZyIgKQogICAgIHJldHVybiBpdGVtCj0y
MAorCisjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9Cj0zRD0zRD0zRAorY2xhc3MgTW9kZWxNYW5hZ2VyKCBvYmplY3QgKToKKyAgICBtb2Rl
bF9jbGFzcyA9M0Qgb2JqZWN0CisgICAgZGVmYXVsdF9vcmRlcl9ieSA9M0QgTm9uZQorICAgIGZv
cmVpZ25fa2V5X25hbWUgPTNEIE5vbmUKKworICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6
CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKCBzZWxmLm1vZGVsX2NsYXNzLCBvYmplY3QgKSwg
KAorICAgICAgICAgICAgIm1vZGVsIGNsYXNzIG11c3QgYmUgc2V0IGZvciAlcyIgJSggc2VsZi5f
X2NsYXNzX18uX19uYW1lX18gKSApCisgICAgICAgIHNlbGYubW9kZWxfY2xhc3NfbmFtZSA9M0Qg
c2VsZi5tb2RlbF9jbGFzcy5fX2NsYXNzX18uX19uYW1lX18KKyAgICAgICAgYXNzZXJ0IGlzaW5z
dGFuY2UoIHNlbGYuZGVmYXVsdF9vcmRlcl9ieSwgdHVwbGUgKSwgKAorICAgICAgICAgICAgImRl
ZmF1bHRfb3JkZXJfYnkgZm9yICVzIG11c3QgYmUgYSB0dXBsZSIgJSggc2VsZi5fX2NsYXNzX18u
X189Cm5hbWVfXyApICkKKworICAgICAgICBzZWxmLmFwcCA9M0QgYXBwCisKKyAgICAjTk9URTog
YXQgdGhpcyBsYXllciwgYWxsIGlkcyBhcmUgZXhwZWN0ZWQgdG8gYmUgZGVjb2RlZCBhbmQgaW4g
aW50IGZvPQpybQorICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0tIGdldC9yZWFkL3F1ZXJ5CisgICAg
ZGVmIHF1ZXJ5KCBzZWxmLCB0cmFucywgZWFnZXJsb2Fkcz0zRFRydWUsIGZpbHRlcnM9M0ROb25l
LCBvcmRlcl9ieT0zRD0KTm9uZSwgbGltaXQ9M0ROb25lLCBvZmZzZXQ9M0ROb25lLCAqKmt3YXJn
cyApOgorICAgICAgICAjcHJpbnQgJ3F1ZXJ5OicsIGVhZ2VybG9hZHMsIGZpbHRlcnMsIG9yZGVy
X2J5LCBsaW1pdCwgb2Zmc2V0LCBrd2E9CnJncworICAgICAgICBxdWVyeSA9M0QgdHJhbnMuc2Ff
c2Vzc2lvbi5xdWVyeSggc2VsZi5tb2RlbF9jbGFzcyApCisKKyAgICAgICAgIyBqb2luZWQgdGFi
bGUgbG9hZGluZworICAgICAgICBpZiBlYWdlcmxvYWRzIGlzIEZhbHNlOgorICAgICAgICAgICAg
cXVlcnkgPTNEIHF1ZXJ5LmVuYWJsZV9lYWdlcmxvYWRzKCBGYWxzZSApCisKKyNUT0RPOiBpZiBu
b24tb3JtIGZpbHRlcnMgYXJlIHRoZSBvbmx5IG9wdGlvbiwgaGVyZSBpcyB3aGVyZSB0aGV5J2Qg
Z28KKyAgICAgICAgcXVlcnkgPTNEIHNlbGYuX2FwcGx5X2ZpbHRlcnMoIHF1ZXJ5LCBmaWx0ZXJz
ICkKKyAgICAgICAgcXVlcnkgPTNEIHNlbGYuX2FwcGx5X29yZGVyX2J5X2xpbWl0X29mZnNldCgg
cXVlcnksIG9yZGVyX2J5LCBsaW1pPQp0LCBvZmZzZXQgKQorICAgICAgICByZXR1cm4gcXVlcnkK
KworICAgIGRlZiBfYXBwbHlfZmlsdGVycyggc2VsZiwgcXVlcnksIGZpbHRlcnMgKToKKyAgICAg
ICAgaWYgZmlsdGVycyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5CisKKyAgICAg
ICAgaWYgbm90IGlzaW5zdGFuY2UoIGZpbHRlcnMsIGxpc3QgKToKKyAgICAgICAgICAgIGZpbHRl
cnMgPTNEIFsgZmlsdGVycyBdCisgICAgICAgICNub3RlOiBpbXBsaWNpdCBBTkQKKyAgICAgICAg
Zm9yIGZpbHRlciBpbiBmaWx0ZXJzOgorICAgICAgICAgICAgcXVlcnkgPTNEIHF1ZXJ5LmZpbHRl
ciggZmlsdGVyICkKKyAgICAgICAgcmV0dXJuIHF1ZXJ5CisKKyAgICBkZWYgX211bmdlX2ZpbHRl
cnMoIHNlbGYsIGZpbHRlcnNBLCBmaWx0ZXJzQiApOgorICAgICAgICAjIC4uLiB3aGljaCBzb3Vu
ZHMgbGlrZSBhIGV1cGhhbWlzbSBmb3Igc29tZXRoaW5nCisgICAgICAgIGZpbmFsX2ZpbHRlcnMg
PTNEIFsgc2VsZi5tb2RlbF9jbGFzcy5pZCA9M0Q9M0QgaWQgXQorICAgICAgICBpZiBmaWx0ZXJz
QSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGZpbHRlcnNCCisgICAgICAgIGlmIGZpbHRl
cnNCIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gZmlsdGVyc0EKKyAgICAgICAgaWYgbm90
IGlzaW5zdGFuY2UoIGZpbHRlcnNBLCBsaXN0ICk6CisgICAgICAgICAgICBmaWx0ZXJzQSA9M0Qg
WyBmaWx0ZXJzQSBdCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKCBmaWx0ZXJzQiwgbGlzdCAp
OgorICAgICAgICAgICAgZmlsdGVyc0IgPTNEIFsgZmlsdGVyc0IgXQorICAgICAgICByZXR1cm4g
ZmlsdGVyc0EgKyBmaWx0ZXJzQgorCisgICAgZGVmIF9hcHBseV9vcmRlcl9ieV9saW1pdF9vZmZz
ZXQoIHNlbGYsIHF1ZXJ5LCBvcmRlcl9ieSwgbGltaXQsIG9mZnNldD0KICk6CisgICAgICAgIHF1
ZXJ5ID0zRCBzZWxmLl9hcHBseV9vcmRlcl9ieSggcXVlcnksIG9yZGVyX2J5ICkKKyAgICAgICAg
cmV0dXJuIHNlbGYuX2FwcGx5X2xpbWl0X29mZnNldCggcXVlcnksIGxpbWl0LCBvZmZzZXQgKQor
CisgICAgZGVmIF9hcHBseV9vcmRlcl9ieSggc2VsZiwgcXVlcnksIG9yZGVyX2J5ICk6CisgICAg
ICAgIGlmIG9yZGVyX2J5IGlzIE5vbmU6CisgICAgICAgICAgICAjVE9ETzogYWxsb3cgbm9uLXR1
cGxlIGRlZmF1bHRfb3JkZXJfYnkKKyAgICAgICAgICAgIHJldHVybiBxdWVyeS5vcmRlcl9ieSgg
KnNlbGYuZGVmYXVsdF9vcmRlcl9ieSApCisKKyAgICAgICAgaWYgaXNpbnN0YW5jZSggb3JkZXJf
YnksICggbGlzdCwgdHVwbGUgKSApOgorICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5Lm9yZGVyX2J5
KCAqb3JkZXJfYnkgKQorICAgICAgICByZXR1cm4gcXVlcnkub3JkZXJfYnkoIG9yZGVyX2J5ICkK
KworICAgIGRlZiBfYXBwbHlfbGltaXRfb2Zmc2V0KCBzZWxmLCBxdWVyeSwgbGltaXQsIG9mZnNl
dCApOgorICAgICAgICBpZiBsaW1pdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHF1ZXJ5ID0z
RCBxdWVyeS5saW1pdCggbGltaXQgKQorICAgICAgICBpZiBvZmZzZXQgaXMgbm90IE5vbmU6Cisg
ICAgICAgICAgICBxdWVyeSA9M0QgcXVlcnkub2Zmc2V0KCBvZmZzZXQgKQorICAgICAgICByZXR1
cm4gcXVlcnkKKworICAgICMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi49Ci4uLi4uIGNvbW1vbiBxdWVyaWVzCisjVE9E
TzogbmVlZGVkPworICAgIGRlZiBvbmUoIHNlbGYsIHRyYW5zLCAqKmt3YXJncyApOgorICAgICAg
ICB0cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5xdWVyeSggdHJhbnMsICoqa3dhcmdzICku
b25lKCkKKyAgICAgICAgIyByZS1yYWlzZSBhcyBzZXJpYWxpemFibGUgZXJyb3JzCisgICAgICAg
IGV4Y2VwdCBzcWxhbGNoZW15Lm9ybS5leGMuTm9SZXN1bHRGb3VuZCwgbm90X2ZvdW5kOgorICAg
ICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5PYmplY3ROb3RGb3VuZCggc2VsZi5tb2RlbF9jbGFz
cy5fX25hbWVfXyArICc9CiBub3QgZm91bmQnICkKKyAgICAgICAgZXhjZXB0IHNxbGFsY2hlbXku
b3JtLmV4Yy5NdWx0aXBsZVJlc3VsdHNGb3VuZCwgbXVsdGlfZm91bmQ6CisgICAgICAgICAgICBy
YWlzZSBleGNlcHRpb25zLkNvbmZsaWN0KCAnZm91bmQgbW9yZSB0aGFuIG9uZSAnICsgc2VsZi5t
b2RlbD0KX2NsYXNzLl9fbmFtZV9fICkKKworICAgIGRlZiBsaXN0KCBzZWxmLCB0cmFucywgKipr
d2FyZ3MgKToKKyAgICAgICAgcmV0dXJuIHNlbGYucXVlcnkoIHRyYW5zLCAqKmt3YXJncyApLmFs
bCgpCisKKyAgICBkZWYgYnlfaWQoIHNlbGYsIHRyYW5zLCBpZCwgKiprd2FyZ3MgKToKKyAgICAg
ICAgaWRfZmlsdGVyID0zRCBzZWxmLm1vZGVsX2NsYXNzLmlkID0zRD0zRCBpZAorICAgICAgICBy
ZXR1cm4gc2VsZi5vbmUoIHRyYW5zLCBmaWx0ZXJzPTNEaWRfZmlsdGVyLCAqKmt3YXJncyApCisK
KyAgICBkZWYgX3F1ZXJ5X2J5X2lkcyggc2VsZiwgdHJhbnMsIGlkcywgZmlsdGVycz0zRE5vbmUs
ICoqa3dhcmdzICk6CisgICAgICAgIGlkc19maWx0ZXIgPTNEIHNlbGYubW9kZWxfY2xhc3MuaWQu
aW5fKCBpZHMgKQorICAgICAgICByZXR1cm4gc2VsZi5xdWVyeSggdHJhbnMsIGZpbHRlcnM9M0Rz
ZWxmLl9tdW5nZV9maWx0ZXJzKCBpZHNfZmlsdGU9CnIsIGZpbHRlcnMgKSwgKiprd2FyZ3MgKQor
CisgICAgZGVmIGJ5X2lkcyggc2VsZiwgdHJhbnMsIGlkcywgKiprd2FyZ3MgKToKKyAgICAgICAg
Zm91bmQgPTNEIHNlbGYuX3F1ZXJ5X2J5X2lkcyggdHJhbnMsIGlkcywgKiprd2FyZ3MgKS5hbGwo
KQorICAgICAgICAjVE9ETzogdGhpcyBkb2VzIG5vdCBvcmRlciBieSB0aGUgb3JpZ2luYWwgJ2lk
cycgYXJyYXkKKworICAgICAgICAjIC4uLmNvdWxkIHVzZSBnZXQgKHN1cHBvc2VkbHkgc2luY2Ug
Zm91bmQgYXJlIGluIHRoZSBzZXNzaW9uLCB0aGU9CiBkYiB3b24ndCBiZSBoaXQgdHdpY2UpCisg
ICAgICAgICNyZXR1cm4gbWFwKCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCBzZWxmLm1vZGVsX2Ns
YXNzICkuZ2V0LCBpZHMgKQorCisgICAgICAgICMgLi4uY291bGQgaW1wbGVtZW50IG93biB2ZXJz
aW9uIGhlcmUgLSBzbG93PworICAgICAgICByZXR1cm4gc2VsZi5fb3JkZXJfaXRlbXNfYnlfaWQo
IGlkcywgZm91bmQgKQorICAgICAgICAjcmV0dXJuIGZvdW5kCisKKyAgICBkZWYgX29yZGVyX2l0
ZW1zX2J5X2lkKCBzZWxmLCBpZHMsIGl0ZW1zICk6CisgICAgICAgICIiIgorICAgICAgICBHaXZl
biBhIGxpc3Qgb2YgKHVuaXF1ZSkgaWRzIGFuZCBhIGxpc3Qgb2YgaXRlbXMgaGF2aW5nIGFuICdp
ZCcgYXQ9CnRyaWJ1dGUsCisgICAgICAgIHJldHVybiBpdGVtcyB0aGF0IGhhdmUgdGhlIGdpdmVu
IGlkcyBpbiB0aGF0IG9yZGVyLgorCisgICAgICAgIElmIGFuIGlkIGluIGlkcyBpcyBub3QgZm91
bmQgb3IgaWYgYW4gaXRlbSBpbiBpdGVtcyBkb2Vzbid0IGhhdmUgYT0KIGdpdmVuCisgICAgICAg
IGlkLCB0aGV5IHdpbGwgbm90IGJlIGluIHRoZSByZXR1cm5lZCBsaXN0LgorICAgICAgICAiIiIK
KyAgICAgICAgSURfQVRUUl9OQU1FID0zRCAnaWQnCisgICAgICAgICNUT0RPOj8/IGFzaWRlIGZy
b20gc3FsYWx4LmdldCBtZW50aW9uZWQgYWJvdmUsIEkgaGF2ZW4ndCBzZWVuIGFuID0KaW4tU1FM
IHdheQorICAgICAgICAjICAgdG8gbWFrZSB0aGlzIGhhcHBlbi4gVGhpcyBtYXkgbm90IGJlIHRo
ZSBtb3N0IGVmZmljaWVudCB3YXkgZWk9CnRoZXIuCisgICAgICAgICNOT1RFOiB0aGF0IHRoaXMg
aXNuJ3Qgc29ydGluZyBieSBpZCAtIHRoaXMgaXMgbWF0Y2hpbmcgdGhlIG9yZGVyID0KaW4gaXRl
bXMgdG8gdGhlIG9yZGVyIGluIGlkcworICAgICAgICAjIG1vdmUgaXRlbXMgbGlzdCBpbnRvIGRp
Y3QgYnkgaWQKKyAgICAgICAgaXRlbV9kaWN0ID0zRCB7fQorICAgICAgICBmb3IgaXRlbSBpbiBp
dGVtczoKKyAgICAgICAgICAgIGl0ZW1faWQgPTNEIGdldGF0dHIoIGl0ZW0sIElEX0FUVFJfTkFN
RSwgTm9uZSApCisgICAgICAgICAgICBpZiBpdGVtX2lkOgorICAgICAgICAgICAgICAgIGl0ZW1f
ZGljdFsgaXRlbV9pZCBdID0zRCBpdGVtCisgICAgICAgICMgcHVsbCBmcm9tIG1hcCBpbiBvcmRl
ciBvZiBpZHMKKyAgICAgICAgaW5fb3JkZXIgPTNEIFtdCisgICAgICAgIGZvciBpZCBpbiBpZHM6
CisgICAgICAgICAgICBpZiBpZCBpbiBpdGVtX2RpY3Q6CisgICAgICAgICAgICAgICAgaW5fb3Jk
ZXIuYXBwZW5kKCBpdGVtX2RpY3RbIGlkIF0gKQorICAgICAgICByZXR1cm4gaW5fb3JkZXIKKwor
ICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0tIGNyZWF0ZQorICAgIGRlZiBjcmVhdGUoIHNlbGYsIHRy
YW5zLCBmbHVzaD0zRFRydWUsICphcmdzLCAqKmt3YXJncyApOgorICAgICAgICBpdGVtID0zRCBz
ZWxmLm1vZGVsX2NsYXNzKCAqYXJncywgKiprd2FyZ3MgKQorICAgICAgICB0cmFucy5zYV9zZXNz
aW9uLmFkZCggaXRlbSApCisgICAgICAgIGlmIGZsdXNoOgorICAgICAgICAgICAgdHJhbnMuc2Ff
c2Vzc2lvbi5mbHVzaCgpCisgICAgICAgIHJldHVybiBpdGVtCisKKyAgICBkZWYgY29weSggc2Vs
ZiwgdHJhbnMsIGl0ZW0sICoqa3dhcmdzICk6CisgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuTm90
SW1wbGVtZW50ZWQoICdBYnN0cmFjdCBtZXRob2QnICkKKworICAgICMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0t
LS0tIHVwZGF0ZQorICAgIGRlZiB1cGRhdGUoIHNlbGYsIHRyYW5zLCBpdGVtLCBuZXdfdmFsdWVz
LCBmbHVzaD0zRFRydWUsICoqa3dhcmdzICk6CisgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRk
KCBpdGVtICkKKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gbmV3X3ZhbHVlcy5pdGVtcygpOgor
ICAgICAgICAgICAgaWYgaGFzYXR0ciggaXRlbSwga2V5ICk6CisgICAgICAgICAgICAgICAgc2V0
YXR0ciggaXRlbSwga2V5LCB2YWx1ZSApCisgICAgICAgIGlmIGZsdXNoOgorICAgICAgICAgICAg
dHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCisgICAgICAgIHJldHVybiBpdGVtCisKKyAgICBkZWYg
YXNzb2NpYXRlKCBzZWxmLCB0cmFucywgYXNzb2NpYXRlX3dpdGgsIGl0ZW0sIGZvcmVpZ25fa2V5
X25hbWU9M0ROPQpvbmUgKToKKyAgICAgICAgZm9yZWlnbl9rZXlfbmFtZSA9M0QgZm9yZWlnbl9r
ZXlfbmFtZSBvciBzZWxmLmZvcmVpZ25fa2V5X25hbWUKKyAgICAgICAgc2V0YXR0ciggYXNzb2Np
YXRlX3dpdGgsIGZvcmVpZ25fa2V5X25hbWUsIGl0ZW0gKQorICAgICAgICByZXR1cm4gaXRlbQor
CisgICAgZGVmIHF1ZXJ5X2Fzc29jaWF0ZWQoIHNlbGYsIHRyYW5zLCBhc3NvY2lhdGVkX21vZGVs
X2NsYXNzLCBpdGVtLCBmb3JlaT0KZ25fa2V5X25hbWU9M0ROb25lICk6CisgICAgICAgIGZvcmVp
Z25fa2V5X25hbWUgPTNEIGZvcmVpZ25fa2V5X25hbWUgb3Igc2VsZi5mb3JlaWduX2tleV9uYW1l
CisgICAgICAgIGZvcmVpZ25fa2V5ID0zRCBnZXRhdHRyKCBhc3NvY2lhdGVkX21vZGVsX2NsYXNz
LCBmb3JlaWduX2tleV9uYW1lICkKKyAgICAgICAgcmV0dXJuIHRyYW5zLnNhX3Nlc3Npb24ucXVl
cnkoIGFzc29jaWF0ZWRfbW9kZWxfY2xhc3MgKS5maWx0ZXIoIGZvPQpyZWlnbl9rZXkgPTNEPTNE
IGl0ZW0gKQorCisgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0tLS0gZGVsZXRlCisgICAgIyBhIHJlbmFt
ZSBvZiBzcWwgREVMRVRFIHRvIGRpZmZlcmVudGlhdGUgZnJvbSB0aGUgR2FsYXh5IG5vdGlvbiBv
ZiBtYT0KcmtfYXNfZGVsZXRlZAorICAgICNkZWYgcmVtb3ZlX2Zyb21fZGIoIHNlbGYsIHRyYW5z
LCBpdGVtLCAqKmt3YXJncyApOgorICAgICMgICAgcmV0dXJuIGl0ZW0KKworCisjID0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0z
RAorY2xhc3MgRGVsZXRhYmxlTW9kZWxJbnRlcmZhY2UoIG9iamVjdCApOgorCisgICAgZGVmIGRl
bGV0ZSggc2VsZiwgdHJhbnMsIGl0ZW0sIGZsdXNoPTNEVHJ1ZSwgKiprd2FyZ3MgKToKKyAgICAg
ICAgIyBvZnRlbiBvbmx5IGEgbWF0dGVyIG9mICdtYXJraW5nIGFzIGRlbGV0ZWQnCisgICAgICAg
IHRyYW5zLnNhX3Nlc3Npb24uYWRkKCBpdGVtICkKKyAgICAgICAgaXRlbS5kZWxldGVkID0zRCBU
cnVlCisgICAgICAgIGlmIGZsdXNoOgorICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVz
aCgpCisgICAgICAgIHJldHVybiBpdGVtCisKKyAgICBkZWYgdW5kZWxldGUoIHNlbGYsIHRyYW5z
LCBpdGVtLCBmbHVzaD0zRFRydWUsICoqa3dhcmdzICk6CisgICAgICAgIHRyYW5zLnNhX3Nlc3Np
b24uYWRkKCBpdGVtICkKKyAgICAgICAgaXRlbS5kZWxldGVkID0zRCBGYWxzZQorICAgICAgICBp
ZiBmbHVzaDoKKyAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uZmx1c2goKQorICAgICAgICBy
ZXR1cm4gaXRlbQorCisKKyMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECitjbGFzcyBQdXJnYWJsZU1vZGVsSW50ZXJmYWNl
KCBEZWxldGFibGVNb2RlbEludGVyZmFjZSApOgorCisgICAgZGVmIGVycm9yX3VubGVzc19kYXRh
c2V0X3B1cmdlX2FsbG93ZWQoIHNlbGYsIHRyYW5zLCBpdGVtLCBtc2c9M0ROb25lID0KKToKKyAg
ICAgICAgaWYgbm90IHRyYW5zLmFwcC5jb25maWcuYWxsb3dfdXNlcl9kYXRhc2V0X3B1cmdlOgor
ICAgICAgICAgICAgbXNnID0zRCBtc2cgb3IgJ1RoaXMgaW5zdGFuY2UgZG9lcyBub3QgYWxsb3cg
dXNlciBkYXRhc2V0IHB1cmc9CmluZycKKyAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuQ29u
ZmlnRG9lc05vdEFsbG93RXhjZXB0aW9uKCBtc2cgKQorICAgICAgICAgICAgI3JhaXNlIGV4Y2Vw
dGlvbnMuQ29uZmlnRG9lc05vdEFsbG93RXhjZXB0aW9uKCBtc2csIGl0ZW09M0RpdGU9Cm0gKQor
ICAgICAgICByZXR1cm4gaXRlbQorCisgICAgZGVmIHB1cmdlKCBzZWxmLCB0cmFucywgaXRlbSwg
Zmx1c2g9M0RUcnVlLCAqKmt3YXJncyApOgorICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmFkZCgg
aXRlbSApCisgICAgICAgIGl0ZW0ucHVyZ2VkID0zRCBUcnVlCisgICAgICAgIGlmIGZsdXNoOgor
ICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCisgICAgICAgIHJldHVybiBpdGVt
CisKKworIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPQo9M0Q9M0Q9M0QKK2NsYXNzIEFjY2Vzc2libGVNb2RlbEludGVyZmFjZSggb2JqZWN0
ICk6CisKKyAgICAjIGRvbid0IHdhbnQgdG8gb3ZlcnJpZGUgYnlfaWQgc2luY2UgY29uc3VtZXJz
IHdpbGwgYWxzbyB3YW50IHRvIGZldGNoPQogdy9vIGFueSBzZWN1cml0eSBjaGVja3MKKworICAg
IGRlZiBhY2Nlc3NpYmxlX2J5X2lkKCBzZWxmLCB0cmFucywgaWQsIHVzZXIsICoqa3dhcmdzICk6
CisgICAgICAgIGl0ZW0gPTNEIE1vZGVsTWFuYWdlci5ieV9pZCggc2VsZiwgdHJhbnMsIGlkICkK
KyAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3JfdW5sZXNzX2FjY2Vzc2libGUoIHRyYW5zLCBpdGVt
LCB1c2VyICkKKworICAgIGRlZiBlcnJvcl91bmxlc3NfYWNjZXNzaWJsZSggc2VsZiwgdHJhbnMs
IGl0ZW0sIHVzZXIgKToKKyAgICAgICAgaWYgc2VsZi5pc19hY2Nlc3NpYmxlKCB0cmFucywgaXRl
bSwgdXNlciApOgorICAgICAgICAgICAgcmV0dXJuIGl0ZW0KKyAgICAgICAgcmFpc2UgZXhjZXB0
aW9ucy5JdGVtQWNjZXNzaWJpbGl0eUV4Y2VwdGlvbiggIiVzIGlzIG5vdCBhY2Nlc3NpYmxlPQog
YnkgdXNlciIgJSBzZWxmLm1vZGVsX2NsYXNzX25hbWUgKQorCisgICAgZGVmIGlzX2FjY2Vzc2li
bGUoIHNlbGYsIHRyYW5zLCBpdGVtLCB1c2VyICk6CisgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMu
Tm90SW1wbGVtZW50ZWQoICJBYnN0cmFjdCBJbnRlcmZhY2UgTWV0aG9kIiApCisgICAgICAgICNP
Uj8gcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgbGlzdF9hY2Nlc3NpYmxlKCBzZWxmLCB0cmFucywg
dXNlciwgKiprd2FyZ3MgKToKKyAgICAgICAgaXRlbXMgPTNEIE1vZGVsTWFuYWdlci5saXN0KCBz
ZWxmLCB0cmFucywgKiprd2FyZ3MgKQorICAgICAgICByZXR1cm4gWyBzZWxmLmVycm9yX3VubGVz
c19hY2Nlc3NpYmxlKCB0cmFucywgaXRlbSwgdXNlciApIGZvciBpdGU9Cm0gaW4gaXRlbXMgXQor
CisgICAgZGVmIGZpbHRlcl9hY2Nlc3NpYmxlKCBzZWxmLCB0cmFucywgdXNlciwgKiprd2FyZ3Mg
KToKKyAgICAgICAgaXRlbXMgPTNEIE1vZGVsTWFuYWdlci5saXN0KCBzZWxmLCB0cmFucywgKipr
d2FyZ3MgKQorICAgICAgICByZXR1cm4gZmlsdGVyKCBsYW1iZGEgaXRlbTogc2VsZi5pc19hY2Nl
c3NpYmxlKCB0cmFucywgaXRlbSwgdXNlciA9CiksIGl0ZW1zICkKKworCisjID0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRAor
Y2xhc3MgTW9kZWxTZXJpYWxpemluZ0Vycm9yKCBleGNlcHRpb25zLk9iamVjdEF0dHJpYnV0ZUlu
dmFsaWRFeGNlcHRpb24gKToKKyAgICAiIiJUaHJvd24gd2hlbiByZXF1ZXN0IG1vZGVsIHZhbHVl
cyBjYW4ndCBiZSBzZXJpYWxpemVkIiIiCisgICAgI1RPRE86IGJldHRlciBhcyA1MDA/CisgICAg
cGFzcworCisKK2NsYXNzIE1vZGVsRGVzZXJpYWxpemluZ0Vycm9yKCBleGNlcHRpb25zLk9iamVj
dEF0dHJpYnV0ZUludmFsaWRFeGNlcHRpb24gPQopOgorICAgICIiIlRocm93biB3aGVuIGFuIGlu
Y29taW5nIHZhbHVlIGlzbid0IHVzYWJsZSBieSB0aGUgbW9kZWwKKyAgICAoYmFkIHR5cGUsIG91
dCBvZiByYW5nZSwgZXRjLikKKyAgICAiIiIKKyAgICBwYXNzCisKKworIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS09Ci0tLS0tCitjbGFzcyBNb2RlbFNlcmlhbGl6ZXIoIG9iamVjdCApOgorICAgICNtb2RlbF9t
Z3JfY2xhc3MgPTNEIE5vbmUKKworICAgICMgcHJpbWFyaWx5IGRlc2lnbmVkIGZvciB0dXJuaW5n
IG1vZGVscyBpbnRvL2Zyb20gSlNPTmFibGUgZGljdHMKKyAgICAjICAgbW9kZWwgICAtLT4gTW9k
ZWxTZXJpYWxpemVyIC0tPiBKU09OCisgICAgIyAgIEpTT04gICAgLS0+IE1vZGVsU2VyaWFsaXpl
ciAtLT4gbW9kZWwKKyAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgorICAgICAgICBzZWxm
LmFwcCA9M0QgYXBwCisgICAgICAgICNUT0RPOgorICAgICAgICAjc2VsZi5tZ3IgPTNEIG1vZGVs
X21ncl9jbGFzcyggYXBwICkKKyAgICAgICA9MjAKKyAgICAgICAgIyBhIG1hcCBvZiBkaWN0aW9u
YXJ5IGtleXMgdG8gdGhlIGZ1bmN0aW9ucyAob2Z0ZW4gbGFtYmRhcykgdGhhdCBjPQpyZWF0ZSB0
aGUgdmFsdWVzIGZvciB0aG9zZSBrZXlzCisgICAgICAgIHNlbGYuc2VyaWFsaXplcnMgPTNEIHt9
CisgICAgICAgICMgYWRkIHN1YmNsYXNzIHNlcmlhbGl6ZXJzIGRlZmluZWQgdGhlcmUKKyAgICAg
ICAgc2VsZi5hZGRfc2VyaWFsaXplcnMoKQorICAgICAgICAjIGEgbGlzdCBvZiB2YWxpZCBzZXJp
YWxpemFibGUga2V5cyB0aGF0IGNhbiB1c2UgdGhlIGRlZmF1bHQgKHN0cmk9Cm5nKSBzZXJpYWxp
emVyCisgICAgICAgICMgICB0aGlzIGFsbG93cyB1cyB0bzogJ21lbnRpb24nIHRoZSBrZXkgd2l0
aG91dCBhZGRpbmcgdGhlIGRlZmF1bD0KdCBzZXJpYWxpemVyCisgICAgICAgICNOT1RFOiBpZiBh
IGtleSBpcyByZXF1ZXN0ZWQgdGhhdCBpcyBpbiBuZWl0aGVyIHNlcmlhbGl6YWJsZV9rZXlzID0K
b3Igc2VyaWFsaXplcnMsIGl0IGlzIG5vdCByZXR1cm5lZAorICAgICAgICAjVE9ETzogcmVuYW1l
IHRvICdrZXlzX3VzaW5nX2RlZmF1bHRfc2VyaWFsaXplcicKKyAgICAgICAgI1RPRE86IG9yIChh
bHQpIGFsbG93IGtleSBpbiBzZXJpYWxpemVycyB3aXRoIE5vbmUgYXMgdmFsdWUgKGluZGljPQph
dGluZyB1c2UgZGVmYXVsdF9zZXJpYWxpemVyKQorICAgICAgICBzZWxmLnNlcmlhbGl6YWJsZV9r
ZXlzID0zRCBbXQorCisgICAgICAgICMgdmlld3MgYXJlIGNvbGxlY3Rpb25zIG9mIHNlcmlhbGl6
YWJsZSBhdHRyaWJ1dGVzIChhIG5hbWVkIGFycmF5ID0Kb2Yga2V5cykKKyAgICAgICAgIyAgIGlu
c3BpcmVkIGJ5IG1vZGVsLmRpY3Rfe3ZpZXd9X3Zpc2libGVfa2V5cworICAgICAgICBzZWxmLnZp
ZXdzID0zRCB7fQorICAgICAgICBzZWxmLmRlZmF1bHRfdmlldyA9M0QgTm9uZQorCisgICAgIyAu
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLj0KLi4uLi4gc2VyaWFsaXppbmcKKyAgICBkZWYgYWRkX3NlcmlhbGl6ZXJzKCBz
ZWxmICk6CisgICAgICAgICMgcmVnaXN0ZXIgYSBtYXAgb2YgYXR0cmlidXRlIGtleXMgLT4gZnVu
Y3Rpb25zIHRoYXQgd2lsbCBzZXJpYWxpej0KZSB0aGUgYXR0cmlidXRlCisgICAgICAgICMgdG8g
YmUgb3ZlcnJpZGRlbiBpbiBzdWJjbGFzc2VzCisgICAgICAgIHBhc3MKKworICAgIGRlZiBzZXJp
YWxpemUoIHNlbGYsIHRyYW5zLCBpdGVtLCBrZXlzICk6CisgICAgICAgICMgbWFpbiBpbnRlcmZh
Y2UgZm4gZm9yIGNvbnZlcnRpbmcgYSBtb2RlbCB0byBhIGRpY3QKKyAgICAgICAgI1RPRE86IHRy
eS9jYXRjaCBoZXJlPworICAgICAgICByZXR1cm5lZCA9M0Qge30KKyAgICAgICAgZm9yIGtleSBp
biBrZXlzOgorICAgICAgICAgICAgIyBjaGVjayBib3RoIHNlcmlhbGl6ZXJzIGFuZCBzZXJpYWxp
emFibGUga2V5cworICAgICAgICAgICAgaWYga2V5IGluIHNlbGYuc2VyaWFsaXplcnM6CisgICAg
ICAgICAgICAgICAgcmV0dXJuZWRbIGtleSBdID0zRCBzZWxmLnNlcmlhbGl6ZXJzWyBrZXkgXSgg
dHJhbnMsIGl0ZW0sID0Ka2V5ICkKKyAgICAgICAgICAgIGVsaWYga2V5IGluIHNlbGYuc2VyaWFs
aXphYmxlX2tleXM6CisgICAgICAgICAgICAgICAgcmV0dXJuZWRbIGtleSBdID0zRCBzZWxmLmRl
ZmF1bHRfc2VyaWFsaXplciggdHJhbnMsIGl0ZW0sID0Ka2V5ICkKKyAgICAgICAgICAgICMgaWdu
b3JlIGJhZC91bnJlZyBrZXlzCisgICAgICAgIHJldHVybiByZXR1cm5lZAorCisgICAgIyAuLi4g
Y29tbW9uIGRlc2VyaWFsaXplcnMgZm9yIHByaW1pdGl2ZXMKKyAgICBkZWYgZGVmYXVsdF9zZXJp
YWxpemVyKCBzZWxmLCB0cmFucywgaXRlbSwga2V5ICk6CisgICAgICAgIHJldHVybiBnZXRhdHRy
KCBpdGVtLCBrZXkgKQorCisgICAgZGVmIHNlcmlhbGl6ZV9kYXRlKCBzZWxmLCB0cmFucywgaXRl
bSwga2V5ICk6CisgICAgICAgIGRhdGUgPTNEIGdldGF0dHIoIGl0ZW0sIGtleSApCisgICAgICAg
IHJldHVybiBkYXRlLmlzb2Zvcm1hdCgpIGlmIGRhdGUgaXMgbm90IE5vbmUgZWxzZSBOb25lCisK
KyAgICAjIC4uLi4gY29tbW9uIHNlcmlhbGl6ZXJzIGZvciBHYWxheHkKKyAgICBkZWYgc2VyaWFs
aXplX2lkKCBzZWxmLCB0cmFucywgaXRlbSwga2V5ICk6CisgICAgICAgIGlkID0zRCBnZXRhdHRy
KCBpdGVtLCBrZXkgKQorICAgICAgICByZXR1cm4gdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBp
ZCApIGlmIGlkIGlzIG5vdCBOb25lIGVsc2UgTm9uZQorCisgICAgIyAuLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLj0KLi4u
Li4gc2VyaWFsaXppbmcgdG8gYSB2aWV3CisgICAgIyB3aGVyZSBhIHZpZXcgaXMgYSBwcmVkZWZp
ZWQgbGlzdCBvZiBrZXlzIHRvIHNlcmlhbGl6ZQorICAgIGRlZiBzZXJpYWxpemVfdG9fdmlldygg
c2VsZiwgdHJhbnMsIGl0ZW0sIHZpZXc9M0ROb25lLCBrZXlzPTNETm9uZSApOgorICAgICAgICBr
ZXlzID0zRCBrZXlzIG9yIFtdCisgICAgICAgIGFsbF9rZXlzID0zRCBzZWxmLnZpZXdfdG9fbGlz
dCggdmlldyApICsga2V5cworICAgICAgICByZXR1cm4gc2VsZi5zZXJpYWxpemUoIHRyYW5zLCBp
dGVtLCBhbGxfa2V5cyApCisKKyAgICBkZWYgdmlld190b19saXN0KCBzZWxmLCB2aWV3PTNETm9u
ZSApOgorICAgICAgICBpZiB2aWV3IGlzIE5vbmU6CisgICAgICAgICAgICB2aWV3ID0zRCBzZWxm
LmRlZmF1bHRfdmlldworICAgICAgICBpZiB2aWV3IG5vdCBpbiBzZWxmLnZpZXdzOgorICAgICAg
ICAgICAgcmFpc2UgTW9kZWxTZXJpYWxpemluZ0Vycm9yKCAndW5rbm93biB2aWV3Jywgdmlldz0z
RHZpZXcsIGF2YWk9CmxhYmxlX3ZpZXdzPTNEc2VsZi52aWV3cyApCisgICAgICAgIHJldHVybiBz
ZWxmLnZpZXdzWyB2aWV3IF0KKworICAgICMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi49Ci4uLi4uIGFsaWFzZXMKKyAg
ICAjZGVmIHRvX2RpY3QoIHNlbGYsIHRyYW5zLCBpdGVtLCB2aWV3PTNETm9uZSwgdmlld19rZXlz
PTNETm9uZSApOgorICAgICMgICAgdmlld19rZXlzID0zRCB2aWV3X2tleXMgb3Igc2VsZi52aWV3
X3RvX2xpc3QoIHZpZXcgKQorICAgICMgICAgcmV0dXJuIHNlbGYuc2VyaWFsaXplKCB0cmFucywg
aXRlbSwgdmlld19rZXlzICkKKworCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0tLS0KK2NsYXNzIE1v
ZGVsVmFsaWRhdG9yKCBvYmplY3QgKToKKworICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwLCAq
YXJncywgKiprd2FyZ3MgKToKKyAgICAgICAgc2VsZi5hcHAgPTNEIGFwcAorCisgICAgZGVmIHR5
cGUoIHNlbGYsIGtleSwgdmFsLCB0eXBlcyApOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSgg
dmFsLCB0eXBlcyApOgorICAgICAgICAgICAgbXNnID0zRCAnbXVzdCBiZSBhIHR5cGU6ICVzJyAl
ICggc3RyKCB0eXBlcyApICkKKyAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuUmVxdWVzdFBh
cmFtZXRlckludmFsaWRFeGNlcHRpb24oIG1zZywga2V5PTNEPQprZXksIHZhbD0zRHZhbCApCisg
ICAgICAgIHJldHVybiB2YWwKKworICAgICMgdmFsaWRhdG9ycyBmb3IgcHJpbWl0aXZlcworICAg
IGRlZiBiYXNlc3RyaW5nKCBzZWxmLCBrZXksIHZhbCApOgorICAgICAgICByZXR1cm4gc2VsZi50
eXBlKCBrZXksIHZhbCwgYmFzZXN0cmluZyApCisKKyAgICBkZWYgbnVsbGFibGVfYmFzZXN0cmlu
Zyggc2VsZiwga2V5LCB2YWwgKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZSgga2V5LCB2YWws
ICggYmFzZXN0cmluZywgdHlwZSggTm9uZSApICkgKQorCisgICAgZGVmIGJvb2woIHNlbGYsIGtl
eSwgdmFsICk6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGUoIGtleSwgdmFsLCBib29sICkKKwor
ICAgIGRlZiBpbnQoIHNlbGYsIGtleSwgdmFsICk6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGUo
IGtleSwgdmFsLCBpbnQgKQorCisgICAgZGVmIGludF9yYW5nZSggc2VsZiwga2V5LCB2YWwsIG1p
bj0zRE5vbmUsIG1heD0zRE5vbmUgKToKKyAgICAgICAgdmFsID0zRCBzZWxmLnR5cGUoIGtleSwg
dmFsLCBpbnQgKQorICAgICAgICBpZiB2YWwgPCBtaW46CisgICAgICAgICAgICByYWlzZSBleGNl
cHRpb25zLlJlcXVlc3RQYXJhbWV0ZXJJbnZhbGlkRXhjZXB0aW9uKCAibGVzcyB0aGFuID0KbWlu
aW11bSIsIGtleT0zRGtleSwgdmFsPTNEdmFsLCBtaW49M0RtaW4gKQorICAgICAgICBpZiB2YWwg
PiBtYXg6CisgICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLlJlcXVlc3RQYXJhbWV0ZXJJbnZh
bGlkRXhjZXB0aW9uKCAiZ3JlYXRlciB0aD0KYW4gbWF4aW11bSIsIGtleT0zRGtleSwgdmFsPTNE
dmFsLCBtYXg9M0RtYXggKQorICAgICAgICByZXR1cm4gdmFsCisKKyAgICBkZWYgYmFzZXN0cmlu
Z19saXN0KCBzZWxmLCBrZXksIHZhbCApOgorICAgICAgICB2YWwgPTNEIHNlbGYudHlwZSgga2V5
LCB2YWwsIGxpc3QgKQorICAgICAgICByZXR1cm4gWyBzZWxmLmJhc2VzdHJpbmcoIGtleSwgZWxl
bSApIGZvciBlbGVtIGluIHZhbCBdCisKKyAgICAjIHZhbGlkYXRvcnMgZm9yIEdhbGF4eQorICAg
IGRlZiBnZW5vbWVfYnVpbGQoIHNlbGYsIHRyYW5zLCBrZXksIHZhbCApOgorICAgICAgICAjVE9E
TzogaXMgdGhpcyBjb3JyZWN0PworICAgICAgICBpZiB2YWwgaXMgTm9uZToKKyAgICAgICAgICAg
IHJldHVybiAnPycKKyAgICAgICAgIyB3b3QuLi53aHkgdHVwbGVzPworICAgICAgICBpZiB2YWwg
bm90IGluIGRpY3QoIHRyYW5zLmRiX2J1aWxkcyApOgorICAgICAgICAgICAgcmFpc2UgZXhjZXB0
aW9ucy5SZXF1ZXN0UGFyYW1ldGVySW52YWxpZEV4Y2VwdGlvbiggImludmFsaWQgcmU9CmZlcmVu
Y2UiLCBrZXk9M0RrZXksIHZhbD0zRHZhbCApCisgICAgICAgIHJldHVybiB2YWwKKworICAgICNk
ZWYgc2x1Zyggc2VsZiwgdHJhbnMsIGl0ZW0sIGtleSwgdmFsICk6CisgICAgIyAgICBwYXNzCisK
KworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0tCitjbGFzcyBNb2RlbERlc2VyaWFsaXplciggb2Jq
ZWN0ICk6CisgICAgI21vZGVsX21ncl9jbGFzcyA9M0QgTm9uZQorCisgICAgIyBwcmltYXJpbHkg
ZGVzaWduZWQgZm9yIGNyZWF0aW5nIG1vZGVscyBmcm9tIGRpY3RzCisgICAgIyAgIERpY3QgICAg
LS0+IE1vZGVsRGVzZXJpYWxpemVyIC0tPiBtb2RlbAorICAgIGRlZiBfX2luaXRfXyggc2VsZiwg
YXBwICk6CisgICAgICAgIHNlbGYuYXBwID0zRCBhcHAKKyAgICAgICAgI1RPRE86CisgICAgICAg
ICNzZWxmLm1nciA9M0QgbW9kZWxfbWdyX2NsYXNzKCBhcHAgKQorCisgICAgICAgIHNlbGYuZGVz
ZXJpYWxpemVycyA9M0Qge30KKyAgICAgICAgc2VsZi5hZGRfZGVzZXJpYWxpemVycygpCisgICAg
ICAgIHNlbGYuZGVzZXJpYWxpemFibGVfa2V5cyA9M0QgW10KKyAgICAgICAgc2VsZi52YWxpZGF0
ZSA9M0QgTW9kZWxWYWxpZGF0b3IoIHNlbGYuYXBwICkKKworICAgICMgLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi49Ci4u
Li4uIGRlc2VyaWFsaXppbmcKKyAgICBkZWYgYWRkX2Rlc2VyaWFsaXplcnMoIHNlbGYgKToKKyAg
ICAgICAgIyByZWdpc3RlciBhIG1hcCBvZiBhdHRyaWJ1dGUga2V5cyAtPiBmdW5jdGlvbnMgdGhh
dCB3aWxsIGRlc2VyaWFsPQppemUgZGF0YSBpbnRvIHRoZSBhdHRyaWJ1dGUKKyAgICAgICAgIyB0
byBiZSBvdmVycmlkZGVuIGluIHN1YmNsYXNzZXMKKyAgICAgICAgcGFzcworCisgICAgZGVmIGRl
c2VyaWFsaXplKCBzZWxmLCB0cmFucywgaXRlbSwgZGF0YSwgZmx1c2g9M0RUcnVlICk6CisgICAg
ICAgIG5ld19kaWN0ID0zRCB7fQorICAgICAgICBmb3Iga2V5LCB2YWwgaW4gZGF0YS5pdGVtcygp
OgorICAgICAgICAgICAgI3ByaW50IGtleSwgdmFsCisgICAgICAgICAgICBpZiBrZXkgaW4gc2Vs
Zi5kZXNlcmlhbGl6ZXJzOgorICAgICAgICAgICAgICAgICNwcmludCAnXHQgZGVzZXJpYWxpemVy
OicsIHNlbGYuZGVzZXJpYWxpemVyc1sga2V5IF0KKyAgICAgICAgICAgICAgICBuZXdfZGljdFsg
a2V5IF0gPTNEIHNlbGYuZGVzZXJpYWxpemVyc1sga2V5IF0oIHRyYW5zLCBpdGVtPQosIGtleSwg
dmFsICkKKyAgICAgICAgICAgICMhaW1wb3J0YW50OiBkb24ndCBlcnJvciBvbiB1bnJlZy4ga2V5
cyAtLSBtYW55IGNsaWVudHMgd2lsbCBhPQpkZCB3ZWlyZCBhc3Mga2V5cyBvbnRvIHRoZSBtb2Rl
bAorICAgICAgICAjVE9ETzo/PyBoZXJlIG9yIGluIG1hbmFnZXI/CisgICAgICAgIGlmIGZsdXNo
IGFuZCBsZW4oIG5ld19kaWN0ICk6CisgICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmFkZCgg
aXRlbSApCisgICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKKyAgICAgICAgcmV0
dXJuIG5ld19kaWN0CisKKyAgICAjIC4uLiBjb21tb24gZGVzZXJpYWxpemVycyBmb3IgcHJpbWl0
aXZlcworICAgIGRlZiBkZWZhdWx0X2Rlc2VyaWFsaXplciggc2VsZiwgdHJhbnMsIGl0ZW0sIGtl
eSwgdmFsICk6CisgICAgICAgICNUT0RPOiBzZXRzIHRoZSBpdGVtIGF0dHJpYnV0ZSB0byB2YWx1
ZSAodGhpcyBtYXkgbm90IHdvcmsgaW4gYWxsID0KaW5zdGFuY2VzKQorCisgICAgICAgICMgb25s
eSBkbyB0aGUgZm9sbG93aW5nIGlmIHZhbCA9M0Q9M0QgZ2V0YXR0ciggaXRlbSwga2V5ICkKKyAg
ICAgICAgaWYgaGFzYXR0ciggaXRlbSwga2V5ICkgYW5kIGdldGF0dHIoIGl0ZW0sIGtleSApICE9
M0QgdmFsOgorICAgICAgICAgICAgc2V0YXR0ciggaXRlbSwga2V5LCB2YWwgKQorICAgICAgICBy
ZXR1cm4gdmFsCisKKyAgICBkZWYgZGVzZXJpYWxpemVfYmFzZXN0cmluZyggc2VsZiwgdHJhbnMs
IGl0ZW0sIGtleSwgdmFsICk6CisgICAgICAgIHZhbCA9M0Qgc2VsZi52YWxpZGF0ZS5iYXNlc3Ry
aW5nKCBrZXksIHZhbCApCisgICAgICAgIHJldHVybiBzZWxmLmRlZmF1bHRfZGVzZXJpYWxpemVy
KCB0cmFucywgaXRlbSwga2V5LCB2YWwgKQorCisgICAgZGVmIGRlc2VyaWFsaXplX2Jvb2woIHNl
bGYsIHRyYW5zLCBpdGVtLCBrZXksIHZhbCApOgorICAgICAgICB2YWwgPTNEIHNlbGYudmFsaWRh
dGUuYm9vbCgga2V5LCB2YWwgKQorICAgICAgICByZXR1cm4gc2VsZi5kZWZhdWx0X2Rlc2VyaWFs
aXplciggdHJhbnMsIGl0ZW0sIGtleSwgdmFsICkKKworICAgIGRlZiBkZXNlcmlhbGl6ZV9pbnQo
IHNlbGYsIHRyYW5zLCBpdGVtLCBrZXksIHZhbCwgbWluPTNETm9uZSwgbWF4PTNETm89Cm5lICk6
CisgICAgICAgIHZhbCA9M0Qgc2VsZi52YWxpZGF0ZS5pbnRfcmFuZ2UoIGtleSwgdmFsLCBtaW4s
IG1heCApCisgICAgICAgIHJldHVybiBzZWxmLmRlZmF1bHRfZGVzZXJpYWxpemVyKCB0cmFucywg
aXRlbSwga2V5LCB2YWwgKQorCisgICAgIyAuLi4gY29tbW9uIGRlc2VyaWFsaXplcnMgZm9yIEdh
bGF4eQorICAgIGRlZiBkZXNlcmlhbGl6ZV9nZW5vbWVfYnVpbGQoIHNlbGYsIHRyYW5zLCBpdGVt
LCBrZXksIHZhbCApOgorICAgICAgICB2YWwgPTNEIHNlbGYudmFsaWRhdGUuZ2Vub21lX2J1aWxk
KCB0cmFucywga2V5LCB2YWwgKQorICAgICAgICByZXR1cm4gc2VsZi5kZWZhdWx0X2Rlc2VyaWFs
aXplciggdHJhbnMsIGl0ZW0sIGtleSwgdmFsICkKKworICAgIGRlZiBkZXNlcmlhbGl6ZV9hbm5v
dGF0aW9uKCBzZWxmLCB0cmFucywgaXRlbSwga2V5LCB2YWwgKToKKyAgICAgICAgdmFsID0zRCBz
ZWxmLnZhbGlkYXRlLm51bGxhYmxlX2Jhc2VzdHJpbmcoIGtleSwgdmFsICkKKyAgICAgICAgI1RP
RE86IGhhdmUgdG8gYXNzdW1lIHRyYW5zLnVzZXIgaGVyZS4uLgorICAgICAgICByZXR1cm4gaXRl
bS5hZGRfaXRlbV9hbm5vdGF0aW9uKCB0cmFucy5zYV9zZXNzaW9uLCB0cmFucy51c2VyLCBpdGU9
Cm0sIHZhbCApCisKKyAgICBkZWYgZGVzZXJpYWxpemVfdGFncyggc2VsZiwgdHJhbnMsIGl0ZW0s
IGtleSwgdmFsICk6CisgICAgICAgIG5ld190YWdzX2xpc3QgPTNEIHNlbGYudmFsaWRhdGUuYmFz
ZXN0cmluZ19saXN0KCBrZXksIHZhbCApCisgICAgICAgICNUT0RPOiBoYXZlIHRvIGFzc3VtZSB0
cmFucy51c2VyIGhlcmUuLi4KKyAgICAgICAgdXNlciA9M0QgdHJhbnMudXNlcgorICAgICAgICAj
VE9ETzogZHVwZWQgZnJvbSB0YWdzIG1hbmFnZXIgLSBkZS1kdXBlIHdoZW4gbW92ZWQgdG8gdGFn
Z2FibGUgbWk9CnhpbgorICAgICAgICB0YWdfaGFuZGxlciA9M0QgdHJhbnMuYXBwLnRhZ19oYW5k
bGVyCisgICAgICAgIHRhZ19oYW5kbGVyLmRlbGV0ZV9pdGVtX3RhZ3MoIHRyYW5zLCB1c2VyLCBp
dGVtICkKKyAgICAgICAgbmV3X3RhZ3Nfc3RyID0zRCAnLCcuam9pbiggbmV3X3RhZ3NfbGlzdCAp
CisgICAgICAgIHRhZ19oYW5kbGVyLmFwcGx5X2l0ZW1fdGFncyggdHJhbnMsIHVzZXIsIGl0ZW0s
IHVuaWNvZGUoIG5ld190YWdzXz0Kc3RyLmVuY29kZSggJ3V0Zi04JyApLCAndXRmLTgnICkgKQor
ICAgICAgICAjdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCisgICAgICAgIHJldHVybiBpdGVtLnRh
Z3MKKworICAgICNkZWYgZGVzZXJpYWxpemVfcmF0aW5nKCBzZWxmLCB0cmFucywgaXRlbSwga2V5
LCB2YWwgKToKKyAgICAjICAgIHZhbCA9M0Qgc2VsZi52YWxpZGF0ZS5pbnRfcmFuZ2UoIGtleSwg
dmFsLCAwLCA1ICkKKyAgICAjICAgIHJldHVybiBzZWxmLnNldF9yYXRpbmcuLi4oIHRyYW5zLCBp
dGVtLCB2YWwsIHVzZXI9M0R0cmFucy51c2VyICkKKworICAgICMgLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi49Ci4uLi4u
IGFsaWFzZXMKKyAgICAjZGVmIGZyb21fZGljdCggc2VsZiwgdHJhbnMsIGl0ZW0sIGRhdGEgKToK
KyAgICAjICAgIHNlbGYuZGVzZXJpYWxpemUoIHRyYW5zLCBpdGVtLCBkYXRhICkKKworCisjIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLT0KLS0tLS0KKyNUT0RPOiB0aGVzZSBhcmUgb2YgcXVlc3Rpb25hYmxlIHZh
bHVlIGlmIHdlIGRvbid0IHdhbnQgdG8gZW5hYmxlIHVzZXJzIHRvPQogZGVsZXRlL3B1cmdlIHZp
YSB1cGRhdGUKK2NsYXNzIERlbGV0YWJsZU1vZGVsRGVzZXJpYWxpemVyKCBvYmplY3QgKToKKwor
ICAgIGRlZiBhZGRfZGVzZXJpYWxpemVycyggc2VsZiApOgorICAgICAgICBzZWxmLmRlc2VyaWFs
aXplcnNbICdkZWxldGVkJyBdID0zRCBzZWxmLmRlc2VyaWFsaXplX2RlbGV0ZWQKKworICAgIGRl
ZiBkZXNlcmlhbGl6ZV9kZWxldGVkKCBzZWxmLCB0cmFucywgaXRlbSwga2V5LCB2YWwgKToKKyAg
ICAgICAgbmV3X2RlbGV0ZWQgPTNEIHNlbGYudmFsaWRhdGUuYm9vbCgga2V5LCB2YWwgKQorICAg
ICAgICBpZiBuZXdfZGVsZXRlZCA9M0Q9M0QgaXRlbS5kZWxldGVkOgorICAgICAgICAgICAgcmV0
dXJuIGl0ZW0uZGVsZXRlZAorICAgICAgICAjVE9ETzo/PyBmbHVzaD0zREZhbHNlPworICAgICAg
ICBpZiBuZXdfZGVsZXRlZDoKKyAgICAgICAgICAgIHNlbGYubWdyLmRlbGV0ZSggdHJhbnMsIGl0
ZW0gKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5tZ3IudW5kZWxldGUoIHRyYW5z
LCBpdGVtICkKKyAgICAgICAgcmV0dXJuIGl0ZW0uZGVsZXRlZAorCisKKyMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tPQotLS0tLQorY2xhc3MgUHVyZ2FibGVNb2RlbERlc2VyaWFsaXplciggRGVsZXRhYmxlTW9k
ZWxEZXNlcmlhbGl6ZXIgKToKKworICAgIGRlZiBhZGRfZGVzZXJpYWxpemVycyggc2VsZiApOgor
ICAgICAgICBzZWxmLmRlc2VyaWFsaXplcnNbICdwdXJnZWQnIF0gPTNEIHNlbGYuZGVzZXJpYWxp
emVfcHVyZ2VkCisKKyAgICBkZWYgZGVzZXJpYWxpemVfcHVyZ2VkKCBzZWxmLCB0cmFucywgaXRl
bSwga2V5LCB2YWwgKToKKyAgICAgICAgbmV3X3B1cmdlZCA9M0Qgc2VsZi52YWxpZGF0ZS5ib29s
KCBrZXksIHZhbCApCisgICAgICAgIGlmIG5ld19wdXJnZWQgPTNEPTNEIGl0ZW0ucHVyZ2VkOgor
ICAgICAgICAgICAgcmV0dXJuIGl0ZW0ucHVyZ2VkCisgICAgICAgIGlmIG5ld19wdXJnZWQ6Cisg
ICAgICAgICAgICBzZWxmLm1nci5wdXJnZSggdHJhbnMsIGl0ZW0gKQorICAgICAgICByZXR1cm4g
c2VsZi5wdXJnZWQKKworCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0tLS0KK2NsYXNzIFRhZ2dhYmxl
U2VyaWFsaXplciggb2JqZWN0ICk6CisKKyAgICBkZWYgYWRkX3NlcmlhbGl6ZXJzKCBzZWxmICk6
CisgICAgICAgIHNlbGYuc2VyaWFsaXplcnNbICd0YWdzJyBdID0zRCBzZWxmLnNlcmlhbGl6ZV90
YWdzCisKKyAgICBkZWYgc2VyaWFsaXplX3RhZ3MoIHNlbGYsIHRyYW5zLCBpdGVtLCBrZXkgKToK
KyAgICAgICAgaWYgbm90IGhhc2F0dHIoIGl0ZW0sICd0YWdzJyApOgorICAgICAgICAgICAgcmV0
dXJuIE5vbmUKKworICAgICAgICB0YWdzX3N0cl9saXN0ID0zRCBbXQorICAgICAgICBmb3IgdGFn
IGluIGl0ZW0udGFnczoKKyAgICAgICAgICAgIHRhZ19zdHIgPTNEIHRhZy51c2VyX3RuYW1lCisg
ICAgICAgICAgICBpZiB0YWcudmFsdWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgdGFn
X3N0ciArPTNEICI6IiArIHRhZy51c2VyX3ZhbHVlCisgICAgICAgICAgICB0YWdzX3N0cl9saXN0
LmFwcGVuZCggdGFnX3N0ciApCisgICAgICAgIHByaW50ICdcdCB0YWdzX3N0cl9saXN0JywgdGFn
c19zdHJfbGlzdAorICAgICAgICByZXR1cm4gdGFnc19zdHJfbGlzdAorCisKK2NsYXNzIEFubm90
YXRhYmxlU2VyaWFsaXphYmxlKCBvYmplY3QgKToKKworICAgIGRlZiBhZGRfc2VyaWFsaXplcnMo
IHNlbGYgKToKKyAgICAgICAgc2VsZi5zZXJpYWxpemVyc1sgJ2Fubm90YXRpb24nIF0gPTNEIGxh
bWJkYSB0LCBpLCBrOiB1bmljb2RlKCBzZWxmPQouZ2V0X2Fubm90YXRpb24oIHQsIGkgKSApCisK
KworY2xhc3MgUmF0YWJsZVNlcmlhbGl6YWJsZSggb2JqZWN0ICk6CisKKyAgICBkZWYgYWRkX3Nl
cmlhbGl6ZXJzKCBzZWxmICk6CisgICAgICAgIHNlbGYuc2VyaWFsaXplcnNbICd1c2VyX3JhdGlu
ZycgXSA9M0Qgc2VsZi5zZXJpYWxpemVfdXNlcl9yYXRpbmcKKyAgICAgICAgc2VsZi5zZXJpYWxp
emVyc1sgJ2NvbW11bml0eV9yYXRpbmcnIF0gPTNEIHNlbGYuc2VyaWFsaXplX2NvbW11bml0PQp5
X3JhdGluZworCisgICAgZGVmIHNlcmlhbGl6ZV91c2VyX3JhdGluZyggc2VsZiwgdHJhbnMsIGl0
ZW0sIGtleSApOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgc2VyaWFsaXplX2NvbW11bml0eV9y
YXRpbmcoIHNlbGYsIHRyYW5zLCBpdGVtLCBrZXkgKToKKyAgICAgICAgcGFzcworCgpkaWZmIC1y
IGNjNzE0NzUxNGQ3Nzc5OTk4OTc3N2ZkMjFhYTgxOGU0M2Q5ZjNkMzkgLXIgNzQwZDc1OGMyMjg1
YmVjMTQwZTY5MDE9CjAyNWU5MDZmNTBhMGQ3YTJhIGxpYi9nYWxheHkvbWFuYWdlcnMvY29sbGVj
dGlvbnMucHkKLS0tIGEvbGliL2dhbGF4eS9tYW5hZ2Vycy9jb2xsZWN0aW9ucy5weQorKysgYi9s
aWIvZ2FsYXh5L21hbmFnZXJzL2NvbGxlY3Rpb25zLnB5CkBAIC0zNCwxMCArMzQsMTAgQEAKICAg
ICAgICAgc2VsZi5jb2xsZWN0aW9uX3R5cGVfZGVzY3JpcHRpb25zID0zRCBDb2xsZWN0aW9uVHlw
ZURlc2NyaXB0aW9uRmFjPQp0b3J5KCBzZWxmLnR5cGVfcmVnaXN0cnkgKQogICAgICAgICBzZWxm
Lm1vZGVsID0zRCBhcHAubW9kZWwKICAgICAgICAgc2VsZi5zZWN1cml0eSA9M0QgYXBwLnNlY3Vy
aXR5Ci0gICAgICAgIHNlbGYuaGRhX21hbmFnZXIgPTNEIGhkYXMuSERBTWFuYWdlcigpCi0gICAg
ICAgIHNlbGYuaGlzdG9yeV9tYW5hZ2VyID0zRCBoaXN0b3JpZXMuSGlzdG9yeU1hbmFnZXIoKQor
ICAgICAgICBzZWxmLmhkYV9tYW5hZ2VyID0zRCBoZGFzLkhEQU1hbmFnZXIoIGFwcCApCisgICAg
ICAgIHNlbGYuaGlzdG9yeV9tYW5hZ2VyID0zRCBoaXN0b3JpZXMuSGlzdG9yeU1hbmFnZXIoIGFw
cCApCiAgICAgICAgIHNlbGYudGFnX21hbmFnZXIgPTNEIHRhZ3MuVGFnc01hbmFnZXIoIGFwcCAp
Ci0gICAgICAgIHNlbGYubGRkYV9tYW5hZ2VyID0zRCBsZGRhcy5MRERBTWFuYWdlciggKQorICAg
ICAgICBzZWxmLmxkZGFfbWFuYWdlciA9M0QgbGRkYXMuTEREQU1hbmFnZXIoIGFwcCApCj0yMAog
ICAgIGRlZiBjcmVhdGUoCiAgICAgICAgIHNlbGYsCkBAIC0yNzgsNyArMjc4LDEwIEBACiAgICAg
ZGVmIF9fZ2V0X2hpc3RvcnlfY29sbGVjdGlvbl9pbnN0YW5jZSggc2VsZiwgdHJhbnMsIGlkLCBj
aGVja19vd25lcnNoaT0KcD0zREZhbHNlLCBjaGVja19hY2Nlc3NpYmxlPTNEVHJ1ZSApOgogICAg
ICAgICBpbnN0YW5jZV9pZCA9M0QgaW50KCB0cmFucy5hcHAuc2VjdXJpdHkuZGVjb2RlX2lkKCBp
ZCApICkKICAgICAgICAgY29sbGVjdGlvbl9pbnN0YW5jZSA9M0QgdHJhbnMuc2Ffc2Vzc2lvbi5x
dWVyeSggdHJhbnMuYXBwLm1vZGVsLkhpPQpzdG9yeURhdGFzZXRDb2xsZWN0aW9uQXNzb2NpYXRp
b24gKS5nZXQoIGluc3RhbmNlX2lkICkKLSAgICAgICAgc2VsZi5oaXN0b3J5X21hbmFnZXIuc2Vj
dXJlKCB0cmFucywgY29sbGVjdGlvbl9pbnN0YW5jZS5oaXN0b3J5LCBjPQpoZWNrX293bmVyc2hp
cD0zRGNoZWNrX293bmVyc2hpcCwgY2hlY2tfYWNjZXNzaWJsZT0zRGNoZWNrX2FjY2Vzc2libGUg
KQorICAgICAgICBpZiBjaGVja19vd25lcnNoaXA6CisgICAgICAgICAgICBzZWxmLmhpc3Rvcnlf
bWFuYWdlci5lcnJvcl91bmxlc3Nfb3duZXIoIHRyYW5zLCBjb2xsZWN0aW9uX2lucz0KdGFuY2Uu
aGlzdG9yeSwgdHJhbnMudXNlciApCisgICAgICAgIGlmIGNoZWNrX2FjY2Vzc2libGU6CisgICAg
ICAgICAgICBzZWxmLmhpc3RvcnlfbWFuYWdlci5lcnJvcl91bmxlc3NfYWNjZXNzaWJsZSggdHJh
bnMsIGNvbGxlY3Rpbz0Kbl9pbnN0YW5jZS5oaXN0b3J5LCB0cmFucy51c2VyICkKICAgICAgICAg
cmV0dXJuIGNvbGxlY3Rpb25faW5zdGFuY2UKPTIwCiAgICAgZGVmIF9fZ2V0X2xpYnJhcnlfY29s
bGVjdGlvbl9pbnN0YW5jZSggc2VsZiwgdHJhbnMsIGlkLCBjaGVja19vd25lcnNoaT0KcD0zREZh
bHNlLCBjaGVja19hY2Nlc3NpYmxlPTNEVHJ1ZSApOgoKZGlmZiAtciBjYzcxNDc1MTRkNzc3OTk5
ODk3NzdmZDIxYWE4MThlNDNkOWYzZDM5IC1yIDc0MGQ3NThjMjI4NWJlYzE0MGU2OTAxPQowMjVl
OTA2ZjUwYTBkN2EyYSBsaWIvZ2FsYXh5L21hbmFnZXJzL2RhdGFzZXRzLnB5Ci0tLSAvZGV2L251
bGwKKysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vycy9kYXRhc2V0cy5weQpAQCAtMCwwICsxLDEwMiBA
QAorIiIiCitNYW5hZ2VyIGFuZCBTZXJpYWxpemVyIGZvciBEYXRhc2V0cy4KKyIiIgorZnJvbSBn
YWxheHkgaW1wb3J0IG1vZGVsCitmcm9tIGdhbGF4eSBpbXBvcnQgZXhjZXB0aW9ucworCitpbXBv
cnQgYmFzZQoraW1wb3J0IHVzZXJzCisKK2ltcG9ydCBsb2dnaW5nCitsb2cgPTNEIGxvZ2dpbmcu
Z2V0TG9nZ2VyKCBfX25hbWVfXyApCisKKworIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKK2NsYXNzIERhdGFzZXRNYW5h
Z2VyKCBiYXNlLk1vZGVsTWFuYWdlciwgYmFzZS5BY2Nlc3NpYmxlTW9kZWxJbnRlcmZhY2UsIGJh
PQpzZS5QdXJnYWJsZU1vZGVsSW50ZXJmYWNlICk6CisgICAgbW9kZWxfY2xhc3MgPTNEIG1vZGVs
LkRhdGFzZXQKKyAgICBkZWZhdWx0X29yZGVyX2J5ID0zRCAoIG1vZGVsLkRhdGFzZXQuY3JlYXRl
X3RpbWUsICkKKyAgICBmb3JlaWduX2tleV9uYW1lID0zRCAnZGF0YXNldCcKKworICAgIGRlZiBf
X2luaXRfXyggc2VsZiwgYXBwICk6CisgICAgICAgIHN1cGVyKCBEYXRhc2V0TWFuYWdlciwgc2Vs
ZiApLl9faW5pdF9fKCBhcHAgKQorICAgICAgICBzZWxmLnVzZXJfbWdyID0zRCB1c2Vycy5Vc2Vy
TWFuYWdlciggYXBwICkKKworICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0tIENSVUQKKyAgICBkZWYg
Y3JlYXRlKCBzZWxmLCB0cmFucywgZmx1c2g9M0RUcnVlLCAqKmt3YXJncyApOgorICAgICAgICAj
IGRlZmF1bHQgdG8gTkVXIHN0YXRlIG9uIG5ldyBkYXRhc2V0cworICAgICAgICBrd2FyZ3MudXBk
YXRlKCBkaWN0KCBzdGF0ZT0zRCgga3dhcmdzLmdldCggJ3N0YXRlJywgbW9kZWwuRGF0YXNldC49
CnN0YXRlcy5ORVcgKSApICkgKQorICAgICAgICBkYXRhc2V0ID0zRCBtb2RlbC5EYXRhc2V0KCAq
Kmt3YXJncyApCisgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCBkYXRhc2V0ICkKKyAgICAg
ICAgaWYgZmx1c2g6CisgICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKKyAgICAg
ICAgcmV0dXJuIGRhdGFzZXQKKworICAgICNkZWYgdG9faGRhKCBzZWxmLCB0cmFucywgZGF0YXNl
dCwgaGlzdG9yeSwgKiprd2FyZ3MgKToKKyAgICAjICAgIHBhc3MKKworICAgICNkZWYgdG9fbGRk
YSggc2VsZiwgdHJhbnMsIGRhdGFzZXQsIGxpYnJhcnlfZm9sZGVyLCAqKmt3YXJncyApOgorICAg
ICMgICAgcGFzcworCisgICAgI2RlZiBjb3B5KCBzZWxmICk6CisgICAgIyAgICBwYXNzCisKKyAg
ICBkZWYgcHVyZ2UoIHNlbGYsIHRyYW5zLCBkYXRhc2V0LCBmbHVzaD0zRFRydWUgKToKKyAgICAg
ICAgc2VsZi5lcnJvcl91bmxlc3NfZGF0YXNldF9wdXJnZV9hbGxvd2VkKCB0cmFucywgZGF0YXNl
dCApCisKKyAgICAgICAgIyB0aGUgZm9sbG93aW5nIGFsc28gbWFya3MgZGF0YXNldCBhcyBwdXJn
ZWQgYW5kIGRlbGV0ZWQKKyAgICAgICAgZGF0YXNldC5mdWxsX2RlbGV0ZSgpCisgICAgICAgIHRy
YW5zLnNhX3Nlc3Npb24uYWRkKCBkYXRhc2V0ICkKKyAgICAgICAgaWYgZmx1c2g6CisgICAgICAg
ICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKKyAgICAgICAgcmV0dXJuIGRhdGFzZXQKKwor
ICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0tIGFjY2Vzc2liaWxpdHkKKyAgICAjIGRhdGFzZXRzIGNh
biBpbXBsZW1lbnQgdGhlIGFjY2Vzc2libGUgaW50ZXJmYWNlLCBidXQgYWNjZXNzaWJpbGl0eSBp
PQpzIGNoZWNrZWQgaW4gYW4gZW50aXJlbHkgZGlmZmVyZW50IHdheQorICAgICMgICB0aGFuIHRo
b3NlIHJlc291cmNlcyB0aGF0IGhhdmUgYSB1c2VyIGF0dHJpYnV0ZSAoaGlzdG9yaWVzLCBwYWdl
cyw9CiBldGMuKQorICAgIGRlZiBpc19hY2Nlc3NpYmxlKCBzZWxmLCB0cmFucywgZGF0YXNldCwg
dXNlciApOgorICAgICAgICBpZiBzZWxmLnVzZXJfbWdyLmlzX2FkbWluKCB0cmFucywgdXNlciAp
OgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgc2VsZi5oYXNfYWNjZXNzX3Bl
cm1pc3Npb24oIHRyYW5zLCBkYXRhc2V0LCB1c2VyICk6CisgICAgICAgICAgICByZXR1cm4gVHJ1
ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBoYXNfYWNjZXNzX3Blcm1pc3Npb24o
IHNlbGYsIHRyYW5zLCBkYXRhc2V0LCB1c2VyICk6CisgICAgICAgIHJldHVybiB0cmFucy5hcHAu
c2VjdXJpdHlfYWdlbnQuY2FuX2FjY2Vzc19kYXRhc2V0KCB1c2VyLnJvbGVzLCBkYT0KdGFzZXQg
KQorCisgICAgI2RlZiBnaXZlX2FjY2Vzc19wZXJtaXNzaW9uKCBzZWxmLCB0cmFucywgZGF0YXNl
dCwgdXNlciApOgorICAgICMgICAgcGVybWlzc2lvbiA9M0Qge30KKyAgICAjICAgICNUT0RPOj8/
IGlzIHRoaXMgY29ycmVjdCBhbmQgcmVsaWFibGU/CisgICAgIyAgICB1c2VyX3ByaXZhdGVfcm9s
ZSA9M0Qgc2VsZi51c2VyX21nci5wcml2YXRlX3JvbGUoIHRyYW5zLCB1c2VyICkKKyAgICAjICAg
IHBlcm1pc3Npb25bIHRyYW5zLmFwcC5zZWN1cml0eV9hZ2VudC5wZXJtaXR0ZWRfYWN0aW9ucy5E
QVRBU0VUX0FDPQpDRVNTIF0gPTNEIFsgdXNlcl9wcml2YXRlX3JvbGUgXQorICAgICMgICAgdHJh
bnMuYXBwLnNlY3VyaXR5X2FnZW50LnNldF9kYXRhc2V0X3Blcm1pc3Npb24oIGRhdGFzZXQsIHBl
cm1pc3M9CmlvbiApCisKKworICAgICNkZWYgcmVtb3ZlX2FjY2Vzc19wZXJtaXNzaW9uKCBzZWxm
LCB0cmFucywgZGF0YXNldCwgdXNlciApOgorICAgICMgICAgcGFzcworCisKKyAgICAjZGVmIGhh
c19tYW5hZ2VfcGVybWlzc2lvbiggc2VsZiwgdHJhbnMsIGRhdGFzZXQsIHVzZXIgKToKKyAgICAj
ICAgIHBhc3MKKyAgICAjCisgICAgI2RlZiBnaXZlX21hbmFnZV9wZXJtaXNzaW9uKCBzZWxmLCB0
cmFucywgZGF0YXNldCwgdXNlciApOgorICAgICMgICAgcGFzcworICAgICMKKyAgICAjZGVmIHJl
bW92ZV9tYW5hZ2VfcGVybWlzc2lvbiggc2VsZiwgdHJhbnMsIGRhdGFzZXQsIHVzZXIgKToKKyAg
ICAjICAgIHBhc3MKKworCisgICAgI1RPRE86IGltcGxlbWVudCBhYm92ZSBmb3IgZ3JvdXBzCisK
KyNUT0RPOiBkYXRhdHlwZXM/CisKKworIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKK2NsYXNzIERhdGFzZXRBc3NvY2lh
dGlvbk1hbmFnZXIoIGJhc2UuTW9kZWxNYW5hZ2VyLCBiYXNlLkFjY2Vzc2libGVNb2RlbEluPQp0
ZXJmYWNlLCBiYXNlLlB1cmdhYmxlTW9kZWxJbnRlcmZhY2UgKToKKworICAgIGRlZiBfX2luaXRf
Xyggc2VsZiwgYXBwICk6CisgICAgICAgIHN1cGVyKCBEYXRhc2V0QXNzb2NpYXRpb25NYW5hZ2Vy
LCBzZWxmICkuX19pbml0X18oIGFwcCApCisgICAgICAgIHNlbGYuZGF0YXNldF9tZ3IgPTNEIERh
dGFzZXRNYW5hZ2VyKCBhcHAgKQorCisgICAgZGVmIGlzX2FjY2Vzc2libGUoIHNlbGYsIHRyYW5z
LCBkYXRhc2V0X2Fzc29jLCB1c2VyICk6CisgICAgICAgICMgZGVmZXIgdG8gdGhlIGRhdGFzZXQK
KyAgICAgICAgcmV0dXJuIHNlbGYuZGF0YXNldF9tZ3IuaXNfYWNjZXNzaWJsZSggdHJhbnMsIGRh
dGFzZXRfYXNzb2MuZGF0YXNlPQp0LCB1c2VyICkKCmRpZmYgLXIgY2M3MTQ3NTE0ZDc3Nzk5OTg5
Nzc3ZmQyMWFhODE4ZTQzZDlmM2QzOSAtciA3NDBkNzU4YzIyODViZWMxNDBlNjkwMT0KMDI1ZTkw
NmY1MGEwZDdhMmEgbGliL2dhbGF4eS9tYW5hZ2Vycy9oZGFzLnB5Ci0tLSBhL2xpYi9nYWxheHkv
bWFuYWdlcnMvaGRhcy5weQorKysgYi9saWIvZ2FsYXh5L21hbmFnZXJzL2hkYXMucHkKQEAgLTQs
OTMgKzQsMTA0IEBACiBIaXN0b3J5RGF0YXNldEFzc29jaWF0aW9ucyAoSERBcykgYXJlIGRhdGFz
ZXRzIGNvbnRhaW5lZCBvciBjcmVhdGVkIGluIGEKIGhpc3RvcnkuCiAiIiIKLQorZnJvbSBnYWxh
eHkgaW1wb3J0IG1vZGVsCiBmcm9tIGdhbGF4eSBpbXBvcnQgZXhjZXB0aW9ucwo9MjAKLWZyb20g
Z2FsYXh5Lm1hbmFnZXJzIGltcG9ydCBiYXNlIGFzIG1hbmFnZXJfYmFzZQotZnJvbSBnYWxheHku
bWFuYWdlcnMgaW1wb3J0IGhpc3RvcmllcyBhcyBoaXN0b3J5X21hbmFnZXIKK2ltcG9ydCBiYXNl
CitpbXBvcnQgaGlzdG9yaWVzCitpbXBvcnQgZGF0YXNldHMKPTIwCiBpbXBvcnQgZ2FsYXh5Lndl
YgogaW1wb3J0IGdhbGF4eS5kYXRhdHlwZXMubWV0YWRhdGEKIGZyb20gZ2FsYXh5IGltcG9ydCBv
YmplY3RzdG9yZQo9MjAKLWNsYXNzIEhEQU1hbmFnZXIoIG1hbmFnZXJfYmFzZS5Nb2RlbE1hbmFn
ZXIgKToKKworIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPQo9M0Q9M0Q9M0QKK2NsYXNzIEhEQU1hbmFnZXIoIGRhdGFzZXRzLkRhdGFzZXRB
c3NvY2lhdGlvbk1hbmFnZXIgKToKICAgICAiIiIKICAgICBJbnRlcmZhY2Uvc2VydmljZSBvYmpl
Y3QgZm9yIGludGVyYWN0aW5nIHdpdGggSERBcy4KICAgICAiIiIKKyAgICBtb2RlbF9jbGFzcyA9
M0QgbW9kZWwuSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbgorICAgIGRlZmF1bHRfb3JkZXJfYnkg
PTNEICggbW9kZWwuSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbi5jcmVhdGVfdGltZSwgKQo9MjAK
LSAgICBkZWYgX19pbml0X18oIHNlbGYgKToKKyAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCAp
OgogICAgICAgICAiIiIKICAgICAgICAgU2V0IHVwIGFuZCBpbml0aWFsaXplIG90aGVyIG1hbmFn
ZXJzIG5lZWRlZCBieSBoZGFzLgogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5oaXN0b3JpZXNf
bWdyID0zRCBoaXN0b3J5X21hbmFnZXIuSGlzdG9yeU1hbmFnZXIoKQorICAgICAgICBzdXBlcigg
SERBTWFuYWdlciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQo9MjAKLSAgICBkZWYgZ2V0KCBzZWxm
LCB0cmFucywgdW5lbmNvZGVkX2lkLCBjaGVja19vd25lcnNoaXA9M0RUcnVlLCBjaGVja19hY2Nl
PQpzc2libGU9M0RUcnVlICk6Ci0gICAgICAgICIiIgotICAgICAgICBHZXQgYW4gSERBIGJ5IGl0
cyB1bmVuY29kZWQgZGIgaWQsIGNoZWNraW5nIG93bmVyc2hpcCAodmlhIGl0cyBoaXM9CnRvcnkp
Ci0gICAgICAgIG9yIGFjY2Vzc2liaWxpdHkgKHZpYSBkYXRhc2V0IHNoYXJlcy9wZXJtaXNzaW9u
cykuCi0gICAgICAgICIiIgotICAgICAgICBoZGEgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnko
IHRyYW5zLmFwcC5tb2RlbC5IaXN0b3J5RGF0YXNldEFzc289CmNpYXRpb24gKS5nZXQoIHVuZW5j
b2RlZF9pZCApCi0gICAgICAgIGlmIGhkYSBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgZXhj
ZXB0aW9ucy5PYmplY3ROb3RGb3VuZCgpCi0gICAgICAgIGhkYSA9M0Qgc2VsZi5zZWN1cmUoIHRy
YW5zLCBoZGEsIGNoZWNrX293bmVyc2hpcCwgY2hlY2tfYWNjZXNzaWJsZT0KICkKKyAgICBkZWYg
Y3JlYXRlKCBzZWxmLCB0cmFucywgaGlzdG9yeT0zRE5vbmUsIGRhdGFzZXQ9M0ROb25lLCBmbHVz
aD0zRFRydWUsPQogKiprd2FyZ3MgKToKKyAgICAgICAgaWYgbm90IGRhdGFzZXQ6CisgICAgICAg
ICAgICBrd2FyZ3NbICdjcmVhdGVfZGF0YXNldCcgXSA9M0QgVHJ1ZQorICAgICAgICBoZGEgPTNE
IHN1cGVyKCBIREFNYW5hZ2VyLCBzZWxmICkuY3JlYXRlKCB0cmFucywgZmx1c2g9M0RmbHVzaCwK
KyAgICAgICAgICAgIGhpc3Rvcnk9M0RoaXN0b3J5LCBkYXRhc2V0PTNEZGF0YXNldCwgc2Ffc2Vz
c2lvbj0zRHRyYW5zLnNhX3NlPQpzc2lvbiwgKiprd2FyZ3MgKQorICAgICAgICB0cmFucy5zYV9z
ZXNzaW9uLmFkZCggaGRhICkKKyAgICAgICAgaWYgZmx1c2g6CisgICAgICAgICAgICB0cmFucy5z
YV9zZXNzaW9uLmZsdXNoKCkKICAgICAgICAgcmV0dXJuIGhkYQo9MjAKLSAgICBkZWYgc2VjdXJl
KCBzZWxmLCB0cmFucywgaGRhLCBjaGVja19vd25lcnNoaXA9M0RUcnVlLCBjaGVja19hY2Nlc3Np
YmxlPQo9M0RUcnVlICk6Ci0gICAgICAgICIiIgotICAgICAgICBjaGVjayBvd25lcnNoaXAgKHZp
YSBpdHMgaGlzdG9yeSkgb3IgYWNjZXNzaWJpbGl0eSAodmlhIGRhdGFzZXQKLSAgICAgICAgc2hh
cmVzL3Blcm1pc3Npb25zKS4KLSAgICAgICAgIiIiCi0gICAgICAgICMgYWxsIGl0ZW1zIGFyZSBh
Y2Nlc3NpYmxlIHRvIGFuIGFkbWluCi0gICAgICAgIGlmIHRyYW5zLnVzZXIgYW5kIHRyYW5zLnVz
ZXJfaXNfYWRtaW4oKToKLSAgICAgICAgICAgIHJldHVybiBoZGEKLSAgICAgICAgaWYgY2hlY2tf
b3duZXJzaGlwOgotICAgICAgICAgICAgaGRhID0zRCBzZWxmLmNoZWNrX293bmVyc2hpcCggdHJh
bnMsIGhkYSApCi0gICAgICAgIGlmIGNoZWNrX2FjY2Vzc2libGU6Ci0gICAgICAgICAgICBoZGEg
PTNEIHNlbGYuY2hlY2tfYWNjZXNzaWJsZSggdHJhbnMsIGhkYSApCisgICAgZGVmIGNvcHlfaGRh
KCBzZWxmLCB0cmFucywgaGRhLCBoaXN0b3J5PTNETm9uZSwgKiprd2FyZ3MgKToKKyAgICAgICAg
I1RPRE86Pz8gbm90IHVzaW5nIHRoZSBmb2xsb3dpbmcgYXMgdGhpcyBmbiBkb2VzIG5vdCBzZXQg
aGlzdG9yeSBhPQpuZCBDT1BJRVMgaGlkICh0aGlzIGRvZXNuJ3Qgc2VlbSBjb3JyZWN0KQorICAg
ICAgICAjcmV0dXJuIGhkYS5jb3B5KCkKKyAgICAgICAgY29weSA9M0QgbW9kZWwuSGlzdG9yeURh
dGFzZXRBc3NvY2lhdGlvbigKKyAgICAgICAgICAgIG5hbWUgICAgICAgID0zRCBoZGEubmFtZSwK
KyAgICAgICAgICAgIGluZm8gICAgICAgID0zRCBoZGEuaW5mbywKKyAgICAgICAgICAgIGJsdXJi
ICAgICAgID0zRCBoZGEuYmx1cmIsCisgICAgICAgICAgICBwZWVrICAgICAgICA9M0QgaGRhLnBl
ZWssCisgICAgICAgICAgICB0b29sX3ZlcnNpb249M0QgaGRhLnRvb2xfdmVyc2lvbiwKKyAgICAg
ICAgICAgIGV4dGVuc2lvbiAgID0zRCBoZGEuZXh0ZW5zaW9uLAorICAgICAgICAgICAgZGJrZXkg
ICAgICAgPTNEIGhkYS5kYmtleSwKKyAgICAgICAgICAgIGRhdGFzZXQgICAgID0zRCBoZGEuZGF0
YXNldCwKKyAgICAgICAgICAgIHZpc2libGUgICAgID0zRCBoZGEudmlzaWJsZSwKKyAgICAgICAg
ICAgIGRlbGV0ZWQgICAgID0zRCBoZGEuZGVsZXRlZCwKKyAgICAgICAgICAgIHBhcmVudF9pZCAg
ID0zRCBrd2FyZ3MuZ2V0KCAncGFyZW50X2lkJywgTm9uZSApLAorICAgICAgICApCisgICAgICAg
ICMgYWRkX2RhdGFzZXQgd2lsbCB1cGRhdGUgdGhlIGhpZCB0byB0aGUgbmV4dCBhdmFpbC4gaW4g
aGlzdG9yeQorICAgICAgICBpZiBoaXN0b3J5OgorICAgICAgICAgICAgaGlzdG9yeS5hZGRfZGF0
YXNldCggY29weSApCisKKyAgICAgICAgY29weS5jb3BpZWRfZnJvbV9oaXN0b3J5X2RhdGFzZXRf
YXNzb2NpYXRpb24gPTNEIGhkYQorICAgICAgICBjb3B5LnNldF9zaXplKCkKKworICAgICAgICAj
IE5lZWQgdG8gc2V0IGFmdGVyIGZsdXNoZWQsIGFzIE1ldGFkYXRhRmlsZXMgcmVxdWlyZSBkYXRh
c2V0LmlkCisgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCBjb3B5ICkKKyAgICAgICAgdHJh
bnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCisgICAgICAgIGNvcHkubWV0YWRhdGEgPTNEIGhkYS5tZXRh
ZGF0YQorCisgICAgICAgICMgSW4gc29tZSBpbnN0YW5jZXMgcGVlayByZWxpZXMgb24gZGF0YXNl
dF9pZCwgaS5lLiBnbWFqLnppcCBmb3Igdj0KaWV3aW5nIE1BRnMKKyAgICAgICAgaWYgbm90IGhk
YS5kYXRhdHlwZS5jb3B5X3NhZmVfcGVlazoKKyAgICAgICAgICAgIGNvcHkuc2V0X3BlZWsoKQor
CisgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uZmx1c2goKQorICAgICAgICByZXR1cm4gY29weQor
CisgICAgZGVmIGNvcHlfbGRkYSggc2VsZiwgdHJhbnMsIGhpc3RvcnksIGxkZGEsICoqa3dhcmdz
ICk6CisgICAgICAgIHJldHVybiBsZGRhLnRvX2hpc3RvcnlfZGF0YXNldF9hc3NvY2lhdGlvbigg
aGlzdG9yeSwgYWRkX3RvX2hpc3Rvcj0KeT0zRFRydWUgKQorCisjICAgIGRlZiBieV9oaXN0b3J5
X2lkKCBzZWxmLCB0cmFucywgaGlzdG9yeV9pZCwgZmlsdGVycz0zRE5vbmUsICoqa3dhcmdzID0K
KToKKyMgICAgICAgIGhpc3RvcnlfaWRfZmlsdGVyID0zRCBzZWxmLm1vZGVsX2NsYXNzLmhpc3Rv
cnlfaWQgPTNEPTNEIGhpc3RvcnlfPQppZAorIyAgICAgICAgZmlsdGVycyA9M0Qgc2VsZi5fbXVu
Z2VfZmlsdGVycyggaGlzdG9yeV9pZF9maWx0ZXIsIGZpbHRlcnMgKQorIyAgICAgICAgcmV0dXJu
IHNlbGYubGlzdCggdHJhbnMsIGZpbHRlcnM9M0RmaWx0ZXJzLCAqKmt3YXJncyApCisjCisjICAg
ICNkZWYgYnlfaGlzdG9yeSggc2VsZiwgdHJhbnMsIGhpc3RvcnksIGZpbHRlcnM9M0ROb25lLCAq
Kmt3YXJncyApOgorIyAgICAjICAgIHJldHVybiBoaXN0b3J5LmRhdGFzZXRzCisKKyAgICBkZWYg
cHVyZ2UoIHNlbGYsIHRyYW5zLCBoZGEgKToKKyAgICAgICAgc2VsZi5lcnJvcl91bmxlc3NfZGF0
YXNldF9wdXJnZV9hbGxvd2VkKCB0cmFucywgaGRhICkKKyAgICAgICAgc3VwZXIoIEhEQU1hbmFn
ZXIsIHNlbGYgKS5wdXJnZSggdHJhbnMsIGhkYSwgZmx1c2g9M0RUcnVlICkKKworICAgICAgICAj
IHNpZ25hbCB0byBzdG9wIHRoZSBjcmVhdGluZyBqb2I/CisgICAgICAgIGlmIGhkYS5jcmVhdGlu
Z19qb2JfYXNzb2NpYXRpb25zOgorICAgICAgICAgICAgam9iID0zRCBoZGEuY3JlYXRpbmdfam9i
X2Fzc29jaWF0aW9uc1swXS5qb2IKKyAgICAgICAgICAgIGpvYi5tYXJrX2RlbGV0ZWQoIHNlbGYu
YXBwLmNvbmZpZy50cmFja19qb2JzX2luX2RhdGFiYXNlICkKKyAgICAgICAgICAgIHNlbGYuYXBw
LmpvYl9tYW5hZ2VyLmpvYl9zdG9wX3F1ZXVlLnB1dCggam9iLmlkICkKKworICAgICAgICAjIG1v
cmUgaW1wb3J0YW50bHksIHB1cmdlIGRhdGFzZXQgYXMgd2VsbAorICAgICAgICBpZiBoZGEuZGF0
YXNldC51c2VyX2Nhbl9wdXJnZToKKyAgICAgICAgICAgIHNlbGYuZGF0YXNldF9tZ3IucHVyZ2Uo
IHRyYW5zLCBoZGEuZGF0YXNldCApCiAgICAgICAgIHJldHVybiBoZGEKPTIwCi0gICAgZGVmIGNh
bl9hY2Nlc3NfZGF0YXNldCggc2VsZiwgdHJhbnMsIGhkYSApOgotICAgICAgICAiIiIKLSAgICAg
ICAgVXNlIHNlY3VyaXR5IGFnZW50IHRvIHNlZSBpZiBjdXJyZW50IHVzZXIgaGFzIGFjY2VzcyB0
byBkYXRhc2V0LgotICAgICAgICAiIiIKLSAgICAgICAgY3VycmVudF91c2VyX3JvbGVzID0zRCB0
cmFucy5nZXRfY3VycmVudF91c2VyX3JvbGVzKCkKLSAgICAgICAgcmV0dXJuIHRyYW5zLmFwcC5z
ZWN1cml0eV9hZ2VudC5jYW5fYWNjZXNzX2RhdGFzZXQoIGN1cnJlbnRfdXNlcl9yPQpvbGVzLCBo
ZGEuZGF0YXNldCApCi0KLSAgICAjVE9ETzogaXNfb3duZXIsIGlzX2FjY2Vzc2libGUKLQotICAg
IGRlZiBjaGVja19vd25lcnNoaXAoIHNlbGYsIHRyYW5zLCBoZGEgKToKLSAgICAgICAgIiIiCi0g
ICAgICAgIFVzZSBoaXN0b3J5IHRvIHNlZSBpZiBjdXJyZW50IHVzZXIgb3ducyBIREEuCi0gICAg
ICAgICIiIgotICAgICAgICBpZiBub3QgdHJhbnMudXNlcjoKLSAgICAgICAgICAgICNpZiBoZGEu
aGlzdG9yeSA9M0Q9M0QgdHJhbnMuaGlzdG9yeToKLSAgICAgICAgICAgICMgICAgcmV0dXJuIGhk
YQotICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5BdXRoZW50aWNhdGlvblJlcXVpcmVkKCAi
TXVzdCBiZSBsb2dnZWQgaW4gdG89CiBtYW5hZ2UgR2FsYXh5IGRhdGFzZXRzIiwgdHlwZT0zRCdl
cnJvcicgKQotICAgICAgICBpZiB0cmFucy51c2VyX2lzX2FkbWluKCk6Ci0gICAgICAgICAgICBy
ZXR1cm4gaGRhCi0gICAgICAgICMgY2hlY2sgZm9yIG93bmVyc2hpcCBvZiB0aGUgY29udGFpbmlu
ZyBoaXN0b3J5IGFuZCBhY2Nlc3NpYmlsaXR5ID0Kb2YgdGhlIHVuZGVybHlpbmcgZGF0YXNldAot
ICAgICAgICBpZiggc2VsZi5oaXN0b3JpZXNfbWdyLmlzX293bmVyKCB0cmFucywgaGRhLmhpc3Rv
cnkgKQotICAgICAgICAgICAgICAgIGFuZCBzZWxmLmNhbl9hY2Nlc3NfZGF0YXNldCggdHJhbnMs
IGhkYSApICk6Ci0gICAgICAgICAgICByZXR1cm4gaGRhCi0gICAgICAgIHJhaXNlIGV4Y2VwdGlv
bnMuSXRlbU93bmVyc2hpcEV4Y2VwdGlvbigKLSAgICAgICAgICAgICJIaXN0b3J5RGF0YXNldEFz
c29jaWF0aW9uIGlzIG5vdCBvd25lZCBieSB0aGUgY3VycmVudCB1c2VyIiwgPQp0eXBlPTNEJ2Vy
cm9yJyApCi0KLSAgICBkZWYgY2hlY2tfYWNjZXNzaWJsZSggc2VsZiwgdHJhbnMsIGhkYSApOgot
ICAgICAgICAiIiIKLSAgICAgICAgUmFpc2UgZXJyb3IgaWYgSERBIGlzIG5vdCBhY2Nlc3NpYmxl
LgotICAgICAgICAiIiIKLSAgICAgICAgaWYgdHJhbnMudXNlciBhbmQgdHJhbnMudXNlcl9pc19h
ZG1pbigpOgotICAgICAgICAgICAgcmV0dXJuIGhkYQotICAgICAgICAjIGNoZWNrIGZvciBhY2Nl
c3Mgb2YgdGhlIGNvbnRhaW5pbmcgaGlzdG9yeS4uLgotICAgICAgICBzZWxmLmhpc3Rvcmllc19t
Z3IuY2hlY2tfYWNjZXNzaWJsZSggdHJhbnMsIGhkYS5oaXN0b3J5ICkKLSAgICAgICAgIyAuLi50
aGVuIHRoZSB1bmRlcmx5aW5nIGRhdGFzZXQKLSAgICAgICAgaWYgc2VsZi5jYW5fYWNjZXNzX2Rh
dGFzZXQoIHRyYW5zLCBoZGEgKToKLSAgICAgICAgICAgIHJldHVybiBoZGEKLSAgICAgICAgcmFp
c2UgZXhjZXB0aW9ucy5JdGVtQWNjZXNzaWJpbGl0eUV4Y2VwdGlvbigKLSAgICAgICAgICAgICJI
aXN0b3J5RGF0YXNldEFzc29jaWF0aW9uIGlzIG5vdCBhY2Nlc3NpYmxlIHRvIHRoZSBjdXJyZW50
IHVzPQplciIsIHR5cGU9M0QnZXJyb3InICkKLQotICAgIGRlZiBlcnJfaWZfdXBsb2FkaW5nKCBz
ZWxmLCB0cmFucywgaGRhICk6CisgICAgZGVmIGVycm9yX2lmX3VwbG9hZGluZyggc2VsZiwgdHJh
bnMsIGhkYSApOgogICAgICAgICAiIiIKICAgICAgICAgUmFpc2UgZXJyb3IgaWYgSERBIGlzIHN0
aWxsIHVwbG9hZGluZy4KICAgICAgICAgIiIiCkBAIC05OCw2ICsxMDksOCBAQAogICAgICAgICAg
ICAgcmFpc2UgZXhjZXB0aW9ucy5Db25mbGljdCggIlBsZWFzZSB3YWl0IHVudGlsIHRoaXMgZGF0
YXNldCBmaW49CmlzaGVzIHVwbG9hZGluZyIgKQogICAgICAgICByZXR1cm4gaGRhCj0yMAorICAg
ICMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi49Ci4uLi4uIHNlcmlhbGl6YXRpb24KKyAgICAjVE9ETzogbW92ZSBpbnRv
IHNlcmlhbGl6ZXIgYmVsb3cKICAgICBkZWYgZ2V0X2hkYV9kaWN0KCBzZWxmLCB0cmFucywgaGRh
ICk6CiAgICAgICAgICIiIgogICAgICAgICBSZXR1cm4gZnVsbCBkZXRhaWxzIG9mIHRoaXMgSERB
IGluIGRpY3Rpb25hcnkgZm9ybS4KQEAgLTIzMiwxMCArMjQ1LDM5MyBAQAo9MjAKICAgICAgICAg
cmV0dXJuIGRpc3BsYXlfYXBwcwo9MjAKKyAgICAjZGVmIGdldF9kYXRhc2V0KCBzZWxmLCB0cmFu
cywgZGF0YXNldF9pZCwgY2hlY2tfb3duZXJzaGlwPTNEVHJ1ZSwgY2hlPQpja19hY2Nlc3NpYmxl
PTNERmFsc2UsIGNoZWNrX3N0YXRlPTNEVHJ1ZSApOgorICAgICMgICAgIiIiCisgICAgIyAgICBH
ZXQgYW4gSERBIG9iamVjdCBieSBpZCBwZXJmb3JtaW5nIHNlY3VyaXR5IGNoZWNrcyB1c2luZwor
ICAgICMgICAgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24uCisgICAgIyAgICAiIiIKKyAgICAjICAg
IHRyeToKKyAgICAjICAgICAgICBkYXRhc2V0X2lkID0zRCB0cmFucy5zZWN1cml0eS5kZWNvZGVf
aWQoIGRhdGFzZXRfaWQgKQorICAgICMgICAgZXhjZXB0ICggQXR0cmlidXRlRXJyb3IsIFR5cGVF
cnJvciApOgorICAgICMgICAgICAgICMgREVQUkVDQVRJT046IFdlIHN0aWxsIHN1cHBvcnQgdW5l
bmNvZGVkIGlkcyBmb3IgYmFja3dhcmQgY289Cm1wYXRpYmlsaXR5CisgICAgIyAgICAgICAgdHJ5
OgorICAgICMgICAgICAgICAgICBkYXRhc2V0X2lkID0zRCBpbnQoIGRhdGFzZXRfaWQgKQorICAg
ICMgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICMgICAgICAgICAgICByYWlzZSBIVFRQ
QmFkUmVxdWVzdCggIkludmFsaWQgZGF0YXNldCBpZDogJXMuIiAlIHN0ciggZGE9CnRhc2V0X2lk
ICkgKQorICAgICMKKyAgICAjICAgIHRyeToKKyAgICAjICAgICAgICBkYXRhID0zRCB0cmFucy5z
YV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5hcHAubW9kZWwuSGlzdG9yeURhdGFzPQpldEFzc29jaWF0
aW9uICkuZ2V0KCBpbnQoIGRhdGFzZXRfaWQgKSApCisgICAgIyAgICBleGNlcHQ6CisgICAgIyAg
ICAgICAgcmFpc2UgSFRUUFJlcXVlc3RSYW5nZU5vdFNhdGlzZmlhYmxlKCAiSW52YWxpZCBkYXRh
c2V0IGlkOiAlcz0KLiIgJSBzdHIoIGRhdGFzZXRfaWQgKSApCisgICAgIworICAgICMgICAgaWYg
Y2hlY2tfb3duZXJzaGlwOgorICAgICMgICAgICAgICMgVmVyaWZ5IG93bmVyc2hpcC4KKyAgICAj
ICAgICAgICB1c2VyID0zRCB0cmFucy5nZXRfdXNlcigpCisgICAgIyAgICAgICAgaWYgbm90IHVz
ZXI6CisgICAgIyAgICAgICAgICAgIGVycm9yKCAiTXVzdCBiZSBsb2dnZWQgaW4gdG8gbWFuYWdl
IEdhbGF4eSBpdGVtcyIgKQorICAgICMgICAgICAgIGlmIGRhdGEuaGlzdG9yeS51c2VyICE9M0Qg
dXNlcjoKKyAgICAjICAgICAgICAgICAgZXJyb3IoICIlcyBpcyBub3Qgb3duZWQgYnkgY3VycmVu
dCB1c2VyIiAlIGRhdGEuX19jbGFzc19fPQouX19uYW1lX18gKQorICAgICMKKyAgICAjICAgIGlm
IGNoZWNrX2FjY2Vzc2libGU6CisgICAgIyAgICAgICAgY3VycmVudF91c2VyX3JvbGVzID0zRCB0
cmFucy5nZXRfY3VycmVudF91c2VyX3JvbGVzKCkKKyAgICAjCisgICAgIyAgICAgICAgaWYgbm90
IHRyYW5zLmFwcC5zZWN1cml0eV9hZ2VudC5jYW5fYWNjZXNzX2RhdGFzZXQoIGN1cnJlbnRfdT0K
c2VyX3JvbGVzLCBkYXRhLmRhdGFzZXQgKToKKyAgICAjICAgICAgICAgICAgZXJyb3IoICJZb3Ug
YXJlIG5vdCBhbGxvd2VkIHRvIGFjY2VzcyB0aGlzIGRhdGFzZXQiICkKKyAgICAjCisgICAgIyAg
ICAgICAgaWYgY2hlY2tfc3RhdGUgYW5kIGRhdGEuc3RhdGUgPTNEPTNEIHRyYW5zLm1vZGVsLkRh
dGFzZXQuc3RhdD0KZXMuVVBMT0FEOgorICAgICMgICAgICAgICAgICByZXR1cm4gdHJhbnMuc2hv
d19lcnJvcl9tZXNzYWdlKCAiUGxlYXNlIHdhaXQgdW50aWwgdGhpcyA9CmRhdGFzZXQgZmluaXNo
ZXMgdXBsb2FkaW5nICIKKyAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICArICJiZWZvcmUgYXR0ZW1wdGluZyB0PQpvIHZpZXcgaXQuIiApCisgICAgIyAg
ICByZXR1cm4gZGF0YQorICAgICMKKyAgICAjZGVmIGdldF9oaXN0b3J5X2RhdGFzZXRfYXNzb2Np
YXRpb24oIHNlbGYsIHRyYW5zLCBoaXN0b3J5LCBkYXRhc2V0X2lkLAorICAgICMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfb3duZXJzaGlwPTNEVHJ1ZSwgY2hlY2tf
YWM9CmNlc3NpYmxlPTNERmFsc2UsIGNoZWNrX3N0YXRlPTNERmFsc2UgKToKKyAgICAjICAgICIi
IgorICAgICMgICAgR2V0IGEgSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbiBmcm9tIHRoZSBkYXRh
YmFzZSBieSBpZCwgdmVyaWZ5aW49Cmcgb3duZXJzaGlwLgorICAgICMgICAgIiIiCisgICAgIyAg
ICAjVE9ETzogZHVwbGljYXRlIG9mIGFib3ZlPyBhbGlhcyB0byBhYm92ZSAob3IgdmlzLXZlcnNh
KQorICAgICMgICAgc2VsZi5zZWN1cml0eV9jaGVjayggdHJhbnMsIGhpc3RvcnksIGNoZWNrX293
bmVyc2hpcD0zRGNoZWNrX293bmU9CnJzaGlwLCBjaGVja19hY2Nlc3NpYmxlPTNEY2hlY2tfYWNj
ZXNzaWJsZSApCisgICAgIyAgICBoZGEgPTNEIHNlbGYuZ2V0X29iamVjdCggdHJhbnMsIGRhdGFz
ZXRfaWQsICdIaXN0b3J5RGF0YXNldEFzc29jaT0KYXRpb24nLAorICAgICMgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjaGVja19vd25lcnNoaXA9M0RGYWxzZSwgY2hlY2tfYWNjZXNzaWJsZT0K
PTNERmFsc2UgKQorICAgICMKKyAgICAjICAgIGlmIGNoZWNrX2FjY2Vzc2libGU6CisgICAgIyAg
ICAgICAgaWYoIG5vdCB0cmFucy51c2VyX2lzX2FkbWluKCkKKyAgICAjICAgICAgICBhbmQgbm90
IHRyYW5zLmFwcC5zZWN1cml0eV9hZ2VudC5jYW5fYWNjZXNzX2RhdGFzZXQoIHRyYW5zLmdlPQp0
X2N1cnJlbnRfdXNlcl9yb2xlcygpLCBoZGEuZGF0YXNldCApICk6CisgICAgIyAgICAgICAgICAg
IGVycm9yKCAiWW91IGFyZSBub3QgYWxsb3dlZCB0byBhY2Nlc3MgdGhpcyBkYXRhc2V0IiApCisg
ICAgIworICAgICMgICAgICAgIGlmIGNoZWNrX3N0YXRlIGFuZCBoZGEuc3RhdGUgPTNEPTNEIHRy
YW5zLm1vZGVsLkRhdGFzZXQuc3RhdGU9CnMuVVBMT0FEOgorICAgICMgICAgICAgICAgICBlcnJv
ciggIlBsZWFzZSB3YWl0IHVudGlsIHRoaXMgZGF0YXNldCBmaW5pc2hlcyB1cGxvYWRpbmc9CiBi
ZWZvcmUgYXR0ZW1wdGluZyB0byB2aWV3IGl0LiIgKQorICAgICMgICAgcmV0dXJuIGhkYQorICAg
ICMKKyAgICAjZGVmIGdldF9oaXN0b3J5X2RhdGFzZXRfYXNzb2NpYXRpb25fZnJvbV9pZHMoIHNl
bGYsIHRyYW5zLCBpZCwgaGlzdG9yPQp5X2lkICk6CisgICAgIyAgICAjIEp1c3QgdG8gZWNobyBv
dGhlciBUT0RPcywgdGhlcmUgc2VlbXMgdG8gYmUgc29tZSBvdmVybGFwIGhlcmUsID0Kc3RpbGwK
KyAgICAjICAgICMgdGhpcyBibG9jayBhcHBlYXJzIG11bHRpcGxlIHBsYWNlcyAoZGF0YXNldCBz
aG93LCBoaXN0b3J5X2NvbnRlPQpudHMKKyAgICAjICAgICMgc2hvdywgdXBjb21pbmcgaGlzdG9y
eSBqb2Igc2hvdykgc28gSSBhbSBjb25zb2xvZGF0aW5nIGl0IGhlcmUuCisgICAgIyAgICAjIFNv
bWVvbmUgc21hcnRlciB0aGFuIG1lIHNob3VsZCBkZXRlcm1pbmUgaWYgdGhlcmUgaXMgc29tZSBy
ZWR1bj0KZGFuY3kgaGVyZS4KKyAgICAjCisgICAgIyAgICAjIGZvciBhbm9uIHVzZXJzOgorICAg
ICMgICAgI1RPRE86IGNoZWNrIGxvZ2luX3JlcXVpcmVkPworICAgICMgICAgI1RPRE86IHRoaXMg
aXNuJ3QgYWN0dWFsbHkgbW9zdF9yZWNlbnRseV91c2VkIChhcyBkZWZpbmVkIGluIGhpc3Q9Cm9y
aWVzKQorICAgICMgICAgaWYoICggdHJhbnMudXNlciA9M0Q9M0QgTm9uZSApCisgICAgIyAgICBh
bmQgKCBoaXN0b3J5X2lkID0zRD0zRCB0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHRyYW5zLmhp
c3RvcnkuaT0KZCApICkgKToKKyAgICAjICAgICAgICBoaXN0b3J5ID0zRCB0cmFucy5oaXN0b3J5
CisgICAgIyAgICAgICAgI1RPRE86IGRhdGFzZXQvaGRhIGJ5IGlkIChmcm9tIGhpc3RvcnkpIE9S
IGNoZWNrX293bmVyc2hpcCBmbz0KciBhbm9uIHVzZXIKKyAgICAjICAgICAgICBoZGEgPTNEIHNl
bGYuZ2V0X2hpc3RvcnlfZGF0YXNldF9hc3NvY2lhdGlvbiggdHJhbnMsIGhpc3RvcnksPQogaWQs
CisgICAgIyAgICAgICAgICAgIGNoZWNrX293bmVyc2hpcD0zREZhbHNlLCBjaGVja19hY2Nlc3Np
YmxlPTNEVHJ1ZSApCisgICAgIyAgICBlbHNlOgorICAgICMgICAgICAgICNUT0RPOiBkbyB3ZSBy
ZWFsbHkgbmVlZCB0aGUgaGlzdG9yeT8KKyAgICAjICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmdl
dF9oaXN0b3J5KCB0cmFucywgaGlzdG9yeV9pZCwKKyAgICAjICAgICAgICAgICAgY2hlY2tfb3du
ZXJzaGlwPTNERmFsc2UsIGNoZWNrX2FjY2Vzc2libGU9M0RUcnVlLCBkZWxldGVkPQo9M0RGYWxz
ZSApCisgICAgIyAgICAgICAgaGRhID0zRCBzZWxmLmdldF9oaXN0b3J5X2RhdGFzZXRfYXNzb2Np
YXRpb24oIHRyYW5zLCBoaXN0b3J5LD0KIGlkLAorICAgICMgICAgICAgICAgICBjaGVja19vd25l
cnNoaXA9M0RGYWxzZSwgY2hlY2tfYWNjZXNzaWJsZT0zRFRydWUgKQorICAgICMgICAgcmV0dXJu
IGhkYQorICAgICMKKyAgICAjZGVmIGdldF9oZGFfbGlzdCggc2VsZiwgdHJhbnMsIGhkYV9pZHMs
IGNoZWNrX293bmVyc2hpcD0zRFRydWUsIGNoZWNrPQpfYWNjZXNzaWJsZT0zREZhbHNlLCBjaGVj
a19zdGF0ZT0zRFRydWUgKToKKyAgICAjICAgICIiIgorICAgICMgICAgUmV0dXJucyBvbmUgb3Ig
bW9yZSBkYXRhc2V0cyBpbiBhIGxpc3QuCisgICAgIworICAgICMgICAgSWYgYSBkYXRhc2V0IGlz
IG5vdCBmb3VuZCBvciBpcyBpbmFjY2Vzc2libGUgdG8gdHJhbnMudXNlciwKKyAgICAjICAgIGFk
ZCBOb25lIGluIGl0cyBwbGFjZSBpbiB0aGUgbGlzdC4KKyAgICAjICAgICIiIgorICAgICMgICAg
IyBwcmVjb25kdGlvbjogZGF0YXNldF9pZHMgaXMgYSBsaXN0IG9mIGVuY29kZWQgaWQgc3RyaW5n
cworICAgICMgICAgaGRhcyA9M0QgW10KKyAgICAjICAgIGZvciBpZCBpbiBoZGFfaWRzOgorICAg
ICMgICAgICAgIGhkYSA9M0QgTm9uZQorICAgICMgICAgICAgIHRyeToKKyAgICAjICAgICAgICAg
ICAgaGRhID0zRCBzZWxmLmdldF9kYXRhc2V0KCB0cmFucywgaWQsCisgICAgIyAgICAgICAgICAg
ICAgICBjaGVja19vd25lcnNoaXA9M0RjaGVja19vd25lcnNoaXAsCisgICAgIyAgICAgICAgICAg
ICAgICBjaGVja19hY2Nlc3NpYmxlPTNEY2hlY2tfYWNjZXNzaWJsZSwKKyAgICAjICAgICAgICAg
ICAgICAgIGNoZWNrX3N0YXRlPTNEY2hlY2tfc3RhdGUgKQorICAgICMgICAgICAgIGV4Y2VwdCBF
eGNlcHRpb246CisgICAgIyAgICAgICAgICAgIHBhc3MKKyAgICAjICAgICAgICBoZGFzLmFwcGVu
ZCggaGRhICkKKyAgICAjICAgIHJldHVybiBoZGFzCisgICAgIworICAgICNkZWYgZ2V0X2RhdGEo
IHNlbGYsIGRhdGFzZXQsIHByZXZpZXc9M0RUcnVlICk6CisgICAgIyAgICAiIiIKKyAgICAjICAg
IEdldHMgYSBkYXRhc2V0J3MgZGF0YS4KKyAgICAjICAgICIiIgorICAgICMgICAgIyBHZXQgZGF0
YSBmcm9tIGZpbGUsIHRydW5jYXRpbmcgaWYgbmVjZXNzYXJ5LgorICAgICMgICAgdHJ1bmNhdGVk
ID0zRCBGYWxzZQorICAgICMgICAgZGF0YXNldF9kYXRhID0zRCBOb25lCisgICAgIyAgICBpZiBv
cy5wYXRoLmV4aXN0cyggZGF0YXNldC5maWxlX25hbWUgKToKKyAgICAjICAgICAgICBpZiBpc2lu
c3RhbmNlKCBkYXRhc2V0LmRhdGF0eXBlLCBUZXh0ICk6CisgICAgIyAgICAgICAgICAgIG1heF9w
ZWVrX3NpemUgPTNEIDEwMDAwMDAgIyAxIE1CCisgICAgIyAgICAgICAgICAgIGlmIHByZXZpZXcg
YW5kIG9zLnN0YXQoIGRhdGFzZXQuZmlsZV9uYW1lICkuc3Rfc2l6ZSA+IG1heD0KX3BlZWtfc2l6
ZToKKyAgICAjICAgICAgICAgICAgICAgIGRhdGFzZXRfZGF0YSA9M0Qgb3BlbiggZGF0YXNldC5m
aWxlX25hbWUgKS5yZWFkKG1heF9wPQplZWtfc2l6ZSkKKyAgICAjICAgICAgICAgICAgICAgIHRy
dW5jYXRlZCA9M0QgVHJ1ZQorICAgICMgICAgICAgICAgICBlbHNlOgorICAgICMgICAgICAgICAg
ICAgICAgZGF0YXNldF9kYXRhID0zRCBvcGVuKCBkYXRhc2V0LmZpbGVfbmFtZSApLnJlYWQobWF4
X3A9CmVla19zaXplKQorICAgICMgICAgICAgICAgICAgICAgdHJ1bmNhdGVkID0zRCBGYWxzZQor
ICAgICMgICAgICAgIGVsc2U6CisgICAgIyAgICAgICAgICAgICMgRm9yIG5vdywgY2Fubm90IGdl
dCBkYXRhIGZyb20gbm9uLXRleHQgZGF0YXNldHMuCisgICAgIyAgICAgICAgICAgIGRhdGFzZXRf
ZGF0YSA9M0QgTm9uZQorICAgICMgICAgcmV0dXJuIHRydW5jYXRlZCwgZGF0YXNldF9kYXRhCisg
ICAgIworICAgICNkZWYgY2hlY2tfZGF0YXNldF9zdGF0ZSggc2VsZiwgdHJhbnMsIGRhdGFzZXQg
KToKKyAgICAjICAgICIiIgorICAgICMgICAgUmV0dXJucyBhIG1lc3NhZ2UgaWYgZGF0YXNldCBp
cyBub3QgcmVhZHkgdG8gYmUgdXNlZCBpbiB2aXN1YWxpemE9CnRpb24uCisgICAgIyAgICAiIiIK
KyAgICAjICAgIGlmIG5vdCBkYXRhc2V0OgorICAgICMgICAgICAgIHJldHVybiBkYXRhc2V0LmNv
bnZlcnNpb25fbWVzc2FnZXMuTk9fREFUQQorICAgICMgICAgaWYgZGF0YXNldC5zdGF0ZSA9M0Q9
M0QgdHJhbnMuYXBwLm1vZGVsLkpvYi5zdGF0ZXMuRVJST1I6CisgICAgIyAgICAgICAgcmV0dXJu
IGRhdGFzZXQuY29udmVyc2lvbl9tZXNzYWdlcy5FUlJPUgorICAgICMgICAgaWYgZGF0YXNldC5z
dGF0ZSAhPTNEIHRyYW5zLmFwcC5tb2RlbC5Kb2Iuc3RhdGVzLk9LOgorICAgICMgICAgICAgIHJl
dHVybiBkYXRhc2V0LmNvbnZlcnNpb25fbWVzc2FnZXMuUEVORElORworICAgICMgICAgcmV0dXJu
IE5vbmUKKyAgICAjCisgICAgI2RlZiBnZXRfaGRhX2RpY3QoIHNlbGYsIHRyYW5zLCBoZGEgKToK
KyAgICAjICAgICIiIlJldHVybiBmdWxsIGRldGFpbHMgb2YgdGhpcyBIREEgaW4gZGljdGlvbmFy
eSBmb3JtLgorICAgICMgICAgIiIiCisgICAgIyAgICAjcHJlY29uZGl0aW9uOiB0aGUgdXNlcidz
IGFjY2VzcyB0byB0aGlzIGhkYSBoYXMgYWxyZWFkeSBiZWVuIGNoZT0KY2tlZAorICAgICMgICAg
I1RPRE86Pz8gcG9zdGNvbmRpdGlvbjogYWxsIGlkcyBhcmUgZW5jb2RlZCAoaXMgdGhpcyByZWFs
bHkgd2hhdCA9CndlIHdhbnQgYXQgdGhpcyBsZXZlbD8pCisgICAgIyAgICBleHBvc2VfZGF0YXNl
dF9wYXRoID0zRCB0cmFucy51c2VyX2lzX2FkbWluKCkgb3IgdHJhbnMuYXBwLmNvbmZpZz0KLmV4
cG9zZV9kYXRhc2V0X3BhdGgKKyAgICAjICAgIGhkYV9kaWN0ID0zRCBoZGEudG9fZGljdCggdmll
dz0zRCdlbGVtZW50JywgZXhwb3NlX2RhdGFzZXRfcGF0aD0KPTNEZXhwb3NlX2RhdGFzZXRfcGF0
aCApCisgICAgIyAgICBoZGFfZGljdFsgJ2FwaV90eXBlJyBdID0zRCAiZmlsZSIKKyAgICAjCisg
ICAgIyAgICAjIEFkZCBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMgdGhhdCBkZXBlbmQgb24gdHJhbnMg
Y2FuIGhlbmNlIG11c3QgYj0KZSBhZGRlZCBoZXJlIHJhdGhlciB0aGFuIGF0IHRoZSBtb2RlbCBs
ZXZlbC4KKyAgICAjICAgIGNhbl9hY2Nlc3NfaGRhID0zRCB0cmFucy5hcHAuc2VjdXJpdHlfYWdl
bnQuY2FuX2FjY2Vzc19kYXRhc2V0KCB0PQpyYW5zLmdldF9jdXJyZW50X3VzZXJfcm9sZXMoKSwg
aGRhLmRhdGFzZXQgKQorICAgICMgICAgY2FuX2FjY2Vzc19oZGEgPTNEICggdHJhbnMudXNlcl9p
c19hZG1pbigpIG9yIGNhbl9hY2Nlc3NfaGRhICkKKyAgICAjICAgIGlmIG5vdCBjYW5fYWNjZXNz
X2hkYToKKyAgICAjICAgICAgICByZXR1cm4gc2VsZi5nZXRfaW5hY2Nlc3NpYmxlX2hkYV9kaWN0
KCB0cmFucywgaGRhICkKKyAgICAjICAgIGhkYV9kaWN0WyAnYWNjZXNzaWJsZScgXSA9M0QgVHJ1
ZQorICAgICMKKyAgICAjICAgICNUT0RPOiBJJ20gdW5jbGVhciBhcyB0byB3aGljaCBhY2Nlc3Mg
cGF0dGVybiBpcyByaWdodAorICAgICMgICAgaGRhX2RpY3RbICdhbm5vdGF0aW9uJyBdID0zRCBo
ZGEuZ2V0X2l0ZW1fYW5ub3RhdGlvbl9zdHIoIHRyYW5zLnM9CmFfc2Vzc2lvbiwgdHJhbnMudXNl
ciwgaGRhICkKKyAgICAjICAgICNhbm5vdGF0aW9uID0zRCBnZXRhdHRyKCBoZGEsICdhbm5vdGF0
aW9uJywgaGRhLmdldF9pdGVtX2Fubm90YXRpPQpvbl9zdHIoIHRyYW5zLnNhX3Nlc3Npb24sIHRy
YW5zLnVzZXIsIGhkYSApICkKKyAgICAjCisgICAgIyAgICAjIC0tLS0gcmV0dXJuIGhlcmUgaWYg
ZGVsZXRlZCBBTkQgcHVyZ2VkIE9SIGNhbid0IGFjY2VzcworICAgICMgICAgcHVyZ2VkID0zRCAo
IGhkYS5wdXJnZWQgb3IgaGRhLmRhdGFzZXQucHVyZ2VkICkKKyAgICAjICAgIGlmIGhkYS5kZWxl
dGVkIGFuZCBwdXJnZWQ6CisgICAgIyAgICAgICAgI1RPRE86IHRvX2RpY3Qgc2hvdWxkIHJlYWxs
eSBnbyBBRlRFUiB0aGlzIC0gb25seSBzdW1tYXJ5IGRhdGEKKyAgICAjICAgICAgICByZXR1cm4g
dHJhbnMuc2VjdXJpdHkuZW5jb2RlX2RpY3RfaWRzKCBoZGFfZGljdCApCisgICAgIworICAgICMg
ICAgaWYgZXhwb3NlX2RhdGFzZXRfcGF0aDoKKyAgICAjICAgICAgICB0cnk6CisgICAgIyAgICAg
ICAgICAgIGhkYV9kaWN0WyAnZmlsZV9uYW1lJyBdID0zRCBoZGEuZmlsZV9uYW1lCisgICAgIyAg
ICAgICAgZXhjZXB0IG9iamVjdHN0b3JlLk9iamVjdE5vdEZvdW5kOgorICAgICMgICAgICAgICAg
ICBsb2cuZXhjZXB0aW9uKCAnb2JqZWN0c3RvcmUuT2JqZWN0Tm90Rm91bmQsIEhEQSAlcy4nLCBo
ZGE9Ci5pZCApCisgICAgIworICAgICMgICAgaGRhX2RpY3RbICdkb3dubG9hZF91cmwnIF0gPTNE
IHVybF9mb3IoICdoaXN0b3J5X2NvbnRlbnRzX2Rpc3BsYXk9CicsCisgICAgIyAgICAgICAgaGlz
dG9yeV9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBoZGEuaGlzdG9yeS5pZCApLAor
ICAgICMgICAgICAgIGhpc3RvcnlfY29udGVudF9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZW5jb2Rl
X2lkKCBoZGEuaWQgKSApCisgICAgIworICAgICMgICAgIyByZXN1Ym1pdHRlZCBpcyBub3QgYSBy
ZWFsIHN0YXRlCisgICAgIyAgICBoZGFfZGljdFsgJ3Jlc3VibWl0dGVkJyBdID0zRCBGYWxzZQor
ICAgICMgICAgaWYgaGRhLnN0YXRlID0zRD0zRCB0cmFucy5hcHAubW9kZWwuRGF0YXNldC5zdGF0
ZXMuUkVTVUJNSVRURUQ6CisgICAgIyAgICAgICAgaGRhX2RpY3RbICdzdGF0ZScgXSA9M0QgaGRh
LmRhdGFzZXQuc3RhdGUKKyAgICAjICAgICAgICBoZGFfZGljdFsgJ3Jlc3VibWl0dGVkJyBdID0z
RCBUcnVlCisgICAgIworICAgICMgICAgIyBpbmRlY2VzLCBhc3NvYy4gbWV0YWRhdGEgZmlsZXMs
IGV0Yy4KKyAgICAjICAgIG1ldGFfZmlsZXMgPTNEIFtdCisgICAgIyAgICBmb3IgbWV0YV90eXBl
IGluIGhkYS5tZXRhZGF0YS5zcGVjLmtleXMoKToKKyAgICAjICAgICAgICBpZiBpc2luc3RhbmNl
KCBoZGEubWV0YWRhdGEuc3BlY1sgbWV0YV90eXBlIF0ucGFyYW0sIEZpbGVQYXJhPQptZXRlciAp
OgorICAgICMgICAgICAgICAgICBtZXRhX2ZpbGVzLmFwcGVuZCggZGljdCggZmlsZV90eXBlPTNE
bWV0YV90eXBlICkgKQorICAgICMgICAgaWYgbWV0YV9maWxlczoKKyAgICAjICAgICAgICBoZGFf
ZGljdFsgJ21ldGFfZmlsZXMnIF0gPTNEIG1ldGFfZmlsZXMKKyAgICAjCisgICAgIyAgICAjIGN1
cnJlbnRseSwgdGhlIHZpeiByZWcgaXMgb3B0aW9uYWwgLSBoYW5kbGUgb24vb2ZmCisgICAgIyAg
ICBpZiB0cmFucy5hcHAudmlzdWFsaXphdGlvbnNfcmVnaXN0cnk6CisgICAgIyAgICAgICAgaGRh
X2RpY3RbICd2aXN1YWxpemF0aW9ucycgXSA9M0QgdHJhbnMuYXBwLnZpc3VhbGl6YXRpb25zX3Jl
Zz0KaXN0cnkuZ2V0X3Zpc3VhbGl6YXRpb25zKCB0cmFucywgaGRhICkKKyAgICAjICAgIGVsc2U6
CisgICAgIyAgICAgICAgaGRhX2RpY3RbICd2aXN1YWxpemF0aW9ucycgXSA9M0QgaGRhLmdldF92
aXN1YWxpemF0aW9ucygpCisgICAgIyAgICAjVE9ETzogaXQgbWF5IGFsc28gYmUgd2lzZXIgdG8g
cmVtb3ZlIGZyb20gaGVyZSBhbmQgYWRkIGFzIEFQSSBjYT0KbGwgdGhhdCBsb2FkcyB0aGUgdmlz
dWFsaXphdGlvbnMKKyAgICAjICAgICMgICAgICAgICAgIHdoZW4gdGhlIHZpc3VhbGl6YXRpb25z
IGJ1dHRvbiBpcyBjbGlja2VkIChpbnN0ZWFkIG9mPQogcHJlbG9hZGluZy9wcmUtY2hlY2tpbmcp
CisgICAgIworICAgICMgICAgcmV0dXJuIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9kaWN0X2lkcygg
aGRhX2RpY3QgKQorICAgICMKKyAgICAjZGVmIGdldF9pbmFjY2Vzc2libGVfaGRhX2RpY3QoIHNl
bGYsIHRyYW5zLCBoZGEgKToKKyAgICAjICAgIHJldHVybiB0cmFucy5zZWN1cml0eS5lbmNvZGVf
ZGljdF9pZHMoeworICAgICMgICAgICAgICdpZCcgICAgICAgIDogaGRhLmlkLAorICAgICMgICAg
ICAgICdoaXN0b3J5X2lkJzogaGRhLmhpc3RvcnkuaWQsCisgICAgIyAgICAgICAgJ2hpZCcgICAg
ICAgOiBoZGEuaGlkLAorICAgICMgICAgICAgICduYW1lJyAgICAgIDogaGRhLm5hbWUsCisgICAg
IyAgICAgICAgJ3N0YXRlJyAgICAgOiBoZGEuc3RhdGUsCisgICAgIyAgICAgICAgJ2RlbGV0ZWQn
ICAgOiBoZGEuZGVsZXRlZCwKKyAgICAjICAgICAgICAndmlzaWJsZScgICA6IGhkYS52aXNpYmxl
LAorICAgICMgICAgICAgICdhY2Nlc3NpYmxlJzogRmFsc2UKKyAgICAjICAgIH0pCisgICAgIwor
ICAgICNkZWYgZ2V0X2hkYV9kaWN0X3dpdGhfZXJyb3IoIHNlbGYsIHRyYW5zLCBoZGE9M0ROb25l
LCBoaXN0b3J5X2lkPTNETm89Cm5lLCBpZD0zRE5vbmUsIGVycm9yX21zZz0zRCdFcnJvcicgKToK
KyAgICAjICAgIHJldHVybiB0cmFucy5zZWN1cml0eS5lbmNvZGVfZGljdF9pZHMoeworICAgICMg
ICAgICAgICdpZCcgICAgICAgIDogaGRhLmlkIGlmIGhkYSBlbHNlIGlkLAorICAgICMgICAgICAg
ICdoaXN0b3J5X2lkJzogaGRhLmhpc3RvcnkuaWQgaWYgaGRhIGVsc2UgaGlzdG9yeV9pZCwKKyAg
ICAjICAgICAgICAnaGlkJyAgICAgICA6IGhkYS5oaWQgaWYgaGRhIGVsc2UgJyh1bmtub3duKScs
CisgICAgIyAgICAgICAgJ25hbWUnICAgICAgOiBoZGEubmFtZSBpZiBoZGEgZWxzZSAnKHVua25v
d24pJywKKyAgICAjICAgICAgICAnZXJyb3InICAgICA6IGVycm9yX21zZywKKyAgICAjICAgICAg
ICAnc3RhdGUnICAgICA6IHRyYW5zLm1vZGVsLkRhdGFzZXQuc3RhdGVzLk5FVworICAgICMgICAg
fSkKKyAgICAjCisgICAgI2RlZiBnZXRfZGlzcGxheV9hcHBzKCBzZWxmLCB0cmFucywgaGRhICk6
CisgICAgIyAgICBkaXNwbGF5X2FwcHMgPTNEIFtdCisgICAgIyAgICBmb3IgZGlzcGxheV9hcHAg
aW4gaGRhLmdldF9kaXNwbGF5X2FwcGxpY2F0aW9ucyggdHJhbnMgKS5pdGVydmFsdT0KZXMoKToK
KyAgICAjCisgICAgIyAgICAgICAgYXBwX2xpbmtzID0zRCBbXQorICAgICMgICAgICAgIGZvciBs
aW5rX2FwcCBpbiBkaXNwbGF5X2FwcC5saW5rcy5pdGVydmFsdWVzKCk6CisgICAgIyAgICAgICAg
ICAgIGFwcF9saW5rcy5hcHBlbmQoeworICAgICMgICAgICAgICAgICAgICAgJ3RhcmdldCc6IGxp
bmtfYXBwLnVybC5nZXQoICd0YXJnZXRfZnJhbWUnLCAnX2JsYW5rJyA9CiksCisgICAgIyAgICAg
ICAgICAgICAgICAnaHJlZicgIDogbGlua19hcHAuZ2V0X2Rpc3BsYXlfdXJsKCBoZGEsIHRyYW5z
ICksCisgICAgIyAgICAgICAgICAgICAgICAndGV4dCcgIDogZ2V0dGV4dCggbGlua19hcHAubmFt
ZSApCisgICAgIyAgICAgICAgICAgIH0pCisgICAgIyAgICAgICAgaWYgYXBwX2xpbmtzOgorICAg
ICMgICAgICAgICAgICBkaXNwbGF5X2FwcHMuYXBwZW5kKCBkaWN0KCBsYWJlbD0zRGRpc3BsYXlf
YXBwLm5hbWUsIGxpbms9CnM9M0RhcHBfbGlua3MgKSApCisgICAgIworICAgICMgICAgcmV0dXJu
IGRpc3BsYXlfYXBwcworICAgICMKKyAgICAjZGVmIGdldF9vbGRfZGlzcGxheV9hcHBsaWNhdGlv
bnMoIHNlbGYsIHRyYW5zLCBoZGEgKToKKyAgICAjICAgIGRpc3BsYXlfYXBwcyA9M0QgW10KKyAg
ICAjICAgIGlmIG5vdCB0cmFucy5hcHAuY29uZmlnLmVuYWJsZV9vbGRfZGlzcGxheV9hcHBsaWNh
dGlvbnM6CisgICAgIyAgICAgICAgcmV0dXJuIGRpc3BsYXlfYXBwcworICAgICMKKyAgICAjICAg
IGZvciBkaXNwbGF5X2FwcCBpbiBoZGEuZGF0YXR5cGUuZ2V0X2Rpc3BsYXlfdHlwZXMoKToKKyAg
ICAjICAgICAgICB0YXJnZXRfZnJhbWUsIGRpc3BsYXlfbGlua3MgPTNEIGhkYS5kYXRhdHlwZS5n
ZXRfZGlzcGxheV9saW5rPQpzKCBoZGEsCisgICAgIyAgICAgICAgICAgIGRpc3BsYXlfYXBwLCB0
cmFucy5hcHAsIHRyYW5zLnJlcXVlc3QuYmFzZSApCisgICAgIworICAgICMgICAgICAgIGlmIGxl
biggZGlzcGxheV9saW5rcyApID4gMDoKKyAgICAjICAgICAgICAgICAgZGlzcGxheV9sYWJlbCA9
M0QgaGRhLmRhdGF0eXBlLmdldF9kaXNwbGF5X2xhYmVsKCBkaXNwbGF5PQpfYXBwICkKKyAgICAj
CisgICAgIyAgICAgICAgICAgIGFwcF9saW5rcyA9M0QgW10KKyAgICAjICAgICAgICAgICAgZm9y
IGRpc3BsYXlfbmFtZSwgZGlzcGxheV9saW5rIGluIGRpc3BsYXlfbGlua3M6CisgICAgIyAgICAg
ICAgICAgICAgICBhcHBfbGlua3MuYXBwZW5kKHsKKyAgICAjICAgICAgICAgICAgICAgICAgICAn
dGFyZ2V0JzogdGFyZ2V0X2ZyYW1lLAorICAgICMgICAgICAgICAgICAgICAgICAgICdocmVmJyAg
OiBkaXNwbGF5X2xpbmssCisgICAgIyAgICAgICAgICAgICAgICAgICAgJ3RleHQnICA6IGdldHRl
eHQoIGRpc3BsYXlfbmFtZSApCisgICAgIyAgICAgICAgICAgICAgICB9KQorICAgICMgICAgICAg
ICAgICBpZiBhcHBfbGlua3M6CisgICAgIyAgICAgICAgICAgICAgICBkaXNwbGF5X2FwcHMuYXBw
ZW5kKCBkaWN0KCBsYWJlbD0zRGRpc3BsYXlfbGFiZWwsIGxpbj0Ka3M9M0RhcHBfbGlua3MgKSAp
CisgICAgIworICAgICMgICAgcmV0dXJuIGRpc3BsYXlfYXBwcworICAgICMKKyAgICAjZGVmIHNl
dF9oZGFfZnJvbV9kaWN0KCBzZWxmLCB0cmFucywgaGRhLCBuZXdfZGF0YSApOgorICAgICMgICAg
IiIiCisgICAgIyAgICBDaGFuZ2VzIEhEQSBkYXRhIHVzaW5nIHRoZSBnaXZlbiBkaWN0aW9uYXJ5
IG5ld19kYXRhLgorICAgICMgICAgIiIiCisgICAgIyAgICAjIHByZWNvbmRpdGlvbjogYWNjZXNz
IG9mIHRoZSBoZGEgaGFzIGFscmVhZHkgYmVlbiBjaGVja2VkCisgICAgIworICAgICMgICAgIyBz
ZW5kIHdoYXQgd2UgY2FuIGRvd24gaW50byB0aGUgbW9kZWwKKyAgICAjICAgIGNoYW5nZWQgPTNE
IGhkYS5zZXRfZnJvbV9kaWN0KCBuZXdfZGF0YSApCisgICAgIyAgICAjIHRoZSByZXN0IChvZnRl
biBpbnZvbHZpbmcgdGhlIHRyYW5zKSAtIGRvIGhlcmUKKyAgICAjICAgIGlmICdhbm5vdGF0aW9u
JyBpbiBuZXdfZGF0YS5rZXlzKCkgYW5kIHRyYW5zLmdldF91c2VyKCk6CisgICAgIyAgICAgICAg
aGRhLmFkZF9pdGVtX2Fubm90YXRpb24oIHRyYW5zLnNhX3Nlc3Npb24sIHRyYW5zLmdldF91c2Vy
KCksID0KaGRhLCBuZXdfZGF0YVsgJ2Fubm90YXRpb24nIF0gKQorICAgICMgICAgICAgIGNoYW5n
ZWRbICdhbm5vdGF0aW9uJyBdID0zRCBuZXdfZGF0YVsgJ2Fubm90YXRpb24nIF0KKyAgICAjICAg
IGlmICd0YWdzJyBpbiBuZXdfZGF0YS5rZXlzKCkgYW5kIHRyYW5zLmdldF91c2VyKCk6CisgICAg
IyAgICAgICAgc2VsZi5zZXRfdGFnc19mcm9tX2xpc3QoIHRyYW5zLCBoZGEsIG5ld19kYXRhWyAn
dGFncycgXSwgdXNlcj0KPTNEdHJhbnMudXNlciApCisgICAgIyAgICAjIHNoYXJpbmcvcGVybWlz
c2lvbnM/CisgICAgIyAgICAjIHB1cmdlZAorICAgICMKKyAgICAjICAgIGlmIGNoYW5nZWQua2V5
cygpOgorICAgICMgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uZmx1c2goKQorICAgICMKKyAgICAj
ICAgIHJldHVybiBjaGFuZ2VkCisgICAgIworICAgICNkZWYgZ2V0X2hkYV9qb2IoIHNlbGYsIGhk
YSApOgorICAgICMgICAgIyBHZXQgZGF0YXNldCdzIGpvYi4KKyAgICAjICAgIGpvYiA9M0QgTm9u
ZQorICAgICMgICAgZm9yIGpvYl9vdXRwdXRfYXNzb2MgaW4gaGRhLmNyZWF0aW5nX2pvYl9hc3Nv
Y2lhdGlvbnM6CisgICAgIyAgICAgICAgam9iID0zRCBqb2Jfb3V0cHV0X2Fzc29jLmpvYgorICAg
ICMgICAgICAgIGJyZWFrCisgICAgIyAgICByZXR1cm4gam9iCisgICAgIworICAgICNkZWYgc3Rv
cF9oZGFfY3JlYXRpbmdfam9iKCBzZWxmLCBoZGEgKToKKyAgICAjICAgICIiIgorICAgICMgICAg
U3RvcHMgYW4gSERBJ3MgY3JlYXRpbmcgam9iIGlmIGFsbCB0aGUgam9iJ3Mgb3RoZXIgb3V0cHV0
cyBhcmUgZGU9CmxldGVkLgorICAgICMgICAgIiIiCisgICAgIyAgICBpZiBoZGEucGFyZW50X2lk
IGlzIE5vbmUgYW5kIGxlbiggaGRhLmNyZWF0aW5nX2pvYl9hc3NvY2lhdGlvbnMgKT0KID4gMDoK
KyAgICAjICAgICAgICAjIE1hcmsgYXNzb2NpYXRlZCBqb2IgZm9yIGRlbGV0aW9uCisgICAgIyAg
ICAgICAgam9iID0zRCBoZGEuY3JlYXRpbmdfam9iX2Fzc29jaWF0aW9uc1swXS5qb2IKKyAgICAj
ICAgICAgICBpZiBqb2Iuc3RhdGUgaW4gWyBzZWxmLmFwcC5tb2RlbC5Kb2Iuc3RhdGVzLlFVRVVF
RCwgc2VsZi5hcHAuPQptb2RlbC5Kb2Iuc3RhdGVzLlJVTk5JTkcsIHNlbGYuYXBwLm1vZGVsLkpv
Yi5zdGF0ZXMuTkVXIF06CisgICAgIyAgICAgICAgICAgICMgQXJlICphbGwqIG9mIHRoZSBqb2In
cyBvdGhlciBvdXRwdXQgZGF0YXNldHMgZGVsZXRlZD8KKyAgICAjICAgICAgICAgICAgaWYgam9i
LmNoZWNrX2lmX291dHB1dF9kYXRhc2V0c19kZWxldGVkKCk6CisgICAgIyAgICAgICAgICAgICAg
ICBqb2IubWFya19kZWxldGVkKCBzZWxmLmFwcC5jb25maWcudHJhY2tfam9ic19pbl9kYXRhYj0K
YXNlICkKKyAgICAjICAgICAgICAgICAgICAgIHNlbGYuYXBwLmpvYl9tYW5hZ2VyLmpvYl9zdG9w
X3F1ZXVlLnB1dCggam9iLmlkICkKKyAgICAjCisgICAgIwo9MjAKICMgPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECi1jbGFz
cyBIaXN0b3J5U2VyaWFsaXplciggbWFuYWdlcl9iYXNlLk1vZGVsU2VyaWFsaXplciApOgotICAg
ICIiIgotICAgIEludGVyZmFjZS9zZXJ2aWNlIG9iamVjdCBmb3Igc2VyaWFsaXppbmcgSERBcyBp
bnRvIGRpY3Rpb25hcmllcy4KLSAgICAiIiIKLSAgICBwYXNzCitjbGFzcyBIREFTZXJpYWxpemVy
KCBiYXNlLk1vZGVsU2VyaWFsaXplciApOgorCisgICAgZGVmIF9faW5pdF9fKCBzZWxmICk6Cisg
ICAgICAgIHN1cGVyKCBIREFTZXJpYWxpemVyLCBzZWxmICkuX19pbml0X18oKQorCisgICAgICAg
ICMgbW9zdCBvZiB0aGVzZSB2aWV3cyBidWlsZC9hZGQgdG8gdGhlIHByZXZpb3VzIHZpZXcKKyAg
ICAgICAgc3VtbWFyeV92aWV3ID0zRCBbCisgICAgICAgICAgICAnaWQnLCAnaGlzdG9yeV9pZCcs
ICdoaWQnLCAnbmFtZScsICdkYXRhc2V0X2lkJywKKyAgICAgICAgICAgICdzdGF0ZScsICdkZWxl
dGVkJywgJ3B1cmdlZCcsICd2aXNpYmxlJworICAgICAgICBdCisgICAgICAgIGRldGFpbGVkX3Zp
ZXcgPTNEIHN1bW1hcnlfdmlldyArIFsKKyAgICAgICAgICAgICdkYmtleScsICdpbmZvJywgJ2Js
dXJiJywgJ2V4dGVuc2lvbicsICdjcmVhdGVfdGltZScsICd1cGRhdGVfPQp0aW1lJywKKyAgICAg
ICAgICAgICdjb3BpZWRfZnJvbV9oaXN0b3J5X2RhdGFzZXRfYXNzb2NpYXRpb25faWQnLCAnY29w
aWVkX2Zyb21fbGliPQpyYXJ5X2RhdGFzZXRfZGF0YXNldF9hc3NvY2lhdGlvbl9pZCcsCisgICAg
ICAgICAgICAnbWV0YWRhdGEnLCAnc2l6ZScsCisgICAgICAgICAgICAjbWl4aW46IGFubm90YXRh
YmxlCisgICAgICAgICAgICAnYW5ub3RhdGlvbicsCisgICAgICAgICAgICAjbWl4aW46IHRhZ2dh
YmxlCisgICAgICAgICAgICAndGFncycsCisgICAgICAgIF0KKyAgICAgICAgZXh0ZW5kZWRfdmll
dyA9M0QgZGV0YWlsZWRfdmlldyArIFsKKyAgICAgICAgICAgICNOT1RFOiBzZW5kaW5nIHJhdyAn
cGVlaycgKG5vdCBnZXRfZGlzcGxheV9wZWVrKQorICAgICAgICAgICAgJ3BlZWsnLAorICAgICAg
ICAgICAgJ3Rvb2xfdmVyc2lvbicsICdwYXJlbnRfaWQnLCAnZGVzaWduYXRpb24nLAorICAgICAg
ICBdCisKKyAgICAgICAgc2VsZi5zZXJpYWxpemFibGVfa2V5cyA9M0QgZXh0ZW5kZWRfdmlldyAr
IFsKKyAgICAgICAgICAgICdkaXNwbGF5X2FwcHMnLAorICAgICAgICAgICAgJ2Rpc3BsYXlfdHlw
ZXMnLAorICAgICAgICAgICAgJ3Zpc3VhbGl6YXRpb25zJworICAgICAgICBdCisgICAgICAgIHNl
bGYudmlld3MgPTNEIHsKKyAgICAgICAgICAgICdzdW1tYXJ5JyAgIDogc3VtbWFyeV92aWV3LAor
ICAgICAgICAgICAgJ2RldGFpbGVkJyAgOiBkZXRhaWxlZF92aWV3LAorICAgICAgICAgICAgJ2V4
dGVuZGVkJyAgOiBleHRlbmRlZF92aWV3LAorICAgICAgICB9CisgICAgICAgIHNlbGYuZGVmYXVs
dF92aWV3ID0zRCAnc3VtbWFyeScKKworICAgIGRlZiBhZGRfc2VyaWFsaXplcnMoIHNlbGYgKToK
KyAgICAgICAgc2VsZi5zZXJpYWxpemVycy51cGRhdGUoeworICAgICAgICAgICAgJ2lkJyAgICAg
ICAgICAgIDogc2VsZi5zZXJpYWxpemVfaWQsCisgICAgICAgICAgICAnaGlzdG9yeV9pZCcgICAg
OiBzZWxmLnNlcmlhbGl6ZV9pZCwKKyAgICAgICAgICAgICdkYXRhc2V0X2lkJyAgICA6IHNlbGYu
c2VyaWFsaXplX2lkLAorCisgICAgICAgICAgICAnY3JlYXRlX3RpbWUnICAgOiBzZWxmLnNlcmlh
bGl6ZV9kYXRlLAorICAgICAgICAgICAgJ3VwZGF0ZV90aW1lJyAgIDogc2VsZi5zZXJpYWxpemVf
ZGF0ZSwKKyAgICAgICAgICAgICdjb3BpZWRfZnJvbV9oaXN0b3J5X2RhdGFzZXRfYXNzb2NpYXRp
b25faWQnICAgICAgICA6IHNlbGYuc2VyPQppYWxpemVfaWQsCisgICAgICAgICAgICAnY29waWVk
X2Zyb21fbGlicmFyeV9kYXRhc2V0X2RhdGFzZXRfYXNzb2NpYXRpb25faWQnOiBzZWxmLnNlcj0K
aWFsaXplX2lkLAorICAgICAgICAgICAgJ21ldGFkYXRhJyAgICAgIDogc2VsZi5zZXJpYWxpemVf
bWV0YWRhdGEsCisgICAgICAgICAgICAnc2l6ZScgICAgICAgICAgOiBsYW1iZGEgdCwgaSwgazog
aW50KCBpLmdldF9zaXplKCkgKSwKKyAgICAgICAgICAgICduaWNlX3NpemUnICAgICA6IGxhbWJk
YSB0LCBpLCBrOiBpLmdldF9zaXplKCBuaWNlX3NpemU9M0RUcnVlPQogKSwKKyAgICAgICAgICAg
ICdwYXJlbnRfaWQnICAgICA6IHNlbGYuc2VyaWFsaXplX2lkLAorICAgICAgICAgICAgI1RPRE86
IHRvIG1peGluOiBhbm5vdGF0YWJsZQorICAgICAgICAgICAgJ2Fubm90YXRpb24nICAgIDogbGFt
YmRhIHQsIGksIGs6IGkuZ2V0X2l0ZW1fYW5ub3RhdGlvbl9zdHIoIHQ9Ci5zYV9zZXNzaW9uLCB0
LnVzZXIsIGkgKSwKKyAgICAgICAgICAgICNUT0RPOiB0byBtaXhpbjogdGFnZ2FibGUKKyAgICAg
ICAgICAgICd0YWdzJyAgICAgICAgICA6IGxhbWJkYSB0LCBpLCBrOiBbIHRhZy51c2VyX3RuYW1l
ICsgKCAnOicgKyB0PQphZy51c2VyX3ZhbHVlIGlmIHRhZy51c2VyX3ZhbHVlIGVsc2UgJycgKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRhZyBp
biBpLnRhZ3MgXSwKKyAgICAgICAgfSkKKworICAgIGRlZiBzZXJpYWxpemVfbWV0YWRhdGEoIHNl
bGYsIHRyYW5zLCBoZGEsIGtleSApOgorICAgICAgICBub3RfaW5jbHVkZWQgPTNEIFsgJ2Ria2V5
JyBdCisgICAgICAgIG1kID0zRCB7fQorICAgICAgICBmb3IgbmFtZSwgc3BlYyBpbiBoZGEubWV0
YWRhdGEuc3BlYy5pdGVtcygpOgorICAgICAgICAgICAgaWYgbmFtZSBpbiBub3RfaW5jbHVkZWQ6
CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHZhbCA9M0QgaGRhLm1ldGFk
YXRhLmdldCggbmFtZSApCisgICAgICAgICAgICAjTk9URTogbm8gZmlsZXMKKyAgICAgICAgICAg
IGlmIGlzaW5zdGFuY2UoIHZhbCwgbW9kZWwuTWV0YWRhdGFGaWxlICk6CisgICAgICAgICAgICAg
ICAgY29udGludWUKKyAgICAgICAgICAgICNUT0RPOj8gcG9zc2libHkgc3BsaXQgdGhpcyBvZmY/
CisgICAgICAgICAgICAjIElmIG5vIHZhbHVlIGZvciBtZXRhZGF0YSwgbG9vayBpbiBkYXRhdHlw
ZSBmb3IgbWV0YWRhdGEuCisgICAgICAgICAgICBlbGlmIHZhbCBpcyBOb25lIGFuZCBoYXNhdHRy
KCBoZGEuZGF0YXR5cGUsIG5hbWUgKToKKyAgICAgICAgICAgICAgICB2YWwgPTNEIGdldGF0dHIo
IGhkYS5kYXRhdHlwZSwgbmFtZSApCisgICAgICAgICAgICBtZFsgbmFtZSBdID0zRCB2YWwKKwor
ICAgICAgICByZXR1cm4gbWQKKworICAgIGRlZiBhZGRfZGVzZXJpYWxpemVycyggc2VsZiApOgor
ICAgICAgICBzZWxmLmRlc2VyaWFsaXplcnMudXBkYXRlKHsKKyAgICAgICAgICAgICduYW1lJyAg
ICAgICAgICA6IHNlbGYuZGVzZXJpYWxpemVfYmFzZXN0cmluZywKKyAgICAgICAgICAgICdnZW5v
bWVfYnVpbGQnICA6IHNlbGYuZGVzZXJpYWxpemVfZ2Vub21lX2J1aWxkLAorICAgICAgICAgICAg
J2RlbGV0ZWQnICAgICAgIDogc2VsZi5kZXNlcmlhbGl6ZV9ib29sLAorICAgICAgICAgICAgJ3B1
Ymxpc2hlZCcgICAgIDogc2VsZi5kZXNlcmlhbGl6ZV9ib29sLAorICAgICAgICAgICAgI1RPRE86
IHRvIG1peGluOiBhbm5vdGF0YWJsZQorICAgICAgICAgICAgIydhbm5vdGF0aW9uJyAgICA6IHNl
bGYuZGVzZXJpYWxpemVfYW5ub3RhdGlvbiwKKyAgICAgICAgICAgICNUT0RPOiB0byBtaXhpbjog
dGFnZ2FibGUKKyAgICAgICAgICAgICMndGFncycgICAgICAgICAgOiBsYW1iZGEgdCwgaSwgaywg
djogLAorICAgICAgICB9KQorICAgICAgICBzZWxmLmRlc2VyaWFsaXphYmxlX2tleXMgPTNEIHNl
bGYuZGVzZXJpYWxpemVycy5rZXlzKCkKCmRpZmYgLXIgY2M3MTQ3NTE0ZDc3Nzk5OTg5Nzc3ZmQy
MWFhODE4ZTQzZDlmM2QzOSAtciA3NDBkNzU4YzIyODViZWMxNDBlNjkwMT0KMDI1ZTkwNmY1MGEw
ZDdhMmEgbGliL2dhbGF4eS9tYW5hZ2Vycy9oaXN0b3JpZXMucHkKLS0tIGEvbGliL2dhbGF4eS9t
YW5hZ2Vycy9oaXN0b3JpZXMucHkKKysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vycy9oaXN0b3JpZXMu
cHkKQEAgLTYsOSArNiwxMiBAQAogIiIiCj0yMAogZnJvbSBnYWxheHkgaW1wb3J0IGV4Y2VwdGlv
bnMKK2Zyb20gZ2FsYXh5IGltcG9ydCBtb2RlbAogZnJvbSBnYWxheHkubW9kZWwgaW1wb3J0IG9y
bQo9MjAKLWZyb20gZ2FsYXh5Lm1hbmFnZXJzIGltcG9ydCBiYXNlIGFzIG1hbmFnZXJfYmFzZQor
aW1wb3J0IGJhc2UKK2ltcG9ydCBzaGFyYWJsZQoraW1wb3J0IGhkYXMKIGltcG9ydCBnYWxheHku
bWFuYWdlcnMuY29sbGVjdGlvbnNfdXRpbAo9MjAKIGltcG9ydCBnYWxheHkud2ViCkBAIC0xOCwx
MjIgKzIxLDc2IEBACj0yMAo9MjAKICMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECi1jbGFzcyBIaXN0b3J5TWFuYWdlcigg
bWFuYWdlcl9iYXNlLk1vZGVsTWFuYWdlciApOgorY2xhc3MgSGlzdG9yeU1hbmFnZXIoIHNoYXJh
YmxlLlNoYXJhYmxlTW9kZWxNYW5hZ2VyLCBiYXNlLlB1cmdhYmxlTW9kZWxJbnQ9CmVyZmFjZSAp
OgogICAgICIiIgogICAgIEludGVyZmFjZS9zZXJ2aWNlIG9iamVjdCBmb3IgaW50ZXJhY3Rpbmcg
d2l0aCBIREFzLgogICAgICIiIgorICAgIG1vZGVsX2NsYXNzID0zRCBtb2RlbC5IaXN0b3J5Cisg
ICAgZGVmYXVsdF9vcmRlcl9ieSA9M0QgKCBtb2RlbC5IaXN0b3J5LmNyZWF0ZV90aW1lLCApCisg
ICAgZm9yZWlnbl9rZXlfbmFtZSA9M0QgJ2hpc3RvcnknCisgICAgdXNlcl9zaGFyZV9tb2RlbCA9
M0QgbW9kZWwuSGlzdG9yeVVzZXJTaGFyZUFzc29jaWF0aW9uCj0yMAotICAgICNUT0RPOiBhbGwg
dGhlIGZvbGxvd2luZyB3b3VsZCBiZSBtb3JlIHVzZWZ1bCBpZiBwYXNzZWQgdGhlIHVzZXIgaW5z
dGU9CmFkIG9mIGRlZmF1bHRpbmcgdG8gdHJhbnMudXNlcgotICAgIGRlZiBfX2luaXRfXyggc2Vs
ZiwgKmFyZ3MsICoqa3dhcmdzICk6Ci0gICAgICAgIHN1cGVyKCBIaXN0b3J5TWFuYWdlciwgc2Vs
ZiApLl9faW5pdF9fKCAqYXJncywgKiprd2FyZ3MgKQorICAgIGRlZiBfX2luaXRfXyggc2VsZiwg
YXBwLCAqYXJncywgKiprd2FyZ3MgKToKKyAgICAgICAgc3VwZXIoIEhpc3RvcnlNYW5hZ2VyLCBz
ZWxmICkuX19pbml0X18oIGFwcCwgKmFyZ3MsICoqa3dhcmdzICkKKyAgICAgICAgc2VsZi5oZGFf
bWdyID0zRCBoZGFzLkhEQU1hbmFnZXIoIGFwcCApCj0yMAotICAgIGRlZiBnZXQoIHNlbGYsIHRy
YW5zLCB1bmVuY29kZWRfaWQsIGNoZWNrX293bmVyc2hpcD0zRFRydWUsIGNoZWNrX2FjY2U9CnNz
aWJsZT0zRFRydWUsIGRlbGV0ZWQ9M0ROb25lICk6Ci0gICAgICAgICIiIgotICAgICAgICBHZXQg
YSBIaXN0b3J5IGZyb20gdGhlIGRhdGFiYXNlIGJ5IGlkLCB2ZXJpZnlpbmcgb3duZXJzaGlwLgot
ICAgICAgICAiIiIKLSAgICAgICAgIyB0aGlzIGlzIGEgcmVwbGFjZW1lbnQgZm9yIFVzZXNIaXN0
b3J5TWl4aW4gYmVjYXVzZSBtaXhpbnMgYXJlIGEgPQpiYWQgc29sbi9zdHJ1Y3R1cmUKLSAgICAg
ICAgaGlzdG9yeSA9M0QgdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggdHJhbnMuYXBwLm1vZGVsLkhp
c3RvcnkgKS5nZXQoPQogdW5lbmNvZGVkX2lkICkKLSAgICAgICAgaWYgaGlzdG9yeSBpcyBOb25l
OgotICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5PYmplY3ROb3RGb3VuZCgpCi0gICAgICAg
IGlmIGRlbGV0ZWQgaXMgVHJ1ZSBhbmQgbm90IGhpc3RvcnkuZGVsZXRlZDoKLSAgICAgICAgICAg
IHJhaXNlIGV4Y2VwdGlvbnMuSXRlbURlbGV0aW9uRXhjZXB0aW9uKCAnSGlzdG9yeSAiJXMiIGlz
IG5vdCBkPQplbGV0ZWQnICUgKCBoaXN0b3J5Lm5hbWUgKSwgdHlwZT0zRCJlcnJvciIgKQotICAg
ICAgICBlbGlmIGRlbGV0ZWQgaXMgRmFsc2UgYW5kIGhpc3RvcnkuZGVsZXRlZDoKLSAgICAgICAg
ICAgIHJhaXNlIGV4Y2VwdGlvbnMuSXRlbURlbGV0aW9uRXhjZXB0aW9uKCAnSGlzdG9yeSAiJXMi
IGlzIGRlbGV0PQplZCcgJSAoIGhpc3RvcnkubmFtZSApLCB0eXBlPTNEImVycm9yIiApCisgICAg
IyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLj0KLi4uLi4gY3J1ZAorICAgIGRlZiBjb3B5KCBzZWxmLCB0cmFucywgaGlz
dG9yeSwgdXNlciwgKiprd2FyZ3MgKToKKyAgICAgICAgcmV0dXJuIGhpc3RvcnkuY29weSggdGFy
Z2V0X3VzZXI9M0R1c2VyLCAqKmt3YXJncyApCj0yMAotICAgICAgICBoaXN0b3J5ID0zRCBzZWxm
LnNlY3VyZSggdHJhbnMsIGhpc3RvcnksIGNoZWNrX293bmVyc2hpcCwgY2hlY2tfYWM9CmNlc3Np
YmxlICkKKyAgICBkZWYgZ2V0X2N1cnJlbnQoIHNlbGYsIHRyYW5zICk6CisgICAgICAgIHJldHVy
biB0cmFucy5nZXRfaGlzdG9yeSgpCisKKyAgICBkZWYgc2V0X2N1cnJlbnQoIHNlbGYsIHRyYW5z
LCBoaXN0b3J5ICk6CisgICAgICAgIHRyYW5zLnNldF9oaXN0b3J5KCBoaXN0b3J5ICkKICAgICAg
ICAgcmV0dXJuIGhpc3RvcnkKPTIwCi0gICAgZGVmIGJ5X3VzZXIoIHNlbGYsIHRyYW5zLCB1c2Vy
PTNETm9uZSwgaW5jbHVkZV9kZWxldGVkPTNERmFsc2UsIG9ubHlfZD0KZWxldGVkPTNERmFsc2Ug
KToKKyAgICBkZWYgc2V0X2N1cnJlbnRfYnlfaWQoIHNlbGYsIHRyYW5zLCBoaXN0b3J5X2lkICk6
CisgICAgICAgIHJldHVybiBzZWxmLnNldF9jdXJyZW50KCB0cmFucywgc2VsZi5ieV9pZCggdHJh
bnMsIGhpc3RvcnlfaWQgKSApCisKKyAgICBkZWYgbW9zdF9yZWNlbnQoIHNlbGYsIHRyYW5zLCB1
c2VyLCAqKmt3YXJncyApOgorICAgICAgICBpZiBub3QgdXNlcjoKKyAgICAgICAgICAgIHJldHVy
biBOb25lIGlmIHRyYW5zLmhpc3RvcnkuZGVsZXRlZCBlbHNlIHRyYW5zLmhpc3RvcnkKKyAgICAg
ICAgZGVzY191cGRhdGVfdGltZSA9M0Qgc2VsZi5tb2RlbF9jbGFzcy50YWJsZS5jLnVwZGF0ZV90
aW1lCisgICAgICAgIHJldHVybiBzZWxmLmJ5X3VzZXIoIHRyYW5zLCB1c2VyLCBvcmRlcl9ieT0z
RGRlc2NfdXBkYXRlX3RpbWUsIGxpbT0KaXQ9M0QxLCAqKmt3YXJncyApCisKKyAgICAjIC4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uPQouLi4uLiBzaGFyYWJsZQorICAgICMgb3ZlcnJpZGluZyB0byBoYW5kbGUgYW5vbnlt
b3VzIHVzZXJzJyBjdXJyZW50IGhpc3RvcmllcyBpbiBib3RoIGNhc2VzCisgICAgZGVmIGJ5X3Vz
ZXIoIHNlbGYsIHRyYW5zLCB1c2VyLCAqKmt3YXJncyApOgogICAgICAgICAiIiIKLSAgICAgICAg
R2V0IGFsbCB0aGUgaGlzdG9yaWVzIGZvciBhIGdpdmVuIHVzZXIgKGRlZmF1bHRpbmcgdG8gYHRy
YW5zLnVzZXJgKQotICAgICAgICBvcmRlcmVkIGJ5IHVwZGF0ZSB0aW1lIGFuZCBmaWx0ZXJlZCBv
biB3aGV0aGVyIHRoZXkndmUgYmVlbiBkZWxldGU9CmQuCisgICAgICAgIEdldCBhbGwgdGhlIGhp
c3RvcmllcyBmb3IgYSBnaXZlbiB1c2VyIChhbGxvd2luZyBhbm9uIHVzZXJzJyB0aGVpcj0KcykK
KyAgICAgICAgb3JkZXJlZCBieSB1cGRhdGUgdGltZS4KICAgICAgICAgIiIiCiAgICAgICAgICMg
aGFuZGxlIGRlZmF1bHQgYW5kL29yIGFub255bW91cyB1c2VyICh3aGljaCBzdGlsbCBtYXkgbm90
IGhhdmUgYT0KIGhpc3RvcnkgeWV0KQotICAgICAgICB1c2VyID0zRCB1c2VyIG9yIHRyYW5zLnVz
ZXIKLSAgICAgICAgaWYgbm90IHVzZXI6CisgICAgICAgIGlmIHNlbGYudXNlcl9tZ3IuaXNfYW5v
bnltb3VzKCB1c2VyICk6CiAgICAgICAgICAgICBjdXJyZW50X2hpc3RvcnkgPTNEIHRyYW5zLmdl
dF9oaXN0b3J5KCkKICAgICAgICAgICAgIHJldHVybiBbIGN1cnJlbnRfaGlzdG9yeSBdIGlmIGN1
cnJlbnRfaGlzdG9yeSBlbHNlIFtdCj0yMAotICAgICAgICBoaXN0b3J5X21vZGVsID0zRCB0cmFu
cy5tb2RlbC5IaXN0b3J5Ci0gICAgICAgIHF1ZXJ5ID0zRCAoIHRyYW5zLnNhX3Nlc3Npb24ucXVl
cnkoIGhpc3RvcnlfbW9kZWwgKQotICAgICAgICAgICAgICAgICAgLmZpbHRlciggaGlzdG9yeV9t
b2RlbC51c2VyID0zRD0zRCB1c2VyICkKLSAgICAgICAgICAgICAgICAgIC5vcmRlcl9ieSggb3Jt
LmRlc2MoIGhpc3RvcnlfbW9kZWwudGFibGUuYy51cGRhdGVfdGltZSApPQogKSApCi0gICAgICAg
IGlmIG9ubHlfZGVsZXRlZDoKLSAgICAgICAgICAgIHF1ZXJ5ID0zRCBxdWVyeS5maWx0ZXIoIGhp
c3RvcnlfbW9kZWwuZGVsZXRlZCA9M0Q9M0QgVHJ1ZSApCi0gICAgICAgIGVsaWYgbm90IGluY2x1
ZGVfZGVsZXRlZDoKLSAgICAgICAgICAgIHF1ZXJ5ID0zRCBxdWVyeS5maWx0ZXIoIGhpc3Rvcnlf
bW9kZWwuZGVsZXRlZCA9M0Q9M0QgRmFsc2UgKQotICAgICAgICByZXR1cm4gcXVlcnkuYWxsKCkK
KyAgICAgICAgcmV0dXJuIHN1cGVyKCBIaXN0b3J5TWFuYWdlciwgc2VsZiApLmJ5X3VzZXIoIHRy
YW5zLCB1c2VyLCAqKmt3YXJnPQpzICkKPTIwCi0gICAgZGVmIHNlY3VyZSggc2VsZiwgdHJhbnMs
IGhpc3RvcnksIGNoZWNrX293bmVyc2hpcD0zRFRydWUsIGNoZWNrX2FjY2Vzcz0KaWJsZT0zRFRy
dWUgKToKLSAgICAgICAgIiIiCi0gICAgICAgIENoZWNrcyBpZiAoYSkgdXNlciBvd25zIGl0ZW0g
b3IgKGIpIGl0ZW0gaXMgYWNjZXNzaWJsZSB0byB1c2VyLgotICAgICAgICAiIiIKLSAgICAgICAg
IyBhbGwgaXRlbXMgYXJlIGFjY2Vzc2libGUgdG8gYW4gYWRtaW4KLSAgICAgICAgaWYgdHJhbnMu
dXNlciBhbmQgdHJhbnMudXNlcl9pc19hZG1pbigpOgotICAgICAgICAgICAgcmV0dXJuIGhpc3Rv
cnkKLSAgICAgICAgaWYgY2hlY2tfb3duZXJzaGlwOgotICAgICAgICAgICAgaGlzdG9yeSA9M0Qg
c2VsZi5jaGVja19vd25lcnNoaXAoIHRyYW5zLCBoaXN0b3J5ICkKLSAgICAgICAgaWYgY2hlY2tf
YWNjZXNzaWJsZToKLSAgICAgICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuY2hlY2tfYWNjZXNzaWJs
ZSggdHJhbnMsIGhpc3RvcnkgKQotICAgICAgICByZXR1cm4gaGlzdG9yeQotCi0gICAgZGVmIGlz
X2N1cnJlbnQoIHNlbGYsIHRyYW5zLCBoaXN0b3J5ICk6Ci0gICAgICAgICIiIgotICAgICAgICBU
cnVlIGlmIHRoZSBnaXZlbiBoaXN0b3J5IGlzIHRoZSB1c2VyJ3MgY3VycmVudCBoaXN0b3J5Lgot
Ci0gICAgICAgIFJldHVybnMgRmFsc2UgaWYgdGhlIHNlc3Npb24gaGFzIG5vIGN1cnJlbnQgaGlz
dG9yeS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHRyYW5zLmhpc3RvcnkgaXMgTm9uZToKLSAg
ICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gdHJhbnMuaGlzdG9yeSA9M0Q9
M0QgaGlzdG9yeQotCi0gICAgZGVmIGlzX293bmVyKCBzZWxmLCB0cmFucywgaGlzdG9yeSApOgor
ICAgIGRlZiBpc19vd25lciggc2VsZiwgdHJhbnMsIGhpc3RvcnksIHVzZXIgKToKICAgICAgICAg
IiIiCiAgICAgICAgIFRydWUgaWYgdGhlIGN1cnJlbnQgdXNlciBpcyB0aGUgb3duZXIgb2YgdGhl
IGdpdmVuIGhpc3RvcnkuCiAgICAgICAgICIiIgogICAgICAgICAjIGFub24gdXNlcnMgYXJlIG9u
bHkgYWxsb3dlZCB0byB2aWV3IHRoZWlyIGN1cnJlbnQgaGlzdG9yeQotICAgICAgICBpZiBub3Qg
dHJhbnMudXNlcjoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmlzX2N1cnJlbnQoIHRyYW5zLCBo
aXN0b3J5ICkKLSAgICAgICAgcmV0dXJuIHRyYW5zLnVzZXIgPTNEPTNEIGhpc3RvcnkudXNlcgor
ICAgICAgICBpZiBzZWxmLnVzZXJfbWdyLmlzX2Fub255bW91cyggdXNlciApIGFuZCBoaXN0b3J5
ID0zRD0zRCB0cmFucy5nZXQ9Cl9oaXN0b3J5KCk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQor
ICAgICAgICByZXR1cm4gc3VwZXIoIEhpc3RvcnlNYW5hZ2VyLCBzZWxmICkuaXNfb3duZXIoIHRy
YW5zLCBoaXN0b3J5LCB1c2U9CnIgKQo9MjAKLSAgICBkZWYgY2hlY2tfb3duZXJzaGlwKCBzZWxm
LCB0cmFucywgaGlzdG9yeSApOgotICAgICAgICAiIiIKLSAgICAgICAgUmFpc2VzIGVycm9yIGlm
IHRoZSBjdXJyZW50IHVzZXIgaXMgbm90IHRoZSBvd25lciBvZiB0aGUgaGlzdG9yeS4KLSAgICAg
ICAgIiIiCi0gICAgICAgIGlmIHRyYW5zLnVzZXIgYW5kIHRyYW5zLnVzZXJfaXNfYWRtaW4oKToK
LSAgICAgICAgICAgIHJldHVybiBoaXN0b3J5Ci0gICAgICAgIGlmIG5vdCB0cmFucy51c2VyIGFu
ZCBub3Qgc2VsZi5pc19jdXJyZW50KCB0cmFucywgaGlzdG9yeSApOgotICAgICAgICAgICAgcmFp
c2UgZXhjZXB0aW9ucy5BdXRoZW50aWNhdGlvblJlcXVpcmVkKCAiTXVzdCBiZSBsb2dnZWQgaW4g
dG89CiBtYW5hZ2UgR2FsYXh5IGhpc3RvcmllcyIsIHR5cGU9M0QnZXJyb3InICkKLSAgICAgICAg
aWYgc2VsZi5pc19vd25lciggdHJhbnMsIGhpc3RvcnkgKToKLSAgICAgICAgICAgIHJldHVybiBo
aXN0b3J5Ci0gICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuSXRlbU93bmVyc2hpcEV4Y2VwdGlvbigg
Ikhpc3RvcnkgaXMgbm90IG93bmVkIGJ5ID0KdGhlIGN1cnJlbnQgdXNlciIsIHR5cGU9M0QnZXJy
b3InICkKKyAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBwdXJnYWJsZQorICAgIGRlZiBwdXJnZSgg
c2VsZiwgdHJhbnMsIGhpc3RvcnksIGZsdXNoPTNEVHJ1ZSwgKiprd2FyZ3MgKToKKyAgICAgICAg
c2VsZi5lcnJvcl91bmxlc3NfZGF0YXNldF9wdXJnZV9hbGxvd2VkKCB0cmFucywgaGlzdG9yeSAp
Cj0yMAotICAgIGRlZiBpc19hY2Nlc3NpYmxlKCBzZWxmLCB0cmFucywgaGlzdG9yeSApOgotICAg
ICAgICAiIiIKLSAgICAgICAgVHJ1ZSBpZiB0aGUgdXNlciBjYW4gYWNjZXNzIChyZWFkKSB0aGUg
Y3VycmVudCBoaXN0b3J5LgotICAgICAgICAiIiIKLSAgICAgICAgIyBhZG1pbiBhbHdheXMgaGF2
ZSBhY2Nlc3MKLSAgICAgICAgaWYgdHJhbnMudXNlciBhbmQgdHJhbnMudXNlcl9pc19hZG1pbigp
OgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgIyBvd25lciBoYXMgaW1wbGljaXQg
YWNjZXNzCi0gICAgICAgIGlmIHNlbGYuaXNfb3duZXIoIHRyYW5zLCBoaXN0b3J5ICk6Ci0gICAg
ICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAjIGltcG9ydGFibGUgYW5kIHNoYXJlZCBoaXN0
b3JpZXMgYXJlIGFsd2F5cyBhY2Nlc3NpYmxlCi0gICAgICAgIGlmIGhpc3RvcnkuaW1wb3J0YWJs
ZToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGlmIHRyYW5zLnVzZXIgaW4gaGlz
dG9yeS51c2Vyc19zaGFyZWRfd2l0aF9kb3RfdXNlcnM6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1
ZQotICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgIyBGaXJzdCBwdXJnZSBhbGwgdGhlIGRh
dGFzZXRzCisgICAgICAgIGZvciBoZGEgaW4gaGlzdG9yeS5kYXRhc2V0czoKKyAgICAgICAgICAg
IGlmIG5vdCBoZGEucHVyZ2VkOgorICAgICAgICAgICAgICAgIHNlbGYuaGRhX21nci5wdXJnZSgg
dHJhbnMsIGhkYSwgZmx1c2g9M0RUcnVlICkKPTIwCi0gICAgZGVmIGNoZWNrX2FjY2Vzc2libGUo
IHNlbGYsIHRyYW5zLCBoaXN0b3J5ICk6Ci0gICAgICAgICIiIgotICAgICAgICBSYWlzZXMgZXJy
b3IgaWYgdGhlIGN1cnJlbnQgdXNlciBjYW4ndCBhY2Nlc3MgdGhlIGhpc3RvcnkuCi0gICAgICAg
ICIiIgotICAgICAgICBpZiBzZWxmLmlzX2FjY2Vzc2libGUoIHRyYW5zLCBoaXN0b3J5ICk6Ci0g
ICAgICAgICAgICByZXR1cm4gaGlzdG9yeQotICAgICAgICByYWlzZSBleGNlcHRpb25zLkl0ZW1B
Y2Nlc3NpYmlsaXR5RXhjZXB0aW9uKCAiSGlzdG9yeSBpcyBub3QgYWNjZXM9CnNpYmxlIHRvIHRo
ZSBjdXJyZW50IHVzZXIiLCB0eXBlPTNEJ2Vycm9yJyApCisgICAgICAgICMgTm93IG1hcmsgdGhl
IGhpc3RvcnkgYXMgcHVyZ2VkCisgICAgICAgIHN1cGVyKCBIaXN0b3J5TWFuYWdlciwgc2VsZiAp
LnB1cmdlKCB0cmFucywgaGlzdG9yeSwgZmx1c2g9M0RmbHVzaD0KLCAqKmt3YXJncyApCj0yMAot
ICAgICNUT0RPOiBibGVoLi4uCisgICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLj0KLi4uLi4gc2VyaWFsaXphdGlv
bgorICAgICNUT0RPOiBtb3ZlIHRvIHNlcmlhbGl6ZXIKICAgICBkZWYgX2dldF9oaXN0b3J5X2Rh
dGEoIHNlbGYsIHRyYW5zLCBoaXN0b3J5ICk6CiAgICAgICAgICIiIgogICAgICAgICBSZXR1cm5z
IGEgZGljdGlvbmFyeSBjb250YWluaW5nIGBgaGlzdG9yeWBgIGFuZCBgYGNvbnRlbnRzYGAsIHNl
cmk9CmFsaXplZApAQCAtMTkxLDUzICsxNDgsMTc0IEBACiAgICAgICAgICAgICAnY29udGVudHMn
ICA6IGNvbnRlbnRzX2RpY3Rpb25hcmllcwogICAgICAgICB9Cj0yMAotICAgIGRlZiBnZXRfaGlz
dG9yeV9kaWN0KCBzZWxmLCB0cmFucywgaGlzdG9yeSwgY29udGVudHNfZGljdGlvbmFyaWVzPTNE
Tm89Cm5lICk6CisgICAgIyByZW1vdmUgdGhpcworICAgIGRlZiBnZXRfc3RhdGVfY291bnRzKCBz
ZWxmLCB0cmFucywgaGlzdG9yeSwgZXhjbHVkZV9kZWxldGVkPTNEVHJ1ZSwgZXg9CmNsdWRlX2hp
ZGRlbj0zREZhbHNlICk6CiAgICAgICAgICIiIgotICAgICAgICBSZXR1cm5zIGhpc3RvcnkgZGF0
YSBpbiB0aGUgZm9ybSBvZiBhIGRpY3Rpb25hcnkuCiAgICAgICAgICIiIgotICAgICAgICAjVE9E
TzogdG8gc2VyaWFsaXplcgotICAgICAgICBoaXN0b3J5X2RpY3QgPTNEIGhpc3RvcnkudG9fZGlj
dCggdmlldz0zRCdlbGVtZW50JywgdmFsdWVfbWFwcGVyPQo9M0R7ICdpZCc6dHJhbnMuc2VjdXJp
dHkuZW5jb2RlX2lkIH0pCi0gICAgICAgIGhpc3RvcnlfZGljdFsgJ3VzZXJfaWQnIF0gPTNEIE5v
bmUKLSAgICAgICAgaWYgaGlzdG9yeS51c2VyX2lkOgotICAgICAgICAgICAgaGlzdG9yeV9kaWN0
WyAndXNlcl9pZCcgXSA9M0QgdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBoaXN0b3I9CnkudXNl
cl9pZCApCisgICAgICAgICNUT0RPOiB0aGUgZGVmYXVsdCBmbGFncyBhYm92ZSBtYXkgbm90IG1h
a2UgYSBsb3Qgb2Ygc2Vuc2UgKFQsVD8pCisgICAgICAgIHN0YXRlX2NvdW50cyA9M0Qge30KKyAg
ICAgICAgZm9yIHN0YXRlIGluIHRyYW5zLmFwcC5tb2RlbC5EYXRhc2V0LnN0YXRlcy52YWx1ZXMo
KToKKyAgICAgICAgICAgIHN0YXRlX2NvdW50c1sgc3RhdGUgXSA9M0QgMAo9MjAKLSAgICAgICAg
aGlzdG9yeV9kaWN0WyAnbmljZV9zaXplJyBdID0zRCBoaXN0b3J5LmdldF9kaXNrX3NpemUoIG5p
Y2Vfc2l6ZT0KPTNEVHJ1ZSApCi0gICAgICAgIGhpc3RvcnlfZGljdFsgJ2Fubm90YXRpb24nIF0g
PTNEIGhpc3RvcnkuZ2V0X2l0ZW1fYW5ub3RhdGlvbl9zdHIoID0KdHJhbnMuc2Ffc2Vzc2lvbiwg
aGlzdG9yeS51c2VyLCBoaXN0b3J5ICkKLSAgICAgICAgaWYgbm90IGhpc3RvcnlfZGljdFsgJ2Fu
bm90YXRpb24nIF06Ci0gICAgICAgICAgICBoaXN0b3J5X2RpY3RbICdhbm5vdGF0aW9uJyBdID0z
RCAnJworICAgICAgICAjVE9ETzo/PyBjb2xsZWN0aW9ucyBhbmQgY29sbC4gc3RhdGVzPworICAg
ICAgICBmb3IgaGRhIGluIGhpc3RvcnkuZGF0YXNldHM6CisgICAgICAgICAgICBpZiBleGNsdWRl
X2RlbGV0ZWQgYW5kIGhkYS5kZWxldGVkOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAg
ICAgICAgICBpZiBleGNsdWRlX2hpZGRlbiBhbmQgbm90IGhkYS52aXNpYmxlOgorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzdGF0ZV9jb3VudHNbIGhkYS5zdGF0ZSBdID0z
RCBzdGF0ZV9jb3VudHNbIGhkYS5zdGF0ZSBdICsgMQorICAgICAgICByZXR1cm4gc3RhdGVfY291
bnRzCj0yMAotICAgICAgICAjVE9ETzogaXRlbV9zbHVnIHVybAotICAgICAgICBpZiBoaXN0b3J5
X2RpY3RbICdpbXBvcnRhYmxlJyBdIGFuZCBoaXN0b3J5X2RpY3RbICdzbHVnJyBdOgotICAgICAg
ICAgICAgdXNlcm5hbWVfYW5kX3NsdWcgPTNEICggJy8nICkuam9pbigoICd1JywgaGlzdG9yeS51
c2VyLnVzZXJuYW09CmUsICdoJywgaGlzdG9yeV9kaWN0WyAnc2x1ZycgXSApKQotICAgICAgICAg
ICAgaGlzdG9yeV9kaWN0WyAndXNlcm5hbWVfYW5kX3NsdWcnIF0gPTNEIHVzZXJuYW1lX2FuZF9z
bHVnCisgICAgIyByZW1vdmUgdGhpcworICAgIGRlZiBnZXRfc3RhdGVfaWRzKCBzZWxmLCB0cmFu
cywgaGlzdG9yeSApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCisgICAgICAgIHN0YXRlX2lk
cyA9M0Qge30KKyAgICAgICAgZm9yIHN0YXRlIGluIHRyYW5zLmFwcC5tb2RlbC5EYXRhc2V0LnN0
YXRlcy52YWx1ZXMoKToKKyAgICAgICAgICAgIHN0YXRlX2lkc1sgc3RhdGUgXSA9M0QgW10KPTIw
Ci0jVE9ETzogcmUtYWRkCi0gICAgICAgICNoZGFfc3VtbWFyaWVzID0zRCBoZGFfZGljdGlvbmFy
aWVzIGlmIGhkYV9kaWN0aW9uYXJpZXMgZWxzZSBzZWxmLj0KZ2V0X2hkYV9zdW1tYXJ5X2RpY3Rz
KCB0cmFucywgaGlzdG9yeSApCi0gICAgICAgICMjVE9ETyByZW1vdmUgdGhlIGZvbGxvd2luZyBp
biB2MgotICAgICAgICAjKCBzdGF0ZV9jb3VudHMsIHN0YXRlX2lkcyApID0zRCBzZWxmLl9nZXRf
aGRhX3N0YXRlX3N1bW1hcmllcyggdHI9CmFucywgaGRhX3N1bW1hcmllcyApCi0gICAgICAgICNo
aXN0b3J5X2RpY3RbICdzdGF0ZV9kZXRhaWxzJyBdID0zRCBzdGF0ZV9jb3VudHMKLSAgICAgICAg
I2hpc3RvcnlfZGljdFsgJ3N0YXRlX2lkcycgXSA9M0Qgc3RhdGVfaWRzCi0gICAgICAgICNoaXN0
b3J5X2RpY3RbICdzdGF0ZScgXSA9M0Qgc2VsZi5fZ2V0X2hpc3Rvcnlfc3RhdGVfZnJvbV9oZGFz
KCB0cj0KYW5zLCBoaXN0b3J5LCBzdGF0ZV9jb3VudHMgKQorICAgICAgICAjVE9ETzo/PyBjb2xs
ZWN0aW9ucyBhbmQgY29sbC4gc3RhdGVzPworICAgICAgICBmb3IgaGRhIGluIGhpc3RvcnkuZGF0
YXNldHM6CisgICAgICAgICAgICAjVE9ETzogZG8gbm90IGVuY29kZSBpZHMgYXQgdGhpcyBsYXll
cgorICAgICAgICAgICAgZW5jb2RlZF9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBo
ZGEuaWQgKQorICAgICAgICAgICAgc3RhdGVfaWRzWyBoZGEuc3RhdGUgXS5hcHBlbmQoIGVuY29k
ZWRfaWQgKQorICAgICAgICByZXR1cm4gc3RhdGVfaWRzCj0yMAotICAgICAgICByZXR1cm4gaGlz
dG9yeV9kaWN0CisgICAgI1RPRE86IHJlbW92ZSB0aGlzIChpcyBzdGF0ZSB1c2VkL3VzZWZ1bD8p
CisgICAgZGVmIGdldF9oaXN0b3J5X3N0YXRlKCBzZWxmLCB0cmFucywgaGlzdG9yeSApOgorICAg
ICAgICAiIiJSZXR1cm5zIHRoZSBoaXN0b3J5IHN0YXRlIGJhc2VkIG9uIHRoZSBzdGF0ZXMgb2Yg
dGhlIEhEQXMgaXQgY289Cm50YWlucy4KKyAgICAgICAgIiIiCisgICAgICAgIHN0YXRlcyA9M0Qg
dHJhbnMuYXBwLm1vZGVsLkRhdGFzZXQuc3RhdGVzCj0yMAotICAgIGRlZiBtb3N0X3JlY2VudCgg
c2VsZiwgdHJhbnMsIHVzZXI9M0ROb25lLCBkZWxldGVkPTNERmFsc2UgKToKLSAgICAgICAgdXNl
ciA9M0QgdXNlciBvciB0cmFucy51c2VyCi0gICAgICAgIGlmIG5vdCB1c2VyOgotICAgICAgICAg
ICAgcmV0dXJuIE5vbmUgaWYgdHJhbnMuaGlzdG9yeS5kZWxldGVkIGVsc2UgdHJhbnMuaGlzdG9y
eQorICAgICAgICAjIChkZWZhdWx0IHRvIEVSUk9SKQorICAgICAgICBzdGF0ZSA9M0Qgc3RhdGVz
LkVSUk9SCj0yMAotICAgICAgICAjVE9ETzogZHVwIHdpdGggYnlfdXNlciAtIHNob3VsZCByZXR1
cm4gcXVlcnkgZnJvbSB0aGVyZSBhbmQgY2FsbCA9CmZpcnN0IGFuZCBub3QgYWxsCi0gICAgICAg
IGhpc3RvcnlfbW9kZWwgPTNEIHRyYW5zLm1vZGVsLkhpc3RvcnkKLSAgICAgICAgcXVlcnkgPTNE
ICggdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggaGlzdG9yeV9tb2RlbCApCi0gICAgICAgICAgICAg
ICAgICAuZmlsdGVyKCBoaXN0b3J5X21vZGVsLnVzZXIgPTNEPTNEIHVzZXIgKQotICAgICAgICAg
ICAgICAgICAgLm9yZGVyX2J5KCBvcm0uZGVzYyggaGlzdG9yeV9tb2RlbC50YWJsZS5jLnVwZGF0
ZV90aW1lICk9CiApICkKLSAgICAgICAgaWYgbm90IGRlbGV0ZWQ6Ci0gICAgICAgICAgICBxdWVy
eSA9M0QgcXVlcnkuZmlsdGVyKCBoaXN0b3J5X21vZGVsLmRlbGV0ZWQgPTNEPTNEIEZhbHNlICkK
LSAgICAgICAgcmV0dXJuIHF1ZXJ5LmZpcnN0KCkKKyAgICAgICAgI1RPRE86IGhpc3Rvcnlfc3Rh
dGUgYW5kIHN0YXRlX2NvdW50cyBhcmUgY2xhc3NpY2FsbHkgY2FsYydkIGF0IHRoPQplIHNhbWUg
dGltZQorICAgICAgICAjICAgc28gdGhpcyBpcyByZWwuIGluZWZmLiAtIGlmIHdlIGtlZXAgdGhp
cy4uLgorICAgICAgICBoZGFfc3RhdGVfY291bnRzID0zRCBzZWxmLmdldF9zdGF0ZV9jb3VudHMo
IHRyYW5zLCBoaXN0b3J5LCBleGNsdWQ9CmVfZGVsZXRlZD0zREZhbHNlICkKKyAgICAgICAgbnVt
X2hkYXMgPTNEIHN1bSggaGRhX3N0YXRlX2NvdW50cy52YWx1ZXMoKSApCisgICAgICAgIGlmIG51
bV9oZGFzID0zRD0zRCAwOgorICAgICAgICAgICAgc3RhdGUgPTNEIHN0YXRlcy5ORVcKPTIwCi0j
ID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
Cj0zRD0zRD0zRAotY2xhc3MgSGlzdG9yeVNlcmlhbGl6ZXIoIG1hbmFnZXJfYmFzZS5Nb2RlbFNl
cmlhbGl6ZXIgKToKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmKCAoIGhkYV9zdGF0ZV9j
b3VudHNbIHN0YXRlcy5SVU5OSU5HIF0gPiAwICkKKyAgICAgICAgICAgIG9yICAoIGhkYV9zdGF0
ZV9jb3VudHNbIHN0YXRlcy5TRVRUSU5HX01FVEFEQVRBIF0gPiAwICkKKyAgICAgICAgICAgIG9y
ICAoIGhkYV9zdGF0ZV9jb3VudHNbIHN0YXRlcy5VUExPQUQgXSA+IDAgKSApOgorICAgICAgICAg
ICAgICAgIHN0YXRlID0zRCBzdGF0ZXMuUlVOTklORworICAgICAgICAgICAgI1RPRE86IHRoaXMg
bWV0aG9kIG1heSBiZSBtb3JlIHVzZWZ1bCBpZiB3ZSAqYWxzbyogcG9sbGVkIHRoZSA9Cmhpc3Rv
cmllcyBqb2JzIGhlcmUgdG9vCisKKyAgICAgICAgICAgIGVsaWYgaGRhX3N0YXRlX2NvdW50c1sg
c3RhdGVzLlFVRVVFRCBdID4gMDoKKyAgICAgICAgICAgICAgICBzdGF0ZSA9M0Qgc3RhdGVzLlFV
RVVFRAorCisgICAgICAgICAgICBlbGlmKCAoIGhkYV9zdGF0ZV9jb3VudHNbIHN0YXRlcy5FUlJP
UiBdID4gMCApCisgICAgICAgICAgICBvciAgICAoIGhkYV9zdGF0ZV9jb3VudHNbIHN0YXRlcy5G
QUlMRURfTUVUQURBVEEgXSA+IDAgKSApOgorICAgICAgICAgICAgICAgIHN0YXRlID0zRCBzdGF0
ZXMuRVJST1IKKworICAgICAgICAgICAgZWxpZiBoZGFfc3RhdGVfY291bnRzWyBzdGF0ZXMuT0sg
XSA9M0Q9M0QgbnVtX2hkYXM6CisgICAgICAgICAgICAgICAgc3RhdGUgPTNEIHN0YXRlcy5PSwor
CisgICAgICAgIHJldHVybiBzdGF0ZQorCisKKyMjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRAorY2xhc3MgSGlzdG9yeVNl
cmlhbGl6ZXIoIGJhc2UuTW9kZWxTZXJpYWxpemVyICk6CiAgICAgIiIiCiAgICAgSW50ZXJmYWNl
L3NlcnZpY2Ugb2JqZWN0IGZvciBzZXJpYWxpemluZyBoaXN0b3JpZXMgaW50byBkaWN0aW9uYXJp
ZXMuCiAgICAgIiIiCi0gICAgcGFzcworCisgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToK
KyAgICAgICAgc3VwZXIoIEhpc3RvcnlTZXJpYWxpemVyLCBzZWxmICkuX19pbml0X18oIGFwcCAp
CisgICAgICAgIHNlbGYuaGlzdG9yeV9tZ3IgPTNEIEhpc3RvcnlNYW5hZ2VyKCBhcHAgKQorCisg
ICAgICAgIHN1bW1hcnlfdmlldyA9M0QgWworICAgICAgICAgICAgJ2lkJywKKyAgICAgICAgICAg
ICdtb2RlbF9jbGFzcycsCisgICAgICAgICAgICAnbmFtZScsCisgICAgICAgICAgICAnZGVsZXRl
ZCcsICdwdXJnZWQnLAorICAgICAgICAgICAgJ3B1Ymxpc2hlZCcsCisgICAgICAgICAgICAjJ2Nv
dW50JworICAgICAgICAgICAgJ2Fubm90YXRpb24nLAorICAgICAgICAgICAgJ3RhZ3MnLAorICAg
ICAgICAgICAgJ3VybCcKKyAgICAgICAgXQorICAgICAgICAjIGluIHRoZSBIaXN0b3J5cycgY2Fz
ZSwgZWFjaCBvZiB0aGVzZSB2aWV3cyBpbmNsdWRlcyB0aGUga2V5cyBmcm89Cm0gdGhlIHByZXZp
b3VzCisgICAgICAgIGRldGFpbGVkX3ZpZXcgPTNEIHN1bW1hcnlfdmlldyArIFsKKyAgICAgICAg
ICAgICdjb250ZW50c191cmwnLAorICAgICAgICAgICAgIydoZGFzJywKKyAgICAgICAgICAgICdl
bXB0eScsCisgICAgICAgICAgICAnc2l6ZScsICduaWNlX3NpemUnLAorICAgICAgICAgICAgJ3Vz
ZXJfaWQnLAorICAgICAgICAgICAgJ2NyZWF0ZV90aW1lJywgJ3VwZGF0ZV90aW1lJywKKyAgICAg
ICAgICAgICdpbXBvcnRhYmxlJywgJ3NsdWcnLAorICAgICAgICAgICAgJ2dlbm9tZV9idWlsZCcs
CisgICAgICAgICAgICAjdXNlcm5hbWVfYW5kX3NsdWcgPTNEICggJy8nICkuam9pbigoICd1Jywg
aGlzdG9yeS51c2VyLnVzZXJuYT0KbWUsICdoJywgaGlzdG9yeV9kaWN0WyAnc2x1ZycgXSApKQor
ICAgICAgICAgICAgI1RPRE86IHJlbW92ZSB0aGUgbmV4dCB0aHJlZSAtIGluc3RlYWQgZ2V0dGlu
ZyB0aGUgc2FtZSBpbmZvIGY9CnJvbSB0aGUgJ2hkYXMnIGxpc3QKKyAgICAgICAgICAgICdzdGF0
ZScsCisgICAgICAgICAgICAnc3RhdGVfZGV0YWlscycsCisgICAgICAgICAgICAnc3RhdGVfaWRz
JywKKyAgICAgICAgXQorICAgICAgICBleHRlbmRlZF92aWV3ID0zRCBkZXRhaWxlZF92aWV3ICsg
WworICAgICAgICBdCisgICAgICAgIHNlbGYuc2VyaWFsaXphYmxlX2tleXMgPTNEIGV4dGVuZGVk
X3ZpZXcgKyBbXQorICAgICAgICBzZWxmLnZpZXdzID0zRCB7CisgICAgICAgICAgICAnc3VtbWFy
eScgICA6IHN1bW1hcnlfdmlldywKKyAgICAgICAgICAgICdkZXRhaWxlZCcgIDogZGV0YWlsZWRf
dmlldywKKyAgICAgICAgICAgICdleHRlbmRlZCcgIDogZXh0ZW5kZWRfdmlldywKKyAgICAgICAg
fQorICAgICAgICBzZWxmLmRlZmF1bHRfdmlldyA9M0QgJ3N1bW1hcnknCisKKyAgICAjYXNzdW1l
czogb3V0Z29pbmcgdG8ganNvbi5kdW1wcyBhbmQgc2FuaXRpemVkCisgICAgZGVmIGFkZF9zZXJp
YWxpemVycyggc2VsZiApOgorICAgICAgICBzdXBlciggSGlzdG9yeVNlcmlhbGl6ZXIsIHNlbGYg
KS5hZGRfc2VyaWFsaXplcnMoKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZXJzLnVwZGF0ZSh7Cisg
ICAgICAgICAgICAnbW9kZWxfY2xhc3MnICAgOiBsYW1iZGEgKmE6ICdIaXN0b3J5JywKKyAgICAg
ICAgICAgICdpZCcgICAgICAgICAgICA6IHNlbGYuc2VyaWFsaXplX2lkLAorICAgICAgICAgICAg
J2NvdW50JyAgICAgICAgIDogbGFtYmRhIHRyYW5zLCBpdGVtLCBrZXk6IGxlbiggaXRlbS5kYXRh
c2V0cyA9CiksCisgICAgICAgICAgICAnY3JlYXRlX3RpbWUnICAgOiBzZWxmLnNlcmlhbGl6ZV9k
YXRlLAorICAgICAgICAgICAgJ3VwZGF0ZV90aW1lJyAgIDogc2VsZi5zZXJpYWxpemVfZGF0ZSwK
KyAgICAgICAgICAgICd1c2VyX2lkJyAgICAgICA6IHNlbGYuc2VyaWFsaXplX2lkLAorICAgICAg
ICAgICAgJ2hkYXMnICAgICAgICAgIDogbGFtYmRhIHQsIGksIGs6IFsgdC5zZWN1cml0eS5lbmNv
ZGVfaWQoIGhkYS49CmlkICkgZm9yIGhkYSBpbiBpLmRhdGFzZXRzIF0sCisgICAgICAgICAgICAn
c2l6ZScgICAgICAgICAgOiBsYW1iZGEgdCwgaSwgazogaW50KCBpLmdldF9kaXNrX3NpemUoKSAp
LAorICAgICAgICAgICAgJ25pY2Vfc2l6ZScgICAgIDogbGFtYmRhIHQsIGksIGs6IGkuZ2V0X2Rp
c2tfc2l6ZSggbmljZV9zaXplPQo9M0RUcnVlICksCisgICAgICAgICAgICAjVE9ETzogdG8gbWl4
aW5zOiBhbm5vdGF0YWJsZSwgdGFnZ2FibGUKKyAgICAgICAgICAgICdhbm5vdGF0aW9uJyAgICA6
IGxhbWJkYSB0LCBpLCBrOiBpLmdldF9pdGVtX2Fubm90YXRpb25fc3RyKCB0PQouc2Ffc2Vzc2lv
biwgdC51c2VyLCBpICksCisgICAgICAgICAgICAndGFncycgICAgICAgICAgOiBsYW1iZGEgdCwg
aSwgazogWyB0YWcudXNlcl90bmFtZSArICggJzonICsgdD0KYWcudXNlcl92YWx1ZSBpZiB0YWcu
dXNlcl92YWx1ZSBlbHNlICcnICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciB0YWcgaW4gaS50YWdzIF0sCisgICAgICAgICAgICAndXJsJyAgICAg
ICAgICAgOiBsYW1iZGEgdCwgaSwgazogZ2FsYXh5LndlYi51cmxfZm9yKCAnaGlzdG9yeT0KJywg
aWQ9M0R0LnNlY3VyaXR5LmVuY29kZV9pZCggaS5pZCApICksCisgICAgICAgICAgICAnY29udGVu
dHNfdXJsJyAgOiBsYW1iZGEgdCwgaSwgazoKKyAgICAgICAgICAgICAgICBnYWxheHkud2ViLnVy
bF9mb3IoICdoaXN0b3J5X2NvbnRlbnRzJywgaGlzdG9yeV9pZD0zRHQuc2VjPQp1cml0eS5lbmNv
ZGVfaWQoIGkuaWQgKSApLAorICAgICAgICAgICAgJ2VtcHR5JyAgICAgICAgIDogbGFtYmRhIHQs
IGksIGs6IGxlbiggaS5kYXRhc2V0cyApIDw9M0QgMCwKKworICAgICAgICAgICAgJ3N0YXRlJyAg
ICAgICAgIDogbGFtYmRhIHQsIGksIGs6IHNlbGYuaGlzdG9yeV9tZ3IuZ2V0X2hpc3Rvcnk9Cl9z
dGF0ZSggdCwgaSApLAorICAgICAgICAgICAgJ3N0YXRlX2RldGFpbHMnIDogbGFtYmRhIHQsIGks
IGs6IHNlbGYuaGlzdG9yeV9tZ3IuZ2V0X3N0YXRlX2M9Cm91bnRzKCB0LCBpICksCisgICAgICAg
ICAgICAnc3RhdGVfaWRzJyAgICAgOiBsYW1iZGEgdCwgaSwgazogc2VsZi5oaXN0b3J5X21nci5n
ZXRfc3RhdGVfaT0KZHMoIHQsIGkgKSwKKyAgICAgICAgfSkKKworIyMgPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNECitjbGFz
cyBIaXN0b3J5RGVzZXJpYWxpemVyKCBiYXNlLk1vZGVsRGVzZXJpYWxpemVyICk6CisgICAgIiIi
CisgICAgSW50ZXJmYWNlL3NlcnZpY2Ugb2JqZWN0IGZvciB2YWxpZGF0aW5nIGFuZCBkZXNlcmlh
bGl6aW5nIGRpY3Rpb25hcmllcz0KIGludG8gaGlzdG9yaWVzLgorICAgICIiIgorCisgICAgZGVm
IF9faW5pdF9fKCBzZWxmLCBhcHAgKToKKyAgICAgICAgc3VwZXIoIEhpc3RvcnlEZXNlcmlhbGl6
ZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwICkKKyAgICAgICAgc2VsZi5oaXN0b3J5X21nciA9M0Qg
SGlzdG9yeU1hbmFnZXIoIGFwcCApCisKKyAgICAjYXNzdW1lczogaW5jb21pbmcgZnJvbSBqc29u
LmxvYWRzIGFuZCBzYW5pdGl6ZWQKKyAgICBkZWYgYWRkX2Rlc2VyaWFsaXplcnMoIHNlbGYgKToK
KyAgICAgICAgc3VwZXIoIEhpc3RvcnlEZXNlcmlhbGl6ZXIsIHNlbGYgKS5hZGRfZGVzZXJpYWxp
emVycygpCisgICAgICAgIHNlbGYuZGVzZXJpYWxpemVycy51cGRhdGUoeworICAgICAgICAgICAg
J25hbWUnICAgICAgICAgIDogc2VsZi5kZXNlcmlhbGl6ZV9iYXNlc3RyaW5nLAorICAgICAgICAg
ICAgJ2dlbm9tZV9idWlsZCcgIDogc2VsZi5kZXNlcmlhbGl6ZV9nZW5vbWVfYnVpbGQsCisgICAg
ICAgICAgICAjIG1peGluOiBhbm5vdGF0YWJsZQorICAgICAgICAgICAgJ2Fubm90YXRpb24nICAg
IDogc2VsZi5kZXNlcmlhbGl6ZV9hbm5vdGF0aW9uLAorICAgICAgICAgICAgIyBtaXhpbjogdGFn
Z2FibGUKKyAgICAgICAgICAgICd0YWdzJyAgICAgICAgICA6IHNlbGYuZGVzZXJpYWxpemVfdGFn
cywKKworICAgICAgICAgICAgIyBtaXhpbjogZGVsZXRhYmxlCisgICAgICAgICAgICAnZGVsZXRl
ZCcgICAgICAgOiBzZWxmLmRlc2VyaWFsaXplX2Jvb2wsCisgICAgICAgICAgICAjIHNoYXJhYmxl
CisgICAgICAgICAgICAncHVibGlzaGVkJyAgICAgOiBzZWxmLmRlc2VyaWFsaXplX2Jvb2wsCisg
ICAgICAgICAgICAnaW1wb3J0YWJsZScgICAgOiBzZWxmLmRlc2VyaWFsaXplX2Jvb2wsCisgICAg
ICAgIH0pCisgICAgICAgIHNlbGYuZGVzZXJpYWxpemFibGVfa2V5cyA9M0Qgc2VsZi5kZXNlcmlh
bGl6ZXJzLmtleXMoKQoKZGlmZiAtciBjYzcxNDc1MTRkNzc3OTk5ODk3NzdmZDIxYWE4MThlNDNk
OWYzZDM5IC1yIDc0MGQ3NThjMjI4NWJlYzE0MGU2OTAxPQowMjVlOTA2ZjUwYTBkN2EyYSBsaWIv
Z2FsYXh5L21hbmFnZXJzL2xkZGFzLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvbGRkYXMu
cHkKKysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vycy9sZGRhcy5weQpAQCAtNSw3ICs1LDcgQEAKICAg
ICAiIiIgQSBmYWlybHkgc3BhcnNlIG1hbmFnZXIgZm9yIExEREFzLgogICAgICIiIgo9MjAKLSAg
ICBkZWYgX19pbml0X18oIHNlbGYgKToKKyAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgog
ICAgICAgICAiIiIKICAgICAgICAgU2V0IHVwIGFuZCBpbml0aWFsaXplIG90aGVyIG1hbmFnZXJz
IG5lZWRlZCBieSBsZGRhcy4KICAgICAgICAgIiIiCgpUaGlzIGRpZmYgaXMgc28gYmlnIHRoYXQg
d2UgbmVlZGVkIHRvIHRydW5jYXRlIHRoZSByZW1haW5kZXIuCgpodHRwczovL2JpdGJ1Y2tldC5v
cmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvOTVlMzA1ZGIyOWI3LwpDaGFuZ2VzZXQ6
ICAgOTVlMzA1ZGIyOWI3ClVzZXI6ICAgICAgICBjYXJsZmViZXJoYXJkCkRhdGU6ICAgICAgICAy
MDE0LTEyLTE4IDE1OjU3OjIwKzAwOjAwClN1bW1hcnk6ICAgICBNZXJnZWQgZ2FsYXh5L2dhbGF4
eS1jZW50cmFsIGludG8gZGVmYXVsdApBZmZlY3RlZCAjOiAgMTEgZmlsZXMKCmRpZmYgLXIgNzQw
ZDc1OGMyMjg1YmVjMTQwZTY5MDEwMjVlOTA2ZjUwYTBkN2EyYSAtciA5NWUzMDVkYjI5YjdlYjAy
OGIwOTc2Mj0KZDAwYmQzMDVjNGM3ODIzZTEgY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy9kYXRh
LmpzCi0tLSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvZGF0YS5qcworKysgYi9jbGllbnQv
Z2FsYXh5L3NjcmlwdHMvbXZjL2RhdGEuanMKQEAgLTE2OSw3ICsxNjksOCBAQAogICAgICAgICB9
KTsKICAgICAgICAgdGhpcy4kZWwuYXBwZW5kKGRhdGFfdGFibGUpOwogICAgICAgICB2YXIgY29s
dW1uX25hbWVzID0zRCB0aGlzLm1vZGVsLmdldF9tZXRhZGF0YSgnY29sdW1uX25hbWVzJyksCi0g
ICAgICAgICAgICBoZWFkZXJfcm93ID0zRCAkKCc8dHIvPicpLmFwcGVuZFRvKGRhdGFfdGFibGUp
OworICAgICAgICAgICAgaGVhZGVyX2NvbnRhaW5lciA9M0QgJCgnPHRoZWFkLz4nKS5hcHBlbmRU
byhkYXRhX3RhYmxlKSwKKyAgICAgICAgICAgIGhlYWRlcl9yb3cgPTNEICQoJzx0ci8+JykuYXBw
ZW5kVG8oaGVhZGVyX2NvbnRhaW5lcik7CiAgICAgICAgIGlmIChjb2x1bW5fbmFtZXMpIHsKICAg
ICAgICAgICAgIGhlYWRlcl9yb3cuYXBwZW5kKCc8dGg+JyArIGNvbHVtbl9uYW1lcy5qb2luKCc8
L3RoPjx0aD4nKSArICc8PQovdGg+Jyk7CiAgICAgICAgIH0gZWxzZSB7CgpkaWZmIC1yIDc0MGQ3
NThjMjI4NWJlYzE0MGU2OTAxMDI1ZTkwNmY1MGEwZDdhMmEgLXIgOTVlMzA1ZGIyOWI3ZWIwMjhi
MDk3NjI9CmQwMGJkMzA1YzRjNzgyM2UxIGxpYi9nYWxheHkvdG9vbHMvcGFyc2VyL3htbC5weQot
LS0gYS9saWIvZ2FsYXh5L3Rvb2xzL3BhcnNlci94bWwucHkKKysrIGIvbGliL2dhbGF4eS90b29s
cy9wYXJzZXIveG1sLnB5CkBAIC0xODYsNiArMTg2LDExIEBACiAgICAgcnZhbCA9M0QgZGljdCgK
ICAgICAgICAgb3V0cHV0cz0zRF9fcGFyc2Vfb3V0cHV0X2VsZW1zKHRlc3RfZWxlbSksCiAgICAg
ICAgIGlucHV0cz0zRF9fcGFyc2VfaW5wdXRfZWxlbXModGVzdF9lbGVtLCBpKSwKKyAgICAgICAg
Y29tbWFuZD0zRF9fcGFyc2VfYXNzZXJ0X2xpc3RfZnJvbV9lbGVtKCB0ZXN0X2VsZW0uZmluZCgi
YXNzZXJ0X2NvPQptbWFuZCIpICksCisgICAgICAgIHN0ZG91dD0zRF9fcGFyc2VfYXNzZXJ0X2xp
c3RfZnJvbV9lbGVtKCB0ZXN0X2VsZW0uZmluZCgiYXNzZXJ0X3N0ZD0Kb3V0IikgKSwKKyAgICAg
ICAgc3RkZXJyPTNEX19wYXJzZV9hc3NlcnRfbGlzdF9mcm9tX2VsZW0oIHRlc3RfZWxlbS5maW5k
KCJhc3NlcnRfc3RkPQplcnIiKSApLAorICAgICAgICBleHBlY3RfZXhpdF9jb2RlPTNEdGVzdF9l
bGVtLmdldCgiZXhwZWN0X2V4aXRfY29kZSIpLAorICAgICAgICBleHBlY3RfZmFpbHVyZT0zRHN0
cmluZ19hc19ib29sKHRlc3RfZWxlbS5nZXQoImV4cGVjdF9mYWlsdXJlIiwgRmE9CmxzZSkpLAog
ICAgICkKICAgICBfY29weV90b19kaWN0X2lmX3ByZXNlbnQodGVzdF9lbGVtLCBydmFsLCBbImlu
dGVyYWN0b3IiLCAibnVtX291dHB1dHMiPQpdKQogICAgIHJldHVybiBydmFsCkBAIC0yMjIsNiAr
MjI3LDExIEBACiAgICAgcmV0dXJuIG5hbWUsIGZpbGUsIGF0dHJpYnV0ZXMKPTIwCj0yMAorZGVm
IF9fcGFyc2VfY29tbWFuZF9lbGVtKCB0ZXN0X2VsZW0gKToKKyAgICBhc3NlcnRfZWxlbSA9M0Qg
dGVzdF9lbGVtLmZpbmQoImNvbW1hbmQiKQorICAgIHJldHVybiBfX3BhcnNlX2Fzc2VydF9saXN0
X2Zyb21fZWxlbSggYXNzZXJ0X2VsZW0gKQorCisKIGRlZiBfX3BhcnNlX3Rlc3RfYXR0cmlidXRl
cyggb3V0cHV0X2VsZW0sIGF0dHJpYiApOgogICAgIGFzc2VydF9saXN0ID0zRCBfX3BhcnNlX2Fz
c2VydF9saXN0KCBvdXRwdXRfZWxlbSApCiAgICAgZmlsZSA9M0QgYXR0cmliLnBvcCggJ2ZpbGUn
LCBOb25lICkKQEAgLTI1Miw2ICsyNjIsMTAgQEAKPTIwCiBkZWYgX19wYXJzZV9hc3NlcnRfbGlz
dCggb3V0cHV0X2VsZW0gKToKICAgICBhc3NlcnRfZWxlbSA9M0Qgb3V0cHV0X2VsZW0uZmluZCgi
YXNzZXJ0X2NvbnRlbnRzIikKKyAgICByZXR1cm4gX19wYXJzZV9hc3NlcnRfbGlzdF9mcm9tX2Vs
ZW0oIGFzc2VydF9lbGVtICkKKworCitkZWYgX19wYXJzZV9hc3NlcnRfbGlzdF9mcm9tX2VsZW0o
IGFzc2VydF9lbGVtICk6CiAgICAgYXNzZXJ0X2xpc3QgPTNEIE5vbmUKPTIwCiAgICAgZGVmIGNv
bnZlcnRfZWxlbShlbGVtKToKCmRpZmYgLXIgNzQwZDc1OGMyMjg1YmVjMTQwZTY5MDEwMjVlOTA2
ZjUwYTBkN2EyYSAtciA5NWUzMDVkYjI5YjdlYjAyOGIwOTc2Mj0KZDAwYmQzMDVjNGM3ODIzZTEg
bGliL2dhbGF4eS90b29scy9wYXJzZXIveWFtbC5weQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xzL3Bh
cnNlci95YW1sLnB5CisrKyBiL2xpYi9nYWxheHkvdG9vbHMvcGFyc2VyL3lhbWwucHkKQEAgLTE1
MiwyNyArMTUyLDQ3IEBACiAgICAgICAgIGF0dHJpYnV0ZXNbIm1ldGFkYXRhIl0gPTNEIHt9CiAg
ICAgICAgICMgVE9ETwogICAgICAgICBhc3NlcnRfbGlzdCA9M0QgW10KLSAgICAgICAgZm9yIGtl
eSwgYXNzZXJ0aW9uIGluIGF0dHJpYnV0ZXMuZ2V0KCJhc3NlcnRzIiwge30pLml0ZXJpdGVtcygp
OgotICAgICAgICAgICAgIyBUT0RPOiBub3QgaGFuZGxpbmcgbmVzdGVkIGFzc2VydGlvbnMgY29y
cmVjdGx5LAotICAgICAgICAgICAgIyBub3Qgc3VyZSB0aGVzZSBhcmUgdXNlZCB0aG91Z2guCi0g
ICAgICAgICAgICBjaGlsZHJlbiA9M0QgW10KLSAgICAgICAgICAgIGlmICJjaGlsZHJlbiIgaW4g
YXNzZXJ0aW9uOgotICAgICAgICAgICAgICAgIGNoaWxkcmVuID0zRCBhc3NlcnRpb25bImNoaWxk
cmVuIl0KLSAgICAgICAgICAgICAgICBkZWwgYXNzZXJ0aW9uWyJjaGlsZHJlbiJdCi0gICAgICAg
ICAgICBhc3NlcnRfZGljdCA9M0QgZGljdCgKLSAgICAgICAgICAgICAgICB0YWc9M0RrZXksCi0g
ICAgICAgICAgICAgICAgYXR0cmlidXRlcz0zRGFzc2VydGlvbiwKLSAgICAgICAgICAgICAgICBj
aGlsZHJlbj0zRGNoaWxkcmVuLAotICAgICAgICAgICAgKQotICAgICAgICAgICAgYXNzZXJ0X2xp
c3QuYXBwZW5kKGFzc2VydF9kaWN0KQorICAgICAgICBhc3NlcnRfbGlzdCA9M0QgX190b190ZXN0
X2Fzc2VydF9saXN0KCBhdHRyaWJ1dGVzLmdldCgiYXNzZXJ0cyIsIFs9Cl0gKSApCiAgICAgICAg
IGF0dHJpYnV0ZXNbImFzc2VydF9saXN0Il0gPTNEIGFzc2VydF9saXN0Ci0KICAgICAgICAgX2Vu
c3VyZV9oYXMoYXR0cmlidXRlcywgZGVmYXVsdHMpCj0yMAogICAgIHRlc3RfZGljdFsib3V0cHV0
cyJdID0zRCBuZXdfb3V0cHV0cworICAgIHRlc3RfZGljdFsiY29tbWFuZCJdID0zRCBfX3RvX3Rl
c3RfYXNzZXJ0X2xpc3QoIHRlc3RfZGljdC5nZXQoICJjb21tYW49CmQiLCBbXSApICkKKyAgICB0
ZXN0X2RpY3RbInN0ZG91dCJdID0zRCBfX3RvX3Rlc3RfYXNzZXJ0X2xpc3QoIHRlc3RfZGljdC5n
ZXQoICJzdGRvdXQiPQosIFtdICkgKQorICAgIHRlc3RfZGljdFsic3RkZXJyIl0gPTNEIF9fdG9f
dGVzdF9hc3NlcnRfbGlzdCggdGVzdF9kaWN0LmdldCggInN0ZGVyciI9CiwgW10gKSApCisgICAg
dGVzdF9kaWN0WyJleHBlY3RfZXhpdF9jb2RlIl0gPTNEIHRlc3RfZGljdC5nZXQoICJleHBlY3Rf
ZXhpdF9jb2RlIiwgTj0Kb25lICkKKyAgICB0ZXN0X2RpY3RbImV4cGVjdF9mYWlsdXJlIl0gPTNE
IHRlc3RfZGljdC5nZXQoICJleHBlY3RfZXhpdF9jb2RlIiwgRmFsPQpzZSApCiAgICAgcmV0dXJu
IHRlc3RfZGljdAo9MjAKPTIwCitkZWYgX190b190ZXN0X2Fzc2VydF9saXN0KGFzc2VydGlvbnMp
OgorICAgIGRlZiBleHBhbmRfZGljdF9mb3JtKGl0ZW0pOgorICAgICAgICBrZXksIHZhbHVlID0z
RCBpdGVtCisgICAgICAgIG5ld192YWx1ZSA9M0QgdmFsdWUuY29weSgpCisgICAgICAgIG5ld192
YWx1ZVsidGhhdCJdID0zRCBrZXkKKyAgICAgICAgcmV0dXJuIG5ld192YWx1ZQorCisgICAgaWYg
aXNpbnN0YW5jZSggYXNzZXJ0aW9ucywgZGljdCApOgorICAgICAgICBhc3NlcnRpb25zID0zRCBt
YXAoZXhwYW5kX2RpY3RfZm9ybSwgYXNzZXJ0aW9ucy5pdGVtcygpICkKKworICAgIGFzc2VydF9s
aXN0ID0zRCBbXQorICAgIGZvciBhc3NlcnRpb24gaW4gYXNzZXJ0aW9uczoKKyAgICAgICAgIyBU
T0RPOiBub3QgaGFuZGxpbmcgbmVzdGVkIGFzc2VydGlvbnMgY29ycmVjdGx5LAorICAgICAgICAj
IG5vdCBzdXJlIHRoZXNlIGFyZSB1c2VkIHRob3VnaC4KKyAgICAgICAgY2hpbGRyZW4gPTNEIFtd
CisgICAgICAgIGlmICJjaGlsZHJlbiIgaW4gYXNzZXJ0aW9uOgorICAgICAgICAgICAgY2hpbGRy
ZW4gPTNEIGFzc2VydGlvblsiY2hpbGRyZW4iXQorICAgICAgICAgICAgZGVsIGFzc2VydGlvblsi
Y2hpbGRyZW4iXQorICAgICAgICBhc3NlcnRfZGljdCA9M0QgZGljdCgKKyAgICAgICAgICAgIHRh
Zz0zRGFzc2VydGlvblsidGhhdCJdLAorICAgICAgICAgICAgYXR0cmlidXRlcz0zRGFzc2VydGlv
biwKKyAgICAgICAgICAgIGNoaWxkcmVuPTNEY2hpbGRyZW4sCisgICAgICAgICkKKyAgICAgICAg
YXNzZXJ0X2xpc3QuYXBwZW5kKGFzc2VydF9kaWN0KQorCisgICAgcmV0dXJuIGFzc2VydF9saXN0
IG9yIE5vbmUgICMgWE1MIHZhcmlhbnQgaXMgTm9uZSBpZiBubyBhc3NlcnRpb25zIG1hZGUKKwor
CiBjbGFzcyBZYW1sUGFnZVNvdXJjZShQYWdlU291cmNlKToKPTIwCiAgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGlucHV0c19saXN0KToKCmRpZmYgLXIgNzQwZDc1OGMyMjg1YmVjMTQwZTY5MDEwMjVl
OTA2ZjUwYTBkN2EyYSAtciA5NWUzMDVkYjI5YjdlYjAyOGIwOTc2Mj0KZDAwYmQzMDVjNGM3ODIz
ZTEgbGliL2dhbGF4eS90b29scy90ZXN0LnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvdGVzdC5w
eQorKysgYi9saWIvZ2FsYXh5L3Rvb2xzL3Rlc3QucHkKQEAgLTEyNyw2ICsxMjcsMTEgQEAKICAg
ICAgICAgICAgIGlmIG51bV9vdXRwdXRzOgogICAgICAgICAgICAgICAgIG51bV9vdXRwdXRzID0z
RCBpbnQoIG51bV9vdXRwdXRzICkKICAgICAgICAgICAgIHNlbGYubnVtX291dHB1dHMgPTNEIG51
bV9vdXRwdXRzCisgICAgICAgICAgICBzZWxmLmNvbW1hbmRfbGluZSA9M0QgdGVzdF9kaWN0Lmdl
dCgiY29tbWFuZCIsIE5vbmUpCisgICAgICAgICAgICBzZWxmLnN0ZG91dCA9M0QgdGVzdF9kaWN0
LmdldCgic3Rkb3V0IiwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuc3RkZXJyID0zRCB0ZXN0X2Rp
Y3QuZ2V0KCJzdGRlcnIiLCBOb25lKQorICAgICAgICAgICAgc2VsZi5leHBlY3RfZXhpdF9jb2Rl
ID0zRCB0ZXN0X2RpY3QuZ2V0KCJleHBlY3RfZXhpdF9jb2RlIiwgTm89Cm5lKQorICAgICAgICAg
ICAgc2VsZi5leHBlY3RfZmFpbHVyZSA9M0QgdGVzdF9kaWN0LmdldCgiZXhwZWN0X2ZhaWx1cmUi
LCBGYWxzZSkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKICAgICAgICAgICAgIHNlbGYu
ZXJyb3IgPTNEIFRydWUKICAgICAgICAgICAgIHNlbGYuZXhjZXB0aW9uID0zRCBlCgpkaWZmIC1y
IDc0MGQ3NThjMjI4NWJlYzE0MGU2OTAxMDI1ZTkwNmY1MGEwZDdhMmEgLXIgOTVlMzA1ZGIyOWI3
ZWIwMjhiMDk3NjI9CmQwMGJkMzA1YzRjNzgyM2UxIGxpYi9nYWxheHkvd2ViL2ZyYW1ld29yay9t
aWRkbGV3YXJlL3JlbW90ZXVzZXIucHkKLS0tIGEvbGliL2dhbGF4eS93ZWIvZnJhbWV3b3JrL21p
ZGRsZXdhcmUvcmVtb3RldXNlci5weQorKysgYi9saWIvZ2FsYXh5L3dlYi9mcmFtZXdvcmsvbWlk
ZGxld2FyZS9yZW1vdGV1c2VyLnB5CkBAIC01OSw3ICs1OSw3IEBACiAgICAgICAgICMgUmV3cml0
ZSogbWV0aG9kIGZvciBwYXNzaW5nIFJFTU9URV9VU0VSIGFuZCBhIHVzZXIgaXMKICAgICAgICAg
IyB1bi1hdXRoZW50aWNhdGVkLiAgQW55IG90aGVyIHBvc3NpYmxlIHZhbHVlcyBuZWVkIHRvIGdv
IGhlcmUgYXMgPQp3ZWxsLgogICAgICAgICBwYXRoX2luZm8gPTNEIGVudmlyb24uZ2V0KCdQQVRI
X0lORk8nLCAnJykKLSAgICAgICAgaWYgZW52aXJvbi5nZXQoc2VsZi5yZW1vdGVfdXNlcl9oZWFk
ZXIsICcobnVsbCknKSAhPTNEICcobnVsbCknOgorICAgICAgICBpZiBub3QgZW52aXJvbi5nZXQo
c2VsZi5yZW1vdGVfdXNlcl9oZWFkZXIsICcobnVsbCknKS5zdGFydHN3aXRoKCc9CihudWxsKScp
OgogICAgICAgICAgICAgaWYgbm90IGVudmlyb25bIHNlbGYucmVtb3RlX3VzZXJfaGVhZGVyIF0u
Y291bnQoICdAJyApOgogICAgICAgICAgICAgICAgIGlmIHNlbGYubWFpbGRvbWFpbiBpcyBub3Qg
Tm9uZToKICAgICAgICAgICAgICAgICAgICAgZW52aXJvblsgc2VsZi5yZW1vdGVfdXNlcl9oZWFk
ZXIgXSArPTNEICdAJyArIHNlbGYubWFpPQpsZG9tYWluCgpkaWZmIC1yIDc0MGQ3NThjMjI4NWJl
YzE0MGU2OTAxMDI1ZTkwNmY1MGEwZDdhMmEgLXIgOTVlMzA1ZGIyOWI3ZWIwMjhiMDk3NjI9CmQw
MGJkMzA1YzRjNzgyM2UxIGxpYi9nYWxheHkvd29ya2Zsb3cvcnVuX3JlcXVlc3QucHkKLS0tIGEv
bGliL2dhbGF4eS93b3JrZmxvdy9ydW5fcmVxdWVzdC5weQorKysgYi9saWIvZ2FsYXh5L3dvcmtm
bG93L3J1bl9yZXF1ZXN0LnB5CkBAIC01NiwxMyArNTYsMTMgQEAKICAgICAgICAgcG9zc2libGVf
aW5wdXRfa2V5cyA9M0QgW10KICAgICAgICAgZm9yIGlucHV0c19ieV9lbCBpbiBpbnB1dHNfYnku
c3BsaXQoInwiKToKICAgICAgICAgICAgIGlmIGlucHV0c19ieV9lbCA9M0Q9M0QgInN0ZXBfaWQi
OgotICAgICAgICAgICAgICAgIHBvc3NpYmxlX2lucHV0X2tleXMgPTNEIFtzdHIoIHN0ZXAuaWQg
KV0KKyAgICAgICAgICAgICAgICBwb3NzaWJsZV9pbnB1dF9rZXlzLmFwcGVuZChzdHIoIHN0ZXAu
aWQgKSkKICAgICAgICAgICAgIGVsaWYgaW5wdXRzX2J5X2VsID0zRD0zRCAic3RlcF9pbmRleCI6
Ci0gICAgICAgICAgICAgICAgcG9zc2libGVfaW5wdXRfa2V5cyA9M0QgW3N0ciggc3RlcC5vcmRl
cl9pbmRleCApXQorICAgICAgICAgICAgICAgIHBvc3NpYmxlX2lucHV0X2tleXMuYXBwZW5kKHN0
ciggc3RlcC5vcmRlcl9pbmRleCApKQogICAgICAgICAgICAgZWxpZiBpbnB1dHNfYnlfZWwgPTNE
PTNEICJzdGVwX3V1aWQiOgotICAgICAgICAgICAgICAgIHBvc3NpYmxlX2lucHV0X2tleXMgPTNE
IFtzdHIoIHN0ZXAudXVpZCApXQorICAgICAgICAgICAgICAgIHBvc3NpYmxlX2lucHV0X2tleXMu
YXBwZW5kKHN0ciggc3RlcC51dWlkICkpCiAgICAgICAgICAgICBlbGlmIGlucHV0c19ieV9lbCA9
M0Q9M0QgIm5hbWUiOgotICAgICAgICAgICAgICAgIHBvc3NpYmxlX2lucHV0X2tleXMgPTNEIFtz
dGVwLnRvb2xfaW5wdXRzLmdldCggJ25hbWUnLCBOb249CmUgKV0KKyAgICAgICAgICAgICAgICBw
b3NzaWJsZV9pbnB1dF9rZXlzLmFwcGVuZChzdGVwLnRvb2xfaW5wdXRzLmdldCggJ25hbWUnLCBO
PQpvbmUgKSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbWVzc2FnZSA9M0Qg
IldvcmtmbG93IGNhbm5vdCBiZSBydW4gYmVjYXVzZSB1bmV4cGVjdGVkIGlucD0KdXRzX2J5IHZh
bHVlIHNwZWNpZmllZC4iCiAgICAgICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5NZXNzYWdl
RXhjZXB0aW9uKCBtZXNzYWdlICkKCmRpZmYgLXIgNzQwZDc1OGMyMjg1YmVjMTQwZTY5MDEwMjVl
OTA2ZjUwYTBkN2EyYSAtciA5NWUzMDVkYjI5YjdlYjAyOGIwOTc2Mj0KZDAwYmQzMDVjNGM3ODIz
ZTEgc3RhdGljL3NjcmlwdHMvbXZjL2RhdGEuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvbXZjL2Rh
dGEuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvbXZjL2RhdGEuanMKQEAgLTE2OSw3ICsxNjksOCBA
QAogICAgICAgICB9KTsKICAgICAgICAgdGhpcy4kZWwuYXBwZW5kKGRhdGFfdGFibGUpOwogICAg
ICAgICB2YXIgY29sdW1uX25hbWVzID0zRCB0aGlzLm1vZGVsLmdldF9tZXRhZGF0YSgnY29sdW1u
X25hbWVzJyksCi0gICAgICAgICAgICBoZWFkZXJfcm93ID0zRCAkKCc8dHIvPicpLmFwcGVuZFRv
KGRhdGFfdGFibGUpOworICAgICAgICAgICAgaGVhZGVyX2NvbnRhaW5lciA9M0QgJCgnPHRoZWFk
Lz4nKS5hcHBlbmRUbyhkYXRhX3RhYmxlKSwKKyAgICAgICAgICAgIGhlYWRlcl9yb3cgPTNEICQo
Jzx0ci8+JykuYXBwZW5kVG8oaGVhZGVyX2NvbnRhaW5lcik7CiAgICAgICAgIGlmIChjb2x1bW5f
bmFtZXMpIHsKICAgICAgICAgICAgIGhlYWRlcl9yb3cuYXBwZW5kKCc8dGg+JyArIGNvbHVtbl9u
YW1lcy5qb2luKCc8L3RoPjx0aD4nKSArICc8PQovdGg+Jyk7CiAgICAgICAgIH0gZWxzZSB7Cgpk
aWZmIC1yIDc0MGQ3NThjMjI4NWJlYzE0MGU2OTAxMDI1ZTkwNmY1MGEwZDdhMmEgLXIgOTVlMzA1
ZGIyOWI3ZWIwMjhiMDk3NjI9CmQwMGJkMzA1YzRjNzgyM2UxIHN0YXRpYy9zY3JpcHRzL3BhY2tl
ZC9tdmMvZGF0YS5qcwotLS0gYS9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL2RhdGEuanMKKysr
IGIvc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy9kYXRhLmpzCkBAIC0xLDEgKzEsMSBAQAotZGVm
aW5lKFsibXZjL3VpL3VpLW1vZGFsIiwibXZjL3VpL3VpLWZyYW1lcyIsIm12Yy91aS9pY29uLWJ1
dHRvbiJdLGZ1bmN0aW89Cm4oayxqLGYpe3ZhciBoPTNEQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHt9
KTt2YXIgYj0zREJhY2tib25lLk1vZGVsLmV4dGVuZCh7ZD0KZWZhdWx0czp7aWQ6IiIsdHlwZToi
IixuYW1lOiIiLGhkYV9sZGRhOiJoZGEiLG1ldGFkYXRhOm51bGx9LGluaXRpYWxpemU6ZnVuPQpj
dGlvbigpe2lmKCF0aGlzLmdldCgibWV0YWRhdGEiKSl7dGhpcy5fc2V0X21ldGFkYXRhKCl9dGhp
cy5vbigiY2hhbmdlIix0aGk9CnMuX3NldF9tZXRhZGF0YSx0aGlzKX0sX3NldF9tZXRhZGF0YTpm
dW5jdGlvbigpe3ZhciBuPTNEbmV3IGgoKTtfLmVhY2goXy5rZT0KeXModGhpcy5hdHRyaWJ1dGVz
KSxmdW5jdGlvbihvKXtpZihvLmluZGV4T2YoIm1ldGFkYXRhXyIpPTNEPTNEPTNEMCl7dmFyIHA9
Cj0zRG8uc3BsaXQoIm1ldGFkYXRhXyIpWzFdO24uc2V0KHAsdGhpcy5hdHRyaWJ1dGVzW29dKTtk
ZWxldGUgdGhpcy5hdHRyaWJ1dD0KZXNbb119fSx0aGlzKTt0aGlzLnNldCgibWV0YWRhdGEiLG4s
e3NpbGVudDp0cnVlfSl9LGdldF9tZXRhZGF0YTpmdW5jdGlvbihuPQope3JldHVybiB0aGlzLmF0
dHJpYnV0ZXMubWV0YWRhdGEuZ2V0KG4pfSx1cmxSb290OmdhbGF4eV9jb25maWcucm9vdCsiYXBp
L2Q9CmF0YXNldHMifSk7dmFyIGk9M0RiLmV4dGVuZCh7ZGVmYXVsdHM6Xy5leHRlbmQoe30sYi5w
cm90b3R5cGUuZGVmYXVsdHMse2NodT0KbmtfdXJsOm51bGwsZmlyc3RfZGF0YV9jaHVuazpudWxs
LGNodW5rX2luZGV4Oi0xLGF0X2VvZjpmYWxzZX0pLGluaXRpYWxpemU6PQpmdW5jdGlvbihuKXti
LnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyk7dGhpcy5hdHRyaWJ1dGVzLmNodW5rX2lu
ZGV4PQo9M0QodGhpcy5hdHRyaWJ1dGVzLmZpcnN0X2RhdGFfY2h1bms/MTowKTt0aGlzLmF0dHJp
YnV0ZXMuY2h1bmtfdXJsPTNEZ2FsYXg9CnlfY29uZmlnLnJvb3QrImRhdGFzZXQvZGlzcGxheT9k
YXRhc2V0X2lkPTNEIit0aGlzLmlkO3RoaXMuYXR0cmlidXRlcy51cmxfdj0KaXo9M0RnYWxheHlf
Y29uZmlnLnJvb3QrInZpc3VhbGl6YXRpb24ifSxnZXRfbmV4dF9jaHVuazpmdW5jdGlvbigpe2lm
KHRoaXMuPQphdHRyaWJ1dGVzLmF0X2VvZil7cmV0dXJuIG51bGx9dmFyIG49M0R0aGlzLG89M0Qk
LkRlZmVycmVkKCk7JC5nZXRKU09OKHRoaXM9Ci5hdHRyaWJ1dGVzLmNodW5rX3VybCx7Y2h1bms6
bi5hdHRyaWJ1dGVzLmNodW5rX2luZGV4Kyt9KS5zdWNjZXNzKGZ1bmN0aW9uKD0KcCl7dmFyIHE7
aWYocC5ja19kYXRhIT0zRD0zRCIiKXtxPTNEcH1lbHNle24uYXR0cmlidXRlcy5hdF9lb2Y9M0R0
cnVlO3E9M0RuPQp1bGx9by5yZXNvbHZlKHEpfSk7cmV0dXJuIG99fSk7dmFyIGU9M0RCYWNrYm9u
ZS5Db2xsZWN0aW9uLmV4dGVuZCh7bW9kZWw6Yn09Cik7dmFyIGE9M0RCYWNrYm9uZS5WaWV3LmV4
dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbihuKXt0aGlzLnJvd19jb3VudD0zRDA7dD0KaGlzLmxv
YWRpbmdfY2h1bms9M0RmYWxzZTtuZXcgZCh7bW9kZWw6bi5tb2RlbCwkZWw6dGhpcy4kZWx9KX0s
ZXhwYW5kX3RvX2NvPQpudGFpbmVyOmZ1bmN0aW9uKCl7aWYodGhpcy4kZWwuaGVpZ2h0KCk8dGhp
cy5zY3JvbGxfZWx0LmhlaWdodCgpKXt0aGlzLmF0dGU9Cm1wdF90b19mZXRjaCgpfX0sYXR0ZW1w
dF90b19mZXRjaDpmdW5jdGlvbihvKXt2YXIgbj0zRHRoaXM7aWYoIXRoaXMubG9hZGluZz0KX2No
dW5rJiZ0aGlzLnNjcm9sbGVkX3RvX2JvdHRvbSgpKXt0aGlzLmxvYWRpbmdfY2h1bms9M0R0cnVl
O3RoaXMubG9hZGluZ19pPQpuZGljYXRvci5zaG93KCk7JC53aGVuKG4ubW9kZWwuZ2V0X25leHRf
Y2h1bmsoKSkudGhlbihmdW5jdGlvbihwKXtpZihwKXtuLl89CnJlbmRlckNodW5rKHApO24ubG9h
ZGluZ19jaHVuaz0zRGZhbHNlfW4ubG9hZGluZ19pbmRpY2F0b3IuaGlkZSgpO24uZXhwYW5kXz0K
dG9fY29udGFpbmVyKCl9KX19LHJlbmRlcjpmdW5jdGlvbigpe3RoaXMubG9hZGluZ19pbmRpY2F0
b3I9M0QkKCI8ZGl2Lz4iKS5hPQp0dHIoImlkIiwibG9hZGluZ19pbmRpY2F0b3IiKTt0aGlzLiRl
bC5hcHBlbmQodGhpcy5sb2FkaW5nX2luZGljYXRvcik7dmFyIHI9Cj0zRCQoIjx0YWJsZS8+Iiku
YXR0cih7aWQ6ImNvbnRlbnRfdGFibGUiLGNlbGxwYWRkaW5nOjB9KTt0aGlzLiRlbC5hcHBlbmQo
cj0KKTt2YXIgbj0zRHRoaXMubW9kZWwuZ2V0X21ldGFkYXRhKCJjb2x1bW5fbmFtZXMiKSxzPTNE
JCgiPHRyLz4iKS5hcHBlbmRUbyhyPQopO2lmKG4pe3MuYXBwZW5kKCI8dGg+IituLmpvaW4oIjwv
dGg+PHRoPiIpKyI8L3RoPiIpfWVsc2V7Zm9yKHZhciBxPTNEMTtxPD0KPTNEdGhpcy5tb2RlbC5n
ZXRfbWV0YWRhdGEoImNvbHVtbnMiKTtxKyspe3MuYXBwZW5kKCI8dGg+IitxKyI8L3RoPiIpfX12
YXIgPQpwPTNEdGhpcyxvPTNEdGhpcy5tb2RlbC5nZXQoImZpcnN0X2RhdGFfY2h1bmsiKTtpZihv
KXt0aGlzLl9yZW5kZXJDaHVuayhvKX09CmVsc2V7JC53aGVuKHAubW9kZWwuZ2V0X25leHRfY2h1
bmsoKSkudGhlbihmdW5jdGlvbih0KXtwLl9yZW5kZXJDaHVuayh0KX0pfT0KdGhpcy5zY3JvbGxf
ZWx0LnNjcm9sbChmdW5jdGlvbigpe3AuYXR0ZW1wdF90b19mZXRjaCgpfSl9LHNjcm9sbGVkX3Rv
X2JvdHRvPQptOmZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlfSxfcmVuZGVyQ2VsbDpmdW5jdGlvbihx
LG4scil7dmFyIG89M0QkKCI8dGQ+IikudGU9Cnh0KHEpO3ZhciBwPTNEdGhpcy5tb2RlbC5nZXRf
bWV0YWRhdGEoImNvbHVtbl90eXBlcyIpO2lmKHIhPTNEPTNEdW5kZWZpbmVkKT0Ke28uYXR0cigi
Y29sc3BhbiIscikuYWRkQ2xhc3MoInN0cmluZ2FsaWduIil9ZWxzZXtpZihwKXtpZihuPHAubGVu
Z3RoKXtpZihwPQpbbl09M0Q9M0Q9M0Qic3RyInx8cFtuXT0zRD0zRD0zRCJsaXN0Iil7by5hZGRD
bGFzcygic3RyaW5nYWxpZ24iKX19fX1yZXR1cm49CiBvfSxfcmVuZGVyUm93OmZ1bmN0aW9uKG4p
e3ZhciBvPTNEbi5zcGxpdCgiXHQiKSxxPTNEJCgiPHRyPiIpLHA9M0R0aGlzLm1vZD0KZWwuZ2V0
X21ldGFkYXRhKCJjb2x1bW5zIik7aWYodGhpcy5yb3dfY291bnQlMiE9M0Q9M0QwKXtxLmFkZENs
YXNzKCJkYXJrX3JvPQp3Iil9aWYoby5sZW5ndGg9M0Q9M0Q9M0RwKXtfLmVhY2gobyxmdW5jdGlv
bihzLHIpe3EuYXBwZW5kKHRoaXMuX3JlbmRlckNlbGw9CihzLHIpKX0sdGhpcyl9ZWxzZXtpZihv
Lmxlbmd0aD5wKXtfLmVhY2goby5zbGljZSgwLHAtMSksZnVuY3Rpb24ocyxyKXtxLmFwcD0KZW5k
KHRoaXMuX3JlbmRlckNlbGwocyxyKSl9LHRoaXMpO3EuYXBwZW5kKHRoaXMuX3JlbmRlckNlbGwo
by5zbGljZShwLTEpLmpvPQppbigiXHQiKSxwLTEpKX1lbHNle2lmKHA+NSYmby5sZW5ndGg9M0Q9
M0Q9M0RwLTEpe18uZWFjaChvLGZ1bmN0aW9uKHMscil7cS49CmFwcGVuZCh0aGlzLl9yZW5kZXJD
ZWxsKHMscikpfSx0aGlzKTtxLmFwcGVuZCgkKCI8dGQ+IikpfWVsc2V7cS5hcHBlbmQodGhpcz0K
Ll9yZW5kZXJDZWxsKG4sMCxwKSl9fX10aGlzLnJvd19jb3VudCsrO3JldHVybiBxfSxfcmVuZGVy
Q2h1bms6ZnVuY3Rpb24obil7PQp2YXIgbz0zRHRoaXMuJGVsLmZpbmQoInRhYmxlIik7Xy5lYWNo
KG4uY2tfZGF0YS5zcGxpdCgiXG4iKSxmdW5jdGlvbihwLHEpe2k9CmYocCE9M0Q9M0QiIil7by5h
cHBlbmQodGhpcy5fcmVuZGVyUm93KHApKX19LHRoaXMpfX0pO3ZhciBnPTNEYS5leHRlbmQoe2lu
aT0KdGlhbGl6ZTpmdW5jdGlvbihuKXthLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyxu
KTtzY3JvbGxfZWx0PTNEXy5maW5kPQoodGhpcy4kZWwucGFyZW50cygpLGZ1bmN0aW9uKG8pe3Jl
dHVybiAkKG8pLmNzcygib3ZlcmZsb3ciKT0zRD0zRD0zRCJhdXRvIn09Cik7aWYoIXNjcm9sbF9l
bHQpe3Njcm9sbF9lbHQ9M0R3aW5kb3d9dGhpcy5zY3JvbGxfZWx0PTNEJChzY3JvbGxfZWx0KX0s
c2Nybz0KbGxlZF90b19ib3R0b206ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy4kZWwuaGVpZ2h0KCkt
dGhpcy5zY3JvbGxfZWx0LnNjcm9sbFRvPQpwKCktdGhpcy5zY3JvbGxfZWx0LmhlaWdodCgpPD0z
RDApfX0pO3ZhciBtPTNEYS5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb249CihuKXthLnByb3Rv
dHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyxuKTt0aGlzLnNjcm9sbF9lbHQ9M0R0aGlzLiRlbC5j
c3Moe3Bvcz0KaXRpb246InJlbGF0aXZlIixvdmVyZmxvdzoic2Nyb2xsIixoZWlnaHQ6dGhpcy5v
cHRpb25zLmhlaWdodHx8IjUwMHB4In0pfSxzPQpjcm9sbGVkX3RvX2JvdHRvbTpmdW5jdGlvbigp
e3JldHVybiB0aGlzLiRlbC5zY3JvbGxUb3AoKSt0aGlzLiRlbC5pbm5lckhlaWc9Cmh0KCk+PTNE
dGhpcy5lbC5zY3JvbGxIZWlnaHR9fSk7dmFyIGQ9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7Y29s
OntjaHJvbTpudT0KbGwsc3RhcnQ6bnVsbCxlbmQ6bnVsbH0sdXJsX3ZpejpudWxsLGRhdGFzZXRf
aWQ6bnVsbCxnZW5vbWVfYnVpbGQ6bnVsbCxmaWxlPQpfZXh0Om51bGwsaW5pdGlhbGl6ZTpmdW5j
dGlvbihwKXt2YXIgcz0zRHBhcmVudC5HYWxheHk7aWYocyYmcy5tb2RhbCl7dGhpcy49Cm1vZGFs
PTNEcy5tb2RhbH1pZihzJiZzLmZyYW1lKXt0aGlzLmZyYW1lPTNEcy5mcmFtZX1pZighdGhpcy5t
b2RhbHx8IXRoaXMuZj0KcmFtZSl7cmV0dXJufXZhciBvPTNEcC5tb2RlbDt2YXIgcj0zRG8uZ2V0
KCJtZXRhZGF0YSIpO2lmKCFvLmdldCgiZmlsZV9leHQiPQopKXtyZXR1cm59dGhpcy5maWxlX2V4
dD0zRG8uZ2V0KCJmaWxlX2V4dCIpO2lmKHRoaXMuZmlsZV9leHQ9M0Q9M0QiYmVkIil7aWY9Cihy
LmdldCgiY2hyb21Db2wiKSYmci5nZXQoInN0YXJ0Q29sIikmJnIuZ2V0KCJlbmRDb2wiKSl7dGhp
cy5jb2wuY2hyb209M0RyLj0KZ2V0KCJjaHJvbUNvbCIpLTE7dGhpcy5jb2wuc3RhcnQ9M0RyLmdl
dCgic3RhcnRDb2wiKS0xO3RoaXMuY29sLmVuZD0zRHIuZ2V0PQooImVuZENvbCIpLTF9ZWxzZXtj
b25zb2xlLmxvZygiVGFidWxhckJ1dHRvblRyYWNrc3RlciA6IEJlZC1maWxlIG1ldGFkYXRhIGk9
Cm5jb21wbGV0ZS4iKTtyZXR1cm59fWlmKHRoaXMuZmlsZV9leHQ9M0Q9M0QidmNmIil7ZnVuY3Rp
b24gcSh1LHYpe2Zvcih2YXIgdD0KPTNEMDt0PHYubGVuZ3RoO3QrKyl7aWYodlt0XS5tYXRjaCh1
KSl7cmV0dXJuIHR9fXJldHVybiAtMX10aGlzLmNvbC5jaHJvbT0KPTNEcSgiQ2hyb20iLHIuZ2V0
KCJjb2x1bW5fbmFtZXMiKSk7dGhpcy5jb2wuc3RhcnQ9M0RxKCJQb3MiLHIuZ2V0KCJjb2x1bW5f
PQpuYW1lcyIpKTt0aGlzLmNvbC5lbmQ9M0RudWxsO2lmKHRoaXMuY29sLmNocm9tPTNEPTNELTF8
fHRoaXMuY29sLnN0YXJ0PTNEPQo9M0QtMSl7Y29uc29sZS5sb2coIlRhYnVsYXJCdXR0b25UcmFj
a3N0ZXIgOiBWQ0YtZmlsZSBtZXRhZGF0YSBpbmNvbXBsZXRlLiI9Cik7cmV0dXJufX1pZih0aGlz
LmNvbC5jaHJvbT0zRD0zRD0zRHVuZGVmaW5lZCl7cmV0dXJufWlmKG8uaWQpe3RoaXMuZGF0YXNl
dD0KX2lkPTNEby5pZH1lbHNle2NvbnNvbGUubG9nKCJUYWJ1bGFyQnV0dG9uVHJhY2tzdGVyIDog
RGF0YXNldCBpZGVudGlmaWNhdGlvPQpuIGlzIG1pc3NpbmcuIik7cmV0dXJufWlmKG8uZ2V0KCJ1
cmxfdml6Iikpe3RoaXMudXJsX3Zpej0zRG8uZ2V0KCJ1cmxfdml6Iik9Cn1lbHNle2NvbnNvbGUu
bG9nKCJUYWJ1bGFyQnV0dG9uVHJhY2tzdGVyIDogVXJsIGZvciB2aXN1YWxpemF0aW9uIGNvbnRy
b2xsZT0KciBpcyBtaXNzaW5nLiIpO3JldHVybn1pZihvLmdldCgiZ2Vub21lX2J1aWxkIikpe3Ro
aXMuZ2Vub21lX2J1aWxkPTNEby5nZXQoPQoiZ2Vub21lX2J1aWxkIil9dmFyIG49M0RuZXcgZi5J
Y29uQnV0dG9uVmlldyh7bW9kZWw6bmV3IGYuSWNvbkJ1dHRvbih7dGl0bGU9CjoiVmlzdWFsaXpl
IixpY29uX2NsYXNzOiJjaGFydF9jdXJ2ZSIsaWQ6ImJ0bl92aXoifSl9KTt0aGlzLnNldEVsZW1l
bnQocC4kZT0KbCk7dGhpcy4kZWwuYXBwZW5kKG4ucmVuZGVyKCkuJGVsKTt0aGlzLmhpZGUoKX0s
ZXZlbnRzOnsibW91c2VvdmVyIHRyIjoic2hvPQp3Iixtb3VzZWxlYXZlOiJoaWRlIn0sc2hvdzpm
dW5jdGlvbihzKXtmdW5jdGlvbiByKHgpe3JldHVybiAhaXNOYU4ocGFyc2VGbG89CmF0KHgpKSYm
aXNGaW5pdGUoeCl9aWYodGhpcy5jb2wuY2hyb209M0Q9M0Q9M0RudWxsKXtyZXR1cm59dmFyIHc9
M0QkKHMudGFyZz0KZXQpLnBhcmVudCgpO3ZhciB0PTNEdy5jaGlsZHJlbigpLmVxKHRoaXMuY29s
LmNocm9tKS5odG1sKCk7dmFyIG49M0R3LmNoaWxkPQpyZW4oKS5lcSh0aGlzLmNvbC5zdGFydCku
aHRtbCgpO3ZhciBwPTNEdGhpcy5jb2wuZW5kP3cuY2hpbGRyZW4oKS5lcSh0aGlzLmM9Cm9sLmVu
ZCkuaHRtbCgpOm47aWYoIXQubWF0Y2goIl4jIikmJnQhPTNEPTNEIiImJnIobikpe3ZhciB2PTNE
e2RhdGFzZXRfaWQ6dD0KaGlzLmRhdGFzZXRfaWQsZ2VuZV9yZWdpb246dCsiOiIrbisiLSIrcH07
dmFyIHE9M0R3Lm9mZnNldCgpO3ZhciBvPTNEcS5sZWZ0PQotMTA7dmFyIHU9M0RxLnRvcC0kKHdp
bmRvdykuc2Nyb2xsVG9wKCkrMzskKCIjYnRuX3ZpeiIpLmNzcyh7cG9zaXRpb246ImZpeGU9CmQi
LHRvcDp1KyJweCIsbGVmdDpvKyJweCJ9KTskKCIjYnRuX3ZpeiIpLm9mZigiY2xpY2siKTskKCIj
YnRuX3ZpeiIpLmNsaWNrKD0KdGhpcy5jcmVhdGVfdHJhY2tzdGVyX2FjdGlvbih0aGlzLnVybF92
aXosdix0aGlzLmdlbm9tZV9idWlsZCkpOyQoIiNidG5fdml6PQoiKS5zaG93KCl9ZWxzZXskKCIj
YnRuX3ZpeiIpLmhpZGUoKX19LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLiRlbC5maW5kKCIjYnRuX3Y9
Cml6IikuaGlkZSgpfSxjcmVhdGVfdHJhY2tzdGVyX2FjdGlvbjpmdW5jdGlvbihuLHEscCl7dmFy
IG89M0R0aGlzO3JldHVybiBmdT0KbmN0aW9uKCl7dmFyIHI9M0R7fTtpZihwKXtyWyJmLWRia2V5
Il09M0RwfSQuYWpheCh7dXJsOm4rIi9saXN0X3RyYWNrcz8iKyQuPQpwYXJhbShyKSxkYXRhVHlw
ZToiaHRtbCIsZXJyb3I6ZnVuY3Rpb24oKXtvLm1vZGFsLnNob3coe3RpdGxlOiJTb21ldGhpbmcg
d2U9Cm50IHdyb25nISIsYm9keToiVW5mb3J0dW5hdGVseSB3ZSBjb3VsZCBub3QgYWRkIHRoaXMg
ZGF0YXNldCB0byB0aGUgdHJhY2sgYj0Kcm93c2VyLiBQbGVhc2UgdHJ5IGFnYWluIG9yIGNvbnRh
Y3QgdXMuIixidXR0b25zOntDYW5jZWw6ZnVuY3Rpb24oKXtvLm1vZGFsPQouaGlkZSgpfX19KX0s
c3VjY2VzczpmdW5jdGlvbihzKXtvLm1vZGFsLnNob3coe3RpdGxlOiJWaWV3IERhdGEgaW4gYSBO
ZXcgb3I9CiBTYXZlZCBWaXN1YWxpemF0aW9uIixidXR0b25zOntDYW5jZWw6ZnVuY3Rpb24oKXtv
Lm1vZGFsLmhpZGUoKX0sIlZpZXcgaW4gcz0KYXZlZCB2aXN1YWxpemF0aW9uIjpmdW5jdGlvbigp
e28ubW9kYWwuc2hvdyh7dGl0bGU6IkFkZCBEYXRhIHRvIFNhdmVkIFZpc3VhPQpsaXphdGlvbiIs
Ym9keTpzLGJ1dHRvbnM6e0NhbmNlbDpmdW5jdGlvbigpe28ubW9kYWwuaGlkZSgpfSwiQWRkIHRv
IHZpc3VhbGk9CnphdGlvbiI6ZnVuY3Rpb24oKXtvLm1vZGFsLmhpZGUoKTtvLm1vZGFsLiRlbC5m
aW5kKCJpbnB1dFtuYW1lPTNEaWRdOmNoZWNrZT0KZCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD0z
RCQodGhpcykudmFsKCk7cS5pZD0zRHQ7by5mcmFtZS5hZGQoe3RpdGxlOiJUcmFjPQprc3RlciIs
dHlwZToidXJsIixjb250ZW50Om4rIi90cmFja3N0ZXI/IiskLnBhcmFtKHEpfSl9KX19fSl9LCJW
aWV3IGluIG5ldyA9CnZpc3VhbGl6YXRpb24iOmZ1bmN0aW9uKCl7by5tb2RhbC5oaWRlKCk7by5m
cmFtZS5hZGQoe3RpdGxlOiJUcmFja3N0ZXIiLHR5cD0KZToidXJsIixjb250ZW50Om4rIi90cmFj
a3N0ZXI/IiskLnBhcmFtKHEpfSl9fX0pfX0pO3JldHVybiBmYWxzZX19fSk7dmFyIGw9Cj0zRGZ1
bmN0aW9uKHEsbyxyLG4pe3ZhciBwPTNEbmV3IG8oe21vZGVsOm5ldyBxKHIpfSk7cC5yZW5kZXIo
KTtpZihuKXtuLmFwcD0KZW5kKHAuJGVsKX1yZXR1cm4gcH07dmFyIGM9M0RmdW5jdGlvbihwKXtp
ZighcC5tb2RlbCl7cC5tb2RlbD0zRG5ldyBpKHAuZGF0PQphc2V0X2NvbmZpZyl9dmFyIG89M0Rw
LnBhcmVudF9lbHQ7dmFyIHE9M0RwLmVtYmVkZGVkO2RlbGV0ZSBwLmVtYmVkZGVkO2RlbGU9CnRl
IHAucGFyZW50X2VsdDtkZWxldGUgcC5kYXRhc2V0X2NvbmZpZzt2YXIgbj0zRChxP25ldyBtKHAp
Om5ldyBnKHApKTtuLnJlbj0KZGVyKCk7aWYobyl7by5hcHBlbmQobi4kZWwpO24uZXhwYW5kX3Rv
X2NvbnRhaW5lcigpfXJldHVybiBufTtyZXR1cm57RGF0YXNlPQp0OmIsVGFidWxhckRhdGFzZXQ6
aSxEYXRhc2V0Q29sbGVjdGlvbjplLFRhYnVsYXJEYXRhc2V0Q2h1bmtlZFZpZXc6YSxjcmVhdGU9
ClRhYnVsYXJEYXRhc2V0Q2h1bmtlZFZpZXc6Y319KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCitkZWZpbmUoWyJtdmMvdWkvdWktbW9kYWwiLCJtdmMvdWkvdWktZnJhbWVzIiwibXZjL3Vp
L2ljb24tYnV0dG9uIl0sZnVuY3Rpbz0KbihrLGosZil7dmFyIGg9M0RCYWNrYm9uZS5Nb2RlbC5l
eHRlbmQoe30pO3ZhciBiPTNEQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHtkPQplZmF1bHRzOntpZDoi
Iix0eXBlOiIiLG5hbWU6IiIsaGRhX2xkZGE6ImhkYSIsbWV0YWRhdGE6bnVsbH0saW5pdGlhbGl6
ZTpmdW49CmN0aW9uKCl7aWYoIXRoaXMuZ2V0KCJtZXRhZGF0YSIpKXt0aGlzLl9zZXRfbWV0YWRh
dGEoKX10aGlzLm9uKCJjaGFuZ2UiLHRoaT0Kcy5fc2V0X21ldGFkYXRhLHRoaXMpfSxfc2V0X21l
dGFkYXRhOmZ1bmN0aW9uKCl7dmFyIG49M0RuZXcgaCgpO18uZWFjaChfLmtlPQp5cyh0aGlzLmF0
dHJpYnV0ZXMpLGZ1bmN0aW9uKG8pe2lmKG8uaW5kZXhPZigibWV0YWRhdGFfIik9M0Q9M0Q9M0Qw
KXt2YXIgcD0KPTNEby5zcGxpdCgibWV0YWRhdGFfIilbMV07bi5zZXQocCx0aGlzLmF0dHJpYnV0
ZXNbb10pO2RlbGV0ZSB0aGlzLmF0dHJpYnV0PQplc1tvXX19LHRoaXMpO3RoaXMuc2V0KCJtZXRh
ZGF0YSIsbix7c2lsZW50OnRydWV9KX0sZ2V0X21ldGFkYXRhOmZ1bmN0aW9uKG49Cil7cmV0dXJu
IHRoaXMuYXR0cmlidXRlcy5tZXRhZGF0YS5nZXQobil9LHVybFJvb3Q6Z2FsYXh5X2NvbmZpZy5y
b290KyJhcGkvZD0KYXRhc2V0cyJ9KTt2YXIgaT0zRGIuZXh0ZW5kKHtkZWZhdWx0czpfLmV4dGVu
ZCh7fSxiLnByb3RvdHlwZS5kZWZhdWx0cyx7Y2h1PQpua191cmw6bnVsbCxmaXJzdF9kYXRhX2No
dW5rOm51bGwsY2h1bmtfaW5kZXg6LTEsYXRfZW9mOmZhbHNlfSksaW5pdGlhbGl6ZTo9CmZ1bmN0
aW9uKG4pe2IucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzKTt0aGlzLmF0dHJpYnV0ZXMu
Y2h1bmtfaW5kZXg9Cj0zRCh0aGlzLmF0dHJpYnV0ZXMuZmlyc3RfZGF0YV9jaHVuaz8xOjApO3Ro
aXMuYXR0cmlidXRlcy5jaHVua191cmw9M0RnYWxheD0KeV9jb25maWcucm9vdCsiZGF0YXNldC9k
aXNwbGF5P2RhdGFzZXRfaWQ9M0QiK3RoaXMuaWQ7dGhpcy5hdHRyaWJ1dGVzLnVybF92PQppej0z
RGdhbGF4eV9jb25maWcucm9vdCsidmlzdWFsaXphdGlvbiJ9LGdldF9uZXh0X2NodW5rOmZ1bmN0
aW9uKCl7aWYodGhpcy49CmF0dHJpYnV0ZXMuYXRfZW9mKXtyZXR1cm4gbnVsbH12YXIgbj0zRHRo
aXMsbz0zRCQuRGVmZXJyZWQoKTskLmdldEpTT04odGhpcz0KLmF0dHJpYnV0ZXMuY2h1bmtfdXJs
LHtjaHVuazpuLmF0dHJpYnV0ZXMuY2h1bmtfaW5kZXgrK30pLnN1Y2Nlc3MoZnVuY3Rpb24oPQpw
KXt2YXIgcTtpZihwLmNrX2RhdGEhPTNEPTNEIiIpe3E9M0RwfWVsc2V7bi5hdHRyaWJ1dGVzLmF0
X2VvZj0zRHRydWU7cT0zRG49CnVsbH1vLnJlc29sdmUocSl9KTtyZXR1cm4gb319KTt2YXIgZT0z
REJhY2tib25lLkNvbGxlY3Rpb24uZXh0ZW5kKHttb2RlbDpifT0KKTt2YXIgYT0zREJhY2tib25l
LlZpZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKG4pe3RoaXMucm93X2NvdW50PTNEMDt0
PQpoaXMubG9hZGluZ19jaHVuaz0zRGZhbHNlO25ldyBkKHttb2RlbDpuLm1vZGVsLCRlbDp0aGlz
LiRlbH0pfSxleHBhbmRfdG9fY289Cm50YWluZXI6ZnVuY3Rpb24oKXtpZih0aGlzLiRlbC5oZWln
aHQoKTx0aGlzLnNjcm9sbF9lbHQuaGVpZ2h0KCkpe3RoaXMuYXR0ZT0KbXB0X3RvX2ZldGNoKCl9
fSxhdHRlbXB0X3RvX2ZldGNoOmZ1bmN0aW9uKG8pe3ZhciBuPTNEdGhpcztpZighdGhpcy5sb2Fk
aW5nPQpfY2h1bmsmJnRoaXMuc2Nyb2xsZWRfdG9fYm90dG9tKCkpe3RoaXMubG9hZGluZ19jaHVu
az0zRHRydWU7dGhpcy5sb2FkaW5nX2k9Cm5kaWNhdG9yLnNob3coKTskLndoZW4obi5tb2RlbC5n
ZXRfbmV4dF9jaHVuaygpKS50aGVuKGZ1bmN0aW9uKHApe2lmKHApe24uXz0KcmVuZGVyQ2h1bmso
cCk7bi5sb2FkaW5nX2NodW5rPTNEZmFsc2V9bi5sb2FkaW5nX2luZGljYXRvci5oaWRlKCk7bi5l
eHBhbmRfPQp0b19jb250YWluZXIoKX0pfX0scmVuZGVyOmZ1bmN0aW9uKCl7dGhpcy5sb2FkaW5n
X2luZGljYXRvcj0zRCQoIjxkaXYvPiIpLmE9CnR0cigiaWQiLCJsb2FkaW5nX2luZGljYXRvciIp
O3RoaXMuJGVsLmFwcGVuZCh0aGlzLmxvYWRpbmdfaW5kaWNhdG9yKTt2YXIgcj0KPTNEJCgiPHRh
YmxlLz4iKS5hdHRyKHtpZDoiY29udGVudF90YWJsZSIsY2VsbHBhZGRpbmc6MH0pO3RoaXMuJGVs
LmFwcGVuZChyPQopO3ZhciBuPTNEdGhpcy5tb2RlbC5nZXRfbWV0YWRhdGEoImNvbHVtbl9uYW1l
cyIpLHM9M0QkKCI8dGhlYWQvPiIpLmFwcGVuZFQ9Cm8ociksdD0zRCQoIjx0ci8+IikuYXBwZW5k
VG8ocyk7aWYobil7dC5hcHBlbmQoIjx0aD4iK24uam9pbigiPC90aD48dGg+IikrIj0KPC90aD4i
KX1lbHNle2Zvcih2YXIgcT0zRDE7cTw9M0R0aGlzLm1vZGVsLmdldF9tZXRhZGF0YSgiY29sdW1u
cyIpO3ErKyl7dC5hPQpwcGVuZCgiPHRoPiIrcSsiPC90aD4iKX19dmFyIHA9M0R0aGlzLG89M0R0
aGlzLm1vZGVsLmdldCgiZmlyc3RfZGF0YV9jaHVuayI9Cik7aWYobyl7dGhpcy5fcmVuZGVyQ2h1
bmsobyl9ZWxzZXskLndoZW4ocC5tb2RlbC5nZXRfbmV4dF9jaHVuaygpKS50aGVuKGZ1bj0KY3Rp
b24odSl7cC5fcmVuZGVyQ2h1bmsodSl9KX10aGlzLnNjcm9sbF9lbHQuc2Nyb2xsKGZ1bmN0aW9u
KCl7cC5hdHRlbXB0X3RvPQpfZmV0Y2goKX0pfSxzY3JvbGxlZF90b19ib3R0b206ZnVuY3Rpb24o
KXtyZXR1cm4gZmFsc2V9LF9yZW5kZXJDZWxsOmZ1bmN0aW89Cm4ocSxuLHIpe3ZhciBvPTNEJCgi
PHRkPiIpLnRleHQocSk7dmFyIHA9M0R0aGlzLm1vZGVsLmdldF9tZXRhZGF0YSgiY29sdW1uXz0K
dHlwZXMiKTtpZihyIT0zRD0zRHVuZGVmaW5lZCl7by5hdHRyKCJjb2xzcGFuIixyKS5hZGRDbGFz
cygic3RyaW5nYWxpZ24iKX1lPQpsc2V7aWYocCl7aWYobjxwLmxlbmd0aCl7aWYocFtuXT0zRD0z
RD0zRCJzdHIifHxwW25dPTNEPTNEPTNEImxpc3QiKXtvLmFkZEM9Cmxhc3MoInN0cmluZ2FsaWdu
Iil9fX19cmV0dXJuIG99LF9yZW5kZXJSb3c6ZnVuY3Rpb24obil7dmFyIG89M0RuLnNwbGl0KCJc
dD0KIikscT0zRCQoIjx0cj4iKSxwPTNEdGhpcy5tb2RlbC5nZXRfbWV0YWRhdGEoImNvbHVtbnMi
KTtpZih0aGlzLnJvd19jb3VudCUyPQohPTNEPTNEMCl7cS5hZGRDbGFzcygiZGFya19yb3ciKX1p
ZihvLmxlbmd0aD0zRD0zRD0zRHApe18uZWFjaChvLGZ1bmN0aW9uKHM9CixyKXtxLmFwcGVuZCh0
aGlzLl9yZW5kZXJDZWxsKHMscikpfSx0aGlzKX1lbHNle2lmKG8ubGVuZ3RoPnApe18uZWFjaChv
LnNsaT0KY2UoMCxwLTEpLGZ1bmN0aW9uKHMscil7cS5hcHBlbmQodGhpcy5fcmVuZGVyQ2VsbChz
LHIpKX0sdGhpcyk7cS5hcHBlbmQodGhpPQpzLl9yZW5kZXJDZWxsKG8uc2xpY2UocC0xKS5qb2lu
KCJcdCIpLHAtMSkpfWVsc2V7aWYocD41JiZvLmxlbmd0aD0zRD0zRD0zRHA9Ci0xKXtfLmVhY2go
byxmdW5jdGlvbihzLHIpe3EuYXBwZW5kKHRoaXMuX3JlbmRlckNlbGwocyxyKSl9LHRoaXMpO3Eu
YXBwZW5kKD0KJCgiPHRkPiIpKX1lbHNle3EuYXBwZW5kKHRoaXMuX3JlbmRlckNlbGwobiwwLHAp
KX19fXRoaXMucm93X2NvdW50Kys7cmV0dXJuPQogcX0sX3JlbmRlckNodW5rOmZ1bmN0aW9uKG4p
e3ZhciBvPTNEdGhpcy4kZWwuZmluZCgidGFibGUiKTtfLmVhY2gobi5ja19kYXQ9CmEuc3BsaXQo
IlxuIiksZnVuY3Rpb24ocCxxKXtpZihwIT0zRD0zRCIiKXtvLmFwcGVuZCh0aGlzLl9yZW5kZXJS
b3cocCkpfX0sdD0KaGlzKX19KTt2YXIgZz0zRGEuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9u
KG4pe2EucHJvdG90eXBlLmluaXRpYWxpemUuY2FsPQpsKHRoaXMsbik7c2Nyb2xsX2VsdD0zRF8u
ZmluZCh0aGlzLiRlbC5wYXJlbnRzKCksZnVuY3Rpb24obyl7cmV0dXJuICQobykuY3M9CnMoIm92
ZXJmbG93Iik9M0Q9M0Q9M0QiYXV0byJ9KTtpZighc2Nyb2xsX2VsdCl7c2Nyb2xsX2VsdD0zRHdp
bmRvd310aGlzLnNjcj0Kb2xsX2VsdD0zRCQoc2Nyb2xsX2VsdCl9LHNjcm9sbGVkX3RvX2JvdHRv
bTpmdW5jdGlvbigpe3JldHVybih0aGlzLiRlbC5oZWlnPQpodCgpLXRoaXMuc2Nyb2xsX2VsdC5z
Y3JvbGxUb3AoKS10aGlzLnNjcm9sbF9lbHQuaGVpZ2h0KCk8PTNEMCl9fSk7dmFyIG09M0Q9CmEu
ZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKG4pe2EucHJvdG90eXBlLmluaXRpYWxpemUuY2Fs
bCh0aGlzLG4pO3RoaXMucz0KY3JvbGxfZWx0PTNEdGhpcy4kZWwuY3NzKHtwb3NpdGlvbjoicmVs
YXRpdmUiLG92ZXJmbG93OiJzY3JvbGwiLGhlaWdodDp0aGlzPQoub3B0aW9ucy5oZWlnaHR8fCI1
MDBweCJ9KX0sc2Nyb2xsZWRfdG9fYm90dG9tOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGVsLnM9
CmNyb2xsVG9wKCkrdGhpcy4kZWwuaW5uZXJIZWlnaHQoKT49M0R0aGlzLmVsLnNjcm9sbEhlaWdo
dH19KTt2YXIgZD0zREJhY2tibz0KbmUuVmlldy5leHRlbmQoe2NvbDp7Y2hyb206bnVsbCxzdGFy
dDpudWxsLGVuZDpudWxsfSx1cmxfdml6Om51bGwsZGF0YXNldF9pPQpkOm51bGwsZ2Vub21lX2J1
aWxkOm51bGwsZmlsZV9leHQ6bnVsbCxpbml0aWFsaXplOmZ1bmN0aW9uKHApe3ZhciBzPTNEcGFy
ZW49CnQuR2FsYXh5O2lmKHMmJnMubW9kYWwpe3RoaXMubW9kYWw9M0RzLm1vZGFsfWlmKHMmJnMu
ZnJhbWUpe3RoaXMuZnJhbWU9M0RzLj0KZnJhbWV9aWYoIXRoaXMubW9kYWx8fCF0aGlzLmZyYW1l
KXtyZXR1cm59dmFyIG89M0RwLm1vZGVsO3ZhciByPTNEby5nZXQoIm1lPQp0YWRhdGEiKTtpZigh
by5nZXQoImZpbGVfZXh0Iikpe3JldHVybn10aGlzLmZpbGVfZXh0PTNEby5nZXQoImZpbGVfZXh0
Iik7aWY9Cih0aGlzLmZpbGVfZXh0PTNEPTNEImJlZCIpe2lmKHIuZ2V0KCJjaHJvbUNvbCIpJiZy
LmdldCgic3RhcnRDb2wiKSYmci5nZXQoIj0KZW5kQ29sIikpe3RoaXMuY29sLmNocm9tPTNEci5n
ZXQoImNocm9tQ29sIiktMTt0aGlzLmNvbC5zdGFydD0zRHIuZ2V0KCJzdGFyPQp0Q29sIiktMTt0
aGlzLmNvbC5lbmQ9M0RyLmdldCgiZW5kQ29sIiktMX1lbHNle2NvbnNvbGUubG9nKCJUYWJ1bGFy
QnV0dG9uVHI9CmFja3N0ZXIgOiBCZWQtZmlsZSBtZXRhZGF0YSBpbmNvbXBsZXRlLiIpO3JldHVy
bn19aWYodGhpcy5maWxlX2V4dD0zRD0zRCJ2Yz0KZiIpe2Z1bmN0aW9uIHEodSx2KXtmb3IodmFy
IHQ9M0QwO3Q8di5sZW5ndGg7dCsrKXtpZih2W3RdLm1hdGNoKHUpKXtyZXR1cm4gPQp0fX1yZXR1
cm4gLTF9dGhpcy5jb2wuY2hyb209M0RxKCJDaHJvbSIsci5nZXQoImNvbHVtbl9uYW1lcyIpKTt0
aGlzLmNvbC5zdGE9CnJ0PTNEcSgiUG9zIixyLmdldCgiY29sdW1uX25hbWVzIikpO3RoaXMuY29s
LmVuZD0zRG51bGw7aWYodGhpcy5jb2wuY2hyb209Cj0zRD0zRC0xfHx0aGlzLmNvbC5zdGFydD0z
RD0zRC0xKXtjb25zb2xlLmxvZygiVGFidWxhckJ1dHRvblRyYWNrc3RlciA6IFZDRj0KLWZpbGUg
bWV0YWRhdGEgaW5jb21wbGV0ZS4iKTtyZXR1cm59fWlmKHRoaXMuY29sLmNocm9tPTNEPTNEPTNE
dW5kZWZpbmVkKXtyPQpldHVybn1pZihvLmlkKXt0aGlzLmRhdGFzZXRfaWQ9M0RvLmlkfWVsc2V7
Y29uc29sZS5sb2coIlRhYnVsYXJCdXR0b25UcmFja3M9CnRlciA6IERhdGFzZXQgaWRlbnRpZmlj
YXRpb24gaXMgbWlzc2luZy4iKTtyZXR1cm59aWYoby5nZXQoInVybF92aXoiKSl7dGhpcz0KLnVy
bF92aXo9M0RvLmdldCgidXJsX3ZpeiIpfWVsc2V7Y29uc29sZS5sb2coIlRhYnVsYXJCdXR0b25U
cmFja3N0ZXIgOiBVcmwgPQpmb3IgdmlzdWFsaXphdGlvbiBjb250cm9sbGVyIGlzIG1pc3Npbmcu
Iik7cmV0dXJufWlmKG8uZ2V0KCJnZW5vbWVfYnVpbGQiKSk9Cnt0aGlzLmdlbm9tZV9idWlsZD0z
RG8uZ2V0KCJnZW5vbWVfYnVpbGQiKX12YXIgbj0zRG5ldyBmLkljb25CdXR0b25WaWV3KHttbz0K
ZGVsOm5ldyBmLkljb25CdXR0b24oe3RpdGxlOiJWaXN1YWxpemUiLGljb25fY2xhc3M6ImNoYXJ0
X2N1cnZlIixpZDoiYnRuX3ZpPQp6In0pfSk7dGhpcy5zZXRFbGVtZW50KHAuJGVsKTt0aGlzLiRl
bC5hcHBlbmQobi5yZW5kZXIoKS4kZWwpO3RoaXMuaGlkZSgpfSw9CmV2ZW50czp7Im1vdXNlb3Zl
ciB0ciI6InNob3ciLG1vdXNlbGVhdmU6ImhpZGUifSxzaG93OmZ1bmN0aW9uKHMpe2Z1bmN0aW9u
ID0Kcih4KXtyZXR1cm4gIWlzTmFOKHBhcnNlRmxvYXQoeCkpJiZpc0Zpbml0ZSh4KX1pZih0aGlz
LmNvbC5jaHJvbT0zRD0zRD0zRG51PQpsbCl7cmV0dXJufXZhciB3PTNEJChzLnRhcmdldCkucGFy
ZW50KCk7dmFyIHQ9M0R3LmNoaWxkcmVuKCkuZXEodGhpcy5jb2wuY2g9CnJvbSkuaHRtbCgpO3Zh
ciBuPTNEdy5jaGlsZHJlbigpLmVxKHRoaXMuY29sLnN0YXJ0KS5odG1sKCk7dmFyIHA9M0R0aGlz
LmNvbD0KLmVuZD93LmNoaWxkcmVuKCkuZXEodGhpcy5jb2wuZW5kKS5odG1sKCk6bjtpZighdC5t
YXRjaCgiXiMiKSYmdCE9M0Q9M0QiIiYmPQpyKG4pKXt2YXIgdj0zRHtkYXRhc2V0X2lkOnRoaXMu
ZGF0YXNldF9pZCxnZW5lX3JlZ2lvbjp0KyI6IituKyItIitwfTt2YXIgcT0KPTNEdy5vZmZzZXQo
KTt2YXIgbz0zRHEubGVmdC0xMDt2YXIgdT0zRHEudG9wLSQod2luZG93KS5zY3JvbGxUb3AoKSsz
OyQoIiNiPQp0bl92aXoiKS5jc3Moe3Bvc2l0aW9uOiJmaXhlZCIsdG9wOnUrInB4IixsZWZ0Om8r
InB4In0pOyQoIiNidG5fdml6Iikub2ZmKCI9CmNsaWNrIik7JCgiI2J0bl92aXoiKS5jbGljayh0
aGlzLmNyZWF0ZV90cmFja3N0ZXJfYWN0aW9uKHRoaXMudXJsX3Zpeix2LHRoaT0Kcy5nZW5vbWVf
YnVpbGQpKTskKCIjYnRuX3ZpeiIpLnNob3coKX1lbHNleyQoIiNidG5fdml6IikuaGlkZSgpfX0s
aGlkZTpmdW5jPQp0aW9uKCl7dGhpcy4kZWwuZmluZCgiI2J0bl92aXoiKS5oaWRlKCl9LGNyZWF0
ZV90cmFja3N0ZXJfYWN0aW9uOmZ1bmN0aW9uKG49CixxLHApe3ZhciBvPTNEdGhpcztyZXR1cm4g
ZnVuY3Rpb24oKXt2YXIgcj0zRHt9O2lmKHApe3JbImYtZGJrZXkiXT0zRHB9JC5haj0KYXgoe3Vy
bDpuKyIvbGlzdF90cmFja3M/IiskLnBhcmFtKHIpLGRhdGFUeXBlOiJodG1sIixlcnJvcjpmdW5j
dGlvbigpe28ubW9kPQphbC5zaG93KHt0aXRsZToiU29tZXRoaW5nIHdlbnQgd3JvbmchIixib2R5
OiJVbmZvcnR1bmF0ZWx5IHdlIGNvdWxkIG5vdCBhZGQ9CiB0aGlzIGRhdGFzZXQgdG8gdGhlIHRy
YWNrIGJyb3dzZXIuIFBsZWFzZSB0cnkgYWdhaW4gb3IgY29udGFjdCB1cy4iLGJ1dHRvbj0Kczp7
Q2FuY2VsOmZ1bmN0aW9uKCl7by5tb2RhbC5oaWRlKCl9fX0pfSxzdWNjZXNzOmZ1bmN0aW9uKHMp
e28ubW9kYWwuc2hvdyh7PQp0aXRsZToiVmlldyBEYXRhIGluIGEgTmV3IG9yIFNhdmVkIFZpc3Vh
bGl6YXRpb24iLGJ1dHRvbnM6e0NhbmNlbDpmdW5jdGlvbig9Cil7by5tb2RhbC5oaWRlKCl9LCJW
aWV3IGluIHNhdmVkIHZpc3VhbGl6YXRpb24iOmZ1bmN0aW9uKCl7by5tb2RhbC5zaG93KHt0aT0K
dGxlOiJBZGQgRGF0YSB0byBTYXZlZCBWaXN1YWxpemF0aW9uIixib2R5OnMsYnV0dG9uczp7Q2Fu
Y2VsOmZ1bmN0aW9uKCl7by5tPQpvZGFsLmhpZGUoKX0sIkFkZCB0byB2aXN1YWxpemF0aW9uIjpm
dW5jdGlvbigpe28ubW9kYWwuaGlkZSgpO28ubW9kYWwuJGVsLmY9CmluZCgiaW5wdXRbbmFtZT0z
RGlkXTpjaGVja2VkIikuZWFjaChmdW5jdGlvbigpe3ZhciB0PTNEJCh0aGlzKS52YWwoKTtxLmlk
PQo9M0R0O28uZnJhbWUuYWRkKHt0aXRsZToiVHJhY2tzdGVyIix0eXBlOiJ1cmwiLGNvbnRlbnQ6
bisiL3RyYWNrc3Rlcj8iKyQucGE9CnJhbShxKX0pfSl9fX0pfSwiVmlldyBpbiBuZXcgdmlzdWFs
aXphdGlvbiI6ZnVuY3Rpb24oKXtvLm1vZGFsLmhpZGUoKTtvLmZyYT0KbWUuYWRkKHt0aXRsZToi
VHJhY2tzdGVyIix0eXBlOiJ1cmwiLGNvbnRlbnQ6bisiL3RyYWNrc3Rlcj8iKyQucGFyYW0ocSl9
KX19PQp9KX19KTtyZXR1cm4gZmFsc2V9fX0pO3ZhciBsPTNEZnVuY3Rpb24ocSxvLHIsbil7dmFy
IHA9M0RuZXcgbyh7bW9kZWw6bmV3IHE9CihyKX0pO3AucmVuZGVyKCk7aWYobil7bi5hcHBlbmQo
cC4kZWwpfXJldHVybiBwfTt2YXIgYz0zRGZ1bmN0aW9uKHApe2lmKCFwLj0KbW9kZWwpe3AubW9k
ZWw9M0RuZXcgaShwLmRhdGFzZXRfY29uZmlnKX12YXIgbz0zRHAucGFyZW50X2VsdDt2YXIgcT0z
RHAuZW1iPQplZGRlZDtkZWxldGUgcC5lbWJlZGRlZDtkZWxldGUgcC5wYXJlbnRfZWx0O2RlbGV0
ZSBwLmRhdGFzZXRfY29uZmlnO3ZhciBuPQo9M0QocT9uZXcgbShwKTpuZXcgZyhwKSk7bi5yZW5k
ZXIoKTtpZihvKXtvLmFwcGVuZChuLiRlbCk7bi5leHBhbmRfdG9fY29udGE9CmluZXIoKX1yZXR1
cm4gbn07cmV0dXJue0RhdGFzZXQ6YixUYWJ1bGFyRGF0YXNldDppLERhdGFzZXRDb2xsZWN0aW9u
OmUsVGFidT0KbGFyRGF0YXNldENodW5rZWRWaWV3OmEsY3JlYXRlVGFidWxhckRhdGFzZXRDaHVu
a2VkVmlldzpjfX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCmRpZmYgLXIgNzQwZDc1
OGMyMjg1YmVjMTQwZTY5MDEwMjVlOTA2ZjUwYTBkN2EyYSAtciA5NWUzMDVkYjI5YjdlYjAyOGIw
OTc2Mj0KZDAwYmQzMDVjNGM3ODIzZTEgdGVzdC9mdW5jdGlvbmFsL3Rlc3RfdG9vbGJveC5weQot
LS0gYS90ZXN0L2Z1bmN0aW9uYWwvdGVzdF90b29sYm94LnB5CisrKyBiL3Rlc3QvZnVuY3Rpb25h
bC90ZXN0X3Rvb2xib3gucHkKQEAgLTEsNiArMSw3IEBACiBpbXBvcnQgbmV3CiBpbXBvcnQgc3lz
CiBmcm9tIGJhc2UudHdpbGx0ZXN0Y2FzZSBpbXBvcnQgVHdpbGxUZXN0Q2FzZQorZnJvbSBiYXNl
LmFzc2VydHMgaW1wb3J0IHZlcmlmeV9hc3NlcnRpb25zCiBmcm9tIGJhc2UuaW50ZXJhY3RvciBp
bXBvcnQgYnVpbGRfaW50ZXJhY3Rvciwgc3RhZ2VfZGF0YV9pbl9oaXN0b3J5LCBSdW5Ubz0Kb2xF
eGNlcHRpb24KIGZyb20gYmFzZS5pbnN0cnVtZW50IGltcG9ydCByZWdpc3Rlcl9qb2JfZGF0YQog
ZnJvbSBnYWxheHkudG9vbHMgaW1wb3J0IERhdGFNYW5hZ2VyVG9vbApAQCAtOTIsNiArOTMsOSBA
QAogICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbiggIlRlc3QgcGFyc2UgZmFpbHVyZSIg
KQo9MjAKICAgICBkZWYgX3ZlcmlmeV9vdXRwdXRzKCBzZWxmLCB0ZXN0ZGVmLCBoaXN0b3J5LCBq
b2JzLCBzaGVkX3Rvb2xfaWQsIGRhdGFfPQpsaXN0LCBnYWxheHlfaW50ZXJhY3RvciApOgorICAg
ICAgICBhc3NlcnQgbGVuKGpvYnMpID0zRD0zRCAxLCAiVGVzdCBmcmFtZXdvcmsgbG9naWMgZXJy
b3IsIHNvbWVob3cgdG89Cm9sIHRlc3QgcmVzdWx0ZWQgaW4gbW9yZSB0aGFuIG9uZSBqb2IuIgor
ICAgICAgICBqb2IgPTNEIGpvYnNbIDAgXQorCiAgICAgICAgIG1heHNlY29uZHMgPTNEIHRlc3Rk
ZWYubWF4c2Vjb25kcwogICAgICAgICBpZiB0ZXN0ZGVmLm51bV9vdXRwdXRzIGlzIG5vdCBOb25l
OgogICAgICAgICAgICAgZXhwZWN0ZWQgPTNEIHRlc3RkZWYubnVtX291dHB1dHMKQEAgLTEwMiw3
ICsxMDYsMzMgQEAKICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIG1lc3NhZ2UgKQog
ICAgICAgICBmb3VuZF9leGNlcHRpb25zID0zRCBbXQo9MjAKLSAgICAgICAgam9iX3N0ZGlvID0z
RCBOb25lCisgICAgICAgIGlmIHRlc3RkZWYuZXhwZWN0X2ZhaWx1cmU6CisgICAgICAgICAgICBp
ZiB0ZXN0ZGVmLm91dHB1dHM6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDYW5u
b3Qgc3BlY2lmeSBvdXRwdXRzIGluIGEgdGVzdCBleHBlY3Rpbj0KZyBmYWlsdXJlLiIpCisKKyAg
ICAgICAgIyBXYWl0IGZvciB0aGUgam9iIHRvIGNvbXBsZXRlIGFuZCByZWdpc3RlciBleHBlY3Rp
b25zIGlmIHRoZSBmaW5hbAorICAgICAgICAjIHN0YXR1cyB3YXMgbm90IHdoYXQgdGVzdCB3YXMg
ZXhwZWN0aW5nLgorICAgICAgICBqb2JfZmFpbGVkID0zRCBGYWxzZQorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBnYWxheHlfaW50ZXJhY3Rvci53YWl0X2Zvcl9qb2IoIGpvYlsgJ2lkJyBdLCBo
aXN0b3J5LCBtYXhzZWNvbj0KZHMgKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Cisg
ICAgICAgICAgICBqb2JfZmFpbGVkID0zRCBUcnVlCisgICAgICAgICAgICBpZiBub3QgdGVzdGRl
Zi5leHBlY3RfZmFpbHVyZToKKyAgICAgICAgICAgICAgICBmb3VuZF9leGNlcHRpb25zLmFwcGVu
ZChlKQorCisgICAgICAgIGlmIG5vdCBqb2JfZmFpbGVkIGFuZCB0ZXN0ZGVmLmV4cGVjdF9mYWls
dXJlOgorICAgICAgICAgICAgZXJyb3IgPTNEIEFzc2VydGlvbkVycm9yKCJFeHBlY3RlZCBqb2Ig
dG8gZmFpbCBidXQgR2FsYXh5IGluZGk9CmNhdGVkIHRoZSBqb2Igc3VjY2Vzc2Z1bGx5IGNvbXBs
ZXRlZC4iKQorICAgICAgICAgICAgZm91bmRfZXhjZXB0aW9ucy5hcHBlbmQoZXJyb3IpCisKKyAg
ICAgICAgam9iX3N0ZGlvID0zRCBnYWxheHlfaW50ZXJhY3Rvci5nZXRfam9iX3N0ZGlvKCBqb2Jb
ICdpZCcgXSApCisKKyAgICAgICAgZXhwZWN0X2V4aXRfY29kZSA9M0QgdGVzdGRlZi5leHBlY3Rf
ZXhpdF9jb2RlCisgICAgICAgIGlmIGV4cGVjdF9leGl0X2NvZGUgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICBleGl0X2NvZGUgPTNEIGpvYl9zdGRpb1siZXhpdF9jb2RlIl0KKyAgICAgICAgICAg
IGlmIHN0cihleHBlY3RfZXhpdF9jb2RlKSAhPTNEIHN0cihleGl0X2NvZGUpOgorICAgICAgICAg
ICAgICAgIGVycm9yID0zRCBBc3NlcnRpb25FcnJvcigiRXhwZWN0ZWQgam9iIHRvIGNvbXBsZXRl
IHdpdGggZXg9Cml0IGNvZGUgJXMsIGZvdW5kICVzIiAlIChleHBlY3RfZXhpdF9jb2RlLCBleGl0
X2NvZGUpKQorICAgICAgICAgICAgICAgIGZvdW5kX2V4Y2VwdGlvbnMuYXBwZW5kKGVycm9yKQor
CiAgICAgICAgIGZvciBvdXRwdXRfaW5kZXgsIG91dHB1dF90dXBsZSBpbiBlbnVtZXJhdGUodGVz
dGRlZi5vdXRwdXRzKToKICAgICAgICAgICAgICMgR2V0IHRoZSBjb3JyZWN0IGhpZAogICAgICAg
ICAgICAgbmFtZSwgb3V0ZmlsZSwgYXR0cmlidXRlcyA9M0Qgb3V0cHV0X3R1cGxlCkBAIC0xMjMs
MTQgKzE1MywyNSBAQAogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAg
ICAgICAgICAgIGlmIG5vdCBmb3VuZF9leGNlcHRpb25zOgogICAgICAgICAgICAgICAgICAgICAj
IE9ubHkgcHJpbnQgdGhpcyBzdHVmZiBvdXQgb25jZS4KLSAgICAgICAgICAgICAgICAgICAgZm9y
IGpvYiBpbiBqb2JzOgotICAgICAgICAgICAgICAgICAgICAgICAgam9iX3N0ZGlvID0zRCBnYWxh
eHlfaW50ZXJhY3Rvci5nZXRfam9iX3N0ZGlvKCBqb2I9ClsgJ2lkJyBdICkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciBzdHJlYW0gaW4gWydzdGRvdXQnLCAnc3RkZXJyJ106Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgc3RyZWFtIGluIGpvYl9zdGRpbzoKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHJpbnQgPj5zeXMuc3RkZXJyLCBzZWxmLl9mb3JtYXRfc3Ry
ZWFtKCBqPQpvYl9zdGRpb1sgc3RyZWFtIF0sIHN0cmVhbT0zRHN0cmVhbSwgZm9ybWF0PTNEVHJ1
ZSApCisgICAgICAgICAgICAgICAgICAgIGZvciBzdHJlYW0gaW4gWydzdGRvdXQnLCAnc3RkZXJy
J106CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdHJlYW0gaW4gam9iX3N0ZGlvOgorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgc2VsZi5fZm9ybWF0
X3N0cmVhbSggam9iX3M9CnRkaW9bIHN0cmVhbSBdLCBzdHJlYW09M0RzdHJlYW0sIGZvcm1hdD0z
RFRydWUgKQogICAgICAgICAgICAgICAgIGZvdW5kX2V4Y2VwdGlvbnMuYXBwZW5kKGUpCi0gICAg
ICAgIGlmIGpvYl9zdGRpbyBpcyBOb25lOgotICAgICAgICAgICAgam9iX3N0ZGlvID0zRCBnYWxh
eHlfaW50ZXJhY3Rvci5nZXRfam9iX3N0ZGlvKCBqb2JzWzBdWyAnaWQnIF09CiApCisKKyAgICAg
ICAgb3RoZXJfY2hlY2tzID0zRCB7CisgICAgICAgICAgICAiY29tbWFuZF9saW5lIjogIkNvbW1h
bmQgcHJvZHVjZWQgYnkgdGhlIGpvYiIsCisgICAgICAgICAgICAic3Rkb3V0IjogIlN0YW5kYXJk
IG91dHB1dCBvZiB0aGUgam9iIiwKKyAgICAgICAgICAgICJzdGRlcnIiOiAiU3RhbmRhcmQgZXJy
b3Igb2YgdGhlIGpvYiIsCisgICAgICAgIH0KKyAgICAgICAgZm9yIHdoYXQsIGRlc2NyaXB0aW9u
IGluIG90aGVyX2NoZWNrcy5pdGVtcygpOgorICAgICAgICAgICAgaWYgZ2V0YXR0ciggdGVzdGRl
Ziwgd2hhdCwgTm9uZSApIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAg
ICAgICAgICAgICAgICAgZGF0YSA9M0Qgam9iX3N0ZGlvW3doYXRdCisgICAgICAgICAgICAgICAg
ICAgIHZlcmlmeV9hc3NlcnRpb25zKCBkYXRhLCBnZXRhdHRyKCB0ZXN0ZGVmLCB3aGF0ICkgKQor
ICAgICAgICAgICAgICAgIGV4Y2VwdCBBc3NlcnRpb25FcnJvciwgZXJyOgorICAgICAgICAgICAg
ICAgICAgICBlcnJtc2cgPTNEICclcyBkaWZmZXJlbnQgdGhhbiBleHBlY3RlZFxuJyAlIGRlc2Ny
aXB0aW9uCisgICAgICAgICAgICAgICAgICAgIGVycm1zZyArPTNEIHN0ciggZXJyICkKKyAgICAg
ICAgICAgICAgICAgICAgZm91bmRfZXhjZXB0aW9ucy5hcHBlbmQoIEFzc2VydGlvbkVycm9yKCBl
cnJtc2cgKSApCj0yMAogICAgICAgICBpZiBmb3VuZF9leGNlcHRpb25zOgogICAgICAgICAgICAg
cmFpc2UgSm9iT3V0cHV0c0Vycm9yKGZvdW5kX2V4Y2VwdGlvbnMsIGpvYl9zdGRpbykKCmRpZmYg
LXIgNzQwZDc1OGMyMjg1YmVjMTQwZTY5MDEwMjVlOTA2ZjUwYTBkN2EyYSAtciA5NWUzMDVkYjI5
YjdlYjAyOGIwOTc2Mj0KZDAwYmQzMDVjNGM3ODIzZTEgdGVzdC9mdW5jdGlvbmFsL3Rvb2xzL2pv
Yl9wcm9wZXJ0aWVzLnhtbAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvZnVuY3Rpb25hbC90b29s
cy9qb2JfcHJvcGVydGllcy54bWwKQEAgLTAsMCArMSw2MiBAQAorPHRvb2wgaWQ9M0Qiam9iX3By
b3BlcnRpZXMiIG5hbWU9M0QiVGVzdCBKb2IgUHJvcGVydGllcyI+CisgICAgPGNvbW1hbmQ+Cisg
ICAgICAgICNpZiAkdGhlYm9vbAorICAgICAgICAgICAgZWNobyAiVGhlIGJvb2wgaXMgdHJ1ZSI7
CisgICAgICAgICAgICBlY2hvICJUaGUgYm9vbCBpcyByZWFsbHkgdHJ1ZSIgMT4mYW1wOzI7Cisg
ICAgICAgICAgICBlY2hvICJUaGlzIGlzIGEgbGluZSBvZiB0ZXh0LiIgPiAkb3V0X2ZpbGUxCisg
ICAgICAgICNlbHNlCisgICAgICAgICAgICBlY2hvICJUaGUgYm9vbCBpcyBub3QgdHJ1ZSI7Cisg
ICAgICAgICAgICBlY2hvICJUaGUgYm9vbCBpcyB2ZXJ5IG5vdCB0cnVlIiAxPiZhbXA7MjsKKyAg
ICAgICAgICAgIGVjaG8gIlRoaXMgaXMgYSBkaWZmZXJlbnQgbGluZSBvZiB0ZXh0LiIgPiAkb3V0
X2ZpbGUxOworICAgICAgICAgICAgc2ggLWMgImV4aXQgMiIKKyAgICAgICAgI2VuZCBpZgorICAg
ICAgICAjaWYgJGZhaWxib29sCisgICAgICAgICAgICA7IHNoIC1jICJleGl0IDEyNyIKKyAgICAg
ICAgI2VuZCBpZgorCisgICAgPC9jb21tYW5kPgorICAgIDxpbnB1dHM+CisgICAgICAgIDxwYXJh
bSBuYW1lPTNEInRoZWJvb2wiIHR5cGU9M0QiYm9vbGVhbiIgbGFiZWw9M0QiVGhlIGJvb2xlYW4g
cHJvcD0KZXJ0eSIgLz4KKyAgICAgICAgPHBhcmFtIG5hbWU9M0QiZmFpbGJvb2wiIHR5cGU9M0Qi
Ym9vbGVhbiIgbGFiZWw9M0QiVGhlIGZhaWx1cmUgcHJvPQpwZXJ0eSIgY2hlY2tlZD0zRCJmYWxz
ZSIgLz4KKyAgICA8L2lucHV0cz4KKyAgICA8b3V0cHV0cz4KKyAgICAgICAgPGRhdGEgbmFtZT0z
RCJvdXRfZmlsZTEiIC8+CisgICAgPC9vdXRwdXRzPgorICAgIDxzdGRpbz4KKyAgICAgICAgPGV4
aXRfY29kZSByYW5nZT0zRCIxMjciICAgbGV2ZWw9M0QiZmF0YWwiICAgZGVzY3JpcHRpb249M0Qi
RmFpbGluPQpnIGV4aXQgY29kZS4iIC8+CisgICAgPC9zdGRpbz4KKyAgICA8dGVzdHM+CisgICAg
ICAgIDx0ZXN0IGV4cGVjdF9leGl0X2NvZGU9M0QiMCI+CisgICAgICAgICAgICA8cGFyYW0gbmFt
ZT0zRCJ0aGVib29sIiB2YWx1ZT0zRCJ0cnVlIiAvPgorICAgICAgICAgICAgPG91dHB1dCBuYW1l
PTNEIm91dF9maWxlMSIgZmlsZT0zRCJzaW1wbGVfbGluZS50eHQiIC8+CisgICAgICAgICAgICA8
YXNzZXJ0X2NvbW1hbmQ+CisgICAgICAgICAgICAgICAgPGhhc190ZXh0IHRleHQ9M0QicmVhbGx5
IiAvPgorICAgICAgICAgICAgPC9hc3NlcnRfY29tbWFuZD4KKyAgICAgICAgICAgIDxhc3NlcnRf
c3Rkb3V0PgorICAgICAgICAgICAgICAgIDxoYXNfbGluZSBsaW5lPTNEIlRoZSBib29sIGlzIHRy
dWUiIC8+CisgICAgICAgICAgICA8L2Fzc2VydF9zdGRvdXQ+CisgICAgICAgICAgICA8YXNzZXJ0
X3N0ZGVycj4KKyAgICAgICAgICAgICAgICA8aGFzX2xpbmUgbGluZT0zRCJUaGUgYm9vbCBpcyBy
ZWFsbHkgdHJ1ZSIgLz4KKyAgICAgICAgICAgIDwvYXNzZXJ0X3N0ZGVycj4KKyAgICAgICAgPC90
ZXN0PgorICAgICAgICA8dGVzdCBleHBlY3RfZXhpdF9jb2RlPTNEIjIiPgorICAgICAgICAgICAg
PHBhcmFtIG5hbWU9M0QidGhlYm9vbCIgdmFsdWU9M0QiZmFsc2UiIC8+CisgICAgICAgICAgICA8
b3V0cHV0IG5hbWU9M0Qib3V0X2ZpbGUxIiBmaWxlPTNEInNpbXBsZV9saW5lX2FsdGVybmF0aXZl
LnR4dD0KIiAvPgorICAgICAgICAgICAgPGFzc2VydF9jb21tYW5kPgorICAgICAgICAgICAgICAg
IDxoYXNfdGV4dCB0ZXh0PTNEInZlcnkgbm90IiAvPgorICAgICAgICAgICAgPC9hc3NlcnRfY29t
bWFuZD4KKyAgICAgICAgICAgIDxhc3NlcnRfc3Rkb3V0PgorICAgICAgICAgICAgICAgIDxoYXNf
bGluZSBsaW5lPTNEIlRoZSBib29sIGlzIG5vdCB0cnVlIiAvPgorICAgICAgICAgICAgPC9hc3Nl
cnRfc3Rkb3V0PgorICAgICAgICAgICAgPGFzc2VydF9zdGRlcnI+CisgICAgICAgICAgICAgICAg
PGhhc19saW5lIGxpbmU9M0QiVGhlIGJvb2wgaXMgdmVyeSBub3QgdHJ1ZSIgLz4KKyAgICAgICAg
ICAgIDwvYXNzZXJ0X3N0ZGVycj4KKyAgICAgICAgPC90ZXN0PgorICAgICAgICA8dGVzdCBleHBl
Y3RfZXhpdF9jb2RlZD0zRCIxMjciIGV4cGVjdF9mYWlsdXJlPTNEInRydWUiPgorICAgICAgICAg
ICAgPHBhcmFtIG5hbWU9M0QidGhlYm9vbCIgdmFsdWU9M0QidHJ1ZSIgLz4KKyAgICAgICAgICAg
IDxwYXJhbSBuYW1lPTNEImZhaWxib29sIiB2YWx1ZT0zRCJ0cnVlIiAvPgorICAgICAgICA8L3Rl
c3Q+CisgICAgPC90ZXN0cz4KKyAgICA8aGVscD4KKyAgICA8L2hlbHA+Cis8L3Rvb2w+CgpkaWZm
IC1yIDc0MGQ3NThjMjI4NWJlYzE0MGU2OTAxMDI1ZTkwNmY1MGEwZDdhMmEgLXIgOTVlMzA1ZGIy
OWI3ZWIwMjhiMDk3NjI9CmQwMGJkMzA1YzRjNzgyM2UxIHRlc3QvZnVuY3Rpb25hbC90b29scy9z
YW1wbGVzX3Rvb2xfY29uZi54bWwKLS0tIGEvdGVzdC9mdW5jdGlvbmFsL3Rvb2xzL3NhbXBsZXNf
dG9vbF9jb25mLnhtbAorKysgYi90ZXN0L2Z1bmN0aW9uYWwvdG9vbHMvc2FtcGxlc190b29sX2Nv
bmYueG1sCkBAIC0xMyw2ICsxMyw3IEBACiAgIDx0b29sIGZpbGU9M0QibXVsdGlfb3V0cHV0X2Fz
c2lnbl9wcmltYXJ5LnhtbCIgLz48dG9vbCBmaWxlPTNEImNvbXBvc2l0ZT0KX291dHB1dC54bWwi
IC8+PHRvb2wgZmlsZT0zRCJtZXRhZGF0YS54bWwiIC8+CisgIDx0b29sIGZpbGU9M0Qiam9iX3By
b3BlcnRpZXMueG1sIiAvPjx0b29sIGZpbGU9M0QiZ3ppcHBlZF9pbnB1dHMueG1sIiAvPj0KPHRv
b2wgZmlsZT0zRCJvdXRwdXRfb3JkZXIueG1sIiAvPjx0b29sIGZpbGU9M0Qib3V0cHV0X2Zvcm1h
dC54bWwiIC8+CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9j
b21taXRzLzg2ZDM5M2JlZTAzZS8KQ2hhbmdlc2V0OiAgIDg2ZDM5M2JlZTAzZQpVc2VyOiAgICAg
ICAgY2FybGZlYmVyaGFyZApEYXRlOiAgICAgICAgMjAxNC0xMi0xOSAxOToxOTowMyswMDowMApT
dW1tYXJ5OiAgICAgTWVyZ2VkIGdhbGF4eS9nYWxheHktY2VudHJhbCBpbnRvIGRlZmF1bHQKQWZm
ZWN0ZWQgIzogIDYgZmlsZXMKCmRpZmYgLXIgOTVlMzA1ZGIyOWI3ZWIwMjhiMDk3NjJkMDBiZDMw
NWM0Yzc4MjNlMSAtciA4NmQzOTNiZWUwM2VkYmQ1NTkyNjU3OT0KNTc1NmFlMzkzZjAxMDdkOWIg
bGliL2dhbGF4eS9tb2RlbC9fX2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L21vZGVsL19faW5p
dF9fLnB5CisrKyBiL2xpYi9nYWxheHkvbW9kZWwvX19pbml0X18ucHkKQEAgLTUyMCw5ICs1MjAs
MTUgQEAKICAgICAgICAgICAgICAgICBkYXRhc2V0LmJsdXJiID0zRCAnZGVsZXRlZCcKICAgICAg
ICAgICAgICAgICBkYXRhc2V0LnBlZWsgPTNEICdKb2IgZGVsZXRlZCcKICAgICAgICAgICAgICAg
ICBkYXRhc2V0LmluZm8gPTNEICdKb2Igb3V0cHV0IGRlbGV0ZWQgYnkgdXNlciBiZWZvcmUgam9i
IGNvPQptcGxldGVkJwotICAgIGRlZiB0b19kaWN0KCBzZWxmLCB2aWV3PTNEJ2NvbGxlY3Rpb24n
ICk6CisKKyAgICBkZWYgdG9fZGljdCggc2VsZiwgdmlldz0zRCdjb2xsZWN0aW9uJywgc3lzdGVt
X2RldGFpbHM9M0RGYWxzZSApOgogICAgICAgICBydmFsID0zRCBzdXBlciggSm9iLCBzZWxmICku
dG9fZGljdCggdmlldz0zRHZpZXcgKQogICAgICAgICBydmFsWyd0b29sX2lkJ10gPTNEIHNlbGYu
dG9vbF9pZAorICAgICAgICBpZiBzeXN0ZW1fZGV0YWlsczoKKyAgICAgICAgICAgICMgU3lzdGVt
IGxldmVsIGRldGFpbHMgdGhhdCBvbmx5IGFkbWlucyBzaG91bGQgaGF2ZS4KKyAgICAgICAgICAg
IHJ2YWxbJ2V4dGVybmFsX2lkJ10gPTNEIHNlbGYuam9iX3J1bm5lcl9leHRlcm5hbF9pZAorICAg
ICAgICAgICAgcnZhbFsnY29tbWFuZF9saW5lJ10gPTNEIHNlbGYuY29tbWFuZF9saW5lCisKICAg
ICAgICAgaWYgdmlldyA9M0Q9M0QgJ2VsZW1lbnQnOgogICAgICAgICAgICAgcGFyYW1fZGljdCA9
M0QgZGljdCggWyAoIHAubmFtZSwgcC52YWx1ZSApIGZvciBwIGluIHNlbGYucGFyYW09CmV0ZXJz
IF0gKQogICAgICAgICAgICAgcnZhbFsncGFyYW1zJ10gPTNEIHBhcmFtX2RpY3QKCmRpZmYgLXIg
OTVlMzA1ZGIyOWI3ZWIwMjhiMDk3NjJkMDBiZDMwNWM0Yzc4MjNlMSAtciA4NmQzOTNiZWUwM2Vk
YmQ1NTkyNjU3OT0KNTc1NmFlMzkzZjAxMDdkOWIgbGliL2dhbGF4eS93ZWIvc2VjdXJpdHkvX19p
bml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS93ZWIvc2VjdXJpdHkvX19pbml0X18ucHkKKysrIGIv
bGliL2dhbGF4eS93ZWIvc2VjdXJpdHkvX19pbml0X18ucHkKQEAgLTczLDcgKzczLDcgQEAKICAg
ICAgICAgaWYgbm90IGlzaW5zdGFuY2UoIHJ2YWwsIGRpY3QgKToKICAgICAgICAgICAgIHJldHVy
biBydmFsCiAgICAgICAgIGZvciBrLCB2IGluIHJ2YWwuaXRlbXMoKToKLSAgICAgICAgICAgIGlm
ICggayA9M0Q9M0QgJ2lkJyBvciBrLmVuZHN3aXRoKCAnX2lkJyApICkgYW5kIHYgaXMgbm90IE5v
bmUgPQphbmQgayBub3QgaW4gWyAndG9vbF9pZCcgXToKKyAgICAgICAgICAgIGlmICggayA9M0Q9
M0QgJ2lkJyBvciBrLmVuZHN3aXRoKCAnX2lkJyApICkgYW5kIHYgaXMgbm90IE5vbmUgPQphbmQg
ayBub3QgaW4gWyAndG9vbF9pZCcsICdleHRlcm5hbF9pZCcgXToKICAgICAgICAgICAgICAgICB0
cnk6CiAgICAgICAgICAgICAgICAgICAgIHJ2YWxbIGsgXSA9M0Qgc2VsZi5lbmNvZGVfaWQoIHYg
KQogICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CgpkaWZmIC1yIDk1ZTMwNWRiMjli
N2ViMDI4YjA5NzYyZDAwYmQzMDVjNGM3ODIzZTEgLXIgODZkMzkzYmVlMDNlZGJkNTU5MjY1Nzk9
CjU3NTZhZTM5M2YwMTA3ZDliIGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2pvYnMucHkK
LS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvam9icy5weQorKysgYi9saWIvZ2Fs
YXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9qb2JzLnB5CkBAIC0yNCwxMCArMjQsMTMgQEAKICAgICBA
ZXhwb3NlX2FwaQogICAgIGRlZiBpbmRleCggc2VsZiwgdHJhbnMsICoqa3dkICk6CiAgICAgICAg
ICIiIgotICAgICAgICBpbmRleCggdHJhbnMsIHN0YXRlPTNETm9uZSwgdG9vbF9pZD0zRE5vbmUs
IGhpc3RvcnlfaWQ9M0ROb25lICkKKyAgICAgICAgaW5kZXgoIHRyYW5zLCBzdGF0ZT0zRE5vbmUs
IHRvb2xfaWQ9M0ROb25lLCBoaXN0b3J5X2lkPTNETm9uZSwgZGF0PQplX3JhbmdlX21pbj0zRE5v
bmUsIGRhdGVfcmFuZ2VfbWF4PTNETm9uZSwgdXNlcl9kZXRhaWxzPTNERmFsc2UgKQogICAgICAg
ICAqIEdFVCAvYXBpL2pvYnM6CiAgICAgICAgICAgICByZXR1cm4gam9icyBmb3IgY3VycmVudCB1
c2VyCj0yMAorICAgICAgICAgICAgISEgaWYgdXNlciBpcyBhZG1pbiBhbmQgdXNlcl9kZXRhaWxz
IGlzIFRydWUsIHRoZW4KKyAgICAgICAgICAgICAgICByZXR1cm4gam9icyBmb3IgYWxsIGdhbGF4
eSB1c2VycyBiYXNlZCBvbiBmaWx0ZXJpbmcgLSB0aGlzPQogaXMgYW4gZXh0ZW5kZWQgc2Vydmlj
ZQorCiAgICAgICAgIDp0eXBlICAgc3RhdGU6IHN0cmluZyBvciBsaXN0CiAgICAgICAgIDpwYXJh
bSAgc3RhdGU6IGxpbWl0IGxpc3Rpbmcgb2Ygam9icyB0byB0aG9zZSB0aGF0IG1hdGNoIG9uZSBv
ZiB0aD0KZSBpbmNsdWRlZCBzdGF0ZXMuIElmIG5vbmUsIGFsbCBhcmUgcmV0dXJuZWQuCiAgICAg
ICAgIFZhbGlkIEdhbGF4eSBqb2Igc3RhdGVzIGluY2x1ZGU6CkBAIC0zNiwxNyArMzksMjkgQEAK
ICAgICAgICAgOnR5cGUgICB0b29sX2lkOiBzdHJpbmcgb3IgbGlzdAogICAgICAgICA6cGFyYW0g
IHRvb2xfaWQ6IGxpbWl0IGxpc3Rpbmcgb2Ygam9icyB0byB0aG9zZSB0aGF0IG1hdGNoIG9uZSBv
ZiA9CnRoZSBpbmNsdWRlZCB0b29sX2lkcy4gSWYgbm9uZSwgYWxsIGFyZSByZXR1cm5lZC4KPTIw
CisgICAgICAgIDp0eXBlICAgdXNlcl9kZXRhaWxzOiBib29sZWFuCisgICAgICAgIDpwYXJhbSAg
dXNlcl9kZXRhaWxzOiBpZiB0cnVlLCBhbmQgcmVxdWVzdG9yIGlzIGFuIGFkbWluLCB3aWxsIHJl
dD0KdXJuIGV4dGVybmFsIGpvYiBpZCBhbmQgdXNlciBlbWFpbC4KKworICAgICAgICA6dHlwZSAg
IGRhdGVfcmFuZ2VfbWluOiBzdHJpbmcgJzIwMTQtMDEtMDEnCisgICAgICAgIDpwYXJhbSAgZGF0
ZV9yYW5nZV9taW46IGxpbWl0IHRoZSBsaXN0aW5nIG9mIGpvYnMgdG8gdGhvc2UgdXBkYXRlZD0K
IG9uIG9yIGFmdGVyIHJlcXVlc3RlZCBkYXRlCisKKyAgICAgICAgOnR5cGUgICBkYXRlX3Jhbmdl
X21heDogc3RyaW5nICcyMDE0LTEyLTMxJworICAgICAgICA6cGFyYW0gIGRhdGVfcmFuZ2VfbWF4
OiBsaW1pdCB0aGUgbGlzdGluZyBvZiBqb2JzIHRvIHRob3NlIHVwZGF0ZWQ9CiBvbiBvciBiZWZv
cmUgcmVxdWVzdGVkIGRhdGUKKwogICAgICAgICA6dHlwZSAgIGhpc3RvcnlfaWQ6IHN0cmluZwog
ICAgICAgICA6cGFyYW0gIGhpc3RvcnlfaWQ6IGxpbWl0IGxpc3Rpbmcgb2Ygam9icyB0byB0aG9z
ZSB0aGF0IG1hdGNoIHRoZSA9Cmhpc3RvcnlfaWQuIElmIG5vbmUsIGFsbCBhcmUgcmV0dXJuZWQu
Cj0yMAogICAgICAgICA6cnR5cGU6ICAgICBsaXN0CiAgICAgICAgIDpyZXR1cm5zOiAgIGxpc3Qg
b2YgZGljdGlvbmFyaWVzIGNvbnRhaW5pbmcgc3VtbWFyeSBqb2IgaW5mb3JtYXRpb24KICAgICAg
ICAgIiIiCisgICAgICAgIHN0YXRlID0zRCBrd2QuZ2V0KCAnc3RhdGUnLCBOb25lICkKKyAgICAg
ICAgaXNfYWRtaW4gPTNEIHRyYW5zLnVzZXJfaXNfYWRtaW4oKQorICAgICAgICB1c2VyX2RldGFp
bHMgPTNEIGt3ZC5nZXQoJ3VzZXJfZGV0YWlscycsIEZhbHNlKQo9MjAKLSAgICAgICAgc3RhdGUg
PTNEIGt3ZC5nZXQoICdzdGF0ZScsIE5vbmUgKQotICAgICAgICBxdWVyeSA9M0QgdHJhbnMuc2Ff
c2Vzc2lvbi5xdWVyeSggdHJhbnMuYXBwLm1vZGVsLkpvYiApLmZpbHRlcigKLSAgICAgICAgICAg
IHRyYW5zLmFwcC5tb2RlbC5Kb2IudXNlciA9M0Q9M0QgdHJhbnMudXNlcgotICAgICAgICApCisg
ICAgICAgIGlmIGlzX2FkbWluOgorICAgICAgICAgICAgcXVlcnkgPTNEIHRyYW5zLnNhX3Nlc3Np
b24ucXVlcnkoIHRyYW5zLmFwcC5tb2RlbC5Kb2IgKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgcXVlcnkgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLmFwcC5tb2RlbC5Kb2Ig
KS5maWx0ZXI9Cih0cmFucy5hcHAubW9kZWwuSm9iLnVzZXIgPTNEPTNEIHRyYW5zLnVzZXIpCj0y
MAogICAgICAgICBkZWYgYnVpbGRfYW5kX2FwcGx5X2ZpbHRlcnMoIHF1ZXJ5LCBvYmplY3RzLCBm
aWx0ZXJfZnVuYyApOgogICAgICAgICAgICAgaWYgb2JqZWN0cyBpcyBub3QgTm9uZToKQEAgLTY0
LDYgKzc5LDkgQEAKICAgICAgICAgcXVlcnkgPTNEIGJ1aWxkX2FuZF9hcHBseV9maWx0ZXJzKCBx
dWVyeSwga3dkLmdldCggJ3Rvb2xfaWQnLCBOb25lPQogKSwgbGFtYmRhIHQ6IHRyYW5zLmFwcC5t
b2RlbC5Kb2IudG9vbF9pZCA9M0Q9M0QgdCApCiAgICAgICAgIHF1ZXJ5ID0zRCBidWlsZF9hbmRf
YXBwbHlfZmlsdGVycyggcXVlcnksIGt3ZC5nZXQoICd0b29sX2lkX2xpa2UnLD0KIE5vbmUgKSwg
bGFtYmRhIHQ6IHRyYW5zLmFwcC5tb2RlbC5Kb2IudG9vbF9pZC5saWtlKHQpICkKPTIwCisgICAg
ICAgIHF1ZXJ5ID0zRCBidWlsZF9hbmRfYXBwbHlfZmlsdGVycyggcXVlcnksIGt3ZC5nZXQoICdk
YXRlX3JhbmdlX21pbj0KJywgTm9uZSApLCBsYW1iZGEgZG1pbjogdHJhbnMuYXBwLm1vZGVsLkpv
Yi50YWJsZS5jLnVwZGF0ZV90aW1lID49M0QgZG1pbiApCisgICAgICAgIHF1ZXJ5ID0zRCBidWls
ZF9hbmRfYXBwbHlfZmlsdGVycyggcXVlcnksIGt3ZC5nZXQoICdkYXRlX3JhbmdlX21heD0KJywg
Tm9uZSApLCBsYW1iZGEgZG1heDogdHJhbnMuYXBwLm1vZGVsLkpvYi50YWJsZS5jLnVwZGF0ZV90
aW1lIDw9M0QgZG1heCApCisKICAgICAgICAgaGlzdG9yeV9pZCA9M0Qga3dkLmdldCggJ2hpc3Rv
cnlfaWQnLCBOb25lICkKICAgICAgICAgaWYgaGlzdG9yeV9pZCBpcyBub3QgTm9uZToKICAgICAg
ICAgICAgIHRyeToKQEAgLTc4LDcgKzk2LDEyIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAg
ICBvcmRlcl9ieSA9M0QgdHJhbnMuYXBwLm1vZGVsLkpvYi51cGRhdGVfdGltZS5kZXNjKCkKICAg
ICAgICAgZm9yIGpvYiBpbiBxdWVyeS5vcmRlcl9ieSggb3JkZXJfYnkgKS5hbGwoKToKLSAgICAg
ICAgICAgIG91dC5hcHBlbmQoIHNlbGYuZW5jb2RlX2FsbF9pZHMoIHRyYW5zLCBqb2IudG9fZGlj
dCggJ2NvbGxlY3RpPQpvbicgKSwgVHJ1ZSApICkKKyAgICAgICAgICAgIGpvYl9kaWN0ID0zRCBq
b2IudG9fZGljdCggJ2NvbGxlY3Rpb24nLCBzeXN0ZW1fZGV0YWlscz0zRGlzX2FkPQptaW4gKQor
ICAgICAgICAgICAgaiA9M0Qgc2VsZi5lbmNvZGVfYWxsX2lkcyggdHJhbnMsIGpvYl9kaWN0LCBU
cnVlICkKKyAgICAgICAgICAgIGlmIHVzZXJfZGV0YWlsczoKKyAgICAgICAgICAgICAgICBqWyd1
c2VyX2VtYWlsJ10gPTNEIGpvYi51c2VyLmVtYWlsCisgICAgICAgICAgICBvdXQuYXBwZW5kKGop
CisKICAgICAgICAgcmV0dXJuIG91dAo9MjAKICAgICBAZXhwb3NlX2FwaQpAQCAtOTgsMTIgKzEy
MSwxMyBAQAogICAgICAgICA6cmV0dXJuczogICBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgZnVsbCBk
ZXNjcmlwdGlvbiBvZiBqb2IgZGF0YQogICAgICAgICAiIiIKICAgICAgICAgam9iID0zRCBzZWxm
Ll9fZ2V0X2pvYiggdHJhbnMsIGlkICkKLSAgICAgICAgam9iX2RpY3QgPTNEIHNlbGYuZW5jb2Rl
X2FsbF9pZHMoIHRyYW5zLCBqb2IudG9fZGljdCggJ2VsZW1lbnQnICksPQogVHJ1ZSApCisgICAg
ICAgIGlzX2FkbWluID0zRCB0cmFucy51c2VyX2lzX2FkbWluKCkKKyAgICAgICAgam9iX2RpY3Qg
PTNEIHNlbGYuZW5jb2RlX2FsbF9pZHMoIHRyYW5zLCBqb2IudG9fZGljdCggJ2VsZW1lbnQnLCBz
PQp5c3RlbV9kZXRhaWxzPTNEaXNfYWRtaW4gKSwgVHJ1ZSApCiAgICAgICAgIGZ1bGxfb3V0cHV0
ID0zRCB1dGlsLmFzYm9vbCgga3dkLmdldCggJ2Z1bGwnLCAnZmFsc2UnICkgKQogICAgICAgICBp
ZiBmdWxsX291dHB1dDoKICAgICAgICAgICAgIGpvYl9kaWN0LnVwZGF0ZSggZGljdCggc3RkZXJy
PTNEam9iLnN0ZGVyciwgc3Rkb3V0PTNEam9iLnN0ZG91PQp0ICkgKQotICAgICAgICAgICAgaWYg
dHJhbnMudXNlcl9pc19hZG1pbigpOgotICAgICAgICAgICAgICAgIGpvYl9kaWN0Wydjb21tYW5k
X2xpbmUnXSA9M0Qgam9iLmNvbW1hbmRfbGluZQorICAgICAgICAgICAgaWYgaXNfYWRtaW46Cisg
ICAgICAgICAgICAgICAgam9iX2RpY3RbJ3VzZXJfZW1haWwnXSA9M0Qgam9iLnVzZXIuZW1haWwK
PTIwCiAgICAgICAgICAgICAgICAgZGVmIG1ldHJpY190b19kaWN0KG1ldHJpYyk6CiAgICAgICAg
ICAgICAgICAgICAgIG1ldHJpY19uYW1lID0zRCBtZXRyaWMubWV0cmljX25hbWUKQEAgLTE3NCwx
MCArMTk4LDE2IEBACiAgICAgICAgICAgICBkZWNvZGVkX2pvYl9pZCA9M0QgdHJhbnMuc2VjdXJp
dHkuZGVjb2RlX2lkKCBpZCApCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAg
ICByYWlzZSBleGNlcHRpb25zLk1hbGZvcm1lZElkKCkKLSAgICAgICAgcXVlcnkgPTNEIHRyYW5z
LnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLmFwcC5tb2RlbC5Kb2IgKS5maWx0ZXIoCi0gICAgICAg
ICAgICB0cmFucy5hcHAubW9kZWwuSm9iLnVzZXIgPTNEPTNEIHRyYW5zLnVzZXIsCi0gICAgICAg
ICAgICB0cmFucy5hcHAubW9kZWwuSm9iLmlkID0zRD0zRCBkZWNvZGVkX2pvYl9pZAotICAgICAg
ICApCisgICAgICAgIHF1ZXJ5ID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5hcHAu
bW9kZWwuSm9iICkKKyAgICAgICAgaWYgdHJhbnMudXNlcl9pc19hZG1pbigpOgorICAgICAgICAg
ICAgcXVlcnkgPTNEIHF1ZXJ5LmZpbHRlcigKKyAgICAgICAgICAgICAgICB0cmFucy5hcHAubW9k
ZWwuSm9iLmlkID0zRD0zRCBkZWNvZGVkX2pvYl9pZAorICAgICAgICAgICAgKQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgcXVlcnkgPTNEIHF1ZXJ5LmZpbHRlcigKKyAgICAgICAgICAgICAg
ICB0cmFucy5hcHAubW9kZWwuSm9iLnVzZXIgPTNEPTNEIHRyYW5zLnVzZXIsCisgICAgICAgICAg
ICAgICAgdHJhbnMuYXBwLm1vZGVsLkpvYi5pZCA9M0Q9M0QgZGVjb2RlZF9qb2JfaWQKKyAgICAg
ICAgICAgICkKICAgICAgICAgam9iID0zRCBxdWVyeS5maXJzdCgpCiAgICAgICAgIGlmIGpvYiBp
cyBOb25lOgogICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5PYmplY3ROb3RGb3VuZCgpCgpk
aWZmIC1yIDk1ZTMwNWRiMjliN2ViMDI4YjA5NzYyZDAwYmQzMDVjNGM3ODIzZTEgLXIgODZkMzkz
YmVlMDNlZGJkNTU5MjY1Nzk9CjU3NTZhZTM5M2YwMTA3ZDliIHRlc3QvYXBpL3Rlc3Rfam9icy5w
eQotLS0gYS90ZXN0L2FwaS90ZXN0X2pvYnMucHkKKysrIGIvdGVzdC9hcGkvdGVzdF9qb2JzLnB5
CkBAIC0xLDQgKzEsNiBAQAoraW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQganNvbgoraW1wb3J0IHRp
bWUKIGZyb20gb3BlcmF0b3IgaW1wb3J0IGl0ZW1nZXR0ZXIKPTIwCiBmcm9tIGJhc2UgaW1wb3J0
IGFwaQpAQCAtMTEsMTMgKzEzLDE4IEBACiAgICAgZGVmIHRlc3RfaW5kZXgoIHNlbGYgKToKICAg
ICAgICAgIyBDcmVhdGUgSERBIHRvIGVuc3VyZSBhdCBsZWFzdCBvbmUgam9iIGV4aXN0cy4uLgog
ICAgICAgICBzZWxmLl9faGlzdG9yeV93aXRoX25ld19kYXRhc2V0KCkKLSAgICAgICAgam9ic19y
ZXNwb25zZSA9M0Qgc2VsZi5fZ2V0KCAiam9icyIgKQorICAgICAgICBqb2JzID0zRCBzZWxmLl9f
am9ic19pbmRleCgpCisgICAgICAgIGFzc2VydCAidXBsb2FkMSIgaW4gbWFwKCBpdGVtZ2V0dGVy
KCAidG9vbF9pZCIgKSwgam9icyApCj0yMAotICAgICAgICBzZWxmLl9hc3NlcnRfc3RhdHVzX2Nv
ZGVfaXMoIGpvYnNfcmVzcG9uc2UsIDIwMCApCisgICAgZGVmIHRlc3Rfc3lzdGVtX2RldGFpbHNf
YWRtaW5fb25seSggc2VsZiApOgorICAgICAgICBzZWxmLl9faGlzdG9yeV93aXRoX25ld19kYXRh
c2V0KCkKKyAgICAgICAgam9icyA9M0Qgc2VsZi5fX2pvYnNfaW5kZXgoIGFkbWluPTNERmFsc2Ug
KQorICAgICAgICBqb2IgPTNEIGpvYnNbMF0KKyAgICAgICAgc2VsZi5fYXNzZXJ0X25vdF9oYXNf
a2V5cyggam9iLCAiY29tbWFuZF9saW5lIiwgImV4dGVybmFsX2lkIiApCj0yMAotICAgICAgICBq
b2JzID0zRCBqb2JzX3Jlc3BvbnNlLmpzb24oKQotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSgg
am9icywgbGlzdCApCi0gICAgICAgIGFzc2VydCAidXBsb2FkMSIgaW4gbWFwKCBpdGVtZ2V0dGVy
KCAidG9vbF9pZCIgKSwgam9icyApCisgICAgICAgIGpvYnMgPTNEIHNlbGYuX19qb2JzX2luZGV4
KCBhZG1pbj0zRFRydWUgKQorICAgICAgICBqb2IgPTNEIGpvYnNbMF0KKyAgICAgICAgc2VsZi5f
YXNzZXJ0X2hhc19rZXlzKCBqb2IsICJjb21tYW5kX2xpbmUiLCAiZXh0ZXJuYWxfaWQiICkKPTIw
CiAgICAgZGVmIHRlc3RfaW5kZXhfc3RhdGVfZmlsdGVyKCBzZWxmICk6CiAgICAgICAgICMgSW5p
dGlhbCBudW1iZXIgb2Ygb2sgam9icwpAQCAtMzEsNiArMzgsMzMgQEAKICAgICAgICAgbmV3X2Nv
dW50ID0zRCBsZW4oIHNlbGYuX191cGxvYWRzX3dpdGhfc3RhdGUoICJvayIgKSApCiAgICAgICAg
IGFzc2VydCBvcmlnaW5hbF9jb3VudCA8IG5ld19jb3VudAo9MjAKKyAgICBkZWYgdGVzdF9pbmRl
eF9kYXRlX2ZpbHRlciggc2VsZiApOgorICAgICAgICBzZWxmLl9faGlzdG9yeV93aXRoX25ld19k
YXRhc2V0KCkKKyAgICAgICAgdHdvX3dlZWtzX2FnbyA9M0QgKGRhdGV0aW1lLmRhdGV0aW1lLnV0
Y25vdygpIC0gZGF0ZXRpbWUudGltZWRlbHRhPQooNykpLmlzb2Zvcm1hdCgpCisgICAgICAgIGxh
c3Rfd2VlayA9M0QgKGRhdGV0aW1lLmRhdGV0aW1lLnV0Y25vdygpIC0gZGF0ZXRpbWUudGltZWRl
bHRhKDcpKT0KLmlzb2Zvcm1hdCgpCisgICAgICAgIG5leHRfd2VlayA9M0QgKGRhdGV0aW1lLmRh
dGV0aW1lLnV0Y25vdygpICsgZGF0ZXRpbWUudGltZWRlbHRhKDcpKT0KLmlzb2Zvcm1hdCgpCisg
ICAgICAgIHRvZGF5ID0zRCBkYXRldGltZS5kYXRldGltZS51dGNub3coKS5pc29mb3JtYXQoKQor
ICAgICAgICB0b21vcnJvdyA9M0QgKGRhdGV0aW1lLmRhdGV0aW1lLnV0Y25vdygpICsgZGF0ZXRp
bWUudGltZWRlbHRhKDEpKS49Cmlzb2Zvcm1hdCgpCisKKyAgICAgICAgam9icyA9M0Qgc2VsZi5f
X2pvYnNfaW5kZXgoIGRhdGE9M0R7ImRhdGVfcmFuZ2VfbWluIjogdG9kYXlbMDoxMF0sPQogImRh
dGVfcmFuZ2VfbWF4IjogdG9tb3Jyb3dbMDoxMF19ICkKKyAgICAgICAgYXNzZXJ0IGxlbiggam9i
cyApID4gMAorICAgICAgICB0b2RheV9qb2JfaWQgPTNEIGpvYnNbMF1bImlkIl0KKworICAgICAg
ICBqb2JzID0zRCBzZWxmLl9fam9ic19pbmRleCggZGF0YT0zRHsiZGF0ZV9yYW5nZV9taW4iOiB0
d29fd2Vla3NfYWc9Cm8sICJkYXRlX3JhbmdlX21heCI6IGxhc3Rfd2Vla30gKQorICAgICAgICBh
c3NlcnQgdG9kYXlfam9iX2lkIG5vdCBpbiBtYXAoaXRlbWdldHRlcigiaWQiKSwgam9icykKKwor
ICAgICAgICBqb2JzID0zRCBzZWxmLl9fam9ic19pbmRleCggZGF0YT0zRHsiZGF0ZV9yYW5nZV9t
aW4iOiBsYXN0X3dlZWssICI9CmRhdGVfcmFuZ2VfbWF4IjogbmV4dF93ZWVrfSApCisgICAgICAg
IGFzc2VydCB0b2RheV9qb2JfaWQgaW4gbWFwKGl0ZW1nZXR0ZXIoImlkIiksIGpvYnMpCisKKyAg
ICBkZWYgdGVzdF9pbmRleF9oaXN0b3J5KCBzZWxmICk6CisgICAgICAgIGhpc3RvcnlfaWQsIF8g
PTNEIHNlbGYuX19oaXN0b3J5X3dpdGhfbmV3X2RhdGFzZXQoKQorICAgICAgICBqb2JzID0zRCBz
ZWxmLl9fam9ic19pbmRleCggZGF0YT0zRHsiaGlzdG9yeV9pZCI6IGhpc3RvcnlfaWR9ICkKKyAg
ICAgICAgYXNzZXJ0IGxlbiggam9icyApID4gMAorCisgICAgICAgIGhpc3RvcnlfaWQgPTNEIHNl
bGYuX25ld19oaXN0b3J5KCkKKyAgICAgICAgam9icyA9M0Qgc2VsZi5fX2pvYnNfaW5kZXgoIGRh
dGE9M0R7Imhpc3RvcnlfaWQiOiBoaXN0b3J5X2lkfSApCisgICAgICAgIGFzc2VydCBsZW4oIGpv
YnMgKSA9M0Q9M0QgMAorCiAgICAgZGVmIHRlc3RfaW5kZXhfbXVsdGlwbGVfc3RhdGVzX2ZpbHRl
ciggc2VsZiApOgogICAgICAgICAjIEluaXRpYWwgbnVtYmVyIG9mIG9rIGpvYnMKICAgICAgICAg
b3JpZ2luYWxfY291bnQgPTNEIGxlbiggc2VsZi5fX3VwbG9hZHNfd2l0aF9zdGF0ZSggIm9rIiwg
Im5ldyIgKSApCkBAIC01OCw2ICs5MiwyMiBAQAogICAgICAgICBqb2JfZGV0YWlscyA9M0Qgc2hv
d19qb2JzX3Jlc3BvbnNlLmpzb24oKQogICAgICAgICBzZWxmLl9hc3NlcnRfaGFzX2tleSggam9i
X2RldGFpbHMsICdpZCcsICdzdGF0ZScsICdleGl0X2NvZGUnLCAndXA9CmRhdGVfdGltZScsICdj
cmVhdGVfdGltZScgKQo9MjAKKyAgICBkZWYgdGVzdF9zaG93X3NlY3VyaXR5KCBzZWxmICk6Cisg
ICAgICAgIGhpc3RvcnlfaWQsIF8gPTNEIHNlbGYuX19oaXN0b3J5X3dpdGhfbmV3X2RhdGFzZXQo
KQorICAgICAgICBqb2JzX3Jlc3BvbnNlID0zRCBzZWxmLl9nZXQoICJqb2JzIiwgZGF0YT0zRHsi
aGlzdG9yeV9pZCI6IGhpc3Rvcnk9Cl9pZH0gKQorICAgICAgICBqb2IgPTNEIGpvYnNfcmVzcG9u
c2UuanNvbigpWyAwIF0KKyAgICAgICAgam9iX2lkID0zRCBqb2JbICJpZCIgXQorCisgICAgICAg
IHNob3dfam9ic19yZXNwb25zZSA9M0Qgc2VsZi5fZ2V0KCAiam9icy8lcyIgJSBqb2JfaWQsIGFk
bWluPTNERmFscz0KZSApCisgICAgICAgIHNlbGYuX2Fzc2VydF9ub3RfaGFzX2tleXMoIHNob3df
am9ic19yZXNwb25zZS5qc29uKCksICJjb21tYW5kX2xpbj0KZSIsICJleHRlcm5hbF9pZCIgKQor
CisgICAgICAgIHdpdGggc2VsZi5fZGlmZmVyZW50X3VzZXIoKToKKyAgICAgICAgICAgIHNob3df
am9ic19yZXNwb25zZSA9M0Qgc2VsZi5fZ2V0KCAiam9icy8lcyIgJSBqb2JfaWQsIGFkbWluPTNE
PQpGYWxzZSApCisgICAgICAgICAgICBzZWxmLl9hc3NlcnRfc3RhdHVzX2NvZGVfaXMoIHNob3df
am9ic19yZXNwb25zZSwgNDA0ICkKKworICAgICAgICBzaG93X2pvYnNfcmVzcG9uc2UgPTNEIHNl
bGYuX2dldCggImpvYnMvJXMiICUgam9iX2lkLCBhZG1pbj0zRFRydWU9CiApCisgICAgICAgIHNl
bGYuX2Fzc2VydF9oYXNfa2V5cyggc2hvd19qb2JzX3Jlc3BvbnNlLmpzb24oKSwgImNvbW1hbmRf
bGluZSIsID0KImV4dGVybmFsX2lkIiApCisKICAgICBkZWYgdGVzdF9zZWFyY2goIHNlbGYgKToK
ICAgICAgICAgaGlzdG9yeV9pZCwgZGF0YXNldF9pZCA9M0Qgc2VsZi5fX2hpc3Rvcnlfd2l0aF9v
a19kYXRhc2V0KCkKPTIwCkBAIC0xMzMsMyArMTgzLDEwIEBACiAgICAgICAgIGhpc3RvcnlfaWQs
IGRhdGFzZXRfaWQgPTNEIHNlbGYuX19oaXN0b3J5X3dpdGhfbmV3X2RhdGFzZXQoKQogICAgICAg
ICBzZWxmLl93YWl0X2Zvcl9oaXN0b3J5KCBoaXN0b3J5X2lkLCBhc3NlcnRfb2s9M0RUcnVlICkK
ICAgICAgICAgcmV0dXJuIGhpc3RvcnlfaWQsIGRhdGFzZXRfaWQKKworICAgIGRlZiBfX2pvYnNf
aW5kZXgoIHNlbGYsICoqa3dkcyApOgorICAgICAgICBqb2JzX3Jlc3BvbnNlID0zRCBzZWxmLl9n
ZXQoICJqb2JzIiwgKiprd2RzICkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3N0YXR1c19jb2RlX2lz
KCBqb2JzX3Jlc3BvbnNlLCAyMDAgKQorICAgICAgICBqb2JzID0zRCBqb2JzX3Jlc3BvbnNlLmpz
b24oKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSggam9icywgbGlzdCApCisgICAgICAgIHJl
dHVybiBqb2JzCgpkaWZmIC1yIDk1ZTMwNWRiMjliN2ViMDI4YjA5NzYyZDAwYmQzMDVjNGM3ODIz
ZTEgLXIgODZkMzkzYmVlMDNlZGJkNTU5MjY1Nzk9CjU3NTZhZTM5M2YwMTA3ZDliIHRlc3QvYmFz
ZS9hcGkucHkKLS0tIGEvdGVzdC9iYXNlL2FwaS5weQorKysgYi90ZXN0L2Jhc2UvYXBpLnB5CkBA
IC0xMSw2ICsxMSw3IEBACiBmcm9tIC5hcGlfYXNzZXJ0cyBpbXBvcnQgKAogICAgIGFzc2VydF9z
dGF0dXNfY29kZV9pcywKICAgICBhc3NlcnRfaGFzX2tleXMsCisgICAgYXNzZXJ0X25vdF9oYXNf
a2V5cywKICAgICBhc3NlcnRfZXJyb3JfY29kZV9pcywKICkKPTIwCkBAIC04Myw2ICs4NCw5IEBA
CiAgICAgZGVmIF9hc3NlcnRfaGFzX2tleXMoIHNlbGYsIHJlc3BvbnNlLCAqa2V5cyApOgogICAg
ICAgICBhc3NlcnRfaGFzX2tleXMoIHJlc3BvbnNlLCAqa2V5cyApCj0yMAorICAgIGRlZiBfYXNz
ZXJ0X25vdF9oYXNfa2V5cyggc2VsZiwgcmVzcG9uc2UsICprZXlzICk6CisgICAgICAgIGFzc2Vy
dF9ub3RfaGFzX2tleXMoIHJlc3BvbnNlLCAqa2V5cyApCisKICAgICBkZWYgX2Fzc2VydF9lcnJv
cl9jb2RlX2lzKCBzZWxmLCByZXNwb25zZSwgZXJyb3JfY29kZSApOgogICAgICAgICBhc3NlcnRf
ZXJyb3JfY29kZV9pcyggcmVzcG9uc2UsIGVycm9yX2NvZGUgKQo9MjAKCmRpZmYgLXIgOTVlMzA1
ZGIyOWI3ZWIwMjhiMDk3NjJkMDBiZDMwNWM0Yzc4MjNlMSAtciA4NmQzOTNiZWUwM2VkYmQ1NTky
NjU3OT0KNTc1NmFlMzkzZjAxMDdkOWIgdGVzdC9iYXNlL2FwaV9hc3NlcnRzLnB5Ci0tLSBhL3Rl
c3QvYmFzZS9hcGlfYXNzZXJ0cy5weQorKysgYi90ZXN0L2Jhc2UvYXBpX2Fzc2VydHMucHkKQEAg
LTIwLDYgKzIwLDExIEBACiAgICAgICAgIGFzc2VydCBrZXkgaW4gcmVzcG9uc2UsICJSZXNwb25z
ZSBbJXNdIGRvZXMgbm90IGNvbnRhaW4ga2V5IFslc10iID0KJSAoIHJlc3BvbnNlLCBrZXkgKQo9
MjAKPTIwCitkZWYgYXNzZXJ0X25vdF9oYXNfa2V5cyggcmVzcG9uc2UsICprZXlzICk6CisgICAg
Zm9yIGtleSBpbiBrZXlzOgorICAgICAgICBhc3NlcnQga2V5IG5vdCBpbiByZXNwb25zZSwgIlJl
c3BvbnNlIFslc10gY29udGFpbnMgaW52YWxpZCBrZXkgWyU9CnNdIiAlICggcmVzcG9uc2UsIGtl
eSApCisKKwogZGVmIGFzc2VydF9lcnJvcl9jb2RlX2lzKCByZXNwb25zZSwgZXJyb3JfY29kZSAp
OgogICAgIGlmIGhhc2F0dHIoIHJlc3BvbnNlLCAianNvbiIgKToKICAgICAgICAgcmVzcG9uc2Ug
PTNEIHJlc3BvbnNlLmpzb24oKQoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5
LWNlbnRyYWwvY29tbWl0cy9lYjIxMGNjYzZkNzYvCkNoYW5nZXNldDogICBlYjIxMGNjYzZkNzYK
VXNlcjogICAgICAgIGNhcmxmZWJlcmhhcmQKRGF0ZTogICAgICAgIDIwMTQtMTItMTkgMjE6NTY6
MzQrMDA6MDAKU3VtbWFyeTogICAgIFJlZmluaW5nIHRoZSBoZGEgbWFuYWdlciwgc2VyaWFsaXpl
ciwgYW5kIGRlLXNlcmlhbGl6ZXI7IHVzaW5nPQogc2FtZSBpbiBoaXN0b3J5IGNvbnRlbnRzIGFu
ZCBkYXRhc2V0cyBhcGkKQWZmZWN0ZWQgIzogIDEyIGZpbGVzCgpkaWZmIC1yIDg2ZDM5M2JlZTAz
ZWRiZDU1OTI2NTc5NTc1NmFlMzkzZjAxMDdkOWIgLXIgZWIyMTBjY2M2ZDc2NTQ3ZWNhNjlhM2Y9
CjQ5ZGJkOGRiMGE0NWQ1YTg4IGxpYi9nYWxheHkvbWFuYWdlcnMvYmFzZS5weQotLS0gYS9saWIv
Z2FsYXh5L21hbmFnZXJzL2Jhc2UucHkKKysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vycy9iYXNlLnB5
CkBAIC00MDEsNyArNDAxLDggQEAKPTIwCiAgICAgZGVmIHNlcmlhbGl6ZSggc2VsZiwgdHJhbnMs
IGl0ZW0sIGtleXMgKToKICAgICAgICAgIyBtYWluIGludGVyZmFjZSBmbiBmb3IgY29udmVydGlu
ZyBhIG1vZGVsIHRvIGEgZGljdAotICAgICAgICAjVE9ETzogdHJ5L2NhdGNoIGhlcmU/CisjVE9E
TzogdHJ5L2NhdGNoIGhlcmU/IGFkZCBvcHRpb24gJ2ZhaWxfZmFzdCcvJ3JhaXNlJyB0byBhbGxv
dyBvcHRpb25hbGx5ID0KKmNhdGNoaW5nKiB0aGUgZXJyb3Igd2l0aG91dCByYWlzaW5nIGl0Cisj
ICAgKGFuZCB0aGVuIHJldHVybmluZyB0aGUgZXJyb3IgbWVzc2FnZSBpbiB0aGUgc2VyaWFsaXpl
ZCBkYXRhKQogICAgICAgICByZXR1cm5lZCA9M0Qge30KICAgICAgICAgZm9yIGtleSBpbiBrZXlz
OgogICAgICAgICAgICAgIyBjaGVjayBib3RoIHNlcmlhbGl6ZXJzIGFuZCBzZXJpYWxpemFibGUg
a2V5cwpAQCAtNDI1LDkgKzQyNiwyNSBAQAogICAgICAgICBpZCA9M0QgZ2V0YXR0ciggaXRlbSwg
a2V5ICkKICAgICAgICAgcmV0dXJuIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggaWQgKSBpZiBp
ZCBpcyBub3QgTm9uZSBlbHNlIE5vbmUKPTIwCisgICAgI1RPRE86IEFubm90YXRhYmxlTWl4aW4K
KyAgICBkZWYgc2VyaWFsaXplX2Fubm90YXRpb24oIHNlbGYsIHRyYW5zLCBpdGVtLCBrZXkgKToK
KyNUT0RPOiB3aGljaCBpcyBjb3JyZWN0IGhlcmU/CisgICAgICAgICN1c2VyID0zRCBpdGVtLnVz
ZXIKKyAgICAgICAgdXNlciA9M0QgdHJhbnMudXNlcgorICAgICAgICByZXR1cm4gaXRlbS5nZXRf
aXRlbV9hbm5vdGF0aW9uX3N0ciggdHJhbnMuc2Ffc2Vzc2lvbiwgdXNlciwgaXRlbSApCisKKyAg
ICAjVE9ETzogVGFnZ2FibGVNaXhpbgorICAgIGRlZiBzZXJpYWxpemVfdGFncyggc2VsZiwgdHJh
bnMsIGl0ZW0sIGtleSApOgorI1RPRE86IHdob3NlIHRhZ3MgYXJlIHRoZXNlPworICAgICAgICBy
ZXR1cm4gWyB0YWcudXNlcl90bmFtZSArICggJzonICsgdGFnLnVzZXJfdmFsdWUgaWYgdGFnLnVz
ZXJfdmFsdWU9CiBlbHNlICcnICkgZm9yIHRhZyBpbiBpdGVtLnRhZ3MgXQorCiAgICAgIyAuLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLj0KLi4uLi4gc2VyaWFsaXppbmcgdG8gYSB2aWV3CiAgICAgIyB3aGVyZSBhIHZpZXcg
aXMgYSBwcmVkZWZpZWQgbGlzdCBvZiBrZXlzIHRvIHNlcmlhbGl6ZQogICAgIGRlZiBzZXJpYWxp
emVfdG9fdmlldyggc2VsZiwgdHJhbnMsIGl0ZW0sIHZpZXc9M0ROb25lLCBrZXlzPTNETm9uZSAp
OgorI1RPRE86IGlmIGtleXMgYW5kIHZpZXcgLSBtdW5nZSB2aWV3IGFuZCBrZXlzCisjICAgIDog
aWYga2V5cyBidXQgbm8gdmlldyAtIHVzZSBrZXlzCisjICAgIDogaWYgbm8ga2V5cyBidXQgdmll
dyAtIHVzZSB2aWV3CisjICAgIDogaWYgbm8ga2V5cyBhbmQgbm8gdmlldyAtIHVzZSBkZWZhdWx0
IHZpZXcKICAgICAgICAga2V5cyA9M0Qga2V5cyBvciBbXQogICAgICAgICBhbGxfa2V5cyA9M0Qg
c2VsZi52aWV3X3RvX2xpc3QoIHZpZXcgKSArIGtleXMKICAgICAgICAgcmV0dXJuIHNlbGYuc2Vy
aWFsaXplKCB0cmFucywgaXRlbSwgYWxsX2tleXMgKQpAQCAtNDM5LDYgKzQ1NiwyMCBAQAogICAg
ICAgICAgICAgcmFpc2UgTW9kZWxTZXJpYWxpemluZ0Vycm9yKCAndW5rbm93biB2aWV3Jywgdmll
dz0zRHZpZXcsIGF2YWk9CmxhYmxlX3ZpZXdzPTNEc2VsZi52aWV3cyApCiAgICAgICAgIHJldHVy
biBzZWxmLnZpZXdzWyB2aWV3IF0KPTIwCisgICAgI1RPRE86IHRoaXMgaXMgbW9yZSB1dGlsL2dl
bi4gdXNlCisgICAgZGVmIHBsdWNrX2Zyb21fbGlzdCggc2VsZiwgbCwgZWxlbXMgKToKKyAgICAg
ICAgIiIiCisgICAgICAgIFJlbW92ZXMgZm91bmQgZWxlbXMgZnJvbSBsaXN0IGwgYW5kIHJldHVy
bnMgbGlzdCBvZiBmb3VuZCBlbGVtcyBpZj0KIGZvdW5kLgorICAgICAgICAiIiIKKyAgICAgICAg
Zm91bmQgPTNEIFtdCisgICAgICAgIGZvciBlbGVtIGluIGVsZW1zOgorICAgICAgICAgICAgdHJ5
OgorICAgICAgICAgICAgICAgIGluZGV4ID0zRCBsLmluZGV4KCBlbGVtICkKKyAgICAgICAgICAg
ICAgICBmb3VuZC5hcHBlbmQoIGwucG9wKCBpbmRleCApICkKKyAgICAgICAgICAgIGV4Y2VwdCBW
YWx1ZUVycm9yLCB2YWxfZXJyOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcmV0dXJu
IGZvdW5kCisKICAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBhbGlhc2VzCiAgICAgI2RlZiB0b19k
aWN0KCBzZWxmLCB0cmFucywgaXRlbSwgdmlldz0zRE5vbmUsIHZpZXdfa2V5cz0zRE5vbmUgKToK
ICAgICAjICAgIHZpZXdfa2V5cyA9M0Qgdmlld19rZXlzIG9yIHNlbGYudmlld190b19saXN0KCB2
aWV3ICkKQEAgLTQ5Myw2ICs1MjQsNyBAQAogICAgICAgICByZXR1cm4gdmFsCj0yMAogICAgICNk
ZWYgc2x1Zyggc2VsZiwgdHJhbnMsIGl0ZW0sIGtleSwgdmFsICk6CisgICAgIyAgICAiIiJ2YWxp
ZGF0ZSBzbHVnIiIiCiAgICAgIyAgICBwYXNzCj0yMAo9MjAKCmRpZmYgLXIgODZkMzkzYmVlMDNl
ZGJkNTU5MjY1Nzk1NzU2YWUzOTNmMDEwN2Q5YiAtciBlYjIxMGNjYzZkNzY1NDdlY2E2OWEzZj0K
NDlkYmQ4ZGIwYTQ1ZDVhODggbGliL2dhbGF4eS9tYW5hZ2Vycy9jb2xsZWN0aW9ucy5weQotLS0g
YS9saWIvZ2FsYXh5L21hbmFnZXJzL2NvbGxlY3Rpb25zLnB5CisrKyBiL2xpYi9nYWxheHkvbWFu
YWdlcnMvY29sbGVjdGlvbnMucHkKQEAgLTcsNiArNyw3IEBACiBmcm9tIGdhbGF4eS5leGNlcHRp
b25zIGltcG9ydCBNZXNzYWdlRXhjZXB0aW9uCiBmcm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9y
dCBJdGVtQWNjZXNzaWJpbGl0eUV4Y2VwdGlvbgogZnJvbSBnYWxheHkuZXhjZXB0aW9ucyBpbXBv
cnQgUmVxdWVzdFBhcmFtZXRlckludmFsaWRFeGNlcHRpb24KK2Zyb20gZ2FsYXh5Lm1hbmFnZXJz
IGltcG9ydCBiYXNlCiBmcm9tIGdhbGF4eS5tYW5hZ2VycyBpbXBvcnQgaGRhcyAgIyBUT0RPOiBS
ZWZhY3RvciBhbGwgbWl4aW4gdXNlIGludG8gbWFuYT0KZ2Vycy4KIGZyb20gZ2FsYXh5Lm1hbmFn
ZXJzIGltcG9ydCBoaXN0b3JpZXMKIGZyb20gZ2FsYXh5Lm1hbmFnZXJzIGltcG9ydCBsZGRhcwpA
QCAtMjQ0LDcgKzI0NSw3IEBACj0yMAogICAgICAgICBpZiBzcmNfdHlwZSA9M0Q9M0QgJ2hkYSc6
CiAgICAgICAgICAgICBkZWNvZGVkX2lkID0zRCBpbnQoIHRyYW5zLmFwcC5zZWN1cml0eS5kZWNv
ZGVfaWQoIGVuY29kZWRfaWQgKT0KICkKLSAgICAgICAgICAgIGVsZW1lbnQgPTNEIHNlbGYuaGRh
X21hbmFnZXIuZ2V0KCB0cmFucywgZGVjb2RlZF9pZCwgY2hlY2tfb3duPQplcnNoaXA9M0RGYWxz
ZSApCisgICAgICAgICAgICBlbGVtZW50ID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmFjY2Vzc2libGVf
YnlfaWQoIHRyYW5zLCBkZWNvZGVkXz0KaWQsIHRyYW5zLnVzZXIgKQogICAgICAgICBlbGlmIHNy
Y190eXBlID0zRD0zRCAnbGRkYSc6CiAgICAgICAgICAgICBlbGVtZW50ID0zRCBzZWxmLmxkZGFf
bWFuYWdlci5nZXQoIHRyYW5zLCBlbmNvZGVkX2lkICkKICAgICAgICAgZWxpZiBzcmNfdHlwZSA9
M0Q9M0QgJ2hkY2EnOgpAQCAtMjkzLDMgKzI5NCwxMjIgQEAKICAgICAgICAgICAgIGlmIG5vdCB0
cmFucy5hcHAuc2VjdXJpdHlfYWdlbnQuY2FuX2FjY2Vzc19saWJyYXJ5X2l0ZW0oIHRyYW5zPQou
Z2V0X2N1cnJlbnRfdXNlcl9yb2xlcygpLCBjb2xsZWN0aW9uX2luc3RhbmNlLCB0cmFucy51c2Vy
ICk6CiAgICAgICAgICAgICAgICAgcmFpc2UgSXRlbUFjY2Vzc2liaWxpdHlFeGNlcHRpb24oICJM
aWJyYXJ5RGF0YXNldENvbGxlY3Rpbz0KbkFzc29jaWF0aW9uIGlzIG5vdCBhY2Nlc3NpYmxlIHRv
IHRoZSBjdXJyZW50IHVzZXIiLCB0eXBlPTNEJ2Vycm9yJyApCiAgICAgICAgIHJldHVybiBjb2xs
ZWN0aW9uX2luc3RhbmNlCisKKworY2xhc3MgRGF0YXNldENvbGxlY3Rpb25TZXJpYWxpemVyKCBi
YXNlLk1vZGVsU2VyaWFsaXplciApOgorCisgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToK
KyAgICAgICAgc3VwZXIoIEhEQVNlcmlhbGl6ZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwICkKKwor
ICAgICMgICAgIyBtb3N0IG9mIHRoZXNlIHZpZXdzIGJ1aWxkL2FkZCB0byB0aGUgcHJldmlvdXMg
dmlldworICAgICMgICAgc3VtbWFyeV92aWV3ID0zRCBbCisgICAgIyAgICAgICAgJ2lkJywgJ2hp
c3RvcnlfaWQnLCAnaGlkJywgJ25hbWUnLCAnZGF0YXNldF9pZCcsCisgICAgIyAgICAgICAgJ3N0
YXRlJywgJ2RlbGV0ZWQnLCAncHVyZ2VkJywgJ3Zpc2libGUnCisgICAgIyAgICBdCisgICAgIyAg
ICBkZXRhaWxlZF92aWV3ID0zRCBzdW1tYXJ5X3ZpZXcgKyBbCisgICAgIyAgICAgICAgJ2Ria2V5
JywgJ2luZm8nLCAnYmx1cmInLCAnZXh0ZW5zaW9uJywgJ2NyZWF0ZV90aW1lJywgJ3VwZGF0ZT0K
X3RpbWUnLAorICAgICMgICAgICAgICdjb3BpZWRfZnJvbV9oaXN0b3J5X2RhdGFzZXRfYXNzb2Np
YXRpb25faWQnLCAnY29waWVkX2Zyb21fbGk9CmJyYXJ5X2RhdGFzZXRfZGF0YXNldF9hc3NvY2lh
dGlvbl9pZCcsCisgICAgIyAgICAgICAgJ21ldGFkYXRhJywgJ3NpemUnLAorICAgICMgICAgICAg
ICNtaXhpbjogYW5ub3RhdGFibGUKKyAgICAjICAgICAgICAnYW5ub3RhdGlvbicsCisgICAgIyAg
ICAgICAgI21peGluOiB0YWdnYWJsZQorICAgICMgICAgICAgICd0YWdzJywKKyAgICAjICAgIF0K
KyAgICAjICAgIGV4dGVuZGVkX3ZpZXcgPTNEIGRldGFpbGVkX3ZpZXcgKyBbCisgICAgIyAgICAg
ICAgI05PVEU6IHNlbmRpbmcgcmF3ICdwZWVrJyAobm90IGdldF9kaXNwbGF5X3BlZWspCisgICAg
IyAgICAgICAgJ3BlZWsnLAorICAgICMgICAgICAgICd0b29sX3ZlcnNpb24nLCAncGFyZW50X2lk
JywgJ2Rlc2lnbmF0aW9uJywKKyAgICAjICAgIF0KKyAgICAjCisgICAgIyAgICBzZWxmLnNlcmlh
bGl6YWJsZV9rZXlzID0zRCBleHRlbmRlZF92aWV3ICsgWworICAgICMgICAgICAgICdkaXNwbGF5
X2FwcHMnLAorICAgICMgICAgICAgICdkaXNwbGF5X3R5cGVzJywKKyAgICAjICAgICAgICAndmlz
dWFsaXphdGlvbnMnCisgICAgIyAgICBdCisgICAgIyAgICBzZWxmLnZpZXdzID0zRCB7CisgICAg
IyAgICAgICAgJ3N1bW1hcnknICAgOiBzdW1tYXJ5X3ZpZXcsCisgICAgIyAgICAgICAgJ2RldGFp
bGVkJyAgOiBkZXRhaWxlZF92aWV3LAorICAgICMgICAgICAgICdleHRlbmRlZCcgIDogZXh0ZW5k
ZWRfdmlldywKKyAgICAjICAgIH0KKyAgICAjICAgIHNlbGYuZGVmYXVsdF92aWV3ID0zRCAnc3Vt
bWFyeScKKyAgICAjCisgICAgI2RlZiBhZGRfc2VyaWFsaXplcnMoIHNlbGYgKToKKyAgICAjICAg
IHNlbGYuc2VyaWFsaXplcnMudXBkYXRlKHsKKyAgICAjICAgICAgICAnaWQnICAgICAgICAgICAg
OiBzZWxmLnNlcmlhbGl6ZV9pZCwKKyAgICAjICAgICAgICAnaGlzdG9yeV9pZCcgICAgOiBzZWxm
LnNlcmlhbGl6ZV9pZCwKKyAgICAjICAgICAgICAnZGF0YXNldF9pZCcgICAgOiBzZWxmLnNlcmlh
bGl6ZV9pZCwKKyAgICAjCisgICAgIyAgICAgICAgJ2NyZWF0ZV90aW1lJyAgIDogc2VsZi5zZXJp
YWxpemVfZGF0ZSwKKyAgICAjICAgICAgICAndXBkYXRlX3RpbWUnICAgOiBzZWxmLnNlcmlhbGl6
ZV9kYXRlLAorICAgICMgICAgICAgICdjb3BpZWRfZnJvbV9oaXN0b3J5X2RhdGFzZXRfYXNzb2Np
YXRpb25faWQnICAgICAgICA6IHNlbGYuc2U9CnJpYWxpemVfaWQsCisgICAgIyAgICAgICAgJ2Nv
cGllZF9mcm9tX2xpYnJhcnlfZGF0YXNldF9kYXRhc2V0X2Fzc29jaWF0aW9uX2lkJzogc2VsZi5z
ZT0KcmlhbGl6ZV9pZCwKKyAgICAjCisgICAgIyAgICAgICAgJ21ldGFkYXRhJyAgICAgIDogc2Vs
Zi5zZXJpYWxpemVfbWV0YWRhdGEsCisgICAgIyAgICAgICAgJ3NpemUnICAgICAgICAgIDogbGFt
YmRhIHQsIGksIGs6IGludCggaS5nZXRfc2l6ZSgpICksCisgICAgIyAgICAgICAgJ25pY2Vfc2l6
ZScgICAgIDogbGFtYmRhIHQsIGksIGs6IGkuZ2V0X3NpemUoIG5pY2Vfc2l6ZT0zRFRydT0KZSAp
LAorICAgICMKKyAgICAjICAgICAgICAncGFyZW50X2lkJyAgICAgOiBzZWxmLnNlcmlhbGl6ZV9p
ZCwKKyAgICAjICAgICAgICAjVE9ETzogdG8gbWl4aW46IGFubm90YXRhYmxlCisgICAgIyAgICAg
ICAgJ2Fubm90YXRpb24nICAgIDogbGFtYmRhIHQsIGksIGs6IGkuZ2V0X2l0ZW1fYW5ub3RhdGlv
bl9zdHIoID0KdC5zYV9zZXNzaW9uLCB0LnVzZXIsIGkgKSwKKyAgICAjICAgICAgICAjVE9ETzog
dG8gbWl4aW46IHRhZ2dhYmxlCisgICAgIyAgICAgICAgJ3RhZ3MnICAgICAgICAgIDogbGFtYmRh
IHQsIGksIGs6IFsgdGFnLnVzZXJfdG5hbWUgKyAoICc6JyArID0KdGFnLnVzZXJfdmFsdWUgaWYg
dGFnLnVzZXJfdmFsdWUgZWxzZSAnJyApCisgICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZm9yIHRhZyBpbiBpLnRhZ3MgXSwKKyAgICAjICAgIH0pCisKKyNk
ZWYgZGljdGlmeV9kYXRhc2V0X2NvbGxlY3Rpb25faW5zdGFuY2UoIGRhdGFzZXRfY29sbGVjdGlv
bl9pbnN0YW5jZSwgcGFyPQplbnQsIHNlY3VyaXR5LCB2aWV3PTNEImVsZW1lbnQiICk6CisjICAg
IGRpY3RfdmFsdWUgPTNEIGRhdGFzZXRfY29sbGVjdGlvbl9pbnN0YW5jZS50b19kaWN0KCB2aWV3
PTNEdmlldyApCisjICAgIGVuY29kZWRfaWQgPTNEIHNlY3VyaXR5LmVuY29kZV9pZCggZGF0YXNl
dF9jb2xsZWN0aW9uX2luc3RhbmNlLmlkICkKKyMgICAgaWYgaXNpbnN0YW5jZSggcGFyZW50LCBt
b2RlbC5IaXN0b3J5ICk6CisjICAgICAgICBlbmNvZGVkX2hpc3RvcnlfaWQgPTNEIHNlY3VyaXR5
LmVuY29kZV9pZCggcGFyZW50LmlkICkKKyMgICAgICAgIGRpY3RfdmFsdWVbICd1cmwnIF0gPTNE
IHdlYi51cmxfZm9yKCAnaGlzdG9yeV9jb250ZW50X3R5cGVkJywgaGlzPQp0b3J5X2lkPTNEZW5j
b2RlZF9oaXN0b3J5X2lkLCBpZD0zRGVuY29kZWRfaWQsIHR5cGU9M0QiZGF0YXNldF9jb2xsZWN0
aW9uIiApCisjICAgIGVsaWYgaXNpbnN0YW5jZSggcGFyZW50LCBtb2RlbC5MaWJyYXJ5Rm9sZGVy
ICk6CisjICAgICAgICBlbmNvZGVkX2xpYnJhcnlfaWQgPTNEIHNlY3VyaXR5LmVuY29kZV9pZCgg
cGFyZW50LmxpYnJhcnkuaWQgKQorIyAgICAgICAgZW5jb2RlZF9mb2xkZXJfaWQgPTNEIHNlY3Vy
aXR5LmVuY29kZV9pZCggcGFyZW50LmlkICkKKyMgICAgICAgICMgVE9ETzogV29yayBpbiBwcm9n
cmVzcyAtIHRoaXMgZW5kLXBvaW50IGlzIG5vdCByaWdodCB5ZXQuLi4KKyMgICAgICAgIGRpY3Rf
dmFsdWVbICd1cmwnIF0gPTNEIHdlYi51cmxfZm9yKCAnbGlicmFyeV9jb250ZW50JywgbGlicmFy
eV9pPQpkPTNEZW5jb2RlZF9saWJyYXJ5X2lkLCBpZD0zRGVuY29kZWRfaWQsIGZvbGRlcl9pZD0z
RGVuY29kZWRfZm9sZGVyX2lkICkKKyMgICAgaWYgdmlldyA9M0Q9M0QgImVsZW1lbnQiOgorIyAg
ICAgICAgZGljdF92YWx1ZVsgJ2VsZW1lbnRzJyBdID0zRCBtYXAoIGRpY3RpZnlfZWxlbWVudCwg
ZGF0YXNldF9jb2xsZWM9CnRpb25faW5zdGFuY2UuY29sbGVjdGlvbi5lbGVtZW50cyApCisjICAg
IHNlY3VyaXR5LmVuY29kZV9hbGxfaWRzKCBkaWN0X3ZhbHVlLCByZWN1cnNpdmU9M0RUcnVlICkg
ICMgVE9ETzogVXNlID0KS3lsZSdzIHJlY3Vzcml2ZSBmb3JtdWxhdGlvbiBvZiB0aGlzLgorIyAg
ICByZXR1cm4gZGljdF92YWx1ZQorIworIworI2RlZiBkaWN0aWZ5X2VsZW1lbnQoIGVsZW1lbnQg
KToKKyMgICAgZGljdGlmaWVkID0zRCBlbGVtZW50LnRvX2RpY3QoIHZpZXc9M0QiZWxlbWVudCIg
KQorIyAgICBvYmplY3RfZGV0aWFscyA9M0QgZWxlbWVudC5lbGVtZW50X29iamVjdC50b19kaWN0
KCkKKyMgICAgaWYgZWxlbWVudC5jaGlsZF9jb2xsZWN0aW9uOgorIyAgICAgICAgIyBSZWN1cnNp
dmVseSB5aWVsZCBlbGVtZW50cyBmb3IgZWFjaCBuZXN0ZWQgY29sbGVjdGlvbi4uLgorIyAgICAg
ICAgb2JqZWN0X2RldGlhbHNbICJlbGVtZW50cyIgXSA9M0QgbWFwKCBkaWN0aWZ5X2VsZW1lbnQs
IGVsZW1lbnQuY2g9CmlsZF9jb2xsZWN0aW9uLmVsZW1lbnRzICkKKyMKKyMgICAgZGljdGlmaWVk
WyAib2JqZWN0IiBdID0zRCBvYmplY3RfZGV0aWFscworIyAgICByZXR1cm4gZGljdGlmaWVkCisj
CisjICAgIGRlZiBzZXJpYWxpemVfbWV0YWRhdGEoIHNlbGYsIHRyYW5zLCBoZGEsIGtleSApOgor
IyAgICAgICAgbm90X2luY2x1ZGVkID0zRCBbICdkYmtleScgXQorIyAgICAgICAgbWQgPTNEIHt9
CisjICAgICAgICBmb3IgbmFtZSwgc3BlYyBpbiBoZGEubWV0YWRhdGEuc3BlYy5pdGVtcygpOgor
IyAgICAgICAgICAgIGlmIG5hbWUgaW4gbm90X2luY2x1ZGVkOgorIyAgICAgICAgICAgICAgICBj
b250aW51ZQorIyAgICAgICAgICAgIHZhbCA9M0QgaGRhLm1ldGFkYXRhLmdldCggbmFtZSApCisj
ICAgICAgICAgICAgI05PVEU6IG5vIGZpbGVzCisjICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSgg
dmFsLCBtb2RlbC5NZXRhZGF0YUZpbGUgKToKKyMgICAgICAgICAgICAgICAgY29udGludWUKKyMg
ICAgICAgICAgICAjVE9ETzo/IHBvc3NpYmx5IHNwbGl0IHRoaXMgb2ZmPworIyAgICAgICAgICAg
ICMgSWYgbm8gdmFsdWUgZm9yIG1ldGFkYXRhLCBsb29rIGluIGRhdGF0eXBlIGZvciBtZXRhZGF0
YS4KKyMgICAgICAgICAgICBlbGlmIHZhbCBpcyBOb25lIGFuZCBoYXNhdHRyKCBoZGEuZGF0YXR5
cGUsIG5hbWUgKToKKyMgICAgICAgICAgICAgICAgdmFsID0zRCBnZXRhdHRyKCBoZGEuZGF0YXR5
cGUsIG5hbWUgKQorIyAgICAgICAgICAgIG1kWyBuYW1lIF0gPTNEIHZhbAorIworIyAgICAgICAg
cmV0dXJuIG1kCisKKyAgICAjZGVmIGFkZF9kZXNlcmlhbGl6ZXJzKCBzZWxmICk6CisgICAgIyAg
ICBzZWxmLmRlc2VyaWFsaXplcnMudXBkYXRlKHsKKyAgICAjICAgICAgICAnbmFtZScgICAgICAg
ICAgOiBzZWxmLmRlc2VyaWFsaXplX2Jhc2VzdHJpbmcsCisgICAgIyAgICAgICAgJ2dlbm9tZV9i
dWlsZCcgIDogc2VsZi5kZXNlcmlhbGl6ZV9nZW5vbWVfYnVpbGQsCisgICAgIyAgICAgICAgJ2Rl
bGV0ZWQnICAgICAgIDogc2VsZi5kZXNlcmlhbGl6ZV9ib29sLAorICAgICMgICAgICAgICdwdWJs
aXNoZWQnICAgICA6IHNlbGYuZGVzZXJpYWxpemVfYm9vbCwKKyAgICAjICAgICAgICAjVE9ETzog
dG8gbWl4aW46IGFubm90YXRhYmxlCisgICAgIyAgICAgICAgIydhbm5vdGF0aW9uJyAgICA6IHNl
bGYuZGVzZXJpYWxpemVfYW5ub3RhdGlvbiwKKyAgICAjICAgICAgICAjVE9ETzogdG8gbWl4aW46
IHRhZ2dhYmxlCisgICAgIyAgICAgICAgIyd0YWdzJyAgICAgICAgICA6IGxhbWJkYSB0LCBpLCBr
LCB2OiAsCisgICAgIyAgICB9KQorICAgICMgICAgc2VsZi5kZXNlcmlhbGl6YWJsZV9rZXlzID0z
RCBzZWxmLmRlc2VyaWFsaXplcnMua2V5cygpCgpkaWZmIC1yIDg2ZDM5M2JlZTAzZWRiZDU1OTI2
NTc5NTc1NmFlMzkzZjAxMDdkOWIgLXIgZWIyMTBjY2M2ZDc2NTQ3ZWNhNjlhM2Y9CjQ5ZGJkOGRi
MGE0NWQ1YTg4IGxpYi9nYWxheHkvbWFuYWdlcnMvY29sbGVjdGlvbnNfdXRpbC5weQotLS0gYS9s
aWIvZ2FsYXh5L21hbmFnZXJzL2NvbGxlY3Rpb25zX3V0aWwucHkKKysrIGIvbGliL2dhbGF4eS9t
YW5hZ2Vycy9jb2xsZWN0aW9uc191dGlsLnB5CkBAIC02NSw5ICs2NSw5IEBACiAgICAgICAgICAg
ICB2YWxpZGF0ZV9pbnB1dF9lbGVtZW50X2lkZW50aWZpZXJzKCBlbGVtZW50X2lkZW50aWZpZXJb
ICJlbGVtZT0KbnRfaWRlbnRpZmllcnMiIF0gKQo9MjAKPTIwCi1kZWYgZGljdGlmeV9kYXRhc2V0
X2NvbGxlY3Rpb25faW5zdGFuY2UoIGRhdGFzZXRfY29sbGVjaXRvbl9pbnN0YW5jZSwgcGFyZT0K
bnQsIHNlY3VyaXR5LCB2aWV3PTNEImVsZW1lbnQiICk6Ci0gICAgZGljdF92YWx1ZSA9M0QgZGF0
YXNldF9jb2xsZWNpdG9uX2luc3RhbmNlLnRvX2RpY3QoIHZpZXc9M0R2aWV3ICkKLSAgICBlbmNv
ZGVkX2lkID0zRCBzZWN1cml0eS5lbmNvZGVfaWQoIGRhdGFzZXRfY29sbGVjaXRvbl9pbnN0YW5j
ZS5pZCApCitkZWYgZGljdGlmeV9kYXRhc2V0X2NvbGxlY3Rpb25faW5zdGFuY2UoIGRhdGFzZXRf
Y29sbGVjdGlvbl9pbnN0YW5jZSwgcGFyZT0KbnQsIHNlY3VyaXR5LCB2aWV3PTNEImVsZW1lbnQi
ICk6CisgICAgZGljdF92YWx1ZSA9M0QgZGF0YXNldF9jb2xsZWN0aW9uX2luc3RhbmNlLnRvX2Rp
Y3QoIHZpZXc9M0R2aWV3ICkKKyAgICBlbmNvZGVkX2lkID0zRCBzZWN1cml0eS5lbmNvZGVfaWQo
IGRhdGFzZXRfY29sbGVjdGlvbl9pbnN0YW5jZS5pZCApCiAgICAgaWYgaXNpbnN0YW5jZSggcGFy
ZW50LCBtb2RlbC5IaXN0b3J5ICk6CiAgICAgICAgIGVuY29kZWRfaGlzdG9yeV9pZCA9M0Qgc2Vj
dXJpdHkuZW5jb2RlX2lkKCBwYXJlbnQuaWQgKQogICAgICAgICBkaWN0X3ZhbHVlWyAndXJsJyBd
ID0zRCB3ZWIudXJsX2ZvciggJ2hpc3RvcnlfY29udGVudF90eXBlZCcsIGhpc3Q9Cm9yeV9pZD0z
RGVuY29kZWRfaGlzdG9yeV9pZCwgaWQ9M0RlbmNvZGVkX2lkLCB0eXBlPTNEImRhdGFzZXRfY29s
bGVjdGlvbiIgKQpAQCAtNzcsNyArNzcsNyBAQAogICAgICAgICAjIFRPRE86IFdvcmsgaW4gcHJv
Z3Jlc3MgLSB0aGlzIGVuZC1wb2ludCBpcyBub3QgcmlnaHQgeWV0Li4uCiAgICAgICAgIGRpY3Rf
dmFsdWVbICd1cmwnIF0gPTNEIHdlYi51cmxfZm9yKCAnbGlicmFyeV9jb250ZW50JywgbGlicmFy
eV9pZD0KPTNEZW5jb2RlZF9saWJyYXJ5X2lkLCBpZD0zRGVuY29kZWRfaWQsIGZvbGRlcl9pZD0z
RGVuY29kZWRfZm9sZGVyX2lkICkKICAgICBpZiB2aWV3ID0zRD0zRCAiZWxlbWVudCI6Ci0gICAg
ICAgIGRpY3RfdmFsdWVbICdlbGVtZW50cycgXSA9M0QgbWFwKCBkaWN0aWZ5X2VsZW1lbnQsIGRh
dGFzZXRfY29sbGVjaT0KdG9uX2luc3RhbmNlLmNvbGxlY3Rpb24uZWxlbWVudHMgKQorICAgICAg
ICBkaWN0X3ZhbHVlWyAnZWxlbWVudHMnIF0gPTNEIG1hcCggZGljdGlmeV9lbGVtZW50LCBkYXRh
c2V0X2NvbGxlY3Q9Cmlvbl9pbnN0YW5jZS5jb2xsZWN0aW9uLmVsZW1lbnRzICkKICAgICBzZWN1
cml0eS5lbmNvZGVfYWxsX2lkcyggZGljdF92YWx1ZSwgcmVjdXJzaXZlPTNEVHJ1ZSApICAjIFRP
RE86IFVzZSBLPQp5bGUncyByZWN1c3JpdmUgZm9ybXVsYXRpb24gb2YgdGhpcy4KICAgICByZXR1
cm4gZGljdF92YWx1ZQo9MjAKCmRpZmYgLXIgODZkMzkzYmVlMDNlZGJkNTU5MjY1Nzk1NzU2YWUz
OTNmMDEwN2Q5YiAtciBlYjIxMGNjYzZkNzY1NDdlY2E2OWEzZj0KNDlkYmQ4ZGIwYTQ1ZDVhODgg
bGliL2dhbGF4eS9tYW5hZ2Vycy9kYXRhc2V0cy5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJz
L2RhdGFzZXRzLnB5CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvZGF0YXNldHMucHkKQEAgLTky
LDYgKzkyLDkgQEAKPTIwCiAjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRAogY2xhc3MgRGF0YXNldEFzc29jaWF0aW9uTWFu
YWdlciggYmFzZS5Nb2RlbE1hbmFnZXIsIGJhc2UuQWNjZXNzaWJsZU1vZGVsSW49CnRlcmZhY2Us
IGJhc2UuUHVyZ2FibGVNb2RlbEludGVyZmFjZSApOgorICAgICMgQSBkYXRhc2V0IGFzc29jaWF0
aW9uIEhBUyBhIGRhdGFzZXQgYnV0IGNvbnRhaW5zIG1ldGFkYXRhIHNwZWNpZmljIHQ9Cm8gYSBs
aWJyYXJ5IChsZGEpIG9yIHVzZXIgKGhkYSkKKyAgICBtb2RlbF9jbGFzcyA9M0QgbW9kZWwuRGF0
YXNldEluc3RhbmNlCisgICAgZGVmYXVsdF9vcmRlcl9ieSA9M0QgKCBtb2RlbC5EYXRhc2V0LmNy
ZWF0ZV90aW1lLCApCj0yMAogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CiAgICAgICAg
IHN1cGVyKCBEYXRhc2V0QXNzb2NpYXRpb25NYW5hZ2VyLCBzZWxmICkuX19pbml0X18oIGFwcCAp
CkBAIC0xMDAsMyArMTAzLDkgQEAKICAgICBkZWYgaXNfYWNjZXNzaWJsZSggc2VsZiwgdHJhbnMs
IGRhdGFzZXRfYXNzb2MsIHVzZXIgKToKICAgICAgICAgIyBkZWZlciB0byB0aGUgZGF0YXNldAog
ICAgICAgICByZXR1cm4gc2VsZi5kYXRhc2V0X21nci5pc19hY2Nlc3NpYmxlKCB0cmFucywgZGF0
YXNldF9hc3NvYy5kYXRhc2U9CnQsIHVzZXIgKQorCisgICAgZGVmIG1ldGFkYXRhKCBzZWxmLCB0
cmFucywgZGF0YXNldF9hc3NvYyApOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgaXNfYmVpbmdf
dXNlZCggc2VsZiwgdHJhbnMsIGRhdGFzZXRfYXNzb2MgKToKKyAgICAgICAgcGFzcwoKZGlmZiAt
ciA4NmQzOTNiZWUwM2VkYmQ1NTkyNjU3OTU3NTZhZTM5M2YwMTA3ZDliIC1yIGViMjEwY2NjNmQ3
NjU0N2VjYTY5YTNmPQo0OWRiZDhkYjBhNDVkNWE4OCBsaWIvZ2FsYXh5L21hbmFnZXJzL2hkYXMu
cHkKLS0tIGEvbGliL2dhbGF4eS9tYW5hZ2Vycy9oZGFzLnB5CisrKyBiL2xpYi9nYWxheHkvbWFu
YWdlcnMvaGRhcy5weQpAQCAtNCw2ICs0LDggQEAKIEhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb25z
IChIREFzKSBhcmUgZGF0YXNldHMgY29udGFpbmVkIG9yIGNyZWF0ZWQgaW4gYQogaGlzdG9yeS4K
ICIiIgoraW1wb3J0IGdldHRleHQKKwogZnJvbSBnYWxheHkgaW1wb3J0IG1vZGVsCiBmcm9tIGdh
bGF4eSBpbXBvcnQgZXhjZXB0aW9ucwo9MjAKQEAgLTExMSw5MyArMTEzLDY0IEBACj0yMAogICAg
ICMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi49Ci4uLi4uIHNlcmlhbGl6YXRpb24KICAgICAjVE9ETzogbW92ZSBpbnRv
IHNlcmlhbGl6ZXIgYmVsb3cKLSAgICBkZWYgZ2V0X2hkYV9kaWN0KCBzZWxmLCB0cmFucywgaGRh
ICk6Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm4gZnVsbCBkZXRhaWxzIG9mIHRoaXMgSERB
IGluIGRpY3Rpb25hcnkgZm9ybS4KLSAgICAgICAgIiIiCi0gICAgICAgICNwcmVjb25kaXRpb246
IHRoZSB1c2VyJ3MgYWNjZXNzIHRvIHRoaXMgaGRhIGhhcyBhbHJlYWR5IGJlZW4gY2hlYz0Ka2Vk
Ci0gICAgICAgICNUT0RPOj8/IHBvc3Rjb25kaXRpb246IGFsbCBpZHMgYXJlIGVuY29kZWQgKGlz
IHRoaXMgcmVhbGx5IHdoYXQgdz0KZSB3YW50IGF0IHRoaXMgbGV2ZWw/KQotICAgICAgICBleHBv
c2VfZGF0YXNldF9wYXRoID0zRCB0cmFucy51c2VyX2lzX2FkbWluKCkgb3IgdHJhbnMuYXBwLmNv
bmZpZy49CmV4cG9zZV9kYXRhc2V0X3BhdGgKLSAgICAgICAgaGRhX2RpY3QgPTNEIGhkYS50b19k
aWN0KCB2aWV3PTNEJ2VsZW1lbnQnLCBleHBvc2VfZGF0YXNldF9wYXRoPTNEPQpleHBvc2VfZGF0
YXNldF9wYXRoICkKLSAgICAgICAgaGRhX2RpY3RbICdhcGlfdHlwZScgXSA9M0QgImZpbGUiCi0K
LSAgICAgICAgIyBBZGQgYWRkaXRpb25hbCBhdHRyaWJ1dGVzIHRoYXQgZGVwZW5kIG9uIHRyYW5z
IG11c3QgYmUgYWRkZWQgaGVyPQplIHJhdGhlciB0aGFuIGF0IHRoZSBtb2RlbCBsZXZlbC4KLSAg
ICAgICAgY2FuX2FjY2Vzc19oZGEgPTNEIHRyYW5zLmFwcC5zZWN1cml0eV9hZ2VudC5jYW5fYWNj
ZXNzX2RhdGFzZXQoIHRyPQphbnMuZ2V0X2N1cnJlbnRfdXNlcl9yb2xlcygpLCBoZGEuZGF0YXNl
dCApCi0gICAgICAgIGNhbl9hY2Nlc3NfaGRhID0zRCAoIHRyYW5zLnVzZXJfaXNfYWRtaW4oKSBv
ciBjYW5fYWNjZXNzX2hkYSApCi0gICAgICAgIGlmIG5vdCBjYW5fYWNjZXNzX2hkYToKLSAgICAg
ICAgICAgIHJldHVybiBzZWxmLmdldF9pbmFjY2Vzc2libGVfaGRhX2RpY3QoIHRyYW5zLCBoZGEg
KQotICAgICAgICBoZGFfZGljdFsgJ2FjY2Vzc2libGUnIF0gPTNEIFRydWUKLQotICAgICAgICAj
VE9ETzogSSdtIHVuY2xlYXIgYXMgdG8gd2hpY2ggYWNjZXNzIHBhdHRlcm4gaXMgcmlnaHQKLSAg
ICAgICAgaGRhX2RpY3RbICdhbm5vdGF0aW9uJyBdID0zRCBoZGEuZ2V0X2l0ZW1fYW5ub3RhdGlv
bl9zdHIoIHRyYW5zLnNhPQpfc2Vzc2lvbiwgaGRhLmhpc3RvcnkudXNlciwgaGRhICkKLSAgICAg
ICAgI2Fubm90YXRpb24gPTNEIGdldGF0dHIoIGhkYSwgJ2Fubm90YXRpb24nLCBoZGEuZ2V0X2l0
ZW1fYW5ub3RhdGlvPQpuX3N0ciggdHJhbnMuc2Ffc2Vzc2lvbiwgdHJhbnMudXNlciwgaGRhICkg
KQotCi0gICAgICAgICMgLS0tLSByZXR1cm4gaGVyZSBpZiBkZWxldGVkIEFORCBwdXJnZWQgT1Ig
Y2FuJ3QgYWNjZXNzCi0gICAgICAgIHB1cmdlZCA9M0QgKCBoZGEucHVyZ2VkIG9yIGhkYS5kYXRh
c2V0LnB1cmdlZCApCi0gICAgICAgIGlmICggaGRhLmRlbGV0ZWQgYW5kIHB1cmdlZCApOgotICAg
ICAgICAgICAgI1RPRE86IHRvX2RpY3Qgc2hvdWxkIHJlYWxseSBnbyBBRlRFUiB0aGlzIC0gb25s
eSBzdW1tYXJ5IGRhdGEKLSAgICAgICAgICAgIHJldHVybiB0cmFucy5zZWN1cml0eS5lbmNvZGVf
ZGljdF9pZHMoIGhkYV9kaWN0ICkKLQotICAgICAgICBpZiBleHBvc2VfZGF0YXNldF9wYXRoOgot
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGhkYV9kaWN0WyAnZmlsZV9uYW1lJyBd
ID0zRCBoZGEuZmlsZV9uYW1lCi0gICAgICAgICAgICBleGNlcHQgb2JqZWN0c3RvcmUuT2JqZWN0
Tm90Rm91bmQ6Ci0gICAgICAgICAgICAgICAgbG9nLmV4Y2VwdGlvbiggJ29iamVjdHN0b3JlLk9i
amVjdE5vdEZvdW5kLCBIREEgJXMuJywgaGRhLj0KaWQgKQotCi0gICAgICAgIGhkYV9kaWN0WyAn
ZG93bmxvYWRfdXJsJyBdID0zRCBnYWxheHkud2ViLnVybF9mb3IoICdoaXN0b3J5X2NvbnRlbj0K
dHNfZGlzcGxheScsCi0gICAgICAgICAgICBoaXN0b3J5X2lkID0zRCB0cmFucy5zZWN1cml0eS5l
bmNvZGVfaWQoIGhkYS5oaXN0b3J5LmlkICksCi0gICAgICAgICAgICBoaXN0b3J5X2NvbnRlbnRf
aWQgPTNEIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggaGRhLmlkICkgKQotCi0gICAgICAgICMg
aW5kZWNlcywgYXNzb2MuIG1ldGFkYXRhIGZpbGVzLCBldGMuCi0gICAgICAgIG1ldGFfZmlsZXMg
PTNEIFtdCi0gICAgICAgIGZvciBtZXRhX3R5cGUgaW4gaGRhLm1ldGFkYXRhLnNwZWMua2V5cygp
OgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSggaGRhLm1ldGFkYXRhLnNwZWNbIG1ldGFfdHlw
ZSBdLnBhcmFtLCBnYWxheHkuZGE9CnRhdHlwZXMubWV0YWRhdGEuRmlsZVBhcmFtZXRlciApOgot
ICAgICAgICAgICAgICAgIG1ldGFfZmlsZXMuYXBwZW5kKCBkaWN0KCBmaWxlX3R5cGU9M0RtZXRh
X3R5cGUgKSApCi0gICAgICAgIGlmIG1ldGFfZmlsZXM6Ci0gICAgICAgICAgICBoZGFfZGljdFsg
J21ldGFfZmlsZXMnIF0gPTNEIG1ldGFfZmlsZXMKLQotICAgICAgICAjIGN1cnJlbnRseSwgdGhl
IHZpeiByZWcgaXMgb3B0aW9uYWwgLSBoYW5kbGUgb24vb2ZmCi0gICAgICAgIGlmIHRyYW5zLmFw
cC52aXN1YWxpemF0aW9uc19yZWdpc3RyeToKLSAgICAgICAgICAgIGhkYV9kaWN0WyAndmlzdWFs
aXphdGlvbnMnIF0gPTNEIHRyYW5zLmFwcC52aXN1YWxpemF0aW9uc19yZWdpPQpzdHJ5LmdldF92
aXN1YWxpemF0aW9ucyggdHJhbnMsIGhkYSApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBo
ZGFfZGljdFsgJ3Zpc3VhbGl6YXRpb25zJyBdID0zRCBoZGEuZ2V0X3Zpc3VhbGl6YXRpb25zKCkK
LSAgICAgICAgI1RPRE86IGl0IG1heSBhbHNvIGJlIHdpc2VyIHRvIHJlbW92ZSBmcm9tIGhlcmUg
YW5kIGFkZCBhcyBBUEkgY2FsPQpsIHRoYXQgbG9hZHMgdGhlIHZpc3VhbGl6YXRpb25zCi0gICAg
ICAgICMgICAgICAgICAgIHdoZW4gdGhlIHZpc3VhbGl6YXRpb25zIGJ1dHRvbiBpcyBjbGlja2Vk
IChpbnN0ZWFkIG9mID0KcHJlbG9hZGluZy9wcmUtY2hlY2tpbmcpCi0KLSAgICAgICAgIyAtLS0t
IHJldHVybiBoZXJlIGlmIGRlbGV0ZWQKLSAgICAgICAgaWYgaGRhLmRlbGV0ZWQgYW5kIG5vdCBw
dXJnZWQ6Ci0gICAgICAgICAgICByZXR1cm4gdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2RpY3RfaWRz
KCBoZGFfZGljdCApCi0KLSAgICAgICAgcmV0dXJuIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9kaWN0
X2lkcyggaGRhX2RpY3QgKQotCi0gICAgZGVmIGdldF9pbmFjY2Vzc2libGVfaGRhX2RpY3QoIHNl
bGYsIHRyYW5zLCBoZGEgKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiB0cnVuY2F0ZWQg
c2VyaWFsaXphdGlvbiBvZiBIREEgd2hlbiBpbmFjY2Vzc2libGUgdG8gdXNlci4KLSAgICAgICAg
IiIiCi0gICAgICAgIHJldHVybiB0cmFucy5zZWN1cml0eS5lbmNvZGVfZGljdF9pZHMoewotICAg
ICAgICAgICAgJ2lkJyAgICAgICAgOiBoZGEuaWQsCi0gICAgICAgICAgICAnaGlzdG9yeV9pZCc6
IGhkYS5oaXN0b3J5LmlkLAotICAgICAgICAgICAgJ2hpZCcgICAgICAgOiBoZGEuaGlkLAotICAg
ICAgICAgICAgJ25hbWUnICAgICAgOiBoZGEubmFtZSwKLSAgICAgICAgICAgICdzdGF0ZScgICAg
IDogaGRhLnN0YXRlLAotICAgICAgICAgICAgJ2RlbGV0ZWQnICAgOiBoZGEuZGVsZXRlZCwKLSAg
ICAgICAgICAgICd2aXNpYmxlJyAgIDogaGRhLnZpc2libGUsCi0gICAgICAgICAgICAnYWNjZXNz
aWJsZSc6IEZhbHNlCi0gICAgICAgIH0pCi0KLSAgICBkZWYgZ2V0X2hkYV9kaWN0X3dpdGhfZXJy
b3IoIHNlbGYsIHRyYW5zLCBoZGE9M0ROb25lLCBoaXN0b3J5X2lkPTNETm9uPQplLCBpZD0zRE5v
bmUsIGVycm9yX21zZz0zRCdFcnJvcicgKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiB0
cnVuY2F0ZWQgc2VyaWFsaXphdGlvbiBvZiBIREEgd2hlbiBlcnJvciByYWlzZWQgZ2V0dGluZwot
ICAgICAgICBkZXRhaWxzLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHRyYW5zLnNlY3Vy
aXR5LmVuY29kZV9kaWN0X2lkcyh7Ci0gICAgICAgICAgICAnaWQnICAgICAgICA6IGhkYS5pZCBp
ZiBoZGEgZWxzZSBpZCwKLSAgICAgICAgICAgICdoaXN0b3J5X2lkJzogaGRhLmhpc3RvcnkuaWQg
aWYgaGRhIGVsc2UgaGlzdG9yeV9pZCwKLSAgICAgICAgICAgICdoaWQnICAgICAgIDogaGRhLmhp
ZCBpZiBoZGEgZWxzZSAnKHVua25vd24pJywKLSAgICAgICAgICAgICduYW1lJyAgICAgIDogaGRh
Lm5hbWUgaWYgaGRhIGVsc2UgJyh1bmtub3duKScsCi0gICAgICAgICAgICAnZXJyb3InICAgICA6
IGVycm9yX21zZywKLSAgICAgICAgICAgICdzdGF0ZScgICAgIDogdHJhbnMubW9kZWwuRGF0YXNl
dC5zdGF0ZXMuTkVXCi0gICAgICAgIH0pCisgICAgI2RlZiBnZXRfaGRhX2RpY3QoIHNlbGYsIHRy
YW5zLCBoZGEgKToKKyAgICAjICAgICIiIgorICAgICMgICAgUmV0dXJuIGZ1bGwgZGV0YWlscyBv
ZiB0aGlzIEhEQSBpbiBkaWN0aW9uYXJ5IGZvcm0uCisgICAgIyAgICAiIiIKKyAgICAjICAgICNw
cmVjb25kaXRpb246IHRoZSB1c2VyJ3MgYWNjZXNzIHRvIHRoaXMgaGRhIGhhcyBhbHJlYWR5IGJl
ZW4gY2hlPQpja2VkCisgICAgIyAgICAjVE9ETzo/PyBwb3N0Y29uZGl0aW9uOiBhbGwgaWRzIGFy
ZSBlbmNvZGVkIChpcyB0aGlzIHJlYWxseSB3aGF0ID0Kd2Ugd2FudCBhdCB0aGlzIGxldmVsPykK
KyAgICAjICAgIGV4cG9zZV9kYXRhc2V0X3BhdGggPTNEIHRyYW5zLnVzZXJfaXNfYWRtaW4oKSBv
ciB0cmFucy5hcHAuY29uZmlnPQouZXhwb3NlX2RhdGFzZXRfcGF0aAorICAgICMgICAgaGRhX2Rp
Y3QgPTNEIGhkYS50b19kaWN0KCB2aWV3PTNEJ2VsZW1lbnQnLCBleHBvc2VfZGF0YXNldF9wYXRo
PQo9M0RleHBvc2VfZGF0YXNldF9wYXRoICkKKyAgICAjICAgIGhkYV9kaWN0WyAnYXBpX3R5cGUn
IF0gPTNEICJmaWxlIgorICAgICMKKyAgICAjICAgICMgQWRkIGFkZGl0aW9uYWwgYXR0cmlidXRl
cyB0aGF0IGRlcGVuZCBvbiB0cmFucyBtdXN0IGJlIGFkZGVkIGhlPQpyZSByYXRoZXIgdGhhbiBh
dCB0aGUgbW9kZWwgbGV2ZWwuCisgICAgIyAgICBjYW5fYWNjZXNzX2hkYSA9M0QgdHJhbnMuYXBw
LnNlY3VyaXR5X2FnZW50LmNhbl9hY2Nlc3NfZGF0YXNldCggdD0KcmFucy5nZXRfY3VycmVudF91
c2VyX3JvbGVzKCksIGhkYS5kYXRhc2V0ICkKKyAgICAjICAgIGNhbl9hY2Nlc3NfaGRhID0zRCAo
IHRyYW5zLnVzZXJfaXNfYWRtaW4oKSBvciBjYW5fYWNjZXNzX2hkYSApCisgICAgIyAgICBpZiBu
b3QgY2FuX2FjY2Vzc19oZGE6CisgICAgIyAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X2luYWNjZXNz
aWJsZV9oZGFfZGljdCggdHJhbnMsIGhkYSApCisgICAgIyAgICBoZGFfZGljdFsgJ2FjY2Vzc2li
bGUnIF0gPTNEIFRydWUKKyAgICAjCisgICAgIyAgICAjVE9ETzogSSdtIHVuY2xlYXIgYXMgdG8g
d2hpY2ggYWNjZXNzIHBhdHRlcm4gaXMgcmlnaHQKKyAgICAjICAgIGhkYV9kaWN0WyAnYW5ub3Rh
dGlvbicgXSA9M0QgaGRhLmdldF9pdGVtX2Fubm90YXRpb25fc3RyKCB0cmFucy5zPQphX3Nlc3Np
b24sIGhkYS5oaXN0b3J5LnVzZXIsIGhkYSApCisgICAgIyAgICAjYW5ub3RhdGlvbiA9M0QgZ2V0
YXR0ciggaGRhLCAnYW5ub3RhdGlvbicsIGhkYS5nZXRfaXRlbV9hbm5vdGF0aT0Kb25fc3RyKCB0
cmFucy5zYV9zZXNzaW9uLCB0cmFucy51c2VyLCBoZGEgKSApCisgICAgIworICAgICMgICAgIyAt
LS0tIHJldHVybiBoZXJlIGlmIGRlbGV0ZWQgQU5EIHB1cmdlZCBPUiBjYW4ndCBhY2Nlc3MKKyAg
ICAjICAgIHB1cmdlZCA9M0QgKCBoZGEucHVyZ2VkIG9yIGhkYS5kYXRhc2V0LnB1cmdlZCApCisg
ICAgIyAgICBpZiAoIGhkYS5kZWxldGVkIGFuZCBwdXJnZWQgKToKKyAgICAjICAgICAgICAjVE9E
TzogdG9fZGljdCBzaG91bGQgcmVhbGx5IGdvIEFGVEVSIHRoaXMgLSBvbmx5IHN1bW1hcnkgZGF0
YQorICAgICMgICAgICAgIHJldHVybiB0cmFucy5zZWN1cml0eS5lbmNvZGVfZGljdF9pZHMoIGhk
YV9kaWN0ICkKKyAgICAjCisgICAgIyAgICBpZiBleHBvc2VfZGF0YXNldF9wYXRoOgorICAgICMg
ICAgICAgIHRyeToKKyAgICAjICAgICAgICAgICAgaGRhX2RpY3RbICdmaWxlX25hbWUnIF0gPTNE
IGhkYS5maWxlX25hbWUKKyAgICAjICAgICAgICBleGNlcHQgb2JqZWN0c3RvcmUuT2JqZWN0Tm90
Rm91bmQ6CisgICAgIyAgICAgICAgICAgIGxvZy5leGNlcHRpb24oICdvYmplY3RzdG9yZS5PYmpl
Y3ROb3RGb3VuZCwgSERBICVzLicsIGhkYT0KLmlkICkKKyAgICAjCisgICAgIyAgICBoZGFfZGlj
dFsgJ2Rvd25sb2FkX3VybCcgXSA9M0QgZ2FsYXh5LndlYi51cmxfZm9yKCAnaGlzdG9yeV9jb250
ZT0KbnRzX2Rpc3BsYXknLAorICAgICMgICAgICAgIGhpc3RvcnlfaWQgPTNEIHRyYW5zLnNlY3Vy
aXR5LmVuY29kZV9pZCggaGRhLmhpc3RvcnkuaWQgKSwKKyAgICAjICAgICAgICBoaXN0b3J5X2Nv
bnRlbnRfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggaGRhLmlkICkgKQorICAgICMK
KyAgICAjICAgICMgaW5kZWNlcywgYXNzb2MuIG1ldGFkYXRhIGZpbGVzLCBldGMuCisgICAgIyAg
ICBtZXRhX2ZpbGVzID0zRCBbXQorICAgICMgICAgZm9yIG1ldGFfdHlwZSBpbiBoZGEubWV0YWRh
dGEuc3BlYy5rZXlzKCk6CisgICAgIyAgICAgICAgaWYgaXNpbnN0YW5jZSggaGRhLm1ldGFkYXRh
LnNwZWNbIG1ldGFfdHlwZSBdLnBhcmFtLCBnYWxheHkuZD0KYXRhdHlwZXMubWV0YWRhdGEuRmls
ZVBhcmFtZXRlciApOgorICAgICMgICAgICAgICAgICBtZXRhX2ZpbGVzLmFwcGVuZCggZGljdCgg
ZmlsZV90eXBlPTNEbWV0YV90eXBlICkgKQorICAgICMgICAgaWYgbWV0YV9maWxlczoKKyAgICAj
ICAgICAgICBoZGFfZGljdFsgJ21ldGFfZmlsZXMnIF0gPTNEIG1ldGFfZmlsZXMKKyAgICAjCisg
ICAgIyAgICAjIGN1cnJlbnRseSwgdGhlIHZpeiByZWcgaXMgb3B0aW9uYWwgLSBoYW5kbGUgb24v
b2ZmCisgICAgIyAgICBpZiB0cmFucy5hcHAudmlzdWFsaXphdGlvbnNfcmVnaXN0cnk6CisgICAg
IyAgICAgICAgaGRhX2RpY3RbICd2aXN1YWxpemF0aW9ucycgXSA9M0QgdHJhbnMuYXBwLnZpc3Vh
bGl6YXRpb25zX3JlZz0KaXN0cnkuZ2V0X3Zpc3VhbGl6YXRpb25zKCB0cmFucywgaGRhICkKKyAg
ICAjICAgIGVsc2U6CisgICAgIyAgICAgICAgaGRhX2RpY3RbICd2aXN1YWxpemF0aW9ucycgXSA9
M0QgaGRhLmdldF92aXN1YWxpemF0aW9ucygpCisgICAgIyAgICAjVE9ETzogaXQgbWF5IGFsc28g
YmUgd2lzZXIgdG8gcmVtb3ZlIGZyb20gaGVyZSBhbmQgYWRkIGFzIEFQSSBjYT0KbGwgdGhhdCBs
b2FkcyB0aGUgdmlzdWFsaXphdGlvbnMKKyAgICAjICAgICMgICAgICAgICAgIHdoZW4gdGhlIHZp
c3VhbGl6YXRpb25zIGJ1dHRvbiBpcyBjbGlja2VkIChpbnN0ZWFkIG9mPQogcHJlbG9hZGluZy9w
cmUtY2hlY2tpbmcpCisgICAgIworICAgICMgICAgIyAtLS0tIHJldHVybiBoZXJlIGlmIGRlbGV0
ZWQKKyAgICAjICAgIGlmIGhkYS5kZWxldGVkIGFuZCBub3QgcHVyZ2VkOgorICAgICMgICAgICAg
IHJldHVybiB0cmFucy5zZWN1cml0eS5lbmNvZGVfZGljdF9pZHMoIGhkYV9kaWN0ICkKKyAgICAj
CisgICAgIyAgICByZXR1cm4gdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2RpY3RfaWRzKCBoZGFfZGlj
dCApCj0yMAogICAgIGRlZiBnZXRfZGlzcGxheV9hcHBzKCBzZWxmLCB0cmFucywgaGRhICk6CiAg
ICAgICAgICIiIgpAQCAtMjExLDcgKzE4NCw3IEBACiAgICAgICAgICAgICAgICAgYXBwX2xpbmtz
LmFwcGVuZCh7CiAgICAgICAgICAgICAgICAgICAgICd0YXJnZXQnOiBsaW5rX2FwcC51cmwuZ2V0
KCAndGFyZ2V0X2ZyYW1lJywgJ19ibGFuaycgKSwKICAgICAgICAgICAgICAgICAgICAgJ2hyZWYn
ICA6IGxpbmtfYXBwLmdldF9kaXNwbGF5X3VybCggaGRhLCB0cmFucyApLAotICAgICAgICAgICAg
ICAgICAgICAndGV4dCcgIDogZ2V0dGV4dCggbGlua19hcHAubmFtZSApCisgICAgICAgICAgICAg
ICAgICAgICd0ZXh0JyAgOiBnZXR0ZXh0LmdldHRleHQoIGxpbmtfYXBwLm5hbWUgKQogICAgICAg
ICAgICAgICAgIH0pCiAgICAgICAgICAgICBpZiBhcHBfbGlua3M6CiAgICAgICAgICAgICAgICAg
ZGlzcGxheV9hcHBzLmFwcGVuZCggZGljdCggbGFiZWw9M0RkaXNwbGF5X2FwcC5uYW1lLCBsaW5r
cz0KPTNEYXBwX2xpbmtzICkgKQpAQCAtMjM4LDEzICsyMTEsMTkgQEAKICAgICAgICAgICAgICAg
ICAgICAgYXBwX2xpbmtzLmFwcGVuZCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAndGFyZ2V0
JzogdGFyZ2V0X2ZyYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgJ2hyZWYnICA6IGRpc3Bs
YXlfbGluaywKLSAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0JyAgOiBnZXR0ZXh0KCBkaXNw
bGF5X25hbWUgKQorICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQnICA6IGdldHRleHQuZ2V0
dGV4dCggZGlzcGxheV9uYW1lICkKICAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAg
ICAgICBpZiBhcHBfbGlua3M6CiAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlfYXBwcy5hcHBl
bmQoIGRpY3QoIGxhYmVsPTNEZGlzcGxheV9sYWJlbCwgbGluaz0Kcz0zRGFwcF9saW5rcyApICkK
PTIwCiAgICAgICAgIHJldHVybiBkaXNwbGF5X2FwcHMKPTIwCisgICAgZGVmIGdldF92aXN1YWxp
emF0aW9ucyggc2VsZiwgdHJhbnMsIGhkYSApOgorICAgICAgICAjIHVzZSBvbGRlciBzeXN0ZW0g
aWYgcmVnaXN0cnkgaXMgb2ZmIGluIHRoZSBjb25maWcKKyAgICAgICAgaWYgbm90IHRyYW5zLmFw
cC52aXN1YWxpemF0aW9uc19yZWdpc3RyeToKKyAgICAgICAgICAgcmV0dXJuIGhkYS5nZXRfdmlz
dWFsaXphdGlvbnMoKQorICAgICAgICByZXR1cm4gdHJhbnMuYXBwLnZpc3VhbGl6YXRpb25zX3Jl
Z2lzdHJ5LmdldF92aXN1YWxpemF0aW9ucyggdHJhbnM9CiwgaGRhICkKKwogICAgICNkZWYgZ2V0
X2RhdGFzZXQoIHNlbGYsIHRyYW5zLCBkYXRhc2V0X2lkLCBjaGVja19vd25lcnNoaXA9M0RUcnVl
LCBjaGU9CmNrX2FjY2Vzc2libGU9M0RGYWxzZSwgY2hlY2tfc3RhdGU9M0RUcnVlICk6CiAgICAg
IyAgICAiIiIKICAgICAjICAgIEdldCBhbiBIREEgb2JqZWN0IGJ5IGlkIHBlcmZvcm1pbmcgc2Vj
dXJpdHkgY2hlY2tzIHVzaW5nCkBAIC0zNzgsNjcgKzM1Nyw3IEBACiAgICAgIyAgICBpZiBkYXRh
c2V0LnN0YXRlICE9M0QgdHJhbnMuYXBwLm1vZGVsLkpvYi5zdGF0ZXMuT0s6CiAgICAgIyAgICAg
ICAgcmV0dXJuIGRhdGFzZXQuY29udmVyc2lvbl9tZXNzYWdlcy5QRU5ESU5HCiAgICAgIyAgICBy
ZXR1cm4gTm9uZQotICAgICMKLSAgICAjZGVmIGdldF9oZGFfZGljdCggc2VsZiwgdHJhbnMsIGhk
YSApOgotICAgICMgICAgIiIiUmV0dXJuIGZ1bGwgZGV0YWlscyBvZiB0aGlzIEhEQSBpbiBkaWN0
aW9uYXJ5IGZvcm0uCi0gICAgIyAgICAiIiIKLSAgICAjICAgICNwcmVjb25kaXRpb246IHRoZSB1
c2VyJ3MgYWNjZXNzIHRvIHRoaXMgaGRhIGhhcyBhbHJlYWR5IGJlZW4gY2hlPQpja2VkCi0gICAg
IyAgICAjVE9ETzo/PyBwb3N0Y29uZGl0aW9uOiBhbGwgaWRzIGFyZSBlbmNvZGVkIChpcyB0aGlz
IHJlYWxseSB3aGF0ID0Kd2Ugd2FudCBhdCB0aGlzIGxldmVsPykKLSAgICAjICAgIGV4cG9zZV9k
YXRhc2V0X3BhdGggPTNEIHRyYW5zLnVzZXJfaXNfYWRtaW4oKSBvciB0cmFucy5hcHAuY29uZmln
PQouZXhwb3NlX2RhdGFzZXRfcGF0aAotICAgICMgICAgaGRhX2RpY3QgPTNEIGhkYS50b19kaWN0
KCB2aWV3PTNEJ2VsZW1lbnQnLCBleHBvc2VfZGF0YXNldF9wYXRoPQo9M0RleHBvc2VfZGF0YXNl
dF9wYXRoICkKLSAgICAjICAgIGhkYV9kaWN0WyAnYXBpX3R5cGUnIF0gPTNEICJmaWxlIgotICAg
ICMKLSAgICAjICAgICMgQWRkIGFkZGl0aW9uYWwgYXR0cmlidXRlcyB0aGF0IGRlcGVuZCBvbiB0
cmFucyBjYW4gaGVuY2UgbXVzdCBiPQplIGFkZGVkIGhlcmUgcmF0aGVyIHRoYW4gYXQgdGhlIG1v
ZGVsIGxldmVsLgotICAgICMgICAgY2FuX2FjY2Vzc19oZGEgPTNEIHRyYW5zLmFwcC5zZWN1cml0
eV9hZ2VudC5jYW5fYWNjZXNzX2RhdGFzZXQoIHQ9CnJhbnMuZ2V0X2N1cnJlbnRfdXNlcl9yb2xl
cygpLCBoZGEuZGF0YXNldCApCi0gICAgIyAgICBjYW5fYWNjZXNzX2hkYSA9M0QgKCB0cmFucy51
c2VyX2lzX2FkbWluKCkgb3IgY2FuX2FjY2Vzc19oZGEgKQotICAgICMgICAgaWYgbm90IGNhbl9h
Y2Nlc3NfaGRhOgotICAgICMgICAgICAgIHJldHVybiBzZWxmLmdldF9pbmFjY2Vzc2libGVfaGRh
X2RpY3QoIHRyYW5zLCBoZGEgKQotICAgICMgICAgaGRhX2RpY3RbICdhY2Nlc3NpYmxlJyBdID0z
RCBUcnVlCi0gICAgIwotICAgICMgICAgI1RPRE86IEknbSB1bmNsZWFyIGFzIHRvIHdoaWNoIGFj
Y2VzcyBwYXR0ZXJuIGlzIHJpZ2h0Ci0gICAgIyAgICBoZGFfZGljdFsgJ2Fubm90YXRpb24nIF0g
PTNEIGhkYS5nZXRfaXRlbV9hbm5vdGF0aW9uX3N0ciggdHJhbnMucz0KYV9zZXNzaW9uLCB0cmFu
cy51c2VyLCBoZGEgKQotICAgICMgICAgI2Fubm90YXRpb24gPTNEIGdldGF0dHIoIGhkYSwgJ2Fu
bm90YXRpb24nLCBoZGEuZ2V0X2l0ZW1fYW5ub3RhdGk9Cm9uX3N0ciggdHJhbnMuc2Ffc2Vzc2lv
biwgdHJhbnMudXNlciwgaGRhICkgKQotICAgICMKLSAgICAjICAgICMgLS0tLSByZXR1cm4gaGVy
ZSBpZiBkZWxldGVkIEFORCBwdXJnZWQgT1IgY2FuJ3QgYWNjZXNzCi0gICAgIyAgICBwdXJnZWQg
PTNEICggaGRhLnB1cmdlZCBvciBoZGEuZGF0YXNldC5wdXJnZWQgKQotICAgICMgICAgaWYgaGRh
LmRlbGV0ZWQgYW5kIHB1cmdlZDoKLSAgICAjICAgICAgICAjVE9ETzogdG9fZGljdCBzaG91bGQg
cmVhbGx5IGdvIEFGVEVSIHRoaXMgLSBvbmx5IHN1bW1hcnkgZGF0YQotICAgICMgICAgICAgIHJl
dHVybiB0cmFucy5zZWN1cml0eS5lbmNvZGVfZGljdF9pZHMoIGhkYV9kaWN0ICkKLSAgICAjCi0g
ICAgIyAgICBpZiBleHBvc2VfZGF0YXNldF9wYXRoOgotICAgICMgICAgICAgIHRyeToKLSAgICAj
ICAgICAgICAgICAgaGRhX2RpY3RbICdmaWxlX25hbWUnIF0gPTNEIGhkYS5maWxlX25hbWUKLSAg
ICAjICAgICAgICBleGNlcHQgb2JqZWN0c3RvcmUuT2JqZWN0Tm90Rm91bmQ6Ci0gICAgIyAgICAg
ICAgICAgIGxvZy5leGNlcHRpb24oICdvYmplY3RzdG9yZS5PYmplY3ROb3RGb3VuZCwgSERBICVz
LicsIGhkYT0KLmlkICkKLSAgICAjCi0gICAgIyAgICBoZGFfZGljdFsgJ2Rvd25sb2FkX3VybCcg
XSA9M0QgdXJsX2ZvciggJ2hpc3RvcnlfY29udGVudHNfZGlzcGxheT0KJywKLSAgICAjICAgICAg
ICBoaXN0b3J5X2lkID0zRCB0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIGhkYS5oaXN0b3J5Lmlk
ICksCi0gICAgIyAgICAgICAgaGlzdG9yeV9jb250ZW50X2lkID0zRCB0cmFucy5zZWN1cml0eS5l
bmNvZGVfaWQoIGhkYS5pZCApICkKLSAgICAjCi0gICAgIyAgICAjIHJlc3VibWl0dGVkIGlzIG5v
dCBhIHJlYWwgc3RhdGUKLSAgICAjICAgIGhkYV9kaWN0WyAncmVzdWJtaXR0ZWQnIF0gPTNEIEZh
bHNlCi0gICAgIyAgICBpZiBoZGEuc3RhdGUgPTNEPTNEIHRyYW5zLmFwcC5tb2RlbC5EYXRhc2V0
LnN0YXRlcy5SRVNVQk1JVFRFRDoKLSAgICAjICAgICAgICBoZGFfZGljdFsgJ3N0YXRlJyBdID0z
RCBoZGEuZGF0YXNldC5zdGF0ZQotICAgICMgICAgICAgIGhkYV9kaWN0WyAncmVzdWJtaXR0ZWQn
IF0gPTNEIFRydWUKLSAgICAjCi0gICAgIyAgICAjIGluZGVjZXMsIGFzc29jLiBtZXRhZGF0YSBm
aWxlcywgZXRjLgotICAgICMgICAgbWV0YV9maWxlcyA9M0QgW10KLSAgICAjICAgIGZvciBtZXRh
X3R5cGUgaW4gaGRhLm1ldGFkYXRhLnNwZWMua2V5cygpOgotICAgICMgICAgICAgIGlmIGlzaW5z
dGFuY2UoIGhkYS5tZXRhZGF0YS5zcGVjWyBtZXRhX3R5cGUgXS5wYXJhbSwgRmlsZVBhcmE9Cm1l
dGVyICk6Ci0gICAgIyAgICAgICAgICAgIG1ldGFfZmlsZXMuYXBwZW5kKCBkaWN0KCBmaWxlX3R5
cGU9M0RtZXRhX3R5cGUgKSApCi0gICAgIyAgICBpZiBtZXRhX2ZpbGVzOgotICAgICMgICAgICAg
IGhkYV9kaWN0WyAnbWV0YV9maWxlcycgXSA9M0QgbWV0YV9maWxlcwotICAgICMKLSAgICAjICAg
ICMgY3VycmVudGx5LCB0aGUgdml6IHJlZyBpcyBvcHRpb25hbCAtIGhhbmRsZSBvbi9vZmYKLSAg
ICAjICAgIGlmIHRyYW5zLmFwcC52aXN1YWxpemF0aW9uc19yZWdpc3RyeToKLSAgICAjICAgICAg
ICBoZGFfZGljdFsgJ3Zpc3VhbGl6YXRpb25zJyBdID0zRCB0cmFucy5hcHAudmlzdWFsaXphdGlv
bnNfcmVnPQppc3RyeS5nZXRfdmlzdWFsaXphdGlvbnMoIHRyYW5zLCBoZGEgKQotICAgICMgICAg
ZWxzZToKLSAgICAjICAgICAgICBoZGFfZGljdFsgJ3Zpc3VhbGl6YXRpb25zJyBdID0zRCBoZGEu
Z2V0X3Zpc3VhbGl6YXRpb25zKCkKLSAgICAjICAgICNUT0RPOiBpdCBtYXkgYWxzbyBiZSB3aXNl
ciB0byByZW1vdmUgZnJvbSBoZXJlIGFuZCBhZGQgYXMgQVBJIGNhPQpsbCB0aGF0IGxvYWRzIHRo
ZSB2aXN1YWxpemF0aW9ucwotICAgICMgICAgIyAgICAgICAgICAgd2hlbiB0aGUgdmlzdWFsaXph
dGlvbnMgYnV0dG9uIGlzIGNsaWNrZWQgKGluc3RlYWQgb2Y9CiBwcmVsb2FkaW5nL3ByZS1jaGVj
a2luZykKLSAgICAjCi0gICAgIyAgICByZXR1cm4gdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2RpY3Rf
aWRzKCBoZGFfZGljdCApCi0gICAgIworCiAgICAgI2RlZiBnZXRfaW5hY2Nlc3NpYmxlX2hkYV9k
aWN0KCBzZWxmLCB0cmFucywgaGRhICk6CiAgICAgIyAgICByZXR1cm4gdHJhbnMuc2VjdXJpdHku
ZW5jb2RlX2RpY3RfaWRzKHsKICAgICAjICAgICAgICAnaWQnICAgICAgICA6IGhkYS5pZCwKQEAg
LTQ1MCw3ICszNjksNyBAQAogICAgICMgICAgICAgICd2aXNpYmxlJyAgIDogaGRhLnZpc2libGUs
CiAgICAgIyAgICAgICAgJ2FjY2Vzc2libGUnOiBGYWxzZQogICAgICMgICAgfSkKLSAgICAjCisK
ICAgICAjZGVmIGdldF9oZGFfZGljdF93aXRoX2Vycm9yKCBzZWxmLCB0cmFucywgaGRhPTNETm9u
ZSwgaGlzdG9yeV9pZD0zRE5vPQpuZSwgaWQ9M0ROb25lLCBlcnJvcl9tc2c9M0QnRXJyb3InICk6
CiAgICAgIyAgICByZXR1cm4gdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2RpY3RfaWRzKHsKICAgICAj
ICAgICAgICAnaWQnICAgICAgICA6IGhkYS5pZCBpZiBoZGEgZWxzZSBpZCwKQEAgLTQ2MCw0NyAr
Mzc5LDcgQEAKICAgICAjICAgICAgICAnZXJyb3InICAgICA6IGVycm9yX21zZywKICAgICAjICAg
ICAgICAnc3RhdGUnICAgICA6IHRyYW5zLm1vZGVsLkRhdGFzZXQuc3RhdGVzLk5FVwogICAgICMg
ICAgfSkKLSAgICAjCi0gICAgI2RlZiBnZXRfZGlzcGxheV9hcHBzKCBzZWxmLCB0cmFucywgaGRh
ICk6Ci0gICAgIyAgICBkaXNwbGF5X2FwcHMgPTNEIFtdCi0gICAgIyAgICBmb3IgZGlzcGxheV9h
cHAgaW4gaGRhLmdldF9kaXNwbGF5X2FwcGxpY2F0aW9ucyggdHJhbnMgKS5pdGVydmFsdT0KZXMo
KToKLSAgICAjCi0gICAgIyAgICAgICAgYXBwX2xpbmtzID0zRCBbXQotICAgICMgICAgICAgIGZv
ciBsaW5rX2FwcCBpbiBkaXNwbGF5X2FwcC5saW5rcy5pdGVydmFsdWVzKCk6Ci0gICAgIyAgICAg
ICAgICAgIGFwcF9saW5rcy5hcHBlbmQoewotICAgICMgICAgICAgICAgICAgICAgJ3RhcmdldCc6
IGxpbmtfYXBwLnVybC5nZXQoICd0YXJnZXRfZnJhbWUnLCAnX2JsYW5rJyA9CiksCi0gICAgIyAg
ICAgICAgICAgICAgICAnaHJlZicgIDogbGlua19hcHAuZ2V0X2Rpc3BsYXlfdXJsKCBoZGEsIHRy
YW5zICksCi0gICAgIyAgICAgICAgICAgICAgICAndGV4dCcgIDogZ2V0dGV4dCggbGlua19hcHAu
bmFtZSApCi0gICAgIyAgICAgICAgICAgIH0pCi0gICAgIyAgICAgICAgaWYgYXBwX2xpbmtzOgot
ICAgICMgICAgICAgICAgICBkaXNwbGF5X2FwcHMuYXBwZW5kKCBkaWN0KCBsYWJlbD0zRGRpc3Bs
YXlfYXBwLm5hbWUsIGxpbms9CnM9M0RhcHBfbGlua3MgKSApCi0gICAgIwotICAgICMgICAgcmV0
dXJuIGRpc3BsYXlfYXBwcwotICAgICMKLSAgICAjZGVmIGdldF9vbGRfZGlzcGxheV9hcHBsaWNh
dGlvbnMoIHNlbGYsIHRyYW5zLCBoZGEgKToKLSAgICAjICAgIGRpc3BsYXlfYXBwcyA9M0QgW10K
LSAgICAjICAgIGlmIG5vdCB0cmFucy5hcHAuY29uZmlnLmVuYWJsZV9vbGRfZGlzcGxheV9hcHBs
aWNhdGlvbnM6Ci0gICAgIyAgICAgICAgcmV0dXJuIGRpc3BsYXlfYXBwcwotICAgICMKLSAgICAj
ICAgIGZvciBkaXNwbGF5X2FwcCBpbiBoZGEuZGF0YXR5cGUuZ2V0X2Rpc3BsYXlfdHlwZXMoKToK
LSAgICAjICAgICAgICB0YXJnZXRfZnJhbWUsIGRpc3BsYXlfbGlua3MgPTNEIGhkYS5kYXRhdHlw
ZS5nZXRfZGlzcGxheV9saW5rPQpzKCBoZGEsCi0gICAgIyAgICAgICAgICAgIGRpc3BsYXlfYXBw
LCB0cmFucy5hcHAsIHRyYW5zLnJlcXVlc3QuYmFzZSApCi0gICAgIwotICAgICMgICAgICAgIGlm
IGxlbiggZGlzcGxheV9saW5rcyApID4gMDoKLSAgICAjICAgICAgICAgICAgZGlzcGxheV9sYWJl
bCA9M0QgaGRhLmRhdGF0eXBlLmdldF9kaXNwbGF5X2xhYmVsKCBkaXNwbGF5PQpfYXBwICkKLSAg
ICAjCi0gICAgIyAgICAgICAgICAgIGFwcF9saW5rcyA9M0QgW10KLSAgICAjICAgICAgICAgICAg
Zm9yIGRpc3BsYXlfbmFtZSwgZGlzcGxheV9saW5rIGluIGRpc3BsYXlfbGlua3M6Ci0gICAgIyAg
ICAgICAgICAgICAgICBhcHBfbGlua3MuYXBwZW5kKHsKLSAgICAjICAgICAgICAgICAgICAgICAg
ICAndGFyZ2V0JzogdGFyZ2V0X2ZyYW1lLAotICAgICMgICAgICAgICAgICAgICAgICAgICdocmVm
JyAgOiBkaXNwbGF5X2xpbmssCi0gICAgIyAgICAgICAgICAgICAgICAgICAgJ3RleHQnICA6IGdl
dHRleHQoIGRpc3BsYXlfbmFtZSApCi0gICAgIyAgICAgICAgICAgICAgICB9KQotICAgICMgICAg
ICAgICAgICBpZiBhcHBfbGlua3M6Ci0gICAgIyAgICAgICAgICAgICAgICBkaXNwbGF5X2FwcHMu
YXBwZW5kKCBkaWN0KCBsYWJlbD0zRGRpc3BsYXlfbGFiZWwsIGxpbj0Ka3M9M0RhcHBfbGlua3Mg
KSApCi0gICAgIwotICAgICMgICAgcmV0dXJuIGRpc3BsYXlfYXBwcwotICAgICMKKwogICAgICNk
ZWYgc2V0X2hkYV9mcm9tX2RpY3QoIHNlbGYsIHRyYW5zLCBoZGEsIG5ld19kYXRhICk6CiAgICAg
IyAgICAiIiIKICAgICAjICAgIENoYW5nZXMgSERBIGRhdGEgdXNpbmcgdGhlIGdpdmVuIGRpY3Rp
b25hcnkgbmV3X2RhdGEuCkBAIC01MjIsNyArNDAxLDcgQEAKICAgICAjICAgICAgICB0cmFucy5z
YV9zZXNzaW9uLmZsdXNoKCkKICAgICAjCiAgICAgIyAgICByZXR1cm4gY2hhbmdlZAotICAgICMK
KwogICAgICNkZWYgZ2V0X2hkYV9qb2IoIHNlbGYsIGhkYSApOgogICAgICMgICAgIyBHZXQgZGF0
YXNldCdzIGpvYi4KICAgICAjICAgIGpvYiA9M0QgTm9uZQpAQCAtNTMwLDcgKzQwOSw3IEBACiAg
ICAgIyAgICAgICAgam9iID0zRCBqb2Jfb3V0cHV0X2Fzc29jLmpvYgogICAgICMgICAgICAgIGJy
ZWFrCiAgICAgIyAgICByZXR1cm4gam9iCi0gICAgIworCiAgICAgI2RlZiBzdG9wX2hkYV9jcmVh
dGluZ19qb2IoIHNlbGYsIGhkYSApOgogICAgICMgICAgIiIiCiAgICAgIyAgICBTdG9wcyBhbiBI
REEncyBjcmVhdGluZyBqb2IgaWYgYWxsIHRoZSBqb2IncyBvdGhlciBvdXRwdXRzIGFyZSBkZT0K
bGV0ZWQuCkBAIC01NDMsMzkgKzQyMiwxMzggQEAKICAgICAjICAgICAgICAgICAgaWYgam9iLmNo
ZWNrX2lmX291dHB1dF9kYXRhc2V0c19kZWxldGVkKCk6CiAgICAgIyAgICAgICAgICAgICAgICBq
b2IubWFya19kZWxldGVkKCBzZWxmLmFwcC5jb25maWcudHJhY2tfam9ic19pbl9kYXRhYj0KYXNl
ICkKICAgICAjICAgICAgICAgICAgICAgIHNlbGYuYXBwLmpvYl9tYW5hZ2VyLmpvYl9zdG9wX3F1
ZXVlLnB1dCggam9iLmlkICkKKworIyBvbGQgZmlsZQorICAgICNkZWYgZ2V0KCBzZWxmLCB0cmFu
cywgdW5lbmNvZGVkX2lkLCBjaGVja19vd25lcnNoaXA9M0RUcnVlLCBjaGVja19hY2M9CmVzc2li
bGU9M0RUcnVlICk6CisgICAgIyAgICAiIiIKKyAgICAjICAgIEdldCBhbiBIREEgYnkgaXRzIHVu
ZW5jb2RlZCBkYiBpZCwgY2hlY2tpbmcgb3duZXJzaGlwICh2aWEgaXRzIGhpPQpzdG9yeSkKKyAg
ICAjICAgIG9yIGFjY2Vzc2liaWxpdHkgKHZpYSBkYXRhc2V0IHNoYXJlcy9wZXJtaXNzaW9ucyku
CisgICAgIyAgICAiIiIKKyAgICAjICAgIGhkYSA9M0QgdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSgg
dHJhbnMuYXBwLm1vZGVsLkhpc3RvcnlEYXRhc2V0QXNzPQpvY2lhdGlvbiApLmdldCggdW5lbmNv
ZGVkX2lkICkKKyAgICAjICAgIGlmIGhkYSBpcyBOb25lOgorICAgICMgICAgICAgIHJhaXNlIGV4
Y2VwdGlvbnMuT2JqZWN0Tm90Rm91bmQoKQorICAgICMgICAgaGRhID0zRCBzZWxmLnNlY3VyZSgg
dHJhbnMsIGhkYSwgY2hlY2tfb3duZXJzaGlwLCBjaGVja19hY2Nlc3NpYmw9CmUgKQorICAgICMg
ICAgcmV0dXJuIGhkYQogICAgICMKKyAgICAjZGVmIHNlY3VyZSggc2VsZiwgdHJhbnMsIGhkYSwg
Y2hlY2tfb3duZXJzaGlwPTNEVHJ1ZSwgY2hlY2tfYWNjZXNzaWJsPQplPTNEVHJ1ZSApOgorICAg
ICMgICAgIiIiCisgICAgIyAgICBjaGVjayBvd25lcnNoaXAgKHZpYSBpdHMgaGlzdG9yeSkgb3Ig
YWNjZXNzaWJpbGl0eSAodmlhIGRhdGFzZXQKKyAgICAjICAgIHNoYXJlcy9wZXJtaXNzaW9ucyku
CisgICAgIyAgICAiIiIKKyAgICAjICAgICMgYWxsIGl0ZW1zIGFyZSBhY2Nlc3NpYmxlIHRvIGFu
IGFkbWluCisgICAgIyAgICBpZiB0cmFucy51c2VyIGFuZCB0cmFucy51c2VyX2lzX2FkbWluKCk6
CisgICAgIyAgICAgICAgcmV0dXJuIGhkYQorICAgICMgICAgaWYgY2hlY2tfb3duZXJzaGlwOgor
ICAgICMgICAgICAgIGhkYSA9M0Qgc2VsZi5jaGVja19vd25lcnNoaXAoIHRyYW5zLCBoZGEgKQor
ICAgICMgICAgaWYgY2hlY2tfYWNjZXNzaWJsZToKKyAgICAjICAgICAgICBoZGEgPTNEIHNlbGYu
Y2hlY2tfYWNjZXNzaWJsZSggdHJhbnMsIGhkYSApCisgICAgIyAgICByZXR1cm4gaGRhCiAgICAg
IworICAgICNkZWYgY2FuX2FjY2Vzc19kYXRhc2V0KCBzZWxmLCB0cmFucywgaGRhICk6CisgICAg
IyAgICAiIiIKKyAgICAjICAgIFVzZSBzZWN1cml0eSBhZ2VudCB0byBzZWUgaWYgY3VycmVudCB1
c2VyIGhhcyBhY2Nlc3MgdG8gZGF0YXNldC4KKyAgICAjICAgICIiIgorICAgICMgICAgY3VycmVu
dF91c2VyX3JvbGVzID0zRCB0cmFucy5nZXRfY3VycmVudF91c2VyX3JvbGVzKCkKKyAgICAjICAg
IHJldHVybiB0cmFucy5hcHAuc2VjdXJpdHlfYWdlbnQuY2FuX2FjY2Vzc19kYXRhc2V0KCBjdXJy
ZW50X3VzZXJfPQpyb2xlcywgaGRhLmRhdGFzZXQgKQorICAgICMKKyAgICAjI1RPRE86IGlzX293
bmVyLCBpc19hY2Nlc3NpYmxlCisgICAgIworICAgICNkZWYgY2hlY2tfb3duZXJzaGlwKCBzZWxm
LCB0cmFucywgaGRhICk6CisgICAgIyAgICAiIiIKKyAgICAjICAgIFVzZSBoaXN0b3J5IHRvIHNl
ZSBpZiBjdXJyZW50IHVzZXIgb3ducyBIREEuCisgICAgIyAgICAiIiIKKyAgICAjICAgIGlmIG5v
dCB0cmFucy51c2VyOgorICAgICMgICAgICAgICNpZiBoZGEuaGlzdG9yeSA9M0Q9M0QgdHJhbnMu
aGlzdG9yeToKKyAgICAjICAgICAgICAjICAgIHJldHVybiBoZGEKKyAgICAjICAgICAgICByYWlz
ZSBleGNlcHRpb25zLkF1dGhlbnRpY2F0aW9uUmVxdWlyZWQoICJNdXN0IGJlIGxvZ2dlZCBpbiB0
PQpvIG1hbmFnZSBHYWxheHkgZGF0YXNldHMiLCB0eXBlPTNEJ2Vycm9yJyApCisgICAgIyAgICBp
ZiB0cmFucy51c2VyX2lzX2FkbWluKCk6CisgICAgIyAgICAgICAgcmV0dXJuIGhkYQorICAgICMg
ICAgIyBjaGVjayBmb3Igb3duZXJzaGlwIG9mIHRoZSBjb250YWluaW5nIGhpc3RvcnkgYW5kIGFj
Y2Vzc2liaWxpdHk9CiBvZiB0aGUgdW5kZXJseWluZyBkYXRhc2V0CisgICAgIyAgICBpZiggc2Vs
Zi5oaXN0b3JpZXNfbWdyLmlzX293bmVyKCB0cmFucywgaGRhLmhpc3RvcnkgKQorICAgICMgICAg
ICAgICAgICBhbmQgc2VsZi5jYW5fYWNjZXNzX2RhdGFzZXQoIHRyYW5zLCBoZGEgKSApOgorICAg
ICMgICAgICAgIHJldHVybiBoZGEKKyAgICAjICAgIHJhaXNlIGV4Y2VwdGlvbnMuSXRlbU93bmVy
c2hpcEV4Y2VwdGlvbigKKyAgICAjICAgICAgICAiSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbiBp
cyBub3Qgb3duZWQgYnkgdGhlIGN1cnJlbnQgdXNlciIsPQogdHlwZT0zRCdlcnJvcicgKQorCisg
ICAgI2RlZiBjaGVja19hY2Nlc3NpYmxlKCBzZWxmLCB0cmFucywgaGRhICk6CisgICAgIyAgICAi
IiIKKyAgICAjICAgIFJhaXNlIGVycm9yIGlmIEhEQSBpcyBub3QgYWNjZXNzaWJsZS4KKyAgICAj
ICAgICIiIgorICAgICMgICAgaWYgdHJhbnMudXNlciBhbmQgdHJhbnMudXNlcl9pc19hZG1pbigp
OgorICAgICMgICAgICAgIHJldHVybiBoZGEKKyAgICAjICAgICMgY2hlY2sgZm9yIGFjY2VzcyBv
ZiB0aGUgY29udGFpbmluZyBoaXN0b3J5Li4uCisgICAgIyAgICBzZWxmLmhpc3Rvcmllc19tZ3Iu
Y2hlY2tfYWNjZXNzaWJsZSggdHJhbnMsIGhkYS5oaXN0b3J5ICkKKyAgICAjICAgICMgLi4udGhl
biB0aGUgdW5kZXJseWluZyBkYXRhc2V0CisgICAgIyAgICBpZiBzZWxmLmNhbl9hY2Nlc3NfZGF0
YXNldCggdHJhbnMsIGhkYSApOgorICAgICMgICAgICAgIHJldHVybiBoZGEKKyAgICAjICAgIHJh
aXNlIGV4Y2VwdGlvbnMuSXRlbUFjY2Vzc2liaWxpdHlFeGNlcHRpb24oCisgICAgIyAgICAgICAg
Ikhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb24gaXMgbm90IGFjY2Vzc2libGUgdG8gdGhlIGN1cnJl
bnQgdT0Kc2VyIiwgdHlwZT0zRCdlcnJvcicgKQorCj0yMAogIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKIGNsYXNzIEhE
QVNlcmlhbGl6ZXIoIGJhc2UuTW9kZWxTZXJpYWxpemVyICk6CisgICAgI1RPRE86IGluaGVyaXQg
ZnJvbSBkYXRhc2V0cy5EYXRhc2V0QXNzb2NpYXRpb25TZXJpYWxpemVyCj0yMAotICAgIGRlZiBf
X2luaXRfXyggc2VsZiApOgotICAgICAgICBzdXBlciggSERBU2VyaWFsaXplciwgc2VsZiApLl9f
aW5pdF9fKCkKKyAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgorICAgICAgICBzdXBlcigg
SERBU2VyaWFsaXplciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQorICAgICAgICBzZWxmLmhkYV9t
Z3IgPTNEIEhEQU1hbmFnZXIoIGFwcCApCj0yMAogICAgICAgICAjIG1vc3Qgb2YgdGhlc2Ugdmll
d3MgYnVpbGQvYWRkIHRvIHRoZSBwcmV2aW91cyB2aWV3CiAgICAgICAgIHN1bW1hcnlfdmlldyA9
M0QgWwotICAgICAgICAgICAgJ2lkJywgJ2hpc3RvcnlfaWQnLCAnaGlkJywgJ25hbWUnLCAnZGF0
YXNldF9pZCcsCi0gICAgICAgICAgICAnc3RhdGUnLCAnZGVsZXRlZCcsICdwdXJnZWQnLCAndmlz
aWJsZScKKyAgICAgICAgICAgICdpZCcsICduYW1lJywKKyAgICAgICAgICAgICdoaXN0b3J5X2lk
JywgJ2hpZCcsICdoaXN0b3J5X2NvbnRlbnRfdHlwZScsCisgICAgICAgICAgICAjJ2RhdGFzZXRf
aWQnLAorICAgICAgICAgICAgJ3N0YXRlJywgJ2V4dGVuc2lvbicsCisgICAgICAgICAgICAnZGVs
ZXRlZCcsICdwdXJnZWQnLCAndmlzaWJsZScsICdyZXN1Ym1pdHRlZCcsCisgICAgICAgICAgICAn
dHlwZScsICd1cmwnCiAgICAgICAgIF0KLSAgICAgICAgZGV0YWlsZWRfdmlldyA9M0Qgc3VtbWFy
eV92aWV3ICsgWwotICAgICAgICAgICAgJ2Ria2V5JywgJ2luZm8nLCAnYmx1cmInLCAnZXh0ZW5z
aW9uJywgJ2NyZWF0ZV90aW1lJywgJ3VwZGF0ZV89CnRpbWUnLAotICAgICAgICAgICAgJ2NvcGll
ZF9mcm9tX2hpc3RvcnlfZGF0YXNldF9hc3NvY2lhdGlvbl9pZCcsICdjb3BpZWRfZnJvbV9saWI9
CnJhcnlfZGF0YXNldF9kYXRhc2V0X2Fzc29jaWF0aW9uX2lkJywKLSAgICAgICAgICAgICdtZXRh
ZGF0YScsICdzaXplJywKKyAgICAgICAgaW5hY2Nlc3NpYmxlID0zRCBbCisgICAgICAgICAgICAn
aWQnLCAnbmFtZScsICdoaXN0b3J5X2lkJywgJ2hpZCcsICdoaXN0b3J5X2NvbnRlbnRfdHlwZScs
CisgICAgICAgICAgICAnc3RhdGUnLCAnZGVsZXRlZCcsICd2aXNpYmxlJworICAgICAgICBdCisg
ICAgICAgIGRldGFpbGVkX3ZpZXcgPTNEIFsKKyAgICAgICAgICAgICdpZCcsICduYW1lJywgJ21v
ZGVsX2NsYXNzJywKKyAgICAgICAgICAgICdoaXN0b3J5X2lkJywgJ2hpZCcsCisgICAgICAgICAg
ICAjIHdoeSBpbmNsdWRlIGlmIG1vZGVsX2NsYXNzIGlzIHRoZXJlPworICAgICAgICAgICAgJ2hk
YV9sZGRhJywgJ2hpc3RvcnlfY29udGVudF90eXBlJywKKyAgICAgICAgICAgICdzdGF0ZScsCisg
ICAgICAgICAgICAnYWNjZXNzaWJsZScsCisgICAgICAgICAgICAnZGVsZXRlZCcsICdwdXJnZWQn
LCAndmlzaWJsZScsICdyZXN1Ym1pdHRlZCcsCisKKyAgICAgICAgICAgICMgcmVtYXBwZWQKKyAg
ICAgICAgICAgICdnZW5vbWVfYnVpbGQnLCAnbWlzY19pbmZvJywgJ21pc2NfYmx1cmInLAorICAg
ICAgICAgICAgJ2ZpbGVfZXh0JywgJ2ZpbGVfc2l6ZScsCisKKyAgICAgICAgICAgICdjcmVhdGVf
dGltZScsICd1cGRhdGVfdGltZScsCisgICAgICAgICAgICAnbWV0YWRhdGEnLCAnbWV0YV9maWxl
cycsICdkYXRhX3R5cGUnLAorICAgICAgICAgICAgJ3BlZWsnLAorCisgICAgICAgICAgICAjVE9E
Tzogd2h5IGlzIHRoaXMgbmFtZWQgdXVpZCE/IFRoZSBoZGEgZG9lc24ndCBoYXZlIGEgdXVpZCAt
ID0KaXQncyB0aGUgdW5kZXJseWluZyBkYXRhc2V0J3MgdXVpZCEKKyAgICAgICAgICAgICd1dWlk
JywKKyAgICAgICAgICAgICMgc2hvdWxkIGJlOgorICAgICAgICAgICAgIydkYXRhc2V0X3V1aWQn
LAorCisgICAgICAgICAgICAnZmlsZV9wYXRoJywKKyAgICAgICAgICAgICdkaXNwbGF5X2FwcHMn
LAorICAgICAgICAgICAgJ2Rpc3BsYXlfdHlwZXMnLAorICAgICAgICAgICAgJ3Zpc3VhbGl6YXRp
b25zJywKKyAgICAgICAgICAgPTIwCisgICAgICAgICAgICAjJ3VybCcsCisgICAgICAgICAgICAn
ZG93bmxvYWRfdXJsJywKKwogICAgICAgICAgICAgI21peGluOiBhbm5vdGF0YWJsZQogICAgICAg
ICAgICAgJ2Fubm90YXRpb24nLAogICAgICAgICAgICAgI21peGluOiB0YWdnYWJsZQogICAgICAg
ICAgICAgJ3RhZ3MnLAorCisgICAgICAgICAgICAnYXBpX3R5cGUnCiAgICAgICAgIF0KICAgICAg
ICAgZXh0ZW5kZWRfdmlldyA9M0QgZGV0YWlsZWRfdmlldyArIFsKICAgICAgICAgICAgICNOT1RF
OiBzZW5kaW5nIHJhdyAncGVlaycgKG5vdCBnZXRfZGlzcGxheV9wZWVrKQotICAgICAgICAgICAg
J3BlZWsnLAogICAgICAgICAgICAgJ3Rvb2xfdmVyc2lvbicsICdwYXJlbnRfaWQnLCAnZGVzaWdu
YXRpb24nLAogICAgICAgICBdCj0yMAogICAgICAgICBzZWxmLnNlcmlhbGl6YWJsZV9rZXlzID0z
RCBleHRlbmRlZF92aWV3ICsgWwotICAgICAgICAgICAgJ2Rpc3BsYXlfYXBwcycsCi0gICAgICAg
ICAgICAnZGlzcGxheV90eXBlcycsCi0gICAgICAgICAgICAndmlzdWFsaXphdGlvbnMnCiAgICAg
ICAgIF0KICAgICAgICAgc2VsZi52aWV3cyA9M0QgewogICAgICAgICAgICAgJ3N1bW1hcnknICAg
OiBzdW1tYXJ5X3ZpZXcsCkBAIC01ODYsNTIgKzU2NCwxOTAgQEAKPTIwCiAgICAgZGVmIGFkZF9z
ZXJpYWxpemVycyggc2VsZiApOgogICAgICAgICBzZWxmLnNlcmlhbGl6ZXJzLnVwZGF0ZSh7Cisg
ICAgICAgICAgICAnbW9kZWxfY2xhc3MnICAgOiBsYW1iZGEgKmE6ICdIaXN0b3J5RGF0YXNldEFz
c29jaWF0aW9uJywKKyAgICAgICAgICAgICdhY2Nlc3NpYmxlJyAgICA6IGxhbWJkYSAqYTogVHJ1
ZSwKKwogICAgICAgICAgICAgJ2lkJyAgICAgICAgICAgIDogc2VsZi5zZXJpYWxpemVfaWQsCiAg
ICAgICAgICAgICAnaGlzdG9yeV9pZCcgICAgOiBzZWxmLnNlcmlhbGl6ZV9pZCwKKyAgICAgICAg
ICAgICdoaXN0b3J5X2NvbnRlbnRfdHlwZSc6IGxhbWJkYSAqYTogJ2RhdGFzZXQnLAogICAgICAg
ICAgICAgJ2RhdGFzZXRfaWQnICAgIDogc2VsZi5zZXJpYWxpemVfaWQsCisgICAgICAgICAgICAn
aGRhX2xkZGEnICAgICAgOiBsYW1iZGEgKmE6ICdoZGEnLAorCisgICAgICAgICAgICAjIHJlbWFw
cGVkCisgICAgICAgICAgICAnaW5mbycgICAgICAgICAgOiBsYW1iZGEgdCwgaSwgazogaS5pbmZv
LnN0cmlwKCkgaWYgaXNpbnN0YW5jZT0KKCBpLmluZm8sIGJhc2VzdHJpbmcgKSBlbHNlIGkuaW5m
bywKKyAgICAgICAgICAgICdtaXNjX2luZm8nICAgICA6IGxhbWJkYSB0LCBpLCBrOiBzZWxmLnNl
cmlhbGl6ZXJzWyAnaW5mbycgXSggPQp0LCBpLCBrICksCisgICAgICAgICAgICAnbWlzY19ibHVy
YicgICAgOiBsYW1iZGEgdCwgaSwgazogaS5ibHVyYiwKKyAgICAgICAgICAgICdnZW5vbWVfYnVp
bGQnICA6IGxhbWJkYSB0LCBpLCBrOiBpLmRia2V5LAorICAgICAgICAgICAgJ2ZpbGVfZXh0JyAg
ICAgIDogbGFtYmRhIHQsIGksIGs6IGkuZXh0ZW5zaW9uLAorICAgICAgICAgICAgJ2ZpbGVfc2l6
ZScgICAgIDogbGFtYmRhIHQsIGksIGs6IHNlbGYuc2VyaWFsaXplcnNbICdzaXplJyBdKCA9CnQs
IGksIGsgKSwKPTIwCiAgICAgICAgICAgICAnY3JlYXRlX3RpbWUnICAgOiBzZWxmLnNlcmlhbGl6
ZV9kYXRlLAogICAgICAgICAgICAgJ3VwZGF0ZV90aW1lJyAgIDogc2VsZi5zZXJpYWxpemVfZGF0
ZSwKICAgICAgICAgICAgICdjb3BpZWRfZnJvbV9oaXN0b3J5X2RhdGFzZXRfYXNzb2NpYXRpb25f
aWQnICAgICAgICA6IHNlbGYuc2VyPQppYWxpemVfaWQsCiAgICAgICAgICAgICAnY29waWVkX2Zy
b21fbGlicmFyeV9kYXRhc2V0X2RhdGFzZXRfYXNzb2NpYXRpb25faWQnOiBzZWxmLnNlcj0KaWFs
aXplX2lkLAotICAgICAgICAgICAgJ21ldGFkYXRhJyAgICAgIDogc2VsZi5zZXJpYWxpemVfbWV0
YWRhdGEsCisKKyAgICAgICAgICAgICdyZXN1Ym1pdHRlZCcgICA6IGxhbWJkYSB0LCBpLCBrOiBp
Ll9zdGF0ZSA9M0Q9M0QgdC5hcHAubW9kZWwuPQpEYXRhc2V0LnN0YXRlcy5SRVNVQk1JVFRFRCwK
KworICAgICAgICAgICAgJ21ldGFfZmlsZXMnICAgIDogc2VsZi5zZXJpYWxpemVfbWV0YV9maWxl
cywKKyAgICAgICAgICAgICdmaWxlX3BhdGgnICAgICA6IHNlbGYuc2VyaWFsaXplX2ZpbGVfcGF0
aCwKKwogICAgICAgICAgICAgJ3NpemUnICAgICAgICAgIDogbGFtYmRhIHQsIGksIGs6IGludCgg
aS5nZXRfc2l6ZSgpICksCiAgICAgICAgICAgICAnbmljZV9zaXplJyAgICAgOiBsYW1iZGEgdCwg
aSwgazogaS5nZXRfc2l6ZSggbmljZV9zaXplPTNEVHJ1ZT0KICksCisgICAgICAgICAgICAnZGF0
YV90eXBlJyAgICAgOiBsYW1iZGEgdCwgaSwgazogaS5kYXRhdHlwZS5fX2NsYXNzX18uX19tb2R1
bD0KZV9fICsgJy4nICsgaS5kYXRhdHlwZS5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAg
ICAncGVlaycgICAgICAgICAgOiBsYW1iZGEgdCwgaSwgazogaS5kaXNwbGF5X3BlZWsoKSBpZiBp
LnBlZWsgYT0KbmQgaS5wZWVrICE9M0QgJ25vIHBlZWsnIGVsc2UgTm9uZSwKKworICAgICAgICAg
ICAgIyBjdXJyZW50bHkgd2Ugc2VuZCB0aGlzIHN1Yi1vYmogZmxhdHRlbmVkIChzZWUgc2VyaWFs
aXplIGFuZCA9CmFkZF9mbGF0dGVuZWRfbWV0YWRhdGEgYmVsb3cpCisgICAgICAgICAgICAjJ21l
dGFkYXRhJyAgICAgIDogc2VsZi5zZXJpYWxpemVfbWV0YWRhdGEsCisgICAgICAgICAgICAjICAg
bWFrZSBpdCBhdmFpbGFibGUgaGVyZSB1bmRlciBhIGRpZmZlcmVudCBrZXkKKyAgICAgICAgICAg
ICdtZXRhZGF0YV9kaWN0JyA6IHNlbGYuc2VyaWFsaXplX21ldGFkYXRhLAorCiAgICAgICAgICAg
ICAncGFyZW50X2lkJyAgICAgOiBzZWxmLnNlcmlhbGl6ZV9pZCwKLSAgICAgICAgICAgICNUT0RP
OiB0byBtaXhpbjogYW5ub3RhdGFibGUKLSAgICAgICAgICAgICdhbm5vdGF0aW9uJyAgICA6IGxh
bWJkYSB0LCBpLCBrOiBpLmdldF9pdGVtX2Fubm90YXRpb25fc3RyKCB0PQouc2Ffc2Vzc2lvbiwg
dC51c2VyLCBpICksCi0gICAgICAgICAgICAjVE9ETzogdG8gbWl4aW46IHRhZ2dhYmxlCi0gICAg
ICAgICAgICAndGFncycgICAgICAgICAgOiBsYW1iZGEgdCwgaSwgazogWyB0YWcudXNlcl90bmFt
ZSArICggJzonICsgdD0KYWcudXNlcl92YWx1ZSBpZiB0YWcudXNlcl92YWx1ZSBlbHNlICcnICkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0YWcg
aW4gaS50YWdzIF0sCisgICAgICAgICAgICAnYW5ub3RhdGlvbicgICAgOiBzZWxmLnNlcmlhbGl6
ZV9hbm5vdGF0aW9uLAorICAgICAgICAgICAgJ3RhZ3MnICAgICAgICAgIDogc2VsZi5zZXJpYWxp
emVfdGFncywKKworICAgICAgICAgICAgJ2Rpc3BsYXlfYXBwcycgIDogbGFtYmRhIHQsIGksIGs6
IHNlbGYuaGRhX21nci5nZXRfZGlzcGxheV9hcHA9CnMoIHQsIGkgKSwKKyAgICAgICAgICAgICdk
aXNwbGF5X3R5cGVzJyA6IGxhbWJkYSB0LCBpLCBrOiBzZWxmLmhkYV9tZ3IuZ2V0X29sZF9kaXNw
bGF5PQpfYXBwbGljYXRpb25zKCB0LCBpICksCisgICAgICAgICAgICAndmlzdWFsaXphdGlvbnMn
OiBsYW1iZGEgdCwgaSwgazogc2VsZi5oZGFfbWdyLmdldF92aXN1YWxpemF0aT0Kb25zKCB0LCBp
ICksCisKKyAgICAgICAgICAgICdkYXRhc2V0X3V1aWQnICA6IGxhbWJkYSB0LCBpLCBrOiBzdHIo
IGkuZGF0YXNldC51dWlkICkgaWYgaS5kPQphdGFzZXQudXVpZCBlbHNlIE5vbmUsCisgICAgICAg
ICAgICAndXVpZCcgICAgICAgICAgOiBsYW1iZGEgdCwgaSwgazogc2VsZi5zZXJpYWxpemVyc1sg
J2RhdGFzZXRfdT0KdWlkJyBdKCB0LCBpLCBrICksCisKKyAgICAgICAgICAgICMndXJsJyAgIDog
dXJsX2ZvciggJ2hpc3RvcnlfY29udGVudF90eXBlZCcsIGhpc3RvcnlfaWQ9M0RlbmNvPQpkZWRf
aGlzdG9yeV9pZCwgaWQ9M0RlbmNvZGVkX2lkLCB0eXBlPTNEImRhdGFzZXQiICksCisgICAgICAg
ICAgICAjVE9ETzogdGhpcyBpbnRlcm1pdHRlbnRseSBjYXVzZXMgYSByb3V0ZXMuR2VuZXJhdGlv
bkV4Y2VwdGlvbj0KIC0gdGVtcCB1c2UgdGhlIGxlZ2FjeSByb3V0ZSB0byBwcmV2ZW50IHRoaXMK
KyAgICAgICAgICAgICMgICBzZWUgYWxzbzogaHR0cHM6Ly90cmVsbG8uY29tL2MvNWQ2ajRYNXkK
KyAgICAgICAgICAgICMgICBzZWUgYWxzbzogaHR0cHM6Ly9zZW50cnkuZ2FsYXh5cHJvamVjdC5v
cmcvZ2FsYXh5L2dhbGF4eS1tPQphaW4vZ3JvdXAvMjA3NjkvZXZlbnRzLzkzNTI4ODMvCisgICAg
ICAgICAgICAndXJsJyAgICAgICAgICAgOiBsYW1iZGEgdCwgaSwgazogZ2FsYXh5LndlYi51cmxf
Zm9yKCAnaGlzdG9yeT0KX2NvbnRlbnQnLAorICAgICAgICAgICAgICAgIGhpc3RvcnlfaWQ9M0R0
LnNlY3VyaXR5LmVuY29kZV9pZCggaS5oaXN0b3J5X2lkICksIGlkPTNEdC49CnNlY3VyaXR5LmVu
Y29kZV9pZCggaS5pZCApICksCisKKyAgICAgICAgICAgICd1cmxzJyAgICAgICAgICA6IHNlbGYu
c2VyaWFsaXplX3VybHMsCisgICAgICAgICAgICAnZG93bmxvYWRfdXJsJyAgOiBsYW1iZGEgdCwg
aSwgazogZ2FsYXh5LndlYi51cmxfZm9yKCAnaGlzdG9yeT0KX2NvbnRlbnRzX2Rpc3BsYXknLAor
ICAgICAgICAgICAgICAgIGhpc3RvcnlfaWQ9M0R0LnNlY3VyaXR5LmVuY29kZV9pZCggaS5oaXN0
b3J5LmlkICksCisgICAgICAgICAgICAgICAgaGlzdG9yeV9jb250ZW50X2lkPTNEdC5zZWN1cml0
eS5lbmNvZGVfaWQoIGkuaWQgKSApLAorCisgICAgICAgICAgICAnYXBpX3R5cGUnICAgICAgOiBs
YW1iZGEgKmE6ICdmaWxlJywKKyAgICAgICAgICAgICd0eXBlJyAgICAgICAgICA6IGxhbWJkYSAq
YTogJ2ZpbGUnCiAgICAgICAgIH0pCj0yMAotICAgIGRlZiBzZXJpYWxpemVfbWV0YWRhdGEoIHNl
bGYsIHRyYW5zLCBoZGEsIGtleSApOgotICAgICAgICBub3RfaW5jbHVkZWQgPTNEIFsgJ2Ria2V5
JyBdCi0gICAgICAgIG1kID0zRCB7fQorICAgIGRlZiBzZXJpYWxpemUoIHNlbGYsIHRyYW5zLCBo
ZGEsIGtleXMgKToKKyAgICAgICAgIyBpZiAnbWV0YWRhdGEnIGlzbid0IHJlbW92ZWQgZnJvbSBr
ZXlzIGhlcmUgc2VyaWFsaXplIHdpbGwgcmV0cmllPQp2ZSB0aGUgdW4tc2VyaWFsaXphYmxlIE1l
dGFkYXRhQ29sbGVjdGlvbgorICAgICAgICAjVE9ETzogcmVtb3ZlIHRoZXNlIHdoZW4gbWV0YWRh
dGEgaXMgc3ViLW9iamVjdAorICAgICAgICBLRVlTX0hBTkRMRURfU0VQQVJBVEVMWSA9M0QgKCAn
bWV0YWRhdGEnLCApCisgICAgICAgIGxlZnRfdG9faGFuZGxlID0zRCBzZWxmLnBsdWNrX2Zyb21f
bGlzdCgga2V5cywgS0VZU19IQU5ETEVEX1NFUEFSQT0KVEVMWSApCisgICAgICAgIHNlcmlhbGl6
ZWQgPTNEIHN1cGVyKCBIREFTZXJpYWxpemVyLCBzZWxmICkuc2VyaWFsaXplKCB0cmFucywgaGRh
LD0KIGtleXMgKQorCisgICAgICAgIGlmICdtZXRhZGF0YScgaW4gbGVmdF90b19oYW5kbGU6Cisg
ICAgICAgICAgICAjIHdlIGN1cnJlbnRseSBhZGQgbWV0YWRhdGEgZGlyZWN0bHkgdG8gdGhlIGRp
Y3QgaW5zdGVhZCBvZiBhcz0KIGEgc3ViLW9iamVjdAorICAgICAgICAgICAgc2VyaWFsaXplZC51
cGRhdGUoIHNlbGYucHJlZml4ZWRfbWV0YWRhdGEoIHRyYW5zLCBoZGEgKSApCisgICAgICAgIHJl
dHVybiBzZXJpYWxpemVkCisKKyAgICBkZWYgcHJlZml4ZWRfbWV0YWRhdGEoIHNlbGYsIHRyYW5z
LCBoZGEgKToKKyAgICAgICAgIiIiCisgICAgICAgIEFkZHMgKGEgcHJlZml4ZWQgdmVyc2lvbiBv
ZikgdGhlIGhkYSBtZXRhZGF0YSB0byB0aGUgZGljdCwgcHJlZml4aT0KbmcgZWFjaCBrZXkKKyAg
ICAgICAgd2l0aCAnbWV0YWRhdGFfJy4KKyAgICAgICAgIiIiCisgICAgICAgIG1ldGFkYXRhID0z
RCBzZWxmLnNlcmlhbGl6ZV9tZXRhZGF0YSggdHJhbnMsIGhkYSwgJ21ldGFkYXRhJyApCisgICAg
ICAgICNUT0RPOiB0aGlzIGlzIGZhY3RvcmVkIG91dCBmb3IgcmVtb3ZhbCAtIG1ldGFkYXRhIHNo
b3VsZCBiZSBhIHN1Yj0KLW9iamVjdCBpbnN0ZWFkOgorICAgICAgICAjICAgaS5lLiAgJ21ldGFk
YXRhJyA6IHNlbGYuc2VyaWFsaXplX21ldGFkYXRhLAorICAgICAgICBwcmVmaXhlZCA9M0Qge30K
KyAgICAgICAgZm9yIGtleSwgdmFsIGluIG1ldGFkYXRhLml0ZW1zKCk6CisgICAgICAgICAgICBw
cmVmaXhlZF9rZXkgPTNEICdtZXRhZGF0YV8nICsga2V5CisgICAgICAgICAgICBwcmVmaXhlZFsg
cHJlZml4ZWRfa2V5IF0gPTNEIHZhbAorICAgICAgICByZXR1cm4gcHJlZml4ZWQKKworICAgIGRl
ZiBzZXJpYWxpemVfbWV0YWRhdGEoIHNlbGYsIHRyYW5zLCBoZGEsIGtleSwgZXhjbHVkZWQ9M0RO
b25lICk6CisgICAgICAgICMgZGJrZXkgaXMgYSByZXBlYXQgYWN0dWFsbHkgKG1ldGFkYXRhX2Ri
a2V5ID0zRD0zRCBnZW5vbWVfYnVpbGQpCisgICAgICAgICNleGNsdWRlZCA9M0QgWyAnZGJrZXkn
IF0gaWYgZXhjbHVkZWQgaXMgTm9uZSBlbHNlIGV4Y2x1ZGVkCisgICAgICAgIGV4Y2x1ZGVkID0z
RCBbXSBpZiBleGNsdWRlZCBpcyBOb25lIGVsc2UgZXhjbHVkZWQKKworICAgICAgICBtZXRhZGF0
YSA9M0Qge30KICAgICAgICAgZm9yIG5hbWUsIHNwZWMgaW4gaGRhLm1ldGFkYXRhLnNwZWMuaXRl
bXMoKToKLSAgICAgICAgICAgIGlmIG5hbWUgaW4gbm90X2luY2x1ZGVkOgorICAgICAgICAgICAg
aWYgbmFtZSBpbiBleGNsdWRlZDoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAg
ICAgdmFsID0zRCBoZGEubWV0YWRhdGEuZ2V0KCBuYW1lICkKICAgICAgICAgICAgICNOT1RFOiBu
byBmaWxlcwogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSggdmFsLCBtb2RlbC5NZXRhZGF0YUZp
bGUgKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICMgb25seSB3
aGVuIGV4cGxpY2l0bHkgc2V0OiBmZXRjaGluZyBmaWxlcGF0aHMgY2FuIGJlIGV4cGU9Cm5zaXZl
CisgICAgICAgICAgICAgICAgaWYgbm90IHRyYW5zLmFwcC5jb25maWcuZXhwb3NlX2RhdGFzZXRf
cGF0aDoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICB2YWwg
PTNEIHZhbC5maWxlX25hbWUKICAgICAgICAgICAgICNUT0RPOj8gcG9zc2libHkgc3BsaXQgdGhp
cyBvZmY/CiAgICAgICAgICAgICAjIElmIG5vIHZhbHVlIGZvciBtZXRhZGF0YSwgbG9vayBpbiBk
YXRhdHlwZSBmb3IgbWV0YWRhdGEuCiAgICAgICAgICAgICBlbGlmIHZhbCBpcyBOb25lIGFuZCBo
YXNhdHRyKCBoZGEuZGF0YXR5cGUsIG5hbWUgKToKICAgICAgICAgICAgICAgICB2YWwgPTNEIGdl
dGF0dHIoIGhkYS5kYXRhdHlwZSwgbmFtZSApCi0gICAgICAgICAgICBtZFsgbmFtZSBdID0zRCB2
YWwKKyAgICAgICAgICAgIG1ldGFkYXRhWyBuYW1lIF0gPTNEIHZhbAo9MjAKLSAgICAgICAgcmV0
dXJuIG1kCisgICAgICAgIHJldHVybiBtZXRhZGF0YQo9MjAKKyAgICAjIGFkZCB0byBzZXJpYWxp
emVfbWV0YWRhdGEgYWJvdmUKKyAgICBkZWYgc2VyaWFsaXplX21ldGFfZmlsZXMoIHNlbGYsIHRy
YW5zLCBoZGEsIGtleSApOgorICAgICAgICBtZXRhX2ZpbGVzID0zRCBbXQorICAgICAgICBmb3Ig
bWV0YV90eXBlIGluIGhkYS5tZXRhZGF0YS5zcGVjLmtleXMoKToKKyAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2UoIGhkYS5tZXRhZGF0YS5zcGVjWyBtZXRhX3R5cGUgXS5wYXJhbSwgZ2FsYXh5LmRh
PQp0YXR5cGVzLm1ldGFkYXRhLkZpbGVQYXJhbWV0ZXIgKToKKyAgICAgICAgICAgICAgICBtZXRh
X2ZpbGVzLmFwcGVuZCggZGljdCggZmlsZV90eXBlPTNEbWV0YV90eXBlICkgKQorICAgICAgICBy
ZXR1cm4gbWV0YV9maWxlcworCisgICAgI2RlZiBmaWxlX2luZm8gI1RPRE8KKyAgICAjVE9ETzog
YW5kIHRvIGRhdGFzZXQgaW5zdGVhZCAocGFzc2luZyB0aHJvdWdoIG9iamVjdCBzdG9yZSkKKyAg
ICBkZWYgc2VyaWFsaXplX2ZpbGVfcGF0aCggc2VsZiwgdHJhbnMsIGhkYSwga2V5ICk6CisjVE9E
TzogYWxsb3cgYWRtaW4KKyAgICAgICAgaWYgdHJhbnMuYXBwLmNvbmZpZy5leHBvc2VfZGF0YXNl
dF9wYXRoOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBoZGEuZmls
ZV9uYW1lCisgICAgICAgICAgICBleGNlcHQgb2JqZWN0c3RvcmUuT2JqZWN0Tm90Rm91bmQ6Cisg
ICAgICAgICAgICAgICAgbG9nLmV4Y2VwdGlvbiggJ29iamVjdHN0b3JlLk9iamVjdE5vdEZvdW5k
LCBIREEgJXMuJywgaGRhLj0KaWQgKQorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIHNl
cmlhbGl6ZV91cmxzKCBzZWxmLCB0cmFucywgaGRhLCBrZXkgKToKKyAgICAgICAgdXJsX2ZvciA9
M0QgZ2FsYXh5LndlYi51cmxfZm9yCisgICAgICAgIGVuY29kZWRfaWQgPTNEIHRyYW5zLnNlY3Vy
aXR5LmVuY29kZV9pZCggaGRhLmlkICkKKyAgICAgICAgdXJscyA9M0QgeworICAgICAgICAgICAg
J3B1cmdlJyAgICAgICAgIDogdXJsX2ZvciggY29udHJvbGxlcj0zRCdkYXRhc2V0JywgYWN0aW9u
PTNEJ3A9CnVyZ2VfYXN5bmMnLCBkYXRhc2V0X2lkPTNEZW5jb2RlZF9pZCApLAorICAgICAgICAg
ICAgJ2Rpc3BsYXknICAgICAgIDogdXJsX2ZvciggY29udHJvbGxlcj0zRCdkYXRhc2V0JywgYWN0
aW9uPTNEJ2Q9CmlzcGxheScsIGRhdGFzZXRfaWQ9M0RlbmNvZGVkX2lkLCBwcmV2aWV3PTNEVHJ1
ZSApLAorICAgICAgICAgICAgJ2VkaXQnICAgICAgICAgIDogdXJsX2ZvciggY29udHJvbGxlcj0z
RCdkYXRhc2V0JywgYWN0aW9uPTNEJ2U9CmRpdCcsIGRhdGFzZXRfaWQ9M0RlbmNvZGVkX2lkICks
CisgICAgICAgICAgICAnZG93bmxvYWQnICAgICAgOiB1cmxfZm9yKCBjb250cm9sbGVyPTNEJ2Rh
dGFzZXQnLCBhY3Rpb249M0QnZD0KaXNwbGF5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFzZXRfaWQ9M0RlbmNvZGVkX2lkLCB0b19leHQ9M0RoPQpkYS5leHRl
bnNpb24gKSwKKyAgICAgICAgICAgICdyZXBvcnRfZXJyb3InICA6IHVybF9mb3IoIGNvbnRyb2xs
ZXI9M0QnZGF0YXNldCcsIGFjdGlvbj0zRCdlPQpycm9ycycsIGlkPTNEZW5jb2RlZF9pZCApLAor
ICAgICAgICAgICAgJ3JlcnVuJyAgICAgICAgIDogdXJsX2ZvciggY29udHJvbGxlcj0zRCd0b29s
X3J1bm5lcicsIGFjdGlvbj0KPTNEJ3JlcnVuJywgaWQ9M0RlbmNvZGVkX2lkICksCisgICAgICAg
ICAgICAnc2hvd19wYXJhbXMnICAgOiB1cmxfZm9yKCBjb250cm9sbGVyPTNEJ2RhdGFzZXQnLCBh
Y3Rpb249M0Qncz0KaG93X3BhcmFtcycsIGRhdGFzZXRfaWQ9M0RlbmNvZGVkX2lkICksCisgICAg
ICAgICAgICAndmlzdWFsaXphdGlvbicgOiB1cmxfZm9yKCBjb250cm9sbGVyPTNEJ3Zpc3VhbGl6
YXRpb24nLCBhY3Rpbz0Kbj0zRCdpbmRleCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZD0zRGVuY29kZWRfaWQsIG1vZGVsPTNEJ0hpc3RvcnlEYT0KdGFzZXRBc3Nv
Y2lhdGlvbicgKSwKKyAgICAgICAgICAgICdtZXRhX2Rvd25sb2FkJyA6IHVybF9mb3IoIGNvbnRy
b2xsZXI9M0QnZGF0YXNldCcsIGFjdGlvbj0zRCdnPQpldF9tZXRhZGF0YV9maWxlJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhkYV9pZD0zRGVuY29kZWRfaWQsIG1l
dGFkYXRhX25hbWU9Cj0zRCcnICksCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHVybHMKKwor
CisjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9Cj0zRD0zRD0zRAorY2xhc3MgSERBRGVzZXJpYWxpemVyKCBiYXNlLk1vZGVsRGVzZXJpYWxp
emVyICk6CisgICAgIiIiCisgICAgSW50ZXJmYWNlL3NlcnZpY2Ugb2JqZWN0IGZvciB2YWxpZGF0
aW5nIGFuZCBkZXNlcmlhbGl6aW5nIGRpY3Rpb25hcmllcz0KIGludG8gaGlzdG9yaWVzLgorICAg
ICIiIgorCisgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToKKyAgICAgICAgc3VwZXIoIEhE
QURlc2VyaWFsaXplciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQorICAgICAgICBzZWxmLmhkYV9t
Z3IgPTNEIEhEQU1hbmFnZXIoIGFwcCApCisKKyAgICAjYXNzdW1lczogaW5jb21pbmcgZnJvbSBq
c29uLmxvYWRzIGFuZCBzYW5pdGl6ZWQKICAgICBkZWYgYWRkX2Rlc2VyaWFsaXplcnMoIHNlbGYg
KToKKyAgICAgICAgc3VwZXIoIEhEQURlc2VyaWFsaXplciwgc2VsZiApLmFkZF9kZXNlcmlhbGl6
ZXJzKCkKICAgICAgICAgc2VsZi5kZXNlcmlhbGl6ZXJzLnVwZGF0ZSh7CiAgICAgICAgICAgICAn
bmFtZScgICAgICAgICAgOiBzZWxmLmRlc2VyaWFsaXplX2Jhc2VzdHJpbmcsCi0gICAgICAgICAg
ICAnZ2Vub21lX2J1aWxkJyAgOiBzZWxmLmRlc2VyaWFsaXplX2dlbm9tZV9idWlsZCwKKyAgICAg
ICAgICAgICd2aXNpYmxlJyAgICAgICA6IHNlbGYuZGVzZXJpYWxpemVfYm9vbCwKKworICAgICAg
ICAgICAgIyByZW1hcHBlZAorICAgICAgICAgICAgJ2dlbm9tZV9idWlsZCcgIDogbGFtYmRhIHQs
IGksIGssIHY6IHNlbGYuZGVzZXJpYWxpemVfZ2Vub21lX2I9CnVpbGQoIHQsIGksICdkYmtleScs
IHYgKSwKKyAgICAgICAgICAgICdtaXNjX2luZm8nICAgICA6IGxhbWJkYSB0LCBpLCBrLCB2OiBz
ZWxmLmRlc2VyaWFsaXplX2Jhc2VzdHJpPQpuZyggdCwgaSwgJ2luZm8nLCB2ICksCisKKyAgICAg
ICAgICAgICMgbWl4aW46IGFubm90YXRhYmxlCisgICAgICAgICAgICAnYW5ub3RhdGlvbicgICAg
OiBzZWxmLmRlc2VyaWFsaXplX2Fubm90YXRpb24sCisgICAgICAgICAgICAjIG1peGluOiB0YWdn
YWJsZQorICAgICAgICAgICAgJ3RhZ3MnICAgICAgICAgIDogc2VsZi5kZXNlcmlhbGl6ZV90YWdz
LAorCisgICAgICAgICAgICAjIG1peGluOiBkZWxldGFibGUKICAgICAgICAgICAgICdkZWxldGVk
JyAgICAgICA6IHNlbGYuZGVzZXJpYWxpemVfYm9vbCwKKyAgICAgICAgICAgICMgc2hhcmFibGUK
ICAgICAgICAgICAgICdwdWJsaXNoZWQnICAgICA6IHNlbGYuZGVzZXJpYWxpemVfYm9vbCwKLSAg
ICAgICAgICAgICNUT0RPOiB0byBtaXhpbjogYW5ub3RhdGFibGUKLSAgICAgICAgICAgICMnYW5u
b3RhdGlvbicgICAgOiBzZWxmLmRlc2VyaWFsaXplX2Fubm90YXRpb24sCi0gICAgICAgICAgICAj
VE9ETzogdG8gbWl4aW46IHRhZ2dhYmxlCi0gICAgICAgICAgICAjJ3RhZ3MnICAgICAgICAgIDog
bGFtYmRhIHQsIGksIGssIHY6ICwKKyAgICAgICAgICAgICdpbXBvcnRhYmxlJyAgICA6IHNlbGYu
ZGVzZXJpYWxpemVfYm9vbCwKKwogICAgICAgICB9KQogICAgICAgICBzZWxmLmRlc2VyaWFsaXph
YmxlX2tleXMgPTNEIHNlbGYuZGVzZXJpYWxpemVycy5rZXlzKCkKCmRpZmYgLXIgODZkMzkzYmVl
MDNlZGJkNTU5MjY1Nzk1NzU2YWUzOTNmMDEwN2Q5YiAtciBlYjIxMGNjYzZkNzY1NDdlY2E2OWEz
Zj0KNDlkYmQ4ZGIwYTQ1ZDVhODggbGliL2dhbGF4eS9tYW5hZ2Vycy9oaXN0b3JpZXMucHkKLS0t
IGEvbGliL2dhbGF4eS9tYW5hZ2Vycy9oaXN0b3JpZXMucHkKKysrIGIvbGliL2dhbGF4eS9tYW5h
Z2Vycy9oaXN0b3JpZXMucHkKQEAgLTkwLDMxICs5MCwyOCBAQAogICAgICAgICBzdXBlciggSGlz
dG9yeU1hbmFnZXIsIHNlbGYgKS5wdXJnZSggdHJhbnMsIGhpc3RvcnksIGZsdXNoPTNEZmx1c2g9
CiwgKiprd2FyZ3MgKQo9MjAKICAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBzZXJpYWxpemF0aW9u
Ci0gICAgI1RPRE86IG1vdmUgdG8gc2VyaWFsaXplcgorICAgICNUT0RPOiBtb3ZlIHRvIHNlcmlh
bGl6ZXIgKGkuZS4gaGlzdG9yeSB3aXRoIGNvbnRlbnRzIGF0dHIpCiAgICAgZGVmIF9nZXRfaGlz
dG9yeV9kYXRhKCBzZWxmLCB0cmFucywgaGlzdG9yeSApOgogICAgICAgICAiIiIKICAgICAgICAg
UmV0dXJucyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBgYGhpc3RvcnlgYCBhbmQgYGBjb250ZW50
c2BgLCBzZXJpPQphbGl6ZWQKICAgICAgICAgaGlzdG9yeSBhbmQgYW4gYXJyYXkgb2Ygc2VyaWFs
aXplZCBoaXN0b3J5IGNvbnRlbnRzIHJlc3BlY3RpdmVseS4KICAgICAgICAgIiIiCi0gICAgICAg
ICMgaW1wb3J0IGhlcmUgcHJldmVudHMgcHJvYmxlbXMgcmVsYXRlZCB0byBjaXJjdWxhciBkZXBl
bmRlY3kgYmV0dz0KZWVuIGhpc3RvcmllcyBhbmQgaGRhcyBtYW5hZ2Vycy4KLSAgICAgICAgaW1w
b3J0IGdhbGF4eS5tYW5hZ2Vycy5oZGFzCi0gICAgICAgIGhkYV9tZ3IgPTNEIGdhbGF4eS5tYW5h
Z2Vycy5oZGFzLkhEQU1hbmFnZXIoKQorICAgICAgICAjVE9ETzogaW5zdGFudGlhdGUgaGVyZT8g
cmVhbGx5PworICAgICAgICBoaXN0b3J5X3NlcmlhbGl6ZXIgPTNEIEhpc3RvcnlTZXJpYWxpemVy
KCBzZWxmLmFwcCApCisgICAgICAgIGhkYV9zZXJpYWxpemVyID0zRCBoZGFzLkhEQVNlcmlhbGl6
ZXIoIHNlbGYuYXBwICkKICAgICAgICAgY29sbGVjdGlvbl9kaWN0aWZpZXIgPTNEIGdhbGF4eS5t
YW5hZ2Vycy5jb2xsZWN0aW9uc191dGlsLmRpY3RpZnlfPQpkYXRhc2V0X2NvbGxlY3Rpb25faW5z
dGFuY2UKPTIwCiAgICAgICAgIGhpc3RvcnlfZGljdGlvbmFyeSA9M0Qge30KICAgICAgICAgY29u
dGVudHNfZGljdGlvbmFyaWVzID0zRCBbXQogICAgICAgICB0cnk6CisgICAgICAgICAgICBoaXN0
b3J5X2RpY3Rpb25hcnkgPTNEIGhpc3Rvcnlfc2VyaWFsaXplci5zZXJpYWxpemVfdG9fdmlldygg
dD0KcmFucywgaGlzdG9yeSwgdmlldz0zRCdkZXRhaWxlZCcgKQorCiAgICAgICAgICAgICAjZm9y
IGNvbnRlbnQgaW4gaGlzdG9yeS5jb250ZW50c19pdGVyKCAqKmNvbnRlbnRzX2t3ZHMgKToKICAg
ICAgICAgICAgIGZvciBjb250ZW50IGluIGhpc3RvcnkuY29udGVudHNfaXRlciggdHlwZXM9M0Rb
ICdkYXRhc2V0JywgJ2RhPQp0YXNldF9jb2xsZWN0aW9uJyBdICk6Ci0gICAgICAgICAgICAgICAg
aGRhX2RpY3QgPTNEIHt9CisgICAgICAgICAgICAgICAgY29udGVudHNfZGljdCA9M0Qge30KPTIw
CiAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSggY29udGVudCwgdHJhbnMuYXBwLm1vZGVs
Lkhpc3RvcnlEYXRhc2V0QXNzbz0KY2lhdGlvbiApOgotICAgICAgICAgICAgICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBoZGFfZGljdCA9M0QgaGRhX21nci5nZXRfaGRhX2Rp
Y3QoIHRyYW5zLCBjb250ZW50ICkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlv
biwgZXhjOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBkb24ndCBmYWlsIGVudGlyZSBsaXN0
IGlmIGhkYSBlcnIncywgcmVjb3JkIGFuZCA9Cm1vdmUgb24KLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxvZy5leGNlcHRpb24oICdFcnJvciBib290c3RyYXBwaW5nIGhkYTogJXMnLCBleGMgKQot
ICAgICAgICAgICAgICAgICAgICAgICAgaGRhX2RpY3QgPTNEIGhkYV9tZ3IuZ2V0X2hkYV9kaWN0
X3dpdGhfZXJyb3IoIHRyYW49CnMsIGNvbnRlbnQsIHN0ciggZXhjICkgKQorICAgICAgICAgICAg
ICAgICAgICBjb250ZW50c19kaWN0ID0zRCBoZGFfc2VyaWFsaXplci5zZXJpYWxpemVfdG9fdmll
dyggdHI9CmFucywgaGRhLCB2aWV3PTNEJ2RldGFpbGVkJyApCj0yMAogICAgICAgICAgICAgICAg
IGVsaWYgaXNpbnN0YW5jZSggY29udGVudCwgdHJhbnMuYXBwLm1vZGVsLkhpc3RvcnlEYXRhc2V0
Q289CmxsZWN0aW9uQXNzb2NpYXRpb24gKToKICAgICAgICAgICAgICAgICAgICAgdHJ5OgpAQCAt
MTI0LDE3ICsxMjEsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZV90
eXBlPTNEJ2hpc3RvcnknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPTNEdHJhbnMu
c2VjdXJpdHkuZW5jb2RlX2lkKCBjb250ZW50LmlkICksCiAgICAgICAgICAgICAgICAgICAgICAg
ICApCi0gICAgICAgICAgICAgICAgICAgICAgICBoZGFfZGljdCA9M0QgY29sbGVjdGlvbl9kaWN0
aWZpZXIoIGRhdGFzZXRfY29sbGVjdD0KaW9uX2luc3RhbmNlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGVudHNfZGljdCA9M0QgY29sbGVjdGlvbl9kaWN0aWZpZXIoIGRhdGFzZXRfY289
CmxsZWN0aW9uX2luc3RhbmNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3VyaXR5
PTNEdHJhbnMuc2VjdXJpdHksIHBhcmVudD0zRGRhdGFzZXRfY289CmxsZWN0aW9uX2luc3RhbmNl
Lmhpc3RvcnksIHZpZXc9M0QiZWxlbWVudCIgKQo9MjAKICAgICAgICAgICAgICAgICAgICAgZXhj
ZXB0IEV4Y2VwdGlvbiwgZXhjOgogICAgICAgICAgICAgICAgICAgICAgICAgbG9nLmV4Y2VwdGlv
biggIkVycm9yIGluIGhpc3RvcnkgQVBJIGF0IGxpc3RpbmcgZGE9CnRhc2V0IGNvbGxlY3Rpb246
ICVzIiwgZXhjICkKICAgICAgICAgICAgICAgICAgICAgICAgICNUT0RPOiByZXR1cm4gc29tZSBk
aWN0IHdpdGggdGhlIGVycm9yCj0yMAotICAgICAgICAgICAgICAgIGNvbnRlbnRzX2RpY3Rpb25h
cmllcy5hcHBlbmQoIGhkYV9kaWN0ICkKLQotICAgICAgICAgICAgIyByZS11c2UgdGhlIGhkYXMg
YWJvdmUgdG8gZ2V0IHRoZSBoaXN0b3J5IGRhdGEuLi4KLSAgICAgICAgICAgIGhpc3RvcnlfZGlj
dGlvbmFyeSA9M0Qgc2VsZi5nZXRfaGlzdG9yeV9kaWN0KCB0cmFucywgaGlzdG9yeSwgPQpjb250
ZW50c19kaWN0aW9uYXJpZXM9M0Rjb250ZW50c19kaWN0aW9uYXJpZXMgKQorICAgICAgICAgICAg
ICAgIGNvbnRlbnRzX2RpY3Rpb25hcmllcy5hcHBlbmQoIGNvbnRlbnRzX2RpY3QgKQo9MjAKICAg
ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZXhjOgogICAgICAgICAgICAgdXNlcl9pZCA9M0Qgc3Ry
KCB0cmFucy51c2VyLmlkICkgaWYgdHJhbnMudXNlciBlbHNlICcoYW5vbnltb3U9CnMpJwpAQCAt
MjI2LDYgKzIyMCw4IEBACiAgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToKICAgICAgICAg
c3VwZXIoIEhpc3RvcnlTZXJpYWxpemVyLCBzZWxmICkuX19pbml0X18oIGFwcCApCiAgICAgICAg
IHNlbGYuaGlzdG9yeV9tZ3IgPTNEIEhpc3RvcnlNYW5hZ2VyKCBhcHAgKQorICAgICAgICBzZWxm
LmhkYV9tZ3IgPTNEIGhkYXMuSERBTWFuYWdlciggYXBwICkKKyAgICAgICAgc2VsZi5oZGFfc2Vy
aWFsaXplciA9M0QgaGRhcy5IREFTZXJpYWxpemVyKCBhcHAgKQo9MjAKICAgICAgICAgc3VtbWFy
eV92aWV3ID0zRCBbCiAgICAgICAgICAgICAnaWQnLApAQCAtMjc0LDI0ICsyNzAsNDQgQEAKICAg
ICAgICAgICAgICdjcmVhdGVfdGltZScgICA6IHNlbGYuc2VyaWFsaXplX2RhdGUsCiAgICAgICAg
ICAgICAndXBkYXRlX3RpbWUnICAgOiBzZWxmLnNlcmlhbGl6ZV9kYXRlLAogICAgICAgICAgICAg
J3VzZXJfaWQnICAgICAgIDogc2VsZi5zZXJpYWxpemVfaWQsCi0gICAgICAgICAgICAnaGRhcycg
ICAgICAgICAgOiBsYW1iZGEgdCwgaSwgazogWyB0LnNlY3VyaXR5LmVuY29kZV9pZCggaGRhLj0K
aWQgKSBmb3IgaGRhIGluIGkuZGF0YXNldHMgXSwKICAgICAgICAgICAgICdzaXplJyAgICAgICAg
ICA6IGxhbWJkYSB0LCBpLCBrOiBpbnQoIGkuZ2V0X2Rpc2tfc2l6ZSgpICksCiAgICAgICAgICAg
ICAnbmljZV9zaXplJyAgICAgOiBsYW1iZGEgdCwgaSwgazogaS5nZXRfZGlza19zaXplKCBuaWNl
X3NpemU9Cj0zRFRydWUgKSwKLSAgICAgICAgICAgICNUT0RPOiB0byBtaXhpbnM6IGFubm90YXRh
YmxlLCB0YWdnYWJsZQotICAgICAgICAgICAgJ2Fubm90YXRpb24nICAgIDogbGFtYmRhIHQsIGks
IGs6IGkuZ2V0X2l0ZW1fYW5ub3RhdGlvbl9zdHIoIHQ9Ci5zYV9zZXNzaW9uLCB0LnVzZXIsIGkg
KSwKLSAgICAgICAgICAgICd0YWdzJyAgICAgICAgICA6IGxhbWJkYSB0LCBpLCBrOiBbIHRhZy51
c2VyX3RuYW1lICsgKCAnOicgKyB0PQphZy51c2VyX3ZhbHVlIGlmIHRhZy51c2VyX3ZhbHVlIGVs
c2UgJycgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yIHRhZyBpbiBpLnRhZ3MgXSwKKworICAgICAgICAgICAgJ2Fubm90YXRpb24nICAgIDogc2Vs
Zi5zZXJpYWxpemVfYW5ub3RhdGlvbiwKKyAgICAgICAgICAgICd0YWdzJyAgICAgICAgICA6IHNl
bGYuc2VyaWFsaXplX3RhZ3MsCiAgICAgICAgICAgICAndXJsJyAgICAgICAgICAgOiBsYW1iZGEg
dCwgaSwgazogZ2FsYXh5LndlYi51cmxfZm9yKCAnaGlzdG9yeT0KJywgaWQ9M0R0LnNlY3VyaXR5
LmVuY29kZV9pZCggaS5pZCApICksCiAgICAgICAgICAgICAnY29udGVudHNfdXJsJyAgOiBsYW1i
ZGEgdCwgaSwgazoKICAgICAgICAgICAgICAgICBnYWxheHkud2ViLnVybF9mb3IoICdoaXN0b3J5
X2NvbnRlbnRzJywgaGlzdG9yeV9pZD0zRHQuc2VjPQp1cml0eS5lbmNvZGVfaWQoIGkuaWQgKSAp
LAogICAgICAgICAgICAgJ2VtcHR5JyAgICAgICAgIDogbGFtYmRhIHQsIGksIGs6IGxlbiggaS5k
YXRhc2V0cyApIDw9M0QgMCwKPTIwCisgICAgICAgICAgICAnaGRhcycgICAgICAgICAgOiBsYW1i
ZGEgdCwgaSwgazogWyB0LnNlY3VyaXR5LmVuY29kZV9pZCggaGRhLj0KaWQgKSBmb3IgaGRhIGlu
IGkuZGF0YXNldHMgXSwKICAgICAgICAgICAgICdzdGF0ZScgICAgICAgICA6IGxhbWJkYSB0LCBp
LCBrOiBzZWxmLmhpc3RvcnlfbWdyLmdldF9oaXN0b3J5PQpfc3RhdGUoIHQsIGkgKSwKICAgICAg
ICAgICAgICdzdGF0ZV9kZXRhaWxzJyA6IGxhbWJkYSB0LCBpLCBrOiBzZWxmLmhpc3RvcnlfbWdy
LmdldF9zdGF0ZV9jPQpvdW50cyggdCwgaSApLAogICAgICAgICAgICAgJ3N0YXRlX2lkcycgICAg
IDogbGFtYmRhIHQsIGksIGs6IHNlbGYuaGlzdG9yeV9tZ3IuZ2V0X3N0YXRlX2k9CmRzKCB0LCBp
ICksCisgICAgICAgICAgICAnY29udGVudHMnICAgICAgOiBzZWxmLnNlcmlhbGl6ZV9jb250ZW50
cwogICAgICAgICB9KQo9MjAKLSMjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRAorICAgIGRlZiBzZXJpYWxpemVfY29udGVu
dHMoIHNlbGYsIHRyYW5zLCBoaXN0b3J5LCBrZXkgKToKKyAgICAgICAgZm9yIGNvbnRlbnQgaW4g
aGlzdG9yeS5jb250ZW50c19pdGVyKCB0eXBlcz0zRFsgJ2RhdGFzZXQnLCAnZGF0YXNlPQp0X2Nv
bGxlY3Rpb24nIF0gKToKKyAgICAgICAgICAgIGNvbnRlbnRzX2RpY3QgPTNEIHt9CisgICAgICAg
ICAgICBpZiBpc2luc3RhbmNlKCBjb250ZW50LCB0cmFucy5hcHAubW9kZWwuSGlzdG9yeURhdGFz
ZXRBc3NvY2lhdD0KaW9uICk6CisgICAgICAgICAgICAgICAgY29udGVudHNfZGljdCA9M0Qgc2Vs
Zi5oZGFfc2VyaWFsaXplci5zZXJpYWxpemVfdG9fdmlldyggdD0KcmFucywgaGRhLCB2aWV3PTNE
J2RldGFpbGVkJyApCisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoIGNvbnRlbnQsIHRyYW5z
LmFwcC5tb2RlbC5IaXN0b3J5RGF0YXNldENvbGxlYz0KdGlvbkFzc29jaWF0aW9uICk6CisgICAg
ICAgICAgICAgICAgY29udGVudHNfZGljdCA9M0Qgc2VsZi5zZXJpYWxpemVfY29sbGVjdGlvbigg
dHJhbnMsIGNvbGxlYz0KdGlvbiApCisgICAgICAgICAgICBjb250ZW50c19kaWN0aW9uYXJpZXMu
YXBwZW5kKCBjb250ZW50c19kaWN0ICkKKworICAgIGRlZiBzZXJpYWxpemVfY29sbGVjdGlvbigg
c2VsZiwgdHJhbnMsIGNvbGxlY3Rpb24gKToKKyAgICAgICAgc2VydmljZSA9M0QgdHJhbnMuYXBw
LmRhdGFzZXRfY29sbGVjdGlvbnNfc2VydmljZQorICAgICAgICBkYXRhc2V0X2NvbGxlY3Rpb25f
aW5zdGFuY2UgPTNEIHNlcnZpY2UuZ2V0X2RhdGFzZXRfY29sbGVjdGlvbl9pbnM9CnRhbmNlKAor
ICAgICAgICAgICAgdHJhbnM9M0R0cmFucywKKyAgICAgICAgICAgIGluc3RhbmNlX3R5cGU9M0Qn
aGlzdG9yeScsCisgICAgICAgICAgICBpZD0zRHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggY29s
bGVjdGlvbi5pZCApLAorICAgICAgICApCisgICAgICAgIHJldHVybiBjb2xsZWN0aW9uX2RpY3Rp
ZmllciggZGF0YXNldF9jb2xsZWN0aW9uX2luc3RhbmNlLAorICAgICAgICAgICAgc2VjdXJpdHk9
M0R0cmFucy5zZWN1cml0eSwgcGFyZW50PTNEZGF0YXNldF9jb2xsZWN0aW9uX2luc3RhbmM9CmUu
aGlzdG9yeSwgdmlldz0zRCJlbGVtZW50IiApCisKKworIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKIGNsYXNzIEhpc3Rv
cnlEZXNlcmlhbGl6ZXIoIGJhc2UuTW9kZWxEZXNlcmlhbGl6ZXIgKToKICAgICAiIiIKICAgICBJ
bnRlcmZhY2Uvc2VydmljZSBvYmplY3QgZm9yIHZhbGlkYXRpbmcgYW5kIGRlc2VyaWFsaXppbmcg
ZGljdGlvbmFyaWVzPQogaW50byBoaXN0b3JpZXMuCgpkaWZmIC1yIDg2ZDM5M2JlZTAzZWRiZDU1
OTI2NTc5NTc1NmFlMzkzZjAxMDdkOWIgLXIgZWIyMTBjY2M2ZDc2NTQ3ZWNhNjlhM2Y9CjQ5ZGJk
OGRiMGE0NWQ1YTg4IGxpYi9nYWxheHkvbW9kZWwvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4
eS9tb2RlbC9fX2luaXRfXy5weQorKysgYi9saWIvZ2FsYXh5L21vZGVsL19faW5pdF9fLnB5CkBA
IC0xMTExLDE1ICsxMTExLDE2IEBACiAgICAgZGVmIGFjdGl2ZV9kYXRhc2V0c19jaGlsZHJlbl9h
bmRfcm9sZXMoIHNlbGYgKToKICAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgJ19hY3RpdmVf
ZGF0YXNldHNfY2hpbGRyZW5fYW5kX3JvbGVzJyk6CiAgICAgICAgICAgICBkYl9zZXNzaW9uID0z
RCBvYmplY3Rfc2Vzc2lvbiggc2VsZiApCi0gICAgICAgICAgICBxdWVyeSA9M0QgZGJfc2Vzc2lv
bi5xdWVyeSggSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbiApLmZpbHRlcj0KKCBIaXN0b3J5RGF0
YXNldEFzc29jaWF0aW9uLnRhYmxlLmMuaGlzdG9yeV9pZCA9M0Q9M0Qgc2VsZi5pZCApLiBcCi0g
ICAgICAgICAgICAgICAgZmlsdGVyKCBub3RfKCBIaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uLmRl
bGV0ZWQgKSApLiBcCi0gICAgICAgICAgICAgICAgb3JkZXJfYnkoIEhpc3RvcnlEYXRhc2V0QXNz
b2NpYXRpb24udGFibGUuYy5oaWQuYXNjKCkgKS4gXAotICAgICAgICAgICAgICAgIG9wdGlvbnMo
Ci0gICAgICAgICAgICAgICAgICAgIGpvaW5lZGxvYWQoImNoaWxkcmVuIiksCi0gICAgICAgICAg
ICAgICAgICAgIGpvaW5lZGxvYWQoImRhdGFzZXQiKSwKLSAgICAgICAgICAgICAgICAgICAgam9p
bmVkbG9hZCgiZGF0YXNldC5hY3Rpb25zIiksCi0gICAgICAgICAgICAgICAgICAgIGpvaW5lZGxv
YWQoImRhdGFzZXQuYWN0aW9ucy5yb2xlIiksCi0gICAgICAgICAgICAgICAgKQorICAgICAgICAg
ICAgcXVlcnkgPTNEICggZGJfc2Vzc2lvbi5xdWVyeSggSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlv
biApCisgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKCBIaXN0b3J5RGF0YXNldEFzc29j
aWF0aW9uLnRhYmxlLmMuaGlzdG9yeT0KX2lkID0zRD0zRCBzZWxmLmlkICkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC5maWx0ZXIoIG5vdF8oIEhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb24uZGVs
ZXRlZCApPQogKQorICAgICAgICAgICAgICAgICAgICAgICAgLm9yZGVyX2J5KCBIaXN0b3J5RGF0
YXNldEFzc29jaWF0aW9uLnRhYmxlLmMuaGlkLmE9CnNjKCkgKQorICAgICAgICAgICAgICAgICAg
ICAgICAgLm9wdGlvbnMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbmVkbG9hZCgi
Y2hpbGRyZW4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqb2luZWRsb2FkKCJkYXRh
c2V0IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbmVkbG9hZCgiZGF0YXNldC5h
Y3Rpb25zIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9pbmVkbG9hZCgiZGF0YXNl
dC5hY3Rpb25zLnJvbGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAg
ICBzZWxmLl9hY3RpdmVfZGF0YXNldHNfY2hpbGRyZW5fYW5kX3JvbGVzID0zRCBxdWVyeS5hbGwo
KQogICAgICAgICByZXR1cm4gc2VsZi5fYWN0aXZlX2RhdGFzZXRzX2NoaWxkcmVuX2FuZF9yb2xl
cwo9MjAKQEAgLTE1NTEsNyArMTU1Miw5IEBACiAgICAgZGVmIGRhdGF0eXBlKCBzZWxmICk6CiAg
ICAgICAgIHJldHVybiBkYXRhdHlwZXNfcmVnaXN0cnkuZ2V0X2RhdGF0eXBlX2J5X2V4dGVuc2lv
biggc2VsZi5leHRlbnNpbz0KbiApCiAgICAgZGVmIGdldF9tZXRhZGF0YSggc2VsZiApOgotICAg
ICAgICBpZiBub3QgaGFzYXR0ciggc2VsZiwgJ19tZXRhZGF0YV9jb2xsZWN0aW9uJyApIG9yIHNl
bGYuX21ldGFkYXRhX2M9Cm9sbGVjdGlvbi5wYXJlbnQgIT0zRCBzZWxmOiAjdXNpbmcgd2Vha3Jl
ZiB0byBzdG9yZSBwYXJlbnQgKHRvIHByZXZlbnQgY2lyYz0KIHJlZiksIGRvZXMgYSBTZXNzaW9u
LmNsZWFyKCkgY2F1c2UgcGFyZW50IHRvIGJlIGludmFsaWRhdGVkLCB3aGlsZSBzdGlsbCBjPQpv
cHlpbmcgb3ZlciB0aGlzIG5vbi1kYXRhYmFzZSBhdHRyaWJ1dGU/CisgICAgICAgICMgdXNpbmcg
d2Vha3JlZiB0byBzdG9yZSBwYXJlbnQgKHRvIHByZXZlbnQgY2lyYyByZWYpLAorICAgICAgICAj
ICAgZG9lcyBhIFNlc3Npb24uY2xlYXIoKSBjYXVzZSBwYXJlbnQgdG8gYmUgaW52YWxpZGF0ZWQs
IHdoaWxlIHM9CnRpbGwgY29weWluZyBvdmVyIHRoaXMgbm9uLWRhdGFiYXNlIGF0dHJpYnV0ZT8K
KyAgICAgICAgaWYgbm90IGhhc2F0dHIoIHNlbGYsICdfbWV0YWRhdGFfY29sbGVjdGlvbicgKSBv
ciBzZWxmLl9tZXRhZGF0YV9jPQpvbGxlY3Rpb24ucGFyZW50ICE9M0Qgc2VsZjoKICAgICAgICAg
ICAgIHNlbGYuX21ldGFkYXRhX2NvbGxlY3Rpb24gPTNEIE1ldGFkYXRhQ29sbGVjdGlvbiggc2Vs
ZiApCiAgICAgICAgIHJldHVybiBzZWxmLl9tZXRhZGF0YV9jb2xsZWN0aW9uCiAgICAgZGVmIHNl
dF9tZXRhZGF0YSggc2VsZiwgYnVuY2ggKToKQEAgLTIwNzgsNiArMjA4MSw3IEBACiAgICAgICAg
ICAgICBydmFsWydleHRlbmRlZF9tZXRhZGF0YSddID0zRCBoZGEuZXh0ZW5kZWRfbWV0YWRhdGEu
ZGF0YQo9MjAKICAgICAgICAgcnZhbFsgJ3BlZWsnIF0gPTNEIHRvX3VuaWNvZGUoIGhkYS5kaXNw
bGF5X3BlZWsoKSApCisKICAgICAgICAgZm9yIG5hbWUsIHNwZWMgaW4gaGRhLm1ldGFkYXRhLnNw
ZWMuaXRlbXMoKToKICAgICAgICAgICAgIHZhbCA9M0QgaGRhLm1ldGFkYXRhLmdldCggbmFtZSAp
CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKCB2YWwsIE1ldGFkYXRhRmlsZSApOgoKZGlmZiAt
ciA4NmQzOTNiZWUwM2VkYmQ1NTkyNjU3OTU3NTZhZTM5M2YwMTA3ZDliIC1yIGViMjEwY2NjNmQ3
NjU0N2VjYTY5YTNmPQo0OWRiZDhkYjBhNDVkNWE4OCBsaWIvZ2FsYXh5L3dlYi9iYXNlL2NvbnRy
b2xsZXIucHkKLS0tIGEvbGliL2dhbGF4eS93ZWIvYmFzZS9jb250cm9sbGVyLnB5CisrKyBiL2xp
Yi9nYWxheHkvd2ViL2Jhc2UvY29udHJvbGxlci5weQpAQCAtMTA4LDE3ICsxMDgsNiBAQAogICAg
ICAgICAiIiIKICAgICAgICAgcmV0dXJuIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9hbGxfaWRzKCBy
dmFsLCByZWN1cnNpdmU9M0RyZWN1cnNpdmUgKQo9MjAKLSAgICAjIGluY29taW5nIHBhcmFtIHZh
bGlkYXRpb24KLSAgICAjIHNob3VsZCBwcm9iYWJseSBiZSBpbiBzZXAuIHNlcmlhbGl6ZXIgY2xh
c3Mvb2JqZWN0IF91c2VkXyBieSBjb250cm9sPQpsZXIKLSAgICBkZWYgdmFsaWRhdGVfYW5kX3Nh
bml0aXplX2Jhc2VzdHJpbmcoIHNlbGYsIGtleSwgdmFsICk6Ci0gICAgICAgIHJldHVybiB2YWxp
ZGF0aW9uLnZhbGlkYXRlX2FuZF9zYW5pdGl6ZV9iYXNlc3RyaW5nKCBrZXksIHZhbCApCi0KLSAg
ICBkZWYgdmFsaWRhdGVfYW5kX3Nhbml0aXplX2Jhc2VzdHJpbmdfbGlzdCggc2VsZiwga2V5LCB2
YWwgKToKLSAgICAgICAgcmV0dXJuIHZhbGlkYXRpb24udmFsaWRhdGVfYW5kX3Nhbml0aXplX2Jh
c2VzdHJpbmdfbGlzdCgga2V5LCB2YWwgKQotCi0gICAgZGVmIHZhbGlkYXRlX2Jvb2xlYW4oIHNl
bGYsIGtleSwgdmFsICk6Ci0gICAgICAgIHJldHVybiB2YWxpZGF0aW9uLnZhbGlkYXRlX2Jvb2xl
YW4oIGtleSwgdmFsICkKLQo9MjAKIFJvb3QgPTNEIEJhc2VDb250cm9sbGVyCj0yMApAQCAtNDc5
LDg4ICs0NjgsNiBAQAogICAgICAgICAgICAgcmV0dXJuIGRhdGFzZXQuY29udmVyc2lvbl9tZXNz
YWdlcy5QRU5ESU5HCiAgICAgICAgIHJldHVybiBOb25lCj0yMAotICAgIGRlZiBnZXRfaGRhX2Rp
Y3QoIHNlbGYsIHRyYW5zLCBoZGEgKToKLSAgICAgICAgIiIiUmV0dXJuIGZ1bGwgZGV0YWlscyBv
ZiB0aGlzIEhEQSBpbiBkaWN0aW9uYXJ5IGZvcm0uCi0gICAgICAgICIiIgotICAgICAgICAjcHJl
Y29uZGl0aW9uOiB0aGUgdXNlcidzIGFjY2VzcyB0byB0aGlzIGhkYSBoYXMgYWxyZWFkeSBiZWVu
IGNoZWM9CmtlZAotICAgICAgICAjVE9ETzo/PyBwb3N0Y29uZGl0aW9uOiBhbGwgaWRzIGFyZSBl
bmNvZGVkIChpcyB0aGlzIHJlYWxseSB3aGF0IHc9CmUgd2FudCBhdCB0aGlzIGxldmVsPykKLSAg
ICAgICAgZXhwb3NlX2RhdGFzZXRfcGF0aCA9M0QgdHJhbnMudXNlcl9pc19hZG1pbigpIG9yIHRy
YW5zLmFwcC5jb25maWcuPQpleHBvc2VfZGF0YXNldF9wYXRoCi0gICAgICAgIGhkYV9kaWN0ID0z
RCBoZGEudG9fZGljdCggdmlldz0zRCdlbGVtZW50JywgZXhwb3NlX2RhdGFzZXRfcGF0aD0zRD0K
ZXhwb3NlX2RhdGFzZXRfcGF0aCApCi0gICAgICAgIGhkYV9kaWN0WyAnYXBpX3R5cGUnIF0gPTNE
ICJmaWxlIgotCi0gICAgICAgICMgQWRkIGFkZGl0aW9uYWwgYXR0cmlidXRlcyB0aGF0IGRlcGVu
ZCBvbiB0cmFucyBjYW4gaGVuY2UgbXVzdCBiZT0KIGFkZGVkIGhlcmUgcmF0aGVyIHRoYW4gYXQg
dGhlIG1vZGVsIGxldmVsLgotICAgICAgICBjYW5fYWNjZXNzX2hkYSA9M0QgdHJhbnMuYXBwLnNl
Y3VyaXR5X2FnZW50LmNhbl9hY2Nlc3NfZGF0YXNldCggdHI9CmFucy5nZXRfY3VycmVudF91c2Vy
X3JvbGVzKCksIGhkYS5kYXRhc2V0ICkKLSAgICAgICAgY2FuX2FjY2Vzc19oZGEgPTNEICggdHJh
bnMudXNlcl9pc19hZG1pbigpIG9yIGNhbl9hY2Nlc3NfaGRhICkKLSAgICAgICAgaWYgbm90IGNh
bl9hY2Nlc3NfaGRhOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X2luYWNjZXNzaWJsZV9o
ZGFfZGljdCggdHJhbnMsIGhkYSApCi0gICAgICAgIGhkYV9kaWN0WyAnYWNjZXNzaWJsZScgXSA9
M0QgVHJ1ZQotCi0gICAgICAgICNUT0RPOiBJJ20gdW5jbGVhciBhcyB0byB3aGljaCBhY2Nlc3Mg
cGF0dGVybiBpcyByaWdodAotICAgICAgICBoZGFfZGljdFsgJ2Fubm90YXRpb24nIF0gPTNEIGhk
YS5nZXRfaXRlbV9hbm5vdGF0aW9uX3N0ciggdHJhbnMuc2E9Cl9zZXNzaW9uLCB0cmFucy51c2Vy
LCBoZGEgKQotICAgICAgICAjYW5ub3RhdGlvbiA9M0QgZ2V0YXR0ciggaGRhLCAnYW5ub3RhdGlv
bicsIGhkYS5nZXRfaXRlbV9hbm5vdGF0aW89Cm5fc3RyKCB0cmFucy5zYV9zZXNzaW9uLCB0cmFu
cy51c2VyLCBoZGEgKSApCi0KLSAgICAgICAgIyAtLS0tIHJldHVybiBoZXJlIGlmIGRlbGV0ZWQg
QU5EIHB1cmdlZCBPUiBjYW4ndCBhY2Nlc3MKLSAgICAgICAgcHVyZ2VkID0zRCAoIGhkYS5wdXJn
ZWQgb3IgaGRhLmRhdGFzZXQucHVyZ2VkICkKLSAgICAgICAgaWYgaGRhLmRlbGV0ZWQgYW5kIHB1
cmdlZDoKLSAgICAgICAgICAgICNUT0RPOiB0b19kaWN0IHNob3VsZCByZWFsbHkgZ28gQUZURVIg
dGhpcyAtIG9ubHkgc3VtbWFyeSBkYXRhCi0gICAgICAgICAgICByZXR1cm4gdHJhbnMuc2VjdXJp
dHkuZW5jb2RlX2RpY3RfaWRzKCBoZGFfZGljdCApCi0KLSAgICAgICAgaWYgZXhwb3NlX2RhdGFz
ZXRfcGF0aDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBoZGFfZGljdFsgJ2Zp
bGVfbmFtZScgXSA9M0QgaGRhLmZpbGVfbmFtZQotICAgICAgICAgICAgZXhjZXB0IG9iamVjdHN0
b3JlLk9iamVjdE5vdEZvdW5kOgotICAgICAgICAgICAgICAgIGxvZy5leGNlcHRpb24oICdvYmpl
Y3RzdG9yZS5PYmplY3ROb3RGb3VuZCwgSERBICVzLicsIGhkYS49CmlkICkKLQotICAgICAgICBo
ZGFfZGljdFsgJ2Rvd25sb2FkX3VybCcgXSA9M0QgdXJsX2ZvciggJ2hpc3RvcnlfY29udGVudHNf
ZGlzcGxheScsCi0gICAgICAgICAgICBoaXN0b3J5X2lkID0zRCB0cmFucy5zZWN1cml0eS5lbmNv
ZGVfaWQoIGhkYS5oaXN0b3J5LmlkICksCi0gICAgICAgICAgICBoaXN0b3J5X2NvbnRlbnRfaWQg
PTNEIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggaGRhLmlkICkgKQotCi0gICAgICAgICMgcmVz
dWJtaXR0ZWQgaXMgbm90IGEgcmVhbCBzdGF0ZQotICAgICAgICBoZGFfZGljdFsgJ3Jlc3VibWl0
dGVkJyBdID0zRCBGYWxzZQotICAgICAgICBpZiBoZGEuc3RhdGUgPTNEPTNEIHRyYW5zLmFwcC5t
b2RlbC5EYXRhc2V0LnN0YXRlcy5SRVNVQk1JVFRFRDoKLSAgICAgICAgICAgIGhkYV9kaWN0WyAn
c3RhdGUnIF0gPTNEIGhkYS5kYXRhc2V0LnN0YXRlCi0gICAgICAgICAgICBoZGFfZGljdFsgJ3Jl
c3VibWl0dGVkJyBdID0zRCBUcnVlCi0KLSAgICAgICAgIyBpbmRlY2VzLCBhc3NvYy4gbWV0YWRh
dGEgZmlsZXMsIGV0Yy4KLSAgICAgICAgbWV0YV9maWxlcyA9M0QgW10KLSAgICAgICAgZm9yIG1l
dGFfdHlwZSBpbiBoZGEubWV0YWRhdGEuc3BlYy5rZXlzKCk6Ci0gICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKCBoZGEubWV0YWRhdGEuc3BlY1sgbWV0YV90eXBlIF0ucGFyYW0sIEZpbGVQYXJhbT0K
ZXRlciApOgotICAgICAgICAgICAgICAgIG1ldGFfZmlsZXMuYXBwZW5kKCBkaWN0KCBmaWxlX3R5
cGU9M0RtZXRhX3R5cGUgKSApCi0gICAgICAgIGlmIG1ldGFfZmlsZXM6Ci0gICAgICAgICAgICBo
ZGFfZGljdFsgJ21ldGFfZmlsZXMnIF0gPTNEIG1ldGFfZmlsZXMKLQotICAgICAgICAjIGN1cnJl
bnRseSwgdGhlIHZpeiByZWcgaXMgb3B0aW9uYWwgLSBoYW5kbGUgb24vb2ZmCi0gICAgICAgIGlm
IHRyYW5zLmFwcC52aXN1YWxpemF0aW9uc19yZWdpc3RyeToKLSAgICAgICAgICAgIGhkYV9kaWN0
WyAndmlzdWFsaXphdGlvbnMnIF0gPTNEIHRyYW5zLmFwcC52aXN1YWxpemF0aW9uc19yZWdpPQpz
dHJ5LmdldF92aXN1YWxpemF0aW9ucyggdHJhbnMsIGhkYSApCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBoZGFfZGljdFsgJ3Zpc3VhbGl6YXRpb25zJyBdID0zRCBoZGEuZ2V0X3Zpc3VhbGl6
YXRpb25zKCkKLSAgICAgICAgI1RPRE86IGl0IG1heSBhbHNvIGJlIHdpc2VyIHRvIHJlbW92ZSBm
cm9tIGhlcmUgYW5kIGFkZCBhcyBBUEkgY2FsPQpsIHRoYXQgbG9hZHMgdGhlIHZpc3VhbGl6YXRp
b25zCi0gICAgICAgICMgICAgICAgICAgIHdoZW4gdGhlIHZpc3VhbGl6YXRpb25zIGJ1dHRvbiBp
cyBjbGlja2VkIChpbnN0ZWFkIG9mID0KcHJlbG9hZGluZy9wcmUtY2hlY2tpbmcpCi0KLSAgICAg
ICAgcmV0dXJuIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9kaWN0X2lkcyggaGRhX2RpY3QgKQotCi0g
ICAgZGVmIGdldF9pbmFjY2Vzc2libGVfaGRhX2RpY3QoIHNlbGYsIHRyYW5zLCBoZGEgKToKLSAg
ICAgICAgcmV0dXJuIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9kaWN0X2lkcyh7Ci0gICAgICAgICAg
ICAnaWQnICAgICAgICA6IGhkYS5pZCwKLSAgICAgICAgICAgICdoaXN0b3J5X2lkJzogaGRhLmhp
c3RvcnkuaWQsCi0gICAgICAgICAgICAnaGlkJyAgICAgICA6IGhkYS5oaWQsCi0gICAgICAgICAg
ICAnbmFtZScgICAgICA6IGhkYS5uYW1lLAotICAgICAgICAgICAgJ3N0YXRlJyAgICAgOiBoZGEu
c3RhdGUsCi0gICAgICAgICAgICAnZGVsZXRlZCcgICA6IGhkYS5kZWxldGVkLAotICAgICAgICAg
ICAgJ3Zpc2libGUnICAgOiBoZGEudmlzaWJsZSwKLSAgICAgICAgICAgICdhY2Nlc3NpYmxlJzog
RmFsc2UKLSAgICAgICAgfSkKLQotICAgIGRlZiBnZXRfaGRhX2RpY3Rfd2l0aF9lcnJvciggc2Vs
ZiwgdHJhbnMsIGhkYT0zRE5vbmUsIGhpc3RvcnlfaWQ9M0ROb249CmUsIGlkPTNETm9uZSwgZXJy
b3JfbXNnPTNEJ0Vycm9yJyApOgotICAgICAgICByZXR1cm4gdHJhbnMuc2VjdXJpdHkuZW5jb2Rl
X2RpY3RfaWRzKHsKLSAgICAgICAgICAgICdpZCcgICAgICAgIDogaGRhLmlkIGlmIGhkYSBlbHNl
IGlkLAotICAgICAgICAgICAgJ2hpc3RvcnlfaWQnOiBoZGEuaGlzdG9yeS5pZCBpZiBoZGEgZWxz
ZSBoaXN0b3J5X2lkLAotICAgICAgICAgICAgJ2hpZCcgICAgICAgOiBoZGEuaGlkIGlmIGhkYSBl
bHNlICcodW5rbm93biknLAotICAgICAgICAgICAgJ25hbWUnICAgICAgOiBoZGEubmFtZSBpZiBo
ZGEgZWxzZSAnKHVua25vd24pJywKLSAgICAgICAgICAgICdlcnJvcicgICAgIDogZXJyb3JfbXNn
LAotICAgICAgICAgICAgJ3N0YXRlJyAgICAgOiB0cmFucy5tb2RlbC5EYXRhc2V0LnN0YXRlcy5O
RVcKLSAgICAgICAgfSkKLQogICAgIGRlZiBnZXRfZGlzcGxheV9hcHBzKCBzZWxmLCB0cmFucywg
aGRhICk6CiAgICAgICAgIGRpc3BsYXlfYXBwcyA9M0QgW10KICAgICAgICAgZm9yIGRpc3BsYXlf
YXBwIGluIGhkYS5nZXRfZGlzcGxheV9hcHBsaWNhdGlvbnMoIHRyYW5zICkuaXRlcnZhbHVlPQpz
KCk6CgpkaWZmIC1yIDg2ZDM5M2JlZTAzZWRiZDU1OTI2NTc5NTc1NmFlMzkzZjAxMDdkOWIgLXIg
ZWIyMTBjY2M2ZDc2NTQ3ZWNhNjlhM2Y9CjQ5ZGJkOGRiMGE0NWQ1YTg4IGxpYi9nYWxheHkvd2Vi
YXBwcy9nYWxheHkvYXBpL2RhdGFzZXRzLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxh
eHkvYXBpL2RhdGFzZXRzLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2Rh
dGFzZXRzLnB5CkBAIC0yLDE4ICsyLDM1IEBACiBBUEkgb3BlcmF0aW9ucyBvbiB0aGUgY29udGVu
dHMgb2YgYSBoaXN0b3J5IGRhdGFzZXQuCiAiIiIKIGZyb20gZ2FsYXh5IGltcG9ydCB3ZWIKLWZy
b20gZ2FsYXh5LnZpc3VhbGl6YXRpb24uZGF0YV9wcm92aWRlcnMuZ2Vub21lIGltcG9ydCBGZWF0
dXJlTG9jYXRpb25JbmRlPQp4RGF0YVByb3ZpZGVyLCBTYW1EYXRhUHJvdmlkZXIsIEJhbURhdGFQ
cm92aWRlcgotZnJvbSBnYWxheHkud2ViLmJhc2UuY29udHJvbGxlciBpbXBvcnQgQmFzZUFQSUNv
bnRyb2xsZXIsIFVzZXNWaXN1YWxpemF0aW89Cm5NaXhpbiwgVXNlc0hpc3RvcnlEYXRhc2V0QXNz
b2NpYXRpb25NaXhpbgorZnJvbSBnYWxheHkud2ViLmZyYW1ld29yay5oZWxwZXJzIGltcG9ydCBp
c190cnVlCitmcm9tIGdhbGF4eSBpbXBvcnQgdXRpbAorCitmcm9tIGdhbGF4eS52aXN1YWxpemF0
aW9uLmRhdGFfcHJvdmlkZXJzLmdlbm9tZSBpbXBvcnQgRmVhdHVyZUxvY2F0aW9uSW5kZT0KeERh
dGFQcm92aWRlcgorZnJvbSBnYWxheHkudmlzdWFsaXphdGlvbi5kYXRhX3Byb3ZpZGVycy5nZW5v
bWUgaW1wb3J0IFNhbURhdGFQcm92aWRlcgorZnJvbSBnYWxheHkudmlzdWFsaXphdGlvbi5kYXRh
X3Byb3ZpZGVycy5nZW5vbWUgaW1wb3J0IEJhbURhdGFQcm92aWRlcgorZnJvbSBnYWxheHkuZGF0
YXR5cGVzIGltcG9ydCBkYXRhcHJvdmlkZXJzCisKK2Zyb20gZ2FsYXh5LndlYi5iYXNlLmNvbnRy
b2xsZXIgaW1wb3J0IEJhc2VBUElDb250cm9sbGVyCitmcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250
cm9sbGVyIGltcG9ydCBVc2VzVmlzdWFsaXphdGlvbk1peGluCitmcm9tIGdhbGF4eS53ZWIuYmFz
ZS5jb250cm9sbGVyIGltcG9ydCBVc2VzSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbk1peGluCiBm
cm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9sbGVyIGltcG9ydCBVc2VzSGlzdG9yeU1peGluCi1m
cm9tIGdhbGF4eS53ZWIuZnJhbWV3b3JrLmhlbHBlcnMgaW1wb3J0IGlzX3RydWUKLWZyb20gZ2Fs
YXh5LmRhdGF0eXBlcyBpbXBvcnQgZGF0YXByb3ZpZGVycwotZnJvbSBnYWxheHkudXRpbCBpbXBv
cnQgc3RyaW5nX2FzX2Jvb2xfb3Jfbm9uZQorZnJvbSBnYWxheHkgaW1wb3J0IG1hbmFnZXJzCisK
IGltcG9ydCBsb2dnaW5nCiBsb2cgPTNEIGxvZ2dpbmcuZ2V0TG9nZ2VyKCBfX25hbWVfXyApCj0y
MAorCiBjbGFzcyBEYXRhc2V0c0NvbnRyb2xsZXIoIEJhc2VBUElDb250cm9sbGVyLCBVc2VzVmlz
dWFsaXphdGlvbk1peGluLCBVc2VzSD0KaXN0b3J5TWl4aW4sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFVzZXNIaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uTWl4aW4gKToKPTIwCisgICAgZGVm
IF9faW5pdF9fKCBzZWxmLCBhcHAgKToKKyAgICAgICAgc3VwZXIoIERhdGFzZXRzQ29udHJvbGxl
ciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQorICAgICAgICBzZWxmLm1ncnMgPTNEIHV0aWwuYnVu
Y2guQnVuY2goCisgICAgICAgICAgICBoaXN0b3JpZXM9M0RtYW5hZ2Vycy5oaXN0b3JpZXMuSGlz
dG9yeU1hbmFnZXIoIGFwcCApLAorICAgICAgICAgICAgaGRhcz0zRG1hbmFnZXJzLmhkYXMuSERB
TWFuYWdlciggYXBwICkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmhkYV9zZXJpYWxpemVyID0z
RCBtYW5hZ2Vycy5oZGFzLkhEQVNlcmlhbGl6ZXIoIHNlbGYuYXBwICkKKwogICAgIEB3ZWIuZXhw
b3NlX2FwaQogICAgIGRlZiBpbmRleCggc2VsZiwgdHJhbnMsICoqa3dkICk6CiAgICAgICAgICIi
IgpAQCAtNTUsMTAgKzcyLDcgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAg
IyBEZWZhdWx0OiByZXR1cm4gZGF0YXNldCBhcyBkaWN0LgogICAgICAgICAgICAgICAgIGlmIGhk
YV9sZGRhID0zRD0zRCAnaGRhJzoKLSAgICAgICAgICAgICAgICAgICAgcnZhbCA9M0Qgc2VsZi5n
ZXRfaGRhX2RpY3QoIHRyYW5zLCBkYXRhc2V0ICkKLSAgICAgICAgICAgICAgICAgICAgIyBhZGQg
dGhlc2UgdG8gbWF0Y2ggYXBpL2hpc3RvcnlfY29udGVudHMucHksIHNob3cKLSAgICAgICAgICAg
ICAgICAgICAgcnZhbFsgJ2Rpc3BsYXlfdHlwZXMnIF0gPTNEIHNlbGYuZ2V0X29sZF9kaXNwbGF5
X2FwcGxpPQpjYXRpb25zKCB0cmFucywgZGF0YXNldCApCi0gICAgICAgICAgICAgICAgICAgIHJ2
YWxbICdkaXNwbGF5X2FwcHMnIF0gPTNEIHNlbGYuZ2V0X2Rpc3BsYXlfYXBwcyggdHJhbj0Kcywg
ZGF0YXNldCApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmhkYV9zZXJpYWxpemVy
LnNlcmlhbGl6ZV90b192aWV3KCB0cmFucywgaD0KZGEsIHZpZXc9M0Rrd2QuZ2V0KCAndmlldycs
ICdkZXRhaWxlZCcgKSApCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAg
ICAgcnZhbCA9M0QgZGF0YXNldC50b19kaWN0KCkKPTIwCkBAIC0yNjcsNyArMjgxLDcgQEAKICAg
ICAgICAgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlIHdpdGhvdXQgd2FybmluZy4gR2VuZXJhbGx5
LCBkYXRhIHNob3VsZCBiPQplIHByb2Nlc3NlZCBieSBpdHMKICAgICAgICAgZGF0YXR5cGUgcHJp
b3IgdG8gZGlzcGxheSAodGhlIGRlZnVsdCBpZiByYXcgaXMgdW5zcGVjaWZpZWQgb3IgZXhwPQps
aWNpdGx5IGZhbHNlLgogICAgICAgICAiIiIKLSAgICAgICAgcmF3ID0zRCBzdHJpbmdfYXNfYm9v
bF9vcl9ub25lKCByYXcgKQorICAgICAgICByYXcgPTNEIHV0aWwuc3RyaW5nX2FzX2Jvb2xfb3Jf
bm9uZSggcmF3ICkKICAgICAgICAgcnZhbCA9M0QgJycKICAgICAgICAgdHJ5OgogICAgICAgICAg
ICAgaGRhID0zRCBzZWxmLmdldF9oaXN0b3J5X2RhdGFzZXRfYXNzb2NpYXRpb25fZnJvbV9pZHMo
IHRyYW5zLCA9Cmhpc3RvcnlfY29udGVudF9pZCwgaGlzdG9yeV9pZCApCgpkaWZmIC1yIDg2ZDM5
M2JlZTAzZWRiZDU1OTI2NTc5NTc1NmFlMzkzZjAxMDdkOWIgLXIgZWIyMTBjY2M2ZDc2NTQ3ZWNh
NjlhM2Y9CjQ5ZGJkOGRiMGE0NWQ1YTg4IGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2hp
c3RvcnlfY29udGVudHMucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvaGlz
dG9yeV9jb250ZW50cy5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9oaXN0
b3J5X2NvbnRlbnRzLnB5CkBAIC0xOCw3ICsxOCwxMCBAQAo9MjAKIGZyb20gZ2FsYXh5Lm1hbmFn
ZXJzIGltcG9ydCBoaXN0b3JpZXMKIGZyb20gZ2FsYXh5Lm1hbmFnZXJzIGltcG9ydCBoZGFzCi1m
cm9tIGdhbGF4eS5tYW5hZ2Vycy5jb2xsZWN0aW9uc191dGlsIGltcG9ydCBhcGlfcGF5bG9hZF90
b19jcmVhdGVfcGFyYW1zLD0KIGRpY3RpZnlfZGF0YXNldF9jb2xsZWN0aW9uX2luc3RhbmNlCitm
cm9tIGdhbGF4eS5tYW5hZ2Vycy5jb2xsZWN0aW9uc191dGlsIGltcG9ydCBhcGlfcGF5bG9hZF90
b19jcmVhdGVfcGFyYW1zCitmcm9tIGdhbGF4eS5tYW5hZ2Vycy5jb2xsZWN0aW9uc191dGlsIGlt
cG9ydCBkaWN0aWZ5X2RhdGFzZXRfY29sbGVjdGlvbl9pbj0Kc3RhbmNlCitmcm9tIGdhbGF4eS51
dGlsIGltcG9ydCB2YWxpZGF0aW9uCisKPTIwCiBpbXBvcnQgbG9nZ2luZwogbG9nID0zRCBsb2dn
aW5nLmdldExvZ2dlciggX19uYW1lX18gKQpAQCAtMzMsNiArMzYsOCBAQAogICAgICAgICAgICAg
aGlzdG9yaWVzPTNEaGlzdG9yaWVzLkhpc3RvcnlNYW5hZ2VyKCBhcHAgKSwKICAgICAgICAgICAg
IGhkYXM9M0RoZGFzLkhEQU1hbmFnZXIoIGFwcCApCiAgICAgICAgICkKKyAgICAgICAgc2VsZi5o
ZGFfc2VyaWFsaXplciA9M0QgaGRhcy5IREFTZXJpYWxpemVyKCBhcHAgKQorICAgICAgICBzZWxm
LmhkYV9kZXNlcmlhbGl6ZXIgPTNEIGhkYXMuSERBRGVzZXJpYWxpemVyKCBhcHAgKQo9MjAKICAg
ICBkZWYgX2RlY29kZV9pZCggc2VsZiwgdHJhbnMsIGlkICk6CiAgICAgICAgIHRyeToKQEAgLTY1
LDkgKzcwLDYgQEAKPTIwCiAgICAgICAgIDpydHlwZTogICAgIGxpc3QKICAgICAgICAgOnJldHVy
bnM6ICAgZGljdGlvbmFyaWVzIGNvbnRhaW5pbmcgc3VtbWFyeSBvciBkZXRhaWxlZCBIREEgaW5m
b3JtPQphdGlvbgotICAgICAgICAuLiBzZWVhbHNvOjoKLSAgICAgICAgICAgIDpmdW5jOmBfc3Vt
bWFyeV9oZGFfZGljdGAgYW5kCi0gICAgICAgICAgICA6ZnVuYzpgZ2FsYXh5LndlYi5iYXNlLmNv
bnRyb2xsZXIuVXNlc0hpc3RvcnlEYXRhc2V0QXNzb2NpYXRpbz0Kbk1peGluLmdldF9oZGFfZGlj
dGAKICAgICAgICAgIiIiCiAgICAgICAgIHJ2YWwgPTNEIFtdCj0yMApAQCAtMTEwLDEwICsxMTIs
OSBAQAogICAgICAgICAgICAgZGV0YWlsZWQgPTNEIGRldGFpbHMgPTNEPTNEICdhbGwnIG9yICgg
ZW5jb2RlZF9jb250ZW50X2lkIGluIGQ9CmV0YWlscyApCj0yMAogICAgICAgICAgICAgaWYgaXNp
bnN0YW5jZSggY29udGVudCwgdHJhbnMuYXBwLm1vZGVsLkhpc3RvcnlEYXRhc2V0QXNzb2NpYXQ9
CmlvbiApOgotICAgICAgICAgICAgICAgIGlmIGRldGFpbGVkOgotICAgICAgICAgICAgICAgICAg
ICBydmFsLmFwcGVuZCggc2VsZi5fZGV0YWlsZWRfaGRhX2RpY3QoIHRyYW5zLCBjb250ZW50ICk9
CiApCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcnZhbC5hcHBl
bmQoIHNlbGYuX3N1bW1hcnlfaGRhX2RpY3QoIHRyYW5zLCBoaXN0b3J5X2lkPQosIGNvbnRlbnQg
KSApCisgICAgICAgICAgICAgICAgdmlldyA9M0QgJ2RldGFpbGVkJyBpZiBkZXRhaWxlZCBlbHNl
ICdzdW1tYXJ5JworICAgICAgICAgICAgICAgIGhkYV9kaWN0ID0zRCBzZWxmLmhkYV9zZXJpYWxp
emVyLnNlcmlhbGl6ZV90b192aWV3KCB0cmFucyw9CiBjb250ZW50LCB2aWV3PTNEdmlldyApCisg
ICAgICAgICAgICAgICAgcnZhbC5hcHBlbmQoIGhkYV9kaWN0ICkKPTIwCiAgICAgICAgICAgICBl
bGlmIGlzaW5zdGFuY2UoIGNvbnRlbnQsIHRyYW5zLmFwcC5tb2RlbC5IaXN0b3J5RGF0YXNldENv
bGxlYz0KdGlvbkFzc29jaWF0aW9uICk6CiAgICAgICAgICAgICAgICAgaWYgZGV0YWlsZWQ6CkBA
IC0xMjMsNjIgKzEyNCwxMCBAQAo9MjAKICAgICAgICAgcmV0dXJuIHJ2YWwKPTIwCi0gICAgI1RP
RE86IG1vdmUgdG8gbW9kZWwgb3IgTWl4aW4KLSAgICBkZWYgX3N1bW1hcnlfaGRhX2RpY3QoIHNl
bGYsIHRyYW5zLCBlbmNvZGVkX2hpc3RvcnlfaWQsIGhkYSApOgotICAgICAgICAiIiIKLSAgICAg
ICAgUmV0dXJucyBhIGRpY3Rpb25hcnkgYmFzZWQgb24gdGhlIEhEQSBpbiBzdW1tYXJ5IGZvcm06
OgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICdpZCcgICAgOiA8IHRoZSBlbmNvZGVk
IGRhdGFzZXQgaWQgPiwKLSAgICAgICAgICAgICAgICAnbmFtZScgIDogPCBjdXJyZW50bHkgb25s
eSByZXR1cm5zICdmaWxlJyA+LAotICAgICAgICAgICAgICAgICd0eXBlJyAgOiA8IG5hbWUgb2Yg
dGhlIGRhdGFzZXQgPiwKLSAgICAgICAgICAgICAgICAndXJsJyAgIDogPCBhcGkgdXJsIHRvIHJl
dHJpZXZlIHRoaXMgZGF0YXNldHMgZnVsbCBkYXRhID4sCi0gICAgICAgICAgICB9Ci0gICAgICAg
ICIiIgotICAgICAgICBhcGlfdHlwZSA9M0QgImZpbGUiCi0gICAgICAgIGVuY29kZWRfaWQgPTNE
IHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggaGRhLmlkICkKLSAgICAgICAgZW5jb2RlZF9kYXRh
c2V0X2lkID0zRCB0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIGhkYS5kYXRhc2V0X2lkICk7Ci0g
ICAgICAgPTIwCi0gICAgICAgICMgVE9ETzogaGFuZGxlIGZhaWxlZF9tZXRhZGF0YSBoZXJlIGFz
IHdlbGwKLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICdpZCcgICAgOiBlbmNvZGVkX2lk
LAotICAgICAgICAgICAgJ2hpc3RvcnlfaWQnIDogZW5jb2RlZF9oaXN0b3J5X2lkLAotICAgICAg
ICAgICAgJ2RhdGFzZXRfaWQnIDogZW5jb2RlZF9kYXRhc2V0X2lkLAotICAgICAgICAgICAgJ25h
bWUnICA6IGhkYS5uYW1lLAotICAgICAgICAgICAgJ3R5cGUnICA6IGFwaV90eXBlLAotICAgICAg
ICAgICAgJ3N0YXRlJyAgOiBoZGEuZGF0YXNldC5zdGF0ZSwKLSAgICAgICAgICAgICdkZWxldGVk
JzogaGRhLmRlbGV0ZWQsCi0gICAgICAgICAgICAnZXh0ZW5zaW9uJzogaGRhLmV4dGVuc2lvbiwK
LSAgICAgICAgICAgICd2aXNpYmxlJzogaGRhLnZpc2libGUsCi0gICAgICAgICAgICAncHVyZ2Vk
JzogaGRhLnB1cmdlZCwKLSAgICAgICAgICAgICdyZXN1Ym1pdHRlZCc6IGhkYS5fc3RhdGUgPTNE
PTNEIHRyYW5zLmFwcC5tb2RlbC5EYXRhc2V0LnN0YXRlPQpzLlJFU1VCTUlUVEVELAotICAgICAg
ICAgICAgJ2hpZCcgICA6IGhkYS5oaWQsCi0gICAgICAgICAgICAnaGlzdG9yeV9jb250ZW50X3R5
cGUnIDogaGRhLmhpc3RvcnlfY29udGVudF90eXBlLAotICAgICAgICAgICAgIyd1cmwnICAgOiB1
cmxfZm9yKCAnaGlzdG9yeV9jb250ZW50X3R5cGVkJywgaGlzdG9yeV9pZD0zRGVuY289CmRlZF9o
aXN0b3J5X2lkLCBpZD0zRGVuY29kZWRfaWQsIHR5cGU9M0QiZGF0YXNldCIgKSwKLSAgICAgICAg
ICAgICNUT0RPOiB0aGlzIGludGVybWl0dGVudGx5IGNhdXNlcyBhIHJvdXRlcy5HZW5lcmF0aW9u
RXhjZXB0aW9uPQogLSB0ZW1wIHVzZSB0aGUgbGVnYWN5IHJvdXRlIHRvIHByZXZlbnQgdGhpcwot
ICAgICAgICAgICAgIyAgIHNlZSBhbHNvOiBodHRwczovL3RyZWxsby5jb20vYy81ZDZqNFg1eQot
ICAgICAgICAgICAgIyAgIHNlZSBhbHNvOiBodHRwczovL3NlbnRyeS5nYWxheHlwcm9qZWN0Lm9y
Zy9nYWxheHkvZ2FsYXh5LW09CmFpbi9ncm91cC8yMDc2OS9ldmVudHMvOTM1Mjg4My8KLSAgICAg
ICAgICAgICd1cmwnICAgOiB1cmxfZm9yKCAnaGlzdG9yeV9jb250ZW50JywgaGlzdG9yeV9pZD0z
RGVuY29kZWRfaGlzPQp0b3J5X2lkLCBpZD0zRGVuY29kZWRfaWQgKSwKLSAgICAgICAgfQotCiAg
ICAgZGVmIF9fY29sbGVjdGlvbl9kaWN0KCBzZWxmLCB0cmFucywgZGF0YXNldF9jb2xsZWN0aW9u
X2luc3RhbmNlLCB2aWV3PQo9M0QiY29sbGVjdGlvbiIgKToKICAgICAgICAgcmV0dXJuIGRpY3Rp
ZnlfZGF0YXNldF9jb2xsZWN0aW9uX2luc3RhbmNlKCBkYXRhc2V0X2NvbGxlY3Rpb25faW5zPQp0
YW5jZSwKICAgICAgICAgICAgIHNlY3VyaXR5PTNEdHJhbnMuc2VjdXJpdHksIHBhcmVudD0zRGRh
dGFzZXRfY29sbGVjdGlvbl9pbnN0YW5jPQplLmhpc3RvcnksIHZpZXc9M0R2aWV3ICkKPTIwCi0g
ICAgZGVmIF9kZXRhaWxlZF9oZGFfZGljdCggc2VsZiwgdHJhbnMsIGhkYSApOgotICAgICAgICAi
IiIKLSAgICAgICAgRGV0YWlsZWQgZGljdGlvbmFyeSBvZiBoZGEgdmFsdWVzLgotICAgICAgICAi
IiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaGRhX2RpY3QgPTNEIHNlbGYuZ2V0X2hkYV9k
aWN0KCB0cmFucywgaGRhICkKLSAgICAgICAgICAgIGhkYV9kaWN0WyAnZGlzcGxheV90eXBlcycg
XSA9M0Qgc2VsZi5nZXRfb2xkX2Rpc3BsYXlfYXBwbGljYXRpPQpvbnMoIHRyYW5zLCBoZGEgKQot
ICAgICAgICAgICAgaGRhX2RpY3RbICdkaXNwbGF5X2FwcHMnIF0gPTNEIHNlbGYuZ2V0X2Rpc3Bs
YXlfYXBwcyggdHJhbnMsIGg9CmRhICkKLSAgICAgICAgICAgIHJldHVybiBoZGFfZGljdAotICAg
ICAgICBleGNlcHQgRXhjZXB0aW9uLCBleGM6Ci0gICAgICAgICAgICAjIGNhdGNoIGVycm9yIGhl
cmUgLSByZXR1cm5pbmcgYSBicmllZmVyIGhkYV9kaWN0IHdpdGggYW4gZXJybz0KciBhdHRyaWJ1
dGUKLSAgICAgICAgICAgIGxvZy5leGNlcHRpb24oICJFcnJvciBpbiBoaXN0b3J5IEFQSSBhdCBs
aXN0aW5nIGNvbnRlbnRzIHdpdGggPQpoaXN0b3J5ICVzLCBoZGEgJXM6ICglcykgJXMiLAotICAg
ICAgICAgICAgICAgIGhkYS5oaXN0b3J5X2lkLCBoZGEuaWQsIHR5cGUoIGV4YyApLCBzdHIoIGV4
YyApICkKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmdldF9oZGFfZGljdF93aXRoX2Vycm9yKCB0
cmFucywgaGRhPTNEaGRhLCBlcnJvcl9tPQpzZz0zRHN0ciggZXhjICkgKQotCiAgICAgQGV4cG9z
ZV9hcGlfYW5vbnltb3VzCiAgICAgZGVmIHNob3coIHNlbGYsIHRyYW5zLCBpZCwgaGlzdG9yeV9p
ZCwgKiprd2QgKToKICAgICAgICAgIiIiCkBAIC0xOTQsNyArMTQzLDYgQEAKPTIwCiAgICAgICAg
IDpydHlwZTogICAgIGRpY3QKICAgICAgICAgOnJldHVybnM6ICAgZGljdGlvbmFyeSBjb250YWlu
aW5nIGRldGFpbGVkIEhEQSBpbmZvcm1hdGlvbgotICAgICAgICAuLiBzZWVhbHNvOjogOmZ1bmM6
YGdhbGF4eS53ZWIuYmFzZS5jb250cm9sbGVyLlVzZXNIaXN0b3J5RGF0YXNldEE9CnNzb2NpYXRp
b25NaXhpbi5nZXRfaGRhX2RpY3RgCiAgICAgICAgICIiIgogICAgICAgICBjb250ZW50c190eXBl
ID0zRCBrd2QuZ2V0KCd0eXBlJywgJ2RhdGFzZXQnKQogICAgICAgICBpZiBjb250ZW50c190eXBl
ID0zRD0zRCAnZGF0YXNldCc6CkBAIC0yMDQsNiArMTUyLDEyIEBACiAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICByZXR1cm4gc2VsZi5fX2hhbmRsZV91bmtub3duX2NvbnRlbnRzX3R5cGUoIHRy
YW5zLCBjb250ZW50c190eT0KcGUgKQo9MjAKKyAgICBkZWYgX19zaG93X2RhdGFzZXQoIHNlbGYs
IHRyYW5zLCBpZCwgKiprd2QgKToKKyAgICAgICAgaGRhID0zRCBzZWxmLm1ncnMuaGRhcy5hY2Nl
c3NpYmxlX2J5X2lkKCB0cmFucywgc2VsZi5fZGVjb2RlX2lkKCB0PQpyYW5zLCBpZCApLCB0cmFu
cy51c2VyICkKKyAgICAgICAgI2lmIGhkYS5oaXN0b3J5LmlkICE9M0Qgc2VsZi5fZGVjb2RlX2lk
KCB0cmFucywgaGlzdG9yeV9pZCApOgorICAgICAgICAjICAgIHJhaXNlIGV4Y2VwdGlvbnMuT2Jq
ZWN0Tm90Rm91bmQoICdkYXRhc2V0IHdhcyBub3QgZm91bmQgaW4gdGg9CmlzIGhpc3RvcnknICkK
KyAgICAgICAgcmV0dXJuIHNlbGYuaGRhX3NlcmlhbGl6ZXIuc2VyaWFsaXplX3RvX3ZpZXcoIHRy
YW5zLCBoZGEsIHZpZXc9M0RrPQp3ZC5nZXQoICd2aWV3JywgJ2RldGFpbGVkJyApICkKKwogICAg
IGRlZiBfX3Nob3dfZGF0YXNldF9jb2xsZWN0aW9uKCBzZWxmLCB0cmFucywgaWQsIGhpc3Rvcnlf
aWQsICoqa3dkICk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlcnZpY2UgPTNEIHRyYW5z
LmFwcC5kYXRhc2V0X2NvbGxlY3Rpb25zX3NlcnZpY2UKQEAgLTIxOCwxNSArMTcyLDYgQEAKICAg
ICAgICAgICAgIHRyYW5zLnJlc3BvbnNlLnN0YXR1cyA9M0QgNTAwCiAgICAgICAgICAgICByZXR1
cm4geyAnZXJyb3InOiBzdHIoIGUgKSB9Cj0yMAotICAgIGRlZiBfX3Nob3dfZGF0YXNldCggc2Vs
ZiwgdHJhbnMsIGlkLCAqKmt3ZCApOgotICAgICAgICBoZGEgPTNEIHNlbGYubWdycy5oZGFzLmFj
Y2Vzc2libGVfYnlfaWQoIHRyYW5zLCBzZWxmLl9kZWNvZGVfaWQoIHQ9CnJhbnMsIGlkICksIHRy
YW5zLnVzZXIgKQotICAgICAgICAjaWYgaGRhLmhpc3RvcnkuaWQgIT0zRCBzZWxmLl9kZWNvZGVf
aWQoIHRyYW5zLCBoaXN0b3J5X2lkICk6Ci0gICAgICAgICMgICAgcmFpc2UgZXhjZXB0aW9ucy5P
YmplY3ROb3RGb3VuZCggJ2RhdGFzZXQgd2FzIG5vdCBmb3VuZCBpbiB0aD0KaXMgaGlzdG9yeScg
KQotICAgICAgICBoZGFfZGljdCA9M0Qgc2VsZi5nZXRfaGRhX2RpY3QoIHRyYW5zLCBoZGEgKQot
ICAgICAgICBoZGFfZGljdFsgJ2Rpc3BsYXlfdHlwZXMnIF0gPTNEIHNlbGYuZ2V0X29sZF9kaXNw
bGF5X2FwcGxpY2F0aW9ucyg9CiB0cmFucywgaGRhICkKLSAgICAgICAgaGRhX2RpY3RbICdkaXNw
bGF5X2FwcHMnIF0gPTNEIHNlbGYuZ2V0X2Rpc3BsYXlfYXBwcyggdHJhbnMsIGhkYSApCi0gICAg
ICAgIHJldHVybiBoZGFfZGljdAotCiAgICAgQGV4cG9zZV9hcGlfYW5vbnltb3VzCiAgICAgZGVm
IGNyZWF0ZSggc2VsZiwgdHJhbnMsIGhpc3RvcnlfaWQsIHBheWxvYWQsICoqa3dkICk6CiAgICAg
ICAgICIiIgpAQCAtMzI2LDExICsyNzEsNyBAQAogICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZs
dXNoKCkKICAgICAgICAgaWYgbm90IGhkYToKICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAg
ICAgICNUT0RPOiBkdXBsaWNhdGUgY29kZSAtIHVzZSBhIHNlcmlhbGl6ZXIgd2l0aCBhIHZpZXcK
LSAgICAgICAgaGRhX2RpY3QgPTNEIHNlbGYuZ2V0X2hkYV9kaWN0KCB0cmFucywgaGRhICkKLSAg
ICAgICAgaGRhX2RpY3RbICdkaXNwbGF5X3R5cGVzJyBdID0zRCBzZWxmLmdldF9vbGRfZGlzcGxh
eV9hcHBsaWNhdGlvbnMoPQogdHJhbnMsIGhkYSApCi0gICAgICAgIGhkYV9kaWN0WyAnZGlzcGxh
eV9hcHBzJyBdID0zRCBzZWxmLmdldF9kaXNwbGF5X2FwcHMoIHRyYW5zLCBoZGEgKQotICAgICAg
ICByZXR1cm4gaGRhX2RpY3QKKyAgICAgICAgcmV0dXJuIHNlbGYuaGRhX3NlcmlhbGl6ZXIuc2Vy
aWFsaXplX3RvX3ZpZXcoIHRyYW5zLCBoZGEsIHZpZXc9M0RrPQp3ZC5nZXQoICd2aWV3JywgJ2Rl
dGFpbGVkJyApICkKPTIwCiAgICAgZGVmIF9fY3JlYXRlX2RhdGFzZXRfY29sbGVjdGlvbiggc2Vs
ZiwgdHJhbnMsIGhpc3RvcnksIHBheWxvYWQsICoqa3dkID0KKToKICAgICAgICAgc291cmNlID0z
RCBrd2QuZ2V0KCJzb3VyY2UiLCAibmV3X2NvbGxlY3Rpb24iKQpAQCAtMzg5LDM4ICszMzAsNDQg
QEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9faGFuZGxlX3Vua25vd25fY29udGVudHNfdHlw
ZSggdHJhbnMsIGNvbnRlbnRzX3R5PQpwZSApCj0yMAogICAgIGRlZiBfX3VwZGF0ZV9kYXRhc2V0
KCBzZWxmLCB0cmFucywgaGlzdG9yeV9pZCwgaWQsIHBheWxvYWQsICoqa3dkICk6Ci0gICAgICAg
IGNoYW5nZWQgPTNEIHt9Ci0gICAgICAgICMgYW5vbiB1c2VyCisgICAgICAgICMgYW5vbiB1c2Vy
OiBlbnN1cmUgdGhhdCBoaXN0b3J5IGlkcyBtYXRjaCB1cCBhbmQgdGhlIGhpc3RvcnkgaXMgdD0K
aGUgY3VycmVudCwKKyAgICAgICAgIyAgIGNoZWNrIGZvciB1cGxvYWRpbmcsIGFuZCB1c2Ugb25s
eSB0aGUgc3Vic2V0IG9mIGF0dHJpYnV0ZSBrZXlzPQogbWFuaXB1bGF0YWJsZSBieSBhbm9uIHVz
ZXJzCiAgICAgICAgIGlmIHRyYW5zLnVzZXIgPTNEPTNEIE5vbmU6Ci0gICAgICAgICAgICBpZiBo
aXN0b3J5X2lkICE9M0QgdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCB0cmFucy5oaXN0b3J5Lmlk
ID0KKToKLSAgICAgICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLkF1dGhlbnRpY2F0aW9uUmVx
dWlyZWQoICdZb3UgbXVzdCBiZSBsb2dnPQplZCBpbiB0byB1cGRhdGUgdGhpcyBoaXN0b3J5JyAp
CisgICAgICAgICAgICBoZGEgPTNEIHNlbGYubWdycy5oZGFzLmJ5X2lkKCB0cmFucywgc2VsZi5f
ZGVjb2RlX2lkKCB0cmFucywgaT0KZCApICkKKyAgICAgICAgICAgIGlmIGhkYS5oaXN0b3J5ICE9
M0QgdHJhbnMuaGlzdG9yeToKKyAgICAgICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLkF1dGhl
bnRpY2F0aW9uUmVxdWlyZWQoICdZb3UgbXVzdCBiZSBsb2dnPQplZCBpbiB0byB1cGRhdGUgdGhp
cyBkYXRhc2V0JyApCisgICAgICAgICAgICBoZGEgPTNEIHNlbGYubWdycy5oZGFzLmVycm9yX2lm
X3VwbG9hZGluZyggdHJhbnMsIGhkYSApCisKICAgICAgICAgICAgIGFub25fYWxsb3dlZF9wYXls
b2FkID0zRCB7fQogICAgICAgICAgICAgaWYgJ2RlbGV0ZWQnIGluIHBheWxvYWQ6CiAgICAgICAg
ICAgICAgICAgYW5vbl9hbGxvd2VkX3BheWxvYWRbICdkZWxldGVkJyBdID0zRCBwYXlsb2FkWyAn
ZGVsZXRlZCcgXQogICAgICAgICAgICAgaWYgJ3Zpc2libGUnIGluIHBheWxvYWQ6CiAgICAgICAg
ICAgICAgICAgYW5vbl9hbGxvd2VkX3BheWxvYWRbICd2aXNpYmxlJyBdID0zRCBwYXlsb2FkWyAn
dmlzaWJsZScgXQotICAgICAgICAgICAgcGF5bG9hZCA9M0Qgc2VsZi5fdmFsaWRhdGVfYW5kX3Bh
cnNlX3VwZGF0ZV9wYXlsb2FkKCBhbm9uX2FsbG89CndlZF9wYXlsb2FkICkKKyAgICAgICAgICAg
IHBheWxvYWQgPTNEIGFub25fYWxsb3dlZF9wYXlsb2FkCj0yMAotICAgICAgICAgICAgaGRhID0z
RCBzZWxmLm1ncnMuaGRhcy5ieV9pZCggdHJhbnMsIHNlbGYuX2RlY29kZV9pZCggdHJhbnMsIGk9
CmQgKSApCi0gICAgICAgICAgICBoZGEgPTNEIHNlbGYubWdycy5oZGFzLmVycm9yX2lmX3VwbG9h
ZGluZyggdHJhbnMsIGhkYSApCi0gICAgICAgICAgICBpZiBoZGEuaGlzdG9yeSAhPTNEIHRyYW5z
Lmhpc3Rvcnk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5BdXRoZW50aWNhdGlv
blJlcXVpcmVkKCAnWW91IG11c3QgYmUgbG9nZz0KZWQgaW4gdG8gdXBkYXRlIHRoaXMgZGF0YXNl
dCcgKQorICAgICAgICAjIGxvZ2dlZCBpbiB1c2VyOiB1c2UgZnVsbCBwYXlsb2FkLCBjaGVjayBz
dGF0ZSBpZiBkZWxldGluZywgYW5kIG09CmFrZSBzdXJlIHRoZSBoaXN0b3J5IGlzIHRoZWlycwor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgaGRhID0zRCBzZWxmLm1ncnMuaGRhcy5hY2Nlc3Np
YmxlX2J5X2lkKCB0cmFucywgc2VsZi5fZGVjb2RlX2k9CmQoIHRyYW5zLCBpZCApLCB0cmFucy51
c2VyICkKKyAgICAgICAgICAgIHNlbGYubWdycy5oaXN0b3JpZXMuZXJyb3JfdW5sZXNzX293bmVy
KCB0cmFucywgaGRhLmhpc3RvcnksIHRyPQphbnMudXNlciApCj0yMAotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgcGF5bG9hZCA9M0Qgc2VsZi5fdmFsaWRhdGVfYW5kX3BhcnNlX3VwZGF0ZV9w
YXlsb2FkKCBwYXlsb2FkICkKICAgICAgICAgICAgICMgb25seSBjaGVja19zdGF0ZSBpZiBub3Qg
ZGVsZXRpbmcsIG90aGVyd2lzZSBjYW5ub3QgZGVsZXRlIHVwPQpsb2FkaW5nIGZpbGVzCiAgICAg
ICAgICAgICBjaGVja19zdGF0ZSA9M0Qgbm90IHBheWxvYWQuZ2V0KCAnZGVsZXRlZCcsIEZhbHNl
ICkKLSAgICAgICAgICAgIGhkYSA9M0Qgc2VsZi5tZ3JzLmhkYXMuYWNjZXNzaWJsZV9ieV9pZCgg
dHJhbnMsIHNlbGYuX2RlY29kZV9pPQpkKCB0cmFucywgaWQgKSwgdHJhbnMudXNlciApCiAgICAg
ICAgICAgICBpZiBjaGVja19zdGF0ZToKICAgICAgICAgICAgICAgICBoZGEgPTNEIHNlbGYubWdy
cy5oZGFzLmVycm9yX2lmX3VwbG9hZGluZyggdHJhbnMsIGhkYSApCi0gICAgICAgICAgICAjaGRh
ID0zRCBzZWxmLmdldF9kYXRhc2V0KCB0cmFucywgaWQsIGNoZWNrX293bmVyc2hpcD0zRFRydWUs
ID0KY2hlY2tfYWNjZXNzaWJsZT0zRFRydWUsIGNoZWNrX3N0YXRlPTNEY2hlY2tfc3RhdGUgKQo9
MjAKKyAgICAgICAgIyBtYWtlIHRoZSBhY3R1YWwgY2hhbmdlcworICAgICAgICAjVE9ETzogdG8g
ZGVzZXJpYWxpemVyCisgICAgICAgICNUT0RPOiBpcyB0aGlzIGlmIHN0aWxsIG5lZWRlZD8KICAg
ICAgICAgaWYgaGRhIGFuZCBpc2luc3RhbmNlKCBoZGEsIHRyYW5zLm1vZGVsLkhpc3RvcnlEYXRh
c2V0QXNzb2NpYXRpb24gPQopOgotICAgICAgICAgICAgY2hhbmdlZCA9M0Qgc2VsZi5zZXRfaGRh
X2Zyb21fZGljdCggdHJhbnMsIGhkYSwgcGF5bG9hZCApCisgICAgICAgICAgICAjcGF5bG9hZCA9
M0Qgc2VsZi5fdmFsaWRhdGVfYW5kX3BhcnNlX3VwZGF0ZV9wYXlsb2FkKCBwYXlsb2FkICkKKyAg
ICAgICAgICAgICNjaGFuZ2VkID0zRCBzZWxmLnNldF9oZGFfZnJvbV9kaWN0KCB0cmFucywgaGRh
LCBwYXlsb2FkICkKKyAgICAgICAgICAgIHNlbGYuaGRhX2Rlc2VyaWFsaXplci5kZXNlcmlhbGl6
ZSggdHJhbnMsIGhkYSwgcGF5bG9hZCApCisgICAgICAgICAgICAjVE9ETzogdGhpcyBzaG91bGQg
YmUgYW4gZWZmZWN0IG9mIGRlbGV0aW5nIHRoZSBoZGEKICAgICAgICAgICAgIGlmIHBheWxvYWQu
Z2V0KCAnZGVsZXRlZCcsIEZhbHNlICk6CiAgICAgICAgICAgICAgICAgc2VsZi5zdG9wX2hkYV9j
cmVhdGluZ19qb2IoIGhkYSApCisgICAgICAgICAgICByZXR1cm4gc2VsZi5oZGFfc2VyaWFsaXpl
ci5zZXJpYWxpemVfdG9fdmlldyggdHJhbnMsIGhkYSwgdmlldz0KPTNEa3dkLmdldCggJ3ZpZXcn
LCAnZGV0YWlsZWQnICkgKQo9MjAKLSAgICAgICAgcmV0dXJuIGNoYW5nZWQKKyAgICAgICAgcmV0
dXJuIHt9Cj0yMAogICAgIGRlZiBfX3VwZGF0ZV9kYXRhc2V0X2NvbGxlY3Rpb24oIHNlbGYsIHRy
YW5zLCBoaXN0b3J5X2lkLCBpZCwgcGF5bG9hZCw9CiAqKmt3ZCApOgogICAgICAgICByZXR1cm4g
dHJhbnMuYXBwLmRhdGFzZXRfY29sbGVjdGlvbnNfc2VydmljZS51cGRhdGUoIHRyYW5zLCAiaGlz
dG89CnJ5IiwgaWQsIHBheWxvYWQgKQpAQCAtNDczLDY4ICs0MjAsNzQgQEAKICAgICAgICAgc2Vs
Zi5tZ3JzLmhpc3Rvcmllcy5lcnJvcl91bmxlc3Nfb3duZXJzaGlwKCB0cmFucywgaGRhLmhpc3Rv
cnksIHRyPQphbnMudXNlciApCiAgICAgICAgIHNlbGYubWdycy5oZGFzLmVycm9yX2lmX3VwbG9h
ZGluZyggdHJhbnMsIGhkYSApCj0yMAotICAgICAgICBydmFsID0zRCB7ICdpZCcgOiBpZCB9Ci0g
ICAgICAgIGhkYS5kZWxldGVkID0zRCBUcnVlCiAgICAgICAgIGlmIHB1cmdlOgotICAgICAgICAg
ICAgaWYgbm90IHRyYW5zLmFwcC5jb25maWcuYWxsb3dfdXNlcl9kYXRhc2V0X3B1cmdlOgotICAg
ICAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuQ29uZmlnRG9lc05vdEFsbG93RXhjZXB0aW9u
KCAnVGhpcyBpbnN0YW49CmNlIGRvZXMgbm90IGFsbG93IHVzZXIgZGF0YXNldCBwdXJnaW5nJyAp
Ci0gICAgICAgICAgICBoZGEucHVyZ2VkID0zRCBUcnVlCi0gICAgICAgICAgICB0cmFucy5zYV9z
ZXNzaW9uLmFkZCggaGRhICkKLSAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uZmx1c2goKQot
ICAgICAgICAgICAgaWYgaGRhLmRhdGFzZXQudXNlcl9jYW5fcHVyZ2U6Ci0gICAgICAgICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBoZGEuZGF0YXNldC5mdWxsX2RlbGV0ZSgpCi0g
ICAgICAgICAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCBoZGEuZGF0YXNldCApCi0g
ICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAg
ICAgICAgICAgIyBmbHVzaCBub3cgdG8gcHJlc2VydmUgZGVsZXRlZCBzdGF0ZSBpbiBjYXNlIG9m
IGxhdGVyIGludD0KZXJydXB0aW9uCi0gICAgICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5m
bHVzaCgpCi0gICAgICAgICAgICBydmFsWyAncHVyZ2VkJyBdID0zRCBUcnVlCisgICAgICAgICAg
ICBzZWxmLm1ncnMuaGRhcy5wdXJnZSggdHJhbnMsIGhkYSApCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBzZWxmLm1ncnMuaGRhcy5kZWxldGUoIHRyYW5zLCBoZGEgKQorICAgICAgICByZXR1
cm4gc2VsZi5oZGFfc2VyaWFsaXplci5zZXJpYWxpemVfdG9fdmlldyggdHJhbnMsIGhkYSwgdmll
dz0zRGs9CndkLmdldCggJ3ZpZXcnLCAnZGV0YWlsZWQnICkgKQo9MjAKLSAgICAgICAgc2VsZi5z
dG9wX2hkYV9jcmVhdGluZ19qb2IoIGhkYSApCi0gICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uZmx1
c2goKQorICAgICAgICAjcnZhbCA9M0QgeyAnaWQnIDogaWQgfQorICAgICAgICAjaGRhLmRlbGV0
ZWQgPTNEIFRydWUKKyAgICAgICAgI2lmIHB1cmdlOgorICAgICAgICAjICAgIGlmIG5vdCB0cmFu
cy5hcHAuY29uZmlnLmFsbG93X3VzZXJfZGF0YXNldF9wdXJnZToKKyAgICAgICAgIyAgICAgICAg
cmFpc2UgZXhjZXB0aW9ucy5Db25maWdEb2VzTm90QWxsb3dFeGNlcHRpb24oICdUaGlzIGluc3Rh
PQpuY2UgZG9lcyBub3QgYWxsb3cgdXNlciBkYXRhc2V0IHB1cmdpbmcnICkKKyAgICAgICAgIyAg
ICBoZGEucHVyZ2VkID0zRCBUcnVlCisgICAgICAgICMgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQo
IGhkYSApCisgICAgICAgICMgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCisgICAgICAgICMg
ICAgaWYgaGRhLmRhdGFzZXQudXNlcl9jYW5fcHVyZ2U6CisgICAgICAgICMgICAgICAgIHRyeToK
KyAgICAgICAgIyAgICAgICAgICAgIGhkYS5kYXRhc2V0LmZ1bGxfZGVsZXRlKCkKKyAgICAgICAg
IyAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCBoZGEuZGF0YXNldCApCisgICAgICAg
ICMgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgIyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIyAg
ICAgICAgIyBmbHVzaCBub3cgdG8gcHJlc2VydmUgZGVsZXRlZCBzdGF0ZSBpbiBjYXNlIG9mIGxh
dGVyIGluPQp0ZXJydXB0aW9uCisgICAgICAgICMgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uZmx1
c2goKQorICAgICAgICAjICAgIHJ2YWxbICdwdXJnZWQnIF0gPTNEIFRydWUKKyAgICAgICAgIwor
ICAgICAgICAjc2VsZi5zdG9wX2hkYV9jcmVhdGluZ19qb2IoIGhkYSApCisgICAgICAgICN0cmFu
cy5zYV9zZXNzaW9uLmZsdXNoKCkKKyAgICAgICAgIworICAgICAgICAjcnZhbFsgJ2RlbGV0ZWQn
IF0gPTNEIFRydWUKKyAgICAgICAgI3JldHVybiBydmFsCj0yMAotICAgICAgICBydmFsWyAnZGVs
ZXRlZCcgXSA9M0QgVHJ1ZQotICAgICAgICByZXR1cm4gcnZhbAotCi0gICAgZGVmIF92YWxpZGF0
ZV9hbmRfcGFyc2VfdXBkYXRlX3BheWxvYWQoIHNlbGYsIHBheWxvYWQgKToKLSAgICAgICAgIiIi
Ci0gICAgICAgIFZhbGlkYXRlIGFuZCBwYXJzZSBpbmNvbW1pbmcgZGF0YSBwYXlsb2FkIGZvciBh
biBIREEuCi0gICAgICAgICIiIgotICAgICAgICAjIFRoaXMgbGF5ZXIgaGFuZGxlcyAobW9zdCBv
ZiB0aGUgc3RyaWN0ZXIgaWRpb3QgcHJvb2ZpbmcpOgotICAgICAgICAjICAgLSB1bmtub3duL3Vu
YWxsb3dlZCBrZXlzCi0gICAgICAgICMgICAtIGNoYW5naW5nIGRhdGEga2V5cyBmcm9tIGFwaSBr
ZXkgdG8gYXR0cmlidXRlIG5hbWUKLSAgICAgICAgIyAgIC0gcHJvdGVjdGlvbiBhZ2FpbnN0IGJh
ZCBkYXRhIGZvcm0vdHlwZQotICAgICAgICAjICAgLSBwcm90ZWN0aW9uIGFnYWluc3QgbWFsaWNp
b3VzIGRhdGEgY29udGVudAotICAgICAgICAjIGFsbCBvdGhlciBjb252ZXJzaW9ucyBhbmQgcHJv
Y2Vzc2luZyAoc3VjaCBhcyBwZXJtaXNzaW9ucywgZXRjLik9CiBzaG91bGQgaGFwcGVuIGRvd24g
dGhlIGxpbmUKLQotICAgICAgICAjIGtleXMgbGlzdGVkIGhlcmUgZG9uJ3QgZXJyb3Igd2hlbiBh
dHRlbXB0aW5nIHRvIHNldCwgYnV0IGZhaWwgc2k9CmxlbnRseQotICAgICAgICAjICAgdGhpcyBh
bGxvd3MgUFVUJ2luZyBhbiBlbnRpcmUgbW9kZWwgYmFjayB0byB0aGUgc2VydmVyIHdpdGhvdXQ9
CiBhdHRyaWJ1dGUgZXJyb3JzIG9uIHVuZWRpdGFibGUgYXR0cnMKLSAgICAgICAgdmFsaWRfYnV0
X3VuZWRpdGFibGVfa2V5cyA9M0QgKAotICAgICAgICAgICAgJ2lkJywgJ25hbWUnLCAndHlwZScs
ICdhcGlfdHlwZScsICdtb2RlbF9jbGFzcycsICdoaXN0b3J5X2lkJyw9CiAnaGlkJywKLSAgICAg
ICAgICAgICdhY2Nlc3NpYmxlJywgJ3B1cmdlZCcsICdzdGF0ZScsICdkYXRhX3R5cGUnLCAnZmls
ZV9leHQnLCAnZmlsPQplX3NpemUnLCAnbWlzY19ibHVyYicsCi0gICAgICAgICAgICAnZG93bmxv
YWRfdXJsJywgJ3Zpc3VhbGl6YXRpb25zJywgJ2Rpc3BsYXlfYXBwcycsICdkaXNwbGF5X3R5cD0K
ZXMnLAotICAgICAgICAgICAgJ21ldGFkYXRhX2Ria2V5JywgJ21ldGFkYXRhX2NvbHVtbl9uYW1l
cycsICdtZXRhZGF0YV9jb2x1bW5fdHk9CnBlcycsICdtZXRhZGF0YV9jb2x1bW5zJywKLSAgICAg
ICAgICAgICdtZXRhZGF0YV9jb21tZW50X2xpbmVzJywgJ21ldGFkYXRhX2RhdGFfbGluZXMnCi0g
ICAgICAgICkKLSAgICAgICAgdmFsaWRhdGVkX3BheWxvYWQgPTNEIHt9Ci0gICAgICAgIGZvciBr
ZXksIHZhbCBpbiBwYXlsb2FkLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiB2YWwgaXMgTm9uZToK
LSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYga2V5IGluICggJ25hbWUn
LCAnZ2Vub21lX2J1aWxkJywgJ21pc2NfaW5mbycsICdhbm5vdGF0aW9uJyA9Cik6Ci0gICAgICAg
ICAgICAgICAgdmFsID0zRCBzZWxmLnZhbGlkYXRlX2FuZF9zYW5pdGl6ZV9iYXNlc3RyaW5nKCBr
ZXksIHZhbCApCi0gICAgICAgICAgICAgICAgI1RPRE86IG5lZWQgYmV0dGVyIHJlbWFwIHN5c3Rl
bSBvciBlbGltaW5hdGUgdGhlIG5lZWQgYWx0bz0KZ2V0aGVyCi0gICAgICAgICAgICAgICAga2V5
ID0zRCAnZGJrZXknIGlmIGtleSA9M0Q9M0QgJ2dlbm9tZV9idWlsZCcgZWxzZSBrZXkKLSAgICAg
ICAgICAgICAgICBrZXkgPTNEICdpbmZvJyAgaWYga2V5ID0zRD0zRCAnbWlzY19pbmZvJyBlbHNl
IGtleQotICAgICAgICAgICAgICAgIHZhbGlkYXRlZF9wYXlsb2FkWyBrZXkgXSA9M0QgdmFsCi0g
ICAgICAgICAgICBpZiBrZXkgaW4gKCAnZGVsZXRlZCcsICd2aXNpYmxlJyApOgotICAgICAgICAg
ICAgICAgIHZhbGlkYXRlZF9wYXlsb2FkWyBrZXkgXSA9M0Qgc2VsZi52YWxpZGF0ZV9ib29sZWFu
KCBrZXksIHY9CmFsICkKLSAgICAgICAgICAgIGVsaWYga2V5ID0zRD0zRCAndGFncyc6Ci0gICAg
ICAgICAgICAgICAgdmFsaWRhdGVkX3BheWxvYWRbIGtleSBdID0zRCBzZWxmLnZhbGlkYXRlX2Fu
ZF9zYW5pdGl6ZV9iYT0Kc2VzdHJpbmdfbGlzdCgga2V5LCB2YWwgKQotICAgICAgICAgICAgZWxp
ZiBrZXkgbm90IGluIHZhbGlkX2J1dF91bmVkaXRhYmxlX2tleXM6Ci0gICAgICAgICAgICAgICAg
cGFzcwotICAgICAgICAgICAgICAgICNsb2cud2FybiggJ3Vua25vd24ga2V5OiAlcycsIHN0cigg
a2V5ICkgKQotICAgICAgICByZXR1cm4gdmFsaWRhdGVkX3BheWxvYWQKKyAgICAjZGVmIF92YWxp
ZGF0ZV9hbmRfcGFyc2VfdXBkYXRlX3BheWxvYWQoIHNlbGYsIHBheWxvYWQgKToKKyAgICAjICAg
ICIiIgorICAgICMgICAgVmFsaWRhdGUgYW5kIHBhcnNlIGluY29tbWluZyBkYXRhIHBheWxvYWQg
Zm9yIGFuIEhEQS4KKyAgICAjICAgICIiIgorICAgICMgICAgIyBUaGlzIGxheWVyIGhhbmRsZXMg
KG1vc3Qgb2YgdGhlIHN0cmljdGVyIGlkaW90IHByb29maW5nKToKKyAgICAjICAgICMgICAtIHVu
a25vd24vdW5hbGxvd2VkIGtleXMKKyAgICAjICAgICMgICAtIGNoYW5naW5nIGRhdGEga2V5cyBm
cm9tIGFwaSBrZXkgdG8gYXR0cmlidXRlIG5hbWUKKyAgICAjICAgICMgICAtIHByb3RlY3Rpb24g
YWdhaW5zdCBiYWQgZGF0YSBmb3JtL3R5cGUKKyAgICAjICAgICMgICAtIHByb3RlY3Rpb24gYWdh
aW5zdCBtYWxpY2lvdXMgZGF0YSBjb250ZW50CisgICAgIyAgICAjIGFsbCBvdGhlciBjb252ZXJz
aW9ucyBhbmQgcHJvY2Vzc2luZyAoc3VjaCBhcyBwZXJtaXNzaW9ucywgZXRjLj0KKSBzaG91bGQg
aGFwcGVuIGRvd24gdGhlIGxpbmUKKyAgICAjCisgICAgIyAgICAjIGtleXMgbGlzdGVkIGhlcmUg
ZG9uJ3QgZXJyb3Igd2hlbiBhdHRlbXB0aW5nIHRvIHNldCwgYnV0IGZhaWwgcz0KaWxlbnRseQor
ICAgICMgICAgIyAgIHRoaXMgYWxsb3dzIFBVVCdpbmcgYW4gZW50aXJlIG1vZGVsIGJhY2sgdG8g
dGhlIHNlcnZlciB3aXRob3U9CnQgYXR0cmlidXRlIGVycm9ycyBvbiB1bmVkaXRhYmxlIGF0dHJz
CisgICAgIyAgICB2YWxpZF9idXRfdW5lZGl0YWJsZV9rZXlzID0zRCAoCisgICAgIyAgICAgICAg
J2lkJywgJ25hbWUnLCAndHlwZScsICdhcGlfdHlwZScsICdtb2RlbF9jbGFzcycsICdoaXN0b3J5
X2lkJz0KLCAnaGlkJywKKyAgICAjICAgICAgICAnYWNjZXNzaWJsZScsICdwdXJnZWQnLCAnc3Rh
dGUnLCAnZGF0YV90eXBlJywgJ2ZpbGVfZXh0JywgJ2ZpPQpsZV9zaXplJywgJ21pc2NfYmx1cmIn
LAorICAgICMgICAgICAgICdkb3dubG9hZF91cmwnLCAndmlzdWFsaXphdGlvbnMnLCAnZGlzcGxh
eV9hcHBzJywgJ2Rpc3BsYXlfdHk9CnBlcycsCisgICAgIyAgICAgICAgJ21ldGFkYXRhX2Ria2V5
JywgJ21ldGFkYXRhX2NvbHVtbl9uYW1lcycsICdtZXRhZGF0YV9jb2x1bW5fdD0KeXBlcycsICdt
ZXRhZGF0YV9jb2x1bW5zJywKKyAgICAjICAgICAgICAnbWV0YWRhdGFfY29tbWVudF9saW5lcycs
ICdtZXRhZGF0YV9kYXRhX2xpbmVzJworICAgICMgICAgKQorICAgICMgICAgdmFsaWRhdGVkX3Bh
eWxvYWQgPTNEIHt9CisgICAgIyAgICBmb3Iga2V5LCB2YWwgaW4gcGF5bG9hZC5pdGVtcygpOgor
ICAgICMgICAgICAgIGlmIHZhbCBpcyBOb25lOgorICAgICMgICAgICAgICAgICBjb250aW51ZQor
ICAgICMgICAgICAgIGlmIGtleSBpbiAoICduYW1lJywgJ2dlbm9tZV9idWlsZCcsICdtaXNjX2lu
Zm8nLCAnYW5ub3RhdGlvbic9CiApOgorICAgICMgICAgICAgICAgICB2YWwgPTNEIHZhbGlkYXRp
b24udmFsaWRhdGVfYW5kX3Nhbml0aXplX2Jhc2VzdHJpbmcoIGtleSw9CiB2YWwgKQorICAgICMg
ICAgICAgICAgICAjVE9ETzogbmVlZCBiZXR0ZXIgcmVtYXAgc3lzdGVtIG9yIGVsaW1pbmF0ZSB0
aGUgbmVlZCBhbHQ9Cm9nZXRoZXIKKyAgICAjICAgICAgICAgICAga2V5ID0zRCAnZGJrZXknIGlm
IGtleSA9M0Q9M0QgJ2dlbm9tZV9idWlsZCcgZWxzZSBrZXkKKyAgICAjICAgICAgICAgICAga2V5
ID0zRCAnaW5mbycgIGlmIGtleSA9M0Q9M0QgJ21pc2NfaW5mbycgZWxzZSBrZXkKKyAgICAjICAg
ICAgICAgICAgdmFsaWRhdGVkX3BheWxvYWRbIGtleSBdID0zRCB2YWwKKyAgICAjICAgICAgICBp
ZiBrZXkgaW4gKCAnZGVsZXRlZCcsICd2aXNpYmxlJyApOgorICAgICMgICAgICAgICAgICB2YWxp
ZGF0ZWRfcGF5bG9hZFsga2V5IF0gPTNEIHZhbGlkYXRpb24udmFsaWRhdGVfYm9vbGVhbig9CiBr
ZXksIHZhbCApCisgICAgIyAgICAgICAgZWxpZiBrZXkgPTNEPTNEICd0YWdzJzoKKyAgICAjICAg
ICAgICAgICAgdmFsaWRhdGVkX3BheWxvYWRbIGtleSBdID0zRCB2YWxpZGF0aW9uLnZhbGlkYXRl
X2FuZF9zYW5pPQp0aXplX2Jhc2VzdHJpbmdfbGlzdCgga2V5LCB2YWwgKQorICAgICMgICAgICAg
IGVsaWYga2V5IG5vdCBpbiB2YWxpZF9idXRfdW5lZGl0YWJsZV9rZXlzOgorICAgICMgICAgICAg
ICAgICBwYXNzCisgICAgIyAgICAgICAgICAgICNsb2cud2FybiggJ3Vua25vd24ga2V5OiAlcycs
IHN0cigga2V5ICkgKQorICAgICMgICAgcmV0dXJuIHZhbGlkYXRlZF9wYXlsb2FkCj0yMAogICAg
IGRlZiBfX2hhbmRsZV91bmtub3duX2NvbnRlbnRzX3R5cGUoIHNlbGYsIHRyYW5zLCBjb250ZW50
c190eXBlICk6CiAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuVW5rbm93bkNvbnRlbnRzVHlwZSgn
VW5rbm93biBjb250ZW50cyB0eXBlOiAlcycgJT0KIHR5cGUpCgpkaWZmIC1yIDg2ZDM5M2JlZTAz
ZWRiZDU1OTI2NTc5NTc1NmFlMzkzZjAxMDdkOWIgLXIgZWIyMTBjY2M2ZDc2NTQ3ZWNhNjlhM2Y9
CjQ5ZGJkOGRiMGE0NWQ1YTg4IGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMv
aGlzdG9yeS5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL2hp
c3RvcnkucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9oaXN0
b3J5LnB5CkBAIC05LDE3ICs5LDI0IEBACiBmcm9tIGdhbGF4eSBpbXBvcnQgZXhjZXB0aW9ucwog
ZnJvbSBnYWxheHkgaW1wb3J0IG1hbmFnZXJzCiBmcm9tIGdhbGF4eS5kYXRhdHlwZXMuZGF0YSBp
bXBvcnQgbmljZV9zaXplCi1mcm9tIGdhbGF4eS5tb2RlbC5pdGVtX2F0dHJzIGltcG9ydCBVc2Vz
QW5ub3RhdGlvbnMsIFVzZXNJdGVtUmF0aW5ncwogZnJvbSBnYWxheHkubW9kZWwub3JtIGltcG9y
dCBhbmRfLCBlYWdlcmxvYWRfYWxsLCBmdW5jCiBmcm9tIGdhbGF4eSBpbXBvcnQgdXRpbAogZnJv
bSBnYWxheHkudXRpbCBpbXBvcnQgUGFyYW1zCiBmcm9tIGdhbGF4eS51dGlsLm9kaWN0IGltcG9y
dCBvZGljdAogZnJvbSBnYWxheHkudXRpbC5zYW5pdGl6ZV9odG1sIGltcG9ydCBzYW5pdGl6ZV9o
dG1sCiBmcm9tIGdhbGF4eS53ZWIgaW1wb3J0IGVycm9yLCB1cmxfZm9yCi1mcm9tIGdhbGF4eS53
ZWIuYmFzZS5jb250cm9sbGVyIGltcG9ydCBCYXNlVUlDb250cm9sbGVyLCBTaGFyYWJsZU1peGlu
LCBVcz0KZXNIaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uTWl4aW4sIFVzZXNIaXN0b3J5TWl4aW4K
KworZnJvbSBnYWxheHkud2ViLmJhc2UuY29udHJvbGxlciBpbXBvcnQgQmFzZVVJQ29udHJvbGxl
cgorZnJvbSBnYWxheHkud2ViLmJhc2UuY29udHJvbGxlciBpbXBvcnQgU2hhcmFibGVNaXhpbgor
ZnJvbSBnYWxheHkud2ViLmJhc2UuY29udHJvbGxlciBpbXBvcnQgVXNlc0hpc3RvcnlEYXRhc2V0
QXNzb2NpYXRpb25NaXhpbgorZnJvbSBnYWxheHkud2ViLmJhc2UuY29udHJvbGxlciBpbXBvcnQg
VXNlc0hpc3RvcnlNaXhpbgogZnJvbSBnYWxheHkud2ViLmJhc2UuY29udHJvbGxlciBpbXBvcnQg
RXhwb3J0c0hpc3RvcnlNaXhpbgogZnJvbSBnYWxheHkud2ViLmJhc2UuY29udHJvbGxlciBpbXBv
cnQgSW1wb3J0c0hpc3RvcnlNaXhpbgorZnJvbSBnYWxheHkubW9kZWwuaXRlbV9hdHRycyBpbXBv
cnQgVXNlc0Fubm90YXRpb25zCitmcm9tIGdhbGF4eS5tb2RlbC5pdGVtX2F0dHJzIGltcG9ydCBV
c2VzSXRlbVJhdGluZ3MKKwogZnJvbSBnYWxheHkud2ViLmJhc2UuY29udHJvbGxlciBpbXBvcnQg
RVJST1IsIElORk8sIFNVQ0NFU1MsIFdBUk5JTkcKKwogZnJvbSBnYWxheHkud2ViLmZyYW1ld29y
ay5oZWxwZXJzIGltcG9ydCBncmlkcywgaWZmLCB0aW1lX2FnbywgZXNjYXBlCj0yMAogbG9nID0z
RCBsb2dnaW5nLmdldExvZ2dlciggX19uYW1lX18gKQoKZGlmZiAtciA4NmQzOTNiZWUwM2VkYmQ1
NTkyNjU3OTU3NTZhZTM5M2YwMTA3ZDliIC1yIGViMjEwY2NjNmQ3NjU0N2VjYTY5YTNmPQo0OWRi
ZDhkYjBhNDVkNWE4OCB0ZXN0L3VuaXQvbWFuYWdlcnMvdGVzdF9EYXRhc2V0TWFuYWdlci5weQot
LS0gYS90ZXN0L3VuaXQvbWFuYWdlcnMvdGVzdF9EYXRhc2V0TWFuYWdlci5weQorKysgYi90ZXN0
L3VuaXQvbWFuYWdlcnMvdGVzdF9EYXRhc2V0TWFuYWdlci5weQpAQCAtMjAsNiArMjAsOSBAQAog
aW1wb3J0IG1vY2sKIGZyb20gdGVzdF9Nb2RlbE1hbmFnZXIgaW1wb3J0IEJhc2VUZXN0Q2FzZQog
ZnJvbSBnYWxheHkubWFuYWdlcnMuZGF0YXNldHMgaW1wb3J0IERhdGFzZXRNYW5hZ2VyCitmcm9t
IGdhbGF4eS5tYW5hZ2Vycy5kYXRhc2V0cyBpbXBvcnQgRGF0YXNldEFzc29jaWF0aW9uTWFuYWdl
cgorZnJvbSBnYWxheHkubWFuYWdlcnMuaGlzdG9yaWVzIGltcG9ydCBIaXN0b3J5TWFuYWdlcgor
ZnJvbSBnYWxheHkubWFuYWdlcnMuaGRhcyBpbXBvcnQgSERBTWFuYWdlcgo9MjAKPTIwCiAjID0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0z
RD0zRD0zRApAQCAtMjksODMgKzMyLDEwMSBAQAo9MjAKPTIwCiAjID0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0K
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRAotY2xhc3Mg
RGF0YXNldE1hbmFnZXJUZXN0Q2FzZSggQmFzZVRlc3RDYXNlICk6CisjY2xhc3MgRGF0YXNldE1h
bmFnZXJUZXN0Q2FzZSggQmFzZVRlc3RDYXNlICk6CisjCisjICAgIGRlZiBzZXRfdXBfbWFuYWdl
cnMoIHNlbGYgKToKKyMgICAgICAgIHN1cGVyKCBEYXRhc2V0TWFuYWdlclRlc3RDYXNlLCBzZWxm
ICkuc2V0X3VwX21hbmFnZXJzKCkKKyMgICAgICAgIHNlbGYuZGF0YXNldF9tZ3IgPTNEIERhdGFz
ZXRNYW5hZ2VyKCBzZWxmLmFwcCApCisjCisjICAgIGRlZiB0ZXN0X2NyZWF0ZSggc2VsZiApOgor
IyAgICAgICAgcHJpbnQgInNob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBhIG5ldyBEYXRhc2V0Igor
IyAgICAgICAgZGF0YXNldDEgPTNEIHNlbGYuZGF0YXNldF9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5z
ICkKKyMgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSggZGF0YXNldDEsIG1vZGVsLkRhdGFz
ZXQgKQorIyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCggZGF0YXNldDEsIHNlbGYudHJhbnMuc2Ff
c2Vzc2lvbi5xdWVyeSggbW9kZWwuRGE9CnRhc2V0ICkuZ2V0KCBkYXRhc2V0MS5pZCApICkKKyMK
KyMgICAgZGVmIHRlc3RfYmFzZSggc2VsZiApOgorIyAgICAgICAgZGF0YXNldDEgPTNEIHNlbGYu
ZGF0YXNldF9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zICkKKyMgICAgICAgIGRhdGFzZXQyID0zRCBz
ZWxmLmRhdGFzZXRfbWdyLmNyZWF0ZSggc2VsZi50cmFucyApCisjCisjICAgICAgICBwcmludCAi
c2hvdWxkIGJlIGFibGUgdG8gcXVlcnkiCisjICAgICAgICBkYXRhc2V0cyA9M0Qgc2VsZi50cmFu
cy5zYV9zZXNzaW9uLnF1ZXJ5KCBtb2RlbC5EYXRhc2V0ICkuYWxsKCkKKyMgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoIHNlbGYuZGF0YXNldF9tZ3IubGlzdCggc2VsZi50cmFucyApLCBkYXRhc2V0
cyApCisjICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCBzZWxmLmRhdGFzZXRfbWdyLm9uZSggc2Vs
Zi50cmFucywgZmlsdGVycz0zRCggbT0Kb2RlbC5EYXRhc2V0LmlkID0zRD0zRCBkYXRhc2V0MS5p
ZCApICksIGRhdGFzZXQxICkKKyMgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYuZGF0YXNl
dF9tZ3IuYnlfaWQoIHNlbGYudHJhbnMsIGRhdGFzZXQxLmlkPQogKSwgZGF0YXNldDEgKQorIyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCggc2VsZi5kYXRhc2V0X21nci5ieV9pZHMoIHNlbGYudHJh
bnMsIFsgZGF0YXNldDI9Ci5pZCwgZGF0YXNldDEuaWQgXSApLCBbIGRhdGFzZXQyLCBkYXRhc2V0
MSBdICkKKyMKKyMgICAgICAgIHByaW50ICJzaG91bGQgYmUgYWJsZSB0byBsaW1pdCBhbmQgb2Zm
c2V0IgorIyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCggc2VsZi5kYXRhc2V0X21nci5saXN0KCBz
ZWxmLnRyYW5zLCBsaW1pdD0zRDEgKSw9CiBkYXRhc2V0c1swOjFdICkKKyMgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoIHNlbGYuZGF0YXNldF9tZ3IubGlzdCggc2VsZi50cmFucywgb2Zmc2V0PTNE
MSApPQosIGRhdGFzZXRzWzE6XSApCisjICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCBzZWxmLmRh
dGFzZXRfbWdyLmxpc3QoIHNlbGYudHJhbnMsIGxpbWl0PTNEMSwgbz0KZmZzZXQ9M0QxICksIGRh
dGFzZXRzWzE6Ml0gKQorIworIyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCggc2VsZi5kYXRhc2V0
X21nci5saXN0KCBzZWxmLnRyYW5zLCBsaW1pdD0zRDAgKSw9CiBbXSApCisjICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCBzZWxmLmRhdGFzZXRfbWdyLmxpc3QoIHNlbGYudHJhbnMsIG9mZnNldD0z
RDMgKT0KLCBbXSApCisjCisjICAgICAgICBwcmludCAic2hvdWxkIGJlIGFibGUgdG8gb3JkZXIi
CisjICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCBzZWxmLmRhdGFzZXRfbWdyLmxpc3QoIHNlbGYu
dHJhbnMsIG9yZGVyX2J5PTNEcz0KcWxhbGNoZW15LmRlc2MoIG1vZGVsLkRhdGFzZXQuY3JlYXRl
X3RpbWUgKSApLAorIyAgICAgICAgICAgIFsgZGF0YXNldDIsIGRhdGFzZXQxIF0gKQorIworIyAg
ICBkZWYgdGVzdF9kZWxldGUoIHNlbGYgKToKKyMgICAgICAgIGl0ZW0xID0zRCBzZWxmLmRhdGFz
ZXRfbWdyLmNyZWF0ZSggc2VsZi50cmFucyApCisjCisjICAgICAgICBwcmludCAic2hvdWxkIGJl
IGFibGUgdG8gZGVsZXRlIGFuZCB1bmRlbGV0ZSBhbiBoZGEiCisjICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKCBpdGVtMS5kZWxldGVkICkKKyMgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYu
ZGF0YXNldF9tZ3IuZGVsZXRlKCBzZWxmLnRyYW5zLCBpdGVtMSApLCBpPQp0ZW0xICkKKyMgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSggaXRlbTEuZGVsZXRlZCApCisjICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCBzZWxmLmRhdGFzZXRfbWdyLnVuZGVsZXRlKCBzZWxmLnRyYW5zLCBpdGVtMSApLD0K
IGl0ZW0xICkKKyMgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoIGl0ZW0xLmRlbGV0ZWQgKQorIwor
IyAgICBkZWYgdGVzdF9wdXJnZV9hbGxvd2VkKCBzZWxmICk6CisjICAgICAgICBzZWxmLnRyYW5z
LmFwcC5jb25maWcuYWxsb3dfdXNlcl9kYXRhc2V0X3B1cmdlID0zRCBUcnVlCisjICAgICAgICBp
dGVtMSA9M0Qgc2VsZi5kYXRhc2V0X21nci5jcmVhdGUoIHNlbGYudHJhbnMgKQorIworIyAgICAg
ICAgcHJpbnQgInNob3VsZCBwdXJnZSBhbiBoZGEgaWYgY29uZmlnIGRvZXMgYWxsb3ciCisjICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKCBpdGVtMS5wdXJnZWQgKQorIyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCggc2VsZi5kYXRhc2V0X21nci5wdXJnZSggc2VsZi50cmFucywgaXRlbTEgKSwgaXQ9
CmVtMSApCisjICAgICAgICBzZWxmLmFzc2VydFRydWUoIGl0ZW0xLnB1cmdlZCApCisjCisjICAg
IGRlZiB0ZXN0X3B1cmdlX25vdF9hbGxvd2VkKCBzZWxmICk6CisjICAgICAgICBzZWxmLnRyYW5z
LmFwcC5jb25maWcuYWxsb3dfdXNlcl9kYXRhc2V0X3B1cmdlID0zRCBGYWxzZQorIyAgICAgICAg
aXRlbTEgPTNEIHNlbGYuZGF0YXNldF9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zICkKKyMKKyMgICAg
ICAgIHByaW50ICJzaG91bGQgcmFpc2UgYW4gZXJyb3Igd2hlbiBwdXJnaW5nIGFuIGhkYSBpZiBj
b25maWcgZG9lcyBuPQpvdCBhbGxvdyIKKyMgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoIGl0ZW0x
LnB1cmdlZCApCisjICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyggZXhjZXB0aW9ucy5Db25maWdE
b2VzTm90QWxsb3dFeGNlcHRpb24sIHNlbGYuZD0KYXRhc2V0X21nci5wdXJnZSwgc2VsZi50cmFu
cywgaXRlbTEgKQorIyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSggaXRlbTEucHVyZ2VkICkKKyMK
KyMgICAgZGVmIHRlc3RfYWNjZXNzaWJsZSggc2VsZiApOgorIyAgICAgICAgb3duZXIgPTNEIHNl
bGYudXNlcl9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zLCAqKnVzZXIyX2RhdGEgKQorIyAgICAgICAg
bm9uX293bmVyID0zRCBzZWxmLnVzZXJfbWdyLmNyZWF0ZSggc2VsZi50cmFucywgKip1c2VyM19k
YXRhICkKKyMKKyMgICAgICAgIGRhdGFzZXQgPTNEIHNlbGYuZGF0YXNldF9tZ3IuY3JlYXRlKCBz
ZWxmLnRyYW5zICkKKyMKKyMgICAgICAgIHByaW50ICIoYnkgZGVmYXVsdCwgZGF0YXNldCBwZXJt
aXNzaW9ucyBhcmUgbGF4KSBzaG91bGQgYmUgYWNjZXNzPQppYmxlIHRvIGFsbCIKKyMgICAgICAg
IGZvciB1c2VyIGluIHNlbGYudXNlcl9tZ3IubGlzdCggc2VsZi50cmFucyApOgorIyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSggc2VsZi5kYXRhc2V0X21nci5pc19hY2Nlc3NpYmxlKCBzZWxm
LnRyYW5zLCA9CmRhdGFzZXQsIHVzZXIgKSApCisjCisjICAgICAgICAjVE9ETzogdGhpcyBpcyAu
Li4gbm90IHdvcmtpbmcuLi4KKyMgICAgICAgIHNlbGYuZGF0YXNldF9tZ3IuZ2l2ZV9hY2Nlc3Nf
cGVybWlzc2lvbiggc2VsZi50cmFucywgZGF0YXNldCwgb3duPQplciApCisjICAgICAgICBzZWxm
LmFzc2VydFRydWUoIHNlbGYuZGF0YXNldF9tZ3IuaXNfYWNjZXNzaWJsZSggc2VsZi50cmFucywg
ZGF0YT0Kc2V0LCBvd25lciApICkKKyMgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoIHNlbGYuZGF0
YXNldF9tZ3IuaXNfYWNjZXNzaWJsZSggc2VsZi50cmFucywgZGF0PQphc2V0LCBub25fb3duZXIg
KSApCisKKworIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPQo9M0Q9M0Q9M0QKK2NsYXNzIERhdGFzZXRBc3NvY2lhdGlvbk1hbmFnZXJUZXN0
Q2FzZSggQmFzZVRlc3RDYXNlICk6Cj0yMAogICAgIGRlZiBzZXRfdXBfbWFuYWdlcnMoIHNlbGYg
KToKLSAgICAgICAgc3VwZXIoIERhdGFzZXRNYW5hZ2VyVGVzdENhc2UsIHNlbGYgKS5zZXRfdXBf
bWFuYWdlcnMoKQotICAgICAgICBzZWxmLmRhdGFzZXRfbWdyID0zRCBEYXRhc2V0TWFuYWdlcigg
c2VsZi5hcHAgKQorICAgICAgICBzdXBlciggRGF0YXNldEFzc29jaWF0aW9uTWFuYWdlclRlc3RD
YXNlLCBzZWxmICkuc2V0X3VwX21hbmFnZXJzKCkKKyAgICAgICAgc2VsZi5kYXRhc2V0X21nciA9
M0QgRGF0YXNldEFzc29jaWF0aW9uTWFuYWdlciggc2VsZi5hcHAgKQorICAgICAgICBzZWxmLmhk
YV9tZ3IgPTNEIEhEQU1hbmFnZXIoIHNlbGYuYXBwICkKKyAgICAgICAgc2VsZi5oaXN0b3J5X21n
ciA9M0QgSGlzdG9yeU1hbmFnZXIoIHNlbGYuYXBwICkKPTIwCi0gICAgZGVmIHRlc3RfY3JlYXRl
KCBzZWxmICk6Ci0gICAgICAgIHByaW50ICJzaG91bGQgYmUgYWJsZSB0byBjcmVhdGUgYSBuZXcg
RGF0YXNldCIKKyAgICBkZWYgdGVzdF9tZXRhZGF0YSggc2VsZiApOgorICAgICAgICBvd25lciA9
M0Qgc2VsZi51c2VyX21nci5jcmVhdGUoIHNlbGYudHJhbnMsICoqdXNlcjJfZGF0YSApCisgICAg
ICAgIGhpc3RvcnkxID0zRCBzZWxmLmhpc3RvcnlfbWdyLmNyZWF0ZSggc2VsZi50cmFucywgbmFt
ZT0zRCdoaXN0b3J5MT0KJywgdXNlcj0zRG93bmVyICkKICAgICAgICAgZGF0YXNldDEgPTNEIHNl
bGYuZGF0YXNldF9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zICkKLSAgICAgICAgc2VsZi5hc3NlcnRJ
c0luc3RhbmNlKCBkYXRhc2V0MSwgbW9kZWwuRGF0YXNldCApCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoIGRhdGFzZXQxLCBzZWxmLnRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIG1vZGVsLkRhdD0K
YXNldCApLmdldCggZGF0YXNldDEuaWQgKSApCj0yMAotICAgIGRlZiB0ZXN0X2Jhc2UoIHNlbGYg
KToKLSAgICAgICAgZGF0YXNldDEgPTNEIHNlbGYuZGF0YXNldF9tZ3IuY3JlYXRlKCBzZWxmLnRy
YW5zICkKLSAgICAgICAgZGF0YXNldDIgPTNEIHNlbGYuZGF0YXNldF9tZ3IuY3JlYXRlKCBzZWxm
LnRyYW5zICkKLQotICAgICAgICBwcmludCAic2hvdWxkIGJlIGFibGUgdG8gcXVlcnkiCi0gICAg
ICAgIGRhdGFzZXRzID0zRCBzZWxmLnRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIG1vZGVsLkRhdGFz
ZXQgKS5hbGwoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCBzZWxmLmRhdGFzZXRfbWdyLmxp
c3QoIHNlbGYudHJhbnMgKSwgZGF0YXNldHMgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCBz
ZWxmLmRhdGFzZXRfbWdyLm9uZSggc2VsZi50cmFucywgZmlsdGVycz0zRCggbW89CmRlbC5EYXRh
c2V0LmlkID0zRD0zRCBkYXRhc2V0MS5pZCApICksIGRhdGFzZXQxICkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCggc2VsZi5kYXRhc2V0X21nci5ieV9pZCggc2VsZi50cmFucywgZGF0YXNldDEu
aWQgPQopLCBkYXRhc2V0MSApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYuZGF0YXNl
dF9tZ3IuYnlfaWRzKCBzZWxmLnRyYW5zLCBbIGRhdGFzZXQyLj0KaWQsIGRhdGFzZXQxLmlkIF0g
KSwgWyBkYXRhc2V0MiwgZGF0YXNldDEgXSApCi0KLSAgICAgICAgcHJpbnQgInNob3VsZCBiZSBh
YmxlIHRvIGxpbWl0IGFuZCBvZmZzZXQiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYu
ZGF0YXNldF9tZ3IubGlzdCggc2VsZi50cmFucywgbGltaXQ9M0QxICksID0KZGF0YXNldHNbMDox
XSApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYuZGF0YXNldF9tZ3IubGlzdCggc2Vs
Zi50cmFucywgb2Zmc2V0PTNEMSApLD0KIGRhdGFzZXRzWzE6XSApCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoIHNlbGYuZGF0YXNldF9tZ3IubGlzdCggc2VsZi50cmFucywgbGltaXQ9M0QxLCBv
Zj0KZnNldD0zRDEgKSwgZGF0YXNldHNbMToyXSApCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCggc2VsZi5kYXRhc2V0X21nci5saXN0KCBzZWxmLnRyYW5zLCBsaW1pdD0zRDAgKSwgPQpbXSAp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYuZGF0YXNldF9tZ3IubGlzdCggc2VsZi50
cmFucywgb2Zmc2V0PTNEMyApLD0KIFtdICkKLQotICAgICAgICBwcmludCAic2hvdWxkIGJlIGFi
bGUgdG8gb3JkZXIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYuZGF0YXNldF9tZ3Iu
bGlzdCggc2VsZi50cmFucywgb3JkZXJfYnk9M0RzcT0KbGFsY2hlbXkuZGVzYyggbW9kZWwuRGF0
YXNldC5jcmVhdGVfdGltZSApICksCi0gICAgICAgICAgICBbIGRhdGFzZXQyLCBkYXRhc2V0MSBd
ICkKLQotICAgIGRlZiB0ZXN0X2RlbGV0ZSggc2VsZiApOgotICAgICAgICBpdGVtMSA9M0Qgc2Vs
Zi5kYXRhc2V0X21nci5jcmVhdGUoIHNlbGYudHJhbnMgKQotCi0gICAgICAgIHByaW50ICJzaG91
bGQgYmUgYWJsZSB0byBkZWxldGUgYW5kIHVuZGVsZXRlIGFuIGhkYSIKLSAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZSggaXRlbTEuZGVsZXRlZCApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNl
bGYuZGF0YXNldF9tZ3IuZGVsZXRlKCBzZWxmLnRyYW5zLCBpdGVtMSApLCBpdD0KZW0xICkKLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKCBpdGVtMS5kZWxldGVkICkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCggc2VsZi5kYXRhc2V0X21nci51bmRlbGV0ZSggc2VsZi50cmFucywgaXRlbTEgKSwg
PQppdGVtMSApCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoIGl0ZW0xLmRlbGV0ZWQgKQotCi0g
ICAgZGVmIHRlc3RfcHVyZ2VfYWxsb3dlZCggc2VsZiApOgotICAgICAgICBzZWxmLnRyYW5zLmFw
cC5jb25maWcuYWxsb3dfdXNlcl9kYXRhc2V0X3B1cmdlID0zRCBUcnVlCi0gICAgICAgIGl0ZW0x
ID0zRCBzZWxmLmRhdGFzZXRfbWdyLmNyZWF0ZSggc2VsZi50cmFucyApCi0KLSAgICAgICAgcHJp
bnQgInNob3VsZCBwdXJnZSBhbiBoZGEgaWYgY29uZmlnIGRvZXMgYWxsb3ciCi0gICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UoIGl0ZW0xLnB1cmdlZCApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
IHNlbGYuZGF0YXNldF9tZ3IucHVyZ2UoIHNlbGYudHJhbnMsIGl0ZW0xICksIGl0ZT0KbTEgKQot
ICAgICAgICBzZWxmLmFzc2VydFRydWUoIGl0ZW0xLnB1cmdlZCApCi0KLSAgICBkZWYgdGVzdF9w
dXJnZV9ub3RfYWxsb3dlZCggc2VsZiApOgotICAgICAgICBzZWxmLnRyYW5zLmFwcC5jb25maWcu
YWxsb3dfdXNlcl9kYXRhc2V0X3B1cmdlID0zRCBGYWxzZQotICAgICAgICBpdGVtMSA9M0Qgc2Vs
Zi5kYXRhc2V0X21nci5jcmVhdGUoIHNlbGYudHJhbnMgKQotCi0gICAgICAgIHByaW50ICJzaG91
bGQgcmFpc2UgYW4gZXJyb3Igd2hlbiBwdXJnaW5nIGFuIGhkYSBpZiBjb25maWcgZG9lcyBubz0K
dCBhbGxvdyIKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSggaXRlbTEucHVyZ2VkICkKLSAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoIGV4Y2VwdGlvbnMuQ29uZmlnRG9lc05vdEFsbG93RXhjZXB0
aW9uLCBzZWxmLmRhPQp0YXNldF9tZ3IucHVyZ2UsIHNlbGYudHJhbnMsIGl0ZW0xICkKLSAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZSggaXRlbTEucHVyZ2VkICkKLQotICAgIGRlZiB0ZXN0X2FjY2Vz
c2libGUoIHNlbGYgKToKLSAgICAgICAgb3duZXIgPTNEIHNlbGYudXNlcl9tZ3IuY3JlYXRlKCBz
ZWxmLnRyYW5zLCAqKnVzZXIyX2RhdGEgKQotICAgICAgICBub25fb3duZXIgPTNEIHNlbGYudXNl
cl9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zLCAqKnVzZXIzX2RhdGEgKQotCi0gICAgICAgIGRhdGFz
ZXQgPTNEIHNlbGYuZGF0YXNldF9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zICkKLQotICAgICAgICBw
cmludCAiKGJ5IGRlZmF1bHQsIGRhdGFzZXQgcGVybWlzc2lvbnMgYXJlIGxheCkgc2hvdWxkIGJl
IGFjY2Vzc2k9CmJsZSB0byBhbGwiCi0gICAgICAgIGZvciB1c2VyIGluIHNlbGYudXNlcl9tZ3Iu
bGlzdCggc2VsZi50cmFucyApOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCBzZWxmLmRh
dGFzZXRfbWdyLmlzX2FjY2Vzc2libGUoIHNlbGYudHJhbnMsIGQ9CmF0YXNldCwgdXNlciApICkK
LQotI1RPRE86IHRoaXMgaXMgLi4uIG5vdCB3b3JraW5nLi4uCi0gICAgICAgIHNlbGYuZGF0YXNl
dF9tZ3IuZ2l2ZV9hY2Nlc3NfcGVybWlzc2lvbiggc2VsZi50cmFucywgZGF0YXNldCwgb3duZT0K
ciApCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSggc2VsZi5kYXRhc2V0X21nci5pc19hY2Nlc3Np
YmxlKCBzZWxmLnRyYW5zLCBkYXRhcz0KZXQsIG93bmVyICkgKQotICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKCBzZWxmLmRhdGFzZXRfbWdyLmlzX2FjY2Vzc2libGUoIHNlbGYudHJhbnMsIGRhdGE9
CnNldCwgbm9uX293bmVyICkgKQorICAgICAgICBwcmludCAic2hvdWxkIGJlIGFibGUgdG8gY3Jl
YXRlIGEgbmV3IEhEQSB3aXRoIGEgc3BlY2lmaWVkIGhpc3Rvcnk9CiBhbmQgZGF0YXNldCIKKyAg
ICAgICAgaGRhMSA9M0Qgc2VsZi5oZGFfbWdyLmNyZWF0ZSggc2VsZi50cmFucywgaGlzdG9yeT0z
RGhpc3RvcnkxLCBkYXRhPQpzZXQ9M0RkYXRhc2V0MSwgaGlkPTNEMSApCj0yMAo9MjAKICMgPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNE
PTNEPTNECgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21t
aXRzL2U2MzM4OGZkNmNiZi8KQ2hhbmdlc2V0OiAgIGU2MzM4OGZkNmNiZgpVc2VyOiAgICAgICAg
Y2FybGZlYmVyaGFyZApEYXRlOiAgICAgICAgMjAxNS0wMS0wNSAxNTozNToyMCswMDowMApTdW1t
YXJ5OiAgICAgTWVyZ2VkIGdhbGF4eS9nYWxheHktY2VudHJhbCBpbnRvIGRlZmF1bHQKQWZmZWN0
ZWQgIzogIDExOSBmaWxlcwoKZGlmZiAtciBlYjIxMGNjYzZkNzY1NDdlY2E2OWEzZjQ5ZGJkOGRi
MGE0NWQ1YTg4IC1yIGU2MzM4OGZkNmNiZjM0M2E3YjAzNDk2PQoxZDEzOWYxNGFkMGRjNjMyNCAu
aGd0YWdzCi0tLSBhLy5oZ3RhZ3MKKysrIGIvLmhndGFncwpAQCAtMjAsNCArMjAsNCBAQAogY2E0
NWI3OGFkYjQxNTJmYzZlNzM5NTUxNGQ0NmViYTZiN2QwYjgzOCByZWxlYXNlXzIwMTQuMDguMTEK
IDU0OGFiMjQ2NjdkNjIwNjc4MDIzN2JkODA3ZjdkODU3YTQ4NGM0NjEgbGF0ZXN0XzIwMTQuMDgu
MTEKIDIwOTI5NDg5MzdhYzMwZWY4MmY3MTQ2M2EyMzVjNjZkMzQ5ODcwODggcmVsZWFzZV8yMDE0
LjEwLjA2Ci03MDg2Yjg3ZDgzYTkwOTJjYmVjZTBmZWM2ZjNlM2VkMDMyNjZiZTBjIGxhdGVzdF8y
MDE0LjEwLjA2Cis1ODM0YjEwNjY0NjJkZDIxOWY2N2MxYzNjYmQ3N2M3OGU3Y2YzYTZjIGxhdGVz
dF8yMDE0LjEwLjA2CgpkaWZmIC1yIGViMjEwY2NjNmQ3NjU0N2VjYTY5YTNmNDlkYmQ4ZGIwYTQ1
ZDVhODggLXIgZTYzMzg4ZmQ2Y2JmMzQzYTdiMDM0OTY9CjFkMTM5ZjE0YWQwZGM2MzI0IGNsaWVu
dC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtc2VjdGlvbi5qcwotLS0gYS9jbGllbnQv
Z2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLXNlY3Rpb24uanMKKysrIGIvY2xpZW50L2dh
bGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy1zZWN0aW9uLmpzCkBAIC0zMTYsNiArMzE2LDEx
IEBACiAgICAgICAgICAgICAgICAgICAgIGZpZWxkID0zRCB0aGlzLl9maWVsZEhpZGRlbihpbnB1
dF9kZWYpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgID0yMAor
ICAgICAgICAgICAgICAgIC8vIGhpZGRlbiBmaWVsZAorICAgICAgICAgICAgICAgIGNhc2UgJ2hp
ZGRlbl9kYXRhJzoKKyAgICAgICAgICAgICAgICAgICAgZmllbGQgPTNEIHRoaXMuX2ZpZWxkSGlk
ZGVuKGlucHV0X2RlZik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgPTIwCiAgICAgICAgICAgICAgICAgLy8gaW50ZWdlciBmaWVsZAogICAgICAgICAgICAgICAg
IGNhc2UgJ2ludGVnZXInOgogICAgICAgICAgICAgICAgICAgICBmaWVsZCA9M0QgdGhpcy5fZmll
bGRTbGlkZXIoaW5wdXRfZGVmKTsKCmRpZmYgLXIgZWIyMTBjY2M2ZDc2NTQ3ZWNhNjlhM2Y0OWRi
ZDhkYjBhNDVkNWE4OCAtciBlNjMzODhmZDZjYmYzNDNhN2IwMzQ5Nj0KMWQxMzlmMTRhZDBkYzYz
MjQgY29uZmlnL2RhdGF0eXBlc19jb25mLnhtbC5zYW1wbGUKLS0tIGEvY29uZmlnL2RhdGF0eXBl
c19jb25mLnhtbC5zYW1wbGUKKysrIGIvY29uZmlnL2RhdGF0eXBlc19jb25mLnhtbC5zYW1wbGUK
QEAgLTMsNiArMyw3IEBACiAgIDxyZWdpc3RyYXRpb24gY29udmVydGVyc19wYXRoPTNEImxpYi9n
YWxheHkvZGF0YXR5cGVzL2NvbnZlcnRlcnMiIGRpc3BsYT0KeV9wYXRoPTNEImRpc3BsYXlfYXBw
bGljYXRpb25zIj48ZGF0YXR5cGUgZXh0ZW5zaW9uPTNEImFiMSIgdHlwZT0zRCJnYWxheHkuPQpk
YXRhdHlwZXMuYmluYXJ5OkFiMSIgbWltZXR5cGU9M0QiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFt
IiBkaXNwbGF5X2luX3VwbG89CmFkPTNEInRydWUiIGRlc2NyaXB0aW9uPTNEIkEgYmluYXJ5IHNl
cXVlbmNlIGZpbGUgaW4gJ2FiMScgZm9ybWF0IHdpdGggYSAnLj0KYWIxJyBmaWxlIGV4dGVuc2lv
bi4gIFlvdSBtdXN0IG1hbnVhbGx5IHNlbGVjdCB0aGlzICdGaWxlIEZvcm1hdCcgd2hlbiB1cGxv
PQphZGluZyB0aGUgZmlsZS4iIGRlc2NyaXB0aW9uX3VybD0zRCJodHRwczovL3dpa2kuZ2FsYXh5
cHJvamVjdC5vcmcvTGVhcm4vRGE9CnRhdHlwZXMjQWIxIi8+PGRhdGF0eXBlIGV4dGVuc2lvbj0z
RCJhZmciIHR5cGU9M0QiZ2FsYXh5LmRhdGF0eXBlcy5hc3NlbWJseT0KOkFtb3MiIGRpc3BsYXlf
aW5fdXBsb2FkPTNEImZhbHNlIiAvPgorICAgIDxkYXRhdHlwZSBleHRlbnNpb249M0QiYXJmZiIg
dHlwZT0zRCJnYWxheHkuZGF0YXR5cGVzLnRleHQ6QXJmZiIgbWltZXQ9CnlwZT0zRCJ0ZXh0L3Bs
YWluIiBkaXNwbGF5X2luX3VwbG9hZD0zRCJUcnVlIiAvPjxkYXRhdHlwZSBleHRlbnNpb249M0Qi
YXNuMT0KIiB0eXBlPTNEImdhbGF4eS5kYXRhdHlwZXMuZGF0YTpHZW5lcmljQXNuMSIgbWltZXR5
cGU9M0QidGV4dC9wbGFpbiIgZGlzcGxhPQp5X2luX3VwbG9hZD0zRCJ0cnVlIiAvPjxkYXRhdHlw
ZSBleHRlbnNpb249M0QiYXNuMS1iaW5hcnkiIHR5cGU9M0QiZ2FsYXh5LmQ9CmF0YXR5cGVzLmJp
bmFyeTpHZW5lcmljQXNuMUJpbmFyeSIgbWltZXR5cGU9M0QiYXBwbGljYXRpb24vb2N0ZXQtc3Ry
ZWFtIiBkaT0Kc3BsYXlfaW5fdXBsb2FkPTNEInRydWUiIC8+PGRhdGF0eXBlIGV4dGVuc2lvbj0z
RCJheHQiIHR5cGU9M0QiZ2FsYXh5LmRhdGF0PQp5cGVzLnNlcXVlbmNlOkF4dCIgZGlzcGxheV9p
bl91cGxvYWQ9M0QidHJ1ZSIgZGVzY3JpcHRpb249M0QiYmxhc3R6IHBhaXJ3aXM9CmUgYWxpZ25t
ZW50IGZvcm1hdC4gIEVhY2ggYWxpZ25tZW50IGJsb2NrIGluIGFuIGF4dCBmaWxlIGNvbnRhaW5z
IHRocmVlIGxpbj0KZXM6IGEgc3VtbWFyeSBsaW5lIGFuZCAyIHNlcXVlbmNlIGxpbmVzLiAgQmxv
Y2tzIGFyZSBzZXBhcmF0ZWQgZnJvbSBvbmUgYW5vPQp0aGVyIGJ5IGJsYW5rIGxpbmVzLiAgVGhl
IHN1bW1hcnkgbGluZSBjb250YWlucyBjaHJvbW9zb21hbCBwb3NpdGlvbiBhbmQgc2k9CnplIGlu
Zm9ybWF0aW9uIGFib3V0IHRoZSBhbGlnbm1lbnQuIEl0IGNvbnNpc3RzIG9mIDkgcmVxdWlyZWQg
ZmllbGRzLiIgZGVzYz0KcmlwdGlvbl91cmw9M0QiaHR0cHM6Ly93aWtpLmdhbGF4eXByb2plY3Qu
b3JnL0xlYXJuL0RhdGF0eXBlcyNBeHQiLz4KQEAgLTI5OCw2ICsyOTksNyBAQAogICAgIDxzbmlm
ZmVyIHR5cGU9M0QiZ2FsYXh5LmRhdGF0eXBlcy5kYXRhOk5ld2ljayIvPjxzbmlmZmVyIHR5cGU9
M0QiZ2FsYXg9CnkuZGF0YXR5cGVzLmRhdGE6TmV4dXMiLz48c25pZmZlciB0eXBlPTNEImdhbGF4
eS5kYXRhdHlwZXMudGV4dDpPYm8iLz4KKyAgICA8c25pZmZlciB0eXBlPTNEImdhbGF4eS5kYXRh
dHlwZXMudGV4dC5BcmZmIi8+PHNuaWZmZXIgdHlwZT0zRCJnYWxheHkuPQpkYXRhdHlwZXMudGV4
dDpJcHluYiIvPjxzbmlmZmVyIHR5cGU9M0QiZ2FsYXh5LmRhdGF0eXBlcy50ZXh0Okpzb24iLz48
c25pZmY9CmVyIHR5cGU9M0QiZ2FsYXh5LmRhdGF0eXBlcy5pbWFnZXM6SnBnIi8+CgpkaWZmIC1y
IGViMjEwY2NjNmQ3NjU0N2VjYTY5YTNmNDlkYmQ4ZGIwYTQ1ZDVhODggLXIgZTYzMzg4ZmQ2Y2Jm
MzQzYTdiMDM0OTY9CjFkMTM5ZjE0YWQwZGM2MzI0IGNvbmZpZy9nYWxheHkuaW5pLnNhbXBsZQot
LS0gYS9jb25maWcvZ2FsYXh5LmluaS5zYW1wbGUKKysrIGIvY29uZmlnL2dhbGF4eS5pbmkuc2Ft
cGxlCkBAIC0xNDgsNyArMTQ4LDcgQEAKICMgVG9vbCBjb25maWcgbWFpbnRhaW5lZCBieSB0b29s
IG1pZ3JhdGlvbiBzY3JpcHRzLiBJZiB5b3UgdXNlIHRoZSBtaWdyYXRpPQpvbgogIyBzY3JpcHRz
IHRvIGluc3RhbGwgdG9vbHMgdGhhdCBoYXZlIGJlZW4gbWlncmF0ZWQgdG8gdGhlIHRvb2wgc2hl
ZCB1cG9uIGE9CiBuZXcKICMgcmVsZWFzZSwgdGhleSB3aWxsIGJlIGFkZGVkIHRvIHRoaXMgdG9v
bCBjb25maWcgZmlsZS4KLSNtaWdyYXRlZF90b29sc19jb25maWcgPTNEIG1pZ3JhdGVkX3Rvb2xz
X2NvbmYueG1sCisjbWlncmF0ZWRfdG9vbHNfY29uZmlnID0zRCBjb25maWcvbWlncmF0ZWRfdG9v
bHNfY29uZi54bWwKPTIwCiAjIEZpbGUgdGhhdCBjb250YWlucyB0aGUgWE1MIHNlY3Rpb24gYW5k
IHRvb2wgdGFncyBmcm9tIGFsbCB0b29sIHBhbmVsIGNvbj0KZmlnCiAjIGZpbGVzIGludGVncmF0
ZWQgaW50byBhIHNpbmdsZSBmaWxlIHRoYXQgZGVmaW5lcyB0aGUgdG9vbCBwYW5lbCBsYXlvdXQu
ID0KIFRoaXMKQEAgLTcxMyw2ICs3MTMsMTMgQEAKICMgKm5vdCogaW5jbHVkZSAnSFRUUF8nIGF0
IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGhlYWRlciBuYW1lLgogI3JlbW90ZV91c2VyX2hlYWRlciA9
M0QgSFRUUF9SRU1PVEVfVVNFUgo9MjAKKyMgSWYgdXNlX3JlbW90ZV91c2VyIGlzIGVuYWJsZWQs
IGFueW9uZSB3aG8gY2FuIGxvZyBpbiB0byB0aGUgR2FsYXh5IGhvc3QgPQptYXkKKyMgaW1wZXJz
b25hdGUgYW55IG90aGVyIHVzZXIgYnkgc2ltcGx5IHNlbmRpbmcgdGhlIGFwcHJvcHJpYXRlIGhl
YWRlci4gVGh1PQpzIGEKKyMgc2VjcmV0IHNoYXJlZCBiZXR3ZWVuIHRoZSB1cHN0cmVhbSBwcm94
eSBzZXJ2ZXIsIGFuZCBHYWxheHkgaXMgcmVxdWlyZWQuCisjIElmIGFueW9uZSBvdGhlciB0aGFu
IHRoZSBHYWxheHkgdXNlciBpcyB1c2luZyB0aGUgc2VydmVyLCB0aGVuIGFwYWNoZS9uZz0KaW54
IHNob3VsZAorIyBwYXNzIGEgdmFsdWUgaW4gdGhlIGhlYWRlciAnR1hfU0VDUkVUJyB0aGF0IGlz
IGlkZW50aWNhbCB0aGUgb25lIGJlbG93CisjcmVtb3RlX3VzZXJfc2VjcmV0ID0zRCBVU0lORyBU
SEUgREVGQVVMVCBJUyBOT1QgU0VDVVJFIQorCiAjIElmIHVzZV9yZW1vdGVfdXNlciBpcyBlbmFi
bGVkLCB5b3UgY2FuIHNldCB0aGlzIHRvIGEgVVJMIHRoYXQgd2lsbCBsb2cgeT0Kb3VyCiAjIHVz
ZXJzIG91dC4KICNyZW1vdGVfdXNlcl9sb2dvdXRfaHJlZiA9M0QgTm9uZQpAQCAtOTEwLDE3ICs5
MTcsMjcgQEAKICNjYWNoZV91c2VyX2pvYl9jb3VudCA9M0QgRmFsc2UKPTIwCiAjIFRvb2xCb3gg
ZmlsdGVyaW5nCi0jIE1vZHVsZXMgZnJvbSBsaWIvZ2FsYXh5L3Rvb2xzL2ZpbHRlcnMvIGNhbiBi
ZSBzcGVjaWZpZWQgaW4gdGhlIGZvbGxvd2luZz0KIGxpbmVzLgotIyB0b29sXyogZmlsdGVycyB3
aWxsIGJlIGFwcGxpZWQgZm9yIGFsbCB1c2VycyBhbmQgY2FuIG5vdCBiZSBjaGFuZ2VkIGJ5IHQ9
CmhlbS4KLSMgdXNlcl90b29sXyogZmlsdGVycyB3aWxsIGJlIHNob3duIHVuZGVyIHVzZXIgcHJl
ZmVyZW5jZXMgYW5kIGNhbiBiZSB0b29nPQpsZWQKLSMgb24gYW5kIG9mZiBieSBydW50aW1lCi0j
dG9vbF9maWx0ZXJzCi0jdG9vbF9sYWJlbF9maWx0ZXJzCi0jdG9vbF9zZWN0aW9uX2ZpbHRlcnMK
KworIyBNb2R1bGVzIGZyb20gbGliL2dhbGF4eS90b29scy90b29sYm94L2ZpbHRlcnMvIGNhbiBi
ZSBzcGVjaWZpZWQgaW4KKyMgdGhlIGZvbGxvd2luZyBsaW5lcy4gIHRvb2xfKiBmaWx0ZXJzIHdp
bGwgYmUgYXBwbGllZCBmb3IgYWxsIHVzZXJzCisjIGFuZCBjYW4gbm90IGJlIGNoYW5nZWQgYnkg
dGhlbS4gIHVzZXJfdG9vbF8qIGZpbHRlcnMgd2lsbCBiZSBzaG93bgorIyB1bmRlciB1c2VyIHBy
ZWZlcmVuY2VzIGFuZCBjYW4gYmUgdG9vZ2xlZCBvbiBhbmQgb2ZmIGJ5CisjIHJ1bnRpbWUuIEV4
YW1wbGUgc2hvd24gYmVsb3cgYXJlIG5vdCByZWFsIGRlZmF1bHRzIChubyBjdXN0b20KKyMgZmls
dGVycyBhcHBsaWVkIGJ5IGRlZnVhbHQpIGJ1dCBjYW4gYmUgZW5hYmxlZCB3aXRoIGJ5IHJlbmFt
aW5nIHRoZQorIyBleGFtcGxlLnB5LnNhbXBsZSBpbiB0aGUgZmlsdGVycyBkaXJlY3RvcnkgdG8g
ZXhhbXBsZS5weS4KKworI3Rvb2xfZmlsdGVycyA9M0QKKyN0b29sX2xhYmVsX2ZpbHRlcnMgPTNE
CisjdG9vbF9zZWN0aW9uX2ZpbHRlcnMgPTNECiAjdXNlcl90b29sX2ZpbHRlcnMgPTNEIGV4YW1w
bGVzOnJlc3RyaWN0X3VwbG9hZF90b19hZG1pbnMsIGV4YW1wbGVzOnJlc3RyaT0KY3RfZW5jb2Rl
CiAjdXNlcl90b29sX3NlY3Rpb25fZmlsdGVycyA9M0QgZXhhbXBsZXM6cmVzdHJpY3RfdGV4dAog
I3VzZXJfdG9vbF9sYWJlbF9maWx0ZXJzID0zRCBleGFtcGxlczpyZXN0cmljdF91cGxvYWRfdG9f
YWRtaW5zLCBleGFtcGxlczo9CnJlc3RyaWN0X2VuY29kZQo9MjAKKyMgVGhlIGJhc2UgbW9kdWxl
cyB0aGF0IGFyZSBzZWFyY2hlZCBmb3IgbW9kdWxlcyBhcyBkZXNjcmliZWQgYWJvdmUKKyMgY2Fu
IGJlIG1vZGlmaWVkIGFuZCBtb2R1bGVzIGV4dGVybmFsIHRvIEdhbGF4eSBjYW4gYmUgc2VhcmNo
ZWQgYnkKKyMgbW9kaWZ5aW5nIHRoZSBmb2xsb3dpbmcgb3B0aW9uLgorI3Rvb2xib3hfZmlsdGVy
X2Jhc2VfbW9kdWxlcyA9M0QgZ2FsYXh5LnRvb2xzLnRvb2xib3guZmlsdGVycyxnYWxheHkudG9v
bHM9Ci5maWx0ZXJzCisKICMgR2FsYXh5IEFwcGxpY2F0aW9uIEludGVybmFsIE1lc3NhZ2UgUXVl
dWUKPTIwCiAjIEdhbGF4eSB1c2VzIEFNUVAgaW50ZXJuYWxseSBUT0RPIG1vcmUgZG9jdW1lbnRh
dGlvbiBvbiB3aGF0IGZvci4KCmRpZmYgLXIgZWIyMTBjY2M2ZDc2NTQ3ZWNhNjlhM2Y0OWRiZDhk
YjBhNDVkNWE4OCAtciBlNjMzODhmZDZjYmYzNDNhN2IwMzQ5Nj0KMWQxMzlmMTRhZDBkYzYzMjQg
Y29uZmlnL3Rvb2xfc2hlZC5pbmkuc2FtcGxlCi0tLSBhL2NvbmZpZy90b29sX3NoZWQuaW5pLnNh
bXBsZQorKysgYi9jb25maWcvdG9vbF9zaGVkLmluaS5zYW1wbGUKQEAgLTY3LDYgKzY3LDEzIEBA
CiAjIGh0dHBzOi8vd2lraS5nYWxheHlwcm9qZWN0Lm9yZy9BZG1pbi9Db25maWcvQXBhY2hlUHJv
eHkKICN1c2VfcmVtb3RlX3VzZXIgPTNEIEZhbHNlCj0yMAorIyBJZiB1c2VfcmVtb3RlX3VzZXIg
aXMgZW5hYmxlZCwgYW55b25lIHdobyBjYW4gbG9nIGluIHRvIHRoZSBHYWxheHkgaG9zdCA9Cm1h
eQorIyBpbXBlcnNvbmF0ZSBhbnkgb3RoZXIgdXNlciBieSBzaW1wbHkgc2VuZGluZyB0aGUgYXBw
cm9wcmlhdGUgaGVhZGVyLiBUaHU9CnMgYQorIyBzZWNyZXQgc2hhcmVkIGJldHdlZW4gdGhlIHVw
c3RyZWFtIHByb3h5IHNlcnZlciwgYW5kIEdhbGF4eSBpcyByZXF1aXJlZC4KKyMgSWYgYW55b25l
IG90aGVyIHRoYW4gdGhlIEdhbGF4eSB1c2VyIGlzIHVzaW5nIHRoZSBzZXJ2ZXIsIHRoZW4gYXBh
Y2hlL25nPQppbnggc2hvdWxkCisjIHBhc3MgYSB2YWx1ZSBpbiB0aGUgaGVhZGVyICdHWF9TRUNS
RVQnIHRoYXQgaXMgaWRlbnRpY2FsIHRoZSBvbmUgYmVsb3cKKyNyZW1vdGVfdXNlcl9zZWNyZXQg
PTNEIGNoYW5nZXRoaXNpbnByb2R1Y3Rpb250b28KKwogIyBDb25maWd1cmF0aW9uIGZvciBkZWJ1
Z2dpbmcgbWlkZGxld2FyZQogZGVidWcgPTNEIHRydWUKIHVzZV9saW50ID0zRCBmYWxzZQoKZGlm
ZiAtciBlYjIxMGNjYzZkNzY1NDdlY2E2OWEzZjQ5ZGJkOGRiMGE0NWQ1YTg4IC1yIGU2MzM4OGZk
NmNiZjM0M2E3YjAzNDk2PQoxZDEzOWYxNGFkMGRjNjMyNCBsaWIvZ2FsYXh5L2NvbmZpZy5weQot
LS0gYS9saWIvZ2FsYXh5L2NvbmZpZy5weQorKysgYi9saWIvZ2FsYXh5L2NvbmZpZy5weQpAQCAt
ODMsNiArODMsNyBAQAogICAgICAgICAjIFRoZSB2YWx1ZSBvZiBtaWdyYXRlZF90b29sc19jb25m
aWcgaXMgdGhlIGZpbGUgcmVzZXJ2ZWQgZm9yIGNvbnQ9CmFpbmluZyBvbmx5IHRob3NlIHRvb2xz
IHRoYXQgaGF2ZSBiZWVuIGVsaW1pbmF0ZWQgZnJvbSB0aGUgZGlzdHJpYnV0aW9uCiAgICAgICAg
ICMgYW5kIG1vdmVkIHRvIHRoZSB0b29sIHNoZWQuCiAgICAgICAgIHNlbGYuaW50ZWdyYXRlZF90
b29sX3BhbmVsX2NvbmZpZyA9M0QgcmVzb2x2ZV9wYXRoKCBrd2FyZ3MuZ2V0KCAnaT0KbnRlZ3Jh
dGVkX3Rvb2xfcGFuZWxfY29uZmlnJywgJ2ludGVncmF0ZWRfdG9vbF9wYW5lbC54bWwnICksIHNl
bGYucm9vdCApCisgICAgICAgIHNlbGYudG9vbGJveF9maWx0ZXJfYmFzZV9tb2R1bGVzID0zRCBs
aXN0aWZ5KCBrd2FyZ3MuZ2V0KCAidG9vbGJveD0KX2ZpbHRlcl9iYXNlX21vZHVsZXMiLCAiZ2Fs
YXh5LnRvb2xzLmZpbHRlcnMsZ2FsYXh5LnRvb2xzLnRvb2xib3guZmlsdGVycyIgPQopICkKICAg
ICAgICAgc2VsZi50b29sX2ZpbHRlcnMgPTNEIGxpc3RpZnkoIGt3YXJncy5nZXQoICJ0b29sX2Zp
bHRlcnMiLCBbXSApLCBkPQpvX3N0cmlwPTNEVHJ1ZSApCiAgICAgICAgIHNlbGYudG9vbF9sYWJl
bF9maWx0ZXJzID0zRCBsaXN0aWZ5KCBrd2FyZ3MuZ2V0KCAidG9vbF9sYWJlbF9maWx0ZT0KcnMi
LCBbXSApLCBkb19zdHJpcD0zRFRydWUgKQogICAgICAgICBzZWxmLnRvb2xfc2VjdGlvbl9maWx0
ZXJzID0zRCBsaXN0aWZ5KCBrd2FyZ3MuZ2V0KCAidG9vbF9zZWN0aW9uX2Y9CmlsdGVycyIsIFtd
ICksIGRvX3N0cmlwPTNEVHJ1ZSApCkBAIC0xMzIsNiArMTMzLDcgQEAKICAgICAgICAgc2VsZi5y
ZW1vdGVfdXNlcl9tYWlsZG9tYWluID0zRCBrd2FyZ3MuZ2V0KCAicmVtb3RlX3VzZXJfbWFpbGRv
bWFpPQpuIiwgTm9uZSApCiAgICAgICAgIHNlbGYucmVtb3RlX3VzZXJfaGVhZGVyID0zRCBrd2Fy
Z3MuZ2V0KCAicmVtb3RlX3VzZXJfaGVhZGVyIiwgJ0hUVD0KUF9SRU1PVEVfVVNFUicgKQogICAg
ICAgICBzZWxmLnJlbW90ZV91c2VyX2xvZ291dF9ocmVmID0zRCBrd2FyZ3MuZ2V0KCAicmVtb3Rl
X3VzZXJfbG9nb3V0X2g9CnJlZiIsIE5vbmUgKQorICAgICAgICBzZWxmLnJlbW90ZV91c2VyX3Nl
Y3JldCA9M0Qga3dhcmdzLmdldCggInJlbW90ZV91c2VyX3NlY3JldCIsIE5vbmU9CiApCiAgICAg
ICAgIHNlbGYucmVxdWlyZV9sb2dpbiA9M0Qgc3RyaW5nX2FzX2Jvb2woIGt3YXJncy5nZXQoICJy
ZXF1aXJlX2xvZ2luIj0KLCAiRmFsc2UiICkgKQogICAgICAgICBzZWxmLmFsbG93X3VzZXJfY3Jl
YXRpb24gPTNEIHN0cmluZ19hc19ib29sKCBrd2FyZ3MuZ2V0KCAiYWxsb3dfdXM9CmVyX2NyZWF0
aW9uIiwgIlRydWUiICkgKQogICAgICAgICBzZWxmLmFsbG93X3VzZXJfZGVsZXRpb24gPTNEIHN0
cmluZ19hc19ib29sKCBrd2FyZ3MuZ2V0KCAiYWxsb3dfdXM9CmVyX2RlbGV0aW9uIiwgIkZhbHNl
IiApICkKQEAgLTcwNiwxMCArNzA4LDcgQEAKPTIwCiAgICAgICAgIGZyb20gZ2FsYXh5IGltcG9y
dCB0b29scwogICAgICAgICBzZWxmLnRvb2xib3ggPTNEIHRvb2xzLlRvb2xCb3goIHRvb2xfY29u
Zmlncywgc2VsZi5jb25maWcudG9vbF9wYXQ9CmgsIHNlbGYgKQotICAgICAgICAjIFNlYXJjaCBz
dXBwb3J0IGZvciB0b29scwotICAgICAgICBpbXBvcnQgZ2FsYXh5LnRvb2xzLnNlYXJjaAotICAg
ICAgICBpbmRleF9oZWxwID0zRCBnZXRhdHRyKCBzZWxmLmNvbmZpZywgImluZGV4X3Rvb2xfaGVs
cCIsIFRydWUgKQotICAgICAgICBzZWxmLnRvb2xib3hfc2VhcmNoID0zRCBnYWxheHkudG9vbHMu
c2VhcmNoLlRvb2xCb3hTZWFyY2goIHNlbGYudG89Cm9sYm94LCBpbmRleF9oZWxwICkKKyAgICAg
ICAgc2VsZi5yZWluZGV4X3Rvb2xfc2VhcmNoKCkKPTIwCiAgICAgICAgIGZyb20gZ2FsYXh5LnRv
b2xzLmRlcHMgaW1wb3J0IGNvbnRhaW5lcnMKICAgICAgICAgZ2FsYXh5X3Jvb3RfZGlyID0zRCBv
cy5wYXRoLmFic3BhdGgoc2VsZi5jb25maWcucm9vdCkKQEAgLTcyMCw3ICs3MTksMTMgQEAKICAg
ICAgICAgICAgIG91dHB1dHNfdG9fd29ya2luZ19kaXJlY3Rvcnk9M0RzZWxmLmNvbmZpZy5vdXRw
dXRzX3RvX3dvcmtpbmdfPQpkaXJlY3RvcnksCiAgICAgICAgICAgICBjb250YWluZXJfaW1hZ2Vf
Y2FjaGVfcGF0aD0zRHNlbGYuY29uZmlnLmNvbnRhaW5lcl9pbWFnZV9jYWNoZT0KX3BhdGgsCiAg
ICAgICAgICkKLSAgICAgICAgc2VsZi5jb250YWluZXJfZmluZGVyID0zRCBnYWxheHkudG9vbHMu
ZGVwcy5jb250YWluZXJzLkNvbnRhaW5lckZpPQpuZGVyKGFwcF9pbmZvKQorICAgICAgICBzZWxm
LmNvbnRhaW5lcl9maW5kZXIgPTNEIGNvbnRhaW5lcnMuQ29udGFpbmVyRmluZGVyKGFwcF9pbmZv
KQorCisgICAgZGVmIHJlaW5kZXhfdG9vbF9zZWFyY2goIHNlbGYgKToKKyAgICAgICAgIyBDYWxs
IHRoaXMgd2hlbiB0b29scyBhcmUgYWRkZWQgb3IgcmVtb3ZlZC4KKyAgICAgICAgaW1wb3J0IGdh
bGF4eS50b29scy5zZWFyY2gKKyAgICAgICAgaW5kZXhfaGVscCA9M0QgZ2V0YXR0ciggc2VsZi5j
b25maWcsICJpbmRleF90b29sX2hlbHAiLCBUcnVlICkKKyAgICAgICAgc2VsZi50b29sYm94X3Nl
YXJjaCA9M0QgZ2FsYXh5LnRvb2xzLnNlYXJjaC5Ub29sQm94U2VhcmNoKCBzZWxmLnRvPQpvbGJv
eCwgaW5kZXhfaGVscCApCj0yMAogICAgIGRlZiBfY29uZmlndXJlX3Rvb2xfZGF0YV90YWJsZXMo
IHNlbGYsIGZyb21fc2hlZF9jb25maWcgKToKICAgICAgICAgZnJvbSBnYWxheHkudG9vbHMuZGF0
YSBpbXBvcnQgVG9vbERhdGFUYWJsZU1hbmFnZXIKCmRpZmYgLXIgZWIyMTBjY2M2ZDc2NTQ3ZWNh
NjlhM2Y0OWRiZDhkYjBhNDVkNWE4OCAtciBlNjMzODhmZDZjYmYzNDNhN2IwMzQ5Nj0KMWQxMzlm
MTRhZDBkYzYzMjQgbGliL2dhbGF4eS9kYXRhdHlwZXMvcmVnaXN0cnkucHkKLS0tIGEvbGliL2dh
bGF4eS9kYXRhdHlwZXMvcmVnaXN0cnkucHkKKysrIGIvbGliL2dhbGF4eS9kYXRhdHlwZXMvcmVn
aXN0cnkucHkKQEAgLTUyOSwxNCArNTI5LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29udmVydGVyLmlkID0zRCB0b29sX2RpY3RbICdndWlkJyBdCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBpZiBkZWFjdGl2YXRlOgotICAgICAg
ICAgICAgICAgICAgICBpZiBjb252ZXJ0ZXIuaWQgaW4gdG9vbGJveC50b29sc19ieV9pZDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGRlbCB0b29sYm94LnRvb2xzX2J5X2lkWyBjb252ZXJ0ZXIu
aWQgXQorICAgICAgICAgICAgICAgICAgICB0b29sYm94LnJlbW92ZV90b29sX2J5X2lkKCBjb252
ZXJ0ZXIuaWQsIHJlbW92ZV9mcm9tX3A9CmFuZWw9M0RGYWxzZSApCiAgICAgICAgICAgICAgICAg
ICAgIGlmIHNvdXJjZV9kYXRhdHlwZSBpbiBzZWxmLmRhdGF0eXBlX2NvbnZlcnRlcnM6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiB0YXJnZXRfZGF0YXR5cGUgaW4gc2VsZi5kYXRhdHlwZV9j
b252ZXJ0ZXJzWyBzbz0KdXJjZV9kYXRhdHlwZSBdOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlbCBzZWxmLmRhdGF0eXBlX2NvbnZlcnRlcnNbIHNvdXJjZV9kYXRhdHlwZSA9Cl1bIHRh
cmdldF9kYXRhdHlwZSBdCiAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nLmRlYnVnKCAiRGVh
Y3RpdmF0ZWQgY29udmVydGVyOiAlcyIsIGNvbnZlcnRlcj0KLmlkICkKICAgICAgICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgICAgICB0b29sYm94LnRvb2xzX2J5X2lkWyBjb252ZXJ0
ZXIuaWQgXSA9M0QgY29udmVydGVyCisgICAgICAgICAgICAgICAgICAgIHRvb2xib3gucmVnaXN0
ZXJfdG9vbCggY29udmVydGVyICkKICAgICAgICAgICAgICAgICAgICAgaWYgc291cmNlX2RhdGF0
eXBlIG5vdCBpbiBzZWxmLmRhdGF0eXBlX2NvbnZlcnRlcnM6CiAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLmRhdGF0eXBlX2NvbnZlcnRlcnNbIHNvdXJjZV9kYXRhdHlwZSBdID0zRCBvZD0K
aWN0KCkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5kYXRhdHlwZV9jb252ZXJ0ZXJzWyBzb3Vy
Y2VfZGF0YXR5cGUgXVsgdGFyZ2V0X2RhPQp0YXR5cGUgXSA9M0QgY29udmVydGVyCkBAIC02NDUs
OCArNjQ0LDcgQEAKICAgICAgICAgdG1wX25hbWUgPTNEIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5
RmlsZSgpCiAgICAgICAgIHRtcF9uYW1lLndyaXRlKCB0b29sX3htbF90ZXh0ICkKICAgICAgICAg
dG1wX25hbWUuZmx1c2goKQotICAgICAgICBzZXRfbWV0YV90b29sID0zRCB0b29sYm94LmxvYWRf
dG9vbCggdG1wX25hbWUubmFtZSApCi0gICAgICAgIHRvb2xib3gudG9vbHNfYnlfaWRbIHNldF9t
ZXRhX3Rvb2wuaWQgXSA9M0Qgc2V0X21ldGFfdG9vbAorICAgICAgICBzZXRfbWV0YV90b29sID0z
RCB0b29sYm94LmxvYWRfaGlkZGVuX3Rvb2woIHRtcF9uYW1lLm5hbWUgKQogICAgICAgICBzZWxm
LnNldF9leHRlcm5hbF9tZXRhZGF0YV90b29sID0zRCBzZXRfbWV0YV90b29sCiAgICAgICAgIHNl
bGYubG9nLmRlYnVnKCAiTG9hZGVkIGV4dGVybmFsIG1ldGFkYXRhIHRvb2w6ICVzIiwgc2VsZi5z
ZXRfZXh0ZT0Kcm5hbF9tZXRhZGF0YV90b29sLmlkICkKPTIwCgpkaWZmIC1yIGViMjEwY2NjNmQ3
NjU0N2VjYTY5YTNmNDlkYmQ4ZGIwYTQ1ZDVhODggLXIgZTYzMzg4ZmQ2Y2JmMzQzYTdiMDM0OTY9
CjFkMTM5ZjE0YWQwZGM2MzI0IGxpYi9nYWxheHkvZGF0YXR5cGVzL3RleHQucHkKLS0tIGEvbGli
L2dhbGF4eS9kYXRhdHlwZXMvdGV4dC5weQorKysgYi9saWIvZ2FsYXh5L2RhdGF0eXBlcy90ZXh0
LnB5CkBAIC02LDYgKzYsNyBAQAogZnJvbSBnYWxheHkuZGF0YXR5cGVzLmRhdGEgaW1wb3J0IFRl
eHQKIGZyb20gZ2FsYXh5LmRhdGF0eXBlcy5kYXRhIGltcG9ydCBnZXRfZmlsZV9wZWVrCiBmcm9t
IGdhbGF4eS5kYXRhdHlwZXMuZGF0YSBpbXBvcnQgbmljZV9zaXplCitmcm9tIGdhbGF4eS5kYXRh
dHlwZXMubWV0YWRhdGEgaW1wb3J0IE1ldGFkYXRhRWxlbWVudAogZnJvbSBnYWxheHkgaW1wb3J0
IHV0aWwKPTIwCiBpbXBvcnQgdGVtcGZpbGUKQEAgLTE1NSwzICsxNTYsMTA2IEBACiAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gRmFsc2UKPTIwCisK
K2NsYXNzIEFyZmYoIFRleHQgKToKKyAgICAiIiIKKyAgICAgICAgQW4gQVJGRiAoQXR0cmlidXRl
LVJlbGF0aW9uIEZpbGUgRm9ybWF0KSBmaWxlIGlzIGFuIEFTQ0lJIHRleHQgZmlsPQplIHRoYXQg
ZGVzY3JpYmVzIGEgbGlzdCBvZiBpbnN0YW5jZXMgc2hhcmluZyBhIHNldCBvZiBhdHRyaWJ1dGVz
Lj0yMAorICAgICAgICBodHRwOi8vd2VrYS53aWtpc3BhY2VzLmNvbS9BUkZGCisgICAgIiIiCisg
ICAgZmlsZV9leHQgPTNEICJhcmZmIgorCisKKyAgICAiIiJBZGQgbWV0YWRhdGEgZWxlbWVudHMi
IiIKKyAgICBNZXRhZGF0YUVsZW1lbnQoIG5hbWU9M0QiY29tbWVudF9saW5lcyIsIGRlZmF1bHQ9
M0QwLCBkZXNjPTNEIk51bWJlciBvPQpmIGNvbW1lbnQgbGluZXMiLCByZWFkb25seT0zRFRydWUs
IG9wdGlvbmFsPTNEVHJ1ZSwgbm9fdmFsdWU9M0QwICkKKyAgICBNZXRhZGF0YUVsZW1lbnQoIG5h
bWU9M0QiY29sdW1ucyIsIGRlZmF1bHQ9M0QwLCBkZXNjPTNEIk51bWJlciBvZiBjb2x1PQptbnMi
LCByZWFkb25seT0zRFRydWUsIHZpc2libGU9M0RUcnVlLCBub192YWx1ZT0zRDAgKQorCisgICAg
ZGVmIHNldF9wZWVrKCBzZWxmLCBkYXRhc2V0LCBpc19tdWx0aV9ieXRlPTNERmFsc2UgKToKKyAg
ICAgICAgaWYgbm90IGRhdGFzZXQuZGF0YXNldC5wdXJnZWQ6CisgICAgICAgICAgICBkYXRhc2V0
LnBlZWsgPTNEIGdldF9maWxlX3BlZWsoIGRhdGFzZXQuZmlsZV9uYW1lLCBpc19tdWx0aV9ieT0K
dGU9M0Rpc19tdWx0aV9ieXRlICkKKyAgICAgICAgICAgIGRhdGFzZXQuYmx1cmIgPTNEICJBdHRy
aWJ1dGUtUmVsYXRpb24gRmlsZSBGb3JtYXQgKEFSRkYpIgorICAgICAgICAgICAgZGF0YXNldC5i
bHVyYiArPTNEICIsICVzIGNvbW1lbnRzLCAlcyBhdHRyaWJ1dGVzIiAlICggZGF0YXNldC49Cm1l
dGFkYXRhLmNvbW1lbnRfbGluZXMsIGRhdGFzZXQubWV0YWRhdGEuY29sdW1ucyApCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBkYXRhc2V0LnBlZWsgPTNEICdmaWxlIGRvZXMgbm90IGV4aXN0
JworICAgICAgICAgICAgZGF0YXNldC5ibHVyYiA9M0QgJ2ZpbGUgcHVyZ2VkIGZyb20gZGlzYycK
KworICAgIGRlZiBzbmlmZiggc2VsZiwgZmlsZW5hbWUgKToKKyAgICAgICAgIiIiCisgICAgICAg
ICAgICBUcnkgdG8gZ3Vlc3MgdGhlIEFyZmYgZmlsZXR5cGUuPTIwCisgICAgICAgICAgICBJdCB1
c3VhbGx5IHN0YXJ0cyB3aXRoIGEgImZvcm1hdC12ZXJzaW9uOiIgc3RyaW5nIGFuZCBoYXMgc2V2
ZT0KcmFsIHN0YW56YXMgd2hpY2ggc3RhcnRzIHdpdGggImlkOiIuCisgICAgICAgICIiIgorICAg
ICAgICB3aXRoIG9wZW4oIGZpbGVuYW1lICkgYXMgaGFuZGxlOgorICAgICAgICAgICAgcmVsYXRp
b25fZm91bmQgPTNEIEZhbHNlCisgICAgICAgICAgICBhdHRyaWJ1dGVfZm91bmQgPTNEIEZhbHNl
CisgICAgICAgICAgICBwcmVmaXggPTNEICIiCisgICAgICAgICAgICBmb3IgbGluZV9jb3VudCwg
bGluZSBpbiBlbnVtZXJhdGUoIGhhbmRsZSApOgorICAgICAgICAgICAgICAgIGlmIGxpbmVfY291
bnQgPiAxMDAwOgorICAgICAgICAgICAgICAgICAgICAjIG9ubHkgaW52ZXN0aWdhdGUgdGhlIGZp
cnN0IDEwMDAgbGluZXMKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAg
ICAgICAgICAgbGluZSA9M0QgbGluZS5zdHJpcCgpCisgICAgICAgICAgICAgICAgaWYgbm90IGxp
bmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBzdGFy
dF9zdHJpbmcgPTNEIGxpbmVbOjIwXS51cHBlcigpCisgICAgICAgICAgICAgICAgaWYgc3RhcnRf
c3RyaW5nLnN0YXJ0c3dpdGgoIkBSRUxBVElPTiIpOgorICAgICAgICAgICAgICAgICAgICByZWxh
dGlvbl9mb3VuZCA9M0QgVHJ1ZQorICAgICAgICAgICAgICAgIGVsaWYgc3RhcnRfc3RyaW5nLnN0
YXJ0c3dpdGgoIkBBVFRSSUJVVEUiKToKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlX2Zv
dW5kID0zRCBUcnVlCisgICAgICAgICAgICAgICAgZWxpZiBzdGFydF9zdHJpbmcuc3RhcnRzd2l0
aCgiQERBVEEiKToKKyAgICAgICAgICAgICAgICAgICAgIyBAREFUQSBzaG91bGQgYmUgdGhlIGxh
c3QgZGF0YSBibG9jaworICAgICAgICAgICAgICAgICAgICBpZiByZWxhdGlvbl9mb3VuZCBhbmQg
YXR0cmlidXRlX2ZvdW5kOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAg
ICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgc2V0X21ldGEoIHNlbGYsIGRhdGFzZXQsICoq
a3dkICk6CisgICAgICAgICIiIgorICAgICAgICAgICAgVHJ5aW5nIHRvIGNvdW50IHRoZSBjb21t
ZW50IGxpbmVzIGFuZCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW49CmNsdWRlZC4KKyAgICAgICAg
ICAgIEEgdHlwaWNhbCBBUkZGIGRhdGEgYmxvY2sgbG9va3MgbGlrZSB0aGlzOgorICAgICAgICAg
ICAgQERBVEEKKyAgICAgICAgICAgIDUuMSwzLjUsMS40LDAuMixJcmlzLXNldG9zYQorICAgICAg
ICAgICAgNC45LDMuMCwxLjQsMC4yLElyaXMtc2V0b3NhCisgICAgICAgICIiIgorICAgICAgICBp
ZiBkYXRhc2V0Lmhhc19kYXRhKCk6CisgICAgICAgICAgICBjb21tZW50X2xpbmVzID0zRCAwCisg
ICAgICAgICAgICBmaXJzdF9yZWFsX2xpbmUgPTNEIEZhbHNlCisgICAgICAgICAgICBkYXRhX2Js
b2NrID0zRCBGYWxzZQorICAgICAgICAgICAgd2l0aCBvcGVuKCBkYXRhc2V0LmZpbGVfbmFtZSAp
IGFzIGhhbmRsZToKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBoYW5kbGU6CisgICAgICAg
ICAgICAgICAgICAgIGxpbmUgPTNEIGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgICAgICAgICBp
ZiBub3QgbGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAg
ICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnJScpIGFuZCBub3QgZmlyc3RfcmVhbF9saW5l
OgorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudF9saW5lcyArPTNEIDEKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X3JlYWxfbGlu
ZSA9M0QgVHJ1ZQorICAgICAgICAgICAgICAgICAgICBpZiBkYXRhX2Jsb2NrOgorICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCd7Jyk6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIyBTcGFyc2UgcmVwcmVzZW50YXRpb24KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiIiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGRhdGEKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgWCwgMCwgWSwgImNsYXNzIEEiLCB7NX0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBAZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7MSBYLCAzIFksIDQg
ImNsYXNzIEEifSwgezV9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPTNEIGxpbmUuc3BsaXQoJ30nLDEpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmlyc3RfcGFydCA9M0QgdG9rZW5bMF0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsYXN0X2NvbHVtbiA9M0QgZmlyc3RfcGFydC5zcGxpdCgnLCcpWy0x
XS5zdHJpPQpwKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljX3ZhbHVlID0z
RCBsYXN0X2NvbHVtbi5zcGxpdCgpWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29s
dW1uX2NvdW50ID0zRCBpbnQobnVtZXJpY192YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiBsZW4odG9rZW4pID4gMToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IyB3ZSBoYXZlIGFuIGFkZGl0aW9uYWwgd2VpZ2h0CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbHVtbl9jb3VudCAtPTNEIDEKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucyA9M0QgbGluZS5zdHJpcCgpLnNw
bGl0KCcsJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5fY291bnQgPTNEIGxl
bihjb2x1bW5zKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvbHVtbnNbLTFdLnN0
cmlwKCkuc3RhcnRzd2l0aCgneycpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
IHdlIGhhdmUgYW4gYWRkaXRpb25hbCB3ZWlnaHQgYXQgdGhlIGVuZAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb2x1bW5fY291bnQgLT0zRCAxCisKKyAgICAgICAgICAgICAgICAg
ICAgICAgICMgV2UgaGF2ZSBub3cgdGhlIGNvbHVtbl9jb3VudCBhbmQgd2Uga25vdyB0aGUgaW5p
PQp0aWFsIGNvbW1lbnQgbGluZXMuIFNvIHdlIGNhbiB0ZXJtaW5hdGUgaGVyZS4KKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGlmIGxpbmVbOjVdLnVw
cGVyKCkgPTNEPTNEICJAREFUQSI6CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX2Jsb2Nr
ID0zRCBUcnVlCisgICAgICAgIGRhdGFzZXQubWV0YWRhdGEuY29tbWVudF9saW5lcyA9M0QgY29t
bWVudF9saW5lcworICAgICAgICBkYXRhc2V0Lm1ldGFkYXRhLmNvbHVtbnMgPTNEIGNvbHVtbl9j
b3VudAorCgpkaWZmIC1yIGViMjEwY2NjNmQ3NjU0N2VjYTY5YTNmNDlkYmQ4ZGIwYTQ1ZDVhODgg
LXIgZTYzMzg4ZmQ2Y2JmMzQzYTdiMDM0OTY9CjFkMTM5ZjE0YWQwZGM2MzI0IGxpYi9nYWxheHkv
am9icy9fX2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L2pvYnMvX19pbml0X18ucHkKKysrIGIv
bGliL2dhbGF4eS9qb2JzL19faW5pdF9fLnB5CkBAIC03MTEsNyArNzExLDcgQEAKICAgICAgICAg
c2VsZi5qb2JfaWQgPTNEIGpvYi5pZAogICAgICAgICBzZWxmLnNlc3Npb25faWQgPTNEIGpvYi5z
ZXNzaW9uX2lkCiAgICAgICAgIHNlbGYudXNlcl9pZCA9M0Qgam9iLnVzZXJfaWQKLSAgICAgICAg
c2VsZi50b29sID0zRCBxdWV1ZS5hcHAudG9vbGJveC50b29sc19ieV9pZC5nZXQoIGpvYi50b29s
X2lkLCBOb25lPQogKQorICAgICAgICBzZWxmLnRvb2wgPTNEIHF1ZXVlLmFwcC50b29sYm94Lmdl
dF90b29sKCBqb2IudG9vbF9pZCwgam9iLnRvb2xfdmU9CnJzaW9uLCBleGFjdD0zRFRydWUgKQog
ICAgICAgICBzZWxmLnF1ZXVlID0zRCBxdWV1ZQogICAgICAgICBzZWxmLmFwcCA9M0QgcXVldWUu
YXBwCiAgICAgICAgIHNlbGYuc2Ffc2Vzc2lvbiA9M0Qgc2VsZi5hcHAubW9kZWwuY29udGV4dAoK
ZGlmZiAtciBlYjIxMGNjYzZkNzY1NDdlY2E2OWEzZjQ5ZGJkOGRiMGE0NWQ1YTg4IC1yIGU2MzM4
OGZkNmNiZjM0M2E3YjAzNDk2PQoxZDEzOWYxNGFkMGRjNjMyNCBsaWIvZ2FsYXh5L2pvYnMvZGVm
ZXJyZWQvZGF0YV90cmFuc2Zlci5weQotLS0gYS9saWIvZ2FsYXh5L2pvYnMvZGVmZXJyZWQvZGF0
YV90cmFuc2Zlci5weQorKysgYi9saWIvZ2FsYXh5L2pvYnMvZGVmZXJyZWQvZGF0YV90cmFuc2Zl
ci5weQpAQCAtMzU2LDcgKzM1Niw3IEBACiAgICAgICAgIGZvciBpLCBzdGVwIGluIGVudW1lcmF0
ZSggd29ya2Zsb3cuc3RlcHMgKToKICAgICAgICAgICAgIGpvYiA9M0QgTm9uZQogICAgICAgICAg
ICAgaWYgc3RlcC50eXBlID0zRD0zRCAndG9vbCcgb3Igc3RlcC50eXBlIGlzIE5vbmU6Ci0gICAg
ICAgICAgICAgICAgdG9vbCA9M0Qgc2VsZi5hcHAudG9vbGJveC50b29sc19ieV9pZFsgc3RlcC50
b29sX2lkIF0KKyAgICAgICAgICAgICAgICB0b29sID0zRCBzZWxmLmFwcC50b29sYm94LmdldF90
b29sKCBzdGVwLnRvb2xfaWQgKQogICAgICAgICAgICAgICAgIGRlZiBjYWxsYmFjayggaW5wdXQs
IHZhbHVlLCBwcmVmaXhlZF9uYW1lLCBwcmVmaXhlZF9sYWJlbCA9Cik6CiAgICAgICAgICAgICAg
ICAgICAgIGlmIGlzaW5zdGFuY2UoIGlucHV0LCBEYXRhVG9vbFBhcmFtZXRlciApOgogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgcHJlZml4ZWRfbmFtZSBpbiBzdGVwLmlucHV0X2Nvbm5lY3Rp
b25zX2J5X25hbWU6CgpkaWZmIC1yIGViMjEwY2NjNmQ3NjU0N2VjYTY5YTNmNDlkYmQ4ZGIwYTQ1
ZDVhODggLXIgZTYzMzg4ZmQ2Y2JmMzQzYTdiMDM0OTY9CjFkMTM5ZjE0YWQwZGM2MzI0IGxpYi9n
YWxheHkvam9icy9oYW5kbGVyLnB5Ci0tLSBhL2xpYi9nYWxheHkvam9icy9oYW5kbGVyLnB5Cisr
KyBiL2xpYi9nYWxheHkvam9icy9oYW5kbGVyLnB5CkBAIC0xMTksNyArMTE5LDcgQEAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgKCBtb2RlbC5Kb2IuaGFuZGxlciA9
M0Q9M0Qgc2VsZi5hPQpwcC5jb25maWcuc2VydmVyX25hbWUgKSApLmFsbCgpCj0yMAogICAgICAg
ICBmb3Igam9iIGluIGpvYnNfYXRfc3RhcnR1cDoKLSAgICAgICAgICAgIGlmIGpvYi50b29sX2lk
IG5vdCBpbiBzZWxmLmFwcC50b29sYm94LnRvb2xzX2J5X2lkOgorICAgICAgICAgICAgaWYgbm90
IHNlbGYuYXBwLnRvb2xib3guaGFzX3Rvb2woIGpvYi50b29sX2lkLCBqb2IudG9vbF92ZXJzaW89
Cm4sIGV4YWN0PTNEVHJ1ZSApOgogICAgICAgICAgICAgICAgIGxvZy53YXJuaW5nKCAiKCVzKSBU
b29sICclcycgcmVtb3ZlZCBmcm9tIHRvb2wgY29uZmlnLCB1bmE9CmJsZSB0byByZWNvdmVyIGpv
YiIgJSAoIGpvYi5pZCwgam9iLnRvb2xfaWQgKSApCiAgICAgICAgICAgICAgICAgc2VsZi5qb2Jf
d3JhcHBlciggam9iICkuZmFpbCggJ1RoaXMgdG9vbCB3YXMgZGlzYWJsZWQgYmVmbz0KcmUgdGhl
IGpvYiBjb21wbGV0ZWQuICBQbGVhc2UgY29udGFjdCB5b3VyIEdhbGF4eSBhZG1pbmlzdHJhdG9y
LicgKQogICAgICAgICAgICAgZWxpZiBqb2Iuam9iX3J1bm5lcl9uYW1lIGlzIG5vdCBOb25lIGFu
ZCBqb2Iuam9iX3J1bm5lcl9leHRlcm49CmFsX2lkIGlzIE5vbmU6CgpkaWZmIC1yIGViMjEwY2Nj
NmQ3NjU0N2VjYTY5YTNmNDlkYmQ4ZGIwYTQ1ZDVhODggLXIgZTYzMzg4ZmQ2Y2JmMzQzYTdiMDM0
OTY9CjFkMTM5ZjE0YWQwZGM2MzI0IGxpYi9nYWxheHkvbWFuYWdlcnMvd29ya2Zsb3dzLnB5Ci0t
LSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvd29ya2Zsb3dzLnB5CisrKyBiL2xpYi9nYWxheHkvbWFu
YWdlcnMvd29ya2Zsb3dzLnB5CkBAIC0yMjQsNyArMjI0LDcgQEAKICAgICAgICAgZXJyb3JzID0z
RCBbXQogICAgICAgICBmb3Iga2V5LCBzdGVwX2RpY3QgaW4gZGF0YVsnc3RlcHMnXS5pdGVyaXRl
bXMoKToKICAgICAgICAgICAgIGlzX3Rvb2wgPTNEIGlzX3Rvb2xfbW9kdWxlX3R5cGUoIHN0ZXBf
ZGljdFsgJ3R5cGUnIF0gKQotICAgICAgICAgICAgaWYgaXNfdG9vbCBhbmQgc3RlcF9kaWN0Wyd0
b29sX2lkJ10gbm90IGluIHRyYW5zLmFwcC50b29sYm94LnQ9Cm9vbHNfYnlfaWQ6CisgICAgICAg
ICAgICBpZiBpc190b29sIGFuZCBub3QgdHJhbnMuYXBwLnRvb2xib3guaGFzX3Rvb2woIHN0ZXBf
ZGljdFsndG9vbD0KX2lkJ10sIGV4YWN0PTNEVHJ1ZSApOgogICAgICAgICAgICAgICAgIGVycm9y
cy5hcHBlbmQoIlN0ZXAgJXMgcmVxdWlyZXMgdG9vbCAnJXMnLiIgJSAoc3RlcF9kaWN0Wyc9Cmlk
J10sIHN0ZXBfZGljdFsndG9vbF9pZCddKSkKICAgICAgICAgaWYgZXJyb3JzOgogICAgICAgICAg
ICAgcmFpc2UgTWlzc2luZ1Rvb2xzRXhjZXB0aW9uKHdvcmtmbG93LCBlcnJvcnMpCgpkaWZmIC1y
IGViMjEwY2NjNmQ3NjU0N2VjYTY5YTNmNDlkYmQ4ZGIwYTQ1ZDVhODggLXIgZTYzMzg4ZmQ2Y2Jm
MzQzYTdiMDM0OTY9CjFkMTM5ZjE0YWQwZGM2MzI0IGxpYi9nYWxheHkvbW9kZWwvdG9vbF9zaGVk
X2luc3RhbGwvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS9tb2RlbC90b29sX3NoZWRfaW5z
dGFsbC9fX2luaXRfXy5weQorKysgYi9saWIvZ2FsYXh5L21vZGVsL3Rvb2xfc2hlZF9pbnN0YWxs
L19faW5pdF9fLnB5CkBAIC0xMSw5ICsxMSw5IEBACj0yMAogY2xhc3MgVG9vbFNoZWRSZXBvc2l0
b3J5KCBvYmplY3QgKToKICAgICBkaWN0X2NvbGxlY3Rpb25fdmlzaWJsZV9rZXlzID0zRCAoICdp
ZCcsICd0b29sX3NoZWQnLCAnbmFtZScsICdvd25lcicsPQogJ2luc3RhbGxlZF9jaGFuZ2VzZXRf
cmV2aXNpb24nLCAnY2hhbmdlc2V0X3JldmlzaW9uJywgJ2N0eF9yZXYnLCAnaW5jbHVkZXM9Cl9k
YXRhdHlwZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rvb2xfc2hl
ZF9zdGF0dXMnLCAnZGVsZXRlZCcsICd1bmluc3Q9CmFsbGVkJywgJ2Rpc3RfdG9fc2hlZCcsICdz
dGF0dXMnLCAnZXJyb3JfbWVzc2FnZScgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICd0b29sX3NoZWRfc3RhdHVzJywgJ2RlbGV0ZWQnLCAndW5pbnM9CnRhbGxlZCcsICdk
aXN0X3RvX3NoZWQnLCAnc3RhdHVzJywgJ2Vycm9yX21lc3NhZ2UnICkKICAgICBkaWN0X2VsZW1l
bnRfdmlzaWJsZV9rZXlzID0zRCAoICdpZCcsICd0b29sX3NoZWQnLCAnbmFtZScsICdvd25lcics
ICdpPQpuc3RhbGxlZF9jaGFuZ2VzZXRfcmV2aXNpb24nLCAnY2hhbmdlc2V0X3JldmlzaW9uJywg
J2N0eF9yZXYnLCAnaW5jbHVkZXNfZGE9CnRhdHlwZXMnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3Rvb2xfc2hlZF9zdGF0dXMnLCAnZGVsZXRlZCcsICd1bmluc3Q9CmFs
bGVkJywgJ2Rpc3RfdG9fc2hlZCcsICdzdGF0dXMnLCAnZXJyb3JfbWVzc2FnZScgKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0b29sX3NoZWRfc3RhdHVzJywgJ2RlbGV0ZWQn
LCAndW5pbnN0YWw9CmxlZCcsICdkaXN0X3RvX3NoZWQnLCAnc3RhdHVzJywgJ2Vycm9yX21lc3Nh
Z2UnICkKICAgICBpbnN0YWxsYXRpb25fc3RhdHVzID0zRCBCdW5jaCggTkVXPTNEJ05ldycsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTE9OSU5HPTNEJ0Nsb25pbmcnLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VUVElOR19UT09MX1ZFUlNJT05TPTNEJ1Nl
dHRpbmcgdG9vbCB2ZXI9CnNpb25zJywKQEAgLTk5LDcgKzk5LDcgQEAKICAgICAgICAgaWYgbm90
IHNlbGYuc2hlZF9jb25maWdfZmlsZW5hbWU6CiAgICAgICAgICAgICBzZWxmLmd1ZXNzX3NoZWRf
Y29uZmlnKCBhcHAsIGRlZmF1bHQ9M0RkZWZhdWx0ICkKICAgICAgICAgaWYgc2VsZi5zaGVkX2Nv
bmZpZ19maWxlbmFtZToKLSAgICAgICAgICAgIGZvciBzaGVkX3Rvb2xfY29uZl9kaWN0IGluIGFw
cC50b29sYm94LnNoZWRfdG9vbF9jb25mczoKKyAgICAgICAgICAgIGZvciBzaGVkX3Rvb2xfY29u
Zl9kaWN0IGluIGFwcC50b29sYm94LmR5bmFtaWNfY29uZnMoIGluY2x1ZGVfPQptaWdyYXRlZF90
b29sX2NvbmY9M0RUcnVlICk6CiAgICAgICAgICAgICAgICAgaWYgc2VsZi5zaGVkX2NvbmZpZ19m
aWxlbmFtZSA9M0Q9M0Qgc2hlZF90b29sX2NvbmZfZGljdFsgJz0KY29uZmlnX2ZpbGVuYW1lJyBd
OgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2hlZF90b29sX2NvbmZfZGljdAogICAgICAg
ICByZXR1cm4gZGVmYXVsdApAQCAtMTE4LDcgKzExOCw3IEBACiAgICAgICAgIG1ldGFkYXRhID0z
RCBzZWxmLm1ldGFkYXRhIG9yIHt9CiAgICAgICAgIGZvciB0b29sIGluIG1ldGFkYXRhLmdldCgg
J3Rvb2xzJywgW10gKToKICAgICAgICAgICAgIHRvb2xfaWRzLmFwcGVuZCggdG9vbC5nZXQoICdn
dWlkJyApICkKLSAgICAgICAgZm9yIHNoZWRfdG9vbF9jb25mX2RpY3QgaW4gYXBwLnRvb2xib3gu
c2hlZF90b29sX2NvbmZzOgorICAgICAgICBmb3Igc2hlZF90b29sX2NvbmZfZGljdCBpbiBhcHAu
dG9vbGJveC5keW5hbWljX2NvbmZzKCBpbmNsdWRlX21pZ3I9CmF0ZWRfdG9vbF9jb25mPTNEVHJ1
ZSApOgogICAgICAgICAgICAgbmFtZSA9M0Qgc2hlZF90b29sX2NvbmZfZGljdFsgJ2NvbmZpZ19m
aWxlbmFtZScgXQogICAgICAgICAgICAgZm9yIGVsZW0gaW4gc2hlZF90b29sX2NvbmZfZGljdFsg
J2NvbmZpZ19lbGVtcycgXToKICAgICAgICAgICAgICAgICBpZiBlbGVtLnRhZyA9M0Q9M0QgJ3Rv
b2wnOgpAQCAtMTM3LDcgKzEzNyw3IEBACiAgICAgICAgIGlmIHNlbGYuaW5jbHVkZXNfZGF0YXR5
cGVzOgogICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHNlYXJjaCBieSBmaWxlIHBhdGhzIGhlcmUs
IHdoaWNoIGlzIGxlc3MgZGVzaXJhYmw9CmUuCiAgICAgICAgICAgICB0b29sX3NoZWQgPTNEIGNv
bW1vbl91dGlsLnJlbW92ZV9wcm90b2NvbF9hbmRfcG9ydF9mcm9tX3Rvb2xfcz0KaGVkX3VybCgg
c2VsZi50b29sX3NoZWQgKQotICAgICAgICAgICAgZm9yIHNoZWRfdG9vbF9jb25mX2RpY3QgaW4g
YXBwLnRvb2xib3guc2hlZF90b29sX2NvbmZzOgorICAgICAgICAgICAgZm9yIHNoZWRfdG9vbF9j
b25mX2RpY3QgaW4gYXBwLnRvb2xib3guZHluYW1pY19jb25mcyggaW5jbHVkZV89Cm1pZ3JhdGVk
X3Rvb2xfY29uZj0zRFRydWUgKToKICAgICAgICAgICAgICAgICB0b29sX3BhdGggPTNEIHNoZWRf
dG9vbF9jb25mX2RpY3RbICd0b29sX3BhdGgnIF0KICAgICAgICAgICAgICAgICByZWxhdGl2ZV9w
YXRoID0zRCBvcy5wYXRoLmpvaW4oIHRvb2xfcGF0aCwgdG9vbF9zaGVkLCAncmVwPQpvcycsIHNl
bGYub3duZXIsIHNlbGYubmFtZSwgc2VsZi5pbnN0YWxsZWRfY2hhbmdlc2V0X3JldmlzaW9uICkK
ICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyggcmVsYXRpdmVfcGF0aCApOgpAQCAt
Mjg0LDcgKzI4NCw3IEBACj0yMAogICAgIGRlZiByZXBvX3BhdGgoIHNlbGYsIGFwcCApOgogICAg
ICAgICB0b29sX3NoZWQgPTNEIGNvbW1vbl91dGlsLnJlbW92ZV9wcm90b2NvbF9hbmRfcG9ydF9m
cm9tX3Rvb2xfc2hlZF89CnVybCggc2VsZi50b29sX3NoZWQgKQotICAgICAgICBmb3IgaW5kZXgs
IHNoZWRfdG9vbF9jb25mX2RpY3QgaW4gZW51bWVyYXRlKCBhcHAudG9vbGJveC5zaGVkX3Rvb2w9
Cl9jb25mcyApOgorICAgICAgICBmb3Igc2hlZF90b29sX2NvbmZfZGljdCBpbiBhcHAudG9vbGJv
eC5keW5hbWljX2NvbmZzKCBpbmNsdWRlX21pZ3I9CmF0ZWRfdG9vbF9jb25mPTNEVHJ1ZSApOgog
ICAgICAgICAgICAgdG9vbF9wYXRoID0zRCBzaGVkX3Rvb2xfY29uZl9kaWN0WyAndG9vbF9wYXRo
JyBdCiAgICAgICAgICAgICByZWxhdGl2ZV9wYXRoID0zRCBvcy5wYXRoLmpvaW4oIHRvb2xfcGF0
aCwgdG9vbF9zaGVkLCAncmVwb3MnLD0KIHNlbGYub3duZXIsIHNlbGYubmFtZSwgc2VsZi5pbnN0
YWxsZWRfY2hhbmdlc2V0X3JldmlzaW9uICkKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3Rz
KCByZWxhdGl2ZV9wYXRoICk6CkBAIC0zNTYsMTIgKzM1NiwxMiBAQAogICAgICAgICAgICAgZm9y
IHJkX3R1cCBpbiByZF90dXBzOgogICAgICAgICAgICAgICAgIGlmIGxlbiggcmRfdHVwICkgPTNE
PTNEIDU6CiAgICAgICAgICAgICAgICAgICAgIHRvb2xfc2hlZCwgbmFtZSwgb3duZXIsIGNoYW5n
ZXNldF9yZXZpc2lvbiwgcHJpb3JfaW5zdD0KYWxsYXRpb25fcmVxdWlyZWQsIG9ubHlfaWZfY29t
cGlsaW5nX2NvbnRhaW5lZF90ZCA9M0QgXAotICAgICAgICAgICAgICAgICAgICBjb21tb25fdXRp
bC5wYXJzZV9yZXBvc2l0b3J5X2RlcGVuZGVuY3lfdHVwbGUoIHJkX3R1cCw9CiBjb250YWluc19l
cnJvcj0zREZhbHNlICkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbl91dGlsLnBhcnNl
X3JlcG9zaXRvcnlfZGVwZW5kZW5jeV90dXBsZSggcmRfPQp0dXAsIGNvbnRhaW5zX2Vycm9yPTNE
RmFsc2UgKQogICAgICAgICAgICAgICAgICAgICBpZiBhc2Jvb2woIHByaW9yX2luc3RhbGxhdGlv
bl9yZXF1aXJlZCApOgogICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRfcmRfdHVwc190
aGF0X211c3RfYmVfaW5zdGFsbGVkLmFwcGVuZCggKCA9CnRvb2xfc2hlZCwgbmFtZSwgb3duZXIs
IGNoYW5nZXNldF9yZXZpc2lvbiwgJ1RydWUnLCAnRmFsc2UnICkgKQogICAgICAgICAgICAgICAg
IGVsaWYgbGVuKCByZF90dXAgKSA9M0Q9M0QgNjoKICAgICAgICAgICAgICAgICAgICAgdG9vbF9z
aGVkLCBuYW1lLCBvd25lciwgY2hhbmdlc2V0X3JldmlzaW9uLCBwcmlvcl9pbnN0PQphbGxhdGlv
bl9yZXF1aXJlZCwgb25seV9pZl9jb21waWxpbmdfY29udGFpbmVkX3RkID0zRCBcCi0gICAgICAg
ICAgICAgICAgICAgIGNvbW1vbl91dGlsLnBhcnNlX3JlcG9zaXRvcnlfZGVwZW5kZW5jeV90dXBs
ZSggcmRfdHVwLD0KIGNvbnRhaW5zX2Vycm9yPTNERmFsc2UgKQorICAgICAgICAgICAgICAgICAg
ICAgICAgY29tbW9uX3V0aWwucGFyc2VfcmVwb3NpdG9yeV9kZXBlbmRlbmN5X3R1cGxlKCByZF89
CnR1cCwgY29udGFpbnNfZXJyb3I9M0RGYWxzZSApCiAgICAgICAgICAgICAgICAgICAgICMgVGhl
IHJlcG9zaXRvcnkgZGVwZW5kZW5jeSB3aWxsIG9ubHkgYmUgcmVxdWlyZWQgdG8gYj0KZSBwcmV2
aW91c2x5IGluc3RhbGxlZCBpZiBpdCBkb2VzIG5vdCBmYWxsIGludG8gdGhlIGNhdGVnb3J5IG9m
CiAgICAgICAgICAgICAgICAgICAgICMgYSByZXBvc2l0b3J5IHRoYXQgbXVzdCBiZSBpbnN0YWxs
ZWQgb25seSBzbyB0aGF0IGl0cz0KIGNvbnRhaW5lZCB0b29sIGRlcGVuZGVuY3kgY2FuIGJlIHVz
ZWQgZm9yIGNvbXBpbGluZyB0aGUgdG9vbAogICAgICAgICAgICAgICAgICAgICAjIGRlcGVuZGVu
Y3kgb2YgdGhlIGRlcGVuZGVudCByZXBvc2l0b3J5LgpAQCAtNDkzLDEyICs0OTMsMTQgQEAKPTIw
Cj0yMAogY2xhc3MgUmVwb3NpdG9yeVJlcG9zaXRvcnlEZXBlbmRlbmN5QXNzb2NpYXRpb24oIG9i
amVjdCApOgorCiAgICAgZGVmIF9faW5pdF9fKCBzZWxmLCB0b29sX3NoZWRfcmVwb3NpdG9yeV9p
ZD0zRE5vbmUsIHJlcG9zaXRvcnlfZGVwZW5kZT0KbmN5X2lkPTNETm9uZSApOgogICAgICAgICBz
ZWxmLnRvb2xfc2hlZF9yZXBvc2l0b3J5X2lkID0zRCB0b29sX3NoZWRfcmVwb3NpdG9yeV9pZAog
ICAgICAgICBzZWxmLnJlcG9zaXRvcnlfZGVwZW5kZW5jeV9pZCA9M0QgcmVwb3NpdG9yeV9kZXBl
bmRlbmN5X2lkCj0yMAo9MjAKIGNsYXNzIFJlcG9zaXRvcnlEZXBlbmRlbmN5KCBvYmplY3QgKToK
KwogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgdG9vbF9zaGVkX3JlcG9zaXRvcnlfaWQ9M0ROb25l
ICk6CiAgICAgICAgIHNlbGYudG9vbF9zaGVkX3JlcG9zaXRvcnlfaWQgPTNEIHRvb2xfc2hlZF9y
ZXBvc2l0b3J5X2lkCj0yMApAQCAtNjQ3LDYgKzY0OSw3IEBACj0yMAo9MjAKIGNsYXNzIFRvb2xW
ZXJzaW9uQXNzb2NpYXRpb24oIG9iamVjdCApOgorCiAgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBp
ZD0zRE5vbmUsIHRvb2xfaWQ9M0ROb25lLCBwYXJlbnRfaWQ9M0ROb25lICk6CiAgICAgICAgIHNl
bGYuaWQgPTNEIGlkCiAgICAgICAgIHNlbGYudG9vbF9pZCA9M0QgdG9vbF9pZApAQCAtNjU0LDYg
KzY1Nyw3IEBACj0yMAo9MjAKIGNsYXNzIE1pZ3JhdGVUb29scyggb2JqZWN0ICk6CisKICAgICBk
ZWYgX19pbml0X18oIHNlbGYsIHJlcG9zaXRvcnlfaWQ9M0ROb25lLCByZXBvc2l0b3J5X3BhdGg9
M0ROb25lLCB2ZXJzPQppb249M0ROb25lICk6CiAgICAgICAgIHNlbGYucmVwb3NpdG9yeV9pZCA9
M0QgcmVwb3NpdG9yeV9pZAogICAgICAgICBzZWxmLnJlcG9zaXRvcnlfcGF0aCA9M0QgcmVwb3Np
dG9yeV9wYXRoCgpkaWZmIC1yIGViMjEwY2NjNmQ3NjU0N2VjYTY5YTNmNDlkYmQ4ZGIwYTQ1ZDVh
ODggLXIgZTYzMzg4ZmQ2Y2JmMzQzYTdiMDM0OTY9CjFkMTM5ZjE0YWQwZGM2MzI0IGxpYi9nYWxh
eHkvdG9vbHMvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS90b29scy9fX2luaXRfXy5weQor
KysgYi9saWIvZ2FsYXh5L3Rvb2xzL19faW5pdF9fLnB5CkBAIC03LDIwICs3LDEyIEBACiBpbXBv
cnQganNvbgogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwotaW1wb3J0IHBpcGVzCiBpbXBvcnQg
cmUKIGltcG9ydCBzaHV0aWwKLWltcG9ydCBzeXMKLWltcG9ydCBzdHJpbmcKLWltcG9ydCB0YXJm
aWxlCi1pbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aHJlYWRpbmcKLWltcG9ydCB0cmFjZWJhY2sK
IGltcG9ydCB0eXBlcwogaW1wb3J0IHVybGxpYgo9MjAKLWZyb20gbWF0aCBpbXBvcnQgaXNpbmYK
LQogZnJvbSBnYWxheHkgaW1wb3J0IGVnZ3MKIGVnZ3MucmVxdWlyZSggIk1hcmt1cFNhZmUiICkg
ICMgTWFya3VwU2FmZSBtdXN0IGxvYWQgYmVmb3JlIG1ha28KIGVnZ3MucmVxdWlyZSggIk1ha28i
ICkKQEAgLTMyLDE1ICsyNCwxMiBAQAogZnJvbSBlbGVtZW50dHJlZSBpbXBvcnQgRWxlbWVudFRy
ZWUKIGZyb20gbWFrby50ZW1wbGF0ZSBpbXBvcnQgVGVtcGxhdGUKIGZyb20gcGFzdGUgaW1wb3J0
IGh0dHBleGNlcHRpb25zCi1mcm9tIHNxbGFsY2hlbXkgaW1wb3J0IGFuZF8KPTIwCi1mcm9tIGdh
bGF4eSBpbXBvcnQgam9icywgbW9kZWwKLWZyb20gZ2FsYXh5LmpvYnMuZXJyb3JfbGV2ZWwgaW1w
b3J0IFN0ZGlvRXJyb3JMZXZlbAorZnJvbSBnYWxheHkgaW1wb3J0IG1vZGVsCiBmcm9tIGdhbGF4
eS5kYXRhdHlwZXMubWV0YWRhdGEgaW1wb3J0IEpvYkV4dGVybmFsT3V0cHV0TWV0YWRhdGFXcmFw
cGVyCiBmcm9tIGdhbGF4eSBpbXBvcnQgZXhjZXB0aW9ucwotZnJvbSBnYWxheHkuam9icyBpbXBv
cnQgUGFyYWxsZWxpc21JbmZvCi1mcm9tIGdhbGF4eS50b29scyBpbXBvcnQgd2F0Y2hlcgogZnJv
bSBnYWxheHkudG9vbHMuYWN0aW9ucyBpbXBvcnQgRGVmYXVsdFRvb2xBY3Rpb24KK2Zyb20gZ2Fs
YXh5LnRvb2xzLmFjdGlvbnMudXBsb2FkIGltcG9ydCBVcGxvYWRUb29sQWN0aW9uCiBmcm9tIGdh
bGF4eS50b29scy5hY3Rpb25zLmRhdGFfc291cmNlIGltcG9ydCBEYXRhU291cmNlVG9vbEFjdGlv
bgogZnJvbSBnYWxheHkudG9vbHMuYWN0aW9ucy5kYXRhX21hbmFnZXIgaW1wb3J0IERhdGFNYW5h
Z2VyVG9vbEFjdGlvbgogZnJvbSBnYWxheHkudG9vbHMuZGVwcyBpbXBvcnQgYnVpbGRfZGVwZW5k
ZW5jeV9tYW5hZ2VyCkBAIC01NCwyNiArNDMsMjEgQEAKIGZyb20gZ2FsYXh5LnRvb2xzLnBhcmFt
ZXRlcnMuaW5wdXRfdHJhbnNsYXRpb24gaW1wb3J0IFRvb2xJbnB1dFRyYW5zbGF0b3IKIGZyb20g
Z2FsYXh5LnRvb2xzLnBhcmFtZXRlcnMub3V0cHV0IGltcG9ydCBUb29sT3V0cHV0QWN0aW9uR3Jv
dXAKIGZyb20gZ2FsYXh5LnRvb2xzLnBhcmFtZXRlcnMudmFsaWRhdGlvbiBpbXBvcnQgTGF0ZVZh
bGlkYXRpb25FcnJvcgotZnJvbSBnYWxheHkudG9vbHMuZmlsdGVycyBpbXBvcnQgRmlsdGVyRmFj
dG9yeQogZnJvbSBnYWxheHkudG9vbHMudGVzdCBpbXBvcnQgcGFyc2VfdGVzdHMKIGZyb20gZ2Fs
YXh5LnRvb2xzLnBhcnNlciBpbXBvcnQgZ2V0X3Rvb2xfc291cmNlCiBmcm9tIGdhbGF4eS50b29s
cy5wYXJzZXIueG1sIGltcG9ydCBYbWxQYWdlU291cmNlCi1mcm9tIGdhbGF4eS51dGlsIGltcG9y
dCBsaXN0aWZ5LCBwYXJzZV94bWwsIHJzdF90b19odG1sLCBzdHJpbmdfYXNfYm9vbCwgcz0KdHJp
bmdfdG9fb2JqZWN0LCB4bWxfdGV4dCwgeG1sX3RvX3N0cmluZworZnJvbSBnYWxheHkudG9vbHMu
dG9vbGJveCBpbXBvcnQgQWJzdHJhY3RUb29sQm94Citmcm9tIGdhbGF4eS51dGlsIGltcG9ydCBy
c3RfdG9faHRtbCwgc3RyaW5nX2FzX2Jvb2wsIHN0cmluZ190b19vYmplY3QKIGZyb20gZ2FsYXh5
LnRvb2xzLnBhcmFtZXRlcnMubWV0YSBpbXBvcnQgZXhwYW5kX21ldGFfcGFyYW1ldGVycwogZnJv
bSBnYWxheHkudXRpbC5idW5jaCBpbXBvcnQgQnVuY2gKIGZyb20gZ2FsYXh5LnV0aWwuZXhwcmVz
c2lvbnMgaW1wb3J0IEV4cHJlc3Npb25Db250ZXh0CiBmcm9tIGdhbGF4eS51dGlsLmhhc2hfdXRp
bCBpbXBvcnQgaG1hY19uZXcKLWZyb20gZ2FsYXh5LnV0aWwubm9uZV9saWtlIGltcG9ydCBOb25l
RGF0YXNldAogZnJvbSBnYWxheHkudXRpbC5vZGljdCBpbXBvcnQgb2RpY3QKIGZyb20gZ2FsYXh5
LnV0aWwudGVtcGxhdGUgaW1wb3J0IGZpbGxfdGVtcGxhdGUKIGZyb20gZ2FsYXh5LndlYiBpbXBv
cnQgdXJsX2ZvcgotZnJvbSBnYWxheHkud2ViLmZvcm1fYnVpbGRlciBpbXBvcnQgU2VsZWN0Rmll
bGQKLWZyb20gZ2FsYXh5LndlYi5mcmFtZXdvcmsuaGVscGVycyBpbXBvcnQgZXNjYXBlCiBmcm9t
IGdhbGF4eS5tb2RlbC5pdGVtX2F0dHJzIGltcG9ydCBEaWN0aWZpYWJsZQotZnJvbSBnYWxheHku
bW9kZWwgaW1wb3J0IFdvcmtmbG93Ci1mcm9tIHRvb2xfc2hlZC51dGlsIGltcG9ydCBjb21tb25f
dXRpbAogZnJvbSB0b29sX3NoZWQudXRpbCBpbXBvcnQgc2hlZF91dGlsX2NvbW1vbiBhcyBzdWMK
LWZyb20gLmxvYWRlciBpbXBvcnQgbG9hZF90b29sLCB0ZW1wbGF0ZV9tYWNyb19wYXJhbXMsIHJh
d190b29sX3htbF90cmVlLCBpPQptcG9ydGVkX21hY3JvX3BhdGhzCitmcm9tIC5sb2FkZXIgaW1w
b3J0IHRlbXBsYXRlX21hY3JvX3BhcmFtcywgcmF3X3Rvb2xfeG1sX3RyZWUsIGltcG9ydGVkX21h
Yz0Kcm9fcGF0aHMKIGZyb20gLmV4ZWN1dGUgaW1wb3J0IGV4ZWN1dGUgYXMgZXhlY3V0ZV9qb2IK
IGZyb20gLndyYXBwZXJzIGltcG9ydCAoCiAgICAgVG9vbFBhcmFtZXRlclZhbHVlV3JhcHBlciwK
QEAgLTg1LDYgKzY5LDcgQEAKICAgICBEYXRhc2V0TGlzdFdyYXBwZXIsCiAgICAgRGF0YXNldENv
bGxlY3Rpb25XcmFwcGVyLAogKQoraW1wb3J0IGdhbGF4eS5qb2JzCj0yMAo9MjAKIGxvZyA9M0Qg
bG9nZ2luZy5nZXRMb2dnZXIoIF9fbmFtZV9fICkKQEAgLTEwOCw2NDUgKzkzLDI1IEBACiAgICAg
cGFzcwo9MjAKPTIwCi1kZWYgdG9fZGljdF9oZWxwZXIoIG9iaiwga3dhcmdzICk6Ci0gICAgIiIi
IEhlbHBlciBmdW5jdGlvbiB0aGF0IHByb3ZpZGVzIHRoZSBhcHByb3ByaWF0ZSBrd2FyZ3MgdG8g
dG9fZGljdCBhbj0KIG9iamVjdC4gIiIiCi0KLSAgICAjIExhYmVsLnRvX2RpY3QgY2Fubm90IGhh
dmUga3dhcmdzLgotICAgIGlmIGlzaW5zdGFuY2UoIG9iaiwgVG9vbFNlY3Rpb25MYWJlbCApOgot
ICAgICAgICBrd2FyZ3MgPTNEIHt9Ci0KLSAgICByZXR1cm4gb2JqLnRvX2RpY3QoICoqa3dhcmdz
ICkKLQotCi1jbGFzcyBUb29sQm94KCBvYmplY3QsIERpY3RpZmlhYmxlICk6Ci0gICAgIiIiQ29u
dGFpbmVyIGZvciBhIGNvbGxlY3Rpb24gb2YgdG9vbHMiIiIKK2NsYXNzIFRvb2xCb3goIEFic3Ry
YWN0VG9vbEJveCApOgorICAgICIiIiBBIGRlcml2YXRpdmUgb2YgQWJzdHJhY3RUb29sQm94IHdp
dGgga25vd2xlZGdlIGFib3V0IFRvb2wgaW50ZXJuYWw9CnMgLQorICAgIGhvdyB0byBjb25zdHJ1
Y3QgdGhlbSwgYWN0aW9uIHR5cGVzLCBkZXBlbmRlbmN5IG1hbmFnZW1lbnQsIGV0Yy4uLi4KKyAg
ICAiIiIKPTIwCiAgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBjb25maWdfZmlsZW5hbWVzLCB0b29s
X3Jvb3RfZGlyLCBhcHAgKToKLSAgICAgICAgIiIiCi0gICAgICAgIENyZWF0ZSBhIHRvb2xib3gg
ZnJvbSB0aGUgY29uZmlnIGZpbGVzIG5hbWVkIGJ5IGBjb25maWdfZmlsZW5hbWVzYD0KLCB1c2lu
ZwotICAgICAgICBgdG9vbF9yb290X2RpcmAgYXMgdGhlIGJhc2UgZGlyZWN0b3J5IGZvciBmaW5k
aW5nIGluZGl2aWR1YWwgdG9vbCA9CmNvbmZpZyBmaWxlcy4KLSAgICAgICAgIiIiCi0gICAgICAg
ICMgVGhlIHNoZWRfdG9vbF9jb25mcyBsaXN0IGNvbnRhaW5zIGRpY3Rpb25hcmllcyBzdG9yaW5n
IGluZm9ybWF0aT0Kb24gYWJvdXQgdGhlIHRvb2xzIGRlZmluZWQgaW4gZWFjaAotICAgICAgICAj
IHNoZWQtcmVsYXRlZCBzaGVkX3Rvb2xfY29uZi54bWwgZmlsZS4KLSAgICAgICAgc2VsZi5zaGVk
X3Rvb2xfY29uZnMgPTNEIFtdCi0gICAgICAgIHNlbGYudG9vbHNfYnlfaWQgPTNEIHt9Ci0gICAg
ICAgIHNlbGYud29ya2Zsb3dzX2J5X2lkID0zRCB7fQotICAgICAgICAjIEluLW1lbW9yeSBkaWN0
aW9uYXJ5IHRoYXQgZGVmaW5lcyB0aGUgbGF5b3V0IG9mIHRoZSB0b29sIHBhbmVsLgotICAgICAg
ICBzZWxmLnRvb2xfcGFuZWwgPTNEIG9kaWN0KCkKLSAgICAgICAgc2VsZi5pbmRleCA9M0QgMAot
ICAgICAgICBzZWxmLmRhdGFfbWFuYWdlcl90b29scyA9M0Qgb2RpY3QoKQotICAgICAgICAjIEZp
bGUgdGhhdCBjb250YWlucyB0aGUgWE1MIHNlY3Rpb24gYW5kIHRvb2wgdGFncyBmcm9tIGFsbCB0
b29sIHA9CmFuZWwgY29uZmlnIGZpbGVzIGludGVncmF0ZWQgaW50byBhCi0gICAgICAgICMgc2lu
Z2xlIGZpbGUgdGhhdCBkZWZpbmVzIHRoZSB0b29sIHBhbmVsIGxheW91dC4gIFRoaXMgZmlsZSBj
YW4gYj0KZSBjaGFuZ2VkIGJ5IHRoZSBHYWxheHkgYWRtaW5pc3RyYXRvcgotICAgICAgICAjIChp
biBhIHdheSBzaW1pbGFyIHRvIHRoZSBzaW5nbGUgdG9vbF9jb25mLnhtbCBmaWxlIGluIHRoZSBw
YXN0KSA9CnRvIGFsdGVyIHRoZSBsYXlvdXQgb2YgdGhlIHRvb2wgcGFuZWwuCi0gICAgICAgIHNl
bGYuaW50ZWdyYXRlZF90b29sX3BhbmVsX2NvbmZpZyA9M0QgYXBwLmNvbmZpZy5pbnRlZ3JhdGVk
X3Rvb2xfcD0KYW5lbF9jb25maWcKLSAgICAgICAgIyBJbi1tZW1vcnkgZGljdGlvbmFyeSB0aGF0
IGRlZmluZXMgdGhlIGxheW91dCBvZiB0aGUgdG9vbF9wYW5lbC54PQptbCBmaWxlIG9uIGRpc2su
Ci0gICAgICAgIHNlbGYuaW50ZWdyYXRlZF90b29sX3BhbmVsID0zRCBvZGljdCgpCi0gICAgICAg
IHNlbGYuaW50ZWdyYXRlZF90b29sX3BhbmVsX2NvbmZpZ19oYXNfY29udGVudHMgPTNEIG9zLnBh
dGguZXhpc3RzKD0KIHNlbGYuaW50ZWdyYXRlZF90b29sX3BhbmVsX2NvbmZpZyApIGFuZCBvcy5z
dGF0KCBzZWxmLmludGVncmF0ZWRfdG9vbF9wYW5lPQpsX2NvbmZpZyApLnN0X3NpemUgPiAwCi0g
ICAgICAgIGlmIHNlbGYuaW50ZWdyYXRlZF90b29sX3BhbmVsX2NvbmZpZ19oYXNfY29udGVudHM6
Ci0gICAgICAgICAgICBzZWxmLmxvYWRfaW50ZWdyYXRlZF90b29sX3BhbmVsX2tleXMoKQotICAg
ICAgICAjIFRoZSBmb2xsb3dpbmcgcmVmZXJzIHRvIHRoZSB0b29sX3BhdGggY29uZmlnIHNldHRp
bmcgZm9yIGJhY2t3YXI9CmQgY29tcGF0aWJpbGl0eS4gIFRoZSBzaGVkLXJlbGF0ZWQKLSAgICAg
ICAgIyAoZS5nLiwgc2hlZF90b29sX2NvbmYueG1sKSBmaWxlcyBpbmNsdWRlIHRoZSB0b29sX3Bh
dGggYXR0cmlidXRlPQogd2l0aGluIHRoZSA8dG9vbGJveD4gdGFnLgotICAgICAgICBzZWxmLnRv
b2xfcm9vdF9kaXIgPTNEIHRvb2xfcm9vdF9kaXIKLSAgICAgICAgc2VsZi5hcHAgPTNEIGFwcAot
ICAgICAgICBzZWxmLnRvb2xfd2F0Y2hlciA9M0Qgd2F0Y2hlci5nZXRfd2F0Y2hlciggc2VsZiwg
YXBwLmNvbmZpZyApCi0gICAgICAgIHNlbGYuZmlsdGVyX2ZhY3RvcnkgPTNEIEZpbHRlckZhY3Rv
cnkoIHNlbGYgKQotICAgICAgICBzZWxmLmluaXRfZGVwZW5kZW5jeV9tYW5hZ2VyKCkKLSAgICAg
ICAgY29uZmlnX2ZpbGVuYW1lcyA9M0QgbGlzdGlmeSggY29uZmlnX2ZpbGVuYW1lcyApCi0gICAg
ICAgIGZvciBjb25maWdfZmlsZW5hbWUgaW4gY29uZmlnX2ZpbGVuYW1lczoKLSAgICAgICAgICAg
IGlmIG9zLnBhdGguaXNkaXIoIGNvbmZpZ19maWxlbmFtZSApOgotICAgICAgICAgICAgICAgIGRp
cmVjdG9yeV9jb250ZW50cyA9M0Qgc29ydGVkKCBvcy5saXN0ZGlyKCBjb25maWdfZmlsZW5hbWU9
CiApICkKLSAgICAgICAgICAgICAgICBkaXJlY3RvcnlfY29uZmlnX2ZpbGVzID0zRCBbIGNvbmZp
Z19maWxlIGZvciBjb25maWdfZmlsZSBpPQpuIGRpcmVjdG9yeV9jb250ZW50cyBpZiBjb25maWdf
ZmlsZS5lbmRzd2l0aCggIi54bWwiICkgXQotICAgICAgICAgICAgICAgIGNvbmZpZ19maWxlbmFt
ZXMucmVtb3ZlKCBjb25maWdfZmlsZW5hbWUgKQotICAgICAgICAgICAgICAgIGNvbmZpZ19maWxl
bmFtZXMuZXh0ZW5kKCBkaXJlY3RvcnlfY29uZmlnX2ZpbGVzICkKLSAgICAgICAgZm9yIGNvbmZp
Z19maWxlbmFtZSBpbiBjb25maWdfZmlsZW5hbWVzOgotICAgICAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgICAgIHNlbGYuaW5pdF90b29scyggY29uZmlnX2ZpbGVuYW1lICkKLSAgICAgICAgICAg
IGV4Y2VwdDoKLSAgICAgICAgICAgICAgICBsb2cuZXhjZXB0aW9uKCAiRXJyb3IgbG9hZGluZyB0
b29scyBkZWZpbmVkIGluIGNvbmZpZyAlcyIsPQogY29uZmlnX2ZpbGVuYW1lICkKLSAgICAgICAg
aWYgc2VsZi5hcHAubmFtZSA9M0Q9M0QgJ2dhbGF4eScgYW5kIHNlbGYuaW50ZWdyYXRlZF90b29s
X3BhbmVsX2NvPQpuZmlnX2hhc19jb250ZW50czoKLSAgICAgICAgICAgICMgTG9hZCBzZWxmLnRv
b2xfcGFuZWwgYmFzZWQgb24gdGhlIG9yZGVyIGluIHNlbGYuaW50ZWdyYXRlZF90PQpvb2xfcGFu
ZWwuCi0gICAgICAgICAgICBzZWxmLmxvYWRfdG9vbF9wYW5lbCgpCi0gICAgICAgIGlmIGFwcC5j
b25maWcudXBkYXRlX2ludGVncmF0ZWRfdG9vbF9wYW5lbDoKLSAgICAgICAgICAgICMgV3JpdGUg
dGhlIGN1cnJlbnQgaW4tbWVtb3J5IGludGVncmF0ZWRfdG9vbF9wYW5lbCB0byB0aGUgaW50PQpl
Z3JhdGVkX3Rvb2xfcGFuZWwueG1sIGZpbGUuCi0gICAgICAgICAgICAjIFRoaXMgd2lsbCBjb3Zl
ciBjYXNlcyB3aGVyZSB0aGUgR2FsYXh5IGFkbWluaXN0cmF0b3IgbWFudWFsbD0KeSBlZGl0ZWQg
b25lIG9yIG1vcmUgb2YgdGhlIHRvb2wgcGFuZWwKLSAgICAgICAgICAgICMgY29uZmlnIGZpbGVz
LCBhZGRpbmcgb3IgcmVtb3ZpbmcgbG9jYWxseSBkZXZlbG9wZWQgdG9vbHMgb3IgPQp3b3JrZmxv
d3MuICBUaGUgdmFsdWUgb2YgaW50ZWdyYXRlZF90b29sX3BhbmVsCi0gICAgICAgICAgICAjIHdp
bGwgYmUgRmFsc2Ugd2hlbiB0aGluZ3MgbGlrZSBmdW5jdGlvbmFsIHRlc3RzIGFyZSB0aGUgY2Fs
bD0KZXIuCi0gICAgICAgICAgICBzZWxmLmZpeF9pbnRlZ3JhdGVkX3Rvb2xfcGFuZWxfZGljdCgp
Ci0gICAgICAgICAgICBzZWxmLndyaXRlX2ludGVncmF0ZWRfdG9vbF9wYW5lbF9jb25maWdfZmls
ZSgpCisgICAgICAgIHN1cGVyKCBUb29sQm94LCBzZWxmICkuX19pbml0X18oCisgICAgICAgICAg
ICBjb25maWdfZmlsZW5hbWVzPTNEY29uZmlnX2ZpbGVuYW1lcywKKyAgICAgICAgICAgIHRvb2xf
cm9vdF9kaXI9M0R0b29sX3Jvb3RfZGlyLAorICAgICAgICAgICAgYXBwPTNEYXBwLAorICAgICAg
ICApCisgICAgICAgIHNlbGYuX2luaXRfZGVwZW5kZW5jeV9tYW5hZ2VyKCkKPTIwCi0gICAgZGVm
IGZpeF9pbnRlZ3JhdGVkX3Rvb2xfcGFuZWxfZGljdCggc2VsZiApOgotICAgICAgICAjIEhBQ0s6
IGluc3RlYWQgb2YgZml4aW5nIGFmdGVyIHRoZSBmYWN0LCBJIHN1Z2dlc3Qgc29tZSBjb21iaW5h
dGk9Cm9uIG9mOgotICAgICAgICAjICAxKSBhZGp1c3RpbmcgaW5pdF90b29scygpIGFuZCBjYWxs
ZWQgbWV0aG9kcyB0byBnZXQgdGhpcyByaWdodAotICAgICAgICAjICAyKSByZWRlc2lnbmluZyB0
aGUgY29kZSBhbmQvb3IgZGF0YSBzdHJ1Y3R1cmUgdXNlZCB0byByZWFkL3dyaXQ9CmUgaW50ZWdy
YXRlZF90b29sX3BhbmVsLnhtbAotICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBzZWxmLmludGVn
cmF0ZWRfdG9vbF9wYW5lbC5pdGVyaXRlbXMoKToKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uo
IHZhbHVlLCBUb29sU2VjdGlvbiApOgotICAgICAgICAgICAgICAgIGZvciBzZWN0aW9uX2tleSwg
c2VjdGlvbl92YWx1ZSBpbiB2YWx1ZS5lbGVtcy5pdGVyaXRlbXMoKToKLSAgICAgICAgICAgICAg
ICAgICAgaWYgc2VjdGlvbl92YWx1ZSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgaXNpbnN0YW5jZSggc2VjdGlvbl92YWx1ZSwgVG9vbCApOgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHRvb2xfaWQgPTNEIHNlY3Rpb25fa2V5WzU6XQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhbHVlLmVsZW1zW3NlY3Rpb25fa2V5XSA9M0Qgc2VsZi50b29sc19ieV9pZC49
CmdldCggdG9vbF9pZCApCi0gICAgICAgICAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uo
IHNlY3Rpb25fdmFsdWUsIFdvcmtmbG93ICk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
d29ya2Zsb3dfaWQgPTNEIHNlY3Rpb25fa2V5Wzk6XQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhbHVlLmVsZW1zW3NlY3Rpb25fa2V5XSA9M0Qgc2VsZi53b3JrZmxvd3NfYnk9Cl9pZC5n
ZXQoIHdvcmtmbG93X2lkICkKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdG9vbHNfYnlfaWQoIHNl
bGYgKToKKyAgICAgICAgIyBEZXByZWNhdGVkIG1ldGhvZCwgVE9ETyAtIGVsaW1pbmF0ZSBjYWxs
cyB0byB0aGlzIGluIHRlc3QvLgorICAgICAgICByZXR1cm4gc2VsZi5fdG9vbHNfYnlfaWQKPTIw
Ci0gICAgZGVmIGluaXRfdG9vbHMoIHNlbGYsIGNvbmZpZ19maWxlbmFtZSApOgotICAgICAgICAi
IiIKLSAgICAgICAgUmVhZCB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGFuZCBsb2FkIGVhY2ggdG9v
bC4gIFRoZSBmb2xsb3dpbmcgdGFnPQpzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkOgotCi0gICAg
ICAgIC4uIHJhdzo6IHhtbAotCi0gICAgICAgICAgICA8dG9vbGJveD4KLSAgICAgICAgICAgICAg
ICA8dG9vbCBmaWxlPTNEImRhdGFfc291cmNlL3VwbG9hZC54bWwiLz4gICAgICAgICAgICAjIHRv
b2xzPQogb3V0c2lkZSBzZWN0aW9ucwotICAgICAgICAgICAgICAgIDxsYWJlbCB0ZXh0PTNEIkJh
c2ljIFRvb2xzIiBpZD0zRCJiYXNpY190b29scyIgLz4gICAgIyBsYWI9CmVscyBvdXRzaWRlIHNl
Y3Rpb25zCi0gICAgICAgICAgICAgICAgPHdvcmtmbG93IGlkPTNEIjUyOWZkNjFhYjFjNmNjMzYi
IC8+ICAgICAgICAgICAgICAgIyB3b3JrZj0KbG93cyBvdXRzaWRlIHNlY3Rpb25zCi0gICAgICAg
ICAgICAgICAgPHNlY3Rpb24gbmFtZT0zRCJHZXQgRGF0YSIgaWQ9M0QiZ2V0ZXh0Ij4gICAgICAg
ICAgICAjIHNlYz0KdGlvbnMKLSAgICAgICAgICAgICAgICAgICAgPHRvb2wgZmlsZT0zRCJkYXRh
X3NvdXJjZS9iaW9tYXJ0LnhtbCIgLz4gICAgICAjIHRvb2xzPQogaW5zaWRlIHNlY3Rpb25zCi0g
ICAgICAgICAgICAgICAgICAgIDxsYWJlbCB0ZXh0PTNEIkluIFNlY3Rpb24iIGlkPTNEImluX3Nl
Y3Rpb24iIC8+ICAjIGxhYj0KZWxzIGluc2lkZSBzZWN0aW9ucwotICAgICAgICAgICAgICAgICAg
ICA8d29ya2Zsb3cgaWQ9M0QiYWRiNWY1YzkzZjgyNzk0OSIgLz4gICAgICAgICAgICMgd29ya2Y9
Cmxvd3MgaW5zaWRlIHNlY3Rpb25zCi0gICAgICAgICAgICAgICAgPC9zZWN0aW9uPgotICAgICAg
ICAgICAgPC90b29sYm94PgotCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLmFwcC5jb25m
aWcuZ2V0X2Jvb2woICdlbmFibGVfdG9vbF90YWdzJywgRmFsc2UgKToKLSAgICAgICAgICAgIGxv
Zy5pbmZvKCJyZW1vdmluZyBhbGwgdG9vbCB0YWcgYXNzb2NpYXRpb25zICgiICsgc3RyKCBzZWxm
LnNhPQpfc2Vzc2lvbi5xdWVyeSggc2VsZi5hcHAubW9kZWwuVG9vbFRhZ0Fzc29jaWF0aW9uICku
Y291bnQoKSApICsgIikiICkKLSAgICAgICAgICAgIHNlbGYuc2Ffc2Vzc2lvbi5xdWVyeSggc2Vs
Zi5hcHAubW9kZWwuVG9vbFRhZ0Fzc29jaWF0aW9uICkuZGVsPQpldGUoKQotICAgICAgICAgICAg
c2VsZi5zYV9zZXNzaW9uLmZsdXNoKCkKLSAgICAgICAgbG9nLmluZm8oICJQYXJzaW5nIHRoZSB0
b29sIGNvbmZpZ3VyYXRpb24gJXMiICUgY29uZmlnX2ZpbGVuYW1lICkKLSAgICAgICAgdHJlZSA9
M0QgcGFyc2VfeG1sKCBjb25maWdfZmlsZW5hbWUgKQotICAgICAgICByb290ID0zRCB0cmVlLmdl
dHJvb3QoKQotICAgICAgICB0b29sX3BhdGggPTNEIHJvb3QuZ2V0KCAndG9vbF9wYXRoJyApCi0g
ICAgICAgIGlmIHRvb2xfcGF0aDoKLSAgICAgICAgICAgICMgV2UncmUgcGFyc2luZyBhIHNoZWRf
dG9vbF9jb25mIGZpbGUgc2luY2Ugd2UgaGF2ZSBhIHRvb2xfcGF0PQpoIGF0dHJpYnV0ZS4KLSAg
ICAgICAgICAgIHBhcnNpbmdfc2hlZF90b29sX2NvbmYgPTNEIFRydWUKLSAgICAgICAgICAgICMg
S2VlcCBhbiBpbi1tZW1vcnkgbGlzdCBvZiB4bWwgZWxlbWVudHMgdG8gZW5hYmxlIHBlcnNpc3Rl
bmNlPQogb2YgdGhlIGNoYW5naW5nIHRvb2wgY29uZmlnLgotICAgICAgICAgICAgY29uZmlnX2Vs
ZW1zID0zRCBbXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcGFyc2luZ19zaGVkX3Rvb2xf
Y29uZiA9M0QgRmFsc2UKLSAgICAgICAgdG9vbF9wYXRoID0zRCBzZWxmLl9fcmVzb2x2ZV90b29s
X3BhdGgodG9vbF9wYXRoLCBjb25maWdfZmlsZW5hbWUpCi0gICAgICAgICMgT25seSBsb2FkIHRo
ZSBwYW5lbF9kaWN0IHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucy4KLSAgICAgICAgbG9hZF9wYW5l
bF9kaWN0ID0zRCBub3Qgc2VsZi5pbnRlZ3JhdGVkX3Rvb2xfcGFuZWxfY29uZmlnX2hhc19jb250
PQplbnRzCi0gICAgICAgIGZvciBfLCBlbGVtIGluIGVudW1lcmF0ZSggcm9vdCApOgotICAgICAg
ICAgICAgaW5kZXggPTNEIHNlbGYuaW5kZXgKLSAgICAgICAgICAgIHNlbGYuaW5kZXggKz0zRCAx
Ci0gICAgICAgICAgICBpZiBwYXJzaW5nX3NoZWRfdG9vbF9jb25mOgotICAgICAgICAgICAgICAg
IGNvbmZpZ19lbGVtcy5hcHBlbmQoIGVsZW0gKQotICAgICAgICAgICAgaWYgZWxlbS50YWcgPTNE
PTNEICd0b29sJzoKLSAgICAgICAgICAgICAgICBzZWxmLmxvYWRfdG9vbF90YWdfc2V0KCBlbGVt
LCBzZWxmLnRvb2xfcGFuZWwsIHNlbGYuaW50ZWdyPQphdGVkX3Rvb2xfcGFuZWwsIHRvb2xfcGF0
aCwgbG9hZF9wYW5lbF9kaWN0LCBndWlkPTNEZWxlbS5nZXQoICdndWlkJyApLCBpbmQ9CmV4PTNE
aW5kZXggKQotICAgICAgICAgICAgZWxpZiBlbGVtLnRhZyA9M0Q9M0QgJ3dvcmtmbG93JzoKLSAg
ICAgICAgICAgICAgICBzZWxmLmxvYWRfd29ya2Zsb3dfdGFnX3NldCggZWxlbSwgc2VsZi50b29s
X3BhbmVsLCBzZWxmLmluPQp0ZWdyYXRlZF90b29sX3BhbmVsLCBsb2FkX3BhbmVsX2RpY3QsIGlu
ZGV4PTNEaW5kZXggKQotICAgICAgICAgICAgZWxpZiBlbGVtLnRhZyA9M0Q9M0QgJ3NlY3Rpb24n
OgotICAgICAgICAgICAgICAgIHNlbGYubG9hZF9zZWN0aW9uX3RhZ19zZXQoIGVsZW0sIHRvb2xf
cGF0aCwgbG9hZF9wYW5lbF9kaWM9CnQsIGluZGV4PTNEaW5kZXggKQotICAgICAgICAgICAgZWxp
ZiBlbGVtLnRhZyA9M0Q9M0QgJ2xhYmVsJzoKLSAgICAgICAgICAgICAgICBzZWxmLmxvYWRfbGFi
ZWxfdGFnX3NldCggZWxlbSwgc2VsZi50b29sX3BhbmVsLCBzZWxmLmludGVnPQpyYXRlZF90b29s
X3BhbmVsLCBsb2FkX3BhbmVsX2RpY3QsIGluZGV4PTNEaW5kZXggKQotICAgICAgICAgICAgZWxp
ZiBlbGVtLnRhZyA9M0Q9M0QgJ3Rvb2xfZGlyJzoKLSAgICAgICAgICAgICAgICBzZWxmLmxvYWRf
dG9vbGRpcl90YWdfc2V0KCBlbGVtLCBzZWxmLnRvb2xfcGFuZWwsIHNlbGYuaW50PQplZ3JhdGVk
X3Rvb2xfcGFuZWwsIHRvb2xfcGF0aCwgbG9hZF9wYW5lbF9kaWN0ICkKLQotICAgICAgICBpZiBw
YXJzaW5nX3NoZWRfdG9vbF9jb25mOgotICAgICAgICAgICAgc2hlZF90b29sX2NvbmZfZGljdCA9
M0QgZGljdCggY29uZmlnX2ZpbGVuYW1lPTNEY29uZmlnX2ZpbGVuYW09CmUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbF9wYXRoPTNEdG9vbF9wYXRoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ19lbGVtcz0zRGNvbmZp
Z19lbGVtcyApCi0gICAgICAgICAgICBzZWxmLnNoZWRfdG9vbF9jb25mcy5hcHBlbmQoIHNoZWRf
dG9vbF9jb25mX2RpY3QgKQotCi0gICAgZGVmIGdldF9zaGVkX2NvbmZpZ19kaWN0X2J5X2ZpbGVu
YW1lKCBzZWxmLCBmaWxlbmFtZSwgZGVmYXVsdD0zRE5vbmUgKToKLSAgICAgICAgZm9yIHNoZWRf
Y29uZmlnX2RpY3QgaW4gc2VsZi5zaGVkX3Rvb2xfY29uZnM6Ci0gICAgICAgICAgICBpZiBzaGVk
X2NvbmZpZ19kaWN0WyAnY29uZmlnX2ZpbGVuYW1lJyBdID0zRD0zRCBmaWxlbmFtZToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gc2hlZF9jb25maWdfZGljdAotICAgICAgICByZXR1cm4gZGVmYXVs
dAotCi0gICAgZGVmIF9fcmVzb2x2ZV90b29sX3BhdGgoc2VsZiwgdG9vbF9wYXRoLCBjb25maWdf
ZmlsZW5hbWUpOgotICAgICAgICBpZiBub3QgdG9vbF9wYXRoOgotICAgICAgICAgICAgIyBEZWZh
dWx0IHRvIGJhY2t3YXJkIGNvbXBhdGlibGUgY29uZmlnIHNldHRpbmcuCi0gICAgICAgICAgICB0
b29sX3BhdGggPTNEIHNlbGYudG9vbF9yb290X2RpcgotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgIyBBbGxvdyB1c2Ugb2YgX190b29sX2NvbmZfZGlyX18gaW4gdG9vbGJveCBjb25maWcgZmls
ZXMuCi0gICAgICAgICAgICB0b29sX2NvbmZfZGlyID0zRCBvcy5wYXRoLmRpcm5hbWUoY29uZmln
X2ZpbGVuYW1lKQotICAgICAgICAgICAgdG9vbF9wYXRoX3ZhcnMgPTNEIHsidG9vbF9jb25mX2Rp
ciI6IHRvb2xfY29uZl9kaXJ9Ci0gICAgICAgICAgICB0b29sX3BhdGggPTNEIHN0cmluZy5UZW1w
bGF0ZSh0b29sX3BhdGgpLnNhZmVfc3Vic3RpdHV0ZSh0b29sXz0KcGF0aF92YXJzKQotICAgICAg
ICByZXR1cm4gdG9vbF9wYXRoCi0KLSAgICBkZWYgX19hZGRfdG9vbF90b190b29sX3BhbmVsKCBz
ZWxmLCB0b29sLCBwYW5lbF9jb21wb25lbnQsIHNlY3Rpb249M0RGPQphbHNlICk6Ci0gICAgICAg
ICMgU2VlIGlmIGEgdmVyc2lvbiBvZiB0aGlzIHRvb2wgaXMgYWxyZWFkeSBsb2FkZWQgaW50byB0
aGUgdG9vbCBwYT0KbmVsLiAgVGhlIHZhbHVlIG9mIHBhbmVsX2NvbXBvbmVudAotICAgICAgICAj
IHdpbGwgYmUgYSBUb29sU2VjdGlvbiAoaWYgdGhlIHZhbHVlIG9mIHNlY3Rpb249M0RUcnVlKSBv
ciBzZWxmLnQ9Cm9vbF9wYW5lbCAoaWYgc2VjdGlvbj0zREZhbHNlKS4KLSAgICAgICAgdG9vbF9p
ZCA9M0Qgc3RyKCB0b29sLmlkICkKLSAgICAgICAgdG9vbCA9M0Qgc2VsZi50b29sc19ieV9pZFsg
dG9vbF9pZCBdCi0gICAgICAgIGlmIHNlY3Rpb246Ci0gICAgICAgICAgICBwYW5lbF9kaWN0ID0z
RCBwYW5lbF9jb21wb25lbnQuZWxlbXMKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBhbmVs
X2RpY3QgPTNEIHBhbmVsX2NvbXBvbmVudAotICAgICAgICBhbHJlYWR5X2xvYWRlZCA9M0QgRmFs
c2UKLSAgICAgICAgbG9hZGVkX3ZlcnNpb25fa2V5ID0zRCBOb25lCi0gICAgICAgIGxpbmVhZ2Vf
aWQgPTNEIE5vbmUKLSAgICAgICAgZm9yIGxpbmVhZ2VfaWQgaW4gdG9vbC5saW5lYWdlX2lkczoK
LSAgICAgICAgICAgIGlmIGxpbmVhZ2VfaWQgaW4gc2VsZi50b29sc19ieV9pZDoKLSAgICAgICAg
ICAgICAgICBsb2FkZWRfdmVyc2lvbl9rZXkgPTNEICd0b29sXyVzJyAlIGxpbmVhZ2VfaWQKLSAg
ICAgICAgICAgICAgICBpZiBsb2FkZWRfdmVyc2lvbl9rZXkgaW4gcGFuZWxfZGljdDoKLSAgICAg
ICAgICAgICAgICAgICAgYWxyZWFkeV9sb2FkZWQgPTNEIFRydWUKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWsKLSAgICAgICAgaWYgYWxyZWFkeV9sb2FkZWQ6Ci0gICAgICAgICAgICBpZiB0b29s
LmxpbmVhZ2VfaWRzLmluZGV4KCB0b29sX2lkICkgPiB0b29sLmxpbmVhZ2VfaWRzLmluZGV4KD0K
IGxpbmVhZ2VfaWQgKToKLSAgICAgICAgICAgICAgICBrZXkgPTNEICd0b29sXyVzJyAlIHRvb2wu
aWQKLSAgICAgICAgICAgICAgICBpbmRleCA9M0QgcGFuZWxfZGljdC5rZXlzKCkuaW5kZXgoIGxv
YWRlZF92ZXJzaW9uX2tleSApCi0gICAgICAgICAgICAgICAgZGVsIHBhbmVsX2RpY3RbIGxvYWRl
ZF92ZXJzaW9uX2tleSBdCi0gICAgICAgICAgICAgICAgcGFuZWxfZGljdC5pbnNlcnQoIGluZGV4
LCBrZXksIHRvb2wgKQotICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZyggIkxvYWRlZCB0b29sIGlk
OiAlcywgdmVyc2lvbjogJXMgaW50byB0b29sIHBhbmU9CmwuIiAlICggdG9vbC5pZCwgdG9vbC52
ZXJzaW9uICkgKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaW5zZXJ0ZWQgPTNEIEZhbHNl
Ci0gICAgICAgICAgICBrZXkgPTNEICd0b29sXyVzJyAlIHRvb2wuaWQKLSAgICAgICAgICAgICMg
VGhlIHZhbHVlIG9mIHBhbmVsX2NvbXBvbmVudCBpcyB0aGUgaW4tbWVtb3J5IHRvb2wgcGFuZWwg
ZGljPQp0aW9uYXJ5LgotICAgICAgICAgICAgZm9yIGluZGV4LCBpbnRlZ3JhdGVkX3BhbmVsX2tl
eSBpbiBlbnVtZXJhdGUoIHNlbGYuaW50ZWdyYXRlZF89CnRvb2xfcGFuZWwua2V5cygpICk6Ci0g
ICAgICAgICAgICAgICAgaWYga2V5ID0zRD0zRCBpbnRlZ3JhdGVkX3BhbmVsX2tleToKLSAgICAg
ICAgICAgICAgICAgICAgcGFuZWxfZGljdC5pbnNlcnQoIGluZGV4LCBrZXksIHRvb2wgKQotICAg
ICAgICAgICAgICAgICAgICBpZiBub3QgaW5zZXJ0ZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBpbnNlcnRlZCA9M0QgVHJ1ZQotICAgICAgICAgICAgaWYgbm90IGluc2VydGVkOgotICAgICAg
ICAgICAgICAgICMgQ2hlY2sgdGhlIHRvb2wncyBpbnN0YWxsZWQgdmVyc2lvbnMuCi0gICAgICAg
ICAgICAgICAgZm9yIGxpbmVhZ2VfaWQgaW4gdG9vbC5saW5lYWdlX2lkczoKLSAgICAgICAgICAg
ICAgICAgICAgbGluZWFnZV9pZF9rZXkgPTNEICd0b29sXyVzJyAlIGxpbmVhZ2VfaWQKLSAgICAg
ICAgICAgICAgICAgICAgZm9yIGluZGV4LCBpbnRlZ3JhdGVkX3BhbmVsX2tleSBpbiBlbnVtZXJh
dGUoIHNlbGYuaW50PQplZ3JhdGVkX3Rvb2xfcGFuZWwua2V5cygpICk6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiBsaW5lYWdlX2lkX2tleSA9M0Q9M0QgaW50ZWdyYXRlZF9wYW5lbF9rZXk6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxfZGljdC5pbnNlcnQoIGluZGV4LCBr
ZXksIHRvb2wgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBpbnNlcnRlZDoK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0ZWQgPTNEIFRydWUKLSAgICAg
ICAgICAgICAgICBpZiBub3QgaW5zZXJ0ZWQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHRvb2wu
Z3VpZCBpcyBOb25lIG9yIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvb2wudG9vbF9zaGVk
IGlzIE5vbmUgb3IgXAotICAgICAgICAgICAgICAgICAgICAgICAgdG9vbC5yZXBvc2l0b3J5X25h
bWUgaXMgTm9uZSBvciBcCi0gICAgICAgICAgICAgICAgICAgICAgICB0b29sLnJlcG9zaXRvcnlf
b3duZXIgaXMgTm9uZSBvciBcCi0gICAgICAgICAgICAgICAgICAgICAgICB0b29sLmluc3RhbGxl
ZF9jaGFuZ2VzZXRfcmV2aXNpb24gaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgICMg
V2UgaGF2ZSBhIHRvb2wgdGhhdCB3YXMgbm90IGluc3RhbGxlZCBmcm9tIHRoZSBUPQpvb2wgU2hl
ZCwgYnV0IGlzIGFsc28gbm90IHlldCBkZWZpbmVkIGluCi0gICAgICAgICAgICAgICAgICAgICAg
ICAjIGludGVncmF0ZWRfdG9vbF9wYW5lbC54bWwsIHNvIGFwcGVuZCBpdCB0byB0aGUgdD0Kb29s
IHBhbmVsLgotICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxfZGljdFsga2V5IF0gPTNEIHRv
b2wKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZyggIkxvYWRlZCB0b29sIGlkOiAl
cywgdmVyc2lvbjogJXMgaW50byB0PQpvb2wgcGFuZWwuLiIgJSAoIHRvb2wuaWQsIHRvb2wudmVy
c2lvbiApICkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAg
ICAgICMgV2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIGluc3RhbGxpbmcgdGhlIHRvb2wuCi0gICAg
ICAgICAgICAgICAgICAgICAgICB0b29sX3ZlcnNpb24gPTNEIHNlbGYuX19nZXRfdG9vbF92ZXJz
aW9uKCB0b29sX2lkICkKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xfbGluZWFnZV9pZHMg
PTNEIHRvb2xfdmVyc2lvbi5nZXRfdmVyc2lvbl9pZHMoPQogc2VsZi5hcHAsIHJldmVyc2U9M0RU
cnVlICkKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lYWdlX2lkIGluIHRvb2xfbGlu
ZWFnZV9pZHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGluZWFnZV9pZCBpbiBz
ZWxmLnRvb2xzX2J5X2lkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkZWRf
dmVyc2lvbl9rZXkgPTNEICd0b29sXyVzJyAlIGxpbmVhZ2U9Cl9pZAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiBsb2FkZWRfdmVyc2lvbl9rZXkgaW4gcGFuZWxfZGljdDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBhbHJlYWR5X2xvYWRlZDoK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHJlYWR5X2xvYWRlZCA9
M0QgVHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGFscmVhZHlfbG9hZGVkOgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSWYgdGhlIHRvb2wgaXMgbm90IGRlZmluZWQg
aW4gaW50ZWdyYXRlZF90b289CmxfcGFuZWwueG1sLCBhcHBlbmQgaXQgdG8gdGhlIHRvb2wgcGFu
ZWwuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxfZGljdFsga2V5IF0gPTNEIHRv
b2wKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2cuZGVidWcoICJMb2FkZWQgdG9vbCBp
ZDogJXMsIHZlcnNpb246ICVzIGluPQp0byB0b29sIHBhbmVsLi4uLiIgJSAoIHRvb2wuaWQsIHRv
b2wudmVyc2lvbiApICkKLQotICAgIGRlZiBsb2FkX3Rvb2xfcGFuZWwoIHNlbGYgKToKLSAgICAg
ICAgZm9yIGtleSwgdmFsIGluIHNlbGYuaW50ZWdyYXRlZF90b29sX3BhbmVsLml0ZW1zKCk6Ci0g
ICAgICAgICAgICBpZiBpc2luc3RhbmNlKCB2YWwsIFRvb2wgKToKLSAgICAgICAgICAgICAgICB0
b29sX2lkID0zRCBrZXkucmVwbGFjZSggJ3Rvb2xfJywgJycsIDEgKQotICAgICAgICAgICAgICAg
IGlmIHRvb2xfaWQgaW4gc2VsZi50b29sc19ieV9pZDoKLSAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fX2FkZF90b29sX3RvX3Rvb2xfcGFuZWwoIHZhbCwgc2VsZi50b29sX3BhbmVsLCBzPQplY3Rp
b249M0RGYWxzZSApCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoIHZhbCwgV29ya2Zsb3cg
KToKLSAgICAgICAgICAgICAgICB3b3JrZmxvd19pZCA9M0Qga2V5LnJlcGxhY2UoICd3b3JrZmxv
d18nLCAnJywgMSApCi0gICAgICAgICAgICAgICAgaWYgd29ya2Zsb3dfaWQgaW4gc2VsZi53b3Jr
Zmxvd3NfYnlfaWQ6Ci0gICAgICAgICAgICAgICAgICAgIHdvcmtmbG93ID0zRCBzZWxmLndvcmtm
bG93c19ieV9pZFsgd29ya2Zsb3dfaWQgXQotICAgICAgICAgICAgICAgICAgICBzZWxmLnRvb2xf
cGFuZWxbIGtleSBdID0zRCB3b3JrZmxvdwotICAgICAgICAgICAgICAgICAgICBsb2cuZGVidWco
ICJMb2FkZWQgd29ya2Zsb3c6ICVzICVzIiAlICggd29ya2Zsb3dfaWQsIHc9Cm9ya2Zsb3cubmFt
ZSApICkKLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSggdmFsLCBUb29sU2VjdGlvbkxhYmVs
ICk6Ci0gICAgICAgICAgICAgICAgc2VsZi50b29sX3BhbmVsWyBrZXkgXSA9M0QgdmFsCi0gICAg
ICAgICAgICBlbGlmIGlzaW5zdGFuY2UoIHZhbCwgVG9vbFNlY3Rpb24gKToKLSAgICAgICAgICAg
ICAgICBlbGVtID0zRCBFbGVtZW50VHJlZS5FbGVtZW50KCAnc2VjdGlvbicgKQotICAgICAgICAg
ICAgICAgIGVsZW0uYXR0cmliWyAnaWQnIF0gPTNEIHZhbC5pZCBvciAnJwotICAgICAgICAgICAg
ICAgIGVsZW0uYXR0cmliWyAnbmFtZScgXSA9M0QgdmFsLm5hbWUgb3IgJycKLSAgICAgICAgICAg
ICAgICBlbGVtLmF0dHJpYlsgJ3ZlcnNpb24nIF0gPTNEIHZhbC52ZXJzaW9uIG9yICcnCi0gICAg
ICAgICAgICAgICAgc2VjdGlvbiA9M0QgVG9vbFNlY3Rpb24oIGVsZW0gKQotICAgICAgICAgICAg
ICAgIGxvZy5kZWJ1ZyggIkxvYWRpbmcgc2VjdGlvbjogJXMiICUgZWxlbS5nZXQoICduYW1lJyAp
ICkKLSAgICAgICAgICAgICAgICBmb3Igc2VjdGlvbl9rZXksIHNlY3Rpb25fdmFsIGluIHZhbC5l
bGVtcy5pdGVtcygpOgotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKCBzZWN0aW9u
X3ZhbCwgVG9vbCApOgotICAgICAgICAgICAgICAgICAgICAgICAgdG9vbF9pZCA9M0Qgc2VjdGlv
bl9rZXkucmVwbGFjZSggJ3Rvb2xfJywgJycsIDEgKQotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgdG9vbF9pZCBpbiBzZWxmLnRvb2xzX2J5X2lkOgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX19hZGRfdG9vbF90b190b29sX3BhbmVsKCBzZWN0aW9uX3ZhbCwgc2U9CmN0aW9u
LCBzZWN0aW9uPTNEVHJ1ZSApCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSgg
c2VjdGlvbl92YWwsIFdvcmtmbG93ICk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB3b3JrZmxv
d19pZCA9M0Qgc2VjdGlvbl9rZXkucmVwbGFjZSggJ3dvcmtmbG93XycsID0KJycsIDEgKQotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgd29ya2Zsb3dfaWQgaW4gc2VsZi53b3JrZmxvd3NfYnlf
aWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd29ya2Zsb3cgPTNEIHNlbGYud29ya2Zs
b3dzX2J5X2lkWyB3b3JrZmxvd19pZD0KIF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWN0aW9uLmVsZW1zWyBzZWN0aW9uX2tleSBdID0zRCB3b3JrZmxvdwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZy5kZWJ1ZyggIkxvYWRlZCB3b3JrZmxvdzogJXMgJXMiICUgKCB3b3Jr
Zmw9Cm93X2lkLCB3b3JrZmxvdy5uYW1lICkgKQotICAgICAgICAgICAgICAgICAgICBlbGlmIGlz
aW5zdGFuY2UoIHNlY3Rpb25fdmFsLCBUb29sU2VjdGlvbkxhYmVsICk6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiBzZWN0aW9uX3ZhbDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWN0aW9uLmVsZW1zWyBzZWN0aW9uX2tleSBdID0zRCBzZWN0aW9uX3ZhbAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZyggIkxvYWRlZCBsYWJlbDogJXMiICUgKCBzZWN0aW9u
X3ZhbC49CnRleHQgKSApCi0gICAgICAgICAgICAgICAgc2VsZi50b29sX3BhbmVsWyBrZXkgXSA9
M0Qgc2VjdGlvbgotCi0gICAgZGVmIGxvYWRfaW50ZWdyYXRlZF90b29sX3BhbmVsX2tleXMoIHNl
bGYgKToKLSAgICAgICAgIiIiCi0gICAgICAgIExvYWQgdGhlIGludGVncmF0ZWQgdG9vbCBwYW5l
bCBrZXlzLCBzZXR0aW5nIHZhbHVlcyBmb3IgdG9vbHMgYW5kID0Kd29ya2Zsb3dzIHRvIE5vbmUu
ICBUaGUgdmFsdWVzIHdpbGwKLSAgICAgICAgYmUgcmVzZXQgd2hlbiB0aGUgdmFyaW91cyB0b29s
IHBhbmVsIGNvbmZpZyBmaWxlcyBhcmUgcGFyc2VkLCBhdCB3PQpoaWNoIHRpbWUgdGhlIHRvb2xz
IGFuZCB3b3JrZmxvd3MgYXJlCi0gICAgICAgIGxvYWRlZC4KLSAgICAgICAgIiIiCi0gICAgICAg
IHRyZWUgPTNEIHBhcnNlX3htbCggc2VsZi5pbnRlZ3JhdGVkX3Rvb2xfcGFuZWxfY29uZmlnICkK
LSAgICAgICAgcm9vdCA9M0QgdHJlZS5nZXRyb290KCkKLSAgICAgICAgZm9yIGVsZW0gaW4gcm9v
dDoKLSAgICAgICAgICAgIGlmIGVsZW0udGFnID0zRD0zRCAndG9vbCc6Ci0gICAgICAgICAgICAg
ICAga2V5ID0zRCAndG9vbF8lcycgJSBlbGVtLmdldCggJ2lkJyApCi0gICAgICAgICAgICAgICAg
c2VsZi5pbnRlZ3JhdGVkX3Rvb2xfcGFuZWxbIGtleSBdID0zRCBOb25lCi0gICAgICAgICAgICBl
bGlmIGVsZW0udGFnID0zRD0zRCAnd29ya2Zsb3cnOgotICAgICAgICAgICAgICAgIGtleSA9M0Qg
J3dvcmtmbG93XyVzJyAlIGVsZW0uZ2V0KCAnaWQnICkKLSAgICAgICAgICAgICAgICBzZWxmLmlu
dGVncmF0ZWRfdG9vbF9wYW5lbFsga2V5IF0gPTNEIE5vbmUKLSAgICAgICAgICAgIGVsaWYgZWxl
bS50YWcgPTNEPTNEICdzZWN0aW9uJzoKLSAgICAgICAgICAgICAgICBzZWN0aW9uID0zRCBUb29s
U2VjdGlvbiggZWxlbSApCi0gICAgICAgICAgICAgICAgZm9yIHNlY3Rpb25fZWxlbSBpbiBlbGVt
OgotICAgICAgICAgICAgICAgICAgICBpZiBzZWN0aW9uX2VsZW0udGFnID0zRD0zRCAndG9vbCc6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBrZXkgPTNEICd0b29sXyVzJyAlIHNlY3Rpb25fZWxl
bS5nZXQoICdpZCcgKQotICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbi5lbGVtc1sga2V5
IF0gPTNEIE5vbmUKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBzZWN0aW9uX2VsZW0udGFnID0z
RD0zRCAnd29ya2Zsb3cnOgotICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0zRCAnd29ya2Zs
b3dfJXMnICUgc2VjdGlvbl9lbGVtLmdldCggJ2lkJyApCi0gICAgICAgICAgICAgICAgICAgICAg
ICBzZWN0aW9uLmVsZW1zWyBrZXkgXSA9M0QgTm9uZQotICAgICAgICAgICAgICAgICAgICBlbGlm
IHNlY3Rpb25fZWxlbS50YWcgPTNEPTNEICdsYWJlbCc6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBrZXkgPTNEICdsYWJlbF8lcycgJSBzZWN0aW9uX2VsZW0uZ2V0KCAnaWQnICkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNlY3Rpb24uZWxlbXNbIGtleSBdID0zRCBOb25lCi0gICAgICAgICAg
ICAgICAga2V5ID0zRCBlbGVtLmdldCggJ2lkJyApCi0gICAgICAgICAgICAgICAgc2VsZi5pbnRl
Z3JhdGVkX3Rvb2xfcGFuZWxbIGtleSBdID0zRCBzZWN0aW9uCi0gICAgICAgICAgICBlbGlmIGVs
ZW0udGFnID0zRD0zRCAnbGFiZWwnOgotICAgICAgICAgICAgICAgIGtleSA9M0QgJ2xhYmVsXyVz
JyAlIGVsZW0uZ2V0KCAnaWQnICkKLSAgICAgICAgICAgICAgICBzZWxmLmludGVncmF0ZWRfdG9v
bF9wYW5lbFsga2V5IF0gPTNEIE5vbmUKLQotICAgIGRlZiB3cml0ZV9pbnRlZ3JhdGVkX3Rvb2xf
cGFuZWxfY29uZmlnX2ZpbGUoIHNlbGYgKToKLSAgICAgICAgIiIiCi0gICAgICAgIFdyaXRlIHRo
ZSBjdXJyZW50IGluLW1lbW9yeSB2ZXJzaW9uIG9mIHRoZSBpbnRlZ3JhdGVkX3Rvb2xfcGFuZWwu
eD0KbWwgZmlsZSB0byBkaXNrLiAgU2luY2UgR2FsYXh5IGFkbWluaXN0cmF0b3JzCi0gICAgICAg
IHVzZSB0aGlzIGZpbGUgdG8gbWFuYWdlIHRoZSB0b29sIHBhbmVsLCB3ZSdsbCBub3QgdXNlIHht
bF90b19zdHJpbj0KZygpIHNpbmNlIGl0IGRvZXNuJ3Qgd3JpdGUgWE1MIHF1aXRlIHJpZ2h0Lgot
ICAgICAgICAiIiIKLSAgICAgICAgZmQsIGZpbGVuYW1lID0zRCB0ZW1wZmlsZS5ta3N0ZW1wKCkK
LSAgICAgICAgb3Mud3JpdGUoIGZkLCAnPD94bWwgdmVyc2lvbj0zRCIxLjAiPz5cbicgKQotICAg
ICAgICBvcy53cml0ZSggZmQsICc8dG9vbGJveD5cbicgKQotICAgICAgICBmb3Iga2V5LCBpdGVt
IGluIHNlbGYuaW50ZWdyYXRlZF90b29sX3BhbmVsLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiBp
dGVtOgotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoIGl0ZW0sIFRvb2wgKToKLSAgICAg
ICAgICAgICAgICAgICAgb3Mud3JpdGUoIGZkLCAnICAgIDx0b29sIGlkPTNEIiVzIiAvPlxuJyAl
IGl0ZW0uaWQgKQotICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSggaXRlbSwgV29ya2Zs
b3cgKToKLSAgICAgICAgICAgICAgICAgICAgb3Mud3JpdGUoIGZkLCAnICAgIDx3b3JrZmxvdyBp
ZD0zRCIlcyIgLz5cbicgJSBpdGVtLmlkPQogKQotICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0
YW5jZSggaXRlbSwgVG9vbFNlY3Rpb25MYWJlbCApOgotICAgICAgICAgICAgICAgICAgICBsYWJl
bF9pZCA9M0QgaXRlbS5pZCBvciAnJwotICAgICAgICAgICAgICAgICAgICBsYWJlbF90ZXh0ID0z
RCBpdGVtLnRleHQgb3IgJycKLSAgICAgICAgICAgICAgICAgICAgbGFiZWxfdmVyc2lvbiA9M0Qg
aXRlbS52ZXJzaW9uIG9yICcnCi0gICAgICAgICAgICAgICAgICAgIG9zLndyaXRlKCBmZCwgJyAg
ICA8bGFiZWwgaWQ9M0QiJXMiIHRleHQ9M0QiJXMiIHZlcnNpbz0Kbj0zRCIlcyIgLz5cbicgJSAo
IGxhYmVsX2lkLCBsYWJlbF90ZXh0LCBsYWJlbF92ZXJzaW9uICkgKQotICAgICAgICAgICAgICAg
IGVsaWYgaXNpbnN0YW5jZSggaXRlbSwgVG9vbFNlY3Rpb24gKToKLSAgICAgICAgICAgICAgICAg
ICAgc2VjdGlvbl9pZCA9M0QgaXRlbS5pZCBvciAnJwotICAgICAgICAgICAgICAgICAgICBzZWN0
aW9uX25hbWUgPTNEIGl0ZW0ubmFtZSBvciAnJwotICAgICAgICAgICAgICAgICAgICBzZWN0aW9u
X3ZlcnNpb24gPTNEIGl0ZW0udmVyc2lvbiBvciAnJwotICAgICAgICAgICAgICAgICAgICBvcy53
cml0ZSggZmQsICcgICAgPHNlY3Rpb24gaWQ9M0QiJXMiIG5hbWU9M0QiJXMiIHZlcnM9Cmlvbj0z
RCIlcyI+XG4nICUgKCBzZWN0aW9uX2lkLCBzZWN0aW9uX25hbWUsIHNlY3Rpb25fdmVyc2lvbiAp
ICkKLSAgICAgICAgICAgICAgICAgICAgZm9yIHNlY3Rpb25fa2V5LCBzZWN0aW9uX2l0ZW0gaW4g
aXRlbS5lbGVtcy5pdGVtcygpOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5j
ZSggc2VjdGlvbl9pdGVtLCBUb29sICk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
c2VjdGlvbl9pdGVtOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy53cml0ZSgg
ZmQsICcgICAgICAgIDx0b29sIGlkPTNEIiVzIiAvPlw9Cm4nICUgc2VjdGlvbl9pdGVtLmlkICkK
LSAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSggc2VjdGlvbl9pdGVtLCBX
b3JrZmxvdyApOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlY3Rpb25faXRlbToK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mud3JpdGUoIGZkLCAnICAgICAgICA8
d29ya2Zsb3cgaWQ9M0QiJXMiPQogLz5cbicgJSBzZWN0aW9uX2l0ZW0uaWQgKQotICAgICAgICAg
ICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKCBzZWN0aW9uX2l0ZW0sIFRvb2xTZWN0aW9u
TGFiZWwgKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWN0aW9uX2l0ZW06Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsX2lkID0zRCBzZWN0aW9uX2l0ZW0u
aWQgb3IgJycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxfdGV4dCA9M0Qg
c2VjdGlvbl9pdGVtLnRleHQgb3IgJycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGFiZWxfdmVyc2lvbiA9M0Qgc2VjdGlvbl9pdGVtLnZlcnNpb24gb3IgPQonJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcy53cml0ZSggZmQsICcgICAgICAgIDxsYWJlbCBpZD0z
RCIlcyIgdGU9Cnh0PTNEIiVzIiB2ZXJzaW9uPTNEIiVzIiAvPlxuJyAlICggbGFiZWxfaWQsIGxh
YmVsX3RleHQsIGxhYmVsX3ZlcnNpb24gKSApCi0gICAgICAgICAgICAgICAgICAgIG9zLndyaXRl
KCBmZCwgJyAgICA8L3NlY3Rpb24+XG4nICkKLSAgICAgICAgb3Mud3JpdGUoIGZkLCAnPC90b29s
Ym94PlxuJyApCi0gICAgICAgIG9zLmNsb3NlKCBmZCApCi0gICAgICAgIHNodXRpbC5tb3ZlKCBm
aWxlbmFtZSwgb3MucGF0aC5hYnNwYXRoKCBzZWxmLmludGVncmF0ZWRfdG9vbF9wYW5lbD0KX2Nv
bmZpZyApICkKLSAgICAgICAgb3MuY2htb2QoIHNlbGYuaW50ZWdyYXRlZF90b29sX3BhbmVsX2Nv
bmZpZywgMDY0NCApCi0KLSAgICBkZWYgZ2V0X3Rvb2woIHNlbGYsIHRvb2xfaWQsIHRvb2xfdmVy
c2lvbj0zRE5vbmUsIGdldF9hbGxfdmVyc2lvbnM9M0RGPQphbHNlICk6Ci0gICAgICAgICIiIkF0
dGVtcHQgdG8gbG9jYXRlIGEgdG9vbCBpbiB0aGUgdG9vbCBib3guIiIiCi0gICAgICAgIGlmIHRv
b2xfaWQgaW4gc2VsZi50b29sc19ieV9pZCBhbmQgbm90IGdldF9hbGxfdmVyc2lvbnM6Ci0gICAg
ICAgICAgICAjdG9vbF9pZCBleGFjdGx5IG1hdGNoZXMgYW4gYXZhaWxhYmxlIHRvb2wgYnkgaWQg
KHdoaWNoIGlzICdvbD0KZCcgdG9vbF9pZCBvciBndWlkKQotICAgICAgICAgICAgcmV0dXJuIHNl
bGYudG9vbHNfYnlfaWRbIHRvb2xfaWQgXQotICAgICAgICAjZXhhY3QgdG9vbCBpZCBtYXRjaCBu
b3QgZm91bmQsIG9yIGFsbCB2ZXJzaW9ucyByZXF1ZXN0ZWQsIHNlYXJjaCA9CmZvciBvdGhlciBv
cHRpb25zLCBlLmcuIG1pZ3JhdGVkIHRvb2xzIG9yIGRpZmZlcmVudCB2ZXJzaW9ucwotICAgICAg
ICBydmFsID0zRCBbXQotICAgICAgICB0diA9M0Qgc2VsZi5fX2dldF90b29sX3ZlcnNpb24oIHRv
b2xfaWQgKQotICAgICAgICBpZiB0djoKLSAgICAgICAgICAgIHRvb2xfdmVyc2lvbl9pZHMgPTNE
IHR2LmdldF92ZXJzaW9uX2lkcyggc2VsZi5hcHAgKQotICAgICAgICAgICAgZm9yIHRvb2xfdmVy
c2lvbl9pZCBpbiB0b29sX3ZlcnNpb25faWRzOgotICAgICAgICAgICAgICAgIGlmIHRvb2xfdmVy
c2lvbl9pZCBpbiBzZWxmLnRvb2xzX2J5X2lkOgotICAgICAgICAgICAgICAgICAgICBydmFsLmFw
cGVuZCggc2VsZi50b29sc19ieV9pZFsgdG9vbF92ZXJzaW9uX2lkIF0gKQotICAgICAgICBpZiBu
b3QgcnZhbDoKLSAgICAgICAgICAgICNzdGlsbCBubyB0b29sLCBkbyBhIGRlZXBlciBzZWFyY2gg
YW5kIHRyeSB0byBtYXRjaCBieSBvbGQgaWRzCi0gICAgICAgICAgICBmb3IgdG9vbCBpbiBzZWxm
LnRvb2xzX2J5X2lkLml0ZXJ2YWx1ZXMoKToKLSAgICAgICAgICAgICAgICBpZiB0b29sLm9sZF9p
ZCA9M0Q9M0QgdG9vbF9pZDoKLSAgICAgICAgICAgICAgICAgICAgcnZhbC5hcHBlbmQoIHRvb2wg
KQotICAgICAgICBpZiBydmFsOgotICAgICAgICAgICAgaWYgZ2V0X2FsbF92ZXJzaW9uczoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gcnZhbAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICBpZiB0b29sX3ZlcnNpb246Ci0gICAgICAgICAgICAgICAgICAgICNyZXR1cm4gZmlyc3Qg
dG9vbCB3aXRoIG1hdGNoaW5nIHZlcnNpb24KLSAgICAgICAgICAgICAgICAgICAgZm9yIHRvb2wg
aW4gcnZhbDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRvb2wudmVyc2lvbiA9M0Q9M0Qg
dG9vbF92ZXJzaW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0b29sCi0g
ICAgICAgICAgICAgICAgI05vIHRvb2wgbWF0Y2hlcyBieSB2ZXJzaW9uLCBzaW1wbHkgcmV0dXJu
IHRoZSBmaXJzdCBhdmFpbD0KYWJsZSB0b29sIGZvdW5kCi0gICAgICAgICAgICAgICAgcmV0dXJu
IHJ2YWxbMF0KLSAgICAgICAgI1dlIG5vdyBsaWtlbHkgaGF2ZSBhIFRvb2xzaGVkIGd1aWQgcGFz
c2VkIGluLCBidXQgbm8gc3VwcG9ydGluZyBkPQphdGFiYXNlIGVudHJpZXMKLSAgICAgICAgI0lm
IHRoZSB0b29sIGV4aXN0cyBieSBleGFjdCBpZCBhbmQgaXMgbG9hZGVkIHRoZW4gcHJvdmlkZSBl
eGFjdCBtPQphdGNoIHdpdGhpbiBhIGxpc3QKLSAgICAgICAgaWYgdG9vbF9pZCBpbiBzZWxmLnRv
b2xzX2J5X2lkOgotICAgICAgICAgICAgcmV0dXJuWyBzZWxmLnRvb2xzX2J5X2lkWyB0b29sX2lk
IF0gXQotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIGdldF9sb2FkZWRfdG9vbHNfYnlf
bGluZWFnZSggc2VsZiwgdG9vbF9pZCApOgotICAgICAgICAiIiJHZXQgYWxsIGxvYWRlZCB0b29s
cyBhc3NvY2lhdGVkIGJ5IGxpbmVhZ2UgdG8gdGhlIHRvb2wgd2hvc2UgaWQ9CiBpcyB0b29sX2lk
LiIiIgotICAgICAgICB0diA9M0Qgc2VsZi5fX2dldF90b29sX3ZlcnNpb24oIHRvb2xfaWQgKQot
ICAgICAgICBpZiB0djoKLSAgICAgICAgICAgIHRvb2xfdmVyc2lvbl9pZHMgPTNEIHR2LmdldF92
ZXJzaW9uX2lkcyggc2VsZi5hcHAgKQotICAgICAgICAgICAgYXZhaWxhYmxlX3Rvb2xfdmVyc2lv
bnMgPTNEIFtdCi0gICAgICAgICAgICBmb3IgdG9vbF92ZXJzaW9uX2lkIGluIHRvb2xfdmVyc2lv
bl9pZHM6Ci0gICAgICAgICAgICAgICAgaWYgdG9vbF92ZXJzaW9uX2lkIGluIHNlbGYudG9vbHNf
YnlfaWQ6Ci0gICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZV90b29sX3ZlcnNpb25zLmFwcGVu
ZCggc2VsZi50b29sc19ieV9pZFsgdG9vbD0KX3ZlcnNpb25faWQgXSApCi0gICAgICAgICAgICBy
ZXR1cm4gYXZhaWxhYmxlX3Rvb2xfdmVyc2lvbnMKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IGlmIHRvb2xfaWQgaW4gc2VsZi50b29sc19ieV9pZDoKLSAgICAgICAgICAgICAgICB0b29sID0z
RCBzZWxmLnRvb2xzX2J5X2lkWyB0b29sX2lkIF0KLSAgICAgICAgICAgICAgICByZXR1cm4gWyB0
b29sIF0KLSAgICAgICAgcmV0dXJuIFtdCi0KLSAgICBkZWYgX19nZXRfdG9vbF92ZXJzaW9uKCBz
ZWxmLCB0b29sX2lkICk6Ci0gICAgICAgICIiIlJldHVybiBhIFRvb2xWZXJzaW9uIGlmIG9uZSBl
eGlzdHMgZm9yIHRoZSB0b29sX2lkIiIiCi0gICAgICAgIHJldHVybiBzZWxmLmFwcC5pbnN0YWxs
X21vZGVsLmNvbnRleHQucXVlcnkoIHNlbGYuYXBwLmluc3RhbGxfbW9kZT0KbC5Ub29sVmVyc2lv
biApIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0
ZXIoIHNlbGYuYXBwLmluc3RhbGxfbW9kPQplbC5Ub29sVmVyc2lvbi50YWJsZS5jLnRvb2xfaWQg
PTNEPTNEIHRvb2xfaWQgKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAuZmlyc3QoKQotCi0gICAgZGVmIF9fZ2V0X3Rvb2xfc2hlZF9yZXBvc2l0b3J5KCBz
ZWxmLCB0b29sX3NoZWQsIG5hbWUsIG93bmVyLCBpbnN0YWxsZT0KZF9jaGFuZ2VzZXRfcmV2aXNp
b24gKToKLSAgICAgICAgIyBXZSBzdG9yZSBvbmx5IHRoZSBwb3J0LCBpZiBvbmUgZXhpc3RzLCBp
biB0aGUgZGF0YWJhc2UuCi0gICAgICAgIHRvb2xfc2hlZCA9M0QgY29tbW9uX3V0aWwucmVtb3Zl
X3Byb3RvY29sX2Zyb21fdG9vbF9zaGVkX3VybCggdG9vbD0KX3NoZWQgKQotICAgICAgICByZXR1
cm4gc2VsZi5hcHAuaW5zdGFsbF9tb2RlbC5jb250ZXh0LnF1ZXJ5KCBzZWxmLmFwcC5pbnN0YWxs
X21vZGU9CmwuVG9vbFNoZWRSZXBvc2l0b3J5ICkgXAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLmZpbHRlciggYW5kXyggc2VsZi5hcHAuaW5zdGFsbF9tb2RlbC5Ub29sU2g9CmVkUmVw
b3NpdG9yeS50YWJsZS5jLnRvb2xfc2hlZCA9M0Q9M0QgdG9vbF9zaGVkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHAuaW5zdGFsbF9tb2RlbC5U
b29sU2g9CmVkUmVwb3NpdG9yeS50YWJsZS5jLm5hbWUgPTNEPTNEIG5hbWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFwcC5pbnN0YWxsX21vZGVs
LlRvb2xTaD0KZWRSZXBvc2l0b3J5LnRhYmxlLmMub3duZXIgPTNEPTNEIG93bmVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHAuaW5zdGFsbF9t
b2RlbC5Ub29sU2g9CmVkUmVwb3NpdG9yeS50YWJsZS5jLmluc3RhbGxlZF9jaGFuZ2VzZXRfcmV2
aXNpb24gPTNEPTNEIGluc3RhbGxlZF9jaGFuZ2VzZT0KdF9yZXZpc2lvbiApICkgXAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLmZpcnN0KCkKLQotICAgIGRlZiBnZXRfdG9vbF9jb21w
b25lbnRzKCBzZWxmLCB0b29sX2lkLCB0b29sX3ZlcnNpb249M0ROb25lLCBnZXRfbG9hZGU9CmRf
dG9vbHNfYnlfbGluZWFnZT0zREZhbHNlLCBzZXRfc2VsZWN0ZWQ9M0RGYWxzZSApOgotICAgICAg
ICAiIiIKLSAgICAgICAgUmV0cmlldmUgYWxsIGxvYWRlZCB2ZXJzaW9ucyBvZiBhIHRvb2wgZnJv
bSB0aGUgdG9vbGJveCBhbmQgcmV0dXJuPQogYSBzZWxlY3QgbGlzdCBlbmFibGluZwotICAgICAg
ICBzZWxlY3Rpb24gb2YgYSBkaWZmZXJlbnQgdmVyc2lvbiwgdGhlIGxpc3Qgb2YgdGhlIHRvb2wn
cyBsb2FkZWQgdmU9CnJzaW9ucywgYW5kIHRoZSBzcGVjaWZpZWQgdG9vbC4KLSAgICAgICAgIiIi
Ci0gICAgICAgIHRvb2xib3ggPTNEIHNlbGYKLSAgICAgICAgdG9vbF92ZXJzaW9uX3NlbGVjdF9m
aWVsZCA9M0QgTm9uZQotICAgICAgICB0b29scyA9M0QgW10KLSAgICAgICAgdG9vbCA9M0QgTm9u
ZQotICAgICAgICAjIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGZvciBkYXRhc291cmNlIHRvb2xz
IHRoYXQgaGF2ZSBkZWZhdWx0IHQ9Cm9vbF9pZCBjb25maWd1cmVkLCBidXQgd2hpY2gKLSAgICAg
ICAgIyBhcmUgbm93IHVzaW5nIG9ubHkgR0FMQVhZX1VSTC4KLSAgICAgICAgdG9vbF9pZHMgPTNE
IGxpc3RpZnkoIHRvb2xfaWQgKQotICAgICAgICBmb3IgdG9vbF9pZCBpbiB0b29sX2lkczoKLSAg
ICAgICAgICAgIGlmIGdldF9sb2FkZWRfdG9vbHNfYnlfbGluZWFnZToKLSAgICAgICAgICAgICAg
ICB0b29scyA9M0QgdG9vbGJveC5nZXRfbG9hZGVkX3Rvb2xzX2J5X2xpbmVhZ2UoIHRvb2xfaWQg
KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0b29scyA9M0QgdG9vbGJveC5n
ZXRfdG9vbCggdG9vbF9pZCwgdG9vbF92ZXJzaW9uPTNEdG9vbF92PQplcnNpb24sIGdldF9hbGxf
dmVyc2lvbnM9M0RUcnVlICkKLSAgICAgICAgICAgIGlmIHRvb2xzOgotICAgICAgICAgICAgICAg
IHRvb2wgPTNEIHRvb2xib3guZ2V0X3Rvb2woIHRvb2xfaWQsIHRvb2xfdmVyc2lvbj0zRHRvb2xf
dmU9CnJzaW9uLCBnZXRfYWxsX3ZlcnNpb25zPTNERmFsc2UgKQotICAgICAgICAgICAgICAgIGlm
IGxlbiggdG9vbHMgKSA+IDE6Ci0gICAgICAgICAgICAgICAgICAgIHRvb2xfdmVyc2lvbl9zZWxl
Y3RfZmllbGQgPTNEIHNlbGYuYnVpbGRfdG9vbF92ZXJzaW9uXz0Kc2VsZWN0X2ZpZWxkKCB0b29s
cywgdG9vbC5pZCwgc2V0X3NlbGVjdGVkICkKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAg
ICByZXR1cm4gdG9vbF92ZXJzaW9uX3NlbGVjdF9maWVsZCwgdG9vbHMsIHRvb2wKLQotICAgIGRl
ZiBidWlsZF90b29sX3ZlcnNpb25fc2VsZWN0X2ZpZWxkKCBzZWxmLCB0b29scywgdG9vbF9pZCwg
c2V0X3NlbGVjdGU9CmQgKToKLSAgICAgICAgIiIiQnVpbGQgYSBTZWxlY3RGaWVsZCB3aG9zZSBv
cHRpb25zIGFyZSB0aGUgaWRzIGZvciB0aGUgcmVjZWl2ZWQgPQpsaXN0IG9mIHRvb2xzLiIiIgot
ICAgICAgICBvcHRpb25zID0zRCBbXQotICAgICAgICByZWZyZXNoX29uX2NoYW5nZV92YWx1ZXMg
PTNEIFtdCi0gICAgICAgIGZvciB0b29sIGluIHRvb2xzOgotICAgICAgICAgICAgb3B0aW9ucy5p
bnNlcnQoIDAsICggdG9vbC52ZXJzaW9uLCB0b29sLmlkICkgKQotICAgICAgICAgICAgcmVmcmVz
aF9vbl9jaGFuZ2VfdmFsdWVzLmFwcGVuZCggdG9vbC5pZCApCi0gICAgICAgIHNlbGVjdF9maWVs
ZCA9M0QgU2VsZWN0RmllbGQoIG5hbWU9M0QndG9vbF9pZCcsIHJlZnJlc2hfb25fY2hhbmdlPQo9
M0RUcnVlLCByZWZyZXNoX29uX2NoYW5nZV92YWx1ZXM9M0RyZWZyZXNoX29uX2NoYW5nZV92YWx1
ZXMgKQotICAgICAgICBmb3Igb3B0aW9uX3R1cCBpbiBvcHRpb25zOgotICAgICAgICAgICAgc2Vs
ZWN0ZWQgPTNEIHNldF9zZWxlY3RlZCBhbmQgb3B0aW9uX3R1cFsgMSBdID0zRD0zRCB0b29sX2lk
Ci0gICAgICAgICAgICBpZiBzZWxlY3RlZDoKLSAgICAgICAgICAgICAgICBzZWxlY3RfZmllbGQu
YWRkX29wdGlvbiggJ3ZlcnNpb24gJXMnICUgb3B0aW9uX3R1cFsgMCBdLCBvPQpwdGlvbl90dXBb
IDEgXSwgc2VsZWN0ZWQ9M0RUcnVlICkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgc2VsZWN0X2ZpZWxkLmFkZF9vcHRpb24oICd2ZXJzaW9uICVzJyAlIG9wdGlvbl90dXBbIDAg
XSwgbz0KcHRpb25fdHVwWyAxIF0gKQotICAgICAgICByZXR1cm4gc2VsZWN0X2ZpZWxkCi0KLSAg
ICBkZWYgbG9hZF90b29sX3RhZ19zZXQoIHNlbGYsIGVsZW0sIHBhbmVsX2RpY3QsIGludGVncmF0
ZWRfcGFuZWxfZGljdCwgPQp0b29sX3BhdGgsIGxvYWRfcGFuZWxfZGljdCwgZ3VpZD0zRE5vbmUs
IGluZGV4PTNETm9uZSApOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwYXRoID0zRCBlbGVt
LmdldCggImZpbGUiICkKLSAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQgPTNEIE5vbmUKLSAgICAg
ICAgICAgIGlmIGd1aWQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICB0b29sX3NoZWRfcmVwb3Np
dG9yeSA9M0QgTm9uZQotICAgICAgICAgICAgICAgIGNhbl9sb2FkX2ludG9fcGFuZWxfZGljdCA9
M0QgVHJ1ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIFRoZSB0b29sIGlz
IGNvbnRhaW5lZCBpbiBhbiBpbnN0YWxsZWQgdG9vbCBzaGVkIHJlcG9zaXRvPQpyeSwgc28gbG9h
ZAotICAgICAgICAgICAgICAgICMgdGhlIHRvb2wgb25seSBpZiB0aGUgcmVwb3NpdG9yeSBoYXMg
bm90IGJlZW4gbWFya2VkIGRlbGU9CnRlZC4KLSAgICAgICAgICAgICAgICB0b29sX3NoZWQgPTNE
IGVsZW0uZmluZCggInRvb2xfc2hlZCIgKS50ZXh0Ci0gICAgICAgICAgICAgICAgcmVwb3NpdG9y
eV9uYW1lID0zRCBlbGVtLmZpbmQoICJyZXBvc2l0b3J5X25hbWUiICkudGV4dAotICAgICAgICAg
ICAgICAgIHJlcG9zaXRvcnlfb3duZXIgPTNEIGVsZW0uZmluZCggInJlcG9zaXRvcnlfb3duZXIi
ICkudGV4dAotICAgICAgICAgICAgICAgIGluc3RhbGxlZF9jaGFuZ2VzZXRfcmV2aXNpb25fZWxl
bSA9M0QgZWxlbS5maW5kKCAiaW5zdGFsbGU9CmRfY2hhbmdlc2V0X3JldmlzaW9uIiApCi0gICAg
ICAgICAgICAgICAgaWYgaW5zdGFsbGVkX2NoYW5nZXNldF9yZXZpc2lvbl9lbGVtIGlzIE5vbmU6
Ci0gICAgICAgICAgICAgICAgICAgICMgQmFja3dhcmQgY29tcGF0aWJpbGl0eSBpc3N1ZSAtIHRo
ZSB0YWcgdXNlZCB0byBiZSBuYT0KbWVkICdjaGFuZ2VzZXRfcmV2aXNpb24nLgotICAgICAgICAg
ICAgICAgICAgICBpbnN0YWxsZWRfY2hhbmdlc2V0X3JldmlzaW9uX2VsZW0gPTNEIGVsZW0uZmlu
ZCggImNoYW49Cmdlc2V0X3JldmlzaW9uIiApCi0gICAgICAgICAgICAgICAgaW5zdGFsbGVkX2No
YW5nZXNldF9yZXZpc2lvbiA9M0QgaW5zdGFsbGVkX2NoYW5nZXNldF9yZXZpcz0KaW9uX2VsZW0u
dGV4dAotICAgICAgICAgICAgICAgIHRvb2xfc2hlZF9yZXBvc2l0b3J5ID0zRCBzZWxmLl9fZ2V0
X3Rvb2xfc2hlZF9yZXBvc2l0b3J5KCA9CnRvb2xfc2hlZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlPQpw
b3NpdG9yeV9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmU9CnBvc2l0b3J5X293bmVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW49CnN0YWxsZWRfY2hhbmdlc2V0X3JldmlzaW9uICkKLSAgICAgICAgICAgICAg
ICBpZiB0b29sX3NoZWRfcmVwb3NpdG9yeToKLSAgICAgICAgICAgICAgICAgICAgIyBPbmx5IGxv
YWQgdG9vbHMgaWYgdGhlIHJlcG9zaXRvcnkgaXMgbm90IGRlYWN0aXZhdGVkPQogb3IgdW5pbnN0
YWxsZWQuCi0gICAgICAgICAgICAgICAgICAgIGNhbl9sb2FkX2ludG9fcGFuZWxfZGljdCA9M0Qg
bm90IHRvb2xfc2hlZF9yZXBvc2l0b3J5Lj0KZGVsZXRlZAotICAgICAgICAgICAgICAgICAgICBy
ZXBvc2l0b3J5X2lkID0zRCBzZWxmLmFwcC5zZWN1cml0eS5lbmNvZGVfaWQoIHRvb2xfc2g9CmVk
X3JlcG9zaXRvcnkuaWQgKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
ICAgICMgSWYgdGhlcmUgaXMgbm90IHlldCBhIHRvb2xfc2hlZF9yZXBvc2l0b3J5IHJlY29yZCwg
dz0KZSdyZSBpbiB0aGUgcHJvY2VzcyBvZiBpbnN0YWxsaW5nCi0gICAgICAgICAgICAgICAgICAg
ICMgYSBuZXcgcmVwb3NpdG9yeSwgc28gYW55IGluY2x1ZGVkIHRvb2xzIGNhbiBiZSBsb2FkZT0K
ZCBpbnRvIHRoZSB0b29sIHBhbmVsLgotICAgICAgICAgICAgICAgICAgICBjYW5fbG9hZF9pbnRv
X3BhbmVsX2RpY3QgPTNEIFRydWUKLSAgICAgICAgICAgIHRvb2wgPTNEIHNlbGYubG9hZF90b29s
KCBvcy5wYXRoLmpvaW4oIHRvb2xfcGF0aCwgcGF0aCApLCBndWlkPQo9M0RndWlkLCByZXBvc2l0
b3J5X2lkPTNEcmVwb3NpdG9yeV9pZCApCi0gICAgICAgICAgICBpZiBzdHJpbmdfYXNfYm9vbChl
bGVtLmdldCggJ2hpZGRlbicsIEZhbHNlICkpOgotICAgICAgICAgICAgICAgIHRvb2wuaGlkZGVu
ID0zRCBUcnVlCi0gICAgICAgICAgICBrZXkgPTNEICd0b29sXyVzJyAlIHN0ciggdG9vbC5pZCAp
Ci0gICAgICAgICAgICBpZiBjYW5fbG9hZF9pbnRvX3BhbmVsX2RpY3Q6Ci0gICAgICAgICAgICAg
ICAgaWYgZ3VpZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgdG9vbC50b29sX3No
ZWQgPTNEIHRvb2xfc2hlZAotICAgICAgICAgICAgICAgICAgICB0b29sLnJlcG9zaXRvcnlfbmFt
ZSA9M0QgcmVwb3NpdG9yeV9uYW1lCi0gICAgICAgICAgICAgICAgICAgIHRvb2wucmVwb3NpdG9y
eV9vd25lciA9M0QgcmVwb3NpdG9yeV9vd25lcgotICAgICAgICAgICAgICAgICAgICB0b29sLmlu
c3RhbGxlZF9jaGFuZ2VzZXRfcmV2aXNpb24gPTNEIGluc3RhbGxlZF9jaGFuZ2U9CnNldF9yZXZp
c2lvbgotICAgICAgICAgICAgICAgICAgICB0b29sLmd1aWQgPTNEIGd1aWQKLSAgICAgICAgICAg
ICAgICAgICAgdG9vbC52ZXJzaW9uID0zRCBlbGVtLmZpbmQoICJ2ZXJzaW9uIiApLnRleHQKLSAg
ICAgICAgICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgdG9vbCBoYXMgYSB0b29sX3ZlcnNpb24uCi0g
ICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX19nZXRfdG9vbF92ZXJzaW9uKCB0b29sLmlkICk6
Ci0gICAgICAgICAgICAgICAgICAgIHRvb2xfdmVyc2lvbiA9M0Qgc2VsZi5hcHAuaW5zdGFsbF9t
b2RlbC5Ub29sVmVyc2lvbiggdD0Kb29sX2lkPTNEdG9vbC5pZCwgdG9vbF9zaGVkX3JlcG9zaXRv
cnk9M0R0b29sX3NoZWRfcmVwb3NpdG9yeSApCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXBw
Lmluc3RhbGxfbW9kZWwuY29udGV4dC5hZGQoIHRvb2xfdmVyc2lvbiApCi0gICAgICAgICAgICAg
ICAgICAgIHNlbGYuYXBwLmluc3RhbGxfbW9kZWwuY29udGV4dC5mbHVzaCgpCi0gICAgICAgICAg
ICAgICAgIyBMb2FkIHRoZSB0b29sJ3MgbGluZWFnZSBpZHMuCi0gICAgICAgICAgICAgICAgdG9v
bC5saW5lYWdlX2lkcyA9M0QgdG9vbC50b29sX3ZlcnNpb24uZ2V0X3ZlcnNpb25faWRzKCBzZT0K
bGYuYXBwICkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmFwcC5jb25maWcuZ2V0X2Jvb2woICdl
bmFibGVfdG9vbF90YWdzJywgRmFsc2UgKToKLSAgICAgICAgICAgICAgICAgICAgdGFnX25hbWVz
ID0zRCBlbGVtLmdldCggInRhZ3MiLCAiIiApLnNwbGl0KCAiLCIgKQotICAgICAgICAgICAgICAg
ICAgICBmb3IgdGFnX25hbWUgaW4gdGFnX25hbWVzOgotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgdGFnX25hbWUgPTNEPTNEICcnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlCi0gICAgICAgICAgICAgICAgICAgICAgICB0YWcgPTNEIHNlbGYuc2Ffc2Vzc2lvbi5xdWVy
eSggc2VsZi5hcHAubW9kZWwuVGFnID0KKS5maWx0ZXJfYnkoIG5hbWU9M0R0YWdfbmFtZSApLmZp
cnN0KCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCB0YWc6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGFnID0zRCBzZWxmLmFwcC5tb2RlbC5UYWcoIG5hbWU9M0R0YWdfbmFt
ZSApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zYV9zZXNzaW9uLmFkZCggdGFn
ICkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNhX3Nlc3Npb24uZmx1c2goKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR0YSA9M0Qgc2VsZi5hcHAubW9kZWwuVG9vbFRh
Z0Fzc29jaWF0aW9uKCB0b289CmxfaWQ9M0R0b29sLmlkLCB0YWdfaWQ9M0R0YWcuaWQgKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2Ffc2Vzc2lvbi5hZGQoIHR0YSApCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zYV9zZXNzaW9uLmZsdXNoKCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRh
Z2dlZF90b29sIGluIHRhZy50YWdnZWRfdG9vbHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIHRhZ2dlZF90b29sLnRvb2xfaWQgPTNEPTNEIHRvb2wuaWQ6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR0YSA9M0Qgc2VsZi5h
cHAubW9kZWwuVG9vbFRhZ0Fzc29jaWF0aW9uKD0KIHRvb2xfaWQ9M0R0b29sLmlkLCB0YWdfaWQ9
M0R0YWcuaWQgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNhX3Nlc3Np
b24uYWRkKCB0dGEgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNhX3Nl
c3Npb24uZmx1c2goKQotICAgICAgICAgICAgICAgIHNlbGYuX19hZGRfdG9vbCggdG9vbCwgbG9h
ZF9wYW5lbF9kaWN0LCBwYW5lbF9kaWN0ICkKLSAgICAgICAgICAgICMgQWx3YXlzIGxvYWQgdGhl
IHRvb2wgaW50byB0aGUgaW50ZWdyYXRlZF9wYW5lbF9kaWN0LCBvciBpdCB3PQppbGwgbm90IGJl
IGluY2x1ZGVkIGluIHRoZSBpbnRlZ3JhdGVkX3Rvb2xfcGFuZWwueG1sIGZpbGUuCi0gICAgICAg
ICAgICBpZiBrZXkgaW4gaW50ZWdyYXRlZF9wYW5lbF9kaWN0IG9yIGluZGV4IGlzIE5vbmU6Ci0g
ICAgICAgICAgICAgICAgaW50ZWdyYXRlZF9wYW5lbF9kaWN0WyBrZXkgXSA9M0QgdG9vbAotICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpbnRlZ3JhdGVkX3BhbmVsX2RpY3QuaW5z
ZXJ0KCBpbmRleCwga2V5LCB0b29sICkKLSAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAg
ICAgICBsb2cuZXJyb3IoICJFcnJvciByZWFkaW5nIHRvb2wgY29uZmlndXJhdGlvbiBmaWxlIGZy
b20gcGF0aDogJT0Kcy4iICUgcGF0aCApCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAg
ICAgICAgICBsb2cuZXhjZXB0aW9uKCAiRXJyb3IgcmVhZGluZyB0b29sIGZyb20gcGF0aDogJXMi
ICUgcGF0aCApCi0KLSAgICBkZWYgX19hZGRfdG9vbCggc2VsZiwgdG9vbCwgbG9hZF9wYW5lbF9k
aWN0LCBwYW5lbF9kaWN0ICk6Ci0gICAgICAgICMgQWxsb3cgZm9yIHRoZSBzYW1lIHRvb2wgdG8g
YmUgbG9hZGVkIGludG8gbXVsdGlwbGUgcGxhY2VzIGluIHRoZT0KIHRvb2wgcGFuZWwuICBXZSBo
YXZlIHRvIGhhbmRsZQotICAgICAgICAjIHRoZSBjYXNlIHdoZXJlIHRoZSB0b29sIGlzIGNvbnRh
aW5lZCBpbiBhIHJlcG9zaXRvcnkgaW5zdGFsbGVkIGY9CnJvbSB0aGUgdG9vbCBzaGVkLCBhbmQg
dGhlIEdhbGF4eQotICAgICAgICAjIGFkbWluaXN0cmF0b3IgaGFzIHJldHJpZXZlZCB1cGRhdGVz
IHRvIHRoZSBpbnN0YWxsZWQgcmVwb3NpdG9yeS49CiAgSW4gdGhpcyBjYXNlLCB0aGUgdG9vbCBt
YXkgaGF2ZQotICAgICAgICAjIGJlZW4gdXBkYXRlZCwgYnV0IHRoZSB2ZXJzaW9uIHdhcyBub3Qg
Y2hhbmdlZCwgc28gdGhlIHRvb2wgc2hvdWw9CmQgYWx3YXlzIGJlIHJlbG9hZGVkIGhlcmUuICBX
ZSB1c2VkCi0gICAgICAgICMgdG8gb25seSBsb2FkIHRoZSB0b29sIGlmIGl0IHdhcyBub3QgZm91
bmQgaW4gc2VsZi50b29sc19ieV9pZCwgYj0KdXQgcGVyZm9ybWluZyB0aGF0IGNoZWNrIGRpZAot
ICAgICAgICAjIG5vdCBlbmFibGUgdGhpcyBzY2VuYXJpby4KLSAgICAgICAgc2VsZi50b29sc19i
eV9pZFsgdG9vbC5pZCBdID0zRCB0b29sCi0gICAgICAgIGlmIGxvYWRfcGFuZWxfZGljdDoKLSAg
ICAgICAgICAgIHNlbGYuX19hZGRfdG9vbF90b190b29sX3BhbmVsKCB0b29sLCBwYW5lbF9kaWN0
LCBzZWN0aW9uPTNEaXNpPQpuc3RhbmNlKCBwYW5lbF9kaWN0LCBUb29sU2VjdGlvbiApICkKLQot
ICAgIGRlZiBsb2FkX3dvcmtmbG93X3RhZ19zZXQoIHNlbGYsIGVsZW0sIHBhbmVsX2RpY3QsIGlu
dGVncmF0ZWRfcGFuZWxfZGk9CmN0LCBsb2FkX3BhbmVsX2RpY3QsIGluZGV4PTNETm9uZSApOgot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIFRPRE86IHNob3VsZCBpZCBiZSBlbmNvZGVkPwot
ICAgICAgICAgICAgd29ya2Zsb3dfaWQgPTNEIGVsZW0uZ2V0KCAnaWQnICkKLSAgICAgICAgICAg
IHdvcmtmbG93ID0zRCBzZWxmLmxvYWRfd29ya2Zsb3coIHdvcmtmbG93X2lkICkKLSAgICAgICAg
ICAgIHNlbGYud29ya2Zsb3dzX2J5X2lkWyB3b3JrZmxvd19pZCBdID0zRCB3b3JrZmxvdwotICAg
ICAgICAgICAga2V5ID0zRCAnd29ya2Zsb3dfJyArIHdvcmtmbG93X2lkCi0gICAgICAgICAgICBp
ZiBsb2FkX3BhbmVsX2RpY3Q6Ci0gICAgICAgICAgICAgICAgcGFuZWxfZGljdFsga2V5IF0gPTNE
IHdvcmtmbG93Ci0gICAgICAgICAgICAjIEFsd2F5cyBsb2FkIHdvcmtmbG93cyBpbnRvIHRoZSBp
bnRlZ3JhdGVkX3BhbmVsX2RpY3QuCi0gICAgICAgICAgICBpZiBrZXkgaW4gaW50ZWdyYXRlZF9w
YW5lbF9kaWN0IG9yIGluZGV4IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgaW50ZWdyYXRlZF9w
YW5lbF9kaWN0WyBrZXkgXSA9M0Qgd29ya2Zsb3cKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgaW50ZWdyYXRlZF9wYW5lbF9kaWN0Lmluc2VydCggaW5kZXgsIGtleSwgd29ya2Zs
b3cgKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBsb2cuZXhjZXB0aW9uKCAiRXJyb3Ig
bG9hZGluZyB3b3JrZmxvdzogJXMiICUgd29ya2Zsb3dfaWQgKQotCi0gICAgZGVmIGxvYWRfbGFi
ZWxfdGFnX3NldCggc2VsZiwgZWxlbSwgcGFuZWxfZGljdCwgaW50ZWdyYXRlZF9wYW5lbF9kaWN0
LD0KIGxvYWRfcGFuZWxfZGljdCwgaW5kZXg9M0ROb25lICk6Ci0gICAgICAgIGxhYmVsID0zRCBU
b29sU2VjdGlvbkxhYmVsKCBlbGVtICkKLSAgICAgICAga2V5ID0zRCAnbGFiZWxfJyArIGxhYmVs
LmlkCi0gICAgICAgIGlmIGxvYWRfcGFuZWxfZGljdDoKLSAgICAgICAgICAgIHBhbmVsX2RpY3Rb
IGtleSBdID0zRCBsYWJlbAotICAgICAgICBpZiBrZXkgaW4gaW50ZWdyYXRlZF9wYW5lbF9kaWN0
IG9yIGluZGV4IGlzIE5vbmU6Ci0gICAgICAgICAgICBpbnRlZ3JhdGVkX3BhbmVsX2RpY3RbIGtl
eSBdID0zRCBsYWJlbAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaW50ZWdyYXRlZF9wYW5l
bF9kaWN0Lmluc2VydCggaW5kZXgsIGtleSwgbGFiZWwgKQotCi0gICAgZGVmIGxvYWRfc2VjdGlv
bl90YWdfc2V0KCBzZWxmLCBlbGVtLCB0b29sX3BhdGgsIGxvYWRfcGFuZWxfZGljdCwgaW5kZT0K
eD0zRE5vbmUgKToKLSAgICAgICAga2V5ID0zRCBlbGVtLmdldCggImlkIiApCi0gICAgICAgIGlm
IGtleSBpbiBzZWxmLnRvb2xfcGFuZWw6Ci0gICAgICAgICAgICBzZWN0aW9uID0zRCBzZWxmLnRv
b2xfcGFuZWxbIGtleSBdCi0gICAgICAgICAgICBlbGVtcyA9M0Qgc2VjdGlvbi5lbGVtcwotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgc2VjdGlvbiA9M0QgVG9vbFNlY3Rpb24oIGVsZW0gKQot
ICAgICAgICAgICAgZWxlbXMgPTNEIHNlY3Rpb24uZWxlbXMKLSAgICAgICAgaWYga2V5IGluIHNl
bGYuaW50ZWdyYXRlZF90b29sX3BhbmVsOgotICAgICAgICAgICAgaW50ZWdyYXRlZF9zZWN0aW9u
ID0zRCBzZWxmLmludGVncmF0ZWRfdG9vbF9wYW5lbFsga2V5IF0KLSAgICAgICAgICAgIGludGVn
cmF0ZWRfZWxlbXMgPTNEIGludGVncmF0ZWRfc2VjdGlvbi5lbGVtcwotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgaW50ZWdyYXRlZF9zZWN0aW9uID0zRCBUb29sU2VjdGlvbiggZWxlbSApCi0g
ICAgICAgICAgICBpbnRlZ3JhdGVkX2VsZW1zID0zRCBpbnRlZ3JhdGVkX3NlY3Rpb24uZWxlbXMK
LSAgICAgICAgZm9yIHN1Yl9pbmRleCwgc3ViX2VsZW0gaW4gZW51bWVyYXRlKCBlbGVtICk6Ci0g
ICAgICAgICAgICBpZiBzdWJfZWxlbS50YWcgPTNEPTNEICd0b29sJzoKLSAgICAgICAgICAgICAg
ICBzZWxmLmxvYWRfdG9vbF90YWdfc2V0KCBzdWJfZWxlbSwgZWxlbXMsIGludGVncmF0ZWRfZWxl
bXMsPQogdG9vbF9wYXRoLCBsb2FkX3BhbmVsX2RpY3QsIGd1aWQ9M0RzdWJfZWxlbS5nZXQoICdn
dWlkJyApLCBpbmRleD0zRHN1Yl9pbmQ9CmV4ICkKLSAgICAgICAgICAgIGVsaWYgc3ViX2VsZW0u
dGFnID0zRD0zRCAnd29ya2Zsb3cnOgotICAgICAgICAgICAgICAgIHNlbGYubG9hZF93b3JrZmxv
d190YWdfc2V0KCBzdWJfZWxlbSwgZWxlbXMsIGludGVncmF0ZWRfZWw9CmVtcywgbG9hZF9wYW5l
bF9kaWN0LCBpbmRleD0zRHN1Yl9pbmRleCApCi0gICAgICAgICAgICBlbGlmIHN1Yl9lbGVtLnRh
ZyA9M0Q9M0QgJ2xhYmVsJzoKLSAgICAgICAgICAgICAgICBzZWxmLmxvYWRfbGFiZWxfdGFnX3Nl
dCggc3ViX2VsZW0sIGVsZW1zLCBpbnRlZ3JhdGVkX2VsZW1zPQosIGxvYWRfcGFuZWxfZGljdCwg
aW5kZXg9M0RzdWJfaW5kZXggKQotICAgICAgICAgICAgZWxpZiBzdWJfZWxlbS50YWcgPTNEPTNE
ICd0b29sX2Rpcic6Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2FkX3Rvb2xkaXJfdGFnX3NldCgg
c3ViX2VsZW0sIGVsZW1zLCB0b29sX3BhdGgsIGludD0KZWdyYXRlZF9lbGVtcywgbG9hZF9wYW5l
bF9kaWN0ICkKLSAgICAgICAgaWYgbG9hZF9wYW5lbF9kaWN0OgotICAgICAgICAgICAgc2VsZi50
b29sX3BhbmVsWyBrZXkgXSA9M0Qgc2VjdGlvbgotICAgICAgICAjIEFsd2F5cyBsb2FkIHNlY3Rp
b25zIGludG8gdGhlIGludGVncmF0ZWRfdG9vbF9wYW5lbC4KLSAgICAgICAgaWYga2V5IGluIHNl
bGYuaW50ZWdyYXRlZF90b29sX3BhbmVsIG9yIGluZGV4IGlzIE5vbmU6Ci0gICAgICAgICAgICBz
ZWxmLmludGVncmF0ZWRfdG9vbF9wYW5lbFsga2V5IF0gPTNEIGludGVncmF0ZWRfc2VjdGlvbgot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5pbnRlZ3JhdGVkX3Rvb2xfcGFuZWwuaW5z
ZXJ0KCBpbmRleCwga2V5LCBpbnRlZ3JhdGVkX3NlY3Q9CmlvbiApCi0KLSAgICBkZWYgbG9hZF90
b29sZGlyX3RhZ19zZXQoc2VsZiwgc3ViX2VsZW0sIGVsZW1zLCB0b29sX3BhdGgsIGludGVncmF0
ZWRfPQplbGVtcywgbG9hZF9wYW5lbF9kaWN0KToKLSAgICAgICAgZGlyZWN0b3J5ID0zRCBvcy5w
YXRoLmpvaW4oIHRvb2xfcGF0aCwgc3ViX2VsZW0uYXR0cmliLmdldCgiZGlyIikgKQotICAgICAg
ICByZWN1cnNpdmUgPTNEIHN0cmluZ19hc19ib29sKCBzdWJfZWxlbS5hdHRyaWIuZ2V0KCJyZWN1
cnNpdmUiLCBUcnU9CmUpICkKLSAgICAgICAgc2VsZi5fX3dhdGNoX2RpcmVjdG9yeSggZGlyZWN0
b3J5LCBlbGVtcywgaW50ZWdyYXRlZF9lbGVtcywgbG9hZF9wPQphbmVsX2RpY3QsIHJlY3Vyc2l2
ZSApCi0KLSAgICBkZWYgX193YXRjaF9kaXJlY3RvcnkoIHNlbGYsIGRpcmVjdG9yeSwgZWxlbXMs
IGludGVncmF0ZWRfZWxlbXMsIGxvYWRfPQpwYW5lbF9kaWN0LCByZWN1cnNpdmUpOgotCi0gICAg
ICAgIGRlZiBxdWlja19sb2FkKCB0b29sX2ZpbGUsIGFzeW5jPTNEVHJ1ZSApOgotICAgICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgICAgIHRvb2wgPTNEIHNlbGYubG9hZF90b29sKCB0b29sX2Zp
bGUgKQotICAgICAgICAgICAgICAgIHNlbGYuX19hZGRfdG9vbCggdG9vbCwgbG9hZF9wYW5lbF9k
aWN0LCBlbGVtcyApCi0gICAgICAgICAgICAgICAgIyBBbHdheXMgbG9hZCB0aGUgdG9vbCBpbnRv
IHRoZSBpbnRlZ3JhdGVkX3BhbmVsX2RpY3QsIG9yID0KaXQgd2lsbCBub3QgYmUgaW5jbHVkZWQg
aW4gdGhlIGludGVncmF0ZWRfdG9vbF9wYW5lbC54bWwgZmlsZS4KLSAgICAgICAgICAgICAgICBr
ZXkgPTNEICd0b29sXyVzJyAlIHN0ciggdG9vbC5pZCApCi0gICAgICAgICAgICAgICAgaW50ZWdy
YXRlZF9lbGVtc1sga2V5IF0gPTNEIHRvb2wKLQotICAgICAgICAgICAgICAgIGlmIGFzeW5jOgot
ICAgICAgICAgICAgICAgICAgICBzZWxmLmxvYWRfdG9vbF9wYW5lbCgpCi0KLSAgICAgICAgICAg
ICAgICAgICAgaWYgc2VsZi5hcHAuY29uZmlnLnVwZGF0ZV9pbnRlZ3JhdGVkX3Rvb2xfcGFuZWw6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFdyaXRlIHRoZSBjdXJyZW50IGluLW1lbW9yeSBp
bnRlZ3JhdGVkX3Rvb2xfcGFuZT0KbCB0byB0aGUgaW50ZWdyYXRlZF90b29sX3BhbmVsLnhtbCBm
aWxlLgotICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHdpbGwgY292ZXIgY2FzZXMgd2hl
cmUgdGhlIEdhbGF4eSBhZG1pbmlzdHI9CmF0b3IgbWFudWFsbHkgZWRpdGVkIG9uZSBvciBtb3Jl
IG9mIHRoZSB0b29sIHBhbmVsCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGNvbmZpZyBmaWxl
cywgYWRkaW5nIG9yIHJlbW92aW5nIGxvY2FsbHkgZGV2ZWxvcD0KZWQgdG9vbHMgb3Igd29ya2Zs
b3dzLiAgVGhlIHZhbHVlIG9mIGludGVncmF0ZWRfdG9vbF9wYW5lbAotICAgICAgICAgICAgICAg
ICAgICAgICAgIyB3aWxsIGJlIEZhbHNlIHdoZW4gdGhpbmdzIGxpa2UgZnVuY3Rpb25hbCB0ZXN0
cyA9CmFyZSB0aGUgY2FsbGVyLgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5maXhfaW50
ZWdyYXRlZF90b29sX3BhbmVsX2RpY3QoKQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi53
cml0ZV9pbnRlZ3JhdGVkX3Rvb2xfcGFuZWxfY29uZmlnX2ZpbGUoKQotICAgICAgICAgICAgICAg
IHJldHVybiB0b29sLmlkCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAg
ICAgICAgIGxvZy5leGNlcHRpb24oIkZhaWxlZCB0byBsb2FkIHBvdGVudGlhbCB0b29sICVzLiIg
JSB0b29sX2Y9CmlsZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHRv
b2xfbG9hZGVkID0zRCBGYWxzZQotICAgICAgICBmb3IgbmFtZSBpbiBvcy5saXN0ZGlyKCBkaXJl
Y3RvcnkgKToKLSAgICAgICAgICAgIGNoaWxkX3BhdGggPTNEIG9zLnBhdGguam9pbihkaXJlY3Rv
cnksIG5hbWUpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGNoaWxkX3BhdGgpIGFuZCBy
ZWN1cnNpdmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fX3dhdGNoX2RpcmVjdG9yeShjaGlsZF9w
YXRoLCBlbGVtcywgaW50ZWdyYXRlZF9lbGVtcz0KLCBsb2FkX3BhbmVsX2RpY3QsIHJlY3Vyc2l2
ZSkKLSAgICAgICAgICAgIGVsaWYgbmFtZS5lbmRzd2l0aCggIi54bWwiICk6Ci0gICAgICAgICAg
ICAgICAgcXVpY2tfbG9hZCggY2hpbGRfcGF0aCwgYXN5bmM9M0RGYWxzZSApCi0gICAgICAgICAg
ICAgICAgdG9vbF9sb2FkZWQgPTNEIFRydWUKLSAgICAgICAgaWYgdG9vbF9sb2FkZWQ6Ci0gICAg
ICAgICAgICBzZWxmLnRvb2xfd2F0Y2hlci53YXRjaF9kaXJlY3RvcnkoIGRpcmVjdG9yeSwgcXVp
Y2tfbG9hZCApCi0KLSAgICBkZWYgbG9hZF90b29sKCBzZWxmLCBjb25maWdfZmlsZSwgZ3VpZD0z
RE5vbmUsIHJlcG9zaXRvcnlfaWQ9M0ROb25lLCAqPQoqa3dkcyApOgotICAgICAgICAiIiJMb2Fk
IGEgc2luZ2xlIHRvb2wgZnJvbSB0aGUgZmlsZSBuYW1lZCBieSBgY29uZmlnX2ZpbGVgIGFuZCBy
ZXQ9CnVybiBhbiBpbnN0YW5jZSBvZiBgVG9vbGAuIiIiCi0gICAgICAgICMgUGFyc2UgWE1MIGNv
bmZpZ3VyYXRpb24gZmlsZSBhbmQgZ2V0IHRoZSByb290IGVsZW1lbnQKKyAgICBkZWYgY3JlYXRl
X3Rvb2woIHNlbGYsIGNvbmZpZ19maWxlLCByZXBvc2l0b3J5X2lkPTNETm9uZSwgZ3VpZD0zRE5v
bmUsPQogKiprd2RzICk6CiAgICAgICAgIHRvb2xfc291cmNlID0zRCBnZXRfdG9vbF9zb3VyY2Uo
IGNvbmZpZ19maWxlLCBnZXRhdHRyKCBzZWxmLmFwcC5jbz0KbmZpZywgImVuYWJsZV9iZXRhX3Rv
b2xfZm9ybWF0cyIsIEZhbHNlICkgKQogICAgICAgICAjIEFsbG93IHNwZWNpZnlpbmcgYSBkaWZm
ZXJlbnQgdG9vbCBzdWJjbGFzcyB0byBpbnN0YW50aWF0ZQogICAgICAgICB0b29sX21vZHVsZSA9
M0QgdG9vbF9zb3VyY2UucGFyc2VfdG9vbF9tb2R1bGUoKQpAQCAtNzYzLDEzICsxMjgsMTMgQEAK
ICAgICAgICAgICAgIHJvb3QgPTNEIGdldGF0dHIoIHRvb2xfc291cmNlLCAicm9vdCIsIE5vbmUg
KQogICAgICAgICAgICAgIyBUT0RPOiBtdWNraW5nIHdpdGggdGhlIFhNTCBkaXJlY3RseSBsaWtl
IHRoaXMgaXMgdGVycmlibGUsCiAgICAgICAgICAgICAjIG1vZGlmeSBpbnB1dHMgZGlyZWN0bHkg
cG9zdCBsb2FkIGlmIHBvc3NpYmxlLgotICAgICAgICAgICAgaWYgcm9vdCBhbmQgaGFzYXR0cigg
c2VsZi5hcHAsICJqb2JfY29uZmlnIiApOiAgIyB0b29sc2hlZCBtYXk9CiBub3QgaGF2ZSBqb2Jf
Y29uZmlnPwotICAgICAgICAgICAgICAgIHRvb2xfaWQgPTNEIHJvb3QuZ2V0KCAnaWQnICkgaWYg
cm9vdCBlbHNlIE5vbmUKKyAgICAgICAgICAgIGlmIHJvb3QgaXMgbm90IE5vbmUgYW5kIGhhc2F0
dHIoIHNlbGYuYXBwLCAiam9iX2NvbmZpZyIgKTogICMgPQp0b29sc2hlZCBtYXkgbm90IGhhdmUg
am9iX2NvbmZpZz8KKyAgICAgICAgICAgICAgICB0b29sX2lkID0zRCByb290LmdldCggJ2lkJyAp
CiAgICAgICAgICAgICAgICAgcGFyYW1ldGVycyA9M0Qgc2VsZi5hcHAuam9iX2NvbmZpZy5nZXRf
dG9vbF9yZXNvdXJjZV9wYXJhbT0KZXRlcnMoIHRvb2xfaWQgKQogICAgICAgICAgICAgICAgIGlm
IHBhcmFtZXRlcnM6CiAgICAgICAgICAgICAgICAgICAgIGlucHV0cyA9M0Qgcm9vdC5maW5kKCdp
bnB1dHMnKQogICAgICAgICAgICAgICAgICAgICAjIElmIHRvb2wgaGFzIG5vdCBpbnB1dHMsIGNy
ZWF0ZSBzb21lIHNvIHdlIGNhbiBpbnNlcnQ9CiBjb25kaXRpb25hbAotICAgICAgICAgICAgICAg
ICAgICBpZiBub3QgaW5wdXRzOgorICAgICAgICAgICAgICAgICAgICBpZiBpbnB1dHMgaXMgTm9u
ZToKICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0cyA9M0QgRWxlbWVudFRyZWUuZnJvbXN0
cmluZyggIjxpbnB1dHM+PC9pbnB1PQp0cz4iKQogICAgICAgICAgICAgICAgICAgICAgICAgcm9v
dC5hcHBlbmQoIGlucHV0cyApCiAgICAgICAgICAgICAgICAgICAgICMgSW5zZXJ0IGEgY29uZGl0
aW9uYWwgYWxsb3dpbmcgdXNlciB0byBzcGVjaWZ5IHJlc291cj0KY2UgcGFyYW1ldGVycy4KQEAg
LTc4MSwzNTUgKzE0NiwxNyBAQAo9MjAKICAgICAgICAgICAgIFRvb2xDbGFzcyA9M0QgVG9vbAog
ICAgICAgICB0b29sID0zRCBUb29sQ2xhc3MoIGNvbmZpZ19maWxlLCB0b29sX3NvdXJjZSwgc2Vs
Zi5hcHAsIGd1aWQ9M0RndWk9CmQsIHJlcG9zaXRvcnlfaWQ9M0RyZXBvc2l0b3J5X2lkLCAqKmt3
ZHMgKQotICAgICAgICB0b29sX2lkID0zRCB0b29sLmlkCi0gICAgICAgIGlmIG5vdCB0b29sX2lk
LnN0YXJ0c3dpdGgoIl9fIik6Ci0gICAgICAgICAgICAjIGRvIG5vdCBtb25pdG9yIHNwZWNpYWwg
dG9vbHMgd3JpdHRlbiB0byB0bXAgZGlyZWN0b3J5IC0gbm8gcj0KZWFzb24KLSAgICAgICAgICAg
ICMgdG8gbW9uaXRvciBzdWNoIGEgbGFyZ2UgZGlyZWN0b3J5LgotICAgICAgICAgICAgc2VsZi50
b29sX3dhdGNoZXIud2F0Y2hfZmlsZSggY29uZmlnX2ZpbGUsIHRvb2wuaWQgKQogICAgICAgICBy
ZXR1cm4gdG9vbAo9MjAKLSAgICBkZWYgcGFja2FnZV90b29sKCBzZWxmLCB0cmFucywgdG9vbF9p
ZCApOgotICAgICAgICAiIiIKLSAgICAgICAgQ3JlYXRlIGEgdGFyYmFsbCB3aXRoIHRoZSB0b29s
J3MgeG1sLCBoZWxwIGltYWdlcywgYW5kIHRlc3QgZGF0YS4KLSAgICAgICAgOnBhcmFtIHRyYW5z
OiB0aGUgd2ViIHRyYW5zYWN0aW9uCi0gICAgICAgIDpwYXJhbSB0b29sX2lkOiB0aGUgdG9vbCBJ
RCBmcm9tIGFwcC50b29sYm94Ci0gICAgICAgIDpyZXR1cm5zOiB0dXBsZSBvZiB0YXJiYWxsIGZp
bGVuYW1lLCBzdWNjZXNzIFRydWUvRmFsc2UsIG1lc3NhZ2UvTj0Kb25lCi0gICAgICAgICIiIgot
ICAgICAgICBtZXNzYWdlID0zRCAnJwotICAgICAgICBzdWNjZXNzID0zRCBUcnVlCi0gICAgICAg
ICMgTWFrZSBzdXJlIHRoZSB0b29sIGlzIGFjdHVhbGx5IGxvYWRlZC4KLSAgICAgICAgaWYgdG9v
bF9pZCBub3QgaW4gc2VsZi50b29sc19ieV9pZDoKLSAgICAgICAgICAgIHJldHVybiBOb25lLCBG
YWxzZSwgIk5vIHRvb2wgd2l0aCBpZCAlcyIgJSBlc2NhcGUoIHRvb2xfaWQgKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgdG9vbCA9M0Qgc2VsZi50b29sc19ieV9pZFsgdG9vbF9pZCBdCi0g
ICAgICAgICAgICB0YXJiYWxsX2ZpbGVzID0zRCBbXQotICAgICAgICAgICAgdGVtcF9maWxlcyA9
M0QgW10KLSAgICAgICAgICAgIHRvb2xfeG1sID0zRCBmaWxlKCBvcy5wYXRoLmFic3BhdGgoIHRv
b2wuY29uZmlnX2ZpbGUgKSwgJ3InICkuPQpyZWFkKCkKLSAgICAgICAgICAgICMgUmV0cmlldmUg
dG9vbCBoZWxwIGltYWdlcyBhbmQgcmV3cml0ZSB0aGUgdG9vbCdzIHhtbCBpbnRvIGEgPQp0ZW1w
b3JhcnkgZmlsZSB3aXRoIHRoZSBwYXRoCi0gICAgICAgICAgICAjIG1vZGlmaWVkIHRvIGJlIHJl
bGF0aXZlIHRvIHRoZSByZXBvc2l0b3J5IHJvb3QuCi0gICAgICAgICAgICBpbWFnZV9mb3VuZCA9
M0QgRmFsc2UKLSAgICAgICAgICAgIGlmIHRvb2wuaGVscCBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgICAgICB0b29sX2hlbHAgPTNEIHRvb2wuaGVscC5fc291cmNlCi0gICAgICAgICAgICAgICAg
IyBDaGVjayBlYWNoIGxpbmUgb2YgdGhlIHJlbmRlcmVkIHRvb2wgaGVscCBmb3IgYW4gaW1hZ2Ug
dD0KYWcgdGhhdCBwb2ludHMgdG8gYSBsb2NhdGlvbiB1bmRlciBzdGF0aWMvCi0gICAgICAgICAg
ICAgICAgZm9yIGhlbHBfbGluZSBpbiB0b29sX2hlbHAuc3BsaXQoICdcbicgKToKLSAgICAgICAg
ICAgICAgICAgICAgaW1hZ2VfcmVnZXggPTNEIHJlLmNvbXBpbGUoICdpbWcgYWx0PTNEIlteIl0r
IiBzcmM9M0QiPQpcJHtzdGF0aWNfcGF0aH0vKFteIl0rKSInICkKLSAgICAgICAgICAgICAgICAg
ICAgbWF0Y2hlcyA9M0QgcmUuc2VhcmNoKCBpbWFnZV9yZWdleCwgaGVscF9saW5lICkKLSAgICAg
ICAgICAgICAgICAgICAgaWYgbWF0Y2hlcyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRvb2xfaGVscF9pbWFnZSA9M0QgbWF0Y2hlcy5ncm91cCgxKQotICAgICAgICAgICAg
ICAgICAgICAgICAgdGFyYmFsbF9wYXRoID0zRCB0b29sX2hlbHBfaW1hZ2UKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGZpbGVzeXN0ZW1fcGF0aCA9M0Qgb3MucGF0aC5hYnNwYXRoKCBvcy5wYXRo
LmpvaW4oPQogdHJhbnMuYXBwLmNvbmZpZy5yb290LCAnc3RhdGljJywgdG9vbF9oZWxwX2ltYWdl
ICkgKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoIGZpbGVzeXN0
ZW1fcGF0aCApOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmJhbGxfZmlsZXMuYXBw
ZW5kKCAoIGZpbGVzeXN0ZW1fcGF0aCwgdGFyYmE9CmxsX3BhdGggKSApCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW1hZ2VfZm91bmQgPTNEIFRydWUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0b29sX3htbCA9M0QgdG9vbF94bWwucmVwbGFjZSggJyR7c3RhdGljX3BhdGh9PQov
JXMnICUgdGFyYmFsbF9wYXRoLCB0YXJiYWxsX3BhdGggKQotICAgICAgICAgICAgIyBJZiBvbmUg
b3IgbW9yZSB0b29sIGhlbHAgaW1hZ2VzIHdlcmUgZm91bmQsIGFkZCB0aGUgbW9kaWZpZWQ9CiB0
b29sIFhNTCB0byB0aGUgdGFyYmFsbCBpbnN0ZWFkIG9mIHRoZSBvcmlnaW5hbC4KLSAgICAgICAg
ICAgIGlmIGltYWdlX2ZvdW5kOgotICAgICAgICAgICAgICAgIGZkLCBuZXdfdG9vbF9jb25maWcg
PTNEIHRlbXBmaWxlLm1rc3RlbXAoIHN1ZmZpeD0zRCcueG1sJyApCi0gICAgICAgICAgICAgICAg
b3MuY2xvc2UoIGZkICkKLSAgICAgICAgICAgICAgICBmaWxlKCBuZXdfdG9vbF9jb25maWcsICd3
JyApLndyaXRlKCB0b29sX3htbCApCi0gICAgICAgICAgICAgICAgdG9vbF90dXAgPTNEICggb3Mu
cGF0aC5hYnNwYXRoKCBuZXdfdG9vbF9jb25maWcgKSwgb3MucGF0aD0KLnNwbGl0KCB0b29sLmNv
bmZpZ19maWxlIClbLTFdICApCi0gICAgICAgICAgICAgICAgdGVtcF9maWxlcy5hcHBlbmQoIG9z
LnBhdGguYWJzcGF0aCggbmV3X3Rvb2xfY29uZmlnICkgKQotICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICB0b29sX3R1cCA9M0QgKCBvcy5wYXRoLmFic3BhdGgoIHRvb2wuY29uZmln
X2ZpbGUgKSwgb3MucGF0PQpoLnNwbGl0KCB0b29sLmNvbmZpZ19maWxlIClbLTFdICApCi0gICAg
ICAgICAgICB0YXJiYWxsX2ZpbGVzLmFwcGVuZCggdG9vbF90dXAgKQotICAgICAgICAgICAgIyBU
T0RPOiBUaGlzIGZlZWxzIGhhY2t5LgotICAgICAgICAgICAgdG9vbF9jb21tYW5kID0zRCB0b29s
LmNvbW1hbmQuc3RyaXAoKS5zcGxpdCgpWzBdCi0gICAgICAgICAgICB0b29sX3BhdGggPTNEIG9z
LnBhdGguZGlybmFtZSggb3MucGF0aC5hYnNwYXRoKCB0b29sLmNvbmZpZ19maT0KbGUgKSApCi0g
ICAgICAgICAgICAjIEFkZCB0aGUgdG9vbCBYTUwgdG8gdGhlIHR1cGxlIHRoYXQgd2lsbCBiZSB1
c2VkIHRvIHBvcHVsYXRlID0KdGhlIHRhcmJhbGwuCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4
aXN0cyggb3MucGF0aC5qb2luKCB0b29sX3BhdGgsIHRvb2xfY29tbWFuZCApICk6Ci0gICAgICAg
ICAgICAgICAgdGFyYmFsbF9maWxlcy5hcHBlbmQoICggb3MucGF0aC5qb2luKCB0b29sX3BhdGgs
IHRvb2xfY29tbT0KYW5kICksIHRvb2xfY29tbWFuZCApICkKLSAgICAgICAgICAgICMgRmluZCBh
bmQgYWRkIG1hY3JvcyBhbmQgY29kZSBmaWxlcy4KLSAgICAgICAgICAgIGZvciBleHRlcm5hbF9m
aWxlIGluIHRvb2wuZ2V0X2V4dGVybmFsbHlfcmVmZXJlbmNlZF9wYXRocyggb3MuPQpwYXRoLmFi
c3BhdGgoIHRvb2wuY29uZmlnX2ZpbGUgKSApOgotICAgICAgICAgICAgICAgIGV4dGVybmFsX2Zp
bGVfYWJzcGF0aCA9M0Qgb3MucGF0aC5hYnNwYXRoKCBvcy5wYXRoLmpvaW4oIHQ9Cm9vbF9wYXRo
LCBleHRlcm5hbF9maWxlICkgKQotICAgICAgICAgICAgICAgIHRhcmJhbGxfZmlsZXMuYXBwZW5k
KCAoIGV4dGVybmFsX2ZpbGVfYWJzcGF0aCwgZXh0ZXJuYWxfZmk9CmxlICkgKQotICAgICAgICAg
ICAgaWYgb3MucGF0aC5leGlzdHMoIG9zLnBhdGguam9pbiggdG9vbF9wYXRoLCAiRG9ja2VyZmls
ZSIgKSApOgotICAgICAgICAgICAgICAgIHRhcmJhbGxfZmlsZXMuYXBwZW5kKCAoIG9zLnBhdGgu
am9pbiggdG9vbF9wYXRoLCAiRG9ja2VyZmk9CmxlIiApLCAiRG9ja2VyZmlsZSIgKSApCi0gICAg
ICAgICAgICAjIEZpbmQgdGVzdHMsIGFuZCBjaGVjayB0aGVtIGZvciB0ZXN0IGRhdGEuCi0gICAg
ICAgICAgICB0ZXN0cyA9M0QgdG9vbC50ZXN0cwotICAgICAgICAgICAgaWYgdGVzdHMgaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICAgICAgZm9yIHRlc3QgaW4gdGVzdHM6Ci0gICAgICAgICAgICAg
ICAgICAgICMgQWRkIGlucHV0IGZpbGUgdHVwbGVzIHRvIHRoZSBsaXN0LgotICAgICAgICAgICAg
ICAgICAgICBmb3IgaW5wdXQgaW4gdGVzdC5pbnB1dHM6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgaW5wdXRfdmFsdWUgaW4gdGVzdC5pbnB1dHNbIGlucHV0IF06Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5wdXRfcGF0aCA9M0Qgb3MucGF0aC5hYnNwYXRoKCBvcy5wYXRoLmpv
aW4oID0KJ3Rlc3QtZGF0YScsIGlucHV0X3ZhbHVlICkgKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKCBpbnB1dF9wYXRoICk6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRkX3R1cCA9M0QgKCBpbnB1dF9wYXRoLCBvcy5wYXRoLmpvaW4oICd0
ZT0Kc3QtZGF0YScsIGlucHV0X3ZhbHVlICkgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB0YXJiYWxsX2ZpbGVzLmFwcGVuZCggdGRfdHVwICkKLSAgICAgICAgICAgICAgICAgICAg
IyBBbmQgYWRkIG91dHB1dCBmaWxlIHR1cGxlcyB0byB0aGUgbGlzdC4KLSAgICAgICAgICAgICAg
ICAgICAgZm9yIGxhYmVsLCBmaWxlbmFtZSwgXyBpbiB0ZXN0Lm91dHB1dHM6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBvdXRwdXRfZmlsZXBhdGggPTNEIG9zLnBhdGguYWJzcGF0aCggb3MucGF0
aC5qb2luKD0KICd0ZXN0LWRhdGEnLCBmaWxlbmFtZSApICkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIG9zLnBhdGguZXhpc3RzKCBvdXRwdXRfZmlsZXBhdGggKToKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZF90dXAgPTNEICggb3V0cHV0X2ZpbGVwYXRoLCBvcy5wYXRoLmpvaW4o
ICd0PQplc3QtZGF0YScsIGZpbGVuYW1lICkgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRhcmJhbGxfZmlsZXMuYXBwZW5kKCB0ZF90dXAgKQotICAgICAgICAgICAgZm9yIHBhcmFtIGlu
IHRvb2wuaW5wdXRfcGFyYW1zOgotICAgICAgICAgICAgICAgICMgQ2hlY2sgZm9yIHRvb2wgZGF0
YSB0YWJsZSBkZWZpbml0aW9ucy4KLSAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKCBwYXJhbSwg
J29wdGlvbnMnICk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoIHBhcmFtLm9wdGlv
bnMsICd0b29sX2RhdGFfdGFibGUnICk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3Rh
YmxlID0zRCBwYXJhbS5vcHRpb25zLnRvb2xfZGF0YV90YWJsZQotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgaGFzYXR0ciggZGF0YV90YWJsZSwgJ2ZpbGVuYW1lcycgKToKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhX3RhYmxlX2RlZmluaXRpb25zID0zRCBbXQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZvciBkYXRhX3RhYmxlX2ZpbGVuYW1lIGluIGRhdGFfdGFibGUu
ZmlsZW5hbWU9CnM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRklYTUU6IGZy
b21fc2hlZF9jb25maWcgc2VlbXMgdG8gYWx3YXlzID0KYmUgRmFsc2UuCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhX3RhYmxlLmZpbGVuYW1lc1sgZGF0YV90YWJs
ZV9maT0KbGVuYW1lIF1bICdmcm9tX3NoZWRfY29uZmlnJyBdOgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGFyX2ZpbGUgPTNEIGRhdGFfdGFibGUuZmlsZW5hbWVzWyBkYXQ9
CmFfdGFibGVfZmlsZW5hbWUgXVsgJ2ZpbGVuYW1lJyBdICsgJy5zYW1wbGUnCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVfZmlsZSA9M0Qgb3MucGF0aC5qb2luKCBk
YXRhX3RhYj0KbGUuZmlsZW5hbWVzWyBkYXRhX3RhYmxlX2ZpbGVuYW1lIF1bICd0b29sX2RhdGFf
cGF0aCcgXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0YXJfZmlsZSApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjIFVzZSB0aGUgLnNhbXBsZSBmaWxlLCBpZiBvbmUgZXhpc3RzLj0KIElmIG5vdCwg
c2tpcCB0aGlzIGRhdGEgdGFibGUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiBvcy5wYXRoLmV4aXN0cyggc2FtcGxlX2ZpbGUgKToKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0YXJmaWxlX3BhdGgsIHRhcmZpbGVfbmFtZSA9M0Qgb3MuPQpw
YXRoLnNwbGl0KCB0YXJfZmlsZSApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdGFyZmlsZV9wYXRoID0zRCBvcy5wYXRoLmpvaW4oICd0bz0Kb2wtZGF0YScsIHRhcmZp
bGVfbmFtZSApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxl
X25hbWUgPTNEIHRhcmZpbGVfcGF0aCArICcucz0KYW1wbGUnCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGFyYmFsbF9maWxlcy5hcHBlbmQoICggc2FtcGxlX2ZpbD0K
ZSwgdGFyZmlsZV9wYXRoICkgKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YV90YWJsZV9kZWZpbml0aW9ucy5hcHBlbmQoIGRhdGFfdGE9CmJsZS54bWxfc3RyaW5nICkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsZW4oIGRhdGFfdGFibGVfZGVmaW5pdGlv
bnMgKSA+IDA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUHV0IHRoZSBkYXRh
IHRhYmxlIGRlZmluaXRpb24gWE1MIGluIGEgdD0KZW1wb3JhcnkgZmlsZS4KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGFibGVfZGVmaW5pdGlvbiA9M0QgJzw/eG1sIHZlcnNpb249
M0QiMS4wPQoiIGVuY29kaW5nPTNEInV0Zi04Ij8+XG48dGFibGVzPlxuICAgICVzPC90YWJsZXM+
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9kZWZpbml0aW9uID0zRCB0
YWJsZV9kZWZpbml0aW9uICUgJ1w9Cm4nLmpvaW4oIGRhdGFfdGFibGVfZGVmaW5pdGlvbnMgKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZCwgdGFibGVfY29uZiA9M0QgdGVtcGZp
bGUubWtzdGVtcCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmNsb3NlKCBm
ZCApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUoIHRhYmxlX2NvbmYsICd3
JyApLndyaXRlKCB0YWJsZV9kZWZpbj0KaXRpb24gKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0YXJiYWxsX2ZpbGVzLmFwcGVuZCggKCB0YWJsZV9jb25mLCBvcy5wYXQ9Cmguam9p
biggJ3Rvb2wtZGF0YScsICd0b29sX2RhdGFfdGFibGVfY29uZi54bWwuc2FtcGxlJyApICkgKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wX2ZpbGVzLmFwcGVuZCggdGFibGVf
Y29uZiApCi0gICAgICAgICAgICAjIENyZWF0ZSB0aGUgdGFyYmFsbC4KLSAgICAgICAgICAgIGZk
LCB0YXJiYWxsX2FyY2hpdmUgPTNEIHRlbXBmaWxlLm1rc3RlbXAoIHN1ZmZpeD0zRCcudGd6JyAp
Ci0gICAgICAgICAgICBvcy5jbG9zZSggZmQgKQotICAgICAgICAgICAgdGFyYmFsbCA9M0QgdGFy
ZmlsZS5vcGVuKCBuYW1lPTNEdGFyYmFsbF9hcmNoaXZlLCBtb2RlPTNEJ3c6Z3o9CicgKQotICAg
ICAgICAgICAgIyBBZGQgdGhlIGZpbGVzIGZyb20gdGhlIHByZXZpb3VzbHkgZ2VuZXJhdGVkIGxp
c3QuCi0gICAgICAgICAgICBmb3IgZnNwYXRoLCB0YXJwYXRoIGluIHRhcmJhbGxfZmlsZXM6Ci0g
ICAgICAgICAgICAgICAgdGFyYmFsbC5hZGQoIGZzcGF0aCwgYXJjbmFtZT0zRHRhcnBhdGggKQot
ICAgICAgICAgICAgdGFyYmFsbC5jbG9zZSgpCi0gICAgICAgICAgICAjIERlbGV0ZSBhbnkgdGVt
cG9yYXJ5IGZpbGVzIHRoYXQgd2VyZSBnZW5lcmF0ZWQuCi0gICAgICAgICAgICBmb3IgdGVtcF9m
aWxlIGluIHRlbXBfZmlsZXM6Ci0gICAgICAgICAgICAgICAgb3MucmVtb3ZlKCB0ZW1wX2ZpbGUg
KQotICAgICAgICAgICAgcmV0dXJuIHRhcmJhbGxfYXJjaGl2ZSwgVHJ1ZSwgTm9uZQotICAgICAg
ICByZXR1cm4gTm9uZSwgRmFsc2UsICJBbiB1bmtub3duIGVycm9yIG9jY3VycmVkLiIKLQotICAg
IGRlZiByZWxvYWRfdG9vbF9ieV9pZCggc2VsZiwgdG9vbF9pZCApOgotICAgICAgICAiIiIKLSAg
ICAgICAgQXR0ZW1wdCB0byByZWxvYWQgdGhlIHRvb2wgaWRlbnRpZmllZCBieSAndG9vbF9pZCcs
IGlmIHN1Y2Nlc3NmdWwKLSAgICAgICAgcmVwbGFjZSB0aGUgb2xkIHRvb2wuCi0gICAgICAgICIi
IgotICAgICAgICBpZiB0b29sX2lkIG5vdCBpbiBzZWxmLnRvb2xzX2J5X2lkOgotICAgICAgICAg
ICAgbWVzc2FnZSA9M0QgIk5vIHRvb2wgd2l0aCBpZCAlcyIgJSBlc2NhcGUoIHRvb2xfaWQgKQot
ICAgICAgICAgICAgc3RhdHVzID0zRCAnZXJyb3InCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBvbGRfdG9vbCA9M0Qgc2VsZi50b29sc19ieV9pZFsgdG9vbF9pZCBdCi0gICAgICAgICAgICBu
ZXdfdG9vbCA9M0Qgc2VsZi5sb2FkX3Rvb2woIG9sZF90b29sLmNvbmZpZ19maWxlICkKLSAgICAg
ICAgICAgICMgVGhlIHRvb2wgbWF5IGhhdmUgYmVlbiBpbnN0YWxsZWQgZnJvbSBhIHRvb2wgc2hl
ZCwgc28gc2V0IHRoPQplIHRvb2wgc2hlZCBhdHRyaWJ1dGVzLgotICAgICAgICAgICAgIyBTaW5j
ZSB0aGUgdG9vbCB2ZXJzaW9uIG1heSBoYXZlIGNoYW5nZWQsIHdlIGRvbid0IG92ZXJyaWRlIGk9
CnQgaGVyZS4KLSAgICAgICAgICAgIG5ld190b29sLmlkID0zRCBvbGRfdG9vbC5pZAotICAgICAg
ICAgICAgbmV3X3Rvb2wuZ3VpZCA9M0Qgb2xkX3Rvb2wuZ3VpZAotICAgICAgICAgICAgbmV3X3Rv
b2wudG9vbF9zaGVkID0zRCBvbGRfdG9vbC50b29sX3NoZWQKLSAgICAgICAgICAgIG5ld190b29s
LnJlcG9zaXRvcnlfbmFtZSA9M0Qgb2xkX3Rvb2wucmVwb3NpdG9yeV9uYW1lCi0gICAgICAgICAg
ICBuZXdfdG9vbC5yZXBvc2l0b3J5X293bmVyID0zRCBvbGRfdG9vbC5yZXBvc2l0b3J5X293bmVy
Ci0gICAgICAgICAgICBuZXdfdG9vbC5pbnN0YWxsZWRfY2hhbmdlc2V0X3JldmlzaW9uID0zRCBv
bGRfdG9vbC5pbnN0YWxsZWRfYz0KaGFuZ2VzZXRfcmV2aXNpb24KLSAgICAgICAgICAgIG5ld190
b29sLm9sZF9pZCA9M0Qgb2xkX3Rvb2wub2xkX2lkCi0gICAgICAgICAgICAjIFJlcGxhY2Ugb2xk
X3Rvb2wgd2l0aCBuZXdfdG9vbCBpbiBzZWxmLnRvb2xfcGFuZWwKLSAgICAgICAgICAgIHRvb2xf
a2V5ID0zRCAndG9vbF8nICsgdG9vbF9pZAotICAgICAgICAgICAgZm9yIGtleSwgdmFsIGluIHNl
bGYudG9vbF9wYW5lbC5pdGVtcygpOgotICAgICAgICAgICAgICAgIGlmIGtleSA9M0Q9M0QgdG9v
bF9rZXk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYudG9vbF9wYW5lbFsga2V5IF0gPTNEIG5l
d190b29sCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZWxpZiBr
ZXkuc3RhcnRzd2l0aCggJ3NlY3Rpb24nICk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHRvb2xf
a2V5IGluIHZhbC5lbGVtczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9vbF9wYW5l
bFsga2V5IF0uZWxlbXNbIHRvb2xfa2V5IF0gPTNEIG5ld190PQpvb2wKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBzZWxmLnRvb2xzX2J5X2lkWyB0b29sX2lkIF0g
PTNEIG5ld190b29sCi0gICAgICAgICAgICBtZXNzYWdlID0zRCAiUmVsb2FkZWQgdGhlIHRvb2w6
PGJyLz4iCi0gICAgICAgICAgICBtZXNzYWdlICs9M0QgIjxiPm5hbWU6PC9iPiAlczxici8+IiAl
IG9sZF90b29sLm5hbWUKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0zRCAiPGI+aWQ6PC9iPiAlczxi
ci8+IiAlIG9sZF90b29sLmlkCi0gICAgICAgICAgICBtZXNzYWdlICs9M0QgIjxiPnZlcnNpb246
PC9iPiAlcyIgJSBvbGRfdG9vbC52ZXJzaW9uCi0gICAgICAgICAgICBzdGF0dXMgPTNEICdkb25l
JwotICAgICAgICByZXR1cm4gbWVzc2FnZSwgc3RhdHVzCi0KLSAgICBkZWYgcmVtb3ZlX3Rvb2xf
YnlfaWQoIHNlbGYsIHRvb2xfaWQgKToKLSAgICAgICAgIiIiCi0gICAgICAgIEF0dGVtcHQgdG8g
cmVtb3ZlIHRoZSB0b29sIGlkZW50aWZpZWQgYnkgJ3Rvb2xfaWQnLgotICAgICAgICAiIiIKLSAg
ICAgICAgaWYgdG9vbF9pZCBub3QgaW4gc2VsZi50b29sc19ieV9pZDoKLSAgICAgICAgICAgIG1l
c3NhZ2UgPTNEICJObyB0b29sIHdpdGggaWQgJXMiICUgZXNjYXBlKCB0b29sX2lkICkKLSAgICAg
ICAgICAgIHN0YXR1cyA9M0QgJ2Vycm9yJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdG9v
bCA9M0Qgc2VsZi50b29sc19ieV9pZFsgdG9vbF9pZCBdCi0gICAgICAgICAgICBkZWwgc2VsZi50
b29sc19ieV9pZFsgdG9vbF9pZCBdCi0gICAgICAgICAgICB0b29sX2tleSA9M0QgJ3Rvb2xfJyAr
IHRvb2xfaWQKLSAgICAgICAgICAgIGZvciBrZXksIHZhbCBpbiBzZWxmLnRvb2xfcGFuZWwuaXRl
bXMoKToKLSAgICAgICAgICAgICAgICBpZiBrZXkgPTNEPTNEIHRvb2xfa2V5OgotICAgICAgICAg
ICAgICAgICAgICBkZWwgc2VsZi50b29sX3BhbmVsWyBrZXkgXQotICAgICAgICAgICAgICAgICAg
ICBicmVhawotICAgICAgICAgICAgICAgIGVsaWYga2V5LnN0YXJ0c3dpdGgoICdzZWN0aW9uJyAp
OgotICAgICAgICAgICAgICAgICAgICBpZiB0b29sX2tleSBpbiB2YWwuZWxlbXM6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBkZWwgc2VsZi50b29sX3BhbmVsWyBrZXkgXS5lbGVtc1sgdG9vbF9r
ZXkgXQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIHRvb2xf
aWQgaW4gc2VsZi5kYXRhX21hbmFnZXJfdG9vbHM6Ci0gICAgICAgICAgICAgICAgZGVsIHNlbGYu
ZGF0YV9tYW5hZ2VyX3Rvb2xzWyB0b29sX2lkIF0KLSAgICAgICAgICAgICNUT0RPOiBkbyB3ZSBu
ZWVkIHRvIG1hbnVhbGx5IHJlbW92ZSBmcm9tIHRoZSBpbnRlZ3JhdGVkIHBhbmVsPQogaGVyZT8K
LSAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJSZW1vdmVkIHRoZSB0b29sOjxici8+IgotICAgICAg
ICAgICAgbWVzc2FnZSArPTNEICI8Yj5uYW1lOjwvYj4gJXM8YnIvPiIgJSB0b29sLm5hbWUKLSAg
ICAgICAgICAgIG1lc3NhZ2UgKz0zRCAiPGI+aWQ6PC9iPiAlczxici8+IiAlIHRvb2wuaWQKLSAg
ICAgICAgICAgIG1lc3NhZ2UgKz0zRCAiPGI+dmVyc2lvbjo8L2I+ICVzIiAlIHRvb2wudmVyc2lv
bgotICAgICAgICAgICAgc3RhdHVzID0zRCAnZG9uZScKLSAgICAgICAgcmV0dXJuIG1lc3NhZ2Us
IHN0YXR1cwotCi0gICAgZGVmIGxvYWRfd29ya2Zsb3coIHNlbGYsIHdvcmtmbG93X2lkICk6Ci0g
ICAgICAgICIiIgotICAgICAgICBSZXR1cm4gYW4gaW5zdGFuY2Ugb2YgJ1dvcmtmbG93JyBpZGVu
dGlmaWVkIGJ5IGBpZGAsCi0gICAgICAgIHdoaWNoIGlzIGVuY29kZWQgaW4gdGhlIHRvb2wgcGFu
ZWwuCi0gICAgICAgICIiIgotICAgICAgICBpZCA9M0Qgc2VsZi5hcHAuc2VjdXJpdHkuZGVjb2Rl
X2lkKCB3b3JrZmxvd19pZCApCi0gICAgICAgIHN0b3JlZCA9M0Qgc2VsZi5hcHAubW9kZWwuY29u
dGV4dC5xdWVyeSggc2VsZi5hcHAubW9kZWwuU3RvcmVkV29yaz0KZmxvdyApLmdldCggaWQgKQot
ICAgICAgICByZXR1cm4gc3RvcmVkLmxhdGVzdF93b3JrZmxvdwotCi0gICAgZGVmIGluaXRfZGVw
ZW5kZW5jeV9tYW5hZ2VyKCBzZWxmICk6CisgICAgZGVmIF9pbml0X2RlcGVuZGVuY3lfbWFuYWdl
ciggc2VsZiApOgogICAgICAgICBzZWxmLmRlcGVuZGVuY3lfbWFuYWdlciA9M0QgYnVpbGRfZGVw
ZW5kZW5jeV9tYW5hZ2VyKCBzZWxmLmFwcC5jb249CmZpZyApCj0yMAotICAgIEBwcm9wZXJ0eQot
ICAgIGRlZiBzYV9zZXNzaW9uKCBzZWxmICk6Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm5z
IGEgU1FMQWxjaGVteSBzZXNzaW9uCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5h
cHAubW9kZWwuY29udGV4dAotCi0gICAgZGVmIHRvX2RpY3QoIHNlbGYsIHRyYW5zLCBpbl9wYW5l
bD0zRFRydWUsICoqa3dkcyApOgotICAgICAgICAiIiIKLSAgICAgICAgdG9fZGljdCB0b29sYm94
LgotICAgICAgICAiIiIKLQotICAgICAgICBjb250ZXh0ID0zRCBCdW5jaCggdG9vbGJveD0zRHNl
bGYsIHRyYW5zPTNEdHJhbnMsICoqa3dkcyApCi0gICAgICAgIGlmIGluX3BhbmVsOgotICAgICAg
ICAgICAgcGFuZWxfZWx0cyA9M0QgWyB2YWwgZm9yIHZhbCBpbiBzZWxmLnRvb2xfcGFuZWwuaXRl
cnZhbHVlcygpIF0KLQotICAgICAgICAgICAgZmlsdGVycyA9M0Qgc2VsZi5maWx0ZXJfZmFjdG9y
eS5idWlsZF9maWx0ZXJzKCB0cmFucywgKiprd2RzICkKLQotICAgICAgICAgICAgZmlsdGVyZWRf
cGFuZWxfZWx0cyA9M0QgW10KLSAgICAgICAgICAgIGZvciBpbmRleCwgZWx0IGluIGVudW1lcmF0
ZSggcGFuZWxfZWx0cyApOgotICAgICAgICAgICAgICAgIGVsdCA9M0QgX2ZpbHRlcl9mb3JfcGFu
ZWwoIGVsdCwgZmlsdGVycywgY29udGV4dCApCi0gICAgICAgICAgICAgICAgaWYgZWx0OgotICAg
ICAgICAgICAgICAgICAgICBmaWx0ZXJlZF9wYW5lbF9lbHRzLmFwcGVuZCggZWx0ICkKLSAgICAg
ICAgICAgIHBhbmVsX2VsdHMgPTNEIGZpbHRlcmVkX3BhbmVsX2VsdHMKLQotICAgICAgICAgICAg
IyBQcm9kdWNlIHBhbmVsLgotICAgICAgICAgICAgcnZhbCA9M0QgW10KLSAgICAgICAgICAgIGt3
YXJncyA9M0QgZGljdCgKLSAgICAgICAgICAgICAgICB0cmFucz0zRHRyYW5zLAotICAgICAgICAg
ICAgICAgIGxpbmtfZGV0YWlscz0zRFRydWUKLSAgICAgICAgICAgICkKLSAgICAgICAgICAgIGZv
ciBlbHQgaW4gcGFuZWxfZWx0czoKLSAgICAgICAgICAgICAgICBydmFsLmFwcGVuZCggdG9fZGlj
dF9oZWxwZXIoIGVsdCwga3dhcmdzICkgKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdG9v
bHMgPTNEIFtdCi0gICAgICAgICAgICBmb3IgaWQsIHRvb2wgaW4gc2VsZi50b29sc19ieV9pZC5p
dGVtcygpOgotICAgICAgICAgICAgICAgIHRvb2xzLmFwcGVuZCggdG9vbC50b19kaWN0KCB0cmFu
cywgbGlua19kZXRhaWxzPTNEVHJ1ZSApICkKLSAgICAgICAgICAgIHJ2YWwgPTNEIHRvb2xzCi0K
LSAgICAgICAgcmV0dXJuIHJ2YWwKLQotCi1kZWYgX2ZpbHRlcl9mb3JfcGFuZWwoIGl0ZW0sIGZp
bHRlcnMsIGNvbnRleHQgKToKLSAgICAiIiIKLSAgICBGaWx0ZXJzIHRvb2wgcGFuZWwgZWxlbWVu
dHMgc28gdGhhdCBvbmx5IHRob3NlIHRoYXQgYXJlIGNvbXBhdGlibGUKLSAgICB3aXRoIHByb3Zp
ZGVkIGZpbHRlcnMgYXJlIGtlcHQuCi0gICAgIiIiCi0gICAgZGVmIF9hcHBseV9maWx0ZXIoIGZp
bHRlcl9pdGVtLCBmaWx0ZXJfbGlzdCApOgotICAgICAgICBmb3IgZmlsdGVyX21ldGhvZCBpbiBm
aWx0ZXJfbGlzdDoKLSAgICAgICAgICAgIGlmIG5vdCBmaWx0ZXJfbWV0aG9kKCBjb250ZXh0LCBm
aWx0ZXJfaXRlbSApOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1
cm4gVHJ1ZQotICAgIGlmIGlzaW5zdGFuY2UoIGl0ZW0sIFRvb2wgKToKLSAgICAgICAgaWYgX2Fw
cGx5X2ZpbHRlciggaXRlbSwgZmlsdGVyc1sgJ3Rvb2wnIF0gKToKLSAgICAgICAgICAgIHJldHVy
biBpdGVtCi0gICAgZWxpZiBpc2luc3RhbmNlKCBpdGVtLCBUb29sU2VjdGlvbkxhYmVsICk6Ci0g
ICAgICAgIGlmIF9hcHBseV9maWx0ZXIoIGl0ZW0sIGZpbHRlcnNbICdsYWJlbCcgXSApOgotICAg
ICAgICAgICAgcmV0dXJuIGl0ZW0KLSAgICBlbGlmIGlzaW5zdGFuY2UoIGl0ZW0sIFRvb2xTZWN0
aW9uICk6Ci0gICAgICAgICMgRmlsdGVyIHNlY3Rpb24gaXRlbS1ieS1pdGVtLiBPbmx5IHNob3cg
YSBsYWJlbCBpZiB0aGVyZSBhcmUKLSAgICAgICAgIyBub24tZmlsdGVyZWQgdG9vbHMgYmVsb3cg
aXQuCi0KLSAgICAgICAgaWYgX2FwcGx5X2ZpbHRlciggaXRlbSwgZmlsdGVyc1sgJ3NlY3Rpb24n
IF0gKToKLSAgICAgICAgICAgIGN1cl9sYWJlbF9rZXkgPTNEIE5vbmUKLSAgICAgICAgICAgIHRv
b2xzX3VuZGVyX2xhYmVsID0zRCBGYWxzZQotICAgICAgICAgICAgZmlsdGVyZWRfZWxlbXMgPTNE
IGl0ZW0uZWxlbXMuY29weSgpCi0gICAgICAgICAgICBmb3Iga2V5LCBzZWN0aW9uX2l0ZW0gaW4g
aXRlbS5lbGVtcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoIHNlY3Rp
b25faXRlbSwgVG9vbCApOgotICAgICAgICAgICAgICAgICAgICAjIEZpbHRlciB0b29sLgotICAg
ICAgICAgICAgICAgICAgICBpZiBfYXBwbHlfZmlsdGVyKCBzZWN0aW9uX2l0ZW0sIGZpbHRlcnNb
ICd0b29sJyBdICk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0b29sc191bmRlcl9sYWJlbCA9
M0QgVHJ1ZQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAg
ICAgZGVsIGZpbHRlcmVkX2VsZW1zWyBrZXkgXQotICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0
YW5jZSggc2VjdGlvbl9pdGVtLCBUb29sU2VjdGlvbkxhYmVsICk6Ci0gICAgICAgICAgICAgICAg
ICAgICMgSWYgdGhlcmUgaXMgYSBsYWJlbCBhbmQgaXQgZG9lcyBub3QgaGF2ZSB0b29scywKLSAg
ICAgICAgICAgICAgICAgICAgIyByZW1vdmUgaXQuCi0gICAgICAgICAgICAgICAgICAgIGlmICgg
Y3VyX2xhYmVsX2tleSBhbmQgbm90IHRvb2xzX3VuZGVyX2xhYmVsICkgb3Igbm90ID0KX2FwcGx5
X2ZpbHRlciggc2VjdGlvbl9pdGVtLCBmaWx0ZXJzWyAnbGFiZWwnIF0gKToKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGRlbCBmaWx0ZXJlZF9lbGVtc1sgY3VyX2xhYmVsX2tleSBdCi0KLSAgICAg
ICAgICAgICAgICAgICAgIyBSZXNldCBhdHRyaWJ1dGVzIGZvciBuZXcgbGFiZWwuCi0gICAgICAg
ICAgICAgICAgICAgIGN1cl9sYWJlbF9rZXkgPTNEIGtleQotICAgICAgICAgICAgICAgICAgICB0
b29sc191bmRlcl9sYWJlbCA9M0QgRmFsc2UKLQotICAgICAgICAgICAgIyBIYW5kbGUgbGFzdCBs
YWJlbC4KLSAgICAgICAgICAgIGlmIGN1cl9sYWJlbF9rZXkgYW5kIG5vdCB0b29sc191bmRlcl9s
YWJlbDoKLSAgICAgICAgICAgICAgICBkZWwgZmlsdGVyZWRfZWxlbXNbIGN1cl9sYWJlbF9rZXkg
XQotCi0gICAgICAgICAgICAjIE9ubHkgcmV0dXJuIHNlY3Rpb24gaWYgdGhlcmUgYXJlIGVsZW1l
bnRzLgotICAgICAgICAgICAgaWYgbGVuKCBmaWx0ZXJlZF9lbGVtcyApICE9M0QgMDoKLSAgICAg
ICAgICAgICAgICBjb3B5ID0zRCBpdGVtLmNvcHkoKQotICAgICAgICAgICAgICAgIGNvcHkuZWxl
bXMgPTNEIGZpbHRlcmVkX2VsZW1zCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvcHkKLQotICAg
IHJldHVybiBOb25lCi0KLQotY2xhc3MgVG9vbFNlY3Rpb24oIG9iamVjdCwgRGljdGlmaWFibGUg
KToKLSAgICAiIiIKLSAgICBBIGdyb3VwIG9mIHRvb2xzIHdpdGggc2ltaWxhciB0eXBlL3B1cnBv
c2UgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBhcyBhCi0gICAgZ3JvdXAgaW4gdGhlIHVzZXIgaW50
ZXJmYWNlLgotICAgICIiIgotCi0gICAgZGljdF9jb2xsZWN0aW9uX3Zpc2libGVfa2V5cyA9M0Qg
KCAnaWQnLCAnbmFtZScsICd2ZXJzaW9uJyApCi0KLSAgICBkZWYgX19pbml0X18oIHNlbGYsIGVs
ZW09M0ROb25lICk6Ci0gICAgICAgIGYgPTNEIGxhbWJkYSBlbGVtLCB2YWw6IGVsZW0gaXMgbm90
IE5vbmUgYW5kIGVsZW0uZ2V0KCB2YWwgKSBvciAnJwotICAgICAgICBzZWxmLm5hbWUgPTNEIGYo
IGVsZW0sICduYW1lJyApCi0gICAgICAgIHNlbGYuaWQgPTNEIGYoIGVsZW0sICdpZCcgKQotICAg
ICAgICBzZWxmLnZlcnNpb24gPTNEIGYoIGVsZW0sICd2ZXJzaW9uJyApCi0gICAgICAgIHNlbGYu
ZWxlbXMgPTNEIG9kaWN0KCkKLQotICAgIGRlZiBjb3B5KCBzZWxmICk6Ci0gICAgICAgIGNvcHkg
PTNEIFRvb2xTZWN0aW9uKCkKLSAgICAgICAgY29weS5uYW1lID0zRCBzZWxmLm5hbWUKLSAgICAg
ICAgY29weS5pZCA9M0Qgc2VsZi5pZAotICAgICAgICBjb3B5LnZlcnNpb24gPTNEIHNlbGYudmVy
c2lvbgotICAgICAgICBjb3B5LmVsZW1zID0zRCBzZWxmLmVsZW1zLmNvcHkoKQotICAgICAgICBy
ZXR1cm4gY29weQotCi0gICAgZGVmIHRvX2RpY3QoIHNlbGYsIHRyYW5zLCBsaW5rX2RldGFpbHM9
M0RGYWxzZSApOgotICAgICAgICAiIiIgUmV0dXJuIGEgZGljdCB0aGF0IGluY2x1ZGVzIHNlY3Rp
b24ncyBhdHRyaWJ1dGVzLiAiIiIKLQotICAgICAgICBzZWN0aW9uX2RpY3QgPTNEIHN1cGVyKCBU
b29sU2VjdGlvbiwgc2VsZiApLnRvX2RpY3QoKQotICAgICAgICBzZWN0aW9uX2VsdHMgPTNEIFtd
Ci0gICAgICAgIGt3YXJncyA9M0QgZGljdCgKLSAgICAgICAgICAgIHRyYW5zPTNEdHJhbnMsCi0g
ICAgICAgICAgICBsaW5rX2RldGFpbHM9M0RsaW5rX2RldGFpbHMKLSAgICAgICAgKQotICAgICAg
ICBmb3IgZWx0IGluIHNlbGYuZWxlbXMudmFsdWVzKCk6Ci0gICAgICAgICAgICBzZWN0aW9uX2Vs
dHMuYXBwZW5kKCB0b19kaWN0X2hlbHBlciggZWx0LCBrd2FyZ3MgKSApCi0gICAgICAgIHNlY3Rp
b25fZGljdFsgJ2VsZW1zJyBdID0zRCBzZWN0aW9uX2VsdHMKLQotICAgICAgICByZXR1cm4gc2Vj
dGlvbl9kaWN0Ci0KLQotY2xhc3MgVG9vbFNlY3Rpb25MYWJlbCggb2JqZWN0LCBEaWN0aWZpYWJs
ZSApOgotICAgICIiIgotICAgIEEgbGFiZWwgZm9yIGEgc2V0IG9mIHRvb2xzIHRoYXQgY2FuIGJl
IGRpc3BsYXllZCBhYm92ZSBncm91cHMgb2YgdG9vbHMKLSAgICBhbmQgc2VjdGlvbnMgaW4gdGhl
IHVzZXIgaW50ZXJmYWNlCi0gICAgIiIiCi0KLSAgICBkaWN0X2NvbGxlY3Rpb25fdmlzaWJsZV9r
ZXlzID0zRCAoICdpZCcsICd0ZXh0JywgJ3ZlcnNpb24nICkKLQotICAgIGRlZiBfX2luaXRfXygg
c2VsZiwgZWxlbSApOgotICAgICAgICBzZWxmLnRleHQgPTNEIGVsZW0uZ2V0KCAidGV4dCIgKQot
ICAgICAgICBzZWxmLmlkID0zRCBlbGVtLmdldCggImlkIiApCi0gICAgICAgIHNlbGYudmVyc2lv
biA9M0QgZWxlbS5nZXQoICJ2ZXJzaW9uIiApIG9yICcnCisgICAgZGVmIGhhbmRsZV9kYXRhdHlw
ZXNfY2hhbmdlZCggc2VsZiApOgorICAgICAgICAiIiIgUmVmcmVzaCB1cGxvYWQgdG9vbHMgd2hl
biBuZXcgZGF0YXR5cGVzIGFyZSBhZGRlZC4gIiIiCisgICAgICAgIGZvciB0b29sX2lkIGluIHNl
bGYuX3Rvb2xzX2J5X2lkOgorICAgICAgICAgICAgdG9vbCA9M0Qgc2VsZi5fdG9vbHNfYnlfaWRb
IHRvb2xfaWQgXQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSggdG9vbC50b29sX2FjdGlvbiwg
VXBsb2FkVG9vbEFjdGlvbiApOgorICAgICAgICAgICAgICAgIHNlbGYucmVsb2FkX3Rvb2xfYnlf
aWQoIHRvb2xfaWQgKQo9MjAKPTIwCiBjbGFzcyBEZWZhdWx0VG9vbFN0YXRlKCBvYmplY3QgKToK
QEAgLTEzMTMsMTQgKzM0MCw2IEBACiAgICAgICAgIHJldHVybiBbXQo9MjAKICAgICBAcHJvcGVy
dHkKLSAgICBkZWYgdG9vbF92ZXJzaW9uX2lkcyggc2VsZiApOgotICAgICAgICAjIElmIHdlIGhh
dmUgdmVyc2lvbnMsIHJldHVybiBhIGxpc3Qgb2YgdGhlaXIgdG9vbF9pZHMuCi0gICAgICAgIHRv
b2xfdmVyc2lvbiA9M0Qgc2VsZi50b29sX3ZlcnNpb24KLSAgICAgICAgaWYgdG9vbF92ZXJzaW9u
OgotICAgICAgICAgICAgcmV0dXJuIHRvb2xfdmVyc2lvbi5nZXRfdmVyc2lvbl9pZHMoIHNlbGYu
YXBwICkKLSAgICAgICAgcmV0dXJuIFtdCi0KLSAgICBAcHJvcGVydHkKICAgICBkZWYgdG9vbF9z
aGVkX3JlcG9zaXRvcnkoIHNlbGYgKToKICAgICAgICAgIyBJZiB0aGlzIHRvb2wgaXMgaW5jbHVk
ZWQgaW4gYW4gaW5zdGFsbGVkIHRvb2wgc2hlZCByZXBvc2l0b3J5LCByPQpldHVybiBpdC4KICAg
ICAgICAgaWYgc2VsZi50b29sX3NoZWQ6CkBAIC0xMzgwLDIwICszOTksNyBAQAogICAgICAgICBy
ZXR1cm4gc2VsZi5hcHAuam9iX2NvbmZpZy5nZXRfZGVzdGluYXRpb24oc2VsZi5fX2dldF9qb2Jf
dG9vbF9jb249CmZpZ3VyYXRpb24oam9iX3BhcmFtcz0zRGpvYl9wYXJhbXMpLmRlc3RpbmF0aW9u
KQo9MjAKICAgICBkZWYgZ2V0X3BhbmVsX3NlY3Rpb24oIHNlbGYgKToKLSAgICAgICAgZm9yIGtl
eSwgaXRlbSBpbiBzZWxmLmFwcC50b29sYm94LmludGVncmF0ZWRfdG9vbF9wYW5lbC5pdGVtcygp
OgotICAgICAgICAgICAgaWYgaXRlbToKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKCBp
dGVtLCBUb29sICk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGl0ZW0uaWQgPTNEPTNEIHNlbGYu
aWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJycsICcnCi0gICAgICAgICAgICAg
ICAgaWYgaXNpbnN0YW5jZSggaXRlbSwgVG9vbFNlY3Rpb24gKToKLSAgICAgICAgICAgICAgICAg
ICAgc2VjdGlvbl9pZCA9M0QgaXRlbS5pZCBvciAnJwotICAgICAgICAgICAgICAgICAgICBzZWN0
aW9uX25hbWUgPTNEIGl0ZW0ubmFtZSBvciAnJwotICAgICAgICAgICAgICAgICAgICBmb3Igc2Vj
dGlvbl9rZXksIHNlY3Rpb25faXRlbSBpbiBpdGVtLmVsZW1zLml0ZW1zKCk6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKCBzZWN0aW9uX2l0ZW0sIFRvb2wgKToKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWN0aW9uX2l0ZW06Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIHNlY3Rpb25faXRlbS5pZCA9M0Q9M0Qgc2VsZi5pZDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWN0aW9uX2lkLCBzZWN0aW9u
X25hbWUKLSAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKKyAgICAgICAgcmV0dXJuIHNlbGYuYXBw
LnRvb2xib3guZ2V0X2ludGVncmF0ZWRfc2VjdGlvbl9mb3JfdG9vbCggc2VsZiApCj0yMAogICAg
IGRlZiBwYXJzZSggc2VsZiwgdG9vbF9zb3VyY2UsIGd1aWQ9M0ROb25lICk6CiAgICAgICAgICIi
IgpAQCAtMTU4Miw3ICs1ODgsNyBAQAo9MjAKICAgICAgICAgcm9vdCA9M0QgdG9vbF9zb3VyY2Uu
cm9vdAogICAgICAgICBjb25mX3BhcmVudF9lbGVtID0zRCByb290LmZpbmQoImNvbmZpZ2ZpbGVz
IikKLSAgICAgICAgaWYgY29uZl9wYXJlbnRfZWxlbToKKyAgICAgICAgaWYgY29uZl9wYXJlbnRf
ZWxlbSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGZvciBjb25mX2VsZW0gaW4gY29uZl9wYXJl
bnRfZWxlbS5maW5kYWxsKCAiY29uZmlnZmlsZSIgKToKICAgICAgICAgICAgICAgICBuYW1lID0z
RCBjb25mX2VsZW0uZ2V0KCAibmFtZSIgKQogICAgICAgICAgICAgICAgIGZpbGVuYW1lID0zRCBj
b25mX2VsZW0uZ2V0KCAiZmlsZW5hbWUiLCBOb25lICkKQEAgLTE3MTYsNyArNzIyLDcgQEAKICAg
ICAgICAgcm9vdCA9M0QgdG9vbF9zb3VyY2Uucm9vdAogICAgICAgICBjaXRhdGlvbnMgPTNEIFtd
CiAgICAgICAgIGNpdGF0aW9uc19lbGVtID0zRCByb290LmZpbmQoImNpdGF0aW9ucyIpCi0gICAg
ICAgIGlmIG5vdCBjaXRhdGlvbnNfZWxlbToKKyAgICAgICAgaWYgY2l0YXRpb25zX2VsZW0gaXMg
Tm9uZToKICAgICAgICAgICAgIHJldHVybiBjaXRhdGlvbnMKPTIwCiAgICAgICAgIGZvciBjaXRh
dGlvbl9lbGVtIGluIGNpdGF0aW9uc19lbGVtOgpAQCAtMzEyMiw3ICsyMTI4LDcgQEAKICAgICAg
ICAganNvbl9wYXJhbXMgPTNEIHt9CiAgICAgICAgIGpzb25fcGFyYW1zWyAncGFyYW1fZGljdCcg
XSA9M0Qgc2VsZi5fcHJlcGFyZV9qc29uX3BhcmFtX2RpY3QoIHBhcj0KYW1fZGljdCApICAjIGl0
IHdvdWxkIHByb2JhYmx5IGJlIGJldHRlciB0byBzdG9yZSB0aGUgb3JpZ2luYWwgaW5jb21pbmcg
cGFyPQphbWV0ZXJzIGhlcmUsIGluc3RlYWQgb2YgdGhlIEdhbGF4eSBtb2RpZmllZCBvbmVzPwog
ICAgICAgICBqc29uX3BhcmFtc1sgJ291dHB1dF9kYXRhJyBdID0zRCBbXQotICAgICAgICBqc29u
X3BhcmFtc1sgJ2pvYl9jb25maWcnIF0gPTNEIGRpY3QoIEdBTEFYWV9EQVRBVFlQRVNfQ09ORl9G
SUxFPQo9M0RwYXJhbV9kaWN0LmdldCggJ0dBTEFYWV9EQVRBVFlQRVNfQ09ORl9GSUxFJyApLCBH
QUxBWFlfUk9PVF9ESVI9M0RwYXJhbV89CmRpY3QuZ2V0KCAnR0FMQVhZX1JPT1RfRElSJyApLCBU
T09MX1BST1ZJREVEX0pPQl9NRVRBREFUQV9GSUxFPTNEam9icy5UT09MXz0KUFJPVklERURfSk9C
X01FVEFEQVRBX0ZJTEUgKQorICAgICAgICBqc29uX3BhcmFtc1sgJ2pvYl9jb25maWcnIF0gPTNE
IGRpY3QoIEdBTEFYWV9EQVRBVFlQRVNfQ09ORl9GSUxFPQo9M0RwYXJhbV9kaWN0LmdldCggJ0dB
TEFYWV9EQVRBVFlQRVNfQ09ORl9GSUxFJyApLCBHQUxBWFlfUk9PVF9ESVI9M0RwYXJhbV89CmRp
Y3QuZ2V0KCAnR0FMQVhZX1JPT1RfRElSJyApLCBUT09MX1BST1ZJREVEX0pPQl9NRVRBREFUQV9G
SUxFPTNEZ2FsYXh5LmpvYj0Kcy5UT09MX1BST1ZJREVEX0pPQl9NRVRBREFUQV9GSUxFICkKICAg
ICAgICAganNvbl9maWxlbmFtZSA9M0QgTm9uZQogICAgICAgICBmb3IgaSwgKCBvdXRfbmFtZSwg
ZGF0YSApIGluIGVudW1lcmF0ZSggb3V0X2RhdGEuaXRlcml0ZW1zKCkgKToKICAgICAgICAgICAg
ICN1c2Ugd3JhcHBlZCBkYXRhc2V0IHRvIGFjY2VzcyBjZXJ0YWluIHZhbHVlcwpAQCAtMzE3Miw3
ICsyMTc4LDcgQEAKICAgICAgICAganNvbl9wYXJhbXMgPTNEIHt9CiAgICAgICAgIGpzb25fcGFy
YW1zWyAncGFyYW1fZGljdCcgXSA9M0Qgc2VsZi5fcHJlcGFyZV9qc29uX3BhcmFtX2RpY3QoIHBh
cj0KYW1fZGljdCApICAjIGl0IHdvdWxkIHByb2JhYmx5IGJlIGJldHRlciB0byBzdG9yZSB0aGUg
b3JpZ2luYWwgaW5jb21pbmcgcGFyPQphbWV0ZXJzIGhlcmUsIGluc3RlYWQgb2YgdGhlIEdhbGF4
eSBtb2RpZmllZCBvbmVzPwogICAgICAgICBqc29uX3BhcmFtc1sgJ291dHB1dF9kYXRhJyBdID0z
RCBbXQotICAgICAgICBqc29uX3BhcmFtc1sgJ2pvYl9jb25maWcnIF0gPTNEIGRpY3QoIEdBTEFY
WV9EQVRBVFlQRVNfQ09ORl9GSUxFPQo9M0RwYXJhbV9kaWN0LmdldCggJ0dBTEFYWV9EQVRBVFlQ
RVNfQ09ORl9GSUxFJyApLCBHQUxBWFlfUk9PVF9ESVI9M0RwYXJhbV89CmRpY3QuZ2V0KCAnR0FM
QVhZX1JPT1RfRElSJyApLCBUT09MX1BST1ZJREVEX0pPQl9NRVRBREFUQV9GSUxFPTNEam9icy5U
T09MXz0KUFJPVklERURfSk9CX01FVEFEQVRBX0ZJTEUgKQorICAgICAgICBqc29uX3BhcmFtc1sg
J2pvYl9jb25maWcnIF0gPTNEIGRpY3QoIEdBTEFYWV9EQVRBVFlQRVNfQ09ORl9GSUxFPQo9M0Rw
YXJhbV9kaWN0LmdldCggJ0dBTEFYWV9EQVRBVFlQRVNfQ09ORl9GSUxFJyApLCBHQUxBWFlfUk9P
VF9ESVI9M0RwYXJhbV89CmRpY3QuZ2V0KCAnR0FMQVhZX1JPT1RfRElSJyApLCBUT09MX1BST1ZJ
REVEX0pPQl9NRVRBREFUQV9GSUxFPTNEZ2FsYXh5LmpvYj0Kcy5UT09MX1BST1ZJREVEX0pPQl9N
RVRBREFUQV9GSUxFICkKICAgICAgICAganNvbl9maWxlbmFtZSA9M0QgTm9uZQogICAgICAgICBm
b3IgaSwgKCBvdXRfbmFtZSwgZGF0YSApIGluIGVudW1lcmF0ZSggb3V0X2RhdGEuaXRlcml0ZW1z
KCkgKToKICAgICAgICAgICAgICN1c2Ugd3JhcHBlZCBkYXRhc2V0IHRvIGFjY2VzcyBjZXJ0YWlu
IHZhbHVlcwoKZGlmZiAtciBlYjIxMGNjYzZkNzY1NDdlY2E2OWEzZjQ5ZGJkOGRiMGE0NWQ1YTg4
IC1yIGU2MzM4OGZkNmNiZjM0M2E3YjAzNDk2PQoxZDEzOWYxNGFkMGRjNjMyNCBsaWIvZ2FsYXh5
L3Rvb2xzL2RhdGFfbWFuYWdlci9tYW5hZ2VyLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvZGF0
YV9tYW5hZ2VyL21hbmFnZXIucHkKKysrIGIvbGliL2dhbGF4eS90b29scy9kYXRhX21hbmFnZXIv
bWFuYWdlci5weQpAQCAtMjQ0LDEyICsyNDQsMTIgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuZ3Vp
ZCBvciBzZWxmLmRlY2xhcmVkX2lkICNpZiB3ZSBoYXZlIGEgZ3VpZCwgd2Ugd2lsbCB1PQpzZSB0
aGF0IGFzIHRoZSBkYXRhX21hbmFnZXIgaWQKPTIwCiAgICAgZGVmIGxvYWRfdG9vbCggc2VsZiwg
dG9vbF9maWxlbmFtZSwgZ3VpZD0zRE5vbmUsIGRhdGFfbWFuYWdlcl9pZD0zRE5vbj0KZSwgdG9v
bF9zaGVkX3JlcG9zaXRvcnlfaWQ9M0ROb25lICk6Ci0gICAgICAgIHRvb2wgPTNEIHNlbGYuZGF0
YV9tYW5hZ2Vycy5hcHAudG9vbGJveC5sb2FkX3Rvb2woIHRvb2xfZmlsZW5hbWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWlkPTNE
Z3VpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFfbWFuYWdlcl9pZD0KPTNEZGF0YV9tYW5hZ2VyX2lkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9p
ZD0zRHQ9Cm9vbF9zaGVkX3JlcG9zaXRvcnlfaWQgKQorICAgICAgICB0b29sYm94ID0zRCBzZWxm
LmRhdGFfbWFuYWdlcnMuYXBwLnRvb2xib3gKKyAgICAgICAgdG9vbCA9M0QgdG9vbGJveC5sb2Fk
X2hpZGRlbl90b29sKCB0b29sX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBndWlkPTNEZ3VpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YV9tYW5hZ2VyX2lkPTNEZGF0YV9tYW5hZ2VyX2lkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPTNEdG9vbF9zaGVk
X3JlcG9zaXQ9Cm9yeV9pZCApCiAgICAgICAgIHNlbGYuZGF0YV9tYW5hZ2Vycy5hcHAudG9vbGJv
eC5kYXRhX21hbmFnZXJfdG9vbHNbIHRvb2wuaWQgXSA9M0QgdD0Kb29sCi0gICAgICAgIHNlbGYu
ZGF0YV9tYW5hZ2Vycy5hcHAudG9vbGJveC50b29sc19ieV9pZFsgdG9vbC5pZCBdID0zRCB0b29s
CiAgICAgICAgIHNlbGYudG9vbCA9M0QgdG9vbAogICAgICAgICByZXR1cm4gdG9vbAo9MjAKCmRp
ZmYgLXIgZWIyMTBjY2M2ZDc2NTQ3ZWNhNjlhM2Y0OWRiZDhkYjBhNDVkNWE4OCAtciBlNjMzODhm
ZDZjYmYzNDNhN2IwMzQ5Nj0KMWQxMzlmMTRhZDBkYzYzMjQgbGliL2dhbGF4eS90b29scy9kZXBz
L19faW5pdF9fLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvZGVwcy9fX2luaXRfXy5weQorKysg
Yi9saWIvZ2FsYXh5L3Rvb2xzL2RlcHMvX19pbml0X18ucHkKQEAgLTE0LDcgKzE0LDcgQEAKPTIw
Cj0yMAogZGVmIGJ1aWxkX2RlcGVuZGVuY3lfbWFuYWdlciggY29uZmlnICk6Ci0gICAgaWYgY29u
ZmlnLnVzZV90b29sX2RlcGVuZGVuY2llczoKKyAgICBpZiBnZXRhdHRyKCBjb25maWcsICJ1c2Vf
dG9vbF9kZXBlbmRlbmNpZXMiLCBGYWxzZSApOgogICAgICAgICBkZXBlbmRlbmN5X21hbmFnZXJf
a3dkcyA9M0QgewogICAgICAgICAgICAgJ2RlZmF1bHRfYmFzZV9wYXRoJzogY29uZmlnLnRvb2xf
ZGVwZW5kZW5jeV9kaXIsCiAgICAgICAgICAgICAnY29uZl9maWxlJzogY29uZmlnLmRlcGVuZGVu
Y3lfcmVzb2x2ZXJzX2NvbmZpZ19maWxlLAoKZGlmZiAtciBlYjIxMGNjYzZkNzY1NDdlY2E2OWEz
ZjQ5ZGJkOGRiMGE0NWQ1YTg4IC1yIGU2MzM4OGZkNmNiZjM0M2E3YjAzNDk2PQoxZDEzOWYxNGFk
MGRjNjMyNCBsaWIvZ2FsYXh5L3Rvb2xzL2ZpbHRlcnMvX19pbml0X18ucHkKLS0tIGEvbGliL2dh
bGF4eS90b29scy9maWx0ZXJzL19faW5pdF9fLnB5CisrKyBiL2xpYi9nYWxheHkvdG9vbHMvZmls
dGVycy9fX2luaXRfXy5weQpAQCAtMSw4NyArMSw1IEBACi1pbXBvcnQgbG9nZ2luZwotZnJvbSBn
YWxheHkudXRpbCBpbXBvcnQgbGlzdGlmeQotZnJvbSBjb3B5IGltcG9ydCBkZWVwY29weQorIiIi
RGVwcmVjYXRlZCBtb2R1bGUgZm9yIHRvb2xib3ggZmlsdGVycy4KPTIwCi1sb2cgPTNEIGxvZ2dp
bmcuZ2V0TG9nZ2VyKCBfX25hbWVfXyApCi0KLQotY2xhc3MgRmlsdGVyRmFjdG9yeSggb2JqZWN0
ICk6Ci0gICAgIiIiCi0gICAgQW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBpcyByZXNwb25zaWJs
ZSBmb3IgZmlsdGVyaW5nIHRoZSBsaXN0Ci0gICAgb2YgdG9vbHMgcHJlc2VudGVkIHRvIGEgZ2l2
ZW4gdXNlciBpbiBhIGdpdmVuIGNvbnRleHQuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18o
IHNlbGYsIHRvb2xib3ggKToKLSAgICAgICAgc2VsZi50b29sYm94ID0zRCB0b29sYm94Ci0KLSAg
ICAgICAgIyBQcmVwb3B1bGF0ZSBkaWN0IGNvbnRhaW5pbmcgZmlsdGVycyB0aGF0IGFyZSBhbHdh
eXMgY2hlY2tlZCwKLSAgICAgICAgIyBvdGhlciBmaWx0ZXJzIHRoYXQgZ2V0IGNoZWNrZWQgZGVw
ZW5kaW5nIG9uIGNvbnRleHQgKGUuZy4gY29taW5nPQogZnJvbQotICAgICAgICAjIHRyYWNrc3Rl
ciBvciBubyB1c2VyIGZvdW5kIGFyZSBhZGRlZCBpbiBidWlsZCBmaWx0ZXJzKS4KLSAgICAgICAg
c2VsZi5kZWZhdWx0X2ZpbHRlcnMgPTNEIGRpY3QoIHRvb2w9M0RbIF9ub3RfaGlkZGVuLCBfaGFu
ZGxlX3JlcXVpPQpyZXNfbG9naW4gXSwgc2VjdGlvbj0zRFtdLCBsYWJlbD0zRFtdICkKLSAgICAg
ICAgIyBBZGQgZHluYW1pYyBmaWx0ZXJzIHRvIHRoZXNlIGRlZmF1bHQgZmlsdGVycy4KLSAgICAg
ICAgY29uZmlnID0zRCB0b29sYm94LmFwcC5jb25maWcKLSAgICAgICAgc2VsZi5fX2luaXRfZmls
dGVycyggInRvb2wiLCBjb25maWcudG9vbF9maWx0ZXJzLCBzZWxmLmRlZmF1bHRfZmlsPQp0ZXJz
ICkKLSAgICAgICAgc2VsZi5fX2luaXRfZmlsdGVycyggInNlY3Rpb24iLCBjb25maWcudG9vbF9z
ZWN0aW9uX2ZpbHRlcnMsIHNlbGYuPQpkZWZhdWx0X2ZpbHRlcnMgKQotICAgICAgICBzZWxmLl9f
aW5pdF9maWx0ZXJzKCAibGFiZWwiLCBjb25maWcudG9vbF9sYWJlbF9maWx0ZXJzLCBzZWxmLmRl
ZmE9CnVsdF9maWx0ZXJzICkKLQotICAgIGRlZiBidWlsZF9maWx0ZXJzKCBzZWxmLCB0cmFucywg
Kiprd2RzICk6Ci0gICAgICAgICIiIgotICAgICAgICBCdWlsZCBsaXN0IG9mIGZpbHRlcnMgdG8g
Y2hlY2sgdG9vbHMgYWdhaW5zdCBnaXZlbiBjdXJyZW50IGNvbnRleHQuCi0gICAgICAgICIiIgot
ICAgICAgICBmaWx0ZXJzID0zRCBkZWVwY29weSggc2VsZi5kZWZhdWx0X2ZpbHRlcnMgKQotICAg
ICAgICBpZiB0cmFucy51c2VyOgotICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHRyYW5z
LnVzZXIucHJlZmVyZW5jZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICBpZiB2YWx1ZS5zdHJp
cCgpOgotICAgICAgICAgICAgICAgICAgICB1c2VyX2ZpbHRlcnMgPTNEIGxpc3RpZnkoIHZhbHVl
LCBkb19zdHJpcD0zRFRydWUgKQotICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeSA9M0QgJycK
LSAgICAgICAgICAgICAgICAgICAgaWYgbmFtZSA9M0Q9M0QgJ3Rvb2xib3hfdG9vbF9maWx0ZXJz
JzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5ID0zRCAidG9vbCIKLSAgICAgICAg
ICAgICAgICAgICAgZWxpZiBuYW1lID0zRD0zRCAndG9vbGJveF9zZWN0aW9uX2ZpbHRlcnMnOgot
ICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkgPTNEICJzZWN0aW9uIgotICAgICAgICAg
ICAgICAgICAgICBlbGlmIG5hbWUgPTNEPTNEICd0b29sYm94X2xhYmVsX2ZpbHRlcnMnOgotICAg
ICAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkgPTNEICJsYWJlbCIKLSAgICAgICAgICAgICAg
ICAgICAgaWYgY2F0ZWdvcnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZSA9M0Qg
Z2V0YXR0ciggdHJhbnMuYXBwLmNvbmZpZywgJ3VzZXJfJXNfZj0KaWx0ZXJzJyAlIGNhdGVnb3J5
LCBbXSApCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9faW5pdF9maWx0ZXJzKCBjYXRl
Z29yeSwgdXNlcl9maWx0ZXJzLCBmaWx0ZT0KcnMsIHZhbGlkYXRlPTNEdmFsaWRhdGUgKQotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgaWYga3dkcy5nZXQoICJ0cmFja3N0ZXIiLCBGYWxzZSAp
OgotICAgICAgICAgICAgICAgIGZpbHRlcnNbICJ0b29sIiBdLmFwcGVuZCggX2hhc190cmFja3N0
ZXJfY29uZiApCi0KLSAgICAgICAgcmV0dXJuIGZpbHRlcnMKLQotICAgIGRlZiBfX2luaXRfZmls
dGVycyggc2VsZiwga2V5LCBmaWx0ZXJzLCB0b29sYm94X2ZpbHRlcnMsIHZhbGlkYXRlPTNETm89
Cm5lICk6Ci0gICAgICAgIGZvciBmaWx0ZXIgaW4gZmlsdGVyczoKLSAgICAgICAgICAgIGlmIHZh
bGlkYXRlIGlzIE5vbmUgb3IgZmlsdGVyIGluIHZhbGlkYXRlIG9yIGZpbHRlciBpbiBzZWxmLmRl
PQpmYXVsdF9maWx0ZXJzOgotICAgICAgICAgICAgICAgIGZpbHRlcl9mdW5jdGlvbiA9M0Qgc2Vs
Zi5fX2J1aWxkX2ZpbHRlcl9mdW5jdGlvbiggZmlsdGVyICkKLSAgICAgICAgICAgICAgICB0b29s
Ym94X2ZpbHRlcnNbIGtleSBdLmFwcGVuZCggZmlsdGVyX2Z1bmN0aW9uICkKLSAgICAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoICJSZWZ1c2luZyB0byBsb2FkICVz
IGZpbHRlciAnJXMnIHdoaWNoIGlzIG5vdD0KIGRlZmluZWQgaW4gY29uZmlnIiwga2V5LCBmaWx0
ZXIgKQotICAgICAgICByZXR1cm4gdG9vbGJveF9maWx0ZXJzCi0KLSAgICBkZWYgX19idWlsZF9m
aWx0ZXJfZnVuY3Rpb24oIHNlbGYsIGZpbHRlcl9uYW1lICk6Ci0gICAgICAgICIiIk9idGFpbiBw
eXRob24gZnVuY3Rpb24gKGltcG9ydGluZyBhIHN1Ym1vZHVsZSBpZiBuZWVkZWQpCi0gICAgICAg
IGNvcnJlc3BvbmRpbmcgdG8gZmlsdGVyX25hbWUuCi0gICAgICAgICIiIgotICAgICAgICBpZiAi
OiIgaW4gZmlsdGVyX25hbWU6Ci0gICAgICAgICAgICAjIFNob3VsZCBiZSBhIHN1Ym1vZHVsZSBv
ZiBmaWx0ZXJzIChlLmcuIGV4YW1wbGVzOnJlc3RyaWN0X2Rldj0KZWxvcG1lbnRfdG9vbHMpCi0g
ICAgICAgICAgICAobW9kdWxlX25hbWUsIGZ1bmN0aW9uX25hbWUpID0zRCBmaWx0ZXJfbmFtZS5y
c3BsaXQoIjoiLCAxKQotICAgICAgICAgICAgbW9kdWxlID0zRCBfX2ltcG9ydF9fKCBtb2R1bGVf
bmFtZS5zdHJpcCgpLCBnbG9iYWxzKCkgKQotICAgICAgICAgICAgZnVuY3Rpb24gPTNEIGdldGF0
dHIoIG1vZHVsZSwgZnVuY3Rpb25fbmFtZS5zdHJpcCgpICkKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICMgTm8gbW9kdWxlIGZvdW5kLCBqdXN0IGxvYWQgYSBmdW5jdGlvbiBmcm9tIHRoaXMg
ZmlsZSBvcgotICAgICAgICAgICAgIyBvbmUgdGhhdCBoYXMgYmUgZXhwbGljaXRseSBpbXBvcnRl
ZC4KLSAgICAgICAgICAgIGZ1bmN0aW9uID0zRCBnZXRhdHRyKCBnbG9iYWxzKCksIGZpbHRlcl9u
YW1lLnN0cmlwKCkgKQotICAgICAgICByZXR1cm4gZnVuY3Rpb24KLQotCi0jIyBTdG9jayBGaWx0
ZXIgRnVuY3Rpb25zCi1kZWYgX25vdF9oaWRkZW4oIGNvbnRleHQsIHRvb2wgKToKLSAgICByZXR1
cm4gbm90IHRvb2wuaGlkZGVuCi0KLQotZGVmIF9oYW5kbGVfcmVxdWlyZXNfbG9naW4oIGNvbnRl
eHQsIHRvb2wgKToKLSAgICByZXR1cm4gbm90IHRvb2wucmVxdWlyZV9sb2dpbiBvciBjb250ZXh0
LnRyYW5zLnVzZXIKLQotCi1kZWYgX2hhc190cmFja3N0ZXJfY29uZiggY29udGV4dCwgdG9vbCAp
OgotICAgIHJldHVybiB0b29sLnRyYWNrc3Rlcl9jb25mCitGaWx0ZXJzIHBsYWNlZCBpbiB0aGlz
IG1vZHVsZSB3aWxsIHN0aWxsIHdvcmsgLSBidXQgZmlsdGVycyBzaG91bGQgYmUKK21vdmVkIHRv
IGxpYi9nYWxheHkvdG9vbHMvdG9vbGJveC9maWx0ZXJzLgorIiIiCgpkaWZmIC1yIGViMjEwY2Nj
NmQ3NjU0N2VjYTY5YTNmNDlkYmQ4ZGIwYTQ1ZDVhODggLXIgZTYzMzg4ZmQ2Y2JmMzQzYTdiMDM0
OTY9CjFkMTM5ZjE0YWQwZGM2MzI0IGxpYi9nYWxheHkvdG9vbHMvZmlsdGVycy9leGFtcGxlcy5w
eQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xzL2ZpbHRlcnMvZXhhbXBsZXMucHkKKysrIC9kZXYvbnVs
bApAQCAtMSwxMTUgKzAsMCBAQAotaW1wb3J0IGxvZ2dpbmcKLWxvZyA9M0QgbG9nZ2luZy5nZXRM
b2dnZXIoIF9fbmFtZV9fICkKLQotCi1kZWYgcmVzdHJpY3RfZW5jb2RlKCBjb250ZW50LCB0b29s
ICk6Ci0gICAgIiIiCi0gICAgRGlzYWJsZSB0aGUgcmFuZG9tIGludGVydmFsIEVOQ09ERSB0b29s
Ci0gICA9MjAKLSAgICBUaGlzIHRvb2wgZmlsdGVyIHdpbGwgZGlzYWJsZSBhbGwgdGhlIEVOQ09E
RSB0b29sIHdoZW4gZW5hYmxlZC4KLSAgICAiIiIKLSAgICBpZiB0b29sLmlkID0zRD0zRCAncmFu
ZG9tX2ludGVydmFsczEnOgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICByZXR1cm4gVHJ1ZQot
Ci0KLWRlZiByZXN0cmljdF90ZXh0KCBjb250ZW50LCBzZWN0aW9uICk6Ci0gICAgIiIiCi0gICAg
RGlzYWJsZSBUZXh0IHNlY3Rpb25zCi0gICA9MjAKLSAgICBUaGlzIHRvb2wgZmlsdGVyIHdpbGwg
ZGlzYWJsZSBhbGwgVG9vbHMgZ3JvdXBzIHVuZGVyIGEgJ1RleHQnIHNlY3Rpb24gPQp3aGVuIGVu
YWJsZWQuCi0gICAgIiIiCi0gICAgaWYgc2VjdGlvbi5uYW1lLmZpbmQoJ1RleHQnKSAhPTNEIC0x
OgotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICByZXR1cm4gVHJ1ZQotCi0KLWRlZiByZXN0cmlj
dF91cGxvYWRfdG9fYWRtaW5zKCBjb250ZXh0LCB0b29sICk6Ci0gICAgIiIiCi0gICAgRGlzYWJs
ZSBVcGxvYWQgdG9vbCBmb3IgYWxsIG5vbi1hZG1pbiB1c2Vycy4KLSAgID0yMAotICAgIFRoaXMg
dG9vbCBmaWx0ZXIgd2lsbCBoaWRlIHRoZSB1cGxvYWQgdG9vbCBmcm9tIGFsbCB1c2VycyBleGNl
cHQgYWRtaW4KLSAgICB1c2Vycy4KLQotICAgIFRoaXMgY2FuIGJlIGVuYWJsZWQgYnkgcmVuYW1p
bmcgdGhpcyBmaWxlIHRvIGV4YW1wbGVzLnB5IGFuZCBhZGRpbmcKLSAgICB0aGUgZm9sbG93aW5n
IHRvIHRoZSBgYGFwcDptYWluYGAgc2VjdGlvbiBvZiBgYGdhbGF4eS5pbmlgYDoKLQotICAgICAg
ICB0b29sX2ZpbHRlcnMgPTNEIGV4YW1wbGVzOnJlc3RyaWN0X3VwbG9hZF90b19hZG1pbnMKLSAg
ICAiIiIKLSAgICBpZiB0b29sLm5hbWUgPTNEPTNEICJVcGxvYWQgRmlsZSI6Ci0gICAgICAgIHJl
dHVybiBjb250ZXh0LnRyYW5zLnVzZXJfaXNfYWRtaW4oKQotICAgIHJldHVybiBUcnVlCi0KLQot
ZGVmIGRpc2FibGVfZ2F0ayggY29udGV4dCwgdG9vbCApOgotICAgICIiIgotICAgIFRoaXMgdG9v
bCBmaWx0ZXIgd2lsbCBkaXNhYmxlIGFsbCBnYXRrIHRvb2xzIHdoZW4gZW5hYmxlZC4KLQotICAg
IFRoaXMgY2FuIGJlIGVuYWJsZWQgYnkgcmVuYW1pbmcgdGhpcyBmaWxlIHRvIGV4YW1wbGVzLnB5
IGFuZCBhZGRpbmcgdGg9CmUgZm9sbG93aW5nIHRvIHRoZQotICAgICBgYGFwcDptYWluYGAgc2Vj
dGlvbiBvZiBgYGdhbGF4eS5pbmlgYDoKLQotICAgICAgICB0b29sX2ZpbHRlcnMgPTNEIGV4YW1w
bGVzOmRpc2FibGVfZ2F0awotICAgICIiIgotICAgIHJldHVybiBub3QgYW55KCBbIHJlcXVpcmVt
ZW50Lm5hbWUgPTNEPTNEICJnYXRrIiBmb3IgcmVxdWlyZW1lbnQgaW4gdG89Cm9sLnJlcXVpcmVt
ZW50cyBdICkKLQotCi1kZWYgZXhwbGljaXRfdXNlcl9tYXBwaW5nKCBjb250ZXh0LCBzZWN0aW9u
ICk6Ci0gICAgIiIiCi0gICAgVGhpcyB0b29sIHNlY3Rpb24gZmlsdGVyIHVzZXMgYW4gZXhwbGlj
aXQgbWFwcGluZyB0byBkZXNjcmliZSB3aGF0IHVzZT0KcnMgY2FuIHZpZXcKLSAgICB3aGljaCB0
b29sIHNlY3Rpb25zLiBBbm9ueW1vdXMgdXNlcnMgd2lsbCBvbmx5IGJlIGFibGUgdG8gdmlldyB0
aGUgIkdlPQp0IERhdGEiCi0gICAgdG9vbCBzZWN0aW9uICh3aXRoIGlkIGdldGV4dCkuIFRoaXMg
Y2FuIGJlIGVuYWJsZWQgYnkgcmVuYW1pbmcgdGhpcyBmaT0KbGUgdG8KLSAgICBleGFtcGxlcy5w
eSBhbmQgYWRkaW5nIHRoZSBmb2xsb3dpbmcgdG8gdGhlIGBgYXBwOm1haW5gYCBzZWN0aW9uIG9m
Ci0gICAgYGBnYWxheHkuaW5pYGA6Ci0KLSAgICAgICAgdG9vbF9zZWN0aW9uX2ZpbHRlcnMgPTNE
IGV4YW1wbGVzOmV4cGxpY2l0X3VzZXJfbWFwcGluZwotICAgICIiIgotICAgIHVzZXJzX3NlY3Rp
b25zID0zRCB7Ci0gICAgICAgIE5vbmU6IFsgImdldGV4dCIgXSwKLSAgICAgICAgImJvYkBleGFt
cGxlLmNvbSI6IFsgImdldGV4dCIsICJ0ZXh0dXRpbCIsICJmaWx0ZXIiIF0sCi0gICAgICAgICJt
YXJ5QGV4YW1wbGUuY29tIjogWyAiZ2V0ZXh0IiwgInRleHR1dGlsIiwgImZpbHRlciIsICJuZ3Mi
IF0sCi0gICAgfQotICAgIHVzZXIgPTNEIGNvbnRleHQudHJhbnMudXNlcgotICAgIGVtYWlsID0z
RCB1c2VyIGFuZCB1c2VyLmVtYWlsCi0gICAgdmFsaWRfc2VjdGlvbnMgPTNEIHVzZXJzX3NlY3Rp
b25zLmdldCggZW1haWwsIFtdICkKLSAgICByZXR1cm4gc2VjdGlvbi5pZCBpbiB2YWxpZF9zZWN0
aW9ucwotCi0KLURFVkVMT1BFUlMgPTNEIFsgIm1hcnlAZXhhbXBsZS5jb20iIF0KLQotCi1kZWYg
cmVzdHJpY3RfZGV2ZWxvcG1lbnRfdG9vbHMoIGNvbnRleHQsIHRvb2wgKToKLSAgICAiIiIKLSAg
ICBUaGlzIHRvb2wgZmlsdGVyIHdpbGwgZGlzYWJsZSBhbGwgdG9vbHMgd2l0aCB0aGUgc3RyaW5n
IGFscGhhIGFwcGVhcmluPQpnIGluCi0gICAgdGhlIHZlcnNpb24gZm9yIGFsbCB1c2VycyBleGNl
cHQgdGhvc2UgZXhwbGljaXRseSBhcHBlYXJpbmcgaW4gdGhlIERFVj0KRUxPUEVSUyBsaXN0Ci0g
ICAgZGVmaW5lZCBhYm92ZS4gVGhpcyBjYW4gYmUgZW5hYmxlZCBieSByZW5hbWluZyB0aGlzIGZp
bGUgdG8gZXhhbXBsZXMucD0KeSBhbmQKLSAgICBhZGRpbmcgdGhlIGZvbGxvd2luZyB0byB0aGUg
YGBhcHA6bWFpbmBgIHNlY3Rpb24gb2YgYGBnYWxheHkuaW5pYGA6Ci0KLSAgICAgICAgdG9vbF9m
aWx0ZXJzID0zRCBleGFtcGxlczpyZXN0cmljdF9kZXZlbG9wbWVudF90b29scwotICAgICIiIgot
ICAgIHZlcnNpb24gPTNEIHRvb2wudmVyc2lvbgotICAgIHVzZXIgPTNEIGNvbnRleHQudHJhbnMu
dXNlcgotICAgIGVtYWlsID0zRCB1c2VyIGFuZCB1c2VyLmVtYWlsCi0gICAgcmV0dXJuICJhbHBo
YSIgbm90IGluIHZlcnNpb24gb3IgZW1haWwgaW4gREVWRUxPUEVSUwotCi0KLWRlZiBwZXJfaG9z
dF90b29sX3NlY3Rpb25zKCBjb250ZXh0LCBzZWN0aW9uICk6Ci0gICAgIiIiCi0gICAgVGhpcyB0
b29sIHNlY3Rpb24gZmlsdGVyIHJlc3VsdHMgaW4gZGlmZmVyZW50IHNlY3Rpb25zIGJlaW5nIGRp
c3BsYXkgYj0KYXNlZCBvbgotICAgIHRoZSBVUkwgdGhlIHVzZXIgaXMgbWFraW5nIHRoZSByZXF1
ZXN0IHRvLiBUaGlzIGNvdWxkIGFsbG93IGEgc2luZ2xlIEc9CmFsYXh5IGluc3RhbmNlCi0gICAg
dG8gc2VlbSBsaWtlIHNldmVyYWwgZGlmZmVyZW50IGluc3RhbmNlcyBob3N0aW5nIGRpZmZlcmVu
dCB0b29scyBiYXNlZD0KIG9uIHRoZSBVUkwgdXNlZAotICAgIHRvIGFjY2VzcyB0aGUgR2FseHku
IFRoaXMgY2FuIGJlIGVuYWJsZWQgYnkgcmVuYW1pbmcgdGhpcyBmaWxlIHRvIGV4YW09CnBsZXMu
cHkgYW5kIGFkZGluZwotICAgIHRoZSBmb2xsb3dpbmcgdG8gdGhlIGBgYXBwOm1haW5gYCBzZWN0
aW9uIG9mIGBgZ2FsYXh5LmluaWBgOgotCi0gICAgICAgIHRvb2xfc2VjdGlvbl9maWx0ZXJzID0z
RCBleGFtcGxlczpwZXJfaG9zdF90b29sX3NlY3Rpb25zCi0gICAgIiIiCi0gICAgaG9zdCA9M0Qg
Y29udGV4dC50cmFucy5yZXF1ZXN0Lmhvc3QKLSAgICAjIENvcmUgdG9vbHMgdXNlZCBieSBhbGwg
dmlydHVhbCBob3N0cy4KLSAgICB2YWxpZF9zZWN0aW9ucyA9M0QgWyAiZ2V0ZXh0IiwgInRleHR1
dGlsIiwgImZpbHRlciIgXQotICAgIGlmICJuZ3MuZ2FsYXh5LmV4YW1wbGUuY29tIiBpbiBob3N0
OgotICAgICAgICB2YWxpZF9zZWN0aW9ucyArPTNEIFsgIm5ncyIgXQotICAgIGVsaWYgIm1pY3Jv
YXJyYXkuZ2FsYXh5LmV4YW1wbGUuY29tIiBpbiBob3N0OgotICAgICAgICB2YWxpZF9zZWN0aW9u
cyArPTNEIFsgIm1pY3JvYXJyYXkiIF0KLSAgICBlbGlmICJwcm90ZW9taWNzLmdhbGF4eS5leGFt
cGxlLmNvbSIgaW4gaG9zdDoKLSAgICAgICAgdmFsaWRfc2VjdGlvbnMgKz0zRCBbICJwcm90ZW9t
aWNzIiBdCi0gICAgcmV0dXJuIHNlY3Rpb24uaWQgaW4gdmFsaWRfc2VjdGlvbnMKLQoKZGlmZiAt
ciBlYjIxMGNjYzZkNzY1NDdlY2E2OWEzZjQ5ZGJkOGRiMGE0NWQ1YTg4IC1yIGU2MzM4OGZkNmNi
ZjM0M2E3YjAzNDk2PQoxZDEzOWYxNGFkMGRjNjMyNCBsaWIvZ2FsYXh5L3Rvb2xzL2ZpbHRlcnMv
ZXhhbXBsZXMucHkuc2FtcGxlCi0tLSBhL2xpYi9nYWxheHkvdG9vbHMvZmlsdGVycy9leGFtcGxl
cy5weS5zYW1wbGUKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi1pbXBvcnQgbG9nZ2lu
ZwotbG9nID0zRCBsb2dnaW5nLmdldExvZ2dlciggX19uYW1lX18gKQotCi0KLWRlZiByZXN0cmlj
dF91cGxvYWRfdG9fYWRtaW5zKCBjb250ZXh0LCB0b29sICk6Ci0gICAgIiIiCi0gICAgVGhpcyB0
b29sIGZpbHRlciB3aWxsIGhpZGUgdGhlIHVwbG9hZCB0b29sIGZyb20gYWxsIHVzZXJzIGV4Y2Vw
dCBhZG1pbgotICAgIHVzZXJzLiBUaGlzIGNhbiBiZSBlbmFibGVkIGJ5IHJlbmFtaW5nIHRoaXMg
ZmlsZSB0byBleGFtcGxlcy5weSBhbmQgYWQ9CmRpbmcKLSAgICB0aGUgZm9sbG93aW5nIHRvIHRo
ZSBgYGFwcDptYWluYGAgc2VjdGlvbiBvZiBgYGdhbGF4eS5pbmlgYDoKLQotICAgICAgICB0b29s
X2ZpbHRlcnMgPTNEIGV4YW1wbGVzOnJlc3RyaWN0X3VwbG9hZF90b19hZG1pbnMKLSAgICAiIiIK
LSAgICBpZiB0b29sLm5hbWUgPTNEPTNEICJVcGxvYWQgRmlsZSI6Ci0gICAgICAgIHJldHVybiBj
b250ZXh0LnRyYW5zLnVzZXJfaXNfYWRtaW4oKQotICAgIHJldHVybiBUcnVlCi0KLQotZGVmIGRp
c2FibGVfZ2F0ayggY29udGV4dCwgdG9vbCApOgotICAgICIiIgotICAgIFRoaXMgdG9vbCBmaWx0
ZXIgd2lsbCBkaXNhYmxlIGFsbCBnYXRrIHRvb2xzIHdoZW4gZW5hYmxlZC4gVGhpcyBjYW4gYmUK
LSAgICBlbmFibGVkIGJ5IHJlbmFtaW5nIHRoaXMgZmlsZSB0byBleGFtcGxlcy5weSBhbmQgYWRk
aW5nIHRoZSBmb2xsb3dpbmcgPQp0byB0aGUKLSAgICAgYGBhcHA6bWFpbmBgIHNlY3Rpb24gb2Yg
YGBnYWxheHkuaW5pYGA6Ci0KLSAgICAgICAgdG9vbF9maWx0ZXJzID0zRCBleGFtcGxlczpkaXNh
YmxlX2dhdGsKLSAgICAiIiIKLSAgICByZXR1cm4gbm90IGFueSggWyByZXF1aXJlbWVudC5uYW1l
ID0zRD0zRCAiZ2F0ayIgZm9yIHJlcXVpcmVtZW50IGluIHRvPQpvbC5yZXF1aXJlbWVudHMgXSAp
Ci0KLQotZGVmIGV4cGxpY2l0X3VzZXJfbWFwcGluZyggY29udGV4dCwgc2VjdGlvbiApOgotICAg
ICIiIgotICAgIFRoaXMgdG9vbCBzZWN0aW9uIGZpbHRlciB1c2VzIGFuIGV4cGxpY2l0IG1hcHBp
bmcgdG8gZGVzY3JpYmUgd2hhdCB1c2U9CnJzIGNhbiB2aWV3Ci0gICAgd2hpY2ggdG9vbCBzZWN0
aW9ucy4gQW5vbnltb3VzIHVzZXJzIHdpbGwgb25seSBiZSBhYmxlIHRvIHZpZXcgdGhlICJHZT0K
dCBEYXRhIgotICAgIHRvb2wgc2VjdGlvbiAod2l0aCBpZCBnZXRleHQpLiBUaGlzIGNhbiBiZSBl
bmFibGVkIGJ5IHJlbmFtaW5nIHRoaXMgZmk9CmxlIHRvCi0gICAgZXhhbXBsZXMucHkgYW5kIGFk
ZGluZyB0aGUgZm9sbG93aW5nIHRvIHRoZSBgYGFwcDptYWluYGAgc2VjdGlvbiBvZgotICAgIGBg
Z2FsYXh5LmluaWBgOgotCi0gICAgICAgIHRvb2xfc2VjdGlvbl9maWx0ZXJzID0zRCBleGFtcGxl
czpleHBsaWNpdF91c2VyX21hcHBpbmcKLSAgICAiIiIKLSAgICB1c2Vyc19zZWN0aW9ucyA9M0Qg
ewotICAgICAgICBOb25lOiBbICJnZXRleHQiIF0sCi0gICAgICAgICJib2JAZXhhbXBsZS5jb20i
OiBbICJnZXRleHQiLCAidGV4dHV0aWwiLCAiZmlsdGVyIiBdLAotICAgICAgICAibWFyeUBleGFt
cGxlLmNvbSI6IFsgImdldGV4dCIsICJ0ZXh0dXRpbCIsICJmaWx0ZXIiLCAibmdzIiBdLAotICAg
IH0KLSAgICB1c2VyID0zRCBjb250ZXh0LnRyYW5zLnVzZXIKLSAgICBlbWFpbCA9M0QgdXNlciBh
bmQgdXNlci5lbWFpbAotICAgIHZhbGlkX3NlY3Rpb25zID0zRCB1c2Vyc19zZWN0aW9ucy5nZXQo
IGVtYWlsLCBbXSApCi0gICAgcmV0dXJuIHNlY3Rpb24uaWQgaW4gdmFsaWRfc2VjdGlvbnMKLQot
Ci1ERVZFTE9QRVJTID0zRCBbICJtYXJ5QGV4YW1wbGUuY29tIiBdCi0KLQotZGVmIHJlc3RyaWN0
X2RldmVsb3BtZW50X3Rvb2xzKCBjb250ZXh0LCB0b29sICk6Ci0gICAgIiIiCi0gICAgVGhpcyB0
b29sIGZpbHRlciB3aWxsIGRpc2FibGUgYWxsIHRvb2xzIHdpdGggdGhlIHN0cmluZyBhbHBoYSBh
cHBlYXJpbj0KZyBpbgotICAgIHRoZSB2ZXJzaW9uIGZvciBhbGwgdXNlcnMgZXhjZXB0IHRob3Nl
IGV4cGxpY2l0bHkgYXBwZWFyaW5nIGluIHRoZSBERVY9CkVMT1BFUlMgbGlzdAotICAgIGRlZmlu
ZWQgYWJvdmUuIFRoaXMgY2FuIGJlIGVuYWJsZWQgYnkgcmVuYW1pbmcgdGhpcyBmaWxlIHRvIGV4
YW1wbGVzLnA9CnkgYW5kCi0gICAgYWRkaW5nIHRoZSBmb2xsb3dpbmcgdG8gdGhlIGBgYXBwOm1h
aW5gYCBzZWN0aW9uIG9mIGBgZ2FsYXh5LmluaWBgOgotCi0gICAgICAgIHRvb2xfZmlsdGVycyA9
M0QgZXhhbXBsZXM6cmVzdHJpY3RfZGV2ZWxvcG1lbnRfdG9vbHMKLSAgICAiIiIKLSAgICB2ZXJz
aW9uID0zRCB0b29sLnZlcnNpb24KLSAgICB1c2VyID0zRCBjb250ZXh0LnRyYW5zLnVzZXIKLSAg
ICBlbWFpbCA9M0QgdXNlciBhbmQgdXNlci5lbWFpbAotICAgIHJldHVybiAiYWxwaGEiIG5vdCBp
biB2ZXJzaW9uIG9yIGVtYWlsIGluIERFVkVMT1BFUlMKLQotCi1kZWYgcGVyX2hvc3RfdG9vbF9z
ZWN0aW9ucyggY29udGV4dCwgc2VjdGlvbiApOgotICAgICIiIgotICAgIFRoaXMgdG9vbCBzZWN0
aW9uIGZpbHRlciByZXN1bHRzIGluIGRpZmZlcmVudCBzZWN0aW9ucyBiZWluZyBkaXNwbGF5IGI9
CmFzZWQgb24KLSAgICB0aGUgVVJMIHRoZSB1c2VyIGlzIG1ha2luZyB0aGUgcmVxdWVzdCB0by4g
VGhpcyBjb3VsZCBhbGxvdyBhIHNpbmdsZSBHPQphbGF4eSBpbnN0YW5jZQotICAgIHRvIHNlZW0g
bGlrZSBzZXZlcmFsIGRpZmZlcmVudCBpbnN0YW5jZXMgaG9zdGluZyBkaWZmZXJlbnQgdG9vbHMg
YmFzZWQ9CiBvbiB0aGUgVVJMIHVzZWQKLSAgICB0byBhY2Nlc3MgdGhlIEdhbHh5LiBUaGlzIGNh
biBiZSBlbmFibGVkIGJ5IHJlbmFtaW5nIHRoaXMgZmlsZSB0byBleGFtPQpwbGVzLnB5IGFuZCBh
ZGRpbmcKLSAgICB0aGUgZm9sbG93aW5nIHRvIHRoZSBgYGFwcDptYWluYGAgc2VjdGlvbiBvZiBg
YGdhbGF4eS5pbmlgYDoKLQotICAgICAgICB0b29sX3NlY3Rpb25fZmlsdGVycyA9M0QgZXhhbXBs
ZXM6cGVyX2hvc3RfdG9vbF9zZWN0aW9ucwotICAgICIiIgotICAgIGhvc3QgPTNEIGNvbnRleHQu
dHJhbnMucmVxdWVzdC5ob3N0Ci0gICAgIyBDb3JlIHRvb2xzIHVzZWQgYnkgYWxsIHZpcnR1YWwg
aG9zdHMuCi0gICAgdmFsaWRfc2VjdGlvbnMgPTNEIFsgImdldGV4dCIsICJ0ZXh0dXRpbCIsICJm
aWx0ZXIiIF0KLSAgICBpZiAibmdzLmdhbGF4eS5leGFtcGxlLmNvbSIgaW4gaG9zdDoKLSAgICAg
ICAgdmFsaWRfc2VjdGlvbnMgKz0zRCBbICJuZ3MiIF0KLSAgICBlbGlmICJtaWNyb2FycmF5Lmdh
bGF4eS5leGFtcGxlLmNvbSIgaW4gaG9zdDoKLSAgICAgICAgdmFsaWRfc2VjdGlvbnMgKz0zRCBb
ICJtaWNyb2FycmF5IiBdCi0gICAgZWxpZiAicHJvdGVvbWljcy5nYWxheHkuZXhhbXBsZS5jb20i
IGluIGhvc3Q6Ci0gICAgICAgIHZhbGlkX3NlY3Rpb25zICs9M0QgWyAicHJvdGVvbWljcyIgXQot
ICAgIHJldHVybiBzZWN0aW9uLmlkIGluIHZhbGlkX3NlY3Rpb25zCgpUaGlzIGRpZmYgaXMgc28g
YmlnIHRoYXQgd2UgbmVlZGVkIHRvIHRydW5jYXRlIHRoZSByZW1haW5kZXIuCgpodHRwczovL2Jp
dGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvNWQwZmNhNTkxMzk0LwpD
aGFuZ2VzZXQ6ICAgNWQwZmNhNTkxMzk0ClVzZXI6ICAgICAgICBjYXJsZmViZXJoYXJkCkRhdGU6
ICAgICAgICAyMDE1LTAxLTA2IDE0OjMxOjQ3KzAwOjAwClN1bW1hcnk6ICAgICBNZXJnZWQgZ2Fs
YXh5L2dhbGF4eS1jZW50cmFsIGludG8gZGVmYXVsdApBZmZlY3RlZCAjOiAgNyBmaWxlcwoKZGlm
ZiAtciBlNjMzODhmZDZjYmYzNDNhN2IwMzQ5NjFkMTM5ZjE0YWQwZGM2MzI0IC1yIDVkMGZjYTU5
MTM5NGQ3ZTdhYWFiYWRmPQpjZGVkOWY4MzdmZDQzNmVkMiBjb25maWcvZGF0YXR5cGVzX2NvbmYu
eG1sLnNhbXBsZQotLS0gYS9jb25maWcvZGF0YXR5cGVzX2NvbmYueG1sLnNhbXBsZQorKysgYi9j
b25maWcvZGF0YXR5cGVzX2NvbmYueG1sLnNhbXBsZQpAQCAtMjk5LDcgKzI5OSw3IEBACiAgICAg
PHNuaWZmZXIgdHlwZT0zRCJnYWxheHkuZGF0YXR5cGVzLmRhdGE6TmV3aWNrIi8+PHNuaWZmZXIg
dHlwZT0zRCJnYWxheD0KeS5kYXRhdHlwZXMuZGF0YTpOZXh1cyIvPjxzbmlmZmVyIHR5cGU9M0Qi
Z2FsYXh5LmRhdGF0eXBlcy50ZXh0Ok9ibyIvPgotICAgIDxzbmlmZmVyIHR5cGU9M0QiZ2FsYXh5
LmRhdGF0eXBlcy50ZXh0LkFyZmYiLz4KKyAgICA8c25pZmZlciB0eXBlPTNEImdhbGF4eS5kYXRh
dHlwZXMudGV4dDpBcmZmIi8+PHNuaWZmZXIgdHlwZT0zRCJnYWxheHkuPQpkYXRhdHlwZXMudGV4
dDpJcHluYiIvPjxzbmlmZmVyIHR5cGU9M0QiZ2FsYXh5LmRhdGF0eXBlcy50ZXh0Okpzb24iLz48
c25pZmY9CmVyIHR5cGU9M0QiZ2FsYXh5LmRhdGF0eXBlcy5pbWFnZXM6SnBnIi8+CgpkaWZmIC1y
IGU2MzM4OGZkNmNiZjM0M2E3YjAzNDk2MWQxMzlmMTRhZDBkYzYzMjQgLXIgNWQwZmNhNTkxMzk0
ZDdlN2FhYWJhZGY9CmNkZWQ5ZjgzN2ZkNDM2ZWQyIGxpYi9nYWxheHkvdG9vbHMvdG9vbGJveC9i
YXNlLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvdG9vbGJveC9iYXNlLnB5CisrKyBiL2xpYi9n
YWxheHkvdG9vbHMvdG9vbGJveC9iYXNlLnB5CkBAIC0yOTUsNyArMjk1LDEwIEBACiAgICAgICAg
ICAgICAgICAgaW5zZXJ0ZWQgPTNEIFRydWUKICAgICAgICAgICAgIGlmIG5vdCBpbnNlcnRlZDoK
ICAgICAgICAgICAgICAgICAjIENoZWNrIHRoZSB0b29sJ3MgaW5zdGFsbGVkIHZlcnNpb25zLgot
ICAgICAgICAgICAgICAgIGZvciB0b29sX2xpbmVhZ2VfdmVyc2lvbiBpbiB0b29sLmxpbmVhZ2Uu
Z2V0X3ZlcnNpb25zKCk6CisgICAgICAgICAgICAgICAgdmVyc2lvbnMgPTNEIFtdCisgICAgICAg
ICAgICAgICAgaWYgaGFzYXR0ciggdG9vbCwgJ2xpbmVhZ2UnICk6CisgICAgICAgICAgICAgICAg
ICAgIHZlcnNpb25zID0zRCB0b29sLmxpbmVhZ2UuZ2V0X3ZlcnNpb25zKCkKKyAgICAgICAgICAg
ICAgICBmb3IgdG9vbF9saW5lYWdlX3ZlcnNpb24gaW4gdmVyc2lvbnM6CiAgICAgICAgICAgICAg
ICAgICAgIGxpbmVhZ2VfaWQgPTNEIHRvb2xfbGluZWFnZV92ZXJzaW9uLmlkCiAgICAgICAgICAg
ICAgICAgICAgIGluZGV4ID0zRCBzZWxmLl9pbnRlZ3JhdGVkX3Rvb2xfcGFuZWwuaW5kZXhfb2Zf
dG9vbF9pZD0KKCBsaW5lYWdlX2lkICkKICAgICAgICAgICAgICAgICAgICAgaWYgaW5kZXg6Cgpk
aWZmIC1yIGU2MzM4OGZkNmNiZjM0M2E3YjAzNDk2MWQxMzlmMTRhZDBkYzYzMjQgLXIgNWQwZmNh
NTkxMzk0ZDdlN2FhYWJhZGY9CmNkZWQ5ZjgzN2ZkNDM2ZWQyIGxpYi9nYWxheHkvd2ViYXBwcy9n
YWxheHkvYXBpL3dvcmtmbG93cy5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2Fw
aS93b3JrZmxvd3MucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvd29ya2Zs
b3dzLnB5CkBAIC0zNzIsOSArMzcyLDkgQEAKICAgICAgICAgcmV0dXJuIGl0ZW0KPTIwCiAgICAg
QGV4cG9zZV9hcGkKLSAgICBkZWYgd29ya2Zsb3dfcmVxdWVzdCggc2VsZiwgdHJhbnMsIHdvcmtm
bG93X2lkLCBwYXlsb2FkLCAqKmt3ZCApOgorICAgIGRlZiBpbnZva2UoIHNlbGYsIHRyYW5zLCB3
b3JrZmxvd19pZCwgcGF5bG9hZCwgKiprd2QgKToKICAgICAgICAgIiIiCi0gICAgICAgIFBPU1Qg
L2FwaS93b3JrZmxvd3Mve2VuY29kZWRfd29ya2Zsb3dfaWR9L3VzYWdlCisgICAgICAgIFBPU1Qg
L2FwaS93b3JrZmxvd3Mve2VuY29kZWRfd29ya2Zsb3dfaWR9L2ludm9jYXRpb25zCj0yMAogICAg
ICAgICBTY2hlZHVsZSB0aGUgd29ya2Zsb3cgc3BlY2lmaWVkIGJ5IGB3b3JrZmxvd19pZGAgdG8g
cnVuLgogICAgICAgICAiIiIKQEAgLTM5OCwxMCArMzk4LDExIEBACiAgICAgICAgIHJldHVybiBz
ZWxmLmVuY29kZV9hbGxfaWRzKCB0cmFucywgd29ya2Zsb3dfaW52b2NhdGlvbi50b19kaWN0KCks
ID0KcmVjdXJzaXZlPTNEVHJ1ZSApCj0yMAogICAgIEBleHBvc2VfYXBpCi0gICAgZGVmIHdvcmtm
bG93X3VzYWdlKHNlbGYsIHRyYW5zLCB3b3JrZmxvd19pZCwgKiprd2QpOgorICAgIGRlZiBpbmRl
eF9pbnZvY2F0aW9ucyhzZWxmLCB0cmFucywgd29ya2Zsb3dfaWQsICoqa3dkKToKICAgICAgICAg
IiIiCi0gICAgICAgIEdFVCAvYXBpL3dvcmtmbG93cy97d29ya2Zsb3dfaWR9L3VzYWdlCi0gICAg
ICAgIEdldCB0aGUgbGlzdCBvZiB0aGUgd29ya2Zsb3cgdXNhZ2UKKyAgICAgICAgR0VUIC9hcGkv
d29ya2Zsb3dzL3t3b3JrZmxvd19pZH0vaW52b2NhdGlvbnMKKworICAgICAgICBHZXQgdGhlIGxp
c3Qgb2YgdGhlIHdvcmtmbG93IGludm9jYXRpb25zCj0yMAogICAgICAgICA6cGFyYW0gIHdvcmtm
bG93X2lkOiAgICAgIHRoZSB3b3JrZmxvdyBpZCAocmVxdWlyZWQpCiAgICAgICAgIDp0eXBlICAg
d29ya2Zsb3dfaWQ6ICAgICAgc3RyCkBAIC00MTYsNTMgKzQxNyw1MyBAQAogICAgICAgICByZXR1
cm4gb3V0Cj0yMAogICAgIEBleHBvc2VfYXBpCi0gICAgZGVmIHdvcmtmbG93X3VzYWdlX2NvbnRl
bnRzKHNlbGYsIHRyYW5zLCB3b3JrZmxvd19pZCwgdXNhZ2VfaWQsICoqa3dkKToKKyAgICBkZWYg
c2hvd19pbnZvY2F0aW9uKHNlbGYsIHRyYW5zLCB3b3JrZmxvd19pZCwgaW52b2NhdGlvbl9pZCwg
Kiprd2QpOgogICAgICAgICAiIiIKLSAgICAgICAgR0VUIC9hcGkvd29ya2Zsb3dzL3t3b3JrZmxv
d19pZH0vdXNhZ2Uve3VzYWdlX2lkfQotICAgICAgICBHZXQgZGV0YWlsZWQgZGVzY3JpcHRpb24g
b2Ygd29ya2Zsb3cgdXNhZ2UKKyAgICAgICAgR0VUIC9hcGkvd29ya2Zsb3dzL3t3b3JrZmxvd19p
ZH0vaW52b2NhdGlvbi97aW52b2NhdGlvbl9pZH0KKyAgICAgICAgR2V0IGRldGFpbGVkIGRlc2Ny
aXB0aW9uIG9mIHdvcmtmbG93IGludm9jYXRpb24KPTIwCi0gICAgICAgIDpwYXJhbSAgd29ya2Zs
b3dfaWQ6ICAgICAgdGhlIHdvcmtmbG93IGlkIChyZXF1aXJlZCkKLSAgICAgICAgOnR5cGUgICB3
b3JrZmxvd19pZDogICAgICBzdHIKKyAgICAgICAgOnBhcmFtICB3b3JrZmxvd19pZDogICAgICAg
IHRoZSB3b3JrZmxvdyBpZCAocmVxdWlyZWQpCisgICAgICAgIDp0eXBlICAgd29ya2Zsb3dfaWQ6
ICAgICAgICBzdHIKPTIwCi0gICAgICAgIDpwYXJhbSAgdXNhZ2VfaWQ6ICAgICAgdGhlIHVzYWdl
IGlkIChyZXF1aXJlZCkKLSAgICAgICAgOnR5cGUgICB1c2FnZV9pZDogICAgICBzdHIKKyAgICAg
ICAgOnBhcmFtICBpbnZvY2F0aW9uX2lkOiAgICAgIHRoZSBpbnZvY2F0aW9uIGlkIChyZXF1aXJl
ZCkKKyAgICAgICAgOnR5cGUgICBpbnZvY2F0aW9uX2lkOiAgICAgIHN0cgo9MjAKICAgICAgICAg
OnJhaXNlczogZXhjZXB0aW9ucy5NZXNzYWdlRXhjZXB0aW9uLCBleGNlcHRpb25zLk9iamVjdE5v
dEZvdW5kCiAgICAgICAgICIiIgotICAgICAgICBkZWNvZGVkX3dvcmtmbG93X2ludm9jYXRpb25f
aWQgPTNEIHNlbGYuX19kZWNvZGVfaWQoIHRyYW5zLCB1c2FnZV89CmlkICkKKyAgICAgICAgZGVj
b2RlZF93b3JrZmxvd19pbnZvY2F0aW9uX2lkID0zRCBzZWxmLl9fZGVjb2RlX2lkKCB0cmFucywg
aW52b2NhPQp0aW9uX2lkICkKICAgICAgICAgd29ya2Zsb3dfaW52b2NhdGlvbiA9M0Qgc2VsZi53
b3JrZmxvd19tYW5hZ2VyLmdldF9pbnZvY2F0aW9uKCB0cmFuPQpzLCBkZWNvZGVkX3dvcmtmbG93
X2ludm9jYXRpb25faWQgKQogICAgICAgICBpZiB3b3JrZmxvd19pbnZvY2F0aW9uOgogICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuX19lbmNvZGVfaW52b2NhdGlvbiggdHJhbnMsIHdvcmtmbG93X2lu
dm9jYXRpb24gKQogICAgICAgICByZXR1cm4gTm9uZQo9MjAKICAgICBAZXhwb3NlX2FwaQotICAg
IGRlZiBjYW5jZWxfd29ya2Zsb3dfaW52b2NhdGlvbihzZWxmLCB0cmFucywgd29ya2Zsb3dfaWQs
IHVzYWdlX2lkLCAqKms9CndkKToKKyAgICBkZWYgY2FuY2VsX2ludm9jYXRpb24oc2VsZiwgdHJh
bnMsIHdvcmtmbG93X2lkLCBpbnZvY2F0aW9uX2lkLCAqKmt3ZCk6CiAgICAgICAgICIiIgotICAg
ICAgICBERUxFVEUgL2FwaS93b3JrZmxvd3Mve3dvcmtmbG93X2lkfS91c2FnZS97dXNhZ2VfaWR9
CisgICAgICAgIERFTEVURSAvYXBpL3dvcmtmbG93cy97d29ya2Zsb3dfaWR9L2ludm9jYXRpb24v
e2ludm9jYXRpb25faWR9CiAgICAgICAgIENhbmNlbCB0aGUgc3BlY2lmaWVkIHdvcmtmbG93IGlu
dm9jYXRpb24uCj0yMAogICAgICAgICA6cGFyYW0gIHdvcmtmbG93X2lkOiAgICAgIHRoZSB3b3Jr
ZmxvdyBpZCAocmVxdWlyZWQpCiAgICAgICAgIDp0eXBlICAgd29ya2Zsb3dfaWQ6ICAgICAgc3Ry
Cj0yMAotICAgICAgICA6cGFyYW0gIHVzYWdlX2lkOiAgICAgIHRoZSB1c2FnZSBpZCAocmVxdWly
ZWQpCi0gICAgICAgIDp0eXBlICAgdXNhZ2VfaWQ6ICAgICAgc3RyCisgICAgICAgIDpwYXJhbSAg
aW52b2NhdGlvbl9pZDogICAgICB0aGUgdXNhZ2UgaWQgKHJlcXVpcmVkKQorICAgICAgICA6dHlw
ZSAgIGludm9jYXRpb25faWQ6ICAgICAgc3RyCj0yMAogICAgICAgICA6cmFpc2VzOiBleGNlcHRp
b25zLk1lc3NhZ2VFeGNlcHRpb24sIGV4Y2VwdGlvbnMuT2JqZWN0Tm90Rm91bmQKICAgICAgICAg
IiIiCi0gICAgICAgIGRlY29kZWRfd29ya2Zsb3dfaW52b2NhdGlvbl9pZCA9M0Qgc2VsZi5fX2Rl
Y29kZV9pZCggdHJhbnMsIHVzYWdlXz0KaWQgKQorICAgICAgICBkZWNvZGVkX3dvcmtmbG93X2lu
dm9jYXRpb25faWQgPTNEIHNlbGYuX19kZWNvZGVfaWQoIHRyYW5zLCBpbnZvY2E9CnRpb25faWQg
KQogICAgICAgICB3b3JrZmxvd19pbnZvY2F0aW9uID0zRCBzZWxmLndvcmtmbG93X21hbmFnZXIu
Y2FuY2VsX2ludm9jYXRpb24oIHQ9CnJhbnMsIGRlY29kZWRfd29ya2Zsb3dfaW52b2NhdGlvbl9p
ZCApCiAgICAgICAgIHJldHVybiBzZWxmLl9fZW5jb2RlX2ludm9jYXRpb24oIHRyYW5zLCB3b3Jr
Zmxvd19pbnZvY2F0aW9uICkKPTIwCiAgICAgQGV4cG9zZV9hcGkKLSAgICBkZWYgd29ya2Zsb3df
aW52b2NhdGlvbl9zdGVwKHNlbGYsIHRyYW5zLCB3b3JrZmxvd19pZCwgdXNhZ2VfaWQsIHN0ZXBf
PQppZCwgKiprd2QpOgorICAgIGRlZiBpbnZvY2F0aW9uX3N0ZXAoc2VsZiwgdHJhbnMsIHdvcmtm
bG93X2lkLCBpbnZvY2F0aW9uX2lkLCBzdGVwX2lkLCA9Cioqa3dkKToKICAgICAgICAgIiIiCi0g
ICAgICAgIEdFVCAvYXBpL3dvcmtmbG93cy97d29ya2Zsb3dfaWR9L3VzYWdlL3t1c2FnZV9pZH0v
c3RlcHMve3N0ZXBfaWR9CisgICAgICAgIEdFVCAvYXBpL3dvcmtmbG93cy97d29ya2Zsb3dfaWR9
L2ludm9jYXRpb24ve2ludm9jYXRpb25faWR9L3N0ZXBzLz0Ke3N0ZXBfaWR9Cj0yMAotICAgICAg
ICA6cGFyYW0gIHdvcmtmbG93X2lkOiAgICAgIHRoZSB3b3JrZmxvdyBpZCAocmVxdWlyZWQpCi0g
ICAgICAgIDp0eXBlICAgd29ya2Zsb3dfaWQ6ICAgICAgc3RyCisgICAgICAgIDpwYXJhbSAgd29y
a2Zsb3dfaWQ6ICAgICAgICB0aGUgd29ya2Zsb3cgaWQgKHJlcXVpcmVkKQorICAgICAgICA6dHlw
ZSAgIHdvcmtmbG93X2lkOiAgICAgICAgc3RyCj0yMAotICAgICAgICA6cGFyYW0gIHVzYWdlX2lk
OiAgICAgIHRoZSB1c2FnZSBpZCAocmVxdWlyZWQpCi0gICAgICAgIDp0eXBlICAgdXNhZ2VfaWQ6
ICAgICAgc3RyCisgICAgICAgIDpwYXJhbSAgaW52b2NhdGlvbl9pZDogICAgICB0aGUgaW52b2Nh
dGlvbiBpZCAocmVxdWlyZWQpCisgICAgICAgIDp0eXBlICAgaW52b2NhdGlvbl9pZDogICAgICBz
dHIKPTIwCiAgICAgICAgIDpwYXJhbSAgc3RlcF9pZDogICAgICBlbmNvZGVkIGlkIG9mIHRoZSBX
b3JrZmxvd0ludm9jYXRpb25TdGVwIChyZT0KcXVpcmVkKQogICAgICAgICA6dHlwZSAgIHN0ZXBf
aWQ6ICAgICAgc3RyCkBAIC00ODAsOSArNDgxLDkgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX19l
bmNvZGVfaW52b2NhdGlvbl9zdGVwKCB0cmFucywgaW52b2NhdGlvbl9zdGVwICkKPTIwCiAgICAg
QGV4cG9zZV9hcGkKLSAgICBkZWYgd29ya2Zsb3dfaW52b2NhdGlvbl9zdGVwX3VwZGF0ZShzZWxm
LCB0cmFucywgd29ya2Zsb3dfaWQsIHVzYWdlX2lkPQosIHN0ZXBfaWQsIHBheWxvYWQsICoqa3dk
KToKKyAgICBkZWYgdXBkYXRlX2ludm9jYXRpb25fc3RlcChzZWxmLCB0cmFucywgd29ya2Zsb3df
aWQsIGludm9jYXRpb25faWQsIHN0PQplcF9pZCwgcGF5bG9hZCwgKiprd2QpOgogICAgICAgICAi
IiIKLSAgICAgICAgUFVUIC9hcGkvd29ya2Zsb3dzL3t3b3JrZmxvd19pZH0vdXNhZ2Uve3VzYWdl
X2lkfS9zdGVwcy97c3RlcF9pZH0KKyAgICAgICAgUFVUIC9hcGkvd29ya2Zsb3dzL3t3b3JrZmxv
d19pZH0vaW52b2NhdGlvbi97aW52b2NhdGlvbl9pZH0vc3RlcHMvPQp7c3RlcF9pZH0KICAgICAg
ICAgVXBkYXRlIHN0YXRlIG9mIHJ1bm5pbmcgd29ya2Zsb3cgc3RlcCBpbnZvY2F0aW9uIC0gc3Rp
bGwgdmVyeSBuZWJ1PQpsb3VzCiAgICAgICAgIGJ1dCB0aGlzIHdvdWxkIGJlIGZvciBzdHVmZiBs
aWtlIGNvbmZpcm1pbmcgcGF1c2VkIHN0ZXBzIGNhbiBwcm9jZT0KZWQKICAgICAgICAgZXRjLi4u
LgpAQCAtNDkxLDggKzQ5Miw4IEBACiAgICAgICAgIDpwYXJhbSAgd29ya2Zsb3dfaWQ6ICAgICAg
dGhlIHdvcmtmbG93IGlkIChyZXF1aXJlZCkKICAgICAgICAgOnR5cGUgICB3b3JrZmxvd19pZDog
ICAgICBzdHIKPTIwCi0gICAgICAgIDpwYXJhbSAgdXNhZ2VfaWQ6ICAgICAgdGhlIHVzYWdlIGlk
IChyZXF1aXJlZCkKLSAgICAgICAgOnR5cGUgICB1c2FnZV9pZDogICAgICBzdHIKKyAgICAgICAg
OnBhcmFtICBpbnZvY2F0aW9uX2lkOiAgICAgIHRoZSB1c2FnZSBpZCAocmVxdWlyZWQpCisgICAg
ICAgIDp0eXBlICAgaW52b2NhdGlvbl9pZDogICAgICBzdHIKPTIwCiAgICAgICAgIDpwYXJhbSAg
c3RlcF9pZDogICAgICBlbmNvZGVkIGlkIG9mIHRoZSBXb3JrZmxvd0ludm9jYXRpb25TdGVwIChy
ZT0KcXVpcmVkKQogICAgICAgICA6dHlwZSAgIHN0ZXBfaWQ6ICAgICAgc3RyCgpkaWZmIC1yIGU2
MzM4OGZkNmNiZjM0M2E3YjAzNDk2MWQxMzlmMTRhZDBkYzYzMjQgLXIgNWQwZmNhNTkxMzk0ZDdl
N2FhYWJhZGY9CmNkZWQ5ZjgzN2ZkNDM2ZWQyIGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYnVp
bGRhcHAucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9idWlsZGFwcC5weQorKysg
Yi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2J1aWxkYXBwLnB5CkBAIC0yMjcsMTQgKzIyNyw2
MiBAQAogICAgIHdlYmFwcC5tYXBwZXIuY29ubmVjdCggJ3dvcmtmbG93X2RpY3QnLCAnL2FwaS93
b3JrZmxvd3MvZG93bmxvYWQve3dvcms9CmZsb3dfaWR9JywgY29udHJvbGxlcj0zRCd3b3JrZmxv
d3MnLCBhY3Rpb249M0Qnd29ya2Zsb3dfZGljdCcsIGNvbmRpdGlvbnM9Cj0zRGRpY3QoIG1ldGhv
ZD0zRFsnR0VUJ10gKSApCiAgICAgIyBEZXByZWNhdGVkIGluIGZhdm9yIG9mIFBPU1QgL2FwaS93
b3JrZmxvd3Mgd2l0aCBzaGFyZWRfd29ya2Zsb3dfaWQgaT0KbiBwYXlsb2FkLgogICAgIHdlYmFw
cC5tYXBwZXIuY29ubmVjdCggJ2ltcG9ydF9zaGFyZWRfd29ya2Zsb3dfZGVwcmVjYXRlZCcsICcv
YXBpL3dvcms9CmZsb3dzL2ltcG9ydCcsIGNvbnRyb2xsZXI9M0Qnd29ya2Zsb3dzJywgYWN0aW9u
PTNEJ2ltcG9ydF9zaGFyZWRfd29ya2Zsb3dfZD0KZXByZWNhdGVkJywgY29uZGl0aW9ucz0zRGRp
Y3QoIG1ldGhvZD0zRFsnUE9TVCddICkgKQotICAgIHdlYmFwcC5tYXBwZXIuY29ubmVjdCggJ3dv
cmtmbG93X3VzYWdlJywgJy9hcGkvd29ya2Zsb3dzL3t3b3JrZmxvd19pZH09Ci91c2FnZScsIGNv
bnRyb2xsZXI9M0Qnd29ya2Zsb3dzJywgYWN0aW9uPTNEJ3dvcmtmbG93X3VzYWdlJywgY29uZGl0
aW9ucz0zRD0KZGljdChtZXRob2Q9M0RbJ0dFVCddKSkKLSAgICB3ZWJhcHAubWFwcGVyLmNvbm5l
Y3QoICd3b3JrZmxvd191c2FnZV9jb250ZW50cycsICcvYXBpL3dvcmtmbG93cy97d29yPQprZmxv
d19pZH0vdXNhZ2Uve3VzYWdlX2lkfScsIGNvbnRyb2xsZXI9M0Qnd29ya2Zsb3dzJywgYWN0aW9u
PTNEJ3dvcmtmbG93X3U9CnNhZ2VfY29udGVudHMnLCBjb25kaXRpb25zPTNEZGljdChtZXRob2Q9
M0RbJ0dFVCddKSkKLSAgICB3ZWJhcHAubWFwcGVyLmNvbm5lY3QoICdjYW5jZWxfd29ya2Zsb3df
aW52b2NhdGlvbicsICcvYXBpL3dvcmtmbG93cy97PQp3b3JrZmxvd19pZH0vdXNhZ2Uve3VzYWdl
X2lkfScsIGNvbnRyb2xsZXI9M0Qnd29ya2Zsb3dzJywgYWN0aW9uPTNEJ2NhbmNlbF89Cndvcmtm
bG93X2ludm9jYXRpb24nLCBjb25kaXRpb25zPTNEZGljdChtZXRob2Q9M0RbJ0RFTEVURSddKSkK
PTIwCi0gICAgd2ViYXBwLm1hcHBlci5jb25uZWN0KCAnd29ya2Zsb3dfaW52b2NhdGlvbl9zdGVw
JywgJy9hcGkvd29ya2Zsb3dzL3t3bz0KcmtmbG93X2lkfS91c2FnZS97dXNhZ2VfaWR9L3N0ZXBz
L3tzdGVwX2lkfScsIGNvbnRyb2xsZXI9M0Qnd29ya2Zsb3dzJywgYWN0PQppb249M0Qnd29ya2Zs
b3dfaW52b2NhdGlvbl9zdGVwJywgY29uZGl0aW9ucz0zRGRpY3QobWV0aG9kPTNEWydHRVQnXSkp
Ci0gICAgd2ViYXBwLm1hcHBlci5jb25uZWN0KCAnd29ya2Zsb3dfaW52b2NhdGlvbl9zdGVwX3Vw
ZGF0ZScsICcvYXBpL3dvcmtmbD0Kb3dzL3t3b3JrZmxvd19pZH0vdXNhZ2Uve3VzYWdlX2lkfS9z
dGVwcy97c3RlcF9pZH0nLCBjb250cm9sbGVyPTNEJ3dvcmtmbG93PQpzJywgYWN0aW9uPTNEJ3dv
cmtmbG93X2ludm9jYXRpb25fc3RlcF91cGRhdGUnLCBjb25kaXRpb25zPTNEZGljdChtZXRob2Q9
M0Q9ClsnUFVUJ10pKQorICAgICMgQVBJIHJlZmVycyB0byB1c2FnZXMgYW5kIGludm9jYXRpb25z
IC0gdGhlc2UgbWVhbiB0aGUgc2FtZSB0aGluZyBidXQ9CiB0aGUKKyAgICAjIHVzYWdlIHJvdXRl
cyBzaG91bGQgYmUgY29uc2lkZXJlZCBkZXByZWNhdGVkLgorICAgIGludm9rZV9uYW1lcyA9M0Qg
eworICAgICAgICAiaW52b2NhdGlvbnMiOiAiIiwKKyAgICAgICAgInVzYWdlIjogIl9kZXByZWNh
dGVkIiwKKyAgICB9CisgICAgZm9yIG5vdW4sIHN1ZmZpeCBpbiBpbnZva2VfbmFtZXMuaXRlcml0
ZW1zKCk6CisgICAgICAgIG5hbWUgPTNEICIlcyVzIiAlIChub3VuLCBzdWZmaXgpCisgICAgICAg
IHdlYmFwcC5tYXBwZXIuY29ubmVjdCgKKyAgICAgICAgICAgICdsaXN0X3dvcmtmbG93XyVzJyAl
IG5hbWUsCisgICAgICAgICAgICAnL2FwaS93b3JrZmxvd3Mve3dvcmtmbG93X2lkfS8lcycgJSBu
b3VuLAorICAgICAgICAgICAgY29udHJvbGxlcj0zRCd3b3JrZmxvd3MnLAorICAgICAgICAgICAg
YWN0aW9uPTNEJ2luZGV4X2ludm9jYXRpb25zJywKKyAgICAgICAgICAgIGNvbmRpdGlvbnM9M0Rk
aWN0KG1ldGhvZD0zRFsnR0VUJ10pCisgICAgICAgICkKPTIwCi0gICAgd2ViYXBwLm1hcHBlci5j
b25uZWN0KCAnd29ya2Zsb3dfcmVxdWVzdCcsICcvYXBpL3dvcmtmbG93cy97d29ya2Zsb3dfaT0K
ZH0vdXNhZ2UnLCBjb250cm9sbGVyPTNEJ3dvcmtmbG93cycsIGFjdGlvbj0zRCd3b3JrZmxvd19y
ZXF1ZXN0JywgY29uZGl0aW9uPQpzPTNEZGljdCggbWV0aG9kPTNEWydQT1NUJ10gKSApCisgICAg
ICAgIHdlYmFwcC5tYXBwZXIuY29ubmVjdCgKKyAgICAgICAgICAgICd3b3JrZmxvd18lc19jb250
ZW50cycgJSBuYW1lLAorICAgICAgICAgICAgJy9hcGkvd29ya2Zsb3dzL3t3b3JrZmxvd19pZH0v
JXMve2ludm9jYXRpb25faWR9JyAlIG5vdW4sCisgICAgICAgICAgICBjb250cm9sbGVyPTNEJ3dv
cmtmbG93cycsCisgICAgICAgICAgICBhY3Rpb249M0Qnc2hvd19pbnZvY2F0aW9uJywKKyAgICAg
ICAgICAgIGNvbmRpdGlvbnM9M0RkaWN0KG1ldGhvZD0zRFsnR0VUJ10pCisgICAgICAgICkKKwor
ICAgICAgICB3ZWJhcHAubWFwcGVyLmNvbm5lY3QoCisgICAgICAgICAgICAnY2FuY2VsX3dvcmtm
bG93XyVzJyAlIG5hbWUsCisgICAgICAgICAgICAnL2FwaS93b3JrZmxvd3Mve3dvcmtmbG93X2lk
fS8lcy97aW52b2NhdGlvbl9pZH0nICUgbm91biwKKyAgICAgICAgICAgIGNvbnRyb2xsZXI9M0Qn
d29ya2Zsb3dzJywKKyAgICAgICAgICAgIGFjdGlvbj0zRCdjYW5jZWxfaW52b2NhdGlvbicsCisg
ICAgICAgICAgICBjb25kaXRpb25zPTNEZGljdChtZXRob2Q9M0RbJ0RFTEVURSddKQorICAgICAg
ICApCisKKyAgICAgICAgd2ViYXBwLm1hcHBlci5jb25uZWN0KAorICAgICAgICAgICAgJ3dvcmtm
bG93XyVzX3N0ZXAnICUgbmFtZSwKKyAgICAgICAgICAgICcvYXBpL3dvcmtmbG93cy97d29ya2Zs
b3dfaWR9LyVzL3tpbnZvY2F0aW9uX2lkfS9zdGVwcy97c3RlcF9pPQpkfScgJSBub3VuLAorICAg
ICAgICAgICAgY29udHJvbGxlcj0zRCd3b3JrZmxvd3MnLAorICAgICAgICAgICAgYWN0aW9uPTNE
J2ludm9jYXRpb25fc3RlcCcsCisgICAgICAgICAgICBjb25kaXRpb25zPTNEZGljdChtZXRob2Q9
M0RbJ0dFVCddKQorICAgICAgICApCisKKyAgICAgICAgd2ViYXBwLm1hcHBlci5jb25uZWN0KAor
ICAgICAgICAgICAgJ3dvcmtmbG93XyVzX3N0ZXBfdXBkYXRlJyAlIG5hbWUsCisgICAgICAgICAg
ICAnL2FwaS93b3JrZmxvd3Mve3dvcmtmbG93X2lkfS8lcy97aW52b2NhdGlvbl9pZH0vc3RlcHMv
e3N0ZXBfaT0KZH0nICUgbm91biwKKyAgICAgICAgICAgIGNvbnRyb2xsZXI9M0Qnd29ya2Zsb3dz
JywKKyAgICAgICAgICAgIGFjdGlvbj0zRCd1cGRhdGVfaW52b2NhdGlvbl9zdGVwJywKKyAgICAg
ICAgICAgIGNvbmRpdGlvbnM9M0RkaWN0KG1ldGhvZD0zRFsnUFVUJ10pCisgICAgICAgICkKKwor
ICAgICAgICB3ZWJhcHAubWFwcGVyLmNvbm5lY3QoCisgICAgICAgICAgICAnd29ya2Zsb3dfJXMn
ICUgbmFtZSwKKyAgICAgICAgICAgICcvYXBpL3dvcmtmbG93cy97d29ya2Zsb3dfaWR9LyVzJyAl
IG5vdW4sCisgICAgICAgICAgICBjb250cm9sbGVyPTNEJ3dvcmtmbG93cycsCisgICAgICAgICAg
ICBhY3Rpb249M0QnaW52b2tlJywKKyAgICAgICAgICAgIGNvbmRpdGlvbnM9M0RkaWN0KCBtZXRo
b2Q9M0RbJ1BPU1QnXSApCisgICAgICAgICkKICAgICAjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNE
PTNEPTNECiAgICAgIyA9M0Q9M0Q9M0Q9M0Q9M0QgQVVUSEVOVElDQVRFIEFQSSA9M0Q9M0Q9M0Q9
M0Q9M0QKICAgICAjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNECgpkaWZmIC1yIGU2MzM4
OGZkNmNiZjM0M2E3YjAzNDk2MWQxMzlmMTRhZDBkYzYzMjQgLXIgNWQwZmNhNTkxMzk0ZDdlN2Fh
YWJhZGY9CmNkZWQ5ZjgzN2ZkNDM2ZWQyIGxpYi9nYWxheHkvd29ya2Zsb3cvbW9kdWxlcy5weQot
LS0gYS9saWIvZ2FsYXh5L3dvcmtmbG93L21vZHVsZXMucHkKKysrIGIvbGliL2dhbGF4eS93b3Jr
Zmxvdy9tb2R1bGVzLnB5CkBAIC0yOSw2ICsyOSwxMyBAQAo9MjAKIGxvZyA9M0QgbG9nZ2luZy5n
ZXRMb2dnZXIoIF9fbmFtZV9fICkKPTIwCisjIEtleSBpbnRvIFRvb2wgc3RhdGUgdG8gZGVzY3Jp
YmUgaW52b2NhdGlvbi1zcGVjaWZpYyBydW50aW1lIHByb3BlcnRpZXMuCitSVU5USU1FX1NURVBf
TUVUQV9TVEFURV9LRVkgPTNEICJfX1NURVBfTUVUQV9TVEFURV9fIgorIyBLZXkgaW50byBzdGVw
IHJ1bnRpbWUgc3RhdGUgZGljdCBkZXNjcmliaW5nIGludm9jYXRpb24tc3BlY2lmaWMgcG9zdCBq
b2IKKyMgYWN0aW9ucyAoaS5lLiBQSkEgc3BlY2lmaWVkIGF0IHJ1bnRpbWUgb24gdG9wIG9mIHRo
ZSB3b3JrZmxvdy13aWRlIGRlZmluPQplZAorIyBvbmVzLgorUlVOVElNRV9QT1NUX0pPQl9BQ1RJ
T05TX0tFWSA9M0QgIl9fUE9TVF9KT0JfQUNUSU9OU19fIgorCj0yMAogY2xhc3MgV29ya2Zsb3dN
b2R1bGUoIG9iamVjdCApOgo9MjAKQEAgLTQ3Miw2ICs0NzksNyBAQAogICAgICAgICBzZWxmLnRv
b2xfaWQgPTNEIHRvb2xfaWQKICAgICAgICAgc2VsZi50b29sID0zRCB0cmFucy5hcHAudG9vbGJv
eC5nZXRfdG9vbCggdG9vbF9pZCwgdG9vbF92ZXJzaW9uPTNEPQp0b29sX3ZlcnNpb24gKQogICAg
ICAgICBzZWxmLnBvc3Rfam9iX2FjdGlvbnMgPTNEIHt9CisgICAgICAgIHNlbGYucnVudGltZV9w
b3N0X2pvYl9hY3Rpb25zID0zRCB7fQogICAgICAgICBzZWxmLndvcmtmbG93X291dHB1dHMgPTNE
IFtdCiAgICAgICAgIHNlbGYuc3RhdGUgPTNEIE5vbmUKICAgICAgICAgc2VsZi52ZXJzaW9uX2No
YW5nZXMgPTNEIFtdCkBAIC01NTYsNiArNTY0LDkgQEAKICAgICAgICAgc3RhdGUgPTNEIGdhbGF4
eS50b29scy5EZWZhdWx0VG9vbFN0YXRlKCkKICAgICAgICAgYXBwID0zRCBzZWxmLnRyYW5zLmFw
cAogICAgICAgICBzdGF0ZS5kZWNvZGUoIHJ1bnRpbWVfc3RhdGUsIHNlbGYudG9vbCwgYXBwLCBz
ZWN1cmU9M0RGYWxzZSApCisgICAgICAgIHN0YXRlX2RpY3QgPTNEIGxvYWRzKCBydW50aW1lX3N0
YXRlICkKKyAgICAgICAgaWYgUlVOVElNRV9TVEVQX01FVEFfU1RBVEVfS0VZIGluIHN0YXRlX2Rp
Y3Q6CisgICAgICAgICAgICBzZWxmLl9fcmVzdG9yZV9zdGVwX21ldGFfcnVudGltZV9zdGF0ZSgg
bG9hZHMoIHN0YXRlX2RpY3RbIFJVTj0KVElNRV9TVEVQX01FVEFfU1RBVEVfS0VZIF0gKSApCiAg
ICAgICAgIHJldHVybiBzdGF0ZQo9MjAKICAgICBkZWYgbm9ybWFsaXplX3J1bnRpbWVfc3RhdGUo
IHNlbGYsIHJ1bnRpbWVfc3RhdGUgKToKQEAgLTU3MiwxNiArNTgzLDE5IEBACiAgICAgICAgICAg
ICBzdGVwLnRvb2xfaW5wdXRzID0zRCBOb25lCiAgICAgICAgIHN0ZXAudG9vbF9lcnJvcnMgPTNE
IHNlbGYuZXJyb3JzCiAgICAgICAgIGZvciBrLCB2IGluIHNlbGYucG9zdF9qb2JfYWN0aW9ucy5p
dGVyaXRlbXMoKToKLSAgICAgICAgICAgICMgTXVzdCBoYXZlIGFjdGlvbl90eXBlLCBzdGVwLiAg
b3V0cHV0IGFuZCBhX2FyZ3MgYXJlIG9wdGlvbmFsLgotICAgICAgICAgICAgaWYgJ291dHB1dF9u
YW1lJyBpbiB2OgotICAgICAgICAgICAgICAgIG91dHB1dF9uYW1lID0zRCB2WydvdXRwdXRfbmFt
ZSddCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG91dHB1dF9uYW1lID0zRCBO
b25lCi0gICAgICAgICAgICBpZiAnYWN0aW9uX2FyZ3VtZW50cycgaW4gdjoKLSAgICAgICAgICAg
ICAgICBhY3Rpb25fYXJndW1lbnRzID0zRCB2WydhY3Rpb25fYXJndW1lbnRzJ10KLSAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYWN0aW9uX2FyZ3VtZW50cyA9M0QgTm9uZQotICAg
ICAgICAgICAgc2VsZi50cmFucy5zYV9zZXNzaW9uLmFkZChQb3N0Sm9iQWN0aW9uKHZbJ2FjdGlv
bl90eXBlJ10sIHN0ZXA9Ciwgb3V0cHV0X25hbWUsIGFjdGlvbl9hcmd1bWVudHMpKQorICAgICAg
ICAgICAgcGphID0zRCBzZWxmLl9fdG9fcGphKCBrLCB2LCBzdGVwICkKKyAgICAgICAgICAgIHNl
bGYudHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIHBqYSApCisKKyAgICBkZWYgX190b19wamEoIHNlbGYs
IGtleSwgdmFsdWUsIHN0ZXAgKToKKyAgICAgICAgaWYgJ291dHB1dF9uYW1lJyBpbiB2YWx1ZToK
KyAgICAgICAgICAgIG91dHB1dF9uYW1lID0zRCB2YWx1ZVsnb3V0cHV0X25hbWUnXQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgb3V0cHV0X25hbWUgPTNEIE5vbmUKKyAgICAgICAgaWYgJ2Fj
dGlvbl9hcmd1bWVudHMnIGluIHZhbHVlOgorICAgICAgICAgICAgYWN0aW9uX2FyZ3VtZW50cyA9
M0QgdmFsdWVbJ2FjdGlvbl9hcmd1bWVudHMnXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
YWN0aW9uX2FyZ3VtZW50cyA9M0QgTm9uZQorICAgICAgICByZXR1cm4gUG9zdEpvYkFjdGlvbih2
YWx1ZVsnYWN0aW9uX3R5cGUnXSwgc3RlcCwgb3V0cHV0X25hbWUsIGFjdGk9Cm9uX2FyZ3VtZW50
cykKPTIwCiAgICAgZGVmIGdldF9uYW1lKCBzZWxmICk6CiAgICAgICAgIGlmIHNlbGYudG9vbDoK
QEAgLTY3Nyw3ICs2OTEsOCBAQAogICAgICAgICAgICAgdG9vbD0zRHNlbGYudG9vbCwgdmFsdWVz
PTNEc2VsZi5zdGF0ZS5pbnB1dHMsIGVycm9ycz0zRCggc2VsZi49CmVycm9ycyBvciB7fSApICkK
PTIwCiAgICAgZGVmIGVuY29kZV9ydW50aW1lX3N0YXRlKCBzZWxmLCB0cmFucywgc3RhdGUgKToK
LSAgICAgICAgcmV0dXJuIHN0YXRlLmVuY29kZSggc2VsZi50b29sLCBzZWxmLnRyYW5zLmFwcCAp
CisgICAgICAgIGVuY29kZWQgPTNEIHN0YXRlLmVuY29kZSggc2VsZi50b29sLCBzZWxmLnRyYW5z
LmFwcCApCisgICAgICAgIHJldHVybiBlbmNvZGVkCj0yMAogICAgIGRlZiB1cGRhdGVfc3RhdGUo
IHNlbGYsIGluY29taW5nICk6CiAgICAgICAgICMgQnVpbGQgYSBjYWxsYmFjayB0aGF0IGhhbmRs
ZXMgc2V0dGluZyBhbiBpbnB1dCB0byBiZSByZXF1aXJlZCBhdApAQCAtNzEyLDI2ICs3MjcsNDYg
QEAKICAgICAgICAgc2VsZi5lcnJvcnMgPTNEIGVycm9ycyBvciBOb25lCj0yMAogICAgIGRlZiBj
aGVja19hbmRfdXBkYXRlX3N0YXRlKCBzZWxmICk6Ci0gICAgICAgIHJldHVybiBzZWxmLnRvb2wu
Y2hlY2tfYW5kX3VwZGF0ZV9wYXJhbV92YWx1ZXMoIHNlbGYuc3RhdGUuaW5wdXRzLD0KIHNlbGYu
dHJhbnMsIGFsbG93X3dvcmtmbG93X3BhcmFtZXRlcnM9M0RUcnVlICkKKyAgICAgICAgaW5wdXRz
ID0zRCBzZWxmLnN0YXRlLmlucHV0cworICAgICAgICByZXR1cm4gc2VsZi50b29sLmNoZWNrX2Fu
ZF91cGRhdGVfcGFyYW1fdmFsdWVzKCBpbnB1dHMsIHNlbGYudHJhbnM9CiwgYWxsb3dfd29ya2Zs
b3dfcGFyYW1ldGVycz0zRFRydWUgKQo9MjAKICAgICBkZWYgY29tcHV0ZV9ydW50aW1lX3N0YXRl
KCBzZWxmLCB0cmFucywgc3RlcF91cGRhdGVzPTNETm9uZSwgc291cmNlPTNEPQoiaHRtbCIgKToK
ICAgICAgICAgIyBXYXJuaW5nOiBUaGlzIG1ldGhvZCBkZXN0cnVjdGl2ZWx5IG1vZGlmaWVzIGV4
aXN0aW5nIHN0ZXAgc3RhdGUuCiAgICAgICAgIHN0ZXBfZXJyb3JzID0zRCBOb25lCiAgICAgICAg
IHN0YXRlID0zRCBzZWxmLnN0YXRlCisgICAgICAgIHNlbGYucnVudGltZV9wb3N0X2pvYl9hY3Rp
b25zID0zRCB7fQogICAgICAgICBpZiBzdGVwX3VwZGF0ZXM6CiAgICAgICAgICAgICAjIEdldCB0
aGUgdG9vbAogICAgICAgICAgICAgdG9vbCA9M0Qgc2VsZi50b29sCiAgICAgICAgICAgICAjIEdl
dCBvbGQgZXJyb3JzCiAgICAgICAgICAgICBvbGRfZXJyb3JzID0zRCBzdGF0ZS5pbnB1dHMucG9w
KCAiX19lcnJvcnNfXyIsIHt9ICkKICAgICAgICAgICAgICMgVXBkYXRlIHRoZSBzdGF0ZQorICAg
ICAgICAgICAgc2VsZi5ydW50aW1lX3Bvc3Rfam9iX2FjdGlvbnMgPTNEIHN0ZXBfdXBkYXRlcy5n
ZXQoUlVOVElNRV9QT1M9ClRfSk9CX0FDVElPTlNfS0VZLCB7fSkKICAgICAgICAgICAgIHN0ZXBf
ZXJyb3JzID0zRCB0b29sLnVwZGF0ZV9zdGF0ZSggdHJhbnMsIHRvb2wuaW5wdXRzLCBzdGF0ZS5p
PQpucHV0cywgc3RlcF91cGRhdGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdXBkYXRlX29ubHk9M0RUcnVlLCBvbGRfZXJyb3I9CnM9M0RvbGRfZXJyb3Jz
LCBzb3VyY2U9M0Rzb3VyY2UgKQorICAgICAgICAgICAgc3RlcF9tZXRhZGF0YV9ydW50aW1lX3N0
YXRlID0zRCBzZWxmLl9fc3RlcF9tZXRhX3J1bnRpbWVfc3RhdGU9CigpCisgICAgICAgICAgICBp
ZiBzdGVwX21ldGFkYXRhX3J1bnRpbWVfc3RhdGU6CisgICAgICAgICAgICAgICAgc3RhdGUuaW5w
dXRzWyBSVU5USU1FX1NURVBfTUVUQV9TVEFURV9LRVkgXSA9M0Qgc3RlcF9tZXRhZD0KYXRhX3J1
bnRpbWVfc3RhdGUKICAgICAgICAgcmV0dXJuIHN0YXRlLCBzdGVwX2Vycm9ycwo9MjAKKyAgICBk
ZWYgX19zdGVwX21ldGFfcnVudGltZV9zdGF0ZSggc2VsZiApOgorICAgICAgICAiIiIgQnVpbGQg
YSBkaWN0aW9uYXJ5IGEgb2YgbWV0YS1zdGVwIHJ1bnRpbWUgc3RhdGUgKHN0YXRlIGFib3V0IGg9
Cm93CisgICAgICAgIHRoZSB3b3JrZmxvdyBzdGVwIC0gbm90IHRoZSB0b29sIHN0YXRlKSB0byBi
ZSBzZXJpYWxpemVkIHdpdGggdGhlID0KVG9vbAorICAgICAgICBzdGF0ZS4KKyAgICAgICAgIiIi
CisgICAgICAgIHJldHVybiB7IFJVTlRJTUVfUE9TVF9KT0JfQUNUSU9OU19LRVk6IHNlbGYucnVu
dGltZV9wb3N0X2pvYl9hY3Rpbz0KbnMgfQorCisgICAgZGVmIF9fcmVzdG9yZV9zdGVwX21ldGFf
cnVudGltZV9zdGF0ZSggc2VsZiwgc3RlcF9ydW50aW1lX3N0YXRlICk6CisgICAgICAgIGlmIFJV
TlRJTUVfUE9TVF9KT0JfQUNUSU9OU19LRVkgaW4gc3RlcF9ydW50aW1lX3N0YXRlOgorICAgICAg
ICAgICAgc2VsZi5ydW50aW1lX3Bvc3Rfam9iX2FjdGlvbnMgPTNEIHN0ZXBfcnVudGltZV9zdGF0
ZVsgUlVOVElNRV89ClBPU1RfSk9CX0FDVElPTlNfS0VZIF0KKwogICAgIGRlZiBleGVjdXRlKCBz
ZWxmLCB0cmFucywgcHJvZ3Jlc3MsIGludm9jYXRpb24sIHN0ZXAgKToKICAgICAgICAgdG9vbCA9
M0QgdHJhbnMuYXBwLnRvb2xib3guZ2V0X3Rvb2woIHN0ZXAudG9vbF9pZCwgdG9vbF92ZXJzaW9u
PTNEPQpzdGVwLnRvb2xfdmVyc2lvbiApCiAgICAgICAgIHRvb2xfc3RhdGUgPTNEIHN0ZXAuc3Rh
dGUKLQorICAgICAgICAjIE5vdCBzdHJpY3RseSBuZWVkZWQgLSBidXQga2VlcCBUb29sIHN0YXRl
IGNsZWFuIGJ5IHN0cmlwcGluZyBydW49CnRpbWUKKyAgICAgICAgIyBtZXRhZGF0YSBwYXJhbWV0
ZXJzIGZyb20gaXQuCisgICAgICAgIGlmIFJVTlRJTUVfU1RFUF9NRVRBX1NUQVRFX0tFWSBpbiB0
b29sX3N0YXRlLmlucHV0czoKKyAgICAgICAgICAgIGRlbCB0b29sX3N0YXRlLmlucHV0c1sgUlVO
VElNRV9TVEVQX01FVEFfU1RBVEVfS0VZIF0KICAgICAgICAgY29sbGVjdGlvbnNfdG9fbWF0Y2gg
PTNEIHNlbGYuX2ZpbmRfY29sbGVjdGlvbnNfdG9fbWF0Y2goIHRvb2wsIHByPQpvZ3Jlc3MsIHN0
ZXAgKQogICAgICAgICAjIEhhdmUgaW1wbGljaXQgY29sbGVjdGlvbnMuLi4KICAgICAgICAgaWYg
Y29sbGVjdGlvbnNfdG9fbWF0Y2guaGFzX2NvbGxlY3Rpb25zKCk6CkBAIC04MTUsNyArODUwLDEw
IEBACiAgICAgICAgICMgQ3JlYXRlIG5ldyBQSkEgYXNzb2NpYXRpb25zIHdpdGggdGhlIGNyZWF0
ZWQgam9iLCB0byBiZSBydW4gb24gYz0Kb21wbGV0aW9uLgogICAgICAgICAjIFBKQSBQYXJhbWV0
ZXIgUmVwbGFjZW1lbnQgKG9ubHkgYXBwbGllcyB0byBpbW1lZGlhdGUgYWN0aW9ucy0tIHI9CmVu
YW1lIHNwZWNpZmljYWxseSwgZm9yIG5vdykKICAgICAgICAgIyBQYXNzIGFsb25nIHJlcGxhY2Vt
ZW50IGRpY3Qgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIHRoZSBQSkEgc28gd2UgPQpkb24ndCBoYXZl
IHRvIG1vZGlmeSB0aGUgb2JqZWN0LgotICAgICAgICBmb3IgcGphIGluIHN0ZXAucG9zdF9qb2Jf
YWN0aW9uczoKKyAgICAgICAgcG9zdF9qb2JfYWN0aW9ucyA9M0Qgc3RlcC5wb3N0X2pvYl9hY3Rp
b25zCisgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYucnVudGltZV9wb3N0X2pvYl9hY3Rp
b25zLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgcG9zdF9qb2JfYWN0aW9ucy5hcHBlbmQoIHNl
bGYuX190b19wamEoIGtleSwgdmFsdWUsIHN0ZXAgKSApCisgICAgICAgIGZvciBwamEgaW4gcG9z
dF9qb2JfYWN0aW9uczoKICAgICAgICAgICAgIGlmIHBqYS5hY3Rpb25fdHlwZSBpbiBBY3Rpb25C
b3guaW1tZWRpYXRlX2FjdGlvbnM6CiAgICAgICAgICAgICAgICAgQWN0aW9uQm94LmV4ZWN1dGUo
IHNlbGYudHJhbnMuYXBwLCBzZWxmLnRyYW5zLnNhX3Nlc3Npb24sID0KcGphLCBqb2IsIHJlcGxh
Y2VtZW50X2RpY3QgKQogICAgICAgICAgICAgZWxzZToKCmRpZmYgLXIgZTYzMzg4ZmQ2Y2JmMzQz
YTdiMDM0OTYxZDEzOWYxNGFkMGRjNjMyNCAtciA1ZDBmY2E1OTEzOTRkN2U3YWFhYmFkZj0KY2Rl
ZDlmODM3ZmQ0MzZlZDIgbGliL2dhbGF4eS93b3JrZmxvdy9ydW5fcmVxdWVzdC5weQotLS0gYS9s
aWIvZ2FsYXh5L3dvcmtmbG93L3J1bl9yZXF1ZXN0LnB5CisrKyBiL2xpYi9nYWxheHkvd29ya2Zs
b3cvcnVuX3JlcXVlc3QucHkKQEAgLTE1MSw3ICsxNTEsNyBAQAogICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgZWZmZWN0aXZlX2tleSA9M0Qga2V5CiAgICAgICAgIHZhbHVlID0zRCBwYXJhbV9k
aWN0W2tleV0KLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZGljdCkgYW5kIG5vdCAoJ3Ny
YycgaW4gdmFsdWUgYW5kICdpZCcgaW4gdmFsPQp1ZSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uo
dmFsdWUsIGRpY3QpIGFuZCAobm90ICgnc3JjJyBpbiB2YWx1ZSBhbmQgJ2lkJyBpbiB2YT0KbHVl
KSBhbmQga2V5ICE9M0QgIl9fUE9TVF9KT0JfQUNUSU9OU19fIik6CiAgICAgICAgICAgICBuZXdf
cGFyYW1zLnVwZGF0ZShfZmxhdHRlbl9zdGVwX3BhcmFtcyggdmFsdWUsIGVmZmVjdGl2ZV9rZXkp
ICkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIG5ld19wYXJhbXNbZWZmZWN0aXZlX2tleV0g
PTNEIHZhbHVlCgpkaWZmIC1yIGU2MzM4OGZkNmNiZjM0M2E3YjAzNDk2MWQxMzlmMTRhZDBkYzYz
MjQgLXIgNWQwZmNhNTkxMzk0ZDdlN2FhYWJhZGY9CmNkZWQ5ZjgzN2ZkNDM2ZWQyIHRlc3QvYXBp
L3Rlc3Rfd29ya2Zsb3dzLnB5Ci0tLSBhL3Rlc3QvYXBpL3Rlc3Rfd29ya2Zsb3dzLnB5CisrKyBi
L3Rlc3QvYXBpL3Rlc3Rfd29ya2Zsb3dzLnB5CkBAIC0xNjMsOCArMTYzLDcgQEAKICAgICAgICAg
IyBXYWl0IGZvciB3b3JrZmxvdyB0byBiZWNvbWUgZnVsbHkgc2NoZWR1bGVkIGFuZCB0aGVuIGZv
ciBhbGwgam9icwogICAgICAgICAjIGNvbXBsZXRlLgogICAgICAgICBpZiB3YWl0OgotICAgICAg
ICAgICAgc2VsZi53YWl0X2Zvcl9pbnZvY2F0aW9uKCB3b3JrZmxvd19pZCwgaW52b2NhdGlvbl9p
ZCApCi0gICAgICAgICAgICBzZWxmLmRhdGFzZXRfcG9wdWxhdG9yLndhaXRfZm9yX2hpc3Rvcnko
IGhpc3RvcnlfaWQsIGFzc2VydF9vaz0KPTNEVHJ1ZSApCisgICAgICAgICAgICBzZWxmLl93YWl0
X2Zvcl93b3JrZmxvdyggd29ya2Zsb3dfaWQsIGludm9jYXRpb25faWQsIGhpc3RvcnlfaT0KZCAp
CiAgICAgICAgIGpvYnMgPTNEIHNlbGYuX2hpc3Rvcnlfam9icyggaGlzdG9yeV9pZCApCiAgICAg
ICAgIHJldHVybiBSdW5Kb2JzU3VtbWFyeSgKICAgICAgICAgICAgIGhpc3RvcnlfaWQ9M0RoaXN0
b3J5X2lkLApAQCAtMTgwLDYgKzE3OSwxMiBAQAogICAgIGRlZiBfaGlzdG9yeV9qb2JzKCBzZWxm
LCBoaXN0b3J5X2lkICk6CiAgICAgICAgIHJldHVybiBzZWxmLl9nZXQoImpvYnMiLCB7ICJoaXN0
b3J5X2lkIjogaGlzdG9yeV9pZCwgIm9yZGVyX2J5IjogIj0KY3JlYXRlX3RpbWUiIH0gKS5qc29u
KCkKPTIwCisgICAgZGVmIF93YWl0X2Zvcl93b3JrZmxvdyggc2VsZiwgd29ya2Zsb3dfaWQsIGlu
dm9jYXRpb25faWQsIGhpc3RvcnlfaWQsID0KYXNzZXJ0X29rPTNEVHJ1ZSApOgorICAgICAgICAi
IiIgV2FpdCBmb3IgYSB3b3JrZmxvdyBpbnZvY2F0aW9uIHRvIGNvbXBsZXRlbHkgc2NoZWR1bGUg
YW5kIHRoZW49CiBoaXN0b3J5CisgICAgICAgIHRvIGJlIGNvbXBsZXRlLiAiIiIKKyAgICAgICAg
c2VsZi53YWl0X2Zvcl9pbnZvY2F0aW9uKCB3b3JrZmxvd19pZCwgaW52b2NhdGlvbl9pZCApCisg
ICAgICAgIHNlbGYuZGF0YXNldF9wb3B1bGF0b3Iud2FpdF9mb3JfaGlzdG9yeSggaGlzdG9yeV9p
ZCwgYXNzZXJ0X29rPTNEVD0KcnVlICkKKwo9MjAKICMgV29ya2Zsb3cgQVBJIFRPRE86CiAjIC0g
QWxsb3cgaGlzdG9yeV9pZCBhcyBwYXJhbSB0byB3b3JrZmxvdyBydW4gYWN0aW9uLiAoaGlzdF9p
ZCkKQEAgLTc0Myw2ICs3NDgsODcgQEAKICAgICAgICAgY29udGVudCA9M0Qgc2VsZi5kYXRhc2V0
X3BvcHVsYXRvci5nZXRfaGlzdG9yeV9kYXRhc2V0X2RldGFpbHMoIGhpPQpzdG9yeV9pZCwgd2Fp
dD0zRFRydWUsIGFzc2VydF9vaz0zRFRydWUgKQogICAgICAgICBhc3NlcnQgY29udGVudFsgIm5h
bWUiIF0gPTNEPTNEICJmb28gd2FzIHJlcGxhY2VkIgo9MjAKKyAgICBAc2tpcF93aXRob3V0X3Rv
b2woICJjYXQxIiApCisgICAgZGVmIHRlc3RfcnVuX3dpdGhfcnVudGltZV9wamEoIHNlbGYgKToK
KyAgICAgICAgd29ya2Zsb3cgPTNEIHNlbGYud29ya2Zsb3dfcG9wdWxhdG9yLmxvYWRfd29ya2Zs
b3coIG5hbWU9M0QidGVzdF9mPQpvcl9wamFfcnVudGltZSIgKQorICAgICAgICB1dWlkMCwgdXVp
ZDEsIHV1aWQyID0zRCBzdHIodXVpZDQoKSksIHN0cih1dWlkNCgpKSwgc3RyKHV1aWQ0KCkpCisg
ICAgICAgIHdvcmtmbG93WyJzdGVwcyJdWyIwIl1bInV1aWQiXSA9M0QgdXVpZDAKKyAgICAgICAg
d29ya2Zsb3dbInN0ZXBzIl1bIjEiXVsidXVpZCJdID0zRCB1dWlkMQorICAgICAgICB3b3JrZmxv
d1sic3RlcHMiXVsiMiJdWyJ1dWlkIl0gPTNEIHV1aWQyCisgICAgICAgIHdvcmtmbG93X3JlcXVl
c3QsIGhpc3RvcnlfaWQgPTNEIHNlbGYuX3NldHVwX3dvcmtmbG93X3J1biggd29ya2Zsbz0Kdywg
aW5wdXRzX2J5PTNEJ3N0ZXBfaW5kZXgnICkKKyAgICAgICAgd29ya2Zsb3dfcmVxdWVzdFsgInJl
cGxhY2VtZW50X3BhcmFtcyIgXSA9M0QgZHVtcHMoIGRpY3QoIHJlcGxhY2VtPQplPTNEIndhcyBy
ZXBsYWNlZCIgKSApCisKKyAgICAgICAgcGphX21hcCA9M0QgeworICAgICAgICAgICAgIlJlbmFt
ZURhdGFzZXRBY3Rpb25vdXRfZmlsZTEiOiBkaWN0KAorICAgICAgICAgICAgICAgIGFjdGlvbl90
eXBlPTNEIlJlbmFtZURhdGFzZXRBY3Rpb24iLAorICAgICAgICAgICAgICAgIG91dHB1dF9uYW1l
PTNEIm91dF9maWxlMSIsCisgICAgICAgICAgICAgICAgYWN0aW9uX2FyZ3VtZW50cz0zRGRpY3Qo
IG5ld25hbWU9M0QiZm9vICR7cmVwbGFjZW1lfSIgKSwKKyAgICAgICAgICAgICkKKyAgICAgICAg
fQorICAgICAgICB3b3JrZmxvd19yZXF1ZXN0WyAicGFyYW1ldGVycyIgXSA9M0QgZHVtcHMoewor
ICAgICAgICAgICAgdXVpZDI6IHsgIl9fUE9TVF9KT0JfQUNUSU9OU19fIjogcGphX21hcCB9Cisg
ICAgICAgIH0pCisKKyAgICAgICAgcnVuX3dvcmtmbG93X3Jlc3BvbnNlID0zRCBzZWxmLl9wb3N0
KCAid29ya2Zsb3dzIiwgZGF0YT0zRHdvcmtmbG93PQpfcmVxdWVzdCApCisgICAgICAgIHNlbGYu
X2Fzc2VydF9zdGF0dXNfY29kZV9pcyggcnVuX3dvcmtmbG93X3Jlc3BvbnNlLCAyMDAgKQorICAg
ICAgICBjb250ZW50ID0zRCBzZWxmLmRhdGFzZXRfcG9wdWxhdG9yLmdldF9oaXN0b3J5X2RhdGFz
ZXRfZGV0YWlscyggaGk9CnN0b3J5X2lkLCB3YWl0PTNEVHJ1ZSwgYXNzZXJ0X29rPTNEVHJ1ZSAp
CisgICAgICAgIGFzc2VydCBjb250ZW50WyAibmFtZSIgXSA9M0Q9M0QgImZvbyB3YXMgcmVwbGFj
ZWQiLCBjb250ZW50WyAibmFtZT0KIiBdCisKKyAgICBAc2tpcF93aXRob3V0X3Rvb2woICJjYXQx
IiApCisgICAgZGVmIHRlc3RfcnVuX3dpdGhfZGVsYXllZF9ydW50aW1lX3BqYSggc2VsZiApOgor
ICAgICAgICB3b3JrZmxvd19pZCA9M0Qgc2VsZi5fdXBsb2FkX3lhbWxfd29ya2Zsb3coIiIiCist
IGxhYmVsOiB0ZXN0X2lucHV0CisgIHR5cGU6IGlucHV0CistIGxhYmVsOiBmaXJzdF9jYXQKKyAg
dG9vbF9pZDogY2F0MQorICBzdGF0ZToKKyAgICBpbnB1dDE6CisgICAgICAkbGluazogdGVzdF9p
bnB1dAorLSBsYWJlbDogdGhlX3BhdXNlCisgIHR5cGU6IHBhdXNlCisgIGNvbm5lY3Q6CisgICAg
aW5wdXQ6CisgICAgLSBmaXJzdF9jYXQjb3V0X2ZpbGUxCistIGxhYmVsOiBzZWNvbmRfY2F0Cisg
IHRvb2xfaWQ6IGNhdDEKKyAgc3RhdGU6CisgICAgaW5wdXQxOgorICAgICAgJGxpbms6IHRoZV9w
YXVzZQorIiIiKQorICAgICAgICBkb3dubG9hZGVkX3dvcmtmbG93ID0zRCBzZWxmLl9kb3dubG9h
ZF93b3JrZmxvdyggd29ya2Zsb3dfaWQgKQorICAgICAgICBwcmludCBkb3dubG9hZGVkX3dvcmtm
bG93CisgICAgICAgIHV1aWRfZGljdCA9M0QgZGljdCggbWFwKCBsYW1iZGEgKGluZGV4LCBzdGVw
KTogKCBpbnQoIGluZGV4ICksIHN0ZT0KcFsidXVpZCJdICksIGRvd25sb2FkZWRfd29ya2Zsb3db
InN0ZXBzIl0uaXRlcml0ZW1zKCkgKSApCisgICAgICAgIGhpc3RvcnlfaWQgPTNEIHNlbGYuZGF0
YXNldF9wb3B1bGF0b3IubmV3X2hpc3RvcnkoKQorICAgICAgICBoZGEgPTNEIHNlbGYuZGF0YXNl
dF9wb3B1bGF0b3IubmV3X2RhdGFzZXQoIGhpc3RvcnlfaWQsIGNvbnRlbnQ9M0Q9CiIxIDIgMyIg
KQorICAgICAgICBzZWxmLmRhdGFzZXRfcG9wdWxhdG9yLndhaXRfZm9yX2hpc3RvcnkoIGhpc3Rv
cnlfaWQgKQorICAgICAgICBpbnB1dHMgPTNEIHsKKyAgICAgICAgICAgICcwJzogc2VsZi5fZHNf
ZW50cnkoIGhkYSApLAorICAgICAgICB9CisgICAgICAgIHByaW50IGlucHV0cworICAgICAgICB1
dWlkMiA9M0QgdXVpZF9kaWN0WyAzIF0KKyAgICAgICAgd29ya2Zsb3dfcmVxdWVzdCA9M0Qge30K
KyAgICAgICAgd29ya2Zsb3dfcmVxdWVzdFsgInJlcGxhY2VtZW50X3BhcmFtcyIgXSA9M0QgZHVt
cHMoIGRpY3QoIHJlcGxhY2VtPQplPTNEIndhcyByZXBsYWNlZCIgKSApCisgICAgICAgIHBqYV9t
YXAgPTNEIHsKKyAgICAgICAgICAgICJSZW5hbWVEYXRhc2V0QWN0aW9ub3V0X2ZpbGUxIjogZGlj
dCgKKyAgICAgICAgICAgICAgICBhY3Rpb25fdHlwZT0zRCJSZW5hbWVEYXRhc2V0QWN0aW9uIiwK
KyAgICAgICAgICAgICAgICBvdXRwdXRfbmFtZT0zRCJvdXRfZmlsZTEiLAorICAgICAgICAgICAg
ICAgIGFjdGlvbl9hcmd1bWVudHM9M0RkaWN0KCBuZXduYW1lPTNEImZvbyAke3JlcGxhY2VtZX0i
ICksCisgICAgICAgICAgICApCisgICAgICAgIH0KKyAgICAgICAgd29ya2Zsb3dfcmVxdWVzdFsg
InBhcmFtZXRlcnMiIF0gPTNEIGR1bXBzKHsKKyAgICAgICAgICAgIHV1aWQyOiB7ICJfX1BPU1Rf
Sk9CX0FDVElPTlNfXyI6IHBqYV9tYXAgfQorICAgICAgICB9KQorICAgICAgICBpbnZvY2F0aW9u
X2lkID0zRCBzZWxmLl9faW52b2tlX3dvcmtmbG93KCBoaXN0b3J5X2lkLCB3b3JrZmxvd19pZCw9
CiBpbnB1dHM9M0RpbnB1dHMsIHJlcXVlc3Q9M0R3b3JrZmxvd19yZXF1ZXN0ICkKKworICAgICAg
ICB0aW1lLnNsZWVwKCAyICkKKyAgICAgICAgc2VsZi5kYXRhc2V0X3BvcHVsYXRvci53YWl0X2Zv
cl9oaXN0b3J5KCBoaXN0b3J5X2lkICkKKyAgICAgICAgc2VsZi5fX3Jldmlld19wYXVzZWRfc3Rl
cHMoIHdvcmtmbG93X2lkLCBpbnZvY2F0aW9uX2lkLCBvcmRlcl9pbmRlPQp4PTNEMiwgYWN0aW9u
PTNEVHJ1ZSApCisKKyAgICAgICAgc2VsZi5fd2FpdF9mb3Jfd29ya2Zsb3coIHdvcmtmbG93X2lk
LCBpbnZvY2F0aW9uX2lkLCBoaXN0b3J5X2lkICkKKyAgICAgICAgdGltZS5zbGVlcCggMSApCisg
ICAgICAgIGNvbnRlbnQgPTNEIHNlbGYuZGF0YXNldF9wb3B1bGF0b3IuZ2V0X2hpc3RvcnlfZGF0
YXNldF9kZXRhaWxzKCBoaT0Kc3RvcnlfaWQgKQorICAgICAgICBhc3NlcnQgY29udGVudFsgIm5h
bWUiIF0gPTNEPTNEICJmb28gd2FzIHJlcGxhY2VkIiwgY29udGVudFsgIm5hbWU9CiIgXQorCiAg
ICAgQHNraXBfd2l0aG91dF90b29sKCAicmFuZG9tX2xpbmVzMSIgKQogICAgIGRlZiB0ZXN0X3J1
bl9yZXBsYWNlX3BhcmFtc19ieV90b29sKCBzZWxmICk6CiAgICAgICAgIHdvcmtmbG93X3JlcXVl
c3QsIGhpc3RvcnlfaWQgPTNEIHNlbGYuX3NldHVwX3JhbmRvbV94Ml93b3JrZmxvdyggIj0KdGVz
dF9mb3JfcmVwbGFjZV90b29sX3BhcmFtcyIgKQpAQCAtOTMyLDE1ICsxMDE4LDEzIEBACiAgICAg
ICAgIHNlbGYuX2Fzc2VydF9zdGF0dXNfY29kZV9pcyggaGRhX2luZm9fcmVzcG9uc2UsIDIwMCAp
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCBoZGFfaW5mb19yZXNwb25zZS5qc29uKClbICJt
ZXRhZGF0YV9kYXRhX2xpbmVzIj0KIF0sIGxpbmVzICkKPTIwCi0gICAgZGVmIF9faW52b2tlX3dv
cmtmbG93KCBzZWxmLCBoaXN0b3J5X2lkLCB3b3JrZmxvd19pZCwgaW5wdXRzPTNEe30sIGFzcz0K
ZXJ0X29rPTNEVHJ1ZSApOgotICAgICAgICB3b3JrZmxvd19yZXF1ZXN0ID0zRCBkaWN0KAotICAg
ICAgICAgICAgaGlzdG9yeT0zRCJoaXN0X2lkPTNEJXMiICUgaGlzdG9yeV9pZCwKLSAgICAgICAg
KQotICAgICAgICB3b3JrZmxvd19yZXF1ZXN0WyAiaW5wdXRzIiBdID0zRCBkdW1wcyggaW5wdXRz
ICkKLSAgICAgICAgd29ya2Zsb3dfcmVxdWVzdFsgImlucHV0c19ieSIgXSA9M0QgJ3N0ZXBfaW5k
ZXgnCisgICAgZGVmIF9faW52b2tlX3dvcmtmbG93KCBzZWxmLCBoaXN0b3J5X2lkLCB3b3JrZmxv
d19pZCwgaW5wdXRzPTNEe30sIHJlcT0KdWVzdD0zRHt9LCBhc3NlcnRfb2s9M0RUcnVlICk6Cisg
ICAgICAgIHJlcXVlc3RbImhpc3RvcnkiXSA9M0QgImhpc3RfaWQ9M0QlcyIgJSBoaXN0b3J5X2lk
LAorICAgICAgICBpZiBpbnB1dHM6CisgICAgICAgICAgICByZXF1ZXN0WyAiaW5wdXRzIiBdID0z
RCBkdW1wcyggaW5wdXRzICkKKyAgICAgICAgICAgIHJlcXVlc3RbICJpbnB1dHNfYnkiIF0gPTNE
ICdzdGVwX2luZGV4JwogICAgICAgICB1cmwgPTNEICJ3b3JrZmxvd3MvJXMvdXNhZ2UiICUgKCB3
b3JrZmxvd19pZCApCi0KLSAgICAgICAgaW52b2NhdGlvbl9yZXNwb25zZSA9M0Qgc2VsZi5fcG9z
dCggdXJsLCBkYXRhPTNEd29ya2Zsb3dfcmVxdWVzdCApCisgICAgICAgIGludm9jYXRpb25fcmVz
cG9uc2UgPTNEIHNlbGYuX3Bvc3QoIHVybCwgZGF0YT0zRHJlcXVlc3QgKQogICAgICAgICBpZiBh
c3NlcnRfb2s6CiAgICAgICAgICAgICBzZWxmLl9hc3NlcnRfc3RhdHVzX2NvZGVfaXMoIGludm9j
YXRpb25fcmVzcG9uc2UsIDIwMCApCiAgICAgICAgICAgICBpbnZvY2F0aW9uX2lkID0zRCBpbnZv
Y2F0aW9uX3Jlc3BvbnNlLmpzb24oKVsgImlkIiBdCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dh
bGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzRiZGU3MGM2NzdhOS8KQ2hhbmdlc2V0OiAgIDRi
ZGU3MGM2NzdhOQpVc2VyOiAgICAgICAgY2FybGZlYmVyaGFyZApEYXRlOiAgICAgICAgMjAxNS0w
MS0wNiAyMDowMTozNCswMDowMApTdW1tYXJ5OiAgICAgU3BsaXQgb3V0IE93bmFibGVNb2RlbElu
dGVyZmFjZSAoSERBcyBhdCB0aGUgbGVhc3QgbWF5IG5lZWQgdGg9CmlzKTsgQ2xlYW4tdXA7IENh
dGNoaW5nIHVwIG9uIGRvY3VtZW50YXRpb24KQWZmZWN0ZWQgIzogIDE3IGZpbGVzCgpkaWZmIC1y
IDVkMGZjYTU5MTM5NGQ3ZTdhYWFiYWRmY2RlZDlmODM3ZmQ0MzZlZDIgLXIgNGJkZTcwYzY3N2E5
MmRkYTcyMTJlY2M9CjRjZDllYTljNGQzZWM2OTUyIGxpYi9nYWxheHkvbWFuYWdlcnMvYmFzZS5w
eQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL2Jhc2UucHkKKysrIGIvbGliL2dhbGF4eS9tYW5h
Z2Vycy9iYXNlLnB5CkBAIC0xMjAsMjIgKzEyMCwyNiBAQAo9MjAKICMgPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECiBjbGFz
cyBNb2RlbE1hbmFnZXIoIG9iamVjdCApOgorICAgICIiIgorICAgIEJhc2UgY2xhc3MgZm9yIGFs
bCBtb2RlbC9yZXNvdXJjZSBtYW5hZ2Vycy4KKworICAgIFByb3ZpZGVzIGNvbW1vbiBxdWVyaWVz
IGFuZCBDUlVEIG9wZXJhdGlvbnMgYXMgYSAoaG9wZWZ1bGx5KSBsaWdodCBsYXk9CmVyCisgICAg
b3ZlciB0aGUgT1JNLgorICAgICIiIgogICAgIG1vZGVsX2NsYXNzID0zRCBvYmplY3QKICAgICBk
ZWZhdWx0X29yZGVyX2J5ID0zRCBOb25lCiAgICAgZm9yZWlnbl9rZXlfbmFtZSA9M0QgTm9uZQo9
MjAKICAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgotICAgICAgICBhc3NlcnQgaXNpbnN0
YW5jZSggc2VsZi5tb2RlbF9jbGFzcywgb2JqZWN0ICksICgKLSAgICAgICAgICAgICJtb2RlbCBj
bGFzcyBtdXN0IGJlIHNldCBmb3IgJXMiICUoIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fICkgKQot
ICAgICAgICBzZWxmLm1vZGVsX2NsYXNzX25hbWUgPTNEIHNlbGYubW9kZWxfY2xhc3MuX19jbGFz
c19fLl9fbmFtZV9fCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKCBzZWxmLmRlZmF1bHRfb3Jk
ZXJfYnksIHR1cGxlICksICgKLSAgICAgICAgICAgICJkZWZhdWx0X29yZGVyX2J5IGZvciAlcyBt
dXN0IGJlIGEgdHVwbGUiICUoIHNlbGYuX19jbGFzc19fLl9fPQpuYW1lX18gKSApCi0KKyAgICAg
ICAgIiIiCisgICAgICAgICIiIgogICAgICAgICBzZWxmLmFwcCA9M0QgYXBwCj0yMAogICAgICNO
T1RFOiBhdCB0aGlzIGxheWVyLCBhbGwgaWRzIGFyZSBleHBlY3RlZCB0byBiZSBkZWNvZGVkIGFu
ZCBpbiBpbnQgZm89CnJtCiAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0tLS0gZ2V0L3JlYWQvcXVlcnkK
ICAgICBkZWYgcXVlcnkoIHNlbGYsIHRyYW5zLCBlYWdlcmxvYWRzPTNEVHJ1ZSwgZmlsdGVycz0z
RE5vbmUsIG9yZGVyX2J5PTNEPQpOb25lLCBsaW1pdD0zRE5vbmUsIG9mZnNldD0zRE5vbmUsICoq
a3dhcmdzICk6CisgICAgICAgICIiIgorICAgICAgICAiIiIKICAgICAgICAgI3ByaW50ICdxdWVy
eTonLCBlYWdlcmxvYWRzLCBmaWx0ZXJzLCBvcmRlcl9ieSwgbGltaXQsIG9mZnNldCwga3dhPQpy
Z3MKICAgICAgICAgcXVlcnkgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHNlbGYubW9kZWxf
Y2xhc3MgKQo9MjAKQEAgLTE0OSw2ICsxNTMsOCBAQAogICAgICAgICByZXR1cm4gcXVlcnkKPTIw
CiAgICAgZGVmIF9hcHBseV9maWx0ZXJzKCBzZWxmLCBxdWVyeSwgZmlsdGVycyApOgorICAgICAg
ICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgIGlmIGZpbHRlcnMgaXMgTm9uZToKICAgICAgICAg
ICAgIHJldHVybiBxdWVyeQo9MjAKQEAgLTE2MCw2ICsxNjYsOCBAQAogICAgICAgICByZXR1cm4g
cXVlcnkKPTIwCiAgICAgZGVmIF9tdW5nZV9maWx0ZXJzKCBzZWxmLCBmaWx0ZXJzQSwgZmlsdGVy
c0IgKToKKyAgICAgICAgIiIiCisgICAgICAgICIiIgogICAgICAgICAjIC4uLiB3aGljaCBzb3Vu
ZHMgbGlrZSBhIGV1cGhhbWlzbSBmb3Igc29tZXRoaW5nCiAgICAgICAgIGZpbmFsX2ZpbHRlcnMg
PTNEIFsgc2VsZi5tb2RlbF9jbGFzcy5pZCA9M0Q9M0QgaWQgXQogICAgICAgICBpZiBmaWx0ZXJz
QSBpcyBOb25lOgpAQCAtMTczLDEwICsxODEsMTQgQEAKICAgICAgICAgcmV0dXJuIGZpbHRlcnNB
ICsgZmlsdGVyc0IKPTIwCiAgICAgZGVmIF9hcHBseV9vcmRlcl9ieV9saW1pdF9vZmZzZXQoIHNl
bGYsIHF1ZXJ5LCBvcmRlcl9ieSwgbGltaXQsIG9mZnNldD0KICk6CisgICAgICAgICIiIgorICAg
ICAgICAiIiIKICAgICAgICAgcXVlcnkgPTNEIHNlbGYuX2FwcGx5X29yZGVyX2J5KCBxdWVyeSwg
b3JkZXJfYnkgKQogICAgICAgICByZXR1cm4gc2VsZi5fYXBwbHlfbGltaXRfb2Zmc2V0KCBxdWVy
eSwgbGltaXQsIG9mZnNldCApCj0yMAogICAgIGRlZiBfYXBwbHlfb3JkZXJfYnkoIHNlbGYsIHF1
ZXJ5LCBvcmRlcl9ieSApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgIGlmIG9y
ZGVyX2J5IGlzIE5vbmU6CiAgICAgICAgICAgICAjVE9ETzogYWxsb3cgbm9uLXR1cGxlIGRlZmF1
bHRfb3JkZXJfYnkKICAgICAgICAgICAgIHJldHVybiBxdWVyeS5vcmRlcl9ieSggKnNlbGYuZGVm
YXVsdF9vcmRlcl9ieSApCkBAIC0xODYsNiArMTk4LDggQEAKICAgICAgICAgcmV0dXJuIHF1ZXJ5
Lm9yZGVyX2J5KCBvcmRlcl9ieSApCj0yMAogICAgIGRlZiBfYXBwbHlfbGltaXRfb2Zmc2V0KCBz
ZWxmLCBxdWVyeSwgbGltaXQsIG9mZnNldCApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAg
ICAgICAgIGlmIGxpbWl0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcXVlcnkgPTNEIHF1ZXJ5
LmxpbWl0KCBsaW1pdCApCiAgICAgICAgIGlmIG9mZnNldCBpcyBub3QgTm9uZToKQEAgLTE5NSw2
ICsyMDksOCBAQAogICAgICMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi49Ci4uLi4uIGNvbW1vbiBxdWVyaWVzCiAjVE9E
TzogbmVlZGVkPwogICAgIGRlZiBvbmUoIHNlbGYsIHRyYW5zLCAqKmt3YXJncyApOgorICAgICAg
ICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJldHVybiBzZWxm
LnF1ZXJ5KCB0cmFucywgKiprd2FyZ3MgKS5vbmUoKQogICAgICAgICAjIHJlLXJhaXNlIGFzIHNl
cmlhbGl6YWJsZSBlcnJvcnMKQEAgLTIwNCwxNyArMjIwLDI1IEBACiAgICAgICAgICAgICByYWlz
ZSBleGNlcHRpb25zLkNvbmZsaWN0KCAnZm91bmQgbW9yZSB0aGFuIG9uZSAnICsgc2VsZi5tb2Rl
bD0KX2NsYXNzLl9fbmFtZV9fICkKPTIwCiAgICAgZGVmIGxpc3QoIHNlbGYsIHRyYW5zLCAqKmt3
YXJncyApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLnF1
ZXJ5KCB0cmFucywgKiprd2FyZ3MgKS5hbGwoKQo9MjAKICAgICBkZWYgYnlfaWQoIHNlbGYsIHRy
YW5zLCBpZCwgKiprd2FyZ3MgKToKKyAgICAgICAgIiIiCisgICAgICAgICIiIgogICAgICAgICBp
ZF9maWx0ZXIgPTNEIHNlbGYubW9kZWxfY2xhc3MuaWQgPTNEPTNEIGlkCiAgICAgICAgIHJldHVy
biBzZWxmLm9uZSggdHJhbnMsIGZpbHRlcnM9M0RpZF9maWx0ZXIsICoqa3dhcmdzICkKPTIwCiAg
ICAgZGVmIF9xdWVyeV9ieV9pZHMoIHNlbGYsIHRyYW5zLCBpZHMsIGZpbHRlcnM9M0ROb25lLCAq
Kmt3YXJncyApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgIGlkc19maWx0ZXIg
PTNEIHNlbGYubW9kZWxfY2xhc3MuaWQuaW5fKCBpZHMgKQogICAgICAgICByZXR1cm4gc2VsZi5x
dWVyeSggdHJhbnMsIGZpbHRlcnM9M0RzZWxmLl9tdW5nZV9maWx0ZXJzKCBpZHNfZmlsdGU9CnIs
IGZpbHRlcnMgKSwgKiprd2FyZ3MgKQo9MjAKICAgICBkZWYgYnlfaWRzKCBzZWxmLCB0cmFucywg
aWRzLCAqKmt3YXJncyApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgIGZvdW5k
ID0zRCBzZWxmLl9xdWVyeV9ieV9pZHMoIHRyYW5zLCBpZHMsICoqa3dhcmdzICkuYWxsKCkKICAg
ICAgICAgI1RPRE86IHRoaXMgZG9lcyBub3Qgb3JkZXIgYnkgdGhlIG9yaWdpbmFsICdpZHMnIGFy
cmF5Cj0yMApAQCAtMjUyLDYgKzI3Niw4IEBACj0yMAogICAgICMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0t
IGNyZWF0ZQogICAgIGRlZiBjcmVhdGUoIHNlbGYsIHRyYW5zLCBmbHVzaD0zRFRydWUsICphcmdz
LCAqKmt3YXJncyApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgIGl0ZW0gPTNE
IHNlbGYubW9kZWxfY2xhc3MoICphcmdzLCAqKmt3YXJncyApCiAgICAgICAgIHRyYW5zLnNhX3Nl
c3Npb24uYWRkKCBpdGVtICkKICAgICAgICAgaWYgZmx1c2g6CkBAIC0yNTksMTAgKzI4NSwxNCBA
QAogICAgICAgICByZXR1cm4gaXRlbQo9MjAKICAgICBkZWYgY29weSggc2VsZiwgdHJhbnMsIGl0
ZW0sICoqa3dhcmdzICk6CisgICAgICAgICIiIgorICAgICAgICAiIiIKICAgICAgICAgcmFpc2Ug
ZXhjZXB0aW9ucy5Ob3RJbXBsZW1lbnRlZCggJ0Fic3RyYWN0IG1ldGhvZCcgKQo9MjAKICAgICAj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tPQotLS0tLSB1cGRhdGUKICAgICBkZWYgdXBkYXRlKCBzZWxmLCB0cmFucywg
aXRlbSwgbmV3X3ZhbHVlcywgZmx1c2g9M0RUcnVlLCAqKmt3YXJncyApOgorICAgICAgICAiIiIK
KyAgICAgICAgIiIiCiAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCBpdGVtICkKICAgICAg
ICAgZm9yIGtleSwgdmFsdWUgaW4gbmV3X3ZhbHVlcy5pdGVtcygpOgogICAgICAgICAgICAgaWYg
aGFzYXR0ciggaXRlbSwga2V5ICk6CkBAIC0yNzIsMTEgKzMwMiwxNSBAQAogICAgICAgICByZXR1
cm4gaXRlbQo9MjAKICAgICBkZWYgYXNzb2NpYXRlKCBzZWxmLCB0cmFucywgYXNzb2NpYXRlX3dp
dGgsIGl0ZW0sIGZvcmVpZ25fa2V5X25hbWU9M0ROPQpvbmUgKToKKyAgICAgICAgIiIiCisgICAg
ICAgICIiIgogICAgICAgICBmb3JlaWduX2tleV9uYW1lID0zRCBmb3JlaWduX2tleV9uYW1lIG9y
IHNlbGYuZm9yZWlnbl9rZXlfbmFtZQogICAgICAgICBzZXRhdHRyKCBhc3NvY2lhdGVfd2l0aCwg
Zm9yZWlnbl9rZXlfbmFtZSwgaXRlbSApCiAgICAgICAgIHJldHVybiBpdGVtCj0yMAogICAgIGRl
ZiBxdWVyeV9hc3NvY2lhdGVkKCBzZWxmLCB0cmFucywgYXNzb2NpYXRlZF9tb2RlbF9jbGFzcywg
aXRlbSwgZm9yZWk9CmduX2tleV9uYW1lPTNETm9uZSApOgorICAgICAgICAiIiIKKyAgICAgICAg
IiIiCiAgICAgICAgIGZvcmVpZ25fa2V5X25hbWUgPTNEIGZvcmVpZ25fa2V5X25hbWUgb3Igc2Vs
Zi5mb3JlaWduX2tleV9uYW1lCiAgICAgICAgIGZvcmVpZ25fa2V5ID0zRCBnZXRhdHRyKCBhc3Nv
Y2lhdGVkX21vZGVsX2NsYXNzLCBmb3JlaWduX2tleV9uYW1lICkKICAgICAgICAgcmV0dXJuIHRy
YW5zLnNhX3Nlc3Npb24ucXVlcnkoIGFzc29jaWF0ZWRfbW9kZWxfY2xhc3MgKS5maWx0ZXIoIGZv
PQpyZWlnbl9rZXkgPTNEPTNEIGl0ZW0gKQpAQCAtMjg5LDkgKzMyMywxOCBAQAo9MjAKICMgPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNE
PTNEPTNECiBjbGFzcyBEZWxldGFibGVNb2RlbEludGVyZmFjZSggb2JqZWN0ICk6CisgICAgIiIi
CisgICAgQSBtaXhpbi9pbnRlcmZhY2UgZm9yIGEgbW9kZWwgdGhhdCBpcyBkZWxldGFibGUgKGku
ZS4gaGFzIGEgJ2RlbGV0ZWQnID0KYXR0cikuCisKKyAgICBNYW55IHJlc291cmNlcyBpbiBHYWxh
eHkgY2FuIGJlIG1hcmtlZCBhcyBkZWxldGVkIC0gbWVhbmluZyAoaW4gbW9zdCBjPQphc2VzKQor
ICAgIHRoYXQgdGhleSBhcmUgbm8gbG9uZ2VyIG5lZWRlZCwgc2hvdWxkIG5vdCBiZSBkaXNwbGF5
ZWQsIG9yIG1heSBiZSBhY3Q9CnVhbGx5CisgICAgcmVtb3ZlZCBieSBhbiBhZG1pbi9zY3JpcHQu
CisgICAgIiIiCj0yMAogICAgIGRlZiBkZWxldGUoIHNlbGYsIHRyYW5zLCBpdGVtLCBmbHVzaD0z
RFRydWUsICoqa3dhcmdzICk6Ci0gICAgICAgICMgb2Z0ZW4gb25seSBhIG1hdHRlciBvZiAnbWFy
a2luZyBhcyBkZWxldGVkJworICAgICAgICAiIiIKKyAgICAgICAgTWFyayBhcyBkZWxldGVkIGFu
ZCByZXR1cm4uCisgICAgICAgICIiIgogICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmFkZCggaXRl
bSApCiAgICAgICAgIGl0ZW0uZGVsZXRlZCA9M0QgVHJ1ZQogICAgICAgICBpZiBmbHVzaDoKQEAg
LTI5OSw2ICszNDIsOSBAQAogICAgICAgICByZXR1cm4gaXRlbQo9MjAKICAgICBkZWYgdW5kZWxl
dGUoIHNlbGYsIHRyYW5zLCBpdGVtLCBmbHVzaD0zRFRydWUsICoqa3dhcmdzICk6CisgICAgICAg
ICIiIgorICAgICAgICBNYXJrIGFzIG5vdCBkZWxldGVkIGFuZCByZXR1cm4uCisgICAgICAgICIi
IgogICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmFkZCggaXRlbSApCiAgICAgICAgIGl0ZW0uZGVs
ZXRlZCA9M0QgRmFsc2UKICAgICAgICAgaWYgZmx1c2g6CkBAIC0zMDgsMTUgKzM1NCwxOCBAQAo9
MjAKICMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0KPTNEPTNEPTNECiBjbGFzcyBQdXJnYWJsZU1vZGVsSW50ZXJmYWNlKCBEZWxldGFibGVN
b2RlbEludGVyZmFjZSApOgotCi0gICAgZGVmIGVycm9yX3VubGVzc19kYXRhc2V0X3B1cmdlX2Fs
bG93ZWQoIHNlbGYsIHRyYW5zLCBpdGVtLCBtc2c9M0ROb25lID0KKToKLSAgICAgICAgaWYgbm90
IHRyYW5zLmFwcC5jb25maWcuYWxsb3dfdXNlcl9kYXRhc2V0X3B1cmdlOgotICAgICAgICAgICAg
bXNnID0zRCBtc2cgb3IgJ1RoaXMgaW5zdGFuY2UgZG9lcyBub3QgYWxsb3cgdXNlciBkYXRhc2V0
IHB1cmc9CmluZycKLSAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuQ29uZmlnRG9lc05vdEFs
bG93RXhjZXB0aW9uKCBtc2cgKQotICAgICAgICAgICAgI3JhaXNlIGV4Y2VwdGlvbnMuQ29uZmln
RG9lc05vdEFsbG93RXhjZXB0aW9uKCBtc2csIGl0ZW09M0RpdGU9Cm0gKQotICAgICAgICByZXR1
cm4gaXRlbQorICAgICIiIgorICAgIEEgbWFuYWdlciBpbnRlcmZhY2UvbWl4aW4gZm9yIGEgcmVz
b3VyY2UgdGhhdCBhbGxvd3MgZGVsZXRpbmcgYW5kIHB1cmc9CmluZyB3aGVyZQorICAgIHB1cmdp
bmcgaXMgb2Z0ZW4gcmVtb3ZhbCBvZiBzb21lIGFkZGl0aW9uYWwsIG5vbi1kYiByZXNvdXJjZSAo
ZS5nLiBhIGQ9CmF0YXNldCdzCisgICAgZmlsZSkuCisgICAgIiIiCj0yMAogICAgIGRlZiBwdXJn
ZSggc2VsZiwgdHJhbnMsIGl0ZW0sIGZsdXNoPTNEVHJ1ZSwgKiprd2FyZ3MgKToKKyAgICAgICAg
IiIiCisgICAgICAgIE1hcmsgYXMgcHVyZ2VkIGFuZCByZXR1cm4uCisKKyAgICAgICAgT3ZlcnJp
ZGUgdGhpcyBpbiBzdWJjbGFzc2VzIHRvIGRvIHRoZSBhZGRpdGlvbmFsIHJlc291cmNlIHJlbW92
YWwuCisgICAgICAgICIiIgogICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmFkZCggaXRlbSApCiAg
ICAgICAgIGl0ZW0ucHVyZ2VkID0zRCBUcnVlCiAgICAgICAgIGlmIGZsdXNoOgpAQCAtMzI2LDMy
ICszNzUsMTIyIEBACj0yMAogIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0K
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKIGNsYXNzIEFjY2Vzc2libGVNb2RlbEludGVy
ZmFjZSggb2JqZWN0ICk6CisgICAgIiIiCisgICAgQSBzZWN1cml0eSBpbnRlcmZhY2UgdG8gY2hl
Y2sgaWYgYSBVc2VyIGNhbiByZWFkL3ZpZXcgYW4gaXRlbSdzLgorCisgICAgVGhpcyBjYW4gYWxz
byBiZSB0aG91Z2h0IG9mIGFzICdyZWFkIGJ1dCBub3QgbW9kaWZ5JyBwcml2aWxlZ2VzLgorICAg
ICIiIgo9MjAKICAgICAjIGRvbid0IHdhbnQgdG8gb3ZlcnJpZGUgYnlfaWQgc2luY2UgY29uc3Vt
ZXJzIHdpbGwgYWxzbyB3YW50IHRvIGZldGNoPQogdy9vIGFueSBzZWN1cml0eSBjaGVja3MKKyAg
ICBkZWYgaXNfYWNjZXNzaWJsZSggc2VsZiwgdHJhbnMsIGl0ZW0sIHVzZXIgKToKKyAgICAgICAg
IiIiCisgICAgICAgIFJldHVybiBUcnVlIGlmIHRoZSBpdGVtIGFjY2Vzc2libGUgdG8gdXNlci4K
KyAgICAgICAgIiIiCisgICAgICAgICMgb3ZlcnJpZGUgaGVyZQorICAgICAgICByYWlzZSBleGNl
cHRpb25zLk5vdEltcGxlbWVudGVkKCAiQWJzdHJhY3QgSW50ZXJmYWNlIE1ldGhvZCIgKQorICAg
ICAgICAjT1I/IHJldHVybiBGYWxzZQo9MjAKICAgICBkZWYgYWNjZXNzaWJsZV9ieV9pZCggc2Vs
ZiwgdHJhbnMsIGlkLCB1c2VyLCAqKmt3YXJncyApOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0
dXJuIHRoZSBpdGVtIHdpdGggdGhlIGdpdmVuIGlkIGlmIGl0J3MgYWNjZXNzaWJsZSB0byB1c2Vy
LAorICAgICAgICBvdGhlcndpc2UgcmFpc2UgYW4gZXJyb3IuCisKKyAgICAgICAgOnJhaXNlcyBl
eGNlcHRpb25zLkl0ZW1BY2Nlc3NpYmlsaXR5RXhjZXB0aW9uOgorICAgICAgICAiIiIKICAgICAg
ICAgaXRlbSA9M0QgTW9kZWxNYW5hZ2VyLmJ5X2lkKCBzZWxmLCB0cmFucywgaWQgKQogICAgICAg
ICByZXR1cm4gc2VsZi5lcnJvcl91bmxlc3NfYWNjZXNzaWJsZSggdHJhbnMsIGl0ZW0sIHVzZXIg
KQo9MjAKICAgICBkZWYgZXJyb3JfdW5sZXNzX2FjY2Vzc2libGUoIHNlbGYsIHRyYW5zLCBpdGVt
LCB1c2VyICk6CisgICAgICAgICIiIgorICAgICAgICBSYWlzZSBhbiBlcnJvciBpZiB0aGUgaXRl
bSBpcyBOT1QgYWNjZXNzaWJsZSB0byB1c2VyLCBvdGhlcndpc2UgcmU9CnR1cm4gdGhlIGl0ZW0u
CisKKyAgICAgICAgOnJhaXNlcyBleGNlcHRpb25zLkl0ZW1BY2Nlc3NpYmlsaXR5RXhjZXB0aW9u
OgorICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi5pc19hY2Nlc3NpYmxlKCB0cmFucywgaXRl
bSwgdXNlciApOgogICAgICAgICAgICAgcmV0dXJuIGl0ZW0KLSAgICAgICAgcmFpc2UgZXhjZXB0
aW9ucy5JdGVtQWNjZXNzaWJpbGl0eUV4Y2VwdGlvbiggIiVzIGlzIG5vdCBhY2Nlc3NpYmxlPQog
YnkgdXNlciIgJSBzZWxmLm1vZGVsX2NsYXNzX25hbWUgKQorICAgICAgICByYWlzZSBleGNlcHRp
b25zLkl0ZW1BY2Nlc3NpYmlsaXR5RXhjZXB0aW9uKCAiJXMgaXMgbm90IGFjY2Vzc2libGU9CiBi
eSB1c2VyIiAlICggc2VsZi5tb2RlbF9jbGFzcy5fX25hbWVfXyApICkKPTIwCi0gICAgZGVmIGlz
X2FjY2Vzc2libGUoIHNlbGYsIHRyYW5zLCBpdGVtLCB1c2VyICk6Ci0gICAgICAgIHJhaXNlIGV4
Y2VwdGlvbnMuTm90SW1wbGVtZW50ZWQoICJBYnN0cmFjdCBJbnRlcmZhY2UgTWV0aG9kIiApCi0g
ICAgICAgICNPUj8gcmV0dXJuIEZhbHNlCisgICAgI1RPRE86Pz8gYXJlIHRoZXNlIGV2ZW4gdXNl
ZnVsPworICAgIGRlZiBsaXN0X2FjY2Vzc2libGUoIHNlbGYsIHRyYW5zLCB1c2VyLCAqKmt3YXJn
cyApOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIGEgbGlzdCBvZiBpdGVtcyBhY2Nlc3Np
YmxlIHRvIHRoZSB1c2VyLCByYWlzaW5nIGFuIGVycm9yIGlmPQogQU5ZCisgICAgICAgIGFyZSBp
bmFjY2Vzc2libGUuCj0yMAotICAgIGRlZiBsaXN0X2FjY2Vzc2libGUoIHNlbGYsIHRyYW5zLCB1
c2VyLCAqKmt3YXJncyApOgorICAgICAgICA6cmFpc2VzIGV4Y2VwdGlvbnMuSXRlbUFjY2Vzc2li
aWxpdHlFeGNlcHRpb246CisgICAgICAgICIiIgorICAgICAgICAjTk9URTogdGhpcyB3aWxsIGJl
IGEgbGFyZ2UsIGluZWZmaWNpZW50IGxpc3QgaWYgZmlsdGVycyBhcmUgcGFzc2U9CmQgaW4ga3dh
cmdzCiAgICAgICAgIGl0ZW1zID0zRCBNb2RlbE1hbmFnZXIubGlzdCggc2VsZiwgdHJhbnMsICoq
a3dhcmdzICkKICAgICAgICAgcmV0dXJuIFsgc2VsZi5lcnJvcl91bmxlc3NfYWNjZXNzaWJsZSgg
dHJhbnMsIGl0ZW0sIHVzZXIgKSBmb3IgaXRlPQptIGluIGl0ZW1zIF0KPTIwCiAgICAgZGVmIGZp
bHRlcl9hY2Nlc3NpYmxlKCBzZWxmLCB0cmFucywgdXNlciwgKiprd2FyZ3MgKToKKyAgICAgICAg
IiIiCisgICAgICAgIFJldHVybiBhIGxpc3Qgb2YgaXRlbXMgYWNjZXNzaWJsZSB0byB0aGUgdXNl
ci4KKyAgICAgICAgIiIiCisgICAgICAgICNOT1RFOiB0aGlzIHdpbGwgYmUgYSBsYXJnZSwgaW5l
ZmZpY2llbnQgbGlzdCBpZiBmaWx0ZXJzIGFyZSBwYXNzZT0KZCBpbiBrd2FyZ3MKICAgICAgICAg
aXRlbXMgPTNEIE1vZGVsTWFuYWdlci5saXN0KCBzZWxmLCB0cmFucywgKiprd2FyZ3MgKQogICAg
ICAgICByZXR1cm4gZmlsdGVyKCBsYW1iZGEgaXRlbTogc2VsZi5pc19hY2Nlc3NpYmxlKCB0cmFu
cywgaXRlbSwgdXNlciA9CiksIGl0ZW1zICkKPTIwCj0yMAogIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKK2NsYXNzIE93
bmFibGVNb2RlbEludGVyZmFjZSggb2JqZWN0ICk6CisgICAgIiIiCisgICAgQSBzZWN1cml0eSBp
bnRlcmZhY2UgdG8gY2hlY2sgaWYgYSBVc2VyIGlzIGFuIGl0ZW0ncyBvd25lci4KKworICAgIFNv
bWUgcmVzb3VyY2VzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIFVzZXIgdGhhdCBjcmVhdGVkIG9y
IGltcG9ydGVkIHQ9CmhlbQorICAgIGFuZCB0aGVzZSBVc2VycyBjYW4gYmUgY29uc2lkZXJlZCB0
aGUgbW9kZWxzJyBvd25lci4KKworICAgIFRoaXMgY2FuIGFsc28gYmUgdGhvdWdodCBvZiBhcyB3
cml0ZS9lZGl0IHByaXZpbGVnZXMuCisgICAgIiIiCisKKyAgICBkZWYgaXNfb3duZXIoIHNlbGYs
IHRyYW5zLCBpdGVtLCB1c2VyICk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gVHJ1ZSBp
ZiB1c2VyIG93bnMgdGhlIGl0ZW0uCisgICAgICAgICIiIgorICAgICAgICAjIG92ZXJyaWRlIGhl
cmUKKyAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5Ob3RJbXBsZW1lbnRlZCggIkFic3RyYWN0IElu
dGVyZmFjZSBNZXRob2QiICkKKyAgICAgICAgI09SPyByZXR1cm4gRmFsc2UKKworICAgIGRlZiBv
d25lZF9ieV9pZCggc2VsZiwgdHJhbnMsIGlkLCB1c2VyLCAqKmt3YXJncyApOgorICAgICAgICAi
IiIKKyAgICAgICAgUmV0dXJuIHRoZSBpdGVtIHdpdGggdGhlIGdpdmVuIGlkIGlmIG93bmVkIGJ5
IHRoZSB1c2VyLAorICAgICAgICBvdGhlcndpc2UgcmFpc2UgYW4gZXJyb3IuCisKKyAgICAgICAg
OnJhaXNlcyBleGNlcHRpb25zLkl0ZW1Pd25lcnNoaXBFeGNlcHRpb246CisgICAgICAgICIiIgor
ICAgICAgICBpdGVtID0zRCBNb2RlbE1hbmFnZXIuYnlfaWQoIHNlbGYsIHRyYW5zLCBpZCApCisg
ICAgICAgIHJldHVybiBzZWxmLmVycm9yX3VubGVzc19vd25lciggdHJhbnMsIGl0ZW0sIHVzZXIg
KQorCisgICAgZGVmIGVycm9yX3VubGVzc19vd25lciggc2VsZiwgdHJhbnMsIGl0ZW0sIHVzZXIg
KToKKyAgICAgICAgIiIiCisgICAgICAgIFJhaXNlIGFuIGVycm9yIGlmIHRoZSBpdGVtIGlzIE5P
VCBvd25lZCBieSB1c2VyLCBvdGhlcndpc2UgcmV0dXJuID0KdGhlIGl0ZW0uCisKKyAgICAgICAg
OnJhaXNlcyBleGNlcHRpb25zLkl0ZW1BY2Nlc3NpYmlsaXR5RXhjZXB0aW9uOgorICAgICAgICAi
IiIKKyAgICAgICAgaWYgc2VsZi5pc19vd25lciggdHJhbnMsIGl0ZW0sIHVzZXIgKToKKyAgICAg
ICAgICAgIHJldHVybiBpdGVtCisgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuSXRlbU93bmVyc2hp
cEV4Y2VwdGlvbiggIiVzIGlzIG5vdCBvd25lZCBieSB1c2VyIj0KICUgKCBzZWxmLm1vZGVsX2Ns
YXNzLl9fbmFtZV9fICkgKQorCisgICAgI1RPRE86Pz8gYXJlIHRoZXNlIGV2ZW4gdXNlZnVsPyBE
b2Vzbid0IGJ5X3VzZXIgd29yayBoZXJlIG1vc3Qgb2Z0ZW4/CisgICAgZGVmIGxpc3Rfb3duZWQo
IHNlbGYsIHRyYW5zLCB1c2VyLCAqKmt3YXJncyApOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0
dXJuIGEgbGlzdCBvZiBpdGVtcyBvd25lZCBieSB0aGUgdXNlciwgcmFpc2luZyBhbiBlcnJvciBp
ZiBBTlkKKyAgICAgICAgYXJlIG5vdC4KKworICAgICAgICA6cmFpc2VzIGV4Y2VwdGlvbnMuSXRl
bUFjY2Vzc2liaWxpdHlFeGNlcHRpb246CisgICAgICAgICIiIgorICAgICAgICAjTk9URTogdGhp
cyB3aWxsIGJlIGEgbGFyZ2UsIGluZWZmaWNpZW50IGxpc3QgaWYgZmlsdGVycyBhcmUgcGFzc2U9
CmQgaW4ga3dhcmdzCisgICAgICAgIGl0ZW1zID0zRCBNb2RlbE1hbmFnZXIubGlzdCggc2VsZiwg
dHJhbnMsICoqa3dhcmdzICkKKyAgICAgICAgcmV0dXJuIFsgc2VsZi5lcnJvcl91bmxlc3Nfb3du
ZXIoIHRyYW5zLCBpdGVtLCB1c2VyICkgZm9yIGl0ZW0gaW4gPQppdGVtcyBdCisKKyAgICBkZWYg
ZmlsdGVyX293bmVkKCBzZWxmLCB0cmFucywgdXNlciwgKiprd2FyZ3MgKToKKyAgICAgICAgIiIi
CisgICAgICAgIFJldHVybiBhIGxpc3Qgb2YgaXRlbXMgb3duZWQgYnkgdGhlIHVzZXIuCisgICAg
ICAgICIiIgorICAgICAgICBpdGVtcyA9M0QgTW9kZWxNYW5hZ2VyLmxpc3QoIHNlbGYsIHRyYW5z
LCAqKmt3YXJncyApCisgICAgICAgIHJldHVybiBmaWx0ZXIoIGxhbWJkYSBpdGVtOiBzZWxmLmlz
X293bmVkKCB0cmFucywgaXRlbSwgdXNlciApLCBpdD0KZW1zICkKKworCisjID0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRCBT
RVJJQUxJWkVSUy90b19kaWN0LGZyb21fZGljdAogY2xhc3MgTW9kZWxTZXJpYWxpemluZ0Vycm9y
KCBleGNlcHRpb25zLk9iamVjdEF0dHJpYnV0ZUludmFsaWRFeGNlcHRpb24gKToKICAgICAiIiJU
aHJvd24gd2hlbiByZXF1ZXN0IG1vZGVsIHZhbHVlcyBjYW4ndCBiZSBzZXJpYWxpemVkIiIiCiAg
ICAgI1RPRE86IGJldHRlciBhcyA1MDA/CkBAIC0zNjcsMTUgKzUwNiwyNiBAQAo9MjAKICMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tPQotLS0tLQogY2xhc3MgTW9kZWxTZXJpYWxpemVyKCBvYmplY3QgKToKLSAg
ICAjbW9kZWxfbWdyX2NsYXNzID0zRCBOb25lCisgICAgIiIiCisgICAgVHVybnMgbW9kZWxzIGlu
dG8gSlNPTmFibGUgZGljdHMuCj0yMAotICAgICMgcHJpbWFyaWx5IGRlc2lnbmVkIGZvciB0dXJu
aW5nIG1vZGVscyBpbnRvL2Zyb20gSlNPTmFibGUgZGljdHMKLSAgICAjICAgbW9kZWwgICAtLT4g
TW9kZWxTZXJpYWxpemVyIC0tPiBKU09OCi0gICAgIyAgIEpTT04gICAgLS0+IE1vZGVsU2VyaWFs
aXplciAtLT4gbW9kZWwKKyAgICBNYWludGFpbnMgYSBtYXAgb2YgcmVxdWVzdGFibGUga2V5cyBh
bmQgdGhlIENhbGxhYmxlKCkgc2VyaWFsaXplciBmdW5jPQp0aW9ucworICAgIHRoYXQgc2hvdWxk
IGJlIGNhbGxlZCBmb3IgdGhvc2Uga2V5cy4KKyAgICBFLmcuIHsgJ3gnIDogbGFtYmRhIHRyYW5z
LCBpdGVtLCBrZXk6IGl0ZW0ueCwgLi4uIH0KKworICAgIFRvIHNlcmlhbGl6ZSBjYWxsOgorICAg
ICAgICBteV9zZXJpYWxpemVyID0zRCBNeVNlcmlhbGl6ZXIoIGFwcCApCisgICAgICAgIC4uLgor
ICAgICAgICBrZXlzX3RvX3NlcmlhbGl6ZSA9M0QgWyAnaWQnLCAnbmFtZScsICdhdHRyMScsICdh
dHRyMicsIC4uLiBdCisgICAgICAgIGl0ZW1fZGljdCA9M0QgTXlTZXJpYWxpemVyLnNlcmlhbGl6
ZSggdHJhbnMsIG15X2l0ZW0sIGtleXNfdG9fc2VyaT0KYWxpemUgKQorICAgICAgICAjIGlmIGEg
a2V5IHRvIHNlcmlhbGl6ZSBpcyBub3QgbGlzdGVkIGluIHRoZSBTZXJpYWxpemVyLnNlcmlhbGl6
YWI9CmxlX2tleXMgb3Igc2VyaWFsaXplcnMsIGl0IHdpbGwgbm90IGJlIGFkZGVkCisgICAgIiIi
CisKICAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgorICAgICAgICAiIiIKKyAgICAgICAg
U2V0IHVwIHNlcmlhbGl6ZXIgbWFwLCBhbnkgYWRkaXRpb25hbCBzZXJpYWxpemFibGUga2V5cywg
YW5kIHZpZXdzPQogaGVyZS4KKyAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuYXBwID0zRCBhcHAK
LSAgICAgICAgI1RPRE86Ci0gICAgICAgICNzZWxmLm1nciA9M0QgbW9kZWxfbWdyX2NsYXNzKCBh
cHAgKQogICAgICAgID0yMAogICAgICAgICAjIGEgbWFwIG9mIGRpY3Rpb25hcnkga2V5cyB0byB0
aGUgZnVuY3Rpb25zIChvZnRlbiBsYW1iZGFzKSB0aGF0IGM9CnJlYXRlIHRoZSB2YWx1ZXMgZm9y
IHRob3NlIGtleXMKICAgICAgICAgc2VsZi5zZXJpYWxpemVycyA9M0Qge30KQEAgLTM5NSwxNCAr
NTQ1LDIyIEBACj0yMAogICAgICMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi49Ci4uLi4uIHNlcmlhbGl6aW5nCiAgICAg
ZGVmIGFkZF9zZXJpYWxpemVycyggc2VsZiApOgotICAgICAgICAjIHJlZ2lzdGVyIGEgbWFwIG9m
IGF0dHJpYnV0ZSBrZXlzIC0+IGZ1bmN0aW9ucyB0aGF0IHdpbGwgc2VyaWFsaXo9CmUgdGhlIGF0
dHJpYnV0ZQorICAgICAgICAiIiIKKyAgICAgICAgUmVnaXN0ZXIgYSBtYXAgb2YgYXR0cmlidXRl
IGtleXMgLT4gc2VyaWFsaXppbmcgZnVuY3Rpb25zIHRoYXQgd2lsPQpsIHNlcmlhbGl6ZQorICAg
ICAgICB0aGUgYXR0cmlidXRlLgorICAgICAgICAiIiIKICAgICAgICAgIyB0byBiZSBvdmVycmlk
ZGVuIGluIHN1YmNsYXNzZXMKICAgICAgICAgcGFzcwo9MjAKICAgICBkZWYgc2VyaWFsaXplKCBz
ZWxmLCB0cmFucywgaXRlbSwga2V5cyApOgorICAgICAgICAiIiIKKyAgICAgICAgU2VyaWFsaXpl
IHRoZSBtb2RlbCBgaXRlbWAgdG8gYSBkaWN0aW9uYXJ5LgorCisgICAgICAgIEdpdmVuIG1vZGVs
IGBpdGVtYCBhbmQgdGhlIGxpc3QgYGtleXNgLCBjcmVhdGUgYW5kIHJldHVybiBhIGRpY3Rpbz0K
bmFyeQorICAgICAgICBidWlsdCBmcm9tIGVhY2gga2V5IGluIGBrZXlzYCB0aGF0IGFsc28gZXhp
c3RzIGluIGBzZXJpYWxpemVyc2AgYW5kCisgICAgICAgIHZhbHVlcyBvZiBjYWxsaW5nIHRoZSBr
ZXllZC9uYW1lZCBzZXJpYWxpemVycyBvbiBpdGVtLgorICAgICAgICAiIiIKICAgICAgICAgIyBt
YWluIGludGVyZmFjZSBmbiBmb3IgY29udmVydGluZyBhIG1vZGVsIHRvIGEgZGljdAotI1RPRE86
IHRyeS9jYXRjaCBoZXJlPyBhZGQgb3B0aW9uICdmYWlsX2Zhc3QnLydyYWlzZScgdG8gYWxsb3cg
b3B0aW9uYWxseSA9CipjYXRjaGluZyogdGhlIGVycm9yIHdpdGhvdXQgcmFpc2luZyBpdAotIyAg
IChhbmQgdGhlbiByZXR1cm5pbmcgdGhlIGVycm9yIG1lc3NhZ2UgaW4gdGhlIHNlcmlhbGl6ZWQg
ZGF0YSkKICAgICAgICAgcmV0dXJuZWQgPTNEIHt9CiAgICAgICAgIGZvciBrZXkgaW4ga2V5czoK
ICAgICAgICAgICAgICMgY2hlY2sgYm90aCBzZXJpYWxpemVycyBhbmQgc2VyaWFsaXphYmxlIGtl
eXMKQEAgLTQxMywyMSArNTcxLDMzIEBACiAgICAgICAgICAgICAjIGlnbm9yZSBiYWQvdW5yZWcg
a2V5cwogICAgICAgICByZXR1cm4gcmV0dXJuZWQKPTIwCi0gICAgIyAuLi4gY29tbW9uIGRlc2Vy
aWFsaXplcnMgZm9yIHByaW1pdGl2ZXMKICAgICBkZWYgZGVmYXVsdF9zZXJpYWxpemVyKCBzZWxm
LCB0cmFucywgaXRlbSwga2V5ICk6CisgICAgICAgICIiIgorICAgICAgICBTZXJpYWxpemUgdGhl
IGBpdGVtYCdzIGF0dHJpYnV0ZSBuYW1lZCBga2V5YC4KKyAgICAgICAgIiIiCisgICAgICAgICNU
T0RPOj8/IHBvaW50IG9mIGNoYW5nZSBidXQgbm90IHJlYWxseSBuZWNlc3Nhcnk/CiAgICAgICAg
IHJldHVybiBnZXRhdHRyKCBpdGVtLCBrZXkgKQo9MjAKKyAgICAjIC4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4u
LiBzZXJpYWxpemVycyBmb3IgY29tbW9uIGdhbGF4eSBvYmplY3RzCiAgICAgZGVmIHNlcmlhbGl6
ZV9kYXRlKCBzZWxmLCB0cmFucywgaXRlbSwga2V5ICk6CisgICAgICAgICIiIgorICAgICAgICBT
ZXJpYWxpemUgYSBkYXRlIGF0dHJpYnV0ZSBvZiBgaXRlbWAuCisgICAgICAgICIiIgogICAgICAg
ICBkYXRlID0zRCBnZXRhdHRyKCBpdGVtLCBrZXkgKQogICAgICAgICByZXR1cm4gZGF0ZS5pc29m
b3JtYXQoKSBpZiBkYXRlIGlzIG5vdCBOb25lIGVsc2UgTm9uZQo9MjAKLSAgICAjIC4uLi4gY29t
bW9uIHNlcmlhbGl6ZXJzIGZvciBHYWxheHkKICAgICBkZWYgc2VyaWFsaXplX2lkKCBzZWxmLCB0
cmFucywgaXRlbSwga2V5ICk6CisgICAgICAgICIiIgorICAgICAgICBTZXJpYWxpemUgYW4gaWQg
YXR0cmlidXRlIG9mIGBpdGVtYC4KKyAgICAgICAgIiIiCiAgICAgICAgIGlkID0zRCBnZXRhdHRy
KCBpdGVtLCBrZXkgKQogICAgICAgICByZXR1cm4gdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBp
ZCApIGlmIGlkIGlzIG5vdCBOb25lIGVsc2UgTm9uZQo9MjAKICAgICAjVE9ETzogQW5ub3RhdGFi
bGVNaXhpbgogICAgIGRlZiBzZXJpYWxpemVfYW5ub3RhdGlvbiggc2VsZiwgdHJhbnMsIGl0ZW0s
IGtleSApOgorICAgICAgICAiIiIKKyAgICAgICAgR2V0IGFuZCBzZXJpYWxpemUgYW4gYGl0ZW1g
J3MgYW5ub3RhdGlvbi4KKyAgICAgICAgIiIiCiAjVE9ETzogd2hpY2ggaXMgY29ycmVjdCBoZXJl
PwogICAgICAgICAjdXNlciA9M0QgaXRlbS51c2VyCiAgICAgICAgIHVzZXIgPTNEIHRyYW5zLnVz
ZXIKQEAgLTQzNSw0MSArNjA1LDUzIEBACj0yMAogICAgICNUT0RPOiBUYWdnYWJsZU1peGluCiAg
ICAgZGVmIHNlcmlhbGl6ZV90YWdzKCBzZWxmLCB0cmFucywgaXRlbSwga2V5ICk6CisgICAgICAg
ICIiIgorICAgICAgICBHZXQgYW5kIHNlcmlhbGl6ZSBhbiBgaXRlbWAncyB0YWdzLgorICAgICAg
ICAiIiIKICNUT0RPOiB3aG9zZSB0YWdzIGFyZSB0aGVzZT8KICAgICAgICAgcmV0dXJuIFsgdGFn
LnVzZXJfdG5hbWUgKyAoICc6JyArIHRhZy51c2VyX3ZhbHVlIGlmIHRhZy51c2VyX3ZhbHVlPQog
ZWxzZSAnJyApIGZvciB0YWcgaW4gaXRlbS50YWdzIF0KPTIwCiAgICAgIyAuLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLj0K
Li4uLi4gc2VyaWFsaXppbmcgdG8gYSB2aWV3CiAgICAgIyB3aGVyZSBhIHZpZXcgaXMgYSBwcmVk
ZWZpZWQgbGlzdCBvZiBrZXlzIHRvIHNlcmlhbGl6ZQotICAgIGRlZiBzZXJpYWxpemVfdG9fdmll
dyggc2VsZiwgdHJhbnMsIGl0ZW0sIHZpZXc9M0ROb25lLCBrZXlzPTNETm9uZSApOgotI1RPRE86
IGlmIGtleXMgYW5kIHZpZXcgLSBtdW5nZSB2aWV3IGFuZCBrZXlzCi0jICAgIDogaWYga2V5cyBi
dXQgbm8gdmlldyAtIHVzZSBrZXlzCi0jICAgIDogaWYgbm8ga2V5cyBidXQgdmlldyAtIHVzZSB2
aWV3Ci0jICAgIDogaWYgbm8ga2V5cyBhbmQgbm8gdmlldyAtIHVzZSBkZWZhdWx0IHZpZXcKKyAg
ICBkZWYgc2VyaWFsaXplX3RvX3ZpZXcoIHNlbGYsIHRyYW5zLCBpdGVtLCB2aWV3PTNETm9uZSwg
a2V5cz0zRE5vbmUsIGRlPQpmYXVsdF92aWV3PTNETm9uZSApOgorICAgICAgICAiIiIKKyAgICAg
ICAgVXNlIGEgcHJlZGVmaW5lZCBsaXN0IG9mIGtleXMgKHRoZSBzdHJpbmcgYHZpZXdgKSBhbmQg
YW55IGFkZGl0aW9uPQphbCBrZXlzCisgICAgICAgIGxpc3RlZCBpbiBga2V5c2AuCisKKyAgICAg
ICAgVGhlIGNvbWJpbmF0aW9ucyBjYW4gYmU6CisgICAgICAgICAgICBgdmlld2Agb25seTogcmV0
dXJuIHRob3NlIGtleXMgbGlzdGVkIGluIHRoZSBuYW1lZCB2aWV3CisgICAgICAgICAgICBga2V5
c2Agb25seTogcmV0dXJuIHRob3NlIGtleXMgbGlzdGVkCisgICAgICAgICAgICBubyBgdmlld2Ag
b3IgYGtleXNgOiB1c2UgdGhlIGBkZWZhdWx0X3ZpZXdgIGlmIGFueQorICAgICAgICAgICAgYHZp
ZXdgIGFuZCBga2V5c2A6IGNvbWJpbmUgYm90aCBpbnRvIG9uZSBsaXN0IG9mIGtleXMKKyAgICAg
ICAgIiIiCisgICAgICAgIGFsbF9rZXlzID0zRCBbXQogICAgICAgICBrZXlzID0zRCBrZXlzIG9y
IFtdCi0gICAgICAgIGFsbF9rZXlzID0zRCBzZWxmLnZpZXdfdG9fbGlzdCggdmlldyApICsga2V5
cworICAgICAgICAjIGNob3NlIGV4cGxpY2l0IG92ZXIgY29uY2lzZSBoZXJlCisgICAgICAgIGlm
IHZpZXc6CisgICAgICAgICAgICBpZiBrZXlzOgorICAgICAgICAgICAgICAgIGFsbF9rZXlzID0z
RCBzZWxmLl92aWV3X3RvX2tleXMoIHZpZXcgKSArIGtleXMKKyAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgYWxsX2tleXMgPTNEIHNlbGYuX3ZpZXdfdG9fa2V5cyggdmlldyApCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBrZXlzOgorICAgICAgICAgICAgICAgIGFsbF9r
ZXlzID0zRCBrZXlzCisgICAgICAgICAgICBlbGlmIGRlZmF1bHRfdmlldzoKKyAgICAgICAgICAg
ICAgICBhbGxfa2V5cyA9M0Qgc2VsZi5fdmlld190b19rZXlzKCBkZWZhdWx0X3ZpZXcgKQorCiAg
ICAgICAgIHJldHVybiBzZWxmLnNlcmlhbGl6ZSggdHJhbnMsIGl0ZW0sIGFsbF9rZXlzICkKPTIw
Ci0gICAgZGVmIHZpZXdfdG9fbGlzdCggc2VsZiwgdmlldz0zRE5vbmUgKToKKyAgICBkZWYgX3Zp
ZXdfdG9fa2V5cyggc2VsZiwgdmlldz0zRE5vbmUgKToKKyAgICAgICAgIiIiCisgICAgICAgIENv
bnZlcnRzIGEga25vd24gdmlldyBpbnRvIGEgbGlzdCBvZiBrZXlzLgorCisgICAgICAgIDpyYWlz
ZXMgTW9kZWxTZXJpYWxpemluZ0Vycm9yOiBpZiB0aGUgdmlldyBpcyBub3QgbGlzdGVkIGluIGBz
ZWxmLj0Kdmlld3NgLgorICAgICAgICAiIiIKICAgICAgICAgaWYgdmlldyBpcyBOb25lOgogICAg
ICAgICAgICAgdmlldyA9M0Qgc2VsZi5kZWZhdWx0X3ZpZXcKICAgICAgICAgaWYgdmlldyBub3Qg
aW4gc2VsZi52aWV3czoKICAgICAgICAgICAgIHJhaXNlIE1vZGVsU2VyaWFsaXppbmdFcnJvcigg
J3Vua25vd24gdmlldycsIHZpZXc9M0R2aWV3LCBhdmFpPQpsYWJsZV92aWV3cz0zRHNlbGYudmll
d3MgKQogICAgICAgICByZXR1cm4gc2VsZi52aWV3c1sgdmlldyBdCj0yMAotICAgICNUT0RPOiB0
aGlzIGlzIG1vcmUgdXRpbC9nZW4uIHVzZQotICAgIGRlZiBwbHVja19mcm9tX2xpc3QoIHNlbGYs
IGwsIGVsZW1zICk6Ci0gICAgICAgICIiIgotICAgICAgICBSZW1vdmVzIGZvdW5kIGVsZW1zIGZy
b20gbGlzdCBsIGFuZCByZXR1cm5zIGxpc3Qgb2YgZm91bmQgZWxlbXMgaWY9CiBmb3VuZC4KLSAg
ICAgICAgIiIiCi0gICAgICAgIGZvdW5kID0zRCBbXQotICAgICAgICBmb3IgZWxlbSBpbiBlbGVt
czoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpbmRleCA9M0QgbC5pbmRleCgg
ZWxlbSApCi0gICAgICAgICAgICAgICAgZm91bmQuYXBwZW5kKCBsLnBvcCggaW5kZXggKSApCi0g
ICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciwgdmFsX2VycjoKLSAgICAgICAgICAgICAgICBw
YXNzCi0gICAgICAgIHJldHVybiBmb3VuZAotCiAgICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLj0KLi4uLi4gYWxp
YXNlcwogICAgICNkZWYgdG9fZGljdCggc2VsZiwgdHJhbnMsIGl0ZW0sIHZpZXc9M0ROb25lLCB2
aWV3X2tleXM9M0ROb25lICk6CiAgICAgIyAgICB2aWV3X2tleXMgPTNEIHZpZXdfa2V5cyBvciBz
ZWxmLnZpZXdfdG9fbGlzdCggdmlldyApCkBAIC00NzcsOTUgKzY1OSw1OCBAQAo9MjAKPTIwCiAj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLT0KLS0tLS0KLWNsYXNzIE1vZGVsVmFsaWRhdG9yKCBvYmplY3QgKToK
K2NsYXNzIE1vZGVsRGVzZXJpYWxpemVyKCBvYmplY3QgKToKKyAgICAiIiIKKyAgICBBbiBvYmpl
Y3QgdGhhdCBjb252ZXJ0cyBhbiBpbmNvbWluZyBzZXJpYWxpemVkIGRpY3QgaW50byB2YWx1ZXMg
dGhhdCBjPQphbiBiZQorICAgIGRpcmVjdGx5IGFzc2lnbmVkIHRvIGFuIGl0ZW0ncyBhdHRyaWJ1
dGVzIGFuZCBhc3NpZ25zIHRoZW0uCisgICAgIiIiCisgICAgI1RPRE86Pz8gSSdtIG5vdCBjb252
aW5jZXMgdGhlIGZvbGxvd2luZyB0d28gbmVlZCB0byBleGlzdC4uLgo9MjAKLSAgICBkZWYgX19p
bml0X18oIHNlbGYsIGFwcCwgKmFyZ3MsICoqa3dhcmdzICk6CisgICAgZGVmIF9faW5pdF9fKCBz
ZWxmLCBhcHAgKToKKyAgICAgICAgIiIiCisgICAgICAgIFNldCB1cCBkZXNlcmlhbGl6ZXJzIGFu
ZCB2YWxpZGF0b3IuCisgICAgICAgICIiIgogICAgICAgICBzZWxmLmFwcCA9M0QgYXBwCj0yMAot
ICAgIGRlZiB0eXBlKCBzZWxmLCBrZXksIHZhbCwgdHlwZXMgKToKLSAgICAgICAgaWYgbm90IGlz
aW5zdGFuY2UoIHZhbCwgdHlwZXMgKToKLSAgICAgICAgICAgIG1zZyA9M0QgJ211c3QgYmUgYSB0
eXBlOiAlcycgJSAoIHN0ciggdHlwZXMgKSApCi0gICAgICAgICAgICByYWlzZSBleGNlcHRpb25z
LlJlcXVlc3RQYXJhbWV0ZXJJbnZhbGlkRXhjZXB0aW9uKCBtc2csIGtleT0zRD0Ka2V5LCB2YWw9
M0R2YWwgKQotICAgICAgICByZXR1cm4gdmFsCi0KLSAgICAjIHZhbGlkYXRvcnMgZm9yIHByaW1p
dGl2ZXMKLSAgICBkZWYgYmFzZXN0cmluZyggc2VsZiwga2V5LCB2YWwgKToKLSAgICAgICAgcmV0
dXJuIHNlbGYudHlwZSgga2V5LCB2YWwsIGJhc2VzdHJpbmcgKQotCi0gICAgZGVmIG51bGxhYmxl
X2Jhc2VzdHJpbmcoIHNlbGYsIGtleSwgdmFsICk6Ci0gICAgICAgIHJldHVybiBzZWxmLnR5cGUo
IGtleSwgdmFsLCAoIGJhc2VzdHJpbmcsIHR5cGUoIE5vbmUgKSApICkKLQotICAgIGRlZiBib29s
KCBzZWxmLCBrZXksIHZhbCApOgotICAgICAgICByZXR1cm4gc2VsZi50eXBlKCBrZXksIHZhbCwg
Ym9vbCApCi0KLSAgICBkZWYgaW50KCBzZWxmLCBrZXksIHZhbCApOgotICAgICAgICByZXR1cm4g
c2VsZi50eXBlKCBrZXksIHZhbCwgaW50ICkKLQotICAgIGRlZiBpbnRfcmFuZ2UoIHNlbGYsIGtl
eSwgdmFsLCBtaW49M0ROb25lLCBtYXg9M0ROb25lICk6Ci0gICAgICAgIHZhbCA9M0Qgc2VsZi50
eXBlKCBrZXksIHZhbCwgaW50ICkKLSAgICAgICAgaWYgdmFsIDwgbWluOgotICAgICAgICAgICAg
cmFpc2UgZXhjZXB0aW9ucy5SZXF1ZXN0UGFyYW1ldGVySW52YWxpZEV4Y2VwdGlvbiggImxlc3Mg
dGhhbiA9Cm1pbmltdW0iLCBrZXk9M0RrZXksIHZhbD0zRHZhbCwgbWluPTNEbWluICkKLSAgICAg
ICAgaWYgdmFsID4gbWF4OgotICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5SZXF1ZXN0UGFy
YW1ldGVySW52YWxpZEV4Y2VwdGlvbiggImdyZWF0ZXIgdGg9CmFuIG1heGltdW0iLCBrZXk9M0Rr
ZXksIHZhbD0zRHZhbCwgbWF4PTNEbWF4ICkKLSAgICAgICAgcmV0dXJuIHZhbAotCi0gICAgZGVm
IGJhc2VzdHJpbmdfbGlzdCggc2VsZiwga2V5LCB2YWwgKToKLSAgICAgICAgdmFsID0zRCBzZWxm
LnR5cGUoIGtleSwgdmFsLCBsaXN0ICkKLSAgICAgICAgcmV0dXJuIFsgc2VsZi5iYXNlc3RyaW5n
KCBrZXksIGVsZW0gKSBmb3IgZWxlbSBpbiB2YWwgXQotCi0gICAgIyB2YWxpZGF0b3JzIGZvciBH
YWxheHkKLSAgICBkZWYgZ2Vub21lX2J1aWxkKCBzZWxmLCB0cmFucywga2V5LCB2YWwgKToKLSAg
ICAgICAgI1RPRE86IGlzIHRoaXMgY29ycmVjdD8KLSAgICAgICAgaWYgdmFsIGlzIE5vbmU6Ci0g
ICAgICAgICAgICByZXR1cm4gJz8nCi0gICAgICAgICMgd290Li4ud2h5IHR1cGxlcz8KLSAgICAg
ICAgaWYgdmFsIG5vdCBpbiBkaWN0KCB0cmFucy5kYl9idWlsZHMgKToKLSAgICAgICAgICAgIHJh
aXNlIGV4Y2VwdGlvbnMuUmVxdWVzdFBhcmFtZXRlckludmFsaWRFeGNlcHRpb24oICJpbnZhbGlk
IHJlPQpmZXJlbmNlIiwga2V5PTNEa2V5LCB2YWw9M0R2YWwgKQotICAgICAgICByZXR1cm4gdmFs
Ci0KLSAgICAjZGVmIHNsdWcoIHNlbGYsIHRyYW5zLCBpdGVtLCBrZXksIHZhbCApOgotICAgICMg
ICAgIiIidmFsaWRhdGUgc2x1ZyIiIgotICAgICMgICAgcGFzcwotCi0KLSMgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tPQotLS0tLQotY2xhc3MgTW9kZWxEZXNlcmlhbGl6ZXIoIG9iamVjdCApOgotICAgICNtb2Rl
bF9tZ3JfY2xhc3MgPTNEIE5vbmUKLQotICAgICMgcHJpbWFyaWx5IGRlc2lnbmVkIGZvciBjcmVh
dGluZyBtb2RlbHMgZnJvbSBkaWN0cwotICAgICMgICBEaWN0ICAgIC0tPiBNb2RlbERlc2VyaWFs
aXplciAtLT4gbW9kZWwKLSAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgotICAgICAgICBz
ZWxmLmFwcCA9M0QgYXBwCi0gICAgICAgICNUT0RPOgotICAgICAgICAjc2VsZi5tZ3IgPTNEIG1v
ZGVsX21ncl9jbGFzcyggYXBwICkKLQogICAgICAgICBzZWxmLmRlc2VyaWFsaXplcnMgPTNEIHt9
CiAgICAgICAgIHNlbGYuYWRkX2Rlc2VyaWFsaXplcnMoKQogICAgICAgICBzZWxmLmRlc2VyaWFs
aXphYmxlX2tleXMgPTNEIFtdCisgICAgICAgICMgYSBzdWIgb2JqZWN0IHRoYXQgY2FuIHZhbGlk
YXRlIGluY29taW5nIHZhbHVlcwogICAgICAgICBzZWxmLnZhbGlkYXRlID0zRCBNb2RlbFZhbGlk
YXRvciggc2VsZi5hcHAgKQo9MjAKICAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBkZXNlcmlhbGl6
aW5nCiAgICAgZGVmIGFkZF9kZXNlcmlhbGl6ZXJzKCBzZWxmICk6Ci0gICAgICAgICMgcmVnaXN0
ZXIgYSBtYXAgb2YgYXR0cmlidXRlIGtleXMgLT4gZnVuY3Rpb25zIHRoYXQgd2lsbCBkZXNlcmlh
bD0KaXplIGRhdGEgaW50byB0aGUgYXR0cmlidXRlCisgICAgICAgICIiIgorICAgICAgICBSZWdp
c3RlciBhIG1hcCBvZiBhdHRyaWJ1dGUga2V5cyAtPiBmdW5jdGlvbnMgdGhhdCB3aWxsIGRlc2Vy
aWFsaXo9CmUgZGF0YQorICAgICAgICBpbnRvIGF0dHJpYnV0ZXMgdG8gYmUgYXNzaWduZWQgdG8g
dGhlIGl0ZW0uCisgICAgICAgICIiIgogICAgICAgICAjIHRvIGJlIG92ZXJyaWRkZW4gaW4gc3Vi
Y2xhc3NlcwogICAgICAgICBwYXNzCj0yMAogICAgIGRlZiBkZXNlcmlhbGl6ZSggc2VsZiwgdHJh
bnMsIGl0ZW0sIGRhdGEsIGZsdXNoPTNEVHJ1ZSApOgorICAgICAgICAiIiIKKyAgICAgICAgQ29u
dmVydCBhbiBpbmNvbWluZyBzZXJpYWxpemVkIGRpY3QgaW50byB2YWx1ZXMgdGhhdCBjYW4gYmUK
KyAgICAgICAgZGlyZWN0bHkgYXNzaWduZWQgdG8gYW4gaXRlbSdzIGF0dHJpYnV0ZXMgYW5kIGFz
c2lnbiB0aGVtCisgICAgICAgICIiIgogICAgICAgICBuZXdfZGljdCA9M0Qge30KICAgICAgICAg
Zm9yIGtleSwgdmFsIGluIGRhdGEuaXRlbXMoKToKLSAgICAgICAgICAgICNwcmludCBrZXksIHZh
bAogICAgICAgICAgICAgaWYga2V5IGluIHNlbGYuZGVzZXJpYWxpemVyczoKLSAgICAgICAgICAg
ICAgICAjcHJpbnQgJ1x0IGRlc2VyaWFsaXplcjonLCBzZWxmLmRlc2VyaWFsaXplcnNbIGtleSBd
CiAgICAgICAgICAgICAgICAgbmV3X2RpY3RbIGtleSBdID0zRCBzZWxmLmRlc2VyaWFsaXplcnNb
IGtleSBdKCB0cmFucywgaXRlbT0KLCBrZXksIHZhbCApCiAgICAgICAgICAgICAjIWltcG9ydGFu
dDogZG9uJ3QgZXJyb3Igb24gdW5yZWcuIGtleXMgLS0gbWFueSBjbGllbnRzIHdpbGwgYT0KZGQg
d2VpcmQgYXNzIGtleXMgb250byB0aGUgbW9kZWwKLSAgICAgICAgI1RPRE86Pz8gaGVyZSBvciBp
biBtYW5hZ2VyPworCisgICAgICAgICNUT0RPOj8/IGFkZCBhbmQgZmx1c2ggaGVyZSBvciBpbiBt
YW5hZ2VyPwogICAgICAgICBpZiBmbHVzaCBhbmQgbGVuKCBuZXdfZGljdCApOgogICAgICAgICAg
ICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIGl0ZW0gKQogICAgICAgICAgICAgdHJhbnMuc2Ffc2Vz
c2lvbi5mbHVzaCgpCisKICAgICAgICAgcmV0dXJuIG5ld19kaWN0Cj0yMAogICAgICMgLi4uIGNv
bW1vbiBkZXNlcmlhbGl6ZXJzIGZvciBwcmltaXRpdmVzCiAgICAgZGVmIGRlZmF1bHRfZGVzZXJp
YWxpemVyKCBzZWxmLCB0cmFucywgaXRlbSwga2V5LCB2YWwgKToKKyAgICAgICAgIiIiCisgICAg
ICAgIElmIHRoZSBpbmNvbWluZyBgdmFsYCBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgYGl0ZW1gIHZh
bHVlIGNoYW5nZSBpdAorICAgICAgICBhbmQsIGluIGVpdGhlciBjYXNlLCByZXR1cm4gdGhlIHZh
bHVlLgorICAgICAgICAiIiIKICAgICAgICAgI1RPRE86IHNldHMgdGhlIGl0ZW0gYXR0cmlidXRl
IHRvIHZhbHVlICh0aGlzIG1heSBub3Qgd29yayBpbiBhbGwgPQppbnN0YW5jZXMpCj0yMAogICAg
ICAgICAjIG9ubHkgZG8gdGhlIGZvbGxvd2luZyBpZiB2YWwgPTNEPTNEIGdldGF0dHIoIGl0ZW0s
IGtleSApCkBAIC01ODcsMTUgKzczMiwyNiBAQAo9MjAKICAgICAjIC4uLiBjb21tb24gZGVzZXJp
YWxpemVycyBmb3IgR2FsYXh5CiAgICAgZGVmIGRlc2VyaWFsaXplX2dlbm9tZV9idWlsZCggc2Vs
ZiwgdHJhbnMsIGl0ZW0sIGtleSwgdmFsICk6CisgICAgICAgICIiIgorICAgICAgICBNYWtlIHN1
cmUgYHZhbGAgaXMgYSB2YWxpZCBkYmtleSBhbmQgYXNzaWduIGl0LgorICAgICAgICAiIiIKICAg
ICAgICAgdmFsID0zRCBzZWxmLnZhbGlkYXRlLmdlbm9tZV9idWlsZCggdHJhbnMsIGtleSwgdmFs
ICkKICAgICAgICAgcmV0dXJuIHNlbGYuZGVmYXVsdF9kZXNlcmlhbGl6ZXIoIHRyYW5zLCBpdGVt
LCBrZXksIHZhbCApCj0yMAogICAgIGRlZiBkZXNlcmlhbGl6ZV9hbm5vdGF0aW9uKCBzZWxmLCB0
cmFucywgaXRlbSwga2V5LCB2YWwgKToKKyAgICAgICAgIiIiCisgICAgICAgIE1ha2Ugc3VyZSBg
dmFsYCBpcyBhIHZhbGlkIGFubm90YXRpb24gYW5kIGFzc2lnbiBpdC4KKyAgICAgICAgIiIiCiAg
ICAgICAgIHZhbCA9M0Qgc2VsZi52YWxpZGF0ZS5udWxsYWJsZV9iYXNlc3RyaW5nKCBrZXksIHZh
bCApCiAgICAgICAgICNUT0RPOiBoYXZlIHRvIGFzc3VtZSB0cmFucy51c2VyIGhlcmUuLi4KICAg
ICAgICAgcmV0dXJuIGl0ZW0uYWRkX2l0ZW1fYW5ub3RhdGlvbiggdHJhbnMuc2Ffc2Vzc2lvbiwg
dHJhbnMudXNlciwgaXRlPQptLCB2YWwgKQo9MjAKICAgICBkZWYgZGVzZXJpYWxpemVfdGFncygg
c2VsZiwgdHJhbnMsIGl0ZW0sIGtleSwgdmFsICk6CisgICAgICAgICIiIgorICAgICAgICBNYWtl
IHN1cmUgYHZhbGAgaXMgYSB2YWxpZCBsaXN0IG9mIHRhZyBzdHJpbmdzIGFuZCBhc3NpZ24gdGhl
bS4KKworICAgICAgICBOb3RlOiB0aGlzIHdpbGwgZXJhc2UgYW55IHByZXZpb3VzIHRhZ3MuCisg
ICAgICAgICIiIgogICAgICAgICBuZXdfdGFnc19saXN0ID0zRCBzZWxmLnZhbGlkYXRlLmJhc2Vz
dHJpbmdfbGlzdCgga2V5LCB2YWwgKQogICAgICAgICAjVE9ETzogaGF2ZSB0byBhc3N1bWUgdHJh
bnMudXNlciBoZXJlLi4uCiAgICAgICAgIHVzZXIgPTNEIHRyYW5zLnVzZXIKQEAgLTYwNSw2ICs3
NjEsOCBAQAogICAgICAgICBuZXdfdGFnc19zdHIgPTNEICcsJy5qb2luKCBuZXdfdGFnc19saXN0
ICkKICAgICAgICAgdGFnX2hhbmRsZXIuYXBwbHlfaXRlbV90YWdzKCB0cmFucywgdXNlciwgaXRl
bSwgdW5pY29kZSggbmV3X3RhZ3NfPQpzdHIuZW5jb2RlKCAndXRmLTgnICksICd1dGYtOCcgKSAp
CiAgICAgICAgICN0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKKworI1RPRE86ISEgZG9lcyB0aGUg
Y3JlYXRpb24gb2YgbmV3X3RhZ3NfbGlzdCBtZWFuIHRoZXJlIGFyZSBub3cgbW9yZSBhbmQgbW89
CnJlIHVudXNlZCB0YWcgcm93cyBpbiB0aGUgZGI/CiAgICAgICAgIHJldHVybiBpdGVtLnRhZ3MK
PTIwCiAgICAgI2RlZiBkZXNlcmlhbGl6ZV9yYXRpbmcoIHNlbGYsIHRyYW5zLCBpdGVtLCBrZXks
IHZhbCApOgpAQCAtNjE3LDEzICs3NzUsOTMgQEAKPTIwCj0yMAogIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09
Ci0tLS0tCisjVE9ETzo/PyBhIGxhcmdlciBxdWVzdGlvbiBpczogd2hpY2ggc2hvdWxkIGJlIGZp
cnN0PyBEZXNlcmlhbGl6ZSB0aGVuIHZhbD0KaWRhdGUgLSBvciAtIHZhbGlkYXRlIHRoZW4gZGVz
ZXJpYWxpemU/CitjbGFzcyBNb2RlbFZhbGlkYXRvciggb2JqZWN0ICk6CisgICAgIiIiCisgICAg
QW4gb2JqZWN0IHRoYXQgaW5zcGVjdHMgYSBkaWN0aW9uYXJ5IChnZW5lcmFsbHkgbWVhbnQgdG8g
YmUgYSBzZXQgb2YKKyAgICBuZXcvdXBkYXRlZCB2YWx1ZXMgZm9yIHRoZSBtb2RlbCkgYW5kIHJh
aXNlcyBhbiBlcnJvciBpZiBhIHZhbHVlIGlzCisgICAgbm90IGFjY2VwdGFibGUuCisgICAgIiIi
CisKKyAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCwgKmFyZ3MsICoqa3dhcmdzICk6CisgICAg
ICAgIHNlbGYuYXBwID0zRCBhcHAKKworICAgIGRlZiB0eXBlKCBzZWxmLCBrZXksIHZhbCwgdHlw
ZXMgKToKKyAgICAgICAgIiIiCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgaXNpbnN0YW5j
ZSggdmFsLCB0eXBlcyApOgorICAgICAgICAgICAgbXNnID0zRCAnbXVzdCBiZSBhIHR5cGU6ICVz
JyAlICggc3RyKCB0eXBlcyApICkKKyAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuUmVxdWVz
dFBhcmFtZXRlckludmFsaWRFeGNlcHRpb24oIG1zZywga2V5PTNEPQprZXksIHZhbD0zRHZhbCAp
CisgICAgICAgIHJldHVybiB2YWwKKworICAgICMgdmFsaWRhdG9ycyBmb3IgcHJpbWl0aXZlcyBh
bmQgY29tcG91bmRzIG9mIHByaW1pdGl2ZXMKKyAgICBkZWYgYmFzZXN0cmluZyggc2VsZiwga2V5
LCB2YWwgKToKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZSgga2V5LCB2YWwsIGJhc2VzdHJpbmcg
KQorCisgICAgZGVmIGJvb2woIHNlbGYsIGtleSwgdmFsICk6CisgICAgICAgIHJldHVybiBzZWxm
LnR5cGUoIGtleSwgdmFsLCBib29sICkKKworICAgIGRlZiBpbnQoIHNlbGYsIGtleSwgdmFsICk6
CisgICAgICAgIHJldHVybiBzZWxmLnR5cGUoIGtleSwgdmFsLCBpbnQgKQorCisgICAgZGVmIG51
bGxhYmxlX2Jhc2VzdHJpbmcoIHNlbGYsIGtleSwgdmFsICk6CisgICAgICAgICIiIgorICAgICAg
ICBNdXN0IGJlIGEgYmFzZXN0cmluZyBvciBOb25lLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0
dXJuIHNlbGYudHlwZSgga2V5LCB2YWwsICggYmFzZXN0cmluZywgdHlwZSggTm9uZSApICkgKQor
CisgICAgZGVmIGludF9yYW5nZSggc2VsZiwga2V5LCB2YWwsIG1pbj0zRE5vbmUsIG1heD0zRE5v
bmUgKToKKyAgICAgICAgIiIiCisgICAgICAgIE11c3QgYmUgYSBpbnQgYmV0d2VlbiBtaW4gYW5k
IG1heC4KKyAgICAgICAgIiIiCisgICAgICAgIHZhbCA9M0Qgc2VsZi50eXBlKCBrZXksIHZhbCwg
aW50ICkKKyAgICAgICAgaWYgbWluIGlzIG5vdCBOb25lIGFuZCB2YWwgPCBtaW46CisgICAgICAg
ICAgICByYWlzZSBleGNlcHRpb25zLlJlcXVlc3RQYXJhbWV0ZXJJbnZhbGlkRXhjZXB0aW9uKCAi
bGVzcyB0aGFuID0KbWluaW11bSIsIGtleT0zRGtleSwgdmFsPTNEdmFsLCBtaW49M0RtaW4gKQor
ICAgICAgICBpZiBtYXggaXMgbm90IE5vbmUgYW5kIHZhbCA+IG1heDoKKyAgICAgICAgICAgIHJh
aXNlIGV4Y2VwdGlvbnMuUmVxdWVzdFBhcmFtZXRlckludmFsaWRFeGNlcHRpb24oICJncmVhdGVy
IHRoPQphbiBtYXhpbXVtIiwga2V5PTNEa2V5LCB2YWw9M0R2YWwsIG1heD0zRG1heCApCisgICAg
ICAgIHJldHVybiB2YWwKKworICAgIGRlZiBiYXNlc3RyaW5nX2xpc3QoIHNlbGYsIGtleSwgdmFs
ICk6CisgICAgICAgICIiIgorICAgICAgICBNdXN0IGJlIGEgbGlzdCBvZiBiYXNlc3RyaW5ncy4K
KyAgICAgICAgIiIiCisgICAgICAgICNUT0RPOiBIZXJlJ3Mgd2hlcmUgY29tcG91bmQgdHlwZXMg
c3RhcnQgYmVjb21pbmcgYSBuaWdodG1hcmUuIEFueT0KIG1vcmUgb3IgbW9yZSBjb21wbGV4Cisg
ICAgICAgICMgICBhbmQgc2hvdWxkIGZpbmQgYSBkaWZmZXJlbnQgd2F5LgorICAgICAgICB2YWwg
PTNEIHNlbGYudHlwZSgga2V5LCB2YWwsIGxpc3QgKQorICAgICAgICByZXR1cm4gWyBzZWxmLmJh
c2VzdHJpbmcoIGtleSwgZWxlbSApIGZvciBlbGVtIGluIHZhbCBdCisKKyAgICAjIHZhbGlkYXRv
cnMgZm9yIEdhbGF4eQorICAgIGRlZiBnZW5vbWVfYnVpbGQoIHNlbGYsIHRyYW5zLCBrZXksIHZh
bCApOgorICAgICAgICAiIiIKKyAgICAgICAgTXVzdCBiZSBhIHZhbGlkIGdlbm9tZV9idWlsZC9k
YmtleS9yZWZlcmVuY2Uvd2hhdGV2ZXItdGhlLWhlbGwtd2VyPQplLWNhbGxpbmctdGhlbS1ub3cu
CisgICAgICAgICIiIgorICAgICAgICAjVE9ETzogaXMgdGhpcyBjb3JyZWN0PworICAgICAgICBp
ZiB2YWwgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiAnPycKKyAgICAgICAgIyB3b3QuLi53
aHkgdHVwbGVzPworICAgICAgICBpZiB2YWwgbm90IGluIGRpY3QoIHRyYW5zLmRiX2J1aWxkcyAp
OgorICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5SZXF1ZXN0UGFyYW1ldGVySW52YWxpZEV4
Y2VwdGlvbiggImludmFsaWQgcmU9CmZlcmVuY2UiLCBrZXk9M0RrZXksIHZhbD0zRHZhbCApCisg
ICAgICAgIHJldHVybiB2YWwKKworICAgICNkZWYgc2x1Zyggc2VsZiwgdHJhbnMsIGl0ZW0sIGtl
eSwgdmFsICk6CisgICAgIyAgICAiIiJ2YWxpZGF0ZSBzbHVnIiIiCisgICAgIyAgICBwYXNzCisK
KworIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPQo9M0Q9M0Q9M0QKKyMgTWl4aW5zIChoZXJlIGZvciBub3cpCisjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LT0KLS0tLS0KICNUT0RPOiB0aGVzZSBhcmUgb2YgcXVlc3Rpb25hYmxlIHZhbHVlIGlmIHdlIGRv
bid0IHdhbnQgdG8gZW5hYmxlIHVzZXJzIHRvPQogZGVsZXRlL3B1cmdlIHZpYSB1cGRhdGUKIGNs
YXNzIERlbGV0YWJsZU1vZGVsRGVzZXJpYWxpemVyKCBvYmplY3QgKToKPTIwCiAgICAgZGVmIGFk
ZF9kZXNlcmlhbGl6ZXJzKCBzZWxmICk6CisgICAgICAgICIiIgorICAgICAgICAiIiIKICAgICAg
ICAgc2VsZi5kZXNlcmlhbGl6ZXJzWyAnZGVsZXRlZCcgXSA9M0Qgc2VsZi5kZXNlcmlhbGl6ZV9k
ZWxldGVkCj0yMAogICAgIGRlZiBkZXNlcmlhbGl6ZV9kZWxldGVkKCBzZWxmLCB0cmFucywgaXRl
bSwga2V5LCB2YWwgKToKKyAgICAgICAgIiIiCisgICAgICAgICIiIgogICAgICAgICBuZXdfZGVs
ZXRlZCA9M0Qgc2VsZi52YWxpZGF0ZS5ib29sKCBrZXksIHZhbCApCiAgICAgICAgIGlmIG5ld19k
ZWxldGVkID0zRD0zRCBpdGVtLmRlbGV0ZWQ6CiAgICAgICAgICAgICByZXR1cm4gaXRlbS5kZWxl
dGVkCkBAIC02MzksOSArODc3LDEzIEBACiBjbGFzcyBQdXJnYWJsZU1vZGVsRGVzZXJpYWxpemVy
KCBEZWxldGFibGVNb2RlbERlc2VyaWFsaXplciApOgo9MjAKICAgICBkZWYgYWRkX2Rlc2VyaWFs
aXplcnMoIHNlbGYgKToKKyAgICAgICAgIiIiCisgICAgICAgICIiIgogICAgICAgICBzZWxmLmRl
c2VyaWFsaXplcnNbICdwdXJnZWQnIF0gPTNEIHNlbGYuZGVzZXJpYWxpemVfcHVyZ2VkCj0yMAog
ICAgIGRlZiBkZXNlcmlhbGl6ZV9wdXJnZWQoIHNlbGYsIHRyYW5zLCBpdGVtLCBrZXksIHZhbCAp
OgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgIG5ld19wdXJnZWQgPTNEIHNlbGYu
dmFsaWRhdGUuYm9vbCgga2V5LCB2YWwgKQogICAgICAgICBpZiBuZXdfcHVyZ2VkID0zRD0zRCBp
dGVtLnB1cmdlZDoKICAgICAgICAgICAgIHJldHVybiBpdGVtLnB1cmdlZApAQCAtNjU0LDkgKzg5
NiwxMyBAQAogY2xhc3MgVGFnZ2FibGVTZXJpYWxpemVyKCBvYmplY3QgKToKPTIwCiAgICAgZGVm
IGFkZF9zZXJpYWxpemVycyggc2VsZiApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAg
ICAgIHNlbGYuc2VyaWFsaXplcnNbICd0YWdzJyBdID0zRCBzZWxmLnNlcmlhbGl6ZV90YWdzCj0y
MAogICAgIGRlZiBzZXJpYWxpemVfdGFncyggc2VsZiwgdHJhbnMsIGl0ZW0sIGtleSApOgorICAg
ICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgIGlmIG5vdCBoYXNhdHRyKCBpdGVtLCAndGFn
cycgKToKICAgICAgICAgICAgIHJldHVybiBOb25lCj0yMApAQCAtNjczLDE4ICs5MTksMjUgQEAK
IGNsYXNzIEFubm90YXRhYmxlU2VyaWFsaXphYmxlKCBvYmplY3QgKToKPTIwCiAgICAgZGVmIGFk
ZF9zZXJpYWxpemVycyggc2VsZiApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAg
IHNlbGYuc2VyaWFsaXplcnNbICdhbm5vdGF0aW9uJyBdID0zRCBsYW1iZGEgdCwgaSwgazogdW5p
Y29kZSggc2VsZj0KLmdldF9hbm5vdGF0aW9uKCB0LCBpICkgKQo9MjAKPTIwCiBjbGFzcyBSYXRh
YmxlU2VyaWFsaXphYmxlKCBvYmplY3QgKToKPTIwCiAgICAgZGVmIGFkZF9zZXJpYWxpemVycygg
c2VsZiApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuc2VyaWFsaXpl
cnNbICd1c2VyX3JhdGluZycgXSA9M0Qgc2VsZi5zZXJpYWxpemVfdXNlcl9yYXRpbmcKICAgICAg
ICAgc2VsZi5zZXJpYWxpemVyc1sgJ2NvbW11bml0eV9yYXRpbmcnIF0gPTNEIHNlbGYuc2VyaWFs
aXplX2NvbW11bml0PQp5X3JhdGluZwo9MjAKICAgICBkZWYgc2VyaWFsaXplX3VzZXJfcmF0aW5n
KCBzZWxmLCB0cmFucywgaXRlbSwga2V5ICk6CisgICAgICAgICIiIgorICAgICAgICAiIiIKICAg
ICAgICAgcGFzcwo9MjAKICAgICBkZWYgc2VyaWFsaXplX2NvbW11bml0eV9yYXRpbmcoIHNlbGYs
IHRyYW5zLCBpdGVtLCBrZXkgKToKKyAgICAgICAgIiIiCisgICAgICAgICIiIgogICAgICAgICBw
YXNzCi0KCmRpZmYgLXIgNWQwZmNhNTkxMzk0ZDdlN2FhYWJhZGZjZGVkOWY4MzdmZDQzNmVkMiAt
ciA0YmRlNzBjNjc3YTkyZGRhNzIxMmVjYz0KNGNkOWVhOWM0ZDNlYzY5NTIgbGliL2dhbGF4eS9t
YW5hZ2Vycy9jb2xsZWN0aW9ucy5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL2NvbGxlY3Rp
b25zLnB5CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvY29sbGVjdGlvbnMucHkKQEAgLTI5OSw2
MiArMjk5LDcgQEAKIGNsYXNzIERhdGFzZXRDb2xsZWN0aW9uU2VyaWFsaXplciggYmFzZS5Nb2Rl
bFNlcmlhbGl6ZXIgKToKPTIwCiAgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToKLSAgICAg
ICAgc3VwZXIoIEhEQVNlcmlhbGl6ZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwICkKLQotICAgICMg
ICAgIyBtb3N0IG9mIHRoZXNlIHZpZXdzIGJ1aWxkL2FkZCB0byB0aGUgcHJldmlvdXMgdmlldwot
ICAgICMgICAgc3VtbWFyeV92aWV3ID0zRCBbCi0gICAgIyAgICAgICAgJ2lkJywgJ2hpc3Rvcnlf
aWQnLCAnaGlkJywgJ25hbWUnLCAnZGF0YXNldF9pZCcsCi0gICAgIyAgICAgICAgJ3N0YXRlJywg
J2RlbGV0ZWQnLCAncHVyZ2VkJywgJ3Zpc2libGUnCi0gICAgIyAgICBdCi0gICAgIyAgICBkZXRh
aWxlZF92aWV3ID0zRCBzdW1tYXJ5X3ZpZXcgKyBbCi0gICAgIyAgICAgICAgJ2Ria2V5JywgJ2lu
Zm8nLCAnYmx1cmInLCAnZXh0ZW5zaW9uJywgJ2NyZWF0ZV90aW1lJywgJ3VwZGF0ZT0KX3RpbWUn
LAotICAgICMgICAgICAgICdjb3BpZWRfZnJvbV9oaXN0b3J5X2RhdGFzZXRfYXNzb2NpYXRpb25f
aWQnLCAnY29waWVkX2Zyb21fbGk9CmJyYXJ5X2RhdGFzZXRfZGF0YXNldF9hc3NvY2lhdGlvbl9p
ZCcsCi0gICAgIyAgICAgICAgJ21ldGFkYXRhJywgJ3NpemUnLAotICAgICMgICAgICAgICNtaXhp
bjogYW5ub3RhdGFibGUKLSAgICAjICAgICAgICAnYW5ub3RhdGlvbicsCi0gICAgIyAgICAgICAg
I21peGluOiB0YWdnYWJsZQotICAgICMgICAgICAgICd0YWdzJywKLSAgICAjICAgIF0KLSAgICAj
ICAgIGV4dGVuZGVkX3ZpZXcgPTNEIGRldGFpbGVkX3ZpZXcgKyBbCi0gICAgIyAgICAgICAgI05P
VEU6IHNlbmRpbmcgcmF3ICdwZWVrJyAobm90IGdldF9kaXNwbGF5X3BlZWspCi0gICAgIyAgICAg
ICAgJ3BlZWsnLAotICAgICMgICAgICAgICd0b29sX3ZlcnNpb24nLCAncGFyZW50X2lkJywgJ2Rl
c2lnbmF0aW9uJywKLSAgICAjICAgIF0KLSAgICAjCi0gICAgIyAgICBzZWxmLnNlcmlhbGl6YWJs
ZV9rZXlzID0zRCBleHRlbmRlZF92aWV3ICsgWwotICAgICMgICAgICAgICdkaXNwbGF5X2FwcHMn
LAotICAgICMgICAgICAgICdkaXNwbGF5X3R5cGVzJywKLSAgICAjICAgICAgICAndmlzdWFsaXph
dGlvbnMnCi0gICAgIyAgICBdCi0gICAgIyAgICBzZWxmLnZpZXdzID0zRCB7Ci0gICAgIyAgICAg
ICAgJ3N1bW1hcnknICAgOiBzdW1tYXJ5X3ZpZXcsCi0gICAgIyAgICAgICAgJ2RldGFpbGVkJyAg
OiBkZXRhaWxlZF92aWV3LAotICAgICMgICAgICAgICdleHRlbmRlZCcgIDogZXh0ZW5kZWRfdmll
dywKLSAgICAjICAgIH0KLSAgICAjICAgIHNlbGYuZGVmYXVsdF92aWV3ID0zRCAnc3VtbWFyeScK
LSAgICAjCi0gICAgI2RlZiBhZGRfc2VyaWFsaXplcnMoIHNlbGYgKToKLSAgICAjICAgIHNlbGYu
c2VyaWFsaXplcnMudXBkYXRlKHsKLSAgICAjICAgICAgICAnaWQnICAgICAgICAgICAgOiBzZWxm
LnNlcmlhbGl6ZV9pZCwKLSAgICAjICAgICAgICAnaGlzdG9yeV9pZCcgICAgOiBzZWxmLnNlcmlh
bGl6ZV9pZCwKLSAgICAjICAgICAgICAnZGF0YXNldF9pZCcgICAgOiBzZWxmLnNlcmlhbGl6ZV9p
ZCwKLSAgICAjCi0gICAgIyAgICAgICAgJ2NyZWF0ZV90aW1lJyAgIDogc2VsZi5zZXJpYWxpemVf
ZGF0ZSwKLSAgICAjICAgICAgICAndXBkYXRlX3RpbWUnICAgOiBzZWxmLnNlcmlhbGl6ZV9kYXRl
LAotICAgICMgICAgICAgICdjb3BpZWRfZnJvbV9oaXN0b3J5X2RhdGFzZXRfYXNzb2NpYXRpb25f
aWQnICAgICAgICA6IHNlbGYuc2U9CnJpYWxpemVfaWQsCi0gICAgIyAgICAgICAgJ2NvcGllZF9m
cm9tX2xpYnJhcnlfZGF0YXNldF9kYXRhc2V0X2Fzc29jaWF0aW9uX2lkJzogc2VsZi5zZT0Kcmlh
bGl6ZV9pZCwKLSAgICAjCi0gICAgIyAgICAgICAgJ21ldGFkYXRhJyAgICAgIDogc2VsZi5zZXJp
YWxpemVfbWV0YWRhdGEsCi0gICAgIyAgICAgICAgJ3NpemUnICAgICAgICAgIDogbGFtYmRhIHQs
IGksIGs6IGludCggaS5nZXRfc2l6ZSgpICksCi0gICAgIyAgICAgICAgJ25pY2Vfc2l6ZScgICAg
IDogbGFtYmRhIHQsIGksIGs6IGkuZ2V0X3NpemUoIG5pY2Vfc2l6ZT0zRFRydT0KZSApLAotICAg
ICMKLSAgICAjICAgICAgICAncGFyZW50X2lkJyAgICAgOiBzZWxmLnNlcmlhbGl6ZV9pZCwKLSAg
ICAjICAgICAgICAjVE9ETzogdG8gbWl4aW46IGFubm90YXRhYmxlCi0gICAgIyAgICAgICAgJ2Fu
bm90YXRpb24nICAgIDogbGFtYmRhIHQsIGksIGs6IGkuZ2V0X2l0ZW1fYW5ub3RhdGlvbl9zdHIo
ID0KdC5zYV9zZXNzaW9uLCB0LnVzZXIsIGkgKSwKLSAgICAjICAgICAgICAjVE9ETzogdG8gbWl4
aW46IHRhZ2dhYmxlCi0gICAgIyAgICAgICAgJ3RhZ3MnICAgICAgICAgIDogbGFtYmRhIHQsIGks
IGs6IFsgdGFnLnVzZXJfdG5hbWUgKyAoICc6JyArID0KdGFnLnVzZXJfdmFsdWUgaWYgdGFnLnVz
ZXJfdmFsdWUgZWxzZSAnJyApCi0gICAgIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZm9yIHRhZyBpbiBpLnRhZ3MgXSwKLSAgICAjICAgIH0pCisgICAgICAgIHN1
cGVyKCBEYXRhc2V0Q29sbGVjdGlvblNlcmlhbGl6ZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwICkK
PTIwCiAjZGVmIGRpY3RpZnlfZGF0YXNldF9jb2xsZWN0aW9uX2luc3RhbmNlKCBkYXRhc2V0X2Nv
bGxlY3Rpb25faW5zdGFuY2UsIHBhcj0KZW50LCBzZWN1cml0eSwgdmlldz0zRCJlbGVtZW50IiAp
OgogIyAgICBkaWN0X3ZhbHVlID0zRCBkYXRhc2V0X2NvbGxlY3Rpb25faW5zdGFuY2UudG9fZGlj
dCggdmlldz0zRHZpZXcgKQpAQCAtNDAxLDYgKzM0NiwyNiBAQAogIwogIyAgICAgICAgcmV0dXJu
IG1kCj0yMAorCitjbGFzcyBEYXRhc2V0Q29sbGVjdGlvbkRlc2VyaWFsaXplciggYmFzZS5Nb2Rl
bERlc2VyaWFsaXplciApOgorCisgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToKKyAgICAg
ICAgc3VwZXIoIERhdGFzZXRDb2xsZWN0aW9uU2VyaWFsaXplciwgc2VsZiApLl9faW5pdF9fKCBh
cHAgKQorCisgICAgI2RlZiBfdmFsaWRhdGVfYW5kX3BhcnNlX3VwZGF0ZV9wYXlsb2FkKCBzZWxm
LCBwYXlsb2FkICk6CisgICAgIyAgICB2YWxpZGF0ZWRfcGF5bG9hZCA9M0Qge30KKyAgICAjICAg
IGZvciBrZXksIHZhbCBpbiBwYXlsb2FkLml0ZW1zKCk6CisgICAgIyAgICAgICAgaWYgdmFsIGlz
IE5vbmU6CisgICAgIyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgIyAgICAgICAgaWYga2V5IGlu
ICggJ25hbWUnICk6CisgICAgIyAgICAgICAgICAgIHZhbCA9M0QgdmFsaWRhdGlvbi52YWxpZGF0
ZV9hbmRfc2FuaXRpemVfYmFzZXN0cmluZygga2V5LD0KIHZhbCApCisgICAgIyAgICAgICAgICAg
IHZhbGlkYXRlZF9wYXlsb2FkWyBrZXkgXSA9M0QgdmFsCisgICAgIyAgICAgICAgaWYga2V5IGlu
ICggJ2RlbGV0ZWQnLCAndmlzaWJsZScgKToKKyAgICAjICAgICAgICAgICAgdmFsaWRhdGVkX3Bh
eWxvYWRbIGtleSBdID0zRCB2YWxpZGF0aW9uLnZhbGlkYXRlX2Jvb2xlYW4oPQoga2V5LCB2YWwg
KQorICAgICMgICAgICAgIGVsaWYga2V5ID0zRD0zRCAndGFncyc6CisgICAgIyAgICAgICAgICAg
IHZhbGlkYXRlZF9wYXlsb2FkWyBrZXkgXSA9M0QgdmFsaWRhdGlvbi52YWxpZGF0ZV9hbmRfc2Fu
aT0KdGl6ZV9iYXNlc3RyaW5nX2xpc3QoIGtleSwgdmFsICkKKyAgICAjICAgIHJldHVybiB2YWxp
ZGF0ZWRfcGF5bG9hZAorCiAgICAgI2RlZiBhZGRfZGVzZXJpYWxpemVycyggc2VsZiApOgogICAg
ICMgICAgc2VsZi5kZXNlcmlhbGl6ZXJzLnVwZGF0ZSh7CiAgICAgIyAgICAgICAgJ25hbWUnICAg
ICAgICAgIDogc2VsZi5kZXNlcmlhbGl6ZV9iYXNlc3RyaW5nLAoKZGlmZiAtciA1ZDBmY2E1OTEz
OTRkN2U3YWFhYmFkZmNkZWQ5ZjgzN2ZkNDM2ZWQyIC1yIDRiZGU3MGM2NzdhOTJkZGE3MjEyZWNj
PQo0Y2Q5ZWE5YzRkM2VjNjk1MiBsaWIvZ2FsYXh5L21hbmFnZXJzL2RhdGFzZXRzLnB5Ci0tLSBh
L2xpYi9nYWxheHkvbWFuYWdlcnMvZGF0YXNldHMucHkKKysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vy
cy9kYXRhc2V0cy5weQpAQCAtMTMsMTYgKzEzLDIyIEBACj0yMAogIyA9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKIGNsYXNz
IERhdGFzZXRNYW5hZ2VyKCBiYXNlLk1vZGVsTWFuYWdlciwgYmFzZS5BY2Nlc3NpYmxlTW9kZWxJ
bnRlcmZhY2UsIGJhPQpzZS5QdXJnYWJsZU1vZGVsSW50ZXJmYWNlICk6CisgICAgIiIiCisgICAg
IiIiCiAgICAgbW9kZWxfY2xhc3MgPTNEIG1vZGVsLkRhdGFzZXQKICAgICBkZWZhdWx0X29yZGVy
X2J5ID0zRCAoIG1vZGVsLkRhdGFzZXQuY3JlYXRlX3RpbWUsICkKICAgICBmb3JlaWduX2tleV9u
YW1lID0zRCAnZGF0YXNldCcKPTIwCiAgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToKKyAg
ICAgICAgIiIiCisgICAgICAgICIiIgogICAgICAgICBzdXBlciggRGF0YXNldE1hbmFnZXIsIHNl
bGYgKS5fX2luaXRfXyggYXBwICkKICAgICAgICAgc2VsZi51c2VyX21nciA9M0QgdXNlcnMuVXNl
ck1hbmFnZXIoIGFwcCApCj0yMAotICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0tIENSVUQKKyAgICAj
IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uPQouLi4uLiBjcmVhdGUKICAgICBkZWYgY3JlYXRlKCBzZWxmLCB0cmFucywg
Zmx1c2g9M0RUcnVlLCAqKmt3YXJncyApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAg
ICAgICMgZGVmYXVsdCB0byBORVcgc3RhdGUgb24gbmV3IGRhdGFzZXRzCiAgICAgICAgIGt3YXJn
cy51cGRhdGUoIGRpY3QoIHN0YXRlPTNEKCBrd2FyZ3MuZ2V0KCAnc3RhdGUnLCBtb2RlbC5EYXRh
c2V0Lj0Kc3RhdGVzLk5FVyApICkgKSApCiAgICAgICAgIGRhdGFzZXQgPTNEIG1vZGVsLkRhdGFz
ZXQoICoqa3dhcmdzICkKQEAgLTMxLDE2ICszNywyNiBAQAogICAgICAgICAgICAgdHJhbnMuc2Ff
c2Vzc2lvbi5mbHVzaCgpCiAgICAgICAgIHJldHVybiBkYXRhc2V0Cj0yMAotICAgICNkZWYgdG9f
aGRhKCBzZWxmLCB0cmFucywgZGF0YXNldCwgaGlzdG9yeSwgKiprd2FyZ3MgKToKLSAgICAjICAg
IHBhc3MKKyAgICBkZWYgY29weSggc2VsZiApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCisg
ICAgICAgIHBhc3MKPTIwCi0gICAgI2RlZiB0b19sZGRhKCBzZWxmLCB0cmFucywgZGF0YXNldCwg
bGlicmFyeV9mb2xkZXIsICoqa3dhcmdzICk6Ci0gICAgIyAgICBwYXNzCisgICAgIyAuLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLj0KLi4uLi4gYWRkIHRvIGRhdGFzZXQgYXNzb2NpYXRpb24KKyAgICBkZWYgdG9faGRhKCBz
ZWxmLCB0cmFucywgZGF0YXNldCwgaGlzdG9yeSwgKiprd2FyZ3MgKToKKyAgICAgICAgIiIiCisg
ICAgICAgICIiIgorICAgICAgICBwYXNzCj0yMAotICAgICNkZWYgY29weSggc2VsZiApOgotICAg
ICMgICAgcGFzcworICAgIGRlZiB0b19sZGRhKCBzZWxmLCB0cmFucywgZGF0YXNldCwgbGlicmFy
eV9mb2xkZXIsICoqa3dhcmdzICk6CisgICAgICAgICIiIgorICAgICAgICAiIiIKKyAgICAgICAg
cGFzcwo9MjAKKyAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBkZWxldGUKICAgICBkZWYgcHVyZ2Uo
IHNlbGYsIHRyYW5zLCBkYXRhc2V0LCBmbHVzaD0zRFRydWUgKToKKyAgICAgICAgIiIiCisgICAg
ICAgICIiIgogICAgICAgICBzZWxmLmVycm9yX3VubGVzc19kYXRhc2V0X3B1cmdlX2FsbG93ZWQo
IHRyYW5zLCBkYXRhc2V0ICkKPTIwCiAgICAgICAgICMgdGhlIGZvbGxvd2luZyBhbHNvIG1hcmtz
IGRhdGFzZXQgYXMgcHVyZ2VkIGFuZCBkZWxldGVkCkBAIC01MCwxMCArNjYsMTIgQEAKICAgICAg
ICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uZmx1c2goKQogICAgICAgICByZXR1cm4gZGF0YXNldAo9
MjAKLSAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tPQotLS0tLSBhY2Nlc3NpYmlsaXR5CisgICAgIyAuLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLj0KLi4uLi4gYWNjZXNzaWJpbGl0eQogICAgICMgZGF0YXNldHMgY2FuIGltcGxlbWVudCB0
aGUgYWNjZXNzaWJsZSBpbnRlcmZhY2UsIGJ1dCBhY2Nlc3NpYmlsaXR5IGk9CnMgY2hlY2tlZCBp
biBhbiBlbnRpcmVseSBkaWZmZXJlbnQgd2F5CiAgICAgIyAgIHRoYW4gdGhvc2UgcmVzb3VyY2Vz
IHRoYXQgaGF2ZSBhIHVzZXIgYXR0cmlidXRlIChoaXN0b3JpZXMsIHBhZ2VzLD0KIGV0Yy4pCiAg
ICAgZGVmIGlzX2FjY2Vzc2libGUoIHNlbGYsIHRyYW5zLCBkYXRhc2V0LCB1c2VyICk6CisgICAg
ICAgICIiIgorICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi51c2VyX21nci5pc19hZG1pbigg
dHJhbnMsIHVzZXIgKToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIGlmIHNlbGYu
aGFzX2FjY2Vzc19wZXJtaXNzaW9uKCB0cmFucywgZGF0YXNldCwgdXNlciApOgpAQCAtNjEsNTEg
Kzc5LDExMyBAQAogICAgICAgICByZXR1cm4gRmFsc2UKPTIwCiAgICAgZGVmIGhhc19hY2Nlc3Nf
cGVybWlzc2lvbiggc2VsZiwgdHJhbnMsIGRhdGFzZXQsIHVzZXIgKToKLSAgICAgICAgcmV0dXJu
IHRyYW5zLmFwcC5zZWN1cml0eV9hZ2VudC5jYW5fYWNjZXNzX2RhdGFzZXQoIHVzZXIucm9sZXMs
IGRhPQp0YXNldCApCisgICAgICAgICIiIgorICAgICAgICAiIiIKKyAgICAgICAgcm9sZXMgPTNE
IHVzZXIucm9sZXMgaWYgdXNlciBlbHNlIFtdCisgICAgICAgIHJldHVybiB0cmFucy5hcHAuc2Vj
dXJpdHlfYWdlbnQuY2FuX2FjY2Vzc19kYXRhc2V0KCByb2xlcywgZGF0YXNldD0KICkKPTIwCi0g
ICAgI2RlZiBnaXZlX2FjY2Vzc19wZXJtaXNzaW9uKCBzZWxmLCB0cmFucywgZGF0YXNldCwgdXNl
ciApOgotICAgICMgICAgcGVybWlzc2lvbiA9M0Qge30KLSAgICAjICAgICNUT0RPOj8/IGlzIHRo
aXMgY29ycmVjdCBhbmQgcmVsaWFibGU/Ci0gICAgIyAgICB1c2VyX3ByaXZhdGVfcm9sZSA9M0Qg
c2VsZi51c2VyX21nci5wcml2YXRlX3JvbGUoIHRyYW5zLCB1c2VyICkKLSAgICAjICAgIHBlcm1p
c3Npb25bIHRyYW5zLmFwcC5zZWN1cml0eV9hZ2VudC5wZXJtaXR0ZWRfYWN0aW9ucy5EQVRBU0VU
X0FDPQpDRVNTIF0gPTNEIFsgdXNlcl9wcml2YXRlX3JvbGUgXQotICAgICMgICAgdHJhbnMuYXBw
LnNlY3VyaXR5X2FnZW50LnNldF9kYXRhc2V0X3Blcm1pc3Npb24oIGRhdGFzZXQsIHBlcm1pc3M9
CmlvbiApCisgICAgZGVmIGdpdmVfYWNjZXNzX3Blcm1pc3Npb24oIHNlbGYsIHRyYW5zLCBkYXRh
c2V0LCB1c2VyICk6CisgICAgICAgICIiIgorICAgICAgICAiIiIKKyAgICAgICAgI3Blcm1pc3Np
b24gPTNEIHt9CisgICAgICAgICMjVE9ETzo/PyBpcyB0aGlzIGNvcnJlY3QgYW5kIHJlbGlhYmxl
PworICAgICAgICAjdXNlcl9wcml2YXRlX3JvbGUgPTNEIHNlbGYudXNlcl9tZ3IucHJpdmF0ZV9y
b2xlKCB0cmFucywgdXNlciApCisgICAgICAgICNwZXJtaXNzaW9uWyB0cmFucy5hcHAuc2VjdXJp
dHlfYWdlbnQucGVybWl0dGVkX2FjdGlvbnMuREFUQVNFVF9BQz0KQ0VTUyBdID0zRCBbIHVzZXJf
cHJpdmF0ZV9yb2xlIF0KKyAgICAgICAgI3RyYW5zLmFwcC5zZWN1cml0eV9hZ2VudC5zZXRfZGF0
YXNldF9wZXJtaXNzaW9uKCBkYXRhc2V0LCBwZXJtaXNzPQppb24gKQorICAgICAgICBwYXNzCj0y
MAorICAgIGRlZiByZW1vdmVfYWNjZXNzX3Blcm1pc3Npb24oIHNlbGYsIHRyYW5zLCBkYXRhc2V0
LCB1c2VyICk6CisgICAgICAgICIiIgorICAgICAgICAiIiIKKyAgICAgICAgcGFzcwo9MjAKLSAg
ICAjZGVmIHJlbW92ZV9hY2Nlc3NfcGVybWlzc2lvbiggc2VsZiwgdHJhbnMsIGRhdGFzZXQsIHVz
ZXIgKToKLSAgICAjICAgIHBhc3MKKyAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBtYW5hZ2UvbW9k
aWZ5CisgICAgZGVmIGhhc19tYW5hZ2VfcGVybWlzc2lvbiggc2VsZiwgdHJhbnMsIGRhdGFzZXQs
IHVzZXIgKToKKyAgICAgICAgIiIiCisgICAgICAgICIiIgorICAgICAgICBwYXNzCj0yMAorICAg
IGRlZiBnaXZlX21hbmFnZV9wZXJtaXNzaW9uKCBzZWxmLCB0cmFucywgZGF0YXNldCwgdXNlciAp
OgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCisgICAgICAgIHBhc3MKPTIwCi0gICAgI2RlZiBo
YXNfbWFuYWdlX3Blcm1pc3Npb24oIHNlbGYsIHRyYW5zLCBkYXRhc2V0LCB1c2VyICk6Ci0gICAg
IyAgICBwYXNzCi0gICAgIwotICAgICNkZWYgZ2l2ZV9tYW5hZ2VfcGVybWlzc2lvbiggc2VsZiwg
dHJhbnMsIGRhdGFzZXQsIHVzZXIgKToKLSAgICAjICAgIHBhc3MKLSAgICAjCi0gICAgI2RlZiBy
ZW1vdmVfbWFuYWdlX3Blcm1pc3Npb24oIHNlbGYsIHRyYW5zLCBkYXRhc2V0LCB1c2VyICk6Ci0g
ICAgIyAgICBwYXNzCi0KKyAgICBkZWYgcmVtb3ZlX21hbmFnZV9wZXJtaXNzaW9uKCBzZWxmLCB0
cmFucywgZGF0YXNldCwgdXNlciApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCisgICAgICAg
IHBhc3MKPTIwCiAgICAgI1RPRE86IGltcGxlbWVudCBhYm92ZSBmb3IgZ3JvdXBzCisgICAgI1RP
RE86IGRhdGF0eXBlcz8KKyAgICAjVE9ETzogZGF0YSwgb2JqZWN0X3N0b3JlCj0yMAotI1RPRE86
IGRhdGF0eXBlcz8KKworIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKK2NsYXNzIERhdGFzZXRTZXJpYWxpemVyKCBiYXNl
Lk1vZGVsU2VyaWFsaXplciApOgorCisgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToKKyAg
ICAgICAgc3VwZXIoIERhdGFzZXRTZXJpYWxpemVyLCBzZWxmICkuX19pbml0X18oIGFwcCApCisK
KyAgICAgICAgIyBtb3N0IG9mIHRoZXNlIHZpZXdzIGJ1aWxkL2FkZCB0byB0aGUgcHJldmlvdXMg
dmlldworICAgICAgICBzdW1tYXJ5X3ZpZXcgPTNEIFsKKyAgICAgICAgICAgICdpZCcsCisgICAg
ICAgICAgICAnY3JlYXRlX3RpbWUnLCAndXBkYXRlX3RpbWUnLAorICAgICAgICAgICAgJ3N0YXRl
JywKKyAgICAgICAgICAgICdkZWxldGVkJywgJ3B1cmdlZCcsICdwdXJnYWJsZScsCisgICAgICAg
ICAgICAjJ29iamVjdF9zdG9yZV9pZCcsCisgICAgICAgICAgICAjJ2V4dGVybmFsX2ZpbGVuYW1l
JywKKyAgICAgICAgICAgICMnZXh0cmFfZmlsZXNfcGF0aCcsCisgICAgICAgICAgICAnZmlsZV9z
aXplJywgJ3RvdGFsX3NpemUnLAorICAgICAgICAgICAgJ3V1aWQnLAorICAgICAgICBdCisgICAg
ICAgICMgY291bGQgZG8gdmlzdWFsaXphdGlvbnMgYW5kL29yIGRpc3BsYXlfYXBwcworCisgICAg
ICAgIHNlbGYuc2VyaWFsaXphYmxlX2tleXMgPTNEIHN1bW1hcnlfdmlldyArIFsKKyAgICAgICAg
XQorICAgICAgICBzZWxmLnZpZXdzID0zRCB7CisgICAgICAgICAgICAnc3VtbWFyeScgICA6IHN1
bW1hcnlfdmlldywKKyAgICAgICAgfQorICAgICAgICBzZWxmLmRlZmF1bHRfdmlldyA9M0QgJ3N1
bW1hcnknCisKKyAgICBkZWYgYWRkX3NlcmlhbGl6ZXJzKCBzZWxmICk6CisgICAgICAgIHNlbGYu
c2VyaWFsaXplcnMudXBkYXRlKHsKKyAgICAgICAgICAgICdpZCcgICAgICAgICAgICA6IHNlbGYu
c2VyaWFsaXplX2lkLAorICAgICAgICAgICAgJ2NyZWF0ZV90aW1lJyAgIDogc2VsZi5zZXJpYWxp
emVfZGF0ZSwKKyAgICAgICAgICAgICd1cGRhdGVfdGltZScgICA6IHNlbGYuc2VyaWFsaXplX2Rh
dGUsCisgICAgICAgICAgICAndXVpZCcgICAgICAgICAgOiBsYW1iZGEgdCwgaSwgazogc3RyKCBp
LnV1aWQgKSBpZiBpLnV1aWQgZWxzZT0KIE5vbmUsCisgICAgICAgIH0pCisKKworY2xhc3MgRGF0
YXNldERlc2VyaWFsaXplciggYmFzZS5Nb2RlbERlc2VyaWFsaXplciApOgorICAgIHBhc3MKPTIw
Cj0yMAogIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPQo9M0Q9M0Q9M0QKIGNsYXNzIERhdGFzZXRBc3NvY2lhdGlvbk1hbmFnZXIoIGJhc2Uu
TW9kZWxNYW5hZ2VyLCBiYXNlLkFjY2Vzc2libGVNb2RlbEluPQp0ZXJmYWNlLCBiYXNlLlB1cmdh
YmxlTW9kZWxJbnRlcmZhY2UgKToKKyAgICAiIiIKKyAgICAiIiIKICAgICAjIEEgZGF0YXNldCBh
c3NvY2lhdGlvbiBIQVMgYSBkYXRhc2V0IGJ1dCBjb250YWlucyBtZXRhZGF0YSBzcGVjaWZpYyB0
PQpvIGEgbGlicmFyeSAobGRhKSBvciB1c2VyIChoZGEpCiAgICAgbW9kZWxfY2xhc3MgPTNEIG1v
ZGVsLkRhdGFzZXRJbnN0YW5jZQogICAgIGRlZmF1bHRfb3JkZXJfYnkgPTNEICggbW9kZWwuRGF0
YXNldC5jcmVhdGVfdGltZSwgKQo9MjAKICAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgor
ICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgIHN1cGVyKCBEYXRhc2V0QXNzb2NpYXRp
b25NYW5hZ2VyLCBzZWxmICkuX19pbml0X18oIGFwcCApCiAgICAgICAgIHNlbGYuZGF0YXNldF9t
Z3IgPTNEIERhdGFzZXRNYW5hZ2VyKCBhcHAgKQo9MjAKICAgICBkZWYgaXNfYWNjZXNzaWJsZSgg
c2VsZiwgdHJhbnMsIGRhdGFzZXRfYXNzb2MsIHVzZXIgKToKKyAgICAgICAgIiIiCisgICAgICAg
ICIiIgogICAgICAgICAjIGRlZmVyIHRvIHRoZSBkYXRhc2V0CiAgICAgICAgIHJldHVybiBzZWxm
LmRhdGFzZXRfbWdyLmlzX2FjY2Vzc2libGUoIHRyYW5zLCBkYXRhc2V0X2Fzc29jLmRhdGFzZT0K
dCwgdXNlciApCj0yMAogICAgIGRlZiBtZXRhZGF0YSggc2VsZiwgdHJhbnMsIGRhdGFzZXRfYXNz
b2MgKToKKyAgICAgICAgIiIiCisgICAgICAgICIiIgogICAgICAgICBwYXNzCj0yMAogICAgIGRl
ZiBpc19iZWluZ191c2VkKCBzZWxmLCB0cmFucywgZGF0YXNldF9hc3NvYyApOgorICAgICAgICAi
IiIKKyAgICAgICAgIiIiCiAgICAgICAgIHBhc3MKCmRpZmYgLXIgNWQwZmNhNTkxMzk0ZDdlN2Fh
YWJhZGZjZGVkOWY4MzdmZDQzNmVkMiAtciA0YmRlNzBjNjc3YTkyZGRhNzIxMmVjYz0KNGNkOWVh
OWM0ZDNlYzY5NTIgbGliL2dhbGF4eS9tYW5hZ2Vycy9oZGFzLnB5Ci0tLSBhL2xpYi9nYWxheHkv
bWFuYWdlcnMvaGRhcy5weQorKysgYi9saWIvZ2FsYXh5L21hbmFnZXJzL2hkYXMucHkKQEAgLTQs
NiArNCw3IEBACiBIaXN0b3J5RGF0YXNldEFzc29jaWF0aW9ucyAoSERBcykgYXJlIGRhdGFzZXRz
IGNvbnRhaW5lZCBvciBjcmVhdGVkIGluIGEKIGhpc3RvcnkuCiAiIiIKKwogaW1wb3J0IGdldHRl
eHQKPTIwCiBmcm9tIGdhbGF4eSBpbXBvcnQgbW9kZWwKQEAgLTE5LDcgKzIwLDggQEAKPTIwCj0y
MAogIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPQo9M0Q9M0Q9M0QKLWNsYXNzIEhEQU1hbmFnZXIoIGRhdGFzZXRzLkRhdGFzZXRBc3NvY2lh
dGlvbk1hbmFnZXIgKToKK2NsYXNzIEhEQU1hbmFnZXIoIGRhdGFzZXRzLkRhdGFzZXRBc3NvY2lh
dGlvbk1hbmFnZXIsIGJhc2UuT3duYWJsZU1vZGVsSW50PQplcmZhY2UgKToKKyAgICAjVE9ETzog
bW92ZSB3aGF0IG1ha2VzIHNlbnNlIGludG8gRGF0YXNldE1hbmFnZXIKICAgICAiIiIKICAgICBJ
bnRlcmZhY2Uvc2VydmljZSBvYmplY3QgZm9yIGludGVyYWN0aW5nIHdpdGggSERBcy4KICAgICAi
IiIKQEAgLTMyLDcgKzM0LDIzIEBACiAgICAgICAgICIiIgogICAgICAgICBzdXBlciggSERBTWFu
YWdlciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQo9MjAKKyAgICBkZWYgaXNfYWNjZXNzaWJsZSgg
c2VsZiwgdHJhbnMsIGhkYSwgdXNlciApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCisgICAg
ICAgIGlmIHNlbGYuaXNfb3duZWQoIHRyYW5zLCBoZGEsIHVzZXIgKToKKyAgICAgICAgICAgIHJl
dHVybiBUcnVlCisgICAgICAgIHJldHVybiBzdXBlciggSERBTWFuYWdlciwgc2VsZiApLmlzX2Fj
Y2Vzc2libGUoIHRyYW5zLCBoZGEsIHVzZXIgKQorCisgICAgZGVmIGlzX293bmVkKCBzZWxmLCB0
cmFucywgaGRhLCB1c2VyICk6CisgICAgICAgICIiIgorICAgICAgICBVc2UgaGlzdG9yeSB0byBz
ZWUgaWYgY3VycmVudCB1c2VyIG93bnMgSERBLgorICAgICAgICAiIiIKKyAgICAgICAgI1RPRE86
IHRoaXMgbWF5IGJlIHNsb3cgZHVlIHRvIEhpc3RvcnlNYW5hZ2VyIGluc3RhbnRpYXRpb24gYW5k
IHBvPQpzc2libGUgMm5kIHRyYW5zYWN0aW9uIHRvIGdldCB0aGUgaGRhLmhpc3RvcnkKKyAgICAg
ICAgcmV0dXJuIGhpc3Rvcmllcy5IaXN0b3J5TWFuYWdlciggc2VsZi5hcHAgKS5pc19vd25lcigg
dHJhbnMsIGhkYS5oPQppc3RvcnksIHVzZXIgKQorCiAgICAgZGVmIGNyZWF0ZSggc2VsZiwgdHJh
bnMsIGhpc3Rvcnk9M0ROb25lLCBkYXRhc2V0PTNETm9uZSwgZmx1c2g9M0RUcnVlLD0KICoqa3dh
cmdzICk6CisgICAgICAgICIiIgorICAgICAgICAiIiIKICAgICAgICAgaWYgbm90IGRhdGFzZXQ6
CiAgICAgICAgICAgICBrd2FyZ3NbICdjcmVhdGVfZGF0YXNldCcgXSA9M0QgVHJ1ZQogICAgICAg
ICBoZGEgPTNEIHN1cGVyKCBIREFNYW5hZ2VyLCBzZWxmICkuY3JlYXRlKCB0cmFucywgZmx1c2g9
M0RmbHVzaCwKQEAgLTQzLDYgKzYxLDggQEAKICAgICAgICAgcmV0dXJuIGhkYQo9MjAKICAgICBk
ZWYgY29weV9oZGEoIHNlbGYsIHRyYW5zLCBoZGEsIGhpc3Rvcnk9M0ROb25lLCAqKmt3YXJncyAp
OgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgICNUT0RPOj8/IG5vdCB1c2luZyB0
aGUgZm9sbG93aW5nIGFzIHRoaXMgZm4gZG9lcyBub3Qgc2V0IGhpc3RvcnkgYT0KbmQgQ09QSUVT
IGhpZCAodGhpcyBkb2Vzbid0IHNlZW0gY29ycmVjdCkKICAgICAgICAgI3JldHVybiBoZGEuY29w
eSgpCiAgICAgICAgIGNvcHkgPTNEIG1vZGVsLkhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb24oCkBA
IC03OCwxNyArOTgsMjQgQEAKICAgICAgICAgcmV0dXJuIGNvcHkKPTIwCiAgICAgZGVmIGNvcHlf
bGRkYSggc2VsZiwgdHJhbnMsIGhpc3RvcnksIGxkZGEsICoqa3dhcmdzICk6CisgICAgICAgICIi
IgorICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIGxkZGEudG9faGlzdG9yeV9kYXRhc2V0X2Fz
c29jaWF0aW9uKCBoaXN0b3J5LCBhZGRfdG9faGlzdG9yPQp5PTNEVHJ1ZSApCj0yMAogIyAgICBk
ZWYgYnlfaGlzdG9yeV9pZCggc2VsZiwgdHJhbnMsIGhpc3RvcnlfaWQsIGZpbHRlcnM9M0ROb25l
LCAqKmt3YXJncyA9Cik6CiAjICAgICAgICBoaXN0b3J5X2lkX2ZpbHRlciA9M0Qgc2VsZi5tb2Rl
bF9jbGFzcy5oaXN0b3J5X2lkID0zRD0zRCBoaXN0b3J5Xz0KaWQKICMgICAgICAgIGZpbHRlcnMg
PTNEIHNlbGYuX211bmdlX2ZpbHRlcnMoIGhpc3RvcnlfaWRfZmlsdGVyLCBmaWx0ZXJzICkKICMg
ICAgICAgIHJldHVybiBzZWxmLmxpc3QoIHRyYW5zLCBmaWx0ZXJzPTNEZmlsdGVycywgKiprd2Fy
Z3MgKQotIworCiAjICAgICNkZWYgYnlfaGlzdG9yeSggc2VsZiwgdHJhbnMsIGhpc3RvcnksIGZp
bHRlcnM9M0ROb25lLCAqKmt3YXJncyApOgogIyAgICAjICAgIHJldHVybiBoaXN0b3J5LmRhdGFz
ZXRzCj0yMAorICAgICNkZWYgYnlfdXNlciggc2VsZiwgdHJhbnMsIHVzZXIgKToKKyAgICAjICAg
IHBhc3MKKwogICAgIGRlZiBwdXJnZSggc2VsZiwgdHJhbnMsIGhkYSApOgorICAgICAgICAiIiIK
KyAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuZXJyb3JfdW5sZXNzX2RhdGFzZXRfcHVyZ2VfYWxs
b3dlZCggdHJhbnMsIGhkYSApCiAgICAgICAgIHN1cGVyKCBIREFNYW5hZ2VyLCBzZWxmICkucHVy
Z2UoIHRyYW5zLCBoZGEsIGZsdXNoPTNEVHJ1ZSApCj0yMApAQCAtMjE5LDYgKzI0Niw4IEBACiAg
ICAgICAgIHJldHVybiBkaXNwbGF5X2FwcHMKPTIwCiAgICAgZGVmIGdldF92aXN1YWxpemF0aW9u
cyggc2VsZiwgdHJhbnMsIGhkYSApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAg
ICMgdXNlIG9sZGVyIHN5c3RlbSBpZiByZWdpc3RyeSBpcyBvZmYgaW4gdGhlIGNvbmZpZwogICAg
ICAgICBpZiBub3QgdHJhbnMuYXBwLnZpc3VhbGl6YXRpb25zX3JlZ2lzdHJ5OgogICAgICAgICAg
ICByZXR1cm4gaGRhLmdldF92aXN1YWxpemF0aW9ucygpCkBAIC00MjMsNzYgKzQ1MiwxMCBAQAog
ICAgICMgICAgICAgICAgICAgICAgam9iLm1hcmtfZGVsZXRlZCggc2VsZi5hcHAuY29uZmlnLnRy
YWNrX2pvYnNfaW5fZGF0YWI9CmFzZSApCiAgICAgIyAgICAgICAgICAgICAgICBzZWxmLmFwcC5q
b2JfbWFuYWdlci5qb2Jfc3RvcF9xdWV1ZS5wdXQoIGpvYi5pZCApCj0yMAotIyBvbGQgZmlsZQot
ICAgICNkZWYgZ2V0KCBzZWxmLCB0cmFucywgdW5lbmNvZGVkX2lkLCBjaGVja19vd25lcnNoaXA9
M0RUcnVlLCBjaGVja19hY2M9CmVzc2libGU9M0RUcnVlICk6Ci0gICAgIyAgICAiIiIKLSAgICAj
ICAgIEdldCBhbiBIREEgYnkgaXRzIHVuZW5jb2RlZCBkYiBpZCwgY2hlY2tpbmcgb3duZXJzaGlw
ICh2aWEgaXRzIGhpPQpzdG9yeSkKLSAgICAjICAgIG9yIGFjY2Vzc2liaWxpdHkgKHZpYSBkYXRh
c2V0IHNoYXJlcy9wZXJtaXNzaW9ucykuCi0gICAgIyAgICAiIiIKLSAgICAjICAgIGhkYSA9M0Qg
dHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggdHJhbnMuYXBwLm1vZGVsLkhpc3RvcnlEYXRhc2V0QXNz
PQpvY2lhdGlvbiApLmdldCggdW5lbmNvZGVkX2lkICkKLSAgICAjICAgIGlmIGhkYSBpcyBOb25l
OgotICAgICMgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuT2JqZWN0Tm90Rm91bmQoKQotICAgICMg
ICAgaGRhID0zRCBzZWxmLnNlY3VyZSggdHJhbnMsIGhkYSwgY2hlY2tfb3duZXJzaGlwLCBjaGVj
a19hY2Nlc3NpYmw9CmUgKQotICAgICMgICAgcmV0dXJuIGhkYQotICAgICMKLSAgICAjZGVmIHNl
Y3VyZSggc2VsZiwgdHJhbnMsIGhkYSwgY2hlY2tfb3duZXJzaGlwPTNEVHJ1ZSwgY2hlY2tfYWNj
ZXNzaWJsPQplPTNEVHJ1ZSApOgotICAgICMgICAgIiIiCi0gICAgIyAgICBjaGVjayBvd25lcnNo
aXAgKHZpYSBpdHMgaGlzdG9yeSkgb3IgYWNjZXNzaWJpbGl0eSAodmlhIGRhdGFzZXQKLSAgICAj
ICAgIHNoYXJlcy9wZXJtaXNzaW9ucykuCi0gICAgIyAgICAiIiIKLSAgICAjICAgICMgYWxsIGl0
ZW1zIGFyZSBhY2Nlc3NpYmxlIHRvIGFuIGFkbWluCi0gICAgIyAgICBpZiB0cmFucy51c2VyIGFu
ZCB0cmFucy51c2VyX2lzX2FkbWluKCk6Ci0gICAgIyAgICAgICAgcmV0dXJuIGhkYQotICAgICMg
ICAgaWYgY2hlY2tfb3duZXJzaGlwOgotICAgICMgICAgICAgIGhkYSA9M0Qgc2VsZi5jaGVja19v
d25lcnNoaXAoIHRyYW5zLCBoZGEgKQotICAgICMgICAgaWYgY2hlY2tfYWNjZXNzaWJsZToKLSAg
ICAjICAgICAgICBoZGEgPTNEIHNlbGYuY2hlY2tfYWNjZXNzaWJsZSggdHJhbnMsIGhkYSApCi0g
ICAgIyAgICByZXR1cm4gaGRhCi0gICAgIwotICAgICNkZWYgY2FuX2FjY2Vzc19kYXRhc2V0KCBz
ZWxmLCB0cmFucywgaGRhICk6Ci0gICAgIyAgICAiIiIKLSAgICAjICAgIFVzZSBzZWN1cml0eSBh
Z2VudCB0byBzZWUgaWYgY3VycmVudCB1c2VyIGhhcyBhY2Nlc3MgdG8gZGF0YXNldC4KLSAgICAj
ICAgICIiIgotICAgICMgICAgY3VycmVudF91c2VyX3JvbGVzID0zRCB0cmFucy5nZXRfY3VycmVu
dF91c2VyX3JvbGVzKCkKLSAgICAjICAgIHJldHVybiB0cmFucy5hcHAuc2VjdXJpdHlfYWdlbnQu
Y2FuX2FjY2Vzc19kYXRhc2V0KCBjdXJyZW50X3VzZXJfPQpyb2xlcywgaGRhLmRhdGFzZXQgKQot
ICAgICMKLSAgICAjI1RPRE86IGlzX293bmVyLCBpc19hY2Nlc3NpYmxlCi0gICAgIwotICAgICNk
ZWYgY2hlY2tfb3duZXJzaGlwKCBzZWxmLCB0cmFucywgaGRhICk6Ci0gICAgIyAgICAiIiIKLSAg
ICAjICAgIFVzZSBoaXN0b3J5IHRvIHNlZSBpZiBjdXJyZW50IHVzZXIgb3ducyBIREEuCi0gICAg
IyAgICAiIiIKLSAgICAjICAgIGlmIG5vdCB0cmFucy51c2VyOgotICAgICMgICAgICAgICNpZiBo
ZGEuaGlzdG9yeSA9M0Q9M0QgdHJhbnMuaGlzdG9yeToKLSAgICAjICAgICAgICAjICAgIHJldHVy
biBoZGEKLSAgICAjICAgICAgICByYWlzZSBleGNlcHRpb25zLkF1dGhlbnRpY2F0aW9uUmVxdWly
ZWQoICJNdXN0IGJlIGxvZ2dlZCBpbiB0PQpvIG1hbmFnZSBHYWxheHkgZGF0YXNldHMiLCB0eXBl
PTNEJ2Vycm9yJyApCi0gICAgIyAgICBpZiB0cmFucy51c2VyX2lzX2FkbWluKCk6Ci0gICAgIyAg
ICAgICAgcmV0dXJuIGhkYQotICAgICMgICAgIyBjaGVjayBmb3Igb3duZXJzaGlwIG9mIHRoZSBj
b250YWluaW5nIGhpc3RvcnkgYW5kIGFjY2Vzc2liaWxpdHk9CiBvZiB0aGUgdW5kZXJseWluZyBk
YXRhc2V0Ci0gICAgIyAgICBpZiggc2VsZi5oaXN0b3JpZXNfbWdyLmlzX293bmVyKCB0cmFucywg
aGRhLmhpc3RvcnkgKQotICAgICMgICAgICAgICAgICBhbmQgc2VsZi5jYW5fYWNjZXNzX2RhdGFz
ZXQoIHRyYW5zLCBoZGEgKSApOgotICAgICMgICAgICAgIHJldHVybiBoZGEKLSAgICAjICAgIHJh
aXNlIGV4Y2VwdGlvbnMuSXRlbU93bmVyc2hpcEV4Y2VwdGlvbigKLSAgICAjICAgICAgICAiSGlz
dG9yeURhdGFzZXRBc3NvY2lhdGlvbiBpcyBub3Qgb3duZWQgYnkgdGhlIGN1cnJlbnQgdXNlciIs
PQogdHlwZT0zRCdlcnJvcicgKQotCi0gICAgI2RlZiBjaGVja19hY2Nlc3NpYmxlKCBzZWxmLCB0
cmFucywgaGRhICk6Ci0gICAgIyAgICAiIiIKLSAgICAjICAgIFJhaXNlIGVycm9yIGlmIEhEQSBp
cyBub3QgYWNjZXNzaWJsZS4KLSAgICAjICAgICIiIgotICAgICMgICAgaWYgdHJhbnMudXNlciBh
bmQgdHJhbnMudXNlcl9pc19hZG1pbigpOgotICAgICMgICAgICAgIHJldHVybiBoZGEKLSAgICAj
ICAgICMgY2hlY2sgZm9yIGFjY2VzcyBvZiB0aGUgY29udGFpbmluZyBoaXN0b3J5Li4uCi0gICAg
IyAgICBzZWxmLmhpc3Rvcmllc19tZ3IuY2hlY2tfYWNjZXNzaWJsZSggdHJhbnMsIGhkYS5oaXN0
b3J5ICkKLSAgICAjICAgICMgLi4udGhlbiB0aGUgdW5kZXJseWluZyBkYXRhc2V0Ci0gICAgIyAg
ICBpZiBzZWxmLmNhbl9hY2Nlc3NfZGF0YXNldCggdHJhbnMsIGhkYSApOgotICAgICMgICAgICAg
IHJldHVybiBoZGEKLSAgICAjICAgIHJhaXNlIGV4Y2VwdGlvbnMuSXRlbUFjY2Vzc2liaWxpdHlF
eGNlcHRpb24oCi0gICAgIyAgICAgICAgIkhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb24gaXMgbm90
IGFjY2Vzc2libGUgdG8gdGhlIGN1cnJlbnQgdT0Kc2VyIiwgdHlwZT0zRCdlcnJvcicgKQotCi0K
ICMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0KPTNEPTNEPTNECiBjbGFzcyBIREFTZXJpYWxpemVyKCBiYXNlLk1vZGVsU2VyaWFsaXplciAp
OgogICAgICNUT0RPOiBpbmhlcml0IGZyb20gZGF0YXNldHMuRGF0YXNldEFzc29jaWF0aW9uU2Vy
aWFsaXplcgorICAgICNUT0RPOiBtb3ZlIHdoYXQgbWFrZXMgc2Vuc2UgaW50byBEYXRhc2V0U2Vy
aWFsaXplcgo9MjAKICAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgogICAgICAgICBzdXBl
ciggSERBU2VyaWFsaXplciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQpAQCAtNTE3LDYgKzQ4MCw3
IEBACiAgICAgICAgICAgICAjIHdoeSBpbmNsdWRlIGlmIG1vZGVsX2NsYXNzIGlzIHRoZXJlPwog
ICAgICAgICAgICAgJ2hkYV9sZGRhJywgJ2hpc3RvcnlfY29udGVudF90eXBlJywKICAgICAgICAg
ICAgICdzdGF0ZScsCisgICAgICAgICAgICAjVE9ETzogYWNjZXNzaWJsZSBuZWVkcyB0byBnbyBh
d2F5CiAgICAgICAgICAgICAnYWNjZXNzaWJsZScsCiAgICAgICAgICAgICAnZGVsZXRlZCcsICdw
dXJnZWQnLCAndmlzaWJsZScsICdyZXN1Ym1pdHRlZCcsCj0yMApAQCAtNTY1LDYgKzUyOSw3IEBA
CiAgICAgZGVmIGFkZF9zZXJpYWxpemVycyggc2VsZiApOgogICAgICAgICBzZWxmLnNlcmlhbGl6
ZXJzLnVwZGF0ZSh7CiAgICAgICAgICAgICAnbW9kZWxfY2xhc3MnICAgOiBsYW1iZGEgKmE6ICdI
aXN0b3J5RGF0YXNldEFzc29jaWF0aW9uJywKKyAgICAgICAgICAgICNUT0RPOiBhY2Nlc3NpYmxl
IG5lZWRzIHRvIGdvIGF3YXkKICAgICAgICAgICAgICdhY2Nlc3NpYmxlJyAgICA6IGxhbWJkYSAq
YTogVHJ1ZSwKPTIwCiAgICAgICAgICAgICAnaWQnICAgICAgICAgICAgOiBzZWxmLnNlcmlhbGl6
ZV9pZCwKQEAgLTYyOSw2ICs1OTQsOCBAQAogICAgICAgICB9KQo9MjAKICAgICBkZWYgc2VyaWFs
aXplKCBzZWxmLCB0cmFucywgaGRhLCBrZXlzICk6CisgICAgICAgICIiIgorICAgICAgICAiIiIK
ICAgICAgICAgIyBpZiAnbWV0YWRhdGEnIGlzbid0IHJlbW92ZWQgZnJvbSBrZXlzIGhlcmUgc2Vy
aWFsaXplIHdpbGwgcmV0cmllPQp2ZSB0aGUgdW4tc2VyaWFsaXphYmxlIE1ldGFkYXRhQ29sbGVj
dGlvbgogICAgICAgICAjVE9ETzogcmVtb3ZlIHRoZXNlIHdoZW4gbWV0YWRhdGEgaXMgc3ViLW9i
amVjdAogICAgICAgICBLRVlTX0hBTkRMRURfU0VQQVJBVEVMWSA9M0QgKCAnbWV0YWRhdGEnLCAp
CkBAIC02NDAsNiArNjA3LDIwIEBACiAgICAgICAgICAgICBzZXJpYWxpemVkLnVwZGF0ZSggc2Vs
Zi5wcmVmaXhlZF9tZXRhZGF0YSggdHJhbnMsIGhkYSApICkKICAgICAgICAgcmV0dXJuIHNlcmlh
bGl6ZWQKPTIwCisgICAgI1RPRE86IHRoaXMgaXMgbW9yZSB1dGlsL2dlbi4gdXNlCisgICAgZGVm
IHBsdWNrX2Zyb21fbGlzdCggc2VsZiwgbCwgZWxlbXMgKToKKyAgICAgICAgIiIiCisgICAgICAg
IFJlbW92ZXMgZm91bmQgZWxlbXMgZnJvbSBsaXN0IGwgYW5kIHJldHVybnMgbGlzdCBvZiBmb3Vu
ZCBlbGVtcyBpZj0KIGZvdW5kLgorICAgICAgICAiIiIKKyAgICAgICAgZm91bmQgPTNEIFtdCisg
ICAgICAgIGZvciBlbGVtIGluIGVsZW1zOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAg
ICAgIGluZGV4ID0zRCBsLmluZGV4KCBlbGVtICkKKyAgICAgICAgICAgICAgICBmb3VuZC5hcHBl
bmQoIGwucG9wKCBpbmRleCApICkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCB2YWxf
ZXJyOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcmV0dXJuIGZvdW5kCisKICAgICBk
ZWYgcHJlZml4ZWRfbWV0YWRhdGEoIHNlbGYsIHRyYW5zLCBoZGEgKToKICAgICAgICAgIiIiCiAg
ICAgICAgIEFkZHMgKGEgcHJlZml4ZWQgdmVyc2lvbiBvZikgdGhlIGhkYSBtZXRhZGF0YSB0byB0
aGUgZGljdCwgcHJlZml4aT0KbmcgZWFjaCBrZXkKQEAgLTY1NSw2ICs2MzYsOCBAQAogICAgICAg
ICByZXR1cm4gcHJlZml4ZWQKPTIwCiAgICAgZGVmIHNlcmlhbGl6ZV9tZXRhZGF0YSggc2VsZiwg
dHJhbnMsIGhkYSwga2V5LCBleGNsdWRlZD0zRE5vbmUgKToKKyAgICAgICAgIiIiCisgICAgICAg
ICIiIgogICAgICAgICAjIGRia2V5IGlzIGEgcmVwZWF0IGFjdHVhbGx5IChtZXRhZGF0YV9kYmtl
eSA9M0Q9M0QgZ2Vub21lX2J1aWxkKQogICAgICAgICAjZXhjbHVkZWQgPTNEIFsgJ2Ria2V5JyBd
IGlmIGV4Y2x1ZGVkIGlzIE5vbmUgZWxzZSBleGNsdWRlZAogICAgICAgICBleGNsdWRlZCA9M0Qg
W10gaWYgZXhjbHVkZWQgaXMgTm9uZSBlbHNlIGV4Y2x1ZGVkCkBAIC02ODAsNiArNjYzLDggQEAK
PTIwCiAgICAgIyBhZGQgdG8gc2VyaWFsaXplX21ldGFkYXRhIGFib3ZlCiAgICAgZGVmIHNlcmlh
bGl6ZV9tZXRhX2ZpbGVzKCBzZWxmLCB0cmFucywgaGRhLCBrZXkgKToKKyAgICAgICAgIiIiCisg
ICAgICAgICIiIgogICAgICAgICBtZXRhX2ZpbGVzID0zRCBbXQogICAgICAgICBmb3IgbWV0YV90
eXBlIGluIGhkYS5tZXRhZGF0YS5zcGVjLmtleXMoKToKICAgICAgICAgICAgIGlmIGlzaW5zdGFu
Y2UoIGhkYS5tZXRhZGF0YS5zcGVjWyBtZXRhX3R5cGUgXS5wYXJhbSwgZ2FsYXh5LmRhPQp0YXR5
cGVzLm1ldGFkYXRhLkZpbGVQYXJhbWV0ZXIgKToKQEAgLTY4OSw2ICs2NzQsOCBAQAogICAgICNk
ZWYgZmlsZV9pbmZvICNUT0RPCiAgICAgI1RPRE86IGFuZCB0byBkYXRhc2V0IGluc3RlYWQgKHBh
c3NpbmcgdGhyb3VnaCBvYmplY3Qgc3RvcmUpCiAgICAgZGVmIHNlcmlhbGl6ZV9maWxlX3BhdGgo
IHNlbGYsIHRyYW5zLCBoZGEsIGtleSApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAjVE9E
TzogYWxsb3cgYWRtaW4KICAgICAgICAgaWYgdHJhbnMuYXBwLmNvbmZpZy5leHBvc2VfZGF0YXNl
dF9wYXRoOgogICAgICAgICAgICAgdHJ5OgpAQCAtNjk4LDYgKzY4NSw4IEBACiAgICAgICAgIHJl
dHVybiBOb25lCj0yMAogICAgIGRlZiBzZXJpYWxpemVfdXJscyggc2VsZiwgdHJhbnMsIGhkYSwg
a2V5ICk6CisgICAgICAgICIiIgorICAgICAgICAiIiIKICAgICAgICAgdXJsX2ZvciA9M0QgZ2Fs
YXh5LndlYi51cmxfZm9yCiAgICAgICAgIGVuY29kZWRfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmVu
Y29kZV9pZCggaGRhLmlkICkKICAgICAgICAgdXJscyA9M0QgewoKZGlmZiAtciA1ZDBmY2E1OTEz
OTRkN2U3YWFhYmFkZmNkZWQ5ZjgzN2ZkNDM2ZWQyIC1yIDRiZGU3MGM2NzdhOTJkZGE3MjEyZWNj
PQo0Y2Q5ZWE5YzRkM2VjNjk1MiBsaWIvZ2FsYXh5L21hbmFnZXJzL2hpc3Rvcmllcy5weQotLS0g
YS9saWIvZ2FsYXh5L21hbmFnZXJzL2hpc3Rvcmllcy5weQorKysgYi9saWIvZ2FsYXh5L21hbmFn
ZXJzL2hpc3Rvcmllcy5weQpAQCAtMjMsNyArMjMsNiBAQAogIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKIGNsYXNzIEhp
c3RvcnlNYW5hZ2VyKCBzaGFyYWJsZS5TaGFyYWJsZU1vZGVsTWFuYWdlciwgYmFzZS5QdXJnYWJs
ZU1vZGVsSW50PQplcmZhY2UgKToKICAgICAiIiIKLSAgICBJbnRlcmZhY2Uvc2VydmljZSBvYmpl
Y3QgZm9yIGludGVyYWN0aW5nIHdpdGggSERBcy4KICAgICAiIiIKICAgICBtb2RlbF9jbGFzcyA9
M0QgbW9kZWwuSGlzdG9yeQogICAgIGRlZmF1bHRfb3JkZXJfYnkgPTNEICggbW9kZWwuSGlzdG9y
eS5jcmVhdGVfdGltZSwgKQpAQCAtMzEsMjQgKzMwLDM2IEBACiAgICAgdXNlcl9zaGFyZV9tb2Rl
bCA9M0QgbW9kZWwuSGlzdG9yeVVzZXJTaGFyZUFzc29jaWF0aW9uCj0yMAogICAgIGRlZiBfX2lu
aXRfXyggc2VsZiwgYXBwLCAqYXJncywgKiprd2FyZ3MgKToKKyAgICAgICAgIiIiCisgICAgICAg
ICIiIgogICAgICAgICBzdXBlciggSGlzdG9yeU1hbmFnZXIsIHNlbGYgKS5fX2luaXRfXyggYXBw
LCAqYXJncywgKiprd2FyZ3MgKQogICAgICAgICBzZWxmLmhkYV9tZ3IgPTNEIGhkYXMuSERBTWFu
YWdlciggYXBwICkKPTIwCiAgICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLj0KLi4uLi4gY3J1ZAogICAgIGRlZiBj
b3B5KCBzZWxmLCB0cmFucywgaGlzdG9yeSwgdXNlciwgKiprd2FyZ3MgKToKKyAgICAgICAgIiIi
CisgICAgICAgICIiIgogICAgICAgICByZXR1cm4gaGlzdG9yeS5jb3B5KCB0YXJnZXRfdXNlcj0z
RHVzZXIsICoqa3dhcmdzICkKPTIwCiAgICAgZGVmIGdldF9jdXJyZW50KCBzZWxmLCB0cmFucyAp
OgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiB0cmFucy5nZXRfaGlz
dG9yeSgpCj0yMAogICAgIGRlZiBzZXRfY3VycmVudCggc2VsZiwgdHJhbnMsIGhpc3RvcnkgKToK
KyAgICAgICAgIiIiCisgICAgICAgICIiIgogICAgICAgICB0cmFucy5zZXRfaGlzdG9yeSggaGlz
dG9yeSApCiAgICAgICAgIHJldHVybiBoaXN0b3J5Cj0yMAogICAgIGRlZiBzZXRfY3VycmVudF9i
eV9pZCggc2VsZiwgdHJhbnMsIGhpc3RvcnlfaWQgKToKKyAgICAgICAgIiIiCisgICAgICAgICIi
IgogICAgICAgICByZXR1cm4gc2VsZi5zZXRfY3VycmVudCggdHJhbnMsIHNlbGYuYnlfaWQoIHRy
YW5zLCBoaXN0b3J5X2lkICkgKQo9MjAKICAgICBkZWYgbW9zdF9yZWNlbnQoIHNlbGYsIHRyYW5z
LCB1c2VyLCAqKmt3YXJncyApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgIGlm
IG5vdCB1c2VyOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUgaWYgdHJhbnMuaGlzdG9yeS5kZWxl
dGVkIGVsc2UgdHJhbnMuaGlzdG9yeQogICAgICAgICBkZXNjX3VwZGF0ZV90aW1lID0zRCBzZWxm
Lm1vZGVsX2NsYXNzLnRhYmxlLmMudXBkYXRlX3RpbWUKQEAgLTc5LDYgKzkwLDggQEAKPTIwCiAg
ICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLj0KLi4uLi4gcHVyZ2FibGUKICAgICBkZWYgcHVyZ2UoIHNlbGYsIHRy
YW5zLCBoaXN0b3J5LCBmbHVzaD0zRFRydWUsICoqa3dhcmdzICk6CisgICAgICAgICIiIgorICAg
ICAgICAiIiIKICAgICAgICAgc2VsZi5lcnJvcl91bmxlc3NfZGF0YXNldF9wdXJnZV9hbGxvd2Vk
KCB0cmFucywgaGlzdG9yeSApCj0yMAogICAgICAgICAjIEZpcnN0IHB1cmdlIGFsbCB0aGUgZGF0
YXNldHMKCmRpZmYgLXIgNWQwZmNhNTkxMzk0ZDdlN2FhYWJhZGZjZGVkOWY4MzdmZDQzNmVkMiAt
ciA0YmRlNzBjNjc3YTkyZGRhNzIxMmVjYz0KNGNkOWVhOWM0ZDNlYzY5NTIgbGliL2dhbGF4eS9t
YW5hZ2Vycy9zaGFyYWJsZS5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL3NoYXJhYmxlLnB5
CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvc2hhcmFibGUucHkKQEAgLTEyLDM3ICsxMiwzNyBA
QAo9MjAKPTIwCiAjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRAotY2xhc3MgU2hhcmFibGVNb2RlbE1hbmFnZXIoIGJhc2Uu
TW9kZWxNYW5hZ2VyLCBiYXNlLkFjY2Vzc2libGVNb2RlbEludGVyZmE9CmNlICk6Ci0gICAgIyBz
dXBlcmNsYXNzIHRoYXQgdXNlcyBpdHMgaW1wb3J0YWJsZSwgcGx1Ymxpc2hlZCwgb3IgdXNlcl9z
aGFyZV9hc3NvYz0KaWF0aW9ucyB0byBjaGVjayBhY2Nlc3NpYmlsaXR5CitjbGFzcyBTaGFyYWJs
ZU1vZGVsTWFuYWdlciggYmFzZS5Nb2RlbE1hbmFnZXIsIGJhc2UuT3duYWJsZU1vZGVsSW50ZXJm
YWNlLD0KIGJhc2UuQWNjZXNzaWJsZU1vZGVsSW50ZXJmYWNlICk6CisgICAgIiIiCisgICAgU3Vw
ZXJjbGFzcyBmb3IgbWFuYWdlcnMgb2YgYSBtb2RlbCB0aGF0OgorICAgICAgICBoYXMgYW4gb3du
ZXIvY3JlYXRvciBVc2VyCisgICAgICAgIGlzIHNoYXJhYmxlIHdpdGggb3RoZXIsIHNwZWNpZmlj
IFVzZXJzCisgICAgICAgIGlzIGltcG9ydGFibGUgKGNvcHlhYmxlKSBieSB1c2VycyB0aGF0IGhh
dmUgYWNjZXNzCisgICAgICAgIGhhcyBhIHNsdWcgd2hpY2ggY2FuIGJlIHVzZWQgYXMgYSBsaW5r
IHRvIHZpZXcgdGhlIHJlc291cmNlCisgICAgICAgIGNhbiBiZSBwdWJsaXNoZWQgZWZmZWN0aXZl
bHkgbWFraW5nIGl0IGF2YWlsYWJsZSB0byBhbGwgb3RoZXIgVXNlcnMKKyAgICAgICAgY2FuIGJl
IHJhdGVkCisgICAgIiIiCiAgICAgIyBoaXN0b3JpZXMsIHBhZ2VzLCBzdG9yZWQgd29ya2Zsb3dz
LCB2aXN1YWxpemF0aW9ucwogICAgIHVzZXJfc2hhcmVfbW9kZWwgPTNEIE5vbmUKPTIwCiAgICAg
ZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToKKyAgICAgICAgIiIiCisgICAgICAgICIiIgogICAg
ICAgICBzdXBlciggU2hhcmFibGVNb2RlbE1hbmFnZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwICkK
LSAgICAgICAgYXNzZXJ0IGhhc2F0dHIoIHNlbGYubW9kZWxfY2xhc3MsICd1c2VyX2lkJyApLCAo
Ci0gICAgICAgICAgICAnTm8gdXNlcl9pZCBvbiBTaGFyYWJsZSBtb2RlbDogJXMnICUoIHNlbGYu
bW9kZWxfY2xhc3NfbmFtZSApICkKLQotICAgICAgICBhc3NlcnQgc2VsZi51c2VyX3NoYXJlX21v
ZGVsLCAoCi0gICAgICAgICAgICAnTm8gVXNlclNoYXJlQXNzb2NpYXRpb24gb24gU2hhcmFibGUg
bW9kZWw6ICVzJyAlKCBzZWxmLm1vZGVsXz0KY2xhc3MuX19uYW1lX18gKSApCi0gICAgICAgIGFz
c2VydCBoYXNhdHRyKCBzZWxmLm1vZGVsX2NsYXNzLCAndXNlcnNfc2hhcmVkX3dpdGhfZG90X3Vz
ZXJzJyApLD0KICgKLSAgICAgICAgICAgICdObyB1c2Vyc19zaGFyZWRfd2l0aF9kb3RfdXNlcnMg
b24gU2hhcmFibGUgbW9kZWw6ICVzJyAlKCBzZWxmPQoubW9kZWxfY2xhc3MuX19uYW1lX18gKSAp
Ci0KLSNUT0RPOiBsaWJyYXJpZXMgZG8gbm90IGhhdmUgaW1wb3J0YWJsZQotICAgICAgICBhc3Nl
cnQgaGFzYXR0ciggc2VsZi5tb2RlbF9jbGFzcywgJ2ltcG9ydGFibGUnICksICgKLSAgICAgICAg
ICAgICdObyB1c2Vyc19zaGFyZWRfd2l0aF9kb3RfdXNlcnMgb24gU2hhcmFibGUgbW9kZWw6ICVz
JyAlKCBzZWxmPQoubW9kZWxfY2xhc3MuX19uYW1lX18gKSApCi0gICAgICAgIGFzc2VydCBoYXNh
dHRyKCBzZWxmLm1vZGVsX2NsYXNzLCAncHVibGlzaGVkJyApLCAoCi0gICAgICAgICAgICAnTm8g
cHVibGlzaGVkIG9uIFNoYXJhYmxlIG1vZGVsOiAlcycgJSggc2VsZi5tb2RlbF9jbGFzcy5fX25h
bT0KZV9fICkgKQotCiAgICAgICAgICMgdXNlciBtYW5hZ2VyIGlzIG5lZWRlZCB0byBjaGVjayBh
Y2Nlc3Mvb3duZXJzaGlwL2FkbWluCiAgICAgICAgIHNlbGYudXNlcl9tZ3IgPTNEIHVzZXJzLlVz
ZXJNYW5hZ2VyKCBhcHAgKQo9MjAKICAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBoYXMgYSB1c2Vy
CiAgICAgZGVmIF9xdWVyeV9ieV91c2VyKCBzZWxmLCB0cmFucywgdXNlciwgZmlsdGVycz0zRE5v
bmUsICoqa3dhcmdzICk6CisgICAgICAgICIiIgorICAgICAgICAiIiIKICAgICAgICAgdXNlcl9m
aWx0ZXIgPTNEIHNlbGYubW9kZWxfY2xhc3MudXNlcl9pZCA9M0Q9M0QgdXNlci5pZAogICAgICAg
ICBmaWx0ZXJzPTNEc2VsZi5fbXVuZ2VfZmlsdGVycyggdXNlcl9maWx0ZXIsIGZpbHRlcnMgKQog
ICAgICAgICByZXR1cm4gc2VsZi5xdWVyeSggdHJhbnMsIGZpbHRlcnM9M0RmaWx0ZXJzLCAqKmt3
YXJncyApCj0yMAogICAgIGRlZiBieV91c2VyKCBzZWxmLCB0cmFucywgdXNlciwgZmlsdGVycz0z
RE5vbmUsICoqa3dhcmdzICk6CisgICAgICAgICIiIgorICAgICAgICAiIiIKICAgICAgICAgdXNl
cl9maWx0ZXIgPTNEIHNlbGYubW9kZWxfY2xhc3MudXNlcl9pZCA9M0Q9M0QgdXNlci5pZAogICAg
ICAgICBmaWx0ZXJzPTNEc2VsZi5fbXVuZ2VfZmlsdGVycyggdXNlcl9maWx0ZXIsIGZpbHRlcnMg
KQogICAgICAgICAjbm90ZTogbm8gb3duZXJzaGlwIGNoZWNrIG5lZWRlZApAQCAtNTAsMTEgKzUw
LDkgQEAKPTIwCiAgICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLj0KLi4uLi4gb3duZWQgbW9kZWwgaW50ZXJmYWNl
CiAjIHRoaXMgcmVhbGx5IGlzIG1vcmUgb2YgYSAnY2hlY2tfKmVkaXRhYmxlL3dyaXRlKicgLSBp
biBlc3NlbmNlIHRoYXQncyB3aD0KYXQgY2hlY2tfb3duZXJzaGlwIGJvaWxzIGRvd24gdG8gb2Z0
ZW4KLSAgICBkZWYgb3duZXJzaGlwX2J5X2lkKCBzZWxmLCB0cmFucywgaWQsIHVzZXIsICoqa3dh
cmdzICk6Ci0gICAgICAgIGl0ZW0gPTNEIHN1cGVyKCBTaGFyYWJsZU1vZGVsTWFuYWdlciwgc2Vs
ZiApLmJ5X2lkKCB0cmFucywgaWQsICoqaz0Kd2FyZ3MgKQotICAgICAgICByZXR1cm4gc2VsZi5l
cnJvcl91bmxlc3Nfb3duZXIoIHRyYW5zLCBpdGVtLCB1c2VyICkKLQogICAgIGRlZiBpc19vd25l
ciggc2VsZiwgdHJhbnMsIGl0ZW0sIHVzZXIgKToKKyAgICAgICAgIiIiCisgICAgICAgICIiIgog
ICAgICAgICBpZiBzZWxmLnVzZXJfbWdyLmlzX2Fub255bW91cyggdXNlciApOgogICAgICAgICAg
ICAgIyBub3RlOiB0aGlzIG5lZWRzIHRvIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGNhc2Ugb2YgYW5v
biB1c2VycyA9CmFuZCBzZXNzaW9uLmN1cnJlbnRfaGlzdG9yeQogICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCkBAIC02MiwyMCArNjAsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAg
ICAgIHJldHVybiBpdGVtLnVzZXIgPTNEPTNEIHVzZXIKPTIwCi0gICAgZGVmIGVycm9yX3VubGVz
c19vd25lciggc2VsZiwgdHJhbnMsIGl0ZW0sIHVzZXIgKToKLSAgICAgICAgaWYgc2VsZi5pc19v
d25lciggdHJhbnMsIGl0ZW0sIHVzZXIgKToKLSAgICAgICAgICAgIHJldHVybiBpdGVtCi0gICAg
ICAgIHJhaXNlIGV4Y2VwdGlvbnMuSXRlbU93bmVyc2hpcEV4Y2VwdGlvbiggIiVzIGlzIG5vdCBv
d25lZCBieSB1c2VyIj0KICUgKCBzZWxmLm1vZGVsX2NsYXNzX25hbWUgKSApCi0KLSAgICBkZWYg
bGlzdF9vd25lZCggc2VsZiwgdHJhbnMsIHVzZXIsICoqa3dhcmdzICk6Ci0gICAgICAgIGl0ZW1z
ID0zRCBiYXNlLk1vZGVsTWFuYWdlci5saXN0KCBzZWxmLCB0cmFucywgKiprd2FyZ3MgKQotICAg
ICAgICByZXR1cm4gWyBzZWxmLmVycm9yX3VubGVzc19vd25lciggdHJhbnMsIGl0ZW0sIHVzZXIg
KSBmb3IgaXRlbSBpbiA9Cml0ZW1zIF0KLQotICAgIGRlZiBmaWx0ZXJfb3duZWQoIHNlbGYsIHRy
YW5zLCB1c2VyLCAqKmt3YXJncyApOgotICAgICAgICBwYXNzCi0KICAgICAjIC4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
PQouLi4uLiBhY2Nlc3NpYmxlIGludGVyZmFjZQogICAgIGRlZiBpc19hY2Nlc3NpYmxlKCBzZWxm
LCB0cmFucywgaXRlbSwgdXNlciApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAg
IGlmIGl0ZW0uaW1wb3J0YWJsZToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgICMg
bm90ZTogb3duZXJzIGFsd2F5cyBoYXZlIGFjY2VzcyAtIGNoZWNraW5nIGZvciBhY2Nlc3NpYmxl
IGltcGxpYz0KaXRseSBjaGVja3MgZm9yIG93bmVyc2hpcApAQCAtMTA3LDYgKzk1LDcgQEAKICAg
ICAgICAgRG9lcyBub3QgZmx1c2gvY29tbWl0IGNoYW5nZXMsIGhvd2V2ZXIuIEl0ZW0gbXVzdCBo
YXZlIG5hbWUsIHVzZXIsCiAgICAgICAgIGltcG9ydGFibGUsIGFuZCBzbHVnIGF0dHJpYnV0ZXMu
CiAgICAgICAgICIiIgorICAgICAgICAjPz86IGNhbiBhIHB1Ymxpc2hlZCBpdGVtIGJlIG5vbi1p
bXBvcnRhYmxlPwogICAgICAgICAjaWYgaXRlbS5wdWJsaXNoZWQ6CiAgICAgICAgICMgICAgaWYg
dW5wdWJsaXNoOgogICAgICAgICAjICAgICAgICBzZWxmLnVucHVibGlzaCggdHJhbnMsIGl0ZW0s
IGZsdXNoPTNERmFsc2UgKQpAQCAtMTIwLDYgKzEwOSw4IEBACj0yMAogICAgIGRlZiBsaXN0X2lt
cG9ydGFibGUoIHNlbGYsIHRyYW5zLCAqKmt3YXJncyApOgogI1RPRE86CisgICAgICAgICIiIgor
ICAgICAgICAiIiIKICAgICAgICAgcGFzcwo9MjAKICAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBw
dWJsaXNoZWQKQEAgLTEzMiw2ICsxMjMsOCBAQAogICAgICMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPQo9M0RzdHIoIGl0
ZW0gKSApCiAgICAgIyBhIHB1Ymxpc2hlZCBpdGVtIGlzIGFsc28vYWxyZWFkeSBpbXBvcnRhYmxl
KD0zRFRydWUpIGltcGxpY2l0bHkKICAgICBkZWYgcHVibGlzaCggc2VsZiwgdHJhbnMsIGl0ZW0s
IGZsdXNoPTNEVHJ1ZSApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgIGlmIG5v
dCBpdGVtLmltcG9ydGFibGU6CiAgICAgICAgICAgICBzZWxmLm1ha2VfaW1wb3J0YWJsZSggdHJh
bnMsIGl0ZW0sIGZsdXNoPTNERmFsc2UgKQogICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmFkZCgg
aXRlbSApCkBAIC0xNDEsNiArMTM0LDggQEAKICAgICAgICAgcmV0dXJuIGl0ZW0KPTIwCiAgICAg
ZGVmIHVucHVibGlzaCggc2VsZiwgdHJhbnMsIGl0ZW0sIGZsdXNoPTNEVHJ1ZSApOgorICAgICAg
ICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCBpdGVtICkK
ICAgICAgICAgaXRlbS5wdWJsaXNoZWQgPTNEIEZhbHNlCiAgICAgICAgIGlmIGZsdXNoOgpAQCAt
MTQ5LDE3ICsxNDQsMjMgQEAKPTIwCiAgICAgZGVmIGxpc3RfcHVibGlzaGVkKCBzZWxmLCB0cmFu
cywgKiprd2FyZ3MgKToKICNUT0RPOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAg
IHBhc3MKPTIwCiAgICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLj0KLi4uLi4gdXNlciBzaGFyaW5nCiAgICAgIyBz
aGFyaW5nIGlzIG9mdGVuIGRvbmUgdmlhIGEgM3JkIHRhYmxlIGJ0d24gYSBVc2VyIGFuZCBhbiBp
dGVtIC0+IGEgPD0KSXRlbT5Vc2VyU2hhcmVBc3NvY2lhdGlvbgogICAgIGRlZiBnZXRfc2hhcmVf
YXNzb2NzKCBzZWxmLCB0cmFucywgaXRlbSwgdXNlcj0zRE5vbmUgKToKKyAgICAgICAgIiIiCisg
ICAgICAgICIiIgogICAgICAgICBxdWVyeSA9M0Qgc2VsZi5xdWVyeV9hc3NvY2lhdGVkKCB0cmFu
cywgc2VsZi51c2VyX3NoYXJlX21vZGVsLCBpdGU9Cm0gKQogICAgICAgICBpZiB1c2VyIGlzIG5v
dCBOb25lOgogICAgICAgICAgICAgcXVlcnkgPTNEIHF1ZXJ5LmZpbHRlcl9ieSggdXNlcj0zRHVz
ZXIgKQogICAgICAgICByZXR1cm4gcXVlcnkuYWxsKCkKPTIwCiAgICAgZGVmIHNoYXJlX3dpdGgo
IHNlbGYsIHRyYW5zLCBpdGVtLCB1c2VyLCBmbHVzaD0zRFRydWUgKToKKyAgICAgICAgIiIiCisg
ICAgICAgICIiIgogICAgICAgICAjIGFsbG93IHVzZXIgdG8gYmUgYSBsaXN0IGFuZCBjYWxsIHJl
Y3Vyc2l2bHkKICAgICAgICAgaWYgaXNpbnN0YW5jZSggdXNlciwgbGlzdCApOgogICAgICAgICAg
ICAgcmV0dXJuIG1hcCggbGFtYmRhIHVzZXI6IHNlbGYuc2hhcmVfd2l0aCggdHJhbnMsIGl0ZW0s
IHVzZXIsIGY9Cmx1c2g9M0RGYWxzZSApLCB1c2VyICkKQEAgLTE3NCw2ICsxNzUsOCBAQAogICAg
ICAgICByZXR1cm4gaXRlbQo9MjAKICAgICBkZWYgdW5zaGFyZV93aXRoKCBzZWxmLCB0cmFucywg
aXRlbSwgdXNlciwgZmx1c2g9M0RUcnVlICk6CisgICAgICAgICIiIgorICAgICAgICAiIiIKICAg
ICAgICAgaWYgaXNpbnN0YW5jZSggdXNlciwgbGlzdCApOgogICAgICAgICAgICAgcmV0dXJuIG1h
cCggbGFtYmRhIHVzZXI6IHNlbGYudW5zaGFyZV93aXRoKCB0cmFucywgaXRlbSwgdXNlciw9CiBm
bHVzaD0zREZhbHNlICksIHVzZXIgKQogICAgICAgICAjIExvb2sgZm9yIGFuZCBkZWxldGUgc2hh
cmluZyByZWxhdGlvbiBmb3IgaGlzdG9yeS11c2VyLgpAQCAtMTg1LDYgKzE4OCw4IEBACj0yMAog
ICAgIGRlZiBsaXN0X3NoYXJlZF93aXRoKCBzZWxmLCB0cmFucywgaXRlbSwgdXNlciwgKiprd2Fy
Z3MgKToKICNUT0RPOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgIHBhc3MKPTIw
CiAgICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLj0KLi4uLi4gc2x1Z3MKQEAgLTE5Nyw2ICsyMDIsOCBAQAogICAg
ICAgICByZXR1cm4gVkFMSURfU0xVR19SRS5tYXRjaCggc2x1ZyApCj0yMAogICAgIGRlZiBzZXRf
c2x1Zyggc2VsZiwgdHJhbnMsIGl0ZW0sIG5ld19zbHVnLCBmbHVzaD0zRFRydWUgKToKKyAgICAg
ICAgIiIiCisgICAgICAgICIiIgogICAgICAgICBpZiBub3Qgc2VsZi5pc192YWxpZF9zbHVnKCBu
ZXdfc2x1ZyApOgogICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5SZXF1ZXN0UGFyYW1ldGVy
SW52YWxpZEV4Y2VwdGlvbiggIkludmFsaWQgc2w9CnVnIiwgc2x1Zz0zRG5ld19zbHVnICkKPTIw
CkBAIC0yNTAsNiArMjU3LDggQEAKICAgICAgICAgcmV0dXJuIG5ld19zbHVnCj0yMAogICAgIGRl
ZiBjcmVhdGVfdW5pcXVlX3NsdWcoIHNlbGYsIHRyYW5zLCBpdGVtLCBmbHVzaD0zRFRydWUgKToK
KyAgICAgICAgIiIiCisgICAgICAgICIiIgogICAgICAgICBpdGVtLnNsdWcgPTNEIHNlbGYuZ2V0
X3VuaXF1ZV9zbHVnKCB0cmFucywgaXRlbSApCiAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRk
KCBpdGVtICkKICAgICAgICAgaWYgZmx1c2g6CkBAIC0yNTcsNiArMjY2LDggQEAKICAgICAgICAg
cmV0dXJuIGl0ZW0KPTIwCiAgICAgZGVmIGJ5X3NsdWcoIHNlbGYsIHRyYW5zLCB1c2VyLCAqKmt3
YXJncyApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgIHBhc3MKPTIwCiAgICAg
IyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLj0KLi4uLi4gZGlzcGxheQpAQCAtMjc1LDE0ICsyODYsMjAgQEAKIGNsYXNz
IFNoYXJhYmxlTW9kZWxEZXNlcmlhbGl6ZXIoIGJhc2UuTW9kZWxEZXNlcmlhbGl6ZXIgKToKPTIw
CiAgICAgZGVmIGRlc2VyaWFsaXplX3B1Ymxpc2hlZCggc2VsZiwgdHJhbnMsIGl0ZW0sIHZhbCAp
OgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgICNUT0RPOiBjYWxsIG1hbmFnZXIu
cHVibGlzaC91bnB1Ymxpc2gKICAgICAgICAgcGFzcwo9MjAKICAgICBkZWYgZGVzZXJpYWxpemVf
aW1wb3J0YWJsZSggc2VsZiwgdHJhbnMsIGl0ZW0sIHZhbCApOgorICAgICAgICAiIiIKKyAgICAg
ICAgIiIiCiAgICAgICAgICNUT0RPOiBjYWxsIG1hbmFnZXIubWFrZV9pbXBvcnRhYmxlL25vbl9p
bXBvcnRhYmxlCiAgICAgICAgIHBhc3MKPTIwCiAgICAgZGVmIGRlc2VyaWFsaXplX3NsdWcoIHNl
bGYsIHRyYW5zLCBpdGVtLCB2YWwgKToKKyAgICAgICAgIiIiCisgICAgICAgICIiIgogICAgICAg
ICAjVE9ETzogY2FsbCBtYW5hZ2VyLnNldF9zbHVnCiAgICAgICAgIHBhc3MKPTIwCgpkaWZmIC1y
IDVkMGZjYTU5MTM5NGQ3ZTdhYWFiYWRmY2RlZDlmODM3ZmQ0MzZlZDIgLXIgNGJkZTcwYzY3N2E5
MmRkYTcyMTJlY2M9CjRjZDllYTljNGQzZWM2OTUyIGxpYi9nYWxheHkvbWFuYWdlcnMvdGFncy5w
eQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL3RhZ3MucHkKKysrIGIvbGliL2dhbGF4eS9tYW5h
Z2Vycy90YWdzLnB5CkBAIC0xLDQgKzEsNSBAQAotCisiIiIKKyIiIgo9MjAKIGNsYXNzIFRhZ3NN
YW5hZ2VyKCBvYmplY3QgKToKICAgICAiIiIgTWFuYWdlcyBDUlVEIG9wZXJhdGlvbnMgcmVsYXRl
ZCB0byB0YWdnaW5nIG9iamVjdHMuCgpkaWZmIC1yIDVkMGZjYTU5MTM5NGQ3ZTdhYWFiYWRmY2Rl
ZDlmODM3ZmQ0MzZlZDIgLXIgNGJkZTcwYzY3N2E5MmRkYTcyMTJlY2M9CjRjZDllYTljNGQzZWM2
OTUyIGxpYi9nYWxheHkvbWFuYWdlcnMvdXNlcnMucHkKLS0tIGEvbGliL2dhbGF4eS9tYW5hZ2Vy
cy91c2Vycy5weQorKysgYi9saWIvZ2FsYXh5L21hbmFnZXJzL3VzZXJzLnB5CkBAIC0xLDUgKzEs
NiBAQAogIiIiCiAiIiIKKwogaW1wb3J0IHBrZ19yZXNvdXJjZXMKIHBrZ19yZXNvdXJjZXMucmVx
dWlyZSggIlNRTEFsY2hlbXkgPj0zRCAwLjQiICkKIGltcG9ydCBzcWxhbGNoZW15CkBAIC0xNiwx
MSArMTcsMTUgQEAKPTIwCiAjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRAogY2xhc3MgVXNlck1hbmFnZXIoIGJhc2UuTW9k
ZWxNYW5hZ2VyICk6CisgICAgIiIiCisgICAgIiIiCiAgICAgbW9kZWxfY2xhc3MgPTNEIG1vZGVs
LlVzZXIKICAgICBkZWZhdWx0X29yZGVyX2J5ID0zRCAoIG1vZGVsLlVzZXIuY3JlYXRlX3RpbWUs
ICkKICAgICBmb3JlaWduX2tleV9uYW1lID0zRCAndXNlcicKPTIwCiAgICAgZGVmIGNyZWF0ZSgg
c2VsZiwgdHJhbnMsICoqa3dhcmdzICk6CisgICAgICAgICIiIgorICAgICAgICAiIiIKICAgICAg
ICAgI1RPRE86IGRlc2VyaWFsaXplIGFuZCB2YWxpZGF0ZSBoZXJlCiAgICAgICAgIGVtYWlsID0z
RCBrd2FyZ3NbICdlbWFpbCcgXQogICAgICAgICB1c2VybmFtZSA9M0Qga3dhcmdzWyAndXNlcm5h
bWUnIF0KQEAgLTU1LDEyICs2MCwxNiBAQAogICAgICNUT0RPOiBpbmNvcnBvcmF0ZSBzZWN1cml0
eS92YWxpZGF0ZV91c2VyX2lucHV0LnB5Cj0yMAogICAgIGRlZiBfZXJyb3Jfb25fZHVwbGljYXRl
X2VtYWlsKCBzZWxmLCB0cmFucywgZW1haWwgKToKKyAgICAgICAgIiIiCisgICAgICAgICIiIgog
ICAgICAgICAjVE9ETzogcmVtb3ZlIHRoaXMgY2hlY2sgd2hlbiB1bmlxdWU9M0RUcnVlIGlzIGFk
ZGVkIHRvIHRoZSBlbWFpbCA9CmNvbHVtbgogICAgICAgICBpZiBzZWxmLmJ5X2VtYWlsKCB0cmFu
cywgZW1haWwgKSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuQ29u
ZmxpY3QoICdFbWFpbCBtdXN0IGJlIHVuaXF1ZScsIGVtYWlsPTNEZW1hPQppbCApCj0yMAogICAg
ICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS09Ci0tLS0tIGZpbHRlcnMKICAgICBkZWYgYnlfZW1haWwoIHNlbGYsIHRy
YW5zLCBlbWFpbCwgZmlsdGVycz0zRE5vbmUsICoqa3dhcmdzICk6CisgICAgICAgICIiIgorICAg
ICAgICAiIiIKICAgICAgICAgZmlsdGVycyA9M0Qgc2VsZi5fbXVuZ2VfZmlsdGVycyggc2VsZi5t
b2RlbF9jbGFzcy5lbWFpbCA9M0Q9M0QgZW1hPQppbCwgZmlsdGVycyApCiAgICAgICAgIHRyeToK
ICAgICAgICAgICAgIHJldHVybiBzdXBlciggVXNlck1hbmFnZXIsIHNlbGYgKS5vbmUoIHRyYW5z
LCBmaWx0ZXJzPTNEZmlsdGVyPQpzLCAqKmt3YXJncyApCkBAIC02OCwzNCArNzcsNDcgQEAKICAg
ICAgICAgICAgIHJldHVybiBOb25lCj0yMAogICAgIGRlZiBieV9lbWFpbF9saWtlKCBzZWxmLCB0
cmFucywgZW1haWxfd2l0aF93aWxkY2FyZHMsIGZpbHRlcnM9M0ROb25lLCA9Cm9yZGVyX2J5PTNE
Tm9uZSwgKiprd2FyZ3MgKToKKyAgICAgICAgIiIiCisgICAgICAgICIiIgogICAgICAgICBmaWx0
ZXJzID0zRCBzZWxmLl9tdW5nZV9maWx0ZXJzKCBzZWxmLm1vZGVsX2NsYXNzLmVtYWlsLmxpa2Uo
IGVtYWk9Cmxfd2l0aF93aWxkY2FyZHMgKSwgZmlsdGVycyApCiAgICAgICAgIG9yZGVyX2J5ID0z
RCBvcmRlcl9ieSBvciAoIG1vZGVsLlVzZXIuZW1haWwsICkKICAgICAgICAgcmV0dXJuIHN1cGVy
KCBVc2VyTWFuYWdlciwgc2VsZiApLmxpc3QoIHRyYW5zLCBmaWx0ZXJzPTNEZmlsdGVycywgPQpv
cmRlcl9ieT0zRG9yZGVyX2J5LCAqKmt3YXJncyApCj0yMAogICAgICMgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0t
LS0tIGFkbWluCiAgICAgZGVmIGlzX2FkbWluKCBzZWxmLCB0cmFucywgdXNlciApOgorICAgICAg
ICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgIGFkbWluX2VtYWlscyA9M0Qgc2VsZi5fYWRtaW5f
ZW1haWxzKCB0cmFucyApCiAgICAgICAgIHJldHVybiB1c2VyIGFuZCBhZG1pbl9lbWFpbHMgYW5k
IHVzZXIuZW1haWwgaW4gYWRtaW5fZW1haWxzCj0yMAogICAgIGRlZiBfYWRtaW5fZW1haWxzKCBz
ZWxmLCB0cmFucyApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBb
IHguc3RyaXAoKSBmb3IgeCBpbiB0cmFucy5hcHAuY29uZmlnLmdldCggImFkbWluX3VzZXJzIiwg
Ij0KIiApLnNwbGl0KCAiLCIgKSBdCj0yMAogICAgIGRlZiBhZG1pbnMoIHNlbGYsIHRyYW5zLCBm
aWx0ZXJzPTNETm9uZSwgKiprd2FyZ3MgKToKKyAgICAgICAgIiIiCisgICAgICAgICIiIgogICAg
ICAgICBmaWx0ZXJzID0zRCBzZWxmLl9tdW5nZV9maWx0ZXJzKCBzZWxmLm1vZGVsX2NsYXNzLmVt
YWlsLmluXyggc2VsZi49Cl9hZG1pbl9lbWFpbHMoIHRyYW5zICkgKSwgZmlsdGVycyApCiAgICAg
ICAgIHJldHVybiBzdXBlciggVXNlck1hbmFnZXIsIHNlbGYgKS5saXN0KCB0cmFucywgZmlsdGVy
cz0zRGZpbHRlcnMsID0KKiprd2FyZ3MgKQo9MjAKICAgICBkZWYgZXJyb3JfdW5sZXNzX2FkbWlu
KCBzZWxmLCB0cmFucywgdXNlciwgbXNnPTNEIkFkbWluaXN0cmF0b3JzIG9ubHkiPQosICoqa3dh
cmdzICk6CisgICAgICAgICIiIgorICAgICAgICAiIiIKICAgICAgICAgaWYgbm90IHNlbGYuaXNf
YWRtaW4oIHRyYW5zLCB1c2VyICk6CiAgICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLkFkbWlu
UmVxdWlyZWRFeGNlcHRpb24oIG1zZywgKiprd2FyZ3MgKQogICAgICAgICByZXR1cm4gdXNlcgo9
MjAKICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tPQotLS0tLSBhbm9ueW1vdXMKICAgICBkZWYgaXNfYW5vbnlt
b3VzKCBzZWxmLCB1c2VyICk6CisgICAgICAgICIiIgorICAgICAgICAiIiIKICAgICAgICAgIyBk
ZWZpbmUgaGVyZSBmb3Igc2luZ2xlIHBvaW50IG9mIGNoYW5nZQogICAgICAgICByZXR1cm4gdXNl
ciBpcyBOb25lCj0yMAogICAgIGRlZiBlcnJvcl9pZl9hbm9ueW1vdXMoIHNlbGYsIHRyYW5zLCB1
c2VyLCBtc2c9M0QiTG9nLWluIHJlcXVpcmVkIiwgKio9Cmt3YXJncyApOgotICAgICAgICBwcmlu
dCAnZXJyb3JfaWZfYW5vbnltb3VzJywgdXNlcgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAg
ICAgICAgIGlmIHVzZXIgaXMgTm9uZToKICAgICAgICAgICAgICNUT0RPOiBjb2RlIGlzIGNvcnJl
Y3QgKDQwMyksIGJ1dCBzaG91bGQgYmUgbmFtZWQgQXV0aGVudGljYXRpPQpvblJlcXVpcmVkICg0
MDEgYW5kIDQwMyBhcmUgZmxpcHBlZCkKICAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuQXV0
aGVudGljYXRpb25GYWlsZWQoIG1zZywgKiprd2FyZ3MgKQpAQCAtMTAzLDEyICsxMjUsMTggQEAK
PTIwCiAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0tLS0gY3VycmVudAogICAgIGRlZiBpc19jdXJyZW50
X3VzZXIoIHNlbGYsIHRyYW5zLCB1c2VyICk6CisgICAgICAgICIiIgorICAgICAgICAiIiIKICAg
ICAgICAgcmV0dXJuIHVzZXIgPTNEPTNEIHRyYW5zLnVzZXIKPTIwCiAgICAgZGVmIGlzX2N1cnJl
bnRfdXNlcl9hbm9ueW1vdXMoIHNlbGYsIHRyYW5zICk6CisgICAgICAgICIiIgorICAgICAgICAi
IiIKICAgICAgICAgcmV0dXJuIHRyYW5zLnVzZXIgaXMgTm9uZQo9MjAKICAgICBkZWYgaXNfY3Vy
cmVudF91c2VyX2FkbWluKCBzZWxmLCB0cmFucyApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIi
CiAgICAgICAgIHJldHVybiBzZWxmLmlzX2FkbWluKCB0cmFucywgdHJhbnMudXNlciApCj0yMAog
ICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0tID8KQEAgLTEyMiwxMCArMTUwLDE0IEBACj0yMAogICAg
ICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS09Ci0tLS0tIGFwaSBrZXlzCiAgICAgZGVmIGNyZWF0ZV9hcGlfa2V5KCBz
ZWxmLCB0cmFucywgdXNlciApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgIHJl
dHVybiBhcGlfa2V5cy5BcGlLZXlNYW5hZ2VyKCB0cmFucy5hcHAgKS5jcmVhdGVfYXBpX2tleSgg
dXNlciApCj0yMAogICAgICMgbmVlZGVkPwogICAgIGRlZiBhcGlfa2V5KCBzZWxmLCB0cmFucywg
dXNlciApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCiAgICAgICAgICNUT0RPOiBjYXRjaCBO
b1Jlc3VsdEZvdW5kCiAgICAgICAgIHJldHVybiB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCBtb2Rl
bC5BUElLZXlzICkuZmlsdGVyX2J5KCB1c2VyPTNEdT0Kc2VyICkub25lKCkKPTIwCkBAIC0xMzQs
NiArMTY2LDggQEAKPTIwCiAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0tLS0gcm9sZXMKICAgICBkZWYg
cHJpdmF0ZV9yb2xlKCBzZWxmLCB0cmFucywgdXNlciApOgorICAgICAgICAiIiIKKyAgICAgICAg
IiIiCiAgICAgICAgICNUT0RPOiBub3Qgc3VyZSB3ZSBuZWVkIHRvIGdvIHRocm91Z2ggc2VjIGFn
ZW50Li4uIGl0J3MganVzdCB0aGUgZj0KaXJzdCByb2xlIG9mIHR5cGUgcHJpdmF0ZQogICAgICAg
ICByZXR1cm4gdHJhbnMuYXBwLnNlY3VyaXR5X2FnZW50LmdldF9wcml2YXRlX3VzZXJfcm9sZSgg
dXNlciApCj0yMApAQCAtMTQyLDYgKzE3Niw4IEBACiBjbGFzcyBVc2VyU2VyaWFsaXplciggYmFz
ZS5Nb2RlbFNlcmlhbGl6ZXIgKToKPTIwCiAgICAgZGVmIF9faW5pdF9fKCBzZWxmICk6CisgICAg
ICAgICIiIgorICAgICAgICAiIiIKICAgICAgICAgc3VwZXIoIFVzZXJTZXJpYWxpemVyLCBzZWxm
ICkuX19pbml0X18oKQo9MjAKICAgICAgICAgc3VtbWFyeV92aWV3ID0zRCBbCgpkaWZmIC1yIDVk
MGZjYTU5MTM5NGQ3ZTdhYWFiYWRmY2RlZDlmODM3ZmQ0MzZlZDIgLXIgNGJkZTcwYzY3N2E5MmRk
YTcyMTJlY2M9CjRjZDllYTljNGQzZWM2OTUyIGxpYi9nYWxheHkvbW9kZWwvX19pbml0X18ucHkK
LS0tIGEvbGliL2dhbGF4eS9tb2RlbC9fX2luaXRfXy5weQorKysgYi9saWIvZ2FsYXh5L21vZGVs
L19faW5pdF9fLnB5CkBAIC0xNTExLDYgKzE1MTEsOCBAQAogICAgICAgICBzZWxmLnRvb2xfdmVy
c2lvbiA9M0QgdG9vbF92ZXJzaW9uCiAgICAgICAgIHNlbGYuZXh0ZW5zaW9uID0zRCBleHRlbnNp
b24KICAgICAgICAgc2VsZi5kZXNpZ25hdGlvbiA9M0QgZGVzaWduYXRpb24KKyAgICAgICAgIyBz
ZXQgcHJpdmF0ZSB2YXJpYWJsZSB0byBOb25lIGhlcmUsIHNpbmNlIHRoZSBhdHRyaWJ1dGUgbWF5
IGJlIG5lPQplZGVkIGluIGJ5IE1ldGFkYXRhQ29sbGVjdGlvbi5fX2luaXRfXworICAgICAgICBz
ZWxmLl9tZXRhZGF0YSA9M0QgTm9uZQogICAgICAgICBzZWxmLm1ldGFkYXRhID0zRCBtZXRhZGF0
YSBvciBkaWN0KCkKICAgICAgICAgc2VsZi5leHRlbmRlZF9tZXRhZGF0YSA9M0QgZXh0ZW5kZWRf
bWV0YWRhdGEKICAgICAgICAgaWYgZGJrZXk6ICNkYmtleSBpcyBzdG9yZWQgaW4gbWV0YWRhdGEs
IG9ubHkgc2V0IGlmIG5vbi16ZXJvLCBvciBlPQpsc2Ugd2UgY291bGQgY2xvYmJlciBvbmUgc3Vw
cGxpZWQgYnkgaW5wdXQgJ21ldGFkYXRhJwoKZGlmZiAtciA1ZDBmY2E1OTEzOTRkN2U3YWFhYmFk
ZmNkZWQ5ZjgzN2ZkNDM2ZWQyIC1yIDRiZGU3MGM2NzdhOTJkZGE3MjEyZWNjPQo0Y2Q5ZWE5YzRk
M2VjNjk1MiBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9oaXN0b3JpZXMucHkKLS0tIGEv
bGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvaGlzdG9yaWVzLnB5CisrKyBiL2xpYi9nYWxh
eHkvd2ViYXBwcy9nYWxheHkvYXBpL2hpc3Rvcmllcy5weQpAQCAtNDUsNiArNDUsMTMgQEAKICAg
ICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuTWFsZm9ybWVkSWQoICJNYWxmb3JtZWQgSGlzdG9y
eSBpZCAoICVzICkgc3BlPQpjaWZpZWQsIHVuYWJsZSB0byBkZWNvZGUiCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICggc3RyKCBpZCApICksIHR5cGU9M0QnZXJy
b3InICkKPTIwCisgICAgZGVmIF9wYXJzZV9zZXJpYWxpemF0aW9uX3BhcmFtcyggc2VsZiwga3dk
LCBkZWZhdWx0X3ZpZXcgKToKKyAgICAgICAgdmlldyA9M0Qga3dkLmdldCggJ3ZpZXcnLCBOb25l
ICkKKyAgICAgICAga2V5cyA9M0Qga3dkLmdldCggJ2tleXMnICkKKyAgICAgICAgaWYgaXNpbnN0
YW5jZSgga2V5cywgYmFzZXN0cmluZyApOgorICAgICAgICAgICAga2V5cyA9M0Qga2V5cy5zcGxp
dCggJywnICkKKyAgICAgICAgcmV0dXJuIGRpY3QoIHZpZXc9M0R2aWV3LCBrZXlzPTNEa2V5cywg
ZGVmYXVsdF92aWV3PTNEZGVmYXVsdF92aWV3PQogKQorCiAgICAgQGV4cG9zZV9hcGlfYW5vbnlt
b3VzCiAgICAgZGVmIGluZGV4KCBzZWxmLCB0cmFucywgZGVsZXRlZD0zRCdGYWxzZScsICoqa3dk
ICk6CiAgICAgICAgICIiIgpAQCAtNjIsNiArNjksNyBAQAogICAgICAgICA6cmV0dXJuczogICBs
aXN0IG9mIGRpY3Rpb25hcmllcyBjb250YWluaW5nIHN1bW1hcnkgaGlzdG9yeSBpbmZvcm09CmF0
aW9uCiAgICAgICAgICIiIgogICAgICAgICBydmFsID0zRCBbXQorICAgICAgICBzZXJpYWxpemF0
aW9uX3BhcmFtcyA9M0Qgc2VsZi5fcGFyc2Vfc2VyaWFsaXphdGlvbl9wYXJhbXMoIGt3ZCwgJ3M9
CnVtbWFyeScgKQo9MjAKICAgICAgICAgZGVsZXRlZF9maWx0ZXIgPTNEICggc2VsZi5hcHAubW9k
ZWwuSGlzdG9yeS5kZWxldGVkID0zRD0zRCBGYWxzZSApCiAgICAgICAgIGlmIHN0cmluZ19hc19i
b29sKCBkZWxldGVkICk6CkBAIC02OSw3ICs3Nyw3IEBACj0yMAogICAgICAgICBoaXN0b3JpZXMg
PTNEIHNlbGYubWdycy5oaXN0b3JpZXMuYnlfdXNlciggdHJhbnMsIHVzZXI9M0R0cmFucy51c2U9
CnIsIGZpbHRlcnM9M0RkZWxldGVkX2ZpbHRlciApCiAgICAgICAgIGZvciBoaXN0b3J5IGluIGhp
c3RvcmllczoKLSAgICAgICAgICAgIGhpc3RvcnlfZGljdCA9M0Qgc2VsZi5oaXN0b3J5X3Nlcmlh
bGl6ZXIuc2VyaWFsaXplX3RvX3ZpZXcoIHRyPQphbnMsIGhpc3RvcnksIHZpZXc9M0Qnc3VtbWFy
eScgKQorICAgICAgICAgICAgaGlzdG9yeV9kaWN0ID0zRCBzZWxmLmhpc3Rvcnlfc2VyaWFsaXpl
ci5zZXJpYWxpemVfdG9fdmlldyggdHI9CmFucywgaGlzdG9yeSwgKipzZXJpYWxpemF0aW9uX3Bh
cmFtcyApCiAgICAgICAgICAgICBydmFsLmFwcGVuZCggaGlzdG9yeV9kaWN0ICkKPTIwCiAgICAg
ICAgIHJldHVybiBydmFsCkBAIC0xMDIsMTAgKzExMCwxMyBAQAogICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5tZ3JzLmhpc3Rvcmllcy5hY2Nlc3NpYmxlX2J5X2lk
KCB0cmFucywgc2VsZi49Cl9kZWNvZGVfaWQoIHRyYW5zLCBoaXN0b3J5X2lkICksIHRyYW5zLnVz
ZXIgKQo9MjAKLSAgICAgICAgcmV0dXJuIHNlbGYuaGlzdG9yeV9zZXJpYWxpemVyLnNlcmlhbGl6
ZV90b192aWV3KCB0cmFucywgaGlzdG9yeSwgPQp2aWV3PTNEa3dkLmdldCggJ3ZpZXcnLCAnZGV0
YWlsZWQnICkgKQorICAgICAgICByZXR1cm4gc2VsZi5oaXN0b3J5X3NlcmlhbGl6ZXIuc2VyaWFs
aXplX3RvX3ZpZXcoIHRyYW5zLCBoaXN0b3J5LAorICAgICAgICAgICAgKipzZWxmLl9wYXJzZV9z
ZXJpYWxpemF0aW9uX3BhcmFtcygga3dkLCAnZGV0YWlsZWQnICkgKQo9MjAKICAgICBAZXhwb3Nl
X2FwaV9hbm9ueW1vdXMKICAgICBkZWYgY2l0YXRpb25zKCBzZWxmLCB0cmFucywgaGlzdG9yeV9p
ZCwgKiprd2QgKToKKyAgICAgICAgIiIiCisgICAgICAgICIiIgogICAgICAgICBoaXN0b3J5ID0z
RCBzZWxmLm1ncnMuaGlzdG9yaWVzLmFjY2Vzc2libGVfYnlfaWQoIHRyYW5zLCBzZWxmLl9kZWM9
Cm9kZV9pZCggdHJhbnMsIGhpc3RvcnlfaWQgKSwgdHJhbnMudXNlciApCiAgICAgICAgIHRvb2xf
aWRzID0zRCBzZXQoW10pCiAgICAgICAgIGZvciBkYXRhc2V0IGluIGhpc3RvcnkuZGF0YXNldHM6
CkBAIC0xMTYsNyArMTI3LDggQEAKICAgICAgICAgICAgIGlmIG5vdCB0b29sX2lkOgogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICB0b29sX2lkcy5hZGQodG9vbF9pZCkKLSAg
ICAgICAgcmV0dXJuIG1hcCggbGFtYmRhIGNpdGF0aW9uOiBjaXRhdGlvbi50b19kaWN0KCAiYmli
dGV4IiApLCBzZWxmLmNpPQp0YXRpb25zX21hbmFnZXIuY2l0YXRpb25zX2Zvcl90b29sX2lkcygg
dG9vbF9pZHMgKSApCisgICAgICAgIHJldHVybiBtYXAoIGxhbWJkYSBjaXRhdGlvbjogY2l0YXRp
b24udG9fZGljdCggImJpYnRleCIgKSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jaXRhdGlv
bnNfbWFuYWdlci5jaXRhdGlvbnNfZm9yX3Rvb2xfaWRzKCB0b29sX2lkPQpzICkgKQo9MjAKICAg
ICBAZXhwb3NlX2FwaQogICAgIGRlZiBjcmVhdGUoIHNlbGYsIHRyYW5zLCBwYXlsb2FkLCAqKmt3
ZCApOgpAQCAtMTYxLDcgKzE3Myw4IEBACiAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCBu
ZXdfaGlzdG9yeSApCiAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uZmx1c2goKQo9MjAKLSAgICAg
ICAgcmV0dXJuIHNlbGYuaGlzdG9yeV9zZXJpYWxpemVyLnNlcmlhbGl6ZV90b192aWV3KCB0cmFu
cywgbmV3X2hpc3RvPQpyeSwgdmlldz0zRGt3ZC5nZXQoICd2aWV3JywgJ2RldGFpbGVkJyApICkK
KyAgICAgICAgcmV0dXJuIHNlbGYuaGlzdG9yeV9zZXJpYWxpemVyLnNlcmlhbGl6ZV90b192aWV3
KCB0cmFucywgbmV3X2hpc3RvPQpyeSwKKyAgICAgICAgICAgICoqc2VsZi5fcGFyc2Vfc2VyaWFs
aXphdGlvbl9wYXJhbXMoIGt3ZCwgJ2RldGFpbGVkJyApICkKPTIwCiAgICAgQGV4cG9zZV9hcGkK
ICAgICBkZWYgZGVsZXRlKCBzZWxmLCB0cmFucywgaWQsICoqa3dkICk6CkBAIC0xOTEsMTIgKzIw
NCwxMyBAQAogICAgICAgICBpZiBrd2QuZ2V0KCAncGF5bG9hZCcsIE5vbmUgKToKICAgICAgICAg
ICAgIHB1cmdlID0zRCBzdHJpbmdfYXNfYm9vbCgga3dkWydwYXlsb2FkJ10uZ2V0KCAncHVyZ2Un
LCBGYWxzZSApPQogKQo9MjAKLSAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5tZ3JzLmhpc3Rvcmll
cy5vd25lcnNoaXBfYnlfaWQoIHRyYW5zLCBzZWxmLl9kZWNvPQpkZV9pZCggdHJhbnMsIGhpc3Rv
cnlfaWQgKSwgdHJhbnMudXNlciApCisgICAgICAgIGhpc3RvcnkgPTNEIHNlbGYubWdycy5oaXN0
b3JpZXMub3duZWRfYnlfaWQoIHRyYW5zLCBzZWxmLl9kZWNvZGVfaT0KZCggdHJhbnMsIGhpc3Rv
cnlfaWQgKSwgdHJhbnMudXNlciApCiAgICAgICAgIHNlbGYubWdycy5oaXN0b3JpZXMuZGVsZXRl
KCB0cmFucywgaGlzdG9yeSApCiAgICAgICAgIGlmIHB1cmdlOgogICAgICAgICAgICAgc2VsZi5t
Z3JzLmhpc3Rvcmllcy5wdXJnZSggdHJhbnMsIGhpc3RvcnkgKQo9MjAKLSAgICAgICAgcmV0dXJu
IHNlbGYuaGlzdG9yeV9zZXJpYWxpemVyLnNlcmlhbGl6ZV90b192aWV3KCB0cmFucywgaGlzdG9y
eSwgPQp2aWV3PTNEa3dkLmdldCggJ3ZpZXcnLCAnZGV0YWlsZWQnICkgKQorICAgICAgICByZXR1
cm4gc2VsZi5oaXN0b3J5X3NlcmlhbGl6ZXIuc2VyaWFsaXplX3RvX3ZpZXcoIHRyYW5zLCBuZXdf
aGlzdG89CnJ5LAorICAgICAgICAgICAgKipzZWxmLl9wYXJzZV9zZXJpYWxpemF0aW9uX3BhcmFt
cygga3dkLCAnZGV0YWlsZWQnICkgKQo9MjAKICAgICBAZXhwb3NlX2FwaQogICAgIGRlZiB1bmRl
bGV0ZSggc2VsZiwgdHJhbnMsIGlkLCAqKmt3ZCApOgpAQCAtMjEyLDEwICsyMjYsMTEgQEAKICAg
ICAgICAgOnJldHVybnM6ICAgJ09LJyBpZiB0aGUgaGlzdG9yeSB3YXMgdW5kZWxldGVkCiAgICAg
ICAgICIiIgogICAgICAgICBoaXN0b3J5X2lkID0zRCBpZAotICAgICAgICBoaXN0b3J5ID0zRCBz
ZWxmLm1ncnMuaGlzdG9yaWVzLm93bmVyc2hpcF9ieV9pZCggdHJhbnMsIHNlbGYuX2RlY289CmRl
X2lkKCB0cmFucywgaGlzdG9yeV9pZCApLCB0cmFucy51c2VyICkKKyAgICAgICAgaGlzdG9yeSA9
M0Qgc2VsZi5tZ3JzLmhpc3Rvcmllcy5vd25lZF9ieV9pZCggdHJhbnMsIHNlbGYuX2RlY29kZV9p
PQpkKCB0cmFucywgaGlzdG9yeV9pZCApLCB0cmFucy51c2VyICkKICAgICAgICAgc2VsZi5tZ3Jz
Lmhpc3Rvcmllcy51bmRlbGV0ZSggdHJhbnMsIGhpc3RvcnkgKQo9MjAKLSAgICAgICAgcmV0dXJu
IHNlbGYuaGlzdG9yeV9zZXJpYWxpemVyLnNlcmlhbGl6ZV90b192aWV3KCB0cmFucywgaGlzdG9y
eSwgPQp2aWV3PTNEa3dkLmdldCggJ3ZpZXcnLCAnZGV0YWlsZWQnICkgKQorICAgICAgICByZXR1
cm4gc2VsZi5oaXN0b3J5X3NlcmlhbGl6ZXIuc2VyaWFsaXplX3RvX3ZpZXcoIHRyYW5zLCBoaXN0
b3J5LAorICAgICAgICAgICAgKipzZWxmLl9wYXJzZV9zZXJpYWxpemF0aW9uX3BhcmFtcygga3dk
LCAnZGV0YWlsZWQnICkgKQo9MjAKICAgICBAZXhwb3NlX2FwaQogICAgIGRlZiB1cGRhdGUoIHNl
bGYsIHRyYW5zLCBpZCwgcGF5bG9hZCwgKiprd2QgKToKQEAgLTIzNywxMSArMjUyLDEyIEBACiAg
ICAgICAgICAgICBhbnkgdmFsdWVzIHRoYXQgd2VyZSBkaWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2lu
YWwgYW5kLCB0aGVyZWZvcj0KZSwgdXBkYXRlZAogICAgICAgICAiIiIKICAgICAgICAgI1RPRE86
IFBVVCAvYXBpL2hpc3Rvcmllcy97ZW5jb2RlZF9oaXN0b3J5X2lkfSBwYXlsb2FkID0zRCB7IHJh
dGluPQpnOiByYXRpbmcgfSAody8gbm8gc2VjdXJpdHkgY2hlY2tzKQotICAgICAgICBoaXN0b3J5
ID0zRCBzZWxmLm1ncnMuaGlzdG9yaWVzLm93bmVyc2hpcF9ieV9pZCggdHJhbnMsIHNlbGYuX2Rl
Y289CmRlX2lkKCB0cmFucywgaWQgKSwgdHJhbnMudXNlciApCisgICAgICAgIGhpc3RvcnkgPTNE
IHNlbGYubWdycy5oaXN0b3JpZXMub3duZWRfYnlfaWQoIHRyYW5zLCBzZWxmLl9kZWNvZGVfaT0K
ZCggdHJhbnMsIGlkICksIHRyYW5zLnVzZXIgKQo9MjAKICAgICAgICAgI1RPRE86IGZsdXNoaW5n
IGluIGRlc2VyaWFsaXplIGlzIGFuIGlmZnkgcGF0dGVybi4uLgogICAgICAgICBzZWxmLmhpc3Rv
cnlfZGVzZXJpYWxpemVyLmRlc2VyaWFsaXplKCB0cmFucywgaGlzdG9yeSwgcGF5bG9hZCApCi0g
ICAgICAgIHJldHVybiBzZWxmLmhpc3Rvcnlfc2VyaWFsaXplci5zZXJpYWxpemVfdG9fdmlldygg
dHJhbnMsIGhpc3RvcnksID0Kdmlldz0zRGt3ZC5nZXQoICd2aWV3JywgJ2RldGFpbGVkJyApICkK
KyAgICAgICAgcmV0dXJuIHNlbGYuaGlzdG9yeV9zZXJpYWxpemVyLnNlcmlhbGl6ZV90b192aWV3
KCB0cmFucywgaGlzdG9yeSwKKyAgICAgICAgICAgICoqc2VsZi5fcGFyc2Vfc2VyaWFsaXphdGlv
bl9wYXJhbXMoIGt3ZCwgJ2RldGFpbGVkJyApICkKPTIwCiAgICAgQGV4cG9zZV9hcGkKICAgICBk
ZWYgYXJjaGl2ZV9leHBvcnQoIHNlbGYsIHRyYW5zLCBpZCwgKiprd2RzICk6CgpUaGlzIGRpZmYg
aXMgc28gYmlnIHRoYXQgd2UgbmVlZGVkIHRvIHRydW5jYXRlIHRoZSByZW1haW5kZXIuCgpodHRw
czovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvOGViNmQ4YjBi
ZjEwLwpDaGFuZ2VzZXQ6ICAgOGViNmQ4YjBiZjEwClVzZXI6ICAgICAgICBjYXJsZmViZXJoYXJk
CkRhdGU6ICAgICAgICAyMDE1LTAxLTA3IDE5OjU1OjM3KzAwOjAwClN1bW1hcnk6ICAgICBNb3Jl
IGRvY3VtZW50YXRpb247IG1pbm9yIGZpeGVzCkFmZmVjdGVkICM6ICA4IGZpbGVzCgpkaWZmIC1y
IDRiZGU3MGM2NzdhOTJkZGE3MjEyZWNjNGNkOWVhOWM0ZDNlYzY5NTIgLXIgOGViNmQ4YjBiZjEw
YWQxYWQ1YjY5Zjk9CmRhODdkOGQwMDkzYjk3MmYxIGxpYi9nYWxheHkvbWFuYWdlcnMvYmFzZS5w
eQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL2Jhc2UucHkKKysrIGIvbGliL2dhbGF4eS9tYW5h
Z2Vycy9iYXNlLnB5CkBAIC0xMzEsMTQgKzEzMSwxNSBAQAogICAgIGZvcmVpZ25fa2V5X25hbWUg
PTNEIE5vbmUKPTIwCiAgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToKLSAgICAgICAgIiIi
Ci0gICAgICAgICIiIgogICAgICAgICBzZWxmLmFwcCA9M0QgYXBwCj0yMAogICAgICNOT1RFOiBh
dCB0aGlzIGxheWVyLCBhbGwgaWRzIGFyZSBleHBlY3RlZCB0byBiZSBkZWNvZGVkIGFuZCBpbiBp
bnQgZm89CnJtCiAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0tLS0gZ2V0L3JlYWQvcXVlcnkKICAgICBk
ZWYgcXVlcnkoIHNlbGYsIHRyYW5zLCBlYWdlcmxvYWRzPTNEVHJ1ZSwgZmlsdGVycz0zRE5vbmUs
IG9yZGVyX2J5PTNEPQpOb25lLCBsaW1pdD0zRE5vbmUsIG9mZnNldD0zRE5vbmUsICoqa3dhcmdz
ICk6CiAgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gYSBiYXNpYyBxdWVyeSBmcm9tIG1vZGVs
X2NsYXNzLCBmaWx0ZXJzLCBvcmRlcl9ieSwgYW5kIGxpbWk9CnQgYW5kIG9mZnNldC4KKworICAg
ICAgICBTZXQgZWFnZXJsb2FkcyB0byBGYWxzZSB0byBkaXNhYmxlIHRoZW0gZm9yIHRoaXMgcXVl
cnkuCiAgICAgICAgICIiIgogICAgICAgICAjcHJpbnQgJ3F1ZXJ5OicsIGVhZ2VybG9hZHMsIGZp
bHRlcnMsIG9yZGVyX2J5LCBsaW1pdCwgb2Zmc2V0LCBrd2E9CnJncwogICAgICAgICBxdWVyeSA9
M0QgdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggc2VsZi5tb2RlbF9jbGFzcyApCkBAIC0xNTQsNiAr
MTU1LDcgQEAKPTIwCiAgICAgZGVmIF9hcHBseV9maWx0ZXJzKCBzZWxmLCBxdWVyeSwgZmlsdGVy
cyApOgogICAgICAgICAiIiIKKyAgICAgICAgQWRkIGFueSBmaWx0ZXJzIHRvIHRoZSBnaXZlbiBx
dWVyeS4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIGZpbHRlcnMgaXMgTm9uZToKICAgICAgICAg
ICAgIHJldHVybiBxdWVyeQpAQCAtMTY3LDkgKzE2OSwxMSBAQAo9MjAKICAgICBkZWYgX211bmdl
X2ZpbHRlcnMoIHNlbGYsIGZpbHRlcnNBLCBmaWx0ZXJzQiApOgogICAgICAgICAiIiIKKyAgICAg
ICAgQ29tYmluZSB0d28gbGlzdHMgaW50byBhIHNpbmdsZSBsaXN0LgorCisgICAgICAgIChXaGls
ZSBhbGxvd2luZyB0aGVtIHRvIGJlIE5vbmUsIG5vbi1saXN0cywgb3IgbGlzdHMuKQogICAgICAg
ICAiIiIKICAgICAgICAgIyAuLi4gd2hpY2ggc291bmRzIGxpa2UgYSBldXBoYW1pc20gZm9yIHNv
bWV0aGluZwotICAgICAgICBmaW5hbF9maWx0ZXJzID0zRCBbIHNlbGYubW9kZWxfY2xhc3MuaWQg
PTNEPTNEIGlkIF0KICAgICAgICAgaWYgZmlsdGVyc0EgaXMgTm9uZToKICAgICAgICAgICAgIHJl
dHVybiBmaWx0ZXJzQgogICAgICAgICBpZiBmaWx0ZXJzQiBpcyBOb25lOgpAQCAtMTgyLDEyICsx
ODYsMTYgQEAKPTIwCiAgICAgZGVmIF9hcHBseV9vcmRlcl9ieV9saW1pdF9vZmZzZXQoIHNlbGYs
IHF1ZXJ5LCBvcmRlcl9ieSwgbGltaXQsIG9mZnNldD0KICk6CiAgICAgICAgICIiIgorICAgICAg
ICBSZXR1cm4gdGhlIHF1ZXJ5IGFmdGVyIGFkZGluZyB0aGUgb3JkZXJfYnksIGxpbWl0LCBhbmQg
b2Zmc2V0IGNsYXU9CnNlcy4KICAgICAgICAgIiIiCiAgICAgICAgIHF1ZXJ5ID0zRCBzZWxmLl9h
cHBseV9vcmRlcl9ieSggcXVlcnksIG9yZGVyX2J5ICkKICAgICAgICAgcmV0dXJuIHNlbGYuX2Fw
cGx5X2xpbWl0X29mZnNldCggcXVlcnksIGxpbWl0LCBvZmZzZXQgKQo9MjAKICAgICBkZWYgX2Fw
cGx5X29yZGVyX2J5KCBzZWxmLCBxdWVyeSwgb3JkZXJfYnkgKToKICAgICAgICAgIiIiCisgICAg
ICAgIFJldHVybiB0aGUgcXVlcnkgYWZ0ZXIgYWRkaW5nIHRoZSBvcmRlcl9ieSBjbGF1c2VzLgor
CisgICAgICAgIFVzZSB0aGUgbWFuYWdlcidzIGRlZmF1bHRfb3JkZXJfYnkgaWYgb3JkZXJfYnkg
aXMgTm9uZS4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIG9yZGVyX2J5IGlzIE5vbmU6CiAgICAg
ICAgICAgICAjVE9ETzogYWxsb3cgbm9uLXR1cGxlIGRlZmF1bHRfb3JkZXJfYnkKQEAgLTE5OSw2
ICsyMDcsNyBAQAo9MjAKICAgICBkZWYgX2FwcGx5X2xpbWl0X29mZnNldCggc2VsZiwgcXVlcnks
IGxpbWl0LCBvZmZzZXQgKToKICAgICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgcXVlcnkg
YWZ0ZXIgYXBwbHlpbmcgdGhlIGdpdmVuIGxpbWl0IGFuZCBvZmZzZXQgKGlmIG5vdD0KIE5vbmUp
LgogICAgICAgICAiIiIKICAgICAgICAgaWYgbGltaXQgaXMgbm90IE5vbmU6CiAgICAgICAgICAg
ICBxdWVyeSA9M0QgcXVlcnkubGltaXQoIGxpbWl0ICkKQEAgLTIwNywzNyArMjE2LDQ3IEBACiAg
ICAgICAgIHJldHVybiBxdWVyeQo9MjAKICAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBjb21tb24g
cXVlcmllcwotI1RPRE86IG5lZWRlZD8KKyAgICAjVE9ETzogbmVlZGVkPwogICAgIGRlZiBvbmUo
IHNlbGYsIHRyYW5zLCAqKmt3YXJncyApOgogICAgICAgICAiIiIKKyAgICAgICAgU2VuZHMga3dh
cmdzIHRvIGJ1aWxkIHRoZSBxdWVyeSBhbmQgcmV0dXJucyBvbmUgYW5kIG9ubHkgb25lIG1vZGVs
LgorCisgICAgICAgIDpyYWlzZXMgZXhjZXB0aW9ucy5PYmplY3ROb3RGb3VuZDogaWYgbm8gbW9k
ZWwgaXMgZm91bmQKKyAgICAgICAgOnJhaXNlcyBleGNlcHRpb25zLkNvbmZsaWN0OiBpZiBtb3Jl
IHRoYW4gb25lIG1vZGVsIGlzIGZvdW5kCiAgICAgICAgICIiIgorICAgICAgICAjIG92ZXJyaWRk
ZW4gdG8gcmFpc2Ugc2VyaWFsaXphYmxlIGVycm9ycwogICAgICAgICB0cnk6CiAgICAgICAgICAg
ICByZXR1cm4gc2VsZi5xdWVyeSggdHJhbnMsICoqa3dhcmdzICkub25lKCkKLSAgICAgICAgIyBy
ZS1yYWlzZSBhcyBzZXJpYWxpemFibGUgZXJyb3JzCiAgICAgICAgIGV4Y2VwdCBzcWxhbGNoZW15
Lm9ybS5leGMuTm9SZXN1bHRGb3VuZCwgbm90X2ZvdW5kOgogICAgICAgICAgICAgcmFpc2UgZXhj
ZXB0aW9ucy5PYmplY3ROb3RGb3VuZCggc2VsZi5tb2RlbF9jbGFzcy5fX25hbWVfXyArICc9CiBu
b3QgZm91bmQnICkKKyNUT0RPOiBleGNlcHRpb25zLkluY29uc2lzdGVudERhdGFiYXNlPwogICAg
ICAgICBleGNlcHQgc3FsYWxjaGVteS5vcm0uZXhjLk11bHRpcGxlUmVzdWx0c0ZvdW5kLCBtdWx0
aV9mb3VuZDoKICAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuQ29uZmxpY3QoICdmb3VuZCBt
b3JlIHRoYW4gb25lICcgKyBzZWxmLm1vZGVsPQpfY2xhc3MuX19uYW1lX18gKQo9MjAKLSAgICBk
ZWYgbGlzdCggc2VsZiwgdHJhbnMsICoqa3dhcmdzICk6CisgICAgZGVmIGxpc3QoIHNlbGYsIHRy
YW5zLCBxdWVyeT0zRE5vbmUsICoqa3dhcmdzICk6CiAgICAgICAgICIiIgorICAgICAgICBTZW5k
cyBrd2FyZ3MgdG8gYnVpbGQgdGhlIHF1ZXJ5IHJldHVybiBhbGwgbW9kZWxzIGZvdW5kLgogICAg
ICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYucXVlcnkoIHRyYW5zLCAqKmt3YXJncyApLmFs
bCgpCisgICAgICAgIHF1ZXJ5ID0zRCBxdWVyeSBvciBzZWxmLnF1ZXJ5KCB0cmFucywgKiprd2Fy
Z3MgKQorICAgICAgICByZXR1cm4gcXVlcnkuYWxsKCkKPTIwCiAgICAgZGVmIGJ5X2lkKCBzZWxm
LCB0cmFucywgaWQsICoqa3dhcmdzICk6CiAgICAgICAgICIiIgorICAgICAgICBHZXRzIGEgbW9k
ZWwgYnkgcHJpbWFyeSBpZC4KICAgICAgICAgIiIiCiAgICAgICAgIGlkX2ZpbHRlciA9M0Qgc2Vs
Zi5tb2RlbF9jbGFzcy5pZCA9M0Q9M0QgaWQKICAgICAgICAgcmV0dXJuIHNlbGYub25lKCB0cmFu
cywgZmlsdGVycz0zRGlkX2ZpbHRlciwgKiprd2FyZ3MgKQo9MjAKICAgICBkZWYgX3F1ZXJ5X2J5
X2lkcyggc2VsZiwgdHJhbnMsIGlkcywgZmlsdGVycz0zRE5vbmUsICoqa3dhcmdzICk6CiAgICAg
ICAgICIiIgorICAgICAgICBCdWlsZHMgYSBxdWVyeSB0byBmaW5kIGEgbGlzdCBvZiBtb2RlbHMg
d2l0aCB0aGUgZ2l2ZW4gbGlzdCBvZiBgaWQ9CnNgLgogICAgICAgICAiIiIKICAgICAgICAgaWRz
X2ZpbHRlciA9M0Qgc2VsZi5tb2RlbF9jbGFzcy5pZC5pbl8oIGlkcyApCiAgICAgICAgIHJldHVy
biBzZWxmLnF1ZXJ5KCB0cmFucywgZmlsdGVycz0zRHNlbGYuX211bmdlX2ZpbHRlcnMoIGlkc19m
aWx0ZT0KciwgZmlsdGVycyApLCAqKmt3YXJncyApCj0yMAogICAgIGRlZiBieV9pZHMoIHNlbGYs
IHRyYW5zLCBpZHMsICoqa3dhcmdzICk6CiAgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIGFu
IGluLW9yZGVyIGxpc3Qgb2YgbW9kZWxzIHdpdGggdGhlIG1hdGNoaW5nIGlkcyBpbiBgaWRzYC4K
ICAgICAgICAgIiIiCiAgICAgICAgIGZvdW5kID0zRCBzZWxmLl9xdWVyeV9ieV9pZHMoIHRyYW5z
LCBpZHMsICoqa3dhcmdzICkuYWxsKCkKICAgICAgICAgI1RPRE86IHRoaXMgZG9lcyBub3Qgb3Jk
ZXIgYnkgdGhlIG9yaWdpbmFsICdpZHMnIGFycmF5CkBAIC0yNzcsNyArMjk2LDkgQEAKICAgICAj
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tPQotLS0tLSBjcmVhdGUKICAgICBkZWYgY3JlYXRlKCBzZWxmLCB0cmFucywg
Zmx1c2g9M0RUcnVlLCAqYXJncywgKiprd2FyZ3MgKToKICAgICAgICAgIiIiCisgICAgICAgIEdl
bmVyaWNhbGx5IGNyZWF0ZSBhIG5ldyBtb2RlbC4KICAgICAgICAgIiIiCisgICAgICAgICMgb3Zl
cnJpZGUgaW4gc3ViY2xhc3NlcwogICAgICAgICBpdGVtID0zRCBzZWxmLm1vZGVsX2NsYXNzKCAq
YXJncywgKiprd2FyZ3MgKQogICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmFkZCggaXRlbSApCiAg
ICAgICAgIGlmIGZsdXNoOgpAQCAtMjg2LDEyICszMDcsMTYgQEAKPTIwCiAgICAgZGVmIGNvcHko
IHNlbGYsIHRyYW5zLCBpdGVtLCAqKmt3YXJncyApOgogICAgICAgICAiIiIKKyAgICAgICAgQ2xv
bmUgb3IgY29weSBhbiBpdGVtLgogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgZXhjZXB0aW9u
cy5Ob3RJbXBsZW1lbnRlZCggJ0Fic3RyYWN0IG1ldGhvZCcgKQo9MjAKICAgICAjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tPQotLS0tLSB1cGRhdGUKICAgICBkZWYgdXBkYXRlKCBzZWxmLCB0cmFucywgaXRlbSwgbmV3
X3ZhbHVlcywgZmx1c2g9M0RUcnVlLCAqKmt3YXJncyApOgogICAgICAgICAiIiIKKyAgICAgICAg
R2l2ZW4gYSBkaWN0aW9uYXJ5IG9mIG5ldyB2YWx1ZXMsIHVwZGF0ZSBgaXRlbWAgYW5kIHJldHVy
biBpdC4KKworICAgICAgICAuLm5vdGU6IE5PIHZhbGlkYXRpb24gb3IgZGVzZXJpYWxpemF0aW9u
IG9jY3VycyBoZXJlLgogICAgICAgICAiIiIKICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQo
IGl0ZW0gKQogICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBuZXdfdmFsdWVzLml0ZW1zKCk6CkBA
IC0zMDEsOCArMzI2LDEwIEBACiAgICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkK
ICAgICAgICAgcmV0dXJuIGl0ZW0KPTIwCisgICAgI1RPRE86IHlhZ25pPwogICAgIGRlZiBhc3Nv
Y2lhdGUoIHNlbGYsIHRyYW5zLCBhc3NvY2lhdGVfd2l0aCwgaXRlbSwgZm9yZWlnbl9rZXlfbmFt
ZT0zRE49Cm9uZSApOgogICAgICAgICAiIiIKKyAgICAgICAgR2VuZXJpY2FsbHkgYXNzb2NpYXRl
IGBpdGVtYCB3aXRoIGBhc3NvY2lhdGVfd2l0aGAgYmFzZWQgb24gYGZvcmVpPQpnbl9rZXlfbmFt
ZWAuCiAgICAgICAgICIiIgogICAgICAgICBmb3JlaWduX2tleV9uYW1lID0zRCBmb3JlaWduX2tl
eV9uYW1lIG9yIHNlbGYuZm9yZWlnbl9rZXlfbmFtZQogICAgICAgICBzZXRhdHRyKCBhc3NvY2lh
dGVfd2l0aCwgZm9yZWlnbl9rZXlfbmFtZSwgaXRlbSApCkBAIC0zMTAsNiArMzM3LDcgQEAKPTIw
CiAgICAgZGVmIHF1ZXJ5X2Fzc29jaWF0ZWQoIHNlbGYsIHRyYW5zLCBhc3NvY2lhdGVkX21vZGVs
X2NsYXNzLCBpdGVtLCBmb3JlaT0KZ25fa2V5X25hbWU9M0ROb25lICk6CiAgICAgICAgICIiIgor
ICAgICAgICBHZW5lcmljYWxseSBxdWVyeSBvdGhlciBpdGVtcyB0aGF0IGhhdmUgYmVlbiBhc3Nv
Y2lhdGVkIHdpdGggdGhpcyA9CmBpdGVtYC4KICAgICAgICAgIiIiCiAgICAgICAgIGZvcmVpZ25f
a2V5X25hbWUgPTNEIGZvcmVpZ25fa2V5X25hbWUgb3Igc2VsZi5mb3JlaWduX2tleV9uYW1lCiAg
ICAgICAgIGZvcmVpZ25fa2V5ID0zRCBnZXRhdHRyKCBhc3NvY2lhdGVkX21vZGVsX2NsYXNzLCBm
b3JlaWduX2tleV9uYW1lICkKCmRpZmYgLXIgNGJkZTcwYzY3N2E5MmRkYTcyMTJlY2M0Y2Q5ZWE5
YzRkM2VjNjk1MiAtciA4ZWI2ZDhiMGJmMTBhZDFhZDViNjlmOT0KZGE4N2Q4ZDAwOTNiOTcyZjEg
bGliL2dhbGF4eS9tYW5hZ2Vycy9kYXRhc2V0cy5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJz
L2RhdGFzZXRzLnB5CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvZGF0YXNldHMucHkKQEAgLTMy
LDYgKzMyLDcgQEAKICAgICAgICAgIyBkZWZhdWx0IHRvIE5FVyBzdGF0ZSBvbiBuZXcgZGF0YXNl
dHMKICAgICAgICAga3dhcmdzLnVwZGF0ZSggZGljdCggc3RhdGU9M0QoIGt3YXJncy5nZXQoICdz
dGF0ZScsIG1vZGVsLkRhdGFzZXQuPQpzdGF0ZXMuTkVXICkgKSApICkKICAgICAgICAgZGF0YXNl
dCA9M0QgbW9kZWwuRGF0YXNldCggKiprd2FyZ3MgKQorCiAgICAgICAgIHRyYW5zLnNhX3Nlc3Np
b24uYWRkKCBkYXRhc2V0ICkKICAgICAgICAgaWYgZmx1c2g6CiAgICAgICAgICAgICB0cmFucy5z
YV9zZXNzaW9uLmZsdXNoKCkKQEAgLTU0LDYgKzU1LDEyIEBACiAgICAgICAgIHBhc3MKPTIwCiAg
ICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLj0KLi4uLi4gZGVsZXRlCisgICAgZGVmIGVycm9yX3VubGVzc19kYXRh
c2V0X3B1cmdlX2FsbG93ZWQoIHNlbGYsIHRyYW5zLCBpdGVtLCBtc2c9M0ROb25lID0KKToKKyAg
ICAgICAgaWYgbm90IHRyYW5zLmFwcC5jb25maWcuYWxsb3dfdXNlcl9kYXRhc2V0X3B1cmdlOgor
ICAgICAgICAgICAgbXNnID0zRCBtc2cgb3IgJ1RoaXMgaW5zdGFuY2UgZG9lcyBub3QgYWxsb3cg
dXNlciBkYXRhc2V0IHB1cmc9CmluZycKKyAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuQ29u
ZmlnRG9lc05vdEFsbG93RXhjZXB0aW9uKCBtc2cgKQorICAgICAgICByZXR1cm4gaXRlbQorCiAg
ICAgZGVmIHB1cmdlKCBzZWxmLCB0cmFucywgZGF0YXNldCwgZmx1c2g9M0RUcnVlICk6CiAgICAg
ICAgICIiIgogICAgICAgICAiIiIKQEAgLTc4LDQyICs4NSw5MSBAQAogICAgICAgICAgICAgcmV0
dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCj0yMAorICAgIGRlZiBfYWNjZXNzX3Blcm1p
c3Npb24oIHNlbGYsIHRyYW5zLCBkYXRhc2V0LCB1c2VyPTNETm9uZSwgcm9sZT0zRE5vbmU9CiAp
OgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCisgICAgICAgIHNlY3VyaXR5X2FnZW50ID0zRCB0
cmFucy5hcHAuc2VjdXJpdHlfYWdlbnQKKyAgICAgICAgYWNjZXNzX2FjdGlvbiA9M0Qgc2VjdXJp
dHlfYWdlbnQucGVybWl0dGVkX2FjdGlvbnMuREFUQVNFVF9BQ0NFU1MuPQphY3Rpb24KKworICAg
ICAgICAjIGdldCBhIGxpc3Qgb2Ygcm9sZSBpZHMgdG8gY2hlY2sgYWNjZXNzIGZvciAoZGVmYXVs
dGluZyB0byBhbGxfcm89CmxlcykKKyAgICAgICAgdXNlcl9yb2xlcyA9M0QgWyByb2xlIF0gaWYg
cm9sZSBlbHNlIHVzZXIuYWxsX3JvbGVzKCkKKyAgICAgICAgdXNlcl9yb2xlX2lkcyA9M0QgWyBy
b2xlLmlkIGZvciByb2xlIGluIHVzZXJfcm9sZXMgXQorICAgICAgICBxdWVyeSA9M0QgKCB0cmFu
cy5zYV9zZXNzaW9uLnF1ZXJ5KCBtb2RlbC5EYXRhc2V0UGVybWlzc2lvbnMgKQorICAgICAgICAg
ICAgICAgICAgICAuZmlsdGVyKCBtb2RlbC5EYXRhc2V0UGVybWlzc2lvbnMuYWN0aW9uID0zRD0z
RCBhY2Nlc3M9Cl9hY3Rpb24gKQorICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKCBtb2RlbC5E
YXRhc2V0UGVybWlzc2lvbnMuZGF0YXNldCA9M0Q9M0QgZGF0YXM9CmV0ICkKKyAgICAgICAgICAg
ICAgICAgICAgLmZpbHRlciggbW9kZWwuRGF0YXNldFBlcm1pc3Npb25zLnJvbGVfaWQuaW5fKCB1
c2VyX3JvPQpsZV9pZHMgKSApICkKKyAgICAgICAgcGVybXMgPTNEIHF1ZXJ5LmFsbCgpCisgICAg
ICAgIGlmIGxlbiggcGVybXMgKToKKyAgICAgICAgICAgIHJldHVybiBwZXJtc1swXQorICAgICAg
ICByZXR1cm4gTm9uZQorCisgICAgZGVmIF9jcmVhdGVfYWNjZXNzX3Blcm1pc3Npb24oIHNlbGYs
IHRyYW5zLCBkYXRhc2V0LCByb2xlLCBmbHVzaD0zRFRydT0KZSApOgorICAgICAgICAiIiIKKyAg
ICAgICAgIiIiCisgICAgICAgIGFjY2Vzc19hY3Rpb24gPTNEIHRyYW5zLmFwcC5zZWN1cml0eV9h
Z2VudC5wZXJtaXR0ZWRfYWN0aW9ucy5EQVRBUz0KRVRfQUNDRVNTLmFjdGlvbgorICAgICAgICBw
ZXJtaXNzaW9uID0zRCBtb2RlbC5EYXRhc2V0UGVybWlzc2lvbnMoIGFjY2Vzc19hY3Rpb24sIGRh
dGFzZXQsIHI9Cm9sZSApCisgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCBwZXJtaXNzaW9u
ICkKKyAgICAgICAgaWYgZmx1c2g6CisgICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNo
KCkKKyAgICAgICAgcmV0dXJuIHBlcm1pc3Npb24KKwogICAgIGRlZiBoYXNfYWNjZXNzX3Blcm1p
c3Npb24oIHNlbGYsIHRyYW5zLCBkYXRhc2V0LCB1c2VyICk6CiAgICAgICAgICIiIgogICAgICAg
ICAiIiIKLSAgICAgICAgcm9sZXMgPTNEIHVzZXIucm9sZXMgaWYgdXNlciBlbHNlIFtdCisgICAg
ICAgPTIwCisgICAgICAgIHJvbGVzID0zRCB1c2VyLmFsbF9yb2xlcygpIGlmIHVzZXIgZWxzZSBb
XQogICAgICAgICByZXR1cm4gdHJhbnMuYXBwLnNlY3VyaXR5X2FnZW50LmNhbl9hY2Nlc3NfZGF0
YXNldCggcm9sZXMsIGRhdGFzZXQ9CiApCj0yMAotICAgIGRlZiBnaXZlX2FjY2Vzc19wZXJtaXNz
aW9uKCBzZWxmLCB0cmFucywgZGF0YXNldCwgdXNlciApOgotICAgICAgICAiIiIKLSAgICAgICAg
IiIiCi0gICAgICAgICNwZXJtaXNzaW9uID0zRCB7fQotICAgICAgICAjI1RPRE86Pz8gaXMgdGhp
cyBjb3JyZWN0IGFuZCByZWxpYWJsZT8KLSAgICAgICAgI3VzZXJfcHJpdmF0ZV9yb2xlID0zRCBz
ZWxmLnVzZXJfbWdyLnByaXZhdGVfcm9sZSggdHJhbnMsIHVzZXIgKQotICAgICAgICAjcGVybWlz
c2lvblsgdHJhbnMuYXBwLnNlY3VyaXR5X2FnZW50LnBlcm1pdHRlZF9hY3Rpb25zLkRBVEFTRVRf
QUM9CkNFU1MgXSA9M0QgWyB1c2VyX3ByaXZhdGVfcm9sZSBdCi0gICAgICAgICN0cmFucy5hcHAu
c2VjdXJpdHlfYWdlbnQuc2V0X2RhdGFzZXRfcGVybWlzc2lvbiggZGF0YXNldCwgcGVybWlzcz0K
aW9uICkKLSAgICAgICAgcGFzcworICAgICNUT0RPOiB0aGlzIG5lZWRzIHdvcmsKKyAgICAjZGVm
IGdpdmVfYWNjZXNzX3Blcm1pc3Npb24oIHNlbGYsIHRyYW5zLCBkYXRhc2V0LCB1c2VyLCBmbHVz
aD0zRFRydWUgPQopOgorICAgICMgICAgIiIiCisgICAgIyAgICAiIiIKKyAgICAjICAgICMgZm9y
IG5vdywgdXNlIHRoZSB1c2VyJ3MgcHJpdmF0ZSByb2xlCisgICAgIyAgICBzZWN1cml0eV9hZ2Vu
dCA9M0QgdHJhbnMuYXBwLnNlY3VyaXR5X2FnZW50CisgICAgIyAgICB1c2VyX3JvbGUgPTNEIHNl
Y3VyaXR5X2FnZW50LmdldF9wcml2YXRlX3VzZXJfcm9sZSggdXNlciApCisgICAgIworICAgICMg
ICAgZXhpc3RpbmdfcGVybWlzc2lvbiA9M0Qgc2VsZi5fYWNjZXNzX3Blcm1pc3Npb24oIHRyYW5z
LCBkYXRhc2V0LCA9CnJvbGU9M0R1c2VyX3JvbGUgKQorICAgICMgICAgcHJpbnQgJ2V4aXN0aW5n
IGFjY2Vzc19wZXJtOicsIGV4aXN0aW5nX3Blcm1pc3Npb24KKyAgICAjICAgIGlmIGV4aXN0aW5n
X3Blcm1pc3Npb246CisgICAgIyAgICAgICAgcmV0dXJuIGRhdGFzZXQKKyAgICAjCisgICAgIyAg
ICBwZXJtaXNzaW9uID0zRCBzZWxmLl9jcmVhdGVfYWNjZXNzX3Blcm1pc3Npb24oIHRyYW5zLCBk
YXRhc2V0LCB1cz0KZXJfcm9sZSApCisgICAgIyAgICBwcmludCAnYWNjZXNzX3JvbGVzOicsIFsg
cm9sZS5uYW1lIGZvciByb2xlIGluIGRhdGFzZXQuZ2V0X2FjY2Vzcz0KX3JvbGVzKCB0cmFucyAp
IF0KKyAgICAjCisgICAgIyAgICAjYWNjZXNzX2FjdGlvbiA9M0Qgc2VjdXJpdHlfYWdlbnQucGVy
bWl0dGVkX2FjdGlvbnMuREFUQVNFVF9BQ0NFUz0KUy5hY3Rpb24KKyAgICAjICAgICNhY2Nlc3Nf
YWN0aW9uID0zRCBzZWN1cml0eV9hZ2VudC5nZXRfYWN0aW9uKCBhY2Nlc3NfYWN0aW9uICkKKyAg
ICAjICAgICNwZXJtaXNzaW9ucyA9M0QgeyBhY2Nlc3NfYWN0aW9uIDogWyB1c2VyX3JvbGUgXSB9
CisgICAgIyAgICAjc2VjdXJpdHlfYWdlbnQuc2V0X2RhdGFzZXRfcGVybWlzc2lvbiggZGF0YXNl
dCwgcGVybWlzc2lvbnMgKQorICAgICMKKyAgICAjICAgICN0cmFucy5zYV9zZXNzaW9uLmFkZCgg
ZGF0YXNldCApCisgICAgIyAgICAjaWYgZmx1c2g6CisgICAgIyAgICAjICAgIHRyYW5zLnNhX3Nl
c3Npb24uZmx1c2goKQorICAgICMKKyAgICAjICAgIGRibF9jaGsgPTNEIHNlbGYuX2FjY2Vzc19w
ZXJtaXNzaW9uKCB0cmFucywgZGF0YXNldCwgcm9sZT0zRHVzZXJfPQpyb2xlICkKKyAgICAjICAg
IHByaW50ICdhY2Nlc3NfcGVybTonLCBkYmxfY2hrCisgICAgIworICAgICMgICAgcmV0dXJuIGRh
dGFzZXQKPTIwCi0gICAgZGVmIHJlbW92ZV9hY2Nlc3NfcGVybWlzc2lvbiggc2VsZiwgdHJhbnMs
IGRhdGFzZXQsIHVzZXIgKToKLSAgICAgICAgIiIiCi0gICAgICAgICIiIgotICAgICAgICBwYXNz
CisgICAgI2RlZiByZW1vdmVfYWNjZXNzX3Blcm1pc3Npb24oIHNlbGYsIHRyYW5zLCBkYXRhc2V0
LCB1c2VyICk6CisgICAgIyAgICAiIiIKKyAgICAjICAgICIiIgorICAgICMgICAgcGFzcwo9MjAK
ICAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBtYW5hZ2UvbW9kaWZ5Ci0gICAgZGVmIGhhc19tYW5h
Z2VfcGVybWlzc2lvbiggc2VsZiwgdHJhbnMsIGRhdGFzZXQsIHVzZXIgKToKLSAgICAgICAgIiIi
Ci0gICAgICAgICIiIgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgZ2l2ZV9tYW5hZ2VfcGVybWlz
c2lvbiggc2VsZiwgdHJhbnMsIGRhdGFzZXQsIHVzZXIgKToKLSAgICAgICAgIiIiCi0gICAgICAg
ICIiIgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgcmVtb3ZlX21hbmFnZV9wZXJtaXNzaW9uKCBz
ZWxmLCB0cmFucywgZGF0YXNldCwgdXNlciApOgotICAgICAgICAiIiIKLSAgICAgICAgIiIiCi0g
ICAgICAgIHBhc3MKKyAgICAjZGVmIGhhc19tYW5hZ2VfcGVybWlzc2lvbiggc2VsZiwgdHJhbnMs
IGRhdGFzZXQsIHVzZXIgKToKKyAgICAjICAgICIiIgorICAgICMgICAgIiIiCisgICAgIyAgICBw
YXNzCisgICAgIworICAgICNkZWYgZ2l2ZV9tYW5hZ2VfcGVybWlzc2lvbiggc2VsZiwgdHJhbnMs
IGRhdGFzZXQsIHVzZXIgKToKKyAgICAjICAgICIiIgorICAgICMgICAgIiIiCisgICAgIyAgICBw
YXNzCisgICAgIworICAgICNkZWYgcmVtb3ZlX21hbmFnZV9wZXJtaXNzaW9uKCBzZWxmLCB0cmFu
cywgZGF0YXNldCwgdXNlciApOgorICAgICMgICAgIiIiCisgICAgIyAgICAiIiIKKyAgICAjICAg
IHBhc3MKPTIwCiAgICAgI1RPRE86IGltcGxlbWVudCBhYm92ZSBmb3IgZ3JvdXBzCiAgICAgI1RP
RE86IGRhdGF0eXBlcz8KQEAgLTE4Myw5ICsyMzksMTEgQEAKICAgICBkZWYgbWV0YWRhdGEoIHNl
bGYsIHRyYW5zLCBkYXRhc2V0X2Fzc29jICk6CiAgICAgICAgICIiIgogICAgICAgICAiIiIKKyAg
ICAgICAgIyBnZXQgbWV0YWRhdGEKICAgICAgICAgcGFzcwo9MjAKICAgICBkZWYgaXNfYmVpbmdf
dXNlZCggc2VsZiwgdHJhbnMsIGRhdGFzZXRfYXNzb2MgKToKICAgICAgICAgIiIiCiAgICAgICAg
ICIiIgorICAgICAgICAjVE9ETzogY2hlY2sgaGlzdG9yeV9hc3NvY2lhdGlvbnMsIGxpYnJhcnlf
YXNzb2NpYXRpb25zCiAgICAgICAgIHBhc3MKCmRpZmYgLXIgNGJkZTcwYzY3N2E5MmRkYTcyMTJl
Y2M0Y2Q5ZWE5YzRkM2VjNjk1MiAtciA4ZWI2ZDhiMGJmMTBhZDFhZDViNjlmOT0KZGE4N2Q4ZDAw
OTNiOTcyZjEgbGliL2dhbGF4eS9tYW5hZ2Vycy9oZGFzLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFu
YWdlcnMvaGRhcy5weQorKysgYi9saWIvZ2FsYXh5L21hbmFnZXJzL2hkYXMucHkKQEAgLTM3LDEx
ICszNywxMSBAQAogICAgIGRlZiBpc19hY2Nlc3NpYmxlKCBzZWxmLCB0cmFucywgaGRhLCB1c2Vy
ICk6CiAgICAgICAgICIiIgogICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5pc19vd25lZCgg
dHJhbnMsIGhkYSwgdXNlciApOgorICAgICAgICBpZiBzZWxmLmlzX293bmVyKCB0cmFucywgaGRh
LCB1c2VyICk6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gc3VwZXIo
IEhEQU1hbmFnZXIsIHNlbGYgKS5pc19hY2Nlc3NpYmxlKCB0cmFucywgaGRhLCB1c2VyICkKPTIw
Ci0gICAgZGVmIGlzX293bmVkKCBzZWxmLCB0cmFucywgaGRhLCB1c2VyICk6CisgICAgZGVmIGlz
X293bmVyKCBzZWxmLCB0cmFucywgaGRhLCB1c2VyICk6CiAgICAgICAgICIiIgogICAgICAgICBV
c2UgaGlzdG9yeSB0byBzZWUgaWYgY3VycmVudCB1c2VyIG93bnMgSERBLgogICAgICAgICAiIiIK
QEAgLTExNiw3ICsxMTYsOSBAQAogICAgIGRlZiBwdXJnZSggc2VsZiwgdHJhbnMsIGhkYSApOgog
ICAgICAgICAiIiIKICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuZXJyb3JfdW5sZXNzX2RhdGFz
ZXRfcHVyZ2VfYWxsb3dlZCggdHJhbnMsIGhkYSApCisgICAgICAgICMgZXJyb3IgaGVyZSBpZiBk
aXNhbGxvd2VkIC0gYmVmb3JlIGpvYnMgYXJlIHN0b3BwZWQKKyAgICAgICAgI1RPRE86IHBvc3Mu
IG1vdmUgdG8gRGF0YXNldEFzc29jaWF0aW9uTWFuYWdlcgorICAgICAgICBzZWxmLmRhdGFzZXRf
bWdyLmVycm9yX3VubGVzc19kYXRhc2V0X3B1cmdlX2FsbG93ZWQoIHRyYW5zLCBoZGEgKQogICAg
ICAgICBzdXBlciggSERBTWFuYWdlciwgc2VsZiApLnB1cmdlKCB0cmFucywgaGRhLCBmbHVzaD0z
RFRydWUgKQo9MjAKICAgICAgICAgIyBzaWduYWwgdG8gc3RvcCB0aGUgY3JlYXRpbmcgam9iPwoK
ZGlmZiAtciA0YmRlNzBjNjc3YTkyZGRhNzIxMmVjYzRjZDllYTljNGQzZWM2OTUyIC1yIDhlYjZk
OGIwYmYxMGFkMWFkNWI2OWY5PQpkYTg3ZDhkMDA5M2I5NzJmMSBsaWIvZ2FsYXh5L21hbmFnZXJz
L2hpc3Rvcmllcy5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL2hpc3Rvcmllcy5weQorKysg
Yi9saWIvZ2FsYXh5L21hbmFnZXJzL2hpc3Rvcmllcy5weQpAQCAtMjI1LDcgKzIyNSw3IEBACj0y
MAo9MjAKICMjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9Cj0zRD0zRD0zRD0zRAotY2xhc3MgSGlzdG9yeVNlcmlhbGl6ZXIoIGJhc2UuTW9kZWxT
ZXJpYWxpemVyICk6CitjbGFzcyBIaXN0b3J5U2VyaWFsaXplciggc2hhcmFibGUuU2hhcmFibGVN
b2RlbFNlcmlhbGl6ZXIgKToKICAgICAiIiIKICAgICBJbnRlcmZhY2Uvc2VydmljZSBvYmplY3Qg
Zm9yIHNlcmlhbGl6aW5nIGhpc3RvcmllcyBpbnRvIGRpY3Rpb25hcmllcy4KICAgICAiIiIKQEAg
LTMyMSw3ICszMjEsNyBAQAo9MjAKPTIwCiAjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRAotY2xhc3MgSGlzdG9yeURlc2Vy
aWFsaXplciggYmFzZS5Nb2RlbERlc2VyaWFsaXplciApOgorY2xhc3MgSGlzdG9yeURlc2VyaWFs
aXplciggc2hhcmFibGUuU2hhcmFibGVNb2RlbERlc2VyaWFsaXplciApOgogICAgICIiIgogICAg
IEludGVyZmFjZS9zZXJ2aWNlIG9iamVjdCBmb3IgdmFsaWRhdGluZyBhbmQgZGVzZXJpYWxpemlu
ZyBkaWN0aW9uYXJpZXM9CiBpbnRvIGhpc3Rvcmllcy4KICAgICAiIiIKCmRpZmYgLXIgNGJkZTcw
YzY3N2E5MmRkYTcyMTJlY2M0Y2Q5ZWE5YzRkM2VjNjk1MiAtciA4ZWI2ZDhiMGJmMTBhZDFhZDVi
NjlmOT0KZGE4N2Q4ZDAwOTNiOTcyZjEgbGliL2dhbGF4eS9tYW5hZ2Vycy9zaGFyYWJsZS5weQot
LS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL3NoYXJhYmxlLnB5CisrKyBiL2xpYi9nYWxheHkvbWFu
YWdlcnMvc2hhcmFibGUucHkKQEAgLTIyLDEyICsyMiwxMiBAQAogICAgICAgICBjYW4gYmUgcHVi
bGlzaGVkIGVmZmVjdGl2ZWx5IG1ha2luZyBpdCBhdmFpbGFibGUgdG8gYWxsIG90aGVyIFVzZXJz
CiAgICAgICAgIGNhbiBiZSByYXRlZAogICAgICIiIgotICAgICMgaGlzdG9yaWVzLCBwYWdlcywg
c3RvcmVkIHdvcmtmbG93cywgdmlzdWFsaXphdGlvbnMKKyAgICAjIGUuZy4gaGlzdG9yaWVzLCBw
YWdlcywgc3RvcmVkIHdvcmtmbG93cywgdmlzdWFsaXphdGlvbnMKKworICAgICMgdGhlIG1vZGVs
IHVzZWQgZm9yIFVzZXJTaGFyZUFzc29jaWF0aW9ucyB3aXRoIHRoaXMgbW9kZWwKICAgICB1c2Vy
X3NoYXJlX21vZGVsID0zRCBOb25lCj0yMAogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6
Ci0gICAgICAgICIiIgotICAgICAgICAiIiIKICAgICAgICAgc3VwZXIoIFNoYXJhYmxlTW9kZWxN
YW5hZ2VyLCBzZWxmICkuX19pbml0X18oIGFwcCApCiAgICAgICAgICMgdXNlciBtYW5hZ2VyIGlz
IG5lZWRlZCB0byBjaGVjayBhY2Nlc3Mvb3duZXJzaGlwL2FkbWluCiAgICAgICAgIHNlbGYudXNl
cl9tZ3IgPTNEIHVzZXJzLlVzZXJNYW5hZ2VyKCBhcHAgKQpAQCAtNDAsMjIgKzQwLDIxIEBACiAg
ICAgICAgIGZpbHRlcnM9M0RzZWxmLl9tdW5nZV9maWx0ZXJzKCB1c2VyX2ZpbHRlciwgZmlsdGVy
cyApCiAgICAgICAgIHJldHVybiBzZWxmLnF1ZXJ5KCB0cmFucywgZmlsdGVycz0zRGZpbHRlcnMs
ICoqa3dhcmdzICkKPTIwCi0gICAgZGVmIGJ5X3VzZXIoIHNlbGYsIHRyYW5zLCB1c2VyLCBmaWx0
ZXJzPTNETm9uZSwgKiprd2FyZ3MgKToKKyAgICBkZWYgYnlfdXNlciggc2VsZiwgdHJhbnMsIHVz
ZXIsICoqa3dhcmdzICk6CiAgICAgICAgICIiIgogICAgICAgICAiIiIKLSAgICAgICAgdXNlcl9m
aWx0ZXIgPTNEIHNlbGYubW9kZWxfY2xhc3MudXNlcl9pZCA9M0Q9M0QgdXNlci5pZAotICAgICAg
ICBmaWx0ZXJzPTNEc2VsZi5fbXVuZ2VfZmlsdGVycyggdXNlcl9maWx0ZXIsIGZpbHRlcnMgKQot
ICAgICAgICAjbm90ZTogbm8gb3duZXJzaGlwIGNoZWNrIG5lZWRlZAotICAgICAgICByZXR1cm4g
c2VsZi5saXN0KCB0cmFucywgZmlsdGVycz0zRGZpbHRlcnMsICoqa3dhcmdzICkKKyAgICAgICAg
cXVlcnkgPTNEIHNlbGYuX3F1ZXJ5X2J5X3VzZXIoIHRyYW5zLCB1c2VyLCAqKmt3YXJncyApCisg
ICAgICAgIHJldHVybiBzZWxmLmxpc3QoIHRyYW5zLCBxdWVyeT0zRHF1ZXJ5LCAqKmt3YXJncyAp
Cj0yMAogICAgICMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi49Ci4uLi4uIG93bmVkIG1vZGVsIGludGVyZmFjZQotIyB0
aGlzIHJlYWxseSBpcyBtb3JlIG9mIGEgJ2NoZWNrXyplZGl0YWJsZS93cml0ZSonIC0gaW4gZXNz
ZW5jZSB0aGF0J3Mgd2g9CmF0IGNoZWNrX293bmVyc2hpcCBib2lscyBkb3duIHRvIG9mdGVuCiAg
ICAgZGVmIGlzX293bmVyKCBzZWxmLCB0cmFucywgaXRlbSwgdXNlciApOgogICAgICAgICAiIiIK
KyAgICAgICAgUmV0dXJuIHRydWUgaWYgdGhpcyBzaGFyYWJsZSBiZWxvbmdzIHRvIGB1c2VyYCAo
b3IgYHVzZXJgIGlzIGFuIGFkPQptaW4pLgogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi51
c2VyX21nci5pc19hbm9ueW1vdXMoIHVzZXIgKToKICAgICAgICAgICAgICMgbm90ZTogdGhpcyBu
ZWVkcyB0byBiZSBvdmVycmlkZGVuIGluIHRoZSBjYXNlIG9mIGFub24gdXNlcnMgPQphbmQgc2Vz
c2lvbi5jdXJyZW50X2hpc3RvcnkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAj
IC4uLiBlZmZlY3RpdmVseSBhIGdvb2QgZml0IHRvIGhhdmUgdGhpcyBoZXJlLCBidXQgbm90IHNl
bWFudGljYWw9Cmx5CiAgICAgICAgIGlmIHNlbGYudXNlcl9tZ3IuaXNfYWRtaW4oIHRyYW5zLCB1
c2VyICk6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gaXRlbS51c2Vy
ID0zRD0zRCB1c2VyCkBAIC02Myw2ICs2Miw4IEBACiAgICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLj0KLi4uLi4g
YWNjZXNzaWJsZSBpbnRlcmZhY2UKICAgICBkZWYgaXNfYWNjZXNzaWJsZSggc2VsZiwgdHJhbnMs
IGl0ZW0sIHVzZXIgKToKICAgICAgICAgIiIiCisgICAgICAgIElmIHRoZSBpdGVtIGlzIGltcG9y
dGFibGUsIGlzIG93bmVkIGJ5IGB1c2VyYCwgb3IgKHRoZSB2YWxpZCkgYHVzZT0KcmAKKyAgICAg
ICAgaXMgaW4gJ3VzZXJzIHNoYXJlZCB3aXRoJyBsaXN0IGZvciB0aGUgaXRlbTogcmV0dXJuIFRy
dWUuCiAgICAgICAgICIiIgogICAgICAgICBpZiBpdGVtLmltcG9ydGFibGU6CiAgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQpAQCAtNzYsNiArNzcsOCBAQAogICAgICAgICByZXR1cm4gRmFsc2UKPTIw
CiAgICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLj0KLi4uLi4gaW1wb3J0YWJsZQorI1RPRE86IHRoZSByZWxhdGlv
bnNoaXAgYmV0d2VlbiBpbXBvcnRhYmxlIGFuZCBwdWJsaXNoZWQgaXMgaWxsIGRlZmluZWQKKyM/
PzogY2FuIGEgcHVibGlzaGVkIGl0ZW0gYmUgbm9uLWltcG9ydGFibGU/CiAgICAgZGVmIG1ha2Vf
aW1wb3J0YWJsZSggc2VsZiwgdHJhbnMsIGl0ZW0sIGZsdXNoPTNEVHJ1ZSApOgogICAgICAgICAi
IiIKICAgICAgICAgTWFrZXMgaXRlbSBhY2Nlc3NpYmxlLS12aWV3YWJsZSBhbmQgaW1wb3J0YWJs
ZS0tYW5kIHNldHMgaXRlbSdzIHNsPQp1Zy4KQEAgLTk1LDcgKzk4LDYgQEAKICAgICAgICAgRG9l
cyBub3QgZmx1c2gvY29tbWl0IGNoYW5nZXMsIGhvd2V2ZXIuIEl0ZW0gbXVzdCBoYXZlIG5hbWUs
IHVzZXIsCiAgICAgICAgIGltcG9ydGFibGUsIGFuZCBzbHVnIGF0dHJpYnV0ZXMuCiAgICAgICAg
ICIiIgotICAgICAgICAjPz86IGNhbiBhIHB1Ymxpc2hlZCBpdGVtIGJlIG5vbi1pbXBvcnRhYmxl
PwogICAgICAgICAjaWYgaXRlbS5wdWJsaXNoZWQ6CiAgICAgICAgICMgICAgaWYgdW5wdWJsaXNo
OgogICAgICAgICAjICAgICAgICBzZWxmLnVucHVibGlzaCggdHJhbnMsIGl0ZW0sIGZsdXNoPTNE
RmFsc2UgKQpAQCAtMTA3LDEzICsxMDksMjEgQEAKICAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Np
b24uZmx1c2goKQogICAgICAgICByZXR1cm4gaXRlbQo9MjAKLSAgICBkZWYgbGlzdF9pbXBvcnRh
YmxlKCBzZWxmLCB0cmFucywgKiprd2FyZ3MgKToKLSNUT0RPOgotICAgICAgICAiIiIKLSAgICAg
ICAgIiIiCi0gICAgICAgIHBhc3MKKyAgICAjZGVmIF9xdWVyeV9pbXBvcnRhYmxlKCBzZWxmLCB0
cmFucywgZmlsdGVycz0zRE5vbmUsICoqa3dhcmdzICk6CisgICAgIyAgICAiIiIKKyAgICAjICAg
ICIiIgorICAgICMgICAgaW1wb3J0YWJsZV9maWx0ZXIgPTNEIHNlbGYubW9kZWxfY2xhc3MuaW1w
b3J0YWJsZSA9M0Q9M0QgVHJ1ZQorICAgICMgICAgZmlsdGVycyA9M0Qgc2VsZi5fbXVuZ2VfZmls
dGVycyggaW1wb3J0YWJsZV9maWx0ZXIsIGZpbHRlcnMgKQorICAgICMgICAgcmV0dXJuIHNlbGYu
bGlzdCggdHJhbnMsIGZpbHRlcnM9M0RmaWx0ZXJzLCAqKmt3YXJncyApCisgICAgIworICAgICNk
ZWYgbGlzdF9pbXBvcnRhYmxlKCBzZWxmLCB0cmFucywgKiprd2FyZ3MgKToKKyAgICAjICAgICIi
IgorICAgICMgICAgIiIiCisgICAgIyAgICBxdWVyeSA9M0Qgc2VsZi5fcXVlcnlfaW1wb3J0YWJs
ZSggdHJhbnMsIHVzZXIsICoqa3dhcmdzICkKKyAgICAjICAgIHJldHVybiBzZWxmLmxpc3QoIHRy
YW5zLCBxdWVyeT0zRHF1ZXJ5LCAqKmt3YXJncyApCj0yMAogICAgICMgLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi49Ci4u
Li4uIHB1Ymxpc2hlZAorI1RPRE86IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBpbXBvcnRhYmxl
IGFuZCBwdWJsaXNoZWQgaXMgaWxsIGRlZmluZWQKICAgICAjZGVmIHB1Ymxpc2goIHNlbGYsIHRy
YW5zLCBpdGVtLCBtYWtlX2FjY2Vzc2libGU9M0RUcnVlLCBmbHVzaD0zRFRydWUgPQopOgogICAg
ICMgICAgaWYgbm90IGl0ZW0uaW1wb3J0YWJsZToKICAgICAjICAgICAgICBpZiBtYWtlX2FjY2Vz
c2libGU6CkBAIC0xMjQsNiArMTM0LDcgQEAKICAgICAjIGEgcHVibGlzaGVkIGl0ZW0gaXMgYWxz
by9hbHJlYWR5IGltcG9ydGFibGUoPTNEVHJ1ZSkgaW1wbGljaXRseQogICAgIGRlZiBwdWJsaXNo
KCBzZWxmLCB0cmFucywgaXRlbSwgZmx1c2g9M0RUcnVlICk6CiAgICAgICAgICIiIgorICAgICAg
ICBTZXQgYm90aCB0aGUgaW1wb3J0YWJsZSBhbmQgcHVibGlzaGVkIGZsYWdzIG9uIGBpdGVtYCB0
byBUcnVlLgogICAgICAgICAiIiIKICAgICAgICAgaWYgbm90IGl0ZW0uaW1wb3J0YWJsZToKICAg
ICAgICAgICAgIHNlbGYubWFrZV9pbXBvcnRhYmxlKCB0cmFucywgaXRlbSwgZmx1c2g9M0RGYWxz
ZSApCkBAIC0xMzUsNiArMTQ2LDcgQEAKPTIwCiAgICAgZGVmIHVucHVibGlzaCggc2VsZiwgdHJh
bnMsIGl0ZW0sIGZsdXNoPTNEVHJ1ZSApOgogICAgICAgICAiIiIKKyAgICAgICAgU2V0IHRoZSBw
dWJsaXNoZWQgZmxhZyBvbiBgaXRlbWAgdG8gRmFsc2UuCiAgICAgICAgICIiIgogICAgICAgICB0
cmFucy5zYV9zZXNzaW9uLmFkZCggaXRlbSApCiAgICAgICAgIGl0ZW0ucHVibGlzaGVkID0zRCBG
YWxzZQpAQCAtMTQyLDExICsxNTQsMTggQEAKICAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24u
Zmx1c2goKQogICAgICAgICByZXR1cm4gaXRlbQo9MjAKLSAgICBkZWYgbGlzdF9wdWJsaXNoZWQo
IHNlbGYsIHRyYW5zLCAqKmt3YXJncyApOgotI1RPRE86Ci0gICAgICAgICIiIgotICAgICAgICAi
IiIKLSAgICAgICAgcGFzcworICAgICNkZWYgX3F1ZXJ5X3B1Ymxpc2hlZCggc2VsZiwgdHJhbnMs
IGZpbHRlcnM9M0ROb25lLCAqKmt3YXJncyApOgorICAgICMgICAgIiIiCisgICAgIyAgICAiIiIK
KyAgICAjICAgIHB1Ymxpc2hlZF9maWx0ZXIgPTNEIHNlbGYubW9kZWxfY2xhc3MucHVibGlzaGVk
ID0zRD0zRCBUcnVlCisgICAgIyAgICBmaWx0ZXJzID0zRCBzZWxmLl9tdW5nZV9maWx0ZXJzKCBw
dWJsaXNoZWRfZmlsdGVyLCBmaWx0ZXJzICkKKyAgICAjICAgIHJldHVybiBzZWxmLmxpc3QoIHRy
YW5zLCBmaWx0ZXJzPTNEZmlsdGVycywgKiprd2FyZ3MgKQorICAgICMKKyAgICAjZGVmIGxpc3Rf
cHVibGlzaGVkKCBzZWxmLCB0cmFucywgKiprd2FyZ3MgKToKKyAgICAjICAgICIiIgorICAgICMg
ICAgIiIiCisgICAgIyAgICBxdWVyeSA9M0Qgc2VsZi5fcXVlcnlfcHVibGlzaGVkKCB0cmFucywg
dXNlciwgKiprd2FyZ3MgKQorICAgICMgICAgcmV0dXJuIHNlbGYubGlzdCggdHJhbnMsIHF1ZXJ5
PTNEcXVlcnksICoqa3dhcmdzICkKPTIwCiAgICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLj0KLi4uLi4gdXNlciBz
aGFyaW5nCiAgICAgIyBzaGFyaW5nIGlzIG9mdGVuIGRvbmUgdmlhIGEgM3JkIHRhYmxlIGJ0d24g
YSBVc2VyIGFuZCBhbiBpdGVtIC0+IGEgPD0KSXRlbT5Vc2VyU2hhcmVBc3NvY2lhdGlvbgpAQCAt
MTg2LDIzICsyMDUsMzEgQEAKICAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uZmx1c2goKQog
ICAgICAgICByZXR1cm4gaXRlbQo9MjAKLSAgICBkZWYgbGlzdF9zaGFyZWRfd2l0aCggc2VsZiwg
dHJhbnMsIGl0ZW0sIHVzZXIsICoqa3dhcmdzICk6Ci0jVE9ETzoKLSAgICAgICAgIiIiCi0gICAg
ICAgICIiIgotICAgICAgICBwYXNzCisgICAgI2RlZiBfcXVlcnlfc2hhcmVkX3dpdGgoIHNlbGYs
IHRyYW5zLCB1c2VyLCBmaWx0ZXJzPTNETm9uZSwgKiprd2FyZ3MgKToKKyAgICAjI1RPRE86Cisg
ICAgIyAgICAiIiIKKyAgICAjICAgICIiIgorICAgICMgICAgcGFzcworCisgICAgI2RlZiBsaXN0
X3B1Ymxpc2hlZCggc2VsZiwgdHJhbnMsIHVzZXIsICoqa3dhcmdzICk6CisgICAgIyAgICAiIiIK
KyAgICAjICAgICIiIgorICAgICMgICAgcXVlcnkgPTNEIHNlbGYuX3F1ZXJ5X3NoYXJlZF93aXRo
KCB0cmFucywgdXNlciwgKiprd2FyZ3MgKQorICAgICMgICAgcmV0dXJuIHNlbGYubGlzdCggdHJh
bnMsIHF1ZXJ5PTNEcXVlcnksICoqa3dhcmdzICkKPTIwCiAgICAgIyAuLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLj0KLi4u
Li4gc2x1Z3MKICAgICAjIHNsdWdzIGFyZSBodW1hbiByZWFkYWJsZSBzdHJpbmdzIG9mdGVuIHVz
ZWQgdG8gbGluayB0byBzaGFyYWJsZSByZXNvPQp1cmNlcyAocmVwbGFjaW5nIGlkcykKKyAgICAj
VE9ETzogYXMgdmFsaWRhdG9yLCBkZXNlcmlhbGl6ZXIsIGV0Yy4gKG1heWJlIGFub3RoZXIgb2Jq
ZWN0IGVudGlyZWx5PQo/KQogICAgIGRlZiBpc192YWxpZF9zbHVnKCBzZWxmLCBzbHVnICk6CiAg
ICAgICAgICIiIgotICAgICAgICBSZXR1cm5zIHRydWUgaWYgc2x1ZyBpcyB2YWxpZC4KKyAgICAg
ICAgUmV0dXJucyB0cnVlIGlmIGBzbHVnYCBpcyB2YWxpZC4KICAgICAgICAgIiIiCiAgICAgICAg
IFZBTElEX1NMVUdfUkUgPTNEIHJlLmNvbXBpbGUoICJeW2EtejAtOVwtXSskIiApCiAgICAgICAg
IHJldHVybiBWQUxJRF9TTFVHX1JFLm1hdGNoKCBzbHVnICkKPTIwCiAgICAgZGVmIHNldF9zbHVn
KCBzZWxmLCB0cmFucywgaXRlbSwgbmV3X3NsdWcsIGZsdXNoPTNEVHJ1ZSApOgogICAgICAgICAi
IiIKKyAgICAgICAgVmFsaWRhdGUgYW5kIHNldCB0aGUgbmV3IHNsdWcgZm9yIGBpdGVtYC4KICAg
ICAgICAgIiIiCiAgICAgICAgIGlmIG5vdCBzZWxmLmlzX3ZhbGlkX3NsdWcoIG5ld19zbHVnICk6
CiAgICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLlJlcXVlc3RQYXJhbWV0ZXJJbnZhbGlkRXhj
ZXB0aW9uKCAiSW52YWxpZCBzbD0KdWciLCBzbHVnPTNEbmV3X3NsdWcgKQpAQCAtMjI4LDYgKzI1
NSw3IEBACiAgICAgICAgICMgU2V0dXAgc2x1ZyBiYXNlLgogICAgICAgICBpZiBjdXJfc2x1ZyBp
cyBOb25lIG9yIGN1cl9zbHVnID0zRD0zRCAiIjoKICAgICAgICAgICAgICMgSXRlbSBjYW4gaGF2
ZSBlaXRoZXIgYSBuYW1lIG9yIGEgdGl0bGUuCisjVE9ETzogdGhpcyBkZXBlbmRzIG9uIHRoZSBt
b2RlbCBoYXZpbmcgbmFtZSBvciB0aXRsZQogICAgICAgICAgICAgaWYgaGFzYXR0ciggaXRlbSwg
J25hbWUnICk6CiAgICAgICAgICAgICAgICAgaXRlbV9uYW1lID0zRCBpdGVtLm5hbWUKICAgICAg
ICAgICAgIGVsaWYgaGFzYXR0ciggaXRlbSwgJ3RpdGxlJyApOgpAQCAtMjgzLDYgKzMxMSwxNiBA
QAo9MjAKPTIwCiAjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRAorY2xhc3MgU2hhcmFibGVNb2RlbFNlcmlhbGl6ZXIoIGJh
c2UuTW9kZWxTZXJpYWxpemVyICk6CisgICAgcGFzcworCisgICAgIyB0aGUgb25seSBvbmVzIHRo
YXQgbmVlZHMgYW55IGZuczoKKyAgICAjICAgdXNlci91c2VyX2lkCisgICAgIyAgIHVzZXJfc2hh
cmVzPworICAgICMgICB1c2VybmFtZV9hbmRfc2x1Zz8KKworCisjID0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0K
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRAogY2xhc3Mg
U2hhcmFibGVNb2RlbERlc2VyaWFsaXplciggYmFzZS5Nb2RlbERlc2VyaWFsaXplciApOgo9MjAK
ICAgICBkZWYgZGVzZXJpYWxpemVfcHVibGlzaGVkKCBzZWxmLCB0cmFucywgaXRlbSwgdmFsICk6
CgpkaWZmIC1yIDRiZGU3MGM2NzdhOTJkZGE3MjEyZWNjNGNkOWVhOWM0ZDNlYzY5NTIgLXIgOGVi
NmQ4YjBiZjEwYWQxYWQ1YjY5Zjk9CmRhODdkOGQwMDkzYjk3MmYxIGxpYi9nYWxheHkvbWFuYWdl
cnMvdXNlcnMucHkKLS0tIGEvbGliL2dhbGF4eS9tYW5hZ2Vycy91c2Vycy5weQorKysgYi9saWIv
Z2FsYXh5L21hbmFnZXJzL3VzZXJzLnB5CkBAIC0xNjEsOSArMTYxLDYgQEAKICAgICAgICAgI1RP
RE86IGNhdGNoIE5vUmVzdWx0Rm91bmQKICAgICAgICAgcmV0dXJuIHRyYW5zLnNhX3Nlc3Npb24u
cXVlcnkoIG1vZGVsLkFQSUtleXMgKS5maWx0ZXJfYnkoIHVzZXI9M0R1PQpzZXIgKS5vbmUoKQo9
MjAKLSAgICAjVE9ETzogdGhlcmUgaXMgcXVpdGUgYSBiaXQgb2YgZnVuY3Rpb25hbGl0eSBhcm91
bmQgdGhlIHVzZXIgKGF1dGhlbnRpPQpjYXRpb24sIHF1b3RhcywgZ3JvdXBzL3JvbGVzKQotICAg
ICMgICBtb3N0IG9mIHdoaWNoIGl0IG1heSBiZSB1bm5lY2Nlc3NhcnkgdG8gaGF2ZSBoZXJlCi0K
ICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tPQotLS0tLSByb2xlcwogICAgIGRlZiBwcml2YXRlX3JvbGUoIHNl
bGYsIHRyYW5zLCB1c2VyICk6CiAgICAgICAgICIiIgpAQCAtMTcxLDYgKzE2OCw5IEBACiAgICAg
ICAgICNUT0RPOiBub3Qgc3VyZSB3ZSBuZWVkIHRvIGdvIHRocm91Z2ggc2VjIGFnZW50Li4uIGl0
J3MganVzdCB0aGUgZj0KaXJzdCByb2xlIG9mIHR5cGUgcHJpdmF0ZQogICAgICAgICByZXR1cm4g
dHJhbnMuYXBwLnNlY3VyaXR5X2FnZW50LmdldF9wcml2YXRlX3VzZXJfcm9sZSggdXNlciApCj0y
MAorICAgICNUT0RPOiB0aGVyZSBpcyBxdWl0ZSBhIGJpdCBvZiBmdW5jdGlvbmFsaXR5IGFyb3Vu
ZCB0aGUgdXNlciAoYXV0aGVudGk9CmNhdGlvbiwgcXVvdGFzLCBncm91cHMvcm9sZXMpCisgICAg
IyAgIG1vc3Qgb2Ygd2hpY2ggaXQgbWF5IGJlIHVubmVjY2Vzc2FyeSB0byBoYXZlIGhlcmUKKwo9
MjAKICMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0KPTNEPTNEPTNECiBjbGFzcyBVc2VyU2VyaWFsaXplciggYmFzZS5Nb2RlbFNlcmlhbGl6
ZXIgKToKCmRpZmYgLXIgNGJkZTcwYzY3N2E5MmRkYTcyMTJlY2M0Y2Q5ZWE5YzRkM2VjNjk1MiAt
ciA4ZWI2ZDhiMGJmMTBhZDFhZDViNjlmOT0KZGE4N2Q4ZDAwOTNiOTcyZjEgdGVzdC91bml0L21h
bmFnZXJzL3Rlc3RfRGF0YXNldE1hbmFnZXIucHkKLS0tIGEvdGVzdC91bml0L21hbmFnZXJzL3Rl
c3RfRGF0YXNldE1hbmFnZXIucHkKKysrIGIvdGVzdC91bml0L21hbmFnZXJzL3Rlc3RfRGF0YXNl
dE1hbmFnZXIucHkKQEAgLTk1LDYgKzk1LDMwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KCBleGNlcHRpb25zLkNvbmZpZ0RvZXNOb3RBbGxvd0V4Y2VwdGlvbiwgc2VsZi5kYT0KdGFzZXRf
bWdyLnB1cmdlLCBzZWxmLnRyYW5zLCBpdGVtMSApCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
IGl0ZW0xLnB1cmdlZCApCj0yMAorICAgICMjVE9ETzogSSdtIHVuY2xlYXIgYXMgdG8gaG93IHRo
ZXNlIHdvcmssIHNvIEknbSBraWNraW5nIHRoaXMgZG93biB0aGU9CiByb2FkIGEgYml0Li4uLgor
ICAgICNkZWYgdGVzdF9hY2Nlc3NfcGVybWlzc2lvbiggc2VsZiApOgorICAgICMgICAgb3duZXIg
PTNEIHNlbGYudXNlcl9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zLCAqKnVzZXIyX2RhdGEgKQorICAg
ICMgICAgZGF0YXNldCA9M0Qgc2VsZi5kYXRhc2V0X21nci5jcmVhdGUoIHNlbGYudHJhbnMgKQor
ICAgICMgICAgIyBnaXZpbmcgb25lIHVzZXIgYWNjZXNzIHBlcm1pc3Npb24gbWFrZXMgaXQgbm9u
LXB1YmxpYywgcmVtb3Zpbmc9CiBhY2Nlc3MgZm9yIGFueW9uZSBlbHNlCisgICAgIyAgICBzZWxm
LmRhdGFzZXRfbWdyLmdpdmVfYWNjZXNzX3Blcm1pc3Npb24oIHNlbGYudHJhbnMsIGRhdGFzZXQs
IG93bj0KZXIgKQorICAgICMKKyAgICAjICAgIHVzZXIzID0zRCBzZWxmLnVzZXJfbWdyLmNyZWF0
ZSggc2VsZi50cmFucywgKip1c2VyM19kYXRhICkKKyAgICAjICAgIHVzZXI0ID0zRCBzZWxmLnVz
ZXJfbWdyLmNyZWF0ZSggc2VsZi50cmFucywKKyAgICAjICAgICAgICBlbWFpbD0zRCd1c2VyNEB1
c2VyNC51c2VyNCcsIHVzZXJuYW1lPTNEJ3VzZXI0JywgcGFzc3dvcmQ9M0RkPQplZmF1bHRfcGFz
c3dvcmQgKQorICAgICMKKyAgICAjICAgIHNlbGYuYXNzZXJ0VHJ1ZSggc2VsZi5kYXRhc2V0X21n
ci5oYXNfYWNjZXNzX3Blcm1pc3Npb24oIHNlbGYudHJhPQpucywgZGF0YXNldCwgb3duZXIgKSAp
CisgICAgIyAgICBzZWxmLmFzc2VydEZhbHNlKCBzZWxmLmRhdGFzZXRfbWdyLmhhc19hY2Nlc3Nf
cGVybWlzc2lvbiggc2VsZi50cj0KYW5zLCBkYXRhc2V0LCB1c2VyMyApICkKKyAgICAjICAgIHNl
bGYuYXNzZXJ0RmFsc2UoIHNlbGYuZGF0YXNldF9tZ3IuaGFzX2FjY2Vzc19wZXJtaXNzaW9uKCBz
ZWxmLnRyPQphbnMsIGRhdGFzZXQsIHVzZXI0ICkgKQorICAgICMKKyAgICAjICAgICMgc2hvdWxk
IGJlIGFibGUgdG8gcHJvZ3Jlc3NpdmVseSBhZGQgbW9yZSByb2xlcyB3aXRob3V0IHJlbW92aW5n
PQogdGhlIHByZXZpb3VzCisgICAgIyAgICBzZWxmLmRhdGFzZXRfbWdyLmdpdmVfYWNjZXNzX3Bl
cm1pc3Npb24oIHNlbGYudHJhbnMsIGRhdGFzZXQsIHVzZT0KcjMgKQorICAgICMgICAgc2VsZi5h
c3NlcnRUcnVlKCBzZWxmLmRhdGFzZXRfbWdyLmhhc19hY2Nlc3NfcGVybWlzc2lvbiggc2VsZi50
cmE9Cm5zLCBkYXRhc2V0LCB1c2VyMyApICkKKyAgICAjICAgIHNlbGYuYXNzZXJ0VHJ1ZSggc2Vs
Zi5kYXRhc2V0X21nci5oYXNfYWNjZXNzX3Blcm1pc3Npb24oIHNlbGYudHJhPQpucywgZGF0YXNl
dCwgb3duZXIgKSApCisgICAgIyAgICBzZWxmLmFzc2VydEZhbHNlKCBzZWxmLmRhdGFzZXRfbWdy
Lmhhc19hY2Nlc3NfcGVybWlzc2lvbiggc2VsZi50cj0KYW5zLCBkYXRhc2V0LCB1c2VyNCApICkK
KyAgICAjCisgICAgIyAgICAjc2VsZi5hc3NlcnRUcnVlKCBzZWxmLmRhdGFzZXRfbWdyLmlzX2Fj
Y2Vzc2libGUoIHNlbGYudHJhbnMsIGRhdD0KYXNldCwgb3duZXIgKSApCisgICAgIyAgICAjc2Vs
Zi5hc3NlcnRGYWxzZSggc2VsZi5kYXRhc2V0X21nci5pc19hY2Nlc3NpYmxlKCBzZWxmLnRyYW5z
LCBkYT0KdGFzZXQsIG5vbl9vd25lciApICkKKwogICAgIGRlZiB0ZXN0X2FjY2Vzc2libGUoIHNl
bGYgKToKICAgICAgICAgb3duZXIgPTNEIHNlbGYudXNlcl9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5z
LCAqKnVzZXIyX2RhdGEgKQogICAgICAgICBub25fb3duZXIgPTNEIHNlbGYudXNlcl9tZ3IuY3Jl
YXRlKCBzZWxmLnRyYW5zLCAqKnVzZXIzX2RhdGEgKQpAQCAtMTA1LDExICsxMjksNiBAQAogICAg
ICAgICBmb3IgdXNlciBpbiBzZWxmLnVzZXJfbWdyLmxpc3QoIHNlbGYudHJhbnMgKToKICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSggc2VsZi5kYXRhc2V0X21nci5pc19hY2Nlc3NpYmxlKCBz
ZWxmLnRyYW5zLCBkPQphdGFzZXQsIHVzZXIgKSApCj0yMAotICAgICAgICAjVE9ETzogdGhpcyBp
cyAuLi4gbm90IHdvcmtpbmcuLi4KLSAgICAgICAgI3NlbGYuZGF0YXNldF9tZ3IuZ2l2ZV9hY2Nl
c3NfcGVybWlzc2lvbiggc2VsZi50cmFucywgZGF0YXNldCwgb3duPQplciApCi0gICAgICAgICNz
ZWxmLmFzc2VydFRydWUoIHNlbGYuZGF0YXNldF9tZ3IuaXNfYWNjZXNzaWJsZSggc2VsZi50cmFu
cywgZGF0YT0Kc2V0LCBvd25lciApICkKLSAgICAgICAgI3NlbGYuYXNzZXJ0RmFsc2UoIHNlbGYu
ZGF0YXNldF9tZ3IuaXNfYWNjZXNzaWJsZSggc2VsZi50cmFucywgZGF0PQphc2V0LCBub25fb3du
ZXIgKSApCi0KPTIwCiAjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRAogY2xhc3MgRGF0YXNldEFzc29jaWF0aW9uTWFuYWdl
clRlc3RDYXNlKCBCYXNlVGVzdENhc2UgKToKCmRpZmYgLXIgNGJkZTcwYzY3N2E5MmRkYTcyMTJl
Y2M0Y2Q5ZWE5YzRkM2VjNjk1MiAtciA4ZWI2ZDhiMGJmMTBhZDFhZDViNjlmOT0KZGE4N2Q4ZDAw
OTNiOTcyZjEgdGVzdC91bml0L21hbmFnZXJzL3Rlc3RfSERBTWFuYWdlci5weQotLS0gYS90ZXN0
L3VuaXQvbWFuYWdlcnMvdGVzdF9IREFNYW5hZ2VyLnB5CisrKyBiL3Rlc3QvdW5pdC9tYW5hZ2Vy
cy90ZXN0X0hEQU1hbmFnZXIucHkKQEAgLTM2LDYgKzM2LDMzIEBACiAgICAgICAgIHNlbGYuZGF0
YXNldF9tZ3IgPTNEIERhdGFzZXRNYW5hZ2VyKCBzZWxmLmFwcCApCiAgICAgICAgIHNlbGYuaGRh
X21nciA9M0QgSERBTWFuYWdlciggc2VsZi5hcHAgKQo9MjAKKyAgICBkZWYgdGVzdF9iYXNlKCBz
ZWxmICk6CisgICAgICAgIGhkYV9tb2RlbCA9M0QgbW9kZWwuSGlzdG9yeURhdGFzZXRBc3NvY2lh
dGlvbgorICAgICAgICBvd25lciA9M0Qgc2VsZi51c2VyX21nci5jcmVhdGUoIHNlbGYudHJhbnMs
ICoqdXNlcjJfZGF0YSApCisgICAgICAgIGhpc3RvcnkxID0zRCBzZWxmLmhpc3RvcnlfbWdyLmNy
ZWF0ZSggc2VsZi50cmFucywgbmFtZT0zRCdoaXN0b3J5MT0KJywgdXNlcj0zRG93bmVyICkKKyAg
ICAgICAgaGRhMSA9M0Qgc2VsZi5oZGFfbWdyLmNyZWF0ZSggc2VsZi50cmFucywgaGlzdG9yeT0z
RGhpc3RvcnkxLCBoaWQ9Cj0zRDEgKQorICAgICAgICBoZGEyID0zRCBzZWxmLmhkYV9tZ3IuY3Jl
YXRlKCBzZWxmLnRyYW5zLCBoaXN0b3J5PTNEaGlzdG9yeTEsIGhpZD0KPTNEMiApCisgICAgICAg
IGhkYTMgPTNEIHNlbGYuaGRhX21nci5jcmVhdGUoIHNlbGYudHJhbnMsIGhpc3Rvcnk9M0RoaXN0
b3J5MSwgaGlkPQo9M0QzICkKKworICAgICAgICBzZWxmLmxvZyggInNob3VsZCBiZSBhYmxlIHRv
IHF1ZXJ5IiApCisgICAgICAgIGhkYXMgPTNEIHNlbGYudHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSgg
aGRhX21vZGVsICkuYWxsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCggc2VsZi5oZGFfbWdy
Lmxpc3QoIHNlbGYudHJhbnMgKSwgaGRhcyApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNl
bGYuaGRhX21nci5vbmUoIHNlbGYudHJhbnMsIGZpbHRlcnM9M0QoIGhkYV9tbz0KZGVsLmlkID0z
RD0zRCBoZGExLmlkICkgKSwgaGRhMSApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYu
aGRhX21nci5ieV9pZCggc2VsZi50cmFucywgaGRhMS5pZCApLCBoZGExICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCggc2VsZi5oZGFfbWdyLmJ5X2lkcyggc2VsZi50cmFucywgWyBoZGEyLmlk
LCBoZGExPQouaWQgXSApLCBbIGhkYTIsIGhkYTEgXSApCisKKyAgICAgICAgc2VsZi5sb2coICJz
aG91bGQgYmUgYWJsZSB0byBsaW1pdCBhbmQgb2Zmc2V0IiApCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoIHNlbGYuaGRhX21nci5saXN0KCBzZWxmLnRyYW5zLCBsaW1pdD0zRDEgKSwgaGRhcz0K
WzA6MV0gKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCBzZWxmLmhkYV9tZ3IubGlzdCggc2Vs
Zi50cmFucywgb2Zmc2V0PTNEMSApLCBoZGE9CnNbMTpdICkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCggc2VsZi5oZGFfbWdyLmxpc3QoIHNlbGYudHJhbnMsIGxpbWl0PTNEMSwgb2Zmc2V0PQo9
M0QxICksIGhkYXNbMToyXSApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCggc2VsZi5oZGFf
bWdyLmxpc3QoIHNlbGYudHJhbnMsIGxpbWl0PTNEMCApLCBbXSApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoIHNlbGYuaGRhX21nci5saXN0KCBzZWxmLnRyYW5zLCBvZmZzZXQ9M0QzICksIFtd
ICkKKworICAgICAgICBzZWxmLmxvZyggInNob3VsZCBiZSBhYmxlIHRvIG9yZGVyIiApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYuaGRhX21nci5saXN0KCBzZWxmLnRyYW5zLCBvcmRl
cl9ieT0zRHNxbGFsYz0KaGVteS5kZXNjKCBoZGFfbW9kZWwuY3JlYXRlX3RpbWUgKSApLAorICAg
ICAgICAgICAgWyBoZGEzLCBoZGEyLCBoZGExIF0gKQorCiAgICAgZGVmIHRlc3RfY3JlYXRlKCBz
ZWxmICk6CiAgICAgICAgIG93bmVyID0zRCBzZWxmLnVzZXJfbWdyLmNyZWF0ZSggc2VsZi50cmFu
cywgKip1c2VyMl9kYXRhICkKICAgICAgICAgbm9uX293bmVyID0zRCBzZWxmLnVzZXJfbWdyLmNy
ZWF0ZSggc2VsZi50cmFucywgKip1c2VyM19kYXRhICkKQEAgLTg3LDMzICsxMTQsNiBAQAogICAg
ICMgICAgc2VsZi5sb2coICJzaG91bGQgYmUgYWJsZSB0byBjb3B5IGFuIEhEQSIgKQogICAgICMg
ICAgaGRhMiA9M0Qgc2VsZi5oZGFfbWdyLmNvcHlfbGRkYSggc2VsZi50cmFucywgaGlzdG9yeTEs
IGhkYTEgKQo9MjAKLSAgICBkZWYgdGVzdF9iYXNlKCBzZWxmICk6Ci0gICAgICAgIGhkYV9tb2Rl
bCA9M0QgbW9kZWwuSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbgotICAgICAgICBvd25lciA9M0Qg
c2VsZi51c2VyX21nci5jcmVhdGUoIHNlbGYudHJhbnMsICoqdXNlcjJfZGF0YSApCi0gICAgICAg
IGhpc3RvcnkxID0zRCBzZWxmLmhpc3RvcnlfbWdyLmNyZWF0ZSggc2VsZi50cmFucywgbmFtZT0z
RCdoaXN0b3J5MT0KJywgdXNlcj0zRG93bmVyICkKLSAgICAgICAgaGRhMSA9M0Qgc2VsZi5oZGFf
bWdyLmNyZWF0ZSggc2VsZi50cmFucywgaGlzdG9yeT0zRGhpc3RvcnkxLCBoaWQ9Cj0zRDEgKQot
ICAgICAgICBoZGEyID0zRCBzZWxmLmhkYV9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zLCBoaXN0b3J5
PTNEaGlzdG9yeTEsIGhpZD0KPTNEMiApCi0gICAgICAgIGhkYTMgPTNEIHNlbGYuaGRhX21nci5j
cmVhdGUoIHNlbGYudHJhbnMsIGhpc3Rvcnk9M0RoaXN0b3J5MSwgaGlkPQo9M0QzICkKLQotICAg
ICAgICBzZWxmLmxvZyggInNob3VsZCBiZSBhYmxlIHRvIHF1ZXJ5IiApCi0gICAgICAgIGhkYXMg
PTNEIHNlbGYudHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggaGRhX21vZGVsICkuYWxsKCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCggc2VsZi5oZGFfbWdyLmxpc3QoIHNlbGYudHJhbnMgKSwgaGRh
cyApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYuaGRhX21nci5vbmUoIHNlbGYudHJh
bnMsIGZpbHRlcnM9M0QoIGhkYV9tbz0KZGVsLmlkID0zRD0zRCBoZGExLmlkICkgKSwgaGRhMSAp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYuaGRhX21nci5ieV9pZCggc2VsZi50cmFu
cywgaGRhMS5pZCApLCBoZGExICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCggc2VsZi5oZGFf
bWdyLmJ5X2lkcyggc2VsZi50cmFucywgWyBoZGEyLmlkLCBoZGExPQouaWQgXSApLCBbIGhkYTIs
IGhkYTEgXSApCi0KLSAgICAgICAgc2VsZi5sb2coICJzaG91bGQgYmUgYWJsZSB0byBsaW1pdCBh
bmQgb2Zmc2V0IiApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYuaGRhX21nci5saXN0
KCBzZWxmLnRyYW5zLCBsaW1pdD0zRDEgKSwgaGRhcz0KWzA6MV0gKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCBzZWxmLmhkYV9tZ3IubGlzdCggc2VsZi50cmFucywgb2Zmc2V0PTNEMSApLCBo
ZGE9CnNbMTpdICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCggc2VsZi5oZGFfbWdyLmxpc3Qo
IHNlbGYudHJhbnMsIGxpbWl0PTNEMSwgb2Zmc2V0PQo9M0QxICksIGhkYXNbMToyXSApCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCggc2VsZi5oZGFfbWdyLmxpc3QoIHNlbGYudHJhbnMsIGxp
bWl0PTNEMCApLCBbXSApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYuaGRhX21nci5s
aXN0KCBzZWxmLnRyYW5zLCBvZmZzZXQ9M0QzICksIFtdICkKLQotICAgICAgICBzZWxmLmxvZygg
InNob3VsZCBiZSBhYmxlIHRvIG9yZGVyIiApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNl
bGYuaGRhX21nci5saXN0KCBzZWxmLnRyYW5zLCBvcmRlcl9ieT0zRHNxbGFsYz0KaGVteS5kZXNj
KCBoZGFfbW9kZWwuY3JlYXRlX3RpbWUgKSApLAotICAgICAgICAgICAgWyBoZGEzLCBoZGEyLCBo
ZGExIF0gKQotCiAgICAgZGVmIHRlc3RfZGVsZXRlKCBzZWxmICk6CiAgICAgICAgIG93bmVyID0z
RCBzZWxmLnVzZXJfbWdyLmNyZWF0ZSggc2VsZi50cmFucywgKip1c2VyMl9kYXRhICkKICAgICAg
ICAgaGlzdG9yeTEgPTNEIHNlbGYuaGlzdG9yeV9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zLCBuYW1l
PTNEJ2hpc3RvcnkxPQonLCB1c2VyPTNEb3duZXIgKQpAQCAtMTQyLDggKzE0Miw2IEBACj0yMAog
ICAgIGRlZiB0ZXN0X3B1cmdlX25vdF9hbGxvd2VkKCBzZWxmICk6CiAgICAgICAgIHNlbGYudHJh
bnMuYXBwLmNvbmZpZy5hbGxvd191c2VyX2RhdGFzZXRfcHVyZ2UgPTNEIEZhbHNlCi0gICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKCBleGNlcHRpb25zLkNvbmZpZ0RvZXNOb3RBbGxvd0V4Y2VwdGlv
biwKLSAgICAgICAgICAgIHNlbGYuaGRhX21nci5lcnJvcl91bmxlc3NfZGF0YXNldF9wdXJnZV9h
bGxvd2VkLCBzZWxmLnRyYW5zLCBOPQpvbmUgKQo9MjAKICAgICAgICAgb3duZXIgPTNEIHNlbGYu
dXNlcl9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zLCAqKnVzZXIyX2RhdGEgKQogICAgICAgICBoaXN0
b3J5MSA9M0Qgc2VsZi5oaXN0b3J5X21nci5jcmVhdGUoIHNlbGYudHJhbnMsIG5hbWU9M0QnaGlz
dG9yeTE9CicsIHVzZXI9M0Rvd25lciApCkBAIC0xNTUsMjcgKzE1MywzMSBAQAogICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyggZXhjZXB0aW9ucy5Db25maWdEb2VzTm90QWxsb3dFeGNlcHRpb24s
IHNlbGYuaGQ9CmFfbWdyLnB1cmdlLCBzZWxmLnRyYW5zLCBpdGVtMSApCiAgICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoIGl0ZW0xLnB1cmdlZCApCj0yMAotICAgICNkZWYgdGVzdF9vd25hYmxlKCBz
ZWxmICk6Ci0gICAgIyAgICBvd25lciA9M0Qgc2VsZi51c2VyX21nci5jcmVhdGUoIHNlbGYudHJh
bnMsICoqdXNlcjJfZGF0YSApCi0gICAgIyAgICBub25fb3duZXIgPTNEIHNlbGYudXNlcl9tZ3Iu
Y3JlYXRlKCBzZWxmLnRyYW5zLCAqKnVzZXIzX2RhdGEgKQotICAgICMKLSAgICAjICAgIGhpc3Rv
cnkxID0zRCBzZWxmLmhpc3RvcnlfbWdyLmNyZWF0ZSggc2VsZi50cmFucywgbmFtZT0zRCdoaXN0
b3J5PQoxJywgdXNlcj0zRG93bmVyICkKLSAgICAjICAgIGRhdGFzZXQxID0zRCBzZWxmLmRhdGFz
ZXRfbWdyLmNyZWF0ZSggc2VsZi50cmFucyApCi0gICAgIyAgICBpdGVtMSA9M0Qgc2VsZi5oZGFf
bWdyLmNyZWF0ZSggc2VsZi50cmFucywgaGlzdG9yeTEsIGRhdGFzZXQxICkKLSAgICAjCi0gICAg
IyAgICBzZWxmLmxvZyggInNob3VsZCBiZSBhYmxlIHRvIHBvbGwgd2hldGhlciBhIGdpdmVuIHVz
ZXIgb3ducyBhbiBpdD0KZW0iICkKLSAgICAjICAgIHNlbGYuYXNzZXJ0VHJ1ZSggIHNlbGYuaGRh
X21nci5pc19vd25lciggc2VsZi50cmFucywgaXRlbTEsIG93bmVyPQogKSApCi0gICAgIyAgICBz
ZWxmLmFzc2VydEZhbHNlKCBzZWxmLmhkYV9tZ3IuaXNfb3duZXIoIHNlbGYudHJhbnMsIGl0ZW0x
LCBub25fbz0Kd25lciApICkKLSAgICAjCi0gICAgIyAgICBzZWxmLmxvZyggInNob3VsZCByYWlz
ZSBhbiBlcnJvciB3aGVuIGNoZWNraW5nIG93bmVyc2hpcCB3aXRoIG5vbj0KLW93bmVyIiApCi0g
ICAgIyAgICBzZWxmLmFzc2VydFJhaXNlcyggZXhjZXB0aW9ucy5JdGVtT3duZXJzaGlwRXhjZXB0
aW9uLAotICAgICMgICAgICAgIHNlbGYuaGRhX21nci5jaGVja19vd25lcnNoaXAsIHNlbGYudHJh
bnMsIGl0ZW0xLCBub25fb3duZXIgKQotICAgICMKLSAgICAjICAgIHNlbGYubG9nKCAic2hvdWxk
IG5vdCByYWlzZSBhbiBlcnJvciB3aGVuIGNoZWNraW5nIG93bmVyc2hpcCB3aXRoPQogb3duZXIi
ICkKLSAgICAjICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYuaGRhX21nci5jaGVja19vd25lcnNo
aXAoIHNlbGYudHJhbnMsIGl0ZW0xPQosIG93bmVyICksIGl0ZW0xICkKLSAgICAjCi0gICAgIyAg
ICAjc2VsZi5sb2coICJzaG91bGQgbm90IHJhaXNlIGFuIGVycm9yIHdoZW4gY2hlY2tpbmcgb3du
ZXJzaGlwIHdpdD0KaCBhZG1pbiIgKQotICAgICMgICAgI3NlbGYuYXNzZXJ0RXF1YWwoIHNlbGYu
aGRhX21nci5jaGVja19vd25lcnNoaXAoIHNlbGYudHJhbnMsIGl0ZW09CjEsIHNlbGYuYWRtaW5f
dXNlciApLCBpdGVtMSApCisgICAgZGVmIHRlc3Rfb3duYWJsZSggc2VsZiApOgorICAgICAgICBv
d25lciA9M0Qgc2VsZi51c2VyX21nci5jcmVhdGUoIHNlbGYudHJhbnMsICoqdXNlcjJfZGF0YSAp
CisgICAgICAgIG5vbl9vd25lciA9M0Qgc2VsZi51c2VyX21nci5jcmVhdGUoIHNlbGYudHJhbnMs
ICoqdXNlcjNfZGF0YSApCisKKyAgICAgICAgaGlzdG9yeTEgPTNEIHNlbGYuaGlzdG9yeV9tZ3Iu
Y3JlYXRlKCBzZWxmLnRyYW5zLCBuYW1lPTNEJ2hpc3RvcnkxPQonLCB1c2VyPTNEb3duZXIgKQor
ICAgICAgICBkYXRhc2V0MSA9M0Qgc2VsZi5kYXRhc2V0X21nci5jcmVhdGUoIHNlbGYudHJhbnMg
KQorICAgICAgICBpdGVtMSA9M0Qgc2VsZi5oZGFfbWdyLmNyZWF0ZSggc2VsZi50cmFucywgaGlz
dG9yeTEsIGRhdGFzZXQxICkKKworICAgICAgICBzZWxmLmxvZyggInNob3VsZCBiZSBhYmxlIHRv
IHBvbGwgd2hldGhlciBhIGdpdmVuIHVzZXIgb3ducyBhbiBpdGU9Cm0iICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKCAgc2VsZi5oZGFfbWdyLmlzX293bmVyKCBzZWxmLnRyYW5zLCBpdGVtMSwg
b3duZXIgPQopICkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSggc2VsZi5oZGFfbWdyLmlzX293
bmVyKCBzZWxmLnRyYW5zLCBpdGVtMSwgbm9uX293PQpuZXIgKSApCisKKyAgICAgICAgc2VsZi5s
b2coICJzaG91bGQgcmFpc2UgYW4gZXJyb3Igd2hlbiBjaGVja2luZyBvd25lcnNoaXAgd2l0aCBu
b24tPQpvd25lciIgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyggZXhjZXB0aW9ucy5JdGVt
T3duZXJzaGlwRXhjZXB0aW9uLAorICAgICAgICAgICAgc2VsZi5oZGFfbWdyLmVycm9yX3VubGVz
c19vd25lciwgc2VsZi50cmFucywgaXRlbTEsIG5vbl9vd25lciApCisKKyAgICAgICAgc2VsZi5s
b2coICJzaG91bGQgcmFpc2UgYW4gZXJyb3Igd2hlbiBjaGVja2luZyBvd25lcnNoaXAgd2l0aCBh
bm9uPQp5bW91cyIgKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyggZXhjZXB0aW9ucy5JdGVt
T3duZXJzaGlwRXhjZXB0aW9uLAorICAgICAgICAgICAgc2VsZi5oZGFfbWdyLmVycm9yX3VubGVz
c19vd25lciwgc2VsZi50cmFucywgaXRlbTEsIE5vbmUgKQorCisgICAgICAgIHNlbGYubG9nKCAi
c2hvdWxkIG5vdCByYWlzZSBhbiBlcnJvciB3aGVuIGNoZWNraW5nIG93bmVyc2hpcCB3aXRoID0K
b3duZXIiICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCggc2VsZi5oZGFfbWdyLmVycm9yX3Vu
bGVzc19vd25lciggc2VsZi50cmFucywgaXRlPQptMSwgb3duZXIgKSwgaXRlbTEgKQorCisgICAg
ICAgIHNlbGYubG9nKCAic2hvdWxkIG5vdCByYWlzZSBhbiBlcnJvciB3aGVuIGNoZWNraW5nIG93
bmVyc2hpcCB3aXRoID0KYWRtaW4iICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCggc2VsZi5o
ZGFfbWdyLmVycm9yX3VubGVzc19vd25lciggc2VsZi50cmFucywgaXRlPQptMSwgc2VsZi5hZG1p
bl91c2VyICksIGl0ZW0xICkKPTIwCiAgICAgZGVmIHRlc3RfYWNjZXNzaWJsZSggc2VsZiApOgog
ICAgICAgICBvd25lciA9M0Qgc2VsZi51c2VyX21nci5jcmVhdGUoIHNlbGYudHJhbnMsICoqdXNl
cjJfZGF0YSApCkBAIC0xODksNiArMTkxLDI2IEBACiAgICAgICAgIGZvciB1c2VyIGluIHNlbGYu
dXNlcl9tZ3IubGlzdCggc2VsZi50cmFucyApOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KCBzZWxmLmhkYV9tZ3IuaXNfYWNjZXNzaWJsZSggc2VsZi50cmFucywgaXRlbTE9CiwgdXNlciAp
ICkKPTIwCisgICAgICAgICNUT0RPOiBzZXQgcGVybXMgb24gdW5kZXJseWluZyBkYXRhc2V0IGFu
ZCB0aGVuIHRlc3QgYWNjZXNzaWJsZQorCisgICAgZGVmIHRlc3RfYW5vbiggc2VsZiApOgorICAg
ICAgICBhbm9uX3VzZXIgPTNEIE5vbmUKKyAgICAgICAgc2VsZi50cmFucy5zZXRfdXNlciggYW5v
bl91c2VyICkKKworICAgICAgICBoaXN0b3J5MSA9M0Qgc2VsZi5oaXN0b3J5X21nci5jcmVhdGUo
IHNlbGYudHJhbnMsIG5hbWU9M0QnYW5vbl9oaXM9CnRvcnknLCB1c2VyPTNEYW5vbl91c2VyICkK
KyAgICAgICAgc2VsZi50cmFucy5zZXRfaGlzdG9yeSggaGlzdG9yeTEgKQorICAgICAgICBkYXRh
c2V0MSA9M0Qgc2VsZi5kYXRhc2V0X21nci5jcmVhdGUoIHNlbGYudHJhbnMgKQorICAgICAgICBp
dGVtMSA9M0Qgc2VsZi5oZGFfbWdyLmNyZWF0ZSggc2VsZi50cmFucywgaGlzdG9yeTEsIGRhdGFz
ZXQxICkKKworICAgICAgICBzZWxmLmxvZyggInNob3VsZCBub3QgcmFpc2UgYW4gZXJyb3Igd2hl
biBjaGVja2luZyBvd25lcnNoaXAvYWNjZXM9CnMgb24gYW5vbnltb3VzJyBvd24gZGF0YXNldCIg
KQorICAgICAgICBzZWxmLmFzc2VydFRydWUoIHNlbGYuaGRhX21nci5pc19hY2Nlc3NpYmxlKCBz
ZWxmLnRyYW5zLCBpdGVtMSwgYW49Cm9uX3VzZXIgKSApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoIHNlbGYuaGRhX21nci5lcnJvcl91bmxlc3Nfb3duZXIoIHNlbGYudHJhbnMsIGl0ZT0KbTEs
IGFub25fdXNlciApLCBpdGVtMSApCisKKyAgICAgICAgc2VsZi5sb2coICJzaG91bGQgcmFpc2Ug
YW4gZXJyb3Igd2hlbiBjaGVja2luZyBvd25lcnNoaXAgb24gYW5vbnltPQpvdXMnIGRhdGFzZXQg
d2l0aCBvdGhlciB1c2VyIiApCisgICAgICAgIG5vbl9vd25lciA9M0Qgc2VsZi51c2VyX21nci5j
cmVhdGUoIHNlbGYudHJhbnMsICoqdXNlcjNfZGF0YSApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKCBleGNlcHRpb25zLkl0ZW1Pd25lcnNoaXBFeGNlcHRpb24sCisgICAgICAgICAgICBzZWxm
LmhkYV9tZ3IuZXJyb3JfdW5sZXNzX293bmVyLCBzZWxmLnRyYW5zLCBpdGVtMSwgbm9uX293bmVy
ICkKKwo9MjAKICMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0KPTNEPTNEPTNECiBpZiBfX25hbWVfXyA9M0Q9M0QgJ19fbWFpbl9fJzoKCgpo
dHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvMDk0MjA1
YjQ1MWFhLwpDaGFuZ2VzZXQ6ICAgMDk0MjA1YjQ1MWFhClVzZXI6ICAgICAgICBjYXJsZmViZXJo
YXJkCkRhdGU6ICAgICAgICAyMDE1LTAxLTA3IDE5OjU4OjQ1KzAwOjAwClN1bW1hcnk6ICAgICBt
YW51YWwgc3luYwpBZmZlY3RlZCAjOiAgOCBmaWxlcwoKZGlmZiAtciA4ZWI2ZDhiMGJmMTBhZDFh
ZDViNjlmOWRhODdkOGQwMDkzYjk3MmYxIC1yIDA5NDIwNWI0NTFhYWNlZjc3N2MwYWYyPQowMDU0
MmE2YzgxZWIzZWYwYyBsaWIvZ2FsYXh5L2FwcC5weQotLS0gYS9saWIvZ2FsYXh5L2FwcC5weQor
KysgYi9saWIvZ2FsYXh5L2FwcC5weQpAQCAtNyw3ICs3LDcgQEAKIGltcG9ydCBnYWxheHkuc2Vj
dXJpdHkKIGZyb20gZ2FsYXh5Lm1hbmFnZXJzLmNvbGxlY3Rpb25zIGltcG9ydCBEYXRhc2V0Q29s
bGVjdGlvbk1hbmFnZXIKIGltcG9ydCBnYWxheHkucXVvdGEKLWZyb20gZ2FsYXh5LnRhZ3MudGFn
X2hhbmRsZXIgaW1wb3J0IEdhbGF4eVRhZ0hhbmRsZXIKK2Zyb20gZ2FsYXh5Lm1hbmFnZXJzLnRh
Z3MgaW1wb3J0IEdhbGF4eVRhZ01hbmFnZXIKIGZyb20gZ2FsYXh5LnZpc3VhbGl6YXRpb24uZ2Vu
b21lcyBpbXBvcnQgR2Vub21lcwogZnJvbSBnYWxheHkudmlzdWFsaXphdGlvbi5kYXRhX3Byb3Zp
ZGVycy5yZWdpc3RyeSBpbXBvcnQgRGF0YVByb3ZpZGVyUmVnaXM9CnRyeQogZnJvbSBnYWxheHku
dmlzdWFsaXphdGlvbi5yZWdpc3RyeSBpbXBvcnQgVmlzdWFsaXphdGlvbnNSZWdpc3RyeQpAQCAt
NTgsNyArNTgsNyBAQAogICAgICAgICAjIFNlY3VyaXR5IGhlbHBlcgogICAgICAgICBzZWxmLl9j
b25maWd1cmVfc2VjdXJpdHkoKQogICAgICAgICAjIFRhZyBoYW5kbGVyCi0gICAgICAgIHNlbGYu
dGFnX2hhbmRsZXIgPTNEIEdhbGF4eVRhZ0hhbmRsZXIoKQorICAgICAgICBzZWxmLnRhZ19oYW5k
bGVyID0zRCBHYWxheHlUYWdNYW5hZ2VyKCBzZWxmICkKICAgICAgICAgIyBEYXRhc2V0IENvbGxl
Y3Rpb24gUGx1Z2lucwogICAgICAgICBzZWxmLmRhdGFzZXRfY29sbGVjdGlvbnNfc2VydmljZSA9
M0QgRGF0YXNldENvbGxlY3Rpb25NYW5hZ2VyKHNlbGYpCj0yMAoKZGlmZiAtciA4ZWI2ZDhiMGJm
MTBhZDFhZDViNjlmOWRhODdkOGQwMDkzYjk3MmYxIC1yIDA5NDIwNWI0NTFhYWNlZjc3N2MwYWYy
PQowMDU0MmE2YzgxZWIzZWYwYyBsaWIvZ2FsYXh5L2pvYnMvYWN0aW9ucy9wb3N0LnB5Ci0tLSBh
L2xpYi9nYWxheHkvam9icy9hY3Rpb25zL3Bvc3QucHkKKysrIGIvbGliL2dhbGF4eS9qb2JzL2Fj
dGlvbnMvcG9zdC5weQpAQCAtMSw1ICsxLDYgQEAKICIiIgotQWN0aW9ucyB0byBiZSBydW4gYXQg
am9iIGNvbXBsZXRpb24uICBDdXJyZW50bHkgb25seSB1c2VkIGluIHdvcmtmbG93cy4KK0FjdGlv
bnMgdG8gYmUgcnVuIGF0IGpvYiBjb21wbGV0aW9uIChvciBvdXRwdXQgaGRhIGNyZWF0aW9uLCBh
cyBpbiB0aGUgY2FzPQplIG9mCitpbW1lZGlhdGVfYWN0aW9ucyBsaXN0ZWQgYmVsb3cuICBDdXJy
ZW50bHkgb25seSB1c2VkIGluIHdvcmtmbG93cy4KICIiIgo9MjAKIGltcG9ydCBkYXRldGltZQpA
QCAtNDIwLDYgKzQyMSw0MiBAQAogICAgICAgICByZXR1cm4gIkRlbGV0ZSBwYXJlbnQgZGF0YXNl
dHMgb2YgdGhpcyBzdGVwIGNyZWF0ZWQgaW4gdGhpcyB3b3JrZmw9Cm93IHRoYXQgYXJlbid0IGZs
YWdnZWQgYXMgb3V0cHV0cy4iCj0yMAo9MjAKK2NsYXNzIFRhZ0RhdGFzZXRBY3Rpb24oRGVmYXVs
dEpvYkFjdGlvbik6CisgICAgbmFtZSA9M0QgIlRhZ0RhdGFzZXRBY3Rpb24iCisgICAgdmVyYm9z
ZV9uYW1lID0zRCAiQWRkIHRhZyB0byBkYXRhc2V0IgorCisgICAgQGNsYXNzbWV0aG9kCisgICAg
ZGVmIGV4ZWN1dGUoY2xzLCBhcHAsIHNhX3Nlc3Npb24sIGFjdGlvbiwgam9iLCByZXBsYWNlbWVu
dF9kaWN0KToKKyAgICAgICAgaWYgYWN0aW9uLmFjdGlvbl9hcmd1bWVudHM6CisgICAgICAgICAg
ICB0YWdzID0zRCBbdC5zdHJpcCgpIGZvciB0IGluIGFjdGlvbi5hY3Rpb25fYXJndW1lbnRzLmdl
dCgndGFncz0KJywgJycpLnNwbGl0KCcsJyldCisgICAgICAgICAgICBpZiB0YWdzOgorICAgICAg
ICAgICAgICAgIGZvciBkYXRhc2V0X2Fzc29jIGluIGpvYi5vdXRwdXRfZGF0YXNldHM6CisgICAg
ICAgICAgICAgICAgICAgIGlmIGFjdGlvbi5vdXRwdXRfbmFtZSA9M0Q9M0QgJycgb3IgZGF0YXNl
dF9hc3NvYy5uYW1lID0KPTNEPTNEIGFjdGlvbi5vdXRwdXRfbmFtZToKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFwcC50YWdfaGFuZGxlci5zZXRfdGFnc19mcm9tX2xpc3QoIGpvYi51c2VyLCBk
YXRhPQpzZXRfYXNzb2MuZGF0YXNldCwgdGFncykKKyAgICAgICAgICAgIHNhX3Nlc3Npb24uZmx1
c2goKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGdldF9jb25maWdfZm9ybShjbHMsIHRy
YW5zKToKKyAgICAgICAgZm9ybSA9M0QgIiIiCisgICAgICAgICAgICBpZiAocGphLmFjdGlvbl9h
cmd1bWVudHMgJiYgcGphLmFjdGlvbl9hcmd1bWVudHMudGFncyl7CisgICAgICAgICAgICAgICAg
cF9zdHIgKz0zRCAiPGxhYmVsIGZvcj0zRCdwamFfXyIrcGphLm91dHB1dF9uYW1lKyJfX1RhZ0Rh
dD0KYXNldEFjdGlvbl9fdGFncyc+VGFnczo8L2xhYmVsPlwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgPGlucHV0IHR5cGU9M0QndGV4dCcgbmFtZT0zRCdwamFfXyIrcGphLm91dHB1dF9uPQph
bWUrIl9fVGFnRGF0YXNldEFjdGlvbl9fdGFncycgdmFsdWU9M0RcXCIiICsgcGphLmFjdGlvbl9h
cmd1bWVudHMudGFncy5yZXA9CmxhY2UoLyIvZywgIiZxdW90OyIpICsgIlxcIi8+IjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGVsc2V7CisgICAgICAgICAgICAgICAgcF9zdHIgKz0zRCAi
PGxhYmVsIGZvcj0zRCdwamFfXyIrcGphLm91dHB1dF9uYW1lKyJfX1RhZ0RhdD0KYXNldEFjdGlv
bl9fdGFncyc+VGFnczo8L2xhYmVsPlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0
IHR5cGU9M0QndGV4dCcgbmFtZT0zRCdwamFfXyIrcGphLm91dHB1dF9uPQphbWUrIl9fVGFnRGF0
YXNldEFjdGlvbl9fdGFncycgdmFsdWU9M0QnJy8+IjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICIiIgorICAgICAgICByZXR1cm4gZ2V0X2Zvcm1fdGVtcGxhdGUoY2xzLm5hbWUsIGNscy52
ZXJib3NlX25hbWUsIGZvcm0sICJUaGlzIGE9CmN0aW9uIHdpbGwgc2V0IHRhZ3MgZm9yIHRoZSBk
YXRhc2V0LiIpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZ2V0X3Nob3J0X3N0cihjbHMs
IHBqYSk6CisgICAgICAgIGlmIHBqYS5hY3Rpb25fYXJndW1lbnRzIGFuZCBwamEuYWN0aW9uX2Fy
Z3VtZW50cy5nZXQoJ3RhZ3MnLCAnJyk6CisgICAgICAgICAgICByZXR1cm4gIkFkZCB0YWcocykg
JyVzJyB0byAnJXMnLiIgJSAocGphLmFjdGlvbl9hcmd1bWVudHNbJ3RhZz0KcyddLCBwamEub3V0
cHV0X25hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gIlRhZyBhZGRpdGlv
biBhY3Rpb24gdXNlZCB3aXRob3V0IGEgdGFnIHNwZWNpZmllZC4gIE5vID0KdGFnIHdpbGwgYmUg
YWRkZWQuIgorCisKIGNsYXNzIEFjdGlvbkJveChvYmplY3QpOgo9MjAKICAgICBhY3Rpb25zID0z
RCB7ICJSZW5hbWVEYXRhc2V0QWN0aW9uIjogUmVuYW1lRGF0YXNldEFjdGlvbiwKQEAgLTQyOCwx
MSArNDY1LDEzIEBACiAgICAgICAgICAgICAgICAgIkNvbHVtblNldEFjdGlvbiI6IENvbHVtblNl
dEFjdGlvbiwKICAgICAgICAgICAgICAgICAiRW1haWxBY3Rpb24iOiBFbWFpbEFjdGlvbiwKICAg
ICAgICAgICAgICAgICAiRGVsZXRlSW50ZXJtZWRpYXRlc0FjdGlvbiI6IERlbGV0ZUludGVybWVk
aWF0ZXNBY3Rpb24sCisgICAgICAgICAgICAgICAgIlRhZ0RhdGFzZXRBY3Rpb24iOiBUYWdEYXRh
c2V0QWN0aW9uLAogICAgICAgICAgICAgICAgIH0KICAgICBwdWJsaWNfYWN0aW9ucyA9M0QgWydS
ZW5hbWVEYXRhc2V0QWN0aW9uJywgJ0NoYW5nZURhdGF0eXBlQWN0aW9uJywKICAgICAgICAgICAg
ICAgICAgICAgICAnQ29sdW1uU2V0QWN0aW9uJywgJ0VtYWlsQWN0aW9uJywKLSAgICAgICAgICAg
ICAgICAgICAgICAnRGVsZXRlSW50ZXJtZWRpYXRlc0FjdGlvbiddCi0gICAgaW1tZWRpYXRlX2Fj
dGlvbnMgPTNEIFsnQ2hhbmdlRGF0YXR5cGVBY3Rpb24nLCAnUmVuYW1lRGF0YXNldEFjdGlvbidd
CisgICAgICAgICAgICAgICAgICAgICAgJ0RlbGV0ZUludGVybWVkaWF0ZXNBY3Rpb24nLCAnVGFn
RGF0YXNldEFjdGlvbiddCisgICAgaW1tZWRpYXRlX2FjdGlvbnMgPTNEIFsnQ2hhbmdlRGF0YXR5
cGVBY3Rpb24nLCAnUmVuYW1lRGF0YXNldEFjdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJ1RhZ0RhdGFzZXRBY3Rpb24nXQo9MjAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZ2V0
X3Nob3J0X3N0cihjbHMsIGFjdGlvbik6CgpkaWZmIC1yIDhlYjZkOGIwYmYxMGFkMWFkNWI2OWY5
ZGE4N2Q4ZDAwOTNiOTcyZjEgLXIgMDk0MjA1YjQ1MWFhY2VmNzc3YzBhZjI9CjAwNTQyYTZjODFl
YjNlZjBjIGxpYi9nYWxheHkvbWFuYWdlcnMvY29sbGVjdGlvbnMucHkKLS0tIGEvbGliL2dhbGF4
eS9tYW5hZ2Vycy9jb2xsZWN0aW9ucy5weQorKysgYi9saWIvZ2FsYXh5L21hbmFnZXJzL2NvbGxl
Y3Rpb25zLnB5CkBAIC0zNSw2ICszNSw3IEBACiAgICAgICAgIHNlbGYuY29sbGVjdGlvbl90eXBl
X2Rlc2NyaXB0aW9ucyA9M0QgQ29sbGVjdGlvblR5cGVEZXNjcmlwdGlvbkZhYz0KdG9yeSggc2Vs
Zi50eXBlX3JlZ2lzdHJ5ICkKICAgICAgICAgc2VsZi5tb2RlbCA9M0QgYXBwLm1vZGVsCiAgICAg
ICAgIHNlbGYuc2VjdXJpdHkgPTNEIGFwcC5zZWN1cml0eQorCiAgICAgICAgIHNlbGYuaGRhX21h
bmFnZXIgPTNEIGhkYXMuSERBTWFuYWdlciggYXBwICkKICAgICAgICAgc2VsZi5oaXN0b3J5X21h
bmFnZXIgPTNEIGhpc3Rvcmllcy5IaXN0b3J5TWFuYWdlciggYXBwICkKICAgICAgICAgc2VsZi50
YWdfbWFuYWdlciA9M0QgdGFncy5UYWdzTWFuYWdlciggYXBwICkKQEAgLTE2NCw3ICsxNjUsNyBA
QAogICAgICAgICAgICAgZGF0YXNldF9jb2xsZWN0aW9uX2luc3RhbmNlLmFkZF9pdGVtX2Fubm90
YXRpb24oIHRyYW5zLnNhX3Nlc3M9CmlvbiwgdHJhbnMuZ2V0X3VzZXIoKSwgZGF0YXNldF9jb2xs
ZWN0aW9uX2luc3RhbmNlLCBuZXdfZGF0YVsgJ2Fubm90YXRpb24nID0KXSApCiAgICAgICAgICAg
ICBjaGFuZ2VkWyAnYW5ub3RhdGlvbicgXSA9M0QgbmV3X2RhdGFbICdhbm5vdGF0aW9uJyBdCiAg
ICAgICAgIGlmICd0YWdzJyBpbiBuZXdfZGF0YS5rZXlzKCkgYW5kIHRyYW5zLmdldF91c2VyKCk6
Ci0gICAgICAgICAgICBzZWxmLnRhZ19tYW5hZ2VyLnNldF90YWdzX2Zyb21fbGlzdCggdHJhbnMs
IGRhdGFzZXRfY29sbGVjdGlvbj0KX2luc3RhbmNlLCBuZXdfZGF0YVsgJ3RhZ3MnIF0sIHVzZXI9
M0R0cmFucy51c2VyICkKKyAgICAgICAgICAgIHNlbGYudGFnX21hbmFnZXIuc2V0X3RhZ3NfZnJv
bV9saXN0KCB0cmFucy5nZXRfdXNlcigpLCBkYXRhc2V0PQpfY29sbGVjdGlvbl9pbnN0YW5jZSwg
bmV3X2RhdGFbICd0YWdzJyBdICkKPTIwCiAgICAgICAgIGlmIGNoYW5nZWQua2V5cygpOgogICAg
ICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCgpkaWZmIC1yIDhlYjZkOGIwYmYxMGFk
MWFkNWI2OWY5ZGE4N2Q4ZDAwOTNiOTcyZjEgLXIgMDk0MjA1YjQ1MWFhY2VmNzc3YzBhZjI9CjAw
NTQyYTZjODFlYjNlZjBjIGxpYi9nYWxheHkvbWFuYWdlcnMvdGFncy5weQotLS0gYS9saWIvZ2Fs
YXh5L21hbmFnZXJzL3RhZ3MucHkKKysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vycy90YWdzLnB5CkBA
IC0xLDIxICsxLDMxNyBAQAotIiIiCi0iIiIKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKPTIw
Ci1jbGFzcyBUYWdzTWFuYWdlciggb2JqZWN0ICk6Ci0gICAgIiIiIE1hbmFnZXMgQ1JVRCBvcGVy
YXRpb25zIHJlbGF0ZWQgdG8gdGFnZ2luZyBvYmplY3RzLgorZnJvbSBzcWxhbGNoZW15LnNxbCBp
bXBvcnQgc2VsZWN0Citmcm9tIHNxbGFsY2hlbXkuc3FsLmV4cHJlc3Npb24gaW1wb3J0IGZ1bmMK
KworbG9nID0zRCBsb2dnaW5nLmdldExvZ2dlciggX19uYW1lX18gKQorCisKKyMgSXRlbS1zcGVj
aWZpYyBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gcGVyZm9ybSB0YWdnaW5nLgorY2xhc3MgSXRlbVRh
Z0Fzc29jSW5mbyggb2JqZWN0ICk6CisgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBpdGVtX2NsYXNz
LCB0YWdfYXNzb2NfY2xhc3MsIGl0ZW1faWRfY29sICk6CisgICAgICAgIHNlbGYuaXRlbV9jbGFz
cyA9M0QgaXRlbV9jbGFzcworICAgICAgICBzZWxmLnRhZ19hc3NvY19jbGFzcyA9M0QgdGFnX2Fz
c29jX2NsYXNzCisgICAgICAgIHNlbGYuaXRlbV9pZF9jb2wgPTNEIGl0ZW1faWRfY29sCisKKwor
Y2xhc3MgVGFnTWFuYWdlciggb2JqZWN0ICk6CisgICAgIiIiCisgICAgTWFuYWdlcyBDUlVEIG9w
ZXJhdGlvbnMgcmVsYXRlZCB0byB0YWdnaW5nIG9iamVjdHMuCiAgICAgIiIiCj0yMAogICAgIGRl
ZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CiAgICAgICAgIHNlbGYuYXBwID0zRCBhcHAKLSAgICAg
ICAgc2VsZi50YWdfaGFuZGxlciA9M0QgYXBwLnRhZ19oYW5kbGVyCisgICAgICAgICMgTWluaW11
bSB0YWcgbGVuZ3RoLgorICAgICAgICBzZWxmLm1pbl90YWdfbGVuID0zRCAyCisgICAgICAgICMg
TWF4aW11bSB0YWcgbGVuZ3RoLgorICAgICAgICBzZWxmLm1heF90YWdfbGVuID0zRCAyNTUKKyAg
ICAgICAgIyBUYWcgc2VwYXJhdG9yLgorICAgICAgICBzZWxmLnRhZ19zZXBhcmF0b3JzID0zRCAn
LDsnCisgICAgICAgICMgSGllcmFyY2h5IHNlcGFyYXRvci4KKyAgICAgICAgc2VsZi5oaWVyYXJj
aHlfc2VwYXJhdG9yID0zRCAnLicKKyAgICAgICAgIyBLZXktdmFsdWUgc2VwYXJhdG9yLgorICAg
ICAgICBzZWxmLmtleV92YWx1ZV9zZXBhcmF0b3JzID0zRCAiPTNEOiIKKyAgICAgICAgIyBJbml0
aWFsaXplIHdpdGgga25vd24gY2xhc3NlcyAtIGFkZCB0byB0aGlzIGluIHN1YmNsYXNzZXMuCisg
ICAgICAgIHNlbGYuaXRlbV90YWdfYXNzb2NfaW5mbyA9M0Qge30KPTIwCi0gICAgZGVmIHNldF90
YWdzX2Zyb21fbGlzdCggc2VsZiwgdHJhbnMsIGl0ZW0sIG5ld190YWdzX2xpc3QsIHVzZXI9M0RO
b25lID0KKToKLSAgICAgICAgI3ByZWNvbmRpdGlvbjogaXRlbSBpcyBhbHJlYWR5IHNlY3VyaXR5
IGNoZWNrZWQgYWdhaW5zdCB1c2VyCi0gICAgICAgICNwcmVjb25kaXRpb246IGluY29taW5nIHRh
Z3MgaXMgYSBsaXN0IG9mIHNhbml0aXplZC9mb3JtYXR0ZWQgc3RyaT0KbmdzCi0gICAgICAgIHVz
ZXIgPTNEIHVzZXIgb3IgdHJhbnMudXNlcgorICAgIGRlZiBzZXRfdGFnc19mcm9tX2xpc3QoIHNl
bGYsIHVzZXIsIGl0ZW0sIG5ld190YWdzX2xpc3QgKToKKyAgICAgICAgIyBwcmVjb25kaXRpb246
IGl0ZW0gaXMgYWxyZWFkeSBzZWN1cml0eSBjaGVja2VkIGFnYWluc3QgdXNlcgorICAgICAgICAj
IHByZWNvbmRpdGlvbjogaW5jb21pbmcgdGFncyBpcyBhIGxpc3Qgb2Ygc2FuaXRpemVkL2Zvcm1h
dHRlZCBzdHI9CmluZ3MKPTIwCi0gICAgICAgIHNlbGYudGFnX2hhbmRsZXIuZGVsZXRlX2l0ZW1f
dGFncyggdHJhbnMsIHVzZXIsIGl0ZW0gKQorICAgICAgICBzZWxmLmRlbGV0ZV9pdGVtX3RhZ3Mo
IHVzZXIsIGl0ZW0gKQogICAgICAgICBuZXdfdGFnc19zdHIgPTNEICcsJy5qb2luKCBuZXdfdGFn
c19saXN0ICkKLSAgICAgICAgc2VsZi50YWdfaGFuZGxlci5hcHBseV9pdGVtX3RhZ3MoIHRyYW5z
LCB1c2VyLCBpdGVtLCB1bmljb2RlKCBuZXdfPQp0YWdzX3N0ci5lbmNvZGUoICd1dGYtOCcgKSwg
J3V0Zi04JyApICkKLSAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCisgICAgICAgIHNl
bGYuYXBwbHlfaXRlbV90YWdzKCB1c2VyLCBpdGVtLCB1bmljb2RlKCBuZXdfdGFnc19zdHIuZW5j
b2RlKCAndT0KdGYtOCcgKSwgJ3V0Zi04JyApICkKKyAgICAgICAgc2VsZi5hcHAubW9kZWwuY29u
dGV4dC5mbHVzaCgpCiAgICAgICAgIHJldHVybiBpdGVtLnRhZ3MKKworICAgIGRlZiBnZXRfdGFn
X2Fzc29jX2NsYXNzKCBzZWxmLCBpdGVtX2NsYXNzICk6CisgICAgICAgICIiIlJldHVybnMgdGFn
IGFzc29jaWF0aW9uIGNsYXNzIGZvciBpdGVtIGNsYXNzLiIiIgorICAgICAgICByZXR1cm4gc2Vs
Zi5pdGVtX3RhZ19hc3NvY19pbmZvW2l0ZW1fY2xhc3MuX19uYW1lX19dLnRhZ19hc3NvY19jbGE9
CnNzCisKKyAgICBkZWYgZ2V0X2lkX2NvbF9pbl9pdGVtX3RhZ19hc3NvY190YWJsZSggc2VsZiwg
aXRlbV9jbGFzcyApOgorICAgICAgICAiIiJSZXR1cm5zIGl0ZW0gaWQgY29sdW1uIGluIGNsYXNz
JyBpdGVtLXRhZyBhc3NvY2lhdGlvbiB0YWJsZS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuaXRl
bV90YWdfYXNzb2NfaW5mb1tpdGVtX2NsYXNzLl9fbmFtZV9fXS5pdGVtX2lkX2NvbAorCisgICAg
ZGVmIGdldF9jb21tdW5pdHlfdGFncyggc2VsZiwgaXRlbT0zRE5vbmUsIGxpbWl0PTNETm9uZSAp
OgorICAgICAgICAiIiJSZXR1cm5zIGNvbW11bml0eSB0YWdzIGZvciBhbiBpdGVtLiIiIgorICAg
ICAgICAjIEdldCBpdGVtLXRhZyBhc3NvY2lhdGlvbiBjbGFzcy4KKyAgICAgICAgaXRlbV9jbGFz
cyA9M0QgaXRlbS5fX2NsYXNzX18KKyAgICAgICAgaXRlbV90YWdfYXNzb2NfY2xhc3MgPTNEIHNl
bGYuZ2V0X3RhZ19hc3NvY19jbGFzcyggaXRlbV9jbGFzcyApCisgICAgICAgIGlmIG5vdCBpdGVt
X3RhZ19hc3NvY19jbGFzczoKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICAjIEJ1aWxk
IHNlbGVjdCBzdGF0ZW1lbnQuCisgICAgICAgIGNvbHNfdG9fc2VsZWN0ID0zRCBbIGl0ZW1fdGFn
X2Fzc29jX2NsYXNzLnRhYmxlLmMudGFnX2lkLCBmdW5jLmNvdT0KbnQoICcqJyApIF0KKyAgICAg
ICAgZnJvbV9vYmogPTNEIGl0ZW1fdGFnX2Fzc29jX2NsYXNzLnRhYmxlLmpvaW4oIGl0ZW1fY2xh
c3MudGFibGUgKS5qPQpvaW4oIHNlbGYuYXBwLm1vZGVsLlRhZy50YWJsZSApCisgICAgICAgIHdo
ZXJlX2NsYXVzZSA9M0QgKCBzZWxmLmdldF9pZF9jb2xfaW5faXRlbV90YWdfYXNzb2NfdGFibGUo
IGl0ZW1fYz0KbGFzcyApID0zRD0zRCBpdGVtLmlkICkKKyAgICAgICAgb3JkZXJfYnkgPTNEIFsg
ZnVuYy5jb3VudCggIioiICkuZGVzYygpIF0KKyAgICAgICAgZ3JvdXBfYnkgPTNEIGl0ZW1fdGFn
X2Fzc29jX2NsYXNzLnRhYmxlLmMudGFnX2lkCisgICAgICAgICMgRG8gcXVlcnkgYW5kIGdldCBy
ZXN1bHQgc2V0LgorICAgICAgICBxdWVyeSA9M0Qgc2VsZWN0KCBjb2x1bW5zPTNEY29sc190b19z
ZWxlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX29iaj0zRGZyb21fb2JqLAorICAg
ICAgICAgICAgICAgICAgICAgICAgd2hlcmVjbGF1c2U9M0R3aGVyZV9jbGF1c2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICBncm91cF9ieT0zRGdyb3VwX2J5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgb3JkZXJfYnk9M0RvcmRlcl9ieSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0
PTNEbGltaXQgKQorICAgICAgICByZXN1bHRfc2V0ID0zRCBzZWxmLmFwcC5tb2RlbC5jb250ZXh0
LmV4ZWN1dGUoIHF1ZXJ5ICkKKyAgICAgICAgIyBSZXR1cm4gY29tbXVuaXR5IHRhZ3MuCisgICAg
ICAgIGNvbW11bml0eV90YWdzID0zRCBbXQorICAgICAgICBmb3Igcm93IGluIHJlc3VsdF9zZXQ6
CisgICAgICAgICAgICB0YWdfaWQgPTNEIHJvd1swXQorICAgICAgICAgICAgY29tbXVuaXR5X3Rh
Z3MuYXBwZW5kKCBzZWxmLmdldF90YWdfYnlfaWQoIHRhZ19pZCApICkKKyAgICAgICAgcmV0dXJu
IGNvbW11bml0eV90YWdzCisKKyAgICBkZWYgZ2V0X3Rvb2xfdGFncyggc2VsZiApOgorICAgICAg
ICByZXN1bHRfc2V0ID0zRCBzZWxmLmFwcC5tb2RlbC5jb250ZXh0LmV4ZWN1dGUoIHNlbGVjdCgg
Y29sdW1ucz0zRFs9CiBzZWxmLmFwcC5tb2RlbC5Ub29sVGFnQXNzb2NpYXRpb24udGFibGUuYy50
YWdfaWQgXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmcm9tX29iaj0zRHNlPQpsZi5hcHAubW9kZWwuVG9vbFRhZ0Fzc29jaWF0
aW9uLnRhYmxlICkuZGlzdGluY3QoKSApCisKKyAgICAgICAgdGFncyA9M0QgW10KKyAgICAgICAg
Zm9yIHJvdyBpbiByZXN1bHRfc2V0OgorICAgICAgICAgICAgdGFnX2lkID0zRCByb3dbMF0KKyAg
ICAgICAgICAgIHRhZ3MuYXBwZW5kKCBzZWxmLmdldF90YWdfYnlfaWQoIHRhZ19pZCApICkKKyAg
ICAgICAgcmV0dXJuIHRhZ3MKKworICAgIGRlZiByZW1vdmVfaXRlbV90YWcoIHNlbGYsIHVzZXIs
IGl0ZW0sIHRhZ19uYW1lICk6CisgICAgICAgICIiIlJlbW92ZSBhIHRhZyBmcm9tIGFuIGl0ZW0u
IiIiCisgICAgICAgICMgR2V0IGl0ZW0gdGFnIGFzc29jaWF0aW9uLgorICAgICAgICBpdGVtX3Rh
Z19hc3NvYyA9M0Qgc2VsZi5fZ2V0X2l0ZW1fdGFnX2Fzc29jKCB1c2VyLCBpdGVtLCB0YWdfbmFt
ZSApCisgICAgICAgICMgUmVtb3ZlIGFzc29jaWF0aW9uLgorICAgICAgICBpZiBpdGVtX3RhZ19h
c3NvYzoKKyAgICAgICAgICAgICMgRGVsZXRlIGFzc29jaWF0aW9uLgorICAgICAgICAgICAgc2Vs
Zi5hcHAubW9kZWwuY29udGV4dC5kZWxldGUoIGl0ZW1fdGFnX2Fzc29jICkKKyAgICAgICAgICAg
IGl0ZW0udGFncy5yZW1vdmUoIGl0ZW1fdGFnX2Fzc29jICkKKyAgICAgICAgICAgIHJldHVybiBU
cnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGRlbGV0ZV9pdGVtX3RhZ3MoIHNl
bGYsIHVzZXIsIGl0ZW0gKToKKyAgICAgICAgIiIiRGVsZXRlIHRhZ3MgZnJvbSBhbiBpdGVtLiIi
IgorICAgICAgICAjIERlbGV0ZSBpdGVtLXRhZyBhc3NvY2lhdGlvbnMuCisgICAgICAgIGZvciB0
YWcgaW4gaXRlbS50YWdzOgorICAgICAgICAgICAgc2VsZi5hcHAubW9kZWwuY29udGV4dC5kZWxl
dGUoIHRhZyApCisgICAgICAgICMgRGVsZXRlIHRhZ3MgZnJvbSBpdGVtLgorICAgICAgICBkZWwg
aXRlbS50YWdzWzpdCisKKyAgICBkZWYgaXRlbV9oYXNfdGFnKCBzZWxmLCB1c2VyLCBpdGVtLCB0
YWcgKToKKyAgICAgICAgIiIiUmV0dXJucyB0cnVlIGlmIGl0ZW0gaXMgaGFzIGEgZ2l2ZW4gdGFn
LiIiIgorICAgICAgICAjIEdldCB0YWcgbmFtZS4KKyAgICAgICAgaWYgaXNpbnN0YW5jZSggdGFn
LCBiYXNlc3RyaW5nICk6CisgICAgICAgICAgICB0YWdfbmFtZSA9M0QgdGFnCisgICAgICAgIGVs
aWYgaXNpbnN0YW5jZSggdGFnLCBzZWxmLmFwcC5tb2RlbC5UYWcgKToKKyAgICAgICAgICAgIHRh
Z19uYW1lID0zRCB0YWcubmFtZQorICAgICAgICAjIENoZWNrIGZvciBhbiBpdGVtLXRhZyBhc3Nv
Y2lhdGlvbiB0byBzZWUgaWYgaXRlbSBoYXMgYSBnaXZlbiB0YWcuCisgICAgICAgIGl0ZW1fdGFn
X2Fzc29jID0zRCBzZWxmLl9nZXRfaXRlbV90YWdfYXNzb2MoIHVzZXIsIGl0ZW0sIHRhZ19uYW1l
ICkKKyAgICAgICAgaWYgaXRlbV90YWdfYXNzb2M6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQor
ICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBhcHBseV9pdGVtX3RhZyggc2VsZiwgdXNl
ciwgaXRlbSwgbmFtZSwgdmFsdWU9M0ROb25lICk6CisgICAgICAgICMgVXNlIGxvd2VyY2FzZSBu
YW1lIGZvciBzZWFyY2hpbmcvY3JlYXRpbmcgdGFnLgorICAgICAgICBsY19uYW1lID0zRCBuYW1l
Lmxvd2VyKCkKKyAgICAgICAgIyBHZXQgb3IgY3JlYXRlIGl0ZW0tdGFnIGFzc29jaWF0aW9uLgor
ICAgICAgICBpdGVtX3RhZ19hc3NvYyA9M0Qgc2VsZi5fZ2V0X2l0ZW1fdGFnX2Fzc29jKCB1c2Vy
LCBpdGVtLCBsY19uYW1lICkKKyAgICAgICAgaWYgbm90IGl0ZW1fdGFnX2Fzc29jOgorICAgICAg
ICAgICAgIyBDcmVhdGUgaXRlbS10YWcgYXNzb2NpYXRpb24uCisgICAgICAgICAgICAjIENyZWF0
ZSB0YWc7IGlmIE5vbmUsIHNraXAgdGhlIHRhZyAoYW5kIGxvZyBlcnJvcikuCisgICAgICAgICAg
ICB0YWcgPTNEIHNlbGYuX2dldF9vcl9jcmVhdGVfdGFnKCBsY19uYW1lICkKKyAgICAgICAgICAg
IGlmIG5vdCB0YWc6CisgICAgICAgICAgICAgICAgbG9nLndhcm4oICJGYWlsZWQgdG8gY3JlYXRl
IHRhZyB3aXRoIG5hbWUgJXMiICUgbGNfbmFtZSApCisgICAgICAgICAgICAgICAgcmV0dXJuCisg
ICAgICAgICAgICAjIENyZWF0ZSB0YWcgYXNzb2NpYXRpb24gYmFzZWQgb24gaXRlbSBjbGFzcy4K
KyAgICAgICAgICAgIGl0ZW1fdGFnX2Fzc29jX2NsYXNzID0zRCBzZWxmLmdldF90YWdfYXNzb2Nf
Y2xhc3MoIGl0ZW0uX19jbGFzPQpzX18gKQorICAgICAgICAgICAgaXRlbV90YWdfYXNzb2MgPTNE
IGl0ZW1fdGFnX2Fzc29jX2NsYXNzKCkKKyAgICAgICAgICAgICMgQWRkIHRhZyB0byBhc3NvY2lh
dGlvbi4KKyAgICAgICAgICAgIGl0ZW0udGFncy5hcHBlbmQoIGl0ZW1fdGFnX2Fzc29jICkKKyAg
ICAgICAgICAgIGl0ZW1fdGFnX2Fzc29jLnRhZyA9M0QgdGFnCisgICAgICAgICAgICBpdGVtX3Rh
Z19hc3NvYy51c2VyID0zRCB1c2VyCisgICAgICAgICMgQXBwbHkgYXR0cmlidXRlcyB0byBpdGVt
LXRhZyBhc3NvY2lhdGlvbi4gU3RyaXAgd2hpdGVzcGFjZSBmcm9tID0KdXNlciBuYW1lIGFuZCB0
YWcuCisgICAgICAgIGxjX3ZhbHVlID0zRCBOb25lCisgICAgICAgIGlmIHZhbHVlOgorICAgICAg
ICAgICAgbGNfdmFsdWUgPTNEIHZhbHVlLmxvd2VyKCkKKyAgICAgICAgaXRlbV90YWdfYXNzb2Mu
dXNlcl90bmFtZSA9M0QgbmFtZQorICAgICAgICBpdGVtX3RhZ19hc3NvYy51c2VyX3ZhbHVlID0z
RCB2YWx1ZQorICAgICAgICBpdGVtX3RhZ19hc3NvYy52YWx1ZSA9M0QgbGNfdmFsdWUKKyAgICAg
ICAgcmV0dXJuIGl0ZW1fdGFnX2Fzc29jCisKKyAgICBkZWYgYXBwbHlfaXRlbV90YWdzKCBzZWxm
LCB1c2VyLCBpdGVtLCB0YWdzX3N0ciApOgorICAgICAgICAiIiJBcHBseSB0YWdzIHRvIGFuIGl0
ZW0uIiIiCisgICAgICAgICMgUGFyc2UgdGFncy4KKyAgICAgICAgcGFyc2VkX3RhZ3MgPTNEIHNl
bGYucGFyc2VfdGFncyggdGFnc19zdHIgKQorICAgICAgICAjIEFwcGx5IGVhY2ggdGFnLgorICAg
ICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gcGFyc2VkX3RhZ3MuaXRlbXMoKToKKyAgICAgICAgICAg
IHNlbGYuYXBwbHlfaXRlbV90YWcoIHVzZXIsIGl0ZW0sIG5hbWUsIHZhbHVlICkKKworICAgIGRl
ZiBnZXRfdGFnc19zdHIoIHNlbGYsIHRhZ3MgKToKKyAgICAgICAgIiIiQnVpbGQgYSBzdHJpbmcg
ZnJvbSBhbiBpdGVtJ3MgdGFncy4iIiIKKyAgICAgICAgIyBSZXR1cm4gZW1wdHkgc3RyaW5nIGlm
IHRoZXJlIGFyZSBubyB0YWdzLgorICAgICAgICBpZiBub3QgdGFnczoKKyAgICAgICAgICAgIHJl
dHVybiAiIgorICAgICAgICAjIENyZWF0ZSBzdHJpbmcgb2YgdGFncy4KKyAgICAgICAgdGFnc19z
dHJfbGlzdCA9M0QgbGlzdCgpCisgICAgICAgIGZvciB0YWcgaW4gdGFnczoKKyAgICAgICAgICAg
IHRhZ19zdHIgPTNEIHRhZy51c2VyX3RuYW1lCisgICAgICAgICAgICBpZiB0YWcudmFsdWUgaXMg
bm90IE5vbmU6CisgICAgICAgICAgICAgICAgdGFnX3N0ciArPTNEICI6IiArIHRhZy51c2VyX3Zh
bHVlCisgICAgICAgICAgICB0YWdzX3N0cl9saXN0LmFwcGVuZCggdGFnX3N0ciApCisgICAgICAg
IHJldHVybiAiLCAiLmpvaW4oIHRhZ3Nfc3RyX2xpc3QgKQorCisgICAgZGVmIGdldF90YWdfYnlf
aWQoIHNlbGYsIHRhZ19pZCApOgorICAgICAgICAiIiJHZXQgYSBUYWcgb2JqZWN0IGZyb20gYSB0
YWcgaWQuIiIiCisgICAgICAgIHJldHVybiBzZWxmLmFwcC5tb2RlbC5jb250ZXh0LnF1ZXJ5KCBz
ZWxmLmFwcC5tb2RlbC5UYWcgKS5maWx0ZXJfYj0KeSggaWQ9M0R0YWdfaWQgKS5maXJzdCgpCisK
KyAgICBkZWYgZ2V0X3RhZ19ieV9uYW1lKCBzZWxmLCB0YWdfbmFtZSApOgorICAgICAgICAiIiJH
ZXQgYSBUYWcgb2JqZWN0IGZyb20gYSB0YWcgbmFtZSAoc3RyaW5nKS4iIiIKKyAgICAgICAgaWYg
dGFnX25hbWU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5hcHAubW9kZWwuY29udGV4dC5xdWVy
eSggc2VsZi5hcHAubW9kZWwuVGFnICkuZmlsdD0KZXJfYnkoIG5hbWU9M0R0YWdfbmFtZS5sb3dl
cigpICkuZmlyc3QoKQorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIF9jcmVhdGVfdGFn
KCBzZWxmLCB0YWdfc3RyICk6CisgICAgICAgICIiIkNyZWF0ZSBhIFRhZyBvYmplY3QgZnJvbSBh
IHRhZyBzdHJpbmcuIiIiCisgICAgICAgIHRhZ19oaWVyYXJjaHkgPTNEIHRhZ19zdHIuc3BsaXQo
IHNlbGYuaGllcmFyY2h5X3NlcGFyYXRvciApCisgICAgICAgIHRhZ19wcmVmaXggPTNEICIiCisg
ICAgICAgIHBhcmVudF90YWcgPTNEIE5vbmUKKyAgICAgICAgZm9yIHN1Yl90YWcgaW4gdGFnX2hp
ZXJhcmNoeToKKyAgICAgICAgICAgICMgR2V0IG9yIGNyZWF0ZSBzdWJ0YWcuCisgICAgICAgICAg
ICB0YWdfbmFtZSA9M0QgdGFnX3ByZWZpeCArIHNlbGYuX3NjcnViX3RhZ19uYW1lKCBzdWJfdGFn
ICkKKyAgICAgICAgICAgIHRhZyA9M0Qgc2VsZi5hcHAubW9kZWwuY29udGV4dC5xdWVyeSggc2Vs
Zi5hcHAubW9kZWwuVGFnICkuZmlsPQp0ZXJfYnkoIG5hbWU9M0R0YWdfbmFtZSkuZmlyc3QoKQor
ICAgICAgICAgICAgaWYgbm90IHRhZzoKKyAgICAgICAgICAgICAgICB0YWcgPTNEIHNlbGYuYXBw
Lm1vZGVsLlRhZyggdHlwZT0zRDAsIG5hbWU9M0R0YWdfbmFtZSApCisgICAgICAgICAgICAjIFNl
dCB0YWcgcGFyZW50LgorICAgICAgICAgICAgdGFnLnBhcmVudCA9M0QgcGFyZW50X3RhZworICAg
ICAgICAgICAgIyBVcGRhdGUgcGFyZW50IGFuZCB0YWcgcHJlZml4LgorICAgICAgICAgICAgcGFy
ZW50X3RhZyA9M0QgdGFnCisgICAgICAgICAgICB0YWdfcHJlZml4ID0zRCB0YWcubmFtZSArIHNl
bGYuaGllcmFyY2h5X3NlcGFyYXRvcgorICAgICAgICByZXR1cm4gdGFnCisKKyAgICBkZWYgX2dl
dF9vcl9jcmVhdGVfdGFnKCBzZWxmLCB0YWdfc3RyICk6CisgICAgICAgICIiIkdldCBvciBjcmVh
dGUgYSBUYWcgb2JqZWN0IGZyb20gYSB0YWcgc3RyaW5nLiIiIgorICAgICAgICAjIFNjcnViIHRh
ZzsgaWYgdGFnIGlzIE5vbmUgYWZ0ZXIgYmVpbmcgc2NydWJiZWQsIHJldHVybiBOb25lLgorICAg
ICAgICBzY3J1YmJlZF90YWdfc3RyID0zRCBzZWxmLl9zY3J1Yl90YWdfbmFtZSggdGFnX3N0ciAp
CisgICAgICAgIGlmIG5vdCBzY3J1YmJlZF90YWdfc3RyOgorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKyAgICAgICAgIyBHZXQgaXRlbSB0YWcuCisgICAgICAgIHRhZyA9M0Qgc2VsZi5nZXRfdGFn
X2J5X25hbWUoIHNjcnViYmVkX3RhZ19zdHIgKQorICAgICAgICAjIENyZWF0ZSB0YWcgaWYgbmVj
ZXNzYXJ5LgorICAgICAgICBpZiB0YWcgaXMgTm9uZToKKyAgICAgICAgICAgIHRhZyA9M0Qgc2Vs
Zi5fY3JlYXRlX3RhZyggc2NydWJiZWRfdGFnX3N0ciApCisgICAgICAgIHJldHVybiB0YWcKKwor
ICAgIGRlZiBfZ2V0X2l0ZW1fdGFnX2Fzc29jKCBzZWxmLCB1c2VyLCBpdGVtLCB0YWdfbmFtZSAp
OgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIEl0ZW1UYWdBc3NvY2lhdGlvbiBvYmplY3Qg
Zm9yIGEgdXNlciwgaXRlbSwgYW5kIHRhZyBzdHJpbmc7PQogcmV0dXJucyBOb25lIGlmIHRoZXJl
IGlzCisgICAgICAgIG5vIHN1Y2ggYXNzb2NpYXRpb24uCisgICAgICAgICIiIgorICAgICAgICBz
Y3J1YmJlZF90YWdfbmFtZSA9M0Qgc2VsZi5fc2NydWJfdGFnX25hbWUoIHRhZ19uYW1lICkKKyAg
ICAgICAgZm9yIGl0ZW1fdGFnX2Fzc29jIGluIGl0ZW0udGFnczoKKyAgICAgICAgICAgIGlmICgg
aXRlbV90YWdfYXNzb2MudXNlciA9M0Q9M0QgdXNlciApIGFuZCAoIGl0ZW1fdGFnX2Fzc29jLnVz
PQplcl90bmFtZSA9M0Q9M0Qgc2NydWJiZWRfdGFnX25hbWUgKToKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gaXRlbV90YWdfYXNzb2MKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRlZiBwYXJz
ZV90YWdzKCBzZWxmLCB0YWdfc3RyICk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIGEg
bGlzdCBvZiByYXcgKHRhZy1uYW1lLCB2YWx1ZSkgcGFpcnMgZGVyaXZlZCBmcm9tIGEgc3RyaW49
Cmc7IG1ldGhvZCBzY3J1YnMgdGFnIG5hbWVzIGFuZCB2YWx1ZXMgYXMgd2VsbC4KKyAgICAgICAg
UmV0dXJuIHZhbHVlIGlzIGEgZGljdGlvbmFyeSB3aGVyZSB0YWctbmFtZXMgYXJlIGtleXMuCisg
ICAgICAgICIiIgorICAgICAgICAjIEdyYWNlZnVsbHkgaGFuZGxlIE5vbmUuCisgICAgICAgIGlm
IG5vdCB0YWdfc3RyOgorICAgICAgICAgICAgcmV0dXJuIGRpY3QoKQorICAgICAgICAjIFNwbGl0
IHRhZ3MgYmFzZWQgb24gc2VwYXJhdG9ycy4KKyAgICAgICAgcmVnX2V4cCA9M0QgcmUuY29tcGls
ZSggJ1snICsgc2VsZi50YWdfc2VwYXJhdG9ycyArICddJyApCisgICAgICAgIHJhd190YWdzID0z
RCByZWdfZXhwLnNwbGl0KCB0YWdfc3RyICkKKyAgICAgICAgIyBFeHRyYWN0IG5hbWUtdmFsdWUg
cGFpcnMuCisgICAgICAgIG5hbWVfdmFsdWVfcGFpcnMgPTNEIGRpY3QoKQorICAgICAgICBmb3Ig
cmF3X3RhZyBpbiByYXdfdGFnczoKKyAgICAgICAgICAgIG52X3BhaXIgPTNEIHNlbGYuX2dldF9u
YW1lX3ZhbHVlX3BhaXIoIHJhd190YWcgKQorICAgICAgICAgICAgc2NydWJiZWRfbmFtZSA9M0Qg
c2VsZi5fc2NydWJfdGFnX25hbWUoIG52X3BhaXJbMF0gKQorICAgICAgICAgICAgc2NydWJiZWRf
dmFsdWUgPTNEIHNlbGYuX3NjcnViX3RhZ192YWx1ZSggbnZfcGFpclsxXSApCisgICAgICAgICAg
ICBuYW1lX3ZhbHVlX3BhaXJzW3NjcnViYmVkX25hbWVdID0zRCBzY3J1YmJlZF92YWx1ZQorICAg
ICAgICByZXR1cm4gbmFtZV92YWx1ZV9wYWlycworCisgICAgZGVmIF9zY3J1Yl90YWdfdmFsdWUo
IHNlbGYsIHZhbHVlICk6CisgICAgICAgICIiIlNjcnViIGEgdGFnIHZhbHVlLiIiIgorICAgICAg
ICAjIEdyYWNlZnVsbHkgaGFuZGxlIE5vbmU6CisgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAg
ICAgICAgIHJldHVybiBOb25lCisgICAgICAgICMgUmVtb3ZlIHdoaXRlc3BhY2UgZnJvbSB2YWx1
ZS4KKyAgICAgICAgcmVnX2V4cCA9M0QgcmUuY29tcGlsZSggJ1xzJyApCisgICAgICAgIHNjcnVi
YmVkX3ZhbHVlID0zRCByZS5zdWIoIHJlZ19leHAsICIiLCB2YWx1ZSApCisgICAgICAgIHJldHVy
biBzY3J1YmJlZF92YWx1ZQorCisgICAgZGVmIF9zY3J1Yl90YWdfbmFtZSggc2VsZiwgbmFtZSAp
OgorICAgICAgICAiIiJTY3J1YiBhIHRhZyBuYW1lLiIiIgorICAgICAgICAjIEdyYWNlZnVsbHkg
aGFuZGxlIE5vbmU6CisgICAgICAgIGlmIG5vdCBuYW1lOgorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKyAgICAgICAgIyBSZW1vdmUgd2hpdGVzcGFjZSBmcm9tIG5hbWUuCisgICAgICAgIHJlZ19l
eHAgPTNEIHJlLmNvbXBpbGUoICdccycgKQorICAgICAgICBzY3J1YmJlZF9uYW1lID0zRCByZS5z
dWIoIHJlZ19leHAsICIiLCBuYW1lICkKKyAgICAgICAgIyBJZ25vcmUgc3RhcnRpbmcgJzonIGNo
YXIuCisgICAgICAgIGlmIHNjcnViYmVkX25hbWUuc3RhcnRzd2l0aCggc2VsZi5oaWVyYXJjaHlf
c2VwYXJhdG9yICk6CisgICAgICAgICAgICBzY3J1YmJlZF9uYW1lID0zRCBzY3J1YmJlZF9uYW1l
WzE6XQorICAgICAgICAjIElmIG5hbWUgaXMgdG9vIHNob3J0IG9yIHRvbyBsb25nLCByZXR1cm4g
Tm9uZS4KKyAgICAgICAgaWYgbGVuKCBzY3J1YmJlZF9uYW1lICkgPCBzZWxmLm1pbl90YWdfbGVu
IG9yIGxlbiggc2NydWJiZWRfbmFtZSApPQogPiBzZWxmLm1heF90YWdfbGVuOgorICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIHNjcnViYmVkX25hbWUKKworICAgIGRlZiBf
c2NydWJfdGFnX25hbWVfbGlzdCggc2VsZiwgdGFnX25hbWVfbGlzdCApOgorICAgICAgICAiIiJT
Y3J1YiBhIHRhZyBuYW1lIGxpc3QuIiIiCisgICAgICAgIHNjcnViYmVkX3RhZ19saXN0ID0zRCBs
aXN0KCkKKyAgICAgICAgZm9yIHRhZyBpbiB0YWdfbmFtZV9saXN0OgorICAgICAgICAgICAgc2Ny
dWJiZWRfdGFnX2xpc3QuYXBwZW5kKCBzZWxmLl9zY3J1Yl90YWdfbmFtZSggdGFnICkgKQorICAg
ICAgICByZXR1cm4gc2NydWJiZWRfdGFnX2xpc3QKKworICAgIGRlZiBfZ2V0X25hbWVfdmFsdWVf
cGFpciggc2VsZiwgdGFnX3N0ciApOgorICAgICAgICAiIiJHZXQgbmFtZSwgdmFsdWUgcGFpciBm
cm9tIGEgdGFnIHN0cmluZy4iIiIKKyAgICAgICAgIyBVc2UgcmVndWxhciBleHByZXNzaW9uIHRv
IHBhcnNlIG5hbWUsIHZhbHVlLgorICAgICAgICByZWdfZXhwID0zRCByZS5jb21waWxlKCAiWyIg
KyBzZWxmLmtleV92YWx1ZV9zZXBhcmF0b3JzICsgIl0iICkKKyAgICAgICAgbmFtZV92YWx1ZV9w
YWlyID0zRCByZWdfZXhwLnNwbGl0KCB0YWdfc3RyICkKKyAgICAgICAgIyBBZGQgZW1wdHkgc2xv
dCBpZiB0YWcgZG9lcyBub3QgaGF2ZSB2YWx1ZS4KKyAgICAgICAgaWYgbGVuKCBuYW1lX3ZhbHVl
X3BhaXIgKSA8IDI6CisgICAgICAgICAgICBuYW1lX3ZhbHVlX3BhaXIuYXBwZW5kKCBOb25lICkK
KyAgICAgICAgcmV0dXJuIG5hbWVfdmFsdWVfcGFpcgorCisKK2NsYXNzIEdhbGF4eVRhZ01hbmFn
ZXIoIFRhZ01hbmFnZXIgKToKKyAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgorICAgICAg
ICBmcm9tIGdhbGF4eSBpbXBvcnQgbW9kZWwKKyAgICAgICAgVGFnTWFuYWdlci5fX2luaXRfXygg
c2VsZiwgYXBwICkKKyAgICAgICAgc2VsZi5pdGVtX3RhZ19hc3NvY19pbmZvWyJIaXN0b3J5Il0g
PTNEIEl0ZW1UYWdBc3NvY0luZm8oIG1vZGVsLkhpPQpzdG9yeSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbC5IaXN0
PQpvcnlUYWdBc3NvY2lhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbC5IaXN0PQpvcnlUYWdBc3NvY2lhdGlv
bi50YWJsZS5jLmhpc3RvcnlfaWQgKQorICAgICAgICBzZWxmLml0ZW1fdGFnX2Fzc29jX2luZm9b
Ikhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb24iXSA9M0QgXAorICAgICAgICAgICAgSXRlbVRhZ0Fz
c29jSW5mbyggbW9kZWwuSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1vZGVsLkhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb25UYWdBc3NvY2lh
dGlvPQpuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwuSGlzdG9yeURhdGFz
ZXRBc3NvY2lhdGlvblRhZ0Fzc29jaWF0aW89Cm4udGFibGUuYy5oaXN0b3J5X2RhdGFzZXRfYXNz
b2NpYXRpb25faWQgKQorICAgICAgICBzZWxmLml0ZW1fdGFnX2Fzc29jX2luZm9bIlBhZ2UiXSA9
M0QgSXRlbVRhZ0Fzc29jSW5mbyggbW9kZWwuUGFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbC5QYWdlVGFnPQpBc3Nv
Y2lhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtb2RlbC5QYWdlVGFnPQpBc3NvY2lhdGlvbi50YWJsZS5jLnBhZ2VfaWQg
KQorICAgICAgICBzZWxmLml0ZW1fdGFnX2Fzc29jX2luZm9bIlN0b3JlZFdvcmtmbG93Il0gPTNE
IEl0ZW1UYWdBc3NvY0luZm8oIG09Cm9kZWwuU3RvcmVkV29ya2Zsb3csCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1vZD0KZWwuU3RvcmVkV29ya2Zsb3dUYWdBc3NvY2lhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9k
PQplbC5TdG9yZWRXb3JrZmxvd1RhZ0Fzc29jaWF0aW9uLnRhYmxlLmMuc3RvcmVkX3dvcmtmbG93
X2lkICkKKyAgICAgICAgc2VsZi5pdGVtX3RhZ19hc3NvY19pbmZvWyJWaXN1YWxpemF0aW9uIl0g
PTNEIEl0ZW1UYWdBc3NvY0luZm8oIG1vPQpkZWwuVmlzdWFsaXphdGlvbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtb2RlPQpsLlZpc3VhbGl6YXRpb25UYWdBc3NvY2lhdGlvbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2Rl
PQpsLlZpc3VhbGl6YXRpb25UYWdBc3NvY2lhdGlvbi50YWJsZS5jLnZpc3VhbGl6YXRpb25faWQg
KQorCisKK2NsYXNzIENvbW11bml0eVRhZ01hbmFnZXIoIFRhZ01hbmFnZXIpOgorICAgIGRlZiBf
X2luaXRfXyggc2VsZiwgYXBwICk6CisgICAgICAgIFRhZ01hbmFnZXIuX19pbml0X18oIHNlbGYs
IGFwcCApCgpkaWZmIC1yIDhlYjZkOGIwYmYxMGFkMWFkNWI2OWY5ZGE4N2Q4ZDAwOTNiOTcyZjEg
LXIgMDk0MjA1YjQ1MWFhY2VmNzc3YzBhZjI9CjAwNTQyYTZjODFlYjNlZjBjIGxpYi9nYWxheHkv
dGFncy90YWdfaGFuZGxlci5weQotLS0gYS9saWIvZ2FsYXh5L3RhZ3MvdGFnX2hhbmRsZXIucHkK
KysrIGIvbGliL2dhbGF4eS90YWdzL3RhZ19oYW5kbGVyLnB5CkBAIC0xLDMwMSArMCwwIEBACi1p
bXBvcnQgcmUKLWltcG9ydCBsb2dnaW5nCi1mcm9tIHNxbGFsY2hlbXkuc3FsLmV4cHJlc3Npb24g
aW1wb3J0IGZ1bmMKLWZyb20gc3FsYWxjaGVteS5zcWwuZXhwcmVzc2lvbiBpbXBvcnQgYW5kXwot
ZnJvbSBzcWxhbGNoZW15LnNxbCBpbXBvcnQgc2VsZWN0Ci0KLWxvZyA9M0QgbG9nZ2luZy5nZXRM
b2dnZXIoIF9fbmFtZV9fICkKLQotIyBJdGVtLXNwZWNpZmljIGluZm9ybWF0aW9uIG5lZWRlZCB0
byBwZXJmb3JtIHRhZ2dpbmcuCi1jbGFzcyBJdGVtVGFnQXNzb2NJbmZvKCBvYmplY3QgKToKLSAg
ICBkZWYgX19pbml0X18oIHNlbGYsIGl0ZW1fY2xhc3MsIHRhZ19hc3NvY19jbGFzcywgaXRlbV9p
ZF9jb2wgKToKLSAgICAgICAgc2VsZi5pdGVtX2NsYXNzID0zRCBpdGVtX2NsYXNzCi0gICAgICAg
IHNlbGYudGFnX2Fzc29jX2NsYXNzID0zRCB0YWdfYXNzb2NfY2xhc3MKLSAgICAgICAgc2VsZi5p
dGVtX2lkX2NvbCA9M0QgaXRlbV9pZF9jb2wKLQotY2xhc3MgVGFnSGFuZGxlciggb2JqZWN0ICk6
Ci0gICAgZGVmIF9faW5pdF9fKCBzZWxmICk6Ci0gICAgICAgICMgTWluaW11bSB0YWcgbGVuZ3Ro
LgotICAgICAgICBzZWxmLm1pbl90YWdfbGVuID0zRCAyCi0gICAgICAgICMgTWF4aW11bSB0YWcg
bGVuZ3RoLgotICAgICAgICBzZWxmLm1heF90YWdfbGVuID0zRCAyNTUKLSAgICAgICAgIyBUYWcg
c2VwYXJhdG9yLgotICAgICAgICBzZWxmLnRhZ19zZXBhcmF0b3JzID0zRCAnLDsnCi0gICAgICAg
ICMgSGllcmFyY2h5IHNlcGFyYXRvci4KLSAgICAgICAgc2VsZi5oaWVyYXJjaHlfc2VwYXJhdG9y
ID0zRCAnLicKLSAgICAgICAgIyBLZXktdmFsdWUgc2VwYXJhdG9yLgotICAgICAgICBzZWxmLmtl
eV92YWx1ZV9zZXBhcmF0b3JzID0zRCAiPTNEOiIKLSAgICAgICAgIyBJbml0aWFsaXplIHdpdGgg
a25vd24gY2xhc3NlcyAtIGFkZCB0byB0aGlzIGluIHN1YmNsYXNzZXMuCi0gICAgICAgIHNlbGYu
aXRlbV90YWdfYXNzb2NfaW5mbyA9M0Qge30KLQotICAgIGRlZiBnZXRfdGFnX2Fzc29jX2NsYXNz
KCBzZWxmLCBpdGVtX2NsYXNzICk6Ci0gICAgICAgICIiIlJldHVybnMgdGFnIGFzc29jaWF0aW9u
IGNsYXNzIGZvciBpdGVtIGNsYXNzLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5pdGVtX3RhZ19h
c3NvY19pbmZvW2l0ZW1fY2xhc3MuX19uYW1lX19dLnRhZ19hc3NvY19jbGE9CnNzCi0KLSAgICBk
ZWYgZ2V0X2lkX2NvbF9pbl9pdGVtX3RhZ19hc3NvY190YWJsZSggc2VsZiwgaXRlbV9jbGFzcyAp
OgotICAgICAgICAiIiJSZXR1cm5zIGl0ZW0gaWQgY29sdW1uIGluIGNsYXNzJyBpdGVtLXRhZyBh
c3NvY2lhdGlvbiB0YWJsZS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuaXRlbV90YWdfYXNzb2Nf
aW5mb1tpdGVtX2NsYXNzLl9fbmFtZV9fXS5pdGVtX2lkX2NvbAotCi0gICAgZGVmIGdldF9jb21t
dW5pdHlfdGFncyggc2VsZiwgdHJhbnMsIGl0ZW09M0ROb25lLCBsaW1pdD0zRE5vbmUgKToKLSAg
ICAgICAgIiIiUmV0dXJucyBjb21tdW5pdHkgdGFncyBmb3IgYW4gaXRlbS4iIiIKLSAgICAgICAg
IyBHZXQgaXRlbS10YWcgYXNzb2NpYXRpb24gY2xhc3MuCi0gICAgICAgIGl0ZW1fY2xhc3MgPTNE
IGl0ZW0uX19jbGFzc19fCi0gICAgICAgIGl0ZW1fdGFnX2Fzc29jX2NsYXNzID0zRCBzZWxmLmdl
dF90YWdfYXNzb2NfY2xhc3MoIGl0ZW1fY2xhc3MgKQotICAgICAgICBpZiBub3QgaXRlbV90YWdf
YXNzb2NfY2xhc3M6Ci0gICAgICAgICAgICByZXR1cm4gW10KLSAgICAgICAgIyBCdWlsZCBzZWxl
Y3Qgc3RhdGVtZW50LgotICAgICAgICBjb2xzX3RvX3NlbGVjdCA9M0QgWyBpdGVtX3RhZ19hc3Nv
Y19jbGFzcy50YWJsZS5jLnRhZ19pZCwgZnVuYy5jb3U9Cm50KCAnKicgKSBdCi0gICAgICAgIGZy
b21fb2JqID0zRCBpdGVtX3RhZ19hc3NvY19jbGFzcy50YWJsZS5qb2luKCBpdGVtX2NsYXNzLnRh
YmxlICkuaj0Kb2luKCB0cmFucy5hcHAubW9kZWwuVGFnLnRhYmxlICkKLSAgICAgICAgd2hlcmVf
Y2xhdXNlID0zRCAoIHNlbGYuZ2V0X2lkX2NvbF9pbl9pdGVtX3RhZ19hc3NvY190YWJsZSggaXRl
bV9jPQpsYXNzICkgPTNEPTNEIGl0ZW0uaWQgKQotICAgICAgICBvcmRlcl9ieSA9M0QgWyBmdW5j
LmNvdW50KCAiKiIgKS5kZXNjKCkgXQotICAgICAgICBncm91cF9ieSA9M0QgaXRlbV90YWdfYXNz
b2NfY2xhc3MudGFibGUuYy50YWdfaWQKLSAgICAgICAgIyBEbyBxdWVyeSBhbmQgZ2V0IHJlc3Vs
dCBzZXQuCi0gICAgICAgIHF1ZXJ5ID0zRCBzZWxlY3QoIGNvbHVtbnM9M0Rjb2xzX3RvX3NlbGVj
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fb2JqPTNEZnJvbV9vYmosCi0gICAgICAg
ICAgICAgICAgICAgICAgICB3aGVyZWNsYXVzZT0zRHdoZXJlX2NsYXVzZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGdyb3VwX2J5PTNEZ3JvdXBfYnksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBvcmRlcl9ieT0zRG9yZGVyX2J5LAotICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQ9M0Rs
aW1pdCApCi0gICAgICAgIHJlc3VsdF9zZXQgPTNEIHRyYW5zLnNhX3Nlc3Npb24uZXhlY3V0ZSgg
cXVlcnkgKQotICAgICAgICAjIFJldHVybiBjb21tdW5pdHkgdGFncy4KLSAgICAgICAgY29tbXVu
aXR5X3RhZ3MgPTNEIFtdCi0gICAgICAgIGZvciByb3cgaW4gcmVzdWx0X3NldDoKLSAgICAgICAg
ICAgIHRhZ19pZCA9M0Qgcm93WzBdCi0gICAgICAgICAgICBjb21tdW5pdHlfdGFncy5hcHBlbmQo
IHNlbGYuZ2V0X3RhZ19ieV9pZCggdHJhbnMsIHRhZ19pZCApICkKLSAgICAgICAgcmV0dXJuIGNv
bW11bml0eV90YWdzCi0KLSAgICBkZWYgZ2V0X3Rvb2xfdGFncyggc2VsZiwgdHJhbnMgKToKLSAg
ICAgICAgcmVzdWx0X3NldCA9M0QgdHJhbnMuc2Ffc2Vzc2lvbi5leGVjdXRlKCBzZWxlY3QoIGNv
bHVtbnM9M0RbIHRyYW5zPQouYXBwLm1vZGVsLlRvb2xUYWdBc3NvY2lhdGlvbi50YWJsZS5jLnRh
Z19pZCBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyb21fb2JqPTNEdHJhbnMuYXA9CnAubW9kZWwuVG9vbFRhZ0Fzc29jaWF0aW9uLnRh
YmxlICkuZGlzdGluY3QoKSApCi0KLSAgICAgICAgdGFncyA9M0QgW10KLSAgICAgICAgZm9yIHJv
dyBpbiByZXN1bHRfc2V0OgotICAgICAgICAgICAgdGFnX2lkID0zRCByb3dbMF0KLSAgICAgICAg
ICAgIHRhZ3MuYXBwZW5kKCBzZWxmLmdldF90YWdfYnlfaWQoIHRyYW5zLCB0YWdfaWQgKSApCi0g
ICAgICAgIHJldHVybiB0YWdzCi0KLSAgICBkZWYgcmVtb3ZlX2l0ZW1fdGFnKCBzZWxmLCB0cmFu
cywgdXNlciwgaXRlbSwgdGFnX25hbWUgKToKLSAgICAgICAgIiIiUmVtb3ZlIGEgdGFnIGZyb20g
YW4gaXRlbS4iIiIKLSAgICAgICAgIyBHZXQgaXRlbSB0YWcgYXNzb2NpYXRpb24uCi0gICAgICAg
IGl0ZW1fdGFnX2Fzc29jID0zRCBzZWxmLl9nZXRfaXRlbV90YWdfYXNzb2MoIHVzZXIsIGl0ZW0s
IHRhZ19uYW1lICkKLSAgICAgICAgIyBSZW1vdmUgYXNzb2NpYXRpb24uCi0gICAgICAgIGlmIGl0
ZW1fdGFnX2Fzc29jOgotICAgICAgICAgICAgIyBEZWxldGUgYXNzb2NpYXRpb24uCi0gICAgICAg
ICAgICB0cmFucy5zYV9zZXNzaW9uLmRlbGV0ZSggaXRlbV90YWdfYXNzb2MgKQotICAgICAgICAg
ICAgaXRlbS50YWdzLnJlbW92ZSggaXRlbV90YWdfYXNzb2MgKQotICAgICAgICAgICAgcmV0dXJu
IFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgZGVsZXRlX2l0ZW1fdGFncygg
c2VsZiwgdHJhbnMsIHVzZXIsIGl0ZW0gKToKLSAgICAgICAgIiIiRGVsZXRlIHRhZ3MgZnJvbSBh
biBpdGVtLiIiIgotICAgICAgICAjIERlbGV0ZSBpdGVtLXRhZyBhc3NvY2lhdGlvbnMuCi0gICAg
ICAgIGZvciB0YWcgaW4gaXRlbS50YWdzOgotICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5k
ZWxldGUoIHRhZyApCi0gICAgICAgICMgRGVsZXRlIHRhZ3MgZnJvbSBpdGVtLgotICAgICAgICBk
ZWwgaXRlbS50YWdzWzpdCi0KLSAgICBkZWYgaXRlbV9oYXNfdGFnKCBzZWxmLCB0cmFucywgdXNl
ciwgaXRlbSwgdGFnICk6Ci0gICAgICAgICIiIlJldHVybnMgdHJ1ZSBpZiBpdGVtIGlzIGhhcyBh
IGdpdmVuIHRhZy4iIiIKLSAgICAgICAgIyBHZXQgdGFnIG5hbWUuCi0gICAgICAgIGlmIGlzaW5z
dGFuY2UoIHRhZywgYmFzZXN0cmluZyApOgotICAgICAgICAgICAgdGFnX25hbWUgPTNEIHRhZwot
ICAgICAgICBlbGlmIGlzaW5zdGFuY2UoIHRhZywgdHJhbnMuYXBwLm1vZGVsLlRhZyApOgotICAg
ICAgICAgICAgdGFnX25hbWUgPTNEIHRhZy5uYW1lCi0gICAgICAgICMgQ2hlY2sgZm9yIGFuIGl0
ZW0tdGFnIGFzc29jaWF0aW9uIHRvIHNlZSBpZiBpdGVtIGhhcyBhIGdpdmVuIHRhZy4KLSAgICAg
ICAgaXRlbV90YWdfYXNzb2MgPTNEIHNlbGYuX2dldF9pdGVtX3RhZ19hc3NvYyggdXNlciwgaXRl
bSwgdGFnX25hbWUgKQotICAgICAgICBpZiBpdGVtX3RhZ19hc3NvYzoKLSAgICAgICAgICAgIHJl
dHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIGFwcGx5X2l0ZW1fdGFn
KCBzZWxmLCB0cmFucywgdXNlciwgaXRlbSwgbmFtZSwgdmFsdWU9M0ROb25lICk6Ci0gICAgICAg
ICMgVXNlIGxvd2VyY2FzZSBuYW1lIGZvciBzZWFyY2hpbmcvY3JlYXRpbmcgdGFnLgotICAgICAg
ICBsY19uYW1lID0zRCBuYW1lLmxvd2VyKCkKLSAgICAgICAgIyBHZXQgb3IgY3JlYXRlIGl0ZW0t
dGFnIGFzc29jaWF0aW9uLgotICAgICAgICBpdGVtX3RhZ19hc3NvYyA9M0Qgc2VsZi5fZ2V0X2l0
ZW1fdGFnX2Fzc29jKCB1c2VyLCBpdGVtLCBsY19uYW1lICkKLSAgICAgICAgaWYgbm90IGl0ZW1f
dGFnX2Fzc29jOgotICAgICAgICAgICAgIyBDcmVhdGUgaXRlbS10YWcgYXNzb2NpYXRpb24uCi0g
ICAgICAgICAgICAjIENyZWF0ZSB0YWc7IGlmIE5vbmUsIHNraXAgdGhlIHRhZyAoYW5kIGxvZyBl
cnJvcikuCi0gICAgICAgICAgICB0YWcgPTNEIHNlbGYuX2dldF9vcl9jcmVhdGVfdGFnKCB0cmFu
cywgbGNfbmFtZSApCi0gICAgICAgICAgICBpZiBub3QgdGFnOgotICAgICAgICAgICAgICAgIGxv
Zy53YXJuKCAiRmFpbGVkIHRvIGNyZWF0ZSB0YWcgd2l0aCBuYW1lICVzIiAlIGxjX25hbWUgKQot
ICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgIyBDcmVhdGUgdGFnIGFzc29jaWF0
aW9uIGJhc2VkIG9uIGl0ZW0gY2xhc3MuCi0gICAgICAgICAgICBpdGVtX3RhZ19hc3NvY19jbGFz
cyA9M0Qgc2VsZi5nZXRfdGFnX2Fzc29jX2NsYXNzKCBpdGVtLl9fY2xhcz0Kc19fICkKLSAgICAg
ICAgICAgIGl0ZW1fdGFnX2Fzc29jID0zRCBpdGVtX3RhZ19hc3NvY19jbGFzcygpCi0gICAgICAg
ICAgICAjIEFkZCB0YWcgdG8gYXNzb2NpYXRpb24uCi0gICAgICAgICAgICBpdGVtLnRhZ3MuYXBw
ZW5kKCBpdGVtX3RhZ19hc3NvYyApCi0gICAgICAgICAgICBpdGVtX3RhZ19hc3NvYy50YWcgPTNE
IHRhZwotICAgICAgICAgICAgaXRlbV90YWdfYXNzb2MudXNlciA9M0QgdXNlcgotICAgICAgICAj
IEFwcGx5IGF0dHJpYnV0ZXMgdG8gaXRlbS10YWcgYXNzb2NpYXRpb24uIFN0cmlwIHdoaXRlc3Bh
Y2UgZnJvbSA9CnVzZXIgbmFtZSBhbmQgdGFnLgotICAgICAgICBsY192YWx1ZSA9M0QgTm9uZQot
ICAgICAgICBpZiB2YWx1ZToKLSAgICAgICAgICAgIGxjX3ZhbHVlID0zRCB2YWx1ZS5sb3dlcigp
Ci0gICAgICAgIGl0ZW1fdGFnX2Fzc29jLnVzZXJfdG5hbWUgPTNEIG5hbWUKLSAgICAgICAgaXRl
bV90YWdfYXNzb2MudXNlcl92YWx1ZSA9M0QgdmFsdWUKLSAgICAgICAgaXRlbV90YWdfYXNzb2Mu
dmFsdWUgPTNEIGxjX3ZhbHVlCi0gICAgICAgIHJldHVybiBpdGVtX3RhZ19hc3NvYwotCi0gICAg
ZGVmIGFwcGx5X2l0ZW1fdGFncyggc2VsZiwgdHJhbnMsIHVzZXIsIGl0ZW0sIHRhZ3Nfc3RyICk6
Ci0gICAgICAgICIiIkFwcGx5IHRhZ3MgdG8gYW4gaXRlbS4iIiIKLSAgICAgICAgIyBQYXJzZSB0
YWdzLgotICAgICAgICBwYXJzZWRfdGFncyA9M0Qgc2VsZi5wYXJzZV90YWdzKCB0YWdzX3N0ciAp
Ci0gICAgICAgICMgQXBwbHkgZWFjaCB0YWcuCi0gICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBw
YXJzZWRfdGFncy5pdGVtcygpOgotICAgICAgICAgICAgc2VsZi5hcHBseV9pdGVtX3RhZyggdHJh
bnMsIHVzZXIsIGl0ZW0sIG5hbWUsIHZhbHVlICkKLQotICAgIGRlZiBnZXRfdGFnc19zdHIoIHNl
bGYsIHRhZ3MgKToKLSAgICAgICAgIiIiQnVpbGQgYSBzdHJpbmcgZnJvbSBhbiBpdGVtJ3MgdGFn
cy4iIiIKLSAgICAgICAgIyBSZXR1cm4gZW1wdHkgc3RyaW5nIGlmIHRoZXJlIGFyZSBubyB0YWdz
LgotICAgICAgICBpZiBub3QgdGFnczoKLSAgICAgICAgICAgIHJldHVybiAiIgotICAgICAgICAj
IENyZWF0ZSBzdHJpbmcgb2YgdGFncy4KLSAgICAgICAgdGFnc19zdHJfbGlzdCA9M0QgbGlzdCgp
Ci0gICAgICAgIGZvciB0YWcgaW4gdGFnczoKLSAgICAgICAgICAgIHRhZ19zdHIgPTNEIHRhZy51
c2VyX3RuYW1lCi0gICAgICAgICAgICBpZiB0YWcudmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICAgICAgdGFnX3N0ciArPTNEICI6IiArIHRhZy51c2VyX3ZhbHVlCi0gICAgICAgICAgICB0
YWdzX3N0cl9saXN0LmFwcGVuZCggdGFnX3N0ciApCi0gICAgICAgIHJldHVybiAiLCAiLmpvaW4o
IHRhZ3Nfc3RyX2xpc3QgKQotCi0gICAgZGVmIGdldF90YWdfYnlfaWQoIHNlbGYsIHRyYW5zLCB0
YWdfaWQgKToKLSAgICAgICAgIiIiR2V0IGEgVGFnIG9iamVjdCBmcm9tIGEgdGFnIGlkLiIiIgot
ICAgICAgICByZXR1cm4gdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggdHJhbnMuYXBwLm1vZGVsLlRh
ZyApLmZpbHRlcl9ieSggaWQ9Cj0zRHRhZ19pZCApLmZpcnN0KCkKLQotICAgIGRlZiBnZXRfdGFn
X2J5X25hbWUoIHNlbGYsIHRyYW5zLCB0YWdfbmFtZSApOgotICAgICAgICAiIiJHZXQgYSBUYWcg
b2JqZWN0IGZyb20gYSB0YWcgbmFtZSAoc3RyaW5nKS4iIiIKLSAgICAgICAgaWYgdGFnX25hbWU6
Ci0gICAgICAgICAgICByZXR1cm4gdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggdHJhbnMuYXBwLm1v
ZGVsLlRhZyApLmZpbHRlcl9ieT0KKCBuYW1lPTNEdGFnX25hbWUubG93ZXIoKSApLmZpcnN0KCkK
LSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBfY3JlYXRlX3RhZyggc2VsZiwgdHJhbnMs
IHRhZ19zdHIgKToKLSAgICAgICAgIiIiQ3JlYXRlIGEgVGFnIG9iamVjdCBmcm9tIGEgdGFnIHN0
cmluZy4iIiIKLSAgICAgICAgdGFnX2hpZXJhcmNoeSA9M0QgdGFnX3N0ci5zcGxpdCggc2VsZi5o
aWVyYXJjaHlfc2VwYXJhdG9yICkKLSAgICAgICAgdGFnX3ByZWZpeCA9M0QgIiIKLSAgICAgICAg
cGFyZW50X3RhZyA9M0QgTm9uZQotICAgICAgICBmb3Igc3ViX3RhZyBpbiB0YWdfaGllcmFyY2h5
OgotICAgICAgICAgICAgIyBHZXQgb3IgY3JlYXRlIHN1YnRhZy4KLSAgICAgICAgICAgIHRhZ19u
YW1lID0zRCB0YWdfcHJlZml4ICsgc2VsZi5fc2NydWJfdGFnX25hbWUoIHN1Yl90YWcgKQotICAg
ICAgICAgICAgdGFnID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5hcHAubW9kZWwu
VGFnICkuZmlsdGVyX2I9CnkoIG5hbWU9M0R0YWdfbmFtZSkuZmlyc3QoKQotICAgICAgICAgICAg
aWYgbm90IHRhZzoKLSAgICAgICAgICAgICAgICB0YWcgPTNEIHRyYW5zLmFwcC5tb2RlbC5UYWco
IHR5cGU9M0QwLCBuYW1lPTNEdGFnX25hbWUgKQotICAgICAgICAgICAgIyBTZXQgdGFnIHBhcmVu
dC4KLSAgICAgICAgICAgIHRhZy5wYXJlbnQgPTNEIHBhcmVudF90YWcKLSAgICAgICAgICAgICMg
VXBkYXRlIHBhcmVudCBhbmQgdGFnIHByZWZpeC4KLSAgICAgICAgICAgIHBhcmVudF90YWcgPTNE
IHRhZwotICAgICAgICAgICAgdGFnX3ByZWZpeCA9M0QgdGFnLm5hbWUgKyBzZWxmLmhpZXJhcmNo
eV9zZXBhcmF0b3IKLSAgICAgICAgcmV0dXJuIHRhZwotCi0gICAgZGVmIF9nZXRfb3JfY3JlYXRl
X3RhZyggc2VsZiwgdHJhbnMsIHRhZ19zdHIgKToKLSAgICAgICAgIiIiR2V0IG9yIGNyZWF0ZSBh
IFRhZyBvYmplY3QgZnJvbSBhIHRhZyBzdHJpbmcuIiIiCi0gICAgICAgICMgU2NydWIgdGFnOyBp
ZiB0YWcgaXMgTm9uZSBhZnRlciBiZWluZyBzY3J1YmJlZCwgcmV0dXJuIE5vbmUuCi0gICAgICAg
IHNjcnViYmVkX3RhZ19zdHIgPTNEIHNlbGYuX3NjcnViX3RhZ19uYW1lKCB0YWdfc3RyICkKLSAg
ICAgICAgaWYgbm90IHNjcnViYmVkX3RhZ19zdHI6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQot
ICAgICAgICAjIEdldCBpdGVtIHRhZy4KLSAgICAgICAgdGFnID0zRCBzZWxmLmdldF90YWdfYnlf
bmFtZSggdHJhbnMsIHNjcnViYmVkX3RhZ19zdHIgKQotICAgICAgICAjIENyZWF0ZSB0YWcgaWYg
bmVjZXNzYXJ5LgotICAgICAgICBpZiB0YWcgaXMgTm9uZToKLSAgICAgICAgICAgIHRhZyA9M0Qg
c2VsZi5fY3JlYXRlX3RhZyggdHJhbnMsIHNjcnViYmVkX3RhZ19zdHIgKQotICAgICAgICByZXR1
cm4gdGFnCi0KLSAgICBkZWYgX2dldF9pdGVtX3RhZ19hc3NvYyggc2VsZiwgdXNlciwgaXRlbSwg
dGFnX25hbWUgKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiBJdGVtVGFnQXNzb2NpYXRp
b24gb2JqZWN0IGZvciBhIHVzZXIsIGl0ZW0sIGFuZCB0YWcgc3RyaW5nOz0KIHJldHVybnMgTm9u
ZSBpZiB0aGVyZSBpcwotICAgICAgICBubyBzdWNoIGFzc29jaWF0aW9uLgotICAgICAgICAiIiIK
LSAgICAgICAgc2NydWJiZWRfdGFnX25hbWUgPTNEIHNlbGYuX3NjcnViX3RhZ19uYW1lKCB0YWdf
bmFtZSApCi0gICAgICAgIGZvciBpdGVtX3RhZ19hc3NvYyBpbiBpdGVtLnRhZ3M6Ci0gICAgICAg
ICAgICBpZiAoIGl0ZW1fdGFnX2Fzc29jLnVzZXIgPTNEPTNEIHVzZXIgKSBhbmQgKCBpdGVtX3Rh
Z19hc3NvYy51cz0KZXJfdG5hbWUgPTNEPTNEIHNjcnViYmVkX3RhZ19uYW1lICk6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGl0ZW1fdGFnX2Fzc29jCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAg
ICBkZWYgcGFyc2VfdGFncyggc2VsZiwgdGFnX3N0ciApOgotICAgICAgICAiIiIKLSAgICAgICAg
UmV0dXJucyBhIGxpc3Qgb2YgcmF3ICh0YWctbmFtZSwgdmFsdWUpIHBhaXJzIGRlcml2ZWQgZnJv
bSBhIHN0cmluPQpnOyBtZXRob2Qgc2NydWJzIHRhZyBuYW1lcyBhbmQgdmFsdWVzIGFzIHdlbGwu
Ci0gICAgICAgIFJldHVybiB2YWx1ZSBpcyBhIGRpY3Rpb25hcnkgd2hlcmUgdGFnLW5hbWVzIGFy
ZSBrZXlzLgotICAgICAgICAiIiIKLSAgICAgICAgIyBHcmFjZWZ1bGx5IGhhbmRsZSBOb25lLgot
ICAgICAgICBpZiBub3QgdGFnX3N0cjoKLSAgICAgICAgICAgIHJldHVybiBkaWN0KCkKLSAgICAg
ICAgIyBTcGxpdCB0YWdzIGJhc2VkIG9uIHNlcGFyYXRvcnMuCi0gICAgICAgIHJlZ19leHAgPTNE
IHJlLmNvbXBpbGUoICdbJyArIHNlbGYudGFnX3NlcGFyYXRvcnMgKyAnXScgKQotICAgICAgICBy
YXdfdGFncyA9M0QgcmVnX2V4cC5zcGxpdCggdGFnX3N0ciApCi0gICAgICAgICMgRXh0cmFjdCBu
YW1lLXZhbHVlIHBhaXJzLgotICAgICAgICBuYW1lX3ZhbHVlX3BhaXJzID0zRCBkaWN0KCkKLSAg
ICAgICAgZm9yIHJhd190YWcgaW4gcmF3X3RhZ3M6Ci0gICAgICAgICAgICBudl9wYWlyID0zRCBz
ZWxmLl9nZXRfbmFtZV92YWx1ZV9wYWlyKCByYXdfdGFnICkKLSAgICAgICAgICAgIHNjcnViYmVk
X25hbWUgPTNEIHNlbGYuX3NjcnViX3RhZ19uYW1lKCBudl9wYWlyWzBdICkKLSAgICAgICAgICAg
IHNjcnViYmVkX3ZhbHVlID0zRCBzZWxmLl9zY3J1Yl90YWdfdmFsdWUoIG52X3BhaXJbMV0gKQot
ICAgICAgICAgICAgbmFtZV92YWx1ZV9wYWlyc1tzY3J1YmJlZF9uYW1lXSA9M0Qgc2NydWJiZWRf
dmFsdWUKLSAgICAgICAgcmV0dXJuIG5hbWVfdmFsdWVfcGFpcnMKLQotICAgIGRlZiBfc2NydWJf
dGFnX3ZhbHVlKCBzZWxmLCB2YWx1ZSApOgotICAgICAgICAiIiJTY3J1YiBhIHRhZyB2YWx1ZS4i
IiIKLSAgICAgICAgIyBHcmFjZWZ1bGx5IGhhbmRsZSBOb25lOgotICAgICAgICBpZiBub3QgdmFs
dWU6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAjIFJlbW92ZSB3aGl0ZXNwYWNl
IGZyb20gdmFsdWUuCi0gICAgICAgIHJlZ19leHAgPTNEIHJlLmNvbXBpbGUoICdccycgKQotICAg
ICAgICBzY3J1YmJlZF92YWx1ZSA9M0QgcmUuc3ViKCByZWdfZXhwLCAiIiwgdmFsdWUgKQotICAg
ICAgICByZXR1cm4gc2NydWJiZWRfdmFsdWUKLQotICAgIGRlZiBfc2NydWJfdGFnX25hbWUoIHNl
bGYsIG5hbWUgKToKLSAgICAgICAgIiIiU2NydWIgYSB0YWcgbmFtZS4iIiIKLSAgICAgICAgIyBH
cmFjZWZ1bGx5IGhhbmRsZSBOb25lOgotICAgICAgICBpZiBub3QgbmFtZToKLSAgICAgICAgICAg
IHJldHVybiBOb25lCi0gICAgICAgICMgUmVtb3ZlIHdoaXRlc3BhY2UgZnJvbSBuYW1lLgotICAg
ICAgICByZWdfZXhwID0zRCByZS5jb21waWxlKCAnXHMnICkKLSAgICAgICAgc2NydWJiZWRfbmFt
ZSA9M0QgcmUuc3ViKCByZWdfZXhwLCAiIiwgbmFtZSApCi0gICAgICAgICMgSWdub3JlIHN0YXJ0
aW5nICc6JyBjaGFyLgotICAgICAgICBpZiBzY3J1YmJlZF9uYW1lLnN0YXJ0c3dpdGgoIHNlbGYu
aGllcmFyY2h5X3NlcGFyYXRvciApOgotICAgICAgICAgICAgc2NydWJiZWRfbmFtZSA9M0Qgc2Ny
dWJiZWRfbmFtZVsxOl0KLSAgICAgICAgIyBJZiBuYW1lIGlzIHRvbyBzaG9ydCBvciB0b28gbG9u
ZywgcmV0dXJuIE5vbmUuCi0gICAgICAgIGlmIGxlbiggc2NydWJiZWRfbmFtZSApIDwgc2VsZi5t
aW5fdGFnX2xlbiBvciBsZW4oIHNjcnViYmVkX25hbWUgKT0KID4gc2VsZi5tYXhfdGFnX2xlbjoK
LSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBzY3J1YmJlZF9uYW1lCi0K
LSAgICBkZWYgX3NjcnViX3RhZ19uYW1lX2xpc3QoIHNlbGYsIHRhZ19uYW1lX2xpc3QgKToKLSAg
ICAgICAgIiIiU2NydWIgYSB0YWcgbmFtZSBsaXN0LiIiIgotICAgICAgICBzY3J1YmJlZF90YWdf
bGlzdCA9M0QgbGlzdCgpCi0gICAgICAgIGZvciB0YWcgaW4gdGFnX25hbWVfbGlzdDoKLSAgICAg
ICAgICAgIHNjcnViYmVkX3RhZ19saXN0LmFwcGVuZCggc2VsZi5fc2NydWJfdGFnX25hbWUoIHRh
ZyApICkKLSAgICAgICAgcmV0dXJuIHNjcnViYmVkX3RhZ19saXN0Ci0KLSAgICBkZWYgX2dldF9u
YW1lX3ZhbHVlX3BhaXIoIHNlbGYsIHRhZ19zdHIgKToKLSAgICAgICAgIiIiR2V0IG5hbWUsIHZh
bHVlIHBhaXIgZnJvbSBhIHRhZyBzdHJpbmcuIiIiCi0gICAgICAgICMgVXNlIHJlZ3VsYXIgZXhw
cmVzc2lvbiB0byBwYXJzZSBuYW1lLCB2YWx1ZS4KLSAgICAgICAgcmVnX2V4cCA9M0QgcmUuY29t
cGlsZSggIlsiICsgc2VsZi5rZXlfdmFsdWVfc2VwYXJhdG9ycyArICJdIiApCi0gICAgICAgIG5h
bWVfdmFsdWVfcGFpciA9M0QgcmVnX2V4cC5zcGxpdCggdGFnX3N0ciApCi0gICAgICAgICMgQWRk
IGVtcHR5IHNsb3QgaWYgdGFnIGRvZXMgbm90IGhhdmUgdmFsdWUuCi0gICAgICAgIGlmIGxlbigg
bmFtZV92YWx1ZV9wYWlyICkgPCAyOgotICAgICAgICAgICAgbmFtZV92YWx1ZV9wYWlyLmFwcGVu
ZCggTm9uZSApCi0gICAgICAgIHJldHVybiBuYW1lX3ZhbHVlX3BhaXIKLQotCi1jbGFzcyBHYWxh
eHlUYWdIYW5kbGVyKCBUYWdIYW5kbGVyICk6Ci0gICAgZGVmIF9faW5pdF9fKCBzZWxmICk6Ci0g
ICAgICAgIGZyb20gZ2FsYXh5IGltcG9ydCBtb2RlbAotICAgICAgICBUYWdIYW5kbGVyLl9faW5p
dF9fKCBzZWxmICkKLSAgICAgICAgc2VsZi5pdGVtX3RhZ19hc3NvY19pbmZvWyJIaXN0b3J5Il0g
PTNEIEl0ZW1UYWdBc3NvY0luZm8oIG1vZGVsLkhpPQpzdG9yeSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbC5IaXN0
PQpvcnlUYWdBc3NvY2lhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbC5IaXN0PQpvcnlUYWdBc3NvY2lhdGlv
bi50YWJsZS5jLmhpc3RvcnlfaWQgKQotICAgICAgICBzZWxmLml0ZW1fdGFnX2Fzc29jX2luZm9b
Ikhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb24iXSA9M0QgXAotICAgICAgICAgICAgSXRlbVRhZ0Fz
c29jSW5mbyggbW9kZWwuSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1vZGVsLkhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb25UYWdBc3NvY2lh
dGlvPQpuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwuSGlzdG9yeURhdGFz
ZXRBc3NvY2lhdGlvblRhZ0Fzc29jaWF0aW89Cm4udGFibGUuYy5oaXN0b3J5X2RhdGFzZXRfYXNz
b2NpYXRpb25faWQgKQotICAgICAgICBzZWxmLml0ZW1fdGFnX2Fzc29jX2luZm9bIlBhZ2UiXSA9
M0QgSXRlbVRhZ0Fzc29jSW5mbyggbW9kZWwuUGFnZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbC5QYWdlVGFnPQpBc3Nv
Y2lhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtb2RlbC5QYWdlVGFnPQpBc3NvY2lhdGlvbi50YWJsZS5jLnBhZ2VfaWQg
KQotICAgICAgICBzZWxmLml0ZW1fdGFnX2Fzc29jX2luZm9bIlN0b3JlZFdvcmtmbG93Il0gPTNE
IEl0ZW1UYWdBc3NvY0luZm8oIG09Cm9kZWwuU3RvcmVkV29ya2Zsb3csCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1vZD0KZWwuU3RvcmVkV29ya2Zsb3dUYWdBc3NvY2lhdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9k
PQplbC5TdG9yZWRXb3JrZmxvd1RhZ0Fzc29jaWF0aW9uLnRhYmxlLmMuc3RvcmVkX3dvcmtmbG93
X2lkICkKLSAgICAgICAgc2VsZi5pdGVtX3RhZ19hc3NvY19pbmZvWyJWaXN1YWxpemF0aW9uIl0g
PTNEIEl0ZW1UYWdBc3NvY0luZm8oIG1vPQpkZWwuVmlzdWFsaXphdGlvbiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtb2RlPQpsLlZpc3VhbGl6YXRpb25UYWdBc3NvY2lhdGlvbiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2Rl
PQpsLlZpc3VhbGl6YXRpb25UYWdBc3NvY2lhdGlvbi50YWJsZS5jLnZpc3VhbGl6YXRpb25faWQg
KQotCi0KLWNsYXNzIENvbW11bml0eVRhZ0hhbmRsZXIoIFRhZ0hhbmRsZXIgKToKLSAgICBkZWYg
X19pbml0X18oIHNlbGYgKToKLSAgICAgICAgZnJvbSBnYWxheHkud2ViYXBwcy50b29sX3NoZWQg
aW1wb3J0IG1vZGVsCi0gICAgICAgIFRhZ0hhbmRsZXIuX19pbml0X18oIHNlbGYgKQoKZGlmZiAt
ciA4ZWI2ZDhiMGJmMTBhZDFhZDViNjlmOWRhODdkOGQwMDkzYjk3MmYxIC1yIDA5NDIwNWI0NTFh
YWNlZjc3N2MwYWYyPQowMDU0MmE2YzgxZWIzZWYwYyBsaWIvZ2FsYXh5L3Rvb2xzL2Vycm9ycy5w
eQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xzL2Vycm9ycy5weQorKysgYi9saWIvZ2FsYXh5L3Rvb2xz
L2Vycm9ycy5weQpAQCAtODYsNyArODYsNyBAQAogICAgICAgICBpZiB1c2VyIGFuZCB1c2VyLmVt
YWlsICE9M0QgZW1haWw6CiAgICAgICAgICAgICBlbWFpbF9zdHIgPTNEICInJXMnIChwcm92aWRp
bmcgcHJlZmVycmVkIGNvbnRhY3QgZW1haWwgJyVzJykiID0KJSAodXNlci5lbWFpbCwgZW1haWwp
CiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBlbWFpbF9zdHIgPTNEICInJXMnIiAlIGVtYWls
CisgICAgICAgICAgICBlbWFpbF9zdHIgPTNEICInJXMnIiAlIChlbWFpbCBvciAnYW5vbnltb3Vz
bHknKQogICAgICAgICBzZWxmLnJlcG9ydCA9M0Qgc3RyaW5nLlRlbXBsYXRlKCBlcnJvcl9yZXBv
cnRfdGVtcGxhdGUgKSBcCiAgICAgICAgICAgICAuc2FmZV9zdWJzdGl0dXRlKCBob3N0PTNEaG9z
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFzZXRfaWQ9M0RoZGEuZGF0YXNl
dF9pZCwKCmRpZmYgLXIgOGViNmQ4YjBiZjEwYWQxYWQ1YjY5ZjlkYTg3ZDhkMDA5M2I5NzJmMSAt
ciAwOTQyMDViNDUxYWFjZWY3NzdjMGFmMj0KMDA1NDJhNmM4MWViM2VmMGMgbGliL2dhbGF4eS93
ZWIvYmFzZS9jb250cm9sbGVyLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViL2Jhc2UvY29udHJvbGxl
ci5weQorKysgYi9saWIvZ2FsYXh5L3dlYi9iYXNlL2NvbnRyb2xsZXIucHkKQEAgLTIyMjIsOCAr
MjIyMiw4IEBACj0yMAogICAgIGRlZiBzZXRfdGFnc19mcm9tX2xpc3QoIHNlbGYsIHRyYW5zLCBp
dGVtLCBuZXdfdGFnc19saXN0LCB1c2VyPTNETm9uZSA9Cik6CiAgICAgICAgICMgTWV0aG9kIGRl
cHJlY2F0ZWQgLSB0cnkgdG8gdXNlIFRhZ3NIYW5kbGVyIGluc3RlYWQuCi0gICAgICAgIHRhZ3Nf
bWFuYWdlciA9M0QgdGFncy5UYWdzTWFuYWdlciggdHJhbnMuYXBwICkKLSAgICAgICAgcmV0dXJu
IHRhZ3NfbWFuYWdlci5zZXRfdGFnc19mcm9tX2xpc3QoIHRyYW5zLCBpdGVtLCBuZXdfdGFnc19s
aXN0PQosIHVzZXI9M0R1c2VyICkKKyAgICAgICAgdGFnc19tYW5hZ2VyID0zRCB0YWdzLkdhbGF4
eVRhZ01hbmFnZXIoIHRyYW5zLmFwcCApCisgICAgICAgIHJldHVybiB0YWdzX21hbmFnZXIuc2V0
X3RhZ3NfZnJvbV9saXN0KCB1c2VyLCBpdGVtLCBuZXdfdGFnc19saXN0ICkKPTIwCiAgICAgZGVm
IGdldF91c2VyX3RhZ3NfdXNlZCggc2VsZiwgdHJhbnMsIHVzZXI9M0ROb25lICk6CiAgICAgICAg
ICIiIgoKZGlmZiAtciA4ZWI2ZDhiMGJmMTBhZDFhZDViNjlmOWRhODdkOGQwMDkzYjk3MmYxIC1y
IDA5NDIwNWI0NTFhYWNlZjc3N2MwYWYyPQowMDU0MmE2YzgxZWIzZWYwYyBsaWIvZ2FsYXh5L3dl
YmFwcHMvdG9vbF9zaGVkL2FwcC5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvdG9vbF9zaGVk
L2FwcC5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvdG9vbF9zaGVkL2FwcC5weQpAQCAtOCw3
ICs4LDcgQEAKIGZyb20gZ2FsYXh5Lm9wZW5pZC5wcm92aWRlcnMgaW1wb3J0IE9wZW5JRFByb3Zp
ZGVycwogZnJvbSBnYWxheHkudXRpbC5kYmtleXMgaW1wb3J0IEdlbm9tZUJ1aWxkcwogZnJvbSBn
YWxheHkud2ViIGltcG9ydCBzZWN1cml0eQotZnJvbSBnYWxheHkudGFncy50YWdfaGFuZGxlciBp
bXBvcnQgQ29tbXVuaXR5VGFnSGFuZGxlcgorZnJvbSBnYWxheHkubWFuYWdlcnMudGFncyBpbXBv
cnQgQ29tbXVuaXR5VGFnTWFuYWdlcgogZnJvbSB0b29sX3NoZWQuZ3JpZHMucmVwb3NpdG9yeV9n
cmlkX2ZpbHRlcl9tYW5hZ2VyIGltcG9ydCBSZXBvc2l0b3J5R3JpZEY9CmlsdGVyTWFuYWdlcgog
aW1wb3J0IHRvb2xfc2hlZC5yZXBvc2l0b3J5X3JlZ2lzdHJ5CiBpbXBvcnQgdG9vbF9zaGVkLnJl
cG9zaXRvcnlfdHlwZXMucmVnaXN0cnkKQEAgLTQ0LDEwICs0NCwxMCBAQAogICAgICAgICBzZWxm
Lm1vZGVsID0zRCBtYXBwaW5nLmluaXQoIHNlbGYuY29uZmlnLmZpbGVfcGF0aCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJfdXJsLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLmNvbmZpZy5kYXRhYmFzZV9lbmdpbmVfb3B0aW9ucyApCi0gICAg
ICAgICMgSW5pdGlhbGl6ZSB0aGUgVG9vbCBTSGVkIHNlY3VyaXR5IGhlbHBlci4KKyAgICAgICAg
IyBJbml0aWFsaXplIHRoZSBUb29sIFNoZWQgc2VjdXJpdHkgaGVscGVyLgogICAgICAgICBzZWxm
LnNlY3VyaXR5ID0zRCBzZWN1cml0eS5TZWN1cml0eUhlbHBlciggaWRfc2VjcmV0PTNEc2VsZi5j
b25maWc9Ci5pZF9zZWNyZXQgKQogICAgICAgICAjIGluaXRpYWxpemUgdGhlIFRvb2wgU2hlZCB0
YWcgaGFuZGxlci4KLSAgICAgICAgc2VsZi50YWdfaGFuZGxlciA9M0QgQ29tbXVuaXR5VGFnSGFu
ZGxlcigpCisgICAgICAgIHNlbGYudGFnX2hhbmRsZXIgPTNEIENvbW11bml0eVRhZ01hbmFnZXIo
IHNlbGYgKQogICAgICAgICAjIEluaXRpYWxpemUgdGhlIFRvb2wgU2hlZCB0b29sIGRhdGEgdGFi
bGVzLiAgTmV2ZXIgcGFzcyBhIGNvbmZpZ3U9CnJhdGlvbiBmaWxlIGhlcmUKICAgICAgICAgIyBi
ZWNhdXNlIHRoZSBUb29sIFNoZWQgc2hvdWxkIGFsd2F5cyBoYXZlIGFuIGVtcHR5IGRpY3Rpb25h
cnkhCiAgICAgICAgIHNlbGYudG9vbF9kYXRhX3RhYmxlcyA9M0QgZ2FsYXh5LnRvb2xzLmRhdGEu
VG9vbERhdGFUYWJsZU1hbmFnZXIoID0Kc2VsZi5jb25maWcudG9vbF9kYXRhX3BhdGggKQoKCmh0
dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy84MzQ5Yjhi
Yjk5NmQvCkNoYW5nZXNldDogICA4MzQ5YjhiYjk5NmQKVXNlcjogICAgICAgIGNhcmxmZWJlcmhh
cmQKRGF0ZTogICAgICAgIDIwMTUtMDEtMDggMTc6NDA6MzQrMDA6MDAKU3VtbWFyeTogICAgIE1l
cmdlZCBnYWxheHkvZ2FsYXh5LWNlbnRyYWwgaW50byBkZWZhdWx0CkFmZmVjdGVkICM6ICA4IGZp
bGVzCgpkaWZmIC1yIDA5NDIwNWI0NTFhYWNlZjc3N2MwYWYyMDA1NDJhNmM4MWViM2VmMGMgLXIg
ODM0OWI4YmI5OTZkZDgyYmVmZWFlMDI9CmRjZTcwYTZlNTA2NGQwY2FmIGxpYi9nYWxheHkvdG9v
bHMvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS90b29scy9fX2luaXRfXy5weQorKysgYi9s
aWIvZ2FsYXh5L3Rvb2xzL19faW5pdF9fLnB5CkBAIC0xODQzLDcgKzE4NDMsOCBAQAogICAgICAg
ICAiIiJSZXR1cm4gYSBsaXN0IG9mIGNvbW1hbmRzIHRvIGJlIHJ1biB0byBwb3B1bGF0ZSB0aGUg
Y3VycmVudCBlbnY9Cmlyb25tZW50IHRvIGluY2x1ZGUgdGhpcyB0b29scyByZXF1aXJlbWVudHMu
IiIiCiAgICAgICAgIHJldHVybiBzZWxmLmFwcC50b29sYm94LmRlcGVuZGVuY3lfbWFuYWdlci5k
ZXBlbmRlbmN5X3NoZWxsX2NvbW1hbj0KZHMoCiAgICAgICAgICAgICBzZWxmLnJlcXVpcmVtZW50
cywKLSAgICAgICAgICAgIGluc3RhbGxlZF90b29sX2RlcGVuZGVuY2llcz0zRHNlbGYuaW5zdGFs
bGVkX3Rvb2xfZGVwZW5kZW5jaWVzCisgICAgICAgICAgICBpbnN0YWxsZWRfdG9vbF9kZXBlbmRl
bmNpZXM9M0RzZWxmLmluc3RhbGxlZF90b29sX2RlcGVuZGVuY2llcywKKyAgICAgICAgICAgIHRv
b2xfZGlyPTNEc2VsZi50b29sX2RpciwKICAgICAgICAgKQo9MjAKICAgICBAcHJvcGVydHkKCmRp
ZmYgLXIgMDk0MjA1YjQ1MWFhY2VmNzc3YzBhZjIwMDU0MmE2YzgxZWIzZWYwYyAtciA4MzQ5Yjhi
Yjk5NmRkODJiZWZlYWUwMj0KZGNlNzBhNmU1MDY0ZDBjYWYgbGliL2dhbGF4eS90b29scy9kZXBz
L2JyZXdfZXh0cy5weQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xzL2RlcHMvYnJld19leHRzLnB5Cisr
KyBiL2xpYi9nYWxheHkvdG9vbHMvZGVwcy9icmV3X2V4dHMucHkKQEAgLTI4LDYgKzI4LDcgQEAK
IGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCitpbXBvcnQgc3RyaW5nCiBpbXBvcnQg
c3VicHJvY2Vzcwo9MjAKIFdISVRFU1BBQ0VfUEFUVEVSTiA9M0QgcmUuY29tcGlsZSgiW1xzXSsi
KQpAQCAtNDMsNiArNDQsNyBAQAogQ0FOTk9UX0RFVEVSTUlORV9UQVBfRVJST1JfTUVTU0FHRSA9
M0QgIkNhbm5vdCBkZXRlcm1pbmUgdGFwIG9mIHNwZWNpZmllZCA9CnJlY2lwZSAtIHBsZWFzZSB1
c2UgZnVsbHkgcXVhbGlmaWVkIHJlY2lwZSAoZS5nLiBob21lYnJldy9zY2llbmNlL3NhbXRvb2xz
KT0KLiIKIFZFUkJPU0UgPTNEIEZhbHNlCiBSRUxBWEVEID0zRCBGYWxzZQorQlJFV19BUkdTID0z
RCBbXQo9MjAKPTIwCiBjbGFzcyBCcmV3Q29udGV4dChvYmplY3QpOgpAQCAtMTA0LDYgKzEwNiw3
IEBACiBkZWYgbWFpbigpOgogICAgIGdsb2JhbCBWRVJCT1NFCiAgICAgZ2xvYmFsIFJFTEFYRUQK
KyAgICBnbG9iYWwgQlJFV19BUkdTCiAgICAgcGFyc2VyID0zRCBhcmdwYXJzZS5Bcmd1bWVudFBh
cnNlcihkZXNjcmlwdGlvbj0zRERFU0NSSVBUSU9OKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
Ii0tYnJldyIsIGhlbHA9M0QiUGF0aCB0byBsaW51eGJyZXcgJ2JyZXcnIGV4ZWN1dGE9CmJsZSB0
byB0YXJnZXQiKQogICAgIGFjdGlvbnMgPTNEIFsidmluc3RhbGwiLCAidnVuaW5zdGFsbCIsICJ2
ZGVwcyIsICJ2aW5mbyIsICJlbnYiXQpAQCAtMTE0LDExICsxMTcsMTMgQEAKICAgICBwYXJzZXIu
YWRkX2FyZ3VtZW50KCd2ZXJzaW9uJywgbWV0YXZhcj0zRCd2ZXJzaW9uJywgaGVscD0zRCJWZXJz
aW9uIGZvPQpyIGFjdGlvbiAoZS5nLiAwLjEuMTkpLiIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgnLS1yZWxheGVkJywgYWN0aW9uPTNEJ3N0b3JlX3RydWUnLCBoZWxwPTNEIlJlbGF4ZT0KZCBw
cm9jZXNzaW5nIC0gZm9yIGluc3RhbmNlIGFsbG93IHVzZSBvZiBlbnYgb24gbm9uLXZpbnN0YWxs
LWVkIHJlY2lwZXMuIikKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXZlcmJvc2UnLCBhY3Rp
b249M0Qnc3RvcmVfdHJ1ZScsIGhlbHA9M0QiVmVyYm9zPQplIG91dHB1dCIpCisgICAgcGFyc2Vy
LmFkZF9hcmd1bWVudCgncmVzdGFyZ3MnLCBuYXJncz0zRGFyZ3BhcnNlLlJFTUFJTkRFUikKICAg
ICBhcmdzID0zRCBwYXJzZXIucGFyc2VfYXJncygpCiAgICAgaWYgYXJncy52ZXJib3NlOgogICAg
ICAgICBWRVJCT1NFID0zRCBUcnVlCiAgICAgaWYgYXJncy5yZWxheGVkOgogICAgICAgICBSRUxB
WEVEID0zRCBUcnVlCisgICAgQlJFV19BUkdTID0zRCBhcmdzLnJlc3RhcmdzCiAgICAgaWYgbm90
IGFjdGlvbjoKICAgICAgICAgYWN0aW9uID0zRCBhcmdzLmFjdGlvbgogICAgIGJyZXdfY29udGV4
dCA9M0QgQnJld0NvbnRleHQoYXJncykKQEAgLTE1OSw3ICsxNjQsNyBAQAogICAgICAgICByZXR1
cm4gc2VsZi5tZXNzYWdlCj0yMAo9MjAKLWRlZiB2ZXJzaW9uZWRfaW5zdGFsbChyZWNpcGVfY29u
dGV4dCwgcGFja2FnZT0zRE5vbmUsIHZlcnNpb249M0ROb25lKToKK2RlZiB2ZXJzaW9uZWRfaW5z
dGFsbChyZWNpcGVfY29udGV4dCwgcGFja2FnZT0zRE5vbmUsIHZlcnNpb249M0ROb25lLCBpbnN0
PQphbGxlZF9kZXBzPTNEW10pOgogICAgIGlmIHBhY2thZ2UgaXMgTm9uZToKICAgICAgICAgcGFj
a2FnZSA9M0QgcmVjaXBlX2NvbnRleHQucmVjaXBlCiAgICAgICAgIHZlcnNpb24gPTNEIHJlY2lw
ZV9jb250ZXh0LnZlcnNpb24KQEAgLTE3NiwxMCArMTgxLDE1IEBACiAgICAgICAgICAgICB2ZXJz
aW9uZWQgPTNEIHZlcnNpb25faW5mb1syXQogICAgICAgICAgICAgaWYgdmVyc2lvbmVkOgogICAg
ICAgICAgICAgICAgIGRlcF90b192ZXJzaW9uW2RlcF0gPTNEIGRlcF92ZXJzaW9uCisgICAgICAg
ICAgICAgICAgaWYgZGVwIGluIGluc3RhbGxlZF9kZXBzOgorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQogICAgICAgICAgICAgICAgIHZlcnNpb25lZF9pbnN0YWxsKHJlY2lwZV9jb250ZXh0
LCBkZXAsIGRlcF92ZXJzaW9uKQorICAgICAgICAgICAgICAgIGluc3RhbGxlZF9kZXBzLmFwcGVu
ZChkZXApCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgSW5zdGFsbCBsYXRl
c3QuCiAgICAgICAgICAgICAgICAgZGVwX3RvX3ZlcnNpb25bZGVwXSA9M0QgTm9uZQorICAgICAg
ICAgICAgICAgIGlmIGRlcCBpbiBpbnN0YWxsZWRfZGVwczoKKyAgICAgICAgICAgICAgICAgICAg
Y29udGludWUKICAgICAgICAgICAgICAgICB1bnZlcnNpb25lZF9pbnN0YWxsKGRlcCkKICAgICAg
ICAgdHJ5OgogICAgICAgICAgICAgZm9yIGRlcCBpbiBkZXBzOgpAQCAtMTk4LDcgKzIwOCwxNiBA
QAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkZXBzX21ldGFkYXRhLmFwcGVu
ZChkZXBfbWV0YWRhdGEpCj0yMAotICAgICAgICAgICAgYnJld19leGVjdXRlKFsiaW5zdGFsbCIs
IHBhY2thZ2VdKQorICAgICAgICAgICAgY2VsbGFyX3Jvb3QgPTNEIHJlY2lwZV9jb250ZXh0LmJy
ZXdfY29udGV4dC5ob21lYnJld19jZWxsYXIKKyAgICAgICAgICAgIGNlbGxhcl9wYXRoID0zRCBy
ZWNpcGVfY29udGV4dC5jZWxsYXJfcGF0aAorICAgICAgICAgICAgZW52X2FjdGlvbnMgPTNEIGJ1
aWxkX2Vudl9hY3Rpb25zKGRlcHNfbWV0YWRhdGEsIGNlbGxhcl9yb290LCA9CmNlbGxhcl9wYXRo
LCBjdXN0b21fb25seT0zRFRydWUpCisgICAgICAgICAgICBlbnYgPTNEIEVudkFjdGlvbi5idWls
ZF9lbnYoZW52X2FjdGlvbnMpCisgICAgICAgICAgICBhcmdzID0zRCBbImluc3RhbGwiXQorICAg
ICAgICAgICAgaWYgVkVSQk9TRToKKyAgICAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS12ZXJi
b3NlIikKKyAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKEJSRVdfQVJHUykKKyAgICAgICAgICAgIGFy
Z3MuYXBwZW5kKHBhY2thZ2UpCisgICAgICAgICAgICBicmV3X2V4ZWN1dGUoYXJncywgZW52PTNE
ZW52KQogICAgICAgICAgICAgZGVwcyA9M0QgYnJld19leGVjdXRlKFsiZGVwcyIsIHBhY2thZ2Vd
KQogICAgICAgICAgICAgZGVwcyA9M0QgW2Quc3RyaXAoKSBmb3IgZCBpbiBkZXBzLnNwbGl0KCJc
biIpIGlmIGRdCiAgICAgICAgICAgICBtZXRhZGF0YSA9M0QgewpAQCAtMjc4LDEwICsyOTcsMTAg
QEAKICAgICAgICAgcGFzcwo9MjAKPTIwCi1kZWYgYnJld19leGVjdXRlKGFyZ3MpOgorZGVmIGJy
ZXdfZXhlY3V0ZShhcmdzLCBlbnY9M0ROb25lKToKICAgICBvcy5lbnZpcm9uWyJIT01FQlJFV19O
T19FTU9KSSJdID0zRCAiMSIgICMgc2ltcGxpZnkgYnJldyBwYXJzaW5nLgogICAgIGNtZHMgPTNE
IFsiYnJldyJdICsgYXJncwotICAgIHJldHVybiBleGVjdXRlKGNtZHMpCisgICAgcmV0dXJuIGV4
ZWN1dGUoY21kcywgZW52PTNEZW52KQo9MjAKPTIwCiBkZWYgYnVpbGRfZW52X3N0YXRlbWVudHNf
ZnJvbV9yZWNpcGVfY29udGV4dChyZWNpcGVfY29udGV4dCwgKiprd2RzKToKQEAgLTI5MCwxMSAr
MzA5LDIwIEBACiAgICAgcmV0dXJuIGVudl9zdGF0ZW1lbnRzCj0yMAo9MjAKLWRlZiBidWlsZF9l
bnZfc3RhdGVtZW50cyhjZWxsYXJfcm9vdCwgY2VsbGFyX3BhdGgsIHJlbGF4ZWQ9M0ROb25lKToK
K2RlZiBidWlsZF9lbnZfc3RhdGVtZW50cyhjZWxsYXJfcm9vdCwgY2VsbGFyX3BhdGgsIHJlbGF4
ZWQ9M0ROb25lLCBjdXN0b21fPQpvbmx5PTNERmFsc2UpOgogICAgIGRlcHMgPTNEIGxvYWRfdmVy
c2lvbmVkX2RlcHMoY2VsbGFyX3BhdGgsIHJlbGF4ZWQ9M0RyZWxheGVkKQorICAgIGFjdGlvbnMg
PTNEIGJ1aWxkX2Vudl9hY3Rpb25zKGRlcHMsIGNlbGxhcl9yb290LCBjZWxsYXJfcGF0aCwgcmVs
YXhlZCw9CiBjdXN0b21fb25seSkKKyAgICBlbnZfc3RhdGVtZW50cyA9M0QgW10KKyAgICBmb3Ig
YWN0aW9uIGluIGFjdGlvbnM6CisgICAgICAgIGVudl9zdGF0ZW1lbnRzLmV4dGVuZChhY3Rpb24u
dG9fc3RhdGVtZW50cygpKQorICAgIHJldHVybiAiXG4iLmpvaW4oZW52X3N0YXRlbWVudHMpCisK
KworZGVmIGJ1aWxkX2Vudl9hY3Rpb25zKGRlcHMsIGNlbGxhcl9yb290LCBjZWxsYXJfcGF0aCwg
cmVsYXhlZD0zRE5vbmUsIGN1c3Q9Cm9tX29ubHk9M0RGYWxzZSk6Cj0yMAogICAgIHBhdGhfYXBw
ZW5kcyA9M0QgW10KICAgICBsZF9wYXRoX2FwcGVuZHMgPTNEIFtdCisgICAgYWN0aW9ucyA9M0Qg
W10KPTIwCiAgICAgZGVmIGhhbmRsZV9rZWcoY2VsbGFyX3BhdGgpOgogICAgICAgICBiaW5fcGF0
aCA9M0Qgb3MucGF0aC5qb2luKGNlbGxhcl9wYXRoLCAiYmluIikKQEAgLTMwMyw2ICszMzEsMTQg
QEAKICAgICAgICAgbGliX3BhdGggPTNEIG9zLnBhdGguam9pbihjZWxsYXJfcGF0aCwgImxpYiIp
CiAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIobGliX3BhdGgpOgogICAgICAgICAgICAgbGRfcGF0
aF9hcHBlbmRzLmFwcGVuZChsaWJfcGF0aCkKKyAgICAgICAgZW52X3BhdGggPTNEIG9zLnBhdGgu
am9pbihjZWxsYXJfcGF0aCwgInBsYXRmb3JtX2Vudmlyb25tZW50Lmpzb24iKQorICAgICAgICBp
ZiBvcy5wYXRoLmV4aXN0cyhlbnZfcGF0aCk6CisgICAgICAgICAgICB3aXRoIG9wZW4oZW52X3Bh
dGgsICJyIikgYXMgZjoKKyAgICAgICAgICAgICAgICBlbnZfbWV0YWRhdGEgPTNEIGpzb24ubG9h
ZChmKQorICAgICAgICAgICAgICAgIGlmICJhY3Rpb25zIiBpbiBlbnZfbWV0YWRhdGE6CisgICAg
ICAgICAgICAgICAgICAgIGRlZiB0b19hY3Rpb24oZGVzYyk6CisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gRW52QWN0aW9uKGNlbGxhcl9wYXRoLCBkZXNjKQorICAgICAgICAgICAgICAg
ICAgICBhY3Rpb25zLmV4dGVuZChtYXAodG9fYWN0aW9uLCBlbnZfbWV0YWRhdGFbImFjdGlvbnMi
XSkpCj0yMAogICAgIGZvciBkZXAgaW4gZGVwczoKICAgICAgICAgcGFja2FnZSA9M0QgZGVwWydu
YW1lJ10KQEAgLTMxMSwxNCArMzQ3LDU0IEBACiAgICAgICAgIGhhbmRsZV9rZWcoIGRlcF9jZWxs
YXJfcGF0aCApCj0yMAogICAgIGhhbmRsZV9rZWcoIGNlbGxhcl9wYXRoICkKLSAgICBlbnZfc3Rh
dGVtZW50cyA9M0QgW10KLSAgICBpZiBwYXRoX2FwcGVuZHM6Ci0gICAgICAgIGVudl9zdGF0ZW1l
bnRzLmFwcGVuZCgiUEFUSD0zRCIgKyAiOiIuam9pbihwYXRoX2FwcGVuZHMpICsgIjokUEFUSD0K
IikKLSAgICAgICAgZW52X3N0YXRlbWVudHMuYXBwZW5kKCJleHBvcnQgUEFUSCIpCi0gICAgaWYg
bGRfcGF0aF9hcHBlbmRzOgotICAgICAgICBlbnZfc3RhdGVtZW50cy5hcHBlbmQoIkxEX0xJQlJB
UllfUEFUSD0zRCIgKyAiOiIuam9pbihsZF9wYXRoX2FwcGU9Cm5kcykgKyAiOiRMRF9MSUJSQVJZ
X1BBVEgiKQotICAgICAgICBlbnZfc3RhdGVtZW50cy5hcHBlbmQoImV4cG9ydCBMRF9MSUJSQVJZ
X1BBVEgiKQotICAgIHJldHVybiAiXG4iLmpvaW4oZW52X3N0YXRlbWVudHMpCisgICAgaWYgbm90
IGN1c3RvbV9vbmx5OgorICAgICAgICBpZiBwYXRoX2FwcGVuZHM6CisgICAgICAgICAgICBhY3Rp
b25zLmFwcGVuZChFbnZBY3Rpb24oY2VsbGFyX3BhdGgsIHsiYWN0aW9uIjogInByZXBlbmQiLCAi
dj0KYXJpYWJsZSI6ICJQQVRIIiwgInZhbHVlIjogIjoiLmpvaW4ocGF0aF9hcHBlbmRzKX0pKQor
ICAgICAgICBpZiBsZF9wYXRoX2FwcGVuZHM6CisgICAgICAgICAgICBhY3Rpb25zLmFwcGVuZChF
bnZBY3Rpb24oY2VsbGFyX3BhdGgsIHsiYWN0aW9uIjogInByZXBlbmQiLCAidj0KYXJpYWJsZSI6
ICJMRF9MSUJSQVJZX1BBVEgiLCAidmFsdWUiOiAiOiIuam9pbihwYXRoX2FwcGVuZHMpfSkpCisg
ICAgcmV0dXJuIGFjdGlvbnMKKworCitjbGFzcyBFbnZBY3Rpb24ob2JqZWN0KToKKworICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBrZWdfcm9vdCwgYWN0aW9uX2Rlc2NyaXB0aW9uKToKKyAgICAgICAg
c2VsZi52YXJpYWJsZSA9M0QgYWN0aW9uX2Rlc2NyaXB0aW9uWyJ2YXJpYWJsZSJdCisgICAgICAg
IHNlbGYuYWN0aW9uID0zRCBhY3Rpb25fZGVzY3JpcHRpb25bImFjdGlvbiJdCisgICAgICAgIHNl
bGYudmFsdWUgPTNEIHN0cmluZy5UZW1wbGF0ZShhY3Rpb25fZGVzY3JpcHRpb25bInZhbHVlIl0p
LnNhZmVfcz0KdWJzdGl0dXRlKHsKKyAgICAgICAgICAgICdLRUdfUk9PVCc6IGtlZ19yb290LAor
ICAgICAgICB9KQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBidWlsZF9lbnYoZW52X2Fj
dGlvbnMpOgorICAgICAgICBuZXdfZW52ID0zRCBvcy5lbnZpcm9uLmNvcHkoKQorICAgICAgICBt
YXAobGFtYmRhIGVudl9hY3Rpb246IGVudl9hY3Rpb24ubW9kaWZ5X2Vudmlyb24obmV3X2Vudiks
IGVudl9hY3Q9CmlvbnMpCisgICAgICAgIHJldHVybiBuZXdfZW52CisKKyAgICBkZWYgbW9kaWZ5
X2Vudmlyb24oc2VsZiwgZW52aXJvbik6CisgICAgICAgIGlmIHNlbGYuYWN0aW9uID0zRD0zRCAi
c2V0IiBvciBub3QgZW52aXJvbi5nZXQoc2VsZi52YXJpYWJsZSwgIiIpOgorICAgICAgICAgICAg
ZW52aXJvbltzZWxmLnZhcmlhYmxlXSA9M0Qgc2VsZi5fX2V2YWwoIiR7dmFsdWV9IikKKyAgICAg
ICAgZWxpZiBzZWxmLmFjdGlvbiA9M0Q9M0QgInByZXBlbmQiOgorICAgICAgICAgICAgZW52aXJv
bltzZWxmLnZhcmlhYmxlXSA9M0Qgc2VsZi5fX2V2YWwoIiR7dmFsdWV9OiVzIiAlIGVudmlyb249
CltzZWxmLnZhcmlhYmxlXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVudmlyb25bc2Vs
Zi52YXJpYWJsZV0gPTNEIHNlbGYuX19ldmFsKCIlczoke3ZhbHVlfSIgJSBlbnZpcm9uPQpbc2Vs
Zi52YXJpYWJsZV0pCisKKyAgICBkZWYgX19ldmFsKHNlbGYsIHRlbXBsYXRlKToKKyAgICAgICAg
cmV0dXJuIHN0cmluZy5UZW1wbGF0ZSh0ZW1wbGF0ZSkuc2FmZV9zdWJzdGl0dXRlKAorICAgICAg
ICAgICAgdmFyaWFibGU9M0RzZWxmLnZhcmlhYmxlLAorICAgICAgICAgICAgdmFsdWU9M0RzZWxm
LnZhbHVlLAorICAgICAgICApCisKKyAgICBkZWYgdG9fc3RhdGVtZW50cyhzZWxmKToKKyAgICAg
ICAgaWYgc2VsZi5hY3Rpb24gPTNEPTNEICJzZXQiOgorICAgICAgICAgICAgdGVtcGxhdGUgPTNE
ICcnJyR7dmFyaWFibGV9PTNEIiR7dmFsdWV9IicnJworICAgICAgICBlbGlmIHNlbGYuYWN0aW9u
ID0zRD0zRCAicHJlcGVuZCI6CisgICAgICAgICAgICB0ZW1wbGF0ZSA9M0QgJycnJHt2YXJpYWJs
ZX09M0QiJHt2YWx1ZX06JCQke3ZhcmlhYmxlfSInJycKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHRlbXBsYXRlID0zRCAnJycke3ZhcmlhYmxlfT0zRCIkJCR7dmFyaWFibGV9OiR7dmFsdWV9
IicnJworICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgc2VsZi5fX2V2YWwodGVtcGxhdGUp
LAorICAgICAgICAgICAgImV4cG9ydCAlcyIgJSBzZWxmLnZhcmlhYmxlCisgICAgICAgIF0KPTIw
Cj0yMAogQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKQEAgLTM1MCw4ICs0MjYsMTUgQEAKICAg
ICByZXR1cm4gZXhlY3V0ZShjbWRzKQo9MjAKPTIwCi1kZWYgZXhlY3V0ZShjbWRzKToKLSAgICBw
ID0zRCBzdWJwcm9jZXNzLlBvcGVuKGNtZHMsIHNoZWxsPTNERmFsc2UsIHN0ZG91dD0zRHN1YnBy
b2Nlc3MuUElQRSwgPQpzdGRlcnI9M0RzdWJwcm9jZXNzLlBJUEUpCitkZWYgZXhlY3V0ZShjbWRz
LCBlbnY9M0ROb25lKToKKyAgICBzdWJwcm9jZXNzX2t3ZHMgPTNEIGRpY3QoCisgICAgICAgIHNo
ZWxsPTNERmFsc2UsCisgICAgICAgIHN0ZG91dD0zRHN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAg
c3RkZXJyPTNEc3VicHJvY2Vzcy5QSVBFLAorICAgICkKKyAgICBpZiBlbnY6CisgICAgICAgIHN1
YnByb2Nlc3Nfa3dkc1siZW52Il0gPTNEIGVudgorICAgIHAgPTNEIHN1YnByb2Nlc3MuUG9wZW4o
Y21kcywgKipzdWJwcm9jZXNzX2t3ZHMpCiAgICAgI2xvZyA9M0QgcC5zdGRvdXQucmVhZCgpCiAg
ICAgZ2xvYmFsIFZFUkJPU0UKICAgICBzdGRvdXQsIHN0ZGVyciA9M0QgcC5jb21tdW5pY2F0ZSgp
CkBAIC0zNjMsNyArNDQ2LDEwIEBACj0yMAo9MjAKIGRlZiBicmV3X2RlcHMocGFja2FnZSk6Ci0g
ICAgc3Rkb3V0ID0zRCBicmV3X2V4ZWN1dGUoWyJkZXBzIiwgcGFja2FnZV0pCisgICAgYXJncyA9
M0QgWyJkZXBzIl0KKyAgICBhcmdzLmV4dGVuZChCUkVXX0FSR1MpCisgICAgYXJncy5hcHBlbmQo
cGFja2FnZSkKKyAgICBzdGRvdXQgPTNEIGJyZXdfZXhlY3V0ZShhcmdzKQogICAgIHJldHVybiBb
cC5zdHJpcCgpIGZvciBwIGluIHN0ZG91dC5zcGxpdCgiXG4iKSBpZiBwXQo9MjAKPTIwCgpkaWZm
IC1yIDA5NDIwNWI0NTFhYWNlZjc3N2MwYWYyMDA1NDJhNmM4MWViM2VmMGMgLXIgODM0OWI4YmI5
OTZkZDgyYmVmZWFlMDI9CmRjZTcwYTZlNTA2NGQwY2FmIGxpYi9nYWxheHkvdG9vbHMvZGVwcy9y
ZXNvbHZlcnMvYnJld2VkX3Rvb2xfc2hlZF9wYWNrYWdlcz0KLnB5Ci0tLSAvZGV2L251bGwKKysr
IGIvbGliL2dhbGF4eS90b29scy9kZXBzL3Jlc29sdmVycy9icmV3ZWRfdG9vbF9zaGVkX3BhY2th
Z2VzLnB5CkBAIC0wLDAgKzEsMTUwIEBACisiIiIKK1RoaXMgZGVwZW5kZW5jeSByZXNvbHZlciBy
ZXNvbHZlcyB0b29sIHNoZWQgZGVwZW5kZW5jaWVzICh0aG9zZSBkZWZpbmVkCit0b29sX2RlcGVu
ZGVuY2llcy54bWwpIGluc3RhbGxlZCB1c2luZyBQbGF0Zm9ybSBIb21lYnJldyBhbmQgY29udmVy
dGVkCit2aWEgc2hlZDJ0YXAgKGUuZy4gaHR0cHM6Ly9naXRodWIuY29tL2ptY2hpbHRvbi9ob21l
YnJldy10b29sc2hlZCkuCisiIiIKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3MKK2Zyb20geG1s
LmV0cmVlIGltcG9ydCBFbGVtZW50VHJlZSBhcyBFVAorCitmcm9tIC5yZXNvbHZlcl9taXhpbnMg
aW1wb3J0ICgKKyAgICBVc2VzSG9tZWJyZXdNaXhpbiwKKyAgICBVc2VzVG9vbERlcGVuZGVuY3lE
aXJNaXhpbiwKKyAgICBVc2VzSW5zdGFsbGVkUmVwb3NpdG9yaWVzTWl4aW4sCispCitmcm9tIC4u
cmVzb2x2ZXJzIGltcG9ydCBEZXBlbmRlbmN5UmVzb2x2ZXIsIElOREVURVJNSU5BVEVfREVQRU5E
RU5DWQorCitsb2cgPTNEIGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQorCisKK2NsYXNzIEhv
bWVicmV3VG9vbFNoZWREZXBlbmRlbmN5UmVzb2x2ZXIoCisgICAgRGVwZW5kZW5jeVJlc29sdmVy
LAorICAgIFVzZXNIb21lYnJld01peGluLAorICAgIFVzZXNUb29sRGVwZW5kZW5jeURpck1peGlu
LAorICAgIFVzZXNJbnN0YWxsZWRSZXBvc2l0b3JpZXNNaXhpbiwKKyk6CisgICAgcmVzb2x2ZXJf
dHlwZSA9M0QgInRvb2xfc2hlZF90YXAiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGVwZW5k
ZW5jeV9tYW5hZ2VyLCAqKmt3ZHMpOgorICAgICAgICBzZWxmLl9pbml0X2hvbWVicmV3KCoqa3dk
cykKKyAgICAgICAgc2VsZi5faW5pdF9iYXNlX3BhdGgoZGVwZW5kZW5jeV9tYW5hZ2VyLCAqKmt3
ZHMpCisKKyAgICBkZWYgcmVzb2x2ZShzZWxmLCBuYW1lLCB2ZXJzaW9uLCB0eXBlLCAqKmt3ZHMp
OgorICAgICAgICBpZiB0eXBlICE9M0QgInBhY2thZ2UiOgorICAgICAgICAgICAgcmV0dXJuIElO
REVURVJNSU5BVEVfREVQRU5ERU5DWQorCisgICAgICAgIGlmIHZlcnNpb24gaXMgTm9uZToKKyAg
ICAgICAgICAgIHJldHVybiBJTkRFVEVSTUlOQVRFX0RFUEVOREVOQ1kKKworICAgICAgICByZXR1
cm4gc2VsZi5fZmluZF90b29sX2RlcGVuZGVuY2llcyhuYW1lLCB2ZXJzaW9uLCB0eXBlLCAqKmt3
ZHMpCisKKyAgICBkZWYgX2ZpbmRfdG9vbF9kZXBlbmRlbmNpZXMoc2VsZiwgbmFtZSwgdmVyc2lv
biwgdHlwZSwgKiprd2RzKToKKyAgICAgICAgaW5zdGFsbGVkX3Rvb2xfZGVwZW5kZW5jeSA9M0Qg
c2VsZi5fZ2V0X2luc3RhbGxlZF9kZXBlbmRlbmN5KG5hbWUsPQogdHlwZSwgdmVyc2lvbj0zRHZl
cnNpb24sICoqa3dkcykKKyAgICAgICAgaWYgaW5zdGFsbGVkX3Rvb2xfZGVwZW5kZW5jeToKKyAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9yZXNvbHZlX2Zyb21faW5zdGFsbGVkX3Rvb2xfZGVwZW5k
ZW5jeShuYW1lLCB2ZXJzPQppb24sIGluc3RhbGxlZF90b29sX2RlcGVuZGVuY3kpCisKKyAgICAg
ICAgaWYgInRvb2xfZGlyIiBpbiBrd2RzOgorICAgICAgICAgICAgdG9vbF9kaXJlY3RvcnkgPTNE
IG9zLnBhdGguYWJzcGF0aChrd2RzWyJ0b29sX2RpciJdKQorICAgICAgICAgICAgdG9vbF9kZXBl
bmVkZW5jaWVzX3BhdGggPTNEIG9zLnBhdGguam9pbih0b29sX2RpcmVjdG9yeSwgInRvb2w9Cl9k
ZXBlbmRlbmNpZXMueG1sIikKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHRvb2xfZGVw
ZW5lZGVuY2llc19wYXRoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmVzb2x2ZV9m
cm9tX3Rvb2xfZGVwZW5kZW5jaWVzX3BhdGgobmFtZSwgdmVyPQpzaW9uLCB0b29sX2RlcGVuZWRl
bmNpZXNfcGF0aCkKKworICAgICAgICByZXR1cm4gSU5ERVRFUk1JTkFURV9ERVBFTkRFTkNZCisK
KyAgICBkZWYgX3Jlc29sdmVfZnJvbV9pbnN0YWxsZWRfdG9vbF9kZXBlbmRlbmN5KHNlbGYsIG5h
bWUsIHZlcnNpb24sIGluc3RhPQpsbGVkX3Rvb2xfZGVwZW5kZW5jeSk6CisgICAgICAgIHRvb2xf
c2hlZF9yZXBvc2l0b3J5ID0zRCBpbnN0YWxsZWRfdG9vbF9kZXBlbmRlbmN5LnRvb2xfc2hlZF9y
ZXBvcz0KaXRvcnkKKyAgICAgICAgcmVjaXBlX25hbWUgPTNEIGJ1aWxkX3JlY2lwZV9uYW1lKAor
ICAgICAgICAgICAgcGFja2FnZV9uYW1lPTNEbmFtZSwKKyAgICAgICAgICAgIHBhY2thZ2VfdmVy
c2lvbj0zRHZlcnNpb24sCisgICAgICAgICAgICByZXBvc2l0b3J5X293bmVyPTNEdG9vbF9zaGVk
X3JlcG9zaXRvcnkub3duZXIsCisgICAgICAgICAgICByZXBvc2l0b3J5X25hbWU9M0R0b29sX3No
ZWRfcmVwb3NpdG9yeS5uYW1lLAorICAgICAgICApCisgICAgICAgIHJldHVybiBzZWxmLl9maW5k
X2RlcF9kZWZhdWx0KHJlY2lwZV9uYW1lLCBOb25lKQorCisgICAgZGVmIF9yZXNvbHZlX2Zyb21f
dG9vbF9kZXBlbmRlbmNpZXNfcGF0aChzZWxmLCBuYW1lLCB2ZXJzaW9uLCB0b29sX2RlcD0KZW5k
ZW5jaWVzX3BhdGgpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICByYXdfZGVwZW5kZW5jaWVz
ID0zRCBSYXdEZXBlbmRlbmNpZXModG9vbF9kZXBlbmRlbmNpZXNfcGF0aCkKKyAgICAgICAgZXhj
ZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgIGxvZy5kZWJ1ZygiRmFpbGVkIHRvIHBhcnNlIGRl
cGVuZGVuY2llcyBpbiBmaWxlICVzIiAlIHRvb2xfZGVwPQplbmRlbmNpZXNfcGF0aCkKKyAgICAg
ICAgICAgIHJldHVybiBJTkRFVEVSTUlOQVRFX0RFUEVOREVOQ1kKKworICAgICAgICByYXdfZGVw
ZW5kZW5jeSA9M0QgcmF3X2RlcGVuZGVuY2llcy5maW5kKG5hbWUsIHZlcnNpb24pCisgICAgICAg
IGlmIG5vdCByYXdfZGVwZW5kZW5jeToKKyAgICAgICAgICAgIHJldHVybiBJTkRFVEVSTUlOQVRF
X0RFUEVOREVOQ1kKKworICAgICAgICByZWNpcGVfbmFtZSA9M0QgYnVpbGRfcmVjaXBlX25hbWUo
CisgICAgICAgICAgICBwYWNrYWdlX25hbWU9M0RuYW1lLAorICAgICAgICAgICAgcGFja2FnZV92
ZXJzaW9uPTNEdmVyc2lvbiwKKyAgICAgICAgICAgIHJlcG9zaXRvcnlfb3duZXI9M0RyYXdfZGVw
ZW5kZW5jeS5yZXBvc2l0b3J5X293bmVyLAorICAgICAgICAgICAgcmVwb3NpdG9yeV9uYW1lPTNE
cmF3X2RlcGVuZGVuY3kucmVwb3NpdG9yeV9uYW1lCisgICAgICAgICkKKyAgICAgICAgZGVwID0z
RCBzZWxmLl9maW5kX2RlcF9kZWZhdWx0KHJlY2lwZV9uYW1lLCBOb25lKQorICAgICAgICByZXR1
cm4gZGVwCisKKworY2xhc3MgUmF3RGVwZW5kZW5jaWVzKG9iamVjdCk6CisKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgZGVwZW5kZW5jaWVzX2ZpbGUpOgorICAgICAgICBzZWxmLnJvb3QgPTNEIEVU
LnBhcnNlKGRlcGVuZGVuY2llc19maWxlKS5nZXRyb290KCkKKyAgICAgICAgZGVwZW5kZW5jaWVz
ID0zRCBbXQorICAgICAgICBwYWNrYWdlX2VscyA9M0Qgc2VsZi5yb290LmZpbmRhbGwoInBhY2th
Z2UiKSBvciBbXQorICAgICAgICBmb3IgcGFja2FnZV9lbCBpbiBwYWNrYWdlX2VsczoKKyAgICAg
ICAgICAgIHJlcG9zaXRvcnlfZWwgPTNEIHBhY2thZ2VfZWwuZmluZCgicmVwb3NpdG9yeSIpCisg
ICAgICAgICAgICBpZiByZXBvc2l0b3J5X2VsIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgICAgIGRlcGVuZGVuY3kgPTNEIFJhd0RlcGVuZGVuY3koc2VsZiwgcGFj
a2FnZV9lbCwgcmVwb3NpdG9yeV9lbCkKKyAgICAgICAgICAgIGRlcGVuZGVuY2llcy5hcHBlbmQo
ZGVwZW5kZW5jeSkKKyAgICAgICAgc2VsZi5kZXBlbmRlbmNpZXMgPTNEIGRlcGVuZGVuY2llcwor
CisgICAgZGVmIGZpbmQoc2VsZiwgcGFja2FnZV9uYW1lLCBwYWNrYWdlX3ZlcnNpb24pOgorICAg
ICAgICB0YXJnZXRfZGVwZW5kZW5jeSA9M0QgTm9uZQorCisgICAgICAgIGZvciBkZXBlbmRlbmN5
IGluIHNlbGYuZGVwZW5kZW5jaWVzOgorICAgICAgICAgICAgaWYgZGVwZW5kZW5jeS5wYWNrYWdl
X25hbWUgPTNEPTNEIHBhY2thZ2VfbmFtZSBhbmQgZGVwZW5kZW5jeS49CnBhY2thZ2VfdmVyc2lv
biA9M0Q9M0QgcGFja2FnZV92ZXJzaW9uOgorICAgICAgICAgICAgICAgIHRhcmdldF9kZXBlbmRl
bmN5ID0zRCBkZXBlbmRlbmN5CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgcmV0dXJu
IHRhcmdldF9kZXBlbmRlbmN5CisKKworY2xhc3MgUmF3RGVwZW5kZW5jeShvYmplY3QpOgorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGRlcGVuZGVuY2llcywgcGFja2FnZV9lbCwgcmVwb3NpdG9y
eV9lbCk6CisgICAgICAgIHNlbGYuZGVwZW5kZW5jaWVzID0zRCBkZXBlbmRlbmNpZXMKKyAgICAg
ICAgc2VsZi5wYWNrYWdlX2VsID0zRCBwYWNrYWdlX2VsCisgICAgICAgIHNlbGYucmVwb3NpdG9y
eV9lbCA9M0QgcmVwb3NpdG9yeV9lbAorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAg
ICB0ZW1wID0zRCAiRGVwZW5kZW5jeVtwYWNrYWdlX25hbWU9M0Qlcyx2ZXJzaW9uPTNEJXMsZGVw
ZW5kZW50X3BhY2s9CmFnZT0zRCVzXSIKKyAgICAgICAgcmV0dXJuIHRlbXAgJSAoCisgICAgICAg
ICAgICBzZWxmLnBhY2thZ2VfZWwuYXR0cmliWyJuYW1lIl0sCisgICAgICAgICAgICBzZWxmLnBh
Y2thZ2VfZWwuYXR0cmliWyJ2ZXJzaW9uIl0sCisgICAgICAgICAgICBzZWxmLnJlcG9zaXRvcnlf
ZWwuYXR0cmliWyJuYW1lIl0KKyAgICAgICAgKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHJl
cG9zaXRvcnlfb3duZXIoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnJlcG9zaXRvcnlfZWwu
YXR0cmliWyJvd25lciJdCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcmVwb3NpdG9yeV9uYW1l
KHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5yZXBvc2l0b3J5X2VsLmF0dHJpYlsibmFtZSJd
CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGFja2FnZV9uYW1lKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gc2VsZi5wYWNrYWdlX2VsLmF0dHJpYlsibmFtZSJdCisKKyAgICBAcHJvcGVydHkKKyAg
ICBkZWYgcGFja2FnZV92ZXJzaW9uKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5wYWNrYWdl
X2VsLmF0dHJpYlsidmVyc2lvbiJdCisKKworZGVmIGJ1aWxkX3JlY2lwZV9uYW1lKHBhY2thZ2Vf
bmFtZSwgcGFja2FnZV92ZXJzaW9uLCByZXBvc2l0b3J5X293bmVyLCByZXA9Cm9zaXRvcnlfbmFt
ZSk6CisgICAgIyBUT0RPOiBDb25zaWRlciBiYWtpbmcgcGFja2FnZV9uYW1lIGFuZCBwYWNrYWdl
X3ZlcnNpb24gaW50byBuYW1lPyAodz0Kb3VsZCBiZSBtb3JlICJjb3JyZWN0IikKKyAgICBvd25l
ciA9M0QgcmVwb3NpdG9yeV9vd25lci5yZXBsYWNlKCItIiwgIiIpCisgICAgbmFtZSA9M0QgcmVw
b3NpdG9yeV9uYW1lCisgICAgbmFtZSA9M0QgbmFtZS5yZXBsYWNlKCJfIiwgIiIpLnJlcGxhY2Uo
Ii0iLCAiIikKKyAgICBiYXNlID0zRCAiJXNfJXMiICUgKG93bmVyLCBuYW1lKQorICAgIHJldHVy
biBiYXNlCisKKworX19hbGxfXyA9M0QgW0hvbWVicmV3VG9vbFNoZWREZXBlbmRlbmN5UmVzb2x2
ZXJdCgpkaWZmIC1yIDA5NDIwNWI0NTFhYWNlZjc3N2MwYWYyMDA1NDJhNmM4MWViM2VmMGMgLXIg
ODM0OWI4YmI5OTZkZDgyYmVmZWFlMDI9CmRjZTcwYTZlNTA2NGQwY2FmIGxpYi9nYWxheHkvdG9v
bHMvZGVwcy9yZXNvbHZlcnMvZ2FsYXh5X3BhY2thZ2VzLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9v
bHMvZGVwcy9yZXNvbHZlcnMvZ2FsYXh5X3BhY2thZ2VzLnB5CisrKyBiL2xpYi9nYWxheHkvdG9v
bHMvZGVwcy9yZXNvbHZlcnMvZ2FsYXh5X3BhY2thZ2VzLnB5CkBAIC0xLDEyICsxLDEzIEBACi1m
cm9tIG9zLnBhdGggaW1wb3J0IGpvaW4sIGlzbGluaywgcmVhbHBhdGgsIGJhc2VuYW1lLCBleGlz
dHMsIGFic3BhdGgKK2Zyb20gb3MucGF0aCBpbXBvcnQgam9pbiwgaXNsaW5rLCByZWFscGF0aCwg
YmFzZW5hbWUsIGV4aXN0cwo9MjAKIGZyb20gLi5yZXNvbHZlcnMgaW1wb3J0IERlcGVuZGVuY3lS
ZXNvbHZlciwgSU5ERVRFUk1JTkFURV9ERVBFTkRFTkNZLCBEZXBlPQpuZGVuY3kKK2Zyb20gLnJl
c29sdmVyX21peGlucyBpbXBvcnQgVXNlc1Rvb2xEZXBlbmRlbmN5RGlyTWl4aW4KPTIwCiBpbXBv
cnQgbG9nZ2luZwogbG9nID0zRCBsb2dnaW5nLmdldExvZ2dlciggX19uYW1lX18gKQo9MjAKPTIw
Ci1jbGFzcyBHYWxheHlQYWNrYWdlRGVwZW5kZW5jeVJlc29sdmVyKERlcGVuZGVuY3lSZXNvbHZl
cik6CitjbGFzcyBHYWxheHlQYWNrYWdlRGVwZW5kZW5jeVJlc29sdmVyKERlcGVuZGVuY3lSZXNv
bHZlciwgVXNlc1Rvb2xEZXBlbmRlbj0KY3lEaXJNaXhpbik6CiAgICAgcmVzb2x2ZXJfdHlwZSA9
M0QgImdhbGF4eV9wYWNrYWdlcyIKPTIwCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRlcGVuZGVu
Y3lfbWFuYWdlciwgKiprd2RzKToKQEAgLTE2LDcgKzE3LDcgQEAKICAgICAgICAgIyMgcmVzb2x2
ZXIgdGhhdCB3aWxsIGp1c3QgZ3JhYiAnZGVmYXVsdCcgdmVyc2lvbiBvZiBleGFjdCB2ZXJzaW9u
CiAgICAgICAgICMjIHVuYXZhaWxhYmxlLgogICAgICAgICBzZWxmLnZlcnNpb25sZXNzID0zRCBz
dHIoa3dkcy5nZXQoJ3ZlcnNpb25sZXNzJywgImZhbHNlIikpLmxvd2VyKCk9CiA9M0Q9M0QgInRy
dWUiCi0gICAgICAgIHNlbGYuYmFzZV9wYXRoID0zRCBhYnNwYXRoKCBrd2RzLmdldCgnYmFzZV9w
YXRoJywgZGVwZW5kZW5jeV9tYW5hZz0KZXIuZGVmYXVsdF9iYXNlX3BhdGgpICkKKyAgICAgICAg
c2VsZi5faW5pdF9iYXNlX3BhdGgoIGRlcGVuZGVuY3lfbWFuYWdlciwgKiprd2RzICkKPTIwCiAg
ICAgZGVmIHJlc29sdmUoIHNlbGYsIG5hbWUsIHZlcnNpb24sIHR5cGUsICoqa3dkcyApOgogICAg
ICAgICAiIiIKCmRpZmYgLXIgMDk0MjA1YjQ1MWFhY2VmNzc3YzBhZjIwMDU0MmE2YzgxZWIzZWYw
YyAtciA4MzQ5YjhiYjk5NmRkODJiZWZlYWUwMj0KZGNlNzBhNmU1MDY0ZDBjYWYgbGliL2dhbGF4
eS90b29scy9kZXBzL3Jlc29sdmVycy9ob21lYnJldy5weQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xz
L2RlcHMvcmVzb2x2ZXJzL2hvbWVicmV3LnB5CisrKyBiL2xpYi9nYWxheHkvdG9vbHMvZGVwcy9y
ZXNvbHZlcnMvaG9tZWJyZXcucHkKQEAgLTEyLDIwICsxMiwxOSBAQAogaW5jb21wYXRpYmxlIGNo
YW5nZXMgY29taW5nLgogIiIiCj0yMAotaW1wb3J0IG9zCj0yMAotZnJvbSAuLmJyZXdfZXh0cyBp
bXBvcnQgREVGQVVMVF9IT01FQlJFV19ST09ULCByZWNpcGVfY2VsbGFyX3BhdGgsIGJ1aWxkX2U9
Cm52X3N0YXRlbWVudHMKLWZyb20gLi5yZXNvbHZlcnMgaW1wb3J0IERlcGVuZGVuY3lSZXNvbHZl
ciwgSU5ERVRFUk1JTkFURV9ERVBFTkRFTkNZLCBEZXBlPQpuZGVuY3kKK2Zyb20gLnJlc29sdmVy
X21peGlucyBpbXBvcnQgVXNlc0hvbWVicmV3TWl4aW4KK2Zyb20gLi5yZXNvbHZlcnMgaW1wb3J0
IERlcGVuZGVuY3lSZXNvbHZlciwgSU5ERVRFUk1JTkFURV9ERVBFTkRFTkNZCj0yMAogIyBUT0RP
OiBJbXBsZW1lbnQgcHJlZmVyIHZlcnNpb24gbGlua2VkLi4uCiBQUkVGRVJfVkVSU0lPTl9MSU5L
RUQgPTNEICdsaW5rZWQnCiBQUkVGRVJfVkVSU0lPTl9MQVRFU1QgPTNEICdsYXRlc3QnCi1VTktO
T1dOX1BSRUZFUl9WRVJTSU9OX01FU1NBR0VfVEVNUExBVEUgPTNEICJIb21lYnJld0RlcGVuZGVu
Y3lSZXNvbHZlciBwcj0KZWZlcl92ZXJzaW9uIG11c3QgYmUgbGF0ZXN0ICVzIgorVU5LTk9XTl9Q
UkVGRVJfVkVSU0lPTl9NRVNTQUdFX1RFTVBMQVRFID0zRCAiSG9tZWJyZXdEZXBlbmRlbmN5UmVz
b2x2ZXIgcHI9CmVmZXJfdmVyc2lvbiBtdXN0IGJlICVzIgogVU5LTk9XTl9QUkVGRVJfVkVSU0lP
Tl9NRVNTQUdFID0zRCBVTktOT1dOX1BSRUZFUl9WRVJTSU9OX01FU1NBR0VfVEVNUExBVEU9CiAl
IChQUkVGRVJfVkVSU0lPTl9MQVRFU1QpCiBERUZBVUxUX1BSRUZFUl9WRVJTSU9OID0zRCBQUkVG
RVJfVkVSU0lPTl9MQVRFU1QKPTIwCj0yMAotY2xhc3MgSG9tZWJyZXdEZXBlbmRlbmN5UmVzb2x2
ZXIoRGVwZW5kZW5jeVJlc29sdmVyKToKK2NsYXNzIEhvbWVicmV3RGVwZW5kZW5jeVJlc29sdmVy
KERlcGVuZGVuY3lSZXNvbHZlciwgVXNlc0hvbWVicmV3TWl4aW4pOgogICAgIHJlc29sdmVyX3R5
cGUgPTNEICJob21lYnJldyIKPTIwCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRlcGVuZGVuY3lf
bWFuYWdlciwgKiprd2RzKToKQEAgLTM4LDExICszNyw3IEBACiAgICAgICAgIGlmIHNlbGYudmVy
c2lvbmxlc3MgYW5kIHNlbGYucHJlZmVyX3ZlcnNpb24gbm90IGluIFtQUkVGRVJfVkVSU0lPTj0K
X0xBVEVTVF06CiAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oVU5LTk9XTl9QUkVGRVJfVkVS
U0lPTl9NRVNTQUdFKQo9MjAKLSAgICAgICAgY2VsbGFyX3Jvb3QgPTNEIGt3ZHMuZ2V0KCdjZWxs
YXInLCBOb25lKQotICAgICAgICBpZiBjZWxsYXJfcm9vdCBpcyBOb25lOgotICAgICAgICAgICAg
Y2VsbGFyX3Jvb3QgPTNEIG9zLnBhdGguam9pbihERUZBVUxUX0hPTUVCUkVXX1JPT1QsICJDZWxs
YXIiKQotCi0gICAgICAgIHNlbGYuY2VsbGFyX3Jvb3QgPTNEIGNlbGxhcl9yb290CisgICAgICAg
IHNlbGYuX2luaXRfaG9tZWJyZXcoKiprd2RzKQo9MjAKICAgICBkZWYgcmVzb2x2ZShzZWxmLCBu
YW1lLCB2ZXJzaW9uLCB0eXBlLCAqKmt3ZHMpOgogICAgICAgICBpZiB0eXBlICE9M0QgInBhY2th
Z2UiOgpAQCAtNTMsNDEgKzQ4LDYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVy
biBzZWxmLl9maW5kX2RlcF92ZXJzaW9uZWQobmFtZSwgdmVyc2lvbikKPTIwCi0gICAgZGVmIF9m
aW5kX2RlcF92ZXJzaW9uZWQoc2VsZiwgbmFtZSwgdmVyc2lvbik6Ci0gICAgICAgIHJlY2lwZV9w
YXRoID0zRCByZWNpcGVfY2VsbGFyX3BhdGgoc2VsZi5jZWxsYXJfcm9vdCwgbmFtZSwgdmVyc2lv
bikKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHJlY2lwZV9wYXRoKSBvciBub3Qgb3Mu
cGF0aC5pc2RpcihyZWNpcGVfcGF0PQpoKToKLSAgICAgICAgICAgIHJldHVybiBJTkRFVEVSTUlO
QVRFX0RFUEVOREVOQ1kKLQotICAgICAgICBjb21tYW5kcyA9M0QgYnVpbGRfZW52X3N0YXRlbWVu
dHMoc2VsZi5jZWxsYXJfcm9vdCwgcmVjaXBlX3BhdGgsIHI9CmVsYXhlZD0zRFRydWUpCi0gICAg
ICAgIHJldHVybiBIb21lYnJld0RlcGVuZGVuY3koY29tbWFuZHMpCi0KLSAgICBkZWYgX2ZpbmRf
ZGVwX2RlZmF1bHQoc2VsZiwgbmFtZSwgdmVyc2lvbik6Ci0gICAgICAgIGluc3RhbGxlZF92ZXJz
aW9ucyA9M0Qgc2VsZi5faW5zdGFsbGVkX3ZlcnNpb25zKG5hbWUpCi0gICAgICAgIGlmIG5vdCBp
bnN0YWxsZWRfdmVyc2lvbnM6Ci0gICAgICAgICAgICByZXR1cm4gSU5ERVRFUk1JTkFURV9ERVBF
TkRFTkNZCi0KLSAgICAgICAgIyBKdXN0IGdyYWIgbmV3ZXN0IGluc3RhbGxlZCB2ZXJzaW9uIC0g
bWF5IG1ha2Ugc2Vuc2Ugc29tZSBkYXkgdG8gPQpmaW5kCi0gICAgICAgICMgdGhlIGxpbmtlZCB2
ZXJzaW9uIGluc3RlYWQuCi0gICAgICAgIGRlZmF1bHRfdmVyc2lvbiA9M0Qgc29ydGVkKGluc3Rh
bGxlZF92ZXJzaW9ucywgcmV2ZXJzZT0zRFRydWUpWzBdCi0gICAgICAgIHJldHVybiBzZWxmLl9m
aW5kX2RlcF92ZXJzaW9uZWQobmFtZSwgZGVmYXVsdF92ZXJzaW9uKQotCi0gICAgZGVmIF9pbnN0
YWxsZWRfdmVyc2lvbnMoc2VsZiwgcmVjaXBlKToKLSAgICAgICAgcmVjaXBlX2Jhc2VfcGF0aCA9
M0Qgb3MucGF0aC5qb2luKHNlbGYuY2VsbGFyX3Jvb3QsIHJlY2lwZSkKLSAgICAgICAgaWYgbm90
IG9zLnBhdGguZXhpc3RzKHJlY2lwZV9iYXNlX3BhdGgpOgotICAgICAgICAgICAgcmV0dXJuIFtd
Ci0KLSAgICAgICAgbmFtZXMgPTNEIG9zLmxpc3RkaXIocmVjaXBlX2Jhc2VfcGF0aCkKLSAgICAg
ICAgcmV0dXJuIGZpbHRlcihsYW1iZGEgbjogb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4ocmVj
aXBlX2Jhc2VfcGF0PQpoLCBuKSksIG5hbWVzKQotCi0KLWNsYXNzIEhvbWVicmV3RGVwZW5kZW5j
eShEZXBlbmRlbmN5KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb21tYW5kcyk6Ci0gICAg
ICAgIHNlbGYuY29tbWFuZHMgPTNEIGNvbW1hbmRzCi0KLSAgICBkZWYgc2hlbGxfY29tbWFuZHMo
c2VsZiwgcmVxdWlyZW1lbnQpOgotICAgICAgICByZXR1cm4gc2VsZi5jb21tYW5kcy5yZXBsYWNl
KCJcbiIsICI7IikgKyAiXG4iCi0KPTIwCiBkZWYgX3N0cmluZ19hc19ib29sKCB2YWx1ZSApOgog
ICAgIHJldHVybiBzdHIoIHZhbHVlICkubG93ZXIoKSA9M0Q9M0QgInRydWUiCgpkaWZmIC1yIDA5
NDIwNWI0NTFhYWNlZjc3N2MwYWYyMDA1NDJhNmM4MWViM2VmMGMgLXIgODM0OWI4YmI5OTZkZDgy
YmVmZWFlMDI9CmRjZTcwYTZlNTA2NGQwY2FmIGxpYi9nYWxheHkvdG9vbHMvZGVwcy9yZXNvbHZl
cnMvcmVzb2x2ZXJfbWl4aW5zLnB5Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL2dhbGF4eS90b29s
cy9kZXBzL3Jlc29sdmVycy9yZXNvbHZlcl9taXhpbnMucHkKQEAgLTAsMCArMSw3MyBAQAoraW1w
b3J0IG9zCitmcm9tIC4uYnJld19leHRzIGltcG9ydCBERUZBVUxUX0hPTUVCUkVXX1JPT1QsIHJl
Y2lwZV9jZWxsYXJfcGF0aCwgYnVpbGRfZT0KbnZfc3RhdGVtZW50cworZnJvbSAuLnJlc29sdmVy
cyBpbXBvcnQgSU5ERVRFUk1JTkFURV9ERVBFTkRFTkNZLCBEZXBlbmRlbmN5CisKKworY2xhc3Mg
VXNlc0hvbWVicmV3TWl4aW46CisKKyAgICBkZWYgX2luaXRfaG9tZWJyZXcoc2VsZiwgKiprd2Rz
KToKKyAgICAgICAgY2VsbGFyX3Jvb3QgPTNEIGt3ZHMuZ2V0KCdjZWxsYXInLCBOb25lKQorICAg
ICAgICBpZiBjZWxsYXJfcm9vdCBpcyBOb25lOgorICAgICAgICAgICAgY2VsbGFyX3Jvb3QgPTNE
IG9zLnBhdGguam9pbihERUZBVUxUX0hPTUVCUkVXX1JPT1QsICJDZWxsYXIiKQorCisgICAgICAg
IHNlbGYuY2VsbGFyX3Jvb3QgPTNEIGNlbGxhcl9yb290CisKKyAgICBkZWYgX2ZpbmRfZGVwX3Zl
cnNpb25lZChzZWxmLCBuYW1lLCB2ZXJzaW9uKToKKyAgICAgICAgcmVjaXBlX3BhdGggPTNEIHJl
Y2lwZV9jZWxsYXJfcGF0aChzZWxmLmNlbGxhcl9yb290LCBuYW1lLCB2ZXJzaW9uKQorICAgICAg
ICBpZiBub3Qgb3MucGF0aC5leGlzdHMocmVjaXBlX3BhdGgpIG9yIG5vdCBvcy5wYXRoLmlzZGly
KHJlY2lwZV9wYXQ9CmgpOgorICAgICAgICAgICAgcmV0dXJuIElOREVURVJNSU5BVEVfREVQRU5E
RU5DWQorCisgICAgICAgIGNvbW1hbmRzID0zRCBidWlsZF9lbnZfc3RhdGVtZW50cyhzZWxmLmNl
bGxhcl9yb290LCByZWNpcGVfcGF0aCwgcj0KZWxheGVkPTNEVHJ1ZSkKKyAgICAgICAgcmV0dXJu
IEhvbWVicmV3RGVwZW5kZW5jeShjb21tYW5kcykKKworICAgIGRlZiBfZmluZF9kZXBfZGVmYXVs
dChzZWxmLCBuYW1lLCB2ZXJzaW9uKToKKyAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zID0zRCBz
ZWxmLl9pbnN0YWxsZWRfdmVyc2lvbnMobmFtZSkKKyAgICAgICAgaWYgbm90IGluc3RhbGxlZF92
ZXJzaW9uczoKKyAgICAgICAgICAgIHJldHVybiBJTkRFVEVSTUlOQVRFX0RFUEVOREVOQ1kKKwor
ICAgICAgICAjIEp1c3QgZ3JhYiBuZXdlc3QgaW5zdGFsbGVkIHZlcnNpb24gLSBtYXkgbWFrZSBz
ZW5zZSBzb21lIGRheSB0byA9CmZpbmQKKyAgICAgICAgIyB0aGUgbGlua2VkIHZlcnNpb24gaW5z
dGVhZC4KKyAgICAgICAgZGVmYXVsdF92ZXJzaW9uID0zRCBzb3J0ZWQoaW5zdGFsbGVkX3ZlcnNp
b25zLCByZXZlcnNlPTNEVHJ1ZSlbMF0KKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbmRfZGVwX3Zl
cnNpb25lZChuYW1lLCBkZWZhdWx0X3ZlcnNpb24pCisKKyAgICBkZWYgX2luc3RhbGxlZF92ZXJz
aW9ucyhzZWxmLCByZWNpcGUpOgorICAgICAgICByZWNpcGVfYmFzZV9wYXRoID0zRCBvcy5wYXRo
LmpvaW4oc2VsZi5jZWxsYXJfcm9vdCwgcmVjaXBlKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5l
eGlzdHMocmVjaXBlX2Jhc2VfcGF0aCk6CisgICAgICAgICAgICByZXR1cm4gW10KKworICAgICAg
ICBuYW1lcyA9M0Qgb3MubGlzdGRpcihyZWNpcGVfYmFzZV9wYXRoKQorICAgICAgICByZXR1cm4g
ZmlsdGVyKGxhbWJkYSBuOiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihyZWNpcGVfYmFzZV9w
YXQ9CmgsIG4pKSwgbmFtZXMpCisKKworY2xhc3MgVXNlc1Rvb2xEZXBlbmRlbmN5RGlyTWl4aW46
CisKKyAgICBkZWYgX2luaXRfYmFzZV9wYXRoKHNlbGYsIGRlcGVuZGVuY3lfbWFuYWdlciwgKipr
d2RzKToKKyAgICAgICAgc2VsZi5iYXNlX3BhdGggPTNEIG9zLnBhdGguYWJzcGF0aCgga3dkcy5n
ZXQoJ2Jhc2VfcGF0aCcsIGRlcGVuZGVuPQpjeV9tYW5hZ2VyLmRlZmF1bHRfYmFzZV9wYXRoKSAp
CisKKworY2xhc3MgVXNlc0luc3RhbGxlZFJlcG9zaXRvcmllc01peGluOgorCisgICAgZGVmIF9n
ZXRfaW5zdGFsbGVkX2RlcGVuZGVuY3koIHNlbGYsIG5hbWUsIHR5cGUsIHZlcnNpb249M0ROb25l
LCAqKmt3ZD0KcyApOgorICAgICAgICBpbnN0YWxsZWRfdG9vbF9kZXBlbmRlbmNpZXMgPTNEIGt3
ZHMuZ2V0KCJpbnN0YWxsZWRfdG9vbF9kZXBlbmRlbmM9CmllcyIsIFtdKQorICAgICAgICBmb3Ig
aW5zdGFsbGVkX3Rvb2xfZGVwZW5kZW5jeSBpbiAoaW5zdGFsbGVkX3Rvb2xfZGVwZW5kZW5jaWVz
IG9yIFs9Cl0pOgorICAgICAgICAgICAgbmFtZV9hbmRfdHlwZV9lcXVhbCA9M0QgaW5zdGFsbGVk
X3Rvb2xfZGVwZW5kZW5jeS5uYW1lID0zRD0zRCA9Cm5hbWUgYW5kIGluc3RhbGxlZF90b29sX2Rl
cGVuZGVuY3kudHlwZSA9M0Q9M0QgdHlwZQorICAgICAgICAgICAgaWYgdmVyc2lvbjoKKyAgICAg
ICAgICAgICAgICBpZiBuYW1lX2FuZF90eXBlX2VxdWFsIGFuZCBpbnN0YWxsZWRfdG9vbF9kZXBl
bmRlbmN5LnZlcnNpPQpvbiA9M0Q9M0QgdmVyc2lvbjoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGluc3RhbGxlZF90b29sX2RlcGVuZGVuY3kKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgaWYgbmFtZV9hbmRfdHlwZV9lcXVhbDoKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGluc3RhbGxlZF90b29sX2RlcGVuZGVuY3kKKyAgICAgICAgcmV0dXJuIE5vbmUKKworCitj
bGFzcyBIb21lYnJld0RlcGVuZGVuY3koRGVwZW5kZW5jeSk6CisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgY29tbWFuZHMpOgorICAgICAgICBzZWxmLmNvbW1hbmRzID0zRCBjb21tYW5kcworCisg
ICAgZGVmIHNoZWxsX2NvbW1hbmRzKHNlbGYsIHJlcXVpcmVtZW50KToKKyAgICAgICAgcmF3X2Nv
bW1hbmRzID0zRCBzZWxmLmNvbW1hbmRzLnJlcGxhY2UoIlxuIiwgIjsiKQorICAgICAgICByZXR1
cm4gcmF3X2NvbW1hbmRzCisKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIHJldHVy
biAiUGxhdGZvcm1CcmV3RGVwZW5kZW5jeVtjb21tYW5kcz0zRCVzXSIgJSBzZWxmLmNvbW1hbmRz
CgpkaWZmIC1yIDA5NDIwNWI0NTFhYWNlZjc3N2MwYWYyMDA1NDJhNmM4MWViM2VmMGMgLXIgODM0
OWI4YmI5OTZkZDgyYmVmZWFlMDI9CmRjZTcwYTZlNTA2NGQwY2FmIGxpYi9nYWxheHkvdG9vbHMv
ZGVwcy9yZXNvbHZlcnMvdG9vbF9zaGVkX3BhY2thZ2VzLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9v
bHMvZGVwcy9yZXNvbHZlcnMvdG9vbF9zaGVkX3BhY2thZ2VzLnB5CisrKyBiL2xpYi9nYWxheHkv
dG9vbHMvZGVwcy9yZXNvbHZlcnMvdG9vbF9zaGVkX3BhY2thZ2VzLnB5CkBAIC0xLDEwICsxLDEx
IEBACiBmcm9tIG9zLnBhdGggaW1wb3J0IGFic3BhdGgsIGpvaW4sIGV4aXN0cwo9MjAKK2Zyb20g
LnJlc29sdmVyX21peGlucyBpbXBvcnQgVXNlc0luc3RhbGxlZFJlcG9zaXRvcmllc01peGluCiBm
cm9tIC5nYWxheHlfcGFja2FnZXMgaW1wb3J0IEdhbGF4eVBhY2thZ2VEZXBlbmRlbmN5UmVzb2x2
ZXIsIEdhbGF4eVBhY2thZz0KZURlcGVuZGVuY3kKIGZyb20gLi5yZXNvbHZlcnMgaW1wb3J0IElO
REVURVJNSU5BVEVfREVQRU5ERU5DWQo9MjAKPTIwCi1jbGFzcyBUb29sU2hlZFBhY2thZ2VEZXBl
bmRlbmN5UmVzb2x2ZXIoR2FsYXh5UGFja2FnZURlcGVuZGVuY3lSZXNvbHZlcik6CitjbGFzcyBU
b29sU2hlZFBhY2thZ2VEZXBlbmRlbmN5UmVzb2x2ZXIoR2FsYXh5UGFja2FnZURlcGVuZGVuY3lS
ZXNvbHZlciwgVT0Kc2VzSW5zdGFsbGVkUmVwb3NpdG9yaWVzTWl4aW4pOgogICAgIHJlc29sdmVy
X3R5cGUgPTNEICJ0b29sX3NoZWRfcGFja2FnZXMiCj0yMAogICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBkZXBlbmRlbmN5X21hbmFnZXIsICoqa3dkcyk6CkBAIC0xMiw5ICsxMyw4IEBACj0yMAogICAg
IGRlZiBfZmluZF9kZXBfdmVyc2lvbmVkKCBzZWxmLCBuYW1lLCB2ZXJzaW9uLCB0eXBlPTNEJ3Bh
Y2thZ2UnLCAqKmt3ZHM9CiApOgogICAgICAgICBpbnN0YWxsZWRfdG9vbF9kZXBlbmRlbmN5ID0z
RCBzZWxmLl9nZXRfaW5zdGFsbGVkX2RlcGVuZGVuY3koIG5hbWU9CiwgdHlwZSwgdmVyc2lvbj0z
RHZlcnNpb24sICoqa3dkcyApCi0gICAgICAgIGJhc2VfcGF0aCA9M0Qgc2VsZi5iYXNlX3BhdGgK
ICAgICAgICAgaWYgaW5zdGFsbGVkX3Rvb2xfZGVwZW5kZW5jeToKLSAgICAgICAgICAgIHBhdGgg
PTNEIHNlbGYuX2dldF9wYWNrYWdlX2luc3RhbGxlZF9kZXBlbmRlbmN5X3BhdGgoIGluc3RhbGxl
PQpkX3Rvb2xfZGVwZW5kZW5jeSwgYmFzZV9wYXRoLCBuYW1lLCB2ZXJzaW9uICkKKyAgICAgICAg
ICAgIHBhdGggPTNEIHNlbGYuX2dldF9wYWNrYWdlX2luc3RhbGxlZF9kZXBlbmRlbmN5X3BhdGgo
IGluc3RhbGxlPQpkX3Rvb2xfZGVwZW5kZW5jeSwgbmFtZSwgdmVyc2lvbiApCiAgICAgICAgICAg
ICByZXR1cm4gc2VsZi5fZ2FsYXh5X3BhY2thZ2VfZGVwKHBhdGgsIHZlcnNpb24pCiAgICAgICAg
IGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gSU5ERVRFUk1JTkFURV9ERVBFTkRFTkNZCkBAIC0y
OSwyNiArMjksMTcgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEdhbGF4eVBhY2thZ2VE
ZXBlbmRlbmN5KGRlcGVuZGVuY3kuc2NyaXB0LCBkZXBlPQpuZGVuY3kucGF0aCwgTm9uZSkKICAg
ICAgICAgcmV0dXJuIElOREVURVJNSU5BVEVfREVQRU5ERU5DWQo9MjAKLSAgICBkZWYgX2dldF9p
bnN0YWxsZWRfZGVwZW5kZW5jeSggc2VsZiwgbmFtZSwgdHlwZSwgdmVyc2lvbj0zRE5vbmUsICoq
a3dkPQpzICk6Ci0gICAgICAgIGluc3RhbGxlZF90b29sX2RlcGVuZGVuY2llcyA9M0Qga3dkcy5n
ZXQoImluc3RhbGxlZF90b29sX2RlcGVuZGVuYz0KaWVzIiwgW10pCi0gICAgICAgIGZvciBpbnN0
YWxsZWRfdG9vbF9kZXBlbmRlbmN5IGluIChpbnN0YWxsZWRfdG9vbF9kZXBlbmRlbmNpZXMgb3Ig
Wz0KXSk6Ci0gICAgICAgICAgICBuYW1lX2FuZF90eXBlX2VxdWFsID0zRCBpbnN0YWxsZWRfdG9v
bF9kZXBlbmRlbmN5Lm5hbWUgPTNEPTNEID0KbmFtZSBhbmQgaW5zdGFsbGVkX3Rvb2xfZGVwZW5k
ZW5jeS50eXBlID0zRD0zRCB0eXBlCi0gICAgICAgICAgICBpZiB2ZXJzaW9uOgotICAgICAgICAg
ICAgICAgIGlmIG5hbWVfYW5kX3R5cGVfZXF1YWwgYW5kIGluc3RhbGxlZF90b29sX2RlcGVuZGVu
Y3kudmVyc2k9Cm9uID0zRD0zRCB2ZXJzaW9uOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
aW5zdGFsbGVkX3Rvb2xfZGVwZW5kZW5jeQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICBpZiBuYW1lX2FuZF90eXBlX2VxdWFsOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
aW5zdGFsbGVkX3Rvb2xfZGVwZW5kZW5jeQotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVm
IF9nZXRfcGFja2FnZV9pbnN0YWxsZWRfZGVwZW5kZW5jeV9wYXRoKCBzZWxmLCBpbnN0YWxsZWRf
dG9vbF9kZXBlbj0KZGVuY3ksIGJhc2VfcGF0aCwgbmFtZSwgdmVyc2lvbiApOgorICAgIGRlZiBf
Z2V0X3BhY2thZ2VfaW5zdGFsbGVkX2RlcGVuZGVuY3lfcGF0aCggc2VsZiwgaW5zdGFsbGVkX3Rv
b2xfZGVwZW49CmRlbmN5LCBuYW1lLCB2ZXJzaW9uICk6CiAgICAgICAgIHRvb2xfc2hlZF9yZXBv
c2l0b3J5ID0zRCBpbnN0YWxsZWRfdG9vbF9kZXBlbmRlbmN5LnRvb2xfc2hlZF9yZXBvcz0KaXRv
cnkKLSAgICAgICAgcmV0dXJuIGpvaW4oIGJhc2VfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9vbF9zaGVkX3JlcG9zaXRvcnkub3duZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xfc2hlZF9yZXBvc2l0b3J5Lm5hbWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xfc2hlZF9yZXBvc2l0b3J5Lmluc3RhbGxl
ZF9jaGFuZ2VzZXRfcmV2aT0Kc2lvbiApCisgICAgICAgIGJhc2VfcGF0aCA9M0Qgc2VsZi5iYXNl
X3BhdGgKKyAgICAgICAgcmV0dXJuIGpvaW4oCisgICAgICAgICAgICBiYXNlX3BhdGgsCisgICAg
ICAgICAgICBuYW1lLAorICAgICAgICAgICAgdmVyc2lvbiwKKyAgICAgICAgICAgIHRvb2xfc2hl
ZF9yZXBvc2l0b3J5Lm93bmVyLAorICAgICAgICAgICAgdG9vbF9zaGVkX3JlcG9zaXRvcnkubmFt
ZSwKKyAgICAgICAgICAgIHRvb2xfc2hlZF9yZXBvc2l0b3J5Lmluc3RhbGxlZF9jaGFuZ2VzZXRf
cmV2aXNpb24KKyAgICAgICAgKQo9MjAKICAgICBkZWYgX2dldF9zZXRfZW52aXJvbm1lbnRfaW5z
dGFsbGVkX2RlcGVuZGVuY3lfc2NyaXB0X3BhdGgoIHNlbGYsIGluc3RhPQpsbGVkX3Rvb2xfZGVw
ZW5kZW5jeSwgbmFtZSApOgogICAgICAgICB0b29sX3NoZWRfcmVwb3NpdG9yeSA9M0QgaW5zdGFs
bGVkX3Rvb2xfZGVwZW5kZW5jeS50b29sX3NoZWRfcmVwb3M9Cml0b3J5CkBAIC02NCw0ICs1NSw1
IEBACiAgICAgICAgICAgICByZXR1cm4gR2FsYXh5UGFja2FnZURlcGVuZGVuY3koc2NyaXB0LCBw
YXRoLCBOb25lKQogICAgICAgICByZXR1cm4gSU5ERVRFUk1JTkFURV9ERVBFTkRFTkNZCj0yMAor
CiBfX2FsbF9fID0zRCBbVG9vbFNoZWRQYWNrYWdlRGVwZW5kZW5jeVJlc29sdmVyXQoKZGlmZiAt
ciAwOTQyMDViNDUxYWFjZWY3NzdjMGFmMjAwNTQyYTZjODFlYjNlZjBjIC1yIDgzNDliOGJiOTk2
ZGQ4MmJlZmVhZTAyPQpkY2U3MGE2ZTUwNjRkMGNhZiBsaWIvZ2FsYXh5L3V0aWwvcGx1Z2luX2Nv
bmZpZy5weQotLS0gYS9saWIvZ2FsYXh5L3V0aWwvcGx1Z2luX2NvbmZpZy5weQorKysgYi9saWIv
Z2FsYXh5L3V0aWwvcGx1Z2luX2NvbmZpZy5weQpAQCAtMjQsNyArMjQsNyBAQAogICAgIGZvciBw
bHVnaW5fbW9kdWxlIGluIHN1Ym1vZHVsZXMoIG1vZHVsZSApOgogICAgICAgICAjIEZJWE1FOiB0
aGlzIGlzIG5vdCBob3cgb25lIGlzIHN1cHBvc2UgdG8gdXNlIF9fYWxsX18gd2h5IGRpZCB5b3U9
CiBkbwogICAgICAgICAjIHRoaXMgcGFzdCBKb2huPwotICAgICAgICBmb3IgY2xhenogaW4gcGx1
Z2luX21vZHVsZS5fX2FsbF9fOgorICAgICAgICBmb3IgY2xhenogaW4gZ2V0YXR0ciggcGx1Z2lu
X21vZHVsZSwgIl9fYWxsX18iLCBbXSApOgogICAgICAgICAgICAgcGx1Z2luX3R5cGUgPTNEIGdl
dGF0dHIoIGNsYXp6LCBwbHVnaW5fdHlwZV9pZGVudGlmaWVyLCBOb25lICkKICAgICAgICAgICAg
IGlmIHBsdWdpbl90eXBlOgogICAgICAgICAgICAgICAgIHBsdWdpbl9kaWN0WyBwbHVnaW5fdHlw
ZSBdID0zRCBjbGF6egoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRy
YWwvY29tbWl0cy9hM2U3MjI1MDg2Y2IvCkNoYW5nZXNldDogICBhM2U3MjI1MDg2Y2IKVXNlcjog
ICAgICAgIGNhcmxmZWJlcmhhcmQKRGF0ZTogICAgICAgIDIwMTUtMDEtMDggMTg6MjM6MTUrMDA6
MDAKU3VtbWFyeTogICAgIE1pbm9yIGZpeGVzLCBjcnVmdC1yZW1vdmFsOyBFeHBsb3JpbmcgY29t
bW9uIGRhdGFzZXQgY29udGFpbmVyPQogaW50ZXJmYWNlIGZvciBIaXN0b3JpZXMsIENvbGxlY3Rp
b25zLCBMaWJyYXJpZXMKQWZmZWN0ZWQgIzogIDEwIGZpbGVzCgpkaWZmIC1yIDgzNDliOGJiOTk2
ZGQ4MmJlZmVhZTAyZGNlNzBhNmU1MDY0ZDBjYWYgLXIgYTNlNzIyNTA4NmNiYzQzMWY5OThiNGI9
CjE4NzhkNzU1Yjg1OTM3MTU2IGxpYi9nYWxheHkvbWFuYWdlcnMvY29sbGVjdGlvbnMucHkKLS0t
IGEvbGliL2dhbGF4eS9tYW5hZ2Vycy9jb2xsZWN0aW9ucy5weQorKysgYi9saWIvZ2FsYXh5L21h
bmFnZXJzL2NvbGxlY3Rpb25zLnB5CkBAIC0zOCw3ICszOCw3IEBACj0yMAogICAgICAgICBzZWxm
LmhkYV9tYW5hZ2VyID0zRCBoZGFzLkhEQU1hbmFnZXIoIGFwcCApCiAgICAgICAgIHNlbGYuaGlz
dG9yeV9tYW5hZ2VyID0zRCBoaXN0b3JpZXMuSGlzdG9yeU1hbmFnZXIoIGFwcCApCi0gICAgICAg
IHNlbGYudGFnX21hbmFnZXIgPTNEIHRhZ3MuVGFnc01hbmFnZXIoIGFwcCApCisgICAgICAgIHNl
bGYudGFnX21hbmFnZXIgPTNEIHRhZ3MuVGFnTWFuYWdlciggYXBwICkKICAgICAgICAgc2VsZi5s
ZGRhX21hbmFnZXIgPTNEIGxkZGFzLkxEREFNYW5hZ2VyKCBhcHAgKQo9MjAKICAgICBkZWYgY3Jl
YXRlKApAQCAtNjUsNiArNjUsNyBAQAogICAgICAgICAgICAgZWxlbWVudF9pZGVudGlmaWVycz0z
RGVsZW1lbnRfaWRlbnRpZmllcnMsCiAgICAgICAgICAgICBlbGVtZW50cz0zRGVsZW1lbnRzLAog
ICAgICAgICApCisKICAgICAgICAgaWYgaXNpbnN0YW5jZSggcGFyZW50LCBtb2RlbC5IaXN0b3J5
ICk6CiAgICAgICAgICAgICBkYXRhc2V0X2NvbGxlY3Rpb25faW5zdGFuY2UgPTNEIHNlbGYubW9k
ZWwuSGlzdG9yeURhdGFzZXRDb2xsZT0KY3Rpb25Bc3NvY2lhdGlvbigKICAgICAgICAgICAgICAg
ICBjb2xsZWN0aW9uPTNEZGF0YXNldF9jb2xsZWN0aW9uLApAQCAtNzgsMTUgKzc5LDE4IEBACiAg
ICAgICAgICAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCBvdXRwdXRfZGF0YXNldCAp
Cj0yMAogICAgICAgICAgICAgICAgIGRhdGFzZXRfY29sbGVjdGlvbl9pbnN0YW5jZS5pbXBsaWNp
dF9vdXRwdXRfbmFtZSA9M0QgaW1wbGk9CmNpdF9jb2xsZWN0aW9uX2luZm9bICJpbXBsaWNpdF9v
dXRwdXRfbmFtZSIgXQorCiAgICAgICAgICAgICBsb2cuZGVidWcoIkNyZWF0ZWQgY29sbGVjdGlv
biB3aXRoICVkIGVsZW1lbnRzIiAlICggbGVuKCBkYXRhcz0KZXRfY29sbGVjdGlvbl9pbnN0YW5j
ZS5jb2xsZWN0aW9uLmVsZW1lbnRzICkgKSApCiAgICAgICAgICAgICAjIEhhbmRsZSBzZXR0aW5n
IGhpZAogICAgICAgICAgICAgcGFyZW50LmFkZF9kYXRhc2V0X2NvbGxlY3Rpb24oIGRhdGFzZXRf
Y29sbGVjdGlvbl9pbnN0YW5jZSApCisKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKCBwYXJlbnQs
IG1vZGVsLkxpYnJhcnlGb2xkZXIgKToKICAgICAgICAgICAgIGRhdGFzZXRfY29sbGVjdGlvbl9p
bnN0YW5jZSA9M0Qgc2VsZi5tb2RlbC5MaWJyYXJ5RGF0YXNldENvbGxlPQpjdGlvbkFzc29jaWF0
aW9uKAogICAgICAgICAgICAgICAgIGNvbGxlY3Rpb249M0RkYXRhc2V0X2NvbGxlY3Rpb24sCiAg
ICAgICAgICAgICAgICAgZm9sZGVyPTNEcGFyZW50LAogICAgICAgICAgICAgICAgIG5hbWU9M0Ru
YW1lLAogICAgICAgICAgICAgKQorCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBtZXNzYWdl
ID0zRCAiSW50ZXJuYWwgbG9naWMgZXJyb3IgLSBjcmVhdGUgY2FsbGVkIHdpdGggdW5rbm93bj0K
IHBhcmVudCB0eXBlICVzIiAlIHR5cGUoIHBhcmVudCApCiAgICAgICAgICAgICBsb2cuZXhjZXB0
aW9uKCBtZXNzYWdlICkKCmRpZmYgLXIgODM0OWI4YmI5OTZkZDgyYmVmZWFlMDJkY2U3MGE2ZTUw
NjRkMGNhZiAtciBhM2U3MjI1MDg2Y2JjNDMxZjk5OGI0Yj0KMTg3OGQ3NTViODU5MzcxNTYgbGli
L2dhbGF4eS9tYW5hZ2Vycy9jb2xsZWN0aW9uc191dGlsLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFu
YWdlcnMvY29sbGVjdGlvbnNfdXRpbC5weQorKysgYi9saWIvZ2FsYXh5L21hbmFnZXJzL2NvbGxl
Y3Rpb25zX3V0aWwucHkKQEAgLTI4LDcgKzI4LDYgQEAKICAgICAgICAgZWxlbWVudF9pZGVudGlm
aWVycz0zRHBheWxvYWQuZ2V0KCAiZWxlbWVudF9pZGVudGlmaWVycyIgKSwKICAgICAgICAgbmFt
ZT0zRHBheWxvYWQuZ2V0KCAibmFtZSIsIE5vbmUgKSwKICAgICApCi0KICAgICByZXR1cm4gcGFy
YW1zCj0yMAo9MjAKCmRpZmYgLXIgODM0OWI4YmI5OTZkZDgyYmVmZWFlMDJkY2U3MGE2ZTUwNjRk
MGNhZiAtciBhM2U3MjI1MDg2Y2JjNDMxZjk5OGI0Yj0KMTg3OGQ3NTViODU5MzcxNTYgbGliL2dh
bGF4eS9tYW5hZ2Vycy9kYXRhc2V0cy5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL2RhdGFz
ZXRzLnB5CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvZGF0YXNldHMucHkKQEAgLTE0LDcgKzE0
LDEwIEBACiAjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9Cj0zRD0zRD0zRAogY2xhc3MgRGF0YXNldE1hbmFnZXIoIGJhc2UuTW9kZWxNYW5h
Z2VyLCBiYXNlLkFjY2Vzc2libGVNb2RlbEludGVyZmFjZSwgYmE9CnNlLlB1cmdhYmxlTW9kZWxJ
bnRlcmZhY2UgKToKICAgICAiIiIKKyAgICBNYW5pcHVsYXRlIGRhdGFzZXRzOiB0aGUgY29tcG9u
ZW50cyBjb250YWluZWQgaW4gRGF0YXNldEFzc29jaWF0aW9ucy9EPQphdGFzZXRJbnN0YW5jZXMv
SERBcy9MRERBcworICAgPTIwCiAgICAgIiIiCisKICAgICBtb2RlbF9jbGFzcyA9M0QgbW9kZWwu
RGF0YXNldAogICAgIGRlZmF1bHRfb3JkZXJfYnkgPTNEICggbW9kZWwuRGF0YXNldC5jcmVhdGVf
dGltZSwgKQogICAgIGZvcmVpZ25fa2V5X25hbWUgPTNEICdkYXRhc2V0JwoKZGlmZiAtciA4MzQ5
YjhiYjk5NmRkODJiZWZlYWUwMmRjZTcwYTZlNTA2NGQwY2FmIC1yIGEzZTcyMjUwODZjYmM0MzFm
OTk4YjRiPQoxODc4ZDc1NWI4NTkzNzE1NiBsaWIvZ2FsYXh5L21hbmFnZXJzL2hkYXMucHkKLS0t
IGEvbGliL2dhbGF4eS9tYW5hZ2Vycy9oZGFzLnB5CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMv
aGRhcy5weQpAQCAtNTAsMTEgKzUwLDIxIEBACj0yMAogICAgIGRlZiBjcmVhdGUoIHNlbGYsIHRy
YW5zLCBoaXN0b3J5PTNETm9uZSwgZGF0YXNldD0zRE5vbmUsIGZsdXNoPTNEVHJ1ZSw9CiAqKmt3
YXJncyApOgogICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIGEgbmV3IGhkYSBvcHRpb25hbGx5
IHBhc3NpbmcgaW4gaXQncyBoaXN0b3J5IGFuZCBkYXRhc2V0LgorCisgICAgICAgIC4ubm90ZTog
dG8gZXhwbGljaXRseSBzZXQgaGlkIHRvIGBOb25lYCB5b3UgbXVzdCBwYXNzIGluIGBoaWQ9M0RO
bz0KbmVgLCBvdGhlcndpc2UKKyAgICAgICAgaXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNldC4K
ICAgICAgICAgIiIiCiAgICAgICAgIGlmIG5vdCBkYXRhc2V0OgogICAgICAgICAgICAga3dhcmdz
WyAnY3JlYXRlX2RhdGFzZXQnIF0gPTNEIFRydWUKICAgICAgICAgaGRhID0zRCBzdXBlciggSERB
TWFuYWdlciwgc2VsZiApLmNyZWF0ZSggdHJhbnMsIGZsdXNoPTNEZmx1c2gsCiAgICAgICAgICAg
ICBoaXN0b3J5PTNEaGlzdG9yeSwgZGF0YXNldD0zRGRhdGFzZXQsIHNhX3Nlc3Npb249M0R0cmFu
cy5zYV9zZT0Kc3Npb24sICoqa3dhcmdzICkKKworICAgICAgICBpZiBoaXN0b3J5OgorICAgICAg
ICAgICAgc2V0X2hpZCA9M0Qgbm90ICggJ2hpZCcgaW4ga3dhcmdzICkKKyAgICAgICAgICAgIGhp
c3RvcnkuYWRkX2RhdGFzZXQoIGhkYSApCisgICAgICAgICNUT0RPOj8/IHNvbWUgaW50ZXJuYWwg
c2FuaXR5IGNoZWNrIGhlcmUgKG9yIG1heWJlIGluIGFkZF9kYXRhc2V0KT0KIHRvIG1ha2Ugc3Vy
ZSBoaWRzIGFyZSBub3QgZHVwZWQ/CisKICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIGhk
YSApCiAgICAgICAgIGlmIGZsdXNoOgogICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVz
aCgpCgpkaWZmIC1yIDgzNDliOGJiOTk2ZGQ4MmJlZmVhZTAyZGNlNzBhNmU1MDY0ZDBjYWYgLXIg
YTNlNzIyNTA4NmNiYzQzMWY5OThiNGI9CjE4NzhkNzU1Yjg1OTM3MTU2IGxpYi9nYWxheHkvbWFu
YWdlcnMvaGlzdG9yaWVzLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvaGlzdG9yaWVzLnB5
CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvaGlzdG9yaWVzLnB5CkBAIC0xMDIsNiArMTAyLDkg
QEAKICAgICAgICAgIyBOb3cgbWFyayB0aGUgaGlzdG9yeSBhcyBwdXJnZWQKICAgICAgICAgc3Vw
ZXIoIEhpc3RvcnlNYW5hZ2VyLCBzZWxmICkucHVyZ2UoIHRyYW5zLCBoaXN0b3J5LCBmbHVzaD0z
RGZsdXNoPQosICoqa3dhcmdzICkKPTIwCisgICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLj0KLi4uLi4gY29udGVu
dHMKKyAgID0yMAorCiAgICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLj0KLi4uLi4gc2VyaWFsaXphdGlvbgogICAg
ICNUT0RPOiBtb3ZlIHRvIHNlcmlhbGl6ZXIgKGkuZS4gaGlzdG9yeSB3aXRoIGNvbnRlbnRzIGF0
dHIpCiAgICAgZGVmIF9nZXRfaGlzdG9yeV9kYXRhKCBzZWxmLCB0cmFucywgaGlzdG9yeSApOgoK
ZGlmZiAtciA4MzQ5YjhiYjk5NmRkODJiZWZlYWUwMmRjZTcwYTZlNTA2NGQwY2FmIC1yIGEzZTcy
MjUwODZjYmM0MzFmOTk4YjRiPQoxODc4ZDc1NWI4NTkzNzE1NiBsaWIvZ2FsYXh5L3dlYi9iYXNl
L2NvbnRyb2xsZXIucHkKLS0tIGEvbGliL2dhbGF4eS93ZWIvYmFzZS9jb250cm9sbGVyLnB5Cisr
KyBiL2xpYi9nYWxheHkvd2ViL2Jhc2UvY29udHJvbGxlci5weQpAQCAtMjUyLDI5ICsyNTIsMTEg
QEAKICAgICAgICAgICAgIGNoZWNrX293bmVyc2hpcD0zRGNoZWNrX293bmVyc2hpcCwgY2hlY2tf
YWNjZXNzaWJsZT0zRGNoZWNrX2FjPQpjZXNzaWJsZSwgZGVsZXRlZD0zRGRlbGV0ZWQgKQogICAg
ICAgICBoaXN0b3J5ID0zRCBzZWxmLnNlY3VyaXR5X2NoZWNrKCB0cmFucywgaGlzdG9yeSwgY2hl
Y2tfb3duZXJzaGlwLCA9CmNoZWNrX2FjY2Vzc2libGUgKQogICAgICAgICByZXR1cm4gaGlzdG9y
eQotCi0gICAgZGVmIGdldF91c2VyX2hpc3Rvcmllcyggc2VsZiwgdHJhbnMsIHVzZXI9M0ROb25l
LCBpbmNsdWRlX2RlbGV0ZWQ9M0RGYT0KbHNlLCBvbmx5X2RlbGV0ZWQ9M0RGYWxzZSApOgotICAg
ICAgICAiIiIKLSAgICAgICAgR2V0IGFsbCB0aGUgaGlzdG9yaWVzIGZvciBhIGdpdmVuIHVzZXIg
KGRlZmF1bHRpbmcgdG8gYHRyYW5zLnVzZXJgKQotICAgICAgICBvcmRlcmVkIGJ5IHVwZGF0ZSB0
aW1lIGFuZCBmaWx0ZXJlZCBvbiB3aGV0aGVyIHRoZXkndmUgYmVlbiBkZWxldGU9CmQuCi0gICAg
ICAgICIiIgotICAgICAgICAjIGhhbmRsZSBkZWZhdWx0IGFuZC9vciBhbm9ueW1vdXMgdXNlciAo
d2hpY2ggc3RpbGwgbWF5IG5vdCBoYXZlIGE9CiBoaXN0b3J5IHlldCkKLSAgICAgICAgdXNlciA9
M0QgdXNlciBvciB0cmFucy51c2VyCi0gICAgICAgIGlmIG5vdCB1c2VyOgotICAgICAgICAgICAg
Y3VycmVudF9oaXN0b3J5ID0zRCB0cmFucy5nZXRfaGlzdG9yeSgpCi0gICAgICAgICAgICByZXR1
cm4gWyBjdXJyZW50X2hpc3RvcnkgXSBpZiBjdXJyZW50X2hpc3RvcnkgZWxzZSBbXQotCi0gICAg
ICAgIGhpc3RvcnlfbW9kZWwgPTNEIHRyYW5zLm1vZGVsLkhpc3RvcnkKLSAgICAgICAgcXVlcnkg
PTNEICggdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggaGlzdG9yeV9tb2RlbCApCi0gICAgICAgICAg
ICAuZmlsdGVyKCBoaXN0b3J5X21vZGVsLnVzZXIgPTNEPTNEIHVzZXIgKQotICAgICAgICAgICAg
Lm9yZGVyX2J5KCBkZXNjKCBoaXN0b3J5X21vZGVsLnRhYmxlLmMudXBkYXRlX3RpbWUgKSApICkK
LSAgICAgICAgaWYgb25seV9kZWxldGVkOgotICAgICAgICAgICAgcXVlcnkgPTNEIHF1ZXJ5LmZp
bHRlciggaGlzdG9yeV9tb2RlbC5kZWxldGVkID0zRD0zRCBUcnVlICkKLSAgICAgICAgZWxpZiBu
b3QgaW5jbHVkZV9kZWxldGVkOgotICAgICAgICAgICAgcXVlcnkgPTNEIHF1ZXJ5LmZpbHRlcigg
aGlzdG9yeV9tb2RlbC5kZWxldGVkID0zRD0zRCBGYWxzZSApCi0KLSAgICAgICAgcmV0dXJuIHF1
ZXJ5LmFsbCgpCi0gICAgICAgICNVU0VEIElOOiBoaXN0b3J5LnB5LCA2NDAKKyNsaWIvZ2FsYXh5
L3dlYmFwcHMvZ2FsYXh5L2FwaS9hbm5vdGF0aW9ucy5weTo1NTogICAgICAgIGhpc3QgPTNEIHNl
bGYuZ2V0PQpfaGlzdG9yeSggdHJhbnMsIGlkc3RyICkKKyNsaWIvZ2FsYXh5L3dlYmFwcHMvZ2Fs
YXh5L2FwaS9kYXRhc2V0X2NvbGxlY3Rpb25zLnB5OjQ0OiAgICAgICAgICAgIGhpc3RvPQpyeSA9
M0Qgc2VsZi5nZXRfaGlzdG9yeSggdHJhbnMsIGhpc3RvcnlfaWQsIGNoZWNrX293bmVyc2hpcD0z
RFRydWUsIGNoZWNrX2E9CmNjZXNzaWJsZT0zREZhbHNlICkKKyNsaWIvZ2FsYXh5L3dlYmFwcHMv
Z2FsYXh5L2FwaS93b3JrZmxvd3MucHk6MTUyOiAgICAgICAgICAgIGhpc3RvcnkgPTNEIHNlPQps
Zi5nZXRfaGlzdG9yeSggdHJhbnMsIGZyb21faGlzdG9yeV9pZCwgY2hlY2tfb3duZXJzaGlwPTNE
RmFsc2UsIGNoZWNrX2FjY2U9CnNzaWJsZT0zRFRydWUgKQorI2xpYi9nYWxheHkvd2ViYXBwcy9n
YWxheHkvY29udHJvbGxlcnMvZGF0YXNldC5weTo5OTY6ICAgICAgICAgICAgaGlzdG9yeSA9Cj0z
RCBzZWxmLmdldF9oaXN0b3J5KHRyYW5zLCBzb3VyY2VfaGlzdG9yeSkKKyMgYW5kIGFsbGwgb3Zl
ciBoaXN0b3J5IGNvbnRyb2xsZXIKPTIwCiAgICAgZGVmIGdldF9oaXN0b3J5X2RhdGFzZXRzKCBz
ZWxmLCB0cmFucywgaGlzdG9yeSwgc2hvd19kZWxldGVkPTNERmFsc2UsID0Kc2hvd19oaWRkZW49
M0RGYWxzZSwgc2hvd19wdXJnZWQ9M0RGYWxzZSApOgogICAgICAgICAiIiIgUmV0dXJucyBoaXN0
b3J5J3MgZGF0YXNldHMuICIiIgpAQCAtMjg5LDcgKzI3MSw5IEBACiAgICAgICAgIGlmIG5vdCBz
aG93X3B1cmdlZDoKICAgICAgICAgICAgIHF1ZXJ5ID0zRCBxdWVyeS5maWx0ZXIoIHRyYW5zLm1v
ZGVsLkRhdGFzZXQucHVyZ2VkID0zRD0zRCBGYWxzPQplICkKICAgICAgICAgcmV0dXJuIHF1ZXJ5
LmFsbCgpCi0KKyNsaWIvZ2FsYXh5L3Rvb2xzL2ltcF9leHAvX19pbml0X18ucHk6NDE3OiAgICAg
ICAgZGF0YXNldHMgPTNEIHNlbGYuZ2V0X2hpPQpzdG9yeV9kYXRhc2V0cyggdHJhbnMsIGhpc3Rv
cnkgKQorI2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvaGlzdG9yeS5weTox
MjgwOiAgICAgICAgZGF0YXNldHMgPQo9M0Qgc2VsZi5nZXRfaGlzdG9yeV9kYXRhc2V0cyggdHJh
bnMsIGhpc3RvcnkgKQorI2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvcGFn
ZS5weTo3NDI6ICAgICAgICBkYXRhc2V0cyA9M0Qgc2U9CmxmLmdldF9oaXN0b3J5X2RhdGFzZXRz
KCB0cmFucywgaGlzdG9yeSApCj0yMAogY2xhc3MgRXhwb3J0c0hpc3RvcnlNaXhpbjoKPTIwCgpk
aWZmIC1yIDgzNDliOGJiOTk2ZGQ4MmJlZmVhZTAyZGNlNzBhNmU1MDY0ZDBjYWYgLXIgYTNlNzIy
NTA4NmNiYzQzMWY5OThiNGI9CjE4NzhkNzU1Yjg1OTM3MTU2IGxpYi9nYWxheHkvd2ViYXBwcy9n
YWxheHkvYXBpL2RhdGFzZXRfY29sbGVjdGlvbnMucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBz
L2dhbGF4eS9hcGkvZGF0YXNldF9jb2xsZWN0aW9ucy5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFw
cHMvZ2FsYXh5L2FwaS9kYXRhc2V0X2NvbGxlY3Rpb25zLnB5CkBAIC01Miw3ICs1Miw4IEBACiAg
ICAgICAgICAgICB0cmFucy5zdGF0dXMgPTNEIDUwMQogICAgICAgICAgICAgcmV0dXJuCiAgICAg
ICAgIGRhdGFzZXRfY29sbGVjdGlvbl9pbnN0YW5jZSA9M0Qgc2VsZi5fX3NlcnZpY2UoIHRyYW5z
ICkuY3JlYXRlKCB0cj0KYW5zPTNEdHJhbnMsICoqY3JlYXRlX3BhcmFtcyApCi0gICAgICAgIHJl
dHVybiBkaWN0aWZ5X2RhdGFzZXRfY29sbGVjdGlvbl9pbnN0YW5jZSggZGF0YXNldF9jb2xsZWN0
aW9uX2lucz0KdGFuY2UsIHNlY3VyaXR5PTNEdHJhbnMuc2VjdXJpdHksIHBhcmVudD0zRGNyZWF0
ZV9wYXJhbXNbICJwYXJlbnQiIF0gKQorICAgICAgICByZXR1cm4gZGljdGlmeV9kYXRhc2V0X2Nv
bGxlY3Rpb25faW5zdGFuY2UoIGRhdGFzZXRfY29sbGVjdGlvbl9pbnM9CnRhbmNlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3VyaXR5PTNE
dHJhbnMuc2VjdXI9Cml0eSwgcGFyZW50PTNEY3JlYXRlX3BhcmFtc1sgInBhcmVudCIgXSApCj0y
MAogICAgIEBleHBvc2VfYXBpCiAgICAgZGVmIHNob3coIHNlbGYsIHRyYW5zLCBpbnN0YW5jZV90
eXBlLCBpZCwgKiprd2RzICk6CgpkaWZmIC1yIDgzNDliOGJiOTk2ZGQ4MmJlZmVhZTAyZGNlNzBh
NmU1MDY0ZDBjYWYgLXIgYTNlNzIyNTA4NmNiYzQzMWY5OThiNGI9CjE4NzhkNzU1Yjg1OTM3MTU2
IGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvaGlzdG9yeS5weQotLS0gYS9s
aWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL2hpc3RvcnkucHkKKysrIGIvbGli
L2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9oaXN0b3J5LnB5CkBAIC02NDAsMTEg
KzY0MCwxNSBAQAogICAgICAgICBpbmNsdWRlX2RlbGV0ZWRfaGlzdG9yaWVzID0zRCBnYWxheHku
dXRpbC5zdHJpbmdfYXNfYm9vbCggaW5jbHVkZV89CmRlbGV0ZWRfaGlzdG9yaWVzICkKICAgICAg
ICAgb3JkZXIgPTNEIG9yZGVyIGlmIG9yZGVyIGluICggJ3VwZGF0ZScsICduYW1lJywgJ3NpemUn
ICkgZWxzZSAndXBkPQphdGUnCj0yMAorICAgICAgICBkZWxldGVkX2ZpbHRlciA9M0QgTm9uZQor
ICAgICAgICBpZiBub3QgaW5jbHVkZV9kZWxldGVkX2hpc3RvcmllczoKKyAgICAgICAgICAgIGRl
bGV0ZWRfZmlsdGVyID0zRCBtb2RlbC5IaXN0b3J5LmRlbGV0ZWQgPTNEPTNEIEZhbHNlCisKICAg
ICAgICAgY3VycmVudF9oaXN0b3J5ID0zRCB0cmFucy5nZXRfaGlzdG9yeSgpCiAgICAgICAgIGN1
cnJlbnRfaGlzdG9yeV9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBjdXJyZW50X2hp
c3RvcnkuaT0KZCApIGlmIGN1cnJlbnRfaGlzdG9yeSBlbHNlIE5vbmUKPTIwCiAgICAgICAgIGhp
c3RvcnlfZGljdGlvbmFyaWVzID0zRCBbXQotICAgICAgICBmb3IgaGlzdG9yeSBpbiBzZWxmLmdl
dF91c2VyX2hpc3RvcmllcyggdHJhbnMsIHVzZXI9M0R0cmFucy51c2VyLCA9CmluY2x1ZGVfZGVs
ZXRlZD0zRGluY2x1ZGVfZGVsZXRlZF9oaXN0b3JpZXMgKToKKyAgICAgICAgZm9yIGhpc3Rvcnkg
aW4gc2VsZi5tZ3JzLmhpc3Rvcmllcy5ieV91c2VyKCB0cmFucywgdHJhbnMudXNlciwgZmlsPQp0
ZXJzPTNEZGVsZXRlZF9maWx0ZXIgKToKICAgICAgICAgICAgIGhpc3RvcnlfZGljdGlvbmFyeSA9
M0Qgc2VsZi5oaXN0b3J5X3NlcmlhbGl6ZXIuc2VyaWFsaXplX3RvX3ZpPQpldyggdHJhbnMsIGhp
c3RvcnksIHZpZXc9M0QnZGV0YWlsZWQnICkKICAgICAgICAgICAgIGhpc3RvcnlfZGljdGlvbmFy
aWVzLmFwcGVuZCggaGlzdG9yeV9kaWN0aW9uYXJ5ICkKPTIwCgpkaWZmIC1yIDgzNDliOGJiOTk2
ZGQ4MmJlZmVhZTAyZGNlNzBhNmU1MDY0ZDBjYWYgLXIgYTNlNzIyNTA4NmNiYzQzMWY5OThiNGI9
CjE4NzhkNzU1Yjg1OTM3MTU2IHRlc3QvdW5pdC9tYW5hZ2Vycy90ZXN0X0NvbGxlY3Rpb25NYW5h
Z2VyLnB5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC91bml0L21hbmFnZXJzL3Rlc3RfQ29sbGVj
dGlvbk1hbmFnZXIucHkKQEAgLTAsMCArMSwxNzggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgor
IiIiCisiIiIKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcworaW1wb3J0IHBwcmludAoraW1wb3J0IHVu
aXR0ZXN0CisKK19fR0FMQVhZX1JPT1RfXyA9M0Qgb3MuZ2V0Y3dkKCkgKyAnLy4uLy4uLy4uLycK
K3N5cy5wYXRoLmFwcGVuZCggX19HQUxBWFlfUk9PVF9fICsgJ2xpYicgKQorCitmcm9tIGdhbGF4
eSBpbXBvcnQgZWdncworZWdncy5yZXF1aXJlKCAnU1FMQWxjaGVteSA+PTNEIDAuNCcgKQoraW1w
b3J0IHNxbGFsY2hlbXkKKworZnJvbSBnYWxheHkgaW1wb3J0IG1vZGVsCitmcm9tIGdhbGF4eSBp
bXBvcnQgZXhjZXB0aW9ucworCitpbXBvcnQgbW9jaworZnJvbSB0ZXN0X01vZGVsTWFuYWdlciBp
bXBvcnQgQmFzZVRlc3RDYXNlCitmcm9tIGdhbGF4eS5tYW5hZ2Vycy5kYXRhc2V0cyBpbXBvcnQg
RGF0YXNldE1hbmFnZXIKK2Zyb20gZ2FsYXh5Lm1hbmFnZXJzLmhpc3RvcmllcyBpbXBvcnQgSGlz
dG9yeU1hbmFnZXIKK2Zyb20gZ2FsYXh5Lm1hbmFnZXJzLmhkYXMgaW1wb3J0IEhEQU1hbmFnZXIK
KworZnJvbSBnYWxheHkubWFuYWdlcnMuY29sbGVjdGlvbnMgaW1wb3J0IERhdGFzZXRDb2xsZWN0
aW9uTWFuYWdlcgorCisKKyMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECitkZWZhdWx0X3Bhc3N3b3JkID0zRCAnMTIzNDU2
JwordXNlcjJfZGF0YSA9M0QgZGljdCggZW1haWw9M0QndXNlcjJAdXNlcjIudXNlcjInLCB1c2Vy
bmFtZT0zRCd1c2VyMicsIHBhc3M9CndvcmQ9M0RkZWZhdWx0X3Bhc3N3b3JkICkKK3VzZXIzX2Rh
dGEgPTNEIGRpY3QoIGVtYWlsPTNEJ3VzZXIzQHVzZXIzLnVzZXIzJywgdXNlcm5hbWU9M0QndXNl
cjMnLCBwYXNzPQp3b3JkPTNEZGVmYXVsdF9wYXNzd29yZCApCisKKworIyA9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKK2Ns
YXNzIERhdGFzZXRDb2xsZWN0aW9uTWFuYWdlclRlc3RDYXNlKCBCYXNlVGVzdENhc2UgKToKKwor
ICAgIGRlZiBzZXRfdXBfbWFuYWdlcnMoIHNlbGYgKToKKyAgICAgICAgc3VwZXIoIERhdGFzZXRD
b2xsZWN0aW9uTWFuYWdlclRlc3RDYXNlLCBzZWxmICkuc2V0X3VwX21hbmFnZXJzKCkKKyAgICAg
ICAgc2VsZi5kYXRhc2V0X21nciA9M0QgRGF0YXNldE1hbmFnZXIoIHNlbGYuYXBwICkKKyAgICAg
ICAgc2VsZi5oZGFfbWdyID0zRCBIREFNYW5hZ2VyKCBzZWxmLmFwcCApCisgICAgICAgIHNlbGYu
aGlzdG9yeV9tZ3IgPTNEIEhpc3RvcnlNYW5hZ2VyKCBzZWxmLmFwcCApCisgICAgICAgIHNlbGYu
Y29sbGVjdGlvbl9tZ3IgPTNEIERhdGFzZXRDb2xsZWN0aW9uTWFuYWdlciggc2VsZi5hcHAgKQor
CisgICAgZGVmIGJ1aWxkX2VsZW1lbnRfaWRlbnRpZmllcnMoIHNlbGYsIGVsZW1lbnRzICk6Cisg
ICAgICAgIGlkZW50aWZpZXJfbGlzdCA9M0QgW10KKyAgICAgICAgZm9yIGVsZW1lbnQgaW4gZWxl
bWVudHM6CisgICAgICAgICAgICBzcmMgPTNEICdoZGEnCisgICAgICAgICAgICAjaWYgaXNpbnN0
YW5jZSggZWxlbWVudCwgbW9kZWwuRGF0YXNldENvbGxlY3Rpb24gKToKKyAgICAgICAgICAgICMg
ICAgc3JjID0zRCAnY29sbGVjdGlvbicjPworICAgICAgICAgICAgI2VsaWYgaXNpbnN0YW5jZSgg
ZWxlbWVudCwgbW9kZWwuTGlicmFyeURhdGFzZXREYXRhc2V0QXNzb2NpYXQ9CmlvbiApOgorICAg
ICAgICAgICAgIyAgICBzcmMgPTNEICdsZGRhJyM/CisgICAgICAgICAgICBlbmNvZGVkX2lkID0z
RCBzZWxmLnRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggZWxlbWVudC5pZCApCisgICAgICAgICAg
ICBpZGVudGlmaWVyX2xpc3QuYXBwZW5kKCBkaWN0KCBzcmM9M0RzcmMsIG5hbWU9M0RlbGVtZW50
Lm5hbWUsID0KaWQ9M0RlbmNvZGVkX2lkICkgKQorICAgICAgICByZXR1cm4gaWRlbnRpZmllcl9s
aXN0CisKKyAgICBkZWYgdGVzdF9jcmVhdGVfc2ltcGxlX2xpc3QoIHNlbGYgKToKKyAgICAgICAg
b3duZXIgPTNEIHNlbGYudXNlcl9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zLCAqKnVzZXIyX2RhdGEg
KQorCisgICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuaGlzdG9yeV9tZ3IuY3JlYXRlKCBzZWxmLnRy
YW5zLCBuYW1lPTNEJ2hpc3RvcnkxJz0KLCB1c2VyPTNEb3duZXIgKQorCisgICAgICAgIGhkYTEg
PTNEIHNlbGYuaGRhX21nci5jcmVhdGUoIHNlbGYudHJhbnMsIG5hbWU9M0Qnb25lJywKKyAgICAg
ICAgICAgIGhpc3Rvcnk9M0RoaXN0b3J5LCBkYXRhc2V0PTNEc2VsZi5kYXRhc2V0X21nci5jcmVh
dGUoIHNlbGYudHJhPQpucyApICkKKyAgICAgICAgaGRhMiA9M0Qgc2VsZi5oZGFfbWdyLmNyZWF0
ZSggc2VsZi50cmFucywgbmFtZT0zRCd0d28nLAorICAgICAgICAgICAgaGlzdG9yeT0zRGhpc3Rv
cnksIGRhdGFzZXQ9M0RzZWxmLmRhdGFzZXRfbWdyLmNyZWF0ZSggc2VsZi50cmE9Cm5zICkgKQor
ICAgICAgICBoZGEzID0zRCBzZWxmLmhkYV9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zLCBuYW1lPTNE
J3RocmVlJywKKyAgICAgICAgICAgIGhpc3Rvcnk9M0RoaXN0b3J5LCBkYXRhc2V0PTNEc2VsZi5k
YXRhc2V0X21nci5jcmVhdGUoIHNlbGYudHJhPQpucyApICkKKworICAgICAgICBzZWxmLmxvZygg
InNob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBhIG5ldyBDb2xsZWN0aW9uIHZpYSBpZHMiICkKKyAg
ICAgICAgZWxlbWVudF9pZGVudGlmaWVycyA9M0Qgc2VsZi5idWlsZF9lbGVtZW50X2lkZW50aWZp
ZXJzKCBbIGhkYTEsIGhkPQphMiwgaGRhMyBdICkKKyAgICAgICAgaGRjYSA9M0Qgc2VsZi5jb2xs
ZWN0aW9uX21nci5jcmVhdGUoIHNlbGYudHJhbnMsIGhpc3RvcnksICd0ZXN0IGNvPQpsbGVjdGlv
bicsICdsaXN0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
bGVtZW50X2lkZW50aWZpZXJzPTNEZWxlbWVudF9pPQpkZW50aWZpZXJzICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRJc0luc3RhbmNlKCBoZGNhLCBtb2RlbC5IaXN0b3J5RGF0YXNldENvbGxlY3Rpb25B
c3NvY2lhPQp0aW9uICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCggaGRjYS5uYW1lLCAndGVz
dCBjb2xsZWN0aW9uJyApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIGhkY2EuaGlkLCA0ICkK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSggaGRjYS5kZWxldGVkICkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKCBoZGNhLnZpc2libGUgKQorCisgICAgICAgICNwcmludCAnaGRjYSBkaXI6Jwor
ICAgICAgICAjZm9yIGsgaW4gZGlyKCBoZGNhICk6CisgICAgICAgICMgICAgcHJpbnQgaywgZ2V0
YXR0ciggaGRjYSwgaywgJyg/KScgKQorCisgICAgICAgIHNlbGYubG9nKCAic2hvdWxkIGNvbnRh
aW4gYW4gdW5kZXJseWluZywgd2VsbC1mb3JtZWQgRGF0YXNldENvbGxlYz0KdGlvbiIgKQorICAg
ICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoIGhkY2EuY29sbGVjdGlvbiwgbW9kZWwuRGF0YXNl
dENvbGxlY3Rpb24gKQorICAgICAgICBjb2xsZWN0aW9uID0zRCBoZGNhLmNvbGxlY3Rpb24KKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCggY29sbGVjdGlvbi5jb2xsZWN0aW9uX3R5cGUsICdsaXN0
JyApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIGNvbGxlY3Rpb24uc3RhdGUsICdvaycgKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCBsZW4oIGNvbGxlY3Rpb24uZGF0YXNldF9pbnN0YW5j
ZXMgKSwgMyApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIGxlbiggY29sbGVjdGlvbi5lbGVt
ZW50cyApLCAzICkKKworICAgICAgICAjcHJpbnQgJ2hkY2EuY29sbGVjdGlvbiBkaXI6JworICAg
ICAgICAjZm9yIGsgaW4gZGlyKCBoZGNhLmNvbGxlY3Rpb24gKToKKyAgICAgICAgIyAgICBwcmlu
dCBrLCBnZXRhdHRyKCBoZGNhLmNvbGxlY3Rpb24sIGssICcoPyknICkKKworICAgICAgICAjZWxl
bWVudHMgPTNEIGNvbGxlY3Rpb24uZWxlbWVudHMKKyAgICAgICAgI3ByaW50ICdoZGNhLmNvbGxl
Y3Rpb24gZWxlbWVudCBkaXI6JworICAgICAgICAjZm9yIGsgaW4gZGlyKCBlbGVtZW50c1swXSAp
OgorICAgICAgICAjICAgIHByaW50IGssIGdldGF0dHIoIGVsZW1lbnRzWzBdLCBrLCAnKD8pJyAp
CisKKyAgICAgICAgc2VsZi5sb2coICJhbmQgdGhhdCBjb2xsZWN0aW9uIHNob3VsZCBoYXZlIHRo
cmVlIHdlbGwtZm9ybWVkIEVsZW1lPQpudHMiICkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3Rh
bmNlKCBjb2xsZWN0aW9uLmVsZW1lbnRzWzBdLCBtb2RlbC5EYXRhc2V0Q29sbGVjPQp0aW9uRWxl
bWVudCApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIGNvbGxlY3Rpb24uZWxlbWVudHNbMF0u
ZWxlbWVudF9pZGVudGlmaWVyLCAnb25lJz0KICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgg
Y29sbGVjdGlvbi5lbGVtZW50c1swXS5lbGVtZW50X2luZGV4LCAwICkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCggY29sbGVjdGlvbi5lbGVtZW50c1swXS5lbGVtZW50X3R5cGUsICdoZGEnICkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCggY29sbGVjdGlvbi5lbGVtZW50c1swXS5lbGVtZW50
X29iamVjdCwgaGRhMSApCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKCBjb2xsZWN0
aW9uLmVsZW1lbnRzWzFdLCBtb2RlbC5EYXRhc2V0Q29sbGVjPQp0aW9uRWxlbWVudCApCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoIGNvbGxlY3Rpb24uZWxlbWVudHNbMV0uZWxlbWVudF9pZGVu
dGlmaWVyLCAndHdvJz0KICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCggY29sbGVjdGlvbi5l
bGVtZW50c1sxXS5lbGVtZW50X2luZGV4LCAxICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgg
Y29sbGVjdGlvbi5lbGVtZW50c1sxXS5lbGVtZW50X3R5cGUsICdoZGEnICkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCggY29sbGVjdGlvbi5lbGVtZW50c1sxXS5lbGVtZW50X29iamVjdCwgaGRh
MiApCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKCBjb2xsZWN0aW9uLmVsZW1lbnRz
WzJdLCBtb2RlbC5EYXRhc2V0Q29sbGVjPQp0aW9uRWxlbWVudCApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoIGNvbGxlY3Rpb24uZWxlbWVudHNbMl0uZWxlbWVudF9pZGVudGlmaWVyLCAndGhy
ZT0KZScgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCBjb2xsZWN0aW9uLmVsZW1lbnRzWzJd
LmVsZW1lbnRfaW5kZXgsIDIgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCBjb2xsZWN0aW9u
LmVsZW1lbnRzWzJdLmVsZW1lbnRfdHlwZSwgJ2hkYScgKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCBjb2xsZWN0aW9uLmVsZW1lbnRzWzJdLmVsZW1lbnRfb2JqZWN0LCBoZGEzICkKKworICAg
ICAgICBzZWxmLmxvZyggInNob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBhIG5ldyBDb2xsZWN0aW9u
IHZpYSBvYmplY3RzIiApCisgICAgICAgIGVsZW1lbnRzID0zRCBkaWN0KCBvbmU9M0RoZGExLCB0
d289M0RoZGEyLCB0aHJlZT0zRGhkYTMgKQorICAgICAgICBoZGNhMiA9M0Qgc2VsZi5jb2xsZWN0
aW9uX21nci5jcmVhdGUoIHNlbGYudHJhbnMsIGhpc3RvcnksICd0ZXN0IGM9Cm9sbGVjdGlvbiAy
JywgJ2xpc3QnLCBlbGVtZW50cz0zRGVsZW1lbnRzICkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0lu
c3RhbmNlKCBoZGNhMiwgbW9kZWwuSGlzdG9yeURhdGFzZXRDb2xsZWN0aW9uQXNzb2NpPQphdGlv
biApCisKKyAgICAjZGVmIHRlc3RfYmFzZSggc2VsZiApOgorICAgICMgICAgZGF0YXNldDEgPTNE
IHNlbGYuZGF0YXNldF9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zICkKKyAgICAjICAgIGRhdGFzZXQy
ID0zRCBzZWxmLmRhdGFzZXRfbWdyLmNyZWF0ZSggc2VsZi50cmFucyApCisgICAgIworICAgICMg
ICAgc2VsZi5sb2coICJzaG91bGQgYmUgYWJsZSB0byBxdWVyeSIgKQorICAgICMgICAgZGF0YXNl
dHMgPTNEIHNlbGYudHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggbW9kZWwuRGF0YXNldCApLmFsbCgp
CisgICAgIyAgICBzZWxmLmFzc2VydEVxdWFsKCBzZWxmLmRhdGFzZXRfbWdyLmxpc3QoIHNlbGYu
dHJhbnMgKSwgZGF0YXNldHMgKQorICAgICMgICAgc2VsZi5hc3NlcnRFcXVhbCggc2VsZi5kYXRh
c2V0X21nci5vbmUoIHNlbGYudHJhbnMsIGZpbHRlcnM9M0QoIG09Cm9kZWwuRGF0YXNldC5pZCA9
M0Q9M0QgZGF0YXNldDEuaWQgKSApLCBkYXRhc2V0MSApCisgICAgIyAgICBzZWxmLmFzc2VydEVx
dWFsKCBzZWxmLmRhdGFzZXRfbWdyLmJ5X2lkKCBzZWxmLnRyYW5zLCBkYXRhc2V0MS5pZD0KICks
IGRhdGFzZXQxICkKKyAgICAjICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYuZGF0YXNldF9tZ3Iu
YnlfaWRzKCBzZWxmLnRyYW5zLCBbIGRhdGFzZXQyPQouaWQsIGRhdGFzZXQxLmlkIF0gKSwgWyBk
YXRhc2V0MiwgZGF0YXNldDEgXSApCisgICAgIworICAgICMgICAgc2VsZi5sb2coICJzaG91bGQg
YmUgYWJsZSB0byBsaW1pdCBhbmQgb2Zmc2V0IiApCisgICAgIyAgICBzZWxmLmFzc2VydEVxdWFs
KCBzZWxmLmRhdGFzZXRfbWdyLmxpc3QoIHNlbGYudHJhbnMsIGxpbWl0PTNEMSApLD0KIGRhdGFz
ZXRzWzA6MV0gKQorICAgICMgICAgc2VsZi5hc3NlcnRFcXVhbCggc2VsZi5kYXRhc2V0X21nci5s
aXN0KCBzZWxmLnRyYW5zLCBvZmZzZXQ9M0QxICk9CiwgZGF0YXNldHNbMTpdICkKKyAgICAjICAg
IHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYuZGF0YXNldF9tZ3IubGlzdCggc2VsZi50cmFucywgbGlt
aXQ9M0QxLCBvPQpmZnNldD0zRDEgKSwgZGF0YXNldHNbMToyXSApCisgICAgIworICAgICMgICAg
c2VsZi5hc3NlcnRFcXVhbCggc2VsZi5kYXRhc2V0X21nci5saXN0KCBzZWxmLnRyYW5zLCBsaW1p
dD0zRDAgKSw9CiBbXSApCisgICAgIyAgICBzZWxmLmFzc2VydEVxdWFsKCBzZWxmLmRhdGFzZXRf
bWdyLmxpc3QoIHNlbGYudHJhbnMsIG9mZnNldD0zRDMgKT0KLCBbXSApCisgICAgIworICAgICMg
ICAgc2VsZi5sb2coICJzaG91bGQgYmUgYWJsZSB0byBvcmRlciIgKQorICAgICMgICAgc2VsZi5h
c3NlcnRFcXVhbCggc2VsZi5kYXRhc2V0X21nci5saXN0KCBzZWxmLnRyYW5zLCBvcmRlcl9ieT0z
RHM9CnFsYWxjaGVteS5kZXNjKCBtb2RlbC5EYXRhc2V0LmNyZWF0ZV90aW1lICkgKSwKKyAgICAj
ICAgICAgICBbIGRhdGFzZXQyLCBkYXRhc2V0MSBdICkKKyAgICAjCisgICAgI2RlZiB0ZXN0X2Rl
bGV0ZSggc2VsZiApOgorICAgICMgICAgaXRlbTEgPTNEIHNlbGYuZGF0YXNldF9tZ3IuY3JlYXRl
KCBzZWxmLnRyYW5zICkKKyAgICAjCisgICAgIyAgICBzZWxmLmxvZyggInNob3VsZCBiZSBhYmxl
IHRvIGRlbGV0ZSBhbmQgdW5kZWxldGUgYW4gaGRhIiApCisgICAgIyAgICBzZWxmLmFzc2VydEZh
bHNlKCBpdGVtMS5kZWxldGVkICkKKyAgICAjICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYuZGF0
YXNldF9tZ3IuZGVsZXRlKCBzZWxmLnRyYW5zLCBpdGVtMSApLCBpPQp0ZW0xICkKKyAgICAjICAg
IHNlbGYuYXNzZXJ0VHJ1ZSggaXRlbTEuZGVsZXRlZCApCisgICAgIyAgICBzZWxmLmFzc2VydEVx
dWFsKCBzZWxmLmRhdGFzZXRfbWdyLnVuZGVsZXRlKCBzZWxmLnRyYW5zLCBpdGVtMSApLD0KIGl0
ZW0xICkKKyAgICAjICAgIHNlbGYuYXNzZXJ0RmFsc2UoIGl0ZW0xLmRlbGV0ZWQgKQorICAgICMK
KyAgICAjZGVmIHRlc3RfcHVyZ2VfYWxsb3dlZCggc2VsZiApOgorICAgICMgICAgc2VsZi50cmFu
cy5hcHAuY29uZmlnLmFsbG93X3VzZXJfZGF0YXNldF9wdXJnZSA9M0QgVHJ1ZQorICAgICMgICAg
aXRlbTEgPTNEIHNlbGYuZGF0YXNldF9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zICkKKyAgICAjCisg
ICAgIyAgICBzZWxmLmxvZyggInNob3VsZCBwdXJnZSBhbiBoZGEgaWYgY29uZmlnIGRvZXMgYWxs
b3ciICkKKyAgICAjICAgIHNlbGYuYXNzZXJ0RmFsc2UoIGl0ZW0xLnB1cmdlZCApCisgICAgIyAg
ICBzZWxmLmFzc2VydEVxdWFsKCBzZWxmLmRhdGFzZXRfbWdyLnB1cmdlKCBzZWxmLnRyYW5zLCBp
dGVtMSApLCBpdD0KZW0xICkKKyAgICAjICAgIHNlbGYuYXNzZXJ0VHJ1ZSggaXRlbTEucHVyZ2Vk
ICkKKyAgICAjCisgICAgI2RlZiB0ZXN0X3B1cmdlX25vdF9hbGxvd2VkKCBzZWxmICk6CisgICAg
IyAgICBzZWxmLnRyYW5zLmFwcC5jb25maWcuYWxsb3dfdXNlcl9kYXRhc2V0X3B1cmdlID0zRCBG
YWxzZQorICAgICMgICAgaXRlbTEgPTNEIHNlbGYuZGF0YXNldF9tZ3IuY3JlYXRlKCBzZWxmLnRy
YW5zICkKKyAgICAjCisgICAgIyAgICBzZWxmLmxvZyggInNob3VsZCByYWlzZSBhbiBlcnJvciB3
aGVuIHB1cmdpbmcgYW4gaGRhIGlmIGNvbmZpZyBkbz0KZXMgbm90IGFsbG93IiApCisgICAgIyAg
ICBzZWxmLmFzc2VydEZhbHNlKCBpdGVtMS5wdXJnZWQgKQorICAgICMgICAgc2VsZi5hc3NlcnRS
YWlzZXMoIGV4Y2VwdGlvbnMuQ29uZmlnRG9lc05vdEFsbG93RXhjZXB0aW9uLCBzZWxmLmQ9CmF0
YXNldF9tZ3IucHVyZ2UsIHNlbGYudHJhbnMsIGl0ZW0xICkKKyAgICAjICAgIHNlbGYuYXNzZXJ0
RmFsc2UoIGl0ZW0xLnB1cmdlZCApCisKKworIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKK2lmIF9fbmFtZV9fID0zRD0z
RCAnX19tYWluX18nOgorICAgICMgb3IgbW9yZSBnZW5lcmFsbHksIG5vc2V0ZXN0cyB0ZXN0X3Jl
c291cmNlbWFuYWdlcnMucHkgLXMgLXYKKyAgICB1bml0dGVzdC5tYWluKCkKCmRpZmYgLXIgODM0
OWI4YmI5OTZkZDgyYmVmZWFlMDJkY2U3MGE2ZTUwNjRkMGNhZiAtciBhM2U3MjI1MDg2Y2JjNDMx
Zjk5OGI0Yj0KMTg3OGQ3NTViODU5MzcxNTYgdGVzdC91bml0L21hbmFnZXJzL3Rlc3RfSERBTWFu
YWdlci5weQotLS0gYS90ZXN0L3VuaXQvbWFuYWdlcnMvdGVzdF9IREFNYW5hZ2VyLnB5CisrKyBi
L3Rlc3QvdW5pdC9tYW5hZ2Vycy90ZXN0X0hEQU1hbmFnZXIucHkKQEAgLTcxLDcgKzcxLDcgQEAK
ICAgICAgICAgZGF0YXNldDEgPTNEIHNlbGYuZGF0YXNldF9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5z
ICkKPTIwCiAgICAgICAgIHNlbGYubG9nKCAic2hvdWxkIGJlIGFibGUgdG8gY3JlYXRlIGEgbmV3
IEhEQSB3aXRoIGEgc3BlY2lmaWVkIGhpcz0KdG9yeSBhbmQgZGF0YXNldCIgKQotICAgICAgICBo
ZGExID0zRCBzZWxmLmhkYV9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zLCBoaXN0b3J5PTNEaGlzdG9y
eTEsIGRhdGE9CnNldD0zRGRhdGFzZXQxLCBoaWQ9M0QxICkKKyAgICAgICAgaGRhMSA9M0Qgc2Vs
Zi5oZGFfbWdyLmNyZWF0ZSggc2VsZi50cmFucywgaGlzdG9yeT0zRGhpc3RvcnkxLCBkYXRhPQpz
ZXQ9M0RkYXRhc2V0MSApCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSggaGRhMSwgbW9k
ZWwuSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbiApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
IGhkYTEsIHNlbGYudHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggbW9kZWwuSGlzdG9yeT0KRGF0YXNl
dEFzc29jaWF0aW9uICkuZ2V0KCBoZGExLmlkICkgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCBoZGExLmhpc3RvcnksIGhpc3RvcnkxICkKQEAgLTc5LDE4ICs3OSwxOCBAQAogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCBoZGExLmhpZCwgMSApCj0yMAogICAgICAgICBzZWxmLmxvZyggInNo
b3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBhIG5ldyBIREEgd2l0aCBvbmx5IGEgc3BlY2lmaWU9CmQg
aGlzdG9yeSBhbmQgbm8gZGF0YXNldCIgKQotICAgICAgICBoZGEyID0zRCBzZWxmLmhkYV9tZ3Iu
Y3JlYXRlKCBzZWxmLnRyYW5zLCBoaXN0b3J5PTNEaGlzdG9yeTEsIGhpZD0KPTNEMiApCisgICAg
ICAgIGhkYTIgPTNEIHNlbGYuaGRhX21nci5jcmVhdGUoIHNlbGYudHJhbnMsIGhpc3Rvcnk9M0Ro
aXN0b3J5MSApCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSggaGRhMiwgbW9kZWwuSGlz
dG9yeURhdGFzZXRBc3NvY2lhdGlvbiApCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSgg
aGRhMi5kYXRhc2V0LCBtb2RlbC5EYXRhc2V0ICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgg
aGRhMi5oaXN0b3J5LCBoaXN0b3J5MSApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIGhkYTIu
aGlkLCAyICkKPTIwCiAgICAgICAgIHNlbGYubG9nKCAic2hvdWxkIGJlIGFibGUgdG8gY3JlYXRl
IGEgbmV3IEhEQSB3aXRoIG5vIGhpc3RvcnkgYW5kID0Kbm8gZGF0YXNldCIgKQotICAgICAgICBo
ZGEzID0zRCBzZWxmLmhkYV9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zICkKKyAgICAgICAgaGRhMyA9
M0Qgc2VsZi5oZGFfbWdyLmNyZWF0ZSggc2VsZi50cmFucywgaGlkPTNETm9uZSApCiAgICAgICAg
IHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSggaGRhMywgbW9kZWwuSGlzdG9yeURhdGFzZXRBc3NvY2lh
dGlvbiApCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSggaGRhMy5kYXRhc2V0LCBtb2Rl
bC5EYXRhc2V0LCBtc2c9M0QiZGF0YXNldD0KIHdpbGwgYmUgYXV0byBjcmVhdGVkIiApCiAgICAg
ICAgIHNlbGYuYXNzZXJ0SXNOb25lKCBoZGEzLmhpc3RvcnksIG1zZz0zRCJoaXN0b3J5IHdpbGwg
YmUgTm9uZSIgKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCBoZGEzLmhpZCwgTm9uZSApCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIGhkYTMuaGlkLCBOb25lLCBtc2c9M0Qic2hvdWxkIGFs
bG93IHNldHRpbmcgaGlkID0KdG8gTm9uZSAob3IgYW55IG90aGVyIHZhbHVlKSIgKQo9MjAKICAg
ICBkZWYgdGVzdF9jb3B5X2Zyb21faGRhKCBzZWxmICk6CiAgICAgICAgIG93bmVyID0zRCBzZWxm
LnVzZXJfbWdyLmNyZWF0ZSggc2VsZi50cmFucywgKip1c2VyMl9kYXRhICkKCgpodHRwczovL2Jp
dGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvOThkNGNiNTgxZjYyLwpD
aGFuZ2VzZXQ6ICAgOThkNGNiNTgxZjYyClVzZXI6ICAgICAgICBjYXJsZmViZXJoYXJkCkRhdGU6
ICAgICAgICAyMDE1LTAxLTA4IDIxOjIzOjUxKzAwOjAwClN1bW1hcnk6ICAgICBVbml0IHRlc3Qg
dGhlIGNvbGxlY3Rpb25zIG1hbmFnZXI7IHR3ZWFrcyB0byB1c2VyX3NoYXJlcyBpbiBzaD0KYXJh
YmxlCkFmZmVjdGVkICM6ICA1IGZpbGVzCgpkaWZmIC1yIGEzZTcyMjUwODZjYmM0MzFmOTk4YjRi
MTg3OGQ3NTViODU5MzcxNTYgLXIgOThkNGNiNTgxZjYyMDEzNTlhN2RkMDg9CjQ1YWIyZDg1YjEx
ZTk4NWQ3IGxpYi9nYWxheHkvbWFuYWdlcnMvYmFzZS5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFn
ZXJzL2Jhc2UucHkKKysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vycy9iYXNlLnB5CkBAIC0yMjAsMTkg
KzIyMCwzNyBAQAogICAgIGRlZiBvbmUoIHNlbGYsIHRyYW5zLCAqKmt3YXJncyApOgogICAgICAg
ICAiIiIKICAgICAgICAgU2VuZHMga3dhcmdzIHRvIGJ1aWxkIHRoZSBxdWVyeSBhbmQgcmV0dXJu
cyBvbmUgYW5kIG9ubHkgb25lIG1vZGVsLgorICAgICAgICAiIiIKKyAgICAgICAgcXVlcnkgPTNE
IHNlbGYucXVlcnkoIHRyYW5zLCAqKmt3YXJncyApCisgICAgICAgIHJldHVybiBzZWxmLl9vbmVf
d2l0aF9yZWNhc3RfZXJyb3JzKCBxdWVyeSApCisKKyAgICBkZWYgX29uZV93aXRoX3JlY2FzdF9l
cnJvcnMoIHNlbGYsIHF1ZXJ5ICk6CisgICAgICAgICIiIgorICAgICAgICBDYWxsIHNxbGFsY2hl
bXkncyBvbmUgYW5kIHJlY2FzdCBlcnJvcnMgdG8gc2VyaWFsaXphYmxlIGVycm9ycyBpZiA9CmFu
eS4KPTIwCiAgICAgICAgIDpyYWlzZXMgZXhjZXB0aW9ucy5PYmplY3ROb3RGb3VuZDogaWYgbm8g
bW9kZWwgaXMgZm91bmQKICAgICAgICAgOnJhaXNlcyBleGNlcHRpb25zLkNvbmZsaWN0OiBpZiBt
b3JlIHRoYW4gb25lIG1vZGVsIGlzIGZvdW5kCiAgICAgICAgICIiIgogICAgICAgICAjIG92ZXJy
aWRkZW4gdG8gcmFpc2Ugc2VyaWFsaXphYmxlIGVycm9ycwogICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICByZXR1cm4gc2VsZi5xdWVyeSggdHJhbnMsICoqa3dhcmdzICkub25lKCkKKyAgICAgICAg
ICAgIHJldHVybiBxdWVyeS5vbmUoKQogICAgICAgICBleGNlcHQgc3FsYWxjaGVteS5vcm0uZXhj
Lk5vUmVzdWx0Rm91bmQsIG5vdF9mb3VuZDoKICAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMu
T2JqZWN0Tm90Rm91bmQoIHNlbGYubW9kZWxfY2xhc3MuX19uYW1lX18gKyAnPQogbm90IGZvdW5k
JyApCiAjVE9ETzogZXhjZXB0aW9ucy5JbmNvbnNpc3RlbnREYXRhYmFzZT8KICAgICAgICAgZXhj
ZXB0IHNxbGFsY2hlbXkub3JtLmV4Yy5NdWx0aXBsZVJlc3VsdHNGb3VuZCwgbXVsdGlfZm91bmQ6
CiAgICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLkNvbmZsaWN0KCAnZm91bmQgbW9yZSB0aGFu
IG9uZSAnICsgc2VsZi5tb2RlbD0KX2NsYXNzLl9fbmFtZV9fICkKPTIwCisgICAgZGVmIF9vbmVf
b3Jfbm9uZSggc2VsZiwgcXVlcnkgKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUg
b2JqZWN0IGlmIGZvdW5kLCBOb25lIGlmIGl0J3Mgbm90LgorCisgICAgICAgIDpyYWlzZXMgZXhj
ZXB0aW9ucy5Db25mbGljdDogaWYgbW9yZSB0aGFuIG9uZSBtb2RlbCBpcyBmb3VuZAorICAgICAg
ICAiIiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX29uZV93aXRoX3Jl
Y2FzdF9lcnJvcnMoIHF1ZXJ5ICkKKyAgICAgICAgZXhjZXB0IGV4Y2VwdGlvbnMuT2JqZWN0Tm90
Rm91bmQsIG5vdF9mb3VuZDoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKICAgICBkZWYgbGlz
dCggc2VsZiwgdHJhbnMsIHF1ZXJ5PTNETm9uZSwgKiprd2FyZ3MgKToKICAgICAgICAgIiIiCiAg
ICAgICAgIFNlbmRzIGt3YXJncyB0byBidWlsZCB0aGUgcXVlcnkgcmV0dXJuIGFsbCBtb2RlbHMg
Zm91bmQuCkBAIC0zNDUsNyArMzYzLDcgQEAKPTIwCiAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0tLS0g
ZGVsZXRlCiAgICAgIyBhIHJlbmFtZSBvZiBzcWwgREVMRVRFIHRvIGRpZmZlcmVudGlhdGUgZnJv
bSB0aGUgR2FsYXh5IG5vdGlvbiBvZiBtYT0KcmtfYXNfZGVsZXRlZAotICAgICNkZWYgcmVtb3Zl
X2Zyb21fZGIoIHNlbGYsIHRyYW5zLCBpdGVtLCAqKmt3YXJncyApOgorICAgICNkZWYgZGVzdHJv
eSggc2VsZiwgdHJhbnMsIGl0ZW0sICoqa3dhcmdzICk6CiAgICAgIyAgICByZXR1cm4gaXRlbQo9
MjAKPTIwCgpkaWZmIC1yIGEzZTcyMjUwODZjYmM0MzFmOTk4YjRiMTg3OGQ3NTViODU5MzcxNTYg
LXIgOThkNGNiNTgxZjYyMDEzNTlhN2RkMDg9CjQ1YWIyZDg1YjExZTk4NWQ3IGxpYi9nYWxheHkv
bWFuYWdlcnMvaGlzdG9yaWVzLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvaGlzdG9yaWVz
LnB5CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvaGlzdG9yaWVzLnB5CkBAIC05Miw3ICs5Miw3
IEBACiAgICAgZGVmIHB1cmdlKCBzZWxmLCB0cmFucywgaGlzdG9yeSwgZmx1c2g9M0RUcnVlLCAq
Kmt3YXJncyApOgogICAgICAgICAiIiIKICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuZXJyb3Jf
dW5sZXNzX2RhdGFzZXRfcHVyZ2VfYWxsb3dlZCggdHJhbnMsIGhpc3RvcnkgKQorICAgICAgICBz
ZWxmLmhkYV9tZ3IuZGF0YXNldF9tZ3IuZXJyb3JfdW5sZXNzX2RhdGFzZXRfcHVyZ2VfYWxsb3dl
ZCggdHJhbnM9CiwgaGlzdG9yeSApCj0yMAogICAgICAgICAjIEZpcnN0IHB1cmdlIGFsbCB0aGUg
ZGF0YXNldHMKICAgICAgICAgZm9yIGhkYSBpbiBoaXN0b3J5LmRhdGFzZXRzOgoKZGlmZiAtciBh
M2U3MjI1MDg2Y2JjNDMxZjk5OGI0YjE4NzhkNzU1Yjg1OTM3MTU2IC1yIDk4ZDRjYjU4MWY2MjAx
MzU5YTdkZDA4PQo0NWFiMmQ4NWIxMWU5ODVkNyBsaWIvZ2FsYXh5L21hbmFnZXJzL3NoYXJhYmxl
LnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvc2hhcmFibGUucHkKKysrIGIvbGliL2dhbGF4
eS9tYW5hZ2Vycy9zaGFyYWJsZS5weQpAQCAtMzUsNiArMzUsOCBAQAogICAgICMgLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li49Ci4uLi4uIGhhcyBhIHVzZXIKICAgICBkZWYgX3F1ZXJ5X2J5X3VzZXIoIHNlbGYsIHRyYW5z
LCB1c2VyLCBmaWx0ZXJzPTNETm9uZSwgKiprd2FyZ3MgKToKICAgICAgICAgIiIiCisgICAgICAg
IFJldHVybiBxdWVyeSBmb3IgYWxsIGl0ZW1zIChvZiBtb2RlbF9jbGFzcyB0eXBlKSBhc3NvY2lh
dGVkIHdpdGggdD0KaGUgZ2l2ZW4KKyAgICAgICAgYHVzZXJgLgogICAgICAgICAiIiIKICAgICAg
ICAgdXNlcl9maWx0ZXIgPTNEIHNlbGYubW9kZWxfY2xhc3MudXNlcl9pZCA9M0Q9M0QgdXNlci5p
ZAogICAgICAgICBmaWx0ZXJzPTNEc2VsZi5fbXVuZ2VfZmlsdGVycyggdXNlcl9maWx0ZXIsIGZp
bHRlcnMgKQpAQCAtNDIsNiArNDQsOCBAQAo9MjAKICAgICBkZWYgYnlfdXNlciggc2VsZiwgdHJh
bnMsIHVzZXIsICoqa3dhcmdzICk6CiAgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gbGlzdCBm
b3IgYWxsIGl0ZW1zIChvZiBtb2RlbF9jbGFzcyB0eXBlKSBhc3NvY2lhdGVkIHdpdGggdGg9CmUg
Z2l2ZW4KKyAgICAgICAgYHVzZXJgLgogICAgICAgICAiIiIKICAgICAgICAgcXVlcnkgPTNEIHNl
bGYuX3F1ZXJ5X2J5X3VzZXIoIHRyYW5zLCB1c2VyLCAqKmt3YXJncyApCiAgICAgICAgIHJldHVy
biBzZWxmLmxpc3QoIHRyYW5zLCBxdWVyeT0zRHF1ZXJ5LCAqKmt3YXJncyApCkBAIC0xNzEsNiAr
MTc1LDkgQEAKICAgICAjIHNoYXJpbmcgaXMgb2Z0ZW4gZG9uZSB2aWEgYSAzcmQgdGFibGUgYnR3
biBhIFVzZXIgYW5kIGFuIGl0ZW0gLT4gYSA8PQpJdGVtPlVzZXJTaGFyZUFzc29jaWF0aW9uCiAg
ICAgZGVmIGdldF9zaGFyZV9hc3NvY3MoIHNlbGYsIHRyYW5zLCBpdGVtLCB1c2VyPTNETm9uZSAp
OgogICAgICAgICAiIiIKKyAgICAgICAgR2V0IHRoZSBVc2VyU2hhcmVBc3NvY2lhdGlvbnMgZm9y
IHRoZSBgaXRlbWAuCisKKyAgICAgICAgT3B0aW9uYWxseSBzZW5kIGluIGB1c2VyYCB0byB0ZXN0
IGZvciBhIHNpbmdsZSBtYXRjaC4KICAgICAgICAgIiIiCiAgICAgICAgIHF1ZXJ5ID0zRCBzZWxm
LnF1ZXJ5X2Fzc29jaWF0ZWQoIHRyYW5zLCBzZWxmLnVzZXJfc2hhcmVfbW9kZWwsIGl0ZT0KbSAp
CiAgICAgICAgIGlmIHVzZXIgaXMgbm90IE5vbmU6CkBAIC0xNzksMzEgKzE4Niw0NSBAQAo9MjAK
ICAgICBkZWYgc2hhcmVfd2l0aCggc2VsZiwgdHJhbnMsIGl0ZW0sIHVzZXIsIGZsdXNoPTNEVHJ1
ZSApOgogICAgICAgICAiIiIKKyAgICAgICAgR2V0IG9yIGNyZWF0ZSBhIHNoYXJlIGZvciB0aGUg
Z2l2ZW4gdXNlciAob3IgdXNlcnMgaWYgYHVzZXJgIGlzIGEgPQpsaXN0KS4KICAgICAgICAgIiIi
CiAgICAgICAgICMgYWxsb3cgdXNlciB0byBiZSBhIGxpc3QgYW5kIGNhbGwgcmVjdXJzaXZseQog
ICAgICAgICBpZiBpc2luc3RhbmNlKCB1c2VyLCBsaXN0ICk6CiAgICAgICAgICAgICByZXR1cm4g
bWFwKCBsYW1iZGEgdXNlcjogc2VsZi5zaGFyZV93aXRoKCB0cmFucywgaXRlbSwgdXNlciwgZj0K
bHVzaD0zREZhbHNlICksIHVzZXIgKQorICAgICAgICAjIGdldCBvciBjcmVhdGUKKyAgICAgICAg
ZXhpc3RpbmcgPTNEIHNlbGYuZ2V0X3NoYXJlX2Fzc29jcyggdHJhbnMsIGl0ZW0sIHVzZXI9M0R1
c2VyICkKKyAgICAgICAgaWYgZXhpc3Rpbmc6CisgICAgICAgICAgICByZXR1cm4gZXhpc3Rpbmcu
cG9wKCAwICkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2NyZWF0ZV91c2VyX3NoYXJlX2Fzc29jKCB0
cmFucywgaXRlbSwgdXNlciwgZmx1c2g9M0RmPQpsdXNoICkKPTIwCi0gICAgICAgIHNoYXJlID0z
RCBzZWxmLnVzZXJfc2hhcmVfbW9kZWwoKQotICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmFkZCgg
c2hhcmUgKQotICAgICAgICBzZWxmLmFzc29jaWF0ZSggdHJhbnMsIHNoYXJlLCBpdGVtICkKLSAg
ICAgICAgc2hhcmUudXNlciA9M0QgdXNlcgorICAgIGRlZiBfY3JlYXRlX3VzZXJfc2hhcmVfYXNz
b2MoIHNlbGYsIHRyYW5zLCBpdGVtLCB1c2VyLCBmbHVzaD0zRFRydWUgKToKKyAgICAgICAgIiIi
CisgICAgICAgIENyZWF0ZSBhIHNoYXJlIGZvciB0aGUgZ2l2ZW4gdXNlci4KKyAgICAgICAgIiIi
CisgICAgICAgIHVzZXJfc2hhcmVfYXNzb2MgPTNEIHNlbGYudXNlcl9zaGFyZV9tb2RlbCgpCisg
ICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCB1c2VyX3NoYXJlX2Fzc29jICkKKyAgICAgICAg
c2VsZi5hc3NvY2lhdGUoIHRyYW5zLCB1c2VyX3NoYXJlX2Fzc29jLCBpdGVtICkKKyAgICAgICAg
dXNlcl9zaGFyZV9hc3NvYy51c2VyID0zRCB1c2VyCisKKyAgICAgICAgIyB3YWF0PwogICAgICAg
ICBzZWxmLmNyZWF0ZV91bmlxdWVfc2x1ZyggdHJhbnMsIGl0ZW0gKQorCiAgICAgICAgIGlmIGZs
dXNoOgogICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCi0gICAgICAgIHJldHVy
biBpdGVtCisgICAgICAgIHJldHVybiB1c2VyX3NoYXJlX2Fzc29jCj0yMAogICAgIGRlZiB1bnNo
YXJlX3dpdGgoIHNlbGYsIHRyYW5zLCBpdGVtLCB1c2VyLCBmbHVzaD0zRFRydWUgKToKICAgICAg
ICAgIiIiCisgICAgICAgIERlbGV0ZSBhIHVzZXIgc2hhcmUgKG9yIGxpc3Qgb2Ygc2hhcmVzKSBm
cm9tIHRoZSBkYXRhYmFzZS4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoIHVz
ZXIsIGxpc3QgKToKICAgICAgICAgICAgIHJldHVybiBtYXAoIGxhbWJkYSB1c2VyOiBzZWxmLnVu
c2hhcmVfd2l0aCggdHJhbnMsIGl0ZW0sIHVzZXIsPQogZmx1c2g9M0RGYWxzZSApLCB1c2VyICkK
LSAgICAgICAgIyBMb29rIGZvciBhbmQgZGVsZXRlIHNoYXJpbmcgcmVsYXRpb24gZm9yIGhpc3Rv
cnktdXNlci4KLSAgICAgICAgZm9yIGFzc29jIGluIHNlbGYuZ2V0X3NoYXJlX2Fzc29jcyggdHJh
bnMsIGl0ZW0sIHVzZXI9M0R1c2VyICk6Ci0gICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmRl
bGV0ZSggYXNzb2MgKQorICAgICAgICAjIExvb2sgZm9yIGFuZCBkZWxldGUgc2hhcmluZyByZWxh
dGlvbiBmb3IgdXNlci4KKyAgICAgICAgdXNlcl9zaGFyZV9hc3NvYyA9M0Qgc2VsZi5nZXRfc2hh
cmVfYXNzb2NzKCB0cmFucywgaXRlbSwgdXNlcj0zRHVzPQplciApWzBdCisgICAgICAgIHRyYW5z
LnNhX3Nlc3Npb24uZGVsZXRlKCB1c2VyX3NoYXJlX2Fzc29jICkKICAgICAgICAgaWYgZmx1c2g6
CiAgICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKLSAgICAgICAgcmV0dXJuIGl0
ZW0KKyAgICAgICAgcmV0dXJuIHVzZXJfc2hhcmVfYXNzb2MKPTIwCiAgICAgI2RlZiBfcXVlcnlf
c2hhcmVkX3dpdGgoIHNlbGYsIHRyYW5zLCB1c2VyLCBmaWx0ZXJzPTNETm9uZSwgKiprd2FyZ3Mg
KToKICAgICAjI1RPRE86CkBAIC0yMTEsNyArMjMyLDcgQEAKICAgICAjICAgICIiIgogICAgICMg
ICAgcGFzcwo9MjAKLSAgICAjZGVmIGxpc3RfcHVibGlzaGVkKCBzZWxmLCB0cmFucywgdXNlciwg
Kiprd2FyZ3MgKToKKyAgICAjZGVmIGxpc3Rfc2hhcmVkX3dpdGgoIHNlbGYsIHRyYW5zLCB1c2Vy
LCAqKmt3YXJncyApOgogICAgICMgICAgIiIiCiAgICAgIyAgICAiIiIKICAgICAjICAgIHF1ZXJ5
ID0zRCBzZWxmLl9xdWVyeV9zaGFyZWRfd2l0aCggdHJhbnMsIHVzZXIsICoqa3dhcmdzICkKQEAg
LTI4Niw2ICszMDcsNyBAQAo9MjAKICAgICBkZWYgY3JlYXRlX3VuaXF1ZV9zbHVnKCBzZWxmLCB0
cmFucywgaXRlbSwgZmx1c2g9M0RUcnVlICk6CiAgICAgICAgICIiIgorICAgICAgICBTZXQgYSBu
ZXcsIHVuaXF1ZSBzbHVnIG9uIHRoZSBpdGVtLgogICAgICAgICAiIiIKICAgICAgICAgaXRlbS5z
bHVnID0zRCBzZWxmLmdldF91bmlxdWVfc2x1ZyggdHJhbnMsIGl0ZW0gKQogICAgICAgICB0cmFu
cy5zYV9zZXNzaW9uLmFkZCggaXRlbSApCkBAIC0yOTMsMTAgKzMxNSwxMCBAQAogICAgICAgICAg
ICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCiAgICAgICAgIHJldHVybiBpdGVtCj0yMAotICAg
IGRlZiBieV9zbHVnKCBzZWxmLCB0cmFucywgdXNlciwgKiprd2FyZ3MgKToKLSAgICAgICAgIiIi
Ci0gICAgICAgICIiIgotICAgICAgICBwYXNzCisgICAgI2RlZiBieV9zbHVnKCBzZWxmLCB0cmFu
cywgdXNlciwgKiprd2FyZ3MgKToKKyAgICAjICAgICIiIgorICAgICMgICAgIiIiCisgICAgIyAg
ICBwYXNzCj0yMAogICAgICMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi49Ci4uLi4uIGRpc3BsYXkKICAgICAjZGVmIGRp
c3BsYXlfYnlfdXNlcm5hbWVfYW5kX3NsdWcoIHNlbGYsIHRyYW5zLCB1c2VybmFtZSwgc2x1ZyAp
OgoKZGlmZiAtciBhM2U3MjI1MDg2Y2JjNDMxZjk5OGI0YjE4NzhkNzU1Yjg1OTM3MTU2IC1yIDk4
ZDRjYjU4MWY2MjAxMzU5YTdkZDA4PQo0NWFiMmQ4NWIxMWU5ODVkNyB0ZXN0L3VuaXQvbWFuYWdl
cnMvdGVzdF9Db2xsZWN0aW9uTWFuYWdlci5weQotLS0gYS90ZXN0L3VuaXQvbWFuYWdlcnMvdGVz
dF9Db2xsZWN0aW9uTWFuYWdlci5weQorKysgYi90ZXN0L3VuaXQvbWFuYWdlcnMvdGVzdF9Db2xs
ZWN0aW9uTWFuYWdlci5weQpAQCAtMTIwLDU2ICsxMjAsNDEgQEAKICAgICAgICAgaGRjYTIgPTNE
IHNlbGYuY29sbGVjdGlvbl9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zLCBoaXN0b3J5LCAndGVzdCBj
PQpvbGxlY3Rpb24gMicsICdsaXN0JywgZWxlbWVudHM9M0RlbGVtZW50cyApCiAgICAgICAgIHNl
bGYuYXNzZXJ0SXNJbnN0YW5jZSggaGRjYTIsIG1vZGVsLkhpc3RvcnlEYXRhc2V0Q29sbGVjdGlv
bkFzc29jaT0KYXRpb24gKQo9MjAKLSAgICAjZGVmIHRlc3RfYmFzZSggc2VsZiApOgotICAgICMg
ICAgZGF0YXNldDEgPTNEIHNlbGYuZGF0YXNldF9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zICkKLSAg
ICAjICAgIGRhdGFzZXQyID0zRCBzZWxmLmRhdGFzZXRfbWdyLmNyZWF0ZSggc2VsZi50cmFucyAp
Ci0gICAgIwotICAgICMgICAgc2VsZi5sb2coICJzaG91bGQgYmUgYWJsZSB0byBxdWVyeSIgKQot
ICAgICMgICAgZGF0YXNldHMgPTNEIHNlbGYudHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggbW9kZWwu
RGF0YXNldCApLmFsbCgpCi0gICAgIyAgICBzZWxmLmFzc2VydEVxdWFsKCBzZWxmLmRhdGFzZXRf
bWdyLmxpc3QoIHNlbGYudHJhbnMgKSwgZGF0YXNldHMgKQotICAgICMgICAgc2VsZi5hc3NlcnRF
cXVhbCggc2VsZi5kYXRhc2V0X21nci5vbmUoIHNlbGYudHJhbnMsIGZpbHRlcnM9M0QoIG09Cm9k
ZWwuRGF0YXNldC5pZCA9M0Q9M0QgZGF0YXNldDEuaWQgKSApLCBkYXRhc2V0MSApCi0gICAgIyAg
ICBzZWxmLmFzc2VydEVxdWFsKCBzZWxmLmRhdGFzZXRfbWdyLmJ5X2lkKCBzZWxmLnRyYW5zLCBk
YXRhc2V0MS5pZD0KICksIGRhdGFzZXQxICkKLSAgICAjICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNl
bGYuZGF0YXNldF9tZ3IuYnlfaWRzKCBzZWxmLnRyYW5zLCBbIGRhdGFzZXQyPQouaWQsIGRhdGFz
ZXQxLmlkIF0gKSwgWyBkYXRhc2V0MiwgZGF0YXNldDEgXSApCi0gICAgIwotICAgICMgICAgc2Vs
Zi5sb2coICJzaG91bGQgYmUgYWJsZSB0byBsaW1pdCBhbmQgb2Zmc2V0IiApCi0gICAgIyAgICBz
ZWxmLmFzc2VydEVxdWFsKCBzZWxmLmRhdGFzZXRfbWdyLmxpc3QoIHNlbGYudHJhbnMsIGxpbWl0
PTNEMSApLD0KIGRhdGFzZXRzWzA6MV0gKQotICAgICMgICAgc2VsZi5hc3NlcnRFcXVhbCggc2Vs
Zi5kYXRhc2V0X21nci5saXN0KCBzZWxmLnRyYW5zLCBvZmZzZXQ9M0QxICk9CiwgZGF0YXNldHNb
MTpdICkKLSAgICAjICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYuZGF0YXNldF9tZ3IubGlzdCgg
c2VsZi50cmFucywgbGltaXQ9M0QxLCBvPQpmZnNldD0zRDEgKSwgZGF0YXNldHNbMToyXSApCi0g
ICAgIwotICAgICMgICAgc2VsZi5hc3NlcnRFcXVhbCggc2VsZi5kYXRhc2V0X21nci5saXN0KCBz
ZWxmLnRyYW5zLCBsaW1pdD0zRDAgKSw9CiBbXSApCi0gICAgIyAgICBzZWxmLmFzc2VydEVxdWFs
KCBzZWxmLmRhdGFzZXRfbWdyLmxpc3QoIHNlbGYudHJhbnMsIG9mZnNldD0zRDMgKT0KLCBbXSAp
Ci0gICAgIwotICAgICMgICAgc2VsZi5sb2coICJzaG91bGQgYmUgYWJsZSB0byBvcmRlciIgKQot
ICAgICMgICAgc2VsZi5hc3NlcnRFcXVhbCggc2VsZi5kYXRhc2V0X21nci5saXN0KCBzZWxmLnRy
YW5zLCBvcmRlcl9ieT0zRHM9CnFsYWxjaGVteS5kZXNjKCBtb2RlbC5EYXRhc2V0LmNyZWF0ZV90
aW1lICkgKSwKLSAgICAjICAgICAgICBbIGRhdGFzZXQyLCBkYXRhc2V0MSBdICkKLSAgICAjCi0g
ICAgI2RlZiB0ZXN0X2RlbGV0ZSggc2VsZiApOgotICAgICMgICAgaXRlbTEgPTNEIHNlbGYuZGF0
YXNldF9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zICkKLSAgICAjCi0gICAgIyAgICBzZWxmLmxvZygg
InNob3VsZCBiZSBhYmxlIHRvIGRlbGV0ZSBhbmQgdW5kZWxldGUgYW4gaGRhIiApCi0gICAgIyAg
ICBzZWxmLmFzc2VydEZhbHNlKCBpdGVtMS5kZWxldGVkICkKLSAgICAjICAgIHNlbGYuYXNzZXJ0
RXF1YWwoIHNlbGYuZGF0YXNldF9tZ3IuZGVsZXRlKCBzZWxmLnRyYW5zLCBpdGVtMSApLCBpPQp0
ZW0xICkKLSAgICAjICAgIHNlbGYuYXNzZXJ0VHJ1ZSggaXRlbTEuZGVsZXRlZCApCi0gICAgIyAg
ICBzZWxmLmFzc2VydEVxdWFsKCBzZWxmLmRhdGFzZXRfbWdyLnVuZGVsZXRlKCBzZWxmLnRyYW5z
LCBpdGVtMSApLD0KIGl0ZW0xICkKLSAgICAjICAgIHNlbGYuYXNzZXJ0RmFsc2UoIGl0ZW0xLmRl
bGV0ZWQgKQotICAgICMKLSAgICAjZGVmIHRlc3RfcHVyZ2VfYWxsb3dlZCggc2VsZiApOgotICAg
ICMgICAgc2VsZi50cmFucy5hcHAuY29uZmlnLmFsbG93X3VzZXJfZGF0YXNldF9wdXJnZSA9M0Qg
VHJ1ZQotICAgICMgICAgaXRlbTEgPTNEIHNlbGYuZGF0YXNldF9tZ3IuY3JlYXRlKCBzZWxmLnRy
YW5zICkKLSAgICAjCi0gICAgIyAgICBzZWxmLmxvZyggInNob3VsZCBwdXJnZSBhbiBoZGEgaWYg
Y29uZmlnIGRvZXMgYWxsb3ciICkKLSAgICAjICAgIHNlbGYuYXNzZXJ0RmFsc2UoIGl0ZW0xLnB1
cmdlZCApCi0gICAgIyAgICBzZWxmLmFzc2VydEVxdWFsKCBzZWxmLmRhdGFzZXRfbWdyLnB1cmdl
KCBzZWxmLnRyYW5zLCBpdGVtMSApLCBpdD0KZW0xICkKLSAgICAjICAgIHNlbGYuYXNzZXJ0VHJ1
ZSggaXRlbTEucHVyZ2VkICkKLSAgICAjCi0gICAgI2RlZiB0ZXN0X3B1cmdlX25vdF9hbGxvd2Vk
KCBzZWxmICk6Ci0gICAgIyAgICBzZWxmLnRyYW5zLmFwcC5jb25maWcuYWxsb3dfdXNlcl9kYXRh
c2V0X3B1cmdlID0zRCBGYWxzZQotICAgICMgICAgaXRlbTEgPTNEIHNlbGYuZGF0YXNldF9tZ3Iu
Y3JlYXRlKCBzZWxmLnRyYW5zICkKLSAgICAjCi0gICAgIyAgICBzZWxmLmxvZyggInNob3VsZCBy
YWlzZSBhbiBlcnJvciB3aGVuIHB1cmdpbmcgYW4gaGRhIGlmIGNvbmZpZyBkbz0KZXMgbm90IGFs
bG93IiApCi0gICAgIyAgICBzZWxmLmFzc2VydEZhbHNlKCBpdGVtMS5wdXJnZWQgKQotICAgICMg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoIGV4Y2VwdGlvbnMuQ29uZmlnRG9lc05vdEFsbG93RXhjZXB0
aW9uLCBzZWxmLmQ9CmF0YXNldF9tZ3IucHVyZ2UsIHNlbGYudHJhbnMsIGl0ZW0xICkKLSAgICAj
ICAgIHNlbGYuYXNzZXJ0RmFsc2UoIGl0ZW0xLnB1cmdlZCApCisgICAgZGVmIHRlc3RfdXBkYXRl
X2Zyb21fZGljdCggc2VsZiApOgorICAgICAgICBvd25lciA9M0Qgc2VsZi51c2VyX21nci5jcmVh
dGUoIHNlbGYudHJhbnMsICoqdXNlcjJfZGF0YSApCisKKyAgICAgICAgaGlzdG9yeSA9M0Qgc2Vs
Zi5oaXN0b3J5X21nci5jcmVhdGUoIHNlbGYudHJhbnMsIG5hbWU9M0QnaGlzdG9yeTEnPQosIHVz
ZXI9M0Rvd25lciApCisKKyAgICAgICAgaGRhMSA9M0Qgc2VsZi5oZGFfbWdyLmNyZWF0ZSggc2Vs
Zi50cmFucywgbmFtZT0zRCdvbmUnLAorICAgICAgICAgICAgaGlzdG9yeT0zRGhpc3RvcnksIGRh
dGFzZXQ9M0RzZWxmLmRhdGFzZXRfbWdyLmNyZWF0ZSggc2VsZi50cmE9Cm5zICkgKQorICAgICAg
ICBoZGEyID0zRCBzZWxmLmhkYV9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zLCBuYW1lPTNEJ3R3bycs
CisgICAgICAgICAgICBoaXN0b3J5PTNEaGlzdG9yeSwgZGF0YXNldD0zRHNlbGYuZGF0YXNldF9t
Z3IuY3JlYXRlKCBzZWxmLnRyYT0KbnMgKSApCisgICAgICAgIGhkYTMgPTNEIHNlbGYuaGRhX21n
ci5jcmVhdGUoIHNlbGYudHJhbnMsIG5hbWU9M0QndGhyZWUnLAorICAgICAgICAgICAgaGlzdG9y
eT0zRGhpc3RvcnksIGRhdGFzZXQ9M0RzZWxmLmRhdGFzZXRfbWdyLmNyZWF0ZSggc2VsZi50cmE9
Cm5zICkgKQorCisgICAgICAgIGVsZW1lbnRzID0zRCBkaWN0KCBvbmU9M0RoZGExLCB0d289M0Ro
ZGEyLCB0aHJlZT0zRGhkYTMgKQorICAgICAgICBoZGNhID0zRCBzZWxmLmNvbGxlY3Rpb25fbWdy
LmNyZWF0ZSggc2VsZi50cmFucywgaGlzdG9yeSwgJ3Rlc3QgY289CmxsZWN0aW9uJywgJ2xpc3Qn
LCBlbGVtZW50cz0zRGVsZW1lbnRzICkKKworICAgICAgICBzZWxmLmxvZyggInNob3VsZCBiZSBz
ZXQgZnJvbSBhIGRpY3Rpb25hcnkiICkKKyAgICAgICAgc2VsZi5jb2xsZWN0aW9uX21nci5fc2V0
X2Zyb21fZGljdCggc2VsZi50cmFucywgaGRjYSwgeworICAgICAgICAgICAgJ2RlbGV0ZWQnICAg
OiBUcnVlLAorICAgICAgICAgICAgJ3Zpc2libGUnICAgOiBGYWxzZSwKKyAgICAgICAgICAgICdu
YW1lJyAgICAgIDogJ05ldyBOYW1lJywKKyAgICAgICAgICAgICNUT0RPOiBkb2Vzbid0IHdvcmsK
KyAgICAgICAgICAgICMndGFncycgICAgICA6IFsgJ29uZScsICd0d28nLCAndGhyZWUnIF0KKyAg
ICAgICAgICAgICMnYW5ub3RhdGlvbnMnICAgICAgOiBbP10KKyAgICAgICAgfSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCggaGRjYS5uYW1lLCAnTmV3IE5hbWUnICkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKCBoZGNhLmRlbGV0ZWQgKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCBoZGNh
LnZpc2libGUgKQorICAgICAgICAjc2VsZi5hc3NlcnRFcXVhbCggaGRjYS50YWdzLCBbICdvbmUn
LCAndHdvJywgJ3RocmVlJyBdICkKKyAgICAgICAgI3NlbGYuYXNzZXJ0RXF1YWwoIGhkY2EuYW5u
b3RhdGlvbnMsIFsgJ29uZScsICd0d28nLCAndGhyZWUnIF0gKQorCisgICAgI2RlZiB0ZXN0X3Zh
bGlkYXRpb24oIHNlbGYgKToKKyAgICAjICAgIHNlbGYubG9nKCAic2hvdWxkIGJlIGFibGUgdG8g
Y2hhbmdlIHRoZSBuYW1lIiApCisgICAgIyAgICBzZWxmLmxvZyggInNob3VsZCBiZSBhYmxlIHRv
IHNldCBkZWxldGVkIiApCisgICAgIyAgICBzZWxmLmxvZyggInNob3VsZCBiZSBhYmxlIHRvIHNl
dCB2aXNpYmxlIiApCisgICAgIyAgICBzZWxmLmxvZyggInNob3VsZCBiZSBhYmxlIHRvIHNldCB0
YWdzIiApCj0yMAo9MjAKICMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECgpkaWZmIC1yIGEzZTcyMjUwODZjYmM0MzFmOTk4
YjRiMTg3OGQ3NTViODU5MzcxNTYgLXIgOThkNGNiNTgxZjYyMDEzNTlhN2RkMDg9CjQ1YWIyZDg1
YjExZTk4NWQ3IHRlc3QvdW5pdC9tYW5hZ2Vycy90ZXN0X0hpc3RvcnlNYW5hZ2VyLnB5Ci0tLSBh
L3Rlc3QvdW5pdC9tYW5hZ2Vycy90ZXN0X0hpc3RvcnlNYW5hZ2VyLnB5CisrKyBiL3Rlc3QvdW5p
dC9tYW5hZ2Vycy90ZXN0X0hpc3RvcnlNYW5hZ2VyLnB5CkBAIC0yNiw2ICsyNiw3IEBACiBkZWZh
dWx0X3Bhc3N3b3JkID0zRCAnMTIzNDU2JwogdXNlcjJfZGF0YSA9M0QgZGljdCggZW1haWw9M0Qn
dXNlcjJAdXNlcjIudXNlcjInLCB1c2VybmFtZT0zRCd1c2VyMicsIHBhc3M9CndvcmQ9M0RkZWZh
dWx0X3Bhc3N3b3JkICkKIHVzZXIzX2RhdGEgPTNEIGRpY3QoIGVtYWlsPTNEJ3VzZXIzQHVzZXIz
LnVzZXIzJywgdXNlcm5hbWU9M0QndXNlcjMnLCBwYXNzPQp3b3JkPTNEZGVmYXVsdF9wYXNzd29y
ZCApCit1c2VyNF9kYXRhID0zRCBkaWN0KCBlbWFpbD0zRCd1c2VyNEB1c2VyNC51c2VyNCcsIHVz
ZXJuYW1lPTNEJ3VzZXI0JywgcGFzcz0Kd29yZD0zRGRlZmF1bHRfcGFzc3dvcmQgKQo9MjAKPTIw
CiAjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9Cj0zRD0zRD0zRApAQCAtMjEzLDI5ICsyMTQsMzAgQEAKICAgICBkZWYgdGVzdF9zaGFyYWJs
ZSggc2VsZiApOgogICAgICAgICBvd25lciA9M0Qgc2VsZi51c2VyX21nci5jcmVhdGUoIHNlbGYu
dHJhbnMsICoqdXNlcjJfZGF0YSApCiAgICAgICAgIHNlbGYudHJhbnMuc2V0X3VzZXIoIG93bmVy
ICkKKyAgICAgICAgaXRlbTEgPTNEIHNlbGYuaGlzdG9yeV9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5z
LCB1c2VyPTNEb3duZXIgKQorCiAgICAgICAgIG5vbl9vd25lciA9M0Qgc2VsZi51c2VyX21nci5j
cmVhdGUoIHNlbGYudHJhbnMsICoqdXNlcjNfZGF0YSApCi0KLSAgICAgICAgaXRlbTEgPTNEIHNl
bGYuaGlzdG9yeV9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zLCB1c2VyPTNEb3duZXIgKQorICAgICAg
ICAjdGhpcmRfcGFydHkgPTNEIHNlbGYudXNlcl9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zLCAqKnVz
ZXI0X2RhdGEgKQo9MjAKICAgICAgICAgc2VsZi5sb2coICJzaG91bGQgYmUgdW5zaGFyZWQgYnkg
ZGVmYXVsdCIgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCBzZWxmLmhpc3RvcnlfbWdyLmdl
dF9zaGFyZV9hc3NvY3MoIHNlbGYudHJhbnMsIGk9CnRlbTEgKSwgW10gKQo9MjAKICAgICAgICAg
c2VsZi5sb2coICJzaG91bGQgYmUgYWJsZSB0byBzaGFyZSB3aXRoIHNwZWNpZmljIHVzZXJzIiAp
Ci0gICAgICAgIHNoYXJlZF9pdGVtID0zRCBzZWxmLmhpc3RvcnlfbWdyLnNoYXJlX3dpdGgoIHNl
bGYudHJhbnMsIGl0ZW0xLCBubz0Kbl9vd25lciApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
IHNoYXJlZF9pdGVtLCBpdGVtMSApCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSggc2VsZi5oaXN0
b3J5X21nci5pc19hY2Nlc3NpYmxlKCBzZWxmLnRyYW5zLCBzaGFyZT0KZF9pdGVtLCBub25fb3du
ZXIgKSApCisgICAgICAgIHNoYXJlX2Fzc29jID0zRCBzZWxmLmhpc3RvcnlfbWdyLnNoYXJlX3dp
dGgoIHNlbGYudHJhbnMsIGl0ZW0xLCBubz0Kbl9vd25lciApCisgICAgICAgIHNlbGYuYXNzZXJ0
SXNJbnN0YW5jZSggc2hhcmVfYXNzb2MsIG1vZGVsLkhpc3RvcnlVc2VyU2hhcmVBc3NvY2lhdD0K
aW9uICkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCBzZWxmLmhpc3RvcnlfbWdyLmlzX2FjY2Vz
c2libGUoIHNlbGYudHJhbnMsIGl0ZW0xPQosIG5vbl9vd25lciApICkKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGxlbiggc2VsZi5oaXN0b3J5X21nci5nZXRfc2hhcmVf
YXNzb2NzKCBzZWxmLnRyYW5zLCBzaGFyZWRfaXRlPQptICkgKSwgMSApCisgICAgICAgICAgICBs
ZW4oIHNlbGYuaGlzdG9yeV9tZ3IuZ2V0X3NoYXJlX2Fzc29jcyggc2VsZi50cmFucywgaXRlbTEg
KSApLD0KIDEgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgbGVuKCBz
ZWxmLmhpc3RvcnlfbWdyLmdldF9zaGFyZV9hc3NvY3MoIHNlbGYudHJhbnMsIHNoYXJlZF9pdGU9
Cm0sIHVzZXI9M0Rub25fb3duZXIgKSApLCAxICkKKyAgICAgICAgICAgIGxlbiggc2VsZi5oaXN0
b3J5X21nci5nZXRfc2hhcmVfYXNzb2NzKCBzZWxmLnRyYW5zLCBpdGVtMSwgdXNlPQpyPTNEbm9u
X293bmVyICkgKSwgMSApCj0yMAogICAgICAgICBzZWxmLmxvZyggInNob3VsZCBiZSBhYmxlIHRv
IHVuc2hhcmUgd2l0aCBzcGVjaWZpYyB1c2VycyIgKQotICAgICAgICB1bnNoYXJlZF9pdGVtID0z
RCBzZWxmLmhpc3RvcnlfbWdyLnVuc2hhcmVfd2l0aCggc2VsZi50cmFucywgc2hhcmU9CmRfaXRl
bSwgbm9uX293bmVyICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCggc2hhcmVkX2l0ZW0sIHVu
c2hhcmVkX2l0ZW0gKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCBzZWxmLmhpc3RvcnlfbWdy
LmlzX2FjY2Vzc2libGUoIHNlbGYudHJhbnMsIHNoYXI9CmVkX2l0ZW0sIG5vbl9vd25lciApICkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCggc2VsZi5oaXN0b3J5X21nci5nZXRfc2hhcmVfYXNz
b2NzKCBzZWxmLnRyYW5zLCB1PQpuc2hhcmVkX2l0ZW0gKSwgW10gKQorICAgICAgICBzaGFyZV9h
c3NvYyA9M0Qgc2VsZi5oaXN0b3J5X21nci51bnNoYXJlX3dpdGgoIHNlbGYudHJhbnMsIGl0ZW0x
LCA9Cm5vbl9vd25lciApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSggc2hhcmVfYXNz
b2MsIG1vZGVsLkhpc3RvcnlVc2VyU2hhcmVBc3NvY2lhdD0KaW9uICkKKyAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZSggc2VsZi5oaXN0b3J5X21nci5pc19hY2Nlc3NpYmxlKCBzZWxmLnRyYW5zLCBp
dGVtPQoxLCBub25fb3duZXIgKSApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYuaGlz
dG9yeV9tZ3IuZ2V0X3NoYXJlX2Fzc29jcyggc2VsZi50cmFucywgaT0KdGVtMSApLCBbXSApCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBzZWxmLmhpc3RvcnlfbWdyLmdl
dF9zaGFyZV9hc3NvY3MoIHNlbGYudHJhbnMsIHVuc2hhcmVkX2l0ZW0sID0KdXNlcj0zRG5vbl9v
d25lciApLCBbXSApCisgICAgICAgICAgICBzZWxmLmhpc3RvcnlfbWdyLmdldF9zaGFyZV9hc3Nv
Y3MoIHNlbGYudHJhbnMsIGl0ZW0xLCB1c2VyPTNEbj0Kb25fb3duZXIgKSwgW10gKQo9MjAKICAg
ICAjVE9ETzogdGVzdCBzbHVnIGZvcm1hdGlvbgo9MjAKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcv
Z2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvMTQzZjAyMmJhZTY5LwpDaGFuZ2VzZXQ6ICAg
MTQzZjAyMmJhZTY5ClVzZXI6ICAgICAgICBjYXJsZmViZXJoYXJkCkRhdGU6ICAgICAgICAyMDE1
LTAxLTA5IDE4OjIyOjA2KzAwOjAwClN1bW1hcnk6ICAgICBIaXN0b3J5IE1ncjogZWxpbWluYXRl
IHRoZSBVc2VzSGlzdG9yeU1peGluOyBIREEgTWdyOiBtb3ZlIHNlcj0KdmVyYWwgbWV0aG9kcyBp
bnRvIG1nciBmcm9tIFVzZXNIREFNaXhpbjsgVXNlciBNZ3I6IGltcHJvdmUgYXBpIGdlbmVyYXRp
b24vPQpjaGVja2luZwpBZmZlY3RlZCAjOiAgMjMgZmlsZXMKCmRpZmYgLXIgOThkNGNiNTgxZjYy
MDEzNTlhN2RkMDg0NWFiMmQ4NWIxMWU5ODVkNyAtciAxNDNmMDIyYmFlNjlkOGFhYTA1ZmI5Mz0K
OGJlOTlkMzY0NjY2OTlhNTQgbGliL2dhbGF4eS9tYW5hZ2Vycy9iYXNlLnB5Ci0tLSBhL2xpYi9n
YWxheHkvbWFuYWdlcnMvYmFzZS5weQorKysgYi9saWIvZ2FsYXh5L21hbmFnZXJzL2Jhc2UucHkK
QEAgLTgwMyw5ICs4MDMsOSBAQAogICAgICAgICB1c2VyID0zRCB0cmFucy51c2VyCiAgICAgICAg
ICNUT0RPOiBkdXBlZCBmcm9tIHRhZ3MgbWFuYWdlciAtIGRlLWR1cGUgd2hlbiBtb3ZlZCB0byB0
YWdnYWJsZSBtaT0KeGluCiAgICAgICAgIHRhZ19oYW5kbGVyID0zRCB0cmFucy5hcHAudGFnX2hh
bmRsZXIKLSAgICAgICAgdGFnX2hhbmRsZXIuZGVsZXRlX2l0ZW1fdGFncyggdHJhbnMsIHVzZXIs
IGl0ZW0gKQorICAgICAgICB0YWdfaGFuZGxlci5kZWxldGVfaXRlbV90YWdzKCB1c2VyLCBpdGVt
ICkKICAgICAgICAgbmV3X3RhZ3Nfc3RyID0zRCAnLCcuam9pbiggbmV3X3RhZ3NfbGlzdCApCi0g
ICAgICAgIHRhZ19oYW5kbGVyLmFwcGx5X2l0ZW1fdGFncyggdHJhbnMsIHVzZXIsIGl0ZW0sIHVu
aWNvZGUoIG5ld190YWdzXz0Kc3RyLmVuY29kZSggJ3V0Zi04JyApLCAndXRmLTgnICkgKQorICAg
ICAgICB0YWdfaGFuZGxlci5hcHBseV9pdGVtX3RhZ3MoIHVzZXIsIGl0ZW0sIHVuaWNvZGUoIG5l
d190YWdzX3N0ci5lbmM9Cm9kZSggJ3V0Zi04JyApLCAndXRmLTgnICkgKQogICAgICAgICAjdHJh
bnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCj0yMAogI1RPRE86ISEgZG9lcyB0aGUgY3JlYXRpb24gb2Yg
bmV3X3RhZ3NfbGlzdCBtZWFuIHRoZXJlIGFyZSBub3cgbW9yZSBhbmQgbW89CnJlIHVudXNlZCB0
YWcgcm93cyBpbiB0aGUgZGI/CgpkaWZmIC1yIDk4ZDRjYjU4MWY2MjAxMzU5YTdkZDA4NDVhYjJk
ODViMTFlOTg1ZDcgLXIgMTQzZjAyMmJhZTY5ZDhhYWEwNWZiOTM9CjhiZTk5ZDM2NDY2Njk5YTU0
IGxpYi9nYWxheHkvbWFuYWdlcnMvY29sbGVjdGlvbnMucHkKLS0tIGEvbGliL2dhbGF4eS9tYW5h
Z2Vycy9jb2xsZWN0aW9ucy5weQorKysgYi9saWIvZ2FsYXh5L21hbmFnZXJzL2NvbGxlY3Rpb25z
LnB5CkBAIC0xNjAsOCArMTYwLDYgQEAKICAgICAgICAgcmV0dXJuIHNvdXJjZV9oZGNhCj0yMAog
ICAgIGRlZiBfc2V0X2Zyb21fZGljdCggc2VsZiwgdHJhbnMsIGRhdGFzZXRfY29sbGVjdGlvbl9p
bnN0YW5jZSwgbmV3X2RhdGE9CiApOgotICAgICAgICAjIEJsYXRhbnRseSBzdG9sZW4gZnJvbSBV
c2VzSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbk1peGluLnNldF9oZGE9Cl9mcm9tX2RpY3QuCi0K
ICAgICAgICAgIyBzZW5kIHdoYXQgd2UgY2FuIGRvd24gaW50byB0aGUgbW9kZWwKICAgICAgICAg
Y2hhbmdlZCA9M0QgZGF0YXNldF9jb2xsZWN0aW9uX2luc3RhbmNlLnNldF9mcm9tX2RpY3QoIG5l
d19kYXRhICkKICAgICAgICAgIyB0aGUgcmVzdCAob2Z0ZW4gaW52b2x2aW5nIHRoZSB0cmFucykg
LSBkbyBoZXJlCgpkaWZmIC1yIDk4ZDRjYjU4MWY2MjAxMzU5YTdkZDA4NDVhYjJkODViMTFlOTg1
ZDcgLXIgMTQzZjAyMmJhZTY5ZDhhYWEwNWZiOTM9CjhiZTk5ZDM2NDY2Njk5YTU0IGxpYi9nYWxh
eHkvbWFuYWdlcnMvZGF0YXNldHMucHkKLS0tIGEvbGliL2dhbGF4eS9tYW5hZ2Vycy9kYXRhc2V0
cy5weQorKysgYi9saWIvZ2FsYXh5L21hbmFnZXJzL2RhdGFzZXRzLnB5CkBAIC0xNSw3ICsxNSw2
IEBACiBjbGFzcyBEYXRhc2V0TWFuYWdlciggYmFzZS5Nb2RlbE1hbmFnZXIsIGJhc2UuQWNjZXNz
aWJsZU1vZGVsSW50ZXJmYWNlLCBiYT0Kc2UuUHVyZ2FibGVNb2RlbEludGVyZmFjZSApOgogICAg
ICIiIgogICAgIE1hbmlwdWxhdGUgZGF0YXNldHM6IHRoZSBjb21wb25lbnRzIGNvbnRhaW5lZCBp
biBEYXRhc2V0QXNzb2NpYXRpb25zL0Q9CmF0YXNldEluc3RhbmNlcy9IREFzL0xEREFzCi0gICA9
MjAKICAgICAiIiIKPTIwCiAgICAgbW9kZWxfY2xhc3MgPTNEIG1vZGVsLkRhdGFzZXQKQEAgLTIz
LDE0ICsyMiwxNCBAQAogICAgIGZvcmVpZ25fa2V5X25hbWUgPTNEICdkYXRhc2V0Jwo9MjAKICAg
ICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgotICAgICAgICAiIiIKLSAgICAgICAgIiIiCiAg
ICAgICAgIHN1cGVyKCBEYXRhc2V0TWFuYWdlciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQorICAg
ICAgICAjIG5lZWQgZm9yIGFkbWluIHRlc3QKICAgICAgICAgc2VsZi51c2VyX21nciA9M0QgdXNl
cnMuVXNlck1hbmFnZXIoIGFwcCApCj0yMAogICAgICMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi49Ci4uLi4uIGNyZWF0
ZQogICAgIGRlZiBjcmVhdGUoIHNlbGYsIHRyYW5zLCBmbHVzaD0zRFRydWUsICoqa3dhcmdzICk6
CiAgICAgICAgICIiIgorICAgICAgICBDcmVhdGUgYW5kIHJldHVybiBhIG5ldyBEYXRhc2V0IG9i
amVjdC4KICAgICAgICAgIiIiCiAgICAgICAgICMgZGVmYXVsdCB0byBORVcgc3RhdGUgb24gbmV3
IGRhdGFzZXRzCiAgICAgICAgIGt3YXJncy51cGRhdGUoIGRpY3QoIHN0YXRlPTNEKCBrd2FyZ3Mu
Z2V0KCAnc3RhdGUnLCBtb2RlbC5EYXRhc2V0Lj0Kc3RhdGVzLk5FVyApICkgKSApCkBAIC00MSwy
MyArNDAsMjggQEAKICAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uZmx1c2goKQogICAgICAg
ICByZXR1cm4gZGF0YXNldAo9MjAKLSAgICBkZWYgY29weSggc2VsZiApOgotICAgICAgICAiIiIK
LSAgICAgICAgIiIiCi0gICAgICAgIHBhc3MKKyAgICAjZGVmIGNvcHkoIHNlbGYsIGRhdGFzZXQs
ICoqa3dhcmdzICk6CisgICAgIyAgICAiIiIKKyAgICAjICAgIENsb25lLCB1cGRhdGUsIGFuZCBy
ZXR1cm4gdGhlIGdpdmVuIGRhdGFzZXQuCisgICAgIyAgICAiIiIKKyAgICAjICAgIHBhc3MKPTIw
CiAgICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLj0KLi4uLi4gYWRkIHRvIGRhdGFzZXQgYXNzb2NpYXRpb24KLSAg
ICBkZWYgdG9faGRhKCBzZWxmLCB0cmFucywgZGF0YXNldCwgaGlzdG9yeSwgKiprd2FyZ3MgKToK
LSAgICAgICAgIiIiCi0gICAgICAgICIiIgotICAgICAgICBwYXNzCisgICAgI2RlZiB0b19oZGEo
IHNlbGYsIHRyYW5zLCBkYXRhc2V0LCBoaXN0b3J5LCAqKmt3YXJncyApOgorICAgICMgICAgIiIi
CisgICAgIyAgICBDcmVhdGUgYW4gaGRhIGZyb20gdGhpcyBkYXRhc2V0LgorICAgICMgICAgIiIi
CisgICAgIyAgICBwYXNzCj0yMAotICAgIGRlZiB0b19sZGRhKCBzZWxmLCB0cmFucywgZGF0YXNl
dCwgbGlicmFyeV9mb2xkZXIsICoqa3dhcmdzICk6Ci0gICAgICAgICIiIgotICAgICAgICAiIiIK
LSAgICAgICAgcGFzcworICAgICNkZWYgdG9fbGRkYSggc2VsZiwgdHJhbnMsIGRhdGFzZXQsIGxp
YnJhcnlfZm9sZGVyLCAqKmt3YXJncyApOgorICAgICMgICAgIiIiCisgICAgIyAgICBDcmVhdGUg
YW4gbGRkYSBmcm9tIHRoaXMgZGF0YXNldC4KKyAgICAjICAgICIiIgorICAgICMgICAgcGFzcwo9
MjAKICAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBkZWxldGUKKyAgICAjVE9ETzogdGhpcyBtYXkg
YmUgbW9yZSBjb252LiBzb21ld2hlcmUgZWxzZQorI1RPRE86IGFsbG93IGFkbWluIGJ5cGFzcwog
ICAgIGRlZiBlcnJvcl91bmxlc3NfZGF0YXNldF9wdXJnZV9hbGxvd2VkKCBzZWxmLCB0cmFucywg
aXRlbSwgbXNnPTNETm9uZSA9Cik6CiAgICAgICAgIGlmIG5vdCB0cmFucy5hcHAuY29uZmlnLmFs
bG93X3VzZXJfZGF0YXNldF9wdXJnZToKICAgICAgICAgICAgIG1zZyA9M0QgbXNnIG9yICdUaGlz
IGluc3RhbmNlIGRvZXMgbm90IGFsbG93IHVzZXIgZGF0YXNldCBwdXJnPQppbmcnCkBAIC02Niw2
ICs3MCwxMCBAQAo9MjAKICAgICBkZWYgcHVyZ2UoIHNlbGYsIHRyYW5zLCBkYXRhc2V0LCBmbHVz
aD0zRFRydWUgKToKICAgICAgICAgIiIiCisgICAgICAgIFJlbW92ZSB0aGUgb2JqZWN0X3N0b3Jl
L2ZpbGUgZm9yIHRoaXMgZGF0YXNldCBmcm9tIHN0b3JhZ2UgYW5kIG1hcmsKKyAgICAgICAgYXMg
cHVyZ2VkLgorCisgICAgICAgIDpyYWlzZXMgZXhjZXB0aW9ucy5Db25maWdEb2VzTm90QWxsb3dF
eGNlcHRpb246IGlmIHRoZSBpbnN0YW5jZSBkbz0KZXNuJ3QgYWxsb3cKICAgICAgICAgIiIiCiAg
ICAgICAgIHNlbGYuZXJyb3JfdW5sZXNzX2RhdGFzZXRfcHVyZ2VfYWxsb3dlZCggdHJhbnMsIGRh
dGFzZXQgKQo9MjAKQEAgLTgxLDYgKzg5LDcgQEAKICAgICAjICAgdGhhbiB0aG9zZSByZXNvdXJj
ZXMgdGhhdCBoYXZlIGEgdXNlciBhdHRyaWJ1dGUgKGhpc3RvcmllcywgcGFnZXMsPQogZXRjLikK
ICAgICBkZWYgaXNfYWNjZXNzaWJsZSggc2VsZiwgdHJhbnMsIGRhdGFzZXQsIHVzZXIgKToKICAg
ICAgICAgIiIiCisgICAgICAgIElzIHRoaXMgZGF0YXNldCByZWFkYWJsZS92aWV3YWJsZSB0byB1
c2VyPwogICAgICAgICAiIiIKICAgICAgICAgaWYgc2VsZi51c2VyX21nci5pc19hZG1pbiggdHJh
bnMsIHVzZXIgKToKICAgICAgICAgICAgIHJldHVybiBUcnVlCkBAIC04OCw4ICs5NywxNyBAQAog
ICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgcmV0dXJuIEZhbHNlCj0yMAorICAgIGRl
ZiBoYXNfYWNjZXNzX3Blcm1pc3Npb24oIHNlbGYsIHRyYW5zLCBkYXRhc2V0LCB1c2VyICk6Cisg
ICAgICAgICIiIgorICAgICAgICBSZXR1cm4gVC9GIGlmIHRoZSB1c2VyIGhhcyByb2xlLWJhc2Vk
IGFjY2VzcyB0byB0aGUgZGF0YXNldC4KKyAgICAgICAgIiIiCisgICAgICAgIHJvbGVzID0zRCB1
c2VyLmFsbF9yb2xlcygpIGlmIHVzZXIgZWxzZSBbXQorICAgICAgICByZXR1cm4gdHJhbnMuYXBw
LnNlY3VyaXR5X2FnZW50LmNhbl9hY2Nlc3NfZGF0YXNldCggcm9sZXMsIGRhdGFzZXQ9CiApCisK
KyNUT0RPOiB0aGVzZSBuZWVkIHdvcmsKICAgICBkZWYgX2FjY2Vzc19wZXJtaXNzaW9uKCBzZWxm
LCB0cmFucywgZGF0YXNldCwgdXNlcj0zRE5vbmUsIHJvbGU9M0ROb25lPQogKToKICAgICAgICAg
IiIiCisgICAgICAgIFJldHVybiBtb3N0IHJlY2VudCBEYXRhc2V0UGVybWlzc2lvbnMgZm9yIHRo
ZSBkYXRhc2V0IGFuZCB1c2VyLgogICAgICAgICAiIiIKICAgICAgICAgc2VjdXJpdHlfYWdlbnQg
PTNEIHRyYW5zLmFwcC5zZWN1cml0eV9hZ2VudAogICAgICAgICBhY2Nlc3NfYWN0aW9uID0zRCBz
ZWN1cml0eV9hZ2VudC5wZXJtaXR0ZWRfYWN0aW9ucy5EQVRBU0VUX0FDQ0VTUy49CmFjdGlvbgpA
QCAtMTAxLDEzICsxMTksMTIgQEAKICAgICAgICAgICAgICAgICAgICAgLmZpbHRlciggbW9kZWwu
RGF0YXNldFBlcm1pc3Npb25zLmFjdGlvbiA9M0Q9M0QgYWNjZXNzPQpfYWN0aW9uICkKICAgICAg
ICAgICAgICAgICAgICAgLmZpbHRlciggbW9kZWwuRGF0YXNldFBlcm1pc3Npb25zLmRhdGFzZXQg
PTNEPTNEIGRhdGFzPQpldCApCiAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoIG1vZGVsLkRh
dGFzZXRQZXJtaXNzaW9ucy5yb2xlX2lkLmluXyggdXNlcl9ybz0KbGVfaWRzICkgKSApCi0gICAg
ICAgIHBlcm1zID0zRCBxdWVyeS5hbGwoKQotICAgICAgICBpZiBsZW4oIHBlcm1zICk6Ci0gICAg
ICAgICAgICByZXR1cm4gcGVybXNbMF0KLSAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgI1RP
RE86Pz8gbW9zdCByZWNlbnQ/CisgICAgICAgIHJldHVybiBxdWVyeS5maXJzdCgpCj0yMAogICAg
IGRlZiBfY3JlYXRlX2FjY2Vzc19wZXJtaXNzaW9uKCBzZWxmLCB0cmFucywgZGF0YXNldCwgcm9s
ZSwgZmx1c2g9M0RUcnU9CmUgKToKICAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBhIG5ldyBE
YXRhc2V0UGVybWlzc2lvbnMgZm9yIHRoZSBnaXZlbiBkYXRhc2V0IGFuZCByb2xlLgogICAgICAg
ICAiIiIKICAgICAgICAgYWNjZXNzX2FjdGlvbiA9M0QgdHJhbnMuYXBwLnNlY3VyaXR5X2FnZW50
LnBlcm1pdHRlZF9hY3Rpb25zLkRBVEFTPQpFVF9BQ0NFU1MuYWN0aW9uCiAgICAgICAgIHBlcm1p
c3Npb24gPTNEIG1vZGVsLkRhdGFzZXRQZXJtaXNzaW9ucyggYWNjZXNzX2FjdGlvbiwgZGF0YXNl
dCwgcj0Kb2xlICkKQEAgLTExNiwxNCArMTMzLDYgQEAKICAgICAgICAgICAgIHRyYW5zLnNhX3Nl
c3Npb24uZmx1c2goKQogICAgICAgICByZXR1cm4gcGVybWlzc2lvbgo9MjAKLSAgICBkZWYgaGFz
X2FjY2Vzc19wZXJtaXNzaW9uKCBzZWxmLCB0cmFucywgZGF0YXNldCwgdXNlciApOgotICAgICAg
ICAiIiIKLSAgICAgICAgIiIiCi0gICAgICAgPTIwCi0gICAgICAgIHJvbGVzID0zRCB1c2VyLmFs
bF9yb2xlcygpIGlmIHVzZXIgZWxzZSBbXQotICAgICAgICByZXR1cm4gdHJhbnMuYXBwLnNlY3Vy
aXR5X2FnZW50LmNhbl9hY2Nlc3NfZGF0YXNldCggcm9sZXMsIGRhdGFzZXQ9CiApCi0KLSAgICAj
VE9ETzogdGhpcyBuZWVkcyB3b3JrCiAgICAgI2RlZiBnaXZlX2FjY2Vzc19wZXJtaXNzaW9uKCBz
ZWxmLCB0cmFucywgZGF0YXNldCwgdXNlciwgZmx1c2g9M0RUcnVlID0KKToKICAgICAjICAgICIi
IgogICAgICMgICAgIiIiCgpkaWZmIC1yIDk4ZDRjYjU4MWY2MjAxMzU5YTdkZDA4NDVhYjJkODVi
MTFlOTg1ZDcgLXIgMTQzZjAyMmJhZTY5ZDhhYWEwNWZiOTM9CjhiZTk5ZDM2NDY2Njk5YTU0IGxp
Yi9nYWxheHkvbWFuYWdlcnMvaGRhcy5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL2hkYXMu
cHkKKysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vycy9oZGFzLnB5CkBAIC03MCw4ICs3MCw5IEBACiAg
ICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKICAgICAgICAgcmV0dXJuIGhkYQo9
MjAKLSAgICBkZWYgY29weV9oZGEoIHNlbGYsIHRyYW5zLCBoZGEsIGhpc3Rvcnk9M0ROb25lLCAq
Kmt3YXJncyApOgorICAgIGRlZiBjb3B5KCBzZWxmLCB0cmFucywgaGRhLCBoaXN0b3J5PTNETm9u
ZSwgKiprd2FyZ3MgKToKICAgICAgICAgIiIiCisgICAgICAgIENvcHkgYW5kIHJldHVybiB0aGUg
Z2l2ZW4gSERBLgogICAgICAgICAiIiIKICAgICAgICAgI1RPRE86Pz8gbm90IHVzaW5nIHRoZSBm
b2xsb3dpbmcgYXMgdGhpcyBmbiBkb2VzIG5vdCBzZXQgaGlzdG9yeSBhPQpuZCBDT1BJRVMgaGlk
ICh0aGlzIGRvZXNuJ3Qgc2VlbSBjb3JyZWN0KQogICAgICAgICAjcmV0dXJuIGhkYS5jb3B5KCkK
QEAgLTk1LDYgKzk2LDggQEAKICAgICAgICAgY29weS5jb3BpZWRfZnJvbV9oaXN0b3J5X2RhdGFz
ZXRfYXNzb2NpYXRpb24gPTNEIGhkYQogICAgICAgICBjb3B5LnNldF9zaXplKCkKPTIwCisgICAg
ICAgICNUT0RPOiB1cGRhdGUgZnJvbSBrd2FyZ3M/CisKICAgICAgICAgIyBOZWVkIHRvIHNldCBh
ZnRlciBmbHVzaGVkLCBhcyBNZXRhZGF0YUZpbGVzIHJlcXVpcmUgZGF0YXNldC5pZAogICAgICAg
ICB0cmFucy5zYV9zZXNzaW9uLmFkZCggY29weSApCiAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24u
Zmx1c2goKQpAQCAtMTUxLDY2ICsxNTQsNiBAQAogICAgICAgICByZXR1cm4gaGRhCj0yMAogICAg
ICMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi49Ci4uLi4uIHNlcmlhbGl6YXRpb24KLSAgICAjVE9ETzogbW92ZSBpbnRv
IHNlcmlhbGl6ZXIgYmVsb3cKLSAgICAjZGVmIGdldF9oZGFfZGljdCggc2VsZiwgdHJhbnMsIGhk
YSApOgotICAgICMgICAgIiIiCi0gICAgIyAgICBSZXR1cm4gZnVsbCBkZXRhaWxzIG9mIHRoaXMg
SERBIGluIGRpY3Rpb25hcnkgZm9ybS4KLSAgICAjICAgICIiIgotICAgICMgICAgI3ByZWNvbmRp
dGlvbjogdGhlIHVzZXIncyBhY2Nlc3MgdG8gdGhpcyBoZGEgaGFzIGFscmVhZHkgYmVlbiBjaGU9
CmNrZWQKLSAgICAjICAgICNUT0RPOj8/IHBvc3Rjb25kaXRpb246IGFsbCBpZHMgYXJlIGVuY29k
ZWQgKGlzIHRoaXMgcmVhbGx5IHdoYXQgPQp3ZSB3YW50IGF0IHRoaXMgbGV2ZWw/KQotICAgICMg
ICAgZXhwb3NlX2RhdGFzZXRfcGF0aCA9M0QgdHJhbnMudXNlcl9pc19hZG1pbigpIG9yIHRyYW5z
LmFwcC5jb25maWc9Ci5leHBvc2VfZGF0YXNldF9wYXRoCi0gICAgIyAgICBoZGFfZGljdCA9M0Qg
aGRhLnRvX2RpY3QoIHZpZXc9M0QnZWxlbWVudCcsIGV4cG9zZV9kYXRhc2V0X3BhdGg9Cj0zRGV4
cG9zZV9kYXRhc2V0X3BhdGggKQotICAgICMgICAgaGRhX2RpY3RbICdhcGlfdHlwZScgXSA9M0Qg
ImZpbGUiCi0gICAgIwotICAgICMgICAgIyBBZGQgYWRkaXRpb25hbCBhdHRyaWJ1dGVzIHRoYXQg
ZGVwZW5kIG9uIHRyYW5zIG11c3QgYmUgYWRkZWQgaGU9CnJlIHJhdGhlciB0aGFuIGF0IHRoZSBt
b2RlbCBsZXZlbC4KLSAgICAjICAgIGNhbl9hY2Nlc3NfaGRhID0zRCB0cmFucy5hcHAuc2VjdXJp
dHlfYWdlbnQuY2FuX2FjY2Vzc19kYXRhc2V0KCB0PQpyYW5zLmdldF9jdXJyZW50X3VzZXJfcm9s
ZXMoKSwgaGRhLmRhdGFzZXQgKQotICAgICMgICAgY2FuX2FjY2Vzc19oZGEgPTNEICggdHJhbnMu
dXNlcl9pc19hZG1pbigpIG9yIGNhbl9hY2Nlc3NfaGRhICkKLSAgICAjICAgIGlmIG5vdCBjYW5f
YWNjZXNzX2hkYToKLSAgICAjICAgICAgICByZXR1cm4gc2VsZi5nZXRfaW5hY2Nlc3NpYmxlX2hk
YV9kaWN0KCB0cmFucywgaGRhICkKLSAgICAjICAgIGhkYV9kaWN0WyAnYWNjZXNzaWJsZScgXSA9
M0QgVHJ1ZQotICAgICMKLSAgICAjICAgICNUT0RPOiBJJ20gdW5jbGVhciBhcyB0byB3aGljaCBh
Y2Nlc3MgcGF0dGVybiBpcyByaWdodAotICAgICMgICAgaGRhX2RpY3RbICdhbm5vdGF0aW9uJyBd
ID0zRCBoZGEuZ2V0X2l0ZW1fYW5ub3RhdGlvbl9zdHIoIHRyYW5zLnM9CmFfc2Vzc2lvbiwgaGRh
Lmhpc3RvcnkudXNlciwgaGRhICkKLSAgICAjICAgICNhbm5vdGF0aW9uID0zRCBnZXRhdHRyKCBo
ZGEsICdhbm5vdGF0aW9uJywgaGRhLmdldF9pdGVtX2Fubm90YXRpPQpvbl9zdHIoIHRyYW5zLnNh
X3Nlc3Npb24sIHRyYW5zLnVzZXIsIGhkYSApICkKLSAgICAjCi0gICAgIyAgICAjIC0tLS0gcmV0
dXJuIGhlcmUgaWYgZGVsZXRlZCBBTkQgcHVyZ2VkIE9SIGNhbid0IGFjY2VzcwotICAgICMgICAg
cHVyZ2VkID0zRCAoIGhkYS5wdXJnZWQgb3IgaGRhLmRhdGFzZXQucHVyZ2VkICkKLSAgICAjICAg
IGlmICggaGRhLmRlbGV0ZWQgYW5kIHB1cmdlZCApOgotICAgICMgICAgICAgICNUT0RPOiB0b19k
aWN0IHNob3VsZCByZWFsbHkgZ28gQUZURVIgdGhpcyAtIG9ubHkgc3VtbWFyeSBkYXRhCi0gICAg
IyAgICAgICAgcmV0dXJuIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9kaWN0X2lkcyggaGRhX2RpY3Qg
KQotICAgICMKLSAgICAjICAgIGlmIGV4cG9zZV9kYXRhc2V0X3BhdGg6Ci0gICAgIyAgICAgICAg
dHJ5OgotICAgICMgICAgICAgICAgICBoZGFfZGljdFsgJ2ZpbGVfbmFtZScgXSA9M0QgaGRhLmZp
bGVfbmFtZQotICAgICMgICAgICAgIGV4Y2VwdCBvYmplY3RzdG9yZS5PYmplY3ROb3RGb3VuZDoK
LSAgICAjICAgICAgICAgICAgbG9nLmV4Y2VwdGlvbiggJ29iamVjdHN0b3JlLk9iamVjdE5vdEZv
dW5kLCBIREEgJXMuJywgaGRhPQouaWQgKQotICAgICMKLSAgICAjICAgIGhkYV9kaWN0WyAnZG93
bmxvYWRfdXJsJyBdID0zRCBnYWxheHkud2ViLnVybF9mb3IoICdoaXN0b3J5X2NvbnRlPQpudHNf
ZGlzcGxheScsCi0gICAgIyAgICAgICAgaGlzdG9yeV9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZW5j
b2RlX2lkKCBoZGEuaGlzdG9yeS5pZCApLAotICAgICMgICAgICAgIGhpc3RvcnlfY29udGVudF9p
ZCA9M0QgdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBoZGEuaWQgKSApCi0gICAgIwotICAgICMg
ICAgIyBpbmRlY2VzLCBhc3NvYy4gbWV0YWRhdGEgZmlsZXMsIGV0Yy4KLSAgICAjICAgIG1ldGFf
ZmlsZXMgPTNEIFtdCi0gICAgIyAgICBmb3IgbWV0YV90eXBlIGluIGhkYS5tZXRhZGF0YS5zcGVj
LmtleXMoKToKLSAgICAjICAgICAgICBpZiBpc2luc3RhbmNlKCBoZGEubWV0YWRhdGEuc3BlY1sg
bWV0YV90eXBlIF0ucGFyYW0sIGdhbGF4eS5kPQphdGF0eXBlcy5tZXRhZGF0YS5GaWxlUGFyYW1l
dGVyICk6Ci0gICAgIyAgICAgICAgICAgIG1ldGFfZmlsZXMuYXBwZW5kKCBkaWN0KCBmaWxlX3R5
cGU9M0RtZXRhX3R5cGUgKSApCi0gICAgIyAgICBpZiBtZXRhX2ZpbGVzOgotICAgICMgICAgICAg
IGhkYV9kaWN0WyAnbWV0YV9maWxlcycgXSA9M0QgbWV0YV9maWxlcwotICAgICMKLSAgICAjICAg
ICMgY3VycmVudGx5LCB0aGUgdml6IHJlZyBpcyBvcHRpb25hbCAtIGhhbmRsZSBvbi9vZmYKLSAg
ICAjICAgIGlmIHRyYW5zLmFwcC52aXN1YWxpemF0aW9uc19yZWdpc3RyeToKLSAgICAjICAgICAg
ICBoZGFfZGljdFsgJ3Zpc3VhbGl6YXRpb25zJyBdID0zRCB0cmFucy5hcHAudmlzdWFsaXphdGlv
bnNfcmVnPQppc3RyeS5nZXRfdmlzdWFsaXphdGlvbnMoIHRyYW5zLCBoZGEgKQotICAgICMgICAg
ZWxzZToKLSAgICAjICAgICAgICBoZGFfZGljdFsgJ3Zpc3VhbGl6YXRpb25zJyBdID0zRCBoZGEu
Z2V0X3Zpc3VhbGl6YXRpb25zKCkKLSAgICAjICAgICNUT0RPOiBpdCBtYXkgYWxzbyBiZSB3aXNl
ciB0byByZW1vdmUgZnJvbSBoZXJlIGFuZCBhZGQgYXMgQVBJIGNhPQpsbCB0aGF0IGxvYWRzIHRo
ZSB2aXN1YWxpemF0aW9ucwotICAgICMgICAgIyAgICAgICAgICAgd2hlbiB0aGUgdmlzdWFsaXph
dGlvbnMgYnV0dG9uIGlzIGNsaWNrZWQgKGluc3RlYWQgb2Y9CiBwcmVsb2FkaW5nL3ByZS1jaGVj
a2luZykKLSAgICAjCi0gICAgIyAgICAjIC0tLS0gcmV0dXJuIGhlcmUgaWYgZGVsZXRlZAotICAg
ICMgICAgaWYgaGRhLmRlbGV0ZWQgYW5kIG5vdCBwdXJnZWQ6Ci0gICAgIyAgICAgICAgcmV0dXJu
IHRyYW5zLnNlY3VyaXR5LmVuY29kZV9kaWN0X2lkcyggaGRhX2RpY3QgKQotICAgICMKLSAgICAj
ICAgIHJldHVybiB0cmFucy5zZWN1cml0eS5lbmNvZGVfZGljdF9pZHMoIGhkYV9kaWN0ICkKLQog
ICAgIGRlZiBnZXRfZGlzcGxheV9hcHBzKCBzZWxmLCB0cmFucywgaGRhICk6CiAgICAgICAgICIi
IgogICAgICAgICBSZXR1cm4gZGljdGlvbmFyeSBjb250YWluaW5nIG5ldy1zdHlsZSBkaXNwbGF5
IGFwcCB1cmxzLgpAQCAtMzAyLDcwICsyNDUsNyBAQAogICAgICMgICAgICAgICAgICByZXR1cm4g
dHJhbnMuc2hvd19lcnJvcl9tZXNzYWdlKCAiUGxlYXNlIHdhaXQgdW50aWwgdGhpcyA9CmRhdGFz
ZXQgZmluaXNoZXMgdXBsb2FkaW5nICIKICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICArICJiZWZvcmUgYXR0ZW1wdGluZyB0PQpvIHZpZXcgaXQuIiAp
CiAgICAgIyAgICByZXR1cm4gZGF0YQotICAgICMKLSAgICAjZGVmIGdldF9oaXN0b3J5X2RhdGFz
ZXRfYXNzb2NpYXRpb24oIHNlbGYsIHRyYW5zLCBoaXN0b3J5LCBkYXRhc2V0X2lkLAotICAgICMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfb3duZXJzaGlwPTNEVHJ1
ZSwgY2hlY2tfYWM9CmNlc3NpYmxlPTNERmFsc2UsIGNoZWNrX3N0YXRlPTNERmFsc2UgKToKLSAg
ICAjICAgICIiIgotICAgICMgICAgR2V0IGEgSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbiBmcm9t
IHRoZSBkYXRhYmFzZSBieSBpZCwgdmVyaWZ5aW49Cmcgb3duZXJzaGlwLgotICAgICMgICAgIiIi
Ci0gICAgIyAgICAjVE9ETzogZHVwbGljYXRlIG9mIGFib3ZlPyBhbGlhcyB0byBhYm92ZSAob3Ig
dmlzLXZlcnNhKQotICAgICMgICAgc2VsZi5zZWN1cml0eV9jaGVjayggdHJhbnMsIGhpc3Rvcnks
IGNoZWNrX293bmVyc2hpcD0zRGNoZWNrX293bmU9CnJzaGlwLCBjaGVja19hY2Nlc3NpYmxlPTNE
Y2hlY2tfYWNjZXNzaWJsZSApCi0gICAgIyAgICBoZGEgPTNEIHNlbGYuZ2V0X29iamVjdCggdHJh
bnMsIGRhdGFzZXRfaWQsICdIaXN0b3J5RGF0YXNldEFzc29jaT0KYXRpb24nLAotICAgICMgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaGVja19vd25lcnNoaXA9M0RGYWxzZSwgY2hlY2tfYWNj
ZXNzaWJsZT0KPTNERmFsc2UgKQotICAgICMKLSAgICAjICAgIGlmIGNoZWNrX2FjY2Vzc2libGU6
Ci0gICAgIyAgICAgICAgaWYoIG5vdCB0cmFucy51c2VyX2lzX2FkbWluKCkKLSAgICAjICAgICAg
ICBhbmQgbm90IHRyYW5zLmFwcC5zZWN1cml0eV9hZ2VudC5jYW5fYWNjZXNzX2RhdGFzZXQoIHRy
YW5zLmdlPQp0X2N1cnJlbnRfdXNlcl9yb2xlcygpLCBoZGEuZGF0YXNldCApICk6Ci0gICAgIyAg
ICAgICAgICAgIGVycm9yKCAiWW91IGFyZSBub3QgYWxsb3dlZCB0byBhY2Nlc3MgdGhpcyBkYXRh
c2V0IiApCi0gICAgIwotICAgICMgICAgICAgIGlmIGNoZWNrX3N0YXRlIGFuZCBoZGEuc3RhdGUg
PTNEPTNEIHRyYW5zLm1vZGVsLkRhdGFzZXQuc3RhdGU9CnMuVVBMT0FEOgotICAgICMgICAgICAg
ICAgICBlcnJvciggIlBsZWFzZSB3YWl0IHVudGlsIHRoaXMgZGF0YXNldCBmaW5pc2hlcyB1cGxv
YWRpbmc9CiBiZWZvcmUgYXR0ZW1wdGluZyB0byB2aWV3IGl0LiIgKQotICAgICMgICAgcmV0dXJu
IGhkYQotICAgICMKLSAgICAjZGVmIGdldF9oaXN0b3J5X2RhdGFzZXRfYXNzb2NpYXRpb25fZnJv
bV9pZHMoIHNlbGYsIHRyYW5zLCBpZCwgaGlzdG9yPQp5X2lkICk6Ci0gICAgIyAgICAjIEp1c3Qg
dG8gZWNobyBvdGhlciBUT0RPcywgdGhlcmUgc2VlbXMgdG8gYmUgc29tZSBvdmVybGFwIGhlcmUs
ID0Kc3RpbGwKLSAgICAjICAgICMgdGhpcyBibG9jayBhcHBlYXJzIG11bHRpcGxlIHBsYWNlcyAo
ZGF0YXNldCBzaG93LCBoaXN0b3J5X2NvbnRlPQpudHMKLSAgICAjICAgICMgc2hvdywgdXBjb21p
bmcgaGlzdG9yeSBqb2Igc2hvdykgc28gSSBhbSBjb25zb2xvZGF0aW5nIGl0IGhlcmUuCi0gICAg
IyAgICAjIFNvbWVvbmUgc21hcnRlciB0aGFuIG1lIHNob3VsZCBkZXRlcm1pbmUgaWYgdGhlcmUg
aXMgc29tZSByZWR1bj0KZGFuY3kgaGVyZS4KLSAgICAjCi0gICAgIyAgICAjIGZvciBhbm9uIHVz
ZXJzOgotICAgICMgICAgI1RPRE86IGNoZWNrIGxvZ2luX3JlcXVpcmVkPwotICAgICMgICAgI1RP
RE86IHRoaXMgaXNuJ3QgYWN0dWFsbHkgbW9zdF9yZWNlbnRseV91c2VkIChhcyBkZWZpbmVkIGlu
IGhpc3Q9Cm9yaWVzKQotICAgICMgICAgaWYoICggdHJhbnMudXNlciA9M0Q9M0QgTm9uZSApCi0g
ICAgIyAgICBhbmQgKCBoaXN0b3J5X2lkID0zRD0zRCB0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQo
IHRyYW5zLmhpc3RvcnkuaT0KZCApICkgKToKLSAgICAjICAgICAgICBoaXN0b3J5ID0zRCB0cmFu
cy5oaXN0b3J5Ci0gICAgIyAgICAgICAgI1RPRE86IGRhdGFzZXQvaGRhIGJ5IGlkIChmcm9tIGhp
c3RvcnkpIE9SIGNoZWNrX293bmVyc2hpcCBmbz0KciBhbm9uIHVzZXIKLSAgICAjICAgICAgICBo
ZGEgPTNEIHNlbGYuZ2V0X2hpc3RvcnlfZGF0YXNldF9hc3NvY2lhdGlvbiggdHJhbnMsIGhpc3Rv
cnksPQogaWQsCi0gICAgIyAgICAgICAgICAgIGNoZWNrX293bmVyc2hpcD0zREZhbHNlLCBjaGVj
a19hY2Nlc3NpYmxlPTNEVHJ1ZSApCi0gICAgIyAgICBlbHNlOgotICAgICMgICAgICAgICNUT0RP
OiBkbyB3ZSByZWFsbHkgbmVlZCB0aGUgaGlzdG9yeT8KLSAgICAjICAgICAgICBoaXN0b3J5ID0z
RCBzZWxmLmdldF9oaXN0b3J5KCB0cmFucywgaGlzdG9yeV9pZCwKLSAgICAjICAgICAgICAgICAg
Y2hlY2tfb3duZXJzaGlwPTNERmFsc2UsIGNoZWNrX2FjY2Vzc2libGU9M0RUcnVlLCBkZWxldGVk
PQo9M0RGYWxzZSApCi0gICAgIyAgICAgICAgaGRhID0zRCBzZWxmLmdldF9oaXN0b3J5X2RhdGFz
ZXRfYXNzb2NpYXRpb24oIHRyYW5zLCBoaXN0b3J5LD0KIGlkLAotICAgICMgICAgICAgICAgICBj
aGVja19vd25lcnNoaXA9M0RGYWxzZSwgY2hlY2tfYWNjZXNzaWJsZT0zRFRydWUgKQotICAgICMg
ICAgcmV0dXJuIGhkYQotICAgICMKLSAgICAjZGVmIGdldF9oZGFfbGlzdCggc2VsZiwgdHJhbnMs
IGhkYV9pZHMsIGNoZWNrX293bmVyc2hpcD0zRFRydWUsIGNoZWNrPQpfYWNjZXNzaWJsZT0zREZh
bHNlLCBjaGVja19zdGF0ZT0zRFRydWUgKToKLSAgICAjICAgICIiIgotICAgICMgICAgUmV0dXJu
cyBvbmUgb3IgbW9yZSBkYXRhc2V0cyBpbiBhIGxpc3QuCi0gICAgIwotICAgICMgICAgSWYgYSBk
YXRhc2V0IGlzIG5vdCBmb3VuZCBvciBpcyBpbmFjY2Vzc2libGUgdG8gdHJhbnMudXNlciwKLSAg
ICAjICAgIGFkZCBOb25lIGluIGl0cyBwbGFjZSBpbiB0aGUgbGlzdC4KLSAgICAjICAgICIiIgot
ICAgICMgICAgIyBwcmVjb25kdGlvbjogZGF0YXNldF9pZHMgaXMgYSBsaXN0IG9mIGVuY29kZWQg
aWQgc3RyaW5ncwotICAgICMgICAgaGRhcyA9M0QgW10KLSAgICAjICAgIGZvciBpZCBpbiBoZGFf
aWRzOgotICAgICMgICAgICAgIGhkYSA9M0QgTm9uZQotICAgICMgICAgICAgIHRyeToKLSAgICAj
ICAgICAgICAgICAgaGRhID0zRCBzZWxmLmdldF9kYXRhc2V0KCB0cmFucywgaWQsCi0gICAgIyAg
ICAgICAgICAgICAgICBjaGVja19vd25lcnNoaXA9M0RjaGVja19vd25lcnNoaXAsCi0gICAgIyAg
ICAgICAgICAgICAgICBjaGVja19hY2Nlc3NpYmxlPTNEY2hlY2tfYWNjZXNzaWJsZSwKLSAgICAj
ICAgICAgICAgICAgICAgIGNoZWNrX3N0YXRlPTNEY2hlY2tfc3RhdGUgKQotICAgICMgICAgICAg
IGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgIyAgICAgICAgICAgIHBhc3MKLSAgICAjICAgICAgICBo
ZGFzLmFwcGVuZCggaGRhICkKLSAgICAjICAgIHJldHVybiBoZGFzCi0gICAgIworCiAgICAgI2Rl
ZiBnZXRfZGF0YSggc2VsZiwgZGF0YXNldCwgcHJldmlldz0zRFRydWUgKToKICAgICAjICAgICIi
IgogICAgICMgICAgR2V0cyBhIGRhdGFzZXQncyBkYXRhLgpAQCAtMzk5LDQ5ICsyNzksNiBAQAog
ICAgICMgICAgICAgIHJldHVybiBkYXRhc2V0LmNvbnZlcnNpb25fbWVzc2FnZXMuUEVORElORwog
ICAgICMgICAgcmV0dXJuIE5vbmUKPTIwCi0gICAgI2RlZiBnZXRfaW5hY2Nlc3NpYmxlX2hkYV9k
aWN0KCBzZWxmLCB0cmFucywgaGRhICk6Ci0gICAgIyAgICByZXR1cm4gdHJhbnMuc2VjdXJpdHku
ZW5jb2RlX2RpY3RfaWRzKHsKLSAgICAjICAgICAgICAnaWQnICAgICAgICA6IGhkYS5pZCwKLSAg
ICAjICAgICAgICAnaGlzdG9yeV9pZCc6IGhkYS5oaXN0b3J5LmlkLAotICAgICMgICAgICAgICdo
aWQnICAgICAgIDogaGRhLmhpZCwKLSAgICAjICAgICAgICAnbmFtZScgICAgICA6IGhkYS5uYW1l
LAotICAgICMgICAgICAgICdzdGF0ZScgICAgIDogaGRhLnN0YXRlLAotICAgICMgICAgICAgICdk
ZWxldGVkJyAgIDogaGRhLmRlbGV0ZWQsCi0gICAgIyAgICAgICAgJ3Zpc2libGUnICAgOiBoZGEu
dmlzaWJsZSwKLSAgICAjICAgICAgICAnYWNjZXNzaWJsZSc6IEZhbHNlCi0gICAgIyAgICB9KQot
Ci0gICAgI2RlZiBnZXRfaGRhX2RpY3Rfd2l0aF9lcnJvciggc2VsZiwgdHJhbnMsIGhkYT0zRE5v
bmUsIGhpc3RvcnlfaWQ9M0RObz0KbmUsIGlkPTNETm9uZSwgZXJyb3JfbXNnPTNEJ0Vycm9yJyAp
OgotICAgICMgICAgcmV0dXJuIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9kaWN0X2lkcyh7Ci0gICAg
IyAgICAgICAgJ2lkJyAgICAgICAgOiBoZGEuaWQgaWYgaGRhIGVsc2UgaWQsCi0gICAgIyAgICAg
ICAgJ2hpc3RvcnlfaWQnOiBoZGEuaGlzdG9yeS5pZCBpZiBoZGEgZWxzZSBoaXN0b3J5X2lkLAot
ICAgICMgICAgICAgICdoaWQnICAgICAgIDogaGRhLmhpZCBpZiBoZGEgZWxzZSAnKHVua25vd24p
JywKLSAgICAjICAgICAgICAnbmFtZScgICAgICA6IGhkYS5uYW1lIGlmIGhkYSBlbHNlICcodW5r
bm93biknLAotICAgICMgICAgICAgICdlcnJvcicgICAgIDogZXJyb3JfbXNnLAotICAgICMgICAg
ICAgICdzdGF0ZScgICAgIDogdHJhbnMubW9kZWwuRGF0YXNldC5zdGF0ZXMuTkVXCi0gICAgIyAg
ICB9KQotCi0gICAgI2RlZiBzZXRfaGRhX2Zyb21fZGljdCggc2VsZiwgdHJhbnMsIGhkYSwgbmV3
X2RhdGEgKToKLSAgICAjICAgICIiIgotICAgICMgICAgQ2hhbmdlcyBIREEgZGF0YSB1c2luZyB0
aGUgZ2l2ZW4gZGljdGlvbmFyeSBuZXdfZGF0YS4KLSAgICAjICAgICIiIgotICAgICMgICAgIyBw
cmVjb25kaXRpb246IGFjY2VzcyBvZiB0aGUgaGRhIGhhcyBhbHJlYWR5IGJlZW4gY2hlY2tlZAot
ICAgICMKLSAgICAjICAgICMgc2VuZCB3aGF0IHdlIGNhbiBkb3duIGludG8gdGhlIG1vZGVsCi0g
ICAgIyAgICBjaGFuZ2VkID0zRCBoZGEuc2V0X2Zyb21fZGljdCggbmV3X2RhdGEgKQotICAgICMg
ICAgIyB0aGUgcmVzdCAob2Z0ZW4gaW52b2x2aW5nIHRoZSB0cmFucykgLSBkbyBoZXJlCi0gICAg
IyAgICBpZiAnYW5ub3RhdGlvbicgaW4gbmV3X2RhdGEua2V5cygpIGFuZCB0cmFucy5nZXRfdXNl
cigpOgotICAgICMgICAgICAgIGhkYS5hZGRfaXRlbV9hbm5vdGF0aW9uKCB0cmFucy5zYV9zZXNz
aW9uLCB0cmFucy5nZXRfdXNlcigpLCA9CmhkYSwgbmV3X2RhdGFbICdhbm5vdGF0aW9uJyBdICkK
LSAgICAjICAgICAgICBjaGFuZ2VkWyAnYW5ub3RhdGlvbicgXSA9M0QgbmV3X2RhdGFbICdhbm5v
dGF0aW9uJyBdCi0gICAgIyAgICBpZiAndGFncycgaW4gbmV3X2RhdGEua2V5cygpIGFuZCB0cmFu
cy5nZXRfdXNlcigpOgotICAgICMgICAgICAgIHNlbGYuc2V0X3RhZ3NfZnJvbV9saXN0KCB0cmFu
cywgaGRhLCBuZXdfZGF0YVsgJ3RhZ3MnIF0sIHVzZXI9Cj0zRHRyYW5zLnVzZXIgKQotICAgICMg
ICAgIyBzaGFyaW5nL3Blcm1pc3Npb25zPwotICAgICMgICAgIyBwdXJnZWQKLSAgICAjCi0gICAg
IyAgICBpZiBjaGFuZ2VkLmtleXMoKToKLSAgICAjICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZs
dXNoKCkKLSAgICAjCi0gICAgIyAgICByZXR1cm4gY2hhbmdlZAo9MjAKICAgICAjZGVmIGdldF9o
ZGFfam9iKCBzZWxmLCBoZGEgKToKICAgICAjICAgICMgR2V0IGRhdGFzZXQncyBqb2IuCkBAIC03
MTgsNiArNTU1LDg5IEBACiAgICAgICAgIHJldHVybiB1cmxzCj0yMAo9MjAKKyAgICAjVE9ETzog
bW92ZSBpbnRvIHNlcmlhbGl6ZXIgYmVsb3cKKyAgICAjZGVmIGdldF9oZGFfZGljdCggc2VsZiwg
dHJhbnMsIGhkYSApOgorICAgICMgICAgIiIiCisgICAgIyAgICBSZXR1cm4gZnVsbCBkZXRhaWxz
IG9mIHRoaXMgSERBIGluIGRpY3Rpb25hcnkgZm9ybS4KKyAgICAjICAgICIiIgorICAgICMgICAg
I3ByZWNvbmRpdGlvbjogdGhlIHVzZXIncyBhY2Nlc3MgdG8gdGhpcyBoZGEgaGFzIGFscmVhZHkg
YmVlbiBjaGU9CmNrZWQKKyAgICAjICAgICNUT0RPOj8/IHBvc3Rjb25kaXRpb246IGFsbCBpZHMg
YXJlIGVuY29kZWQgKGlzIHRoaXMgcmVhbGx5IHdoYXQgPQp3ZSB3YW50IGF0IHRoaXMgbGV2ZWw/
KQorICAgICMgICAgZXhwb3NlX2RhdGFzZXRfcGF0aCA9M0QgdHJhbnMudXNlcl9pc19hZG1pbigp
IG9yIHRyYW5zLmFwcC5jb25maWc9Ci5leHBvc2VfZGF0YXNldF9wYXRoCisgICAgIyAgICBoZGFf
ZGljdCA9M0QgaGRhLnRvX2RpY3QoIHZpZXc9M0QnZWxlbWVudCcsIGV4cG9zZV9kYXRhc2V0X3Bh
dGg9Cj0zRGV4cG9zZV9kYXRhc2V0X3BhdGggKQorICAgICMgICAgaGRhX2RpY3RbICdhcGlfdHlw
ZScgXSA9M0QgImZpbGUiCisgICAgIworICAgICMgICAgIyBBZGQgYWRkaXRpb25hbCBhdHRyaWJ1
dGVzIHRoYXQgZGVwZW5kIG9uIHRyYW5zIG11c3QgYmUgYWRkZWQgaGU9CnJlIHJhdGhlciB0aGFu
IGF0IHRoZSBtb2RlbCBsZXZlbC4KKyAgICAjICAgIGNhbl9hY2Nlc3NfaGRhID0zRCB0cmFucy5h
cHAuc2VjdXJpdHlfYWdlbnQuY2FuX2FjY2Vzc19kYXRhc2V0KCB0PQpyYW5zLmdldF9jdXJyZW50
X3VzZXJfcm9sZXMoKSwgaGRhLmRhdGFzZXQgKQorICAgICMgICAgY2FuX2FjY2Vzc19oZGEgPTNE
ICggdHJhbnMudXNlcl9pc19hZG1pbigpIG9yIGNhbl9hY2Nlc3NfaGRhICkKKyAgICAjICAgIGlm
IG5vdCBjYW5fYWNjZXNzX2hkYToKKyAgICAjICAgICAgICByZXR1cm4gc2VsZi5nZXRfaW5hY2Nl
c3NpYmxlX2hkYV9kaWN0KCB0cmFucywgaGRhICkKKyAgICAjICAgIGhkYV9kaWN0WyAnYWNjZXNz
aWJsZScgXSA9M0QgVHJ1ZQorICAgICMKKyAgICAjICAgICNUT0RPOiBJJ20gdW5jbGVhciBhcyB0
byB3aGljaCBhY2Nlc3MgcGF0dGVybiBpcyByaWdodAorICAgICMgICAgaGRhX2RpY3RbICdhbm5v
dGF0aW9uJyBdID0zRCBoZGEuZ2V0X2l0ZW1fYW5ub3RhdGlvbl9zdHIoIHRyYW5zLnM9CmFfc2Vz
c2lvbiwgaGRhLmhpc3RvcnkudXNlciwgaGRhICkKKyAgICAjICAgICNhbm5vdGF0aW9uID0zRCBn
ZXRhdHRyKCBoZGEsICdhbm5vdGF0aW9uJywgaGRhLmdldF9pdGVtX2Fubm90YXRpPQpvbl9zdHIo
IHRyYW5zLnNhX3Nlc3Npb24sIHRyYW5zLnVzZXIsIGhkYSApICkKKyAgICAjCisgICAgIyAgICAj
IC0tLS0gcmV0dXJuIGhlcmUgaWYgZGVsZXRlZCBBTkQgcHVyZ2VkIE9SIGNhbid0IGFjY2Vzcwor
ICAgICMgICAgcHVyZ2VkID0zRCAoIGhkYS5wdXJnZWQgb3IgaGRhLmRhdGFzZXQucHVyZ2VkICkK
KyAgICAjICAgIGlmICggaGRhLmRlbGV0ZWQgYW5kIHB1cmdlZCApOgorICAgICMgICAgICAgICNU
T0RPOiB0b19kaWN0IHNob3VsZCByZWFsbHkgZ28gQUZURVIgdGhpcyAtIG9ubHkgc3VtbWFyeSBk
YXRhCisgICAgIyAgICAgICAgcmV0dXJuIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9kaWN0X2lkcygg
aGRhX2RpY3QgKQorICAgICMKKyAgICAjICAgIGlmIGV4cG9zZV9kYXRhc2V0X3BhdGg6CisgICAg
IyAgICAgICAgdHJ5OgorICAgICMgICAgICAgICAgICBoZGFfZGljdFsgJ2ZpbGVfbmFtZScgXSA9
M0QgaGRhLmZpbGVfbmFtZQorICAgICMgICAgICAgIGV4Y2VwdCBvYmplY3RzdG9yZS5PYmplY3RO
b3RGb3VuZDoKKyAgICAjICAgICAgICAgICAgbG9nLmV4Y2VwdGlvbiggJ29iamVjdHN0b3JlLk9i
amVjdE5vdEZvdW5kLCBIREEgJXMuJywgaGRhPQouaWQgKQorICAgICMKKyAgICAjICAgIGhkYV9k
aWN0WyAnZG93bmxvYWRfdXJsJyBdID0zRCBnYWxheHkud2ViLnVybF9mb3IoICdoaXN0b3J5X2Nv
bnRlPQpudHNfZGlzcGxheScsCisgICAgIyAgICAgICAgaGlzdG9yeV9pZCA9M0QgdHJhbnMuc2Vj
dXJpdHkuZW5jb2RlX2lkKCBoZGEuaGlzdG9yeS5pZCApLAorICAgICMgICAgICAgIGhpc3Rvcnlf
Y29udGVudF9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBoZGEuaWQgKSApCisgICAg
IworICAgICMgICAgIyBpbmRlY2VzLCBhc3NvYy4gbWV0YWRhdGEgZmlsZXMsIGV0Yy4KKyAgICAj
ICAgIG1ldGFfZmlsZXMgPTNEIFtdCisgICAgIyAgICBmb3IgbWV0YV90eXBlIGluIGhkYS5tZXRh
ZGF0YS5zcGVjLmtleXMoKToKKyAgICAjICAgICAgICBpZiBpc2luc3RhbmNlKCBoZGEubWV0YWRh
dGEuc3BlY1sgbWV0YV90eXBlIF0ucGFyYW0sIGdhbGF4eS5kPQphdGF0eXBlcy5tZXRhZGF0YS5G
aWxlUGFyYW1ldGVyICk6CisgICAgIyAgICAgICAgICAgIG1ldGFfZmlsZXMuYXBwZW5kKCBkaWN0
KCBmaWxlX3R5cGU9M0RtZXRhX3R5cGUgKSApCisgICAgIyAgICBpZiBtZXRhX2ZpbGVzOgorICAg
ICMgICAgICAgIGhkYV9kaWN0WyAnbWV0YV9maWxlcycgXSA9M0QgbWV0YV9maWxlcworICAgICMK
KyAgICAjICAgICMgY3VycmVudGx5LCB0aGUgdml6IHJlZyBpcyBvcHRpb25hbCAtIGhhbmRsZSBv
bi9vZmYKKyAgICAjICAgIGlmIHRyYW5zLmFwcC52aXN1YWxpemF0aW9uc19yZWdpc3RyeToKKyAg
ICAjICAgICAgICBoZGFfZGljdFsgJ3Zpc3VhbGl6YXRpb25zJyBdID0zRCB0cmFucy5hcHAudmlz
dWFsaXphdGlvbnNfcmVnPQppc3RyeS5nZXRfdmlzdWFsaXphdGlvbnMoIHRyYW5zLCBoZGEgKQor
ICAgICMgICAgZWxzZToKKyAgICAjICAgICAgICBoZGFfZGljdFsgJ3Zpc3VhbGl6YXRpb25zJyBd
ID0zRCBoZGEuZ2V0X3Zpc3VhbGl6YXRpb25zKCkKKyAgICAjICAgICNUT0RPOiBpdCBtYXkgYWxz
byBiZSB3aXNlciB0byByZW1vdmUgZnJvbSBoZXJlIGFuZCBhZGQgYXMgQVBJIGNhPQpsbCB0aGF0
IGxvYWRzIHRoZSB2aXN1YWxpemF0aW9ucworICAgICMgICAgIyAgICAgICAgICAgd2hlbiB0aGUg
dmlzdWFsaXphdGlvbnMgYnV0dG9uIGlzIGNsaWNrZWQgKGluc3RlYWQgb2Y9CiBwcmVsb2FkaW5n
L3ByZS1jaGVja2luZykKKyAgICAjCisgICAgIyAgICAjIC0tLS0gcmV0dXJuIGhlcmUgaWYgZGVs
ZXRlZAorICAgICMgICAgaWYgaGRhLmRlbGV0ZWQgYW5kIG5vdCBwdXJnZWQ6CisgICAgIyAgICAg
ICAgcmV0dXJuIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9kaWN0X2lkcyggaGRhX2RpY3QgKQorICAg
ICMKKyAgICAjICAgIHJldHVybiB0cmFucy5zZWN1cml0eS5lbmNvZGVfZGljdF9pZHMoIGhkYV9k
aWN0ICkKKworICAgICNkZWYgZ2V0X2luYWNjZXNzaWJsZV9oZGFfZGljdCggc2VsZiwgdHJhbnMs
IGhkYSApOgorICAgICMgICAgcmV0dXJuIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9kaWN0X2lkcyh7
CisgICAgIyAgICAgICAgJ2lkJyAgICAgICAgOiBoZGEuaWQsCisgICAgIyAgICAgICAgJ2hpc3Rv
cnlfaWQnOiBoZGEuaGlzdG9yeS5pZCwKKyAgICAjICAgICAgICAnaGlkJyAgICAgICA6IGhkYS5o
aWQsCisgICAgIyAgICAgICAgJ25hbWUnICAgICAgOiBoZGEubmFtZSwKKyAgICAjICAgICAgICAn
c3RhdGUnICAgICA6IGhkYS5zdGF0ZSwKKyAgICAjICAgICAgICAnZGVsZXRlZCcgICA6IGhkYS5k
ZWxldGVkLAorICAgICMgICAgICAgICd2aXNpYmxlJyAgIDogaGRhLnZpc2libGUsCisgICAgIyAg
ICAgICAgJ2FjY2Vzc2libGUnOiBGYWxzZQorICAgICMgICAgfSkKKworICAgICNkZWYgZ2V0X2hk
YV9kaWN0X3dpdGhfZXJyb3IoIHNlbGYsIHRyYW5zLCBoZGE9M0ROb25lLCBoaXN0b3J5X2lkPTNE
Tm89Cm5lLCBpZD0zRE5vbmUsIGVycm9yX21zZz0zRCdFcnJvcicgKToKKyAgICAjICAgIHJldHVy
biB0cmFucy5zZWN1cml0eS5lbmNvZGVfZGljdF9pZHMoeworICAgICMgICAgICAgICdpZCcgICAg
ICAgIDogaGRhLmlkIGlmIGhkYSBlbHNlIGlkLAorICAgICMgICAgICAgICdoaXN0b3J5X2lkJzog
aGRhLmhpc3RvcnkuaWQgaWYgaGRhIGVsc2UgaGlzdG9yeV9pZCwKKyAgICAjICAgICAgICAnaGlk
JyAgICAgICA6IGhkYS5oaWQgaWYgaGRhIGVsc2UgJyh1bmtub3duKScsCisgICAgIyAgICAgICAg
J25hbWUnICAgICAgOiBoZGEubmFtZSBpZiBoZGEgZWxzZSAnKHVua25vd24pJywKKyAgICAjICAg
ICAgICAnZXJyb3InICAgICA6IGVycm9yX21zZywKKyAgICAjICAgICAgICAnc3RhdGUnICAgICA6
IHRyYW5zLm1vZGVsLkRhdGFzZXQuc3RhdGVzLk5FVworICAgICMgICAgfSkKKworCiAjID0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0z
RD0zRAogY2xhc3MgSERBRGVzZXJpYWxpemVyKCBiYXNlLk1vZGVsRGVzZXJpYWxpemVyICk6CiAg
ICAgIiIiCgpkaWZmIC1yIDk4ZDRjYjU4MWY2MjAxMzU5YTdkZDA4NDVhYjJkODViMTFlOTg1ZDcg
LXIgMTQzZjAyMmJhZTY5ZDhhYWEwNWZiOTM9CjhiZTk5ZDM2NDY2Njk5YTU0IGxpYi9nYWxheHkv
bWFuYWdlcnMvaGlzdG9yaWVzLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvaGlzdG9yaWVz
LnB5CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvaGlzdG9yaWVzLnB5CkBAIC0xMjcsNyArMTI3
LDcgQEAKICAgICAgICAgICAgICAgICBjb250ZW50c19kaWN0ID0zRCB7fQo9MjAKICAgICAgICAg
ICAgICAgICBpZiBpc2luc3RhbmNlKCBjb250ZW50LCB0cmFucy5hcHAubW9kZWwuSGlzdG9yeURh
dGFzZXRBc3NvPQpjaWF0aW9uICk6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzX2RpY3Qg
PTNEIGhkYV9zZXJpYWxpemVyLnNlcmlhbGl6ZV90b192aWV3KCB0cj0KYW5zLCBoZGEsIHZpZXc9
M0QnZGV0YWlsZWQnICkKKyAgICAgICAgICAgICAgICAgICAgY29udGVudHNfZGljdCA9M0QgaGRh
X3NlcmlhbGl6ZXIuc2VyaWFsaXplX3RvX3ZpZXcoIHRyPQphbnMsIGNvbnRlbnQsIHZpZXc9M0Qn
ZGV0YWlsZWQnICkKPTIwCiAgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKCBjb250ZW50
LCB0cmFucy5hcHAubW9kZWwuSGlzdG9yeURhdGFzZXRDbz0KbGxlY3Rpb25Bc3NvY2lhdGlvbiAp
OgogICAgICAgICAgICAgICAgICAgICB0cnk6CgpkaWZmIC1yIDk4ZDRjYjU4MWY2MjAxMzU5YTdk
ZDA4NDVhYjJkODViMTFlOTg1ZDcgLXIgMTQzZjAyMmJhZTY5ZDhhYWEwNWZiOTM9CjhiZTk5ZDM2
NDY2Njk5YTU0IGxpYi9nYWxheHkvbWFuYWdlcnMvdXNlcnMucHkKLS0tIGEvbGliL2dhbGF4eS9t
YW5hZ2Vycy91c2Vycy5weQorKysgYi9saWIvZ2FsYXh5L21hbmFnZXJzL3VzZXJzLnB5CkBAIC0y
Myw4ICsyMywxNyBAQAogICAgIGRlZmF1bHRfb3JkZXJfYnkgPTNEICggbW9kZWwuVXNlci5jcmVh
dGVfdGltZSwgKQogICAgIGZvcmVpZ25fa2V5X25hbWUgPTNEICd1c2VyJwo9MjAKKyAgICAjVE9E
TzogdGhlcmUgaXMgcXVpdGUgYSBiaXQgb2YgZnVuY3Rpb25hbGl0eSBhcm91bmQgdGhlIHVzZXIg
KGF1dGhlbnRpPQpjYXRpb24sIHBlcm1pc3Npb25zLCBxdW90YXMsIGdyb3Vwcy9yb2xlcykKKyAg
ICAjICAgbW9zdCBvZiB3aGljaCBpdCBtYXkgYmUgdW5uZWNjZXNzYXJ5IHRvIGhhdmUgaGVyZQor
CisgICAgI1RPRE86IGluY29ycCBCYXNlQVBJQ29udHJvbGxlci52YWxpZGF0ZV9pbl91c2Vyc19h
bmRfZ3JvdXBzCisgICAgI1RPRE86IGluY29ycCBDcmVhdGVzVXNlcnNNaXhpbgorICAgICNUT0RP
OiBpbmNvcnAgQ3JlYXRlc0FwaUtleXNNaXhpbgorCisKICAgICBkZWYgY3JlYXRlKCBzZWxmLCB0
cmFucywgKiprd2FyZ3MgKToKICAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBhIG5ldyB1c2Vy
LgogICAgICAgICAiIiIKICAgICAgICAgI1RPRE86IGRlc2VyaWFsaXplIGFuZCB2YWxpZGF0ZSBo
ZXJlCiAgICAgICAgIGVtYWlsID0zRCBrd2FyZ3NbICdlbWFpbCcgXQpAQCAtNjEsNiArNzAsOSBA
QAo9MjAKICAgICBkZWYgX2Vycm9yX29uX2R1cGxpY2F0ZV9lbWFpbCggc2VsZiwgdHJhbnMsIGVt
YWlsICk6CiAgICAgICAgICIiIgorICAgICAgICBDaGVjayBmb3IgYSBkdXBsaWNhdGUgZW1haWwg
YW5kIHJhaXNlIGlmIGZvdW5kLgorCisgICAgICAgIDpyYWlzZXMgZXhjZXB0aW9ucy5Db25mbGlj
dDogaWYgYW55IGFyZSBmb3VuZAogICAgICAgICAiIiIKICAgICAgICAgI1RPRE86IHJlbW92ZSB0
aGlzIGNoZWNrIHdoZW4gdW5pcXVlPTNEVHJ1ZSBpcyBhZGRlZCB0byB0aGUgZW1haWwgPQpjb2x1
bW4KICAgICAgICAgaWYgc2VsZi5ieV9lbWFpbCggdHJhbnMsIGVtYWlsICkgaXMgbm90IE5vbmU6
CkBAIC03Miw2ICs4NCw3IEBACiAgICAgICAgICIiIgogICAgICAgICBmaWx0ZXJzID0zRCBzZWxm
Ll9tdW5nZV9maWx0ZXJzKCBzZWxmLm1vZGVsX2NsYXNzLmVtYWlsID0zRD0zRCBlbWE9CmlsLCBm
aWx0ZXJzICkKICAgICAgICAgdHJ5OgorI1RPRE86IHVzZSBvbmVfb3Jfbm9uZQogICAgICAgICAg
ICAgcmV0dXJuIHN1cGVyKCBVc2VyTWFuYWdlciwgc2VsZiApLm9uZSggdHJhbnMsIGZpbHRlcnM9
M0RmaWx0ZXI9CnMsICoqa3dhcmdzICkKICAgICAgICAgZXhjZXB0IGV4Y2VwdGlvbnMuT2JqZWN0
Tm90Rm91bmQsIG5vdF9mb3VuZDoKICAgICAgICAgICAgIHJldHVybiBOb25lCkBAIC04NiwyNCAr
OTksMzEgQEAKICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPQotLS0tLSBhZG1pbgogICAgIGRlZiBpc19hZG1p
biggc2VsZiwgdHJhbnMsIHVzZXIgKToKICAgICAgICAgIiIiCisgICAgICAgIFJldHVybiBUcnVl
IGlmIHRoaXMgdXNlciBpcyBhbiBhZG1pbi4KICAgICAgICAgIiIiCiAgICAgICAgIGFkbWluX2Vt
YWlscyA9M0Qgc2VsZi5fYWRtaW5fZW1haWxzKCB0cmFucyApCiAgICAgICAgIHJldHVybiB1c2Vy
IGFuZCBhZG1pbl9lbWFpbHMgYW5kIHVzZXIuZW1haWwgaW4gYWRtaW5fZW1haWxzCj0yMAogICAg
IGRlZiBfYWRtaW5fZW1haWxzKCBzZWxmLCB0cmFucyApOgogICAgICAgICAiIiIKKyAgICAgICAg
UmV0dXJuIGEgbGlzdCBvZiBhZG1pbiBlbWFpbCBhZGRyZXNzZXMgZnJvbSB0aGUgY29uZmlnIGZp
bGUuCiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gWyB4LnN0cmlwKCkgZm9yIHggaW4gdHJh
bnMuYXBwLmNvbmZpZy5nZXQoICJhZG1pbl91c2VycyIsICI9CiIgKS5zcGxpdCggIiwiICkgXQo9
MjAKICAgICBkZWYgYWRtaW5zKCBzZWxmLCB0cmFucywgZmlsdGVycz0zRE5vbmUsICoqa3dhcmdz
ICk6CiAgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gYSBsaXN0IG9mIGFkbWluIFVzZXJzLgog
ICAgICAgICAiIiIKICAgICAgICAgZmlsdGVycyA9M0Qgc2VsZi5fbXVuZ2VfZmlsdGVycyggc2Vs
Zi5tb2RlbF9jbGFzcy5lbWFpbC5pbl8oIHNlbGYuPQpfYWRtaW5fZW1haWxzKCB0cmFucyApICks
IGZpbHRlcnMgKQogICAgICAgICByZXR1cm4gc3VwZXIoIFVzZXJNYW5hZ2VyLCBzZWxmICkubGlz
dCggdHJhbnMsIGZpbHRlcnM9M0RmaWx0ZXJzLCA9Cioqa3dhcmdzICkKPTIwCiAgICAgZGVmIGVy
cm9yX3VubGVzc19hZG1pbiggc2VsZiwgdHJhbnMsIHVzZXIsIG1zZz0zRCJBZG1pbmlzdHJhdG9y
cyBvbmx5Ij0KLCAqKmt3YXJncyApOgogICAgICAgICAiIiIKKyAgICAgICAgUmFpc2UgYW4gZXJy
b3IgaWYgYHVzZXJgIGlzIG5vdCBhbiBhZG1pbi4KKworICAgICAgICA6cmFpc2VzIGV4Y2VwdGlv
bnMuQWRtaW5SZXF1aXJlZEV4Y2VwdGlvbjogaWYgYHVzZXJgIGlzIG5vdCBhbiBhZG09CmluLgog
ICAgICAgICAiIiIKKyAgICAgICAgIyB1c2VmdWwgaW4gYWRtaW4gb25seSBtZXRob2RzCiAgICAg
ICAgIGlmIG5vdCBzZWxmLmlzX2FkbWluKCB0cmFucywgdXNlciApOgogICAgICAgICAgICAgcmFp
c2UgZXhjZXB0aW9ucy5BZG1pblJlcXVpcmVkRXhjZXB0aW9uKCBtc2csICoqa3dhcmdzICkKICAg
ICAgICAgcmV0dXJuIHVzZXIKQEAgLTExMSwxMiArMTMxLDE0IEBACiAgICAgIyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LT0KLS0tLS0gYW5vbnltb3VzCiAgICAgZGVmIGlzX2Fub255bW91cyggc2VsZiwgdXNlciApOgog
ICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIFRydWUgaWYgYHVzZXJgIGlzIGFub255bW91cy4K
ICAgICAgICAgIiIiCi0gICAgICAgICMgZGVmaW5lIGhlcmUgZm9yIHNpbmdsZSBwb2ludCBvZiBj
aGFuZ2UKKyAgICAgICAgIyBkZWZpbmUgaGVyZSBmb3Igc2luZ2xlIHBvaW50IG9mIGNoYW5nZSBh
bmQgbWFrZSBtb3JlIHJlYWRhYmxlCiAgICAgICAgIHJldHVybiB1c2VyIGlzIE5vbmUKPTIwCiAg
ICAgZGVmIGVycm9yX2lmX2Fub255bW91cyggc2VsZiwgdHJhbnMsIHVzZXIsIG1zZz0zRCJMb2ct
aW4gcmVxdWlyZWQiLCAqKj0Ka3dhcmdzICk6CiAgICAgICAgICIiIgorICAgICAgICBSYWlzZSBh
biBlcnJvciBpZiBgdXNlcmAgaXMgYW5vbnltb3VzLgogICAgICAgICAiIiIKICAgICAgICAgaWYg
dXNlciBpcyBOb25lOgogICAgICAgICAgICAgI1RPRE86IGNvZGUgaXMgY29ycmVjdCAoNDAzKSwg
YnV0IHNob3VsZCBiZSBuYW1lZCBBdXRoZW50aWNhdGk9Cm9uUmVxdWlyZWQgKDQwMSBhbmQgNDAz
IGFyZSBmbGlwcGVkKQpAQCAtMTI2LDE2ICsxNDgsMjAgQEAKICAgICAjIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPQot
LS0tLSBjdXJyZW50CiAgICAgZGVmIGlzX2N1cnJlbnRfdXNlciggc2VsZiwgdHJhbnMsIHVzZXIg
KToKICAgICAgICAgIiIiCisgICAgICAgIFJldHVybiBUcnVlIGlmIHRoaXMgdXNlciBpcyB0aGUg
dHJhbnMnIGN1cnJlbnQgdXNlci4KICAgICAgICAgIiIiCisgICAgICAgICMgZGVmaW5lIGhlcmUg
Zm9yIHNpbmdsZSBwb2ludCBvZiBjaGFuZ2UgYW5kIG1ha2UgbW9yZSByZWFkYWJsZQogICAgICAg
ICByZXR1cm4gdXNlciA9M0Q9M0QgdHJhbnMudXNlcgo9MjAKICAgICBkZWYgaXNfY3VycmVudF91
c2VyX2Fub255bW91cyggc2VsZiwgdHJhbnMgKToKICAgICAgICAgIiIiCisgICAgICAgIFJldHVy
biBUcnVlIGlmIHRoZSBjdXJyZW50IHVzZXIgaXMgYW5vbnltb3VzLgogICAgICAgICAiIiIKLSAg
ICAgICAgcmV0dXJuIHRyYW5zLnVzZXIgaXMgTm9uZQorICAgICAgICByZXR1cm4gc2VsZi5pc19h
bm9ueW1vdXMoIHRyYW5zLnVzZXIgKQo9MjAKICAgICBkZWYgaXNfY3VycmVudF91c2VyX2FkbWlu
KCBzZWxmLCB0cmFucyApOgogICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIFRydWUgaWYgdGhl
IGN1cnJlbnQgdXNlciBpcyBhZG1pbi4KICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxm
LmlzX2FkbWluKCB0cmFucywgdHJhbnMudXNlciApCj0yMApAQCAtMTUxLDMyICsxNzcsNDcgQEAK
ICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tPQotLS0tLSBhcGkga2V5cwogICAgIGRlZiBjcmVhdGVfYXBpX2tl
eSggc2VsZiwgdHJhbnMsIHVzZXIgKToKICAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBhbmQg
cmV0dXJuIGFuIEFQSSBrZXkgZm9yIGB1c2VyYC4KICAgICAgICAgIiIiCisgICAgICAgICNUT0RP
OiBzZWVtcyBsaWtlIHRoaXMgc2hvdWxkIHJldHVybiB0aGUgbW9kZWwKICAgICAgICAgcmV0dXJu
IGFwaV9rZXlzLkFwaUtleU1hbmFnZXIoIHRyYW5zLmFwcCApLmNyZWF0ZV9hcGlfa2V5KCB1c2Vy
ICkKPTIwCi0gICAgIyBuZWVkZWQ/Ci0gICAgZGVmIGFwaV9rZXkoIHNlbGYsIHRyYW5zLCB1c2Vy
ICk6CisgICAgI1RPRE86IHBvc3NpYmx5IG1vdmUgdG8gQXBpS2V5TWFuYWdlcgorICAgIGRlZiB2
YWxpZF9hcGlfa2V5KCBzZWxmLCB0cmFucywgdXNlciApOgogICAgICAgICAiIiIKKyAgICAgICAg
UmV0dXJuIHRoaXMgbW9zdCByZWNlbnQgQVBJS2V5IGZvciB0aGlzIHVzZXIgb3IgTm9uZSBpZiBu
b25lIGhhdmUgPQpiZWVuIGNyZWF0ZWQuCiAgICAgICAgICIiIgotICAgICAgICAjVE9ETzogY2F0
Y2ggTm9SZXN1bHRGb3VuZAotICAgICAgICByZXR1cm4gdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSgg
bW9kZWwuQVBJS2V5cyApLmZpbHRlcl9ieSggdXNlcj0zRHU9CnNlciApLm9uZSgpCisgICAgICAg
IHF1ZXJ5ID0zRCAoIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIG1vZGVsLkFQSUtleXMgKQorICAg
ICAgICAgICAgICAgICAgICAuZmlsdGVyX2J5KCB1c2VyPTNEdXNlciApCisgICAgICAgICAgICAg
ICAgICAgIC5vcmRlcl9ieSggbW9kZWwuQVBJS2V5cy5jcmVhdGVfdGltZSApICkKKyAgICAgICAg
cmV0dXJuIHF1ZXJ5LmZpcnN0KCkKKworICAgICNUT0RPOiBwb3NzaWJseSBtb3ZlIHRvIEFwaUtl
eU1hbmFnZXIKKyAgICBkZWYgZ2V0X29yX2NyZWF0ZV92YWxpZF9hcGlfa2V5KCBzZWxmLCB0cmFu
cywgdXNlciApOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIHRoaXMgbW9zdCByZWNlbnQg
QVBJS2V5IGZvciB0aGlzIHVzZXIgb3IgY3JlYXRlIG9uZSBpZiBub25lPQogaGF2ZSBiZWVuCisg
ICAgICAgIGNyZWF0ZWQuCisgICAgICAgICIiIgorICAgICAgICBleGlzdGluZyA9M0Qgc2VsZi52
YWxpZF9hcGlfa2V5KCB0cmFucywgdXNlciApCisgICAgICAgIGlmIGV4aXN0aW5nOgorICAgICAg
ICAgICAgcmV0dXJuIGV4aXN0aW5nCisgICAgICAgIHJldHVybiBzZWxmLmNyZWF0ZV9hcGlfa2V5
KCBzZWxmLCB0cmFucywgdXNlciApCj0yMAogICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0tIHJvbGVz
CiAgICAgZGVmIHByaXZhdGVfcm9sZSggc2VsZiwgdHJhbnMsIHVzZXIgKToKICAgICAgICAgIiIi
CisgICAgICAgIFJldHVybiB0aGUgc2VjdXJpdHkgYWdlbnQncyBwcml2YXRlIHJvbGUgZm9yIGB1
c2VyYC4KICAgICAgICAgIiIiCiAgICAgICAgICNUT0RPOiBub3Qgc3VyZSB3ZSBuZWVkIHRvIGdv
IHRocm91Z2ggc2VjIGFnZW50Li4uIGl0J3MganVzdCB0aGUgZj0KaXJzdCByb2xlIG9mIHR5cGUg
cHJpdmF0ZQogICAgICAgICByZXR1cm4gdHJhbnMuYXBwLnNlY3VyaXR5X2FnZW50LmdldF9wcml2
YXRlX3VzZXJfcm9sZSggdXNlciApCj0yMAotICAgICNUT0RPOiB0aGVyZSBpcyBxdWl0ZSBhIGJp
dCBvZiBmdW5jdGlvbmFsaXR5IGFyb3VuZCB0aGUgdXNlciAoYXV0aGVudGk9CmNhdGlvbiwgcXVv
dGFzLCBncm91cHMvcm9sZXMpCi0gICAgIyAgIG1vc3Qgb2Ygd2hpY2ggaXQgbWF5IGJlIHVubmVj
Y2Vzc2FyeSB0byBoYXZlIGhlcmUKLQo9MjAKICMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECiBjbGFzcyBVc2VyU2VyaWFs
aXplciggYmFzZS5Nb2RlbFNlcmlhbGl6ZXIgKToKPTIwCiAgICAgZGVmIF9faW5pdF9fKCBzZWxm
ICk6CiAgICAgICAgICIiIgorICAgICAgICBDb252ZXJ0IGEgVXNlciBhbmQgYXNzb2NpYXRlZCBk
YXRhIHRvIGEgZGljdGlvbmFyeSByZXByZXNlbnRhdGlvbi4KICAgICAgICAgIiIiCiAgICAgICAg
IHN1cGVyKCBVc2VyU2VyaWFsaXplciwgc2VsZiApLl9faW5pdF9fKCkKPTIwCkBAIC0xOTIsOCAr
MjMzLDggQEAKICAgICAgICAgXQogICAgICAgICBleHRlbmRlZF92aWV3ID0zRCBkZXRhaWxlZF92
aWV3ICsgWwogICAgICAgICAgICAgIydwcmVmZXJlbmNlcycsCi0gICAgICAgICAgICAjJ3RhZ3Mn
LAotICAgICAgICAgICAgIydhbm5vdGF0aW9ucycKKyAgICAgICAgICAgICMndGFncycsICMgYWxs
IHRhZ3MKKyAgICAgICAgICAgICMnYW5ub3RhdGlvbnMnICMgYWxsIGFubm90YXRpb25zCiAgICAg
ICAgIF0KICAgICAgICAgc2VsZi5zZXJpYWxpemFibGVfa2V5cyA9M0QgZXh0ZW5kZWRfdmlldwog
ICAgICAgICBzZWxmLnZpZXdzID0zRCB7CgpkaWZmIC1yIDk4ZDRjYjU4MWY2MjAxMzU5YTdkZDA4
NDVhYjJkODViMTFlOTg1ZDcgLXIgMTQzZjAyMmJhZTY5ZDhhYWEwNWZiOTM9CjhiZTk5ZDM2NDY2
Njk5YTU0IGxpYi9nYWxheHkvdG9vbHMvaW1wX2V4cC9fX2luaXRfXy5weQotLS0gYS9saWIvZ2Fs
YXh5L3Rvb2xzL2ltcF9leHAvX19pbml0X18ucHkKKysrIGIvbGliL2dhbGF4eS90b29scy9pbXBf
ZXhwL19faW5pdF9fLnB5CkBAIC05LDcgKzksNiBAQAogZnJvbSBnYWxheHkud2ViLmZyYW1ld29y
ay5oZWxwZXJzIGltcG9ydCB0b191bmljb2RlCiBmcm9tIGdhbGF4eS5tb2RlbC5pdGVtX2F0dHJz
IGltcG9ydCBVc2VzQW5ub3RhdGlvbnMKIGZyb20gZ2FsYXh5LnV0aWwuanNvbiBpbXBvcnQgbG9h
ZHMsIGR1bXBzCi1mcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9sbGVyIGltcG9ydCBVc2VzSGlz
dG9yeU1peGluCj0yMAogbG9nID0zRCBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKPTIwCkBA
IC00OSw3ICs0OCw3IEBACiAgICAgbG9nLmRlYnVnKCAiTG9hZGVkIGhpc3RvcnkgaW1wb3J0IHRv
b2w6ICVzIiwgaGlzdG9yeV9pbXBfdG9vbC5pZCApCj0yMAo9MjAKLWNsYXNzIEpvYkltcG9ydEhp
c3RvcnlBcmNoaXZlV3JhcHBlciggb2JqZWN0LCBVc2VzSGlzdG9yeU1peGluLCBVc2VzQW5ub3Rh
PQp0aW9ucyApOgorY2xhc3MgSm9iSW1wb3J0SGlzdG9yeUFyY2hpdmVXcmFwcGVyKCBvYmplY3Qs
IFVzZXNBbm5vdGF0aW9ucyApOgogICAgICIiIgogICAgICAgICBDbGFzcyBwcm92aWRlcyBzdXBw
b3J0IGZvciBwZXJmb3JtaW5nIGpvYnMgdGhhdCBpbXBvcnQgYSBoaXN0b3J5IGY9CnJvbQogICAg
ICAgICBhbiBhcmNoaXZlLgpAQCAtMzE1LDE0ICszMTQsMjggQEAKICAgICAgICAgICAgICAgICBz
ZWxmLnNhX3Nlc3Npb24uZmx1c2goKQo9MjAKPTIwCi1jbGFzcyBKb2JFeHBvcnRIaXN0b3J5QXJj
aGl2ZVdyYXBwZXIoIG9iamVjdCwgVXNlc0hpc3RvcnlNaXhpbiwgVXNlc0Fubm90YT0KdGlvbnMg
KToKK2NsYXNzIEpvYkV4cG9ydEhpc3RvcnlBcmNoaXZlV3JhcHBlciggb2JqZWN0LCBVc2VzQW5u
b3RhdGlvbnMgKToKICAgICAiIiIKLSAgICAgICAgQ2xhc3MgcHJvdmlkZXMgc3VwcG9ydCBmb3Ig
cGVyZm9ybWluZyBqb2JzIHRoYXQgZXhwb3J0IGEgaGlzdG9yeSB0PQpvIGFuCi0gICAgICAgIGFy
Y2hpdmUuCisgICAgQ2xhc3MgcHJvdmlkZXMgc3VwcG9ydCBmb3IgcGVyZm9ybWluZyBqb2JzIHRo
YXQgZXhwb3J0IGEgaGlzdG9yeSB0byBhbgorICAgIGFyY2hpdmUuCiAgICAgIiIiCiAgICAgZGVm
IF9faW5pdF9fKCBzZWxmLCBqb2JfaWQgKToKICAgICAgICAgc2VsZi5qb2JfaWQgPTNEIGpvYl9p
ZAo9MjAKKyAgICBkZWYgZ2V0X2hpc3RvcnlfZGF0YXNldHMoIHNlbGYsIHRyYW5zLCBoaXN0b3J5
ICk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIGhpc3RvcnkncyBkYXRhc2V0cy4KKyAg
ICAgICAgIiIiCisgICAgICAgIHF1ZXJ5ID0zRCAoIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRy
YW5zLm1vZGVsLkhpc3RvcnlEYXRhc2V0QXNzbz0KY2lhdGlvbiApCisgICAgICAgICAgICAgICAg
ICAgIC5maWx0ZXIoIHRyYW5zLm1vZGVsLkhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb24uaGlzdG9y
eT0KID0zRD0zRCBoaXN0b3J5ICkKKyAgICAgICAgICAgICAgICAgICAgLm9wdGlvbnMoIGVhZ2Vy
bG9hZCggImNoaWxkcmVuIiApICkKKyAgICAgICAgICAgICAgICAgICAgLmpvaW4oICJkYXRhc2V0
IiApCisgICAgICAgICAgICAgICAgICAgIC5vcHRpb25zKCBlYWdlcmxvYWRfYWxsKCAiZGF0YXNl
dC5hY3Rpb25zIiApICkKKyAgICAgICAgICAgICAgICAgICAgLm9yZGVyX2J5KCB0cmFucy5tb2Rl
bC5IaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uLmhpZCApCisgICAgICAgICAgICAgICAgICAgIC5m
aWx0ZXIoIHRyYW5zLm1vZGVsLkhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb24uZGVsZXRlZD0KID0z
RD0zRCBGYWxzZSApCisgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoIHRyYW5zLm1vZGVsLkRh
dGFzZXQucHVyZ2VkID0zRD0zRCBGYWxzZSApICkKKyAgICAgICAgcmV0dXJuIHF1ZXJ5LmFsbCgp
CisKICAgICAjIFRPRE86IHNob3VsZCB1c2UgZGJfc2Vzc2lvbiByYXRoZXIgdGhhbiB0cmFucyBp
biB0aGlzIG1ldGhvZC4KICAgICBkZWYgc2V0dXBfam9iKCBzZWxmLCB0cmFucywgamVoYSwgaW5j
bHVkZV9oaWRkZW49M0RGYWxzZSwgaW5jbHVkZV9kZWxlPQp0ZWQ9M0RGYWxzZSApOgogICAgICAg
ICAiIiIgUGVyZm9ybSBzZXR1cCBmb3Igam9iIHRvIGV4cG9ydCBhIGhpc3RvcnkgaW50byBhbiBh
cmNoaXZlLiBNZXQ9CmhvZCBnZW5lcmF0ZXMKCmRpZmYgLXIgOThkNGNiNTgxZjYyMDEzNTlhN2Rk
MDg0NWFiMmQ4NWIxMWU5ODVkNyAtciAxNDNmMDIyYmFlNjlkOGFhYTA1ZmI5Mz0KOGJlOTlkMzY0
NjY2OTlhNTQgbGliL2dhbGF4eS93ZWIvYmFzZS9jb250cm9sbGVyLnB5Ci0tLSBhL2xpYi9nYWxh
eHkvd2ViL2Jhc2UvY29udHJvbGxlci5weQorKysgYi9saWIvZ2FsYXh5L3dlYi9iYXNlL2NvbnRy
b2xsZXIucHkKQEAgLTIxMyw3ICsyMTMsNyBAQAogICAgICAgICBpZiB0cmFucy53ZWJhcHAubmFt
ZSA9M0Q9M0QgJ2dhbGF4eSc6CiAgICAgICAgICAgICAjIFdlIHNldCBkZWZhdWx0IHVzZXIgcGVy
bWlzc2lvbnMsIGJlZm9yZSB3ZSBsb2cgaW4gYW5kIHNldCB0aD0KZSBkZWZhdWx0IGhpc3Rvcnkg
cGVybWlzc2lvbnMKICAgICAgICAgICAgIHRyYW5zLmFwcC5zZWN1cml0eV9hZ2VudC51c2VyX3Nl
dF9kZWZhdWx0X3Blcm1pc3Npb25zKCB1c2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Cl9hY2Nlc3Nf
cHJpdmF0ZT0zRHRyYW5zLmFwcC5jb25maWcubmV3X3VzZXJfZGF0YXNldF9hY2Nlc3Nfcm9sZV9k
ZWZhdWx0X3ByaT0KdmF0ZSApCisgICAgICAgICAgICAgICAgZGVmYXVsdF9hY2Nlc3NfcHJpdmF0
ZT0zRHRyYW5zLmFwcC5jb25maWcubmV3X3VzZXJfZGF0YXNldD0KX2FjY2Vzc19yb2xlX2RlZmF1
bHRfcHJpdmF0ZSApCiAgICAgICAgIHJldHVybiB1c2VyCj0yMAo9MjAKQEAgLTIzNiw0NSArMjM2
LDYgQEAKICAgICAgICAgcmV0dXJuIG1hbmFnZXJzX2Jhc2Uuc2VjdXJpdHlfY2hlY2soIHRyYW5z
LCBpdGVtLCBjaGVja19vd25lcnNoaXA9Cj0zRGNoZWNrX293bmVyc2hpcCwgY2hlY2tfYWNjZXNz
aWJsZT0zRGNoZWNrX2FjY2Vzc2libGUgKQo9MjAKPTIwCi1jbGFzcyBVc2VzSGlzdG9yeU1peGlu
KCBTaGFyYWJsZUl0ZW1TZWN1cml0eU1peGluICk6Ci0gICAgIiIiIE1peGluIGZvciBjb250cm9s
bGVycyB0aGF0IHVzZSBIaXN0b3J5IG9iamVjdHMuICIiIgotCi0gICAgZGVmIGdldF9oaXN0b3J5
KCBzZWxmLCB0cmFucywgaWQsIGNoZWNrX293bmVyc2hpcD0zRFRydWUsIGNoZWNrX2FjY2Vzcz0K
aWJsZT0zREZhbHNlLCBkZWxldGVkPTNETm9uZSApOgotICAgICAgICAiIiIKLSAgICAgICAgR2V0
IGEgSGlzdG9yeSBmcm9tIHRoZSBkYXRhYmFzZSBieSBpZCwgdmVyaWZ5aW5nIG93bmVyc2hpcC4K
LSAgICAgICAgIiIiCi0gICAgICAgIGlmIHRyYW5zLnVzZXIgaXMgTm9uZSBhbmQgdHJhbnMuaGlz
dG9yeToKLSAgICAgICAgICAgIGlmIGlkID0zRD0zRCB0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQo
IHRyYW5zLmhpc3RvcnkuaWQgKToKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnMuaGlzdG9y
eQotICAgICAgICAgICAgcmFpc2UgSXRlbU93bmVyc2hpcEV4Y2VwdGlvbiggIk11c3QgYmUgbG9n
Z2VkIGluIHRvIG1hbmFnZSBHYWw9CmF4eSBpdGVtcyIsIHR5cGU9M0QnZXJyb3InICkKLQotICAg
ICAgICBoaXN0b3J5ID0zRCBzZWxmLmdldF9vYmplY3QoIHRyYW5zLCBpZCwgJ0hpc3RvcnknLAot
ICAgICAgICAgICAgY2hlY2tfb3duZXJzaGlwPTNEY2hlY2tfb3duZXJzaGlwLCBjaGVja19hY2Nl
c3NpYmxlPTNEY2hlY2tfYWM9CmNlc3NpYmxlLCBkZWxldGVkPTNEZGVsZXRlZCApCi0gICAgICAg
IGhpc3RvcnkgPTNEIHNlbGYuc2VjdXJpdHlfY2hlY2soIHRyYW5zLCBoaXN0b3J5LCBjaGVja19v
d25lcnNoaXAsID0KY2hlY2tfYWNjZXNzaWJsZSApCi0gICAgICAgIHJldHVybiBoaXN0b3J5Ci0j
bGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvYW5ub3RhdGlvbnMucHk6NTU6ICAgICAgICBo
aXN0ID0zRCBzZWxmLmdldD0KX2hpc3RvcnkoIHRyYW5zLCBpZHN0ciApCi0jbGliL2dhbGF4eS93
ZWJhcHBzL2dhbGF4eS9hcGkvZGF0YXNldF9jb2xsZWN0aW9ucy5weTo0NDogICAgICAgICAgICBo
aXN0bz0KcnkgPTNEIHNlbGYuZ2V0X2hpc3RvcnkoIHRyYW5zLCBoaXN0b3J5X2lkLCBjaGVja19v
d25lcnNoaXA9M0RUcnVlLCBjaGVja19hPQpjY2Vzc2libGU9M0RGYWxzZSApCi0jbGliL2dhbGF4
eS93ZWJhcHBzL2dhbGF4eS9hcGkvd29ya2Zsb3dzLnB5OjE1MjogICAgICAgICAgICBoaXN0b3J5
ID0zRCBzZT0KbGYuZ2V0X2hpc3RvcnkoIHRyYW5zLCBmcm9tX2hpc3RvcnlfaWQsIGNoZWNrX293
bmVyc2hpcD0zREZhbHNlLCBjaGVja19hY2NlPQpzc2libGU9M0RUcnVlICkKLSNsaWIvZ2FsYXh5
L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL2RhdGFzZXQucHk6OTk2OiAgICAgICAgICAgIGhp
c3RvcnkgPQo9M0Qgc2VsZi5nZXRfaGlzdG9yeSh0cmFucywgc291cmNlX2hpc3RvcnkpCi0jIGFu
ZCBhbGxsIG92ZXIgaGlzdG9yeSBjb250cm9sbGVyCi0KLSAgICBkZWYgZ2V0X2hpc3RvcnlfZGF0
YXNldHMoIHNlbGYsIHRyYW5zLCBoaXN0b3J5LCBzaG93X2RlbGV0ZWQ9M0RGYWxzZSwgPQpzaG93
X2hpZGRlbj0zREZhbHNlLCBzaG93X3B1cmdlZD0zREZhbHNlICk6Ci0gICAgICAgICIiIiBSZXR1
cm5zIGhpc3RvcnkncyBkYXRhc2V0cy4gIiIiCi0gICAgICAgIHF1ZXJ5ID0zRCB0cmFucy5zYV9z
ZXNzaW9uLnF1ZXJ5KCB0cmFucy5tb2RlbC5IaXN0b3J5RGF0YXNldEFzc29jaT0KYXRpb24gKSBc
Ci0gICAgICAgICAgICAuZmlsdGVyKCB0cmFucy5tb2RlbC5IaXN0b3J5RGF0YXNldEFzc29jaWF0
aW9uLmhpc3RvcnkgPTNEPTNEID0KaGlzdG9yeSApIFwKLSAgICAgICAgICAgIC5vcHRpb25zKCBl
YWdlcmxvYWQoICJjaGlsZHJlbiIgKSApIFwKLSAgICAgICAgICAgIC5qb2luKCAiZGF0YXNldCIg
KSBcCi0gICAgICAgICAgICAub3B0aW9ucyggZWFnZXJsb2FkX2FsbCggImRhdGFzZXQuYWN0aW9u
cyIgKSApIFwKLSAgICAgICAgICAgIC5vcmRlcl9ieSggdHJhbnMubW9kZWwuSGlzdG9yeURhdGFz
ZXRBc3NvY2lhdGlvbi5oaWQgKQotICAgICAgICBpZiBub3Qgc2hvd19kZWxldGVkOgotICAgICAg
ICAgICAgcXVlcnkgPTNEIHF1ZXJ5LmZpbHRlciggdHJhbnMubW9kZWwuSGlzdG9yeURhdGFzZXRB
c3NvY2lhdGlvbi49CmRlbGV0ZWQgPTNEPTNEIEZhbHNlICkKLSAgICAgICAgaWYgbm90IHNob3df
cHVyZ2VkOgotICAgICAgICAgICAgcXVlcnkgPTNEIHF1ZXJ5LmZpbHRlciggdHJhbnMubW9kZWwu
RGF0YXNldC5wdXJnZWQgPTNEPTNEIEZhbHM9CmUgKQotICAgICAgICByZXR1cm4gcXVlcnkuYWxs
KCkKLSNsaWIvZ2FsYXh5L3Rvb2xzL2ltcF9leHAvX19pbml0X18ucHk6NDE3OiAgICAgICAgZGF0
YXNldHMgPTNEIHNlbGYuZ2V0X2hpPQpzdG9yeV9kYXRhc2V0cyggdHJhbnMsIGhpc3RvcnkgKQot
I2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvaGlzdG9yeS5weToxMjgwOiAg
ICAgICAgZGF0YXNldHMgPQo9M0Qgc2VsZi5nZXRfaGlzdG9yeV9kYXRhc2V0cyggdHJhbnMsIGhp
c3RvcnkgKQotI2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvcGFnZS5weTo3
NDI6ICAgICAgICBkYXRhc2V0cyA9M0Qgc2U9CmxmLmdldF9oaXN0b3J5X2RhdGFzZXRzKCB0cmFu
cywgaGlzdG9yeSApCi0KIGNsYXNzIEV4cG9ydHNIaXN0b3J5TWl4aW46Cj0yMAogICAgIGRlZiBz
ZXJ2ZV9yZWFkeV9oaXN0b3J5X2V4cG9ydCggc2VsZiwgdHJhbnMsIGplaGEgKToKQEAgLTI4OSw3
ICsyNTAsNiBAQAo9MjAKICAgICBkZWYgcXVldWVfaGlzdG9yeV9leHBvcnQoIHNlbGYsIHRyYW5z
LCBoaXN0b3J5LCBnemlwPTNEVHJ1ZSwgaW5jbHVkZV9oPQppZGRlbj0zREZhbHNlLCBpbmNsdWRl
X2RlbGV0ZWQ9M0RGYWxzZSApOgogICAgICAgICAjIENvbnZlcnQgb3B0aW9ucyB0byBib29sZWFu
cy4KLSAgICAgICAgIwogICAgICAgICBpZiBpc2luc3RhbmNlKCBnemlwLCBiYXNlc3RyaW5nICk6
CiAgICAgICAgICAgICBnemlwID0zRCAoIGd6aXAgaW4gWyAnVHJ1ZScsICd0cnVlJywgJ1QnLCAn
dCcgXSApCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoIGluY2x1ZGVfaGlkZGVuLCBiYXNlc3RyaW5n
ICk6CkBAIC0zNjEsNjkgKzMyMSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICArICJiZWZvcmUgYXR0ZW1wdGluZyB0bz0KIHZpZXcgaXQuIiAp
CiAgICAgICAgIHJldHVybiBkYXRhCj0yMAotICAgIGRlZiBnZXRfaGlzdG9yeV9kYXRhc2V0X2Fz
c29jaWF0aW9uKCBzZWxmLCB0cmFucywgaGlzdG9yeSwgZGF0YXNldF9pZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfb3duZXJzaGlwPTNEVHJ1ZSwgY2hl
Y2tfYWNjPQplc3NpYmxlPTNERmFsc2UsIGNoZWNrX3N0YXRlPTNERmFsc2UgKToKLSAgICAgICAg
IiIiCi0gICAgICAgIEdldCBhIEhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb24gZnJvbSB0aGUgZGF0
YWJhc2UgYnkgaWQsIHZlcmlmeWluZz0KIG93bmVyc2hpcC4KLSAgICAgICAgIiIiCi0gICAgICAg
ICNUT0RPOiBkdXBsaWNhdGUgb2YgYWJvdmU/IGFsaWFzIHRvIGFib3ZlIChvciB2aXMtdmVyc2Ep
Ci0gICAgICAgIHNlbGYuc2VjdXJpdHlfY2hlY2soIHRyYW5zLCBoaXN0b3J5LCBjaGVja19vd25l
cnNoaXA9M0RjaGVja19vd25lcj0Kc2hpcCwgY2hlY2tfYWNjZXNzaWJsZT0zRGNoZWNrX2FjY2Vz
c2libGUgKQotICAgICAgICBoZGEgPTNEIHNlbGYuZ2V0X29iamVjdCggdHJhbnMsIGRhdGFzZXRf
aWQsICdIaXN0b3J5RGF0YXNldEFzc29jaWE9CnRpb24nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNoZWNrX293bmVyc2hpcD0zREZhbHNlLCBjaGVja19hY2Nlc3NpYmxlPQo9M0RG
YWxzZSApCi0KLSAgICAgICAgaWYgY2hlY2tfYWNjZXNzaWJsZToKLSAgICAgICAgICAgIGlmKCBu
b3QgdHJhbnMudXNlcl9pc19hZG1pbigpCi0gICAgICAgICAgICBhbmQgbm90IHRyYW5zLmFwcC5z
ZWN1cml0eV9hZ2VudC5jYW5fYWNjZXNzX2RhdGFzZXQoIHRyYW5zLmdldD0KX2N1cnJlbnRfdXNl
cl9yb2xlcygpLCBoZGEuZGF0YXNldCApICk6Ci0gICAgICAgICAgICAgICAgZXJyb3IoICJZb3Ug
YXJlIG5vdCBhbGxvd2VkIHRvIGFjY2VzcyB0aGlzIGRhdGFzZXQiICkKLQotICAgICAgICAgICAg
aWYgY2hlY2tfc3RhdGUgYW5kIGhkYS5zdGF0ZSA9M0Q9M0QgdHJhbnMubW9kZWwuRGF0YXNldC5z
dGF0ZXM9Ci5VUExPQUQ6Ci0gICAgICAgICAgICAgICAgZXJyb3IoICJQbGVhc2Ugd2FpdCB1bnRp
bCB0aGlzIGRhdGFzZXQgZmluaXNoZXMgdXBsb2FkaW5nID0KYmVmb3JlIGF0dGVtcHRpbmcgdG8g
dmlldyBpdC4iICkKLSAgICAgICAgcmV0dXJuIGhkYQotCi0gICAgZGVmIGdldF9oaXN0b3J5X2Rh
dGFzZXRfYXNzb2NpYXRpb25fZnJvbV9pZHMoIHNlbGYsIHRyYW5zLCBpZCwgaGlzdG9yeT0KX2lk
ICk6Ci0gICAgICAgICMgSnVzdCB0byBlY2hvIG90aGVyIFRPRE9zLCB0aGVyZSBzZWVtcyB0byBi
ZSBzb21lIG92ZXJsYXAgaGVyZSwgcz0KdGlsbAotICAgICAgICAjIHRoaXMgYmxvY2sgYXBwZWFy
cyBtdWx0aXBsZSBwbGFjZXMgKGRhdGFzZXQgc2hvdywgaGlzdG9yeV9jb250ZW49CnRzCi0gICAg
ICAgICMgc2hvdywgdXBjb21pbmcgaGlzdG9yeSBqb2Igc2hvdykgc28gSSBhbSBjb25zb2xvZGF0
aW5nIGl0IGhlcmUuCi0gICAgICAgICMgU29tZW9uZSBzbWFydGVyIHRoYW4gbWUgc2hvdWxkIGRl
dGVybWluZSBpZiB0aGVyZSBpcyBzb21lIHJlZHVuZD0KYW5jeSBoZXJlLgotCi0gICAgICAgICMg
Zm9yIGFub24gdXNlcnM6Ci0gICAgICAgICNUT0RPOiBjaGVjayBsb2dpbl9yZXF1aXJlZD8KLSAg
ICAgICAgI1RPRE86IHRoaXMgaXNuJ3QgYWN0dWFsbHkgbW9zdF9yZWNlbnRseV91c2VkIChhcyBk
ZWZpbmVkIGluIGhpc3RvPQpyaWVzKQotICAgICAgICBpZiggKCB0cmFucy51c2VyID0zRD0zRCBO
b25lICkKLSAgICAgICAgYW5kICggaGlzdG9yeV9pZCA9M0Q9M0QgdHJhbnMuc2VjdXJpdHkuZW5j
b2RlX2lkKCB0cmFucy5oaXN0b3J5LmlkPQogKSApICk6Ci0gICAgICAgICAgICBoaXN0b3J5ID0z
RCB0cmFucy5oaXN0b3J5Ci0gICAgICAgICAgICAjVE9ETzogZGF0YXNldC9oZGEgYnkgaWQgKGZy
b20gaGlzdG9yeSkgT1IgY2hlY2tfb3duZXJzaGlwIGZvcj0KIGFub24gdXNlcgotICAgICAgICAg
ICAgaGRhID0zRCBzZWxmLmdldF9oaXN0b3J5X2RhdGFzZXRfYXNzb2NpYXRpb24oIHRyYW5zLCBo
aXN0b3J5LCA9CmlkLAotICAgICAgICAgICAgICAgIGNoZWNrX293bmVyc2hpcD0zREZhbHNlLCBj
aGVja19hY2Nlc3NpYmxlPTNEVHJ1ZSApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjVE9E
TzogZG8gd2UgcmVhbGx5IG5lZWQgdGhlIGhpc3Rvcnk/Ci0gICAgICAgICAgICBoaXN0b3J5ID0z
RCBzZWxmLmdldF9oaXN0b3J5KCB0cmFucywgaGlzdG9yeV9pZCwKLSAgICAgICAgICAgICAgICBj
aGVja19vd25lcnNoaXA9M0RGYWxzZSwgY2hlY2tfYWNjZXNzaWJsZT0zRFRydWUsIGRlbGV0ZWQ9
Cj0zREZhbHNlICkKLSAgICAgICAgICAgIGhkYSA9M0Qgc2VsZi5nZXRfaGlzdG9yeV9kYXRhc2V0
X2Fzc29jaWF0aW9uKCB0cmFucywgaGlzdG9yeSwgPQppZCwKLSAgICAgICAgICAgICAgICBjaGVj
a19vd25lcnNoaXA9M0RGYWxzZSwgY2hlY2tfYWNjZXNzaWJsZT0zRFRydWUgKQotICAgICAgICBy
ZXR1cm4gaGRhCi0KLSAgICBkZWYgZ2V0X2hkYV9saXN0KCBzZWxmLCB0cmFucywgaGRhX2lkcywg
Y2hlY2tfb3duZXJzaGlwPTNEVHJ1ZSwgY2hlY2tfPQphY2Nlc3NpYmxlPTNERmFsc2UsIGNoZWNr
X3N0YXRlPTNEVHJ1ZSApOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJucyBvbmUgb3IgbW9y
ZSBkYXRhc2V0cyBpbiBhIGxpc3QuCi0KLSAgICAgICAgSWYgYSBkYXRhc2V0IGlzIG5vdCBmb3Vu
ZCBvciBpcyBpbmFjY2Vzc2libGUgdG8gdHJhbnMudXNlciwKLSAgICAgICAgYWRkIE5vbmUgaW4g
aXRzIHBsYWNlIGluIHRoZSBsaXN0LgotICAgICAgICAiIiIKLSAgICAgICAgIyBwcmVjb25kdGlv
bjogZGF0YXNldF9pZHMgaXMgYSBsaXN0IG9mIGVuY29kZWQgaWQgc3RyaW5ncwotICAgICAgICBo
ZGFzID0zRCBbXQotICAgICAgICBmb3IgaWQgaW4gaGRhX2lkczoKLSAgICAgICAgICAgIGhkYSA9
M0QgTm9uZQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGhkYSA9M0Qgc2VsZi5n
ZXRfZGF0YXNldCggdHJhbnMsIGlkLAotICAgICAgICAgICAgICAgICAgICBjaGVja19vd25lcnNo
aXA9M0RjaGVja19vd25lcnNoaXAsCi0gICAgICAgICAgICAgICAgICAgIGNoZWNrX2FjY2Vzc2li
bGU9M0RjaGVja19hY2Nlc3NpYmxlLAotICAgICAgICAgICAgICAgICAgICBjaGVja19zdGF0ZT0z
RGNoZWNrX3N0YXRlICkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAg
ICAgICAgcGFzcwotICAgICAgICAgICAgaGRhcy5hcHBlbmQoIGhkYSApCi0gICAgICAgIHJldHVy
biBoZGFzCi0KICAgICBkZWYgZ2V0X2RhdGEoIHNlbGYsIGRhdGFzZXQsIHByZXZpZXc9M0RUcnVl
ICk6CiAgICAgICAgICIiIgogICAgICAgICBHZXRzIGEgZGF0YXNldCdzIGRhdGEuCkBAIC00NDQs
NiArMzQxLDEwIEBACiAgICAgICAgICAgICAgICAgIyBGb3Igbm93LCBjYW5ub3QgZ2V0IGRhdGEg
ZnJvbSBub24tdGV4dCBkYXRhc2V0cy4KICAgICAgICAgICAgICAgICBkYXRhc2V0X2RhdGEgPTNE
IE5vbmUKICAgICAgICAgcmV0dXJuIHRydW5jYXRlZCwgZGF0YXNldF9kYXRhCisjbGliL2dhbGF4
eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9kYXRhc2V0LnB5OjU2NjogICAgICAgICAgICB0
cnVuY2F0ZT0KZCwgZGF0YXNldF9kYXRhID0zRCBzZWxmLmdldF9kYXRhKCBkYXRhc2V0LCBwcmV2
aWV3ICkKKyNsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL2RhdGFzZXQucHk6
NjA0OiAgICAgICAgdHJ1bmNhdGVkLCBkPQphdGFzZXRfZGF0YSA9M0Qgc2VsZi5nZXRfZGF0YSgg
ZGF0YXNldCwgcHJldmlldz0zRFRydWUgKQorI2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29u
dHJvbGxlcnMvcGFnZS5weTo3ODc6ICAgICAgICAgICAgICAgIGRhdGEgPQo9M0Qgc2VsZi5nZXRf
ZGF0YSggZGF0YXNldCApCisjbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy92
aXN1YWxpemF0aW9uLnB5OjEwMTI6ICAgICAgICBkYXRhID0KPTNEIHBkLmdldF9kYXRhKCB0cmVl
X2luZGV4PTNEdHJlZV9pbmRleCApCj0yMAogICAgIGRlZiBjaGVja19kYXRhc2V0X3N0YXRlKCBz
ZWxmLCB0cmFucywgZGF0YXNldCApOgogICAgICAgICAiIiIKQEAgLTQ1Niw2OCArMzU3LDExIEBA
CiAgICAgICAgIGlmIGRhdGFzZXQuc3RhdGUgIT0zRCB0cmFucy5hcHAubW9kZWwuSm9iLnN0YXRl
cy5PSzoKICAgICAgICAgICAgIHJldHVybiBkYXRhc2V0LmNvbnZlcnNpb25fbWVzc2FnZXMuUEVO
RElORwogICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIGdldF9kaXNwbGF5X2FwcHMoIHNl
bGYsIHRyYW5zLCBoZGEgKToKLSAgICAgICAgZGlzcGxheV9hcHBzID0zRCBbXQotICAgICAgICBm
b3IgZGlzcGxheV9hcHAgaW4gaGRhLmdldF9kaXNwbGF5X2FwcGxpY2F0aW9ucyggdHJhbnMgKS5p
dGVydmFsdWU9CnMoKToKLQotICAgICAgICAgICAgYXBwX2xpbmtzID0zRCBbXQotICAgICAgICAg
ICAgZm9yIGxpbmtfYXBwIGluIGRpc3BsYXlfYXBwLmxpbmtzLml0ZXJ2YWx1ZXMoKToKLSAgICAg
ICAgICAgICAgICBhcHBfbGlua3MuYXBwZW5kKHsKLSAgICAgICAgICAgICAgICAgICAgJ3Rhcmdl
dCc6IGxpbmtfYXBwLnVybC5nZXQoICd0YXJnZXRfZnJhbWUnLCAnX2JsYW5rJyApLAotICAgICAg
ICAgICAgICAgICAgICAnaHJlZicgIDogbGlua19hcHAuZ2V0X2Rpc3BsYXlfdXJsKCBoZGEsIHRy
YW5zICksCi0gICAgICAgICAgICAgICAgICAgICd0ZXh0JyAgOiBnZXR0ZXh0KCBsaW5rX2FwcC5u
YW1lICkKLSAgICAgICAgICAgICAgICB9KQotICAgICAgICAgICAgaWYgYXBwX2xpbmtzOgotICAg
ICAgICAgICAgICAgIGRpc3BsYXlfYXBwcy5hcHBlbmQoIGRpY3QoIGxhYmVsPTNEZGlzcGxheV9h
cHAubmFtZSwgbGlua3M9Cj0zRGFwcF9saW5rcyApICkKLQotICAgICAgICByZXR1cm4gZGlzcGxh
eV9hcHBzCi0KLSAgICBkZWYgZ2V0X29sZF9kaXNwbGF5X2FwcGxpY2F0aW9ucyggc2VsZiwgdHJh
bnMsIGhkYSApOgotICAgICAgICBkaXNwbGF5X2FwcHMgPTNEIFtdCi0gICAgICAgIGlmIG5vdCB0
cmFucy5hcHAuY29uZmlnLmVuYWJsZV9vbGRfZGlzcGxheV9hcHBsaWNhdGlvbnM6Ci0gICAgICAg
ICAgICByZXR1cm4gZGlzcGxheV9hcHBzCi0KLSAgICAgICAgZm9yIGRpc3BsYXlfYXBwIGluIGhk
YS5kYXRhdHlwZS5nZXRfZGlzcGxheV90eXBlcygpOgotICAgICAgICAgICAgdGFyZ2V0X2ZyYW1l
LCBkaXNwbGF5X2xpbmtzID0zRCBoZGEuZGF0YXR5cGUuZ2V0X2Rpc3BsYXlfbGlua3M9CiggaGRh
LAotICAgICAgICAgICAgICAgIGRpc3BsYXlfYXBwLCB0cmFucy5hcHAsIHRyYW5zLnJlcXVlc3Qu
YmFzZSApCi0KLSAgICAgICAgICAgIGlmIGxlbiggZGlzcGxheV9saW5rcyApID4gMDoKLSAgICAg
ICAgICAgICAgICBkaXNwbGF5X2xhYmVsID0zRCBoZGEuZGF0YXR5cGUuZ2V0X2Rpc3BsYXlfbGFi
ZWwoIGRpc3BsYXlfPQphcHAgKQotCi0gICAgICAgICAgICAgICAgYXBwX2xpbmtzID0zRCBbXQot
ICAgICAgICAgICAgICAgIGZvciBkaXNwbGF5X25hbWUsIGRpc3BsYXlfbGluayBpbiBkaXNwbGF5
X2xpbmtzOgotICAgICAgICAgICAgICAgICAgICBhcHBfbGlua3MuYXBwZW5kKHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICd0YXJnZXQnOiB0YXJnZXRfZnJhbWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAnaHJlZicgIDogZGlzcGxheV9saW5rLAotICAgICAgICAgICAgICAgICAgICAgICAg
J3RleHQnICA6IGdldHRleHQoIGRpc3BsYXlfbmFtZSApCi0gICAgICAgICAgICAgICAgICAgIH0p
Ci0gICAgICAgICAgICAgICAgaWYgYXBwX2xpbmtzOgotICAgICAgICAgICAgICAgICAgICBkaXNw
bGF5X2FwcHMuYXBwZW5kKCBkaWN0KCBsYWJlbD0zRGRpc3BsYXlfbGFiZWwsIGxpbms9CnM9M0Rh
cHBfbGlua3MgKSApCi0KLSAgICAgICAgcmV0dXJuIGRpc3BsYXlfYXBwcwotCi0gICAgZGVmIHNl
dF9oZGFfZnJvbV9kaWN0KCBzZWxmLCB0cmFucywgaGRhLCBuZXdfZGF0YSApOgotICAgICAgICAi
IiIKLSAgICAgICAgQ2hhbmdlcyBIREEgZGF0YSB1c2luZyB0aGUgZ2l2ZW4gZGljdGlvbmFyeSBu
ZXdfZGF0YS4KLSAgICAgICAgIiIiCi0gICAgICAgICMgcHJlY29uZGl0aW9uOiBhY2Nlc3Mgb2Yg
dGhlIGhkYSBoYXMgYWxyZWFkeSBiZWVuIGNoZWNrZWQKLQotICAgICAgICAjIHNlbmQgd2hhdCB3
ZSBjYW4gZG93biBpbnRvIHRoZSBtb2RlbAotICAgICAgICBjaGFuZ2VkID0zRCBoZGEuc2V0X2Zy
b21fZGljdCggbmV3X2RhdGEgKQotICAgICAgICAjIHRoZSByZXN0IChvZnRlbiBpbnZvbHZpbmcg
dGhlIHRyYW5zKSAtIGRvIGhlcmUKLSAgICAgICAgaWYgJ2Fubm90YXRpb24nIGluIG5ld19kYXRh
LmtleXMoKSBhbmQgdHJhbnMuZ2V0X3VzZXIoKToKLSAgICAgICAgICAgIGhkYS5hZGRfaXRlbV9h
bm5vdGF0aW9uKCB0cmFucy5zYV9zZXNzaW9uLCB0cmFucy5nZXRfdXNlcigpLCBoPQpkYSwgbmV3
X2RhdGFbICdhbm5vdGF0aW9uJyBdICkKLSAgICAgICAgICAgIGNoYW5nZWRbICdhbm5vdGF0aW9u
JyBdID0zRCBuZXdfZGF0YVsgJ2Fubm90YXRpb24nIF0KLSAgICAgICAgaWYgJ3RhZ3MnIGluIG5l
d19kYXRhLmtleXMoKSBhbmQgdHJhbnMuZ2V0X3VzZXIoKToKLSAgICAgICAgICAgIHNlbGYuc2V0
X3RhZ3NfZnJvbV9saXN0KCB0cmFucywgaGRhLCBuZXdfZGF0YVsgJ3RhZ3MnIF0sIHVzZXI9Cj0z
RHRyYW5zLnVzZXIgKQotICAgICAgICAjIHNoYXJpbmcvcGVybWlzc2lvbnM/Ci0gICAgICAgICMg
cHVyZ2VkCi0KLSAgICAgICAgaWYgY2hhbmdlZC5rZXlzKCk6Ci0gICAgICAgICAgICB0cmFucy5z
YV9zZXNzaW9uLmZsdXNoKCkKLQotICAgICAgICByZXR1cm4gY2hhbmdlZAorI2xpYi9nYWxheHkv
d2ViYXBwcy9nYWxheHkvYXBpL2RhdGFzZXRzLnB5Ojg5OiAgICAgICAgbXNnID0zRCBzZWxmLmNo
ZWNrX2Q9CmF0YXNldF9zdGF0ZSggdHJhbnMsIGRhdGFzZXQgKQorI2xpYi9nYWxheHkvd2ViYXBw
cy9nYWxheHkvYXBpL2RhdGFzZXRzLnB5OjEwMDogICAgICAgIG1zZyA9M0Qgc2VsZi5jaGVja189
CmRhdGFzZXRfc3RhdGUoIHRyYW5zLCBkYXRhc2V0ICkKKyNsaWIvZ2FsYXh5L3dlYmFwcHMvZ2Fs
YXh5L2FwaS9kYXRhc2V0cy5weToxNDk6ICAgICAgICBtc2cgPTNEIHNlbGYuY2hlY2tfPQpkYXRh
c2V0X3N0YXRlKCB0cmFucywgZGF0YXNldCApCisjbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9h
cGkvZGF0YXNldHMucHk6MjQyOiAgICAgICAgbXNnID0zRCBzZWxmLmNoZWNrXz0KZGF0YXNldF9z
dGF0ZSggdHJhbnMsIGRhdGFzZXQgKQorI2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL3Rv
b2xzLnB5OjI4NzogICAgICAgIG1zZyA9M0Qgc2VsZi5jaGVja19kYXQ9CmFzZXRfc3RhdGUoIHRy
YW5zLCBvcmlnaW5hbF9kYXRhc2V0ICkKPTIwCiAgICAgZGVmIGdldF9oZGFfam9iKCBzZWxmLCBo
ZGEgKToKICAgICAgICAgIyBHZXQgZGF0YXNldCdzIGpvYi4KQEAgLTUyNiw2ICszNzAsOSBAQAog
ICAgICAgICAgICAgam9iID0zRCBqb2Jfb3V0cHV0X2Fzc29jLmpvYgogICAgICAgICAgICAgYnJl
YWsKICAgICAgICAgcmV0dXJuIGpvYgorI2xpYi9nYWxheHkvd2ViL2Jhc2UvY29udHJvbGxlci5w
eTo4NDY6ICAgICAgICBqb2IgPTNEIHNlbGYuZ2V0X2hkYV9qb2IoIGg9CmRhICkKKyNsaWIvZ2Fs
YXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS90b29scy5weToyOTY6ICAgICAgICBvcmlnaW5hbF9qb2Ig
PTNEIHNlbGYuPQpnZXRfaGRhX2pvYiggb3JpZ2luYWxfZGF0YXNldCApCisjbGliL2dhbGF4eS93
ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy92aXN1YWxpemF0aW9uLnB5Ojk3NzogICAgICAgICAg
ICBqbz0KYiA9M0Qgc2VsZi5nZXRfaGRhX2pvYiggZGF0YXNldCApCj0yMAogICAgIGRlZiBzdG9w
X2hkYV9jcmVhdGluZ19qb2IoIHNlbGYsIGhkYSApOgogICAgICAgICAiIiIKQEAgLTUzOSw3ICsz
ODYsOCBAQAogICAgICAgICAgICAgICAgIGlmIGpvYi5jaGVja19pZl9vdXRwdXRfZGF0YXNldHNf
ZGVsZXRlZCgpOgogICAgICAgICAgICAgICAgICAgICBqb2IubWFya19kZWxldGVkKCBzZWxmLmFw
cC5jb25maWcudHJhY2tfam9ic19pbl9kYXRhYmE9CnNlICkKICAgICAgICAgICAgICAgICAgICAg
c2VsZi5hcHAuam9iX21hbmFnZXIuam9iX3N0b3BfcXVldWUucHV0KCBqb2IuaWQgKQotCisjbGli
L2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvaGlzdG9yeV9jb250ZW50cy5weTozNjY6ICAgICAg
ICAgICAgICAgIHNlbD0KZi5zdG9wX2hkYV9jcmVhdGluZ19qb2IoIGhkYSApCisjbGliL2dhbGF4
eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9kYXRhc2V0LnB5Ojc3MjogICAgICAgICAgICBz
ZWxmLnN0bz0KcF9oZGFfY3JlYXRpbmdfam9iKCBoZGEgKQo9MjAKIGNsYXNzIFVzZXNMaWJyYXJ5
TWl4aW46Cj0yMAoKZGlmZiAtciA5OGQ0Y2I1ODFmNjIwMTM1OWE3ZGQwODQ1YWIyZDg1YjExZTk4
NWQ3IC1yIDE0M2YwMjJiYWU2OWQ4YWFhMDVmYjkzPQo4YmU5OWQzNjQ2NjY5OWE1NCBsaWIvZ2Fs
YXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9hbm5vdGF0aW9ucy5weQotLS0gYS9saWIvZ2FsYXh5L3dl
YmFwcHMvZ2FsYXh5L2FwaS9hbm5vdGF0aW9ucy5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMv
Z2FsYXh5L2FwaS9hbm5vdGF0aW9ucy5weQpAQCAtNSwxMiArNSwxNCBAQAogZnJvbSBnYWxheHkg
aW1wb3J0IHdlYgogZnJvbSBnYWxheHkubW9kZWwuaXRlbV9hdHRycyBpbXBvcnQgVXNlc0Fubm90
YXRpb25zCiBmcm9tIGdhbGF4eS51dGlsLnNhbml0aXplX2h0bWwgaW1wb3J0IHNhbml0aXplX2h0
bWwKLWZyb20gZ2FsYXh5LndlYi5iYXNlLmNvbnRyb2xsZXIgaW1wb3J0IEJhc2VBUElDb250cm9s
bGVyLCBIVFRQTm90SW1wbGVtZW50PQplZCwgVXNlc0hpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb25N
aXhpbiwgVXNlc0hpc3RvcnlNaXhpbiwgVXNlc1N0b3JlZFdvcmtmbG89CndNaXhpbgorZnJvbSBn
YWxheHkud2ViLmJhc2UuY29udHJvbGxlciBpbXBvcnQgQmFzZUFQSUNvbnRyb2xsZXIsIEhUVFBO
b3RJbXBsZW1lbnQ9CmVkLCBVc2VzSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbk1peGluLCBVc2Vz
U3RvcmVkV29ya2Zsb3dNaXhpbgorCitmcm9tIGdhbGF4eSBpbXBvcnQgbWFuYWdlcnMKPTIwCiBs
b2cgPTNEIGxvZ2dpbmcuZ2V0TG9nZ2VyKCBfX25hbWVfXyApCj0yMAo9MjAKLWNsYXNzIEJhc2VB
bm5vdGF0aW9uc0NvbnRyb2xsZXIoIEJhc2VBUElDb250cm9sbGVyLCBVc2VzSGlzdG9yeU1peGlu
LCBVc2VzPQpIaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uTWl4aW4sIFVzZXNTdG9yZWRXb3JrZmxv
d01peGluLCBVc2VzQW5ub3RhdGlvbnMgKToKK2NsYXNzIEJhc2VBbm5vdGF0aW9uc0NvbnRyb2xs
ZXIoIEJhc2VBUElDb250cm9sbGVyLCBVc2VzSGlzdG9yeURhdGFzZXRBc3NvPQpjaWF0aW9uTWl4
aW4sIFVzZXNTdG9yZWRXb3JrZmxvd01peGluLCBVc2VzQW5ub3RhdGlvbnMgKToKPTIwCiAgICAg
QHdlYi5leHBvc2VfYXBpCiAgICAgZGVmIGluZGV4KCBzZWxmLCB0cmFucywgKiprd2QgKToKQEAg
LTUxLDkgKzUzLDE0IEBACiAgICAgY29udHJvbGxlcl9uYW1lID0zRCAiaGlzdG9yeV9hbm5vdGF0
aW9ucyIKICAgICB0YWdnZWRfaXRlbV9pZCA9M0QgImhpc3RvcnlfaWQiCj0yMAorICAgIGRlZiBf
X2luaXRfXyggc2VsZiwgYXBwICk6CisgICAgICAgIHN1cGVyKCBIaXN0b3J5QW5ub3RhdGlvbnND
b250cm9sbGVyLCBzZWxmICkuX19pbml0X18oIGFwcCApCisgICAgICAgIHNlbGYuaGlzdG9yeV9t
YW5hZ2VyID0zRCBtYW5hZ2Vycy5oaXN0b3JpZXMuSGlzdG9yeU1hbmFnZXIoIGFwcCApCisKICAg
ICBkZWYgX2dldF9pdGVtX2Zyb21faWQoc2VsZiwgdHJhbnMsIGlkc3RyKToKLSAgICAgICAgaGlz
dCA9M0Qgc2VsZi5nZXRfaGlzdG9yeSggdHJhbnMsIGlkc3RyICkKLSAgICAgICAgcmV0dXJuIGhp
c3QKKyAgICAgICAgZGVjb2RlZF9pZHN0ciA9M0QgdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBp
ZHN0ciApCisgICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuaGlzdG9yeV9tYW5hZ2VyLmFjY2Vzc2li
bGVfYnlfaWQoIHRyYW5zLCBkZWNvZGVkXz0KaWRzdHIsIHRyYW5zLnVlciApCisgICAgICAgIHJl
dHVybiBoaXN0b3J5Cj0yMAo9MjAKIGNsYXNzIEhpc3RvcnlDb250ZW50QW5ub3RhdGlvbnNDb250
cm9sbGVyKEJhc2VBbm5vdGF0aW9uc0NvbnRyb2xsZXIpOgoKZGlmZiAtciA5OGQ0Y2I1ODFmNjIw
MTM1OWE3ZGQwODQ1YWIyZDg1YjExZTk4NWQ3IC1yIDE0M2YwMjJiYWU2OWQ4YWFhMDVmYjkzPQo4
YmU5OWQzNjQ2NjY5OWE1NCBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9kYXRhc2V0X2Nv
bGxlY3Rpb25zLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2RhdGFzZXRf
Y29sbGVjdGlvbnMucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvZGF0YXNl
dF9jb2xsZWN0aW9ucy5weQpAQCAtMSw5ICsxLDkgQEAKIGZyb20gZ2FsYXh5LndlYiBpbXBvcnQg
X2Z1dHVyZV9leHBvc2VfYXBpIGFzIGV4cG9zZV9hcGkKPTIwCiBmcm9tIGdhbGF4eS53ZWIuYmFz
ZS5jb250cm9sbGVyIGltcG9ydCBCYXNlQVBJQ29udHJvbGxlcgotZnJvbSBnYWxheHkud2ViLmJh
c2UuY29udHJvbGxlciBpbXBvcnQgVXNlc0hpc3RvcnlNaXhpbgogZnJvbSBnYWxheHkud2ViLmJh
c2UuY29udHJvbGxlciBpbXBvcnQgVXNlc0xpYnJhcnlNaXhpbkl0ZW1zCj0yMAorZnJvbSBnYWxh
eHkgaW1wb3J0IG1hbmFnZXJzCiBmcm9tIGdhbGF4eS5tYW5hZ2Vycy5jb2xsZWN0aW9uc191dGls
IGltcG9ydCBhcGlfcGF5bG9hZF90b19jcmVhdGVfcGFyYW1zLD0KIGRpY3RpZnlfZGF0YXNldF9j
b2xsZWN0aW9uX2luc3RhbmNlCj0yMAogZnJvbSBsb2dnaW5nIGltcG9ydCBnZXRMb2dnZXIKQEAg
LTEyLDEwICsxMiwxMyBAQAo9MjAKIGNsYXNzIERhdGFzZXRDb2xsZWN0aW9uc0NvbnRyb2xsZXIo
CiAgICAgQmFzZUFQSUNvbnRyb2xsZXIsCi0gICAgVXNlc0hpc3RvcnlNaXhpbiwKICAgICBVc2Vz
TGlicmFyeU1peGluSXRlbXMsCiApOgo9MjAKKyAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCAp
OgorICAgICAgICBzdXBlciggRGF0YXNldENvbGxlY3Rpb25zQ29udHJvbGxlciwgc2VsZiApLl9f
aW5pdF9fKCBhcHAgKQorICAgICAgICBzZWxmLmhpc3RvcnlfbWFuYWdlciA9M0QgbWFuYWdlcnMu
aGlzdG9yaWVzLkhpc3RvcnlNYW5hZ2VyKCBhcHAgKQorCiAgICAgQGV4cG9zZV9hcGkKICAgICBk
ZWYgaW5kZXgoIHNlbGYsIHRyYW5zLCAqKmt3ZCApOgogICAgICAgICB0cmFucy5yZXNwb25zZS5z
dGF0dXMgPTNEIDUwMQpAQCAtNDEsNyArNDQsOCBAQAogICAgICAgICBpbnN0YW5jZV90eXBlID0z
RCBwYXlsb2FkLnBvcCggImluc3RhbmNlX3R5cGUiLCAiaGlzdG9yeSIgKQogICAgICAgICBpZiBp
bnN0YW5jZV90eXBlID0zRD0zRCAiaGlzdG9yeSI6CiAgICAgICAgICAgICBoaXN0b3J5X2lkID0z
RCBwYXlsb2FkLmdldCggJ2hpc3RvcnlfaWQnICkKLSAgICAgICAgICAgIGhpc3RvcnkgPTNEIHNl
bGYuZ2V0X2hpc3RvcnkoIHRyYW5zLCBoaXN0b3J5X2lkLCBjaGVja19vd25lcnNoPQppcD0zRFRy
dWUsIGNoZWNrX2FjY2Vzc2libGU9M0RGYWxzZSApCisgICAgICAgICAgICBoaXN0b3J5X2lkID0z
RCB0cmFucy5zZWN1cml0eS5kZWNvZGVfaWQoIGhpc3RvcnlfaWQgKQorICAgICAgICAgICAgaGlz
dG9yeSA9M0Qgc2VsZi5oaXN0b3J5X21hbmFnZXIub3duZWRfYnlfaWQoIHRyYW5zLCBoaXN0b3J5
X2k9CmQsIHRyYW5zLnVzZXIgKQogICAgICAgICAgICAgY3JlYXRlX3BhcmFtc1sgInBhcmVudCIg
XSA9M0QgaGlzdG9yeQogICAgICAgICBlbGlmIGluc3RhbmNlX3R5cGUgPTNEPTNEICJsaWJyYXJ5
IjoKICAgICAgICAgICAgIGZvbGRlcl9pZCA9M0QgcGF5bG9hZC5nZXQoICdmb2xkZXJfaWQnICkK
CmRpZmYgLXIgOThkNGNiNTgxZjYyMDEzNTlhN2RkMDg0NWFiMmQ4NWIxMWU5ODVkNyAtciAxNDNm
MDIyYmFlNjlkOGFhYTA1ZmI5Mz0KOGJlOTlkMzY0NjY2OTlhNTQgbGliL2dhbGF4eS93ZWJhcHBz
L2dhbGF4eS9hcGkvZGF0YXNldHMucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9h
cGkvZGF0YXNldHMucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvZGF0YXNl
dHMucHkKQEAgLTEzLDE1ICsxMywxMyBAQAogZnJvbSBnYWxheHkud2ViLmJhc2UuY29udHJvbGxl
ciBpbXBvcnQgQmFzZUFQSUNvbnRyb2xsZXIKIGZyb20gZ2FsYXh5LndlYi5iYXNlLmNvbnRyb2xs
ZXIgaW1wb3J0IFVzZXNWaXN1YWxpemF0aW9uTWl4aW4KIGZyb20gZ2FsYXh5LndlYi5iYXNlLmNv
bnRyb2xsZXIgaW1wb3J0IFVzZXNIaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uTWl4aW4KLWZyb20g
Z2FsYXh5LndlYi5iYXNlLmNvbnRyb2xsZXIgaW1wb3J0IFVzZXNIaXN0b3J5TWl4aW4KIGZyb20g
Z2FsYXh5IGltcG9ydCBtYW5hZ2Vycwo9MjAKIGltcG9ydCBsb2dnaW5nCiBsb2cgPTNEIGxvZ2dp
bmcuZ2V0TG9nZ2VyKCBfX25hbWVfXyApCj0yMAo9MjAKLWNsYXNzIERhdGFzZXRzQ29udHJvbGxl
ciggQmFzZUFQSUNvbnRyb2xsZXIsIFVzZXNWaXN1YWxpemF0aW9uTWl4aW4sIFVzZXNIPQppc3Rv
cnlNaXhpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlc0hpc3RvcnlEYXRhc2V0QXNz
b2NpYXRpb25NaXhpbiApOgorY2xhc3MgRGF0YXNldHNDb250cm9sbGVyKCBCYXNlQVBJQ29udHJv
bGxlciwgVXNlc1Zpc3VhbGl6YXRpb25NaXhpbiwgVXNlc0g9CmlzdG9yeURhdGFzZXRBc3NvY2lh
dGlvbk1peGluICk6Cj0yMAogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CiAgICAgICAg
IHN1cGVyKCBEYXRhc2V0c0NvbnRyb2xsZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwICkKQEAgLTI4
MSwyNCArMjc5LDI1IEBACiAgICAgICAgIHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVyZSB3aXRob3V0
IHdhcm5pbmcuIEdlbmVyYWxseSwgZGF0YSBzaG91bGQgYj0KZSBwcm9jZXNzZWQgYnkgaXRzCiAg
ICAgICAgIGRhdGF0eXBlIHByaW9yIHRvIGRpc3BsYXkgKHRoZSBkZWZ1bHQgaWYgcmF3IGlzIHVu
c3BlY2lmaWVkIG9yIGV4cD0KbGljaXRseSBmYWxzZS4KICAgICAgICAgIiIiCisgICAgICAgIGRl
Y29kZWRfY29udGVudF9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBoaXN0b3J5X2Nv
bnRlbnRfaT0KZCApCiAgICAgICAgIHJhdyA9M0QgdXRpbC5zdHJpbmdfYXNfYm9vbF9vcl9ub25l
KCByYXcgKQorCiAgICAgICAgIHJ2YWwgPTNEICcnCiAgICAgICAgIHRyeToKLSAgICAgICAgICAg
IGhkYSA9M0Qgc2VsZi5nZXRfaGlzdG9yeV9kYXRhc2V0X2Fzc29jaWF0aW9uX2Zyb21faWRzKCB0
cmFucywgPQpoaXN0b3J5X2NvbnRlbnRfaWQsIGhpc3RvcnlfaWQgKQorICAgICAgICAgICAgaGRh
ID0zRCBzZWxmLm1ncnMuaGRhcy5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgZGVjb2RlZF9jb250
ZW49CnRfaWQsIHRyYW5zLnVzZXIgKQo9MjAKLSAgICAgICAgICAgIGRpc3BsYXlfa3dkID0zRCBr
d2QuY29weSgpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZGVsIGRpc3BsYXlf
a3dkWyJrZXkiXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAg
IHBhc3MKICAgICAgICAgICAgIGlmIHJhdzoKICAgICAgICAgICAgICAgICBpZiBmaWxlbmFtZSBh
bmQgZmlsZW5hbWUgIT0zRCAnaW5kZXgnOgotICAgICAgICAgICAgICAgICAgICBmaWxlX3BhdGgg
PTNEIHRyYW5zLmFwcC5vYmplY3Rfc3RvcmUuZ2V0X2ZpbGVuYW1lKGhkYS49CmRhdGFzZXQsIGV4
dHJhX2Rpcj0zRCdkYXRhc2V0XyVzX2ZpbGVzJyAlIGhkYS5kYXRhc2V0LmlkLCBhbHRfbmFtZT0z
RGZpbGVuYT0KbWUpCisgICAgICAgICAgICAgICAgICAgIGZpbGVfcGF0aCA9M0QgdHJhbnMuYXBw
Lm9iamVjdF9zdG9yZS5nZXRfZmlsZW5hbWUoIGhkYT0KLmRhdGFzZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICBleHRyYV9kaXI9M0QoICdkYXRhc2V0XyVzX2ZpbGVzJyAlIGhkYS5kYXRhc2V0
LmlkID0KKSwgYWx0X25hbWU9M0RmaWxlbmFtZSkKICAgICAgICAgICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgICAgICAgICBmaWxlX3BhdGggPTNEIGhkYS5maWxlX25hbWUKICAgICAgICAgICAg
ICAgICBydmFsID0zRCBvcGVuKCBmaWxlX3BhdGggKQo9MjAKICAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgZGlzcGxheV9rd2QgPTNEIGt3ZC5jb3B5KCkKKyAgICAgICAgICAgICAg
ICBpZiAna2V5JyBpbiBkaXNwbGF5X2t3ZDoKKyAgICAgICAgICAgICAgICAgICAgZGVsIGRpc3Bs
YXlfa3dkWyJrZXkiXQogICAgICAgICAgICAgICAgIHJ2YWwgPTNEIGhkYS5kYXRhdHlwZS5kaXNw
bGF5X2RhdGEoIHRyYW5zLCBoZGEsIHByZXZpZXcsIGY9CmlsZW5hbWUsIHRvX2V4dCwgY2h1bmss
ICoqZGlzcGxheV9rd2QgKQo9MjAKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZXhjZXB0aW9u
OgoKZGlmZiAtciA5OGQ0Y2I1ODFmNjIwMTM1OWE3ZGQwODQ1YWIyZDg1YjExZTk4NWQ3IC1yIDE0
M2YwMjJiYWU2OWQ4YWFhMDVmYjkzPQo4YmU5OWQzNjQ2NjY5OWE1NCBsaWIvZ2FsYXh5L3dlYmFw
cHMvZ2FsYXh5L2FwaS9leHRlbmRlZF9tZXRhZGF0YS5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFw
cHMvZ2FsYXh5L2FwaS9leHRlbmRlZF9tZXRhZGF0YS5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFw
cHMvZ2FsYXh5L2FwaS9leHRlbmRlZF9tZXRhZGF0YS5weQpAQCAtMywxMSArMywxMSBAQAogIiIi
CiBpbXBvcnQgbG9nZ2luZwogZnJvbSBnYWxheHkgaW1wb3J0IHdlYgotZnJvbSBnYWxheHkud2Vi
LmJhc2UuY29udHJvbGxlciBpbXBvcnQgIEJhc2VBUElDb250cm9sbGVyLCBVc2VzSGlzdG9yeU1p
eGk9Cm4sIFVzZXNMaWJyYXJ5TWl4aW5JdGVtcywgVXNlc0hpc3RvcnlEYXRhc2V0QXNzb2NpYXRp
b25NaXhpbiwgVXNlc1N0b3JlZFdvcj0Ka2Zsb3dNaXhpbiwgVXNlc0V4dGVuZGVkTWV0YWRhdGFN
aXhpbiwgSFRUUE5vdEltcGxlbWVudGVkCitmcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9sbGVy
IGltcG9ydCAgQmFzZUFQSUNvbnRyb2xsZXIsIFVzZXNMaWJyYXJ5TWl4aT0Kbkl0ZW1zLCBVc2Vz
SGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbk1peGluLCBVc2VzU3RvcmVkV29ya2Zsb3dNaXhpbiwg
VXNlc0V4PQp0ZW5kZWRNZXRhZGF0YU1peGluLCBIVFRQTm90SW1wbGVtZW50ZWQKPTIwCiBsb2cg
PTNEIGxvZ2dpbmcuZ2V0TG9nZ2VyKCBfX25hbWVfXyApCj0yMAotY2xhc3MgQmFzZUV4dGVuZGVk
TWV0YWRhdGFDb250cm9sbGVyKCBCYXNlQVBJQ29udHJvbGxlciwgVXNlc0V4dGVuZGVkTWV0YWQ9
CmF0YU1peGluLCBVc2VzSGlzdG9yeU1peGluLCBVc2VzTGlicmFyeU1peGluSXRlbXMsIFVzZXNI
aXN0b3J5RGF0YXNldEFzc29jaT0KYXRpb25NaXhpbiwgVXNlc1N0b3JlZFdvcmtmbG93TWl4aW4g
KToKK2NsYXNzIEJhc2VFeHRlbmRlZE1ldGFkYXRhQ29udHJvbGxlciggQmFzZUFQSUNvbnRyb2xs
ZXIsIFVzZXNFeHRlbmRlZE1ldGFkPQphdGFNaXhpbiwgVXNlc0xpYnJhcnlNaXhpbkl0ZW1zLCBV
c2VzSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbk1peGluLCBVc2VzU3Q9Cm9yZWRXb3JrZmxvd01p
eGluICk6Cj0yMAogICAgIEB3ZWIuZXhwb3NlX2FwaQogICAgIGRlZiBpbmRleCggc2VsZiwgdHJh
bnMsICoqa3dkICk6CgpkaWZmIC1yIDk4ZDRjYjU4MWY2MjAxMzU5YTdkZDA4NDVhYjJkODViMTFl
OTg1ZDcgLXIgMTQzZjAyMmJhZTY5ZDhhYWEwNWZiOTM9CjhiZTk5ZDM2NDY2Njk5YTU0IGxpYi9n
YWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2hpc3RvcnlfY29udGVudHMucHkKLS0tIGEvbGliL2dh
bGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvaGlzdG9yeV9jb250ZW50cy5weQorKysgYi9saWIvZ2Fs
YXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9oaXN0b3J5X2NvbnRlbnRzLnB5CkBAIC0xMSw3ICsxMSw2
IEBACj0yMAogZnJvbSBnYWxheHkud2ViLmJhc2UuY29udHJvbGxlciBpbXBvcnQgQmFzZUFQSUNv
bnRyb2xsZXIKIGZyb20gZ2FsYXh5LndlYi5iYXNlLmNvbnRyb2xsZXIgaW1wb3J0IFVzZXNIaXN0
b3J5RGF0YXNldEFzc29jaWF0aW9uTWl4aW4KLWZyb20gZ2FsYXh5LndlYi5iYXNlLmNvbnRyb2xs
ZXIgaW1wb3J0IFVzZXNIaXN0b3J5TWl4aW4KIGZyb20gZ2FsYXh5LndlYi5iYXNlLmNvbnRyb2xs
ZXIgaW1wb3J0IFVzZXNMaWJyYXJ5TWl4aW4KIGZyb20gZ2FsYXh5LndlYi5iYXNlLmNvbnRyb2xs
ZXIgaW1wb3J0IFVzZXNMaWJyYXJ5TWl4aW5JdGVtcwogZnJvbSBnYWxheHkud2ViLmJhc2UuY29u
dHJvbGxlciBpbXBvcnQgVXNlc1RhZ3NNaXhpbgpAQCAtMjcsNyArMjYsNyBAQAogbG9nID0zRCBs
b2dnaW5nLmdldExvZ2dlciggX19uYW1lX18gKQo9MjAKPTIwCi1jbGFzcyBIaXN0b3J5Q29udGVu
dHNDb250cm9sbGVyKCBCYXNlQVBJQ29udHJvbGxlciwgVXNlc0hpc3RvcnlEYXRhc2V0QXNzbz0K
Y2lhdGlvbk1peGluLCBVc2VzSGlzdG9yeU1peGluLAorY2xhc3MgSGlzdG9yeUNvbnRlbnRzQ29u
dHJvbGxlciggQmFzZUFQSUNvbnRyb2xsZXIsIFVzZXNIaXN0b3J5RGF0YXNldEFzc289CmNpYXRp
b25NaXhpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXNMaWJyYXJ5TWl4
aW4sIFVzZXNMaWJyYXJ5TWl4aW5JdGVtcywgPQpVc2VzVGFnc01peGluICk6Cj0yMAogICAgIGRl
ZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CkBAIC0zNTgsMTEgKzM1Nyw4IEBACiAgICAgICAgICAg
ICAgICAgaGRhID0zRCBzZWxmLm1ncnMuaGRhcy5lcnJvcl9pZl91cGxvYWRpbmcoIHRyYW5zLCBo
ZGEgKQo9MjAKICAgICAgICAgIyBtYWtlIHRoZSBhY3R1YWwgY2hhbmdlcwotICAgICAgICAjVE9E
TzogdG8gZGVzZXJpYWxpemVyCiAgICAgICAgICNUT0RPOiBpcyB0aGlzIGlmIHN0aWxsIG5lZWRl
ZD8KICAgICAgICAgaWYgaGRhIGFuZCBpc2luc3RhbmNlKCBoZGEsIHRyYW5zLm1vZGVsLkhpc3Rv
cnlEYXRhc2V0QXNzb2NpYXRpb24gPQopOgotICAgICAgICAgICAgI3BheWxvYWQgPTNEIHNlbGYu
X3ZhbGlkYXRlX2FuZF9wYXJzZV91cGRhdGVfcGF5bG9hZCggcGF5bG9hZCApCi0gICAgICAgICAg
ICAjY2hhbmdlZCA9M0Qgc2VsZi5zZXRfaGRhX2Zyb21fZGljdCggdHJhbnMsIGhkYSwgcGF5bG9h
ZCApCiAgICAgICAgICAgICBzZWxmLmhkYV9kZXNlcmlhbGl6ZXIuZGVzZXJpYWxpemUoIHRyYW5z
LCBoZGEsIHBheWxvYWQgKQogICAgICAgICAgICAgI1RPRE86IHRoaXMgc2hvdWxkIGJlIGFuIGVm
ZmVjdCBvZiBkZWxldGluZyB0aGUgaGRhCiAgICAgICAgICAgICBpZiBwYXlsb2FkLmdldCggJ2Rl
bGV0ZWQnLCBGYWxzZSApOgoKZGlmZiAtciA5OGQ0Y2I1ODFmNjIwMTM1OWE3ZGQwODQ1YWIyZDg1
YjExZTk4NWQ3IC1yIDE0M2YwMjJiYWU2OWQ4YWFhMDVmYjkzPQo4YmU5OWQzNjQ2NjY5OWE1NCBs
aWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9wcm92ZW5hbmNlLnB5Ci0tLSBhL2xpYi9nYWxh
eHkvd2ViYXBwcy9nYWxheHkvYXBpL3Byb3ZlbmFuY2UucHkKKysrIGIvbGliL2dhbGF4eS93ZWJh
cHBzL2dhbGF4eS9hcGkvcHJvdmVuYW5jZS5weQpAQCAtMywxNCArMywxNCBAQAogIiIiCiBpbXBv
cnQgbG9nZ2luZwogZnJvbSBnYWxheHkgaW1wb3J0IHdlYgotZnJvbSBnYWxheHkud2ViLmJhc2Uu
Y29udHJvbGxlciBpbXBvcnQgQmFzZUFQSUNvbnRyb2xsZXIsIFVzZXNIaXN0b3J5TWl4aW4KK2Zy
b20gZ2FsYXh5LndlYi5iYXNlLmNvbnRyb2xsZXIgaW1wb3J0IEJhc2VBUElDb250cm9sbGVyCiBm
cm9tIHBhc3RlLmh0dHBleGNlcHRpb25zIGltcG9ydCBIVFRQTm90SW1wbGVtZW50ZWQsIEhUVFBC
YWRSZXF1ZXN0CiBmcm9tIGdhbGF4eS5tYW5hZ2VycyBpbXBvcnQgaGRhcwo9MjAKIGxvZyA9M0Qg
bG9nZ2luZy5nZXRMb2dnZXIoIF9fbmFtZV9fICkKPTIwCj0yMAotY2xhc3MgQmFzZVByb3ZlbmFu
Y2VDb250cm9sbGVyKCBCYXNlQVBJQ29udHJvbGxlciwgVXNlc0hpc3RvcnlNaXhpbiApOgorY2xh
c3MgQmFzZVByb3ZlbmFuY2VDb250cm9sbGVyKCBCYXNlQVBJQ29udHJvbGxlciApOgogICAgICIi
IgogICAgICIiIgogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CgpkaWZmIC1yIDk4ZDRj
YjU4MWY2MjAxMzU5YTdkZDA4NDVhYjJkODViMTFlOTg1ZDcgLXIgMTQzZjAyMmJhZTY5ZDhhYWEw
NWZiOTM9CjhiZTk5ZDM2NDY2Njk5YTU0IGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL3Rv
b2xzLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL3Rvb2xzLnB5CisrKyBi
L2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL3Rvb2xzLnB5CkBAIC03LDcgKzcsNiBAQAog
ZnJvbSBnYWxheHkud2ViIGltcG9ydCBfZnV0dXJlX2V4cG9zZV9hcGkKIGZyb20gZ2FsYXh5Lndl
Yi5iYXNlLmNvbnRyb2xsZXIgaW1wb3J0IEJhc2VBUElDb250cm9sbGVyCiBmcm9tIGdhbGF4eS53
ZWIuYmFzZS5jb250cm9sbGVyIGltcG9ydCBVc2VzVmlzdWFsaXphdGlvbk1peGluCi1mcm9tIGdh
bGF4eS53ZWIuYmFzZS5jb250cm9sbGVyIGltcG9ydCBVc2VzSGlzdG9yeU1peGluCiBmcm9tIGdh
bGF4eS52aXN1YWxpemF0aW9uLmdlbm9tZXMgaW1wb3J0IEdlbm9tZVJlZ2lvbgogZnJvbSBnYWxh
eHkudXRpbC5qc29uIGltcG9ydCBkdW1wcwogZnJvbSBnYWxheHkudmlzdWFsaXphdGlvbi5kYXRh
X3Byb3ZpZGVycy5nZW5vbWUgaW1wb3J0ICoKQEAgLTI1LDcgKzI0LDcgQEAKIGxvZyA9M0QgbG9n
Z2luZy5nZXRMb2dnZXIoIF9fbmFtZV9fICkKPTIwCj0yMAotY2xhc3MgVG9vbHNDb250cm9sbGVy
KCBCYXNlQVBJQ29udHJvbGxlciwgVXNlc1Zpc3VhbGl6YXRpb25NaXhpbiwgVXNlc0hpc3Q9Cm9y
eU1peGluICk6CitjbGFzcyBUb29sc0NvbnRyb2xsZXIoIEJhc2VBUElDb250cm9sbGVyLCBVc2Vz
VmlzdWFsaXphdGlvbk1peGluICk6CiAgICAgIiIiCiAgICAgUkVTVGZ1bCBjb250cm9sbGVyIGZv
ciBpbnRlcmFjdGlvbnMgd2l0aCB0b29scy4KICAgICAiIiIKCmRpZmYgLXIgOThkNGNiNTgxZjYy
MDEzNTlhN2RkMDg0NWFiMmQ4NWIxMWU5ODVkNyAtciAxNDNmMDIyYmFlNjlkOGFhYTA1ZmI5Mz0K
OGJlOTlkMzY0NjY2OTlhNTQgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvd29ya2Zsb3dz
LnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL3dvcmtmbG93cy5weQorKysg
Yi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS93b3JrZmxvd3MucHkKQEAgLTEzLDcgKzEz
LDYgQEAKIGZyb20gZ2FsYXh5Lm1hbmFnZXJzIGltcG9ydCB3b3JrZmxvd3MKIGZyb20gZ2FsYXh5
LndlYiBpbXBvcnQgX2Z1dHVyZV9leHBvc2VfYXBpIGFzIGV4cG9zZV9hcGkKIGZyb20gZ2FsYXh5
LndlYi5iYXNlLmNvbnRyb2xsZXIgaW1wb3J0IEJhc2VBUElDb250cm9sbGVyLCB1cmxfZm9yLCBV
c2VzU3RvPQpyZWRXb3JrZmxvd01peGluCi1mcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9sbGVy
IGltcG9ydCBVc2VzSGlzdG9yeU1peGluCiBmcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9sbGVy
IGltcG9ydCBTaGFyYWJsZU1peGluCiBmcm9tIGdhbGF4eS53b3JrZmxvdy5leHRyYWN0IGltcG9y
dCBleHRyYWN0X3dvcmtmbG93CiBmcm9tIGdhbGF4eS53b3JrZmxvdy5ydW4gaW1wb3J0IGludm9r
ZSwgcXVldWVfaW52b2tlCkBAIC0yMiwxMCArMjEsMTAgQEAKIGxvZyA9M0QgbG9nZ2luZy5nZXRM
b2dnZXIoX19uYW1lX18pCj0yMAo9MjAKLWNsYXNzIFdvcmtmbG93c0FQSUNvbnRyb2xsZXIoQmFz
ZUFQSUNvbnRyb2xsZXIsIFVzZXNTdG9yZWRXb3JrZmxvd01peGluLCBVPQpzZXNIaXN0b3J5TWl4
aW4sIFVzZXNBbm5vdGF0aW9ucywgU2hhcmFibGVNaXhpbik6CitjbGFzcyBXb3JrZmxvd3NBUElD
b250cm9sbGVyKEJhc2VBUElDb250cm9sbGVyLCBVc2VzU3RvcmVkV29ya2Zsb3dNaXhpbiwgVT0K
c2VzQW5ub3RhdGlvbnMsIFNoYXJhYmxlTWl4aW4pOgo9MjAKICAgICBkZWYgX19pbml0X18oIHNl
bGYsIGFwcCApOgotICAgICAgICBzdXBlciggQmFzZUFQSUNvbnRyb2xsZXIsIHNlbGYgKS5fX2lu
aXRfXyggYXBwICkKKyAgICAgICAgc3VwZXIoIFdvcmtmbG93c0FQSUNvbnRyb2xsZXIsIHNlbGYg
KS5fX2luaXRfXyggYXBwICkKICAgICAgICAgc2VsZi5oaXN0b3J5X21hbmFnZXIgPTNEIGhpc3Rv
cmllcy5IaXN0b3J5TWFuYWdlciggYXBwICkKICAgICAgICAgc2VsZi53b3JrZmxvd19tYW5hZ2Vy
ID0zRCB3b3JrZmxvd3MuV29ya2Zsb3dzTWFuYWdlciggYXBwICkKICAgICAgICAgc2VsZi53b3Jr
Zmxvd19jb250ZW50c19tYW5hZ2VyID0zRCB3b3JrZmxvd3MuV29ya2Zsb3dDb250ZW50c01hbmFn
PQplcigpCkBAIC0xNDksNyArMTQ4LDkgQEAKPTIwCiAgICAgICAgIGlmICdmcm9tX2hpc3Rvcnlf
aWQnIGluIHBheWxvYWQ6CiAgICAgICAgICAgICBmcm9tX2hpc3RvcnlfaWQgPTNEIHBheWxvYWQu
Z2V0KCAnZnJvbV9oaXN0b3J5X2lkJyApCi0gICAgICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmdl
dF9oaXN0b3J5KCB0cmFucywgZnJvbV9oaXN0b3J5X2lkLCBjaGVja19vdz0KbmVyc2hpcD0zREZh
bHNlLCBjaGVja19hY2Nlc3NpYmxlPTNEVHJ1ZSApCisgICAgICAgICAgICBmcm9tX2hpc3Rvcnlf
aWQgPTNEIHRyYW5zLnNlY3VyaXR5LmRlY29kZV9pZCggZnJvbV9oaXN0b3J5X2lkICkKKyAgICAg
ICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuaGlzdG9yeV9tYW5hZ2VyLmFjY2Vzc2libGVfYnlfaWQo
IHRyYW5zLCBmcm9tPQpfaGlzdG9yeV9pZCwgdHJhbnMudXNlciApCisKICAgICAgICAgICAgIGpv
Yl9pZHMgPTNEIG1hcCggdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkLCBwYXlsb2FkLmdldCggJ2pv
Yl9pPQpkcycsIFtdICkgKQogICAgICAgICAgICAgZGF0YXNldF9pZHMgPTNEIHBheWxvYWQuZ2V0
KCAnZGF0YXNldF9pZHMnLCBbXSApCiAgICAgICAgICAgICBkYXRhc2V0X2NvbGxlY3Rpb25faWRz
ID0zRCBwYXlsb2FkLmdldCggJ2RhdGFzZXRfY29sbGVjdGlvbl9pZD0KcycsIFtdICkKCmRpZmYg
LXIgOThkNGNiNTgxZjYyMDEzNTlhN2RkMDg0NWFiMmQ4NWIxMWU5ODVkNyAtciAxNDNmMDIyYmFl
NjlkOGFhYTA1ZmI5Mz0KOGJlOTlkMzY0NjY2OTlhNTQgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4
eS9jb250cm9sbGVycy9kYXRhc2V0LnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkv
Y29udHJvbGxlcnMvZGF0YXNldC5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2Nv
bnRyb2xsZXJzL2RhdGFzZXQucHkKQEAgLTMsMTIgKzMsMTMgQEAKIGltcG9ydCB1cmxsaWIKPTIw
CiBmcm9tIGdhbGF4eSBpbXBvcnQgZGF0YXR5cGVzLCBlZ2dzLCBtb2RlbCwgdXRpbCwgd2ViCitm
cm9tIGdhbGF4eSBpbXBvcnQgbWFuYWdlcnMKIGZyb20gZ2FsYXh5LmRhdGF0eXBlcy5kaXNwbGF5
X2FwcGxpY2F0aW9ucy51dGlsIGltcG9ydCBkZWNvZGVfZGF0YXNldF91c2VyPQosIGVuY29kZV9k
YXRhc2V0X3VzZXIKIGZyb20gZ2FsYXh5Lm1vZGVsLml0ZW1fYXR0cnMgaW1wb3J0IFVzZXNBbm5v
dGF0aW9ucywgVXNlc0l0ZW1SYXRpbmdzCiBmcm9tIGdhbGF4eS51dGlsIGltcG9ydCBpbmZsZWN0
b3IsIHNtYXJ0X3N0cgogZnJvbSBnYWxheHkudXRpbC5zYW5pdGl6ZV9odG1sIGltcG9ydCBzYW5p
dGl6ZV9odG1sCiBmcm9tIGdhbGF4eS51dGlsLmpzb24gaW1wb3J0IGxvYWRzCi1mcm9tIGdhbGF4
eS53ZWIuYmFzZS5jb250cm9sbGVyIGltcG9ydCBCYXNlVUlDb250cm9sbGVyLCBFUlJPUiwgU1VD
Q0VTUywgdT0KcmxfZm9yLCBVc2VzSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbk1peGluLCBVc2Vz
SGlzdG9yeU1peGluLCBVc2VzRXh0ZW5kZWRNPQpldGFkYXRhTWl4aW4KK2Zyb20gZ2FsYXh5Lndl
Yi5iYXNlLmNvbnRyb2xsZXIgaW1wb3J0IEJhc2VVSUNvbnRyb2xsZXIsIEVSUk9SLCBTVUNDRVNT
LCB1PQpybF9mb3IsIFVzZXNIaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uTWl4aW4sIFVzZXNFeHRl
bmRlZE1ldGFkYXRhTWl4aW4KIGZyb20gZ2FsYXh5LndlYi5mcmFtZXdvcmsuaGVscGVycyBpbXBv
cnQgZ3JpZHMsIGlmZiwgdGltZV9hZ28sIHRvX3VuaWNvZGUsPQogZXNjYXBlCiBmcm9tIGdhbGF4
eS50b29scy5lcnJvcnMgaW1wb3J0IEVtYWlsRXJyb3JSZXBvcnRlcgo9MjAKQEAgLTg1LDEwICs4
NiwxNiBAQAogICAgICAgICAgICAgICAgIC5maWx0ZXIoIG1vZGVsLkhpc3RvcnkuZGVsZXRlZD0z
RD0zREZhbHNlICkgXAogICAgICAgICAgICAgICAgIC5maWx0ZXIoIHNlbGYubW9kZWxfY2xhc3Mu
dmlzaWJsZT0zRD0zRFRydWUgKQo9MjAKLWNsYXNzIERhdGFzZXRJbnRlcmZhY2UoIEJhc2VVSUNv
bnRyb2xsZXIsIFVzZXNBbm5vdGF0aW9ucywgVXNlc0hpc3RvcnlNaXhpPQpuLCBVc2VzSGlzdG9y
eURhdGFzZXRBc3NvY2lhdGlvbk1peGluLCBVc2VzSXRlbVJhdGluZ3MsIFVzZXNFeHRlbmRlZE1l
dGFkYXQ9CmFNaXhpbiApOgorY2xhc3MgRGF0YXNldEludGVyZmFjZSggQmFzZVVJQ29udHJvbGxl
ciwgVXNlc0Fubm90YXRpb25zLCBVc2VzSGlzdG9yeURhdGE9CnNldEFzc29jaWF0aW9uTWl4aW4s
IFVzZXNJdGVtUmF0aW5ncywgVXNlc0V4dGVuZGVkTWV0YWRhdGFNaXhpbiApOgo9MjAKICAgICBz
dG9yZWRfbGlzdF9ncmlkID0zRCBIaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uTGlzdEdyaWQoKQo9
MjAKKyAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgorICAgICAgICBzdXBlciggRGF0YXNl
dEludGVyZmFjZSwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQorICAgICAgICBzZWxmLm1ncnMgPTNE
IHV0aWwuYnVuY2guQnVuY2goCisgICAgICAgICAgICBoaXN0b3JpZXM9M0RtYW5hZ2Vycy5oaXN0
b3JpZXMuSGlzdG9yeU1hbmFnZXIoIGFwcCApCisgICAgICAgICkKKwogICAgIGRlZiBfZ2V0X2pv
Yl9mb3JfZGF0YXNldCggc2VsZiwgdHJhbnMsIGRhdGFzZXRfaWQgKToKICAgICAgICAgJycnCiAg
ICAgICAgIFJldHVybiB0aGUgam9iIGZvciB0aGUgZ2l2ZW4gZGF0YXNldC4gVGhpcyB3aWxsIHRo
cm93IGFuIGVycm9yIGlmID0KdGhlCkBAIC05OTMsNyArMTAwMCw4IEBACiAgICAgZGVmIGNvcHlf
ZGF0YXNldHMoIHNlbGYsIHRyYW5zLCBzb3VyY2VfaGlzdG9yeT0zRE5vbmUsIHNvdXJjZV9jb250
ZW50Xz0KaWRzPTNEIiIsIHRhcmdldF9oaXN0b3J5X2lkPTNETm9uZSwgdGFyZ2V0X2hpc3Rvcnlf
aWRzPTNEIiIsIG5ld19oaXN0b3J5X25hPQptZT0zRCIiLCBkb19jb3B5PTNERmFsc2UsICoqa3dk
ICk6CiAgICAgICAgIHVzZXIgPTNEIHRyYW5zLmdldF91c2VyKCkKICAgICAgICAgaWYgc291cmNl
X2hpc3RvcnkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmdldF9o
aXN0b3J5KHRyYW5zLCBzb3VyY2VfaGlzdG9yeSkKKyAgICAgICAgICAgIGRlY29kZWRfc291cmNl
X2hpc3RvcnlfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmRlY29kZV9pZCggc291cmNlPQpfaGlzdG9y
eSApCisgICAgICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLm1ncnMuaGlzdG9yaWVzLm93bmVkX2J5
X2lkKCB0cmFucywgZGVjb2RlZF9zbz0KdXJjZV9oaXN0b3J5X2lkLCB0cmFucy51c2VyICkKICAg
ICAgICAgICAgIGN1cnJlbnRfaGlzdG9yeSA9M0QgdHJhbnMuZ2V0X2hpc3RvcnkoKQogICAgICAg
ICBlbHNlOgogICAgICAgICAgICAgaGlzdG9yeSA9M0QgY3VycmVudF9oaXN0b3J5ID0zRCB0cmFu
cy5nZXRfaGlzdG9yeSgpCgpkaWZmIC1yIDk4ZDRjYjU4MWY2MjAxMzU5YTdkZDA4NDVhYjJkODVi
MTFlOTg1ZDcgLXIgMTQzZjAyMmJhZTY5ZDhhYWEwNWZiOTM9CjhiZTk5ZDM2NDY2Njk5YTU0IGxp
Yi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvaGlzdG9yeS5weQotLS0gYS9saWIv
Z2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL2hpc3RvcnkucHkKKysrIGIvbGliL2dh
bGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9oaXN0b3J5LnB5CkBAIC0xOSw3ICsxOSw2
IEBACiBmcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9sbGVyIGltcG9ydCBCYXNlVUlDb250cm9s
bGVyCiBmcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9sbGVyIGltcG9ydCBTaGFyYWJsZU1peGlu
CiBmcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9sbGVyIGltcG9ydCBVc2VzSGlzdG9yeURhdGFz
ZXRBc3NvY2lhdGlvbk1peGluCi1mcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9sbGVyIGltcG9y
dCBVc2VzSGlzdG9yeU1peGluCiBmcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9sbGVyIGltcG9y
dCBFeHBvcnRzSGlzdG9yeU1peGluCiBmcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9sbGVyIGlt
cG9ydCBJbXBvcnRzSGlzdG9yeU1peGluCiBmcm9tIGdhbGF4eS5tb2RlbC5pdGVtX2F0dHJzIGlt
cG9ydCBVc2VzQW5ub3RhdGlvbnMKQEAgLTQwLDcgKzM5LDcgQEAKIGNsYXNzIEhpc3RvcnlMaXN0
R3JpZCggZ3JpZHMuR3JpZCApOgo9MjAKICAgICAjIEN1c3RvbSBjb2x1bW4gdHlwZXMKLSAgICBj
bGFzcyBEYXRhc2V0c0J5U3RhdGVDb2x1bW4oIGdyaWRzLkdyaWRDb2x1bW4sIFVzZXNIaXN0b3J5
TWl4aW4gKToKKyAgICBjbGFzcyBEYXRhc2V0c0J5U3RhdGVDb2x1bW4oIGdyaWRzLkdyaWRDb2x1
bW4gKToKICAgICAgICAgZGVmIGdldF92YWx1ZSggc2VsZiwgdHJhbnMsIGdyaWQsIGhpc3Rvcnkg
KToKICAgICAgICAgICAgIHN0YXRlX2NvdW50cyA9M0QgewogICAgICAgICAgICAgICAgICdvaycg
OiAwLApAQCAtMjEyLDcgKzIxMSw3IEBACiAgICAgICAgIHJldHVybiBxdWVyeS5maWx0ZXIoIHNl
bGYubW9kZWxfY2xhc3MucHVibGlzaGVkID0zRD0zRCBUcnVlICkuZmlsdD0KZXIoIHNlbGYubW9k
ZWxfY2xhc3Muc2x1ZyAhPTNEIE5vbmUgKS5maWx0ZXIoIHNlbGYubW9kZWxfY2xhc3MuZGVsZXRl
ZCA9M0Q9Cj0zRCBGYWxzZSApCj0yMAogY2xhc3MgSGlzdG9yeUNvbnRyb2xsZXIoIEJhc2VVSUNv
bnRyb2xsZXIsIFNoYXJhYmxlTWl4aW4sIFVzZXNBbm5vdGF0aW9ucyw9CiBVc2VzSXRlbVJhdGlu
Z3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgVXNlc0hpc3RvcnlNaXhpbiwgVXNlc0hpc3Rv
cnlEYXRhc2V0QXNzb2NpYXRpb25NaT0KeGluLCBFeHBvcnRzSGlzdG9yeU1peGluLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIFVzZXNIaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uTWl4aW4sIEV4
cG9ydHNIaXN0b3I9CnlNaXhpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICBJbXBvcnRzSGlz
dG9yeU1peGluICk6Cj0yMAogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CkBAIC0yMjIs
NiArMjIxLDE5IEBACiAgICAgICAgICkKICAgICAgICAgc2VsZi5oaXN0b3J5X3NlcmlhbGl6ZXIg
PTNEIG1hbmFnZXJzLmhpc3Rvcmllcy5IaXN0b3J5U2VyaWFsaXplciggPQpzZWxmLmFwcCApCj0y
MAorICAgIGRlZiBfZ2V0X2hpc3RvcnkoIHNlbGYsIHRyYW5zLCBpZCwgY2hlY2tfb3duZXJzaGlw
PTNEVHJ1ZSwgY2hlY2tfYWNjZXM9CnNpYmxlPTNERmFsc2UsIGRlbGV0ZWQ9M0ROb25lICk6Cisg
ICAgICAgICIiIgorICAgICAgICBHZXQgYSBIaXN0b3J5IGZyb20gdGhlIGRhdGFiYXNlIGJ5IGlk
LCB2ZXJpZnlpbmcgb3duZXJzaGlwLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgdHJhbnMudXNl
ciBpcyBOb25lIGFuZCB0cmFucy5oaXN0b3J5OgorICAgICAgICAgICAgaWYgaWQgPTNEPTNEIHRy
YW5zLnNlY3VyaXR5LmVuY29kZV9pZCggdHJhbnMuaGlzdG9yeS5pZCApOgorICAgICAgICAgICAg
ICAgIHJldHVybiB0cmFucy5oaXN0b3J5CisgICAgICAgICAgICByYWlzZSBJdGVtT3duZXJzaGlw
RXhjZXB0aW9uKCAiTXVzdCBiZSBsb2dnZWQgaW4gdG8gbWFuYWdlIEdhbD0KYXh5IGl0ZW1zIiwg
dHlwZT0zRCdlcnJvcicgKQorCisgICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuZ2V0X29iamVjdCgg
dHJhbnMsIGlkLCAnSGlzdG9yeScsCisgICAgICAgICAgICBjaGVja19vd25lcnNoaXA9M0RjaGVj
a19vd25lcnNoaXAsIGNoZWNrX2FjY2Vzc2libGU9M0RjaGVja19hYz0KY2Vzc2libGUsIGRlbGV0
ZWQ9M0RkZWxldGVkICkKKyAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5zZWN1cml0eV9jaGVjaygg
dHJhbnMsIGhpc3RvcnksIGNoZWNrX293bmVyc2hpcCwgPQpjaGVja19hY2Nlc3NpYmxlICkKKyAg
ICAgICAgcmV0dXJuIGhpc3RvcnkKPTIwCiAgICAgQHdlYi5leHBvc2UKICAgICBkZWYgaW5kZXgo
IHNlbGYsIHRyYW5zICk6CkBAIC0yNjQsNyArMjc2LDcgQEAKICAgICAgICAgICAgICAgICAgICAg
ZGVsIGt3YXJnc1snbmFtZSddICMgUmVtb3ZlIGFqYXggbmFtZSBwYXJhbSB0aGF0IHJlbmFtPQpl
IG1ldGhvZCB1c2VzCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVuYW1lKCB0cmFucywg
Kiprd2FyZ3MgKQogICAgICAgICAgICAgaWYgb3BlcmF0aW9uID0zRD0zRCAidmlldyI6Ci0gICAg
ICAgICAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5nZXRfaGlzdG9yeSggdHJhbnMsIGt3YXJncy5n
ZXQoICdpZCcsIE5vbj0KZSApICkKKyAgICAgICAgICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLl9n
ZXRfaGlzdG9yeSggdHJhbnMsIGt3YXJncy5nZXQoICdpZCcsIE5vPQpuZSApICkKICAgICAgICAg
ICAgICAgICBpZiBoaXN0b3J5OgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnMucmVz
cG9uc2Uuc2VuZF9yZWRpcmVjdCggdXJsX2ZvciggY29udHJvbGw9CmVyPTNEJ2hpc3RvcnknLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWN0aW9uPQo9M0QndmlldycsCkBAIC0yODEsNyArMjkzLDcgQEAKICAgICAgICAg
ICAgICMgTG9hZCB0aGUgaGlzdG9yaWVzIGFuZCBlbnN1cmUgdGhleSBhbGwgYmVsb25nIHRvIHRo
ZSBjdXJyZW50PQogdXNlcgogICAgICAgICAgICAgaGlzdG9yaWVzID0zRCBbXQogICAgICAgICAg
ICAgZm9yIGhpc3RvcnlfaWQgaW4gaGlzdG9yeV9pZHM6Ci0gICAgICAgICAgICAgICAgaGlzdG9y
eSA9M0Qgc2VsZi5nZXRfaGlzdG9yeSggdHJhbnMsIGhpc3RvcnlfaWQgKQorICAgICAgICAgICAg
ICAgIGhpc3RvcnkgPTNEIHNlbGYuX2dldF9oaXN0b3J5KCB0cmFucywgaGlzdG9yeV9pZCApCiAg
ICAgICAgICAgICAgICAgaWYgaGlzdG9yeToKICAgICAgICAgICAgICAgICAgICAgIyBFbnN1cmUg
aGlzdG9yeSBpcyBvd25lZCBieSBjdXJyZW50IHVzZXIKICAgICAgICAgICAgICAgICAgICAgaWYg
aGlzdG9yeS51c2VyX2lkICE9M0QgTm9uZSBhbmQgdHJhbnMudXNlcjoKQEAgLTMyNCw3ICszMzYs
NyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21ha2VfaXRlbV9pbXBvcnRh
YmxlKCB0cmFucy5zYV9zZXNzaW9uLCA9Cmhpc3RvcnkgKQogICAgICAgICAgICAgICAgIGVsaWYg
b3BlcmF0aW9uID0zRD0zRCAiZGlzYWJsZSBpbXBvcnQgdmlhIGxpbmsiOgogICAgICAgICAgICAg
ICAgICAgICBpZiBoaXN0b3J5X2lkczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGhpc3Rvcmll
cyA9M0QgWyBzZWxmLmdldF9oaXN0b3J5KCB0cmFucywgaGlzdG9yeV9pPQpkICkgZm9yIGhpc3Rv
cnlfaWQgaW4gaGlzdG9yeV9pZHMgXQorICAgICAgICAgICAgICAgICAgICAgICAgaGlzdG9yaWVz
ID0zRCBbIHNlbGYuX2dldF9oaXN0b3J5KCB0cmFucywgaGlzdG9yeV89CmlkICkgZm9yIGhpc3Rv
cnlfaWQgaW4gaGlzdG9yeV9pZHMgXQogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGhpc3Rv
cnkgaW4gaGlzdG9yaWVzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGhpc3Rvcnku
aW1wb3J0YWJsZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlzdG9yeS5pbXBv
cnRhYmxlID0zRCBGYWxzZQpAQCAtNDQxLDcgKzQ1Myw3IEBACiAgICAgICAgICAgICBvcGVyYXRp
b24gPTNEIGt3YXJnc1snb3BlcmF0aW9uJ10ubG93ZXIoKQogICAgICAgICAgICAgaWYgb3BlcmF0
aW9uID0zRD0zRCAidmlldyI6CiAgICAgICAgICAgICAgICAgIyBEaXNwbGF5IGhpc3RvcnkuCi0g
ICAgICAgICAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5nZXRfaGlzdG9yeSggdHJhbnMsIGlkc1sw
XSwgRmFsc2UpCisgICAgICAgICAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5fZ2V0X2hpc3Rvcnko
IHRyYW5zLCBpZHNbMF0sIEZhbHNlKQogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmRpc3Bs
YXlfYnlfdXNlcm5hbWVfYW5kX3NsdWcoIHRyYW5zLCBoaXN0b3J5LnU9CnNlci51c2VybmFtZSwg
aGlzdG9yeS5zbHVnICkKICAgICAgICAgICAgIGVsaWYgb3BlcmF0aW9uID0zRD0zRCAiY29weSI6
CiAgICAgICAgICAgICAgICAgaWYgbm90IGlkczoKQEAgLTQ1Niw3ICs0NjgsNyBAQAogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5zaGFyZWRfbGlzdF9ncmlkKCB0cmFucywgc3RhdHVz
PTNEJ2Vycm9yJyw9CiBtZXNzYWdlPTNEbWVzc2FnZSwgKiprd2FyZ3MgKQogICAgICAgICAgICAg
ICAgICMgTm8gbmVlZCB0byBjaGVjayBzZWN1cml0eSwgYXNzb2NpYXRpb24gYmVsb3cgd29uJ3Qg
eWllbGQ9CiBhCiAgICAgICAgICAgICAgICAgIyBoaXQgaWYgdGhpcyB1c2VyIGlzbid0IGhhdmlu
ZyB0aGUgaGlzdG9yeSBzaGFyZWQgd2l0aCBoZT0Kci4KLSAgICAgICAgICAgICAgICBoaXN0b3Jp
ZXMgPTNEIFsgc2VsZi5nZXRfaGlzdG9yeSggdHJhbnMsIGhpc3RvcnlfaWQsIGNoZWNrPQpfb3du
ZXJzaGlwPTNERmFsc2UgKSBmb3IgaGlzdG9yeV9pZCBpbiBpZHMgXQorICAgICAgICAgICAgICAg
IGhpc3RvcmllcyA9M0QgWyBzZWxmLl9nZXRfaGlzdG9yeSggdHJhbnMsIGhpc3RvcnlfaWQsIGNo
ZWM9Cmtfb3duZXJzaGlwPTNERmFsc2UgKSBmb3IgaGlzdG9yeV9pZCBpbiBpZHMgXQogICAgICAg
ICAgICAgICAgIGZvciBoaXN0b3J5IGluIGhpc3RvcmllczoKICAgICAgICAgICAgICAgICAgICAg
IyBDdXJyZW50IHVzZXIgaXMgdGhlIHVzZXIgd2l0aCB3aGljaCB0aGUgaGlzdG9yaWVzIHdlPQpy
ZSBzaGFyZWQKICAgICAgICAgICAgICAgICAgICAgYXNzb2NpYXRpb24gPTNEIHRyYW5zLnNhX3Nl
c3Npb24ucXVlcnkoIHRyYW5zLmFwcC5tb2RlPQpsLkhpc3RvcnlVc2VyU2hhcmVBc3NvY2lhdGlv
biApLmZpbHRlcl9ieSggdXNlcj0zRHRyYW5zLnVzZXIsIGhpc3Rvcnk9M0RoaXM9CnRvcnkgKS5v
bmUoKQpAQCAtNTU2LDcgKzU2OCw3IEBACiAgICAgICAgIGlmIG5vdCBpZDoKICAgICAgICAgICAg
IGlkID0zRCB0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHRyYW5zLmhpc3RvcnkuaWQgKQo9MjAK
LSAgICAgICAgaGlzdG9yeV90b192aWV3ID0zRCBzZWxmLmdldF9oaXN0b3J5KCB0cmFucywgaWQs
IGNoZWNrX293bmVyc2hpcD0KPTNERmFsc2UsIGNoZWNrX2FjY2Vzc2libGU9M0RUcnVlICkKKyAg
ICAgICAgaGlzdG9yeV90b192aWV3ID0zRCBzZWxmLl9nZXRfaGlzdG9yeSggdHJhbnMsIGlkLCBj
aGVja19vd25lcnNoaXA9Cj0zREZhbHNlLCBjaGVja19hY2Nlc3NpYmxlPTNEVHJ1ZSApCiAgICAg
ICAgIGhpc3RvcnlfZGF0YSA9M0Qgc2VsZi5tZ3JzLmhpc3Rvcmllcy5fZ2V0X2hpc3RvcnlfZGF0
YSggdHJhbnMsIGhpcz0KdG9yeV90b192aWV3ICkKICAgICAgICAgaGlzdG9yeV9kaWN0aW9uYXJ5
ID0zRCBoaXN0b3J5X2RhdGFbICdoaXN0b3J5JyBdCiAgICAgICAgIGhkYV9kaWN0aW9uYXJpZXMg
ICA9M0QgaGlzdG9yeV9kYXRhWyAnY29udGVudHMnIF0KQEAgLTU5NSw3ICs2MDcsNyBAQAogICAg
ICAgICBoZGFfZGljdGlvbmFyaWVzICAgPTNEIFtdCiAgICAgICAgIHVzZXJfaXNfb3duZXIgPTNE
IEZhbHNlCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGhpc3RvcnlfdG9fdmlldyA9M0Qgc2Vs
Zi5nZXRfaGlzdG9yeSggdHJhbnMsIGlkLCBjaGVja19vd25lcnNoPQppcD0zREZhbHNlLCBjaGVj
a19hY2Nlc3NpYmxlPTNERmFsc2UgKQorICAgICAgICAgICAgaGlzdG9yeV90b192aWV3ID0zRCBz
ZWxmLl9nZXRfaGlzdG9yeSggdHJhbnMsIGlkLCBjaGVja19vd25lcnM9CmhpcD0zREZhbHNlLCBj
aGVja19hY2Nlc3NpYmxlPTNERmFsc2UgKQogICAgICAgICAgICAgaWYgbm90IGhpc3RvcnlfdG9f
dmlldzoKICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnMuc2hvd19lcnJvcl9tZXNzYWdlKCAi
VGhlIHNwZWNpZmllZCBoaXN0b3J5IGRvPQplcyBub3QgZXhpc3QuIiApCiAgICAgICAgICAgICBp
ZiBoaXN0b3J5X3RvX3ZpZXcudXNlciA9M0Q9M0QgdHJhbnMudXNlcjoKQEAgLTcwOCw3ICs3MjAs
NyBAQAogICAgICAgICBpZiBpZDoKICAgICAgICAgICAgIGlkcyA9M0QgZ2FsYXh5LnV0aWwubGlz
dGlmeSggaWQgKQogICAgICAgICAgICAgaWYgaWRzOgotICAgICAgICAgICAgICAgIGhpc3Rvcmll
cyA9M0QgWyBzZWxmLmdldF9oaXN0b3J5KCB0cmFucywgaGlzdG9yeV9pZCApIGZvciA9Cmhpc3Rv
cnlfaWQgaW4gaWRzIF0KKyAgICAgICAgICAgICAgICBoaXN0b3JpZXMgPTNEIFsgc2VsZi5fZ2V0
X2hpc3RvcnkoIHRyYW5zLCBoaXN0b3J5X2lkICkgZm9yPQogaGlzdG9yeV9pZCBpbiBpZHMgXQog
ICAgICAgICBlbGlmIG5vdCBoaXN0b3JpZXM6CiAgICAgICAgICAgICBoaXN0b3JpZXMgPTNEIFsg
dHJhbnMuaGlzdG9yeSBdCj0yMApAQCAtNzc3LDcgKzc4OSw3IEBACiAgICAgICAgICAgICBzZW5k
X3RvX2VyciA9M0QgZXJyX21zZwogICAgICAgICAgICAgaGlzdG9yaWVzID0zRCBbXQogICAgICAg
ICAgICAgZm9yIGhpc3RvcnlfaWQgaW4gaWQ6Ci0gICAgICAgICAgICAgICAgaGlzdG9yaWVzLmFw
cGVuZCggc2VsZi5nZXRfaGlzdG9yeSggdHJhbnMsIGhpc3RvcnlfaWQgKSApCisgICAgICAgICAg
ICAgICAgaGlzdG9yaWVzLmFwcGVuZCggc2VsZi5fZ2V0X2hpc3RvcnkoIHRyYW5zLCBoaXN0b3J5
X2lkICkgKQogICAgICAgICAgICAgcmV0dXJuIHRyYW5zLmZpbGxfdGVtcGxhdGUoICIvaGlzdG9y
eS9zaGFyZS5tYWtvIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
aXN0b3JpZXM9M0RoaXN0b3JpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZW1haWw9M0RlbWFpbCwKQEAgLTg4NSw3ICs4OTcsNyBAQAogICAgICAgICBzZW5kX3Rv
X2VyciA9M0QgIiIKICAgICAgICAgaGlzdG9yaWVzID0zRCBbXQogICAgICAgICBmb3IgaGlzdG9y
eV9pZCBpbiBpZDoKLSAgICAgICAgICAgIGhpc3Rvcmllcy5hcHBlbmQoIHNlbGYuZ2V0X2hpc3Rv
cnkoIHRyYW5zLCBoaXN0b3J5X2lkICkgKQorICAgICAgICAgICAgaGlzdG9yaWVzLmFwcGVuZCgg
c2VsZi5fZ2V0X2hpc3RvcnkoIHRyYW5zLCBoaXN0b3J5X2lkICkgKQogICAgICAgICBzZW5kX3Rv
X3VzZXJzID0zRCBbXQogICAgICAgICBmb3IgZW1haWxfYWRkcmVzcyBpbiBnYWxheHkudXRpbC5s
aXN0aWZ5KCBlbWFpbCApOgogICAgICAgICAgICAgZW1haWxfYWRkcmVzcyA9M0QgZW1haWxfYWRk
cmVzcy5zdHJpcCgpCkBAIC0xMTY0LDcgKzExNzYsNyBAQAogICAgIEB3ZWIuanNvbgogICAgIGRl
ZiByYXRlX2FzeW5jKCBzZWxmLCB0cmFucywgaWQsIHJhdGluZyApOgogICAgICAgICAiIiIgUmF0
ZSBhIGhpc3RvcnkgYXN5bmNocm9ub3VzbHkgYW5kIHJldHVybiB1cGRhdGVkIGNvbW11bml0eSBk
YXQ9CmEuICIiIgotICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmdldF9oaXN0b3J5KCB0cmFucywg
aWQsIGNoZWNrX293bmVyc2hpcD0zREZhbHNlLCA9CmNoZWNrX2FjY2Vzc2libGU9M0RUcnVlICkK
KyAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5fZ2V0X2hpc3RvcnkoIHRyYW5zLCBpZCwgY2hlY2tf
b3duZXJzaGlwPTNERmFsc2UsPQogY2hlY2tfYWNjZXNzaWJsZT0zRFRydWUgKQogICAgICAgICBp
ZiBub3QgaGlzdG9yeToKICAgICAgICAgICAgIHJldHVybiB0cmFucy5zaG93X2Vycm9yX21lc3Nh
Z2UoICJUaGUgc3BlY2lmaWVkIGhpc3RvcnkgZG9lcyBuPQpvdCBleGlzdC4iICkKICAgICAgICAg
IyBSYXRlIGhpc3RvcnkuCkBAIC0xMjA4LDcgKzEyMjAsNyBAQAogICAgICAgICAjIEdldCBoaXN0
b3J5IHRvIGV4cG9ydC4KICAgICAgICAgIwogICAgICAgICBpZiBpZDoKLSAgICAgICAgICAgIGhp
c3RvcnkgPTNEIHNlbGYuZ2V0X2hpc3RvcnkoIHRyYW5zLCBpZCwgY2hlY2tfb3duZXJzaGlwPTNE
RmFsPQpzZSwgY2hlY2tfYWNjZXNzaWJsZT0zRFRydWUgKQorICAgICAgICAgICAgaGlzdG9yeSA9
M0Qgc2VsZi5fZ2V0X2hpc3RvcnkoIHRyYW5zLCBpZCwgY2hlY2tfb3duZXJzaGlwPTNERmE9Cmxz
ZSwgY2hlY2tfYWNjZXNzaWJsZT0zRFRydWUgKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAg
IyBVc2UgY3VycmVudCBoaXN0b3J5LgogICAgICAgICAgICAgaGlzdG9yeSA9M0QgdHJhbnMuaGlz
dG9yeQpAQCAtMTI0Niw3ICsxMjU4LDcgQEAKICAgICBAd2ViLnJlcXVpcmVfbG9naW4oICJnZXQg
aGlzdG9yeSBuYW1lIGFuZCBsaW5rIiApCiAgICAgZGVmIGdldF9uYW1lX2FuZF9saW5rX2FzeW5j
KCBzZWxmLCB0cmFucywgaWQ9M0ROb25lICk6CiAgICAgICAgICIiIiBSZXR1cm5zIGhpc3Rvcnkn
cyBuYW1lIGFuZCBsaW5rLiAiIiIKLSAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5nZXRfaGlzdG9y
eSggdHJhbnMsIGlkLCBGYWxzZSApCisgICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuX2dldF9oaXN0
b3J5KCB0cmFucywgaWQsIEZhbHNlICkKICAgICAgICAgaWYgc2VsZi5jcmVhdGVfaXRlbV9zbHVn
KCB0cmFucy5zYV9zZXNzaW9uLCBoaXN0b3J5ICk6CiAgICAgICAgICAgICB0cmFucy5zYV9zZXNz
aW9uLmZsdXNoKCkKICAgICAgICAgcmV0dXJuX2RpY3QgPTNEIHsKQEAgLTEyNjAsNyArMTI3Miw3
IEBACiAgICAgQHdlYi5yZXF1aXJlX2xvZ2luKCAic2V0IGhpc3RvcnkncyBhY2Nlc3NpYmxlIGZs
YWciICkKICAgICBkZWYgc2V0X2FjY2Vzc2libGVfYXN5bmMoIHNlbGYsIHRyYW5zLCBpZD0zRE5v
bmUsIGFjY2Vzc2libGU9M0RGYWxzZSApOgogICAgICAgICAiIiIgU2V0IGhpc3RvcnkncyBpbXBv
cnRhYmxlIGF0dHJpYnV0ZSBhbmQgc2x1Zy4gIiIiCi0gICAgICAgIGhpc3RvcnkgPTNEIHNlbGYu
Z2V0X2hpc3RvcnkoIHRyYW5zLCBpZCwgVHJ1ZSApCisgICAgICAgIGhpc3RvcnkgPTNEIHNlbGYu
X2dldF9oaXN0b3J5KCB0cmFucywgaWQsIFRydWUgKQogICAgICAgICAjIE9ubHkgc2V0IGlmIGlt
cG9ydGFibGUgdmFsdWUgd291bGQgY2hhbmdlOyB0aGlzIHByZXZlbnRzIGEgY2hhbmc9CmUgaW4g
dGhlIHVwZGF0ZV90aW1lIHVubGVzcyBhdHRyaWJ1dGUgcmVhbGx5IGNoYW5nZWQuCiAgICAgICAg
IGltcG9ydGFibGUgPTNEIGFjY2Vzc2libGUgaW4gWydUcnVlJywgJ3RydWUnLCAndCcsICdUJ107
CiAgICAgICAgIGlmIGhpc3RvcnkgYW5kIGhpc3RvcnkuaW1wb3J0YWJsZSAhPTNEIGltcG9ydGFi
bGU6CkBAIC0xMjczLDIzICsxMjg1LDYgQEAKICAgICAgICAgI1RPRE86IHVzZWQgaW4gcGFnZS9l
ZGl0b3IubWFrbwo9MjAKICAgICBAd2ViLmV4cG9zZQotICAgIGRlZiBnZXRfaXRlbV9jb250ZW50
X2FzeW5jKCBzZWxmLCB0cmFucywgaWQgKToKLSAgICAgICAgIiIiIFJldHVybnMgaXRlbSBjb250
ZW50IGluIEhUTUwgZm9ybWF0LiAiIiIKLQotICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmdldF9o
aXN0b3J5KCB0cmFucywgaWQsIEZhbHNlLCBUcnVlICkKLSAgICAgICAgaWYgaGlzdG9yeSBpcyBO
b25lOgotICAgICAgICAgICAgcmFpc2Ugd2ViLmh0dHBleGNlcHRpb25zLkhUVFBOb3RGb3VuZCgp
Ci0KLSAgICAgICAgIyBHZXQgZGF0YXNldHMuCi0gICAgICAgIGRhdGFzZXRzID0zRCBzZWxmLmdl
dF9oaXN0b3J5X2RhdGFzZXRzKCB0cmFucywgaGlzdG9yeSApCi0gICAgICAgICMgR2V0IGFubm90
YXRpb25zLgotICAgICAgICBoaXN0b3J5LmFubm90YXRpb24gPTNEIHNlbGYuZ2V0X2l0ZW1fYW5u
b3RhdGlvbl9zdHIoIHRyYW5zLnNhX3Nlc3M9CmlvbiwgaGlzdG9yeS51c2VyLCBoaXN0b3J5ICkK
LSAgICAgICAgZm9yIGRhdGFzZXQgaW4gZGF0YXNldHM6Ci0gICAgICAgICAgICBkYXRhc2V0LmFu
bm90YXRpb24gPTNEIHNlbGYuZ2V0X2l0ZW1fYW5ub3RhdGlvbl9zdHIoIHRyYW5zLnNhXz0Kc2Vz
c2lvbiwgaGlzdG9yeS51c2VyLCBkYXRhc2V0ICkKLSAgICAgICAgcmV0dXJuIHRyYW5zLnN0cmVh
bV90ZW1wbGF0ZV9tYWtvKCAiL2hpc3RvcnkvaXRlbV9jb250ZW50Lm1ha28iLCBpPQp0ZW0gPTNE
IGhpc3RvcnksIGl0ZW1fZGF0YSA9M0QgZGF0YXNldHMgKQotICAgICAgICAjVE9ETzogdXNlZCBp
biBlbWJlZF9iYXNlLm1ha28KLQotICAgIEB3ZWIuZXhwb3NlCiAgICAgZGVmIG5hbWVfYXV0b2Nv
bXBsZXRlX2RhdGEoIHNlbGYsIHRyYW5zLCBxPTNETm9uZSwgbGltaXQ9M0ROb25lLCB0aW1lcz0K
dGFtcD0zRE5vbmUgKToKICAgICAgICAgIiIiUmV0dXJuIGF1dG9jb21wbGV0ZSBkYXRhIGZvciBo
aXN0b3J5IG5hbWVzIiIiCiAgICAgICAgIHVzZXIgPTNEIHRyYW5zLmdldF91c2VyKCkKQEAgLTEz
MjYsNyArMTMyMSw3IEBACiAgICAgICAgICMgRG8gaW1wb3J0LgogICAgICAgICBpZiBub3QgaWQ6
CiAgICAgICAgICAgICByZXR1cm4gdHJhbnMuc2hvd19lcnJvcl9tZXNzYWdlKCAiWW91IG11c3Qg
c3BlY2lmeSBhIGhpc3RvcnkgeT0Kb3Ugd2FudCB0byBpbXBvcnQuPGJyPllvdSBjYW4gJXMuIiAl
IHJlZmVyZXJfbWVzc2FnZSwgdXNlX3BhbmVscz0zRFRydWUgKQotICAgICAgICBpbXBvcnRfaGlz
dG9yeSA9M0Qgc2VsZi5nZXRfaGlzdG9yeSggdHJhbnMsIGlkLCBjaGVja19vd25lcnNoaXA9M0Q9
CkZhbHNlLCBjaGVja19hY2Nlc3NpYmxlPTNERmFsc2UgKQorICAgICAgICBpbXBvcnRfaGlzdG9y
eSA9M0Qgc2VsZi5fZ2V0X2hpc3RvcnkoIHRyYW5zLCBpZCwgY2hlY2tfb3duZXJzaGlwPQo9M0RG
YWxzZSwgY2hlY2tfYWNjZXNzaWJsZT0zREZhbHNlICkKICAgICAgICAgaWYgbm90IGltcG9ydF9o
aXN0b3J5OgogICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnNob3dfZXJyb3JfbWVzc2FnZSggIlRo
ZSBzcGVjaWZpZWQgaGlzdG9yeSBkb2VzIG49Cm90IGV4aXN0Ljxicj5Zb3UgY2FuICVzLiIgJSBy
ZWZlcmVyX21lc3NhZ2UsIHVzZV9wYW5lbHM9M0RUcnVlICkKICAgICAgICAgIyBIaXN0b3J5IGlz
IGltcG9ydGFibGUgaWYgdXNlciBpcyBhZG1pbiBvciBpdCdzIGFjY2Vzc2libGUuIFRPRE86PQog
cHJvYmFibHkgd2FudCB0byBoYXZlIGFwcCBzZXR0aW5nIHRvIGVuYWJsZSBhZG1pbiBhY2Nlc3Mg
dG8gaGlzdG9yaWVzLgpAQCAtMTM5Niw3ICsxMzkxLDcgQEAKICAgICAgICAgaGlzdG9yaWVzID0z
RCBbXQogICAgICAgICBjdXJfbmFtZXMgPTNEIFtdCiAgICAgICAgIGZvciBoaXN0b3J5X2lkIGlu
IGlkOgotICAgICAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5nZXRfaGlzdG9yeSggdHJhbnMsIGhp
c3RvcnlfaWQgKQorICAgICAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5fZ2V0X2hpc3RvcnkoIHRy
YW5zLCBoaXN0b3J5X2lkICkKICAgICAgICAgICAgIGlmIGhpc3RvcnkgYW5kIGhpc3RvcnkudXNl
cl9pZCA9M0Q9M0QgdXNlci5pZDoKICAgICAgICAgICAgICAgICBoaXN0b3JpZXMuYXBwZW5kKCBo
aXN0b3J5ICkKICAgICAgICAgICAgICAgICBjdXJfbmFtZXMuYXBwZW5kKCBoaXN0b3J5LmdldF9k
aXNwbGF5X25hbWUoKSApCkBAIC0xNDM4LDcgKzE0MzMsNyBAQAogICAgICAgICAgICAgaWRzID0z
RCBnYWxheHkudXRpbC5saXN0aWZ5KCBpZCApCiAgICAgICAgICAgICBoaXN0b3JpZXMgPTNEIFtd
CiAgICAgICAgICAgICBmb3IgaGlzdG9yeV9pZCBpbiBpZHM6Ci0gICAgICAgICAgICAgICAgaGlz
dG9yeSA9M0Qgc2VsZi5nZXRfaGlzdG9yeSggdHJhbnMsIGhpc3RvcnlfaWQsIGNoZWNrX293bj0K
ZXJzaGlwPTNERmFsc2UgKQorICAgICAgICAgICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuX2dldF9o
aXN0b3J5KCB0cmFucywgaGlzdG9yeV9pZCwgY2hlY2tfb3c9Cm5lcnNoaXA9M0RGYWxzZSApCiAg
ICAgICAgICAgICAgICAgaGlzdG9yaWVzLmFwcGVuZCggaGlzdG9yeSApCiAgICAgICAgIHVzZXIg
PTNEIHRyYW5zLmdldF91c2VyKCkKICAgICAgICAgZm9yIGhpc3RvcnkgaW4gaGlzdG9yaWVzOgpA
QCAtMTQ3NSw3ICsxNDcwLDcgQEAKICAgICAgICAgcmV0dXJuIHRyYW5zLnJlc3BvbnNlLnNlbmRf
cmVkaXJlY3QoIHVybF9mb3IoICIvIiApICkKPTIwCiAgICAgZGVmIGdldF9pdGVtKCBzZWxmLCB0
cmFucywgaWQgKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X2hpc3RvcnkoIHRyYW5zLCBpZCAp
CisgICAgICAgIHJldHVybiBzZWxmLl9nZXRfaGlzdG9yeSggdHJhbnMsIGlkICkKICAgICAgICAg
I1RPRE86IG92ZXJyaWRlIG9mIGJhc2UgdWkgY29udHJvbGxlcj8KPTIwCiAgICAgZGVmIGhpc3Rv
cnlfZGF0YSggc2VsZiwgdHJhbnMsIGhpc3RvcnkgKToKCmRpZmYgLXIgOThkNGNiNTgxZjYyMDEz
NTlhN2RkMDg0NWFiMmQ4NWIxMWU5ODVkNyAtciAxNDNmMDIyYmFlNjlkOGFhYTA1ZmI5Mz0KOGJl
OTlkMzY0NjY2OTlhNTQgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9wYWdl
LnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvcGFnZS5weQor
KysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL3BhZ2UucHkKQEAgLTMs
NyArMyw3IEBACiBmcm9tIGdhbGF4eSBpbXBvcnQgbWFuYWdlcnMKIGZyb20gZ2FsYXh5LndlYiBp
bXBvcnQgZXJyb3IsIHVybF9mb3IKIGZyb20gZ2FsYXh5Lm1vZGVsLml0ZW1fYXR0cnMgaW1wb3J0
IFVzZXNJdGVtUmF0aW5ncwotZnJvbSBnYWxheHkud2ViLmJhc2UuY29udHJvbGxlciBpbXBvcnQg
QmFzZVVJQ29udHJvbGxlciwgU2hhcmFibGVNaXhpbiwgVXM9CmVzSGlzdG9yeU1peGluLCBVc2Vz
U3RvcmVkV29ya2Zsb3dNaXhpbiwgVXNlc1Zpc3VhbGl6YXRpb25NaXhpbgorZnJvbSBnYWxheHku
d2ViLmJhc2UuY29udHJvbGxlciBpbXBvcnQgQmFzZVVJQ29udHJvbGxlciwgU2hhcmFibGVNaXhp
biwgVXM9CmVzU3RvcmVkV29ya2Zsb3dNaXhpbiwgVXNlc1Zpc3VhbGl6YXRpb25NaXhpbgogZnJv
bSBnYWxheHkud2ViLmZyYW1ld29yay5oZWxwZXJzIGltcG9ydCB0aW1lX2FnbywgZ3JpZHMKIGZy
b20gZ2FsYXh5IGltcG9ydCB1dGlsCiBmcm9tIGdhbGF4eS51dGlsLnNhbml0aXplX2h0bWwgaW1w
b3J0IHNhbml0aXplX2h0bWwsIF9CYXNlSFRNTFByb2Nlc3NvcgpAQCAtMjc2LDcgKzI3Niw3IEBA
CiAgICAgICAgICMgRGVmYXVsdCBiZWhhdmlvcjoKICAgICAgICAgX0Jhc2VIVE1MUHJvY2Vzc29y
LnVua25vd25fZW5kdGFnKCBzZWxmLCB0YWcgKQo9MjAKLWNsYXNzIFBhZ2VDb250cm9sbGVyKCBC
YXNlVUlDb250cm9sbGVyLCBTaGFyYWJsZU1peGluLCBVc2VzSGlzdG9yeU1peGluLAorY2xhc3Mg
UGFnZUNvbnRyb2xsZXIoIEJhc2VVSUNvbnRyb2xsZXIsIFNoYXJhYmxlTWl4aW4sCiAgICAgICAg
ICAgICAgICAgICAgICAgVXNlc1N0b3JlZFdvcmtmbG93TWl4aW4sIFVzZXNWaXN1YWxpemF0aW9u
TWl4aW4sIFVzZT0Kc0l0ZW1SYXRpbmdzICk6Cj0yMAogICAgIF9wYWdlX2xpc3QgPTNEIFBhZ2VM
aXN0R3JpZCgpCkBAIC03MjksNyArNzI5LDggQEAKICAgICAgICAgUmV0dXJucyBodG1sIHN1aXRh
YmxlIGZvciBlbWJlZGRpbmcgaW4gYW5vdGhlciBwYWdlLgogICAgICAgICAiIiIKICAgICAgICAg
I1RPRE86IHNob3VsZCBiZSBtb3ZlZCB0byBoaXN0b3J5IGNvbnRyb2xsZXIgYW5kL29yIGNhbGxl
ZCB2aWEgYWphPQp4IGZyb20gdGhlIHRlbXBsYXRlCi0gICAgICAgIGhpc3RvcnkgPTNEIHNlbGYu
Z2V0X2hpc3RvcnkoIHRyYW5zLCBpZCwgRmFsc2UsIFRydWUgKQorICAgICAgICBkZWNvZGVkX2lk
ID0zRCB0cmFucy5zZWN1cml0eS5kZWNvZGVfaWQoIGlkICkKKyAgICAgICAgaGlzdG9yeSA9M0Qg
c2VsZi5tZ3JzLmhpc3Rvcmllcy5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgZGVjb2RlZF9pPQpk
LCB0cmFucy51c2VyICkKICAgICAgICAgaWYgbm90IGhpc3Rvcnk6CiAgICAgICAgICAgICByZXR1
cm4gTm9uZQo9MjAKQEAgLTczOCwxNyArNzM5LDEzIEBACiAgICAgICAgIHVzZXJfaXNfb3duZXIg
PTNEIHRyYW5zLnVzZXIgPTNEPTNEIGhpc3RvcnkudXNlcgogICAgICAgICBoaXN0b3J5LmFubm90
YXRpb24gPTNEIHNlbGYuZ2V0X2l0ZW1fYW5ub3RhdGlvbl9zdHIoIHRyYW5zLnNhX3Nlc3M9Cmlv
biwgaGlzdG9yeS51c2VyLCBoaXN0b3J5ICkKPTIwCi0gICAgICAgIGhkYV9kaWN0cyA9M0QgW10K
LSAgICAgICAgZGF0YXNldHMgPTNEIHNlbGYuZ2V0X2hpc3RvcnlfZGF0YXNldHMoIHRyYW5zLCBo
aXN0b3J5ICkKLQogICAgICAgICAjIGluY2x1ZGUgYWxsIGRhdGFzZXRzOiBoaWRkZW4sIGRlbGV0
ZWQsIGFuZCBwdXJnZWQKLSAgICAgICAgI1RPRE8hOiBkb3VibGVkIHF1ZXJ5IChoZGFfZGljdGlv
bmFyaWVzICsgZGF0YXNldHMpCiAgICAgICAgIGhpc3RvcnlfZGF0YSA9M0Qgc2VsZi5tZ3JzLmhp
c3Rvcmllcy5fZ2V0X2hpc3RvcnlfZGF0YSggdHJhbnMsIGhpcz0KdG9yeSApCiAgICAgICAgIGhp
c3RvcnlfZGljdGlvbmFyeSA9M0QgaGlzdG9yeV9kYXRhWyAnaGlzdG9yeScgXQogICAgICAgICBo
ZGFfZGljdGlvbmFyaWVzICAgPTNEIGhpc3RvcnlfZGF0YVsgJ2NvbnRlbnRzJyBdCiAgICAgICAg
IGhpc3RvcnlfZGljdGlvbmFyeVsgJ2Fubm90YXRpb24nIF0gPTNEIGhpc3RvcnkuYW5ub3RhdGlv
bgo9MjAKLSAgICAgICAgZmlsbGVkID0zRCB0cmFucy5maWxsX3RlbXBsYXRlKCAiaGlzdG9yeS9l
bWJlZC5tYWtvIiwgaXRlbT0zRGhpc3RvPQpyeSwgaXRlbV9kYXRhPTNEZGF0YXNldHMsCisgICAg
ICAgIGZpbGxlZCA9M0QgdHJhbnMuZmlsbF90ZW1wbGF0ZSggImhpc3RvcnkvZW1iZWQubWFrbyIs
IGl0ZW09M0RoaXN0bz0KcnksCiAgICAgICAgICAgICB1c2VyX2lzX293bmVyPTNEdXNlcl9pc19v
d25lciwgaGlzdG9yeV9kaWN0PTNEaGlzdG9yeV9kaWN0aW9uYT0KcnksIGhkYV9kaWN0cz0zRGhk
YV9kaWN0aW9uYXJpZXMgKQogICAgICAgICByZXR1cm4gZmlsbGVkCj0yMAoKZGlmZiAtciA5OGQ0
Y2I1ODFmNjIwMTM1OWE3ZGQwODQ1YWIyZDg1YjExZTk4NWQ3IC1yIDE0M2YwMjJiYWU2OWQ4YWFh
MDVmYjkzPQo4YmU5OWQzNjQ2NjY5OWE1NCBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRy
b2xsZXJzL3Jvb3QucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVy
cy9yb290LnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvcm9v
dC5weQpAQCAtNyw3ICs3LDcgQEAKPTIwCiBmcm9tIHBhc3RlLmh0dHBleGNlcHRpb25zIGltcG9y
dCBIVFRQTm90Rm91bmQsIEhUVFBCYWRHYXRld2F5Cj0yMAotZnJvbSBnYWxheHkud2ViLmJhc2Uu
Y29udHJvbGxlciBpbXBvcnQgQmFzZVVJQ29udHJvbGxlciwgVXNlc0hpc3RvcnlEYXRhc2U9CnRB
c3NvY2lhdGlvbk1peGluLCBVc2VzSGlzdG9yeU1peGluCitmcm9tIGdhbGF4eS53ZWIuYmFzZS5j
b250cm9sbGVyIGltcG9ydCBCYXNlVUlDb250cm9sbGVyLCBVc2VzSGlzdG9yeURhdGFzZT0KdEFz
c29jaWF0aW9uTWl4aW4KIGZyb20gZ2FsYXh5IGltcG9ydCBtYW5hZ2Vycwo9MjAKIGZyb20gZ2Fs
YXh5IGltcG9ydCB3ZWIKQEAgLTIwLDcgKzIwLDcgQEAKIGltcG9ydCBsb2dnaW5nCiBsb2cgPTNE
IGxvZ2dpbmcuZ2V0TG9nZ2VyKCBfX25hbWVfXyApCj0yMAotY2xhc3MgUm9vdENvbnRyb2xsZXIo
IEJhc2VVSUNvbnRyb2xsZXIsIFVzZXNIaXN0b3J5TWl4aW4sIFVzZXNIaXN0b3J5RGF0YXM9CmV0
QXNzb2NpYXRpb25NaXhpbiwgVXNlc0Fubm90YXRpb25zICk6CitjbGFzcyBSb290Q29udHJvbGxl
ciggQmFzZVVJQ29udHJvbGxlciwgVXNlc0hpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb25NaXhpbj0K
LCBVc2VzQW5ub3RhdGlvbnMgKToKICAgICAiIiIKICAgICBDb250cm9sbGVyIGNsYXNzIHRoYXQg
bWFwcyB0byB0aGUgdXJsIHJvb3Qgb2YgR2FsYXh5IChpLmUuICcvJykuCiAgICAgIiIiCgpkaWZm
IC1yIDk4ZDRjYjU4MWY2MjAxMzU5YTdkZDA4NDVhYjJkODViMTFlOTg1ZDcgLXIgMTQzZjAyMmJh
ZTY5ZDhhYWEwNWZiOTM9CjhiZTk5ZDM2NDY2Njk5YTU0IHRlbXBsYXRlcy90YWdnaW5nX2NvbW1v
bi5tYWtvCi0tLSBhL3RlbXBsYXRlcy90YWdnaW5nX2NvbW1vbi5tYWtvCisrKyBiL3RlbXBsYXRl
cy90YWdnaW5nX2NvbW1vbi5tYWtvCkBAIC0xMDUsNyArMTA1LDcgQEAKICAgICAjIyBCdWlsZCBI
VE1MLgogICAgIDwlPTIwCiAgICAgICAgIGVsdF9pZCA9M0QgaW50ICggZmxvb3IgKCByYW5kb20o
KSptYXhpbnQgKSApPTIwCi0gICAgICAgIGNvbW11bml0eV90YWdzID0zRCB0cmFucy5hcHAudGFn
X2hhbmRsZXIuZ2V0X2NvbW11bml0eV90YWdzKCB0cmFucz0KLCBpdGVtPTNEdGFnZ2VkX2l0ZW0s
IGxpbWl0PTNENSApCisgICAgICAgIGNvbW11bml0eV90YWdzID0zRCB0cmFucy5hcHAudGFnX2hh
bmRsZXIuZ2V0X2NvbW11bml0eV90YWdzKCBpdGVtPQo9M0R0YWdnZWRfaXRlbSwgbGltaXQ9M0Q1
ICkKICAgICAlPgogICAgICR7c2VsZi5yZW5kZXJfdGFnZ2luZ19lbGVtZW50X2h0bWwoZWx0X2lk
PTNEZWx0X2lkLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFn
cz0zRGNvbW11bml0eV90YWdzLCBcCgpkaWZmIC1yIDk4ZDRjYjU4MWY2MjAxMzU5YTdkZDA4NDVh
YjJkODViMTFlOTg1ZDcgLXIgMTQzZjAyMmJhZTY5ZDhhYWEwNWZiOTM9CjhiZTk5ZDM2NDY2Njk5
YTU0IHRlbXBsYXRlcy93ZWJhcHBzL2dhbGF4eS9oaXN0b3J5L2VtYmVkLm1ha28KLS0tIGEvdGVt
cGxhdGVzL3dlYmFwcHMvZ2FsYXh5L2hpc3RvcnkvZW1iZWQubWFrbworKysgYi90ZW1wbGF0ZXMv
d2ViYXBwcy9nYWxheHkvaGlzdG9yeS9lbWJlZC5tYWtvCkBAIC0yMyw3ICsyMyw4IEBACiAgICAg
ICAgICAgICA8L2E+PC9oND4KICAgICAgICAgJWlmIGhhc2F0dHIoIGl0ZW0sICJhbm5vdGF0aW9u
IikgYW5kIGl0ZW0uYW5ub3RhdGlvbjoKLSAgICAgICAgPGRpdiBjbGFzcz0zRCJhbm5vdGF0aW9u
Ij4ke2l0ZW0uYW5ub3RhdGlvbiB8IGh9PC9kaXY+CisgICAgICAgIDwlIHByaW50IHR5cGUoIGl0
ZW0uYW5ub3RhdGlvbiApLCBpdGVtLmFubm90YXRpb24gJT4KKyAgICAgICAgPGRpdiBjbGFzcz0z
RCJhbm5vdGF0aW9uIj4keyBpdGVtLmFubm90YXRpb24gfCBoIH08L2Rpdj4KICAgICAgICAgJWVu
ZGlmCiAgICAgPC9kaXY+PGRpdiBjbGFzcz0zRCdzdW1tYXJ5LWNvbnRlbnQnPgoKZGlmZiAtciA5
OGQ0Y2I1ODFmNjIwMTM1OWE3ZGQwODQ1YWIyZDg1YjExZTk4NWQ3IC1yIDE0M2YwMjJiYWU2OWQ4
YWFhMDVmYjkzPQo4YmU5OWQzNjQ2NjY5OWE1NCB0ZXN0L3VuaXQvbWFuYWdlcnMvdGVzdF9Vc2Vy
TWFuYWdlci5weQotLS0gYS90ZXN0L3VuaXQvbWFuYWdlcnMvdGVzdF9Vc2VyTWFuYWdlci5weQor
KysgYi90ZXN0L3VuaXQvbWFuYWdlcnMvdGVzdF9Vc2VyTWFuYWdlci5weQpAQCAtMTE3LDEyICsx
MTcsMTggQEAKICAgICAgICAgdXNlcjIgPTNEIHNlbGYudXNlcl9tZ3IuY3JlYXRlKCBzZWxmLnRy
YW5zLCAqKnVzZXIyX2RhdGEgKQogICAgICAgICB1c2VyMyA9M0Qgc2VsZi51c2VyX21nci5jcmVh
dGUoIHNlbGYudHJhbnMsICoqdXNlcjNfZGF0YSApCj0yMAotICAgICAgICBzZWxmLmxvZyggInNo
b3VsZCBiZSBhYmxlIHRvIGdlbmVyYXRlIGFuZCByZXRyaWV2ZSBhcGkga2V5cyIgKQorICAgICAg
ICBzZWxmLmxvZyggInNob3VsZCByZXR1cm4gTm9uZSBpZiBubyBBUElLZXkgaGFzIGJlZW4gY3Jl
YXRlZCIgKQorICAgICAgICBub19hcGlfa2V5X3lldCA9M0Qgc2VsZi51c2VyX21nci5hcGlfa2V5
KCBzZWxmLnRyYW5zLCB1c2VyMiApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYudXNl
cl9tZ3IudmFsaWRfYXBpX2tleSggc2VsZi50cmFucywgdXNlcjIgKT0KLmtleSwgTm9uZSApCisK
KyAgICAgICAgc2VsZi5sb2coICJzaG91bGQgYmUgYWJsZSB0byBnZW5lcmF0ZSBhbmQgcmV0cmll
dmUgdmFsaWQgYXBpIGtleSIgKQogICAgICAgICB1c2VyMl9hcGlfa2V5ID0zRCBzZWxmLnVzZXJf
bWdyLmNyZWF0ZV9hcGlfa2V5KCBzZWxmLnRyYW5zLCB1c2VyMiApCi0gICAgICAgICNzZWxmLmFz
c2VydElzSW5zdGFuY2UoIHVzZXIyX2FwaV9rZXksIG1vZGVsLkFQSUtleXMgKQogICAgICAgICBz
ZWxmLmFzc2VydElzSW5zdGFuY2UoIHVzZXIyX2FwaV9rZXksIGJhc2VzdHJpbmcgKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCBzZWxmLnVzZXJfbWdyLmFwaV9rZXkoIHNlbGYudHJhbnMsIHVz
ZXIyICkua2V5LCA9CnVzZXIyX2FwaV9rZXkgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCBz
ZWxmLnVzZXJfbWdyLnZhbGlkX2FwaV9rZXkoIHNlbGYudHJhbnMsIHVzZXIyICk9Ci5rZXksIHVz
ZXIyX2FwaV9rZXkgKQo9MjAKKyAgICAgICAgc2VsZi5sb2coICJzaG91bGQgcmV0dXJuIHRoZSBt
b3N0IHJlY2VudCAoaS5lLiBtb3N0IHZhbGlkKSBhcGkga2V5PQoiICkKKyAgICAgICAgdXNlcjJf
YXBpX2tleV8yID0zRCBzZWxmLnVzZXJfbWdyLmNyZWF0ZV9hcGlfa2V5KCBzZWxmLnRyYW5zLCB1
c2VyPQoyICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCggc2VsZi51c2VyX21nci52YWxpZF9h
cGlfa2V5KCBzZWxmLnRyYW5zLCB1c2VyMiApPQoua2V5LCB1c2VyMl9hcGlfa2V5XzIgKQo9MjAK
PTIwCiAjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9Cj0zRD0zRD0zRAoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNl
bnRyYWwvY29tbWl0cy9hM2E2YzcyOTkzYTcvCkNoYW5nZXNldDogICBhM2E2YzcyOTkzYTcKVXNl
cjogICAgICAgIGNhcmxmZWJlcmhhcmQKRGF0ZTogICAgICAgIDIwMTUtMDEtMDkgMjA6Mzk6MjUr
MDA6MDAKU3VtbWFyeTogICAgIE1lcmdlZCBnYWxheHkvZ2FsYXh5LWNlbnRyYWwgaW50byBkZWZh
dWx0CkFmZmVjdGVkICM6ICAzIGZpbGVzCgpkaWZmIC1yIDE0M2YwMjJiYWU2OWQ4YWFhMDVmYjkz
OGJlOTlkMzY0NjY2OTlhNTQgLXIgYTNhNmM3Mjk5M2E3YTYzYjc0NzM5Y2I9CmI2YTkxYjk5NjUw
MWQxMTM3IGNvbmZpZy9kYXRhdHlwZXNfY29uZi54bWwuc2FtcGxlCi0tLSBhL2NvbmZpZy9kYXRh
dHlwZXNfY29uZi54bWwuc2FtcGxlCisrKyBiL2NvbmZpZy9kYXRhdHlwZXNfY29uZi54bWwuc2Ft
cGxlCkBAIC0xODEsNyArMTgxLDggQEAKICAgICA8ZGF0YXR5cGUgZXh0ZW5zaW9uPTNEInRheG9u
b215IiB0eXBlPTNEImdhbGF4eS5kYXRhdHlwZXMudGFidWxhcjpUYXhvPQpub215IiBkaXNwbGF5
X2luX3VwbG9hZD0zRCJ0cnVlIi8+PGRhdGF0eXBlIGV4dGVuc2lvbj0zRCJ0YWJ1bGFyIiB0eXBl
PTNEImc9CmFsYXh5LmRhdGF0eXBlcy50YWJ1bGFyOlRhYnVsYXIiIGRpc3BsYXlfaW5fdXBsb2Fk
PTNEInRydWUiIGRlc2NyaXB0aW9uPTNEIj0KQW55IGRhdGEgaW4gdGFiIGRlbGltaXRlZCBmb3Jt
YXQgKHRhYnVsYXIpLiIgZGVzY3JpcHRpb25fdXJsPTNEImh0dHBzOi8vd2lrPQppLmdhbGF4eXBy
b2plY3Qub3JnL0xlYXJuL0RhdGF0eXBlcyNUYWJ1bGFyXy4yOHRhYl9kZWxpbWl0ZWQuMjkiLz48
ZGF0YXR5cGU9CiBleHRlbnNpb249M0QidHdvYml0IiB0eXBlPTNEImdhbGF4eS5kYXRhdHlwZXMu
YmluYXJ5OlR3b0JpdCIgbWltZXR5cGU9M0QiYT0KcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iIGRp
c3BsYXlfaW5fdXBsb2FkPTNEInRydWUiLz4KLSAgICA8ZGF0YXR5cGUgZXh0ZW5zaW9uPTNEInNx
bGl0ZSIgdHlwZT0zRCJnYWxheHkuZGF0YXR5cGVzLmJpbmFyeTpTUWxpdGUiPQogbWltZXR5cGU9
M0QiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiBkaXNwbGF5X2luX3VwbG9hZD0zRCJ0cnVlIi8+
ICAgPTIwCisgICAgPGRhdGF0eXBlIGV4dGVuc2lvbj0zRCJzcWxpdGUiIHR5cGU9M0QiZ2FsYXh5
LmRhdGF0eXBlcy5iaW5hcnk6U1FsaXRlIj0KIG1pbWV0eXBlPTNEImFwcGxpY2F0aW9uL29jdGV0
LXN0cmVhbSIgZGlzcGxheV9pbl91cGxvYWQ9M0QidHJ1ZSIvPgorICAgIDxkYXRhdHlwZSBleHRl
bnNpb249M0QiZ2VtaW5pLnNxbGl0ZSIgdHlwZT0zRCJnYWxheHkuZGF0YXR5cGVzLmJpbmFyeTo9
CkdlbWluaVNRTGl0ZSIgbWltZXR5cGU9M0QiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiBkaXNw
bGF5X2luX3VwbG9hZD0zRCJUcj0KdWUiIC8+PGRhdGF0eXBlIGV4dGVuc2lvbj0zRCJ0eHQiIHR5
cGU9M0QiZ2FsYXh5LmRhdGF0eXBlcy5kYXRhOlRleHQiIGRpc3BsPQpheV9pbl91cGxvYWQ9M0Qi
dHJ1ZSIgZGVzY3JpcHRpb249M0QiQW55IHRleHQgZmlsZS4iIGRlc2NyaXB0aW9uX3VybD0zRCJo
dHQ9CnBzOi8vd2lraS5nYWxheHlwcm9qZWN0Lm9yZy9MZWFybi9EYXRhdHlwZXMjUGxhaW5fdGV4
dCIvPjxkYXRhdHlwZSBleHRlbnNpbz0Kbj0zRCJsaW5lY291bnQiIHR5cGU9M0QiZ2FsYXh5LmRh
dGF0eXBlcy5kYXRhOkxpbmVDb3VudCIgZGlzcGxheV9pbl91cGxvYWQ9Cj0zRCJmYWxzZSIvPjxk
YXRhdHlwZSBleHRlbnNpb249M0QibWVtZXhtbCIgdHlwZT0zRCJnYWxheHkuZGF0YXR5cGVzLnht
bDpNRT0KTUVYbWwiIG1pbWV0eXBlPTNEImFwcGxpY2F0aW9uL3htbCIgZGlzcGxheV9pbl91cGxv
YWQ9M0QidHJ1ZSIvPgpAQCAtMjcxLDYgKzI3Miw3IEBACiAgICAgLS0+PHNuaWZmZXIgdHlwZT0z
RCJnYWxheHkuZGF0YXR5cGVzLnRhYnVsYXI6VmNmIi8+PHNuaWZmZXIgdHlwZT0zRCJnYT0KbGF4
eS5kYXRhdHlwZXMuYmluYXJ5OlR3b0JpdCIvPgorICAgIDxzbmlmZmVyIHR5cGU9M0QiZ2FsYXh5
LmRhdGF0eXBlcy5iaW5hcnk6R2VtaW5pU1FMaXRlIi8+PHNuaWZmZXIgdHlwZT0KPTNEImdhbGF4
eS5kYXRhdHlwZXMuYmluYXJ5OlNRbGl0ZSIvPjxzbmlmZmVyIHR5cGU9M0QiZ2FsYXh5LmRhdGF0
eXBlcy5iaW5hPQpyeTpCYW0iLz48c25pZmZlciB0eXBlPTNEImdhbGF4eS5kYXRhdHlwZXMuYmlu
YXJ5OlNmZiIvPgoKZGlmZiAtciAxNDNmMDIyYmFlNjlkOGFhYTA1ZmI5MzhiZTk5ZDM2NDY2Njk5
YTU0IC1yIGEzYTZjNzI5OTNhN2E2M2I3NDczOWNiPQpiNmE5MWI5OTY1MDFkMTEzNyBsaWIvZ2Fs
YXh5L2RhdGF0eXBlcy9iaW5hcnkucHkKLS0tIGEvbGliL2dhbGF4eS9kYXRhdHlwZXMvYmluYXJ5
LnB5CisrKyBiL2xpYi9nYWxheHkvZGF0YXR5cGVzL2JpbmFyeS5weQpAQCAtMjAsNyArMjAsNyBA
QAogZnJvbSBieC5zZXEudHdvYml0IGltcG9ydCBUV09CSVRfTUFHSUNfTlVNQkVSLCBUV09CSVRf
TUFHSUNfTlVNQkVSX1NXQVAsIFQ9CldPQklUX01BR0lDX1NJWkUKPTIwCiBmcm9tIGdhbGF4eS51
dGlsIGltcG9ydCBzcWxpdGUKLWZyb20gZ2FsYXh5LmRhdGF0eXBlcy5tZXRhZGF0YSBpbXBvcnQg
TWV0YWRhdGFFbGVtZW50LExpc3RQYXJhbWV0ZXIsRGljdFBhPQpyYW1ldGVyCitmcm9tIGdhbGF4
eS5kYXRhdHlwZXMubWV0YWRhdGEgaW1wb3J0IE1ldGFkYXRhRWxlbWVudCwgTWV0YWRhdGFQYXJh
bWV0ZXIsID0KTGlzdFBhcmFtZXRlciwgRGljdFBhcmFtZXRlcgogZnJvbSBnYWxheHkuZGF0YXR5
cGVzIGltcG9ydCBtZXRhZGF0YQogaW1wb3J0IGRhdGFwcm92aWRlcnMKPTIwCkBAIC02NDAsOCAr
NjQwLDY2IEBACiAgICAgICAgIHJldHVybiBkYXRhcHJvdmlkZXJzLmRhdGFzZXQuU1FsaXRlRGF0
YURpY3RQcm92aWRlciggZGF0YXNldF9zb3VyYz0KZSwgKipzZXR0aW5ncyApCj0yMAo9MjAKKyNC
aW5hcnkucmVnaXN0ZXJfc25pZmZhYmxlX2JpbmFyeV9mb3JtYXQoInNxbGl0ZSIsICJzcWxpdGUi
LCBTUWxpdGUpCisKKworY2xhc3MgR2VtaW5pU1FMaXRlKCBTUWxpdGUgKToKKyAgICAiIiJDbGFz
cyBkZXNjcmliaW5nIGEgR2VtaW5pIFNxbGl0ZSBkYXRhYmFzZSAiIiIKKyAgICBNZXRhZGF0YUVs
ZW1lbnQoIG5hbWU9M0QiZ2VtaW5pX3ZlcnNpb24iLCBkZWZhdWx0PTNEJzAuMTAuMCcgLCBwYXJh
bT0KPTNETWV0YWRhdGFQYXJhbWV0ZXIsIGRlc2M9M0QiR2VtaW5pIFZlcnNpb24iLD0yMAorICAg
ICAgICAgICAgICAgICAgICAgcmVhZG9ubHk9M0RUcnVlLCB2aXNpYmxlPTNEVHJ1ZSwgbm9fdmFs
dWU9M0QnMC4xMC4wJyApCisgICAgZmlsZV9leHQgPTNEICJnZW1pbmkuc3FsaXRlIgorCisgICAg
ZGVmIHNldF9tZXRhKCBzZWxmLCBkYXRhc2V0LCBvdmVyd3JpdGUgPTNEIFRydWUsICoqa3dkICk6
CisgICAgICAgIHN1cGVyKCBHZW1pbmlTUUxpdGUsIHNlbGYgKS5zZXRfbWV0YSggZGF0YXNldCwg
b3ZlcndyaXRlID0zRCBvdmVydz0Kcml0ZSwgKiprd2QgKQorICAgICAgICB0cnk6CisgICAgICAg
ICAgICBjb25uID0zRCBzcWxpdGUuY29ubmVjdCggZGF0YXNldC5maWxlX25hbWUgKQorICAgICAg
ICAgICAgYyA9M0QgY29ubi5jdXJzb3IoKQorICAgICAgICAgICAgdGFibGVzX3F1ZXJ5ID0zRCAi
U0VMRUNUIHZlcnNpb24gRlJPTSB2ZXJzaW9uIgorICAgICAgICAgICAgcmVzdWx0ID0zRCBjLmV4
ZWN1dGUoIHRhYmxlc19xdWVyeSApLmZldGNoYWxsKCkKKyAgICAgICAgICAgIGZvciB2ZXJzaW9u
LCBpbiByZXN1bHQ6CisgICAgICAgICAgICAgICAgZGF0YXNldC5tZXRhZGF0YS5nZW1pbmlfdmVy
c2lvbiA9M0QgdmVyc2lvbgorICAgICAgICAgICAgIyBUT0RPOiBDYW4vc2hvdWxkIHdlIGRldGVj
dCBldmVuIG1vcmUgYXR0cmlidXRlcywgc3VjaCBhcyB1c2U9CiBvZiBQRUQgZmlsZSwgd2hhdCB3
YXMgaW5wdXQgYW5ub3RhdGlvbiB0eXBlLCBldGMuCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24s
IGU6CisgICAgICAgICAgICBsb2cud2FybiggJyVzLCBzZXRfbWV0YSBFeGNlcHRpb246ICVzJywg
c2VsZiwgZSApCisKKyAgICBkZWYgc25pZmYoIHNlbGYsIGZpbGVuYW1lICk6CisgICAgICAgIGlm
IHN1cGVyKCBHZW1pbmlTUUxpdGUsIHNlbGYgKS5zbmlmZiggZmlsZW5hbWUgKToKKyAgICAgICAg
ICAgIGdlbWluaV90YWJsZV9uYW1lcyA9M0QgWyAiZ2VuZV9kZXRhaWxlZCIsICJnZW5lX3N1bW1h
cnkiLCAicmVzPQpvdXJjZXMiLCAic2FtcGxlX2dlbm90eXBlX2NvdW50cyIsICJzYW1wbGVfZ2Vu
b3R5cGVzIiwgInNhbXBsZXMiLD0yMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ2YXJpYW50X2ltcGFjdHMiLCAidmFyaWFudHMiLCAidmVyc2lvbiI9CiBdCisgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgY29ubiA9M0Qgc3FsaXRlLmNvbm5lY3QoIGZpbGVuYW1l
ICkKKyAgICAgICAgICAgICAgICBjID0zRCBjb25uLmN1cnNvcigpCisgICAgICAgICAgICAgICAg
dGFibGVzX3F1ZXJ5ID0zRCAiU0VMRUNUIG5hbWUgRlJPTSBzcWxpdGVfbWFzdGVyIFdIRVJFIHR5
cD0KZT0zRCd0YWJsZScgT1JERVIgQlkgbmFtZSIKKyAgICAgICAgICAgICAgICByZXN1bHQgPTNE
IGMuZXhlY3V0ZSggdGFibGVzX3F1ZXJ5ICkuZmV0Y2hhbGwoKQorICAgICAgICAgICAgICAgIHJl
c3VsdCA9M0QgbWFwKCBsYW1iZGEgeDogeFswXSwgcmVzdWx0ICkKKyAgICAgICAgICAgICAgICBm
b3IgdGFibGVfbmFtZSBpbiBnZW1pbmlfdGFibGVfbmFtZXM6CisgICAgICAgICAgICAgICAgICAg
IGlmIHRhYmxlX25hbWUgbm90IGluIHJlc3VsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBGYWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBleGNl
cHQgRXhjZXB0aW9uLCBlOgorICAgICAgICAgICAgICAgIGxvZy53YXJuKCAnJXMsIHNuaWZmIEV4
Y2VwdGlvbjogJXMnLCBzZWxmLCBlICkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYg
c2V0X3BlZWsoIHNlbGYsIGRhdGFzZXQsIGlzX211bHRpX2J5dGU9M0RGYWxzZSApOgorICAgICAg
ICBpZiBub3QgZGF0YXNldC5kYXRhc2V0LnB1cmdlZDoKKyAgICAgICAgICAgIGRhdGFzZXQucGVl
ayAgPTNEICJHZW1pbmkgU1FMaXRlIERhdGFiYXNlLCB2ZXJzaW9uICVzIiAlICggZGF0PQphc2V0
Lm1ldGFkYXRhLmdlbWluaV92ZXJzaW9uIG9yICd1bmtub3duJyApCisgICAgICAgICAgICBkYXRh
c2V0LmJsdXJiID0zRCBkYXRhLm5pY2Vfc2l6ZSggZGF0YXNldC5nZXRfc2l6ZSgpICkKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIGRhdGFzZXQucGVlayA9M0QgJ2ZpbGUgZG9lcyBub3QgZXhp
c3QnCisgICAgICAgICAgICBkYXRhc2V0LmJsdXJiID0zRCAnZmlsZSBwdXJnZWQgZnJvbSBkaXNr
JworCisgICAgZGVmIGRpc3BsYXlfcGVlayggc2VsZiwgZGF0YXNldCApOgorICAgICAgICB0cnk6
CisgICAgICAgICAgICByZXR1cm4gZGF0YXNldC5wZWVrCisgICAgICAgIGV4Y2VwdDoKKyAgICAg
ICAgICAgIHJldHVybiAiR2VtaW5pIFNRTGl0ZSBEYXRhYmFzZSwgdmVyc2lvbiAlcyIgJSAoIGRh
dGFzZXQubWV0YWRhPQp0YS5nZW1pbmlfdmVyc2lvbiBvciAndW5rbm93bicgKQorCitCaW5hcnku
cmVnaXN0ZXJfc25pZmZhYmxlX2JpbmFyeV9mb3JtYXQoICJnZW1pbmkuc3FsaXRlIiwgImdlbWlu
aS5zcWxpdGUiLD0KIEdlbWluaVNRTGl0ZSApCisjIEZJWE1FOiBXZSBuZWVkIHRvIHJlZ2lzdGVy
IGdlbWluaS5zcWxpdGUgYmVmb3JlIHNxbGl0ZSwgc2luY2UgcmVnaXN0ZXJfcz0KbmlmZmFibGVf
YmluYXJ5X2Zvcm1hdCBhbmQgaXNfc25pZmZhYmxlX2JpbmFyeSBjYWxsZWQgaW4gdXBsb2FkLnB5
CisjIGlnbm9yZXMgc25pZmYgb3JkZXIgZGVjbGFyZWQgaW4gZGF0YXR5cGVzX2NvbmYueG1sCiBC
aW5hcnkucmVnaXN0ZXJfc25pZmZhYmxlX2JpbmFyeV9mb3JtYXQoInNxbGl0ZSIsICJzcWxpdGUi
LCBTUWxpdGUpCj0yMAorCiBjbGFzcyBYbHN4KEJpbmFyeSk6CiAgICAgIiIiQ2xhc3MgZm9yIEV4
Y2VsIDIwMDcgKHhsc3gpIGZpbGVzIiIiCiAgICAgZmlsZV9leHQ9M0QieGxzeCIKCmRpZmYgLXIg
MTQzZjAyMmJhZTY5ZDhhYWEwNWZiOTM4YmU5OWQzNjQ2NjY5OWE1NCAtciBhM2E2YzcyOTkzYTdh
NjNiNzQ3MzljYj0KYjZhOTFiOTk2NTAxZDExMzcgdG9vbHMvZGF0YV9zb3VyY2UvdXBsb2FkLnB5
Ci0tLSBhL3Rvb2xzL2RhdGFfc291cmNlL3VwbG9hZC5weQorKysgYi90b29scy9kYXRhX3NvdXJj
ZS91cGxvYWQucHkKQEAgLTExMyw2ICsxMTMsOCBAQAogICAgICAgICBleHQgPTNEIHNuaWZmLmd1
ZXNzX2V4dCggZGF0YXNldC5wYXRoLCBpc19tdWx0aV9ieXRlPTNEVHJ1ZSApCiAgICAgIyBJcyBk
YXRhc2V0IGNvbnRlbnQgc3VwcG9ydGVkIHNuaWZmYWJsZSBiaW5hcnk/CiAgICAgZWxzZToKKyAg
ICAgICAgIyBGSVhNRTogVGhpcyBpZ25vcmVzIHRoZSBkZWNsYXJlZCBzbmlmZiBvcmRlciBpbiBk
YXRhdHlwZV9jb25mLnhtbAorICAgICAgICAjIHJlc3VsdGluZyBpbiBpbXByb3BlciBiZWhhdmlv
cgogICAgICAgICB0eXBlX2luZm8gPTNEIEJpbmFyeS5pc19zbmlmZmFibGVfYmluYXJ5KCBkYXRh
c2V0LnBhdGggKQogICAgICAgICBpZiB0eXBlX2luZm86CiAgICAgICAgICAgICBkYXRhX3R5cGUg
PTNEIHR5cGVfaW5mb1swXQoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNl
bnRyYWwvY29tbWl0cy8zOWZiZjFkOTI1MDcvCkNoYW5nZXNldDogICAzOWZiZjFkOTI1MDcKVXNl
cjogICAgICAgIGNhcmxmZWJlcmhhcmQKRGF0ZTogICAgICAgIDIwMTUtMDEtMDkgMjI6Mzk6MjAr
MDA6MDAKU3VtbWFyeTogICAgIFJlbW92ZSBVc2VzSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbk1p
eGluCkFmZmVjdGVkICM6ICAxNyBmaWxlcwoKZGlmZiAtciBhM2E2YzcyOTkzYTdhNjNiNzQ3Mzlj
YmI2YTkxYjk5NjUwMWQxMTM3IC1yIDM5ZmJmMWQ5MjUwNzc5N2YxMDExNDUwPQo4M2VmMzI3Y2Qx
MjcxOGZiOSBsaWIvZ2FsYXh5L21hbmFnZXJzL2RhdGFzZXRzLnB5Ci0tLSBhL2xpYi9nYWxheHkv
bWFuYWdlcnMvZGF0YXNldHMucHkKKysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vycy9kYXRhc2V0cy5w
eQpAQCAtMTg1LDcgKzE4NSw4IEBACj0yMAogICAgICNUT0RPOiBpbXBsZW1lbnQgYWJvdmUgZm9y
IGdyb3VwcwogICAgICNUT0RPOiBkYXRhdHlwZXM/Ci0gICAgI1RPRE86IGRhdGEsIG9iamVjdF9z
dG9yZQorCisgICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLj0KLi4uLi4gZGF0YSwgb2JqZWN0X3N0b3JlCj0yMAo9
MjAKICMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0KPTNEPTNEPTNECgpkaWZmIC1yIGEzYTZjNzI5OTNhN2E2M2I3NDczOWNiYjZhOTFiOTk2
NTAxZDExMzcgLXIgMzlmYmYxZDkyNTA3Nzk3ZjEwMTE0NTA9CjgzZWYzMjdjZDEyNzE4ZmI5IGxp
Yi9nYWxheHkvbWFuYWdlcnMvaGRhcy5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL2hkYXMu
cHkKKysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vycy9oZGFzLnB5CkBAIC01LDEwICs1LDEyIEBACiBo
aXN0b3J5LgogIiIiCj0yMAoraW1wb3J0IG9zCiBpbXBvcnQgZ2V0dGV4dAo9MjAKIGZyb20gZ2Fs
YXh5IGltcG9ydCBtb2RlbAogZnJvbSBnYWxheHkgaW1wb3J0IGV4Y2VwdGlvbnMKK2Zyb20gZ2Fs
YXh5IGltcG9ydCBkYXRhdHlwZXMKPTIwCiBpbXBvcnQgYmFzZQogaW1wb3J0IGhpc3RvcmllcwpA
QCAtMjgsMTIgKzMwLDE1IEBACiAgICAgbW9kZWxfY2xhc3MgPTNEIG1vZGVsLkhpc3RvcnlEYXRh
c2V0QXNzb2NpYXRpb24KICAgICBkZWZhdWx0X29yZGVyX2J5ID0zRCAoIG1vZGVsLkhpc3RvcnlE
YXRhc2V0QXNzb2NpYXRpb24uY3JlYXRlX3RpbWUsICkKPTIwCisgICAgI1RPRE86IHdoaWNoIG9m
IHRoZXNlIGFyZSBjb21tb24gd2l0aCBMRERBcyBhbmQgY2FuIGJlIHB1c2hlZCBkb3duIGludD0K
byBEYXRhc2V0QXNzb2NpYXRpb25NYW5hZ2VyPworCiAgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBh
cHAgKToKICAgICAgICAgIiIiCiAgICAgICAgIFNldCB1cCBhbmQgaW5pdGlhbGl6ZSBvdGhlciBt
YW5hZ2VycyBuZWVkZWQgYnkgaGRhcy4KICAgICAgICAgIiIiCiAgICAgICAgIHN1cGVyKCBIREFN
YW5hZ2VyLCBzZWxmICkuX19pbml0X18oIGFwcCApCj0yMAorICAgICMgLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi49Ci4u
Li4uIHNlY3VyaXR5IGFuZCBwZXJtaXNzaW9ucwogICAgIGRlZiBpc19hY2Nlc3NpYmxlKCBzZWxm
LCB0cmFucywgaGRhLCB1c2VyICk6CiAgICAgICAgICIiIgogICAgICAgICAiIiIKQEAgLTQ4LDYg
KzUzLDcgQEAKICAgICAgICAgI1RPRE86IHRoaXMgbWF5IGJlIHNsb3cgZHVlIHRvIEhpc3RvcnlN
YW5hZ2VyIGluc3RhbnRpYXRpb24gYW5kIHBvPQpzc2libGUgMm5kIHRyYW5zYWN0aW9uIHRvIGdl
dCB0aGUgaGRhLmhpc3RvcnkKICAgICAgICAgcmV0dXJuIGhpc3Rvcmllcy5IaXN0b3J5TWFuYWdl
ciggc2VsZi5hcHAgKS5pc19vd25lciggdHJhbnMsIGhkYS5oPQppc3RvcnksIHVzZXIgKQo9MjAK
KyAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBjcmVhdGUgYW5kIGNvcHkKICAgICBkZWYgY3JlYXRl
KCBzZWxmLCB0cmFucywgaGlzdG9yeT0zRE5vbmUsIGRhdGFzZXQ9M0ROb25lLCBmbHVzaD0zRFRy
dWUsPQogKiprd2FyZ3MgKToKICAgICAgICAgIiIiCiAgICAgICAgIENyZWF0ZSBhIG5ldyBoZGEg
b3B0aW9uYWxseSBwYXNzaW5nIGluIGl0J3MgaGlzdG9yeSBhbmQgZGF0YXNldC4KQEAgLTExNSw2
ICsxMjEsMTMgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBsZGRhLnRvX2hpc3Rvcnlf
ZGF0YXNldF9hc3NvY2lhdGlvbiggaGlzdG9yeSwgYWRkX3RvX2hpc3Rvcj0KeT0zRFRydWUgKQo9
MjAKKyAgICBkZWYgaXNfYV9jb3B5KCBzZWxmLCB0cmFucywgaGRhICk6CisgICAgICAgIHBhc3MK
KworICAgIGRlZiBjb3BpZWRfZnJvbSggc2VsZiwgdHJhbnMsIGhkYSApOgorICAgICAgICBwYXNz
CisKKyAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLgogIyAgICBkZWYgYnlfaGlzdG9yeV9pZCggc2Vs
ZiwgdHJhbnMsIGhpc3RvcnlfaWQsIGZpbHRlcnM9M0ROb25lLCAqKmt3YXJncyA9Cik6CiAjICAg
ICAgICBoaXN0b3J5X2lkX2ZpbHRlciA9M0Qgc2VsZi5tb2RlbF9jbGFzcy5oaXN0b3J5X2lkID0z
RD0zRCBoaXN0b3J5Xz0KaWQKICMgICAgICAgIGZpbHRlcnMgPTNEIHNlbGYuX211bmdlX2ZpbHRl
cnMoIGhpc3RvcnlfaWRfZmlsdGVyLCBmaWx0ZXJzICkKQEAgLTE1Myw2ICsxNjYsMTUgQEAKICAg
ICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuQ29uZmxpY3QoICJQbGVhc2Ugd2FpdCB1bnRpbCB0
aGlzIGRhdGFzZXQgZmluPQppc2hlcyB1cGxvYWRpbmciICkKICAgICAgICAgcmV0dXJuIGhkYQo9
MjAKKyAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBhc3NvY2lhdGVkCisjVE9ETzogaXMgdGhpcyBu
ZWVkZWQ/IENhbid0IHlvdSB1c2UgdGhlIGhkYS5jcmVhdGluZ19qb2IgYXR0cmlidXRlPyBXaGVu
ID0KaXMgdGhpcyBOb25lPworICAgIGRlZiBjcmVhdGluZ19qb2IoIHNlbGYsIHRyYW5zLCBoZGEg
KToKKyAgICAgICAgam9iID0zRCBOb25lCisgICAgICAgIGZvciBqb2Jfb3V0cHV0X2Fzc29jIGlu
IGhkYS5jcmVhdGluZ19qb2JfYXNzb2NpYXRpb25zOgorICAgICAgICAgICAgam9iID0zRCBqb2Jf
b3V0cHV0X2Fzc29jLmpvYgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgcmV0dXJuIGpvYgor
CiAgICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLj0KLi4uLi4gc2VyaWFsaXphdGlvbgogICAgIGRlZiBnZXRfZGlz
cGxheV9hcHBzKCBzZWxmLCB0cmFucywgaGRhICk6CiAgICAgICAgICIiIgpAQCAtMjA4LDYgKzIz
MCwyNyBAQAogICAgICAgICAgICByZXR1cm4gaGRhLmdldF92aXN1YWxpemF0aW9ucygpCiAgICAg
ICAgIHJldHVybiB0cmFucy5hcHAudmlzdWFsaXphdGlvbnNfcmVnaXN0cnkuZ2V0X3Zpc3VhbGl6
YXRpb25zKCB0cmFucz0KLCBoZGEgKQo9MjAKKyAgICAjVE9ETzogdG8gZGF0YSBwcm92aWRlciBv
ciBUZXh0IGRhdGF0eXBlIGRpcmVjdGx5CisgICAgZGVmIHRleHRfZGF0YSggc2VsZiwgZGF0YXNl
dCwgcHJldmlldz0zRFRydWUgKToKKyAgICAgICAgIiIiCisgICAgICAgIEdldCBkYXRhIGZyb20g
dGV4dCBmaWxlLCB0cnVuY2F0aW5nIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgIiIiCisgICAgICAg
IHRydW5jYXRlZCA9M0QgRmFsc2UKKyAgICAgICAgZGF0YXNldF9kYXRhID0zRCBOb25lCisgICAg
ICAgIGlmIG9zLnBhdGguZXhpc3RzKCBkYXRhc2V0LmZpbGVfbmFtZSApOgorICAgICAgICAgICAg
aWYgaXNpbnN0YW5jZSggZGF0YXNldC5kYXRhdHlwZSwgZGF0YXR5cGVzLmRhdGEuVGV4dCApOgor
ICAgICAgICAgICAgICAgIG1heF9wZWVrX3NpemUgPTNEIDEwMDAwMDAgIyAxIE1CCisgICAgICAg
ICAgICAgICAgaWYgcHJldmlldyBhbmQgb3Muc3RhdCggZGF0YXNldC5maWxlX25hbWUgKS5zdF9z
aXplID4gbWF4Xz0KcGVla19zaXplOgorICAgICAgICAgICAgICAgICAgICBkYXRhc2V0X2RhdGEg
PTNEIG9wZW4oIGRhdGFzZXQuZmlsZV9uYW1lICkucmVhZCggbWF4X3A9CmVla19zaXplICkKKyAg
ICAgICAgICAgICAgICAgICAgdHJ1bmNhdGVkID0zRCBUcnVlCisgICAgICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICAgICAgZGF0YXNldF9kYXRhID0zRCBvcGVuKCBkYXRhc2V0LmZp
bGVfbmFtZSApLnJlYWQoIG1heF9wPQplZWtfc2l6ZSApCisgICAgICAgICAgICAgICAgICAgIHRy
dW5jYXRlZCA9M0QgRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBG
b3Igbm93LCBjYW5ub3QgZ2V0IGRhdGEgZnJvbSBub24tdGV4dCBkYXRhc2V0cy4KKyAgICAgICAg
ICAgICAgICBkYXRhc2V0X2RhdGEgPTNEIE5vbmUKKyAgICAgICAgcmV0dXJuIHRydW5jYXRlZCwg
ZGF0YXNldF9kYXRhCisKICAgICAjZGVmIGdldF9kYXRhc2V0KCBzZWxmLCB0cmFucywgZGF0YXNl
dF9pZCwgY2hlY2tfb3duZXJzaGlwPTNEVHJ1ZSwgY2hlPQpja19hY2Nlc3NpYmxlPTNERmFsc2Us
IGNoZWNrX3N0YXRlPTNEVHJ1ZSApOgogICAgICMgICAgIiIiCiAgICAgIyAgICBHZXQgYW4gSERB
IG9iamVjdCBieSBpZCBwZXJmb3JtaW5nIHNlY3VyaXR5IGNoZWNrcyB1c2luZwpAQCAtMjQ2LDYw
ICsyODksMzggQEAKICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICArICJiZWZvcmUgYXR0ZW1wdGluZyB0PQpvIHZpZXcgaXQuIiApCiAgICAgIyAgICBy
ZXR1cm4gZGF0YQo9MjAKLSAgICAjZGVmIGdldF9kYXRhKCBzZWxmLCBkYXRhc2V0LCBwcmV2aWV3
PTNEVHJ1ZSApOgotICAgICMgICAgIiIiCi0gICAgIyAgICBHZXRzIGEgZGF0YXNldCdzIGRhdGEu
Ci0gICAgIyAgICAiIiIKLSAgICAjICAgICMgR2V0IGRhdGEgZnJvbSBmaWxlLCB0cnVuY2F0aW5n
IGlmIG5lY2Vzc2FyeS4KLSAgICAjICAgIHRydW5jYXRlZCA9M0QgRmFsc2UKLSAgICAjICAgIGRh
dGFzZXRfZGF0YSA9M0QgTm9uZQotICAgICMgICAgaWYgb3MucGF0aC5leGlzdHMoIGRhdGFzZXQu
ZmlsZV9uYW1lICk6Ci0gICAgIyAgICAgICAgaWYgaXNpbnN0YW5jZSggZGF0YXNldC5kYXRhdHlw
ZSwgVGV4dCApOgotICAgICMgICAgICAgICAgICBtYXhfcGVla19zaXplID0zRCAxMDAwMDAwICMg
MSBNQgotICAgICMgICAgICAgICAgICBpZiBwcmV2aWV3IGFuZCBvcy5zdGF0KCBkYXRhc2V0LmZp
bGVfbmFtZSApLnN0X3NpemUgPiBtYXg9Cl9wZWVrX3NpemU6Ci0gICAgIyAgICAgICAgICAgICAg
ICBkYXRhc2V0X2RhdGEgPTNEIG9wZW4oIGRhdGFzZXQuZmlsZV9uYW1lICkucmVhZChtYXhfcD0K
ZWVrX3NpemUpCi0gICAgIyAgICAgICAgICAgICAgICB0cnVuY2F0ZWQgPTNEIFRydWUKLSAgICAj
ICAgICAgICAgICAgZWxzZToKLSAgICAjICAgICAgICAgICAgICAgIGRhdGFzZXRfZGF0YSA9M0Qg
b3BlbiggZGF0YXNldC5maWxlX25hbWUgKS5yZWFkKG1heF9wPQplZWtfc2l6ZSkKLSAgICAjICAg
ICAgICAgICAgICAgIHRydW5jYXRlZCA9M0QgRmFsc2UKLSAgICAjICAgICAgICBlbHNlOgotICAg
ICMgICAgICAgICAgICAjIEZvciBub3csIGNhbm5vdCBnZXQgZGF0YSBmcm9tIG5vbi10ZXh0IGRh
dGFzZXRzLgotICAgICMgICAgICAgICAgICBkYXRhc2V0X2RhdGEgPTNEIE5vbmUKLSAgICAjICAg
IHJldHVybiB0cnVuY2F0ZWQsIGRhdGFzZXRfZGF0YQotICAgICMKLSAgICAjZGVmIGNoZWNrX2Rh
dGFzZXRfc3RhdGUoIHNlbGYsIHRyYW5zLCBkYXRhc2V0ICk6Ci0gICAgIyAgICAiIiIKLSAgICAj
ICAgIFJldHVybnMgYSBtZXNzYWdlIGlmIGRhdGFzZXQgaXMgbm90IHJlYWR5IHRvIGJlIHVzZWQg
aW4gdmlzdWFsaXphPQp0aW9uLgotICAgICMgICAgIiIiCi0gICAgIyAgICBpZiBub3QgZGF0YXNl
dDoKLSAgICAjICAgICAgICByZXR1cm4gZGF0YXNldC5jb252ZXJzaW9uX21lc3NhZ2VzLk5PX0RB
VEEKLSAgICAjICAgIGlmIGRhdGFzZXQuc3RhdGUgPTNEPTNEIHRyYW5zLmFwcC5tb2RlbC5Kb2Iu
c3RhdGVzLkVSUk9SOgotICAgICMgICAgICAgIHJldHVybiBkYXRhc2V0LmNvbnZlcnNpb25fbWVz
c2FnZXMuRVJST1IKLSAgICAjICAgIGlmIGRhdGFzZXQuc3RhdGUgIT0zRCB0cmFucy5hcHAubW9k
ZWwuSm9iLnN0YXRlcy5PSzoKLSAgICAjICAgICAgICByZXR1cm4gZGF0YXNldC5jb252ZXJzaW9u
X21lc3NhZ2VzLlBFTkRJTkcKLSAgICAjICAgIHJldHVybiBOb25lCisgICAgIyB0aGlzIGlzIGEg
d2VpcmQgc3ludGF4IGFuZCByZXR1cm4gdmFsCisgICAgZGVmIGRhdGFfY29udmVyc2lvbl9zdGF0
dXMoIHNlbGYsIHRyYW5zLCBoZGEgKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgYSBt
ZXNzYWdlIGlmIGRhdGFzZXQgaXMgbm90IHJlYWR5IHRvIGJlIHVzZWQgaW4gdmlzdWFsaXphdD0K
aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IGhkYToKKyAgICAgICAgICAgIHJldHVy
biBoZGEuY29udmVyc2lvbl9tZXNzYWdlcy5OT19EQVRBCisgICAgICAgIGlmIGhkYS5zdGF0ZSA9
M0Q9M0QgdHJhbnMuYXBwLm1vZGVsLkpvYi5zdGF0ZXMuRVJST1I6CisgICAgICAgICAgICByZXR1
cm4gaGRhLmNvbnZlcnNpb25fbWVzc2FnZXMuRVJST1IKKyAgICAgICAgaWYgaGRhLnN0YXRlICE9
M0QgdHJhbnMuYXBwLm1vZGVsLkpvYi5zdGF0ZXMuT0s6CisgICAgICAgICAgICByZXR1cm4gaGRh
LmNvbnZlcnNpb25fbWVzc2FnZXMuUEVORElORworICAgICAgICByZXR1cm4gTm9uZQo9MjAKLQot
ICAgICNkZWYgZ2V0X2hkYV9qb2IoIHNlbGYsIGhkYSApOgotICAgICMgICAgIyBHZXQgZGF0YXNl
dCdzIGpvYi4KLSAgICAjICAgIGpvYiA9M0QgTm9uZQotICAgICMgICAgZm9yIGpvYl9vdXRwdXRf
YXNzb2MgaW4gaGRhLmNyZWF0aW5nX2pvYl9hc3NvY2lhdGlvbnM6Ci0gICAgIyAgICAgICAgam9i
ID0zRCBqb2Jfb3V0cHV0X2Fzc29jLmpvYgotICAgICMgICAgICAgIGJyZWFrCi0gICAgIyAgICBy
ZXR1cm4gam9iCi0KLSAgICAjZGVmIHN0b3BfaGRhX2NyZWF0aW5nX2pvYiggc2VsZiwgaGRhICk6
Ci0gICAgIyAgICAiIiIKLSAgICAjICAgIFN0b3BzIGFuIEhEQSdzIGNyZWF0aW5nIGpvYiBpZiBh
bGwgdGhlIGpvYidzIG90aGVyIG91dHB1dHMgYXJlIGRlPQpsZXRlZC4KLSAgICAjICAgICIiIgot
ICAgICMgICAgaWYgaGRhLnBhcmVudF9pZCBpcyBOb25lIGFuZCBsZW4oIGhkYS5jcmVhdGluZ19q
b2JfYXNzb2NpYXRpb25zICk9CiA+IDA6Ci0gICAgIyAgICAgICAgIyBNYXJrIGFzc29jaWF0ZWQg
am9iIGZvciBkZWxldGlvbgotICAgICMgICAgICAgIGpvYiA9M0QgaGRhLmNyZWF0aW5nX2pvYl9h
c3NvY2lhdGlvbnNbMF0uam9iCi0gICAgIyAgICAgICAgaWYgam9iLnN0YXRlIGluIFsgc2VsZi5h
cHAubW9kZWwuSm9iLnN0YXRlcy5RVUVVRUQsIHNlbGYuYXBwLj0KbW9kZWwuSm9iLnN0YXRlcy5S
VU5OSU5HLCBzZWxmLmFwcC5tb2RlbC5Kb2Iuc3RhdGVzLk5FVyBdOgotICAgICMgICAgICAgICAg
ICAjIEFyZSAqYWxsKiBvZiB0aGUgam9iJ3Mgb3RoZXIgb3V0cHV0IGRhdGFzZXRzIGRlbGV0ZWQ/
Ci0gICAgIyAgICAgICAgICAgIGlmIGpvYi5jaGVja19pZl9vdXRwdXRfZGF0YXNldHNfZGVsZXRl
ZCgpOgotICAgICMgICAgICAgICAgICAgICAgam9iLm1hcmtfZGVsZXRlZCggc2VsZi5hcHAuY29u
ZmlnLnRyYWNrX2pvYnNfaW5fZGF0YWI9CmFzZSApCi0gICAgIyAgICAgICAgICAgICAgICBzZWxm
LmFwcC5qb2JfbWFuYWdlci5qb2Jfc3RvcF9xdWV1ZS5wdXQoIGpvYi5pZCApCisgICAgZGVmIHN0
b3BfY3JlYXRpbmdfam9iKCBzZWxmLCBoZGEgKToKKyAgICAgICAgIiIiCisgICAgICAgIFN0b3Bz
IGFuIEhEQSdzIGNyZWF0aW5nIGpvYiBpZiBhbGwgdGhlIGpvYidzIG90aGVyIG91dHB1dHMgYXJl
IGRlbD0KZXRlZC4KKyAgICAgICAgIiIiCisgICAgICAgIFJVTk5JTkdfU1RBVEVTID0zRCAoCisg
ICAgICAgICAgICBzZWxmLmFwcC5tb2RlbC5Kb2Iuc3RhdGVzLlFVRVVFRCwKKyAgICAgICAgICAg
IHNlbGYuYXBwLm1vZGVsLkpvYi5zdGF0ZXMuUlVOTklORywKKyAgICAgICAgICAgIHNlbGYuYXBw
Lm1vZGVsLkpvYi5zdGF0ZXMuTkVXCisgICAgICAgICkKKyAgICAgICAgaWYgaGRhLnBhcmVudF9p
ZCBpcyBOb25lIGFuZCBsZW4oIGhkYS5jcmVhdGluZ19qb2JfYXNzb2NpYXRpb25zICkgPQo+IDA6
CisgICAgICAgICAgICAjIE1hcmsgYXNzb2NpYXRlZCBqb2IgZm9yIGRlbGV0aW9uCisgICAgICAg
ICAgICBqb2IgPTNEIGhkYS5jcmVhdGluZ19qb2JfYXNzb2NpYXRpb25zWzBdLmpvYgorICAgICAg
ICAgICAgaWYgam9iLnN0YXRlIGluIFJVTk5JTkdfU1RBVEVTOgorICAgICAgICAgICAgICAgICMg
QXJlICphbGwqIG9mIHRoZSBqb2IncyBvdGhlciBvdXRwdXQgZGF0YXNldHMgZGVsZXRlZD8KKyAg
ICAgICAgICAgICAgICBpZiBqb2IuY2hlY2tfaWZfb3V0cHV0X2RhdGFzZXRzX2RlbGV0ZWQoKToK
KyAgICAgICAgICAgICAgICAgICAgam9iLm1hcmtfZGVsZXRlZCggc2VsZi5hcHAuY29uZmlnLnRy
YWNrX2pvYnNfaW5fZGF0YWJhPQpzZSApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXBwLmpv
Yl9tYW5hZ2VyLmpvYl9zdG9wX3F1ZXVlLnB1dCggam9iLmlkICkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCj0yMAogIyA9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKIGNs
YXNzIEhEQVNlcmlhbGl6ZXIoIGJhc2UuTW9kZWxTZXJpYWxpemVyICk6CgpkaWZmIC1yIGEzYTZj
NzI5OTNhN2E2M2I3NDczOWNiYjZhOTFiOTk2NTAxZDExMzcgLXIgMzlmYmYxZDkyNTA3Nzk3ZjEw
MTE0NTA9CjgzZWYzMjdjZDEyNzE4ZmI5IGxpYi9nYWxheHkvbWFuYWdlcnMvaGlzdG9yaWVzLnB5
Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvaGlzdG9yaWVzLnB5CisrKyBiL2xpYi9nYWxheHkv
bWFuYWdlcnMvaGlzdG9yaWVzLnB5CkBAIC0yNCw2ICsyNCw3IEBACiBjbGFzcyBIaXN0b3J5TWFu
YWdlciggc2hhcmFibGUuU2hhcmFibGVNb2RlbE1hbmFnZXIsIGJhc2UuUHVyZ2FibGVNb2RlbElu
dD0KZXJmYWNlICk6CiAgICAgIiIiCiAgICAgIiIiCisKICAgICBtb2RlbF9jbGFzcyA9M0QgbW9k
ZWwuSGlzdG9yeQogICAgIGRlZmF1bHRfb3JkZXJfYnkgPTNEICggbW9kZWwuSGlzdG9yeS5jcmVh
dGVfdGltZSwgKQogICAgIGZvcmVpZ25fa2V5X25hbWUgPTNEICdoaXN0b3J5JwpAQCAtMzUsMjgg
KzM2LDExIEBACiAgICAgICAgIHN1cGVyKCBIaXN0b3J5TWFuYWdlciwgc2VsZiApLl9faW5pdF9f
KCBhcHAsICphcmdzLCAqKmt3YXJncyApCiAgICAgICAgIHNlbGYuaGRhX21nciA9M0QgaGRhcy5I
REFNYW5hZ2VyKCBhcHAgKQo9MjAKLSAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBjcnVkCiAgICAg
ZGVmIGNvcHkoIHNlbGYsIHRyYW5zLCBoaXN0b3J5LCB1c2VyLCAqKmt3YXJncyApOgogICAgICAg
ICAiIiIKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBoaXN0b3J5LmNvcHkoIHRhcmdldF91
c2VyPTNEdXNlciwgKiprd2FyZ3MgKQo9MjAKLSAgICBkZWYgZ2V0X2N1cnJlbnQoIHNlbGYsIHRy
YW5zICk6Ci0gICAgICAgICIiIgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIHRyYW5zLmdl
dF9oaXN0b3J5KCkKLQotICAgIGRlZiBzZXRfY3VycmVudCggc2VsZiwgdHJhbnMsIGhpc3Rvcnkg
KToKLSAgICAgICAgIiIiCi0gICAgICAgICIiIgotICAgICAgICB0cmFucy5zZXRfaGlzdG9yeSgg
aGlzdG9yeSApCi0gICAgICAgIHJldHVybiBoaXN0b3J5Ci0KLSAgICBkZWYgc2V0X2N1cnJlbnRf
YnlfaWQoIHNlbGYsIHRyYW5zLCBoaXN0b3J5X2lkICk6Ci0gICAgICAgICIiIgotICAgICAgICAi
IiIKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0X2N1cnJlbnQoIHRyYW5zLCBzZWxmLmJ5X2lkKCB0
cmFucywgaGlzdG9yeV9pZCApICkKLQogICAgIGRlZiBtb3N0X3JlY2VudCggc2VsZiwgdHJhbnMs
IHVzZXIsICoqa3dhcmdzICk6CiAgICAgICAgICIiIgogICAgICAgICAiIiIKQEAgLTEwNSw2ICs4
OSwyMyBAQAogICAgICMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi49Ci4uLi4uIGNvbnRlbnRzCiAgICA9MjAKPTIwCisg
ICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLj0KLi4uLi4gY3VycmVudAorICAgIGRlZiBnZXRfY3VycmVudCggc2Vs
ZiwgdHJhbnMgKToKKyAgICAgICAgIiIiCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gdHJh
bnMuZ2V0X2hpc3RvcnkoKQorCisgICAgZGVmIHNldF9jdXJyZW50KCBzZWxmLCB0cmFucywgaGlz
dG9yeSApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCisgICAgICAgIHRyYW5zLnNldF9oaXN0
b3J5KCBoaXN0b3J5ICkKKyAgICAgICAgcmV0dXJuIGhpc3RvcnkKKworICAgIGRlZiBzZXRfY3Vy
cmVudF9ieV9pZCggc2VsZiwgdHJhbnMsIGhpc3RvcnlfaWQgKToKKyAgICAgICAgIiIiCisgICAg
ICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5zZXRfY3VycmVudCggdHJhbnMsIHNlbGYuYnlf
aWQoIHRyYW5zLCBoaXN0b3J5X2lkICkgKQorCiAgICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLj0KLi4uLi4gc2Vy
aWFsaXphdGlvbgogICAgICNUT0RPOiBtb3ZlIHRvIHNlcmlhbGl6ZXIgKGkuZS4gaGlzdG9yeSB3
aXRoIGNvbnRlbnRzIGF0dHIpCiAgICAgZGVmIF9nZXRfaGlzdG9yeV9kYXRhKCBzZWxmLCB0cmFu
cywgaGlzdG9yeSApOgoKZGlmZiAtciBhM2E2YzcyOTkzYTdhNjNiNzQ3MzljYmI2YTkxYjk5NjUw
MWQxMTM3IC1yIDM5ZmJmMWQ5MjUwNzc5N2YxMDExNDUwPQo4M2VmMzI3Y2QxMjcxOGZiOSBsaWIv
Z2FsYXh5L3dlYi9iYXNlL2NvbnRyb2xsZXIucHkKLS0tIGEvbGliL2dhbGF4eS93ZWIvYmFzZS9j
b250cm9sbGVyLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViL2Jhc2UvY29udHJvbGxlci5weQpAQCAt
MzIsNyArMzIsNiBAQAogZnJvbSBnYWxheHkubW9kZWwuaXRlbV9hdHRycyBpbXBvcnQgRGljdGlm
aWFibGUsIFVzZXNBbm5vdGF0aW9ucwo9MjAKIGZyb20gZ2FsYXh5LmRhdGF0eXBlcy5pbnRlcnZh
bCBpbXBvcnQgQ2hyb21hdGluSW50ZXJhY3Rpb25zCi1mcm9tIGdhbGF4eS5kYXRhdHlwZXMuZGF0
YSBpbXBvcnQgVGV4dAo9MjAKIGZyb20gZ2FsYXh5Lm1vZGVsIGltcG9ydCBFeHRlbmRlZE1ldGFk
YXRhLCBFeHRlbmRlZE1ldGFkYXRhSW5kZXgsIExpYnJhcnlEPQphdGFzZXREYXRhc2V0QXNzb2Np
YXRpb24sIEhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb24KPTIwCkBAIC0yNzgsMTE3ICsyNzcsNiBA
QAogICAgICAgICBoaXN0b3J5X2ltcF90b29sLmV4ZWN1dGUoIHRyYW5zLCBpbmNvbWluZz0zRGlu
Y29taW5nICkKPTIwCj0yMAotY2xhc3MgVXNlc0hpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb25NaXhp
bjoKLSAgICAiIiIKLSAgICBNaXhpbiBmb3IgY29udHJvbGxlcnMgdGhhdCB1c2UgSGlzdG9yeURh
dGFzZXRBc3NvY2lhdGlvbiBvYmplY3RzLgotICAgICIiIgotCi0gICAgZGVmIGdldF9kYXRhc2V0
KCBzZWxmLCB0cmFucywgZGF0YXNldF9pZCwgY2hlY2tfb3duZXJzaGlwPTNEVHJ1ZSwgY2hlYz0K
a19hY2Nlc3NpYmxlPTNERmFsc2UsIGNoZWNrX3N0YXRlPTNEVHJ1ZSApOgotICAgICAgICAiIiIK
LSAgICAgICAgR2V0IGFuIEhEQSBvYmplY3QgYnkgaWQgcGVyZm9ybWluZyBzZWN1cml0eSBjaGVj
a3MgdXNpbmcKLSAgICAgICAgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24uCi0gICAgICAgICIiIgot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkYXRhc2V0X2lkID0zRCB0cmFucy5zZWN1cml0eS5k
ZWNvZGVfaWQoIGRhdGFzZXRfaWQgKQotICAgICAgICBleGNlcHQgKCBBdHRyaWJ1dGVFcnJvciwg
VHlwZUVycm9yICk6Ci0gICAgICAgICAgICAjIERFUFJFQ0FUSU9OOiBXZSBzdGlsbCBzdXBwb3J0
IHVuZW5jb2RlZCBpZHMgZm9yIGJhY2t3YXJkIGNvbT0KcGF0aWJpbGl0eQotICAgICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgICAgIGRhdGFzZXRfaWQgPTNEIGludCggZGF0YXNldF9pZCApCi0g
ICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBIVFRQ
QmFkUmVxdWVzdCggIkludmFsaWQgZGF0YXNldCBpZDogJXMuIiAlIHN0ciggZGF0PQphc2V0X2lk
ICkgKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGRhdGEgPTNEIHRyYW5zLnNhX3Nlc3Np
b24ucXVlcnkoIHRyYW5zLmFwcC5tb2RlbC5IaXN0b3J5RGF0YXNlPQp0QXNzb2NpYXRpb24gKS5n
ZXQoIGludCggZGF0YXNldF9pZCApICkKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgcmFp
c2UgSFRUUFJlcXVlc3RSYW5nZU5vdFNhdGlzZmlhYmxlKCAiSW52YWxpZCBkYXRhc2V0IGlkOiAl
cy49CiIgJSBzdHIoIGRhdGFzZXRfaWQgKSApCi0KLSAgICAgICAgaWYgY2hlY2tfb3duZXJzaGlw
OgotICAgICAgICAgICAgIyBWZXJpZnkgb3duZXJzaGlwLgotICAgICAgICAgICAgdXNlciA9M0Qg
dHJhbnMuZ2V0X3VzZXIoKQotICAgICAgICAgICAgaWYgbm90IHVzZXI6Ci0gICAgICAgICAgICAg
ICAgZXJyb3IoICJNdXN0IGJlIGxvZ2dlZCBpbiB0byBtYW5hZ2UgR2FsYXh5IGl0ZW1zIiApCi0g
ICAgICAgICAgICBpZiBkYXRhLmhpc3RvcnkudXNlciAhPTNEIHVzZXI6Ci0gICAgICAgICAgICAg
ICAgZXJyb3IoICIlcyBpcyBub3Qgb3duZWQgYnkgY3VycmVudCB1c2VyIiAlIGRhdGEuX19jbGFz
c19fLj0KX19uYW1lX18gKQotCi0gICAgICAgIGlmIGNoZWNrX2FjY2Vzc2libGU6Ci0gICAgICAg
ICAgICBjdXJyZW50X3VzZXJfcm9sZXMgPTNEIHRyYW5zLmdldF9jdXJyZW50X3VzZXJfcm9sZXMo
KQotCi0gICAgICAgICAgICBpZiBub3QgdHJhbnMuYXBwLnNlY3VyaXR5X2FnZW50LmNhbl9hY2Nl
c3NfZGF0YXNldCggY3VycmVudF91cz0KZXJfcm9sZXMsIGRhdGEuZGF0YXNldCApOgotICAgICAg
ICAgICAgICAgIGVycm9yKCAiWW91IGFyZSBub3QgYWxsb3dlZCB0byBhY2Nlc3MgdGhpcyBkYXRh
c2V0IiApCi0KLSAgICAgICAgICAgIGlmIGNoZWNrX3N0YXRlIGFuZCBkYXRhLnN0YXRlID0zRD0z
RCB0cmFucy5tb2RlbC5EYXRhc2V0LnN0YXRlPQpzLlVQTE9BRDoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJhbnMuc2hvd19lcnJvcl9tZXNzYWdlKCAiUGxlYXNlIHdhaXQgdW50aWwgdGhpcyBk
PQphdGFzZXQgZmluaXNoZXMgdXBsb2FkaW5nICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICsgImJlZm9yZSBhdHRlbXB0aW5nIHRvPQogdmlldyBp
dC4iICkKLSAgICAgICAgcmV0dXJuIGRhdGEKLQotICAgIGRlZiBnZXRfZGF0YSggc2VsZiwgZGF0
YXNldCwgcHJldmlldz0zRFRydWUgKToKLSAgICAgICAgIiIiCi0gICAgICAgIEdldHMgYSBkYXRh
c2V0J3MgZGF0YS4KLSAgICAgICAgIiIiCi0gICAgICAgICMgR2V0IGRhdGEgZnJvbSBmaWxlLCB0
cnVuY2F0aW5nIGlmIG5lY2Vzc2FyeS4KLSAgICAgICAgdHJ1bmNhdGVkID0zRCBGYWxzZQotICAg
ICAgICBkYXRhc2V0X2RhdGEgPTNEIE5vbmUKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoIGRh
dGFzZXQuZmlsZV9uYW1lICk6Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKCBkYXRhc2V0LmRh
dGF0eXBlLCBUZXh0ICk6Ci0gICAgICAgICAgICAgICAgbWF4X3BlZWtfc2l6ZSA9M0QgMTAwMDAw
MCAjIDEgTUIKLSAgICAgICAgICAgICAgICBpZiBwcmV2aWV3IGFuZCBvcy5zdGF0KCBkYXRhc2V0
LmZpbGVfbmFtZSApLnN0X3NpemUgPiBtYXhfPQpwZWVrX3NpemU6Ci0gICAgICAgICAgICAgICAg
ICAgIGRhdGFzZXRfZGF0YSA9M0Qgb3BlbiggZGF0YXNldC5maWxlX25hbWUgKS5yZWFkKG1heF9w
ZT0KZWtfc2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgdHJ1bmNhdGVkID0zRCBUcnVlCi0gICAg
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZGF0YXNldF9kYXRhID0zRCBv
cGVuKCBkYXRhc2V0LmZpbGVfbmFtZSApLnJlYWQobWF4X3BlPQpla19zaXplKQotICAgICAgICAg
ICAgICAgICAgICB0cnVuY2F0ZWQgPTNEIEZhbHNlCi0gICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgICMgRm9yIG5vdywgY2Fubm90IGdldCBkYXRhIGZyb20gbm9uLXRleHQgZGF0YXNl
dHMuCi0gICAgICAgICAgICAgICAgZGF0YXNldF9kYXRhID0zRCBOb25lCi0gICAgICAgIHJldHVy
biB0cnVuY2F0ZWQsIGRhdGFzZXRfZGF0YQotI2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29u
dHJvbGxlcnMvZGF0YXNldC5weTo1NjY6ICAgICAgICAgICAgdHJ1bmNhdGU9CmQsIGRhdGFzZXRf
ZGF0YSA9M0Qgc2VsZi5nZXRfZGF0YSggZGF0YXNldCwgcHJldmlldyApCi0jbGliL2dhbGF4eS93
ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9kYXRhc2V0LnB5OjYwNDogICAgICAgIHRydW5jYXRl
ZCwgZD0KYXRhc2V0X2RhdGEgPTNEIHNlbGYuZ2V0X2RhdGEoIGRhdGFzZXQsIHByZXZpZXc9M0RU
cnVlICkKLSNsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL3BhZ2UucHk6Nzg3
OiAgICAgICAgICAgICAgICBkYXRhID0KPTNEIHNlbGYuZ2V0X2RhdGEoIGRhdGFzZXQgKQotI2xp
Yi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvdmlzdWFsaXphdGlvbi5weToxMDEy
OiAgICAgICAgZGF0YSA9Cj0zRCBwZC5nZXRfZGF0YSggdHJlZV9pbmRleD0zRHRyZWVfaW5kZXgg
KQotCi0gICAgZGVmIGNoZWNrX2RhdGFzZXRfc3RhdGUoIHNlbGYsIHRyYW5zLCBkYXRhc2V0ICk6
Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm5zIGEgbWVzc2FnZSBpZiBkYXRhc2V0IGlzIG5v
dCByZWFkeSB0byBiZSB1c2VkIGluIHZpc3VhbGl6YXQ9Cmlvbi4KLSAgICAgICAgIiIiCi0gICAg
ICAgIGlmIG5vdCBkYXRhc2V0OgotICAgICAgICAgICAgcmV0dXJuIGRhdGFzZXQuY29udmVyc2lv
bl9tZXNzYWdlcy5OT19EQVRBCi0gICAgICAgIGlmIGRhdGFzZXQuc3RhdGUgPTNEPTNEIHRyYW5z
LmFwcC5tb2RlbC5Kb2Iuc3RhdGVzLkVSUk9SOgotICAgICAgICAgICAgcmV0dXJuIGRhdGFzZXQu
Y29udmVyc2lvbl9tZXNzYWdlcy5FUlJPUgotICAgICAgICBpZiBkYXRhc2V0LnN0YXRlICE9M0Qg
dHJhbnMuYXBwLm1vZGVsLkpvYi5zdGF0ZXMuT0s6Ci0gICAgICAgICAgICByZXR1cm4gZGF0YXNl
dC5jb252ZXJzaW9uX21lc3NhZ2VzLlBFTkRJTkcKLSAgICAgICAgcmV0dXJuIE5vbmUKLSNsaWIv
Z2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9kYXRhc2V0cy5weTo4OTogICAgICAgIG1zZyA9M0Qg
c2VsZi5jaGVja19kPQphdGFzZXRfc3RhdGUoIHRyYW5zLCBkYXRhc2V0ICkKLSNsaWIvZ2FsYXh5
L3dlYmFwcHMvZ2FsYXh5L2FwaS9kYXRhc2V0cy5weToxMDA6ICAgICAgICBtc2cgPTNEIHNlbGYu
Y2hlY2tfPQpkYXRhc2V0X3N0YXRlKCB0cmFucywgZGF0YXNldCApCi0jbGliL2dhbGF4eS93ZWJh
cHBzL2dhbGF4eS9hcGkvZGF0YXNldHMucHk6MTQ5OiAgICAgICAgbXNnID0zRCBzZWxmLmNoZWNr
Xz0KZGF0YXNldF9zdGF0ZSggdHJhbnMsIGRhdGFzZXQgKQotI2xpYi9nYWxheHkvd2ViYXBwcy9n
YWxheHkvYXBpL2RhdGFzZXRzLnB5OjI0MjogICAgICAgIG1zZyA9M0Qgc2VsZi5jaGVja189CmRh
dGFzZXRfc3RhdGUoIHRyYW5zLCBkYXRhc2V0ICkKLSNsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5
L2FwaS90b29scy5weToyODc6ICAgICAgICBtc2cgPTNEIHNlbGYuY2hlY2tfZGF0PQphc2V0X3N0
YXRlKCB0cmFucywgb3JpZ2luYWxfZGF0YXNldCApCi0KLSAgICBkZWYgZ2V0X2hkYV9qb2IoIHNl
bGYsIGhkYSApOgotICAgICAgICAjIEdldCBkYXRhc2V0J3Mgam9iLgotICAgICAgICBqb2IgPTNE
IE5vbmUKLSAgICAgICAgZm9yIGpvYl9vdXRwdXRfYXNzb2MgaW4gaGRhLmNyZWF0aW5nX2pvYl9h
c3NvY2lhdGlvbnM6Ci0gICAgICAgICAgICBqb2IgPTNEIGpvYl9vdXRwdXRfYXNzb2Muam9iCi0g
ICAgICAgICAgICBicmVhawotICAgICAgICByZXR1cm4gam9iCi0jbGliL2dhbGF4eS93ZWIvYmFz
ZS9jb250cm9sbGVyLnB5Ojg0NjogICAgICAgIGpvYiA9M0Qgc2VsZi5nZXRfaGRhX2pvYiggaD0K
ZGEgKQotI2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL3Rvb2xzLnB5OjI5NjogICAgICAg
IG9yaWdpbmFsX2pvYiA9M0Qgc2VsZi49CmdldF9oZGFfam9iKCBvcmlnaW5hbF9kYXRhc2V0ICkK
LSNsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL3Zpc3VhbGl6YXRpb24ucHk6
OTc3OiAgICAgICAgICAgIGpvPQpiID0zRCBzZWxmLmdldF9oZGFfam9iKCBkYXRhc2V0ICkKLQot
ICAgIGRlZiBzdG9wX2hkYV9jcmVhdGluZ19qb2IoIHNlbGYsIGhkYSApOgotICAgICAgICAiIiIK
LSAgICAgICAgU3RvcHMgYW4gSERBJ3MgY3JlYXRpbmcgam9iIGlmIGFsbCB0aGUgam9iJ3Mgb3Ro
ZXIgb3V0cHV0cyBhcmUgZGVsPQpldGVkLgotICAgICAgICAiIiIKLSAgICAgICAgaWYgaGRhLnBh
cmVudF9pZCBpcyBOb25lIGFuZCBsZW4oIGhkYS5jcmVhdGluZ19qb2JfYXNzb2NpYXRpb25zICkg
PQo+IDA6Ci0gICAgICAgICAgICAjIE1hcmsgYXNzb2NpYXRlZCBqb2IgZm9yIGRlbGV0aW9uCi0g
ICAgICAgICAgICBqb2IgPTNEIGhkYS5jcmVhdGluZ19qb2JfYXNzb2NpYXRpb25zWzBdLmpvYgot
ICAgICAgICAgICAgaWYgam9iLnN0YXRlIGluIFsgc2VsZi5hcHAubW9kZWwuSm9iLnN0YXRlcy5R
VUVVRUQsIHNlbGYuYXBwLm09Cm9kZWwuSm9iLnN0YXRlcy5SVU5OSU5HLCBzZWxmLmFwcC5tb2Rl
bC5Kb2Iuc3RhdGVzLk5FVyBdOgotICAgICAgICAgICAgICAgICMgQXJlICphbGwqIG9mIHRoZSBq
b2IncyBvdGhlciBvdXRwdXQgZGF0YXNldHMgZGVsZXRlZD8KLSAgICAgICAgICAgICAgICBpZiBq
b2IuY2hlY2tfaWZfb3V0cHV0X2RhdGFzZXRzX2RlbGV0ZWQoKToKLSAgICAgICAgICAgICAgICAg
ICAgam9iLm1hcmtfZGVsZXRlZCggc2VsZi5hcHAuY29uZmlnLnRyYWNrX2pvYnNfaW5fZGF0YWJh
PQpzZSApCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXBwLmpvYl9tYW5hZ2VyLmpvYl9zdG9w
X3F1ZXVlLnB1dCggam9iLmlkICkKLSNsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9oaXN0
b3J5X2NvbnRlbnRzLnB5OjM2NjogICAgICAgICAgICAgICAgc2VsPQpmLnN0b3BfaGRhX2NyZWF0
aW5nX2pvYiggaGRhICkKLSNsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL2Rh
dGFzZXQucHk6NzcyOiAgICAgICAgICAgIHNlbGYuc3RvPQpwX2hkYV9jcmVhdGluZ19qb2IoIGhk
YSApCi0KIGNsYXNzIFVzZXNMaWJyYXJ5TWl4aW46Cj0yMAogICAgIGRlZiBnZXRfbGlicmFyeSgg
c2VsZiwgdHJhbnMsIGlkLCBjaGVja19vd25lcnNoaXA9M0RGYWxzZSwgY2hlY2tfYWNjZXM9CnNp
YmxlPTNEVHJ1ZSApOgpAQCAtNTI3LDcgKzQxNSw3IEBACiAgICAgICAgIHJldHVybiBzZWN1cml0
eV9hZ2VudC5nZXRfcGVybWlzc2lvbnMoIGxkZGEgKQo9MjAKPTIwCi1jbGFzcyBVc2VzVmlzdWFs
aXphdGlvbk1peGluKCBVc2VzSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbk1peGluLCBVc2VzTGli
cj0KYXJ5TWl4aW5JdGVtcyApOgorY2xhc3MgVXNlc1Zpc3VhbGl6YXRpb25NaXhpbiggVXNlc0xp
YnJhcnlNaXhpbkl0ZW1zICk6CiAgICAgIiIiCiAgICAgTWl4aW4gZm9yIGNvbnRyb2xsZXJzIHRo
YXQgdXNlIFZpc3VhbGl6YXRpb24gb2JqZWN0cy4KICAgICAiIiIKQEAgLTgxNiw5ICs3MDQsMTQg
QEAKICAgICBkZWYgZ2V0X3Rvb2xfZGVmKCBzZWxmLCB0cmFucywgaGRhICk6CiAgICAgICAgICIi
IiBSZXR1cm5zIGRlZmluaXRpb24gb2YgYW4gaW50ZXJhY3RpdmUgdG9vbCBmb3IgYW4gSERBLiAi
IiIKPTIwCi0gICAgICAgIGpvYiA9M0Qgc2VsZi5nZXRfaGRhX2pvYiggaGRhICkKKyAgICAgICAg
IyBHZXQgZGF0YXNldCdzIGpvYi4KKyAgICAgICAgam9iID0zRCBOb25lCisgICAgICAgIGZvciBq
b2Jfb3V0cHV0X2Fzc29jIGluIGhkYS5jcmVhdGluZ19qb2JfYXNzb2NpYXRpb25zOgorICAgICAg
ICAgICAgam9iID0zRCBqb2Jfb3V0cHV0X2Fzc29jLmpvYgorICAgICAgICAgICAgYnJlYWsKICAg
ICAgICAgaWYgbm90IGpvYjoKICAgICAgICAgICAgIHJldHVybiBOb25lCisKICAgICAgICAgdG9v
bCA9M0QgdHJhbnMuYXBwLnRvb2xib3guZ2V0X3Rvb2woIGpvYi50b29sX2lkICkKICAgICAgICAg
aWYgbm90IHRvb2w6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQpAQCAtOTU2LDEwICs4NDksNDgg
QEAKICAgICBkZWYgZ2V0X2hkYV9vcl9sZGRhKCBzZWxmLCB0cmFucywgaGRhX2xkZGEsIGRhdGFz
ZXRfaWQgKToKICAgICAgICAgIiIiIFJldHVybnMgZWl0aGVyIEhEQSBvciBMRERBIGZvciBoZGEv
bGRkYSBhbmQgaWQgY29tYmluYXRpb24uICIiIgogICAgICAgICBpZiBoZGFfbGRkYSA9M0Q9M0Qg
ImhkYSI6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfZGF0YXNldCggdHJhbnMsIGRhdGFz
ZXRfaWQsIGNoZWNrX293bmVyc2hpcD0zRD0KRmFsc2UsIGNoZWNrX2FjY2Vzc2libGU9M0RUcnVl
ICkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldF9oZGEoIHRyYW5zLCBkYXRhc2V0X2lkLCBj
aGVja19vd25lcnNoaXA9M0RGYWxzPQplLCBjaGVja19hY2Nlc3NpYmxlPTNEVHJ1ZSApCiAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfbGlicmFyeV9kYXRhc2V0X2Rh
dGFzZXRfYXNzb2NpYXRpb24oIHRyYW5zLCBkYT0KdGFzZXRfaWQgKQo9MjAKKyAgICBkZWYgZ2V0
X2hkYSggc2VsZiwgdHJhbnMsIGRhdGFzZXRfaWQsIGNoZWNrX293bmVyc2hpcD0zRFRydWUsIGNo
ZWNrX2FjPQpjZXNzaWJsZT0zREZhbHNlLCBjaGVja19zdGF0ZT0zRFRydWUgKToKKyAgICAgICAg
IiIiCisgICAgICAgIEdldCBhbiBIREEgb2JqZWN0IGJ5IGlkIHBlcmZvcm1pbmcgc2VjdXJpdHkg
Y2hlY2tzIHVzaW5nCisgICAgICAgIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uLgorICAgICAgICAi
IiIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGF0YXNldF9pZCA9M0QgdHJhbnMuc2VjdXJp
dHkuZGVjb2RlX2lkKCBkYXRhc2V0X2lkICkKKyAgICAgICAgZXhjZXB0ICggQXR0cmlidXRlRXJy
b3IsIFR5cGVFcnJvciApOgorICAgICAgICAgICAgIyBERVBSRUNBVElPTjogV2Ugc3RpbGwgc3Vw
cG9ydCB1bmVuY29kZWQgaWRzIGZvciBiYWNrd2FyZCBjb209CnBhdGliaWxpdHkKKyAgICAgICAg
ICAgIHRyeToKKyAgICAgICAgICAgICAgICBkYXRhc2V0X2lkID0zRCBpbnQoIGRhdGFzZXRfaWQg
KQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcmFpc2Ug
SFRUUEJhZFJlcXVlc3QoICJJbnZhbGlkIGRhdGFzZXQgaWQ6ICVzLiIgJSBzdHIoIGRhdD0KYXNl
dF9pZCApICkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBkYXRhID0zRCB0cmFucy5zYV9z
ZXNzaW9uLnF1ZXJ5KCB0cmFucy5hcHAubW9kZWwuSGlzdG9yeURhdGFzZT0KdEFzc29jaWF0aW9u
ICkuZ2V0KCBpbnQoIGRhdGFzZXRfaWQgKSApCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAg
IHJhaXNlIEhUVFBSZXF1ZXN0UmFuZ2VOb3RTYXRpc2ZpYWJsZSggIkludmFsaWQgZGF0YXNldCBp
ZDogJXMuPQoiICUgc3RyKCBkYXRhc2V0X2lkICkgKQorCisgICAgICAgIGlmIGNoZWNrX293bmVy
c2hpcDoKKyAgICAgICAgICAgICMgVmVyaWZ5IG93bmVyc2hpcC4KKyAgICAgICAgICAgIHVzZXIg
PTNEIHRyYW5zLmdldF91c2VyKCkKKyAgICAgICAgICAgIGlmIG5vdCB1c2VyOgorICAgICAgICAg
ICAgICAgIGVycm9yKCAiTXVzdCBiZSBsb2dnZWQgaW4gdG8gbWFuYWdlIEdhbGF4eSBpdGVtcyIg
KQorICAgICAgICAgICAgaWYgZGF0YS5oaXN0b3J5LnVzZXIgIT0zRCB1c2VyOgorICAgICAgICAg
ICAgICAgIGVycm9yKCAiJXMgaXMgbm90IG93bmVkIGJ5IGN1cnJlbnQgdXNlciIgJSBkYXRhLl9f
Y2xhc3NfXy49Cl9fbmFtZV9fICkKKworICAgICAgICBpZiBjaGVja19hY2Nlc3NpYmxlOgorICAg
ICAgICAgICAgY3VycmVudF91c2VyX3JvbGVzID0zRCB0cmFucy5nZXRfY3VycmVudF91c2VyX3Jv
bGVzKCkKKworICAgICAgICAgICAgaWYgbm90IHRyYW5zLmFwcC5zZWN1cml0eV9hZ2VudC5jYW5f
YWNjZXNzX2RhdGFzZXQoIGN1cnJlbnRfdXM9CmVyX3JvbGVzLCBkYXRhLmRhdGFzZXQgKToKKyAg
ICAgICAgICAgICAgICBlcnJvciggIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gYWNjZXNzIHRoaXMg
ZGF0YXNldCIgKQorCisgICAgICAgICAgICBpZiBjaGVja19zdGF0ZSBhbmQgZGF0YS5zdGF0ZSA9
M0Q9M0QgdHJhbnMubW9kZWwuRGF0YXNldC5zdGF0ZT0Kcy5VUExPQUQ6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHRyYW5zLnNob3dfZXJyb3JfbWVzc2FnZSggIlBsZWFzZSB3YWl0IHVudGlsIHRo
aXMgZD0KYXRhc2V0IGZpbmlzaGVzIHVwbG9hZGluZyAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJiZWZvcmUgYXR0ZW1wdGluZyB0bz0KIHZp
ZXcgaXQuIiApCisgICAgICAgIHJldHVybiBkYXRhCisKICAgICAjIC0tIEhlbHBlciBmdW5jdGlv
bnMgLS0KPTIwCiAgICAgZGVmIF9jcmVhdGVfdmlzdWFsaXphdGlvbiggc2VsZiwgdHJhbnMsIHRp
dGxlLCB0eXBlLCBkYmtleT0zRE5vbmUsIHNsdT0KZz0zRE5vbmUsIGFubm90YXRpb249M0ROb25l
LCBzYXZlPTNEVHJ1ZSApOgoKZGlmZiAtciBhM2E2YzcyOTkzYTdhNjNiNzQ3MzljYmI2YTkxYjk5
NjUwMWQxMTM3IC1yIDM5ZmJmMWQ5MjUwNzc5N2YxMDExNDUwPQo4M2VmMzI3Y2QxMjcxOGZiOSBs
aWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9hbm5vdGF0aW9ucy5weQotLS0gYS9saWIvZ2Fs
YXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9hbm5vdGF0aW9ucy5weQorKysgYi9saWIvZ2FsYXh5L3dl
YmFwcHMvZ2FsYXh5L2FwaS9hbm5vdGF0aW9ucy5weQpAQCAtNSwxNCArNSwxNCBAQAogZnJvbSBn
YWxheHkgaW1wb3J0IHdlYgogZnJvbSBnYWxheHkubW9kZWwuaXRlbV9hdHRycyBpbXBvcnQgVXNl
c0Fubm90YXRpb25zCiBmcm9tIGdhbGF4eS51dGlsLnNhbml0aXplX2h0bWwgaW1wb3J0IHNhbml0
aXplX2h0bWwKLWZyb20gZ2FsYXh5LndlYi5iYXNlLmNvbnRyb2xsZXIgaW1wb3J0IEJhc2VBUElD
b250cm9sbGVyLCBIVFRQTm90SW1wbGVtZW50PQplZCwgVXNlc0hpc3RvcnlEYXRhc2V0QXNzb2Np
YXRpb25NaXhpbiwgVXNlc1N0b3JlZFdvcmtmbG93TWl4aW4KK2Zyb20gZ2FsYXh5LndlYi5iYXNl
LmNvbnRyb2xsZXIgaW1wb3J0IEJhc2VBUElDb250cm9sbGVyLCBIVFRQTm90SW1wbGVtZW50PQpl
ZCwgVXNlc1N0b3JlZFdvcmtmbG93TWl4aW4KPTIwCiBmcm9tIGdhbGF4eSBpbXBvcnQgbWFuYWdl
cnMKPTIwCiBsb2cgPTNEIGxvZ2dpbmcuZ2V0TG9nZ2VyKCBfX25hbWVfXyApCj0yMAo9MjAKLWNs
YXNzIEJhc2VBbm5vdGF0aW9uc0NvbnRyb2xsZXIoIEJhc2VBUElDb250cm9sbGVyLCBVc2VzSGlz
dG9yeURhdGFzZXRBc3NvPQpjaWF0aW9uTWl4aW4sIFVzZXNTdG9yZWRXb3JrZmxvd01peGluLCBV
c2VzQW5ub3RhdGlvbnMgKToKK2NsYXNzIEJhc2VBbm5vdGF0aW9uc0NvbnRyb2xsZXIoIEJhc2VB
UElDb250cm9sbGVyLCBVc2VzU3RvcmVkV29ya2Zsb3dNaXhpPQpuLCBVc2VzQW5ub3RhdGlvbnMg
KToKPTIwCiAgICAgQHdlYi5leHBvc2VfYXBpCiAgICAgZGVmIGluZGV4KCBzZWxmLCB0cmFucywg
Kiprd2QgKToKQEAgLTU5LDcgKzU5LDcgQEAKPTIwCiAgICAgZGVmIF9nZXRfaXRlbV9mcm9tX2lk
KHNlbGYsIHRyYW5zLCBpZHN0cik6CiAgICAgICAgIGRlY29kZWRfaWRzdHIgPTNEIHRyYW5zLnNl
Y3VyaXR5LmRlY29kZV9pZCggaWRzdHIgKQotICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmhpc3Rv
cnlfbWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgZGVjb2RlZF89Cmlkc3RyLCB0cmFu
cy51ZXIgKQorICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdlci5hY2Nlc3Np
YmxlX2J5X2lkKCB0cmFucywgZGVjb2RlZF89Cmlkc3RyLCB0cmFucy51c2VyICkKICAgICAgICAg
cmV0dXJuIGhpc3RvcnkKPTIwCj0yMApAQCAtNjcsOCArNjcsMTQgQEAKICAgICBjb250cm9sbGVy
X25hbWUgPTNEICJoaXN0b3J5X2NvbnRlbnRfYW5ub3RhdGlvbnMiCiAgICAgdGFnZ2VkX2l0ZW1f
aWQgPTNEICJoaXN0b3J5X2NvbnRlbnRfaWQiCj0yMAorICAgIGRlZiBfX2luaXRfXyggc2VsZiwg
YXBwICk6CisgICAgICAgIHN1cGVyKCBIaXN0b3J5Q29udGVudEFubm90YXRpb25zQ29udHJvbGxl
ciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQorICAgICAgICBzZWxmLmhkYV9tYW5hZ2VyID0zRCBt
YW5hZ2Vycy5oZGFzLkhEQU1hbmFnZXIoIGFwcCApCisKICAgICBkZWYgX2dldF9pdGVtX2Zyb21f
aWQoc2VsZiwgdHJhbnMsIGlkc3RyKToKLSAgICAgICAgaGRhID0zRCBzZWxmLmdldF9kYXRhc2V0
KHRyYW5zLCBpZHN0cikKKyAgICAgICAgZGVjb2RlZF9pZHN0ciA9M0QgdHJhbnMuc2VjdXJpdHku
ZGVjb2RlX2lkKCBpZHN0ciApCisgICAgICAgIGhkYSA9M0Qgc2VsZi5oZGFfbWFuYWdlci5hY2Nl
c3NpYmxlX2J5X2lkKCB0cmFucywgZGVjb2RlZF9pZHN0ciwgdD0KcmFucy51c2VyICkKKyAgICAg
ICAgaGRhID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmVycm9yX2lmX3VwbG9hZGluZyggdHJhbnMsIGhk
YSApCiAgICAgICAgIHJldHVybiBoZGEKPTIwCj0yMAoKZGlmZiAtciBhM2E2YzcyOTkzYTdhNjNi
NzQ3MzljYmI2YTkxYjk5NjUwMWQxMTM3IC1yIDM5ZmJmMWQ5MjUwNzc5N2YxMDExNDUwPQo4M2Vm
MzI3Y2QxMjcxOGZiOSBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9kYXRhc2V0cy5weQot
LS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9kYXRhc2V0cy5weQorKysgYi9saWIv
Z2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9kYXRhc2V0cy5weQpAQCAtMTIsMTQgKzEyLDEzIEBA
Cj0yMAogZnJvbSBnYWxheHkud2ViLmJhc2UuY29udHJvbGxlciBpbXBvcnQgQmFzZUFQSUNvbnRy
b2xsZXIKIGZyb20gZ2FsYXh5LndlYi5iYXNlLmNvbnRyb2xsZXIgaW1wb3J0IFVzZXNWaXN1YWxp
emF0aW9uTWl4aW4KLWZyb20gZ2FsYXh5LndlYi5iYXNlLmNvbnRyb2xsZXIgaW1wb3J0IFVzZXNI
aXN0b3J5RGF0YXNldEFzc29jaWF0aW9uTWl4aW4KIGZyb20gZ2FsYXh5IGltcG9ydCBtYW5hZ2Vy
cwo9MjAKIGltcG9ydCBsb2dnaW5nCiBsb2cgPTNEIGxvZ2dpbmcuZ2V0TG9nZ2VyKCBfX25hbWVf
XyApCj0yMAo9MjAKLWNsYXNzIERhdGFzZXRzQ29udHJvbGxlciggQmFzZUFQSUNvbnRyb2xsZXIs
IFVzZXNWaXN1YWxpemF0aW9uTWl4aW4sIFVzZXNIPQppc3RvcnlEYXRhc2V0QXNzb2NpYXRpb25N
aXhpbiApOgorY2xhc3MgRGF0YXNldHNDb250cm9sbGVyKCBCYXNlQVBJQ29udHJvbGxlciwgVXNl
c1Zpc3VhbGl6YXRpb25NaXhpbiApOgo9MjAKICAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCAp
OgogICAgICAgICBzdXBlciggRGF0YXNldHNDb250cm9sbGVyLCBzZWxmICkuX19pbml0X18oIGFw
cCApCkBAIC04NCw3ICs4Myw3IEBACiAgICAgICAgICIiIgogICAgICAgICBSZXR1cm5zIHN0YXRl
IG9mIGRhdGFzZXQuCiAgICAgICAgICIiIgotICAgICAgICBtc2cgPTNEIHNlbGYuY2hlY2tfZGF0
YXNldF9zdGF0ZSggdHJhbnMsIGRhdGFzZXQgKQorICAgICAgICBtc2cgPTNEIHNlbGYubWdycy5o
ZGFzLmRhdGFfY29udmVyc2lvbl9zdGF0dXMoIHRyYW5zLCBkYXRhc2V0ICkKICAgICAgICAgaWYg
bm90IG1zZzoKICAgICAgICAgICAgIG1zZyA9M0QgZGF0YXNldC5jb252ZXJzaW9uX21lc3NhZ2Vz
LkRBVEEKPTIwCkBAIC05NSw3ICs5NCw3IEBACiAgICAgICAgIEluaXQtbGlrZSBtZXRob2QgdGhh
dCByZXR1cm5zIHN0YXRlIG9mIGRhdGFzZXQncyBjb252ZXJ0ZWQgZGF0YXNldD0Kcy4KICAgICAg
ICAgUmV0dXJucyB2YWxpZCBjaHJvbXMgZm9yIHRoYXQgZGF0YXNldCBhcyB3ZWxsLgogICAgICAg
ICAiIiIKLSAgICAgICAgbXNnID0zRCBzZWxmLmNoZWNrX2RhdGFzZXRfc3RhdGUoIHRyYW5zLCBk
YXRhc2V0ICkKKyAgICAgICAgbXNnID0zRCBzZWxmLm1ncnMuaGRhcy5kYXRhX2NvbnZlcnNpb25f
c3RhdHVzKCB0cmFucywgZGF0YXNldCApCiAgICAgICAgIGlmIG1zZzoKICAgICAgICAgICAgIHJl
dHVybiBtc2cKPTIwCkBAIC0xNDQsNyArMTQzLDcgQEAKICAgICAgICAgICAgIHJldHVybiBkYXRh
c2V0LmNvbnZlcnNpb25fbWVzc2FnZXMuTk9fREFUQQo9MjAKICAgICAgICAgIyBEYXRhc2V0IGNo
ZWNrLgotICAgICAgICBtc2cgPTNEIHNlbGYuY2hlY2tfZGF0YXNldF9zdGF0ZSggdHJhbnMsIGRh
dGFzZXQgKQorICAgICAgICBtc2cgPTNEIHNlbGYubWdycy5oZGFzLmRhdGFfY29udmVyc2lvbl9z
dGF0dXMoIHRyYW5zLCBkYXRhc2V0ICkKICAgICAgICAgaWYgbXNnOgogICAgICAgICAgICAgcmV0
dXJuIG1zZwo9MjAKQEAgLTIzNyw3ICsyMzYsNyBAQAogICAgICAgICBiZSBzbG93IGJlY2F1c2Ug
aW5kZXhlcyBuZWVkIHRvIGJlIGNyZWF0ZWQuCiAgICAgICAgICIiIgogICAgICAgICAjIERhdGFz
ZXQgY2hlY2suCi0gICAgICAgIG1zZyA9M0Qgc2VsZi5jaGVja19kYXRhc2V0X3N0YXRlKCB0cmFu
cywgZGF0YXNldCApCisgICAgICAgIG1zZyA9M0Qgc2VsZi5tZ3JzLmhkYXMuZGF0YV9jb252ZXJz
aW9uX3N0YXR1cyggdHJhbnMsIGRhdGFzZXQgKQogICAgICAgICBpZiBtc2c6CiAgICAgICAgICAg
ICByZXR1cm4gbXNnCj0yMAoKZGlmZiAtciBhM2E2YzcyOTkzYTdhNjNiNzQ3MzljYmI2YTkxYjk5
NjUwMWQxMTM3IC1yIDM5ZmJmMWQ5MjUwNzc5N2YxMDExNDUwPQo4M2VmMzI3Y2QxMjcxOGZiOSBs
aWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9leHRlbmRlZF9tZXRhZGF0YS5weQotLS0gYS9s
aWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9leHRlbmRlZF9tZXRhZGF0YS5weQorKysgYi9s
aWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9leHRlbmRlZF9tZXRhZGF0YS5weQpAQCAtMywx
MSArMywxMSBAQAogIiIiCiBpbXBvcnQgbG9nZ2luZwogZnJvbSBnYWxheHkgaW1wb3J0IHdlYgot
ZnJvbSBnYWxheHkud2ViLmJhc2UuY29udHJvbGxlciBpbXBvcnQgIEJhc2VBUElDb250cm9sbGVy
LCBVc2VzTGlicmFyeU1peGk9Cm5JdGVtcywgVXNlc0hpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb25N
aXhpbiwgVXNlc1N0b3JlZFdvcmtmbG93TWl4aW4sIFVzZXNFeD0KdGVuZGVkTWV0YWRhdGFNaXhp
biwgSFRUUE5vdEltcGxlbWVudGVkCitmcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9sbGVyIGlt
cG9ydCAgQmFzZUFQSUNvbnRyb2xsZXIsIFVzZXNMaWJyYXJ5TWl4aT0Kbkl0ZW1zLCBVc2VzU3Rv
cmVkV29ya2Zsb3dNaXhpbiwgVXNlc0V4dGVuZGVkTWV0YWRhdGFNaXhpbiwgSFRUUE5vdEltcGxl
bWVuPQp0ZWQKPTIwCiBsb2cgPTNEIGxvZ2dpbmcuZ2V0TG9nZ2VyKCBfX25hbWVfXyApCj0yMAot
Y2xhc3MgQmFzZUV4dGVuZGVkTWV0YWRhdGFDb250cm9sbGVyKCBCYXNlQVBJQ29udHJvbGxlciwg
VXNlc0V4dGVuZGVkTWV0YWQ9CmF0YU1peGluLCBVc2VzTGlicmFyeU1peGluSXRlbXMsIFVzZXNI
aXN0b3J5RGF0YXNldEFzc29jaWF0aW9uTWl4aW4sIFVzZXNTdD0Kb3JlZFdvcmtmbG93TWl4aW4g
KToKK2NsYXNzIEJhc2VFeHRlbmRlZE1ldGFkYXRhQ29udHJvbGxlciggQmFzZUFQSUNvbnRyb2xs
ZXIsIFVzZXNFeHRlbmRlZE1ldGFkPQphdGFNaXhpbiwgVXNlc0xpYnJhcnlNaXhpbkl0ZW1zLCBV
c2VzU3RvcmVkV29ya2Zsb3dNaXhpbiApOgo9MjAKICAgICBAd2ViLmV4cG9zZV9hcGkKICAgICBk
ZWYgaW5kZXgoIHNlbGYsIHRyYW5zLCAqKmt3ZCApOgpAQCAtNjEsOCArNjEsMTUgQEAKIGNsYXNz
IEhpc3RvcnlEYXRhc2V0RXh0ZW5kTWV0YWRhdGFDb250cm9sbGVyKEJhc2VFeHRlbmRlZE1ldGFk
YXRhQ29udHJvbGxlPQpyKToKICAgICBjb250cm9sbGVyX25hbWUgPTNEICJoaXN0b3J5X2RhdGFz
ZXRfZXh0ZW5kZWRfbWV0YWRhdGEiCiAgICAgZXhtZXRhX2l0ZW1faWQgPTNEICJoaXN0b3J5X2Nv
bnRlbnRfaWQiCisKKyAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgorICAgICAgICBzdXBl
ciggSGlzdG9yeURhdGFzZXRFeHRlbmRNZXRhZGF0YUNvbnRyb2xsZXIsIHNlbGYgKS5fX2luaXRf
XyggYXA9CnAgKQorICAgICAgICBzZWxmLmhkYV9tYW5hZ2VyID0zRCBtYW5hZ2Vycy5oZGFzLkhE
QU1hbmFnZXIoIGFwcCApCisKICAgICBkZWYgX2dldF9pdGVtX2Zyb21faWQoc2VsZiwgdHJhbnMs
IGlkc3RyLCBjaGVja193cml0YWJsZT0zRFRydWUpOgorICAgICAgICBkZWNvZGVkX2lkc3RyID0z
RCB0cmFucy5zZWN1cml0eS5kZWNvZGVfaWQoIGlkc3RyICkKICAgICAgICAgaWYgY2hlY2tfd3Jp
dGFibGU6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfZGF0YXNldCggdHJhbnMsIGlkc3Ry
LCAgY2hlY2tfb3duZXJzaGlwPTNEVHJ1ZT0KLCBjaGVja19hY2Nlc3NpYmxlPTNEVHJ1ZSwgY2hl
Y2tfc3RhdGU9M0RUcnVlICkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmhkYV9tYW5hZ2VyLm93
bmVkX2J5X2lkKCB0cmFucywgZGVjb2RlZF9pZHN0ciwgdHJhPQpucy51c2VyICkKICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmdldF9kYXRhc2V0KCB0cmFucywgaWRzdHIs
ICBjaGVja19vd25lcnNoaXA9M0RGYWxzPQplLCBjaGVja19hY2Nlc3NpYmxlPTNEVHJ1ZSwgY2hl
Y2tfc3RhdGU9M0RUcnVlICkKKyAgICAgICAgICAgIGhkYSA9M0Qgc2VsZi5oZGFfbWFuYWdlci5h
Y2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgZGVjb2RlZF9pZHN0PQpyLCB0cmFucy51c2VyICkKKyAg
ICAgICAgICAgIHJldHVybiBzZWxmLmhkYV9tYW5hZ2VyLmVycm9yX2lmX3VwbG9hZGluZyggdHJh
bnMsIGhkYSApCgpkaWZmIC1yIGEzYTZjNzI5OTNhN2E2M2I3NDczOWNiYjZhOTFiOTk2NTAxZDEx
MzcgLXIgMzlmYmYxZDkyNTA3Nzk3ZjEwMTE0NTA9CjgzZWYzMjdjZDEyNzE4ZmI5IGxpYi9nYWxh
eHkvd2ViYXBwcy9nYWxheHkvYXBpL2ZvbGRlcl9jb250ZW50cy5weQotLS0gYS9saWIvZ2FsYXh5
L3dlYmFwcHMvZ2FsYXh5L2FwaS9mb2xkZXJfY29udGVudHMucHkKKysrIGIvbGliL2dhbGF4eS93
ZWJhcHBzL2dhbGF4eS9hcGkvZm9sZGVyX2NvbnRlbnRzLnB5CkBAIC00LDE4ICs0LDE5IEBACiBm
cm9tIGdhbGF4eSBpbXBvcnQgd2ViCiBmcm9tIGdhbGF4eSBpbXBvcnQgdXRpbAogZnJvbSBnYWxh
eHkgaW1wb3J0IGV4Y2VwdGlvbnMKK2Zyb20gZ2FsYXh5IGltcG9ydCBtYW5hZ2VycwogZnJvbSBn
YWxheHkubWFuYWdlcnMgaW1wb3J0IGZvbGRlcnMKIGZyb20gZ2FsYXh5LndlYiBpbXBvcnQgX2Z1
dHVyZV9leHBvc2VfYXBpIGFzIGV4cG9zZV9hcGkKIGZyb20gZ2FsYXh5LndlYiBpbXBvcnQgX2Z1
dHVyZV9leHBvc2VfYXBpX2Fub255bW91cyBhcyBleHBvc2VfYXBpX2Fub255bW91cwogZnJvbSBz
cWxhbGNoZW15Lm9ybS5leGMgaW1wb3J0IE11bHRpcGxlUmVzdWx0c0ZvdW5kCiBmcm9tIHNxbGFs
Y2hlbXkub3JtLmV4YyBpbXBvcnQgTm9SZXN1bHRGb3VuZAotZnJvbSBnYWxheHkud2ViLmJhc2Uu
Y29udHJvbGxlciBpbXBvcnQgQmFzZUFQSUNvbnRyb2xsZXIsIFVzZXNMaWJyYXJ5TWl4aW49Ciwg
VXNlc0xpYnJhcnlNaXhpbkl0ZW1zLCBVc2VzSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbk1peGlu
Citmcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9sbGVyIGltcG9ydCBCYXNlQVBJQ29udHJvbGxl
ciwgVXNlc0xpYnJhcnlNaXhpbj0KLCBVc2VzTGlicmFyeU1peGluSXRlbXMKPTIwCiBpbXBvcnQg
bG9nZ2luZwogbG9nID0zRCBsb2dnaW5nLmdldExvZ2dlciggX19uYW1lX18gKQo9MjAKPTIwCi1j
bGFzcyBGb2xkZXJDb250ZW50c0NvbnRyb2xsZXIoIEJhc2VBUElDb250cm9sbGVyLCBVc2VzTGli
cmFyeU1peGluLCBVc2VzTD0KaWJyYXJ5TWl4aW5JdGVtcywgVXNlc0hpc3RvcnlEYXRhc2V0QXNz
b2NpYXRpb25NaXhpbiApOgorY2xhc3MgRm9sZGVyQ29udGVudHNDb250cm9sbGVyKCBCYXNlQVBJ
Q29udHJvbGxlciwgVXNlc0xpYnJhcnlNaXhpbiwgVXNlc0w9CmlicmFyeU1peGluSXRlbXMgKToK
ICAgICAiIiIKICAgICBDbGFzcyBjb250cm9scyByZXRyaWV2YWwsIGNyZWF0aW9uIGFuZCB1cGRh
dGluZyBvZiBmb2xkZXIgY29udGVudHMuCiAgICAgIiIiCkBAIC0yMyw2ICsyNCw3IEBACiAgICAg
ZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToKICAgICAgICAgc3VwZXIoIEZvbGRlckNvbnRlbnRz
Q29udHJvbGxlciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQogICAgICAgICBzZWxmLmZvbGRlcl9t
YW5hZ2VyID0zRCBmb2xkZXJzLkZvbGRlck1hbmFnZXIoKQorICAgICAgICBzZWxmLmhkYV9tYW5h
Z2VyID0zRCBtYW5hZ2Vycy5oZGFzLkhEQU1hbmFnZXIoKQo9MjAKICAgICBAZXhwb3NlX2FwaV9h
bm9ueW1vdXMKICAgICBkZWYgaW5kZXgoIHNlbGYsIHRyYW5zLCBmb2xkZXJfaWQsICoqa3dkICk6
CkBAIC0yNjUsNyArMjY3LDkgQEAKICAgICAgICAgICAgIGxkZGFfbWVzc2FnZSA9M0QgdXRpbC5z
YW5pdGl6ZV9odG1sLnNhbml0aXplX2h0bWwoIGxkZGFfbWVzc2FnPQplLCAndXRmLTgnICkKICAg
ICAgICAgcnZhbCA9M0Qge30KICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaGRhID0zRCBzZWxm
LmdldF9kYXRhc2V0KCB0cmFucywgZnJvbV9oZGFfaWQsIGNoZWNrX293bmVyc2hpcD0KPTNEVHJ1
ZSwgY2hlY2tfYWNjZXNzaWJsZT0zRFRydWUsIGNoZWNrX3N0YXRlPTNEVHJ1ZSApCisgICAgICAg
ICAgICBkZWNvZGVkX2hkYV9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBmcm9tX2hk
YV9pZCApCisgICAgICAgICAgICBoZGEgPTNEIHNlbGYuaGRhX21hbmFnZXIub3duZWRfYnlfaWQo
IHRyYW5zLCBkZWNvZGVkX2hkYV9pZCwgdD0KcmFucy51c2VyICkKKyAgICAgICAgICAgIGhkYSA9
M0Qgc2VsZi5oZGFfbWFuYWdlci5lcnJvcl9pZl91cGxvYWRpbmcoIHRyYW5zLCBoZGEgKQogICAg
ICAgICAgICAgZm9sZGVyID0zRCBzZWxmLmdldF9saWJyYXJ5X2ZvbGRlciggdHJhbnMsIGVuY29k
ZWRfZm9sZGVyX2lkXzE9CjYsIGNoZWNrX2FjY2Vzc2libGU9M0RUcnVlICkKPTIwCiAgICAgICAg
ICAgICBsaWJyYXJ5ID0zRCBmb2xkZXIucGFyZW50X2xpYnJhcnkKCmRpZmYgLXIgYTNhNmM3Mjk5
M2E3YTYzYjc0NzM5Y2JiNmE5MWI5OTY1MDFkMTEzNyAtciAzOWZiZjFkOTI1MDc3OTdmMTAxMTQ1
MD0KODNlZjMyN2NkMTI3MThmYjkgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvaGlzdG9y
eV9jb250ZW50cy5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9oaXN0b3J5
X2NvbnRlbnRzLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2hpc3Rvcnlf
Y29udGVudHMucHkKQEAgLTEwLDcgKzEwLDYgQEAKIGZyb20gZ2FsYXh5LndlYiBpbXBvcnQgdXJs
X2Zvcgo9MjAKIGZyb20gZ2FsYXh5LndlYi5iYXNlLmNvbnRyb2xsZXIgaW1wb3J0IEJhc2VBUElD
b250cm9sbGVyCi1mcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9sbGVyIGltcG9ydCBVc2VzSGlz
dG9yeURhdGFzZXRBc3NvY2lhdGlvbk1peGluCiBmcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9s
bGVyIGltcG9ydCBVc2VzTGlicmFyeU1peGluCiBmcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9s
bGVyIGltcG9ydCBVc2VzTGlicmFyeU1peGluSXRlbXMKIGZyb20gZ2FsYXh5LndlYi5iYXNlLmNv
bnRyb2xsZXIgaW1wb3J0IFVzZXNUYWdzTWl4aW4KQEAgLTI2LDggKzI1LDcgQEAKIGxvZyA9M0Qg
bG9nZ2luZy5nZXRMb2dnZXIoIF9fbmFtZV9fICkKPTIwCj0yMAotY2xhc3MgSGlzdG9yeUNvbnRl
bnRzQ29udHJvbGxlciggQmFzZUFQSUNvbnRyb2xsZXIsIFVzZXNIaXN0b3J5RGF0YXNldEFzc289
CmNpYXRpb25NaXhpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXNMaWJy
YXJ5TWl4aW4sIFVzZXNMaWJyYXJ5TWl4aW5JdGVtcywgPQpVc2VzVGFnc01peGluICk6CitjbGFz
cyBIaXN0b3J5Q29udGVudHNDb250cm9sbGVyKCBCYXNlQVBJQ29udHJvbGxlciwgVXNlc0xpYnJh
cnlNaXhpbiwgVXNlcz0KTGlicmFyeU1peGluSXRlbXMsIFVzZXNUYWdzTWl4aW4gKToKPTIwCiAg
ICAgZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToKICAgICAgICAgc3VwZXIoIEhpc3RvcnlDb250
ZW50c0NvbnRyb2xsZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwICkKQEAgLTM2Miw3ICszNjAsNyBA
QAogICAgICAgICAgICAgc2VsZi5oZGFfZGVzZXJpYWxpemVyLmRlc2VyaWFsaXplKCB0cmFucywg
aGRhLCBwYXlsb2FkICkKICAgICAgICAgICAgICNUT0RPOiB0aGlzIHNob3VsZCBiZSBhbiBlZmZl
Y3Qgb2YgZGVsZXRpbmcgdGhlIGhkYQogICAgICAgICAgICAgaWYgcGF5bG9hZC5nZXQoICdkZWxl
dGVkJywgRmFsc2UgKToKLSAgICAgICAgICAgICAgICBzZWxmLnN0b3BfaGRhX2NyZWF0aW5nX2pv
YiggaGRhICkKKyAgICAgICAgICAgICAgICBzZWxmLm1ncnMuaGRhcy5zdG9wX2NyZWF0aW5nX2pv
YiggaGRhICkKICAgICAgICAgICAgIHJldHVybiBzZWxmLmhkYV9zZXJpYWxpemVyLnNlcmlhbGl6
ZV90b192aWV3KCB0cmFucywgaGRhLAogICAgICAgICAgICAgICAgICoqc2VsZi5fcGFyc2Vfc2Vy
aWFsaXphdGlvbl9wYXJhbXMoIGt3ZCwgJ2RldGFpbGVkJyApICkKPTIwCgpkaWZmIC1yIGEzYTZj
NzI5OTNhN2E2M2I3NDczOWNiYjZhOTFiOTk2NTAxZDExMzcgLXIgMzlmYmYxZDkyNTA3Nzk3ZjEw
MTE0NTA9CjgzZWYzMjdjZDEyNzE4ZmI5IGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2pv
YnMucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvam9icy5weQorKysgYi9s
aWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9qb2JzLnB5CkBAIC05LDcgKzksNiBAQAogaW1w
b3J0IGpzb24KIGZyb20gZ2FsYXh5LndlYiBpbXBvcnQgX2Z1dHVyZV9leHBvc2VfYXBpIGFzIGV4
cG9zZV9hcGkKIGZyb20gZ2FsYXh5LndlYi5iYXNlLmNvbnRyb2xsZXIgaW1wb3J0IEJhc2VBUElD
b250cm9sbGVyCi1mcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9sbGVyIGltcG9ydCBVc2VzSGlz
dG9yeURhdGFzZXRBc3NvY2lhdGlvbk1peGluCiBmcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9s
bGVyIGltcG9ydCBVc2VzTGlicmFyeU1peGluSXRlbXMKIGZyb20gZ2FsYXh5IGltcG9ydCBleGNl
cHRpb25zCiBmcm9tIGdhbGF4eSBpbXBvcnQgdXRpbApAQCAtMTksNyArMTgsMTEgQEAKIGxvZyA9
M0QgbG9nZ2luZy5nZXRMb2dnZXIoIF9fbmFtZV9fICkKPTIwCj0yMAotY2xhc3MgSm9iQ29udHJv
bGxlciggQmFzZUFQSUNvbnRyb2xsZXIsIFVzZXNIaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uTWl4
aW49CiwgVXNlc0xpYnJhcnlNaXhpbkl0ZW1zICk6CitjbGFzcyBKb2JDb250cm9sbGVyKCBCYXNl
QVBJQ29udHJvbGxlciwgVXNlc0xpYnJhcnlNaXhpbkl0ZW1zICk6CisKKyAgICBkZWYgX19pbml0
X18oIHNlbGYsIGFwcCApOgorICAgICAgICBzdXBlciggSm9iQ29udHJvbGxlciwgc2VsZiApLl9f
aW5pdF9fKCBhcHAgKQorICAgICAgICBzZWxmLmhkYV9tYW5hZ2VyID0zRCBtYW5hZ2Vycy5oZGFz
LkhEQU1hbmFnZXIoKQo9MjAKICAgICBAZXhwb3NlX2FwaQogICAgIGRlZiBpbmRleCggc2VsZiwg
dHJhbnMsICoqa3dkICk6CkBAIC0yNTYsNyArMjU5LDggQEAKICAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2UoIHYsIGRpY3QgKToKICAgICAgICAgICAgICAgICBpZiAnaWQnIGluIHY6CiAgICAgICAg
ICAgICAgICAgICAgIGlmICdzcmMnIG5vdCBpbiB2IG9yIHZbICdzcmMnIF0gPTNEPTNEICdoZGEn
OgotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YXNldCA9M0Qgc2VsZi5nZXRfZGF0YXNldCgg
dHJhbnMsIHZbJ2lkJ10sIGNoZWM9Cmtfb3duZXJzaGlwPTNERmFsc2UsIGNoZWNrX2FjY2Vzc2li
bGU9M0RUcnVlICkKKyAgICAgICAgICAgICAgICAgICAgICAgIGhkYV9pZCA9M0QgdHJhbnMuc2Vj
dXJpdHkuZGVjb2RlX2lkKCB2WydpZCddICkKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFz
ZXQgPTNEIHNlbGYuaGRhX21hbmFnZXIuYWNjZXNzaWJsZV9ieV9pZCggdHJhPQpucywgaGRhX2lk
LCB0cmFucy51c2VyICkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGFzZXQgPTNEIHNlbGYuZ2V0X2xpYnJhcnlfZGF0YXNldF9kYXRhc2V0X2Fz
c29jPQppYXRpb24oIHRyYW5zLCB2WydpZCddICkKICAgICAgICAgICAgICAgICAgICAgaWYgZGF0
YXNldCBpcyBOb25lOgoKZGlmZiAtciBhM2E2YzcyOTkzYTdhNjNiNzQ3MzljYmI2YTkxYjk5NjUw
MWQxMTM3IC1yIDM5ZmJmMWQ5MjUwNzc5N2YxMDExNDUwPQo4M2VmMzI3Y2QxMjcxOGZiOSBsaWIv
Z2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9saWJyYXJ5X2NvbnRlbnRzLnB5Ci0tLSBhL2xpYi9n
YWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2xpYnJhcnlfY29udGVudHMucHkKKysrIGIvbGliL2dh
bGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvbGlicmFyeV9jb250ZW50cy5weQpAQCAtNiw3ICs2LDYg
QEAKIGZyb20gZ2FsYXh5IGltcG9ydCBleGNlcHRpb25zCiBmcm9tIGdhbGF4eS53ZWIgaW1wb3J0
IF9mdXR1cmVfZXhwb3NlX2FwaSBhcyBleHBvc2VfYXBpCiBmcm9tIGdhbGF4eS53ZWIuYmFzZS5j
b250cm9sbGVyIGltcG9ydCBCYXNlQVBJQ29udHJvbGxlciwgVXNlc0xpYnJhcnlNaXhpbj0KLCBV
c2VzTGlicmFyeU1peGluSXRlbXMKLWZyb20gZ2FsYXh5LndlYi5iYXNlLmNvbnRyb2xsZXIgaW1w
b3J0IFVzZXNIaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uTWl4aW4KIGZyb20gZ2FsYXh5LndlYi5i
YXNlLmNvbnRyb2xsZXIgaW1wb3J0IEhUVFBCYWRSZXF1ZXN0LCB1cmxfZm9yCiBmcm9tIGdhbGF4
eS5tYW5hZ2Vycy5jb2xsZWN0aW9uc191dGlsIGltcG9ydCBhcGlfcGF5bG9hZF90b19jcmVhdGVf
cGFyYW1zLD0KIGRpY3RpZnlfZGF0YXNldF9jb2xsZWN0aW9uX2luc3RhbmNlCiBmcm9tIGdhbGF4
eS5tb2RlbCBpbXBvcnQgRXh0ZW5kZWRNZXRhZGF0YSwgRXh0ZW5kZWRNZXRhZGF0YUluZGV4CkBA
IC0xNyw3ICsxNiwxMSBAQAogbG9nID0zRCBsb2dnaW5nLmdldExvZ2dlciggX19uYW1lX18gKQo9
MjAKPTIwCi1jbGFzcyBMaWJyYXJ5Q29udGVudHNDb250cm9sbGVyKCBCYXNlQVBJQ29udHJvbGxl
ciwgVXNlc0xpYnJhcnlNaXhpbiwgVXNlcz0KTGlicmFyeU1peGluSXRlbXMsIFVzZXNIaXN0b3J5
RGF0YXNldEFzc29jaWF0aW9uTWl4aW4gKToKK2NsYXNzIExpYnJhcnlDb250ZW50c0NvbnRyb2xs
ZXIoIEJhc2VBUElDb250cm9sbGVyLCBVc2VzTGlicmFyeU1peGluLCBVc2VzPQpMaWJyYXJ5TWl4
aW5JdGVtcyApOgorCisgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToKKyAgICAgICAgc3Vw
ZXIoIEpvYkNvbnRyb2xsZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwICkKKyAgICAgICAgc2VsZi5o
ZGFfbWFuYWdlciA9M0QgbWFuYWdlcnMuaGRhcy5IREFNYW5hZ2VyKCkKPTIwCiAgICAgQGV4cG9z
ZV9hcGkKICAgICBkZWYgaW5kZXgoIHNlbGYsIHRyYW5zLCBsaWJyYXJ5X2lkLCAqKmt3ZCApOgpA
QCAtMjg4LDcgKzI5MSw5IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgY2hlY2sgcGVy
bWlzc2lvbnMgb24gKGFsbCB0aHJlZT8pIHJlc291cmNlczogaGRhLCBsaWJyYXJ5LCBmPQpvbGRl
cgogICAgICAgICAgICAgI1RPRE86IGRvIHdlIHJlYWxseSBuZWVkIHRoZSBsaWJyYXJ5Pz8KLSAg
ICAgICAgICAgIGhkYSA9M0Qgc2VsZi5nZXRfZGF0YXNldCggdHJhbnMsIGZyb21faGRhX2lkLCBj
aGVja19vd25lcnNoaXA9Cj0zRFRydWUsIGNoZWNrX2FjY2Vzc2libGU9M0RUcnVlLCBjaGVja19z
dGF0ZT0zRFRydWUgKQorICAgICAgICAgICAgZnJvbV9oZGFfaWQgPTNEIHRyYW5zLnNlY3VyaXR5
LmRlY29kZV9pZCggZnJvbV9oZGFfaWQgKQorICAgICAgICAgICAgaGRhID0zRCBzZWxmLmhkYV9t
YW5hZ2VyLm93bmVkX2J5X2lkKCB0cmFucywgZnJvbV9oZGFfaWQsIHRyYW49CnMudXNlciApCisg
ICAgICAgICAgICBoZGEgPTNEIHNlbGYuaGRhX21hbmFnZXIuZXJyb3JfaWZfdXBsb2FkaW5nKCB0
cmFucywgaGRhICkKICAgICAgICAgICAgICMgbGlicmFyeSA9M0Qgc2VsZi5nZXRfbGlicmFyeSgg
dHJhbnMsIGxpYnJhcnlfaWQsIGNoZWNrX2FjY2VzPQpzaWJsZT0zRFRydWUgKQogICAgICAgICAg
ICAgZm9sZGVyID0zRCBzZWxmLmdldF9saWJyYXJ5X2ZvbGRlciggdHJhbnMsIGZvbGRlcl9pZCwg
Y2hlY2tfYWM9CmNlc3NpYmxlPTNEVHJ1ZSApCj0yMAoKZGlmZiAtciBhM2E2YzcyOTkzYTdhNjNi
NzQ3MzljYmI2YTkxYjk5NjUwMWQxMTM3IC1yIDM5ZmJmMWQ5MjUwNzc5N2YxMDExNDUwPQo4M2Vm
MzI3Y2QxMjcxOGZiOSBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS90b29scy5weQotLS0g
YS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS90b29scy5weQorKysgYi9saWIvZ2FsYXh5
L3dlYmFwcHMvZ2FsYXh5L2FwaS90b29scy5weQpAQCAtMzIsNyArMzIsOCBAQAogICAgIGRlZiBf
X2luaXRfXyggc2VsZiwgYXBwICk6CiAgICAgICAgIHN1cGVyKCBUb29sc0NvbnRyb2xsZXIsIHNl
bGYgKS5fX2luaXRfXyggYXBwICkKICAgICAgICAgc2VsZi5tZ3JzID0zRCB1dGlsLmJ1bmNoLkJ1
bmNoKAotICAgICAgICAgICAgaGlzdG9yaWVzPTNEbWFuYWdlcnMuaGlzdG9yaWVzLkhpc3RvcnlN
YW5hZ2VyKCBhcHAgKQorICAgICAgICAgICAgaGlzdG9yaWVzPTNEbWFuYWdlcnMuaGlzdG9yaWVz
Lkhpc3RvcnlNYW5hZ2VyKCBhcHAgKSwKKyAgICAgICAgICAgIGhkYXM9M0RtYW5hZ2Vycy5oZGFz
LkhEQU1hbmFnZXIoIGFwcCApCiAgICAgICAgICkKPTIwCiAgICAgQHdlYi5leHBvc2VfYXBpCkBA
IC0yODIsMTcgKzI4MywxOCBAQAogICAgICAgICAgICAgcnVuX29uX3JlZ2lvbnMgPTNEIFRydWUK
PTIwCiAgICAgICAgICMgRGF0YXNldCBjaGVjay4KLSAgICAgICAgb3JpZ2luYWxfZGF0YXNldCA9
M0Qgc2VsZi5nZXRfZGF0YXNldCggdHJhbnMsIHBheWxvYWRbICd0YXJnZXRfZGF0PQphc2V0X2lk
JyBdLCBjaGVja19vd25lcnNoaXA9M0RGYWxzZSwgY2hlY2tfYWNjZXNzaWJsZT0zRFRydWUgKQot
ICAgICAgICBtc2cgPTNEIHNlbGYuY2hlY2tfZGF0YXNldF9zdGF0ZSggdHJhbnMsIG9yaWdpbmFs
X2RhdGFzZXQgKQorICAgICAgICBkZWNvZGVkX2RhdGFzZXRfaWQgPTNEIHRyYW5zLnNlY3VyaXR5
LmRlY29kZV9pZCggcGF5bG9hZC5nZXQoICd0YXI9CmdldF9kYXRhc2V0X2lkJyApICkKKyAgICAg
ICAgb3JpZ2luYWxfZGF0YXNldCA9M0Qgc2VsZi5tZ3JzLmhkYXMuYWNjZXNzaWJsZV9ieV9pZCgg
dHJhbnMsIGRlY29kPQplZF9kYXRhc2V0X2lkLCB1c2VyPTNEdHJhbnMudXNlciApCisgICAgICAg
IG9yaWdpbmFsX2RhdGFzZXQgPTNEIHNlbGYuaGRhX21hbmFnZXIuZXJyb3JfaWZfdXBsb2FkaW5n
KCB0cmFucywgbz0KcmlnaW5hbF9kYXRhc2V0ICkKKyAgICAgICAgbXNnID0zRCBzZWxmLm1ncnMu
aGRhcy5kYXRhX2NvbnZlcnNpb25fc3RhdHVzKCB0cmFucywgb3JpZ2luYWxfZGF0PQphc2V0ICkK
ICAgICAgICAgaWYgbXNnOgogICAgICAgICAgICAgcmV0dXJuIG1zZwo9MjAKLSAgICAgICAgIwog
ICAgICAgICAjIFNldCB0b29sIHBhcmFtZXRlcnMtLWV4Y2VwdCBub24taGlkZGVuIGRhdGFzZXQg
cGFyYW1ldGVycy0tdXNpbmc9CiBjb21iaW5hdGlvbiBvZgogICAgICAgICAjIGpvYidzIHByZXZp
b3VzIHBhcmFtZXRlcnMgYW5kIGluY29taW5nIHBhcmFtZXRlcnMuIEluY29taW5nIHBhcmE9Cm1l
dGVycwogICAgICAgICAjIGhhdmUgcHJpb3JpdHkuCiAgICAgICAgICMKLSAgICAgICAgb3JpZ2lu
YWxfam9iID0zRCBzZWxmLmdldF9oZGFfam9iKCBvcmlnaW5hbF9kYXRhc2V0ICkKKyAgICAgICAg
b3JpZ2luYWxfam9iID0zRCBzZWxmLm1ncnMuaGRhcy5jcmVhdGluZ19qb2IoIG9yaWdpbmFsX2Rh
dGFzZXQgKQogICAgICAgICB0b29sID0zRCB0cmFucy5hcHAudG9vbGJveC5nZXRfdG9vbCggb3Jp
Z2luYWxfam9iLnRvb2xfaWQgKQogICAgICAgICBpZiBub3QgdG9vbDoKICAgICAgICAgICAgIHJl
dHVybiB0cmFucy5hcHAubW9kZWwuRGF0YXNldC5jb252ZXJzaW9uX21lc3NhZ2VzLk5PX1RPT0wK
CmRpZmYgLXIgYTNhNmM3Mjk5M2E3YTYzYjc0NzM5Y2JiNmE5MWI5OTY1MDFkMTEzNyAtciAzOWZi
ZjFkOTI1MDc3OTdmMTAxMTQ1MD0KODNlZjMyN2NkMTI3MThmYjkgbGliL2dhbGF4eS93ZWJhcHBz
L2dhbGF4eS9jb250cm9sbGVycy9kYXRhc2V0LnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9n
YWxheHkvY29udHJvbGxlcnMvZGF0YXNldC5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2Fs
YXh5L2NvbnRyb2xsZXJzL2RhdGFzZXQucHkKQEAgLTksNyArOSw3IEBACiBmcm9tIGdhbGF4eS51
dGlsIGltcG9ydCBpbmZsZWN0b3IsIHNtYXJ0X3N0cgogZnJvbSBnYWxheHkudXRpbC5zYW5pdGl6
ZV9odG1sIGltcG9ydCBzYW5pdGl6ZV9odG1sCiBmcm9tIGdhbGF4eS51dGlsLmpzb24gaW1wb3J0
IGxvYWRzCi1mcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9sbGVyIGltcG9ydCBCYXNlVUlDb250
cm9sbGVyLCBFUlJPUiwgU1VDQ0VTUywgdT0KcmxfZm9yLCBVc2VzSGlzdG9yeURhdGFzZXRBc3Nv
Y2lhdGlvbk1peGluLCBVc2VzRXh0ZW5kZWRNZXRhZGF0YU1peGluCitmcm9tIGdhbGF4eS53ZWIu
YmFzZS5jb250cm9sbGVyIGltcG9ydCBCYXNlVUlDb250cm9sbGVyLCBFUlJPUiwgU1VDQ0VTUywg
dT0KcmxfZm9yLCBVc2VzRXh0ZW5kZWRNZXRhZGF0YU1peGluCiBmcm9tIGdhbGF4eS53ZWIuZnJh
bWV3b3JrLmhlbHBlcnMgaW1wb3J0IGdyaWRzLCBpZmYsIHRpbWVfYWdvLCB0b191bmljb2RlLD0K
IGVzY2FwZQogZnJvbSBnYWxheHkudG9vbHMuZXJyb3JzIGltcG9ydCBFbWFpbEVycm9yUmVwb3J0
ZXIKPTIwCkBAIC04NiwxNCArODYsMTUgQEAKICAgICAgICAgICAgICAgICAuZmlsdGVyKCBtb2Rl
bC5IaXN0b3J5LmRlbGV0ZWQ9M0Q9M0RGYWxzZSApIFwKICAgICAgICAgICAgICAgICAuZmlsdGVy
KCBzZWxmLm1vZGVsX2NsYXNzLnZpc2libGU9M0Q9M0RUcnVlICkKPTIwCi1jbGFzcyBEYXRhc2V0
SW50ZXJmYWNlKCBCYXNlVUlDb250cm9sbGVyLCBVc2VzQW5ub3RhdGlvbnMsIFVzZXNIaXN0b3J5
RGF0YT0Kc2V0QXNzb2NpYXRpb25NaXhpbiwgVXNlc0l0ZW1SYXRpbmdzLCBVc2VzRXh0ZW5kZWRN
ZXRhZGF0YU1peGluICk6CitjbGFzcyBEYXRhc2V0SW50ZXJmYWNlKCBCYXNlVUlDb250cm9sbGVy
LCBVc2VzQW5ub3RhdGlvbnMsIFVzZXNJdGVtUmF0aW5ncz0KLCBVc2VzRXh0ZW5kZWRNZXRhZGF0
YU1peGluICk6Cj0yMAogICAgIHN0b3JlZF9saXN0X2dyaWQgPTNEIEhpc3RvcnlEYXRhc2V0QXNz
b2NpYXRpb25MaXN0R3JpZCgpCj0yMAogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CiAg
ICAgICAgIHN1cGVyKCBEYXRhc2V0SW50ZXJmYWNlLCBzZWxmICkuX19pbml0X18oIGFwcCApCiAg
ICAgICAgIHNlbGYubWdycyA9M0QgdXRpbC5idW5jaC5CdW5jaCgKLSAgICAgICAgICAgIGhpc3Rv
cmllcz0zRG1hbmFnZXJzLmhpc3Rvcmllcy5IaXN0b3J5TWFuYWdlciggYXBwICkKKyAgICAgICAg
ICAgIGhpc3Rvcmllcz0zRG1hbmFnZXJzLmhpc3Rvcmllcy5IaXN0b3J5TWFuYWdlciggYXBwICks
CisgICAgICAgICAgICBoZGFzPTNEbWFuYWdlcnMuaGRhcy5IREFNYW5hZ2VyKCBhcHAgKSwKICAg
ICAgICAgKQo9MjAKICAgICBkZWYgX2dldF9qb2JfZm9yX2RhdGFzZXQoIHNlbGYsIHRyYW5zLCBk
YXRhc2V0X2lkICk6CkBAIC01MjksMTQgKzUzMCwxOCBAQAogICAgIEB3ZWIucmVxdWlyZV9sb2dp
biggInVzZSBHYWxheHkgZGF0YXNldHMiICkKICAgICBkZWYgZ2V0X25hbWVfYW5kX2xpbmtfYXN5
bmMoIHNlbGYsIHRyYW5zLCBpZD0zRE5vbmUgKToKICAgICAgICAgIiIiIFJldHVybnMgZGF0YXNl
dCdzIG5hbWUgYW5kIGxpbmsuICIiIgotICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLmdldF9kYXRh
c2V0KCB0cmFucywgaWQsIEZhbHNlLCBUcnVlICkKKyAgICAgICAgZGVjb2RlZF9pZCA9M0QgdHJh
bnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBpZCApCisgICAgICAgIGRhdGFzZXQgPTNEIHNlbGYubWdy
cy5oZGFzLmFjY2Vzc2libGVfYnlfaWQoIHRyYW5zLCBkZWNvZGVkX2lkLCB0cj0KYW5zLnVzZXIg
KQorICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLm1ncnMuaGRhcy5lcnJvcl9pZl91cGxvYWRpbmco
IGRhdGFzZXQgKQogICAgICAgICByZXR1cm5fZGljdCA9M0QgeyAibmFtZSIgOiBkYXRhc2V0Lm5h
bWUsICJsaW5rIiA6IHVybF9mb3IoIGNvbnRyb2w9Cmxlcj0zRCdkYXRhc2V0JywgYWN0aW9uPTNE
ImRpc3BsYXlfYnlfdXNlcm5hbWVfYW5kX3NsdWciLCB1c2VybmFtZT0zRGRhdGFzZT0KdC5oaXN0
b3J5LnVzZXIudXNlcm5hbWUsIHNsdWc9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIGRhdGFz
ZXQuaWQgKSApIH0KICAgICAgICAgcmV0dXJuIHJldHVybl9kaWN0Cj0yMAogICAgIEB3ZWIuZXhw
b3NlCiAgICAgZGVmIGdldF9lbWJlZF9odG1sX2FzeW5jKCBzZWxmLCB0cmFucywgaWQgKToKICAg
ICAgICAgIiIiIFJldHVybnMgSFRNTCBmb3IgZW1iZWRkaW5nIGEgZGF0YXNldCBpbiBhIHBhZ2Uu
ICIiIgotICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLmdldF9kYXRhc2V0KCB0cmFucywgaWQsIEZh
bHNlLCBUcnVlICkKKyAgICAgICAgZGVjb2RlZF9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZGVjb2Rl
X2lkKCBpZCApCisgICAgICAgIGRhdGFzZXQgPTNEIHNlbGYubWdycy5oZGFzLmFjY2Vzc2libGVf
YnlfaWQoIHRyYW5zLCBkZWNvZGVkX2lkLCB0cj0KYW5zLnVzZXIgKQorICAgICAgICBkYXRhc2V0
ID0zRCBzZWxmLm1ncnMuaGRhcy5lcnJvcl9pZl91cGxvYWRpbmcoIGRhdGFzZXQgKQogICAgICAg
ICBpZiBkYXRhc2V0OgogICAgICAgICAgICAgcmV0dXJuICJFbWJlZGRlZCBEYXRhc2V0ICclcyci
ICUgZGF0YXNldC5uYW1lCj0yMApAQCAtNTUyLDcgKzU1Nyw5IEBACiAgICAgZGVmIHJhdGVfYXN5
bmMoIHNlbGYsIHRyYW5zLCBpZCwgcmF0aW5nICk6CiAgICAgICAgICIiIiBSYXRlIGEgZGF0YXNl
dCBhc3luY2hyb25vdXNseSBhbmQgcmV0dXJuIHVwZGF0ZWQgY29tbXVuaXR5IGRhdD0KYS4gIiIi
Cj0yMAotICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLmdldF9kYXRhc2V0KCB0cmFucywgaWQsIGNo
ZWNrX293bmVyc2hpcD0zREZhbHNlLCA9CmNoZWNrX2FjY2Vzc2libGU9M0RUcnVlICkKKyAgICAg
ICAgZGVjb2RlZF9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBpZCApCisgICAgICAg
IGRhdGFzZXQgPTNEIHNlbGYubWdycy5oZGFzLmFjY2Vzc2libGVfYnlfaWQoIHRyYW5zLCBkZWNv
ZGVkX2lkLCB0cj0KYW5zLnVzZXIgKQorICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLm1ncnMuaGRh
cy5lcnJvcl9pZl91cGxvYWRpbmcoIGRhdGFzZXQgKQogICAgICAgICBpZiBub3QgZGF0YXNldDoK
ICAgICAgICAgICAgIHJldHVybiB0cmFucy5zaG93X2Vycm9yX21lc3NhZ2UoICJUaGUgc3BlY2lm
aWVkIGRhdGFzZXQgZG9lcyBuPQpvdCBleGlzdC4iICkKPTIwCkBAIC01NjQsMTMgKzU3MSwxNiBA
QAogICAgIEB3ZWIuZXhwb3NlCiAgICAgZGVmIGRpc3BsYXlfYnlfdXNlcm5hbWVfYW5kX3NsdWco
IHNlbGYsIHRyYW5zLCB1c2VybmFtZSwgc2x1ZywgZmlsZW5hbT0KZT0zRE5vbmUsIHByZXZpZXc9
M0RUcnVlICk6CiAgICAgICAgICIiIiBEaXNwbGF5IGRhdGFzZXQgYnkgdXNlcm5hbWUgYW5kIHNs
dWc7IGJlY2F1c2UgZGF0YXNldHMgZG8gbm90ID0KeWV0IGhhdmUgc2x1Z3MsIHRoZSBzbHVnIGlz
IHRoZSBkYXRhc2V0J3MgaWQuICIiIgotICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLmdldF9kYXRh
c2V0KCB0cmFucywgc2x1ZywgRmFsc2UsIFRydWUgKQorICAgICAgICBpZCA9M0Qgc2x1ZworICAg
ICAgICBkZWNvZGVkX2lkID0zRCB0cmFucy5zZWN1cml0eS5kZWNvZGVfaWQoIGlkICkKKyAgICAg
ICAgZGF0YXNldCA9M0Qgc2VsZi5tZ3JzLmhkYXMuYWNjZXNzaWJsZV9ieV9pZCggdHJhbnMsIGRl
Y29kZWRfaWQsIHRyPQphbnMudXNlciApCisgICAgICAgIGRhdGFzZXQgPTNEIHNlbGYubWdycy5o
ZGFzLmVycm9yX2lmX3VwbG9hZGluZyggZGF0YXNldCApCiAgICAgICAgIGlmIGRhdGFzZXQ6CiAg
ICAgICAgICAgICAjIEZpbGVuYW1lIHVzZWQgZm9yIGNvbXBvc2l0ZSB0eXBlcy4KICAgICAgICAg
ICAgIGlmIGZpbGVuYW1lOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmRpc3BsYXkoIHRy
YW5zLCBkYXRhc2V0X2lkPTNEc2x1ZywgZmlsZW5hbWU9M0Q9CmZpbGVuYW1lKQo9MjAKLSAgICAg
ICAgICAgIHRydW5jYXRlZCwgZGF0YXNldF9kYXRhID0zRCBzZWxmLmdldF9kYXRhKCBkYXRhc2V0
LCBwcmV2aWV3ICkKKyAgICAgICAgICAgIHRydW5jYXRlZCwgZGF0YXNldF9kYXRhID0zRCBzZWxm
Lm1ncnMuaGRhcy50ZXh0X2RhdGEoIGRhdGFzZXQsPQogcHJldmlldyApCiAgICAgICAgICAgICBk
YXRhc2V0LmFubm90YXRpb24gPTNEIHNlbGYuZ2V0X2l0ZW1fYW5ub3RhdGlvbl9zdHIoIHRyYW5z
LnNhXz0Kc2Vzc2lvbiwgZGF0YXNldC5oaXN0b3J5LnVzZXIsIGRhdGFzZXQgKQo9MjAKICAgICAg
ICAgICAgICMgSWYgZGF0YXNldCBpcyBjaHVua2FibGUsIGdldCBmaXJzdCBjaHVuay4KQEAgLTYw
NSwxNyArNjE1LDIyIEBACiAgICAgZGVmIGdldF9pdGVtX2NvbnRlbnRfYXN5bmMoIHNlbGYsIHRy
YW5zLCBpZCApOgogICAgICAgICAiIiIgUmV0dXJucyBpdGVtIGNvbnRlbnQgaW4gSFRNTCBmb3Jt
YXQuICIiIgo9MjAKLSAgICAgICAgZGF0YXNldCA9M0Qgc2VsZi5nZXRfZGF0YXNldCggdHJhbnMs
IGlkLCBGYWxzZSwgVHJ1ZSApCisgICAgICAgIGRlY29kZWRfaWQgPTNEIHRyYW5zLnNlY3VyaXR5
LmRlY29kZV9pZCggaWQgKQorICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLm1ncnMuaGRhcy5hY2Nl
c3NpYmxlX2J5X2lkKCB0cmFucywgZGVjb2RlZF9pZCwgdHI9CmFucy51c2VyICkKKyAgICAgICAg
ZGF0YXNldCA9M0Qgc2VsZi5tZ3JzLmhkYXMuZXJyb3JfaWZfdXBsb2FkaW5nKCBkYXRhc2V0ICkK
ICAgICAgICAgaWYgZGF0YXNldCBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2Ugd2ViLmh0dHBl
eGNlcHRpb25zLkhUVFBOb3RGb3VuZCgpCi0gICAgICAgIHRydW5jYXRlZCwgZGF0YXNldF9kYXRh
ID0zRCBzZWxmLmdldF9kYXRhKCBkYXRhc2V0LCBwcmV2aWV3PTNEVHJ1ZT0KICkKKyAgICAgICAg
dHJ1bmNhdGVkLCBkYXRhc2V0X2RhdGEgPTNEIHNlbGYubWdycy5oZGFzLnRleHRfZGF0YSggZGF0
YXNldCwgcHJlPQp2aWV3PTNEVHJ1ZSApCiAgICAgICAgICMgR2V0IGFubm90YXRpb24uCiAgICAg
ICAgIGRhdGFzZXQuYW5ub3RhdGlvbiA9M0Qgc2VsZi5nZXRfaXRlbV9hbm5vdGF0aW9uX3N0cigg
dHJhbnMuc2Ffc2Vzcz0KaW9uLCB0cmFucy51c2VyLCBkYXRhc2V0ICkKICAgICAgICAgcmV0dXJu
IHRyYW5zLnN0cmVhbV90ZW1wbGF0ZV9tYWtvKCAiL2RhdGFzZXQvaXRlbV9jb250ZW50Lm1ha28i
LCBpPQp0ZW09M0RkYXRhc2V0LCBpdGVtX2RhdGE9M0RkYXRhc2V0X2RhdGEsIHRydW5jYXRlZD0z
RHRydW5jYXRlZCApCj0yMAogICAgIEB3ZWIuZXhwb3NlCiAgICAgZGVmIGFubm90YXRlX2FzeW5j
KCBzZWxmLCB0cmFucywgaWQsIG5ld19hbm5vdGF0aW9uPTNETm9uZSwgKiprd2FyZ3MgKToKLSAg
ICAgICAgZGF0YXNldCA9M0Qgc2VsZi5nZXRfZGF0YXNldCggdHJhbnMsIGlkLCBGYWxzZSwgVHJ1
ZSApCisgICAgICAgICNUT0RPOj8/IHdoeSBpcyB0aGlzIGFuIGFjY2VzcyBjaGVjayBvbmx5Pwor
ICAgICAgICBkZWNvZGVkX2lkID0zRCB0cmFucy5zZWN1cml0eS5kZWNvZGVfaWQoIGlkICkKKyAg
ICAgICAgZGF0YXNldCA9M0Qgc2VsZi5tZ3JzLmhkYXMuYWNjZXNzaWJsZV9ieV9pZCggdHJhbnMs
IGRlY29kZWRfaWQsIHRyPQphbnMudXNlciApCisgICAgICAgIGRhdGFzZXQgPTNEIHNlbGYubWdy
cy5oZGFzLmVycm9yX2lmX3VwbG9hZGluZyggZGF0YXNldCApCiAgICAgICAgIGlmIG5vdCBkYXRh
c2V0OgogICAgICAgICAgICAgd2ViLmh0dHBleGNlcHRpb25zLkhUVFBOb3RGb3VuZCgpCiAgICAg
ICAgIGlmIGRhdGFzZXQgYW5kIG5ld19hbm5vdGF0aW9uOgpAQCAtNjI3LDcgKzY0Miw5IEBACj0y
MAogICAgIEB3ZWIuZXhwb3NlCiAgICAgZGVmIGdldF9hbm5vdGF0aW9uX2FzeW5jKCBzZWxmLCB0
cmFucywgaWQgKToKLSAgICAgICAgZGF0YXNldCA9M0Qgc2VsZi5nZXRfZGF0YXNldCggdHJhbnMs
IGlkLCBGYWxzZSwgVHJ1ZSApCisgICAgICAgIGRlY29kZWRfaWQgPTNEIHRyYW5zLnNlY3VyaXR5
LmRlY29kZV9pZCggaWQgKQorICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLm1ncnMuaGRhcy5hY2Nl
c3NpYmxlX2J5X2lkKCB0cmFucywgZGVjb2RlZF9pZCwgdHI9CmFucy51c2VyICkKKyAgICAgICAg
ZGF0YXNldCA9M0Qgc2VsZi5tZ3JzLmhkYXMuZXJyb3JfaWZfdXBsb2FkaW5nKCBkYXRhc2V0ICkK
ICAgICAgICAgaWYgbm90IGRhdGFzZXQ6CiAgICAgICAgICAgICB3ZWIuaHR0cGV4Y2VwdGlvbnMu
SFRUUE5vdEZvdW5kKCkKICAgICAgICAgYW5ub3RhdGlvbiA9M0Qgc2VsZi5nZXRfaXRlbV9hbm5v
dGF0aW9uX3N0ciggdHJhbnMuc2Ffc2Vzc2lvbiwgdHJhPQpucy51c2VyLCBkYXRhc2V0ICkKQEAg
LTc3Niw3ICs3OTMsNyBAQAogICAgICAgICAgICAgaGRhLm1hcmtfZGVsZXRlZCgpCiAgICAgICAg
ICAgICBoZGEuY2xlYXJfYXNzb2NpYXRlZF9maWxlcygpCiAgICAgICAgICAgICB0cmFucy5sb2df
ZXZlbnQoICJEYXRhc2V0IGlkICVzIG1hcmtlZCBhcyBkZWxldGVkIiAlIHN0cihpZCkgKQotICAg
ICAgICAgICAgc2VsZi5zdG9wX2hkYV9jcmVhdGluZ19qb2IoIGhkYSApCisgICAgICAgICAgICBz
ZWxmLm1ncnMuaGRhcy5zdG9wX2NyZWF0aW5nX2pvYiggaGRhICkKICAgICAgICAgICAgIHRyYW5z
LnNhX3Nlc3Npb24uZmx1c2goKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgogICAgICAg
ICAgICAgbXNnID0zRCAnSERBIGRlbGV0aW9uIGZhaWxlZCAoZW5jb2RlZDogJXMsIGRlY29kZWQ6
ICVzKScgJSAoIGQ9CmF0YXNldF9pZCwgaWQgKQpAQCAtMTEwMiw3ICsxMTE5LDEwIEBACiAgICAg
ICAgICAgICAgICAgaWYgdXNlciAhPTNEIGhpc3RvcnkudXNlcjoKICAgICAgICAgICAgICAgICAg
ICAgZXJyb3JfbXNnID0zRCBlcnJvcl9tc2cgKyAiWW91IGRvIG5vdCBoYXZlIHBlcm1pc3Npb24g
PQp0byBhZGQgZGF0YXNldHMgdG8gJWkgcmVxdWVzdGVkIGhpc3Rvcmllcy4gICIgJSAoIGxlbigg
dGFyZ2V0X2hpc3RvcmllcyApICkKICAgICAgICAgICAgIGZvciBkYXRhc2V0X2lkIGluIGRhdGFz
ZXRfaWRzOgotICAgICAgICAgICAgICAgIGRhdGEgPTNEIHNlbGYuZ2V0X2RhdGFzZXQoIHRyYW5z
LCBkYXRhc2V0X2lkLCBGYWxzZSwgVHJ1ZSApCisgICAgICAgICAgICAgICAgZGVjb2RlZF9pZCA9
M0QgdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBkYXRhc2V0X2lkICkKKyAgICAgICAgICAgICAg
ICBkYXRhID0zRCBzZWxmLm1ncnMuaGRhcy5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgZGVjb2Rl
ZF9pPQpkLCB0cmFucy51c2VyICkKKyAgICAgICAgICAgICAgICBkYXRhID0zRCBzZWxmLm1ncnMu
aGRhcy5lcnJvcl9pZl91cGxvYWRpbmcoIGRhdGEgKQorCiAgICAgICAgICAgICAgICAgaWYgZGF0
YSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICBlcnJvcl9tc2cgPTNEIGVycm9yX21zZyAr
ICJZb3UgdHJpZWQgdG8gY29weSBhIGRhdGFzZXQ9CiB0aGF0IGRvZXMgbm90IGV4aXN0IG9yIHRo
YXQgeW91IGRvIG5vdCBoYXZlIGFjY2VzcyB0by4gICIKICAgICAgICAgICAgICAgICAgICAgaW52
YWxpZF9kYXRhc2V0cyArPTNEIDEKCmRpZmYgLXIgYTNhNmM3Mjk5M2E3YTYzYjc0NzM5Y2JiNmE5
MWI5OTY1MDFkMTEzNyAtciAzOWZiZjFkOTI1MDc3OTdmMTAxMTQ1MD0KODNlZjMyN2NkMTI3MThm
YjkgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9oaXN0b3J5LnB5Ci0tLSBh
L2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvaGlzdG9yeS5weQorKysgYi9s
aWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL2hpc3RvcnkucHkKQEAgLTE4LDcg
KzE4LDYgQEAKPTIwCiBmcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9sbGVyIGltcG9ydCBCYXNl
VUlDb250cm9sbGVyCiBmcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9sbGVyIGltcG9ydCBTaGFy
YWJsZU1peGluCi1mcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9sbGVyIGltcG9ydCBVc2VzSGlz
dG9yeURhdGFzZXRBc3NvY2lhdGlvbk1peGluCiBmcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250cm9s
bGVyIGltcG9ydCBFeHBvcnRzSGlzdG9yeU1peGluCiBmcm9tIGdhbGF4eS53ZWIuYmFzZS5jb250
cm9sbGVyIGltcG9ydCBJbXBvcnRzSGlzdG9yeU1peGluCiBmcm9tIGdhbGF4eS5tb2RlbC5pdGVt
X2F0dHJzIGltcG9ydCBVc2VzQW5ub3RhdGlvbnMKQEAgLTIxMSw4ICsyMTAsNyBAQAogICAgICAg
ICByZXR1cm4gcXVlcnkuZmlsdGVyKCBzZWxmLm1vZGVsX2NsYXNzLnB1Ymxpc2hlZCA9M0Q9M0Qg
VHJ1ZSApLmZpbHQ9CmVyKCBzZWxmLm1vZGVsX2NsYXNzLnNsdWcgIT0zRCBOb25lICkuZmlsdGVy
KCBzZWxmLm1vZGVsX2NsYXNzLmRlbGV0ZWQgPTNEPQo9M0QgRmFsc2UgKQo9MjAKIGNsYXNzIEhp
c3RvcnlDb250cm9sbGVyKCBCYXNlVUlDb250cm9sbGVyLCBTaGFyYWJsZU1peGluLCBVc2VzQW5u
b3RhdGlvbnMsPQogVXNlc0l0ZW1SYXRpbmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgIFVz
ZXNIaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uTWl4aW4sIEV4cG9ydHNIaXN0b3I9CnlNaXhpbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBJbXBvcnRzSGlzdG9yeU1peGluICk6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgRXhwb3J0c0hpc3RvcnlNaXhpbiwgSW1wb3J0c0hpc3RvcnlNaXhp
biApOgo9MjAKICAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgogICAgICAgICBzdXBlcigg
SGlzdG9yeUNvbnRyb2xsZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwICkKCmRpZmYgLXIgYTNhNmM3
Mjk5M2E3YTYzYjc0NzM5Y2JiNmE5MWI5OTY1MDFkMTEzNyAtciAzOWZiZjFkOTI1MDc3OTdmMTAx
MTQ1MD0KODNlZjMyN2NkMTI3MThmYjkgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9s
bGVycy9wYWdlLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMv
cGFnZS5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL3BhZ2Uu
cHkKQEAgLTI5MCw3ICsyOTAsOCBAQAogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CiAg
ICAgICAgIHN1cGVyKCBQYWdlQ29udHJvbGxlciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQogICAg
ICAgICBzZWxmLm1ncnMgPTNEIHV0aWwuYnVuY2guQnVuY2goCi0gICAgICAgICAgICBoaXN0b3Jp
ZXM9M0RtYW5hZ2Vycy5oaXN0b3JpZXMuSGlzdG9yeU1hbmFnZXIoIGFwcCApCisgICAgICAgICAg
ICBoaXN0b3JpZXM9M0RtYW5hZ2Vycy5oaXN0b3JpZXMuSGlzdG9yeU1hbmFnZXIoIGFwcCApLAor
ICAgICAgICAgICAgaGRhcz0zRG1hbmFnZXJzLmhkYXMuSERBTWFuYWdlciggYXBwICksCiAgICAg
ICAgICkKPTIwCiAgICAgQHdlYi5leHBvc2UKQEAgLTc3OCwxMCArNzc5LDEzIEBACiAgICAgICAg
ICAgICByZXR1cm4gc2VsZi5fZ2V0X2VtYmVkZGVkX2hpc3RvcnlfaHRtbCggdHJhbnMsIGl0ZW1f
aWQgKQo9MjAKICAgICAgICAgZWxpZiBpdGVtX2NsYXNzID0zRD0zRCBtb2RlbC5IaXN0b3J5RGF0
YXNldEFzc29jaWF0aW9uOgotICAgICAgICAgICAgZGF0YXNldCA9M0Qgc2VsZi5nZXRfZGF0YXNl
dCggdHJhbnMsIGl0ZW1faWQsIEZhbHNlLCBUcnVlICkKKyAgICAgICAgICAgIGRlY29kZWRfaWQg
PTNEIHRyYW5zLnNlY3VyaXR5LmRlY29kZV9pZCggaXRlbV9pZCApCisgICAgICAgICAgICBkYXRh
c2V0ID0zRCBzZWxmLm1ncnMuaGRhcy5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgZGVjb2RlZF9p
ZD0KLCB0cmFucy51c2VyICkKKyAgICAgICAgICAgIGRhdGFzZXQgPTNEIHNlbGYubWdycy5oZGFz
LmVycm9yX2lmX3VwbG9hZGluZyggZGF0YXNldCApCisKICAgICAgICAgICAgIGRhdGFzZXQuYW5u
b3RhdGlvbiA9M0Qgc2VsZi5nZXRfaXRlbV9hbm5vdGF0aW9uX3N0ciggdHJhbnMuc2FfPQpzZXNz
aW9uLCBkYXRhc2V0Lmhpc3RvcnkudXNlciwgZGF0YXNldCApCiAgICAgICAgICAgICBpZiBkYXRh
c2V0OgotICAgICAgICAgICAgICAgIGRhdGEgPTNEIHNlbGYuZ2V0X2RhdGEoIGRhdGFzZXQgKQor
ICAgICAgICAgICAgICAgIGRhdGEgPTNEIHNlbGYubWdycy5oZGFzLnRleHRfZGF0YSggZGF0YXNl
dCApCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zLmZpbGxfdGVtcGxhdGUoICJkYXRhc2V0
L2VtYmVkLm1ha28iLCBpdGVtPTNEZD0KYXRhc2V0LCBpdGVtX2RhdGE9M0RkYXRhICkKPTIwCiAg
ICAgICAgIGVsaWYgaXRlbV9jbGFzcyA9M0Q9M0QgbW9kZWwuU3RvcmVkV29ya2Zsb3c6CgpkaWZm
IC1yIGEzYTZjNzI5OTNhN2E2M2I3NDczOWNiYjZhOTFiOTk2NTAxZDExMzcgLXIgMzlmYmYxZDky
NTA3Nzk3ZjEwMTE0NTA9CjgzZWYzMjdjZDEyNzE4ZmI5IGxpYi9nYWxheHkvd2ViYXBwcy9nYWxh
eHkvY29udHJvbGxlcnMvcm9vdC5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2Nv
bnRyb2xsZXJzL3Jvb3QucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9s
bGVycy9yb290LnB5CkBAIC03LDcgKzcsNyBAQAo9MjAKIGZyb20gcGFzdGUuaHR0cGV4Y2VwdGlv
bnMgaW1wb3J0IEhUVFBOb3RGb3VuZCwgSFRUUEJhZEdhdGV3YXkKPTIwCi1mcm9tIGdhbGF4eS53
ZWIuYmFzZS5jb250cm9sbGVyIGltcG9ydCBCYXNlVUlDb250cm9sbGVyLCBVc2VzSGlzdG9yeURh
dGFzZT0KdEFzc29jaWF0aW9uTWl4aW4KK2Zyb20gZ2FsYXh5LndlYi5iYXNlLmNvbnRyb2xsZXIg
aW1wb3J0IEJhc2VVSUNvbnRyb2xsZXIKIGZyb20gZ2FsYXh5IGltcG9ydCBtYW5hZ2Vycwo9MjAK
IGZyb20gZ2FsYXh5IGltcG9ydCB3ZWIKQEAgLTIwLDcgKzIwLDcgQEAKIGltcG9ydCBsb2dnaW5n
CiBsb2cgPTNEIGxvZ2dpbmcuZ2V0TG9nZ2VyKCBfX25hbWVfXyApCj0yMAotY2xhc3MgUm9vdENv
bnRyb2xsZXIoIEJhc2VVSUNvbnRyb2xsZXIsIFVzZXNIaXN0b3J5RGF0YXNldEFzc29jaWF0aW9u
TWl4aW49CiwgVXNlc0Fubm90YXRpb25zICk6CitjbGFzcyBSb290Q29udHJvbGxlciggQmFzZVVJ
Q29udHJvbGxlciwgVXNlc0Fubm90YXRpb25zICk6CiAgICAgIiIiCiAgICAgQ29udHJvbGxlciBj
bGFzcyB0aGF0IG1hcHMgdG8gdGhlIHVybCByb290IG9mIEdhbGF4eSAoaS5lLiAnLycpLgogICAg
ICIiIgoKZGlmZiAtciBhM2E2YzcyOTkzYTdhNjNiNzQ3MzljYmI2YTkxYjk5NjUwMWQxMTM3IC1y
IDM5ZmJmMWQ5MjUwNzc5N2YxMDExNDUwPQo4M2VmMzI3Y2QxMjcxOGZiOSBsaWIvZ2FsYXh5L3dl
YmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL3Zpc3VhbGl6YXRpb24ucHkKLS0tIGEvbGliL2dhbGF4
eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy92aXN1YWxpemF0aW9uLnB5CisrKyBiL2xpYi9n
YWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvdmlzdWFsaXphdGlvbi5weQpAQCAtNyw2
ICs3LDcgQEAKIGZyb20gcGFzdGUuaHR0cGV4Y2VwdGlvbnMgaW1wb3J0IEhUVFBOb3RGb3VuZCwg
SFRUUEJhZFJlcXVlc3QKPTIwCiBmcm9tIGdhbGF4eSBpbXBvcnQgbW9kZWwsIHdlYgorZnJvbSBn
YWxheHkgaW1wb3J0IG1hbmFnZXJzCiBmcm9tIGdhbGF4eS5tb2RlbC5pdGVtX2F0dHJzIGltcG9y
dCBVc2VzQW5ub3RhdGlvbnMsIFVzZXNJdGVtUmF0aW5ncwogZnJvbSBnYWxheHkud2ViLmJhc2Uu
Y29udHJvbGxlciBpbXBvcnQgQmFzZVVJQ29udHJvbGxlciwgU2hhcmFibGVNaXhpbiwgVXM9CmVz
VmlzdWFsaXphdGlvbk1peGluCiBmcm9tIGdhbGF4eS53ZWIuZnJhbWV3b3JrLmhlbHBlcnMgaW1w
b3J0IHRpbWVfYWdvLCBncmlkcywgZXNjYXBlCkBAIC0yNzEsOSArMjcyLDggQEAKICAgICAgICAg
cmV0dXJuIHF1ZXJ5LmZpbHRlciggc2VsZi5tb2RlbF9jbGFzcy5kZWxldGVkPTNEPTNERmFsc2Ug
KS5maWx0ZXIoPQogc2VsZi5tb2RlbF9jbGFzcy5wdWJsaXNoZWQ9M0Q9M0RUcnVlICkKPTIwCj0y
MAotY2xhc3MgVmlzdWFsaXphdGlvbkNvbnRyb2xsZXIoIEJhc2VVSUNvbnRyb2xsZXIsIFNoYXJh
YmxlTWl4aW4sIFVzZXNBbm5vdGE9CnRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVc2VzVmlzdWFsaXphdGlvbk1peGluLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVc2VzSXRlbVJhdGluZ3MgKToKK2NsYXNzIFZpc3VhbGl6YXRpb25Db250cm9sbGVyKCBC
YXNlVUlDb250cm9sbGVyLCBTaGFyYWJsZU1peGluLCBVc2VzVmlzdWFsPQppemF0aW9uTWl4aW4s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlc0Fubm90YXRpb25zLCBVc2VzSXRl
bVJhdGluZ3MgKToKICAgICBfdXNlcl9saXN0X2dyaWQgPTNEIFZpc3VhbGl6YXRpb25MaXN0R3Jp
ZCgpCiAgICAgX3B1Ymxpc2hlZF9saXN0X2dyaWQgPTNEIFZpc3VhbGl6YXRpb25BbGxQdWJsaXNo
ZWRHcmlkKCkKICAgICBfbGlicmFyaWVzX2dyaWQgPTNEIExpYnJhcnlTZWxlY3Rpb25HcmlkKCkK
QEAgLTI4MSw2ICsyODEsMTIgQEAKICAgICBfaGlzdG9yeV9kYXRhc2V0c19ncmlkID0zRCBIaXN0
b3J5RGF0YXNldHNTZWxlY3Rpb25HcmlkKCkKICAgICBfdHJhY2tzX2dyaWQgPTNEIFRyYWNrc3Rl
clNlbGVjdGlvbkdyaWQoKQo9MjAKKyAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgorICAg
ICAgICBzdXBlciggVmlzdWFsaXphdGlvbkNvbnRyb2xsZXIsIHNlbGYgKS5fX2luaXRfXyggYXBw
ICkKKyAgICAgICAgc2VsZi5tZ3JzID0zRCB1dGlsLmJ1bmNoLkJ1bmNoKAorICAgICAgICAgICAg
aGRhcz0zRG1hbmFnZXJzLmhkYXMuSERBTWFuYWdlciggYXBwICksCisgICAgICAgICkKKwogICAg
ICMKICAgICAjIC0tIEZ1bmN0aW9ucyBmb3IgbGlzdGluZyB2aXN1YWxpemF0aW9ucy4gLS0KICAg
ICAjCkBAIC04NjIsNyArODY4LDkgQEAKICAgICAgICAgICAgICMgdXNlIGRia2V5IGZyb20gZGF0
YXNldCB0byBiZSBhZGRlZCBvciBmcm9tIGluY29taW5nIHBhcmFtZXRlcgogICAgICAgICAgICAg
ZGJrZXkgPTNEIE5vbmUKICAgICAgICAgICAgIGlmIG5ld19kYXRhc2V0X2lkOgotICAgICAgICAg
ICAgICAgIGRia2V5ID0zRCBzZWxmLmdldF9kYXRhc2V0KCB0cmFucywgbmV3X2RhdGFzZXRfaWQg
KS5kYmtleQorICAgICAgICAgICAgICAgIGRlY29kZWRfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmRl
Y29kZV9pZCggbmV3X2RhdGFzZXRfaWQgKQorICAgICAgICAgICAgICAgIGhkYSA9M0Qgc2VsZi5t
Z3JzLmhkYXMub3duZWRfYnlfaWQoIHRyYW5zLCBkZWNvZGVkX2lkLCB0cmE9Cm5zLnVzZXIgKQor
ICAgICAgICAgICAgICAgIGRia2V5ID0zRCBoZGEuZGJrZXkKICAgICAgICAgICAgICAgICBpZiBk
YmtleSA9M0Q9M0QgJz8nOgogICAgICAgICAgICAgICAgICAgICBkYmtleSA9M0Qga3dhcmdzLmdl
dCggImRia2V5IiwgTm9uZSApCj0yMApAQCAtOTcwLDExICs5NzgsMTIgQEAKICAgICAgICAgICAg
ICMgTG9hZGluZyBhIHNoYXJlZCB2aXN1YWxpemF0aW9uLgogICAgICAgICAgICAgdml6ID0zRCBz
ZWxmLmdldF92aXN1YWxpemF0aW9uKCB0cmFucywgaWQgKQogICAgICAgICAgICAgdml6X2NvbmZp
ZyA9M0Qgc2VsZi5nZXRfdmlzdWFsaXphdGlvbl9jb25maWcoIHRyYW5zLCB2aXogKQotICAgICAg
ICAgICAgZGF0YXNldCA9M0Qgc2VsZi5nZXRfZGF0YXNldCggdHJhbnMsIHZpel9jb25maWdbICdk
YXRhc2V0X2lkJyA9Cl0gKQorICAgICAgICAgICAgZGVjb2RlZF9pZCA9M0QgdHJhbnMuc2VjdXJp
dHkuZGVjb2RlX2lkKCB2aXpfY29uZmlnWyAnZGF0YXNldF89CmlkJyBdICkKKyAgICAgICAgICAg
IGRhdGFzZXQgPTNEIHNlbGYubWdycy5oZGFzLm93bmVkX2J5X2lkKCB0cmFucywgZGVjb2RlZF9p
ZCwgdHJhPQpucy51c2VyICkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgTG9hZGluZyBu
ZXcgdmlzdWFsaXphdGlvbi4KICAgICAgICAgICAgIGRhdGFzZXQgPTNEIHNlbGYuZ2V0X2hkYV9v
cl9sZGRhKCB0cmFucywgaGRhX2xkZGEsIGRhdGFzZXRfaWQgKQotICAgICAgICAgICAgam9iID0z
RCBzZWxmLmdldF9oZGFfam9iKCBkYXRhc2V0ICkKKyAgICAgICAgICAgIGpvYiA9M0Qgc2VsZi5t
Z3JzLmhkYXMuY3JlYXRpbmdfam9iKCBkYXRhc2V0ICkKICAgICAgICAgICAgIHZpel9jb25maWcg
PTNEIHsKICAgICAgICAgICAgICAgICAnZGF0YXNldF9pZCc6IGRhdGFzZXRfaWQsCiAgICAgICAg
ICAgICAgICAgJ3Rvb2xfaWQnOiBqb2IudG9vbF9pZCwKQEAgLTEwMDQsNyArMTAxMyw5IEBACj0y
MAogICAgICAgICAjIGdldCB0aGUgaGRhIGlmIHdlIGNhbiwgdGhlbiBpdHMgZGF0YSB1c2luZyB0
aGUgcGh5bG92aXogcGFyc2VycwogICAgICAgICBpZiBkYXRhc2V0X2lkOgotICAgICAgICAgICAg
aGRhID0zRCBzZWxmLmdldF9kYXRhc2V0KCB0cmFucywgZGF0YXNldF9pZCwgY2hlY2tfb3duZXJz
aGlwPQo9M0RGYWxzZSwgY2hlY2tfYWNjZXNzaWJsZT0zRFRydWUgKQorICAgICAgICAgICAgZGVj
b2RlZF9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBkYXRhc2V0X2lkICkKKyAgICAg
ICAgICAgIGhkYSA9M0Qgc2VsZi5tZ3JzLmhkYXMuYWNjZXNzaWJsZV9ieV9pZCggdHJhbnMsIGRl
Y29kZWRfaWQsIHRyPQphbnMudXNlciApCisgICAgICAgICAgICBoZGEgPTNEIHNlbGYubWdycy5o
ZGFzLmVycm9yX2lmX3VwbG9hZGluZyggaGRhICkKICAgICAgICAgZWxzZToKICAgICAgICAgICAg
IHJldHVybiB0cmFucy5zaG93X21lc3NhZ2UoICJQaHlsb3ZpeiBjb3VsZG4ndCBmaW5kIGEgZGF0
YXNldF9pPQpkIiApCj0yMAoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNl
bnRyYWwvY29tbWl0cy81ZjEyZTNmYTZjOGEvCkNoYW5nZXNldDogICA1ZjEyZTNmYTZjOGEKVXNl
cjogICAgICAgIGNhcmxmZWJlcmhhcmQKRGF0ZTogICAgICAgIDIwMTUtMDEtMDkgMjI6NDA6MDEr
MDA6MDAKU3VtbWFyeTogICAgIFJlbW92ZSBVc2VzSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbk1p
eGluCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYgLXIgMzlmYmYxZDkyNTA3Nzk3ZjEwMTE0NTA4
M2VmMzI3Y2QxMjcxOGZiOSAtciA1ZjEyZTNmYTZjOGFkNTc5ODkzMjk4YT0KNzNmMjhhZDdmOTVk
NzE0OWUgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvZXh0ZW5kZWRfbWV0YWRhdGEucHkK
LS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvZXh0ZW5kZWRfbWV0YWRhdGEucHkK
KysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvZXh0ZW5kZWRfbWV0YWRhdGEucHkK
QEAgLTMsNiArMyw4IEBACiAiIiIKIGltcG9ydCBsb2dnaW5nCiBmcm9tIGdhbGF4eSBpbXBvcnQg
d2ViCitmcm9tIGdhbGF4eSBpbXBvcnQgbWFuYWdlcnMKKwogZnJvbSBnYWxheHkud2ViLmJhc2Uu
Y29udHJvbGxlciBpbXBvcnQgIEJhc2VBUElDb250cm9sbGVyLCBVc2VzTGlicmFyeU1peGk9Cm5J
dGVtcywgVXNlc1N0b3JlZFdvcmtmbG93TWl4aW4sIFVzZXNFeHRlbmRlZE1ldGFkYXRhTWl4aW4s
IEhUVFBOb3RJbXBsZW1lbj0KdGVkCj0yMAogbG9nID0zRCBsb2dnaW5nLmdldExvZ2dlciggX19u
YW1lX18gKQoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29t
bWl0cy81MzA1ZTRkMWM5OWQvCkNoYW5nZXNldDogICA1MzA1ZTRkMWM5OWQKVXNlcjogICAgICAg
IGNhcmxmZWJlcmhhcmQKRGF0ZTogICAgICAgIDIwMTUtMDEtMDkgMjI6NDM6MzYrMDA6MDAKU3Vt
bWFyeTogICAgIFNlZSAuLi50aGlzIGlzIHdoYXQgSSBnZXQgdHJ5aW5nIHRvIGNvbW1pdCBvbiBh
IEZyaWRheSBFdmVuaW5nPQouLi4KQWZmZWN0ZWQgIzogIDMgZmlsZXMKCmRpZmYgLXIgNWYxMmUz
ZmE2YzhhZDU3OTg5MzI5OGE3M2YyOGFkN2Y5NWQ3MTQ5ZSAtciA1MzA1ZTRkMWM5OWQ0NzhhZGE1
ZmQ2Mj0KOTMwZTQyODc1ZGE0OGZkMWMgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvZm9s
ZGVyX2NvbnRlbnRzLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2ZvbGRl
cl9jb250ZW50cy5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9mb2xkZXJf
Y29udGVudHMucHkKQEAgLTI0LDcgKzI0LDcgQEAKICAgICBkZWYgX19pbml0X18oIHNlbGYsIGFw
cCApOgogICAgICAgICBzdXBlciggRm9sZGVyQ29udGVudHNDb250cm9sbGVyLCBzZWxmICkuX19p
bml0X18oIGFwcCApCiAgICAgICAgIHNlbGYuZm9sZGVyX21hbmFnZXIgPTNEIGZvbGRlcnMuRm9s
ZGVyTWFuYWdlcigpCi0gICAgICAgIHNlbGYuaGRhX21hbmFnZXIgPTNEIG1hbmFnZXJzLmhkYXMu
SERBTWFuYWdlcigpCisgICAgICAgIHNlbGYuaGRhX21hbmFnZXIgPTNEIG1hbmFnZXJzLmhkYXMu
SERBTWFuYWdlciggYXBwICkKPTIwCiAgICAgQGV4cG9zZV9hcGlfYW5vbnltb3VzCiAgICAgZGVm
IGluZGV4KCBzZWxmLCB0cmFucywgZm9sZGVyX2lkLCAqKmt3ZCApOgoKZGlmZiAtciA1ZjEyZTNm
YTZjOGFkNTc5ODkzMjk4YTczZjI4YWQ3Zjk1ZDcxNDllIC1yIDUzMDVlNGQxYzk5ZDQ3OGFkYTVm
ZDYyPQo5MzBlNDI4NzVkYTQ4ZmQxYyBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9qb2Jz
LnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2pvYnMucHkKKysrIGIvbGli
L2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvam9icy5weQpAQCAtMTMsNiArMTMsNyBAQAogZnJv
bSBnYWxheHkgaW1wb3J0IGV4Y2VwdGlvbnMKIGZyb20gZ2FsYXh5IGltcG9ydCB1dGlsCiBmcm9t
IGdhbGF4eSBpbXBvcnQgbW9kZWwKK2Zyb20gZ2FsYXh5IGltcG9ydCBtYW5hZ2Vycwo9MjAKIGlt
cG9ydCBsb2dnaW5nCiBsb2cgPTNEIGxvZ2dpbmcuZ2V0TG9nZ2VyKCBfX25hbWVfXyApCkBAIC0y
Miw3ICsyMyw3IEBACj0yMAogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CiAgICAgICAg
IHN1cGVyKCBKb2JDb250cm9sbGVyLCBzZWxmICkuX19pbml0X18oIGFwcCApCi0gICAgICAgIHNl
bGYuaGRhX21hbmFnZXIgPTNEIG1hbmFnZXJzLmhkYXMuSERBTWFuYWdlcigpCisgICAgICAgIHNl
bGYuaGRhX21hbmFnZXIgPTNEIG1hbmFnZXJzLmhkYXMuSERBTWFuYWdlciggYXBwICkKPTIwCiAg
ICAgQGV4cG9zZV9hcGkKICAgICBkZWYgaW5kZXgoIHNlbGYsIHRyYW5zLCAqKmt3ZCApOgoKZGlm
ZiAtciA1ZjEyZTNmYTZjOGFkNTc5ODkzMjk4YTczZjI4YWQ3Zjk1ZDcxNDllIC1yIDUzMDVlNGQx
Yzk5ZDQ3OGFkYTVmZDYyPQo5MzBlNDI4NzVkYTQ4ZmQxYyBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2Fs
YXh5L2FwaS9saWJyYXJ5X2NvbnRlbnRzLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxh
eHkvYXBpL2xpYnJhcnlfY29udGVudHMucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4
eS9hcGkvbGlicmFyeV9jb250ZW50cy5weQpAQCAtNCw2ICs0LDcgQEAKIGZyb20gZ2FsYXh5IGlt
cG9ydCB1dGlsCiBmcm9tIGdhbGF4eSBpbXBvcnQgd2ViCiBmcm9tIGdhbGF4eSBpbXBvcnQgZXhj
ZXB0aW9ucworZnJvbSBnYWxheHkgaW1wb3J0IG1hbmFnZXJzCiBmcm9tIGdhbGF4eS53ZWIgaW1w
b3J0IF9mdXR1cmVfZXhwb3NlX2FwaSBhcyBleHBvc2VfYXBpCiBmcm9tIGdhbGF4eS53ZWIuYmFz
ZS5jb250cm9sbGVyIGltcG9ydCBCYXNlQVBJQ29udHJvbGxlciwgVXNlc0xpYnJhcnlNaXhpbj0K
LCBVc2VzTGlicmFyeU1peGluSXRlbXMKIGZyb20gZ2FsYXh5LndlYi5iYXNlLmNvbnRyb2xsZXIg
aW1wb3J0IEhUVFBCYWRSZXF1ZXN0LCB1cmxfZm9yCkBAIC0xOSw4ICsyMCw4IEBACiBjbGFzcyBM
aWJyYXJ5Q29udGVudHNDb250cm9sbGVyKCBCYXNlQVBJQ29udHJvbGxlciwgVXNlc0xpYnJhcnlN
aXhpbiwgVXNlcz0KTGlicmFyeU1peGluSXRlbXMgKToKPTIwCiAgICAgZGVmIF9faW5pdF9fKCBz
ZWxmLCBhcHAgKToKLSAgICAgICAgc3VwZXIoIEpvYkNvbnRyb2xsZXIsIHNlbGYgKS5fX2luaXRf
XyggYXBwICkKLSAgICAgICAgc2VsZi5oZGFfbWFuYWdlciA9M0QgbWFuYWdlcnMuaGRhcy5IREFN
YW5hZ2VyKCkKKyAgICAgICAgc3VwZXIoIExpYnJhcnlDb250ZW50c0NvbnRyb2xsZXIsIHNlbGYg
KS5fX2luaXRfXyggYXBwICkKKyAgICAgICAgc2VsZi5oZGFfbWFuYWdlciA9M0QgbWFuYWdlcnMu
aGRhcy5IREFNYW5hZ2VyKCBhcHAgKQo9MjAKICAgICBAZXhwb3NlX2FwaQogICAgIGRlZiBpbmRl
eCggc2VsZiwgdHJhbnMsIGxpYnJhcnlfaWQsICoqa3dkICk6CgoKaHR0cHM6Ly9iaXRidWNrZXQu
b3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzZhOGE3OWY5YjZkNS8KQ2hhbmdlc2V0
OiAgIDZhOGE3OWY5YjZkNQpVc2VyOiAgICAgICAgY2FybGZlYmVyaGFyZApEYXRlOiAgICAgICAg
MjAxNS0wMS0xMiAxNToxODo1NiswMDowMApTdW1tYXJ5OiAgICAgTWVyZ2VkIGdhbGF4eS9nYWxh
eHktY2VudHJhbCBpbnRvIGRlZmF1bHQKQWZmZWN0ZWQgIzogIDUzIGZpbGVzCgpkaWZmIC1yIDUz
MDVlNGQxYzk5ZDQ3OGFkYTVmZDYyOTMwZTQyODc1ZGE0OGZkMWMgLXIgNmE4YTc5ZjliNmQ1MmJm
OTZlMjJkOTQ9Cjc0MGY5YzM3YjQ0NGQ4ZDEyIGNsaWVudC9nYWxheHkvc2NyaXB0cy9nYWxheHku
d29ya2Zsb3dfZWRpdG9yLmNhbnZhcy5qcwotLS0gYS9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvZ2Fs
YXh5LndvcmtmbG93X2VkaXRvci5jYW52YXMuanMKKysrIGIvY2xpZW50L2dhbGF4eS9zY3JpcHRz
L2dhbGF4eS53b3JrZmxvd19lZGl0b3IuY2FudmFzLmpzCkBAIC04MDUsNyArODA1LDcgQEAKICAg
ICAgICAgICAgIG5vZGVWaWV3LmFkZERhdGFPdXRwdXQoIG91dHB1dCApOwogICAgICAgICB9ICk7
CiAgICAgICAgIG5vZGVWaWV3LnJlbmRlcigpOwotICAgICAgICB3b3JrZmxvdy5ub2RlX2NoYW5n
ZWQoIHRoaXMgKTsKKyAgICAgICAgd29ya2Zsb3cubm9kZV9jaGFuZ2VkKCB0aGlzLCB0cnVlKTsK
ICAgICB9LAogICAgIHVwZGF0ZV9maWVsZF9kYXRhIDogZnVuY3Rpb24oIGRhdGEgKSB7CiAgICAg
ICAgIHZhciBub2RlID0zRCB0aGlzOwpAQCAtMTA5NCw5ICsxMDk0LDkgQEAKICAgICAgICAgICAg
IHRoaXMuYWN0aXZlX25vZGUgPTNEIG5vZGU7CiAgICAgICAgIH0KICAgICB9LAotICAgIG5vZGVf
Y2hhbmdlZCA6IGZ1bmN0aW9uICggbm9kZSApIHsKKyAgICBub2RlX2NoYW5nZWQgOiBmdW5jdGlv
biAoIG5vZGUsIGZvcmNlICkgewogICAgICAgICB0aGlzLmhhc19jaGFuZ2VzID0zRCB0cnVlOwot
ICAgICAgICBpZiAoIHRoaXMuYWN0aXZlX25vZGUgPTNEPTNEIG5vZGUgKSB7CisgICAgICAgIGlm
ICggdGhpcy5hY3RpdmVfbm9kZSA9M0Q9M0Qgbm9kZSAmJiAoIXBhcmVudC5fX05FV1RPT0xGT1JN
X18gfHwgZj0Kb3JjZSkpIHsKICAgICAgICAgICAgIC8vIFJlYWN0aXZlIHdpdGggbmV3IGZvcm1f
aHRtbAogICAgICAgICAgICAgdGhpcy5jaGVja19jaGFuZ2VzX2luX2FjdGl2ZV9mb3JtKCk7IC8v
Rm9yY2UgY2hhbmdlcyB0byBiZSBzYXY9CmVkIGV2ZW4gb24gbmV3IGNvbm5lY3Rpb24gKHByZXZp
b3VzbHkgZHVtcGVkKQogICAgICAgICAgICAgcGFyZW50LnNob3dfZm9ybV9mb3JfdG9vbCggbm9k
ZS5mb3JtX2h0bWwgKyBub2RlLnRvb2x0aXAsIG5vZGU9CiApOwpAQCAtMTMwNSw2ICsxMzA1LDEy
IEBACiAgICAgcmV0dXJuIG5vZGU7CiB9Cj0yMAorZnVuY3Rpb24gdXBkYXRlX25vZGUoIGRhdGEg
KSB7CisgICAgdmFyIG5vZGUgPTNEIHdvcmtmbG93LmFjdGl2ZV9ub2RlOworICAgIGlmIChub2Rl
KSB7CisgICAgICAgIG5vZGUudXBkYXRlX2ZpZWxkX2RhdGEoZGF0YSwgdHJ1ZSk7CisgICAgfQor
fQo9MjAKIHZhciBleHRfdG9fdHlwZSA9M0QgbnVsbDsKIHZhciB0eXBlX3RvX3R5cGUgPTNEIG51
bGw7CgpkaWZmIC1yIDUzMDVlNGQxYzk5ZDQ3OGFkYTVmZDYyOTMwZTQyODc1ZGE0OGZkMWMgLXIg
NmE4YTc5ZjliNmQ1MmJmOTZlMjJkOTQ9Cjc0MGY5YzM3YjQ0NGQ4ZDEyIGNsaWVudC9nYWxheHkv
c2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtZm9ybS1iYXNlLmpzCi0tLSAvZGV2L251bGwKKysrIGIv
Y2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy1mb3JtLWJhc2UuanMKQEAgLTAs
MCArMSwzMTUgQEAKKy8qKgorICAgIFRoaXMgaXMgdGhlIG1haW4gY2xhc3Mgb2YgdGhlIHRvb2wg
Zm9ybSBwbHVnaW4uIEl0IGlzIHJlZmVyZW5jZWQgYXMgJ2E9CnBwJyBpbiBhbGwgbG93ZXIgbGV2
ZWwgbW9kdWxlcy4KKyovCitkZWZpbmUoWyd1dGlscy91dGlscycsICd1dGlscy9kZWZlcnJlZCcs
ICdtdmMvdWkvdWktcG9ydGxldCcsICdtdmMvdWkvdWktbT0KaXNjJywKKyAgICAgICAgJ212Yy9j
aXRhdGlvbi9jaXRhdGlvbi1tb2RlbCcsICdtdmMvY2l0YXRpb24vY2l0YXRpb24tdmlldycsCisg
ICAgICAgICdtdmMvdG9vbHMnLCAnbXZjL3Rvb2xzL3Rvb2xzLXRlbXBsYXRlJywgJ212Yy90b29s
cy90b29scy1jb250ZW50Jz0KLCAnbXZjL3Rvb2xzL3Rvb2xzLXNlY3Rpb24nLCAnbXZjL3Rvb2xz
L3Rvb2xzLXRyZWUnXSwKKyAgICBmdW5jdGlvbihVdGlscywgRGVmZXJyZWQsIFBvcnRsZXQsIFVp
LCBDaXRhdGlvbk1vZGVsLCBDaXRhdGlvblZpZXcsCisgICAgICAgICAgICAgVG9vbHMsIFRvb2xU
ZW1wbGF0ZSwgVG9vbENvbnRlbnQsIFRvb2xTZWN0aW9uLCBUb29sVHJlZSkgeworCisgICAgLy8g
Y3JlYXRlIGZvcm0gdmlldworICAgIHJldHVybiBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7CisgICAg
ICAgIC8vIGluaXRpYWxpemUKKyAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0aW9ucykg
eworICAgICAgICAgICAgLy8gbG9nIG9wdGlvbnMKKyAgICAgICAgICAgIGNvbnNvbGUuZGVidWco
b3B0aW9ucyk7CisgICAgICAgICAgID0yMAorICAgICAgICAgICAgLy8gbGluayBnYWxheHkgbW9k
YWwgb3IgY3JlYXRlIG9uZQorICAgICAgICAgICAgdmFyIGdhbGF4eSA9M0QgcGFyZW50LkdhbGF4
eTsKKyAgICAgICAgICAgIGlmIChnYWxheHkgJiYgZ2FsYXh5Lm1vZGFsKSB7CisgICAgICAgICAg
ICAgICAgdGhpcy5tb2RhbCA9M0QgZ2FsYXh5Lm1vZGFsOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICB0aGlzLm1vZGFsID0zRCBuZXcgVWkuTW9kYWwuVmlldygpOworICAg
ICAgICAgICAgfQorICAgPTIwCisgICAgICAgICAgICAvLyBjaGVjayBpZiB0aGUgdXNlciBpcyBh
biBhZG1pbgorICAgICAgICAgICAgaWYgKGdhbGF4eSAmJiBnYWxheHkuY3VyclVzZXIpIHsKKyAg
ICAgICAgICAgICAgICB0aGlzLmlzX2FkbWluID0zRCBnYWxheHkuY3VyclVzZXIuZ2V0KCdpc19h
ZG1pbicpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLmlzX2Fk
bWluID0zRCBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgPTIwCisgICAgICAgICAg
ICAvLyBsaW5rIG9wdGlvbnMKKyAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9M0Qgb3B0aW9uczsK
KyAgICAgICAgICAgPTIwCisgICAgICAgICAgICAvLyBsaW5rIGNvbnRhaW5lcgorICAgICAgICAg
ICAgdGhpcy5jb250YWluZXIgPTNEIHRoaXMub3B0aW9ucy5jb250YWluZXIgfHwgJ2JvZHknOwor
ICAgICAgICAgICA9MjAKKyAgICAgICAgICAgIC8vIGNyZWF0ZSBkZWZlcnJlZCBwcm9jZXNzaW5n
IHF1ZXVlIGhhbmRsZXIKKyAgICAgICAgICAgIC8vIHRoaXMgaGFuZGxlciByZWR1Y2VzIHRoZSBu
dW1iZXIgb2YgcmVxdWVzdHMgdG8gdGhlIGFwaSBieSBmPQppbHRlcmluZyByZWR1bmRhbnQgcmVx
dWVzdHMKKyAgICAgICAgICAgIHRoaXMuZGVmZXJyZWQgPTNEIG5ldyBEZWZlcnJlZCgpOworICAg
ICAgICAgICA9MjAKKyAgICAgICAgICAgIC8vIHNldCBlbGVtZW50CisgICAgICAgICAgICB0aGlz
LnNldEVsZW1lbnQoJzxkaXYvPicpOworICAgICAgICAgICA9MjAKKyAgICAgICAgICAgIC8vIGFk
ZCB0byBtYWluIGVsZW1lbnQKKyAgICAgICAgICAgICQodGhpcy5jb250YWluZXIpLmFwcGVuZCh0
aGlzLiRlbCk7CisgICAgICAgICAgID0yMAorICAgICAgICAgICAgLy8gYnVpbGQgdGhpcyBmb3Jt
CisgICAgICAgICAgICB0aGlzLl9idWlsZEZvcm0oKTsKKyAgICAgICAgfSwKKyAgICAgICA9MjAK
KyAgICAgICAgLyoqIFNob3dzIHRoZSBmaW5hbCBtZXNzYWdlICh1c3VhbGx5IHVwb24gc3VjY2Vz
c2Z1bCBqb2Igc3VibWlzc2lvPQpuKQorICAgICAgICAqLworICAgICAgICByZWNpZXB0OiBmdW5j
dGlvbigkZWwpIHsKKyAgICAgICAgICAgICQodGhpcy5jb250YWluZXIpLmVtcHR5KCk7CisgICAg
ICAgICAgICAkKHRoaXMuY29udGFpbmVyKS5hcHBlbmQoJGVsKTsKKyAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgID0yMAorICAgICAgICAvKiogSGlnaGxpZ2h0IGFuZCBzY3JvbGwgdG8gaW5wdXQg
ZWxlbWVudCAoY3VycmVudGx5IG9ubHkgdXNlZCBmb3I9CiBlcnJvciBub3RpZmljYXRpb25zKQor
ICAgICAgICAqLworICAgICAgICBoaWdobGlnaHQ6IGZ1bmN0aW9uIChpbnB1dF9pZCwgbWVzc2Fn
ZSwgc2lsZW50KSB7CisgICAgICAgICAgICAvLyBnZXQgaW5wdXQgZmllbGQKKyAgICAgICAgICAg
IHZhciBpbnB1dF9lbGVtZW50ID0zRCB0aGlzLmVsZW1lbnRfbGlzdFtpbnB1dF9pZF07CisgICAg
ICAgICAgID0yMAorICAgICAgICAgICAgLy8gY2hlY2sgaW5wdXQgZWxlbWVudAorICAgICAgICAg
ICAgaWYgKGlucHV0X2VsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICAvLyBtYXJrIGVycm9yCisg
ICAgICAgICAgICAgICAgaW5wdXRfZWxlbWVudC5lcnJvcihtZXNzYWdlIHx8ICdQbGVhc2UgdmVy
aWZ5IHRoaXMgcGFyYW1ldD0KZXIuJyk7CisgICAgICAgICAgID0yMAorICAgICAgICAgICAgICAg
IC8vIHNjcm9sbCB0byBmaXJzdCBpbnB1dCBlbGVtZW50CisgICAgICAgICAgICAgICAgaWYgKCFz
aWxlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgJCh0aGlzLmNvbnRhaW5lcikuYW5pbWF0ZSh7
CisgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3A6IGlucHV0X2VsZW1lbnQuJGVsLm9m
ZnNldCgpLnRvcCAtIDIwCisgICAgICAgICAgICAgICAgICAgIH0sIDUwMCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgID0yMAorICAgICAgICAv
KiogTWFpbiB0b29sIGZvcm0gYnVpbGQgZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVk
IG9uY2UgYSA9Cm5ldyBtb2RlbCBpcyBhdmFpbGFibGUuCisgICAgICAgICovCisgICAgICAgIF9i
dWlsZEZvcm06IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgLy8gbGluayB0aGlzCisgICAgICAg
ICAgICB2YXIgc2VsZiA9M0QgdGhpczsKKyAgICAgICAgICAgPTIwCisgICAgICAgICAgICAvLyBy
ZXNldCBldmVudHMKKyAgICAgICAgICAgIHRoaXMub2ZmKCdyZWZyZXNoJyk7CisgICAgICAgICAg
ICB0aGlzLm9mZigncmVzZXQnKTsKKyAgICAgICAgICAgPTIwCisgICAgICAgICAgICAvLyByZXNl
dCBmaWVsZCBsaXN0LCB3aGljaCBjb250YWlucyB0aGUgaW5wdXQgZmllbGQgZWxlbWVudHMKKyAg
ICAgICAgICAgIHRoaXMuZmllbGRfbGlzdCA9M0Qge307CisgICAgICAgICAgID0yMAorICAgICAg
ICAgICAgLy8gcmVzZXQgc2VxdWVudGlhbCBpbnB1dCBkZWZpbml0aW9uIGxpc3QsIHdoaWNoIGNv
bnRhaW5zIHRoZSA9CmlucHV0IGRlZmluaXRpb25zIGFzIHByb3ZpZGVkIGZyb20gdGhlIGFwaQor
ICAgICAgICAgICAgdGhpcy5pbnB1dF9saXN0ID0zRCB7fTsKKyAgICAgICAgICAgPTIwCisgICAg
ICAgICAgICAvLyByZXNldCBpbnB1dCBlbGVtZW50IGxpc3QsIHdoaWNoIGNvbnRhaW5zIHRoZSBk
b20gZWxlbWVudHMgbz0KZiBlYWNoIGlucHV0IGVsZW1lbnQgKGluY2x1ZGVzIGFsc28gdGhlIGlu
cHV0IGZpZWxkKQorICAgICAgICAgICAgdGhpcy5lbGVtZW50X2xpc3QgPTNEIHt9OworICAgICAg
ICAgICA9MjAKKyAgICAgICAgICAgIC8vIGNyZWF0ZXMgYSB0cmVlL2pzb24gZGF0YSBzdHJ1Y3R1
cmUgZnJvbSB0aGUgaW5wdXQgZm9ybQorICAgICAgICAgICAgdGhpcy50cmVlID0zRCBuZXcgVG9v
bFRyZWUodGhpcyk7CisgICAgICAgICAgID0yMAorICAgICAgICAgICAgLy8gcmVxdWVzdCBoaXN0
b3J5IGNvbnRlbnQgYW5kIGJ1aWxkIGZvcm0KKyAgICAgICAgICAgIHRoaXMuY29udGVudCA9M0Qg
bmV3IFRvb2xDb250ZW50KHRoaXMpOworICAgICAgICAgICA9MjAKKyAgICAgICAgICAgIC8vIGxp
bmsgbW9kZWwgb3B0aW9ucworICAgICAgICAgICAgdmFyIG9wdGlvbnMgPTNEIHRoaXMub3B0aW9u
czsKKyAgICAgICAgICAgPTIwCisgICAgICAgICAgICAvLyBjcmVhdGUgdWkgZWxlbWVudHMKKyAg
ICAgICAgICAgIHRoaXMuX3JlbmRlckZvcm0ob3B0aW9ucyk7CisgICAgICAgICAgID0yMAorICAg
ICAgICAgICAgLy8gcmVidWlsZCB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZQorICAgICAg
ICAgICAgdGhpcy50cmVlLmZpbmFsaXplKCk7CisgICAgICAgICAgID0yMAorICAgICAgICAgICAg
Ly8gc2hvdyBlcnJvcnMKKyAgICAgICAgICAgIGlmICghdGhpcy53b3JrZmxvdyAmJiBvcHRpb25z
LmVycm9ycykgeworICAgICAgICAgICAgICAgIHZhciBlcnJvcl9tZXNzYWdlcyA9M0QgdGhpcy50
cmVlLm1hdGNoUmVzcG9uc2Uob3B0aW9ucy5lcnI9Cm9ycyk7CisgICAgICAgICAgICAgICAgZm9y
ICh2YXIgaW5wdXRfaWQgaW4gZXJyb3JfbWVzc2FnZXMpIHsKKyAgICAgICAgICAgICAgICAgICAg
dGhpcy5oaWdobGlnaHQoaW5wdXRfaWQsIGVycm9yX21lc3NhZ2VzW2lucHV0X2lkXSwgdHJ1PQpl
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgID0yMAorICAg
ICAgICAgICAgLy8gYWRkIHJlZnJlc2ggbGlzdGVuZXIKKyAgICAgICAgICAgIHRoaXMub24oJ3Jl
ZnJlc2gnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAvLyBieSB1c2luZy9yZXNldGlu
ZyB0aGUgZGVmZXJyZWQgYWpheCBxdWV1ZSB0aGUgbnVtYmVyIG9mPQogcmVkdW5kYW50IGNhbGxz
IGlzIHJlZHVjZWQKKyAgICAgICAgICAgICAgICBzZWxmLmRlZmVycmVkLnJlc2V0KCk7CisgICAg
ICAgICAgICAgICAgc2VsZi5kZWZlcnJlZC5leGVjdXRlKGZ1bmN0aW9uKCl7c2VsZi5fdXBkYXRl
TW9kZWwoKX0pOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgID0yMAorICAgICAgICAgICAg
Ly8gYWRkIHJlc2V0IGxpc3RlbmVyCisgICAgICAgICAgICB0aGlzLm9uKCdyZXNldCcsIGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gdGhpcy5lbGVtZW50X2xpc3Qp
IHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50X2xpc3RbaV0ucmVzZXQoKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSwKKworICAgICAgICAv
KiogUmVuZGVycyB0aGUgVUkgZWxlbWVudHMgcmVxdWlyZWQgZm9yIHRoZSBmb3JtCisgICAgICAg
ICovCisgICAgICAgIF9yZW5kZXJGb3JtOiBmdW5jdGlvbihvcHRpb25zKSB7CisgICAgICAgICAg
ICAvLyBsaW5rIHRoaXMKKyAgICAgICAgICAgIHZhciBzZWxmID0zRCB0aGlzOworICAgICAgICAg
ICA9MjAKKyAgICAgICAgICAgIC8vIGNyZWF0ZSBtZXNzYWdlIHZpZXcKKyAgICAgICAgICAgIHRo
aXMubWVzc2FnZSA9M0QgbmV3IFVpLk1lc3NhZ2UoKTsKKyAgICAgICAgICAgPTIwCisgICAgICAg
ICAgICAvLyBidXR0b24gZm9yIHZlcnNpb24gc2VsZWN0aW9uCisgICAgICAgICAgICB2YXIgcmVx
dWlyZW1lbnRzX2J1dHRvbiA9M0QgbmV3IFVpLkJ1dHRvbkljb24oeworICAgICAgICAgICAgICAg
IGljb24gICAgOiAnZmEtaW5mby1jaXJjbGUnLAorICAgICAgICAgICAgICAgIHRpdGxlICAgOiAn
UmVxdWlyZW1lbnRzJywKKyAgICAgICAgICAgICAgICB0b29sdGlwIDogJ0Rpc3BsYXkgdG9vbCBy
ZXF1aXJlbWVudHMnLAorICAgICAgICAgICAgICAgIG9uY2xpY2sgOiBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnZpc2libGUpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMudmlzaWJsZSA9M0QgdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYubWVzc2FnZS51cGRhdGUoeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNpc3Rl
bnQgIDogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlICAgICA6IFRv
b2xUZW1wbGF0ZS5yZXF1aXJlbWVudHMob3B0aW9uPQpzKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0dXMgICAgICA6ICdpbmZvJworICAgICAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLnZpc2libGUgPTNEIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5tZXNz
YWdlLnVwZGF0ZSh7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSAgICAgOiAn
JworICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGlmICghb3B0aW9u
cy5yZXF1aXJlbWVudHMgfHwgb3B0aW9ucy5yZXF1aXJlbWVudHMubGVuZ3RoID0zRD0KPTNEIDAp
IHsKKyAgICAgICAgICAgICAgICByZXF1aXJlbWVudHNfYnV0dG9uLiRlbC5oaWRlKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgID0yMAorICAgICAgICAgICAgLy8gYnV0dG9uIGZvciB2ZXJz
aW9uIHNlbGVjdGlvbgorICAgICAgICAgICAgdmFyIHZlcnNpb25zX2J1dHRvbiA9M0QgbmV3IFVp
LkJ1dHRvbk1lbnUoeworICAgICAgICAgICAgICAgIGljb24gICAgOiAnZmEtY3ViZXMnLAorICAg
ICAgICAgICAgICAgIHRpdGxlICAgOiAnVmVyc2lvbnMnLAorICAgICAgICAgICAgICAgIHRvb2x0
aXAgOiAnU2VsZWN0IGFub3RoZXIgdG9vbCB2ZXJzaW9uJworICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICBpZiAob3B0aW9ucy52ZXJzaW9ucyAmJiBvcHRpb25zLnZlcnNpb25zLmxlbmd0aCA+
IDEpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIG9wdGlvbnMudmVyc2lvbnMpIHsK
KyAgICAgICAgICAgICAgICAgICAgdmFyIHZlcnNpb24gPTNEIG9wdGlvbnMudmVyc2lvbnNbaV07
CisgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJzaW9uICE9M0Qgb3B0aW9ucy52ZXJzaW9uKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uc19idXR0b24uYWRkTWVudSh7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGUgICA6ICdTd2l0Y2ggdG8gJyArIHZlcnNpb24s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA6IHZlcnNpb24sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWNvbiAgICA6ICdmYS1jdWJlJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvbmNsaWNrIDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGhlcmUgd2UgdXBkYXRlIHRoZSB0b29sIHZlcnNpb24gKHNvbWUgdD0K
b29scyBlbmNvZGUgdGhlIHZlcnNpb24gYWxzbyBpbiB0aGUgaWQpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbnMuaWQgPTNEIG9wdGlvbnMuaWQucmVwbGFjZShvcHRpb25z
Lj0KdmVyc2lvbiwgdGhpcy52ZXJzaW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3B0aW9ucy52ZXJzaW9uID0zRCB0aGlzLnZlcnNpb247CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPTIwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlYnVp
bGQgdGhlIG1vZGVsIGFuZCBmb3JtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuZGVmZXJyZWQucmVzZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5kZWZlcnJlZC5leGVjdXRlKGZ1bmN0aW9uKCl7c2VsZi5fYnVpPQpsZE1vZGVsKCl9KTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgdmVyc2lvbnNfYnV0dG9uLiRlbC5oaWRlKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgID0yMAorICAgICAgICAgICAgLy8gYnV0dG9uIG1lbnUKKyAg
ICAgICAgICAgIHZhciBtZW51X2J1dHRvbiA9M0QgbmV3IFVpLkJ1dHRvbk1lbnUoeworICAgICAg
ICAgICAgICAgIGljb24gICAgOiAnZmEtY2FyZXQtZG93bicsCisgICAgICAgICAgICAgICAgdGl0
bGUgICA6ICdPcHRpb25zJywKKyAgICAgICAgICAgICAgICB0b29sdGlwIDogJ1ZpZXcgYXZhaWxh
YmxlIG9wdGlvbnMnCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgPTIwCisgICAgICAgICAg
ICAvLyBjb25maWd1cmUgYnV0dG9uIHNlbGVjdGlvbgorICAgICAgICAgICAgaWYob3B0aW9ucy5i
aW9zdGFyX3VybCkgeworICAgICAgICAgICAgICAgIC8vIGFkZCBxdWVzdGlvbiBvcHRpb24KKyAg
ICAgICAgICAgICAgICBtZW51X2J1dHRvbi5hZGRNZW51KHsKKyAgICAgICAgICAgICAgICAgICAg
aWNvbiAgICA6ICdmYS1xdWVzdGlvbi1jaXJjbGUnLAorICAgICAgICAgICAgICAgICAgICB0aXRs
ZSAgIDogJ1F1ZXN0aW9uPycsCisgICAgICAgICAgICAgICAgICAgIHRvb2x0aXAgOiAnQXNrIGEg
cXVlc3Rpb24gYWJvdXQgdGhpcyB0b29sIChCaW9zdGFyKScsCisgICAgICAgICAgICAgICAgICAg
IG9uY2xpY2sgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5v
cGVuKG9wdGlvbnMuYmlvc3Rhcl91cmwgKyAnL3AvbmV3L3Bvc3QvJyk7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgID0yMAorICAgICAg
ICAgICAgICAgIC8vIGNyZWF0ZSBzZWFyY2ggYnV0dG9uCisgICAgICAgICAgICAgICAgbWVudV9i
dXR0b24uYWRkTWVudSh7CisgICAgICAgICAgICAgICAgICAgIGljb24gICAgOiAnZmEtc2VhcmNo
JywKKyAgICAgICAgICAgICAgICAgICAgdGl0bGUgICA6ICdTZWFyY2gnLAorICAgICAgICAgICAg
ICAgICAgICB0b29sdGlwIDogJ1NlYXJjaCBoZWxwIGZvciB0aGlzIHRvb2wgKEJpb3N0YXIpJywK
KyAgICAgICAgICAgICAgICAgICAgb25jbGljayA6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgd2luZG93Lm9wZW4ob3B0aW9ucy5iaW9zdGFyX3VybCArICcvdC8nICsgb3B0
aW9ucy49CmlkICsgJy8nKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgPTIwCisgICAgICAgICAgICAvLyBjcmVh
dGUgc2hhcmUgYnV0dG9uCisgICAgICAgICAgICBtZW51X2J1dHRvbi5hZGRNZW51KHsKKyAgICAg
ICAgICAgICAgICBpY29uICAgIDogJ2ZhLXNoYXJlJywKKyAgICAgICAgICAgICAgICB0aXRsZSAg
IDogJ1NoYXJlJywKKyAgICAgICAgICAgICAgICB0b29sdGlwIDogJ1NoYXJlIHRoaXMgdG9vbCcs
CisgICAgICAgICAgICAgICAgb25jbGljayA6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
ICAgICBwcm9tcHQoJ0NvcHkgdG8gY2xpcGJvYXJkOiBDdHJsK0MsIEVudGVyJywgd2luZG93Lmxv
Y2E9CnRpb24ub3JpZ2luICsgZ2FsYXh5X2NvbmZpZy5yb290ICsgJ3Jvb3Q/dG9vbF9pZD0zRCcg
KyBvcHRpb25zLmlkKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgPTIwCisgICAgICAgICAgICAvLyBhZGQgYWRtaW4gb3BlcmF0aW9ucworICAgICAgICAg
ICAgaWYgKHRoaXMuaXNfYWRtaW4pIHsKKyAgICAgICAgICAgICAgICAvLyBjcmVhdGUgZG93bmxv
YWQgYnV0dG9uCisgICAgICAgICAgICAgICAgbWVudV9idXR0b24uYWRkTWVudSh7CisgICAgICAg
ICAgICAgICAgICAgIGljb24gICAgOiAnZmEtZG93bmxvYWQnLAorICAgICAgICAgICAgICAgICAg
ICB0aXRsZSAgIDogJ0Rvd25sb2FkJywKKyAgICAgICAgICAgICAgICAgICAgdG9vbHRpcCA6ICdE
b3dubG9hZCB0aGlzIHRvb2wnLAorICAgICAgICAgICAgICAgICAgICBvbmNsaWNrIDogZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9M0Qg
Z2FsYXh5X2NvbmZpZy5yb290ICsgJ2FwaT0KL3Rvb2xzLycgKyBvcHRpb25zLmlkICsgJy9kb3du
bG9hZCc7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgPTIwCisgICAgICAgICAgICAvLyBjcmVhdGUgdG9vbCBmb3Jt
IHNlY3Rpb24KKyAgICAgICAgICAgIHRoaXMuc2VjdGlvbiA9M0QgbmV3IFRvb2xTZWN0aW9uLlZp
ZXcoc2VsZiwgeworICAgICAgICAgICAgICAgIGlucHV0cyA6IG9wdGlvbnMuaW5wdXRzLAorICAg
ICAgICAgICAgICAgIGNscyAgICA6ICd1aS10YWJsZS1wbGFpbicKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICA9MjAKKyAgICAgICAgICAgIC8vIHN3aXRjaCB0byBjbGFzc2ljIHRvb2wgZm9y
bSBtYWtvIGlmIHRoZSBmb3JtIGRlZmluaXRpb24gaXMgPQppbmNvbXBhdGlibGUKKyAgICAgICAg
ICAgIGlmICh0aGlzLmluY29tcGF0aWJsZSkgeworICAgICAgICAgICAgICAgIHRoaXMuJGVsLmhp
ZGUoKTsKKyAgICAgICAgICAgICAgICAkKCcjdG9vbC1mb3JtLWNsYXNzaWMnKS5zaG93KCk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICA9MjAKKyAg
ICAgICAgICAgIC8vIGNyZWF0ZSBwb3J0bGV0CisgICAgICAgICAgICB0aGlzLnBvcnRsZXQgPTNE
IG5ldyBQb3J0bGV0LlZpZXcoeworICAgICAgICAgICAgICAgIGljb24gICAgOiAnZmEtd3JlbmNo
JywKKyAgICAgICAgICAgICAgICB0aXRsZSAgIDogJzxiPicgKyBvcHRpb25zLm5hbWUgKyAnPC9i
PiAnICsgb3B0aW9ucy5kZXNjcmlwPQp0aW9uICsgJyAoR2FsYXh5IFRvb2wgVmVyc2lvbiAnICsg
b3B0aW9ucy52ZXJzaW9uICsgJyknLAorICAgICAgICAgICAgICAgIGNscyAgICAgOiAndWktcG9y
dGxldC1zbGltJywKKyAgICAgICAgICAgICAgICBvcGVyYXRpb25zOiB7CisgICAgICAgICAgICAg
ICAgICAgIHJlcXVpcmVtZW50cyAgICA6IHJlcXVpcmVtZW50c19idXR0b24sCisgICAgICAgICAg
ICAgICAgICAgIG1lbnUgICAgICAgICAgICA6IG1lbnVfYnV0dG9uLAorICAgICAgICAgICAgICAg
ICAgICB2ZXJzaW9ucyAgICAgICAgOiB2ZXJzaW9uc19idXR0b24KKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgIGJ1dHRvbnMgOiB0aGlzLmJ1dHRvbnMKKyAgICAgICAgICAgIH0p
OworICAgICAgICAgICA9MjAKKyAgICAgICAgICAgIC8vIGFwcGVuZCBtZXNzYWdlCisgICAgICAg
ICAgICB0aGlzLnBvcnRsZXQuYXBwZW5kKHRoaXMubWVzc2FnZS4kZWwsIHRydWUpOworICAgICAg
ICAgICA9MjAKKyAgICAgICAgICAgIC8vIGFwcGVuZCB0b29sIHNlY3Rpb24KKyAgICAgICAgICAg
IHRoaXMucG9ydGxldC5hcHBlbmQodGhpcy5zZWN0aW9uLiRlbCk7CisgICAgICAgICAgID0yMAor
ICAgICAgICAgICAgLy8gc3RhcnQgZm9ybQorICAgICAgICAgICAgdGhpcy4kZWwuZW1wdHkoKTsK
KyAgICAgICAgICAgIHRoaXMuJGVsLmFwcGVuZCh0aGlzLnBvcnRsZXQuJGVsKTsKKyAgICAgICAg
ICAgPTIwCisgICAgICAgICAgICAvLyBhcHBlbmQgaGVscAorICAgICAgICAgICAgaWYgKG9wdGlv
bnMuaGVscCAhPTNEICcnKSB7CisgICAgICAgICAgICAgICAgdGhpcy4kZWwuYXBwZW5kKFRvb2xU
ZW1wbGF0ZS5oZWxwKG9wdGlvbnMuaGVscCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICA9
MjAKKyAgICAgICAgICAgIC8vIGFwcGVuZCBjaXRhdGlvbnMKKyAgICAgICAgICAgIGlmIChvcHRp
b25zLmNpdGF0aW9ucykgeworICAgICAgICAgICAgICAgIHZhciAkY2l0YXRpb25zID0zRCAkKCc8
ZGl2Lz4nKTsKKyAgICAgICAgICAgICAgICB2YXIgY2l0YXRpb25zID0zRCBuZXcgQ2l0YXRpb25N
b2RlbC5Ub29sQ2l0YXRpb25Db2xsZWN0aW9uPQooKTsKKyAgICAgICAgICAgICAgICBjaXRhdGlv
bnMudG9vbF9pZCA9M0Qgb3B0aW9ucy5pZDsKKyAgICAgICAgICAgICAgICB2YXIgY2l0YXRpb25f
bGlzdF92aWV3ID0zRCBuZXcgQ2l0YXRpb25WaWV3LkNpdGF0aW9uTGlzdFZpPQpldyh7IGVsOiAk
Y2l0YXRpb25zLCBjb2xsZWN0aW9uOiBjaXRhdGlvbnMgfSApOworICAgICAgICAgICAgICAgIGNp
dGF0aW9uX2xpc3Rfdmlldy5yZW5kZXIoKTsKKyAgICAgICAgICAgICAgICBjaXRhdGlvbnMuZmV0
Y2goKTsKKyAgICAgICAgICAgICAgICB0aGlzLiRlbC5hcHBlbmQoJGNpdGF0aW9ucyk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgID0yMAorICAgICAgICAgICAgLy8gc2hvdyBtZXNzYWdlIGlm
IGF2YWlsYWJsZSBpbiBtb2RlbAorICAgICAgICAgICAgaWYgKG9wdGlvbnMubWVzc2FnZSkgewor
ICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZS51cGRhdGUoeworICAgICAgICAgICAgICAgICAg
ICBwZXJzaXN0ZW50ICA6IHRydWUsCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyAgICAgIDog
J3dhcm5pbmcnLAorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlICAgICA6IG9wdGlvbnMubWVz
c2FnZQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fSk7Cit9KTsKCmRpZmYgLXIgNTMwNWU0ZDFjOTlkNDc4YWRhNWZkNjI5MzBlNDI4NzVkYTQ4ZmQx
YyAtciA2YThhNzlmOWI2ZDUyYmY5NmUyMmQ5ND0KNzQwZjljMzdiNDQ0ZDhkMTIgY2xpZW50L2dh
bGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy1mb3JtLXdvcmtmbG93LmpzCi0tLSAvZGV2L251
bGwKKysrIGIvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy1mb3JtLXdvcmtm
bG93LmpzCkBAIC0wLDAgKzEsNjYgQEAKKy8qKgorICAgIFRoaXMgaXMgdGhlIG1haW4gY2xhc3Mg
b2YgdGhlIHRvb2wgZm9ybSBwbHVnaW4uIEl0IGlzIHJlZmVyZW5jZWQgYXMgJ2E9CnBwJyBpbiBh
bGwgbG93ZXIgbGV2ZWwgbW9kdWxlcy4KKyovCitkZWZpbmUoWyd1dGlscy91dGlscycsICdtdmMv
dG9vbHMvdG9vbHMtZm9ybS1iYXNlJ10sCisgICAgZnVuY3Rpb24oVXRpbHMsIFRvb2xGb3JtQmFz
ZSkgeworCisgICAgLy8gY3JlYXRlIGZvcm0gdmlldworICAgIHZhciBWaWV3ID0zRCBUb29sRm9y
bUJhc2UuZXh0ZW5kKHsKKyAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0aW9ucykgewor
ICAgICAgICAgICAgdGhpcy53b3JrZmxvdyA9M0QgdHJ1ZTsKKyAgICAgICAgICAgIFRvb2xGb3Jt
QmFzZS5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsIG9wdGlvbnMpOworICAgICAgICB9
LAorICAgICAgID0yMAorICAgICAgICAvKiogQnVpbGRzIGEgbmV3IG1vZGVsIHRocm91Z2ggYXBp
IGNhbGwgYW5kIHJlY3JlYXRlcyB0aGUgZW50aXJlIGY9Cm9ybQorICAgICAgICAqLworICAgICAg
ICBfYnVpbGRNb2RlbDogZnVuY3Rpb24oKSB7CisgICAgICAgIH0sCisgICAgICAgPTIwCisgICAg
ICAgIC8qKiBSZXF1ZXN0IGEgbmV3IG1vZGVsIGZvciBhbiBhbHJlYWR5IGNyZWF0ZWQgdG9vbCBm
b3JtIGFuZCB1cGRhdD0KZXMgdGhlIGZvcm0gaW5wdXRzCisgICAgICAgICovCisgICAgICAgIF91
cGRhdGVNb2RlbDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAvLyBjcmVhdGUgdGhlIHJlcXVl
c3QgZGljdGlvbmFyeQorICAgICAgICAgICAgdmFyIHNlbGYgPTNEIHRoaXM7CisgICAgICAgICAg
ICB2YXIgY3VycmVudF9zdGF0ZSA9M0QgdGhpcy50cmVlLmZpbmFsaXplKCk7CisgICAgICAgICAg
ID0yMAorICAgICAgICAgICAgLy8gbG9nIHRvb2wgc3RhdGUKKyAgICAgICAgICAgIGNvbnNvbGUu
ZGVidWcoJ3Rvb2xzLWZvcm0td29ya2Zsb3c6Ol9yZWZyZXNoRm9ybSgpIC0gUmVmcmVzaGluPQpn
IHN0YXRlcy4nKTsKKyAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoY3VycmVudF9zdGF0ZSk7Cisg
ICAgICAgICAgID0yMAorICAgICAgICAgICAgLy8gcmVnaXN0ZXIgcHJvY2VzcworICAgICAgICAg
ICAgdmFyIHByb2Nlc3NfaWQgPTNEIHRoaXMuZGVmZXJyZWQucmVnaXN0ZXIoKTsKKworICAgICAg
ICAgICAgLy8gYnVpbGQgbW9kZWwgdXJsIGZvciByZXF1ZXN0CisgICAgICAgICAgICB2YXIgbW9k
ZWxfdXJsID0zRCBnYWxheHlfY29uZmlnLnJvb3QgKyAnd29ya2Zsb3cvZWRpdG9yX2Zvcm1fcD0K
b3N0P3Rvb2xfaWQ9M0QnICsgdGhpcy5vcHRpb25zLmlkOworICAgICAgICAgICA9MjAKKyAgICAg
ICAgICAgIC8vIHBvc3Qgam9iCisgICAgICAgICAgICBVdGlscy5yZXF1ZXN0KHsKKyAgICAgICAg
ICAgICAgICB0eXBlICAgIDogJ0dFVCcsCisgICAgICAgICAgICAgICAgdXJsICAgICA6IG1vZGVs
X3VybCwKKyAgICAgICAgICAgICAgICBkYXRhICAgIDogY3VycmVudF9zdGF0ZSwKKyAgICAgICAg
ICAgICAgICBzdWNjZXNzIDogZnVuY3Rpb24obm9kZSkgeworICAgICAgICAgICAgICAgICAgICBw
YXJlbnQudXBkYXRlX25vZGUobm9kZSk7CisgICAgICAgICAgICAgICAgICAgPTIwCisgICAgICAg
ICAgICAgICAgICAgIC8vIHByb2Nlc3MgY29tcGxldGVkCisgICAgICAgICAgICAgICAgICAgIHNl
bGYuZGVmZXJyZWQuZG9uZShwcm9jZXNzX2lkKTsKKyAgICAgICAgICAgPTIwCisgICAgICAgICAg
ICAgICAgICAgIC8vIGxvZyBzdWNjZXNzCisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVi
dWcoJ3Rvb2xzLWZvcm06Ol9yZWZyZXNoRm9ybSgpIC0gU3RhdGVzIHJlZj0KcmVzaGVkLicpOwor
ICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKG5vZGUpOworICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgZXJyb3IgICA6IGZ1bmN0aW9uKHJlc3BvbnNlKSB7CisgICAg
ICAgICAgICAgICAgICAgIC8vIHByb2Nlc3MgY29tcGxldGVkCisgICAgICAgICAgICAgICAgICAg
IHNlbGYuZGVmZXJyZWQuZG9uZShwcm9jZXNzX2lkKTsKKyAgICAgICAgICAgICAgICAgICA9MjAK
KyAgICAgICAgICAgICAgICAgICAgLy8gbG9nIGVycm9yCisgICAgICAgICAgICAgICAgICAgIGNv
bnNvbGUuZGVidWcoJ3Rvb2xzLWZvcm06Ol9yZWZyZXNoRm9ybSgpIC0gUmVmcmVzaCByZT0KcXVl
c3QgZmFpbGVkLicpOworICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKHJlc3BvbnNl
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0p
OworCisgICAgcmV0dXJuIHsKKyAgICAgICAgVmlldzogVmlldworICAgIH07Cit9KTsKCmRpZmYg
LXIgNTMwNWU0ZDFjOTlkNDc4YWRhNWZkNjI5MzBlNDI4NzVkYTQ4ZmQxYyAtciA2YThhNzlmOWI2
ZDUyYmY5NmUyMmQ5ND0KNzQwZjljMzdiNDQ0ZDhkMTIgY2xpZW50L2dhbGF4eS9zY3JpcHRzL212
Yy90b29scy90b29scy1mb3JtLmpzCi0tLSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9v
bHMvdG9vbHMtZm9ybS5qcworKysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzL3Rv
b2xzLWZvcm0uanMKQEAgLTEsNzkgKzEsMjggQEAKIC8qKgogICAgIFRoaXMgaXMgdGhlIG1haW4g
Y2xhc3Mgb2YgdGhlIHRvb2wgZm9ybSBwbHVnaW4uIEl0IGlzIHJlZmVyZW5jZWQgYXMgJ2E9CnBw
JyBpbiBhbGwgbG93ZXIgbGV2ZWwgbW9kdWxlcy4KICovCi1kZWZpbmUoWyd1dGlscy91dGlscycs
ICd1dGlscy9kZWZlcnJlZCcsICdtdmMvdWkvdWktcG9ydGxldCcsICdtdmMvdWkvdWktbT0KaXNj
JywKLSAgICAgICAgJ212Yy9jaXRhdGlvbi9jaXRhdGlvbi1tb2RlbCcsICdtdmMvY2l0YXRpb24v
Y2l0YXRpb24tdmlldycsCi0gICAgICAgICdtdmMvdG9vbHMnLCAnbXZjL3Rvb2xzL3Rvb2xzLXRl
bXBsYXRlJywgJ212Yy90b29scy90b29scy1jb250ZW50Jz0KLCAnbXZjL3Rvb2xzL3Rvb2xzLXNl
Y3Rpb24nLCAnbXZjL3Rvb2xzL3Rvb2xzLXRyZWUnLCAnbXZjL3Rvb2xzL3Rvb2xzLWpvYnMnPQpd
LAotICAgIGZ1bmN0aW9uKFV0aWxzLCBEZWZlcnJlZCwgUG9ydGxldCwgVWksIENpdGF0aW9uTW9k
ZWwsIENpdGF0aW9uVmlldywKLSAgICAgICAgICAgICBUb29scywgVG9vbFRlbXBsYXRlLCBUb29s
Q29udGVudCwgVG9vbFNlY3Rpb24sIFRvb2xUcmVlLCBUb29sPQpKb2JzKSB7CitkZWZpbmUoWyd1
dGlscy91dGlscycsICdtdmMvdWkvdWktbWlzYycsICdtdmMvdG9vbHMvdG9vbHMtZm9ybS1iYXNl
JywgJ212Yz0KL3Rvb2xzL3Rvb2xzLWpvYnMnXSwKKyAgICBmdW5jdGlvbihVdGlscywgVWksIFRv
b2xGb3JtQmFzZSwgVG9vbEpvYnMpIHsKPTIwCiAgICAgLy8gY3JlYXRlIGZvcm0gdmlldwotICAg
IHZhciBWaWV3ID0zRCBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7Ci0gICAgICAgIC8vIGJhc2UgZWxl
bWVudAotICAgICAgICBjb250YWluZXI6ICdib2R5JywKLSAgICAgICA9MjAKKyAgICB2YXIgVmll
dyA9M0QgVG9vbEZvcm1CYXNlLmV4dGVuZCh7CiAgICAgICAgIC8vIGluaXRpYWxpemUKICAgICAg
ICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0aW9ucykgewotICAgICAgICAgICAgLy8gbG9nIG9w
dGlvbnMKLSAgICAgICAgICAgIGNvbnNvbGUuZGVidWcob3B0aW9ucyk7Ci0gICAgICAgICAgID0y
MAotICAgICAgICAgICAgLy8gbGluayBnYWxheHkgbW9kYWwgb3IgY3JlYXRlIG9uZQotICAgICAg
ICAgICAgdmFyIGdhbGF4eSA9M0QgcGFyZW50LkdhbGF4eTsKLSAgICAgICAgICAgIGlmIChnYWxh
eHkgJiYgZ2FsYXh5Lm1vZGFsKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5tb2RhbCA9M0QgZ2Fs
YXh5Lm1vZGFsOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB0aGlzLm1v
ZGFsID0zRCBuZXcgVWkuTW9kYWwuVmlldygpOworICAgICAgICAgICAgdmFyIHNlbGYgPTNEIHRo
aXM7CisgICAgICAgICAgICB0aGlzLmpvYl9oYW5kbGVyID0zRCBuZXcgVG9vbEpvYnModGhpcyk7
CisgICAgICAgICAgICB0aGlzLmJ1dHRvbnMgPTNEIHsKKyAgICAgICAgICAgICAgICBleGVjdXRl
IDogbmV3IFVpLkJ1dHRvbih7CisgICAgICAgICAgICAgICAgICAgIGljb24gICAgIDogJ2ZhLWNo
ZWNrJywKKyAgICAgICAgICAgICAgICAgICAgdG9vbHRpcCAgOiAnRXhlY3V0ZTogJyArIG9wdGlv
bnMubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgdGl0bGUgICAgOiAnRXhlY3V0ZScsCisgICAg
ICAgICAgICAgICAgICAgIGNscyAgICAgIDogJ2J0biBidG4tcHJpbWFyeScsCisgICAgICAgICAg
ICAgICAgICAgIGZsb2F0aW5nIDogJ2NsZWFyJywKKyAgICAgICAgICAgICAgICAgICAgb25jbGlj
ayAgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuam9iX2hhbmRs
ZXIuc3VibWl0KCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KQog
ICAgICAgICAgICAgfQotICAgPTIwCi0gICAgICAgICAgICAvLyBjaGVjayBpZiB0aGUgdXNlciBp
cyBhbiBhZG1pbgotICAgICAgICAgICAgaWYgKGdhbGF4eSAmJiBnYWxheHkuY3VyclVzZXIpIHsK
LSAgICAgICAgICAgICAgICB0aGlzLmlzX2FkbWluID0zRCBnYWxheHkuY3VyclVzZXIuZ2V0KCdp
c19hZG1pbicpCi0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHRoaXMuaXNf
YWRtaW4gPTNEIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICA9MjAKLSAgICAgICAg
ICAgIC8vIGxpbmsgb3B0aW9ucwotICAgICAgICAgICAgdGhpcy5vcHRpb25zID0zRCBvcHRpb25z
OwotICAgICAgICAgICA9MjAKLSAgICAgICAgICAgIC8vIGNyZWF0ZSBkZWZlcnJlZCBwcm9jZXNz
aW5nIHF1ZXVlIGhhbmRsZXIKLSAgICAgICAgICAgIC8vIHRoaXMgaGFuZGxlciByZWR1Y2VzIHRo
ZSBudW1iZXIgb2YgcmVxdWVzdHMgdG8gdGhlIGFwaSBieSBmPQppbHRlcmluZyByZWR1bmRhbnQg
cmVxdWVzdHMKLSAgICAgICAgICAgIHRoaXMuZGVmZXJyZWQgPTNEIG5ldyBEZWZlcnJlZCgpOwot
ICAgICAgICAgICA9MjAKLSAgICAgICAgICAgIC8vIHNldCBlbGVtZW50Ci0gICAgICAgICAgICB0
aGlzLnNldEVsZW1lbnQoJzxkaXYvPicpOwotICAgICAgICAgICA9MjAKLSAgICAgICAgICAgIC8v
IGFkZCB0byBtYWluIGVsZW1lbnQKLSAgICAgICAgICAgICQodGhpcy5jb250YWluZXIpLmFwcGVu
ZCh0aGlzLiRlbCk7Ci0gICAgICAgICAgID0yMAotICAgICAgICAgICAgLy8gYnVpbGQgdGhpcyBm
b3JtCi0gICAgICAgICAgICB0aGlzLl9idWlsZEZvcm0oKTsKLSAgICAgICAgfSwKLSAgICAgICA9
MjAKLSAgICAgICAgLyoqIFNob3dzIHRoZSBmaW5hbCBtZXNzYWdlICh1c3VhbGx5IHVwb24gc3Vj
Y2Vzc2Z1bCBqb2Igc3VibWlzc2lvPQpuKQotICAgICAgICAqLwotICAgICAgICByZWNpZXB0OiBm
dW5jdGlvbigkZWwpIHsKLSAgICAgICAgICAgICQodGhpcy5jb250YWluZXIpLmVtcHR5KCk7Ci0g
ICAgICAgICAgICAkKHRoaXMuY29udGFpbmVyKS5hcHBlbmQoJGVsKTsKLSAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgID0yMAotICAgICAgICAvKiogSGlnaGxpZ2h0IGFuZCBzY3JvbGwgdG8gaW5w
dXQgZWxlbWVudCAoY3VycmVudGx5IG9ubHkgdXNlZCBmb3I9CiBlcnJvciBub3RpZmljYXRpb25z
KQotICAgICAgICAqLwotICAgICAgICBoaWdobGlnaHQ6IGZ1bmN0aW9uIChpbnB1dF9pZCwgbWVz
c2FnZSwgc2lsZW50KSB7Ci0gICAgICAgICAgICAvLyBnZXQgaW5wdXQgZmllbGQKLSAgICAgICAg
ICAgIHZhciBpbnB1dF9lbGVtZW50ID0zRCB0aGlzLmVsZW1lbnRfbGlzdFtpbnB1dF9pZF07Ci0g
ICAgICAgICAgID0yMAotICAgICAgICAgICAgLy8gY2hlY2sgaW5wdXQgZWxlbWVudAotICAgICAg
ICAgICAgaWYgKGlucHV0X2VsZW1lbnQpIHsKLSAgICAgICAgICAgICAgICAvLyBtYXJrIGVycm9y
Ci0gICAgICAgICAgICAgICAgaW5wdXRfZWxlbWVudC5lcnJvcihtZXNzYWdlIHx8ICdQbGVhc2Ug
dmVyaWZ5IHRoaXMgcGFyYW1ldD0KZXIuJyk7Ci0gICAgICAgICAgID0yMAotICAgICAgICAgICAg
ICAgIC8vIHNjcm9sbCB0byBmaXJzdCBpbnB1dCBlbGVtZW50Ci0gICAgICAgICAgICAgICAgaWYg
KCFzaWxlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgJCh0aGlzLmNvbnRhaW5lcikuYW5pbWF0
ZSh7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3A6IGlucHV0X2VsZW1lbnQuJGVs
Lm9mZnNldCgpLnRvcCAtIDIwCi0gICAgICAgICAgICAgICAgICAgIH0sIDUwMCk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQorICAgICAgICAgICAgVG9vbEZvcm1CYXNlLnByb3Rv
dHlwZS5pbml0aWFsaXplLmNhbGwodGhpcywgb3B0aW9ucyk7CiAgICAgICAgIH0sCiAgICAgICAg
PTIwCiAgICAgICAgIC8qKiBCdWlsZHMgYSBuZXcgbW9kZWwgdGhyb3VnaCBhcGkgY2FsbCBhbmQg
cmVjcmVhdGVzIHRoZSBlbnRpcmUgZj0Kb3JtCkBAIC0yNTAsMjU2ICsxOTksNiBAQAogICAgICAg
ICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKHJlc3BvbnNlKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSwKLSAgICAgICA9MjAKLSAgICAgICAgLyoqIE1h
aW4gdG9vbCBmb3JtIGJ1aWxkIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmNl
IGEgPQpuZXcgbW9kZWwgaXMgYXZhaWxhYmxlLgotICAgICAgICAqLwotICAgICAgICBfYnVpbGRG
b3JtOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIC8vIGxpbmsgdGhpcwotICAgICAgICAgICAg
dmFyIHNlbGYgPTNEIHRoaXM7Ci0gICAgICAgICAgID0yMAotICAgICAgICAgICAgLy8gcmVzZXQg
ZXZlbnRzCi0gICAgICAgICAgICB0aGlzLm9mZigncmVmcmVzaCcpOwotICAgICAgICAgICAgdGhp
cy5vZmYoJ3Jlc2V0Jyk7Ci0gICAgICAgICAgID0yMAotICAgICAgICAgICAgLy8gcmVzZXQgZmll
bGQgbGlzdCwgd2hpY2ggY29udGFpbnMgdGhlIGlucHV0IGZpZWxkIGVsZW1lbnRzCi0gICAgICAg
ICAgICB0aGlzLmZpZWxkX2xpc3QgPTNEIHt9OwotICAgICAgICAgICA9MjAKLSAgICAgICAgICAg
IC8vIHJlc2V0IHNlcXVlbnRpYWwgaW5wdXQgZGVmaW5pdGlvbiBsaXN0LCB3aGljaCBjb250YWlu
cyB0aGUgPQppbnB1dCBkZWZpbml0aW9ucyBhcyBwcm92aWRlZCBmcm9tIHRoZSBhcGkKLSAgICAg
ICAgICAgIHRoaXMuaW5wdXRfbGlzdCA9M0Qge307Ci0gICAgICAgICAgID0yMAotICAgICAgICAg
ICAgLy8gcmVzZXQgaW5wdXQgZWxlbWVudCBsaXN0LCB3aGljaCBjb250YWlucyB0aGUgZG9tIGVs
ZW1lbnRzIG89CmYgZWFjaCBpbnB1dCBlbGVtZW50IChpbmNsdWRlcyBhbHNvIHRoZSBpbnB1dCBm
aWVsZCkKLSAgICAgICAgICAgIHRoaXMuZWxlbWVudF9saXN0ID0zRCB7fTsKLSAgICAgICAgICAg
PTIwCi0gICAgICAgICAgICAvLyBjcmVhdGVzIGEgdHJlZS9qc29uIGRhdGEgc3RydWN0dXJlIGZy
b20gdGhlIGlucHV0IGZvcm0KLSAgICAgICAgICAgIHRoaXMudHJlZSA9M0QgbmV3IFRvb2xUcmVl
KHRoaXMpOwotICAgICAgICAgICA9MjAKLSAgICAgICAgICAgIC8vIGNyZWF0ZXMgdGhlIGpvYiBo
YW5kbGVyCi0gICAgICAgICAgICB0aGlzLmpvYl9oYW5kbGVyID0zRCBuZXcgVG9vbEpvYnModGhp
cyk7Ci0KLSAgICAgICAgICAgIC8vIHJlcXVlc3QgaGlzdG9yeSBjb250ZW50IGFuZCBidWlsZCBm
b3JtCi0gICAgICAgICAgICB0aGlzLmNvbnRlbnQgPTNEIG5ldyBUb29sQ29udGVudCh0aGlzKTsK
LSAgICAgICAgICAgPTIwCi0gICAgICAgICAgICAvLyBsaW5rIG1vZGVsIG9wdGlvbnMKLSAgICAg
ICAgICAgIHZhciBvcHRpb25zID0zRCB0aGlzLm9wdGlvbnM7Ci0gICAgICAgICAgID0yMAotICAg
ICAgICAgICAgLy8gY3JlYXRlIHVpIGVsZW1lbnRzCi0gICAgICAgICAgICB0aGlzLl9yZW5kZXJG
b3JtKG9wdGlvbnMpOwotICAgICAgICAgICA9MjAKLSAgICAgICAgICAgIC8vIHJlYnVpbGQgdGhl
IHVuZGVybHlpbmcgZGF0YSBzdHJ1Y3R1cmUKLSAgICAgICAgICAgIHRoaXMudHJlZS5maW5hbGl6
ZSgpOwotICAgICAgICAgICA9MjAKLSAgICAgICAgICAgIC8vIHNob3cgZXJyb3JzCi0gICAgICAg
ICAgICBpZiAob3B0aW9ucy5lcnJvcnMpIHsKLSAgICAgICAgICAgICAgICB2YXIgZXJyb3JfbWVz
c2FnZXMgPTNEIHRoaXMudHJlZS5tYXRjaFJlc3BvbnNlKG9wdGlvbnMuZXJyPQpvcnMpOwotICAg
ICAgICAgICAgICAgIGZvciAodmFyIGlucHV0X2lkIGluIGVycm9yX21lc3NhZ2VzKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0KGlucHV0X2lkLCBlcnJvcl9tZXNzYWdlc1tp
bnB1dF9pZF0sIHRydT0KZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAg
ICAgICAgICA9MjAKLSAgICAgICAgICAgIC8vIGFkZCByZWZyZXNoIGxpc3RlbmVyCi0gICAgICAg
ICAgICB0aGlzLm9uKCdyZWZyZXNoJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgLy8g
YnkgdXNpbmcvcmVzZXRpbmcgdGhlIGRlZmVycmVkIGFqYXggcXVldWUgdGhlIG51bWJlciBvZj0K
IHJlZHVuZGFudCBjYWxscyBpcyByZWR1Y2VkCi0gICAgICAgICAgICAgICAgc2VsZi5kZWZlcnJl
ZC5yZXNldCgpOwotICAgICAgICAgICAgICAgIHNlbGYuZGVmZXJyZWQuZXhlY3V0ZShmdW5jdGlv
bigpe3NlbGYuX3VwZGF0ZU1vZGVsKCl9KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICA9
MjAKLSAgICAgICAgICAgIC8vIGFkZCByZXNldCBsaXN0ZW5lcgotICAgICAgICAgICAgdGhpcy5v
bigncmVzZXQnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHRo
aXMuZWxlbWVudF9saXN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudF9saXN0
W2ldLnJlc2V0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0sCi0KLSAgICAgICAgLyoqIFJlbmRlcnMgdGhlIFVJIGVsZW1lbnRzIHJlcXVpcmVkIGZvciB0
aGUgZm9ybQotICAgICAgICAqLwotICAgICAgICBfcmVuZGVyRm9ybTogZnVuY3Rpb24ob3B0aW9u
cykgewotICAgICAgICAgICAgLy8gbGluayB0aGlzCi0gICAgICAgICAgICB2YXIgc2VsZiA9M0Qg
dGhpczsKLSAgICAgICAgICAgPTIwCi0gICAgICAgICAgICAvLyBjcmVhdGUgbWVzc2FnZSB2aWV3
Ci0gICAgICAgICAgICB0aGlzLm1lc3NhZ2UgPTNEIG5ldyBVaS5NZXNzYWdlKCk7Ci0gICAgICAg
ICAgID0yMAotICAgICAgICAgICAgLy8gYnV0dG9uIGZvciB2ZXJzaW9uIHNlbGVjdGlvbgotICAg
ICAgICAgICAgdmFyIHJlcXVpcmVtZW50c19idXR0b24gPTNEIG5ldyBVaS5CdXR0b25JY29uKHsK
LSAgICAgICAgICAgICAgICBpY29uICAgIDogJ2ZhLWluZm8tY2lyY2xlJywKLSAgICAgICAgICAg
ICAgICB0aXRsZSAgIDogJ1JlcXVpcmVtZW50cycsCi0gICAgICAgICAgICAgICAgdG9vbHRpcCA6
ICdEaXNwbGF5IHRvb2wgcmVxdWlyZW1lbnRzJywKLSAgICAgICAgICAgICAgICBvbmNsaWNrIDog
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy52aXNpYmxlKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2libGUgPTNEIHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2UudXBkYXRlKHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwZXJzaXN0ZW50ICA6IHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWVzc2FnZSAgICAgOiBUb29sVGVtcGxhdGUucmVxdWlyZW1lbnRzKG9wdGlvbj0KcyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzICAgICAgOiAnaW5mbycKLSAgICAgICAgICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICAgICAgdGhpcy52aXNpYmxlID0zRCBmYWxzZTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYubWVzc2FnZS51cGRhdGUoewotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2UgICAgIDogJycKLSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICBpZiAoIW9wdGlvbnMucmVxdWlyZW1lbnRzIHx8IG9wdGlvbnMucmVxdWlyZW1lbnRzLmxl
bmd0aCA9M0Q9Cj0zRCAwKSB7Ci0gICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzX2J1dHRvbi4k
ZWwuaGlkZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICA9MjAKLSAgICAgICAgICAgIC8v
IGJ1dHRvbiBmb3IgdmVyc2lvbiBzZWxlY3Rpb24KLSAgICAgICAgICAgIHZhciB2ZXJzaW9uc19i
dXR0b24gPTNEIG5ldyBVaS5CdXR0b25NZW51KHsKLSAgICAgICAgICAgICAgICBpY29uICAgIDog
J2ZhLWN1YmVzJywKLSAgICAgICAgICAgICAgICB0aXRsZSAgIDogJ1ZlcnNpb25zJywKLSAgICAg
ICAgICAgICAgICB0b29sdGlwIDogJ1NlbGVjdCBhbm90aGVyIHRvb2wgdmVyc2lvbicKLSAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyc2lvbnMgJiYgb3B0aW9ucy52
ZXJzaW9ucy5sZW5ndGggPiAxKSB7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBvcHRp
b25zLnZlcnNpb25zKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciB2ZXJzaW9uID0zRCBvcHRp
b25zLnZlcnNpb25zW2ldOwotICAgICAgICAgICAgICAgICAgICBpZiAodmVyc2lvbiAhPTNEIG9w
dGlvbnMudmVyc2lvbikgewotICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbnNfYnV0dG9u
LmFkZE1lbnUoewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlICAgOiAnU3dpdGNo
IHRvICcgKyB2ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gOiB2
ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb24gICAgOiAnZmEtY3ViZScs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jbGljayA6IGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoZXJlIHdlIHVwZGF0ZSB0aGUgdG9vbCB2
ZXJzaW9uIChzb21lIHQ9Cm9vbHMgZW5jb2RlIHRoZSB2ZXJzaW9uIGFsc28gaW4gdGhlIGlkKQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLmlkID0zRCBvcHRpb25zLmlk
LnJlcGxhY2Uob3B0aW9ucy49CnZlcnNpb24sIHRoaXMudmVyc2lvbik7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudmVyc2lvbiA9M0QgdGhpcy52ZXJzaW9uOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0yMAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyByZWJ1aWxkIHRoZSBtb2RlbCBhbmQgZm9ybQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLmRlZmVycmVkLnJlc2V0KCk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuZGVmZXJyZWQuZXhlY3V0ZShmdW5jdGlvbigpe3NlbGYuX2J1aT0K
bGRNb2RlbCgpfSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHZlcnNpb25zX2J1dHRvbi4k
ZWwuaGlkZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICA9MjAKLSAgICAgICAgICAgIC8v
IGJ1dHRvbiBtZW51Ci0gICAgICAgICAgICB2YXIgbWVudV9idXR0b24gPTNEIG5ldyBVaS5CdXR0
b25NZW51KHsKLSAgICAgICAgICAgICAgICBpY29uICAgIDogJ2ZhLWNhcmV0LWRvd24nLAotICAg
ICAgICAgICAgICAgIHRpdGxlICAgOiAnT3B0aW9ucycsCi0gICAgICAgICAgICAgICAgdG9vbHRp
cCA6ICdWaWV3IGF2YWlsYWJsZSBvcHRpb25zJwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ID0yMAotICAgICAgICAgICAgLy8gY29uZmlndXJlIGJ1dHRvbiBzZWxlY3Rpb24KLSAgICAgICAg
ICAgIGlmKG9wdGlvbnMuYmlvc3Rhcl91cmwpIHsKLSAgICAgICAgICAgICAgICAvLyBhZGQgcXVl
c3Rpb24gb3B0aW9uCi0gICAgICAgICAgICAgICAgbWVudV9idXR0b24uYWRkTWVudSh7Ci0gICAg
ICAgICAgICAgICAgICAgIGljb24gICAgOiAnZmEtcXVlc3Rpb24tY2lyY2xlJywKLSAgICAgICAg
ICAgICAgICAgICAgdGl0bGUgICA6ICdRdWVzdGlvbj8nLAotICAgICAgICAgICAgICAgICAgICB0
b29sdGlwIDogJ0FzayBhIHF1ZXN0aW9uIGFib3V0IHRoaXMgdG9vbCAoQmlvc3RhciknLAotICAg
ICAgICAgICAgICAgICAgICBvbmNsaWNrIDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB3aW5kb3cub3BlbihvcHRpb25zLmJpb3N0YXJfdXJsICsgJy9wL25ldy9wb3N0Lycp
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICAgICA9MjAKLSAgICAgICAgICAgICAgICAvLyBjcmVhdGUgc2VhcmNoIGJ1dHRvbgotICAgICAg
ICAgICAgICAgIG1lbnVfYnV0dG9uLmFkZE1lbnUoewotICAgICAgICAgICAgICAgICAgICBpY29u
ICAgIDogJ2ZhLXNlYXJjaCcsCi0gICAgICAgICAgICAgICAgICAgIHRpdGxlICAgOiAnU2VhcmNo
JywKLSAgICAgICAgICAgICAgICAgICAgdG9vbHRpcCA6ICdTZWFyY2ggaGVscCBmb3IgdGhpcyB0
b29sIChCaW9zdGFyKScsCi0gICAgICAgICAgICAgICAgICAgIG9uY2xpY2sgOiBmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKG9wdGlvbnMuYmlvc3Rhcl91
cmwgKyAnL3QvJyArIG9wdGlvbnMuPQppZCArICcvJyk7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgID0yMAotICAg
ICAgICAgICAgLy8gY3JlYXRlIHNoYXJlIGJ1dHRvbgotICAgICAgICAgICAgbWVudV9idXR0b24u
YWRkTWVudSh7Ci0gICAgICAgICAgICAgICAgaWNvbiAgICA6ICdmYS1zaGFyZScsCi0gICAgICAg
ICAgICAgICAgdGl0bGUgICA6ICdTaGFyZScsCi0gICAgICAgICAgICAgICAgdG9vbHRpcCA6ICdT
aGFyZSB0aGlzIHRvb2wnLAotICAgICAgICAgICAgICAgIG9uY2xpY2sgOiBmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgICAgICAgICAgcHJvbXB0KCdDb3B5IHRvIGNsaXBib2FyZDogQ3RybCtDLCBF
bnRlcicsIHdpbmRvdy5sb2NhPQp0aW9uLm9yaWdpbiArIGdhbGF4eV9jb25maWcucm9vdCArICdy
b290P3Rvb2xfaWQ9M0QnICsgb3B0aW9ucy5pZCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgID0yMAotICAgICAgICAgICAgLy8gYWRkIGFkbWluIG9wZXJh
dGlvbnMKLSAgICAgICAgICAgIGlmICh0aGlzLmlzX2FkbWluKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gY3JlYXRlIGRvd25sb2FkIGJ1dHRvbgotICAgICAgICAgICAgICAgIG1lbnVfYnV0dG9uLmFk
ZE1lbnUoewotICAgICAgICAgICAgICAgICAgICBpY29uICAgIDogJ2ZhLWRvd25sb2FkJywKLSAg
ICAgICAgICAgICAgICAgICAgdGl0bGUgICA6ICdEb3dubG9hZCcsCi0gICAgICAgICAgICAgICAg
ICAgIHRvb2x0aXAgOiAnRG93bmxvYWQgdGhpcyB0b29sJywKLSAgICAgICAgICAgICAgICAgICAg
b25jbGljayA6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Lmxv
Y2F0aW9uLmhyZWYgPTNEIGdhbGF4eV9jb25maWcucm9vdCArICdhcGk9Ci90b29scy8nICsgb3B0
aW9ucy5pZCArICcvZG93bmxvYWQnOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgID0yMAotICAgICAgICAgICAgLy8g
Y3JlYXRlIHRvb2wgZm9ybSBzZWN0aW9uCi0gICAgICAgICAgICB0aGlzLnNlY3Rpb24gPTNEIG5l
dyBUb29sU2VjdGlvbi5WaWV3KHNlbGYsIHsKLSAgICAgICAgICAgICAgICBpbnB1dHMgOiBvcHRp
b25zLmlucHV0cywKLSAgICAgICAgICAgICAgICBjbHMgICAgOiAndWktdGFibGUtcGxhaW4nCi0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgPTIwCi0gICAgICAgICAgICAvLyBzd2l0Y2ggdG8g
Y2xhc3NpYyB0b29sIGZvcm0gbWFrbyBpZiB0aGUgZm9ybSBkZWZpbml0aW9uIGlzID0KaW5jb21w
YXRpYmxlCi0gICAgICAgICAgICBpZiAodGhpcy5pbmNvbXBhdGlibGUpIHsKLSAgICAgICAgICAg
ICAgICB0aGlzLiRlbC5oaWRlKCk7Ci0gICAgICAgICAgICAgICAgJCgnI3Rvb2wtZm9ybS1jbGFz
c2ljJykuc2hvdygpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgPTIwCi0gICAgICAgICAgICAvLyBjcmVhdGUgcG9ydGxldAotICAgICAgICAgICAg
dGhpcy5wb3J0bGV0ID0zRCBuZXcgUG9ydGxldC5WaWV3KHsKLSAgICAgICAgICAgICAgICBpY29u
ICAgIDogJ2ZhLXdyZW5jaCcsCi0gICAgICAgICAgICAgICAgdGl0bGUgICA6ICc8Yj4nICsgb3B0
aW9ucy5uYW1lICsgJzwvYj4gJyArIG9wdGlvbnMuZGVzY3JpcD0KdGlvbiArICcgKEdhbGF4eSBU
b29sIFZlcnNpb24gJyArIG9wdGlvbnMudmVyc2lvbiArICcpJywKLSAgICAgICAgICAgICAgICBj
bHMgICAgIDogJ3VpLXBvcnRsZXQtc2xpbScsCi0gICAgICAgICAgICAgICAgb3BlcmF0aW9uczog
ewotICAgICAgICAgICAgICAgICAgICByZXF1aXJlbWVudHMgICAgOiByZXF1aXJlbWVudHNfYnV0
dG9uLAotICAgICAgICAgICAgICAgICAgICBtZW51ICAgICAgICAgICAgOiBtZW51X2J1dHRvbiwK
LSAgICAgICAgICAgICAgICAgICAgdmVyc2lvbnMgICAgICAgIDogdmVyc2lvbnNfYnV0dG9uCi0g
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBidXR0b25zOiB7Ci0gICAgICAgICAg
ICAgICAgICAgIGV4ZWN1dGUgOiBuZXcgVWkuQnV0dG9uKHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGljb24gICAgIDogJ2ZhLWNoZWNrJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0
aXAgIDogJ0V4ZWN1dGU6ICcgKyBvcHRpb25zLm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICB0aXRsZSAgICA6ICdFeGVjdXRlJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNscyAgICAg
IDogJ2J0biBidG4tcHJpbWFyeScsCi0gICAgICAgICAgICAgICAgICAgICAgICBmbG9hdGluZyA6
ICdjbGVhcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBvbmNsaWNrICA6IGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuam9iX2hhbmRsZXIuc3VibWl0KCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0pCi0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgID0yMAotICAgICAgICAg
ICAgLy8gYXBwZW5kIG1lc3NhZ2UKLSAgICAgICAgICAgIHRoaXMucG9ydGxldC5hcHBlbmQodGhp
cy5tZXNzYWdlLiRlbCwgdHJ1ZSk7Ci0gICAgICAgICAgID0yMAotICAgICAgICAgICAgLy8gYXBw
ZW5kIHRvb2wgc2VjdGlvbgotICAgICAgICAgICAgdGhpcy5wb3J0bGV0LmFwcGVuZCh0aGlzLnNl
Y3Rpb24uJGVsKTsKLSAgICAgICAgICAgPTIwCi0gICAgICAgICAgICAvLyBzdGFydCBmb3JtCi0g
ICAgICAgICAgICB0aGlzLiRlbC5lbXB0eSgpOwotICAgICAgICAgICAgdGhpcy4kZWwuYXBwZW5k
KHRoaXMucG9ydGxldC4kZWwpOwotICAgICAgICAgICA9MjAKLSAgICAgICAgICAgIC8vIGFwcGVu
ZCBoZWxwCi0gICAgICAgICAgICBpZiAob3B0aW9ucy5oZWxwICE9M0QgJycpIHsKLSAgICAgICAg
ICAgICAgICB0aGlzLiRlbC5hcHBlbmQoVG9vbFRlbXBsYXRlLmhlbHAob3B0aW9ucy5oZWxwKSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgID0yMAotICAgICAgICAgICAgLy8gYXBwZW5kIGNp
dGF0aW9ucwotICAgICAgICAgICAgaWYgKG9wdGlvbnMuY2l0YXRpb25zKSB7Ci0gICAgICAgICAg
ICAgICAgdmFyICRjaXRhdGlvbnMgPTNEICQoJzxkaXYvPicpOwotICAgICAgICAgICAgICAgIHZh
ciBjaXRhdGlvbnMgPTNEIG5ldyBDaXRhdGlvbk1vZGVsLlRvb2xDaXRhdGlvbkNvbGxlY3Rpb249
CigpOwotICAgICAgICAgICAgICAgIGNpdGF0aW9ucy50b29sX2lkID0zRCBvcHRpb25zLmlkOwot
ICAgICAgICAgICAgICAgIHZhciBjaXRhdGlvbl9saXN0X3ZpZXcgPTNEIG5ldyBDaXRhdGlvblZp
ZXcuQ2l0YXRpb25MaXN0Vmk9CmV3KHsgZWw6ICRjaXRhdGlvbnMsIGNvbGxlY3Rpb246IGNpdGF0
aW9ucyB9ICk7Ci0gICAgICAgICAgICAgICAgY2l0YXRpb25fbGlzdF92aWV3LnJlbmRlcigpOwot
ICAgICAgICAgICAgICAgIGNpdGF0aW9ucy5mZXRjaCgpOwotICAgICAgICAgICAgICAgIHRoaXMu
JGVsLmFwcGVuZCgkY2l0YXRpb25zKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgPTIwCi0g
ICAgICAgICAgICAvLyBzaG93IG1lc3NhZ2UgaWYgYXZhaWxhYmxlIGluIG1vZGVsCi0gICAgICAg
ICAgICBpZiAob3B0aW9ucy5tZXNzYWdlKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5tZXNzYWdl
LnVwZGF0ZSh7Ci0gICAgICAgICAgICAgICAgICAgIHBlcnNpc3RlbnQgIDogdHJ1ZSwKLSAgICAg
ICAgICAgICAgICAgICAgc3RhdHVzICAgICAgOiAnd2FybmluZycsCi0gICAgICAgICAgICAgICAg
ICAgIG1lc3NhZ2UgICAgIDogb3B0aW9ucy5tZXNzYWdlCi0gICAgICAgICAgICAgICAgfSk7Ci0g
ICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9KTsKPTIwCgpkaWZmIC1yIDUzMDVlNGQxYzk5
ZDQ3OGFkYTVmZDYyOTMwZTQyODc1ZGE0OGZkMWMgLXIgNmE4YTc5ZjliNmQ1MmJmOTZlMjJkOTQ9
Cjc0MGY5YzM3YjQ0NGQ4ZDEyIGNsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMt
am9icy5qcwotLS0gYS9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLWpvYnMu
anMKKysrIGIvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy1qb2JzLmpzCkBA
IC05OCw3ICs5OCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgID0yMAogICAgICAgICAg
ICAgLy8gdmFsaWRhdGUgbm9uLW9wdGlvbmFsIGZpZWxkcwotICAgICAgICAgICAgaWYgKCFpbnB1
dF9kZWYub3B0aW9uYWwgJiYgaW5wdXRfZmllbGQudmFsaWRhdGUgJiYgIWlucHV0X2ZpZWw9CmQu
dmFsaWRhdGUoKSkgeworICAgICAgICAgICAgaWYgKCFpbnB1dF9kZWYub3B0aW9uYWwgJiYgaW5w
dXRfdmFsdWUgPTNEPTNEIG51bGwpIHsKICAgICAgICAgICAgICAgICB0aGlzLmFwcC5oaWdobGln
aHQoaW5wdXRfaWQpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IH0KCmRpZmYgLXIgNTMwNWU0ZDFjOTlkNDc4YWRhNWZkNjI5MzBlNDI4NzVkYTQ4ZmQxYyAtciA2
YThhNzlmOWI2ZDUyYmY5NmUyMmQ5ND0KNzQwZjljMzdiNDQ0ZDhkMTIgY2xpZW50L2dhbGF4eS9z
Y3JpcHRzL212Yy90b29scy90b29scy1zZWN0aW9uLmpzCi0tLSBhL2NsaWVudC9nYWxheHkvc2Ny
aXB0cy9tdmMvdG9vbHMvdG9vbHMtc2VjdGlvbi5qcworKysgYi9jbGllbnQvZ2FsYXh5L3Njcmlw
dHMvbXZjL3Rvb2xzL3Rvb2xzLXNlY3Rpb24uanMKQEAgLTM4Miw2ICszODIsMTEgQEAKICAgICAg
ICAgLyoqIERhdGEgaW5wdXQgZmllbGQKICAgICAgICAgKi8KICAgICAgICAgX2ZpZWxkRGF0YSA6
IGZ1bmN0aW9uKGlucHV0X2RlZikgeworICAgICAgICAgICAgaWYgKHRoaXMuYXBwLndvcmtmbG93
KSB7CisgICAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbnMgPTNEIFV0aWxzLnRleHRpZnkoaW5w
dXRfZGVmLmV4dGVuc2lvbnMudG9TdD0KcmluZygpKTsKKyAgICAgICAgICAgICAgICBpbnB1dF9k
ZWYuaW5mbyA9M0QgJ0RhdGEgaW5wdXQgXCcnICsgaW5wdXRfZGVmLm5hbWUgKyAnXCcgPQooJyAr
IGV4dGVuc2lvbnMgKyAnKSc7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkSGlk
ZGVuKGlucHV0X2RlZik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB2YXIgc2VsZiA9M0Qg
dGhpczsKICAgICAgICAgICAgIHJldHVybiBuZXcgU2VsZWN0Q29udGVudC5WaWV3KHRoaXMuYXBw
LCB7CiAgICAgICAgICAgICAgICAgaWQgICAgICAgICAgOiAnZmllbGQtJyArIGlucHV0X2RlZi5p
ZCwKQEAgLTM5OCw2ICs0MDMsMTQgQEAKICAgICAgICAgLyoqIFNlbGVjdC9DaGVja2JveC9SYWRp
byBvcHRpb25zIGZpZWxkCiAgICAgICAgICovCiAgICAgICAgIF9maWVsZFNlbGVjdCA6IGZ1bmN0
aW9uIChpbnB1dF9kZWYpIHsKKyAgICAgICAgICAgIC8vIHNob3cgdGV4dCBmaWVsZCBpbiB3b3Jr
ZmxvdworICAgICAgICAgICAgaWYgKHRoaXMuYXBwLndvcmtmbG93ICYmIGlucHV0X2RlZi5pc19k
eW5hbWljKSB7CisgICAgICAgICAgICAgICAgaWYgKCFVdGlscy52YWxpZGF0ZShpbnB1dF9kZWYu
dmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgIGlucHV0X2RlZi52YWx1ZSA9M0QgJyc7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9maWVsZFRleHQo
aW5wdXRfZGVmKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgPTIwCiAgICAgICAgICAgICAv
LyBjb25maWd1cmUgb3B0aW9ucyBmaWVsZHMKICAgICAgICAgICAgIHZhciBvcHRpb25zID0zRCBb
XTsKICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gaW5wdXRfZGVmLm9wdGlvbnMpIHsKQEAgLTQ3
NSw3ICs0ODgsOCBAQAogICAgICAgICAqLwogICAgICAgICBfZmllbGRIaWRkZW4gOiBmdW5jdGlv
bihpbnB1dF9kZWYpIHsKICAgICAgICAgICAgIHJldHVybiBuZXcgVWkuSGlkZGVuKHsKLSAgICAg
ICAgICAgICAgICBpZCAgICAgIDogJ2ZpZWxkLScgKyBpbnB1dF9kZWYuaWQKKyAgICAgICAgICAg
ICAgICBpZCAgICAgIDogJ2ZpZWxkLScgKyBpbnB1dF9kZWYuaWQsCisgICAgICAgICAgICAgICAg
aW5mbyAgICA6IGlucHV0X2RlZi5pbmZvCiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwKICAg
ICAgICA9MjAKCmRpZmYgLXIgNTMwNWU0ZDFjOTlkNDc4YWRhNWZkNjI5MzBlNDI4NzVkYTQ4ZmQx
YyAtciA2YThhNzlmOWI2ZDUyYmY5NmUyMmQ5ND0KNzQwZjljMzdiNDQ0ZDhkMTIgY2xpZW50L2dh
bGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy1zZWxlY3QtY29udGVudC5qcwotLS0gYS9jbGll
bnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLXNlbGVjdC1jb250ZW50LmpzCisrKyBi
L2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtc2VsZWN0LWNvbnRlbnQuanMK
QEAgLTM2LDE0ICszNiw3IEBACiAgICAgICAgIHRoaXMubGlzdCA9M0Qge307CiAgICAgICAgPTIw
CiAgICAgICAgIC8vIGVycm9yIG1lc3NhZ2VzCi0gICAgICAgIHZhciBleHRlbnNpb25zID0zRCBv
cHRpb25zLmV4dGVuc2lvbnMudG9TdHJpbmcoKTsKLSAgICAgICAgaWYgKGV4dGVuc2lvbnMpIHsK
LSAgICAgICAgICAgIGV4dGVuc2lvbnMgPTNEIGV4dGVuc2lvbnMucmVwbGFjZSgvLC9nLCAnLCAn
KTsKLSAgICAgICAgICAgIHZhciBwb3MgPTNEIGV4dGVuc2lvbnMubGFzdEluZGV4T2YoJywgJyk7
Ci0gICAgICAgICAgICBpZiAocG9zICE9M0QgLTEpIHsKLSAgICAgICAgICAgICAgICBleHRlbnNp
b25zID0zRCBleHRlbnNpb25zLnN1YnN0cigwLCBwb3MpICsgJyBvciAnICsgZXh0ZW5zPQppb25z
LnN1YnN0cihwb3MrMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgdmFyIGV4
dGVuc2lvbnMgPTNEIFV0aWxzLnRleHRpZnkob3B0aW9ucy5leHRlbnNpb25zKTsKICAgICAgICAg
dmFyIGhkYV9lcnJvciA9M0QgJ05vIGRhdGFzZXQgYXZhaWxhYmxlLic7CiAgICAgICAgIGlmIChl
eHRlbnNpb25zKSB7CiAgICAgICAgICAgICBoZGFfZXJyb3IgPTNEICdObyAnICsgZXh0ZW5zaW9u
cyArICcgZGF0YXNldCBhdmFpbGFibGUuJzsKCmRpZmYgLXIgNTMwNWU0ZDFjOTlkNDc4YWRhNWZk
NjI5MzBlNDI4NzVkYTQ4ZmQxYyAtciA2YThhNzlmOWI2ZDUyYmY5NmUyMmQ5ND0KNzQwZjljMzdi
NDQ0ZDhkMTIgY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy10cmVlLmpzCi0t
LSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtdHJlZS5qcworKysgYi9j
bGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLXRyZWUuanMKQEAgLTIsNyArMiw3
IEBACiAgICAgVGhpcyBjbGFzcyBtYXBzIHRoZSB0b29sIGZvcm0gZG9tIHRvIGFuIGFwaSBjb21w
YXRpYmxlIGphdmFzY3JpcHQgZGljdD0KaW9uYXJ5LgogKi8KIC8vIGRlcGVuZGVuY2llcwotZGVm
aW5lKFtdLCBmdW5jdGlvbigpIHsKK2RlZmluZShbJ3V0aWxzL3V0aWxzJ10sIGZ1bmN0aW9uKFV0
aWxzKSB7Cj0yMAogLy8gdG9vbCBmb3JtIHRyZWUKIHJldHVybiBCYWNrYm9uZS5Nb2RlbC5leHRl
bmQoewpAQCAtMTIwLDcgKzEyMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9MjAK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgZGVmYXVsdCB2YWx1ZQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmllbGQuc2tpcCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQub3B0aW9uYWwgJiYgZmllbGQudmFsaWRhdGUg
JiYgIWY9CmllbGQudmFsaWRhdGUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoZmllbGQudmFsaWRhdGUgJiYgIWZpZWxkLnZhbGlkYXRlKHZhbHU9CmUpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9M0QgbnVsbDsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhZGQgKGpvYl9pbnB1dF9pZCwgaW5wdXQuaWQsIHZhbHVlKTsKCmRpZmYgLXIgNTMwNWU0ZDFj
OTlkNDc4YWRhNWZkNjI5MzBlNDI4NzVkYTQ4ZmQxYyAtciA2YThhNzlmOWI2ZDUyYmY5NmUyMmQ5
ND0KNzQwZjljMzdiNDQ0ZDhkMTIgY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy91aS91aS1taXNj
LmpzCi0tLSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdWkvdWktbWlzYy5qcworKysgYi9j
bGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3VpL3VpLW1pc2MuanMKQEAgLTQxMiw3ICs0MTIsNyBA
QAogICAgIGluaXRpYWxpemUgOiBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgIC8vIGNvbmZp
Z3VyZSBvcHRpb25zCiAgICAgICAgIHRoaXMub3B0aW9ucyA9M0Qgb3B0aW9uczsKLSAgICAgICAg
ICAgPTIwCisgICAgICAgPTIwCiAgICAgICAgIC8vIGNyZWF0ZSBuZXcgZWxlbWVudAogICAgICAg
ICB0aGlzLnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSk7CiAgICAgICAg
PTIwCkBAIC00MjUsMTQgKzQyNSwyMCBAQAogICAgIC8vIHZhbHVlCiAgICAgdmFsdWUgOiBmdW5j
dGlvbiAobmV3X3ZhbCkgewogICAgICAgICBpZiAobmV3X3ZhbCAhPTNEPTNEIHVuZGVmaW5lZCkg
ewotICAgICAgICAgICAgdGhpcy4kZWwudmFsKG5ld192YWwpOworICAgICAgICAgICAgdGhpcy4k
KCdoaWRkZW4nKS52YWwobmV3X3ZhbCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRoaXMu
JGVsLnZhbCgpOworICAgICAgICByZXR1cm4gdGhpcy4kKCdoaWRkZW4nKS52YWwoKTsKICAgICB9
LAogICAgPTIwCiAgICAgLy8gZWxlbWVudAogICAgIF90ZW1wbGF0ZTogZnVuY3Rpb24ob3B0aW9u
cykgewotICAgICAgICByZXR1cm4gJzxoaWRkZW4gaWQ9M0QiJyArIG9wdGlvbnMuaWQgKyAnIiB2
YWx1ZT0zRCInICsgb3B0aW9ucy52YWw9CnVlICsgJyIvPic7CisgICAgICAgIHZhciB0bXBsID0z
RCAgJzxkaXYgaWQ9M0QiJyArIG9wdGlvbnMuaWQgKyAnIiA+JzsKKyAgICAgICAgaWYgKG9wdGlv
bnMuaW5mbykgeworICAgICAgICAgICAgdG1wbCArPTNEICAgICAnPGxhYmVsPicgKyBvcHRpb25z
LmluZm8gKyAnPC9sYWJlbD4nOworICAgICAgICB9CisgICAgICAgIHRtcGwgKz0zRCAgICAgICAg
ICc8aGlkZGVuIHZhbHVlPTNEIicgKyBvcHRpb25zLnZhbHVlICsgJyIvPicgKworICAgICAgICAg
ICAgICAgICAgICAnPC9kaXY+JzsKKyAgICAgICAgcmV0dXJuIHRtcGw7CiAgICAgfQogfSk7Cj0y
MAoKZGlmZiAtciA1MzA1ZTRkMWM5OWQ0NzhhZGE1ZmQ2MjkzMGU0Mjg3NWRhNDhmZDFjIC1yIDZh
OGE3OWY5YjZkNTJiZjk2ZTIyZDk0PQo3NDBmOWMzN2I0NDRkOGQxMiBjbGllbnQvZ2FsYXh5L3Nj
cmlwdHMvbXZjL3VpL3VpLW9wdGlvbnMuanMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212
Yy91aS91aS1vcHRpb25zLmpzCisrKyBiL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdWkvdWkt
b3B0aW9ucy5qcwpAQCAtMTM3LDE2ICsxMzcsNyBAQAogICAgIC8qKiBWYWxpZGF0ZSB0aGUgc2Vs
ZWN0ZWQgb3B0aW9uL29wdGlvbnMKICAgICAqLwogICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsK
LSAgICAgICAgdmFyIGN1cnJlbnQgPTNEIHRoaXMudmFsdWUoKTsKLSAgICAgICAgaWYgKCEoY3Vy
cmVudCBpbnN0YW5jZW9mIEFycmF5KSkgewotICAgICAgICAgICAgY3VycmVudCA9M0QgW2N1cnJl
bnRdOwotICAgICAgICB9Ci0gICAgICAgIGZvciAodmFyIGkgaW4gY3VycmVudCkgewotICAgICAg
ICAgICAgaWYgKFtudWxsLCAnbnVsbCcsIHVuZGVmaW5lZF0uaW5kZXhPZihjdXJyZW50W2ldKSA+
IC0xKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gVXRpbHMudmFsaWRh
dGUodGhpcy52YWx1ZSgpKTsKICAgICB9LAogICAgPTIwCiAgICAgLyoqIFdhaXQgbWVzc2FnZSBk
dXJpbmcgcmVxdWVzdCBwcm9jZXNzaW5nCgpkaWZmIC1yIDUzMDVlNGQxYzk5ZDQ3OGFkYTVmZDYy
OTMwZTQyODc1ZGE0OGZkMWMgLXIgNmE4YTc5ZjliNmQ1MmJmOTZlMjJkOTQ9Cjc0MGY5YzM3YjQ0
NGQ4ZDEyIGNsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdWkvdWktc2VsZWN0LWRlZmF1bHQuanMK
LS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy91aS91aS1zZWxlY3QtZGVmYXVsdC5qcwor
KysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3VpL3VpLXNlbGVjdC1kZWZhdWx0LmpzCkBA
IC05NiwxNiArOTYsNyBAQAogICAgIC8qKiBWYWxpZGF0ZSB0aGUgY3VycmVudCBzZWxlY3Rpb24K
ICAgICAqLwogICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGN1cnJlbnQg
PTNEIHRoaXMudmFsdWUoKTsKLSAgICAgICAgaWYgKCEoY3VycmVudCBpbnN0YW5jZW9mIEFycmF5
KSkgewotICAgICAgICAgICAgY3VycmVudCA9M0QgW2N1cnJlbnRdOwotICAgICAgICB9Ci0gICAg
ICAgIGZvciAodmFyIGkgaW4gY3VycmVudCkgewotICAgICAgICAgICAgaWYgKFtudWxsLCAnbnVs
bCcsIHVuZGVmaW5lZF0uaW5kZXhPZihjdXJyZW50W2ldKSA+IC0xKSB7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICByZXR1cm4gVXRpbHMudmFsaWRhdGUodGhpcy52YWx1ZSgpKTsKICAg
ICB9LAogICAgPTIwCiAgICAgLyoqIFJldHVybiB0aGUgbGFiZWwvdGV4dCBvZiB0aGUgY3VycmVu
dCBzZWxlY3Rpb24KCmRpZmYgLXIgNTMwNWU0ZDFjOTlkNDc4YWRhNWZkNjI5MzBlNDI4NzVkYTQ4
ZmQxYyAtciA2YThhNzlmOWI2ZDUyYmY5NmUyMmQ5ND0KNzQwZjljMzdiNDQ0ZDhkMTIgY2xpZW50
L2dhbGF4eS9zY3JpcHRzL212Yy91cGxvYWQvdXBsb2FkLXZpZXcuanMKLS0tIGEvY2xpZW50L2dh
bGF4eS9zY3JpcHRzL212Yy91cGxvYWQvdXBsb2FkLXZpZXcuanMKKysrIGIvY2xpZW50L2dhbGF4
eS9zY3JpcHRzL212Yy91cGxvYWQvdXBsb2FkLXZpZXcuanMKQEAgLTEwNCw3ICsxMDQsNyBAQAog
ICAgICAgICB9KTsKICAgICAgICA9MjAKICAgICAgICAgLy8gZGVmaW5lIGxvY2F0aW9uCi0gICAg
ICAgICQoJyNsZWZ0IC51bmlmaWVkLXBhbmVsLWhlYWRlci1pbm5lcicpLmFwcGVuZCgobmV3IFVw
bG9hZEJ1dHRvbi5WaT0KZXcodGhpcy51aV9idXR0b24pKS4kZWwpOworICAgICAgICAkKCcud2l0
aC11cGxvYWQtYnV0dG9uJykuYXBwZW5kKChuZXcgVXBsb2FkQnV0dG9uLlZpZXcodGhpcy51aV9i
dXQ9CnRvbikpLiRlbCk7CiAgICAgICAgPTIwCiAgICAgICAgIC8vIGxvYWQgZXh0ZW5zaW9uCiAg
ICAgICAgIHZhciBzZWxmID0zRCB0aGlzOwoKZGlmZiAtciA1MzA1ZTRkMWM5OWQ0NzhhZGE1ZmQ2
MjkzMGU0Mjg3NWRhNDhmZDFjIC1yIDZhOGE3OWY5YjZkNTJiZjk2ZTIyZDk0PQo3NDBmOWMzN2I0
NDRkOGQxMiBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvdXRpbHMvdXRpbHMuanMKLS0tIGEvY2xpZW50
L2dhbGF4eS9zY3JpcHRzL3V0aWxzL3V0aWxzLmpzCisrKyBiL2NsaWVudC9nYWxheHkvc2NyaXB0
cy91dGlscy91dGlscy5qcwpAQCAtMTUsNiArMTUsNDAgQEAKIH07Cj0yMAogLyoqCisgKiBWYWxp
ZGF0ZSBhdG9taWMgdmFsdWVzIG9yIGxpc3Qgb2YgdmFsdWVzCisgKiB1c3VhbGx5IHVzZWQgZm9y
IHNlbGVjdGFibGUgb3B0aW9ucworICogQHBhcmFte1N0cmluZ30gICB2YWx1ZSAtIFZhbHVlIG9y
IGxpc3QgdG8gYmUgdmFsaWRhdGVkCisgKi8KK2Z1bmN0aW9uIHZhbGlkYXRlICh2YWx1ZSkgewor
ICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpKSB7CisgICAgICAgIHZhbHVlID0zRCBb
dmFsdWVdOworICAgIH0KKyAgICBmb3IgKHZhciBpIGluIHZhbHVlKSB7CisgICAgICAgIGlmIChb
J05vbmUnLCBudWxsLCAnbnVsbCcsIHVuZGVmaW5lZCwgJ3VuZGVmaW5lZCddLmluZGV4T2YodmFs
dWVbaT0KXSkgPiAtMSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfTsKKworLyoqCisgKiBDb252ZXJ0IGxpc3QgdG8gcHJl
dHR5IHN0cmluZworICogQHBhcmFte1N0cmluZ30gICBsc3QgLSBMaXN0IG9mIHN0cmluZ3MgdG8g
YmUgY29udmVydGVkIGluIGh1bWFuIHJlYWRhYmw9CmUgbGlzdCBzZW50ZW5jZQorICovCitmdW5j
dGlvbiB0ZXh0aWZ5KGxzdCkgeworICAgIHZhciBsc3QgPTNEIGxzdC50b1N0cmluZygpOworICAg
IGlmIChsc3QpIHsKKyAgICAgICAgbHN0ID0zRCBsc3QucmVwbGFjZSgvLC9nLCAnLCAnKTsKKyAg
ICAgICAgdmFyIHBvcyA9M0QgbHN0Lmxhc3RJbmRleE9mKCcsICcpOworICAgICAgICBpZiAocG9z
ICE9M0QgLTEpIHsKKyAgICAgICAgICAgIGxzdCA9M0QgbHN0LnN1YnN0cigwLCBwb3MpICsgJyBv
ciAnICsgbHN0LnN1YnN0cihwb3MrMSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxzdDsK
KyAgICB9CisgICAgcmV0dXJuICcnOworfTsKKworLyoqCiAgKiBSZXF1ZXN0IGhhbmRsZXIgZm9y
IEdFVAogICogQHBhcmFte1N0cmluZ30gICB1cmwgICAgIC0gVXJsIHJlcXVlc3QgaXMgbWFkZSB0
bwogICogQHBhcmFte0Z1bmN0aW9ufSBzdWNjZXNzIC0gQ2FsbGJhY2sgb24gc3VjY2VzcwpAQCAt
MjEyLDcgKzI0Niw5IEBACiAgICAgdGltZTogdGltZSwKICAgICB3cmFwOiB3cmFwLAogICAgIHJl
cXVlc3Q6IHJlcXVlc3QsCi0gICAgc2FuaXRpemU6IHNhbml0aXplCisgICAgc2FuaXRpemU6IHNh
bml0aXplLAorICAgIHRleHRpZnk6IHRleHRpZnksCisgICAgdmFsaWRhdGU6IHZhbGlkYXRlCiB9
Owo9MjAKIH0pOwoKZGlmZiAtciA1MzA1ZTRkMWM5OWQ0NzhhZGE1ZmQ2MjkzMGU0Mjg3NWRhNDhm
ZDFjIC1yIDZhOGE3OWY5YjZkNTJiZjk2ZTIyZDk0PQo3NDBmOWMzN2I0NDRkOGQxMiBsaWIvZ2Fs
YXh5L3Rvb2xzL19faW5pdF9fLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvX19pbml0X18ucHkK
KysrIGIvbGliL2dhbGF4eS90b29scy9fX2luaXRfXy5weQpAQCAtMzMsNyArMzMsNyBAQAogZnJv
bSBnYWxheHkudG9vbHMuYWN0aW9ucy5kYXRhX3NvdXJjZSBpbXBvcnQgRGF0YVNvdXJjZVRvb2xB
Y3Rpb24KIGZyb20gZ2FsYXh5LnRvb2xzLmFjdGlvbnMuZGF0YV9tYW5hZ2VyIGltcG9ydCBEYXRh
TWFuYWdlclRvb2xBY3Rpb24KIGZyb20gZ2FsYXh5LnRvb2xzLmRlcHMgaW1wb3J0IGJ1aWxkX2Rl
cGVuZGVuY3lfbWFuYWdlcgotZnJvbSBnYWxheHkudG9vbHMucGFyYW1ldGVycyBpbXBvcnQgY2hl
Y2tfcGFyYW0sIHBhcmFtc19mcm9tX3N0cmluZ3MsIHBhcmE9Cm1zX3RvX3N0cmluZ3MKK2Zyb20g
Z2FsYXh5LnRvb2xzLnBhcmFtZXRlcnMgaW1wb3J0IHBhcmFtc190b19pbmNvbWluZywgY2hlY2tf
cGFyYW0sIHBhcmFtPQpzX2Zyb21fc3RyaW5ncywgcGFyYW1zX3RvX3N0cmluZ3MKIGZyb20gZ2Fs
YXh5LnRvb2xzLnBhcmFtZXRlcnMgaW1wb3J0IG91dHB1dF9jb2xsZWN0CiBmcm9tIGdhbGF4eS50
b29scy5wYXJhbWV0ZXJzLmJhc2ljIGltcG9ydCAoQmFzZVVSTFRvb2xQYXJhbWV0ZXIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YVRvb2xQYXJhbWV0ZXIs
IEhpZGRlblRvb2xQYT0KcmFtZXRlciwgTGlicmFyeURhdGFzZXRUb29sUGFyYW1ldGVyLApAQCAt
MjA3Myw2ICsyMDczLDMzNiBAQAo9MjAKICAgICAgICAgcmV0dXJuIHRvb2xfZGljdAo9MjAKKyAg
ICBkZWYgdG9fanNvbiAoc2VsZiwgdHJhbnMsICoqa3dkKToKKyAgICAgICAgIiIiCisgICAgICAg
IFJlY3Vyc2l2ZWx5IGNyZWF0ZXMgYSB0b29sIGRpY3Rpb25hcnkgY29udGFpbmluZyByZXBlYXRz
LCBkeW5hbWljID0Kb3B0aW9ucyBhbmQgdXBkYXRlZCBzdGF0ZXMuCisgICAgICAgICIiIgorICAg
ICAgICBqb2JfaWQgPTNEIGt3ZC5nZXQoJ2pvYl9pZCcsIE5vbmUpCisgICAgICAgIGRhdGFzZXRf
aWQgPTNEIGt3ZC5nZXQoJ2RhdGFzZXRfaWQnLCBOb25lKQorICAgICAgID0yMAorICAgICAgICAj
IGxvYWQgam9iIGRldGFpbHMgaWYgcHJvdmlkZWQKKyAgICAgICAgam9iID0zRCBOb25lCisgICAg
ICAgIGlmIGpvYl9pZDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBqb2JfaWQg
PTNEIHRyYW5zLnNlY3VyaXR5LmRlY29kZV9pZCggam9iX2lkICkKKyAgICAgICAgICAgICAgICBq
b2IgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLmFwcC5tb2RlbC5Kb2IgKS5nZXQo
PQogam9iX2lkICkKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGV4Y2VwdGlvbjoKKyAg
ICAgICAgICAgICAgICB0cmFucy5yZXNwb25zZS5zdGF0dXMgPTNEIDUwMAorICAgICAgICAgICAg
ICAgIGxvZy5lcnJvcignRmFpbGVkIHRvIHJldHJpZXZlIGpvYi4nKQorICAgICAgICAgICAgICAg
IHJldHVybiB7ICdlcnJvcic6ICdGYWlsZWQgdG8gcmV0cmlldmUgam9iLicgfQorICAgICAgICBl
bGlmIGRhdGFzZXRfaWQ6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZGF0YXNl
dF9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBkYXRhc2V0X2lkICkKKyAgICAgICAg
ICAgICAgICBkYXRhID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5hcHAubW9kZWwu
SGlzdG9yeURhPQp0YXNldEFzc29jaWF0aW9uICkuZ2V0KCBkYXRhc2V0X2lkICkKKyAgICAgICAg
ICAgICAgICBpZiBub3QgKCB0cmFucy51c2VyX2lzX2FkbWluKCkgb3IgdHJhbnMuYXBwLnNlY3Vy
aXR5X2FnZW50PQouY2FuX2FjY2Vzc19kYXRhc2V0KCB0cmFucy5nZXRfY3VycmVudF91c2VyX3Jv
bGVzKCksIGRhdGEuZGF0YXNldCApICk6CisgICAgICAgICAgICAgICAgICAgIHRyYW5zLnJlc3Bv
bnNlLnN0YXR1cyA9M0QgNTAwCisgICAgICAgICAgICAgICAgICAgIGxvZy5lcnJvcignVXNlciBo
YXMgbm8gYWNjZXNzIHRvIGRhdGFzZXQuJykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsg
J2Vycm9yJzogJ1VzZXIgaGFzIG5vIGFjY2VzcyB0byBkYXRhc2V0LicgfQorICAgICAgICAgICAg
ICAgIGpvYiA9M0QgZGF0YS5jcmVhdGluZ19qb2IKKyAgICAgICAgICAgICAgICBpZiBub3Qgam9i
OgorICAgICAgICAgICAgICAgICAgICB0cmFucy5yZXNwb25zZS5zdGF0dXMgPTNEIDUwMAorICAg
ICAgICAgICAgICAgICAgICBsb2cuZXJyb3IoJ0NyZWF0aW5nIGpvYiBub3QgZm91bmQuJykKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgJ2Vycm9yJzogJ0NyZWF0aW5nIGpvYiBub3QgZm91
bmQuJyB9CisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBleGNlcHRpb246CisgICAgICAg
ICAgICAgICAgdHJhbnMucmVzcG9uc2Uuc3RhdHVzID0zRCA1MDAKKyAgICAgICAgICAgICAgICBs
b2cuZXJyb3IoJ0ZhaWxlZCB0byBnZXQgam9iIGluZm9ybWF0aW9uLicpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHsgJ2Vycm9yJzogJ0ZhaWxlZCB0byBnZXQgam9iIGluZm9ybWF0aW9uLicgfQor
ICAgICAgICAgICA9MjAKKyAgICAgICAgIyBsb2FkIGpvYiBwYXJhbWV0ZXJzIGludG8gaW5jb21p
bmcKKyAgICAgICAgdG9vbF9tZXNzYWdlID0zRCAnJworICAgICAgICBpZiBqb2I6CisgICAgICAg
ICAgICB0cnk6CisgICAgICAgICAgICAgICAgam9iX3BhcmFtcyA9M0Qgam9iLmdldF9wYXJhbV92
YWx1ZXMoIHRyYW5zLmFwcCwgaWdub3JlX2Vycj0Kb3JzID0zRCBUcnVlICkKKyAgICAgICAgICAg
ICAgICBqb2JfbWVzc2FnZXMgPTNEIHNlbGYuY2hlY2tfYW5kX3VwZGF0ZV9wYXJhbV92YWx1ZXMo
IGpvYl9wPQphcmFtcywgdHJhbnMsIHVwZGF0ZV92YWx1ZXM9M0RGYWxzZSApCisgICAgICAgICAg
ICAgICAgdG9vbF9tZXNzYWdlID0zRCBzZWxmLl9jb21wYXJlX3Rvb2xfdmVyc2lvbih0cmFucywg
am9iKQorICAgICAgICAgICAgICAgIHBhcmFtc190b19pbmNvbWluZygga3dkLCBzZWxmLmlucHV0
cywgam9iX3BhcmFtcywgdHJhbnMuYXA9CnAgKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlv
biwgZXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIHRyYW5zLnJlc3BvbnNlLnN0YXR1cyA9M0Qg
NTAwCisgICAgICAgICAgICAgICAgcmV0dXJuIHsgJ2Vycm9yJzogc3RyKCBleGNlcHRpb24gKSB9
CisKKyAgICAgICAgIyBjcmVhdGUgcGFyYW1ldGVyIG9iamVjdAorICAgICAgICBwYXJhbXMgPTNE
IGdhbGF4eS51dGlsLlBhcmFtcygga3dkLCBzYW5pdGl6ZSA9M0QgRmFsc2UgKQorICAgICAgID0y
MAorICAgICAgICAjIGNvbnZlcnQgdmFsdWUgdG8ganNvbmlmaWFibGUgdmFsdWUKKyAgICAgICAg
ZGVmIGpzb25pZnkodik6CisgICAgICAgICAgICAjIGNoZWNrIGlmIHZhbHVlIGlzIG51bWVyaWMK
KyAgICAgICAgICAgIGlzbnVtYmVyID0zRCBGYWxzZQorICAgICAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgICAgIGZsb2F0KHYpCisgICAgICAgICAgICAgICAgaXNudW1iZXIgPTNEIFRydWUKKyAg
ICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgcGFzcworCisgICAg
ICAgICAgICAjIGZpeCBoZGEgcGFyc2luZworICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2LCB0
cmFucy5hcHAubW9kZWwuSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbik6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgICAgJ2lkJyAgOiB0cmFucy5zZWN1cml0eS5l
bmNvZGVfaWQodi5pZCksCisgICAgICAgICAgICAgICAgICAgICdzcmMnIDogJ2hkYScKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodiwgYm9vbCk6CisgICAg
ICAgICAgICAgICAgaWYgdiBpcyBUcnVlOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3Ry
dWUnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdm
YWxzZScKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2LCBiYXNlc3RyaW5nKSBvciBpc251
bWJlcjoKKyAgICAgICAgICAgICAgICByZXR1cm4gdgorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgICMgZW5zdXJlcyB0aGF0IGlucHV0IGRp
Y3Rpb25hcnkgaXMganNvbmlmaWFibGUKKyAgICAgICAgZGVmIHNhbml0aXplKGRpY3QpOgorICAg
ICAgICAgICAgIyBnZXQgY3VycmVudCB2YWx1ZQorICAgICAgICAgICAgdmFsdWUgPTNEIGRpY3Rb
J3ZhbHVlJ10gaWYgJ3ZhbHVlJyBpbiBkaWN0IGVsc2UgTm9uZQorCisgICAgICAgICAgICAjIGpz
b25pZnkgYnkgdHlwZQorICAgICAgICAgICAgaWYgZGljdFsndHlwZSddIGluIFsnZGF0YSddOgor
ICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGxpc3QpOgorICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSA9M0QgWyBqc29uaWZ5KHYpIGZvciB2IGluIHZhbHVlIF0KKyAgICAgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9M0QgWyBqc29uaWZ5KHZh
bHVlKSBdCisgICAgICAgICAgICAgICAgdmFsdWUgPTNEIHsgJ3ZhbHVlcyc6IHZhbHVlIH0KKyAg
ICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgbGlzdCk6CisgICAgICAgICAgICAgICAg
dmFsdWUgPTNEIFsganNvbmlmeSh2KSBmb3IgdiBpbiB2YWx1ZSBdCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIHZhbHVlID0zRCBqc29uaWZ5KHZhbHVlKQorCisgICAgICAgICAg
ICAjIHVwZGF0ZSBhbmQgcmV0dXJuCisgICAgICAgICAgICBkaWN0Wyd2YWx1ZSddID0zRCB2YWx1
ZQorICAgICAgICAgICAgcmV0dXJuIGRpY3QKKyAgICAgICA9MjAKKyAgICAgICAgIyBpbml0aWFs
aXplIHN0YXRlIHVzaW5nIGRlZmF1bHQgcGFyYW1ldGVycworICAgICAgICBkZWYgaW5pdGlhbGl6
ZV9zdGF0ZSh0cmFucywgaW5wdXRzLCBzdGF0ZSwgY29udGV4dD0zRE5vbmUpOgorICAgICAgICAg
ICAgY29udGV4dCA9M0QgRXhwcmVzc2lvbkNvbnRleHQoc3RhdGUsIGNvbnRleHQpCisgICAgICAg
ICAgICBmb3IgaW5wdXQgaW4gaW5wdXRzLml0ZXJ2YWx1ZXMoKToKKyAgICAgICAgICAgICAgICBz
dGF0ZVtpbnB1dC5uYW1lXSA9M0QgaW5wdXQuZ2V0X2luaXRpYWxfdmFsdWUodHJhbnMsIGNvbnRl
PQp4dCkKKyAgID0yMAorICAgICAgICAjIGNoZWNrIHRoZSBjdXJyZW50IHN0YXRlIG9mIGEgdmFs
dWUgYW5kIHVwZGF0ZSBpdCBpZiBuZWNlc3NhcnkKKyAgICAgICAgZGVmIGNoZWNrX3N0YXRlKHRy
YW5zLCBpbnB1dCwgZGVmYXVsdF92YWx1ZSwgY29udGV4dCk6CisgICAgICAgICAgICB2YWx1ZSA9
M0QgZGVmYXVsdF92YWx1ZQorICAgICAgICAgICAgZXJyb3IgPTNEICdTdGF0ZSB2YWxpZGF0aW9u
IGZhaWxlZC4nCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIyByZXNvbHZlcyB0
aGUgaW5jb25zaXN0ZW50IGRlZmluaXRpb24gb2YgYm9vbGVhbiBwYXJhbWV0ZT0KcnMgKHNlZSBi
YXNlLnB5KSB3aXRob3V0IG1vZGlmeWluZyBzaGFyZWQgY29kZQorICAgICAgICAgICAgICAgIGlm
IGlucHV0LnR5cGUgPTNEPTNEICdib29sZWFuJyBhbmQgaXNpbnN0YW5jZShkZWZhdWx0X3ZhbHU9
CmUsIGJhc2VzdHJpbmcpOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgZXJyb3IgPTNEIFt1
dGlsLnN0cmluZ19hc19ib29sKGRlZmF1bHRfdmFsdWUpLCA9Ck5vbmVdCisgICAgICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUsIGVycm9yID0zRCBjaGVja19wYXJh
bSh0cmFucywgaW5wdXQsIGRlZmF1bHRfdmFsPQp1ZSwgY29udGV4dCkKKyAgICAgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb24sIGVycjoKKyAgICAgICAgICAgICAgICBsb2cuZXJyb3IoJ0NoZWNraW5n
IHBhcmFtZXRlciBmYWlsZWQuICVzJywgc3RyKGVycikpCisgICAgICAgICAgICAgICAgcGFzcwor
ICAgICAgICAgICAgcmV0dXJuIFt2YWx1ZSwgZXJyb3JdCisgICA9MjAKKyAgICAgICAgIyBwb3B1
bGF0ZXMgc3RhdGUgd2l0aCBpbmNvbWluZyB1cmwgcGFyYW1ldGVycworICAgICAgICBkZWYgcG9w
dWxhdGVfc3RhdGUodHJhbnMsIGlucHV0cywgc3RhdGUsIGVycm9ycywgaW5jb21pbmcsIHByZWZp
eD0KPTNEIiIsIGNvbnRleHQ9M0ROb25lICk6CisgICAgICAgICAgICBjb250ZXh0ID0zRCBFeHBy
ZXNzaW9uQ29udGV4dChzdGF0ZSwgY29udGV4dCkKKyAgICAgICAgICAgIGZvciBpbnB1dCBpbiBp
bnB1dHMuaXRlcnZhbHVlcygpOgorICAgICAgICAgICAgICAgIGtleSA9M0QgcHJlZml4ICsgaW5w
dXQubmFtZQorICAgICAgICAgICAgICAgIGlmIGlucHV0LnR5cGUgPTNEPTNEICdyZXBlYXQnOgor
ICAgICAgICAgICAgICAgICAgICBncm91cF9zdGF0ZSA9M0Qgc3RhdGVbaW5wdXQubmFtZV0KKyAg
ICAgICAgICAgICAgICAgICAgcmVwX2luZGV4ID0zRCAwCisgICAgICAgICAgICAgICAgICAgIGRl
bCBncm91cF9zdGF0ZVs6XQorICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwX25hbWUgPTNEICIlc18lZCIgJSAoa2V5LCByZXBfaW5kZXgp
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgYW55KFtpbmNvbWluZ19rZXkuc3RhcnRz
d2l0aChyZXBfbmFtZSkgZm9yID0KaW5jb21pbmdfa2V5IGluIGluY29taW5nLmtleXMoKV0pOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiByZXBfaW5kZXggPCBpbnB1dC5tYXg6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bmV3X3N0YXRlID0zRCB7fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19zdGF0ZVsn
X19pbmRleF9fJ10gPTNEIHJlcF9pbmRleAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
aXRpYWxpemVfc3RhdGUodHJhbnMsIGlucHV0LmlucHV0cywgbmV3X3N0YXQ9CmUsIGNvbnRleHQp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBfc3RhdGUuYXBwZW5kKG5ld19zdGF0
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3B1bGF0ZV9zdGF0ZSh0cmFucywgaW5w
dXQuaW5wdXRzLCBuZXdfc3RhdGUsPQogZXJyb3JzLCBpbmNvbWluZywgcHJlZml4PTNEcmVwX25h
bWUgKyAifCIsIGNvbnRleHQ9M0Rjb250ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgcmVw
X2luZGV4ICs9M0QgMQorICAgICAgICAgICAgICAgIGVsaWYgaW5wdXQudHlwZSA9M0Q9M0QgJ2Nv
bmRpdGlvbmFsJzoKKyAgICAgICAgICAgICAgICAgICAgZ3JvdXBfc3RhdGUgPTNEIHN0YXRlW2lu
cHV0Lm5hbWVdCisgICAgICAgICAgICAgICAgICAgIGdyb3VwX3ByZWZpeCA9M0QgIiVzfCIgJSAo
IGtleSApCisgICAgICAgICAgICAgICAgICAgIHRlc3RfcGFyYW1fa2V5ID0zRCBncm91cF9wcmVm
aXggKyBpbnB1dC50ZXN0X3BhcmFtLm5hbWUKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF92
YWx1ZSA9M0QgaW5jb21pbmcuZ2V0KHRlc3RfcGFyYW1fa2V5LCBncm91cF9zPQp0YXRlLmdldChp
bnB1dC50ZXN0X3BhcmFtLm5hbWUsIE5vbmUpKQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSwg
ZXJyb3IgPTNEIGNoZWNrX3N0YXRlKHRyYW5zLCBpbnB1dC50ZXN0X3BhcmFtLCA9CmRlZmF1bHRf
dmFsdWUsIGNvbnRleHQpCisgICAgICAgICAgICAgICAgICAgIGlmIGVycm9yOgorICAgICAgICAg
ICAgICAgICAgICAgICAgZXJyb3JzW3Rlc3RfcGFyYW1fa2V5XSA9M0QgZXJyb3IKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2Nhc2UgPTNEIGlucHV0LmdldF9jdXJyZW50X2Nh
c2UodmFsdWUsPQogdHJhbnMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBfc3Rh
dGUgPTNEIHN0YXRlW2lucHV0Lm5hbWVdID0zRCB7fQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluaXRpYWxpemVfc3RhdGUodHJhbnMsIGlucHV0LmNhc2VzW2N1cnJlbnRfY2E9CnNlXS5p
bnB1dHMsIGdyb3VwX3N0YXRlLCBjb250ZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBvcHVsYXRlX3N0YXRlKCB0cmFucywgaW5wdXQuY2FzZXNbY3VycmVudF9jYXM9CmVdLmlucHV0
cywgZ3JvdXBfc3RhdGUsIGVycm9ycywgaW5jb21pbmcsIHByZWZpeD0zRGdyb3VwX3ByZWZpeCwg
Y29udGV4dD0zRD0KY29udGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cF9z
dGF0ZVsnX19jdXJyZW50X2Nhc2VfXyddID0zRCBjdXJyZW50X2NhPQpzZQorICAgICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvcnNbdGVzdF9wYXJhbV9rZXldID0zRCAnVGhlIHNlbGVjdGVkIGNhc2UgPQppcyB1
bmF2YWlsYWJsZS9pbnZhbGlkLicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisg
ICAgICAgICAgICAgICAgICAgIGdyb3VwX3N0YXRlW2lucHV0LnRlc3RfcGFyYW0ubmFtZV0gPTNE
IHZhbHVlCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dF92YWx1ZSA9M0QgaW5jb21pbmcuZ2V0KGtleSwgc3RhdGUuZ2V0KGlucHV0Lm5hPQptZSwgTm9u
ZSkpCisgICAgICAgICAgICAgICAgICAgIHZhbHVlLCBlcnJvciA9M0QgY2hlY2tfc3RhdGUodHJh
bnMsIGlucHV0LCBkZWZhdWx0X3ZhbD0KdWUsIGNvbnRleHQpCisgICAgICAgICAgICAgICAgICAg
IGlmIGVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzW2tleV0gPTNEIGVycm9y
CisgICAgICAgICAgICAgICAgICAgIHN0YXRlW2lucHV0Lm5hbWVdID0zRCB2YWx1ZQorICAgICAg
ID0yMAorICAgICAgICAjIGJ1aWxkcyB0b29sIG1vZGVsIGluY2x1ZGluZyBhbGwgYXR0cmlidXRl
cworICAgICAgICBkZWYgaXRlcmF0ZShncm91cF9pbnB1dHMsIGlucHV0cywgc3RhdGVfaW5wdXRz
LCBvdGhlcl92YWx1ZXM9M0ROb249CmUpOgorICAgICAgICAgICAgb3RoZXJfdmFsdWVzID0zRCBF
eHByZXNzaW9uQ29udGV4dCggc3RhdGVfaW5wdXRzLCBvdGhlcl92YWx1ZXM9CiApCisgICAgICAg
ICAgICBmb3IgaW5wdXRfaW5kZXgsIGlucHV0IGluIGVudW1lcmF0ZSggaW5wdXRzLml0ZXJ2YWx1
ZXMoKSApOgorICAgICAgICAgICAgICAgICMgY3JlYXRlIG1vZGVsIGRpY3Rpb25hcnkKKyAgICAg
ICAgICAgICAgICB0b29sX2RpY3QgPTNEIGlucHV0LnRvX2RpY3QodHJhbnMpCisgICAgICAgICAg
ICAgICAgaWYgdG9vbF9kaWN0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisKKyAgICAgICAgICAgICAgICAjIHN0YXRlIGZvciBzdWJzZWN0aW9uL2dyb3VwCisgICAgICAg
ICAgICAgICAgZ3JvdXBfc3RhdGUgPTNEIHN0YXRlX2lucHV0c1tpbnB1dC5uYW1lXQorCisgICAg
ICAgICAgICAgICAgIyBpdGVyYXRlIGFuZCB1cGRhdGUgdmFsdWVzCisgICAgICAgICAgICAgICAg
aWYgaW5wdXQudHlwZSA9M0Q9M0QgJ3JlcGVhdCc6CisgICAgICAgICAgICAgICAgICAgIGdyb3Vw
X2NhY2hlID0zRCB0b29sX2RpY3RbJ2NhY2hlJ10gPTNEIHt9CisgICAgICAgICAgICAgICAgICAg
IGZvciBpIGluIHJhbmdlKCBsZW4oIGdyb3VwX3N0YXRlICkgKToKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdyb3VwX2NhY2hlW2ldID0zRCB7fQorICAgICAgICAgICAgICAgICAgICAgICAgaXRl
cmF0ZSggZ3JvdXBfY2FjaGVbaV0sIGlucHV0LmlucHV0cywgZ3JvdXBfc3RhdGU9CltpXSwgb3Ro
ZXJfdmFsdWVzICkKKyAgICAgICAgICAgICAgICBlbGlmIGlucHV0LnR5cGUgPTNEPTNEICdjb25k
aXRpb25hbCc6CisgICAgICAgICAgICAgICAgICAgIGlmICd0ZXN0X3BhcmFtJyBpbiB0b29sX2Rp
Y3Q6CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3BhcmFtID0zRCB0b29sX2RpY3RbJ3Rl
c3RfcGFyYW0nXQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9wYXJhbVsndmFsdWUnXSA9
M0QganNvbmlmeShncm91cF9zdGF0ZVt0ZXN0X3A9CmFyYW1bJ25hbWUnXV0pCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAnX19jdXJyZW50X2Nhc2VfXycgaW4gZ3JvdXBfc3RhdGU6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaSA9M0QgZ3JvdXBfc3RhdGVbJ19fY3VycmVudF9jYXNl
X18nXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdGUodG9vbF9kaWN0WydjYXNl
cyddW2ldWydpbnB1dHMnXSwgaW5wdXQ9Ci5jYXNlc1tpXS5pbnB1dHMsIGdyb3VwX3N0YXRlLCBv
dGhlcl92YWx1ZXMpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAg
IyBjcmVhdGUgaW5wdXQgZGljdGlvbmFyeSwgdHJ5IHRvIHBhc3Mgb3RoZXJfdmFsdWVzIGlmPQog
dG9fZGljdCBmdW5jdGlvbiBzdXBwb3J0cyBpdCBlLmcuIGR5bmFtaWMgb3B0aW9ucworICAgICAg
ICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICB0b29sX2RpY3QgPTNE
IGlucHV0LnRvX2RpY3QodHJhbnMsIG90aGVyX3ZhbHVlcz0zRD0Kb3RoZXJfdmFsdWVzKQorICAg
ICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICAg
ICAgcGFzcworICAgICAgICAgICAgICAgPTIwCisgICAgICAgICAgICAgICAgICAgICMgaWRlbnRp
ZnkgbmFtZQorICAgICAgICAgICAgICAgICAgICBpbnB1dF9uYW1lID0zRCB0b29sX2RpY3QuZ2V0
KCduYW1lJykKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5wdXRfbmFtZToKKyAgICAgICAgICAg
ICAgICAgICAgICAgICMgdXBkYXRlIGlucHV0IHZhbHVlIGZyb20gdG9vbCBzdGF0ZQorICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgaW5wdXRfbmFtZSBpbiBzdGF0ZV9pbnB1dHM6CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdG9vbF9kaWN0Wyd2YWx1ZSddID0zRCBzdGF0ZV9pbnB1dHNb
aW5wdXRfbmFtZV0KKworICAgICAgICAgICAgICAgICAgICAgICAgIyBzYW5pdGl6ZSBpZiB2YWx1
ZSBleGlzdHMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvb2xfZGljdCA9M0Qgc2FuaXRpemUo
dG9vbF9kaWN0KQorICAgICAgICAgICA9MjAKKyAgICAgICAgICAgICAgICAjIGJhY2t1cCBmaW5h
bCBpbnB1dCBkaWN0aW9uYXJ5CisgICAgICAgICAgICAgICAgZ3JvdXBfaW5wdXRzW2lucHV0X2lu
ZGV4XSA9M0QgdG9vbF9kaWN0CisKKyAgICAgICAgIyBzYW5hdGl6YXRpb24gZm9yIHRoZSBmaW5h
bCB0b29sIHN0YXRlCisgICAgICAgIGRlZiBzYW5pdGl6ZV9zdGF0ZShzdGF0ZSk6CisgICAgICAg
ICAgICBrZXlzID0zRCBOb25lCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHN0YXRlLCBkaWN0
KToKKyAgICAgICAgICAgICAgICBrZXlzID0zRCBzdGF0ZQorICAgICAgICAgICAgZWxpZiBpc2lu
c3RhbmNlKHN0YXRlLCBsaXN0KToKKyAgICAgICAgICAgICAgICBrZXlzID0zRCByYW5nZSggbGVu
KHN0YXRlKSApCisgICAgICAgICAgICBpZiBrZXlzOgorICAgICAgICAgICAgICAgIGZvciBrIGlu
IGtleXM6CisgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc3RhdGVba10sIGRpY3Qp
IG9yIGlzaW5zdGFuY2Uoc3RhdGVba10sID0KbGlzdCk6CisgICAgICAgICAgICAgICAgICAgICAg
ICBzYW5pdGl6ZV9zdGF0ZShzdGF0ZVtrXSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRlW2tdID0zRCBqc29uaWZ5KHN0YXRlW2tdKQorICAg
ICAgICAgICA9MjAKKyAgICAgICAgIyBkbyBwYXJhbSB0cmFuc2xhdGlvbiBoZXJlLCB1c2VkIGJ5
IGRhdGFzb3VyY2UgdG9vbHMKKyAgICAgICAgaWYgc2VsZi5pbnB1dF90cmFuc2xhdG9yOgorICAg
ICAgICAgICAgc2VsZi5pbnB1dF90cmFuc2xhdG9yLnRyYW5zbGF0ZSggcGFyYW1zICkKKyAgICAg
ICA9MjAKKyAgICAgICAgIyBpbml0aWFsaXplIGFuZCBwb3B1bGF0ZSB0b29sIHN0YXRlCisgICAg
ICAgIHN0YXRlX2lucHV0cyA9M0Qge30KKyAgICAgICAgc3RhdGVfZXJyb3JzID0zRCB7fQorICAg
ICAgICBpbml0aWFsaXplX3N0YXRlKHRyYW5zLCBzZWxmLmlucHV0cywgc3RhdGVfaW5wdXRzKQor
ICAgICAgICBwb3B1bGF0ZV9zdGF0ZSh0cmFucywgc2VsZi5pbnB1dHMsIHN0YXRlX2lucHV0cywg
c3RhdGVfZXJyb3JzLCBwYXI9CmFtcy5fX2RpY3RfXykKKworICAgICAgICAjIGNyZWF0ZSBiYXNp
YyB0b29sIG1vZGVsCisgICAgICAgIHRvb2xfbW9kZWwgPTNEIHNlbGYudG9fZGljdCh0cmFucykK
KyAgICAgICAgdG9vbF9tb2RlbFsnaW5wdXRzJ10gPTNEIHt9CisgICAgICAgPTIwCisgICAgICAg
ICMgYnVpbGQgdG9vbCBtb2RlbCBhbmQgdG9vbCBzdGF0ZQorICAgICAgICBpdGVyYXRlKHRvb2xf
bW9kZWxbJ2lucHV0cyddLCBzZWxmLmlucHV0cywgc3RhdGVfaW5wdXRzLCAnJykKKworICAgICAg
ICAjIHNhbml0aXplIHRvb2wgc3RhdGUKKyAgICAgICAgc2FuaXRpemVfc3RhdGUoc3RhdGVfaW5w
dXRzKQorCisgICAgICAgICMgbG9hZCB0b29sIGhlbHAKKyAgICAgICAgdG9vbF9oZWxwID0zRCAn
JworICAgICAgICBpZiBzZWxmLmhlbHA6CisgICAgICAgICAgICB0b29sX2hlbHAgPTNEIHNlbGYu
aGVscAorICAgICAgICAgICAgdG9vbF9oZWxwID0zRCB0b29sX2hlbHAucmVuZGVyKCBzdGF0aWNf
cGF0aD0zRHVybF9mb3IoICcvc3RhdGk9CmMnICksIGhvc3RfdXJsPTNEdXJsX2ZvcignLycsIHF1
YWxpZmllZD0zRFRydWUpICkKKyAgICAgICAgICAgIGlmIHR5cGUoIHRvb2xfaGVscCApIGlzIG5v
dCB1bmljb2RlOgorICAgICAgICAgICAgICAgIHRvb2xfaGVscCA9M0QgdW5pY29kZSggdG9vbF9o
ZWxwLCAndXRmLTgnKQorICAgICAgID0yMAorICAgICAgICAjIGNoZWNrIGlmIGNpdGF0aW9ucyBl
eGlzdAorICAgICAgICB0b29sX2NpdGF0aW9ucyA9M0QgRmFsc2UKKyAgICAgICAgaWYgc2VsZi5j
aXRhdGlvbnM6CisgICAgICAgICAgICB0b29sX2NpdGF0aW9ucyA9M0QgVHJ1ZQorICAgPTIwCisg
ICAgICAgICMgZ2V0IHRvb2wgdmVyc2lvbnMKKyAgICAgICAgdG9vbF92ZXJzaW9ucyA9M0QgW10K
KyAgICAgICAgdG9vbHMgPTNEIHNlbGYuYXBwLnRvb2xib3guZ2V0X2xvYWRlZF90b29sc19ieV9s
aW5lYWdlKHNlbGYuaWQpCisgICAgICAgIGZvciB0IGluIHRvb2xzOgorICAgICAgICAgICAgdG9v
bF92ZXJzaW9ucy5hcHBlbmQodC52ZXJzaW9uKQorICAgICAgID0yMAorICAgICAgICAjIyBhZGQg
aW5mb3JtYXRpb24gd2l0aCB1bmRlcmx5aW5nIHJlcXVpcmVtZW50cyBhbmQgdGhlaXIgdmVyc2lv
bnMKKyAgICAgICAgdG9vbF9yZXF1aXJlbWVudHMgPTNEIFtdCisgICAgICAgIGlmIHNlbGYucmVx
dWlyZW1lbnRzOgorICAgICAgICAgICAgZm9yIHJlcXVpcmVtZW50IGluIHNlbGYucmVxdWlyZW1l
bnRzOgorICAgICAgICAgICAgICAgIHRvb2xfcmVxdWlyZW1lbnRzLmFwcGVuZCh7CisgICAgICAg
ICAgICAgICAgICAgICduYW1lJyAgICAgIDogcmVxdWlyZW1lbnQubmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgJ3ZlcnNpb24nICAgOiByZXF1aXJlbWVudC52ZXJzaW9uCisgICAgICAgICAgICAg
ICAgfSkKKworICAgICAgICAjIGFkZCBhZGRpdGlvbmFsIHByb3BlcnRpZXMKKyAgICAgICAgdG9v
bF9tb2RlbC51cGRhdGUoeworICAgICAgICAgICAgJ2hlbHAnICAgICAgICAgIDogdG9vbF9oZWxw
LAorICAgICAgICAgICAgJ2NpdGF0aW9ucycgICAgIDogdG9vbF9jaXRhdGlvbnMsCisgICAgICAg
ICAgICAnYmlvc3Rhcl91cmwnICAgOiB0cmFucy5hcHAuY29uZmlnLmJpb3N0YXJfdXJsLAorICAg
ICAgICAgICAgJ21lc3NhZ2UnICAgICAgIDogdG9vbF9tZXNzYWdlLAorICAgICAgICAgICAgJ3Zl
cnNpb25zJyAgICAgIDogdG9vbF92ZXJzaW9ucywKKyAgICAgICAgICAgICdyZXF1aXJlbWVudHMn
ICA6IHRvb2xfcmVxdWlyZW1lbnRzLAorICAgICAgICAgICAgJ2Vycm9ycycgICAgICAgIDogc3Rh
dGVfZXJyb3JzLAorICAgICAgICAgICAgJ3N0YXRlX2lucHV0cycgIDogc3RhdGVfaW5wdXRzCisg
ICAgICAgIH0pCisKKyAgICAgICAgIyBjaGVjayBmb3IgZXJyb3JzCisgICAgICAgIGlmICdlcnJv
cicgaW4gdG9vbF9tZXNzYWdlOgorICAgICAgICAgICAgcmV0dXJuIHRvb2xfbWVzc2FnZQorCisg
ICAgICAgICMgcmV0dXJuIGVucmljaGVkIHRvb2wgbW9kZWwKKyAgICAgICAgcmV0dXJuIHRvb2xf
bW9kZWwKKworICAgIGRlZiBfY29tcGFyZV90b29sX3ZlcnNpb24oIHNlbGYsIHRyYW5zLCBqb2Ig
KToKKyAgICAgICAgIiIiCisgICAgICAgIENvbXBhcmVzIGEgdG9vbCB2ZXJzaW9uIHdpdGggdGhl
IHRvb2wgdmVyc2lvbiBmcm9tIGEgam9iIChmcm9tIFRvbz0KbFJ1bm5lcikuCisgICAgICAgICIi
IgorICAgICAgICB0b29sX2lkID0zRCBqb2IudG9vbF9pZAorICAgICAgICB0b29sX3ZlcnNpb24g
PTNEIGpvYi50b29sX3ZlcnNpb24KKyAgICAgICAgbWVzc2FnZSA9M0QgJycKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgc2VsZWN0X2ZpZWxkLCB0b29scywgdG9vbCA9M0Qgc2VsZi5hcHAudG9v
bGJveC5nZXRfdG9vbF9jb21wb249CmVudHMoIHRvb2xfaWQsIHRvb2xfdmVyc2lvbj0zRHRvb2xf
dmVyc2lvbiwgZ2V0X2xvYWRlZF90b29sc19ieV9saW5lYWdlPTNERj0KYWxzZSwgc2V0X3NlbGVj
dGVkPTNEVHJ1ZSApCisgICAgICAgICAgICBpZiB0b29sIGlzIE5vbmU6CisgICAgICAgICAgICAg
ICAgdHJhbnMucmVzcG9uc2Uuc3RhdHVzID0zRCA1MDAKKyAgICAgICAgICAgICAgICByZXR1cm4g
eyAnZXJyb3InOiAnVGhpcyBkYXRhc2V0IHdhcyBjcmVhdGVkIGJ5IGFuIG9ic29sZXRlPQogdG9v
bCAoJXMpLiBDYW5cJ3QgcmUtcnVuLicgJSB0b29sX2lkIH0KKyAgICAgICAgICAgIGlmICggc2Vs
Zi5pZCAhPTNEIHRvb2xfaWQgYW5kIHNlbGYub2xkX2lkICE9M0QgdG9vbF9pZCApIG9yIHNlPQps
Zi52ZXJzaW9uICE9M0QgdG9vbF92ZXJzaW9uOgorICAgICAgICAgICAgICAgIGlmIHNlbGYuaWQg
PTNEPTNEIHRvb2xfaWQ6CisgICAgICAgICAgICAgICAgICAgIGlmIHRvb2xfdmVyc2lvbiA9M0Q9
M0QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIHNvbWUgcmVhc29uIGpvYnMg
ZG9uJ3QgYWx3YXlzIGtlZXAgdHJhY2sgb2YgPQp0aGUgdG9vbCB2ZXJzaW9uLgorICAgICAgICAg
ICAgICAgICAgICAgICAgbWVzc2FnZSA9M0QgJycKKyAgICAgICAgICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICdUaGlzIGpvYiB3YXMgaW5pdGlh
bGx5IHJ1biB3aXRoIHRvb2wgPQp2ZXJzaW9uICIlcyIsIHdoaWNoIGlzIGN1cnJlbnRseSBub3Qg
YXZhaWxhYmxlLiAgJyAlIHRvb2xfdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgaWYg
bGVuKCB0b29scyApID4gMToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlICs9
M0QgJ1lvdSBjYW4gcmUtcnVuIHRoZSBqb2Igd2l0aCB0aGUgPQpzZWxlY3RlZCB0b29sIG9yIGNo
b29zZSBhbm90aGVyIGRlcml2YXRpb24gb2YgdGhlIHRvb2wuJworICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlICs9M0QgJ1lv
dSBjYW4gcmUtcnVuIHRoZSBqb2Igd2l0aCB0aGlzPQogdG9vbCB2ZXJzaW9uLCB3aGljaCBpcyBh
IGRlcml2YXRpb24gb2YgdGhlIG9yaWdpbmFsIHRvb2wuJworICAgICAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgICAgIGlmIGxlbiggdG9vbHMgKSA+IDE6CisgICAgICAgICAgICAg
ICAgICAgICAgICBtZXNzYWdlID0zRCAnVGhpcyBqb2Igd2FzIGluaXRpYWxseSBydW4gd2l0aCB0
b29sID0KdmVyc2lvbiAiJXMiLCB3aGljaCBpcyBjdXJyZW50bHkgbm90IGF2YWlsYWJsZS4gICcg
JSB0b29sX3ZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0zRCAnWW91
IGNhbiByZS1ydW4gdGhlIGpvYiB3aXRoIHRoZSBzZWxlPQpjdGVkIHRvb2wgb3IgY2hvb3NlIGFu
b3RoZXIgZGVyaXZhdGlvbiBvZiB0aGUgdG9vbC4nCisgICAgICAgICAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0zRCAnVGhpcyBqb2Igd2FzIGluaXRp
YWxseSBydW4gd2l0aCB0b29sID0KaWQgIiVzIiwgdmVyc2lvbiAiJXMiLCB3aGljaCBpcyAnICUg
KCB0b29sX2lkLCB0b29sX3ZlcnNpb24gKQorICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZSArPTNEICdjdXJyZW50bHkgbm90IGF2YWlsYWJsZS4gIFlvdSBjYW4gcmU9Ci1ydW4gdGhlIGpv
YiB3aXRoIHRoaXMgdG9vbCwgd2hpY2ggaXMgYSBkZXJpdmF0aW9uIG9mIHRoZSBvcmlnaW5hbCB0
b29sLicKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZXJyb3I6CisgICAgICAgICAgICB0cmFu
cy5yZXNwb25zZS5zdGF0dXMgPTNEIDUwMAorICAgICAgICAgICAgcmV0dXJuIHsgJ2Vycm9yJzog
c3RyIChlcnJvcikgfQorICAgICAgICAgICAgICAgPTIwCisgICAgICAgICMgY2FuJ3QgcmVydW4g
dXBsb2FkLCBleHRlcm5hbCBkYXRhIHNvdXJjZXMsIGV0IGNldGVyYS4gd29ya2Zsb3cgYz0Kb21w
YXRpYmxlIHdpbGwgcHJveHkgdGhpcyBmb3Igbm93CisgICAgICAgICNpZiBub3Qgc2VsZi5pc193
b3JrZmxvd19jb21wYXRpYmxlOgorICAgICAgICAjICAgIHRyYW5zLnJlc3BvbnNlLnN0YXR1cyA9
M0QgNTAwCisgICAgICAgICMgICAgcmV0dXJuIHsgJ2Vycm9yJzogJ1RoZSBcJyVzXCcgdG9vbCBk
b2VzIGN1cnJlbnRseSBub3Qgc3VwcG9ydD0KIHJlLXJ1bm5pbmcuJyAlIHNlbGYubmFtZSB9Cisg
ICAgICAgIHJldHVybiBtZXNzYWdlCisgICAgICAgPTIwCiAgICAgZGVmIGdldF9kZWZhdWx0X2hp
c3RvcnlfYnlfdHJhbnMoIHNlbGYsIHRyYW5zLCBjcmVhdGU9M0RGYWxzZSApOgogICAgICAgICBy
ZXR1cm4gdHJhbnMuZ2V0X2hpc3RvcnkoIGNyZWF0ZT0zRGNyZWF0ZSApCj0yMAoKZGlmZiAtciA1
MzA1ZTRkMWM5OWQ0NzhhZGE1ZmQ2MjkzMGU0Mjg3NWRhNDhmZDFjIC1yIDZhOGE3OWY5YjZkNTJi
Zjk2ZTIyZDk0PQo3NDBmOWMzN2I0NDRkOGQxMiBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2Fw
aS9saWJyYXJpZXMucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvbGlicmFy
aWVzLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2xpYnJhcmllcy5weQpA
QCAtNiwxMCArNiw3IEBACiBmcm9tIGdhbGF4eS5tYW5hZ2VycyBpbXBvcnQgbGlicmFyaWVzLCBm
b2xkZXJzLCByb2xlcwogZnJvbSBnYWxheHkud2ViIGltcG9ydCBfZnV0dXJlX2V4cG9zZV9hcGkg
YXMgZXhwb3NlX2FwaQogZnJvbSBnYWxheHkud2ViIGltcG9ydCBfZnV0dXJlX2V4cG9zZV9hcGlf
YW5vbnltb3VzIGFzIGV4cG9zZV9hcGlfYW5vbnltb3VzCi1mcm9tIGdhbGF4eS5tb2RlbC5vcm0g
aW1wb3J0IGFuZF8sIG5vdF8sIG9yXwogZnJvbSBnYWxheHkud2ViLmJhc2UuY29udHJvbGxlciBp
bXBvcnQgQmFzZUFQSUNvbnRyb2xsZXIKLWZyb20gc3FsYWxjaGVteS5vcm0uZXhjIGltcG9ydCBN
dWx0aXBsZVJlc3VsdHNGb3VuZAotZnJvbSBzcWxhbGNoZW15Lm9ybS5leGMgaW1wb3J0IE5vUmVz
dWx0Rm91bmQKPTIwCiBpbXBvcnQgbG9nZ2luZwogbG9nID0zRCBsb2dnaW5nLmdldExvZ2dlcigg
X19uYW1lX18gKQpAQCAtNDgsNyArNDUsNyBAQAo9MjAKICAgICBkZWYgX19kZWNvZGVfaWQoIHNl
bGYsIHRyYW5zLCBlbmNvZGVkX2lkLCBvYmplY3RfbmFtZT0zRE5vbmUgKToKICAgICAgICAgIiIi
Ci0gICAgICAgIFRyeSB0byBkZWNvZGUgdGhlIGlkLj0yMAorICAgICAgICBUcnkgdG8gZGVjb2Rl
IHRoZSBpZC4KPTIwCiAgICAgICAgIDpwYXJhbSAgb2JqZWN0X25hbWU6ICAgICAgTmFtZSBvZiB0
aGUgb2JqZWN0IHRoZSBpZCBiZWxvbmdzIHRvLiAobz0KcHRpb25hbCkKICAgICAgICAgOnR5cGUg
ICBvYmplY3RfbmFtZTogICAgICBzdHIKQEAgLTE0OSw3ICsxNDYsNyBAQAogICAgICAgICAgICAg
ICAgIHN5bm9wc2lzID0zRCBwYXlsb2FkLmdldCggJ3N5bm9wc2lzJywgTm9uZSApCiAgICAgICAg
IGVsc2U6CiAgICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLlJlcXVlc3RQYXJhbWV0ZXJNaXNz
aW5nRXhjZXB0aW9uKCAiWW91IGRpZCBubz0KdCBzcGVjaWZ5IGFueSBwYXlsb2FkLiIgKQotICAg
ICAgICB1cGRhdGVkX2xpYnJhcnkgPTNEIHNlbGYubGlicmFyeV9tYW5hZ2VyLnVwZGF0ZSggdHJh
bnMsIGxpYnJhcnksIG49CmFtZSwgZGVzY3JpcHRpb24sIHN5bm9wc2lzICkgICAgICAgICAgID0y
MAorICAgICAgICB1cGRhdGVkX2xpYnJhcnkgPTNEIHNlbGYubGlicmFyeV9tYW5hZ2VyLnVwZGF0
ZSggdHJhbnMsIGxpYnJhcnksIG49CmFtZSwgZGVzY3JpcHRpb24sIHN5bm9wc2lzICkKICAgICAg
ICAgbGlicmFyeV9kaWN0ID0zRCBzZWxmLmxpYnJhcnlfbWFuYWdlci5nZXRfbGlicmFyeV9kaWN0
KCB0cmFucywgdXBkPQphdGVkX2xpYnJhcnkgKQogICAgICAgICByZXR1cm4gbGlicmFyeV9kaWN0
Cj0yMApAQCAtMjQ4LDIwICsyNDUsMjAgQEAKICAgICAgICAgICAgICpQT1NUIC9hcGkvbGlicmFy
aWVzL3tlbmNvZGVkX2xpYnJhcnlfaWR9L3Blcm1pc3Npb25zCj0yMAogICAgICAgICA6cGFyYW0g
IGVuY29kZWRfbGlicmFyeV9pZDogICAgICB0aGUgZW5jb2RlZCBpZCBvZiB0aGUgbGlicmFyeSB0
byA9CnNldCB0aGUgcGVybWlzc2lvbnMgb2YKLSAgICAgICAgOnR5cGUgICBlbmNvZGVkX2xpYnJh
cnlfaWQ6ICAgICAgYW4gZW5jb2RlZCBpZCBzdHJpbmcgICAgID0yMAorICAgICAgICA6dHlwZSAg
IGVuY29kZWRfbGlicmFyeV9pZDogICAgICBhbiBlbmNvZGVkIGlkIHN0cmluZwo9MjAKICAgICAg
ICAgOnBhcmFtICBhY3Rpb246ICAgICAocmVxdWlyZWQpIGRlc2NyaWJlcyB3aGF0IGFjdGlvbiBz
aG91bGQgYmUgcGVyPQpmb3JtZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFi
bGUgYWN0aW9uczogcmVtb3ZlX3Jlc3RyaWN0aW9ucywgc2V0X3BlPQpybWlzc2lvbnMKLSAgICAg
ICAgOnR5cGUgICBhY3Rpb246ICAgICBzdHJpbmcgICAgICAgPTIwCisgICAgICAgIDp0eXBlICAg
YWN0aW9uOiAgICAgc3RyaW5nCj0yMAogICAgICAgICA6cGFyYW0gIGFjY2Vzc19pZHNbXTogICAg
ICBsaXN0IG9mIFJvbGUuaWQgZGVmaW5pbmcgcm9sZXMgdGhhdCBzaG89CnVsZCBoYXZlIGFjY2Vz
cyBwZXJtaXNzaW9uIG9uIHRoZSBsaWJyYXJ5Ci0gICAgICAgIDp0eXBlICAgYWNjZXNzX2lkc1td
OiAgICAgIHN0cmluZyBvciBsaXN0ID0yMAorICAgICAgICA6dHlwZSAgIGFjY2Vzc19pZHNbXTog
ICAgICBzdHJpbmcgb3IgbGlzdAogICAgICAgICA6cGFyYW0gIGFkZF9pZHNbXTogICAgICAgICBs
aXN0IG9mIFJvbGUuaWQgZGVmaW5pbmcgcm9sZXMgdGhhdCBzaG89CnVsZCBoYXZlIGFkZCBpdGVt
IHBlcm1pc3Npb24gb24gdGhlIGxpYnJhcnkKLSAgICAgICAgOnR5cGUgICBhZGRfaWRzW106ICAg
ICAgICAgc3RyaW5nIG9yIGxpc3QgPTIwCisgICAgICAgIDp0eXBlICAgYWRkX2lkc1tdOiAgICAg
ICAgIHN0cmluZyBvciBsaXN0CiAgICAgICAgIDpwYXJhbSAgbWFuYWdlX2lkc1tdOiAgICAgIGxp
c3Qgb2YgUm9sZS5pZCBkZWZpbmluZyByb2xlcyB0aGF0IHNobz0KdWxkIGhhdmUgbWFuYWdlIHBl
cm1pc3Npb24gb24gdGhlIGxpYnJhcnkKLSAgICAgICAgOnR5cGUgICBtYW5hZ2VfaWRzW106ICAg
ICAgc3RyaW5nIG9yIGxpc3QgPTIwCisgICAgICAgIDp0eXBlICAgbWFuYWdlX2lkc1tdOiAgICAg
IHN0cmluZyBvciBsaXN0CiAgICAgICAgIDpwYXJhbSAgbW9kaWZ5X2lkc1tdOiAgICAgIGxpc3Qg
b2YgUm9sZS5pZCBkZWZpbmluZyByb2xlcyB0aGF0IHNobz0KdWxkIGhhdmUgbW9kaWZ5IHBlcm1p
c3Npb24gb24gdGhlIGxpYnJhcnkKLSAgICAgICAgOnR5cGUgICBtb2RpZnlfaWRzW106ICAgICAg
c3RyaW5nIG9yIGxpc3QgICAgICAgICA9MjAKKyAgICAgICAgOnR5cGUgICBtb2RpZnlfaWRzW106
ICAgICAgc3RyaW5nIG9yIGxpc3QKPTIwCiAgICAgICAgIDpydHlwZTogICAgIGRpY3Rpb25hcnkK
ICAgICAgICAgOnJldHVybnM6ICAgZGljdCBvZiBjdXJyZW50IHJvbGVzIGZvciBhbGwgYXZhaWxh
YmxlIHBlcm1pc3Npb24gdHlwPQplcwpAQCAtMzA2LDcgKzMwMyw3IEBACiAgICAgICAgICAgICAg
ICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgaW52YWxpZF9hY2Nlc3Nfcm9sZXNfbmFtZXMu
YXBwZW5kKCByb2xlX2lkICkKICAgICAgICAgICAgIGlmIGxlbiggaW52YWxpZF9hY2Nlc3Nfcm9s
ZXNfbmFtZXMgKSA+IDA6Ci0gICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoICJUaGUgZm9sbG93
aW5nIHJvbGVzIGNvdWxkIG5vdCBiZSBhZGRlZCB0byB0aD0KZSBsaWJyYXJ5IGFjY2VzcyBwZXJt
aXNzaW9uOiAiICsgc3RyKCBpbnZhbGlkX2FjY2Vzc19yb2xlc19uYW1lcyApICkgICAgICAgPQog
ICAgICAgID0yMAorICAgICAgICAgICAgICAgIGxvZy53YXJuaW5nKCAiVGhlIGZvbGxvd2luZyBy
b2xlcyBjb3VsZCBub3QgYmUgYWRkZWQgdG8gdGg9CmUgbGlicmFyeSBhY2Nlc3MgcGVybWlzc2lv
bjogIiArIHN0ciggaW52YWxpZF9hY2Nlc3Nfcm9sZXNfbmFtZXMgKSApCj0yMAogICAgICAgICAg
ICAgIyBBREQgVE8gTElCUkFSWSBST0xFUwogICAgICAgICAgICAgdmFsaWRfYWRkX3JvbGVzID0z
RCBbXQpAQCAtMzE5LDggKzMxNiw4IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgICAgICAgICAgaW52YWxpZF9hZGRfcm9sZXNfbmFtZXMuYXBwZW5kKCByb2xlX2lkICkKICAg
ICAgICAgICAgIGlmIGxlbiggaW52YWxpZF9hZGRfcm9sZXNfbmFtZXMgKSA+IDA6Ci0gICAgICAg
ICAgICAgICAgbG9nLndhcm5pbmcoICJUaGUgZm9sbG93aW5nIHJvbGVzIGNvdWxkIG5vdCBiZSBh
ZGRlZCB0byB0aD0KZSBhZGQgbGlicmFyeSBpdGVtIHBlcm1pc3Npb246ICIgKyBzdHIoIGludmFs
aWRfYWRkX3JvbGVzX25hbWVzICkgKT0yMAotICAgICAgICAgICA9MjAKKyAgICAgICAgICAgICAg
ICBsb2cud2FybmluZyggIlRoZSBmb2xsb3dpbmcgcm9sZXMgY291bGQgbm90IGJlIGFkZGVkIHRv
IHRoPQplIGFkZCBsaWJyYXJ5IGl0ZW0gcGVybWlzc2lvbjogIiArIHN0ciggaW52YWxpZF9hZGRf
cm9sZXNfbmFtZXMgKSApCisKICAgICAgICAgICAgICMgTUFOQUdFIExJQlJBUlkgUk9MRVMKICAg
ICAgICAgICAgIHZhbGlkX21hbmFnZV9yb2xlcyA9M0QgW10KICAgICAgICAgICAgIGludmFsaWRf
bWFuYWdlX3JvbGVzX25hbWVzID0zRCBbXQpAQCAtMzMyLDggKzMyOSw4IEBACiAgICAgICAgICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgaW52YWxpZF9tYW5hZ2Vfcm9sZXNfbmFt
ZXMuYXBwZW5kKCByb2xlX2lkICkKICAgICAgICAgICAgIGlmIGxlbiggaW52YWxpZF9tYW5hZ2Vf
cm9sZXNfbmFtZXMgKSA+IDA6Ci0gICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoICJUaGUgZm9s
bG93aW5nIHJvbGVzIGNvdWxkIG5vdCBiZSBhZGRlZCB0byB0aD0KZSBtYW5hZ2UgbGlicmFyeSBw
ZXJtaXNzaW9uOiAiICsgc3RyKCBpbnZhbGlkX21hbmFnZV9yb2xlc19uYW1lcyApICk9MjAKLSAg
ICAgICAgICAgPTIwCisgICAgICAgICAgICAgICAgbG9nLndhcm5pbmcoICJUaGUgZm9sbG93aW5n
IHJvbGVzIGNvdWxkIG5vdCBiZSBhZGRlZCB0byB0aD0KZSBtYW5hZ2UgbGlicmFyeSBwZXJtaXNz
aW9uOiAiICsgc3RyKCBpbnZhbGlkX21hbmFnZV9yb2xlc19uYW1lcyApICkKKwogICAgICAgICAg
ICAgIyBNT0RJRlkgTElCUkFSWSBST0xFUwogICAgICAgICAgICAgdmFsaWRfbW9kaWZ5X3JvbGVz
ID0zRCBbXQogICAgICAgICAgICAgaW52YWxpZF9tb2RpZnlfcm9sZXNfbmFtZXMgPTNEIFtdCkBA
IC0zNDUsNyArMzQyLDcgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAg
ICAgICBpbnZhbGlkX21vZGlmeV9yb2xlc19uYW1lcy5hcHBlbmQoIHJvbGVfaWQgKQogICAgICAg
ICAgICAgaWYgbGVuKCBpbnZhbGlkX21vZGlmeV9yb2xlc19uYW1lcyApID4gMDoKLSAgICAgICAg
ICAgICAgICBsb2cud2FybmluZyggIlRoZSBmb2xsb3dpbmcgcm9sZXMgY291bGQgbm90IGJlIGFk
ZGVkIHRvIHRoPQplIG1vZGlmeSBsaWJyYXJ5IHBlcm1pc3Npb246ICIgKyBzdHIoIGludmFsaWRf
bW9kaWZ5X3JvbGVzX25hbWVzICkgKSAgICAgICA9CiAgICAgICAgPTIwCisgICAgICAgICAgICAg
ICAgbG9nLndhcm5pbmcoICJUaGUgZm9sbG93aW5nIHJvbGVzIGNvdWxkIG5vdCBiZSBhZGRlZCB0
byB0aD0KZSBtb2RpZnkgbGlicmFyeSBwZXJtaXNzaW9uOiAiICsgc3RyKCBpbnZhbGlkX21vZGlm
eV9yb2xlc19uYW1lcyApICkKPTIwCiAgICAgICAgICAgICBwZXJtaXNzaW9ucyA9M0QgeyB0cmFu
cy5hcHAuc2VjdXJpdHlfYWdlbnQucGVybWl0dGVkX2FjdGlvbnMuTD0KSUJSQVJZX0FDQ0VTUyA6
IHZhbGlkX2FjY2Vzc19yb2xlcyB9CiAgICAgICAgICAgICBwZXJtaXNzaW9ucy51cGRhdGUoIHsg
dHJhbnMuYXBwLnNlY3VyaXR5X2FnZW50LnBlcm1pdHRlZF9hY3Rpbz0KbnMuTElCUkFSWV9BREQg
OiB2YWxpZF9hZGRfcm9sZXMgfSApCkBAIC0zNTcsNyArMzU0LDcgQEAKICAgICAgICAgICAgICMg
Q29weSB0aGUgcGVybWlzc2lvbnMgdG8gdGhlIHJvb3QgZm9sZGVyCiAgICAgICAgICAgICB0cmFu
cy5hcHAuc2VjdXJpdHlfYWdlbnQuY29weV9saWJyYXJ5X3Blcm1pc3Npb25zKCB0cmFucywgbGli
cj0KYXJ5LCBsaWJyYXJ5LnJvb3RfZm9sZGVyICkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHJhaXNlIGV4Y2VwdGlvbnMuUmVxdWVzdFBhcmFtZXRlckludmFsaWRFeGNlcHRpb24oICdUaGUg
bWFuZGF0PQpvcnkgcGFyYW1ldGVyICJhY3Rpb24iIGhhcyBhbiBpbnZhbGlkIHZhbHVlLic9MjAK
KyAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuUmVxdWVzdFBhcmFtZXRlckludmFsaWRFeGNl
cHRpb24oICdUaGUgbWFuZGF0PQpvcnkgcGFyYW1ldGVyICJhY3Rpb24iIGhhcyBhbiBpbnZhbGlk
IHZhbHVlLicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FsbG93ZWQgdmFsdWVz
IGFyZTogInJlbW92ZV9yZXN0cmljdGlvbnMiPQosIHNldF9wZXJtaXNzaW9ucyInICkKICAgICAg
ICAgcm9sZXMgPTNEIHNlbGYubGlicmFyeV9tYW5hZ2VyLmdldF9jdXJyZW50X3JvbGVzKCB0cmFu
cywgbGlicmFyeSApCiAgICAgICAgIHJldHVybiByb2xlcwpAQCAtMzY5LDE4ICszNjYsMTYgQEAK
ICAgICAgICAgUE9TVCAvYXBpL2xpYnJhcmllcy97ZW5jb2RlZF9saWJyYXJ5X2lkfS9wZXJtaXNz
aW9ucwogICAgICAgICBVcGRhdGVzIHRoZSBsaWJyYXJ5IHBlcm1pc3Npb25zLgogICAgICAgICAi
IiIKLSAgICAgICAgaW1wb3J0IGdhbGF4eS51dGlsCi0gICAgICAgIHBhcmFtcyA9M0QgZ2FsYXh5
LnV0aWwuUGFyYW1zKCBwYXlsb2FkICkKKyAgICAgICAgcGFyYW1zID0zRCB1dGlsLlBhcmFtcygg
cGF5bG9hZCApCiAgICAgICAgIHBlcm1pc3Npb25zID0zRCB7fQogICAgICAgICBmb3IgaywgdiBp
biB0cmFucy5hcHAubW9kZWwuTGlicmFyeS5wZXJtaXR0ZWRfYWN0aW9ucy5pdGVtcygpOgogICAg
ICAgICAgICAgcm9sZV9wYXJhbXMgPTNEIHBhcmFtcy5nZXQoIGsgKyAnX2luJywgW10gKQotICAg
ICAgICAgICAgaW5fcm9sZXMgPTNEIFsgdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggdHJhbnMuYXBw
Lm1vZGVsLlJvbGUgKS49CmdldCggdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCB4ICkgKSBmb3Ig
eCBpbiBnYWxheHkudXRpbC5saXN0aWZ5KCByb2xlX3Bhcj0KYW1zICkgXQorICAgICAgICAgICAg
aW5fcm9sZXMgPTNEIFsgdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggdHJhbnMuYXBwLm1vZGVsLlJv
bGUgKS49CmdldCggdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCB4ICkgKSBmb3IgeCBpbiB1dGls
Lmxpc3RpZnkoIHJvbGVfcGFyYW1zICkgXQogICAgICAgICAgICAgcGVybWlzc2lvbnNbIHRyYW5z
LmFwcC5zZWN1cml0eV9hZ2VudC5nZXRfYWN0aW9uKCB2LmFjdGlvbiApIF09CiA9M0QgaW5fcm9s
ZXMKICAgICAgICAgdHJhbnMuYXBwLnNlY3VyaXR5X2FnZW50LnNldF9hbGxfbGlicmFyeV9wZXJt
aXNzaW9ucyggdHJhbnMsIGxpYnJhPQpyeSwgcGVybWlzc2lvbnMgKQogICAgICAgICB0cmFucy5z
YV9zZXNzaW9uLnJlZnJlc2goIGxpYnJhcnkgKQogICAgICAgICAjIENvcHkgdGhlIHBlcm1pc3Np
b25zIHRvIHRoZSByb290IGZvbGRlcgogICAgICAgICB0cmFucy5hcHAuc2VjdXJpdHlfYWdlbnQu
Y29weV9saWJyYXJ5X3Blcm1pc3Npb25zKCB0cmFucywgbGlicmFyeSw9CiBsaWJyYXJ5LnJvb3Rf
Zm9sZGVyICkKLSAgICAgICAgbWVzc2FnZSA9M0QgIlBlcm1pc3Npb25zIHVwZGF0ZWQgZm9yIGxp
YnJhcnkgJyVzJy4iICUgbGlicmFyeS5uYW1lCiAgICAgICAgIGl0ZW0gPTNEIGxpYnJhcnkudG9f
ZGljdCggdmlldz0zRCdlbGVtZW50JywgdmFsdWVfbWFwcGVyPTNEeyAnaWQnID0KOiB0cmFucy5z
ZWN1cml0eS5lbmNvZGVfaWQgLCAncm9vdF9mb2xkZXJfaWQnIDogdHJhbnMuc2VjdXJpdHkuZW5j
b2RlX2lkIH0gKQogICAgICAgICByZXR1cm4gaXRlbQo9MjAKCmRpZmYgLXIgNTMwNWU0ZDFjOTlk
NDc4YWRhNWZkNjI5MzBlNDI4NzVkYTQ4ZmQxYyAtciA2YThhNzlmOWI2ZDUyYmY5NmUyMmQ5ND0K
NzQwZjljMzdiNDQ0ZDhkMTIgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvbGlicmFyeV9j
b250ZW50cy5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9saWJyYXJ5X2Nv
bnRlbnRzLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2xpYnJhcnlfY29u
dGVudHMucHkKQEAgLTMzLDEyICszMywxMiBAQAogICAgICAgICAuLiBub3RlOjogTWF5IGJlIHNs
b3chIFJldHVybnMgYWxsIGNvbnRlbnQgdHJhdmVyc2luZyByZWN1cnNpdmVseSA9CnRocm91Z2gg
YWxsIGZvbGRlcnMuCiAgICAgICAgIC4uIHNlZWFsc286OiA6Y2xhc3M6YGdhbGF4eS53ZWJhcHBz
LmdhbGF4eS5hcGkuRm9sZGVyQ29udGVudHNDb250cj0Kb2xsZXIuaW5kZXhgIGZvciBhIG5vbi1y
ZWN1cnNpdmUgc29sdXRpb24KPTIwCi0gICAgICAgIDpwYXJhbSAgbGlicmFyeV9pZDogZW5jb2Rl
ZCBpZCBzdHJpbmcgb2YgdGhlIGxpYnJhcnkKLSAgICAgICAgOnR5cGUgICBsaWJyYXJ5X2lkOiBz
dHJpbmcKKyAgICAgICAgOnBhcmFtICBsaWJyYXJ5X2lkOiB0aGUgZW5jb2RlZCBpZCBvZiB0aGUg
bGlicmFyeQorICAgICAgICA6dHlwZSAgIGxpYnJhcnlfaWQ6IHN0cgo9MjAKICAgICAgICAgOnJl
dHVybnM6ICAgbGlzdCBvZiBkaWN0aW9uYXJpZXMgb2YgdGhlIGZvcm06CiAgICAgICAgICAgICAq
IGlkOiAgIHRoZSBlbmNvZGVkIGlkIG9mIHRoZSBsaWJyYXJ5IGl0ZW0KLSAgICAgICAgICAgICog
bmFtZTogdGhlICdsaWJhcnkgcGF0aCcKKyAgICAgICAgICAgICogbmFtZTogdGhlICdsaWJyYXJ5
IHBhdGgnCiAgICAgICAgICAgICAgICAgb3IgcmVsYXRpb25zaGlwIG9mIHRoZSBsaWJyYXJ5IGl0
ZW0gdG8gdGhlIHJvb3QKICAgICAgICAgICAgICogdHlwZTogJ2ZpbGUnIG9yICdmb2xkZXInCiAg
ICAgICAgICAgICAqIHVybDogIHRoZSB1cmwgdG8gZ2V0IGRldGFpbGVkIGluZm9ybWF0aW9uIG9u
IHRoZSBsaWJyYXJ5IGl0ZW0KQEAgLTExMyw3ICsxMTMsNyBAQAogICAgICAgICA6cGFyYW0gIGlk
OiAgICAgICAgIHRoZSBlbmNvZGVkIGlkIG9mIHRoZSBsaWJyYXJ5IGl0ZW0gdG8gcmV0dXJuCiAg
ICAgICAgIDp0eXBlICAgaWQ6ICAgICAgICAgc3RyCj0yMAotICAgICAgICA6cGFyYW0gIGxpYnJh
cnlfaWQ6IGVuY29kZWQgaWQgc3RyaW5nIG9mIHRoZSBsaWJyYXJ5IHRoYXQgY29udGFpbnM9CiB0
aGlzIGl0ZW0KKyAgICAgICAgOnBhcmFtICBsaWJyYXJ5X2lkOiB0aGUgZW5jb2RlZCBpZCBvZiB0
aGUgbGlicmFyeSB0aGF0IGNvbnRhaW5zIHRoPQppcyBpdGVtCiAgICAgICAgIDp0eXBlICAgbGli
cmFyeV9pZDogc3RyCj0yMAogICAgICAgICA6cmV0dXJuczogICBkZXRhaWxlZCBsaWJyYXJ5IGl0
ZW0gaW5mb3JtYXRpb24KQEAgLTEyMyw3ICsxMjMsNyBAQAogICAgICAgICAgICAgOmZ1bmM6YGdh
bGF4eS5tb2RlbC5MaWJyYXJ5RGF0YXNldC50b19kaWN0YCBhbmQKICAgICAgICAgICAgIDphdHRy
OmBnYWxheHkubW9kZWwuTGlicmFyeUZvbGRlci5kaWN0X2VsZW1lbnRfdmlzaWJsZV9rZXlzYAog
ICAgICAgICAiIiIKLSAgICAgICAgY2xhc3NfbmFtZSwgY29udGVudF9pZCA9M0Qgc2VsZi5fX2Rl
Y29kZV9saWJyYXJ5X2NvbnRlbnRfaWQoIHRyYW5zPQosIGlkICkKKyAgICAgICAgY2xhc3NfbmFt
ZSwgY29udGVudF9pZCA9M0Qgc2VsZi5fX2RlY29kZV9saWJyYXJ5X2NvbnRlbnRfaWQoIGlkICkK
ICAgICAgICAgaWYgY2xhc3NfbmFtZSA9M0Q9M0QgJ0xpYnJhcnlGb2xkZXInOgogICAgICAgICAg
ICAgY29udGVudCA9M0Qgc2VsZi5nZXRfbGlicmFyeV9mb2xkZXIoIHRyYW5zLCBjb250ZW50X2lk
LCBjaGVja189Cm93bmVyc2hpcD0zREZhbHNlLCBjaGVja19hY2Nlc3NpYmxlPTNEVHJ1ZSApCiAg
ICAgICAgICAgICBydmFsID0zRCBjb250ZW50LnRvX2RpY3QoIHZpZXc9M0QnZWxlbWVudCcsIHZh
bHVlX21hcHBlcj0zRHsgJz0KaWQnOiB0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQgfSApCkBAIC0x
NTAsMjcgKzE1MCwzOSBAQAogICAgICAgICB0aGUgSERBJ3MgZW5jb2RlZCBpZCBpbiBgYGZyb21f
aGRhX2lkYGAgKGFuZCBvcHRpb25hbGx5IGBgbGRkYV9tZXM9CnNhZ2VgYCkuCj0yMAogICAgICAg
ICA6dHlwZSAgIGxpYnJhcnlfaWQ6IHN0cgotICAgICAgICA6cGFyYW0gIGxpYnJhcnlfaWQ6IGVu
Y29kZWQgaWQgc3RyaW5nIG9mIHRoZSBsaWJyYXJ5IHdoZXJlIHRvIGNyZWE9CnRlIHRoZSBuZXcg
aXRlbQorICAgICAgICA6cGFyYW0gIGxpYnJhcnlfaWQ6IHRoZSBlbmNvZGVkIGlkIG9mIHRoZSBs
aWJyYXJ5IHdoZXJlIHRvIGNyZWF0ZSA9CnRoZSBuZXcgaXRlbQogICAgICAgICA6dHlwZSAgIHBh
eWxvYWQ6ICAgIGRpY3QKICAgICAgICAgOnBhcmFtICBwYXlsb2FkOiAgICBkaWN0aW9uYXJ5IHN0
cnVjdHVyZSBjb250YWluaW5nOgo9MjAKLSAgICAgICAgICAgICogZm9sZGVyX2lkOiAgICB0aGUg
cGFyZW50IGZvbGRlciBvZiB0aGUgbmV3IGl0ZW0KKyAgICAgICAgICAgICogZm9sZGVyX2lkOiAg
ICB0aGUgZW5jb2RlZCBpZCBvZiB0aGUgcGFyZW50IGZvbGRlciBvZiB0aGUgbmV3PQogaXRlbQog
ICAgICAgICAgICAgKiBjcmVhdGVfdHlwZTogIHRoZSB0eXBlIG9mIGl0ZW0gdG8gY3JlYXRlICgn
ZmlsZScsICdmb2xkZXInIG89CnIgJ2NvbGxlY3Rpb24nKQotICAgICAgICAgICAgKiBmcm9tX2hk
YV9pZDogIChvcHRpb25hbCkgdGhlIGlkIG9mIGFuIGFjY2Vzc2libGUgSERBIHRvIGNvcHk9CiBp
bnRvIHRoZQotICAgICAgICAgICAgICAgIGxpYnJhcnkKKyAgICAgICAgICAgICogZnJvbV9oZGFf
aWQ6ICAob3B0aW9uYWwsIG9ubHkgaWYgY3JlYXRlX3R5cGUgaXMgJ2ZpbGUnKSB0aGUKKyAgICAg
ICAgICAgICAgICBlbmNvZGVkIGlkIG9mIGFuIGFjY2Vzc2libGUgSERBIHRvIGNvcHkgaW50byB0
aGUgbGlicmFyeQogICAgICAgICAgICAgKiBsZGRhX21lc3NhZ2U6IChvcHRpb25hbCkgdGhlIG5l
dyBtZXNzYWdlIGF0dHJpYnV0ZSBvZiB0aGUgTEQ9CkRBIGNyZWF0ZWQKICAgICAgICAgICAgICog
ZXh0ZW5kZWRfbWV0YWRhdGE6IChvcHRpb25hbCkgZHViLWRpY3Rpb25hcnkgY29udGFpbmluZyBh
bnkgPQpleHRlbmRlZAogICAgICAgICAgICAgICAgIG1ldGFkYXRhIHRvIGFzc29jaWF0ZSB3aXRo
IHRoZSBpdGVtCi0gICAgICAgICAgICAqIGxpbmtfZGF0YV9vbmx5OiAob3B0aW9uYWwpIGVpdGhl
ciAnY29weV9maWxlcycgKGRlZmF1bHQpIG9yID0KJ2xpbmtfdG9fZmlsZXMnCiAgICAgICAgICAg
ICAqIHVwbG9hZF9vcHRpb246IChvcHRpb25hbCkgb25lIG9mICd1cGxvYWRfZmlsZScgKGRlZmF1
bHQpLCAndT0KcGxvYWRfZGlyZWN0b3J5JyBvciAndXBsb2FkX3BhdGhzJwotICAgICAgICAgICAg
KiBzZXJ2ZXJfZGlyOiAob3B0aW9uYWwpIG9ubHkgaWYgdXBsb2FkX29wdGlvbiBpcyAndXBsb2Fk
X2RpcmU9CmN0b3J5JwotICAgICAgICAgICAgKiBmaWxlc3lzdGVtX3BhdGhzOiAob3B0aW9uYWwp
IG9ubHkgaWYgdXBsb2FkX29wdGlvbiBpcyAndXBsb2E9CmRfcGF0aHMnIGFuZCB0aGUgdXNlciBp
cyBhbiBhZG1pbgorICAgICAgICAgICAgKiBzZXJ2ZXJfZGlyOiAob3B0aW9uYWwsIG9ubHkgaWYg
dXBsb2FkX29wdGlvbiBpcworICAgICAgICAgICAgICAgICd1cGxvYWRfZGlyZWN0b3J5JykgcmVs
YXRpdmUgcGF0aCBvZiB0aGUgc3ViZGlyZWN0b3J5IG9mIEc9CmFsYXh5CisgICAgICAgICAgICAg
ICAgYGBsaWJyYXJ5X2ltcG9ydF9kaXJgYCB0byB1cGxvYWQuIEFsbCBhbmQgb25seSB0aGUgZmls
ZXMgKD0KaS5lLgorICAgICAgICAgICAgICAgIG5vIHN1YmRpcmVjdG9yaWVzKSBjb250YWluZWQg
aW4gdGhlIHNwZWNpZmllZCBkaXJlY3Rvcnkgd2k9CmxsIGJlCisgICAgICAgICAgICAgICAgdXBs
b2FkZWQuCisgICAgICAgICAgICAqIGZpbGVzeXN0ZW1fcGF0aHM6IChvcHRpb25hbCwgb25seSBp
ZiB1cGxvYWRfb3B0aW9uIGlzCisgICAgICAgICAgICAgICAgJ3VwbG9hZF9wYXRocycgYW5kIHRo
ZSB1c2VyIGlzIGFuIGFkbWluKSBmaWxlIHBhdGhzIG9uIHRoZQorICAgICAgICAgICAgICAgIEdh
bGF4eSBzZXJ2ZXIgdG8gdXBsb2FkIHRvIHRoZSBsaWJyYXJ5LCBvbmUgZmlsZSBwZXIgbGluZQor
ICAgICAgICAgICAgKiBsaW5rX2RhdGFfb25seTogKG9wdGlvbmFsLCBvbmx5IHdoZW4gdXBsb2Fk
X29wdGlvbiBpcworICAgICAgICAgICAgICAgICd1cGxvYWRfZGlyZWN0b3J5JyBvciAndXBsb2Fk
X3BhdGhzJykgZWl0aGVyICdjb3B5X2ZpbGVzJworICAgICAgICAgICAgICAgIChkZWZhdWx0KSBv
ciAnbGlua190b19maWxlcycuIFNldHRpbmcgdG8gJ2xpbmtfdG9fZmlsZXMnCisgICAgICAgICAg
ICAgICAgc3ltbGlua3MgaW5zdGVhZCBvZiBjb3B5aW5nIHRoZSBmaWxlcworICAgICAgICAgICAg
KiBuYW1lOiAob3B0aW9uYWwsIG9ubHkgaWYgY3JlYXRlX3R5cGUgaXMgJ2ZvbGRlcicpIG5hbWUg
b2YgdGhlCisgICAgICAgICAgICAgICAgZm9sZGVyIHRvIGNyZWF0ZQorICAgICAgICAgICAgKiBk
ZXNjcmlwdGlvbjogKG9wdGlvbmFsLCBvbmx5IGlmIGNyZWF0ZV90eXBlIGlzICdmb2xkZXInKQor
ICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uIG9mIHRoZSBmb2xkZXIgdG8gY3JlYXRlCj0yMAog
ICAgICAgICA6cnR5cGU6ICAgICBkaWN0CiAgICAgICAgIDpyZXR1cm5zOiAgIGEgZGljdGlvbmFy
eSBjb250YWluaW5nIHRoZSBpZCwgbmFtZSwKICAgICAgICAgICAgIGFuZCAnc2hvdycgdXJsIG9m
IHRoZSBuZXcgaXRlbQogICAgICAgICAiIiIKLSAgICAgICAgY3JlYXRlX3R5cGUgPTNEIE5vbmUK
ICAgICAgICAgaWYgJ2NyZWF0ZV90eXBlJyBub3QgaW4gcGF5bG9hZDoKICAgICAgICAgICAgIHRy
YW5zLnJlc3BvbnNlLnN0YXR1cyA9M0QgNDAwCiAgICAgICAgICAgICByZXR1cm4gIk1pc3Npbmcg
cmVxdWlyZWQgJ2NyZWF0ZV90eXBlJyBwYXJhbWV0ZXIuIgpAQCAtMTgyLDEwICsxOTQsMTAgQEAK
PTIwCiAgICAgICAgIGlmICdmb2xkZXJfaWQnIG5vdCBpbiBwYXlsb2FkOgogICAgICAgICAgICAg
dHJhbnMucmVzcG9uc2Uuc3RhdHVzID0zRCA0MDAKLSAgICAgICAgICAgIHJldHVybiAiTWlzc2lu
ZyByZXF1cmVkICdmb2xkZXJfaWQnIHBhcmFtZXRlci4iCisgICAgICAgICAgICByZXR1cm4gIk1p
c3NpbmcgcmVxdWlyZWQgJ2ZvbGRlcl9pZCcgcGFyYW1ldGVyLiIKICAgICAgICAgZWxzZToKICAg
ICAgICAgICAgIGZvbGRlcl9pZCA9M0QgcGF5bG9hZC5wb3AoICdmb2xkZXJfaWQnICkKLSAgICAg
ICAgICAgIGNsYXNzX25hbWUsIGZvbGRlcl9pZCA9M0Qgc2VsZi5fX2RlY29kZV9saWJyYXJ5X2Nv
bnRlbnRfaWQoIHRyPQphbnMsIGZvbGRlcl9pZCApCisgICAgICAgICAgICBjbGFzc19uYW1lLCBm
b2xkZXJfaWQgPTNEIHNlbGYuX19kZWNvZGVfbGlicmFyeV9jb250ZW50X2lkKCBmbz0KbGRlcl9p
ZCApCiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgc2VjdXJpdHkgaXMgY2hlY2tlZCBpbiB0
aGUgZG93bnN0cmVhbSBjb250cm9sbGVyCiAgICAgICAgICAgICBwYXJlbnQgPTNEIHNlbGYuZ2V0
X2xpYnJhcnlfZm9sZGVyKCB0cmFucywgZm9sZGVyX2lkLCBjaGVja19vdz0KbmVyc2hpcD0zREZh
bHNlLCBjaGVja19hY2Nlc3NpYmxlPTNERmFsc2UgKQpAQCAtMjAyLDkgKzIxNCw3IEBACj0yMAog
ICAgICAgICAjY2hlY2sgZm9yIGV4dGVuZGVkIG1ldGFkYXRhLCBzdG9yZSBpdCBhbmQgcG9wIGl0
IG91dCBvZiB0aGUgcGFyYW0KICAgICAgICAgI290aGVyd2lzZSBzYW5pdGl6ZV9wYXJhbSB3aWxs
IGhhdmUgYSBmaXQKLSAgICAgICAgZXhfbWV0YV9wYXlsb2FkID0zRCBOb25lCi0gICAgICAgIGlm
ICdleHRlbmRlZF9tZXRhZGF0YScgaW4gcGF5bG9hZDoKLSAgICAgICAgICAgIGV4X21ldGFfcGF5
bG9hZCA9M0QgcGF5bG9hZC5wb3AoJ2V4dGVuZGVkX21ldGFkYXRhJykKKyAgICAgICAgZXhfbWV0
YV9wYXlsb2FkID0zRCBwYXlsb2FkLnBvcCgnZXh0ZW5kZWRfbWV0YWRhdGEnLCBOb25lKQo9MjAK
ICAgICAgICAgIyBOb3cgY3JlYXRlIHRoZSBkZXNpcmVkIGNvbnRlbnQgb2JqZWN0LCBlaXRoZXIg
ZmlsZSBvciBmb2xkZXIuCiAgICAgICAgIGlmIGNyZWF0ZV90eXBlID0zRD0zRCAnZmlsZSc6CkBA
IC0yNzYsNyArMjg2LDcgQEAKPTIwCiAgICAgZGVmIF9jb3B5X2hkYV90b19saWJyYXJ5X2ZvbGRl
ciggc2VsZiwgdHJhbnMsIGZyb21faGRhX2lkLCBsaWJyYXJ5X2lkLD0KIGZvbGRlcl9pZCwgbGRk
YV9tZXNzYWdlPTNEJycgKToKICAgICAgICAgIiIiCi0gICAgICAgIENvcGllcyBoZGEgYGBmcm9t
X2hkYV9pZGBgIHRvIGxpYnJhcnkgZm9sZGVyIGBgbGlicmFyeV9mb2xkZXJfaWRgYD0KIG9wdGlv
bmFsbHkKKyAgICAgICAgQ29waWVzIGhkYSBgYGZyb21faGRhX2lkYGAgdG8gbGlicmFyeSBmb2xk
ZXIgYGBmb2xkZXJfaWRgYCwgb3B0aW9uPQphbGx5CiAgICAgICAgIGFkZGluZyBgYGxkZGFfbWVz
c2FnZWBgIHRvIHRoZSBuZXcgbGRkYSdzIGBgbWVzc2FnZWBgLgo9MjAKICAgICAgICAgYGBsaWJy
YXJ5X2NvbnRlbnRzLmNyZWF0ZWBgIHdpbGwgYnJhbmNoIHRvIHRoaXMgaWYgY2FsbGVkIHdpdGgg
J2ZyPQpvbV9oZGFfaWQnCkBAIC0zMzEsNyArMzQxLDcgQEAKICAgICAgICAgOnR5cGUgICBpZDog
ICAgICAgICBzdHIKICAgICAgICAgOnBhcmFtICBpZDogICAgICAgICB0aGUgZW5jb2RlZCBpZCBv
ZiB0aGUgbGlicmFyeSBpdGVtIHRvIHJldHVybgogICAgICAgICA6dHlwZSAgIGxpYnJhcnlfaWQ6
IHN0cgotICAgICAgICA6cGFyYW0gIGxpYnJhcnlfaWQ6IGVuY29kZWQgaWQgc3RyaW5nIG9mIHRo
ZSBsaWJyYXJ5IHRoYXQgY29udGFpbnM9CiB0aGlzIGl0ZW0KKyAgICAgICAgOnBhcmFtICBsaWJy
YXJ5X2lkOiB0aGUgZW5jb2RlZCBpZCBvZiB0aGUgbGlicmFyeSB0aGF0IGNvbnRhaW5zIHRoPQpp
cyBpdGVtCiAgICAgICAgIDp0eXBlICAgcGF5bG9hZDogICAgZGljdAogICAgICAgICA6cGFyYW0g
IHBheWxvYWQ6ICAgIGRpY3Rpb25hcnkgc3RydWN0dXJlIGNvbnRhaW5pbmc6OgogICAgICAgICAg
ICAgJ2NvbnZlcnRlZF9kYXRhc2V0X2lkJzoKQEAgLTM1MCw3ICszNjAsNyBAQAogICAgICAgICAg
ICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIGFzc29jICkKICAgICAgICAgICAgIHRyYW5zLnNhX3Nl
c3Npb24uZmx1c2goKQo9MjAKLSAgICBkZWYgX19kZWNvZGVfbGlicmFyeV9jb250ZW50X2lkKCBz
ZWxmLCB0cmFucywgY29udGVudF9pZCApOgorICAgIGRlZiBfX2RlY29kZV9saWJyYXJ5X2NvbnRl
bnRfaWQoIHNlbGYsIGNvbnRlbnRfaWQgKToKICAgICAgICAgaWYgbGVuKCBjb250ZW50X2lkICkg
JSAxNiA9M0Q9M0QgMDoKICAgICAgICAgICAgIHJldHVybiAnTGlicmFyeURhdGFzZXQnLCBjb250
ZW50X2lkCiAgICAgICAgIGVsaWYgY29udGVudF9pZC5zdGFydHN3aXRoKCAnRicgKToKCmRpZmYg
LXIgNTMwNWU0ZDFjOTlkNDc4YWRhNWZkNjI5MzBlNDI4NzVkYTQ4ZmQxYyAtciA2YThhNzlmOWI2
ZDUyYmY5NmUyMmQ5ND0KNzQwZjljMzdiNDQ0ZDhkMTIgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4
eS9hcGkvdG9vbHMucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvdG9vbHMu
cHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvdG9vbHMucHkKQEAgLTEwLDcg
KzEwLDcgQEAKIGZyb20gZ2FsYXh5LnZpc3VhbGl6YXRpb24uZ2Vub21lcyBpbXBvcnQgR2Vub21l
UmVnaW9uCiBmcm9tIGdhbGF4eS51dGlsLmpzb24gaW1wb3J0IGR1bXBzCiBmcm9tIGdhbGF4eS52
aXN1YWxpemF0aW9uLmRhdGFfcHJvdmlkZXJzLmdlbm9tZSBpbXBvcnQgKgotZnJvbSBnYWxheHku
dG9vbHMucGFyYW1ldGVycyBpbXBvcnQgcGFyYW1zX3RvX2luY29taW5nLCBjaGVja19wYXJhbQor
ZnJvbSBnYWxheHkudG9vbHMucGFyYW1ldGVycyBpbXBvcnQgY2hlY2tfcGFyYW0KIGZyb20gZ2Fs
YXh5LnRvb2xzLnBhcmFtZXRlcnMgaW1wb3J0IHZpc2l0X2lucHV0X3ZhbHVlcwogZnJvbSBnYWxh
eHkudG9vbHMucGFyYW1ldGVycy5tZXRhIGltcG9ydCBleHBhbmRfbWV0YV9wYXJhbWV0ZXJzCiBm
cm9tIGdhbGF4eS5tYW5hZ2Vycy5jb2xsZWN0aW9uc191dGlsIGltcG9ydCBkaWN0aWZ5X2RhdGFz
ZXRfY29sbGVjdGlvbl9pbj0Kc3RhbmNlCkBAIC04NSw3ICs4NSw3IEBACiAgICAgICAgIGlmIG5v
dCB0b29sOgogICAgICAgICAgICAgdHJhbnMucmVzcG9uc2Uuc3RhdHVzID0zRCA1MDAKICAgICAg
ICAgICAgIHJldHVybiB7ICdlcnJvcic6ICdDb3VsZCBub3QgZmluZCB0b29sIHdpdGggaWQgXCcl
c1wnJyAlIHRvb2xfPQppZCB9Ci0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9kaWN0KHRyYW5z
LCB0b29sLCBrd2QpCisgICAgICAgIHJldHVybiB0b29sLnRvX2pzb24odHJhbnMsICoqa3dkKQog
ICAgPTIwCiAgICAgQF9mdXR1cmVfZXhwb3NlX2FwaQogICAgIEB3ZWIucmVxdWlyZV9hZG1pbgpA
QCAtNDkzLDMwOCArNDkzLDMgQEAKICAgICAgICAgZGF0YXNldF9kaWN0WyAnaWQnIF0gPTNEIHRy
YW5zLnNlY3VyaXR5LmVuY29kZV9pZCggZGF0YXNldF9kaWN0WyAnPQppZCcgXSApCiAgICAgICAg
IGRhdGFzZXRfZGljdFsgJ3RyYWNrX2NvbmZpZycgXSA9M0Qgc2VsZi5nZXRfbmV3X3RyYWNrX2Nv
bmZpZyggdHJhbj0Kcywgb3V0cHV0X2RhdGFzZXQgKQogICAgICAgICByZXR1cm4gZGF0YXNldF9k
aWN0Ci0KLSAgICBkZWYgX2J1aWxkX2RpY3Qoc2VsZiwgdHJhbnMsIHRvb2wsIGt3ZD0zRHt9KToK
LSAgICAgICAgIiIiCi0gICAgICAgIFJlY3Vyc2l2ZWx5IGNyZWF0ZXMgYSB0b29sIGRpY3Rpb25h
cnkgY29udGFpbmluZyByZXBlYXRzLCBkeW5hbWljID0Kb3B0aW9ucyBhbmQgdXBkYXRlZCBzdGF0
ZXMuCi0gICAgICAgICIiIgotICAgICAgICBqb2JfaWQgPTNEIGt3ZC5nZXQoJ2pvYl9pZCcsIE5v
bmUpCi0gICAgICAgIGRhdGFzZXRfaWQgPTNEIGt3ZC5nZXQoJ2RhdGFzZXRfaWQnLCBOb25lKQot
ICAgICAgID0yMAotICAgICAgICAjIGxvYWQgam9iIGRldGFpbHMgaWYgcHJvdmlkZWQKLSAgICAg
ICAgam9iID0zRCBOb25lCi0gICAgICAgIGlmIGpvYl9pZDoKLSAgICAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgICAgICBqb2JfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmRlY29kZV9pZCggam9iX2lk
ICkKLSAgICAgICAgICAgICAgICBqb2IgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5z
LmFwcC5tb2RlbC5Kb2IgKS5nZXQoPQogam9iX2lkICkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNl
cHRpb24sIGV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICB0cmFucy5yZXNwb25zZS5zdGF0dXMg
PTNEIDUwMAotICAgICAgICAgICAgICAgIHJldHVybiB7ICdlcnJvcic6ICdGYWlsZWQgdG8gcmV0
cmlldmUgam9iLicgfQotICAgICAgICBlbGlmIGRhdGFzZXRfaWQ6Ci0gICAgICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAgICAgZGF0YXNldF9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lk
KCBkYXRhc2V0X2lkICkKLSAgICAgICAgICAgICAgICBkYXRhID0zRCB0cmFucy5zYV9zZXNzaW9u
LnF1ZXJ5KCB0cmFucy5hcHAubW9kZWwuSGlzdG9yeURhPQp0YXNldEFzc29jaWF0aW9uICkuZ2V0
KCBkYXRhc2V0X2lkICkKLSAgICAgICAgICAgICAgICBpZiBub3QgKCB0cmFucy51c2VyX2lzX2Fk
bWluKCkgb3IgdHJhbnMuYXBwLnNlY3VyaXR5X2FnZW50PQouY2FuX2FjY2Vzc19kYXRhc2V0KCB0
cmFucy5nZXRfY3VycmVudF91c2VyX3JvbGVzKCksIGRhdGEuZGF0YXNldCApICk6Ci0gICAgICAg
ICAgICAgICAgICAgIHRyYW5zLnJlc3BvbnNlLnN0YXR1cyA9M0QgNTAwCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiB7ICdlcnJvcic6ICdVc2VyIGhhcyBubyBhY2Nlc3MgdG8gZGF0YXNldC4n
IH0KLSAgICAgICAgICAgICAgICBqb2IgPTNEIGRhdGEuY3JlYXRpbmdfam9iCi0gICAgICAgICAg
ICAgICAgaWYgbm90IGpvYjoKLSAgICAgICAgICAgICAgICAgICAgdHJhbnMucmVzcG9uc2Uuc3Rh
dHVzID0zRCA1MDAKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgJ2Vycm9yJzogJ0NyZWF0
aW5nIGpvYiBub3QgZm91bmQuJyB9Ci0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBleGNl
cHRpb246Ci0gICAgICAgICAgICAgICAgdHJhbnMucmVzcG9uc2Uuc3RhdHVzID0zRCA1MDAKLSAg
ICAgICAgICAgICAgICByZXR1cm4geyAnZXJyb3InOiAnRmFpbGVkIHRvIGdldCBqb2IgaW5mb3Jt
YXRpb24uJyB9Ci0gICAgICAgPTIwCi0gICAgICAgICMgbG9hZCBqb2IgcGFyYW1ldGVycyBpbnRv
IGluY29taW5nCi0gICAgICAgIHRvb2xfbWVzc2FnZSA9M0QgJycKLSAgICAgICAgaWYgam9iOgot
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGpvYl9wYXJhbXMgPTNEIGpvYi5nZXRf
cGFyYW1fdmFsdWVzKCB0cmFucy5hcHAsIGlnbm9yZV9lcnI9Cm9ycyA9M0QgVHJ1ZSApCi0gICAg
ICAgICAgICAgICAgam9iX21lc3NhZ2VzID0zRCB0b29sLmNoZWNrX2FuZF91cGRhdGVfcGFyYW1f
dmFsdWVzKCBqb2JfcD0KYXJhbXMsIHRyYW5zLCB1cGRhdGVfdmFsdWVzPTNERmFsc2UgKQotICAg
ICAgICAgICAgICAgIHRvb2xfbWVzc2FnZSA9M0Qgc2VsZi5fY29tcGFyZV90b29sX3ZlcnNpb24o
dHJhbnMsIHRvb2wsIGo9Cm9iKQotICAgICAgICAgICAgICAgIHBhcmFtc190b19pbmNvbWluZygg
a3dkLCB0b29sLmlucHV0cywgam9iX3BhcmFtcywgdHJhbnMuYXA9CnAgKQotICAgICAgICAgICAg
ZXhjZXB0IEV4Y2VwdGlvbiwgZXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIHRyYW5zLnJlc3Bv
bnNlLnN0YXR1cyA9M0QgNTAwCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsgJ2Vycm9yJzogc3Ry
KCBleGNlcHRpb24gKSB9Ci0gICAgICAgICAgICAgICA9MjAKLSAgICAgICAgIyBjcmVhdGUgcGFy
YW1ldGVyIG9iamVjdAotICAgICAgICBwYXJhbXMgPTNEIGdhbGF4eS51dGlsLlBhcmFtcygga3dk
LCBzYW5pdGl6ZSA9M0QgRmFsc2UgKQotICAgICAgID0yMAotICAgICAgICAjIGNvbnZlcnQgdmFs
dWUgdG8ganNvbmlmaWFibGUgdmFsdWUKLSAgICAgICAgZGVmIGNvbnZlcnQodik6Ci0gICAgICAg
ICAgICAjIGNoZWNrIGlmIHZhbHVlIGlzIG51bWVyaWMKLSAgICAgICAgICAgIGlzbnVtYmVyID0z
RCBGYWxzZQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGZsb2F0KHYpCi0gICAg
ICAgICAgICAgICAgaXNudW1iZXIgPTNEIFRydWUKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRp
b246Ci0gICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgICAgICAjIGZpeCBoZGEgcGFyc2lu
ZwotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2LCBIaXN0b3J5RGF0YXNldEFzc29jaWF0aW9u
KToKLSAgICAgICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgICAgICAnaWQnICA6
IHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCh2LmlkKSwKLSAgICAgICAgICAgICAgICAgICAgJ3Ny
YycgOiAnaGRhJwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5j
ZSh2LCBib29sKToKLSAgICAgICAgICAgICAgICBpZiB2IGlzIFRydWU6Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiAndHJ1ZScKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gJ2ZhbHNlJwotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHYsIGJh
c2VzdHJpbmcpIG9yIGlzbnVtYmVyOgotICAgICAgICAgICAgICAgIHJldHVybiB2Ci0gICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgIyBlbnN1
cmVzIHRoYXQgaW5wdXQgZGljdGlvbmFyeSBpcyBqc29uaWZpYWJsZQotICAgICAgICBkZWYgc2Fu
aXRpemUoZGljdCk6Ci0gICAgICAgICAgICAjIGdldCBjdXJyZW50IHZhbHVlCi0gICAgICAgICAg
ICB2YWx1ZSA9M0QgZGljdFsndmFsdWUnXSBpZiAndmFsdWUnIGluIGRpY3QgZWxzZSBOb25lCi0K
LSAgICAgICAgICAgICMgaWRlbnRpZnkgbGlzdHMKLSAgICAgICAgICAgIGlmIGRpY3RbJ3R5cGUn
XSBpbiBbJ2RhdGEnXToKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBsaXN0
KToKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPTNEIFsgY29udmVydCh2KSBmb3IgdiBpbiB2
YWx1ZSBdCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUg
PTNEIFsgY29udmVydCh2YWx1ZSkgXQotICAgICAgICAgICAgICAgIHZhbHVlID0zRCB7Ci0gICAg
ICAgICAgICAgICAgICAgICdiYXRjaCcgICAgIDogZGljdFsnbXVsdGlwbGUnXSwKLSAgICAgICAg
ICAgICAgICAgICAgJ3ZhbHVlcycgICAgOiB2YWx1ZQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgbGlzdCk6Ci0gICAgICAgICAgICAgICAgdmFs
dWUgPTNEIFsgY29udmVydCh2KSBmb3IgdiBpbiB2YWx1ZSBdCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgIHZhbHVlID0zRCBjb252ZXJ0KHZhbHVlKQotCi0gICAgICAgICAgICAj
IHVwZGF0ZSBhbmQgcmV0dXJuCi0gICAgICAgICAgICBkaWN0Wyd2YWx1ZSddID0zRCB2YWx1ZQot
ICAgICAgICAgICAgcmV0dXJuIGRpY3QKLSAgICAgICA9MjAKLSAgICAgICAgIyBpbml0aWFsaXpl
IHN0YXRlIHVzaW5nIGRlZmF1bHQgcGFyYW1ldGVycwotICAgICAgICBkZWYgaW5pdGlhbGl6ZV9z
dGF0ZSh0cmFucywgaW5wdXRzLCBzdGF0ZSwgY29udGV4dD0zRE5vbmUpOgotICAgICAgICAgICAg
Y29udGV4dCA9M0QgRXhwcmVzc2lvbkNvbnRleHQoc3RhdGUsIGNvbnRleHQpCi0gICAgICAgICAg
ICBmb3IgaW5wdXQgaW4gaW5wdXRzLml0ZXJ2YWx1ZXMoKToKLSAgICAgICAgICAgICAgICBzdGF0
ZVtpbnB1dC5uYW1lXSA9M0QgaW5wdXQuZ2V0X2luaXRpYWxfdmFsdWUodHJhbnMsIGNvbnRlPQp4
dCkKLSAgID0yMAotICAgICAgICAjIGNoZWNrIHRoZSBjdXJyZW50IHN0YXRlIG9mIGEgdmFsdWUg
YW5kIHVwZGF0ZSBpdCBpZiBuZWNlc3NhcnkKLSAgICAgICAgZGVmIGNoZWNrX3N0YXRlKHRyYW5z
LCBpbnB1dCwgZGVmYXVsdF92YWx1ZSwgY29udGV4dCk6Ci0gICAgICAgICAgICB2YWx1ZSA9M0Qg
ZGVmYXVsdF92YWx1ZQotICAgICAgICAgICAgZXJyb3IgPTNEICdTdGF0ZSB2YWxpZGF0aW9uIGZh
aWxlZC4nCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgIyByZXNvbHZlcyB0aGUg
aW5jb25zaXN0ZW50IGRlZmluaXRpb24gb2YgYm9vbGVhbiBwYXJhbWV0ZT0KcnMgKHNlZSBiYXNl
LnB5KSB3aXRob3V0IG1vZGlmeWluZyBzaGFyZWQgY29kZQotICAgICAgICAgICAgICAgIGlmIGlu
cHV0LnR5cGUgPTNEPTNEICdib29sZWFuJyBhbmQgaXNpbnN0YW5jZShkZWZhdWx0X3ZhbHU9CmUs
IGJhc2VzdHJpbmcpOgotICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgZXJyb3IgPTNEIFt1dGls
LnN0cmluZ19hc19ib29sKGRlZmF1bHRfdmFsdWUpLCA9Ck5vbmVdCi0gICAgICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUsIGVycm9yID0zRCBjaGVja19wYXJhbSh0
cmFucywgaW5wdXQsIGRlZmF1bHRfdmFsPQp1ZSwgY29udGV4dCkKLSAgICAgICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgbG9nLmVycm9yKCdDaGVja2luZyBwYXJhbWV0
ZXIgJXMgZmFpbGVkLicsIGlucHV0Lm5hbWUpCi0gICAgICAgICAgICAgICAgcGFzcwotICAgICAg
ICAgICAgcmV0dXJuIFt2YWx1ZSwgZXJyb3JdCi0gICA9MjAKLSAgICAgICAgIyBwb3B1bGF0ZXMg
c3RhdGUgd2l0aCBpbmNvbWluZyB1cmwgcGFyYW1ldGVycwotICAgICAgICBkZWYgcG9wdWxhdGVf
c3RhdGUodHJhbnMsIGlucHV0cywgc3RhdGUsIGVycm9ycywgaW5jb21pbmcsIHByZWZpeD0KPTNE
IiIsIGNvbnRleHQ9M0ROb25lICk6Ci0gICAgICAgICAgICBjb250ZXh0ID0zRCBFeHByZXNzaW9u
Q29udGV4dChzdGF0ZSwgY29udGV4dCkKLSAgICAgICAgICAgIGZvciBpbnB1dCBpbiBpbnB1dHMu
aXRlcnZhbHVlcygpOgotICAgICAgICAgICAgICAgIGtleSA9M0QgcHJlZml4ICsgaW5wdXQubmFt
ZQotICAgICAgICAgICAgICAgIGlmIGlucHV0LnR5cGUgPTNEPTNEICdyZXBlYXQnOgotICAgICAg
ICAgICAgICAgICAgICBncm91cF9zdGF0ZSA9M0Qgc3RhdGVbaW5wdXQubmFtZV0KLSAgICAgICAg
ICAgICAgICAgICAgcmVwX2luZGV4ID0zRCAwCi0gICAgICAgICAgICAgICAgICAgIGRlbCBncm91
cF9zdGF0ZVs6XQotICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAg
ICAgICAgICAgICAgcmVwX25hbWUgPTNEICIlc18lZCIgJSAoa2V5LCByZXBfaW5kZXgpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBpZiBub3QgYW55KFtpbmNvbWluZ19rZXkuc3RhcnRzd2l0aChy
ZXBfbmFtZSkgZm9yID0KaW5jb21pbmdfa2V5IGluIGluY29taW5nLmtleXMoKV0pOgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBy
ZXBfaW5kZXggPCBpbnB1dC5tYXg6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3N0
YXRlID0zRCB7fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19zdGF0ZVsnX19pbmRl
eF9fJ10gPTNEIHJlcF9pbmRleAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxp
emVfc3RhdGUodHJhbnMsIGlucHV0LmlucHV0cywgbmV3X3N0YXQ9CmUsIGNvbnRleHQpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBfc3RhdGUuYXBwZW5kKG5ld19zdGF0ZSkKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwb3B1bGF0ZV9zdGF0ZSh0cmFucywgaW5wdXQuaW5w
dXRzLCBuZXdfc3RhdGUsPQogZXJyb3JzLCBpbmNvbWluZywgcHJlZml4PTNEcmVwX25hbWUgKyAi
fCIsIGNvbnRleHQ9M0Rjb250ZXh0KQotICAgICAgICAgICAgICAgICAgICAgICAgcmVwX2luZGV4
ICs9M0QgMQotICAgICAgICAgICAgICAgIGVsaWYgaW5wdXQudHlwZSA9M0Q9M0QgJ2NvbmRpdGlv
bmFsJzoKLSAgICAgICAgICAgICAgICAgICAgZ3JvdXBfc3RhdGUgPTNEIHN0YXRlW2lucHV0Lm5h
bWVdCi0gICAgICAgICAgICAgICAgICAgIGdyb3VwX3ByZWZpeCA9M0QgIiVzfCIgJSAoIGtleSAp
Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RfcGFyYW1fa2V5ID0zRCBncm91cF9wcmVmaXggKyBp
bnB1dC50ZXN0X3BhcmFtLm5hbWUKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF92YWx1ZSA9
M0QgaW5jb21pbmcuZ2V0KHRlc3RfcGFyYW1fa2V5LCBncm91cF9zPQp0YXRlLmdldChpbnB1dC50
ZXN0X3BhcmFtLm5hbWUsIE5vbmUpKQotICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgZXJyb3Ig
PTNEIGNoZWNrX3N0YXRlKHRyYW5zLCBpbnB1dC50ZXN0X3BhcmFtLCA9CmRlZmF1bHRfdmFsdWUs
IGNvbnRleHQpCi0gICAgICAgICAgICAgICAgICAgIGlmIGVycm9yOgotICAgICAgICAgICAgICAg
ICAgICAgICAgZXJyb3JzW3Rlc3RfcGFyYW1fa2V5XSA9M0QgZXJyb3IKLSAgICAgICAgICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfY2FzZSA9M0QgaW5w
dXQuZ2V0X2N1cnJlbnRfY2FzZSh2YWx1ZSwgdHJhPQpucykKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGdyb3VwX3N0YXRlID0zRCBzdGF0ZVtpbnB1dC5uYW1lXSA9M0Qge30KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGluaXRpYWxpemVfc3RhdGUodHJhbnMsIGlucHV0LmNhc2VzW2N1cnJlbnRf
Y2FzZV0uPQppbnB1dHMsIGdyb3VwX3N0YXRlLCBjb250ZXh0KQotICAgICAgICAgICAgICAgICAg
ICAgICAgcG9wdWxhdGVfc3RhdGUoIHRyYW5zLCBpbnB1dC5jYXNlc1tjdXJyZW50X2Nhc2VdLmk9
Cm5wdXRzLCBncm91cF9zdGF0ZSwgZXJyb3JzLCBpbmNvbWluZywgcHJlZml4PTNEZ3JvdXBfcHJl
Zml4LCBjb250ZXh0PTNEY29udD0KZXh0KQotICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBf
c3RhdGVbJ19fY3VycmVudF9jYXNlX18nXSA9M0QgY3VycmVudF9jYXNlCi0gICAgICAgICAgICAg
ICAgICAgIGdyb3VwX3N0YXRlW2lucHV0LnRlc3RfcGFyYW0ubmFtZV0gPTNEIHZhbHVlCi0gICAg
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF92YWx1ZSA9M0Qg
aW5jb21pbmcuZ2V0KGtleSwgc3RhdGUuZ2V0KGlucHV0Lm5hPQptZSwgTm9uZSkpCi0gICAgICAg
ICAgICAgICAgICAgIHZhbHVlLCBlcnJvciA9M0QgY2hlY2tfc3RhdGUodHJhbnMsIGlucHV0LCBk
ZWZhdWx0X3ZhbD0KdWUsIGNvbnRleHQpCi0gICAgICAgICAgICAgICAgICAgIGlmIGVycm9yOgot
ICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzW2tleV0gPTNEIGVycm9yCi0gICAgICAgICAg
ICAgICAgICAgIHN0YXRlW2lucHV0Lm5hbWVdID0zRCB2YWx1ZQotICAgICAgID0yMAotICAgICAg
ICAjIGJ1aWxkcyB0b29sIG1vZGVsIGluY2x1ZGluZyBhbGwgYXR0cmlidXRlcwotICAgICAgICBk
ZWYgaXRlcmF0ZShncm91cF9pbnB1dHMsIGlucHV0cywgdG9vbF9zdGF0ZSwgb3RoZXJfdmFsdWVz
PTNETm9uZSk6Ci0gICAgICAgICAgICBvdGhlcl92YWx1ZXMgPTNEIEV4cHJlc3Npb25Db250ZXh0
KCB0b29sX3N0YXRlLCBvdGhlcl92YWx1ZXMgKQotICAgICAgICAgICAgZm9yIGlucHV0X2luZGV4
LCBpbnB1dCBpbiBlbnVtZXJhdGUoIGlucHV0cy5pdGVydmFsdWVzKCkgKToKLSAgICAgICAgICAg
ICAgICAjIGNyZWF0ZSBtb2RlbCBkaWN0aW9uYXJ5Ci0gICAgICAgICAgICAgICAgZ3JvdXBfaW5w
dXRzW2lucHV0X2luZGV4XSA9M0QgaW5wdXQudG9fZGljdCh0cmFucykKLSAgICAgICAgICAgICAg
ICBpZiBncm91cF9pbnB1dHNbaW5wdXRfaW5kZXhdIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICAjIGlkZW50aWZ5IHN0YXQgZm9yIHN1YnNl
Y3Rpb24vZ3JvdXAKLSAgICAgICAgICAgICAgICBncm91cF9zdGF0ZSA9M0QgdG9vbF9zdGF0ZVtp
bnB1dC5uYW1lXQotCi0gICAgICAgICAgICAgICAgIyBpdGVyYXRlIGFuZCB1cGRhdGUgdmFsdWVz
Ci0gICAgICAgICAgICAgICAgaWYgaW5wdXQudHlwZSA9M0Q9M0QgJ3JlcGVhdCc6Ci0gICAgICAg
ICAgICAgICAgICAgIGdyb3VwX2NhY2hlID0zRCBncm91cF9pbnB1dHNbaW5wdXRfaW5kZXhdWydj
YWNoZSddID0zRD0KIHt9Ci0gICAgICAgICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKCBsZW4o
IGdyb3VwX3N0YXRlICkgKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX2NhY2hlW2ld
ID0zRCB7fQotICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmF0ZSggZ3JvdXBfY2FjaGVbaV0s
IGlucHV0LmlucHV0cywgZ3JvdXBfc3RhdGU9CltpXSwgb3RoZXJfdmFsdWVzICkKLSAgICAgICAg
ICAgICAgICBlbGlmIGlucHV0LnR5cGUgPTNEPTNEICdjb25kaXRpb25hbCc6Ci0gICAgICAgICAg
ICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcGFyYW0gPTNEIGdy
b3VwX2lucHV0c1tpbnB1dF9pbmRleF1bJ3Rlc3RfcGFyPQphbSddCi0gICAgICAgICAgICAgICAg
ICAgICAgICB0ZXN0X3BhcmFtWyd2YWx1ZSddID0zRCBjb252ZXJ0KGdyb3VwX3N0YXRlW3Rlc3Rf
cD0KYXJhbVsnbmFtZSddXSkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoK
LSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICAgICAgaSA9M0Qg
Z3JvdXBfc3RhdGVbJ19fY3VycmVudF9jYXNlX18nXQotICAgICAgICAgICAgICAgICAgICBpdGVy
YXRlKGdyb3VwX2lucHV0c1tpbnB1dF9pbmRleF1bJ2Nhc2VzJ11baV1bJ2lucHV0cyc9Cl0sIGlu
cHV0LmNhc2VzW2ldLmlucHV0cywgZ3JvdXBfc3RhdGUsIG90aGVyX3ZhbHVlcykKLSAgICAgICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAjIGNyZWF0ZSBpbnB1dCBkaWN0aW9u
YXJ5LCB0cnkgdG8gcGFzcyBvdGhlcl92YWx1ZXMgaWY9CiB0b19kaWN0IGZ1bmN0aW9uIHN1cHBv
cnRzIGl0IGUuZy4gZHluYW1pYyBvcHRpb25zCi0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX2lucHV0c1tpbnB1dF9pbmRleF0gPTNEIGlucHV0
LnRvX2RpY3QodHJhbnMsPQogb3RoZXJfdmFsdWVzPTNEb3RoZXJfdmFsdWVzKQotICAgICAgICAg
ICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgcGFz
cwotCi0gICAgICAgICAgICAgICAgICAgICMgdXBkYXRlIGlucHV0IHZhbHVlIGZyb20gdG9vbCBz
dGF0ZQotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBn
cm91cF9pbnB1dHNbaW5wdXRfaW5kZXhdWyd2YWx1ZSddID0zRCB0b29sX3N0YXRlWz0KZ3JvdXBf
aW5wdXRzW2lucHV0X2luZGV4XVsnbmFtZSddXQotICAgICAgICAgICAgICAgICAgICBleGNlcHQg
RXhjZXB0aW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgICAgICAg
ICAgICAgICMgc2FuaXRpemUgaWYgdmFsdWUgZXhpc3RzCi0gICAgICAgICAgICAgICAgICAgIGlm
IGdyb3VwX2lucHV0c1tpbnB1dF9pbmRleF1bJ3ZhbHVlJ106Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBncm91cF9pbnB1dHNbaW5wdXRfaW5kZXhdID0zRCBzYW5pdGl6ZShncm91cF9pbnB1dD0K
c1tpbnB1dF9pbmRleF0pCi0KLSAgICAgICAgIyBkbyBwYXJhbSB0cmFuc2xhdGlvbiBoZXJlLCB1
c2VkIGJ5IGRhdGFzb3VyY2UgdG9vbHMKLSAgICAgICAgaWYgdG9vbC5pbnB1dF90cmFuc2xhdG9y
OgotICAgICAgICAgICAgdG9vbC5pbnB1dF90cmFuc2xhdG9yLnRyYW5zbGF0ZSggcGFyYW1zICkK
LSAgICAgICA9MjAKLSAgICAgICAgIyBjcmVhdGUgdG9vbCBzdGF0ZQotICAgICAgICBzdGF0ZV9p
bnB1dHMgPTNEIHt9Ci0gICAgICAgIHN0YXRlX2Vycm9ycyA9M0Qge30KLSAgICAgICAgaW5pdGlh
bGl6ZV9zdGF0ZSh0cmFucywgdG9vbC5pbnB1dHMsIHN0YXRlX2lucHV0cykKLSAgICAgICAgcG9w
dWxhdGVfc3RhdGUodHJhbnMsIHRvb2wuaW5wdXRzLCBzdGF0ZV9pbnB1dHMsIHN0YXRlX2Vycm9y
cywgcGFyPQphbXMuX19kaWN0X18pCi0KLSAgICAgICAgIyBjcmVhdGUgYmFzaWMgdG9vbCBtb2Rl
bAotICAgICAgICB0b29sX21vZGVsID0zRCB0b29sLnRvX2RpY3QodHJhbnMpCi0gICAgICAgIHRv
b2xfbW9kZWxbJ2lucHV0cyddID0zRCB7fQotCi0gICAgICAgICMgYnVpbGQgdG9vbCBtb2RlbAot
ICAgICAgICBpdGVyYXRlKHRvb2xfbW9kZWxbJ2lucHV0cyddLCB0b29sLmlucHV0cywgc3RhdGVf
aW5wdXRzLCAnJykKLQotICAgICAgICAjIGxvYWQgdG9vbCBoZWxwCi0gICAgICAgIHRvb2xfaGVs
cCA9M0QgJycKLSAgICAgICAgaWYgdG9vbC5oZWxwOgotICAgICAgICAgICAgdG9vbF9oZWxwID0z
RCB0b29sLmhlbHAKLSAgICAgICAgICAgIHRvb2xfaGVscCA9M0QgdG9vbF9oZWxwLnJlbmRlcigg
c3RhdGljX3BhdGg9M0R3ZWIudXJsX2ZvciggJy9zPQp0YXRpYycgKSwgaG9zdF91cmw9M0R3ZWIu
dXJsX2ZvcignLycsIHF1YWxpZmllZD0zRFRydWUpICkKLSAgICAgICAgICAgIGlmIHR5cGUoIHRv
b2xfaGVscCApIGlzIG5vdCB1bmljb2RlOgotICAgICAgICAgICAgICAgIHRvb2xfaGVscCA9M0Qg
dW5pY29kZSggdG9vbF9oZWxwLCAndXRmLTgnKQotICAgICAgID0yMAotICAgICAgICAjIGNoZWNr
IGlmIGNpdGF0aW9ucyBleGlzdAotICAgICAgICB0b29sX2NpdGF0aW9ucyA9M0QgRmFsc2UKLSAg
ICAgICAgaWYgdG9vbC5jaXRhdGlvbnM6Ci0gICAgICAgICAgICB0b29sX2NpdGF0aW9ucyA9M0Qg
VHJ1ZQotICAgPTIwCi0gICAgICAgICMgZ2V0IHRvb2wgdmVyc2lvbnMKLSAgICAgICAgdG9vbF92
ZXJzaW9ucyA9M0QgW10KLSAgICAgICAgdG9vbHMgPTNEIHNlbGYuYXBwLnRvb2xib3guZ2V0X2xv
YWRlZF90b29sc19ieV9saW5lYWdlKHRvb2wuaWQpCi0gICAgICAgIGZvciB0IGluIHRvb2xzOgot
ICAgICAgICAgICAgdG9vbF92ZXJzaW9ucy5hcHBlbmQodC52ZXJzaW9uKQotICAgICAgID0yMAot
ICAgICAgICAjIyBhZGQgaW5mb3JtYXRpb24gd2l0aCB1bmRlcmx5aW5nIHJlcXVpcmVtZW50cyBh
bmQgdGhlaXIgdmVyc2lvbnMKLSAgICAgICAgdG9vbF9yZXF1aXJlbWVudHMgPTNEIFtdCi0gICAg
ICAgIGlmIHRvb2wucmVxdWlyZW1lbnRzOgotICAgICAgICAgICAgZm9yIHJlcXVpcmVtZW50IGlu
IHRvb2wucmVxdWlyZW1lbnRzOgotICAgICAgICAgICAgICAgIHRvb2xfcmVxdWlyZW1lbnRzLmFw
cGVuZCh7Ci0gICAgICAgICAgICAgICAgICAgICduYW1lJyAgICAgIDogcmVxdWlyZW1lbnQubmFt
ZSwKLSAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nICAgOiByZXF1aXJlbWVudC52ZXJzaW9u
Ci0gICAgICAgICAgICAgICAgfSkKLQotICAgICAgICAjIGFkZCBhZGRpdGlvbmFsIHByb3BlcnRp
ZXMKLSAgICAgICAgdG9vbF9tb2RlbC51cGRhdGUoewotICAgICAgICAgICAgJ2hlbHAnICAgICAg
ICAgIDogdG9vbF9oZWxwLAotICAgICAgICAgICAgJ2NpdGF0aW9ucycgICAgIDogdG9vbF9jaXRh
dGlvbnMsCi0gICAgICAgICAgICAnYmlvc3Rhcl91cmwnICAgOiB0cmFucy5hcHAuY29uZmlnLmJp
b3N0YXJfdXJsLAotICAgICAgICAgICAgJ21lc3NhZ2UnICAgICAgIDogdG9vbF9tZXNzYWdlLAot
ICAgICAgICAgICAgJ3ZlcnNpb25zJyAgICAgIDogdG9vbF92ZXJzaW9ucywKLSAgICAgICAgICAg
ICdyZXF1aXJlbWVudHMnICA6IHRvb2xfcmVxdWlyZW1lbnRzLAotICAgICAgICAgICAgJ2Vycm9y
cycgICAgICAgIDogc3RhdGVfZXJyb3JzCi0gICAgICAgIH0pCi0KLSAgICAgICAgIyBjaGVjayBm
b3IgZXJyb3JzCi0gICAgICAgIGlmICdlcnJvcicgaW4gdG9vbF9tZXNzYWdlOgotICAgICAgICAg
ICAgcmV0dXJuIHRvb2xfbWVzc2FnZQotCi0gICAgICAgICMgcmV0dXJuIGVucmljaGVkIHRvb2wg
bW9kZWwKLSAgICAgICAgcmV0dXJuIHRvb2xfbW9kZWwKLQotICAgIGRlZiBfY29tcGFyZV90b29s
X3ZlcnNpb24oIHNlbGYsIHRyYW5zLCB0b29sLCBqb2IgKToKLSAgICAgICAgIiIiCi0gICAgICAg
IENvbXBhcmVzIGEgdG9vbCB2ZXJzaW9uIHdpdGggdGhlIHRvb2wgdmVyc2lvbiBmcm9tIGEgam9i
IChmcm9tIFRvbz0KbFJ1bm5lcikuCi0gICAgICAgICIiIgotICAgICAgICB0b29sX2lkID0zRCBq
b2IudG9vbF9pZAotICAgICAgICB0b29sX3ZlcnNpb24gPTNEIGpvYi50b29sX3ZlcnNpb24KLSAg
ICAgICAgbWVzc2FnZSA9M0QgJycKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZWN0X2Zp
ZWxkLCB0b29scywgdG9vbCA9M0Qgc2VsZi5hcHAudG9vbGJveC5nZXRfdG9vbF9jb21wb249CmVu
dHMoIHRvb2xfaWQsIHRvb2xfdmVyc2lvbj0zRHRvb2xfdmVyc2lvbiwgZ2V0X2xvYWRlZF90b29s
c19ieV9saW5lYWdlPTNERj0KYWxzZSwgc2V0X3NlbGVjdGVkPTNEVHJ1ZSApCi0gICAgICAgICAg
ICBpZiB0b29sIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgdHJhbnMucmVzcG9uc2Uuc3RhdHVz
ID0zRCA1MDAKLSAgICAgICAgICAgICAgICByZXR1cm4geyAnZXJyb3InOiAnVGhpcyBkYXRhc2V0
IHdhcyBjcmVhdGVkIGJ5IGFuIG9ic29sZXRlPQogdG9vbCAoJXMpLiBDYW5cJ3QgcmUtcnVuLicg
JSB0b29sX2lkIH0KLSAgICAgICAgICAgIGlmICggdG9vbC5pZCAhPTNEIHRvb2xfaWQgYW5kIHRv
b2wub2xkX2lkICE9M0QgdG9vbF9pZCApIG9yIHRvPQpvbC52ZXJzaW9uICE9M0QgdG9vbF92ZXJz
aW9uOgotICAgICAgICAgICAgICAgIGlmIHRvb2wuaWQgPTNEPTNEIHRvb2xfaWQ6Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIHRvb2xfdmVyc2lvbiA9M0Q9M0QgTm9uZToKLSAgICAgICAgICAgICAg
ICAgICAgICAgICMgZm9yIHNvbWUgcmVhc29uIGpvYnMgZG9uJ3QgYWx3YXlzIGtlZXAgdHJhY2sg
b2YgPQp0aGUgdG9vbCB2ZXJzaW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9
M0QgJycKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2UgPTNEICdUaGlzIGpvYiB3YXMgaW5pdGlhbGx5IHJ1biB3aXRoIHRvb2wgPQp2ZXJz
aW9uICIlcyIsIHdoaWNoIGlzIGN1cnJlbnRseSBub3QgYXZhaWxhYmxlLiAgJyAlIHRvb2xfdmVy
c2lvbgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGVuKCB0b29scyApID4gMToKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlICs9M0QgJ1lvdSBjYW4gcmUtcnVuIHRoZSBq
b2Igd2l0aCB0aGUgPQpzZWxlY3RlZCB0b29sIG9yIGNob29zZSBhbm90aGVyIGRlcml2YXRpb24g
b2YgdGhlIHRvb2wuJwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtZXNzYWdlICs9M0QgJ1lvdSBjYW4gcmUtcnVuIHRoZSBqb2Igd2l0
aCB0aGlzPQogdG9vbCB2ZXJzaW9uLCB3aGljaCBpcyBhIGRlcml2YXRpb24gb2YgdGhlIG9yaWdp
bmFsIHRvb2wuJwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGlm
IGxlbiggdG9vbHMgKSA+IDE6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0zRCAn
VGhpcyBqb2Igd2FzIGluaXRpYWxseSBydW4gd2l0aCB0b29sID0KdmVyc2lvbiAiJXMiLCB3aGlj
aCBpcyBjdXJyZW50bHkgbm90IGF2YWlsYWJsZS4gICcgJSB0b29sX3ZlcnNpb24KLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0zRCAnWW91IGNhbiByZS1ydW4gdGhlIGpvYiB3aXRo
IHRoZSBzZWxlPQpjdGVkIHRvb2wgb3IgY2hvb3NlIGFub3RoZXIgZGVyaXZhdGlvbiBvZiB0aGUg
dG9vbC4nCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBtZXNzYWdlID0zRCAnVGhpcyBqb2Igd2FzIGluaXRpYWxseSBydW4gd2l0aCB0b29sID0KaWQg
IiVzIiwgdmVyc2lvbiAiJXMiLCB3aGljaCBpcyAnICUgKCB0b29sX2lkLCB0b29sX3ZlcnNpb24g
KQotICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSArPTNEICdjdXJyZW50bHkgbm90IGF2
YWlsYWJsZS4gIFlvdSBjYW4gcmU9Ci1ydW4gdGhlIGpvYiB3aXRoIHRoaXMgdG9vbCwgd2hpY2gg
aXMgYSBkZXJpdmF0aW9uIG9mIHRoZSBvcmlnaW5hbCB0b29sLicKLSAgICAgICAgZXhjZXB0IEV4
Y2VwdGlvbiwgZXJyb3I6Ci0gICAgICAgICAgICB0cmFucy5yZXNwb25zZS5zdGF0dXMgPTNEIDUw
MAotICAgICAgICAgICAgcmV0dXJuIHsgJ2Vycm9yJzogc3RyIChlcnJvcikgfQotICAgICAgICAg
ICAgICAgPTIwCi0gICAgICAgICMgY2FuJ3QgcmVydW4gdXBsb2FkLCBleHRlcm5hbCBkYXRhIHNv
dXJjZXMsIGV0IGNldGVyYS4gd29ya2Zsb3cgYz0Kb21wYXRpYmxlIHdpbGwgcHJveHkgdGhpcyBm
b3Igbm93Ci0gICAgICAgIGlmIG5vdCB0b29sLmlzX3dvcmtmbG93X2NvbXBhdGlibGU6Ci0gICAg
ICAgICAgICB0cmFucy5yZXNwb25zZS5zdGF0dXMgPTNEIDUwMAotICAgICAgICAgICAgcmV0dXJu
IHsgJ2Vycm9yJzogJ1RoZSBcJyVzXCcgdG9vbCBkb2VzIGN1cnJlbnRseSBub3Qgc3VwcG9ydCA9
CnJlLXJ1bm5pbmcuJyAlIHRvb2wubmFtZSB9Ci0gICAgICAgIHJldHVybiBtZXNzYWdlCgpUaGlz
IGRpZmYgaXMgc28gYmlnIHRoYXQgd2UgbmVlZGVkIHRvIHRydW5jYXRlIHRoZSByZW1haW5kZXIu
CgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvODdm
MWU2Yjk2Zjk0LwpDaGFuZ2VzZXQ6ICAgODdmMWU2Yjk2Zjk0ClVzZXI6ICAgICAgICBjYXJsZmVi
ZXJoYXJkCkRhdGU6ICAgICAgICAyMDE1LTAxLTEyIDE1OjM5OjI3KzAwOjAwClN1bW1hcnk6ICAg
ICBNZXJnZWQgZ2FsYXh5L2dhbGF4eS1jZW50cmFsIGludG8gZGVmYXVsdApBZmZlY3RlZCAjOiAg
MiBmaWxlcwoKZGlmZiAtciA2YThhNzlmOWI2ZDUyYmY5NmUyMmQ5NDc0MGY5YzM3YjQ0NGQ4ZDEy
IC1yIDg3ZjFlNmI5NmY5NGNhZTIwOTUxZmQ3PQpjYTFhY2MzZGYyMDBjODI5OSBlZ2dzLmluaQot
LS0gYS9lZ2dzLmluaQorKysgYi9lZ2dzLmluaQpAQCAtMTUsNyArMTUsNyBAQAogYnhfcHl0aG9u
ID0zRCAwLjcuMgogQ2hlZXRhaCA9M0QgMi4yLjIKIE1hcmt1cFNhZmUgPTNEIDAuMTIKLW1lcmN1
cmlhbCA9M0QgMi4yLjMKK21lcmN1cmlhbCA9M0QgMy4yLjQKIE15U1FMX3B5dGhvbiA9M0QgMS4y
LjNjMQogUHlSb2RzID0zRCAzLjIuNAogbnVtcHkgPTNEIDEuNi4wCgpkaWZmIC1yIDZhOGE3OWY5
YjZkNTJiZjk2ZTIyZDk0NzQwZjljMzdiNDQ0ZDhkMTIgLXIgODdmMWU2Yjk2Zjk0Y2FlMjA5NTFm
ZDc9CmNhMWFjYzNkZjIwMGM4Mjk5IGxpYi90b29sX3NoZWQvdXRpbC9oZ191dGlsLnB5Ci0tLSBh
L2xpYi90b29sX3NoZWQvdXRpbC9oZ191dGlsLnB5CisrKyBiL2xpYi90b29sX3NoZWQvdXRpbC9o
Z191dGlsLnB5CkBAIC0xNiw3ICsxNiw3IEBACiBmcm9tIG1lcmN1cmlhbCBpbXBvcnQgY29tbWFu
ZHMKIGZyb20gbWVyY3VyaWFsIGltcG9ydCBoZwogZnJvbSBtZXJjdXJpYWwgaW1wb3J0IHVpCi1m
cm9tIG1lcmN1cmlhbC5jaGFuZ2Vncm91cCBpbXBvcnQgcmVhZGJ1bmRsZQorZnJvbSBtZXJjdXJp
YWwuZXhjaGFuZ2UgaW1wb3J0IHJlYWRidW5kbGUKIGZyb20gbWVyY3VyaWFsLmNoYW5nZWdyb3Vw
IGltcG9ydCByZWFkZXhhY3RseQo9MjAKIGZyb20gdG9vbF9zaGVkLnV0aWwgaW1wb3J0IGJhc2lj
X3V0aWwKQEAgLTI2LDcgKzI2LDcgQEAKIElOSVRJQUxfQ0hBTkdFTE9HX0hBU0ggPTNEICcwMDAw
MDAwMDAwMDAnCj0yMAogZGVmIGFkZF9jaGFuZ2VzZXQoIHJlcG9fdWksIHJlcG8sIHBhdGhfdG9f
ZmlsZW5hbWVfaW5fYXJjaGl2ZSApOgotICAgIGNvbW1hbmRzLmFkZCggcmVwb191aSwgcmVwbywg
cGF0aF90b19maWxlbmFtZV9pbl9hcmNoaXZlICkKKyAgICBjb21tYW5kcy5hZGQoIHJlcG9fdWks
IHJlcG8sIHN0ciggcGF0aF90b19maWxlbmFtZV9pbl9hcmNoaXZlICkgKQo9MjAKIGRlZiBhcmNo
aXZlX3JlcG9zaXRvcnlfcmV2aXNpb24oIGFwcCwgcmVwb3NpdG9yeSwgYXJjaGl2ZV9kaXIsIGNo
YW5nZXNldF9yPQpldmlzaW9uICk6CiAgICAgJycnQ3JlYXRlIGFuIHVuLXZlcnNpb25lZCBhcmNo
aXZlIG9mIGEgcmVwb3NpdG9yeS4nJycKQEAgLTQ5LDcgKzQ5LDcgQEAKICAgICBjb21tYW5kIGxp
bmUpIHRvIGEganNvbiBvYmplY3QuCiAgICAgIiIiCiAgICAgIyBTZWUgaHR0cDovL3d3dy53c3Rl
aW4ub3JnL2hvbWUvd3N0ZWluL3d3dy9ob21lL3dhcy9wYXRjaGVzL2hnX2pzb24KLSAgICBoZ191
bmJ1bmRsZTEwX29iaiA9M0QgcmVhZGJ1bmRsZSggZmgsIE5vbmUgKQorICAgIGhnX3VuYnVuZGxl
MTBfb2JqID0zRCByZWFkYnVuZGxlKCBOb25lLCBmaCwgTm9uZSApCiAgICAgZ3JvdXBzID0zRCBb
IGdyb3VwIGZvciBncm91cCBpbiB1bnBhY2tfZ3JvdXBzKCBoZ191bmJ1bmRsZTEwX29iaiApIF0K
ICAgICByZXR1cm4ganNvbi5kdW1wcyggZ3JvdXBzLCBpbmRlbnQ9M0Q0ICkKPTIwCgoKaHR0cHM6
Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzY5Yzc0YmM5OTYy
NS8KQ2hhbmdlc2V0OiAgIDY5Yzc0YmM5OTYyNQpVc2VyOiAgICAgICAgY2FybGZlYmVyaGFyZApE
YXRlOiAgICAgICAgMjAxNS0wMS0xMiAxNTo1MTowMCswMDowMApTdW1tYXJ5OiAgICAgTW92ZSBw
YXJhbSBwYXJzaW5nIGRvd24gaW50byBiYXNlIGNvbnRyb2xsZXJzLCBub3JtYWxpemUgbWFuYWc9
CmVyIG9iamVjdCBuYW1lcyBpbiBhcGkgYW5kIHdlYiBjb250cm9sbGVycwpBZmZlY3RlZCAjOiAg
MjEgZmlsZXMKCmRpZmYgLXIgODdmMWU2Yjk2Zjk0Y2FlMjA5NTFmZDdjYTFhY2MzZGYyMDBjODI5
OSAtciA2OWM3NGJjOTk2MjVlMzYzYmVjYWQwOD0KYjhmOWM1NWMyMzg0NDk3NTAgbGliL2dhbGF4
eS9tYW5hZ2Vycy9oZGFzLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvaGRhcy5weQorKysg
Yi9saWIvZ2FsYXh5L21hbmFnZXJzL2hkYXMucHkKQEAgLTI1MSw0NCArMjUxLDYgQEAKICAgICAg
ICAgICAgICAgICBkYXRhc2V0X2RhdGEgPTNEIE5vbmUKICAgICAgICAgcmV0dXJuIHRydW5jYXRl
ZCwgZGF0YXNldF9kYXRhCj0yMAotICAgICNkZWYgZ2V0X2RhdGFzZXQoIHNlbGYsIHRyYW5zLCBk
YXRhc2V0X2lkLCBjaGVja19vd25lcnNoaXA9M0RUcnVlLCBjaGU9CmNrX2FjY2Vzc2libGU9M0RG
YWxzZSwgY2hlY2tfc3RhdGU9M0RUcnVlICk6Ci0gICAgIyAgICAiIiIKLSAgICAjICAgIEdldCBh
biBIREEgb2JqZWN0IGJ5IGlkIHBlcmZvcm1pbmcgc2VjdXJpdHkgY2hlY2tzIHVzaW5nCi0gICAg
IyAgICB0aGUgY3VycmVudCB0cmFuc2FjdGlvbi4KLSAgICAjICAgICIiIgotICAgICMgICAgdHJ5
OgotICAgICMgICAgICAgIGRhdGFzZXRfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmRlY29kZV9pZCgg
ZGF0YXNldF9pZCApCi0gICAgIyAgICBleGNlcHQgKCBBdHRyaWJ1dGVFcnJvciwgVHlwZUVycm9y
ICk6Ci0gICAgIyAgICAgICAgIyBERVBSRUNBVElPTjogV2Ugc3RpbGwgc3VwcG9ydCB1bmVuY29k
ZWQgaWRzIGZvciBiYWNrd2FyZCBjbz0KbXBhdGliaWxpdHkKLSAgICAjICAgICAgICB0cnk6Ci0g
ICAgIyAgICAgICAgICAgIGRhdGFzZXRfaWQgPTNEIGludCggZGF0YXNldF9pZCApCi0gICAgIyAg
ICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgIyAgICAgICAgICAgIHJhaXNlIEhUVFBCYWRS
ZXF1ZXN0KCAiSW52YWxpZCBkYXRhc2V0IGlkOiAlcy4iICUgc3RyKCBkYT0KdGFzZXRfaWQgKSAp
Ci0gICAgIwotICAgICMgICAgdHJ5OgotICAgICMgICAgICAgIGRhdGEgPTNEIHRyYW5zLnNhX3Nl
c3Npb24ucXVlcnkoIHRyYW5zLmFwcC5tb2RlbC5IaXN0b3J5RGF0YXM9CmV0QXNzb2NpYXRpb24g
KS5nZXQoIGludCggZGF0YXNldF9pZCApICkKLSAgICAjICAgIGV4Y2VwdDoKLSAgICAjICAgICAg
ICByYWlzZSBIVFRQUmVxdWVzdFJhbmdlTm90U2F0aXNmaWFibGUoICJJbnZhbGlkIGRhdGFzZXQg
aWQ6ICVzPQouIiAlIHN0ciggZGF0YXNldF9pZCApICkKLSAgICAjCi0gICAgIyAgICBpZiBjaGVj
a19vd25lcnNoaXA6Ci0gICAgIyAgICAgICAgIyBWZXJpZnkgb3duZXJzaGlwLgotICAgICMgICAg
ICAgIHVzZXIgPTNEIHRyYW5zLmdldF91c2VyKCkKLSAgICAjICAgICAgICBpZiBub3QgdXNlcjoK
LSAgICAjICAgICAgICAgICAgZXJyb3IoICJNdXN0IGJlIGxvZ2dlZCBpbiB0byBtYW5hZ2UgR2Fs
YXh5IGl0ZW1zIiApCi0gICAgIyAgICAgICAgaWYgZGF0YS5oaXN0b3J5LnVzZXIgIT0zRCB1c2Vy
OgotICAgICMgICAgICAgICAgICBlcnJvciggIiVzIGlzIG5vdCBvd25lZCBieSBjdXJyZW50IHVz
ZXIiICUgZGF0YS5fX2NsYXNzX189Ci5fX25hbWVfXyApCi0gICAgIwotICAgICMgICAgaWYgY2hl
Y2tfYWNjZXNzaWJsZToKLSAgICAjICAgICAgICBjdXJyZW50X3VzZXJfcm9sZXMgPTNEIHRyYW5z
LmdldF9jdXJyZW50X3VzZXJfcm9sZXMoKQotICAgICMKLSAgICAjICAgICAgICBpZiBub3QgdHJh
bnMuYXBwLnNlY3VyaXR5X2FnZW50LmNhbl9hY2Nlc3NfZGF0YXNldCggY3VycmVudF91PQpzZXJf
cm9sZXMsIGRhdGEuZGF0YXNldCApOgotICAgICMgICAgICAgICAgICBlcnJvciggIllvdSBhcmUg
bm90IGFsbG93ZWQgdG8gYWNjZXNzIHRoaXMgZGF0YXNldCIgKQotICAgICMKLSAgICAjICAgICAg
ICBpZiBjaGVja19zdGF0ZSBhbmQgZGF0YS5zdGF0ZSA9M0Q9M0QgdHJhbnMubW9kZWwuRGF0YXNl
dC5zdGF0PQplcy5VUExPQUQ6Ci0gICAgIyAgICAgICAgICAgIHJldHVybiB0cmFucy5zaG93X2Vy
cm9yX21lc3NhZ2UoICJQbGVhc2Ugd2FpdCB1bnRpbCB0aGlzID0KZGF0YXNldCBmaW5pc2hlcyB1
cGxvYWRpbmcgIgotICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICsgImJlZm9yZSBhdHRlbXB0aW5nIHQ9Cm8gdmlldyBpdC4iICkKLSAgICAjICAgIHJl
dHVybiBkYXRhCi0KICAgICAjIHRoaXMgaXMgYSB3ZWlyZCBzeW50YXggYW5kIHJldHVybiB2YWwK
ICAgICBkZWYgZGF0YV9jb252ZXJzaW9uX3N0YXR1cyggc2VsZiwgdHJhbnMsIGhkYSApOgogICAg
ICAgICAiIiIKQEAgLTMyMiw2ICsyODQsNyBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
VHJ1ZQogICAgICAgICByZXR1cm4gRmFsc2UKPTIwCisKICMgPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECiBjbGFzcyBIREFT
ZXJpYWxpemVyKCBiYXNlLk1vZGVsU2VyaWFsaXplciApOgogICAgICNUT0RPOiBpbmhlcml0IGZy
b20gZGF0YXNldHMuRGF0YXNldEFzc29jaWF0aW9uU2VyaWFsaXplcgoKZGlmZiAtciA4N2YxZTZi
OTZmOTRjYWUyMDk1MWZkN2NhMWFjYzNkZjIwMGM4Mjk5IC1yIDY5Yzc0YmM5OTYyNWUzNjNiZWNh
ZDA4PQpiOGY5YzU1YzIzODQ0OTc1MCBsaWIvZ2FsYXh5L21hbmFnZXJzL3NoYXJhYmxlLnB5Ci0t
LSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvc2hhcmFibGUucHkKKysrIGIvbGliL2dhbGF4eS9tYW5h
Z2Vycy9zaGFyYWJsZS5weQpAQCAtMzQwLDYgKzM0MCwxMyBAQAogICAgICMgICB1c2VyL3VzZXJf
aWQKICAgICAjICAgdXNlcl9zaGFyZXM/CiAgICAgIyAgIHVzZXJuYW1lX2FuZF9zbHVnPworICAg
ICNkZWYgZ2V0X25hbWVfYW5kX2xpbmtfYXN5bmMoIHNlbGYsIHRyYW5zLCBpZD0zRE5vbmUgKToK
KyAgICAjZGVmIHB1Ymxpc2hlZF91cmwoIHNlbGYsIHRyYW5zLCBpdGVtLCBrZXkgKToKKyAgICAj
ICAgICIiIgorICAgICMgICAgIiIiCisgICAgIyAgICB1cmwgPTNEIHVybF9mb3IoY29udHJvbGxl
cj0zRCdoaXN0b3J5JywgYWN0aW9uPTNEImRpc3BsYXlfYnlfdXNlcj0KbmFtZV9hbmRfc2x1ZyIs
CisgICAgIyAgICAgICAgdXNlcm5hbWU9M0RpdGVtLnVzZXIudXNlcm5hbWUsIHNsdWc9M0RpdGVt
LnNsdWcgKQorICAgICMgICAgcmV0dXJuIHVybAo9MjAKPTIwCiAjID0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0K
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRAoKZGlmZiAt
ciA4N2YxZTZiOTZmOTRjYWUyMDk1MWZkN2NhMWFjYzNkZjIwMGM4Mjk5IC1yIDY5Yzc0YmM5OTYy
NWUzNjNiZWNhZDA4PQpiOGY5YzU1YzIzODQ0OTc1MCBsaWIvZ2FsYXh5L21hbmFnZXJzL3VzZXJz
LnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvdXNlcnMucHkKKysrIGIvbGliL2dhbGF4eS9t
YW5hZ2Vycy91c2Vycy5weQpAQCAtMzAsNyArMzAsNiBAQAogICAgICNUT0RPOiBpbmNvcnAgQ3Jl
YXRlc1VzZXJzTWl4aW4KICAgICAjVE9ETzogaW5jb3JwIENyZWF0ZXNBcGlLZXlzTWl4aW4KPTIw
Ci0KICAgICBkZWYgY3JlYXRlKCBzZWxmLCB0cmFucywgKiprd2FyZ3MgKToKICAgICAgICAgIiIi
CiAgICAgICAgIENyZWF0ZSBhIG5ldyB1c2VyLgoKZGlmZiAtciA4N2YxZTZiOTZmOTRjYWUyMDk1
MWZkN2NhMWFjYzNkZjIwMGM4Mjk5IC1yIDY5Yzc0YmM5OTYyNWUzNjNiZWNhZDA4PQpiOGY5YzU1
YzIzODQ0OTc1MCBsaWIvZ2FsYXh5L3dlYi9iYXNlL2NvbnRyb2xsZXIucHkKLS0tIGEvbGliL2dh
bGF4eS93ZWIvYmFzZS9jb250cm9sbGVyLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViL2Jhc2UvY29u
dHJvbGxlci5weQpAQCAtOTksNiArOTksMTMgQEAKICAgICBkZWYgZ2V0X3JvbGUoIHNlbGYsIHRy
YW5zLCBpZCwgY2hlY2tfb3duZXJzaGlwPTNERmFsc2UsIGNoZWNrX2FjY2Vzc2liPQpsZT0zREZh
bHNlLCBkZWxldGVkPTNETm9uZSApOgogICAgICAgICByZXR1cm4gc2VsZi5nZXRfb2JqZWN0KCB0
cmFucywgaWQsICdSb2xlJywgY2hlY2tfb3duZXJzaGlwPTNERmFsc2U9CiwgY2hlY2tfYWNjZXNz
aWJsZT0zREZhbHNlLCBkZWxldGVkPTNEZGVsZXRlZCApCj0yMAorICAgIGRlZiBkZWNvZGVfaWQo
IHNlbGYsIGlkICk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmFwcC5z
ZWN1cml0eS5kZWNvZGVfaWQoIGlkICkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgbXNn
ID0zRCAiTWFsZm9ybWVkIEhpc3RvcnkgaWQgKCAlcyApIHNwZWNpZmllZCwgdW5hYmxlIHRvIGRl
Y289CmRlIiAlICggc3RyKCBpZCApICkKKyAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuTWFs
Zm9ybWVkSWQoIG1zZywgaWQ9M0RzdHIoIGlkICkgKQorCiAgICAgZGVmIGVuY29kZV9hbGxfaWRz
KCBzZWxmLCB0cmFucywgcnZhbCwgcmVjdXJzaXZlPTNERmFsc2UgKToKICAgICAgICAgIiIiCiAg
ICAgICAgIEVuY29kZXMgYWxsIGludGVnZXIgdmFsdWVzIGluIHRoZSBkaWN0IHJ2YWwgd2hvc2Ug
a2V5cyBhcmUgJ2lkJyBvcj0KIGVuZCB3aXRoICdfaWQnCkBAIC0xNzQsNiArMTgxLDEzIEBACiAg
ICAgZGVmIG5vdF9pbXBsZW1lbnRlZCggc2VsZiwgdHJhbnMsICoqa3dkICk6CiAgICAgICAgIHJh
aXNlIEhUVFBOb3RJbXBsZW1lbnRlZCgpCj0yMAorICAgIGRlZiBfcGFyc2Vfc2VyaWFsaXphdGlv
bl9wYXJhbXMoIHNlbGYsIGt3ZCwgZGVmYXVsdF92aWV3ICk6CisgICAgICAgIHZpZXcgPTNEIGt3
ZC5nZXQoICd2aWV3JywgTm9uZSApCisgICAgICAgIGtleXMgPTNEIGt3ZC5nZXQoICdrZXlzJyAp
CisgICAgICAgIGlmIGlzaW5zdGFuY2UoIGtleXMsIGJhc2VzdHJpbmcgKToKKyAgICAgICAgICAg
IGtleXMgPTNEIGtleXMuc3BsaXQoICcsJyApCisgICAgICAgIHJldHVybiBkaWN0KCB2aWV3PTNE
dmlldywga2V5cz0zRGtleXMsIGRlZmF1bHRfdmlldz0zRGRlZmF1bHRfdmlldz0KICkKKwo9MjAK
IGNsYXNzIERhdGF0eXBlKCBvYmplY3QgKToKICAgICAiIiJVc2VkIGZvciBzdG9yaW5nIGluLW1l
bW9yeSBsaXN0IG9mIGRhdGF0eXBlcyBjdXJyZW50bHkgaW4gdGhlIGRhdGF0PQp5cGVzIHJlZ2lz
dHJ5LiIiIgoKZGlmZiAtciA4N2YxZTZiOTZmOTRjYWUyMDk1MWZkN2NhMWFjYzNkZjIwMGM4Mjk5
IC1yIDY5Yzc0YmM5OTYyNWUzNjNiZWNhZDA4PQpiOGY5YzU1YzIzODQ0OTc1MCBsaWIvZ2FsYXh5
L3dlYmFwcHMvZ2FsYXh5L2FwaS9hbm5vdGF0aW9ucy5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFw
cHMvZ2FsYXh5L2FwaS9hbm5vdGF0aW9ucy5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2Fs
YXh5L2FwaS9hbm5vdGF0aW9ucy5weQpAQCAtNTgsNyArNTgsNyBAQAogICAgICAgICBzZWxmLmhp
c3RvcnlfbWFuYWdlciA9M0QgbWFuYWdlcnMuaGlzdG9yaWVzLkhpc3RvcnlNYW5hZ2VyKCBhcHAg
KQo9MjAKICAgICBkZWYgX2dldF9pdGVtX2Zyb21faWQoc2VsZiwgdHJhbnMsIGlkc3RyKToKLSAg
ICAgICAgZGVjb2RlZF9pZHN0ciA9M0QgdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBpZHN0ciAp
CisgICAgICAgIGRlY29kZWRfaWRzdHIgPTNEIHNlbGYuZGVjb2RlX2lkKCBpZHN0ciApCiAgICAg
ICAgIGhpc3RvcnkgPTNEIHNlbGYuaGlzdG9yeV9tYW5hZ2VyLmFjY2Vzc2libGVfYnlfaWQoIHRy
YW5zLCBkZWNvZGVkXz0KaWRzdHIsIHRyYW5zLnVzZXIgKQogICAgICAgICByZXR1cm4gaGlzdG9y
eQo9MjAKQEAgLTcyLDcgKzcyLDcgQEAKICAgICAgICAgc2VsZi5oZGFfbWFuYWdlciA9M0QgbWFu
YWdlcnMuaGRhcy5IREFNYW5hZ2VyKCBhcHAgKQo9MjAKICAgICBkZWYgX2dldF9pdGVtX2Zyb21f
aWQoc2VsZiwgdHJhbnMsIGlkc3RyKToKLSAgICAgICAgZGVjb2RlZF9pZHN0ciA9M0QgdHJhbnMu
c2VjdXJpdHkuZGVjb2RlX2lkKCBpZHN0ciApCisgICAgICAgIGRlY29kZWRfaWRzdHIgPTNEIHNl
bGYuZGVjb2RlX2lkKCBpZHN0ciApCiAgICAgICAgIGhkYSA9M0Qgc2VsZi5oZGFfbWFuYWdlci5h
Y2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgZGVjb2RlZF9pZHN0ciwgdD0KcmFucy51c2VyICkKICAg
ICAgICAgaGRhID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmVycm9yX2lmX3VwbG9hZGluZyggdHJhbnMs
IGhkYSApCiAgICAgICAgIHJldHVybiBoZGEKCmRpZmYgLXIgODdmMWU2Yjk2Zjk0Y2FlMjA5NTFm
ZDdjYTFhY2MzZGYyMDBjODI5OSAtciA2OWM3NGJjOTk2MjVlMzYzYmVjYWQwOD0KYjhmOWM1NWMy
Mzg0NDk3NTAgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvZGF0YXNldF9jb2xsZWN0aW9u
cy5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9kYXRhc2V0X2NvbGxlY3Rp
b25zLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2RhdGFzZXRfY29sbGVj
dGlvbnMucHkKQEAgLTQ0LDcgKzQ0LDcgQEAKICAgICAgICAgaW5zdGFuY2VfdHlwZSA9M0QgcGF5
bG9hZC5wb3AoICJpbnN0YW5jZV90eXBlIiwgImhpc3RvcnkiICkKICAgICAgICAgaWYgaW5zdGFu
Y2VfdHlwZSA9M0Q9M0QgImhpc3RvcnkiOgogICAgICAgICAgICAgaGlzdG9yeV9pZCA9M0QgcGF5
bG9hZC5nZXQoICdoaXN0b3J5X2lkJyApCi0gICAgICAgICAgICBoaXN0b3J5X2lkID0zRCB0cmFu
cy5zZWN1cml0eS5kZWNvZGVfaWQoIGhpc3RvcnlfaWQgKQorICAgICAgICAgICAgaGlzdG9yeV9p
ZCA9M0Qgc2VsZi5kZWNvZGVfaWQoIGhpc3RvcnlfaWQgKQogICAgICAgICAgICAgaGlzdG9yeSA9
M0Qgc2VsZi5oaXN0b3J5X21hbmFnZXIub3duZWRfYnlfaWQoIHRyYW5zLCBoaXN0b3J5X2k9CmQs
IHRyYW5zLnVzZXIgKQogICAgICAgICAgICAgY3JlYXRlX3BhcmFtc1sgInBhcmVudCIgXSA9M0Qg
aGlzdG9yeQogICAgICAgICBlbGlmIGluc3RhbmNlX3R5cGUgPTNEPTNEICJsaWJyYXJ5IjoKCmRp
ZmYgLXIgODdmMWU2Yjk2Zjk0Y2FlMjA5NTFmZDdjYTFhY2MzZGYyMDBjODI5OSAtciA2OWM3NGJj
OTk2MjVlMzYzYmVjYWQwOD0KYjhmOWM1NWMyMzg0NDk3NTAgbGliL2dhbGF4eS93ZWJhcHBzL2dh
bGF4eS9hcGkvZGF0YXNldHMucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkv
ZGF0YXNldHMucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvZGF0YXNldHMu
cHkKQEAgLTIyLDEwICsyMiw3IEBACj0yMAogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6
CiAgICAgICAgIHN1cGVyKCBEYXRhc2V0c0NvbnRyb2xsZXIsIHNlbGYgKS5fX2luaXRfXyggYXBw
ICkKLSAgICAgICAgc2VsZi5tZ3JzID0zRCB1dGlsLmJ1bmNoLkJ1bmNoKAotICAgICAgICAgICAg
aGlzdG9yaWVzPTNEbWFuYWdlcnMuaGlzdG9yaWVzLkhpc3RvcnlNYW5hZ2VyKCBhcHAgKSwKLSAg
ICAgICAgICAgIGhkYXM9M0RtYW5hZ2Vycy5oZGFzLkhEQU1hbmFnZXIoIGFwcCApCi0gICAgICAg
ICkKKyAgICAgICAgc2VsZi5oZGFfbWFuYWdlciA9M0QgbWFuYWdlcnMuaGRhcy5IREFNYW5hZ2Vy
KCBhcHAgKQogICAgICAgICBzZWxmLmhkYV9zZXJpYWxpemVyID0zRCBtYW5hZ2Vycy5oZGFzLkhE
QVNlcmlhbGl6ZXIoIHNlbGYuYXBwICkKPTIwCiAgICAgQHdlYi5leHBvc2VfYXBpCkBAIC04Myw3
ICs4MCw3IEBACiAgICAgICAgICIiIgogICAgICAgICBSZXR1cm5zIHN0YXRlIG9mIGRhdGFzZXQu
CiAgICAgICAgICIiIgotICAgICAgICBtc2cgPTNEIHNlbGYubWdycy5oZGFzLmRhdGFfY29udmVy
c2lvbl9zdGF0dXMoIHRyYW5zLCBkYXRhc2V0ICkKKyAgICAgICAgbXNnID0zRCBzZWxmLmhkYV9t
YW5hZ2VyLmRhdGFfY29udmVyc2lvbl9zdGF0dXMoIHRyYW5zLCBkYXRhc2V0ICkKICAgICAgICAg
aWYgbm90IG1zZzoKICAgICAgICAgICAgIG1zZyA9M0QgZGF0YXNldC5jb252ZXJzaW9uX21lc3Nh
Z2VzLkRBVEEKPTIwCkBAIC05NCw3ICs5MSw3IEBACiAgICAgICAgIEluaXQtbGlrZSBtZXRob2Qg
dGhhdCByZXR1cm5zIHN0YXRlIG9mIGRhdGFzZXQncyBjb252ZXJ0ZWQgZGF0YXNldD0Kcy4KICAg
ICAgICAgUmV0dXJucyB2YWxpZCBjaHJvbXMgZm9yIHRoYXQgZGF0YXNldCBhcyB3ZWxsLgogICAg
ICAgICAiIiIKLSAgICAgICAgbXNnID0zRCBzZWxmLm1ncnMuaGRhcy5kYXRhX2NvbnZlcnNpb25f
c3RhdHVzKCB0cmFucywgZGF0YXNldCApCisgICAgICAgIG1zZyA9M0Qgc2VsZi5oZGFfbWFuYWdl
ci5kYXRhX2NvbnZlcnNpb25fc3RhdHVzKCB0cmFucywgZGF0YXNldCApCiAgICAgICAgIGlmIG1z
ZzoKICAgICAgICAgICAgIHJldHVybiBtc2cKPTIwCkBAIC0xNDMsNyArMTQwLDcgQEAKICAgICAg
ICAgICAgIHJldHVybiBkYXRhc2V0LmNvbnZlcnNpb25fbWVzc2FnZXMuTk9fREFUQQo9MjAKICAg
ICAgICAgIyBEYXRhc2V0IGNoZWNrLgotICAgICAgICBtc2cgPTNEIHNlbGYubWdycy5oZGFzLmRh
dGFfY29udmVyc2lvbl9zdGF0dXMoIHRyYW5zLCBkYXRhc2V0ICkKKyAgICAgICAgbXNnID0zRCBz
ZWxmLmhkYV9tYW5hZ2VyLmRhdGFfY29udmVyc2lvbl9zdGF0dXMoIHRyYW5zLCBkYXRhc2V0ICkK
ICAgICAgICAgaWYgbXNnOgogICAgICAgICAgICAgcmV0dXJuIG1zZwo9MjAKQEAgLTIzNiw3ICsy
MzMsNyBAQAogICAgICAgICBiZSBzbG93IGJlY2F1c2UgaW5kZXhlcyBuZWVkIHRvIGJlIGNyZWF0
ZWQuCiAgICAgICAgICIiIgogICAgICAgICAjIERhdGFzZXQgY2hlY2suCi0gICAgICAgIG1zZyA9
M0Qgc2VsZi5tZ3JzLmhkYXMuZGF0YV9jb252ZXJzaW9uX3N0YXR1cyggdHJhbnMsIGRhdGFzZXQg
KQorICAgICAgICBtc2cgPTNEIHNlbGYuaGRhX21hbmFnZXIuZGF0YV9jb252ZXJzaW9uX3N0YXR1
cyggdHJhbnMsIGRhdGFzZXQgKQogICAgICAgICBpZiBtc2c6CiAgICAgICAgICAgICByZXR1cm4g
bXNnCj0yMApAQCAtMjc4LDEyICsyNzUsMTIgQEAKICAgICAgICAgc29tZSBwb2ludCBpbiB0aGUg
ZnV0dXJlIHdpdGhvdXQgd2FybmluZy4gR2VuZXJhbGx5LCBkYXRhIHNob3VsZCBiPQplIHByb2Nl
c3NlZCBieSBpdHMKICAgICAgICAgZGF0YXR5cGUgcHJpb3IgdG8gZGlzcGxheSAodGhlIGRlZnVs
dCBpZiByYXcgaXMgdW5zcGVjaWZpZWQgb3IgZXhwPQpsaWNpdGx5IGZhbHNlLgogICAgICAgICAi
IiIKLSAgICAgICAgZGVjb2RlZF9jb250ZW50X2lkID0zRCB0cmFucy5zZWN1cml0eS5kZWNvZGVf
aWQoIGhpc3RvcnlfY29udGVudF9pPQpkICkKKyAgICAgICAgZGVjb2RlZF9jb250ZW50X2lkID0z
RCBzZWxmLmRlY29kZV9pZCggaGlzdG9yeV9jb250ZW50X2lkICkKICAgICAgICAgcmF3ID0zRCB1
dGlsLnN0cmluZ19hc19ib29sX29yX25vbmUoIHJhdyApCj0yMAogICAgICAgICBydmFsID0zRCAn
JwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBoZGEgPTNEIHNlbGYubWdycy5oZGFzLmFjY2Vz
c2libGVfYnlfaWQoIHRyYW5zLCBkZWNvZGVkX2NvbnRlbj0KdF9pZCwgdHJhbnMudXNlciApCisg
ICAgICAgICAgICBoZGEgPTNEIHNlbGYuaGRhX21hbmFnZXIuYWNjZXNzaWJsZV9ieV9pZCggdHJh
bnMsIGRlY29kZWRfY29udD0KZW50X2lkLCB0cmFucy51c2VyICkKPTIwCiAgICAgICAgICAgICBp
ZiByYXc6CiAgICAgICAgICAgICAgICAgaWYgZmlsZW5hbWUgYW5kIGZpbGVuYW1lICE9M0QgJ2lu
ZGV4JzoKCmRpZmYgLXIgODdmMWU2Yjk2Zjk0Y2FlMjA5NTFmZDdjYTFhY2MzZGYyMDBjODI5OSAt
ciA2OWM3NGJjOTk2MjVlMzYzYmVjYWQwOD0KYjhmOWM1NWMyMzg0NDk3NTAgbGliL2dhbGF4eS93
ZWJhcHBzL2dhbGF4eS9hcGkvZXh0ZW5kZWRfbWV0YWRhdGEucHkKLS0tIGEvbGliL2dhbGF4eS93
ZWJhcHBzL2dhbGF4eS9hcGkvZXh0ZW5kZWRfbWV0YWRhdGEucHkKKysrIGIvbGliL2dhbGF4eS93
ZWJhcHBzL2dhbGF4eS9hcGkvZXh0ZW5kZWRfbWV0YWRhdGEucHkKQEAgLTY5LDcgKzY5LDcgQEAK
ICAgICAgICAgc2VsZi5oZGFfbWFuYWdlciA9M0QgbWFuYWdlcnMuaGRhcy5IREFNYW5hZ2VyKCBh
cHAgKQo9MjAKICAgICBkZWYgX2dldF9pdGVtX2Zyb21faWQoc2VsZiwgdHJhbnMsIGlkc3RyLCBj
aGVja193cml0YWJsZT0zRFRydWUpOgotICAgICAgICBkZWNvZGVkX2lkc3RyID0zRCB0cmFucy5z
ZWN1cml0eS5kZWNvZGVfaWQoIGlkc3RyICkKKyAgICAgICAgZGVjb2RlZF9pZHN0ciA9M0Qgc2Vs
Zi5kZWNvZGVfaWQoIGlkc3RyICkKICAgICAgICAgaWYgY2hlY2tfd3JpdGFibGU6CiAgICAgICAg
ICAgICByZXR1cm4gc2VsZi5oZGFfbWFuYWdlci5vd25lZF9ieV9pZCggdHJhbnMsIGRlY29kZWRf
aWRzdHIsIHRyYT0KbnMudXNlciApCiAgICAgICAgIGVsc2U6CgpkaWZmIC1yIDg3ZjFlNmI5NmY5
NGNhZTIwOTUxZmQ3Y2ExYWNjM2RmMjAwYzgyOTkgLXIgNjljNzRiYzk5NjI1ZTM2M2JlY2FkMDg9
CmI4ZjljNTVjMjM4NDQ5NzUwIGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2ZvbGRlcl9j
b250ZW50cy5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9mb2xkZXJfY29u
dGVudHMucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvZm9sZGVyX2NvbnRl
bnRzLnB5CkBAIC0yNjcsNyArMjY3LDcgQEAKICAgICAgICAgICAgIGxkZGFfbWVzc2FnZSA9M0Qg
dXRpbC5zYW5pdGl6ZV9odG1sLnNhbml0aXplX2h0bWwoIGxkZGFfbWVzc2FnPQplLCAndXRmLTgn
ICkKICAgICAgICAgcnZhbCA9M0Qge30KICAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGVjb2Rl
ZF9oZGFfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmRlY29kZV9pZCggZnJvbV9oZGFfaWQgKQorICAg
ICAgICAgICAgZGVjb2RlZF9oZGFfaWQgPTNEIHNlbGYuZGVjb2RlX2lkKCBmcm9tX2hkYV9pZCAp
CiAgICAgICAgICAgICBoZGEgPTNEIHNlbGYuaGRhX21hbmFnZXIub3duZWRfYnlfaWQoIHRyYW5z
LCBkZWNvZGVkX2hkYV9pZCwgdD0KcmFucy51c2VyICkKICAgICAgICAgICAgIGhkYSA9M0Qgc2Vs
Zi5oZGFfbWFuYWdlci5lcnJvcl9pZl91cGxvYWRpbmcoIHRyYW5zLCBoZGEgKQogICAgICAgICAg
ICAgZm9sZGVyID0zRCBzZWxmLmdldF9saWJyYXJ5X2ZvbGRlciggdHJhbnMsIGVuY29kZWRfZm9s
ZGVyX2lkXzE9CjYsIGNoZWNrX2FjY2Vzc2libGU9M0RUcnVlICkKCmRpZmYgLXIgODdmMWU2Yjk2
Zjk0Y2FlMjA5NTFmZDdjYTFhY2MzZGYyMDBjODI5OSAtciA2OWM3NGJjOTk2MjVlMzYzYmVjYWQw
OD0KYjhmOWM1NWMyMzg0NDk3NTAgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvaGlzdG9y
aWVzLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2hpc3Rvcmllcy5weQor
KysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9oaXN0b3JpZXMucHkKQEAgLTMyLDI2
ICszMiwxMCBAQAogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CiAgICAgICAgIHN1cGVy
KCBIaXN0b3JpZXNDb250cm9sbGVyLCBzZWxmICkuX19pbml0X18oIGFwcCApCiAgICAgICAgIHNl
bGYuY2l0YXRpb25zX21hbmFnZXIgPTNEIGNpdGF0aW9ucy5DaXRhdGlvbnNNYW5hZ2VyKCBhcHAg
KQotICAgICAgICBzZWxmLm1ncnMgPTNEIHV0aWwuYnVuY2guQnVuY2goCi0gICAgICAgICAgICBo
aXN0b3JpZXM9M0RoaXN0b3JpZXMuSGlzdG9yeU1hbmFnZXIoIGFwcCApCi0gICAgICAgICkKKyAg
ICAgICAgc2VsZi5oaXN0b3J5X21hbmFnZXIgPTNEIGhpc3Rvcmllcy5IaXN0b3J5TWFuYWdlcigg
YXBwICkKICAgICAgICAgc2VsZi5oaXN0b3J5X3NlcmlhbGl6ZXIgPTNEIGhpc3Rvcmllcy5IaXN0
b3J5U2VyaWFsaXplciggYXBwICkKICAgICAgICAgc2VsZi5oaXN0b3J5X2Rlc2VyaWFsaXplciA9
M0QgaGlzdG9yaWVzLkhpc3RvcnlEZXNlcmlhbGl6ZXIoIGFwcCApCj0yMAotICAgIGRlZiBfZGVj
b2RlX2lkKCBzZWxmLCB0cmFucywgaWQgKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0
dXJuIHRyYW5zLnNlY3VyaXR5LmRlY29kZV9pZCggaWQgKQotICAgICAgICBleGNlcHQ6Ci0gICAg
ICAgICAgICByYWlzZSBleGNlcHRpb25zLk1hbGZvcm1lZElkKCAiTWFsZm9ybWVkIEhpc3Rvcnkg
aWQgKCAlcyApIHNwZT0KY2lmaWVkLCB1bmFibGUgdG8gZGVjb2RlIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoIHN0ciggaWQgKSApLCB0eXBlPTNEJ2Vycm9y
JyApCi0KLSAgICBkZWYgX3BhcnNlX3NlcmlhbGl6YXRpb25fcGFyYW1zKCBzZWxmLCBrd2QsIGRl
ZmF1bHRfdmlldyApOgotICAgICAgICB2aWV3ID0zRCBrd2QuZ2V0KCAndmlldycsIE5vbmUgKQot
ICAgICAgICBrZXlzID0zRCBrd2QuZ2V0KCAna2V5cycgKQotICAgICAgICBpZiBpc2luc3RhbmNl
KCBrZXlzLCBiYXNlc3RyaW5nICk6Ci0gICAgICAgICAgICBrZXlzID0zRCBrZXlzLnNwbGl0KCAn
LCcgKQotICAgICAgICByZXR1cm4gZGljdCggdmlldz0zRHZpZXcsIGtleXM9M0RrZXlzLCBkZWZh
dWx0X3ZpZXc9M0RkZWZhdWx0X3ZpZXc9CiApCi0KICAgICBAZXhwb3NlX2FwaV9hbm9ueW1vdXMK
ICAgICBkZWYgaW5kZXgoIHNlbGYsIHRyYW5zLCBkZWxldGVkPTNEJ0ZhbHNlJywgKiprd2QgKToK
ICAgICAgICAgIiIiCkBAIC03NSw3ICs1OSw3IEBACiAgICAgICAgIGlmIHN0cmluZ19hc19ib29s
KCBkZWxldGVkICk6CiAgICAgICAgICAgICBkZWxldGVkX2ZpbHRlciA9M0QgKCBzZWxmLmFwcC5t
b2RlbC5IaXN0b3J5LmRlbGV0ZWQgPTNEPTNEIFRydT0KZSApCj0yMAotICAgICAgICBoaXN0b3Jp
ZXMgPTNEIHNlbGYubWdycy5oaXN0b3JpZXMuYnlfdXNlciggdHJhbnMsIHVzZXI9M0R0cmFucy51
c2U9CnIsIGZpbHRlcnM9M0RkZWxldGVkX2ZpbHRlciApCisgICAgICAgIGhpc3RvcmllcyA9M0Qg
c2VsZi5oaXN0b3J5X21hbmFnZXIuYnlfdXNlciggdHJhbnMsIHVzZXI9M0R0cmFucy51cz0KZXIs
IGZpbHRlcnM9M0RkZWxldGVkX2ZpbHRlciApCiAgICAgICAgIGZvciBoaXN0b3J5IGluIGhpc3Rv
cmllczoKICAgICAgICAgICAgIGhpc3RvcnlfZGljdCA9M0Qgc2VsZi5oaXN0b3J5X3NlcmlhbGl6
ZXIuc2VyaWFsaXplX3RvX3ZpZXcoIHRyPQphbnMsIGhpc3RvcnksICoqc2VyaWFsaXphdGlvbl9w
YXJhbXMgKQogICAgICAgICAgICAgcnZhbC5hcHBlbmQoIGhpc3RvcnlfZGljdCApCkBAIC0xMDUs
MTAgKzg5LDEwIEBACiAgICAgICAgIGRlbGV0ZWQgPTNEIHN0cmluZ19hc19ib29sKCBkZWxldGVk
ICkKPTIwCiAgICAgICAgIGlmIGhpc3RvcnlfaWQgPTNEPTNEICJtb3N0X3JlY2VudGx5X3VzZWQi
OgotICAgICAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5tZ3JzLmhpc3Rvcmllcy5tb3N0X3JlY2Vu
dCggdHJhbnMsIHRyYW5zLnVzZXIsCisgICAgICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmhpc3Rv
cnlfbWFuYWdlci5tb3N0X3JlY2VudCggdHJhbnMsIHRyYW5zLnVzZT0KciwKICAgICAgICAgICAg
ICAgICBmaWx0ZXJzPTNEKCBzZWxmLmFwcC5tb2RlbC5IaXN0b3J5LmRlbGV0ZWQgPTNEPTNEIEZh
bHNlICkgKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5tZ3Jz
Lmhpc3Rvcmllcy5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgc2VsZi49Cl9kZWNvZGVfaWQoIHRy
YW5zLCBoaXN0b3J5X2lkICksIHRyYW5zLnVzZXIgKQorICAgICAgICAgICAgaGlzdG9yeSA9M0Qg
c2VsZi5oaXN0b3J5X21hbmFnZXIuYWNjZXNzaWJsZV9ieV9pZCggdHJhbnMsIHNlbGY9Ci5kZWNv
ZGVfaWQoIGhpc3RvcnlfaWQgKSwgdHJhbnMudXNlciApCj0yMAogICAgICAgICByZXR1cm4gc2Vs
Zi5oaXN0b3J5X3NlcmlhbGl6ZXIuc2VyaWFsaXplX3RvX3ZpZXcoIHRyYW5zLCBoaXN0b3J5LAog
ICAgICAgICAgICAgKipzZWxmLl9wYXJzZV9zZXJpYWxpemF0aW9uX3BhcmFtcygga3dkLCAnZGV0
YWlsZWQnICkgKQpAQCAtMTE3LDcgKzEwMSw3IEBACiAgICAgZGVmIGNpdGF0aW9ucyggc2VsZiwg
dHJhbnMsIGhpc3RvcnlfaWQsICoqa3dkICk6CiAgICAgICAgICIiIgogICAgICAgICAiIiIKLSAg
ICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5tZ3JzLmhpc3Rvcmllcy5hY2Nlc3NpYmxlX2J5X2lkKCB0
cmFucywgc2VsZi5fZGVjPQpvZGVfaWQoIHRyYW5zLCBoaXN0b3J5X2lkICksIHRyYW5zLnVzZXIg
KQorICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdlci5hY2Nlc3NpYmxlX2J5
X2lkKCB0cmFucywgc2VsZi5kZWM9Cm9kZV9pZCggaGlzdG9yeV9pZCApLCB0cmFucy51c2VyICkK
ICAgICAgICAgdG9vbF9pZHMgPTNEIHNldChbXSkKICAgICAgICAgZm9yIGRhdGFzZXQgaW4gaGlz
dG9yeS5kYXRhc2V0czoKICAgICAgICAgICAgIGpvYiA9M0QgZGF0YXNldC5jcmVhdGluZ19qb2IK
QEAgLTE2MSw4ICsxNDUsOCBAQAogICAgICAgICBuZXdfaGlzdG9yeSA9M0QgTm9uZQogICAgICAg
ICAjIGlmIGEgaGlzdG9yeSBpZCB3YXMgcGFzc2VkLCBjb3B5IHRoYXQgaGlzdG9yeQogICAgICAg
ICBpZiBjb3B5X3RoaXNfaGlzdG9yeV9pZDoKLSAgICAgICAgICAgIGRlY29kZWRfaWQgPTNEIHNl
bGYuX2RlY29kZV9pZCggdHJhbnMsIGNvcHlfdGhpc19oaXN0b3J5X2lkICkKLSAgICAgICAgICAg
IG9yaWdpbmFsX2hpc3RvcnkgPTNEIHNlbGYubWdycy5oaXN0b3JpZXMuYWNjZXNzaWJsZV9ieV9p
ZCggdHJhPQpucywgZGVjb2RlZF9pZCwgdHJhbnMudXNlciApCisgICAgICAgICAgICBkZWNvZGVk
X2lkID0zRCBzZWxmLmRlY29kZV9pZCggY29weV90aGlzX2hpc3RvcnlfaWQgKQorICAgICAgICAg
ICAgb3JpZ2luYWxfaGlzdG9yeSA9M0Qgc2VsZi5oaXN0b3J5X21hbmFnZXIuYWNjZXNzaWJsZV9i
eV9pZCggdHI9CmFucywgZGVjb2RlZF9pZCwgdHJhbnMudXNlciApCiAgICAgICAgICAgICBoaXN0
X25hbWUgPTNEIGhpc3RfbmFtZSBvciAoICJDb3B5IG9mICclcyciICUgb3JpZ2luYWxfaGlzdG9y
eT0KLm5hbWUgKQogICAgICAgICAgICAgbmV3X2hpc3RvcnkgPTNEIG9yaWdpbmFsX2hpc3Rvcnku
Y29weSggbmFtZT0zRGhpc3RfbmFtZSwgdGFyZ2U9CnRfdXNlcj0zRHRyYW5zLnVzZXIgKQo9MjAK
QEAgLTIwNCwxMCArMTg4LDEwIEBACiAgICAgICAgIGlmIGt3ZC5nZXQoICdwYXlsb2FkJywgTm9u
ZSApOgogICAgICAgICAgICAgcHVyZ2UgPTNEIHN0cmluZ19hc19ib29sKCBrd2RbJ3BheWxvYWQn
XS5nZXQoICdwdXJnZScsIEZhbHNlICk9CiApCj0yMAotICAgICAgICBoaXN0b3J5ID0zRCBzZWxm
Lm1ncnMuaGlzdG9yaWVzLm93bmVkX2J5X2lkKCB0cmFucywgc2VsZi5fZGVjb2RlX2k9CmQoIHRy
YW5zLCBoaXN0b3J5X2lkICksIHRyYW5zLnVzZXIgKQotICAgICAgICBzZWxmLm1ncnMuaGlzdG9y
aWVzLmRlbGV0ZSggdHJhbnMsIGhpc3RvcnkgKQorICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmhp
c3RvcnlfbWFuYWdlci5vd25lZF9ieV9pZCggdHJhbnMsIHNlbGYuZGVjb2RlX2k9CmQoIGhpc3Rv
cnlfaWQgKSwgdHJhbnMudXNlciApCisgICAgICAgIHNlbGYuaGlzdG9yeV9tYW5hZ2VyLmRlbGV0
ZSggdHJhbnMsIGhpc3RvcnkgKQogICAgICAgICBpZiBwdXJnZToKLSAgICAgICAgICAgIHNlbGYu
bWdycy5oaXN0b3JpZXMucHVyZ2UoIHRyYW5zLCBoaXN0b3J5ICkKKyAgICAgICAgICAgIHNlbGYu
aGlzdG9yeV9tYW5hZ2VyLnB1cmdlKCB0cmFucywgaGlzdG9yeSApCj0yMAogICAgICAgICByZXR1
cm4gc2VsZi5oaXN0b3J5X3NlcmlhbGl6ZXIuc2VyaWFsaXplX3RvX3ZpZXcoIHRyYW5zLCBuZXdf
aGlzdG89CnJ5LAogICAgICAgICAgICAgKipzZWxmLl9wYXJzZV9zZXJpYWxpemF0aW9uX3BhcmFt
cygga3dkLCAnZGV0YWlsZWQnICkgKQpAQCAtMjI2LDggKzIxMCw4IEBACiAgICAgICAgIDpyZXR1
cm5zOiAgICdPSycgaWYgdGhlIGhpc3Rvcnkgd2FzIHVuZGVsZXRlZAogICAgICAgICAiIiIKICAg
ICAgICAgaGlzdG9yeV9pZCA9M0QgaWQKLSAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5tZ3JzLmhp
c3Rvcmllcy5vd25lZF9ieV9pZCggdHJhbnMsIHNlbGYuX2RlY29kZV9pPQpkKCB0cmFucywgaGlz
dG9yeV9pZCApLCB0cmFucy51c2VyICkKLSAgICAgICAgc2VsZi5tZ3JzLmhpc3Rvcmllcy51bmRl
bGV0ZSggdHJhbnMsIGhpc3RvcnkgKQorICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmhpc3Rvcnlf
bWFuYWdlci5vd25lZF9ieV9pZCggdHJhbnMsIHNlbGYuZGVjb2RlX2k9CmQoIGhpc3RvcnlfaWQg
KSwgdHJhbnMudXNlciApCisgICAgICAgIHNlbGYuaGlzdG9yeV9tYW5hZ2VyLnVuZGVsZXRlKCB0
cmFucywgaGlzdG9yeSApCj0yMAogICAgICAgICByZXR1cm4gc2VsZi5oaXN0b3J5X3NlcmlhbGl6
ZXIuc2VyaWFsaXplX3RvX3ZpZXcoIHRyYW5zLCBoaXN0b3J5LAogICAgICAgICAgICAgKipzZWxm
Ll9wYXJzZV9zZXJpYWxpemF0aW9uX3BhcmFtcygga3dkLCAnZGV0YWlsZWQnICkgKQpAQCAtMjUy
LDcgKzIzNiw3IEBACiAgICAgICAgICAgICBhbnkgdmFsdWVzIHRoYXQgd2VyZSBkaWZmZXJlbnQg
ZnJvbSB0aGUgb3JpZ2luYWwgYW5kLCB0aGVyZWZvcj0KZSwgdXBkYXRlZAogICAgICAgICAiIiIK
ICAgICAgICAgI1RPRE86IFBVVCAvYXBpL2hpc3Rvcmllcy97ZW5jb2RlZF9oaXN0b3J5X2lkfSBw
YXlsb2FkID0zRCB7IHJhdGluPQpnOiByYXRpbmcgfSAody8gbm8gc2VjdXJpdHkgY2hlY2tzKQot
ICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLm1ncnMuaGlzdG9yaWVzLm93bmVkX2J5X2lkKCB0cmFu
cywgc2VsZi5fZGVjb2RlX2k9CmQoIHRyYW5zLCBpZCApLCB0cmFucy51c2VyICkKKyAgICAgICAg
aGlzdG9yeSA9M0Qgc2VsZi5oaXN0b3J5X21hbmFnZXIub3duZWRfYnlfaWQoIHRyYW5zLCBzZWxm
LmRlY29kZV9pPQpkKCBpZCApLCB0cmFucy51c2VyICkKPTIwCiAgICAgICAgICNUT0RPOiBmbHVz
aGluZyBpbiBkZXNlcmlhbGl6ZSBpcyBhbiBpZmZ5IHBhdHRlcm4uLi4KICAgICAgICAgc2VsZi5o
aXN0b3J5X2Rlc2VyaWFsaXplci5kZXNlcmlhbGl6ZSggdHJhbnMsIGhpc3RvcnksIHBheWxvYWQg
KQpAQCAtMjc1LDcgKzI1OSw3IEBACiAgICAgICAgICIiIgogICAgICAgICAjIFBVVCBpbnN0ZWFk
IG9mIFBPU1QgYmVjYXVzZSBtdWx0aXBsZSByZXF1ZXN0cyBzaG91bGQganVzdCByZXN1bHQKICAg
ICAgICAgIyBpbiBvbmUgb2JqZWN0IGJlaW5nIGNyZWF0ZWQuCi0gICAgICAgIGhpc3RvcnkgPTNE
IHNlbGYubWdycy5oaXN0b3JpZXMuYWNjZXNzaWJsZV9ieV9pZCggdHJhbnMsIHNlbGYuX2RlYz0K
b2RlX2lkKCB0cmFucywgaWQgKSwgdHJhbnMudXNlciApCisgICAgICAgIGhpc3RvcnkgPTNEIHNl
bGYuaGlzdG9yeV9tYW5hZ2VyLmFjY2Vzc2libGVfYnlfaWQoIHRyYW5zLCBzZWxmLmRlYz0Kb2Rl
X2lkKCBpZCApLCB0cmFucy51c2VyICkKICAgICAgICAgamVoYSA9M0QgaGlzdG9yeS5sYXRlc3Rf
ZXhwb3J0CiAgICAgICAgIHVwX3RvX2RhdGUgPTNEIGplaGEgYW5kIGplaGEudXBfdG9fZGF0ZQog
ICAgICAgICBpZiAnZm9yY2UnIGluIGt3ZHM6CkBAIC0zMDgsNyArMjkyLDcgQEAKICAgICAgICAg
IiIiCiAgICAgICAgICMgU2VlbXMgc2lsbHkgdG8gcHV0IGplaGFfaWQgaW4gaGVyZSwgYnV0IHdh
bnQgR0VUIHRvIGJlIGltbXVhdGFibD0KZT8KICAgICAgICAgIyBhbmQgdGhpcyBpcyBiZWluZyBh
Y2NvbXBsaXNoZWQgdGhpcyB3YXkuCi0gICAgICAgIGhpc3RvcnkgPTNEIHNlbGYubWdycy5oaXN0
b3JpZXMuYWNjZXNzaWJsZV9ieV9pZCggdHJhbnMsIHNlbGYuX2RlYz0Kb2RlX2lkKCB0cmFucywg
aWQgKSwgdHJhbnMudXNlciApCisgICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuaGlzdG9yeV9tYW5h
Z2VyLmFjY2Vzc2libGVfYnlfaWQoIHRyYW5zLCBzZWxmLmRlYz0Kb2RlX2lkKCBpZCApLCB0cmFu
cy51c2VyICkKICAgICAgICAgbWF0Y2hpbmdfZXhwb3J0cyA9M0QgZmlsdGVyKCBsYW1iZGEgZTog
dHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBlPQouaWQgKSA9M0Q9M0QgamVoYV9pZCwgaGlzdG9y
eS5leHBvcnRzICkKICAgICAgICAgaWYgbm90IG1hdGNoaW5nX2V4cG9ydHM6CiAgICAgICAgICAg
ICByYWlzZSBleGNlcHRpb25zLk9iamVjdE5vdEZvdW5kKCkKCmRpZmYgLXIgODdmMWU2Yjk2Zjk0
Y2FlMjA5NTFmZDdjYTFhY2MzZGYyMDBjODI5OSAtciA2OWM3NGJjOTk2MjVlMzYzYmVjYWQwOD0K
YjhmOWM1NWMyMzg0NDk3NTAgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvaGlzdG9yeV9j
b250ZW50cy5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9oaXN0b3J5X2Nv
bnRlbnRzLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2hpc3RvcnlfY29u
dGVudHMucHkKQEAgLTI5LDIwICsyOSwxMSBAQAo9MjAKICAgICBkZWYgX19pbml0X18oIHNlbGYs
IGFwcCApOgogICAgICAgICBzdXBlciggSGlzdG9yeUNvbnRlbnRzQ29udHJvbGxlciwgc2VsZiAp
Ll9faW5pdF9fKCBhcHAgKQotICAgICAgICBzZWxmLm1ncnMgPTNEIHV0aWwuYnVuY2guQnVuY2go
Ci0gICAgICAgICAgICBoaXN0b3JpZXM9M0RoaXN0b3JpZXMuSGlzdG9yeU1hbmFnZXIoIGFwcCAp
LAotICAgICAgICAgICAgaGRhcz0zRGhkYXMuSERBTWFuYWdlciggYXBwICkKLSAgICAgICAgKQor
ICAgICAgICBzZWxmLmhkYV9tYW5hZ2VyID0zRCBoZGFzLkhEQU1hbmFnZXIoIGFwcCApCisgICAg
ICAgIHNlbGYuaGlzdG9yeV9tYW5hZ2VyID0zRCBoaXN0b3JpZXMuSGlzdG9yeU1hbmFnZXIoIGFw
cCApCiAgICAgICAgIHNlbGYuaGRhX3NlcmlhbGl6ZXIgPTNEIGhkYXMuSERBU2VyaWFsaXplcigg
YXBwICkKICAgICAgICAgc2VsZi5oZGFfZGVzZXJpYWxpemVyID0zRCBoZGFzLkhEQURlc2VyaWFs
aXplciggYXBwICkKPTIwCi0gICAgZGVmIF9kZWNvZGVfaWQoIHNlbGYsIHRyYW5zLCBpZCApOgot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lk
KCBpZCApCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuTWFs
Zm9ybWVkSWQoICJNYWxmb3JtZWQgSGlzdG9yeSBpZCAoICVzICkgc3BlPQpjaWZpZWQsIHVuYWJs
ZSB0byBkZWNvZGUiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAl
ICggc3RyKCBpZCApICksIHR5cGU9M0QnZXJyb3InICkKLQogICAgIGRlZiBfcGFyc2Vfc2VyaWFs
aXphdGlvbl9wYXJhbXMoIHNlbGYsIGt3ZCwgZGVmYXVsdF92aWV3ICk6CiAgICAgICAgIHZpZXcg
PTNEIGt3ZC5nZXQoICd2aWV3JywgTm9uZSApCiAgICAgICAgIGtleXMgPTNEIGt3ZC5nZXQoICdr
ZXlzJyApCkBAIC03NywxMyArNjgsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgcnZhbCA9M0Qg
W10KPTIwCi0gICAgICAgICMgZ2V0IHRoZSBoaXN0b3J5LCBpZiBhbm9uIHVzZXIgYW5kIHJlcXVl
c3RpbmcgY3VycmVudCBoaXN0b3J5IC0gYT0KbGxvdyBpdAotICAgICAgICBpZiggKCB0cmFucy51
c2VyID0zRD0zRCBOb25lICkKLSAgICAgICAgYW5kICggaGlzdG9yeV9pZCA9M0Q9M0QgdHJhbnMu
c2VjdXJpdHkuZW5jb2RlX2lkKCB0cmFucy5oaXN0b3J5LmlkPQogKSApICk6Ci0gICAgICAgICAg
ICBoaXN0b3J5ID0zRCB0cmFucy5oaXN0b3J5Ci0gICAgICAgICMgb3RoZXJ3aXNlLCBjaGVjayBw
ZXJtaXNzaW9ucyBmb3IgdGhlIGhpc3RvcnkgZmlyc3QKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIGhpc3RvcnkgPTNEIHNlbGYubWdycy5oaXN0b3JpZXMuYWNjZXNzaWJsZV9ieV9pZCggdHJh
bnMsIHNlbGYuPQpfZGVjb2RlX2lkKCB0cmFucywgaGlzdG9yeV9pZCApLCB0cmFucy51c2VyICkK
KyAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5oaXN0b3J5X21hbmFnZXIuYWNjZXNzaWJsZV9ieV9p
ZCggdHJhbnMsIHNlbGYuZGVjPQpvZGVfaWQoIGhpc3RvcnlfaWQgKSwgdHJhbnMudXNlciApCj0y
MAogICAgICAgICAjIEFsbG93IHBhc3NpbmcgaW4gdHlwZSBvciB0eXBlcyAtIGZvciBjb250aW51
aXR5IHJlc3Qgb2YgbWV0aG9kcwogICAgICAgICAjIHRha2UgaW4gdHlwZSAtIGJ1dCB0aGlzIG9u
ZSBjYW4gYmUgcGFzc2VkIG11bHRpcGxlIHR5cGVzIGFuZApAQCAtOTYsNyArODEsNyBAQAo9MjAK
ICAgICAgICAgY29udGVudHNfa3dkcyA9M0QgeyAndHlwZXMnOiB0eXBlcyB9CiAgICAgICAgIGlm
IGlkczoKLSAgICAgICAgICAgIGlkcyA9M0QgbWFwKCBsYW1iZGEgaWQ6IHRyYW5zLnNlY3VyaXR5
LmRlY29kZV9pZCggaWQgKSwgaWRzLnNwPQpsaXQoICcsJyApICkKKyAgICAgICAgICAgIGlkcyA9
M0QgbWFwKCBsYW1iZGEgaWQ6IHNlbGYuZGVjb2RlX2lkKCBpZCApLCBpZHMuc3BsaXQoICcsJyAp
PQogKQogICAgICAgICAgICAgY29udGVudHNfa3dkc1sgJ2lkcycgXSA9M0QgaWRzCiAgICAgICAg
ICAgICAjIElmIGV4cGxpY2l0IGlkcyBnaXZlbiwgYWx3YXlzIHVzZWQgZGV0YWlsZWQgcmVzdWx0
LgogICAgICAgICAgICAgZGV0YWlscyA9M0QgJ2FsbCcKQEAgLTE1Niw5ICsxNDEsNyBAQAogICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuX19oYW5kbGVfdW5rbm93bl9jb250ZW50c190eXBlKCB0cmFu
cywgY29udGVudHNfdHk9CnBlICkKPTIwCiAgICAgZGVmIF9fc2hvd19kYXRhc2V0KCBzZWxmLCB0
cmFucywgaWQsICoqa3dkICk6Ci0gICAgICAgIGhkYSA9M0Qgc2VsZi5tZ3JzLmhkYXMuYWNjZXNz
aWJsZV9ieV9pZCggdHJhbnMsIHNlbGYuX2RlY29kZV9pZCggdD0KcmFucywgaWQgKSwgdHJhbnMu
dXNlciApCi0gICAgICAgICNpZiBoZGEuaGlzdG9yeS5pZCAhPTNEIHNlbGYuX2RlY29kZV9pZCgg
dHJhbnMsIGhpc3RvcnlfaWQgKToKLSAgICAgICAgIyAgICByYWlzZSBleGNlcHRpb25zLk9iamVj
dE5vdEZvdW5kKCAnZGF0YXNldCB3YXMgbm90IGZvdW5kIGluIHRoPQppcyBoaXN0b3J5JyApCisg
ICAgICAgIGhkYSA9M0Qgc2VsZi5oZGFfbWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywg
c2VsZi5kZWNvZGVfaWQoID0KaWQgKSwgdHJhbnMudXNlciApCiAgICAgICAgIHJldHVybiBzZWxm
LmhkYV9zZXJpYWxpemVyLnNlcmlhbGl6ZV90b192aWV3KCB0cmFucywgaGRhLAogICAgICAgICAg
ICAgKipzZWxmLl9wYXJzZV9zZXJpYWxpemF0aW9uX3BhcmFtcygga3dkLCAnZGV0YWlsZWQnICkg
KQo9MjAKQEAgLTIyOSw3ICsyMTIsNyBAQAogICAgICAgICAjIFRPRE86IEZsdXNoIG91dCBjcmVh
dGUgbmV3IGNvbGxlY3Rpb24gZG9jdW1lbnRhdGlvbiBhYm92ZSwgbmVlZCA9CnNvbWUKICAgICAg
ICAgIyBleGFtcGxlcy4gU2VlIGFsc28gYmlvYmxlbmQgYW5kIEFQSSB0ZXN0cyBmb3Igc3BlY2lm
aWMgZXhhbXBsZXMuCj0yMAotICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLm1ncnMuaGlzdG9yaWVz
Lm93bmVkX2J5X2lkKCB0cmFucywgc2VsZi5fZGVjb2RlX2k9CmQoIHRyYW5zLCBoaXN0b3J5X2lk
ICksIHRyYW5zLnVzZXIgKQorICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdl
ci5vd25lZF9ieV9pZCggdHJhbnMsIHNlbGYuZGVjb2RlX2k9CmQoIGhpc3RvcnlfaWQgKSwgdHJh
bnMudXNlciApCj0yMAogICAgICAgICB0eXBlID0zRCBwYXlsb2FkLmdldCggJ3R5cGUnLCAnZGF0
YXNldCcgKQogICAgICAgICBpZiB0eXBlID0zRD0zRCAnZGF0YXNldCc6CkBAIC0yNjEsOCArMjQ0
LDggQEAKPTIwCiAgICAgICAgICMgY29weSBhbiBleGlzdGluZywgYWNjZXNzaWJsZSBoZGEKICAg
ICAgICAgZWxpZiBzb3VyY2UgPTNEPTNEICdoZGEnOgotICAgICAgICAgICAgdW5lbmNvZGVkX2hk
YV9pZCA9M0Qgc2VsZi5fZGVjb2RlX2lkKCB0cmFucywgY29udGVudCApCi0gICAgICAgICAgICBv
cmlnaW5hbCA9M0Qgc2VsZi5tZ3JzLmhkYXMuYWNjZXNzaWJsZV9ieV9pZCggdHJhbnMsIHVuZW5j
b2RlZD0KX2hkYV9pZCwgdHJhbnMudXNlciApCisgICAgICAgICAgICB1bmVuY29kZWRfaGRhX2lk
ID0zRCBzZWxmLmRlY29kZV9pZCggY29udGVudCApCisgICAgICAgICAgICBvcmlnaW5hbCA9M0Qg
c2VsZi5oZGFfbWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgdW5lbmNvZD0KZWRfaGRh
X2lkLCB0cmFucy51c2VyICkKICAgICAgICAgICAgIGRhdGFfY29weSA9M0Qgb3JpZ2luYWwuY29w
eSggY29weV9jaGlsZHJlbj0zRFRydWUgKQogICAgICAgICAgICAgaGRhID0zRCBoaXN0b3J5LmFk
ZF9kYXRhc2V0KCBkYXRhX2NvcHkgKQo9MjAKQEAgLTMzMiwxMCArMzE1LDEwIEBACiAgICAgICAg
ICMgYW5vbiB1c2VyOiBlbnN1cmUgdGhhdCBoaXN0b3J5IGlkcyBtYXRjaCB1cCBhbmQgdGhlIGhp
c3RvcnkgaXMgdD0KaGUgY3VycmVudCwKICAgICAgICAgIyAgIGNoZWNrIGZvciB1cGxvYWRpbmcs
IGFuZCB1c2Ugb25seSB0aGUgc3Vic2V0IG9mIGF0dHJpYnV0ZSBrZXlzPQogbWFuaXB1bGF0YWJs
ZSBieSBhbm9uIHVzZXJzCiAgICAgICAgIGlmIHRyYW5zLnVzZXIgPTNEPTNEIE5vbmU6Ci0gICAg
ICAgICAgICBoZGEgPTNEIHNlbGYubWdycy5oZGFzLmJ5X2lkKCB0cmFucywgc2VsZi5fZGVjb2Rl
X2lkKCB0cmFucywgaT0KZCApICkKKyAgICAgICAgICAgIGhkYSA9M0Qgc2VsZi5oZGFfbWFuYWdl
ci5ieV9pZCggdHJhbnMsIHNlbGYuZGVjb2RlX2lkKCBpZCApICkKICAgICAgICAgICAgIGlmIGhk
YS5oaXN0b3J5ICE9M0QgdHJhbnMuaGlzdG9yeToKICAgICAgICAgICAgICAgICByYWlzZSBleGNl
cHRpb25zLkF1dGhlbnRpY2F0aW9uUmVxdWlyZWQoICdZb3UgbXVzdCBiZSBsb2dnPQplZCBpbiB0
byB1cGRhdGUgdGhpcyBkYXRhc2V0JyApCi0gICAgICAgICAgICBoZGEgPTNEIHNlbGYubWdycy5o
ZGFzLmVycm9yX2lmX3VwbG9hZGluZyggdHJhbnMsIGhkYSApCisgICAgICAgICAgICBoZGEgPTNE
IHNlbGYuaGRhX21hbmFnZXIuZXJyb3JfaWZfdXBsb2FkaW5nKCB0cmFucywgaGRhICkKPTIwCiAg
ICAgICAgICAgICBhbm9uX2FsbG93ZWRfcGF5bG9hZCA9M0Qge30KICAgICAgICAgICAgIGlmICdk
ZWxldGVkJyBpbiBwYXlsb2FkOgpAQCAtMzQ2LDEzICszMjksMTMgQEAKPTIwCiAgICAgICAgICMg
bG9nZ2VkIGluIHVzZXI6IHVzZSBmdWxsIHBheWxvYWQsIGNoZWNrIHN0YXRlIGlmIGRlbGV0aW5n
LCBhbmQgbT0KYWtlIHN1cmUgdGhlIGhpc3RvcnkgaXMgdGhlaXJzCiAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBoZGEgPTNEIHNlbGYubWdycy5oZGFzLmFjY2Vzc2libGVfYnlfaWQoIHRyYW5z
LCBzZWxmLl9kZWNvZGVfaT0KZCggdHJhbnMsIGlkICksIHRyYW5zLnVzZXIgKQotICAgICAgICAg
ICAgc2VsZi5tZ3JzLmhpc3Rvcmllcy5lcnJvcl91bmxlc3Nfb3duZXIoIHRyYW5zLCBoZGEuaGlz
dG9yeSwgdHI9CmFucy51c2VyICkKKyAgICAgICAgICAgIGhkYSA9M0Qgc2VsZi5oZGFfbWFuYWdl
ci5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgc2VsZi5kZWNvZGVfPQppZCggaWQgKSwgdHJhbnMu
dXNlciApCisgICAgICAgICAgICBzZWxmLmhpc3RvcnlfbWFuYWdlci5lcnJvcl91bmxlc3Nfb3du
ZXIoIHRyYW5zLCBoZGEuaGlzdG9yeSwgdD0KcmFucy51c2VyICkKPTIwCiAgICAgICAgICAgICAj
IG9ubHkgY2hlY2tfc3RhdGUgaWYgbm90IGRlbGV0aW5nLCBvdGhlcndpc2UgY2Fubm90IGRlbGV0
ZSB1cD0KbG9hZGluZyBmaWxlcwogICAgICAgICAgICAgY2hlY2tfc3RhdGUgPTNEIG5vdCBwYXls
b2FkLmdldCggJ2RlbGV0ZWQnLCBGYWxzZSApCiAgICAgICAgICAgICBpZiBjaGVja19zdGF0ZToK
LSAgICAgICAgICAgICAgICBoZGEgPTNEIHNlbGYubWdycy5oZGFzLmVycm9yX2lmX3VwbG9hZGlu
ZyggdHJhbnMsIGhkYSApCisgICAgICAgICAgICAgICAgaGRhID0zRCBzZWxmLmhkYV9tYW5hZ2Vy
LmVycm9yX2lmX3VwbG9hZGluZyggdHJhbnMsIGhkYSApCj0yMAogICAgICAgICAjIG1ha2UgdGhl
IGFjdHVhbCBjaGFuZ2VzCiAgICAgICAgICNUT0RPOiBpcyB0aGlzIGlmIHN0aWxsIG5lZWRlZD8K
QEAgLTM2MCw3ICszNDMsNyBAQAogICAgICAgICAgICAgc2VsZi5oZGFfZGVzZXJpYWxpemVyLmRl
c2VyaWFsaXplKCB0cmFucywgaGRhLCBwYXlsb2FkICkKICAgICAgICAgICAgICNUT0RPOiB0aGlz
IHNob3VsZCBiZSBhbiBlZmZlY3Qgb2YgZGVsZXRpbmcgdGhlIGhkYQogICAgICAgICAgICAgaWYg
cGF5bG9hZC5nZXQoICdkZWxldGVkJywgRmFsc2UgKToKLSAgICAgICAgICAgICAgICBzZWxmLm1n
cnMuaGRhcy5zdG9wX2NyZWF0aW5nX2pvYiggaGRhICkKKyAgICAgICAgICAgICAgICBzZWxmLmhk
YV9tYW5hZ2VyLnN0b3BfY3JlYXRpbmdfam9iKCBoZGEgKQogICAgICAgICAgICAgcmV0dXJuIHNl
bGYuaGRhX3NlcmlhbGl6ZXIuc2VyaWFsaXplX3RvX3ZpZXcoIHRyYW5zLCBoZGEsCiAgICAgICAg
ICAgICAgICAgKipzZWxmLl9wYXJzZV9zZXJpYWxpemF0aW9uX3BhcmFtcygga3dkLCAnZGV0YWls
ZWQnICkgKQo9MjAKQEAgLTQxMywxNCArMzk2LDE0IEBACiAgICAgICAgICAgICAjIHBheWxvYWQg
dGFrZXMgcHJpb3JpdHkKICAgICAgICAgICAgIHB1cmdlID0zRCB1dGlsLnN0cmluZ19hc19ib29s
KCBrd2RbJ3BheWxvYWQnXS5nZXQoICdwdXJnZScsIHB1PQpyZ2UgKSApCj0yMAotICAgICAgICBo
ZGEgPTNEIHNlbGYubWdycy5oZGFzLmJ5X2lkKCB0cmFucywgc2VsZi5fZGVjb2RlX2lkKCB0cmFu
cywgaWQgKSw9CiB0cmFucy51c2VyICkKLSAgICAgICAgc2VsZi5tZ3JzLmhpc3Rvcmllcy5lcnJv
cl91bmxlc3Nfb3duZXJzaGlwKCB0cmFucywgaGRhLmhpc3RvcnksIHRyPQphbnMudXNlciApCi0g
ICAgICAgIHNlbGYubWdycy5oZGFzLmVycm9yX2lmX3VwbG9hZGluZyggdHJhbnMsIGhkYSApCisg
ICAgICAgIGhkYSA9M0Qgc2VsZi5oZGFfbWFuYWdlci5ieV9pZCggdHJhbnMsIHNlbGYuZGVjb2Rl
X2lkKCBpZCApLCB0cmFucz0KLnVzZXIgKQorICAgICAgICBzZWxmLmhpc3RvcnlfbWFuYWdlci5l
cnJvcl91bmxlc3Nfb3duZXJzaGlwKCB0cmFucywgaGRhLmhpc3RvcnksIHQ9CnJhbnMudXNlciAp
CisgICAgICAgIHNlbGYuaGRhX21hbmFnZXIuZXJyb3JfaWZfdXBsb2FkaW5nKCB0cmFucywgaGRh
ICkKPTIwCiAgICAgICAgIGlmIHB1cmdlOgotICAgICAgICAgICAgc2VsZi5tZ3JzLmhkYXMucHVy
Z2UoIHRyYW5zLCBoZGEgKQorICAgICAgICAgICAgc2VsZi5oZGFfbWFuYWdlci5wdXJnZSggdHJh
bnMsIGhkYSApCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLm1ncnMuaGRhcy5kZWxl
dGUoIHRyYW5zLCBoZGEgKQorICAgICAgICAgICAgc2VsZi5oZGFfbWFuYWdlci5kZWxldGUoIHRy
YW5zLCBoZGEgKQogICAgICAgICByZXR1cm4gc2VsZi5oZGFfc2VyaWFsaXplci5zZXJpYWxpemVf
dG9fdmlldyggdHJhbnMsIGhkYSwKICAgICAgICAgICAgICoqc2VsZi5fcGFyc2Vfc2VyaWFsaXph
dGlvbl9wYXJhbXMoIGt3ZCwgJ2RldGFpbGVkJyApICkKPTIwCgpkaWZmIC1yIDg3ZjFlNmI5NmY5
NGNhZTIwOTUxZmQ3Y2ExYWNjM2RmMjAwYzgyOTkgLXIgNjljNzRiYzk5NjI1ZTM2M2JlY2FkMDg9
CmI4ZjljNTVjMjM4NDQ5NzUwIGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2pvYnMucHkK
LS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvam9icy5weQorKysgYi9saWIvZ2Fs
YXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9qb2JzLnB5CkBAIC04OSw3ICs4OSw3IEBACiAgICAgICAg
IGhpc3RvcnlfaWQgPTNEIGt3ZC5nZXQoICdoaXN0b3J5X2lkJywgTm9uZSApCiAgICAgICAgIGlm
IGhpc3RvcnlfaWQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAg
ICAgZGVjb2RlZF9oaXN0b3J5X2lkID0zRCB0cmFucy5zZWN1cml0eS5kZWNvZGVfaWQoaGlzdG9y
eV9pZCkKKyAgICAgICAgICAgICAgICBkZWNvZGVkX2hpc3RvcnlfaWQgPTNEIHNlbGYuZGVjb2Rl
X2lkKGhpc3RvcnlfaWQpCiAgICAgICAgICAgICAgICAgcXVlcnkgPTNEIHF1ZXJ5LmZpbHRlcigg
dHJhbnMuYXBwLm1vZGVsLkpvYi5oaXN0b3J5X2lkID0zRD0KPTNEIGRlY29kZWRfaGlzdG9yeV9p
ZCApCiAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9u
cy5PYmplY3RBdHRyaWJ1dGVJbnZhbGlkRXhjZXB0aW9uKCkKQEAgLTE5OSw3ICsxOTksNyBAQAo9
MjAKICAgICBkZWYgX19nZXRfam9iKCBzZWxmLCB0cmFucywgaWQgKToKICAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgZGVjb2RlZF9qb2JfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmRlY29kZV9pZCgg
aWQgKQorICAgICAgICAgICAgZGVjb2RlZF9qb2JfaWQgPTNEIHNlbGYuZGVjb2RlX2lkKCBpZCAp
CiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICByYWlzZSBleGNlcHRpb25z
Lk1hbGZvcm1lZElkKCkKICAgICAgICAgcXVlcnkgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnko
IHRyYW5zLmFwcC5tb2RlbC5Kb2IgKQpAQCAtMjYwLDcgKzI2MCw3IEBACiAgICAgICAgICAgICBp
ZiBpc2luc3RhbmNlKCB2LCBkaWN0ICk6CiAgICAgICAgICAgICAgICAgaWYgJ2lkJyBpbiB2Ogog
ICAgICAgICAgICAgICAgICAgICBpZiAnc3JjJyBub3QgaW4gdiBvciB2WyAnc3JjJyBdID0zRD0z
RCAnaGRhJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGhkYV9pZCA9M0QgdHJhbnMuc2VjdXJp
dHkuZGVjb2RlX2lkKCB2WydpZCddICkKKyAgICAgICAgICAgICAgICAgICAgICAgIGhkYV9pZCA9
M0Qgc2VsZi5kZWNvZGVfaWQoIHZbJ2lkJ10gKQogICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YXNldCA9M0Qgc2VsZi5oZGFfbWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lkKCB0cmE9Cm5zLCBoZGFf
aWQsIHRyYW5zLnVzZXIgKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YXNldCA9M0Qgc2VsZi5nZXRfbGlicmFyeV9kYXRhc2V0X2RhdGFzZXRf
YXNzb2M9CmlhdGlvbiggdHJhbnMsIHZbJ2lkJ10gKQoKZGlmZiAtciA4N2YxZTZiOTZmOTRjYWUy
MDk1MWZkN2NhMWFjYzNkZjIwMGM4Mjk5IC1yIDY5Yzc0YmM5OTYyNWUzNjNiZWNhZDA4PQpiOGY5
YzU1YzIzODQ0OTc1MCBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9saWJyYXJ5X2NvbnRl
bnRzLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2xpYnJhcnlfY29udGVu
dHMucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvbGlicmFyeV9jb250ZW50
cy5weQpAQCAtNzIsNyArNzIsNyBAQAogICAgICAgICAgICAgICAgICAgICBydmFsLmFwcGVuZCgg
bGQgKQogICAgICAgICAgICAgcmV0dXJuIHJ2YWwKICAgICAgICAgdHJ5OgotICAgICAgICAgICAg
ZGVjb2RlZF9saWJyYXJ5X2lkID0zRCB0cmFucy5zZWN1cml0eS5kZWNvZGVfaWQoIGxpYnJhcnlf
aWQgKQorICAgICAgICAgICAgZGVjb2RlZF9saWJyYXJ5X2lkID0zRCBzZWxmLmRlY29kZV9pZCgg
bGlicmFyeV9pZCApCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICByYWlz
ZSBleGNlcHRpb25zLk1hbGZvcm1lZElkKCAnTWFsZm9ybWVkIGxpYnJhcnkgaWQgKCAlcyApIHNw
ZT0KY2lmaWVkLCB1bmFibGUgdG8gZGVjb2RlLicgJSBsaWJyYXJ5X2lkICkKICAgICAgICAgdHJ5
OgpAQCAtMzAyLDcgKzMwMiw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgY2hlY2sg
cGVybWlzc2lvbnMgb24gKGFsbCB0aHJlZT8pIHJlc291cmNlczogaGRhLCBsaWJyYXJ5LCBmPQpv
bGRlcgogICAgICAgICAgICAgI1RPRE86IGRvIHdlIHJlYWxseSBuZWVkIHRoZSBsaWJyYXJ5Pz8K
LSAgICAgICAgICAgIGZyb21faGRhX2lkID0zRCB0cmFucy5zZWN1cml0eS5kZWNvZGVfaWQoIGZy
b21faGRhX2lkICkKKyAgICAgICAgICAgIGZyb21faGRhX2lkID0zRCBzZWxmLmRlY29kZV9pZCgg
ZnJvbV9oZGFfaWQgKQogICAgICAgICAgICAgaGRhID0zRCBzZWxmLmhkYV9tYW5hZ2VyLm93bmVk
X2J5X2lkKCB0cmFucywgZnJvbV9oZGFfaWQsIHRyYW49CnMudXNlciApCiAgICAgICAgICAgICBo
ZGEgPTNEIHNlbGYuaGRhX21hbmFnZXIuZXJyb3JfaWZfdXBsb2FkaW5nKCB0cmFucywgaGRhICkK
ICAgICAgICAgICAgICMgbGlicmFyeSA9M0Qgc2VsZi5nZXRfbGlicmFyeSggdHJhbnMsIGxpYnJh
cnlfaWQsIGNoZWNrX2FjY2VzPQpzaWJsZT0zRFRydWUgKQoKZGlmZiAtciA4N2YxZTZiOTZmOTRj
YWUyMDk1MWZkN2NhMWFjYzNkZjIwMGM4Mjk5IC1yIDY5Yzc0YmM5OTYyNWUzNjNiZWNhZDA4PQpi
OGY5YzU1YzIzODQ0OTc1MCBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9wcm92ZW5hbmNl
LnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL3Byb3ZlbmFuY2UucHkKKysr
IGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvcHJvdmVuYW5jZS5weQpAQCAtNSw3ICs1
LDcgQEAKIGZyb20gZ2FsYXh5IGltcG9ydCB3ZWIKIGZyb20gZ2FsYXh5LndlYi5iYXNlLmNvbnRy
b2xsZXIgaW1wb3J0IEJhc2VBUElDb250cm9sbGVyCiBmcm9tIHBhc3RlLmh0dHBleGNlcHRpb25z
IGltcG9ydCBIVFRQTm90SW1wbGVtZW50ZWQsIEhUVFBCYWRSZXF1ZXN0Ci1mcm9tIGdhbGF4eS5t
YW5hZ2VycyBpbXBvcnQgaGRhcworZnJvbSBnYWxheHkgaW1wb3J0IG1hbmFnZXJzCj0yMAogbG9n
ID0zRCBsb2dnaW5nLmdldExvZ2dlciggX19uYW1lX18gKQo9MjAKQEAgLTE1LDcgKzE1LDcgQEAK
ICAgICAiIiIKICAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgogICAgICAgICBzdXBlcigg
QmFzZVByb3ZlbmFuY2VDb250cm9sbGVyLCBzZWxmICkuX19pbml0X18oIGFwcCApCi0gICAgICAg
IHNlbGYuaGRhcyA9M0QgaGRhcy5IREFNYW5hZ2VyKCBhcHAgKQorICAgICAgICBzZWxmLmhkYV9t
YW5hZ2VyID0zRCBtYW5hZ2Vycy5oZGFzLkhEQU1hbmFnZXIoIGFwcCApCj0yMAogICAgIEB3ZWIu
ZXhwb3NlX2FwaQogICAgIGRlZiBpbmRleCggc2VsZiwgdHJhbnMsICoqa3dkICk6CkBAIC0zOCwx
MyArMzgsMTMgQEAKICAgICBkZWYgZGVsZXRlKCBzZWxmLCB0cmFucywgdGFnX25hbWUsICoqa3dk
ICk6CiAgICAgICAgIHJhaXNlIEhUVFBCYWRSZXF1ZXN0KCJDYW5ub3QgRGVsZXRlIFByb3ZlbmFu
Y2UiKQo9MjAKLSAgICBkZWYgX2dldF9wcm92ZW5hbmNlKHNlbGYsIHRyYW5zLCBpdGVtX2NsYXNz
X25hbWUsIGl0ZW1faWQsIGZvbGxvdz0zRFRyPQp1ZSk6CisgICAgZGVmIF9nZXRfcHJvdmVuYW5j
ZSggc2VsZiwgdHJhbnMsIGl0ZW1fY2xhc3NfbmFtZSwgaXRlbV9pZCwgZm9sbG93PTNEVD0KcnVl
ICk6CiAgICAgICAgIHByb3ZlbmFuY2VfaXRlbSA9M0Qgc2VsZi5nZXRfb2JqZWN0KCB0cmFucywg
aXRlbV9pZCwgaXRlbV9jbGFzc19uYT0KbWUsIGNoZWNrX293bmVyc2hpcD0zREZhbHNlLCBjaGVj
a19hY2Nlc3NpYmxlPTNERmFsc2UpCiAgICAgICAgIGlmIGl0ZW1fY2xhc3NfbmFtZSA9M0Q9M0Qg
Ikhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb24iOgotICAgICAgICAgICAgc2VsZi5oZGFzLmNoZWNr
X2FjY2Vzc2libGUodHJhbnMsIHByb3ZlbmFuY2VfaXRlbSkKKyAgICAgICAgICAgIHNlbGYuaGRh
X21hbmFnZXIuZXJyb3JfdW5sZXNzX2FjY2Vzc2libGUoIHRyYW5zLCBwcm92ZW5hbmNlX2l0PQpl
bSApCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnNlY3VyaXR5X2NoZWNrKHRyYW5z
LCBwcm92ZW5hbmNlX2l0ZW0sIGNoZWNrX2FjY2Vzc2libGU9Cj0zRFRydWUpCi0gICAgICAgIG91
dCA9M0Qgc2VsZi5fZ2V0X3JlY29yZCh0cmFucywgcHJvdmVuYW5jZV9pdGVtLCBmb2xsb3cpCisg
ICAgICAgICAgICBzZWxmLnNlY3VyaXR5X2NoZWNrKCB0cmFucywgcHJvdmVuYW5jZV9pdGVtLCBj
aGVja19hY2Nlc3NpYmxlPQo9M0RUcnVlICkKKyAgICAgICAgb3V0ID0zRCBzZWxmLl9nZXRfcmVj
b3JkKCB0cmFucywgcHJvdmVuYW5jZV9pdGVtLCBmb2xsb3cgKQogICAgICAgICByZXR1cm4gb3V0
Cj0yMAogICAgIGRlZiBfZ2V0X3JlY29yZChzZWxmLCB0cmFucywgaXRlbSwgZm9sbG93KToKCmRp
ZmYgLXIgODdmMWU2Yjk2Zjk0Y2FlMjA5NTFmZDdjYTFhY2MzZGYyMDBjODI5OSAtciA2OWM3NGJj
OTk2MjVlMzYzYmVjYWQwOD0KYjhmOWM1NWMyMzg0NDk3NTAgbGliL2dhbGF4eS93ZWJhcHBzL2dh
bGF4eS9hcGkvdG9vbHMucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvdG9v
bHMucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvdG9vbHMucHkKQEAgLTMx
LDEwICszMSw4IEBACj0yMAogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CiAgICAgICAg
IHN1cGVyKCBUb29sc0NvbnRyb2xsZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwICkKLSAgICAgICAg
c2VsZi5tZ3JzID0zRCB1dGlsLmJ1bmNoLkJ1bmNoKAotICAgICAgICAgICAgaGlzdG9yaWVzPTNE
bWFuYWdlcnMuaGlzdG9yaWVzLkhpc3RvcnlNYW5hZ2VyKCBhcHAgKSwKLSAgICAgICAgICAgIGhk
YXM9M0RtYW5hZ2Vycy5oZGFzLkhEQU1hbmFnZXIoIGFwcCApCi0gICAgICAgICkKKyAgICAgICAg
c2VsZi5oaXN0b3J5X21hbmFnZXIgPTNEIG1hbmFnZXJzLmhpc3Rvcmllcy5IaXN0b3J5TWFuYWdl
ciggYXBwICkKKyAgICAgICAgc2VsZi5oZGFfbWFuYWdlciA9M0QgbWFuYWdlcnMuaGRhcy5IREFN
YW5hZ2VyKCBhcHAgKQo9MjAKICAgICBAd2ViLmV4cG9zZV9hcGkKICAgICBkZWYgaW5kZXgoIHNl
bGYsIHRyYW5zLCAqKmt3ZHMgKToKQEAgLTQ3LDcgKzQ1LDYgQEAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbmNsdWRpbmcgc2VjdGlvbnMgYW5kIGxhYmVscwogICAgICAgICAgICAgICAg
IHRyYWNrc3RlciAtIGlmIHRydWUsIG9ubHkgdG9vbHMgdGhhdCBhcmUgY29tcGF0aWJsZSB3aXRo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhY2tzdGVyIGFyZSByZXR1cm5lZAotCiAg
ICAgICAgICIiIgo9MjAKICAgICAgICAgIyBSZWFkIHBhcmFtcy4KQEAgLTE0NCw4ICsxNDEsOCBA
QAogICAgICAgICAjIGRhdGFzZXQgdXBsb2FkLgogICAgICAgICBoaXN0b3J5X2lkID0zRCBwYXls
b2FkLmdldCgiaGlzdG9yeV9pZCIsIE5vbmUpCiAgICAgICAgIGlmIGhpc3RvcnlfaWQ6Ci0gICAg
ICAgICAgICBkZWNvZGVkX2lkID0zRCB0cmFucy5zZWN1cml0eS5kZWNvZGVfaWQoIGhpc3Rvcnlf
aWQgKQotICAgICAgICAgICAgdGFyZ2V0X2hpc3RvcnkgPTNEIHNlbGYubWdycy5oaXN0b3JpZXMu
b3duZWRfYnlfaWQoIHRyYW5zLCBkZWM9Cm9kZWRfaWQsIHRyYW5zLnVzZXIgKQorICAgICAgICAg
ICAgZGVjb2RlZF9pZCA9M0Qgc2VsZi5kZWNvZGVfaWQoIGhpc3RvcnlfaWQgKQorICAgICAgICAg
ICAgdGFyZ2V0X2hpc3RvcnkgPTNEIHNlbGYuaGlzdG9yeV9tYW5hZ2VyLm93bmVkX2J5X2lkKCB0
cmFucywgZGU9CmNvZGVkX2lkLCB0cmFucy51c2VyICkKICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgIHRhcmdldF9oaXN0b3J5ID0zRCBOb25lCj0yMApAQCAtMTYwLDcgKzE1Nyw3IEBACiAgICAg
ICAgIGlucHV0X3BhdGNoID0zRCB7fQogICAgICAgICBmb3IgaywgdiBpbiBpbnB1dHMuaXRlcml0
ZW1zKCk6CiAgICAgICAgICAgICBpZiAgaXNpbnN0YW5jZSh2LCBkaWN0KSBhbmQgdi5nZXQoJ3Ny
YycsICcnKSA9M0Q9M0QgJ2xkZGEnIGFuZD0KICdpZCcgaW4gdjoKLSAgICAgICAgICAgICAgICBs
ZGRhID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5hcHAubW9kZWwuTGlicmFyeURh
PQp0YXNldERhdGFzZXRBc3NvY2lhdGlvbiApLmdldCggdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lk
KHZbJ2lkJ10pICkKKyAgICAgICAgICAgICAgICBsZGRhID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1
ZXJ5KCB0cmFucy5hcHAubW9kZWwuTGlicmFyeURhPQp0YXNldERhdGFzZXRBc3NvY2lhdGlvbiAp
LmdldCggc2VsZi5kZWNvZGVfaWQodlsnaWQnXSkgKQogICAgICAgICAgICAgICAgIGlmIHRyYW5z
LnVzZXJfaXNfYWRtaW4oKSBvciB0cmFucy5hcHAuc2VjdXJpdHlfYWdlbnQuY2FuX2E9CmNjZXNz
X2RhdGFzZXQoIHRyYW5zLmdldF9jdXJyZW50X3VzZXJfcm9sZXMoKSwgbGRkYS5kYXRhc2V0ICk6
CiAgICAgICAgICAgICAgICAgICAgIGlucHV0X3BhdGNoW2tdID0zRCBsZGRhLnRvX2hpc3Rvcnlf
ZGF0YXNldF9hc3NvY2lhdGlvbj0KKHRhcmdldF9oaXN0b3J5LCBhZGRfdG9faGlzdG9yeT0zRFRy
dWUpCj0yMApAQCAtMjgzLDEwICsyODAsMTAgQEAKICAgICAgICAgICAgIHJ1bl9vbl9yZWdpb25z
ID0zRCBUcnVlCj0yMAogICAgICAgICAjIERhdGFzZXQgY2hlY2suCi0gICAgICAgIGRlY29kZWRf
ZGF0YXNldF9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBwYXlsb2FkLmdldCggJ3Rh
cj0KZ2V0X2RhdGFzZXRfaWQnICkgKQotICAgICAgICBvcmlnaW5hbF9kYXRhc2V0ID0zRCBzZWxm
Lm1ncnMuaGRhcy5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgZGVjb2Q9CmVkX2RhdGFzZXRfaWQs
IHVzZXI9M0R0cmFucy51c2VyICkKKyAgICAgICAgZGVjb2RlZF9kYXRhc2V0X2lkID0zRCBzZWxm
LmRlY29kZV9pZCggcGF5bG9hZC5nZXQoICd0YXJnZXRfZGF0YXNlPQp0X2lkJyApICkKKyAgICAg
ICAgb3JpZ2luYWxfZGF0YXNldCA9M0Qgc2VsZi5oZGFfbWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lk
KCB0cmFucywgZGVjPQpvZGVkX2RhdGFzZXRfaWQsIHVzZXI9M0R0cmFucy51c2VyICkKICAgICAg
ICAgb3JpZ2luYWxfZGF0YXNldCA9M0Qgc2VsZi5oZGFfbWFuYWdlci5lcnJvcl9pZl91cGxvYWRp
bmcoIHRyYW5zLCBvPQpyaWdpbmFsX2RhdGFzZXQgKQotICAgICAgICBtc2cgPTNEIHNlbGYubWdy
cy5oZGFzLmRhdGFfY29udmVyc2lvbl9zdGF0dXMoIHRyYW5zLCBvcmlnaW5hbF9kYXQ9CmFzZXQg
KQorICAgICAgICBtc2cgPTNEIHNlbGYuaGRhX21hbmFnZXIuZGF0YV9jb252ZXJzaW9uX3N0YXR1
cyggdHJhbnMsIG9yaWdpbmFsX2Q9CmF0YXNldCApCiAgICAgICAgIGlmIG1zZzoKICAgICAgICAg
ICAgIHJldHVybiBtc2cKPTIwCkBAIC0yOTQsNyArMjkxLDcgQEAKICAgICAgICAgIyBqb2IncyBw
cmV2aW91cyBwYXJhbWV0ZXJzIGFuZCBpbmNvbWluZyBwYXJhbWV0ZXJzLiBJbmNvbWluZyBwYXJh
PQptZXRlcnMKICAgICAgICAgIyBoYXZlIHByaW9yaXR5LgogICAgICAgICAjCi0gICAgICAgIG9y
aWdpbmFsX2pvYiA9M0Qgc2VsZi5tZ3JzLmhkYXMuY3JlYXRpbmdfam9iKCBvcmlnaW5hbF9kYXRh
c2V0ICkKKyAgICAgICAgb3JpZ2luYWxfam9iID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmNyZWF0aW5n
X2pvYiggb3JpZ2luYWxfZGF0YXNldCApCiAgICAgICAgIHRvb2wgPTNEIHRyYW5zLmFwcC50b29s
Ym94LmdldF90b29sKCBvcmlnaW5hbF9qb2IudG9vbF9pZCApCiAgICAgICAgIGlmIG5vdCB0b29s
OgogICAgICAgICAgICAgcmV0dXJuIHRyYW5zLmFwcC5tb2RlbC5EYXRhc2V0LmNvbnZlcnNpb25f
bWVzc2FnZXMuTk9fVE9PTAoKZGlmZiAtciA4N2YxZTZiOTZmOTRjYWUyMDk1MWZkN2NhMWFjYzNk
ZjIwMGM4Mjk5IC1yIDY5Yzc0YmM5OTYyNWUzNjNiZWNhZDA4PQpiOGY5YzU1YzIzODQ0OTc1MCBs
aWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS93b3JrZmxvd3MucHkKLS0tIGEvbGliL2dhbGF4
eS93ZWJhcHBzL2dhbGF4eS9hcGkvd29ya2Zsb3dzLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBw
cy9nYWxheHkvYXBpL3dvcmtmbG93cy5weQpAQCAtMTQ4LDEwICsxNDgsMTAgQEAKPTIwCiAgICAg
ICAgIGlmICdmcm9tX2hpc3RvcnlfaWQnIGluIHBheWxvYWQ6CiAgICAgICAgICAgICBmcm9tX2hp
c3RvcnlfaWQgPTNEIHBheWxvYWQuZ2V0KCAnZnJvbV9oaXN0b3J5X2lkJyApCi0gICAgICAgICAg
ICBmcm9tX2hpc3RvcnlfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmRlY29kZV9pZCggZnJvbV9oaXN0
b3J5X2lkICkKKyAgICAgICAgICAgIGZyb21faGlzdG9yeV9pZCA9M0Qgc2VsZi5kZWNvZGVfaWQo
IGZyb21faGlzdG9yeV9pZCApCiAgICAgICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmhpc3Rvcnlf
bWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgZnJvbT0KX2hpc3RvcnlfaWQsIHRyYW5z
LnVzZXIgKQo9MjAKLSAgICAgICAgICAgIGpvYl9pZHMgPTNEIG1hcCggdHJhbnMuc2VjdXJpdHku
ZGVjb2RlX2lkLCBwYXlsb2FkLmdldCggJ2pvYl9pPQpkcycsIFtdICkgKQorICAgICAgICAgICAg
am9iX2lkcyA9M0QgbWFwKCBzZWxmLmRlY29kZV9pZCwgcGF5bG9hZC5nZXQoICdqb2JfaWRzJywg
W10gKSApCiAgICAgICAgICAgICBkYXRhc2V0X2lkcyA9M0QgcGF5bG9hZC5nZXQoICdkYXRhc2V0
X2lkcycsIFtdICkKICAgICAgICAgICAgIGRhdGFzZXRfY29sbGVjdGlvbl9pZHMgPTNEIHBheWxv
YWQuZ2V0KCAnZGF0YXNldF9jb2xsZWN0aW9uX2lkPQpzJywgW10gKQogICAgICAgICAgICAgd29y
a2Zsb3dfbmFtZSA9M0QgcGF5bG9hZFsgJ3dvcmtmbG93X25hbWUnIF0KQEAgLTI0Miw3ICsyNDIs
NyBAQAogICAgICAgICB3b3JrZmxvd19pZCA9M0QgaWQKPTIwCiAgICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHN0b3JlZF93b3JrZmxvdyA9M0QgdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeShzZWxmLmFw
cC5tb2RlbC5TdG9yPQplZFdvcmtmbG93KS5nZXQodHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKHdv
cmtmbG93X2lkKSkKKyAgICAgICAgICAgIHN0b3JlZF93b3JrZmxvdyA9M0QgdHJhbnMuc2Ffc2Vz
c2lvbi5xdWVyeShzZWxmLmFwcC5tb2RlbC5TdG9yPQplZFdvcmtmbG93KS5nZXQoc2VsZi5kZWNv
ZGVfaWQod29ya2Zsb3dfaWQpKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgogICAgICAg
ICAgICAgdHJhbnMucmVzcG9uc2Uuc3RhdHVzID0zRCA0MDAKICAgICAgICAgICAgIHJldHVybiAo
IldvcmtmbG93IHdpdGggSUQ9M0QnJXMnIGNhbiBub3QgYmUgZm91bmRcbiBFeGNlcHRpb246PQog
JXMiKSAlICh3b3JrZmxvd19pZCwgc3RyKCBlICkpCkBAIC00MzEsNyArNDMxLDcgQEAKPTIwCiAg
ICAgICAgIDpyYWlzZXM6IGV4Y2VwdGlvbnMuTWVzc2FnZUV4Y2VwdGlvbiwgZXhjZXB0aW9ucy5P
YmplY3ROb3RGb3VuZAogICAgICAgICAiIiIKLSAgICAgICAgZGVjb2RlZF93b3JrZmxvd19pbnZv
Y2F0aW9uX2lkID0zRCBzZWxmLl9fZGVjb2RlX2lkKCB0cmFucywgaW52b2NhPQp0aW9uX2lkICkK
KyAgICAgICAgZGVjb2RlZF93b3JrZmxvd19pbnZvY2F0aW9uX2lkID0zRCBzZWxmLmRlY29kZV9p
ZCggaW52b2NhdGlvbl9pZCApCiAgICAgICAgIHdvcmtmbG93X2ludm9jYXRpb24gPTNEIHNlbGYu
d29ya2Zsb3dfbWFuYWdlci5nZXRfaW52b2NhdGlvbiggdHJhbj0KcywgZGVjb2RlZF93b3JrZmxv
d19pbnZvY2F0aW9uX2lkICkKICAgICAgICAgaWYgd29ya2Zsb3dfaW52b2NhdGlvbjoKICAgICAg
ICAgICAgIHJldHVybiBzZWxmLl9fZW5jb2RlX2ludm9jYXRpb24oIHRyYW5zLCB3b3JrZmxvd19p
bnZvY2F0aW9uICkKQEAgLTQ1MSw3ICs0NTEsNyBAQAo9MjAKICAgICAgICAgOnJhaXNlczogZXhj
ZXB0aW9ucy5NZXNzYWdlRXhjZXB0aW9uLCBleGNlcHRpb25zLk9iamVjdE5vdEZvdW5kCiAgICAg
ICAgICIiIgotICAgICAgICBkZWNvZGVkX3dvcmtmbG93X2ludm9jYXRpb25faWQgPTNEIHNlbGYu
X19kZWNvZGVfaWQoIHRyYW5zLCBpbnZvY2E9CnRpb25faWQgKQorICAgICAgICBkZWNvZGVkX3dv
cmtmbG93X2ludm9jYXRpb25faWQgPTNEIHNlbGYuZGVjb2RlX2lkKCBpbnZvY2F0aW9uX2lkICkK
ICAgICAgICAgd29ya2Zsb3dfaW52b2NhdGlvbiA9M0Qgc2VsZi53b3JrZmxvd19tYW5hZ2VyLmNh
bmNlbF9pbnZvY2F0aW9uKCB0PQpyYW5zLCBkZWNvZGVkX3dvcmtmbG93X2ludm9jYXRpb25faWQg
KQogICAgICAgICByZXR1cm4gc2VsZi5fX2VuY29kZV9pbnZvY2F0aW9uKCB0cmFucywgd29ya2Zs
b3dfaW52b2NhdGlvbiApCj0yMApAQCAtNDc0LDcgKzQ3NCw3IEBACj0yMAogICAgICAgICA6cmFp
c2VzOiBleGNlcHRpb25zLk1lc3NhZ2VFeGNlcHRpb24sIGV4Y2VwdGlvbnMuT2JqZWN0Tm90Rm91
bmQKICAgICAgICAgIiIiCi0gICAgICAgIGRlY29kZWRfaW52b2NhdGlvbl9zdGVwX2lkID0zRCBz
ZWxmLl9fZGVjb2RlX2lkKCB0cmFucywgc3RlcF9pZCApCisgICAgICAgIGRlY29kZWRfaW52b2Nh
dGlvbl9zdGVwX2lkID0zRCBzZWxmLmRlY29kZV9pZCggc3RlcF9pZCApCiAgICAgICAgIGludm9j
YXRpb25fc3RlcCA9M0Qgc2VsZi53b3JrZmxvd19tYW5hZ2VyLmdldF9pbnZvY2F0aW9uX3N0ZXAo
CiAgICAgICAgICAgICB0cmFucywKICAgICAgICAgICAgIGRlY29kZWRfaW52b2NhdGlvbl9zdGVw
X2lkCkBAIC01MDEsNyArNTAxLDcgQEAKPTIwCiAgICAgICAgIDpyYWlzZXM6IGV4Y2VwdGlvbnMu
TWVzc2FnZUV4Y2VwdGlvbiwgZXhjZXB0aW9ucy5PYmplY3ROb3RGb3VuZAogICAgICAgICAiIiIK
LSAgICAgICAgZGVjb2RlZF9pbnZvY2F0aW9uX3N0ZXBfaWQgPTNEIHNlbGYuX19kZWNvZGVfaWQo
IHRyYW5zLCBzdGVwX2lkICkKKyAgICAgICAgZGVjb2RlZF9pbnZvY2F0aW9uX3N0ZXBfaWQgPTNE
IHNlbGYuZGVjb2RlX2lkKCBzdGVwX2lkICkKICAgICAgICAgYWN0aW9uID0zRCBwYXlsb2FkLmdl
dCggImFjdGlvbiIsIE5vbmUgKQo9MjAKICAgICAgICAgaW52b2NhdGlvbl9zdGVwID0zRCBzZWxm
LndvcmtmbG93X21hbmFnZXIudXBkYXRlX2ludm9jYXRpb25fc3RlcCgKQEAgLTU0MCw3ICs1NDAs
NyBAQAogICAgICAgICAgICAgaWYgc3RvcmVkX3dvcmtmbG93IGlzIE5vbmU6CiAgICAgICAgICAg
ICAgICAgcmFpc2UgZXhjZXB0aW9ucy5PYmplY3ROb3RGb3VuZCggIldvcmtmbG93IG5vdCBmb3Vu
ZDogJXMiID0KJSB3b3JrZmxvd19pZCApCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB3b3Jr
Zmxvd19pZCA9M0Qgc2VsZi5fX2RlY29kZV9pZCggdHJhbnMsIHdvcmtmbG93X2lkICkKKyAgICAg
ICAgICAgIHdvcmtmbG93X2lkID0zRCBzZWxmLmRlY29kZV9pZCggd29ya2Zsb3dfaWQgKQogICAg
ICAgICAgICAgcXVlcnkgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLmFwcC5tb2Rl
bC5TdG9yZWRXb3JrZmw9Cm93ICkKICAgICAgICAgICAgIHN0b3JlZF93b3JrZmxvdyA9M0QgcXVl
cnkuZ2V0KCB3b3JrZmxvd19pZCApCiAgICAgICAgIGlmIHN0b3JlZF93b3JrZmxvdyBpcyBOb25l
OgpAQCAtNTUzLDEwICs1NTMsMyBAQAogICAgICAgICAgICAgaW52b2NhdGlvbi50b19kaWN0KCB2
aWV3ICksCiAgICAgICAgICAgICBUcnVlCiAgICAgICAgICkKLQotICAgIGRlZiBfX2RlY29kZV9p
ZCggc2VsZiwgdHJhbnMsIHdvcmtmbG93X2lkLCBtb2RlbF90eXBlPTNEIndvcmtmbG93IiApOgot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lk
KCB3b3JrZmxvd19pZCApCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICBt
ZXNzYWdlID0zRCAiTWFsZm9ybWVkICVzIGlkICggJXMgKSBzcGVjaWZpZWQsIHVuYWJsZSB0byBk
ZWNvZD0KZSIgJSAoIG1vZGVsX3R5cGUsIHdvcmtmbG93X2lkICkKLSAgICAgICAgICAgIHJhaXNl
IGV4Y2VwdGlvbnMuTWFsZm9ybWVkSWQoIG1lc3NhZ2UgKQoKZGlmZiAtciA4N2YxZTZiOTZmOTRj
YWUyMDk1MWZkN2NhMWFjYzNkZjIwMGM4Mjk5IC1yIDY5Yzc0YmM5OTYyNWUzNjNiZWNhZDA4PQpi
OGY5YzU1YzIzODQ0OTc1MCBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL2Rh
dGFzZXQucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9kYXRh
c2V0LnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvZGF0YXNl
dC5weQpAQCAtOTIsMTcgKzkyLDE1IEBACj0yMAogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBw
ICk6CiAgICAgICAgIHN1cGVyKCBEYXRhc2V0SW50ZXJmYWNlLCBzZWxmICkuX19pbml0X18oIGFw
cCApCi0gICAgICAgIHNlbGYubWdycyA9M0QgdXRpbC5idW5jaC5CdW5jaCgKLSAgICAgICAgICAg
IGhpc3Rvcmllcz0zRG1hbmFnZXJzLmhpc3Rvcmllcy5IaXN0b3J5TWFuYWdlciggYXBwICksCi0g
ICAgICAgICAgICBoZGFzPTNEbWFuYWdlcnMuaGRhcy5IREFNYW5hZ2VyKCBhcHAgKSwKLSAgICAg
ICAgKQorICAgICAgICBzZWxmLmhpc3RvcnlfbWFuYWdlciA9M0QgbWFuYWdlcnMuaGlzdG9yaWVz
Lkhpc3RvcnlNYW5hZ2VyKCBhcHAgKQorICAgICAgICBzZWxmLmhkYV9tYW5hZ2VyID0zRCBtYW5h
Z2Vycy5oZGFzLkhEQU1hbmFnZXIoIGFwcCApCj0yMAogICAgIGRlZiBfZ2V0X2pvYl9mb3JfZGF0
YXNldCggc2VsZiwgdHJhbnMsIGRhdGFzZXRfaWQgKToKICAgICAgICAgJycnCiAgICAgICAgIFJl
dHVybiB0aGUgam9iIGZvciB0aGUgZ2l2ZW4gZGF0YXNldC4gVGhpcyB3aWxsIHRocm93IGFuIGVy
cm9yIGlmID0KdGhlCiAgICAgICAgIGRhdGFzZXQgaXMgZWl0aGVyIG5vbmV4aXN0ZW50IG9yIGlu
YWNjZXNzaWJsZSB0byB0aGUgdXNlci4KICAgICAgICAgJycnCi0gICAgICAgIGhkYSA9M0QgdHJh
bnMuc2Ffc2Vzc2lvbi5xdWVyeSggdHJhbnMuYXBwLm1vZGVsLkhpc3RvcnlEYXRhc2V0QXNzbz0K
Y2lhdGlvbiApLmdldCggdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBkYXRhc2V0X2lkICkgKQor
ICAgICAgICBoZGEgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLmFwcC5tb2RlbC5I
aXN0b3J5RGF0YXNldEFzc289CmNpYXRpb24gKS5nZXQoIHNlbGYuZGVjb2RlX2lkKCBkYXRhc2V0
X2lkICkgKQogICAgICAgICBhc3NlcnQgaGRhIGFuZCBzZWxmLl9jYW5fYWNjZXNzX2RhdGFzZXQo
IHRyYW5zLCBoZGEgKQogICAgICAgICByZXR1cm4gaGRhLmNyZWF0aW5nX2pvYgo9MjAKQEAgLTEx
OSw3ICsxMTcsNyBAQAogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBoZGEgPTNEIE5vbmUK
ICAgICAgICAgaWYgbm90IGhkYToKLSAgICAgICAgICAgIGhkYSA9M0QgdHJhbnMuc2Ffc2Vzc2lv
bi5xdWVyeSggbW9kZWwuSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvPQpuICkuZ2V0KCB0cmFucy5z
ZWN1cml0eS5kZWNvZGVfaWQoIGlkICkgKQorICAgICAgICAgICAgaGRhID0zRCB0cmFucy5zYV9z
ZXNzaW9uLnF1ZXJ5KCBtb2RlbC5IaXN0b3J5RGF0YXNldEFzc29jaWF0aW89Cm4gKS5nZXQoIHNl
bGYuZGVjb2RlX2lkKCBpZCApICkKICAgICAgICAgaWYgbm90IGhkYSBvciBub3Qgc2VsZi5fY2Fu
X2FjY2Vzc19kYXRhc2V0KCB0cmFucywgaGRhICk6CiAgICAgICAgICAgICByZXR1cm4gdHJhbnMu
c2hvd19lcnJvcl9tZXNzYWdlKCAiRWl0aGVyIHRoaXMgZGF0YXNldCBkb2VzIG5vdD0KIGV4aXN0
IG9yIHlvdSBkbyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyBpdC4iICkKICAgICAgICAg
cmV0dXJuIHRyYW5zLmZpbGxfdGVtcGxhdGUoICJkYXRhc2V0L2Vycm9ycy5tYWtvIiwgaGRhPTNE
aGRhICkKQEAgLTE3Nyw3ICsxNzUsNyBAQAogICAgIEB3ZWIuZXhwb3NlCiAgICAgZGVmIGdldF9t
ZXRhZGF0YV9maWxlKHNlbGYsIHRyYW5zLCBoZGFfaWQsIG1ldGFkYXRhX25hbWUpOgogICAgICAg
ICAiIiIgQWxsb3dzIHRoZSBkb3dubG9hZGluZyBvZiBtZXRhZGF0YSBmaWxlcyBhc3NvY2lhdGVk
IHdpdGggZGF0YXM9CmV0cyAoZWcuIGJhaSBpbmRleCBmb3IgYmFtIGZpbGVzKSAiIiIKLSAgICAg
ICAgZGF0YSA9M0QgdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggdHJhbnMuYXBwLm1vZGVsLkhpc3Rv
cnlEYXRhc2V0QXNzPQpvY2lhdGlvbiApLmdldCggdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBo
ZGFfaWQgKSApCisgICAgICAgIGRhdGEgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5z
LmFwcC5tb2RlbC5IaXN0b3J5RGF0YXNldEFzcz0Kb2NpYXRpb24gKS5nZXQoIHNlbGYuZGVjb2Rl
X2lkKCBoZGFfaWQgKSApCiAgICAgICAgIGlmIG5vdCBkYXRhIG9yIG5vdCBzZWxmLl9jYW5fYWNj
ZXNzX2RhdGFzZXQoIHRyYW5zLCBkYXRhICk6CiAgICAgICAgICAgICByZXR1cm4gdHJhbnMuc2hv
d19lcnJvcl9tZXNzYWdlKCAiWW91IGFyZSBub3QgYWxsb3dlZCB0byBhY2Nlcz0KcyB0aGlzIGRh
dGFzZXQiICkKPTIwCkBAIC0xOTIsNyArMTkwLDcgQEAKICAgICBkZWYgX2NoZWNrX2RhdGFzZXQo
c2VsZiwgdHJhbnMsIGhkYV9pZCk6CiAgICAgICAgICMgREVQUkVDQVRJT046IFdlIHN0aWxsIHN1
cHBvcnQgdW5lbmNvZGVkIGlkcyBmb3IgYmFja3dhcmQgY29tcGF0aT0KYmlsaXR5CiAgICAgICAg
IHRyeToKLSAgICAgICAgICAgIGRhdGEgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5z
LmFwcC5tb2RlbC5IaXN0b3J5RGF0YXNlPQp0QXNzb2NpYXRpb24gKS5nZXQoIHRyYW5zLnNlY3Vy
aXR5LmRlY29kZV9pZCggaGRhX2lkKSApCisgICAgICAgICAgICBkYXRhID0zRCB0cmFucy5zYV9z
ZXNzaW9uLnF1ZXJ5KCB0cmFucy5hcHAubW9kZWwuSGlzdG9yeURhdGFzZT0KdEFzc29jaWF0aW9u
ICkuZ2V0KCBzZWxmLmRlY29kZV9pZCggaGRhX2lkKSApCiAgICAgICAgICAgICBpZiBkYXRhIGlz
IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvciggJ0ludmFsaWQgcmVmZXJl
bmNlIGRhdGFzZXQgaWQ6ICVzLicgJSBoZD0KYV9pZCkKICAgICAgICAgZXhjZXB0OgpAQCAtNDYz
LDcgKzQ2MSw3IEBACiAgICAgICAgICAgICAjIExvYWQgdGhlIGhkYXMgYW5kIGVuc3VyZSB0aGV5
IGFsbCBiZWxvbmcgdG8gdGhlIGN1cnJlbnQgdXNlcgogICAgICAgICAgICAgaGRhcyA9M0QgW10K
ICAgICAgICAgICAgIGZvciBlbmNvZGVkX2hkYV9pZCBpbiBoZGFfaWRzOgotICAgICAgICAgICAg
ICAgIGhkYV9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBlbmNvZGVkX2hkYV9pZCAp
CisgICAgICAgICAgICAgICAgaGRhX2lkID0zRCBzZWxmLmRlY29kZV9pZCggZW5jb2RlZF9oZGFf
aWQgKQogICAgICAgICAgICAgICAgIGhkYSA9M0QgdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggbW9k
ZWwuSGlzdG9yeURhdGFzZXRBc3NvY2k9CmF0aW9uICkuZmlsdGVyX2J5KCBpZD0zRGhkYV9pZCAp
LmZpcnN0KCkKICAgICAgICAgICAgICAgICBpZiBoZGE6CiAgICAgICAgICAgICAgICAgICAgICMg
RW5zdXJlIGhpc3RvcnkgaXMgb3duZWQgYnkgY3VycmVudCB1c2VyCkBAIC01MzAsMTggKzUyOCwx
OCBAQAogICAgIEB3ZWIucmVxdWlyZV9sb2dpbiggInVzZSBHYWxheHkgZGF0YXNldHMiICkKICAg
ICBkZWYgZ2V0X25hbWVfYW5kX2xpbmtfYXN5bmMoIHNlbGYsIHRyYW5zLCBpZD0zRE5vbmUgKToK
ICAgICAgICAgIiIiIFJldHVybnMgZGF0YXNldCdzIG5hbWUgYW5kIGxpbmsuICIiIgotICAgICAg
ICBkZWNvZGVkX2lkID0zRCB0cmFucy5zZWN1cml0eS5kZWNvZGVfaWQoIGlkICkKLSAgICAgICAg
ZGF0YXNldCA9M0Qgc2VsZi5tZ3JzLmhkYXMuYWNjZXNzaWJsZV9ieV9pZCggdHJhbnMsIGRlY29k
ZWRfaWQsIHRyPQphbnMudXNlciApCi0gICAgICAgIGRhdGFzZXQgPTNEIHNlbGYubWdycy5oZGFz
LmVycm9yX2lmX3VwbG9hZGluZyggZGF0YXNldCApCisgICAgICAgIGRlY29kZWRfaWQgPTNEIHNl
bGYuZGVjb2RlX2lkKCBpZCApCisgICAgICAgIGRhdGFzZXQgPTNEIHNlbGYuaGRhX21hbmFnZXIu
YWNjZXNzaWJsZV9ieV9pZCggdHJhbnMsIGRlY29kZWRfaWQsID0KdHJhbnMudXNlciApCisgICAg
ICAgIGRhdGFzZXQgPTNEIHNlbGYuaGRhX21hbmFnZXIuZXJyb3JfaWZfdXBsb2FkaW5nKCBkYXRh
c2V0ICkKICAgICAgICAgcmV0dXJuX2RpY3QgPTNEIHsgIm5hbWUiIDogZGF0YXNldC5uYW1lLCAi
bGluayIgOiB1cmxfZm9yKCBjb250cm9sPQpsZXI9M0QnZGF0YXNldCcsIGFjdGlvbj0zRCJkaXNw
bGF5X2J5X3VzZXJuYW1lX2FuZF9zbHVnIiwgdXNlcm5hbWU9M0RkYXRhc2U9CnQuaGlzdG9yeS51
c2VyLnVzZXJuYW1lLCBzbHVnPTNEdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBkYXRhc2V0Lmlk
ICkgKSB9CiAgICAgICAgIHJldHVybiByZXR1cm5fZGljdAo9MjAKICAgICBAd2ViLmV4cG9zZQog
ICAgIGRlZiBnZXRfZW1iZWRfaHRtbF9hc3luYyggc2VsZiwgdHJhbnMsIGlkICk6CiAgICAgICAg
ICIiIiBSZXR1cm5zIEhUTUwgZm9yIGVtYmVkZGluZyBhIGRhdGFzZXQgaW4gYSBwYWdlLiAiIiIK
LSAgICAgICAgZGVjb2RlZF9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBpZCApCi0g
ICAgICAgIGRhdGFzZXQgPTNEIHNlbGYubWdycy5oZGFzLmFjY2Vzc2libGVfYnlfaWQoIHRyYW5z
LCBkZWNvZGVkX2lkLCB0cj0KYW5zLnVzZXIgKQotICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLm1n
cnMuaGRhcy5lcnJvcl9pZl91cGxvYWRpbmcoIGRhdGFzZXQgKQorICAgICAgICBkZWNvZGVkX2lk
ID0zRCBzZWxmLmRlY29kZV9pZCggaWQgKQorICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLmhkYV9t
YW5hZ2VyLmFjY2Vzc2libGVfYnlfaWQoIHRyYW5zLCBkZWNvZGVkX2lkLCA9CnRyYW5zLnVzZXIg
KQorICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmVycm9yX2lmX3VwbG9hZGlu
ZyggZGF0YXNldCApCiAgICAgICAgIGlmIGRhdGFzZXQ6CiAgICAgICAgICAgICByZXR1cm4gIkVt
YmVkZGVkIERhdGFzZXQgJyVzJyIgJSBkYXRhc2V0Lm5hbWUKPTIwCkBAIC01NTcsOSArNTU1LDkg
QEAKICAgICBkZWYgcmF0ZV9hc3luYyggc2VsZiwgdHJhbnMsIGlkLCByYXRpbmcgKToKICAgICAg
ICAgIiIiIFJhdGUgYSBkYXRhc2V0IGFzeW5jaHJvbm91c2x5IGFuZCByZXR1cm4gdXBkYXRlZCBj
b21tdW5pdHkgZGF0PQphLiAiIiIKPTIwCi0gICAgICAgIGRlY29kZWRfaWQgPTNEIHRyYW5zLnNl
Y3VyaXR5LmRlY29kZV9pZCggaWQgKQotICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLm1ncnMuaGRh
cy5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgZGVjb2RlZF9pZCwgdHI9CmFucy51c2VyICkKLSAg
ICAgICAgZGF0YXNldCA9M0Qgc2VsZi5tZ3JzLmhkYXMuZXJyb3JfaWZfdXBsb2FkaW5nKCBkYXRh
c2V0ICkKKyAgICAgICAgZGVjb2RlZF9pZCA9M0Qgc2VsZi5kZWNvZGVfaWQoIGlkICkKKyAgICAg
ICAgZGF0YXNldCA9M0Qgc2VsZi5oZGFfbWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywg
ZGVjb2RlZF9pZCwgPQp0cmFucy51c2VyICkKKyAgICAgICAgZGF0YXNldCA9M0Qgc2VsZi5oZGFf
bWFuYWdlci5lcnJvcl9pZl91cGxvYWRpbmcoIGRhdGFzZXQgKQogICAgICAgICBpZiBub3QgZGF0
YXNldDoKICAgICAgICAgICAgIHJldHVybiB0cmFucy5zaG93X2Vycm9yX21lc3NhZ2UoICJUaGUg
c3BlY2lmaWVkIGRhdGFzZXQgZG9lcyBuPQpvdCBleGlzdC4iICkKPTIwCkBAIC01NzIsMTUgKzU3
MCwxNSBAQAogICAgIGRlZiBkaXNwbGF5X2J5X3VzZXJuYW1lX2FuZF9zbHVnKCBzZWxmLCB0cmFu
cywgdXNlcm5hbWUsIHNsdWcsIGZpbGVuYW09CmU9M0ROb25lLCBwcmV2aWV3PTNEVHJ1ZSApOgog
ICAgICAgICAiIiIgRGlzcGxheSBkYXRhc2V0IGJ5IHVzZXJuYW1lIGFuZCBzbHVnOyBiZWNhdXNl
IGRhdGFzZXRzIGRvIG5vdCA9CnlldCBoYXZlIHNsdWdzLCB0aGUgc2x1ZyBpcyB0aGUgZGF0YXNl
dCdzIGlkLiAiIiIKICAgICAgICAgaWQgPTNEIHNsdWcKLSAgICAgICAgZGVjb2RlZF9pZCA9M0Qg
dHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBpZCApCi0gICAgICAgIGRhdGFzZXQgPTNEIHNlbGYu
bWdycy5oZGFzLmFjY2Vzc2libGVfYnlfaWQoIHRyYW5zLCBkZWNvZGVkX2lkLCB0cj0KYW5zLnVz
ZXIgKQotICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLm1ncnMuaGRhcy5lcnJvcl9pZl91cGxvYWRp
bmcoIGRhdGFzZXQgKQorICAgICAgICBkZWNvZGVkX2lkID0zRCBzZWxmLmRlY29kZV9pZCggaWQg
KQorICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmFjY2Vzc2libGVfYnlfaWQo
IHRyYW5zLCBkZWNvZGVkX2lkLCA9CnRyYW5zLnVzZXIgKQorICAgICAgICBkYXRhc2V0ID0zRCBz
ZWxmLmhkYV9tYW5hZ2VyLmVycm9yX2lmX3VwbG9hZGluZyggZGF0YXNldCApCiAgICAgICAgIGlm
IGRhdGFzZXQ6CiAgICAgICAgICAgICAjIEZpbGVuYW1lIHVzZWQgZm9yIGNvbXBvc2l0ZSB0eXBl
cy4KICAgICAgICAgICAgIGlmIGZpbGVuYW1lOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxm
LmRpc3BsYXkoIHRyYW5zLCBkYXRhc2V0X2lkPTNEc2x1ZywgZmlsZW5hbWU9M0Q9CmZpbGVuYW1l
KQo9MjAKLSAgICAgICAgICAgIHRydW5jYXRlZCwgZGF0YXNldF9kYXRhID0zRCBzZWxmLm1ncnMu
aGRhcy50ZXh0X2RhdGEoIGRhdGFzZXQsPQogcHJldmlldyApCisgICAgICAgICAgICB0cnVuY2F0
ZWQsIGRhdGFzZXRfZGF0YSA9M0Qgc2VsZi5oZGFfbWFuYWdlci50ZXh0X2RhdGEoIGRhdGFzZT0K
dCwgcHJldmlldyApCiAgICAgICAgICAgICBkYXRhc2V0LmFubm90YXRpb24gPTNEIHNlbGYuZ2V0
X2l0ZW1fYW5ub3RhdGlvbl9zdHIoIHRyYW5zLnNhXz0Kc2Vzc2lvbiwgZGF0YXNldC5oaXN0b3J5
LnVzZXIsIGRhdGFzZXQgKQo9MjAKICAgICAgICAgICAgICMgSWYgZGF0YXNldCBpcyBjaHVua2Fi
bGUsIGdldCBmaXJzdCBjaHVuay4KQEAgLTYxNSwxMiArNjEzLDEyIEBACiAgICAgZGVmIGdldF9p
dGVtX2NvbnRlbnRfYXN5bmMoIHNlbGYsIHRyYW5zLCBpZCApOgogICAgICAgICAiIiIgUmV0dXJu
cyBpdGVtIGNvbnRlbnQgaW4gSFRNTCBmb3JtYXQuICIiIgo9MjAKLSAgICAgICAgZGVjb2RlZF9p
ZCA9M0QgdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBpZCApCi0gICAgICAgIGRhdGFzZXQgPTNE
IHNlbGYubWdycy5oZGFzLmFjY2Vzc2libGVfYnlfaWQoIHRyYW5zLCBkZWNvZGVkX2lkLCB0cj0K
YW5zLnVzZXIgKQotICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLm1ncnMuaGRhcy5lcnJvcl9pZl91
cGxvYWRpbmcoIGRhdGFzZXQgKQorICAgICAgICBkZWNvZGVkX2lkID0zRCBzZWxmLmRlY29kZV9p
ZCggaWQgKQorICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmFjY2Vzc2libGVf
YnlfaWQoIHRyYW5zLCBkZWNvZGVkX2lkLCA9CnRyYW5zLnVzZXIgKQorICAgICAgICBkYXRhc2V0
ID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmVycm9yX2lmX3VwbG9hZGluZyggZGF0YXNldCApCiAgICAg
ICAgIGlmIGRhdGFzZXQgaXMgTm9uZToKICAgICAgICAgICAgIHJhaXNlIHdlYi5odHRwZXhjZXB0
aW9ucy5IVFRQTm90Rm91bmQoKQotICAgICAgICB0cnVuY2F0ZWQsIGRhdGFzZXRfZGF0YSA9M0Qg
c2VsZi5tZ3JzLmhkYXMudGV4dF9kYXRhKCBkYXRhc2V0LCBwcmU9CnZpZXc9M0RUcnVlICkKKyAg
ICAgICAgdHJ1bmNhdGVkLCBkYXRhc2V0X2RhdGEgPTNEIHNlbGYuaGRhX21hbmFnZXIudGV4dF9k
YXRhKCBkYXRhc2V0LCBwPQpyZXZpZXc9M0RUcnVlICkKICAgICAgICAgIyBHZXQgYW5ub3RhdGlv
bi4KICAgICAgICAgZGF0YXNldC5hbm5vdGF0aW9uID0zRCBzZWxmLmdldF9pdGVtX2Fubm90YXRp
b25fc3RyKCB0cmFucy5zYV9zZXNzPQppb24sIHRyYW5zLnVzZXIsIGRhdGFzZXQgKQogICAgICAg
ICByZXR1cm4gdHJhbnMuc3RyZWFtX3RlbXBsYXRlX21ha28oICIvZGF0YXNldC9pdGVtX2NvbnRl
bnQubWFrbyIsIGk9CnRlbT0zRGRhdGFzZXQsIGl0ZW1fZGF0YT0zRGRhdGFzZXRfZGF0YSwgdHJ1
bmNhdGVkPTNEdHJ1bmNhdGVkICkKQEAgLTYyOCw5ICs2MjYsOSBAQAogICAgIEB3ZWIuZXhwb3Nl
CiAgICAgZGVmIGFubm90YXRlX2FzeW5jKCBzZWxmLCB0cmFucywgaWQsIG5ld19hbm5vdGF0aW9u
PTNETm9uZSwgKiprd2FyZ3MgKToKICAgICAgICAgI1RPRE86Pz8gd2h5IGlzIHRoaXMgYW4gYWNj
ZXNzIGNoZWNrIG9ubHk/Ci0gICAgICAgIGRlY29kZWRfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmRl
Y29kZV9pZCggaWQgKQotICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLm1ncnMuaGRhcy5hY2Nlc3Np
YmxlX2J5X2lkKCB0cmFucywgZGVjb2RlZF9pZCwgdHI9CmFucy51c2VyICkKLSAgICAgICAgZGF0
YXNldCA9M0Qgc2VsZi5tZ3JzLmhkYXMuZXJyb3JfaWZfdXBsb2FkaW5nKCBkYXRhc2V0ICkKKyAg
ICAgICAgZGVjb2RlZF9pZCA9M0Qgc2VsZi5kZWNvZGVfaWQoIGlkICkKKyAgICAgICAgZGF0YXNl
dCA9M0Qgc2VsZi5oZGFfbWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgZGVjb2RlZF9p
ZCwgPQp0cmFucy51c2VyICkKKyAgICAgICAgZGF0YXNldCA9M0Qgc2VsZi5oZGFfbWFuYWdlci5l
cnJvcl9pZl91cGxvYWRpbmcoIGRhdGFzZXQgKQogICAgICAgICBpZiBub3QgZGF0YXNldDoKICAg
ICAgICAgICAgIHdlYi5odHRwZXhjZXB0aW9ucy5IVFRQTm90Rm91bmQoKQogICAgICAgICBpZiBk
YXRhc2V0IGFuZCBuZXdfYW5ub3RhdGlvbjoKQEAgLTY0Miw5ICs2NDAsOSBAQAo9MjAKICAgICBA
d2ViLmV4cG9zZQogICAgIGRlZiBnZXRfYW5ub3RhdGlvbl9hc3luYyggc2VsZiwgdHJhbnMsIGlk
ICk6Ci0gICAgICAgIGRlY29kZWRfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmRlY29kZV9pZCggaWQg
KQotICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLm1ncnMuaGRhcy5hY2Nlc3NpYmxlX2J5X2lkKCB0
cmFucywgZGVjb2RlZF9pZCwgdHI9CmFucy51c2VyICkKLSAgICAgICAgZGF0YXNldCA9M0Qgc2Vs
Zi5tZ3JzLmhkYXMuZXJyb3JfaWZfdXBsb2FkaW5nKCBkYXRhc2V0ICkKKyAgICAgICAgZGVjb2Rl
ZF9pZCA9M0Qgc2VsZi5kZWNvZGVfaWQoIGlkICkKKyAgICAgICAgZGF0YXNldCA9M0Qgc2VsZi5o
ZGFfbWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgZGVjb2RlZF9pZCwgPQp0cmFucy51
c2VyICkKKyAgICAgICAgZGF0YXNldCA9M0Qgc2VsZi5oZGFfbWFuYWdlci5lcnJvcl9pZl91cGxv
YWRpbmcoIGRhdGFzZXQgKQogICAgICAgICBpZiBub3QgZGF0YXNldDoKICAgICAgICAgICAgIHdl
Yi5odHRwZXhjZXB0aW9ucy5IVFRQTm90Rm91bmQoKQogICAgICAgICBhbm5vdGF0aW9uID0zRCBz
ZWxmLmdldF9pdGVtX2Fubm90YXRpb25fc3RyKCB0cmFucy5zYV9zZXNzaW9uLCB0cmE9Cm5zLnVz
ZXIsIGRhdGFzZXQgKQpAQCAtNzkzLDcgKzc5MSw3IEBACiAgICAgICAgICAgICBoZGEubWFya19k
ZWxldGVkKCkKICAgICAgICAgICAgIGhkYS5jbGVhcl9hc3NvY2lhdGVkX2ZpbGVzKCkKICAgICAg
ICAgICAgIHRyYW5zLmxvZ19ldmVudCggIkRhdGFzZXQgaWQgJXMgbWFya2VkIGFzIGRlbGV0ZWQi
ICUgc3RyKGlkKSApCi0gICAgICAgICAgICBzZWxmLm1ncnMuaGRhcy5zdG9wX2NyZWF0aW5nX2pv
YiggaGRhICkKKyAgICAgICAgICAgIHNlbGYuaGRhX21hbmFnZXIuc3RvcF9jcmVhdGluZ19qb2Io
IGhkYSApCiAgICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKICAgICAgICAgZXhj
ZXB0IEV4Y2VwdGlvbiwgZToKICAgICAgICAgICAgIG1zZyA9M0QgJ0hEQSBkZWxldGlvbiBmYWls
ZWQgKGVuY29kZWQ6ICVzLCBkZWNvZGVkOiAlcyknICUgKCBkPQphdGFzZXRfaWQsIGlkICkKQEAg
LTk1OSw3ICs5NTcsNyBAQAogICAgICAgICBTaG93IHRoZSBwYXJhbWV0ZXJzIHVzZWQgZm9yIHRo
ZSBqb2IgYXNzb2NpYXRlZCB3aXRoIGFuIEhEQQogICAgICAgICAiIiIKICAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgaGRhID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5hcHAubW9k
ZWwuSGlzdG9yeURhdGFzZXQ9CkFzc29jaWF0aW9uICkuZ2V0KCB0cmFucy5zZWN1cml0eS5kZWNv
ZGVfaWQoIGRhdGFzZXRfaWQgKSApCisgICAgICAgICAgICBoZGEgPTNEIHRyYW5zLnNhX3Nlc3Np
b24ucXVlcnkoIHRyYW5zLmFwcC5tb2RlbC5IaXN0b3J5RGF0YXNldD0KQXNzb2NpYXRpb24gKS5n
ZXQoIHNlbGYuZGVjb2RlX2lkKCBkYXRhc2V0X2lkICkgKQogICAgICAgICBleGNlcHQgVmFsdWVF
cnJvcjoKICAgICAgICAgICAgIGhkYSA9M0QgTm9uZQogICAgICAgICBpZiBub3QgaGRhOgpAQCAt
MTAxNyw4ICsxMDE1LDggQEAKICAgICBkZWYgY29weV9kYXRhc2V0cyggc2VsZiwgdHJhbnMsIHNv
dXJjZV9oaXN0b3J5PTNETm9uZSwgc291cmNlX2NvbnRlbnRfPQppZHM9M0QiIiwgdGFyZ2V0X2hp
c3RvcnlfaWQ9M0ROb25lLCB0YXJnZXRfaGlzdG9yeV9pZHM9M0QiIiwgbmV3X2hpc3RvcnlfbmE9
Cm1lPTNEIiIsIGRvX2NvcHk9M0RGYWxzZSwgKiprd2QgKToKICAgICAgICAgdXNlciA9M0QgdHJh
bnMuZ2V0X3VzZXIoKQogICAgICAgICBpZiBzb3VyY2VfaGlzdG9yeSBpcyBub3QgTm9uZToKLSAg
ICAgICAgICAgIGRlY29kZWRfc291cmNlX2hpc3RvcnlfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmRl
Y29kZV9pZCggc291cmNlPQpfaGlzdG9yeSApCi0gICAgICAgICAgICBoaXN0b3J5ID0zRCBzZWxm
Lm1ncnMuaGlzdG9yaWVzLm93bmVkX2J5X2lkKCB0cmFucywgZGVjb2RlZF9zbz0KdXJjZV9oaXN0
b3J5X2lkLCB0cmFucy51c2VyICkKKyAgICAgICAgICAgIGRlY29kZWRfc291cmNlX2hpc3Rvcnlf
aWQgPTNEIHNlbGYuZGVjb2RlX2lkKCBzb3VyY2VfaGlzdG9yeSApCisgICAgICAgICAgICBoaXN0
b3J5ID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdlci5vd25lZF9ieV9pZCggdHJhbnMsIGRlY29kZWRf
cz0Kb3VyY2VfaGlzdG9yeV9pZCwgdHJhbnMudXNlciApCiAgICAgICAgICAgICBjdXJyZW50X2hp
c3RvcnkgPTNEIHRyYW5zLmdldF9oaXN0b3J5KCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAg
IGhpc3RvcnkgPTNEIGN1cnJlbnRfaGlzdG9yeSA9M0QgdHJhbnMuZ2V0X2hpc3RvcnkoKQpAQCAt
MTAzNCwxMSArMTAzMiwxMSBAQAogICAgICAgICAgICAgZGVjb2RlZF9kYXRhc2V0X2NvbGxlY3Rp
b25faWRzID0zRCBbXQogICAgICAgICAgICAgZGVjb2RlZF9kYXRhc2V0X2lkcyA9M0QgW10KICAg
ICAgICAgaWYgdGFyZ2V0X2hpc3RvcnlfaWQ6Ci0gICAgICAgICAgICB0YXJnZXRfaGlzdG9yeV9p
ZHMgPTNEIFsgdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKHRhcmdldF9oaXN0bz0KcnlfaWQpIF0K
KyAgICAgICAgICAgIHRhcmdldF9oaXN0b3J5X2lkcyA9M0QgWyBzZWxmLmRlY29kZV9pZCh0YXJn
ZXRfaGlzdG9yeV9pZCkgXQogICAgICAgICBlbGlmIHRhcmdldF9oaXN0b3J5X2lkczoKICAgICAg
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKCB0YXJnZXRfaGlzdG9yeV9pZHMsIGxpc3QgKToKICAg
ICAgICAgICAgICAgICB0YXJnZXRfaGlzdG9yeV9pZHMgPTNEIHRhcmdldF9oaXN0b3J5X2lkcy5z
cGxpdCgiLCIpCi0gICAgICAgICAgICB0YXJnZXRfaGlzdG9yeV9pZHMgPTNEIGxpc3Qoc2V0KFsg
dHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKGgpID0KZm9yIGggaW4gdGFyZ2V0X2hpc3RvcnlfaWRz
IGlmIGggXSkpCisgICAgICAgICAgICB0YXJnZXRfaGlzdG9yeV9pZHMgPTNEIGxpc3Qoc2V0KFsg
c2VsZi5kZWNvZGVfaWQoaCkgZm9yIGggaW4gdD0KYXJnZXRfaGlzdG9yeV9pZHMgaWYgaCBdKSkK
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHRhcmdldF9oaXN0b3J5X2lkcyA9M0QgW10KICAg
ICAgICAgZG9uZV9tc2cgPTNEIGVycm9yX21zZyA9M0QgIiIKQEAgLTExMTksOSArMTExNyw5IEBA
CiAgICAgICAgICAgICAgICAgaWYgdXNlciAhPTNEIGhpc3RvcnkudXNlcjoKICAgICAgICAgICAg
ICAgICAgICAgZXJyb3JfbXNnID0zRCBlcnJvcl9tc2cgKyAiWW91IGRvIG5vdCBoYXZlIHBlcm1p
c3Npb24gPQp0byBhZGQgZGF0YXNldHMgdG8gJWkgcmVxdWVzdGVkIGhpc3Rvcmllcy4gICIgJSAo
IGxlbiggdGFyZ2V0X2hpc3RvcmllcyApICkKICAgICAgICAgICAgIGZvciBkYXRhc2V0X2lkIGlu
IGRhdGFzZXRfaWRzOgotICAgICAgICAgICAgICAgIGRlY29kZWRfaWQgPTNEIHRyYW5zLnNlY3Vy
aXR5LmRlY29kZV9pZCggZGF0YXNldF9pZCApCi0gICAgICAgICAgICAgICAgZGF0YSA9M0Qgc2Vs
Zi5tZ3JzLmhkYXMuYWNjZXNzaWJsZV9ieV9pZCggdHJhbnMsIGRlY29kZWRfaT0KZCwgdHJhbnMu
dXNlciApCi0gICAgICAgICAgICAgICAgZGF0YSA9M0Qgc2VsZi5tZ3JzLmhkYXMuZXJyb3JfaWZf
dXBsb2FkaW5nKCBkYXRhICkKKyAgICAgICAgICAgICAgICBkZWNvZGVkX2lkID0zRCBzZWxmLmRl
Y29kZV9pZCggZGF0YXNldF9pZCApCisgICAgICAgICAgICAgICAgZGF0YSA9M0Qgc2VsZi5oZGFf
bWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgZGVjb2RlZD0KX2lkLCB0cmFucy51c2Vy
ICkKKyAgICAgICAgICAgICAgICBkYXRhID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmVycm9yX2lmX3Vw
bG9hZGluZyggZGF0YSApCj0yMAogICAgICAgICAgICAgICAgIGlmIGRhdGEgaXMgTm9uZToKICAg
ICAgICAgICAgICAgICAgICAgZXJyb3JfbXNnID0zRCBlcnJvcl9tc2cgKyAiWW91IHRyaWVkIHRv
IGNvcHkgYSBkYXRhc2V0PQogdGhhdCBkb2VzIG5vdCBleGlzdCBvciB0aGF0IHlvdSBkbyBub3Qg
aGF2ZSBhY2Nlc3MgdG8uICAiCgpkaWZmIC1yIDg3ZjFlNmI5NmY5NGNhZTIwOTUxZmQ3Y2ExYWNj
M2RmMjAwYzgyOTkgLXIgNjljNzRiYzk5NjI1ZTM2M2JlY2FkMDg9CmI4ZjljNTVjMjM4NDQ5NzUw
IGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvaGlzdG9yeS5weQotLS0gYS9s
aWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL2hpc3RvcnkucHkKKysrIGIvbGli
L2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9oaXN0b3J5LnB5CkBAIC0yMTQsMTUg
KzIxNCwxNCBAQAo9MjAKICAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgogICAgICAgICBz
dXBlciggSGlzdG9yeUNvbnRyb2xsZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwICkKLSAgICAgICAg
c2VsZi5tZ3JzID0zRCB1dGlsLmJ1bmNoLkJ1bmNoKAotICAgICAgICAgICAgaGlzdG9yaWVzPTNE
bWFuYWdlcnMuaGlzdG9yaWVzLkhpc3RvcnlNYW5hZ2VyKCBhcHAgKQotICAgICAgICApCisgICAg
ICAgIHNlbGYuaGlzdG9yeV9tYW5hZ2VyID0zRCBtYW5hZ2Vycy5oaXN0b3JpZXMuSGlzdG9yeU1h
bmFnZXIoIGFwcCApCiAgICAgICAgIHNlbGYuaGlzdG9yeV9zZXJpYWxpemVyID0zRCBtYW5hZ2Vy
cy5oaXN0b3JpZXMuSGlzdG9yeVNlcmlhbGl6ZXIoID0Kc2VsZi5hcHAgKQo9MjAKICAgICBkZWYg
X2dldF9oaXN0b3J5KCBzZWxmLCB0cmFucywgaWQsIGNoZWNrX293bmVyc2hpcD0zRFRydWUsIGNo
ZWNrX2FjY2VzPQpzaWJsZT0zREZhbHNlLCBkZWxldGVkPTNETm9uZSApOgogICAgICAgICAiIiIK
ICAgICAgICAgR2V0IGEgSGlzdG9yeSBmcm9tIHRoZSBkYXRhYmFzZSBieSBpZCwgdmVyaWZ5aW5n
IG93bmVyc2hpcC4KICAgICAgICAgIiIiCisgICAgICAgICNUT0RPOiBtb3ZlZCBmcm9tIHRoZSBt
aXhpbiAtIHRvIG1hbmFnZXIKICAgICAgICAgaWYgdHJhbnMudXNlciBpcyBOb25lIGFuZCB0cmFu
cy5oaXN0b3J5OgogICAgICAgICAgICAgaWYgaWQgPTNEPTNEIHRyYW5zLnNlY3VyaXR5LmVuY29k
ZV9pZCggdHJhbnMuaGlzdG9yeS5pZCApOgogICAgICAgICAgICAgICAgIHJldHVybiB0cmFucy5o
aXN0b3J5CkBAIC00OTUsNyArNDk0LDcgQEAKICAgICAgICAgaWYgaWQgaXMgTm9uZToKICAgICAg
ICAgICAgIGlkID0zRCB0cmFucy5oaXN0b3J5LmlkCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBpZCA9M0QgdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBpZCApCisgICAgICAgICAgICBpZCA9
M0Qgc2VsZi5kZWNvZGVfaWQoIGlkICkKICAgICAgICAgIyBFeHB1bmdlIGhpc3RvcnkgZnJvbSB0
aGUgc2Vzc2lvbiB0byBhbGxvdyB1cyB0byBmb3JjZSBhIHJlbG9hZAogICAgICAgICAjIHdpdGgg
YSBidW5jaCBvZiBlYWdlciBsb2FkZWQgam9pbnMKICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5l
eHB1bmdlKCB0cmFucy5oaXN0b3J5ICkKQEAgLTU2MywxNyArNTYyLDE2IEBACiAgICAgZGVmIHN0
cnVjdHVyZSggc2VsZiwgdHJhbnMsIGlkPTNETm9uZSwgKiprd2FyZ3MgKToKICAgICAgICAgIiIi
CiAgICAgICAgICIiIgotICAgICAgICBpZiBub3QgaWQ6Ci0gICAgICAgICAgICBpZCA9M0QgdHJh
bnMuc2VjdXJpdHkuZW5jb2RlX2lkKCB0cmFucy5oaXN0b3J5LmlkICkKKyAgICAgICAgaWQgPTNE
IHNlbGYuZGVjb2RlX2lkKCBpZCApIGlmIGlkIGVsc2UgdHJhbnMuaGlzdG9yeS5pZAorICAgICAg
ICBoaXN0b3J5X3RvX3ZpZXcgPTNEIHNlbGYuaGlzdG9yeV9tYW5hZ2VyLmFjY2Vzc2libGVfYnlf
aWQoIHRyYW5zLCA9CmlkLCB0cmFucy51c2VyICkKPTIwCi0gICAgICAgIGhpc3RvcnlfdG9fdmll
dyA9M0Qgc2VsZi5fZ2V0X2hpc3RvcnkoIHRyYW5zLCBpZCwgY2hlY2tfb3duZXJzaGlwPQo9M0RG
YWxzZSwgY2hlY2tfYWNjZXNzaWJsZT0zRFRydWUgKQotICAgICAgICBoaXN0b3J5X2RhdGEgPTNE
IHNlbGYubWdycy5oaXN0b3JpZXMuX2dldF9oaXN0b3J5X2RhdGEoIHRyYW5zLCBoaXM9CnRvcnlf
dG9fdmlldyApCisgICAgICAgIGhpc3RvcnlfZGF0YSA9M0Qgc2VsZi5oaXN0b3J5X21hbmFnZXIu
X2dldF9oaXN0b3J5X2RhdGEoIHRyYW5zLCBoaT0Kc3RvcnlfdG9fdmlldyApCiAgICAgICAgIGhp
c3RvcnlfZGljdGlvbmFyeSA9M0QgaGlzdG9yeV9kYXRhWyAnaGlzdG9yeScgXQogICAgICAgICBo
ZGFfZGljdGlvbmFyaWVzICAgPTNEIGhpc3RvcnlfZGF0YVsgJ2NvbnRlbnRzJyBdCj0yMAogICAg
ICAgICBqb2JzID0zRCAoIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLmFwcC5tb2RlbC5K
b2IgKQogICAgICAgICAgICAgLmZpbHRlciggdHJhbnMuYXBwLm1vZGVsLkpvYi51c2VyID0zRD0z
RCB0cmFucy51c2VyICkKLSAgICAgICAgICAgIC5maWx0ZXIoIHRyYW5zLmFwcC5tb2RlbC5Kb2Iu
aGlzdG9yeV9pZCA9M0Q9M0QgdHJhbnMuc2VjdXJpdHkuPQpkZWNvZGVfaWQoIGlkICkgKSApLmFs
bCgpCisgICAgICAgICAgICAuZmlsdGVyKCB0cmFucy5hcHAubW9kZWwuSm9iLmhpc3RvcnlfaWQg
PTNEPTNEIHNlbGYuZGVjb2RlX2lkKD0KIGlkICkgKSApLmFsbCgpCiAgICAgICAgIGpvYnMgPTNE
IG1hcCggbGFtYmRhIGo6IHNlbGYuZW5jb2RlX2FsbF9pZHMoIHRyYW5zLCBqLnRvX2RpY3QoICdl
bD0KZW1lbnQnICksIFRydWUgKSwgam9icyApCj0yMAogICAgICAgICB0b29scyA9M0Qge30KQEAg
LTYwNSwyMiArNjAzLDExIEBACiAgICAgICAgIGhkYV9kaWN0aW9uYXJpZXMgICA9M0QgW10KICAg
ICAgICAgdXNlcl9pc19vd25lciA9M0QgRmFsc2UKICAgICAgICAgdHJ5OgotICAgICAgICAgICAg
aGlzdG9yeV90b192aWV3ID0zRCBzZWxmLl9nZXRfaGlzdG9yeSggdHJhbnMsIGlkLCBjaGVja19v
d25lcnM9CmhpcD0zREZhbHNlLCBjaGVja19hY2Nlc3NpYmxlPTNERmFsc2UgKQotICAgICAgICAg
ICAgaWYgbm90IGhpc3RvcnlfdG9fdmlldzoKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnMu
c2hvd19lcnJvcl9tZXNzYWdlKCAiVGhlIHNwZWNpZmllZCBoaXN0b3J5IGRvPQplcyBub3QgZXhp
c3QuIiApCi0gICAgICAgICAgICBpZiBoaXN0b3J5X3RvX3ZpZXcudXNlciA9M0Q9M0QgdHJhbnMu
dXNlcjoKLSAgICAgICAgICAgICAgICB1c2VyX2lzX293bmVyID0zRCBUcnVlCi0KLSAgICAgICAg
ICAgIGlmKCAoIGhpc3RvcnlfdG9fdmlldy51c2VyICE9M0QgdHJhbnMudXNlciApCi0gICAgICAg
ICAgICAjIEFkbWluIHVzZXJzIGNhbiB2aWV3IGFueSBoaXN0b3J5Ci0gICAgICAgICAgICBhbmQg
KCBub3QgdHJhbnMudXNlcl9pc19hZG1pbigpICkKLSAgICAgICAgICAgIGFuZCAoIG5vdCBoaXN0
b3J5X3RvX3ZpZXcuaW1wb3J0YWJsZSApCi0gICAgICAgICAgICBhbmQgKCB0cmFucy51c2VyIG5v
dCBpbiBoaXN0b3J5X3RvX3ZpZXcudXNlcnNfc2hhcmVkX3dpdGhfZG90Xz0KdXNlcnMgKSApOgot
ICAgICAgICAgICAgICAgIHJldHVybiB0cmFucy5zaG93X2Vycm9yX21lc3NhZ2UoICJFaXRoZXIg
eW91IGFyZSBub3QgYWxsb3c9CmVkIHRvIHZpZXcgdGhpcyBoaXN0b3J5IgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgb3IgdGhlIG93bmVyIG9mIHRo
aXMgaGk9CnN0b3J5IGhhcyBub3QgbWFkZSBpdCBhY2Nlc3NpYmxlLiIgKQorICAgICAgICAgICAg
aGlzdG9yeV90b192aWV3ID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lk
KCB0cmE9Cm5zLCBpZCwgdHJhbnMudXNlciApCisgICAgICAgICAgICB1c2VyX2lzX293bmVyID0z
RCBoaXN0b3J5X3RvX3ZpZXcudXNlciA9M0Q9M0QgdHJhbnMudXNlcgo9MjAKICAgICAgICAgICAg
ICMgaW5jbHVkZSBhbGwgZGF0YXNldHM6IGhpZGRlbiwgZGVsZXRlZCwgYW5kIHB1cmdlZAotICAg
ICAgICAgICAgaGlzdG9yeV9kYXRhID0zRCBzZWxmLm1ncnMuaGlzdG9yaWVzLl9nZXRfaGlzdG9y
eV9kYXRhKCB0cmFucyw9CiBoaXN0b3J5X3RvX3ZpZXcgKQorICAgICAgICAgICAgaGlzdG9yeV9k
YXRhID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdlci5fZ2V0X2hpc3RvcnlfZGF0YSggdHJhbnM9Ciwg
aGlzdG9yeV90b192aWV3ICkKICAgICAgICAgICAgIGhpc3RvcnlfZGljdGlvbmFyeSA9M0QgaGlz
dG9yeV9kYXRhWyAnaGlzdG9yeScgXQogICAgICAgICAgICAgaGRhX2RpY3Rpb25hcmllcyAgID0z
RCBoaXN0b3J5X2RhdGFbICdjb250ZW50cycgXQo9MjAKQEAgLTY1OCw3ICs2NDUsNyBAQAogICAg
ICAgICBjdXJyZW50X2hpc3RvcnlfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggY3Vy
cmVudF9oaXN0b3J5Lmk9CmQgKSBpZiBjdXJyZW50X2hpc3RvcnkgZWxzZSBOb25lCj0yMAogICAg
ICAgICBoaXN0b3J5X2RpY3Rpb25hcmllcyA9M0QgW10KLSAgICAgICAgZm9yIGhpc3RvcnkgaW4g
c2VsZi5tZ3JzLmhpc3Rvcmllcy5ieV91c2VyKCB0cmFucywgdHJhbnMudXNlciwgZmlsPQp0ZXJz
PTNEZGVsZXRlZF9maWx0ZXIgKToKKyAgICAgICAgZm9yIGhpc3RvcnkgaW4gc2VsZi5oaXN0b3J5
X21hbmFnZXIuYnlfdXNlciggdHJhbnMsIHRyYW5zLnVzZXIsIGZpPQpsdGVycz0zRGRlbGV0ZWRf
ZmlsdGVyICk6CiAgICAgICAgICAgICBoaXN0b3J5X2RpY3Rpb25hcnkgPTNEIHNlbGYuaGlzdG9y
eV9zZXJpYWxpemVyLnNlcmlhbGl6ZV90b192aT0KZXcoIHRyYW5zLCBoaXN0b3J5LCB2aWV3PTNE
J2RldGFpbGVkJyApCiAgICAgICAgICAgICBoaXN0b3J5X2RpY3Rpb25hcmllcy5hcHBlbmQoIGhp
c3RvcnlfZGljdGlvbmFyeSApCj0yMApAQCAtNjkyLDcgKzY3OSw3IEBACj0yMAogICAgICAgICAj
IGNyZWF0ZSBvd25lcnNoaXAgZmxhZyBmb3IgdGVtcGxhdGUsIGRpY3RpZnkgbW9kZWxzCiAgICAg
ICAgIHVzZXJfaXNfb3duZXIgPTNEIHRyYW5zLnVzZXIgPTNEPTNEIGhpc3RvcnkudXNlcgotICAg
ICAgICBoaXN0b3J5X2RhdGEgPTNEIHNlbGYubWdycy5oaXN0b3JpZXMuX2dldF9oaXN0b3J5X2Rh
dGEoIHRyYW5zLCBoaXM9CnRvcnkgKQorICAgICAgICBoaXN0b3J5X2RhdGEgPTNEIHNlbGYuaGlz
dG9yeV9tYW5hZ2VyLl9nZXRfaGlzdG9yeV9kYXRhKCB0cmFucywgaGk9CnN0b3J5ICkKICAgICAg
ICAgaGlzdG9yeV9kaWN0ID0zRCBoaXN0b3J5X2RhdGFbICdoaXN0b3J5JyBdCiAgICAgICAgIGhk
YV9kaWN0cyA9M0QgaGlzdG9yeV9kYXRhWyAnY29udGVudHMnIF0KPTIwCkBAIC03NDIsNyArNzI5
LDcgQEAKICAgICAgICAgICAgIGVsaWYgJ2Rpc2FibGVfbGlua19hY2Nlc3NfYW5kX3VucHVibGlz
aCcgaW4ga3dhcmdzOgogICAgICAgICAgICAgICAgIGhpc3RvcnkuaW1wb3J0YWJsZSA9M0QgaGlz
dG9yeS5wdWJsaXNoZWQgPTNEIEZhbHNlCiAgICAgICAgICAgICBlbGlmICd1bnNoYXJlX3VzZXIn
IGluIGt3YXJnczoKLSAgICAgICAgICAgICAgICB1c2VyID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1
ZXJ5KCB0cmFucy5hcHAubW9kZWwuVXNlciApLmdlPQp0KCB0cmFucy5zZWN1cml0eS5kZWNvZGVf
aWQoIGt3YXJnc1sgJ3Vuc2hhcmVfdXNlcicgXSApICkKKyAgICAgICAgICAgICAgICB1c2VyID0z
RCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5hcHAubW9kZWwuVXNlciApLmdlPQp0KCBz
ZWxmLmRlY29kZV9pZCgga3dhcmdzWyAndW5zaGFyZV91c2VyJyBdICkgKQogICAgICAgICAgICAg
ICAgICMgTG9vayBmb3IgYW5kIGRlbGV0ZSBzaGFyaW5nIHJlbGF0aW9uIGZvciBoaXN0b3J5LXVz
ZXIuCiAgICAgICAgICAgICAgICAgZGVsZXRlZF9zaGFyaW5nX3JlbGF0aW9uID0zRCBGYWxzZQog
ICAgICAgICAgICAgICAgIGh1c2FzID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cmFucy5h
cHAubW9kZWwuSGlzdG9yeVU9CnNlclNoYXJlQXNzb2NpYXRpb24gKS5maWx0ZXJfYnkoIHVzZXI9
M0R1c2VyLCBoaXN0b3J5PTNEaGlzdG9yeSApLmFsbCgpCkBAIC0xMTMwLDcgKzExMTcsNyBAQAog
ICAgICAgICAgICAgICAgICAgICB0cmFucy5hcHAuam9iX21hbmFnZXIuam9iX3N0b3BfcXVldWUu
cHV0KCBqb2IuaWQgKQo9MjAKICAgICAgICAgIyBSZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgd2Fz
IHByZXZpb3VzbHkgZGVsZXRlZCwgZ2V0IHRoZSBtb3N0IHJlPQpjZW50IGhpc3Rvcnkgb3IgY3Jl
YXRlIGEgbmV3IG9uZS4KLSAgICAgICAgbW9zdF9yZWNlbnRfaGlzdG9yeSA9M0Qgc2VsZi5tZ3Jz
Lmhpc3Rvcmllcy5tb3N0X3JlY2VudCggdHJhbnMsIHVzPQplcj0zRHRyYW5zLnVzZXIgKQorICAg
ICAgICBtb3N0X3JlY2VudF9oaXN0b3J5ID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdlci5tb3N0X3Jl
Y2VudCggdHJhbnMsIHU9CnNlcj0zRHRyYW5zLnVzZXIgKQogICAgICAgICBpZiBtb3N0X3JlY2Vu
dF9oaXN0b3J5OgogICAgICAgICAgICAgdHJhbnMuc2V0X2hpc3RvcnkoIG1vc3RfcmVjZW50X2hp
c3RvcnkgKQogICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnNob3dfb2tfbWVzc2FnZSggIkhpc3Rv
cnkgZGVsZXRlZCwgeW91ciBtb3N0IHJlY2U9Cm50IGhpc3RvcnkgaXMgbm93IGFjdGl2ZSIsCkBA
IC0xNDgzLDcgKzE0NzAsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgIiIiCiAgICAgICAgIHRy
eToKLSAgICAgICAgICAgIGhpc3RvcnkgPTNEIHNlbGYubWdycy5oaXN0b3JpZXMub3duZWRfYnlf
aWQoIHRyYW5zLCB0cmFucy5zZWN1PQpyaXR5LmRlY29kZV9pZCggaWQgKSwgdHJhbnMudXNlciAp
CisgICAgICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdlci5vd25lZF9ieV9p
ZCggdHJhbnMsIHNlbGYuZGVjbz0KZGVfaWQoIGlkICksIHRyYW5zLnVzZXIgKQogICAgICAgICAg
ICAgdHJhbnMuc2V0X2hpc3RvcnkoIGhpc3RvcnkgKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYu
aGlzdG9yeV9zZXJpYWxpemVyLnNlcmlhbGl6ZV90b192aWV3KCB0cmFucywgaGlzdG89CnJ5LCB2
aWV3PTNEJ2RldGFpbGVkJyApCiAgICAgICAgIGV4Y2VwdCBleGNlcHRpb25zLk1lc3NhZ2VFeGNl
cHRpb24sIG1zZ19leGM6CgpkaWZmIC1yIDg3ZjFlNmI5NmY5NGNhZTIwOTUxZmQ3Y2ExYWNjM2Rm
MjAwYzgyOTkgLXIgNjljNzRiYzk5NjI1ZTM2M2JlY2FkMDg9CmI4ZjljNTVjMjM4NDQ5NzUwIGxp
Yi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvcGFnZS5weQotLS0gYS9saWIvZ2Fs
YXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL3BhZ2UucHkKKysrIGIvbGliL2dhbGF4eS93
ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9wYWdlLnB5CkBAIC0yODksMTAgKzI4OSw4IEBACj0y
MAogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CiAgICAgICAgIHN1cGVyKCBQYWdlQ29u
dHJvbGxlciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQotICAgICAgICBzZWxmLm1ncnMgPTNEIHV0
aWwuYnVuY2guQnVuY2goCi0gICAgICAgICAgICBoaXN0b3JpZXM9M0RtYW5hZ2Vycy5oaXN0b3Jp
ZXMuSGlzdG9yeU1hbmFnZXIoIGFwcCApLAotICAgICAgICAgICAgaGRhcz0zRG1hbmFnZXJzLmhk
YXMuSERBTWFuYWdlciggYXBwICksCi0gICAgICAgICkKKyAgICAgICAgc2VsZi5oaXN0b3J5X21h
bmFnZXIgPTNEIG1hbmFnZXJzLmhpc3Rvcmllcy5IaXN0b3J5TWFuYWdlciggYXBwICkKKyAgICAg
ICAgc2VsZi5oZGFfbWFuYWdlciA9M0QgbWFuYWdlcnMuaGRhcy5IREFNYW5hZ2VyKCBhcHAgKQo9
MjAKICAgICBAd2ViLmV4cG9zZQogICAgIEB3ZWIucmVxdWlyZV9sb2dpbigpCkBAIC0zMDQsNyAr
MzAyLDcgQEAKICAgICAgICAgICAgIG9wZXJhdGlvbiA9M0Qga3dhcmdzWydvcGVyYXRpb24nXS5s
b3dlcigpCiAgICAgICAgICAgICBpZHMgPTNEIHV0aWwubGlzdGlmeSgga3dhcmdzWydpZCddICkK
ICAgICAgICAgICAgIGZvciBpZCBpbiBpZHM6Ci0gICAgICAgICAgICAgICAgaXRlbSA9M0Qgc2Vz
c2lvbi5xdWVyeSggbW9kZWwuUGFnZSApLmdldCggdHJhbnMuc2VjdXJpdHkuZD0KZWNvZGVfaWQo
IGlkICkgKQorICAgICAgICAgICAgICAgIGl0ZW0gPTNEIHNlc3Npb24ucXVlcnkoIG1vZGVsLlBh
Z2UgKS5nZXQoIHNlbGYuZGVjb2RlX2lkKCA9CmlkICkgKQogICAgICAgICAgICAgICAgIGlmIG9w
ZXJhdGlvbiA9M0Q9M0QgImRlbGV0ZSI6CiAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZGVsZXRl
ZCA9M0QgVHJ1ZQogICAgICAgICAgICAgICAgIGlmIG9wZXJhdGlvbiA9M0Q9M0QgInNoYXJlIG9y
IHB1Ymxpc2giOgpAQCAtMzk3LDcgKzM5NSw3IEBACiAgICAgICAgIEVkaXQgYSBwYWdlJ3MgYXR0
cmlidXRlcy4KICAgICAgICAgIiIiCiAgICAgICAgIGVuY29kZWRfaWQgPTNEIGlkCi0gICAgICAg
IGlkID0zRCB0cmFucy5zZWN1cml0eS5kZWNvZGVfaWQoIGlkICkKKyAgICAgICAgaWQgPTNEIHNl
bGYuZGVjb2RlX2lkKCBpZCApCiAgICAgICAgIHNlc3Npb24gPTNEIHRyYW5zLnNhX3Nlc3Npb24K
ICAgICAgICAgcGFnZSA9M0Qgc2Vzc2lvbi5xdWVyeSggbW9kZWwuUGFnZSApLmdldCggaWQgKQog
ICAgICAgICB1c2VyID0zRCB0cmFucy51c2VyCkBAIC00NDcsNyArNDQ1LDcgQEAKICAgICAgICAg
IiIiCiAgICAgICAgIFJlbmRlciB0aGUgbWFpbiBwYWdlIGVkaXRvciBpbnRlcmZhY2UuCiAgICAg
ICAgICIiIgotICAgICAgICBpZCA9M0QgdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBpZCApCisg
ICAgICAgIGlkID0zRCBzZWxmLmRlY29kZV9pZCggaWQgKQogICAgICAgICBwYWdlID0zRCB0cmFu
cy5zYV9zZXNzaW9uLnF1ZXJ5KCBtb2RlbC5QYWdlICkuZ2V0KCBpZCApCiAgICAgICAgIGFzc2Vy
dCBwYWdlLnVzZXIgPTNEPTNEIHRyYW5zLnVzZXIKICAgICAgICAgcmV0dXJuIHRyYW5zLmZpbGxf
dGVtcGxhdGUoICJwYWdlL2VkaXRvci5tYWtvIiwgcGFnZT0zRHBhZ2UgKQpAQCAtNDU5LDcgKzQ1
Nyw3IEBACj0yMAogICAgICAgICAjIEdldCBzZXNzaW9uIGFuZCBwYWdlLgogICAgICAgICBzZXNz
aW9uID0zRCB0cmFucy5zYV9zZXNzaW9uCi0gICAgICAgIHBhZ2UgPTNEIHRyYW5zLnNhX3Nlc3Np
b24ucXVlcnkoIG1vZGVsLlBhZ2UgKS5nZXQoIHRyYW5zLnNlY3VyaXR5Lj0KZGVjb2RlX2lkKCBp
ZCApICkKKyAgICAgICAgcGFnZSA9M0QgdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggbW9kZWwuUGFn
ZSApLmdldCggc2VsZi5kZWNvZGVfaWQoPQogaWQgKSApCj0yMAogICAgICAgICAjIERvIG9wZXJh
dGlvbiBvbiBwYWdlLgogICAgICAgICBpZiAnbWFrZV9hY2Nlc3NpYmxlX3ZpYV9saW5rJyBpbiBr
d2FyZ3M6CkBAIC00NzYsNyArNDc0LDcgQEAKICAgICAgICAgZWxpZiAnZGlzYWJsZV9saW5rX2Fj
Y2Vzc19hbmRfdW5wdWJsaXNoJyBpbiBrd2FyZ3M6CiAgICAgICAgICAgICBwYWdlLmltcG9ydGFi
bGUgPTNEIHBhZ2UucHVibGlzaGVkID0zRCBGYWxzZQogICAgICAgICBlbGlmICd1bnNoYXJlX3Vz
ZXInIGluIGt3YXJnczoKLSAgICAgICAgICAgIHVzZXIgPTNEIHNlc3Npb24ucXVlcnkoIG1vZGVs
LlVzZXIgKS5nZXQoIHRyYW5zLnNlY3VyaXR5LmRlY29kPQplX2lkKCBrd2FyZ3NbJ3Vuc2hhcmVf
dXNlcicgXSApICkKKyAgICAgICAgICAgIHVzZXIgPTNEIHNlc3Npb24ucXVlcnkoIG1vZGVsLlVz
ZXIgKS5nZXQoIHNlbGYuZGVjb2RlX2lkKCBrd2FyPQpnc1sndW5zaGFyZV91c2VyJyBdICkgKQog
ICAgICAgICAgICAgaWYgbm90IHVzZXI6CiAgICAgICAgICAgICAgICAgZXJyb3IoICJVc2VyIG5v
dCBmb3VuZCBmb3IgcHJvdmlkZWQgaWQiICkKICAgICAgICAgICAgIGFzc29jaWF0aW9uID0zRCBz
ZXNzaW9uLnF1ZXJ5KCBtb2RlbC5QYWdlVXNlclNoYXJlQXNzb2NpYXRpb24gPQopIFwKQEAgLTQ5
Myw3ICs0OTEsNyBAQAogICAgIGRlZiBzaGFyZSggc2VsZiwgdHJhbnMsIGlkLCBlbWFpbD0zRCIi
LCB1c2VfcGFuZWxzPTNERmFsc2UgKToKICAgICAgICAgIiIiIEhhbmRsZSBzaGFyaW5nIHdpdGgg
YW4gaW5kaXZpZHVhbCB1c2VyLiAiIiIKICAgICAgICAgbXNnID0zRCBtdHlwZSA9M0QgTm9uZQot
ICAgICAgICBwYWdlID0zRCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCBtb2RlbC5QYWdlICkuZ2V0
KCB0cmFucy5zZWN1cml0eS49CmRlY29kZV9pZCggaWQgKSApCisgICAgICAgIHBhZ2UgPTNEIHRy
YW5zLnNhX3Nlc3Npb24ucXVlcnkoIG1vZGVsLlBhZ2UgKS5nZXQoIHNlbGYuZGVjb2RlX2lkKD0K
IGlkICkgKQogICAgICAgICBpZiBlbWFpbDoKICAgICAgICAgICAgIG90aGVyID0zRCB0cmFucy5z
YV9zZXNzaW9uLnF1ZXJ5KCBtb2RlbC5Vc2VyICkgXAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLmZpbHRlciggYW5kXyggbW9kZWwuVXNlci50YWJsZS5jLmVtYWk9Cmw9M0Q9
M0RlbWFpbCwKQEAgLTUzMSw3ICs1MjksNyBAQAogICAgIEB3ZWIuZXhwb3NlCiAgICAgQHdlYi5y
ZXF1aXJlX2xvZ2luKCkKICAgICBkZWYgc2F2ZSggc2VsZiwgdHJhbnMsIGlkLCBjb250ZW50LCBh
bm5vdGF0aW9ucyApOgotICAgICAgICBpZCA9M0QgdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2lkKCBp
ZCApCisgICAgICAgIGlkID0zRCBzZWxmLmRlY29kZV9pZCggaWQgKQogICAgICAgICBwYWdlID0z
RCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCBtb2RlbC5QYWdlICkuZ2V0KCBpZCApCiAgICAgICAg
IGFzc2VydCBwYWdlLnVzZXIgPTNEPTNEIHRyYW5zLnVzZXIKPTIwCkBAIC01NDgsNyArNTQ2LDcg
QEAKICAgICAgICAgIyBTYXZlIGFubm90YXRpb25zLgogICAgICAgICBhbm5vdGF0aW9ucyA9M0Qg
bG9hZHMoIGFubm90YXRpb25zICkKICAgICAgICAgZm9yIGFubm90YXRpb25fZGljdCBpbiBhbm5v
dGF0aW9uczoKLSAgICAgICAgICAgIGl0ZW1faWQgPTNEIHRyYW5zLnNlY3VyaXR5LmRlY29kZV9p
ZCggYW5ub3RhdGlvbl9kaWN0WyAnaXRlbV9pPQpkJyBdICkKKyAgICAgICAgICAgIGl0ZW1faWQg
PTNEIHNlbGYuZGVjb2RlX2lkKCBhbm5vdGF0aW9uX2RpY3RbICdpdGVtX2lkJyBdICkKICAgICAg
ICAgICAgIGl0ZW1fY2xhc3MgPTNEIHNlbGYuZ2V0X2NsYXNzKCBhbm5vdGF0aW9uX2RpY3RbICdp
dGVtX2NsYXNzJyBdPQogKQogICAgICAgICAgICAgaXRlbSA9M0QgdHJhbnMuc2Ffc2Vzc2lvbi5x
dWVyeSggaXRlbV9jbGFzcyApLmZpbHRlcl9ieSggaWQ9M0Q9Cml0ZW1faWQgKS5maXJzdCgpCiAg
ICAgICAgICAgICBpZiBub3QgaXRlbToKQEAgLTU4MSw3ICs1NzksNyBAQAogICAgIEB3ZWIuZXhw
b3NlCiAgICAgQHdlYi5yZXF1aXJlX2xvZ2luKCkKICAgICBkZWYgZGlzcGxheSggc2VsZiwgdHJh
bnMsIGlkICk6Ci0gICAgICAgIGlkID0zRCB0cmFucy5zZWN1cml0eS5kZWNvZGVfaWQoIGlkICkK
KyAgICAgICAgaWQgPTNEIHNlbGYuZGVjb2RlX2lkKCBpZCApCiAgICAgICAgIHBhZ2UgPTNEIHRy
YW5zLnNhX3Nlc3Npb24ucXVlcnkoIG1vZGVsLlBhZ2UgKS5nZXQoIGlkICkKICAgICAgICAgaWYg
bm90IHBhZ2U6CiAgICAgICAgICAgICByYWlzZSB3ZWIuaHR0cGV4Y2VwdGlvbnMuSFRUUE5vdEZv
dW5kKCkKQEAgLTcxNSw3ICs3MTMsNyBAQAogICAgIGRlZiBnZXRfcGFnZSggc2VsZiwgdHJhbnMs
IGlkLCBjaGVja19vd25lcnNoaXA9M0RUcnVlLCBjaGVja19hY2Nlc3NpYmw9CmU9M0RGYWxzZSAp
OgogICAgICAgICAiIiJHZXQgYSBwYWdlIGZyb20gdGhlIGRhdGFiYXNlIGJ5IGlkLiIiIgogICAg
ICAgICAjIExvYWQgaGlzdG9yeSBmcm9tIGRhdGFiYXNlCi0gICAgICAgIGlkID0zRCB0cmFucy5z
ZWN1cml0eS5kZWNvZGVfaWQoIGlkICkKKyAgICAgICAgaWQgPTNEIHNlbGYuZGVjb2RlX2lkKCBp
ZCApCiAgICAgICAgIHBhZ2UgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIG1vZGVsLlBhZ2Ug
KS5nZXQoIGlkICkKICAgICAgICAgaWYgbm90IHBhZ2U6CiAgICAgICAgICAgICBlcnJvciggIlBh
Z2Ugbm90IGZvdW5kIiApCkBAIC03MzAsOCArNzI4LDggQEAKICAgICAgICAgUmV0dXJucyBodG1s
IHN1aXRhYmxlIGZvciBlbWJlZGRpbmcgaW4gYW5vdGhlciBwYWdlLgogICAgICAgICAiIiIKICAg
ICAgICAgI1RPRE86IHNob3VsZCBiZSBtb3ZlZCB0byBoaXN0b3J5IGNvbnRyb2xsZXIgYW5kL29y
IGNhbGxlZCB2aWEgYWphPQp4IGZyb20gdGhlIHRlbXBsYXRlCi0gICAgICAgIGRlY29kZWRfaWQg
PTNEIHRyYW5zLnNlY3VyaXR5LmRlY29kZV9pZCggaWQgKQotICAgICAgICBoaXN0b3J5ID0zRCBz
ZWxmLm1ncnMuaGlzdG9yaWVzLmFjY2Vzc2libGVfYnlfaWQoIHRyYW5zLCBkZWNvZGVkX2k9CmQs
IHRyYW5zLnVzZXIgKQorICAgICAgICBkZWNvZGVkX2lkID0zRCBzZWxmLmRlY29kZV9pZCggaWQg
KQorICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdlci5hY2Nlc3NpYmxlX2J5
X2lkKCB0cmFucywgZGVjb2RlZF89CmlkLCB0cmFucy51c2VyICkKICAgICAgICAgaWYgbm90IGhp
c3Rvcnk6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQo9MjAKQEAgLTc0MSw3ICs3MzksNyBAQAog
ICAgICAgICBoaXN0b3J5LmFubm90YXRpb24gPTNEIHNlbGYuZ2V0X2l0ZW1fYW5ub3RhdGlvbl9z
dHIoIHRyYW5zLnNhX3Nlc3M9CmlvbiwgaGlzdG9yeS51c2VyLCBoaXN0b3J5ICkKPTIwCiAgICAg
ICAgICMgaW5jbHVkZSBhbGwgZGF0YXNldHM6IGhpZGRlbiwgZGVsZXRlZCwgYW5kIHB1cmdlZAot
ICAgICAgICBoaXN0b3J5X2RhdGEgPTNEIHNlbGYubWdycy5oaXN0b3JpZXMuX2dldF9oaXN0b3J5
X2RhdGEoIHRyYW5zLCBoaXM9CnRvcnkgKQorICAgICAgICBoaXN0b3J5X2RhdGEgPTNEIHNlbGYu
aGlzdG9yeV9tYW5hZ2VyLl9nZXRfaGlzdG9yeV9kYXRhKCB0cmFucywgaGk9CnN0b3J5ICkKICAg
ICAgICAgaGlzdG9yeV9kaWN0aW9uYXJ5ID0zRCBoaXN0b3J5X2RhdGFbICdoaXN0b3J5JyBdCiAg
ICAgICAgIGhkYV9kaWN0aW9uYXJpZXMgICA9M0QgaGlzdG9yeV9kYXRhWyAnY29udGVudHMnIF0K
ICAgICAgICAgaGlzdG9yeV9kaWN0aW9uYXJ5WyAnYW5ub3RhdGlvbicgXSA9M0QgaGlzdG9yeS5h
bm5vdGF0aW9uCkBAIC03NzksMTMgKzc3NywxMyBAQAogICAgICAgICAgICAgcmV0dXJuIHNlbGYu
X2dldF9lbWJlZGRlZF9oaXN0b3J5X2h0bWwoIHRyYW5zLCBpdGVtX2lkICkKPTIwCiAgICAgICAg
IGVsaWYgaXRlbV9jbGFzcyA9M0Q9M0QgbW9kZWwuSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbjoK
LSAgICAgICAgICAgIGRlY29kZWRfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmRlY29kZV9pZCggaXRl
bV9pZCApCi0gICAgICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLm1ncnMuaGRhcy5hY2Nlc3NpYmxl
X2J5X2lkKCB0cmFucywgZGVjb2RlZF9pZD0KLCB0cmFucy51c2VyICkKLSAgICAgICAgICAgIGRh
dGFzZXQgPTNEIHNlbGYubWdycy5oZGFzLmVycm9yX2lmX3VwbG9hZGluZyggZGF0YXNldCApCisg
ICAgICAgICAgICBkZWNvZGVkX2lkID0zRCBzZWxmLmRlY29kZV9pZCggaXRlbV9pZCApCisgICAg
ICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmFjY2Vzc2libGVfYnlfaWQoIHRy
YW5zLCBkZWNvZGVkXz0KaWQsIHRyYW5zLnVzZXIgKQorICAgICAgICAgICAgZGF0YXNldCA9M0Qg
c2VsZi5oZGFfbWFuYWdlci5lcnJvcl9pZl91cGxvYWRpbmcoIGRhdGFzZXQgKQo9MjAKICAgICAg
ICAgICAgIGRhdGFzZXQuYW5ub3RhdGlvbiA9M0Qgc2VsZi5nZXRfaXRlbV9hbm5vdGF0aW9uX3N0
ciggdHJhbnMuc2FfPQpzZXNzaW9uLCBkYXRhc2V0Lmhpc3RvcnkudXNlciwgZGF0YXNldCApCiAg
ICAgICAgICAgICBpZiBkYXRhc2V0OgotICAgICAgICAgICAgICAgIGRhdGEgPTNEIHNlbGYubWdy
cy5oZGFzLnRleHRfZGF0YSggZGF0YXNldCApCisgICAgICAgICAgICAgICAgZGF0YSA9M0Qgc2Vs
Zi5oZGFfbWFuYWdlci50ZXh0X2RhdGEoIGRhdGFzZXQgKQogICAgICAgICAgICAgICAgIHJldHVy
biB0cmFucy5maWxsX3RlbXBsYXRlKCAiZGF0YXNldC9lbWJlZC5tYWtvIiwgaXRlbT0zRGQ9CmF0
YXNldCwgaXRlbV9kYXRhPTNEZGF0YSApCj0yMAogICAgICAgICBlbGlmIGl0ZW1fY2xhc3MgPTNE
PTNEIG1vZGVsLlN0b3JlZFdvcmtmbG93OgoKZGlmZiAtciA4N2YxZTZiOTZmOTRjYWUyMDk1MWZk
N2NhMWFjYzNkZjIwMGM4Mjk5IC1yIDY5Yzc0YmM5OTYyNWUzNjNiZWNhZDA4PQpiOGY5YzU1YzIz
ODQ0OTc1MCBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL3Jvb3QucHkKLS0t
IGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9yb290LnB5CisrKyBiL2xp
Yi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvcm9vdC5weQpAQCAtMjYsOSArMjYs
NyBAQAogICAgICIiIgogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CiAgICAgICAgIHN1
cGVyKCBSb290Q29udHJvbGxlciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQotICAgICAgICBzZWxm
Lm1ncnMgPTNEIHV0aWwuYnVuY2guQnVuY2goCi0gICAgICAgICAgICBoaXN0b3JpZXM9M0RtYW5h
Z2Vycy5oaXN0b3JpZXMuSGlzdG9yeU1hbmFnZXIoIGFwcCApCi0gICAgICAgICkKKyAgICAgICAg
c2VsZi5oaXN0b3J5X21hbmFnZXIgPTNEIG1hbmFnZXJzLmhpc3Rvcmllcy5IaXN0b3J5TWFuYWdl
ciggYXBwICkKPTIwCiAgICAgQHdlYi5leHBvc2UKICAgICBkZWYgZGVmYXVsdChzZWxmLCB0cmFu
cywgdGFyZ2V0MT0zRE5vbmUsIHRhcmdldDI9M0ROb25lLCAqKmt3ZCk6CkBAIC0xMjgsNyArMTI2
LDcgQEAKICAgICAgICAgaGlzdG9yeV9kaWN0aW9uYXJ5ID0zRCB7fQogICAgICAgICBoZGFfZGlj
dGlvbmFyaWVzID0zRCBbXQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBoaXN0b3J5X2RhdGEg
PTNEIHNlbGYubWdycy5oaXN0b3JpZXMuX2dldF9oaXN0b3J5X2RhdGEoIHRyYW5zLD0KIHRyYW5z
LmdldF9oaXN0b3J5KCBjcmVhdGU9M0RUcnVlICkgKQorICAgICAgICAgICAgaGlzdG9yeV9kYXRh
ID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdlci5fZ2V0X2hpc3RvcnlfZGF0YSggdHJhbnM9CiwgdHJh
bnMuZ2V0X2hpc3RvcnkoIGNyZWF0ZT0zRFRydWUgKSApCiAgICAgICAgICAgICBoaXN0b3J5X2Rp
Y3Rpb25hcnkgPTNEIGhpc3RvcnlfZGF0YVsgJ2hpc3RvcnknIF0KICAgICAgICAgICAgIGhkYV9k
aWN0aW9uYXJpZXMgICA9M0QgaGlzdG9yeV9kYXRhWyAnY29udGVudHMnIF0KPTIwCkBAIC0xNzAs
NyArMTY4LDcgQEAKICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oICJObyBkYXRhc2V0
IHdpdGggaGlkICclZCciICUgaGlkICkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGlmIGVu
Y29kZWRfaWQgYW5kIG5vdCBpZDoKLSAgICAgICAgICAgICAgICBpZCA9M0QgdHJhbnMuc2VjdXJp
dHkuZGVjb2RlX2lkKCBlbmNvZGVkX2lkICkKKyAgICAgICAgICAgICAgICBpZCA9M0Qgc2VsZi5k
ZWNvZGVfaWQoIGVuY29kZWRfaWQgKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAg
IGRhdGEgPTNEIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHNlbGYuYXBwLm1vZGVsLkhpc3RvcnlE
YXQ9CmFzZXRBc3NvY2lhdGlvbiApLmdldCggaWQgKQogICAgICAgICAgICAgZXhjZXB0OgoKZGlm
ZiAtciA4N2YxZTZiOTZmOTRjYWUyMDk1MWZkN2NhMWFjYzNkZjIwMGM4Mjk5IC1yIDY5Yzc0YmM5
OTYyNWUzNjNiZWNhZDA4PQpiOGY5YzU1YzIzODQ0OTc1MCBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2Fs
YXh5L2NvbnRyb2xsZXJzL3Zpc3VhbGl6YXRpb24ucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBz
L2dhbGF4eS9jb250cm9sbGVycy92aXN1YWxpemF0aW9uLnB5CisrKyBiL2xpYi9nYWxheHkvd2Vi
YXBwcy9nYWxheHkvY29udHJvbGxlcnMvdmlzdWFsaXphdGlvbi5weQpAQCAtMTI5LDcgKzEyOSw3
IEBACiBjbGFzcyBIaXN0b3J5Q29sdW1uKCBncmlkcy5HcmlkQ29sdW1uICk6CiAgICAgIiIiIENv
bHVtbiBmb3IgZmlsdGVyaW5nIGJ5IGhpc3RvcnkgaWQuICIiIgogICAgIGRlZiBmaWx0ZXIoIHNl
bGYsIHRyYW5zLCB1c2VyLCBxdWVyeSwgaGlzdG9yeV9pZCApOgotICAgICAgICByZXR1cm4gcXVl
cnkuZmlsdGVyKCBtb2RlbC5IaXN0b3J5LmlkPTNEPTNEdHJhbnMuc2VjdXJpdHkuZGVjb2RlX2k9
CmQoaGlzdG9yeV9pZCkgKQorICAgICAgICByZXR1cm4gcXVlcnkuZmlsdGVyKCBtb2RlbC5IaXN0
b3J5LmlkPTNEPTNEc2VsZi5kZWNvZGVfaWQoaGlzdG9yeV89CmlkKSApCj0yMAogY2xhc3MgSGlz
dG9yeURhdGFzZXRzU2VsZWN0aW9uR3JpZCggZ3JpZHMuR3JpZCApOgogICAgICMgR3JpZCBkZWZp
bml0aW9uLgpAQCAtMTU4LDcgKzE1OCw3IEBACiAgICAgICAgIEN1cnJlbnQgaXRlbSBmb3IgZ3Jp
ZCBpcyB0aGUgaGlzdG9yeSBiZWluZyBxdWVyaWVkLiBUaGlzIGlzIGEgYml0CiAgICAgICAgIG9m
IGhhY2sgc2luY2UgY3VycmVudF9pdGVtIHR5cGljYWxseSBtZWFucyB0aGUgY3VycmVudCBpdGVt
IGluIHRoZT0KIGdyaWQuCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gdHJhbnMuc2Ffc2Vz
c2lvbi5xdWVyeSggbW9kZWwuSGlzdG9yeSApLmdldCggdHJhbnMuc2VjdXJpdHk9Ci5kZWNvZGVf
aWQoIGt3YXJnc1sgJ2YtaGlzdG9yeScgXSApICkKKyAgICAgICAgcmV0dXJuIHRyYW5zLnNhX3Nl
c3Npb24ucXVlcnkoIG1vZGVsLkhpc3RvcnkgKS5nZXQoIHNlbGYuZGVjb2RlX2lkPQooIGt3YXJn
c1sgJ2YtaGlzdG9yeScgXSApICkKICAgICBkZWYgYnVpbGRfaW5pdGlhbF9xdWVyeSggc2VsZiwg
dHJhbnMsICoqa3dhcmdzICk6CiAgICAgICAgIHJldHVybiB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5
KCBzZWxmLm1vZGVsX2NsYXNzICkuam9pbiggbW9kZWwuSGlzdD0Kb3J5LnRhYmxlICkuam9pbigg
bW9kZWwuRGF0YXNldC50YWJsZSApCiAgICAgZGVmIGFwcGx5X3F1ZXJ5X2ZpbHRlciggc2VsZiwg
dHJhbnMsIHF1ZXJ5LCAqKmt3YXJncyApOgpAQCAtMjgzLDkgKzI4Myw3IEBACj0yMAogICAgIGRl
ZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CiAgICAgICAgIHN1cGVyKCBWaXN1YWxpemF0aW9uQ29u
dHJvbGxlciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQotICAgICAgICBzZWxmLm1ncnMgPTNEIHV0
aWwuYnVuY2guQnVuY2goCi0gICAgICAgICAgICBoZGFzPTNEbWFuYWdlcnMuaGRhcy5IREFNYW5h
Z2VyKCBhcHAgKSwKLSAgICAgICAgKQorICAgICAgICBzZWxmLmhkYV9tYW5hZ2VyID0zRCBtYW5h
Z2Vycy5oZGFzLkhEQU1hbmFnZXIoIGFwcCApCj0yMAogICAgICMKICAgICAjIC0tIEZ1bmN0aW9u
cyBmb3IgbGlzdGluZyB2aXN1YWxpemF0aW9ucy4gLS0KQEAgLTMwNCw3ICszMDIsNyBAQAogICAg
IGRlZiBsaXN0X2xpYnJhcnlfZGF0YXNldHMoIHNlbGYsIHRyYW5zLCAqKmt3YXJncyApOgogICAg
ICAgICAiIiJMaXN0IGEgbGlicmFyeSdzIGRhdGFzZXRzIHRoYXQgY2FuIGJlIGFkZGVkIHRvIGEg
dmlzdWFsaXphdGlvbi49CiIiIgo9MjAKLSAgICAgICAgbGlicmFyeSA9M0QgdHJhbnMuc2Ffc2Vz
c2lvbi5xdWVyeSggdHJhbnMuYXBwLm1vZGVsLkxpYnJhcnkgKS5nZXQoPQogdHJhbnMuc2VjdXJp
dHkuZGVjb2RlX2lkKCBrd2FyZ3MuZ2V0KCdmLWxpYnJhcnknKSApICkKKyAgICAgICAgbGlicmFy
eSA9M0QgdHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggdHJhbnMuYXBwLm1vZGVsLkxpYnJhcnkgKS5n
ZXQoPQogc2VsZi5kZWNvZGVfaWQoIGt3YXJncy5nZXQoJ2YtbGlicmFyeScpICkgKQogICAgICAg
ICByZXR1cm4gdHJhbnMuZmlsbF90ZW1wbGF0ZSggJy90cmFja3MvbGlicmFyeV9kYXRhc2V0c19z
ZWxlY3RfZ3JpZC49Cm1ha28nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y250cmxsZXI9M0QibGlicmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1c2VfcGFuZWxzPTNERmFsc2UsCkBAIC0zNzMsNyArMzcxLDcgQEAKICAgICAgICAgICAgIG9w
ZXJhdGlvbiA9M0Qga3dhcmdzWydvcGVyYXRpb24nXS5sb3dlcigpCiAgICAgICAgICAgICBpZHMg
PTNEIHV0aWwubGlzdGlmeSgga3dhcmdzWydpZCddICkKICAgICAgICAgICAgIGZvciBpZCBpbiBp
ZHM6Ci0gICAgICAgICAgICAgICAgaXRlbSA9M0Qgc2Vzc2lvbi5xdWVyeSggbW9kZWwuVmlzdWFs
aXphdGlvbiApLmdldCggdHJhbnMucz0KZWN1cml0eS5kZWNvZGVfaWQoIGlkICkgKQorICAgICAg
ICAgICAgICAgIGl0ZW0gPTNEIHNlc3Npb24ucXVlcnkoIG1vZGVsLlZpc3VhbGl6YXRpb24gKS5n
ZXQoIHNlbGYuZGU9CmNvZGVfaWQoIGlkICkgKQogICAgICAgICAgICAgICAgIGlmIG9wZXJhdGlv
biA9M0Q9M0QgImRlbGV0ZSI6CiAgICAgICAgICAgICAgICAgICAgIGl0ZW0uZGVsZXRlZCA9M0Qg
VHJ1ZQogICAgICAgICAgICAgICAgIGlmIG9wZXJhdGlvbiA9M0Q9M0QgInNoYXJlIG9yIHB1Ymxp
c2giOgpAQCAtNTE3LDcgKzUxNSw3IEBACiAgICAgICAgIGVsaWYgJ2Rpc2FibGVfbGlua19hY2Nl
c3NfYW5kX3VucHVibGlzaCcgaW4ga3dhcmdzOgogICAgICAgICAgICAgdmlzdWFsaXphdGlvbi5p
bXBvcnRhYmxlID0zRCB2aXN1YWxpemF0aW9uLnB1Ymxpc2hlZCA9M0QgRmFsc2UKICAgICAgICAg
ZWxpZiAndW5zaGFyZV91c2VyJyBpbiBrd2FyZ3M6Ci0gICAgICAgICAgICB1c2VyID0zRCBzZXNz
aW9uLnF1ZXJ5KCBtb2RlbC5Vc2VyICkuZ2V0KCB0cmFucy5zZWN1cml0eS5kZWNvZD0KZV9pZCgg
a3dhcmdzWyd1bnNoYXJlX3VzZXInIF0gKSApCisgICAgICAgICAgICB1c2VyID0zRCBzZXNzaW9u
LnF1ZXJ5KCBtb2RlbC5Vc2VyICkuZ2V0KCBzZWxmLmRlY29kZV9pZCgga3dhcj0KZ3NbJ3Vuc2hh
cmVfdXNlcicgXSApICkKICAgICAgICAgICAgIGlmIG5vdCB1c2VyOgogICAgICAgICAgICAgICAg
IGVycm9yKCAiVXNlciBub3QgZm91bmQgZm9yIHByb3ZpZGVkIGlkIiApCiAgICAgICAgICAgICBh
c3NvY2lhdGlvbiA9M0Qgc2Vzc2lvbi5xdWVyeSggbW9kZWwuVmlzdWFsaXphdGlvblVzZXJTaGFy
ZUFzcz0Kb2NpYXRpb24gKSBcCkBAIC04NjgsOCArODY2LDggQEAKICAgICAgICAgICAgICMgdXNl
IGRia2V5IGZyb20gZGF0YXNldCB0byBiZSBhZGRlZCBvciBmcm9tIGluY29taW5nIHBhcmFtZXRl
cgogICAgICAgICAgICAgZGJrZXkgPTNEIE5vbmUKICAgICAgICAgICAgIGlmIG5ld19kYXRhc2V0
X2lkOgotICAgICAgICAgICAgICAgIGRlY29kZWRfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmRlY29k
ZV9pZCggbmV3X2RhdGFzZXRfaWQgKQotICAgICAgICAgICAgICAgIGhkYSA9M0Qgc2VsZi5tZ3Jz
LmhkYXMub3duZWRfYnlfaWQoIHRyYW5zLCBkZWNvZGVkX2lkLCB0cmE9Cm5zLnVzZXIgKQorICAg
ICAgICAgICAgICAgIGRlY29kZWRfaWQgPTNEIHNlbGYuZGVjb2RlX2lkKCBuZXdfZGF0YXNldF9p
ZCApCisgICAgICAgICAgICAgICAgaGRhID0zRCBzZWxmLmhkYV9tYW5hZ2VyLm93bmVkX2J5X2lk
KCB0cmFucywgZGVjb2RlZF9pZCwgdD0KcmFucy51c2VyICkKICAgICAgICAgICAgICAgICBkYmtl
eSA9M0QgaGRhLmRia2V5CiAgICAgICAgICAgICAgICAgaWYgZGJrZXkgPTNEPTNEICc/JzoKICAg
ICAgICAgICAgICAgICAgICAgZGJrZXkgPTNEIGt3YXJncy5nZXQoICJkYmtleSIsIE5vbmUgKQpA
QCAtOTc4LDEyICs5NzYsMTIgQEAKICAgICAgICAgICAgICMgTG9hZGluZyBhIHNoYXJlZCB2aXN1
YWxpemF0aW9uLgogICAgICAgICAgICAgdml6ID0zRCBzZWxmLmdldF92aXN1YWxpemF0aW9uKCB0
cmFucywgaWQgKQogICAgICAgICAgICAgdml6X2NvbmZpZyA9M0Qgc2VsZi5nZXRfdmlzdWFsaXph
dGlvbl9jb25maWcoIHRyYW5zLCB2aXogKQotICAgICAgICAgICAgZGVjb2RlZF9pZCA9M0QgdHJh
bnMuc2VjdXJpdHkuZGVjb2RlX2lkKCB2aXpfY29uZmlnWyAnZGF0YXNldF89CmlkJyBdICkKLSAg
ICAgICAgICAgIGRhdGFzZXQgPTNEIHNlbGYubWdycy5oZGFzLm93bmVkX2J5X2lkKCB0cmFucywg
ZGVjb2RlZF9pZCwgdHJhPQpucy51c2VyICkKKyAgICAgICAgICAgIGRlY29kZWRfaWQgPTNEIHNl
bGYuZGVjb2RlX2lkKCB2aXpfY29uZmlnWyAnZGF0YXNldF9pZCcgXSApCisgICAgICAgICAgICBk
YXRhc2V0ID0zRCBzZWxmLmhkYV9tYW5hZ2VyLm93bmVkX2J5X2lkKCB0cmFucywgZGVjb2RlZF9p
ZCwgdD0KcmFucy51c2VyICkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgTG9hZGluZyBu
ZXcgdmlzdWFsaXphdGlvbi4KICAgICAgICAgICAgIGRhdGFzZXQgPTNEIHNlbGYuZ2V0X2hkYV9v
cl9sZGRhKCB0cmFucywgaGRhX2xkZGEsIGRhdGFzZXRfaWQgKQotICAgICAgICAgICAgam9iID0z
RCBzZWxmLm1ncnMuaGRhcy5jcmVhdGluZ19qb2IoIGRhdGFzZXQgKQorICAgICAgICAgICAgam9i
ID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmNyZWF0aW5nX2pvYiggZGF0YXNldCApCiAgICAgICAgICAg
ICB2aXpfY29uZmlnID0zRCB7CiAgICAgICAgICAgICAgICAgJ2RhdGFzZXRfaWQnOiBkYXRhc2V0
X2lkLAogICAgICAgICAgICAgICAgICd0b29sX2lkJzogam9iLnRvb2xfaWQsCkBAIC0xMDEzLDkg
KzEwMTEsOSBAQAo9MjAKICAgICAgICAgIyBnZXQgdGhlIGhkYSBpZiB3ZSBjYW4sIHRoZW4gaXRz
IGRhdGEgdXNpbmcgdGhlIHBoeWxvdml6IHBhcnNlcnMKICAgICAgICAgaWYgZGF0YXNldF9pZDoK
LSAgICAgICAgICAgIGRlY29kZWRfaWQgPTNEIHRyYW5zLnNlY3VyaXR5LmRlY29kZV9pZCggZGF0
YXNldF9pZCApCi0gICAgICAgICAgICBoZGEgPTNEIHNlbGYubWdycy5oZGFzLmFjY2Vzc2libGVf
YnlfaWQoIHRyYW5zLCBkZWNvZGVkX2lkLCB0cj0KYW5zLnVzZXIgKQotICAgICAgICAgICAgaGRh
ID0zRCBzZWxmLm1ncnMuaGRhcy5lcnJvcl9pZl91cGxvYWRpbmcoIGhkYSApCisgICAgICAgICAg
ICBkZWNvZGVkX2lkID0zRCBzZWxmLmRlY29kZV9pZCggZGF0YXNldF9pZCApCisgICAgICAgICAg
ICBoZGEgPTNEIHNlbGYuaGRhX21hbmFnZXIuYWNjZXNzaWJsZV9ieV9pZCggdHJhbnMsIGRlY29k
ZWRfaWQsID0KdHJhbnMudXNlciApCisgICAgICAgICAgICBoZGEgPTNEIHNlbGYuaGRhX21hbmFn
ZXIuZXJyb3JfaWZfdXBsb2FkaW5nKCBoZGEgKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAg
cmV0dXJuIHRyYW5zLnNob3dfbWVzc2FnZSggIlBoeWxvdml6IGNvdWxkbid0IGZpbmQgYSBkYXRh
c2V0X2k9CmQiICkKPTIwCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2Vu
dHJhbC9jb21taXRzLzhlZWZjMDljNDFkYy8KQ2hhbmdlc2V0OiAgIDhlZWZjMDljNDFkYwpVc2Vy
OiAgICAgICAgY2FybGZlYmVyaGFyZApEYXRlOiAgICAgICAgMjAxNS0wMS0xMiAxODowMToyOCsw
MDowMApTdW1tYXJ5OiAgICAgTm9ybWFsaXplIG5hbWVzIGZyb20gb3duZWQvYWNjZXNzaWJsZV9i
eV9pZCB0byBnZXRfb3duZWQvYWNjZXM9CnNpYmxlOyBmaXggc29tZSBoaXN0b3J5IGVycm9ycwpB
ZmZlY3RlZCAjOiAgMTcgZmlsZXMKCmRpZmYgLXIgNjljNzRiYzk5NjI1ZTM2M2JlY2FkMDhiOGY5
YzU1YzIzODQ0OTc1MCAtciA4ZWVmYzA5YzQxZGNmYzM5OWUzN2UyMD0KOGNjNzBjMGYzMzQ5MTY0
MjEgbGliL2dhbGF4eS9tYW5hZ2Vycy9iYXNlLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMv
YmFzZS5weQorKysgYi9saWIvZ2FsYXh5L21hbmFnZXJzL2Jhc2UucHkKQEAgLTI1MSwxMiArMjUx
LDEyIEBACiAgICAgICAgIGV4Y2VwdCBleGNlcHRpb25zLk9iamVjdE5vdEZvdW5kLCBub3RfZm91
bmQ6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQo9MjAKLSAgICBkZWYgbGlzdCggc2VsZiwgdHJh
bnMsIHF1ZXJ5PTNETm9uZSwgKiprd2FyZ3MgKToKLSAgICAgICAgIiIiCi0gICAgICAgIFNlbmRz
IGt3YXJncyB0byBidWlsZCB0aGUgcXVlcnkgcmV0dXJuIGFsbCBtb2RlbHMgZm91bmQuCi0gICAg
ICAgICIiIgotICAgICAgICBxdWVyeSA9M0QgcXVlcnkgb3Igc2VsZi5xdWVyeSggdHJhbnMsICoq
a3dhcmdzICkKLSAgICAgICAgcmV0dXJuIHF1ZXJ5LmFsbCgpCisgICAgI2RlZiBnZXQoIHNlbGYs
IHRyYW5zLCBpZCwgKiprd2FyZ3MgKToKKyAgICAjICAgICIiIgorICAgICMgICAgIiIiCisgICAg
IyAgICAjVE9ETzogZWl0aGVyIHJlbW92ZSB0byBwcmV2ZW50IGNvbmZ1c2lvbiB3aXRoIHNxbGFs
eCBnZXQgb3IgbWFrZT0KIGl0IGJlaGF2ZSAqbXVjaCogbW9yZSBsaWtlIGl0OiBvYmovTm9uZQor
ICAgICMgICAgaWRfZmlsdGVyID0zRCBzZWxmLm1vZGVsX2NsYXNzLmlkID0zRD0zRCBpZAorICAg
ICMgICAgcmV0dXJuIHNlbGYub25lKCB0cmFucywgZmlsdGVycz0zRGlkX2ZpbHRlciwgKiprd2Fy
Z3MgKQo9MjAKICAgICBkZWYgYnlfaWQoIHNlbGYsIHRyYW5zLCBpZCwgKiprd2FyZ3MgKToKICAg
ICAgICAgIiIiCkBAIC0yNjUsNiArMjY1LDEzIEBACiAgICAgICAgIGlkX2ZpbHRlciA9M0Qgc2Vs
Zi5tb2RlbF9jbGFzcy5pZCA9M0Q9M0QgaWQKICAgICAgICAgcmV0dXJuIHNlbGYub25lKCB0cmFu
cywgZmlsdGVycz0zRGlkX2ZpbHRlciwgKiprd2FyZ3MgKQo9MjAKKyAgICBkZWYgbGlzdCggc2Vs
ZiwgdHJhbnMsIHF1ZXJ5PTNETm9uZSwgKiprd2FyZ3MgKToKKyAgICAgICAgIiIiCisgICAgICAg
IFNlbmRzIGt3YXJncyB0byBidWlsZCB0aGUgcXVlcnkgcmV0dXJuIGFsbCBtb2RlbHMgZm91bmQu
CisgICAgICAgICIiIgorICAgICAgICBxdWVyeSA9M0QgcXVlcnkgb3Igc2VsZi5xdWVyeSggdHJh
bnMsICoqa3dhcmdzICkKKyAgICAgICAgcmV0dXJuIHF1ZXJ5LmFsbCgpCisKICAgICBkZWYgX3F1
ZXJ5X2J5X2lkcyggc2VsZiwgdHJhbnMsIGlkcywgZmlsdGVycz0zRE5vbmUsICoqa3dhcmdzICk6
CiAgICAgICAgICIiIgogICAgICAgICBCdWlsZHMgYSBxdWVyeSB0byBmaW5kIGEgbGlzdCBvZiBt
b2RlbHMgd2l0aCB0aGUgZ2l2ZW4gbGlzdCBvZiBgaWQ9CnNgLgpAQCAtNDM2LDcgKzQ0Myw3IEBA
CiAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuTm90SW1wbGVtZW50ZWQoICJBYnN0cmFjdCBJbnRl
cmZhY2UgTWV0aG9kIiApCiAgICAgICAgICNPUj8gcmV0dXJuIEZhbHNlCj0yMAotICAgIGRlZiBh
Y2Nlc3NpYmxlX2J5X2lkKCBzZWxmLCB0cmFucywgaWQsIHVzZXIsICoqa3dhcmdzICk6CisgICAg
ZGVmIGdldF9hY2Nlc3NpYmxlKCBzZWxmLCB0cmFucywgaWQsIHVzZXIsICoqa3dhcmdzICk6CiAg
ICAgICAgICIiIgogICAgICAgICBSZXR1cm4gdGhlIGl0ZW0gd2l0aCB0aGUgZ2l2ZW4gaWQgaWYg
aXQncyBhY2Nlc3NpYmxlIHRvIHVzZXIsCiAgICAgICAgIG90aGVyd2lzZSByYWlzZSBhbiBlcnJv
ci4KQEAgLTQ5Niw3ICs1MDMsNyBAQAogICAgICAgICByYWlzZSBleGNlcHRpb25zLk5vdEltcGxl
bWVudGVkKCAiQWJzdHJhY3QgSW50ZXJmYWNlIE1ldGhvZCIgKQogICAgICAgICAjT1I/IHJldHVy
biBGYWxzZQo9MjAKLSAgICBkZWYgb3duZWRfYnlfaWQoIHNlbGYsIHRyYW5zLCBpZCwgdXNlciwg
Kiprd2FyZ3MgKToKKyAgICBkZWYgZ2V0X293bmVkKCBzZWxmLCB0cmFucywgaWQsIHVzZXIsICoq
a3dhcmdzICk6CiAgICAgICAgICIiIgogICAgICAgICBSZXR1cm4gdGhlIGl0ZW0gd2l0aCB0aGUg
Z2l2ZW4gaWQgaWYgb3duZWQgYnkgdGhlIHVzZXIsCiAgICAgICAgIG90aGVyd2lzZSByYWlzZSBh
biBlcnJvci4KCmRpZmYgLXIgNjljNzRiYzk5NjI1ZTM2M2JlY2FkMDhiOGY5YzU1YzIzODQ0OTc1
MCAtciA4ZWVmYzA5YzQxZGNmYzM5OWUzN2UyMD0KOGNjNzBjMGYzMzQ5MTY0MjEgbGliL2dhbGF4
eS9tYW5hZ2Vycy9jb2xsZWN0aW9ucy5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL2NvbGxl
Y3Rpb25zLnB5CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvY29sbGVjdGlvbnMucHkKQEAgLTI0
OCw3ICsyNDgsNyBAQAo9MjAKICAgICAgICAgaWYgc3JjX3R5cGUgPTNEPTNEICdoZGEnOgogICAg
ICAgICAgICAgZGVjb2RlZF9pZCA9M0QgaW50KCB0cmFucy5hcHAuc2VjdXJpdHkuZGVjb2RlX2lk
KCBlbmNvZGVkX2lkICk9CiApCi0gICAgICAgICAgICBlbGVtZW50ID0zRCBzZWxmLmhkYV9tYW5h
Z2VyLmFjY2Vzc2libGVfYnlfaWQoIHRyYW5zLCBkZWNvZGVkXz0KaWQsIHRyYW5zLnVzZXIgKQor
ICAgICAgICAgICAgZWxlbWVudCA9M0Qgc2VsZi5oZGFfbWFuYWdlci5nZXRfYWNjZXNzaWJsZSgg
dHJhbnMsIGRlY29kZWRfaWQ9CiwgdHJhbnMudXNlciApCiAgICAgICAgIGVsaWYgc3JjX3R5cGUg
PTNEPTNEICdsZGRhJzoKICAgICAgICAgICAgIGVsZW1lbnQgPTNEIHNlbGYubGRkYV9tYW5hZ2Vy
LmdldCggdHJhbnMsIGVuY29kZWRfaWQgKQogICAgICAgICBlbGlmIHNyY190eXBlID0zRD0zRCAn
aGRjYSc6CgpkaWZmIC1yIDY5Yzc0YmM5OTYyNWUzNjNiZWNhZDA4YjhmOWM1NWMyMzg0NDk3NTAg
LXIgOGVlZmMwOWM0MWRjZmMzOTllMzdlMjA9CjhjYzcwYzBmMzM0OTE2NDIxIGxpYi9nYWxheHkv
d2ViYXBwcy9nYWxheHkvYXBpL2Fubm90YXRpb25zLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBw
cy9nYWxheHkvYXBpL2Fubm90YXRpb25zLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxh
eHkvYXBpL2Fubm90YXRpb25zLnB5CkBAIC01OSw3ICs1OSw3IEBACj0yMAogICAgIGRlZiBfZ2V0
X2l0ZW1fZnJvbV9pZChzZWxmLCB0cmFucywgaWRzdHIpOgogICAgICAgICBkZWNvZGVkX2lkc3Ry
ID0zRCBzZWxmLmRlY29kZV9pZCggaWRzdHIgKQotICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmhp
c3RvcnlfbWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgZGVjb2RlZF89Cmlkc3RyLCB0
cmFucy51c2VyICkKKyAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5oaXN0b3J5X21hbmFnZXIuZ2V0
X2FjY2Vzc2libGUoIHRyYW5zLCBkZWNvZGVkX2lkPQpzdHIsIHRyYW5zLnVzZXIgKQogICAgICAg
ICByZXR1cm4gaGlzdG9yeQo9MjAKPTIwCkBAIC03Myw3ICs3Myw3IEBACj0yMAogICAgIGRlZiBf
Z2V0X2l0ZW1fZnJvbV9pZChzZWxmLCB0cmFucywgaWRzdHIpOgogICAgICAgICBkZWNvZGVkX2lk
c3RyID0zRCBzZWxmLmRlY29kZV9pZCggaWRzdHIgKQotICAgICAgICBoZGEgPTNEIHNlbGYuaGRh
X21hbmFnZXIuYWNjZXNzaWJsZV9ieV9pZCggdHJhbnMsIGRlY29kZWRfaWRzdHIsIHQ9CnJhbnMu
dXNlciApCisgICAgICAgIGhkYSA9M0Qgc2VsZi5oZGFfbWFuYWdlci5nZXRfYWNjZXNzaWJsZSgg
dHJhbnMsIGRlY29kZWRfaWRzdHIsIHRyYT0KbnMudXNlciApCiAgICAgICAgIGhkYSA9M0Qgc2Vs
Zi5oZGFfbWFuYWdlci5lcnJvcl9pZl91cGxvYWRpbmcoIHRyYW5zLCBoZGEgKQogICAgICAgICBy
ZXR1cm4gaGRhCj0yMAoKZGlmZiAtciA2OWM3NGJjOTk2MjVlMzYzYmVjYWQwOGI4ZjljNTVjMjM4
NDQ5NzUwIC1yIDhlZWZjMDljNDFkY2ZjMzk5ZTM3ZTIwPQo4Y2M3MGMwZjMzNDkxNjQyMSBsaWIv
Z2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9kYXRhc2V0X2NvbGxlY3Rpb25zLnB5Ci0tLSBhL2xp
Yi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2RhdGFzZXRfY29sbGVjdGlvbnMucHkKKysrIGIv
bGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvZGF0YXNldF9jb2xsZWN0aW9ucy5weQpAQCAt
NDUsNyArNDUsNyBAQAogICAgICAgICBpZiBpbnN0YW5jZV90eXBlID0zRD0zRCAiaGlzdG9yeSI6
CiAgICAgICAgICAgICBoaXN0b3J5X2lkID0zRCBwYXlsb2FkLmdldCggJ2hpc3RvcnlfaWQnICkK
ICAgICAgICAgICAgIGhpc3RvcnlfaWQgPTNEIHNlbGYuZGVjb2RlX2lkKCBoaXN0b3J5X2lkICkK
LSAgICAgICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuaGlzdG9yeV9tYW5hZ2VyLm93bmVkX2J5X2lk
KCB0cmFucywgaGlzdG9yeV9pPQpkLCB0cmFucy51c2VyICkKKyAgICAgICAgICAgIGhpc3Rvcnkg
PTNEIHNlbGYuaGlzdG9yeV9tYW5hZ2VyLmdldF9vd25lZCggdHJhbnMsIGhpc3RvcnlfaWQsPQog
dHJhbnMudXNlciApCiAgICAgICAgICAgICBjcmVhdGVfcGFyYW1zWyAicGFyZW50IiBdID0zRCBo
aXN0b3J5CiAgICAgICAgIGVsaWYgaW5zdGFuY2VfdHlwZSA9M0Q9M0QgImxpYnJhcnkiOgogICAg
ICAgICAgICAgZm9sZGVyX2lkID0zRCBwYXlsb2FkLmdldCggJ2ZvbGRlcl9pZCcgKQoKZGlmZiAt
ciA2OWM3NGJjOTk2MjVlMzYzYmVjYWQwOGI4ZjljNTVjMjM4NDQ5NzUwIC1yIDhlZWZjMDljNDFk
Y2ZjMzk5ZTM3ZTIwPQo4Y2M3MGMwZjMzNDkxNjQyMSBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5
L2FwaS9kYXRhc2V0cy5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9kYXRh
c2V0cy5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9kYXRhc2V0cy5weQpA
QCAtMjgwLDcgKzI4MCw3IEBACj0yMAogICAgICAgICBydmFsID0zRCAnJwogICAgICAgICB0cnk6
Ci0gICAgICAgICAgICBoZGEgPTNEIHNlbGYuaGRhX21hbmFnZXIuYWNjZXNzaWJsZV9ieV9pZCgg
dHJhbnMsIGRlY29kZWRfY29udD0KZW50X2lkLCB0cmFucy51c2VyICkKKyAgICAgICAgICAgIGhk
YSA9M0Qgc2VsZi5oZGFfbWFuYWdlci5nZXRfYWNjZXNzaWJsZSggdHJhbnMsIGRlY29kZWRfY29u
dGVuPQp0X2lkLCB0cmFucy51c2VyICkKPTIwCiAgICAgICAgICAgICBpZiByYXc6CiAgICAgICAg
ICAgICAgICAgaWYgZmlsZW5hbWUgYW5kIGZpbGVuYW1lICE9M0QgJ2luZGV4JzoKCmRpZmYgLXIg
NjljNzRiYzk5NjI1ZTM2M2JlY2FkMDhiOGY5YzU1YzIzODQ0OTc1MCAtciA4ZWVmYzA5YzQxZGNm
YzM5OWUzN2UyMD0KOGNjNzBjMGYzMzQ5MTY0MjEgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9h
cGkvZXh0ZW5kZWRfbWV0YWRhdGEucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9h
cGkvZXh0ZW5kZWRfbWV0YWRhdGEucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9h
cGkvZXh0ZW5kZWRfbWV0YWRhdGEucHkKQEAgLTcxLDcgKzcxLDcgQEAKICAgICBkZWYgX2dldF9p
dGVtX2Zyb21faWQoc2VsZiwgdHJhbnMsIGlkc3RyLCBjaGVja193cml0YWJsZT0zRFRydWUpOgog
ICAgICAgICBkZWNvZGVkX2lkc3RyID0zRCBzZWxmLmRlY29kZV9pZCggaWRzdHIgKQogICAgICAg
ICBpZiBjaGVja193cml0YWJsZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmhkYV9tYW5hZ2Vy
Lm93bmVkX2J5X2lkKCB0cmFucywgZGVjb2RlZF9pZHN0ciwgdHJhPQpucy51c2VyICkKKyAgICAg
ICAgICAgIHJldHVybiBzZWxmLmhkYV9tYW5hZ2VyLmdldF9vd25lZCggdHJhbnMsIGRlY29kZWRf
aWRzdHIsIHRyYW5zPQoudXNlciApCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBoZGEgPTNE
IHNlbGYuaGRhX21hbmFnZXIuYWNjZXNzaWJsZV9ieV9pZCggdHJhbnMsIGRlY29kZWRfaWRzdD0K
ciwgdHJhbnMudXNlciApCisgICAgICAgICAgICBoZGEgPTNEIHNlbGYuaGRhX21hbmFnZXIuZ2V0
X2FjY2Vzc2libGUoIHRyYW5zLCBkZWNvZGVkX2lkc3RyLD0KIHRyYW5zLnVzZXIgKQogICAgICAg
ICAgICAgcmV0dXJuIHNlbGYuaGRhX21hbmFnZXIuZXJyb3JfaWZfdXBsb2FkaW5nKCB0cmFucywg
aGRhICkKCmRpZmYgLXIgNjljNzRiYzk5NjI1ZTM2M2JlY2FkMDhiOGY5YzU1YzIzODQ0OTc1MCAt
ciA4ZWVmYzA5YzQxZGNmYzM5OWUzN2UyMD0KOGNjNzBjMGYzMzQ5MTY0MjEgbGliL2dhbGF4eS93
ZWJhcHBzL2dhbGF4eS9hcGkvZm9sZGVyX2NvbnRlbnRzLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2Vi
YXBwcy9nYWxheHkvYXBpL2ZvbGRlcl9jb250ZW50cy5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFw
cHMvZ2FsYXh5L2FwaS9mb2xkZXJfY29udGVudHMucHkKQEAgLTI2OCw3ICsyNjgsNyBAQAogICAg
ICAgICBydmFsID0zRCB7fQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBkZWNvZGVkX2hkYV9p
ZCA9M0Qgc2VsZi5kZWNvZGVfaWQoIGZyb21faGRhX2lkICkKLSAgICAgICAgICAgIGhkYSA9M0Qg
c2VsZi5oZGFfbWFuYWdlci5vd25lZF9ieV9pZCggdHJhbnMsIGRlY29kZWRfaGRhX2lkLCB0PQpy
YW5zLnVzZXIgKQorICAgICAgICAgICAgaGRhID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmdldF9vd25l
ZCggdHJhbnMsIGRlY29kZWRfaGRhX2lkLCB0cmE9Cm5zLnVzZXIgKQogICAgICAgICAgICAgaGRh
ID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmVycm9yX2lmX3VwbG9hZGluZyggdHJhbnMsIGhkYSApCiAg
ICAgICAgICAgICBmb2xkZXIgPTNEIHNlbGYuZ2V0X2xpYnJhcnlfZm9sZGVyKCB0cmFucywgZW5j
b2RlZF9mb2xkZXJfaWRfMT0KNiwgY2hlY2tfYWNjZXNzaWJsZT0zRFRydWUgKQo9MjAKCmRpZmYg
LXIgNjljNzRiYzk5NjI1ZTM2M2JlY2FkMDhiOGY5YzU1YzIzODQ0OTc1MCAtciA4ZWVmYzA5YzQx
ZGNmYzM5OWUzN2UyMD0KOGNjNzBjMGYzMzQ5MTY0MjEgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4
eS9hcGkvaGlzdG9yaWVzLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2hp
c3Rvcmllcy5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9oaXN0b3JpZXMu
cHkKQEAgLTkyLDcgKzkyLDcgQEAKICAgICAgICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuaGlzdG9y
eV9tYW5hZ2VyLm1vc3RfcmVjZW50KCB0cmFucywgdHJhbnMudXNlPQpyLAogICAgICAgICAgICAg
ICAgIGZpbHRlcnM9M0QoIHNlbGYuYXBwLm1vZGVsLkhpc3RvcnkuZGVsZXRlZCA9M0Q9M0QgRmFs
c2UgKSApCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmhpc3Rv
cnlfbWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgc2VsZj0KLmRlY29kZV9pZCggaGlz
dG9yeV9pZCApLCB0cmFucy51c2VyICkKKyAgICAgICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuaGlz
dG9yeV9tYW5hZ2VyLmdldF9hY2Nlc3NpYmxlKCB0cmFucywgc2VsZi5kPQplY29kZV9pZCggaGlz
dG9yeV9pZCApLCB0cmFucy51c2VyICkKPTIwCiAgICAgICAgIHJldHVybiBzZWxmLmhpc3Rvcnlf
c2VyaWFsaXplci5zZXJpYWxpemVfdG9fdmlldyggdHJhbnMsIGhpc3RvcnksCiAgICAgICAgICAg
ICAqKnNlbGYuX3BhcnNlX3NlcmlhbGl6YXRpb25fcGFyYW1zKCBrd2QsICdkZXRhaWxlZCcgKSAp
CkBAIC0xMDEsNyArMTAxLDcgQEAKICAgICBkZWYgY2l0YXRpb25zKCBzZWxmLCB0cmFucywgaGlz
dG9yeV9pZCwgKiprd2QgKToKICAgICAgICAgIiIiCiAgICAgICAgICIiIgotICAgICAgICBoaXN0
b3J5ID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgc2Vs
Zi5kZWM9Cm9kZV9pZCggaGlzdG9yeV9pZCApLCB0cmFucy51c2VyICkKKyAgICAgICAgaGlzdG9y
eSA9M0Qgc2VsZi5oaXN0b3J5X21hbmFnZXIuZ2V0X2FjY2Vzc2libGUoIHRyYW5zLCBzZWxmLmRl
Y29kPQplX2lkKCBoaXN0b3J5X2lkICksIHRyYW5zLnVzZXIgKQogICAgICAgICB0b29sX2lkcyA9
M0Qgc2V0KFtdKQogICAgICAgICBmb3IgZGF0YXNldCBpbiBoaXN0b3J5LmRhdGFzZXRzOgogICAg
ICAgICAgICAgam9iID0zRCBkYXRhc2V0LmNyZWF0aW5nX2pvYgpAQCAtMTQ2LDcgKzE0Niw3IEBA
CiAgICAgICAgICMgaWYgYSBoaXN0b3J5IGlkIHdhcyBwYXNzZWQsIGNvcHkgdGhhdCBoaXN0b3J5
CiAgICAgICAgIGlmIGNvcHlfdGhpc19oaXN0b3J5X2lkOgogICAgICAgICAgICAgZGVjb2RlZF9p
ZCA9M0Qgc2VsZi5kZWNvZGVfaWQoIGNvcHlfdGhpc19oaXN0b3J5X2lkICkKLSAgICAgICAgICAg
IG9yaWdpbmFsX2hpc3RvcnkgPTNEIHNlbGYuaGlzdG9yeV9tYW5hZ2VyLmFjY2Vzc2libGVfYnlf
aWQoIHRyPQphbnMsIGRlY29kZWRfaWQsIHRyYW5zLnVzZXIgKQorICAgICAgICAgICAgb3JpZ2lu
YWxfaGlzdG9yeSA9M0Qgc2VsZi5oaXN0b3J5X21hbmFnZXIuZ2V0X2FjY2Vzc2libGUoIHRyYW49
CnMsIGRlY29kZWRfaWQsIHRyYW5zLnVzZXIgKQogICAgICAgICAgICAgaGlzdF9uYW1lID0zRCBo
aXN0X25hbWUgb3IgKCAiQ29weSBvZiAnJXMnIiAlIG9yaWdpbmFsX2hpc3Rvcnk9Ci5uYW1lICkK
ICAgICAgICAgICAgIG5ld19oaXN0b3J5ID0zRCBvcmlnaW5hbF9oaXN0b3J5LmNvcHkoIG5hbWU9
M0RoaXN0X25hbWUsIHRhcmdlPQp0X3VzZXI9M0R0cmFucy51c2VyICkKPTIwCkBAIC0xODgsNyAr
MTg4LDcgQEAKICAgICAgICAgaWYga3dkLmdldCggJ3BheWxvYWQnLCBOb25lICk6CiAgICAgICAg
ICAgICBwdXJnZSA9M0Qgc3RyaW5nX2FzX2Jvb2woIGt3ZFsncGF5bG9hZCddLmdldCggJ3B1cmdl
JywgRmFsc2UgKT0KICkKPTIwCi0gICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuaGlzdG9yeV9tYW5h
Z2VyLm93bmVkX2J5X2lkKCB0cmFucywgc2VsZi5kZWNvZGVfaT0KZCggaGlzdG9yeV9pZCApLCB0
cmFucy51c2VyICkKKyAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5oaXN0b3J5X21hbmFnZXIuZ2V0
X293bmVkKCB0cmFucywgc2VsZi5kZWNvZGVfaWQoPQogaGlzdG9yeV9pZCApLCB0cmFucy51c2Vy
ICkKICAgICAgICAgc2VsZi5oaXN0b3J5X21hbmFnZXIuZGVsZXRlKCB0cmFucywgaGlzdG9yeSAp
CiAgICAgICAgIGlmIHB1cmdlOgogICAgICAgICAgICAgc2VsZi5oaXN0b3J5X21hbmFnZXIucHVy
Z2UoIHRyYW5zLCBoaXN0b3J5ICkKQEAgLTIxMCw3ICsyMTAsNyBAQAogICAgICAgICA6cmV0dXJu
czogICAnT0snIGlmIHRoZSBoaXN0b3J5IHdhcyB1bmRlbGV0ZWQKICAgICAgICAgIiIiCiAgICAg
ICAgIGhpc3RvcnlfaWQgPTNEIGlkCi0gICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuaGlzdG9yeV9t
YW5hZ2VyLm93bmVkX2J5X2lkKCB0cmFucywgc2VsZi5kZWNvZGVfaT0KZCggaGlzdG9yeV9pZCAp
LCB0cmFucy51c2VyICkKKyAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5oaXN0b3J5X21hbmFnZXIu
Z2V0X293bmVkKCB0cmFucywgc2VsZi5kZWNvZGVfaWQoPQogaGlzdG9yeV9pZCApLCB0cmFucy51
c2VyICkKICAgICAgICAgc2VsZi5oaXN0b3J5X21hbmFnZXIudW5kZWxldGUoIHRyYW5zLCBoaXN0
b3J5ICkKPTIwCiAgICAgICAgIHJldHVybiBzZWxmLmhpc3Rvcnlfc2VyaWFsaXplci5zZXJpYWxp
emVfdG9fdmlldyggdHJhbnMsIGhpc3RvcnksCkBAIC0yMzYsNyArMjM2LDcgQEAKICAgICAgICAg
ICAgIGFueSB2YWx1ZXMgdGhhdCB3ZXJlIGRpZmZlcmVudCBmcm9tIHRoZSBvcmlnaW5hbCBhbmQs
IHRoZXJlZm9yPQplLCB1cGRhdGVkCiAgICAgICAgICIiIgogICAgICAgICAjVE9ETzogUFVUIC9h
cGkvaGlzdG9yaWVzL3tlbmNvZGVkX2hpc3RvcnlfaWR9IHBheWxvYWQgPTNEIHsgcmF0aW49Cmc6
IHJhdGluZyB9ICh3LyBubyBzZWN1cml0eSBjaGVja3MpCi0gICAgICAgIGhpc3RvcnkgPTNEIHNl
bGYuaGlzdG9yeV9tYW5hZ2VyLm93bmVkX2J5X2lkKCB0cmFucywgc2VsZi5kZWNvZGVfaT0KZCgg
aWQgKSwgdHJhbnMudXNlciApCisgICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuaGlzdG9yeV9tYW5h
Z2VyLmdldF9vd25lZCggdHJhbnMsIHNlbGYuZGVjb2RlX2lkKD0KIGlkICksIHRyYW5zLnVzZXIg
KQo9MjAKICAgICAgICAgI1RPRE86IGZsdXNoaW5nIGluIGRlc2VyaWFsaXplIGlzIGFuIGlmZnkg
cGF0dGVybi4uLgogICAgICAgICBzZWxmLmhpc3RvcnlfZGVzZXJpYWxpemVyLmRlc2VyaWFsaXpl
KCB0cmFucywgaGlzdG9yeSwgcGF5bG9hZCApCkBAIC0yNTksNyArMjU5LDcgQEAKICAgICAgICAg
IiIiCiAgICAgICAgICMgUFVUIGluc3RlYWQgb2YgUE9TVCBiZWNhdXNlIG11bHRpcGxlIHJlcXVl
c3RzIHNob3VsZCBqdXN0IHJlc3VsdAogICAgICAgICAjIGluIG9uZSBvYmplY3QgYmVpbmcgY3Jl
YXRlZC4KLSAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5oaXN0b3J5X21hbmFnZXIuYWNjZXNzaWJs
ZV9ieV9pZCggdHJhbnMsIHNlbGYuZGVjPQpvZGVfaWQoIGlkICksIHRyYW5zLnVzZXIgKQorICAg
ICAgICBoaXN0b3J5ID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdlci5nZXRfYWNjZXNzaWJsZSggdHJh
bnMsIHNlbGYuZGVjb2Q9CmVfaWQoIGlkICksIHRyYW5zLnVzZXIgKQogICAgICAgICBqZWhhID0z
RCBoaXN0b3J5LmxhdGVzdF9leHBvcnQKICAgICAgICAgdXBfdG9fZGF0ZSA9M0QgamVoYSBhbmQg
amVoYS51cF90b19kYXRlCiAgICAgICAgIGlmICdmb3JjZScgaW4ga3dkczoKQEAgLTI5Miw3ICsy
OTIsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgIyBTZWVtcyBzaWxseSB0byBwdXQgamVoYV9p
ZCBpbiBoZXJlLCBidXQgd2FudCBHRVQgdG8gYmUgaW1tdWF0YWJsPQplPwogICAgICAgICAjIGFu
ZCB0aGlzIGlzIGJlaW5nIGFjY29tcGxpc2hlZCB0aGlzIHdheS4KLSAgICAgICAgaGlzdG9yeSA9
M0Qgc2VsZi5oaXN0b3J5X21hbmFnZXIuYWNjZXNzaWJsZV9ieV9pZCggdHJhbnMsIHNlbGYuZGVj
PQpvZGVfaWQoIGlkICksIHRyYW5zLnVzZXIgKQorICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmhp
c3RvcnlfbWFuYWdlci5nZXRfYWNjZXNzaWJsZSggdHJhbnMsIHNlbGYuZGVjb2Q9CmVfaWQoIGlk
ICksIHRyYW5zLnVzZXIgKQogICAgICAgICBtYXRjaGluZ19leHBvcnRzID0zRCBmaWx0ZXIoIGxh
bWJkYSBlOiB0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIGU9Ci5pZCApID0zRD0zRCBqZWhhX2lk
LCBoaXN0b3J5LmV4cG9ydHMgKQogICAgICAgICBpZiBub3QgbWF0Y2hpbmdfZXhwb3J0czoKICAg
ICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuT2JqZWN0Tm90Rm91bmQoKQoKZGlmZiAtciA2OWM3
NGJjOTk2MjVlMzYzYmVjYWQwOGI4ZjljNTVjMjM4NDQ5NzUwIC1yIDhlZWZjMDljNDFkY2ZjMzk5
ZTM3ZTIwPQo4Y2M3MGMwZjMzNDkxNjQyMSBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9o
aXN0b3J5X2NvbnRlbnRzLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2hp
c3RvcnlfY29udGVudHMucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvaGlz
dG9yeV9jb250ZW50cy5weQpAQCAtNjgsNyArNjgsNyBAQAogICAgICAgICAiIiIKICAgICAgICAg
cnZhbCA9M0QgW10KPTIwCi0gICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuaGlzdG9yeV9tYW5hZ2Vy
LmFjY2Vzc2libGVfYnlfaWQoIHRyYW5zLCBzZWxmLmRlYz0Kb2RlX2lkKCBoaXN0b3J5X2lkICks
IHRyYW5zLnVzZXIgKQorICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdlci5n
ZXRfYWNjZXNzaWJsZSggdHJhbnMsIHNlbGYuZGVjb2Q9CmVfaWQoIGhpc3RvcnlfaWQgKSwgdHJh
bnMudXNlciApCj0yMAogICAgICAgICAjIEFsbG93IHBhc3NpbmcgaW4gdHlwZSBvciB0eXBlcyAt
IGZvciBjb250aW51aXR5IHJlc3Qgb2YgbWV0aG9kcwogICAgICAgICAjIHRha2UgaW4gdHlwZSAt
IGJ1dCB0aGlzIG9uZSBjYW4gYmUgcGFzc2VkIG11bHRpcGxlIHR5cGVzIGFuZApAQCAtMTQxLDcg
KzE0MSw3IEBACiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fX2hhbmRsZV91bmtub3duX2NvbnRl
bnRzX3R5cGUoIHRyYW5zLCBjb250ZW50c190eT0KcGUgKQo9MjAKICAgICBkZWYgX19zaG93X2Rh
dGFzZXQoIHNlbGYsIHRyYW5zLCBpZCwgKiprd2QgKToKLSAgICAgICAgaGRhID0zRCBzZWxmLmhk
YV9tYW5hZ2VyLmFjY2Vzc2libGVfYnlfaWQoIHRyYW5zLCBzZWxmLmRlY29kZV9pZCggPQppZCAp
LCB0cmFucy51c2VyICkKKyAgICAgICAgaGRhID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmdldF9hY2Nl
c3NpYmxlKCB0cmFucywgc2VsZi5kZWNvZGVfaWQoIGlkPQogKSwgdHJhbnMudXNlciApCiAgICAg
ICAgIHJldHVybiBzZWxmLmhkYV9zZXJpYWxpemVyLnNlcmlhbGl6ZV90b192aWV3KCB0cmFucywg
aGRhLAogICAgICAgICAgICAgKipzZWxmLl9wYXJzZV9zZXJpYWxpemF0aW9uX3BhcmFtcygga3dk
LCAnZGV0YWlsZWQnICkgKQo9MjAKQEAgLTIxMiw3ICsyMTIsNyBAQAogICAgICAgICAjIFRPRE86
IEZsdXNoIG91dCBjcmVhdGUgbmV3IGNvbGxlY3Rpb24gZG9jdW1lbnRhdGlvbiBhYm92ZSwgbmVl
ZCA9CnNvbWUKICAgICAgICAgIyBleGFtcGxlcy4gU2VlIGFsc28gYmlvYmxlbmQgYW5kIEFQSSB0
ZXN0cyBmb3Igc3BlY2lmaWMgZXhhbXBsZXMuCj0yMAotICAgICAgICBoaXN0b3J5ID0zRCBzZWxm
Lmhpc3RvcnlfbWFuYWdlci5vd25lZF9ieV9pZCggdHJhbnMsIHNlbGYuZGVjb2RlX2k9CmQoIGhp
c3RvcnlfaWQgKSwgdHJhbnMudXNlciApCisgICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuaGlzdG9y
eV9tYW5hZ2VyLmdldF9vd25lZCggdHJhbnMsIHNlbGYuZGVjb2RlX2lkKD0KIGhpc3RvcnlfaWQg
KSwgdHJhbnMudXNlciApCj0yMAogICAgICAgICB0eXBlID0zRCBwYXlsb2FkLmdldCggJ3R5cGUn
LCAnZGF0YXNldCcgKQogICAgICAgICBpZiB0eXBlID0zRD0zRCAnZGF0YXNldCc6CkBAIC0yNDUs
NyArMjQ1LDcgQEAKICAgICAgICAgIyBjb3B5IGFuIGV4aXN0aW5nLCBhY2Nlc3NpYmxlIGhkYQog
ICAgICAgICBlbGlmIHNvdXJjZSA9M0Q9M0QgJ2hkYSc6CiAgICAgICAgICAgICB1bmVuY29kZWRf
aGRhX2lkID0zRCBzZWxmLmRlY29kZV9pZCggY29udGVudCApCi0gICAgICAgICAgICBvcmlnaW5h
bCA9M0Qgc2VsZi5oZGFfbWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgdW5lbmNvZD0K
ZWRfaGRhX2lkLCB0cmFucy51c2VyICkKKyAgICAgICAgICAgIG9yaWdpbmFsID0zRCBzZWxmLmhk
YV9tYW5hZ2VyLmdldF9hY2Nlc3NpYmxlKCB0cmFucywgdW5lbmNvZGVkPQpfaGRhX2lkLCB0cmFu
cy51c2VyICkKICAgICAgICAgICAgIGRhdGFfY29weSA9M0Qgb3JpZ2luYWwuY29weSggY29weV9j
aGlsZHJlbj0zRFRydWUgKQogICAgICAgICAgICAgaGRhID0zRCBoaXN0b3J5LmFkZF9kYXRhc2V0
KCBkYXRhX2NvcHkgKQo9MjAKQEAgLTMyOSw3ICszMjksNyBAQAo9MjAKICAgICAgICAgIyBsb2dn
ZWQgaW4gdXNlcjogdXNlIGZ1bGwgcGF5bG9hZCwgY2hlY2sgc3RhdGUgaWYgZGVsZXRpbmcsIGFu
ZCBtPQpha2Ugc3VyZSB0aGUgaGlzdG9yeSBpcyB0aGVpcnMKICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGhkYSA9M0Qgc2VsZi5oZGFfbWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywg
c2VsZi5kZWNvZGVfPQppZCggaWQgKSwgdHJhbnMudXNlciApCisgICAgICAgICAgICBoZGEgPTNE
IHNlbGYuaGRhX21hbmFnZXIuZ2V0X2FjY2Vzc2libGUoIHRyYW5zLCBzZWxmLmRlY29kZV9pZD0K
KCBpZCApLCB0cmFucy51c2VyICkKICAgICAgICAgICAgIHNlbGYuaGlzdG9yeV9tYW5hZ2VyLmVy
cm9yX3VubGVzc19vd25lciggdHJhbnMsIGhkYS5oaXN0b3J5LCB0PQpyYW5zLnVzZXIgKQo9MjAK
ICAgICAgICAgICAgICMgb25seSBjaGVja19zdGF0ZSBpZiBub3QgZGVsZXRpbmcsIG90aGVyd2lz
ZSBjYW5ub3QgZGVsZXRlIHVwPQpsb2FkaW5nIGZpbGVzCgpkaWZmIC1yIDY5Yzc0YmM5OTYyNWUz
NjNiZWNhZDA4YjhmOWM1NWMyMzg0NDk3NTAgLXIgOGVlZmMwOWM0MWRjZmMzOTllMzdlMjA9Cjhj
YzcwYzBmMzM0OTE2NDIxIGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2pvYnMucHkKLS0t
IGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvam9icy5weQorKysgYi9saWIvZ2FsYXh5
L3dlYmFwcHMvZ2FsYXh5L2FwaS9qb2JzLnB5CkBAIC0yNjEsNyArMjYxLDcgQEAKICAgICAgICAg
ICAgICAgICBpZiAnaWQnIGluIHY6CiAgICAgICAgICAgICAgICAgICAgIGlmICdzcmMnIG5vdCBp
biB2IG9yIHZbICdzcmMnIF0gPTNEPTNEICdoZGEnOgogICAgICAgICAgICAgICAgICAgICAgICAg
aGRhX2lkID0zRCBzZWxmLmRlY29kZV9pZCggdlsnaWQnXSApCi0gICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhc2V0ID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmFjY2Vzc2libGVfYnlfaWQoIHRyYT0K
bnMsIGhkYV9pZCwgdHJhbnMudXNlciApCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhc2V0
ID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmdldF9hY2Nlc3NpYmxlKCB0cmFucz0KLCBoZGFfaWQsIHRy
YW5zLnVzZXIgKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YXNldCA9M0Qgc2VsZi5nZXRfbGlicmFyeV9kYXRhc2V0X2RhdGFzZXRfYXNzb2M9
CmlhdGlvbiggdHJhbnMsIHZbJ2lkJ10gKQogICAgICAgICAgICAgICAgICAgICBpZiBkYXRhc2V0
IGlzIE5vbmU6CgpkaWZmIC1yIDY5Yzc0YmM5OTYyNWUzNjNiZWNhZDA4YjhmOWM1NWMyMzg0NDk3
NTAgLXIgOGVlZmMwOWM0MWRjZmMzOTllMzdlMjA9CjhjYzcwYzBmMzM0OTE2NDIxIGxpYi9nYWxh
eHkvd2ViYXBwcy9nYWxheHkvYXBpL2xpYnJhcnlfY29udGVudHMucHkKLS0tIGEvbGliL2dhbGF4
eS93ZWJhcHBzL2dhbGF4eS9hcGkvbGlicmFyeV9jb250ZW50cy5weQorKysgYi9saWIvZ2FsYXh5
L3dlYmFwcHMvZ2FsYXh5L2FwaS9saWJyYXJ5X2NvbnRlbnRzLnB5CkBAIC0zMDMsNyArMzAzLDcg
QEAKICAgICAgICAgICAgICMgY2hlY2sgcGVybWlzc2lvbnMgb24gKGFsbCB0aHJlZT8pIHJlc291
cmNlczogaGRhLCBsaWJyYXJ5LCBmPQpvbGRlcgogICAgICAgICAgICAgI1RPRE86IGRvIHdlIHJl
YWxseSBuZWVkIHRoZSBsaWJyYXJ5Pz8KICAgICAgICAgICAgIGZyb21faGRhX2lkID0zRCBzZWxm
LmRlY29kZV9pZCggZnJvbV9oZGFfaWQgKQotICAgICAgICAgICAgaGRhID0zRCBzZWxmLmhkYV9t
YW5hZ2VyLm93bmVkX2J5X2lkKCB0cmFucywgZnJvbV9oZGFfaWQsIHRyYW49CnMudXNlciApCisg
ICAgICAgICAgICBoZGEgPTNEIHNlbGYuaGRhX21hbmFnZXIuZ2V0X293bmVkKCB0cmFucywgZnJv
bV9oZGFfaWQsIHRyYW5zLj0KdXNlciApCiAgICAgICAgICAgICBoZGEgPTNEIHNlbGYuaGRhX21h
bmFnZXIuZXJyb3JfaWZfdXBsb2FkaW5nKCB0cmFucywgaGRhICkKICAgICAgICAgICAgICMgbGli
cmFyeSA9M0Qgc2VsZi5nZXRfbGlicmFyeSggdHJhbnMsIGxpYnJhcnlfaWQsIGNoZWNrX2FjY2Vz
PQpzaWJsZT0zRFRydWUgKQogICAgICAgICAgICAgZm9sZGVyID0zRCBzZWxmLmdldF9saWJyYXJ5
X2ZvbGRlciggdHJhbnMsIGZvbGRlcl9pZCwgY2hlY2tfYWM9CmNlc3NpYmxlPTNEVHJ1ZSApCgpk
aWZmIC1yIDY5Yzc0YmM5OTYyNWUzNjNiZWNhZDA4YjhmOWM1NWMyMzg0NDk3NTAgLXIgOGVlZmMw
OWM0MWRjZmMzOTllMzdlMjA9CjhjYzcwYzBmMzM0OTE2NDIxIGxpYi9nYWxheHkvd2ViYXBwcy9n
YWxheHkvYXBpL3Rvb2xzLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL3Rv
b2xzLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL3Rvb2xzLnB5CkBAIC0x
NDIsNyArMTQyLDcgQEAKICAgICAgICAgaGlzdG9yeV9pZCA9M0QgcGF5bG9hZC5nZXQoImhpc3Rv
cnlfaWQiLCBOb25lKQogICAgICAgICBpZiBoaXN0b3J5X2lkOgogICAgICAgICAgICAgZGVjb2Rl
ZF9pZCA9M0Qgc2VsZi5kZWNvZGVfaWQoIGhpc3RvcnlfaWQgKQotICAgICAgICAgICAgdGFyZ2V0
X2hpc3RvcnkgPTNEIHNlbGYuaGlzdG9yeV9tYW5hZ2VyLm93bmVkX2J5X2lkKCB0cmFucywgZGU9
CmNvZGVkX2lkLCB0cmFucy51c2VyICkKKyAgICAgICAgICAgIHRhcmdldF9oaXN0b3J5ID0zRCBz
ZWxmLmhpc3RvcnlfbWFuYWdlci5nZXRfb3duZWQoIHRyYW5zLCBkZWNvPQpkZWRfaWQsIHRyYW5z
LnVzZXIgKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdGFyZ2V0X2hpc3RvcnkgPTNEIE5v
bmUKPTIwCkBAIC0yODEsNyArMjgxLDcgQEAKPTIwCiAgICAgICAgICMgRGF0YXNldCBjaGVjay4K
ICAgICAgICAgZGVjb2RlZF9kYXRhc2V0X2lkID0zRCBzZWxmLmRlY29kZV9pZCggcGF5bG9hZC5n
ZXQoICd0YXJnZXRfZGF0YXNlPQp0X2lkJyApICkKLSAgICAgICAgb3JpZ2luYWxfZGF0YXNldCA9
M0Qgc2VsZi5oZGFfbWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgZGVjPQpvZGVkX2Rh
dGFzZXRfaWQsIHVzZXI9M0R0cmFucy51c2VyICkKKyAgICAgICAgb3JpZ2luYWxfZGF0YXNldCA9
M0Qgc2VsZi5oZGFfbWFuYWdlci5nZXRfYWNjZXNzaWJsZSggdHJhbnMsIGRlY29kPQplZF9kYXRh
c2V0X2lkLCB1c2VyPTNEdHJhbnMudXNlciApCiAgICAgICAgIG9yaWdpbmFsX2RhdGFzZXQgPTNE
IHNlbGYuaGRhX21hbmFnZXIuZXJyb3JfaWZfdXBsb2FkaW5nKCB0cmFucywgbz0KcmlnaW5hbF9k
YXRhc2V0ICkKICAgICAgICAgbXNnID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmRhdGFfY29udmVyc2lv
bl9zdGF0dXMoIHRyYW5zLCBvcmlnaW5hbF9kPQphdGFzZXQgKQogICAgICAgICBpZiBtc2c6Cgpk
aWZmIC1yIDY5Yzc0YmM5OTYyNWUzNjNiZWNhZDA4YjhmOWM1NWMyMzg0NDk3NTAgLXIgOGVlZmMw
OWM0MWRjZmMzOTllMzdlMjA9CjhjYzcwYzBmMzM0OTE2NDIxIGxpYi9nYWxheHkvd2ViYXBwcy9n
YWxheHkvYXBpL3dvcmtmbG93cy5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2Fw
aS93b3JrZmxvd3MucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvd29ya2Zs
b3dzLnB5CkBAIC0xNDksNyArMTQ5LDcgQEAKICAgICAgICAgaWYgJ2Zyb21faGlzdG9yeV9pZCcg
aW4gcGF5bG9hZDoKICAgICAgICAgICAgIGZyb21faGlzdG9yeV9pZCA9M0QgcGF5bG9hZC5nZXQo
ICdmcm9tX2hpc3RvcnlfaWQnICkKICAgICAgICAgICAgIGZyb21faGlzdG9yeV9pZCA9M0Qgc2Vs
Zi5kZWNvZGVfaWQoIGZyb21faGlzdG9yeV9pZCApCi0gICAgICAgICAgICBoaXN0b3J5ID0zRCBz
ZWxmLmhpc3RvcnlfbWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgZnJvbT0KX2hpc3Rv
cnlfaWQsIHRyYW5zLnVzZXIgKQorICAgICAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5oaXN0b3J5
X21hbmFnZXIuZ2V0X2FjY2Vzc2libGUoIHRyYW5zLCBmcm9tX2g9CmlzdG9yeV9pZCwgdHJhbnMu
dXNlciApCj0yMAogICAgICAgICAgICAgam9iX2lkcyA9M0QgbWFwKCBzZWxmLmRlY29kZV9pZCwg
cGF5bG9hZC5nZXQoICdqb2JfaWRzJywgW10gKSApCiAgICAgICAgICAgICBkYXRhc2V0X2lkcyA9
M0QgcGF5bG9hZC5nZXQoICdkYXRhc2V0X2lkcycsIFtdICkKCmRpZmYgLXIgNjljNzRiYzk5NjI1
ZTM2M2JlY2FkMDhiOGY5YzU1YzIzODQ0OTc1MCAtciA4ZWVmYzA5YzQxZGNmYzM5OWUzN2UyMD0K
OGNjNzBjMGYzMzQ5MTY0MjEgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9k
YXRhc2V0LnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvZGF0
YXNldC5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL2RhdGFz
ZXQucHkKQEAgLTUyOSw4ICs1MjksOCBAQAogICAgIGRlZiBnZXRfbmFtZV9hbmRfbGlua19hc3lu
Yyggc2VsZiwgdHJhbnMsIGlkPTNETm9uZSApOgogICAgICAgICAiIiIgUmV0dXJucyBkYXRhc2V0
J3MgbmFtZSBhbmQgbGluay4gIiIiCiAgICAgICAgIGRlY29kZWRfaWQgPTNEIHNlbGYuZGVjb2Rl
X2lkKCBpZCApCi0gICAgICAgIGRhdGFzZXQgPTNEIHNlbGYuaGRhX21hbmFnZXIuYWNjZXNzaWJs
ZV9ieV9pZCggdHJhbnMsIGRlY29kZWRfaWQsID0KdHJhbnMudXNlciApCi0gICAgICAgIGRhdGFz
ZXQgPTNEIHNlbGYuaGRhX21hbmFnZXIuZXJyb3JfaWZfdXBsb2FkaW5nKCBkYXRhc2V0ICkKKyAg
ICAgICAgZGF0YXNldCA9M0Qgc2VsZi5oZGFfbWFuYWdlci5nZXRfYWNjZXNzaWJsZSggdHJhbnMs
IGRlY29kZWRfaWQsIHRyPQphbnMudXNlciApCisgICAgICAgIGRhdGFzZXQgPTNEIHNlbGYuaGRh
X21hbmFnZXIuZXJyb3JfaWZfdXBsb2FkaW5nKCB0cmFucywgZGF0YXNldCApCiAgICAgICAgIHJl
dHVybl9kaWN0ID0zRCB7ICJuYW1lIiA6IGRhdGFzZXQubmFtZSwgImxpbmsiIDogdXJsX2Zvcigg
Y29udHJvbD0KbGVyPTNEJ2RhdGFzZXQnLCBhY3Rpb249M0QiZGlzcGxheV9ieV91c2VybmFtZV9h
bmRfc2x1ZyIsIHVzZXJuYW1lPTNEZGF0YXNlPQp0Lmhpc3RvcnkudXNlci51c2VybmFtZSwgc2x1
Zz0zRHRyYW5zLnNlY3VyaXR5LmVuY29kZV9pZCggZGF0YXNldC5pZCApICkgfQogICAgICAgICBy
ZXR1cm4gcmV0dXJuX2RpY3QKPTIwCkBAIC01MzgsOCArNTM4LDggQEAKICAgICBkZWYgZ2V0X2Vt
YmVkX2h0bWxfYXN5bmMoIHNlbGYsIHRyYW5zLCBpZCApOgogICAgICAgICAiIiIgUmV0dXJucyBI
VE1MIGZvciBlbWJlZGRpbmcgYSBkYXRhc2V0IGluIGEgcGFnZS4gIiIiCiAgICAgICAgIGRlY29k
ZWRfaWQgPTNEIHNlbGYuZGVjb2RlX2lkKCBpZCApCi0gICAgICAgIGRhdGFzZXQgPTNEIHNlbGYu
aGRhX21hbmFnZXIuYWNjZXNzaWJsZV9ieV9pZCggdHJhbnMsIGRlY29kZWRfaWQsID0KdHJhbnMu
dXNlciApCi0gICAgICAgIGRhdGFzZXQgPTNEIHNlbGYuaGRhX21hbmFnZXIuZXJyb3JfaWZfdXBs
b2FkaW5nKCBkYXRhc2V0ICkKKyAgICAgICAgZGF0YXNldCA9M0Qgc2VsZi5oZGFfbWFuYWdlci5n
ZXRfYWNjZXNzaWJsZSggdHJhbnMsIGRlY29kZWRfaWQsIHRyPQphbnMudXNlciApCisgICAgICAg
IGRhdGFzZXQgPTNEIHNlbGYuaGRhX21hbmFnZXIuZXJyb3JfaWZfdXBsb2FkaW5nKCB0cmFucywg
ZGF0YXNldCApCiAgICAgICAgIGlmIGRhdGFzZXQ6CiAgICAgICAgICAgICByZXR1cm4gIkVtYmVk
ZGVkIERhdGFzZXQgJyVzJyIgJSBkYXRhc2V0Lm5hbWUKPTIwCkBAIC01NTYsOCArNTU2LDggQEAK
ICAgICAgICAgIiIiIFJhdGUgYSBkYXRhc2V0IGFzeW5jaHJvbm91c2x5IGFuZCByZXR1cm4gdXBk
YXRlZCBjb21tdW5pdHkgZGF0PQphLiAiIiIKPTIwCiAgICAgICAgIGRlY29kZWRfaWQgPTNEIHNl
bGYuZGVjb2RlX2lkKCBpZCApCi0gICAgICAgIGRhdGFzZXQgPTNEIHNlbGYuaGRhX21hbmFnZXIu
YWNjZXNzaWJsZV9ieV9pZCggdHJhbnMsIGRlY29kZWRfaWQsID0KdHJhbnMudXNlciApCi0gICAg
ICAgIGRhdGFzZXQgPTNEIHNlbGYuaGRhX21hbmFnZXIuZXJyb3JfaWZfdXBsb2FkaW5nKCBkYXRh
c2V0ICkKKyAgICAgICAgZGF0YXNldCA9M0Qgc2VsZi5oZGFfbWFuYWdlci5nZXRfYWNjZXNzaWJs
ZSggdHJhbnMsIGRlY29kZWRfaWQsIHRyPQphbnMudXNlciApCisgICAgICAgIGRhdGFzZXQgPTNE
IHNlbGYuaGRhX21hbmFnZXIuZXJyb3JfaWZfdXBsb2FkaW5nKCB0cmFucywgZGF0YXNldCApCiAg
ICAgICAgIGlmIG5vdCBkYXRhc2V0OgogICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnNob3dfZXJy
b3JfbWVzc2FnZSggIlRoZSBzcGVjaWZpZWQgZGF0YXNldCBkb2VzIG49Cm90IGV4aXN0LiIgKQo9
MjAKQEAgLTU3MSw4ICs1NzEsOCBAQAogICAgICAgICAiIiIgRGlzcGxheSBkYXRhc2V0IGJ5IHVz
ZXJuYW1lIGFuZCBzbHVnOyBiZWNhdXNlIGRhdGFzZXRzIGRvIG5vdCA9CnlldCBoYXZlIHNsdWdz
LCB0aGUgc2x1ZyBpcyB0aGUgZGF0YXNldCdzIGlkLiAiIiIKICAgICAgICAgaWQgPTNEIHNsdWcK
ICAgICAgICAgZGVjb2RlZF9pZCA9M0Qgc2VsZi5kZWNvZGVfaWQoIGlkICkKLSAgICAgICAgZGF0
YXNldCA9M0Qgc2VsZi5oZGFfbWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgZGVjb2Rl
ZF9pZCwgPQp0cmFucy51c2VyICkKLSAgICAgICAgZGF0YXNldCA9M0Qgc2VsZi5oZGFfbWFuYWdl
ci5lcnJvcl9pZl91cGxvYWRpbmcoIGRhdGFzZXQgKQorICAgICAgICBkYXRhc2V0ID0zRCBzZWxm
LmhkYV9tYW5hZ2VyLmdldF9hY2Nlc3NpYmxlKCB0cmFucywgZGVjb2RlZF9pZCwgdHI9CmFucy51
c2VyICkKKyAgICAgICAgZGF0YXNldCA9M0Qgc2VsZi5oZGFfbWFuYWdlci5lcnJvcl9pZl91cGxv
YWRpbmcoIHRyYW5zLCBkYXRhc2V0ICkKICAgICAgICAgaWYgZGF0YXNldDoKICAgICAgICAgICAg
ICMgRmlsZW5hbWUgdXNlZCBmb3IgY29tcG9zaXRlIHR5cGVzLgogICAgICAgICAgICAgaWYgZmls
ZW5hbWU6CkBAIC02MTQsOCArNjE0LDggQEAKICAgICAgICAgIiIiIFJldHVybnMgaXRlbSBjb250
ZW50IGluIEhUTUwgZm9ybWF0LiAiIiIKPTIwCiAgICAgICAgIGRlY29kZWRfaWQgPTNEIHNlbGYu
ZGVjb2RlX2lkKCBpZCApCi0gICAgICAgIGRhdGFzZXQgPTNEIHNlbGYuaGRhX21hbmFnZXIuYWNj
ZXNzaWJsZV9ieV9pZCggdHJhbnMsIGRlY29kZWRfaWQsID0KdHJhbnMudXNlciApCi0gICAgICAg
IGRhdGFzZXQgPTNEIHNlbGYuaGRhX21hbmFnZXIuZXJyb3JfaWZfdXBsb2FkaW5nKCBkYXRhc2V0
ICkKKyAgICAgICAgZGF0YXNldCA9M0Qgc2VsZi5oZGFfbWFuYWdlci5nZXRfYWNjZXNzaWJsZSgg
dHJhbnMsIGRlY29kZWRfaWQsIHRyPQphbnMudXNlciApCisgICAgICAgIGRhdGFzZXQgPTNEIHNl
bGYuaGRhX21hbmFnZXIuZXJyb3JfaWZfdXBsb2FkaW5nKCB0cmFucywgZGF0YXNldCApCiAgICAg
ICAgIGlmIGRhdGFzZXQgaXMgTm9uZToKICAgICAgICAgICAgIHJhaXNlIHdlYi5odHRwZXhjZXB0
aW9ucy5IVFRQTm90Rm91bmQoKQogICAgICAgICB0cnVuY2F0ZWQsIGRhdGFzZXRfZGF0YSA9M0Qg
c2VsZi5oZGFfbWFuYWdlci50ZXh0X2RhdGEoIGRhdGFzZXQsIHA9CnJldmlldz0zRFRydWUgKQpA
QCAtNjI3LDggKzYyNyw4IEBACiAgICAgZGVmIGFubm90YXRlX2FzeW5jKCBzZWxmLCB0cmFucywg
aWQsIG5ld19hbm5vdGF0aW9uPTNETm9uZSwgKiprd2FyZ3MgKToKICAgICAgICAgI1RPRE86Pz8g
d2h5IGlzIHRoaXMgYW4gYWNjZXNzIGNoZWNrIG9ubHk/CiAgICAgICAgIGRlY29kZWRfaWQgPTNE
IHNlbGYuZGVjb2RlX2lkKCBpZCApCi0gICAgICAgIGRhdGFzZXQgPTNEIHNlbGYuaGRhX21hbmFn
ZXIuYWNjZXNzaWJsZV9ieV9pZCggdHJhbnMsIGRlY29kZWRfaWQsID0KdHJhbnMudXNlciApCi0g
ICAgICAgIGRhdGFzZXQgPTNEIHNlbGYuaGRhX21hbmFnZXIuZXJyb3JfaWZfdXBsb2FkaW5nKCBk
YXRhc2V0ICkKKyAgICAgICAgZGF0YXNldCA9M0Qgc2VsZi5oZGFfbWFuYWdlci5nZXRfYWNjZXNz
aWJsZSggdHJhbnMsIGRlY29kZWRfaWQsIHRyPQphbnMudXNlciApCisgICAgICAgIGRhdGFzZXQg
PTNEIHNlbGYuaGRhX21hbmFnZXIuZXJyb3JfaWZfdXBsb2FkaW5nKCB0cmFucywgZGF0YXNldCAp
CiAgICAgICAgIGlmIG5vdCBkYXRhc2V0OgogICAgICAgICAgICAgd2ViLmh0dHBleGNlcHRpb25z
LkhUVFBOb3RGb3VuZCgpCiAgICAgICAgIGlmIGRhdGFzZXQgYW5kIG5ld19hbm5vdGF0aW9uOgpA
QCAtNjQxLDggKzY0MSw4IEBACiAgICAgQHdlYi5leHBvc2UKICAgICBkZWYgZ2V0X2Fubm90YXRp
b25fYXN5bmMoIHNlbGYsIHRyYW5zLCBpZCApOgogICAgICAgICBkZWNvZGVkX2lkID0zRCBzZWxm
LmRlY29kZV9pZCggaWQgKQotICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmFj
Y2Vzc2libGVfYnlfaWQoIHRyYW5zLCBkZWNvZGVkX2lkLCA9CnRyYW5zLnVzZXIgKQotICAgICAg
ICBkYXRhc2V0ID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmVycm9yX2lmX3VwbG9hZGluZyggZGF0YXNl
dCApCisgICAgICAgIGRhdGFzZXQgPTNEIHNlbGYuaGRhX21hbmFnZXIuZ2V0X2FjY2Vzc2libGUo
IHRyYW5zLCBkZWNvZGVkX2lkLCB0cj0KYW5zLnVzZXIgKQorICAgICAgICBkYXRhc2V0ID0zRCBz
ZWxmLmhkYV9tYW5hZ2VyLmVycm9yX2lmX3VwbG9hZGluZyggdHJhbnMsIGRhdGFzZXQgKQogICAg
ICAgICBpZiBub3QgZGF0YXNldDoKICAgICAgICAgICAgIHdlYi5odHRwZXhjZXB0aW9ucy5IVFRQ
Tm90Rm91bmQoKQogICAgICAgICBhbm5vdGF0aW9uID0zRCBzZWxmLmdldF9pdGVtX2Fubm90YXRp
b25fc3RyKCB0cmFucy5zYV9zZXNzaW9uLCB0cmE9Cm5zLnVzZXIsIGRhdGFzZXQgKQpAQCAtMTAx
Niw3ICsxMDE2LDcgQEAKICAgICAgICAgdXNlciA9M0QgdHJhbnMuZ2V0X3VzZXIoKQogICAgICAg
ICBpZiBzb3VyY2VfaGlzdG9yeSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGRlY29kZWRfc291
cmNlX2hpc3RvcnlfaWQgPTNEIHNlbGYuZGVjb2RlX2lkKCBzb3VyY2VfaGlzdG9yeSApCi0gICAg
ICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdlci5vd25lZF9ieV9pZCggdHJh
bnMsIGRlY29kZWRfcz0Kb3VyY2VfaGlzdG9yeV9pZCwgdHJhbnMudXNlciApCisgICAgICAgICAg
ICBoaXN0b3J5ID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdlci5nZXRfb3duZWQoIHRyYW5zLCBkZWNv
ZGVkX3NvdT0KcmNlX2hpc3RvcnlfaWQsIHRyYW5zLnVzZXIgKQogICAgICAgICAgICAgY3VycmVu
dF9oaXN0b3J5ID0zRCB0cmFucy5nZXRfaGlzdG9yeSgpCiAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICBoaXN0b3J5ID0zRCBjdXJyZW50X2hpc3RvcnkgPTNEIHRyYW5zLmdldF9oaXN0b3J5KCkK
QEAgLTExMTgsOCArMTExOCw4IEBACiAgICAgICAgICAgICAgICAgICAgIGVycm9yX21zZyA9M0Qg
ZXJyb3JfbXNnICsgIllvdSBkbyBub3QgaGF2ZSBwZXJtaXNzaW9uID0KdG8gYWRkIGRhdGFzZXRz
IHRvICVpIHJlcXVlc3RlZCBoaXN0b3JpZXMuICAiICUgKCBsZW4oIHRhcmdldF9oaXN0b3JpZXMg
KSApCiAgICAgICAgICAgICBmb3IgZGF0YXNldF9pZCBpbiBkYXRhc2V0X2lkczoKICAgICAgICAg
ICAgICAgICBkZWNvZGVkX2lkID0zRCBzZWxmLmRlY29kZV9pZCggZGF0YXNldF9pZCApCi0gICAg
ICAgICAgICAgICAgZGF0YSA9M0Qgc2VsZi5oZGFfbWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lkKCB0
cmFucywgZGVjb2RlZD0KX2lkLCB0cmFucy51c2VyICkKLSAgICAgICAgICAgICAgICBkYXRhID0z
RCBzZWxmLmhkYV9tYW5hZ2VyLmVycm9yX2lmX3VwbG9hZGluZyggZGF0YSApCisgICAgICAgICAg
ICAgICAgZGF0YSA9M0Qgc2VsZi5oZGFfbWFuYWdlci5nZXRfYWNjZXNzaWJsZSggdHJhbnMsIGRl
Y29kZWRfaT0KZCwgdHJhbnMudXNlciApCisgICAgICAgICAgICAgICAgZGF0YSA9M0Qgc2VsZi5o
ZGFfbWFuYWdlci5lcnJvcl9pZl91cGxvYWRpbmcoIHRyYW5zLCBkYXRhICkKPTIwCiAgICAgICAg
ICAgICAgICAgaWYgZGF0YSBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICBlcnJvcl9tc2cg
PTNEIGVycm9yX21zZyArICJZb3UgdHJpZWQgdG8gY29weSBhIGRhdGFzZXQ9CiB0aGF0IGRvZXMg
bm90IGV4aXN0IG9yIHRoYXQgeW91IGRvIG5vdCBoYXZlIGFjY2VzcyB0by4gICIKCmRpZmYgLXIg
NjljNzRiYzk5NjI1ZTM2M2JlY2FkMDhiOGY5YzU1YzIzODQ0OTc1MCAtciA4ZWVmYzA5YzQxZGNm
YzM5OWUzN2UyMD0KOGNjNzBjMGYzMzQ5MTY0MjEgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9j
b250cm9sbGVycy9oaXN0b3J5LnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29u
dHJvbGxlcnMvaGlzdG9yeS5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRy
b2xsZXJzL2hpc3RvcnkucHkKQEAgLTIwOSw2ICsyMDksNyBAQAogICAgICAgICAjIEEgcHVibGlj
IGhpc3RvcnkgaXMgcHVibGlzaGVkLCBoYXMgYSBzbHVnLCBhbmQgaXMgbm90IGRlbGV0ZWQuCiAg
ICAgICAgIHJldHVybiBxdWVyeS5maWx0ZXIoIHNlbGYubW9kZWxfY2xhc3MucHVibGlzaGVkID0z
RD0zRCBUcnVlICkuZmlsdD0KZXIoIHNlbGYubW9kZWxfY2xhc3Muc2x1ZyAhPTNEIE5vbmUgKS5m
aWx0ZXIoIHNlbGYubW9kZWxfY2xhc3MuZGVsZXRlZCA9M0Q9Cj0zRCBGYWxzZSApCj0yMAorCiBj
bGFzcyBIaXN0b3J5Q29udHJvbGxlciggQmFzZVVJQ29udHJvbGxlciwgU2hhcmFibGVNaXhpbiwg
VXNlc0Fubm90YXRpb25zLD0KIFVzZXNJdGVtUmF0aW5ncywKICAgICAgICAgICAgICAgICAgICAg
ICAgICBFeHBvcnRzSGlzdG9yeU1peGluLCBJbXBvcnRzSGlzdG9yeU1peGluICk6Cj0yMApAQCAt
MjE3LDIxICsyMTgsNiBAQAogICAgICAgICBzZWxmLmhpc3RvcnlfbWFuYWdlciA9M0QgbWFuYWdl
cnMuaGlzdG9yaWVzLkhpc3RvcnlNYW5hZ2VyKCBhcHAgKQogICAgICAgICBzZWxmLmhpc3Rvcnlf
c2VyaWFsaXplciA9M0QgbWFuYWdlcnMuaGlzdG9yaWVzLkhpc3RvcnlTZXJpYWxpemVyKCA9CnNl
bGYuYXBwICkKPTIwCi0gICAgZGVmIF9nZXRfaGlzdG9yeSggc2VsZiwgdHJhbnMsIGlkLCBjaGVj
a19vd25lcnNoaXA9M0RUcnVlLCBjaGVja19hY2Nlcz0Kc2libGU9M0RGYWxzZSwgZGVsZXRlZD0z
RE5vbmUgKToKLSAgICAgICAgIiIiCi0gICAgICAgIEdldCBhIEhpc3RvcnkgZnJvbSB0aGUgZGF0
YWJhc2UgYnkgaWQsIHZlcmlmeWluZyBvd25lcnNoaXAuCi0gICAgICAgICIiIgotICAgICAgICAj
VE9ETzogbW92ZWQgZnJvbSB0aGUgbWl4aW4gLSB0byBtYW5hZ2VyCi0gICAgICAgIGlmIHRyYW5z
LnVzZXIgaXMgTm9uZSBhbmQgdHJhbnMuaGlzdG9yeToKLSAgICAgICAgICAgIGlmIGlkID0zRD0z
RCB0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHRyYW5zLmhpc3RvcnkuaWQgKToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdHJhbnMuaGlzdG9yeQotICAgICAgICAgICAgcmFpc2UgSXRlbU93bmVy
c2hpcEV4Y2VwdGlvbiggIk11c3QgYmUgbG9nZ2VkIGluIHRvIG1hbmFnZSBHYWw9CmF4eSBpdGVt
cyIsIHR5cGU9M0QnZXJyb3InICkKLQotICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmdldF9vYmpl
Y3QoIHRyYW5zLCBpZCwgJ0hpc3RvcnknLAotICAgICAgICAgICAgY2hlY2tfb3duZXJzaGlwPTNE
Y2hlY2tfb3duZXJzaGlwLCBjaGVja19hY2Nlc3NpYmxlPTNEY2hlY2tfYWM9CmNlc3NpYmxlLCBk
ZWxldGVkPTNEZGVsZXRlZCApCi0gICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuc2VjdXJpdHlfY2hl
Y2soIHRyYW5zLCBoaXN0b3J5LCBjaGVja19vd25lcnNoaXAsID0KY2hlY2tfYWNjZXNzaWJsZSAp
Ci0gICAgICAgIHJldHVybiBoaXN0b3J5Ci0KICAgICBAd2ViLmV4cG9zZQogICAgIGRlZiBpbmRl
eCggc2VsZiwgdHJhbnMgKToKICAgICAgICAgcmV0dXJuICIiCkBAIC0yNTcsNyArMjQzLDYgQEAK
ICAgICAgICAgZ3JpZCA9M0Qgc2VsZi5wdWJsaXNoZWRfbGlzdF9ncmlkKCB0cmFucywgKiprd2Fy
Z3MgKQogICAgICAgICByZXR1cm4gdHJhbnMuZmlsbF90ZW1wbGF0ZSggImhpc3RvcnkvbGlzdF9w
dWJsaXNoZWQubWFrbyIsIGVtYmVkZGU9CmRfZ3JpZD0zRGdyaWQgKQo9MjAKLQogICAgIEB3ZWIu
ZXhwb3NlCiAgICAgQHdlYi5yZXF1aXJlX2xvZ2luKCAid29yayB3aXRoIG11bHRpcGxlIGhpc3Rv
cmllcyIgKQogICAgIGRlZiBsaXN0KCBzZWxmLCB0cmFucywgKiprd2FyZ3MgKToKQEAgLTI3Mywx
NCArMjU4LDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGRlbCBrd2FyZ3NbJ25hbWUnXSAjIFJl
bW92ZSBhamF4IG5hbWUgcGFyYW0gdGhhdCByZW5hbT0KZSBtZXRob2QgdXNlcwogICAgICAgICAg
ICAgICAgIHJldHVybiBzZWxmLnJlbmFtZSggdHJhbnMsICoqa3dhcmdzICkKICAgICAgICAgICAg
IGlmIG9wZXJhdGlvbiA9M0Q9M0QgInZpZXciOgotICAgICAgICAgICAgICAgIGhpc3RvcnkgPTNE
IHNlbGYuX2dldF9oaXN0b3J5KCB0cmFucywga3dhcmdzLmdldCggJ2lkJywgTm89Cm5lICkgKQot
ICAgICAgICAgICAgICAgIGlmIGhpc3Rvcnk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0
cmFucy5yZXNwb25zZS5zZW5kX3JlZGlyZWN0KCB1cmxfZm9yKCBjb250cm9sbD0KZXI9M0QnaGlz
dG9yeScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhY3Rpb249Cj0zRCd2aWV3JywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPTNEa3dhPQpy
Z3NbJ2lkJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaG93X2RlbD0KZXRlZD0zRGhpc3RvcnkuZGVsZXRlZCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVzZV9wYW5lPQpscz0zREZhbHNlICkgKQotICAgICAgICAgICAgICAgICAgICAjcmV0
dXJuIHNlbGYudmlldyggdHJhbnMsIGlkPTNEa3dhcmdzWydpZCddLCBzaG93X2RlbGU9CnRlZD0z
RGhpc3RvcnkuZGVsZXRlZCwgdXNlX3BhbmVscz0zREZhbHNlICkKKyAgICAgICAgICAgICAgICBk
ZWNvZGVkX2lkID0zRCBzZWxmLmRlY29kZV9pZCgga3dhcmdzLmdldCggJ2lkJywgTm9uZSApICkK
KyAgICAgICAgICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdlci5nZXRfb3du
ZWQoIHRyYW5zLCBkZWNvZGVkPQpfaWQsIHRyYW5zLnVzZXIgKQorICAgICAgICAgICAgICAgIHJl
dHVybiB0cmFucy5yZXNwb25zZS5zZW5kX3JlZGlyZWN0KCB1cmxfZm9yKCBjb250cm9sbGVyPQo9
M0QnaGlzdG9yeScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFjdGlvbj0zRCd2aT0KZXcnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD0zRGt3YXJnc1s9
CidpZCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaG93X2RlbGV0ZWQ9Cj0zRGhpc3RvcnkuZGVsZXRlZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNl
X3BhbmVscz0KPTNERmFsc2UgKSApCiAgICAgICAgICAgICBpZiBvcGVyYXRpb24gPTNEPTNEICdj
b3B5JyBhbmQga3dhcmdzLmdldCggJ2lkJywgTm9uZSApOgogICAgICAgICAgICAgICAgIHJldHVy
biBzZWxmLmNvcHkoIHRyYW5zLCBpZD0zRGt3YXJncy5nZXQoICdpZCcsIE5vbmUgKSApCiAgICAg
ICAgICAgICBoaXN0b3J5X2lkcyA9M0QgZ2FsYXh5LnV0aWwubGlzdGlmeSgga3dhcmdzLmdldCgg
J2lkJywgW10gKSApCkBAIC0yOTAsNyArMjc0LDcgQEAKICAgICAgICAgICAgICMgTG9hZCB0aGUg
aGlzdG9yaWVzIGFuZCBlbnN1cmUgdGhleSBhbGwgYmVsb25nIHRvIHRoZSBjdXJyZW50PQogdXNl
cgogICAgICAgICAgICAgaGlzdG9yaWVzID0zRCBbXQogICAgICAgICAgICAgZm9yIGhpc3Rvcnlf
aWQgaW4gaGlzdG9yeV9pZHM6Ci0gICAgICAgICAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5fZ2V0
X2hpc3RvcnkoIHRyYW5zLCBoaXN0b3J5X2lkICkKKyAgICAgICAgICAgICAgICBoaXN0b3J5ID0z
RCBzZWxmLmhpc3RvcnlfbWFuYWdlci5nZXRfb3duZWQoIHRyYW5zLCBzZWxmLmRlPQpjb2RlX2lk
KCBoaXN0b3J5X2lkICksIHRyYW5zLnVzZXIgKQogICAgICAgICAgICAgICAgIGlmIGhpc3Rvcnk6
CiAgICAgICAgICAgICAgICAgICAgICMgRW5zdXJlIGhpc3RvcnkgaXMgb3duZWQgYnkgY3VycmVu
dCB1c2VyCiAgICAgICAgICAgICAgICAgICAgIGlmIGhpc3RvcnkudXNlcl9pZCAhPTNEIE5vbmUg
YW5kIHRyYW5zLnVzZXI6CkBAIC0zMzMsMTAgKzMxNywxMyBAQAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX21ha2VfaXRlbV9pbXBvcnRhYmxlKCB0cmFucy5zYV9zZXNzaW9uLCA9
Cmhpc3RvcnkgKQogICAgICAgICAgICAgICAgIGVsaWYgb3BlcmF0aW9uID0zRD0zRCAiZGlzYWJs
ZSBpbXBvcnQgdmlhIGxpbmsiOgogICAgICAgICAgICAgICAgICAgICBpZiBoaXN0b3J5X2lkczoK
LSAgICAgICAgICAgICAgICAgICAgICAgIGhpc3RvcmllcyA9M0QgWyBzZWxmLl9nZXRfaGlzdG9y
eSggdHJhbnMsIGhpc3RvcnlfPQppZCApIGZvciBoaXN0b3J5X2lkIGluIGhpc3RvcnlfaWRzIF0K
LSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBoaXN0b3J5IGluIGhpc3RvcmllczoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGhpc3RvcmllcyA9M0QgW10KKyAgICAgICAgICAgICAgICAgICAg
ICAgIGZvciBoaXN0b3J5X2lkIGluIGhpc3RvcnlfaWRzOgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuaGlzdG9yeV9tYW5hZ2VyLmdldF9vd25lZCggdHI9CmFu
cywgc2VsZi5kZWNvZGVfaWQoIGhpc3RvcnlfaWQgKSwgdHJhbnMudXNlciApCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgaGlzdG9yeS5pbXBvcnRhYmxlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBoaXN0b3J5LmltcG9ydGFibGUgPTNEIEZhbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGlzdG9yaWVzLmFwcGVuZCggaGlzdG9yeSApCisKICAgICAgICAg
ICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKICAgICAgICAgIyBSZW5kZXIgdGhlIGxp
c3QgdmlldwogICAgICAgICByZXR1cm4gc2VsZi5zdG9yZWRfbGlzdF9ncmlkKCB0cmFucywgc3Rh
dHVzPTNEc3RhdHVzLCBtZXNzYWdlPTNEbWU9CnNzYWdlLCAqKmt3YXJncyApCkBAIC00NTAsNyAr
NDM3LDcgQEAKICAgICAgICAgICAgIG9wZXJhdGlvbiA9M0Qga3dhcmdzWydvcGVyYXRpb24nXS5s
b3dlcigpCiAgICAgICAgICAgICBpZiBvcGVyYXRpb24gPTNEPTNEICJ2aWV3IjoKICAgICAgICAg
ICAgICAgICAjIERpc3BsYXkgaGlzdG9yeS4KLSAgICAgICAgICAgICAgICBoaXN0b3J5ID0zRCBz
ZWxmLl9nZXRfaGlzdG9yeSggdHJhbnMsIGlkc1swXSwgRmFsc2UpCisgICAgICAgICAgICAgICAg
aGlzdG9yeSA9M0Qgc2VsZi5oaXN0b3J5X21hbmFnZXIuZ2V0X2FjY2Vzc2libGUoIHRyYW5zLCBz
ZT0KbGYuZGVjb2RlX2lkKCBpZHNbMF0gKSwgdHJhbnMudXNlciApCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHNlbGYuZGlzcGxheV9ieV91c2VybmFtZV9hbmRfc2x1ZyggdHJhbnMsIGhpc3Rvcnku
dT0Kc2VyLnVzZXJuYW1lLCBoaXN0b3J5LnNsdWcgKQogICAgICAgICAgICAgZWxpZiBvcGVyYXRp
b24gPTNEPTNEICJjb3B5IjoKICAgICAgICAgICAgICAgICBpZiBub3QgaWRzOgpAQCAtNDYzLDEy
ICs0NTAsMTMgQEAKICAgICAgICAgICAgICAgICBpZiBub3QgaWRzOgogICAgICAgICAgICAgICAg
ICAgICBtZXNzYWdlID0zRCAiU2VsZWN0IGEgaGlzdG9yeSB0byB1bnNoYXJlIgogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gc2VsZi5zaGFyZWRfbGlzdF9ncmlkKCB0cmFucywgc3RhdHVzPTNE
J2Vycm9yJyw9CiBtZXNzYWdlPTNEbWVzc2FnZSwgKiprd2FyZ3MgKQotICAgICAgICAgICAgICAg
ICMgTm8gbmVlZCB0byBjaGVjayBzZWN1cml0eSwgYXNzb2NpYXRpb24gYmVsb3cgd29uJ3QgeWll
bGQ9CiBhCi0gICAgICAgICAgICAgICAgIyBoaXQgaWYgdGhpcyB1c2VyIGlzbid0IGhhdmluZyB0
aGUgaGlzdG9yeSBzaGFyZWQgd2l0aCBoZT0Kci4KLSAgICAgICAgICAgICAgICBoaXN0b3JpZXMg
PTNEIFsgc2VsZi5fZ2V0X2hpc3RvcnkoIHRyYW5zLCBoaXN0b3J5X2lkLCBjaGVjPQprX293bmVy
c2hpcD0zREZhbHNlICkgZm9yIGhpc3RvcnlfaWQgaW4gaWRzIF0KLSAgICAgICAgICAgICAgICBm
b3IgaGlzdG9yeSBpbiBoaXN0b3JpZXM6CisgICAgICAgICAgICAgICAgZm9yIGlkIGluIGlkczoK
KyAgICAgICAgICAgICAgICAgICAgIyBObyBuZWVkIHRvIGNoZWNrIHNlY3VyaXR5LCBhc3NvY2lh
dGlvbiBiZWxvdyB3b24ndCB5PQppZWxkIGEKKyAgICAgICAgICAgICAgICAgICAgIyBoaXQgaWYg
dGhpcyB1c2VyIGlzbid0IGhhdmluZyB0aGUgaGlzdG9yeSBzaGFyZWQgd2l0PQpoIGhlci4KKyAg
ICAgICAgICAgICAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5oaXN0b3J5X21hbmFnZXIuYnlfaWQo
IHRyYW5zLCBzZWxmLmRlPQpjb2RlX2lkKCBpZCApICkKICAgICAgICAgICAgICAgICAgICAgIyBD
dXJyZW50IHVzZXIgaXMgdGhlIHVzZXIgd2l0aCB3aGljaCB0aGUgaGlzdG9yaWVzIHdlPQpyZSBz
aGFyZWQKLSAgICAgICAgICAgICAgICAgICAgYXNzb2NpYXRpb24gPTNEIHRyYW5zLnNhX3Nlc3Np
b24ucXVlcnkoIHRyYW5zLmFwcC5tb2RlPQpsLkhpc3RvcnlVc2VyU2hhcmVBc3NvY2lhdGlvbiAp
LmZpbHRlcl9ieSggdXNlcj0zRHRyYW5zLnVzZXIsIGhpc3Rvcnk9M0RoaXM9CnRvcnkgKS5vbmUo
KQorICAgICAgICAgICAgICAgICAgICBhc3NvY2lhdGlvbiA9M0QgKCB0cmFucy5zYV9zZXNzaW9u
LnF1ZXJ5KCB0cmFucy5hcHAubW89CmRlbC5IaXN0b3J5VXNlclNoYXJlQXNzb2NpYXRpb24gKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXJfYnkoIHVzZXI9
M0R0cmFucy51c2VyLCBoaXM9CnRvcnk9M0RoaXN0b3J5ICkub25lKCkgKQogICAgICAgICAgICAg
ICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmRlbGV0ZSggYXNzb2NpYXRpb24gKQogICAgICAgICAg
ICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKICAgICAgICAgICAgICAgICBtZXNz
YWdlID0zRCAiVW5zaGFyZWQgJWQgc2hhcmVkIGhpc3RvcmllcyIgJSBsZW4oIGlkcyApCkBAIC01
NjMsNyArNTUxLDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgICIiIgogICAgICAgICBpZCA9M0Qg
c2VsZi5kZWNvZGVfaWQoIGlkICkgaWYgaWQgZWxzZSB0cmFucy5oaXN0b3J5LmlkCi0gICAgICAg
IGhpc3RvcnlfdG9fdmlldyA9M0Qgc2VsZi5oaXN0b3J5X21hbmFnZXIuYWNjZXNzaWJsZV9ieV9p
ZCggdHJhbnMsID0KaWQsIHRyYW5zLnVzZXIgKQorICAgICAgICBoaXN0b3J5X3RvX3ZpZXcgPTNE
IHNlbGYuaGlzdG9yeV9tYW5hZ2VyLmdldF9hY2Nlc3NpYmxlKCB0cmFucywgaWQ9CiwgdHJhbnMu
dXNlciApCj0yMAogICAgICAgICBoaXN0b3J5X2RhdGEgPTNEIHNlbGYuaGlzdG9yeV9tYW5hZ2Vy
Ll9nZXRfaGlzdG9yeV9kYXRhKCB0cmFucywgaGk9CnN0b3J5X3RvX3ZpZXcgKQogICAgICAgICBo
aXN0b3J5X2RpY3Rpb25hcnkgPTNEIGhpc3RvcnlfZGF0YVsgJ2hpc3RvcnknIF0KQEAgLTYwMyw3
ICs1OTEsNyBAQAogICAgICAgICBoZGFfZGljdGlvbmFyaWVzICAgPTNEIFtdCiAgICAgICAgIHVz
ZXJfaXNfb3duZXIgPTNEIEZhbHNlCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGhpc3Rvcnlf
dG9fdmlldyA9M0Qgc2VsZi5oaXN0b3J5X21hbmFnZXIuYWNjZXNzaWJsZV9ieV9pZCggdHJhPQpu
cywgaWQsIHRyYW5zLnVzZXIgKQorICAgICAgICAgICAgaGlzdG9yeV90b192aWV3ID0zRCBzZWxm
Lmhpc3RvcnlfbWFuYWdlci5nZXRfYWNjZXNzaWJsZSggdHJhbnM9Ciwgc2VsZi5kZWNvZGVfaWQo
IGlkICksIHRyYW5zLnVzZXIgKQogICAgICAgICAgICAgdXNlcl9pc19vd25lciA9M0QgaGlzdG9y
eV90b192aWV3LnVzZXIgPTNEPTNEIHRyYW5zLnVzZXIKPTIwCiAgICAgICAgICAgICAjIGluY2x1
ZGUgYWxsIGRhdGFzZXRzOiBoaWRkZW4sIGRlbGV0ZWQsIGFuZCBwdXJnZWQKQEAgLTY2NSw3ICs2
NTMsNyBAQAogICAgICAgICBpZiBoaXN0b3J5IGlzIE5vbmU6CiAgICAgICAgICAgIHJhaXNlIHdl
Yi5odHRwZXhjZXB0aW9ucy5IVFRQTm90Rm91bmQoKQogICAgICAgICAjIFNlY3VyaXR5IGNoZWNr
IHJhaXNlcyBlcnJvciBpZiB1c2VyIGNhbm5vdCBhY2Nlc3MgaGlzdG9yeS4KLSAgICAgICAgc2Vs
Zi5zZWN1cml0eV9jaGVjayggdHJhbnMsIGhpc3RvcnksIEZhbHNlLCBUcnVlKQorICAgICAgICBz
ZWxmLmhpc3RvcnlfbWFuYWdlci5lcnJvcl91bmxlc3NfYWNjZXNzaWJsZSggdHJhbnMsIGhpc3Rv
cnksIHRyYW49CnMudXNlciApCj0yMAogICAgICAgICAjIEdldCByYXRpbmcgZGF0YS4KICAgICAg
ICAgdXNlcl9pdGVtX3JhdGluZyA9M0QgMApAQCAtNzA1LDcgKzY5Myw4IEBACiAgICAgICAgIGlm
IGlkOgogICAgICAgICAgICAgaWRzID0zRCBnYWxheHkudXRpbC5saXN0aWZ5KCBpZCApCiAgICAg
ICAgICAgICBpZiBpZHM6Ci0gICAgICAgICAgICAgICAgaGlzdG9yaWVzID0zRCBbIHNlbGYuX2dl
dF9oaXN0b3J5KCB0cmFucywgaGlzdG9yeV9pZCApIGZvcj0KIGhpc3RvcnlfaWQgaW4gaWRzIF0K
KyAgICAgICAgICAgICAgICBoaXN0b3JpZXMgPTNEIFsgc2VsZi5oaXN0b3J5X21hbmFnZXIuZ2V0
X2FjY2Vzc2libGUoIHRyYW5zPQosIHNlbGYuZGVjb2RlX2lkKCBoaXN0b3J5X2lkICksIHRyYW5z
LnVzZXIgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGhpc3RvcnlfaWQgaW4g
aWRzIF0KICAgICAgICAgZWxpZiBub3QgaGlzdG9yaWVzOgogICAgICAgICAgICAgaGlzdG9yaWVz
ID0zRCBbIHRyYW5zLmhpc3RvcnkgXQo9MjAKQEAgLTc3NCw3ICs3NjMsNyBAQAogICAgICAgICAg
ICAgc2VuZF90b19lcnIgPTNEIGVycl9tc2cKICAgICAgICAgICAgIGhpc3RvcmllcyA9M0QgW10K
ICAgICAgICAgICAgIGZvciBoaXN0b3J5X2lkIGluIGlkOgotICAgICAgICAgICAgICAgIGhpc3Rv
cmllcy5hcHBlbmQoIHNlbGYuX2dldF9oaXN0b3J5KCB0cmFucywgaGlzdG9yeV9pZCApICkKKyAg
ICAgICAgICAgICAgICBoaXN0b3JpZXMuYXBwZW5kKCBzZWxmLmhpc3RvcnlfbWFuYWdlci5nZXRf
b3duZWQoIHRyYW5zLCBzPQplbGYuZGVjb2RlX2lkKCBoaXN0b3J5X2lkICksIHRyYW5zLnVzZXIg
KSApCiAgICAgICAgICAgICByZXR1cm4gdHJhbnMuZmlsbF90ZW1wbGF0ZSggIi9oaXN0b3J5L3No
YXJlLm1ha28iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpc3Rv
cmllcz0zRGhpc3RvcmllcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbWFpbD0zRGVtYWlsLApAQCAtODgyLDcgKzg3MSw3IEBACiAgICAgICAgIHNlbmRfdG9fZXJy
ID0zRCAiIgogICAgICAgICBoaXN0b3JpZXMgPTNEIFtdCiAgICAgICAgIGZvciBoaXN0b3J5X2lk
IGluIGlkOgotICAgICAgICAgICAgaGlzdG9yaWVzLmFwcGVuZCggc2VsZi5fZ2V0X2hpc3Rvcnko
IHRyYW5zLCBoaXN0b3J5X2lkICkgKQorICAgICAgICAgICAgaGlzdG9yaWVzLmFwcGVuZCggc2Vs
Zi5oaXN0b3J5X21hbmFnZXIuZ2V0X293bmVkKCB0cmFucywgc2VsZi49CmRlY29kZV9pZCggaGlz
dG9yeV9pZCApLCB0cmFucy51c2VyICkgKQogICAgICAgICBzZW5kX3RvX3VzZXJzID0zRCBbXQog
ICAgICAgICBmb3IgZW1haWxfYWRkcmVzcyBpbiBnYWxheHkudXRpbC5saXN0aWZ5KCBlbWFpbCAp
OgogICAgICAgICAgICAgZW1haWxfYWRkcmVzcyA9M0QgZW1haWxfYWRkcmVzcy5zdHJpcCgpCkBA
IC0xMTYxLDcgKzExNTAsNyBAQAogICAgIEB3ZWIuanNvbgogICAgIGRlZiByYXRlX2FzeW5jKCBz
ZWxmLCB0cmFucywgaWQsIHJhdGluZyApOgogICAgICAgICAiIiIgUmF0ZSBhIGhpc3RvcnkgYXN5
bmNocm9ub3VzbHkgYW5kIHJldHVybiB1cGRhdGVkIGNvbW11bml0eSBkYXQ9CmEuICIiIgotICAg
ICAgICBoaXN0b3J5ID0zRCBzZWxmLl9nZXRfaGlzdG9yeSggdHJhbnMsIGlkLCBjaGVja19vd25l
cnNoaXA9M0RGYWxzZSw9CiBjaGVja19hY2Nlc3NpYmxlPTNEVHJ1ZSApCisgICAgICAgIGhpc3Rv
cnkgPTNEIHNlbGYuaGlzdG9yeV9tYW5hZ2VyLmdldF9hY2Nlc3NpYmxlKCB0cmFucywgc2VsZi5k
ZWNvZD0KZV9pZCggaWQgKSwgdHJhbnMudXNlciApCiAgICAgICAgIGlmIG5vdCBoaXN0b3J5Ogog
ICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnNob3dfZXJyb3JfbWVzc2FnZSggIlRoZSBzcGVjaWZp
ZWQgaGlzdG9yeSBkb2VzIG49Cm90IGV4aXN0LiIgKQogICAgICAgICAjIFJhdGUgaGlzdG9yeS4K
QEAgLTEyMDUsNyArMTE5NCw3IEBACiAgICAgICAgICMgR2V0IGhpc3RvcnkgdG8gZXhwb3J0Lgog
ICAgICAgICAjCiAgICAgICAgIGlmIGlkOgotICAgICAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5f
Z2V0X2hpc3RvcnkoIHRyYW5zLCBpZCwgY2hlY2tfb3duZXJzaGlwPTNERmE9CmxzZSwgY2hlY2tf
YWNjZXNzaWJsZT0zRFRydWUgKQorICAgICAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5oaXN0b3J5
X21hbmFnZXIuZ2V0X2FjY2Vzc2libGUoIHRyYW5zLCBzZWxmLmQ9CmVjb2RlX2lkKCBpZCApLCB0
cmFucy51c2VyICkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgVXNlIGN1cnJlbnQgaGlz
dG9yeS4KICAgICAgICAgICAgIGhpc3RvcnkgPTNEIHRyYW5zLmhpc3RvcnkKQEAgLTEyNDMsNyAr
MTIzMiw3IEBACiAgICAgQHdlYi5yZXF1aXJlX2xvZ2luKCAiZ2V0IGhpc3RvcnkgbmFtZSBhbmQg
bGluayIgKQogICAgIGRlZiBnZXRfbmFtZV9hbmRfbGlua19hc3luYyggc2VsZiwgdHJhbnMsIGlk
PTNETm9uZSApOgogICAgICAgICAiIiIgUmV0dXJucyBoaXN0b3J5J3MgbmFtZSBhbmQgbGluay4g
IiIiCi0gICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuX2dldF9oaXN0b3J5KCB0cmFucywgaWQsIEZh
bHNlICkKKyAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5oaXN0b3J5X21hbmFnZXIuZ2V0X2FjY2Vz
c2libGUoIHRyYW5zLCBzZWxmLmRlY29kPQplX2lkKCBpZCApLCB0cmFucy51c2VyICkKICAgICAg
ICAgaWYgc2VsZi5jcmVhdGVfaXRlbV9zbHVnKCB0cmFucy5zYV9zZXNzaW9uLCBoaXN0b3J5ICk6
CiAgICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKICAgICAgICAgcmV0dXJuX2Rp
Y3QgPTNEIHsKQEAgLTEyNTcsNyArMTI0Niw3IEBACiAgICAgQHdlYi5yZXF1aXJlX2xvZ2luKCAi
c2V0IGhpc3RvcnkncyBhY2Nlc3NpYmxlIGZsYWciICkKICAgICBkZWYgc2V0X2FjY2Vzc2libGVf
YXN5bmMoIHNlbGYsIHRyYW5zLCBpZD0zRE5vbmUsIGFjY2Vzc2libGU9M0RGYWxzZSApOgogICAg
ICAgICAiIiIgU2V0IGhpc3RvcnkncyBpbXBvcnRhYmxlIGF0dHJpYnV0ZSBhbmQgc2x1Zy4gIiIi
Ci0gICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuX2dldF9oaXN0b3J5KCB0cmFucywgaWQsIFRydWUg
KQorICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdlci5nZXRfb3duZWQoIHRy
YW5zLCBzZWxmLmRlY29kZV9pZCg9CiBpZCApLCB0cmFucy51c2VyICkKICAgICAgICAgIyBPbmx5
IHNldCBpZiBpbXBvcnRhYmxlIHZhbHVlIHdvdWxkIGNoYW5nZTsgdGhpcyBwcmV2ZW50cyBhIGNo
YW5nPQplIGluIHRoZSB1cGRhdGVfdGltZSB1bmxlc3MgYXR0cmlidXRlIHJlYWxseSBjaGFuZ2Vk
LgogICAgICAgICBpbXBvcnRhYmxlID0zRCBhY2Nlc3NpYmxlIGluIFsnVHJ1ZScsICd0cnVlJywg
J3QnLCAnVCddOwogICAgICAgICBpZiBoaXN0b3J5IGFuZCBoaXN0b3J5LmltcG9ydGFibGUgIT0z
RCBpbXBvcnRhYmxlOgpAQCAtMTMwNiwxMSArMTI5NSwxMSBAQAogICAgICAgICAjIERvIGltcG9y
dC4KICAgICAgICAgaWYgbm90IGlkOgogICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnNob3dfZXJy
b3JfbWVzc2FnZSggIllvdSBtdXN0IHNwZWNpZnkgYSBoaXN0b3J5IHk9Cm91IHdhbnQgdG8gaW1w
b3J0Ljxicj5Zb3UgY2FuICVzLiIgJSByZWZlcmVyX21lc3NhZ2UsIHVzZV9wYW5lbHM9M0RUcnVl
ICkKLSAgICAgICAgaW1wb3J0X2hpc3RvcnkgPTNEIHNlbGYuX2dldF9oaXN0b3J5KCB0cmFucywg
aWQsIGNoZWNrX293bmVyc2hpcD0KPTNERmFsc2UsIGNoZWNrX2FjY2Vzc2libGU9M0RGYWxzZSAp
CisgICAgICAgIGltcG9ydF9oaXN0b3J5ID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdlci5ieV9pZCgg
dHJhbnMsIHNlbGYuZGVjb2RlXz0KaWQoIGlkICkgKQogICAgICAgICBpZiBub3QgaW1wb3J0X2hp
c3Rvcnk6CiAgICAgICAgICAgICByZXR1cm4gdHJhbnMuc2hvd19lcnJvcl9tZXNzYWdlKCAiVGhl
IHNwZWNpZmllZCBoaXN0b3J5IGRvZXMgbj0Kb3QgZXhpc3QuPGJyPllvdSBjYW4gJXMuIiAlIHJl
ZmVyZXJfbWVzc2FnZSwgdXNlX3BhbmVscz0zRFRydWUgKQogICAgICAgICAjIEhpc3RvcnkgaXMg
aW1wb3J0YWJsZSBpZiB1c2VyIGlzIGFkbWluIG9yIGl0J3MgYWNjZXNzaWJsZS4gVE9ETzo9CiBw
cm9iYWJseSB3YW50IHRvIGhhdmUgYXBwIHNldHRpbmcgdG8gZW5hYmxlIGFkbWluIGFjY2VzcyB0
byBoaXN0b3JpZXMuCi0gICAgICAgIGlmIG5vdCB0cmFucy51c2VyX2lzX2FkbWluKCkgYW5kIG5v
dCBzZWxmLnNlY3VyaXR5X2NoZWNrKCB0cmFucywgaT0KbXBvcnRfaGlzdG9yeSwgY2hlY2tfb3du
ZXJzaGlwPTNERmFsc2UsIGNoZWNrX2FjY2Vzc2libGU9M0RUcnVlICk6CisgICAgICAgIGlmIG5v
dCBzZWxmLmhpc3RvcnlfbWFuYWdlci5pc19hY2Nlc3NpYmxlKCB0cmFucywgaW1wb3J0X2hpc3Rv
cnksID0KdHJhbnMudXNlciApOgogICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnNob3dfZXJyb3Jf
bWVzc2FnZSggIllvdSBjYW5ub3QgYWNjZXNzIHRoaXMgaGlzdG89CnJ5Ljxicj5Zb3UgY2FuICVz
LiIgJSByZWZlcmVyX21lc3NhZ2UsIHVzZV9wYW5lbHM9M0RUcnVlICkKICAgICAgICAgaWYgdXNl
cjoKICAgICAgICAgICAgICNkYW46IEkgY2FuIGltcG9ydCBteSBvd24gaGlzdG9yeS4KQEAgLTEz
NzYsNyArMTM2NSw3IEBACiAgICAgICAgIGhpc3RvcmllcyA9M0QgW10KICAgICAgICAgY3VyX25h
bWVzID0zRCBbXQogICAgICAgICBmb3IgaGlzdG9yeV9pZCBpbiBpZDoKLSAgICAgICAgICAgIGhp
c3RvcnkgPTNEIHNlbGYuX2dldF9oaXN0b3J5KCB0cmFucywgaGlzdG9yeV9pZCApCisgICAgICAg
ICAgICBoaXN0b3J5ID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdlci5nZXRfb3duZWQoIHRyYW5zLCBz
ZWxmLmRlY29kZT0KX2lkKCBoaXN0b3J5X2lkICksIHRyYW5zLnVzZXIgKQogICAgICAgICAgICAg
aWYgaGlzdG9yeSBhbmQgaGlzdG9yeS51c2VyX2lkID0zRD0zRCB1c2VyLmlkOgogICAgICAgICAg
ICAgICAgIGhpc3Rvcmllcy5hcHBlbmQoIGhpc3RvcnkgKQogICAgICAgICAgICAgICAgIGN1cl9u
YW1lcy5hcHBlbmQoIGhpc3RvcnkuZ2V0X2Rpc3BsYXlfbmFtZSgpICkKQEAgLTE0MTgsNyArMTQw
Nyw3IEBACiAgICAgICAgICAgICBpZHMgPTNEIGdhbGF4eS51dGlsLmxpc3RpZnkoIGlkICkKICAg
ICAgICAgICAgIGhpc3RvcmllcyA9M0QgW10KICAgICAgICAgICAgIGZvciBoaXN0b3J5X2lkIGlu
IGlkczoKLSAgICAgICAgICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLl9nZXRfaGlzdG9yeSggdHJh
bnMsIGhpc3RvcnlfaWQsIGNoZWNrX293PQpuZXJzaGlwPTNERmFsc2UgKQorICAgICAgICAgICAg
ICAgIGhpc3RvcnkgPTNEIHNlbGYuaGlzdG9yeV9tYW5hZ2VyLmdldF9hY2Nlc3NpYmxlKCB0cmFu
cywgc2U9CmxmLmRlY29kZV9pZCggaGlzdG9yeV9pZCApLCB0cmFucy51c2VyICkKICAgICAgICAg
ICAgICAgICBoaXN0b3JpZXMuYXBwZW5kKCBoaXN0b3J5ICkKICAgICAgICAgdXNlciA9M0QgdHJh
bnMuZ2V0X3VzZXIoKQogICAgICAgICBmb3IgaGlzdG9yeSBpbiBoaXN0b3JpZXM6CkBAIC0xNDU1
LDcgKzE0NDQsNyBAQAogICAgICAgICByZXR1cm4gdHJhbnMucmVzcG9uc2Uuc2VuZF9yZWRpcmVj
dCggdXJsX2ZvciggIi8iICkgKQo9MjAKICAgICBkZWYgZ2V0X2l0ZW0oIHNlbGYsIHRyYW5zLCBp
ZCApOgotICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X2hpc3RvcnkoIHRyYW5zLCBpZCApCisgICAg
ICAgIHJldHVybiBzZWxmLmhpc3RvcnlfbWFuYWdlci5nZXRfb3duZWQoIHRyYW5zLCBzZWxmLmRl
Y29kZV9pZCggaWQgKT0KLCB0cmFucy51c2VyICkKICAgICAgICAgI1RPRE86IG92ZXJyaWRlIG9m
IGJhc2UgdWkgY29udHJvbGxlcj8KPTIwCiAgICAgZGVmIGhpc3RvcnlfZGF0YSggc2VsZiwgdHJh
bnMsIGhpc3RvcnkgKToKQEAgLTE0NzAsNyArMTQ1OSw3IEBACiAgICAgICAgICIiIgogICAgICAg
ICAiIiIKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5oaXN0b3J5
X21hbmFnZXIub3duZWRfYnlfaWQoIHRyYW5zLCBzZWxmLmRlY289CmRlX2lkKCBpZCApLCB0cmFu
cy51c2VyICkKKyAgICAgICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuaGlzdG9yeV9tYW5hZ2VyLmdl
dF9vd25lZCggdHJhbnMsIHNlbGYuZGVjb2RlPQpfaWQoIGlkICksIHRyYW5zLnVzZXIgKQogICAg
ICAgICAgICAgdHJhbnMuc2V0X2hpc3RvcnkoIGhpc3RvcnkgKQogICAgICAgICAgICAgcmV0dXJu
IHNlbGYuaGlzdG9yeV9zZXJpYWxpemVyLnNlcmlhbGl6ZV90b192aWV3KCB0cmFucywgaGlzdG89
CnJ5LCB2aWV3PTNEJ2RldGFpbGVkJyApCiAgICAgICAgIGV4Y2VwdCBleGNlcHRpb25zLk1lc3Nh
Z2VFeGNlcHRpb24sIG1zZ19leGM6CgpkaWZmIC1yIDY5Yzc0YmM5OTYyNWUzNjNiZWNhZDA4Yjhm
OWM1NWMyMzg0NDk3NTAgLXIgOGVlZmMwOWM0MWRjZmMzOTllMzdlMjA9CjhjYzcwYzBmMzM0OTE2
NDIxIGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvcGFnZS5weQotLS0gYS9s
aWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL3BhZ2UucHkKKysrIGIvbGliL2dh
bGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy9wYWdlLnB5CkBAIC03MjksNyArNzI5LDcg
QEAKICAgICAgICAgIiIiCiAgICAgICAgICNUT0RPOiBzaG91bGQgYmUgbW92ZWQgdG8gaGlzdG9y
eSBjb250cm9sbGVyIGFuZC9vciBjYWxsZWQgdmlhIGFqYT0KeCBmcm9tIHRoZSB0ZW1wbGF0ZQog
ICAgICAgICBkZWNvZGVkX2lkID0zRCBzZWxmLmRlY29kZV9pZCggaWQgKQotICAgICAgICBoaXN0
b3J5ID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdlci5hY2Nlc3NpYmxlX2J5X2lkKCB0cmFucywgZGVj
b2RlZF89CmlkLCB0cmFucy51c2VyICkKKyAgICAgICAgaGlzdG9yeSA9M0Qgc2VsZi5oaXN0b3J5
X21hbmFnZXIuZ2V0X2FjY2Vzc2libGUoIHRyYW5zLCBkZWNvZGVkX2lkPQosIHRyYW5zLnVzZXIg
KQogICAgICAgICBpZiBub3QgaGlzdG9yeToKICAgICAgICAgICAgIHJldHVybiBOb25lCj0yMApA
QCAtNzc4LDggKzc3OCw4IEBACj0yMAogICAgICAgICBlbGlmIGl0ZW1fY2xhc3MgPTNEPTNEIG1v
ZGVsLkhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb246CiAgICAgICAgICAgICBkZWNvZGVkX2lkID0z
RCBzZWxmLmRlY29kZV9pZCggaXRlbV9pZCApCi0gICAgICAgICAgICBkYXRhc2V0ID0zRCBzZWxm
LmhkYV9tYW5hZ2VyLmFjY2Vzc2libGVfYnlfaWQoIHRyYW5zLCBkZWNvZGVkXz0KaWQsIHRyYW5z
LnVzZXIgKQotICAgICAgICAgICAgZGF0YXNldCA9M0Qgc2VsZi5oZGFfbWFuYWdlci5lcnJvcl9p
Zl91cGxvYWRpbmcoIGRhdGFzZXQgKQorICAgICAgICAgICAgZGF0YXNldCA9M0Qgc2VsZi5oZGFf
bWFuYWdlci5nZXRfYWNjZXNzaWJsZSggdHJhbnMsIGRlY29kZWRfaWQ9CiwgdHJhbnMudXNlciAp
CisgICAgICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmVycm9yX2lmX3VwbG9h
ZGluZyggdHJhbnMsIGRhdGFzZT0KdCApCj0yMAogICAgICAgICAgICAgZGF0YXNldC5hbm5vdGF0
aW9uID0zRCBzZWxmLmdldF9pdGVtX2Fubm90YXRpb25fc3RyKCB0cmFucy5zYV89CnNlc3Npb24s
IGRhdGFzZXQuaGlzdG9yeS51c2VyLCBkYXRhc2V0ICkKICAgICAgICAgICAgIGlmIGRhdGFzZXQ6
CgpkaWZmIC1yIDY5Yzc0YmM5OTYyNWUzNjNiZWNhZDA4YjhmOWM1NWMyMzg0NDk3NTAgLXIgOGVl
ZmMwOWM0MWRjZmMzOTllMzdlMjA9CjhjYzcwYzBmMzM0OTE2NDIxIGxpYi9nYWxheHkvd2ViYXBw
cy9nYWxheHkvY29udHJvbGxlcnMvdmlzdWFsaXphdGlvbi5weQotLS0gYS9saWIvZ2FsYXh5L3dl
YmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL3Zpc3VhbGl6YXRpb24ucHkKKysrIGIvbGliL2dhbGF4
eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy92aXN1YWxpemF0aW9uLnB5CkBAIC04NjcsNyAr
ODY3LDcgQEAKICAgICAgICAgICAgIGRia2V5ID0zRCBOb25lCiAgICAgICAgICAgICBpZiBuZXdf
ZGF0YXNldF9pZDoKICAgICAgICAgICAgICAgICBkZWNvZGVkX2lkID0zRCBzZWxmLmRlY29kZV9p
ZCggbmV3X2RhdGFzZXRfaWQgKQotICAgICAgICAgICAgICAgIGhkYSA9M0Qgc2VsZi5oZGFfbWFu
YWdlci5vd25lZF9ieV9pZCggdHJhbnMsIGRlY29kZWRfaWQsIHQ9CnJhbnMudXNlciApCisgICAg
ICAgICAgICAgICAgaGRhID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmdldF9vd25lZCggdHJhbnMsIGRl
Y29kZWRfaWQsIHRyYT0KbnMudXNlciApCiAgICAgICAgICAgICAgICAgZGJrZXkgPTNEIGhkYS5k
YmtleQogICAgICAgICAgICAgICAgIGlmIGRia2V5ID0zRD0zRCAnPyc6CiAgICAgICAgICAgICAg
ICAgICAgIGRia2V5ID0zRCBrd2FyZ3MuZ2V0KCAiZGJrZXkiLCBOb25lICkKQEAgLTk3Nyw3ICs5
NzcsNyBAQAogICAgICAgICAgICAgdml6ID0zRCBzZWxmLmdldF92aXN1YWxpemF0aW9uKCB0cmFu
cywgaWQgKQogICAgICAgICAgICAgdml6X2NvbmZpZyA9M0Qgc2VsZi5nZXRfdmlzdWFsaXphdGlv
bl9jb25maWcoIHRyYW5zLCB2aXogKQogICAgICAgICAgICAgZGVjb2RlZF9pZCA9M0Qgc2VsZi5k
ZWNvZGVfaWQoIHZpel9jb25maWdbICdkYXRhc2V0X2lkJyBdICkKLSAgICAgICAgICAgIGRhdGFz
ZXQgPTNEIHNlbGYuaGRhX21hbmFnZXIub3duZWRfYnlfaWQoIHRyYW5zLCBkZWNvZGVkX2lkLCB0
PQpyYW5zLnVzZXIgKQorICAgICAgICAgICAgZGF0YXNldCA9M0Qgc2VsZi5oZGFfbWFuYWdlci5n
ZXRfb3duZWQoIHRyYW5zLCBkZWNvZGVkX2lkLCB0cmE9Cm5zLnVzZXIgKQogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgIyBMb2FkaW5nIG5ldyB2aXN1YWxpemF0aW9uLgogICAgICAgICAgICAg
ZGF0YXNldCA9M0Qgc2VsZi5nZXRfaGRhX29yX2xkZGEoIHRyYW5zLCBoZGFfbGRkYSwgZGF0YXNl
dF9pZCApCkBAIC0xMDEyLDcgKzEwMTIsNyBAQAogICAgICAgICAjIGdldCB0aGUgaGRhIGlmIHdl
IGNhbiwgdGhlbiBpdHMgZGF0YSB1c2luZyB0aGUgcGh5bG92aXogcGFyc2VycwogICAgICAgICBp
ZiBkYXRhc2V0X2lkOgogICAgICAgICAgICAgZGVjb2RlZF9pZCA9M0Qgc2VsZi5kZWNvZGVfaWQo
IGRhdGFzZXRfaWQgKQotICAgICAgICAgICAgaGRhID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmFjY2Vz
c2libGVfYnlfaWQoIHRyYW5zLCBkZWNvZGVkX2lkLCA9CnRyYW5zLnVzZXIgKQorICAgICAgICAg
ICAgaGRhID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmdldF9hY2Nlc3NpYmxlKCB0cmFucywgZGVjb2Rl
ZF9pZCwgdHI9CmFucy51c2VyICkKICAgICAgICAgICAgIGhkYSA9M0Qgc2VsZi5oZGFfbWFuYWdl
ci5lcnJvcl9pZl91cGxvYWRpbmcoIGhkYSApCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBy
ZXR1cm4gdHJhbnMuc2hvd19tZXNzYWdlKCAiUGh5bG92aXogY291bGRuJ3QgZmluZCBhIGRhdGFz
ZXRfaT0KZCIgKQoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwv
Y29tbWl0cy83YTkwZDQwNTMxM2QvCkNoYW5nZXNldDogICA3YTkwZDQwNTMxM2QKVXNlcjogICAg
ICAgIGNhcmxmZWJlcmhhcmQKRGF0ZTogICAgICAgIDIwMTUtMDEtMTIgMTk6MTU6NDIrMDA6MDAK
U3VtbWFyeTogICAgIFJlbW92ZSB0cmFucyBmcm9tIG1ldGhvZCBib2RpZXMgd2hlcmUgcG9zc2li
bGUKQWZmZWN0ZWQgIzogIDkgZmlsZXMKCmRpZmYgLXIgOGVlZmMwOWM0MWRjZmMzOTllMzdlMjA4
Y2M3MGMwZjMzNDkxNjQyMSAtciA3YTkwZDQwNTMxM2RkNGUzNzFlZTEzOT0KMjc5N2JhMDI5YTJh
MDViMTEgbGliL2dhbGF4eS9tYW5hZ2Vycy9iYXNlLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdl
cnMvYmFzZS5weQorKysgYi9saWIvZ2FsYXh5L21hbmFnZXJzL2Jhc2UucHkKQEAgLTY0NCw3ICs2
NDQsNyBAQAogICAgICAgICBTZXJpYWxpemUgYW4gaWQgYXR0cmlidXRlIG9mIGBpdGVtYC4KICAg
ICAgICAgIiIiCiAgICAgICAgIGlkID0zRCBnZXRhdHRyKCBpdGVtLCBrZXkgKQotICAgICAgICBy
ZXR1cm4gdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBpZCApIGlmIGlkIGlzIG5vdCBOb25lIGVs
c2UgTm9uZQorICAgICAgICByZXR1cm4gc2VsZi5hcHAuc2VjdXJpdHkuZW5jb2RlX2lkKCBpZCAp
IGlmIGlkIGlzIG5vdCBOb25lIGVsc2UgTm89Cm5lCj0yMAogICAgICNUT0RPOiBBbm5vdGF0YWJs
ZU1peGluCiAgICAgZGVmIHNlcmlhbGl6ZV9hbm5vdGF0aW9uKCBzZWxmLCB0cmFucywgaXRlbSwg
a2V5ICk6CkBAIC02NTQsNyArNjU0LDggQEAKICNUT0RPOiB3aGljaCBpcyBjb3JyZWN0IGhlcmU/
CiAgICAgICAgICN1c2VyID0zRCBpdGVtLnVzZXIKICAgICAgICAgdXNlciA9M0QgdHJhbnMudXNl
cgotICAgICAgICByZXR1cm4gaXRlbS5nZXRfaXRlbV9hbm5vdGF0aW9uX3N0ciggdHJhbnMuc2Ff
c2Vzc2lvbiwgdXNlciwgaXRlbSApCisgICAgICAgIHNhX3Nlc3Npb24gPTNEIHNlbGYuYXBwLm1v
ZGVsLmNvbnRleHQKKyAgICAgICAgcmV0dXJuIGl0ZW0uZ2V0X2l0ZW1fYW5ub3RhdGlvbl9zdHIo
IHNhX3Nlc3Npb24sIHVzZXIsIGl0ZW0gKQo9MjAKICAgICAjVE9ETzogVGFnZ2FibGVNaXhpbgog
ICAgIGRlZiBzZXJpYWxpemVfdGFncyggc2VsZiwgdHJhbnMsIGl0ZW0sIGtleSApOgpAQCAtNzQ1
LDYgKzc0Niw3IEBACiAgICAgICAgIENvbnZlcnQgYW4gaW5jb21pbmcgc2VyaWFsaXplZCBkaWN0
IGludG8gdmFsdWVzIHRoYXQgY2FuIGJlCiAgICAgICAgIGRpcmVjdGx5IGFzc2lnbmVkIHRvIGFu
IGl0ZW0ncyBhdHRyaWJ1dGVzIGFuZCBhc3NpZ24gdGhlbQogICAgICAgICAiIiIKKyAgICAgICAg
c2Ffc2Vzc2lvbiA9M0Qgc2VsZi5hcHAubW9kZWwuY29udGV4dAogICAgICAgICBuZXdfZGljdCA9
M0Qge30KICAgICAgICAgZm9yIGtleSwgdmFsIGluIGRhdGEuaXRlbXMoKToKICAgICAgICAgICAg
IGlmIGtleSBpbiBzZWxmLmRlc2VyaWFsaXplcnM6CkBAIC03NTMsOCArNzU1LDggQEAKPTIwCiAg
ICAgICAgICNUT0RPOj8/IGFkZCBhbmQgZmx1c2ggaGVyZSBvciBpbiBtYW5hZ2VyPwogICAgICAg
ICBpZiBmbHVzaCBhbmQgbGVuKCBuZXdfZGljdCApOgotICAgICAgICAgICAgdHJhbnMuc2Ffc2Vz
c2lvbi5hZGQoIGl0ZW0gKQotICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCisg
ICAgICAgICAgICBzYV9zZXNzaW9uLmFkZCggaXRlbSApCisgICAgICAgICAgICBzYV9zZXNzaW9u
LmZsdXNoKCkKPTIwCiAgICAgICAgIHJldHVybiBuZXdfZGljdAo9MjAKQEAgLTg5MSwxMCArODkz
LDEwIEBACiAgICAgICAgICNUT0RPOiBpcyB0aGlzIGNvcnJlY3Q/CiAgICAgICAgIGlmIHZhbCBp
cyBOb25lOgogICAgICAgICAgICAgcmV0dXJuICc/JwotICAgICAgICAjIHdvdC4uLndoeSB0dXBs
ZXM/Ci0gICAgICAgIGlmIHZhbCBub3QgaW4gZGljdCggdHJhbnMuZGJfYnVpbGRzICk6Ci0gICAg
ICAgICAgICByYWlzZSBleGNlcHRpb25zLlJlcXVlc3RQYXJhbWV0ZXJJbnZhbGlkRXhjZXB0aW9u
KCAiaW52YWxpZCByZT0KZmVyZW5jZSIsIGtleT0zRGtleSwgdmFsPTNEdmFsICkKLSAgICAgICAg
cmV0dXJuIHZhbAorICAgICAgICBmb3IgZ2Vub21lX2J1aWxkX3Nob3J0bmFtZSwgbG9uZ25hbWUg
aW4gc2VsZi5hcHAuZ2Vub21lX2J1aWxkcy5nZXQ9Cl9nZW5vbWVfYnVpbGRfbmFtZXMoIHRyYW5z
PTNEdHJhbnMgKToKKyAgICAgICAgICAgIGlmIHZhbCA9M0Q9M0QgZ2Vub21lX2J1aWxkX3Nob3J0
bmFtZToKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsCisgICAgICAgIHJhaXNlIGV4Y2VwdGlv
bnMuUmVxdWVzdFBhcmFtZXRlckludmFsaWRFeGNlcHRpb24oICJpbnZhbGlkIHJlZmVyZT0KbmNl
Iiwga2V5PTNEa2V5LCB2YWw9M0R2YWwgKQo9MjAKICAgICAjZGVmIHNsdWcoIHNlbGYsIHRyYW5z
LCBpdGVtLCBrZXksIHZhbCApOgogICAgICMgICAgIiIidmFsaWRhdGUgc2x1ZyIiIgoKZGlmZiAt
ciA4ZWVmYzA5YzQxZGNmYzM5OWUzN2UyMDhjYzcwYzBmMzM0OTE2NDIxIC1yIDdhOTBkNDA1MzEz
ZGQ0ZTM3MWVlMTM5PQoyNzk3YmEwMjlhMmEwNWIxMSBsaWIvZ2FsYXh5L21hbmFnZXJzL2RhdGFz
ZXRzLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvZGF0YXNldHMucHkKKysrIGIvbGliL2dh
bGF4eS9tYW5hZ2Vycy9kYXRhc2V0cy5weQpAQCAtMjEsNiArMjEsOCBAQAogICAgIGRlZmF1bHRf
b3JkZXJfYnkgPTNEICggbW9kZWwuRGF0YXNldC5jcmVhdGVfdGltZSwgKQogICAgIGZvcmVpZ25f
a2V5X25hbWUgPTNEICdkYXRhc2V0Jwo9MjAKKyAgICAjVE9ETzo/PyBnZXQgKyBlcnJvcl9pZl91
cGxvYWRpbmcgaXMgY29tbW9uIHBhdHRlcm4sIHNob3VsZCB1cGxvYWQgY2hlPQpjayBiZSB3b3Jr
ZWQgaW50byBhY2Nlc3Mvb3dlZD8KKwogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CiAg
ICAgICAgIHN1cGVyKCBEYXRhc2V0TWFuYWdlciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQogICAg
ICAgICAjIG5lZWQgZm9yIGFkbWluIHRlc3QKQEAgLTM1LDkgKzM3LDkgQEAKICAgICAgICAga3dh
cmdzLnVwZGF0ZSggZGljdCggc3RhdGU9M0QoIGt3YXJncy5nZXQoICdzdGF0ZScsIG1vZGVsLkRh
dGFzZXQuPQpzdGF0ZXMuTkVXICkgKSApICkKICAgICAgICAgZGF0YXNldCA9M0QgbW9kZWwuRGF0
YXNldCggKiprd2FyZ3MgKQo9MjAKLSAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIGRhdGFz
ZXQgKQorICAgICAgICBzZWxmLmFwcC5tb2RlbC5jb250ZXh0LmFkZCggZGF0YXNldCApCiAgICAg
ICAgIGlmIGZsdXNoOgotICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCisgICAg
ICAgICAgICBzZWxmLmFwcC5tb2RlbC5jb250ZXh0LmZsdXNoKCkKICAgICAgICAgcmV0dXJuIGRh
dGFzZXQKPTIwCiAgICAgI2RlZiBjb3B5KCBzZWxmLCBkYXRhc2V0LCAqKmt3YXJncyApOgpAQCAt
NjEsOSArNjMsOSBAQAo9MjAKICAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBkZWxldGUKICAgICAj
VE9ETzogdGhpcyBtYXkgYmUgbW9yZSBjb252LiBzb21ld2hlcmUgZWxzZQotI1RPRE86IGFsbG93
IGFkbWluIGJ5cGFzcworI1RPRE86IGhvdyB0byBhbGxvdyBhZG1pbiBieXBhc3M/CiAgICAgZGVm
IGVycm9yX3VubGVzc19kYXRhc2V0X3B1cmdlX2FsbG93ZWQoIHNlbGYsIHRyYW5zLCBpdGVtLCBt
c2c9M0ROb25lID0KKToKLSAgICAgICAgaWYgbm90IHRyYW5zLmFwcC5jb25maWcuYWxsb3dfdXNl
cl9kYXRhc2V0X3B1cmdlOgorICAgICAgICBpZiBub3Qgc2VsZi5hcHAuY29uZmlnLmFsbG93X3Vz
ZXJfZGF0YXNldF9wdXJnZToKICAgICAgICAgICAgIG1zZyA9M0QgbXNnIG9yICdUaGlzIGluc3Rh
bmNlIGRvZXMgbm90IGFsbG93IHVzZXIgZGF0YXNldCBwdXJnPQppbmcnCiAgICAgICAgICAgICBy
YWlzZSBleGNlcHRpb25zLkNvbmZpZ0RvZXNOb3RBbGxvd0V4Y2VwdGlvbiggbXNnICkKICAgICAg
ICAgcmV0dXJuIGl0ZW0KQEAgLTc5LDkgKzgxLDkgQEAKPTIwCiAgICAgICAgICMgdGhlIGZvbGxv
d2luZyBhbHNvIG1hcmtzIGRhdGFzZXQgYXMgcHVyZ2VkIGFuZCBkZWxldGVkCiAgICAgICAgIGRh
dGFzZXQuZnVsbF9kZWxldGUoKQotICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmFkZCggZGF0YXNl
dCApCisgICAgICAgIHNlbGYuYXBwLm1vZGVsLmNvbnRleHQuYWRkKCBkYXRhc2V0ICkKICAgICAg
ICAgaWYgZmx1c2g6Ci0gICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKKyAgICAg
ICAgICAgIHNlbGYuYXBwLm1vZGVsLmNvbnRleHQuZmx1c2goKQogICAgICAgICByZXR1cm4gZGF0
YXNldAo9MjAKICAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBhY2Nlc3NpYmlsaXR5CkBAIC0xMDIs
MjAgKzEwNCwyMCBAQAogICAgICAgICBSZXR1cm4gVC9GIGlmIHRoZSB1c2VyIGhhcyByb2xlLWJh
c2VkIGFjY2VzcyB0byB0aGUgZGF0YXNldC4KICAgICAgICAgIiIiCiAgICAgICAgIHJvbGVzID0z
RCB1c2VyLmFsbF9yb2xlcygpIGlmIHVzZXIgZWxzZSBbXQotICAgICAgICByZXR1cm4gdHJhbnMu
YXBwLnNlY3VyaXR5X2FnZW50LmNhbl9hY2Nlc3NfZGF0YXNldCggcm9sZXMsIGRhdGFzZXQ9CiAp
CisgICAgICAgIHJldHVybiBzZWxmLmFwcC5zZWN1cml0eV9hZ2VudC5jYW5fYWNjZXNzX2RhdGFz
ZXQoIHJvbGVzLCBkYXRhc2V0ICkKPTIwCiAjVE9ETzogdGhlc2UgbmVlZCB3b3JrCiAgICAgZGVm
IF9hY2Nlc3NfcGVybWlzc2lvbiggc2VsZiwgdHJhbnMsIGRhdGFzZXQsIHVzZXI9M0ROb25lLCBy
b2xlPTNETm9uZT0KICk6CiAgICAgICAgICIiIgogICAgICAgICBSZXR1cm4gbW9zdCByZWNlbnQg
RGF0YXNldFBlcm1pc3Npb25zIGZvciB0aGUgZGF0YXNldCBhbmQgdXNlci4KICAgICAgICAgIiIi
Ci0gICAgICAgIHNlY3VyaXR5X2FnZW50ID0zRCB0cmFucy5hcHAuc2VjdXJpdHlfYWdlbnQKKyAg
ICAgICAgc2VjdXJpdHlfYWdlbnQgPTNEIHNlbGYuYXBwLnNlY3VyaXR5X2FnZW50CiAgICAgICAg
IGFjY2Vzc19hY3Rpb24gPTNEIHNlY3VyaXR5X2FnZW50LnBlcm1pdHRlZF9hY3Rpb25zLkRBVEFT
RVRfQUNDRVNTLj0KYWN0aW9uCj0yMAogICAgICAgICAjIGdldCBhIGxpc3Qgb2Ygcm9sZSBpZHMg
dG8gY2hlY2sgYWNjZXNzIGZvciAoZGVmYXVsdGluZyB0byBhbGxfcm89CmxlcykKICAgICAgICAg
dXNlcl9yb2xlcyA9M0QgWyByb2xlIF0gaWYgcm9sZSBlbHNlIHVzZXIuYWxsX3JvbGVzKCkKICAg
ICAgICAgdXNlcl9yb2xlX2lkcyA9M0QgWyByb2xlLmlkIGZvciByb2xlIGluIHVzZXJfcm9sZXMg
XQotICAgICAgICBxdWVyeSA9M0QgKCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCBtb2RlbC5EYXRh
c2V0UGVybWlzc2lvbnMgKQorICAgICAgICBxdWVyeSA9M0QgKCBzZWxmLmFwcC5tb2RlbC5jb250
ZXh0LnF1ZXJ5KCBtb2RlbC5EYXRhc2V0UGVybWlzc2lvbnM9CiApCiAgICAgICAgICAgICAgICAg
ICAgIC5maWx0ZXIoIG1vZGVsLkRhdGFzZXRQZXJtaXNzaW9ucy5hY3Rpb24gPTNEPTNEIGFjY2Vz
cz0KX2FjdGlvbiApCiAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoIG1vZGVsLkRhdGFzZXRQ
ZXJtaXNzaW9ucy5kYXRhc2V0ID0zRD0zRCBkYXRhcz0KZXQgKQogICAgICAgICAgICAgICAgICAg
ICAuZmlsdGVyKCBtb2RlbC5EYXRhc2V0UGVybWlzc2lvbnMucm9sZV9pZC5pbl8oIHVzZXJfcm89
CmxlX2lkcyApICkgKQpAQCAtMTI2LDE4ICsxMjgsMTggQEAKICAgICAgICAgIiIiCiAgICAgICAg
IENyZWF0ZSBhIG5ldyBEYXRhc2V0UGVybWlzc2lvbnMgZm9yIHRoZSBnaXZlbiBkYXRhc2V0IGFu
ZCByb2xlLgogICAgICAgICAiIiIKLSAgICAgICAgYWNjZXNzX2FjdGlvbiA9M0QgdHJhbnMuYXBw
LnNlY3VyaXR5X2FnZW50LnBlcm1pdHRlZF9hY3Rpb25zLkRBVEFTPQpFVF9BQ0NFU1MuYWN0aW9u
CisgICAgICAgIGFjY2Vzc19hY3Rpb24gPTNEIHNlbGYuYXBwLnNlY3VyaXR5X2FnZW50LnBlcm1p
dHRlZF9hY3Rpb25zLkRBVEFTRT0KVF9BQ0NFU1MuYWN0aW9uCiAgICAgICAgIHBlcm1pc3Npb24g
PTNEIG1vZGVsLkRhdGFzZXRQZXJtaXNzaW9ucyggYWNjZXNzX2FjdGlvbiwgZGF0YXNldCwgcj0K
b2xlICkKLSAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIHBlcm1pc3Npb24gKQorICAgICAg
ICBzZWxmLmFwcC5tb2RlbC5jb250ZXh0LmFkZCggcGVybWlzc2lvbiApCiAgICAgICAgIGlmIGZs
dXNoOgotICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCisgICAgICAgICAgICBz
ZWxmLmFwcC5tb2RlbC5jb250ZXh0LmZsdXNoKCkKICAgICAgICAgcmV0dXJuIHBlcm1pc3Npb24K
PTIwCiAgICAgI2RlZiBnaXZlX2FjY2Vzc19wZXJtaXNzaW9uKCBzZWxmLCB0cmFucywgZGF0YXNl
dCwgdXNlciwgZmx1c2g9M0RUcnVlID0KKToKICAgICAjICAgICIiIgogICAgICMgICAgIiIiCiAg
ICAgIyAgICAjIGZvciBub3csIHVzZSB0aGUgdXNlcidzIHByaXZhdGUgcm9sZQotICAgICMgICAg
c2VjdXJpdHlfYWdlbnQgPTNEIHRyYW5zLmFwcC5zZWN1cml0eV9hZ2VudAorICAgICMgICAgc2Vj
dXJpdHlfYWdlbnQgPTNEIHNlbGYuYXBwLnNlY3VyaXR5X2FnZW50CiAgICAgIyAgICB1c2VyX3Jv
bGUgPTNEIHNlY3VyaXR5X2FnZW50LmdldF9wcml2YXRlX3VzZXJfcm9sZSggdXNlciApCiAgICAg
IwogICAgICMgICAgZXhpc3RpbmdfcGVybWlzc2lvbiA9M0Qgc2VsZi5fYWNjZXNzX3Blcm1pc3Np
b24oIHRyYW5zLCBkYXRhc2V0LCA9CnJvbGU9M0R1c2VyX3JvbGUgKQpAQCAtMTUzLDkgKzE1NSw5
IEBACiAgICAgIyAgICAjcGVybWlzc2lvbnMgPTNEIHsgYWNjZXNzX2FjdGlvbiA6IFsgdXNlcl9y
b2xlIF0gfQogICAgICMgICAgI3NlY3VyaXR5X2FnZW50LnNldF9kYXRhc2V0X3Blcm1pc3Npb24o
IGRhdGFzZXQsIHBlcm1pc3Npb25zICkKICAgICAjCi0gICAgIyAgICAjdHJhbnMuc2Ffc2Vzc2lv
bi5hZGQoIGRhdGFzZXQgKQorICAgICMgICAgI3NlbGYuYXBwLm1vZGVsLmNvbnRleHQuYWRkKCBk
YXRhc2V0ICkKICAgICAjICAgICNpZiBmbHVzaDoKLSAgICAjICAgICMgICAgdHJhbnMuc2Ffc2Vz
c2lvbi5mbHVzaCgpCisgICAgIyAgICAjICAgIHNlbGYuYXBwLm1vZGVsLmNvbnRleHQuZmx1c2go
KQogICAgICMKICAgICAjICAgIGRibF9jaGsgPTNEIHNlbGYuX2FjY2Vzc19wZXJtaXNzaW9uKCB0
cmFucywgZGF0YXNldCwgcm9sZT0zRHVzZXJfPQpyb2xlICkKICAgICAjICAgIHByaW50ICdhY2Nl
c3NfcGVybTonLCBkYmxfY2hrCkBAIC0yMzMsNyArMjM1LDggQEAKIGNsYXNzIERhdGFzZXRBc3Nv
Y2lhdGlvbk1hbmFnZXIoIGJhc2UuTW9kZWxNYW5hZ2VyLCBiYXNlLkFjY2Vzc2libGVNb2RlbElu
PQp0ZXJmYWNlLCBiYXNlLlB1cmdhYmxlTW9kZWxJbnRlcmZhY2UgKToKICAgICAiIiIKICAgICAi
IiIKLSAgICAjIEEgZGF0YXNldCBhc3NvY2lhdGlvbiBIQVMgYSBkYXRhc2V0IGJ1dCBjb250YWlu
cyBtZXRhZGF0YSBzcGVjaWZpYyB0PQpvIGEgbGlicmFyeSAobGRhKSBvciB1c2VyIChoZGEpCisg
ICAgIyBEQSdzIHdlcmUgbWVhbnQgdG8gYmUgcHJveGllcyAtIGJ1dCB3ZXJlIG5ldmVyIGZ1bGx5
IGltcGxlbWVudGVkIGFzID0KdGhlbQorICAgICMgSW5zdGVhZCwgYSBkYXRhc2V0IGFzc29jaWF0
aW9uIEhBUyBhIGRhdGFzZXQgYnV0IGNvbnRhaW5zIG1ldGFkYXRhIHM9CnBlY2lmaWMgdG8gYSBs
aWJyYXJ5IChsZGEpIG9yIHVzZXIgKGhkYSkKICAgICBtb2RlbF9jbGFzcyA9M0QgbW9kZWwuRGF0
YXNldEluc3RhbmNlCiAgICAgZGVmYXVsdF9vcmRlcl9ieSA9M0QgKCBtb2RlbC5EYXRhc2V0LmNy
ZWF0ZV90aW1lLCApCj0yMAoKZGlmZiAtciA4ZWVmYzA5YzQxZGNmYzM5OWUzN2UyMDhjYzcwYzBm
MzM0OTE2NDIxIC1yIDdhOTBkNDA1MzEzZGQ0ZTM3MWVlMTM5PQoyNzk3YmEwMjlhMmEwNWIxMSBs
aWIvZ2FsYXh5L21hbmFnZXJzL2hkYXMucHkKLS0tIGEvbGliL2dhbGF4eS9tYW5hZ2Vycy9oZGFz
LnB5CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvaGRhcy5weQpAQCAtNjQsMTYgKzY0LDE2IEBA
CiAgICAgICAgIGlmIG5vdCBkYXRhc2V0OgogICAgICAgICAgICAga3dhcmdzWyAnY3JlYXRlX2Rh
dGFzZXQnIF0gPTNEIFRydWUKICAgICAgICAgaGRhID0zRCBzdXBlciggSERBTWFuYWdlciwgc2Vs
ZiApLmNyZWF0ZSggdHJhbnMsIGZsdXNoPTNEZmx1c2gsCi0gICAgICAgICAgICBoaXN0b3J5PTNE
aGlzdG9yeSwgZGF0YXNldD0zRGRhdGFzZXQsIHNhX3Nlc3Npb249M0R0cmFucy5zYV9zZT0Kc3Np
b24sICoqa3dhcmdzICkKKyAgICAgICAgICAgIGhpc3Rvcnk9M0RoaXN0b3J5LCBkYXRhc2V0PTNE
ZGF0YXNldCwgc2Ffc2Vzc2lvbj0zRHNlbGYuYXBwLm1vPQpkZWwuY29udGV4dCwgKiprd2FyZ3Mg
KQo9MjAKICAgICAgICAgaWYgaGlzdG9yeToKICAgICAgICAgICAgIHNldF9oaWQgPTNEIG5vdCAo
ICdoaWQnIGluIGt3YXJncyApCiAgICAgICAgICAgICBoaXN0b3J5LmFkZF9kYXRhc2V0KCBoZGEg
KQogICAgICAgICAjVE9ETzo/PyBzb21lIGludGVybmFsIHNhbml0eSBjaGVjayBoZXJlIChvciBt
YXliZSBpbiBhZGRfZGF0YXNldCk9CiB0byBtYWtlIHN1cmUgaGlkcyBhcmUgbm90IGR1cGVkPwo9
MjAKLSAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIGhkYSApCisgICAgICAgIHNlbGYuYXBw
Lm1vZGVsLmNvbnRleHQuYWRkKCBoZGEgKQogICAgICAgICBpZiBmbHVzaDoKLSAgICAgICAgICAg
IHRyYW5zLnNhX3Nlc3Npb24uZmx1c2goKQorICAgICAgICAgICAgc2VsZi5hcHAubW9kZWwuY29u
dGV4dC5mbHVzaCgpCiAgICAgICAgIHJldHVybiBoZGEKPTIwCiAgICAgZGVmIGNvcHkoIHNlbGYs
IHRyYW5zLCBoZGEsIGhpc3Rvcnk9M0ROb25lLCAqKmt3YXJncyApOgpAQCAtMTA1LDE1ICsxMDUs
MTUgQEAKICAgICAgICAgI1RPRE86IHVwZGF0ZSBmcm9tIGt3YXJncz8KPTIwCiAgICAgICAgICMg
TmVlZCB0byBzZXQgYWZ0ZXIgZmx1c2hlZCwgYXMgTWV0YWRhdGFGaWxlcyByZXF1aXJlIGRhdGFz
ZXQuaWQKLSAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIGNvcHkgKQotICAgICAgICB0cmFu
cy5zYV9zZXNzaW9uLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hcHAubW9kZWwuY29udGV4dC5hZGQo
IGNvcHkgKQorICAgICAgICBzZWxmLmFwcC5tb2RlbC5jb250ZXh0LmZsdXNoKCkKICAgICAgICAg
Y29weS5tZXRhZGF0YSA9M0QgaGRhLm1ldGFkYXRhCj0yMAogICAgICAgICAjIEluIHNvbWUgaW5z
dGFuY2VzIHBlZWsgcmVsaWVzIG9uIGRhdGFzZXRfaWQsIGkuZS4gZ21hai56aXAgZm9yIHY9Cmll
d2luZyBNQUZzCiAgICAgICAgIGlmIG5vdCBoZGEuZGF0YXR5cGUuY29weV9zYWZlX3BlZWs6CiAg
ICAgICAgICAgICBjb3B5LnNldF9wZWVrKCkKPTIwCi0gICAgICAgIHRyYW5zLnNhX3Nlc3Npb24u
Zmx1c2goKQorICAgICAgICBzZWxmLmFwcC5tb2RlbC5jb250ZXh0LmZsdXNoKCkKICAgICAgICAg
cmV0dXJuIGNvcHkKPTIwCiAgICAgZGVmIGNvcHlfbGRkYSggc2VsZiwgdHJhbnMsIGhpc3Rvcnks
IGxkZGEsICoqa3dhcmdzICk6CkBAIC0xNjIsNyArMTYyLDcgQEAKICAgICAgICAgIiIiCiAgICAg
ICAgIFJhaXNlIGVycm9yIGlmIEhEQSBpcyBzdGlsbCB1cGxvYWRpbmcuCiAgICAgICAgICIiIgot
ICAgICAgICBpZiBoZGEuc3RhdGUgPTNEPTNEIHRyYW5zLm1vZGVsLkRhdGFzZXQuc3RhdGVzLlVQ
TE9BRDoKKyAgICAgICAgaWYgaGRhLnN0YXRlID0zRD0zRCBtb2RlbC5EYXRhc2V0LnN0YXRlcy5V
UExPQUQ6CiAgICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLkNvbmZsaWN0KCAiUGxlYXNlIHdh
aXQgdW50aWwgdGhpcyBkYXRhc2V0IGZpbj0KaXNoZXMgdXBsb2FkaW5nIiApCiAgICAgICAgIHJl
dHVybiBoZGEKPTIwCkBAIC0yMDAsMTIgKzIwMCwxMiBAQAogICAgICAgICBSZXR1cm4gZGljdGlv
bmFyeSBjb250YWluaW5nIG9sZC1zdHlsZSBkaXNwbGF5IGFwcCB1cmxzLgogICAgICAgICAiIiIK
ICAgICAgICAgZGlzcGxheV9hcHBzID0zRCBbXQotICAgICAgICBpZiBub3QgdHJhbnMuYXBwLmNv
bmZpZy5lbmFibGVfb2xkX2Rpc3BsYXlfYXBwbGljYXRpb25zOgorICAgICAgICBpZiBub3Qgc2Vs
Zi5hcHAuY29uZmlnLmVuYWJsZV9vbGRfZGlzcGxheV9hcHBsaWNhdGlvbnM6CiAgICAgICAgICAg
ICByZXR1cm4gZGlzcGxheV9hcHBzCj0yMAogICAgICAgICBmb3IgZGlzcGxheV9hcHAgaW4gaGRh
LmRhdGF0eXBlLmdldF9kaXNwbGF5X3R5cGVzKCk6CiAgICAgICAgICAgICB0YXJnZXRfZnJhbWUs
IGRpc3BsYXlfbGlua3MgPTNEIGhkYS5kYXRhdHlwZS5nZXRfZGlzcGxheV9saW5rcz0KKCBoZGEs
Ci0gICAgICAgICAgICAgICAgZGlzcGxheV9hcHAsIHRyYW5zLmFwcCwgdHJhbnMucmVxdWVzdC5i
YXNlICkKKyAgICAgICAgICAgICAgICBkaXNwbGF5X2FwcCwgc2VsZi5hcHAsIHRyYW5zLnJlcXVl
c3QuYmFzZSApCj0yMAogICAgICAgICAgICAgaWYgbGVuKCBkaXNwbGF5X2xpbmtzICkgPiAwOgog
ICAgICAgICAgICAgICAgIGRpc3BsYXlfbGFiZWwgPTNEIGhkYS5kYXRhdHlwZS5nZXRfZGlzcGxh
eV9sYWJlbCggZGlzcGxheV89CmFwcCApCkBAIC0yMjYsOSArMjI2LDkgQEAKICAgICAgICAgIiIi
CiAgICAgICAgICIiIgogICAgICAgICAjIHVzZSBvbGRlciBzeXN0ZW0gaWYgcmVnaXN0cnkgaXMg
b2ZmIGluIHRoZSBjb25maWcKLSAgICAgICAgaWYgbm90IHRyYW5zLmFwcC52aXN1YWxpemF0aW9u
c19yZWdpc3RyeToKKyAgICAgICAgaWYgbm90IHNlbGYuYXBwLnZpc3VhbGl6YXRpb25zX3JlZ2lz
dHJ5OgogICAgICAgICAgICByZXR1cm4gaGRhLmdldF92aXN1YWxpemF0aW9ucygpCi0gICAgICAg
IHJldHVybiB0cmFucy5hcHAudmlzdWFsaXphdGlvbnNfcmVnaXN0cnkuZ2V0X3Zpc3VhbGl6YXRp
b25zKCB0cmFucz0KLCBoZGEgKQorICAgICAgICByZXR1cm4gc2VsZi5hcHAudmlzdWFsaXphdGlv
bnNfcmVnaXN0cnkuZ2V0X3Zpc3VhbGl6YXRpb25zKCB0cmFucyw9CiBoZGEgKQo9MjAKICAgICAj
VE9ETzogdG8gZGF0YSBwcm92aWRlciBvciBUZXh0IGRhdGF0eXBlIGRpcmVjdGx5CiAgICAgZGVm
IHRleHRfZGF0YSggc2VsZiwgZGF0YXNldCwgcHJldmlldz0zRFRydWUgKToKQEAgLTI1OCw5ICsy
NTgsOSBAQAogICAgICAgICAiIiIKICAgICAgICAgaWYgbm90IGhkYToKICAgICAgICAgICAgIHJl
dHVybiBoZGEuY29udmVyc2lvbl9tZXNzYWdlcy5OT19EQVRBCi0gICAgICAgIGlmIGhkYS5zdGF0
ZSA9M0Q9M0QgdHJhbnMuYXBwLm1vZGVsLkpvYi5zdGF0ZXMuRVJST1I6CisgICAgICAgIGlmIGhk
YS5zdGF0ZSA9M0Q9M0QgbW9kZWwuSm9iLnN0YXRlcy5FUlJPUjoKICAgICAgICAgICAgIHJldHVy
biBoZGEuY29udmVyc2lvbl9tZXNzYWdlcy5FUlJPUgotICAgICAgICBpZiBoZGEuc3RhdGUgIT0z
RCB0cmFucy5hcHAubW9kZWwuSm9iLnN0YXRlcy5PSzoKKyAgICAgICAgaWYgaGRhLnN0YXRlICE9
M0QgbW9kZWwuSm9iLnN0YXRlcy5PSzoKICAgICAgICAgICAgIHJldHVybiBoZGEuY29udmVyc2lv
bl9tZXNzYWdlcy5QRU5ESU5HCiAgICAgICAgIHJldHVybiBOb25lCj0yMApAQCAtNDgzLDcgKzQ4
Myw3IEBACiAgICAgICAgICAgICAjTk9URTogbm8gZmlsZXMKICAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2UoIHZhbCwgbW9kZWwuTWV0YWRhdGFGaWxlICk6CiAgICAgICAgICAgICAgICAgIyBvbmx5
IHdoZW4gZXhwbGljaXRseSBzZXQ6IGZldGNoaW5nIGZpbGVwYXRocyBjYW4gYmUgZXhwZT0KbnNp
dmUKLSAgICAgICAgICAgICAgICBpZiBub3QgdHJhbnMuYXBwLmNvbmZpZy5leHBvc2VfZGF0YXNl
dF9wYXRoOgorICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmFwcC5jb25maWcuZXhwb3NlX2Rh
dGFzZXRfcGF0aDoKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAg
ICB2YWwgPTNEIHZhbC5maWxlX25hbWUKICAgICAgICAgICAgICNUT0RPOj8gcG9zc2libHkgc3Bs
aXQgdGhpcyBvZmY/CkBAIC01MTAsNyArNTEwLDcgQEAKICAgICAgICAgIiIiCiAgICAgICAgICIi
IgogI1RPRE86IGFsbG93IGFkbWluCi0gICAgICAgIGlmIHRyYW5zLmFwcC5jb25maWcuZXhwb3Nl
X2RhdGFzZXRfcGF0aDoKKyAgICAgICAgaWYgc2VsZi5hcHAuY29uZmlnLmV4cG9zZV9kYXRhc2V0
X3BhdGg6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGhkYS5maWxl
X25hbWUKICAgICAgICAgICAgIGV4Y2VwdCBvYmplY3RzdG9yZS5PYmplY3ROb3RGb3VuZDoKQEAg
LTUyMSw3ICs1MjEsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgIiIiCiAgICAgICAgIHVybF9m
b3IgPTNEIGdhbGF4eS53ZWIudXJsX2ZvcgotICAgICAgICBlbmNvZGVkX2lkID0zRCB0cmFucy5z
ZWN1cml0eS5lbmNvZGVfaWQoIGhkYS5pZCApCisgICAgICAgIGVuY29kZWRfaWQgPTNEIHNlbGYu
c2VjdXJpdHkuZW5jb2RlX2lkKCBoZGEuaWQgKQogICAgICAgICB1cmxzID0zRCB7CiAgICAgICAg
ICAgICAncHVyZ2UnICAgICAgICAgOiB1cmxfZm9yKCBjb250cm9sbGVyPTNEJ2RhdGFzZXQnLCBh
Y3Rpb249M0QncD0KdXJnZV9hc3luYycsIGRhdGFzZXRfaWQ9M0RlbmNvZGVkX2lkICksCiAgICAg
ICAgICAgICAnZGlzcGxheScgICAgICAgOiB1cmxfZm9yKCBjb250cm9sbGVyPTNEJ2RhdGFzZXQn
LCBhY3Rpb249M0QnZD0KaXNwbGF5JywgZGF0YXNldF9pZD0zRGVuY29kZWRfaWQsIHByZXZpZXc9
M0RUcnVlICksCgpkaWZmIC1yIDhlZWZjMDljNDFkY2ZjMzk5ZTM3ZTIwOGNjNzBjMGYzMzQ5MTY0
MjEgLXIgN2E5MGQ0MDUzMTNkZDRlMzcxZWUxMzk9CjI3OTdiYTAyOWEyYTA1YjExIGxpYi9nYWxh
eHkvbWFuYWdlcnMvaGlzdG9yaWVzLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvaGlzdG9y
aWVzLnB5CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvaGlzdG9yaWVzLnB5CkBAIC00NCw2ICs0
NCw3IEBACiAgICAgZGVmIG1vc3RfcmVjZW50KCBzZWxmLCB0cmFucywgdXNlciwgKiprd2FyZ3Mg
KToKICAgICAgICAgIiIiCiAgICAgICAgICIiIgorI1RPRE86IG5vcm1hbGl6ZSB0aGlzCiAgICAg
ICAgIGlmIG5vdCB1c2VyOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUgaWYgdHJhbnMuaGlzdG9y
eS5kZWxldGVkIGVsc2UgdHJhbnMuaGlzdG9yeQogICAgICAgICBkZXNjX3VwZGF0ZV90aW1lID0z
RCBzZWxmLm1vZGVsX2NsYXNzLnRhYmxlLmMudXBkYXRlX3RpbWUKQEAgLTEyNywxOSArMTI4LDE5
IEBACiAgICAgICAgICAgICBmb3IgY29udGVudCBpbiBoaXN0b3J5LmNvbnRlbnRzX2l0ZXIoIHR5
cGVzPTNEWyAnZGF0YXNldCcsICdkYT0KdGFzZXRfY29sbGVjdGlvbicgXSApOgogICAgICAgICAg
ICAgICAgIGNvbnRlbnRzX2RpY3QgPTNEIHt9Cj0yMAotICAgICAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2UoIGNvbnRlbnQsIHRyYW5zLmFwcC5tb2RlbC5IaXN0b3J5RGF0YXNldEFzc289CmNpYXRp
b24gKToKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKCBjb250ZW50LCBtb2RlbC5IaXN0
b3J5RGF0YXNldEFzc29jaWF0aW9uICk6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzX2Rp
Y3QgPTNEIGhkYV9zZXJpYWxpemVyLnNlcmlhbGl6ZV90b192aWV3KCB0cj0KYW5zLCBjb250ZW50
LCB2aWV3PTNEJ2RldGFpbGVkJyApCj0yMAotICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5j
ZSggY29udGVudCwgdHJhbnMuYXBwLm1vZGVsLkhpc3RvcnlEYXRhc2V0Q289CmxsZWN0aW9uQXNz
b2NpYXRpb24gKToKKyAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoIGNvbnRlbnQsIG1v
ZGVsLkhpc3RvcnlEYXRhc2V0Q29sbGVjdGlvbkFzPQpzb2NpYXRpb24gKToKICAgICAgICAgICAg
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZSA9M0QgdHJhbnMu
YXBwLmRhdGFzZXRfY29sbGVjdGlvbnNfc2VydmljZQorICAgICAgICAgICAgICAgICAgICAgICAg
c2VydmljZSA9M0Qgc2VsZi5hcHAuZGF0YXNldF9jb2xsZWN0aW9uc19zZXJ2aWNlCiAgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhc2V0X2NvbGxlY3Rpb25faW5zdGFuY2UgPTNEIHNlcnZpY2Uu
Z2V0X2RhdGFzZT0KdF9jb2xsZWN0aW9uX2luc3RhbmNlKAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRyYW5zPTNEdHJhbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFu
Y2VfdHlwZT0zRCdoaXN0b3J5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD0zRHRy
YW5zLnNlY3VyaXR5LmVuY29kZV9pZCggY29udGVudC5pZCApLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlkPTNEc2VsZi5hcHAuc2VjdXJpdHkuZW5jb2RlX2lkKCBjb250ZW50LmlkICks
CiAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZW50c19kaWN0ID0zRCBjb2xsZWN0aW9uX2RpY3RpZmllciggZGF0YXNldF9jbz0KbGxlY3Rpb25f
aW5zdGFuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdXJpdHk9M0R0cmFucy5z
ZWN1cml0eSwgcGFyZW50PTNEZGF0YXNldF9jbz0KbGxlY3Rpb25faW5zdGFuY2UuaGlzdG9yeSwg
dmlldz0zRCJlbGVtZW50IiApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdXJpdHk9
M0RzZWxmLmFwcC5zZWN1cml0eSwgcGFyZW50PTNEZGF0YXNldD0KX2NvbGxlY3Rpb25faW5zdGFu
Y2UuaGlzdG9yeSwgdmlldz0zRCJlbGVtZW50IiApCj0yMAogICAgICAgICAgICAgICAgICAgICBl
eGNlcHQgRXhjZXB0aW9uLCBleGM6CiAgICAgICAgICAgICAgICAgICAgICAgICBsb2cuZXhjZXB0
aW9uKCAiRXJyb3IgaW4gaGlzdG9yeSBBUEkgYXQgbGlzdGluZyBkYT0KdGFzZXQgY29sbGVjdGlv
bjogJXMiLCBleGMgKQpAQCAtMTY1LDcgKzE2Niw3IEBACiAgICAgICAgICIiIgogICAgICAgICAj
VE9ETzogdGhlIGRlZmF1bHQgZmxhZ3MgYWJvdmUgbWF5IG5vdCBtYWtlIGEgbG90IG9mIHNlbnNl
IChULFQ/KQogICAgICAgICBzdGF0ZV9jb3VudHMgPTNEIHt9Ci0gICAgICAgIGZvciBzdGF0ZSBp
biB0cmFucy5hcHAubW9kZWwuRGF0YXNldC5zdGF0ZXMudmFsdWVzKCk6CisgICAgICAgIGZvciBz
dGF0ZSBpbiBtb2RlbC5EYXRhc2V0LnN0YXRlcy52YWx1ZXMoKToKICAgICAgICAgICAgIHN0YXRl
X2NvdW50c1sgc3RhdGUgXSA9M0QgMAo9MjAKICAgICAgICAgI1RPRE86Pz8gY29sbGVjdGlvbnMg
YW5kIGNvbGwuIHN0YXRlcz8KQEAgLTE4MiwxMyArMTgzLDEzIEBACiAgICAgICAgICIiIgogICAg
ICAgICAiIiIKICAgICAgICAgc3RhdGVfaWRzID0zRCB7fQotICAgICAgICBmb3Igc3RhdGUgaW4g
dHJhbnMuYXBwLm1vZGVsLkRhdGFzZXQuc3RhdGVzLnZhbHVlcygpOgorICAgICAgICBmb3Igc3Rh
dGUgaW4gbW9kZWwuRGF0YXNldC5zdGF0ZXMudmFsdWVzKCk6CiAgICAgICAgICAgICBzdGF0ZV9p
ZHNbIHN0YXRlIF0gPTNEIFtdCj0yMAogICAgICAgICAjVE9ETzo/PyBjb2xsZWN0aW9ucyBhbmQg
Y29sbC4gc3RhdGVzPwogICAgICAgICBmb3IgaGRhIGluIGhpc3RvcnkuZGF0YXNldHM6CiAgICAg
ICAgICAgICAjVE9ETzogZG8gbm90IGVuY29kZSBpZHMgYXQgdGhpcyBsYXllcgotICAgICAgICAg
ICAgZW5jb2RlZF9pZCA9M0QgdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCBoZGEuaWQgKQorICAg
ICAgICAgICAgZW5jb2RlZF9pZCA9M0Qgc2VsZi5hcHAuc2VjdXJpdHkuZW5jb2RlX2lkKCBoZGEu
aWQgKQogICAgICAgICAgICAgc3RhdGVfaWRzWyBoZGEuc3RhdGUgXS5hcHBlbmQoIGVuY29kZWRf
aWQgKQogICAgICAgICByZXR1cm4gc3RhdGVfaWRzCj0yMApAQCAtMTk2LDcgKzE5Nyw3IEBACiAg
ICAgZGVmIGdldF9oaXN0b3J5X3N0YXRlKCBzZWxmLCB0cmFucywgaGlzdG9yeSApOgogICAgICAg
ICAiIiJSZXR1cm5zIHRoZSBoaXN0b3J5IHN0YXRlIGJhc2VkIG9uIHRoZSBzdGF0ZXMgb2YgdGhl
IEhEQXMgaXQgY289Cm50YWlucy4KICAgICAgICAgIiIiCi0gICAgICAgIHN0YXRlcyA9M0QgdHJh
bnMuYXBwLm1vZGVsLkRhdGFzZXQuc3RhdGVzCisgICAgICAgIHN0YXRlcyA9M0QgbW9kZWwuRGF0
YXNldC5zdGF0ZXMKPTIwCiAgICAgICAgICMgKGRlZmF1bHQgdG8gRVJST1IpCiAgICAgICAgIHN0
YXRlID0zRCBzdGF0ZXMuRVJST1IKQEAgLTMwNywyMSArMzA4LDIxIEBACiAgICAgZGVmIHNlcmlh
bGl6ZV9jb250ZW50cyggc2VsZiwgdHJhbnMsIGhpc3RvcnksIGtleSApOgogICAgICAgICBmb3Ig
Y29udGVudCBpbiBoaXN0b3J5LmNvbnRlbnRzX2l0ZXIoIHR5cGVzPTNEWyAnZGF0YXNldCcsICdk
YXRhc2U9CnRfY29sbGVjdGlvbicgXSApOgogICAgICAgICAgICAgY29udGVudHNfZGljdCA9M0Qg
e30KLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoIGNvbnRlbnQsIHRyYW5zLmFwcC5tb2RlbC5I
aXN0b3J5RGF0YXNldEFzc29jaWF0PQppb24gKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uo
IGNvbnRlbnQsIG1vZGVsLkhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb24gKToKICAgICAgICAgICAg
ICAgICBjb250ZW50c19kaWN0ID0zRCBzZWxmLmhkYV9zZXJpYWxpemVyLnNlcmlhbGl6ZV90b192
aWV3KCB0PQpyYW5zLCBoZGEsIHZpZXc9M0QnZGV0YWlsZWQnICkKLSAgICAgICAgICAgIGVsaWYg
aXNpbnN0YW5jZSggY29udGVudCwgdHJhbnMuYXBwLm1vZGVsLkhpc3RvcnlEYXRhc2V0Q29sbGVj
PQp0aW9uQXNzb2NpYXRpb24gKToKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSggY29udGVu
dCwgbW9kZWwuSGlzdG9yeURhdGFzZXRDb2xsZWN0aW9uQXNzb2NpPQphdGlvbiApOgogICAgICAg
ICAgICAgICAgIGNvbnRlbnRzX2RpY3QgPTNEIHNlbGYuc2VyaWFsaXplX2NvbGxlY3Rpb24oIHRy
YW5zLCBjb2xsZWM9CnRpb24gKQogICAgICAgICAgICAgY29udGVudHNfZGljdGlvbmFyaWVzLmFw
cGVuZCggY29udGVudHNfZGljdCApCj0yMAogICAgIGRlZiBzZXJpYWxpemVfY29sbGVjdGlvbigg
c2VsZiwgdHJhbnMsIGNvbGxlY3Rpb24gKToKLSAgICAgICAgc2VydmljZSA9M0QgdHJhbnMuYXBw
LmRhdGFzZXRfY29sbGVjdGlvbnNfc2VydmljZQorICAgICAgICBzZXJ2aWNlID0zRCBzZWxmLmFw
cC5kYXRhc2V0X2NvbGxlY3Rpb25zX3NlcnZpY2UKICAgICAgICAgZGF0YXNldF9jb2xsZWN0aW9u
X2luc3RhbmNlID0zRCBzZXJ2aWNlLmdldF9kYXRhc2V0X2NvbGxlY3Rpb25faW5zPQp0YW5jZSgK
ICAgICAgICAgICAgIHRyYW5zPTNEdHJhbnMsCiAgICAgICAgICAgICBpbnN0YW5jZV90eXBlPTNE
J2hpc3RvcnknLAotICAgICAgICAgICAgaWQ9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIGNv
bGxlY3Rpb24uaWQgKSwKKyAgICAgICAgICAgIGlkPTNEc2VsZi5zZWN1cml0eS5lbmNvZGVfaWQo
IGNvbGxlY3Rpb24uaWQgKSwKICAgICAgICAgKQogICAgICAgICByZXR1cm4gY29sbGVjdGlvbl9k
aWN0aWZpZXIoIGRhdGFzZXRfY29sbGVjdGlvbl9pbnN0YW5jZSwKLSAgICAgICAgICAgIHNlY3Vy
aXR5PTNEdHJhbnMuc2VjdXJpdHksIHBhcmVudD0zRGRhdGFzZXRfY29sbGVjdGlvbl9pbnN0YW5j
PQplLmhpc3RvcnksIHZpZXc9M0QiZWxlbWVudCIgKQorICAgICAgICAgICAgc2VjdXJpdHk9M0Rz
ZWxmLmFwcC5zZWN1cml0eSwgcGFyZW50PTNEZGF0YXNldF9jb2xsZWN0aW9uX2luc3Q9CmFuY2Uu
aGlzdG9yeSwgdmlldz0zRCJlbGVtZW50IiApCj0yMAo9MjAKICMgPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECgpkaWZmIC1y
IDhlZWZjMDljNDFkY2ZjMzk5ZTM3ZTIwOGNjNzBjMGYzMzQ5MTY0MjEgLXIgN2E5MGQ0MDUzMTNk
ZDRlMzcxZWUxMzk9CjI3OTdiYTAyOWEyYTA1YjExIGxpYi9nYWxheHkvbWFuYWdlcnMvc2hhcmFi
bGUucHkKLS0tIGEvbGliL2dhbGF4eS9tYW5hZ2Vycy9zaGFyYWJsZS5weQorKysgYi9saWIvZ2Fs
YXh5L21hbmFnZXJzL3NoYXJhYmxlLnB5CkBAIC04OSwxMSArODksMTEgQEAKICAgICAgICAgRG9l
cyBub3QgZmx1c2gvY29tbWl0IGNoYW5nZXMsIGhvd2V2ZXIuIEl0ZW0gbXVzdCBoYXZlIG5hbWUs
IHVzZXIsCiAgICAgICAgIGltcG9ydGFibGUsIGFuZCBzbHVnIGF0dHJpYnV0ZXMuCiAgICAgICAg
ICIiIgotICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmFkZCggaXRlbSApCisgICAgICAgIHNlbGYu
YXBwLm1vZGVsLmNvbnRleHQuYWRkKCBpdGVtICkKICAgICAgICAgaXRlbS5pbXBvcnRhYmxlID0z
RCBUcnVlCiAgICAgICAgIHNlbGYuY3JlYXRlX3VuaXF1ZV9zbHVnKCB0cmFucywgaXRlbSwgZmx1
c2g9M0RGYWxzZSApCiAgICAgICAgIGlmIGZsdXNoOgotICAgICAgICAgICAgdHJhbnMuc2Ffc2Vz
c2lvbi5mbHVzaCgpCisgICAgICAgICAgICBzZWxmLmFwcC5tb2RlbC5jb250ZXh0LmZsdXNoKCkK
ICAgICAgICAgcmV0dXJuIGl0ZW0KPTIwCiAgICAgZGVmIG1ha2Vfbm9uX2ltcG9ydGFibGUoIHNl
bGYsIHRyYW5zLCBpdGVtLCBmbHVzaD0zRFRydWUgKToKQEAgLTEwNywxMCArMTA3LDEwIEBACiAg
ICAgICAgICMgICAgICAgIHNlbGYudW5wdWJsaXNoKCB0cmFucywgaXRlbSwgZmx1c2g9M0RGYWxz
ZSApCiAgICAgICAgICMgICAgZWxzZToKICAgICAgICAgIyAgICAgICAgcmFpc2UgZXhjZXB0aW9u
cy5CYWRSZXF1ZXN0KCAnSXRlbSBtdXN0IGJlIG5vbi1wdWJsaXNoZWQgPQp0byBiZSBpbmFjY2Vz
c2libGUnLCBpdGVtPTNEaXRlbSApCi0gICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCBpdGVt
ICkKKyAgICAgICAgc2VsZi5hcHAubW9kZWwuY29udGV4dC5hZGQoIGl0ZW0gKQogICAgICAgICBp
dGVtLmltcG9ydGFibGUgPTNEIEZhbHNlCiAgICAgICAgIGlmIGZsdXNoOgotICAgICAgICAgICAg
dHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCisgICAgICAgICAgICBzZWxmLmFwcC5tb2RlbC5jb250
ZXh0LmZsdXNoKCkKICAgICAgICAgcmV0dXJuIGl0ZW0KPTIwCiAgICAgI2RlZiBfcXVlcnlfaW1w
b3J0YWJsZSggc2VsZiwgdHJhbnMsIGZpbHRlcnM9M0ROb25lLCAqKmt3YXJncyApOgpAQCAtMTQy
LDIwICsxNDIsMjAgQEAKICAgICAgICAgIiIiCiAgICAgICAgIGlmIG5vdCBpdGVtLmltcG9ydGFi
bGU6CiAgICAgICAgICAgICBzZWxmLm1ha2VfaW1wb3J0YWJsZSggdHJhbnMsIGl0ZW0sIGZsdXNo
PTNERmFsc2UgKQotICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmFkZCggaXRlbSApCisgICAgICAg
IHNlbGYuYXBwLm1vZGVsLmNvbnRleHQuYWRkKCBpdGVtICkKICAgICAgICAgaXRlbS5wdWJsaXNo
ZWQgPTNEIFRydWUKICAgICAgICAgaWYgZmx1c2g6Ci0gICAgICAgICAgICB0cmFucy5zYV9zZXNz
aW9uLmZsdXNoKCkKKyAgICAgICAgICAgIHNlbGYuYXBwLm1vZGVsLmNvbnRleHQuZmx1c2goKQog
ICAgICAgICByZXR1cm4gaXRlbQo9MjAKICAgICBkZWYgdW5wdWJsaXNoKCBzZWxmLCB0cmFucywg
aXRlbSwgZmx1c2g9M0RUcnVlICk6CiAgICAgICAgICIiIgogICAgICAgICBTZXQgdGhlIHB1Ymxp
c2hlZCBmbGFnIG9uIGBpdGVtYCB0byBGYWxzZS4KICAgICAgICAgIiIiCi0gICAgICAgIHRyYW5z
LnNhX3Nlc3Npb24uYWRkKCBpdGVtICkKKyAgICAgICAgc2VsZi5hcHAubW9kZWwuY29udGV4dC5h
ZGQoIGl0ZW0gKQogICAgICAgICBpdGVtLnB1Ymxpc2hlZCA9M0QgRmFsc2UKICAgICAgICAgaWYg
Zmx1c2g6Ci0gICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKKyAgICAgICAgICAg
IHNlbGYuYXBwLm1vZGVsLmNvbnRleHQuZmx1c2goKQogICAgICAgICByZXR1cm4gaXRlbQo9MjAK
ICAgICAjZGVmIF9xdWVyeV9wdWJsaXNoZWQoIHNlbGYsIHRyYW5zLCBmaWx0ZXJzPTNETm9uZSwg
Kiprd2FyZ3MgKToKQEAgLTIwMiw3ICsyMDIsNyBAQAogICAgICAgICBDcmVhdGUgYSBzaGFyZSBm
b3IgdGhlIGdpdmVuIHVzZXIuCiAgICAgICAgICIiIgogICAgICAgICB1c2VyX3NoYXJlX2Fzc29j
ID0zRCBzZWxmLnVzZXJfc2hhcmVfbW9kZWwoKQotICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmFk
ZCggdXNlcl9zaGFyZV9hc3NvYyApCisgICAgICAgIHNlbGYuYXBwLm1vZGVsLmNvbnRleHQuYWRk
KCB1c2VyX3NoYXJlX2Fzc29jICkKICAgICAgICAgc2VsZi5hc3NvY2lhdGUoIHRyYW5zLCB1c2Vy
X3NoYXJlX2Fzc29jLCBpdGVtICkKICAgICAgICAgdXNlcl9zaGFyZV9hc3NvYy51c2VyID0zRCB1
c2VyCj0yMApAQCAtMjEwLDcgKzIxMCw3IEBACiAgICAgICAgIHNlbGYuY3JlYXRlX3VuaXF1ZV9z
bHVnKCB0cmFucywgaXRlbSApCj0yMAogICAgICAgICBpZiBmbHVzaDoKLSAgICAgICAgICAgIHRy
YW5zLnNhX3Nlc3Npb24uZmx1c2goKQorICAgICAgICAgICAgc2VsZi5hcHAubW9kZWwuY29udGV4
dC5mbHVzaCgpCiAgICAgICAgIHJldHVybiB1c2VyX3NoYXJlX2Fzc29jCj0yMAogICAgIGRlZiB1
bnNoYXJlX3dpdGgoIHNlbGYsIHRyYW5zLCBpdGVtLCB1c2VyLCBmbHVzaD0zRFRydWUgKToKQEAg
LTIyMSw5ICsyMjEsOSBAQAogICAgICAgICAgICAgcmV0dXJuIG1hcCggbGFtYmRhIHVzZXI6IHNl
bGYudW5zaGFyZV93aXRoKCB0cmFucywgaXRlbSwgdXNlciw9CiBmbHVzaD0zREZhbHNlICksIHVz
ZXIgKQogICAgICAgICAjIExvb2sgZm9yIGFuZCBkZWxldGUgc2hhcmluZyByZWxhdGlvbiBmb3Ig
dXNlci4KICAgICAgICAgdXNlcl9zaGFyZV9hc3NvYyA9M0Qgc2VsZi5nZXRfc2hhcmVfYXNzb2Nz
KCB0cmFucywgaXRlbSwgdXNlcj0zRHVzPQplciApWzBdCi0gICAgICAgIHRyYW5zLnNhX3Nlc3Np
b24uZGVsZXRlKCB1c2VyX3NoYXJlX2Fzc29jICkKKyAgICAgICAgc2VsZi5hcHAubW9kZWwuY29u
dGV4dC5kZWxldGUoIHVzZXJfc2hhcmVfYXNzb2MgKQogICAgICAgICBpZiBmbHVzaDoKLSAgICAg
ICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uZmx1c2goKQorICAgICAgICAgICAgc2VsZi5hcHAubW9k
ZWwuY29udGV4dC5mbHVzaCgpCiAgICAgICAgIHJldHVybiB1c2VyX3NoYXJlX2Fzc29jCj0yMAog
ICAgICNkZWYgX3F1ZXJ5X3NoYXJlZF93aXRoKCBzZWxmLCB0cmFucywgdXNlciwgZmlsdGVycz0z
RE5vbmUsICoqa3dhcmdzICk6CkBAIC0yNTYsMTQgKzI1NiwxNCBAQAogICAgICAgICAgICAgcmFp
c2UgZXhjZXB0aW9ucy5SZXF1ZXN0UGFyYW1ldGVySW52YWxpZEV4Y2VwdGlvbiggIkludmFsaWQg
c2w9CnVnIiwgc2x1Zz0zRG5ld19zbHVnICkKPTIwCiAgICAgICAgICMgZXJyb3IgaWYgc2x1ZyBp
cyBhbHJlYWR5IGluIHVzZQotICAgICAgICBleGlzdGluZ19tYXRjaCA9M0QgKCB0cmFucy5zYV9z
ZXNzaW9uLnF1ZXJ5KCBzZWxmLm1vZGVsX2NsYXNzICkKKyAgICAgICAgZXhpc3RpbmdfbWF0Y2gg
PTNEICggc2VsZi5hcHAubW9kZWwuY29udGV4dC5xdWVyeSggc2VsZi5tb2RlbF9jbGFzPQpzICkK
ICAgICAgICAgICAgIC5maWx0ZXJfYnkoIHVzZXI9M0RpdGVtLnVzZXIsIHNsdWc9M0RuZXdfc2x1
ZywgaW1wb3J0YWJsZT0zRFRyPQp1ZSApICkKICAgICAgICAgaWYoIGV4aXN0aW5nX21hdGNoLmNv
dW50KCkgIT0zRCAwICk6CiAgICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLkJhZFJlcXVlc3Qo
ICJTbHVnIGFscmVhZHkgZXhpc3RzIiwgc2x1Zz0zRG5ldz0KX3NsdWcgKQo9MjAKICAgICAgICAg
aXRlbS5zbHVnID0zRCBuZXdfc2x1ZwogICAgICAgICBpZiBmbHVzaDoKLSAgICAgICAgICAgIHRy
YW5zLnNhX3Nlc3Npb24uZmx1c2goKQorICAgICAgICAgICAgc2VsZi5hcHAubW9kZWwuY29udGV4
dC5mbHVzaCgpCiAgICAgICAgIHJldHVybiBpdGVtCj0yMAogICAgIGRlZiBnZXRfdW5pcXVlX3Ns
dWcoIHNlbGYsIHRyYW5zLCBpdGVtICk6CkBAIC0yOTUsNyArMjk1LDcgQEAKICAgICAgICAgIyBh
ZGQgaW50ZWdlciB0byBlbmQuCiAgICAgICAgIG5ld19zbHVnID0zRCBzbHVnX2Jhc2UKICAgICAg
ICAgY291bnQgPTNEIDEKLSAgICAgICAgd2hpbGUgKCB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCBp
dGVtLl9fY2xhc3NfXyApCisgICAgICAgIHdoaWxlICggc2VsZi5hcHAubW9kZWwuY29udGV4dC5x
dWVyeSggaXRlbS5fX2NsYXNzX18gKQogICAgICAgICAgICAgICAgICAgICAuZmlsdGVyX2J5KCB1
c2VyPTNEaXRlbS51c2VyLCBzbHVnPTNEbmV3X3NsdWcsIGltcG9ydGE9CmJsZT0zRFRydWUgKQog
ICAgICAgICAgICAgICAgICAgICAuY291bnQoKSAhPTNEIDAgKToKICAgICAgICAgICAgICMgU2x1
ZyB0YWtlbjsgY2hvb3NlIGEgbmV3IHNsdWcgYmFzZWQgb24gY291bnQuIFRoaXMgYXBwcm9hY2gg
PQpjYW4KQEAgLTMxMCw5ICszMTAsOSBAQAogICAgICAgICBTZXQgYSBuZXcsIHVuaXF1ZSBzbHVn
IG9uIHRoZSBpdGVtLgogICAgICAgICAiIiIKICAgICAgICAgaXRlbS5zbHVnID0zRCBzZWxmLmdl
dF91bmlxdWVfc2x1ZyggdHJhbnMsIGl0ZW0gKQotICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmFk
ZCggaXRlbSApCisgICAgICAgIHNlbGYuYXBwLm1vZGVsLmNvbnRleHQuYWRkKCBpdGVtICkKICAg
ICAgICAgaWYgZmx1c2g6Ci0gICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKKyAg
ICAgICAgICAgIHNlbGYuYXBwLm1vZGVsLmNvbnRleHQuZmx1c2goKQogICAgICAgICByZXR1cm4g
aXRlbQo9MjAKICAgICAjZGVmIGJ5X3NsdWcoIHNlbGYsIHRyYW5zLCB1c2VyLCAqKmt3YXJncyAp
OgoKZGlmZiAtciA4ZWVmYzA5YzQxZGNmYzM5OWUzN2UyMDhjYzcwYzBmMzM0OTE2NDIxIC1yIDdh
OTBkNDA1MzEzZGQ0ZTM3MWVlMTM5PQoyNzk3YmEwMjlhMmEwNWIxMSBsaWIvZ2FsYXh5L21hbmFn
ZXJzL3VzZXJzLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvdXNlcnMucHkKKysrIGIvbGli
L2dhbGF4eS9tYW5hZ2Vycy91c2Vycy5weQpAQCAtNDMsMjYgKzQzLDI3IEBACiAgICAgICAgIHVz
ZXIgPTNEIG1vZGVsLlVzZXIoIGVtYWlsPTNEZW1haWwsIHBhc3N3b3JkPTNEcGFzc3dvcmQgKQog
ICAgICAgICB1c2VyLnVzZXJuYW1lID0zRCB1c2VybmFtZQo9MjAKLSAgICAgICAgaWYgdHJhbnMu
YXBwLmNvbmZpZy51c2VyX2FjdGl2YXRpb25fb246CisgICAgICAgIGlmIHNlbGYuYXBwLmNvbmZp
Zy51c2VyX2FjdGl2YXRpb25fb246CiAgICAgICAgICAgICB1c2VyLmFjdGl2ZSA9M0QgRmFsc2UK
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgQWN0aXZhdGlvbiBpcyBvZmYsIGV2ZXJ5IG5l
dyB1c2VyIGlzIGFjdGl2ZSBieSBkZWZhdWx0LgogICAgICAgICAgICAgdXNlci5hY3RpdmUgPTNE
IFRydWUKPTIwCi0gICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCB1c2VyICkKKyAgICAgICAg
c2VsZi5hcHAubW9kZWwuY29udGV4dC5hZGQoIHVzZXIgKQogICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKKyAgICAgICAgICAgIHNlbGYuYXBwLm1vZGVs
LmNvbnRleHQuZmx1c2goKQogICAgICAgICAgICAgI1RPRE86Pz8gZmx1c2ggbmVlZGVkIGZvciBw
ZXJtaXNzaW9ucyBiZWxvdz8gSWYgbm90LCBtYWtlIG9wdGk9Cm9uYWwKICAgICAgICAgZXhjZXB0
IHNxbGFsY2hlbXkuZXhjZXB0aW9ucy5JbnRlZ3JpdHlFcnJvciwgZGJfZXJyOgogICAgICAgICAg
ICAgcmFpc2UgZXhjZXB0aW9ucy5Db25mbGljdCggZGJfZXJyLm1lc3NhZ2UgKQo9MjAKICAgICAg
ICAgIyBjYW4gdGhyb3cgYW4gc3FsYWx4LkludGVncml0eUVycm9yIGlmIHVzZXJuYW1lIG5vdCB1
bmlxdWUKPTIwCi0gICAgICAgIHRyYW5zLmFwcC5zZWN1cml0eV9hZ2VudC5jcmVhdGVfcHJpdmF0
ZV91c2VyX3JvbGUoIHVzZXIgKQorICAgICAgICBzZWxmLmFwcC5zZWN1cml0eV9hZ2VudC5jcmVh
dGVfcHJpdmF0ZV91c2VyX3JvbGUoIHVzZXIgKQorI1RPRE86IGFueSBvdGhlciByb3V0ZSB0byB3
ZWJhcHA/CiAgICAgICAgIGlmIHRyYW5zLndlYmFwcC5uYW1lID0zRD0zRCAnZ2FsYXh5JzoKICAg
ICAgICAgICAgICMgV2Ugc2V0IGRlZmF1bHQgdXNlciBwZXJtaXNzaW9ucywgYmVmb3JlIHdlIGxv
ZyBpbiBhbmQgc2V0IHRoPQplIGRlZmF1bHQgaGlzdG9yeSBwZXJtaXNzaW9ucwotICAgICAgICAg
ICAgcGVybWlzc2lvbnMgPTNEIHRyYW5zLmFwcC5jb25maWcubmV3X3VzZXJfZGF0YXNldF9hY2Nl
c3Nfcm9sZV89CmRlZmF1bHRfcHJpdmF0ZQotICAgICAgICAgICAgdHJhbnMuYXBwLnNlY3VyaXR5
X2FnZW50LnVzZXJfc2V0X2RlZmF1bHRfcGVybWlzc2lvbnMoIHVzZXIsIGQ9CmVmYXVsdF9hY2Nl
c3NfcHJpdmF0ZT0zRHBlcm1pc3Npb25zICkKKyAgICAgICAgICAgIHBlcm1pc3Npb25zID0zRCBz
ZWxmLmFwcC5jb25maWcubmV3X3VzZXJfZGF0YXNldF9hY2Nlc3Nfcm9sZV9kPQplZmF1bHRfcHJp
dmF0ZQorICAgICAgICAgICAgc2VsZi5hcHAuc2VjdXJpdHlfYWdlbnQudXNlcl9zZXRfZGVmYXVs
dF9wZXJtaXNzaW9ucyggdXNlciwgZGU9CmZhdWx0X2FjY2Vzc19wcml2YXRlPTNEcGVybWlzc2lv
bnMgKQogICAgICAgICByZXR1cm4gdXNlcgo9MjAKICAgICAjVE9ETzogaW5jb3Jwb3JhdGUgc2Vj
dXJpdHkvdmFsaWRhdGVfdXNlcl9pbnB1dC5weQpAQCAtMTA3LDcgKzEwOCw3IEBACiAgICAgICAg
ICIiIgogICAgICAgICBSZXR1cm4gYSBsaXN0IG9mIGFkbWluIGVtYWlsIGFkZHJlc3NlcyBmcm9t
IHRoZSBjb25maWcgZmlsZS4KICAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBbIHguc3RyaXAo
KSBmb3IgeCBpbiB0cmFucy5hcHAuY29uZmlnLmdldCggImFkbWluX3VzZXJzIiwgIj0KIiApLnNw
bGl0KCAiLCIgKSBdCisgICAgICAgIHJldHVybiBbIHguc3RyaXAoKSBmb3IgeCBpbiBzZWxmLmFw
cC5jb25maWcuZ2V0KCAiYWRtaW5fdXNlcnMiLCAiIj0KICkuc3BsaXQoICIsIiApIF0KPTIwCiAg
ICAgZGVmIGFkbWlucyggc2VsZiwgdHJhbnMsIGZpbHRlcnM9M0ROb25lLCAqKmt3YXJncyApOgog
ICAgICAgICAiIiIKQEAgLTE3OSwxNCArMTgwLDE0IEBACiAgICAgICAgIENyZWF0ZSBhbmQgcmV0
dXJuIGFuIEFQSSBrZXkgZm9yIGB1c2VyYC4KICAgICAgICAgIiIiCiAgICAgICAgICNUT0RPOiBz
ZWVtcyBsaWtlIHRoaXMgc2hvdWxkIHJldHVybiB0aGUgbW9kZWwKLSAgICAgICAgcmV0dXJuIGFw
aV9rZXlzLkFwaUtleU1hbmFnZXIoIHRyYW5zLmFwcCApLmNyZWF0ZV9hcGlfa2V5KCB1c2VyICkK
KyAgICAgICAgcmV0dXJuIGFwaV9rZXlzLkFwaUtleU1hbmFnZXIoIHNlbGYuYXBwICkuY3JlYXRl
X2FwaV9rZXkoIHVzZXIgKQo9MjAKICAgICAjVE9ETzogcG9zc2libHkgbW92ZSB0byBBcGlLZXlN
YW5hZ2VyCiAgICAgZGVmIHZhbGlkX2FwaV9rZXkoIHNlbGYsIHRyYW5zLCB1c2VyICk6CiAgICAg
ICAgICIiIgogICAgICAgICBSZXR1cm4gdGhpcyBtb3N0IHJlY2VudCBBUElLZXkgZm9yIHRoaXMg
dXNlciBvciBOb25lIGlmIG5vbmUgaGF2ZSA9CmJlZW4gY3JlYXRlZC4KICAgICAgICAgIiIiCi0g
ICAgICAgIHF1ZXJ5ID0zRCAoIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIG1vZGVsLkFQSUtleXMg
KQorICAgICAgICBxdWVyeSA9M0QgKCBzZWxmLmFwcC5tb2RlbC5jb250ZXh0LnF1ZXJ5KCBtb2Rl
bC5BUElLZXlzICkKICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcl9ieSggdXNlcj0zRHVzZXIg
KQogICAgICAgICAgICAgICAgICAgICAub3JkZXJfYnkoIG1vZGVsLkFQSUtleXMuY3JlYXRlX3Rp
bWUgKSApCiAgICAgICAgIHJldHVybiBxdWVyeS5maXJzdCgpCkBAIC0yMDgsNyArMjA5LDcgQEAK
ICAgICAgICAgUmV0dXJuIHRoZSBzZWN1cml0eSBhZ2VudCdzIHByaXZhdGUgcm9sZSBmb3IgYHVz
ZXJgLgogICAgICAgICAiIiIKICAgICAgICAgI1RPRE86IG5vdCBzdXJlIHdlIG5lZWQgdG8gZ28g
dGhyb3VnaCBzZWMgYWdlbnQuLi4gaXQncyBqdXN0IHRoZSBmPQppcnN0IHJvbGUgb2YgdHlwZSBw
cml2YXRlCi0gICAgICAgIHJldHVybiB0cmFucy5hcHAuc2VjdXJpdHlfYWdlbnQuZ2V0X3ByaXZh
dGVfdXNlcl9yb2xlKCB1c2VyICkKKyAgICAgICAgcmV0dXJuIHNlbGYuYXBwLnNlY3VyaXR5X2Fn
ZW50LmdldF9wcml2YXRlX3VzZXJfcm9sZSggdXNlciApCj0yMAo9MjAKICMgPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECgpk
aWZmIC1yIDhlZWZjMDljNDFkY2ZjMzk5ZTM3ZTIwOGNjNzBjMGYzMzQ5MTY0MjEgLXIgN2E5MGQ0
MDUzMTNkZDRlMzcxZWUxMzk9CjI3OTdiYTAyOWEyYTA1YjExIHRlc3QvdW5pdC9tYW5hZ2Vycy90
ZXN0X0hEQU1hbmFnZXIucHkKLS0tIGEvdGVzdC91bml0L21hbmFnZXJzL3Rlc3RfSERBTWFuYWdl
ci5weQorKysgYi90ZXN0L3VuaXQvbWFuYWdlcnMvdGVzdF9IREFNYW5hZ2VyLnB5CkBAIC05OSw3
ICs5OSw3IEBACiAgICAgICAgIGhkYTEgPTNEIHNlbGYuaGRhX21nci5jcmVhdGUoIHNlbGYudHJh
bnMsIGhpc3Rvcnk9M0RoaXN0b3J5MSwgZGF0YT0Kc2V0PTNEZGF0YXNldDEgKQo9MjAKICAgICAg
ICAgc2VsZi5sb2coICJzaG91bGQgYmUgYWJsZSB0byBjb3B5IGFuIEhEQSIgKQotICAgICAgICBo
ZGEyID0zRCBzZWxmLmhkYV9tZ3IuY29weV9oZGEoIHNlbGYudHJhbnMsIGhkYTEsIGhpc3Rvcnk9
M0RoaXN0b3I9CnkxICkKKyAgICAgICAgaGRhMiA9M0Qgc2VsZi5oZGFfbWdyLmNvcHkoIHNlbGYu
dHJhbnMsIGhkYTEsIGhpc3Rvcnk9M0RoaXN0b3J5MSApCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJ
bnN0YW5jZSggaGRhMiwgbW9kZWwuSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbiApCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoIGhkYTIsIHNlbGYudHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggbW9k
ZWwuSGlzdG9yeT0KRGF0YXNldEFzc29jaWF0aW9uICkuZ2V0KCBoZGEyLmlkICkgKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCBoZGEyLm5hbWUsIGhkYTEubmFtZSApCgpkaWZmIC1yIDhlZWZj
MDljNDFkY2ZjMzk5ZTM3ZTIwOGNjNzBjMGYzMzQ5MTY0MjEgLXIgN2E5MGQ0MDUzMTNkZDRlMzcx
ZWUxMzk9CjI3OTdiYTAyOWEyYTA1YjExIHRlc3QvdW5pdC9tYW5hZ2Vycy90ZXN0X0hpc3RvcnlN
YW5hZ2VyLnB5Ci0tLSBhL3Rlc3QvdW5pdC9tYW5hZ2Vycy90ZXN0X0hpc3RvcnlNYW5hZ2VyLnB5
CisrKyBiL3Rlc3QvdW5pdC9tYW5hZ2Vycy90ZXN0X0hpc3RvcnlNYW5hZ2VyLnB5CkBAIC0xMDcs
MTYgKzEwNywxNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyggZXhjZXB0aW9ucy5JdGVt
T3duZXJzaGlwRXhjZXB0aW9uLAogICAgICAgICAgICAgc2VsZi5oaXN0b3J5X21nci5lcnJvcl91
bmxlc3Nfb3duZXIsIHNlbGYudHJhbnMsIGl0ZW0xLCBub25fb3c9Cm5lciApCiAgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKCBleGNlcHRpb25zLkl0ZW1Pd25lcnNoaXBFeGNlcHRpb24sCi0gICAg
ICAgICAgICBzZWxmLmhpc3RvcnlfbWdyLm93bmVkX2J5X2lkLCBzZWxmLnRyYW5zLCBpdGVtMS5p
ZCwgbm9uX293bmVyICkKKyAgICAgICAgICAgIHNlbGYuaGlzdG9yeV9tZ3IuZ2V0X293bmVkLCBz
ZWxmLnRyYW5zLCBpdGVtMS5pZCwgbm9uX293bmVyICkKPTIwCiAgICAgICAgIHNlbGYubG9nKCAi
c2hvdWxkIG5vdCByYWlzZSBhbiBlcnJvciB3aGVuIGNoZWNraW5nIG93bmVyc2hpcCB3aXRoID0K
b3duZXIiICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCggc2VsZi5oaXN0b3J5X21nci5lcnJv
cl91bmxlc3Nfb3duZXIoIHNlbGYudHJhbnMsPQogaXRlbTEsIG93bmVyICksIGl0ZW0xICkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCggc2VsZi5oaXN0b3J5X21nci5vd25lZF9ieV9pZCggc2Vs
Zi50cmFucywgaXRlbTEuPQppZCwgb3duZXIgKSwgaXRlbTEgKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCBzZWxmLmhpc3RvcnlfbWdyLmdldF9vd25lZCggc2VsZi50cmFucywgaXRlbTEuaWQ9
Ciwgb3duZXIgKSwgaXRlbTEgKQo9MjAKICAgICAgICAgc2VsZi5sb2coICJzaG91bGQgbm90IHJh
aXNlIGFuIGVycm9yIHdoZW4gY2hlY2tpbmcgb3duZXJzaGlwIHdpdGggPQphZG1pbiIgKQogICAg
ICAgICBzZWxmLmFzc2VydFRydWUoIHNlbGYuaGlzdG9yeV9tZ3IuaXNfb3duZXIoIHNlbGYudHJh
bnMsIGl0ZW0xLCBzZWw9CmYuYWRtaW5fdXNlciApICkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCggc2VsZi5oaXN0b3J5X21nci5lcnJvcl91bmxlc3Nfb3duZXIoIHNlbGYudHJhbnMsPQogaXRl
bTEsIHNlbGYuYWRtaW5fdXNlciApLCBpdGVtMSApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
IHNlbGYuaGlzdG9yeV9tZ3Iub3duZWRfYnlfaWQoIHNlbGYudHJhbnMsIGl0ZW0xLj0KaWQsIHNl
bGYuYWRtaW5fdXNlciApLCBpdGVtMSApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIHNlbGYu
aGlzdG9yeV9tZ3IuZ2V0X293bmVkKCBzZWxmLnRyYW5zLCBpdGVtMS5pZD0KLCBzZWxmLmFkbWlu
X3VzZXIgKSwgaXRlbTEgKQo9MjAKICAgICBkZWYgdGVzdF9hY2Nlc3NpYmxlKCBzZWxmICk6CiAg
ICAgICAgIG93bmVyID0zRCBzZWxmLnVzZXJfbWdyLmNyZWF0ZSggc2VsZi50cmFucywgKip1c2Vy
Ml9kYXRhICkKQEAgLTEzMywxNiArMTMzLDE2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KCBleGNlcHRpb25zLkl0ZW1BY2Nlc3NpYmlsaXR5RXhjZXB0aW9uLAogICAgICAgICAgICAgc2Vs
Zi5oaXN0b3J5X21nci5lcnJvcl91bmxlc3NfYWNjZXNzaWJsZSwgc2VsZi50cmFucywgaXRlbTEs
IG49Cm9uX293bmVyICkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoIGV4Y2VwdGlvbnMuSXRl
bUFjY2Vzc2liaWxpdHlFeGNlcHRpb24sCi0gICAgICAgICAgICBzZWxmLmhpc3RvcnlfbWdyLmFj
Y2Vzc2libGVfYnlfaWQsIHNlbGYudHJhbnMsIGl0ZW0xLmlkLCBub25fbz0Kd25lciApCisgICAg
ICAgICAgICBzZWxmLmhpc3RvcnlfbWdyLmdldF9hY2Nlc3NpYmxlLCBzZWxmLnRyYW5zLCBpdGVt
MS5pZCwgbm9uX293bj0KZXIgKQo9MjAKICAgICAgICAgc2VsZi5sb2coICJzaG91bGQgbm90IHJh
aXNlIGFuIGVycm9yIHdoZW4gY2hlY2tpbmcgb3duZXJzaGlwIHdpdGggPQpvd25lciIgKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCBzZWxmLmhpc3RvcnlfbWdyLmVycm9yX3VubGVzc19hY2Nl
c3NpYmxlKCBzZWxmLnQ9CnJhbnMsIGl0ZW0xLCBvd25lciApLCBpdGVtMSApCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoIHNlbGYuaGlzdG9yeV9tZ3IuYWNjZXNzaWJsZV9ieV9pZCggc2VsZi50
cmFucywgaT0KdGVtMS5pZCwgb3duZXIgKSwgaXRlbTEgKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCBzZWxmLmhpc3RvcnlfbWdyLmdldF9hY2Nlc3NpYmxlKCBzZWxmLnRyYW5zLCBpdGU9Cm0x
LmlkLCBvd25lciApLCBpdGVtMSApCj0yMAogICAgICAgICBzZWxmLmxvZyggInNob3VsZCBub3Qg
cmFpc2UgYW4gZXJyb3Igd2hlbiBjaGVja2luZyBvd25lcnNoaXAgd2l0aCA9CmFkbWluIiApCiAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSggc2VsZi5oaXN0b3J5X21nci5pc19hY2Nlc3NpYmxlKCBz
ZWxmLnRyYW5zLCBpdGVtMT0KLCBzZWxmLmFkbWluX3VzZXIgKSApCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoIHNlbGYuaGlzdG9yeV9tZ3IuZXJyb3JfdW5sZXNzX2FjY2Vzc2libGUoIHNlbGYu
dD0KcmFucywgaXRlbTEsIHNlbGYuYWRtaW5fdXNlciApLCBpdGVtMSApCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoIHNlbGYuaGlzdG9yeV9tZ3IuYWNjZXNzaWJsZV9ieV9pZCggc2VsZi50cmFu
cywgaT0KdGVtMS5pZCwgc2VsZi5hZG1pbl91c2VyICksIGl0ZW0xICkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCggc2VsZi5oaXN0b3J5X21nci5nZXRfYWNjZXNzaWJsZSggc2VsZi50cmFucywg
aXRlPQptMS5pZCwgc2VsZi5hZG1pbl91c2VyICksIGl0ZW0xICkKPTIwCiAgICAgZGVmIHRlc3Rf
aW1wb3J0YWJsZSggc2VsZiApOgogICAgICAgICBvd25lciA9M0Qgc2VsZi51c2VyX21nci5jcmVh
dGUoIHNlbGYudHJhbnMsICoqdXNlcjJfZGF0YSApCgpkaWZmIC1yIDhlZWZjMDljNDFkY2ZjMzk5
ZTM3ZTIwOGNjNzBjMGYzMzQ5MTY0MjEgLXIgN2E5MGQ0MDUzMTNkZDRlMzcxZWUxMzk9CjI3OTdi
YTAyOWEyYTA1YjExIHRlc3QvdW5pdC9tYW5hZ2Vycy90ZXN0X1VzZXJNYW5hZ2VyLnB5Ci0tLSBh
L3Rlc3QvdW5pdC9tYW5hZ2Vycy90ZXN0X1VzZXJNYW5hZ2VyLnB5CisrKyBiL3Rlc3QvdW5pdC9t
YW5hZ2Vycy90ZXN0X1VzZXJNYW5hZ2VyLnB5CkBAIC0xMTgsOCArMTE4LDcgQEAKICAgICAgICAg
dXNlcjMgPTNEIHNlbGYudXNlcl9tZ3IuY3JlYXRlKCBzZWxmLnRyYW5zLCAqKnVzZXIzX2RhdGEg
KQo9MjAKICAgICAgICAgc2VsZi5sb2coICJzaG91bGQgcmV0dXJuIE5vbmUgaWYgbm8gQVBJS2V5
IGhhcyBiZWVuIGNyZWF0ZWQiICkKLSAgICAgICAgbm9fYXBpX2tleV95ZXQgPTNEIHNlbGYudXNl
cl9tZ3IuYXBpX2tleSggc2VsZi50cmFucywgdXNlcjIgKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCBzZWxmLnVzZXJfbWdyLnZhbGlkX2FwaV9rZXkoIHNlbGYudHJhbnMsIHVzZXIyICk9Ci5r
ZXksIE5vbmUgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCBzZWxmLnVzZXJfbWdyLnZhbGlk
X2FwaV9rZXkoIHNlbGYudHJhbnMsIHVzZXIyICk9CiwgTm9uZSApCj0yMAogICAgICAgICBzZWxm
LmxvZyggInNob3VsZCBiZSBhYmxlIHRvIGdlbmVyYXRlIGFuZCByZXRyaWV2ZSB2YWxpZCBhcGkg
a2V5IiApCiAgICAgICAgIHVzZXIyX2FwaV9rZXkgPTNEIHNlbGYudXNlcl9tZ3IuY3JlYXRlX2Fw
aV9rZXkoIHNlbGYudHJhbnMsIHVzZXIyICkKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5
L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvMTU5NjJiM2Q5YWFjLwpDaGFuZ2VzZXQ6ICAgMTU5NjJi
M2Q5YWFjClVzZXI6ICAgICAgICBjYXJsZmViZXJoYXJkCkRhdGU6ICAgICAgICAyMDE1LTAxLTEy
IDIxOjExOjMyKzAwOjAwClN1bW1hcnk6ICAgICBNZXJnZWQgZ2FsYXh5L2dhbGF4eS1jZW50cmFs
IGludG8gZGVmYXVsdApBZmZlY3RlZCAjOiAgNSBmaWxlcwoKZGlmZiAtciA3YTkwZDQwNTMxM2Rk
NGUzNzFlZTEzOTI3OTdiYTAyOWEyYTA1YjExIC1yIDE1OTYyYjNkOWFhYzA2MWU5NTQxZjgxPQo3
NWM4ZDJlMmJjNGJhNWNhYiBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvdml6L3RyYWNrc3Rlci5qcwot
LS0gYS9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvdml6L3RyYWNrc3Rlci5qcworKysgYi9jbGllbnQv
Z2FsYXh5L3NjcmlwdHMvdml6L3RyYWNrc3Rlci5qcwpAQCAtMTIsNyArMTIsNiBAQAogWwogICAg
IC8vIGxvYWQganMgbGlicmFyaWVzCiAgICAgJ3V0aWxzL3V0aWxzJywKLSAgICAnbXZjL3VpL2lj
b24tYnV0dG9uJywKICAgICAnbGlicy9qcXVlcnkvanF1ZXJ5LmV2ZW50LmRyYWcnLAogICAgICds
aWJzL2pxdWVyeS9qcXVlcnkuZXZlbnQuaG92ZXInLAogICAgICdsaWJzL2pxdWVyeS9qcXVlcnku
bW91c2V3aGVlbCcsCkBAIC0zMiw5ICszMSw4IEBACiB9KTsKPTIwCiAvLyB0cmFja3N0ZXIgdmll
d2VyCi1kZWZpbmUoIFsibGlicy91bmRlcnNjb3JlIiwgImJhc2UiLCAidml6L3RyYWNrc3Rlci90
cmFja3MiLCAidml6L3Zpc3VhbGl6YT0KdGlvbiJdLD0yMAotICAgICAgICBmdW5jdGlvbihfLCBi
YXNlLCB0cmFja3MsIHZpc3VhbGl6YXRpb24pIHsKLQorZGVmaW5lKCBbImxpYnMvdW5kZXJzY29y
ZSIsICJiYXNlIiwgInZpei90cmFja3N0ZXIvdHJhY2tzIiwgInZpei92aXN1YWxpemE9CnRpb24i
LCAibXZjL3VpL2ljb24tYnV0dG9uIiBdLAorICAgICAgICBmdW5jdGlvbihfLCBiYXNlLCB0cmFj
a3MsIHZpc3VhbGl6YXRpb24sIG1vZF9pY29uX2J0bikgewogLyoqCiAgKiBVc2VyIGludGVyZmFj
ZSBjb250cm9scyBmb3IgdHJhY2tzdGVyPTIwCiAgKi8KCmRpZmYgLXIgN2E5MGQ0MDUzMTNkZDRl
MzcxZWUxMzkyNzk3YmEwMjlhMmEwNWIxMSAtciAxNTk2MmIzZDlhYWMwNjFlOTU0MWY4MT0KNzVj
OGQyZTJiYzRiYTVjYWIgbGliL2dhbGF4eS90b29scy90b29sYm94L2Jhc2UucHkKLS0tIGEvbGli
L2dhbGF4eS90b29scy90b29sYm94L2Jhc2UucHkKKysrIGIvbGliL2dhbGF4eS90b29scy90b29s
Ym94L2Jhc2UucHkKQEAgLTM5NCw3ICszOTQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAg
c2VjdGlvbi5lbGVtcy5zdHViX2xhYmVsKCBzZWN0aW9uX2lkICkKICAgICAgICAgICAgICAgICBz
ZWxmLl9pbnRlZ3JhdGVkX3Rvb2xfcGFuZWwuYXBwZW5kX3NlY3Rpb24oIGtleSwgc2VjdGlvbiAp
CiAgICAgICAgICAgICBlbGlmIGVsZW0udGFnID0zRD0zRCAnbGFiZWwnOgotICAgICAgICAgICAg
ICAgIHNlY3Rpb24uc3R1Yl9sYWJlbCgga2V5ICkKKyAgICAgICAgICAgICAgICBzZWxmLl9pbnRl
Z3JhdGVkX3Rvb2xfcGFuZWwuc3R1Yl9sYWJlbCgga2V5ICkKPTIwCiAgICAgZGVmIF93cml0ZV9p
bnRlZ3JhdGVkX3Rvb2xfcGFuZWxfY29uZmlnX2ZpbGUoIHNlbGYgKToKICAgICAgICAgIiIiCgpk
aWZmIC1yIDdhOTBkNDA1MzEzZGQ0ZTM3MWVlMTM5Mjc5N2JhMDI5YTJhMDViMTEgLXIgMTU5NjJi
M2Q5YWFjMDYxZTk1NDFmODE9Cjc1YzhkMmUyYmM0YmE1Y2FiIHN0YXRpYy9zY3JpcHRzL3BhY2tl
ZC92aXovdHJhY2tzdGVyLmpzCi0tLSBhL3N0YXRpYy9zY3JpcHRzL3BhY2tlZC92aXovdHJhY2tz
dGVyLmpzCisrKyBiL3N0YXRpYy9zY3JpcHRzL3BhY2tlZC92aXovdHJhY2tzdGVyLmpzCkBAIC0x
LDEgKzEsMSBAQAotdmFyIHVpPTNEbnVsbDt2YXIgdmlldz0zRG51bGw7dmFyIGJyb3dzZXJfcm91
dGVyPTNEbnVsbDtyZXF1aXJlKFsidXRpbHMvdXQ9CmlscyIsIm12Yy91aS9pY29uLWJ1dHRvbiIs
ImxpYnMvanF1ZXJ5L2pxdWVyeS5ldmVudC5kcmFnIiwibGlicy9qcXVlcnkvanF1ZT0KcnkuZXZl
bnQuaG92ZXIiLCJsaWJzL2pxdWVyeS9qcXVlcnkubW91c2V3aGVlbCIsImxpYnMvanF1ZXJ5L2px
dWVyeS11aSIsImxpPQpicy9qcXVlcnkvc2VsZWN0MiIsImxpYnMvZmFyYnRhc3RpYyIsImxpYnMv
anF1ZXJ5L2pxdWVyeS5mb3JtIiwibGlicy9qcXVlcnk9Ci9qcXVlcnkucmF0aW5nIl0sZnVuY3Rp
b24oYixhKXtiLmNzc0xvYWRGaWxlKCJzdGF0aWMvc3R5bGUvanF1ZXJ5LnJhdGluZy5jcz0KcyIp
O2IuY3NzTG9hZEZpbGUoInN0YXRpYy9zdHlsZS9hdXRvY29tcGxldGVfdGFnZ2luZy5jc3MiKTti
LmNzc0xvYWRGaWxlKCJzPQp0YXRpYy9zdHlsZS9qcXVlcnktdWkvc21vb3RobmVzcy9qcXVlcnkt
dWkuY3NzIik7Yi5jc3NMb2FkRmlsZSgic3RhdGljL3N0eWw9CmUvbGlicmFyeS5jc3MiKTtiLmNz
c0xvYWRGaWxlKCJzdGF0aWMvc3R5bGUvdHJhY2tzdGVyLmNzcyIpfSk7ZGVmaW5lKFsibGlicz0K
L3VuZGVyc2NvcmUiLCJiYXNlIiwidml6L3RyYWNrc3Rlci90cmFja3MiLCJ2aXovdmlzdWFsaXph
dGlvbiJdLGZ1bmN0aW9uKGIsPQplLGEsYyl7dmFyIGQ9M0RlLkJhc2UuZXh0ZW5kKHtpbml0aWFs
aXplOmZ1bmN0aW9uKGcpe3RoaXMuYmFzZVVSTD0zRGd9LHNhdmU9Cl92aXo6ZnVuY3Rpb24oKXtH
YWxheHkubW9kYWwuc2hvdyh7dGl0bGU6IlNhdmluZy4uLiIsYm9keToicHJvZ3Jlc3MifSk7dmFy
ID0KZz0zRFtdOyQoIi5ib29rbWFyayIpLmVhY2goZnVuY3Rpb24oKXtnLnB1c2goe3Bvc2l0aW9u
OiQodGhpcykuY2hpbGRyZW4oIi5wPQpvc2l0aW9uIikudGV4dCgpLGFubm90YXRpb246JCh0aGlz
KS5jaGlsZHJlbigiLmFubm90YXRpb24iKS50ZXh0KCl9KX0pO3ZhciA9Cmg9M0Qodmlldy5vdmVy
dmlld19kcmF3YWJsZT92aWV3Lm92ZXJ2aWV3X2RyYXdhYmxlLmNvbmZpZy5nZXRfdmFsdWUoIm5h
bWUiKT0KOm51bGwpLGo9M0R7dmlldzp2aWV3LnRvX2RpY3QoKSx2aWV3cG9ydDp7Y2hyb206dmll
dy5jaHJvbSxzdGFydDp2aWV3LmxvdyxlPQpuZDp2aWV3LmhpZ2gsb3ZlcnZpZXc6aH0sYm9va21h
cmtzOmd9O3JldHVybiAkLmFqYXgoe3VybDpnYWxheHlfY29uZmlnLnJvb3Q9CisidmlzdWFsaXph
dGlvbi9zYXZlIix0eXBlOiJQT1NUIixkYXRhVHlwZToianNvbiIsZGF0YTp7aWQ6dmlldy52aXNf
aWQsdGl0bD0KZTp2aWV3LmNvbmZpZy5nZXRfdmFsdWUoIm5hbWUiKSxkYmtleTp2aWV3LmRia2V5
LHR5cGU6InRyYWNrc3RlciIsdmlzX2pzb246PQpKU09OLnN0cmluZ2lmeShqKX19KS5zdWNjZXNz
KGZ1bmN0aW9uKGspe0dhbGF4eS5tb2RhbC5oaWRlKCk7dmlldy52aXNfaWQ9M0Q9CmsudmlzX2lk
O3ZpZXcuaGFzX2NoYW5nZXM9M0RmYWxzZTt3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoe30sIiIs
ay51cmwrd2luZD0Kb3cubG9jYXRpb24uaGFzaCl9KS5lcnJvcihmdW5jdGlvbigpe0dhbGF4eS5t
b2RhbC5zaG93KHt0aXRsZToiQ291bGQgTm90IFNhPQp2ZSIsYm9keToiQ291bGQgbm90IHNhdmUg
dmlzdWFsaXphdGlvbi4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci4iLGJ1dHRvbnM6e0M9CmFuY2Vs
OmZ1bmN0aW9uKCl7R2FsYXh5Lm1vZGFsLmhpZGUoKX19fSl9KX0sY3JlYXRlQnV0dG9uTWVudTpm
dW5jdGlvbigpe3Zhcj0KIGc9M0R0aGlzLGg9M0Rtb2RfaWNvbl9idG4uY3JlYXRlX2ljb25fYnV0
dG9uc19tZW51KFt7aWNvbl9jbGFzczoicGx1cy1idXR0PQpvbiIsdGl0bGU6IkFkZCB0cmFja3Mi
LG9uX2NsaWNrOmZ1bmN0aW9uKCl7Yy5zZWxlY3RfZGF0YXNldHMoZ2FsYXh5X2NvbmZpZy49CnJv
b3QrInZpc3VhbGl6YXRpb24vbGlzdF9jdXJyZW50X2hpc3RvcnlfZGF0YXNldHMiLGdhbGF4eV9j
b25maWcucm9vdCsiYXBpLz0KZGF0YXNldHMiLHsiZi1kYmtleSI6dmlldy5kYmtleX0sZnVuY3Rp
b24oail7Yi5lYWNoKGosZnVuY3Rpb24oayl7dmlldy5hZGRfPQpkcmF3YWJsZShhLm9iamVjdF9m
cm9tX3RlbXBsYXRlKGssdmlldyx2aWV3KSl9KX0pfX0se2ljb25fY2xhc3M6ImJsb2NrLS1wbHU9
CnMiLHRpdGxlOiJBZGQgZ3JvdXAiLG9uX2NsaWNrOmZ1bmN0aW9uKCl7dmlldy5hZGRfZHJhd2Fi
bGUobmV3IGEuRHJhd2FibGVHcj0Kb3VwKHZpZXcsdmlldyx7bmFtZToiTmV3IEdyb3VwIn0pKX19
LHtpY29uX2NsYXNzOiJib29rbWFya3MiLHRpdGxlOiJCb29rbWFyPQprcyIsb25fY2xpY2s6ZnVu
Y3Rpb24oKXtmb3JjZV9yaWdodF9wYW5lbCgoJCgiZGl2I3JpZ2h0IikuY3NzKCJyaWdodCIpPTNE
PQo9M0QiMHB4Ij8iaGlkZSI6InNob3ciKSl9fSx7aWNvbl9jbGFzczoiZ2xvYmUiLHRpdGxlOiJD
aXJjc3RlciIsb25fY2xpY2s6ZnU9Cm5jdGlvbigpe3dpbmRvdy5sb2NhdGlvbj0zRGcuYmFzZVVS
TCsidmlzdWFsaXphdGlvbi9jaXJjc3Rlcj9pZD0zRCIrdmlldy52aT0Kc19pZH19LHtpY29uX2Ns
YXNzOiJkaXNrLS1hcnJvdyIsdGl0bGU6IlNhdmUiLG9uX2NsaWNrOmZ1bmN0aW9uKCl7Zy5zYXZl
X3ZpPQp6KCl9fSx7aWNvbl9jbGFzczoiY3Jvc3MtY2lyY2xlIix0aXRsZToiQ2xvc2UiLG9uX2Ns
aWNrOmZ1bmN0aW9uKCl7Zy5oYW5kbGU9Cl91bnNhdmVkX2NoYW5nZXModmlldyl9fV0se3Rvb2x0
aXBfY29uZmlnOntwbGFjZW1lbnQ6ImJvdHRvbSJ9fSk7dGhpcy5idXR0bz0Kbk1lbnU9M0RoO3Jl
dHVybiBofSxhZGRfYm9va21hcmtzOmZ1bmN0aW9uKCl7dmFyIGc9M0R0aGlzLGg9M0R0aGlzLmJh
c2VVUkw7PQpHYWxheHkubW9kYWwuc2hvdyh7dGl0bGU6IlNlbGVjdCBkYXRhc2V0IGZvciBuZXcg
Ym9va21hcmtzIixib2R5OiJwcm9ncmVzcyI9Cn0pOyQuYWpheCh7dXJsOnRoaXMuYmFzZVVSTCsi
L3Zpc3VhbGl6YXRpb24vbGlzdF9oaXN0b3JpZXMiLGRhdGE6eyJmLWRia2V5Ij0KOnZpZXcuZGJr
ZXl9LGVycm9yOmZ1bmN0aW9uKCl7YWxlcnQoIkdyaWQgZmFpbGVkIil9LHN1Y2Nlc3M6ZnVuY3Rp
b24oail7R2FsPQpheHkubW9kYWwuc2hvdyh7dGl0bGU6IlNlbGVjdCBkYXRhc2V0IGZvciBuZXcg
Ym9va21hcmtzIixib2R5OmosYnV0dG9uczp7Q2E9Cm5jZWw6ZnVuY3Rpb24oKXtHYWxheHkubW9k
YWwuaGlkZSgpfSxJbnNlcnQ6ZnVuY3Rpb24oKXskKCJpbnB1dFtuYW1lPTNEaWRdOj0KY2hlY2tl
ZCxpbnB1dFtuYW1lPTNEbGRkYV9pZHNdOmNoZWNrZWQiKS5maXJzdCgpLmVhY2goZnVuY3Rpb24o
KXt2YXIgayxsPTNEPQokKHRoaXMpLnZhbCgpO2lmKCQodGhpcykuYXR0cigibmFtZSIpPTNEPTNE
PTNEImlkIil7az0zRHtoZGFfaWQ6bH19ZWxzZXtrPQo9M0R7bGRkYV9pZDpsfX0kLmFqYXgoe3Vy
bDp0aGlzLmJhc2VVUkwrIi92aXN1YWxpemF0aW9uL2Jvb2ttYXJrc19mcm9tX2RhdGE9CnNldCIs
ZGF0YTprLGRhdGFUeXBlOiJqc29uIn0pLnRoZW4oZnVuY3Rpb24obSl7Zm9yKGk9M0QwO2k8bS5k
YXRhLmxlbmd0aDtpKz0KKyl7dmFyIG49M0RtLmRhdGFbaV07Zy5hZGRfYm9va21hcmsoblswXSxu
WzFdKX19KX0pO0dhbGF4eS5tb2RhbC5oaWRlKCl9fX0pPQp9fSl9LGFkZF9ib29rbWFyazpmdW5j
dGlvbihsLGosZyl7dmFyIG49M0QkKCIjcmlnaHQgLnVuaWZpZWQtcGFuZWwtYm9keSIpLHA9Cj0z
RCQoIjxkaXYvPiIpLmFkZENsYXNzKCJib29rbWFyayIpLmFwcGVuZFRvKG4pO3ZhciBxPTNEJCgi
PGRpdi8+IikuYWRkQ2xhcz0KcygicG9zaXRpb24iKS5hcHBlbmRUbyhwKSxtPTNEJCgiPGEgaHJl
Zj0zRCcnLz4iKS50ZXh0KGwpLmFwcGVuZFRvKHEpLmNsaWNrPQooZnVuY3Rpb24oKXt2aWV3Lmdv
X3RvKGwpO3JldHVybiBmYWxzZX0pLGs9M0QkKCI8ZGl2Lz4iKS50ZXh0KGopLmFwcGVuZFRvKHA9
Cik7aWYoZyl7dmFyIG89M0QkKCI8ZGl2Lz4iKS5hZGRDbGFzcygiZGVsZXRlLWljb24tY29udGFp
bmVyIikucHJlcGVuZFRvKHApLj0KY2xpY2soZnVuY3Rpb24oKXtwLnNsaWRlVXAoImZhc3QiKTtw
LnJlbW92ZSgpO3ZpZXcuaGFzX2NoYW5nZXM9M0R0cnVlO3JldHVyPQpuIGZhbHNlfSksaD0zRCQo
IjxhIGhyZWY9M0QnJy8+IikuYWRkQ2xhc3MoImljb24tYnV0dG9uIGRlbGV0ZSIpLmFwcGVuZFRv
KG89Cik7ay5tYWtlX3RleHRfZWRpdGFibGUoe251bV9yb3dzOjMsdXNlX3RleHRhcmVhOnRydWUs
aGVscF90ZXh0OiJFZGl0IGJvb2ttYT0Kcmsgbm90ZSJ9KS5hZGRDbGFzcygiYW5ub3RhdGlvbiIp
fXZpZXcuaGFzX2NoYW5nZXM9M0R0cnVlO3JldHVybiBwfSxjcmVhdGVfPQp2aXN1YWxpemF0aW9u
OmZ1bmN0aW9uKG0sZyxsLG4sayl7dmFyIGo9M0R0aGlzLGg9M0RuZXcgYS5UcmFja3N0ZXJWaWV3
KGIuZXg9CnRlbmQobSx7aGVhZGVyOmZhbHNlfSkpO2guZWRpdG9yPTNEdHJ1ZTskLndoZW4oaC5s
b2FkX2Nocm9tc19kZWZlcnJlZCkudGhlbj0KKGZ1bmN0aW9uKHkpe2lmKGcpe3ZhciB3PTNEZy5j
aHJvbSxvPTNEZy5zdGFydCx0PTNEZy5lbmQscT0zRGcub3ZlcnZpZXc7aWYoPQp3JiYobyE9M0Q9
M0R1bmRlZmluZWQpJiZ0KXtoLmNoYW5nZV9jaHJvbSh3LG8sdCl9ZWxzZXtoLmNoYW5nZV9jaHJv
bSh5WzBdLmM9Cmhyb20pfX1lbHNle2guY2hhbmdlX2Nocm9tKHlbMF0uY2hyb20pfWlmKGwpe3Zh
ciByLHAscztmb3IodmFyIHU9M0QwO3U8bC5sZT0Kbmd0aDt1Kyspe2guYWRkX2RyYXdhYmxlKGEu
b2JqZWN0X2Zyb21fdGVtcGxhdGUobFt1XSxoLGgpKX19dmFyIHg7Zm9yKHZhciB1PQo9M0QwO3U8
aC5kcmF3YWJsZXMubGVuZ3RoO3UrKyl7aWYoaC5kcmF3YWJsZXNbdV0uY29uZmlnLmdldF92YWx1
ZSgibmFtZSIpPQo9M0Q9M0Q9M0RxKXtoLnNldF9vdmVydmlldyhoLmRyYXdhYmxlc1t1XSk7YnJl
YWt9fWlmKG4pe3ZhciB2O2Zvcih2YXIgdT0zRDA9Cjt1PG4ubGVuZ3RoO3UrKyl7dj0zRG5bdV07
ai5hZGRfYm9va21hcmsodi5wb3NpdGlvbix2LmFubm90YXRpb24sayl9fWguaGFzXz0KY2hhbmdl
cz0zRGZhbHNlfSk7dGhpcy5zZXRfdXBfcm91dGVyKHt2aWV3Omh9KTtyZXR1cm4gaH0sc2V0X3Vw
X3JvdXRlcjpmdW5jPQp0aW9uKGcpe25ldyBjLlRyYWNrQnJvd3NlclJvdXRlcihnKTtCYWNrYm9u
ZS5oaXN0b3J5LnN0YXJ0KCl9LGluaXRfa2V5Ym9hcmQ9Cl9uYXY6ZnVuY3Rpb24oZyl7JChkb2N1
bWVudCkua2V5dXAoZnVuY3Rpb24oaCl7aWYoJChoLnNyY0VsZW1lbnQpLmlzKCI6aW5wdT0KdCIp
KXtyZXR1cm59c3dpdGNoKGgud2hpY2gpe2Nhc2UgMzc6Zy5tb3ZlX2ZyYWN0aW9uKDAuMjUpO2Jy
ZWFrO2Nhc2UgMzg6dmFyPQogaj0zRE1hdGgucm91bmQoZy52aWV3cG9ydF9jb250YWluZXIuaGVp
Z2h0KCkvMTUpO2cudmlld3BvcnRfY29udGFpbmVyLnNjcm89CmxsVG9wKGcudmlld3BvcnRfY29u
dGFpbmVyLnNjcm9sbFRvcCgpLTIwKTticmVhaztjYXNlIDM5OmcubW92ZV9mcmFjdGlvbigtMD0K
LjI1KTticmVhaztjYXNlIDQwOnZhciBqPTNETWF0aC5yb3VuZChnLnZpZXdwb3J0X2NvbnRhaW5l
ci5oZWlnaHQoKS8xNSk7Zy52PQppZXdwb3J0X2NvbnRhaW5lci5zY3JvbGxUb3AoZy52aWV3cG9y
dF9jb250YWluZXIuc2Nyb2xsVG9wKCkrMjApO2JyZWFrfX0pfSw9CmhhbmRsZV91bnNhdmVkX2No
YW5nZXM6ZnVuY3Rpb24oZyl7aWYoZy5oYXNfY2hhbmdlcyl7dmFyIGg9M0R0aGlzO0dhbGF4eS5t
bz0KZGFsLnNob3coe3RpdGxlOiJDbG9zZSB2aXN1YWxpemF0aW9uIixib2R5OiJUaGVyZSBhcmUg
dW5zYXZlZCBjaGFuZ2VzIHRvIHlvPQp1ciB2aXN1YWxpemF0aW9uIHdoaWNoIHdpbGwgYmUgbG9z
dCBpZiB5b3UgZG8gbm90IHNhdmUgdGhlbS4iLGJ1dHRvbnM6e0NhbmM9CmVsOmZ1bmN0aW9uKCl7
R2FsYXh5Lm1vZGFsLmhpZGUoKX0sIkxlYXZlIHdpdGhvdXQgU2F2aW5nIjpmdW5jdGlvbigpeyQo
d2luZD0Kb3cpLm9mZigiYmVmb3JldW5sb2FkIik7d2luZG93LmxvY2F0aW9uPTNEZ2FsYXh5X2Nv
bmZpZy5yb290KyJ2aXN1YWxpemF0aW9uPQoifSxTYXZlOmZ1bmN0aW9uKCl7JC53aGVuKGguc2F2
ZV92aXooKSkudGhlbihmdW5jdGlvbigpe3dpbmRvdy5sb2NhdGlvbj0zRGc9CmFsYXh5X2NvbmZp
Zy5yb290KyJ2aXN1YWxpemF0aW9uIn0pfX19KX1lbHNle3dpbmRvdy5sb2NhdGlvbj0zRGdhbGF4
eV9jb25maT0KZy5yb290KyJ2aXN1YWxpemF0aW9uIn19fSk7dmFyIGY9M0RlLkJhY2tib25lLlZp
ZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0PQppb24oKXt1aT0zRG5ldyBkKGdhbGF4eV9jb25m
aWcucm9vdCk7dWkuY3JlYXRlQnV0dG9uTWVudSgpO3VpLmJ1dHRvbk1lbnUuJGU9CmwuYXR0cigi
c3R5bGUiLCJmbG9hdDogcmlnaHQiKTskKCIjY2VudGVyIC51bmlmaWVkLXBhbmVsLWhlYWRlci1p
bm5lciIpLmFwcD0KZW5kKHVpLmJ1dHRvbk1lbnUuJGVsKTskKCIjcmlnaHQgLnVuaWZpZWQtcGFu
ZWwtdGl0bGUiKS5hcHBlbmQoIkJvb2ttYXJrcyIpPQo7JCgiI3JpZ2h0IC51bmlmaWVkLXBhbmVs
LWljb25zIikuYXBwZW5kKCI8YSBpZD0zRCdhZGQtYm9va21hcmstYnV0dG9uJyBjbGE9CnNzPTNE
J2ljb24tYnV0dG9uIG1lbnUtYnV0dG9uIHBsdXMtYnV0dG9uJyBocmVmPTNEJ2phdmFzY3JpcHQ6
dm9pZCgwKTsnIHRpdD0KbGU9M0QnQWRkIGJvb2ttYXJrJz48L2E+Iik7JCgiI3JpZ2h0LWJvcmRl
ciIpLmNsaWNrKGZ1bmN0aW9uKCl7dmlldy5yZXNpemVfPQp3aW5kb3coKX0pO2ZvcmNlX3JpZ2h0
X3BhbmVsKCJoaWRlIik7aWYoZ2FsYXh5X2NvbmZpZy5hcHAuaWQpe3RoaXMudmlld19leGk9CnN0
aW5nKCl9ZWxzZXt0aGlzLnZpZXdfbmV3KCl9fSx2aWV3X2V4aXN0aW5nOmZ1bmN0aW9uKCl7dmFy
IGc9M0RnYWxheHlfY29uZj0KaWcuYXBwLnZpel9jb25maWc7dmlldz0zRHVpLmNyZWF0ZV92aXN1
YWxpemF0aW9uKHtjb250YWluZXI6JCgiI2NlbnRlciAudW5pPQpmaWVkLXBhbmVsLWJvZHkiKSxu
YW1lOmcudGl0bGUsdmlzX2lkOmcudmlzX2lkLGRia2V5OmcuZGJrZXl9LGcudmlld3BvcnQsZy49
CnRyYWNrcyxnLmJvb2ttYXJrcyx0cnVlKTt0aGlzLmluaXRfZWRpdG9yKCl9LHZpZXdfbmV3OmZ1
bmN0aW9uKCl7dmFyIGc9M0R0aD0KaXM7JC5hamF4KHt1cmw6Z2FsYXh5X2NvbmZpZy5yb290KyJh
cGkvZ2Vub21lcz9jaHJvbV9pbmZvPTNEVHJ1ZSIsZGF0YTp7fSxlPQpycm9yOmZ1bmN0aW9uKCl7
YWxlcnQoIkNvdWxkbid0IGNyZWF0ZSBuZXcgYnJvd3Nlci4iKX0sc3VjY2VzczpmdW5jdGlvbiho
KXs9CkdhbGF4eS5tb2RhbC5zaG93KHt0aXRsZToiTmV3IFZpc3VhbGl6YXRpb24iLGJvZHk6Zy50
ZW1wbGF0ZV92aWV3X25ldyhoKSxidT0KdHRvbnM6e0NhbmNlbDpmdW5jdGlvbigpe3dpbmRvdy5s
b2NhdGlvbj0zRGdhbGF4eV9jb25maWcucm9vdCsidmlzdWFsaXphdGlvPQpuL2xpc3QifSxDcmVh
dGU6ZnVuY3Rpb24oKXtnLmNyZWF0ZV9icm93c2VyKCQoIiNuZXctdGl0bGUiKS52YWwoKSwkKCIj
bmV3LWQ9CmJrZXkiKS52YWwoKSk7R2FsYXh5Lm1vZGFsLmhpZGUoKX19fSk7aWYoZ2FsYXh5X2Nv
bmZpZy5hcHAuZGVmYXVsdF9kYmtleSl7JD0KKCIjbmV3LWRia2V5IikudmFsKGdhbGF4eV9jb25m
aWcuYXBwLmRlZmF1bHRfZGJrZXkpfSQoIiNuZXctdGl0bGUiKS5mb2N1cygpPQo7JCgic2VsZWN0
W25hbWU9M0QnZGJrZXknXSIpLnNlbGVjdDIoKTskKCIjb3ZlcmxheSIpLmNzcygib3ZlcmZsb3ci
LCJhdXRvIik9Cn19KX0sdGVtcGxhdGVfdmlld19uZXc6ZnVuY3Rpb24oZyl7dmFyIGo9M0QnPGZv
cm0gaWQ9M0QibmV3LWJyb3dzZXItZm9ybSIgYT0KY3Rpb249M0QiamF2YXNjcmlwdDp2b2lkKDAp
OyIgbWV0aG9kPTNEInBvc3QiIG9uc3VibWl0PTNEInJldHVybiBmYWxzZTsiPjxkPQppdiBjbGFz
cz0zRCJmb3JtLXJvdyI+PGxhYmVsIGZvcj0zRCJuZXctdGl0bGUiPkJyb3dzZXIgbmFtZTo8L2xh
YmVsPjxkaXYgY2w9CmFzcz0zRCJmb3JtLXJvdy1pbnB1dCI+PGlucHV0IHR5cGU9M0QidGV4dCIg
bmFtZT0zRCJ0aXRsZSIgaWQ9M0QibmV3LXRpdGxlIj0KIHZhbHVlPTNEIlVubmFtZWQiPjwvaW5w
dXQ+PC9kaXY+PGRpdiBzdHlsZT0zRCJjbGVhcjogYm90aDsiPjwvZGl2PjwvZGl2PjxkPQppdiBj
bGFzcz0zRCJmb3JtLXJvdyI+PGxhYmVsIGZvcj0zRCJuZXctZGJrZXkiPlJlZmVyZW5jZSBnZW5v
bWUgYnVpbGQgKGRia2U9CnkpOiA8L2xhYmVsPjxkaXYgY2xhc3M9M0QiZm9ybS1yb3ctaW5wdXQi
PjxzZWxlY3QgbmFtZT0zRCJkYmtleSIgaWQ9M0QibmV3LT0KZGJrZXkiPic7Zm9yKHZhciBoPTNE
MDtoPGcubGVuZ3RoO2grKyl7ais9M0QnPG9wdGlvbiB2YWx1ZT0zRCInK2dbaF1bMV0rJyI+PQon
K2dbaF1bMF0rIjwvb3B0aW9uPiJ9ais9M0QnPC9zZWxlY3Q+PC9kaXY+PGRpdiBzdHlsZT0zRCJj
bGVhcjogYm90aDsiPjwvZGk9CnY+PC9kaXY+PGRpdiBjbGFzcz0zRCJmb3JtLXJvdyI+SXMgdGhl
IGJ1aWxkIG5vdCBsaXN0ZWQgaGVyZT8gPGEgaHJlZj0zRCInKz0KZ2FsYXh5X2NvbmZpZy5yb290
Kyd1c2VyL2Ria2V5cz91c2VfcGFuZWxzPTNEVHJ1ZSI+QWRkIGEgQ3VzdG9tIEJ1aWxkPC9hPjwv
PQpkaXY+PC9mb3JtPic7cmV0dXJuIGp9LGNyZWF0ZV9icm93c2VyOmZ1bmN0aW9uKGgsZyl7JChk
b2N1bWVudCkudHJpZ2dlcigiY289Cm52ZXJ0X3RvX3ZhbHVlcyIpO3ZpZXc9M0R1aS5jcmVhdGVf
dmlzdWFsaXphdGlvbih7Y29udGFpbmVyOiQoIiNjZW50ZXIgLnVuaT0KZmllZC1wYW5lbC1ib2R5
IiksbmFtZTpoLGRia2V5Omd9LGdhbGF4eV9jb25maWcuYXBwLmdlbmVfcmVnaW9uKTt0aGlzLmlu
aXRfPQplZGl0b3IoKTt2aWV3LmVkaXRvcj0zRHRydWV9LGluaXRfZWRpdG9yOmZ1bmN0aW9uKCl7
JCgiI2NlbnRlciAudW5pZmllZC1wYW49CmVsLXRpdGxlIikudGV4dCh2aWV3LmNvbmZpZy5nZXRf
dmFsdWUoIm5hbWUiKSsiICgiK3ZpZXcuZGJrZXkrIikiKTtpZihnYWxheD0KeV9jb25maWcuYXBw
LmFkZF9kYXRhc2V0KXskLmFqYXgoe3VybDpnYWxheHlfY29uZmlnLnJvb3QrImFwaS9kYXRhc2V0
cy8iK2dhPQpsYXh5X2NvbmZpZy5hcHAuYWRkX2RhdGFzZXQsZGF0YTp7aGRhX2xkZGE6ImhkYSIs
ZGF0YV90eXBlOiJ0cmFja19jb25maWcifSw9CmRhdGFUeXBlOiJqc29uIixzdWNjZXNzOmZ1bmN0
aW9uKGcpe3ZpZXcuYWRkX2RyYXdhYmxlKGEub2JqZWN0X2Zyb21fdGVtcGxhdD0KZShnLHZpZXcs
dmlldykpfX0pfSQoIiNhZGQtYm9va21hcmstYnV0dG9uIikuY2xpY2soZnVuY3Rpb24oKXt2YXIg
aD0zRHZpZXcuPQpjaHJvbSsiOiIrdmlldy5sb3crIi0iK3ZpZXcuaGlnaCxnPTNEIkJvb2ttYXJr
IGRlc2NyaXB0aW9uIjtyZXR1cm4gdWkuYWRkX2I9Cm9va21hcmsoaCxnLHRydWUpfSk7dWkuaW5p
dF9rZXlib2FyZF9uYXYodmlldyk7JCh3aW5kb3cpLm9uKCJiZWZvcmV1bmxvYWQiLD0KZnVuY3Rp
b24oKXtpZih2aWV3Lmhhc19jaGFuZ2VzKXtyZXR1cm4iVGhlcmUgYXJlIHVuc2F2ZWQgY2hhbmdl
cyB0byB5b3VyIHZpPQpzdWFsaXphdGlvbiB0aGF0IHdpbGwgYmUgbG9zdCBpZiB5b3UgbGVhdmUg
dGhpcyBwYWdlLiJ9fSl9fSk7cmV0dXJue1RyYWNrc3Q9CmVyVUk6ZCxHYWxheHlBcHA6Zn19KTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit2YXIgdWk9M0RudWxsO3ZhciB2aWV3PTNEbnVs
bDt2YXIgYnJvd3Nlcl9yb3V0ZXI9M0RudWxsO3JlcXVpcmUoWyJ1dGlscy91dD0KaWxzIiwibGli
cy9qcXVlcnkvanF1ZXJ5LmV2ZW50LmRyYWciLCJsaWJzL2pxdWVyeS9qcXVlcnkuZXZlbnQuaG92
ZXIiLCJsaWJzPQovanF1ZXJ5L2pxdWVyeS5tb3VzZXdoZWVsIiwibGlicy9qcXVlcnkvanF1ZXJ5
LXVpIiwibGlicy9qcXVlcnkvc2VsZWN0MiIsImw9Cmlicy9mYXJidGFzdGljIiwibGlicy9qcXVl
cnkvanF1ZXJ5LmZvcm0iLCJsaWJzL2pxdWVyeS9qcXVlcnkucmF0aW5nIl0sZnVuYz0KdGlvbihi
LGEpe2IuY3NzTG9hZEZpbGUoInN0YXRpYy9zdHlsZS9qcXVlcnkucmF0aW5nLmNzcyIpO2IuY3Nz
TG9hZEZpbGUoInN0PQphdGljL3N0eWxlL2F1dG9jb21wbGV0ZV90YWdnaW5nLmNzcyIpO2IuY3Nz
TG9hZEZpbGUoInN0YXRpYy9zdHlsZS9qcXVlcnktdWk9Ci9zbW9vdGhuZXNzL2pxdWVyeS11aS5j
c3MiKTtiLmNzc0xvYWRGaWxlKCJzdGF0aWMvc3R5bGUvbGlicmFyeS5jc3MiKTtiLmNzcz0KTG9h
ZEZpbGUoInN0YXRpYy9zdHlsZS90cmFja3N0ZXIuY3NzIil9KTtkZWZpbmUoWyJsaWJzL3VuZGVy
c2NvcmUiLCJiYXNlIiwiPQp2aXovdHJhY2tzdGVyL3RyYWNrcyIsInZpei92aXN1YWxpemF0aW9u
IiwibXZjL3VpL2ljb24tYnV0dG9uIl0sZnVuY3Rpb24oYiw9CmYsYSxkLGMpe3ZhciBlPTNEZi5C
YXNlLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbihoKXt0aGlzLmJhc2VVUkw9M0RofSxzYT0K
dmVfdml6OmZ1bmN0aW9uKCl7R2FsYXh5Lm1vZGFsLnNob3coe3RpdGxlOiJTYXZpbmcuLi4iLGJv
ZHk6InByb2dyZXNzIn0pO3ZhPQpyIGg9M0RbXTskKCIuYm9va21hcmsiKS5lYWNoKGZ1bmN0aW9u
KCl7aC5wdXNoKHtwb3NpdGlvbjokKHRoaXMpLmNoaWxkcmVuKCI9Ci5wb3NpdGlvbiIpLnRleHQo
KSxhbm5vdGF0aW9uOiQodGhpcykuY2hpbGRyZW4oIi5hbm5vdGF0aW9uIikudGV4dCgpfSl9KTt2
YT0KciBqPTNEKHZpZXcub3ZlcnZpZXdfZHJhd2FibGU/dmlldy5vdmVydmlld19kcmF3YWJsZS5j
b25maWcuZ2V0X3ZhbHVlKCJuYW1lPQoiKTpudWxsKSxrPTNEe3ZpZXc6dmlldy50b19kaWN0KCks
dmlld3BvcnQ6e2Nocm9tOnZpZXcuY2hyb20sc3RhcnQ6dmlldy5sb3c9CixlbmQ6dmlldy5oaWdo
LG92ZXJ2aWV3Omp9LGJvb2ttYXJrczpofTtyZXR1cm4gJC5hamF4KHt1cmw6Z2FsYXh5X2NvbmZp
Zy5ybz0Kb3QrInZpc3VhbGl6YXRpb24vc2F2ZSIsdHlwZToiUE9TVCIsZGF0YVR5cGU6Impzb24i
LGRhdGE6e2lkOnZpZXcudmlzX2lkLHRpPQp0bGU6dmlldy5jb25maWcuZ2V0X3ZhbHVlKCJuYW1l
IiksZGJrZXk6dmlldy5kYmtleSx0eXBlOiJ0cmFja3N0ZXIiLHZpc19qc289Cm46SlNPTi5zdHJp
bmdpZnkoayl9fSkuc3VjY2VzcyhmdW5jdGlvbihsKXtHYWxheHkubW9kYWwuaGlkZSgpO3ZpZXcu
dmlzX2lkPQo9M0RsLnZpc19pZDt2aWV3Lmhhc19jaGFuZ2VzPTNEZmFsc2U7d2luZG93Lmhpc3Rv
cnkucHVzaFN0YXRlKHt9LCIiLGwudXJsK3c9CmluZG93LmxvY2F0aW9uLmhhc2gpfSkuZXJyb3Io
ZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuc2hvdyh7dGl0bGU6IkNvdWxkIE5vdD0KIFNhdmUiLGJv
ZHk6IkNvdWxkIG5vdCBzYXZlIHZpc3VhbGl6YXRpb24uIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIu
IixidXR0b25zPQo6e0NhbmNlbDpmdW5jdGlvbigpe0dhbGF4eS5tb2RhbC5oaWRlKCl9fX0pfSl9
LGNyZWF0ZUJ1dHRvbk1lbnU6ZnVuY3Rpb24oKXs9CnZhciBoPTNEdGhpcyxqPTNEYy5jcmVhdGVf
aWNvbl9idXR0b25zX21lbnUoW3tpY29uX2NsYXNzOiJwbHVzLWJ1dHRvbiIsdGl0bD0KZToiQWRk
IHRyYWNrcyIsb25fY2xpY2s6ZnVuY3Rpb24oKXtkLnNlbGVjdF9kYXRhc2V0cyhnYWxheHlfY29u
ZmlnLnJvb3QrInZpPQpzdWFsaXphdGlvbi9saXN0X2N1cnJlbnRfaGlzdG9yeV9kYXRhc2V0cyIs
Z2FsYXh5X2NvbmZpZy5yb290KyJhcGkvZGF0YXNldHM9CiIseyJmLWRia2V5Ijp2aWV3LmRia2V5
fSxmdW5jdGlvbihrKXtiLmVhY2goayxmdW5jdGlvbihsKXt2aWV3LmFkZF9kcmF3YWJsZT0KKGEu
b2JqZWN0X2Zyb21fdGVtcGxhdGUobCx2aWV3LHZpZXcpKX0pfSl9fSx7aWNvbl9jbGFzczoiYmxv
Y2stLXBsdXMiLHRpdGxlPQo6IkFkZCBncm91cCIsb25fY2xpY2s6ZnVuY3Rpb24oKXt2aWV3LmFk
ZF9kcmF3YWJsZShuZXcgYS5EcmF3YWJsZUdyb3VwKHZpZXc9Cix2aWV3LHtuYW1lOiJOZXcgR3Jv
dXAifSkpfX0se2ljb25fY2xhc3M6ImJvb2ttYXJrcyIsdGl0bGU6IkJvb2ttYXJrcyIsb25fYz0K
bGljazpmdW5jdGlvbigpe2ZvcmNlX3JpZ2h0X3BhbmVsKCgkKCJkaXYjcmlnaHQiKS5jc3MoInJp
Z2h0Iik9M0Q9M0QiMHB4Ij8iPQpoaWRlIjoic2hvdyIpKX19LHtpY29uX2NsYXNzOiJnbG9iZSIs
dGl0bGU6IkNpcmNzdGVyIixvbl9jbGljazpmdW5jdGlvbigpe3c9CmluZG93LmxvY2F0aW9uPTNE
aC5iYXNlVVJMKyJ2aXN1YWxpemF0aW9uL2NpcmNzdGVyP2lkPTNEIit2aWV3LnZpc19pZH19LHtp
Yz0Kb25fY2xhc3M6ImRpc2stLWFycm93Iix0aXRsZToiU2F2ZSIsb25fY2xpY2s6ZnVuY3Rpb24o
KXtoLnNhdmVfdml6KCl9fSx7aWNvPQpuX2NsYXNzOiJjcm9zcy1jaXJjbGUiLHRpdGxlOiJDbG9z
ZSIsb25fY2xpY2s6ZnVuY3Rpb24oKXtoLmhhbmRsZV91bnNhdmVkX2M9Cmhhbmdlcyh2aWV3KX19
XSx7dG9vbHRpcF9jb25maWc6e3BsYWNlbWVudDoiYm90dG9tIn19KTt0aGlzLmJ1dHRvbk1lbnU9
M0RqOz0KcmV0dXJuIGp9LGFkZF9ib29rbWFya3M6ZnVuY3Rpb24oKXt2YXIgaD0zRHRoaXMsaj0z
RHRoaXMuYmFzZVVSTDtHYWxheHkubW9kPQphbC5zaG93KHt0aXRsZToiU2VsZWN0IGRhdGFzZXQg
Zm9yIG5ldyBib29rbWFya3MiLGJvZHk6InByb2dyZXNzIn0pOyQuYWpheCg9Cnt1cmw6dGhpcy5i
YXNlVVJMKyIvdmlzdWFsaXphdGlvbi9saXN0X2hpc3RvcmllcyIsZGF0YTp7ImYtZGJrZXkiOnZp
ZXcuZGJrZT0KeX0sZXJyb3I6ZnVuY3Rpb24oKXthbGVydCgiR3JpZCBmYWlsZWQiKX0sc3VjY2Vz
czpmdW5jdGlvbihrKXtHYWxheHkubW9kYWwuPQpzaG93KHt0aXRsZToiU2VsZWN0IGRhdGFzZXQg
Zm9yIG5ldyBib29rbWFya3MiLGJvZHk6ayxidXR0b25zOntDYW5jZWw6ZnVuY3Q9Cmlvbigpe0dh
bGF4eS5tb2RhbC5oaWRlKCl9LEluc2VydDpmdW5jdGlvbigpeyQoImlucHV0W25hbWU9M0RpZF06
Y2hlY2tlZCxpbj0KcHV0W25hbWU9M0RsZGRhX2lkc106Y2hlY2tlZCIpLmZpcnN0KCkuZWFjaChm
dW5jdGlvbigpe3ZhciBsLG09M0QkKHRoaXMpLnZhPQpsKCk7aWYoJCh0aGlzKS5hdHRyKCJuYW1l
Iik9M0Q9M0Q9M0QiaWQiKXtsPTNEe2hkYV9pZDptfX1lbHNle2w9M0R7bGRkYV9pZDo9Cm19fSQu
YWpheCh7dXJsOnRoaXMuYmFzZVVSTCsiL3Zpc3VhbGl6YXRpb24vYm9va21hcmtzX2Zyb21fZGF0
YXNldCIsZGF0YTpsLD0KZGF0YVR5cGU6Impzb24ifSkudGhlbihmdW5jdGlvbihuKXtmb3IoaT0z
RDA7aTxuLmRhdGEubGVuZ3RoO2krKyl7dmFyIG89M0RuPQouZGF0YVtpXTtoLmFkZF9ib29rbWFy
ayhvWzBdLG9bMV0pfX0pfSk7R2FsYXh5Lm1vZGFsLmhpZGUoKX19fSl9fSl9LGFkZF9ib289Cmtt
YXJrOmZ1bmN0aW9uKG0sayxoKXt2YXIgbz0zRCQoIiNyaWdodCAudW5pZmllZC1wYW5lbC1ib2R5
IikscT0zRCQoIjxkaXYvPj0KIikuYWRkQ2xhc3MoImJvb2ttYXJrIikuYXBwZW5kVG8obyk7dmFy
IHI9M0QkKCI8ZGl2Lz4iKS5hZGRDbGFzcygicG9zaXRpb24iPQopLmFwcGVuZFRvKHEpLG49M0Qk
KCI8YSBocmVmPTNEJycvPiIpLnRleHQobSkuYXBwZW5kVG8ocikuY2xpY2soZnVuY3Rpb24oKXs9
CnZpZXcuZ29fdG8obSk7cmV0dXJuIGZhbHNlfSksbD0zRCQoIjxkaXYvPiIpLnRleHQoaykuYXBw
ZW5kVG8ocSk7aWYoaCl7dmFyID0KcD0zRCQoIjxkaXYvPiIpLmFkZENsYXNzKCJkZWxldGUtaWNv
bi1jb250YWluZXIiKS5wcmVwZW5kVG8ocSkuY2xpY2soZnVuY3RpPQpvbigpe3Euc2xpZGVVcCgi
ZmFzdCIpO3EucmVtb3ZlKCk7dmlldy5oYXNfY2hhbmdlcz0zRHRydWU7cmV0dXJuIGZhbHNlfSks
aj0KPTNEJCgiPGEgaHJlZj0zRCcnLz4iKS5hZGRDbGFzcygiaWNvbi1idXR0b24gZGVsZXRlIiku
YXBwZW5kVG8ocCk7bC5tYWtlX3RlPQp4dF9lZGl0YWJsZSh7bnVtX3Jvd3M6Myx1c2VfdGV4dGFy
ZWE6dHJ1ZSxoZWxwX3RleHQ6IkVkaXQgYm9va21hcmsgbm90ZSJ9KS49CmFkZENsYXNzKCJhbm5v
dGF0aW9uIil9dmlldy5oYXNfY2hhbmdlcz0zRHRydWU7cmV0dXJuIHF9LGNyZWF0ZV92aXN1YWxp
emF0aT0Kb246ZnVuY3Rpb24obixoLG0sbyxsKXt2YXIgaz0zRHRoaXMsaj0zRG5ldyBhLlRyYWNr
c3RlclZpZXcoYi5leHRlbmQobix7aGVhPQpkZXI6ZmFsc2V9KSk7ai5lZGl0b3I9M0R0cnVlOyQu
d2hlbihqLmxvYWRfY2hyb21zX2RlZmVycmVkKS50aGVuKGZ1bmN0aW9uKHo9Cil7aWYoaCl7dmFy
IHg9M0RoLmNocm9tLHA9M0RoLnN0YXJ0LHU9M0RoLmVuZCxyPTNEaC5vdmVydmlldztpZih4JiYo
cCE9M0Q9Cj0zRHVuZGVmaW5lZCkmJnUpe2ouY2hhbmdlX2Nocm9tKHgscCx1KX1lbHNle2ouY2hh
bmdlX2Nocm9tKHpbMF0uY2hyb20pfX1lbD0Kc2V7ai5jaGFuZ2VfY2hyb20oelswXS5jaHJvbSl9
aWYobSl7dmFyIHMscSx0O2Zvcih2YXIgdj0zRDA7djxtLmxlbmd0aDt2KyspPQp7ai5hZGRfZHJh
d2FibGUoYS5vYmplY3RfZnJvbV90ZW1wbGF0ZShtW3ZdLGosaikpfX12YXIgeTtmb3IodmFyIHY9
M0QwO3Y8ai49CmRyYXdhYmxlcy5sZW5ndGg7disrKXtpZihqLmRyYXdhYmxlc1t2XS5jb25maWcu
Z2V0X3ZhbHVlKCJuYW1lIik9M0Q9M0Q9M0RyKT0Ke2ouc2V0X292ZXJ2aWV3KGouZHJhd2FibGVz
W3ZdKTticmVha319aWYobyl7dmFyIHc7Zm9yKHZhciB2PTNEMDt2PG8ubGVuZ3RoPQo7disrKXt3
PTNEb1t2XTtrLmFkZF9ib29rbWFyayh3LnBvc2l0aW9uLHcuYW5ub3RhdGlvbixsKX19ai5oYXNf
Y2hhbmdlcz0zRGY9CmFsc2V9KTt0aGlzLnNldF91cF9yb3V0ZXIoe3ZpZXc6an0pO3JldHVybiBq
fSxzZXRfdXBfcm91dGVyOmZ1bmN0aW9uKGgpe25ldz0KIGQuVHJhY2tCcm93c2VyUm91dGVyKGgp
O0JhY2tib25lLmhpc3Rvcnkuc3RhcnQoKX0saW5pdF9rZXlib2FyZF9uYXY6ZnVuY3RpPQpvbiho
KXskKGRvY3VtZW50KS5rZXl1cChmdW5jdGlvbihqKXtpZigkKGouc3JjRWxlbWVudCkuaXMoIjpp
bnB1dCIpKXtyZXR1cm49Cn1zd2l0Y2goai53aGljaCl7Y2FzZSAzNzpoLm1vdmVfZnJhY3Rpb24o
MC4yNSk7YnJlYWs7Y2FzZSAzODp2YXIgaz0zRE1hdGgucj0Kb3VuZChoLnZpZXdwb3J0X2NvbnRh
aW5lci5oZWlnaHQoKS8xNSk7aC52aWV3cG9ydF9jb250YWluZXIuc2Nyb2xsVG9wKGgudmllPQp3
cG9ydF9jb250YWluZXIuc2Nyb2xsVG9wKCktMjApO2JyZWFrO2Nhc2UgMzk6aC5tb3ZlX2ZyYWN0
aW9uKC0wLjI1KTticmVhazs9CmNhc2UgNDA6dmFyIGs9M0RNYXRoLnJvdW5kKGgudmlld3BvcnRf
Y29udGFpbmVyLmhlaWdodCgpLzE1KTtoLnZpZXdwb3J0X2Nvbj0KdGFpbmVyLnNjcm9sbFRvcCho
LnZpZXdwb3J0X2NvbnRhaW5lci5zY3JvbGxUb3AoKSsyMCk7YnJlYWt9fSl9LGhhbmRsZV91bnNh
PQp2ZWRfY2hhbmdlczpmdW5jdGlvbihoKXtpZihoLmhhc19jaGFuZ2VzKXt2YXIgaj0zRHRoaXM7
R2FsYXh5Lm1vZGFsLnNob3coe3Q9Cml0bGU6IkNsb3NlIHZpc3VhbGl6YXRpb24iLGJvZHk6IlRo
ZXJlIGFyZSB1bnNhdmVkIGNoYW5nZXMgdG8geW91ciB2aXN1YWxpej0KYXRpb24gd2hpY2ggd2ls
bCBiZSBsb3N0IGlmIHlvdSBkbyBub3Qgc2F2ZSB0aGVtLiIsYnV0dG9uczp7Q2FuY2VsOmZ1bmN0
aW9uPQooKXtHYWxheHkubW9kYWwuaGlkZSgpfSwiTGVhdmUgd2l0aG91dCBTYXZpbmciOmZ1bmN0
aW9uKCl7JCh3aW5kb3cpLm9mZigiYmU9CmZvcmV1bmxvYWQiKTt3aW5kb3cubG9jYXRpb249M0Rn
YWxheHlfY29uZmlnLnJvb3QrInZpc3VhbGl6YXRpb24ifSxTYXZlOmZ1bj0KY3Rpb24oKXskLndo
ZW4oai5zYXZlX3ZpeigpKS50aGVuKGZ1bmN0aW9uKCl7d2luZG93LmxvY2F0aW9uPTNEZ2FsYXh5
X2NvbmZpPQpnLnJvb3QrInZpc3VhbGl6YXRpb24ifSl9fX0pfWVsc2V7d2luZG93LmxvY2F0aW9u
PTNEZ2FsYXh5X2NvbmZpZy5yb290KyJ2aXM9CnVhbGl6YXRpb24ifX19KTt2YXIgZz0zRGYuQmFj
a2JvbmUuVmlldy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oKXt1aT0zRD0KbmV3IGUoZ2Fs
YXh5X2NvbmZpZy5yb290KTt1aS5jcmVhdGVCdXR0b25NZW51KCk7dWkuYnV0dG9uTWVudS4kZWwu
YXR0cigic3R5PQpsZSIsImZsb2F0OiByaWdodCIpOyQoIiNjZW50ZXIgLnVuaWZpZWQtcGFuZWwt
aGVhZGVyLWlubmVyIikuYXBwZW5kKHVpLmJ1dHQ9Cm9uTWVudS4kZWwpOyQoIiNyaWdodCAudW5p
ZmllZC1wYW5lbC10aXRsZSIpLmFwcGVuZCgiQm9va21hcmtzIik7JCgiI3JpZ2h0ID0KLnVuaWZp
ZWQtcGFuZWwtaWNvbnMiKS5hcHBlbmQoIjxhIGlkPTNEJ2FkZC1ib29rbWFyay1idXR0b24nIGNs
YXNzPTNEJ2ljb24tPQpidXR0b24gbWVudS1idXR0b24gcGx1cy1idXR0b24nIGhyZWY9M0QnamF2
YXNjcmlwdDp2b2lkKDApOycgdGl0bGU9M0QnQWRkIGI9Cm9va21hcmsnPjwvYT4iKTskKCIjcmln
aHQtYm9yZGVyIikuY2xpY2soZnVuY3Rpb24oKXt2aWV3LnJlc2l6ZV93aW5kb3coKX0pOz0KZm9y
Y2VfcmlnaHRfcGFuZWwoImhpZGUiKTtpZihnYWxheHlfY29uZmlnLmFwcC5pZCl7dGhpcy52aWV3
X2V4aXN0aW5nKCl9ZWxzPQple3RoaXMudmlld19uZXcoKX19LHZpZXdfZXhpc3Rpbmc6ZnVuY3Rp
b24oKXt2YXIgaD0zRGdhbGF4eV9jb25maWcuYXBwLnZpel89CmNvbmZpZzt2aWV3PTNEdWkuY3Jl
YXRlX3Zpc3VhbGl6YXRpb24oe2NvbnRhaW5lcjokKCIjY2VudGVyIC51bmlmaWVkLXBhbmVsLT0K
Ym9keSIpLG5hbWU6aC50aXRsZSx2aXNfaWQ6aC52aXNfaWQsZGJrZXk6aC5kYmtleX0saC52aWV3
cG9ydCxoLnRyYWNrcyxoLmJvPQpva21hcmtzLHRydWUpO3RoaXMuaW5pdF9lZGl0b3IoKX0sdmll
d19uZXc6ZnVuY3Rpb24oKXt2YXIgaD0zRHRoaXM7JC5hamF4KHs9CnVybDpnYWxheHlfY29uZmln
LnJvb3QrImFwaS9nZW5vbWVzP2Nocm9tX2luZm89M0RUcnVlIixkYXRhOnt9LGVycm9yOmZ1bmN0
aT0Kb24oKXthbGVydCgiQ291bGRuJ3QgY3JlYXRlIG5ldyBicm93c2VyLiIpfSxzdWNjZXNzOmZ1
bmN0aW9uKGope0dhbGF4eS5tb2RhPQpsLnNob3coe3RpdGxlOiJOZXcgVmlzdWFsaXphdGlvbiIs
Ym9keTpoLnRlbXBsYXRlX3ZpZXdfbmV3KGopLGJ1dHRvbnM6e0NhbmM9CmVsOmZ1bmN0aW9uKCl7
d2luZG93LmxvY2F0aW9uPTNEZ2FsYXh5X2NvbmZpZy5yb290KyJ2aXN1YWxpemF0aW9uL2xpc3Qi
fSxDcj0KZWF0ZTpmdW5jdGlvbigpe2guY3JlYXRlX2Jyb3dzZXIoJCgiI25ldy10aXRsZSIpLnZh
bCgpLCQoIiNuZXctZGJrZXkiKS52YWwoPQopKTtHYWxheHkubW9kYWwuaGlkZSgpfX19KTtpZihn
YWxheHlfY29uZmlnLmFwcC5kZWZhdWx0X2Ria2V5KXskKCIjbmV3LWRia2U9CnkiKS52YWwoZ2Fs
YXh5X2NvbmZpZy5hcHAuZGVmYXVsdF9kYmtleSl9JCgiI25ldy10aXRsZSIpLmZvY3VzKCk7JCgi
c2VsZWN0Wz0KbmFtZT0zRCdkYmtleSddIikuc2VsZWN0MigpOyQoIiNvdmVybGF5IikuY3NzKCJv
dmVyZmxvdyIsImF1dG8iKX19KX0sdGVtcGxhPQp0ZV92aWV3X25ldzpmdW5jdGlvbihoKXt2YXIg
az0zRCc8Zm9ybSBpZD0zRCJuZXctYnJvd3Nlci1mb3JtIiBhY3Rpb249M0QiamE9CnZhc2NyaXB0
OnZvaWQoMCk7IiBtZXRob2Q9M0QicG9zdCIgb25zdWJtaXQ9M0QicmV0dXJuIGZhbHNlOyI+PGRp
diBjbGFzcz0zRD0KImZvcm0tcm93Ij48bGFiZWwgZm9yPTNEIm5ldy10aXRsZSI+QnJvd3NlciBu
YW1lOjwvbGFiZWw+PGRpdiBjbGFzcz0zRCJmb3JtPQotcm93LWlucHV0Ij48aW5wdXQgdHlwZT0z
RCJ0ZXh0IiBuYW1lPTNEInRpdGxlIiBpZD0zRCJuZXctdGl0bGUiIHZhbHVlPTNEIlU9Cm5uYW1l
ZCI+PC9pbnB1dD48L2Rpdj48ZGl2IHN0eWxlPTNEImNsZWFyOiBib3RoOyI+PC9kaXY+PC9kaXY+
PGRpdiBjbGFzcz0zRD0KImZvcm0tcm93Ij48bGFiZWwgZm9yPTNEIm5ldy1kYmtleSI+UmVmZXJl
bmNlIGdlbm9tZSBidWlsZCAoZGJrZXkpOiA8L2xhYmVsPQo+PGRpdiBjbGFzcz0zRCJmb3JtLXJv
dy1pbnB1dCI+PHNlbGVjdCBuYW1lPTNEImRia2V5IiBpZD0zRCJuZXctZGJrZXkiPic7Zm89CnIo
dmFyIGo9M0QwO2o8aC5sZW5ndGg7aisrKXtrKz0zRCc8b3B0aW9uIHZhbHVlPTNEIicraFtqXVsx
XSsnIj4nK2hbal1bMF0rIj0KPC9vcHRpb24+In1rKz0zRCc8L3NlbGVjdD48L2Rpdj48ZGl2IHN0
eWxlPTNEImNsZWFyOiBib3RoOyI+PC9kaXY+PC9kaXY+PGRpPQp2IGNsYXNzPTNEImZvcm0tcm93
Ij5JcyB0aGUgYnVpbGQgbm90IGxpc3RlZCBoZXJlPyA8YSBocmVmPTNEIicrZ2FsYXh5X2NvbmY9
CmlnLnJvb3QrJ3VzZXIvZGJrZXlzP3VzZV9wYW5lbHM9M0RUcnVlIj5BZGQgYSBDdXN0b20gQnVp
bGQ8L2E+PC9kaXY+PC9mb3JtPj0KJztyZXR1cm4ga30sY3JlYXRlX2Jyb3dzZXI6ZnVuY3Rpb24o
aixoKXskKGRvY3VtZW50KS50cmlnZ2VyKCJjb252ZXJ0X3RvX3ZhPQpsdWVzIik7dmlldz0zRHVp
LmNyZWF0ZV92aXN1YWxpemF0aW9uKHtjb250YWluZXI6JCgiI2NlbnRlciAudW5pZmllZC1wYW5l
bC09CmJvZHkiKSxuYW1lOmosZGJrZXk6aH0sZ2FsYXh5X2NvbmZpZy5hcHAuZ2VuZV9yZWdpb24p
O3RoaXMuaW5pdF9lZGl0b3IoKTt2aT0KZXcuZWRpdG9yPTNEdHJ1ZX0saW5pdF9lZGl0b3I6ZnVu
Y3Rpb24oKXskKCIjY2VudGVyIC51bmlmaWVkLXBhbmVsLXRpdGxlIikuPQp0ZXh0KHZpZXcuY29u
ZmlnLmdldF92YWx1ZSgibmFtZSIpKyIgKCIrdmlldy5kYmtleSsiKSIpO2lmKGdhbGF4eV9jb25m
aWcuYXA9CnAuYWRkX2RhdGFzZXQpeyQuYWpheCh7dXJsOmdhbGF4eV9jb25maWcucm9vdCsiYXBp
L2RhdGFzZXRzLyIrZ2FsYXh5X2NvbmZpZz0KLmFwcC5hZGRfZGF0YXNldCxkYXRhOntoZGFfbGRk
YToiaGRhIixkYXRhX3R5cGU6InRyYWNrX2NvbmZpZyJ9LGRhdGFUeXBlOiJqPQpzb24iLHN1Y2Nl
c3M6ZnVuY3Rpb24oaCl7dmlldy5hZGRfZHJhd2FibGUoYS5vYmplY3RfZnJvbV90ZW1wbGF0ZSho
LHZpZXcsdmk9CmV3KSl9fSl9JCgiI2FkZC1ib29rbWFyay1idXR0b24iKS5jbGljayhmdW5jdGlv
bigpe3ZhciBqPTNEdmlldy5jaHJvbSsiOiIrdj0KaWV3LmxvdysiLSIrdmlldy5oaWdoLGg9M0Qi
Qm9va21hcmsgZGVzY3JpcHRpb24iO3JldHVybiB1aS5hZGRfYm9va21hcmsoaixoPQosdHJ1ZSl9
KTt1aS5pbml0X2tleWJvYXJkX25hdih2aWV3KTskKHdpbmRvdykub24oImJlZm9yZXVubG9hZCIs
ZnVuY3Rpb24oKXs9CmlmKHZpZXcuaGFzX2NoYW5nZXMpe3JldHVybiJUaGVyZSBhcmUgdW5zYXZl
ZCBjaGFuZ2VzIHRvIHlvdXIgdmlzdWFsaXphdGlvbj0KIHRoYXQgd2lsbCBiZSBsb3N0IGlmIHlv
dSBsZWF2ZSB0aGlzIHBhZ2UuIn19KX19KTtyZXR1cm57VHJhY2tzdGVyVUk6ZSxHYWxhPQp4eUFw
cDpnfX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCmRpZmYgLXIgN2E5MGQ0MDUzMTNk
ZDRlMzcxZWUxMzkyNzk3YmEwMjlhMmEwNWIxMSAtciAxNTk2MmIzZDlhYWMwNjFlOTU0MWY4MT0K
NzVjOGQyZTJiYzRiYTVjYWIgc3RhdGljL3NjcmlwdHMvdml6L3RyYWNrc3Rlci5qcwotLS0gYS9z
dGF0aWMvc2NyaXB0cy92aXovdHJhY2tzdGVyLmpzCisrKyBiL3N0YXRpYy9zY3JpcHRzL3Zpei90
cmFja3N0ZXIuanMKQEAgLTEyLDcgKzEyLDYgQEAKIFsKICAgICAvLyBsb2FkIGpzIGxpYnJhcmll
cwogICAgICd1dGlscy91dGlscycsCi0gICAgJ212Yy91aS9pY29uLWJ1dHRvbicsCiAgICAgJ2xp
YnMvanF1ZXJ5L2pxdWVyeS5ldmVudC5kcmFnJywKICAgICAnbGlicy9qcXVlcnkvanF1ZXJ5LmV2
ZW50LmhvdmVyJywKICAgICAnbGlicy9qcXVlcnkvanF1ZXJ5Lm1vdXNld2hlZWwnLApAQCAtMzIs
OSArMzEsOCBAQAogfSk7Cj0yMAogLy8gdHJhY2tzdGVyIHZpZXdlcgotZGVmaW5lKCBbImxpYnMv
dW5kZXJzY29yZSIsICJiYXNlIiwgInZpei90cmFja3N0ZXIvdHJhY2tzIiwgInZpei92aXN1YWxp
emE9CnRpb24iXSw9MjAKLSAgICAgICAgZnVuY3Rpb24oXywgYmFzZSwgdHJhY2tzLCB2aXN1YWxp
emF0aW9uKSB7Ci0KK2RlZmluZSggWyJsaWJzL3VuZGVyc2NvcmUiLCAiYmFzZSIsICJ2aXovdHJh
Y2tzdGVyL3RyYWNrcyIsICJ2aXovdmlzdWFsaXphPQp0aW9uIiwgIm12Yy91aS9pY29uLWJ1dHRv
biIgXSwKKyAgICAgICAgZnVuY3Rpb24oXywgYmFzZSwgdHJhY2tzLCB2aXN1YWxpemF0aW9uLCBt
b2RfaWNvbl9idG4pIHsKIC8qKgogICogVXNlciBpbnRlcmZhY2UgY29udHJvbHMgZm9yIHRyYWNr
c3Rlcj0yMAogICovCgpkaWZmIC1yIDdhOTBkNDA1MzEzZGQ0ZTM3MWVlMTM5Mjc5N2JhMDI5YTJh
MDViMTEgLXIgMTU5NjJiM2Q5YWFjMDYxZTk1NDFmODE9Cjc1YzhkMmUyYmM0YmE1Y2FiIHRlbXBs
YXRlcy90YWdnaW5nX2NvbW1vbi5tYWtvCi0tLSBhL3RlbXBsYXRlcy90YWdnaW5nX2NvbW1vbi5t
YWtvCisrKyBiL3RlbXBsYXRlcy90YWdnaW5nX2NvbW1vbi5tYWtvCkBAIC04OSw3ICs4OSw3IEBA
CiA8JWRlZiBuYW1lPTNEInJlbmRlcl90b29sX3RhZ2dpbmdfZWxlbWVudHMoKSI+PCUKICAgICAg
ICAgZWx0X2lkID0zRCBpbnQgKCBmbG9vciAoIHJhbmRvbSgpKm1heGludCApICkKLSAgICAgICAg
dGFncyA9M0QgdHJhbnMuYXBwLnRhZ19oYW5kbGVyLmdldF90b29sX3RhZ3MoIHRyYW5zICkKKyAg
ICAgICAgdGFncyA9M0QgdHJhbnMuYXBwLnRhZ19oYW5kbGVyLmdldF90b29sX3RhZ3MoKQogICAg
ICU+CiAgICAgJHtzZWxmLnJlbmRlcl90YWdnaW5nX2VsZW1lbnRfaHRtbChlbHRfaWQ9M0RlbHRf
aWQsIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWdzPTNEdGFn
cywgXAoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0
cy8yZTk5MGNhZWZjOTQvCkNoYW5nZXNldDogICAyZTk5MGNhZWZjOTQKVXNlcjogICAgICAgIGNh
cmxmZWJlcmhhcmQKRGF0ZTogICAgICAgIDIwMTUtMDEtMTMgMTM6NDQ6NDIrMDA6MDAKU3VtbWFy
eTogICAgIE1lcmdlZCBnYWxheHkvZ2FsYXh5LWNlbnRyYWwgaW50byBkZWZhdWx0CkFmZmVjdGVk
ICM6ICAzMSBmaWxlcwoKZGlmZiAtciAxNTk2MmIzZDlhYWMwNjFlOTU0MWY4MTc1YzhkMmUyYmM0
YmE1Y2FiIC1yIDJlOTkwY2FlZmM5NDNlYjJiMWQ0YTk0PQphZjUwOGMyMmJiMzRiN2ZhNiBjbGll
bnQvZ2FsYXh5L3NjcmlwdHMvZ2FsYXh5LndvcmtmbG93X2VkaXRvci5jYW52YXMuanMKLS0tIGEv
Y2xpZW50L2dhbGF4eS9zY3JpcHRzL2dhbGF4eS53b3JrZmxvd19lZGl0b3IuY2FudmFzLmpzCisr
KyBiL2NsaWVudC9nYWxheHkvc2NyaXB0cy9nYWxheHkud29ya2Zsb3dfZWRpdG9yLmNhbnZhcy5q
cwpAQCAtMTA4OSw3ICsxMDg5LDExIEBACiAgICAgICAgIGlmICggdGhpcy5hY3RpdmVfbm9kZSAh
PTNEIG5vZGUgKSB7CiAgICAgICAgICAgICB0aGlzLmNoZWNrX2NoYW5nZXNfaW5fYWN0aXZlX2Zv
cm0oKTsKICAgICAgICAgICAgIHRoaXMuY2xlYXJfYWN0aXZlX25vZGUoKTsKLSAgICAgICAgICAg
IHBhcmVudC5zaG93X2Zvcm1fZm9yX3Rvb2woIG5vZGUuZm9ybV9odG1sICsgbm9kZS50b29sdGlw
LCBub2RlPQogKTsKKyAgICAgICAgICAgIGlmIChwYXJlbnQuX19ORVdUT09MRk9STV9fKSB7Cisg
ICAgICAgICAgICAgICAgcGFyZW50LnNob3dfZm9ybV9mb3JfdG9vbCggbm9kZS5mb3JtX2h0bWws
IG5vZGUgKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGFyZW50LnNo
b3dfZm9ybV9mb3JfdG9vbCggbm9kZS5mb3JtX2h0bWwgKyBub2RlLnRvb2x0aXAsID0Kbm9kZSAp
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgbm9kZS5tYWtlX2FjdGl2ZSgpOwogICAgICAg
ICAgICAgdGhpcy5hY3RpdmVfbm9kZSA9M0Qgbm9kZTsKICAgICAgICAgfQpAQCAtMTA5OSw3ICsx
MTAzLDExIEBACiAgICAgICAgIGlmICggdGhpcy5hY3RpdmVfbm9kZSA9M0Q9M0Qgbm9kZSAmJiAo
IXBhcmVudC5fX05FV1RPT0xGT1JNX18gfHwgZj0Kb3JjZSkpIHsKICAgICAgICAgICAgIC8vIFJl
YWN0aXZlIHdpdGggbmV3IGZvcm1faHRtbAogICAgICAgICAgICAgdGhpcy5jaGVja19jaGFuZ2Vz
X2luX2FjdGl2ZV9mb3JtKCk7IC8vRm9yY2UgY2hhbmdlcyB0byBiZSBzYXY9CmVkIGV2ZW4gb24g
bmV3IGNvbm5lY3Rpb24gKHByZXZpb3VzbHkgZHVtcGVkKQotICAgICAgICAgICAgcGFyZW50LnNo
b3dfZm9ybV9mb3JfdG9vbCggbm9kZS5mb3JtX2h0bWwgKyBub2RlLnRvb2x0aXAsIG5vZGU9CiAp
OworICAgICAgICAgICAgaWYgKHBhcmVudC5fX05FV1RPT0xGT1JNX18pIHsKKyAgICAgICAgICAg
ICAgICBwYXJlbnQuc2hvd19mb3JtX2Zvcl90b29sKCBub2RlLmZvcm1faHRtbCwgbm9kZSApOwor
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwYXJlbnQuc2hvd19mb3JtX2Zv
cl90b29sKCBub2RlLmZvcm1faHRtbCArIG5vZGUudG9vbHRpcCwgPQpub2RlICk7CisgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9LAogICAgIGxheW91dCA6IGZ1bmN0aW9uICgpIHsKQEAg
LTEzMDUsMTMgKzEzMTMsNiBAQAogICAgIHJldHVybiBub2RlOwogfQo9MjAKLWZ1bmN0aW9uIHVw
ZGF0ZV9ub2RlKCBkYXRhICkgewotICAgIHZhciBub2RlID0zRCB3b3JrZmxvdy5hY3RpdmVfbm9k
ZTsKLSAgICBpZiAobm9kZSkgewotICAgICAgICBub2RlLnVwZGF0ZV9maWVsZF9kYXRhKGRhdGEs
IHRydWUpOwotICAgIH0KLX0KLQogdmFyIGV4dF90b190eXBlID0zRCBudWxsOwogdmFyIHR5cGVf
dG9fdHlwZSA9M0QgbnVsbDsKPTIwCgpkaWZmIC1yIDE1OTYyYjNkOWFhYzA2MWU5NTQxZjgxNzVj
OGQyZTJiYzRiYTVjYWIgLXIgMmU5OTBjYWVmYzk0M2ViMmIxZDRhOTQ9CmFmNTA4YzIyYmIzNGI3
ZmE2IGNsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtZm9ybS1iYXNlLmpzCi0t
LSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtZm9ybS1iYXNlLmpzCisr
KyBiL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtZm9ybS1iYXNlLmpzCkBA
IC0yNzYsNiArMjc2LDExIEBACiAgICAgICAgICAgICAgICAgYnV0dG9ucyA6IHRoaXMuYnV0dG9u
cwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgID0yMAorICAgICAgICAgICAgLy8gcmVtb3Zl
IHBhZGRpbmcKKyAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMud29ya2Zsb3cpIHsKKyAgICAg
ICAgICAgICAgICB0aGlzLnBvcnRsZXQuJGNvbnRlbnQuY3NzKCdwYWRkaW5nJywgJzBweCcpOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICA9MjAKICAgICAgICAgICAgIC8vIGFwcGVuZCBtZXNz
YWdlCiAgICAgICAgICAgICB0aGlzLnBvcnRsZXQuYXBwZW5kKHRoaXMubWVzc2FnZS4kZWwsIHRy
dWUpOwogICAgICAgICAgICA9MjAKCmRpZmYgLXIgMTU5NjJiM2Q5YWFjMDYxZTk1NDFmODE3NWM4
ZDJlMmJjNGJhNWNhYiAtciAyZTk5MGNhZWZjOTQzZWIyYjFkNGE5ND0KYWY1MDhjMjJiYjM0Yjdm
YTYgY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy1mb3JtLXdvcmtmbG93Lmpz
Ci0tLSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtZm9ybS13b3JrZmxv
dy5qcworKysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLWZvcm0td29y
a2Zsb3cuanMKQEAgLTcsOCArNywxOTkgQEAKICAgICAvLyBjcmVhdGUgZm9ybSB2aWV3CiAgICAg
dmFyIFZpZXcgPTNEIFRvb2xGb3JtQmFzZS5leHRlbmQoewogICAgICAgICBpbml0aWFsaXplOiBm
dW5jdGlvbihvcHRpb25zKSB7CisgICAgICAgICAgICAvLyBsaW5rIHdpdGggbm9kZSByZXByZXNl
bnRhdGlvbiBpbiB3b3JrZmxvdyBtb2R1bGUKKyAgICAgICAgICAgIHRoaXMubm9kZSA9M0Qgd29y
a2Zsb3cuYWN0aXZlX25vZGU7CisgICAgICAgICAgICBpZiAoIXRoaXMubm9kZSkgeworICAgICAg
ICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ0ZBSUxFRCAtIHRvb2xzLWZvcm0td29ya2Zsb3c6aW5p
dGlhbGl6ZSgpIC09CiBOb2RlIG5vdCBmb3VuZCBpbiB3b3JrZmxvdy4nKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgID0yMAorICAgICAgICAgICAg
Ly8gaW5pdGlhbGl6ZSBwYXJhbWV0ZXJzCiAgICAgICAgICAgICB0aGlzLndvcmtmbG93ID0zRCB0
cnVlOwotICAgICAgICAgICAgVG9vbEZvcm1CYXNlLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwo
dGhpcywgb3B0aW9ucyk7CisgICAgICAgICAgICB0aGlzLm9wdGlvbnMgPTNEIG9wdGlvbnM7CisK
KyAgICAgICAgICAgIC8vIGxvYWQgZXh0ZW5zaW9uCisgICAgICAgICAgICB2YXIgc2VsZiA9M0Qg
dGhpczsKKyAgICAgICAgICAgIFV0aWxzLmdldCh7CisgICAgICAgICAgICAgICAgdXJsICAgICA6
IGdhbGF4eV9jb25maWcucm9vdCArICdhcGkvZGF0YXR5cGVzJywKKyAgICAgICAgICAgICAgICBj
YWNoZSAgIDogdHJ1ZSwKKyAgICAgICAgICAgICAgICBzdWNjZXNzIDogZnVuY3Rpb24oZGF0YXR5
cGVzKSB7CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YXR5cGVzID0zRCBkYXRhdHlwZXM7
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX21ha2VTZWN0aW9ucyhvcHRpb25zLmlucHV0cyk7
CisgICAgICAgICAgICAgICAgICAgIFRvb2xGb3JtQmFzZS5wcm90b3R5cGUuaW5pdGlhbGl6ZS5j
YWxsKHNlbGYsIG9wdGlvbnMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9LAorICAgICAgID0yMAorICAgICAgICAvKiogQnVpbGRzIGFsbCBzdWIgc2VjdGlv
bnMKKyAgICAgICAgKi8KKyAgICAgICAgX21ha2VTZWN0aW9uczogZnVuY3Rpb24oaW5wdXRzKXsK
KyAgICAgICAgICAgIC8vIGZvciBhbm5vdGF0aW9uCisgICAgICAgICAgICBpbnB1dHNbVXRpbHMu
dXVpZCgpXSA9M0QgeworICAgICAgICAgICAgICAgIGxhYmVsICAgOiAnRWRpdCBTdGVwIEF0dHJp
YnV0ZXMnLAorICAgICAgICAgICAgICAgIHR5cGUgICAgOiAnc2VjdGlvbicsCisgICAgICAgICAg
ICAgICAgaW5wdXRzICA6IFt7CisgICAgICAgICAgICAgICAgICAgIGxhYmVsICAgOiAnQW5ub3Rh
dGlvbiAvIE5vdGVzJywKKyAgICAgICAgICAgICAgICAgICAgbmFtZSAgICA6ICdhbm5vdGF0aW9u
JywKKyAgICAgICAgICAgICAgICAgICAgdHlwZSAgICA6ICd0ZXh0JywKKyAgICAgICAgICAgICAg
ICAgICAgYXJlYSAgICA6IHRydWUsCisgICAgICAgICAgICAgICAgICAgIGhlbHAgICAgOiAnQWRk
IGFuIGFubm90YXRpb24gb3Igbm90ZXMgdG8gdGhpcyBzdGVwOyBhbj0Kbm90YXRpb25zIGFyZSBh
dmFpbGFibGUgd2hlbiBhIHdvcmtmbG93IGlzIHZpZXdlZC4nLAorICAgICAgICAgICAgICAgICAg
ICB2YWx1ZSAgIDogdGhpcy5ub2RlLmFubm90YXRpb24KKyAgICAgICAgICAgICAgICB9XQorICAg
ICAgICAgICAgfQorICAgICAgICAgICA9MjAKKyAgICAgICAgICAgIC8vIGZvciBhY3Rpb25zCisg
ICAgICAgICAgICB0aGlzLnBvc3Rfam9iX2FjdGlvbnMgPTNEIHRoaXMubm9kZS5wb3N0X2pvYl9h
Y3Rpb25zOworICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB0aGlzLm5vZGUub3V0cHV0X3Rlcm1p
bmFscykgeworICAgICAgICAgICAgICAgIGlucHV0c1tVdGlscy51dWlkKCldID0zRCB0aGlzLl9t
YWtlU2VjdGlvbihpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICA9MjAKKyAg
ICAgICAgLyoqIEJ1aWxkcyBzdWIgc2VjdGlvbiB3aXRoIHN0ZXAgYWN0aW9ucy9hbm5vdGF0aW9u
CisgICAgICAgICovCisgICAgICAgIF9tYWtlU2VjdGlvbjogZnVuY3Rpb24ob3V0cHV0X2lkKXsK
KyAgICAgICAgICAgIC8vIGZvcm1hdCBkYXRhdHlwZXMKKyAgICAgICAgICAgIHZhciBleHRlbnNp
b25zID0zRCBbXTsKKyAgICAgICAgICAgIGZvciAoa2V5IGluIHRoaXMuZGF0YXR5cGVzKSB7Cisg
ICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5wdXNoKHsKKyAgICAgICAgICAgICAgICAgICAgMCA6
IHRoaXMuZGF0YXR5cGVzW2tleV0sCisgICAgICAgICAgICAgICAgICAgIDEgOiB0aGlzLmRhdGF0
eXBlc1trZXldCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ID0yMAorICAgICAgICAgICAgLy8gc29ydCBleHRlbnNpb25zCisgICAgICAgICAgICBleHRlbnNp
b25zLnNvcnQoZnVuY3Rpb24oYSwgYikgeworICAgICAgICAgICAgICAgIHJldHVybiBhLmxhYmVs
ID4gYi5sYWJlbCA/IDEgOiBhLmxhYmVsIDwgYi5sYWJlbCA/IC0xIDogMDsKKyAgICAgICAgICAg
IH0pOworICAgICAgICAgICA9MjAKKyAgICAgICAgICAgIC8vIGFkZCBhZGRpdGlvbmFsIG9wdGlv
bnMKKyAgICAgICAgICAgIGV4dGVuc2lvbnMudW5zaGlmdCh7CisgICAgICAgICAgICAgICAgMCA6
ICdTZXF1ZW5jZXMnLAorICAgICAgICAgICAgICAgIDEgOiAnU2VxdWVuY2VzJworICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICBleHRlbnNpb25zLnVuc2hpZnQoeworICAgICAgICAgICAgICAg
IDAgOiAnUm9hZG1hcHMnLAorICAgICAgICAgICAgICAgIDEgOiAnUm9hZG1hcHMnCisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIGV4dGVuc2lvbnMudW5zaGlmdCh7CisgICAgICAgICAgICAg
ICAgMCA6ICdMZWF2ZSB1bmNoYW5nZWQnLAorICAgICAgICAgICAgICAgIDEgOiAnTm9uZScKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICA9MjAKKyAgICAgICAgICAgIC8vIGNyZWF0ZSBjdXN0
b20gc3ViIHNlY3Rpb24KKyAgICAgICAgICAgIHZhciBpbnB1dF9jb25maWcgPTNEIHsKKyAgICAg
ICAgICAgICAgICBsYWJlbCAgIDogJ0VkaXQgU3RlcCBBY3Rpb246IFwnJyArIG91dHB1dF9pZCAr
ICdcJycsCisgICAgICAgICAgICAgICAgdHlwZSAgICA6ICdzZWN0aW9uJywKKyAgICAgICAgICAg
ICAgICBpbnB1dHMgIDogW3sKKyAgICAgICAgICAgICAgICAgICAgYWN0aW9uICAgICAgOiAnUmVu
YW1lRGF0YXNldEFjdGlvbicsCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50ICAgIDogJ25l
d25hbWUnLAorICAgICAgICAgICAgICAgICAgICBsYWJlbCAgICAgICA6ICdSZW5hbWUgZGF0YXNl
dCcsCisgICAgICAgICAgICAgICAgICAgIHR5cGUgICAgICAgIDogJ3RleHQnLAorICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSAgICAgICA6ICcnLAorICAgICAgICAgICAgICAgICAgICBpZ25vcmUg
ICAgICA6ICcnLAorICAgICAgICAgICAgICAgICAgICBoZWxwICAgICAgICA6ICdUaGlzIGFjdGlv
biB3aWxsIHJlbmFtZSB0aGUgcmVzdWx0IGRhdGE9CnNldC4gQ2xpY2sgPGEgaHJlZj0zRCJodHRw
czovL3dpa2kuZ2FsYXh5cHJvamVjdC5vcmcvTGVhcm4vQWR2YW5jZWRXb3JrZmxvdz0KL1Zhcmlh
YmxlcyI+aGVyZTwvYT4gZm9yIG1vcmUgaW5mb3JtYXRpb24uJworICAgICAgICAgICAgICAgIH0s
eworICAgICAgICAgICAgICAgICAgICBhY3Rpb24gICAgICA6ICdDaGFuZ2VEYXRhdHlwZUFjdGlv
bicsCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50ICAgIDogJ25ld3R5cGUnLAorICAgICAg
ICAgICAgICAgICAgICBsYWJlbCAgICAgICA6ICdDaGFuZ2UgZGF0YXR5cGUnLAorICAgICAgICAg
ICAgICAgICAgICB0eXBlICAgICAgICA6ICdzZWxlY3QnLAorICAgICAgICAgICAgICAgICAgICBp
Z25vcmUgICAgICA6ICdOb25lJywKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyAgICAgOiBl
eHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgICBoZWxwICAgICAgICA6ICdUaGlzIGFjdGlv
biB3aWxsIGNoYW5nZSB0aGUgZGF0YXR5cGUgb2Y9CiB0aGUgb3V0cHV0IHRvIHRoZSBpbmRpY2F0
ZWQgdmFsdWUuJworICAgICAgICAgICAgICAgIH0seworICAgICAgICAgICAgICAgICAgICBhY3Rp
b24gICAgICA6ICdUYWdEYXRhc2V0QWN0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgYXJndW1l
bnQgICAgOiAndGFncycsCisgICAgICAgICAgICAgICAgICAgIGxhYmVsICAgICAgIDogJ1RhZ3Mn
LAorICAgICAgICAgICAgICAgICAgICB0eXBlICAgICAgICA6ICd0ZXh0JywKKyAgICAgICAgICAg
ICAgICAgICAgdmFsdWUgICAgICAgOiAnJywKKyAgICAgICAgICAgICAgICAgICAgaWdub3JlICAg
ICAgOiAnJywKKyAgICAgICAgICAgICAgICAgICAgaGVscCAgICAgICAgOiAnVGhpcyBhY3Rpb24g
d2lsbCBzZXQgdGFncyBmb3IgdGhlIGRhdGFzPQpldC4nCisgICAgICAgICAgICAgICAgfSx7Cisg
ICAgICAgICAgICAgICAgICAgIGxhYmVsICAgOiAnQXNzaWduIGNvbHVtbnMnLAorICAgICAgICAg
ICAgICAgICAgICB0eXBlICAgIDogJ3NlY3Rpb24nLAorICAgICAgICAgICAgICAgICAgICBpbnB1
dHMgIDogW3sKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiAgICAgIDogJ0NvbHVtblNl
dEFjdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCAgICA6ICdjaHJvbUNv
bCcsCisgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCAgICAgICA6ICdDaHJvbSBjb2x1bW4n
LAorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAgICAgICAgOiAndGV4dCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSAgICAgICA6ICcnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgaWdub3JlICAgICAgOiAnJworICAgICAgICAgICAgICAgICAgICB9LHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFjdGlvbiAgICAgIDogJ0NvbHVtblNldEFjdGlvbicsCisgICAgICAgICAg
ICAgICAgICAgICAgICBhcmd1bWVudCAgICA6ICdzdGFydENvbCcsCisgICAgICAgICAgICAgICAg
ICAgICAgICBsYWJlbCAgICAgICA6ICdTdGFydCBjb2x1bW4nLAorICAgICAgICAgICAgICAgICAg
ICAgICAgdHlwZSAgICAgICAgOiAndGV4dCcsCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZSAgICAgICA6ICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlICAgICAgOiAnJwor
ICAgICAgICAgICAgICAgICAgICB9LHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiAg
ICAgIDogJ0NvbHVtblNldEFjdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVu
dCAgICA6ICdlbmRDb2wnLAorICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgICAgICAgOiAn
RW5kIGNvbHVtbicsCisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICAgICAgICA6ICd0ZXh0
JywKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlICAgICAgIDogJycsCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZ25vcmUgICAgICA6ICcnCisgICAgICAgICAgICAgICAgICAgIH0sewor
ICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uICAgICAgOiAnQ29sdW1uU2V0QWN0aW9uJywK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50ICAgIDogJ3N0cmFuZENvbCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICBsYWJlbCAgICAgICA6ICdTdHJhbmQgY29sdW1uJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHR5cGUgICAgICAgIDogJ3RleHQnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsdWUgICAgICAgOiAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9y
ZSAgICAgIDogJycKKyAgICAgICAgICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhY3Rpb24gICAgICA6ICdDb2x1bW5TZXRBY3Rpb24nLAorICAgICAgICAgICAgICAgICAg
ICAgICAgYXJndW1lbnQgICAgOiAnbmFtZUNvbCcsCisgICAgICAgICAgICAgICAgICAgICAgICBs
YWJlbCAgICAgICA6ICdOYW1lIGNvbHVtbicsCisgICAgICAgICAgICAgICAgICAgICAgICB0eXBl
ICAgICAgICA6ICd0ZXh0JywKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlICAgICAgIDog
JycsCisgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUgICAgICA6ICcnCisgICAgICAgICAg
ICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgICAgICBoZWxwICAgIDogJ1RoaXMgYWN0aW9u
IHdpbGwgc2V0IGNvbHVtbiBhc3NpZ25tZW50cyBpbiA9CnRoZSBvdXRwdXQgZGF0YXNldC4gQmxh
bmsgZmllbGRzIGFyZSBpZ25vcmVkLicKKyAgICAgICAgICAgICAgICB9LHsKKyAgICAgICAgICAg
ICAgICAgICAgYWN0aW9uICAgICAgOiAnRW1haWxBY3Rpb24nLAorICAgICAgICAgICAgICAgICAg
ICBsYWJlbCAgICAgICA6ICdFbWFpbCBub3RpZmljYXRpb24nLAorICAgICAgICAgICAgICAgICAg
ICB0eXBlICAgICAgICA6ICdib29sZWFuJywKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgICAg
ICAgOiAnZmFsc2UnLAorICAgICAgICAgICAgICAgICAgICBpZ25vcmUgICAgICA6ICdmYWxzZScs
CisgICAgICAgICAgICAgICAgICAgIGhlbHAgICAgICAgIDogJ1RoaXMgYWN0aW9uIHdpbGwgc2Vu
ZCBhbiBlbWFpbCBub3RpZnlpbj0KZyB5b3Ugd2hlbiB0aGUgam9iIGlzIGRvbmUuJworICAgICAg
ICAgICAgICAgIH0seworICAgICAgICAgICAgICAgICAgICBhY3Rpb24gICAgICA6ICdEZWxldGVJ
bnRlcm1lZGlhdGVzQWN0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgbGFiZWwgICAgICAgOiAn
RGVsZXRlIG5vbi1vdXRwdXRzJywKKyAgICAgICAgICAgICAgICAgICAgdHlwZSAgICAgICAgOiAn
Ym9vbGVhbicsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlICAgICAgIDogJ2ZhbHNlJywKKyAg
ICAgICAgICAgICAgICAgICAgaWdub3JlICAgICAgOiAnZmFsc2UnLAorICAgICAgICAgICAgICAg
ICAgICBoZWxwICAgICAgICA6ICdBbGwgbm9uLW91dHB1dCBzdGVwcyBvZiB0aGlzIHdvcmtmbG93
IHc9CmlsbCBoYXZlIGRhdGFzZXRzIGRlbGV0ZWQgaWYgdGhleSBhcmUgbm8gbG9uZ2VyIGJlaW5n
IHVzZWQgYXMgam9iIGlucHV0cyB3aD0KZW4gdGhlIGpvYiB0aGlzIGFjdGlvbiBpcyBhdHRhY2hl
ZCB0byBpcyBmaW5pc2hlZC4gWW91ICptdXN0KiBiZSB1c2luZyB3b3JrPQpmbG93IG91dHB1dHMg
KHRoZSBzbm93Zmxha2UpIGluIHlvdXIgd29ya2Zsb3cgZm9yIHRoaXMgdG8gaGF2ZSBhbnkgZWZm
ZWN0LicKKyAgICAgICAgICAgICAgICB9XQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgPTIw
CisgICAgICAgICAgICAvLyB2aXNpdCBpbnB1dCBub2RlcyBhbmQgZW5yaWNoIGJ5IG5hbWUvdmFs
dWUgcGFpcnMgZnJvbSBzZXJ2ZT0KciBkYXRhCisgICAgICAgICAgICB2YXIgc2VsZiA9M0QgdGhp
czsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHZpc2l0IChpbnB1dHMpIHsKKyAgICAgICAgICAgICAg
ICBmb3IgKHZhciBpIGluIGlucHV0cykgeworICAgICAgICAgICAgICAgICAgICB2YXIgaW5wdXQg
PTNEIGlucHV0c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmFjdGlvbikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQubmFtZSA9M0QgJ3BqYV9fJyArIG91dHB1dF9p
ZCArICdfXycgKyBpbnB1dC49CmFjdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChp
bnB1dC5hcmd1bWVudCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Lm5hbWUg
Kz0zRCAnX18nICsgaW5wdXQuYXJndW1lbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9M0Qgc2VsZi5wb3N0X2pvYl9hY3Rpb25zW2lu
cHV0LmFjdGlvbiArIG91dD0KcHV0X2lkXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChk
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmFyZ3VtZW50KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlID0zRCBkLmFjdGlvbl9h
cmd1bWVudHMgJiYgZC5hYz0KdGlvbl9hcmd1bWVudHNbaW5wdXQuYXJndW1lbnRdIHx8IGlucHV0
LnZhbHVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlID0zRCAndHJ1ZSc7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0Lmlu
cHV0cykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0KGlucHV0LmlucHV0cyk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2aXNpdChpbnB1dF9jb25m
aWcuaW5wdXRzKTsKKyAgICAgICAgICAgPTIwCisgICAgICAgICAgICAvLyByZXR1cm4gZmluYWwg
Y29uZmlndXJhdGlvbgorICAgICAgICAgICAgcmV0dXJuIGlucHV0X2NvbmZpZzsKICAgICAgICAg
fSwKICAgICAgICA9MjAKICAgICAgICAgLyoqIEJ1aWxkcyBhIG5ldyBtb2RlbCB0aHJvdWdoIGFw
aSBjYWxsIGFuZCByZWNyZWF0ZXMgdGhlIGVudGlyZSBmPQpvcm0KQEAgLTM4LDE1ICsyMjksMTYg
QEAKICAgICAgICAgICAgICAgICB0eXBlICAgIDogJ0dFVCcsCiAgICAgICAgICAgICAgICAgdXJs
ICAgICA6IG1vZGVsX3VybCwKICAgICAgICAgICAgICAgICBkYXRhICAgIDogY3VycmVudF9zdGF0
ZSwKLSAgICAgICAgICAgICAgICBzdWNjZXNzIDogZnVuY3Rpb24obm9kZSkgewotICAgICAgICAg
ICAgICAgICAgICBwYXJlbnQudXBkYXRlX25vZGUobm9kZSk7CisgICAgICAgICAgICAgICAgc3Vj
Y2VzcyA6IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlIG5v
ZGUgaW4gd29ya2Zsb3cgbW9kdWxlCisgICAgICAgICAgICAgICAgICAgIHNlbGYubm9kZS51cGRh
dGVfZmllbGRfZGF0YShkYXRhLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICA9MjAKICAgICAg
ICAgICAgICAgICAgICAgLy8gcHJvY2VzcyBjb21wbGV0ZWQKICAgICAgICAgICAgICAgICAgICAg
c2VsZi5kZWZlcnJlZC5kb25lKHByb2Nlc3NfaWQpOwogICAgICAgICAgICA9MjAKICAgICAgICAg
ICAgICAgICAgICAgLy8gbG9nIHN1Y2Nlc3MKICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5k
ZWJ1ZygndG9vbHMtZm9ybTo6X3JlZnJlc2hGb3JtKCkgLSBTdGF0ZXMgcmVmPQpyZXNoZWQuJyk7
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcobm9kZSk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnNvbGUuZGVidWcoZGF0YSk7CiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAg
ICAgICAgICBlcnJvciAgIDogZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgICAg
ICAgLy8gcHJvY2VzcyBjb21wbGV0ZWQKCmRpZmYgLXIgMTU5NjJiM2Q5YWFjMDYxZTk1NDFmODE3
NWM4ZDJlMmJjNGJhNWNhYiAtciAyZTk5MGNhZWZjOTQzZWIyYjFkNGE5ND0KYWY1MDhjMjJiYjM0
YjdmYTYgY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy1zZWN0aW9uLmpzCi0t
LSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtc2VjdGlvbi5qcworKysg
Yi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLXNlY3Rpb24uanMKQEAgLTEs
OCArMSw4IEBACiAvKioKICAgICBUaGlzIGNsYXNzIGNyZWF0ZXMgYSB0b29sIGZvcm0gc2VjdGlv
biBhbmQgcG9wdWxhdGVzIGl0IHdpdGggaW5wdXQgZWxlPQptZW50cy4gSXQgYWxzbyBoYW5kbGVz
IHJlcGVhdCBibG9ja3MgYW5kIGNvbmRpdGlvbmFscyBieSByZWN1cnNpdmVseSBjcmVhdGk9Cm5n
IG5ldyBzdWIgc2VjdGlvbnMuIE5ldyBpbnB1dCBlbGVtZW50cyBjYW4gYmUgcGx1Z2dlZCBpbiBi
eSBhZGRpbmcgY2FzZXMgdD0KbyB0aGUgc3dpdGNoIGJsb2NrIGRlZmluZWQgaW4gdGhlIF9jcmVh
dGVGaWVsZCgpIGZ1bmN0aW9uLgogKi8KLWRlZmluZShbJ3V0aWxzL3V0aWxzJywgJ212Yy91aS91
aS10YWJsZScsICdtdmMvdWkvdWktbWlzYycsICdtdmMvdG9vbHMvdG9vPQpscy1yZXBlYXQnLCAn
bXZjL3Rvb2xzL3Rvb2xzLXNlbGVjdC1jb250ZW50JywgJ212Yy90b29scy90b29scy1pbnB1dCdd
LAotICAgIGZ1bmN0aW9uKFV0aWxzLCBUYWJsZSwgVWksIFJlcGVhdCwgU2VsZWN0Q29udGVudCwg
SW5wdXRFbGVtZW50KSB7CitkZWZpbmUoWyd1dGlscy91dGlscycsICdtdmMvdWkvdWktdGFibGUn
LCAnbXZjL3VpL3VpLW1pc2MnLCAnbXZjL3VpL3VpLXBvcj0KdGxldCcsICdtdmMvdG9vbHMvdG9v
bHMtcmVwZWF0JywgJ212Yy90b29scy90b29scy1zZWxlY3QtY29udGVudCcsICdtdmMvdG9vPQps
cy90b29scy1pbnB1dCddLAorICAgIGZ1bmN0aW9uKFV0aWxzLCBUYWJsZSwgVWksIFBvcnRsZXQs
IFJlcGVhdCwgU2VsZWN0Q29udGVudCwgSW5wdXRFbGVtZW49CnQpIHsKPTIwCiAgICAgLy8gY3Jl
YXRlIGZvcm0gdmlldwogICAgIHZhciBWaWV3ID0zRCBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7CkBA
IC0zNiwxMyArMzYsMTMgQEAKICAgICAgICAgICAgPTIwCiAgICAgICAgICAgICAvLyBsb2FkIHNl
dHRpbmdzIGVsZW1lbnRzIGludG8gdGFibGUKICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gdGhp
cy5pbnB1dHMpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9hZGQodGhpcy5pbnB1dHNbaV0pOwor
ICAgICAgICAgICAgICAgIHRoaXMuYWRkKHRoaXMuaW5wdXRzW2ldKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSwKICAgICAgICA9MjAKICAgICAgICAgLyoqIEFkZCBhIG5ldyBpbnB1dCBlbGVt
ZW50CiAgICAgICAgICovCi0gICAgICAgIF9hZGQ6IGZ1bmN0aW9uKGlucHV0KSB7CisgICAgICAg
IGFkZDogZnVuY3Rpb24oaW5wdXQpIHsKICAgICAgICAgICAgIC8vIGxpbmsgdGhpcwogICAgICAg
ICAgICAgdmFyIHNlbGYgPTNEIHRoaXM7CiAgICAgICAgICAgID0yMApAQCAtNjYsNiArNjYsMTAg
QEAKICAgICAgICAgICAgICAgICBjYXNlICdyZXBlYXQnOgogICAgICAgICAgICAgICAgICAgICB0
aGlzLl9hZGRSZXBlYXQoaW5wdXRfZGVmKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgLy8gY3VzdG9taXplZCBzZWN0aW9uCisgICAgICAgICAgICAgICAgY2Fz
ZSAnc2VjdGlvbic6CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FkZFNlY3Rpb24oaW5wdXRf
ZGVmKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgLy8gZGVm
YXVsdCBzaW5nbGUgZWxlbWVudCByb3cKICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgICAgICAgICB0aGlzLl9hZGRSb3coaW5wdXRfZGVmKTsKQEAgLTEwMyw4ICsxMDcsNyBA
QAogICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiBub24taGlkZGVuIGVsZW1lbnRzIGV4
aXN0CiAgICAgICAgICAgICAgICAgICAgIHZhciBub25oaWRkZW4gPTNEIGZhbHNlOwogICAgICAg
ICAgICAgICAgICAgICBmb3IgKHZhciBqIGluIGNhc2VfZGVmLmlucHV0cykgewotICAgICAgICAg
ICAgICAgICAgICAgICAgdmFyIHR5cGUgPTNEIGNhc2VfZGVmLmlucHV0c1tqXS50eXBlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgJiYgdHlwZSAhPTNEPTNEICdoaWRkZW4nKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNhc2VfZGVmLmlucHV0c1tqXS5oaWRkZW4p
IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25oaWRkZW4gPTNEIHRydWU7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICB9
CkBAIC0yNDQsNiArMjQ3LDU4IEBACiAgICAgICAgICAgICB0aGlzLnRhYmxlLmFwcGVuZChpbnB1
dF9kZWYuaWQpOwogICAgICAgICB9LAogICAgICAgID0yMAorICAgICAgICAvKiogQWRkIGEgY3Vz
dG9taXplZCBzZWN0aW9uCisgICAgICAgICovCisgICAgICAgIF9hZGRTZWN0aW9uOiBmdW5jdGlv
bihpbnB1dF9kZWYpIHsKKyAgICAgICAgICAgIC8vIGxpbmsgdGhpcworICAgICAgICAgICAgdmFy
IHNlbGYgPTNEIHRoaXM7CisgICAgICAgICAgID0yMAorICAgICAgICAgICAgLy8gY3JlYXRlIHN1
YiBzZWN0aW9uCisgICAgICAgICAgICB2YXIgc3ViX3NlY3Rpb24gPTNEIG5ldyBWaWV3KHNlbGYu
YXBwLCB7CisgICAgICAgICAgICAgICAgaW5wdXRzICA6IGlucHV0X2RlZi5pbnB1dHMsCisgICAg
ICAgICAgICAgICAgY2xzICAgICA6ICd1aS10YWJsZS1wbGFpbicKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICA9MjAKKyAgICAgICAgICAgIC8vIGRlbGV0ZSBidXR0b24KKyAgICAgICAgICAg
IHZhciBidXR0b25fdmlzaWJsZSA9M0QgbmV3IFVpLkJ1dHRvbkljb24oeworICAgICAgICAgICAg
ICAgIGljb24gICAgOiAnZmEtZXllLXNsYXNoJywKKyAgICAgICAgICAgICAgICB0b29sdGlwIDog
J1Nob3cvaGlkZSBzZWN0aW9uJywKKyAgICAgICAgICAgICAgICBjbHMgICAgIDogJ3VpLWJ1dHRv
bi1pY29uLXBsYWluJworICAgICAgICAgICAgfSk7CisgICAgICAgICAgID0yMAorICAgICAgICAg
ICAgLy8gY3JlYXRlIHBvcnRsZXQgZm9yIHN1YiBzZWN0aW9uCisgICAgICAgICAgICB2YXIgcG9y
dGxldCA9M0QgbmV3IFBvcnRsZXQuVmlldyh7CisgICAgICAgICAgICAgICAgdGl0bGUgICAgICAg
OiBpbnB1dF9kZWYubGFiZWwsCisgICAgICAgICAgICAgICAgY2xzICAgICAgICAgOiAndWktcG9y
dGxldC1zZWN0aW9uJywKKyAgICAgICAgICAgICAgICBvcGVyYXRpb25zICA6IHsKKyAgICAgICAg
ICAgICAgICAgICAgYnV0dG9uX3Zpc2libGU6IGJ1dHRvbl92aXNpYmxlCisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBwb3J0bGV0LmFwcGVuZChzdWJfc2Vj
dGlvbi4kZWwpOworICAgICAgICAgICA9MjAKKyAgICAgICAgICAgIC8vIGFkZCBldmVudCBoYW5k
bGVyIHZpc2liaWxpdHkgYnV0dG9uCisgICAgICAgICAgICB2YXIgdmlzaWJsZSA9M0QgZmFsc2U7
CisgICAgICAgICAgICBwb3J0bGV0LiRjb250ZW50LmhpZGUoKTsKKyAgICAgICAgICAgIHBvcnRs
ZXQuJGhlYWRlci5jc3MoJ2N1cnNvcicsICdwb2ludGVyJyk7CisgICAgICAgICAgICBwb3J0bGV0
LiRoZWFkZXIub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKHZp
c2libGUpIHsKKyAgICAgICAgICAgICAgICAgICAgdmlzaWJsZSA9M0QgZmFsc2U7CisgICAgICAg
ICAgICAgICAgICAgIHBvcnRsZXQuJGNvbnRlbnQuaGlkZSgpOworICAgICAgICAgICAgICAgICAg
ICBidXR0b25fdmlzaWJsZS5zZXRJY29uKCdmYS1leWUtc2xhc2gnKTsKKyAgICAgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB2aXNpYmxlID0zRCB0cnVlOworICAgICAg
ICAgICAgICAgICAgICBwb3J0bGV0LiRjb250ZW50LmZhZGVJbignZmFzdCcpOworICAgICAgICAg
ICAgICAgICAgICBidXR0b25fdmlzaWJsZS5zZXRJY29uKCdmYS1leWUnKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgPTIwCisgICAgICAgICAgICAvLyBj
cmVhdGUgdGFibGUgcm93CisgICAgICAgICAgICB0aGlzLnRhYmxlLmFkZChwb3J0bGV0LiRlbCk7
CisKKyAgICAgICAgICAgIC8vIGFwcGVuZCByb3cgdG8gdGFibGUKKyAgICAgICAgICAgIHRoaXMu
dGFibGUuYXBwZW5kKGlucHV0X2RlZi5pZCk7CisgICAgICAgIH0sCisKICAgICAgICAgLyoqIEFk
ZCBhIHNpbmdsZSBpbnB1dCBmaWVsZCBlbGVtZW50CiAgICAgICAgICovCiAgICAgICAgIF9hZGRS
b3c6IGZ1bmN0aW9uKGlucHV0X2RlZikgewpAQCAtMjczLDYgKzMyOCwxMSBAQAogICAgICAgICAg
ICAgLy8gYXBwZW5kIHRvIHRhYmxlCiAgICAgICAgICAgICB0aGlzLnRhYmxlLmFwcGVuZChpZCk7
CiAgICAgICAgICAgID0yMAorICAgICAgICAgICAgLy8gaGlkZSByb3cgaWYgbmVjY2Vzc2FyeQor
ICAgICAgICAgICAgaWYgKGlucHV0X2RlZi5oaWRkZW4pIHsKKyAgICAgICAgICAgICAgICB0aGlz
LnRhYmxlLmdldChpZCkuaGlkZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICA9MjAKICAg
ICAgICAgICAgIC8vIHJldHVybiBjcmVhdGVkIGZpZWxkCiAgICAgICAgICAgICByZXR1cm4gZmll
bGQ7CiAgICAgICAgIH0sCkBAIC0zMTYsNyArMzc2LDcgQEAKICAgICAgICAgICAgICAgICAgICAg
ZmllbGQgPTNEIHRoaXMuX2ZpZWxkSGlkZGVuKGlucHV0X2RlZik7CiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgPTIwCi0gICAgICAgICAgICAgICAgLy8gaGlkZGVu
IGZpZWxkCisgICAgICAgICAgICAgICAgLy8gaGlkZGVuIGRhdGEgZmllbGQKICAgICAgICAgICAg
ICAgICBjYXNlICdoaWRkZW5fZGF0YSc6CiAgICAgICAgICAgICAgICAgICAgIGZpZWxkID0zRCB0
aGlzLl9maWVsZEhpZGRlbihpbnB1dF9kZWYpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsK
QEAgLTQ2NSw5ICs1MjUsOSBAQAogICAgICAgICBfZmllbGRUZXh0IDogZnVuY3Rpb24oaW5wdXRf
ZGVmKSB7CiAgICAgICAgICAgICB2YXIgc2VsZiA9M0QgdGhpczsKICAgICAgICAgICAgIHJldHVy
biBuZXcgVWkuSW5wdXQoewotICAgICAgICAgICAgICAgIGlkICAgICAgOiAnZmllbGQtJyArIGlu
cHV0X2RlZi5pZCwKLSAgICAgICAgICAgICAgICBhcmVhICAgIDogaW5wdXRfZGVmLmFyZWEsCi0g
ICAgICAgICAgICAgICAgb25jaGFuZ2U6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlk
ICAgICAgICAgIDogJ2ZpZWxkLScgKyBpbnB1dF9kZWYuaWQsCisgICAgICAgICAgICAgICAgYXJl
YSAgICAgICAgOiBpbnB1dF9kZWYuYXJlYSwKKyAgICAgICAgICAgICAgICBvbmNoYW5nZSAgICA6
IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBzZWxmLmFwcC50cmlnZ2VyKCdyZWZy
ZXNoJyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSk7CkBAIC00NzYsMTEgKzUz
NiwxNSBAQAogICAgICAgICAvKiogU2xpZGVyIGZpZWxkCiAgICAgICAgICovCiAgICAgICAgIF9m
aWVsZFNsaWRlcjogZnVuY3Rpb24oaW5wdXRfZGVmKSB7CisgICAgICAgICAgICB2YXIgc2VsZiA9
M0QgdGhpczsKICAgICAgICAgICAgIHJldHVybiBuZXcgVWkuU2xpZGVyLlZpZXcoewotICAgICAg
ICAgICAgICAgIGlkICAgICAgOiAnZmllbGQtJyArIGlucHV0X2RlZi5pZCwKLSAgICAgICAgICAg
ICAgICBwcmVjaXNlIDogaW5wdXRfZGVmLnR5cGUgPTNEPTNEICdmbG9hdCcsCi0gICAgICAgICAg
ICAgICAgbWluICAgICA6IGlucHV0X2RlZi5taW4sCi0gICAgICAgICAgICAgICAgbWF4ICAgICA6
IGlucHV0X2RlZi5tYXgKKyAgICAgICAgICAgICAgICBpZCAgICAgICAgICA6ICdmaWVsZC0nICsg
aW5wdXRfZGVmLmlkLAorICAgICAgICAgICAgICAgIHByZWNpc2UgICAgIDogaW5wdXRfZGVmLnR5
cGUgPTNEPTNEICdmbG9hdCcsCisgICAgICAgICAgICAgICAgbWluICAgICAgICAgOiBpbnB1dF9k
ZWYubWluLAorICAgICAgICAgICAgICAgIG1heCAgICAgICAgIDogaW5wdXRfZGVmLm1heCwKKyAg
ICAgICAgICAgICAgICBvbmNoYW5nZSAgICA6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg
ICAgICBzZWxmLmFwcC50cmlnZ2VyKCdyZWZyZXNoJyk7CisgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfSk7CiAgICAgICAgIH0sCiAgICAgICAgPTIwCkBAIC00ODgsMTggKzU1MiwyMiBA
QAogICAgICAgICAqLwogICAgICAgICBfZmllbGRIaWRkZW4gOiBmdW5jdGlvbihpbnB1dF9kZWYp
IHsKICAgICAgICAgICAgIHJldHVybiBuZXcgVWkuSGlkZGVuKHsKLSAgICAgICAgICAgICAgICBp
ZCAgICAgIDogJ2ZpZWxkLScgKyBpbnB1dF9kZWYuaWQsCi0gICAgICAgICAgICAgICAgaW5mbyAg
ICA6IGlucHV0X2RlZi5pbmZvCisgICAgICAgICAgICAgICAgaWQgICAgICAgICAgOiAnZmllbGQt
JyArIGlucHV0X2RlZi5pZCwKKyAgICAgICAgICAgICAgICBpbmZvICAgICAgICA6IGlucHV0X2Rl
Zi5pbmZvCiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwKICAgICAgICA9MjAKICAgICAgICAg
LyoqIEJvb2xlYW4gZmllbGQKICAgICAgICAgKi8KICAgICAgICAgX2ZpZWxkQm9vbGVhbiA6IGZ1
bmN0aW9uKGlucHV0X2RlZikgeworICAgICAgICAgICAgdmFyIHNlbGYgPTNEIHRoaXM7CiAgICAg
ICAgICAgICByZXR1cm4gbmV3IFVpLlJhZGlvQnV0dG9uLlZpZXcoewotICAgICAgICAgICAgICAg
IGlkICAgICAgOiAnZmllbGQtJyArIGlucHV0X2RlZi5pZCwKLSAgICAgICAgICAgICAgICBkYXRh
ICAgIDogWyB7IGxhYmVsIDogJ1llcycsIHZhbHVlIDogJ3RydWUnICB9LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsgbGFiZWwgOiAnTm8nLCAgdmFsdWUgOiAnZmFsc2UnIH1dCisgICAg
ICAgICAgICAgICAgaWQgICAgICAgICAgOiAnZmllbGQtJyArIGlucHV0X2RlZi5pZCwKKyAgICAg
ICAgICAgICAgICBkYXRhICAgICAgICA6IFsgeyBsYWJlbCA6ICdZZXMnLCB2YWx1ZSA6ICd0cnVl
JyAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBsYWJlbCA6ICdObycsICB2
YWx1ZSA6ICdmYWxzZScgfV0sCisgICAgICAgICAgICAgICAgb25jaGFuZ2UgICAgOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hcHAudHJpZ2dlcigncmVmcmVzaCcpOwor
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfSk7Cgpk
aWZmIC1yIDE1OTYyYjNkOWFhYzA2MWU5NTQxZjgxNzVjOGQyZTJiYzRiYTVjYWIgLXIgMmU5OTBj
YWVmYzk0M2ViMmIxZDRhOTQ9CmFmNTA4YzIyYmIzNGI3ZmE2IGNsaWVudC9nYWxheHkvc2NyaXB0
cy9tdmMvdG9vbHMvdG9vbHMtdHJlZS5qcwotLS0gYS9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZj
L3Rvb2xzL3Rvb2xzLXRyZWUuanMKKysrIGIvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29s
cy90b29scy10cmVlLmpzCkBAIC0xMDgsMjIgKzEwOCwyOSBAQAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb252ZXJ0KGpvYl9pbnB1dF9pZCwgaGVhZFtpbnB1dC5pZCArICctc2U9
CmN0aW9uLScgKyBzZWxlY3RlZENhc2VdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBoYW5kbGUgY3VzdG9tIHN1YiBzZWN0aW9ucworICAgICAgICAgICAgICAgICAgICAg
ICAgY2FzZSAnc2VjdGlvbic6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udmVydCgn
Jywgbm9kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdl
dCBmaWVsZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaWVsZCA9M0Qgc2VsZi5h
cHAuZmllbGRfbGlzdFtpbnB1dC5pZF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICA9MjAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXQgYW5kIHBhdGNoIGZpZWxkIHZhbHVl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0zRCBmaWVsZC52YWx1ZSgp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXRjaFtpbnB1dC50eXBlXSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9M0QgcGF0Y2hbaW5wdXQudHlw
ZV0odmFsdWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgID0yMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBk
ZWZhdWx0IHZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWVsZC5za2lw
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC52YWxpZGF0ZSAm
JiAhZmllbGQudmFsaWRhdGUodmFsdT0KZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZhbHVlID0zRCBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChmaWVsZCAmJiBmaWVsZC52YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBnZXQgYW5kIHBhdGNoIGZpZWxkIHZhbHVlCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciB2YWx1ZSA9M0QgZmllbGQudmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHBhdGNoW2lucHV0LnR5cGVdKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSA9M0QgcGF0Y2hbaW5wdXQudHlwZV0odmFsdWUpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFkZCAoam9iX2lucHV0X2lkLCBpbnB1dC5pZCwgdmFsdWUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgID0yMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBoYW5kbGUgZGVmYXVsdCB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIWZpZWxkLnNraXApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChmaWVsZC52YWxpZGF0ZSAmJiAhZmllbGQudmFsaWRhdGUoPQp2YWx1ZSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9M0QgbnVsbDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChpbnB1dC5pZ25vcmUgPTNEPTNEPTNEIHVuZGVmaW5lZCB8PQp8ICh2YWx1
ZSAmJiBpbnB1dC5pZ25vcmUgIT0zRCB2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhZGQgKGpvYl9pbnB1dF9pZCwgaW5wdXQuaWQsIHZhbHVlPQopOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQoKZGlmZiAtciAxNTk2MmIzZDlhYWMwNjFl
OTU0MWY4MTc1YzhkMmUyYmM0YmE1Y2FiIC1yIDJlOTkwY2FlZmM5NDNlYjJiMWQ0YTk0PQphZjUw
OGMyMmJiMzRiN2ZhNiBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3VpL3VpLW1pc2MuanMKLS0t
IGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy91aS91aS1taXNjLmpzCisrKyBiL2NsaWVudC9n
YWxheHkvc2NyaXB0cy9tdmMvdWkvdWktbWlzYy5qcwpAQCAtMTkzLDYgKzE5MywxMiBAQAogICAg
ICAgICB0aGlzLmRpc2FibGVkID0zRCBmYWxzZTsKICAgICB9LAogICAgPTIwCisgICAgLy8gY2hh
bmdlIGljb24KKyAgICBzZXRJY29uOiBmdW5jdGlvbihpY29uX2NscykgeworICAgICAgICB0aGlz
LiQoJ2knKS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuaWNvbikuYWRkQ2xhc3MoaWNvbl9jbHMp
OworICAgICAgICB0aGlzLm9wdGlvbnMuaWNvbiA9M0QgaWNvbl9jbHM7CisgICAgfSwKKyAgID0y
MAogICAgIC8vIHRlbXBsYXRlCiAgICAgX3RlbXBsYXRlOiBmdW5jdGlvbihvcHRpb25zKSB7CiAg
ICAgICAgIC8vIHdpZHRoCgpkaWZmIC1yIDE1OTYyYjNkOWFhYzA2MWU5NTQxZjgxNzVjOGQyZTJi
YzRiYTVjYWIgLXIgMmU5OTBjYWVmYzk0M2ViMmIxZDRhOTQ9CmFmNTA4YzIyYmIzNGI3ZmE2IGNs
aWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdWkvdWktcG9ydGxldC5qcwotLS0gYS9jbGllbnQvZ2Fs
YXh5L3NjcmlwdHMvbXZjL3VpL3VpLXBvcnRsZXQuanMKKysrIGIvY2xpZW50L2dhbGF4eS9zY3Jp
cHRzL212Yy91aS91aS1wb3J0bGV0LmpzCkBAIC0yNSw2ICsyNSw3IEBACiAgICAgJGNvbnRlbnQg
OiBudWxsLAogICAgICRidXR0b25zIDogbnVsbCwKICAgICAkb3BlcmF0aW9ucyA6IG51bGwsCisg
ICAgJGhlYWRlciA6IG51bGwsCiAgICA9MjAKICAgICAvLyBpbml0aWFsaXplCiAgICAgaW5pdGlh
bGl6ZSA6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKQEAgLTM1LDEzICszNiwxNiBAQAogICAgICAgICB0
aGlzLnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSk7CiAgICAgICAgPTIw
CiAgICAgICAgIC8vIGxpbmsgY29udGVudAotICAgICAgICB0aGlzLiRjb250ZW50ID0zRCB0aGlz
LiRlbC5maW5kKCcjY29udGVudCcpOworICAgICAgICB0aGlzLiRjb250ZW50ID0zRCB0aGlzLiRl
bC5maW5kKCcuY29udGVudCcpOwogICAgICAgID0yMAogICAgICAgICAvLyBsaW5rIHRpdGxlCi0g
ICAgICAgIHRoaXMuJHRpdGxlID0zRCB0aGlzLiRlbC5maW5kKCcjcG9ydGxldC10aXRsZS10ZXh0
Jyk7CisgICAgICAgIHRoaXMuJHRpdGxlID0zRCB0aGlzLiRlbC5maW5kKCcucG9ydGxldC10aXRs
ZS10ZXh0Jyk7CisgICAgICAgPTIwCisgICAgICAgIC8vIGxpbmsgaGVhZGVyCisgICAgICAgIHRo
aXMuJGhlYWRlciA9M0QgdGhpcy4kZWwuZmluZCgnLnBvcnRsZXQtaGVhZGVyJyk7CiAgICAgICAg
PTIwCiAgICAgICAgIC8vIHNldCBjb250ZW50IGZvcm1hdAotICAgICAgICB2YXIgJHBvcnRsZXRf
Y29udGVudCA9M0QgdGhpcy4kZWwuZmluZCgnI3BvcnRsZXQtY29udGVudCcpOworICAgICAgICB2
YXIgJHBvcnRsZXRfY29udGVudCA9M0QgdGhpcy4kZWwuZmluZCgnLnBvcnRsZXQtY29udGVudCcp
OwogICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5zY3JvbGxhYmxlKSB7CiAgICAgICAgICAgICBp
ZiAodGhpcy5vcHRpb25zLnRpdGxlKSB7CiAgICAgICAgICAgICAgICAgJHBvcnRsZXRfY29udGVu
dC5hZGRDbGFzcygnbm8tc2Nyb2xsJyk7CkBAIC01OSw3ICs2Myw3IEBACiAgICAgICAgIH0KICAg
ICAgICA9MjAKICAgICAgICAgLy8gYXBwZW5kIGJ1dHRvbnMKLSAgICAgICAgdGhpcy4kYnV0dG9u
cyA9M0QgJCh0aGlzLmVsKS5maW5kKCcjYnV0dG9ucycpOworICAgICAgICB0aGlzLiRidXR0b25z
ID0zRCAkKHRoaXMuZWwpLmZpbmQoJy5idXR0b25zJyk7CiAgICAgICAgIGlmICh0aGlzLm9wdGlv
bnMuYnV0dG9ucykgewogICAgICAgICAgICAgLy8gbGluayBmdW5jdGlvbnMKICAgICAgICAgICAg
IHZhciBzZWxmID0zRCB0aGlzOwpAQCAtNzIsNyArNzYsNyBAQAogICAgICAgICB9CiAgICAgICAg
PTIwCiAgICAgICAgIC8vIGFwcGVuZCBvcGVyYXRpb25zCi0gICAgICAgIHRoaXMuJG9wZXJhdGlv
bnMgPTNEICQodGhpcy5lbCkuZmluZCgnI29wZXJhdGlvbnMnKTsKKyAgICAgICAgdGhpcy4kb3Bl
cmF0aW9ucyA9M0QgJCh0aGlzLmVsKS5maW5kKCcub3BlcmF0aW9ucycpOwogICAgICAgICBpZiAo
dGhpcy5vcHRpb25zLm9wZXJhdGlvbnMpIHsKICAgICAgICAgICAgIC8vIGxpbmsgZnVuY3Rpb25z
CiAgICAgICAgICAgICB2YXIgc2VsZiA9M0QgdGhpczsKQEAgLTE2MSwyNyArMTY1LDI3IEBACiAg
ICAgICAgIHZhciB0bXBsID0zRCAgJzxkaXYgaWQ9M0QiJyArIG9wdGlvbnMuaWQgKyAnIiBjbGFz
cz0zRCInICsgb3B0aW9ucz0KLmNscyArICciPic7CiAgICAgICAgPTIwCiAgICAgICAgIGlmIChv
cHRpb25zLnRpdGxlKSB7Ci0gICAgICAgICAgICB0bXBsICs9M0QgICAgICc8ZGl2IGlkPTNEInBv
cnRsZXQtaGVhZGVyIiBjbGFzcz0zRCJwb3J0bGV0LWhlYT0KZGVyIj4nICsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnPGRpdiBpZD0zRCJvcGVyYXRpb25zIiBzdHlsZT0zRCJmbG9hdDog
JyArIG9wPQp0aW9ucy5vcGVyYXRpb25zX2ZsdCArICc7Ij48L2Rpdj4nICsKKyAgICAgICAgICAg
IHRtcGwgKz0zRCAgICAgJzxkaXYgY2xhc3M9M0QicG9ydGxldC1oZWFkZXIiPicgKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNEIm9wZXJhdGlvbnMiIHN0eWxlPTNE
ImZsb2F0OiAnICs9CiBvcHRpb25zLm9wZXJhdGlvbnNfZmx0ICsgJzsiPjwvZGl2PicgKwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNEInBvcnRsZXQtdGl0bGUiPic7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9MjAKICAgICAgICAgICAgIGlmIChvcHRpb25z
Lmljb24pCiAgICAgICAgICAgICAgICAgdG1wbCArPTNEICAgICAgICAgJzxpIGNsYXNzPTNEImlj
b24gZmEgJyArIG9wdGlvbnMuaWNvbiArID0KJyI+Jm5ic3A7PC9pPic7CiAgICAgICAgPTIwCi0g
ICAgICAgICAgICB0bXBsICs9M0QgICAgICAgICAgICAgJzxzcGFuIGlkPTNEInBvcnRsZXQtdGl0
bGUtdGV4dCIgY2xhc3M9Cj0zRCJwb3J0bGV0LXRpdGxlLXRleHQiPicgKyBvcHRpb25zLnRpdGxl
ICsgJzwvc3Bhbj4nICsKKyAgICAgICAgICAgIHRtcGwgKz0zRCAgICAgICAgICAgICAnPHNwYW4g
Y2xhc3M9M0QicG9ydGxldC10aXRsZS10ZXh0Ij4nICsgPQpvcHRpb25zLnRpdGxlICsgJzwvc3Bh
bj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAg
ICAgICAgICAgICAgICAnPC9kaXY+JzsKICAgICAgICAgfQotICAgICAgICB0bXBsICs9M0QgICAg
ICAgICAnPGRpdiBpZD0zRCJwb3J0bGV0LWNvbnRlbnQiIGNsYXNzPTNEInBvcnRsZXQtY289Cm50
ZW50Ij4nOworICAgICAgICB0bXBsICs9M0QgICAgICAgICAnPGRpdiBjbGFzcz0zRCJwb3J0bGV0
LWNvbnRlbnQiPic7CiAgICAgICAgPTIwCiAgICAgICAgIGlmIChvcHRpb25zLnBsYWNlbWVudCA9
M0Q9M0QgJ3RvcCcpIHsKLSAgICAgICAgICAgIHRtcGwgKz0zRCAgICAgICAgICc8ZGl2IGlkPTNE
ImJ1dHRvbnMiIGNsYXNzPTNEImJ1dHRvbnMiPjwvZGl2PQo+JzsKKyAgICAgICAgICAgIHRtcGwg
Kz0zRCAgICAgICAgICc8ZGl2IGNsYXNzPTNEImJ1dHRvbnMiPjwvZGl2Pic7CiAgICAgICAgIH0K
ICAgICAgICA9MjAKLSAgICAgICAgdG1wbCArPTNEICAgICAgICAgICAgICc8ZGl2IGlkPTNEImNv
bnRlbnQiIGNsYXNzPTNEImNvbnRlbnQiPjwvZGl2PQo+JzsKKyAgICAgICAgdG1wbCArPTNEICAg
ICAgICAgICAgICc8ZGl2IGNsYXNzPTNEImNvbnRlbnQiPjwvZGl2Pic7CiAgICAgICAgPTIwCiAg
ICAgICAgIGlmIChvcHRpb25zLnBsYWNlbWVudCA9M0Q9M0QgJ2JvdHRvbScpIHsKLSAgICAgICAg
ICAgIHRtcGwgKz0zRCAgICAgICAgICc8ZGl2IGlkPTNEImJ1dHRvbnMiIGNsYXNzPTNEImJ1dHRv
bnMiPjwvZGl2PQo+JzsKKyAgICAgICAgICAgIHRtcGwgKz0zRCAgICAgICAgICc8ZGl2IGNsYXNz
PTNEImJ1dHRvbnMiPjwvZGl2Pic7CiAgICAgICAgIH0KICAgICAgICA9MjAKICAgICAgICAgdG1w
bCArPTNEICAgICAgICAgJzwvZGl2PicgKwoKZGlmZiAtciAxNTk2MmIzZDlhYWMwNjFlOTU0MWY4
MTc1YzhkMmUyYmM0YmE1Y2FiIC1yIDJlOTkwY2FlZmM5NDNlYjJiMWQ0YTk0PQphZjUwOGMyMmJi
MzRiN2ZhNiBjb25maWcvZGF0YXR5cGVzX2NvbmYueG1sLnNhbXBsZQotLS0gYS9jb25maWcvZGF0
YXR5cGVzX2NvbmYueG1sLnNhbXBsZQorKysgYi9jb25maWcvZGF0YXR5cGVzX2NvbmYueG1sLnNh
bXBsZQpAQCAtMTQwLDYgKzE0MCw3IEBACiAgICAgPGRhdGF0eXBlIGV4dGVuc2lvbj0zRCJyZ2Ii
IHR5cGU9M0QiZ2FsYXh5LmRhdGF0eXBlcy5pbWFnZXM6UmdiIiBtaW1ldD0KeXBlPTNEImltYWdl
L3JnYiIvPjxkYXRhdHlwZSBleHRlbnNpb249M0QicGJtIiB0eXBlPTNEImdhbGF4eS5kYXRhdHlw
ZXMuaW1hPQpnZXM6UGJtIiBtaW1ldHlwZT0zRCJpbWFnZS9wYm0iLz48ZGF0YXR5cGUgZXh0ZW5z
aW9uPTNEInBnbSIgdHlwZT0zRCJnYWxheHk9Ci5kYXRhdHlwZXMuaW1hZ2VzOlBnbSIgbWltZXR5
cGU9M0QiaW1hZ2UvcGdtIi8+CisgICAgPGRhdGF0eXBlIGV4dGVuc2lvbj0zRCJybmFfZXBzIiB0
eXBlPTNEImdhbGF4eS5kYXRhdHlwZXMuc2VxdWVuY2U6Uk5BRD0Kb3RQbG90TWF0cml4IiBtaW1l
dHlwZT0zRCJpbWFnZS9lcHMiIGRpc3BsYXlfaW5fdXBsb2FkPTNEIlRydWUiLz48ZGF0YXR5cGUg
PQpleHRlbnNpb249M0QiZXBzIiB0eXBlPTNEImdhbGF4eS5kYXRhdHlwZXMuaW1hZ2VzOkVwcyIg
bWltZXR5cGU9M0QiaW1hZ2UvZXA9CnMiLz48ZGF0YXR5cGUgZXh0ZW5zaW9uPTNEInJhc3QiIHR5
cGU9M0QiZ2FsYXh5LmRhdGF0eXBlcy5pbWFnZXM6UmFzdCIgbWltZT0KdHlwZT0zRCJpbWFnZS9y
YXN0Ii8+PGRhdGF0eXBlIGV4dGVuc2lvbj0zRCJsYWoiIHR5cGU9M0QiZ2FsYXh5LmRhdGF0eXBl
cy5pPQptYWdlczpMYWoiLz4KQEAgLTMwNCw2ICszMDUsNyBAQAogICAgIDxzbmlmZmVyIHR5cGU9
M0QiZ2FsYXh5LmRhdGF0eXBlcy50ZXh0OkFyZmYiLz48c25pZmZlciB0eXBlPTNEImdhbGF4eS49
CmRhdGF0eXBlcy50ZXh0OklweW5iIi8+PHNuaWZmZXIgdHlwZT0zRCJnYWxheHkuZGF0YXR5cGVz
LnRleHQ6SnNvbiIvPgorICAgIDxzbmlmZmVyIHR5cGU9M0QiZ2FsYXh5LmRhdGF0eXBlcy5zZXF1
ZW5jZTpSTkFEb3RQbG90TWF0cml4Ii8+PHNuaWZmZXI9CiB0eXBlPTNEImdhbGF4eS5kYXRhdHlw
ZXMuaW1hZ2VzOkpwZyIvPjxzbmlmZmVyIHR5cGU9M0QiZ2FsYXh5LmRhdGF0eXBlcy5pbT0KYWdl
czpQbmciLz48c25pZmZlciB0eXBlPTNEImdhbGF4eS5kYXRhdHlwZXMuaW1hZ2VzOlRpZmYiLz4K
CmRpZmYgLXIgMTU5NjJiM2Q5YWFjMDYxZTk1NDFmODE3NWM4ZDJlMmJjNGJhNWNhYiAtciAyZTk5
MGNhZWZjOTQzZWIyYjFkNGE5ND0KYWY1MDhjMjJiYjM0YjdmYTYgY29uZmlnL3BsdWdpbnMvdmlz
dWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9idWlsZC1hcHAuanMKLS0tIGEvY29uZmlnL3BsdWdp
bnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9idWlsZC1hcHAuanMKKysrIGIvY29uZmln
L3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9idWlsZC1hcHAuanMKQEAgLTEs
NiArMSw2IEBACi0vLyAgICAgVW5kZXJzY29yZS5qcyAxLjQuNAorLy8gICAgIFVuZGVyc2NvcmUu
anMgMS43LjAKIC8vICAgICBodHRwOi8vdW5kZXJzY29yZWpzLm9yZwotLy8gICAgIChjKSAyMDA5
LTIwMTMgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIEluYy4KKy8vICAgICAoYykgMjAw
OS0yMDE0IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBS
ZXBvPQpydGVycyAmIEVkaXRvcnMKIC8vICAgICBVbmRlcnNjb3JlIG1heSBiZSBmcmVlbHkgZGlz
dHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgo9MjAKLWRlZmluZSgibXZjL3VpL3VpLW1v
ZGFsIixbXSxmdW5jdGlvbigpe3ZhciBlPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe2VsTWFpPQpu
OiJib2R5IixvcHRpb25zRGVmYXVsdDp7dGl0bGU6InVpLW1vZGFsIixib2R5OiIiLGJhY2tkcm9w
OiEwLGhlaWdodDpudWxsLHc9CmlkdGg6bnVsbCxjbG9zaW5nX2V2ZW50czohMSxjbG9zaW5nX2Nh
bGxiYWNrOm51bGx9LGJ1dHRvbkxpc3Q6e30saW5pdGlhbGl6ZT0KOmZ1bmN0aW9uKGUpe2UmJnRo
aXMuX2NyZWF0ZShlKX0sc2hvdzpmdW5jdGlvbihlKXt0aGlzLmluaXRpYWxpemUoZSksdGhpcy5v
PQpwdGlvbnMuaGVpZ2h0Pyh0aGlzLiRib2R5LmNzcygiaGVpZ2h0Iix0aGlzLm9wdGlvbnMuaGVp
Z2h0KSx0aGlzLiRib2R5LmNzcyg9CiJvdmVyZmxvdyIsImhpZGRlbiIpKTp0aGlzLiRib2R5LmNz
cygibWF4LWhlaWdodCIsJCh3aW5kb3cpLmhlaWdodCgpLzIpLHRoaT0Kcy5vcHRpb25zLndpZHRo
JiZ0aGlzLiRkaWFsb2cuY3NzKCJ3aWR0aCIsdGhpcy5vcHRpb25zLndpZHRoKSx0aGlzLnZpc2li
bGU/PQp0aGlzLiRlbC5zaG93KCk6dGhpcy4kZWwuZmFkZUluKCJmYXN0IiksdGhpcy52aXNpYmxl
PTNEITB9LGhpZGU6ZnVuY3Rpb24oKXs9CnRoaXMudmlzaWJsZT0zRCExLHRoaXMuJGVsLmZhZGVP
dXQoImZhc3QiKSx0aGlzLm9wdGlvbnMuY2xvc2luZ19jYWxsYmFjayYmdD0KaGlzLm9wdGlvbnMu
Y2xvc2luZ19jYWxsYmFjaygpfSxlbmFibGVCdXR0b246ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlz
LmJ1dHRvPQpuTGlzdFtlXTt0aGlzLiRidXR0b25zLmZpbmQoIiMiK3QpLnByb3AoImRpc2FibGVk
IiwhMSl9LGRpc2FibGVCdXR0b246ZnVuY3Q9CmlvbihlKXt2YXIgdD0zRHRoaXMuYnV0dG9uTGlz
dFtlXTt0aGlzLiRidXR0b25zLmZpbmQoIiMiK3QpLnByb3AoImRpc2FibGVkIj0KLCEwKX0sc2hv
d0J1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMuYnV0dG9uTGlzdFtlXTt0aGlzLiRidXR0
b25zLmZpbmQoPQoiIyIrdCkuc2hvdygpfSxoaWRlQnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PTNE
dGhpcy5idXR0b25MaXN0W2VdO3RoaXMuJGJ1dHQ9Cm9ucy5maW5kKCIjIit0KS5oaWRlKCl9LGdl
dEJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMuYnV0dG9uTGlzdFtlXTtyZT0KdHVybiB0
aGlzLiRidXR0b25zLmZpbmQoIiMiK3QpfSxzY3JvbGxUb3A6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy4kYm9keS5zY3JvPQpsbFRvcCgpfSxfY3JlYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpczt0
aGlzLm9wdGlvbnM9M0RfLmRlZmF1bHRzKGUsdGhpcy49Cm9wdGlvbnNEZWZhdWx0KSx0aGlzLm9w
dGlvbnMuYm9keT0zRD0zRCJwcm9ncmVzcyImJih0aGlzLm9wdGlvbnMuYm9keT0zRCQoJz0KPGRp
diBjbGFzcz0zRCJwcm9ncmVzcyBwcm9ncmVzcy1zdHJpcGVkIGFjdGl2ZSI+PGRpdiBjbGFzcz0z
RCJwcm9ncmVzcy1iYXIgPQpwcm9ncmVzcy1iYXItaW5mbyIgc3R5bGU9M0Qid2lkdGg6MTAwJSI+
PC9kaXY+PC9kaXY+JykpLHRoaXMuJGVsJiYodGhpcy4kZWw9Ci5yZW1vdmUoKSwkKGRvY3VtZW50
KS5vZmYoImtleXVwLnVpLW1vZGFsIikpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZT0K
KHRoaXMub3B0aW9ucy50aXRsZSkpLHRoaXMuJGRpYWxvZz0zRHRoaXMuJGVsLmZpbmQoIi5tb2Rh
bC1kaWFsb2ciKSx0aGlzLiRiPQpvZHk9M0R0aGlzLiRlbC5maW5kKCIubW9kYWwtYm9keSIpLHRo
aXMuJGZvb3Rlcj0zRHRoaXMuJGVsLmZpbmQoIi5tb2RhbC1mb289CnRlciIpLHRoaXMuJGJ1dHRv
bnM9M0R0aGlzLiRlbC5maW5kKCIuYnV0dG9ucyIpLHRoaXMuJGJhY2tkcm9wPTNEdGhpcy4kZWwu
Zj0KaW5kKCIubW9kYWwtYmFja2Ryb3AiKSx0aGlzLiRib2R5Lmh0bWwodGhpcy5vcHRpb25zLmJv
ZHkpLHRoaXMub3B0aW9ucy5iYWNrPQpkcm9wfHx0aGlzLiRiYWNrZHJvcC5yZW1vdmVDbGFzcygi
aW4iKTtpZih0aGlzLm9wdGlvbnMuYnV0dG9ucyl7dGhpcy5idXR0b249Ckxpc3Q9M0R7fTt2YXIg
bj0zRDA7JC5lYWNoKHRoaXMub3B0aW9ucy5idXR0b25zLGZ1bmN0aW9uKGUscil7dmFyIGk9M0Qi
YnV0dD0Kb24tIituKys7dC4kYnV0dG9ucy5hcHBlbmQoJCgnPGJ1dHRvbiBpZD0zRCInK2krJyI+
PC9idXR0b24+JykudGV4dChlKS5jbGljPQprKHIpKS5hcHBlbmQoIiAiKSx0LmJ1dHRvbkxpc3Rb
ZV09M0RpfSl9ZWxzZSB0aGlzLiRmb290ZXIuaGlkZSgpOyQodGhpcy5lbE09CmFpbikuYXBwZW5k
KCQodGhpcy5lbCkpLHRoaXMub3B0aW9ucy5jbG9zaW5nX2V2ZW50cyYmKCQoZG9jdW1lbnQpLm9u
KCJrZXl1cD0KLnVpLW1vZGFsIixmdW5jdGlvbihlKXtlLmtleUNvZGU9M0Q9M0QyNyYmdC5oaWRl
KCl9KSx0aGlzLiRlbC5maW5kKCIubW9kYWwtPQpiYWNrZHJvcCIpLm9uKCJjbGljayIsZnVuY3Rp
b24oKXt0LmhpZGUoKX0pKX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3JldHVybic9CjxkaXYgY2xh
c3M9M0QidWktbW9kYWwgbW9kYWwiPjxkaXYgY2xhc3M9M0QibW9kYWwtYmFja2Ryb3AgZmFkZSBp
biIgc3R5bGU9Cj0zRCJ6LWluZGV4OiAtMTsiPjwvZGl2PjxkaXYgY2xhc3M9M0QibW9kYWwtZGlh
bG9nIj48ZGl2IGNsYXNzPTNEIm1vZGFsLWNvbj0KdGVudCI+PGRpdiBjbGFzcz0zRCJtb2RhbC1o
ZWFkZXIiPjxidXR0b24gdHlwZT0zRCJidXR0b24iIGNsYXNzPTNEImNsb3NlIiBzPQp0eWxlPTNE
ImRpc3BsYXk6IG5vbmU7Ij4mdGltZXM7PC9idXR0b24+PGg0IGNsYXNzPTNEInRpdGxlIj4nK2Ur
IjwvaDQ+IisiPC89CmRpdj4iKyc8ZGl2IGNsYXNzPTNEIm1vZGFsLWJvZHkiIHN0eWxlPTNEInBv
c2l0aW9uOiBzdGF0aWM7Ij48L2Rpdj4nKyc8ZGl2ID0KY2xhc3M9M0QibW9kYWwtZm9vdGVyIj4n
Kyc8ZGl2IGNsYXNzPTNEImJ1dHRvbnMiIHN0eWxlPTNEImZsb2F0OiByaWdodDsiPjwvPQpkaXY+
JysiPC9kaXY+IisiPC9kaXYiKyI8L2Rpdj4iKyI8L2Rpdj4ifX0pO3JldHVybntWaWV3OmV9fSks
ZnVuY3Rpb24oKXt2YXI9CiBlPTNEdGhpcyx0PTNEZS5fLG49M0R7fSxyPTNEQXJyYXkucHJvdG90
eXBlLGk9M0RPYmplY3QucHJvdG90eXBlLHM9M0RGdW5jdD0KaW9uLnByb3RvdHlwZSxvPTNEci5w
dXNoLHU9M0RyLnNsaWNlLGE9M0RyLmNvbmNhdCxmPTNEaS50b1N0cmluZyxsPTNEaS5oYXNPPQp3
blByb3BlcnR5LGM9M0RyLmZvckVhY2gsaD0zRHIubWFwLHA9M0RyLnJlZHVjZSxkPTNEci5yZWR1
Y2VSaWdodCx2PTNEci5maWw9CnRlcixtPTNEci5ldmVyeSxnPTNEci5zb21lLHk9M0RyLmluZGV4
T2YsYj0zRHIubGFzdEluZGV4T2Ysdz0zREFycmF5LmlzQXJyYT0KeSxFPTNET2JqZWN0LmtleXMs
Uz0zRHMuYmluZCx4PTNEZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIHgpcmV0dXJuIGU7aWYo
PQohKHRoaXMgaW5zdGFuY2VvZiB4KSlyZXR1cm4gbmV3IHgoZSk7dGhpcy5fd3JhcHBlZD0zRGV9
O3R5cGVvZiBleHBvcnRzIT0zRCI9CnVuZGVmaW5lZCI/KHR5cGVvZiBtb2R1bGUhPTNEInVuZGVm
aW5lZCImJm1vZHVsZS5leHBvcnRzJiYoZXhwb3J0cz0zRG1vZHVsZT0KLmV4cG9ydHM9M0R4KSxl
eHBvcnRzLl89M0R4KTplLl89M0R4LHguVkVSU0lPTj0zRCIxLjQuNCI7dmFyIFQ9M0R4LmVhY2g9
M0R4PQouZm9yRWFjaD0zRGZ1bmN0aW9uKGUsdCxyKXtpZihlPTNEPTNEbnVsbClyZXR1cm47aWYo
YyYmZS5mb3JFYWNoPTNEPTNEPTNEYyk9CmUuZm9yRWFjaCh0LHIpO2Vsc2UgaWYoZS5sZW5ndGg9
M0Q9M0Q9M0QrZS5sZW5ndGgpe2Zvcih2YXIgaT0zRDAscz0zRGUubGVuZz0KdGg7aTxzO2krKylp
Zih0LmNhbGwocixlW2ldLGksZSk9M0Q9M0Q9M0RuKXJldHVybn1lbHNlIGZvcih2YXIgbyBpbiBl
KWlmKHguPQpoYXMoZSxvKSYmdC5jYWxsKHIsZVtvXSxvLGUpPTNEPTNEPTNEbilyZXR1cm59O3gu
bWFwPTNEeC5jb2xsZWN0PTNEZnVuY3Rpb249CihlLHQsbil7dmFyIHI9M0RbXTtyZXR1cm4gZT0z
RD0zRG51bGw/cjpoJiZlLm1hcD0zRD0zRD0zRGg/ZS5tYXAodCxuKTooVChlLD0KZnVuY3Rpb24o
ZSxpLHMpe3IucHVzaCh0LmNhbGwobixlLGkscykpfSkscil9O3ZhciBOPTNEIlJlZHVjZSBvZiBl
bXB0eSBhcnJhPQp5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSI7eC5yZWR1Y2U9M0R4LmZvbGRsPTNE
eC5pbmplY3Q9M0RmdW5jdGlvbihlLHQsbixyKXs9CnZhciBpPTNEYXJndW1lbnRzLmxlbmd0aD4y
O2U9M0Q9M0RudWxsJiYoZT0zRFtdKTtpZihwJiZlLnJlZHVjZT0zRD0zRD0zRHApcj0KZXR1cm4g
ciYmKHQ9M0R4LmJpbmQodCxyKSksaT9lLnJlZHVjZSh0LG4pOmUucmVkdWNlKHQpO1QoZSxmdW5j
dGlvbihlLHMsbyl7PQppP249M0R0LmNhbGwocixuLGUscyxvKToobj0zRGUsaT0zRCEwKX0pO2lm
KCFpKXRocm93IG5ldyBUeXBlRXJyb3IoTik7cmV0dXI9Cm4gbn0seC5yZWR1Y2VSaWdodD0zRHgu
Zm9sZHI9M0RmdW5jdGlvbihlLHQsbixyKXt2YXIgaT0zRGFyZ3VtZW50cy5sZW5ndGg+Mj0KO2U9
M0Q9M0RudWxsJiYoZT0zRFtdKTtpZihkJiZlLnJlZHVjZVJpZ2h0PTNEPTNEPTNEZClyZXR1cm4g
ciYmKHQ9M0R4LmJpbmQoPQp0LHIpKSxpP2UucmVkdWNlUmlnaHQodCxuKTplLnJlZHVjZVJpZ2h0
KHQpO3ZhciBzPTNEZS5sZW5ndGg7aWYocyE9M0Q9M0Qrcyk9Cnt2YXIgbz0zRHgua2V5cyhlKTtz
PTNEby5sZW5ndGh9VChlLGZ1bmN0aW9uKHUsYSxmKXthPTNEbz9vWy0tc106LS1zLGk/bj0zRD0K
dC5jYWxsKHIsbixlW2FdLGEsZik6KG49M0RlW2FdLGk9M0QhMCl9KTtpZighaSl0aHJvdyBuZXcg
VHlwZUVycm9yKE4pO3JldHVyPQpuIG59LHguZmluZD0zRHguZGV0ZWN0PTNEZnVuY3Rpb24oZSx0
LG4pe3ZhciByO3JldHVybiBDKGUsZnVuY3Rpb24oZSxpLHMpe2k9CmYodC5jYWxsKG4sZSxpLHMp
KXJldHVybiByPTNEZSwhMH0pLHJ9LHguZmlsdGVyPTNEeC5zZWxlY3Q9M0RmdW5jdGlvbihlLHQs
bj0KKXt2YXIgcj0zRFtdO3JldHVybiBlPTNEPTNEbnVsbD9yOnYmJmUuZmlsdGVyPTNEPTNEPTNE
dj9lLmZpbHRlcih0LG4pOihUKGUsPQpmdW5jdGlvbihlLGkscyl7dC5jYWxsKG4sZSxpLHMpJiZy
LnB1c2goZSl9KSxyKX0seC5yZWplY3Q9M0RmdW5jdGlvbihlLHQsbik9CntyZXR1cm4geC5maWx0
ZXIoZSxmdW5jdGlvbihlLHIsaSl7cmV0dXJuIXQuY2FsbChuLGUscixpKX0sbil9LHguZXZlcnk9
M0R4Lj0KYWxsPTNEZnVuY3Rpb24oZSx0LHIpe3R8fCh0PTNEeC5pZGVudGl0eSk7dmFyIGk9M0Qh
MDtyZXR1cm4gZT0zRD0zRG51bGw/aTptPQomJmUuZXZlcnk9M0Q9M0Q9M0RtP2UuZXZlcnkodCxy
KTooVChlLGZ1bmN0aW9uKGUscyxvKXtpZighKGk9M0RpJiZ0LmNhbGwociw9CmUscyxvKSkpcmV0
dXJuIG59KSwhIWkpfTt2YXIgQz0zRHguc29tZT0zRHguYW55PTNEZnVuY3Rpb24oZSx0LHIpe3R8
fCh0PTNEeD0KLmlkZW50aXR5KTt2YXIgaT0zRCExO3JldHVybiBlPTNEPTNEbnVsbD9pOmcmJmUu
c29tZT0zRD0zRD0zRGc/ZS5zb21lKHQscik6PQooVChlLGZ1bmN0aW9uKGUscyxvKXtpZihpfHwo
aT0zRHQuY2FsbChyLGUscyxvKSkpcmV0dXJuIG59KSwhIWkpfTt4LmNvbnRhaW49CnM9M0R4Lmlu
Y2x1ZGU9M0RmdW5jdGlvbihlLHQpe3JldHVybiBlPTNEPTNEbnVsbD8hMTp5JiZlLmluZGV4T2Y9
M0Q9M0Q9M0R5Pz0KZS5pbmRleE9mKHQpIT0zRC0xOkMoZSxmdW5jdGlvbihlKXtyZXR1cm4gZT0z
RD0zRD0zRHR9KX0seC5pbnZva2U9M0RmdW5jdGlvPQpuKGUsdCl7dmFyIG49M0R1LmNhbGwoYXJn
dW1lbnRzLDIpLHI9M0R4LmlzRnVuY3Rpb24odCk7cmV0dXJuIHgubWFwKGUsZnVuY3Q9Cmlvbihl
KXtyZXR1cm4ocj90OmVbdF0pLmFwcGx5KGUsbil9KX0seC5wbHVjaz0zRGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIHgubWFwKD0KZSxmdW5jdGlvbihlKXtyZXR1cm4gZVt0XX0pfSx4LndoZXJlPTNEZnVu
Y3Rpb24oZSx0LG4pe3JldHVybiB4LmlzRW1wdHkodCk/PQpuP3ZvaWQgMDpbXTp4W24/ImZpbmQi
OiJmaWx0ZXIiXShlLGZ1bmN0aW9uKGUpe2Zvcih2YXIgbiBpbiB0KWlmKHRbbl0hPTNEPQo9M0Rl
W25dKXJldHVybiExO3JldHVybiEwfSl9LHguZmluZFdoZXJlPTNEZnVuY3Rpb24oZSx0KXtyZXR1
cm4geC53aGVyZShlLHQ9CiwhMCl9LHgubWF4PTNEZnVuY3Rpb24oZSx0LG4pe2lmKCF0JiZ4Lmlz
QXJyYXkoZSkmJmVbMF09M0Q9M0Q9M0QrZVswXSYmZS5sZT0Kbmd0aDw2NTUzNSlyZXR1cm4gTWF0
aC5tYXguYXBwbHkoTWF0aCxlKTtpZighdCYmeC5pc0VtcHR5KGUpKXJldHVybi1JbmZpbml0PQp5
O3ZhciByPTNEe2NvbXB1dGVkOi1JbmZpbml0eSx2YWx1ZTotSW5maW5pdHl9O3JldHVybiBUKGUs
ZnVuY3Rpb24oZSxpLHMpe3Y9CmFyIG89M0R0P3QuY2FsbChuLGUsaSxzKTplO28+PTNEci5jb21w
dXRlZCYmKHI9M0R7dmFsdWU6ZSxjb21wdXRlZDpvfSl9KSxyLj0KdmFsdWV9LHgubWluPTNEZnVu
Y3Rpb24oZSx0LG4pe2lmKCF0JiZ4LmlzQXJyYXkoZSkmJmVbMF09M0Q9M0Q9M0QrZVswXSYmZS5s
PQplbmd0aDw2NTUzNSlyZXR1cm4gTWF0aC5taW4uYXBwbHkoTWF0aCxlKTtpZighdCYmeC5pc0Vt
cHR5KGUpKXJldHVybiBJbmZpbmk9CnR5O3ZhciByPTNEe2NvbXB1dGVkOkluZmluaXR5LHZhbHVl
OkluZmluaXR5fTtyZXR1cm4gVChlLGZ1bmN0aW9uKGUsaSxzKXt2YT0KciBvPTNEdD90LmNhbGwo
bixlLGkscyk6ZTtvPHIuY29tcHV0ZWQmJihyPTNEe3ZhbHVlOmUsY29tcHV0ZWQ6b30pfSksci52
YWx1PQplfSx4LnNodWZmbGU9M0RmdW5jdGlvbihlKXt2YXIgdCxuPTNEMCxyPTNEW107cmV0dXJu
IFQoZSxmdW5jdGlvbihlKXt0PTNEeC49CnJhbmRvbShuKyspLHJbbi0xXT0zRHJbdF0sclt0XT0z
RGV9KSxyfTt2YXIgaz0zRGZ1bmN0aW9uKGUpe3JldHVybiB4LmlzRnVuYz0KdGlvbihlKT9lOmZ1
bmN0aW9uKHQpe3JldHVybiB0W2VdfX07eC5zb3J0Qnk9M0RmdW5jdGlvbihlLHQsbil7dmFyIHI9
M0RrKHQpPQo7cmV0dXJuIHgucGx1Y2soeC5tYXAoZSxmdW5jdGlvbihlLHQsaSl7cmV0dXJue3Zh
bHVlOmUsaW5kZXg6dCxjcml0ZXJpYTpyLmM9CmFsbChuLGUsdCxpKX19KS5zb3J0KGZ1bmN0aW9u
KGUsdCl7dmFyIG49M0RlLmNyaXRlcmlhLHI9M0R0LmNyaXRlcmlhO2lmKG4hPQo9M0Q9M0RyKXtp
ZihuPnJ8fG49M0Q9M0Q9M0R2b2lkIDApcmV0dXJuIDE7aWYobjxyfHxyPTNEPTNEPTNEdm9pZCAw
KXJldHVybi09CjF9cmV0dXJuIGUuaW5kZXg8dC5pbmRleD8tMToxfSksInZhbHVlIil9O3ZhciBM
PTNEZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9Cj0zRHt9LHM9M0RrKHQ9M0Q9M0RudWxsP3guaWRl
bnRpdHk6dCk7cmV0dXJuIFQoZSxmdW5jdGlvbih0LG8pe3ZhciB1PTNEcy5jYT0KbGwobix0LG8s
ZSk7cihpLHUsdCl9KSxpfTt4Lmdyb3VwQnk9M0RmdW5jdGlvbihlLHQsbil7cmV0dXJuIEwoZSx0
LG4sZnVuY3RpPQpvbihlLHQsbil7KHguaGFzKGUsdCk/ZVt0XTplW3RdPTNEW10pLnB1c2gobil9
KX0seC5jb3VudEJ5PTNEZnVuY3Rpb24oZSx0LG49Cil7cmV0dXJuIEwoZSx0LG4sZnVuY3Rpb24o
ZSx0KXt4LmhhcyhlLHQpfHwoZVt0XT0zRDApLGVbdF0rK30pfSx4LnNvcnRlZEluZD0KZXg9M0Rm
dW5jdGlvbihlLHQsbixyKXtuPTNEbj0zRD0zRG51bGw/eC5pZGVudGl0eTprKG4pO3ZhciBpPTNE
bi5jYWxsKHIsdCksPQpzPTNEMCxvPTNEZS5sZW5ndGg7d2hpbGUoczxvKXt2YXIgdT0zRHMrbz4+
PjE7bi5jYWxsKHIsZVt1XSk8aT9zPTNEdSsxOm89M0Q9CnV9cmV0dXJuIHN9LHgudG9BcnJheT0z
RGZ1bmN0aW9uKGUpe3JldHVybiBlP3guaXNBcnJheShlKT91LmNhbGwoZSk6ZS5sZW5ndD0KaD0z
RD0zRD0zRCtlLmxlbmd0aD94Lm1hcChlLHguaWRlbnRpdHkpOngudmFsdWVzKGUpOltdfSx4LnNp
emU9M0RmdW5jdGlvbihlPQope3JldHVybiBlPTNEPTNEbnVsbD8wOmUubGVuZ3RoPTNEPTNEPTNE
K2UubGVuZ3RoP2UubGVuZ3RoOngua2V5cyhlKS5sZW5ndGg9Cn0seC5maXJzdD0zRHguaGVhZD0z
RHgudGFrZT0zRGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0zRD0zRG51bGw/dm9pZCAwOnQhPQo9
M0RudWxsJiYhbj91LmNhbGwoZSwwLHQpOmVbMF19LHguaW5pdGlhbD0zRGZ1bmN0aW9uKGUsdCxu
KXtyZXR1cm4gdS5jYWxsKGU9CiwwLGUubGVuZ3RoLSh0PTNEPTNEbnVsbHx8bj8xOnQpKX0seC5s
YXN0PTNEZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPTNEPTNEbj0KdWxsP3ZvaWQgMDp0IT0zRG51
bGwmJiFuP3UuY2FsbChlLE1hdGgubWF4KGUubGVuZ3RoLXQsMCkpOmVbZS5sZW5ndGgtMV19LHgu
PQpyZXN0PTNEeC50YWlsPTNEeC5kcm9wPTNEZnVuY3Rpb24oZSx0LG4pe3JldHVybiB1LmNhbGwo
ZSx0PTNEPTNEbnVsbHx8bj8xOnQ9Cil9LHguY29tcGFjdD0zRGZ1bmN0aW9uKGUpe3JldHVybiB4
LmZpbHRlcihlLHguaWRlbnRpdHkpfTt2YXIgQT0zRGZ1bmN0aW9uKD0KZSx0LG4pe3JldHVybiBU
KGUsZnVuY3Rpb24oZSl7eC5pc0FycmF5KGUpP3Q/by5hcHBseShuLGUpOkEoZSx0LG4pOm4ucHVz
aChlPQopfSksbn07eC5mbGF0dGVuPTNEZnVuY3Rpb24oZSx0KXtyZXR1cm4gQShlLHQsW10pfSx4
LndpdGhvdXQ9M0RmdW5jdGlvbihlKXs9CnJldHVybiB4LmRpZmZlcmVuY2UoZSx1LmNhbGwoYXJn
dW1lbnRzLDEpKX0seC51bmlxPTNEeC51bmlxdWU9M0RmdW5jdGlvbihlLD0KdCxuLHIpe3guaXNG
dW5jdGlvbih0KSYmKHI9M0RuLG49M0R0LHQ9M0QhMSk7dmFyIGk9M0RuP3gubWFwKGUsbixyKTpl
LHM9M0RbPQpdLG89M0RbXTtyZXR1cm4gVChpLGZ1bmN0aW9uKG4scil7aWYodD8hcnx8b1tvLmxl
bmd0aC0xXSE9M0Q9M0RuOiF4LmNvbnRhaW49CnMobyxuKSlvLnB1c2gobikscy5wdXNoKGVbcl0p
fSksc30seC51bmlvbj0zRGZ1bmN0aW9uKCl7cmV0dXJuIHgudW5pcShhLmFwcD0KbHkocixhcmd1
bWVudHMpKX0seC5pbnRlcnNlY3Rpb249M0RmdW5jdGlvbihlKXt2YXIgdD0zRHUuY2FsbChhcmd1
bWVudHMsMSk7PQpyZXR1cm4geC5maWx0ZXIoeC51bmlxKGUpLGZ1bmN0aW9uKGUpe3JldHVybiB4
LmV2ZXJ5KHQsZnVuY3Rpb24odCl7cmV0dXJuIHg9Ci5pbmRleE9mKHQsZSk+PTNEMH0pfSl9LHgu
ZGlmZmVyZW5jZT0zRGZ1bmN0aW9uKGUpe3ZhciB0PTNEYS5hcHBseShyLHUuY2FsbD0KKGFyZ3Vt
ZW50cywxKSk7cmV0dXJuIHguZmlsdGVyKGUsZnVuY3Rpb24oZSl7cmV0dXJuIXguY29udGFpbnMo
dCxlKX0pfSx4LnppPQpwPTNEZnVuY3Rpb24oKXt2YXIgZT0zRHUuY2FsbChhcmd1bWVudHMpLHQ9
M0R4Lm1heCh4LnBsdWNrKGUsImxlbmd0aCIpKSxuPQo9M0RuZXcgQXJyYXkodCk7Zm9yKHZhciBy
PTNEMDtyPHQ7cisrKW5bcl09M0R4LnBsdWNrKGUsIiIrcik7cmV0dXJuIG59LHgudW49CnppcD0z
RGZ1bmN0aW9uKGUpe3ZhciB0PTNEW107cmV0dXJuIHguZWFjaChlLGZ1bmN0aW9uKGUsbil7eC5l
YWNoKGUsZnVuY3Rpbz0KbihlLHIpe3QubGVuZ3RoPD0zRHImJih0W3JdPTNEW10pLHRbcl1bbl09
M0RlfSl9KSx0fSx4Lm9iamVjdD0zRGZ1bmN0aW9uKGUsPQp0KXtpZihlPTNEPTNEbnVsbClyZXR1
cm57fTt2YXIgbj0zRHt9O2Zvcih2YXIgcj0zRDAsaT0zRGUubGVuZ3RoO3I8aTtyKyspdD89Cm5b
ZVtyXV09M0R0W3JdOm5bZVtyXVswXV09M0RlW3JdWzFdO3JldHVybiBufSx4LmluZGV4T2Y9M0Rm
dW5jdGlvbihlLHQsbil7aT0KZihlPTNEPTNEbnVsbClyZXR1cm4tMTt2YXIgcj0zRDAsaT0zRGUu
bGVuZ3RoO2lmKG4pe2lmKHR5cGVvZiBuIT0zRCJudW1iZXIiPQopcmV0dXJuIHI9M0R4LnNvcnRl
ZEluZGV4KGUsdCksZVtyXT0zRD0zRD0zRHQ/cjotMTtyPTNEbjwwP01hdGgubWF4KDAsaStuKTo9
Cm59aWYoeSYmZS5pbmRleE9mPTNEPTNEPTNEeSlyZXR1cm4gZS5pbmRleE9mKHQsbik7Zm9yKDty
PGk7cisrKWlmKGVbcl09M0Q9Cj0zRD0zRHQpcmV0dXJuIHI7cmV0dXJuLTF9LHgubGFzdEluZGV4
T2Y9M0RmdW5jdGlvbihlLHQsbil7aWYoZT0zRD0zRG51bGwpcj0KZXR1cm4tMTt2YXIgcj0zRG4h
PTNEbnVsbDtpZihiJiZlLmxhc3RJbmRleE9mPTNEPTNEPTNEYilyZXR1cm4gcj9lLmxhc3RJbmRl
PQp4T2YodCxuKTplLmxhc3RJbmRleE9mKHQpO3ZhciBpPTNEcj9uOmUubGVuZ3RoO3doaWxlKGkt
LSlpZihlW2ldPTNEPTNEPTNEdCk9CnJldHVybiBpO3JldHVybi0xfSx4LnJhbmdlPTNEZnVuY3Rp
b24oZSx0LG4pe2FyZ3VtZW50cy5sZW5ndGg8PTNEMSYmKHQ9M0RlfD0KfDAsZT0zRDApLG49M0Rh
cmd1bWVudHNbMl18fDE7dmFyIHI9M0RNYXRoLm1heChNYXRoLmNlaWwoKHQtZSkvbiksMCksaT0z
RDAsPQpzPTNEbmV3IEFycmF5KHIpO3doaWxlKGk8cilzW2krK109M0RlLGUrPTNEbjtyZXR1cm4g
c307dmFyIE89M0RmdW5jdGlvbigpe309Cjt4LmJpbmQ9M0RmdW5jdGlvbihlLHQpe3ZhciBuLHI7
aWYoZS5iaW5kPTNEPTNEPTNEUyYmUylyZXR1cm4gUy5hcHBseShlLHUuYz0KYWxsKGFyZ3VtZW50
cywxKSk7aWYoIXguaXNGdW5jdGlvbihlKSl0aHJvdyBuZXcgVHlwZUVycm9yO3JldHVybiBuPTNE
dS5jYWxsPQooYXJndW1lbnRzLDIpLHI9M0RmdW5jdGlvbigpe2lmKHRoaXMgaW5zdGFuY2VvZiBy
KXtPLnByb3RvdHlwZT0zRGUucHJvdG90eXA9CmU7dmFyIGk9M0RuZXcgTztPLnByb3RvdHlwZT0z
RG51bGw7dmFyIHM9M0RlLmFwcGx5KGksbi5jb25jYXQodS5jYWxsKGFyZ3VtZT0KbnRzKSkpO3Jl
dHVybiBPYmplY3Qocyk9M0Q9M0Q9M0RzP3M6aX1yZXR1cm4gZS5hcHBseSh0LG4uY29uY2F0KHUu
Y2FsbChhcmd1PQptZW50cykpKX19LHgucGFydGlhbD0zRGZ1bmN0aW9uKGUpe3ZhciB0PTNEdS5j
YWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gZnVuY3Q9Cmlvbigpe3JldHVybiBlLmFwcGx5KHRoaXMs
dC5jb25jYXQodS5jYWxsKGFyZ3VtZW50cykpKX19LHguYmluZEFsbD0zRGZ1bmN0aT0Kb24oZSl7
dmFyIHQ9M0R1LmNhbGwoYXJndW1lbnRzLDEpO2lmKHQubGVuZ3RoPTNEPTNEPTNEMCl0aHJvdyBu
ZXcgRXJyb3IoImJpPQpuZEFsbCBtdXN0IGJlIHBhc3NlZCBmdW5jdGlvbiBuYW1lcyIpO3JldHVy
biBUKHQsZnVuY3Rpb24odCl7ZVt0XT0zRHguYmluZCg9CmVbdF0sZSl9KSxlfSx4Lm1lbW9pemU9
M0RmdW5jdGlvbihlLHQpe3ZhciBuPTNEe307cmV0dXJuIHR8fCh0PTNEeC5pZGVudGl0eT0KKSxm
dW5jdGlvbigpe3ZhciByPTNEdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHguaGFzKG4s
cik/bltyXTpuW3JdPTNEPQplLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LHguZGVsYXk9M0RmdW5j
dGlvbihlLHQpe3ZhciBuPTNEdS5jYWxsKGFyZ3VtZW50cyw9CjIpO3JldHVybiBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkobnVsbCxuKX0sdCl9LHguZGVmZXI9M0RmdW5jdD0K
aW9uKGUpe3JldHVybiB4LmRlbGF5LmFwcGx5KHgsW2UsMV0uY29uY2F0KHUuY2FsbChhcmd1bWVu
dHMsMSkpKX0seC50aHJvdHRsPQplPTNEZnVuY3Rpb24oZSx0LG4pe3ZhciByLGkscyxvLHU9M0Qw
LGE9M0RmdW5jdGlvbigpe3U9M0RuZXcgRGF0ZSxzPTNEbnVsbCw9Cm89M0RlLmFwcGx5KHIsaSl9
O3JldHVybiBmdW5jdGlvbigpe3ZhciBmPTNEbmV3IERhdGU7IXUmJm49M0Q9M0Q9M0QhMSYmKHU9
Cj0zRGYpO3ZhciBsPTNEdC0oZi11KTtyZXR1cm4gcj0zRHRoaXMsaT0zRGFyZ3VtZW50cyxsPD0z
RDA/KGNsZWFyVGltZW91dChzKT0KLHM9M0RudWxsLHU9M0RmLG89M0RlLmFwcGx5KHIsaSkpOnN8
fChzPTNEc2V0VGltZW91dChhLGwpKSxvfX0seC5kZWJvdW5jZT0KPTNEZnVuY3Rpb24oZSx0LG4p
e3ZhciByLGk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM9M0R0aGlzLG89M0Rhcmd1bWVudHMsdT0K
PTNEZnVuY3Rpb24oKXtyPTNEbnVsbCxufHwoaT0zRGUuYXBwbHkocyxvKSl9LGE9M0RuJiYhcjty
ZXR1cm4gY2xlYXJUaW1lb3V0PQoocikscj0zRHNldFRpbWVvdXQodSx0KSxhJiYoaT0zRGUuYXBw
bHkocyxvKSksaX19LHgub25jZT0zRGZ1bmN0aW9uKGUpe3ZhciA9CnQ9M0QhMSxuO3JldHVybiBm
dW5jdGlvbigpe3JldHVybiB0P246KHQ9M0QhMCxuPTNEZS5hcHBseSh0aGlzLGFyZ3VtZW50cyks
ZT0KPTNEbnVsbCxuKX19LHgud3JhcD0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7
dmFyIG49M0RbZV07cmV0dXJuIG8uPQphcHBseShuLGFyZ3VtZW50cyksdC5hcHBseSh0aGlzLG4p
fX0seC5jb21wb3NlPTNEZnVuY3Rpb24oKXt2YXIgZT0zRGFyZ3VtZW49CnRzO3JldHVybiBmdW5j
dGlvbigpe3ZhciB0PTNEYXJndW1lbnRzO2Zvcih2YXIgbj0zRGUubGVuZ3RoLTE7bj49M0QwO24t
LSl0PQo9M0RbZVtuXS5hcHBseSh0aGlzLHQpXTtyZXR1cm4gdFswXX19LHguYWZ0ZXI9M0RmdW5j
dGlvbihlLHQpe3JldHVybiBlPD0zRDA9Cj90KCk6ZnVuY3Rpb24oKXtpZigtLWU8MSlyZXR1cm4g
dC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSx4LmtleXM9M0RFfHxmdW5jdD0KaW9uKGUpe2lmKGUh
PTNEPTNET2JqZWN0KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgb2JqZWN0Iik7dmFy
IHQ9M0RbPQpdO2Zvcih2YXIgbiBpbiBlKXguaGFzKGUsbikmJnQucHVzaChuKTtyZXR1cm4gdH0s
eC52YWx1ZXM9M0RmdW5jdGlvbihlKXt2YXI9CiB0PTNEW107Zm9yKHZhciBuIGluIGUpeC5oYXMo
ZSxuKSYmdC5wdXNoKGVbbl0pO3JldHVybiB0fSx4LnBhaXJzPTNEZnVuY3Rpbz0KbihlKXt2YXIg
dD0zRFtdO2Zvcih2YXIgbiBpbiBlKXguaGFzKGUsbikmJnQucHVzaChbbixlW25dXSk7cmV0dXJu
IHR9LHguaW52PQplcnQ9M0RmdW5jdGlvbihlKXt2YXIgdD0zRHt9O2Zvcih2YXIgbiBpbiBlKXgu
aGFzKGUsbikmJih0W2Vbbl1dPTNEbik7cmV0dXI9Cm4gdH0seC5mdW5jdGlvbnM9M0R4Lm1ldGhv
ZHM9M0RmdW5jdGlvbihlKXt2YXIgdD0zRFtdO2Zvcih2YXIgbiBpbiBlKXguaXNGdT0KbmN0aW9u
KGVbbl0pJiZ0LnB1c2gobik7cmV0dXJuIHQuc29ydCgpfSx4LmV4dGVuZD0zRGZ1bmN0aW9uKGUp
e3JldHVybiBUKHUuPQpjYWxsKGFyZ3VtZW50cywxKSxmdW5jdGlvbih0KXtpZih0KWZvcih2YXIg
biBpbiB0KWVbbl09M0R0W25dfSksZX0seC5waWNrPQo9M0RmdW5jdGlvbihlKXt2YXIgdD0zRHt9
LG49M0RhLmFwcGx5KHIsdS5jYWxsKGFyZ3VtZW50cywxKSk7cmV0dXJuIFQobixmdW49CmN0aW9u
KG4pe24gaW4gZSYmKHRbbl09M0RlW25dKX0pLHR9LHgub21pdD0zRGZ1bmN0aW9uKGUpe3ZhciB0
PTNEe30sbj0zRGEuYT0KcHBseShyLHUuY2FsbChhcmd1bWVudHMsMSkpO2Zvcih2YXIgaSBpbiBl
KXguY29udGFpbnMobixpKXx8KHRbaV09M0RlW2ldKTtyPQpldHVybiB0fSx4LmRlZmF1bHRzPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIFQodS5jYWxsKGFyZ3VtZW50cywxKSxmdW5jdGlvbih0KXs9Cmlm
KHQpZm9yKHZhciBuIGluIHQpZVtuXT0zRD0zRD0zRHZvaWQgMCYmKGVbbl09M0R0W25dKX0pLGV9
LHguY2xvbmU9M0RmdW5jdD0KaW9uKGUpe3JldHVybiB4LmlzT2JqZWN0KGUpP3guaXNBcnJheShl
KT9lLnNsaWNlKCk6eC5leHRlbmQoe30sZSk6ZX0seC50YXA9Cj0zRGZ1bmN0aW9uKGUsdCl7cmV0
dXJuIHQoZSksZX07dmFyIE09M0RmdW5jdGlvbihlLHQsbixyKXtpZihlPTNEPTNEPTNEdClyZT0K
dHVybiBlIT0zRD0zRDB8fDEvZT0zRD0zRDEvdDtpZihlPTNEPTNEbnVsbHx8dD0zRD0zRG51bGwp
cmV0dXJuIGU9M0Q9M0Q9M0R0PQo7ZSBpbnN0YW5jZW9mIHgmJihlPTNEZS5fd3JhcHBlZCksdCBp
bnN0YW5jZW9mIHgmJih0PTNEdC5fd3JhcHBlZCk7dmFyIGk9M0Q9CmYuY2FsbChlKTtpZihpIT0z
RGYuY2FsbCh0KSlyZXR1cm4hMTtzd2l0Y2goaSl7Y2FzZSJbb2JqZWN0IFN0cmluZ10iOnJldHVy
bj0KIGU9M0Q9M0RTdHJpbmcodCk7Y2FzZSJbb2JqZWN0IE51bWJlcl0iOnJldHVybiBlIT0zRCtl
P3QhPTNEK3Q6ZT0zRD0zRDA/MS9lPQo9M0Q9M0QxL3Q6ZT0zRD0zRCt0O2Nhc2UiW29iamVjdCBE
YXRlXSI6Y2FzZSJbb2JqZWN0IEJvb2xlYW5dIjpyZXR1cm4rZT0zRD0KPTNEK3Q7Y2FzZSJbb2Jq
ZWN0IFJlZ0V4cF0iOnJldHVybiBlLnNvdXJjZT0zRD0zRHQuc291cmNlJiZlLmdsb2JhbD0zRD0z
RHQuPQpnbG9iYWwmJmUubXVsdGlsaW5lPTNEPTNEdC5tdWx0aWxpbmUmJmUuaWdub3JlQ2FzZT0z
RD0zRHQuaWdub3JlQ2FzZX1pZih0eXA9CmVvZiBlIT0zRCJvYmplY3QifHx0eXBlb2YgdCE9M0Qi
b2JqZWN0IilyZXR1cm4hMTt2YXIgcz0zRG4ubGVuZ3RoO3doaWxlKHMtLT0KKWlmKG5bc109M0Q9
M0RlKXJldHVybiByW3NdPTNEPTNEdDtuLnB1c2goZSksci5wdXNoKHQpO3ZhciBvPTNEMCx1PTNE
ITA7aWYoPQppPTNEPTNEIltvYmplY3QgQXJyYXldIil7bz0zRGUubGVuZ3RoLHU9M0RvPTNEPTNE
dC5sZW5ndGg7aWYodSl3aGlsZShvLS0paWY9CighKHU9M0RNKGVbb10sdFtvXSxuLHIpKSlicmVh
a31lbHNle3ZhciBhPTNEZS5jb25zdHJ1Y3RvcixsPTNEdC5jb25zdHJ1Y3Rvcj0KO2lmKGEhPTNE
PTNEbCYmISh4LmlzRnVuY3Rpb24oYSkmJmEgaW5zdGFuY2VvZiBhJiZ4LmlzRnVuY3Rpb24obCkm
JmwgaW5zdGFuPQpjZW9mIGwpKXJldHVybiExO2Zvcih2YXIgYyBpbiBlKWlmKHguaGFzKGUsYykp
e28rKztpZighKHU9M0R4Lmhhcyh0LGMpJiZNKGU9CltjXSx0W2NdLG4scikpKWJyZWFrfWlmKHUp
e2ZvcihjIGluIHQpaWYoeC5oYXModCxjKSYmIShvLS0pKWJyZWFrO3U9M0Qhb319cj0KZXR1cm4g
bi5wb3AoKSxyLnBvcCgpLHV9O3guaXNFcXVhbD0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE0oZSx0
LFtdLFtdKX0seC5pPQpzRW1wdHk9M0RmdW5jdGlvbihlKXtpZihlPTNEPTNEbnVsbClyZXR1cm4h
MDtpZih4LmlzQXJyYXkoZSl8fHguaXNTdHJpbmcoZSk9CilyZXR1cm4gZS5sZW5ndGg9M0Q9M0Q9
M0QwO2Zvcih2YXIgdCBpbiBlKWlmKHguaGFzKGUsdCkpcmV0dXJuITE7cmV0dXJuITB9LD0KeC5p
c0VsZW1lbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4hIWUmJmUubm9kZVR5cGU9M0Q9M0Q9M0QxfSx4
LmlzQXJyYXk9M0R3fHxmPQp1bmN0aW9uKGUpe3JldHVybiBmLmNhbGwoZSk9M0Q9M0QiW29iamVj
dCBBcnJheV0ifSx4LmlzT2JqZWN0PTNEZnVuY3Rpb24oZSk9CntyZXR1cm4gZT0zRD0zRD0zRE9i
amVjdChlKX0sVChbIkFyZ3VtZW50cyIsIkZ1bmN0aW9uIiwiU3RyaW5nIiwiTnVtYmVyIiwiRD0K
YXRlIiwiUmVnRXhwIl0sZnVuY3Rpb24oZSl7eFsiaXMiK2VdPTNEZnVuY3Rpb24odCl7cmV0dXJu
IGYuY2FsbCh0KT0zRD0zRCJbPQpvYmplY3QgIitlKyJdIn19KSx4LmlzQXJndW1lbnRzKGFyZ3Vt
ZW50cyl8fCh4LmlzQXJndW1lbnRzPTNEZnVuY3Rpb24oZSl7cmU9CnR1cm4hIWUmJiEheC5oYXMo
ZSwiY2FsbGVlIil9KSx0eXBlb2YgLy4vIT0zRCJmdW5jdGlvbiImJih4LmlzRnVuY3Rpb249M0Rm
dT0KbmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT0zRD0zRCJmdW5jdGlvbiJ9KSx4LmlzRmluaXRl
PTNEZnVuY3Rpb24oZSl7cmV0dXJuPQogaXNGaW5pdGUoZSkmJiFpc05hTihwYXJzZUZsb2F0KGUp
KX0seC5pc05hTj0zRGZ1bmN0aW9uKGUpe3JldHVybiB4LmlzTnVtYmU9CnIoZSkmJmUhPTNEK2V9
LHguaXNCb29sZWFuPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGU9M0Q9M0Q9M0QhMHx8ZT0zRD0zRD0z
RCExfD0KfGYuY2FsbChlKT0zRD0zRCJbb2JqZWN0IEJvb2xlYW5dIn0seC5pc051bGw9M0RmdW5j
dGlvbihlKXtyZXR1cm4gZT0zRD0zRD0KPTNEbnVsbH0seC5pc1VuZGVmaW5lZD0zRGZ1bmN0aW9u
KGUpe3JldHVybiBlPTNEPTNEPTNEdm9pZCAwfSx4Lmhhcz0zRGZ1bmN0PQppb24oZSx0KXtyZXR1
cm4gbC5jYWxsKGUsdCl9LHgubm9Db25mbGljdD0zRGZ1bmN0aW9uKCl7cmV0dXJuIGUuXz0zRHQs
dGhpc309Cix4LmlkZW50aXR5PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGV9LHgudGltZXM9M0RmdW5j
dGlvbihlLHQsbil7dmFyIHI9M0RBcnJheT0KKGUpO2Zvcih2YXIgaT0zRDA7aTxlO2krKylyW2ld
PTNEdC5jYWxsKG4saSk7cmV0dXJuIHJ9LHgucmFuZG9tPTNEZnVuY3Rpb24oPQplLHQpe3JldHVy
biB0PTNEPTNEbnVsbCYmKHQ9M0RlLGU9M0QwKSxlK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoo
dC1lKzEpKX09Cjt2YXIgXz0zRHtlc2NhcGU6eyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4iOiIm
Z3Q7IiwnIic6IiZxdW90OyIsIiciOiImI3gyNz0KOyIsIi8iOiImI3gyRjsifX07Xy51bmVzY2Fw
ZT0zRHguaW52ZXJ0KF8uZXNjYXBlKTt2YXIgRD0zRHtlc2NhcGU6bmV3IFJlZ0V4PQpwKCJbIit4
LmtleXMoXy5lc2NhcGUpLmpvaW4oIiIpKyJdIiwiZyIpLHVuZXNjYXBlOm5ldyBSZWdFeHAoIigi
K3gua2V5cyhfLnU9Cm5lc2NhcGUpLmpvaW4oInwiKSsiKSIsImciKX07eC5lYWNoKFsiZXNjYXBl
IiwidW5lc2NhcGUiXSxmdW5jdGlvbihlKXt4W2VdPQo9M0RmdW5jdGlvbih0KXtyZXR1cm4gdD0z
RD0zRG51bGw/IiI6KCIiK3QpLnJlcGxhY2UoRFtlXSxmdW5jdGlvbih0KXtyZXR1cm49CiBfW2Vd
W3RdfSl9fSkseC5yZXN1bHQ9M0RmdW5jdGlvbihlLHQpe2lmKGU9M0Q9M0RudWxsKXJldHVybiB2
b2lkIDA7dmFyIG49Cj0zRGVbdF07cmV0dXJuIHguaXNGdW5jdGlvbihuKT9uLmNhbGwoZSk6bn0s
eC5taXhpbj0zRGZ1bmN0aW9uKGUpe1QoeC5mdW5jdD0KaW9ucyhlKSxmdW5jdGlvbih0KXt2YXIg
bj0zRHhbdF09M0RlW3RdO3gucHJvdG90eXBlW3RdPTNEZnVuY3Rpb24oKXt2YXIgZT0KPTNEW3Ro
aXMuX3dyYXBwZWRdO3JldHVybiBvLmFwcGx5KGUsYXJndW1lbnRzKSxGLmNhbGwodGhpcyxuLmFw
cGx5KHgsZSkpfX0pPQp9O3ZhciBQPTNEMDt4LnVuaXF1ZUlkPTNEZnVuY3Rpb24oZSl7dmFyIHQ9
M0QrK1ArIiI7cmV0dXJuIGU/ZSt0OnR9LHgudGVtcGw9CmF0ZVNldHRpbmdzPTNEe2V2YWx1YXRl
Oi88JShbXHNcU10rPyklPi9nLGludGVycG9sYXRlOi88JT0zRChbXHNcU10rPyklPi9nLD0KZXNj
YXBlOi88JS0oW1xzXFNdKz8pJT4vZ307dmFyIEg9M0QvKC4pXi8sQj0zRHsiJyI6IiciLCJcXCI6
IlxcIiwiXHIiOiJyIiwiPQpcbiI6Im4iLCIJIjoidCIsIlx1MjAyOCI6InUyMDI4IiwiXHUyMDI5
IjoidTIwMjkifSxqPTNEL1xcfCd8XHJ8XG58XHR8XHUyMDI9Cjh8XHUyMDI5L2c7eC50ZW1wbGF0
ZT0zRGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtuPTNEeC5kZWZhdWx0cyh7fSxuLHgudGVtcGxhdD0K
ZVNldHRpbmdzKTt2YXIgaT0zRG5ldyBSZWdFeHAoWyhuLmVzY2FwZXx8SCkuc291cmNlLChuLmlu
dGVycG9sYXRlfHxIKS5zb3VyPQpjZSwobi5ldmFsdWF0ZXx8SCkuc291cmNlXS5qb2luKCJ8Iikr
InwkIiwiZyIpLHM9M0QwLG89M0QiX19wKz0zRCciO2UucmVwbGE9CmNlKGksZnVuY3Rpb24odCxu
LHIsaSx1KXtyZXR1cm4gbys9M0RlLnNsaWNlKHMsdSkucmVwbGFjZShqLGZ1bmN0aW9uKGUpe3Jl
dD0KdXJuIlxcIitCW2VdfSksbiYmKG8rPTNEIicrXG4oKF9fdD0zRCgiK24rIikpPTNEPTNEbnVs
bD8nJzpfLmVzY2FwZShfX3QpKStcPQpuJyIpLHImJihvKz0zRCInK1xuKChfX3Q9M0QoIityKyIp
KT0zRD0zRG51bGw/Jyc6X190KStcbiciKSxpJiYobys9M0QiJztcbiI9CitpKyJcbl9fcCs9M0Qn
Iikscz0zRHUrdC5sZW5ndGgsdH0pLG8rPTNEIic7XG4iLG4udmFyaWFibGV8fChvPTNEIndpdGgo
b2JqfD0KfHt9KXtcbiIrbysifVxuIiksbz0zRCJ2YXIgX190LF9fcD0zRCcnLF9faj0zREFycmF5
LnByb3RvdHlwZS5qb2luLHByaW50PTNEPQpmdW5jdGlvbigpe19fcCs9M0RfX2ouY2FsbChhcmd1
bWVudHMsJycpO307XG4iK28rInJldHVybiBfX3A7XG4iO3RyeXtyPTNEbmU9CncgRnVuY3Rpb24o
bi52YXJpYWJsZXx8Im9iaiIsIl8iLG8pfWNhdGNoKHUpe3Rocm93IHUuc291cmNlPTNEbyx1fWlm
KHQpcmV0dT0Kcm4gcih0LHgpO3ZhciBhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIHIuY2FsbCh0aGlz
LGUseCl9O3JldHVybiBhLnNvdXJjZT0zRCJmPQp1bmN0aW9uKCIrKG4udmFyaWFibGV8fCJvYmoi
KSsiKXtcbiIrbysifSIsYX0seC5jaGFpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiA9CngoZSkuY2hh
aW4oKX07dmFyIEY9M0RmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fY2hhaW4/eChlKS5jaGFpbigp
OmV9O3gubWl4aT0Kbih4KSxUKFsicG9wIiwicHVzaCIsInJldmVyc2UiLCJzaGlmdCIsInNvcnQi
LCJzcGxpY2UiLCJ1bnNoaWZ0Il0sZnVuY3Rpb24oPQplKXt2YXIgdD0zRHJbZV07eC5wcm90b3R5
cGVbZV09M0RmdW5jdGlvbigpe3ZhciBuPTNEdGhpcy5fd3JhcHBlZDtyZXR1cm4gdC49CmFwcGx5
KG4sYXJndW1lbnRzKSwoZT0zRD0zRCJzaGlmdCJ8fGU9M0Q9M0Qic3BsaWNlIikmJm4ubGVuZ3Ro
PTNEPTNEPTNEMCYmZD0KZWxldGUgblswXSxGLmNhbGwodGhpcyxuKX19KSxUKFsiY29uY2F0Iiwi
am9pbiIsInNsaWNlIl0sZnVuY3Rpb24oZSl7dmFyIHQ9Cj0zRHJbZV07eC5wcm90b3R5cGVbZV09
M0RmdW5jdGlvbigpe3JldHVybiBGLmNhbGwodGhpcyx0LmFwcGx5KHRoaXMuX3dyYXBwZT0KZCxh
cmd1bWVudHMpKX19KSx4LmV4dGVuZCh4LnByb3RvdHlwZSx7Y2hhaW46ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5fY2hhaW49Cj0zRCEwLHRoaXN9LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
X3dyYXBwZWR9fSl9LmNhbGwodGhpcyksZGVmaW5lKCJsaT0KYnMvdW5kZXJzY29yZSIsZnVuY3Rp
b24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQsbjtyZXR1cm4gdHx8ZS5ffX0odGhpcykpPQos
ZGVmaW5lKCJ1dGlscy91dGlscyIsWyJsaWJzL3VuZGVyc2NvcmUiXSxmdW5jdGlvbihlKXtmdW5j
dGlvbiB0KGUpe3JldHVybiA9CiQoIjxkaXYvPiIpLnRleHQoZSkuaHRtbCgpfWZ1bmN0aW9uIG4o
ZSl7dG9wLl9fdXRpbHNfX2dldF9fPTNEdG9wLl9fdXRpbHNfXz0KZ2V0X198fHt9LGUuY2FjaGUm
JnRvcC5fX3V0aWxzX19nZXRfX1tlLnVybF0/KGUuc3VjY2VzcyYmZS5zdWNjZXNzKHRvcC5fX3V0
PQppbHNfX2dldF9fW2UudXJsXSksY29uc29sZS5kZWJ1ZygidXRpbHMuanM6OmdldCgpIC0gRmV0
Y2hpbmcgZnJvbSBjYWNoZSBbIis9CmUudXJsKyJdLiIpKTpyKHt1cmw6ZS51cmwsZGF0YTplLmRh
dGEsc3VjY2VzczpmdW5jdGlvbih0KXt0b3AuX191dGlsc19fZ2V0Xz0KX1tlLnVybF09M0R0LGUu
c3VjY2VzcyYmZS5zdWNjZXNzKHQpfSxlcnJvcjpmdW5jdGlvbih0KXtlLmVycm9yJiZlLmVycm9y
KHQpPQp9fSl9ZnVuY3Rpb24gcihlKXt2YXIgdD0zRHtjb250ZW50VHlwZToiYXBwbGljYXRpb24v
anNvbiIsdHlwZTplLnR5cGV8fCJHRVQ9CiIsZGF0YTplLmRhdGF8fHt9LHVybDplLnVybH07dC50
eXBlPTNEPTNEIkdFVCJ8fHQudHlwZT0zRD0zRCJERUxFVEUiPyh0LnVybD0KLmluZGV4T2YoIj8i
KT0zRD0zRC0xP3QudXJsKz0zRCI/Ijp0LnVybCs9M0QiJiIsdC51cmw9M0R0LnVybCskLnBhcmFt
KHQuZGF0PQphKSx0LmRhdGE9M0RudWxsKToodC5kYXRhVHlwZT0zRCJqc29uIix0LnVybD0zRHQu
dXJsLHQuZGF0YT0zREpTT04uc3RyaW5naWY9CnkodC5kYXRhKSksJC5hamF4KHQpLmRvbmUoZnVu
Y3Rpb24odCl7aWYodHlwZW9mIHQ9M0Q9M0Qic3RyaW5nIil0cnl7dD0zRHQucj0KZXBsYWNlKCJJ
bmZpbml0eSwiLCciSW5maW5pdHkiLCcpLHQ9M0RqUXVlcnkucGFyc2VKU09OKHQpfWNhdGNoKG4p
e2NvbnNvbGUuPQpkZWJ1ZyhuKX1lLnN1Y2Nlc3MmJmUuc3VjY2Vzcyh0KX0pLmZhaWwoZnVuY3Rp
b24odCl7dmFyIG49M0RudWxsO3RyeXtuPTNEalE9CnVlcnkucGFyc2VKU09OKHQucmVzcG9uc2VU
ZXh0KX1jYXRjaChyKXtuPTNEdC5yZXNwb25zZVRleHR9ZS5lcnJvciYmZS5lcnJvcj0KKG4sdCl9
KX1mdW5jdGlvbiBpKGUsdCl7dmFyIG49M0QkKCc8ZGl2IGNsYXNzPTNEIicrZSsnIj48L2Rpdj4n
KTtuLmFwcGVuZFRvPQooIjplcSgwKSIpO3ZhciByPTNEbi5jc3ModCk7cmV0dXJuIG4ucmVtb3Zl
KCkscn1mdW5jdGlvbiBzKGUpeyQoJ2xpbmtbaHJlZl49Cj0zRCInK2UrJyJdJykubGVuZ3RofHwk
KCc8bGluayBocmVmPTNEIicrZ2FsYXh5X2NvbmZpZy5yb290K2UrJyIgcmVsPTNEInN0eT0KbGVz
aGVldCI+JykuYXBwZW5kVG8oImhlYWQiKX1mdW5jdGlvbiBvKHQsbil7cmV0dXJuIHQ/ZS5kZWZh
dWx0cyh0LG4pOm59ZnVuPQpjdGlvbiB1KGUsdCl7dmFyIG49M0QiIjtpZihlPj0zRDFlMTEpZS89
M0QxZTExLG49M0QiVEIiO2Vsc2UgaWYoZT49M0QxZTgpZS89Cj0zRDFlOCxuPTNEIkdCIjtlbHNl
IGlmKGU+PTNEMWU1KWUvPTNEMWU1LG49M0QiTUIiO2Vsc2UgaWYoZT49M0QxMDApZS89M0QxMD0K
MCxuPTNEIktCIjtlbHNle2lmKCEoZT4wKSlyZXR1cm4iPHN0cm9uZz4tPC9zdHJvbmc+IjtlKj0z
RDEwLG49M0QiYiJ9dmFyIHI9Cj0zRE1hdGgucm91bmQoZSkvMTA7cmV0dXJuIHQ/cisiICIrbjoi
PHN0cm9uZz4iK3IrIjwvc3Ryb25nPiAiK259ZnVuY3Rpb24gYT0KKCl7cmV0dXJuIngiK01hdGgu
cmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLDkpfWZ1bmN0aW9uIGYoZSl7dmFyIHQ9
Cj0zRCQoIjxwPjwvcD4iKTtyZXR1cm4gdC5hcHBlbmQoZSksdH1mdW5jdGlvbiBsKCl7dmFyIGU9
M0RuZXcgRGF0ZSx0PTNEKGUuZz0KZXRIb3VycygpPDEwPyIwIjoiIikrZS5nZXRIb3VycygpLG49
M0QoZS5nZXRNaW51dGVzKCk8MTA/IjAiOiIiKStlLmdldE1pbnV0PQplcygpLHI9M0RlLmdldERh
dGUoKSsiLyIrKGUuZ2V0TW9udGgoKSsxKSsiLyIrZS5nZXRGdWxsWWVhcigpKyIsICIrdCsiOiIr
bjs9CnJldHVybiByfXJldHVybntjc3NMb2FkRmlsZTpzLGNzc0dldEF0dHJpYnV0ZTppLGdldDpu
LG1lcmdlOm8sYnl0ZXNUb1N0cmluZz0KOnUsdXVpZDphLHRpbWU6bCx3cmFwOmYscmVxdWVzdDpy
LHNhbml0aXplOnR9fSksZGVmaW5lKCJtdmMvdWkvdWktcG9ydGxldCIsPQpbInV0aWxzL3V0aWxz
Il0sZnVuY3Rpb24oZSl7dmFyIHQ9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7dmlzaWJsZTohMSxv
cHRpb249CnNEZWZhdWx0Ont0aXRsZToiIixpY29uOiIiLGJ1dHRvbnM6bnVsbCxib2R5Om51bGws
c2Nyb2xsYWJsZTohMCxub3BhZGRpbmc6IT0KMSxvcGVyYXRpb25zOm51bGwscGxhY2VtZW50OiJi
b3R0b20iLGNsczoidWktcG9ydGxldCIsb3BlcmF0aW9uc19mbHQ6InJpZ2h0PQoifSwkdGl0bGU6
bnVsbCwkY29udGVudDpudWxsLCRidXR0b25zOm51bGwsJG9wZXJhdGlvbnM6bnVsbCxpbml0aWFs
aXplOmZ1bmM9CnRpb24odCl7dGhpcy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0Rl
ZmF1bHQpLHRoaXMuc2V0RWxlbWVudCh0aGlzLj0KX3RlbXBsYXRlKHRoaXMub3B0aW9ucykpLHRo
aXMuJGNvbnRlbnQ9M0R0aGlzLiRlbC5maW5kKCIjY29udGVudCIpLHRoaXMuJHRpPQp0bGU9M0R0
aGlzLiRlbC5maW5kKCIjcG9ydGxldC10aXRsZS10ZXh0Iik7dmFyIG49M0R0aGlzLiRlbC5maW5k
KCIjcG9ydGxldC09CmNvbnRlbnQiKTt0aGlzLm9wdGlvbnMuc2Nyb2xsYWJsZT9uLmFkZENsYXNz
KCJzY3JvbGwiKTp0aGlzLm9wdGlvbnMudGl0bGU/bj0KLmFkZENsYXNzKCJuby1zY3JvbGwiKTpu
LmFkZENsYXNzKCJuby1zY3JvbGwtbm8tdGl0bGUiKSx0aGlzLm9wdGlvbnMubm9wYWRkPQppbmcm
JihuLmNzcygicGFkZGluZyIsIjBweCIpLHRoaXMuJGNvbnRlbnQuY3NzKCJwYWRkaW5nIiwiMHB4
IikpLHRoaXMuJGJ1dHQ9Cm9ucz0zRCQodGhpcy5lbCkuZmluZCgiI2J1dHRvbnMiKTtpZih0aGlz
Lm9wdGlvbnMuYnV0dG9ucyl7dmFyIHI9M0R0aGlzOyQuZT0KYWNoKHRoaXMub3B0aW9ucy5idXR0
b25zLGZ1bmN0aW9uKGUsdCl7dC4kZWwucHJvcCgiaWQiLGUpLHIuJGJ1dHRvbnMuYXBwZW5kPQoo
dC4kZWwpfSl9ZWxzZSB0aGlzLiRidXR0b25zLnJlbW92ZSgpO3RoaXMuJG9wZXJhdGlvbnM9M0Qk
KHRoaXMuZWwpLmZpbmQoIiM9Cm9wZXJhdGlvbnMiKTtpZih0aGlzLm9wdGlvbnMub3BlcmF0aW9u
cyl7dmFyIHI9M0R0aGlzOyQuZWFjaCh0aGlzLm9wdGlvbnMubz0KcGVyYXRpb25zLGZ1bmN0aW9u
KGUsdCl7dC4kZWwucHJvcCgiaWQiLGUpLHIuJG9wZXJhdGlvbnMuYXBwZW5kKHQuJGVsKX0pfXRo
PQppcy5vcHRpb25zLmJvZHkmJnRoaXMuYXBwZW5kKHRoaXMub3B0aW9ucy5ib2R5KX0sYXBwZW5k
OmZ1bmN0aW9uKHQsbil7bj90aGk9CnMuJGNvbnRlbnQuYXBwZW5kKHQpOnRoaXMuJGNvbnRlbnQu
YXBwZW5kKGUud3JhcCh0KSl9LGNvbnRlbnQ6ZnVuY3Rpb24oKXtyZT0KdHVybiB0aGlzLiRjb250
ZW50fSxzaG93OmZ1bmN0aW9uKCl7dGhpcy4kZWwuZmFkZUluKCJmYXN0IiksdGhpcy52aXNpYmxl
PTNEPQohMH0saGlkZTpmdW5jdGlvbigpe3RoaXMuJGVsLmZhZGVPdXQoImZhc3QiKSx0aGlzLnZp
c2libGU9M0QhMX0sZW5hYmxlQnV0dG89Cm46ZnVuY3Rpb24oZSl7dGhpcy4kYnV0dG9ucy5maW5k
KCIjIitlKS5wcm9wKCJkaXNhYmxlZCIsITEpfSxkaXNhYmxlQnV0dG9uOj0KZnVuY3Rpb24oZSl7
dGhpcy4kYnV0dG9ucy5maW5kKCIjIitlKS5wcm9wKCJkaXNhYmxlZCIsITApfSxoaWRlT3BlcmF0
aW9uOmZ1PQpuY3Rpb24oZSl7dGhpcy4kb3BlcmF0aW9ucy5maW5kKCIjIitlKS5oaWRlKCl9LHNo
b3dPcGVyYXRpb246ZnVuY3Rpb24oZSl7dGg9CmlzLiRvcGVyYXRpb25zLmZpbmQoIiMiK2UpLnNo
b3coKX0sc2V0T3BlcmF0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0aGlzLj0KJG9wZXJhdGlv
bnMuZmluZCgiIyIrZSk7bi5vZmYoImNsaWNrIiksbi5vbigiY2xpY2siLHQpfSx0aXRsZTpmdW5j
dGlvbihlKXt2PQphciB0PTNEdGhpcy4kdGl0bGU7cmV0dXJuIGUmJnQuaHRtbChlKSx0Lmh0bWwo
KX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3ZhciA9CnQ9M0QnPGRpdiBpZD0zRCInK2UuaWQrJyIg
Y2xhc3M9M0QiJytlLmNscysnIj4nO3JldHVybiBlLnRpdGxlJiYodCs9M0QnPGRpdj0KIGlkPTNE
InBvcnRsZXQtaGVhZGVyIiBjbGFzcz0zRCJwb3J0bGV0LWhlYWRlciI+PGRpdiBpZD0zRCJvcGVy
YXRpb25zIiBzdHlsPQplPTNEImZsb2F0OiAnK2Uub3BlcmF0aW9uc19mbHQrJzsiPjwvZGl2Picr
JzxkaXYgY2xhc3M9M0QicG9ydGxldC10aXRsZSI+Jyw9CmUuaWNvbiYmKHQrPTNEJzxpIGNsYXNz
PTNEImljb24gZmEgJytlLmljb24rJyI+Jm5ic3A7PC9pPicpLHQrPTNEJzxzcGFuIGlkPQo9M0Qi
cG9ydGxldC10aXRsZS10ZXh0IiBjbGFzcz0zRCJwb3J0bGV0LXRpdGxlLXRleHQiPicrZS50aXRs
ZSsiPC9zcGFuPiIrIjw9Ci9kaXY+IisiPC9kaXY+IiksdCs9M0QnPGRpdiBpZD0zRCJwb3J0bGV0
LWNvbnRlbnQiIGNsYXNzPTNEInBvcnRsZXQtY29udGVudD0KIj4nLGUucGxhY2VtZW50PTNEPTNE
InRvcCImJih0Kz0zRCc8ZGl2IGlkPTNEImJ1dHRvbnMiIGNsYXNzPTNEImJ1dHRvbnMiPjwvPQpk
aXY+JyksdCs9M0QnPGRpdiBpZD0zRCJjb250ZW50IiBjbGFzcz0zRCJjb250ZW50Ij48L2Rpdj4n
LGUucGxhY2VtZW50PTNEPQo9M0QiYm90dG9tIiYmKHQrPTNEJzxkaXYgaWQ9M0QiYnV0dG9ucyIg
Y2xhc3M9M0QiYnV0dG9ucyI+PC9kaXY+JyksdCs9M0QiPC89CmRpdj48L2Rpdj4iLHR9fSk7cmV0
dXJue1ZpZXc6dH19KSxkZWZpbmUoIm12Yy91aS91aS1zZWxlY3QtZGVmYXVsdCIsWyJ1dGlscz0K
L3V0aWxzIl0sZnVuY3Rpb24oZSl7dmFyIHQ9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9u
c0RlZmF1bHQ6e2lkOiIiLGNsPQpzOiIiLGVycm9yX3RleHQ6Ik5vIGRhdGEgYXZhaWxhYmxlIix2
aXNpYmxlOiEwLHdhaXQ6ITEsbXVsdGlwbGU6ITEsc2VhcmNoYWI9CmxlOiExfSxpbml0aWFsaXpl
OmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0
KT0KLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKSx0aGlzLiRz
ZWxlY3Q9M0R0aGlzLiRlbC5maW5kPQooIi5zZWxlY3QiKSx0aGlzLiRpY29uPTNEdGhpcy4kZWwu
ZmluZCgiLmljb24iKSx0aGlzLiRidXR0b249M0R0aGlzLiRlbC5maW49CmQoIi5idXR0b24iKSx0
aGlzLm9wdGlvbnMubXVsdGlwbGU/KHRoaXMuJHNlbGVjdC5wcm9wKCJtdWx0aXBsZSIsITApLHRo
aXMuJD0Kc2VsZWN0LmFkZENsYXNzKCJ1aS1zZWxlY3QtbXVsdGlwbGUiKSx0aGlzLiRpY29uLnJl
bW92ZSgpKTp0aGlzLiRlbC5hZGRDbGFzPQpzKCJ1aS1zZWxlY3QiKSx0aGlzLnVwZGF0ZSh0aGlz
Lm9wdGlvbnMuZGF0YSksdGhpcy5vcHRpb25zLnZhbHVlIT0zRD0zRHVuZGU9CmZpbmVkJiZ0aGlz
LnZhbHVlKHRoaXMub3B0aW9ucy52YWx1ZSksdGhpcy5vcHRpb25zLnZpc2libGV8fHRoaXMuaGlk
ZSgpLHRoaT0Kcy5vcHRpb25zLndhaXQ/dGhpcy53YWl0KCk6dGhpcy5zaG93KCk7dmFyIG49M0R0
aGlzO3RoaXMuJHNlbGVjdC5vbigiY2hhbmdlPQoiLGZ1bmN0aW9uKCl7bi5fY2hhbmdlKCl9KSx0
aGlzLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7bi5fY2hhbmdlKCl9KX0sdmFsdWU9CjpmdW5jdGlv
bihlKXtyZXR1cm4gZSE9M0Q9M0R1bmRlZmluZWQmJih0aGlzLiRzZWxlY3QudmFsKGUpLHRoaXMu
JHNlbGVjdC5zZT0KbGVjdDImJnRoaXMuJHNlbGVjdC5zZWxlY3QyKCJ2YWwiLGUpKSx0aGlzLiRz
ZWxlY3QudmFsKCl9LGZpcnN0OmZ1bmN0aW9uKCl7PQp2YXIgZT0zRHRoaXMuJHNlbGVjdC5maW5k
KCJvcHRpb24iKTtyZXR1cm4gZS5sZW5ndGg+MD9lLnZhbCgpOnVuZGVmaW5lZH0sdmE9CmxpZGF0
ZTpmdW5jdGlvbigpe3ZhciBlPTNEdGhpcy52YWx1ZSgpO2UgaW5zdGFuY2VvZiBBcnJheXx8KGU9
M0RbZV0pO2Zvcih2YT0KciB0IGluIGUpaWYoW251bGwsIm51bGwiLHVuZGVmaW5lZF0uaW5kZXhP
ZihlW3RdKT4tMSlyZXR1cm4hMTtyZXR1cm4hMH0sdGV4PQp0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuJHNlbGVjdC5maW5kKCJvcHRpb246c2VsZWN0ZWQiKS50ZXh0KCl9LHNob3c6ZnVuY3Q9Cmlv
bigpe3RoaXMudW53YWl0KCksdGhpcy4kc2VsZWN0LnNob3coKSx0aGlzLiRlbC5zaG93KCl9LGhp
ZGU6ZnVuY3Rpb24oKXt0aD0KaXMuJGVsLmhpZGUoKX0sd2FpdDpmdW5jdGlvbigpe3RoaXMuJGlj
b24ucmVtb3ZlQ2xhc3MoKSx0aGlzLiRpY29uLmFkZENsYXNzPQooImZhIGZhLXNwaW5uZXIgZmEt
c3BpbiIpfSx1bndhaXQ6ZnVuY3Rpb24oKXt0aGlzLiRpY29uLnJlbW92ZUNsYXNzKCksdGhpcy49
CiRpY29uLmFkZENsYXNzKCJmYSBmYS1jYXJldC1kb3duIil9LGRpc2FibGVkOmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuJHNlbGVjdD0KLmlzKCI6ZGlzYWJsZWQiKX0sZW5hYmxlOmZ1bmN0aW9uKCl7
dGhpcy4kc2VsZWN0LnByb3AoImRpc2FibGVkIiwhMSl9LGRpc2FiPQpsZTpmdW5jdGlvbigpe3Ro
aXMuJHNlbGVjdC5wcm9wKCJkaXNhYmxlZCIsITApfSxhZGQ6ZnVuY3Rpb24oZSl7dGhpcy4kc2Vs
ZWM9CnQuYXBwZW5kKHRoaXMuX3RlbXBsYXRlT3B0aW9uKGUpKSx0aGlzLl9yZWZyZXNoKCl9LGRl
bDpmdW5jdGlvbihlKXt0aGlzLiRzZT0KbGVjdC5maW5kKCJvcHRpb25bdmFsdWU9M0QiK2UrIl0i
KS5yZW1vdmUoKSx0aGlzLiRzZWxlY3QudHJpZ2dlcigiY2hhbmdlIiksPQp0aGlzLl9yZWZyZXNo
KCl9LHVwZGF0ZTpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMuJHNlbGVjdC52YWwoKTt0aGlzLiRz
ZWxlY3Q9Ci5maW5kKCJvcHRpb24iKS5yZW1vdmUoKTtmb3IodmFyIG4gaW4gZSl0aGlzLiRzZWxl
Y3QuYXBwZW5kKHRoaXMuX3RlbXBsYXRlTz0KcHRpb24oZVtuXSkpO3RoaXMuX3JlZnJlc2goKSx0
aGlzLiRzZWxlY3QudmFsKHQpLHRoaXMuJHNlbGVjdC52YWwoKXx8dGhpcy4kPQpzZWxlY3QudmFs
KHRoaXMuZmlyc3QoKSksdGhpcy5vcHRpb25zLnNlYXJjaGFibGUmJih0aGlzLiRidXR0b24uaGlk
ZSgpLHRoaXM9Ci4kc2VsZWN0LnNlbGVjdDIoImRlc3Ryb3kiKSx0aGlzLiRzZWxlY3Quc2VsZWN0
MigpKX0sc2V0T25DaGFuZ2U6ZnVuY3Rpb24oZT0KKXt0aGlzLm9wdGlvbnMub25jaGFuZ2U9M0Rl
fSxleGlzdHM6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuJHNlbGVjdC5maW5kKCdvPQpwdGlvblt2
YWx1ZT0zRCInK2UrJyJdJykubGVuZ3RoPjB9LF9jaGFuZ2U6ZnVuY3Rpb24oKXt0aGlzLm9wdGlv
bnMub25jaGFuZ2U9CiYmdGhpcy5vcHRpb25zLm9uY2hhbmdlKHRoaXMuJHNlbGVjdC52YWwoKSl9
LF9yZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy4kc2VsZT0KY3QuZmluZCgib3B0aW9uW3ZhbHVlPTNE
bnVsbF0iKS5yZW1vdmUoKTt2YXIgZT0zRHRoaXMuJHNlbGVjdC5maW5kKCJvcHRpb24iPQopLmxl
bmd0aDtlPTNEPTNEMD8odGhpcy5kaXNhYmxlKCksdGhpcy4kc2VsZWN0LmFwcGVuZCh0aGlzLl90
ZW1wbGF0ZU9wdGlvbig9Cnt2YWx1ZToibnVsbCIsbGFiZWw6dGhpcy5vcHRpb25zLmVycm9yX3Rl
eHR9KSkpOnRoaXMuZW5hYmxlKCl9LF90ZW1wbGF0ZU9wdD0KaW9uOmZ1bmN0aW9uKGUpe3JldHVy
bic8b3B0aW9uIHZhbHVlPTNEIicrZS52YWx1ZSsnIj4nK2UubGFiZWwrIjwvb3B0aW9uPiJ9PQos
X3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3JldHVybic8ZGl2IGlkPTNEIicrZS5pZCsnIj4nKyc8c2Vs
ZWN0IGlkPTNEInNlbGVjdCI9CiBjbGFzcz0zRCJzZWxlY3QgJytlLmNscysiICIrZS5pZCsnIj48
L3NlbGVjdD4nKyc8ZGl2IGNsYXNzPTNEImJ1dHRvbiI+JysnPD0KaSBjbGFzcz0zRCJpY29uIi8+
JysiPC9kaXY+IisiPC9kaXY+In19KTtyZXR1cm57Vmlldzp0fX0pLGRlZmluZSgibXZjL3VpL3Vp
PQotc2xpZGVyIixbInV0aWxzL3V0aWxzIl0sZnVuY3Rpb24oZSl7dmFyIHQ9M0RCYWNrYm9uZS5W
aWV3LmV4dGVuZCh7b3B0aW9uc0Q9CmVmYXVsdDp7bWluOm51bGwsbWF4Om51bGwsc3RlcDpudWxs
LHByZWNpc2U6ITEsc3BsaXQ6MWU0fSxpbml0aWFsaXplOmZ1bmN0aT0Kb24odCl7dmFyIG49M0R0
aGlzO3RoaXMub3B0aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlzLnNl
dEVsPQplbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKSx0aGlzLnVzZXNsaWRlcj0z
RHRoaXMub3B0aW9ucy5tYXghPTNEPQo9M0RudWxsJiZ0aGlzLm9wdGlvbnMubWluIT0zRD0zRG51
bGwmJnRoaXMub3B0aW9ucy5tYXg+dGhpcy5vcHRpb25zLm1pbix0aGk9CnMub3B0aW9ucy5zdGVw
PTNEPTNEPTNEbnVsbCYmKHRoaXMub3B0aW9ucy5zdGVwPTNEMSx0aGlzLm9wdGlvbnMucHJlY2lz
ZSYmdD0KaGlzLnVzZXNsaWRlciYmKHRoaXMub3B0aW9ucy5zdGVwPTNEKHRoaXMub3B0aW9ucy5t
YXgtdGhpcy5vcHRpb25zLm1pbikvdGhpPQpzLm9wdGlvbnMuc3BsaXQpKSx0aGlzLnVzZXNsaWRl
cj8odGhpcy4kc2xpZGVyPTNEdGhpcy4kZWwuZmluZCgiI3NsaWRlciIpLHQ9Cmhpcy4kc2xpZGVy
LnNsaWRlcih0aGlzLm9wdGlvbnMpLHRoaXMuJHNsaWRlci5vbigic2xpZGUiLGZ1bmN0aW9uKGUs
dCl7bi52YT0KbHVlKHQudmFsdWUpfSkpOnRoaXMuJGVsLmZpbmQoIi51aS1mb3JtLXNsaWRlci10
ZXh0IikuY3NzKCJ3aWR0aCIsIjEwMCUiKSx0PQpoaXMuJHRleHQ9M0R0aGlzLiRlbC5maW5kKCIj
dGV4dCIpLHRoaXMub3B0aW9ucy52YWx1ZSE9M0Q9M0R1bmRlZmluZWQmJnRoaXM9Ci52YWx1ZSh0
aGlzLm9wdGlvbnMudmFsdWUpLHRoaXMuJHRleHQub24oImNoYW5nZSIsZnVuY3Rpb24oKXtuLnZh
bHVlKCQodGhpcz0KKS52YWwoKSl9KTt2YXIgcj0zRFtdO3RoaXMuJHRleHQub24oImtleXVwIixm
dW5jdGlvbihlKXtyW2Uud2hpY2hdPTNEITF9KSx0PQpoaXMuJHRleHQub24oImtleWRvd24iLGZ1
bmN0aW9uKGUpe3ZhciB0PTNEZS53aGljaDtyW3RdPTNEITAsdD0zRD0zRDh8fHQ9M0Q9Cj0zRDl8
fHQ9M0Q9M0QxM3x8dD0zRD0zRDM3fHx0PTNEPTNEMzl8fHQ+PTNENDgmJnQ8PTNENTd8fHQ9M0Q9
M0QxOTAmJiQodGhpcz0KKS52YWwoKS5pbmRleE9mKCIuIik9M0Q9M0QtMSYmbi5vcHRpb25zLnBy
ZWNpc2V8fHQ9M0Q9M0QxODkmJiQodGhpcykudmFsKCkuPQppbmRleE9mKCItIik9M0Q9M0QtMXx8
cls5MV18fHJbMTddfHxldmVudC5wcmV2ZW50RGVmYXVsdCgpfSl9LHZhbHVlOmZ1bmN0aW89Cm4o
ZSl7cmV0dXJuIGUhPTNEPTNEdW5kZWZpbmVkJiYoaXNOYU4oZSkmJihlPTNEMCksdGhpcy5vcHRp
b25zLm1heCE9M0Q9M0RudT0KbGwmJihlPTNETWF0aC5taW4oZSx0aGlzLm9wdGlvbnMubWF4KSks
dGhpcy5vcHRpb25zLm1pbiE9M0Q9M0RudWxsJiYoZT0zRE1hPQp0aC5tYXgoZSx0aGlzLm9wdGlv
bnMubWluKSksdGhpcy5vcHRpb25zLm9uY2hhbmdlJiZ0aGlzLm9wdGlvbnMub25jaGFuZ2UoZSk9
Cix0aGlzLiRzbGlkZXImJnRoaXMuJHNsaWRlci5zbGlkZXIoInZhbHVlIixlKSx0aGlzLiR0ZXh0
LnZhbChlKSksdGhpcy4kdGV4dD0KLnZhbCgpfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7cmV0dXJu
JzxkaXYgaWQ9M0QiJytlLmlkKyciIGNsYXNzPTNEInVpLWZvcm0tPQpzbGlkZXIiPicrJzxpbnB1
dCBpZD0zRCJ0ZXh0IiB0eXBlPTNEInRleHQiIGNsYXNzPTNEInVpLWZvcm0tc2xpZGVyLXRleHQi
Lz49CicrJzxkaXYgaWQ9M0Qic2xpZGVyIiBjbGFzcz0zRCJ1aS1mb3JtLXNsaWRlci1lbGVtZW50
Ii8+JysiPC9kaXY+In19KTtyZXR1cj0KbntWaWV3OnR9fSksZGVmaW5lKCJtdmMvdWkvdWktb3B0
aW9ucyIsWyJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGUpe3ZhciB0PTNEPQpCYWNrYm9uZS5WaWV3
LmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnNEZWZhdWx0PTNEe3Zp
c2libGU9CjohMCxkYXRhOltdLGlkOmUudXVpZCgpLGVycm9yX3RleHQ6Ik5vIGRhdGEgYXZhaWxh
YmxlLiIsd2FpdF90ZXh0OiJQbGVhc2Ugdz0KYWl0Li4uIn0sdGhpcy5vcHRpb25zPTNEZS5tZXJn
ZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCgiPGRpPQp2Lz4iKSx0aGlz
LiRtZXNzYWdlPTNEJCgiPGRpdi8+IiksdGhpcy4kb3B0aW9ucz0zRCQodGhpcy5fdGVtcGxhdGUo
dCkpLHRoaXM9Ci4kZWwuYXBwZW5kKHRoaXMuJG1lc3NhZ2UpLHRoaXMuJGVsLmFwcGVuZCh0aGlz
LiRvcHRpb25zKSx0aGlzLm9wdGlvbnMudmlzaT0KYmxlfHx0aGlzLiRlbC5oaWRlKCksdGhpcy51
cGRhdGUodGhpcy5vcHRpb25zLmRhdGEpLHRoaXMub3B0aW9ucy52YWx1ZSE9M0Q9Cj0zRHVuZGVm
aW5lZCYmdGhpcy52YWx1ZSh0aGlzLm9wdGlvbnMudmFsdWUpO3ZhciBuPTNEdGhpczt0aGlzLm9u
KCJjaGFuZ2UiLD0KZnVuY3Rpb24oKXtuLl9jaGFuZ2UoKX0pfSx1cGRhdGU6ZnVuY3Rpb24oZSl7
dmFyIHQ9M0R0aGlzLl9nZXRWYWx1ZSgpO3RoaXMuPQokb3B0aW9ucy5lbXB0eSgpO2lmKHRoaXMu
X3RlbXBsYXRlT3B0aW9ucyl0aGlzLiRvcHRpb25zLmFwcGVuZCh0aGlzLl90ZW1wbGE9CnRlT3B0
aW9ucyhlKSk7ZWxzZSBmb3IodmFyIG4gaW4gZSl7dmFyIHI9M0QkKHRoaXMuX3RlbXBsYXRlT3B0
aW9uKGVbbl0pKTtyLj0KYWRkQ2xhc3MoInVpLW9wdGlvbiIpLHRoaXMuJG9wdGlvbnMuYXBwZW5k
KHIpfXZhciBpPTNEdGhpczt0aGlzLiRlbC5maW5kKCJpPQpucHV0Iikub24oImNoYW5nZSIsZnVu
Y3Rpb24oKXtpLnZhbHVlKGkuX2dldFZhbHVlKCkpLGkuX2NoYW5nZSgpfSksdGhpcy5fcmU9CmZy
ZXNoKCksdGhpcy52YWx1ZSh0KX0sdmFsdWU6ZnVuY3Rpb24oZSl7aWYoZSE9M0Q9M0R1bmRlZmlu
ZWQpe2UgaW5zdGFuY2VvZj0KIEFycmF5fHwoZT0zRFtlXSksdGhpcy4kZWwuZmluZCgiaW5wdXQi
KS5wcm9wKCJjaGVja2VkIiwhMSk7Zm9yKHZhciB0IGluIGUpPQp0aGlzLiRlbC5maW5kKCdpbnB1
dFt2YWx1ZT0zRCInK2VbdF0rJyJdJykuZmlyc3QoKS5wcm9wKCJjaGVja2VkIiwhMCl9cmV0dXI9
Cm4gdGhpcy5fZ2V0VmFsdWUoKX0sZXhpc3RzOmZ1bmN0aW9uKGUpe2lmKGUhPTNEPTNEdW5kZWZp
bmVkKXtlIGluc3RhbmNlb2YgQT0KcnJheXx8KGU9M0RbZV0pO2Zvcih2YXIgdCBpbiBlKWlmKHRo
aXMuJGVsLmZpbmQoJ2lucHV0W3ZhbHVlPTNEIicrZVt0XSsnIl0nPQopLmxlbmd0aD4wKXJldHVy
biEwfXJldHVybiExfSxmaXJzdDpmdW5jdGlvbigpe3ZhciBlPTNEdGhpcy4kZWwuZmluZCgiaW5w
dXQ9CiIpO3JldHVybiBlLmxlbmd0aD4wP2UudmFsKCk6dW5kZWZpbmVkfSx2YWxpZGF0ZTpmdW5j
dGlvbigpe3ZhciBlPTNEdGhpcy52YT0KbHVlKCk7ZSBpbnN0YW5jZW9mIEFycmF5fHwoZT0zRFtl
XSk7Zm9yKHZhciB0IGluIGUpaWYoW251bGwsIm51bGwiLHVuZGVmaW5lPQpkXS5pbmRleE9mKGVb
dF0pPi0xKXJldHVybiExO3JldHVybiEwfSx3YWl0OmZ1bmN0aW9uKCl7dGhpcy5fc2l6ZSgpPTNE
PTNEMCY9CiYodGhpcy5fbWVzc2FnZVNob3codGhpcy5vcHRpb25zLndhaXRfdGV4dCwiaW5mbyIp
LHRoaXMuJG9wdGlvbnMuaGlkZSgpKX0sdT0KbndhaXQ6ZnVuY3Rpb24oKXt0aGlzLl9tZXNzYWdl
SGlkZSgpLHRoaXMuX3JlZnJlc2goKX0sX2NoYW5nZTpmdW5jdGlvbigpe3RoPQppcy5vcHRpb25z
Lm9uY2hhbmdlJiZ0aGlzLm9wdGlvbnMub25jaGFuZ2UodGhpcy5fZ2V0VmFsdWUoKSl9LF9yZWZy
ZXNoOmZ1bmM9CnRpb24oKXt0aGlzLl9zaXplKCk9M0Q9M0QwPyh0aGlzLl9tZXNzYWdlU2hvdyh0
aGlzLm9wdGlvbnMuZXJyb3JfdGV4dCwiZGFuZz0KZXIiKSx0aGlzLiRvcHRpb25zLmhpZGUoKSk6
KHRoaXMuX21lc3NhZ2VIaWRlKCksdGhpcy4kb3B0aW9ucy5jc3MoImRpc3BsYXkiPQosImlubGlu
ZS1ibG9jayIpKX0sX2dldFZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9M0R0aGlzLiRlbC5maW5kKCI6
Y2hlY2tlZCIpO2k9CmYoZS5sZW5ndGg9M0Q9M0QwKXJldHVybiJudWxsIjtpZih0aGlzLm9wdGlv
bnMubXVsdGlwbGUpe3ZhciB0PTNEW107cmV0dXJuID0KZS5lYWNoKGZ1bmN0aW9uKCl7dC5wdXNo
KCQodGhpcykudmFsKCkpfSksdH1yZXR1cm4gZS52YWwoKX0sX3NpemU6ZnVuY3Rpb24oPQope3Jl
dHVybiB0aGlzLiRlbC5maW5kKCIudWktb3B0aW9uIikubGVuZ3RofSxfbWVzc2FnZVNob3c6ZnVu
Y3Rpb24oZSx0KXt0aGk9CnMuJG1lc3NhZ2Uuc2hvdygpLHRoaXMuJG1lc3NhZ2UucmVtb3ZlQ2xh
c3MoKSx0aGlzLiRtZXNzYWdlLmFkZENsYXNzKCJ1aS1tZT0Kc3NhZ2UgYWxlcnQgYWxlcnQtIit0
KSx0aGlzLiRtZXNzYWdlLmh0bWwoZSl9LF9tZXNzYWdlSGlkZTpmdW5jdGlvbigpe3RoaXMuPQok
bWVzc2FnZS5oaWRlKCl9LF90ZW1wbGF0ZTpmdW5jdGlvbigpe3JldHVybic8ZGl2IGNsYXNzPTNE
InVpLW9wdGlvbnMiLz4nfX09Ciksbj0zRHt9O24uVmlldz0zRHQuZXh0ZW5kKHtpbml0aWFsaXpl
OmZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLmluaXRpYWxpemUuYz0KYWxsKHRoaXMsZSl9LF90ZW1w
bGF0ZU9wdGlvbjpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdj48aW5wdXQgdHlwZT0zRCJyYWRpbyIg
PQpuYW1lPTNEIicrdGhpcy5vcHRpb25zLmlkKyciIHZhbHVlPTNEIicrZS52YWx1ZSsnIi8+Jytl
LmxhYmVsKyI8YnI+IisiPC9kaXY9Cj4ifX0pO3ZhciByPTNEe307ci5WaWV3PTNEdC5leHRlbmQo
e2luaXRpYWxpemU6ZnVuY3Rpb24oZSl7ZS5tdWx0aXBsZT0zRCEwLD0KdC5wcm90b3R5cGUuaW5p
dGlhbGl6ZS5jYWxsKHRoaXMsZSl9LF90ZW1wbGF0ZU9wdGlvbjpmdW5jdGlvbihlKXtyZXR1cm4n
PGRpPQp2PjxpbnB1dCB0eXBlPTNEImNoZWNrYm94IiBuYW1lPTNEIicrdGhpcy5vcHRpb25zLmlk
KyciIHZhbHVlPTNEIicrZS52YWx1ZSs9CiciLz4nK2UubGFiZWwrIjxicj4iKyI8L2Rpdj4ifX0p
O3ZhciBpPTNEe307cmV0dXJuIGkuVmlldz0zRHQuZXh0ZW5kKHtpbml0aT0KYWxpemU6ZnVuY3Rp
b24oZSl7dC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsZSl9LHZhbHVlOmZ1bmN0aW9u
KGUpe3JlPQp0dXJuIGUhPTNEPTNEdW5kZWZpbmVkJiYodGhpcy4kZWwuZmluZCgiaW5wdXQiKS5w
cm9wKCJjaGVja2VkIiwhMSksdGhpcy4kZWw9Ci5maW5kKCJsYWJlbCIpLnJlbW92ZUNsYXNzKCJh
Y3RpdmUiKSx0aGlzLiRlbC5maW5kKCdbdmFsdWU9M0QiJytlKyciXScpLnBybz0KcCgiY2hlY2tl
ZCIsITApLmNsb3Nlc3QoImxhYmVsIikuYWRkQ2xhc3MoImFjdGl2ZSIpKSx0aGlzLl9nZXRWYWx1
ZSgpfSxfdGVtPQpwbGF0ZU9wdGlvbjpmdW5jdGlvbihlKXt2YXIgdD0zRCc8bGFiZWwgY2xhc3M9
M0QiYnRuIGJ0bi1kZWZhdWx0Ij4nO3JldHVybiA9CmUuaWNvbiYmKHQrPTNEJzxpIGNsYXNzPTNE
ImZhICcrZS5pY29uKyciLz4nKSx0Kz0zRCc8aW5wdXQgdHlwZT0zRCJyYWRpbyIgbj0KYW1lPTNE
IicrdGhpcy5vcHRpb25zLmlkKyciIHZhbHVlPTNEIicrZS52YWx1ZSsnIj4nK2UubGFiZWwrIjwv
bGFiZWw+Iix0fSxfPQp0ZW1wbGF0ZTpmdW5jdGlvbigpe3JldHVybic8ZGl2IGNsYXNzPTNEImJ0
bi1ncm91cCB1aS1yYWRpb2J1dHRvbiIgZGF0YS10b2c9CmdsZT0zRCJidXR0b25zIi8+J319KSx7
QmFzZTp0LFJhZGlvOm4sUmFkaW9CdXR0b246aSxDaGVja2JveDpyfX0pLGRlZmluZSgibT0KdmMv
dWkvdWktZHJpbGxkb3duIixbInV0aWxzL3V0aWxzIiwibXZjL3VpL3VpLW9wdGlvbnMiXSxmdW5j
dGlvbihlLHQpe3ZhciBuPQo9M0R0LkJhc2UuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKGUp
e3RoaXMuZGlzcGxheT0zRGUuZGlzcGxheXx8ImNoZWNrYm89CngiLGUubXVsdGlwbGU9M0R0aGlz
LmRpc3BsYXk9M0Q9M0QiY2hlY2tib3giLHQuQmFzZS5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYT0K
bGwodGhpcyxlKX0sX3RlbXBsYXRlT3B0aW9uOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4nPGRpdj48
aW5wdXQgbmFtZT0zRCInK3RoPQppcy5vcHRpb25zLmlkKyciIGNsYXNzPTNEInVpLW9wdGlvbiIg
dHlwZT0zRCInK3RoaXMuZGlzcGxheSsnIiB2YWx1ZT0zRCInK3Q9CisnIj4nK2UrIjxkaXYvPiJ9
LF90ZW1wbGF0ZU9wdGlvbnM6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbihlLHQpe2Z1bmN0aW9uIG4o
bj0KKXtuPyh0LmZhZGVJbigiZmFzdCIpLGUucmVtb3ZlQ2xhc3MoInRvZ2dsZS1leHBhbmQiKSxl
LmFkZENsYXNzKCJ0b2dnbGUiKSxlPQouaXNfZXhwYW5kZWQ9M0QhMCk6KHQuaGlkZSgpLGUucmVt
b3ZlQ2xhc3MoInRvZ2dsZSIpLGUuYWRkQ2xhc3MoInRvZ2dsZS1leHA9CmFuZCIpLGUuaXNfZXhw
YW5kZWQ9M0QhMSl9ZS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7bighZS5pc19leHBhbmRlZCl9KX1m
dW5jdD0KaW9uIHIoZSxzKXtmb3IoaSBpbiBzKXt2YXIgbz0zRHNbaV0sdT0zRG8ub3B0aW9ucy5s
ZW5ndGg+MCxhPTNEJCgiPGRpdi8+Iik7PQppZih1KXt2YXIgZj0zRCQoJzxzcGFuIGNsYXNzPTNE
InVpLWRyaWxsZG93bi1idXR0b24gZm9ybS10b2dnbGUgaWNvbi1idXR0b249CiB0b2dnbGUtZXhw
YW5kIiBzdHlsZT0zRCJwb3NpdGlvbjogcmVsYXRpdmU7IHRvcDogMnB4OyIvPicpLGw9M0QkKCI8
ZGl2Lz4iKT0KO2wuYXBwZW5kKGYpLGwuYXBwZW5kKHQuX3RlbXBsYXRlT3B0aW9uKG8ubmFtZSxv
LnZhbHVlKSksYS5hcHBlbmQobCk7dmFyIGM9Cj0zRCQoJzxkaXYgc3R5bGU9M0QiZGlzcGxheTog
bm9uZTsgbWFyZ2luLWxlZnQ6IDI1cHg7Ii8+Jyk7cihjLG8ub3B0aW9ucyksYT0KLmFwcGVuZChj
KSxuKGYsYyl9ZWxzZSBhLmFwcGVuZCh0Ll90ZW1wbGF0ZU9wdGlvbihvLm5hbWUsby52YWx1ZSkp
O2UuYXBwZW5kPQooYSl9fXZhciB0PTNEdGhpcyxzPTNEJCgiPGRpdi8+Iik7cmV0dXJuIHIocyxl
KSxzfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7cmU9CnR1cm4nPGRpdiBjbGFzcz0zRCJ1aS1vcHRp
b25zIGRyaWxsZG93bi1jb250YWluZXIiIGlkPTNEIicrZS5pZCsnIi8+J319KTtyZT0KdHVybntW
aWV3Om59fSksZGVmaW5lKCJtdmMvdWkvdWktYnV0dG9uLW1lbnUiLFsidXRpbHMvdXRpbHMiXSxm
dW5jdGlvbihlKXtyPQpldHVybiBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6
e2lkOiIiLHRpdGxlOiIiLGZsb2F0aW5nOiJyaWdodCI9CixpY29uOm51bGwsb25jbGljazpudWxs
LGNsczoidWktYnV0dG9uLWljb24gdWktYnV0dG9uLW1lbnUiLHRvb2x0aXA6IiIsdGFyZz0KZXQ6
IiIsaHJlZjoiIixvbnVubG9hZDpudWxsLHZpc2libGU6ITAsdGFnOiIifSwkbWVudTpudWxsLGlu
aXRpYWxpemU6ZnVuY3RpPQpvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRp
b25zRGVmYXVsdCksdGhpcy5zZXRFbGVtZW50KCQodGhpcy49Cl90ZW1wbGF0ZSh0aGlzLm9wdGlv
bnMpKSk7dmFyIG49M0QkKHRoaXMuZWwpLmZpbmQoIi5yb290Iikscj0zRHRoaXM7bi5vbigiYz0K
bGljayIsZnVuY3Rpb24oZSl7JCgiLnRvb2x0aXAiKS5oaWRlKCksZS5wcmV2ZW50RGVmYXVsdCgp
LHIub3B0aW9ucy5vbmNsaWNrPQomJnIub3B0aW9ucy5vbmNsaWNrKCl9KSx0aGlzLm9wdGlvbnMu
dmlzaWJsZXx8dGhpcy5oaWRlKCksbi50b29sdGlwKHt0aXRsZTo9CnQudG9vbHRpcCxwbGFjZW1l
bnQ6ImJvdHRvbSJ9KX0sc2hvdzpmdW5jdGlvbigpeyQodGhpcy5lbCkuc2hvdygpfSxoaWRlOmZ1
bj0KY3Rpb24oKXskKHRoaXMuZWwpLmhpZGUoKX0sYWRkTWVudTpmdW5jdGlvbih0KXt2YXIgbj0z
RHt0aXRsZToiIix0YXJnZXQ6IiIsPQpocmVmOiIiLG9uY2xpY2s6bnVsbCxkaXZpZGVyOiExLGlj
b246bnVsbCxjbHM6ImJ1dHRvbi1tZW51IGJ0bi1ncm91cCJ9O249M0Q9CmUubWVyZ2UodCxuKSx0
aGlzLiRtZW51fHwoJCh0aGlzLmVsKS5hcHBlbmQodGhpcy5fdGVtcGxhdGVNZW51KCkpLHRoaXMu
JG1lbj0KdT0zRCQodGhpcy5lbCkuZmluZCgiLm1lbnUiKSk7dmFyIHI9M0QkKHRoaXMuX3RlbXBs
YXRlTWVudUl0ZW0obikpO3Iub24oImNsPQppY2siLGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1
bHQoKSxuLm9uY2xpY2smJm4ub25jbGljaygpfSksdGhpcy4kbWVudS5hcHA9CmVuZChyKSxuLmRp
dmlkZXImJnRoaXMuJG1lbnUuYXBwZW5kKCQodGhpcy5fdGVtcGxhdGVEaXZpZGVyKCkpKX0sX3Rl
bXBsYXRlTT0KZW51SXRlbTpmdW5jdGlvbihlKXt2YXIgdD0zRCc8bGk+PGEgY2xhc3M9M0QiZHJv
cGRvd24taXRlbSIgaHJlZj0zRCInK2UuaHJlPQpmKyciIHRhcmdldD0zRCInK2UudGFyZ2V0Kyci
Pic7cmV0dXJuIGUuaWNvbiYmKHQrPTNEJzxpIGNsYXNzPTNEImZhICcrZS5pY289Cm4rJyI+PC9p
PicpLHQrPTNEIiAiK2UudGl0bGUrIjwvYT4iKyI8L2xpPiIsdH0sX3RlbXBsYXRlTWVudTpmdW5j
dGlvbigpe3JldD0KdXJuJzx1bCBjbGFzcz0zRCJtZW51IGRyb3Bkb3duLW1lbnUgcHVsbC1yaWdo
dCIgcm9sZT0zRCJtZW51Ij48L3VsPid9LF90ZW1wPQpsYXRlRGl2aWRlcjpmdW5jdGlvbigpe3Jl
dHVybic8bGkgY2xhc3M9M0QiZGl2aWRlciI+PC9saT4nfSxfdGVtcGxhdGU6ZnVuY3Q9Cmlvbihl
KXt2YXIgdD0zRCIiLG49M0QiIjtlLnRpdGxlP3Q9M0Qid2lkdGg6IGF1dG87IjpuPTNEIm1hcmdp
bjogMHB4OyI7dmFyID0Kcj0zRCc8ZGl2IGlkPTNEIicrZS5pZCsnIiBzdHlsZT0zRCJmbG9hdDog
JytlLmZsb2F0aW5nKyI7ICIrdCsnIiBjbGFzcz0zRCJkPQpyb3Bkb3duICcrZS5jbHMrJyI+Jysn
PGRpdiBjbGFzcz0zRCJyb290IGJ1dHRvbiBkcm9wZG93bi10b2dnbGUiIGRhdGEtdG9nZ2w9CmU9
M0QiZHJvcGRvd24iIHN0eWxlPTNEIicrbisnIj4nKyc8aSBjbGFzcz0zRCJpY29uIGZhICcrZS5p
Y29uKyciLz4nO3JldHVybj0KIGUudGl0bGUmJihyKz0zRCcmbmJzcDs8c3BhbiBjbGFzcz0zRCJ0
aXRsZSI+JytlLnRpdGxlKyI8L3NwYW4+Iikscis9M0QiPC9kPQppdj48L2Rpdj4iLHJ9fSl9KSxk
ZWZpbmUoIm12Yy91aS91aS1taXNjIixbInV0aWxzL3V0aWxzIiwibXZjL3VpL3VpLXNlbGVjdC09
CmRlZmF1bHQiLCJtdmMvdWkvdWktc2xpZGVyIiwibXZjL3VpL3VpLW9wdGlvbnMiLCJtdmMvdWkv
dWktZHJpbGxkb3duIiwibXZjLz0KdWkvdWktYnV0dG9uLW1lbnUiLCJtdmMvdWkvdWktbW9kYWwi
XSxmdW5jdGlvbihlLHQsbixyLGkscyxvKXt2YXIgdT0zREJhY2tiPQpvbmUuVmlldy5leHRlbmQo
e29wdGlvbnNEZWZhdWx0Ont1cmw6IiIsY2xzOiIifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3Ro
aXM9Ci5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxl
bWVudCh0aGlzLl90ZW1wbGF0ZSh0aD0KaXMub3B0aW9ucykpfSxfdGVtcGxhdGU6ZnVuY3Rpb24o
ZSl7cmV0dXJuJzxpbWcgY2xhc3M9M0QidWktaW1hZ2UgJytlLmNscysnPQoiIHNyYz0zRCInK2Uu
dXJsKyciLz4nfX0pLGE9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e3Rp
dGxlOiI9CiIsY2xzOiIifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUu
bWVyZ2UodCx0aGlzLm9wdGlvbnNEZWZhdT0KbHQpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1w
bGF0ZSh0aGlzLm9wdGlvbnMpKX0sdGl0bGU6ZnVuY3Rpb24oZSl7dGhpcy4kPQplbC5odG1sKGUp
fSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuJzxsYWJlbCBjbGFzcz0zRCJ1aS1sYWJlbCAn
K2UuY2xzKyc9CiI+JytlLnRpdGxlKyI8L2xhYmVsPiJ9LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJu
IG9wdGlvbnMudGl0bGV9fSksZj0zREJhY2tibz0KbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZh
dWx0OntmbG9hdGluZzoicmlnaHQiLGljb246IiIsdG9vbHRpcDoiIixwbGFjZW1lPQpudDoiYm90
dG9tIix0aXRsZToiIixjbHM6IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25z
PTNEZS5tZXJnZSg9CnQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGVtZW50KHRoaXMu
X3RlbXBsYXRlKHRoaXMub3B0aW9ucykpLCQodGhpcz0KLmVsKS50b29sdGlwKHt0aXRsZTp0LnRv
b2x0aXAscGxhY2VtZW50OiJib3R0b20ifSl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyPQpldHVy
bic8ZGl2PjxzcGFuIGNsYXNzPTNEImZhICcrZS5pY29uKyciIGNsYXNzPTNEInVpLWljb24iLz4m
bmJzcDsnK2UudGl0bGU9CisiPC9kaXY+In19KSxsPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29w
dGlvbnNEZWZhdWx0OntpZDpudWxsLHRpdGxlOiIiLGZsbz0KYXRpbmc6InJpZ2h0IixjbHM6InVp
LWJ1dHRvbiBidG4gYnRuLWRlZmF1bHQiLGljb246IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24oPQp0
KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRF
bGVtZW50KHRoaXMuX3RlbXA9CmxhdGUodGhpcy5vcHRpb25zKSksJCh0aGlzLmVsKS5vbigiY2xp
Y2siLGZ1bmN0aW9uKCl7JCgiLnRvb2x0aXAiKS5oaWRlKCksdD0KLm9uY2xpY2smJnQub25jbGlj
aygpfSksJCh0aGlzLmVsKS50b29sdGlwKHt0aXRsZTp0LnRvb2x0aXAscGxhY2VtZW50OiJib3R0
PQpvbSJ9KX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PTNEJzxidXR0b24gaWQ9M0QiJytl
LmlkKyciIHR5cGU9M0Qic3VibWk9CnQiIHN0eWxlPTNEImZsb2F0OiAnK2UuZmxvYXRpbmcrJzsi
IHR5cGU9M0QiYnV0dG9uIiBjbGFzcz0zRCInK2UuY2xzKyciPic7cj0KZXR1cm4gZS5pY29uJiYo
dCs9M0QnPGkgY2xhc3M9M0QiaWNvbiBmYSAnK2UuaWNvbisnIj48L2k+Jm5ic3A7JyksdCs9M0Rl
LnRpPQp0bGUrIjwvYnV0dG9uPiIsdH19KSxjPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlv
bnNEZWZhdWx0OntpZDpudWxsLHRpdGw9CmU6IiIsZmxvYXRpbmc6InJpZ2h0IixjbHM6InVpLWJ1
dHRvbi1pY29uIixpY29uOiIiLHRvb2x0aXA6IiIsb25jbGljazpudWxsfT0KLGluaXRpYWxpemU6
ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQp
LHRoaXMuPQpzZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9ucykpLHRoaXMuJGJ1
dHRvbj0zRHRoaXMuJGVsLmZpbmQoIi5idXQ9CnRvbiIpO3ZhciBuPTNEdGhpczskKHRoaXMuZWwp
Lm9uKCJjbGljayIsZnVuY3Rpb24oKXskKCIudG9vbHRpcCIpLmhpZGUoKSx0Lj0Kb25jbGljayYm
IW4uZGlzYWJsZWQmJnQub25jbGljaygpfSksJCh0aGlzLmVsKS50b29sdGlwKHt0aXRsZTp0LnRv
b2x0aXAscGxhPQpjZW1lbnQ6ImJvdHRvbSJ9KX0sZGlzYWJsZTpmdW5jdGlvbigpe3RoaXMuJGJ1
dHRvbi5hZGRDbGFzcygiZGlzYWJsZWQiKSx0aGk9CnMuZGlzYWJsZWQ9M0QhMH0sZW5hYmxlOmZ1
bmN0aW9uKCl7dGhpcy4kYnV0dG9uLnJlbW92ZUNsYXNzKCJkaXNhYmxlZCIpLHRoaT0Kcy5kaXNh
YmxlZD0zRCExfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9M0QiIjtlLnRpdGxlJiYodD0z
RCJ3aWR0aDogYXV0PQpvOyIpO3ZhciBuPTNEJzxkaXYgaWQ9M0QiJytlLmlkKyciIHN0eWxlPTNE
ImZsb2F0OiAnK2UuZmxvYXRpbmcrIjsgIit0KyciIGM9Cmxhc3M9M0QiJytlLmNscysnIj4nO3Jl
dHVybiBlLnRpdGxlP24rPTNEJzxkaXYgY2xhc3M9M0QiYnV0dG9uIj48aSBjbGFzcz0zRD0KImlj
b24gZmEgJytlLmljb24rJyIvPiZuYnNwOycrJzxzcGFuIGNsYXNzPTNEInRpdGxlIj4nK2UudGl0
bGUrIjwvc3Bhbj4iKyI8PQovZGl2PiI6bis9M0QnPGkgY2xhc3M9M0QiaWNvbiBmYSAnK2UuaWNv
bisnIi8+JyxuKz0zRCI8L2Rpdj4iLG59fSksaD0zREJhY2s9CmJvbmUuVmlldy5leHRlbmQoe29w
dGlvbnNEZWZhdWx0Ont0aXRsZToiIixjbHM6IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dD0K
aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGVt
ZW50KHRoaXMuX3RlbXBsYXRlPQoodGhpcy5vcHRpb25zKSksJCh0aGlzLmVsKS5vbigiY2xpY2si
LHQub25jbGljayl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXQ9CnVybic8ZGl2PjxhIGhyZWY9
M0QiamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0zRCJ1aS1hbmNob3IgJytlLmNscysnIj4nK2Uu
dD0KaXRsZSsiPC9hPjwvZGl2PiJ9fSkscD0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25z
RGVmYXVsdDp7bWVzc2FnZTpudWxsPQosc3RhdHVzOiJpbmZvIixwZXJzaXN0ZW50OiExfSxpbml0
aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVyZ2U9Cih0LHRoaXMub3B0aW9u
c0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCgiPGRpdj48L2Rpdj4iKSx0aGlzLm9wdGlvbnMubWVz
c2FnZT0KJiZ0aGlzLnVwZGF0ZSh0aGlzLm9wdGlvbnMpfSx1cGRhdGU6ZnVuY3Rpb24odCl7dGhp
cy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoPQppcy5vcHRpb25zRGVmYXVsdCk7aWYodC5tZXNzYWdl
IT0zRCIiKXt0aGlzLiRlbC5odG1sKHRoaXMuX3RlbXBsYXRlKHRoaXMub3A9CnRpb25zKSksdGhp
cy4kZWwuZmluZCgiLmFsZXJ0IikuYXBwZW5kKHQubWVzc2FnZSksdGhpcy4kZWwuZmFkZUluKCks
dGhpcy50aT0KbWVvdXQmJndpbmRvdy5jbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtpZighdC5w
ZXJzaXN0ZW50KXt2YXIgbj0zRHRoaXM7dGhpPQpzLnRpbWVvdXQ9M0R3aW5kb3cuc2V0VGltZW91
dChmdW5jdGlvbigpe24uJGVsLmlzKCI6dmlzaWJsZSIpP24uJGVsLmZhZGVPdXQ9CigpOm4uJGVs
LmhpZGUoKX0sM2UzKX19ZWxzZSB0aGlzLiRlbC5mYWRlT3V0KCl9LF90ZW1wbGF0ZTpmdW5jdGlv
bihlKXtyZXR1cj0Kbic8ZGl2IGNsYXNzPTNEInVpLW1lc3NhZ2UgYWxlcnQgYWxlcnQtJytlLnN0
YXR1cysnIi8+J319KSxkPTNEQmFja2JvbmUuVmllPQp3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6
e29uY2xpY2s6bnVsbCxzZWFyY2h3b3JkOiIifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQ9Cil7dGhp
cy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVu
dCh0aGlzLl90ZW1wbD0KYXRlKHRoaXMub3B0aW9ucykpO3ZhciBuPTNEdGhpczt0aGlzLm9wdGlv
bnMub25jbGljayYmdGhpcy4kZWwub24oInN1Ym1pdCIsPQpmdW5jdGlvbihlKXt2YXIgdD0zRG4u
JGVsLmZpbmQoIiNzZWFyY2giKTtuLm9wdGlvbnMub25jbGljayh0LnZhbCgpKX0pfSxfdGU9Cm1w
bGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdiBjbGFzcz0zRCJ1aS1zZWFyY2giPjxmb3JtIG9u
c3VibWl0PTNEInJldHVybj0KIGZhbHNlOyI+PGlucHV0IGlkPTNEInNlYXJjaCIgY2xhc3M9M0Qi
Zm9ybS1jb250cm9sIGlucHV0LXNtIiB0eXBlPTNEInRleHQiPQogbmFtZT0zRCJzZWFyY2giIHBs
YWNlaG9sZGVyPTNEIlNlYXJjaC4uLiIgdmFsdWU9M0QiJytlLnNlYXJjaHdvcmQrJyI+JysnPGI9
CnV0dG9uIHR5cGU9M0Qic3VibWl0IiBjbGFzcz0zRCJidG4gc2VhcmNoLWJ0biI+JysnPGkgY2xh
c3M9M0QiZmEgZmEtc2VhcmNoIj0KPjwvaT4nKyI8L2J1dHRvbj4iKyI8L2Zvcm0+IisiPC9kaXY+
In19KSx2PTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEPQplZmF1bHQ6e3R5cGU6InRl
eHQiLHBsYWNlaG9sZGVyOiIiLGRpc2FibGVkOiExLHZpc2libGU6ITAsY2xzOiIiLGFyZWE6ITF9
LGk9Cm5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5v
cHRpb25zRGVmYXVsdCksdGhpcy5zZT0KdEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRp
b25zKSksdGhpcy5vcHRpb25zLnZhbHVlIT0zRD0zRHVuZGVmaW5lZCYmPQp0aGlzLnZhbHVlKHRo
aXMub3B0aW9ucy52YWx1ZSksdGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLiRlbC5wcm9wKCJk
aXNhYmw9CmVkIiwhMCksdGhpcy5vcHRpb25zLnZpc2libGV8fHRoaXMuJGVsLmhpZGUoKTt2YXIg
bj0zRHRoaXM7dGhpcy4kZWwub24oImlucD0KdXQiLGZ1bmN0aW9uKCl7bi5vcHRpb25zLm9uY2hh
bmdlJiZuLm9wdGlvbnMub25jaGFuZ2Uobi4kZWwudmFsKCkpfSl9LHZhbHVlPQo6ZnVuY3Rpb24o
ZSl7cmV0dXJuIGUhPTNEPTNEdW5kZWZpbmVkJiZ0aGlzLiRlbC52YWwoZSksdGhpcy4kZWwudmFs
KCl9LF90ZW09CnBsYXRlOmZ1bmN0aW9uKGUpe3JldHVybiBlLmFyZWE/Jzx0ZXh0YXJlYSBpZD0z
RCInK2UuaWQrJyIgY2xhc3M9M0QidWktdGV4dD0KYXJlYSAnK2UuY2xzKyciPjwvdGV4dGFyZWE+
JzonPGlucHV0IGlkPTNEIicrZS5pZCsnIiB0eXBlPTNEIicrZS50eXBlKyciIHZhPQpsdWU9M0Qi
JytlLnZhbHVlKyciIHBsYWNlaG9sZGVyPTNEIicrZS5wbGFjZWhvbGRlcisnIiBjbGFzcz0zRCJ1
aS1pbnB1dCAnK2U9Ci5jbHMrJyI+J319KSxtPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe2luaXRp
YWxpemU6ZnVuY3Rpb24oZSl7dGhpcy5vcHRpb25zPQo9M0RlLHRoaXMuc2V0RWxlbWVudCh0aGlz
Ll90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKSx0aGlzLm9wdGlvbnMudmFsdWUhPTNEPQo9M0R1bmRl
ZmluZWQmJnRoaXMudmFsdWUodGhpcy5vcHRpb25zLnZhbHVlKX0sdmFsdWU6ZnVuY3Rpb24oZSl7
cmV0dXJuIGUhPQo9M0Q9M0R1bmRlZmluZWQmJnRoaXMuJGVsLnZhbChlKSx0aGlzLiRlbC52YWwo
KX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3JldHU9CnJuJzxoaWRkZW4gaWQ9M0QiJytlLmlkKyci
IHZhbHVlPTNEIicrZS52YWx1ZSsnIi8+J319KTtyZXR1cm57QW5jaG9yOmgsQnV0dD0Kb246bCxC
dXR0b25JY29uOmMsQnV0dG9uTWVudTpzLEljb246ZixJbWFnZTp1LElucHV0OnYsTGFiZWw6YSxN
ZXNzYWdlOnAsTW9kPQphbDpvLFJhZGlvQnV0dG9uOnIuUmFkaW9CdXR0b24sQ2hlY2tib3g6ci5D
aGVja2JveCxSYWRpbzpyLlJhZGlvLFNlYXJjaGJveDo9CmQsU2VsZWN0OnQsSGlkZGVuOm0sU2xp
ZGVyOm4sRHJpbGxkb3duOml9fSksZGVmaW5lKCJwbHVnaW4vbGlicmFyeS9qb2JzIixbIj0KdXRp
bHMvdXRpbHMiXSxmdW5jdGlvbihlKXtyZXR1cm4gQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHtpbml0
aWFsaXplOmZ1bmN0aW9uPQoodCxuKXt0aGlzLmFwcD0zRHQsdGhpcy5vcHRpb25zPTNEZS5tZXJn
ZShuLHRoaXMub3B0aW9uc0RlZmF1bHQpfSxyZXF1ZXN0OmY9CnVuY3Rpb24oZSx0LG4scixpKXt2
YXIgcz0zRHRoaXM7ZS5zdGF0ZSgid2FpdCIsIlJlcXVlc3Rpbmcgam9iIHJlc3VsdHMuLi4iKT0K
O3ZhciBvPTNEZS5nZXQoImRhdGFzZXRfaWRfam9iIik7byE9M0QiIj9zLl93YWl0KGUscixpKTpz
Ll9zdWJtaXQoZSx0LG4scixpPQopfSxjbGVhbnVwOmZ1bmN0aW9uKHQpe3ZhciBuPTNEdGhpcyxy
PTNEdC5nZXQoImRhdGFzZXRfaWRfam9iIik7ciE9M0QiIiYmKGU9Ci5yZXF1ZXN0KHt0eXBlOiJQ
VVQiLHVybDpjb25maWcucm9vdCsiYXBpL2hpc3Rvcmllcy9ub25lL2NvbnRlbnRzLyIrcixkYXRh
Oj0Ke2RlbGV0ZWQ6ITB9LHN1Y2Nlc3M6ZnVuY3Rpb24oKXtuLl9yZWZyZXNoSGRhcygpfX0pLHQu
c2V0KCJkYXRhc2V0X2lkX2pvYiIsPQoiIikpfSxfc3VibWl0OmZ1bmN0aW9uKHQsbixyLGkscyl7
dmFyIG89M0R0aGlzLHU9M0R0LmlkLGE9M0R0LmdldCgidHlwZSIpLGY9Cj0zRHQuZGVmaW5pdGlv
bjtkYXRhPTNEe3Rvb2xfaWQ6ImNoYXJ0cyIsaW5wdXRzOntpbnB1dDp7aWQ6dC5nZXQoImRhdGFz
ZXRfaT0KZCIpLHNyYzoiaGRhIn0sbW9kdWxlOmYuZXhlY3V0ZSxjb2x1bW5zOnIsc2V0dGluZ3M6
bn19LHQuc3RhdGUoIndhaXQiLCJTZW5kPQppbmcgam9iIHJlcXVlc3QuLi4iKSxlLnJlcXVlc3Qo
e3R5cGU6IlBPU1QiLHVybDpjb25maWcucm9vdCsiYXBpL3Rvb2xzIixkYXQ9CmE6ZGF0YSxzdWNj
ZXNzOmZ1bmN0aW9uKGUpe2lmKCFlLm91dHB1dHN8fGUub3V0cHV0cy5sZW5ndGg9M0Q9M0QwKXQu
c3RhdGUoIj0KZmFpbGVkIiwiSm9iIHN1Ym1pc3Npb24gZmFpbGVkLiBObyByZXNwb25zZS4iKSxz
JiZzKCk7ZWxzZXtvLl9yZWZyZXNoSGRhcygpPQo7dmFyIG49M0RlLm91dHB1dHNbMF07dC5zdGF0
ZSgid2FpdCIsIllvdXIgam9iIGhhcyBiZWVuIHF1ZXVlZC4gWW91IG1heSBjbG89CnNlIHRoZSBi
cm93c2VyIHdpbmRvdy4gVGhlIGpvYiB3aWxsIHJ1biBpbiB0aGUgYmFja2dyb3VuZC4iKSx0LnNl
dCgiZGF0YXNldD0KX2lkX2pvYiIsbi5pZCksby5hcHAuc3RvcmFnZS5zYXZlKCksby5fd2FpdCh0
LGkscyl9fSxlcnJvcjpmdW5jdGlvbihlKXt2YXIgPQpuPTNEIiI7ZSYmZS5tZXNzYWdlJiZlLm1l
c3NhZ2UuZGF0YSYmZS5tZXNzYWdlLmRhdGEuaW5wdXQmJihuPTNEZS5tZXNzYWdlLmQ9CmF0YS5p
bnB1dCsiLiIpLHQuc3RhdGUoImZhaWxlZCIsIlRoaXMgdmlzdWFsaXphdGlvbiByZXF1aXJlcyB0
aGUgJ2NoYXJ0cycgdD0Kb29sLiBQbGVhc2UgbWFrZSBzdXJlIGl0IGlzIGluc3RhbGxlZC4gIitu
KSxzJiZzKCl9fSl9LF93YWl0OmZ1bmN0aW9uKHQsbixyPQope3ZhciBpPTNEdGhpcztlLnJlcXVl
c3Qoe3R5cGU6IkdFVCIsdXJsOmNvbmZpZy5yb290KyJhcGkvZGF0YXNldHMvIit0LmdldCg9CiJk
YXRhc2V0X2lkX2pvYiIpLGRhdGE6e30sc3VjY2VzczpmdW5jdGlvbihlKXt2YXIgcz0zRCExO3N3
aXRjaChlLnN0YXRlKXtjYT0Kc2Uib2siOnQuc3RhdGUoIndhaXQiLCJKb2IgY29tcGxldGVkIHN1
Y2Nlc3NmdWxseS4uLiIpLG4mJm4oZSkscz0zRCEwO2JyZWFrPQo7Y2FzZSJlcnJvciI6dC5zdGF0
ZSgiZmFpbGVkIiwiSm9iIGhhcyBmYWlsZWQuIFBsZWFzZSBjaGVjayB0aGUgaGlzdG9yeSBmb3I9
CiBkZXRhaWxzLiIpLHImJnIoZSkscz0zRCEwO2JyZWFrO2Nhc2UicnVubmluZyI6dC5zdGF0ZSgi
d2FpdCIsIllvdXIgam9iIGlzID0KcnVubmluZy4gWW91IG1heSBjbG9zZSB0aGUgYnJvd3NlciB3
aW5kb3cuIFRoZSBqb2Igd2lsbCBjb250aW51ZSBpbiB0aGUgYmFjPQprZ3JvdW5kLiIpfXN8fHNl
dFRpbWVvdXQoZnVuY3Rpb24oKXtpLl93YWl0KHQsbixyKX0saS5hcHAuY29uZmlnLmdldCgicXVl
cnk9Cl90aW1lb3V0IikpfX0pfSxfcmVmcmVzaEhkYXM6ZnVuY3Rpb24oKXtHYWxheHkmJkdhbGF4
eS5jdXJySGlzdG9yeVBhbmVsJiZHYT0KbGF4eS5jdXJySGlzdG9yeVBhbmVsLnJlZnJlc2hDb250
ZW50cygpfX0pfSksZGVmaW5lKCJwbHVnaW4vbGlicmFyeS9kYXRhc2V0PQpzIixbInV0aWxzL3V0
aWxzIl0sZnVuY3Rpb24oZSl7cmV0dXJuIEJhY2tib25lLkNvbGxlY3Rpb24uZXh0ZW5kKHtsaXN0
Ont9LGM9CmFjaGU6e30saW5pdGlhbGl6ZTpmdW5jdGlvbih0LG4pe3RoaXMuYXBwPTNEdCx0aGlz
Lm9wdGlvbnM9M0RlLm1lcmdlKG4sdGhpcz0KLm9wdGlvbnNEZWZhdWx0KX0scmVxdWVzdDpmdW5j
dGlvbihlKXtlLmdyb3Vwcz90aGlzLl9nZXRfYmxvY2tzKGUpOnRoaXMuX2dlPQp0X2RhdGFzZXQo
ZS5pZCxlLnN1Y2Nlc3MsZS5lcnJvcil9LF9nZXRfYmxvY2tzOmZ1bmN0aW9uKGUpe2Z1bmN0aW9u
IGMoaSl7bC49Cl9nZXQoaSxmdW5jdGlvbigpe3ZhciBzPTNEITE7Zm9yKHZhciBvIGluIGUuZ3Jv
dXBzKXtkZXN0aW5hdGlvbl9ncm91cD0zRGUuZz0Kcm91cHNbb10sc291cmNlX2dyb3VwPTNEaS5n
cm91cHNbb10sZGVzdGluYXRpb25fZ3JvdXAudmFsdWVzfHwoZGVzdGluYXRpb25fPQpncm91cC52
YWx1ZXM9M0RbXSksZGVzdGluYXRpb25fZ3JvdXAudmFsdWVzPTNEZGVzdGluYXRpb25fZ3JvdXAu
dmFsdWVzLmNvbmM9CmF0KHNvdXJjZV9ncm91cC52YWx1ZXMpO2lmKHNvdXJjZV9ncm91cC52YWx1
ZXMubGVuZ3RoPTNEPTNEMCl7cz0zRCEwO2JyZWFrfT0KfWlmKCsrZjx1JiYhcyl7biYmbihwYXJz
ZUludChmL3UqMTAwKSk7dmFyIGw9M0RpLnN0YXJ0K3I7aT0zRCQuZXh0ZW5kKCEwLGEsPQp7c3Rh
cnQ6bH0pLGMoaSl9ZWxzZSB0KCl9KX12YXIgdD0zRGUuc3VjY2VzcyxuPTNEZS5wcm9ncmVzcyxy
PTNEdGhpcy5hcHAuY289Cm5maWcuZ2V0KCJxdWVyeV9saW1pdCIpLGk9M0RlLnN0YXJ0fHwwLHM9
M0RpK2UucXVlcnlfbGltaXR8fGkrdGhpcy5hcHAuY29uZj0KaWcuZ2V0KCJxdWVyeV9saW1pdCIp
LG89M0RNYXRoLmFicyhzLWkpO2lmKG88PTNEMCl7Y29uc29sZS5kZWJ1ZygiRkFJTEVEIC0gPQpE
YXRhc2V0czo6cmVxdWVzdCgpIC0gSW52YWxpZCBxdWVyeSByYW5nZS4iKTtyZXR1cm59dmFyIHU9
M0RNYXRoLmNlaWwoby9yKXw9CnwxLGE9M0QkLmV4dGVuZCghMCx7fSxlKSxmPTNEMCxsPTNEdGhp
cyxoPTNEJC5leHRlbmQoITAsYSx7c3RhcnQ6aX0pO3RoaXMuXz0KZ2V0X2RhdGFzZXQoZS5pZCxm
dW5jdGlvbigpe2MoaCl9KX0sX2dldF9kYXRhc2V0OmZ1bmN0aW9uKHQsbixyKXt2YXIgaT0zRHRo
PQppcy5saXN0W3RdO2lmKGkpe24oaSk7cmV0dXJufXZhciBzPTNEdGhpcztlLnJlcXVlc3Qoe3R5
cGU6IkdFVCIsdXJsOmNvbmZpZy49CnJvb3QrImFwaS9kYXRhc2V0cy8iK3Qsc3VjY2VzczpmdW5j
dGlvbihlKXtzd2l0Y2goZS5zdGF0ZSl7Y2FzZSJlcnJvciI6ciYmcj0KKGUpO2JyZWFrO2RlZmF1
bHQ6cy5saXN0W3RdPTNEZSxuKGUpfX19KX0sX2Jsb2NrX2lkOmZ1bmN0aW9uKGUsdCl7cmV0dXJu
IGUuPQppZCsiXyIrZS5zdGFydCsiXyIrZS5zdGFydCt0aGlzLmFwcC5jb25maWcuZ2V0KCJxdWVy
eV9saW1pdCIpKyJfIit0fSxfZ2V0OmY9CnVuY3Rpb24oZSx0KXtlLnN0YXJ0PTNEZS5zdGFydHx8
MDt2YXIgbj0zRFtdLHI9M0R7fSxpPTNEMDtmb3IodmFyIHMgaW4gZS5ncj0Kb3Vwcyl7dmFyIG89
M0RlLmdyb3Vwc1tzXTtmb3IodmFyIHUgaW4gby5jb2x1bW5zKXt2YXIgYT0zRG8uY29sdW1uc1t1
XS5pbmRlPQp4LGY9M0R0aGlzLl9ibG9ja19pZChlLGEpO2lmKHRoaXMuY2FjaGVbZl18fGE9M0Q9
M0Q9M0QiYXV0byJ8fGE9M0Q9M0Q9M0QiemU9CnJvIiljb250aW51ZTshclthXSYmYSE9M0Q9M0R1
bmRlZmluZWQmJihyW2FdPTNEaSxuLnB1c2goYSksaSsrKX19aWYobi5sZW5ndD0KaD0zRD0zRDAp
e3RoaXMuX2ZpbGxfZnJvbV9jYWNoZShlKSx0KGUpO3JldHVybn12YXIgbD0zRHtkYXRhc2V0X2lk
OmUuaWQsc3RhPQpydDplLnN0YXJ0LGNvbHVtbnM6bn0sYz0zRHRoaXM7dGhpcy5fZmV0Y2gobCxm
dW5jdGlvbihyKXtmb3IodmFyIGkgaW4gcil7dmE9CnIgcz0zRG5baV0sbz0zRGMuX2Jsb2NrX2lk
KGUscyk7Yy5jYWNoZVtvXT0zRHJbaV19Yy5fZmlsbF9mcm9tX2NhY2hlKGUpLHQoZT0KKX0pfSxf
ZmlsbF9mcm9tX2NhY2hlOmZ1bmN0aW9uKGUpe3ZhciB0PTNEZS5zdGFydDtjb25zb2xlLmRlYnVn
KCJEYXRhc2V0czo6PQpfZmlsbF9mcm9tX2NhY2hlKCkgLSBGaWxsaW5nIHJlcXVlc3QgZnJvbSBj
YWNoZSBhdCAiK3QrIi4iKTt2YXIgbj0zRDA7Zm9yKHY9CmFyIHIgaW4gZS5ncm91cHMpe3ZhciBp
PTNEZS5ncm91cHNbcl07Zm9yKHZhciBzIGluIGkuY29sdW1ucyl7dmFyIG89M0RpLmNvbD0KdW1u
c1tzXSx1PTNEdGhpcy5fYmxvY2tfaWQoZSxvLmluZGV4KSxhPTNEdGhpcy5jYWNoZVt1XTthJiYo
bj0zRE1hdGgubWF4KG4sPQphLmxlbmd0aCkpfX1uPTNEPTNEMCYmY29uc29sZS5kZWJ1ZygiRGF0
YXNldHM6Ol9maWxsX2Zyb21fY2FjaGUoKSAtIFJlYWNoZWQ9CiBkYXRhIHJhbmdlIGxpbWl0LiIp
O2Zvcih2YXIgciBpbiBlLmdyb3Vwcyl7dmFyIGk9M0RlLmdyb3Vwc1tyXTtpLnZhbHVlcz0zRD0K
W107Zm9yKHZhciBmPTNEMDtmPG47ZisrKWkudmFsdWVzW2ZdPTNEe3g6cGFyc2VJbnQoZikrdH19
Zm9yKHZhciByIGluIGUuZ3JvPQp1cHMpe3ZhciBpPTNEZS5ncm91cHNbcl07Zm9yKHZhciBzIGlu
IGkuY29sdW1ucyl7dmFyIG89M0RpLmNvbHVtbnNbc107c3dpdGM9Cmgoby5pbmRleCl7Y2FzZSJh
dXRvIjpmb3IodmFyIGY9M0QwO2Y8bjtmKyspe3ZhciBsPTNEaS52YWx1ZXNbZl07bFtzXT0zRHBh
cj0Kc2VJbnQoZikrdH1icmVhaztjYXNlInplcm8iOmZvcih2YXIgZj0zRDA7ZjxuO2YrKyl7dmFy
IGw9M0RpLnZhbHVlc1tmXTtsW3NdPQo9M0QwfWJyZWFrO2RlZmF1bHQ6dmFyIHU9M0R0aGlzLl9i
bG9ja19pZChlLG8uaW5kZXgpLGE9M0R0aGlzLmNhY2hlW3VdO2Zvcig9CnZhciBmPTNEMDtmPG47
ZisrKXt2YXIgbD0zRGkudmFsdWVzW2ZdLGM9M0RhW2ZdO2lzTmFOKGMpJiYhby5pc19sYWJlbCYm
KGM9Cj0zRDApLGxbc109M0RjfX19fX0sX2ZldGNoOmZ1bmN0aW9uKHQsbil7dmFyIHI9M0R0LnN0
YXJ0P3Quc3RhcnQ6MCxpPTNEdGhpcz0KLmFwcC5jb25maWcuZ2V0KCJxdWVyeV9saW1pdCIpLHM9
M0QwO3QuY29sdW1ucyYmKHM9M0R0LmNvbHVtbnMubGVuZ3RoLGNvbnNvPQpsZS5kZWJ1ZygiRGF0
YXNldHM6Ol9mZXRjaCgpIC0gRmV0Y2hpbmcgIitzKyIgY29sdW1uKHMpIGF0ICIrcisiLiIpKSxz
PTNEPQo9M0QwJiZjb25zb2xlLmRlYnVnKCJEYXRhc2V0czo6X2ZldGNoKCkgLSBObyBjb2x1bW5z
IHJlcXVlc3RlZCIpO3ZhciBvPTNEIiI9Cjtmb3IodmFyIHUgaW4gdC5jb2x1bW5zKW8rPTNEdC5j
b2x1bW5zW3VdKyIsIjtvPTNEby5zdWJzdHJpbmcoMCxvLmxlbmd0aC0xKT0KO3ZhciBhPTNEdGhp
cztlLnJlcXVlc3Qoe3R5cGU6IkdFVCIsdXJsOmNvbmZpZy5yb290KyJhcGkvZGF0YXNldHMvIit0
LmRhdGFzPQpldF9pZCxkYXRhOntkYXRhX3R5cGU6InJhd19kYXRhIixwcm92aWRlcjoiZGF0YXNl
dC1jb2x1bW4iLGxpbWl0Omksb2Zmc2V0OnI9CixpbmRlY2VzOm99LHN1Y2Nlc3M6ZnVuY3Rpb24o
ZSl7dmFyIHQ9M0RuZXcgQXJyYXkocyk7Zm9yKHZhciByPTNEMDtyPHM7cisrKT0KdFtyXT0zRFtd
O2Zvcih2YXIgciBpbiBlLmRhdGEpe3ZhciBpPTNEZS5kYXRhW3JdO2Zvcih2YXIgbyBpbiBpKXt2
YXIgdT0zRGlbPQpvXTt1IT0zRD0zRHVuZGVmaW5lZCYmdSE9M0QyMTQ3NDgzNjQ3JiZ0W29dLnB1
c2godSl9fWNvbnNvbGUuZGVidWcoIkRhdGFzZXQ9CnM6Ol9mZXRjaCgpIC0gRmV0Y2hpbmcgY29t
cGxldGUuIiksbih0KX19KX19KX0pLGRlZmluZSgicGx1Z2luL21vZGVscy9ncm91cD0KIixbXSxm
dW5jdGlvbigpe3JldHVybiBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe2RlZmF1bHRzOntrZXk6IkRh
dGEgbGFiZWwiLGRhPQp0ZToiIn0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLmNsZWFyKHtzaWxlbnQ6
ITB9KS5zZXQodGhpcy5kZWZhdWx0cyksdGhpcy50cmk9CmdnZXIoInJlc2V0Iix0aGlzKX19KX0p
LGRlZmluZSgicGx1Z2luL21vZGVscy9ncm91cHMiLFsicGx1Z2luL21vZGVscy9ncm91cD0KIl0s
ZnVuY3Rpb24oZSl7cmV0dXJuIEJhY2tib25lLkNvbGxlY3Rpb24uZXh0ZW5kKHttb2RlbDplfSl9
KSxkZWZpbmUoInBsdWdpPQpuL21vZGVscy9jaGFydCIsWyJwbHVnaW4vbW9kZWxzL2dyb3VwcyJd
LGZ1bmN0aW9uKGUpe3JldHVybiBCYWNrYm9uZS5Nb2RlbC49CmV4dGVuZCh7ZGVmYXVsdHM6e2lk
Om51bGwsdGl0bGU6IiIsdHlwZToiIixkYXRlOm51bGwsc3RhdGU6IiIsc3RhdGVfaW5mbzoiIj0K
LG1vZGlmaWVkOiExLGRhdGFzZXRfaWQ6IiIsZGF0YXNldF9pZF9qb2I6IiJ9LGluaXRpYWxpemU6
ZnVuY3Rpb24odCl7dGhpcy5nPQpyb3Vwcz0zRG5ldyBlLHRoaXMuc2V0dGluZ3M9M0RuZXcgQmFj
a2JvbmUuTW9kZWx9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5jbGU9CmFyKHtzaWxlbnQ6ITB9KS5z
ZXQodGhpcy5kZWZhdWx0cyksdGhpcy5ncm91cHMucmVzZXQoKSx0aGlzLnNldHRpbmdzLmNsZWFy
KD0KKSx0aGlzLnRyaWdnZXIoInJlc2V0Iix0aGlzKX0sY29weTpmdW5jdGlvbihlKXt2YXIgdD0z
RHRoaXM7dC5jbGVhcih7c2lsZW50PQo6ITB9KS5zZXQodGhpcy5kZWZhdWx0cyksdC5zZXQoZS5h
dHRyaWJ1dGVzKSx0LnNldHRpbmdzPTNEZS5zZXR0aW5ncy5jbG9uZSg9CiksdC5ncm91cHMucmVz
ZXQoKSxlLmdyb3Vwcy5lYWNoKGZ1bmN0aW9uKGUpe3QuZ3JvdXBzLmFkZChlLmNsb25lKCkpfSks
dC50cj0KaWdnZXIoImNoYW5nZSIsdCl9LHN0YXRlOmZ1bmN0aW9uKGUsdCl7dGhpcy5zZXQoInN0
YXRlIixlKSx0aGlzLnNldCgic3RhdGVfPQppbmZvIix0KSx0aGlzLnRyaWdnZXIoInNldDpzdGF0
ZSIpLGNvbnNvbGUuZGVidWcoIkNoYXJ0OnN0YXRlKCkgLSAiK3QrIiAoIis9CmUrIikiKX19KX0p
O3ZhciBWaXN1YWxpemF0aW9uPTNEQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHtkZWZhdWx0czp7Y29u
ZmlnOnt9fT0KLHVybFJvb3Q6ZnVuY3Rpb24oKXt2YXIgZT0zRCIvYXBpL3Zpc3VhbGl6YXRpb25z
IjtyZXR1cm4gd2luZG93LmdhbGF4eV9jb25mPQppZyYmZ2FsYXh5X2NvbmZpZy5yb290P2dhbGF4
eV9jb25maWcucm9vdCtlOmV9LGluaXRpYWxpemU6ZnVuY3Rpb24oZSl7Xy5pc089CmJqZWN0KGUu
Y29uZmlnKSYmXy5pc09iamVjdCh0aGlzLmRlZmF1bHRzLmNvbmZpZykmJl8uZGVmYXVsdHMoZS5j
b25maWcsdGhpcz0KLmRlZmF1bHRzLmNvbmZpZyksdGhpcy5fc2V0VXBMaXN0ZW5lcnMoKX0sX3Nl
dFVwTGlzdGVuZXJzOmZ1bmN0aW9uKCl7fSxzZXQ6PQpmdW5jdGlvbihlLHQpe2lmKGU9M0Q9M0Q9
M0QiY29uZmlnIil7dmFyIG49M0R0aGlzLmdldCgiY29uZmlnIik7Xy5pc09iamVjdCg9Cm4pJiYo
dD0zRF8uZXh0ZW5kKF8uY2xvbmUobiksdCkpfXJldHVybiBCYWNrYm9uZS5Nb2RlbC5wcm90b3R5
cGUuc2V0LmNhbGwodD0KaGlzLGUsdCksdGhpc30sdG9TdHJpbmc6ZnVuY3Rpb24oKXt2YXIgZT0z
RHRoaXMuZ2V0KCJpZCIpfHwiIjtyZXR1cm4gdGhpcy5nPQpldCgidGl0bGUiKSYmKGUrPTNEIjoi
K3RoaXMuZ2V0KCJ0aXRsZSIpKSwiVmlzdWFsaXphdGlvbigiK2UrIikifX0pLFZpc3VhbGk9Cnph
dGlvbkNvbGxlY3Rpb249M0RCYWNrYm9uZS5Db2xsZWN0aW9uLmV4dGVuZCh7bW9kZWw6VmlzdWFs
aXphdGlvbix1cmw6ZnVuYz0KdGlvbigpe3JldHVybiBnYWxheHlfY29uZmlnLnJvb3QrImFwaS92
aXN1YWxpemF0aW9ucyJ9LGluaXRpYWxpemU6ZnVuY3Rpb24oPQplLHQpe3Q9M0R0fHx7fX0sc2V0
OmZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0aGlzO2U9M0RfLm1hcChlLGZ1bmN0aW9uKGUpe3ZhciA9
CnQ9M0RuLmdldChlLmlkKTtpZighdClyZXR1cm4gZTt2YXIgcj0zRHQudG9KU09OKCk7cmV0dXJu
IF8uZXh0ZW5kKHIsZSkscn0pLD0KQmFja2JvbmUuQ29sbGVjdGlvbi5wcm90b3R5cGUuc2V0LmNh
bGwodGhpcyxlLHQpfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVyPQpuWyJWaXN1YWxpemF0aW9u
Q29sbGVjdGlvbigiLFt0aGlzLmhpc3RvcnlJZCx0aGlzLmxlbmd0aF0uam9pbigpLCIpIl0uam9p
big9CiIiKX19KTtkZWZpbmUoIm12Yy92aXN1YWxpemF0aW9uL3Zpc3VhbGl6YXRpb24tbW9kZWwi
LGZ1bmN0aW9uKCl7fSksZGVmaW5lKD0KInBsdWdpbi9saWJyYXJ5L3N0b3JhZ2UiLFsidXRpbHMv
dXRpbHMiLCJwbHVnaW4vbW9kZWxzL2NoYXJ0IiwicGx1Z2luL21vZGVsPQpzL2dyb3VwIiwibXZj
L3Zpc3VhbGl6YXRpb24vdmlzdWFsaXphdGlvbi1tb2RlbCJdLGZ1bmN0aW9uKGUsdCxuKXtyZXR1
cm4gQmE9CmNrYm9uZS5Nb2RlbC5leHRlbmQoe3ZpczpudWxsLGluaXRpYWxpemU6ZnVuY3Rpb24o
ZSl7dGhpcy5hcHA9M0RlLHRoaXMuY2hhcj0KdD0zRHRoaXMuYXBwLmNoYXJ0LHRoaXMub3B0aW9u
cz0zRHRoaXMuYXBwLm9wdGlvbnMsdGhpcy5pZD0zRHRoaXMub3B0aW9ucy5pPQpkLHRoaXMudmlz
PTNEbmV3IFZpc3VhbGl6YXRpb24oe3R5cGU6ImNoYXJ0cyIsY29uZmlnOntkYXRhc2V0X2lkOnRo
aXMub3B0aW89Cm5zLmNvbmZpZy5kYXRhc2V0X2lkLGNoYXJ0X2RpY3Q6e319fSksdGhpcy5pZCYm
KHRoaXMudmlzLmlkPTNEdGhpcy5pZCk7dmFyID0KdD0zRHRoaXMub3B0aW9ucy5jb25maWcuY2hh
cnRfZGljdDt0JiYodGhpcy52aXMuZ2V0KCJjb25maWciKS5jaGFydF9kaWN0PTNEPQp0KX0sc2F2
ZTpmdW5jdGlvbigpe3ZhciBlPTNEdGhpcy5hcHAuY2hhcnQ7dGhpcy52aXMuZ2V0KCJjb25maWci
KS5jaGFydF9kaWM9CnQ9M0R7fTt2YXIgdD0zRGUuZ2V0KCJ0aXRsZSIpO3QhPTNEIiImJnRoaXMu
dmlzLnNldCgidGl0bGUiLHQpO3ZhciBuPTNEe2F0dD0KcmlidXRlczplLmF0dHJpYnV0ZXMsc2V0
dGluZ3M6ZS5zZXR0aW5ncy5hdHRyaWJ1dGVzLGdyb3VwczpbXX07ZS5ncm91cHMuZWFjPQpoKGZ1
bmN0aW9uKGUpe24uZ3JvdXBzLnB1c2goZS5hdHRyaWJ1dGVzKX0pLHRoaXMudmlzLmdldCgiY29u
ZmlnIikuY2hhcnRfZGk9CmN0PTNEbjt2YXIgcj0zRHRoaXM7dGhpcy52aXMuc2F2ZSgpLmZhaWwo
ZnVuY3Rpb24oZSx0LG4pe2NvbnNvbGUuZXJyb3IoZSx0LD0Kbil9KS50aGVuKGZ1bmN0aW9uKGUp
e2UmJmUuaWQmJihyLmlkPTNEZS5pZCl9KX0sbG9hZDpmdW5jdGlvbigpe3ZhciBlPTNEdGhpPQpz
LnZpcy5nZXQoImNvbmZpZyIpLmNoYXJ0X2RpY3Q7aWYoIWUuYXR0cmlidXRlcylyZXR1cm4hMTt2
YXIgdD0zRGUuYXR0cmlidXQ9CmVzLnR5cGU7aWYoIXQpcmV0dXJuIGNvbnNvbGUuZGVidWcoIlN0
b3JhZ2U6OmxvYWQoKSAtIENoYXJ0IHR5cGUgbm90IHByb3ZpZD0KZWQuIEludmFsaWQgZm9ybWF0
LiIpLCExO3ZhciByPTNEdGhpcy5hcHAudHlwZXMuZ2V0KHQpO2lmKCFyKXJldHVybiBjb25zb2xl
PQouZGVidWcoIlN0b3JhZ2U6OmxvYWQoKSAtIENoYXJ0IHR5cGUgbm90IHN1cHBvcnRlZC4gUGxl
YXNlIHJlLWNvbmZpZ3VyZSB0aGU9CiBjaGFydC4gUmVzZXR0aW5nIGNoYXJ0LiIpLCExO2NvbnNv
bGUuZGVidWcoIlN0b3JhZ2U6OmxvYWQoKSAtIExvYWRpbmcgY2hhcj0KdCB0eXBlICIrdCsiLiIp
LHRoaXMuY2hhcnQuZGVmaW5pdGlvbj0zRHIsdGhpcy5jaGFydC5zZXQoZS5hdHRyaWJ1dGVzKSx0
aGlzPQouY2hhcnQuc3RhdGUoIm9rIiwiTG9hZGluZyBzYXZlZCB2aXN1YWxpemF0aW9uLi4uIiks
dGhpcy5jaGFydC5zZXR0aW5ncy5zZXQ9CihlLnNldHRpbmdzKTtmb3IodmFyIGkgaW4gZS5ncm91
cHMpdGhpcy5jaGFydC5ncm91cHMuYWRkKG5ldyBuKGUuZ3JvdXBzW2ldKT0KKTtyZXR1cm4gdGhp
cy5jaGFydC5zZXQoIm1vZGlmaWVkIiwhMSksITB9fSl9KSxkZWZpbmUoInV0aWxzL2RlZmVycmVk
IixbInV0PQppbHMvdXRpbHMiXSxmdW5jdGlvbihlKXtyZXR1cm4gQmFja2JvbmUuTW9kZWwuZXh0
ZW5kKHtxdWV1ZTpbXSxwcm9jZXNzOnt9LGM9Cm91bnRlcjowLGluaXRpYWxpemU6ZnVuY3Rpb24o
KXt0aGlzLm9uKCJyZWZyZXNoIixmdW5jdGlvbigpe2lmKHRoaXMucXVldWUubD0KZW5ndGg+MCYm
dGhpcy5yZWFkeSgpKXt2YXIgZT0zRHRoaXMucXVldWVbMF07dGhpcy5xdWV1ZS5zcGxpY2UoMCwx
KSxlJiZlKCl9PQp9KX0sZXhlY3V0ZTpmdW5jdGlvbihlKXt0aGlzLnF1ZXVlLnB1c2goZSksdGhp
cy50cmlnZ2VyKCJyZWZyZXNoIil9LHJlZ2lzdGU9CnI6ZnVuY3Rpb24oKXt2YXIgdD0zRGUudXVp
ZCgpO3JldHVybiB0aGlzLnByb2Nlc3NbdF09M0QhMCx0aGlzLmNvdW50ZXIrKyxjbz0KbnNvbGUu
ZGVidWcoIkRlZmVycmVkOnJlZ2lzdGVyKCkgLSBSZWdpc3RlcmluZyAiK3QpLHR9LGRvbmU6ZnVu
Y3Rpb24oZSl7dGhpPQpzLnByb2Nlc3NbZV0mJihkZWxldGUgdGhpcy5wcm9jZXNzW2VdLHRoaXMu
Y291bnRlci0tLGNvbnNvbGUuZGVidWcoIkRlZmVycmU9CmQ6ZG9uZSgpIC0gVW5yZWdpc3Rlcmlu
ZyAiK2UpLHRoaXMudHJpZ2dlcigicmVmcmVzaCIpKX0scmVzZXQ6ZnVuY3Rpb24oKXt0aD0KaXMu
cXVldWU9M0RbXX0scmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb3VudGVyPTNEPTNEMH19
KX0pLGRlZmluZSgicGx1PQpnaW4vdmlld3Mvdmlld3BvcnQiLFsibXZjL3VpL3VpLXBvcnRsZXQi
LCJtdmMvdWkvdWktbWlzYyIsInV0aWxzL3V0aWxzIl0sZnU9Cm5jdGlvbihlLHQsbil7cmV0dXJu
IEJhY2tib25lLlZpZXcuZXh0ZW5kKHtjb250YWluZXJfbGlzdDpbXSxjYW52YXNfbGlzdDpbXT0K
LGluaXRpYWxpemU6ZnVuY3Rpb24oZSx0KXt0aGlzLmFwcD0zRGUsdGhpcy5jaGFydD0zRHRoaXMu
YXBwLmNoYXJ0LHRoaXMub3B0PQppb25zPTNEbi5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQp
LHRoaXMuc2V0RWxlbWVudCgkKHRoaXMuX3RlbXBsYXRlKCkpKSw9CnRoaXMuX2Z1bGxzY3JlZW4o
dGhpcy4kZWwsMTAwKSx0aGlzLl9jcmVhdGVDb250YWluZXIoImRpdiIpO3ZhciByPTNEdGhpczt0
aD0KaXMuY2hhcnQub24oInJlZHJhdyIsZnVuY3Rpb24oKXtyLl9kcmF3KHIuY2hhcnQpfSksdGhp
cy5jaGFydC5vbigic2V0OnN0YXRlPQoiLGZ1bmN0aW9uKCl7dmFyIGU9M0RyLiRlbC5maW5kKCIj
aW5mbyIpLHQ9M0RyLiRlbC5maW5kKCIuY2hhcnRzLXZpZXdwb3J0LWM9Cm9udGFpbmVyIiksbj0z
RGUuZmluZCgiI2ljb24iKTtuLnJlbW92ZUNsYXNzKCksZS5zaG93KCksZS5maW5kKCIjdGV4dCIp
Lmh0bT0KbChyLmNoYXJ0LmdldCgic3RhdGVfaW5mbyIpKTt2YXIgaT0zRHIuY2hhcnQuZ2V0KCJz
dGF0ZSIpO3N3aXRjaChpKXtjYXNlIm9rPQoiOmUuaGlkZSgpLHQuc2hvdygpO2JyZWFrO2Nhc2Ui
ZmFpbGVkIjpuLmFkZENsYXNzKCJpY29uIGZhIGZhLXdhcm5pbmciKSx0Lmg9CmlkZSgpO2JyZWFr
O2RlZmF1bHQ6bi5hZGRDbGFzcygiaWNvbiBmYSBmYS1zcGlubmVyIGZhLXNwaW4iKSx0LnNob3co
KX19KX0scz0KaG93OmZ1bmN0aW9uKCl7dGhpcy4kZWwuc2hvdygpfSxoaWRlOmZ1bmN0aW9uKCl7
dGhpcy4kZWwuaGlkZSgpfSxfZnVsbHNjcmVlPQpuOmZ1bmN0aW9uKGUsdCl7ZS5jc3MoImhlaWdo
dCIsJCh3aW5kb3cpLmhlaWdodCgpLXQpLCQod2luZG93KS5yZXNpemUoZnVuY3Q9Cmlvbigpe2Uu
Y3NzKCJoZWlnaHQiLCQod2luZG93KS5oZWlnaHQoKS10KX0pfSxfY3JlYXRlQ29udGFpbmVyOmZ1
bmN0aW9uKGUsdD0KKXt0PTNEdHx8MTtmb3IodmFyIG4gaW4gdGhpcy5jb250YWluZXJfbGlzdCl0
aGlzLmNvbnRhaW5lcl9saXN0W25dLnJlbW92ZSgpPQo7dGhpcy5jb250YWluZXJfbGlzdD0zRFtd
LHRoaXMuY2FudmFzX2xpc3Q9M0RbXTtmb3IodmFyIG49M0QwO248dDtuKyspe3ZhciA9CnI9M0Qk
KHRoaXMuX3RlbXBsYXRlQ29udGFpbmVyKGUscGFyc2VJbnQoMTAwL3QpKSk7dGhpcy4kZWwuYXBw
ZW5kKHIpLHRoaXMuYz0Kb250YWluZXJfbGlzdFtuXT0zRHIsdGhpcy5jYW52YXNfbGlzdFtuXT0z
RHIuZmluZCgiLmNoYXJ0cy12aWV3cG9ydC1jYW52YXMiPQopLmF0dHIoImlkIil9fSxfZHJhdzpm
dW5jdGlvbihlKXt2YXIgdD0zRHRoaXMsbj0zRHRoaXMuYXBwLmRlZmVycmVkLnJlZ2lzdGU9CnIo
KSxyPTNEZS5nZXQoInR5cGUiKTt0aGlzLmNoYXJ0X2RlZmluaXRpb249M0RlLmRlZmluaXRpb247
dmFyIGk9M0QxO2Uuc2V0dD0KaW5ncy5nZXQoInVzZV9wYW5lbHMiKT0zRD0zRD0zRCJ0cnVlIiYm
KGk9M0RlLmdyb3Vwcy5sZW5ndGgpLHRoaXMuX2NyZWF0ZUNvPQpudGFpbmVyKHRoaXMuY2hhcnRf
ZGVmaW5pdGlvbi50YWcsaSksZS5zdGF0ZSgid2FpdCIsIlBsZWFzZSB3YWl0Li4uIik7aWYoIXQ9
Cmhpcy5jaGFydF9kZWZpbml0aW9uLmV4ZWN1dGV8fHRoaXMuY2hhcnRfZGVmaW5pdGlvbi5leGVj
dXRlJiZlLmdldCgibW9kaWZpZT0KZCIpKXRoaXMuYXBwLmpvYnMuY2xlYW51cChlKSxlLnNldCgi
bW9kaWZpZWQiLCExKTt2YXIgdD0zRHRoaXM7cmVxdWlyZShbInBsPQp1Z2luL2NoYXJ0cy8iK3Ro
aXMuYXBwLmNoYXJ0UGF0aChyKSsiL3dyYXBwZXIiXSxmdW5jdGlvbihyKXtpZih0LmNoYXJ0X2Rl
Zmk9Cm5pdGlvbi5leGVjdXRlKXQuYXBwLmpvYnMucmVxdWVzdChlLHQuX2RlZmF1bHRTZXR0aW5n
c1N0cmluZyhlKSx0Ll9kZWZhdWx0Uj0KZXF1ZXN0U3RyaW5nKGUpLGZ1bmN0aW9uKCl7dmFyIGk9
M0RuZXcgcih0LmFwcCx7cHJvY2Vzc19pZDpuLGNoYXJ0OmUscmVxdWVzPQp0X2RpY3Rpb25hcnk6
dC5fZGVmYXVsdFJlcXVlc3REaWN0aW9uYXJ5KGUpLGNhbnZhc19saXN0OnQuY2FudmFzX2xpc3R9
KX0sZnU9Cm5jdGlvbigpe3RoaXMuYXBwLmRlZmVycmVkLmRvbmUobil9KTtlbHNlIHZhciBpPTNE
bmV3IHIodC5hcHAse3Byb2Nlc3NfaWQ6bj0KLGNoYXJ0OmUscmVxdWVzdF9kaWN0aW9uYXJ5OnQu
X2RlZmF1bHRSZXF1ZXN0RGljdGlvbmFyeShlKSxjYW52YXNfbGlzdDp0LmNhPQpudmFzX2xpc3R9
KX0pfSxfZGVmYXVsdFJlcXVlc3RTdHJpbmc6ZnVuY3Rpb24oZSl7dmFyIHQ9M0QiIixuPTNEMCxy
PTNEdGhpczs9CnJldHVybiBlLmdyb3Vwcy5lYWNoKGZ1bmN0aW9uKGUpe24rKztmb3IodmFyIGkg
aW4gci5jaGFydF9kZWZpbml0aW9uLmNvbHVtbj0Kcyl0Kz0zRGkrIl8iK24rIjoiKyhwYXJzZUlu
dChlLmdldChpKSkrMSkrIiwgIn0pLHQuc3Vic3RyaW5nKDAsdC5sZW5ndGgtMil9PQosX2RlZmF1
bHRTZXR0aW5nc1N0cmluZzpmdW5jdGlvbihlKXt2YXIgdD0zRCIiO2ZvcihrZXkgaW4gZS5zZXR0
aW5ncy5hdHRyaWI9CnV0ZXMpdCs9M0RrZXkrIjoiK2Uuc2V0dGluZ3MuZ2V0KGtleSkrIiwgIjty
ZXR1cm4gdC5zdWJzdHJpbmcoMCx0Lmxlbmd0aC0yKT0KfSxfZGVmYXVsdFJlcXVlc3REaWN0aW9u
YXJ5OmZ1bmN0aW9uKGUpe3ZhciB0PTNEe2dyb3VwczpbXX07dGhpcy5jaGFydF9kZWZpPQpuaXRp
b24uZXhlY3V0ZT90LmlkPTNEZS5nZXQoImRhdGFzZXRfaWRfam9iIik6dC5pZD0zRGUuZ2V0KCJk
YXRhc2V0X2lkIik7dmE9CnIgcj0zRDAsaT0zRHRoaXM7cmV0dXJuIGUuZ3JvdXBzLmVhY2goZnVu
Y3Rpb24oZSl7dmFyIHM9M0R7fTtmb3IodmFyIG8gaW4gaT0KLmNoYXJ0X2RlZmluaXRpb24uY29s
dW1ucyl7dmFyIHU9M0RpLmNoYXJ0X2RlZmluaXRpb24uY29sdW1uc1tvXTtzW29dPTNEbi5tPQpl
cmdlKHtpbmRleDplLmdldChvKX0sdSl9dC5ncm91cHMucHVzaCh7a2V5OisrcisiOiIrZS5nZXQo
ImtleSIpLGNvbHVtbnM6c309Cil9KSx0fSxfdGVtcGxhdGU6ZnVuY3Rpb24oKXtyZXR1cm4nPGRp
diBjbGFzcz0zRCJjaGFydHMtdmlld3BvcnQiPjxkaXYgaWQ9Cj0zRCJpbmZvIiBjbGFzcz0zRCJp
bmZvIj48c3BhbiBpZD0zRCJpY29uIiBjbGFzcz0zRCJpY29uIi8+PHNwYW4gaWQ9M0QidGV4dD0K
IiBjbGFzcz0zRCJ0ZXh0IiAvPjwvZGl2PjwvZGl2Pid9LF90ZW1wbGF0ZUNvbnRhaW5lcjpmdW5j
dGlvbihlLHQpe3JldHVybic8PQpkaXYgY2xhc3M9M0QiY2hhcnRzLXZpZXdwb3J0LWNvbnRhaW5l
ciIgc3R5bGU9M0Qid2lkdGg6Jyt0KyclOyI+JysnPGRpdiBpZD0KPTNEIm1lbnUiLz4nKyI8Iitl
KycgaWQ9M0QiJytuLnV1aWQoKSsnIiBjbGFzcz0zRCJjaGFydHMtdmlld3BvcnQtY2FudmFzIj4n
PQorIjwvZGl2PiJ9fSl9KSxkZWZpbmUoInBsdWdpbi9saWJyYXJ5L3NjcmVlbnNob3QiLFsibGli
cy91bmRlcnNjb3JlIl0sZnVuY3Q9CmlvbihlKXtmdW5jdGlvbiB0KGUpe2UuJGVsLmZpbmQoInN2
ZyIpLmxlbmd0aD4wP3IoZSk6bihlKX1mdW5jdGlvbiBuKGUpe3RyeT0Ke3ZhciB0PTNEZS4kZWwu
ZmluZCgiLmpxcGxvdC10YXJnZXQiKSxuPTNEdC5qcXBsb3RUb0ltYWdlU3RyKHt9KTtuJiYod2lu
ZG93PQoubG9jYXRpb24uaHJlZj0zRG4ucmVwbGFjZSgiaW1hZ2UvcG5nIiwiaW1hZ2Uvb2N0ZXQt
c3RyZWFtIikpfWNhdGNoKHIpe2NvbnM9Cm9sZS5kZWJ1ZygiRkFJTEVEIC0gU2NyZWVuc2hvdDo6
X2Zyb21DYW52YXMoKSAtICIrciksZS5lcnJvciYmZS5lcnJvcigiUGxlYT0Kc2UgcmVkdWNlIHlv
dXIgY2hhcnQgdG8gYSBzaW5nbGUgcGFuZWwgYW5kIHRyeSBhZ2Fpbi4iKX19ZnVuY3Rpb24gcihl
KXt2YXIgPQp0PTNEZS4kZWwsbj0zRGUudXJsLHI9M0RlLm5hbWUscz0zRG5ldyBYTUxTZXJpYWxp
emVyLG89M0Rkb2N1bWVudC5jcmVhdGVFbGU9Cm1lbnQoImNhbnZhcyIpLHU9M0QkKG8pLGE9M0R0
LmZpbmQoInN2ZyIpLmxlbmd0aCxmPTNEdC5maW5kKCJzdmciKS5maXJzdCgpLD0KbD0zRHBhcnNl
SW50KGYuY3NzKCJoZWlnaHQiKSksYz0zRHBhcnNlSW50KGYuY3NzKCJ3aWR0aCIpKTt1LmF0dHIo
IndpZHRoIixjPQoqYSksdS5hdHRyKCJoZWlnaHQiLGwpLCghby5nZXRDb250ZXh0fHwhby5nZXRD
b250ZXh0KCIyZCIpKSYmYWxlcnQoIllvdXIgYnI9Cm93c2VyIGRvZXNuJ3Qgc3VwcG9ydCB0aGlz
IGZlYXR1cmUsIHBsZWFzZSB1c2UgYSBtb2Rlcm4gYnJvd3NlciIpO3ZhciBoPTNEbz0KLmdldENv
bnRleHQoIjJkIikscD0zRDA7dC5maW5kKCJzdmciKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9M0Qk
KHRoaXMpO2UuYXR0PQpyKHt2ZXJzaW9uOiIxLjEiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2ZyIsd2lkdGg6YyxoZWlnaHQ6bH0pO3ZhciA9CnQ9M0RzLnNlcmlhbGl6ZVRvU3RyaW5n
KHRoaXMpO2guZHJhd1N2Zyh0LHAsMCxjLGwpLHArPTNEY30pLHdpbmRvdy5sb2NhdGlvbj0KLmhy
ZWY9M0RpKG8sby5nZXRDb250ZXh0KCIyZCIpLCJ3aGl0ZSIpLnJlcGxhY2UoImltYWdlL3BuZyIs
ImltYWdlL29jdGV0LXN0PQpyZWFtIil9ZnVuY3Rpb24gaShlLHQsbil7dmFyIHI9M0RlLndpZHRo
LGk9M0RlLmhlaWdodCxzO2lmKG4pe3M9M0R0LmdldEltYWc9CmVEYXRhKDAsMCxyLGkpO3ZhciBv
PTNEdC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb247dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpbz0K
bj0zRCJkZXN0aW5hdGlvbi1vdmVyIix0LmZpbGxTdHlsZT0zRG4sdC5maWxsUmVjdCgwLDAscixp
KX12YXIgdT0zRGUudG9EYXRhPQpVUkwoImltYWdlL3BuZyIpO3JldHVybiBuJiYodC5jbGVhclJl
Y3QoMCwwLHIsaSksdC5wdXRJbWFnZURhdGEocywwLDApLHQuZ2w9Cm9iYWxDb21wb3NpdGVPcGVy
YXRpb249M0RvKSx1fWZ1bmN0aW9uIHMoZSl7d2luZG93LmxvY2F0aW9uLmhyZWY9M0QiZGF0YTpu
bz0KbmUvbm9uZTtiYXNlNjQsIitidG9hKGEoZSkuc3RyaW5nKX1mdW5jdGlvbiBvKGUpe2Zvcih2
YXIgdCBpbiBkb2N1bWVudC5zdHlsPQplU2hlZXRzKXt2YXIgbj0zRGRvY3VtZW50LnN0eWxlU2hl
ZXRzW3RdLHI9M0RuLmNzc1J1bGVzO2lmKHIpZm9yKHZhciBpPTNEMCw9CnM9M0RyLmxlbmd0aDtp
PHM7aSsrKXRyeXtlLmZpbmQocltpXS5zZWxlY3RvclRleHQpLmVhY2goZnVuY3Rpb24oZSx0KXt0
LnN0eT0KbGUuY3NzVGV4dCs9M0RyW2ldLnN0eWxlLmNzc1RleHR9KX1jYXRjaChvKXt9fX1mdW5j
dGlvbiB1KGUpe3ZhciB0PTNEYShlKSxuPQo9M0R7ZmlsZW5hbWU6bmFtZXx8ImNoYXJ0Iix0eXBl
OiJhcHBsaWNhdGlvbi9wZGYiLGhlaWdodDp0LmhlaWdodCx3aWR0aDp0Lnc9CmlkdGgsc2NhbGU6
Mixzdmc6dC5zdHJpbmd9LHI9M0QkKCJib2R5IiksaT0zRHIuZmluZCgiI3ZpZXdwb3J0LWZvcm0i
KTtpLmxlbj0KZ3RoPTNEPTNEPTNEMCYmKGk9M0QkKCI8Zm9ybT4iLHtpZDoidmlld3BvcnQtZm9y
bSIsbWV0aG9kOiJwb3N0IixhY3Rpb246Imh0PQp0cDovL2V4cG9ydC5oaWdoY2hhcnRzLmNvbS8i
LGRpc3BsYXk6Im5vbmUifSksci5hcHBlbmQoaSkpLGkuZW1wdHkoKTtmb3IobmE9Cm1lIGluIG4p
e3ZhciBzPTNEJCgiPGlucHV0Lz4iLHt0eXBlOiJoaWRkZW4iLG5hbWU6bmFtZSx2YWx1ZTpuW25h
bWVdfSk7aS5hcD0KcGVuZChzKX10cnl7aS5zdWJtaXQoKX1jYXRjaChvKXtjb25zb2xlLmxvZyhv
KX19ZnVuY3Rpb24gYShlKXtpZihlLiRlbC5maW5kPQooInN2ZyIpLmxlbmd0aD0zRD0zRDAmJmUu
ZXJyb3Ipe2UuZXJyb3IoIk5vIFNWRyBmb3VuZC4gVGhpcyBjaGFydCB0eXBlIGRvZXM9CiBub3Qg
c3VwcG9ydCBTVkcvUERGIGV4cG9ydC4iKTtyZXR1cm59dmFyIHQ9M0RlLiRlbCxuPTNEdC5maW5k
KCJzdmciKS5sZW5ndD0KaCxyPTNEcGFyc2VJbnQodC5maW5kKCJzdmciKS5maXJzdCgpLmNzcygi
aGVpZ2h0IikpLGk9M0RwYXJzZUludCh0LmZpbmQoInN2PQpnIikuZmlyc3QoKS5jc3MoIndpZHRo
IikpLHM9M0RuZXcgWE1MU2VyaWFsaXplcix1PTNEJCgiPHN2Zy8+Iik7dS5hdHRyKHt2ZXI9CnNp
b246IjEuMSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDppKm4saGVp
Z2h0OnJ9KTt2YXIgYT0zRD0KIiIsZj0zRDA7cmV0dXJuIHQuZmluZCgic3ZnIikuZWFjaChmdW5j
dGlvbigpe3ZhciBlPTNEJCh0aGlzKS5jbG9uZSgpO28oZSk7PQp2YXIgdD0zRCQoJzxnIHRyYW5z
Zm9ybT0zRCJ0cmFuc2xhdGUoJytmKycsIDApIj4nKTt0LmFwcGVuZChlLmZpbmQoImciKS5maXI9
CnN0KCkpLHUuYXBwZW5kKHQpLGYrPTNEaX0pLHtzdHJpbmc6cy5zZXJpYWxpemVUb1N0cmluZyh1
WzBdKSxoZWlnaHQ6cix3aWR0aD0KOml9fXJldHVybntjcmVhdGVQTkc6dCxjcmVhdGVTVkc6cyxj
cmVhdGVQREY6dX19KSxkZWZpbmUoInBsdWdpbi92aWV3cy92aWV3PQplciIsWyJ1dGlscy91dGls
cyIsIm12Yy91aS91aS1taXNjIiwibXZjL3VpL3VpLXBvcnRsZXQiLCJwbHVnaW4vdmlld3Mvdmll
d3A9Cm9ydCIsInBsdWdpbi9saWJyYXJ5L3NjcmVlbnNob3QiXSxmdW5jdGlvbihlLHQsbixyLGkp
e3JldHVybiBCYWNrYm9uZS5WaWV3Lj0KZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKGUscyl7
dGhpcy5hcHA9M0RlLHRoaXMuY2hhcnQ9M0R0aGlzLmFwcC5jaGFydCx0PQpoaXMudmlld3BvcnRf
dmlldz0zRG5ldyByKGUpO3ZhciBvPTNEdGhpczt0aGlzLm1lc3NhZ2U9M0RuZXcgdC5NZXNzYWdl
O3ZhciA9CnU9M0RuZXcgdC5CdXR0b25NZW51KHtpY29uOiJmYS1jYW1lcmEiLHRpdGxlOiJTY3Jl
ZW5zaG90Iix0b29sdGlwOiJEb3dubG9hZD0KIGFzIFBORywgU1ZHIG9yIFBERiBmaWxlIn0pO3Uu
YWRkTWVudSh7aWQ6ImJ1dHRvbi1wbmciLHRpdGxlOiJTYXZlIGFzIFBORyIsPQppY29uOiJmYS1m
aWxlIixvbmNsaWNrOmZ1bmN0aW9uKCl7by5fd2FpdChvLmNoYXJ0LGZ1bmN0aW9uKCl7aS5jcmVh
dGVQTkcoeyQ9CmVsOm8udmlld3BvcnRfdmlldy4kZWwsdGl0bGU6by5jaGFydC5nZXQoInRpdGxl
IiksZXJyb3I6ZnVuY3Rpb24oZSl7by5tZXNzYT0KZ2UudXBkYXRlKHttZXNzYWdlOmUsc3RhdHVz
OiJkYW5nZXIifSl9fSl9KX19KSx1LmFkZE1lbnUoe2lkOiJidXR0b24tc3ZnIix0PQppdGxlOiJT
YXZlIGFzIFNWRyIsaWNvbjoiZmEtZmlsZS10ZXh0LW8iLG9uY2xpY2s6ZnVuY3Rpb24oKXtvLl93
YWl0KG8uY2hhcnQ9CixmdW5jdGlvbigpe2kuY3JlYXRlU1ZHKHskZWw6by52aWV3cG9ydF92aWV3
LiRlbCx0aXRsZTpvLmNoYXJ0LmdldCgidGl0bGUiKT0KLGVycm9yOmZ1bmN0aW9uKGUpe28ubWVz
c2FnZS51cGRhdGUoe21lc3NhZ2U6ZSxzdGF0dXM6ImRhbmdlciJ9KX19KX0pfX0pLHUuPQphZGRN
ZW51KHtpZDoiYnV0dG9uLXBuZyIsdGl0bGU6IlNhdmUgYXMgUERGIixpY29uOiJmYS1maWxlLW8i
LG9uY2xpY2s6ZnVuY3Q9Cmlvbigpe28uYXBwLm1vZGFsLnNob3coe3RpdGxlOiJTZW5kIGNoYXJ0
IGRhdGEgZm9yIFBERiBjcmVhdGlvbiIsYm9keToiR2FsYT0KeHkgZG9lcyBub3QgcHJvdmlkZSBp
bnRlZ3JhdGVkIFBERiBleHBvcnQgc2NyaXB0cy4gWW91IG1heSBjbGljayAnQ29udGludWUnPQog
dG8gY3JlYXRlIHRoZSBQREYgYnkgdXNpbmcgYSAzcmQgcGFydHkgc2VydmljZSAoaHR0cHM6Ly9l
eHBvcnQuaGlnaGNoYXJ0cy49CmNvbSkuIixidXR0b25zOntDYW5jZWw6ZnVuY3Rpb24oKXtvLmFw
cC5tb2RhbC5oaWRlKCl9LENvbnRpbnVlOmZ1bmN0aW9uKCl7bz0KLmFwcC5tb2RhbC5oaWRlKCks
by5fd2FpdChvLmNoYXJ0LGZ1bmN0aW9uKCl7aS5jcmVhdGVQREYoeyRlbDpvLnZpZXdwb3J0X3Zp
PQpldy4kZWwsdGl0bGU6by5jaGFydC5nZXQoInRpdGxlIiksZXJyb3I6ZnVuY3Rpb24oZSl7by5t
ZXNzYWdlLnVwZGF0ZSh7bWVzc2E9CmdlOmUsc3RhdHVzOiJkYW5nZXIifSl9fSl9KX19fSl9fSks
dGhpcy5wb3J0bGV0PTNEbmV3IG4uVmlldyh7aWNvbjoiZmEtYmFyLT0KY2hhcnQtbyIsdGl0bGU6
IlZpZXdwb3J0IixzY3JvbGxhYmxlOiExLG9wZXJhdGlvbnM6e2VkaXRfYnV0dG9uOm5ldyB0LkJ1
dHRvPQpuSWNvbih7aWNvbjoiZmEtZWRpdCIsdG9vbHRpcDoiQ3VzdG9taXplIHRoaXMgY2hhcnQi
LHRpdGxlOiJFZGl0b3IiLG9uY2xpY2s9CjpmdW5jdGlvbigpe28uX3dhaXQoby5jaGFydCxmdW5j
dGlvbigpe28uYXBwLmdvKCJlZGl0b3IiKX0pfX0pLHBpY3R1cmVfYnV0dD0Kb25fbWVudTp1fX0p
LHRoaXMucG9ydGxldC5hcHBlbmQodGhpcy5tZXNzYWdlLiRlbCksdGhpcy5wb3J0bGV0LmFwcGVu
ZCh0aGlzPQoudmlld3BvcnRfdmlldy4kZWwpLHRoaXMuc2V0RWxlbWVudCh0aGlzLnBvcnRsZXQu
JGVsKTt2YXIgbz0zRHRoaXM7dGhpcy5jaGE9CnJ0Lm9uKCJjaGFuZ2U6dGl0bGUiLGZ1bmN0aW9u
KCl7by5fcmVmcmVzaFRpdGxlKCl9KX0sc2hvdzpmdW5jdGlvbigpe3RoaXMuJD0KZWwuc2hvdygp
LCQod2luZG93KS50cmlnZ2VyKCJyZXNpemUiKX0saGlkZTpmdW5jdGlvbigpe3RoaXMuJGVsLmhp
ZGUoKX0sX3JlPQpmcmVzaFRpdGxlOmZ1bmN0aW9uKCl7dmFyIGU9M0R0aGlzLmNoYXJ0LmdldCgi
dGl0bGUiKTt0aGlzLnBvcnRsZXQudGl0bGUoZSk9Cn0sX3dhaXQ6ZnVuY3Rpb24oZSx0KXt0aGlz
LmFwcC5kZWZlcnJlZC5yZWFkeSgpP3QoKTp0aGlzLm1lc3NhZ2UudXBkYXRlKHttZT0Kc3NhZ2U6
IllvdXIgY2hhcnQgaXMgY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZC4gUGxlYXNlIHdhaXQgYW5k
IHRyeSBhZ2Fpbi4iPQp9KX19KX0pLGRlZmluZSgibXZjL3VpL3VpLXRhYnMiLFsidXRpbHMvdXRp
bHMiXSxmdW5jdGlvbihlKXt2YXIgdD0zREJhY2tib249CmUuVmlldy5leHRlbmQoe29wdGlvbnNE
ZWZhdWx0Ont0aXRsZV9uZXc6IiIsb3BlcmF0aW9uczpudWxsLG9ubmV3Om51bGwsbWF4Oj0KbnVs
bCxvbmNoYW5nZTpudWxsfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMudmlzaWJsZT0zRCEx
LHRoaXMuJG5hdj0zRG51PQpsbCx0aGlzLiRjb250ZW50PTNEbnVsbCx0aGlzLmZpcnN0X3RhYj0z
RG51bGwsdGhpcy5jdXJyZW50X2lkPTNEbnVsbCx0aGlzLm89CnB0aW9ucz0zRGUubWVyZ2UodCx0
aGlzLm9wdGlvbnNEZWZhdWx0KTt2YXIgbj0zRCQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpbz0K
bnMpKTt0aGlzLiRuYXY9M0RuLmZpbmQoIi50YWItbmF2aWdhdGlvbiIpLHRoaXMuJGNvbnRlbnQ9
M0RuLmZpbmQoIi50YWItY29uPQp0ZW50IiksdGhpcy5zZXRFbGVtZW50KG4pLHRoaXMubGlzdD0z
RHt9O3ZhciByPTNEdGhpczt0aGlzLm9wdGlvbnMub3BlcmF0aW89Cm5zJiYkLmVhY2godGhpcy5v
cHRpb25zLm9wZXJhdGlvbnMsZnVuY3Rpb24oZSx0KXt0LiRlbC5wcm9wKCJpZCIsZSksci4kbmF2
Lj0KZmluZCgiLm9wZXJhdGlvbnMiKS5hcHBlbmQodC4kZWwpfSk7aWYodGhpcy5vcHRpb25zLm9u
bmV3KXt2YXIgaT0zRCQodGhpcy5fPQp0ZW1wbGF0ZV90YWJfbmV3KHRoaXMub3B0aW9ucykpO3Ro
aXMuJG5hdi5hcHBlbmQoaSksaS50b29sdGlwKHt0aXRsZToiQWRkIGE9CiBuZXcgdGFiIixwbGFj
ZW1lbnQ6ImJvdHRvbSIsY29udGFpbmVyOnIuJGVsfSksaS5vbigiY2xpY2siLGZ1bmN0aW9uKGUp
e2kudD0Kb29sdGlwKCJoaWRlIiksci5vcHRpb25zLm9ubmV3KCl9KX19LHNpemU6ZnVuY3Rpb24o
KXtyZXR1cm4gXy5zaXplKHRoaXMubGlzPQp0KX0sY3VycmVudDpmdW5jdGlvbigpe3JldHVybiB0
aGlzLiRlbC5maW5kKCIudGFiLXBhbmUuYWN0aXZlIikuYXR0cigiaWQiKX09CixhZGQ6ZnVuY3Rp
b24oZSl7dmFyIHQ9M0R0aGlzLG49M0RlLmlkLHI9M0QkKHRoaXMuX3RlbXBsYXRlX3RhYihlKSks
aT0zRCQodD0KaGlzLl90ZW1wbGF0ZV90YWJfY29udGVudChlKSk7dGhpcy5saXN0W25dPTNEZS5v
bmRlbD8hMDohMSx0aGlzLm9wdGlvbnMub25uPQpldz90aGlzLiRuYXYuZmluZCgiI25ldy10YWIi
KS5iZWZvcmUocik6dGhpcy4kbmF2LmFwcGVuZChyKSxpLmFwcGVuZChlLiRlbCk9Cix0aGlzLiRj
b250ZW50LmFwcGVuZChpKSx0aGlzLnNpemUoKT0zRD0zRDEmJihyLmFkZENsYXNzKCJhY3RpdmUi
KSxpLmFkZENsYT0Kc3MoImFjdGl2ZSIpLHRoaXMuZmlyc3RfdGFiPTNEbiksdGhpcy5vcHRpb25z
Lm1heCYmdGhpcy5zaXplKCk+PTNEdGhpcy5vcHRpPQpvbnMubWF4JiZ0aGlzLiRlbC5maW5kKCIj
bmV3LXRhYiIpLmhpZGUoKTtpZihlLm9uZGVsKXt2YXIgcz0zRHIuZmluZCgiI2RlbGU9CnRlIik7
cy50b29sdGlwKHt0aXRsZToiRGVsZXRlIHRoaXMgdGFiIixwbGFjZW1lbnQ6ImJvdHRvbSIsY29u
dGFpbmVyOnQuJGVsfT0KKSxzLm9uKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gcy50b29sdGlw
KCJkZXN0cm95IiksdC4kZWwuZmluZCgiLnRvb2x0aXAiPQopLnJlbW92ZSgpLGUub25kZWwoKSwh
MX0pfXIub24oImNsaWNrIixmdW5jdGlvbihyKXtyLnByZXZlbnREZWZhdWx0KCksZS5vbmM9Cmxp
Y2s/ZS5vbmNsaWNrKCk6dC5zaG93KG4pfSksdGhpcy5jdXJyZW50X2lkfHwodGhpcy5jdXJyZW50
X2lkPTNEbil9LGRlbDpmdT0KbmN0aW9uKGUpe3RoaXMuJGVsLmZpbmQoIiN0YWItIitlKS5yZW1v
dmUoKSx0aGlzLiRlbC5maW5kKCIjIitlKS5yZW1vdmUoKSx0PQpoaXMuZmlyc3RfdGFiPTNEPTNE
ZSYmKHRoaXMuZmlyc3RfdGFiPTNEbnVsbCksdGhpcy5maXJzdF90YWIhPTNEbnVsbCYmdGhpcy49
CnNob3codGhpcy5maXJzdF90YWIpLHRoaXMubGlzdFtlXSYmZGVsZXRlIHRoaXMubGlzdFtlXSx0
aGlzLnNpemUoKTx0aGlzLm9wdD0KaW9ucy5tYXgmJnRoaXMuJGVsLmZpbmQoIiNuZXctdGFiIiku
c2hvdygpfSxkZWxSZW1vdmFibGU6ZnVuY3Rpb24oKXtmb3IodmFyPQogZSBpbiB0aGlzLmxpc3Qp
dGhpcy5kZWwoZSl9LHNob3c6ZnVuY3Rpb24oZSl7dGhpcy4kZWwuZmFkZUluKCJmYXN0IiksdGhp
cy49CnZpc2libGU9M0QhMCxlJiYodGhpcy4kZWwuZmluZCgiI3RhYi0iK3RoaXMuY3VycmVudF9p
ZCkucmVtb3ZlQ2xhc3MoImFjdGl2ZT0KIiksdGhpcy4kZWwuZmluZCgiIyIrdGhpcy5jdXJyZW50
X2lkKS5yZW1vdmVDbGFzcygiYWN0aXZlIiksdGhpcy4kZWwuZmluZCgiPQojdGFiLSIrZSkuYWRk
Q2xhc3MoImFjdGl2ZSIpLHRoaXMuJGVsLmZpbmQoIiMiK2UpLmFkZENsYXNzKCJhY3RpdmUiKSx0
aGlzLmM9CnVycmVudF9pZD0zRGUpLHRoaXMub3B0aW9ucy5vbmNoYW5nZSYmdGhpcy5vcHRpb25z
Lm9uY2hhbmdlKGUpfSxoaWRlOmZ1bmN0aT0Kb24oKXt0aGlzLiRlbC5mYWRlT3V0KCJmYXN0Iiks
dGhpcy52aXNpYmxlPTNEITF9LGhpZGVPcGVyYXRpb246ZnVuY3Rpb24oZSl7PQp0aGlzLiRuYXYu
ZmluZCgiIyIrZSkuaGlkZSgpfSxzaG93T3BlcmF0aW9uOmZ1bmN0aW9uKGUpe3RoaXMuJG5hdi5m
aW5kKCIjIis9CmUpLnNob3coKX0sc2V0T3BlcmF0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0
aGlzLiRuYXYuZmluZCgiIyIrZSk7bi5vZmYoIj0KY2xpY2siKSxuLm9uKCJjbGljayIsdCl9LHRp
dGxlOmZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0aGlzLiRlbC5maW5kKCIjdGFiLXRpPQp0bGUtdGV4
dC0iK2UpO3JldHVybiB0JiZuLmh0bWwodCksbi5odG1sKCl9LHJldGl0bGU6ZnVuY3Rpb24oZSl7
dmFyIHQ9M0QwO2Y9Cm9yKHZhciBuIGluIHRoaXMubGlzdCl0aGlzLnRpdGxlKG4sKyt0KyI6ICIr
ZSl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cj0Kbic8ZGl2IGNsYXNzPTNEInVpLXRhYnMg
dGFiYmFibGUgdGFicy1sZWZ0Ij48dWwgaWQ9M0QidGFiLW5hdmlnYXRpb24iIGNsYXNzPQo9M0Qi
dGFiLW5hdmlnYXRpb24gbmF2IG5hdi10YWJzIj48ZGl2IGNsYXNzPTNEIm9wZXJhdGlvbnMiIHN0
eWxlPTNEImZsb2F0OiA9CnJpZ2h0OyBtYXJnaW4tYm90dG9tOiA0cHg7Ij48L2Rpdj48L3VsPjxk
aXYgaWQ9M0QidGFiLWNvbnRlbnQiIGNsYXNzPTNEInRhYj0KLWNvbnRlbnQiLz48L2Rpdj4nfSxf
dGVtcGxhdGVfdGFiX25ldzpmdW5jdGlvbihlKXtyZXR1cm4nPGxpIGlkPTNEIm5ldy10YWIiPQo+
PGEgaHJlZj0zRCJqYXZhc2NyaXB0OnZvaWQoMCk7Ij48aSBjbGFzcz0zRCJ1aS10YWJzLWFkZCBm
YSBmYS1wbHVzLWNpcmNsZSI9Ci8+JytlLnRpdGxlX25ldysiPC9hPiIrIjwvbGk+In0sX3RlbXBs
YXRlX3RhYjpmdW5jdGlvbihlKXt2YXIgdD0zRCc8bGkgaWQ9Cj0zRCJ0YWItJytlLmlkKyciIGNs
YXNzPTNEInRhYi1lbGVtZW50Ij4nKyc8YSBpZD0zRCJ0YWItdGl0bGUtbGluay0nK2UuaWQrJz0K
IiB0aXRsZT0zRCIiIGhyZWY9M0QiIycrZS5pZCsnIiBkYXRhLW9yaWdpbmFsLXRpdGxlPTNEIiI+
JysnPHNwYW4gaWQ9M0QidGFiPQotdGl0bGUtdGV4dC0nK2UuaWQrJyIgY2xhc3M9M0QidGFiLXRp
dGxlLXRleHQiPicrZS50aXRsZSsiPC9zcGFuPiI7cmV0dXJuIGU9Ci5vbmRlbCYmKHQrPTNEJzxp
IGlkPTNEImRlbGV0ZSIgY2xhc3M9M0QidWktdGFicy1kZWxldGUgZmEgZmEtbWludXMtY2lyY2xl
Ij0KLz4nKSx0Kz0zRCI8L2E+PC9saT4iLHR9LF90ZW1wbGF0ZV90YWJfY29udGVudDpmdW5jdGlv
bihlKXtyZXR1cm4nPGRpdiBpZD0KPTNEIicrZS5pZCsnIiBjbGFzcz0zRCJ0YWItcGFuZSIvPid9
fSk7cmV0dXJue1ZpZXc6dH19KSxkZWZpbmUoIm12Yy91aS91aS10PQphYmxlIixbInV0aWxzL3V0
aWxzIl0sZnVuY3Rpb24oZSl7dmFyIHQ9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7cm93Om51bGws
cm89CndfY291bnQ6MCxvcHRpb25zRGVmYXVsdDp7Y29udGVudDoiTm8gY29udGVudCBhdmFpbGFi
bGUuIixvbmNoYW5nZTpudWxsLG9uZD0KYmxjbGljazpudWxsLG9uY29uZmlybTpudWxsLGNsczoi
dWktdGFibGUiLGNsc190cjoiIn0sZXZlbnRzOntjbGljazoiX29uY2xpPQpjayIsZGJsY2xpY2s6
Il9vbmRibGNsaWNrIn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1l
cmdlKHQ9Cix0aGlzLm9wdGlvbnNEZWZhdWx0KTt2YXIgbj0zRCQodGhpcy5fdGVtcGxhdGUodGhp
cy5vcHRpb25zKSk7dGhpcy4kdGhlYWQ9Cj0zRG4uZmluZCgidGhlYWQiKSx0aGlzLiR0Ym9keT0z
RG4uZmluZCgidGJvZHkiKSx0aGlzLiR0bWVzc2FnZT0zRG4uZmluZCgidD0KbWVzc2FnZSIpLHRo
aXMuc2V0RWxlbWVudChuKSx0aGlzLnJvdz0zRHRoaXMuX3JvdygpfSxhZGRIZWFkZXI6ZnVuY3Rp
b24oZSl7PQp2YXIgdD0zRCQoIjx0aD48L3RoPiIpO3QuYXBwZW5kKGUpLHRoaXMucm93LmFwcGVu
ZCh0KX0sYXBwZW5kSGVhZGVyOmZ1bmN0aW89Cm4oKXt0aGlzLiR0aGVhZC5hcHBlbmQodGhpcy5y
b3cpLHRoaXMucm93PTNEJCgiPHRyPjwvdHI+Iil9LGFkZDpmdW5jdGlvbihlLD0KdCxuKXt2YXIg
cj0zRCQoIjx0ZD48L3RkPiIpO3QmJnIuY3NzKCJ3aWR0aCIsdCksbiYmci5jc3MoInRleHQtYWxp
Z24iLG4pLHIuPQphcHBlbmQoZSksdGhpcy5yb3cuYXBwZW5kKHIpfSxhcHBlbmQ6ZnVuY3Rpb24o
ZSx0KXt0aGlzLl9jb21taXQoZSx0LCExKX0scHI9CmVwZW5kOmZ1bmN0aW9uKGUsdCl7dGhpcy5f
Y29tbWl0KGUsdCwhMCl9LGdldDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy4kZWwuZj0KaW5kKCIj
IitlKX0sZGVsOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy4kdGJvZHkuZmluZCgiIyIrZSk7dC5s
ZW5ndGg+MCYmKHQuPQpyZW1vdmUoKSx0aGlzLnJvd19jb3VudC0tLHRoaXMuX3JlZnJlc2goKSl9
LGRlbEFsbDpmdW5jdGlvbigpe3RoaXMuJHRib2R5LmU9Cm1wdHkoKSx0aGlzLnJvd19jb3VudD0z
RDAsdGhpcy5fcmVmcmVzaCgpfSx2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLmJlZm9yZT0zRD0KdGhp
cy4kdGJvZHkuZmluZCgiLmN1cnJlbnQiKS5hdHRyKCJpZCIpLGUhPTNEPTNEdW5kZWZpbmVkJiYo
dGhpcy4kdGJvZHkuZmluPQpkKCJ0ciIpLnJlbW92ZUNsYXNzKCJjdXJyZW50IiksZSYmdGhpcy4k
dGJvZHkuZmluZCgiIyIrZSkuYWRkQ2xhc3MoImN1cnJlbnQ9CiIpKTt2YXIgdD0zRHRoaXMuJHRi
b2R5LmZpbmQoIi5jdXJyZW50IikuYXR0cigiaWQiKTtyZXR1cm4gdD0zRD0zRD0zRHVuZGVmaT0K
bmVkP251bGw6KHQhPTNEdGhpcy5iZWZvcmUmJnRoaXMub3B0aW9ucy5vbmNoYW5nZSYmdGhpcy5v
cHRpb25zLm9uY2hhbmdlKGUpPQosdCl9LHNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kdGJv
ZHkuZmluZCgidHIiKS5sZW5ndGh9LF9jb21taXQ6ZnVuY3Rpb249CihlLHQsbil7dGhpcy5kZWwo
ZSksdGhpcy5yb3cuYXR0cigiaWQiLGUpLG4/dGhpcy4kdGJvZHkucHJlcGVuZCh0aGlzLnJvdyk6
dD0KaGlzLiR0Ym9keS5hcHBlbmQodGhpcy5yb3cpLHQmJih0aGlzLnJvdy5oaWRlKCksdGhpcy5y
b3cuZmFkZUluKCkpLHRoaXMucm93PQo9M0R0aGlzLl9yb3coKSx0aGlzLnJvd19jb3VudCsrLHRo
aXMuX3JlZnJlc2goKX0sX3JvdzpmdW5jdGlvbigpe3JldHVybiAkKCc9Cjx0ciBjbGFzcz0zRCIn
K3RoaXMub3B0aW9ucy5jbHNfdHIrJyI+PC90cj4nKX0sX29uY2xpY2s6ZnVuY3Rpb24oZSl7dmFy
IHQ9Cj0zRHRoaXMudmFsdWUoKSxuPTNEJChlLnRhcmdldCkuY2xvc2VzdCgidHIiKS5hdHRyKCJp
ZCIpO24hPTNEIiImJm4mJnQhPTNEbj0KJiYodGhpcy5vcHRpb25zLm9uY29uZmlybT90aGlzLm9w
dGlvbnMub25jb25maXJtKG4pOnRoaXMudmFsdWUobikpfSxfb25kYmxjPQpsaWNrOmZ1bmN0aW9u
KGUpe3ZhciB0PTNEdGhpcy52YWx1ZSgpO3QmJnRoaXMub3B0aW9ucy5vbmRibGNsaWNrJiZ0aGlz
Lm9wdGk9Cm9ucy5vbmRibGNsaWNrKHQpfSxfcmVmcmVzaDpmdW5jdGlvbigpe3RoaXMucm93X2Nv
dW50PTNEPTNEMD90aGlzLiR0bWVzc2FnZT0KLnNob3coKTp0aGlzLiR0bWVzc2FnZS5oaWRlKCl9
LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdj48dGFibGUgY2xhPQpzcz0zRCInK2Uu
Y2xzKyciPicrIjx0aGVhZD48L3RoZWFkPiIrIjx0Ym9keT48L3Rib2R5PiIrIjwvdGFibGU+Iisi
PHRtZXNzYWc9CmU+IitlLmNvbnRlbnQrIjwvdG1lc3NhZ2U+IisiPGRpdj4ifX0pO3JldHVybntW
aWV3OnR9fSksZGVmaW5lKCJwbHVnaW4vdmlldz0Kcy9ncm91cCIsWyJtdmMvdWkvdWktdGFibGUi
LCJtdmMvdWkvdWktbWlzYyIsInV0aWxzL3V0aWxzIl0sZnVuY3Rpb24oZSx0LG4pPQp7cmV0dXJu
IEJhY2tib25lLlZpZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHIsaSl7dGhpcy5hcHA9
M0RyO3ZhciBzPQo9M0R0aGlzO3RoaXMuY2hhcnQ9M0R0aGlzLmFwcC5jaGFydCx0aGlzLmdyb3Vw
PTNEaS5ncm91cCx0aGlzLmdyb3VwX2tleT0zRG49CmV3IHQuSW5wdXQoe3BsYWNlaG9sZGVyOiJE
YXRhIGxhYmVsIixvbmNoYW5nZTpmdW5jdGlvbihlKXtzLmdyb3VwLnNldCgia2V5Ij0KLGUpfX0p
LHRoaXMudGFibGU9M0RuZXcgZS5WaWV3KHtjb250ZW50OiJObyBkYXRhIGNvbHVtbi4ifSk7dmFy
IG89M0QkKCI8ZGl2PQovPiIpO28uYXBwZW5kKG4ud3JhcCgobmV3IHQuTGFiZWwoe3RpdGxlOiJQ
cm92aWRlIGEgbGFiZWw6In0pKS4kZWwpKSxvLmFwcGU9Cm5kKG4ud3JhcCh0aGlzLmdyb3VwX2tl
eS4kZWwpKSxvLmFwcGVuZChuLndyYXAoKG5ldyB0LkxhYmVsKHt0aXRsZToiU2VsZWN0ID0KY29s
dW1uczoifSkpLiRlbCkpLG8uYXBwZW5kKG4ud3JhcCh0aGlzLnRhYmxlLiRlbCkpLHRoaXMuc2V0
RWxlbWVudChvKTt2YXIgPQpzPTNEdGhpczt0aGlzLmNoYXJ0Lm9uKCJjaGFuZ2U6ZGF0YXNldF9p
ZCIsZnVuY3Rpb24oKXtzLl9yZWZyZXNoVGFibGUoKX0pLHQ9Cmhpcy5jaGFydC5vbigiY2hhbmdl
OnR5cGUiLGZ1bmN0aW9uKCl7cy5fcmVmcmVzaFRhYmxlKCl9KSx0aGlzLmdyb3VwLm9uKCJjaD0K
YW5nZTprZXkiLGZ1bmN0aW9uKCl7cy5fcmVmcmVzaEdyb3VwS2V5KCl9KSx0aGlzLmdyb3VwLm9u
KCJjaGFuZ2UiLGZ1bmN0aW9uPQooKXtzLl9yZWZyZXNoR3JvdXAoKX0pLHRoaXMuX3JlZnJlc2hU
YWJsZSgpLHRoaXMuX3JlZnJlc2hHcm91cEtleSgpLHRoaXMuX3I9CmVmcmVzaEdyb3VwKCl9LF9y
ZWZyZXNoVGFibGU6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMuY2hhcnQuZ2V0KCJkYXRhc2V0X2lk
Ij0KKSxuPTNEdGhpcy5jaGFydC5nZXQoInR5cGUiKTtpZighZXx8IW4pcmV0dXJuO3ZhciByPTNE
dGhpcyxpPTNEdGhpcy5jaGFydC5kPQplZmluaXRpb247dGhpcy50YWJsZS5kZWxBbGwoKTt2YXIg
cz0zRHt9O2Zvcih2YXIgbyBpbiBpLmNvbHVtbnMpe3ZhciB1PTNEaS49CmNvbHVtbnNbb107aWYo
IXUpe2NvbnNvbGUuZGVidWcoIkdyb3VwOjpfcmVmcmVzaFRhYmxlKCkgLSBTa2lwcGluZyBjb2x1
bW4gZD0KZWZpbml0aW9uLiIpO2NvbnRpbnVlfXZhciBhPTNEbmV3IHQuU2VsZWN0LlZpZXcoe2lk
OiJzZWxlY3RfIitvLHdhaXQ6ITB9KSxmPQo9M0R1LnRpdGxlO3UuaXNfdW5pcXVlJiYoZis9M0Qi
Jm5ic3A7KGFsbCBkYXRhIGxhYmVscykiKSx0aGlzLnRhYmxlLmFkZChmLCI9CjI1JSIpLHRoaXMu
dGFibGUuYWRkKGEuJGVsKSx0aGlzLnRhYmxlLmFwcGVuZChvKSxzW29dPTNEYX10aGlzLmNoYXJ0
LnN0YXRlKD0KIndhaXQiLCJMb2FkaW5nIG1ldGFkYXRhLi4uIik7dmFyIGw9M0R0aGlzLmFwcC5k
ZWZlcnJlZC5yZWdpc3RlcigpLGM9M0R7aWQ6PQplLHN1Y2Nlc3M6ZnVuY3Rpb24oZSl7Zm9yKHZh
ciB0IGluIHMpci5fYWRkUm93KHQsZSxzLGkuY29sdW1uc1t0XSk7ci5jaGFydC49CnN0YXRlKCJv
ayIsIk1ldGFkYXRhIGluaXRpYWxpemVkLi4uIiksci5hcHAuZGVmZXJyZWQuZG9uZShsKX19O3Ro
aXMuYXBwLmRhdD0KYXNldHMucmVxdWVzdChjKX0sX2FkZFJvdzpmdW5jdGlvbihlLHQsbixyKXt2
YXIgaT0zRHRoaXMscz0zRHIuaXNfbGFiZWwsbz0KPTNEci5pc19hdXRvLHU9M0RyLmlzX251bWVy
aWMsYT0zRHIuaXNfdW5pcXVlLGY9M0RyLmlzX3plcm8sbD0zRFtdLGM9M0RuW2VdPQo7byYmbC5w
dXNoKHtsYWJlbDoiQ29sdW1uOiBSb3cgTnVtYmVyIix2YWx1ZToiYXV0byJ9KSxmJiZsLnB1c2go
e2xhYmVsOiJDb2w9CnVtbjogTm9uZSIsdmFsdWU6Inplcm8ifSk7dmFyIGg9M0R0Lm1ldGFkYXRh
X2NvbHVtbl90eXBlcztmb3IodmFyIHAgaW4gaCl7dj0KYXIgZD0zRCExO2hbcF09M0Q9M0QiaW50
Inx8aFtwXT0zRD0zRCJmbG9hdCI/ZD0zRHU6ZD0zRHMsZCYmbC5wdXNoKHtsYWJlbDoiPQpDb2x1
bW46ICIrKHBhcnNlSW50KHApKzEpKyIgWyIraFtwXSsiXSIsdmFsdWU6cH0pfWMudXBkYXRlKGwp
LGEmJnRoaXMuY2hhcnQ9Ci5ncm91cHMuZmlyc3QoKSYmdGhpcy5ncm91cC5zZXQoZSx0aGlzLmNo
YXJ0Lmdyb3Vwcy5maXJzdCgpLmdldChlKSk7aWYoIWMuZT0KeGlzdHModGhpcy5ncm91cC5nZXQo
ZSkpKXt2YXIgdj0zRGMuZmlyc3QoKTtjb25zb2xlLmRlYnVnKCdHcm91cCgpOjpfYWRkUm93PQoo
KSAtIFN3aXRjaGluZyBtb2RlbCB2YWx1ZSBmcm9tICInK3RoaXMuZ3JvdXAuZ2V0KGUpKyciIHRv
ICInK3YrJyIuJyksdGhpcy49Cmdyb3VwLnNldChlLHYpfWMudmFsdWUodGhpcy5ncm91cC5nZXQo
ZSkpLHRoaXMuZ3JvdXAub2ZmKCJjaGFuZ2U6IitlKSx0aGlzLj0KZ3JvdXAub24oImNoYW5nZToi
K2UsZnVuY3Rpb24oKXtjLnZhbHVlKGkuZ3JvdXAuZ2V0KGUpKX0pLGMuc2V0T25DaGFuZ2UoZnVu
PQpjdGlvbih0KXthP2kuY2hhcnQuZ3JvdXBzLmVhY2goZnVuY3Rpb24obil7bi5zZXQoZSx0KX0p
OmkuZ3JvdXAuc2V0KGUsdCksaS49CmNoYXJ0LnNldCgibW9kaWZpZWQiLCEwKX0pLGMuc2hvdygp
fSxfcmVmcmVzaEdyb3VwOmZ1bmN0aW9uKCl7dGhpcy5ncm91cC5zZT0KdCgiZGF0ZSIsbi50aW1l
KCkpfSxfcmVmcmVzaEdyb3VwS2V5OmZ1bmN0aW9uKCl7dmFyIGU9M0R0aGlzLmdyb3VwLmdldCgi
a2V5PQoiKTtlPTNEPTNEPTNEdW5kZWZpbmVkJiYoZT0zRCIiKSx0aGlzLmdyb3VwX2tleS52YWx1
ZShlKX19KX0pLGRlZmluZSgicGx1Z2k9Cm4vbGlicmFyeS91aS10YWJsZS1mb3JtIixbIm12Yy91
aS91aS10YWJsZSIsIm12Yy91aS91aS1taXNjIiwidXRpbHMvdXRpbHMiXT0KLGZ1bmN0aW9uKGUs
dCxuKXt2YXIgcj0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7dGl0bGU6
IiIsY29uPQp0ZW50OiIiLG1vZGU6IiJ9LGxpc3Q6W10saW5pdGlhbGl6ZTpmdW5jdGlvbihyLGkp
e3RoaXMuYXBwPTNEcix0aGlzLm9wdGlvbnM9Cj0zRG4ubWVyZ2UoaSx0aGlzLm9wdGlvbnNEZWZh
dWx0KSx0aGlzLnRhYmxlX3RpdGxlPTNEbmV3IHQuTGFiZWwoe3RpdGxlOnRoaT0Kcy5vcHRpb25z
LnRpdGxlfSksdGhpcy50YWJsZT0zRG5ldyBlLlZpZXcoe2NvbnRlbnQ6dGhpcy5vcHRpb25zLmNv
bnRlbnR9KTt2PQphciBzPTNEJCgnPGRpdiBjbGFzcz0zRCJ1aS10YWJsZS1mb3JtIi8+Jyk7dGhp
cy5vcHRpb25zLnRpdGxlJiZzLmFwcGVuZChuLnc9CnJhcCh0aGlzLnRhYmxlX3RpdGxlLiRlbCkp
LHMuYXBwZW5kKG4ud3JhcCh0aGlzLnRhYmxlLiRlbCkpLHRoaXMuc2V0RWxlbWVudD0KKHMpfSx0
aXRsZTpmdW5jdGlvbihlKXt0aGlzLnRhYmxlX3RpdGxlLnRpdGxlKGUpfSx1cGRhdGU6ZnVuY3Rp
b24oZSx0KXt0aGlzPQoudGFibGUuZGVsQWxsKCksdGhpcy5saXN0PTNEW107Zm9yKHZhciBuIGlu
IGUpdGhpcy5fYWRkKGVbbl0uaWR8fG4sZVtuXSx0KTs9CmZvcih2YXIgbiBpbiB0aGlzLmxpc3Qp
dGhpcy5saXN0W25dLnRyaWdnZXIoImNoYW5nZSIpfSxfYWRkOmZ1bmN0aW9uKGUsbixyKT0Ke3Zh
ciBpPTNEdGhpcyxzPTNEbnVsbCxvPTNEbi50eXBlO3N3aXRjaChvKXtjYXNlInRleHQiOnM9M0Ru
ZXcgdC5JbnB1dCh7aWQ6PQoiZmllbGQtIitlLHBsYWNlaG9sZGVyOm4ucGxhY2Vob2xkZXIsdmFs
dWU6ci5nZXQoZSksb25jaGFuZ2U6ZnVuY3Rpb24odCl7ci49CnNldChlLHQpfX0pO2JyZWFrO2Nh
c2UicmFkaW9idXR0b24iOnM9M0RuZXcgdC5SYWRpb0J1dHRvbi5WaWV3KHtpZDoiZmllbGQtIj0K
K2UsZGF0YTpuLmRhdGEsdmFsdWU6ci5nZXQoZSksb25jaGFuZ2U6ZnVuY3Rpb24odCl7ci5zZXQo
ZSx0KTt2YXIgcz0zRF8uZmluPQpkV2hlcmUobi5kYXRhLHt2YWx1ZTp0fSk7aWYocyYmcy5vcGVy
YXRpb25zKXt2YXIgbz0zRHMub3BlcmF0aW9ucztmb3IodmFyIHU9CiBpbiBvLnNob3cpe3ZhciBh
PTNEby5zaG93W3VdO2kudGFibGUuZ2V0KGEpLnNob3coKX1mb3IodmFyIHUgaW4gby5oaWRlKXt2
YT0KciBhPTNEby5oaWRlW3VdO2kudGFibGUuZ2V0KGEpLmhpZGUoKX19fX0pO2JyZWFrO2Nhc2Ui
c2VsZWN0IjpzPTNEbmV3IHQuU2VsPQplY3QuVmlldyh7aWQ6ImZpZWxkLSIrZSxkYXRhOm4uZGF0
YSx2YWx1ZTpyLmdldChlKSxvbmNoYW5nZTpmdW5jdGlvbih0KXtyLnM9CmV0KGUsdCk7dmFyIHM9
M0RfLmZpbmRXaGVyZShuLmRhdGEse3ZhbHVlOnR9KTtpZihzJiZzLm9wZXJhdGlvbnMpe3ZhciBv
PTNEcz0KLm9wZXJhdGlvbnM7Zm9yKHZhciB1IGluIG8uc2hvdyl7dmFyIGE9M0RvLnNob3dbdV07
aS50YWJsZS5nZXQoYSkuc2hvdygpfWZvPQpyKHZhciB1IGluIG8uaGlkZSl7dmFyIGE9M0RvLmhp
ZGVbdV07aS50YWJsZS5nZXQoYSkuaGlkZSgpfX19fSk7YnJlYWs7Y2FzZSI9CmRhdGFzZXQiOnM9
M0RuZXcgdC5TZWxlY3QuVmlldyh7aWQ6ImZpZWxkLSIrZSxvbmNoYW5nZTpmdW5jdGlvbih0KXty
LnNldChlLD0KdCl9fSksaS5hcHAuZGF0YXNldHMub24oImFsbCIsZnVuY3Rpb24oKXt2YXIgdD0z
RFtdO2kuYXBwLmRhdGFzZXRzLmVhY2goZnVuPQpjdGlvbihlKXtlLmdldCgiZGF0YXR5cGVfaWQi
KT0zRD0zRG4uZGF0YSYmdC5wdXNoKHt2YWx1ZTplLmdldCgiaWQiKSxsYWJlbDo9CmUuZ2V0KCJu
YW1lIil9KX0pLHMudXBkYXRlKHQpLHIuZ2V0KGUpfHxyLnNldChlLHMuZmlyc3QoKSkscy52YWx1
ZShyLmdldChlKT0KKX0pLGkuYXBwLmRhdGFzZXRzLnRyaWdnZXIoImFsbC5kYXRhc2V0cyIpO2Jy
ZWFrO2Nhc2UidGV4dGFyZWEiOnM9M0RuZXcgdC5UPQpleHRhcmVhKHtpZDoiZmllbGQtIitlLG9u
Y2hhbmdlOmZ1bmN0aW9uKCl7ci5zZXQoZSxzLnZhbHVlKCkpfX0pO2JyZWFrO2Nhc2U9CiJzZXBh
cmF0b3IiOnM9M0QkKCI8ZGl2Lz4iKTticmVhaztkZWZhdWx0OnM9M0RuZXcgdC5JbnB1dCh7aWQ6
ImZpZWxkLSIrZSxwbD0KYWNlaG9sZGVyOm4ucGxhY2Vob2xkZXIsdHlwZTpuLnR5cGUsb25jaGFu
Z2U6ZnVuY3Rpb24oKXtyLnNldChlLHMudmFsdWUoKSl9PQp9KX1pZihvIT0zRCJzZXBhcmF0b3Ii
KXtyLmdldChlKXx8ci5zZXQoZSxuLmluaXQpLHMudmFsdWUoci5nZXQoZSkpLHRoaXMubGk9CnN0
W2VdPTNEczt2YXIgdT0zRCQoIjxkaXYvPiIpO3UuYXBwZW5kKHMuJGVsKSxuLmluZm8mJnUuYXBw
ZW5kKCc8ZGl2IGNsYXNzPQo9M0QidWktdGFibGUtZm9ybS1pbmZvIj4nK24uaW5mbysiPC9kaXY+
IiksdGhpcy5vcHRpb25zLnN0eWxlPTNEPTNEImJvbGQiPyg9CnRoaXMudGFibGUuYWRkKChuZXcg
dC5MYWJlbCh7dGl0bGU6bi50aXRsZSxjbHM6ImZvcm0tbGFiZWwifSkpLiRlbCksdGhpcy50YT0K
YmxlLmFkZCh1KSk6KHRoaXMudGFibGUuYWRkKCc8c3BhbiBjbGFzcz0zRCJ1aS10YWJsZS1mb3Jt
LXRpdGxlIj4nK24udGl0bGUrPQoiPC9zcGFuPiIsIjI1JSIpLHRoaXMudGFibGUuYWRkKHUpKX1l
bHNlIHRoaXMudGFibGUuYWRkKCc8ZGl2IGNsYXNzPTNEInVpLXQ9CmFibGUtZm9ybS1zZXBhcmF0
b3IiPicrbi50aXRsZSsiOjxkaXYvPiIpLHRoaXMudGFibGUuYWRkKCQoIjxkaXYvPiIpKTt0aGlz
Lj0KdGFibGUuYXBwZW5kKGUpLG4uaGlkZSYmdGhpcy50YWJsZS5nZXQoZSkuaGlkZSgpfX0pO3Jl
dHVybntWaWV3OnJ9fSksZGVmaW5lPQooInBsdWdpbi92aWV3cy9zZXR0aW5ncyIsWyJtdmMvdWkv
dWktbWlzYyIsInBsdWdpbi9saWJyYXJ5L3VpLXRhYmxlLWZvcm0iLCI9CnV0aWxzL3V0aWxzIl0s
ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7aW5pdGlhbGl6ZTpm
dW5jdD0KaW9uKGUsbil7dGhpcy5hcHA9M0RlO3ZhciByPTNEdGhpczt0aGlzLmNoYXJ0PTNEdGhp
cy5hcHAuY2hhcnQsdGhpcy5mb3JtPTNEPQpuZXcgdC5WaWV3KGUse3RpdGxlOiJDb25maWd1cmF0
aW9uIixjb250ZW50OiJUaGlzIGNoYXJ0IHR5cGUgZG9lcyBub3QgcHJvdmk9CmRlIGFueSBvcHRp
b25zLiJ9KSx0aGlzLnNldEVsZW1lbnQodGhpcy5mb3JtLiRlbCk7dmFyIHI9M0R0aGlzO3RoaXMu
Y2hhcnQubz0KbigiY2hhbmdlIixmdW5jdGlvbigpe3IuX3JlZnJlc2goKX0pfSxfcmVmcmVzaDpm
dW5jdGlvbigpe3ZhciBlPTNEdGhpcy5jaGFyPQp0LmRlZmluaXRpb247aWYoIWUpcmV0dXJuO3Ro
aXMuZm9ybS50aXRsZShlLmNhdGVnb3J5KyIgLSAiK2UudGl0bGUrIjoiKSx0aGk9CnMuZm9ybS51
cGRhdGUoZS5zZXR0aW5ncyx0aGlzLmNoYXJ0LnNldHRpbmdzKX19KX0pLGRlZmluZSgicGx1Z2lu
L3ZpZXdzL3R5cD0KZXMiLFsidXRpbHMvdXRpbHMiLCJtdmMvdWkvdWktbWlzYyJdLGZ1bmN0aW9u
KGUsdCl7cmV0dXJuIEJhY2tib25lLlZpZXcuZXh0PQplbmQoe29wdGlvbnNEZWZhdWx0OntvbmNo
YW5nZTpudWxsLG9uZGJsY2xpY2s6bnVsbH0sZXZlbnRzOntjbGljazoiX29uY2xpY2s9CiIsZGJs
Y2xpY2s6Il9vbmRibGNsaWNrIn0saW5pdGlhbGl6ZTpmdW5jdGlvbihuLHIpe3ZhciBpPTNEdGhp
czt0aGlzLmFwcD0zRD0Kbix0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHIsdGhpcy5vcHRpb25zRGVm
YXVsdCk7dmFyIHM9M0QkKCc8ZGl2IGNsYXNzPTNEImNoPQphcnRzLWdyaWQiLz4nKTtzLmFwcGVu
ZChlLndyYXAoKG5ldyB0LkxhYmVsKHt0aXRsZToiSG93IG1hbnkgZGF0YSBwb2ludHMgd289CnVs
ZCB5b3UgbGlrZSB0byBhbmFseXplPyJ9KSkuJGVsKSksdGhpcy5saWJyYXJ5PTNEbmV3IHQuUmFk
aW9CdXR0b24uVmlldyh7ZD0KYXRhOlt7bGFiZWw6IkZldyAoPDUwMCkiLHZhbHVlOiJzbWFsbCJ9
LHtsYWJlbDoiU29tZSAoPDEwaykiLHZhbHVlOiJtZWRpdW0iPQp9LHtsYWJlbDoiTWFueSAoPjEw
aykiLHZhbHVlOiJsYXJnZSJ9XSxvbmNoYW5nZTpmdW5jdGlvbihlKXtpLl9maWx0ZXIoZSl9fSk9
CixzLmFwcGVuZChlLndyYXAodGhpcy5saWJyYXJ5LiRlbCkpLHRoaXMuc2V0RWxlbWVudChzKSx0
aGlzLl9yZW5kZXIoKSx0aGlzLj0KbGlicmFyeS52YWx1ZSgic21hbGwiKSx0aGlzLmxpYnJhcnku
dHJpZ2dlcigiY2hhbmdlIil9LHZhbHVlOmZ1bmN0aW9uKGUpe3ZhPQpyIHQ9M0R0aGlzLiRlbC5m
aW5kKCIuY3VycmVudCIpLmF0dHIoImlkIik7ZSE9M0Q9M0R1bmRlZmluZWQmJih0aGlzLiRlbC5m
aW49CmQoIi5jdXJyZW50IikucmVtb3ZlQ2xhc3MoImN1cnJlbnQiKSx0aGlzLiRlbC5maW5kKCIj
IitlKS5hZGRDbGFzcygiY3VycmVudD0KIikpO3ZhciBuPTNEdGhpcy4kZWwuZmluZCgiLmN1cnJl
bnQiKS5hdHRyKCJpZCIpO3JldHVybiBuPTNEPTNEPTNEdW5kZWZpbmVkPQo/bnVsbDoobiE9M0R0
JiZ0aGlzLm9wdGlvbnMub25jaGFuZ2UmJnRoaXMub3B0aW9ucy5vbmNoYW5nZShlKSxuKX0sX2Zp
bHRlcjo9CmZ1bmN0aW9uKGUpe3RoaXMuJGVsLmZpbmQoIi5oZWFkZXIiKS5oaWRlKCk7dmFyIHQ9
M0R0aGlzLmFwcC50eXBlcy5hdHRyaWJ1dD0KZXM7Zm9yKHZhciBuIGluIHQpe3ZhciByPTNEdFtu
XSxpPTNEdGhpcy4kZWwuZmluZCgiIyIrbikscz0zRHRoaXMuJGVsLmZpbmQoPQoiI3R5cGVzLWhl
YWRlci0iK3RoaXMuY2F0ZWdvcmllc19pbmRleFtyLmNhdGVnb3J5XSksbz0zRHIua2V5d29yZHN8
fCIiO28uaW49CmRleE9mKGUpPj0zRDA/KGkuc2hvdygpLHMuc2hvdygpKTppLmhpZGUoKX19LF9y
ZW5kZXI6ZnVuY3Rpb24oKXt0aGlzLmNhdGVnbz0Kcmllcz0zRHt9LHRoaXMuY2F0ZWdvcmllc19p
bmRleD0zRHt9O3ZhciBlPTNEMCx0PTNEdGhpcy5hcHAudHlwZXMuYXR0cmlidXRlPQpzO2Zvcih2
YXIgbiBpbiB0KXt2YXIgcj0zRHRbbl0saT0zRHIuY2F0ZWdvcnk7dGhpcy5jYXRlZ29yaWVzW2ld
fHwodGhpcy5jYXQ9CmVnb3JpZXNbaV09M0R7fSx0aGlzLmNhdGVnb3JpZXNfaW5kZXhbaV09M0Rl
KyspLHRoaXMuY2F0ZWdvcmllc1tpXVtuXT0zRHJ9Zj0Kb3IodmFyIGkgaW4gdGhpcy5jYXRlZ29y
aWVzKXt2YXIgcz0zRCQoJzxkaXYgc3R5bGU9M0QiY2xlYXI6IGJvdGg7Ii8+Jyk7cy5hPQpwcGVu
ZCh0aGlzLl90ZW1wbGF0ZV9oZWFkZXIoe2lkOiJ0eXBlcy1oZWFkZXItIit0aGlzLmNhdGVnb3Jp
ZXNfaW5kZXhbaV0sdGk9CnRsZTppfSkpO2Zvcih2YXIgbiBpbiB0aGlzLmNhdGVnb3JpZXNbaV0p
e3ZhciByPTNEdGhpcy5jYXRlZ29yaWVzW2ldW25dLG89Cj0zRHIudGl0bGUrIiAoIityLmxpYnJh
cnkrIikiO3Iuem9vbWFibGUmJihvPTNEJzxzcGFuIGNsYXNzPTNEImZhIGZhLXNlYXJjaD0KLXBs
dXMiLz4nK28pLHMuYXBwZW5kKHRoaXMuX3RlbXBsYXRlX2l0ZW0oe2lkOm4sdGl0bGU6byx1cmw6
Y29uZmlnLmFwcF9yb290PQorImNoYXJ0cy8iK3RoaXMuYXBwLmNoYXJ0UGF0aChuKSsiL2xvZ28u
cG5nIn0pKX10aGlzLiRlbC5hcHBlbmQocyl9fSxfb25jbGk9CmNrOmZ1bmN0aW9uKGUpe3ZhciB0
PTNEdGhpcy52YWx1ZSgpLG49M0QkKGUudGFyZ2V0KS5jbG9zZXN0KCIuaXRlbSIpLmF0dHIoIj0K
aWQiKTtuIT0zRCIiJiZuJiZ0IT0zRG4mJnRoaXMudmFsdWUobil9LF9vbmRibGNsaWNrOmZ1bmN0
aW9uKGUpe3ZhciB0PTNEdGhpPQpzLnZhbHVlKCk7dCYmdGhpcy5vcHRpb25zLm9uZGJsY2xpY2sm
JnRoaXMub3B0aW9ucy5vbmRibGNsaWNrKHQpfSxfdGVtcGxhdGU9Cl9oZWFkZXI6ZnVuY3Rpb24o
ZSl7cmV0dXJuJzxkaXYgaWQ9M0QiJytlLmlkKyciIGNsYXNzPTNEImhlYWRlciI+JysiJmJ1bGw7
ID0KIitlLnRpdGxlKyI8ZGl2PiJ9LF90ZW1wbGF0ZV9pdGVtOmZ1bmN0aW9uKGUpe3JldHVybic8
ZGl2IGlkPTNEIicrZS5pZCsnIiBjPQpsYXNzPTNEIml0ZW0iPicrJzxpbWcgY2xhc3M9M0QiaW1h
Z2UiIHNyYz0zRCInK2UudXJsKyciPicrJzxkaXYgY2xhc3M9M0QidGk9CnRsZSI+JytlLnRpdGxl
KyI8L2Rpdj4iKyI8ZGl2PiJ9fSl9KSxkZWZpbmUoInBsdWdpbi92aWV3cy9lZGl0b3IiLFsibXZj
L3VpLz0KdWktdGFicyIsIm12Yy91aS91aS1taXNjIiwibXZjL3VpL3VpLXBvcnRsZXQiLCJ1dGls
cy91dGlscyIsInBsdWdpbi9tb2RlbHMvPQpjaGFydCIsInBsdWdpbi9tb2RlbHMvZ3JvdXAiLCJw
bHVnaW4vdmlld3MvZ3JvdXAiLCJwbHVnaW4vdmlld3Mvc2V0dGluZ3MiLCI9CnBsdWdpbi92aWV3
cy90eXBlcyJdLGZ1bmN0aW9uKGUsdCxuLHIsaSxzLG8sdSxhKXtyZXR1cm4gQmFja2JvbmUuVmll
dy5leHRlbj0KZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbihpLHMpe3ZhciBvPTNEdGhpczt0aGlzLmFw
cD0zRGksdGhpcy5jaGFydD0zRHRoaXMuYXBwPQouY2hhcnQsdGhpcy5tZXNzYWdlPTNEbmV3IHQu
TWVzc2FnZSx0aGlzLnBvcnRsZXQ9M0RuZXcgbi5WaWV3KHtpY29uOiJmYS1iYXI9Ci1jaGFydC1v
Iix0aXRsZToiRWRpdG9yIixvcGVyYXRpb25zOntzYXZlOm5ldyB0LkJ1dHRvbkljb24oe2ljb246
ImZhLXNhdmUiLD0KdG9vbHRpcDoiRHJhdyBDaGFydCIsdGl0bGU6IkRyYXciLG9uY2xpY2s6ZnVu
Y3Rpb24oKXtvLl9zYXZlQ2hhcnQoKX19KSxiYWNrPQo6bmV3IHQuQnV0dG9uSWNvbih7aWNvbjoi
ZmEtY2FyZXQtbGVmdCIsdG9vbHRpcDoiUmV0dXJuIHRvIFZpZXdlciIsdGl0bGU6IkM9CmFuY2Vs
IixvbmNsaWNrOmZ1bmN0aW9uKCl7by5hcHAuZ28oInZpZXdlciIpLG8uYXBwLnN0b3JhZ2UubG9h
ZCgpfX0pfX0pLHRoaT0Kcy50eXBlcz0zRG5ldyBhKGkse29uY2hhbmdlOmZ1bmN0aW9uKGUpe3Zh
ciB0PTNEby5hcHAudHlwZXMuZ2V0KGUpO3R8fGNvbnNvPQpsZS5kZWJ1ZygiRkFJTEVEIC0gRWRp
dG9yOjpvbmNoYW5nZSgpIC0gQ2hhcnQgdHlwZSBub3Qgc3VwcG9ydGVkLiIpLG8uY2hhcnQ9Ci5k
ZWZpbml0aW9uPTNEdCxvLmNoYXJ0LnNldHRpbmdzLmNsZWFyKCksby5jaGFydC5zZXQoe3R5cGU6
ZX0pLG8uY2hhcnQuc2V0KD0KIm1vZGlmaWVkIiwhMCksY29uc29sZS5kZWJ1ZygiRWRpdG9yOjpv
bmNoYW5nZSgpIC0gU3dpdGNoZWQgY2hhcnQgdHlwZS4iKX0sPQpvbmRibGNsaWNrOmZ1bmN0aW9u
KGUpe28uX3NhdmVDaGFydCgpfX0pLHRoaXMudGFicz0zRG5ldyBlLlZpZXcoe3RpdGxlX25ldzo9
CiJBZGQgRGF0YSIsb25uZXc6ZnVuY3Rpb24oKXt2YXIgZT0zRG8uX2FkZEdyb3VwTW9kZWwoKTtv
LnRhYnMuc2hvdyhlLmlkKX19KT0KLHRoaXMudGl0bGU9M0RuZXcgdC5JbnB1dCh7cGxhY2Vob2xk
ZXI6IkNoYXJ0IHRpdGxlIixvbmNoYW5nZTpmdW5jdGlvbigpe28uPQpjaGFydC5zZXQoInRpdGxl
IixvLnRpdGxlLnZhbHVlKCkpfX0pO3ZhciBmPTNEJCgiPGRpdi8+Iik7Zi5hcHBlbmQoci53cmFw
KCg9Cm5ldyB0LkxhYmVsKHt0aXRsZToiUHJvdmlkZSBhIGNoYXJ0IHRpdGxlOiJ9KSkuJGVsKSks
Zi5hcHBlbmQoci53cmFwKHRoaXMudD0KaXRsZS4kZWwpKSxmLmFwcGVuZChyLndyYXAodGhpcy50
eXBlcy4kZWwpKSx0aGlzLnRhYnMuYWRkKHtpZDoibWFpbiIsdGl0bGU6PQoiU3RhcnQiLCRlbDpm
fSksdGhpcy5zZXR0aW5ncz0zRG5ldyB1KHRoaXMuYXBwKSx0aGlzLnRhYnMuYWRkKHtpZDoic2V0
dGluZ3M9CiIsdGl0bGU6IkNvbmZpZ3VyYXRpb24iLCRlbDp0aGlzLnNldHRpbmdzLiRlbH0pLHRo
aXMucG9ydGxldC5hcHBlbmQodGhpcy5tZT0Kc3NhZ2UuJGVsKSx0aGlzLnBvcnRsZXQuYXBwZW5k
KHRoaXMudGFicy4kZWwpLHRoaXMuc2V0RWxlbWVudCh0aGlzLnBvcnRsZXQuPQokZWwpLHRoaXMu
dGFicy5oaWRlT3BlcmF0aW9uKCJiYWNrIik7dmFyIG89M0R0aGlzO3RoaXMuY2hhcnQub24oImNo
YW5nZTp0aXQ9CmxlIixmdW5jdGlvbihlKXtvLl9yZWZyZXNoVGl0bGUoKX0pLHRoaXMuY2hhcnQu
b24oImNoYW5nZTp0eXBlIixmdW5jdGlvbihlKT0Ke28udHlwZXMudmFsdWUoZS5nZXQoInR5cGUi
KSl9KSx0aGlzLmNoYXJ0Lm9uKCJyZXNldCIsZnVuY3Rpb24oZSl7by5fcmVzZXRDPQpoYXJ0KCl9
KSx0aGlzLmFwcC5jaGFydC5vbigicmVkcmF3IixmdW5jdGlvbihlKXtvLnBvcnRsZXQuc2hvd09w
ZXJhdGlvbigiYmE9CmNrIil9KSx0aGlzLmFwcC5jaGFydC5ncm91cHMub24oImFkZCIsZnVuY3Rp
b24oZSl7by5fYWRkR3JvdXAoZSl9KSx0aGlzLmFwcD0KLmNoYXJ0Lmdyb3Vwcy5vbigicmVtb3Zl
IixmdW5jdGlvbihlKXtvLl9yZW1vdmVHcm91cChlKX0pLHRoaXMuYXBwLmNoYXJ0LmdyPQpvdXBz
Lm9uKCJyZXNldCIsZnVuY3Rpb24oZSl7by5fcmVtb3ZlQWxsR3JvdXBzKCl9KSx0aGlzLmFwcC5j
aGFydC5ncm91cHMub249CigiY2hhbmdlOmtleSIsZnVuY3Rpb24oZSl7by5fcmVmcmVzaEdyb3Vw
S2V5KCl9KSx0aGlzLl9yZXNldENoYXJ0KCl9LHNob3c6Zj0KdW5jdGlvbigpe3RoaXMuJGVsLnNo
b3coKX0saGlkZTpmdW5jdGlvbigpe3RoaXMuJGVsLmhpZGUoKX0sX3JlZnJlc2hUaXRsZTpmPQp1
bmN0aW9uKCl7dmFyIGU9M0R0aGlzLmNoYXJ0LmdldCgidGl0bGUiKTt0aGlzLnBvcnRsZXQudGl0
bGUoZSksdGhpcy50aXRsZS49CnZhbHVlKGUpfSxfcmVmcmVzaEdyb3VwS2V5OmZ1bmN0aW9uKCl7
dmFyIGU9M0R0aGlzLHQ9M0QwO3RoaXMuY2hhcnQuZ3JvdXBzLj0KZWFjaChmdW5jdGlvbihuKXt2
YXIgcj0zRG4uZ2V0KCJrZXkiLCIiKTtyPTNEPTNEIiImJihyPTNEIkRhdGEgbGFiZWwiKSxlLnRh
PQpicy50aXRsZShuLmlkLCsrdCsiOiAiK3IpfSl9LF9hZGRHcm91cE1vZGVsOmZ1bmN0aW9uKCl7
dmFyIGU9M0RuZXcgcyh7aWQ6ci49CnV1aWQoKX0pO3JldHVybiB0aGlzLmNoYXJ0Lmdyb3Vwcy5h
ZGQoZSksZX0sX2FkZEdyb3VwOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdD0KaGlzLG49M0RuZXcgbyh0
aGlzLmFwcCx7Z3JvdXA6ZX0pO3RoaXMudGFicy5hZGQoe2lkOmUuaWQsJGVsOm4uJGVsLG9uZGVs
OmZ1PQpuY3Rpb24oKXt0LmNoYXJ0Lmdyb3Vwcy5yZW1vdmUoZS5pZCl9fSksdGhpcy5fcmVmcmVz
aEdyb3VwS2V5KCksdGhpcy5jaGFydC49CnNldCgibW9kaWZpZWQiLCEwKX0sX3JlbW92ZUdyb3Vw
OmZ1bmN0aW9uKGUpe3RoaXMudGFicy5kZWwoZS5pZCksdGhpcy5fcmVmcj0KZXNoR3JvdXBLZXko
KSx0aGlzLmNoYXJ0LnNldCgibW9kaWZpZWQiLCEwKX0sX3JlbW92ZUFsbEdyb3VwczpmdW5jdGlv
bihlKXt0PQpoaXMudGFicy5kZWxSZW1vdmFibGUoKX0sX3Jlc2V0Q2hhcnQ6ZnVuY3Rpb24oKXt0
aGlzLmNoYXJ0LnNldCgiaWQiLHIudXVpZCg9CikpLHRoaXMuY2hhcnQuc2V0KCJ0eXBlIiwibnZk
M19iYXIiKSx0aGlzLmNoYXJ0LnNldCgiZGF0YXNldF9pZCIsdGhpcy5hcHAubz0KcHRpb25zLmNv
bmZpZy5kYXRhc2V0X2lkKSx0aGlzLmNoYXJ0LnNldCgidGl0bGUiLCJOZXcgQ2hhcnQiKSx0aGlz
LnBvcnRsZXQuPQpoaWRlT3BlcmF0aW9uKCJiYWNrIil9LF9zYXZlQ2hhcnQ6ZnVuY3Rpb24oKXt0
aGlzLmNoYXJ0LnNldCh7dHlwZTp0aGlzLnR5cGU9CnMudmFsdWUoKSx0aXRsZTp0aGlzLnRpdGxl
LnZhbHVlKCksZGF0ZTpyLnRpbWUoKX0pO2lmKHRoaXMuY2hhcnQuZ3JvdXBzLmxlbj0KZ3RoPTNE
PTNEMCl7dGhpcy5tZXNzYWdlLnVwZGF0ZSh7bWVzc2FnZToiUGxlYXNlIHNlbGVjdCBkYXRhIGNv
bHVtbnMgYmVmb3JlPQogZHJhd2luZyB0aGUgY2hhcnQuIn0pO3ZhciBlPTNEdGhpcy5fYWRkR3Jv
dXBNb2RlbCgpO3RoaXMudGFicy5zaG93KGUuaWQpO3I9CmV0dXJufXZhciB0PTNEdGhpcyxuPTNE
ITAsaT0zRHRoaXMuY2hhcnQuZGVmaW5pdGlvbjt0aGlzLmNoYXJ0Lmdyb3Vwcy5lYWNoKD0KZnVu
Y3Rpb24oZSl7aWYoIW4pcmV0dXJuO2Zvcih2YXIgciBpbiBpLmNvbHVtbnMpaWYoZS5hdHRyaWJ1
dGVzW3JdPTNEPTNEIm51PQpsbCIpe3QubWVzc2FnZS51cGRhdGUoe3N0YXR1czoiZGFuZ2VyIixt
ZXNzYWdlOiJUaGlzIGNoYXJ0IHR5cGUgcmVxdWlyZXMgY289Cmx1bW4gdHlwZXMgbm90IGZvdW5k
IGluIHlvdXIgdGFidWxhciBmaWxlLiJ9KSx0LnRhYnMuc2hvdyhlLmlkKSxuPTNEITE7cmV0dT0K
cm59fSk7aWYoIW4pcmV0dXJuO3RoaXMuYXBwLmdvKCJ2aWV3ZXIiKTt2YXIgdD0zRHRoaXM7dGhp
cy5hcHAuZGVmZXJyZWQuZXhlPQpjdXRlKGZ1bmN0aW9uKCl7dC5hcHAuc3RvcmFnZS5zYXZlKCks
dC5jaGFydC50cmlnZ2VyKCJyZWRyYXciKX0pfX0pfSksZGVmaW49CmUoInBsdWdpbi9tb2RlbHMv
Y29uZmlnIixbXSxmdW5jdGlvbigpe3JldHVybiBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe2RlZmF1
bD0KdHM6e3F1ZXJ5X2xpbWl0OjFlNCxxdWVyeV90aW1lb3V0OjEwMH19KX0pLGRlZmluZSgicGx1
Z2luL2NoYXJ0cy9mb3Jtcy9kZWZhPQp1bHQiLFtdLGZ1bmN0aW9uKCl7cmV0dXJue3RpdGxlOiIi
LGNhdGVnb3J5OiIiLGxpYnJhcnk6IiIsdGFnOiIiLGtleXdvcmRzOiI9CiIsc2V0dGluZ3M6e3Nl
cGFyYXRvcl94Ont0aXRsZToiWCBheGlzIix0eXBlOiJzZXBhcmF0b3IifSx4X2F4aXNfbGFiZWw6
e3RpdD0KbGU6IkF4aXMgbGFiZWwiLGluZm86IlByb3ZpZGUgYSBsYWJlbCBmb3IgdGhlIGF4aXMu
Iix0eXBlOiJ0ZXh0Iixpbml0OiJYLWF4PQppcyIscGxhY2Vob2xkZXI6IkF4aXMgbGFiZWwifSx4
X2F4aXNfdHlwZTp7dGl0bGU6IkF4aXMgdmFsdWUgdHlwZSIsaW5mbzoiU2U9CmxlY3QgdGhlIHZh
bHVlIHR5cGUgb2YgdGhlIGF4aXMuIix0eXBlOiJzZWxlY3QiLGluaXQ6ImF1dG8iLGRhdGE6W3ts
YWJlbDoiLT0KLSBEbyBub3Qgc2hvdyB2YWx1ZXMgLS0iLHZhbHVlOiJoaWRlIixvcGVyYXRpb25z
OntoaWRlOlsieF9heGlzX3ByZWNpc2lvbiJdPQp9fSx7bGFiZWw6IkF1dG8iLHZhbHVlOiJhdXRv
IixvcGVyYXRpb25zOntoaWRlOlsieF9heGlzX3ByZWNpc2lvbiJdfX0se2xhYmU9Cmw6IkZsb2F0
Iix2YWx1ZToiZiIsb3BlcmF0aW9uczp7c2hvdzpbInhfYXhpc19wcmVjaXNpb24iXX19LHtsYWJl
bDoiRXhwb25lbj0KdCIsdmFsdWU6ImUiLG9wZXJhdGlvbnM6e3Nob3c6WyJ4X2F4aXNfcHJlY2lz
aW9uIl19fSx7bGFiZWw6IkludGVnZXIiLHZhbHVlPQo6ImQiLG9wZXJhdGlvbnM6e2hpZGU6WyJ4
X2F4aXNfcHJlY2lzaW9uIl19fSx7bGFiZWw6IlBlcmNlbnRhZ2UiLHZhbHVlOiJwIiw9Cm9wZXJh
dGlvbnM6e3Nob3c6WyJ4X2F4aXNfcHJlY2lzaW9uIl19fSx7bGFiZWw6IlNJLXByZWZpeCIsdmFs
dWU6InMiLG9wZXJhdD0KaW9uczp7aGlkZTpbInhfYXhpc19wcmVjaXNpb24iXX19XX0seF9heGlz
X3ByZWNpc2lvbjp7dGl0bGU6IkF4aXMgdGljayBmb3JtPQphdCIsaW5mbzoiU2VsZWN0IHRoZSB0
aWNrIGZvcm1hdCBmb3IgdGhlIGF4aXMuIix0eXBlOiJzZWxlY3QiLGluaXQ6IjEiLGRhdGE9Cjpb
e2xhYmVsOiIwLjAwMDAxIix2YWx1ZToiNSJ9LHtsYWJlbDoiMC4wMDAxIix2YWx1ZToiNCJ9LHts
YWJlbDoiMC4wMDEiLHZhbD0KdWU6IjMifSx7bGFiZWw6IjAuMDEiLHZhbHVlOiIyIn0se2xhYmVs
OiIwLjEiLHZhbHVlOiIxIn0se2xhYmVsOiIxIix2YWx1ZToiPQowIn1dfSxzZXBhcmF0b3JfeTp7
dGl0bGU6IlkgYXhpcyIsdHlwZToic2VwYXJhdG9yIn0seV9heGlzX2xhYmVsOnt0aXRsZToiQXg9
CmlzIGxhYmVsIixpbmZvOiJQcm92aWRlIGEgbGFiZWwgZm9yIHRoZSBheGlzLiIsdHlwZToidGV4
dCIsaW5pdDoiWS1heGlzIixwbD0KYWNlaG9sZGVyOiJBeGlzIGxhYmVsIn0seV9heGlzX3R5cGU6
e3RpdGxlOiJBeGlzIHZhbHVlIHR5cGUiLGluZm86IlNlbGVjdCB0PQpoZSB2YWx1ZSB0eXBlIG9m
IHRoZSBheGlzLiIsdHlwZToic2VsZWN0Iixpbml0OiJhdXRvIixkYXRhOlt7bGFiZWw6Ii0tIERv
IG49Cm90IHNob3cgdmFsdWVzIC0tIix2YWx1ZToiaGlkZSIsb3BlcmF0aW9uczp7aGlkZTpbInlf
YXhpc19wcmVjaXNpb24iXX19LHtsYT0KYmVsOiJBdXRvIix2YWx1ZToiYXV0byIsb3BlcmF0aW9u
czp7aGlkZTpbInlfYXhpc19wcmVjaXNpb24iXX19LHtsYWJlbDoiRmxvPQphdCIsdmFsdWU6ImYi
LG9wZXJhdGlvbnM6e3Nob3c6WyJ5X2F4aXNfcHJlY2lzaW9uIl19fSx7bGFiZWw6IkV4cG9uZW50
Iix2YWw9CnVlOiJlIixvcGVyYXRpb25zOntzaG93OlsieV9heGlzX3ByZWNpc2lvbiJdfX0se2xh
YmVsOiJJbnRlZ2VyIix2YWx1ZToiZCIsbz0KcGVyYXRpb25zOntoaWRlOlsieV9heGlzX3ByZWNp
c2lvbiJdfX0se2xhYmVsOiJQZXJjZW50YWdlIix2YWx1ZToicCIsb3BlcmF0PQppb25zOntzaG93
OlsieV9heGlzX3ByZWNpc2lvbiJdfX0se2xhYmVsOiJTSS1wcmVmaXgiLHZhbHVlOiJzIixvcGVy
YXRpb25zOns9CmhpZGU6WyJ5X2F4aXNfcHJlY2lzaW9uIl19fV19LHlfYXhpc19wcmVjaXNpb246
e3RpdGxlOiJBeGlzIHRpY2sgZm9ybWF0Iixpbj0KZm86IlNlbGVjdCB0aGUgdGljayBmb3JtYXQg
Zm9yIHRoZSBheGlzLiIsdHlwZToic2VsZWN0Iixpbml0OiIxIixkYXRhOlt7bGFiPQplbDoiMC4w
MDAwMSIsdmFsdWU6IjUifSx7bGFiZWw6IjAuMDAwMSIsdmFsdWU6IjQifSx7bGFiZWw6IjAuMDAx
Iix2YWx1ZToiMyI9Cn0se2xhYmVsOiIwLjAxIix2YWx1ZToiMiJ9LHtsYWJlbDoiMC4xIix2YWx1
ZToiMSJ9LHtsYWJlbDoiMSIsdmFsdWU6IjAifV19LD0Kc2VwYXJhdG9yX2xlZ2VuZDp7dGl0bGU6
Ik90aGVycyIsdHlwZToic2VwYXJhdG9yIn0sc2hvd19sZWdlbmQ6e3RpdGxlOiJTaG93PQogbGVn
ZW5kIixpbmZvOiJXb3VsZCB5b3UgbGlrZSB0byBhZGQgYSBsZWdlbmQ/Iix0eXBlOiJyYWRpb2J1
dHRvbiIsaW5pdDoidHI9CnVlIixkYXRhOlt7bGFiZWw6IlllcyIsdmFsdWU6InRydWUifSx7bGFi
ZWw6Ik5vIix2YWx1ZToiZmFsc2UifV19LHVzZV9wYW5lbD0Kczp7dGl0bGU6IlVzZSBtdWx0aS1w
YW5lbHMiLGluZm86IldvdWxkIHlvdSBsaWtlIHRvIHNlcGFyYXRlIHlvdXIgZGF0YSBpbnRvPQog
aW5kaXZpZHVhbCBwYW5lbHM/Iix0eXBlOiJyYWRpb2J1dHRvbiIsaW5pdDoiZmFsc2UiLGRhdGE6
W3tsYWJlbDoiWWVzIix2YWw9CnVlOiJ0cnVlIn0se2xhYmVsOiJObyIsdmFsdWU6ImZhbHNlIn1d
fX19fSksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsdCl7cmV0dT0Kcm4obmV3IERhdGUodCxlKzEs
MCkpLmdldERhdGUoKX1mdW5jdGlvbiBuKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24ocixpLHMpe3Zh
PQpyIG89M0RlKHIpLHU9M0RbXTtvPHImJnQobyk7aWYocz4xKXdoaWxlKG88aSl7dmFyIGE9M0Ru
ZXcgRGF0ZSgrbyk7bihhKSVzPQo9M0Q9M0Q9M0QwJiZ1LnB1c2goYSksdChvKX1lbHNlIHdoaWxl
KG88aSl1LnB1c2gobmV3IERhdGUoK28pKSx0KG8pO3JldHVybiA9CnV9fXZhciBlPTNEd2luZG93
Lm52fHx7fTtlLnZlcnNpb249M0QiMS4xLjE1YiIsZS5kZXY9M0QhMCx3aW5kb3cubnY9M0RlLGUu
dD0Kb29sdGlwPTNEZS50b29sdGlwfHx7fSxlLnV0aWxzPTNEZS51dGlsc3x8e30sZS5tb2RlbHM9
M0RlLm1vZGVsc3x8e30sZS5jaGFyPQp0cz0zRHt9LGUuZ3JhcGhzPTNEW10sZS5sb2dzPTNEe30s
ZS5kaXNwYXRjaD0zRGQzLmRpc3BhdGNoKCJyZW5kZXJfc3RhcnQiLCI9CnJlbmRlcl9lbmQiKSxl
LmRldiYmKGUuZGlzcGF0Y2gub24oInJlbmRlcl9zdGFydCIsZnVuY3Rpb24odCl7ZS5sb2dzLnN0
YXJ0VD0KaW1lPTNEKyhuZXcgRGF0ZSl9KSxlLmRpc3BhdGNoLm9uKCJyZW5kZXJfZW5kIixmdW5j
dGlvbih0KXtlLmxvZ3MuZW5kVGltZT0KPTNEKyhuZXcgRGF0ZSksZS5sb2dzLnRvdGFsVGltZT0z
RGUubG9ncy5lbmRUaW1lLWUubG9ncy5zdGFydFRpbWUsZS5sb2coInRvPQp0YWwiLGUubG9ncy50
b3RhbFRpbWUpfSkpLGUubG9nPTNEZnVuY3Rpb24oKXtpZihlLmRldiYmY29uc29sZS5sb2cmJmNv
bnNvbGU9Ci5sb2cuYXBwbHkpY29uc29sZS5sb2cuYXBwbHkoY29uc29sZSxhcmd1bWVudHMpO2Vs
c2UgaWYoZS5kZXYmJnR5cGVvZiBjb25zbz0KbGUubG9nPTNEPTNEImZ1bmN0aW9uIiYmRnVuY3Rp
b24ucHJvdG90eXBlLmJpbmQpe3ZhciB0PTNERnVuY3Rpb24ucHJvdG90eXBlPQouYmluZC5jYWxs
KGNvbnNvbGUubG9nLGNvbnNvbGUpO3QuYXBwbHkoY29uc29sZSxhcmd1bWVudHMpfXJldHVybiBh
cmd1bWVudHM9Clthcmd1bWVudHMubGVuZ3RoLTFdfSxlLnJlbmRlcj0zRGZ1bmN0aW9uKG4pe249
M0RufHwxLGUucmVuZGVyLmFjdGl2ZT0zRCEwLD0KZS5kaXNwYXRjaC5yZW5kZXJfc3RhcnQoKSxz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dmFyIHQscjtmb3IodmFyIGk9M0QwO2k8biYmPQoocj0zRGUu
cmVuZGVyLnF1ZXVlW2ldKTtpKyspdD0zRHIuZ2VuZXJhdGUoKSx0eXBlb2Ygci5jYWxsYmFjaz0z
RD0zRHR5cGVvZiA9CkZ1bmN0aW9uJiZyLmNhbGxiYWNrKHQpLGUuZ3JhcGhzLnB1c2godCk7ZS5y
ZW5kZXIucXVldWUuc3BsaWNlKDAsaSksZS5yZW5kZT0Kci5xdWV1ZS5sZW5ndGg/c2V0VGltZW91
dChhcmd1bWVudHMuY2FsbGVlLDApOihlLmRpc3BhdGNoLnJlbmRlcl9lbmQoKSxlLnJlPQpuZGVy
LmFjdGl2ZT0zRCExKX0sMCl9LGUucmVuZGVyLmFjdGl2ZT0zRCExLGUucmVuZGVyLnF1ZXVlPTNE
W10sZS5hZGRHcmFwaD0KPTNEZnVuY3Rpb24odCl7dHlwZW9mIGFyZ3VtZW50c1swXT0zRD0zRHR5
cGVvZiBGdW5jdGlvbiYmKHQ9M0R7Z2VuZXJhdGU6YXJnPQp1bWVudHNbMF0sY2FsbGJhY2s6YXJn
dW1lbnRzWzFdfSksZS5yZW5kZXIucXVldWUucHVzaCh0KSxlLnJlbmRlci5hY3RpdmV8fGU9Ci5y
ZW5kZXIoKX0sZS5pZGVudGl0eT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlfSxlLnN0cmlwPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuID0KZS5yZXBsYWNlKC8oXHN8JikvZywiIil9LGQzLnRpbWUubW9udGhF
bmQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gbmV3IERhdGUoZS5nPQpldEZ1bGxZZWFyKCksZS5nZXRN
b250aCgpLDApfSxkMy50aW1lLm1vbnRoRW5kcz0zRG4oZDMudGltZS5tb250aEVuZCxmdW5jdGk9
Cm9uKGUpe2Uuc2V0VVRDRGF0ZShlLmdldFVUQ0RhdGUoKSsxKSxlLnNldERhdGUodChlLmdldE1v
bnRoKCkrMSxlLmdldEZ1bGxZZT0KYXIoKSkpfSxmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRNb250
aCgpfSksZS5pbnRlcmFjdGl2ZUd1aWRlbGluZT0zRGZ1bmN0aW9uPQooKXtmdW5jdGlvbiBjKG8p
e28uZWFjaChmdW5jdGlvbihvKXtmdW5jdGlvbiBnKCl7dmFyIGU9M0RkMy5tb3VzZSh0aGlzKSxu
PQo9M0RlWzBdLHI9M0RlWzFdLG89M0QhMCxhPTNEITE7bCYmKG49M0RkMy5ldmVudC5vZmZzZXRY
LHI9M0RkMy5ldmVudC5vZmZzZXQ9ClksZDMuZXZlbnQudGFyZ2V0LnRhZ05hbWUhPTNEPTNEInN2
ZyImJihvPTNEITEpLGQzLmV2ZW50LnRhcmdldC5jbGFzc05hbWUuYj0KYXNlVmFsLm1hdGNoKCJu
di1sZWdlbmQiKSYmKGE9M0QhMCkpLG8mJihuLT0zRGkubGVmdCxyLT0zRGkudG9wKTtpZihuPDB8
fHI8PQowfHxuPnB8fHI+ZHx8ZDMuZXZlbnQucmVsYXRlZFRhcmdldCYmZDMuZXZlbnQucmVsYXRl
ZFRhcmdldC5vd25lclNWR0VsZW1lbnQ9Cj0zRD0zRD0zRHVuZGVmaW5lZHx8YSl7aWYobCYmZDMu
ZXZlbnQucmVsYXRlZFRhcmdldCYmZDMuZXZlbnQucmVsYXRlZFRhcmdldD0KLm93bmVyU1ZHRWxl
bWVudD0zRD0zRD0zRHVuZGVmaW5lZCYmZDMuZXZlbnQucmVsYXRlZFRhcmdldC5jbGFzc05hbWUu
bWF0Y2goPQp0Lm52UG9pbnRlckV2ZW50c0NsYXNzKSlyZXR1cm47dS5lbGVtZW50TW91c2VvdXQo
e21vdXNlWDpuLG1vdXNlWTpyfSksYy5yZW49CmRlckd1aWRlTGluZShudWxsKTtyZXR1cm59dmFy
IGY9M0RzLmludmVydChuKTt1LmVsZW1lbnRNb3VzZW1vdmUoe21vdXNlWDpuLD0KbW91c2VZOnIs
cG9pbnRYVmFsdWU6Zn0pLGQzLmV2ZW50LnR5cGU9M0Q9M0Q9M0QiZGJsY2xpY2siJiZ1LmVsZW1l
bnREYmxjbGljPQprKHttb3VzZVg6bixtb3VzZVk6cixwb2ludFhWYWx1ZTpmfSl9dmFyIGg9M0Rk
My5zZWxlY3QodGhpcykscD0zRG58fDk2MCxkPQo9M0RyfHw0MDAsdj0zRGguc2VsZWN0QWxsKCJn
Lm52LXdyYXAubnYtaW50ZXJhY3RpdmVMaW5lTGF5ZXIiKS5kYXRhKFtvXSksbT0KPTNEdi5lbnRl
cigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiIG52LXdyYXAgbnYtaW50ZXJhY3RpdmVMaW5l
TGF5ZXIiKTttPQouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1pbnRlcmFjdGl2ZUd1aWRl
TGluZSIpO2lmKCFmKXJldHVybjtmLm9uKCJtb3U9CnNlbW92ZSIsZywhMCkub24oIm1vdXNlb3V0
IixnLCEwKS5vbigiZGJsY2xpY2siLGcpLGMucmVuZGVyR3VpZGVMaW5lPTNEZnVuYz0KdGlvbih0
KXtpZighYSlyZXR1cm47dmFyIG49M0R2LnNlbGVjdCgiLm52LWludGVyYWN0aXZlR3VpZGVMaW5l
Iikuc2VsZWN0QWxsPQooImxpbmUiKS5kYXRhKHQhPTNEbnVsbD9bZS51dGlscy5OYU50b1plcm8o
dCldOltdLFN0cmluZyk7bi5lbnRlcigpLmFwcGVuZCg9CiJsaW5lIikuYXR0cigiY2xhc3MiLCJu
di1ndWlkZWxpbmUiKS5hdHRyKCJ4MSIsZnVuY3Rpb24oZSl7cmV0dXJuIGV9KS5hdHRyKD0KIngy
IixmdW5jdGlvbihlKXtyZXR1cm4gZX0pLmF0dHIoInkxIixkKS5hdHRyKCJ5MiIsMCksbi5leGl0
KCkucmVtb3ZlKCl9fSl9PQp2YXIgdD0zRGUubW9kZWxzLnRvb2x0aXAoKSxuPTNEbnVsbCxyPTNE
bnVsbCxpPTNEe2xlZnQ6MCx0b3A6MH0scz0zRGQzLnNjYWw9CmUubGluZWFyKCksbz0zRGQzLnNj
YWxlLmxpbmVhcigpLHU9M0RkMy5kaXNwYXRjaCgiZWxlbWVudE1vdXNlbW92ZSIsImVsZW1lbj0K
dE1vdXNlb3V0IiwiZWxlbWVudERibGNsaWNrIiksYT0zRCEwLGY9M0RudWxsLGw9M0RuYXZpZ2F0
b3IudXNlckFnZW50LmluZGV4PQpPZigiTVNJRSIpIT0zRD0zRC0xO3JldHVybiBjLmRpc3BhdGNo
PTNEdSxjLnRvb2x0aXA9M0R0LGMubWFyZ2luPTNEZnVuY3Rpb249CihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oaS50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6aS50
bz0KcCxpLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDppLmxlZnQs
Yyk6aX0sYy53aWR0aD0zRGZ1bmN0PQppb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49
M0RlLGMpOm59LGMuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGE9CnJndW1lbnRzLmxlbmd0
aD8ocj0zRGUsYyk6cn0sYy54U2NhbGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD0KPyhzPTNEZSxjKTpzfSxjLnNob3dHdWlkZUxpbmU9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oYT0zRGUsPQpjKTphfSxjLnN2Z0NvbnRhaW5lcj0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSxjKTpmfSxjfSw9CmUuaW50ZXJhY3Rp
dmVCaXNlY3Q9M0RmdW5jdGlvbihlLHQsbil7aWYoIWUgaW5zdGFuY2VvZiBBcnJheSlyZXR1cm4g
bnVsbDt0eT0KcGVvZiBuIT0zRCJmdW5jdGlvbiImJihuPTNEZnVuY3Rpb24oZSx0KXtyZXR1cm4g
ZS54fSk7dmFyIHI9M0RkMy5iaXNlY3RvcihuPQopLmxlZnQsaT0zRGQzLm1heChbMCxyKGUsdCkt
MV0pLHM9M0RuKGVbaV0saSk7dHlwZW9mIHM9M0Q9M0QidW5kZWZpbmVkIiYmKHM9Cj0zRGkpO2lm
KHM9M0Q9M0Q9M0R0KXJldHVybiBpO3ZhciBvPTNEZDMubWluKFtpKzEsZS5sZW5ndGgtMV0pLHU9
M0RuKGVbb10sbz0KKTtyZXR1cm4gdHlwZW9mIHU9M0Q9M0QidW5kZWZpbmVkIiYmKHU9M0RvKSxN
YXRoLmFicyh1LXQpPj0zRE1hdGguYWJzKHMtdCk/PQppOm99LGUubmVhcmVzdFZhbHVlSW5kZXg9
M0RmdW5jdGlvbihlLHQsbil7dmFyIHI9M0RJbmZpbml0eSxpPTNEbnVsbDtyZXR1cm49CiBlLmZv
ckVhY2goZnVuY3Rpb24oZSxzKXt2YXIgbz0zRE1hdGguYWJzKHQtZSk7bzw9M0RyJiZvPG4mJihy
PTNEbyxpPTNEcyl9KT0KLGl9LGZ1bmN0aW9uKCl7d2luZG93Lm52LnRvb2x0aXA9M0R7fSx3aW5k
b3cubnYubW9kZWxzLnRvb2x0aXA9M0RmdW5jdGlvbigpPQp7ZnVuY3Rpb24geSgpe2lmKGEpe3Zh
ciBlPTNEZDMuc2VsZWN0KGEpO2Uubm9kZSgpLnRhZ05hbWUhPTNEPTNEInN2ZyImJihlPQo9M0Rl
LnNlbGVjdCgic3ZnIikpO3ZhciB0PTNEZS5ub2RlKCk/ZS5hdHRyKCJ2aWV3Qm94Iik6bnVsbDtp
Zih0KXt0PTNEdC5zcGw9Cml0KCIgIik7dmFyIG49M0RwYXJzZUludChlLnN0eWxlKCJ3aWR0aCIp
KS90WzJdO2wubGVmdD0zRGwubGVmdCpuLGwudG9wPTNEbD0KLnRvcCpufX19ZnVuY3Rpb24gYihl
KXt2YXIgdDthP3Q9M0RkMy5zZWxlY3QoYSk6dD0zRGQzLnNlbGVjdCgiYm9keSIpO3ZhciBuPQo9
M0R0LnNlbGVjdCgiLm52dG9vbHRpcCIpO3JldHVybiBuLm5vZGUoKT0zRD0zRD0zRG51bGwmJihu
PTNEdC5hcHBlbmQoImRpdiI9CikuYXR0cigiY2xhc3MiLCJudnRvb2x0aXAgIisodT91OiJ4eS10
b29sdGlwIikpLmF0dHIoImlkIixoKSksbi5ub2RlKCkuaW5uZT0KckhUTUw9M0RlLG4uc3R5bGUo
InRvcCIsMCkuc3R5bGUoImxlZnQiLDApLnN0eWxlKCJvcGFjaXR5IiwwKSxuLnNlbGVjdEFsbCgi
PQpkaXYsIHRhYmxlLCB0ZCwgdHIiKS5jbGFzc2VkKHAsITApLG4uY2xhc3NlZChwLCEwKSxuLm5v
ZGUoKX1mdW5jdGlvbiB3KCl7aWY9CighYylyZXR1cm47aWYoIWcobikpcmV0dXJuO3koKTt2YXIg
dD0zRGwubGVmdCx1PTNEbyE9M0RudWxsP286bC50b3AsaD0zRGIobT0KKG4pKTtmPTNEaDtpZihh
KXt2YXIgcD0zRGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInN2ZyIpWzBdLGQ9M0RwP3AuZ2V0Qm91
bmRpPQpuZ0NsaWVudFJlY3QoKTphLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHY9M0R7bGVmdDow
LHRvcDowfTtpZihwKXt2YXIgRT0zRHA9Ci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxTPTNEYS5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx4PTNERS50b3A7aWYoeDwwKXt2YT0KciBUPTNEYS5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKTt4PTNETWF0aC5hYnMoeCk+VC5oZWlnaHQ/MDp4fXYudG9wPTNE
TWF0aC5hPQpicyh4LVMudG9wKSx2LmxlZnQ9M0RNYXRoLmFicyhFLmxlZnQtUy5sZWZ0KX10Kz0z
RGEub2Zmc2V0TGVmdCt2LmxlZnQtMiphLnM9CmNyb2xsTGVmdCx1Kz0zRGEub2Zmc2V0VG9wK3Yu
dG9wLTIqYS5zY3JvbGxUb3B9cmV0dXJuIHMmJnM+MCYmKHU9M0RNYXRoLmZsbz0Kb3IodS9zKSpz
KSxlLnRvb2x0aXAuY2FsY1Rvb2x0aXBQb3NpdGlvbihbdCx1XSxyLGksaCksd312YXIgdD0zRG51
bGwsbj0zRG51PQpsbCxyPTNEInciLGk9M0Q1MCxzPTNEMjUsbz0zRG51bGwsdT0zRG51bGwsYT0z
RG51bGwsZj0zRG51bGwsbD0zRHtsZWZ0Om51bGw9Cix0b3A6bnVsbH0sYz0zRCEwLGg9M0QibnZ0
b29sdGlwLSIrTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjFlNSkscD0zRCJudi1wbz0KaW50ZXIt
ZXZlbnRzLW5vbmUiLGQ9M0RmdW5jdGlvbihlLHQpe3JldHVybiBlfSx2PTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGV9LG09Cj0zRGZ1bmN0aW9uKGUpe2lmKHQhPTNEbnVsbClyZXR1cm4gdDtpZihlPTNE
PTNEbnVsbClyZXR1cm4iIjt2YXIgbj0zRGQzLnNlbD0KZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInRhYmxlIikpLHI9M0RuLnNlbGVjdEFsbCgidGhlYWQiKS5kYXRhKFtlXSkuZW50PQplcigp
LmFwcGVuZCgidGhlYWQiKTtyLmFwcGVuZCgidHIiKS5hcHBlbmQoInRkIikuYXR0cigiY29sc3Bh
biIsMykuYXBwZW5kKCI9CnN0cm9uZyIpLmNsYXNzZWQoIngtdmFsdWUiLCEwKS5odG1sKHYoZS52
YWx1ZSkpO3ZhciBpPTNEbi5zZWxlY3RBbGwoInRib2R5Ij0KKS5kYXRhKFtlXSkuZW50ZXIoKS5h
cHBlbmQoInRib2R5Iikscz0zRGkuc2VsZWN0QWxsKCJ0ciIpLmRhdGEoZnVuY3Rpb24oZSl7PQpy
ZXR1cm4gZS5zZXJpZXN9KS5lbnRlcigpLmFwcGVuZCgidHIiKS5jbGFzc2VkKCJoaWdobGlnaHQi
LGZ1bmN0aW9uKGUpe3JldHU9CnJuIGUuaGlnaGxpZ2h0fSk7cy5hcHBlbmQoInRkIikuY2xhc3Nl
ZCgibGVnZW5kLWNvbG9yLWd1aWRlIiwhMCkuYXBwZW5kKCJkaT0KdiIpLnN0eWxlKCJiYWNrZ3Jv
dW5kLWNvbG9yIixmdW5jdGlvbihlKXtyZXR1cm4gZS5jb2xvcn0pLHMuYXBwZW5kKCJ0ZCIpLmNs
PQphc3NlZCgia2V5IiwhMCkuaHRtbChmdW5jdGlvbihlKXtyZXR1cm4gZS5rZXl9KSxzLmFwcGVu
ZCgidGQiKS5jbGFzc2VkKCJ2YWw9CnVlIiwhMCkuaHRtbChmdW5jdGlvbihlLHQpe3JldHVybiBk
KGUudmFsdWUsdCl9KSxzLnNlbGVjdEFsbCgidGQiKS5lYWNoKGZ1bj0KY3Rpb24oZSl7aWYoZS5o
aWdobGlnaHQpe3ZhciB0PTNEZDMuc2NhbGUubGluZWFyKCkuZG9tYWluKFswLDFdKS5yYW5nZShb
IiNmPQpmZiIsZS5jb2xvcl0pLG49M0QuNjtkMy5zZWxlY3QodGhpcykuc3R5bGUoImJvcmRlci1i
b3R0b20tY29sb3IiLHQobikpLnN0eWw9CmUoImJvcmRlci10b3AtY29sb3IiLHQobikpfX0pO3Zh
ciBvPTNEbi5ub2RlKCkub3V0ZXJIVE1MO3JldHVybiBlLmZvb3RlciE9Cj0zRD0zRHVuZGVmaW5l
ZCYmKG8rPTNEIjxkaXYgY2xhc3M9M0QnZm9vdGVyJz4iK2UuZm9vdGVyKyI8L2Rpdj4iKSxvfSxn
PTNEZj0KdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5zZXJpZXMmJmUuc2VyaWVzLmxlbmd0aD4wPyEw
OiExfTtyZXR1cm4gdy5udlBvaW50ZXJFPQp2ZW50c0NsYXNzPTNEcCx3LmNvbnRlbnQ9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0zRGUsdyk6dH09Cix3LnRvb2x0aXBF
bGVtPTNEZnVuY3Rpb24oKXtyZXR1cm4gZn0sdy5jb250ZW50R2VuZXJhdG9yPTNEZnVuY3Rpb24o
ZSl7cmV0dT0Kcm4gYXJndW1lbnRzLmxlbmd0aD8odHlwZW9mIGU9M0Q9M0QiZnVuY3Rpb24iJiYo
bT0zRGUpLHcpOm19LHcuZGF0YT0zRGZ1bmN0PQppb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KG49M0RlLHcpOm59LHcuZ3Jhdml0eT0zRGZ1bmN0aW9uKGUpe3JldHVybiA9CmFyZ3VtZW50
cy5sZW5ndGg/KHI9M0RlLHcpOnJ9LHcuZGlzdGFuY2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbj0KZ3RoPyhpPTNEZSx3KTppfSx3LnNuYXBEaXN0YW5jZT0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPTNEPQplLHcpOnN9LHcuY2xhc3Nlcz0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZSx3KTp1fSx3LmNoYXI9CnRDb250
YWluZXI9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0zRGUsdyk6YX0s
dy5wb3NpdGlvbj0zRD0KZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGwubGVm
dD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/PQplLmxlZnQ6bC5sZWZ0LGwudG9wPTNE
dHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOmwudG9wLHcpOmx9LHcuZml4ZWQ9ClRv
cD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZSx3KTpvfSx3LmVu
YWJsZWQ9M0RmdW5jdGlvbj0KKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSx3KTpj
fSx3LnZhbHVlRm9ybWF0dGVyPTNEZnVuY3Rpb24oZSl7cmV0PQp1cm4gYXJndW1lbnRzLmxlbmd0
aD8odHlwZW9mIGU9M0Q9M0QiZnVuY3Rpb24iJiYoZD0zRGUpLHcpOmR9LHcuaGVhZGVyRm9ybWE9
CnR0ZXI9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odHlwZW9mIGU9M0Q9
M0QiZnVuY3Rpb24iJiYodj0zRD0KZSksdyk6dn0sdy5pZD0zRGZ1bmN0aW9uKCl7cmV0dXJuIGh9
LHd9LGUudG9vbHRpcC5zaG93PTNEZnVuY3Rpb24odCxuLHIsaSxzPQosbyl7dmFyIHU9M0Rkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt1LmNsYXNzTmFtZT0zRCJudnRvb2x0aXAgIisobz9v
OiI9Cnh5LXRvb2x0aXAiKTt2YXIgYT0zRHM7aWYoIXN8fHMudGFnTmFtZS5tYXRjaCgvZ3xzdmcv
aSkpYT0zRGRvY3VtZW50LmdldEVsZT0KbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXTt1LnN0eWxl
LmxlZnQ9M0QwLHUuc3R5bGUudG9wPTNEMCx1LnN0eWxlLm9wYWNpdHk9Cj0zRDAsdS5pbm5lckhU
TUw9M0RuLGEuYXBwZW5kQ2hpbGQodSkscyYmKHRbMF09M0R0WzBdLXMuc2Nyb2xsTGVmdCx0WzFd
PTNEdD0KWzFdLXMuc2Nyb2xsVG9wKSxlLnRvb2x0aXAuY2FsY1Rvb2x0aXBQb3NpdGlvbih0LHIs
aSx1KX0sZS50b29sdGlwLmZpbmRGaXJzPQp0Tm9uU1ZHUGFyZW50PTNEZnVuY3Rpb24oZSl7d2hp
bGUoZS50YWdOYW1lLm1hdGNoKC9eZ3xzdmckL2kpIT0zRD0zRG51bGwpZT0KPTNEZS5wYXJlbnRO
b2RlO3JldHVybiBlfSxlLnRvb2x0aXAuZmluZFRvdGFsT2Zmc2V0VG9wPTNEZnVuY3Rpb24oZSx0
KXt2YXIgPQpuPTNEdDtkbyBpc05hTihlLm9mZnNldFRvcCl8fChuKz0zRGUub2Zmc2V0VG9wKTt3
aGlsZShlPTNEZS5vZmZzZXRQYXJlbnQpO3I9CmV0dXJuIG59LGUudG9vbHRpcC5maW5kVG90YWxP
ZmZzZXRMZWZ0PTNEZnVuY3Rpb24oZSx0KXt2YXIgbj0zRHQ7ZG8gaXNOYU4oZT0KLm9mZnNldExl
ZnQpfHwobis9M0RlLm9mZnNldExlZnQpO3doaWxlKGU9M0RlLm9mZnNldFBhcmVudCk7cmV0dXJu
IG59LGUudG9vPQpsdGlwLmNhbGNUb29sdGlwUG9zaXRpb249M0RmdW5jdGlvbih0LG4scixpKXt2
YXIgcz0zRHBhcnNlSW50KGkub2Zmc2V0SGVpZ2g9CnQpLG89M0RwYXJzZUludChpLm9mZnNldFdp
ZHRoKSx1PTNEZS51dGlscy53aW5kb3dTaXplKCkud2lkdGgsYT0zRGUudXRpbHMudz0KaW5kb3dT
aXplKCkuaGVpZ2h0LGY9M0R3aW5kb3cucGFnZVlPZmZzZXQsbD0zRHdpbmRvdy5wYWdlWE9mZnNl
dCxjLGg7YT0zRHdpPQpuZG93LmlubmVyV2lkdGg+PTNEZG9jdW1lbnQuYm9keS5zY3JvbGxXaWR0
aD9hOmEtMTYsdT0zRHdpbmRvdy5pbm5lckhlaWdodD49Cj0zRGRvY3VtZW50LmJvZHkuc2Nyb2xs
SGVpZ2h0P3U6dS0xNixuPTNEbnx8InMiLHI9M0RyfHwyMDt2YXIgcD0zRGZ1bmN0aW9uKD0KdCl7
cmV0dXJuIGUudG9vbHRpcC5maW5kVG90YWxPZmZzZXRUb3AodCxoKX0sZD0zRGZ1bmN0aW9uKHQp
e3JldHVybiBlLnRvb2x0PQppcC5maW5kVG90YWxPZmZzZXRMZWZ0KHQsYyl9O3N3aXRjaChuKXtj
YXNlImUiOmM9M0R0WzBdLW8tcixoPTNEdFsxXS1zLzI7dmE9CnIgdj0zRGQoaSksbT0zRHAoaSk7
djxsJiYoYz0zRHRbMF0rcj5sP3RbMF0rcjpsLXYrYyksbTxmJiYoaD0zRGYtbStoKSxtK3M+Zj0K
K2EmJihoPTNEZithLW0raC1zKTticmVhaztjYXNlInciOmM9M0R0WzBdK3IsaD0zRHRbMV0tcy8y
O3ZhciB2PTNEZChpKSxtPTNEPQpwKGkpO3Yrbz51JiYoYz0zRHRbMF0tby1yKSxtPGYmJihoPTNE
Zis1KSxtK3M+ZithJiYoaD0zRGYrYS1tK2gtcyk7YnJlYWs7Y2E9CnNlIm4iOmM9M0R0WzBdLW8v
Mi01LGg9M0R0WzFdK3I7dmFyIHY9M0RkKGkpLG09M0RwKGkpO3Y8bCYmKGM9M0RsKzUpLHYrbz51
Jj0KJihjPTNEYy1vLzIrNSksbStzPmYrYSYmKGg9M0RmK2EtbStoLXMpO2JyZWFrO2Nhc2UicyI6
Yz0zRHRbMF0tby8yLGg9M0R0WzFdPQotcy1yO3ZhciB2PTNEZChpKSxtPTNEcChpKTt2PGwmJihj
PTNEbCs1KSx2K28+dSYmKGM9M0RjLW8vMis1KSxmPm0mJihoPTNEZik9CjticmVhaztjYXNlIm5v
bmUiOmM9M0R0WzBdLGg9M0R0WzFdLXI7dmFyIHY9M0RkKGkpLG09M0RwKGkpfXJldHVybiBpLnN0
eWxlLj0KbGVmdD0zRGMrInB4IixpLnN0eWxlLnRvcD0zRGgrInB4IixpLnN0eWxlLm9wYWNpdHk9
M0QxLGkuc3R5bGUucG9zaXRpb249M0QiPQphYnNvbHV0ZSIsaX0sZS50b29sdGlwLmNsZWFudXA9
M0RmdW5jdGlvbigpe3ZhciBlPTNEZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUM9Cmxhc3NOYW1lKCJu
dnRvb2x0aXAiKSx0PTNEW107d2hpbGUoZS5sZW5ndGgpdC5wdXNoKGVbMF0pLGVbMF0uc3R5bGUu
dHJhbnNpdD0KaW9uRGVsYXk9M0QiMCAhaW1wb3J0YW50IixlWzBdLnN0eWxlLm9wYWNpdHk9M0Qw
LGVbMF0uY2xhc3NOYW1lPTNEIm52dG9vbHRpPQpwLXBlbmRpbmctcmVtb3ZhbCI7c2V0VGltZW91
dChmdW5jdGlvbigpe3doaWxlKHQubGVuZ3RoKXt2YXIgZT0zRHQucG9wKCk7ZS49CnBhcmVudE5v
ZGUucmVtb3ZlQ2hpbGQoZSl9fSw1MDApfX0oKSxlLnV0aWxzLndpbmRvd1NpemU9M0RmdW5jdGlv
bigpe3ZhciBlPQo9M0R7d2lkdGg6NjQwLGhlaWdodDo0ODB9O3JldHVybiBkb2N1bWVudC5ib2R5
JiZkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoJiY9CihlLndpZHRoPTNEZG9jdW1lbnQuYm9keS5v
ZmZzZXRXaWR0aCxlLmhlaWdodD0zRGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0KT0KLGRvY3Vt
ZW50LmNvbXBhdE1vZGU9M0Q9M0QiQ1NTMUNvbXBhdCImJmRvY3VtZW50LmRvY3VtZW50RWxlbWVu
dCYmZG9jdW1lbnQuPQpkb2N1bWVudEVsZW1lbnQub2Zmc2V0V2lkdGgmJihlLndpZHRoPTNEZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldFdpZHQ9CmgsZS5oZWlnaHQ9M0Rkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0KSx3aW5kb3cuaW5uZXJXaWR0aCYmd2luZD0Kb3cu
aW5uZXJIZWlnaHQmJihlLndpZHRoPTNEd2luZG93LmlubmVyV2lkdGgsZS5oZWlnaHQ9M0R3aW5k
b3cuaW5uZXJIZWlnaHQpPQosZX0sZS51dGlscy53aW5kb3dSZXNpemU9M0RmdW5jdGlvbihlKXtp
ZihlPTNEPTNEPTNEdW5kZWZpbmVkKXJldHVybjt2YXIgdD0KPTNEd2luZG93Lm9ucmVzaXplO3dp
bmRvdy5vbnJlc2l6ZT0zRGZ1bmN0aW9uKG4pe3R5cGVvZiB0PTNEPTNEImZ1bmN0aW9uIiYmPQp0
KG4pLGUobil9fSxlLnV0aWxzLmdldENvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/T2JqZWN0LnA9CnJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCk9M0Q9M0Q9M0QiW29i
amVjdCBBcnJheV0iP2Z1bmN0aW9uKGUsbil7cmV0dXJuIGUuYz0Kb2xvcnx8dFtuJXQubGVuZ3Ro
XX06dDplLnV0aWxzLmRlZmF1bHRDb2xvcigpfSxlLnV0aWxzLmRlZmF1bHRDb2xvcj0zRGZ1bmN0
PQppb24oKXt2YXIgZT0zRGQzLnNjYWxlLmNhdGVnb3J5MjAoKS5yYW5nZSgpO3JldHVybiBmdW5j
dGlvbih0LG4pe3JldHVybiB0LmM9Cm9sb3J8fGVbbiVlLmxlbmd0aF19fSxlLnV0aWxzLmN1c3Rv
bVRoZW1lPTNEZnVuY3Rpb24oZSx0LG4pe3Q9M0R0fHxmdW5jdGlvbj0KKGUpe3JldHVybiBlLmtl
eX0sbj0zRG58fGQzLnNjYWxlLmNhdGVnb3J5MjAoKS5yYW5nZSgpO3ZhciByPTNEbi5sZW5ndGg7
cmV0PQp1cm4gZnVuY3Rpb24oaSxzKXt2YXIgbz0zRHQoaSk7cmV0dXJuIHJ8fChyPTNEbi5sZW5n
dGgpLHR5cGVvZiBlW29dIT0zRCJ1bmQ9CmVmaW5lZCI/dHlwZW9mIGVbb109M0Q9M0QiZnVuY3Rp
b24iP2Vbb10oKTplW29dOm5bLS1yXX19LGUudXRpbHMucGpheD0zRGZ1bj0KY3Rpb24odCxuKXtm
dW5jdGlvbiByKHIpe2QzLmh0bWwocixmdW5jdGlvbihyKXt2YXIgaT0zRGQzLnNlbGVjdChuKS5u
b2RlKCk7PQppLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGQzLnNlbGVjdChyKS5zZWxlY3Qobiku
bm9kZSgpLGkpLGUudXRpbHMucGpheCh0LG49Cil9KX1kMy5zZWxlY3RBbGwodCkub24oImNsaWNr
IixmdW5jdGlvbigpe2hpc3RvcnkucHVzaFN0YXRlKHRoaXMuaHJlZix0aGlzLj0KdGV4dENvbnRl
bnQsdGhpcy5ocmVmKSxyKHRoaXMuaHJlZiksZDMuZXZlbnQucHJldmVudERlZmF1bHQoKX0pLGQz
LnNlbGVjdCh3PQppbmRvdykub24oInBvcHN0YXRlIixmdW5jdGlvbigpe2QzLmV2ZW50LnN0YXRl
JiZyKGQzLmV2ZW50LnN0YXRlKX0pfSxlLnV0aWw9CnMuY2FsY0FwcHJveFRleHRXaWR0aD0zRGZ1
bmN0aW9uKGUpe2lmKHR5cGVvZiBlLnN0eWxlPTNEPTNEImZ1bmN0aW9uIiYmdHlwZT0Kb2YgZS50
ZXh0PTNEPTNEImZ1bmN0aW9uIil7dmFyIHQ9M0RwYXJzZUludChlLnN0eWxlKCJmb250LXNpemUi
KS5yZXBsYWNlKCJwPQp4IiwiIikpLG49M0RlLnRleHQoKS5sZW5ndGg7cmV0dXJuIG4qdCouNX1y
ZXR1cm4gMH0sZS51dGlscy5OYU50b1plcm89M0RmdW49CmN0aW9uKGUpe3JldHVybiB0eXBlb2Yg
ZSE9M0QibnVtYmVyInx8aXNOYU4oZSl8fGU9M0Q9M0Q9M0RudWxsfHxlPTNEPTNEPTNEST0KbmZp
bml0eT8wOmV9LGUudXRpbHMub3B0aW9uc0Z1bmM9M0RmdW5jdGlvbihlKXtyZXR1cm4gZSYmZDMu
bWFwKGUpLmZvckVhY2goPQpmdW5jdGlvbihlLHQpe3R5cGVvZiB0aGlzW2VdPTNEPTNEImZ1bmN0
aW9uIiYmdGhpc1tlXSh0KX0uYmluZCh0aGlzKSksdGhpc309CixlLm1vZGVscy5heGlzPTNEZnVu
Y3Rpb24oKXtmdW5jdGlvbiBtKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIGk9Cj0z
RGQzLnNlbGVjdCh0aGlzKSxtPTNEaS5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1heGlzIikuZGF0
YShbZV0pLGc9M0RtLmVudD0KZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYt
d3JhcCBudi1heGlzIikseT0zRGcuYXBwZW5kKCJnIiksYj0KPTNEbS5zZWxlY3QoImciKTtwIT0z
RD0zRG51bGw/dC50aWNrcyhwKToodC5vcmllbnQoKT0zRD0zRCJ0b3AifHx0Lm9yaWVudCgpPQo9
M0Q9M0QiYm90dG9tIikmJnQudGlja3MoTWF0aC5hYnMocy5yYW5nZSgpWzFdLXMucmFuZ2UoKVsw
XSkvMTAwKSxiLmNhbGwodCk9Cix2PTNEdnx8dC5zY2FsZSgpO3ZhciB3PTNEdC50aWNrRm9ybWF0
KCk7dz0zRD0zRG51bGwmJih3PTNEdi50aWNrRm9ybWF0KCkpOz0KdmFyIEU9M0RiLnNlbGVjdEFs
bCgidGV4dC5udi1heGlzbGFiZWwiKS5kYXRhKFtvfHxudWxsXSk7RS5leGl0KCkucmVtb3ZlKCk7
PQpzd2l0Y2godC5vcmllbnQoKSl7Y2FzZSJ0b3AiOkUuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5h
dHRyKCJjbGFzcyIsIm52LWF4aXM9CmxhYmVsIik7dmFyIFM9M0RzLnJhbmdlKCkubGVuZ3RoPTNE
PTNEMj9zLnJhbmdlKClbMV06cy5yYW5nZSgpW3MucmFuZ2UoKS5sZT0Kbmd0aC0xXSsocy5yYW5n
ZSgpWzFdLXMucmFuZ2UoKVswXSk7RS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIo
InkiPQosMCkuYXR0cigieCIsUy8yKTtpZih1KXt2YXIgeD0zRG0uc2VsZWN0QWxsKCJnLm52LWF4
aXNNYXhNaW4iKS5kYXRhKHMuZG9tYWk9Cm4oKSk7eC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIo
ImNsYXNzIiwibnYtYXhpc01heE1pbiIpLmFwcGVuZCgidGV4dCIpLHguZT0KeGl0KCkucmVtb3Zl
KCkseC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiK3Mo
ZSkrIiwwPQopIn0pLnNlbGVjdCgidGV4dCIpLmF0dHIoImR5IiwiLTAuNWVtIikuYXR0cigieSIs
LXQudGlja1BhZGRpbmcoKSkuYXR0cigidGU9Cnh0LWFuY2hvciIsIm1pZGRsZSIpLnRleHQoZnVu
Y3Rpb24oZSx0KXt2YXIgbj0zRHcoZSk7cmV0dXJuKCIiK24pLm1hdGNoKCJOYT0KTiIpPyIiOm59
KSx4LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIrcy5y
YW5nZSgpW3RdPQorIiwwKSJ9KX1icmVhaztjYXNlImJvdHRvbSI6dmFyIFQ9M0QzNixOPTNEMzAs
Qz0zRGIuc2VsZWN0QWxsKCJnIikuc2VsZWN0KCI9CnRleHQiKTtpZihmJTM2MCl7Qy5lYWNoKGZ1
bmN0aW9uKGUsdCl7dmFyIG49M0R0aGlzLmdldEJCb3goKS53aWR0aDtuPk4mJihOPQo9M0RuKX0p
O3ZhciBrPTNETWF0aC5hYnMoTWF0aC5zaW4oZipNYXRoLlBJLzE4MCkpLFQ9M0Qoaz9rKk46Tikr
MzA7Qy5hdHRyKCI9CnRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0LG4pe3JldHVybiJyb3RhdGUoIitm
KyIgMCwwKSJ9KS5zdHlsZSgidGV4dC1hbmNob3IiLD0KZiUzNjA+MD8ic3RhcnQiOiJlbmQiKX1F
LmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudi1heGlzbGFiZWwiPQopO3Zh
ciBTPTNEcy5yYW5nZSgpLmxlbmd0aD0zRD0zRDI/cy5yYW5nZSgpWzFdOnMucmFuZ2UoKVtzLnJh
bmdlKCkubGVuZ3RoLTE9Cl0rKHMucmFuZ2UoKVsxXS1zLnJhbmdlKClbMF0pO0UuYXR0cigidGV4
dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJ5IixUKS5hdD0KdHIoIngiLFMvMik7aWYodSl7dmFy
IHg9M0RtLnNlbGVjdEFsbCgiZy5udi1heGlzTWF4TWluIikuZGF0YShbcy5kb21haW4oKVswPQpd
LHMuZG9tYWluKClbcy5kb21haW4oKS5sZW5ndGgtMV1dKTt4LmVudGVyKCkuYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJudi09CmF4aXNNYXhNaW4iKS5hcHBlbmQoInRleHQiKSx4LmV4aXQoKS5y
ZW1vdmUoKSx4LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZT0KLHQpe3JldHVybiJ0cmFuc2xh
dGUoIisocyhlKSsoaD9zLnJhbmdlQmFuZCgpLzI6MCkpKyIsMCkifSkuc2VsZWN0KCJ0ZXh0Iiku
PQphdHRyKCJkeSIsIi43MWVtIikuYXR0cigieSIsdC50aWNrUGFkZGluZygpKS5hdHRyKCJ0cmFu
c2Zvcm0iLGZ1bmN0aW9uKGUsdCw9Cm4pe3JldHVybiJyb3RhdGUoIitmKyIgMCwwKSJ9KS5zdHls
ZSgidGV4dC1hbmNob3IiLGY/ZiUzNjA+MD8ic3RhcnQiOiJlbmQiOj0KIm1pZGRsZSIpLnRleHQo
ZnVuY3Rpb24oZSx0KXt2YXIgbj0zRHcoZSk7cmV0dXJuKCIiK24pLm1hdGNoKCJOYU4iKT8iIjpu
fSksPQp4LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIr
KHMoZSkrKGg/cy5yYW5nZUJhbmQoKS89CjI6MCkpKyIsMCkifSl9YyYmQy5hdHRyKCJ0cmFuc2Zv
cm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgwLCIrKHQlMj0KPTNEPTNEMD8iMCI6
IjEyIikrIikifSk7YnJlYWs7Y2FzZSJyaWdodCI6RS5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0
dHIoImNsPQphc3MiLCJudi1heGlzbGFiZWwiKSxFLnN0eWxlKCJ0ZXh0LWFuY2hvciIsbD8ibWlk
ZGxlIjoiYmVnaW4iKS5hdHRyKCJ0cmFuc2Y9Cm9ybSIsbD8icm90YXRlKDkwKSI6IiIpLmF0dHIo
InkiLGw/LU1hdGgubWF4KG4ucmlnaHQscikrMTI6LTEwKS5hdHRyKCJ4IixsPz0Kcy5yYW5nZSgp
WzBdLzI6dC50aWNrUGFkZGluZygpKTtpZih1KXt2YXIgeD0zRG0uc2VsZWN0QWxsKCJnLm52LWF4
aXNNYXhNaW4iPQopLmRhdGEocy5kb21haW4oKSk7eC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIo
ImNsYXNzIiwibnYtYXhpc01heE1pbiIpLmFwcGU9Cm5kKCJ0ZXh0Iikuc3R5bGUoIm9wYWNpdHki
LDApLHguZXhpdCgpLnJlbW92ZSgpLHguYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbj0KKGUsdCl7
cmV0dXJuInRyYW5zbGF0ZSgwLCIrcyhlKSsiKSJ9KS5zZWxlY3QoInRleHQiKS5hdHRyKCJkeSIs
Ii4zMmVtIikuYXR0PQpyKCJ5IiwwKS5hdHRyKCJ4Iix0LnRpY2tQYWRkaW5nKCkpLnN0eWxlKCJ0
ZXh0LWFuY2hvciIsInN0YXJ0IikudGV4dChmdW5jdGk9Cm9uKGUsdCl7dmFyIG49M0R3KGUpO3Jl
dHVybigiIituKS5tYXRjaCgiTmFOIik/IiI6bn0pLHguYXR0cigidHJhbnNmb3JtIixmdT0KbmN0
aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgwLCIrcy5yYW5nZSgpW3RdKyIpIn0pLnNlbGVjdCgi
dGV4dCIpLnN0eWxlKCJvPQpwYWNpdHkiLDEpfWJyZWFrO2Nhc2UibGVmdCI6RS5lbnRlcigpLmFw
cGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnYtYXhpc2w9CmFiZWwiKSxFLnN0eWxlKCJ0ZXh0
LWFuY2hvciIsbD8ibWlkZGxlIjoiZW5kIikuYXR0cigidHJhbnNmb3JtIixsPyJyb3RhdGUoLT0K
OTApIjoiIikuYXR0cigieSIsbD8tTWF0aC5tYXgobi5sZWZ0LHIpK2Q6LTEwKS5hdHRyKCJ4Iixs
Py1zLnJhbmdlKClbMF0vMjotPQp0LnRpY2tQYWRkaW5nKCkpO2lmKHUpe3ZhciB4PTNEbS5zZWxl
Y3RBbGwoImcubnYtYXhpc01heE1pbiIpLmRhdGEocy5kb21haW49CigpKTt4LmVudGVyKCkuYXBw
ZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1heGlzTWF4TWluIikuYXBwZW5kKCJ0ZXh0Iikuc3R5
bD0KZSgib3BhY2l0eSIsMCkseC5leGl0KCkucmVtb3ZlKCkseC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1
bmN0aW9uKGUsdCl7cmV0dXJuInRyPQphbnNsYXRlKDAsIit2KGUpKyIpIn0pLnNlbGVjdCgidGV4
dCIpLmF0dHIoImR5IiwiLjMyZW0iKS5hdHRyKCJ5IiwwKS5hdHRyKCI9CngiLC10LnRpY2tQYWRk
aW5nKCkpLmF0dHIoInRleHQtYW5jaG9yIiwiZW5kIikudGV4dChmdW5jdGlvbihlLHQpe3ZhciBu
PTNEdz0KKGUpO3JldHVybigiIituKS5tYXRjaCgiTmFOIik/IiI6bn0pLHguYXR0cigidHJhbnNm
b3JtIixmdW5jdGlvbihlLHQpe3JldHVyPQpuInRyYW5zbGF0ZSgwLCIrcy5yYW5nZSgpW3RdKyIp
In0pLnNlbGVjdCgidGV4dCIpLnN0eWxlKCJvcGFjaXR5IiwxKX19RS50ZXg9CnQoZnVuY3Rpb24o
ZSl7cmV0dXJuIGV9KSx1JiYodC5vcmllbnQoKT0zRD0zRD0zRCJsZWZ0Inx8dC5vcmllbnQoKT0z
RD0zRD0zRD0KInJpZ2h0IikmJihiLnNlbGVjdEFsbCgiZyIpLmVhY2goZnVuY3Rpb24oZSx0KXtk
My5zZWxlY3QodGhpcykuc2VsZWN0KCJ0ZXh0PQoiKS5hdHRyKCJvcGFjaXR5IiwxKTtpZihzKGUp
PHMucmFuZ2UoKVsxXSsxMHx8cyhlKT5zLnJhbmdlKClbMF0tMTApKGU+MWUtMTA9Cnx8ZTwtMWUt
MTApJiZkMy5zZWxlY3QodGhpcykuYXR0cigib3BhY2l0eSIsMCksZDMuc2VsZWN0KHRoaXMpLnNl
bGVjdCgidGV4dD0KIikuYXR0cigib3BhY2l0eSIsMCl9KSxzLmRvbWFpbigpWzBdPTNEPTNEcy5k
b21haW4oKVsxXSYmcy5kb21haW4oKVswXT0zRD0KPTNEMCYmbS5zZWxlY3RBbGwoImcubnYtYXhp
c01heE1pbiIpLnN0eWxlKCJvcGFjaXR5IixmdW5jdGlvbihlLHQpe3JldHVybiB0PQo/MDoxfSkp
O2lmKHUmJih0Lm9yaWVudCgpPTNEPTNEPTNEInRvcCJ8fHQub3JpZW50KCk9M0Q9M0Q9M0QiYm90
dG9tIikpe3ZhciA9Ckw9M0RbXTttLnNlbGVjdEFsbCgiZy5udi1heGlzTWF4TWluIikuZWFjaChm
dW5jdGlvbihlLHQpe3RyeXt0P0wucHVzaChzKGUpLT0KdGhpcy5nZXRCQm94KCkud2lkdGgtNCk6
TC5wdXNoKHMoZSkrdGhpcy5nZXRCQm94KCkud2lkdGgrNCl9Y2F0Y2gobil7dD9MLnB1PQpzaChz
KGUpLTQpOkwucHVzaChzKGUpKzQpfX0pLGIuc2VsZWN0QWxsKCJnIikuZWFjaChmdW5jdGlvbihl
LHQpe2lmKHMoZSk8TFs9CjBdfHxzKGUpPkxbMV0pZT4xZS0xMHx8ZTwtMWUtMTA/ZDMuc2VsZWN0
KHRoaXMpLnJlbW92ZSgpOmQzLnNlbGVjdCh0aGlzKS5zZT0KbGVjdCgidGV4dCIpLnJlbW92ZSgp
fSl9YSYmYi5zZWxlY3RBbGwoIi50aWNrIikuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFwPQph
cnNlRmxvYXQoTWF0aC5yb3VuZChlLl9fZGF0YV9fKjFlNSkvMWU2KSYmZS5fX2RhdGFfXyE9M0Q9
M0R1bmRlZmluZWR9KS5jbGE9CnNzZWQoInplcm8iLCEwKSx2PTNEcy5jb3B5KCl9KSxtfXZhciB0
PTNEZDMuc3ZnLmF4aXMoKSxuPTNEe3RvcDowLHJpZ2h0OjAsYj0Kb3R0b206MCxsZWZ0OjB9LHI9
M0Q3NSxpPTNENjAscz0zRGQzLnNjYWxlLmxpbmVhcigpLG89M0RudWxsLHU9M0QhMCxhPTNEITAs
PQpmPTNEMCxsPTNEITAsYz0zRCExLGg9M0QhMSxwPTNEbnVsbCxkPTNEMTI7dC5zY2FsZShzKS5v
cmllbnQoImJvdHRvbSIpLnRpY2s9CkZvcm1hdChmdW5jdGlvbihlKXtyZXR1cm4gZX0pO3ZhciB2
O3JldHVybiBtLmF4aXM9M0R0LGQzLnJlYmluZChtLHQsIm9yaWVudD0KIiwidGlja1ZhbHVlcyIs
InRpY2tTdWJkaXZpZGUiLCJ0aWNrU2l6ZSIsInRpY2tQYWRkaW5nIiwidGlja0Zvcm1hdCIpLGQz
LnJlPQpiaW5kKG0scywiZG9tYWluIiwicmFuZ2UiLCJyYW5nZUJhbmQiLCJyYW5nZUJhbmRzIiks
bS5vcHRpb25zPTNEZS51dGlscy5vcHQ9CmlvbnNGdW5jLmJpbmQobSksbS5tYXJnaW49M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obi50b3A9M0R0eT0KcGVvZiBlLnRvcCE9
M0QidW5kZWZpbmVkIj9lLnRvcDpuLnRvcCxuLnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVu
ZGVmaW5lPQpkIj9lLnJpZ2h0Om4ucmlnaHQsbi5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNE
InVuZGVmaW5lZCI/ZS5ib3R0b206bi5ib3Q9CnRvbSxuLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0z
RCJ1bmRlZmluZWQiP2UubGVmdDpuLmxlZnQsbSk6bn0sbS53aWR0aD0zRGZ1bj0KY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLG0pOnJ9LG0udGlja3M9M0RmdW5jdGlvbihl
KXtyZXR1cm4gPQphcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxtKTpwfSxtLmhlaWdodD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Q9Cmg/KGk9M0RlLG0pOml9LG0uYXhpc0xhYmVs
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RlLG0pOj0Kb30sbS5z
aG93TWF4TWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RlLG0p
OnV9LG0uaGlnaGxpPQpnaHRaZXJvPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGE9M0RlLG0pOmF9LG0uc2NhbGU9M0RmdW5jdGk9Cm9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhzPTNEZSx0LnNjYWxlKHMpLGg9M0R0eXBlb2Ygcy5yYW5nZUJhbmRzPTNEPQo9M0Qi
ZnVuY3Rpb24iLGQzLnJlYmluZChtLHMsImRvbWFpbiIsInJhbmdlIiwicmFuZ2VCYW5kIiwicmFu
Z2VCYW5kcyIpLG0pOnM9Cn0sbS5yb3RhdGVZTGFiZWw9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8obD0zRGUsbSk6bH0sbS5yb3RhdD0KZUxhYmVscz0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSxtKTpmfSxtLnN0YWdnZXJMYWJlbHM9Cj0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSxtKTpjfSxtLmF4aXNM
YWJlbERpc3RhbmNlPTNEZj0KdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0z
RGUsbSk6ZH0sbX0sZS5tb2RlbHMuaGlzdG9yaWNhbEJhcj0KPTNEZnVuY3Rpb24oKXtmdW5jdGlv
biB3KEUpe3JldHVybiBFLmVhY2goZnVuY3Rpb24odyl7dmFyIEU9M0RuLXQubGVmdC10LnJpPQpn
aHQsUz0zRHItdC50b3AtdC5ib3R0b20sVD0zRGQzLnNlbGVjdCh0aGlzKTtzLmRvbWFpbihkfHxk
My5leHRlbnQod1swXS52YWw9CnVlcy5tYXAodSkuY29uY2F0KGYpKSksYz9zLnJhbmdlKG18fFtF
Ki41L3dbMF0udmFsdWVzLmxlbmd0aCxFKih3WzBdLnZhbHVlcz0KLmxlbmd0aC0uNSkvd1swXS52
YWx1ZXMubGVuZ3RoXSk6cy5yYW5nZShtfHxbMCxFXSksby5kb21haW4odnx8ZDMuZXh0ZW50KHdb
PQowXS52YWx1ZXMubWFwKGEpLmNvbmNhdChsKSkpLnJhbmdlKGd8fFtTLDBdKSxzLmRvbWFpbigp
WzBdPTNEPTNEPTNEcy5kb21haW49CigpWzFdJiYocy5kb21haW4oKVswXT9zLmRvbWFpbihbcy5k
b21haW4oKVswXS1zLmRvbWFpbigpWzBdKi4wMSxzLmRvbWFpbigpWz0KMV0rcy5kb21haW4oKVsx
XSouMDFdKTpzLmRvbWFpbihbLTEsMV0pKSxvLmRvbWFpbigpWzBdPTNEPTNEPTNEby5kb21haW4o
KVsxPQpdJiYoby5kb21haW4oKVswXT9vLmRvbWFpbihbby5kb21haW4oKVswXStvLmRvbWFpbigp
WzBdKi4wMSxvLmRvbWFpbigpWzFdLW89Ci5kb21haW4oKVsxXSouMDFdKTpvLmRvbWFpbihbLTEs
MV0pKTt2YXIgTj0zRFQuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtaGlzdD0Kb3JpY2FsQmFyLSIr
aSkuZGF0YShbd1swXS52YWx1ZXNdKSxDPTNETi5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNs
YXNzIiwiPQpudmQzIG52LXdyYXAgbnYtaGlzdG9yaWNhbEJhci0iK2kpLGs9M0RDLmFwcGVuZCgi
ZGVmcyIpLEw9M0RDLmFwcGVuZCgiZyIpLEE9Cj0zRE4uc2VsZWN0KCJnIik7TC5hcHBlbmQoImci
KS5hdHRyKCJjbGFzcyIsIm52LWJhcnMiKSxOLmF0dHIoInRyYW5zZm9ybSIsIj0KdHJhbnNsYXRl
KCIrdC5sZWZ0KyIsIit0LnRvcCsiKSIpLFQub24oImNsaWNrIixmdW5jdGlvbihlLHQpe3kuY2hh
cnRDbGljayh7PQpkYXRhOmUsaW5kZXg6dCxwb3M6ZDMuZXZlbnQsaWQ6aX0pfSksay5hcHBlbmQo
ImNsaXBQYXRoIikuYXR0cigiaWQiLCJudi1jaGE9CnJ0LWNsaXAtcGF0aC0iK2kpLmFwcGVuZCgi
cmVjdCIpLE4uc2VsZWN0KCIjbnYtY2hhcnQtY2xpcC1wYXRoLSIraSsiIHJlY3QiKT0KLmF0dHIo
IndpZHRoIixFKS5hdHRyKCJoZWlnaHQiLFMpLEEuYXR0cigiY2xpcC1wYXRoIixoPyJ1cmwoI252
LWNoYXJ0LWNsaXAtPQpwYXRoLSIraSsiKSI6IiIpO3ZhciBPPTNETi5zZWxlY3QoIi5udi1iYXJz
Iikuc2VsZWN0QWxsKCIubnYtYmFyIikuZGF0YShmdW49CmN0aW9uKGUpe3JldHVybiBlfSxmdW5j
dGlvbihlLHQpe3JldHVybiB1KGUsdCl9KTtPLmV4aXQoKS5yZW1vdmUoKTt2YXIgTT0zRD0KTy5l
bnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLDApLmF0dHIoInkiLGZ1bmN0aW9uKHQsbil7
cmV0dXJuIGUudXRpbHMuPQpOYU50b1plcm8obyhNYXRoLm1heCgwLGEodCxuKSkpKX0pLmF0dHIo
ImhlaWdodCIsZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGk9CmxzLk5hTnRvWmVybyhNYXRoLmFi
cyhvKGEodCxuKSktbygwKSkpfSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldD0K
dXJuInRyYW5zbGF0ZSgiKyhzKHUoZSx0KSktRS93WzBdLnZhbHVlcy5sZW5ndGgqLjQ1KSsiLDAp
In0pLm9uKCJtb3VzZW92ZXIiPQosZnVuY3Rpb24oZSx0KXtpZighYilyZXR1cm47ZDMuc2VsZWN0
KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMCkseS5lbGVtZW50TW89CnVzZW92ZXIoe3BvaW50OmUs
c2VyaWVzOndbMF0scG9zOltzKHUoZSx0KSksbyhhKGUsdCkpXSxwb2ludEluZGV4OnQsc2VyaWVz
ST0KbmRleDowLGU6ZDMuZXZlbnR9KX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oZSx0KXtpZigh
YilyZXR1cm47ZDMuc2VsZWN0KHRoPQppcykuY2xhc3NlZCgiaG92ZXIiLCExKSx5LmVsZW1lbnRN
b3VzZW91dCh7cG9pbnQ6ZSxzZXJpZXM6d1swXSxwb2ludEluZGV4OnQ9CixzZXJpZXNJbmRleDow
LGU6ZDMuZXZlbnR9KX0pLm9uKCJjbGljayIsZnVuY3Rpb24oZSx0KXtpZighYilyZXR1cm47eS5l
bGVtZT0KbnRDbGljayh7dmFsdWU6YShlLHQpLGRhdGE6ZSxpbmRleDp0LHBvczpbcyh1KGUsdCkp
LG8oYShlLHQpKV0sZTpkMy5ldmVudCxpPQpkOml9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24o
KX0pLm9uKCJkYmxjbGljayIsZnVuY3Rpb24oZSx0KXtpZighYilyZXR1cm49Cjt5LmVsZW1lbnRE
YmxDbGljayh7dmFsdWU6YShlLHQpLGRhdGE6ZSxpbmRleDp0LHBvczpbcyh1KGUsdCkpLG8oYShl
LHQpKV0sZT0KOmQzLmV2ZW50LGlkOml9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0pO08u
YXR0cigiZmlsbCIsZnVuY3Rpb24oZSx0KXtyPQpldHVybiBwKGUsdCl9KS5hdHRyKCJjbGFzcyIs
ZnVuY3Rpb24oZSx0LG4pe3JldHVybihhKGUsdCk8MD8ibnYtYmFyIG5lZ2F0aXY9CmUiOiJudi1i
YXIgcG9zaXRpdmUiKSsiIG52LWJhci0iK24rIi0iK3R9KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0
aW9uKGUsdCl7cj0KZXR1cm4idHJhbnNsYXRlKCIrKHModShlLHQpKS1FL3dbMF0udmFsdWVzLmxl
bmd0aCouNDUpKyIsMCkifSkuYXR0cigid2lkdGgiPQosRS93WzBdLnZhbHVlcy5sZW5ndGgqLjkp
LE8uYXR0cigieSIsZnVuY3Rpb24odCxuKXt2YXIgcj0zRGEodCxuKTwwP28oMCk6byg9CjApLW8o
YSh0LG4pKTwxP28oMCktMTpvKGEodCxuKSk7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKHIpfSku
YXR0cigiaGVpZ2h0Ij0KLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKE1h
dGgubWF4KE1hdGguYWJzKG8oYSh0LG4pKS1vKDApKSwxPQopKX0pfSksd312YXIgdD0zRHt0b3A6
MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0sbj0zRDk2MCxyPTNENTAwLGk9M0RNYXRoLmY9Cmxv
b3IoTWF0aC5yYW5kb20oKSoxZTQpLHM9M0RkMy5zY2FsZS5saW5lYXIoKSxvPTNEZDMuc2NhbGUu
bGluZWFyKCksdT0zRGZ1bj0KY3Rpb24oZSl7cmV0dXJuIGUueH0sYT0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBlLnl9LGY9M0RbXSxsPTNEWzBdLGM9M0QhMSxoPTNEPQohMCxwPTNEZS51dGlscy5kZWZh
dWx0Q29sb3IoKSxkLHYsbSxnLHk9M0RkMy5kaXNwYXRjaCgiY2hhcnRDbGljayIsImVsZW1lbnQ9
CkNsaWNrIiwiZWxlbWVudERibENsaWNrIiwiZWxlbWVudE1vdXNlb3ZlciIsImVsZW1lbnRNb3Vz
ZW91dCIpLGI9M0QhMDtyZXR1cj0KbiB3LmhpZ2hsaWdodFBvaW50PTNEZnVuY3Rpb24oZSx0KXtk
My5zZWxlY3QoIi5udi1oaXN0b3JpY2FsQmFyLSIraSkuc2VsZWN0PQooIi5udi1iYXJzIC5udi1i
YXItMC0iK2UpLmNsYXNzZWQoImhvdmVyIix0KX0sdy5jbGVhckhpZ2hsaWdodHM9M0RmdW5jdGlv
big9Cil7ZDMuc2VsZWN0KCIubnYtaGlzdG9yaWNhbEJhci0iK2kpLnNlbGVjdCgiLm52LWJhcnMg
Lm52LWJhci5ob3ZlciIpLmNsYXNzZT0KZCgiaG92ZXIiLCExKX0sdy5kaXNwYXRjaD0zRHksdy5v
cHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKHcpLHcueD0KPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RlLHcpOnV9LHcueT0zRGZ1bmN0aW9uKGUpe3Jl
dHVyPQpuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLHcpOmF9LHcubWFyZ2luPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW49Cmd0aD8odC50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVu
ZGVmaW5lZCI/ZS50b3A6dC50b3AsdC5yaWdodD0zRHR5cGVvZiBlLnJpZz0KaHQhPTNEInVuZGVm
aW5lZCI/ZS5yaWdodDp0LnJpZ2h0LHQuYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRl
ZmluZWQiPQo/ZS5ib3R0b206dC5ib3R0b20sdC5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5k
ZWZpbmVkIj9lLmxlZnQ6dC5sZWZ0LHcpOnQ9Cn0sdy53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhuPTNEZSx3KTpufSx3LmhlaWdodD0zRGZ1bj0KY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLHcpOnJ9LHcueFNjYWxlPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuPQogYXJndW1lbnRzLmxlbmd0aD8ocz0zRGUsdyk6c30sdy55U2NhbGU9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmc9CnRoPyhvPTNEZSx3KTpvfSx3LnhEb21haW49
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGUsdyk6ZD0KfSx3LnlE
b21haW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj0zRGUsdyk6dn0s
dy54UmFuZ2U9M0RmPQp1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNEZSx3
KTptfSx3LnlSYW5nZT0zRGZ1bmN0aW9uKGUpe3JldHU9CnJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9
M0RlLHcpOmd9LHcuZm9yY2VYPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZT0Kbmd0
aD8oZj0zRGUsdyk6Zn0sdy5mb3JjZVk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8obD0zRGUsdyk6PQpsfSx3LnBhZERhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oYz0zRGUsdyk6Y30sdy5jbGlwRWRnZT0KPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLHcpOmh9LHcuY29sb3I9M0RmdW5jdGlvbih0KXtyPQpl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZS51dGlscy5nZXRDb2xvcih0KSx3KTpwfSx3Lmlk
PTNEZnVuY3Rpb24oZSl7cmU9CnR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUsdyk6aX0sdy5p
bnRlcmFjdGl2ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bT0KZW50cy5sZW5ndGg/KGI9M0Qh
MSx3KTpifSx3fSxlLm1vZGVscy5idWxsZXQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIG0oZSl7cmV0
PQp1cm4gZS5lYWNoKGZ1bmN0aW9uKGUsbil7dmFyIHA9M0RjLXQubGVmdC10LnJpZ2h0LG09M0Ro
LXQudG9wLXQuYm90dG9tLGc9M0Q9CmQzLnNlbGVjdCh0aGlzKSx5PTNEaS5jYWxsKHRoaXMsZSxu
KS5zbGljZSgpLnNvcnQoZDMuZGVzY2VuZGluZyksYj0zRHMuY2FsbD0KKHRoaXMsZSxuKS5zbGlj
ZSgpLnNvcnQoZDMuZGVzY2VuZGluZyksdz0zRG8uY2FsbCh0aGlzLGUsbikuc2xpY2UoKS5zb3J0
KGQzPQouZGVzY2VuZGluZyksRT0zRHUuY2FsbCh0aGlzLGUsbikuc2xpY2UoKSxTPTNEYS5jYWxs
KHRoaXMsZSxuKS5zbGljZSgpLHg9M0Q9CmYuY2FsbCh0aGlzLGUsbikuc2xpY2UoKSxUPTNEZDMu
c2NhbGUubGluZWFyKCkuZG9tYWluKGQzLmV4dGVudChkMy5tZXJnZShbbD0KLHldKSkpLnJhbmdl
KHI/W3AsMF06WzAscF0pLE49M0R0aGlzLl9fY2hhcnRfX3x8ZDMuc2NhbGUubGluZWFyKCkuZG9t
YWluKFswPQosSW5maW5pdHldKS5yYW5nZShULnJhbmdlKCkpO3RoaXMuX19jaGFydF9fPTNEVDt2
YXIgQz0zRGQzLm1pbih5KSxrPTNEZDMubWE9CngoeSksTD0zRHlbMV0sQT0zRGcuc2VsZWN0QWxs
KCJnLm52LXdyYXAubnYtYnVsbGV0IikuZGF0YShbZV0pLE89M0RBLmVudGVyKD0KKS5hcHBlbmQo
ImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1idWxsZXQiKSxNPTNETy5hcHBlbmQo
ImciKSxfPTNEPQpBLnNlbGVjdCgiZyIpO00uYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJu
di1yYW5nZSBudi1yYW5nZU1heCIpLE0uYXBwZW49CmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm52
LXJhbmdlIG52LXJhbmdlQXZnIiksTS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcz0KIiwibnYt
cmFuZ2UgbnYtcmFuZ2VNaW4iKSxNLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwibnYtbWVh
c3VyZSIpLE0uYXBwPQplbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsIm52LW1hcmtlclRyaWFuZ2xl
IiksQS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGU9CigiK3QubGVmdCsiLCIrdC50b3ArIiki
KTt2YXIgRD0zRGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmFicyhOKGUpLU4oMCkpfSxQPQo9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gTWF0aC5hYnMoVChlKS1UKDApKX0sSD0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBlPDA/TihlKTo9Ck4oMCl9LEI9M0RmdW5jdGlvbihlKXtyZXR1cm4gZTwwP1QoZSk6VCgw
KX07Xy5zZWxlY3QoInJlY3QubnYtcmFuZ2VNYXgiKS5hdD0KdHIoImhlaWdodCIsbSkuYXR0cigi
d2lkdGgiLFAoaz4wP2s6QykpLmF0dHIoIngiLEIoaz4wP2s6QykpLmRhdHVtKGs+MD9rOkMpPQos
Xy5zZWxlY3QoInJlY3QubnYtcmFuZ2VBdmciKS5hdHRyKCJoZWlnaHQiLG0pLmF0dHIoIndpZHRo
IixQKEwpKS5hdHRyKCJ4Iiw9CkIoTCkpLmRhdHVtKEwpLF8uc2VsZWN0KCJyZWN0Lm52LXJhbmdl
TWluIikuYXR0cigiaGVpZ2h0IixtKS5hdHRyKCJ3aWR0aCIsUD0KKGspKS5hdHRyKCJ4IixCKGsp
KS5hdHRyKCJ3aWR0aCIsUChrPjA/QzprKSkuYXR0cigieCIsQihrPjA/QzprKSkuZGF0dW0oaz4w
PQo/QzprKSxfLnNlbGVjdCgicmVjdC5udi1tZWFzdXJlIikuc3R5bGUoImZpbGwiLGQpLmF0dHIo
ImhlaWdodCIsbS8zKS5hdHRyKCI9CnkiLG0vMykuYXR0cigid2lkdGgiLHc8MD9UKDApLVQod1sw
XSk6VCh3WzBdKS1UKDApKS5hdHRyKCJ4IixCKHcpKS5vbigibW91cz0KZW92ZXIiLGZ1bmN0aW9u
KCl7di5lbGVtZW50TW91c2VvdmVyKHt2YWx1ZTp3WzBdLGxhYmVsOnhbMF18fCJDdXJyZW50Iixw
b3M6PQpbVCh3WzBdKSxtLzJdfSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKCl7di5lbGVtZW50
TW91c2VvdXQoe3ZhbHVlOndbMF0sbGE9CmJlbDp4WzBdfHwiQ3VycmVudCJ9KX0pO3ZhciBqPTNE
bS82O2JbMF0/Xy5zZWxlY3RBbGwoInBhdGgubnYtbWFya2VyVHJpYW5nbD0KZSIpLmF0dHIoInRy
YW5zZm9ybSIsZnVuY3Rpb24oZSl7cmV0dXJuInRyYW5zbGF0ZSgiK1QoYlswXSkrIiwiK20vMisi
KSJ9KS5hPQp0dHIoImQiLCJNMCwiK2orIkwiK2orIiwiKyAtaisiICIrIC1qKyIsIisgLWorIloi
KS5vbigibW91c2VvdmVyIixmdW5jdGlvbig9Cil7di5lbGVtZW50TW91c2VvdmVyKHt2YWx1ZTpi
WzBdLGxhYmVsOlNbMF18fCJQcmV2aW91cyIscG9zOltUKGJbMF0pLG0vMl19KT0KfSkub24oIm1v
dXNlb3V0IixmdW5jdGlvbigpe3YuZWxlbWVudE1vdXNlb3V0KHt2YWx1ZTpiWzBdLGxhYmVsOlNb
MF18fCJQcmV2PQppb3VzIn0pfSk6Xy5zZWxlY3RBbGwoInBhdGgubnYtbWFya2VyVHJpYW5nbGUi
KS5yZW1vdmUoKSxBLnNlbGVjdEFsbCgiLm52LXI9CmFuZ2UiKS5vbigibW91c2VvdmVyIixmdW5j
dGlvbihlLHQpe3ZhciBuPTNERVt0XXx8KHQ/dD0zRD0zRDE/Ik1lYW4iOiJNaW5pbT0KdW0iOiJN
YXhpbXVtIik7di5lbGVtZW50TW91c2VvdmVyKHt2YWx1ZTplLGxhYmVsOm4scG9zOltUKGUpLG0v
Ml19KX0pLm9uKCJtPQpvdXNlb3V0IixmdW5jdGlvbihlLHQpe3ZhciBuPTNERVt0XXx8KHQ/dD0z
RD0zRDE/Ik1lYW4iOiJNaW5pbXVtIjoiTWF4aW11bSI9Cik7di5lbGVtZW50TW91c2VvdXQoe3Zh
bHVlOmUsbGFiZWw6bn0pfSl9KSxtfXZhciB0PTNEe3RvcDowLHJpZ2h0OjAsYm90dG9tOj0KMCxs
ZWZ0OjB9LG49M0QibGVmdCIscj0zRCExLGk9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5yYW5nZXN9
LHM9M0RmdW5jdGlvbihlPQope3JldHVybiBlLm1hcmtlcnN9LG89M0RmdW5jdGlvbihlKXtyZXR1
cm4gZS5tZWFzdXJlc30sdT0zRGZ1bmN0aW9uKGUpe3JldHU9CnJuIGUucmFuZ2VMYWJlbHM/ZS5y
YW5nZUxhYmVsczpbXX0sYT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLm1hcmtlckxhYmVscz9lLj0K
bWFya2VyTGFiZWxzOltdfSxmPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUubWVhc3VyZUxhYmVscz9l
Lm1lYXN1cmVMYWJlbHM6W119PQosbD0zRFswXSxjPTNEMzgwLGg9M0QzMCxwPTNEbnVsbCxkPTNE
ZS51dGlscy5nZXRDb2xvcihbIiMxZjc3YjQiXSksdj0zRGQzLmQ9CmlzcGF0Y2goImVsZW1lbnRN
b3VzZW92ZXIiLCJlbGVtZW50TW91c2VvdXQiKTtyZXR1cm4gbS5kaXNwYXRjaD0zRHYsbS5vcHRp
bz0KbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQobSksbS5vcmllbnQ9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlPQpuZ3RoPyhuPTNEZSxyPTNEbj0zRD0zRCJyaWdodCJ8fG49
M0Q9M0QiYm90dG9tIixtKTpufSxtLnJhbmdlcz0zRGZ1bmN0aW9uKGU9Cil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGk9M0RlLG0pOml9LG0ubWFya2Vycz0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bT0KZW50cy5sZW5ndGg/KHM9M0RlLG0pOnN9LG0ubWVhc3VyZXM9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oPQpvPTNEZSxtKTpvfSxtLmZvcmNlWD0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZSxtKTpsfSxtLnc9CmlkdGg9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUsbSk6Y30sbS5oZWlnaHQ9M0Rm
dW5jdGlvbj0KKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxtKTpofSxtLm1hcmdp
bj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1PQptZW50cy5sZW5ndGg/KHQudG9wPTNEdHlwZW9m
IGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQucmlnaHQ9M0R0eXA9CmVvZiBlLnJp
Z2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT0zRHR5cGVvZiBlLmJv
dHRvbSE9M0QidT0KbmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD0zRHR5cGVvZiBl
LmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnQuPQpsZWZ0LG0pOnR9LG0udGlja0Zvcm1hdD0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxtKTpwfSw9Cm0uY29s
b3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGUudXRpbHMuZ2V0
Q29sb3IodCksbSk6ZD0KfSxtfSxlLm1vZGVscy5idWxsZXRDaGFydD0zRGZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gbShlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uPQoobixoKXt2YXIgZz0zRGQzLnNlbGVj
dCh0aGlzKSx5PTNEKGF8fHBhcnNlSW50KGcuc3R5bGUoIndpZHRoIikpfHw5NjApLWkubGU9CmZ0
LWkucmlnaHQsYj0zRGYtaS50b3AtaS5ib3R0b20sdz0zRHRoaXM7bS51cGRhdGU9M0RmdW5jdGlv
bigpe20oZSl9LG0uY29udD0KYWluZXI9M0R0aGlzO2lmKCFufHwhcy5jYWxsKHRoaXMsbixoKSl7
dmFyIEU9M0RnLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhPQp0YShbcF0pO3JldHVybiBFLmVu
dGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHI9
CigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLEUuYXR0cigieCIs
aS5sZWZ0K3kvMikuYXR0cigieT0KIiwxOCtpLnRvcCtiLzIpLnRleHQoZnVuY3Rpb24oZSl7cmV0
dXJuIGV9KSxtfWcuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtPQpvdmUoKTt2YXIgUz0zRHMu
Y2FsbCh0aGlzLG4saCkuc2xpY2UoKS5zb3J0KGQzLmRlc2NlbmRpbmcpLHg9M0RvLmNhbGwodGhp
cyw9Cm4saCkuc2xpY2UoKS5zb3J0KGQzLmRlc2NlbmRpbmcpLFQ9M0R1LmNhbGwodGhpcyxuLGgp
LnNsaWNlKCkuc29ydChkMy5kZXNjZT0KbmRpbmcpLE49M0RnLnNlbGVjdEFsbCgiZy5udi13cmFw
Lm52LWJ1bGxldENoYXJ0IikuZGF0YShbbl0pLEM9M0ROLmVudGVyKCkuPQphcHBlbmQoImciKS5h
dHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1idWxsZXRDaGFydCIpLGs9M0RDLmFwcGVuZCgi
ZyIpLEw9Cj0zRE4uc2VsZWN0KCJnIik7ay5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWJ1
bGxldFdyYXAiKSxrLmFwcGVuZCgiZyIpLj0KYXR0cigiY2xhc3MiLCJudi10aXRsZXMiKSxOLmF0
dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2kubGVmdCsiLCIraS50b3ArPQoiKSIpO3ZhciBB
PTNEZDMuc2NhbGUubGluZWFyKCkuZG9tYWluKFswLE1hdGgubWF4KFNbMF0seFswXSxUWzBdKV0p
LnJhbmdlKHI9Cj9beSwwXTpbMCx5XSksTz0zRHRoaXMuX19jaGFydF9ffHxkMy5zY2FsZS5saW5l
YXIoKS5kb21haW4oWzAsSW5maW5pdHldKS5yYT0KbmdlKEEucmFuZ2UoKSk7dGhpcy5fX2NoYXJ0
X189M0RBO3ZhciBNPTNEZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguYWJzKE8oZSktPQpPKDApKX0s
Xz0zRGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmFicyhBKGUpLUEoMCkpfSxEPTNEay5zZWxlY3Qo
Ii5udi10aXRsZXM9CiIpLmFwcGVuZCgiZyIpLmF0dHIoInRleHQtYW5jaG9yIiwiZW5kIikuYXR0
cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKC02LCIrKD0KZi1pLnRvcC1pLmJvdHRvbSkvMisiKSIp
O0QuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudi10aXRsZSIpLnRleHQoZnVuPQpjdGlv
bihlKXtyZXR1cm4gZS50aXRsZX0pLEQuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudi1z
dWJ0aXRsZSIpLmF0dHI9CigiZHkiLCIxZW0iKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlLnN1
YnRpdGxlfSksdC53aWR0aCh5KS5oZWlnaHQoYik7dmFyID0KUD0zREwuc2VsZWN0KCIubnYtYnVs
bGV0V3JhcCIpO2QzLnRyYW5zaXRpb24oUCkuY2FsbCh0KTt2YXIgSD0zRGx8fEEudGlja0ZvPQpy
bWF0KHkvMTAwKSxCPTNETC5zZWxlY3RBbGwoImcubnYtdGljayIpLmRhdGEoQS50aWNrcyh5LzUw
KSxmdW5jdGlvbihlKXtyZXQ9CnVybiB0aGlzLnRleHRDb250ZW50fHxIKGUpfSksaj0zREIuZW50
ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXRpYz0KayIpLmF0dHIoInRyYW5zZm9y
bSIsZnVuY3Rpb24oZSl7cmV0dXJuInRyYW5zbGF0ZSgiK08oZSkrIiwwKSJ9KS5zdHlsZSgib3Bh
PQpjaXR5IiwxZS02KTtqLmFwcGVuZCgibGluZSIpLmF0dHIoInkxIixiKS5hdHRyKCJ5MiIsYio3
LzYpLGouYXBwZW5kKCJ0ZXh0Iik9Ci5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIo
ImR5IiwiMWVtIikuYXR0cigieSIsYio3LzYpLnRleHQoSCk7dmFyID0KRj0zRGQzLnRyYW5zaXRp
b24oQikuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlKXtyZXR1cm4idHJhbnNsYXRlKCIrQShl
KSsiPQosMCkifSkuc3R5bGUoIm9wYWNpdHkiLDEpO0Yuc2VsZWN0KCJsaW5lIikuYXR0cigieTEi
LGIpLmF0dHIoInkyIixiKjcvNiksRi49CnNlbGVjdCgidGV4dCIpLmF0dHIoInkiLGIqNy82KSxk
My50cmFuc2l0aW9uKEIuZXhpdCgpKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bj0KY3Rpb24oZSl7cmV0
dXJuInRyYW5zbGF0ZSgiK0EoZSkrIiwwKSJ9KS5zdHlsZSgib3BhY2l0eSIsMWUtNikucmVtb3Zl
KCksZC5vPQpuKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7ZS5rZXk9M0RuLnRpdGxlLGMmJnYo
ZSx3LnBhcmVudE5vZGUpfSl9KSxkMy50aW09CmVyLmZsdXNoKCksbX12YXIgdD0zRGUubW9kZWxz
LmJ1bGxldCgpLG49M0QibGVmdCIscj0zRCExLGk9M0R7dG9wOjUscmlnaHQ6ND0KMCxib3R0b206
MjAsbGVmdDoxMjB9LHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5yYW5nZXN9LG89M0RmdW5jdGlv
bihlKXtyZXR1PQpybiBlLm1hcmtlcnN9LHU9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5tZWFzdXJl
c30sYT0zRG51bGwsZj0zRDU1LGw9M0RudWxsLGM9Cj0zRCEwLGg9M0RmdW5jdGlvbihlLHQsbixy
LGkpe3JldHVybiI8aDM+Iit0KyI8L2gzPiIrIjxwPiIrbisiPC9wPiJ9LHA9M0QiTj0KbyBEYXRh
IEF2YWlsYWJsZS4iLGQ9M0RkMy5kaXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlkZSIp
LHY9M0RmdW5jdGlvPQpuKHQsbil7dmFyIHI9M0R0LnBvc1swXSsobi5vZmZzZXRMZWZ0fHwwKStp
LmxlZnQscz0zRHQucG9zWzFdKyhuLm9mZnNldFRvcHw9CnwwKStpLnRvcCxvPTNEaCh0LmtleSx0
LmxhYmVsLHQudmFsdWUsdCxtKTtlLnRvb2x0aXAuc2hvdyhbcixzXSxvLHQudmFsdWU8MD0KPyJl
IjoidyIsbnVsbCxuKX07cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9v
bHRpcCIsZnVuY3Rpb24oPQplKXtkLnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWxl
bWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2Q9Ci50b29sdGlwSGlkZShlKX0pLGQu
b24oInRvb2x0aXBIaWRlIixmdW5jdGlvbigpe2MmJmUudG9vbHRpcC5jbGVhbnVwKCl9KSxtLj0K
ZGlzcGF0Y2g9M0RkLG0uYnVsbGV0PTNEdCxkMy5yZWJpbmQobSx0LCJjb2xvciIpLG0ub3B0aW9u
cz0zRGUudXRpbHMub3B0aW9uPQpzRnVuYy5iaW5kKG0pLG0ub3JpZW50PTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49M0RlLHI9M0RuPQo9M0Q9M0QicmlnaHQifHxuPTNE
PTNEImJvdHRvbSIsbSk6bn0sbS5yYW5nZXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnQ9
CnMubGVuZ3RoPyhzPTNEZSxtKTpzfSxtLm1hcmtlcnM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8obz0zRD0KZSxtKTpvfSxtLm1lYXN1cmVzPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RlLG0pOnV9LG0ud2lkPQp0aD0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZSxtKTphfSxtLmhlaWdodD0zRGZ1bmN0aW9u
KGU9Cil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLG0pOmZ9LG0ubWFyZ2luPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZT0KbnRzLmxlbmd0aD8oaS50b3A9M0R0eXBlb2YgZS50b3Ah
PTNEInVuZGVmaW5lZCI/ZS50b3A6aS50b3AsaS5yaWdodD0zRHR5cGVvPQpmIGUucmlnaHQhPTNE
InVuZGVmaW5lZCI/ZS5yaWdodDppLnJpZ2h0LGkuYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0z
RCJ1bmQ9CmVmaW5lZCI/ZS5ib3R0b206aS5ib3R0b20saS5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9
M0QidW5kZWZpbmVkIj9lLmxlZnQ6aS5sZT0KZnQsbSk6aX0sbS50aWNrRm9ybWF0PTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLG0pOmx9LG0uPQp0b29sdGlwcz0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSxtKTpjfSxtLnRvb2x0
aXBDb250ZW49CnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUs
bSk6aH0sbS5ub0RhdGE9M0RmdW5jdGlvbihlKT0Ke3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhw
PTNEZSxtKTpwfSxtfSxlLm1vZGVscy5jdW11bGF0aXZlTGluZUNoYXJ0PTNEZnVuPQpjdGlvbigp
e2Z1bmN0aW9uIEQoYil7cmV0dXJuIGIuZWFjaChmdW5jdGlvbihiKXtmdW5jdGlvbiBJKGUsdCl7
ZDMuc2VsZWN0KEQ9Ci5jb250YWluZXIpLnN0eWxlKCJjdXJzb3IiLCJldy1yZXNpemUiKX1mdW5j
dGlvbiBxKGUsdCl7TS54PTNEZDMuZXZlbnQueCxNLj0KaT0zRE1hdGgucm91bmQoTy5pbnZlcnQo
TS54KSksbnQoKX1mdW5jdGlvbiBSKGUsdCl7ZDMuc2VsZWN0KEQuY29udGFpbmVyKS5zPQp0eWxl
KCJjdXJzb3IiLCJhdXRvIikseC5pbmRleD0zRE0uaSxrLnN0YXRlQ2hhbmdlKHgpfWZ1bmN0aW9u
IG50KCl7dHQuZGF0YSg9CltNXSk7dmFyIGU9M0RELnRyYW5zaXRpb25EdXJhdGlvbigpO0QudHJh
bnNpdGlvbkR1cmF0aW9uKDApLEQudXBkYXRlKCksRC50cj0KYW5zaXRpb25EdXJhdGlvbihlKX12
YXIgTD0zRGQzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJudi1jaGFydC0iK1MsITApLEE9M0R0PQpo
aXMsSD0zRChmfHxwYXJzZUludChMLnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS11LmxlZnQtdS5yaWdo
dCxCPTNEKGx8fHBhcnNlSW49CnQoTC5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXUudG9wLXUuYm90
dG9tO0QudXBkYXRlPTNEZnVuY3Rpb24oKXtMLmNhbGwoRCl9LD0KRC5jb250YWluZXI9M0R0aGlz
LHguZGlzYWJsZWQ9M0RiLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlzYWJsZWR9KTtpZigh
PQpUKXt2YXIgajtUPTNEe307Zm9yKGogaW4geCl4W2pdaW5zdGFuY2VvZiBBcnJheT9UW2pdPTNE
eFtqXS5zbGljZSgwKTpUW2pdPQo9M0R4W2pdfXZhciBGPTNEZDMuYmVoYXZpb3IuZHJhZygpLm9u
KCJkcmFnc3RhcnQiLEkpLm9uKCJkcmFnIixxKS5vbigiZHJhZ2U9Cm5kIixSKTtpZighYnx8IWIu
bGVuZ3RofHwhYi5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLmxlbmd0aH0pLmxl
bj0KZ3RoKXt2YXIgVT0zREwuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShbTl0pO3JldHVy
biBVLmVudGVyKCkuYXBwZW5kKCJ0PQpleHQiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRh
IikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciI9CiwibWlkZGxlIiksVS5h
dHRyKCJ4Iix1LmxlZnQrSC8yKS5hdHRyKCJ5Iix1LnRvcCtCLzIpLnRleHQoZnVuY3Rpb24oZSl7
cmV0dT0Kcm4gZX0pLER9TC5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKSx3PTNEdC54
U2NhbGUoKSxFPTNEdC55U2NhbGUoKTtpPQpmKCF5KXt2YXIgej0zRGIuZmlsdGVyKGZ1bmN0aW9u
KGUpe3JldHVybiFlLmRpc2FibGVkfSkubWFwKGZ1bmN0aW9uKGUsbil7dmE9CnIgcj0zRGQzLmV4
dGVudChlLnZhbHVlcyx0LnkoKSk7cmV0dXJuIHJbMF08LTAuOTUmJihyWzBdPTNELTAuOTUpLFso
clswXS1yWz0KMV0pLygxK3JbMV0pLChyWzFdLXJbMF0pLygxK3JbMF0pXX0pLFc9M0RbZDMubWlu
KHosZnVuY3Rpb24oZSl7cmV0dXJuIGVbMF19PQopLGQzLm1heCh6LGZ1bmN0aW9uKGUpe3JldHVy
biBlWzFdfSldO3QueURvbWFpbihXKX1lbHNlIHQueURvbWFpbihudWxsKTtPLmQ9Cm9tYWluKFsw
LGJbMF0udmFsdWVzLmxlbmd0aC0xXSkucmFuZ2UoWzAsSF0pLmNsYW1wKCEwKTt2YXIgYj0zRFAo
TS5pLGIpLFg9Cj0zRGc/Im5vbmUiOiJhbGwiLFY9M0RMLnNlbGVjdEFsbCgiZy5udi13cmFwLm52
LWN1bXVsYXRpdmVMaW5lIikuZGF0YShbYl0pLD0KJD0zRFYuZW50ZXIoKS5hcHBlbmQoImciKS5h
dHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1jdW11bGF0aXZlTGluZSIpLmFwPQpwZW5kKCJn
IiksSj0zRFYuc2VsZWN0KCJnIik7JC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWludGVy
YWN0aXZlIiksJC49CmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIikuc3R5
bGUoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpLCQuYT0KcHBlbmQoImciKS5hdHRyKCJjbGFzcyIs
Im52LXkgbnYtYXhpcyIpLCQuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1iYWNrPQpncm91
bmQiKSwkLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGluZXNXcmFwIikuc3R5bGUoInBv
aW50ZXItZXZlbnRzIiw9ClgpLCQuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1hdmdMaW5l
c1dyYXAiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJubz0KbmUiKSwkLmFwcGVuZCgiZyIpLmF0
dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpLCQuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiPQos
Im52LWNvbnRyb2xzV3JhcCIpLGMmJihpLndpZHRoKEgpLEouc2VsZWN0KCIubnYtbGVnZW5kV3Jh
cCIpLmRhdHVtKGIpLmNhbGw9CihpKSx1LnRvcCE9M0RpLmhlaWdodCgpJiYodS50b3A9M0RpLmhl
aWdodCgpLEI9M0QobHx8cGFyc2VJbnQoTC5zdHlsZSgiaGVpZz0KaHQiKSl8fDQwMCktdS50b3At
dS5ib3R0b20pLEouc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRy
PQphbnNsYXRlKDAsIisgLXUudG9wKyIpIikpO2lmKG0pe3ZhciBLPTNEW3trZXk6IlJlLXNjYWxl
IHktYXhpcyIsZGlzYWJsZWQ6IXk9Cn1dO3Mud2lkdGgoMTQwKS5jb2xvcihbIiM0NDQiLCIjNDQ0
IiwiIzQ0NCJdKS5yaWdodEFsaWduKCExKS5tYXJnaW4oe3RvcDo1LD0KcmlnaHQ6MCxib3R0b206
NSxsZWZ0OjIwfSksSi5zZWxlY3QoIi5udi1jb250cm9sc1dyYXAiKS5kYXR1bShLKS5hdHRyKCJ0
cmFuPQpzZm9ybSIsInRyYW5zbGF0ZSgwLCIrIC11LnRvcCsiKSIpLmNhbGwocyl9Vi5hdHRyKCJ0
cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIis9CnUubGVmdCsiLCIrdS50b3ArIikiKSxkJiZKLnNlbGVj
dCgiLm52LXkubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbD0KYXRlKCIrSCsiLDAp
Iik7dmFyIFE9M0RiLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS50ZW1wRGlzYWJsZWR9KTtW
LnNlbGVjPQp0KCIudGVtcERpc2FibGVkIikucmVtb3ZlKCksUS5sZW5ndGgmJlYuYXBwZW5kKCJ0
ZXh0IikuYXR0cigiY2xhc3MiLCJ0ZW1wRGk9CnNhYmxlZCIpLmF0dHIoIngiLEgvMikuYXR0cigi
eSIsIi0uNzFlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsImVuZCIpLnRleHQoUT0KLm1hcChmdW5j
dGlvbihlKXtyZXR1cm4gZS5rZXl9KS5qb2luKCIsICIpKyIgdmFsdWVzIGNhbm5vdCBiZSBjYWxj
dWxhdGVkIGZvPQpyIHRoaXMgdGltZSBwZXJpb2QuIiksZyYmKG8ud2lkdGgoSCkuaGVpZ2h0KEIp
Lm1hcmdpbih7bGVmdDp1LmxlZnQsdG9wOnUudG89CnB9KS5zdmdDb250YWluZXIoTCkueFNjYWxl
KHcpLFYuc2VsZWN0KCIubnYtaW50ZXJhY3RpdmUiKS5jYWxsKG8pKSwkLnNlbGVjdD0KKCIubnYt
YmFja2dyb3VuZCIpLmFwcGVuZCgicmVjdCIpLEouc2VsZWN0KCIubnYtYmFja2dyb3VuZCByZWN0
IikuYXR0cigid2lkPQp0aCIsSCkuYXR0cigiaGVpZ2h0IixCKSx0LnkoZnVuY3Rpb24oZSl7cmV0
dXJuIGUuZGlzcGxheS55fSkud2lkdGgoSCkuaGVpZ2g9CnQoQikuY29sb3IoYi5tYXAoZnVuY3Rp
b24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8YShlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKGUsdD0KKXty
ZXR1cm4hYlt0XS5kaXNhYmxlZCYmIWJbdF0udGVtcERpc2FibGVkfSkpO3ZhciBHPTNESi5zZWxl
Y3QoIi5udi1saW5lc1dyPQphcCIpLmRhdHVtKGIuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFl
LmRpc2FibGVkJiYhZS50ZW1wRGlzYWJsZWR9KSk7Ry5jYWw9CmwodCksYi5mb3JFYWNoKGZ1bmN0
aW9uKGUsdCl7ZS5zZXJpZXNJbmRleD0zRHR9KTt2YXIgWT0zRGIuZmlsdGVyKGZ1bmN0aW9uKD0K
ZSl7cmV0dXJuIWUuZGlzYWJsZWQmJiEhQyhlKX0pLFo9M0RKLnNlbGVjdCgiLm52LWF2Z0xpbmVz
V3JhcCIpLnNlbGVjdEFsbCgiPQpsaW5lIikuZGF0YShZLGZ1bmN0aW9uKGUpe3JldHVybiBlLmtl
eX0pLGV0PTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0RFKEMoZSkpO3I9CmV0dXJuIHQ8MD8wOnQ+Qj9C
OnR9O1ouZW50ZXIoKS5hcHBlbmQoImxpbmUiKS5zdHlsZSgic3Ryb2tlLXdpZHRoIiwyKS5zdHls
ZT0KKCJzdHJva2UtZGFzaGFycmF5IiwiMTAsMTAiKS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbihl
LG4pe3JldHVybiB0LmNvbG9yKCkoPQplLGUuc2VyaWVzSW5kZXgpfSkuYXR0cigieDEiLDApLmF0
dHIoIngyIixIKS5hdHRyKCJ5MSIsZXQpLmF0dHIoInkyIixldCksWi49CnN0eWxlKCJzdHJva2Ut
b3BhY2l0eSIsZnVuY3Rpb24oZSl7dmFyIHQ9M0RFKEMoZSkpO3JldHVybiB0PDB8fHQ+Qj8wOjF9
KS5hdD0KdHIoIngxIiwwKS5hdHRyKCJ4MiIsSCkuYXR0cigieTEiLGV0KS5hdHRyKCJ5MiIsZXQp
LFouZXhpdCgpLnJlbW92ZSgpO3ZhciB0PQp0PTNERy5zZWxlY3RBbGwoIi5udi1pbmRleExpbmUi
KS5kYXRhKFtNXSk7dHQuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCI9CmNsYXNzIiwibnYt
aW5kZXhMaW5lIikuYXR0cigid2lkdGgiLDMpLmF0dHIoIngiLC0yKS5hdHRyKCJmaWxsIiwicmVk
IikuYXR0cj0KKCJmaWxsLW9wYWNpdHkiLC41KS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwi
KS5jYWxsKEYpLHR0LmF0dHIoInRyYW5zZm9yPQptIixmdW5jdGlvbihlKXtyZXR1cm4idHJhbnNs
YXRlKCIrTyhlLmkpKyIsMCkifSkuYXR0cigiaGVpZ2h0IixCKSxoJiYobi5zY2E9CmxlKHcpLnRp
Y2tzKE1hdGgubWluKGJbMF0udmFsdWVzLmxlbmd0aCxILzcwKSkudGlja1NpemUoLUIsMCksSi5z
ZWxlY3QoIi5udj0KLXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIr
RS5yYW5nZSgpWzBdKyIpIiksZDMudHJhbnNpdGlvPQpuKEouc2VsZWN0KCIubnYteC5udi1heGlz
IikpLmNhbGwobikpLHAmJihyLnNjYWxlKEUpLnRpY2tzKEIvMzYpLnRpY2tTaXplKC09CkgsMCks
ZDMudHJhbnNpdGlvbihKLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpKS5jYWxsKHIpKSxKLnNlbGVj
dCgiLm52LWJhY2tncj0Kb3VuZCByZWN0Iikub24oImNsaWNrIixmdW5jdGlvbigpe00ueD0zRGQz
Lm1vdXNlKHRoaXMpWzBdLE0uaT0zRE1hdGgucm91bmQoPQpPLmludmVydChNLngpKSx4LmluZGV4
PTNETS5pLGsuc3RhdGVDaGFuZ2UoeCksbnQoKX0pLHQuZGlzcGF0Y2gub24oImVsZW1lbnQ9CkNs
aWNrIixmdW5jdGlvbihlKXtNLmk9M0RlLnBvaW50SW5kZXgsTS54PTNETyhNLmkpLHguaW5kZXg9
M0RNLmksay5zdGF0ZUNoYT0KbmdlKHgpLG50KCl9KSxzLmRpc3BhdGNoLm9uKCJsZWdlbmRDbGlj
ayIsZnVuY3Rpb24oZSx0KXtlLmRpc2FibGVkPTNEIWUuZGlzPQphYmxlZCx5PTNEIWUuZGlzYWJs
ZWQseC5yZXNjYWxlWT0zRHksay5zdGF0ZUNoYW5nZSh4KSxELnVwZGF0ZSgpfSksaS5kaXNwYXQ9
CmNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24oZSl7eC5kaXNhYmxlZD0zRGUuZGlzYWJsZWQs
ay5zdGF0ZUNoYW5nZSh4KSxELj0KdXBkYXRlKCl9KSxvLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91
c2Vtb3ZlIixmdW5jdGlvbihpKXt0LmNsZWFySGlnaGxpZ2h0cygpPQo7dmFyIHMsZixsLGM9M0Rb
XTtiLmZpbHRlcihmdW5jdGlvbihlLHQpe3JldHVybiBlLnNlcmllc0luZGV4PTNEdCwhZS5kaXNh
Ymw9CmVkfSkuZm9yRWFjaChmdW5jdGlvbihuLHIpe2Y9M0RlLmludGVyYWN0aXZlQmlzZWN0KG4u
dmFsdWVzLGkucG9pbnRYVmFsdWUsRD0KLngoKSksdC5oaWdobGlnaHRQb2ludChyLGYsITApO3Zh
ciBvPTNEbi52YWx1ZXNbZl07aWYodHlwZW9mIG89M0Q9M0QidW5kZWZpPQpuZWQiKXJldHVybjt0
eXBlb2Ygcz0zRD0zRCJ1bmRlZmluZWQiJiYocz0zRG8pLHR5cGVvZiBsPTNEPTNEInVuZGVmaW5l
ZCImJig9Cmw9M0RELnhTY2FsZSgpKEQueCgpKG8sZikpKSxjLnB1c2goe2tleTpuLmtleSx2YWx1
ZTpELnkoKShvLGYpLGNvbG9yOmEobixuLj0Kc2VyaWVzSW5kZXgpfSl9KTtpZihjLmxlbmd0aD4y
KXt2YXIgaD0zREQueVNjYWxlKCkuaW52ZXJ0KGkubW91c2VZKSxwPTNETWF0PQpoLmFicyhELnlT
Y2FsZSgpLmRvbWFpbigpWzBdLUQueVNjYWxlKCkuZG9tYWluKClbMV0pLGQ9M0QuMDMqcCxtPTNE
ZS5uZWFyZXM9CnRWYWx1ZUluZGV4KGMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlfSks
aCxkKTttIT0zRD0zRG51bGwmJihjW21dLmhpZz0KaGxpZ2h0PTNEITApfXZhciBnPTNEbi50aWNr
Rm9ybWF0KCkoRC54KCkocyxmKSxmKTtvLnRvb2x0aXAucG9zaXRpb24oe2xlZnQ6PQpsK3UubGVm
dCx0b3A6aS5tb3VzZVkrdS50b3B9KS5jaGFydENvbnRhaW5lcihBLnBhcmVudE5vZGUpLmVuYWJs
ZWQodikudmFsdWU9CkZvcm1hdHRlcihmdW5jdGlvbihlLHQpe3JldHVybiByLnRpY2tGb3JtYXQo
KShlKX0pLmRhdGEoe3ZhbHVlOmcsc2VyaWVzOmN9KT0KKCksby5yZW5kZXJHdWlkZUxpbmUobCl9
KSxvLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQiLGZ1bmN0aW9uKGUpe2sudG9vPQpsdGlw
SGlkZSgpLHQuY2xlYXJIaWdobGlnaHRzKCl9KSxrLm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24o
ZSl7diYmXyhlLEEucGE9CnJlbnROb2RlKX0pLGsub24oImNoYW5nZVN0YXRlIixmdW5jdGlvbihl
KXt0eXBlb2YgZS5kaXNhYmxlZCE9M0QidW5kZWZpbmVkIj0KJiYoYi5mb3JFYWNoKGZ1bmN0aW9u
KHQsbil7dC5kaXNhYmxlZD0zRGUuZGlzYWJsZWRbbl19KSx4LmRpc2FibGVkPTNEZS5kaXNhPQpi
bGVkKSx0eXBlb2YgZS5pbmRleCE9M0QidW5kZWZpbmVkIiYmKE0uaT0zRGUuaW5kZXgsTS54PTNE
TyhNLmkpLHguaW5kZXg9M0Q9CmUuaW5kZXgsdHQuZGF0YShbTV0pKSx0eXBlb2YgZS5yZXNjYWxl
WSE9M0QidW5kZWZpbmVkIiYmKHk9M0RlLnJlc2NhbGVZKSxELj0KdXBkYXRlKCl9KX0pLER9ZnVu
Y3Rpb24gUChlLG4pe3JldHVybiBuLm1hcChmdW5jdGlvbihuLHIpe2lmKCFuLnZhbHVlcylyZXR1
PQpybiBuO3ZhciBpPTNEbi52YWx1ZXNbZV07aWYoaT0zRD0zRG51bGwpcmV0dXJuIG47dmFyIHM9
M0R0LnkoKShpLGUpO3JldHVybiA9CnM8LTAuOTUmJiFBPyhuLnRlbXBEaXNhYmxlZD0zRCEwLG4p
OihuLnRlbXBEaXNhYmxlZD0zRCExLG4udmFsdWVzPTNEbi52YWx1ZT0Kcy5tYXAoZnVuY3Rpb24o
ZSxuKXtyZXR1cm4gZS5kaXNwbGF5PTNEe3k6KHQueSgpKGUsbiktcykvKDErcyl9LGV9KSxuKX0p
fXZhPQpyIHQ9M0RlLm1vZGVscy5saW5lKCksbj0zRGUubW9kZWxzLmF4aXMoKSxyPTNEZS5tb2Rl
bHMuYXhpcygpLGk9M0RlLm1vZGVscy49CmxlZ2VuZCgpLHM9M0RlLm1vZGVscy5sZWdlbmQoKSxv
PTNEZS5pbnRlcmFjdGl2ZUd1aWRlbGluZSgpLHU9M0R7dG9wOjMwLHJpZz0KaHQ6MzAsYm90dG9t
OjUwLGxlZnQ6NjB9LGE9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLGY9M0RudWxsLGw9M0RudWxs
LGM9M0QhPQowLGg9M0QhMCxwPTNEITAsZD0zRCExLHY9M0QhMCxtPTNEITAsZz0zRCExLHk9M0Qh
MCxiPTNEZnVuY3Rpb24oZSx0LG4scixpKXs9CnJldHVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIr
bisiIGF0ICIrdCsiPC9wPiJ9LHcsRSxTPTNEdC5pZCgpLHg9M0R7aW5kZXg6MD0KLHJlc2NhbGVZ
Onl9LFQ9M0RudWxsLE49M0QiTm8gRGF0YSBBdmFpbGFibGUuIixDPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGUuYXZlPQpyYWdlfSxrPTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhp
ZGUiLCJzdGF0ZUNoYW5nZSIsImNoYW5nZVN0YXQ9CmUiKSxMPTNEMCxBPTNEITE7bi5vcmllbnQo
ImJvdHRvbSIpLnRpY2tQYWRkaW5nKDcpLHIub3JpZW50KGQ/InJpZ2h0IjoibGVmdD0KIikscy51
cGRhdGVTdGF0ZSghMSk7dmFyIE89M0RkMy5zY2FsZS5saW5lYXIoKSxNPTNEe2k6MCx4OjB9LF89
M0RmdW5jdGlvbihpPQoscyl7dmFyIG89M0RpLnBvc1swXSsocy5vZmZzZXRMZWZ0fHwwKSx1PTNE
aS5wb3NbMV0rKHMub2Zmc2V0VG9wfHwwKSxhPTNEbi49CnRpY2tGb3JtYXQoKSh0LngoKShpLnBv
aW50LGkucG9pbnRJbmRleCkpLGY9M0RyLnRpY2tGb3JtYXQoKSh0LnkoKShpLnBvaW50LD0KaS5w
b2ludEluZGV4KSksbD0zRGIoaS5zZXJpZXMua2V5LGEsZixpLEQpO2UudG9vbHRpcC5zaG93KFtv
LHVdLGwsbnVsbCxudWxsPQoscyl9O3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2Vv
dmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2U9Ci5wb3NbMF0rdS5sZWZ0LGUucG9z
WzFdK3UudG9wXSxrLnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdT0K
c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7ay50b29sdGlwSGlkZShlKX0pLGsub24oInRvb2x0
aXBIaWRlIixmdW5jdGlvbigpPQp7diYmZS50b29sdGlwLmNsZWFudXAoKX0pLEQuZGlzcGF0Y2g9
M0RrLEQubGluZXM9M0R0LEQubGVnZW5kPTNEaSxELnhBeGlzPQo9M0RuLEQueUF4aXM9M0RyLEQu
aW50ZXJhY3RpdmVMYXllcj0zRG8sZDMucmViaW5kKEQsdCwiZGVmaW5lZCIsImlzQXJlYSIsIng9
CiIsInkiLCJ4U2NhbGUiLCJ5U2NhbGUiLCJzaXplIiwieERvbWFpbiIsInlEb21haW4iLCJ4UmFu
Z2UiLCJ5UmFuZ2UiLCJmb3JjZT0KWCIsImZvcmNlWSIsImludGVyYWN0aXZlIiwiY2xpcEVkZ2Ui
LCJjbGlwVm9yb25vaSIsInVzZVZvcm9ub2kiLCJpZCIpLEQub3B0PQppb25zPTNEZS51dGlscy5v
cHRpb25zRnVuYy5iaW5kKEQpLEQubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy49Cmxlbmd0aD8odS50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6dS50
b3AsdS5yaWdodD0zRHR5cGVvZiBlLj0KcmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp1LnJp
Z2h0LHUuYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluPQplZCI/ZS5ib3R0b206
dS5ib3R0b20sdS5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6dS5s
ZWZ0LEQ9Cik6dX0sRC53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhmPTNEZSxEKTpmfSxELmhlaWdodD0zRD0KZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGw9M0RlLEQpOmx9LEQuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1PQpybiBhcmd1bWVu
dHMubGVuZ3RoPyhhPTNEZS51dGlscy5nZXRDb2xvcih0KSxpLmNvbG9yKGEpLEQpOmF9LEQucmVz
Y2FsZVk9M0Q9CmZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PTNEZSxEKTp5
fSxELnNob3dDb250cm9scz0zRGZ1bmN0aW9uKD0KZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KG09M0RlLEQpOm19LEQudXNlSW50ZXJhY3RpdmVHdWlkZWxpbmU9M0RmdW5jdGlvPQpuKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPTNEZSxlPTNEPTNEPTNEITAmJihELmludGVyYWN0aXZl
KCExKSxELnVzZVY9Cm9yb25vaSghMSkpLEQpOmd9LEQuc2hvd0xlZ2VuZD0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZT0KLEQpOmN9LEQuc2hvd1hBeGlzPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLEQpOmh9LEQuc2hvPQp3WUF4
aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsRCk6cH0sRC5y
aWdodEFsaWduWUF4aXM9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhk
PTNEZSxyLm9yaWVudChlPyJyaWdodCI6ImxlZnQiKSxEKT0KOmR9LEQudG9vbHRpcHM9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj0zRGUsRCk6dn0sRC50b29sdGlwPQpD
b250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9M0RlLEQpOmJ9
LEQuc3RhdGU9M0RmdW5jdGk9Cm9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh4PTNEZSxE
KTp4fSxELmRlZmF1bHRTdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldD0KdXJuIGFyZ3VtZW50cy5sZW5n
dGg/KFQ9M0RlLEQpOlR9LEQubm9EYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
PQplbmd0aD8oTj0zRGUsRCk6Tn0sRC5hdmVyYWdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KEM9M0RlLEQ9Cik6Q30sRC50cmFuc2l0aW9uRHVyYXRpb249M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTD0zRGUsRCk6TD0KfSxELm5vRXJyb3JDaGVj
az0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhBPTNEZSxEKTpBfSxEfSxl
Lm1vPQpkZWxzLmRpc2NyZXRlQmFyPTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBFKGUpe3JldHVybiBl
LmVhY2goZnVuY3Rpb24oZSl7dmFyIGk9Cj0zRG4tdC5sZWZ0LXQucmlnaHQsRT0zRHItdC50b3At
dC5ib3R0b20sUz0zRGQzLnNlbGVjdCh0aGlzKTtlLmZvckVhY2goZnVuYz0KdGlvbihlLHQpe2Uu
dmFsdWVzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5zZXJpZXM9M0R0fSl9KTt2YXIgVD0zRHAmJmQ/
W106ZS5tPQphcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubWFwKGZ1bmN0aW9uKGUsdCl7
cmV0dXJue3g6dShlLHQpLHk6YShlLHQpLHk9CjA6ZS55MH19KX0pO3MuZG9tYWluKHB8fGQzLm1l
cmdlKFQpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS54fSkpLnJhbmdlQmFuZD0Kcyh2fHxbMCxp
XSwuMSksby5kb21haW4oZHx8ZDMuZXh0ZW50KGQzLm1lcmdlKFQpLm1hcChmdW5jdGlvbihlKXty
ZXR1cm4gZS55PQp9KS5jb25jYXQoZikpKSxjP28ucmFuZ2UobXx8W0UtKG8uZG9tYWluKClbMF08
MD8xMjowKSxvLmRvbWFpbigpWzFdPjA/MTI6MF09Cik6by5yYW5nZShtfHxbRSwwXSksYj0zRGJ8
fHMsdz0zRHd8fG8uY29weSgpLnJhbmdlKFtvKDApLG8oMCldKTt2YXIgTj0zRFMucz0KZWxlY3RB
bGwoImcubnYtd3JhcC5udi1kaXNjcmV0ZWJhciIpLmRhdGEoW2VdKSxDPTNETi5lbnRlcigpLmFw
cGVuZCgiZyIpLmF0PQp0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtZGlzY3JldGViYXIiKSxr
PTNEQy5hcHBlbmQoImciKSxMPTNETi5zZWxlY3QoImc9CiIpO2suYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudi1ncm91cHMiKSxOLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKz0KdC5s
ZWZ0KyIsIit0LnRvcCsiKSIpO3ZhciBBPTNETi5zZWxlY3QoIi5udi1ncm91cHMiKS5zZWxlY3RB
bGwoIi5udi1ncm91cCIpPQouZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZX0sZnVuY3Rpb24oZSl7
cmV0dXJuIGUua2V5fSk7QS5lbnRlcigpLmFwcGVuZCgiZyI9Cikuc3R5bGUoInN0cm9rZS1vcGFj
aXR5IiwxZS02KS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwxZS02KSxBLmV4aXQoKS5zdHlsZSgicz0K
dHJva2Utb3BhY2l0eSIsMWUtNikuc3R5bGUoImZpbGwtb3BhY2l0eSIsMWUtNikucmVtb3ZlKCks
QS5hdHRyKCJjbGFzcyIsZnVuPQpjdGlvbihlLHQpe3JldHVybiJudi1ncm91cCBudi1zZXJpZXMt
Iit0fSkuY2xhc3NlZCgiaG92ZXIiLGZ1bmN0aW9uKGUpe3JldHU9CnJuIGUuaG92ZXJ9KSxBLnN0
eWxlKCJzdHJva2Utb3BhY2l0eSIsMSkuc3R5bGUoImZpbGwtb3BhY2l0eSIsLjc1KTt2YXIgTz0z
RD0KQS5zZWxlY3RBbGwoImcubnYtYmFyIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1
ZXN9KTtPLmV4aXQoKS5yZW1vdmUoPQopO3ZhciBNPTNETy5lbnRlcigpLmFwcGVuZCgiZyIpLmF0
dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0LG4pe3JldHVybiJ0cmE9Cm5zbGF0ZSgiKyhzKHUo
ZSx0KSkrcy5yYW5nZUJhbmQoKSouMDUpKyIsICIrbygwKSsiKSJ9KS5vbigibW91c2VvdmVyIixm
dW5jdD0KaW9uKHQsbil7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMCksZy5lbGVt
ZW50TW91c2VvdmVyKHt2YWx1ZTphKHQsPQpuKSxwb2ludDp0LHNlcmllczplW3Quc2VyaWVzXSxw
b3M6W3ModSh0LG4pKStzLnJhbmdlQmFuZCgpKih0LnNlcmllcysuNSkvZS49Cmxlbmd0aCxvKGEo
dCxuKSldLHBvaW50SW5kZXg6bixzZXJpZXNJbmRleDp0LnNlcmllcyxlOmQzLmV2ZW50fSl9KS5v
bigibW91cz0KZW91dCIsZnVuY3Rpb24odCxuKXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgiaG92
ZXIiLCExKSxnLmVsZW1lbnRNb3VzZW91dCh7PQp2YWx1ZTphKHQsbikscG9pbnQ6dCxzZXJpZXM6
ZVt0LnNlcmllc10scG9pbnRJbmRleDpuLHNlcmllc0luZGV4OnQuc2VyaWVzLGU9CjpkMy5ldmVu
dH0pfSkub24oImNsaWNrIixmdW5jdGlvbih0LG4pe2cuZWxlbWVudENsaWNrKHt2YWx1ZTphKHQs
bikscG9pbnQ6dD0KLHNlcmllczplW3Quc2VyaWVzXSxwb3M6W3ModSh0LG4pKStzLnJhbmdlQmFu
ZCgpKih0LnNlcmllcysuNSkvZS5sZW5ndGgsbyhhPQoodCxuKSldLHBvaW50SW5kZXg6bixzZXJp
ZXNJbmRleDp0LnNlcmllcyxlOmQzLmV2ZW50fSksZDMuZXZlbnQuc3RvcFByb3BhZ2E9CnRpb24o
KX0pLm9uKCJkYmxjbGljayIsZnVuY3Rpb24odCxuKXtnLmVsZW1lbnREYmxDbGljayh7dmFsdWU6
YSh0LG4pLHBvaW50Oj0KdCxzZXJpZXM6ZVt0LnNlcmllc10scG9zOltzKHUodCxuKSkrcy5yYW5n
ZUJhbmQoKSoodC5zZXJpZXMrLjUpL2UubGVuZ3RoLG8oPQphKHQsbikpXSxwb2ludEluZGV4Om4s
c2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpkMy5ldmVudH0pLGQzLmV2ZW50LnN0b3BQcm9wYWc9CmF0
aW9uKCl9KTtNLmFwcGVuZCgicmVjdCIpLmF0dHIoImhlaWdodCIsMCkuYXR0cigid2lkdGgiLHMu
cmFuZ2VCYW5kKCkqLjkvZT0KLmxlbmd0aCksYz8oTS5hcHBlbmQoInRleHQiKS5hdHRyKCJ0ZXh0
LWFuY2hvciIsIm1pZGRsZSIpLE8uc2VsZWN0KCJ0ZXh0IikuPQp0ZXh0KGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIGgoYShlLHQpKX0pLmF0dHIoIngiLHMucmFuZ2VCYW5kKCkqLjkvMikuYXR0cigieSI9
CixmdW5jdGlvbihlLHQpe3JldHVybiBhKGUsdCk8MD9vKGEoZSx0KSktbygwKSsxMjotNH0pKTpP
LnNlbGVjdEFsbCgidGV4dCIpLj0KcmVtb3ZlKCksTy5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0
KXtyZXR1cm4gYShlLHQpPDA/Im52LWJhciBuZWdhdGl2ZSI6Im52PQotYmFyIHBvc2l0aXZlIn0p
LnN0eWxlKCJmaWxsIixmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxsKGUsdCl9KS5zdHls
ZSg9CiJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGwoZSx0KX0pLnNlbGVj
dCgicmVjdCIpLmF0dHIoImNsYXNzIj0KLHkpLmF0dHIoIndpZHRoIixzLnJhbmdlQmFuZCgpKi45
L2UubGVuZ3RoKSxPLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0PQope3ZhciBuPTNEcyh1
KGUsdCkpK3MucmFuZ2VCYW5kKCkqLjA1LHI9M0RhKGUsdCk8MD9vKDApOm8oMCktbyhhKGUsdCkp
PDE/byg9CjApLTE6byhhKGUsdCkpO3JldHVybiJ0cmFuc2xhdGUoIituKyIsICIrcisiKSJ9KS5z
ZWxlY3QoInJlY3QiKS5hdHRyKCJoZWlnaD0KdCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5t
YXgoTWF0aC5hYnMobyhhKGUsdCkpLW8oZCYmZFswXXx8MCkpfHwxKX0pLGI9Cj0zRHMuY29weSgp
LHc9M0RvLmNvcHkoKX0pLEV9dmFyIHQ9M0R7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9
LG49M0Q5Nj0KMCxyPTNENTAwLGk9M0RNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMWU0KSxzPTNE
ZDMuc2NhbGUub3JkaW5hbCgpLG89M0RkMy5zPQpjYWxlLmxpbmVhcigpLHU9M0RmdW5jdGlvbihl
KXtyZXR1cm4gZS54fSxhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0sZj0zRFs9CjBdLGw9M0Rl
LnV0aWxzLmRlZmF1bHRDb2xvcigpLGM9M0QhMSxoPTNEZDMuZm9ybWF0KCIsLjJmIikscCxkLHYs
bSxnPTNEZDMuZD0KaXNwYXRjaCgiY2hhcnRDbGljayIsImVsZW1lbnRDbGljayIsImVsZW1lbnRE
YmxDbGljayIsImVsZW1lbnRNb3VzZW92ZXIiLCJlPQpsZW1lbnRNb3VzZW91dCIpLHk9M0QiZGlz
Y3JldGVCYXIiLGIsdztyZXR1cm4gRS5kaXNwYXRjaD0zRGcsRS5vcHRpb25zPTNEZS49CnV0aWxz
Lm9wdGlvbnNGdW5jLmJpbmQoRSksRS54PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHU9M0RlLD0KRSk6dX0sRS55PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGE9M0RlLEUpOmF9LEUubWFyZ2luPTNEZnVuPQpjdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8odC50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A9Cjp0
LnRvcCx0LnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp0LnJp
Z2h0LHQuYm90dG9tPTNEdD0KeXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206
dC5ib3R0b20sdC5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QiPQp1bmRlZmluZWQiP2UubGVmdDp0
LmxlZnQsRSk6dH0sRS53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Q9
Cmg/KG49M0RlLEUpOm59LEUuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHI9M0RlLEUpOnJ9LD0KRS54U2NhbGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8ocz0zRGUsRSk6c30sRS55U2NhbGU9M0RmdW5jPQp0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhvPTNEZSxFKTpvfSxFLnhEb21haW49M0RmdW5jdGlvbihlKXtyZXR1
cm49CiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxFKTpwfSxFLnlEb21haW49M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbj0KZ3RoPyhkPTNEZSxFKTpkfSxFLnhSYW5nZT0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PTNEZSxFKTp2PQp9LEUueVJhbmdlPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09M0RlLEUpOm19LEUuZm9yY2VZ
PTNEZnU9Cm5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUsRSk6Zn0sRS5j
b2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybj0KIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLnV0aWxz
LmdldENvbG9yKHQpLEUpOmx9LEUuaWQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gPQphcmd1bWVudHMu
bGVuZ3RoPyhpPTNEZSxFKTppfSxFLnNob3dWYWx1ZXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmw9CmVuZ3RoPyhjPTNEZSxFKTpjfSxFLnZhbHVlRm9ybWF0PTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9Cj0zRGUsRSk6aH0sRS5yZWN0Q2xhc3M9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT0zRGUsRSk6eX0sRT0KfSxlLm1vZGVs
cy5kaXNjcmV0ZUJhckNoYXJ0PTNEZnVuY3Rpb24oKXtmdW5jdGlvbiB3KGUpe3JldHVybiBlLmVh
Y2goZnVuY3RpPQpvbihlKXt2YXIgdT0zRGQzLnNlbGVjdCh0aGlzKSxwPTNEdGhpcyx5PTNEKHN8
fHBhcnNlSW50KHUuc3R5bGUoIndpZHRoIikpfHw9Cjk2MCktaS5sZWZ0LWkucmlnaHQsRT0zRChv
fHxwYXJzZUludCh1LnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktaS50b3AtaS5ib3R0bz0KbTt3LnVw
ZGF0ZT0zRGZ1bmN0aW9uKCl7Zy5iZWZvcmVVcGRhdGUoKSx1LmNhbGwodyl9LHcuY29udGFpbmVy
PTNEdGhpcztpZighPQplfHwhZS5sZW5ndGh8fCFlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4g
ZS52YWx1ZXMubGVuZ3RofSkubGVuZ3RoKXt2YXIgUz0KPTNEdS5zZWxlY3RBbGwoIi5udi1ub0Rh
dGEiKS5kYXRhKFttXSk7cmV0dXJuIFMuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyPQooImNs
YXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2VtIikuc3R5bGUoInRleHQtYW5j
aG9yIiwibWlkZGxlIik9CixTLmF0dHIoIngiLGkubGVmdCt5LzIpLmF0dHIoInkiLGkudG9wK0Uv
MikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLHd9dT0KLnNlbGVjdEFsbCgiLm52LW5vRGF0
YSIpLnJlbW92ZSgpLGQ9M0R0LnhTY2FsZSgpLHY9M0R0LnlTY2FsZSgpLmNsYW1wKCEwKTt2PQph
ciBUPTNEdS5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1kaXNjcmV0ZUJhcldpdGhBeGVzIikuZGF0
YShbZV0pLE49M0RULmVudGU9CnIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYt
d3JhcCBudi1kaXNjcmV0ZUJhcldpdGhBeGVzIikuYXBwZW5kKD0KImciKSxDPTNETi5hcHBlbmQo
ImRlZnMiKSxrPTNEVC5zZWxlY3QoImciKTtOLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYt
PQp4IG52LWF4aXMiKSxOLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteSBudi1heGlzIiku
YXBwZW5kKCJnIikuYXR0cigiY2w9CmFzcyIsIm52LXplcm9MaW5lIikuYXBwZW5kKCJsaW5lIiks
Ti5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWJhcnNXcmFwIj0KKSxrLmF0dHIoInRyYW5z
Zm9ybSIsInRyYW5zbGF0ZSgiK2kubGVmdCsiLCIraS50b3ArIikiKSxsJiZrLnNlbGVjdCgiLm52
LXkuPQpudi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIreSsiLDApIiksdC53
aWR0aCh5KS5oZWlnaHQoRSk7dmFyIEw9Cj0zRGsuc2VsZWN0KCIubnYtYmFyc1dyYXAiKS5kYXR1
bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKT0KO0wuY2FsbCh0KSxD
LmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIsIm52LXgtbGFiZWwtY2xpcC0iK3QuaWQoKSku
YXBwZW5kPQooInJlY3QiKSxrLnNlbGVjdCgiI252LXgtbGFiZWwtY2xpcC0iK3QuaWQoKSsiIHJl
Y3QiKS5hdHRyKCJ3aWR0aCIsZC5yYW5nZUI9CmFuZCgpKihjPzI6MSkpLmF0dHIoImhlaWdodCIs
MTYpLmF0dHIoIngiLC1kLnJhbmdlQmFuZCgpLyhjPzE6MikpO2lmKGEpe24ucz0KY2FsZShkKS50
aWNrcyh5LzEwMCkudGlja1NpemUoLUUsMCksay5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5hdHRy
KCJ0cmFuc2ZvPQpybSIsInRyYW5zbGF0ZSgwLCIrKHYucmFuZ2UoKVswXSsodC5zaG93VmFsdWVz
KCkmJnYuZG9tYWluKClbMF08MD8xNjowKSkrIik9CiIpLGsuc2VsZWN0KCIubnYteC5udi1heGlz
IikuY2FsbChuKTt2YXIgQT0zRGsuc2VsZWN0KCIubnYteC5udi1heGlzIikuc2VsZT0KY3RBbGwo
ImciKTtjJiZBLnNlbGVjdEFsbCgidGV4dCIpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0
LG4pe3JldHVybiJ0PQpyYW5zbGF0ZSgwLCIrKG4lMj0zRD0zRDA/IjUiOiIxNyIpKyIpIn0pfWYm
JihyLnNjYWxlKHYpLnRpY2tzKEUvMzYpLnRpY2tTaXo9CmUoLXksMCksay5zZWxlY3QoIi5udi15
Lm52LWF4aXMiKS5jYWxsKHIpKSxrLnNlbGVjdCgiLm52LXplcm9MaW5lIGxpbmUiKS5hdD0KdHIo
IngxIiwwKS5hdHRyKCJ4MiIseSkuYXR0cigieTEiLHYoMCkpLmF0dHIoInkyIix2KDApKSxnLm9u
KCJ0b29sdGlwU2hvdyIsPQpmdW5jdGlvbihlKXtoJiZiKGUscC5wYXJlbnROb2RlKX0pfSksd312
YXIgdD0zRGUubW9kZWxzLmRpc2NyZXRlQmFyKCksbj0zRGU9Ci5tb2RlbHMuYXhpcygpLHI9M0Rl
Lm1vZGVscy5heGlzKCksaT0zRHt0b3A6MTUscmlnaHQ6MTAsYm90dG9tOjUwLGxlZnQ6NjB9LD0K
cz0zRG51bGwsbz0zRG51bGwsdT0zRGUudXRpbHMuZ2V0Q29sb3IoKSxhPTNEITAsZj0zRCEwLGw9
M0QhMSxjPTNEITEsaD0zRCEwPQoscD0zRGZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIjxoMz4i
K3QrIjwvaDM+IisiPHA+IituKyI8L3A+In0sZCx2LG09M0QiTm89CiBEYXRhIEF2YWlsYWJsZS4i
LGc9M0RkMy5kaXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlkZSIsImJlZm9yZVVwZGF0
ZT0KIikseT0zRDA7bi5vcmllbnQoImJvdHRvbSIpLmhpZ2hsaWdodFplcm8oITEpLnNob3dNYXhN
aW4oITEpLnRpY2tGb3JtYXQoZnVuPQpjdGlvbihlKXtyZXR1cm4gZX0pLHIub3JpZW50KGw/InJp
Z2h0IjoibGVmdCIpLnRpY2tGb3JtYXQoZDMuZm9ybWF0KCIsLjFmIik9Cik7dmFyIGI9M0RmdW5j
dGlvbihpLHMpe3ZhciBvPTNEaS5wb3NbMF0rKHMub2Zmc2V0TGVmdHx8MCksdT0zRGkucG9zWzFd
KyhzLj0Kb2Zmc2V0VG9wfHwwKSxhPTNEbi50aWNrRm9ybWF0KCkodC54KCkoaS5wb2ludCxpLnBv
aW50SW5kZXgpKSxmPTNEci50aWNrRm9yPQptYXQoKSh0LnkoKShpLnBvaW50LGkucG9pbnRJbmRl
eCkpLGw9M0RwKGkuc2VyaWVzLmtleSxhLGYsaSx3KTtlLnRvb2x0aXAuc2g9Cm93KFtvLHVdLGws
aS52YWx1ZTwwPyJuIjoicyIsbnVsbCxzKX07cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRN
b3VzZW92ZT0Kci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXStpLmxlZnQs
ZS5wb3NbMV0raS50b3BdLGcudG9vbHRpcFNoPQpvdyhlKX0pLHQuZGlzcGF0Y2gub24oImVsZW1l
bnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtnLnRvb2x0aXBIaWRlKGU9Cil9KSxnLm9u
KCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXtoJiZlLnRvb2x0aXAuY2xlYW51cCgpfSksdy5kaXNw
YXRjaD0zRGcsdz0KLmRpc2NyZXRlYmFyPTNEdCx3LnhBeGlzPTNEbix3LnlBeGlzPTNEcixkMy5y
ZWJpbmQodyx0LCJ4IiwieSIsInhEb21haW4iLCJ5PQpEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2Ui
LCJmb3JjZVgiLCJmb3JjZVkiLCJpZCIsInNob3dWYWx1ZXMiLCJ2YWx1ZUZvcm1hdCI9Ciksdy5v
cHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKHcpLHcubWFyZ2luPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZz0KdW1lbnRzLmxlbmd0aD8oaS50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVu
ZGVmaW5lZCI/ZS50b3A6aS50b3AsaS5yaWdodD0zRHR5PQpwZW9mIGUucmlnaHQhPTNEInVuZGVm
aW5lZCI/ZS5yaWdodDppLnJpZ2h0LGkuYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCI9CnVu
ZGVmaW5lZCI/ZS5ib3R0b206aS5ib3R0b20saS5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5k
ZWZpbmVkIj9lLmxlZnQ6aT0KLmxlZnQsdyk6aX0sdy53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhzPTNEZSx3KTpzfSx3LmhlPQppZ2h0PTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RlLHcpOm99LHcuY29sb3I9M0RmdW5jdGlvbig9
Cm4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZS51dGlscy5nZXRDb2xvcihuKSx0LmNv
bG9yKHUpLHcpOnV9LHcuc2hvdz0KWEF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oYT0zRGUsdyk6YX0sdy5zaG93WUF4aXM9M0RmdW5jPQp0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhmPTNEZSx3KTpmfSx3LnJpZ2h0QWxpZ25ZQXhpcz0zRGZ1bmN0aW9u
KGU9Cil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLHIub3JpZW50KGU/InJpZ2h0Ijoi
bGVmdCIpLHcpOmx9LHcuc3RhZ2dlcj0KTGFiZWxzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGM9M0RlLHcpOmN9LHcudG9vbHRpcHM9M0RmdW5jPQp0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSx3KTpofSx3LnRvb2x0aXBDb250ZW50PTNEZnVuY3Rp
b24oZSk9CntyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsdyk6cH0sdy5ub0RhdGE9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbj0KdHMubGVuZ3RoPyhtPTNEZSx3KTptfSx3LnRyYW5z
aXRpb25EdXJhdGlvbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMuPQpsZW5ndGg/KHk9
M0RlLHcpOnl9LHd9LGUubW9kZWxzLmRpc3RyaWJ1dGlvbj0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24g
bChlKXtyZXQ9CnVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIGE9M0RuLShpPTNEPTNEPTNEIngi
P3QubGVmdCt0LnJpZ2h0OnQudG9wK3QuYm90dD0Kb20pLGw9M0RpPTNEPTNEIngiPyJ5IjoieCIs
Yz0zRGQzLnNlbGVjdCh0aGlzKTtmPTNEZnx8dTt2YXIgaD0zRGMuc2VsZWN0QWxsPQooImcubnYt
ZGlzdHJpYnV0aW9uIikuZGF0YShbZV0pLHA9M0RoLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudmQ9CjMgbnYtZGlzdHJpYnV0aW9uIiksZD0zRHAuYXBwZW5kKCJnIiksdj0zRGgu
c2VsZWN0KCJnIik7aC5hdHRyKCJ0cmFuc2Zvcm0iLD0KInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIr
dC50b3ArIikiKTt2YXIgbT0zRHYuc2VsZWN0QWxsKCJnLm52LWRpc3QiKS5kYXRhKGZ1PQpuY3Rp
b24oZSl7cmV0dXJuIGV9LGZ1bmN0aW9uKGUpe3JldHVybiBlLmtleX0pO20uZW50ZXIoKS5hcHBl
bmQoImciKSxtLmF0dHI9CigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIm52LWRpc3QgbnYt
c2VyaWVzLSIrdH0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aT0Kb24oZSx0KXtyZXR1cm4gbyhlLHQp
fSk7dmFyIGc9M0RtLnNlbGVjdEFsbCgibGluZS5udi1kaXN0IitpKS5kYXRhKGZ1bmN0aW9uPQoo
ZSl7cmV0dXJuIGUudmFsdWVzfSk7Zy5lbnRlcigpLmFwcGVuZCgibGluZSIpLmF0dHIoaSsiMSIs
ZnVuY3Rpb24oZSx0KXtyZXQ9CnVybiBmKHMoZSx0KSl9KS5hdHRyKGkrIjIiLGZ1bmN0aW9uKGUs
dCl7cmV0dXJuIGYocyhlLHQpKX0pLG0uZXhpdCgpLnNlbGVjdD0KQWxsKCJsaW5lLm52LWRpc3Qi
K2kpLmF0dHIoaSsiMSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdShzKGUsdCkpfSkuYXR0cihpKyIy
PQoiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHUocyhlLHQpKX0pLnN0eWxlKCJzdHJva2Utb3BhY2l0
eSIsMCkucmVtb3ZlKCksZy5hdHQ9CnIoImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiJudi1k
aXN0IitpKyIgbnYtZGlzdCIraSsiLSIrdH0pLmF0dHIobCsiMSIsMD0KKS5hdHRyKGwrIjIiLHIp
LGcuYXR0cihpKyIxIixmdW5jdGlvbihlLHQpe3JldHVybiB1KHMoZSx0KSl9KS5hdHRyKGkrIjIi
LGZ1PQpuY3Rpb24oZSx0KXtyZXR1cm4gdShzKGUsdCkpfSksZj0zRHUuY29weSgpfSksbH12YXIg
dD0zRHt0b3A6MCxyaWdodDowLGJvdHQ9Cm9tOjAsbGVmdDowfSxuPTNENDAwLHI9M0Q4LGk9M0Qi
eCIscz0zRGZ1bmN0aW9uKGUpe3JldHVybiBlW2ldfSxvPTNEZS51dGlscz0KLmRlZmF1bHRDb2xv
cigpLHU9M0RkMy5zY2FsZS5saW5lYXIoKSxhLGY7cmV0dXJuIGwub3B0aW9ucz0zRGUudXRpbHMu
b3B0aW9uPQpzRnVuYy5iaW5kKGwpLGwubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHQudG9wPTNEdHlwZW89CmYgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6
dC50b3AsdC5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiPz0KZS5yaWdodDp0
LnJpZ2h0LHQuYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9t
OnQuYm90dG9tPQosdC5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6
dC5sZWZ0LGwpOnR9LGwud2lkdGg9M0RmdW5jdGk9Cm9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhuPTNEZSxsKTpufSxsLmF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndT0KbWVudHMu
bGVuZ3RoPyhpPTNEZSxsKTppfSxsLnNpemU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8ocj0KPTNEZSxsKTpyfSxsLmdldERhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8ocz0zRGQzLmZ1bmN0b3IoPQplKSxsKTpzfSxsLnNjYWxlPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RlLGwpOnV9LGwuY29sb3I9Cj0zRGZ1
bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZS51dGlscy5nZXRDb2xvcih0
KSxsKTpvfSxsfSxlLj0KbW9kZWxzLmhpc3RvcmljYWxCYXJDaGFydD0zRGZ1bmN0aW9uKCl7ZnVu
Y3Rpb24geChlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uPQooZCl7dmFyIEU9M0RkMy5zZWxlY3Qo
dGhpcyksVD0zRHRoaXMsTj0zRCh1fHxwYXJzZUludChFLnN0eWxlKCJ3aWR0aCIpKXx8OTY9CjAp
LXMubGVmdC1zLnJpZ2h0LEM9M0QoYXx8cGFyc2VJbnQoRS5zdHlsZSgiaGVpZ2h0IikpfHw0MDAp
LXMudG9wLXMuYm90dG9tOz0KeC51cGRhdGU9M0RmdW5jdGlvbigpe0UuY2FsbCh4KX0seC5jb250
YWluZXI9M0R0aGlzLGcuZGlzYWJsZWQ9M0RkLm1hcChmdW5jPQp0aW9uKGUpe3JldHVybiEhZS5k
aXNhYmxlZH0pO2lmKCF5KXt2YXIgazt5PTNEe307Zm9yKGsgaW4gZylnW2tdaW5zdGFuY2VvZiA9
CkFycmF5P3lba109M0RnW2tdLnNsaWNlKDApOnlba109M0RnW2tdfWlmKCFkfHwhZC5sZW5ndGh8
fCFkLmZpbHRlcihmdW5jdGlvbj0KKGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgp
e3ZhciBMPTNERS5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhPQooW2JdKTtyZXR1cm4gTC5l
bnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRy
KCI9CmR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxMLmF0dHIoIngi
LHMubGVmdCtOLzIpLmF0dHIoInkiLD0Kcy50b3ArQy8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVy
biBlfSkseH1FLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbW92ZSgpPQosdj0zRHQueFNjYWxl
KCksbT0zRHQueVNjYWxlKCk7dmFyIEE9M0RFLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LWhpc3Rv
cmljYWw9CkJhckNoYXJ0IikuZGF0YShbZF0pLE89M0RBLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0
cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbj0Kdi1oaXN0b3JpY2FsQmFyQ2hhcnQiKS5hcHBlbmQo
ImciKSxNPTNEQS5zZWxlY3QoImciKTtPLmFwcGVuZCgiZyIpLmF0dHIoImNsPQphc3MiLCJudi14
IG52LWF4aXMiKSxPLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteSBudi1heGlzIiksTy5h
cHBlbmQoImc9CiIpLmF0dHIoImNsYXNzIiwibnYtYmFyc1dyYXAiKSxPLmFwcGVuZCgiZyIpLmF0
dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpLD0KZiYmKGkud2lkdGgoTiksTS5zZWxlY3QoIi5u
di1sZWdlbmRXcmFwIikuZGF0dW0oZCkuY2FsbChpKSxzLnRvcCE9M0RpLmhlaWdoPQp0KCkmJihz
LnRvcD0zRGkuaGVpZ2h0KCksQz0zRChhfHxwYXJzZUludChFLnN0eWxlKCJoZWlnaHQiKSl8fDQw
MCktcy50b3Atcy49CmJvdHRvbSksQS5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuYXR0cigidHJh
bnNmb3JtIiwidHJhbnNsYXRlKDAsIisgLXMudG9wKz0KIikiKSksQS5hdHRyKCJ0cmFuc2Zvcm0i
LCJ0cmFuc2xhdGUoIitzLmxlZnQrIiwiK3MudG9wKyIpIiksaCYmTS5zZWxlY3QoIi5uPQp2LXku
bnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK04rIiwwKSIpLHQud2lkdGgo
TikuaGVpZ2h0KEMpLmM9Cm9sb3IoZC5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8
byhlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKGUsdCl7cmV0dT0Kcm4hZFt0XS5kaXNhYmxlZH0pKTt2
YXIgXz0zRE0uc2VsZWN0KCIubnYtYmFyc1dyYXAiKS5kYXR1bShkLmZpbHRlcihmdW5jdGlvPQpu
KGUpe3JldHVybiFlLmRpc2FibGVkfSkpO18uY2FsbCh0KSxsJiYobi5zY2FsZSh2KS50aWNrU2l6
ZSgtQywwKSxNLnNlbGVjdCg9CiIubnYteC5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJh
bnNsYXRlKDAsIittLnJhbmdlKClbMF0rIikiKSxNLnNlbGVjdD0KKCIubnYteC5udi1heGlzIiku
Y2FsbChuKSksYyYmKHIuc2NhbGUobSkudGlja3MoQy8zNikudGlja1NpemUoLU4sMCksTS5zZWxl
PQpjdCgiLm52LXkubnYtYXhpcyIpLmNhbGwocikpLGkuZGlzcGF0Y2gub24oImxlZ2VuZENsaWNr
IixmdW5jdGlvbih0LG4pe3QuZGk9CnNhYmxlZD0zRCF0LmRpc2FibGVkLGQuZmlsdGVyKGZ1bmN0
aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkubGVuZ3RofHxkLm1hcD0KKGZ1bmN0aW9uKGUpe3Jl
dHVybiBlLmRpc2FibGVkPTNEITEsQS5zZWxlY3RBbGwoIi5udi1zZXJpZXMiKS5jbGFzc2VkKCJk
aXNhPQpibGVkIiwhMSksZX0pLGcuZGlzYWJsZWQ9M0RkLm1hcChmdW5jdGlvbihlKXtyZXR1cm4h
IWUuZGlzYWJsZWR9KSx3LnN0YXRlQ2g9CmFuZ2UoZyksZS5jYWxsKHgpfSksaS5kaXNwYXRjaC5v
bigibGVnZW5kRGJsY2xpY2siLGZ1bmN0aW9uKGUpe2QuZm9yRWFjaChmdT0KbmN0aW9uKGUpe2Uu
ZGlzYWJsZWQ9M0QhMH0pLGUuZGlzYWJsZWQ9M0QhMSxnLmRpc2FibGVkPTNEZC5tYXAoZnVuY3Rp
b24oZSl7PQpyZXR1cm4hIWUuZGlzYWJsZWR9KSx3LnN0YXRlQ2hhbmdlKGcpLHgudXBkYXRlKCl9
KSx3Lm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Q9CmlvbihlKXtwJiZTKGUsVC5wYXJlbnROb2RlKX0p
LHcub24oImNoYW5nZVN0YXRlIixmdW5jdGlvbihlKXt0eXBlb2YgZS5kaXNhYj0KbGVkIT0zRCJ1
bmRlZmluZWQiJiYoZC5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7dC5kaXNhYmxlZD0zRGUuZGlzYWJs
ZWRbbl19KSxnPQouZGlzYWJsZWQ9M0RlLmRpc2FibGVkKSx4LnVwZGF0ZSgpfSl9KSx4fXZhciB0
PTNEZS5tb2RlbHMuaGlzdG9yaWNhbEJhcigpLG49Cj0zRGUubW9kZWxzLmF4aXMoKSxyPTNEZS5t
b2RlbHMuYXhpcygpLGk9M0RlLm1vZGVscy5sZWdlbmQoKSxzPTNEe3RvcDozMCxyaT0KZ2h0Ojkw
LGJvdHRvbTo1MCxsZWZ0OjkwfSxvPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSx1PTNEbnVsbCxh
PTNEbnVsbCxmPTNEPQohMSxsPTNEITAsYz0zRCEwLGg9M0QhMSxwPTNEITAsZD0zRGZ1bmN0aW9u
KGUsdCxuLHIsaSl7cmV0dXJuIjxoMz4iK2UrIjwvaDM9Cj4iKyI8cD4iK24rIiBhdCAiK3QrIjwv
cD4ifSx2LG0sZz0zRHt9LHk9M0RudWxsLGI9M0QiTm8gRGF0YSBBdmFpbGFibGUuIix3PQo9M0Rk
My5kaXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlkZSIsInN0YXRlQ2hhbmdlIiwiY2hh
bmdlU3RhdGUiKSxFPQo9M0QwO24ub3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg3KSxyLm9y
aWVudChoPyJyaWdodCI6ImxlZnQiKTt2YXIgUz0zRGY9CnVuY3Rpb24oaSxzKXtpZihzKXt2YXIg
bz0zRGQzLnNlbGVjdChzKS5zZWxlY3QoInN2ZyIpLHU9M0RvLm5vZGUoKT9vLmF0dHIoIj0Kdmll
d0JveCIpOm51bGw7aWYodSl7dT0zRHUuc3BsaXQoIiAiKTt2YXIgYT0zRHBhcnNlSW50KG8uc3R5
bGUoIndpZHRoIikpL3VbPQoyXTtpLnBvc1swXT0zRGkucG9zWzBdKmEsaS5wb3NbMV09M0RpLnBv
c1sxXSphfX12YXIgZj0zRGkucG9zWzBdKyhzLm9mZnNldEw9CmVmdHx8MCksbD0zRGkucG9zWzFd
KyhzLm9mZnNldFRvcHx8MCksYz0zRG4udGlja0Zvcm1hdCgpKHQueCgpKGkucG9pbnQsaS5wbz0K
aW50SW5kZXgpKSxoPTNEci50aWNrRm9ybWF0KCkodC55KCkoaS5wb2ludCxpLnBvaW50SW5kZXgp
KSxwPTNEZChpLnNlcmllcy5rPQpleSxjLGgsaSx4KTtlLnRvb2x0aXAuc2hvdyhbZixsXSxwLG51
bGwsbnVsbCxzKX07cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW09CmVudE1vdXNlb3Zlci50b29s
dGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXStzLmxlZnQsZS5wb3NbMV0rcy50b3Bd
LD0Kdy50b29sdGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29s
dGlwIixmdW5jdGlvbihlKXt3LnRvPQpvbHRpcEhpZGUoZSl9KSx3Lm9uKCJ0b29sdGlwSGlkZSIs
ZnVuY3Rpb24oKXtwJiZlLnRvb2x0aXAuY2xlYW51cCgpfSkseC5kaXM9CnBhdGNoPTNEdyx4LmJh
cnM9M0R0LHgubGVnZW5kPTNEaSx4LnhBeGlzPTNEbix4LnlBeGlzPTNEcixkMy5yZWJpbmQoeCx0
LCJkZT0KZmluZWQiLCJpc0FyZWEiLCJ4IiwieSIsInNpemUiLCJ4U2NhbGUiLCJ5U2NhbGUiLCJ4
RG9tYWluIiwieURvbWFpbiIsInhSYW5nPQplIiwieVJhbmdlIiwiZm9yY2VYIiwiZm9yY2VZIiwi
aW50ZXJhY3RpdmUiLCJjbGlwRWRnZSIsImNsaXBWb3Jvbm9pIiwiaWQiLCI9CmludGVycG9sYXRl
IiwiaGlnaGxpZ2h0UG9pbnQiLCJjbGVhckhpZ2hsaWdodHMiLCJpbnRlcmFjdGl2ZSIpLHgub3B0
aW9ucz0zRD0KZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKHgpLHgubWFyZ2luPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/PQoocy50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVu
ZGVmaW5lZCI/ZS50b3A6cy50b3Ascy5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0KPTNEInVuZGVm
aW5lZCI/ZS5yaWdodDpzLnJpZ2h0LHMuYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRl
ZmluZWQiP2UuPQpib3R0b206cy5ib3R0b20scy5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5k
ZWZpbmVkIj9lLmxlZnQ6cy5sZWZ0LHgpOnN9LHg9Ci53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZSx4KTp1fSx4LmhlaWdodD0zRGZ1bmN0aT0Kb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLHgpOmF9LHguY29sb3I9M0RmdW5jdGlvbih0
KXtyZXR1cm4gYXJnPQp1bWVudHMubGVuZ3RoPyhvPTNEZS51dGlscy5nZXRDb2xvcih0KSxpLmNv
bG9yKG8pLHgpOm99LHguc2hvd0xlZ2VuZD0zRGZ1bmM9CnRpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGY9M0RlLHgpOmZ9LHguc2hvd1hBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dT0Kcm4g
YXJndW1lbnRzLmxlbmd0aD8obD0zRGUseCk6bH0seC5zaG93WUF4aXM9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzPQoubGVuZ3RoPyhjPTNEZSx4KTpjfSx4LnJpZ2h0QWxpZ25ZQXhpcz0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Q9Cmg/KGg9M0RlLHIub3JpZW50KGU/
InJpZ2h0IjoibGVmdCIpLHgpOmh9LHgudG9vbHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYT0K
cmd1bWVudHMubGVuZ3RoPyhwPTNEZSx4KTpwfSx4LnRvb2x0aXBDb250ZW50PTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50PQpzLmxlbmd0aD8oZD0zRGUseCk6ZH0seC5zdGF0ZT0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPTNEZSw9CngpOmd9LHguZGVmYXVsdFN0
YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9M0RlLHgpOnl9LHgu
bj0Kb0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0zRGUseCk6
Yn0seC50cmFuc2l0aW9uRHVyYXRpPQpvbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhFPTNEZSx4KTpFfSx4fSxlLm1vZGVscy5pbmRlbnRlZFQ9CnJlZT0zRGZ1bmN0aW9u
KCl7ZnVuY3Rpb24gZyhlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGsoZSx0
LG4pez0KZDMuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7aWYoZDMuZXZlbnQuc2hpZnRLZXkmJiFu
KXJldHVybiBkMy5ldmVudC5zaGlmdEtlPQp5PTNEITEsZS52YWx1ZXMmJmUudmFsdWVzLmZvckVh
Y2goZnVuY3Rpb24oZSl7KGUudmFsdWVzfHxlLl92YWx1ZXMpJiZrKGUsMCw9CiEwKX0pLCEwO2lm
KCFPKGUpKXJldHVybiEwO2UudmFsdWVzPyhlLl92YWx1ZXM9M0RlLnZhbHVlcyxlLnZhbHVlcz0z
RG51bGwpOj0KKGUudmFsdWVzPTNEZS5fdmFsdWVzLGUuX3ZhbHVlcz0zRG51bGwpLGcudXBkYXRl
KCl9ZnVuY3Rpb24gTChlKXtyZXR1cm4gZS5fPQp2YWx1ZXMmJmUuX3ZhbHVlcy5sZW5ndGg/aDpl
LnZhbHVlcyYmZS52YWx1ZXMubGVuZ3RoP3A6IiJ9ZnVuY3Rpb24gQShlKXtyZXQ9CnVybiBlLl92
YWx1ZXMmJmUuX3ZhbHVlcy5sZW5ndGh9ZnVuY3Rpb24gTyhlKXt2YXIgdD0zRGUudmFsdWVzfHxl
Ll92YWx1ZXM7cj0KZXR1cm4gdCYmdC5sZW5ndGh9dmFyIHQ9M0QxLG49M0RkMy5zZWxlY3QodGhp
cyksaT0zRGQzLmxheW91dC50cmVlKCkuY2hpbGRyPQplbihmdW5jdGlvbihlKXtyZXR1cm4gZS52
YWx1ZXN9KS5zaXplKFtyLGZdKTtnLnVwZGF0ZT0zRGZ1bmN0aW9uKCl7bi5jYWxsKGc9Cil9LGVb
MF18fChlWzBdPTNEe2tleTphfSk7dmFyIHM9M0RpLm5vZGVzKGVbMF0pLHk9M0RkMy5zZWxlY3Qo
dGhpcykuc2VsZWN0QT0KbGwoImRpdiIpLmRhdGEoW1tzXV0pLGI9M0R5LmVudGVyKCkuYXBwZW5k
KCJkaXYiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhPQpwIG52LWluZGVudGVkdHJlZSIpLHc9
M0RiLmFwcGVuZCgidGFibGUiKSxFPTNEeS5zZWxlY3QoInRhYmxlIikuYXR0cigid2lkdGg9CiIs
IjEwMCUiKS5hdHRyKCJjbGFzcyIsYyk7aWYobyl7dmFyIFM9M0R3LmFwcGVuZCgidGhlYWQiKSx4
PTNEUy5hcHBlbmQoInRyIj0KKTtsLmZvckVhY2goZnVuY3Rpb24oZSl7eC5hcHBlbmQoInRoIiku
YXR0cigid2lkdGgiLGUud2lkdGg/ZS53aWR0aDoiMTAlIikuPQpzdHlsZSgidGV4dC1hbGlnbiIs
ZS50eXBlPTNEPTNEIm51bWVyaWMiPyJyaWdodCI6ImxlZnQiKS5hcHBlbmQoInNwYW4iKS50ZXg9
CnQoZS5sYWJlbCl9KX12YXIgVD0zREUuc2VsZWN0QWxsKCJ0Ym9keSIpLmRhdGEoZnVuY3Rpb24o
ZSl7cmV0dXJuIGV9KTtULmVudD0KZXIoKS5hcHBlbmQoInRib2R5IiksdD0zRGQzLm1heChzLGZ1
bmN0aW9uKGUpe3JldHVybiBlLmRlcHRofSksaS5zaXplKFtyLHQqPQpmXSk7dmFyIE49M0RULnNl
bGVjdEFsbCgidHIiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlLmZpbHRlcihmdW5jdGlvbihl
KXs9CnJldHVybiB1JiYhZS5jaGlsZHJlbj91KGUpOiEwfSl9LGZ1bmN0aW9uKGUsdCl7cmV0dXJu
IGUuaWR8fGUuaWR8fCsrbX0pO04uZT0KeGl0KCkucmVtb3ZlKCksTi5zZWxlY3QoImltZy5udi10
cmVlaWNvbiIpLmF0dHIoInNyYyIsTCkuY2xhc3NlZCgiZm9sZGVkIixBPQopO3ZhciBDPTNETi5l
bnRlcigpLmFwcGVuZCgidHIiKTtsLmZvckVhY2goZnVuY3Rpb24oZSx0KXt2YXIgbj0zREMuYXBw
ZW5kKCI9CnRkIikuc3R5bGUoInBhZGRpbmctbGVmdCIsZnVuY3Rpb24oZSl7cmV0dXJuKHQ/MDpl
LmRlcHRoKmYrMTIrKEwoZSk/MDoxNikpKz0KInB4In0sImltcG9ydGFudCIpLnN0eWxlKCJ0ZXh0
LWFsaWduIixlLnR5cGU9M0Q9M0QibnVtZXJpYyI/InJpZ2h0IjoibGVmdCIpPQo7dD0zRD0zRDAm
Jm4uYXBwZW5kKCJpbWciKS5jbGFzc2VkKCJudi10cmVlaWNvbiIsITApLmNsYXNzZWQoIm52LWZv
bGRlZCIsQSk9Ci5hdHRyKCJzcmMiLEwpLnN0eWxlKCJ3aWR0aCIsIjE0cHgiKS5zdHlsZSgiaGVp
Z2h0IiwiMTRweCIpLnN0eWxlKCJwYWRkaW5nIj0KLCIwIDFweCIpLnN0eWxlKCJkaXNwbGF5Iixm
dW5jdGlvbihlKXtyZXR1cm4gTChlKT8iaW5saW5lLWJsb2NrIjoibm9uZSJ9KS5vPQpuKCJjbGlj
ayIsayksbi5lYWNoKGZ1bmN0aW9uKG4peyF0JiZ2KG4pP2QzLnNlbGVjdCh0aGlzKS5hcHBlbmQo
ImEiKS5hdHRyKCI9CmhyZWYiLHYpLmF0dHIoImNsYXNzIixkMy5mdW5jdG9yKGUuY2xhc3Nlcykp
LmFwcGVuZCgic3BhbiIpOmQzLnNlbGVjdCh0aGlzKT0KLmFwcGVuZCgic3BhbiIpLGQzLnNlbGVj
dCh0aGlzKS5zZWxlY3QoInNwYW4iKS5hdHRyKCJjbGFzcyIsZDMuZnVuY3RvcihlLmNsPQphc3Nl
cykpLnRleHQoZnVuY3Rpb24odCl7cmV0dXJuIGUuZm9ybWF0P3RbZS5rZXldP2UuZm9ybWF0KHRb
ZS5rZXldKToiLSI6dFs9CmUua2V5XXx8Ii0ifSl9KSxlLnNob3dDb3VudCYmKG4uYXBwZW5kKCJz
cGFuIikuYXR0cigiY2xhc3MiLCJudi1jaGlsZHJlbkNvdT0KbnQiKSxOLnNlbGVjdEFsbCgic3Bh
bi5udi1jaGlsZHJlbkNvdW50IikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMmPQom
ZS52YWx1ZXMubGVuZ3RofHxlLl92YWx1ZXMmJmUuX3ZhbHVlcy5sZW5ndGg/IigiKyhlLnZhbHVl
cyYmZS52YWx1ZXMuZmlsdGU9CnIoZnVuY3Rpb24oZSl7cmV0dXJuIHU/dShlKTohMH0pLmxlbmd0
aHx8ZS5fdmFsdWVzJiZlLl92YWx1ZXMuZmlsdGVyKGZ1bmN0aT0Kb24oZSl7cmV0dXJuIHU/dShl
KTohMH0pLmxlbmd0aHx8MCkrIikiOiIifSkpfSksTi5vcmRlcigpLm9uKCJjbGljayIsZnVuY3Rp
PQpvbihlKXtkLmVsZW1lbnRDbGljayh7cm93OnRoaXMsZGF0YTplLHBvczpbZS54LGUueV19KX0p
Lm9uKCJkYmxjbGljayIsZnVuY3Q9CmlvbihlKXtkLmVsZW1lbnREYmxjbGljayh7cm93OnRoaXMs
ZGF0YTplLHBvczpbZS54LGUueV19KX0pLm9uKCJtb3VzZW92ZXIiLD0KZnVuY3Rpb24oZSl7ZC5l
bGVtZW50TW91c2VvdmVyKHtyb3c6dGhpcyxkYXRhOmUscG9zOltlLngsZS55XX0pfSkub24oIm1v
dXNlPQpvdXQiLGZ1bmN0aW9uKGUpe2QuZWxlbWVudE1vdXNlb3V0KHtyb3c6dGhpcyxkYXRhOmUs
cG9zOltlLngsZS55XX0pfSl9KSxnfXY9CmFyIHQ9M0R7dG9wOjAscmlnaHQ6MCxib3R0b206MCxs
ZWZ0OjB9LG49M0Q5NjAscj0zRDUwMCxpPTNEZS51dGlscy5kZWZhdWx0Qz0Kb2xvcigpLHM9M0RN
YXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMWU0KSxvPTNEITAsdT0zRCExLGE9M0QiTm8gRGF0YSBB
dmFpbGFiPQpsZS4iLGY9M0QyMCxsPTNEW3trZXk6ImtleSIsbGFiZWw6Ik5hbWUiLHR5cGU6InRl
eHQifV0sYz0zRG51bGwsaD0zRCJpbWFnZXM9Ci9ncmV5LXBsdXMucG5nIixwPTNEImltYWdlcy9n
cmV5LW1pbnVzLnBuZyIsZD0zRGQzLmRpc3BhdGNoKCJlbGVtZW50Q2xpY2siLD0KImVsZW1lbnRE
YmxjbGljayIsImVsZW1lbnRNb3VzZW92ZXIiLCJlbGVtZW50TW91c2VvdXQiKSx2PTNEZnVuY3Rp
b24oZSl7cmV0PQp1cm4gZS51cmx9LG09M0QwO3JldHVybiBnLm9wdGlvbnM9M0RlLnV0aWxzLm9w
dGlvbnNGdW5jLmJpbmQoZyksZy5tYXJnaW49M0Q9CmZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyh0LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLj0KdG9wOnQu
dG9wLHQucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OnQucmln
aHQsdC5ib3R0b209Cj0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTp0
LmJvdHRvbSx0LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0KPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnQu
bGVmdCxnKTp0fSxnLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sPQplbmd0
aD8obj0zRGUsZyk6bn0sZy5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8ocj0zRGUsZyk9CjpyfSxnLmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGk9M0RlLnV0aWxzLmdldENvbG9yKHQpLD0Kc2NhdHRlci5jb2xvcihpKSxnKTpp
fSxnLmlkPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLGcpPQo6
c30sZy5oZWFkZXI9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUs
Zyk6b30sZy5ub0RhdGE9M0Q9CmZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhh
PTNEZSxnKTphfSxnLmZpbHRlclplcm89M0RmdW5jdGlvbihlKT0Ke3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyh1PTNEZSxnKTp1fSxnLmNvbHVtbnM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
PQpudHMubGVuZ3RoPyhsPTNEZSxnKTpsfSxnLnRhYmxlQ2xhc3M9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD89CihjPTNEZSxnKTpjfSxnLmljb25PcGVuPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLGcpOmh9LD0KZy5pY29uQ2xvc2U9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsZyk6cH0sZy5nZXRVcmw9
M0RmPQp1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PTNEZSxnKTp2fSxnfSxl
Lm1vZGVscy5sZWdlbmQ9M0RmdW5jdGk9Cm9uKCl7ZnVuY3Rpb24gYyhoKXtyZXR1cm4gaC5lYWNo
KGZ1bmN0aW9uKGMpe3ZhciBoPTNEbi10LmxlZnQtdC5yaWdodCxwPTNEZD0KMy5zZWxlY3QodGhp
cyksZD0zRHAuc2VsZWN0QWxsKCJnLm52LWxlZ2VuZCIpLmRhdGEoW2NdKSx2PTNEZC5lbnRlcigp
LmFwcGVuPQpkKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LWxlZ2VuZCIpLmFwcGVuZCgiZyIp
LG09M0RkLnNlbGVjdCgiZyIpO2QuYXR0cig9CiJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0Lmxl
ZnQrIiwiK3QudG9wKyIpIik7dmFyIGc9M0RtLnNlbGVjdEFsbCgiLm52LXNlcj0KaWVzIikuZGF0
YShmdW5jdGlvbihlKXtyZXR1cm4gZX0pLHk9M0RnLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJuPQp2LXNlcmllcyIpLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKGUsdCl7bC5sZWdl
bmRNb3VzZW92ZXIoZSx0KX0pLm9uKCJtb3VzZW89CnV0IixmdW5jdGlvbihlLHQpe2wubGVnZW5k
TW91c2VvdXQoZSx0KX0pLm9uKCJjbGljayIsZnVuY3Rpb24oZSx0KXtsLmxlZ2VuZD0KQ2xpY2so
ZSx0KSxhJiYoZj8oYy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuZGlzYWJsZWQ9M0QhMH0pLGUuZGlz
YWJsZWQ9M0QhMSk6PQooZS5kaXNhYmxlZD0zRCFlLmRpc2FibGVkLGMuZXZlcnkoZnVuY3Rpb24o
ZSl7cmV0dXJuIGUuZGlzYWJsZWR9KSYmYy5mb3JFYWM9CmgoZnVuY3Rpb24oZSl7ZS5kaXNhYmxl
ZD0zRCExfSkpLGwuc3RhdGVDaGFuZ2Uoe2Rpc2FibGVkOmMubWFwKGZ1bmN0aW9uKGUpez0KcmV0
dXJuISFlLmRpc2FibGVkfSl9KSl9KS5vbigiZGJsY2xpY2siLGZ1bmN0aW9uKGUsdCl7bC5sZWdl
bmREYmxjbGljayhlLHQpPQosYSYmKGMuZm9yRWFjaChmdW5jdGlvbihlKXtlLmRpc2FibGVkPTNE
ITB9KSxlLmRpc2FibGVkPTNEITEsbC5zdGF0ZUNoYW5nZSg9CntkaXNhYmxlZDpjLm1hcChmdW5j
dGlvbihlKXtyZXR1cm4hIWUuZGlzYWJsZWR9KX0pKX0pO3kuYXBwZW5kKCJjaXJjbGUiKS5zdD0K
eWxlKCJzdHJva2Utd2lkdGgiLDIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kLXN5bWJvbCIpLmF0
dHIoInIiLDUpLHkuYXBwZW5kPQooInRleHQiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsInN0YXJ0Iiku
YXR0cigiY2xhc3MiLCJudi1sZWdlbmQtdGV4dCIpLmF0dHIoImQ9CnkiLCIuMzJlbSIpLmF0dHIo
ImR4IiwiOCIpLGcuY2xhc3NlZCgiZGlzYWJsZWQiLGZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2Fi
bD0KZWR9KSxnLmV4aXQoKS5yZW1vdmUoKSxnLnNlbGVjdCgiY2lyY2xlIikuc3R5bGUoImZpbGwi
LGZ1bmN0aW9uKGUsdCl7cmV0dXJuPQogZS5jb2xvcnx8cyhlLHQpfSkuc3R5bGUoInN0cm9rZSIs
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8cyhlLHQpfSksZy49CnNlbGVjdCgidGV4dCIp
LnRleHQoaSk7aWYobyl7dmFyIGI9M0RbXTtnLmVhY2goZnVuY3Rpb24odCxuKXt2YXIgcj0zRGQz
LnNlbD0KZWN0KHRoaXMpLnNlbGVjdCgidGV4dCIpLGk7dHJ5e2k9M0RyLmdldENvbXB1dGVkVGV4
dExlbmd0aCgpO2lmKGk8PTNEMCl0aHJvPQp3IEVycm9yKCl9Y2F0Y2gocyl7aT0zRGUudXRpbHMu
Y2FsY0FwcHJveFRleHRXaWR0aChyKX1iLnB1c2goaSsyOCl9KTt2YXIgdz0KPTNEMCxFPTNEMCxT
PTNEW107d2hpbGUoRTxoJiZ3PGIubGVuZ3RoKVNbd109M0RiW3ddLEUrPTNEYlt3KytdO3c9M0Q9
M0Q9M0QwPQomJih3PTNEMSk7d2hpbGUoRT5oJiZ3PjEpe1M9M0RbXSx3LS07Zm9yKHZhciB4PTNE
MDt4PGIubGVuZ3RoO3grKyliW3hdPihTW3g9CiV3XXx8MCkmJihTW3gld109M0RiW3hdKTtFPTNE
Uy5yZWR1Y2UoZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIGUrdH0pfXZhciBUPQo9M0RbXTtmb3Io
dmFyIE49M0QwLEM9M0QwO048dztOKyspVFtOXT0zREMsQys9M0RTW05dO2cuYXR0cigidHJhbnNm
b3JtIixmdW49CmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiK1RbdCV3XSsiLCIrKDUrTWF0
aC5mbG9vcih0L3cpKjIwKSsiKSJ9KSx1P20uYT0KdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUo
Iisobi10LnJpZ2h0LUUpKyIsIit0LnRvcCsiKSIpOm0uYXR0cigidHJhbnNmb3JtPQoiLCJ0cmFu
c2xhdGUoMCwiK3QudG9wKyIpIikscj0zRHQudG9wK3QuYm90dG9tK01hdGguY2VpbChiLmxlbmd0
aC93KSoyMH1lbHM9CmV7dmFyIGs9M0Q1LEw9M0Q1LEE9M0QwLE87Zy5hdHRyKCJ0cmFuc2Zvcm0i
LGZ1bmN0aW9uKGUscil7dmFyIGk9M0RkMy5zZWxlYz0KdCh0aGlzKS5zZWxlY3QoInRleHQiKS5u
b2RlKCkuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCkrMjg7cmV0dXJuIE89M0RMLG48dC5sPQplZnQr
dC5yaWdodCtPK2kmJihMPTNETz0zRDUsays9M0QyMCksTCs9M0RpLEw+QSYmKEE9M0RMKSwidHJh
bnNsYXRlKCIrTysiLCI9CitrKyIpIn0pLG0uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIr
KG4tdC5yaWdodC1BKSsiLCIrdC50b3ArIikiKSxyPTNEdD0KLnRvcCt0LmJvdHRvbStrKzE1fX0p
LGN9dmFyIHQ9M0R7dG9wOjUscmlnaHQ6MCxib3R0b206NSxsZWZ0OjB9LG49M0Q0MDAscj0KPTNE
MjAsaT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLmtleX0scz0zRGUudXRpbHMuZGVmYXVsdENvbG9y
KCksbz0zRCEwLHU9M0QhPQowLGE9M0QhMCxmPTNEITEsbD0zRGQzLmRpc3BhdGNoKCJsZWdlbmRD
bGljayIsImxlZ2VuZERibGNsaWNrIiwibGVnZW5kTW91c2U9Cm92ZXIiLCJsZWdlbmRNb3VzZW91
dCIsInN0YXRlQ2hhbmdlIik7cmV0dXJuIGMuZGlzcGF0Y2g9M0RsLGMub3B0aW9ucz0zRGUudT0K
dGlscy5vcHRpb25zRnVuYy5iaW5kKGMpLGMubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHQuPQp0b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50
b3A6dC50b3AsdC5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCI9CnVuZGVmaW5lZCI/ZS5yaWdo
dDp0LnJpZ2h0LHQuYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90
dD0Kb206dC5ib3R0b20sdC5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxl
ZnQ6dC5sZWZ0LGMpOnR9LGMud2lkPQp0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhuPTNEZSxjKTpufSxjLmhlaWdodD0zRGZ1bmN0aW9uKGU9Cil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHI9M0RlLGMpOnJ9LGMua2V5PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cz0KLmxlbmd0aD8oaT0zRGUsYyk6aX0sYy5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhzPTNEZS51PQp0aWxzLmdldENvbG9yKHQpLGMpOnN9LGMuYWxpZ249
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGU9CixjKTpvfSxjLnJp
Z2h0QWxpZ249M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsYyk6
dX0sYy51cD0KZGF0ZVN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGE9M0RlLGMpOmF9LGMucmFkaW9CdXR0b25NPQpvZGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oZj0zRGUsYyk6Zn0sY30sZS5tb2RlbHMubGluZT0zRGY9CnVuY3Rpb24o
KXtmdW5jdGlvbiBtKGcpe3JldHVybiBnLmVhY2goZnVuY3Rpb24obSl7dmFyIGc9M0RyLW4ubGVm
dC1uLnJpZ2h0LD0KYj0zRGktbi50b3Atbi5ib3R0b20sdz0zRGQzLnNlbGVjdCh0aGlzKTtjPTNE
dC54U2NhbGUoKSxoPTNEdC55U2NhbGUoKSxkPTNEPQpkfHxjLHY9M0R2fHxoO3ZhciBFPTNEdy5z
ZWxlY3RBbGwoImcubnYtd3JhcC5udi1saW5lIikuZGF0YShbbV0pLFM9M0RFLmVudGU9CnIoKS5h
cHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1saW5lIiksVD0zRFMuYXBw
ZW5kKCJkZWZzIiksTj0KPTNEUy5hcHBlbmQoImciKSxDPTNERS5zZWxlY3QoImciKTtOLmFwcGVu
ZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtZ3JvdXBzIiksPQpOLmFwcGVuZCgiZyIpLmF0dHIoImNs
YXNzIiwibnYtc2NhdHRlcldyYXAiKSxFLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSg9CiIr
bi5sZWZ0KyIsIituLnRvcCsiKSIpLHQud2lkdGgoZykuaGVpZ2h0KGIpO3ZhciBrPTNERS5zZWxl
Y3QoIi5udi1zY2F0dGVyVz0KcmFwIik7ay5jYWxsKHQpLFQuYXBwZW5kKCJjbGlwUGF0aCIpLmF0
dHIoImlkIiwibnYtZWRnZS1jbGlwLSIrdC5pZCgpKS5hcHBlPQpuZCgicmVjdCIpLEUuc2VsZWN0
KCIjbnYtZWRnZS1jbGlwLSIrdC5pZCgpKyIgcmVjdCIpLmF0dHIoIndpZHRoIixnKS5hdHRyKCI9
CmhlaWdodCIsYj4wP2I6MCksQy5hdHRyKCJjbGlwLXBhdGgiLGw/InVybCgjbnYtZWRnZS1jbGlw
LSIrdC5pZCgpKyIpIjoiIiksaz0KLmF0dHIoImNsaXAtcGF0aCIsbD8idXJsKCNudi1lZGdlLWNs
aXAtIit0LmlkKCkrIikiOiIiKTt2YXIgTD0zREUuc2VsZWN0KCIuPQpudi1ncm91cHMiKS5zZWxl
Y3RBbGwoIi5udi1ncm91cCIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGZ1bmN0aW9uKGUp
e3I9CmV0dXJuIGUua2V5fSk7TC5lbnRlcigpLmFwcGVuZCgiZyIpLnN0eWxlKCJzdHJva2Utb3Bh
Y2l0eSIsMWUtNikuc3R5bGUoImZpbD0KbC1vcGFjaXR5IiwxZS02KSxMLmV4aXQoKS5yZW1vdmUo
KSxMLmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiJudi1nPQpyb3VwIG52LXNlcmll
cy0iK3R9KS5jbGFzc2VkKCJob3ZlciIsZnVuY3Rpb24oZSl7cmV0dXJuIGUuaG92ZXJ9KS5zdHls
ZSgiZmk9CmxsIixmdW5jdGlvbihlLHQpe3JldHVybiBzKGUsdCl9KS5zdHlsZSgic3Ryb2tlIixm
dW5jdGlvbihlLHQpe3JldHVybiBzKGUsdD0KKX0pLEwuc3R5bGUoInN0cm9rZS1vcGFjaXR5Iiwx
KS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwuNSk7dmFyIEE9M0RMLnNlbGVjdEFsPQpsKCJwYXRoLm52
LWFyZWEiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBmKGUpP1tlXTpbXX0pO0EuZW50ZXIoKS5h
cHBlbmQoInA9CmF0aCIpLmF0dHIoImNsYXNzIiwibnYtYXJlYSIpLmF0dHIoImQiLGZ1bmN0aW9u
KHQpe3JldHVybiBkMy5zdmcuYXJlYSgpLmludD0KZXJwb2xhdGUocCkuZGVmaW5lZChhKS54KGZ1
bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKGQobyh0LG4pKSl9PQopLnkwKGZ1
bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKHYodSh0LG4pKSl9KS55MShmdW5j
dGlvbihlLHQpe3I9CmV0dXJuIHYoaC5kb21haW4oKVswXTw9M0QwP2guZG9tYWluKClbMV0+PTNE
MD8wOmguZG9tYWluKClbMV06aC5kb21haW4oKVswXT0KKX0pLmFwcGx5KHRoaXMsW3QudmFsdWVz
XSl9KSxMLmV4aXQoKS5zZWxlY3RBbGwoInBhdGgubnYtYXJlYSIpLnJlbW92ZSgpLEEuPQphdHRy
KCJkIixmdW5jdGlvbih0KXtyZXR1cm4gZDMuc3ZnLmFyZWEoKS5pbnRlcnBvbGF0ZShwKS5kZWZp
bmVkKGEpLngoZnVuY3Q9Cmlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhjKG8odCxu
KSkpfSkueTAoZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dD0KaWxzLk5hTnRvWmVybyhoKHUodCxu
KSkpfSkueTEoZnVuY3Rpb24oZSx0KXtyZXR1cm4gaChoLmRvbWFpbigpWzBdPD0zRDA/aC5kPQpv
bWFpbigpWzFdPj0zRDA/MDpoLmRvbWFpbigpWzFdOmguZG9tYWluKClbMF0pfSkuYXBwbHkodGhp
cyxbdC52YWx1ZXNdKX0pO3Y9CmFyIE89M0RMLnNlbGVjdEFsbCgicGF0aC5udi1saW5lIikuZGF0
YShmdW5jdGlvbihlKXtyZXR1cm5bZS52YWx1ZXNdfSk7Ty5lbj0KdGVyKCkuYXBwZW5kKCJwYXRo
IikuYXR0cigiY2xhc3MiLCJudi1saW5lIikuYXR0cigiZCIsZDMuc3ZnLmxpbmUoKS5pbnRlcnBv
PQpsYXRlKHApLmRlZmluZWQoYSkueChmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRv
WmVybyhkKG8odCxuKSkpfSkueSg9CmZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9a
ZXJvKHYodSh0LG4pKSl9KSksTy5hdHRyKCJkIixkMy5zdmcubGluZT0KKCkuaW50ZXJwb2xhdGUo
cCkuZGVmaW5lZChhKS54KGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKGMo
byh0PQosbikpKX0pLnkoZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8oaCh1
KHQsbikpKX0pKSxkPTNEYy5jb3B5KCk9Cix2PTNEaC5jb3B5KCl9KSxtfXZhciB0PTNEZS5tb2Rl
bHMuc2NhdHRlcigpLG49M0R7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZT0KZnQ6MH0scj0zRDk2
MCxpPTNENTAwLHM9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLG89M0RmdW5jdGlvbihlKXtyZXR1
cm4gZS54PQp9LHU9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS55fSxhPTNEZnVuY3Rpb24oZSx0KXty
ZXR1cm4haXNOYU4odShlLHQpKSYmdShlLHQ9CikhPTNEPTNEbnVsbH0sZj0zRGZ1bmN0aW9uKGUp
e3JldHVybiBlLmFyZWF9LGw9M0QhMSxjLGgscD0zRCJsaW5lYXIiO3Quc2l6ZT0KKDE2KS5zaXpl
RG9tYWluKFsxNiwyNTZdKTt2YXIgZCx2O3JldHVybiBtLmRpc3BhdGNoPTNEdC5kaXNwYXRjaCxt
LnNjYXR0ZXI9Cj0zRHQsZDMucmViaW5kKG0sdCwiaWQiLCJpbnRlcmFjdGl2ZSIsInNpemUiLCJ4
U2NhbGUiLCJ5U2NhbGUiLCJ6U2NhbGUiLCJ4RD0Kb21haW4iLCJ5RG9tYWluIiwieFJhbmdlIiwi
eVJhbmdlIiwic2l6ZURvbWFpbiIsImZvcmNlWCIsImZvcmNlWSIsImZvcmNlU2l6PQplIiwiY2xp
cFZvcm9ub2kiLCJ1c2VWb3Jvbm9pIiwiY2xpcFJhZGl1cyIsInBhZERhdGEiLCJoaWdobGlnaHRQ
b2ludCIsImNsZWE9CnJIaWdobGlnaHRzIiksbS5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVu
Yy5iaW5kKG0pLG0ubWFyZ2luPTNEZnVuY3Rpb24oZT0KKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8obi50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6bi50b3AsPQpuLnJp
Z2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDpuLnJpZ2h0LG4uYm90
dG9tPTNEdHlwZW9mIGU9Ci5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206bi5ib3R0b20s
bi5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbj0KZWQiP2UubGVmdDpuLmxlZnQsbSk6
bn0sbS53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEPQpl
LG0pOnJ9LG0uaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9
M0RlLG0pOml9LG0ueD0zRGY9CnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89
M0RlLHQueChlKSxtKTpvfSxtLnk9M0RmdW5jdGlvbihlKXtyZT0KdHVybiBhcmd1bWVudHMubGVu
Z3RoPyh1PTNEZSx0LnkoZSksbSk6dX0sbS5jbGlwRWRnZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
PQpyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLG0pOmx9LG0uY29sb3I9M0RmdW5jdGlvbihuKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD89CihzPTNEZS51dGlscy5nZXRDb2xvcihuKSx0LmNvbG9yKHMp
LG0pOnN9LG0uaW50ZXJwb2xhdGU9M0RmdW5jdGlvbihlKXtyZXR1cj0KbiBhcmd1bWVudHMubGVu
Z3RoPyhwPTNEZSxtKTpwfSxtLmRlZmluZWQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
LmxlPQpuZ3RoPyhhPTNEZSxtKTphfSxtLmlzQXJlYT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhmPTNEZDMuZnU9Cm5jdG9yKGUpLG0pOmZ9LG19LGUubW9kZWxzLmxpbmVD
aGFydD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gTihtKXtyZXR1cm4gbS5lYT0KY2goZnVuY3Rpb24o
bSl7dmFyIHg9M0RkMy5zZWxlY3QodGhpcyksQz0zRHRoaXMsaz0zRChhfHxwYXJzZUludCh4LnN0
eWxlKCJ3PQppZHRoIikpfHw5NjApLW8ubGVmdC1vLnJpZ2h0LEw9M0QoZnx8cGFyc2VJbnQoeC5z
dHlsZSgiaGVpZ2h0IikpfHw0MDApLW8udG89CnAtby5ib3R0b207Ti51cGRhdGU9M0RmdW5jdGlv
bigpe3guY2FsbChOKX0sTi5jb250YWluZXI9M0R0aGlzLGIuZGlzYWJsZWQ9Cj0zRG0ubWFwKGZ1
bmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pO2lmKCF3KXt2YXIgQTt3PTNEe307Zm9yKEEg
aW4gYiliWz0KQV1pbnN0YW5jZW9mIEFycmF5P3dbQV09M0RiW0FdLnNsaWNlKDApOndbQV09M0Ri
W0FdfWlmKCFtfHwhbS5sZW5ndGh8fCFtLmZpPQpsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZh
bHVlcy5sZW5ndGh9KS5sZW5ndGgpe3ZhciBPPTNEeC5zZWxlY3RBbGwoIi5udi09Cm5vRGF0YSIp
LmRhdGEoW0VdKTtyZXR1cm4gTy5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwi
bnZkMyBudi1ubz0KRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3Ii
LCJtaWRkbGUiKSxPLmF0dHIoIngiLG8ubGVmdCtrPQovMikuYXR0cigieSIsby50b3ArTC8yKS50
ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksTn14LnNlbGVjdEFsbCgiLm52LW5vRGE9CnRhIiku
cmVtb3ZlKCksZz0zRHQueFNjYWxlKCkseT0zRHQueVNjYWxlKCk7dmFyIE09M0R4LnNlbGVjdEFs
bCgiZy5udi13cmFwLj0KbnYtbGluZUNoYXJ0IikuZGF0YShbbV0pLF89M0RNLmVudGVyKCkuYXBw
ZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyPQphcCBudi1saW5lQ2hhcnQiKS5hcHBl
bmQoImciKSxEPTNETS5zZWxlY3QoImciKTtfLmFwcGVuZCgicmVjdCIpLnN0eWxlKCJvcGE9CmNp
dHkiLDApLF8uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14IG52LWF4aXMiKSxfLmFwcGVu
ZCgiZyIpLmF0dHIoImNsYT0Kc3MiLCJudi15IG52LWF4aXMiKSxfLmFwcGVuZCgiZyIpLmF0dHIo
ImNsYXNzIiwibnYtbGluZXNXcmFwIiksXy5hcHBlbmQoImciPQopLmF0dHIoImNsYXNzIiwibnYt
bGVnZW5kV3JhcCIpLF8uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1pbnRlcmFjdGl2ZSI9
CiksRC5zZWxlY3QoInJlY3QiKS5hdHRyKCJ3aWR0aCIsaykuYXR0cigiaGVpZ2h0IixMPjA/TDow
KSxsJiYoaS53aWR0aChrKSxELj0Kc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmRhdHVtKG0pLmNh
bGwoaSksby50b3AhPTNEaS5oZWlnaHQoKSYmKG8udG9wPTNEaS5oPQplaWdodCgpLEw9M0QoZnx8
cGFyc2VJbnQoeC5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLW8udG9wLW8uYm90dG9tKSxNLnNlbGVj
dCg9CiIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrIC1v
LnRvcCsiKSIpKSxNLmF0dHIoInRyYT0KbnNmb3JtIiwidHJhbnNsYXRlKCIrby5sZWZ0KyIsIitv
LnRvcCsiKSIpLHAmJkQuc2VsZWN0KCIubnYteS5udi1heGlzIikuYXR0PQpyKCJ0cmFuc2Zvcm0i
LCJ0cmFuc2xhdGUoIitrKyIsMCkiKSxkJiYocy53aWR0aChrKS5oZWlnaHQoTCkubWFyZ2luKHts
ZWZ0Om89Ci5sZWZ0LHRvcDpvLnRvcH0pLnN2Z0NvbnRhaW5lcih4KS54U2NhbGUoZyksTS5zZWxl
Y3QoIi5udi1pbnRlcmFjdGl2ZSIpLmNhbD0KbChzKSksdC53aWR0aChrKS5oZWlnaHQoTCkuY29s
b3IobS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8dShlLHQpPQp9KS5maWx0ZXIo
ZnVuY3Rpb24oZSx0KXtyZXR1cm4hbVt0XS5kaXNhYmxlZH0pKTt2YXIgUD0zREQuc2VsZWN0KCIu
bnYtbGluZXM9CldyYXAiKS5kYXR1bShtLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNh
YmxlZH0pKTtQLmNhbGwodCksYyYmKG4uc2NhbD0KZShnKS50aWNrcyhrLzEwMCkudGlja1NpemUo
LUwsMCksRC5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iPQosInRyYW5z
bGF0ZSgwLCIreS5yYW5nZSgpWzBdKyIpIiksRC5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5jYWxs
KG4pKSxoJiYoci49CnNjYWxlKHkpLnRpY2tzKEwvMzYpLnRpY2tTaXplKC1rLDApLEQuc2VsZWN0
KCIubnYteS5udi1heGlzIikuY2FsbChyKSksaS5kaT0Kc3BhdGNoLm9uKCJzdGF0ZUNoYW5nZSIs
ZnVuY3Rpb24oZSl7Yj0zRGUsUy5zdGF0ZUNoYW5nZShiKSxOLnVwZGF0ZSgpfSkscy5kPQppc3Bh
dGNoLm9uKCJlbGVtZW50TW91c2Vtb3ZlIixmdW5jdGlvbihpKXt0LmNsZWFySGlnaGxpZ2h0cygp
O3ZhciBhLGYsbCxjPQo9M0RbXTttLmZpbHRlcihmdW5jdGlvbihlLHQpe3JldHVybiBlLnNlcmll
c0luZGV4PTNEdCwhZS5kaXNhYmxlZH0pLmZvckVhY2g9CihmdW5jdGlvbihuLHIpe2Y9M0RlLmlu
dGVyYWN0aXZlQmlzZWN0KG4udmFsdWVzLGkucG9pbnRYVmFsdWUsTi54KCkpLHQuaGlnaD0KbGln
aHRQb2ludChyLGYsITApO3ZhciBzPTNEbi52YWx1ZXNbZl07aWYodHlwZW9mIHM9M0Q9M0QidW5k
ZWZpbmVkIilyZXR1cm47PQp0eXBlb2YgYT0zRD0zRCJ1bmRlZmluZWQiJiYoYT0zRHMpLHR5cGVv
ZiBsPTNEPTNEInVuZGVmaW5lZCImJihsPTNETi54U2NhbGU9CigpKE4ueCgpKHMsZikpKSxjLnB1
c2goe2tleTpuLmtleSx2YWx1ZTpOLnkoKShzLGYpLGNvbG9yOnUobixuLnNlcmllc0luZGV4KT0K
fSl9KTtpZihjLmxlbmd0aD4yKXt2YXIgaD0zRE4ueVNjYWxlKCkuaW52ZXJ0KGkubW91c2VZKSxw
PTNETWF0aC5hYnMoTi55U2NhPQpsZSgpLmRvbWFpbigpWzBdLU4ueVNjYWxlKCkuZG9tYWluKClb
MV0pLGQ9M0QuMDMqcCxnPTNEZS5uZWFyZXN0VmFsdWVJbmRleCg9CmMubWFwKGZ1bmN0aW9uKGUp
e3JldHVybiBlLnZhbHVlfSksaCxkKTtnIT0zRD0zRG51bGwmJihjW2ddLmhpZ2hsaWdodD0zRCEw
KT0KfXZhciB5PTNEbi50aWNrRm9ybWF0KCkoTi54KCkoYSxmKSk7cy50b29sdGlwLnBvc2l0aW9u
KHtsZWZ0Omwrby5sZWZ0LHRvcDppPQoubW91c2VZK28udG9wfSkuY2hhcnRDb250YWluZXIoQy5w
YXJlbnROb2RlKS5lbmFibGVkKHYpLnZhbHVlRm9ybWF0dGVyKGZ1bmM9CnRpb24oZSx0KXtyZXR1
cm4gci50aWNrRm9ybWF0KCkoZSl9KS5kYXRhKHt2YWx1ZTp5LHNlcmllczpjfSkoKSxzLnJlbmRl
ckd1aT0KZGVMaW5lKGwpfSkscy5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0IixmdW5jdGlv
bihlKXtTLnRvb2x0aXBIaWRlKCksdC5jPQpsZWFySGlnaGxpZ2h0cygpfSksUy5vbigidG9vbHRp
cFNob3ciLGZ1bmN0aW9uKGUpe3YmJlQoZSxDLnBhcmVudE5vZGUpfSksUy49Cm9uKCJjaGFuZ2VT
dGF0ZSIsZnVuY3Rpb24oZSl7dHlwZW9mIGUuZGlzYWJsZWQhPTNEInVuZGVmaW5lZCImJm0ubGVu
Z3RoPTNEPQo9M0Q9M0RlLmRpc2FibGVkLmxlbmd0aCYmKG0uZm9yRWFjaChmdW5jdGlvbih0LG4p
e3QuZGlzYWJsZWQ9M0RlLmRpc2FibGVkW249Cl19KSxiLmRpc2FibGVkPTNEZS5kaXNhYmxlZCks
Ti51cGRhdGUoKX0pfSksTn12YXIgdD0zRGUubW9kZWxzLmxpbmUoKSxuPTNEZT0KLm1vZGVscy5h
eGlzKCkscj0zRGUubW9kZWxzLmF4aXMoKSxpPTNEZS5tb2RlbHMubGVnZW5kKCkscz0zRGUuaW50
ZXJhY3RpdmVHPQp1aWRlbGluZSgpLG89M0R7dG9wOjMwLHJpZ2h0OjIwLGJvdHRvbTo1MCxsZWZ0
OjYwfSx1PTNEZS51dGlscy5kZWZhdWx0Q29sb3I9CigpLGE9M0RudWxsLGY9M0RudWxsLGw9M0Qh
MCxjPTNEITAsaD0zRCEwLHA9M0QhMSxkPTNEITEsdj0zRCEwLG09M0RmdW5jdGlvbj0KKGUsdCxu
LHIsaSl7cmV0dXJuIjxoMz4iK2UrIjwvaDM+IisiPHA+IituKyIgYXQgIit0KyI8L3A+In0sZyx5
LGI9M0R7fSx3PTNEPQpudWxsLEU9M0QiTm8gRGF0YSBBdmFpbGFibGUuIixTPTNEZDMuZGlzcGF0
Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhpZGUiLCI9CnN0YXRlQ2hhbmdlIiwiY2hhbmdlU3Rh
dGUiKSx4PTNEMDtuLm9yaWVudCgiYm90dG9tIikudGlja1BhZGRpbmcoNyksci5vcmllbj0KdChw
PyJyaWdodCI6ImxlZnQiKTt2YXIgVD0zRGZ1bmN0aW9uKGkscyl7dmFyIG89M0RpLnBvc1swXSso
cy5vZmZzZXRMZWZ0fHwwPQopLHU9M0RpLnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLGE9M0RuLnRp
Y2tGb3JtYXQoKSh0LngoKShpLnBvaW50LGkucG9pbnRJbmQ9CmV4KSksZj0zRHIudGlja0Zvcm1h
dCgpKHQueSgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksbD0zRG0oaS5zZXJpZXMua2V5LGEsZj0K
LGksTik7ZS50b29sdGlwLnNob3coW28sdV0sbCxudWxsLG51bGwscyl9O3JldHVybiB0LmRpc3Bh
dGNoLm9uKCJlbGVtZW50TW91PQpzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0Rb
ZS5wb3NbMF0rby5sZWZ0LGUucG9zWzFdK28udG9wXSxTLnRvb2w9CnRpcFNob3coZSl9KSx0LmRp
c3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7Uy50b29sdGlw
SD0KaWRlKGUpfSksUy5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7diYmZS50b29sdGlwLmNs
ZWFudXAoKX0pLE4uZGlzcGF0Y2g9Cj0zRFMsTi5saW5lcz0zRHQsTi5sZWdlbmQ9M0RpLE4ueEF4
aXM9M0RuLE4ueUF4aXM9M0RyLE4uaW50ZXJhY3RpdmVMYXllcj0zRD0KcyxkMy5yZWJpbmQoTix0
LCJkZWZpbmVkIiwiaXNBcmVhIiwieCIsInkiLCJzaXplIiwieFNjYWxlIiwieVNjYWxlIiwieERv
bWFpPQpuIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsImZvcmNlWCIsImZvcmNlWSIsImlu
dGVyYWN0aXZlIiwiY2xpcEVkZ2UiLCI9CmNsaXBWb3Jvbm9pIiwidXNlVm9yb25vaSIsImlkIiwi
aW50ZXJwb2xhdGUiKSxOLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdT0KbmMuYmluZChOKSxO
Lm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvLnRvcD0zRHR5
cGVvZiBlPQoudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOm8udG9wLG8ucmlnaHQ9M0R0eXBlb2Yg
ZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnI9CmlnaHQ6by5yaWdodCxvLmJvdHRvbT0zRHR5cGVv
ZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTpvLmJvdHRvbSxvLj0KbGVmdD0zRHR5
cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0Om8ubGVmdCxOKTpvfSxOLndpZHRoPTNE
ZnVuY3Rpb24oPQplKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0zRGUsTik6YX0sTi5oZWln
aHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW09CmVudHMubGVuZ3RoPyhmPTNEZSxOKTpmfSxO
LmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9Cj0zRGUudXRp
bHMuZ2V0Q29sb3IodCksaS5jb2xvcih1KSxOKTp1fSxOLnNob3dMZWdlbmQ9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYT0Kcmd1bWVudHMubGVuZ3RoPyhsPTNEZSxOKTpsfSxOLnNob3dYQXhpcz0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuPQpndGg/KGM9M0RlLE4pOmN9LE4uc2hvd1lB
eGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLE49Cik6aH0s
Ti5yaWdodEFsaWduWUF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
cD0zRGUsci5vcmllbj0KdChlPyJyaWdodCI6ImxlZnQiKSxOKTpwfSxOLnVzZUludGVyYWN0aXZl
R3VpZGVsaW5lPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyPQpndW1lbnRzLmxlbmd0aD8oZD0zRGUs
ZT0zRD0zRD0zRCEwJiYoTi5pbnRlcmFjdGl2ZSghMSksTi51c2VWb3Jvbm9pKCExKSksTik9Cjpk
fSxOLnRvb2x0aXBzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9M0Rl
LE4pOnZ9LE4udG9vbHRpcD0KQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhtPTNEZSxOKTptfSxOLnN0YXRlPTNEZnVuY3RpPQpvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oYj0zRGUsTik6Yn0sTi5kZWZhdWx0U3RhdGU9M0RmdW5jdGlvbihlKXtyZXQ9
CnVybiBhcmd1bWVudHMubGVuZ3RoPyh3PTNEZSxOKTp3fSxOLm5vRGF0YT0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubD0KZW5ndGg/KEU9M0RlLE4pOkV9LE4udHJhbnNpdGlvbkR1cmF0
aW9uPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5nPQp0aD8oeD0zRGUsTik6eH0s
Tn0sZS5tb2RlbHMubGluZVBsdXNCYXJDaGFydD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gVChlKXty
ZXQ9CnVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIGw9M0RkMy5zZWxlY3QodGhpcyksYz0zRHRo
aXMsdj0zRChhfHxwYXJzZUludChsLj0Kc3R5bGUoIndpZHRoIikpfHw5NjApLXUubGVmdC11LnJp
Z2h0LE49M0QoZnx8cGFyc2VJbnQobC5zdHlsZSgiaGVpZ2h0IikpfHw0PQowMCktdS50b3AtdS5i
b3R0b207VC51cGRhdGU9M0RmdW5jdGlvbigpe2wuY2FsbChUKX0sYi5kaXNhYmxlZD0zRGUubWFw
KGZ1bmM9CnRpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSk7aWYoIXcpe3ZhciBDO3c9M0R7fTtm
b3IoQyBpbiBiKWJbQ11pbnN0YW5jZW9mID0KQXJyYXk/d1tDXT0zRGJbQ10uc2xpY2UoMCk6d1tD
XT0zRGJbQ119aWYoIWV8fCFlLmxlbmd0aHx8IWUuZmlsdGVyKGZ1bmN0aW9uPQooZSl7cmV0dXJu
IGUudmFsdWVzLmxlbmd0aH0pLmxlbmd0aCl7dmFyIGs9M0RsLnNlbGVjdEFsbCgiLm52LW5vRGF0
YSIpLmRhdGE9CihbRV0pO3JldHVybiBrLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xh
c3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoIj0KZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFu
Y2hvciIsIm1pZGRsZSIpLGsuYXR0cigieCIsdS5sZWZ0K3YvMikuYXR0cigieSIsPQp1LnRvcCtO
LzIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxUfWwuc2VsZWN0QWxsKCIubnYtbm9EYXRh
IikucmVtb3ZlKCk9Cjt2YXIgTD0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2Fi
bGVkJiZlLmJhcn0pLEE9M0RlLmZpbHRlcihmdW5jdD0KaW9uKGUpe3JldHVybiFlLmJhcn0pO209
M0RBLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pLmxlbmd0aCYmPQpBLmZp
bHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pWzBdLnZhbHVlcy5sZW5ndGg/dC54
U2NhbGUoKTpuLnhTY2E9CmxlKCksZz0zRG4ueVNjYWxlKCkseT0zRHQueVNjYWxlKCk7dmFyIE89
M0RkMy5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJnLm52LT0Kd3JhcC5udi1saW5lUGx1c0JhciIp
LmRhdGEoW2VdKSxNPTNETy5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkPQoz
IG52LXdyYXAgbnYtbGluZVBsdXNCYXIiKS5hcHBlbmQoImciKSxfPTNETy5zZWxlY3QoImciKTtN
LmFwcGVuZCgiZyIpLmF0dHI9CigiY2xhc3MiLCJudi14IG52LWF4aXMiKSxNLmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnYteTEgbnYtYXhpcyIpLE0uYXBwZT0KbmQoImciKS5hdHRyKCJjbGFz
cyIsIm52LXkyIG52LWF4aXMiKSxNLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYmFyc1dy
PQphcCIpLE0uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1saW5lc1dyYXAiKSxNLmFwcGVu
ZCgiZyIpLmF0dHIoImNsYXNzIiw9CiJudi1sZWdlbmRXcmFwIikscCYmKG8ud2lkdGgodi8yKSxf
LnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5kYXR1bShlLm1hcChmdT0KbmN0aW9uKGUpe3JldHVy
biBlLm9yaWdpbmFsS2V5PTNEZS5vcmlnaW5hbEtleT0zRD0zRD0zRHVuZGVmaW5lZD9lLmtleTpl
Lm9yPQppZ2luYWxLZXksZS5rZXk9M0RlLm9yaWdpbmFsS2V5KyhlLmJhcj8iIChsZWZ0IGF4aXMp
IjoiIChyaWdodCBheGlzKSIpLGV9KSk9Ci5jYWxsKG8pLHUudG9wIT0zRG8uaGVpZ2h0KCkmJih1
LnRvcD0zRG8uaGVpZ2h0KCksTj0zRChmfHxwYXJzZUludChsLnN0eWxlKD0KImhlaWdodCIpKXx8
NDAwKS11LnRvcC11LmJvdHRvbSksXy5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuYXR0cigidHJh
bnNmb3JtPQoiLCJ0cmFuc2xhdGUoIit2LzIrIiwiKyAtdS50b3ArIikiKSksTy5hdHRyKCJ0cmFu
c2Zvcm0iLCJ0cmFuc2xhdGUoIit1LmxlZnQ9CisiLCIrdS50b3ArIikiKSx0LndpZHRoKHYpLmhl
aWdodChOKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbD0Kb3J8fGgoZSx0
KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkJiYhZVtuXS5iYXJ9
KSksbi53aWR0PQpoKHYpLmhlaWdodChOKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVy
biBlLmNvbG9yfHxoKGUsdCl9KS5maWx0ZXIoZnU9Cm5jdGlvbih0LG4pe3JldHVybiFlW25dLmRp
c2FibGVkJiZlW25dLmJhcn0pKTt2YXIgRD0zRF8uc2VsZWN0KCIubnYtYmFyc1dyYT0KcCIpLmRh
dHVtKEwubGVuZ3RoP0w6W3t2YWx1ZXM6W119XSksUD0zRF8uc2VsZWN0KCIubnYtbGluZXNXcmFw
IikuZGF0dW0oQVswPQpdJiYhQVswXS5kaXNhYmxlZD9BOlt7dmFsdWVzOltdfV0pO2QzLnRyYW5z
aXRpb24oRCkuY2FsbChuKSxkMy50cmFuc2l0aW9uKFA9CikuY2FsbCh0KSxyLnNjYWxlKG0pLnRp
Y2tzKHYvMTAwKS50aWNrU2l6ZSgtTiwwKSxfLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLj0KYXR0
cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitnLnJhbmdlKClbMF0rIikiKSxkMy50cmFuc2l0
aW9uKF8uc2VsZWN0KCIuPQpudi14Lm52LWF4aXMiKSkuY2FsbChyKSxpLnNjYWxlKGcpLnRpY2tz
KE4vMzYpLnRpY2tTaXplKC12LDApLGQzLnRyYW5zaXRpb249CihfLnNlbGVjdCgiLm52LXkxLm52
LWF4aXMiKSkuc3R5bGUoIm9wYWNpdHkiLEwubGVuZ3RoPzE6MCkuY2FsbChpKSxzLnNjYWxlKD0K
eSkudGlja3MoTi8zNikudGlja1NpemUoTC5sZW5ndGg/MDotdiwwKSxfLnNlbGVjdCgiLm52LXky
Lm52LWF4aXMiKS5zdHlsZSgiPQpvcGFjaXR5IixBLmxlbmd0aD8xOjApLmF0dHIoInRyYW5zZm9y
bSIsInRyYW5zbGF0ZSgiK3YrIiwwKSIpLGQzLnRyYW5zaXRpb249CihfLnNlbGVjdCgiLm52LXky
Lm52LWF4aXMiKSkuY2FsbChzKSxvLmRpc3BhdGNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24o
ZT0KKXtiPTNEZSxTLnN0YXRlQ2hhbmdlKGIpLFQudXBkYXRlKCl9KSxTLm9uKCJ0b29sdGlwU2hv
dyIsZnVuY3Rpb24oZSl7ZCYmeChlPQosYy5wYXJlbnROb2RlKX0pLFMub24oImNoYW5nZVN0YXRl
IixmdW5jdGlvbih0KXt0eXBlb2YgdC5kaXNhYmxlZCE9M0QidW5kZWY9CmluZWQiJiYoZS5mb3JF
YWNoKGZ1bmN0aW9uKGUsbil7ZS5kaXNhYmxlZD0zRHQuZGlzYWJsZWRbbl19KSxiLmRpc2FibGVk
PTNEdD0KLmRpc2FibGVkKSxULnVwZGF0ZSgpfSl9KSxUfXZhciB0PTNEZS5tb2RlbHMubGluZSgp
LG49M0RlLm1vZGVscy5oaXN0b3JpY2FsPQpCYXIoKSxyPTNEZS5tb2RlbHMuYXhpcygpLGk9M0Rl
Lm1vZGVscy5heGlzKCkscz0zRGUubW9kZWxzLmF4aXMoKSxvPTNEZS5tb2Q9CmVscy5sZWdlbmQo
KSx1PTNEe3RvcDozMCxyaWdodDo2MCxib3R0b206NTAsbGVmdDo2MH0sYT0zRG51bGwsZj0zRG51
bGwsbD0zRD0KZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0sYz0zRGZ1bmN0aW9uKGUpe3JldHVybiBl
Lnl9LGg9M0RlLnV0aWxzLmRlZmF1bHRDb2xvPQpyKCkscD0zRCEwLGQ9M0QhMCx2PTNEZnVuY3Rp
b24oZSx0LG4scixpKXtyZXR1cm4iPGgzPiIrZSsiPC9oMz4iKyI8cD4iK24rIiA9CmF0ICIrdCsi
PC9wPiJ9LG0sZyx5LGI9M0R7fSx3PTNEbnVsbCxFPTNEIk5vIERhdGEgQXZhaWxhYmxlLiIsUz0z
RGQzLmRpc3BhdD0KY2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhpZGUiLCJzdGF0ZUNoYW5nZSIs
ImNoYW5nZVN0YXRlIik7bi5wYWREYXRhKCEwKSx0PQouY2xpcEVkZ2UoITEpLnBhZERhdGEoITAp
LHIub3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg3KS5oaWdobGlnaHRaZXJvKCE9CjEpLGku
b3JpZW50KCJsZWZ0Iikscy5vcmllbnQoInJpZ2h0Iik7dmFyIHg9M0RmdW5jdGlvbihuLG8pe3Zh
ciB1PTNEbi5wb3NbMD0KXSsoby5vZmZzZXRMZWZ0fHwwKSxhPTNEbi5wb3NbMV0rKG8ub2Zmc2V0
VG9wfHwwKSxmPTNEci50aWNrRm9ybWF0KCkodC54KCkoPQpuLnBvaW50LG4ucG9pbnRJbmRleCkp
LGw9M0Qobi5zZXJpZXMuYmFyP2k6cykudGlja0Zvcm1hdCgpKHQueSgpKG4ucG9pbnQsbi49CnBv
aW50SW5kZXgpKSxjPTNEdihuLnNlcmllcy5rZXksZixsLG4sVCk7ZS50b29sdGlwLnNob3coW3Us
YV0sYyxuLnZhbHVlPDA/Ij0KbiI6InMiLG51bGwsbyl9O3JldHVybiB0LmRpc3BhdGNoLm9uKCJl
bGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpPQp7ZS5wb3M9M0RbZS5wb3NbMF0r
dS5sZWZ0LGUucG9zWzFdK3UudG9wXSxTLnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbig9
CiJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7Uy50b29sdGlwSGlkZShlKX0p
LG4uZGlzcGF0Y2gub24oImVsZT0KbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtl
LnBvcz0zRFtlLnBvc1swXSt1LmxlZnQsZS5wb3NbMV0rdS50b3BdPQosUy50b29sdGlwU2hvdyhl
KX0pLG4uZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtT
LnQ9Cm9vbHRpcEhpZGUoZSl9KSxTLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXtkJiZlLnRv
b2x0aXAuY2xlYW51cCgpfSksVC5kaT0Kc3BhdGNoPTNEUyxULmxlZ2VuZD0zRG8sVC5saW5lcz0z
RHQsVC5iYXJzPTNEbixULnhBeGlzPTNEcixULnkxQXhpcz0zRGksVC55PQoyQXhpcz0zRHMsZDMu
cmViaW5kKFQsdCwiZGVmaW5lZCIsInNpemUiLCJjbGlwVm9yb25vaSIsImludGVycG9sYXRlIiks
VC5vcHQ9CmlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoVCksVC54PTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndD0KaD8obD0zRGUsdC54KGUpLG4ueChlKSxUKTpsfSxU
Lnk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0KPTNEZSx0LnkoZSks
bi55KGUpLFQpOmN9LFQubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHUuPQp0b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6dS50b3AsdS5y
aWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCI9CnVuZGVmaW5lZCI/ZS5yaWdodDp1LnJpZ2h0LHUu
Ym90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dD0Kb206dS5ib3R0
b20sdS5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6dS5sZWZ0LFQp
OnV9LFQud2lkPQp0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNE
ZSxUKTphfSxULmhlaWdodD0zRGZ1bmN0aW9uKGU9Cil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGY9M0RlLFQpOmZ9LFQuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbj0KdHMubGVu
Z3RoPyhoPTNEZS51dGlscy5nZXRDb2xvcih0KSxvLmNvbG9yKGgpLFQpOmh9LFQuc2hvd0xlZ2Vu
ZD0zRGZ1bmN0aW9uPQooZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLFQpOnB9LFQu
dG9vbHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXI9Cmd1bWVudHMubGVuZ3RoPyhkPTNEZSxU
KTpkfSxULnRvb2x0aXBDb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cz0KLmxl
bmd0aD8odj0zRGUsVCk6dn0sVC5zdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhiPTNEZSxUPQopOmJ9LFQuZGVmYXVsdFN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHc9M0RlLFQpOnd9LFQubm89CkRhdGE9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT0zRGUsVCk6RX0sVH0sZS5tb2RlbHMubGluZVdpdD0K
aEZvY3VzQ2hhcnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIGsoZSl7cmV0dXJuIGUuZWFjaChmdW5j
dGlvbihlKXtmdW5jdGlvbiBSPQooZSl7dmFyIHQ9M0QrKGU9M0Q9M0QiZSIpLG49M0R0PzE6LTEs
cj0zRE8vMztyZXR1cm4iTSIrLjUqbisiLCIrcisiQTYsNiAwIDA9CiAiK3QrIiAiKzYuNSpuKyIs
Iisocis2KSsiViIrKDIqci02KSsiQTYsNiAwIDAgIit0KyIgIisuNSpuKyIsIisyKnIrIloiKyJN
Ij0KKzIuNSpuKyIsIisocis4KSsiViIrKDIqci04KSsiTSIrNC41Km4rIiwiKyhyKzgpKyJWIiso
MipyLTgpfWZ1bmN0aW9uIFUoKXthPQouZW1wdHkoKXx8YS5leHRlbnQodyksRi5kYXRhKFthLmVt
cHR5KCk/Zy5kb21haW4oKTp3XSkuZWFjaChmdW5jdGlvbihlLHQpe3Y9CmFyIG49M0RnKGVbMF0p
LXYucmFuZ2UoKVswXSxyPTNEdi5yYW5nZSgpWzFdLWcoZVsxXSk7ZDMuc2VsZWN0KHRoaXMpLnNl
bGVjdD0KKCIubGVmdCIpLmF0dHIoIndpZHRoIixuPDA/MDpuKSxkMy5zZWxlY3QodGhpcykuc2Vs
ZWN0KCIucmlnaHQiKS5hdHRyKCJ4IixnPQooZVsxXSkpLmF0dHIoIndpZHRoIixyPDA/MDpyKX0p
fWZ1bmN0aW9uIHooKXt3PTNEYS5lbXB0eSgpP251bGw6YS5leHRlbnQoKTs9CnZhciBuPTNEYS5l
bXB0eSgpP2cuZG9tYWluKCk6YS5leHRlbnQoKTtpZihNYXRoLmFicyhuWzBdLW5bMV0pPD0zRDEp
cmV0dXJuOz0KVC5icnVzaCh7ZXh0ZW50Om4sYnJ1c2g6YX0pLFUoKTt2YXIgcz0zRFAuc2VsZWN0
KCIubnYtZm9jdXMgLm52LWxpbmVzV3JhcCIpPQouZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7
cmV0dXJuIWUuZGlzYWJsZWR9KS5tYXAoZnVuY3Rpb24oZSxyKXtyZXR1cm57a2U9Cnk6ZS5rZXks
dmFsdWVzOmUudmFsdWVzLmZpbHRlcihmdW5jdGlvbihlLHIpe3JldHVybiB0LngoKShlLHIpPj0z
RG5bMF0mJnQueD0KKCkoZSxyKTw9M0RuWzFdfSl9fSkpO3MuY2FsbCh0KSxQLnNlbGVjdCgiLm52
LWZvY3VzIC5udi14Lm52LWF4aXMiKS5jYWxsKHIpPQosUC5zZWxlY3QoIi5udi1mb2N1cyAubnYt
eS5udi1heGlzIikuY2FsbChpKX12YXIgUz0zRGQzLnNlbGVjdCh0aGlzKSxOPTNEdGg9CmlzLEw9
M0QoaHx8cGFyc2VJbnQoUy5zdHlsZSgid2lkdGgiKSl8fDk2MCktZi5sZWZ0LWYucmlnaHQsQT0z
RChwfHxwYXJzZUludD0KKFMuc3R5bGUoImhlaWdodCIpKXx8NDAwKS1mLnRvcC1mLmJvdHRvbS1k
LE89M0RkLWwudG9wLWwuYm90dG9tO2sudXBkYXRlPTNEPQpmdW5jdGlvbigpe1MuY2FsbChrKX0s
ay5jb250YWluZXI9M0R0aGlzO2lmKCFlfHwhZS5sZW5ndGh8fCFlLmZpbHRlcihmdW5jdGk9Cm9u
KGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgpe3ZhciBNPTNEUy5zZWxlY3RBbGwo
Ii5udi1ub0RhdGEiKS5kYT0KdGEoW3hdKTtyZXR1cm4gTS5lbnRlcigpLmFwcGVuZCgidGV4dCIp
LmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRyPQooImR5IiwiLS43ZW0iKS5zdHls
ZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxNLmF0dHIoIngiLGYubGVmdCtMLzIpLmF0dHIoInk9
CiIsZi50b3ArQS8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksa31TLnNlbGVjdEFsbCgi
Lm52LW5vRGF0YSIpLnJlbW92ZT0KKCksdj0zRHQueFNjYWxlKCksbT0zRHQueVNjYWxlKCksZz0z
RG4ueFNjYWxlKCkseT0zRG4ueVNjYWxlKCk7dmFyIF89M0RTLnNlPQpsZWN0QWxsKCJnLm52LXdy
YXAubnYtbGluZVdpdGhGb2N1c0NoYXJ0IikuZGF0YShbZV0pLEQ9M0RfLmVudGVyKCkuYXBwZW5k
KCI9CmciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1saW5lV2l0aEZvY3VzQ2hhcnQi
KS5hcHBlbmQoImciKSxQPTNEXy5zZT0KbGVjdCgiZyIpO0QuYXBwZW5kKCJnIikuYXR0cigiY2xh
c3MiLCJudi1sZWdlbmRXcmFwIik7dmFyIEg9M0RELmFwcGVuZCgiZyIpPQouYXR0cigiY2xhc3Mi
LCJudi1mb2N1cyIpO0guYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14IG52LWF4aXMiKSxI
LmFwcGU9Cm5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKSxILmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnYtbGluZXNXcj0KYXAiKTt2YXIgQj0zREQuYXBwZW5kKCJnIikuYXR0
cigiY2xhc3MiLCJudi1jb250ZXh0Iik7Qi5hcHBlbmQoImciKS5hdHRyKCJjPQpsYXNzIiwibnYt
eCBudi1heGlzIiksQi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkgbnYtYXhpcyIpLEIu
YXBwZW5kKCI9CmciKS5hdHRyKCJjbGFzcyIsIm52LWxpbmVzV3JhcCIpLEIuYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJudi1icnVzaEJhY2tncj0Kb3VuZCIpLEIuYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudi14IG52LWJydXNoIiksYiYmKHUud2lkdGgoTCksUC5zZWxlY3QoPQoiLm52LWxl
Z2VuZFdyYXAiKS5kYXR1bShlKS5jYWxsKHUpLGYudG9wIT0zRHUuaGVpZ2h0KCkmJihmLnRvcD0z
RHUuaGVpZ2h0KCk9CixBPTNEKHB8fHBhcnNlSW50KFMuc3R5bGUoImhlaWdodCIpKXx8NDAwKS1m
LnRvcC1mLmJvdHRvbS1kKSxQLnNlbGVjdCgiLm52LT0KbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5z
Zm9ybSIsInRyYW5zbGF0ZSgwLCIrIC1mLnRvcCsiKSIpKSxfLmF0dHIoInRyYW5zZm9yPQptIiwi
dHJhbnNsYXRlKCIrZi5sZWZ0KyIsIitmLnRvcCsiKSIpLHQud2lkdGgoTCkuaGVpZ2h0KEEpLmNv
bG9yKGUubWFwKGZ1bmM9CnRpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8YyhlLHQpfSkuZmlsdGVy
KGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZT0KZH0pKSxuLmRlZmluZWQodC5kZWZp
bmVkKCkpLndpZHRoKEwpLmhlaWdodChPKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JlPQp0
dXJuIGUuY29sb3J8fGMoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRp
c2FibGVkfSkpLFAuc2VsZWM9CnQoIi5udi1jb250ZXh0IikuYXR0cigidHJhbnNmb3JtIiwidHJh
bnNsYXRlKDAsIisoQStmLmJvdHRvbStsLnRvcCkrIikiKTt2YT0KciBqPTNEUC5zZWxlY3QoIi5u
di1jb250ZXh0IC5udi1saW5lc1dyYXAiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1
PQpybiFlLmRpc2FibGVkfSkpO2QzLnRyYW5zaXRpb24oaikuY2FsbChuKSxyLnNjYWxlKHYpLnRp
Y2tzKEwvMTAwKS50aWNrU2l6ZSg9Ci1BLDApLGkuc2NhbGUobSkudGlja3MoQS8zNikudGlja1Np
emUoLUwsMCksUC5zZWxlY3QoIi5udi1mb2N1cyAubnYteC5udi1heD0KaXMiKS5hdHRyKCJ0cmFu
c2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK0ErIikiKSxhLngoZykub24oImJydXNoIixmdW5jdGlvbigp
e3ZhPQpyIGU9M0RrLnRyYW5zaXRpb25EdXJhdGlvbigpO2sudHJhbnNpdGlvbkR1cmF0aW9uKDAp
LHooKSxrLnRyYW5zaXRpb25EdXJhdGk9Cm9uKGUpfSksdyYmYS5leHRlbnQodyk7dmFyIEY9M0RQ
LnNlbGVjdCgiLm52LWJydXNoQmFja2dyb3VuZCIpLnNlbGVjdEFsbCgiZz0KIikuZGF0YShbd3x8
YS5leHRlbnQoKV0pLEk9M0RGLmVudGVyKCkuYXBwZW5kKCJnIik7SS5hcHBlbmQoInJlY3QiKS5h
dHRyKCJjPQpsYXNzIiwibGVmdCIpLmF0dHIoIngiLDApLmF0dHIoInkiLDApLmF0dHIoImhlaWdo
dCIsTyksSS5hcHBlbmQoInJlY3QiKS5hdHQ9CnIoImNsYXNzIiwicmlnaHQiKS5hdHRyKCJ4Iiww
KS5hdHRyKCJ5IiwwKS5hdHRyKCJoZWlnaHQiLE8pO3ZhciBxPTNEUC5zZWxlYz0KdCgiLm52LXgu
bnYtYnJ1c2giKS5jYWxsKGEpO3Euc2VsZWN0QWxsKCJyZWN0IikuYXR0cigiaGVpZ2h0IixPKSxx
LnNlbGVjdEFsPQpsKCIucmVzaXplIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsUikseigpLHMu
c2NhbGUoZykudGlja3MoTC8xMDApLnRpY2tTaXo9CmUoLU8sMCksUC5zZWxlY3QoIi5udi1jb250
ZXh0IC5udi14Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMD0KLCIreS5y
YW5nZSgpWzBdKyIpIiksZDMudHJhbnNpdGlvbihQLnNlbGVjdCgiLm52LWNvbnRleHQgLm52LXgu
bnYtYXhpcyIpKS5jPQphbGwocyksby5zY2FsZSh5KS50aWNrcyhPLzM2KS50aWNrU2l6ZSgtTCww
KSxkMy50cmFuc2l0aW9uKFAuc2VsZWN0KCIubnYtY289Cm50ZXh0IC5udi15Lm52LWF4aXMiKSku
Y2FsbChvKSxQLnNlbGVjdCgiLm52LWNvbnRleHQgLm52LXgubnYtYXhpcyIpLmF0dHIoIj0KdHJh
bnNmb3JtIiwidHJhbnNsYXRlKDAsIit5LnJhbmdlKClbMF0rIikiKSx1LmRpc3BhdGNoLm9uKCJz
dGF0ZUNoYW5nZSIsZnVuPQpjdGlvbihlKXtrLnVwZGF0ZSgpfSksVC5vbigidG9vbHRpcFNob3ci
LGZ1bmN0aW9uKGUpe0UmJkMoZSxOLnBhcmVudE5vZGUpfSk9Cn0pLGt9dmFyIHQ9M0RlLm1vZGVs
cy5saW5lKCksbj0zRGUubW9kZWxzLmxpbmUoKSxyPTNEZS5tb2RlbHMuYXhpcygpLGk9M0RlLj0K
bW9kZWxzLmF4aXMoKSxzPTNEZS5tb2RlbHMuYXhpcygpLG89M0RlLm1vZGVscy5heGlzKCksdT0z
RGUubW9kZWxzLmxlZ2VuZCgpPQosYT0zRGQzLnN2Zy5icnVzaCgpLGY9M0R7dG9wOjMwLHJpZ2h0
OjMwLGJvdHRvbTozMCxsZWZ0OjYwfSxsPTNEe3RvcDowLHJpZ2g9CnQ6MzAsYm90dG9tOjIwLGxl
ZnQ6NjB9LGM9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLGg9M0RudWxsLHA9M0RudWxsLGQ9M0Qx
MD0KMCx2LG0sZyx5LGI9M0QhMCx3PTNEbnVsbCxFPTNEITAsUz0zRGZ1bmN0aW9uKGUsdCxuLHIs
aSl7cmV0dXJuIjxoMz4iK2UrIjwvPQpoMz4iKyI8cD4iK24rIiBhdCAiK3QrIjwvcD4ifSx4PTNE
Ik5vIERhdGEgQXZhaWxhYmxlLiIsVD0zRGQzLmRpc3BhdGNoKCJ0b289Cmx0aXBTaG93IiwidG9v
bHRpcEhpZGUiLCJicnVzaCIpLE49M0QwO3QuY2xpcEVkZ2UoITApLG4uaW50ZXJhY3RpdmUoITEp
LHIubz0KcmllbnQoImJvdHRvbSIpLnRpY2tQYWRkaW5nKDUpLGkub3JpZW50KCJsZWZ0Iikscy5v
cmllbnQoImJvdHRvbSIpLnRpY2tQYWRkPQppbmcoNSksby5vcmllbnQoImxlZnQiKTt2YXIgQz0z
RGZ1bmN0aW9uKG4scyl7dmFyIG89M0RuLnBvc1swXSsocy5vZmZzZXRMZWY9CnR8fDApLHU9M0Ru
LnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLGE9M0RyLnRpY2tGb3JtYXQoKSh0LngoKShuLnBvaW50
LG4ucG9pbj0KdEluZGV4KSksZj0zRGkudGlja0Zvcm1hdCgpKHQueSgpKG4ucG9pbnQsbi5wb2lu
dEluZGV4KSksbD0zRFMobi5zZXJpZXMua2V5PQosYSxmLG4sayk7ZS50b29sdGlwLnNob3coW28s
dV0sbCxudWxsLG51bGwscyl9O3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW49CnRNb3VzZW92
ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rZi5sZWZ0LGUucG9zWzFd
K2YudG9wXSxULj0KdG9vbHRpcFNob3coZSl9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2Vv
dXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7VC50b29sPQp0aXBIaWRlKGUpfSksVC5vbigidG9vbHRp
cEhpZGUiLGZ1bmN0aW9uKCl7RSYmZS50b29sdGlwLmNsZWFudXAoKX0pLGsuZGlzcGE9CnRjaD0z
RFQsay5sZWdlbmQ9M0R1LGsubGluZXM9M0R0LGsubGluZXMyPTNEbixrLnhBeGlzPTNEcixrLnlB
eGlzPTNEaSxrLngyQT0KeGlzPTNEcyxrLnkyQXhpcz0zRG8sZDMucmViaW5kKGssdCwiZGVmaW5l
ZCIsImlzQXJlYSIsInNpemUiLCJ4RG9tYWluIiwieURvPQptYWluIiwieFJhbmdlIiwieVJhbmdl
IiwiZm9yY2VYIiwiZm9yY2VZIiwiaW50ZXJhY3RpdmUiLCJjbGlwRWRnZSIsImNsaXBWb3I9Cm9u
b2kiLCJpZCIpLGsub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChrKSxrLng9M0Rm
dW5jdGlvbihlKXtyZXR1cj0KbiBhcmd1bWVudHMubGVuZ3RoPyh0LngoZSksbi54KGUpLGspOnQu
eH0say55PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50PQpzLmxlbmd0aD8odC55KGUpLG4u
eShlKSxrKTp0Lnl9LGsubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW49
Cmd0aD8oZi50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6Zi50b3AsZi5y
aWdodD0zRHR5cGVvZiBlLnJpZz0KaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDpmLnJpZ2h0LGYu
Ym90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiPQo/ZS5ib3R0b206Zi5ib3R0
b20sZi5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6Zi5sZWZ0LGsp
OmY9Cn0say5tYXJnaW4yPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9
M0RlLGspOmx9LGsud2lkdGg9M0RmdT0KbmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhoPTNEZSxrKTpofSxrLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVyPQpuIGFyZ3VtZW50cy5s
ZW5ndGg/KHA9M0RlLGspOnB9LGsuaGVpZ2h0Mj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGU9Cm5ndGg/KGQ9M0RlLGspOmR9LGsuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oYz0zRGUudXRpbD0Kcy5nZXRDb2xvcih0KSx1LmNvbG9yKGMpLGspOmN9
LGsuc2hvd0xlZ2VuZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMuPQpsZW5ndGg/KGI9
M0RlLGspOmJ9LGsudG9vbHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oRT0zRGU9CixrKTpFfSxrLnRvb2x0aXBDb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KFM9M0RlLGspOlN9LD0Kay5pbnRlcnBvbGF0ZT0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LmludGVycG9sYXRlKGUpLG4uaW50PQplcnBvbGF0
ZShlKSxrKTp0LmludGVycG9sYXRlKCl9LGsubm9EYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW49Cmd0aD8oeD0zRGUsayk6eH0say54VGlja0Zvcm1hdD0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyLnRpYz0Ka0Zvcm1hdChlKSxzLnRpY2tGb3JtYXQo
ZSksayk6ci50aWNrRm9ybWF0KCl9LGsueVRpY2tGb3JtYXQ9M0RmdW5jdGlvbihlKXtyPQpldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhpLnRpY2tGb3JtYXQoZSksby50aWNrRm9ybWF0KGUpLGspOmku
dGlja0Zvcm1hdCgpfSw9CmsuYnJ1c2hFeHRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8odz0zRGUsayk6d30say50cmFuc2l0aT0Kb25EdXJhdGlvbj0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhOPTNEZSxrKTpOfSxrfSxlLm1vZGVscy5sPQpp
bmVQbHVzQmFyV2l0aEZvY3VzQ2hhcnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIEIoZSl7cmV0dXJu
IGUuZWFjaChmdW5jdGlvbig9CmUpe2Z1bmN0aW9uIHR0KGUpe3ZhciB0PTNEKyhlPTNEPTNEImUi
KSxuPTNEdD8xOi0xLHI9M0RJLzM7cmV0dXJuIk0iKy41Km4rIj0KLCIrcisiQTYsNiAwIDAgIit0
KyIgIis2LjUqbisiLCIrKHIrNikrIlYiKygyKnItNikrIkE2LDYgMCAwICIrdCsiICIrLjUqbisi
PQosIisyKnIrIloiKyJNIisyLjUqbisiLCIrKHIrOCkrIlYiKygyKnItOCkrIk0iKzQuNSpuKyIs
Iisocis4KSsiViIrKDIqci04KX09CmZ1bmN0aW9uIG50KCl7aC5lbXB0eSgpfHxoLmV4dGVudCh4
KSxZLmRhdGEoW2guZW1wdHkoKT9rLmRvbWFpbigpOnhdKS5lYWNoKD0KZnVuY3Rpb24oZSx0KXt2
YXIgbj0zRGsoZVswXSktay5yYW5nZSgpWzBdLHI9M0RrLnJhbmdlKClbMV0tayhlWzFdKTtkMy5z
ZWxlPQpjdCh0aGlzKS5zZWxlY3QoIi5sZWZ0IikuYXR0cigid2lkdGgiLG48MD8wOm4pLGQzLnNl
bGVjdCh0aGlzKS5zZWxlY3QoIi5yaWc9Cmh0IikuYXR0cigieCIsayhlWzFdKSkuYXR0cigid2lk
dGgiLHI8MD8wOnIpfSl9ZnVuY3Rpb24gcnQoKXt4PTNEaC5lbXB0eSgpPz0KbnVsbDpoLmV4dGVu
dCgpLFM9M0RoLmVtcHR5KCk/ay5kb21haW4oKTpoLmV4dGVudCgpLEQuYnJ1c2goe2V4dGVudDpT
LGJydXNoPQo6aH0pLG50KCksci53aWR0aChqKS5oZWlnaHQoRikuY29sb3IoZS5tYXAoZnVuY3Rp
b24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8dyg9CmUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXty
ZXR1cm4hZVtuXS5kaXNhYmxlZCYmZVtuXS5iYXJ9KSksdC53aWR0aChqKS5oZT0KaWdodChGKS5j
b2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHx3KGUsdCl9KS5maWx0ZXIo
ZnVuY3Rpb24oPQp0LG4pe3JldHVybiFlW25dLmRpc2FibGVkJiYhZVtuXS5iYXJ9KSk7dmFyIG49
M0QkLnNlbGVjdCgiLm52LWZvY3VzIC5udi1iYXI9CnNXcmFwIikuZGF0dW0oUi5sZW5ndGg/Ui5t
YXAoZnVuY3Rpb24oZSx0KXtyZXR1cm57a2V5OmUua2V5LHZhbHVlczplLnZhbHVlcz0KLmZpbHRl
cihmdW5jdGlvbihlLHQpe3JldHVybiByLngoKShlLHQpPj0zRFNbMF0mJnIueCgpKGUsdCk8PTNE
U1sxXX0pfX0pOlt7PQp2YWx1ZXM6W119XSksaT0zRCQuc2VsZWN0KCIubnYtZm9jdXMgLm52LWxp
bmVzV3JhcCIpLmRhdHVtKFVbMF0uZGlzYWJsZWQ/W3s9CnZhbHVlczpbXX1dOlUubWFwKGZ1bmN0
aW9uKGUsbil7cmV0dXJue2tleTplLmtleSx2YWx1ZXM6ZS52YWx1ZXMuZmlsdGVyKGZ1bj0KY3Rp
b24oZSxuKXtyZXR1cm4gdC54KCkoZSxuKT49M0RTWzBdJiZ0LngoKShlLG4pPD0zRFNbMV19KX19
KSk7Ui5sZW5ndGg/Qz0KPTNEci54U2NhbGUoKTpDPTNEdC54U2NhbGUoKSxzLnNjYWxlKEMpLnRp
Y2tzKGovMTAwKS50aWNrU2l6ZSgtRiwwKSxzLmRvbWFpPQpuKFtNYXRoLmNlaWwoU1swXSksTWF0
aC5mbG9vcihTWzFdKV0pLCQuc2VsZWN0KCIubnYteC5udi1heGlzIikuY2FsbChzKSxuLmM9CmFs
bChyKSxpLmNhbGwodCksJC5zZWxlY3QoIi5udi1mb2N1cyAubnYteC5udi1heGlzIikuYXR0cigi
dHJhbnNmb3JtIiwidHJhbj0Kc2xhdGUoMCwiK0wucmFuZ2UoKVswXSsiKSIpLHUuc2NhbGUoTCku
dGlja3MoRi8zNikudGlja1NpemUoLWosMCksJC5zZWxlY3QoPQoiLm52LWZvY3VzIC5udi15MS5u
di1heGlzIikuc3R5bGUoIm9wYWNpdHkiLFIubGVuZ3RoPzE6MCksYS5zY2FsZShBKS50aWNrcyg9
CkYvMzYpLnRpY2tTaXplKFIubGVuZ3RoPzA6LWosMCksJC5zZWxlY3QoIi5udi1mb2N1cyAubnYt
eTIubnYtYXhpcyIpLnN0eWxlKD0KIm9wYWNpdHkiLFUubGVuZ3RoPzE6MCkuYXR0cigidHJhbnNm
b3JtIiwidHJhbnNsYXRlKCIrQy5yYW5nZSgpWzFdKyIsMCkiKSwkPQouc2VsZWN0KCIubnYtZm9j
dXMgLm52LXkxLm52LWF4aXMiKS5jYWxsKHUpLCQuc2VsZWN0KCIubnYtZm9jdXMgLm52LXkyLm52
LWE9CnhpcyIpLmNhbGwoYSl9dmFyIE49M0RkMy5zZWxlY3QodGhpcyksUD0zRHRoaXMsaj0zRCh2
fHxwYXJzZUludChOLnN0eWxlKCJ3aT0KZHRoIikpfHw5NjApLXAubGVmdC1wLnJpZ2h0LEY9M0Qo
bXx8cGFyc2VJbnQoTi5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXAudG9wPQotcC5ib3R0b20tZyxJ
PTNEZy1kLnRvcC1kLmJvdHRvbTtCLnVwZGF0ZT0zRGZ1bmN0aW9uKCl7Ti5jYWxsKEIpfSxCLmNv
bnRhaW49CmVyPTNEdGhpcztpZighZXx8IWUubGVuZ3RofHwhZS5maWx0ZXIoZnVuY3Rpb24oZSl7
cmV0dXJuIGUudmFsdWVzLmxlbmd0aH0pLj0KbGVuZ3RoKXt2YXIgcT0zRE4uc2VsZWN0QWxsKCIu
bnYtbm9EYXRhIikuZGF0YShbX10pO3JldHVybiBxLmVudGVyKCkuYXBwZW5kPQooInRleHQiKS5h
dHRyKCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0
ZXh0LWFuY2g9Cm9yIiwibWlkZGxlIikscS5hdHRyKCJ4IixwLmxlZnQrai8yKS5hdHRyKCJ5Iixw
LnRvcCtGLzIpLnRleHQoZnVuY3Rpb24oZSl7cj0KZXR1cm4gZX0pLEJ9Ti5zZWxlY3RBbGwoIi5u
di1ub0RhdGEiKS5yZW1vdmUoKTt2YXIgUj0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpPQp7cmV0dXJu
IWUuZGlzYWJsZWQmJmUuYmFyfSksVT0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmJh
cn0pO0M9M0RyLng9ClNjYWxlKCksaz0zRG8uc2NhbGUoKSxMPTNEci55U2NhbGUoKSxBPTNEdC55
U2NhbGUoKSxPPTNEaS55U2NhbGUoKSxNPTNEbi55Uz0KY2FsZSgpO3ZhciB6PTNEZS5maWx0ZXIo
ZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQmJmUuYmFyfSkubWFwKGZ1bmN0aW9uPQooZSl7
cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlvbihlLHQpe3JldHVybnt4OnkoZSx0KSx5OmIoZSx0
KX19KX0pLFc9M0RlLmY9CmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkJiYhZS5i
YXJ9KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdT0KZXMubWFwKGZ1bmN0aW9uKGUsdCl7
cmV0dXJue3g6eShlLHQpLHk6YihlLHQpfX0pfSk7Qy5yYW5nZShbMCxqXSksay5kb21haW4oPQpk
My5leHRlbnQoZDMubWVyZ2Uoei5jb25jYXQoVykpLGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9KSku
cmFuZ2UoWzAsal0pO3ZhciA9Clg9M0ROLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LWxpbmVQbHVz
QmFyIikuZGF0YShbZV0pLFY9M0RYLmVudGVyKCkuYXBwZW5kKD0KImciKS5hdHRyKCJjbGFzcyIs
Im52ZDMgbnYtd3JhcCBudi1saW5lUGx1c0JhciIpLmFwcGVuZCgiZyIpLCQ9M0RYLnNlbGVjdCgi
PQpnIik7Vi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZFdyYXAiKTt2YXIgSj0z
RFYuYXBwZW5kKCJnIikuYXR0cig9CiJjbGFzcyIsIm52LWZvY3VzIik7Si5hcHBlbmQoImciKS5h
dHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcyIpLEouYXBwZW5kKCJnIj0KKS5hdHRyKCJjbGFzcyIs
Im52LXkxIG52LWF4aXMiKSxKLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteTIgbnYtYXhp
cyIpPQosSi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWJhcnNXcmFwIiksSi5hcHBlbmQo
ImciKS5hdHRyKCJjbGFzcyIsIm52LWw9CmluZXNXcmFwIik7dmFyIEs9M0RWLmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnYtY29udGV4dCIpO0suYXBwZW5kKCJnIikuYT0KdHRyKCJjbGFzcyIs
Im52LXggbnYtYXhpcyIpLEsuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15MSBudi1heGlz
IiksSy5hPQpwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteTIgbnYtYXhpcyIpLEsuYXBwZW5k
KCJnIikuYXR0cigiY2xhc3MiLCJudi1iYXI9CnNXcmFwIiksSy5hcHBlbmQoImciKS5hdHRyKCJj
bGFzcyIsIm52LWxpbmVzV3JhcCIpLEsuYXBwZW5kKCJnIikuYXR0cigiY2xhcz0KcyIsIm52LWJy
dXNoQmFja2dyb3VuZCIpLEsuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14IG52LWJydXNo
IiksRSYmKGMuPQp3aWR0aChqLzIpLCQuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmRhdHVtKGUu
bWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLm9yaWc9CmluYWxLZXk9M0RlLm9yaWdpbmFsS2V5PTNE
PTNEPTNEdW5kZWZpbmVkP2Uua2V5OmUub3JpZ2luYWxLZXksZS5rZXk9M0RlLm9yaT0KZ2luYWxL
ZXkrKGUuYmFyPyIgKGxlZnQgYXhpcykiOiIgKHJpZ2h0IGF4aXMpIiksZX0pKS5jYWxsKGMpLHAu
dG9wIT0zRGMuaGVpPQpnaHQoKSYmKHAudG9wPTNEYy5oZWlnaHQoKSxGPTNEKG18fHBhcnNlSW50
KE4uc3R5bGUoImhlaWdodCIpKXx8NDAwKS1wLnRvcC09CnAuYm90dG9tLWcpLCQuc2VsZWN0KCIu
bnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2ovMisiLD0KIisg
LXAudG9wKyIpIikpLFguYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrcC5sZWZ0KyIsIitw
LnRvcCsiKSIpLGkud2lkPQp0aChqKS5oZWlnaHQoSSkuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0
KXtyZXR1cm4gZS5jb2xvcnx8dyhlLHQpfSkuZmlsdGVyKGY9CnVuY3Rpb24odCxuKXtyZXR1cm4h
ZVtuXS5kaXNhYmxlZCYmZVtuXS5iYXJ9KSksbi53aWR0aChqKS5oZWlnaHQoSSkuY29sb3IoZT0K
Lm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHx3KGUsdCl9KS5maWx0ZXIoZnVuY3Rp
b24odCxuKXtyZXR1cm4hZVtuPQpdLmRpc2FibGVkJiYhZVtuXS5iYXJ9KSk7dmFyIFE9M0QkLnNl
bGVjdCgiLm52LWNvbnRleHQgLm52LWJhcnNXcmFwIikuZGF0dW09CihSLmxlbmd0aD9SOlt7dmFs
dWVzOltdfV0pLEc9M0QkLnNlbGVjdCgiLm52LWNvbnRleHQgLm52LWxpbmVzV3JhcCIpLmRhdHVt
KD0KVVswXS5kaXNhYmxlZD9be3ZhbHVlczpbXX1dOlUpOyQuc2VsZWN0KCIubnYtY29udGV4dCIp
LmF0dHIoInRyYW5zZm9ybSIsInRyPQphbnNsYXRlKDAsIisoRitwLmJvdHRvbStkLnRvcCkrIiki
KSxRLmNhbGwoaSksRy5jYWxsKG4pLGgueChrKS5vbigiYnJ1c2giLHI9CnQpLHgmJmguZXh0ZW50
KHgpO3ZhciBZPTNEJC5zZWxlY3QoIi5udi1icnVzaEJhY2tncm91bmQiKS5zZWxlY3RBbGwoImci
KS5kYT0KdGEoW3h8fGguZXh0ZW50KCldKSxaPTNEWS5lbnRlcigpLmFwcGVuZCgiZyIpO1ouYXBw
ZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiPQosImxlZnQiKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5Iiww
KS5hdHRyKCJoZWlnaHQiLEkpLFouYXBwZW5kKCJyZWN0IikuYXR0cigiY2w9CmFzcyIsInJpZ2h0
IikuYXR0cigieCIsMCkuYXR0cigieSIsMCkuYXR0cigiaGVpZ2h0IixJKTt2YXIgZXQ9M0QkLnNl
bGVjdCgiLj0KbnYteC5udi1icnVzaCIpLmNhbGwoaCk7ZXQuc2VsZWN0QWxsKCJyZWN0IikuYXR0
cigiaGVpZ2h0IixJKSxldC5zZWxlY3RBbGwoPQoiLnJlc2l6ZSIpLmFwcGVuZCgicGF0aCIpLmF0
dHIoImQiLHR0KSxvLnRpY2tzKGovMTAwKS50aWNrU2l6ZSgtSSwwKSwkLnNlbGU9CmN0KCIubnYt
Y29udGV4dCAubnYteC5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitP
LnJhbmdlKClbMD0KXSsiKSIpLCQuc2VsZWN0KCIubnYtY29udGV4dCAubnYteC5udi1heGlzIiku
Y2FsbChvKSxmLnNjYWxlKE8pLnRpY2tzKEkvMzYpPQoudGlja1NpemUoLWosMCksJC5zZWxlY3Qo
Ii5udi1jb250ZXh0IC5udi15MS5udi1heGlzIikuc3R5bGUoIm9wYWNpdHkiLFIubGU9Cm5ndGg/
MTowKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK2sucmFuZ2UoKVswXSsiKSIpLCQu
c2VsZWN0KCIubnYtYz0Kb250ZXh0IC5udi15MS5udi1heGlzIikuY2FsbChmKSxsLnNjYWxlKE0p
LnRpY2tzKEkvMzYpLnRpY2tTaXplKFIubGVuZ3RoPzA6PQotaiwwKSwkLnNlbGVjdCgiLm52LWNv
bnRleHQgLm52LXkyLm52LWF4aXMiKS5zdHlsZSgib3BhY2l0eSIsVS5sZW5ndGg/MTowKS49CmF0
dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2sucmFuZ2UoKVsxXSsiLDApIiksJC5zZWxlY3Qo
Ii5udi1jb250ZXh0IC5udj0KLXkyLm52LWF4aXMiKS5jYWxsKGwpLGMuZGlzcGF0Y2gub24oInN0
YXRlQ2hhbmdlIixmdW5jdGlvbihlKXtCLnVwZGF0ZSgpfSksPQpELm9uKCJ0b29sdGlwU2hvdyIs
ZnVuY3Rpb24oZSl7VCYmSChlLFAucGFyZW50Tm9kZSl9KSxydCgpfSksQn12YXIgdD0zRGUubW89
CmRlbHMubGluZSgpLG49M0RlLm1vZGVscy5saW5lKCkscj0zRGUubW9kZWxzLmhpc3RvcmljYWxC
YXIoKSxpPTNEZS5tb2RlbHMuaD0KaXN0b3JpY2FsQmFyKCkscz0zRGUubW9kZWxzLmF4aXMoKSxv
PTNEZS5tb2RlbHMuYXhpcygpLHU9M0RlLm1vZGVscy5heGlzKCksPQphPTNEZS5tb2RlbHMuYXhp
cygpLGY9M0RlLm1vZGVscy5heGlzKCksbD0zRGUubW9kZWxzLmF4aXMoKSxjPTNEZS5tb2RlbHMu
bGU9CmdlbmQoKSxoPTNEZDMuc3ZnLmJydXNoKCkscD0zRHt0b3A6MzAscmlnaHQ6MzAsYm90dG9t
OjMwLGxlZnQ6NjB9LGQ9M0R7dG9wOj0KMCxyaWdodDozMCxib3R0b206MjAsbGVmdDo2MH0sdj0z
RG51bGwsbT0zRG51bGwsZz0zRDEwMCx5PTNEZnVuY3Rpb24oZSl7cmV0PQp1cm4gZS54fSxiPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0sdz0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCksRT0zRCEw
LFMseD0KPTNEbnVsbCxUPTNEITAsTj0zRGZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIjxoMz4i
K2UrIjwvaDM+IisiPHA+IituKyIgYXQgPQoiK3QrIjwvcD4ifSxDLGssTCxBLE8sTSxfPTNEIk5v
IERhdGEgQXZhaWxhYmxlLiIsRD0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2g9Cm93IiwidG9vbHRp
cEhpZGUiLCJicnVzaCIpLFA9M0QwO3QuY2xpcEVkZ2UoITApLG4uaW50ZXJhY3RpdmUoITEpLHMu
b3JpZW50KD0KImJvdHRvbSIpLnRpY2tQYWRkaW5nKDUpLHUub3JpZW50KCJsZWZ0IiksYS5vcmll
bnQoInJpZ2h0Iiksby5vcmllbnQoImJvdHRvPQptIikudGlja1BhZGRpbmcoNSksZi5vcmllbnQo
ImxlZnQiKSxsLm9yaWVudCgicmlnaHQiKTt2YXIgSD0zRGZ1bmN0aW9uKG4scik9CntTJiYobi5w
b2ludEluZGV4Kz0zRE1hdGguY2VpbChTWzBdKSk7dmFyIGk9M0RuLnBvc1swXSsoci5vZmZzZXRM
ZWZ0fHwwKSxvPQo9M0RuLnBvc1sxXSsoci5vZmZzZXRUb3B8fDApLGY9M0RzLnRpY2tGb3JtYXQo
KSh0LngoKShuLnBvaW50LG4ucG9pbnRJbmRleCk9CiksbD0zRChuLnNlcmllcy5iYXI/dTphKS50
aWNrRm9ybWF0KCkodC55KCkobi5wb2ludCxuLnBvaW50SW5kZXgpKSxjPTNETihuLj0Kc2VyaWVz
LmtleSxmLGwsbixCKTtlLnRvb2x0aXAuc2hvdyhbaSxvXSxjLG4udmFsdWU8MD8ibiI6InMiLG51
bGwscil9O3JldHVyPQpuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIs
ZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rcC49CmxlZnQsZS5wb3NbMV0rcC50b3BdLEQu
dG9vbHRpcFNob3coZSl9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbD0KdGlw
IixmdW5jdGlvbihlKXtELnRvb2x0aXBIaWRlKGUpfSksci5kaXNwYXRjaC5vbigiZWxlbWVudE1v
dXNlb3Zlci50b29sdGlwPQoiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK3AubGVmdCxl
LnBvc1sxXStwLnRvcF0sRC50b29sdGlwU2hvdyhlKX0pLHI9Ci5kaXNwYXRjaC5vbigiZWxlbWVu
dE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe0QudG9vbHRpcEhpZGUoZSl9KSxELm9uKD0K
InRvb2x0aXBIaWRlIixmdW5jdGlvbigpe1QmJmUudG9vbHRpcC5jbGVhbnVwKCl9KSxCLmRpc3Bh
dGNoPTNERCxCLmxlZ2VuZD0KPTNEYyxCLmxpbmVzPTNEdCxCLmxpbmVzMj0zRG4sQi5iYXJzPTNE
cixCLmJhcnMyPTNEaSxCLnhBeGlzPTNEcyxCLngyQXhpcz0KPTNEbyxCLnkxQXhpcz0zRHUsQi55
MkF4aXM9M0RhLEIueTNBeGlzPTNEZixCLnk0QXhpcz0zRGwsZDMucmViaW5kKEIsdCwiZGVmPQpp
bmVkIiwic2l6ZSIsImNsaXBWb3Jvbm9pIiwiaW50ZXJwb2xhdGUiKSxCLm9wdGlvbnM9M0RlLnV0
aWxzLm9wdGlvbnNGdW5jLmI9CmluZChCKSxCLng9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oeT0zRGUsdC54KGUpLHIueChlKSxCKTp5fT0KLEIueT0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPTNEZSx0LnkoZSksci55KGUpLEIpOmJ9LEIubWFy
PQpnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocC50b3A9M0R0eXBl
b2YgZS50b3AhPTNEInVuZGVmaW49CmVkIj9lLnRvcDpwLnRvcCxwLnJpZ2h0PTNEdHlwZW9mIGUu
cmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDpwLnJpZ2h0LHAuYj0Kb3R0b209M0R0eXBlb2Yg
ZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206cC5ib3R0b20scC5sZWZ0PTNEdHlwZW9m
IGUuPQpsZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDpwLmxlZnQsQik6cH0sQi53aWR0aD0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWU9Cm50cy5sZW5ndGg/KHY9M0RlLEIpOnZ9LEIuaGVpZ2h0
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09Cj0zRGUsQik6bX0sQi5j
b2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3PTNEZS51dGlscy5n
ZXRDbz0KbG9yKHQpLGMuY29sb3IodyksQik6d30sQi5zaG93TGVnZW5kPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/PQooRT0zRGUsQik6RX0sQi50b29sdGlwcz0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhUPTNEZSxCKTpUfSw9CkIudG9vbHRpcENv
bnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTj0zRGUsQik6Tn0s
Qi5ub0RhdD0KYT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhfPTNEZSxC
KTpffSxCLmJydXNoRXh0ZW50PTNEZnVuY3RpPQpvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oeD0zRGUsQik6eH0sQn0sZS5tb2RlbHMubXVsdGlCYXI9M0RmdW5jdGlvbig9Cil7ZnVuY3Rp
b24gQyhlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBnPTNEbi10LmxlZnQtdC5yaWdo
dCxDPTNEci10Lj0KdG9wLXQuYm90dG9tLGs9M0RkMy5zZWxlY3QodGhpcyk7ZCYmZS5sZW5ndGgm
JihkPTNEW3t2YWx1ZXM6ZVswXS52YWx1ZXMubWFwPQooZnVuY3Rpb24oZSl7cmV0dXJue3g6ZS54
LHk6MCxzZXJpZXM6ZS5zZXJpZXMsc2l6ZTouMDF9fSl9XSksYyYmKGU9M0RkMy5sYXk9Cm91dC5z
dGFjaygpLm9mZnNldChoKS52YWx1ZXMoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzfSkueShh
KSghZS5sZW5ndGgmJj0KZD9kOmUpKSxlLmZvckVhY2goZnVuY3Rpb24oZSx0KXtlLnZhbHVlcy5m
b3JFYWNoKGZ1bmN0aW9uKGUpe2Uuc2VyaWVzPTNEdH0pPQp9KSxjJiZlWzBdLnZhbHVlcy5tYXAo
ZnVuY3Rpb24odCxuKXt2YXIgcj0zRDAsaT0zRDA7ZS5tYXAoZnVuY3Rpb24oZSl7dmFyIHQ9Cj0z
RGUudmFsdWVzW25dO3Quc2l6ZT0zRE1hdGguYWJzKHQueSksdC55PDA/KHQueTE9M0RpLGktPTNE
dC5zaXplKToodC55MT0zRD0KdC5zaXplK3Iscis9M0R0LnNpemUpfSl9KTt2YXIgTD0zRHkmJmI/
W106ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzPQoubWFwKGZ1bmN0aW9uKGUsdCl7
cmV0dXJue3g6dShlLHQpLHk6YShlLHQpLHkwOmUueTAseTE6ZS55MX19KX0pO2kuZG9tYWluKHk9
Cnx8ZDMubWVyZ2UoTCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9KSkucmFuZ2VCYW5kcyh3
fHxbMCxnXSxTKSxzLmRvbWFpbj0KKGJ8fGQzLmV4dGVudChkMy5tZXJnZShMKS5tYXAoZnVuY3Rp
b24oZSl7cmV0dXJuIGM/ZS55PjA/ZS55MTplLnkxK2UueTplLnl9PQopLmNvbmNhdChmKSkpLnJh
bmdlKEV8fFtDLDBdKSxpLmRvbWFpbigpWzBdPTNEPTNEPTNEaS5kb21haW4oKVsxXSYmKGkuZG9t
YWk9Cm4oKVswXT9pLmRvbWFpbihbaS5kb21haW4oKVswXS1pLmRvbWFpbigpWzBdKi4wMSxpLmRv
bWFpbigpWzFdK2kuZG9tYWluKClbMT0KXSouMDFdKTppLmRvbWFpbihbLTEsMV0pKSxzLmRvbWFp
bigpWzBdPTNEPTNEPTNEcy5kb21haW4oKVsxXSYmKHMuZG9tYWluKClbPQowXT9zLmRvbWFpbihb
cy5kb21haW4oKVswXStzLmRvbWFpbigpWzBdKi4wMSxzLmRvbWFpbigpWzFdLXMuZG9tYWluKClb
MV0qLjA9CjFdKTpzLmRvbWFpbihbLTEsMV0pKSxUPTNEVHx8aSxOPTNETnx8czt2YXIgQT0zRGsu
c2VsZWN0QWxsKCJnLm52LXdyYXAubnYtbT0KdWx0aWJhciIpLmRhdGEoW2VdKSxPPTNEQS5lbnRl
cigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52PQotbXVsdGliYXIi
KSxNPTNETy5hcHBlbmQoImRlZnMiKSxfPTNETy5hcHBlbmQoImciKSxEPTNEQS5zZWxlY3QoImci
KTtfLmFwcGU9Cm5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1ncm91cHMiKSxBLmF0dHIoInRyYW5z
Zm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLD0KIit0LnRvcCsiKSIpLE0uYXBwZW5kKCJjbGlw
UGF0aCIpLmF0dHIoImlkIiwibnYtZWRnZS1jbGlwLSIrbykuYXBwZW5kKCJyZWN0PQoiKSxBLnNl
bGVjdCgiI252LWVkZ2UtY2xpcC0iK28rIiByZWN0IikuYXR0cigid2lkdGgiLGcpLmF0dHIoImhl
aWdodCIsQyksRC49CmF0dHIoImNsaXAtcGF0aCIsbD8idXJsKCNudi1lZGdlLWNsaXAtIitvKyIp
IjoiIik7dmFyIFA9M0RBLnNlbGVjdCgiLm52LWdybz0KdXBzIikuc2VsZWN0QWxsKCIubnYtZ3Jv
dXAiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlfSxmdW5jdGlvbihlLHQpe3JldHVyPQpuIHR9
KTtQLmVudGVyKCkuYXBwZW5kKCJnIikuc3R5bGUoInN0cm9rZS1vcGFjaXR5IiwxZS02KS5zdHls
ZSgiZmlsbC1vcGFjaXQ9CnkiLDFlLTYpLFAuZXhpdCgpLnNlbGVjdEFsbCgicmVjdC5udi1iYXIi
KS5hdHRyKCJ5IixmdW5jdGlvbihlKXtyZXR1cm4gYz9OKD0KZS55MCk6TigwKX0pLmF0dHIoImhl
aWdodCIsMCkucmVtb3ZlKCksUC5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4iPQpu
di1ncm91cCBudi1zZXJpZXMtIit0fSkuY2xhc3NlZCgiaG92ZXIiLGZ1bmN0aW9uKGUpe3JldHVy
biBlLmhvdmVyfSkuc3R5bGU9CigiZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChlLHQpfSku
c3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcD0KKGUsdCl9KSxQLnN0eWxlKCJz
dHJva2Utb3BhY2l0eSIsMSkuc3R5bGUoImZpbGwtb3BhY2l0eSIsLjc1KTt2YXIgSD0zRFAuc2Vs
PQplY3RBbGwoInJlY3QubnYtYmFyIikuZGF0YShmdW5jdGlvbih0KXtyZXR1cm4gZCYmIWUubGVu
Z3RoP2QudmFsdWVzOnQudmFsdWU9CnN9KTtILmV4aXQoKS5yZW1vdmUoKTt2YXIgQj0zREguZW50
ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsZnVuY3Rpbz0KbihlLHQpe3JldHVybiBh
KGUsdCk8MD8ibnYtYmFyIG5lZ2F0aXZlIjoibnYtYmFyIHBvc2l0aXZlIn0pLmF0dHIoIngiLGZ1
bmN0PQppb24odCxuLHIpe3JldHVybiBjPzA6cippLnJhbmdlQmFuZCgpL2UubGVuZ3RofSkuYXR0
cigieSIsZnVuY3Rpb24oZSl7cmV0dXI9Cm4gTihjP2UueTA6MCl9KS5hdHRyKCJoZWlnaHQiLDAp
LmF0dHIoIndpZHRoIixpLnJhbmdlQmFuZCgpLyhjPzE6ZS5sZW5ndGgpKT0KLmF0dHIoInRyYW5z
Zm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIraSh1KGUsdCkpKyIsMCkifSk7
SC5zdHlsPQplKCJmaWxsIixmdW5jdGlvbihlLHQsbil7cmV0dXJuIHAoZSxuLHQpfSkuc3R5bGUo
InN0cm9rZSIsZnVuY3Rpb24oZSx0LG4pe3I9CmV0dXJuIHAoZSxuLHQpfSkub24oIm1vdXNlb3Zl
ciIsZnVuY3Rpb24odCxuKXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgiaG92ZT0KciIsITApLHgu
ZWxlbWVudE1vdXNlb3Zlcih7dmFsdWU6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNd
LHBvczpbaSh1PQoodCxuKSkraS5yYW5nZUJhbmQoKSooYz9lLmxlbmd0aC8yOnQuc2VyaWVzKy41
KS9lLmxlbmd0aCxzKGEodCxuKSsoYz90LnkwOjA9CikpXSxwb2ludEluZGV4Om4sc2VyaWVzSW5k
ZXg6dC5zZXJpZXMsZTpkMy5ldmVudH0pfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbj0KKHQsbil7
ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMSkseC5lbGVtZW50TW91c2VvdXQoe3Zh
bHVlOmEodCxuKSxwPQpvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvaW50SW5kZXg6bixzZXJp
ZXNJbmRleDp0LnNlcmllcyxlOmQzLmV2ZW50fSl9KS49Cm9uKCJjbGljayIsZnVuY3Rpb24odCxu
KXt4LmVsZW1lbnRDbGljayh7dmFsdWU6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmVbdC5zZT0Kcmll
c10scG9zOltpKHUodCxuKSkraS5yYW5nZUJhbmQoKSooYz9lLmxlbmd0aC8yOnQuc2VyaWVzKy41
KS9lLmxlbmd0aCxzKGEoPQp0LG4pKyhjP3QueTA6MCkpXSxwb2ludEluZGV4Om4sc2VyaWVzSW5k
ZXg6dC5zZXJpZXMsZTpkMy5ldmVudH0pLGQzLmV2ZW50LnM9CnRvcFByb3BhZ2F0aW9uKCl9KS5v
bigiZGJsY2xpY2siLGZ1bmN0aW9uKHQsbil7eC5lbGVtZW50RGJsQ2xpY2soe3ZhbHVlOmEodD0K
LG4pLHBvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvczpbaSh1KHQsbikpK2kucmFuZ2VCYW5k
KCkqKGM/ZS5sZW5ndGgvMjp0PQouc2VyaWVzKy41KS9lLmxlbmd0aCxzKGEodCxuKSsoYz90Lnkw
OjApKV0scG9pbnRJbmRleDpuLHNlcmllc0luZGV4OnQuc2VyaWU9CnMsZTpkMy5ldmVudH0pLGQz
LmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfSksSC5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXty
ZT0KdHVybiBhKGUsdCk8MD8ibnYtYmFyIG5lZ2F0aXZlIjoibnYtYmFyIHBvc2l0aXZlIn0pLmF0
dHIoInRyYW5zZm9ybSIsZnVuY3RpPQpvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitpKHUoZSx0
KSkrIiwwKSJ9KSx2JiYobXx8KG09M0RlLm1hcChmdW5jdGlvbigpe3I9CmV0dXJuITB9KSksSC5z
dHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0LG4pe3JldHVybiBkMy5yZ2IodihlLHQpKS5kYXJrZXIo
bS5tYT0KcChmdW5jdGlvbihlLHQpe3JldHVybiB0fSkuZmlsdGVyKGZ1bmN0aW9uKGUsdCl7cmV0
dXJuIW1bdF19KVtuXSkudG9TdHJpbmcoPQopfSkuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSx0
LG4pe3JldHVybiBkMy5yZ2IodihlLHQpKS5kYXJrZXIobS5tYXAoZnVuY3Q9CmlvbihlLHQpe3Jl
dHVybiB0fSkuZmlsdGVyKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIW1bdF19KVtuXSkudG9TdHJpbmco
KX0pKSxjPz0KSC5hdHRyKCJ5IixmdW5jdGlvbihlLHQpe3JldHVybiBzKGM/ZS55MTowKX0pLmF0
dHIoImhlaWdodCIsZnVuY3Rpb24oZSx0KXtyPQpldHVybiBNYXRoLm1heChNYXRoLmFicyhzKGUu
eSsoYz9lLnkwOjApKS1zKGM/ZS55MDowKSksMSl9KS5hdHRyKCJ4IixmdW5jdGk9Cm9uKHQsbil7
cmV0dXJuIGM/MDp0LnNlcmllcyppLnJhbmdlQmFuZCgpL2UubGVuZ3RofSkuYXR0cigid2lkdGgi
LGkucmFuZ2VCYT0KbmQoKS8oYz8xOmUubGVuZ3RoKSk6SC5hdHRyKCJ4IixmdW5jdGlvbih0LG4p
e3JldHVybiB0LnNlcmllcyppLnJhbmdlQmFuZCgpPQovZS5sZW5ndGh9KS5hdHRyKCJ3aWR0aCIs
aS5yYW5nZUJhbmQoKS9lLmxlbmd0aCkuYXR0cigieSIsZnVuY3Rpb24oZSx0KXtyZXQ9CnVybiBh
KGUsdCk8MD9zKDApOnMoMCktcyhhKGUsdCkpPDE/cygwKS0xOnMoYShlLHQpKXx8MH0pLmF0dHIo
ImhlaWdodCIsZnVuYz0KdGlvbihlLHQpe3JldHVybiBNYXRoLm1heChNYXRoLmFicyhzKGEoZSx0
KSktcygwKSksMSl8fDB9KSxUPTNEaS5jb3B5KCksTj0KPTNEcy5jb3B5KCl9KSxDfXZhciB0PTNE
e3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSxuPTNEOTYwLHI9M0Q1MDAsaT0KPTNEZDMu
c2NhbGUub3JkaW5hbCgpLHM9M0RkMy5zY2FsZS5saW5lYXIoKSxvPTNETWF0aC5mbG9vcihNYXRo
LnJhbmRvbSgpKjFlPQo0KSx1PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0sYT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBlLnl9LGY9M0RbMF0sbD0zRCEwLGM9Cj0zRCExLGg9M0QiemVybyIscD0zRGUu
dXRpbHMuZGVmYXVsdENvbG9yKCksZD0zRCExLHY9M0RudWxsLG0sZz0zRDEyMDAseSxiLD0KdyxF
LFM9M0QuMSx4PTNEZDMuZGlzcGF0Y2goImNoYXJ0Q2xpY2siLCJlbGVtZW50Q2xpY2siLCJlbGVt
ZW50RGJsQ2xpY2siLCJlPQpsZW1lbnRNb3VzZW92ZXIiLCJlbGVtZW50TW91c2VvdXQiKSxULE47
cmV0dXJuIEMuZGlzcGF0Y2g9M0R4LEMub3B0aW9ucz0zRGU9Ci51dGlscy5vcHRpb25zRnVuYy5i
aW5kKEMpLEMueD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZT0K
LEMpOnV9LEMueT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZSxD
KTphfSxDLm1hcmdpbj0zRGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQu
dG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG89CnA6dC50b3AsdC5yaWdodD0z
RHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT0z
RD0KdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVm
dD0zRHR5cGVvZiBlLmxlZnQhPTNEPQoidW5kZWZpbmVkIj9lLmxlZnQ6dC5sZWZ0LEMpOnR9LEMu
d2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmc9CnRoPyhuPTNEZSxDKTpu
fSxDLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZSxD
KTpyfT0KLEMueFNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9
M0RlLEMpOml9LEMueVNjYWxlPTNEZnVuPQpjdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8ocz0zRGUsQyk6c30sQy54RG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXI9Cm4gYXJndW1lbnRz
Lmxlbmd0aD8oeT0zRGUsQyk6eX0sQy55RG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZT0Kbmd0aD8oYj0zRGUsQyk6Yn0sQy54UmFuZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8odz0zRGUsQyk6PQp3fSxDLnlSYW5nZT0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPTNEZSxDKTpFfSxDLmZvcmNlWT0zRGY9CnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLEMpOmZ9LEMuc3RhY2tlZD0zRGZ1bmN0
aW9uKGUpe3JldD0KdXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLEMpOmN9LEMuc3RhY2tPZmZz
ZXQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lPQpudHMubGVuZ3RoPyhoPTNEZSxDKTpofSxD
LmNsaXBFZGdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9Cj0zRGUs
Qyk6bH0sQy5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNE
ZS51dGlscy5nZXRDbz0KbG9yKHQpLEMpOnB9LEMuYmFyQ29sb3I9M0RmdW5jdGlvbih0KXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8odj0zRGUudXRpbHMuPQpnZXRDb2xvcih0KSxDKTp2fSxDLmRp
c2FibGVkPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09M0RlLEM9Cik6
bX0sQy5pZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZSxDKTpv
fSxDLmhpZGVhYmxlPTNEZj0KdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0z
RGUsQyk6ZH0sQy5kZWxheT0zRGZ1bmN0aW9uKGUpe3JldHVyPQpuIGFyZ3VtZW50cy5sZW5ndGg/
KGc9M0RlLEMpOmd9LEMuZ3JvdXBTcGFjaW5nPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW49
CnRzLmxlbmd0aD8oUz0zRGUsQyk6U30sQ30sZS5tb2RlbHMubXVsdGlCYXJDaGFydD0zRGZ1bmN0
aW9uKCl7ZnVuY3Rpb24gQShlKT0Ke3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIGI9M0Rk
My5zZWxlY3QodGhpcyksaz0zRHRoaXMsTz0zRCh1fHxwYXJzZUluPQp0KGIuc3R5bGUoIndpZHRo
IikpfHw5NjApLW8ubGVmdC1vLnJpZ2h0LE09M0QoYXx8cGFyc2VJbnQoYi5zdHlsZSgiaGVpZ2h0
Iik9Cil8fDQwMCktby50b3Atby5ib3R0b207QS51cGRhdGU9M0RmdW5jdGlvbigpe2IuY2FsbChB
KX0sQS5jb250YWluZXI9M0R0aGlzLD0KUy5kaXNhYmxlZD0zRGUubWFwKGZ1bmN0aW9uKGUpe3Jl
dHVybiEhZS5kaXNhYmxlZH0pO2lmKCF4KXt2YXIgXzt4PTNEe307Zm9yPQooXyBpbiBTKVNbX11p
bnN0YW5jZW9mIEFycmF5P3hbX109M0RTW19dLnNsaWNlKDApOnhbX109M0RTW19dfWlmKCFlfHwh
ZS5sZW49Cmd0aHx8IWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9
KS5sZW5ndGgpe3ZhciBEPTNEYi5zZWxlYz0KdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW1RdKTty
ZXR1cm4gRC5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwiPQpudmQzIG52LW5v
RGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxE
LmF0dHIoIng9CiIsby5sZWZ0K08vMikuYXR0cigieSIsby50b3ArTS8yKS50ZXh0KGZ1bmN0aW9u
KGUpe3JldHVybiBlfSksQX1iLnNlbGVjdEFsbD0KKCIubnYtbm9EYXRhIikucmVtb3ZlKCksdz0z
RHQueFNjYWxlKCksRT0zRHQueVNjYWxlKCk7dmFyIFA9M0RiLnNlbGVjdEFsbCgiPQpnLm52LXdy
YXAubnYtbXVsdGlCYXJXaXRoTGVnZW5kIikuZGF0YShbZV0pLEg9M0RQLmVudGVyKCkuYXBwZW5k
KCJnIikuYXR0cig9CiJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1tdWx0aUJhcldpdGhMZWdlbmQi
KS5hcHBlbmQoImciKSxCPTNEUC5zZWxlY3QoImciKT0KO0guYXBwZW5kKCJnIikuYXR0cigiY2xh
c3MiLCJudi14IG52LWF4aXMiKSxILmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtPQp5IG52
LWF4aXMiKSxILmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYmFyc1dyYXAiKSxILmFwcGVu
ZCgiZyIpLmF0dHIoImM9Cmxhc3MiLCJudi1sZWdlbmRXcmFwIiksSC5hcHBlbmQoImciKS5hdHRy
KCJjbGFzcyIsIm52LWNvbnRyb2xzV3JhcCIpLGMmJihpLj0Kd2lkdGgoTy1DKCkpLHQuYmFyQ29s
b3IoKSYmZS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7ZS5jb2xvcj0zRGQzLnJnYigiI2NjYyIpPQou
ZGFya2VyKHQqMS41KS50b1N0cmluZygpfSksQi5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuZGF0
dW0oZSkuY2FsbChpKSxvLnQ9Cm9wIT0zRGkuaGVpZ2h0KCkmJihvLnRvcD0zRGkuaGVpZ2h0KCks
TT0zRChhfHxwYXJzZUludChiLnN0eWxlKCJoZWlnaHQiKSl8fD0KNDAwKS1vLnRvcC1vLmJvdHRv
bSksQi5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRl
PQooIitDKCkrIiwiKyAtby50b3ArIikiKSk7aWYobCl7dmFyIGo9M0Rbe2tleToiR3JvdXBlZCIs
ZGlzYWJsZWQ6dC5zdGFja2VkKCk9Cn0se2tleToiU3RhY2tlZCIsZGlzYWJsZWQ6IXQuc3RhY2tl
ZCgpfV07cy53aWR0aChDKCkpLmNvbG9yKFsiIzQ0NCIsIiM0NDQiLD0KIiM0NDQiXSksQi5zZWxl
Y3QoIi5udi1jb250cm9sc1dyYXAiKS5kYXR1bShqKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xh
dGUoPQowLCIrIC1vLnRvcCsiKSIpLmNhbGwocyl9UC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xh
dGUoIitvLmxlZnQrIiwiK28udG9wKyI9CikiKSxkJiZCLnNlbGVjdCgiLm52LXkubnYtYXhpcyIp
LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK08rIiwwKSIpLHQuZD0KaXNhYmxlZChlLm1h
cChmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNhYmxlZH0pKS53aWR0aChPKS5oZWlnaHQoTSkuY29s
b3IoZS5tPQphcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxmKGUsdCl9KS5maWx0ZXIo
ZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS49CmRpc2FibGVkfSkpO3ZhciBGPTNEQi5zZWxlY3Qo
Ii5udi1iYXJzV3JhcCIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldD0KdXJuIWUuZGlz
YWJsZWR9KSk7Ri5jYWxsKHQpO2lmKGgpe24uc2NhbGUodykudGlja3MoTy8xMDApLnRpY2tTaXpl
KC1NLDApLEIuPQpzZWxlY3QoIi5udi14Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFu
c2xhdGUoMCwiK0UucmFuZ2UoKVswXSsiKSIpLEI9Ci5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5j
YWxsKG4pO3ZhciBJPTNEQi5zZWxlY3QoIi5udi14Lm52LWF4aXMgPiBnIikuc2VsZT0KY3RBbGwo
ImciKTtJLnNlbGVjdEFsbCgibGluZSwgdGV4dCIpLnN0eWxlKCJvcGFjaXR5IiwxKTtpZihtKXt2
YXIgcT0zRGZ1bmN0PQppb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIrZSsiLCIrdCsiKSJ9LFI9
M0Q1LFU9M0QxNztJLnNlbGVjdEFsbCgidGV4dCIpLmE9CnR0cigidHJhbnNmb3JtIixmdW5jdGlv
bihlLHQsbil7cmV0dXJuIHEoMCxuJTI9M0Q9M0QwP1I6VSl9KTt2YXIgej0zRGQzLnNlbD0KZWN0
QWxsKCIubnYteC5udi1heGlzIC5udi13cmFwIGcgZyB0ZXh0IilbMF0ubGVuZ3RoO0Iuc2VsZWN0
QWxsKCIubnYteC5udi1hPQp4aXMgLm52LWF4aXNNYXhNaW4gdGV4dCIpLmF0dHIoInRyYW5zZm9y
bSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcSgwLHQ9M0Q9M0Q9Cj0zRDB8fHolMiE9M0Q9M0QwP1U6
Uil9KX12JiZJLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiBuJU1hdGguY2VpbChlWzBdLj0K
dmFsdWVzLmxlbmd0aC8oTy8xMDApKSE9M0Q9M0QwfSkuc2VsZWN0QWxsKCJ0ZXh0LCBsaW5lIiku
c3R5bGUoIm9wYWNpdHkiLDApPQosZyYmSS5zZWxlY3RBbGwoIi50aWNrIHRleHQiKS5hdHRyKCJ0
cmFuc2Zvcm0iLCJyb3RhdGUoIitnKyIgMCwwKSIpLnN0eWxlKCI9CnRleHQtYW5jaG9yIixnPjA/
InN0YXJ0IjoiZW5kIiksQi5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5zZWxlY3RBbGwoImcubnYt
YT0KeGlzTWF4TWluIHRleHQiKS5zdHlsZSgib3BhY2l0eSIsMSl9cCYmKHIuc2NhbGUoRSkudGlj
a3MoTS8zNikudGlja1NpemUoLU8sPQowKSxCLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmNhbGwo
cikpLGkuZGlzcGF0Y2gub24oInN0YXRlQ2hhbmdlIixmdW5jdGlvbig9CmUpe1M9M0RlLE4uc3Rh
dGVDaGFuZ2UoUyksQS51cGRhdGUoKX0pLHMuZGlzcGF0Y2gub24oImxlZ2VuZENsaWNrIixmdW5j
dGlvbj0KKGUsbil7aWYoIWUuZGlzYWJsZWQpcmV0dXJuO2o9M0RqLm1hcChmdW5jdGlvbihlKXty
ZXR1cm4gZS5kaXNhYmxlZD0zRCEwLGV9PQopLGUuZGlzYWJsZWQ9M0QhMTtzd2l0Y2goZS5rZXkp
e2Nhc2UiR3JvdXBlZCI6dC5zdGFja2VkKCExKTticmVhaztjYXNlIlN0YWM9CmtlZCI6dC5zdGFj
a2VkKCEwKX1TLnN0YWNrZWQ9M0R0LnN0YWNrZWQoKSxOLnN0YXRlQ2hhbmdlKFMpLEEudXBkYXRl
KCl9KSxOLj0Kb24oInRvb2x0aXBTaG93IixmdW5jdGlvbihlKXt5JiZMKGUsay5wYXJlbnROb2Rl
KX0pLE4ub24oImNoYW5nZVN0YXRlIixmdW5jPQp0aW9uKG4pe3R5cGVvZiBuLmRpc2FibGVkIT0z
RCJ1bmRlZmluZWQiJiYoZS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7ZS5kaXNhYmw9CmVkPTNEbi5k
aXNhYmxlZFt0XX0pLFMuZGlzYWJsZWQ9M0RuLmRpc2FibGVkKSx0eXBlb2Ygbi5zdGFja2VkIT0z
RCJ1bmRlZmluZT0KZCImJih0LnN0YWNrZWQobi5zdGFja2VkKSxTLnN0YWNrZWQ9M0RuLnN0YWNr
ZWQpLEEudXBkYXRlKCl9KX0pLEF9dmFyIHQ9M0RlPQoubW9kZWxzLm11bHRpQmFyKCksbj0zRGUu
bW9kZWxzLmF4aXMoKSxyPTNEZS5tb2RlbHMuYXhpcygpLGk9M0RlLm1vZGVscy5sZWc9CmVuZCgp
LHM9M0RlLm1vZGVscy5sZWdlbmQoKSxvPTNEe3RvcDozMCxyaWdodDoyMCxib3R0b206NTAsbGVm
dDo2MH0sdT0zRG51bD0KbCxhPTNEbnVsbCxmPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxsPTNE
ITAsYz0zRCEwLGg9M0QhMCxwPTNEITAsZD0zRCExLHY9Cj0zRCEwLG09M0QhMSxnPTNEMCx5PTNE
ITAsYj0zRGZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIjxoMz4iK2UrIjwvaDM+IisiPD0KcD4i
K24rIiBvbiAiK3QrIjwvcD4ifSx3LEUsUz0zRHtzdGFja2VkOiExfSx4PTNEbnVsbCxUPTNEIk5v
IERhdGEgQXZhaWxhYmxlPQouIixOPTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRp
cEhpZGUiLCJzdGF0ZUNoYW5nZSIsImNoYW5nZVN0YXRlIik9CixDPTNEZnVuY3Rpb24oKXtyZXR1
cm4gbD8xODA6MH0saz0zRDA7dC5zdGFja2VkKCExKSxuLm9yaWVudCgiYm90dG9tIikudGljaz0K
UGFkZGluZyg3KS5oaWdobGlnaHRaZXJvKCEwKS5zaG93TWF4TWluKCExKS50aWNrRm9ybWF0KGZ1
bmN0aW9uKGUpe3JldHVybiBlPQp9KSxyLm9yaWVudChkPyJyaWdodCI6ImxlZnQiKS50aWNrRm9y
bWF0KGQzLmZvcm1hdCgiLC4xZiIpKSxzLnVwZGF0ZVN0YXRlKCE9CjEpO3ZhciBMPTNEZnVuY3Rp
b24oaSxzKXt2YXIgbz0zRGkucG9zWzBdKyhzLm9mZnNldExlZnR8fDApLHU9M0RpLnBvc1sxXSso
cz0KLm9mZnNldFRvcHx8MCksYT0zRG4udGlja0Zvcm1hdCgpKHQueCgpKGkucG9pbnQsaS5wb2lu
dEluZGV4KSksZj0zRHIudGlja0ZvPQpybWF0KCkodC55KCkoaS5wb2ludCxpLnBvaW50SW5kZXgp
KSxsPTNEYihpLnNlcmllcy5rZXksYSxmLGksQSk7ZS50b29sdGlwLnM9Cmhvdyhbbyx1XSxsLGku
dmFsdWU8MD8ibiI6InMiLG51bGwscyl9O3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91
c2Vvdj0KZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rby5sZWZ0LGUu
cG9zWzFdK28udG9wXSxOLnRvb2x0aXBTPQpob3coZSl9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50
TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7Ti50b29sdGlwSGlkZSg9CmUpfSksTi5vbigi
dG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7eSYmZS50b29sdGlwLmNsZWFudXAoKX0pLEEuZGlzcGF0
Y2g9M0ROLD0KQS5tdWx0aWJhcj0zRHQsQS5sZWdlbmQ9M0RpLEEueEF4aXM9M0RuLEEueUF4aXM9
M0RyLGQzLnJlYmluZChBLHQsIngiLCJ5IiwiPQp4RG9tYWluIiwieURvbWFpbiIsInhSYW5nZSIs
InlSYW5nZSIsImZvcmNlWCIsImZvcmNlWSIsImNsaXBFZGdlIiwiaWQiLCJzdGE9CmNrZWQiLCJz
dGFja09mZnNldCIsImRlbGF5IiwiYmFyQ29sb3IiLCJncm91cFNwYWNpbmciKSxBLm9wdGlvbnM9
M0RlLnV0aWxzLj0Kb3B0aW9uc0Z1bmMuYmluZChBKSxBLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhvLnRvcD0KPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmlu
ZWQiP2UudG9wOm8udG9wLG8ucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kPQplZmluZWQi
P2UucmlnaHQ6by5yaWdodCxvLmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVk
Ij9lLmJvdHRvbTo9Cm8uYm90dG9tLG8ubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5l
ZCI/ZS5sZWZ0Om8ubGVmdCxBKTpvfSxBLndpZHRoPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8odT0zRGUsQSk6dX0sQS5oZWlnaHQ9M0RmdW5jdGlvbihlKXs9CnJldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZSxBKTphfSxBLmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0
dXJuIGFyZ3VtZW50cz0KLmxlbmd0aD8oZj0zRGUudXRpbHMuZ2V0Q29sb3IodCksaS5jb2xvcihm
KSxBKTpmfSxBLnNob3dDb250cm9scz0zRGZ1bmN0aW9uPQooZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGw9M0RlLEEpOmx9LEEuc2hvd0xlZ2VuZD0zRGZ1bmN0aW9uKGUpe3JldHVybiA9CmFy
Z3VtZW50cy5sZW5ndGg/KGM9M0RlLEEpOmN9LEEuc2hvd1hBeGlzPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZT0Kbmd0aD8oaD0zRGUsQSk6aH0sQS5zaG93WUF4aXM9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsPQpBKTpwfSxBLnJpZ2h0QWxpZ25Z
QXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSxyLm9yaWU9
Cm50KGU/InJpZ2h0IjoibGVmdCIpLEEpOmR9LEEucmVkdWNlWFRpY2tzPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZT0Kbmd0aD8odj0zRGUsQSk6dn0sQS5yb3RhdGVMYWJlbHM9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0KPTNEZSxBKTpnfSxBLnN0YWdn
ZXJMYWJlbHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0zRGUsQSk6
PQptfSxBLnRvb2x0aXA9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0z
RGUsQSk6Yn0sQS50b29sdGlwcz0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHk9M0RlLEEpOnl9LEEudG9vbHRpcENvbnRlbnQ9M0RmdW5jPQp0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhiPTNEZSxBKTpifSxBLnN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGE9CnJndW1lbnRzLmxlbmd0aD8oUz0zRGUsQSk6U30sQS5kZWZhdWx0U3RhdGU9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLj0KbGVuZ3RoPyh4PTNEZSxBKTp4fSxBLm5vRGF0YT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhUPTNEZSxBPQopOlR9LEEudHJhbnNp
dGlvbkR1cmF0aW9uPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGs9M0Rl
LEEpOms9Cn0sQX0sZS5tb2RlbHMubXVsdGlCYXJIb3Jpem9udGFsPTNEZnVuY3Rpb24oKXtmdW5j
dGlvbiBDKGUpe3JldHVybiBlLmVhY2goZj0KdW5jdGlvbihlKXt2YXIgaT0zRG4tdC5sZWZ0LXQu
cmlnaHQseT0zRHItdC50b3AtdC5ib3R0b20sQz0zRGQzLnNlbGVjdCh0aGlzPQopO3AmJihlPTNE
ZDMubGF5b3V0LnN0YWNrKCkub2Zmc2V0KCJ6ZXJvIikudmFsdWVzKGZ1bmN0aW9uKGUpe3JldHVy
biBlLnZhbHU9CmVzfSkueShhKShlKSksZS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7ZS52YWx1ZXMu
Zm9yRWFjaChmdW5jdGlvbihlKXtlLnNlcmllcz0KPTNEdH0pfSkscCYmZVswXS52YWx1ZXMubWFw
KGZ1bmN0aW9uKHQsbil7dmFyIHI9M0QwLGk9M0QwO2UubWFwKGZ1bmN0aW9uKGUpPQp7dmFyIHQ9
M0RlLnZhbHVlc1tuXTt0LnNpemU9M0RNYXRoLmFicyh0LnkpLHQueTwwPyh0LnkxPTNEaS10LnNp
emUsaS09M0R0LnM9Cml6ZSk6KHQueTE9M0RyLHIrPTNEdC5zaXplKX0pfSk7dmFyIGs9M0RiJiZ3
P1tdOmUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLj0KdmFsdWVzLm1hcChmdW5jdGlvbihlLHQp
e3JldHVybnt4OnUoZSx0KSx5OmEoZSx0KSx5MDplLnkwLHkxOmUueTF9fSl9KTtzLmRvPQptYWlu
KGJ8fGQzLm1lcmdlKGspLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS54fSkpLnJhbmdlQmFuZHMo
RXx8WzAseV0sLjEpLG89Ci5kb21haW4od3x8ZDMuZXh0ZW50KGQzLm1lcmdlKGspLm1hcChmdW5j
dGlvbihlKXtyZXR1cm4gcD9lLnk+MD9lLnkxK2UueTplLj0KeTE6ZS55fSkuY29uY2F0KGYpKSks
ZCYmIXA/by5yYW5nZShTfHxbby5kb21haW4oKVswXTwwP206MCxpLShvLmRvbWFpbigpWzFdPQo+
MD9tOjApXSk6by5yYW5nZShTfHxbMCxpXSksVD0zRFR8fHMsTj0zRE58fGQzLnNjYWxlLmxpbmVh
cigpLmRvbWFpbihvLmRvbWE9CmluKCkpLnJhbmdlKFtvKDApLG8oMCldKTt2YXIgTD0zRGQzLnNl
bGVjdCh0aGlzKS5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1tdT0KbHRpYmFySG9yaXpvbnRhbCIp
LmRhdGEoW2VdKSxBPTNETC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBu
PQp2LXdyYXAgbnYtbXVsdGliYXJIb3Jpem9udGFsIiksTz0zREEuYXBwZW5kKCJkZWZzIiksTT0z
REEuYXBwZW5kKCJnIiksXz0zREw9Ci5zZWxlY3QoImciKTtNLmFwcGVuZCgiZyIpLmF0dHIoImNs
YXNzIiwibnYtZ3JvdXBzIiksTC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cj0KYW5zbGF0ZSgiK3QubGVm
dCsiLCIrdC50b3ArIikiKTt2YXIgRD0zREwuc2VsZWN0KCIubnYtZ3JvdXBzIikuc2VsZWN0QWxs
KCIuPQpudi1ncm91cCIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIHR9KTtELmVudGVyKCkuYXA9CnBlbmQoImciKS5zdHlsZSgic3Ryb2tlLW9wYWNpdHki
LDFlLTYpLnN0eWxlKCJmaWxsLW9wYWNpdHkiLDFlLTYpLEQuZXhpdCgpLj0Kc3R5bGUoInN0cm9r
ZS1vcGFjaXR5IiwxZS02KS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwxZS02KS5yZW1vdmUoKSxELmF0
dHIoImNsPQphc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIm52LWdyb3VwIG52LXNlcmllcy0iK3R9
KS5jbGFzc2VkKCJob3ZlciIsZnVuY3Rpb249CihlKXtyZXR1cm4gZS5ob3Zlcn0pLnN0eWxlKCJm
aWxsIixmdW5jdGlvbihlLHQpe3JldHVybiBsKGUsdCl9KS5zdHlsZSgic3Rybz0Ka2UiLGZ1bmN0
aW9uKGUsdCl7cmV0dXJuIGwoZSx0KX0pLEQuc3R5bGUoInN0cm9rZS1vcGFjaXR5IiwxKS5zdHls
ZSgiZmlsbC1vPQpwYWNpdHkiLC43NSk7dmFyIFA9M0RELnNlbGVjdEFsbCgiZy5udi1iYXIiKS5k
YXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHU9CmVzfSk7UC5leGl0KCkucmVtb3ZlKCk7dmFy
IEg9M0RQLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigidHJhbnNmb3JtIixmdW5jdD0KaW9uKHQs
bixyKXtyZXR1cm4idHJhbnNsYXRlKCIrTihwP3QueTA6MCkrIiwiKyhwPzA6cipzLnJhbmdlQmFu
ZCgpL2UubGVuZ3RoPQorcyh1KHQsbikpKSsiKSJ9KTtILmFwcGVuZCgicmVjdCIpLmF0dHIoIndp
ZHRoIiwwKS5hdHRyKCJoZWlnaHQiLHMucmFuZ2VCYW49CmQoKS8ocD8xOmUubGVuZ3RoKSksUC5v
bigibW91c2VvdmVyIixmdW5jdGlvbih0LG4pe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKD0KImhv
dmVyIiwhMCkseC5lbGVtZW50TW91c2VvdmVyKHt2YWx1ZTphKHQsbikscG9pbnQ6dCxzZXJpZXM6
ZVt0LnNlcmllc10scG9zPQo6W28oYSh0LG4pKyhwP3QueTA6MCkpLHModSh0LG4pKStzLnJhbmdl
QmFuZCgpKihwP2UubGVuZ3RoLzI6dC5zZXJpZXMrLjUpL2U9Ci5sZW5ndGhdLHBvaW50SW5kZXg6
bixzZXJpZXNJbmRleDp0LnNlcmllcyxlOmQzLmV2ZW50fSl9KS5vbigibW91c2VvdXQiLGZ1bj0K
Y3Rpb24odCxuKXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgiaG92ZXIiLCExKSx4LmVsZW1lbnRN
b3VzZW91dCh7dmFsdWU6YSh0PQosbikscG9pbnQ6dCxzZXJpZXM6ZVt0LnNlcmllc10scG9pbnRJ
bmRleDpuLHNlcmllc0luZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnQ9Cn0pfSkub24oImNsaWNrIixm
dW5jdGlvbih0LG4pe3guZWxlbWVudENsaWNrKHt2YWx1ZTphKHQsbikscG9pbnQ6dCxzZXJpZXM6
ZT0KW3Quc2VyaWVzXSxwb3M6W3ModSh0LG4pKStzLnJhbmdlQmFuZCgpKihwP2UubGVuZ3RoLzI6
dC5zZXJpZXMrLjUpL2UubGVuZ3RoPQosbyhhKHQsbikrKHA/dC55MDowKSldLHBvaW50SW5kZXg6
bixzZXJpZXNJbmRleDp0LnNlcmllcyxlOmQzLmV2ZW50fSksZDMuZXY9CmVudC5zdG9wUHJvcGFn
YXRpb24oKX0pLm9uKCJkYmxjbGljayIsZnVuY3Rpb24odCxuKXt4LmVsZW1lbnREYmxDbGljayh7
dmFsdT0KZTphKHQsbikscG9pbnQ6dCxzZXJpZXM6ZVt0LnNlcmllc10scG9zOltzKHUodCxuKSkr
cy5yYW5nZUJhbmQoKSoocD9lLmxlbmd0PQpoLzI6dC5zZXJpZXMrLjUpL2UubGVuZ3RoLG8oYSh0
LG4pKyhwP3QueTA6MCkpXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6dC49CnNlcmllcyxlOmQz
LmV2ZW50fSksZDMuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9KSxILmFwcGVuZCgidGV4dCIpLGQm
JiFwPyhQLj0Kc2VsZWN0KCJ0ZXh0IikuYXR0cigidGV4dC1hbmNob3IiLGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIGEoZSx0KTwwPyJlbmQiOiJzdGFyPQp0In0pLmF0dHIoInkiLHMucmFuZ2VCYW5kKCkv
KGUubGVuZ3RoKjIpKS5hdHRyKCJkeSIsIi4zMmVtIikudGV4dChmdW5jdGlvbig9CmUsdCl7cmV0
dXJuIGcoYShlLHQpKX0pLFAuc2VsZWN0KCJ0ZXh0IikuYXR0cigieCIsZnVuY3Rpb24oZSx0KXty
ZXR1cm4gYShlLD0KdCk8MD8tNDpvKGEoZSx0KSktbygwKSs0fSkpOlAuc2VsZWN0QWxsKCJ0ZXh0
IikudGV4dCgiIiksdiYmIXA/KEguYXBwZW5kKCJ0PQpleHQiKS5jbGFzc2VkKCJudi1iYXItbGFi
ZWwiLCEwKSxQLnNlbGVjdCgidGV4dC5udi1iYXItbGFiZWwiKS5hdHRyKCJ0ZXh0LWE9Cm5jaG9y
IixmdW5jdGlvbihlLHQpe3JldHVybiBhKGUsdCk8MD8ic3RhcnQiOiJlbmQifSkuYXR0cigieSIs
cy5yYW5nZUJhbmQoKT0KLyhlLmxlbmd0aCoyKSkuYXR0cigiZHkiLCIuMzJlbSIpLnRleHQoZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gdShlLHQpfSksUC5zZWxlPQpjdCgidGV4dC5udi1iYXItbGFiZWwi
KS5hdHRyKCJ4IixmdW5jdGlvbihlLHQpe3JldHVybiBhKGUsdCk8MD9vKDApLW8oYShlLHQ9Cikp
KzQ6LTR9KSk6UC5zZWxlY3RBbGwoInRleHQubnYtYmFyLWxhYmVsIikudGV4dCgiIiksUC5hdHRy
KCJjbGFzcyIsZnVuY3Rpbz0KbihlLHQpe3JldHVybiBhKGUsdCk8MD8ibnYtYmFyIG5lZ2F0aXZl
IjoibnYtYmFyIHBvc2l0aXZlIn0pLGMmJihofHwoaD0zRGUuPQptYXAoZnVuY3Rpb24oKXtyZXR1
cm4hMH0pKSxQLnN0eWxlKCJmaWxsIixmdW5jdGlvbihlLHQsbil7cmV0dXJuIGQzLnJnYihjKGU9
Cix0KSkuZGFya2VyKGgubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR9KS5maWx0ZXIoZnVuY3Rp
b24oZSx0KXtyZXR1cm4haFt0XT0KfSlbbl0pLnRvU3RyaW5nKCl9KS5zdHlsZSgic3Ryb2tlIixm
dW5jdGlvbihlLHQsbil7cmV0dXJuIGQzLnJnYihjKGUsdCkpLmRhPQpya2VyKGgubWFwKGZ1bmN0
aW9uKGUsdCl7cmV0dXJuIHR9KS5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4haFt0XX0pW25d
KS49CnRvU3RyaW5nKCl9KSkscD9QLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1
cm4idHJhbnNsYXRlKCIrbyhlLnkxKT0KKyIsIitzKHUoZSx0KSkrIikifSkuc2VsZWN0KCJyZWN0
IikuYXR0cigid2lkdGgiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGguPQphYnMobyhhKGUsdCkr
ZS55MCktbyhlLnkwKSl9KS5hdHRyKCJoZWlnaHQiLHMucmFuZ2VCYW5kKCkpOlAuYXR0cigidHJh
bnNmb3I9Cm0iLGZ1bmN0aW9uKHQsbil7cmV0dXJuInRyYW5zbGF0ZSgiKyhhKHQsbik8MD9vKGEo
dCxuKSk6bygwKSkrIiwiKyh0LnNlcmllcz0KKnMucmFuZ2VCYW5kKCkvZS5sZW5ndGgrcyh1KHQs
bikpKSsiKSJ9KS5zZWxlY3QoInJlY3QiKS5hdHRyKCJoZWlnaHQiLHMucmFuPQpnZUJhbmQoKS9l
Lmxlbmd0aCkuYXR0cigid2lkdGgiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubWF4KE1hdGgu
YWJzKG8oYSg9CmUsdCkpLW8oMCkpLDEpfSksVD0zRHMuY29weSgpLE49M0RvLmNvcHkoKX0pLEN9
dmFyIHQ9M0R7dG9wOjAscmlnaHQ6MCxib3R0bz0KbTowLGxlZnQ6MH0sbj0zRDk2MCxyPTNENTAw
LGk9M0RNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMWU0KSxzPTNEZDMuc2NhbGUuPQpvcmRpbmFs
KCksbz0zRGQzLnNjYWxlLmxpbmVhcigpLHU9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS54fSxhPTNE
ZnVuY3Rpb24oZSk9CntyZXR1cm4gZS55fSxmPTNEWzBdLGw9M0RlLnV0aWxzLmRlZmF1bHRDb2xv
cigpLGM9M0RudWxsLGgscD0zRCExLGQ9M0QhMSx2PQo9M0QhMSxtPTNENjAsZz0zRGQzLmZvcm1h
dCgiLC4yZiIpLHk9M0QxMjAwLGIsdyxFLFMseD0zRGQzLmRpc3BhdGNoKCJjaGFydEM9CmxpY2si
LCJlbGVtZW50Q2xpY2siLCJlbGVtZW50RGJsQ2xpY2siLCJlbGVtZW50TW91c2VvdmVyIiwiZWxl
bWVudE1vdXNlb3V0Ij0KKSxULE47cmV0dXJuIEMuZGlzcGF0Y2g9M0R4LEMub3B0aW9ucz0zRGUu
dXRpbHMub3B0aW9uc0Z1bmMuYmluZChDKSxDLng9M0RmPQp1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyh1PTNEZSxDKTp1fSxDLnk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXI9Cmd1
bWVudHMubGVuZ3RoPyhhPTNEZSxDKTphfSxDLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPz0KKHQudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2Uu
dG9wOnQudG9wLHQucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9Cj0zRCJ1bmRlZmluZWQiP2Uucmln
aHQ6dC5yaWdodCx0LmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLj0K
Ym90dG9tOnQuYm90dG9tLHQubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5s
ZWZ0OnQubGVmdCxDKTp0fSxDPQoud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8obj0zRGUsQyk6bn0sQy5oZWlnaHQ9M0RmdW5jdGk9Cm9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhyPTNEZSxDKTpyfSxDLnhTY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cj0KZ3VtZW50cy5sZW5ndGg/KHM9M0RlLEMpOnN9LEMueVNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/PQoobz0zRGUsQyk6b30sQy54RG9tYWluPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9M0RlLEMpOmJ9LEM9Ci55RG9tYWluPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9M0RlLEMpOnd9LEMueFJhbmdlPTNE
ZnVuYz0KdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT0zRGUsQyk6RX0sQy55UmFu
Z2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gPQphcmd1bWVudHMubGVuZ3RoPyhTPTNEZSxDKTpTfSxD
LmZvcmNlWT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Q9Cmg/KGY9M0RlLEMp
OmZ9LEMuc3RhY2tlZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNE
ZSxDKTpwfT0KLEMuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
bD0zRGUudXRpbHMuZ2V0Q29sb3IodCksQyk6PQpsfSxDLmJhckNvbG9yPTNEZnVuY3Rpb24odCl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLnV0aWxzLmdldENvbG9yKHQ9CiksQyk6Y30s
Qy5kaXNhYmxlZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxD
KTpofSxDLmlkPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUs
Qyk6aX0sQy5kZWxheT0zRGZ1bmN0aW9uKGUpe3I9CmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9
M0RlLEMpOnl9LEMuc2hvd1ZhbHVlcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bT0KZW50cy5s
ZW5ndGg/KGQ9M0RlLEMpOmR9LEMuc2hvd0JhckxhYmVscz0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuPQpndGg/KHY9M0RlLEMpOnZ9LEMudmFsdWVGb3JtYXQ9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0zRGU9CixDKTpnfSxDLnZhbHVlUGFkZGluZz0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNEZSxDKTptfSxDfT0KLGUu
bW9kZWxzLm11bHRpQmFySG9yaXpvbnRhbENoYXJ0PTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBDKGUp
e3JldHVybiBlLmVhY2goPQpmdW5jdGlvbihlKXt2YXIgZD0zRGQzLnNlbGVjdCh0aGlzKSxtPTNE
dGhpcyxUPTNEKHV8fHBhcnNlSW50KGQuc3R5bGUoIndpZHQ9CmgiKSl8fDk2MCktby5sZWZ0LW8u
cmlnaHQsaz0zRChhfHxwYXJzZUludChkLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktby50b3Atbz0K
LmJvdHRvbTtDLnVwZGF0ZT0zRGZ1bmN0aW9uKCl7ZC5jYWxsKEMpfSxDLmNvbnRhaW5lcj0zRHRo
aXMsYi5kaXNhYmxlZD0zRGUuPQptYXAoZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSk7
aWYoIXcpe3ZhciBMO3c9M0R7fTtmb3IoTCBpbiBiKWJbTF1pbnM9CnRhbmNlb2YgQXJyYXk/d1tM
XT0zRGJbTF0uc2xpY2UoMCk6d1tMXT0zRGJbTF19aWYoIWV8fCFlLmxlbmd0aHx8IWUuZmlsdGVy
KD0KZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLmxlbmd0aH0pLmxlbmd0aCl7dmFyIEE9M0Rk
LnNlbGVjdEFsbCgiLm52LW5vRGF0PQphIikuZGF0YShbRV0pO3JldHVybiBBLmVudGVyKCkuYXBw
ZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSI9CikuYXR0cigiZHkiLCIt
LjdlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLEEuYXR0cigieCIsby5sZWZ0K1Qv
MikuYT0KdHRyKCJ5IixvLnRvcCtrLzIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxDfWQu
c2VsZWN0QWxsKCIubnYtbm9EYXRhIikuPQpyZW1vdmUoKSxnPTNEdC54U2NhbGUoKSx5PTNEdC55
U2NhbGUoKTt2YXIgTz0zRGQuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtbXU9Cmx0aUJhckhvcml6
b250YWxDaGFydCIpLmRhdGEoW2VdKSxNPTNETy5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNs
YXNzIiwibj0KdmQzIG52LXdyYXAgbnYtbXVsdGlCYXJIb3Jpem9udGFsQ2hhcnQiKS5hcHBlbmQo
ImciKSxfPTNETy5zZWxlY3QoImciKTtNLmFwPQpwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14
IG52LWF4aXMiKSxNLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteSBudi09CmF4aXMiKS5h
cHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXplcm9MaW5lIikuYXBwZW5kKCJsaW5lIiksTS5h
cHBlbmQoImciKT0KLmF0dHIoImNsYXNzIiwibnYtYmFyc1dyYXAiKSxNLmFwcGVuZCgiZyIpLmF0
dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpLE0uPQphcHBlbmQoImciKS5hdHRyKCJjbGFzcyIs
Im52LWNvbnRyb2xzV3JhcCIpLGMmJihpLndpZHRoKFQteCgpKSx0LmJhckNvbG9yKCk9CiYmZS5m
b3JFYWNoKGZ1bmN0aW9uKGUsdCl7ZS5jb2xvcj0zRGQzLnJnYigiI2NjYyIpLmRhcmtlcih0KjEu
NSkudG9TdHJpbmcoKT0KfSksXy5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuZGF0dW0oZSkuY2Fs
bChpKSxvLnRvcCE9M0RpLmhlaWdodCgpJiYoby50b3A9Cj0zRGkuaGVpZ2h0KCksaz0zRChhfHxw
YXJzZUludChkLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktby50b3Atby5ib3R0b20pLF8ucz0KZWxl
Y3QoIi5udi1sZWdlbmRXcmFwIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIreCgpKyIs
IisgLW8udG9wKyIpIikpPQo7aWYobCl7dmFyIEQ9M0Rbe2tleToiR3JvdXBlZCIsZGlzYWJsZWQ6
dC5zdGFja2VkKCl9LHtrZXk6IlN0YWNrZWQiLGRpc2FibGU9CmQ6IXQuc3RhY2tlZCgpfV07cy53
aWR0aCh4KCkpLmNvbG9yKFsiIzQ0NCIsIiM0NDQiLCIjNDQ0Il0pLF8uc2VsZWN0KCIubnYtYz0K
b250cm9sc1dyYXAiKS5kYXR1bShEKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiKyAt
by50b3ArIikiKS5jYWxsKHMpPQp9Ty5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitvLmxl
ZnQrIiwiK28udG9wKyIpIiksdC5kaXNhYmxlZChlLm1hcChmdW49CmN0aW9uKGUpe3JldHVybiBl
LmRpc2FibGVkfSkpLndpZHRoKFQpLmhlaWdodChrKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQp
ez0KcmV0dXJuIGUuY29sb3J8fGYoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFl
W25dLmRpc2FibGVkfSkpO3ZhciBQPQo9M0RfLnNlbGVjdCgiLm52LWJhcnNXcmFwIikuZGF0dW0o
ZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSk9CjtQLmNhbGwodCk7aWYo
aCl7bi5zY2FsZShnKS50aWNrcyhrLzI0KS50aWNrU2l6ZSgtVCwwKSxfLnNlbGVjdCgiLm52LXgu
bnYtYT0KeGlzIikuY2FsbChuKTt2YXIgSD0zRF8uc2VsZWN0KCIubnYteC5udi1heGlzIikuc2Vs
ZWN0QWxsKCJnIik7SC5zZWxlY3RBbGwoPQoibGluZSwgdGV4dCIpfXAmJihyLnNjYWxlKHkpLnRp
Y2tzKFQvMTAwKS50aWNrU2l6ZSgtaywwKSxfLnNlbGVjdCgiLm52LXkubnY9Ci1heGlzIikuYXR0
cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitrKyIpIiksXy5zZWxlY3QoIi5udi15Lm52LWF4
aXMiKS5jYT0KbGwocikpLF8uc2VsZWN0KCIubnYtemVyb0xpbmUgbGluZSIpLmF0dHIoIngxIix5
KDApKS5hdHRyKCJ4MiIseSgwKSkuYXR0cigiPQp5MSIsMCkuYXR0cigieTIiLC1rKSxpLmRpc3Bh
dGNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24oZSl7Yj0zRGUsUy5zdGF0ZUM9CmhhbmdlKGIp
LEMudXBkYXRlKCl9KSxzLmRpc3BhdGNoLm9uKCJsZWdlbmRDbGljayIsZnVuY3Rpb24oZSxuKXtp
ZighZS5kaXNhYj0KbGVkKXJldHVybjtEPTNERC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlz
YWJsZWQ9M0QhMCxlfSksZS5kaXNhYmxlZD0zRCExPQo7c3dpdGNoKGUua2V5KXtjYXNlIkdyb3Vw
ZWQiOnQuc3RhY2tlZCghMSk7YnJlYWs7Y2FzZSJTdGFja2VkIjp0LnN0YWNrZWQoITA9Cil9Yi5z
dGFja2VkPTNEdC5zdGFja2VkKCksUy5zdGF0ZUNoYW5nZShiKSxDLnVwZGF0ZSgpfSksUy5vbigi
dG9vbHRpcFNob3ciLD0KZnVuY3Rpb24oZSl7diYmTihlLG0ucGFyZW50Tm9kZSl9KSxTLm9uKCJj
aGFuZ2VTdGF0ZSIsZnVuY3Rpb24obil7dHlwZW9mIG4uPQpkaXNhYmxlZCE9M0QidW5kZWZpbmVk
IiYmKGUuZm9yRWFjaChmdW5jdGlvbihlLHQpe2UuZGlzYWJsZWQ9M0RuLmRpc2FibGVkW3Q9Cl19
KSxiLmRpc2FibGVkPTNEbi5kaXNhYmxlZCksdHlwZW9mIG4uc3RhY2tlZCE9M0QidW5kZWZpbmVk
IiYmKHQuc3RhY2tlZChuLj0Kc3RhY2tlZCksYi5zdGFja2VkPTNEbi5zdGFja2VkKSxDLnVwZGF0
ZSgpfSl9KSxDfXZhciB0PTNEZS5tb2RlbHMubXVsdGlCYXJIPQpvcml6b250YWwoKSxuPTNEZS5t
b2RlbHMuYXhpcygpLHI9M0RlLm1vZGVscy5heGlzKCksaT0zRGUubW9kZWxzLmxlZ2VuZCgpLmg9
CmVpZ2h0KDMwKSxzPTNEZS5tb2RlbHMubGVnZW5kKCkuaGVpZ2h0KDMwKSxvPTNEe3RvcDozMCxy
aWdodDoyMCxib3R0b206NTAsbD0KZWZ0OjYwfSx1PTNEbnVsbCxhPTNEbnVsbCxmPTNEZS51dGls
cy5kZWZhdWx0Q29sb3IoKSxsPTNEITAsYz0zRCEwLGg9M0QhMCxwPQo9M0QhMCxkPTNEITEsdj0z
RCEwLG09M0RmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiI8aDM+IitlKyIgLSAiK3QrIjwvaDM+
Iis9CiI8cD4iK24rIjwvcD4ifSxnLHksYj0zRHtzdGFja2VkOmR9LHc9M0RudWxsLEU9M0QiTm8g
RGF0YSBBdmFpbGFibGUuIixTPTNEZD0KMy5kaXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlw
SGlkZSIsInN0YXRlQ2hhbmdlIiwiY2hhbmdlU3RhdGUiKSx4PTNEZnVuPQpjdGlvbigpe3JldHVy
biBsPzE4MDowfSxUPTNEMDt0LnN0YWNrZWQoZCksbi5vcmllbnQoImxlZnQiKS50aWNrUGFkZGlu
Zyg1KS49CmhpZ2hsaWdodFplcm8oITEpLnNob3dNYXhNaW4oITEpLnRpY2tGb3JtYXQoZnVuY3Rp
b24oZSl7cmV0dXJuIGV9KSxyLm9yaWVudD0KKCJib3R0b20iKS50aWNrRm9ybWF0KGQzLmZvcm1h
dCgiLC4xZiIpKSxzLnVwZGF0ZVN0YXRlKCExKTt2YXIgTj0zRGZ1bmN0aW9uPQooaSxzKXt2YXIg
bz0zRGkucG9zWzBdKyhzLm9mZnNldExlZnR8fDApLHU9M0RpLnBvc1sxXSsocy5vZmZzZXRUb3B8
fDApLGE9M0Q9Cm4udGlja0Zvcm1hdCgpKHQueCgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksZj0z
RHIudGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbj0KdCxpLnBvaW50SW5kZXgpKSxsPTNEbShpLnNl
cmllcy5rZXksYSxmLGksQyk7ZS50b29sdGlwLnNob3coW28sdV0sbCxpLnZhbHVlPQo8MD8iZSI6
InciLG51bGwscyl9O3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0
aXAiLGZ1bmN0aW89Cm4oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rby5sZWZ0LGUucG9zWzFdK28udG9w
XSxTLnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaD0KLm9uKCJlbGVtZW50TW91c2VvdXQudG9v
bHRpcCIsZnVuY3Rpb24oZSl7Uy50b29sdGlwSGlkZShlKX0pLFMub24oInRvb2x0aXBIPQppZGUi
LGZ1bmN0aW9uKCl7diYmZS50b29sdGlwLmNsZWFudXAoKX0pLEMuZGlzcGF0Y2g9M0RTLEMubXVs
dGliYXI9M0R0LEMubGU9CmdlbmQ9M0RpLEMueEF4aXM9M0RuLEMueUF4aXM9M0RyLGQzLnJlYmlu
ZChDLHQsIngiLCJ5IiwieERvbWFpbiIsInlEb21haW4iLD0KInhSYW5nZSIsInlSYW5nZSIsImZv
cmNlWCIsImZvcmNlWSIsImNsaXBFZGdlIiwiaWQiLCJkZWxheSIsInNob3dWYWx1ZXMiLCJzPQpo
b3dCYXJMYWJlbHMiLCJ2YWx1ZUZvcm1hdCIsInN0YWNrZWQiLCJiYXJDb2xvciIpLEMub3B0aW9u
cz0zRGUudXRpbHMub3B0aW89Cm5zRnVuYy5iaW5kKEMpLEMubWFyZ2luPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG8udG9wPTNEdHlwZT0Kb2YgZS50b3AhPTNEInVuZGVm
aW5lZCI/ZS50b3A6by50b3Asby5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQi
PQo/ZS5yaWdodDpvLnJpZ2h0LG8uYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmlu
ZWQiP2UuYm90dG9tOm8uYm90dG89Cm0sby5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZp
bmVkIj9lLmxlZnQ6by5sZWZ0LEMpOm99LEMud2lkdGg9M0RmdW5jdD0KaW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyh1PTNEZSxDKTp1fSxDLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhPQpyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLEMpOmF9LEMuY29sb3I9M0RmdW5jdGlvbih0KXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD89CihmPTNEZS51dGlscy5nZXRDb2xvcih0KSxpLmNvbG9y
KGYpLEMpOmZ9LEMuc2hvd0NvbnRyb2xzPTNEZnVuY3Rpb24oZSl7cmV0dT0Kcm4gYXJndW1lbnRz
Lmxlbmd0aD8obD0zRGUsQyk6bH0sQy5zaG93TGVnZW5kPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50PQpzLmxlbmd0aD8oYz0zRGUsQyk6Y30sQy5zaG93WEF4aXM9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0KPTNEZSxDKTpofSxDLnNob3dZQXhpcz0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxDKTpwfSxDPQoudG9vbHRpcD0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNEZSxDKTptfSxDLnRvb2x0
aXBzPTNEZnU9Cm5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj0zRGUsQyk6dn0s
Qy50b29sdGlwQ29udGVudD0zRGZ1bmN0aW9uKD0KZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KG09M0RlLEMpOm19LEMuc3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lPQpudHMubGVu
Z3RoPyhiPTNEZSxDKTpifSxDLmRlZmF1bHRTdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3Q9Cmg/KHc9M0RlLEMpOnd9LEMubm9EYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlLEMpOkV9LD0KQy50cmFuc2l0aW9uRHVyYXRpb249M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oVD0zRGUsQyk6VH0sQ30sPQplLm1v
ZGVscy5tdWx0aUNoYXJ0PTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBDKGUpe3JldHVybiBlLmVhY2go
ZnVuY3Rpb24oZSl7dmE9CnIgdT0zRGQzLnNlbGVjdCh0aGlzKSxmPTNEdGhpcztDLnVwZGF0ZT0z
RGZ1bmN0aW9uKCl7dS5jYWxsKEMpfSxDLmNvbnRhaW5lcj0KPTNEdGhpczt2YXIgaz0zRChyfHxw
YXJzZUludCh1LnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS10LmxlZnQtdC5yaWdodCxMPTNEKGl8PQp8
cGFyc2VJbnQodS5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXQudG9wLXQuYm90dG9tLEE9M0RlLmZp
bHRlcihmdW5jdGlvbihlKXs9CnJldHVybiFlLmRpc2FibGVkJiZlLnR5cGU9M0Q9M0QibGluZSIm
JmUueUF4aXM9M0Q9M0QxfSksTz0zRGUuZmlsdGVyKGZ1bmN0aT0Kb24oZSl7cmV0dXJuIWUuZGlz
YWJsZWQmJmUudHlwZT0zRD0zRCJsaW5lIiYmZS55QXhpcz0zRD0zRDJ9KSxNPTNEZS5maWx0ZXIo
PQpmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZCYmZS50eXBlPTNEPTNEImJhciImJmUueUF4
aXM9M0Q9M0QxfSksXz0zRGUuZmk9Cmx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQm
JmUudHlwZT0zRD0zRCJiYXIiJiZlLnlBeGlzPTNEPTNEMn0pLEQ9Cj0zRGUuZmlsdGVyKGZ1bmN0
aW9uKGUpe3JldHVybiFlLmRpc2FibGVkJiZlLnR5cGU9M0Q9M0QiYXJlYSImJmUueUF4aXM9M0Q9
Cj0zRDF9KSxQPTNEZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQmJmUudHlw
ZT0zRD0zRCJhcmVhIiYmZS55QT0KeGlzPTNEPTNEMn0pLEg9M0RlLmZpbHRlcihmdW5jdGlvbihl
KXtyZXR1cm4hZS5kaXNhYmxlZCYmZS55QXhpcz0zRD0zRDF9KS5tPQphcChmdW5jdGlvbihlKXty
ZXR1cm4gZS52YWx1ZXMubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJue3g6ZS54LHk6ZS55fX0pfSks
Qj0KPTNEZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQmJmUueUF4aXM9M0Q9
M0QyfSkubWFwKGZ1bmN0aW9uKGUpPQp7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlvbihlLHQp
e3JldHVybnt4OmUueCx5OmUueX19KX0pO2EuZG9tYWluKGQzLmV4dGU9Cm50KGQzLm1lcmdlKEgu
Y29uY2F0KEIpKSxmdW5jdGlvbihlKXtyZXR1cm4gZS54fSkpLnJhbmdlKFswLGtdKTt2YXIgaj0z
RHUucz0KZWxlY3RBbGwoImcud3JhcC5tdWx0aUNoYXJ0IikuZGF0YShbZV0pLEY9M0RqLmVudGVy
KCkuYXBwZW5kKCJnIikuYXR0cigiY2xhPQpzcyIsIndyYXAgbnZkMyBtdWx0aUNoYXJ0IikuYXBw
ZW5kKCJnIik7Ri5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInggYXhpcyI9CiksRi5hcHBlbmQo
ImciKS5hdHRyKCJjbGFzcyIsInkxIGF4aXMiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwi
eTIgYXhpcz0KIiksRi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImxpbmVzMVdyYXAiKSxGLmFw
cGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibGluPQplczJXcmFwIiksRi5hcHBlbmQoImciKS5hdHRy
KCJjbGFzcyIsImJhcnMxV3JhcCIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3M9CiIsImJhcnMy
V3JhcCIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJzdGFjazFXcmFwIiksRi5hcHBlbmQo
ImciKS5hdHRyKD0KImNsYXNzIiwic3RhY2syV3JhcCIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xh
c3MiLCJsZWdlbmRXcmFwIik7dmFyIEk9M0RqLnNlPQpsZWN0KCJnIik7cyYmKHgud2lkdGgoay8y
KSxJLnNlbGVjdCgiLmxlZ2VuZFdyYXAiKS5kYXR1bShlLm1hcChmdW5jdGlvbihlKXs9CnJldHVy
biBlLm9yaWdpbmFsS2V5PTNEZS5vcmlnaW5hbEtleT0zRD0zRD0zRHVuZGVmaW5lZD9lLmtleTpl
Lm9yaWdpbmFsS2V5LD0KZS5rZXk9M0RlLm9yaWdpbmFsS2V5KyhlLnlBeGlzPTNEPTNEMT8iIjoi
IChyaWdodCBheGlzKSIpLGV9KSkuY2FsbCh4KSx0LnRvPQpwIT0zRHguaGVpZ2h0KCkmJih0LnRv
cD0zRHguaGVpZ2h0KCksTD0zRChpfHxwYXJzZUludCh1LnN0eWxlKCJoZWlnaHQiKSl8fDQ9CjAw
KS10LnRvcC10LmJvdHRvbSksSS5zZWxlY3QoIi5sZWdlbmRXcmFwIikuYXR0cigidHJhbnNmb3Jt
IiwidHJhbnNsYXRlKCIraz0KLzIrIiwiKyAtdC50b3ArIikiKSksZC53aWR0aChrKS5oZWlnaHQo
TCkuaW50ZXJwb2xhdGUoIm1vbm90b25lIikuY29sb3IoZS5tPQphcChmdW5jdGlvbihlLHQpe3Jl
dHVybiBlLmNvbG9yfHxuW3Qlbi5sZW5ndGhdfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXI9
Cm4hZVtuXS5kaXNhYmxlZCYmZVtuXS55QXhpcz0zRD0zRDEmJmVbbl0udHlwZT0zRD0zRCJsaW5l
In0pKSx2LndpZHRoKGspLmhlaT0KZ2h0KEwpLmludGVycG9sYXRlKCJtb25vdG9uZSIpLmNvbG9y
KGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fG5bPQp0JW4ubGVuZ3RoXX0pLmZp
bHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkJiZlW25dLnlBeGlzPTNEPTNE
MiY9CiZlW25dLnR5cGU9M0Q9M0QibGluZSJ9KSksbS53aWR0aChrKS5oZWlnaHQoTCkuY29sb3Io
ZS5tYXAoZnVuY3Rpb24oZSx0KXtyZT0KdHVybiBlLmNvbG9yfHxuW3Qlbi5sZW5ndGhdfSkuZmls
dGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWQmJmVbPQpuXS55QXhpcz0zRD0z
RDEmJmVbbl0udHlwZT0zRD0zRCJiYXIifSkpLGcud2lkdGgoaykuaGVpZ2h0KEwpLmNvbG9yKGUu
bWFwKGY9CnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8blt0JW4ubGVuZ3RoXX0pLmZpbHRl
cihmdW5jdGlvbih0LG4pe3JldHVybiFlWz0Kbl0uZGlzYWJsZWQmJmVbbl0ueUF4aXM9M0Q9M0Qy
JiZlW25dLnR5cGU9M0Q9M0QiYmFyIn0pKSx5LndpZHRoKGspLmhlaWdodChMPQopLmNvbG9yKGUu
bWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fG5bdCVuLmxlbmd0aF19KS5maWx0ZXIo
ZnVuY3Rpb249Cih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkJiZlW25dLnlBeGlzPTNEPTNEMSYm
ZVtuXS50eXBlPTNEPTNEImFyZWEifSkpLGIudz0KaWR0aChrKS5oZWlnaHQoTCkuY29sb3IoZS5t
YXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8blt0JW4ubGVuZ3RoXX0pPQouZmlsdGVy
KGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWQmJmVbbl0ueUF4aXM9M0Q9M0QyJiZl
W25dLnR5cGU9M0Q9Cj0zRCJhcmVhIn0pKSxJLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgi
K3QubGVmdCsiLCIrdC50b3ArIikiKTt2YXIgcT0zRD0KSS5zZWxlY3QoIi5saW5lczFXcmFwIiku
ZGF0dW0oQSksUj0zREkuc2VsZWN0KCIuYmFyczFXcmFwIikuZGF0dW0oTSksVT0zREkuPQpzZWxl
Y3QoIi5zdGFjazFXcmFwIikuZGF0dW0oRCksej0zREkuc2VsZWN0KCIubGluZXMyV3JhcCIpLmRh
dHVtKE8pLFc9M0RJLnM9CmVsZWN0KCIuYmFyczJXcmFwIikuZGF0dW0oXyksWD0zREkuc2VsZWN0
KCIuc3RhY2syV3JhcCIpLmRhdHVtKFApLFY9M0RELmxlbj0KZ3RoP0QubWFwKGZ1bmN0aW9uKGUp
e3JldHVybiBlLnZhbHVlc30pLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBlLm1hcChmPQp1
bmN0aW9uKGUsbil7cmV0dXJue3g6ZS54LHk6ZS55K3Rbbl0ueX19KX0pLmNvbmNhdChbe3g6MCx5
OjB9XSk6W10sJD0zRFAubGU9Cm5ndGg/UC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVz
fSkucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubWFwKD0KZnVuY3Rpb24oZSxuKXtyZXR1
cm57eDplLngseTplLnkrdFtuXS55fX0pfSkuY29uY2F0KFt7eDowLHk6MH1dKTpbXTtoLmRvbWFp
PQpuKGx8fGQzLmV4dGVudChkMy5tZXJnZShIKS5jb25jYXQoViksZnVuY3Rpb24oZSl7cmV0dXJu
IGUueX0pKS5yYW5nZShbMCxMXSk9CixwLmRvbWFpbihjfHxkMy5leHRlbnQoZDMubWVyZ2UoQiku
Y29uY2F0KCQpLGZ1bmN0aW9uKGUpe3JldHVybiBlLnl9KSkucmFuZz0KZShbMCxMXSksZC55RG9t
YWluKGguZG9tYWluKCkpLG0ueURvbWFpbihoLmRvbWFpbigpKSx5LnlEb21haW4oaC5kb21haW4o
KSksPQp2LnlEb21haW4ocC5kb21haW4oKSksZy55RG9tYWluKHAuZG9tYWluKCkpLGIueURvbWFp
bihwLmRvbWFpbigpKSxELmxlbmd0aCY9CiZkMy50cmFuc2l0aW9uKFUpLmNhbGwoeSksUC5sZW5n
dGgmJmQzLnRyYW5zaXRpb24oWCkuY2FsbChiKSxNLmxlbmd0aCYmZDMudD0KcmFuc2l0aW9uKFIp
LmNhbGwobSksXy5sZW5ndGgmJmQzLnRyYW5zaXRpb24oVykuY2FsbChnKSxBLmxlbmd0aCYmZDMu
dHJhbnNpPQp0aW9uKHEpLmNhbGwoZCksTy5sZW5ndGgmJmQzLnRyYW5zaXRpb24oeikuY2FsbCh2
KSx3LnRpY2tzKGsvMTAwKS50aWNrU2l6ZSg9Ci1MLDApLEkuc2VsZWN0KCIueC5heGlzIikuYXR0
cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitMKyIpIiksZDMudHJhbnNpdD0KaW9uKEkuc2Vs
ZWN0KCIueC5heGlzIikpLmNhbGwodyksRS50aWNrcyhMLzM2KS50aWNrU2l6ZSgtaywwKSxkMy50
cmFuc2l0aW9uPQooSS5zZWxlY3QoIi55MS5heGlzIikpLmNhbGwoRSksUy50aWNrcyhMLzM2KS50
aWNrU2l6ZSgtaywwKSxkMy50cmFuc2l0aW9uKEk9Ci5zZWxlY3QoIi55Mi5heGlzIikpLmNhbGwo
UyksSS5zZWxlY3QoIi55Mi5heGlzIikuc3R5bGUoIm9wYWNpdHkiLEIubGVuZ3RoPz0KMTowKS5h
dHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIithLnJhbmdlKClbMV0rIiwwKSIpLHguZGlzcGF0
Y2gub24oInN0YXRlPQpDaGFuZ2UiLGZ1bmN0aW9uKGUpe0MudXBkYXRlKCl9KSxULm9uKCJ0b29s
dGlwU2hvdyIsZnVuY3Rpb24oZSl7byYmTihlLGYucGE9CnJlbnROb2RlKX0pfSksQ312YXIgdD0z
RHt0b3A6MzAscmlnaHQ6MjAsYm90dG9tOjUwLGxlZnQ6NjB9LG49M0RkMy5zY2FsZS5jYT0KdGVn
b3J5MjAoKS5yYW5nZSgpLHI9M0RudWxsLGk9M0RudWxsLHM9M0QhMCxvPTNEITAsdT0zRGZ1bmN0
aW9uKGUsdCxuLHIsaSl7PQpyZXR1cm4iPGgzPiIrZSsiPC9oMz4iKyI8cD4iK24rIiBhdCAiK3Qr
IjwvcD4ifSxhLGYsbCxjLGE9M0RkMy5zY2FsZS5saW5lYXI9CigpLGg9M0RkMy5zY2FsZS5saW5l
YXIoKSxwPTNEZDMuc2NhbGUubGluZWFyKCksZD0zRGUubW9kZWxzLmxpbmUoKS55U2NhbGUoaD0K
KSx2PTNEZS5tb2RlbHMubGluZSgpLnlTY2FsZShwKSxtPTNEZS5tb2RlbHMubXVsdGlCYXIoKS5z
dGFja2VkKCExKS55U2NhbGUoPQpoKSxnPTNEZS5tb2RlbHMubXVsdGlCYXIoKS5zdGFja2VkKCEx
KS55U2NhbGUocCkseT0zRGUubW9kZWxzLnN0YWNrZWRBcmVhKCk9Ci55U2NhbGUoaCksYj0zRGUu
bW9kZWxzLnN0YWNrZWRBcmVhKCkueVNjYWxlKHApLHc9M0RlLm1vZGVscy5heGlzKCkuc2NhbGUo
YT0KKS5vcmllbnQoImJvdHRvbSIpLnRpY2tQYWRkaW5nKDUpLEU9M0RlLm1vZGVscy5heGlzKCku
c2NhbGUoaCkub3JpZW50KCJsZWZ0PQoiKSxTPTNEZS5tb2RlbHMuYXhpcygpLnNjYWxlKHApLm9y
aWVudCgicmlnaHQiKSx4PTNEZS5tb2RlbHMubGVnZW5kKCkuaGVpZ2g9CnQoMzApLFQ9M0RkMy5k
aXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlkZSIpLE49M0RmdW5jdGlvbih0LG4pe3Zh
ciByPQo9M0R0LnBvc1swXSsobi5vZmZzZXRMZWZ0fHwwKSxpPTNEdC5wb3NbMV0rKG4ub2Zmc2V0
VG9wfHwwKSxzPTNEdy50aWNrRm9ybWE9CnQoKShkLngoKSh0LnBvaW50LHQucG9pbnRJbmRleCkp
LG89M0QodC5zZXJpZXMueUF4aXM9M0Q9M0QyP1M6RSkudGlja0Zvcm1hdD0KKCkoZC55KCkodC5w
b2ludCx0LnBvaW50SW5kZXgpKSxhPTNEdSh0LnNlcmllcy5rZXkscyxvLHQsQyk7ZS50b29sdGlw
LnNob3coPQpbcixpXSxhLHVuZGVmaW5lZCx1bmRlZmluZWQsbi5vZmZzZXRQYXJlbnQpfTtyZXR1
cm4gZC5kaXNwYXRjaC5vbigiZWxlbWVudE09Cm91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUp
e2UucG9zPTNEW2UucG9zWzBdK3QubGVmdCxlLnBvc1sxXSt0LnRvcF0sVC50bz0Kb2x0aXBTaG93
KGUpfSksZC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUp
e1QudG9vbHRpPQpwSGlkZShlKX0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9v
bHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS49CnBvc1swXSt0LmxlZnQsZS5wb3NbMV0rdC50
b3BdLFQudG9vbHRpcFNob3coZSl9KSx2LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91cz0KZW91dC50
b29sdGlwIixmdW5jdGlvbihlKXtULnRvb2x0aXBIaWRlKGUpfSksbS5kaXNwYXRjaC5vbigiZWxl
bWVudE1vdXNlb3ZlPQpyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK3Qu
bGVmdCxlLnBvc1sxXSt0LnRvcF0sVC50b29sdGlwU2g9Cm93KGUpfSksbS5kaXNwYXRjaC5vbigi
ZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe1QudG9vbHRpcEhpZGUoZT0KKX0p
LGcuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5w
b3M9M0RbZS5wb3NbMF0rPQp0LmxlZnQsZS5wb3NbMV0rdC50b3BdLFQudG9vbHRpcFNob3coZSl9
KSxnLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG89Cm9sdGlwIixmdW5jdGlvbihlKXtU
LnRvb2x0aXBIaWRlKGUpfSkseS5kaXNwYXRjaC5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKD0K
ZSl7aWYoIU1hdGgucm91bmQoeS55KCkoZS5wb2ludCkqMTAwKSlyZXR1cm4gc2V0VGltZW91dChm
dW5jdGlvbigpe2QzLnNlbGVjPQp0QWxsKCIucG9pbnQuaG92ZXIiKS5jbGFzc2VkKCJob3ZlciIs
ITEpfSwwKSwhMTtlLnBvcz0zRFtlLnBvc1swXSt0LmxlZnQsZS49CnBvc1sxXSt0LnRvcF0sVC50
b29sdGlwU2hvdyhlKX0pLHkuZGlzcGF0Y2gub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbihlKXtU
Lj0KdG9vbHRpcEhpZGUoZSl9KSxiLmRpc3BhdGNoLm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24o
ZSl7aWYoIU1hdGgucm91bmQoYi55PQooKShlLnBvaW50KSoxMDApKXJldHVybiBzZXRUaW1lb3V0
KGZ1bmN0aW9uKCl7ZDMuc2VsZWN0QWxsKCIucG9pbnQuaG92ZXIiKS49CmNsYXNzZWQoImhvdmVy
IiwhMSl9LDApLCExO2UucG9zPTNEW2UucG9zWzBdK3QubGVmdCxlLnBvc1sxXSt0LnRvcF0sVC50
b29sdD0KaXBTaG93KGUpfSksYi5kaXNwYXRjaC5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKGUp
e1QudG9vbHRpcEhpZGUoZSl9KSxkLmRpPQpzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9v
bHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rdC5sZWZ0LGU9Ci5wb3NbMV0rdC50
b3BdLFQudG9vbHRpcFNob3coZSl9KSxkLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9v
bHRpcCIsZj0KdW5jdGlvbihlKXtULnRvb2x0aXBIaWRlKGUpfSksdi5kaXNwYXRjaC5vbigiZWxl
bWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jPQp0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK3Qu
bGVmdCxlLnBvc1sxXSt0LnRvcF0sVC50b29sdGlwU2hvdyhlKX0pLHYuZGlzcGE9CnRjaC5vbigi
ZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe1QudG9vbHRpcEhpZGUoZSl9KSxU
Lm9uKCJ0b29sdD0KaXBIaWRlIixmdW5jdGlvbigpe28mJmUudG9vbHRpcC5jbGVhbnVwKCl9KSxD
LmRpc3BhdGNoPTNEVCxDLmxpbmVzMT0zRGQsQy5sPQppbmVzMj0zRHYsQy5iYXJzMT0zRG0sQy5i
YXJzMj0zRGcsQy5zdGFjazE9M0R5LEMuc3RhY2syPTNEYixDLnhBeGlzPTNEdyxDLnk9CkF4aXMx
PTNERSxDLnlBeGlzMj0zRFMsQy5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKEMp
LEMueD0zRGZ1bmN0aT0Kb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGdldFg9M0RlLGQu
eChlKSxtLngoZSksQyk6Z2V0WH0sQy55PTNEZnVuY3RpPQpvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oZ2V0WT0zRGUsZC55KGUpLG0ueShlKSxDKTpnZXRZfSxDLnlEb21haW4xPQo9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGUsQyk6bH0sQy55RG9tYWlu
Mj0zRGZ1bmN0aW9uKGU9Cil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLEMpOmN9LEMu
bWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZT0KbnRzLmxlbmd0aD8odD0zRGUsQyk6
dH0sQy53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEPQpl
LEMpOnJ9LEMuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9
M0RlLEMpOml9LEMuY29sb3I9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhuPTNEZSx4LmNvbG9yKGUpLEMpOm59LEMuc2hvd0xlZ2VuZD0KPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLEMpOnN9LEMudG9vbHRpcHM9M0RmdW5jdGlvbihl
PQope3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZSxDKTpvfSxDLnRvb2x0aXBDb250ZW50
PTNEZnVuY3Rpb24oZSl7cmV0dXI9Cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsQyk6dX0sQ30s
ZS5tb2RlbHMub2hsY0Jhcj0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24geD0KKGUpe3JldHVybiBlLmVh
Y2goZnVuY3Rpb24oZSl7dmFyIGc9M0RuLXQubGVmdC10LnJpZ2h0LHg9M0RyLXQudG9wLXQuYm90
dG9tPQosVD0zRGQzLnNlbGVjdCh0aGlzKTtzLmRvbWFpbih5fHxkMy5leHRlbnQoZVswXS52YWx1
ZXMubWFwKHUpLmNvbmNhdChwKSkpLHY9Cj9zLnJhbmdlKHd8fFtnKi41L2VbMF0udmFsdWVzLmxl
bmd0aCxnKihlWzBdLnZhbHVlcy5sZW5ndGgtLjUpL2VbMF0udmFsdWVzLj0KbGVuZ3RoXSk6cy5y
YW5nZSh3fHxbMCxnXSksby5kb21haW4oYnx8W2QzLm1pbihlWzBdLnZhbHVlcy5tYXAoaCkuY29u
Y2F0KGQpPQopLGQzLm1heChlWzBdLnZhbHVlcy5tYXAoYykuY29uY2F0KGQpKV0pLnJhbmdlKEV8
fFt4LDBdKSxzLmRvbWFpbigpWzBdPTNEPQo9M0Q9M0RzLmRvbWFpbigpWzFdJiYocy5kb21haW4o
KVswXT9zLmRvbWFpbihbcy5kb21haW4oKVswXS1zLmRvbWFpbigpWzBdKi49CjAxLHMuZG9tYWlu
KClbMV0rcy5kb21haW4oKVsxXSouMDFdKTpzLmRvbWFpbihbLTEsMV0pKSxvLmRvbWFpbigpWzBd
PTNEPTNEPQo9M0RvLmRvbWFpbigpWzFdJiYoby5kb21haW4oKVswXT9vLmRvbWFpbihbby5kb21h
aW4oKVswXStvLmRvbWFpbigpWzBdKi4wMSw9Cm8uZG9tYWluKClbMV0tby5kb21haW4oKVsxXSou
MDFdKTpvLmRvbWFpbihbLTEsMV0pKTt2YXIgTj0zRGQzLnNlbGVjdCh0aGlzKT0KLnNlbGVjdEFs
bCgiZy5udi13cmFwLm52LW9obGNCYXIiKS5kYXRhKFtlWzBdLnZhbHVlc10pLEM9M0ROLmVudGVy
KCkuYXBwZW5kPQooImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1vaGxjQmFyIiks
az0zREMuYXBwZW5kKCJkZWZzIiksTD0zREMuYXA9CnBlbmQoImciKSxBPTNETi5zZWxlY3QoImci
KTtMLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtdGlja3MiKSxOLmF0dHIoIj0KdHJhbnNm
b3JtIiwidHJhbnNsYXRlKCIrdC5sZWZ0KyIsIit0LnRvcCsiKSIpLFQub24oImNsaWNrIixmdW5j
dGlvbihlLHQpe1MuPQpjaGFydENsaWNrKHtkYXRhOmUsaW5kZXg6dCxwb3M6ZDMuZXZlbnQsaWQ6
aX0pfSksay5hcHBlbmQoImNsaXBQYXRoIikuYXR0cig9CiJpZCIsIm52LWNoYXJ0LWNsaXAtcGF0
aC0iK2kpLmFwcGVuZCgicmVjdCIpLE4uc2VsZWN0KCIjbnYtY2hhcnQtY2xpcC1wYXRoLT0KIitp
KyIgcmVjdCIpLmF0dHIoIndpZHRoIixnKS5hdHRyKCJoZWlnaHQiLHgpLEEuYXR0cigiY2xpcC1w
YXRoIixtPyJ1cmwoI252PQotY2hhcnQtY2xpcC1wYXRoLSIraSsiKSI6IiIpO3ZhciBPPTNETi5z
ZWxlY3QoIi5udi10aWNrcyIpLnNlbGVjdEFsbCgiLm52LXQ9CmljayIpLmRhdGEoZnVuY3Rpb24o
ZSl7cmV0dXJuIGV9KTtPLmV4aXQoKS5yZW1vdmUoKTt2YXIgTT0zRE8uZW50ZXIoKS5hcHBlbj0K
ZCgicGF0aCIpLmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQsbil7cmV0dXJuKGYoZSx0KT5sKGUs
dCk/Im52LXRpY2sgbmVnYXRpPQp2ZSI6Im52LXRpY2sgcG9zaXRpdmUiKSsiIG52LXRpY2stIitu
KyItIit0fSkuYXR0cigiZCIsZnVuY3Rpb24odCxuKXt2YXIgcj0KPTNEZy9lWzBdLnZhbHVlcy5s
ZW5ndGgqLjk7cmV0dXJuIm0wLDBsMCwiKyhvKGYodCxuKSktbyhjKHQsbikpKSsibCIrIC1yLzIr
PQoiLDBsIityLzIrIiwwbDAsIisobyhoKHQsbikpLW8oZih0LG4pKSkrImwwLCIrKG8obCh0LG4p
KS1vKGgodCxuKSkpKyJsIityLzI9CisiLDBsIisgLXIvMisiLDB6In0pLmF0dHIoInRyYW5zZm9y
bSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIrcyh1KD0KZSx0KSkrIiwiK28oYyhl
LHQpKSsiKSJ9KS5vbigibW91c2VvdmVyIixmdW5jdGlvbih0LG4pe2QzLnNlbGVjdCh0aGlzKS5j
bGFzPQpzZWQoImhvdmVyIiwhMCksUy5lbGVtZW50TW91c2VvdmVyKHtwb2ludDp0LHNlcmllczpl
WzBdLHBvczpbcyh1KHQsbikpLG8oYSg9CnQsbikpXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6
MCxlOmQzLmV2ZW50fSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKHQsbj0KKXtkMy5zZWxlY3Qo
dGhpcykuY2xhc3NlZCgiaG92ZXIiLCExKSxTLmVsZW1lbnRNb3VzZW91dCh7cG9pbnQ6dCxzZXJp
ZXM6ZVswPQpdLHBvaW50SW5kZXg6bixzZXJpZXNJbmRleDowLGU6ZDMuZXZlbnR9KX0pLm9uKCJj
bGljayIsZnVuY3Rpb24oZSx0KXtTLmVsZW09CmVudENsaWNrKHt2YWx1ZTphKGUsdCksZGF0YTpl
LGluZGV4OnQscG9zOltzKHUoZSx0KSksbyhhKGUsdCkpXSxlOmQzLmV2ZW50LD0KaWQ6aX0pLGQz
LmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfSkub24oImRibGNsaWNrIixmdW5jdGlvbihlLHQpe1Mu
ZWxlbWVudERiPQpsQ2xpY2soe3ZhbHVlOmEoZSx0KSxkYXRhOmUsaW5kZXg6dCxwb3M6W3ModShl
LHQpKSxvKGEoZSx0KSldLGU6ZDMuZXZlbnQsaWQ9CjppfSksZDMuZXZlbnQuc3RvcFByb3BhZ2F0
aW9uKCl9KTtPLmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQsbil7cmV0dXJuKGYoZT0KLHQpPmwo
ZSx0KT8ibnYtdGljayBuZWdhdGl2ZSI6Im52LXRpY2sgcG9zaXRpdmUiKSsiIG52LXRpY2stIitu
KyItIit0fSksZDMuPQp0cmFuc2l0aW9uKE8pLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0
KXtyZXR1cm4idHJhbnNsYXRlKCIrcyh1KGUsdCkpKyI9CiwiK28oYyhlLHQpKSsiKSJ9KS5hdHRy
KCJkIixmdW5jdGlvbih0LG4pe3ZhciByPTNEZy9lWzBdLnZhbHVlcy5sZW5ndGgqLjk7cj0KZXR1
cm4ibTAsMGwwLCIrKG8oZih0LG4pKS1vKGModCxuKSkpKyJsIisgLXIvMisiLDBsIityLzIrIiww
bDAsIisobyhoKHQsbikpPQotbyhmKHQsbikpKSsibDAsIisobyhsKHQsbikpLW8oaCh0LG4pKSkr
ImwiK3IvMisiLDBsIisgLXIvMisiLDB6In0pfSkseH12YXI9CiB0PTNEe3RvcDowLHJpZ2h0OjAs
Ym90dG9tOjAsbGVmdDowfSxuPTNEOTYwLHI9M0Q1MDAsaT0zRE1hdGguZmxvb3IoTWF0aC5yYT0K
bmRvbSgpKjFlNCkscz0zRGQzLnNjYWxlLmxpbmVhcigpLG89M0RkMy5zY2FsZS5saW5lYXIoKSx1
PTNEZnVuY3Rpb24oZSl7cmV0PQp1cm4gZS54fSxhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0s
Zj0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLm9wZW59LGw9M0RmdW49CmN0aW9uKGUpe3JldHVybiBl
LmNsb3NlfSxjPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUuaGlnaH0saD0zRGZ1bmN0aW9uKGUpe3Jl
dD0KdXJuIGUubG93fSxwPTNEW10sZD0zRFtdLHY9M0QhMSxtPTNEITAsZz0zRGUudXRpbHMuZGVm
YXVsdENvbG9yKCkseSxiLHcsRSxTPQo9M0RkMy5kaXNwYXRjaCgiY2hhcnRDbGljayIsImVsZW1l
bnRDbGljayIsImVsZW1lbnREYmxDbGljayIsImVsZW1lbnRNb3VzZW89CnZlciIsImVsZW1lbnRN
b3VzZW91dCIpO3JldHVybiB4LmRpc3BhdGNoPTNEUyx4Lm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlv
bnNGdT0KbmMuYmluZCh4KSx4Lng9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8odT0zRGUseCk6dX0seC55PTNEZnVuPQpjdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oYT0zRGUseCk6YX0seC5vcGVuPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGE9CnJndW1lbnRzLmxl
bmd0aD8oZj0zRGUseCk6Zn0seC5jbG9zZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPz0KKGw9M0RlLHgpOmx9LHguaGlnaD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhjPTNEZSx4KTpjfSx4LmxvPQp3PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGg9M0RlLHgpOmh9LHgubWFyZ2luPTNEZnVuY3Rpb24oZSk9CntyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8odC50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50
b3A6dC50b3AsdD0KLnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdo
dDp0LnJpZ2h0LHQuYm90dG9tPTNEdHlwZW9mIGUuPQpib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5i
b3R0b206dC5ib3R0b20sdC5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmU9CmQiP2Uu
bGVmdDp0LmxlZnQseCk6dH0seC53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhuPTNEZT0KLHgpOm59LHguaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHI9M0RlLHgpOnJ9LHgueFNjYWxlPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8ocz0zRGUseCk6c30seC55U2NhbGU9M0RmdW5jdGlvbihlKXs9CnJl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZSx4KTpvfSx4LnhEb21haW49M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbj0KdHMubGVuZ3RoPyh5PTNEZSx4KTp5fSx4LnlEb21haW49M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0KPTNEZSx4KTpifSx4LnhSYW5nZT0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3PTNEZSx4KTp3fSx4LnlSPQph
bmdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlLHgpOkV9LHgu
Zm9yY2VYPTNEZnVuY3Rpb249CihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUseCk6
cH0seC5mb3JjZVk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndT0KbWVudHMubGVuZ3RoPyhkPTNE
ZSx4KTpkfSx4LnBhZERhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
PQp2PTNEZSx4KTp2fSx4LmNsaXBFZGdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KG09M0RlLHgpOm19LHg9Ci5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhnPTNEZS51dGlscy5nZXRDb2xvcih0KSx4KTpnfT0KLHguaWQ9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUseCk6aX0seH0sZS5tb2RlbHMucGll
PTNEPQpmdW5jdGlvbigpe2Z1bmN0aW9uIFMoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXtm
dW5jdGlvbiBxKGUpe3ZhciB0PTNEKGU9Ci5zdGFydEFuZ2xlK2UuZW5kQW5nbGUpKjkwL01hdGgu
UEktOTA7cmV0dXJuIHQ+OTA/dC0xODA6dH1mdW5jdGlvbiBSKGUpe2UuZT0KbmRBbmdsZT0zRGlz
TmFOKGUuZW5kQW5nbGUpPzA6ZS5lbmRBbmdsZSxlLnN0YXJ0QW5nbGU9M0Rpc05hTihlLnN0YXJ0
QW5nbGUpPQo/MDplLnN0YXJ0QW5nbGUsbXx8KGUuaW5uZXJSYWRpdXM9M0QwKTt2YXIgdD0zRGQz
LmludGVycG9sYXRlKHRoaXMuX2N1cnJlbnQ9CixlKTtyZXR1cm4gdGhpcy5fY3VycmVudD0zRHQo
MCksZnVuY3Rpb24oZSl7cmV0dXJuIEEodChlKSl9fWZ1bmN0aW9uIFUoZSl7ZT0KLmlubmVyUmFk
aXVzPTNEMDt2YXIgdD0zRGQzLmludGVycG9sYXRlKHtzdGFydEFuZ2xlOjAsZW5kQW5nbGU6MH0s
ZSk7cmV0dXJuPQogZnVuY3Rpb24oZSl7cmV0dXJuIEEodChlKSl9fXZhciBvPTNEbi10LmxlZnQt
dC5yaWdodCxmPTNEci10LnRvcC10LmJvdHRvbSw9ClM9M0RNYXRoLm1pbihvLGYpLzIseD0zRFMt
Uy81LFQ9M0RkMy5zZWxlY3QodGhpcyksTj0zRFQuc2VsZWN0QWxsKCIubnYtd3JhcD0KLm52LXBp
ZSIpLmRhdGEoZSksQz0zRE4uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMg
bnYtd3JhcCBudi1wPQppZSBudi1jaGFydC0iK3UpLGs9M0RDLmFwcGVuZCgiZyIpLEw9M0ROLnNl
bGVjdCgiZyIpO2suYXBwZW5kKCJnIikuYXR0cigiY2w9CmFzcyIsIm52LXBpZSIpLGsuYXBwZW5k
KCJnIikuYXR0cigiY2xhc3MiLCJudi1waWVMYWJlbHMiKSxOLmF0dHIoInRyYW5zZm9ybT0KIiwi
dHJhbnNsYXRlKCIrdC5sZWZ0KyIsIit0LnRvcCsiKSIpLEwuc2VsZWN0KCIubnYtcGllIikuYXR0
cigidHJhbnNmb3JtIiwiPQp0cmFuc2xhdGUoIitvLzIrIiwiK2YvMisiKSIpLEwuc2VsZWN0KCIu
bnYtcGllTGFiZWxzIikuYXR0cigidHJhbnNmb3JtIiwidHI9CmFuc2xhdGUoIitvLzIrIiwiK2Yv
MisiKSIpLFQub24oImNsaWNrIixmdW5jdGlvbihlLHQpe0UuY2hhcnRDbGljayh7ZGF0YTplLD0K
aW5kZXg6dCxwb3M6ZDMuZXZlbnQsaWQ6dX0pfSk7dmFyIEE9M0RkMy5zdmcuYXJjKCkub3V0ZXJS
YWRpdXMoeCk7eSYmQS5zdGFyPQp0QW5nbGUoeSksYiYmQS5lbmRBbmdsZShiKSxtJiZBLmlubmVy
UmFkaXVzKFMqdyk7dmFyIE89M0RkMy5sYXlvdXQucGllKCkuc289CnJ0KG51bGwpLnZhbHVlKGZ1
bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVkPzA6cyhlKX0pLE09M0ROLnNlbGVjdCgiLm52LXBp
ZT0KIikuc2VsZWN0QWxsKCIubnYtc2xpY2UiKS5kYXRhKE8pLF89M0ROLnNlbGVjdCgiLm52LXBp
ZUxhYmVscyIpLnNlbGVjdEFsbCgiPQoubnYtbGFiZWwiKS5kYXRhKE8pO00uZXhpdCgpLnJlbW92
ZSgpLF8uZXhpdCgpLnJlbW92ZSgpO3ZhciBEPTNETS5lbnRlcigpLmE9CnBwZW5kKCJnIikuYXR0
cigiY2xhc3MiLCJudi1zbGljZSIpLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKGUsdCl7ZDMuc2Vs
ZWN0KD0KdGhpcykuY2xhc3NlZCgiaG92ZXIiLCEwKSxFLmVsZW1lbnRNb3VzZW92ZXIoe2xhYmVs
OmkoZS5kYXRhKSx2YWx1ZTpzKGUuZGF0PQphKSxwb2ludDplLmRhdGEscG9pbnRJbmRleDp0LHBv
czpbZDMuZXZlbnQucGFnZVgsZDMuZXZlbnQucGFnZVldLGlkOnV9KX0pLm89Cm4oIm1vdXNlb3V0
IixmdW5jdGlvbihlLHQpe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIsITEpLEUuZWxl
bWVudE1vdT0Kc2VvdXQoe2xhYmVsOmkoZS5kYXRhKSx2YWx1ZTpzKGUuZGF0YSkscG9pbnQ6ZS5k
YXRhLGluZGV4OnQsaWQ6dX0pfSkub24oImNsPQppY2siLGZ1bmN0aW9uKGUsdCl7RS5lbGVtZW50
Q2xpY2soe2xhYmVsOmkoZS5kYXRhKSx2YWx1ZTpzKGUuZGF0YSkscG9pbnQ6ZS49CmRhdGEsaW5k
ZXg6dCxwb3M6ZDMuZXZlbnQsaWQ6dX0pLGQzLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfSkub24o
ImRibGNsaWNrIj0KLGZ1bmN0aW9uKGUsdCl7RS5lbGVtZW50RGJsQ2xpY2soe2xhYmVsOmkoZS5k
YXRhKSx2YWx1ZTpzKGUuZGF0YSkscG9pbnQ6ZS5kPQphdGEsaW5kZXg6dCxwb3M6ZDMuZXZlbnQs
aWQ6dX0pLGQzLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfSk7TS5hdHRyKCJmaWxsIiw9CmZ1bmN0
aW9uKGUsdCl7cmV0dXJuIGEoZSx0KX0pLmF0dHIoInN0cm9rZSIsZnVuY3Rpb24oZSx0KXtyZXR1
cm4gYShlLHQpfSk7dj0KYXIgUD0zREQuYXBwZW5kKCJwYXRoIikuZWFjaChmdW5jdGlvbihlKXt0
aGlzLl9jdXJyZW50PTNEZX0pO00uc2VsZWN0KCJwYXRoPQoiKS5hdHRyKCJkIixBKTtpZihsKXt2
YXIgSD0zRGQzLnN2Zy5hcmMoKS5pbm5lclJhZGl1cygwKTtjJiYoSD0zREEpLGgmJihIPQo9M0Rk
My5zdmcuYXJjKCkub3V0ZXJSYWRpdXMoQS5vdXRlclJhZGl1cygpKSksXy5lbnRlcigpLmFwcGVu
ZCgiZyIpLmNsYXNzZWQ9CigibnYtbGFiZWwiLCEwKS5lYWNoKGZ1bmN0aW9uKGUsdCl7dmFyIG49
M0RkMy5zZWxlY3QodGhpcyk7bi5hdHRyKCJ0cmFuc2Zvcj0KbSIsZnVuY3Rpb24oZSl7aWYoZyl7
ZS5vdXRlclJhZGl1cz0zRHgrMTAsZS5pbm5lclJhZGl1cz0zRHgrMTU7dmFyIHQ9M0QoZS5zPQp0
YXJ0QW5nbGUrZS5lbmRBbmdsZSkvMiooMTgwL01hdGguUEkpO3JldHVybihlLnN0YXJ0QW5nbGUr
ZS5lbmRBbmdsZSkvMjxNYXQ9CmguUEk/dC09M0Q5MDp0Kz0zRDkwLCJ0cmFuc2xhdGUoIitILmNl
bnRyb2lkKGUpKyIpIHJvdGF0ZSgiK3QrIikifXJldHVybiBlLj0Kb3V0ZXJSYWRpdXM9M0RTKzEw
LGUuaW5uZXJSYWRpdXM9M0RTKzE1LCJ0cmFuc2xhdGUoIitILmNlbnRyb2lkKGUpKyIpIn0pLG4u
PQphcHBlbmQoInJlY3QiKS5zdHlsZSgic3Ryb2tlIiwiI2ZmZiIpLnN0eWxlKCJmaWxsIiwiI2Zm
ZiIpLmF0dHIoInJ4IiwzKS5hdHQ9CnIoInJ5IiwzKSxuLmFwcGVuZCgidGV4dCIpLnN0eWxlKCJ0
ZXh0LWFuY2hvciIsZz8oZS5zdGFydEFuZ2xlK2UuZW5kQW5nbGUpLz0KMjxNYXRoLlBJPyJzdGFy
dCI6ImVuZCI6Im1pZGRsZSIpLnN0eWxlKCJmaWxsIiwiIzAwMCIpfSk7dmFyIEI9M0R7fSxqPTNE
MTQsPQpGPTNEMTQwLEk9M0RmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5mbG9vcihlWzBdL0YpKkYr
IiwiK01hdGguZmxvb3IoZVsxXS9qKSo9Cmp9O18uYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihl
KXtpZihnKXtlLm91dGVyUmFkaXVzPTNEeCsxMCxlLmlubmVyUmFkaXVzPQo9M0R4KzE1O3ZhciB0
PTNEKGUuc3RhcnRBbmdsZStlLmVuZEFuZ2xlKS8yKigxODAvTWF0aC5QSSk7cmV0dXJuKGUuc3Rh
cnRBbmc9CmxlK2UuZW5kQW5nbGUpLzI8TWF0aC5QST90LT0zRDkwOnQrPTNEOTAsInRyYW5zbGF0
ZSgiK0guY2VudHJvaWQoZSkrIikgcm90YT0KdGUoIit0KyIpIn1lLm91dGVyUmFkaXVzPTNEUysx
MCxlLmlubmVyUmFkaXVzPTNEUysxNTt2YXIgbj0zREguY2VudHJvaWQoZSksPQpyPTNESShuKTty
ZXR1cm4gQltyXSYmKG5bMV0tPTNEaiksQltJKG4pXT0zRCEwLCJ0cmFuc2xhdGUoIituKyIpIn0p
LF8uc2VsZWM9CnQoIi5udi1sYWJlbCB0ZXh0Iikuc3R5bGUoInRleHQtYW5jaG9yIixnPyhkLnN0
YXJ0QW5nbGUrZC5lbmRBbmdsZSkvMjxNYXRoLj0KUEk/InN0YXJ0IjoiZW5kIjoibWlkZGxlIiku
dGV4dChmdW5jdGlvbihlLHQpe3ZhciBuPTNEKGUuZW5kQW5nbGUtZS5zdGFydEFuPQpnbGUpLygy
Kk1hdGguUEkpLHI9M0R7a2V5OmkoZS5kYXRhKSx2YWx1ZTpzKGUuZGF0YSkscGVyY2VudDpkMy5m
b3JtYXQoIiUiKSg9Cm4pfTtyZXR1cm4gZS52YWx1ZSYmbj52P3JbcF06IiJ9KX19KSxTfXZhciB0
PTNEe3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdD0KOjB9LG49M0Q1MDAscj0zRDUwMCxpPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0scz0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnl9PQosbz0z
RGZ1bmN0aW9uKGUpe3JldHVybiBlLmRlc2NyaXB0aW9ufSx1PTNETWF0aC5mbG9vcihNYXRoLnJh
bmRvbSgpKjFlNCksYT0KPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxmPTNEZDMuZm9ybWF0KCIs
LjJmIiksbD0zRCEwLGM9M0QhMCxoPTNEITEscD0zRCJrPQpleSIsdj0zRC4wMixtPTNEITEsZz0z
RCExLHk9M0QhMSxiPTNEITEsdz0zRC41LEU9M0RkMy5kaXNwYXRjaCgiY2hhcnRDbGljayI9Ciwi
ZWxlbWVudENsaWNrIiwiZWxlbWVudERibENsaWNrIiwiZWxlbWVudE1vdXNlb3ZlciIsImVsZW1l
bnRNb3VzZW91dCIpO3JldD0KdXJuIFMuZGlzcGF0Y2g9M0RFLFMub3B0aW9ucz0zRGUudXRpbHMu
b3B0aW9uc0Z1bmMuYmluZChTKSxTLm1hcmdpbj0zRGZ1bmN0PQppb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHQudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnQ9
Ci50b3AsdC5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6dC5y
aWdodCx0LmJvdHRvbT0zRHR5cD0KZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9t
OnQuYm90dG9tLHQubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuPQpkZWZpbmVkIj9lLmxlZnQ6
dC5sZWZ0LFMpOnR9LFMud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD89CihuPTNEZSxTKTpufSxTLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhyPTNEZSxTKTpyfSxTLj0KdmFsdWVzPTNEZnVuY3Rpb24odCl7cmV0dXJuIGUubG9n
KCJwaWUudmFsdWVzKCkgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4iKSxTPQp9LFMueD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPTNEZSxTKTppfSxTLnk9M0RmdW5jdGlv
bihlKXs9CnJldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPTNEZDMuZnVuY3RvcihlKSxTKTpzfSxT
LmRlc2NyaXB0aW9uPTNEZnVuY3Rpb24oZT0KKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0z
RGUsUyk6b30sUy5zaG93TGFiZWxzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyPQpndW1lbnRzLmxl
bmd0aD8obD0zRGUsUyk6bH0sUy5sYWJlbFN1bmJlYW1MYXlvdXQ9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW09CmVudHMubGVuZ3RoPyhnPTNEZSxTKTpnfSxTLmRvbnV0TGFiZWxzT3V0c2lkZT0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudD0Kcy5sZW5ndGg/KGg9M0RlLFMpOmh9LFMucGll
TGFiZWxzT3V0c2lkZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuPQpndGg/KGM9
M0RlLFMpOmN9LFMubGFiZWxUeXBlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHA9M0RlLHA9Cj0zRHB8fCJrZXkiLFMpOnB9LFMuZG9udXQ9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8obT0zRGUsUyk6bT0KfSxTLmRvbnV0UmF0aW89M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz0zRGUsUyk6d30sUy5zdGFydEFuPQpnbGU9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT0zRGUsUyk6eX0sUy5lbmRB
bmdsZT0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9M0RlLFMpOmJ9
LFMuaWQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbj0KdHMubGVuZ3RoPyh1PTNEZSxTKTp1
fSxTLmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlPQou
dXRpbHMuZ2V0Q29sb3IodCksUyk6YX0sUy52YWx1ZUZvcm1hdD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3Q9Cmg/KGY9M0RlLFMpOmZ9LFMubGFiZWxUaHJlc2hvbGQ9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj0zRD0KZSxTKTp2fSxTfSxlLm1vZGVs
cy5waWVDaGFydD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdihlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0
PQppb24oZSl7dmFyIHU9M0RkMy5zZWxlY3QodGhpcyksYT0zRHRoaXMsZj0zRChpfHxwYXJzZUlu
dCh1LnN0eWxlKCJ3aWR0aCIpKXw9Cnw5NjApLXIubGVmdC1yLnJpZ2h0LGQ9M0Qoc3x8cGFyc2VJ
bnQodS5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXIudG9wLXIuYm90dD0Kb207di51cGRhdGU9M0Rm
dW5jdGlvbigpe3UuY2FsbCh2KX0sdi5jb250YWluZXI9M0R0aGlzLGwuZGlzYWJsZWQ9M0RlLm1h
cChmPQp1bmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pO2lmKCFjKXt2YXIgbTtjPTNEe307
Zm9yKG0gaW4gbClsW21daW5zdGFuY2U9Cm9mIEFycmF5P2NbbV09M0RsW21dLnNsaWNlKDApOmNb
bV09M0RsW21dfWlmKCFlfHwhZS5sZW5ndGgpe3ZhciBnPTNEdS5zZWxlYz0KdEFsbCgiLm52LW5v
RGF0YSIpLmRhdGEoW2hdKTtyZXR1cm4gZy5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNs
YXNzIiwiPQpudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1h
bmNob3IiLCJtaWRkbGUiKSxnLmF0dHIoIng9CiIsci5sZWZ0K2YvMikuYXR0cigieSIsci50b3Ar
ZC8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksdn11LnNlbGVjdEFsbD0KKCIubnYtbm9E
YXRhIikucmVtb3ZlKCk7dmFyIHk9M0R1LnNlbGVjdEFsbCgiZy5udi13cmFwLm52LXBpZUNoYXJ0
IikuZGF0YShbPQplXSksYj0zRHkuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52
ZDMgbnYtd3JhcCBudi1waWVDaGFydCIpLmFwcGU9Cm5kKCJnIiksdz0zRHkuc2VsZWN0KCJnIik7
Yi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXBpZVdyYXAiKSxiLmFwcGVuZD0KKCJnIiku
YXR0cigiY2xhc3MiLCJudi1sZWdlbmRXcmFwIiksbyYmKG4ud2lkdGgoZikua2V5KHQueCgpKSx5
LnNlbGVjdCgiLm52PQotbGVnZW5kV3JhcCIpLmRhdHVtKGUpLmNhbGwobiksci50b3AhPTNEbi5o
ZWlnaHQoKSYmKHIudG9wPTNEbi5oZWlnaHQoKSxkPQo9M0Qoc3x8cGFyc2VJbnQodS5zdHlsZSgi
aGVpZ2h0IikpfHw0MDApLXIudG9wLXIuYm90dG9tKSx5LnNlbGVjdCgiLm52LWxlZ2U9Cm5kV3Jh
cCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrIC1yLnRvcCsiKSIpKSx5LmF0dHIo
InRyYW5zZm9ybSIsIj0KdHJhbnNsYXRlKCIrci5sZWZ0KyIsIityLnRvcCsiKSIpLHQud2lkdGgo
ZikuaGVpZ2h0KGQpO3ZhciBFPTNEdy5zZWxlY3QoIi5uPQp2LXBpZVdyYXAiKS5kYXR1bShbZV0p
O2QzLnRyYW5zaXRpb24oRSkuY2FsbCh0KSxuLmRpc3BhdGNoLm9uKCJzdGF0ZUNoYW5nZSI9Cixm
dW5jdGlvbihlKXtsPTNEZSxwLnN0YXRlQ2hhbmdlKGwpLHYudXBkYXRlKCl9KSx0LmRpc3BhdGNo
Lm9uKCJlbGVtZW50TW91cz0KZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtwLnRvb2x0aXBIaWRl
KGUpfSkscC5vbigiY2hhbmdlU3RhdGUiLGZ1bmN0aW9uKHQpPQp7dHlwZW9mIHQuZGlzYWJsZWQh
PTNEInVuZGVmaW5lZCImJihlLmZvckVhY2goZnVuY3Rpb24oZSxuKXtlLmRpc2FibGVkPTNEdC49
CmRpc2FibGVkW25dfSksbC5kaXNhYmxlZD0zRHQuZGlzYWJsZWQpLHYudXBkYXRlKCl9KX0pLHZ9
dmFyIHQ9M0RlLm1vZGVscy5waT0KZSgpLG49M0RlLm1vZGVscy5sZWdlbmQoKSxyPTNEe3RvcDoz
MCxyaWdodDoyMCxib3R0b206MjAsbGVmdDoyMH0saT0zRG51bGwsPQpzPTNEbnVsbCxvPTNEITAs
dT0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCksYT0zRCEwLGY9M0RmdW5jdGlvbihlLHQsbixyKXty
ZXQ9CnVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIrdCsiPC9wPiJ9LGw9M0R7fSxjPTNEbnVsbCxo
PTNEIk5vIERhdGEgQXZhaWxhYmxlLj0KIixwPTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93Iiwi
dG9vbHRpcEhpZGUiLCJzdGF0ZUNoYW5nZSIsImNoYW5nZVN0YXRlIiksPQpkPTNEZnVuY3Rpb24o
bixyKXt2YXIgaT0zRHQuZGVzY3JpcHRpb24oKShuLnBvaW50KXx8dC54KCkobi5wb2ludCkscz0z
RG4ucG89CnNbMF0rKHImJnIub2Zmc2V0TGVmdHx8MCksbz0zRG4ucG9zWzFdKyhyJiZyLm9mZnNl
dFRvcHx8MCksdT0zRHQudmFsdWVGb3JtYT0KdCgpKHQueSgpKG4ucG9pbnQpKSxhPTNEZihpLHUs
bix2KTtlLnRvb2x0aXAuc2hvdyhbcyxvXSxhLG4udmFsdWU8MD8ibiI6InMiPQosbnVsbCxyKX07
cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24o
ZSl7ZS5wb3M9Cj0zRFtlLnBvc1swXStyLmxlZnQsZS5wb3NbMV0rci50b3BdLHAudG9vbHRpcFNo
b3coZSl9KSxwLm9uKCJ0b29sdGlwU2hvdyIsZj0KdW5jdGlvbihlKXthJiZkKGUpfSkscC5vbigi
dG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7YSYmZS50b29sdGlwLmNsZWFudXAoKX0pPQosdi5sZWdl
bmQ9M0RuLHYuZGlzcGF0Y2g9M0RwLHYucGllPTNEdCxkMy5yZWJpbmQodix0LCJ2YWx1ZUZvcm1h
dCIsInZhbHVlcyI9CiwieCIsInkiLCJkZXNjcmlwdGlvbiIsImlkIiwic2hvd0xhYmVscyIsImRv
bnV0TGFiZWxzT3V0c2lkZSIsInBpZUxhYmVsc091dD0Kc2lkZSIsImxhYmVsVHlwZSIsImRvbnV0
IiwiZG9udXRSYXRpbyIsImxhYmVsVGhyZXNob2xkIiksdi5vcHRpb25zPTNEZS51dGlsPQpzLm9w
dGlvbnNGdW5jLmJpbmQodiksdi5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oci50b3A9Cj0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDpyLnRv
cCxyLnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZD0KZWZpbmVkIj9lLnJpZ2h0OnIucmln
aHQsci5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206PQpy
LmJvdHRvbSxyLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDpyLmxl
ZnQsdik6cn0sdi53aWR0aD0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGk9M0RlLHYpOml9LHYuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7PQpyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8ocz0zRGUsdik6c30sdi5jb2xvcj0zRGZ1bmN0aW9uKHIpe3JldHVybiBhcmd1bWVudHM9
Ci5sZW5ndGg/KHU9M0RlLnV0aWxzLmdldENvbG9yKHIpLG4uY29sb3IodSksdC5jb2xvcih1KSx2
KTp1fSx2LnNob3dMZWdlbmQ9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhvPTNEZSx2KTpvfSx2LnRvb2x0aXBzPTNEZnVuY3Rpb24oZT0KKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oYT0zRGUsdik6YX0sdi50b29sdGlwQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVy
PQpuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLHYpOmZ9LHYuc3RhdGU9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmc9CnRoPyhsPTNEZSx2KTpsfSx2LmRlZmF1bHRTdGF0ZT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZT0KLHYpOmN9LHYubm9EYXRh
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLHYpOmh9LHZ9LGUu
bW9kPQplbHMuc2NhdHRlcj0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gSShxKXtyZXR1cm4gcS5lYWNo
KGZ1bmN0aW9uKEkpe2Z1bmN0aW9uIFE9Cigpe2lmKCFnKXJldHVybiExO3ZhciBlLGk9M0RkMy5t
ZXJnZShJLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLnZhbHVlcy5tYT0KcChmdW5jdGlvbihl
LG4pe3ZhciByPTNEZihlLG4pLGk9M0RsKGUsbik7cmV0dXJuW28ociksdShpKSx0LG4sZV19KS5m
aWx0ZXIoPQpmdW5jdGlvbihlLHQpe3JldHVybiBiKGVbNF0sdCl9KX0pKTtpZihEPTNEPTNEPTNE
ITApe2lmKHgpe3ZhciBhPTNEWC5zZWxlY3Q9CigiZGVmcyIpLnNlbGVjdEFsbCgiLm52LXBvaW50
LWNsaXBzIikuZGF0YShbc10pLmVudGVyKCk7YS5hcHBlbmQoImNsaXBQYXRoIj0KKS5hdHRyKCJj
bGFzcyIsIm52LXBvaW50LWNsaXBzIikuYXR0cigiaWQiLCJudi1wb2ludHMtY2xpcC0iK3MpO3Zh
ciBjPTNEWC5zPQplbGVjdCgiI252LXBvaW50cy1jbGlwLSIrcykuc2VsZWN0QWxsKCJjaXJjbGUi
KS5kYXRhKGkpO2MuZW50ZXIoKS5hcHBlbmQoImM9CmlyY2xlIikuYXR0cigiciIsVCksYy5leGl0
KCkucmVtb3ZlKCksYy5hdHRyKCJjeCIsZnVuY3Rpb24oZSl7cmV0dXJuIGVbMF19KT0KLmF0dHIo
ImN5IixmdW5jdGlvbihlKXtyZXR1cm4gZVsxXX0pLFguc2VsZWN0KCIubnYtcG9pbnQtcGF0aHMi
KS5hdHRyKCJjbGlwPQotcGF0aCIsInVybCgjbnYtcG9pbnRzLWNsaXAtIitzKyIpIil9aS5sZW5n
dGgmJihpLnB1c2goW28ucmFuZ2UoKVswXS0yMCx1LnI9CmFuZ2UoKVswXS0yMCxudWxsLG51bGxd
KSxpLnB1c2goW28ucmFuZ2UoKVsxXSsyMCx1LnJhbmdlKClbMV0rMjAsbnVsbCxudWxsXT0KKSxp
LnB1c2goW28ucmFuZ2UoKVswXS0yMCx1LnJhbmdlKClbMF0rMjAsbnVsbCxudWxsXSksaS5wdXNo
KFtvLnJhbmdlKClbMV0rPQoyMCx1LnJhbmdlKClbMV0tMjAsbnVsbCxudWxsXSkpO3ZhciBoPTNE
ZDMuZ2VvbS5wb2x5Z29uKFtbLTEwLC0xMF0sWy0xMCxyKzE9CjBdLFtuKzEwLHIrMTBdLFtuKzEw
LC0xMF1dKSxwPTNEMWUtNjtpPTNEaS5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbMF0tdD0K
WzBdfHxlWzFdLXRbMV19KTtmb3IodmFyIGQ9M0QwO2Q8aS5sZW5ndGgtMTspTWF0aC5hYnMoaVtk
XVswXS1pW2QrMV1bMF0pPHAmPQomTWF0aC5hYnMoaVtkXVsxXS1pW2QrMV1bMV0pPHA/aS5zcGxp
Y2UoZCsxLDEpOmQrKzt2YXIgdj0zRGQzLmdlb20udm9yb25vaSg9CmkpLm1hcChmdW5jdGlvbihl
LHQpe3JldHVybntkYXRhOmguY2xpcChlKSxzZXJpZXM6aVt0XVsyXSxwb2ludDppW3RdWzNdfX0p
LD0KbT0zRFguc2VsZWN0KCIubnYtcG9pbnQtcGF0aHMiKS5zZWxlY3RBbGwoInBhdGgiKS5kYXRh
KHYpO20uZW50ZXIoKS5hcHBlbmQoPQoicGF0aCIpLmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQp
e3JldHVybiJudi1wYXRoLSIrdH0pLG0uZXhpdCgpLnJlbW92ZSgpLG09Ci5hdHRyKCJkIixmdW5j
dGlvbihlKXtyZXR1cm4hZXx8IWUuZGF0YXx8ZS5kYXRhLmxlbmd0aD0zRD0zRD0zRDA/Ik0gMCAw
IjoiTT0KIitlLmRhdGEuam9pbigiTCIpKyJaIn0pO3ZhciB5PTNEZnVuY3Rpb24oZSxuKXtpZihG
KXJldHVybiAwO3ZhciByPTNESVtlLnNlPQpyaWVzXTtpZih0eXBlb2Ygcj0zRD0zRCJ1bmRlZmlu
ZWQiKXJldHVybjt2YXIgaT0zRHIudmFsdWVzW2UucG9pbnRdO24oe3BvaW49CnQ6aSxzZXJpZXM6
cixwb3M6W28oZihpLGUucG9pbnQpKSt0LmxlZnQsdShsKGksZS5wb2ludCkpK3QudG9wXSxzZXJp
ZXNJbmRleD0KOmUuc2VyaWVzLHBvaW50SW5kZXg6ZS5wb2ludH0pfTttLm9uKCJjbGljayIsZnVu
Y3Rpb24oZSl7eShlLF8uZWxlbWVudENsaWNrPQopfSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24o
ZSl7eShlLF8uZWxlbWVudE1vdXNlb3Zlcil9KS5vbigibW91c2VvdXQiLGZ1bmM9CnRpb24oZSx0
KXt5KGUsXy5lbGVtZW50TW91c2VvdXQpfSl9ZWxzZSBYLnNlbGVjdCgiLm52LWdyb3VwcyIpLnNl
bGVjdEFsbCgiLj0KbnYtZ3JvdXAiKS5zZWxlY3RBbGwoIi5udi1wb2ludCIpLm9uKCJjbGljayIs
ZnVuY3Rpb24oZSxuKXtpZihGfHwhSVtlLnNlcmllPQpzXSlyZXR1cm4gMDt2YXIgcj0zRElbZS5z
ZXJpZXNdLGk9M0RyLnZhbHVlc1tuXTtfLmVsZW1lbnRDbGljayh7cG9pbnQ6aSxzZXI9Cmllczpy
LHBvczpbbyhmKGksbikpK3QubGVmdCx1KGwoaSxuKSkrdC50b3BdLHNlcmllc0luZGV4OmUuc2Vy
aWVzLHBvaW50SW5kZT0KeDpufSl9KS5vbigibW91c2VvdmVyIixmdW5jdGlvbihlLG4pe2lmKEZ8
fCFJW2Uuc2VyaWVzXSlyZXR1cm4gMDt2YXIgcj0zRElbPQplLnNlcmllc10saT0zRHIudmFsdWVz
W25dO18uZWxlbWVudE1vdXNlb3Zlcih7cG9pbnQ6aSxzZXJpZXM6cixwb3M6W28oZihpLG49Cikp
K3QubGVmdCx1KGwoaSxuKSkrdC50b3BdLHNlcmllc0luZGV4OmUuc2VyaWVzLHBvaW50SW5kZXg6
bn0pfSkub24oIm1vdXNlbz0KdXQiLGZ1bmN0aW9uKGUsdCl7aWYoRnx8IUlbZS5zZXJpZXNdKXJl
dHVybiAwO3ZhciBuPTNESVtlLnNlcmllc10scj0zRG4udmFsPQp1ZXNbdF07Xy5lbGVtZW50TW91
c2VvdXQoe3BvaW50OnIsc2VyaWVzOm4sc2VyaWVzSW5kZXg6ZS5zZXJpZXMscG9pbnRJbmRleDo9
CnR9KX0pO0Y9M0QhMX12YXIgcT0zRG4tdC5sZWZ0LXQucmlnaHQsUj0zRHItdC50b3AtdC5ib3R0
b20sVT0zRGQzLnNlbGVjdCh0aD0KaXMpO0kuZm9yRWFjaChmdW5jdGlvbihlLHQpe2UudmFsdWVz
LmZvckVhY2goZnVuY3Rpb24oZSl7ZS5zZXJpZXM9M0R0fSl9KTt2PQphciBXPTNETiYmQyYmQT9b
XTpkMy5tZXJnZShJLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubWFwKGZ1bmN0aW9u
KGU9Cix0KXtyZXR1cm57eDpmKGUsdCkseTpsKGUsdCksc2l6ZTpjKGUsdCl9fSl9KSk7by5kb21h
aW4oTnx8ZDMuZXh0ZW50KFcubWFwKD0KZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0pLmNvbmNhdChk
KSkpLHcmJklbMF0/by5yYW5nZShrfHxbKHEqRStxKS8oMipJWzBdLnZhPQpsdWVzLmxlbmd0aCks
cS1xKigxK0UpLygyKklbMF0udmFsdWVzLmxlbmd0aCldKTpvLnJhbmdlKGt8fFswLHFdKSx1LmRv
bWFpbig9CkN8fGQzLmV4dGVudChXLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS55fSkuY29uY2F0
KHYpKSkucmFuZ2UoTHx8W1IsMF0pLGEuZD0Kb21haW4oQXx8ZDMuZXh0ZW50KFcubWFwKGZ1bmN0
aW9uKGUpe3JldHVybiBlLnNpemV9KS5jb25jYXQobSkpKS5yYW5nZShPfHxbPQoxNiwyNTZdKTtp
ZihvLmRvbWFpbigpWzBdPTNEPTNEPTNEby5kb21haW4oKVsxXXx8dS5kb21haW4oKVswXT0zRD0z
RD0zRHUuZG89Cm1haW4oKVsxXSlNPTNEITA7by5kb21haW4oKVswXT0zRD0zRD0zRG8uZG9tYWlu
KClbMV0mJihvLmRvbWFpbigpWzBdP28uZG9tYT0KaW4oW28uZG9tYWluKClbMF0tby5kb21haW4o
KVswXSouMDEsby5kb21haW4oKVsxXStvLmRvbWFpbigpWzFdKi4wMV0pOm8uZG9tPQphaW4oWy0x
LDFdKSksdS5kb21haW4oKVswXT0zRD0zRD0zRHUuZG9tYWluKClbMV0mJih1LmRvbWFpbigpWzBd
P3UuZG9tYWluKFs9CnUuZG9tYWluKClbMF0tdS5kb21haW4oKVswXSouMDEsdS5kb21haW4oKVsx
XSt1LmRvbWFpbigpWzFdKi4wMV0pOnUuZG9tYWluKD0KWy0xLDFdKSksaXNOYU4oby5kb21haW4o
KVswXSkmJm8uZG9tYWluKFstMSwxXSksaXNOYU4odS5kb21haW4oKVswXSkmJnUuZG9tPQphaW4o
Wy0xLDFdKSxQPTNEUHx8byxIPTNESHx8dSxCPTNEQnx8YTt2YXIgWD0zRFUuc2VsZWN0QWxsKCJn
Lm52LXdyYXAubnYtc2M9CmF0dGVyIikuZGF0YShbSV0pLFY9M0RYLmVudGVyKCkuYXBwZW5kKCJn
IikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtcz0KY2F0dGVyIG52LWNoYXJ0LSIrcyso
TT8iIG52LXNpbmdsZS1wb2ludCI6IiIpKSwkPTNEVi5hcHBlbmQoImRlZnMiKSxKPTNEVi5hPQpw
cGVuZCgiZyIpLEs9M0RYLnNlbGVjdCgiZyIpO0ouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJu
di1ncm91cHMiKSxKLmFwcGU9Cm5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1wb2ludC1wYXRocyIp
LFguYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdC5sZT0KZnQrIiwiK3QudG9wKyIpIiks
JC5hcHBlbmQoImNsaXBQYXRoIikuYXR0cigiaWQiLCJudi1lZGdlLWNsaXAtIitzKS5hcHBlbmQo
PQoicmVjdCIpLFguc2VsZWN0KCIjbnYtZWRnZS1jbGlwLSIrcysiIHJlY3QiKS5hdHRyKCJ3aWR0
aCIscSkuYXR0cigiaGVpZ2h0Iiw9ClI+MD9SOjApLEsuYXR0cigiY2xpcC1wYXRoIixTPyJ1cmwo
I252LWVkZ2UtY2xpcC0iK3MrIikiOiIiKSxGPTNEITA7dmFyIEc9Cj0zRFguc2VsZWN0KCIubnYt
Z3JvdXBzIikuc2VsZWN0QWxsKCIubnYtZ3JvdXAiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBl
fT0KLGZ1bmN0aW9uKGUpe3JldHVybiBlLmtleX0pO0cuZW50ZXIoKS5hcHBlbmQoImciKS5zdHls
ZSgic3Ryb2tlLW9wYWNpdHkiLDFlPQotNikuc3R5bGUoImZpbGwtb3BhY2l0eSIsMWUtNiksRy5l
eGl0KCkucmVtb3ZlKCksRy5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSw9CnQpe3JldHVybiJudi1n
cm91cCBudi1zZXJpZXMtIit0fSkuY2xhc3NlZCgiaG92ZXIiLGZ1bmN0aW9uKGUpe3JldHVybiBl
Lmhvdj0KZXJ9KSxHLnN0eWxlKCJmaWxsIixmdW5jdGlvbihlLHQpe3JldHVybiBpKGUsdCl9KS5z
dHlsZSgic3Ryb2tlIixmdW5jdGlvbihlPQosdCl7cmV0dXJuIGkoZSx0KX0pLnN0eWxlKCJzdHJv
a2Utb3BhY2l0eSIsMSkuc3R5bGUoImZpbGwtb3BhY2l0eSIsLjUpO2lmKHA9Cil7dmFyIFk9M0RH
LnNlbGVjdEFsbCgiY2lyY2xlLm52LXBvaW50IikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZS52
YWx1ZXN9LD0KeSk7WS5lbnRlcigpLmFwcGVuZCgiY2lyY2xlIikuc3R5bGUoImZpbGwiLGZ1bmN0
aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J9KS5zPQp0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIGUuY29sb3J9KS5hdHRyKCJjeCIsZnVuY3Rpb24odCxuKXtyZXR1cm49CiBlLnV0aWxz
Lk5hTnRvWmVybyhQKGYodCxuKSkpfSkuYXR0cigiY3kiLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUu
dXRpbHMuTmFOdD0Kb1plcm8oSChsKHQsbikpKX0pLmF0dHIoInIiLGZ1bmN0aW9uKGUsdCl7cmV0
dXJuIE1hdGguc3FydChhKGMoZSx0KSkvTWF0aC5QPQpJKX0pLFkuZXhpdCgpLnJlbW92ZSgpLEcu
ZXhpdCgpLnNlbGVjdEFsbCgicGF0aC5udi1wb2ludCIpLmF0dHIoImN4IixmdW5jdGk9Cm9uKHQs
bil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKG8oZih0LG4pKSl9KS5hdHRyKCJjeSIsZnVuY3Rp
b24odCxuKXtyZXR1cj0KbiBlLnV0aWxzLk5hTnRvWmVybyh1KGwodCxuKSkpfSkucmVtb3ZlKCks
WS5lYWNoKGZ1bmN0aW9uKGUsdCl7ZDMuc2VsZWN0KHRoPQppcykuY2xhc3NlZCgibnYtcG9pbnQi
LCEwKS5jbGFzc2VkKCJudi1wb2ludC0iK3QsITApLmNsYXNzZWQoImhvdmVyIiwhMSl9KSw9Clku
YXR0cigiY3giLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKG8oZih0LG4p
KSl9KS5hdHRyKCJjeSIsZj0KdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyh1
KGwodCxuKSkpfSkuYXR0cigiciIsZnVuY3Rpb24oZSx0KXtyPQpldHVybiBNYXRoLnNxcnQoYShj
KGUsdCkpL01hdGguUEkpfSl9ZWxzZXt2YXIgWT0zREcuc2VsZWN0QWxsKCJwYXRoLm52LXBvaW49
CnQiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlc30pO1kuZW50ZXIoKS5hcHBlbmQo
InBhdGgiKS5zdHlsZSgiZmlsbD0KIixmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfSkuc3R5
bGUoInN0cm9rZSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvPQpyfSkuYXR0cigidHJhbnNm
b3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitQKGYoZSx0KSkrIiwiK0gobChl
LHQ9CikpKyIpIn0pLmF0dHIoImQiLGQzLnN2Zy5zeW1ib2woKS50eXBlKGgpLnNpemUoZnVuY3Rp
b24oZSx0KXtyZXR1cm4gYShjKGUsdD0KKSl9KSksWS5leGl0KCkucmVtb3ZlKCksRy5leGl0KCku
c2VsZWN0QWxsKCJwYXRoLm52LXBvaW50IikuYXR0cigidHJhbnNmb3JtPQoiLGZ1bmN0aW9uKGUs
dCl7cmV0dXJuInRyYW5zbGF0ZSgiK28oZihlLHQpKSsiLCIrdShsKGUsdCkpKyIpIn0pLnJlbW92
ZSgpLFk9Ci5lYWNoKGZ1bmN0aW9uKGUsdCl7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoIm52LXBv
aW50IiwhMCkuY2xhc3NlZCgibnYtcG9pbj0KdC0iK3QsITApLmNsYXNzZWQoImhvdmVyIiwhMSl9
KSxZLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhPQpuc2xhdGUoIitv
KGYoZSx0KSkrIiwiK3UobChlLHQpKSsiKSJ9KS5hdHRyKCJkIixkMy5zdmcuc3ltYm9sKCkudHlw
ZShoKS5zaXo9CmUoZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShjKGUsdCkpfSkpfWNsZWFyVGltZW91
dChqKSxqPTNEc2V0VGltZW91dChRLDMwMCksUD0KPTNEby5jb3B5KCksSD0zRHUuY29weSgpLEI9
M0RhLmNvcHkoKX0pLEl9dmFyIHQ9M0R7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsPQplZnQ6MH0s
bj0zRDk2MCxyPTNENTAwLGk9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLHM9M0RNYXRoLmZsb29y
KE1hdGgucmFuZG89Cm0oKSoxZTUpLG89M0RkMy5zY2FsZS5saW5lYXIoKSx1PTNEZDMuc2NhbGUu
bGluZWFyKCksYT0zRGQzLnNjYWxlLmxpbmVhcigpLD0KZj0zRGZ1bmN0aW9uKGUpe3JldHVybiBl
Lnh9LGw9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS55fSxjPTNEZnVuY3Rpb24oZSl7cmV0PQp1cm4g
ZS5zaXplfHwxfSxoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2hhcGV8fCJjaXJjbGUifSxwPTNE
ITAsZD0zRFtdLHY9M0Q9CltdLG09M0RbXSxnPTNEITAseT0zRG51bGwsYj0zRGZ1bmN0aW9uKGUp
e3JldHVybiFlLm5vdEFjdGl2ZX0sdz0zRCExLEU9M0QuMT0KLFM9M0QhMSx4PTNEITAsVD0zRGZ1
bmN0aW9uKCl7cmV0dXJuIDI1fSxOPTNEbnVsbCxDPTNEbnVsbCxrPTNEbnVsbCxMPTNEbnVsPQps
LEE9M0RudWxsLE89M0RudWxsLE09M0QhMSxfPTNEZDMuZGlzcGF0Y2goImVsZW1lbnRDbGljayIs
ImVsZW1lbnRNb3VzZW92ZXI9CiIsImVsZW1lbnRNb3VzZW91dCIpLEQ9M0QhMCxQLEgsQixqLEY9
M0QhMTtyZXR1cm4gSS5jbGVhckhpZ2hsaWdodHM9M0RmdW5jdD0KaW9uKCl7ZDMuc2VsZWN0QWxs
KCIubnYtY2hhcnQtIitzKyIgLm52LXBvaW50LmhvdmVyIikuY2xhc3NlZCgiaG92ZXIiLCExKX0s
PQpJLmhpZ2hsaWdodFBvaW50PTNEZnVuY3Rpb24oZSx0LG4pe2QzLnNlbGVjdCgiLm52LWNoYXJ0
LSIrcysiIC5udi1zZXJpZXMtIis9CmUrIiAubnYtcG9pbnQtIit0KS5jbGFzc2VkKCJob3ZlciIs
bil9LF8ub24oImVsZW1lbnRNb3VzZW92ZXIucG9pbnQiLGZ1bmN0aT0Kb24oZSl7ZyYmSS5oaWdo
bGlnaHRQb2ludChlLnNlcmllc0luZGV4LGUucG9pbnRJbmRleCwhMCl9KSxfLm9uKCJlbGVtZW50
TW91PQpzZW91dC5wb2ludCIsZnVuY3Rpb24oZSl7ZyYmSS5oaWdobGlnaHRQb2ludChlLnNlcmll
c0luZGV4LGUucG9pbnRJbmRleCwhMSk9Cn0pLEkuZGlzcGF0Y2g9M0RfLEkub3B0aW9ucz0zRGUu
dXRpbHMub3B0aW9uc0Z1bmMuYmluZChJKSxJLng9M0RmdW5jdGlvbihlKT0Ke3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhmPTNEZDMuZnVuY3RvcihlKSxJKTpmfSxJLnk9M0RmdW5jdGlvbihlKXty
ZXR1cm4gPQphcmd1bWVudHMubGVuZ3RoPyhsPTNEZDMuZnVuY3RvcihlKSxJKTpsfSxJLnNpemU9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW09CmVudHMubGVuZ3RoPyhjPTNEZDMuZnVuY3Rvcihl
KSxJKTpjfSxJLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudD0Kcy5sZW5ndGg/
KHQudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQucmlnaHQ9
M0R0eXBlb2YgPQplLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRv
bT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWY9CmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQu
bGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdD0KLEkpOnR9
LEkud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGUsSSk6
bn0sSS5oZWlnaHQ9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNE
ZSxJKTpyfSxJLnhTY2FsZT0zRGZ1bmN0aW9uKGUpez0KcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KG89M0RlLEkpOm99LEkueVNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50PQpzLmxl
bmd0aD8odT0zRGUsSSk6dX0sSS56U2NhbGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oYT0zRGU9CixJKTphfSxJLnhEb21haW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oTj0zRGUsSSk6Tn0sSS55RG9tYT0KaW49M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oQz0zRGUsSSk6Q30sSS5zaXplRG9tYWluPTNEZnVuY3RpPQpv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oQT0zRGUsSSk6QX0sSS54UmFuZ2U9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXI9Cmd1bWVudHMubGVuZ3RoPyhrPTNEZSxJKTprfSxJLnlSYW5nZT0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPz0KKEw9M0RlLEkpOkx9LEkuc2l6
ZVJhbmdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE89M0RlLEkpOk99
PQosSS5mb3JjZVg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGUs
SSk6ZH0sSS5mb3JjZVk9M0RmdW49CmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2
PTNEZSxJKTp2fSxJLmZvcmNlU2l6ZT0zRGZ1bmN0aW9uKGUpe3JldD0KdXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KG09M0RlLEkpOm19LEkuaW50ZXJhY3RpdmU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lPQpudHMubGVuZ3RoPyhnPTNEZSxJKTpnfSxJLnBvaW50S2V5PTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9Cj0zRGUsSSk6eX0sSS5wb2ludEFjdGl2ZT0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPTNEZSxJKTpifT0KLEkucGFkRGF0YT0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3PTNEZSxJKTp3fSxJLnBhZERh
dGFPdXRlPQpyPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlLEkp
OkV9LEkuY2xpcEVkZ2U9M0RmdW5jdGlvbig9CmUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhT
PTNEZSxJKTpTfSxJLmNsaXBWb3Jvbm9pPTNEZnVuY3Rpb24oZSl7cmV0dXJuID0KYXJndW1lbnRz
Lmxlbmd0aD8oeD0zRGUsSSk6eH0sSS51c2VWb3Jvbm9pPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sPQplbmd0aD8oRD0zRGUsRD0zRD0zRD0zRCExJiYoeD0zRCExKSxJKTpEfSxJLmNs
aXBSYWRpdXM9M0RmdW5jdGlvbihlKXtyZXR1cm49CiBhcmd1bWVudHMubGVuZ3RoPyhUPTNEZSxJ
KTpUfSxJLmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndD0KaD8oaT0z
RGUudXRpbHMuZ2V0Q29sb3IodCksSSk6aX0sSS5zaGFwZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuPQpndGg/KGg9M0RlLEkpOmh9LEkub25seUNpcmNsZXM9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGU9CixJKTpwfSxJLmlkPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLEkpOnN9LEkuc2luZ2xlUG9pbj0KdD0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhNPTNEZSxJKTpNfSxJfSxlLm1v
ZGVscy5zY2F0dGVyQ2hhPQpydD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gRihlKXtyZXR1cm4gZS5l
YWNoKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIEooKXtpZihUKXI9CmV0dXJuIFcuc2VsZWN0KCIubnYt
cG9pbnQtcGF0aHMiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKSwhMTtXLnNlbGVjdD0K
KCIubnYtcG9pbnQtcGF0aHMiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJub25lIik7dmFyIGk9
M0RkMy5tb3VzZSh0aGlzKTtoPQouZGlzdG9ydGlvbih4KS5mb2N1cyhpWzBdKSxwLmRpc3RvcnRp
b24oeCkuZm9jdXMoaVsxXSksVy5zZWxlY3QoIi5udi1zY2F0dGU9CnJXcmFwIikuY2FsbCh0KSxi
JiZXLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmNhbGwobiksdyYmVy5zZWxlY3QoIi5udi15Lm52
LT0KYXhpcyIpLmNhbGwociksVy5zZWxlY3QoIi5udi1kaXN0cmlidXRpb25YIikuZGF0dW0oZS5m
aWx0ZXIoZnVuY3Rpb24oZSl7cmV0PQp1cm4hZS5kaXNhYmxlZH0pKS5jYWxsKG8pLFcuc2VsZWN0
KCIubnYtZGlzdHJpYnV0aW9uWSIpLmRhdHVtKGUuZmlsdGVyKGZ1bmM9CnRpb24oZSl7cmV0dXJu
IWUuZGlzYWJsZWR9KSkuY2FsbCh1KX12YXIgQz0zRGQzLnNlbGVjdCh0aGlzKSxrPTNEdGhpcyxM
PTNEKD0KZnx8cGFyc2VJbnQoQy5zdHlsZSgid2lkdGgiKSl8fDk2MCktYS5sZWZ0LWEucmlnaHQs
RD0zRChsfHxwYXJzZUludChDLnN0eWxlPQooImhlaWdodCIpKXx8NDAwKS1hLnRvcC1hLmJvdHRv
bTtGLnVwZGF0ZT0zRGZ1bmN0aW9uKCl7Qy5jYWxsKEYpfSxGLmNvbnRhaW49CmVyPTNEdGhpcyxB
LmRpc2FibGVkPTNEZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSk7aWYoIU8p
e3ZhciBJOz0KTz0zRHt9O2ZvcihJIGluIEEpQVtJXWluc3RhbmNlb2YgQXJyYXk/T1tJXT0zREFb
SV0uc2xpY2UoMCk6T1tJXT0zREFbSV19aWYoPQohZXx8IWUubGVuZ3RofHwhZS5maWx0ZXIoZnVu
Y3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLmxlbmd0aH0pLmxlbmd0aCl7dmFyIHE9Cj0zREMuc2Vs
ZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShbX10pO3JldHVybiBxLmVudGVyKCkuYXBwZW5kKCJ0
ZXh0IikuYXR0cj0KKCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIp
LnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpPQoscS5hdHRyKCJ4IixhLmxlZnQrTC8yKS5h
dHRyKCJ5IixhLnRvcCtELzIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxGfUM9Ci5zZWxl
Y3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKSxQPTNEUHx8aCxIPTNESHx8cDt2YXIgUj0zREMu
c2VsZWN0QWxsKCJnLj0KbnYtd3JhcC5udi1zY2F0dGVyQ2hhcnQiKS5kYXRhKFtlXSksVT0zRFIu
ZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsPQoibnZkMyBudi13cmFwIG52LXNjYXR0
ZXJDaGFydCBudi1jaGFydC0iK3QuaWQoKSksej0zRFUuYXBwZW5kKCJnIiksVz0zRFIuc2U9Cmxl
Y3QoImciKTt6LmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1iYWNrZ3JvdW5k
Iiksei5hcHBlbmQoImciKT0KLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksei5hcHBlbmQo
ImciKS5hdHRyKCJjbGFzcyIsIm52LXkgbnYtYXhpcyIpLHouPQphcHBlbmQoImciKS5hdHRyKCJj
bGFzcyIsIm52LXNjYXR0ZXJXcmFwIiksei5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWQ9
CmlzdFdyYXAiKSx6LmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpLHou
YXBwZW5kKCJnIikuYXR0cigiYz0KbGFzcyIsIm52LWNvbnRyb2xzV3JhcCIpO2lmKHkpe3ZhciBY
PTNEUz9MLzI6TDtpLndpZHRoKFgpLFIuc2VsZWN0KCIubnYtbGVnPQplbmRXcmFwIikuZGF0dW0o
ZSkuY2FsbChpKSxhLnRvcCE9M0RpLmhlaWdodCgpJiYoYS50b3A9M0RpLmhlaWdodCgpLEQ9M0Qo
bHw9CnxwYXJzZUludChDLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktYS50b3AtYS5ib3R0b20pLFIu
c2VsZWN0KCIubnYtbGVnZW5kV3JhcD0KIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIr
KEwtWCkrIiwiKyAtYS50b3ArIikiKX1TJiYocy53aWR0aCgxODApLmNvPQpsb3IoWyIjNDQ0Il0p
LFcuc2VsZWN0KCIubnYtY29udHJvbHNXcmFwIikuZGF0dW0oaikuYXR0cigidHJhbnNmb3JtIiwi
dHJhbnM9CmxhdGUoMCwiKyAtYS50b3ArIikiKS5jYWxsKHMpKSxSLmF0dHIoInRyYW5zZm9ybSIs
InRyYW5zbGF0ZSgiK2EubGVmdCsiLCIrYT0KLnRvcCsiKSIpLEUmJlcuc2VsZWN0KCIubnYteS5u
di1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrTCsiLDApPQoiKSx0LndpZHRo
KEwpLmhlaWdodChEKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxj
KGUsdCl9KS49CmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkfSkpLGQh
PTNEPTNEMCYmdC54RG9tYWluKG51bGwpLHYhPQo9M0Q9M0QwJiZ0LnlEb21haW4obnVsbCksUi5z
ZWxlY3QoIi5udi1zY2F0dGVyV3JhcCIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW89Cm4oZSl7cmV0
dXJuIWUuZGlzYWJsZWR9KSkuY2FsbCh0KTtpZihkIT0zRD0zRDApe3ZhciBWPTNEaC5kb21haW4o
KVsxXS1oLmRvbT0KYWluKClbMF07dC54RG9tYWluKFtoLmRvbWFpbigpWzBdLWQqVixoLmRvbWFp
bigpWzFdK2QqVl0pfWlmKHYhPTNEPTNEMCl7dmFyPQogJD0zRHAuZG9tYWluKClbMV0tcC5kb21h
aW4oKVswXTt0LnlEb21haW4oW3AuZG9tYWluKClbMF0tdiokLHAuZG9tYWluKClbMV09Cit2KiRd
KX0odiE9M0Q9M0QwfHxkIT0zRD0zRDApJiZSLnNlbGVjdCgiLm52LXNjYXR0ZXJXcmFwIikuZGF0
dW0oZS5maWx0ZXIoZj0KdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKS5jYWxsKHQpLGIm
JihuLnNjYWxlKGgpLnRpY2tzKG4udGlja3MoKSYmbi50PQppY2tzKCkubGVuZ3RoP24udGlja3Mo
KTpMLzEwMCkudGlja1NpemUoLUQsMCksVy5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5hdHQ9CnIo
InRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrcC5yYW5nZSgpWzBdKyIpIikuY2FsbChuKSksdyYm
KHIuc2NhbGUocCkudGljaz0KcyhyLnRpY2tzKCkmJnIudGlja3MoKS5sZW5ndGg/ci50aWNrcygp
OkQvMzYpLnRpY2tTaXplKC1MLDApLFcuc2VsZWN0KCIubnYtPQp5Lm52LWF4aXMiKS5jYWxsKHIp
KSxtJiYoby5nZXREYXRhKHQueCgpKS5zY2FsZShoKS53aWR0aChMKS5jb2xvcihlLm1hcChmdW49
CmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGMoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4p
e3JldHVybiFlW25dLmRpc2FibD0KZWR9KSksei5zZWxlY3QoIi5udi1kaXN0V3JhcCIpLmFwcGVu
ZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtZGlzdHJpYnV0aW9uWCIpPQosVy5zZWxlY3QoIi5udi1k
aXN0cmlidXRpb25YIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitwLnJhbmdlKClb
MF09CisiKSIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkp
LmNhbGwobykpLGcmJih1LmdldERhdD0KYSh0LnkoKSkuc2NhbGUocCkud2lkdGgoRCkuY29sb3Io
ZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8YyhlLHQpPQp9KS5maWx0ZXIoZnVu
Y3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZH0pKSx6LnNlbGVjdCgiLm52LWRpc3RXcmFw
IikuYXA9CnBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWRpc3RyaWJ1dGlvblkiKSxXLnNlbGVj
dCgiLm52LWRpc3RyaWJ1dGlvblkiKS5hdD0KdHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhF
P0w6LXUuc2l6ZSgpKSsiLDApIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oPQplKXtyZXR1cm4h
ZS5kaXNhYmxlZH0pKS5jYWxsKHUpKSxkMy5maXNoZXllJiYoVy5zZWxlY3QoIi5udi1iYWNrZ3Jv
dW5kIikuYXQ9CnRyKCJ3aWR0aCIsTCkuYXR0cigiaGVpZ2h0IixEKSxXLnNlbGVjdCgiLm52LWJh
Y2tncm91bmQiKS5vbigibW91c2Vtb3ZlIixKKT0KLFcuc2VsZWN0KCIubnYtYmFja2dyb3VuZCIp
Lm9uKCJjbGljayIsZnVuY3Rpb24oKXtUPTNEIVR9KSx0LmRpc3BhdGNoLm9uKCJlPQpsZW1lbnRD
bGljay5mcmVlemVGaXNoZXllIixmdW5jdGlvbigpe1Q9M0QhVH0pKSxzLmRpc3BhdGNoLm9uKCJs
ZWdlbmRDbGljayI9CixmdW5jdGlvbihlLGkpe2UuZGlzYWJsZWQ9M0QhZS5kaXNhYmxlZCx4PTNE
ZS5kaXNhYmxlZD8wOjIuNSxXLnNlbGVjdCgiLm52LT0KYmFja2dyb3VuZCIpLnN0eWxlKCJwb2lu
dGVyLWV2ZW50cyIsZS5kaXNhYmxlZD8ibm9uZSI6ImFsbCIpLFcuc2VsZWN0KCIubnYtPQpwb2lu
dC1wYXRocyIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsZS5kaXNhYmxlZD8iYWxsIjoibm9uZSIp
LGUuZGlzYWJsZWQ/KGg9Ci5kaXN0b3J0aW9uKHgpLmZvY3VzKDApLHAuZGlzdG9ydGlvbih4KS5m
b2N1cygwKSxXLnNlbGVjdCgiLm52LXNjYXR0ZXJXcmFwIj0KKS5jYWxsKHQpLFcuc2VsZWN0KCIu
bnYteC5udi1heGlzIikuY2FsbChuKSxXLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmNhbGwoPQpy
KSk6VD0zRCExLEYudXBkYXRlKCl9KSxpLmRpc3BhdGNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rp
b24oZSl7QS5kaXNhYmxlZD0KPTNEZS5kaXNhYmxlZCxNLnN0YXRlQ2hhbmdlKEEpLEYudXBkYXRl
KCl9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyPQoudG9vbHRpcCIsZnVuY3Rpb24o
ZSl7ZDMuc2VsZWN0KCIubnYtY2hhcnQtIit0LmlkKCkrIiAubnYtc2VyaWVzLSIrZS5zZXJpZXM9
CkluZGV4KyIgLm52LWRpc3R4LSIrZS5wb2ludEluZGV4KS5hdHRyKCJ5MSIsZnVuY3Rpb24odCxu
KXtyZXR1cm4gZS5wb3NbMV0tRD0KfSksZDMuc2VsZWN0KCIubnYtY2hhcnQtIit0LmlkKCkrIiAu
bnYtc2VyaWVzLSIrZS5zZXJpZXNJbmRleCsiIC5udi1kaXN0eS0iPQorZS5wb2ludEluZGV4KS5h
dHRyKCJ4MiIsZS5wb3NbMF0rby5zaXplKCkpLGUucG9zPTNEW2UucG9zWzBdK2EubGVmdCxlLnBv
c1s9CjFdK2EudG9wXSxNLnRvb2x0aXBTaG93KGUpfSksTS5vbigidG9vbHRpcFNob3ciLGZ1bmN0
aW9uKGUpe04mJkIoZSxrLnBhcmVudD0KTm9kZSl9KSxNLm9uKCJjaGFuZ2VTdGF0ZSIsZnVuY3Rp
b24odCl7dHlwZW9mIHQuZGlzYWJsZWQhPTNEInVuZGVmaW5lZCImJihlPQouZm9yRWFjaChmdW5j
dGlvbihlLG4pe2UuZGlzYWJsZWQ9M0R0LmRpc2FibGVkW25dfSksQS5kaXNhYmxlZD0zRHQuZGlz
YWJsZWQ9CiksRi51cGRhdGUoKX0pLFA9M0RoLmNvcHkoKSxIPTNEcC5jb3B5KCl9KSxGfXZhciB0
PTNEZS5tb2RlbHMuc2NhdHRlcigpLG49Cj0zRGUubW9kZWxzLmF4aXMoKSxyPTNEZS5tb2RlbHMu
YXhpcygpLGk9M0RlLm1vZGVscy5sZWdlbmQoKSxzPTNEZS5tb2RlbHMubD0KZWdlbmQoKSxvPTNE
ZS5tb2RlbHMuZGlzdHJpYnV0aW9uKCksdT0zRGUubW9kZWxzLmRpc3RyaWJ1dGlvbigpLGE9M0R7
dG9wOjMwPQoscmlnaHQ6MjAsYm90dG9tOjUwLGxlZnQ6NzV9LGY9M0RudWxsLGw9M0RudWxsLGM9
M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLGg9Cj0zRGQzLmZpc2hleWU/ZDMuZmlzaGV5ZS5zY2Fs
ZShkMy5zY2FsZS5saW5lYXIpLmRpc3RvcnRpb24oMCk6dC54U2NhbGUoKSxwPQo9M0RkMy5maXNo
ZXllP2QzLmZpc2hleWUuc2NhbGUoZDMuc2NhbGUubGluZWFyKS5kaXN0b3J0aW9uKDApOnQueVNj
YWxlKCksZD0KPTNEMCx2PTNEMCxtPTNEITEsZz0zRCExLHk9M0QhMCxiPTNEITAsdz0zRCEwLEU9
M0QhMSxTPTNEISFkMy5maXNoZXllLHg9M0QwPQosVD0zRCExLE49M0QhMCxDPTNEZnVuY3Rpb24o
ZSx0LG4pe3JldHVybiI8c3Ryb25nPiIrdCsiPC9zdHJvbmc+In0saz0zRGZ1bmM9CnRpb24oZSx0
LG4pe3JldHVybiI8c3Ryb25nPiIrbisiPC9zdHJvbmc+In0sTD0zRG51bGwsQT0zRHt9LE89M0Ru
dWxsLE09M0RkMz0KLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdGVD
aGFuZ2UiLCJjaGFuZ2VTdGF0ZSIpLF89M0QiTm8gPQpEYXRhIEF2YWlsYWJsZS4iLEQ9M0QwO3Qu
eFNjYWxlKGgpLnlTY2FsZShwKSxuLm9yaWVudCgiYm90dG9tIikudGlja1BhZGRpbmc9CigxMCks
ci5vcmllbnQoRT8icmlnaHQiOiJsZWZ0IikudGlja1BhZGRpbmcoMTApLG8uYXhpcygieCIpLHUu
YXhpcygieSIpLHMudT0KcGRhdGVTdGF0ZSghMSk7dmFyIFAsSCxCPTNEZnVuY3Rpb24oaSxzKXt2
YXIgbz0zRGkucG9zWzBdKyhzLm9mZnNldExlZnR8fDApPQosdT0zRGkucG9zWzFdKyhzLm9mZnNl
dFRvcHx8MCksZj0zRGkucG9zWzBdKyhzLm9mZnNldExlZnR8fDApLGw9M0RwLnJhbmdlKCk9Clsw
XSthLnRvcCsocy5vZmZzZXRUb3B8fDApLGM9M0RoLnJhbmdlKClbMF0rYS5sZWZ0KyhzLm9mZnNl
dExlZnR8fDApLGQ9M0RpLj0KcG9zWzFdKyhzLm9mZnNldFRvcHx8MCksdj0zRG4udGlja0Zvcm1h
dCgpKHQueCgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksbT0KPTNEci50aWNrRm9ybWF0KCkodC55
KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKTtDIT0zRG51bGwmJmUudG9vbHRpcC5zaG93KFtmPQos
bF0sQyhpLnNlcmllcy5rZXksdixtLGksRiksIm4iLDEscywieC1udnRvb2x0aXAiKSxrIT0zRG51
bGwmJmUudG9vbHRpcC5zaG89CncoW2MsZF0sayhpLnNlcmllcy5rZXksdixtLGksRiksImUiLDEs
cywieS1udnRvb2x0aXAiKSxMIT0zRG51bGwmJmUudG9vbHRpcD0KLnNob3coW28sdV0sTChpLnNl
cmllcy5rZXksdixtLGksRiksaS52YWx1ZTwwPyJuIjoicyIsbnVsbCxzKX0saj0zRFt7a2V5OiJN
PQphZ25pZnkiLGRpc2FibGVkOiEwfV07cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3Vz
ZW91dC50b29sdGlwIixmdW5jdGk9Cm9uKGUpe00udG9vbHRpcEhpZGUoZSksZDMuc2VsZWN0KCIu
bnYtY2hhcnQtIit0LmlkKCkrIiAubnYtc2VyaWVzLSIrZS5zZXJpZT0Kc0luZGV4KyIgLm52LWRp
c3R4LSIrZS5wb2ludEluZGV4KS5hdHRyKCJ5MSIsMCksZDMuc2VsZWN0KCIubnYtY2hhcnQtIit0
LmlkPQooKSsiIC5udi1zZXJpZXMtIitlLnNlcmllc0luZGV4KyIgLm52LWRpc3R5LSIrZS5wb2lu
dEluZGV4KS5hdHRyKCJ4MiIsdS5zaXo9CmUoKSl9KSxNLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rp
b24oKXtOJiZlLnRvb2x0aXAuY2xlYW51cCgpfSksRi5kaXNwYXRjaD0zRD0KTSxGLnNjYXR0ZXI9
M0R0LEYubGVnZW5kPTNEaSxGLmNvbnRyb2xzPTNEcyxGLnhBeGlzPTNEbixGLnlBeGlzPTNEcixG
LmRpc3RYPQo9M0RvLEYuZGlzdFk9M0R1LGQzLnJlYmluZChGLHQsImlkIiwiaW50ZXJhY3RpdmUi
LCJwb2ludEFjdGl2ZSIsIngiLCJ5Iiwic2g9CmFwZSIsInNpemUiLCJ4U2NhbGUiLCJ5U2NhbGUi
LCJ6U2NhbGUiLCJ4RG9tYWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZT0KIiwic2l6ZURv
bWFpbiIsInNpemVSYW5nZSIsImZvcmNlWCIsImZvcmNlWSIsImZvcmNlU2l6ZSIsImNsaXBWb3Jv
bm9pIiwiY2xpPQpwUmFkaXVzIiwidXNlVm9yb25vaSIpLEYub3B0aW9ucz0zRGUudXRpbHMub3B0
aW9uc0Z1bmMuYmluZChGKSxGLm1hcmdpbj0zRGY9CnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGEudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudD0Kb3A6YS50
b3AsYS5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6YS5yaWdo
dCxhLmJvdHRvbT0KPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOmEu
Ym90dG9tLGEubGVmdD0zRHR5cGVvZiBlLmxlZnQhPQo9M0QidW5kZWZpbmVkIj9lLmxlZnQ6YS5s
ZWZ0LEYpOmF9LEYud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmw9CmVuZ3Ro
PyhmPTNEZSxGKTpmfSxGLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhsPTNEZSxGKT0KOmx9LEYuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oYz0zRGUudXRpbHMuZ2V0Q29sb3IodCksPQppLmNvbG9yKGMpLG8uY29sb3IoYyks
dS5jb2xvcihjKSxGKTpjfSxGLnNob3dEaXN0WD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmc9CnVt
ZW50cy5sZW5ndGg/KG09M0RlLEYpOm19LEYuc2hvd0Rpc3RZPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndD0KaD8oZz0zRGUsRik6Z30sRi5zaG93Q29udHJvbHM9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUz0zRGUsPQpGKTpTfSxGLnNob3dMZWdlbmQ9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT0zRGUsRik6eX0sRi5zaG89
CndYQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPTNEZSxGKTpi
fSxGLnNob3dZQXhpcz0zRGZ1bj0KY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9
M0RlLEYpOnd9LEYucmlnaHRBbGlnbllBeGlzPTNEZnVuY3Rpb24oPQplKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oRT0zRGUsci5vcmllbnQoZT8icmlnaHQiOiJsZWZ0IiksRik6RX0sRi5maXNo
ZXk9CmU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD0zRGUsRik6eH0s
Ri54UGFkZGluZz0zRGZ1bmN0aW9uKD0KZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9M0Rl
LEYpOmR9LEYueVBhZGRpbmc9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJnPQp1bWVudHMubGVuZ3Ro
Pyh2PTNEZSxGKTp2fSxGLnRvb2x0aXBzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg9Cj8oTj0zRGUsRik6Tn0sRi50b29sdGlwQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhMPTNEZT0KLEYpOkx9LEYudG9vbHRpcFhDb250ZW50PTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEM9M0RlLEYpOkN9PQosRi50b29sdGlw
WUNvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaz0zRGUsRik6
a30sRi5zdGE9CnRlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEE9M0Rl
LEYpOkF9LEYuZGVmYXVsdFN0YXRlPTNEZnVuYz0KdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oTz0zRGUsRik6T30sRi5ub0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gPQphcmd1bWVu
dHMubGVuZ3RoPyhfPTNEZSxGKTpffSxGLnRyYW5zaXRpb25EdXJhdGlvbj0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmc9CnVtZW50cy5sZW5ndGg/KEQ9M0RlLEYpOkR9LEZ9LGUubW9kZWxzLnNjYXR0
ZXJQbHVzTGluZUNoYXJ0PTNEZnVuY3Rpb24oKXtmdT0KbmN0aW9uIEIoZSl7cmV0dXJuIGUuZWFj
aChmdW5jdGlvbihlKXtmdW5jdGlvbiBWKCl7aWYoUylyZXR1cm4gVS5zZWxlY3QoIi5uPQp2LXBv
aW50LXBhdGhzIikuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIiksITE7VS5zZWxlY3QoIi5u
di1wb2ludC1wYXRocyI9Cikuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpO3ZhciBpPTNE
ZDMubW91c2UodGhpcyk7aC5kaXN0b3J0aW9uKEUpLmZvYz0KdXMoaVswXSkscC5kaXN0b3J0aW9u
KEUpLmZvY3VzKGlbMV0pLFUuc2VsZWN0KCIubnYtc2NhdHRlcldyYXAiKS5kYXR1bShlLmZpPQps
dGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkpLmNhbGwodCksZyYmVS5zZWxlY3Qo
Ii5udi14Lm52LWF4aXMiKS49CmNhbGwobikseSYmVS5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5j
YWxsKHIpLFUuc2VsZWN0KCIubnYtZGlzdHJpYnV0aW9uWCIpLj0KZGF0dW0oZS5maWx0ZXIoZnVu
Y3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbChvKSxVLnNlbGVjdCgiLm52LWRpc3Ry
PQppYnV0aW9uWSIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVk
fSkpLmNhbGwodSl9dmFyIFQ9M0Q9CmQzLnNlbGVjdCh0aGlzKSxOPTNEdGhpcyxDPTNEKGZ8fHBh
cnNlSW50KFQuc3R5bGUoIndpZHRoIikpfHw5NjApLWEubGVmdC1hLj0KcmlnaHQsTT0zRChsfHxw
YXJzZUludChULnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktYS50b3AtYS5ib3R0b207Qi51cGRhdGU9
M0RmPQp1bmN0aW9uKCl7VC5jYWxsKEIpfSxCLmNvbnRhaW5lcj0zRHRoaXMsay5kaXNhYmxlZD0z
RGUubWFwKGZ1bmN0aW9uKGUpe3JldHU9CnJuISFlLmRpc2FibGVkfSk7aWYoIUwpe3ZhciBqO0w9
M0R7fTtmb3IoaiBpbiBrKWtbal1pbnN0YW5jZW9mIEFycmF5P0xbal09Cj0zRGtbal0uc2xpY2Uo
MCk6TFtqXT0zRGtbal19aWYoIWV8fCFlLmxlbmd0aHx8IWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3Jl
dHVybj0KIGUudmFsdWVzLmxlbmd0aH0pLmxlbmd0aCl7dmFyIEY9M0RULnNlbGVjdEFsbCgiLm52
LW5vRGF0YSIpLmRhdGEoW09dKTtyZXR1PQpybiBGLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0
cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW09CiIpLnN0eWxlKCJ0
ZXh0LWFuY2hvciIsIm1pZGRsZSIpLEYuYXR0cigieCIsYS5sZWZ0K0MvMikuYXR0cigieSIsYS50
b3ArTS8yKT0KLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxCfVQuc2VsZWN0QWxsKCIubnYt
bm9EYXRhIikucmVtb3ZlKCksaD0zRHQueFNjPQphbGUoKSxwPTNEdC55U2NhbGUoKSxfPTNEX3x8
aCxEPTNERHx8cDt2YXIgST0zRFQuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtc2M9CmF0dGVyQ2hh
cnQiKS5kYXRhKFtlXSkscT0zREkuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52
ZDMgbnYtd3JhcD0KIG52LXNjYXR0ZXJDaGFydCBudi1jaGFydC0iK3QuaWQoKSksUj0zRHEuYXBw
ZW5kKCJnIiksVT0zREkuc2VsZWN0KCJnIik7Ui5hPQpwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNz
IiwibnZkMyBudi1iYWNrZ3JvdW5kIikuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwibm89Cm5lIiks
Ui5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcyIpLFIuYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLD0KIm52LXkgbnYtYXhpcyIpLFIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3Mi
LCJudi1zY2F0dGVyV3JhcCIpLFIuYXBwZW5kKCJnIikuPQphdHRyKCJjbGFzcyIsIm52LXJlZ3Jl
c3Npb25MaW5lc1dyYXAiKSxSLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtZGlzdFc9CnJh
cCIpLFIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1sZWdlbmRXcmFwIiksUi5hcHBlbmQo
ImciKS5hdHRyKCJjbGFzcz0KIiwibnYtY29udHJvbHNXcmFwIiksSS5hdHRyKCJ0cmFuc2Zvcm0i
LCJ0cmFuc2xhdGUoIithLmxlZnQrIiwiK2EudG9wKyIpIiksPQpiJiZVLnNlbGVjdCgiLm52LXku
bnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK0MrIiwwKSIpLG0mJihpLnc9
CmlkdGgoQy8yKSxJLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5kYXR1bShlKS5jYWxsKGkpLGEu
dG9wIT0zRGkuaGVpZ2h0KCkmJj0KKGEudG9wPTNEaS5oZWlnaHQoKSxNPTNEKGx8fHBhcnNlSW50
KFQuc3R5bGUoImhlaWdodCIpKXx8NDAwKS1hLnRvcC1hLmJvdHRvPQptKSxJLnNlbGVjdCgiLm52
LWxlZ2VuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitDLzIrIiwiKyAtYS50
b3A9CisiKSIpKSx3JiYocy53aWR0aCgxODApLmNvbG9yKFsiIzQ0NCJdKSxVLnNlbGVjdCgiLm52
LWNvbnRyb2xzV3JhcCIpLmRhdHVtKD0KSCkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAs
IisgLWEudG9wKyIpIikuY2FsbChzKSksdC53aWR0aChDKS5oZWlnaHQoPQpNKS5jb2xvcihlLm1h
cChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxjKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24o
dCxuKXs9CnJldHVybiFlW25dLmRpc2FibGVkfSkpLEkuc2VsZWN0KCIubnYtc2NhdHRlcldyYXAi
KS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbj0KKGUpe3JldHVybiFlLmRpc2FibGVkfSkpLmNhbGwo
dCksSS5zZWxlY3QoIi5udi1yZWdyZXNzaW9uTGluZXNXcmFwIikuYXR0cigiPQpjbGlwLXBhdGgi
LCJ1cmwoI252LWVkZ2UtY2xpcC0iK3QuaWQoKSsiKSIpO3ZhciB6PTNESS5zZWxlY3QoIi5udi1y
ZWdyZXNzaW89Cm5MaW5lc1dyYXAiKS5zZWxlY3RBbGwoIi5udi1yZWdMaW5lcyIpLmRhdGEoZnVu
Y3Rpb24oZSl7cmV0dXJuIGV9KTt6LmVudGVyKD0KKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIs
Im52LXJlZ0xpbmVzIik7dmFyIFc9M0R6LnNlbGVjdEFsbCgiLm52LXJlZ0xpbmUiPQopLmRhdGEo
ZnVuY3Rpb24oZSl7cmV0dXJuW2VdfSksWD0zRFcuZW50ZXIoKS5hcHBlbmQoImxpbmUiKS5hdHRy
KCJjbGFzcyIsIm49CnYtcmVnTGluZSIpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMCk7Vy5hdHRy
KCJ4MSIsaC5yYW5nZSgpWzBdKS5hdHRyKCJ4MiIsaD0KLnJhbmdlKClbMV0pLmF0dHIoInkxIixm
dW5jdGlvbihlLHQpe3JldHVybiBwKGguZG9tYWluKClbMF0qZS5zbG9wZStlLmludGVyPQpjZXB0
KX0pLmF0dHIoInkyIixmdW5jdGlvbihlLHQpe3JldHVybiBwKGguZG9tYWluKClbMV0qZS5zbG9w
ZStlLmludGVyY2VwdCk9Cn0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4g
YyhlLG4pfSkuc3R5bGUoInN0cm9rZS1vcGFjaXR5IixmdT0KbmN0aW9uKGUsdCl7cmV0dXJuIGUu
ZGlzYWJsZWR8fHR5cGVvZiBlLnNsb3BlPTNEPTNEInVuZGVmaW5lZCJ8fHR5cGVvZiBlLmluPQp0
ZXJjZXB0PTNEPTNEInVuZGVmaW5lZCI/MDoxfSksZyYmKG4uc2NhbGUoaCkudGlja3Mobi50aWNr
cygpP24udGlja3MoKTpDLzE9CjAwKS50aWNrU2l6ZSgtTSwwKSxVLnNlbGVjdCgiLm52LXgubnYt
YXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLD0KIitwLnJhbmdlKClbMF0rIiki
KS5jYWxsKG4pKSx5JiYoci5zY2FsZShwKS50aWNrcyhyLnRpY2tzKCk/ci50aWNrcygpOk0vMzYp
PQoudGlja1NpemUoLUMsMCksVS5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5jYWxsKHIpKSxkJiYo
by5nZXREYXRhKHQueCgpKS5zY2E9CmxlKGgpLndpZHRoKEMpLmNvbG9yKGUubWFwKGZ1bmN0aW9u
KGUsdCl7cmV0dXJuIGUuY29sb3J8fGMoZSx0KX0pLmZpbHRlcihmdT0KbmN0aW9uKHQsbil7cmV0
dXJuIWVbbl0uZGlzYWJsZWR9KSksUi5zZWxlY3QoIi5udi1kaXN0V3JhcCIpLmFwcGVuZCgiZyIp
LmF0PQp0cigiY2xhc3MiLCJudi1kaXN0cmlidXRpb25YIiksVS5zZWxlY3QoIi5udi1kaXN0cmli
dXRpb25YIikuYXR0cigidHJhbnNmb3I9Cm0iLCJ0cmFuc2xhdGUoMCwiK3AucmFuZ2UoKVswXSsi
KSIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpcz0KYWJsZWR9KSkuY2Fs
bChvKSksdiYmKHUuZ2V0RGF0YSh0LnkoKSkuc2NhbGUocCkud2lkdGgoTSkuY29sb3IoZS5tYXAo
ZnVuY3RpPQpvbihlLHQpe3JldHVybiBlLmNvbG9yfHxjKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24o
dCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZH09CikpLFIuc2VsZWN0KCIubnYtZGlzdFdyYXAiKS5h
cHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWRpc3RyaWJ1dGlvblkiKSxVLj0Kc2VsZWN0KCIu
bnYtZGlzdHJpYnV0aW9uWSIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhiP0M6LXUu
c2l6ZSgpKSsiPQosMCkiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNh
YmxlZH0pKS5jYWxsKHUpKSxkMy5maXNoZXllJiY9CihVLnNlbGVjdCgiLm52LWJhY2tncm91bmQi
KS5hdHRyKCJ3aWR0aCIsQykuYXR0cigiaGVpZ2h0IixNKSxVLnNlbGVjdCgiLm52LT0KYmFja2dy
b3VuZCIpLm9uKCJtb3VzZW1vdmUiLFYpLFUuc2VsZWN0KCIubnYtYmFja2dyb3VuZCIpLm9uKCJj
bGljayIsZnVuY3RpPQpvbigpe1M9M0QhU30pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRDbGljay5m
cmVlemVGaXNoZXllIixmdW5jdGlvbigpe1M9M0QhU309CikpLHMuZGlzcGF0Y2gub24oImxlZ2Vu
ZENsaWNrIixmdW5jdGlvbihlLGkpe2UuZGlzYWJsZWQ9M0QhZS5kaXNhYmxlZCxFPTNEZT0KLmRp
c2FibGVkPzA6Mi41LFUuc2VsZWN0KCIubnYtYmFja2dyb3VuZCIpLnN0eWxlKCJwb2ludGVyLWV2
ZW50cyIsZS5kaXNhYmxlPQpkPyJub25lIjoiYWxsIiksVS5zZWxlY3QoIi5udi1wb2ludC1wYXRo
cyIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsZS5kaXNhYmw9CmVkPyJhbGwiOiJub25lIiksZS5k
aXNhYmxlZD8oaC5kaXN0b3J0aW9uKEUpLmZvY3VzKDApLHAuZGlzdG9ydGlvbihFKS5mb2N1cz0K
KDApLFUuc2VsZWN0KCIubnYtc2NhdHRlcldyYXAiKS5jYWxsKHQpLFUuc2VsZWN0KCIubnYteC5u
di1heGlzIikuY2FsbChuKSxVPQouc2VsZWN0KCIubnYteS5udi1heGlzIikuY2FsbChyKSk6Uz0z
RCExLEIudXBkYXRlKCl9KSxpLmRpc3BhdGNoLm9uKCJzdGF0ZUM9CmhhbmdlIixmdW5jdGlvbihl
KXtrPTNEZSxBLnN0YXRlQ2hhbmdlKGspLEIudXBkYXRlKCl9KSx0LmRpc3BhdGNoLm9uKCJlbGVt
ZT0KbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZDMuc2VsZWN0KCIubnYtY2hhcnQt
Iit0LmlkKCkrIiAubnYtc2VyaWVzPQotIitlLnNlcmllc0luZGV4KyIgLm52LWRpc3R4LSIrZS5w
b2ludEluZGV4KS5hdHRyKCJ5MSIsZS5wb3NbMV0tTSksZDMuc2VsZWM9CnQoIi5udi1jaGFydC0i
K3QuaWQoKSsiIC5udi1zZXJpZXMtIitlLnNlcmllc0luZGV4KyIgLm52LWRpc3R5LSIrZS5wb2lu
dEluZD0KZXgpLmF0dHIoIngyIixlLnBvc1swXStvLnNpemUoKSksZS5wb3M9M0RbZS5wb3NbMF0r
YS5sZWZ0LGUucG9zWzFdK2EudG9wXSxBPQoudG9vbHRpcFNob3coZSl9KSxBLm9uKCJ0b29sdGlw
U2hvdyIsZnVuY3Rpb24oZSl7eCYmUChlLE4ucGFyZW50Tm9kZSl9KSxBLm89Cm4oImNoYW5nZVN0
YXRlIixmdW5jdGlvbih0KXt0eXBlb2YgdC5kaXNhYmxlZCE9M0QidW5kZWZpbmVkIiYmKGUuZm9y
RWFjaChmdT0KbmN0aW9uKGUsbil7ZS5kaXNhYmxlZD0zRHQuZGlzYWJsZWRbbl19KSxrLmRpc2Fi
bGVkPTNEdC5kaXNhYmxlZCksQi51cGRhdGUoPQopfSksXz0zRGguY29weSgpLEQ9M0RwLmNvcHko
KX0pLEJ9dmFyIHQ9M0RlLm1vZGVscy5zY2F0dGVyKCksbj0zRGUubW9kZWxzLmE9CnhpcygpLHI9
M0RlLm1vZGVscy5heGlzKCksaT0zRGUubW9kZWxzLmxlZ2VuZCgpLHM9M0RlLm1vZGVscy5sZWdl
bmQoKSxvPTNEZT0KLm1vZGVscy5kaXN0cmlidXRpb24oKSx1PTNEZS5tb2RlbHMuZGlzdHJpYnV0
aW9uKCksYT0zRHt0b3A6MzAscmlnaHQ6MjAsYm90PQp0b206NTAsbGVmdDo3NX0sZj0zRG51bGws
bD0zRG51bGwsYz0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCksaD0zRGQzLmZpc2hleWU9Cj9kMy5m
aXNoZXllLnNjYWxlKGQzLnNjYWxlLmxpbmVhcikuZGlzdG9ydGlvbigwKTp0LnhTY2FsZSgpLHA9
M0RkMy5maXNoZXllPz0KZDMuZmlzaGV5ZS5zY2FsZShkMy5zY2FsZS5saW5lYXIpLmRpc3RvcnRp
b24oMCk6dC55U2NhbGUoKSxkPTNEITEsdj0zRCExLG09Cj0zRCEwLGc9M0QhMCx5PTNEITAsYj0z
RCExLHc9M0QhIWQzLmZpc2hleWUsRT0zRDAsUz0zRCExLHg9M0QhMCxUPTNEZnVuY3Rpbz0Kbihl
LHQsbil7cmV0dXJuIjxzdHJvbmc+Iit0KyI8L3N0cm9uZz4ifSxOPTNEZnVuY3Rpb24oZSx0LG4p
e3JldHVybiI8c3Ryb25nPQo+IituKyI8L3N0cm9uZz4ifSxDPTNEZnVuY3Rpb24oZSx0LG4scil7
cmV0dXJuIjxoMz4iK2UrIjwvaDM+IisiPHA+IityKyI8L3A9Cj4ifSxrPTNEe30sTD0zRG51bGws
QT0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdGVDaGFuZz0K
ZSIsImNoYW5nZVN0YXRlIiksTz0zRCJObyBEYXRhIEF2YWlsYWJsZS4iLE09M0QwO3QueFNjYWxl
KGgpLnlTY2FsZShwKSxuLm9yPQppZW50KCJib3R0b20iKS50aWNrUGFkZGluZygxMCksci5vcmll
bnQoYj8icmlnaHQiOiJsZWZ0IikudGlja1BhZGRpbmcoMTApLG89Ci5heGlzKCJ4IiksdS5heGlz
KCJ5Iikscy51cGRhdGVTdGF0ZSghMSk7dmFyIF8sRCxQPTNEZnVuY3Rpb24oaSxzKXt2YXIgbz0z
RD0KaS5wb3NbMF0rKHMub2Zmc2V0TGVmdHx8MCksdT0zRGkucG9zWzFdKyhzLm9mZnNldFRvcHx8
MCksZj0zRGkucG9zWzBdKyhzLm9mPQpmc2V0TGVmdHx8MCksbD0zRHAucmFuZ2UoKVswXSthLnRv
cCsocy5vZmZzZXRUb3B8fDApLGM9M0RoLnJhbmdlKClbMF0rYS5sZWY9CnQrKHMub2Zmc2V0TGVm
dHx8MCksZD0zRGkucG9zWzFdKyhzLm9mZnNldFRvcHx8MCksdj0zRG4udGlja0Zvcm1hdCgpKHQu
eCgpKD0KaS5wb2ludCxpLnBvaW50SW5kZXgpKSxtPTNEci50aWNrRm9ybWF0KCkodC55KCkoaS5w
b2ludCxpLnBvaW50SW5kZXgpKTtUIT0KPTNEbnVsbCYmZS50b29sdGlwLnNob3coW2YsbF0sVChp
LnNlcmllcy5rZXksdixtLGksQiksIm4iLDEscywieC1udnRvb2x0aXAiPQopLE4hPTNEbnVsbCYm
ZS50b29sdGlwLnNob3coW2MsZF0sTihpLnNlcmllcy5rZXksdixtLGksQiksImUiLDEscywieS1u
dnRvb2w9CnRpcCIpLEMhPTNEbnVsbCYmZS50b29sdGlwLnNob3coW28sdV0sQyhpLnNlcmllcy5r
ZXksdixtLGkucG9pbnQudG9vbHRpcCxpLD0KQiksaS52YWx1ZTwwPyJuIjoicyIsbnVsbCxzKX0s
SD0zRFt7a2V5OiJNYWduaWZ5IixkaXNhYmxlZDohMH1dO3JldHVybiB0LmRpPQpzcGF0Y2gub24o
ImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtBLnRvb2x0aXBIaWRlKGUpLGQz
LnNlbGVjdCg9CiIubnYtY2hhcnQtIit0LmlkKCkrIiAubnYtc2VyaWVzLSIrZS5zZXJpZXNJbmRl
eCsiIC5udi1kaXN0eC0iK2UucG9pbnRJbmRleD0KKS5hdHRyKCJ5MSIsMCksZDMuc2VsZWN0KCIu
bnYtY2hhcnQtIit0LmlkKCkrIiAubnYtc2VyaWVzLSIrZS5zZXJpZXNJbmRleCsiPQogLm52LWRp
c3R5LSIrZS5wb2ludEluZGV4KS5hdHRyKCJ4MiIsdS5zaXplKCkpfSksQS5vbigidG9vbHRpcEhp
ZGUiLGZ1bmN0aW89Cm4oKXt4JiZlLnRvb2x0aXAuY2xlYW51cCgpfSksQi5kaXNwYXRjaD0zREEs
Qi5zY2F0dGVyPTNEdCxCLmxlZ2VuZD0zRGksQi5jbz0KbnRyb2xzPTNEcyxCLnhBeGlzPTNEbixC
LnlBeGlzPTNEcixCLmRpc3RYPTNEbyxCLmRpc3RZPTNEdSxkMy5yZWJpbmQoQix0LCJpPQpkIiwi
aW50ZXJhY3RpdmUiLCJwb2ludEFjdGl2ZSIsIngiLCJ5Iiwic2hhcGUiLCJzaXplIiwieFNjYWxl
IiwieVNjYWxlIiwielM9CmNhbGUiLCJ4RG9tYWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5n
ZSIsInNpemVEb21haW4iLCJzaXplUmFuZ2UiLCJmb3JjZT0KWCIsImZvcmNlWSIsImZvcmNlU2l6
ZSIsImNsaXBWb3Jvbm9pIiwiY2xpcFJhZGl1cyIsInVzZVZvcm9ub2kiKSxCLm9wdGlvbnM9Cj0z
RGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChCKSxCLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZz0KdGg/KGEudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQi
P2UudG9wOmEudG9wLGEucmlnaHQ9M0R0eXBlb2YgZS5yaWdoPQp0IT0zRCJ1bmRlZmluZWQiP2Uu
cmlnaHQ6YS5yaWdodCxhLmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj89
CmUuYm90dG9tOmEuYm90dG9tLGEubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/
ZS5sZWZ0OmEubGVmdCxCKTphfT0KLEIud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oZj0zRGUsQik6Zn0sQi5oZWlnaHQ9M0RmdW5jPQp0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhsPTNEZSxCKTpsfSxCLmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJu
IGE9CnJndW1lbnRzLmxlbmd0aD8oYz0zRGUudXRpbHMuZ2V0Q29sb3IodCksaS5jb2xvcihjKSxv
LmNvbG9yKGMpLHUuY29sb3IoYyksQj0KKTpjfSxCLnNob3dEaXN0WD0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSxCKTpkfSxCLnNob3dEPQppc3RZPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9M0RlLEIpOnZ9LEIuc2hvd0NvbnRyb2xz
PTNEZnU9Cm5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz0zRGUsQik6d30sQi5z
aG93TGVnZW5kPTNEZnVuY3Rpb24oZSl7cj0KZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0zRGUs
Qik6bX0sQi5zaG93WEF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lPQpudHMubGVuZ3Ro
PyhnPTNEZSxCKTpnfSxCLnNob3dZQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyg9Cnk9M0RlLEIpOnl9LEIucmlnaHRBbGlnbllBeGlzPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9M0RlLD0Kci5vcmllbnQoZT8icmlnaHQiOiJsZWZ0Iiks
Qik6Yn0sQi5maXNoZXllPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sPQplbmd0aD8o
RT0zRGUsQik6RX0sQi50b29sdGlwcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyh4PTNEZSw9CkIpOnh9LEIudG9vbHRpcENvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oQz0zRGUsQik6Q30sQj0KLnRvb2x0aXBYQ29udGVudD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhUPTNEZSxCKTpUfSxCLnRvb2x0PQppcFlD
b250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE49M0RlLEIpOk59
LEIuc3RhdGU9M0RmdW49CmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhrPTNEZSxC
KTprfSxCLmRlZmF1bHRTdGF0ZT0zRGZ1bmN0aW9uKGUpez0KcmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KEw9M0RlLEIpOkx9LEIubm9EYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50PQpz
Lmxlbmd0aD8oTz0zRGUsQik6T30sQi50cmFuc2l0aW9uRHVyYXRpb249M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmw9CmVuZ3RoPyhNPTNEZSxCKTpNfSxCfSxlLm1vZGVscy5zcGFya2xp
bmU9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIGQoZSl7cmV0dXJuID0KZS5lYWNoKGZ1bmN0aW9uKGUp
e3ZhciBpPTNEbi10LmxlZnQtdC5yaWdodCxkPTNEci10LnRvcC10LmJvdHRvbSx2PTNEZDMuc2Vs
PQplY3QodGhpcyk7cy5kb21haW4obHx8ZDMuZXh0ZW50KGUsdSkpLnJhbmdlKGh8fFswLGldKSxv
LmRvbWFpbihjfHxkMy5leHRlbnQ9CihlLGEpKS5yYW5nZShwfHxbZCwwXSk7dmFyIG09M0R2LnNl
bGVjdEFsbCgiZy5udi13cmFwLm52LXNwYXJrbGluZSIpLmRhdGEoWz0KZV0pLGc9M0RtLmVudGVy
KCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtc3BhcmtsaW5lIiks
Yj0KPTNEZy5hcHBlbmQoImciKSx3PTNEbS5zZWxlY3QoImciKTttLmF0dHIoInRyYW5zZm9ybSIs
InRyYW5zbGF0ZSgiK3QubGVmdCsiPQosIit0LnRvcCsiKSIpO3ZhciBFPTNEbS5zZWxlY3RBbGwo
InBhdGgiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybltlXX0pO0UuZW49CnRlcigpLmFwcGVuZCgi
cGF0aCIpLEUuZXhpdCgpLnJlbW92ZSgpLEUuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSx0KXty
ZXR1cj0KbiBlLmNvbG9yfHxmKGUsdCl9KS5hdHRyKCJkIixkMy5zdmcubGluZSgpLngoZnVuY3Rp
b24oZSx0KXtyZXR1cm4gcyh1KGUsdCkpPQp9KS55KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG8oYShl
LHQpKX0pKTt2YXIgUz0zRG0uc2VsZWN0QWxsKCJjaXJjbGUubnYtcG9pbnQ9CiIpLmRhdGEoZnVu
Y3Rpb24oZSl7ZnVuY3Rpb24gbih0KXtpZih0IT0zRC0xKXt2YXIgbj0zRGVbdF07cmV0dXJuIG4u
cG9pbnRJbj0KZGV4PTNEdCxufXJldHVybiBudWxsfXZhciB0PTNEZS5tYXAoZnVuY3Rpb24oZSx0
KXtyZXR1cm4gYShlLHQpfSkscj0zRG4odC5sPQphc3RJbmRleE9mKG8uZG9tYWluKClbMV0pKSxp
PTNEbih0LmluZGV4T2Yoby5kb21haW4oKVswXSkpLHM9M0RuKHQubGVuZ3RoLTE9Cik7cmV0dXJu
W2kscixzXS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUhPTNEbnVsbH0pfSk7Uy5lbnRlcigp
LmFwcGVuZCgiYz0KaXJjbGUiKSxTLmV4aXQoKS5yZW1vdmUoKSxTLmF0dHIoImN4IixmdW5jdGlv
bihlLHQpe3JldHVybiBzKHUoZSxlLnBvaW50SW5kPQpleCkpfSkuYXR0cigiY3kiLGZ1bmN0aW9u
KGUsdCl7cmV0dXJuIG8oYShlLGUucG9pbnRJbmRleCkpfSkuYXR0cigiciIsMikuYXQ9CnRyKCJj
bGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdShlLGUucG9pbnRJbmRleCk9M0Q9M0RzLmRvbWFp
bigpWzFdPyJudi1wbz0KaW50IG52LWN1cnJlbnRWYWx1ZSI6YShlLGUucG9pbnRJbmRleCk9M0Q9
M0RvLmRvbWFpbigpWzBdPyJudi1wb2ludCBudi1taW5WPQphbHVlIjoibnYtcG9pbnQgbnYtbWF4
VmFsdWUifSl9KSxkfXZhciB0PTNEe3RvcDoyLHJpZ2h0OjAsYm90dG9tOjIsbGVmdDowfSw9Cm49
M0Q0MDAscj0zRDMyLGk9M0QhMCxzPTNEZDMuc2NhbGUubGluZWFyKCksbz0zRGQzLnNjYWxlLmxp
bmVhcigpLHU9M0RmdW5jdD0KaW9uKGUpe3JldHVybiBlLnh9LGE9M0RmdW5jdGlvbihlKXtyZXR1
cm4gZS55fSxmPTNEZS51dGlscy5nZXRDb2xvcihbIiMwMDAiPQpdKSxsLGMsaCxwO3JldHVybiBk
Lm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoZCksZC5tYXJnaW49M0RmdW5jdGk9
Cm9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0Qi
dW5kZWZpbmVkIj9lLnRvcDp0Lj0KdG9wLHQucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5k
ZWZpbmVkIj9lLnJpZ2h0OnQucmlnaHQsdC5ib3R0b209M0R0eXBlPQpvZiBlLmJvdHRvbSE9M0Qi
dW5kZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHRvbSx0LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1
bmQ9CmVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxkKTp0fSxkLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KD0Kbj0zRGUsZCk6bn0sZC5oZWlnaHQ9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0zRGUsZCk6cn0sZC54PQo9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGQzLmZ1bmN0b3IoZSksZCk6dX0sZC55PTNE
ZnVuY3Q9CmlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0zRGQzLmZ1bmN0b3IoZSks
ZCk6YX0sZC54U2NhbGU9M0RmdW5jdGlvbj0KKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhz
PTNEZSxkKTpzfSxkLnlTY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1PQptZW50cy5sZW5n
dGg/KG89M0RlLGQpOm99LGQueERvbWFpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyg9Cmw9M0RlLGQpOmx9LGQueURvbWFpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhjPTNEZSxkKTpjfSxkLj0KeFJhbmdlPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLGQpOmh9LGQueVJhbmdlPTNEZnVuY3RpPQpvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsZCk6cH0sZC5hbmltYXRlPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGE9CnJndW1lbnRzLmxlbmd0aD8oaT0zRGUsZCk6aX0sZC5jb2xvcj0zRGZ1bmN0
aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPz0KKGY9M0RlLnV0aWxzLmdldENvbG9yKHQp
LGQpOmZ9LGR9LGUubW9kZWxzLnNwYXJrbGluZVBsdXM9M0RmdW5jdGlvbigpe2Z1bmN0PQppb24g
dihlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGMpe2Z1bmN0aW9uIE8oKXtpZihhKXJldHVybjt2
YXIgZT0zREMuc2VsZWM9CnRBbGwoIi5udi1ob3ZlclZhbHVlIikuZGF0YSh1KSxyPTNEZS5lbnRl
cigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtaD0Kb3ZlclZhbHVlIikuc3R5bGUoInN0
cm9rZS1vcGFjaXR5IiwwKS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwwKTtlLmV4aXQoKS5zdHlsPQpl
KCJzdHJva2Utb3BhY2l0eSIsMCkuc3R5bGUoImZpbGwtb3BhY2l0eSIsMCkucmVtb3ZlKCksZS5h
dHRyKCJ0cmFuc2Zvcm0iLGY9CnVuY3Rpb24oZSl7cmV0dXJuInRyYW5zbGF0ZSgiK3ModC54KCko
Y1tlXSxlKSkrIiwwKSJ9KS5zdHlsZSgic3Ryb2tlLW9wYWNpdD0KeSIsMSkuc3R5bGUoImZpbGwt
b3BhY2l0eSIsMSk7aWYoIXUubGVuZ3RoKXJldHVybjtyLmFwcGVuZCgibGluZSIpLmF0dHIoIngx
PQoiLDApLmF0dHIoInkxIiwtbi50b3ApLmF0dHIoIngyIiwwKS5hdHRyKCJ5MiIsYiksci5hcHBl
bmQoInRleHQiKS5hdHRyKCJjbGE9CnNzIiwibnYteFZhbHVlIikuYXR0cigieCIsLTYpLmF0dHIo
InkiLC1uLnRvcCkuYXR0cigidGV4dC1hbmNob3IiLCJlbmQiKS5hdD0KdHIoImR5IiwiLjllbSIp
LEMuc2VsZWN0KCIubnYtaG92ZXJWYWx1ZSAubnYteFZhbHVlIikudGV4dChmKHQueCgpKGNbdVsw
XV0sPQp1WzBdKSkpLHIuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudi15VmFsdWUiKS5h
dHRyKCJ4Iiw2KS5hdHRyKCJ5Iiwtbi49CnRvcCkuYXR0cigidGV4dC1hbmNob3IiLCJzdGFydCIp
LmF0dHIoImR5IiwiLjllbSIpLEMuc2VsZWN0KCIubnYtaG92ZXJWYWx1ZT0KIC5udi15VmFsdWUi
KS50ZXh0KGwodC55KCkoY1t1WzBdXSx1WzBdKSkpfWZ1bmN0aW9uIE0oKXtmdW5jdGlvbiByKGUs
bil7dmFyPQogcj0zRE1hdGguYWJzKHQueCgpKGVbMF0sMCktbiksaT0zRDA7Zm9yKHZhciBzPTNE
MDtzPGUubGVuZ3RoO3MrKylNYXRoLmFicyg9CnQueCgpKGVbc10scyktbik8ciYmKHI9M0RNYXRo
LmFicyh0LngoKShlW3NdLHMpLW4pLGk9M0RzKTtyZXR1cm4gaX1pZihhKXJldD0KdXJuO3ZhciBl
PTNEZDMubW91c2UodGhpcylbMF0tbi5sZWZ0O3U9M0RbcihjLE1hdGgucm91bmQocy5pbnZlcnQo
ZSkpKV0sTygpPQp9dmFyIG09M0RkMy5zZWxlY3QodGhpcyksZz0zRChyfHxwYXJzZUludChtLnN0
eWxlKCJ3aWR0aCIpKXx8OTYwKS1uLmxlZnQtbi49CnJpZ2h0LGI9M0QoaXx8cGFyc2VJbnQobS5z
dHlsZSgiaGVpZ2h0IikpfHw0MDApLW4udG9wLW4uYm90dG9tO3YudXBkYXRlPTNEZj0KdW5jdGlv
bigpe3YoZSl9LHYuY29udGFpbmVyPTNEdGhpcztpZighY3x8IWMubGVuZ3RoKXt2YXIgdz0zRG0u
c2VsZWN0QWxsKCIuPQpudi1ub0RhdGEiKS5kYXRhKFtkXSk7cmV0dXJuIHcuZW50ZXIoKS5hcHBl
bmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnY9Ci1ub0RhdGEiKS5hdHRyKCJkeSIsIi0u
N2VtIikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiksdy5hdHRyKCJ4IixuLmxlZj0KdCtn
LzIpLmF0dHIoInkiLG4udG9wK2IvMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLHZ9bS5z
ZWxlY3RBbGwoIi5udi1uPQpvRGF0YSIpLnJlbW92ZSgpO3ZhciBFPTNEdC55KCkoY1tjLmxlbmd0
aC0xXSxjLmxlbmd0aC0xKTtzPTNEdC54U2NhbGUoKSxvPQo9M0R0LnlTY2FsZSgpO3ZhciBTPTNE
bS5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1zcGFya2xpbmVwbHVzIikuZGF0YShbY10pLFQ9Cj0z
RFMuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1zcGFy
a2xpbmVwbHVzIiksTj0zRD0KVC5hcHBlbmQoImciKSxDPTNEUy5zZWxlY3QoImciKTtOLmFwcGVu
ZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtc3BhcmtsaW5lV3JhPQpwIiksTi5hcHBlbmQoImciKS5h
dHRyKCJjbGFzcyIsIm52LXZhbHVlV3JhcCIpLE4uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCI9
Cm52LWhvdmVyQXJlYSIpLFMuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrbi5sZWZ0KyIs
IituLnRvcCsiKSIpO3ZhciBrPQo9M0RDLnNlbGVjdCgiLm52LXNwYXJrbGluZVdyYXAiKTt0Lndp
ZHRoKGcpLmhlaWdodChiKSxrLmNhbGwodCk7dmFyIEw9M0RDLnM9CmVsZWN0KCIubnYtdmFsdWVX
cmFwIiksQT0zREwuc2VsZWN0QWxsKCIubnYtY3VycmVudFZhbHVlIikuZGF0YShbRV0pO0EuZW50
ZT0KcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnYtY3VycmVudFZhbHVlIikuYXR0
cigiZHgiLHA/LTg6OCkuYXR0cigiPQpkeSIsIi45ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLHA/
ImVuZCI6InN0YXJ0IiksQS5hdHRyKCJ4IixnKyhwP24ucmlnaHQ6MCk9CikuYXR0cigieSIsaD9m
dW5jdGlvbihlKXtyZXR1cm4gbyhlKX06MCkuc3R5bGUoImZpbGwiLHQuY29sb3IoKShjW2MubGVu
Z3RoLT0KMV0sYy5sZW5ndGgtMSkpLnRleHQobChFKSksTi5zZWxlY3QoIi5udi1ob3ZlckFyZWEi
KS5hcHBlbmQoInJlY3QiKS5vbigibW91PQpzZW1vdmUiLE0pLm9uKCJjbGljayIsZnVuY3Rpb24o
KXthPTNEIWF9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKCl7dT0zRFtdLE89CigpfSksQy5zZWxl
Y3QoIi5udi1ob3ZlckFyZWEgcmVjdCIpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSl7cmV0
dXJuInRyYT0KbnNsYXRlKCIrIC1uLmxlZnQrIiwiKyAtbi50b3ArIikifSkuYXR0cigid2lkdGgi
LGcrbi5sZWZ0K24ucmlnaHQpLmF0dHIoImhlPQppZ2h0IixiK24udG9wKX0pLHZ9dmFyIHQ9M0Rl
Lm1vZGVscy5zcGFya2xpbmUoKSxuPTNEe3RvcDoxNSxyaWdodDoxMDAsYm90dG89Cm06MTAsbGVm
dDo1MH0scj0zRG51bGwsaT0zRG51bGwscyxvLHU9M0RbXSxhPTNEITEsZj0zRGQzLmZvcm1hdCgi
LHIiKSxsPTNEZD0KMy5mb3JtYXQoIiwuMmYiKSxjPTNEITAsaD0zRCEwLHA9M0QhMSxkPTNEIk5v
IERhdGEgQXZhaWxhYmxlLiI7cmV0dXJuIHYuc3BhPQpya2xpbmU9M0R0LGQzLnJlYmluZCh2LHQs
IngiLCJ5IiwieFNjYWxlIiwieVNjYWxlIiwiY29sb3IiKSx2Lm9wdGlvbnM9M0RlLnU9CnRpbHMu
b3B0aW9uc0Z1bmMuYmluZCh2KSx2Lm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhuLj0KdG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOm4u
dG9wLG4ucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QiPQp1bmRlZmluZWQiP2UucmlnaHQ6bi5y
aWdodCxuLmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHQ9Cm9t
Om4uYm90dG9tLG4ubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0Om4u
bGVmdCx2KTpufSx2LndpZD0KdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8ocj0zRGUsdik6cn0sdi5oZWlnaHQ9M0RmdW5jdGlvbihlPQope3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhpPTNEZSx2KTppfSx2LnhUaWNrRm9ybWF0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGE9
CnJndW1lbnRzLmxlbmd0aD8oZj0zRGUsdik6Zn0sdi55VGlja0Zvcm1hdD0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubD0KZW5ndGg/KGw9M0RlLHYpOmx9LHYuc2hvd1ZhbHVlPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlPQosdik6Y30sdi5hbGlnblZh
bHVlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLHYpOmh9LHYu
cmk9CmdodEFsaWduVmFsdWU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
cD0zRGUsdik6cH0sdi5ub0RhdGE9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhkPTNEZSx2KTpkfSx2fSxlLm1vZGVscy5zdGFja2VkQXJlYT0KPTNEZnVuY3Rpb24oKXtm
dW5jdGlvbiBnKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIGE9M0RuLXQubGVmdC10
LnJpPQpnaHQsYj0zRHItdC50b3AtdC5ib3R0b20sdz0zRGQzLnNlbGVjdCh0aGlzKTtwPTNEdi54
U2NhbGUoKSxkPTNEdi55U2NhbGUoKTs9CnZhciBFPTNEZTtlLmZvckVhY2goZnVuY3Rpb24oZSx0
KXtlLnNlcmllc0luZGV4PTNEdCxlLnZhbHVlcz0zRGUudmFsdWVzLm1hcD0KKGZ1bmN0aW9uKGUs
bil7cmV0dXJuIGUuaW5kZXg9M0RuLGUuc2VyaWVzSW5kZXg9M0R0LGV9KX0pO3ZhciBTPTNEZS5m
aWx0ZXIoPQpmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pO2U9M0RkMy5sYXlvdXQuc3Rh
Y2soKS5vcmRlcihsKS5vZmZzZXQoZikudmE9Cmx1ZXMoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFs
dWVzfSkueChvKS55KHUpLm91dChmdW5jdGlvbihlLHQsbil7dmFyIHI9M0R1KD0KZSk9M0Q9M0Q9
M0QwPzA6bjtlLmRpc3BsYXk9M0R7eTpyLHkwOnR9fSkoUyk7dmFyIFQ9M0R3LnNlbGVjdEFsbCgi
Zy5udi13cmFwPQoubnYtc3RhY2tlZGFyZWEiKS5kYXRhKFtlXSksTj0zRFQuZW50ZXIoKS5hcHBl
bmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnY9Ci13cmFwIG52LXN0YWNrZWRhcmVhIiksQz0z
RE4uYXBwZW5kKCJkZWZzIiksaz0zRE4uYXBwZW5kKCJnIiksTD0zRFQuc2VsZWN0KD0KImciKTtr
LmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYXJlYVdyYXAiKSxrLmFwcGVuZCgiZyIpLmF0
dHIoImNsYXNzIiwiPQpudi1zY2F0dGVyV3JhcCIpLFQuYXR0cigidHJhbnNmb3JtIiwidHJhbnNs
YXRlKCIrdC5sZWZ0KyIsIit0LnRvcCsiKSIpLHYud2k9CmR0aChhKS5oZWlnaHQoYikueChvKS55
KGZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc3BsYXkueStlLmRpc3BsYXkueTB9KS5mb3JjZT0KWShb
MF0pLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGkoZSxlLnNlcmll
c0luZGV4KX0pKTt2YXIgPQpBPTNETC5zZWxlY3QoIi5udi1zY2F0dGVyV3JhcCIpLmRhdHVtKGUp
O0EuY2FsbCh2KSxDLmFwcGVuZCgiY2xpcFBhdGgiKS5hdHQ9CnIoImlkIiwibnYtZWRnZS1jbGlw
LSIrcykuYXBwZW5kKCJyZWN0IiksVC5zZWxlY3QoIiNudi1lZGdlLWNsaXAtIitzKyIgcmVjdD0K
IikuYXR0cigid2lkdGgiLGEpLmF0dHIoImhlaWdodCIsYiksTC5hdHRyKCJjbGlwLXBhdGgiLGg/
InVybCgjbnYtZWRnZS1jbGlwPQotIitzKyIpIjoiIik7dmFyIE89M0RkMy5zdmcuYXJlYSgpLngo
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChvKGUsdCkpfSkueTAoZnU9Cm5jdGlvbihlKXtyZXR1cm4g
ZChlLmRpc3BsYXkueTApfSkueTEoZnVuY3Rpb24oZSl7cmV0dXJuIGQoZS5kaXNwbGF5LnkrZS5k
aT0Kc3BsYXkueTApfSkuaW50ZXJwb2xhdGUoYyksTT0zRGQzLnN2Zy5hcmVhKCkueChmdW5jdGlv
bihlLHQpe3JldHVybiBwKG8oZSx0PQopKX0pLnkwKGZ1bmN0aW9uKGUpe3JldHVybiBkKGUuZGlz
cGxheS55MCl9KS55MShmdW5jdGlvbihlKXtyZXR1cm4gZChlLmRpc3A9CmxheS55MCl9KSxfPTNE
TC5zZWxlY3QoIi5udi1hcmVhV3JhcCIpLnNlbGVjdEFsbCgicGF0aC5udi1hcmVhIikuZGF0YShm
dW5jdD0KaW9uKGUpe3JldHVybiBlfSk7Xy5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNs
YXNzIixmdW5jdGlvbihlLHQpe3JldHVyPQpuIm52LWFyZWEgbnYtYXJlYS0iK3R9KS5hdHRyKCJk
IixmdW5jdGlvbihlLHQpe3JldHVybiBNKGUudmFsdWVzLGUuc2VyaWVzSW49CmRleCl9KS5vbigi
bW91c2VvdmVyIixmdW5jdGlvbihlLHQpe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIs
ITApLG0uYT0KcmVhTW91c2VvdmVyKHtwb2ludDplLHNlcmllczplLmtleSxwb3M6W2QzLmV2ZW50
LnBhZ2VYLGQzLmV2ZW50LnBhZ2VZXSxzZXJpPQplc0luZGV4OmUuc2VyaWVzSW5kZXh9KX0pLm9u
KCJtb3VzZW91dCIsZnVuY3Rpb24oZSx0KXtkMy5zZWxlY3QodGhpcykuY2xhc3M9CmVkKCJob3Zl
ciIsITEpLG0uYXJlYU1vdXNlb3V0KHtwb2ludDplLHNlcmllczplLmtleSxwb3M6W2QzLmV2ZW50
LnBhZ2VYLGQzLj0KZXZlbnQucGFnZVldLHNlcmllc0luZGV4OmUuc2VyaWVzSW5kZXh9KX0pLm9u
KCJjbGljayIsZnVuY3Rpb24oZSx0KXtkMy5zZWxlPQpjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIs
ITEpLG0uYXJlYUNsaWNrKHtwb2ludDplLHNlcmllczplLmtleSxwb3M6W2QzLmV2ZW49CnQucGFn
ZVgsZDMuZXZlbnQucGFnZVldLHNlcmllc0luZGV4OmUuc2VyaWVzSW5kZXh9KX0pLF8uZXhpdCgp
LnJlbW92ZSgpLF8ucz0KdHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8
aShlLGUuc2VyaWVzSW5kZXgpfSkuc3R5bGUoInN0cm9rPQplIixmdW5jdGlvbihlLHQpe3JldHVy
biBlLmNvbG9yfHxpKGUsZS5zZXJpZXNJbmRleCl9KSxfLmF0dHIoImQiLGZ1bmN0aW9uKGU9Cix0
KXtyZXR1cm4gTyhlLnZhbHVlcyx0KX0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIu
YXJlYSIsZnVuY3Rpb24oZT0KKXtMLnNlbGVjdCgiLm52LWNoYXJ0LSIrcysiIC5udi1hcmVhLSIr
ZS5zZXJpZXNJbmRleCkuY2xhc3NlZCgiaG92ZXIiLCEwKX0pPQosdi5kaXNwYXRjaC5vbigiZWxl
bWVudE1vdXNlb3V0LmFyZWEiLGZ1bmN0aW9uKGUpe0wuc2VsZWN0KCIubnYtY2hhcnQtIitzKyI9
CiAubnYtYXJlYS0iK2Uuc2VyaWVzSW5kZXgpLmNsYXNzZWQoImhvdmVyIiwhMSl9KSxnLmQzX3N0
YWNrZWRPZmZzZXRfc3RhY2tQZT0KcmNlbnQ9M0RmdW5jdGlvbihlKXt2YXIgdD0zRGUubGVuZ3Ro
LG49M0RlWzBdLmxlbmd0aCxyPTNEMS90LGkscyxvLGE9M0RbXTtmPQpvcihzPTNEMDtzPG47Kytz
KXtmb3IoaT0zRDAsbz0zRDA7aTxFLmxlbmd0aDtpKyspbys9M0R1KEVbaV0udmFsdWVzW3NdKTtp
Zig9Cm8pZm9yKGk9M0QwO2k8dDtpKyspZVtpXVtzXVsxXS89M0RvO2Vsc2UgZm9yKGk9M0QwO2k8
dDtpKyspZVtpXVtzXVsxXT0zRHJ9Zj0Kb3Iocz0zRDA7czxuOysrcylhW3NdPTNEMDtyZXR1cm4g
YX19KSxnfXZhciB0PTNEe3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmPQp0OjB9LG49M0Q5NjAs
cj0zRDUwMCxpPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxzPTNETWF0aC5mbG9vcihNYXRoLnJh
bmRvbSg9CikqMWU1KSxvPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0sdT0zRGZ1bmN0aW9uKGUp
e3JldHVybiBlLnl9LGE9M0Qic3RhY2siLD0KZj0zRCJ6ZXJvIixsPTNEImRlZmF1bHQiLGM9M0Qi
bGluZWFyIixoPTNEITEscCxkLHY9M0RlLm1vZGVscy5zY2F0dGVyKCksbT0KPTNEZDMuZGlzcGF0
Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhpZGUiLCJhcmVhQ2xpY2siLCJhcmVhTW91c2VvdmVy
IiwiYXJlPQphTW91c2VvdXQiKTtyZXR1cm4gdi5zaXplKDIuMikuc2l6ZURvbWFpbihbMi4yLDIu
Ml0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnQ9CkNsaWNrLmFyZWEiLGZ1bmN0aW9uKGUpe20uYXJl
YUNsaWNrKGUpfSksdi5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50bz0Kb2x0aXAiLGZ1
bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK3QubGVmdCxlLnBvc1sxXSt0LnRvcF0sbS50b29s
dGlwU2hvdyhlPQopfSksdi5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1
bmN0aW9uKGUpe20udG9vbHRpcEhpZGUoZSl9KSw9CmcuZGlzcGF0Y2g9M0RtLGcuc2NhdHRlcj0z
RHYsZDMucmViaW5kKGcsdiwiaW50ZXJhY3RpdmUiLCJzaXplIiwieFNjYWxlIiwieT0KU2NhbGUi
LCJ6U2NhbGUiLCJ4RG9tYWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsInNpemVEb21h
aW4iLCJmb3JjZVgiPQosImZvcmNlWSIsImZvcmNlU2l6ZSIsImNsaXBWb3Jvbm9pIiwidXNlVm9y
b25vaSIsImNsaXBSYWRpdXMiLCJoaWdobGlnaHRQb2k9Cm50IiwiY2xlYXJIaWdobGlnaHRzIiks
Zy5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKGcpLGcueD0zRGZ1bmN0aT0Kb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RkMy5mdW5jdG9yKGUpLGcpOm99LGcueT0z
RGZ1bmN0aW9uKGUpe3JlPQp0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RkMy5mdW5jdG9yKGUp
LGcpOnV9LGcubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXI9Cm4gYXJndW1lbnRzLmxlbmd0aD8o
dC50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6dC50b3AsdC5yaWdodD0K
PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp0LnJpZ2h0LHQuYm90dG9t
PTNEdHlwZW9mIGUuYm90dG9tPQohPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dC5ib3R0b20sdC5s
ZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmw9CmVmdDp0LmxlZnQsZyk6dH0s
Zy53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPTNEZSxnKTpu
fT0KLGcuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0Rl
LGcpOnJ9LGcuY2xpcEVkZ2U9M0RmPQp1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhoPTNEZSxnKTpofSxnLmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXI9Cm4gYXJndW1lbnRzLmxl
bmd0aD8oaT0zRGUudXRpbHMuZ2V0Q29sb3IodCksZyk6aX0sZy5vZmZzZXQ9M0RmdW5jdGlvbihl
KXtyZT0KdHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSxnKTpmfSxnLm9yZGVyPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sPQplbmd0aD8obD0zRGUsZyk6bH0sZy5zdHlsZT0zRGZ1
bmN0aW9uKGUpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBhO2E9M0Q9CmU7c3dpdGNoKGEp
e2Nhc2Uic3RhY2siOmcub2Zmc2V0KCJ6ZXJvIiksZy5vcmRlcigiZGVmYXVsdCIpO2JyZWFrO2Nh
c2Uic3RyZT0KYW0iOmcub2Zmc2V0KCJ3aWdnbGUiKSxnLm9yZGVyKCJpbnNpZGUtb3V0Iik7YnJl
YWs7Y2FzZSJzdHJlYW0tY2VudGVyIjpnLm9mPQpmc2V0KCJzaWxob3VldHRlIiksZy5vcmRlcigi
aW5zaWRlLW91dCIpO2JyZWFrO2Nhc2UiZXhwYW5kIjpnLm9mZnNldCgiZXhwYW49CmQiKSxnLm9y
ZGVyKCJkZWZhdWx0Iik7YnJlYWs7Y2FzZSJzdGFja19wZXJjZW50IjpnLm9mZnNldChnLmQzX3N0
YWNrZWRPZmZzZT0KdF9zdGFja1BlcmNlbnQpLGcub3JkZXIoImRlZmF1bHQiKX1yZXR1cm4gZ30s
Zy5pbnRlcnBvbGF0ZT0zRGZ1bmN0aW9uKGUpe3JlPQp0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9
M0RlLGcpOmN9LGd9LGUubW9kZWxzLnN0YWNrZWRBcmVhQ2hhcnQ9M0RmdW5jdGlvbig9Cil7ZnVu
Y3Rpb24gTSh5KXtyZXR1cm4geS5lYWNoKGZ1bmN0aW9uKHkpe3ZhciBBPTNEZDMuc2VsZWN0KHRo
aXMpLF89M0R0aGlzLD0KRD0zRChhfHxwYXJzZUludChBLnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS11
LmxlZnQtdS5yaWdodCxQPTNEKGZ8fHBhcnNlSW50KEEuPQpzdHlsZSgiaGVpZ2h0IikpfHw0MDAp
LXUudG9wLXUuYm90dG9tO00udXBkYXRlPTNEZnVuY3Rpb24oKXtBLmNhbGwoTSl9LE0uY289Cm50
YWluZXI9M0R0aGlzLFMuZGlzYWJsZWQ9M0R5Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlz
YWJsZWR9KTtpZigheCl7dj0KYXIgSDt4PTNEe307Zm9yKEggaW4gUylTW0hdaW5zdGFuY2VvZiBB
cnJheT94W0hdPTNEU1tIXS5zbGljZSgwKTp4W0hdPTNEU1tIPQpdfWlmKCF5fHwheS5sZW5ndGh8
fCF5LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubGVuZ3RofSkubGVuZ3RoKXs9
CnZhciBCPTNEQS5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFtUXSk7cmV0dXJuIEIuZW50
ZXIoKS5hcHBlbmQoInRleHQiKT0KLmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRy
KCJkeSIsIi0uN2VtIikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkPQpkbGUiKSxCLmF0dHIoIngi
LHUubGVmdCtELzIpLmF0dHIoInkiLHUudG9wK1AvMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4g
ZX09CiksTX1BLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbW92ZSgpLGI9M0R0LnhTY2FsZSgp
LHc9M0R0LnlTY2FsZSgpO3ZhciBqPQo9M0RBLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LXN0YWNr
ZWRBcmVhQ2hhcnQiKS5kYXRhKFt5XSksRj0zRGouZW50ZXIoKS5hcHA9CmVuZCgiZyIpLmF0dHIo
ImNsYXNzIiwibnZkMyBudi13cmFwIG52LXN0YWNrZWRBcmVhQ2hhcnQiKS5hcHBlbmQoImciKSxJ
PTNEaj0KLnNlbGVjdCgiZyIpO0YuYXBwZW5kKCJyZWN0Iikuc3R5bGUoIm9wYWNpdHkiLDApLEYu
YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiPQosIm52LXggbnYtYXhpcyIpLEYuYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKSxGLmFwcGVuZCgiZyIpLmE9CnR0cigiY2xhc3Mi
LCJudi1zdGFja2VkV3JhcCIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1sZWdlbmRX
cmFwIiksRj0KLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtY29udHJvbHNXcmFwIiksRi5h
cHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52PQotaW50ZXJhY3RpdmUiKSxJLnNlbGVjdCgicmVj
dCIpLmF0dHIoIndpZHRoIixEKS5hdHRyKCJoZWlnaHQiLFApO2lmKGgpe3ZhciA9CnE9M0RjP0Qt
QzpEO2kud2lkdGgocSksSS5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuZGF0dW0oeSkuY2FsbChp
KSx1LnRvcCE9Cj0zRGkuaGVpZ2h0KCkmJih1LnRvcD0zRGkuaGVpZ2h0KCksUD0zRChmfHxwYXJz
ZUludChBLnN0eWxlKCJoZWlnaHQiKSl8fDQwMD0KKS11LnRvcC11LmJvdHRvbSksSS5zZWxlY3Qo
Ii5udi1sZWdlbmRXcmFwIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrPQooRC1xKSsi
LCIrIC11LnRvcCsiKSIpfWlmKGMpe3ZhciBSPTNEW3trZXk6TC5zdGFja2VkfHwiU3RhY2tlZCIs
bWV0YUtleToiU3Q9CmFja2VkIixkaXNhYmxlZDp0LnN0eWxlKCkhPTNEInN0YWNrIixzdHlsZToi
c3RhY2sifSx7a2V5Okwuc3RyZWFtfHwiU3RyZWFtIj0KLG1ldGFLZXk6IlN0cmVhbSIsZGlzYWJs
ZWQ6dC5zdHlsZSgpIT0zRCJzdHJlYW0iLHN0eWxlOiJzdHJlYW0ifSx7a2V5OkwuZXhwPQphbmRl
ZHx8IkV4cGFuZGVkIixtZXRhS2V5OiJFeHBhbmRlZCIsZGlzYWJsZWQ6dC5zdHlsZSgpIT0zRCJl
eHBhbmQiLHN0eWxlOiI9CmV4cGFuZCJ9LHtrZXk6TC5zdGFja19wZXJjZW50fHwiU3RhY2sgJSIs
bWV0YUtleToiU3RhY2tfUGVyY2VudCIsZGlzYWJsZWQ6dD0KLnN0eWxlKCkhPTNEInN0YWNrX3Bl
cmNlbnQiLHN0eWxlOiJzdGFja19wZXJjZW50In1dO0M9M0RrLmxlbmd0aC8zKjI2MCxSPTNEPQpS
LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gay5pbmRleE9mKGUubWV0YUtleSkhPTNEPTNELTF9
KSxzLndpZHRoKEMpLmNvbG89CnIoWyIjNDQ0IiwiIzQ0NCIsIiM0NDQiXSksSS5zZWxlY3QoIi5u
di1jb250cm9sc1dyYXAiKS5kYXR1bShSKS5jYWxsKHMpLHUudD0Kb3AhPTNETWF0aC5tYXgocy5o
ZWlnaHQoKSxpLmhlaWdodCgpKSYmKHUudG9wPTNETWF0aC5tYXgocy5oZWlnaHQoKSxpLmhlaWdo
PQp0KCkpLFA9M0QoZnx8cGFyc2VJbnQoQS5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXUudG9wLXUu
Ym90dG9tKSxJLnNlbGVjdCgiLm49CnYtY29udHJvbHNXcmFwIikuYXR0cigidHJhbnNmb3JtIiwi
dHJhbnNsYXRlKDAsIisgLXUudG9wKyIpIil9ai5hdHRyKCJ0cmFucz0KZm9ybSIsInRyYW5zbGF0
ZSgiK3UubGVmdCsiLCIrdS50b3ArIikiKSx2JiZJLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmF0
dHIoPQoidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrRCsiLDApIiksbSYmKG8ud2lkdGgoRCkuaGVp
Z2h0KFApLm1hcmdpbih7bGVmdDp1Lmw9CmVmdCx0b3A6dS50b3B9KS5zdmdDb250YWluZXIoQSku
eFNjYWxlKGIpLGouc2VsZWN0KCIubnYtaW50ZXJhY3RpdmUiKS5jYWxsKD0KbykpLHQud2lkdGgo
RCkuaGVpZ2h0KFApO3ZhciBVPTNESS5zZWxlY3QoIi5udi1zdGFja2VkV3JhcCIpLmRhdHVtKHkp
O1UuY2FsPQpsKHQpLHAmJihuLnNjYWxlKGIpLnRpY2tzKEQvMTAwKS50aWNrU2l6ZSgtUCwwKSxJ
LnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmE9CnR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAs
IitQKyIpIiksSS5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5jYWxsKG4pKSxkJj0KJihyLnNjYWxl
KHcpLnRpY2tzKHQub2Zmc2V0KCk9M0Q9M0Qid2lnZ2xlIj8wOlAvMzYpLnRpY2tTaXplKC1ELDAp
LnNldFRpY2tGPQpvcm1hdCh0LnN0eWxlKCk9M0Q9M0QiZXhwYW5kInx8dC5zdHlsZSgpPTNEPTNE
InN0YWNrX3BlcmNlbnQiP2QzLmZvcm1hdCgiJSI9Cik6RSksSS5zZWxlY3QoIi5udi15Lm52LWF4
aXMiKS5jYWxsKHIpKSx0LmRpc3BhdGNoLm9uKCJhcmVhQ2xpY2sudG9nZ2xlIixmdT0KbmN0aW9u
KGUpe3kuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkubGVuZ3RoPTNEPTNE
PTNEMT95LmZvckVhPQpjaChmdW5jdGlvbihlKXtlLmRpc2FibGVkPTNEITF9KTp5LmZvckVhY2go
ZnVuY3Rpb24odCxuKXt0LmRpc2FibGVkPTNEbiE9M0Q9CmUuc2VyaWVzSW5kZXh9KSxTLmRpc2Fi
bGVkPTNEeS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSksTi5zdGF0ZT0KQ2hh
bmdlKFMpLE0udXBkYXRlKCl9KSxpLmRpc3BhdGNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24o
ZSl7Uy5kaXNhYmxlZD0KPTNEZS5kaXNhYmxlZCxOLnN0YXRlQ2hhbmdlKFMpLE0udXBkYXRlKCl9
KSxzLmRpc3BhdGNoLm9uKCJsZWdlbmRDbGljayIsZnVuPQpjdGlvbihlLG4pe2lmKCFlLmRpc2Fi
bGVkKXJldHVybjtSPTNEUi5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJsZWQ9M0Q9CiEw
LGV9KSxlLmRpc2FibGVkPTNEITEsdC5zdHlsZShlLnN0eWxlKSxTLnN0eWxlPTNEdC5zdHlsZSgp
LE4uc3RhdGVDaGFuZ2UoUz0KKSxNLnVwZGF0ZSgpfSksby5kaXNwYXRjaC5vbigiZWxlbWVudE1v
dXNlbW92ZSIsZnVuY3Rpb24oaSl7dC5jbGVhckhpZ2hsaWdoPQp0cygpO3ZhciBzLGEsZixjPTNE
W107eS5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zZXJpZXNJbmRleD0zRHQsIWUuZGk9
CnNhYmxlZH0pLmZvckVhY2goZnVuY3Rpb24obixyKXthPTNEZS5pbnRlcmFjdGl2ZUJpc2VjdChu
LnZhbHVlcyxpLnBvaW50WFZhbD0KdWUsTS54KCkpLHQuaGlnaGxpZ2h0UG9pbnQocixhLCEwKTt2
YXIgbz0zRG4udmFsdWVzW2FdO2lmKHR5cGVvZiBvPTNEPTNEInVuPQpkZWZpbmVkIilyZXR1cm47
dHlwZW9mIHM9M0Q9M0QidW5kZWZpbmVkIiYmKHM9M0RvKSx0eXBlb2YgZj0zRD0zRCJ1bmRlZmlu
ZWQ9CiImJihmPTNETS54U2NhbGUoKShNLngoKShvLGEpKSk7dmFyIHU9M0R0LnN0eWxlKCk9M0Q9
M0QiZXhwYW5kIj9vLmRpc3BsYXkueT0KOk0ueSgpKG8sYSk7Yy5wdXNoKHtrZXk6bi5rZXksdmFs
dWU6dSxjb2xvcjpsKG4sbi5zZXJpZXNJbmRleCksc3RhY2tlZFZhbHVlPQo6by5kaXNwbGF5fSl9
KSxjLnJldmVyc2UoKTtpZihjLmxlbmd0aD4yKXt2YXIgaD0zRE0ueVNjYWxlKCkuaW52ZXJ0KGku
bW91c2U9ClkpLHA9M0RJbmZpbml0eSxkPTNEbnVsbDtjLmZvckVhY2goZnVuY3Rpb24oZSx0KXto
PTNETWF0aC5hYnMoaCk7dmFyIG49M0RNYT0KdGguYWJzKGUuc3RhY2tlZFZhbHVlLnkwKSxyPTNE
TWF0aC5hYnMoZS5zdGFja2VkVmFsdWUueSk7aWYoaD49M0RuJiZoPD0zRHIrPQpuKXtkPTNEdDty
ZXR1cm59fSksZCE9M0RudWxsJiYoY1tkXS5oaWdobGlnaHQ9M0QhMCl9dmFyIHY9M0RuLnRpY2tG
b3JtYXQoKSg9Ck0ueCgpKHMsYSkpLG09M0R0LnN0eWxlKCk9M0Q9M0QiZXhwYW5kIj9mdW5jdGlv
bihlLHQpe3JldHVybiBkMy5mb3JtYXQoIi4xJT0KIikoZSl9OmZ1bmN0aW9uKGUsdCl7cmV0dXJu
IHIudGlja0Zvcm1hdCgpKGUpfTtvLnRvb2x0aXAucG9zaXRpb24oe2xlZnQ6Zit1PQoubGVmdCx0
b3A6aS5tb3VzZVkrdS50b3B9KS5jaGFydENvbnRhaW5lcihfLnBhcmVudE5vZGUpLmVuYWJsZWQo
ZykudmFsdWVGb3I9Cm1hdHRlcihtKS5kYXRhKHt2YWx1ZTp2LHNlcmllczpjfSkoKSxvLnJlbmRl
ckd1aWRlTGluZShmKX0pLG8uZGlzcGF0Y2gub24oIj0KZWxlbWVudE1vdXNlb3V0IixmdW5jdGlv
bihlKXtOLnRvb2x0aXBIaWRlKCksdC5jbGVhckhpZ2hsaWdodHMoKX0pLE4ub24oInRvPQpvbHRp
cFNob3ciLGZ1bmN0aW9uKGUpe2cmJk8oZSxfLnBhcmVudE5vZGUpfSksTi5vbigiY2hhbmdlU3Rh
dGUiLGZ1bmN0aW9uKGU9Cil7dHlwZW9mIGUuZGlzYWJsZWQhPTNEInVuZGVmaW5lZCImJnkubGVu
Z3RoPTNEPTNEPTNEZS5kaXNhYmxlZC5sZW5ndGgmJih5Lj0KZm9yRWFjaChmdW5jdGlvbih0LG4p
e3QuZGlzYWJsZWQ9M0RlLmRpc2FibGVkW25dfSksUy5kaXNhYmxlZD0zRGUuZGlzYWJsZWQpPQos
dHlwZW9mIGUuc3R5bGUhPTNEInVuZGVmaW5lZCImJnQuc3R5bGUoZS5zdHlsZSksTS51cGRhdGUo
KX0pfSksTX12YXIgdD0zRGU9Ci5tb2RlbHMuc3RhY2tlZEFyZWEoKSxuPTNEZS5tb2RlbHMuYXhp
cygpLHI9M0RlLm1vZGVscy5heGlzKCksaT0zRGUubW9kZWxzLj0KbGVnZW5kKCkscz0zRGUubW9k
ZWxzLmxlZ2VuZCgpLG89M0RlLmludGVyYWN0aXZlR3VpZGVsaW5lKCksdT0zRHt0b3A6MzAscmln
PQpodDoyNSxib3R0b206NTAsbGVmdDo2MH0sYT0zRG51bGwsZj0zRG51bGwsbD0zRGUudXRpbHMu
ZGVmYXVsdENvbG9yKCksYz0zRCE9CjAsaD0zRCEwLHA9M0QhMCxkPTNEITAsdj0zRCExLG09M0Qh
MSxnPTNEITAseT0zRGZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIj0KPGgzPiIrZSsiPC9oMz4i
KyI8cD4iK24rIiBvbiAiK3QrIjwvcD4ifSxiLHcsRT0zRGQzLmZvcm1hdCgiLC4yZiIpLFM9M0R7
c3R5PQpsZTp0LnN0eWxlKCl9LHg9M0RudWxsLFQ9M0QiTm8gRGF0YSBBdmFpbGFibGUuIixOPTNE
ZDMuZGlzcGF0Y2goInRvb2x0aXBTaG89CnciLCJ0b29sdGlwSGlkZSIsInN0YXRlQ2hhbmdlIiwi
Y2hhbmdlU3RhdGUiKSxDPTNEMjUwLGs9M0RbIlN0YWNrZWQiLCJTdHJlYT0KbSIsIkV4cGFuZGVk
Il0sTD0zRHt9LEE9M0QwO24ub3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg3KSxyLm9yaWVu
dCh2PyJyPQppZ2h0IjoibGVmdCIpLHMudXBkYXRlU3RhdGUoITEpO3ZhciBPPTNEZnVuY3Rpb24o
aSxzKXt2YXIgbz0zRGkucG9zWzBdKyhzLm89CmZmc2V0TGVmdHx8MCksdT0zRGkucG9zWzFdKyhz
Lm9mZnNldFRvcHx8MCksYT0zRG4udGlja0Zvcm1hdCgpKHQueCgpKGkucG9pbj0KdCxpLnBvaW50
SW5kZXgpKSxmPTNEci50aWNrRm9ybWF0KCkodC55KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKSxs
PTNEeShpLnNlPQpyaWVzLmtleSxhLGYsaSxNKTtlLnRvb2x0aXAuc2hvdyhbbyx1XSxsLGkudmFs
dWU8MD8ibiI6InMiLG51bGwscyl9O3JldHVybiA9CnQuZGlzcGF0Y2gub24oInRvb2x0aXBTaG93
IixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXSt1LmxlZnQsZS5wb3NbMV0rdT0KLnRvcF0s
Ti50b29sdGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2gub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbihl
KXtOLnRvb2x0aXBIPQppZGUoZSl9KSxOLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXtnJiZl
LnRvb2x0aXAuY2xlYW51cCgpfSksTS5kaXNwYXRjaD0KPTNETixNLnN0YWNrZWQ9M0R0LE0ubGVn
ZW5kPTNEaSxNLmNvbnRyb2xzPTNEcyxNLnhBeGlzPTNEbixNLnlBeGlzPTNEcixNLmluPQp0ZXJh
Y3RpdmVMYXllcj0zRG8sZDMucmViaW5kKE0sdCwieCIsInkiLCJzaXplIiwieFNjYWxlIiwieVNj
YWxlIiwieERvbWFpbiI9CiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsInNpemVEb21haW4i
LCJpbnRlcmFjdGl2ZSIsInVzZVZvcm9ub2kiLCJvZmZzZT0KdCIsIm9yZGVyIiwic3R5bGUiLCJj
bGlwRWRnZSIsImZvcmNlWCIsImZvcmNlWSIsImZvcmNlU2l6ZSIsImludGVycG9sYXRlIiksPQpN
Lm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoTSksTS5tYXJnaW49M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW09CmVudHMubGVuZ3RoPyh1LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0Qi
dW5kZWZpbmVkIj9lLnRvcDp1LnRvcCx1LnJpZ2h0PTNEdHlwZT0Kb2YgZS5yaWdodCE9M0QidW5k
ZWZpbmVkIj9lLnJpZ2h0OnUucmlnaHQsdS5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVu
PQpkZWZpbmVkIj9lLmJvdHRvbTp1LmJvdHRvbSx1LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1
bmRlZmluZWQiP2UubGVmdDp1Lmw9CmVmdCxNKTp1fSxNLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLE0pOmF9LE0uaGVpZz0KaHQ9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUsTSk6Zn0sTS5jb2xvcj0zRGZ1bmN0aW9u
KG4pPQp7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLnV0aWxzLmdldENvbG9yKG4pLGku
Y29sb3IobCksdC5jb2xvcihsKSxNKTo9Cmx9LE0uc2hvd0NvbnRyb2xzPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLE0pOmN9LE0uc2hvdz0KTGVnZW5kPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLE0pOmh9LE0uc2hvd1hBeGlz
PTNEZnVuPQpjdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsTSk6cH0sTS5z
aG93WUF4aXM9M0RmdW5jdGlvbihlKXtyZXQ9CnVybiBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSxN
KTpkfSxNLnJpZ2h0QWxpZ25ZQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcj0KZ3VtZW50cy5s
ZW5ndGg/KHY9M0RlLHIub3JpZW50KGU/InJpZ2h0IjoibGVmdCIpLE0pOnZ9LE0udXNlSW50ZXJh
Y3RpdmVHdWlkPQplbGluZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyht
PTNEZSxlPTNEPTNEPTNEITAmJihNLmludGVyYWM9CnRpdmUoITEpLE0udXNlVm9yb25vaSghMSkp
LE0pOm19LE0udG9vbHRpcD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubD0KZW5ndGg/
KHk9M0RlLE0pOnl9LE0udG9vbHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oZz0zRGUsPQpNKTpnfSxNLnRvb2x0aXBDb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHk9M0RlLE0pOnl9LE09Ci5zdGF0ZT0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPTNEZSxNKTpTfSxNLmRlZmF1bHRTdGF0ZT0zRD0KZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHg9M0RlLE0pOnh9LE0ubm9EYXRhPTNE
ZnVuY3Rpb24oZSl7cmV0PQp1cm4gYXJndW1lbnRzLmxlbmd0aD8oVD0zRGUsTSk6VH0sTS50cmFu
c2l0aW9uRHVyYXRpb249M0RmdW5jdGlvbihlKXtyZXR1cm49CiBhcmd1bWVudHMubGVuZ3RoPyhB
PTNEZSxNKTpBfSxNLmNvbnRyb2xzRGF0YT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudD0K
cy5sZW5ndGg/KGs9M0RlLE0pOmt9LE0uY29udHJvbExhYmVscz0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPQo/dHlwZW9mIGUhPTNEIm9iamVjdCI/TDooTD0zRGUsTSk6TH0s
ci5zZXRUaWNrRm9ybWF0PTNEci50aWNrRm9ybWF0LHIudGlja0Y9Cm9ybWF0PTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlLHIpOkV9LE19fSgpLGRlZmluZSgicGx1
Zz0KaW4vcGx1Z2lucy9udmQzL252LmQzIixmdW5jdGlvbigpe30pLGRlZmluZSgicGx1Z2luL2No
YXJ0cy9udmQzL2NvbW1vbi9jb25mPQppZyIsWyJwbHVnaW4vY2hhcnRzL2Zvcm1zL2RlZmF1bHQi
LCJwbHVnaW4vcGx1Z2lucy9udmQzL252LmQzIl0sZnVuY3Rpb24oZSk9CntyZXR1cm4gJC5leHRl
bmQoITAse30sZSx7dGl0bGU6IiIsY2F0ZWdvcnk6IiIsbGlicmFyeToiTlZEMyIsdGFnOiJzdmci
LGtleT0Kd29yZHM6InNtYWxsIn0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252ZDMvYmFyL2Nv
bmZpZyIsWyJwbHVnaW4vY2hhcnRzL252PQpkMy9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7
cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJSZWd1bGFyIixjYXQ9CmVnb3J5OiJCYXIg
ZGlhZ3JhbXMiLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbGFiZWw6
ITAsaXNfYT0KdXRvOiEwLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlz
Iixpc19udW1lcmljOiEwfX19KX0pLGRlZmluPQplKCJwbHVnaW4vY2hhcnRzL252ZDMvYmFyX3N0
YWNrZWQvY29uZmlnIixbInBsdWdpbi9jaGFydHMvbnZkMy9jb21tb24vY29uZmk9CmciXSxmdW5j
dGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6IlN0YWNrZWQiLGNhdGVnb3J5
OiJCYXIgZGlhZz0KcmFtcyIsY29sdW1uczp7eDp7dGl0bGU6IlZhbHVlcyBmb3IgeC1heGlzIixp
c19sYWJlbDohMCxpc19hdXRvOiEwLGlzX3VuaXF1PQplOiEwfSx5Ont0aXRsZToiVmFsdWVzIGZv
ciB5LWF4aXMiLGlzX251bWVyaWM6ITB9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnQ9CnMvbnZk
My9iYXJfaG9yaXpvbnRhbC9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9udmQzL2NvbW1vbi9jb25m
aWciXSxmdW5jdGlvbj0KKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiSG9yaXpv
bnRhbCIsY2F0ZWdvcnk6IkJhciBkaWFncmFtcyIsc2V0PQp0aW5nczp7eF9heGlzX3R5cGU6e2lu
aXQ6ImhpZGUifX0sY29sdW1uczp7eDp7dGl0bGU6IlZhbHVlcyBmb3IgeC1heGlzIixpc189Cmxh
YmVsOiEwLGlzX2F1dG86ITAsaXNfdW5pcXVlOiEwfSx5Ont0aXRsZToiVmFsdWVzIGZvciB5LWF4
aXMiLGlzX251bWVyaWM6IT0KMH19fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvbnZkMy9iYXJf
aG9yaXpvbnRhbF9zdGFja2VkL2NvbmZpZyIsWyJwbHVnaW4vPQpjaGFydHMvbnZkMy9jb21tb24v
Y29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJTdGE9
CmNrZWQgaG9yaXpvbnRhbCIsY2F0ZWdvcnk6IkJhciBkaWFncmFtcyIsc2V0dGluZ3M6e3hfYXhp
c190eXBlOntpbml0OiJoaWRlIj0KfX0sY29sdW1uczp7eDp7dGl0bGU6IlZhbHVlcyBmb3IgeC1h
eGlzIixpc19sYWJlbDohMCxpc19hdXRvOiEwLGlzX3VuaXF1ZTohPQowfSx5Ont0aXRsZToiVmFs
dWVzIGZvciB5LWF4aXMiLGlzX251bWVyaWM6ITB9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRz
L249CnZkMy9saW5lX2ZvY3VzL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL252ZDMvY29tbW9uL2Nv
bmZpZyJdLGZ1bmN0aW9uKGUpe3JldD0KdXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJMaW5l
IHdpdGggZm9jdXMiLGNhdGVnb3J5OiJPdGhlcnMiLHpvb21hYmxlOiJuPQphdGl2ZSIsY29sdW1u
czp7eDp7dGl0bGU6IlZhbHVlcyBmb3IgeC1heGlzIixpc19sYWJlbDohMCxpc19hdXRvOiEwLGlz
X3VuaXE9CnVlOiEwfSx5Ont0aXRsZToiVmFsdWVzIGZvciB5LWF4aXMiLGlzX251bWVyaWM6ITB9
fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcj0KdHMvbnZkMy9waWUvY29uZmlnIixbInBsdWdpbi9w
bHVnaW5zL252ZDMvbnYuZDMiXSxmdW5jdGlvbigpe3JldHVybiAkLmV4dGVuPQpkKCEwLHt9LHt0
aXRsZToiUGllIGNoYXJ0IixjYXRlZ29yeToiQXJlYSBjaGFydHMiLGxpYnJhcnk6Ik5WRDMiLHRh
Zzoic3ZnIiw9CmtleXdvcmRzOiJzbWFsbCIsY29sdW1uczp7bGFiZWw6e3RpdGxlOiJMYWJlbHMi
LGlzX2xhYmVsOiEwLGlzX2F1dG86ITB9LHk6ez0KdGl0bGU6IlZhbHVlcyIsaXNfbnVtZXJpYzoh
MH19LHNldHRpbmdzOnttYWluX3NlcGFyYXRvcjp7dHlwZToic2VwYXJhdG9yIix0PQppdGxlOiJQ
aWUgY2hhcnQgc2V0dGluZ3MifSxkb251dF9yYXRpbzp7dGl0bGU6IkRvbnV0IHJhdGlvIixpbmZv
OiJEZXRlcm1pbmU9CiBob3cgbGFyZ2UgdGhlIGRvbnV0IGhvbGUgd2lsbCBiZS4iLHR5cGU6InNl
bGVjdCIsaW5pdDoiMC41IixkYXRhOlt7bGFiZWw6Ij0KNTAlIix2YWx1ZToiMC41In0se2xhYmVs
OiIyNSUiLHZhbHVlOiIwLjI1In0se2xhYmVsOiIxMCUiLHZhbHVlOiIwLjEwIn0se2xhPQpiZWw6
IjAlIix2YWx1ZToiMCJ9XX0sc2hvd19sZWdlbmQ6e3RpdGxlOiJTaG93IGxlZ2VuZCIsaW5mbzoi
V291bGQgeW91IGxpa2U9CiB0byBhZGQgYSBsZWdlbmQ/Iix0eXBlOiJyYWRpb2J1dHRvbiIsaW5p
dDoiZmFsc2UiLGRhdGE6W3tsYWJlbDoiWWVzIix2YWx1ZT0KOiJ0cnVlIn0se2xhYmVsOiJObyIs
dmFsdWU6ImZhbHNlIn1dfSxsYWJlbF9zZXBhcmF0b3I6e3R5cGU6InNlcGFyYXRvciIsdGl0PQps
ZToiTGFiZWwgc2V0dGluZ3MifSxsYWJlbF90eXBlOnt0aXRsZToiRG9udXQgbGFiZWwiLGluZm86
IldoYXQgd291bGQgeW91IGw9CmlrZSB0byBzaG93IGZvciBlYWNoIHNsaWNlPyIsdHlwZToic2Vs
ZWN0Iixpbml0OiJwZXJjZW50IixkYXRhOlt7bGFiZWw6Ii0tID0KTm90aGluZyAtLSIsdmFsdWU6
ImhpZGUiLGhpZGU6ImxhYmVsX291dHNpZGUifSx7bGFiZWw6IkxhYmVsIGNvbHVtbiIsdmFsdWU6
PQoia2V5IixzaG93OiJsYWJlbF9vdXRzaWRlIn0se2xhYmVsOiJWYWx1ZSBjb2x1bW4iLHZhbHVl
OiJ2YWx1ZSIsc2hvdzoibGFiZWw9Cl9vdXRzaWRlIn0se2xhYmVsOiJQZXJjZW50YWdlIix2YWx1
ZToicGVyY2VudCIsc2hvdzoibGFiZWxfb3V0c2lkZSJ9XX0sbGFiZT0KbF9vdXRzaWRlOnt0aXRs
ZToiU2hvdyBvdXRzaWRlIixpbmZvOiJXb3VsZCB5b3UgbGlrZSB0byBzaG93IGxhYmVscyBvdXRz
aWRlPQogdGhlIGRvbnV0PyIsdHlwZToicmFkaW9idXR0b24iLGluaXQ6ImZhbHNlIixkYXRhOlt7
bGFiZWw6IlllcyIsdmFsdWU6InRydWU9CiJ9LHtsYWJlbDoiTm8iLHZhbHVlOiJmYWxzZSJ9XX0s
dXNlX3BhbmVsczp7aW5pdDoidHJ1ZSIsaGlkZTohMH19fSl9KSxkZWZpbj0KZSgicGx1Z2luL2No
YXJ0cy9udmQzL3N0YWNrZWRhcmVhX2Z1bGwvY29uZmlnIixbInBsdWdpbi9jaGFydHMvbnZkMy9j
b21tb24vPQpjb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0
bGU6IkV4cGFuZGVkIix6b29tYWJsZTohMCw9CmNhdGVnb3J5OiJBcmVhIGNoYXJ0cyIsa2V5d29y
ZHM6ImRlZmF1bHQgc21hbGwiLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZj0Kb3IgeC1heGlz
Iixpc19sYWJlbDohMCxpc19hdXRvOiEwLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBm
b3IgeS1heGlzPQoiLGlzX251bWVyaWM6ITB9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252
ZDMvc3RhY2tlZGFyZWFfc3RyZWFtL2NvbmZpZyI9CixbInBsdWdpbi9jaGFydHMvbnZkMy9jb21t
b24vY29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUsez0KdGl0bGU6
IlN0cmVhbSIsY2F0ZWdvcnk6IkFyZWEgY2hhcnRzIix6b29tYWJsZTohMCxrZXl3b3JkczoiZGVm
YXVsdCBzbWFsbCIsPQpzaG93bWF4bWluOiEwLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9y
IHgtYXhpcyIsaXNfbGFiZWw6ITAsaXNfYXV0bzohMCw9CmlzX3VuaXF1ZTohMH0seTp7dGl0bGU6
IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1lcmljOiEwfX19KX0pLGRlZmluZSgicGx1Zz0KaW4v
Y2hhcnRzL252ZDMvaGlzdG9ncmFtL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL252ZDMvY29tbW9u
L2NvbmZpZyJdLGZ1bmN0PQppb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJI
aXN0b2dyYW0iLGNhdGVnb3J5OiJEYXRhIHByb2Nlc3Npbmc9CiAocmVxdWlyZXMgJ2NoYXJ0cycg
dG9vbCBmcm9tIFRvb2xzaGVkKSIsZXhlY3V0ZToiaGlzdG9ncmFtIixrZXl3b3Jkczoic21hbD0K
bCBtZWRpdW0gbGFyZ2UiLGNvbHVtbnM6e3k6e3RpdGxlOiJPYnNlcnZhdGlvbnMiLGlzX251bWVy
aWM6ITB9fSxzZXR0aW5nczp7PQp4X2F4aXNfbGFiZWw6e2luaXQ6IlZhbHVlcyJ9LHlfYXhpc19s
YWJlbDp7aW5pdDoiRGVuc2l0eSJ9LHlfYXhpc190eXBlOntpbmk9CnQ6ImYifSx5X2F4aXNfcHJl
Y2lzaW9uOntpbml0OiIuMiJ9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252ZDMvbGluZS9j
bz0KbmZpZyIsWyJwbHVnaW4vY2hhcnRzL252ZDMvY29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUp
e3JldHVybiAkLmV4dGVuZCghMCx7PQp9LGUse3RpdGxlOiJMaW5lIGNoYXJ0IixjYXRlZ29yeToi
T3RoZXJzIix6b29tYWJsZTohMCxjb2x1bW5zOnt4Ont0aXRsZToiVmE9Cmx1ZXMgZm9yIHgtYXhp
cyIsaXNfbGFiZWw6ITAsaXNfYXV0bzohMCxpc191bmlxdWU6ITB9LHk6e3RpdGxlOiJWYWx1ZXMg
Zm9yID0KeS1heGlzIixpc19udW1lcmljOiEwfX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9u
dmQzL3NjYXR0ZXIvY29uZmlnIixbInBsPQp1Z2luL2NoYXJ0cy9udmQzL2NvbW1vbi9jb25maWci
XSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU9CjoiU2NhdHRlciBw
bG90IixjYXRlZ29yeToiT3RoZXJzIix6b29tYWJsZTohMCxjb2x1bW5zOnt4Ont0aXRsZToiVmFs
dWVzIGZvcj0KIHgtYXhpcyIsaXNfbnVtZXJpYzohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1h
eGlzIixpc19udW1lcmljOiEwfX19KX0pLGRlPQpmaW5lKCJwbHVnaW4vY2hhcnRzL252ZDMvc3Rh
Y2tlZGFyZWEvY29uZmlnIixbInBsdWdpbi9jaGFydHMvbnZkMy9jb21tb24vY289Cm5maWciXSxm
dW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6IlJlZ3VsYXIiLHpvb21h
YmxlOiEwLGNhdD0KZWdvcnk6IkFyZWEgY2hhcnRzIixrZXl3b3JkczoiZGVmYXVsdCBzbWFsbCIs
Y29sdW1uczp7eDp7dGl0bGU6IlZhbHVlcyBmb3IgPQp4LWF4aXMiLGlzX2xhYmVsOiEwLGlzX2F1
dG86ITAsaXNfdW5pcXVlOiEwfSx5Ont0aXRsZToiVmFsdWVzIGZvciB5LWF4aXMiLGk9CnNfbnVt
ZXJpYzohMH19fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvanFwbG90L2NvbW1vbi9jb25maWci
LFsicGx1Z2luL2NoYT0KcnRzL2Zvcm1zL2RlZmF1bHQiXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5l
eHRlbmQoITAse30sZSx7dGl0bGU6IiIsY2F0ZWdvcnk6PQoiIixsaWJyYXJ5OiJqcVBsb3QiLHRh
ZzoiZGl2Iix6b29tYWJsZTohMCxrZXl3b3JkczoibWVkaXVtIixzZXR0aW5nczp7c2VwYXI9CmF0
b3JfZ3JpZDp7dGl0bGU6IkdyaWRzIix0eXBlOiJzZXBhcmF0b3IifSx4X2F4aXNfZ3JpZDp7dGl0
bGU6IkF4aXMgZ3JpZCIsaT0KbmZvOiJXb3VsZCB5b3UgbGlrZSB0byBzaG93IGdyaWQgbGluZXMg
Zm9yIHRoZSBYIGF4aXM/Iix0eXBlOiJyYWRpb2J1dHRvbiIsPQppbml0OiJmYWxzZSIsZGF0YTpb
e2xhYmVsOiJPbiIsdmFsdWU6InRydWUifSx7bGFiZWw6Ik9mZiIsdmFsdWU6ImZhbHNlIn1dfSw9
CnlfYXhpc19ncmlkOnt0aXRsZToiQXhpcyBncmlkIixpbmZvOiJXb3VsZCB5b3UgbGlrZSB0byBz
aG93IGdyaWQgbGluZXMgZm9yID0KdGhlIFkgYXhpcz8iLHR5cGU6InJhZGlvYnV0dG9uIixpbml0
OiJ0cnVlIixkYXRhOlt7bGFiZWw6Ik9uIix2YWx1ZToidHJ1ZSJ9PQose2xhYmVsOiJPZmYiLHZh
bHVlOiJmYWxzZSJ9XX19fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvanFwbG90L2Jhci9jb25m
aWc9CiIsWyJwbHVnaW4vY2hhcnRzL2pxcGxvdC9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7
cmV0dXJuICQuZXh0ZW5kKCEwLHt9LD0KZSx7dGl0bGU6IlJlZ3VsYXIiLGNhdGVnb3J5OiJCYXIg
ZGlhZ3JhbXMiLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgtPQpheGlzIixpc19sYWJl
bDohMCxpc19hdXRvOiEwLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlz
Iixpc189Cm51bWVyaWM6ITB9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL2pxcGxvdC9saW5l
L2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzLz0KanFwbG90L2NvbW1vbi9jb25maWciXSxmdW5jdGlv
bihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6IkxpbmUgY2hhPQpydCIsY2F0ZWdv
cnk6Ik90aGVycyIsY29sdW1uczp7eDp7dGl0bGU6IlZhbHVlcyBmb3IgeC1heGlzIixpc19sYWJl
bDohMCxpc189CmF1dG86ITAsaXNfdW5pcXVlOiEwfSx5Ont0aXRsZToiVmFsdWVzIGZvciB5LWF4
aXMiLGlzX251bWVyaWM6ITB9fX0pfSksZGVmaT0KbmUoInBsdWdpbi9jaGFydHMvanFwbG90L3Nj
YXR0ZXIvY29uZmlnIixbInBsdWdpbi9jaGFydHMvanFwbG90L2NvbW1vbi9jb25mPQppZyJdLGZ1
bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiU2NhdHRlciBwbG90Iixj
YXRlZ29yeToiT3Q9CmhlcnMiLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIs
aXNfbnVtZXJpYzohMH0seTp7dGl0bGU6IlZhbHVlcz0KIGZvciB5LWF4aXMiLGlzX251bWVyaWM6
ITB9fSxzZXR0aW5nczp7eF9heGlzX2dyaWQ6e2luaXQ6InRydWUifX19KX0pLGRlZmluPQplKCJw
bHVnaW4vY2hhcnRzL2pxcGxvdC9ib3hwbG90L2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL2pxcGxv
dC9jb21tb24vY29uZmk9CmciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7
dGl0bGU6IkJveCBwbG90IixjYXRlZ29yeToiRGF0YSBwcj0Kb2Nlc3NpbmcgKHJlcXVpcmVzICdj
aGFydHMnIHRvb2wgZnJvbSBUb29sc2hlZCkiLGxpYnJhcnk6ImpxUGxvdCIsdGFnOiJkaXYiPQos
ZXhlY3V0ZToiYm94cGxvdCIsa2V5d29yZHM6InNtYWxsIG1lZGl1bSBsYXJnZSIsY29sdW1uczp7
eTp7dGl0bGU6Ik9ic2VydmE9CnRpb25zIixpc19udW1lcmljOiEwfX0sc2V0dGluZ3M6e3Nob3df
bGVnZW5kOntpbml0OiJmYWxzZSJ9fX0pfSksZGVmaW5lKCJwbD0KdWdpbi9jaGFydHMvanFwbG90
L2hpc3RvZ3JhbV9kaXNjcmV0ZS9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9qcXBsb3QvY29tbW9u
PQovY29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJE
aXNjcmV0ZSBIaXN0b2dyYW0iLGM9CmF0ZWdvcnk6IkRhdGEgcHJvY2Vzc2luZyAocmVxdWlyZXMg
J2NoYXJ0cycgdG9vbCBmcm9tIFRvb2xzaGVkKSIsZXhlY3V0ZToiaD0KaXN0b2dyYW1kaXNjcmV0
ZSIsa2V5d29yZHM6InNtYWxsIG1lZGl1bSBsYXJnZSIsY29sdW1uczp7eDp7dGl0bGU6Ik9ic2Vy
dmF0PQppb25zIixpc19sYWJlbDohMH19LHNldHRpbmdzOnt4X2F4aXNfbGFiZWw6e2luaXQ6IkJy
ZWFrcyJ9LHlfYXhpc19sYWJlbDp7aW49Cml0OiJEZW5zaXR5In19fSl9KSxkZWZpbmUoInBsdWdp
bi9jaGFydHMvb3RoZXJzL2hlYXRtYXAvY29uZmlnIixbInBsdWdpbi9jaD0KYXJ0cy9mb3Jtcy9k
ZWZhdWx0Il0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJIZWF0
bWFwIixjPQphdGVnb3J5OiJPdGhlcnMiLGxpYnJhcnk6IkN1c3RvbSIsdGFnOiJzdmciLGtleXdv
cmRzOiJzbWFsbCIsem9vbWFibGU6ITAsY289Cmx1bW5zOnt4Ont0aXRsZToiQ29sdW1uIGxhYmVs
cyIsaXNfbGFiZWw6ITAsaXNfbnVtZXJpYzohMCxpc191bmlxdWU6ITB9LHk6ez0KdGl0bGU6IlJv
dyBsYWJlbHMiLGlzX2xhYmVsOiEwLGlzX251bWVyaWM6ITAsaXNfdW5pcXVlOiEwfSx6Ont0aXRs
ZToiT2JzZXJ2PQphdGlvbiIsaXNfbnVtZXJpYzohMH19LHNldHRpbmdzOnt1c2VfcGFuZWxzOntp
bml0OiJ0cnVlIixoaWRlOiEwfSxjb2xvcl9zZXQ9Cjp7dGl0bGU6IkNvbG9yIHNjaGVtZSIsaW5m
bzoiU2VsZWN0IGEgY29sb3Igc2NoZW1lIGZvciB5b3VyIGhlYXRtYXAiLHR5cGU6Ij0Kc2VsZWN0
Iixpbml0OiJqZXQiLGRhdGE6W3tsYWJlbDoiQ29sZC10by1Ib3QiLHZhbHVlOiJob3QifSx7bGFi
ZWw6IkNvb2wiLHZhPQpsdWU6ImNvb2wifSx7bGFiZWw6IkNvcHBlciIsdmFsdWU6ImNvcHBlciJ9
LHtsYWJlbDoiR3JheSBzY2FsZSIsdmFsdWU6ImdyYXk9CiJ9LHtsYWJlbDoiSmV0Iix2YWx1ZToi
amV0In0se2xhYmVsOiJOby1HcmVlbiIsdmFsdWU6Im5vX2dyZWVuIn0se2xhYmVsOiJPYz0KZWFu
Iix2YWx1ZToib2NlYW4ifSx7bGFiZWw6IlBvbGFyIix2YWx1ZToicG9sYXIifSx7bGFiZWw6IlJl
ZC10by1HcmVlbiIsdmFsPQp1ZToicmVkZ3JlZW4ifSx7bGFiZWw6IlJlZC10by1ncmVlbiAoc2F0
dXJhdGVkKSIsdmFsdWU6InJlZDJncmVlbiJ9LHtsYWJlbDo9CiJSZWxpZWYiLHZhbHVlOiJyZWxp
ZWYifSx7bGFiZWw6IlNlaXNtb2dyYXBoIix2YWx1ZToic2VpcyJ9LHtsYWJlbDoiU2VhbGFuZD0K
Iix2YWx1ZToic2VhbGFuZCJ9LHtsYWJlbDoiU3BsaXQiLHZhbHVlOiJzcGxpdCJ9LHtsYWJlbDoi
V3lzaXd5ZyIsdmFsdWU6Ind5PQpzaXd5ZyJ9XX0sdXJsX3RlbXBsYXRlOnt0aXRsZToiVXJsIHRl
bXBsYXRlIixpbmZvOiJFbnRlciBhIHVybCB0byBsaW5rIHRoZSA9CmxhYmVscyB3aXRoIGV4dGVy
bmFsIHNvdXJjZXMuIFVzZSBfX0xBQkVMX18gYXMgcGxhY2Vob2xkZXIuIix0eXBlOiJ0ZXh0Iixp
bj0KaXQ6IiIscGxhY2Vob2xkZXI6Imh0dHA6Ly9zb21ldXJsLmNvbT9pZD0zRF9fTEFCRUxfXyJ9
fX0pfSksZGVmaW5lKCJwbHVnaW4vPQpjaGFydHMvb3RoZXJzL2hlYXRtYXBfY2x1c3Rlci9jb25m
aWciLFsicGx1Z2luL2NoYXJ0cy9vdGhlcnMvaGVhdG1hcC9jb25maWc9CiJdLGZ1bmN0aW9uKGUp
e3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiQ2x1c3RlcmVkIEhlYXRtYXAiLGNhdGVn
b3J5Oj0KIkRhdGEgcHJvY2Vzc2luZyAocmVxdWlyZXMgJ2NoYXJ0cycgdG9vbCBmcm9tIFRvb2xz
aGVkKSIsZXhlY3V0ZToiaGVhdG1hcCIsPQprZXl3b3Jkczoic21hbGwgbWVkaXVtIGxhcmdlIn0p
fSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL3R5cGVzIixbInBsdWdpbi9jaGE9CnJ0cy9udmQzL2Jh
ci9jb25maWciLCJwbHVnaW4vY2hhcnRzL252ZDMvYmFyX3N0YWNrZWQvY29uZmlnIiwicGx1Z2lu
L2NoYXJ0cz0KL252ZDMvYmFyX2hvcml6b250YWwvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9udmQz
L2Jhcl9ob3Jpem9udGFsX3N0YWNrZWQvY29uPQpmaWciLCJwbHVnaW4vY2hhcnRzL252ZDMvbGlu
ZV9mb2N1cy9jb25maWciLCJwbHVnaW4vY2hhcnRzL252ZDMvcGllL2NvbmZpZyI9CiwicGx1Z2lu
L2NoYXJ0cy9udmQzL3N0YWNrZWRhcmVhX2Z1bGwvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9udmQz
L3N0YWNrZWRhcj0KZWFfc3RyZWFtL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvbnZkMy9oaXN0b2dy
YW0vY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9udmQzPQovbGluZS9jb25maWciLCJwbHVnaW4vY2hh
cnRzL252ZDMvc2NhdHRlci9jb25maWciLCJwbHVnaW4vY2hhcnRzL252ZDMvc3RhY2s9CmVkYXJl
YS9jb25maWciLCJwbHVnaW4vY2hhcnRzL2pxcGxvdC9iYXIvY29uZmlnIiwicGx1Z2luL2NoYXJ0
cy9qcXBsb3QvbGluZT0KL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvanFwbG90L3NjYXR0ZXIvY29u
ZmlnIiwicGx1Z2luL2NoYXJ0cy9qcXBsb3QvYm94cGxvPQp0L2NvbmZpZyIsInBsdWdpbi9jaGFy
dHMvanFwbG90L2hpc3RvZ3JhbV9kaXNjcmV0ZS9jb25maWciLCJwbHVnaW4vY2hhcnRzL289CnRo
ZXJzL2hlYXRtYXAvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9vdGhlcnMvaGVhdG1hcF9jbHVzdGVy
L2NvbmZpZyJdLGZ1bmN0aT0Kb24oZSx0LG4scixpLHMsbyx1LGEsZixsLGMsaCxwLGQsdixtLGcs
eSl7cmV0dXJuIEJhY2tib25lLk1vZGVsLmV4dGVuZCh7ZGVmPQphdWx0czp7bnZkM19iYXI6ZSxu
dmQzX2Jhcl9zdGFja2VkOnQsbnZkM19iYXJfaG9yaXpvbnRhbDpuLG52ZDNfYmFyX2hvcml6b249
CnRhbF9zdGFja2VkOnIsbnZkM19saW5lX2ZvY3VzOmksbnZkM19zdGFja2VkYXJlYTpjLG52ZDNf
c3RhY2tlZGFyZWFfZnVsbDpvLD0KbnZkM19zdGFja2VkYXJlYV9zdHJlYW06dSxudmQzX3BpZTpz
LG52ZDNfbGluZTpmLG52ZDNfc2NhdHRlcjpsLG52ZDNfaGlzdG9nPQpyYW06YSxqcXBsb3RfYmFy
OmgsanFwbG90X2hpc3RvZ3JhbV9kaXNjcmV0ZTptLGpxcGxvdF9saW5lOnAsanFwbG90X3NjYXR0
ZXI9CjpkLGpxcGxvdF9ib3hwbG90OnYsb3RoZXJzX2hlYXRtYXA6ZyxvdGhlcnNfaGVhdG1hcF9j
bHVzdGVyOnl9fSl9KSxkZWZpbmUoIj0KcGx1Z2luL2FwcCIsWyJtdmMvdWkvdWktbW9kYWwiLCJt
dmMvdWkvdWktcG9ydGxldCIsIm12Yy91aS91aS1taXNjIiwidXRpbHMvPQp1dGlscyIsInBsdWdp
bi9saWJyYXJ5L2pvYnMiLCJwbHVnaW4vbGlicmFyeS9kYXRhc2V0cyIsInBsdWdpbi9saWJyYXJ5
L3N0b3I9CmFnZSIsInV0aWxzL2RlZmVycmVkIiwicGx1Z2luL3ZpZXdzL3ZpZXdlciIsInBsdWdp
bi92aWV3cy9lZGl0b3IiLCJwbHVnaW4vbT0Kb2RlbHMvY29uZmlnIiwicGx1Z2luL21vZGVscy9j
aGFydCIsInBsdWdpbi9jaGFydHMvdHlwZXMiXSxmdW5jdGlvbihlLHQsbixyPQosaSxzLG8sdSxh
LGYsbCxjLGgpe3JldHVybiBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlv
bih0KXt0aGk9CnMub3B0aW9ucz0zRHQsR2FsYXh5JiZHYWxheHkubW9kYWw/dGhpcy5tb2RhbD0z
REdhbGF4eS5tb2RhbDp0aGlzLm1vZGFsPTNEbj0KZXcgZS5WaWV3LHRoaXMuY29uZmlnPTNEbmV3
IGwsdGhpcy50eXBlcz0zRG5ldyBoLHRoaXMuY2hhcnQ9M0RuZXcgYyx0aGlzLmpvPQpicz0zRG5l
dyBpKHRoaXMpLHRoaXMuZGF0YXNldHM9M0RuZXcgcyh0aGlzKSx0aGlzLnN0b3JhZ2U9M0RuZXcg
byh0aGlzKSx0aGk9CnMuZGVmZXJyZWQ9M0RuZXcgdSx0aGlzLnZpZXdlcl92aWV3PTNEbmV3IGEo
dGhpcyksdGhpcy5lZGl0b3Jfdmlldz0zRG5ldyBmKD0KdGhpcyksdGhpcy4kZWwuYXBwZW5kKHRo
aXMudmlld2VyX3ZpZXcuJGVsKSx0aGlzLiRlbC5hcHBlbmQodGhpcy5lZGl0b3JfdmllPQp3LiRl
bCk7aWYoIXRoaXMuc3RvcmFnZS5sb2FkKCkpdGhpcy5nbygiZWRpdG9yIik7ZWxzZXt0aGlzLmdv
KCJ2aWV3ZXIiKTt2YXI9CiBuPTNEdGhpczt0aGlzLmRlZmVycmVkLmV4ZWN1dGUoZnVuY3Rpb24o
KXtuLmNoYXJ0LnRyaWdnZXIoInJlZHJhdyIpfSl9fSxnbz0KOmZ1bmN0aW9uKGUpeyQoIi50b29s
dGlwIikuaGlkZSgpO3N3aXRjaChlKXtjYXNlImVkaXRvciI6dGhpcy5lZGl0b3Jfdmlldy5zPQpo
b3coKSx0aGlzLnZpZXdlcl92aWV3LmhpZGUoKTticmVhaztjYXNlInZpZXdlciI6dGhpcy5lZGl0
b3Jfdmlldy5oaWRlKCksdGg9CmlzLnZpZXdlcl92aWV3LnNob3coKX19LGNoYXJ0UGF0aDpmdW5j
dGlvbihlKXt2YXIgdD0zRGUuc3BsaXQoL18oLispLyk7cmV0dT0Kcm4gdC5sZW5ndGg+PTNEMj90
WzBdKyIvIit0WzFdOihjb25zb2xlLmRlYnVnKCJGQUlMRUQgQXBwOmNoYXJ0UGF0aCgpIC0gSW52
PQphbGlkIGZvcm1hdDogIitlKSx1bmRlZmluZWQpfX0pfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQorZGVmaW5lKCJtdmMvdWkvdWktbW9kYWwiLFtdLGZ1bmN0aW9uKCl7dmFyIGU9M0RC
YWNrYm9uZS5WaWV3LmV4dGVuZCh7ZWxNYWk9Cm46ImJvZHkiLG9wdGlvbnNEZWZhdWx0Ont0aXRs
ZToidWktbW9kYWwiLGJvZHk6IiIsYmFja2Ryb3A6ITAsaGVpZ2h0Om51bGwsdz0KaWR0aDpudWxs
LGNsb3NpbmdfZXZlbnRzOiExLGNsb3NpbmdfY2FsbGJhY2s6bnVsbH0sYnV0dG9uTGlzdDp7fSxp
bml0aWFsaXplPQo6ZnVuY3Rpb24oZSl7ZSYmdGhpcy5fY3JlYXRlKGUpfSxzaG93OmZ1bmN0aW9u
KGUpe3RoaXMuaW5pdGlhbGl6ZShlKSx0aGlzLm89CnB0aW9ucy5oZWlnaHQ/KHRoaXMuJGJvZHku
Y3NzKCJoZWlnaHQiLHRoaXMub3B0aW9ucy5oZWlnaHQpLHRoaXMuJGJvZHkuY3NzKD0KIm92ZXJm
bG93IiwiaGlkZGVuIikpOnRoaXMuJGJvZHkuY3NzKCJtYXgtaGVpZ2h0IiwkKHdpbmRvdykuaGVp
Z2h0KCkvMiksdGhpPQpzLm9wdGlvbnMud2lkdGgmJnRoaXMuJGRpYWxvZy5jc3MoIndpZHRoIix0
aGlzLm9wdGlvbnMud2lkdGgpLHRoaXMudmlzaWJsZT89CnRoaXMuJGVsLnNob3coKTp0aGlzLiRl
bC5mYWRlSW4oImZhc3QiKSx0aGlzLnZpc2libGU9M0QhMH0saGlkZTpmdW5jdGlvbigpez0KdGhp
cy52aXNpYmxlPTNEITEsdGhpcy4kZWwuZmFkZU91dCgiZmFzdCIpLHRoaXMub3B0aW9ucy5jbG9z
aW5nX2NhbGxiYWNrJiZ0PQpoaXMub3B0aW9ucy5jbG9zaW5nX2NhbGxiYWNrKCl9LGVuYWJsZUJ1
dHRvbjpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMuYnV0dG89Cm5MaXN0W2VdO3RoaXMuJGJ1dHRv
bnMuZmluZCgiIyIrdCkucHJvcCgiZGlzYWJsZWQiLCExKX0sZGlzYWJsZUJ1dHRvbjpmdW5jdD0K
aW9uKGUpe3ZhciB0PTNEdGhpcy5idXR0b25MaXN0W2VdO3RoaXMuJGJ1dHRvbnMuZmluZCgiIyIr
dCkucHJvcCgiZGlzYWJsZWQiPQosITApfSxzaG93QnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PTNE
dGhpcy5idXR0b25MaXN0W2VdO3RoaXMuJGJ1dHRvbnMuZmluZCg9CiIjIit0KS5zaG93KCl9LGhp
ZGVCdXR0b246ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLmJ1dHRvbkxpc3RbZV07dGhpcy4kYnV0
dD0Kb25zLmZpbmQoIiMiK3QpLmhpZGUoKX0sZ2V0QnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PTNE
dGhpcy5idXR0b25MaXN0W2VdO3JlPQp0dXJuIHRoaXMuJGJ1dHRvbnMuZmluZCgiIyIrdCl9LHNj
cm9sbFRvcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRib2R5LnNjcm89CmxsVG9wKCl9LF9jcmVh
dGU6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzO3RoaXMub3B0aW9ucz0zRF8uZGVmYXVsdHMoZSx0
aGlzLj0Kb3B0aW9uc0RlZmF1bHQpLHRoaXMub3B0aW9ucy5ib2R5PTNEPTNEInByb2dyZXNzIiYm
KHRoaXMub3B0aW9ucy5ib2R5PTNEJCgnPQo8ZGl2IGNsYXNzPTNEInByb2dyZXNzIHByb2dyZXNz
LXN0cmlwZWQgYWN0aXZlIj48ZGl2IGNsYXNzPTNEInByb2dyZXNzLWJhciA9CnByb2dyZXNzLWJh
ci1pbmZvIiBzdHlsZT0zRCJ3aWR0aDoxMDAlIj48L2Rpdj48L2Rpdj4nKSksdGhpcy4kZWwmJih0
aGlzLiRlbD0KLnJlbW92ZSgpLCQoZG9jdW1lbnQpLm9mZigia2V5dXAudWktbW9kYWwiKSksdGhp
cy5zZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRlPQoodGhpcy5vcHRpb25zLnRpdGxlKSksdGhpcy4k
ZGlhbG9nPTNEdGhpcy4kZWwuZmluZCgiLm1vZGFsLWRpYWxvZyIpLHRoaXMuJGI9Cm9keT0zRHRo
aXMuJGVsLmZpbmQoIi5tb2RhbC1ib2R5IiksdGhpcy4kZm9vdGVyPTNEdGhpcy4kZWwuZmluZCgi
Lm1vZGFsLWZvbz0KdGVyIiksdGhpcy4kYnV0dG9ucz0zRHRoaXMuJGVsLmZpbmQoIi5idXR0b25z
IiksdGhpcy4kYmFja2Ryb3A9M0R0aGlzLiRlbC5mPQppbmQoIi5tb2RhbC1iYWNrZHJvcCIpLHRo
aXMuJGJvZHkuaHRtbCh0aGlzLm9wdGlvbnMuYm9keSksdGhpcy5vcHRpb25zLmJhY2s9CmRyb3B8
fHRoaXMuJGJhY2tkcm9wLnJlbW92ZUNsYXNzKCJpbiIpO2lmKHRoaXMub3B0aW9ucy5idXR0b25z
KXt0aGlzLmJ1dHRvbj0KTGlzdD0zRHt9O3ZhciBuPTNEMDskLmVhY2godGhpcy5vcHRpb25zLmJ1
dHRvbnMsZnVuY3Rpb24oZSxyKXt2YXIgaT0zRCJidXR0PQpvbi0iK24rKzt0LiRidXR0b25zLmFw
cGVuZCgkKCc8YnV0dG9uIGlkPTNEIicraSsnIj48L2J1dHRvbj4nKS50ZXh0KGUpLmNsaWM9Cmso
cikpLmFwcGVuZCgiICIpLHQuYnV0dG9uTGlzdFtlXT0zRGl9KX1lbHNlIHRoaXMuJGZvb3Rlci5o
aWRlKCk7JCh0aGlzLmVsTT0KYWluKS5hcHBlbmQoJCh0aGlzLmVsKSksdGhpcy5vcHRpb25zLmNs
b3NpbmdfZXZlbnRzJiYoJChkb2N1bWVudCkub24oImtleXVwPQoudWktbW9kYWwiLGZ1bmN0aW9u
KGUpe2Uua2V5Q29kZT0zRD0zRDI3JiZ0LmhpZGUoKX0pLHRoaXMuJGVsLmZpbmQoIi5tb2RhbC09
CmJhY2tkcm9wIikub24oImNsaWNrIixmdW5jdGlvbigpe3QuaGlkZSgpfSkpfSxfdGVtcGxhdGU6
ZnVuY3Rpb24oZSl7cmV0dXJuJz0KPGRpdiBjbGFzcz0zRCJ1aS1tb2RhbCBtb2RhbCI+PGRpdiBj
bGFzcz0zRCJtb2RhbC1iYWNrZHJvcCBmYWRlIGluIiBzdHlsZT0KPTNEInotaW5kZXg6IC0xOyI+
PC9kaXY+PGRpdiBjbGFzcz0zRCJtb2RhbC1kaWFsb2ciPjxkaXYgY2xhc3M9M0QibW9kYWwtY29u
PQp0ZW50Ij48ZGl2IGNsYXNzPTNEIm1vZGFsLWhlYWRlciI+PGJ1dHRvbiB0eXBlPTNEImJ1dHRv
biIgY2xhc3M9M0QiY2xvc2UiIHM9CnR5bGU9M0QiZGlzcGxheTogbm9uZTsiPiZ0aW1lczs8L2J1
dHRvbj48aDQgY2xhc3M9M0QidGl0bGUiPicrZSsiPC9oND4iKyI8Lz0KZGl2PiIrJzxkaXYgY2xh
c3M9M0QibW9kYWwtYm9keSIgc3R5bGU9M0QicG9zaXRpb246IHN0YXRpYzsiPjwvZGl2PicrJzxk
aXYgPQpjbGFzcz0zRCJtb2RhbC1mb290ZXIiPicrJzxkaXYgY2xhc3M9M0QiYnV0dG9ucyIgc3R5
bGU9M0QiZmxvYXQ6IHJpZ2h0OyI+PC89CmRpdj4nKyI8L2Rpdj4iKyI8L2RpdiIrIjwvZGl2PiIr
IjwvZGl2PiJ9fSk7cmV0dXJue1ZpZXc6ZX19KSxmdW5jdGlvbigpe3Zhcj0KIGU9M0R0aGlzLHQ9
M0RlLl8sbj0zREFycmF5LnByb3RvdHlwZSxyPTNET2JqZWN0LnByb3RvdHlwZSxpPTNERnVuY3Rp
b24ucHJvPQp0b3R5cGUscz0zRG4ucHVzaCxvPTNEbi5zbGljZSx1PTNEbi5jb25jYXQsYT0zRHIu
dG9TdHJpbmcsZj0zRHIuaGFzT3duUHJvcGU9CnJ0eSxsPTNEQXJyYXkuaXNBcnJheSxjPTNET2Jq
ZWN0LmtleXMsaD0zRGkuYmluZCxwPTNEZnVuY3Rpb24oZSl7aWYoZSBpbnN0YT0KbmNlb2YgcCly
ZXR1cm4gZTtpZighKHRoaXMgaW5zdGFuY2VvZiBwKSlyZXR1cm4gbmV3IHAoZSk7dGhpcy5fd3Jh
cHBlZD0zRGV9PQo7dHlwZW9mIGV4cG9ydHMhPTNEInVuZGVmaW5lZCI/KHR5cGVvZiBtb2R1bGUh
PTNEInVuZGVmaW5lZCImJm1vZHVsZS5leHBvcnQ9CnMmJihleHBvcnRzPTNEbW9kdWxlLmV4cG9y
dHM9M0RwKSxleHBvcnRzLl89M0RwKTplLl89M0RwLHAuVkVSU0lPTj0zRCIxLjcuMD0KIjt2YXIg
ZD0zRGZ1bmN0aW9uKGUsdCxuKXtpZih0PTNEPTNEPTNEdm9pZCAwKXJldHVybiBlO3N3aXRjaChu
PTNEPTNEbnVsbD8zPQo6bil7Y2FzZSAxOnJldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gZS5jYWxs
KHQsbil9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24obiw9CnIpe3JldHVybiBlLmNhbGwodCxuLHIp
fTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKG4scixpKXtyZXR1cm4gZS5jYWxsKHQsbixyLD0KaSl9
O2Nhc2UgNDpyZXR1cm4gZnVuY3Rpb24obixyLGkscyl7cmV0dXJuIGUuY2FsbCh0LG4scixpLHMp
fX1yZXR1cm4gZnVuY3RpPQpvbigpe3JldHVybiBlLmFwcGx5KHQsYXJndW1lbnRzKX19O3AuaXRl
cmF0ZWU9M0RmdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9M0Q9Cj0zRG51bGw/cC5pZGVudGl0eTpw
LmlzRnVuY3Rpb24oZSk/ZChlLHQsbik6cC5pc09iamVjdChlKT9wLm1hdGNoZXMoZSk6cC5wcj0K
b3BlcnR5KGUpfSxwLmVhY2g9M0RwLmZvckVhY2g9M0RmdW5jdGlvbihlLHQsbil7aWYoZT0zRD0z
RG51bGwpcmV0dXJuIGU7dD0KPTNEZCh0LG4pO3ZhciByLGk9M0RlLmxlbmd0aDtpZihpPTNEPTNE
PTNEK2kpZm9yKHI9M0QwO3I8aTtyKyspdChlW3JdLHIsZSk7PQplbHNle3ZhciBzPTNEcC5rZXlz
KGUpO2ZvcihyPTNEMCxpPTNEcy5sZW5ndGg7cjxpO3IrKyl0KGVbc1tyXV0sc1tyXSxlKX1yZXQ9
CnVybiBlfSxwLm1hcD0zRHAuY29sbGVjdD0zRGZ1bmN0aW9uKGUsdCxuKXtpZihlPTNEPTNEbnVs
bClyZXR1cm5bXTt0PTNEcC5pdD0KZXJhdGVlKHQsbik7dmFyIHI9M0RlLmxlbmd0aCE9M0Q9M0Qr
ZS5sZW5ndGgmJnAua2V5cyhlKSxpPTNEKHJ8fGUpLmxlbmd0aCxzPQo9M0RBcnJheShpKSxvO2Zv
cih2YXIgdT0zRDA7dTxpO3UrKylvPTNEcj9yW3VdOnUsc1t1XT0zRHQoZVtvXSxvLGUpO3JldHVy
biA9CnN9O3ZhciB2PTNEIlJlZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFs
dWUiO3AucmVkdWNlPTNEcC5mb2xkbD0KPTNEcC5pbmplY3Q9M0RmdW5jdGlvbihlLHQsbixyKXtl
PTNEPTNEbnVsbCYmKGU9M0RbXSksdD0zRGQodCxyLDQpO3ZhciBpPTNEPQplLmxlbmd0aCE9M0Q9
M0QrZS5sZW5ndGgmJnAua2V5cyhlKSxzPTNEKGl8fGUpLmxlbmd0aCxvPTNEMCx1O2lmKGFyZ3Vt
ZW50cy49Cmxlbmd0aDwzKXtpZighcyl0aHJvdyBuZXcgVHlwZUVycm9yKHYpO249M0RlW2k/aVtv
KytdOm8rK119Zm9yKDtvPHM7bysrKXU9Cj0zRGk/aVtvXTpvLG49M0R0KG4sZVt1XSx1LGUpO3Jl
dHVybiBufSxwLnJlZHVjZVJpZ2h0PTNEcC5mb2xkcj0zRGZ1bmN0aW9uKD0KZSx0LG4scil7ZT0z
RD0zRG51bGwmJihlPTNEW10pLHQ9M0RkKHQsciw0KTt2YXIgaT0zRGUubGVuZ3RoIT0zRD0zRCtl
Lmxlbmd0PQpoJiZwLmtleXMoZSkscz0zRChpfHxlKS5sZW5ndGgsbztpZihhcmd1bWVudHMubGVu
Z3RoPDMpe2lmKCFzKXRocm93IG5ldyBUeXA9CmVFcnJvcih2KTtuPTNEZVtpP2lbLS1zXTotLXNd
fXdoaWxlKHMtLSlvPTNEaT9pW3NdOnMsbj0zRHQobixlW29dLG8sZSk7cmV0dT0Kcm4gbn0scC5m
aW5kPTNEcC5kZXRlY3Q9M0RmdW5jdGlvbihlLHQsbil7dmFyIHI7cmV0dXJuIHQ9M0RwLml0ZXJh
dGVlKHQsbiksPQpwLnNvbWUoZSxmdW5jdGlvbihlLG4saSl7aWYodChlLG4saSkpcmV0dXJuIHI9
M0RlLCEwfSkscn0scC5maWx0ZXI9M0RwLnNlbGU9CmN0PTNEZnVuY3Rpb24oZSx0LG4pe3ZhciBy
PTNEW107cmV0dXJuIGU9M0Q9M0RudWxsP3I6KHQ9M0RwLml0ZXJhdGVlKHQsbikscD0KLmVhY2go
ZSxmdW5jdGlvbihlLG4saSl7dChlLG4saSkmJnIucHVzaChlKX0pLHIpfSxwLnJlamVjdD0zRGZ1
bmN0aW9uKGUsdCxuPQope3JldHVybiBwLmZpbHRlcihlLHAubmVnYXRlKHAuaXRlcmF0ZWUodCkp
LG4pfSxwLmV2ZXJ5PTNEcC5hbGw9M0RmdW5jdGlvbig9CmUsdCxuKXtpZihlPTNEPTNEbnVsbCly
ZXR1cm4hMDt0PTNEcC5pdGVyYXRlZSh0LG4pO3ZhciByPTNEZS5sZW5ndGghPTNEPTNEKz0KZS5s
ZW5ndGgmJnAua2V5cyhlKSxpPTNEKHJ8fGUpLmxlbmd0aCxzLG87Zm9yKHM9M0QwO3M8aTtzKysp
e289M0RyP3Jbc106cztpPQpmKCF0KGVbb10sbyxlKSlyZXR1cm4hMX1yZXR1cm4hMH0scC5zb21l
PTNEcC5hbnk9M0RmdW5jdGlvbihlLHQsbil7aWYoZT0zRD0KPTNEbnVsbClyZXR1cm4hMTt0PTNE
cC5pdGVyYXRlZSh0LG4pO3ZhciByPTNEZS5sZW5ndGghPTNEPTNEK2UubGVuZ3RoJiZwLmtlPQp5
cyhlKSxpPTNEKHJ8fGUpLmxlbmd0aCxzLG87Zm9yKHM9M0QwO3M8aTtzKyspe289M0RyP3Jbc106
cztpZih0KGVbb10sbyxlKSk9CnJldHVybiEwfXJldHVybiExfSxwLmNvbnRhaW5zPTNEcC5pbmNs
dWRlPTNEZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT0zRD0zRG51bD0KbD8hMTooZS5sZW5ndGghPTNE
PTNEK2UubGVuZ3RoJiYoZT0zRHAudmFsdWVzKGUpKSxwLmluZGV4T2YoZSx0KT49M0QwKX0scC5p
PQpudm9rZT0zRGZ1bmN0aW9uKGUsdCl7dmFyIG49M0RvLmNhbGwoYXJndW1lbnRzLDIpLHI9M0Rw
LmlzRnVuY3Rpb24odCk7cmV0dXI9Cm4gcC5tYXAoZSxmdW5jdGlvbihlKXtyZXR1cm4ocj90OmVb
dF0pLmFwcGx5KGUsbil9KX0scC5wbHVjaz0zRGZ1bmN0aW9uKGUsdD0KKXtyZXR1cm4gcC5tYXAo
ZSxwLnByb3BlcnR5KHQpKX0scC53aGVyZT0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAuZmlsdGVy
KGUsPQpwLm1hdGNoZXModCkpfSxwLmZpbmRXaGVyZT0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAu
ZmluZChlLHAubWF0Y2hlcyh0KSl9LHA9Ci5tYXg9M0RmdW5jdGlvbihlLHQsbil7dmFyIHI9M0Qt
SW5maW5pdHksaT0zRC1JbmZpbml0eSxzLG87aWYodD0zRD0zRG51bGwmJj0KZSE9M0RudWxsKXtl
PTNEZS5sZW5ndGg9M0Q9M0Q9M0QrZS5sZW5ndGg/ZTpwLnZhbHVlcyhlKTtmb3IodmFyIHU9M0Qw
LGE9M0RlPQoubGVuZ3RoO3U8YTt1Kyspcz0zRGVbdV0scz5yJiYocj0zRHMpfWVsc2UgdD0zRHAu
aXRlcmF0ZWUodCxuKSxwLmVhY2goZSxmdW49CmN0aW9uKGUsbixzKXtvPTNEdChlLG4scyk7aWYo
bz5pfHxvPTNEPTNEPTNELUluZmluaXR5JiZyPTNEPTNEPTNELUluZmluaXR5KT0Kcj0zRGUsaT0z
RG99KTtyZXR1cm4gcn0scC5taW49M0RmdW5jdGlvbihlLHQsbil7dmFyIHI9M0RJbmZpbml0eSxp
PTNESW5maW5pPQp0eSxzLG87aWYodD0zRD0zRG51bGwmJmUhPTNEbnVsbCl7ZT0zRGUubGVuZ3Ro
PTNEPTNEPTNEK2UubGVuZ3RoP2U6cC52YWx1ZXM9CihlKTtmb3IodmFyIHU9M0QwLGE9M0RlLmxl
bmd0aDt1PGE7dSsrKXM9M0RlW3VdLHM8ciYmKHI9M0RzKX1lbHNlIHQ9M0RwLml0ZT0KcmF0ZWUo
dCxuKSxwLmVhY2goZSxmdW5jdGlvbihlLG4scyl7bz0zRHQoZSxuLHMpO2lmKG88aXx8bz0zRD0z
RD0zREluZmluaXR5PQomJnI9M0Q9M0Q9M0RJbmZpbml0eSlyPTNEZSxpPTNEb30pO3JldHVybiBy
fSxwLnNodWZmbGU9M0RmdW5jdGlvbihlKXt2YXIgdD0KPTNEZSYmZS5sZW5ndGg9M0Q9M0Q9M0Qr
ZS5sZW5ndGg/ZTpwLnZhbHVlcyhlKSxuPTNEdC5sZW5ndGgscj0zREFycmF5KG4pO2ZvPQpyKHZh
ciBpPTNEMCxzO2k8bjtpKyspcz0zRHAucmFuZG9tKDAsaSkscyE9M0Q9M0RpJiYocltpXT0zRHJb
c10pLHJbc109M0R0W2k9Cl07cmV0dXJuIHJ9LHAuc2FtcGxlPTNEZnVuY3Rpb24oZSx0LG4pe3Jl
dHVybiB0PTNEPTNEbnVsbHx8bj8oZS5sZW5ndGghPTNEPQo9M0QrZS5sZW5ndGgmJihlPTNEcC52
YWx1ZXMoZSkpLGVbcC5yYW5kb20oZS5sZW5ndGgtMSldKTpwLnNodWZmbGUoZSkuc2xpY2U9Cigw
LE1hdGgubWF4KDAsdCkpfSxwLnNvcnRCeT0zRGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdD0zRHAu
aXRlcmF0ZWUodCxuKSxwLj0KcGx1Y2socC5tYXAoZSxmdW5jdGlvbihlLG4scil7cmV0dXJue3Zh
bHVlOmUsaW5kZXg6bixjcml0ZXJpYTp0KGUsbixyKX19KS5zPQpvcnQoZnVuY3Rpb24oZSx0KXt2
YXIgbj0zRGUuY3JpdGVyaWEscj0zRHQuY3JpdGVyaWE7aWYobiE9M0Q9M0RyKXtpZihuPnJ8fG49
Cj0zRD0zRD0zRHZvaWQgMClyZXR1cm4gMTtpZihuPHJ8fHI9M0Q9M0Q9M0R2b2lkIDApcmV0dXJu
LTF9cmV0dXJuIGUuaW5kZXgtdD0KLmluZGV4fSksInZhbHVlIil9O3ZhciBtPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXt2YXIgaT0zRHt9O3JlPQp0dXJuIG49M0RwLml0ZXJh
dGVlKG4scikscC5lYWNoKHQsZnVuY3Rpb24ocixzKXt2YXIgbz0zRG4ocixzLHQpO2UoaSxyLG8p
fSk9CixpfX07cC5ncm91cEJ5PTNEbShmdW5jdGlvbihlLHQsbil7cC5oYXMoZSxuKT9lW25dLnB1
c2godCk6ZVtuXT0zRFt0XX0pLHAuaT0KbmRleEJ5PTNEbShmdW5jdGlvbihlLHQsbil7ZVtuXT0z
RHR9KSxwLmNvdW50Qnk9M0RtKGZ1bmN0aW9uKGUsdCxuKXtwLmhhcyhlPQosbik/ZVtuXSsrOmVb
bl09M0QxfSkscC5zb3J0ZWRJbmRleD0zRGZ1bmN0aW9uKGUsdCxuLHIpe249M0RwLml0ZXJhdGVl
KG4sciw9CjEpO3ZhciBpPTNEbih0KSxzPTNEMCxvPTNEZS5sZW5ndGg7d2hpbGUoczxvKXt2YXIg
dT0zRHMrbz4+PjE7bihlW3VdKTxpP3M9Cj0zRHUrMTpvPTNEdX1yZXR1cm4gc30scC50b0FycmF5
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGU/cC5pc0FycmF5KGUpP28uY2FsbD0KKGUpOmUubGVuZ3Ro
PTNEPTNEPTNEK2UubGVuZ3RoP3AubWFwKGUscC5pZGVudGl0eSk6cC52YWx1ZXMoZSk6W119LHAu
c2l6ZT0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGU9M0Q9M0RudWxsPzA6ZS5sZW5ndGg9M0Q9M0Q9
M0QrZS5sZW5ndGg/ZS5sZW5ndGg6cC5rPQpleXMoZSkubGVuZ3RofSxwLnBhcnRpdGlvbj0zRGZ1
bmN0aW9uKGUsdCxuKXt0PTNEcC5pdGVyYXRlZSh0LG4pO3ZhciByPTNEW109CixpPTNEW107cmV0
dXJuIHAuZWFjaChlLGZ1bmN0aW9uKGUsbixzKXsodChlLG4scyk/cjppKS5wdXNoKGUpfSksW3Is
aV19LHAuZj0KaXJzdD0zRHAuaGVhZD0zRHAudGFrZT0zRGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4g
ZT0zRD0zRG51bGw/dm9pZCAwOnQ9M0Q9M0RuPQp1bGx8fG4/ZVswXTp0PDA/W106by5jYWxsKGUs
MCx0KX0scC5pbml0aWFsPTNEZnVuY3Rpb24oZSx0LG4pe3JldHVybiBvLmNhbGw9CihlLDAsTWF0
aC5tYXgoMCxlLmxlbmd0aC0odD0zRD0zRG51bGx8fG4/MTp0KSkpfSxwLmxhc3Q9M0RmdW5jdGlv
bihlLHQsbil7cj0KZXR1cm4gZT0zRD0zRG51bGw/dm9pZCAwOnQ9M0Q9M0RudWxsfHxuP2VbZS5s
ZW5ndGgtMV06by5jYWxsKGUsTWF0aC5tYXgoZS5sPQplbmd0aC10LDApKX0scC5yZXN0PTNEcC50
YWlsPTNEcC5kcm9wPTNEZnVuY3Rpb24oZSx0LG4pe3JldHVybiBvLmNhbGwoZSx0PQo9M0Q9M0Ru
dWxsfHxuPzE6dCl9LHAuY29tcGFjdD0zRGZ1bmN0aW9uKGUpe3JldHVybiBwLmZpbHRlcihlLHAu
aWRlbnRpdHkpfTs9CnZhciBnPTNEZnVuY3Rpb24oZSx0LG4scil7aWYodCYmcC5ldmVyeShlLHAu
aXNBcnJheSkpcmV0dXJuIHUuYXBwbHkocixlKTtmbz0Kcih2YXIgaT0zRDAsbz0zRGUubGVuZ3Ro
O2k8bztpKyspe3ZhciBhPTNEZVtpXTshcC5pc0FycmF5KGEpJiYhcC5pc0FyZ3VtZW50PQpzKGEp
P258fHIucHVzaChhKTp0P3MuYXBwbHkocixhKTpnKGEsdCxuLHIpfXJldHVybiByfTtwLmZsYXR0
ZW49M0RmdW5jdGlvbig9CmUsdCl7cmV0dXJuIGcoZSx0LCExLFtdKX0scC53aXRob3V0PTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIHAuZGlmZmVyZW5jZShlLG8uYz0KYWxsKGFyZ3VtZW50cywxKSl9LHAu
dW5pcT0zRHAudW5pcXVlPTNEZnVuY3Rpb24oZSx0LG4scil7aWYoZT0zRD0zRG51bGwpcmV0PQp1
cm5bXTtwLmlzQm9vbGVhbih0KXx8KHI9M0RuLG49M0R0LHQ9M0QhMSksbiE9M0RudWxsJiYobj0z
RHAuaXRlcmF0ZWUobixyKSk9Cjt2YXIgaT0zRFtdLHM9M0RbXTtmb3IodmFyIG89M0QwLHU9M0Rl
Lmxlbmd0aDtvPHU7bysrKXt2YXIgYT0zRGVbb107aWYodCkoIT0Kb3x8cyE9M0Q9M0RhKSYmaS5w
dXNoKGEpLHM9M0RhO2Vsc2UgaWYobil7dmFyIGY9M0RuKGEsbyxlKTtwLmluZGV4T2YocyxmKTww
PQomJihzLnB1c2goZiksaS5wdXNoKGEpKX1lbHNlIHAuaW5kZXhPZihpLGEpPDAmJmkucHVzaChh
KX1yZXR1cm4gaX0scC51bmlvbj0KPTNEZnVuY3Rpb24oKXtyZXR1cm4gcC51bmlxKGcoYXJndW1l
bnRzLCEwLCEwLFtdKSl9LHAuaW50ZXJzZWN0aW9uPTNEZnVuY3RpPQpvbihlKXtpZihlPTNEPTNE
bnVsbClyZXR1cm5bXTt2YXIgdD0zRFtdLG49M0Rhcmd1bWVudHMubGVuZ3RoO2Zvcih2YXIgcj0z
RDA9CixpPTNEZS5sZW5ndGg7cjxpO3IrKyl7dmFyIHM9M0RlW3JdO2lmKHAuY29udGFpbnModCxz
KSljb250aW51ZTtmb3IodmFyIG89Cj0zRDE7bzxuO28rKylpZighcC5jb250YWlucyhhcmd1bWVu
dHNbb10scykpYnJlYWs7bz0zRD0zRD0zRG4mJnQucHVzaChzKX1yZT0KdHVybiB0fSxwLmRpZmZl
cmVuY2U9M0RmdW5jdGlvbihlKXt2YXIgdD0zRGcoby5jYWxsKGFyZ3VtZW50cywxKSwhMCwhMCxb
XSk7PQpyZXR1cm4gcC5maWx0ZXIoZSxmdW5jdGlvbihlKXtyZXR1cm4hcC5jb250YWlucyh0LGUp
fSl9LHAuemlwPTNEZnVuY3Rpb24oZSk9CntpZihlPTNEPTNEbnVsbClyZXR1cm5bXTt2YXIgdD0z
RHAubWF4KGFyZ3VtZW50cywibGVuZ3RoIikubGVuZ3RoLG49M0RBcnJheT0KKHQpO2Zvcih2YXIg
cj0zRDA7cjx0O3IrKyluW3JdPTNEcC5wbHVjayhhcmd1bWVudHMscik7cmV0dXJuIG59LHAub2Jq
ZWN0PTNEPQpmdW5jdGlvbihlLHQpe2lmKGU9M0Q9M0RudWxsKXJldHVybnt9O3ZhciBuPTNEe307
Zm9yKHZhciByPTNEMCxpPTNEZS5sZW5ndGg9CjtyPGk7cisrKXQ/bltlW3JdXT0zRHRbcl06bltl
W3JdWzBdXT0zRGVbcl1bMV07cmV0dXJuIG59LHAuaW5kZXhPZj0zRGZ1bmN0aT0Kb24oZSx0LG4p
e2lmKGU9M0Q9M0RudWxsKXJldHVybi0xO3ZhciByPTNEMCxpPTNEZS5sZW5ndGg7aWYobil7aWYo
dHlwZW9mIG4hPQo9M0QibnVtYmVyIilyZXR1cm4gcj0zRHAuc29ydGVkSW5kZXgoZSx0KSxlW3Jd
PTNEPTNEPTNEdD9yOi0xO3I9M0RuPDA/TWF0aC49Cm1heCgwLGkrbik6bn1mb3IoO3I8aTtyKysp
aWYoZVtyXT0zRD0zRD0zRHQpcmV0dXJuIHI7cmV0dXJuLTF9LHAubGFzdEluZGV4Tz0KZj0zRGZ1
bmN0aW9uKGUsdCxuKXtpZihlPTNEPTNEbnVsbClyZXR1cm4tMTt2YXIgcj0zRGUubGVuZ3RoO3R5
cGVvZiBuPTNEPTNEPQoibnVtYmVyIiYmKHI9M0RuPDA/cituKzE6TWF0aC5taW4ocixuKzEpKTt3
aGlsZSgtLXI+PTNEMClpZihlW3JdPTNEPTNEPTNEdCk9CnJldHVybiByO3JldHVybi0xfSxwLnJh
bmdlPTNEZnVuY3Rpb24oZSx0LG4pe2FyZ3VtZW50cy5sZW5ndGg8PTNEMSYmKHQ9M0RlfD0KfDAs
ZT0zRDApLG49M0RufHwxO3ZhciByPTNETWF0aC5tYXgoTWF0aC5jZWlsKCh0LWUpL24pLDApLGk9
M0RBcnJheShyKTtmb3IoPQp2YXIgcz0zRDA7czxyO3MrKyxlKz0zRG4paVtzXT0zRGU7cmV0dXJu
IGl9O3ZhciB5PTNEZnVuY3Rpb24oKXt9O3AuYmluZD0zRGY9CnVuY3Rpb24oZSx0KXt2YXIgbixy
O2lmKGgmJmUuYmluZD0zRD0zRD0zRGgpcmV0dXJuIGguYXBwbHkoZSxvLmNhbGwoYXJndW1lbj0K
dHMsMSkpO2lmKCFwLmlzRnVuY3Rpb24oZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQmluZCBtdXN0
IGJlIGNhbGxlZCBvbiBhIGZ1PQpuY3Rpb24iKTtyZXR1cm4gbj0zRG8uY2FsbChhcmd1bWVudHMs
Mikscj0zRGZ1bmN0aW9uKCl7aWYodGhpcyBpbnN0YW5jZW9mIHI9Cil7eS5wcm90b3R5cGU9M0Rl
LnByb3RvdHlwZTt2YXIgaT0zRG5ldyB5O3kucHJvdG90eXBlPTNEbnVsbDt2YXIgcz0zRGUuYXBw
bD0KeShpLG4uY29uY2F0KG8uY2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIHAuaXNPYmplY3Qocyk/
czppfXJldHVybiBlLmFwcGx5KHQsPQpuLmNvbmNhdChvLmNhbGwoYXJndW1lbnRzKSkpfSxyfSxw
LnBhcnRpYWw9M0RmdW5jdGlvbihlKXt2YXIgdD0zRG8uY2FsbChhcmc9CnVtZW50cywxKTtyZXR1
cm4gZnVuY3Rpb24oKXt2YXIgbj0zRDAscj0zRHQuc2xpY2UoKTtmb3IodmFyIGk9M0QwLHM9M0Ry
Lmxlbj0KZ3RoO2k8cztpKyspcltpXT0zRD0zRD0zRHAmJihyW2ldPTNEYXJndW1lbnRzW24rK10p
O3doaWxlKG48YXJndW1lbnRzLmxlbmd0PQpoKXIucHVzaChhcmd1bWVudHNbbisrXSk7cmV0dXJu
IGUuYXBwbHkodGhpcyxyKX19LHAuYmluZEFsbD0zRGZ1bmN0aW9uKGUpe3Y9CmFyIHQsbj0zRGFy
Z3VtZW50cy5sZW5ndGgscjtpZihuPD0zRDEpdGhyb3cgbmV3IEVycm9yKCJiaW5kQWxsIG11c3Qg
YmUgcGFzcz0KZWQgZnVuY3Rpb24gbmFtZXMiKTtmb3IodD0zRDE7dDxuO3QrKylyPTNEYXJndW1l
bnRzW3RdLGVbcl09M0RwLmJpbmQoZVtyXSxlPQopO3JldHVybiBlfSxwLm1lbW9pemU9M0RmdW5j
dGlvbihlLHQpe3ZhciBuPTNEZnVuY3Rpb24ocil7dmFyIGk9M0RuLmNhY2hlLHM9Cj0zRHQ/dC5h
cHBseSh0aGlzLGFyZ3VtZW50cyk6cjtyZXR1cm4gcC5oYXMoaSxzKXx8KGlbc109M0RlLmFwcGx5
KHRoaXMsYXJndT0KbWVudHMpKSxpW3NdfTtyZXR1cm4gbi5jYWNoZT0zRHt9LG59LHAuZGVsYXk9
M0RmdW5jdGlvbihlLHQpe3ZhciBuPTNEby5jYWxsPQooYXJndW1lbnRzLDIpO3JldHVybiBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkobnVsbCxuKX0sdCl9LHAuZGU9CmZlcj0z
RGZ1bmN0aW9uKGUpe3JldHVybiBwLmRlbGF5LmFwcGx5KHAsW2UsMV0uY29uY2F0KG8uY2FsbChh
cmd1bWVudHMsMSkpKT0KfSxwLnRocm90dGxlPTNEZnVuY3Rpb24oZSx0LG4pe3ZhciByLGkscyxv
PTNEbnVsbCx1PTNEMDtufHwobj0zRHt9KTt2YXIgYT0KPTNEZnVuY3Rpb24oKXt1PTNEbi5sZWFk
aW5nPTNEPTNEPTNEITE/MDpwLm5vdygpLG89M0RudWxsLHM9M0RlLmFwcGx5KHIsaSksPQpvfHwo
cj0zRGk9M0RudWxsKX07cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGY9M0RwLm5vdygpOyF1JiZuLmxl
YWRpbmc9M0Q9M0Q9M0Q9CiExJiYodT0zRGYpO3ZhciBsPTNEdC0oZi11KTtyZXR1cm4gcj0zRHRo
aXMsaT0zRGFyZ3VtZW50cyxsPD0zRDB8fGw+dD8oY2xlYT0KclRpbWVvdXQobyksbz0zRG51bGws
dT0zRGYscz0zRGUuYXBwbHkocixpKSxvfHwocj0zRGk9M0RudWxsKSk6IW8mJm4udHJhaWxpPQpu
ZyE9M0Q9M0QhMSYmKG89M0RzZXRUaW1lb3V0KGEsbCkpLHN9fSxwLmRlYm91bmNlPTNEZnVuY3Rp
b24oZSx0LG4pe3ZhciByLGk9CixzLG8sdSxhPTNEZnVuY3Rpb24oKXt2YXIgZj0zRHAubm93KCkt
bztmPHQmJmY+MD9yPTNEc2V0VGltZW91dChhLHQtZik6KHI9Cj0zRG51bGwsbnx8KHU9M0RlLmFw
cGx5KHMsaSkscnx8KHM9M0RpPTNEbnVsbCkpKX07cmV0dXJuIGZ1bmN0aW9uKCl7cz0zRHRoaT0K
cyxpPTNEYXJndW1lbnRzLG89M0RwLm5vdygpO3ZhciBmPTNEbiYmIXI7cmV0dXJuIHJ8fChyPTNE
c2V0VGltZW91dChhLHQpKSxmPQomJih1PTNEZS5hcHBseShzLGkpLHM9M0RpPTNEbnVsbCksdX19
LHAud3JhcD0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAucGFydGk9CmFsKHQsZSl9LHAubmVnYXRl
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIWUuYXBwbHkodGhpcyxhcmd1
bT0KZW50cyl9fSxwLmNvbXBvc2U9M0RmdW5jdGlvbigpe3ZhciBlPTNEYXJndW1lbnRzLHQ9M0Rl
Lmxlbmd0aC0xO3JldHVybiBmdW5jPQp0aW9uKCl7dmFyIG49M0R0LHI9M0RlW3RdLmFwcGx5KHRo
aXMsYXJndW1lbnRzKTt3aGlsZShuLS0pcj0zRGVbbl0uY2FsbCh0aGk9CnMscik7cmV0dXJuIHJ9
fSxwLmFmdGVyPTNEZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtpZigtLWU8MSlyZXR1
cm4gdD0KLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19LHAuYmVmb3JlPTNEZnVuY3Rpb24oZSx0KXt2
YXIgbjtyZXR1cm4gZnVuY3Rpb24oKXtyPQpldHVybi0tZT4wP249M0R0LmFwcGx5KHRoaXMsYXJn
dW1lbnRzKTp0PTNEbnVsbCxufX0scC5vbmNlPTNEcC5wYXJ0aWFsKHAuYmU9CmZvcmUsMikscC5r
ZXlzPTNEZnVuY3Rpb24oZSl7aWYoIXAuaXNPYmplY3QoZSkpcmV0dXJuW107aWYoYylyZXR1cm4g
YyhlKTt2YT0KciB0PTNEW107Zm9yKHZhciBuIGluIGUpcC5oYXMoZSxuKSYmdC5wdXNoKG4pO3Jl
dHVybiB0fSxwLnZhbHVlcz0zRGZ1bmN0aW9uPQooZSl7dmFyIHQ9M0RwLmtleXMoZSksbj0zRHQu
bGVuZ3RoLHI9M0RBcnJheShuKTtmb3IodmFyIGk9M0QwO2k8bjtpKyspcltpXT0KPTNEZVt0W2ld
XTtyZXR1cm4gcn0scC5wYWlycz0zRGZ1bmN0aW9uKGUpe3ZhciB0PTNEcC5rZXlzKGUpLG49M0R0
Lmxlbmd0aCxyPQo9M0RBcnJheShuKTtmb3IodmFyIGk9M0QwO2k8bjtpKyspcltpXT0zRFt0W2ld
LGVbdFtpXV1dO3JldHVybiByfSxwLmludmVydD0KPTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0R7fSxu
PTNEcC5rZXlzKGUpO2Zvcih2YXIgcj0zRDAsaT0zRG4ubGVuZ3RoO3I8aTtyKyspPQp0W2Vbblty
XV1dPTNEbltyXTtyZXR1cm4gdH0scC5mdW5jdGlvbnM9M0RwLm1ldGhvZHM9M0RmdW5jdGlvbihl
KXt2YXIgdD0zRFs9Cl07Zm9yKHZhciBuIGluIGUpcC5pc0Z1bmN0aW9uKGVbbl0pJiZ0LnB1c2go
bik7cmV0dXJuIHQuc29ydCgpfSxwLmV4dGVuZD0zRD0KZnVuY3Rpb24oZSl7aWYoIXAuaXNPYmpl
Y3QoZSkpcmV0dXJuIGU7dmFyIHQsbjtmb3IodmFyIHI9M0QxLGk9M0Rhcmd1bWVudHMuPQpsZW5n
dGg7cjxpO3IrKyl7dD0zRGFyZ3VtZW50c1tyXTtmb3IobiBpbiB0KWYuY2FsbCh0LG4pJiYoZVtu
XT0zRHRbbl0pfXJldHU9CnJuIGV9LHAucGljaz0zRGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0zRHt9
LGk7aWYoZT0zRD0zRG51bGwpcmV0dXJuIHI7aWYocC5pcz0KRnVuY3Rpb24odCkpe3Q9M0RkKHQs
bik7Zm9yKGkgaW4gZSl7dmFyIHM9M0RlW2ldO3QocyxpLGUpJiYocltpXT0zRHMpfX1lbHNlPQp7
dmFyIGE9M0R1LmFwcGx5KFtdLG8uY2FsbChhcmd1bWVudHMsMSkpO2U9M0RuZXcgT2JqZWN0KGUp
O2Zvcih2YXIgZj0zRDAsbD0KPTNEYS5sZW5ndGg7ZjxsO2YrKylpPTNEYVtmXSxpIGluIGUmJihy
W2ldPTNEZVtpXSl9cmV0dXJuIHJ9LHAub21pdD0zRGZ1bmN0PQppb24oZSx0LG4pe2lmKHAuaXNG
dW5jdGlvbih0KSl0PTNEcC5uZWdhdGUodCk7ZWxzZXt2YXIgcj0zRHAubWFwKHUuYXBwbHkoW109
CixvLmNhbGwoYXJndW1lbnRzLDEpKSxTdHJpbmcpO3Q9M0RmdW5jdGlvbihlLHQpe3JldHVybiFw
LmNvbnRhaW5zKHIsdCl9fXJldD0KdXJuIHAucGljayhlLHQsbil9LHAuZGVmYXVsdHM9M0RmdW5j
dGlvbihlKXtpZighcC5pc09iamVjdChlKSlyZXR1cm4gZTtmb3IoPQp2YXIgdD0zRDEsbj0zRGFy
Z3VtZW50cy5sZW5ndGg7dDxuO3QrKyl7dmFyIHI9M0Rhcmd1bWVudHNbdF07Zm9yKHZhciBpIGlu
IHI9CillW2ldPTNEPTNEPTNEdm9pZCAwJiYoZVtpXT0zRHJbaV0pfXJldHVybiBlfSxwLmNsb25l
PTNEZnVuY3Rpb24oZSl7cmV0dXJuID0KcC5pc09iamVjdChlKT9wLmlzQXJyYXkoZSk/ZS5zbGlj
ZSgpOnAuZXh0ZW5kKHt9LGUpOmV9LHAudGFwPTNEZnVuY3Rpb24oZSx0PQope3JldHVybiB0KGUp
LGV9O3ZhciBiPTNEZnVuY3Rpb24oZSx0LG4scil7aWYoZT0zRD0zRD0zRHQpcmV0dXJuIGUhPTNE
PTNEMHw9CnwxL2U9M0Q9M0Q9M0QxL3Q7aWYoZT0zRD0zRG51bGx8fHQ9M0Q9M0RudWxsKXJldHVy
biBlPTNEPTNEPTNEdDtlIGluc3RhbmNlbz0KZiBwJiYoZT0zRGUuX3dyYXBwZWQpLHQgaW5zdGFu
Y2VvZiBwJiYodD0zRHQuX3dyYXBwZWQpO3ZhciBpPTNEYS5jYWxsKGUpO2lmPQooaSE9M0Q9M0Rh
LmNhbGwodCkpcmV0dXJuITE7c3dpdGNoKGkpe2Nhc2UiW29iamVjdCBSZWdFeHBdIjpjYXNlIltv
YmplY3QgU3Q9CnJpbmddIjpyZXR1cm4iIitlPTNEPTNEIiIrdDtjYXNlIltvYmplY3QgTnVtYmVy
XSI6aWYoK2UhPTNEPTNEK2UpcmV0dXJuK3QhPQo9M0Q9M0QrdDtyZXR1cm4rZT0zRD0zRD0zRDA/
MS8rZT0zRD0zRD0zRDEvdDorZT0zRD0zRD0zRCt0O2Nhc2UiW29iamVjdCBEYXQ9CmVdIjpjYXNl
IltvYmplY3QgQm9vbGVhbl0iOnJldHVybitlPTNEPTNEPTNEK3R9aWYodHlwZW9mIGUhPTNEIm9i
amVjdCJ8fHR5cD0KZW9mIHQhPTNEIm9iamVjdCIpcmV0dXJuITE7dmFyIHM9M0RuLmxlbmd0aDt3
aGlsZShzLS0paWYobltzXT0zRD0zRD0zRGUpcmV0PQp1cm4gcltzXT0zRD0zRD0zRHQ7dmFyIG89
M0RlLmNvbnN0cnVjdG9yLHU9M0R0LmNvbnN0cnVjdG9yO2lmKG8hPTNEPTNEdSYmImM9Cm9uc3Ry
dWN0b3IiaW4gZSYmImNvbnN0cnVjdG9yImluIHQmJiEocC5pc0Z1bmN0aW9uKG8pJiZvIGluc3Rh
bmNlb2YgbyYmcC5pcz0KRnVuY3Rpb24odSkmJnUgaW5zdGFuY2VvZiB1KSlyZXR1cm4hMTtuLnB1
c2goZSksci5wdXNoKHQpO3ZhciBmLGw7aWYoaT0zRD0KPTNEPTNEIltvYmplY3QgQXJyYXldIil7
Zj0zRGUubGVuZ3RoLGw9M0RmPTNEPTNEPTNEdC5sZW5ndGg7aWYobCl3aGlsZShmLS0pPQppZigh
KGw9M0RiKGVbZl0sdFtmXSxuLHIpKSlicmVha31lbHNle3ZhciBjPTNEcC5rZXlzKGUpLGg7Zj0z
RGMubGVuZ3RoLGw9M0Q9CnAua2V5cyh0KS5sZW5ndGg9M0Q9M0Q9M0RmO2lmKGwpd2hpbGUoZi0t
KXtoPTNEY1tmXTtpZighKGw9M0RwLmhhcyh0LGgpJiZiKD0KZVtoXSx0W2hdLG4scikpKWJyZWFr
fX1yZXR1cm4gbi5wb3AoKSxyLnBvcCgpLGx9O3AuaXNFcXVhbD0zRGZ1bmN0aW9uKGUsdCl7PQpy
ZXR1cm4gYihlLHQsW10sW10pfSxwLmlzRW1wdHk9M0RmdW5jdGlvbihlKXtpZihlPTNEPTNEbnVs
bClyZXR1cm4hMDtpZihwLmk9CnNBcnJheShlKXx8cC5pc1N0cmluZyhlKXx8cC5pc0FyZ3VtZW50
cyhlKSlyZXR1cm4gZS5sZW5ndGg9M0Q9M0Q9M0QwO2Zvcih2YT0KciB0IGluIGUpaWYocC5oYXMo
ZSx0KSlyZXR1cm4hMTtyZXR1cm4hMH0scC5pc0VsZW1lbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4h
PQohZSYmZS5ub2RlVHlwZT0zRD0zRD0zRDF9LHAuaXNBcnJheT0zRGx8fGZ1bmN0aW9uKGUpe3Jl
dHVybiBhLmNhbGwoZSk9M0Q9M0Q9Cj0zRCJbb2JqZWN0IEFycmF5XSJ9LHAuaXNPYmplY3Q9M0Rm
dW5jdGlvbihlKXt2YXIgdD0zRHR5cGVvZiBlO3JldHVybiB0PTNEPQo9M0Q9M0QiZnVuY3Rpb24i
fHx0PTNEPTNEPTNEIm9iamVjdCImJiEhZX0scC5lYWNoKFsiQXJndW1lbnRzIiwiRnVuY3Rpb24i
LCI9ClN0cmluZyIsIk51bWJlciIsIkRhdGUiLCJSZWdFeHAiXSxmdW5jdGlvbihlKXtwWyJpcyIr
ZV09M0RmdW5jdGlvbih0KXtyZXR1cj0KbiBhLmNhbGwodCk9M0Q9M0Q9M0QiW29iamVjdCAiK2Ur
Il0ifX0pLHAuaXNBcmd1bWVudHMoYXJndW1lbnRzKXx8KHAuaXNBcmd1PQptZW50cz0zRGZ1bmN0
aW9uKGUpe3JldHVybiBwLmhhcyhlLCJjYWxsZWUiKX0pLHR5cGVvZiAvLi8hPTNEImZ1bmN0aW9u
IiYmKHA9Ci5pc0Z1bmN0aW9uPTNEZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPTNEPTNEImZ1
bmN0aW9uInx8ITF9KSxwLmlzRmluaXRlPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gaXNGaW5pdGUo
ZSkmJiFpc05hTihwYXJzZUZsb2F0KGUpKX0scC5pc05hTj0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJu
IHAuaXNOdW1iZXIoZSkmJmUhPTNEPTNEK2V9LHAuaXNCb29sZWFuPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGU9Cj0zRD0zRD0zRCEwfHxlPTNEPTNEPTNEITF8fGEuY2FsbChlKT0zRD0zRD0zRCJbb2Jq
ZWN0IEJvb2xlYW5dIn0scC5pc051bGw9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBlPTNEPTNEPTNE
bnVsbH0scC5pc1VuZGVmaW5lZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBlPQo9M0Q9M0Q9M0R2b2lk
IDB9LHAuaGFzPTNEZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSE9M0RudWxsJiZmLmNhbGwoZSx0KX0s
cC5ub0M9Cm9uZmxpY3Q9M0RmdW5jdGlvbigpe3JldHVybiBlLl89M0R0LHRoaXN9LHAuaWRlbnRp
dHk9M0RmdW5jdGlvbihlKXtyZXR1cm4gZT0KfSxwLmNvbnN0YW50PTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fSxwLm5vb3A9M0RmdW5jdGlvbigpPQp7fSxwLnByb3Bl
cnR5PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0W2VdfX0scC5tYXRj
aGVzPTNEZnU9Cm5jdGlvbihlKXt2YXIgdD0zRHAucGFpcnMoZSksbj0zRHQubGVuZ3RoO3JldHVy
biBmdW5jdGlvbihlKXtpZihlPTNEPTNEbnVsbD0KKXJldHVybiFuO2U9M0RuZXcgT2JqZWN0KGUp
O2Zvcih2YXIgcj0zRDA7cjxuO3IrKyl7dmFyIGk9M0R0W3JdLHM9M0RpWzBdO2lmPQooaVsxXSE9
M0Q9M0RlW3NdfHwhKHMgaW4gZSkpcmV0dXJuITF9cmV0dXJuITB9fSxwLnRpbWVzPTNEZnVuY3Rp
b24oZSx0LG4pe3Y9CmFyIHI9M0RBcnJheShNYXRoLm1heCgwLGUpKTt0PTNEZCh0LG4sMSk7Zm9y
KHZhciBpPTNEMDtpPGU7aSsrKXJbaV09M0R0KGkpOz0KcmV0dXJuIHJ9LHAucmFuZG9tPTNEZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gdD0zRD0zRG51bGwmJih0PTNEZSxlPTNEMCksZStNYXRoPQouZmxv
b3IoTWF0aC5yYW5kb20oKSoodC1lKzEpKX0scC5ub3c9M0REYXRlLm5vd3x8ZnVuY3Rpb24oKXty
ZXR1cm4obmV3IERhdGU9CikuZ2V0VGltZSgpfTt2YXIgdz0zRHsiJiI6IiZhbXA7IiwiPCI6IiZs
dDsiLCI+IjoiJmd0OyIsJyInOiImcXVvdDsiLCInIjoiJj0KI3gyNzsiLCJgIjoiJiN4NjA7In0s
RT0zRHAuaW52ZXJ0KHcpLFM9M0RmdW5jdGlvbihlKXt2YXIgdD0zRGZ1bmN0aW9uKHQpe3JlPQp0
dXJuIGVbdF19LG49M0QiKD86IitwLmtleXMoZSkuam9pbigifCIpKyIpIixyPTNEUmVnRXhwKG4p
LGk9M0RSZWdFeHAobiwiZyI9Cik7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlPTNEZT0zRD0z
RG51bGw/IiI6IiIrZSxyLnRlc3QoZSk/ZS5yZXBsYWNlKGksdD0KKTplfX07cC5lc2NhcGU9M0RT
KHcpLHAudW5lc2NhcGU9M0RTKEUpLHAucmVzdWx0PTNEZnVuY3Rpb24oZSx0KXtpZihlPTNEPTNE
PQpudWxsKXJldHVybiB2b2lkIDA7dmFyIG49M0RlW3RdO3JldHVybiBwLmlzRnVuY3Rpb24obik/
ZVt0XSgpOm59O3ZhciB4PTNEMDs9CnAudW5pcXVlSWQ9M0RmdW5jdGlvbihlKXt2YXIgdD0zRCsr
eCsiIjtyZXR1cm4gZT9lK3Q6dH0scC50ZW1wbGF0ZVNldHRpbmdzPQo9M0R7ZXZhbHVhdGU6Lzwl
KFtcc1xTXSs/KSU+L2csaW50ZXJwb2xhdGU6LzwlPTNEKFtcc1xTXSs/KSU+L2csZXNjYXBlOi88
JS09CihbXHNcU10rPyklPi9nfTt2YXIgVD0zRC8oLileLyxOPTNEeyInIjoiJyIsIlxcIjoiXFwi
LCJcciI6InIiLCJcbiI6Im4iLCJcdT0KMjAyOCI6InUyMDI4IiwiXHUyMDI5IjoidTIwMjkifSxD
PTNEL1xcfCd8XHJ8XG58XHUyMDI4fFx1MjAyOS9nLGs9M0RmdW5jdGlvPQpuKGUpe3JldHVybiJc
XCIrTltlXX07cC50ZW1wbGF0ZT0zRGZ1bmN0aW9uKGUsdCxuKXshdCYmbiYmKHQ9M0RuKSx0PTNE
cC5kZWY9CmF1bHRzKHt9LHQscC50ZW1wbGF0ZVNldHRpbmdzKTt2YXIgcj0zRFJlZ0V4cChbKHQu
ZXNjYXBlfHxUKS5zb3VyY2UsKHQuaW50ZT0KcnBvbGF0ZXx8VCkuc291cmNlLCh0LmV2YWx1YXRl
fHxUKS5zb3VyY2VdLmpvaW4oInwiKSsifCQiLCJnIiksaT0zRDAscz0zRCJfPQpfcCs9M0QnIjtl
LnJlcGxhY2UocixmdW5jdGlvbih0LG4scixvLHUpe3JldHVybiBzKz0zRGUuc2xpY2UoaSx1KS5y
ZXBsYWNlKEM9CixrKSxpPTNEdSt0Lmxlbmd0aCxuP3MrPTNEIicrXG4oKF9fdD0zRCgiK24rIikp
PTNEPTNEbnVsbD8nJzpfLmVzY2FwZShfX3QpKT0KK1xuJyI6cj9zKz0zRCInK1xuKChfX3Q9M0Qo
IityKyIpKT0zRD0zRG51bGw/Jyc6X190KStcbiciOm8mJihzKz0zRCInO1xuIitvPQorIlxuX19w
Kz0zRCciKSx0fSkscys9M0QiJztcbiIsdC52YXJpYWJsZXx8KHM9M0Qid2l0aChvYmp8fHt9KXtc
biIrcysifVxuIik9CixzPTNEInZhciBfX3QsX19wPTNEJycsX19qPTNEQXJyYXkucHJvdG90eXBl
LmpvaW4scHJpbnQ9M0RmdW5jdGlvbigpe19fcCs9Cj0zRF9fai5jYWxsKGFyZ3VtZW50cywnJyk7
fTtcbiIrcysicmV0dXJuIF9fcDtcbiI7dHJ5e3ZhciBvPTNEbmV3IEZ1bmN0aW9uKD0KdC52YXJp
YWJsZXx8Im9iaiIsIl8iLHMpfWNhdGNoKHUpe3Rocm93IHUuc291cmNlPTNEcyx1fXZhciBhPTNE
ZnVuY3Rpb24oZSl7PQpyZXR1cm4gby5jYWxsKHRoaXMsZSxwKX0sZj0zRHQudmFyaWFibGV8fCJv
YmoiO3JldHVybiBhLnNvdXJjZT0zRCJmdW5jdGlvbig9CiIrZisiKXtcbiIrcysifSIsYX0scC5j
aGFpbj0zRGZ1bmN0aW9uKGUpe3ZhciB0PTNEcChlKTtyZXR1cm4gdC5fY2hhaW49M0QhMD0KLHR9
O3ZhciBMPTNEZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX2NoYWluP3AoZSkuY2hhaW4oKTplfTtw
Lm1peGluPTNEZnVuY3RpPQpvbihlKXtwLmVhY2gocC5mdW5jdGlvbnMoZSksZnVuY3Rpb24odCl7
dmFyIG49M0RwW3RdPTNEZVt0XTtwLnByb3RvdHlwZVt0XT0KPTNEZnVuY3Rpb24oKXt2YXIgZT0z
RFt0aGlzLl93cmFwcGVkXTtyZXR1cm4gcy5hcHBseShlLGFyZ3VtZW50cyksTC5jYWxsKHRoPQpp
cyxuLmFwcGx5KHAsZSkpfX0pfSxwLm1peGluKHApLHAuZWFjaChbInBvcCIsInB1c2giLCJyZXZl
cnNlIiwic2hpZnQiLCJzb3I9CnQiLCJzcGxpY2UiLCJ1bnNoaWZ0Il0sZnVuY3Rpb24oZSl7dmFy
IHQ9M0RuW2VdO3AucHJvdG90eXBlW2VdPTNEZnVuY3Rpb24oKT0Ke3ZhciBuPTNEdGhpcy5fd3Jh
cHBlZDtyZXR1cm4gdC5hcHBseShuLGFyZ3VtZW50cyksKGU9M0Q9M0Q9M0Qic2hpZnQifHxlPTNE
PQo9M0Q9M0Qic3BsaWNlIikmJm4ubGVuZ3RoPTNEPTNEPTNEMCYmZGVsZXRlIG5bMF0sTC5jYWxs
KHRoaXMsbil9fSkscC5lYWNoKFs9CiJjb25jYXQiLCJqb2luIiwic2xpY2UiXSxmdW5jdGlvbihl
KXt2YXIgdD0zRG5bZV07cC5wcm90b3R5cGVbZV09M0RmdW5jdGlvbj0KKCl7cmV0dXJuIEwuY2Fs
bCh0aGlzLHQuYXBwbHkodGhpcy5fd3JhcHBlZCxhcmd1bWVudHMpKX19KSxwLnByb3RvdHlwZS52
YWx1PQplPTNEZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd3JhcHBlZH0sdHlwZW9mIGRlZmluZT0z
RD0zRCJmdW5jdGlvbiImJmRlZmluZS49CmFtZCYmZGVmaW5lKCJ1bmRlcnNjb3JlIixbXSxmdW5j
dGlvbigpe3JldHVybiBwfSl9LmNhbGwodGhpcyksZGVmaW5lKCJsaWJzLz0KdW5kZXJzY29yZSIs
ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQsbjtyZXR1cm4gdHx8ZS5ffX0odGhp
cykpLGRlPQpmaW5lKCJ1dGlscy91dGlscyIsWyJsaWJzL3VuZGVyc2NvcmUiXSxmdW5jdGlvbihl
KXtmdW5jdGlvbiB0KGUpe3JldHVybiAkKCI9CjxkaXYvPiIpLnRleHQoZSkuaHRtbCgpfWZ1bmN0
aW9uIG4oZSl7ZSBpbnN0YW5jZW9mIEFycmF5fHwoZT0zRFtlXSk7Zm9yKHZhcj0KIHQgaW4gZSlp
ZihbIk5vbmUiLG51bGwsIm51bGwiLHVuZGVmaW5lZCwidW5kZWZpbmVkIl0uaW5kZXhPZihlW3Rd
KT4tMSlyZXR1PQpybiExO3JldHVybiEwfWZ1bmN0aW9uIHIoZSl7dmFyIGU9M0RlLnRvU3RyaW5n
KCk7aWYoZSl7ZT0zRGUucmVwbGFjZSgvLC9nLCI9CiwgIik7dmFyIHQ9M0RlLmxhc3RJbmRleE9m
KCIsICIpO3JldHVybiB0IT0zRC0xJiYoZT0zRGUuc3Vic3RyKDAsdCkrIiBvciAiKz0KZS5zdWJz
dHIodCsxKSksZX1yZXR1cm4iIn1mdW5jdGlvbiBpKGUpe3RvcC5fX3V0aWxzX19nZXRfXz0zRHRv
cC5fX3V0aWxzX19nPQpldF9ffHx7fSxlLmNhY2hlJiZ0b3AuX191dGlsc19fZ2V0X19bZS51cmxd
PyhlLnN1Y2Nlc3MmJmUuc3VjY2Vzcyh0b3AuX191dGk9CmxzX19nZXRfX1tlLnVybF0pLGNvbnNv
bGUuZGVidWcoInV0aWxzLmpzOjpnZXQoKSAtIEZldGNoaW5nIGZyb20gY2FjaGUgWyIrZT0KLnVy
bCsiXS4iKSk6cyh7dXJsOmUudXJsLGRhdGE6ZS5kYXRhLHN1Y2Nlc3M6ZnVuY3Rpb24odCl7dG9w
Ll9fdXRpbHNfX2dldF9fPQpbZS51cmxdPTNEdCxlLnN1Y2Nlc3MmJmUuc3VjY2Vzcyh0KX0sZXJy
b3I6ZnVuY3Rpb24odCl7ZS5lcnJvciYmZS5lcnJvcih0KX09Cn0pfWZ1bmN0aW9uIHMoZSl7dmFy
IHQ9M0R7Y29udGVudFR5cGU6ImFwcGxpY2F0aW9uL2pzb24iLHR5cGU6ZS50eXBlfHwiR0VUIj0K
LGRhdGE6ZS5kYXRhfHx7fSx1cmw6ZS51cmx9O3QudHlwZT0zRD0zRCJHRVQifHx0LnR5cGU9M0Q9
M0QiREVMRVRFIj8odC51cmwuPQppbmRleE9mKCI/Iik9M0Q9M0QtMT90LnVybCs9M0QiPyI6dC51
cmwrPTNEIiYiLHQudXJsPTNEdC51cmwrJC5wYXJhbSh0LmRhdGE9CiksdC5kYXRhPTNEbnVsbCk6
KHQuZGF0YVR5cGU9M0QianNvbiIsdC51cmw9M0R0LnVybCx0LmRhdGE9M0RKU09OLnN0cmluZ2lm
eT0KKHQuZGF0YSkpLCQuYWpheCh0KS5kb25lKGZ1bmN0aW9uKHQpe2lmKHR5cGVvZiB0PTNEPTNE
InN0cmluZyIpdHJ5e3Q9M0R0LnJlPQpwbGFjZSgiSW5maW5pdHksIiwnIkluZmluaXR5IiwnKSx0
PTNEalF1ZXJ5LnBhcnNlSlNPTih0KX1jYXRjaChuKXtjb25zb2xlLmQ9CmVidWcobil9ZS5zdWNj
ZXNzJiZlLnN1Y2Nlc3ModCl9KS5mYWlsKGZ1bmN0aW9uKHQpe3ZhciBuPTNEbnVsbDt0cnl7bj0z
RGpRdT0KZXJ5LnBhcnNlSlNPTih0LnJlc3BvbnNlVGV4dCl9Y2F0Y2gocil7bj0zRHQucmVzcG9u
c2VUZXh0fWUuZXJyb3ImJmUuZXJyb3IoPQpuLHQpfSl9ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPTNE
JCgnPGRpdiBjbGFzcz0zRCInK2UrJyI+PC9kaXY+Jyk7bi5hcHBlbmRUbyg9CiI6ZXEoMCkiKTt2
YXIgcj0zRG4uY3NzKHQpO3JldHVybiBuLnJlbW92ZSgpLHJ9ZnVuY3Rpb24gdShlKXskKCdsaW5r
W2hyZWZePQo9M0QiJytlKyciXScpLmxlbmd0aHx8JCgnPGxpbmsgaHJlZj0zRCInK2dhbGF4eV9j
b25maWcucm9vdCtlKyciIHJlbD0zRCJzdHk9Cmxlc2hlZXQiPicpLmFwcGVuZFRvKCJoZWFkIil9
ZnVuY3Rpb24gYSh0LG4pe3JldHVybiB0P2UuZGVmYXVsdHModCxuKTpufWZ1bj0KY3Rpb24gZihl
LHQpe3ZhciBuPTNEIiI7aWYoZT49M0QxZTExKWUvPTNEMWUxMSxuPTNEIlRCIjtlbHNlIGlmKGU+
PTNEMWU4KWUvPQo9M0QxZTgsbj0zRCJHQiI7ZWxzZSBpZihlPj0zRDFlNSllLz0zRDFlNSxuPTNE
Ik1CIjtlbHNlIGlmKGU+PTNEMTAwKWUvPTNEMTA9CjAsbj0zRCJLQiI7ZWxzZXtpZighKGU+MCkp
cmV0dXJuIjxzdHJvbmc+LTwvc3Ryb25nPiI7ZSo9M0QxMCxuPTNEImIifXZhciByPQo9M0RNYXRo
LnJvdW5kKGUpLzEwO3JldHVybiB0P3IrIiAiK246IjxzdHJvbmc+IityKyI8L3N0cm9uZz4gIitu
fWZ1bmN0aW9uIGw9Cigpe3JldHVybiJ4IitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJz
dHJpbmcoMiw5KX1mdW5jdGlvbiBjKGUpe3ZhciB0PQo9M0QkKCI8cD48L3A+Iik7cmV0dXJuIHQu
YXBwZW5kKGUpLHR9ZnVuY3Rpb24gaCgpe3ZhciBlPTNEbmV3IERhdGUsdD0zRChlLmc9CmV0SG91
cnMoKTwxMD8iMCI6IiIpK2UuZ2V0SG91cnMoKSxuPTNEKGUuZ2V0TWludXRlcygpPDEwPyIwIjoi
IikrZS5nZXRNaW51dD0KZXMoKSxyPTNEZS5nZXREYXRlKCkrIi8iKyhlLmdldE1vbnRoKCkrMSkr
Ii8iK2UuZ2V0RnVsbFllYXIoKSsiLCAiK3QrIjoiK247PQpyZXR1cm4gcn1yZXR1cm57Y3NzTG9h
ZEZpbGU6dSxjc3NHZXRBdHRyaWJ1dGU6byxnZXQ6aSxtZXJnZTphLGJ5dGVzVG9TdHJpbmc9Cjpm
LHV1aWQ6bCx0aW1lOmgsd3JhcDpjLHJlcXVlc3Q6cyxzYW5pdGl6ZTp0LHRleHRpZnk6cix2YWxp
ZGF0ZTpufX0pLGRlZmluZT0KKCJtdmMvdWkvdWktcG9ydGxldCIsWyJ1dGlscy91dGlscyJdLGZ1
bmN0aW9uKGUpe3ZhciB0PTNEQmFja2JvbmUuVmlldy5leHRlPQpuZCh7dmlzaWJsZTohMSxvcHRp
b25zRGVmYXVsdDp7dGl0bGU6IiIsaWNvbjoiIixidXR0b25zOm51bGwsYm9keTpudWxsLHNjcm89
CmxsYWJsZTohMCxub3BhZGRpbmc6ITEsb3BlcmF0aW9uczpudWxsLHBsYWNlbWVudDoiYm90dG9t
IixjbHM6InVpLXBvcnRsZXQiLD0Kb3BlcmF0aW9uc19mbHQ6InJpZ2h0In0sJHRpdGxlOm51bGws
JGNvbnRlbnQ6bnVsbCwkYnV0dG9uczpudWxsLCRvcGVyYXRpb25zPQo6bnVsbCwkaGVhZGVyOm51
bGwsaW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5v
cHQ9CmlvbnNEZWZhdWx0KSx0aGlzLnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRp
b25zKSksdGhpcy4kY29udGVudD0zRD0KdGhpcy4kZWwuZmluZCgiLmNvbnRlbnQiKSx0aGlzLiR0
aXRsZT0zRHRoaXMuJGVsLmZpbmQoIi5wb3J0bGV0LXRpdGxlLXRleHQiPQopLHRoaXMuJGhlYWRl
cj0zRHRoaXMuJGVsLmZpbmQoIi5wb3J0bGV0LWhlYWRlciIpO3ZhciBuPTNEdGhpcy4kZWwuZmlu
ZCgiLnA9Cm9ydGxldC1jb250ZW50Iik7dGhpcy5vcHRpb25zLnNjcm9sbGFibGU/bi5hZGRDbGFz
cygic2Nyb2xsIik6dGhpcy5vcHRpb25zLj0KdGl0bGU/bi5hZGRDbGFzcygibm8tc2Nyb2xsIik6
bi5hZGRDbGFzcygibm8tc2Nyb2xsLW5vLXRpdGxlIiksdGhpcy5vcHRpb25zPQoubm9wYWRkaW5n
JiYobi5jc3MoInBhZGRpbmciLCIwcHgiKSx0aGlzLiRjb250ZW50LmNzcygicGFkZGluZyIsIjBw
eCIpKSx0aGk9CnMuJGJ1dHRvbnM9M0QkKHRoaXMuZWwpLmZpbmQoIi5idXR0b25zIik7aWYodGhp
cy5vcHRpb25zLmJ1dHRvbnMpe3ZhciByPTNEdD0KaGlzOyQuZWFjaCh0aGlzLm9wdGlvbnMuYnV0
dG9ucyxmdW5jdGlvbihlLHQpe3QuJGVsLnByb3AoImlkIixlKSxyLiRidXR0b25zPQouYXBwZW5k
KHQuJGVsKX0pfWVsc2UgdGhpcy4kYnV0dG9ucy5yZW1vdmUoKTt0aGlzLiRvcGVyYXRpb25zPTNE
JCh0aGlzLmVsKS49CmZpbmQoIi5vcGVyYXRpb25zIik7aWYodGhpcy5vcHRpb25zLm9wZXJhdGlv
bnMpe3ZhciByPTNEdGhpczskLmVhY2godGhpcy5vcD0KdGlvbnMub3BlcmF0aW9ucyxmdW5jdGlv
bihlLHQpe3QuJGVsLnByb3AoImlkIixlKSxyLiRvcGVyYXRpb25zLmFwcGVuZCh0LiRlPQpsKX0p
fXRoaXMub3B0aW9ucy5ib2R5JiZ0aGlzLmFwcGVuZCh0aGlzLm9wdGlvbnMuYm9keSl9LGFwcGVu
ZDpmdW5jdGlvbih0LG49Cil7bj90aGlzLiRjb250ZW50LmFwcGVuZCh0KTp0aGlzLiRjb250ZW50
LmFwcGVuZChlLndyYXAodCkpfSxjb250ZW50OmZ1bmN0aT0Kb24oKXtyZXR1cm4gdGhpcy4kY29u
dGVudH0sc2hvdzpmdW5jdGlvbigpe3RoaXMuJGVsLmZhZGVJbigiZmFzdCIpLHRoaXMudmlzPQpp
YmxlPTNEITB9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLiRlbC5mYWRlT3V0KCJmYXN0IiksdGhpcy52
aXNpYmxlPTNEITF9LGVuYWI9CmxlQnV0dG9uOmZ1bmN0aW9uKGUpe3RoaXMuJGJ1dHRvbnMuZmlu
ZCgiIyIrZSkucHJvcCgiZGlzYWJsZWQiLCExKX0sZGlzYWJsZT0KQnV0dG9uOmZ1bmN0aW9uKGUp
e3RoaXMuJGJ1dHRvbnMuZmluZCgiIyIrZSkucHJvcCgiZGlzYWJsZWQiLCEwKX0saGlkZU9wZXJh
PQp0aW9uOmZ1bmN0aW9uKGUpe3RoaXMuJG9wZXJhdGlvbnMuZmluZCgiIyIrZSkuaGlkZSgpfSxz
aG93T3BlcmF0aW9uOmZ1bmN0aW89Cm4oZSl7dGhpcy4kb3BlcmF0aW9ucy5maW5kKCIjIitlKS5z
aG93KCl9LHNldE9wZXJhdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBuPQo9M0R0aGlzLiRvcGVyYXRp
b25zLmZpbmQoIiMiK2UpO24ub2ZmKCJjbGljayIpLG4ub24oImNsaWNrIix0KX0sdGl0bGU6ZnVu
Y3Q9CmlvbihlKXt2YXIgdD0zRHRoaXMuJHRpdGxlO3JldHVybiBlJiZ0Lmh0bWwoZSksdC5odG1s
KCl9LF90ZW1wbGF0ZTpmdW5jdGlvbj0KKGUpe3ZhciB0PTNEJzxkaXYgaWQ9M0QiJytlLmlkKyci
IGNsYXNzPTNEIicrZS5jbHMrJyI+JztyZXR1cm4gZS50aXRsZSYmKHQrPQo9M0QnPGRpdiBjbGFz
cz0zRCJwb3J0bGV0LWhlYWRlciI+PGRpdiBjbGFzcz0zRCJvcGVyYXRpb25zIiBzdHlsZT0zRCJm
bG9hdDo9CiAnK2Uub3BlcmF0aW9uc19mbHQrJzsiPjwvZGl2PicrJzxkaXYgY2xhc3M9M0QicG9y
dGxldC10aXRsZSI+JyxlLmljb24mJih0Kz0KPTNEJzxpIGNsYXNzPTNEImljb24gZmEgJytlLmlj
b24rJyI+Jm5ic3A7PC9pPicpLHQrPTNEJzxzcGFuIGNsYXNzPTNEInBvcnRsPQpldC10aXRsZS10
ZXh0Ij4nK2UudGl0bGUrIjwvc3Bhbj4iKyI8L2Rpdj4iKyI8L2Rpdj4iKSx0Kz0zRCc8ZGl2IGNs
YXNzPTNEInA9Cm9ydGxldC1jb250ZW50Ij4nLGUucGxhY2VtZW50PTNEPTNEInRvcCImJih0Kz0z
RCc8ZGl2IGNsYXNzPTNEImJ1dHRvbnMiPjwvZD0KaXY+JyksdCs9M0QnPGRpdiBjbGFzcz0zRCJj
b250ZW50Ij48L2Rpdj4nLGUucGxhY2VtZW50PTNEPTNEImJvdHRvbSImJih0Kz0KPTNEJzxkaXYg
Y2xhc3M9M0QiYnV0dG9ucyI+PC9kaXY+JyksdCs9M0QiPC9kaXY+PC9kaXY+Iix0fX0pO3JldHVy
bntWaWV3OnR9PQp9KSxkZWZpbmUoIm12Yy91aS91aS1zZWxlY3QtZGVmYXVsdCIsWyJ1dGlscy91
dGlscyJdLGZ1bmN0aW9uKGUpe3ZhciB0PTNEQmE9CmNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9u
c0RlZmF1bHQ6e2lkOiIiLGNsczoiIixlcnJvcl90ZXh0OiJObyBkYXRhIGF2YWlsYT0KYmxlIix2
aXNpYmxlOiEwLHdhaXQ6ITEsbXVsdGlwbGU6ITEsc2VhcmNoYWJsZTohMX0saW5pdGlhbGl6ZTpm
dW5jdGlvbih0KXt0PQpoaXMub3B0aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0
KSx0aGlzLnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGU9Cih0aGlzLm9wdGlvbnMpKSx0aGlzLiRz
ZWxlY3Q9M0R0aGlzLiRlbC5maW5kKCIuc2VsZWN0IiksdGhpcy4kaWNvbj0zRHRoaXMuJD0KZWwu
ZmluZCgiLmljb24iKSx0aGlzLiRidXR0b249M0R0aGlzLiRlbC5maW5kKCIuYnV0dG9uIiksdGhp
cy5vcHRpb25zLm11bHRpPQpwbGU/KHRoaXMuJHNlbGVjdC5wcm9wKCJtdWx0aXBsZSIsITApLHRo
aXMuJHNlbGVjdC5hZGRDbGFzcygidWktc2VsZWN0LW11bHQ9CmlwbGUiKSx0aGlzLiRpY29uLnJl
bW92ZSgpKTp0aGlzLiRlbC5hZGRDbGFzcygidWktc2VsZWN0IiksdGhpcy51cGRhdGUodGhpcz0K
Lm9wdGlvbnMuZGF0YSksdGhpcy5vcHRpb25zLnZhbHVlIT0zRD0zRHVuZGVmaW5lZCYmdGhpcy52
YWx1ZSh0aGlzLm9wdGlvbnMuPQp2YWx1ZSksdGhpcy5vcHRpb25zLnZpc2libGV8fHRoaXMuaGlk
ZSgpLHRoaXMub3B0aW9ucy53YWl0P3RoaXMud2FpdCgpOnRoaXM9Ci5zaG93KCk7dmFyIG49M0R0
aGlzO3RoaXMuJHNlbGVjdC5vbigiY2hhbmdlIixmdW5jdGlvbigpe24uX2NoYW5nZSgpfSksdGhp
cz0KLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7bi5fY2hhbmdlKCl9KX0sdmFsdWU6ZnVuY3Rpb24o
ZSl7cmV0dXJuIGUhPTNEPTNEdW5kPQplZmluZWQmJih0aGlzLiRzZWxlY3QudmFsKGUpLHRoaXMu
JHNlbGVjdC5zZWxlY3QyJiZ0aGlzLiRzZWxlY3Quc2VsZWN0MigidmE9CmwiLGUpKSx0aGlzLiRz
ZWxlY3QudmFsKCl9LGZpcnN0OmZ1bmN0aW9uKCl7dmFyIGU9M0R0aGlzLiRzZWxlY3QuZmluZCgi
b3B0aT0Kb24iKTtyZXR1cm4gZS5sZW5ndGg+MD9lLnZhbCgpOnVuZGVmaW5lZH0sdmFsaWRhdGU6
ZnVuY3Rpb24oKXtyZXR1cm4gZS52YWxpPQpkYXRlKHRoaXMudmFsdWUoKSl9LHRleHQ6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy4kc2VsZWN0LmZpbmQoIm9wdGlvbjpzZWxlY3Q9CmVkIikudGV4dCgp
fSxzaG93OmZ1bmN0aW9uKCl7dGhpcy51bndhaXQoKSx0aGlzLiRzZWxlY3Quc2hvdygpLHRoaXMu
JGVsLnNobz0KdygpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy4kZWwuaGlkZSgpfSx3YWl0OmZ1bmN0
aW9uKCl7dGhpcy4kaWNvbi5yZW1vdmVDbGFzPQpzKCksdGhpcy4kaWNvbi5hZGRDbGFzcygiZmEg
ZmEtc3Bpbm5lciBmYS1zcGluIil9LHVud2FpdDpmdW5jdGlvbigpe3RoaXMuJGk9CmNvbi5yZW1v
dmVDbGFzcygpLHRoaXMuJGljb24uYWRkQ2xhc3MoImZhIGZhLWNhcmV0LWRvd24iKX0sZGlzYWJs
ZWQ6ZnVuY3Rpbz0Kbigpe3JldHVybiB0aGlzLiRzZWxlY3QuaXMoIjpkaXNhYmxlZCIpfSxlbmFi
bGU6ZnVuY3Rpb24oKXt0aGlzLiRzZWxlY3QucHJvPQpwKCJkaXNhYmxlZCIsITEpfSxkaXNhYmxl
OmZ1bmN0aW9uKCl7dGhpcy4kc2VsZWN0LnByb3AoImRpc2FibGVkIiwhMCl9LGFkZDo9CmZ1bmN0
aW9uKGUpe3RoaXMuJHNlbGVjdC5hcHBlbmQodGhpcy5fdGVtcGxhdGVPcHRpb24oZSkpLHRoaXMu
X3JlZnJlc2goKX0sZD0KZWw6ZnVuY3Rpb24oZSl7dGhpcy4kc2VsZWN0LmZpbmQoIm9wdGlvblt2
YWx1ZT0zRCIrZSsiXSIpLnJlbW92ZSgpLHRoaXMuJHNlPQpsZWN0LnRyaWdnZXIoImNoYW5nZSIp
LHRoaXMuX3JlZnJlc2goKX0sdXBkYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy4kc2U9Cmxl
Y3QudmFsKCk7dGhpcy4kc2VsZWN0LmZpbmQoIm9wdGlvbiIpLnJlbW92ZSgpO2Zvcih2YXIgbiBp
biBlKXRoaXMuJHNlbGVjdD0KLmFwcGVuZCh0aGlzLl90ZW1wbGF0ZU9wdGlvbihlW25dKSk7dGhp
cy5fcmVmcmVzaCgpLHRoaXMuJHNlbGVjdC52YWwodCksdGhpPQpzLiRzZWxlY3QudmFsKCl8fHRo
aXMuJHNlbGVjdC52YWwodGhpcy5maXJzdCgpKSx0aGlzLm9wdGlvbnMuc2VhcmNoYWJsZSYmKHQ9
Cmhpcy4kYnV0dG9uLmhpZGUoKSx0aGlzLiRzZWxlY3Quc2VsZWN0MigiZGVzdHJveSIpLHRoaXMu
JHNlbGVjdC5zZWxlY3QyKCkpfT0KLHNldE9uQ2hhbmdlOmZ1bmN0aW9uKGUpe3RoaXMub3B0aW9u
cy5vbmNoYW5nZT0zRGV9LGV4aXN0czpmdW5jdGlvbihlKXtyZXR1PQpybiB0aGlzLiRzZWxlY3Qu
ZmluZCgnb3B0aW9uW3ZhbHVlPTNEIicrZSsnIl0nKS5sZW5ndGg+MH0sX2NoYW5nZTpmdW5jdGlv
big9Cil7dGhpcy5vcHRpb25zLm9uY2hhbmdlJiZ0aGlzLm9wdGlvbnMub25jaGFuZ2UodGhpcy4k
c2VsZWN0LnZhbCgpKX0sX3JlZnJlcz0KaDpmdW5jdGlvbigpe3RoaXMuJHNlbGVjdC5maW5kKCJv
cHRpb25bdmFsdWU9M0RudWxsXSIpLnJlbW92ZSgpO3ZhciBlPTNEdGhpPQpzLiRzZWxlY3QuZmlu
ZCgib3B0aW9uIikubGVuZ3RoO2U9M0Q9M0QwPyh0aGlzLmRpc2FibGUoKSx0aGlzLiRzZWxlY3Qu
YXBwZW49CmQodGhpcy5fdGVtcGxhdGVPcHRpb24oe3ZhbHVlOiJudWxsIixsYWJlbDp0aGlzLm9w
dGlvbnMuZXJyb3JfdGV4dH0pKSk6dGhpcz0KLmVuYWJsZSgpfSxfdGVtcGxhdGVPcHRpb246ZnVu
Y3Rpb24oZSl7cmV0dXJuJzxvcHRpb24gdmFsdWU9M0QiJytlLnZhbHVlKyciPQo+JytlLmxhYmVs
KyI8L29wdGlvbj4ifSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuJzxkaXYgaWQ9M0QiJytl
LmlkKyciPic9CisnPHNlbGVjdCBpZD0zRCJzZWxlY3QiIGNsYXNzPTNEInNlbGVjdCAnK2UuY2xz
KyIgIitlLmlkKyciPjwvc2VsZWN0PicrJzxkaT0KdiBjbGFzcz0zRCJidXR0b24iPicrJzxpIGNs
YXNzPTNEImljb24iLz4nKyI8L2Rpdj4iKyI8L2Rpdj4ifX0pO3JldHVybntWaWV3PQo6dH19KSxk
ZWZpbmUoIm12Yy91aS91aS1zbGlkZXIiLFsidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihlKXt2YXIg
dD0zREJhY2tib249CmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0OnttaW46bnVsbCxtYXg6
bnVsbCxzdGVwOm51bGwscHJlY2lzZTohMSxzcGxpdD0KOjFlNH0saW5pdGlhbGl6ZTpmdW5jdGlv
bih0KXt2YXIgbj0zRHRoaXM7dGhpcy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0PQppb25z
RGVmYXVsdCksdGhpcy5zZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9ucykpLHRo
aXMudXNlc2xpZGVyPQo9M0R0aGlzLm9wdGlvbnMubWF4IT0zRD0zRG51bGwmJnRoaXMub3B0aW9u
cy5taW4hPTNEPTNEbnVsbCYmdGhpcy5vcHRpb25zLm09CmF4PnRoaXMub3B0aW9ucy5taW4sdGhp
cy5vcHRpb25zLnN0ZXA9M0Q9M0Q9M0RudWxsJiYodGhpcy5vcHRpb25zLnN0ZXA9M0QxLD0KdGhp
cy5vcHRpb25zLnByZWNpc2UmJnRoaXMudXNlc2xpZGVyJiYodGhpcy5vcHRpb25zLnN0ZXA9M0Qo
dGhpcy5vcHRpb25zLm1hPQp4LXRoaXMub3B0aW9ucy5taW4pL3RoaXMub3B0aW9ucy5zcGxpdCkp
LHRoaXMudXNlc2xpZGVyPyh0aGlzLiRzbGlkZXI9M0R0aGk9CnMuJGVsLmZpbmQoIiNzbGlkZXIi
KSx0aGlzLiRzbGlkZXIuc2xpZGVyKHRoaXMub3B0aW9ucyksdGhpcy4kc2xpZGVyLm9uKCJzbD0K
aWRlIixmdW5jdGlvbihlLHQpe24udmFsdWUodC52YWx1ZSl9KSk6dGhpcy4kZWwuZmluZCgiLnVp
LWZvcm0tc2xpZGVyLXRleHQiPQopLmNzcygid2lkdGgiLCIxMDAlIiksdGhpcy4kdGV4dD0zRHRo
aXMuJGVsLmZpbmQoIiN0ZXh0IiksdGhpcy5vcHRpb25zLnZhbHU9CmUhPTNEPTNEdW5kZWZpbmVk
JiZ0aGlzLnZhbHVlKHRoaXMub3B0aW9ucy52YWx1ZSksdGhpcy4kdGV4dC5vbigiY2hhbmdlIixm
dT0KbmN0aW9uKCl7bi52YWx1ZSgkKHRoaXMpLnZhbCgpKX0pO3ZhciByPTNEW107dGhpcy4kdGV4
dC5vbigia2V5dXAiLGZ1bmN0aW9uPQooZSl7cltlLndoaWNoXT0zRCExfSksdGhpcy4kdGV4dC5v
bigia2V5ZG93biIsZnVuY3Rpb24oZSl7dmFyIHQ9M0RlLndoaWNoO3I9Clt0XT0zRCEwLHQ9M0Q9
M0Q4fHx0PTNEPTNEOXx8dD0zRD0zRDEzfHx0PTNEPTNEMzd8fHQ9M0Q9M0QzOXx8dD49M0Q0OCYm
dDw9Cj0zRDU3fHx0PTNEPTNEMTkwJiYkKHRoaXMpLnZhbCgpLmluZGV4T2YoIi4iKT0zRD0zRC0x
JiZuLm9wdGlvbnMucHJlY2lzZXx8dD0KPTNEPTNEMTg5JiYkKHRoaXMpLnZhbCgpLmluZGV4T2Yo
Ii0iKT0zRD0zRC0xfHxyWzkxXXx8clsxN118fGV2ZW50LnByZXZlbnREPQplZmF1bHQoKX0pfSx2
YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZSE9M0Q9M0R1bmRlZmluZWQmJihpc05hTihlKSYmKGU9
M0QwKSw9CnRoaXMub3B0aW9ucy5tYXghPTNEPTNEbnVsbCYmKGU9M0RNYXRoLm1pbihlLHRoaXMu
b3B0aW9ucy5tYXgpKSx0aGlzLm9wdGlvbj0Kcy5taW4hPTNEPTNEbnVsbCYmKGU9M0RNYXRoLm1h
eChlLHRoaXMub3B0aW9ucy5taW4pKSx0aGlzLm9wdGlvbnMub25jaGFuZ2UmPQomdGhpcy5vcHRp
b25zLm9uY2hhbmdlKGUpLHRoaXMuJHNsaWRlciYmdGhpcy4kc2xpZGVyLnNsaWRlcigidmFsdWUi
LGUpLHRoaXM9Ci4kdGV4dC52YWwoZSkpLHRoaXMuJHRleHQudmFsKCl9LF90ZW1wbGF0ZTpmdW5j
dGlvbihlKXtyZXR1cm4nPGRpdiBpZD0zRCInKz0KZS5pZCsnIiBjbGFzcz0zRCJ1aS1mb3JtLXNs
aWRlciI+JysnPGlucHV0IGlkPTNEInRleHQiIHR5cGU9M0QidGV4dCIgY2xhc3M9Cj0zRCJ1aS1m
b3JtLXNsaWRlci10ZXh0Ii8+JysnPGRpdiBpZD0zRCJzbGlkZXIiIGNsYXNzPTNEInVpLWZvcm0t
c2xpZGVyLWVsZT0KbWVudCIvPicrIjwvZGl2PiJ9fSk7cmV0dXJue1ZpZXc6dH19KSxkZWZpbmUo
Im12Yy91aS91aS1vcHRpb25zIixbInV0aWxzL3V0PQppbHMiXSxmdW5jdGlvbihlKXt2YXIgdD0z
REJhY2tib25lLlZpZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXM9Ci5vcHRp
b25zRGVmYXVsdD0zRHt2aXNpYmxlOiEwLGRhdGE6W10saWQ6ZS51dWlkKCksZXJyb3JfdGV4dDoi
Tm8gZGF0YSBhdmFpbD0KYWJsZS4iLHdhaXRfdGV4dDoiUGxlYXNlIHdhaXQuLi4ifSx0aGlzLm9w
dGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmPQphdWx0KSx0aGlzLnNldEVsZW1lbnQo
IjxkaXYvPiIpLHRoaXMuJG1lc3NhZ2U9M0QkKCI8ZGl2Lz4iKSx0aGlzLiRvcHRpb25zPQo9M0Qk
KHRoaXMuX3RlbXBsYXRlKHQpKSx0aGlzLiRlbC5hcHBlbmQodGhpcy4kbWVzc2FnZSksdGhpcy4k
ZWwuYXBwZW5kKHRoaXM9Ci4kb3B0aW9ucyksdGhpcy5vcHRpb25zLnZpc2libGV8fHRoaXMuJGVs
LmhpZGUoKSx0aGlzLnVwZGF0ZSh0aGlzLm9wdGlvbnMuZD0KYXRhKSx0aGlzLm9wdGlvbnMudmFs
dWUhPTNEPTNEdW5kZWZpbmVkJiZ0aGlzLnZhbHVlKHRoaXMub3B0aW9ucy52YWx1ZSk7dmFyPQog
bj0zRHRoaXM7dGhpcy5vbigiY2hhbmdlIixmdW5jdGlvbigpe24uX2NoYW5nZSgpfSl9LHVwZGF0
ZTpmdW5jdGlvbihlKXt2YXI9CiB0PTNEdGhpcy5fZ2V0VmFsdWUoKTt0aGlzLiRvcHRpb25zLmVt
cHR5KCk7aWYodGhpcy5fdGVtcGxhdGVPcHRpb25zKXRoaXMuJD0Kb3B0aW9ucy5hcHBlbmQodGhp
cy5fdGVtcGxhdGVPcHRpb25zKGUpKTtlbHNlIGZvcih2YXIgbiBpbiBlKXt2YXIgcj0zRCQodGhp
PQpzLl90ZW1wbGF0ZU9wdGlvbihlW25dKSk7ci5hZGRDbGFzcygidWktb3B0aW9uIiksdGhpcy4k
b3B0aW9ucy5hcHBlbmQocil9dmE9CnIgaT0zRHRoaXM7dGhpcy4kZWwuZmluZCgiaW5wdXQiKS5v
bigiY2hhbmdlIixmdW5jdGlvbigpe2kudmFsdWUoaS5fZ2V0VmFsdT0KZSgpKSxpLl9jaGFuZ2Uo
KX0pLHRoaXMuX3JlZnJlc2goKSx0aGlzLnZhbHVlKHQpfSx2YWx1ZTpmdW5jdGlvbihlKXtpZihl
IT0KPTNEPTNEdW5kZWZpbmVkKXtlIGluc3RhbmNlb2YgQXJyYXl8fChlPTNEW2VdKSx0aGlzLiRl
bC5maW5kKCJpbnB1dCIpLnByb3AoPQoiY2hlY2tlZCIsITEpO2Zvcih2YXIgdCBpbiBlKXRoaXMu
JGVsLmZpbmQoJ2lucHV0W3ZhbHVlPTNEIicrZVt0XSsnIl0nKS5maXI9CnN0KCkucHJvcCgiY2hl
Y2tlZCIsITApfXJldHVybiB0aGlzLl9nZXRWYWx1ZSgpfSxleGlzdHM6ZnVuY3Rpb24oZSl7aWYo
ZSE9Cj0zRD0zRHVuZGVmaW5lZCl7ZSBpbnN0YW5jZW9mIEFycmF5fHwoZT0zRFtlXSk7Zm9yKHZh
ciB0IGluIGUpaWYodGhpcy4kZWwuZj0KaW5kKCdpbnB1dFt2YWx1ZT0zRCInK2VbdF0rJyJdJyku
bGVuZ3RoPjApcmV0dXJuITB9cmV0dXJuITF9LGZpcnN0OmZ1bmN0aW9uPQooKXt2YXIgZT0zRHRo
aXMuJGVsLmZpbmQoImlucHV0Iik7cmV0dXJuIGUubGVuZ3RoPjA/ZS52YWwoKTp1bmRlZmluZWR9
LHZhbGk9CmRhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gZS52YWxpZGF0ZSh0aGlzLnZhbHVlKCkpfSx3
YWl0OmZ1bmN0aW9uKCl7dGhpcy5fc2l6ZT0KKCk9M0Q9M0QwJiYodGhpcy5fbWVzc2FnZVNob3co
dGhpcy5vcHRpb25zLndhaXRfdGV4dCwiaW5mbyIpLHRoaXMuJG9wdGlvbnMuPQpoaWRlKCkpfSx1
bndhaXQ6ZnVuY3Rpb24oKXt0aGlzLl9tZXNzYWdlSGlkZSgpLHRoaXMuX3JlZnJlc2goKX0sX2No
YW5nZTpmdW49CmN0aW9uKCl7dGhpcy5vcHRpb25zLm9uY2hhbmdlJiZ0aGlzLm9wdGlvbnMub25j
aGFuZ2UodGhpcy5fZ2V0VmFsdWUoKSl9LF9yZT0KZnJlc2g6ZnVuY3Rpb24oKXt0aGlzLl9zaXpl
KCk9M0Q9M0QwPyh0aGlzLl9tZXNzYWdlU2hvdyh0aGlzLm9wdGlvbnMuZXJyb3JfPQp0ZXh0LCJk
YW5nZXIiKSx0aGlzLiRvcHRpb25zLmhpZGUoKSk6KHRoaXMuX21lc3NhZ2VIaWRlKCksdGhpcy4k
b3B0aW9ucy5jc3M9CigiZGlzcGxheSIsImlubGluZS1ibG9jayIpKX0sX2dldFZhbHVlOmZ1bmN0
aW9uKCl7dmFyIGU9M0R0aGlzLiRlbC5maW5kKCI6Yz0KaGVja2VkIik7aWYoZS5sZW5ndGg9M0Q9
M0QwKXJldHVybiJudWxsIjtpZih0aGlzLm9wdGlvbnMubXVsdGlwbGUpe3ZhciB0PTNEPQpbXTty
ZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKCl7dC5wdXNoKCQodGhpcykudmFsKCkpfSksdH1yZXR1cm4g
ZS52YWwoKX0sX3NpemU9CjpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRlbC5maW5kKCIudWktb3B0
aW9uIikubGVuZ3RofSxfbWVzc2FnZVNob3c6ZnVuY3Rpbz0KbihlLHQpe3RoaXMuJG1lc3NhZ2Uu
c2hvdygpLHRoaXMuJG1lc3NhZ2UucmVtb3ZlQ2xhc3MoKSx0aGlzLiRtZXNzYWdlLmFkZENsPQph
c3MoInVpLW1lc3NhZ2UgYWxlcnQgYWxlcnQtIit0KSx0aGlzLiRtZXNzYWdlLmh0bWwoZSl9LF9t
ZXNzYWdlSGlkZTpmdW5jdGk9Cm9uKCl7dGhpcy4kbWVzc2FnZS5oaWRlKCl9LF90ZW1wbGF0ZTpm
dW5jdGlvbigpe3JldHVybic8ZGl2IGNsYXNzPTNEInVpLW9wdD0KaW9ucyIvPid9fSksbj0zRHt9
O24uVmlldz0zRHQuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLmlu
PQppdGlhbGl6ZS5jYWxsKHRoaXMsZSl9LF90ZW1wbGF0ZU9wdGlvbjpmdW5jdGlvbihlKXtyZXR1
cm4nPGRpdj48aW5wdXQgdHlwZT0KPTNEInJhZGlvIiBuYW1lPTNEIicrdGhpcy5vcHRpb25zLmlk
KyciIHZhbHVlPTNEIicrZS52YWx1ZSsnIi8+JytlLmxhYmVsKyI8PQpicj4iKyI8L2Rpdj4ifX0p
O3ZhciByPTNEe307ci5WaWV3PTNEdC5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oZSl7ZS5t
dWw9CnRpcGxlPTNEITAsdC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsZSl9LF90ZW1w
bGF0ZU9wdGlvbjpmdW5jdGlvbihlKT0Ke3JldHVybic8ZGl2PjxpbnB1dCB0eXBlPTNEImNoZWNr
Ym94IiBuYW1lPTNEIicrdGhpcy5vcHRpb25zLmlkKyciIHZhbHVlPTNEPQoiJytlLnZhbHVlKyci
Lz4nK2UubGFiZWwrIjxicj4iKyI8L2Rpdj4ifX0pO3ZhciBpPTNEe307cmV0dXJuIGkuVmlldz0z
RHQuZXg9CnRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuaW5pdGlhbGl6
ZS5jYWxsKHRoaXMsZSl9LHZhbHVlOmZ1bj0KY3Rpb24oZSl7cmV0dXJuIGUhPTNEPTNEdW5kZWZp
bmVkJiYodGhpcy4kZWwuZmluZCgiaW5wdXQiKS5wcm9wKCJjaGVja2VkIiwhPQoxKSx0aGlzLiRl
bC5maW5kKCJsYWJlbCIpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSx0aGlzLiRlbC5maW5kKCdbdmFs
dWU9M0QiJys9CmUrJyJdJykucHJvcCgiY2hlY2tlZCIsITApLmNsb3Nlc3QoImxhYmVsIikuYWRk
Q2xhc3MoImFjdGl2ZSIpKSx0aGlzLl9nZXRWYT0KbHVlKCl9LF90ZW1wbGF0ZU9wdGlvbjpmdW5j
dGlvbihlKXt2YXIgdD0zRCc8bGFiZWwgY2xhc3M9M0QiYnRuIGJ0bi1kZWZhdWx0PQoiPic7cmV0
dXJuIGUuaWNvbiYmKHQrPTNEJzxpIGNsYXNzPTNEImZhICcrZS5pY29uKyciLz4nKSx0Kz0zRCc8
aW5wdXQgdHlwZT0KPTNEInJhZGlvIiBuYW1lPTNEIicrdGhpcy5vcHRpb25zLmlkKyciIHZhbHVl
PTNEIicrZS52YWx1ZSsnIj4nK2UubGFiZWwrIjwvPQpsYWJlbD4iLHR9LF90ZW1wbGF0ZTpmdW5j
dGlvbigpe3JldHVybic8ZGl2IGNsYXNzPTNEImJ0bi1ncm91cCB1aS1yYWRpb2J1dHQ9Cm9uIiBk
YXRhLXRvZ2dsZT0zRCJidXR0b25zIi8+J319KSx7QmFzZTp0LFJhZGlvOm4sUmFkaW9CdXR0b246
aSxDaGVja2JveDpyfT0KfSksZGVmaW5lKCJtdmMvdWkvdWktZHJpbGxkb3duIixbInV0aWxzL3V0
aWxzIiwibXZjL3VpL3VpLW9wdGlvbnMiXSxmdW5jdGlvPQpuKGUsdCl7dmFyIG49M0R0LkJhc2Uu
ZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKGUpe3RoaXMuZGlzcGxheT0zRGUuZGlzcGw9CmF5
fHwiY2hlY2tib3giLGUubXVsdGlwbGU9M0R0aGlzLmRpc3BsYXk9M0Q9M0QiY2hlY2tib3giLHQu
QmFzZS5wcm90b3R5cGUuaT0Kbml0aWFsaXplLmNhbGwodGhpcyxlKX0sX3RlbXBsYXRlT3B0aW9u
OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4nPGRpdj48aW5wdXQgPQpuYW1lPTNEIicrdGhpcy5vcHRp
b25zLmlkKyciIGNsYXNzPTNEInVpLW9wdGlvbiIgdHlwZT0zRCInK3RoaXMuZGlzcGxheSsnIiA9
CnZhbHVlPTNEIicrdCsnIj4nK2UrIjxkaXYvPiJ9LF90ZW1wbGF0ZU9wdGlvbnM6ZnVuY3Rpb24o
ZSl7ZnVuY3Rpb24gbihlLHQpez0KZnVuY3Rpb24gbihuKXtuPyh0LmZhZGVJbigiZmFzdCIpLGUu
cmVtb3ZlQ2xhc3MoInRvZ2dsZS1leHBhbmQiKSxlLmFkZENsYXNzPQooInRvZ2dsZSIpLGUuaXNf
ZXhwYW5kZWQ9M0QhMCk6KHQuaGlkZSgpLGUucmVtb3ZlQ2xhc3MoInRvZ2dsZSIpLGUuYWRkQ2xh
c3M9CigidG9nZ2xlLWV4cGFuZCIpLGUuaXNfZXhwYW5kZWQ9M0QhMSl9ZS5vbigiY2xpY2siLGZ1
bmN0aW9uKCl7bighZS5pc19leHBhbj0KZGVkKX0pfWZ1bmN0aW9uIHIoZSxzKXtmb3IoaSBpbiBz
KXt2YXIgbz0zRHNbaV0sdT0zRG8ub3B0aW9ucy5sZW5ndGg+MCxhPTNEPQokKCI8ZGl2Lz4iKTtp
Zih1KXt2YXIgZj0zRCQoJzxzcGFuIGNsYXNzPTNEInVpLWRyaWxsZG93bi1idXR0b24gZm9ybS10
b2dnbGU9CiBpY29uLWJ1dHRvbiB0b2dnbGUtZXhwYW5kIiBzdHlsZT0zRCJwb3NpdGlvbjogcmVs
YXRpdmU7IHRvcDogMnB4OyIvPicpLGw9Cj0zRCQoIjxkaXYvPiIpO2wuYXBwZW5kKGYpLGwuYXBw
ZW5kKHQuX3RlbXBsYXRlT3B0aW9uKG8ubmFtZSxvLnZhbHVlKSksYS5hcD0KcGVuZChsKTt2YXIg
Yz0zRCQoJzxkaXYgc3R5bGU9M0QiZGlzcGxheTogbm9uZTsgbWFyZ2luLWxlZnQ6IDI1cHg7Ii8+
Jyk7cihjPQosby5vcHRpb25zKSxhLmFwcGVuZChjKSxuKGYsYyl9ZWxzZSBhLmFwcGVuZCh0Ll90
ZW1wbGF0ZU9wdGlvbihvLm5hbWUsby52YWw9CnVlKSk7ZS5hcHBlbmQoYSl9fXZhciB0PTNEdGhp
cyxzPTNEJCgiPGRpdi8+Iik7cmV0dXJuIHIocyxlKSxzfSxfdGVtcGxhdGU6Zj0KdW5jdGlvbihl
KXtyZXR1cm4nPGRpdiBjbGFzcz0zRCJ1aS1vcHRpb25zIGRyaWxsZG93bi1jb250YWluZXIiIGlk
PTNEIicrZS5pPQpkKyciLz4nfX0pO3JldHVybntWaWV3Om59fSksZGVmaW5lKCJtdmMvdWkvdWkt
YnV0dG9uLW1lbnUiLFsidXRpbHMvdXRpbHMiXSw9CmZ1bmN0aW9uKGUpe3JldHVybiBCYWNrYm9u
ZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e2lkOiIiLHRpdGxlOiIiLGZsbz0KYXRpbmc6
InJpZ2h0IixpY29uOm51bGwsb25jbGljazpudWxsLGNsczoidWktYnV0dG9uLWljb24gdWktYnV0
dG9uLW1lbnUiLHRvPQpvbHRpcDoiIix0YXJnZXQ6IiIsaHJlZjoiIixvbnVubG9hZDpudWxsLHZp
c2libGU6ITAsdGFnOiIifSwkbWVudTpudWxsLGluaXQ9CmlhbGl6ZTpmdW5jdGlvbih0KXt0aGlz
Lm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbD0KZW1l
bnQoJCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKSk7dmFyIG49M0QkKHRoaXMuZWwpLmZp
bmQoIi5yb290Iikscj0KPTNEdGhpcztuLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7JCgiLnRvb2x0
aXAiKS5oaWRlKCksZS5wcmV2ZW50RGVmYXVsdCgpLHIuPQpvcHRpb25zLm9uY2xpY2smJnIub3B0
aW9ucy5vbmNsaWNrKCl9KSx0aGlzLm9wdGlvbnMudmlzaWJsZXx8dGhpcy5oaWRlKCksbi49CnRv
b2x0aXAoe3RpdGxlOnQudG9vbHRpcCxwbGFjZW1lbnQ6ImJvdHRvbSJ9KX0sc2hvdzpmdW5jdGlv
bigpeyQodGhpcy5lbCkucz0KaG93KCl9LGhpZGU6ZnVuY3Rpb24oKXskKHRoaXMuZWwpLmhpZGUo
KX0sYWRkTWVudTpmdW5jdGlvbih0KXt2YXIgbj0zRHt0aXRsPQplOiIiLHRhcmdldDoiIixocmVm
OiIiLG9uY2xpY2s6bnVsbCxkaXZpZGVyOiExLGljb246bnVsbCxjbHM6ImJ1dHRvbi1tZW51IGI9
CnRuLWdyb3VwIn07bj0zRGUubWVyZ2UodCxuKSx0aGlzLiRtZW51fHwoJCh0aGlzLmVsKS5hcHBl
bmQodGhpcy5fdGVtcGxhdGVNZT0KbnUoKSksdGhpcy4kbWVudT0zRCQodGhpcy5lbCkuZmluZCgi
Lm1lbnUiKSk7dmFyIHI9M0QkKHRoaXMuX3RlbXBsYXRlTWVudUl0PQplbShuKSk7ci5vbigiY2xp
Y2siLGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKSxuLm9uY2xpY2smJm4ub25jbGljaygp
fSk9Cix0aGlzLiRtZW51LmFwcGVuZChyKSxuLmRpdmlkZXImJnRoaXMuJG1lbnUuYXBwZW5kKCQo
dGhpcy5fdGVtcGxhdGVEaXZpZGVyKD0KKSkpfSxfdGVtcGxhdGVNZW51SXRlbTpmdW5jdGlvbihl
KXt2YXIgdD0zRCc8bGk+PGEgY2xhc3M9M0QiZHJvcGRvd24taXRlbSIgPQpocmVmPTNEIicrZS5o
cmVmKyciIHRhcmdldD0zRCInK2UudGFyZ2V0KyciPic7cmV0dXJuIGUuaWNvbiYmKHQrPTNEJzxp
IGNsYXM9CnM9M0QiZmEgJytlLmljb24rJyI+PC9pPicpLHQrPTNEIiAiK2UudGl0bGUrIjwvYT4i
KyI8L2xpPiIsdH0sX3RlbXBsYXRlTWVudT0KOmZ1bmN0aW9uKCl7cmV0dXJuJzx1bCBjbGFzcz0z
RCJtZW51IGRyb3Bkb3duLW1lbnUgcHVsbC1yaWdodCIgcm9sZT0zRCJtZW51PQoiPjwvdWw+J30s
X3RlbXBsYXRlRGl2aWRlcjpmdW5jdGlvbigpe3JldHVybic8bGkgY2xhc3M9M0QiZGl2aWRlciI+
PC9saT4nfSw9Cl90ZW1wbGF0ZTpmdW5jdGlvbihlKXt2YXIgdD0zRCIiLG49M0QiIjtlLnRpdGxl
P3Q9M0Qid2lkdGg6IGF1dG87IjpuPTNEIm1hcj0KZ2luOiAwcHg7Ijt2YXIgcj0zRCc8ZGl2IGlk
PTNEIicrZS5pZCsnIiBzdHlsZT0zRCJmbG9hdDogJytlLmZsb2F0aW5nKyI7ICIrPQp0KyciIGNs
YXNzPTNEImRyb3Bkb3duICcrZS5jbHMrJyI+JysnPGRpdiBjbGFzcz0zRCJyb290IGJ1dHRvbiBk
cm9wZG93bi10b2c9CmdsZSIgZGF0YS10b2dnbGU9M0QiZHJvcGRvd24iIHN0eWxlPTNEIicrbisn
Ij4nKyc8aSBjbGFzcz0zRCJpY29uIGZhICcrZS5pYz0Kb24rJyIvPic7cmV0dXJuIGUudGl0bGUm
JihyKz0zRCcmbmJzcDs8c3BhbiBjbGFzcz0zRCJ0aXRsZSI+JytlLnRpdGxlKyI8L3NwPQphbj4i
KSxyKz0zRCI8L2Rpdj48L2Rpdj4iLHJ9fSl9KSxkZWZpbmUoIm12Yy91aS91aS1taXNjIixbInV0
aWxzL3V0aWxzIiwibXY9CmMvdWkvdWktc2VsZWN0LWRlZmF1bHQiLCJtdmMvdWkvdWktc2xpZGVy
IiwibXZjL3VpL3VpLW9wdGlvbnMiLCJtdmMvdWkvdWktZD0KcmlsbGRvd24iLCJtdmMvdWkvdWkt
YnV0dG9uLW1lbnUiLCJtdmMvdWkvdWktbW9kYWwiXSxmdW5jdGlvbihlLHQsbixyLGkscyxvPQop
e3ZhciB1PTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0Ont1cmw6IiIsY2xz
OiIifSxpbml0aWFsaXplOmY9CnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPTNEZS5tZXJnZSh0LHRo
aXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCh0aD0KaXMuX3RlbXBsYXRlKHRoaXMu
b3B0aW9ucykpfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuJzxpbWcgY2xhc3M9M0QidWkt
PQppbWFnZSAnK2UuY2xzKyciIHNyYz0zRCInK2UudXJsKyciLz4nfX0pLGE9M0RCYWNrYm9uZS5W
aWV3LmV4dGVuZCh7b3B0aW9uc0Q9CmVmYXVsdDp7dGl0bGU6IiIsY2xzOiIifSxpbml0aWFsaXpl
OmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVyZ2UodCx0aD0KaXMub3B0aW9uc0RlZmF1
bHQpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKX0sdGl0bGU6
ZnVuPQpjdGlvbihlKXt0aGlzLiRlbC5odG1sKGUpfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7cmV0
dXJuJzxsYWJlbCBjbGFzcz0zRCJ1aS09CmxhYmVsICcrZS5jbHMrJyI+JytlLnRpdGxlKyI8L2xh
YmVsPiJ9LHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIG9wdGlvbnMudGl0bD0KZX19KSxmPTNEQmFj
a2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0OntmbG9hdGluZzoicmlnaHQiLGljb246
IiIsdG9vPQpsdGlwOiIiLHBsYWNlbWVudDoiYm90dG9tIix0aXRsZToiIixjbHM6IiJ9LGluaXRp
YWxpemU6ZnVuY3Rpb24odCl7dGhpcy5vcHQ9CmlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25z
RGVmYXVsdCksdGhpcy5zZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMubz0KcHRpb25zKSks
JCh0aGlzLmVsKS50b29sdGlwKHt0aXRsZTp0LnRvb2x0aXAscGxhY2VtZW50OiJib3R0b20ifSl9
LF90ZW1wbGF0PQplOmZ1bmN0aW9uKGUpe3JldHVybic8ZGl2PjxzcGFuIGNsYXNzPTNEImZhICcr
ZS5pY29uKyciIGNsYXNzPTNEInVpLWljb24iLz49CiZuYnNwOycrZS50aXRsZSsiPC9kaXY+In19
KSxsPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0OntpZDpudT0KbGwsdGl0
bGU6IiIsZmxvYXRpbmc6InJpZ2h0IixjbHM6InVpLWJ1dHRvbiBidG4gYnRuLWRlZmF1bHQiLGlj
b246IiJ9LGluaXRpPQphbGl6ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQs
dGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGU9Cm1lbnQodGhpcy5fdGVtcGxhdGUodGhp
cy5vcHRpb25zKSksJCh0aGlzLmVsKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7JCgiLnRvbz0KbHRp
cCIpLmhpZGUoKSx0Lm9uY2xpY2smJnQub25jbGljaygpfSksJCh0aGlzLmVsKS50b29sdGlwKHt0
aXRsZTp0LnRvb2x0aXAsPQpwbGFjZW1lbnQ6ImJvdHRvbSJ9KX0sX3RlbXBsYXRlOmZ1bmN0aW9u
KGUpe3ZhciB0PTNEJzxidXR0b24gaWQ9M0QiJytlLmlkKyc9CiIgdHlwZT0zRCJzdWJtaXQiIHN0
eWxlPTNEImZsb2F0OiAnK2UuZmxvYXRpbmcrJzsiIHR5cGU9M0QiYnV0dG9uIiBjbGFzcz0zRD0K
IicrZS5jbHMrJyI+JztyZXR1cm4gZS5pY29uJiYodCs9M0QnPGkgY2xhc3M9M0QiaWNvbiBmYSAn
K2UuaWNvbisnIj48L2k+Jm5iPQpzcDsnKSx0Kz0zRGUudGl0bGUrIjwvYnV0dG9uPiIsdH19KSxj
PTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWw9CnQ6e2lkOm51bGwsdGl0bGU6
IiIsZmxvYXRpbmc6InJpZ2h0IixjbHM6InVpLWJ1dHRvbi1pY29uIixpY29uOiIiLHRvb2x0aXA6
Ij0KIixvbmNsaWNrOm51bGx9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPTNE
ZS5tZXJnZSh0LHRoaXMub3B0aW9uPQpzRGVmYXVsdCksdGhpcy5zZXRFbGVtZW50KHRoaXMuX3Rl
bXBsYXRlKHRoaXMub3B0aW9ucykpLHRoaXMuJGJ1dHRvbj0zRHRoaXM9Ci4kZWwuZmluZCgiLmJ1
dHRvbiIpO3ZhciBuPTNEdGhpczskKHRoaXMuZWwpLm9uKCJjbGljayIsZnVuY3Rpb24oKXskKCIu
dG9vbD0KdGlwIikuaGlkZSgpLHQub25jbGljayYmIW4uZGlzYWJsZWQmJnQub25jbGljaygpfSks
JCh0aGlzLmVsKS50b29sdGlwKHt0aXRsPQplOnQudG9vbHRpcCxwbGFjZW1lbnQ6ImJvdHRvbSJ9
KX0sZGlzYWJsZTpmdW5jdGlvbigpe3RoaXMuJGJ1dHRvbi5hZGRDbGFzcyg9CiJkaXNhYmxlZCIp
LHRoaXMuZGlzYWJsZWQ9M0QhMH0sZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy4kYnV0dG9uLnJlbW92
ZUNsYXNzKD0KImRpc2FibGVkIiksdGhpcy5kaXNhYmxlZD0zRCExfSxzZXRJY29uOmZ1bmN0aW9u
KGUpe3RoaXMuJCgiaSIpLnJlbW92ZUNsYXNzPQoodGhpcy5vcHRpb25zLmljb24pLmFkZENsYXNz
KGUpLHRoaXMub3B0aW9ucy5pY29uPTNEZX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGU9Cil7dmFyIHQ9
M0QiIjtlLnRpdGxlJiYodD0zRCJ3aWR0aDogYXV0bzsiKTt2YXIgbj0zRCc8ZGl2IGlkPTNEIicr
ZS5pZCsnIiBzdD0KeWxlPTNEImZsb2F0OiAnK2UuZmxvYXRpbmcrIjsgIit0KyciIGNsYXNzPTNE
IicrZS5jbHMrJyI+JztyZXR1cm4gZS50aXRsZT9uPQorPTNEJzxkaXYgY2xhc3M9M0QiYnV0dG9u
Ij48aSBjbGFzcz0zRCJpY29uIGZhICcrZS5pY29uKyciLz4mbmJzcDsnKyc8c3BhbiA9CmNsYXNz
PTNEInRpdGxlIj4nK2UudGl0bGUrIjwvc3Bhbj4iKyI8L2Rpdj4iOm4rPTNEJzxpIGNsYXNzPTNE
Imljb24gZmEgJytlLj0KaWNvbisnIi8+JyxuKz0zRCI8L2Rpdj4iLG59fSksaD0zREJhY2tib25l
LlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7dGl0PQpsZToiIixjbHM6IiJ9LGluaXRpYWxp
emU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0Q9CmVm
YXVsdCksdGhpcy5zZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9ucykpLCQodGhp
cy5lbCkub24oImNsaWNrIj0KLHQub25jbGljayl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1
cm4nPGRpdj48YSBocmVmPTNEImphdmFzY3JpcHQ6dm9pZCgwPQopIiBjbGFzcz0zRCJ1aS1hbmNo
b3IgJytlLmNscysnIj4nK2UudGl0bGUrIjwvYT48L2Rpdj4ifX0pLHA9M0RCYWNrYm9uZS5WaWU9
CncuZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7bWVzc2FnZTpudWxsLHN0YXR1czoiaW5mbyIscGVy
c2lzdGVudDohMX0saW5pdGlhbD0KaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVy
Z2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlzLnNldEVsZW1lPQpudCgiPGRpdj48L2Rpdj4i
KSx0aGlzLm9wdGlvbnMubWVzc2FnZSYmdGhpcy51cGRhdGUodGhpcy5vcHRpb25zKX0sdXBkYXRl
OmY9CnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1
bHQpO2lmKHQubWVzc2FnZSE9M0QiIj0KKXt0aGlzLiRlbC5odG1sKHRoaXMuX3RlbXBsYXRlKHRo
aXMub3B0aW9ucykpLHRoaXMuJGVsLmZpbmQoIi5hbGVydCIpLmFwcGVuPQpkKHQubWVzc2FnZSks
dGhpcy4kZWwuZmFkZUluKCksdGhpcy50aW1lb3V0JiZ3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMu
dGltZW89CnV0KTtpZighdC5wZXJzaXN0ZW50KXt2YXIgbj0zRHRoaXM7dGhpcy50aW1lb3V0PTNE
d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpbz0Kbigpe24uJGVsLmlzKCI6dmlzaWJsZSIpP24uJGVs
LmZhZGVPdXQoKTpuLiRlbC5oaWRlKCl9LDNlMyl9fWVsc2UgdGhpcy4kZWwuPQpmYWRlT3V0KCl9
LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdiBjbGFzcz0zRCJ1aS1tZXNzYWdlIGFs
ZXJ0IGFsZXI9CnQtJytlLnN0YXR1cysnIi8+J319KSxkPTNEQmFja2JvbmUuVmlldy5leHRlbmQo
e29wdGlvbnNEZWZhdWx0OntvbmNsaWNrOm51bD0KbCxzZWFyY2h3b3JkOiIifSxpbml0aWFsaXpl
OmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvPQpuc0RlZmF1
bHQpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKTt2YXIgbj0z
RHRoaXM7dGhpcy49Cm9wdGlvbnMub25jbGljayYmdGhpcy4kZWwub24oInN1Ym1pdCIsZnVuY3Rp
b24oZSl7dmFyIHQ9M0RuLiRlbC5maW5kKCIjc2Vhcj0KY2giKTtuLm9wdGlvbnMub25jbGljayh0
LnZhbCgpKX0pfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuJzxkaXYgY2xhc3M9Cj0zRCJ1
aS1zZWFyY2giPjxmb3JtIG9uc3VibWl0PTNEInJldHVybiBmYWxzZTsiPjxpbnB1dCBpZD0zRCJz
ZWFyY2giIGNsYXNzPQo9M0QiZm9ybS1jb250cm9sIGlucHV0LXNtIiB0eXBlPTNEInRleHQiIG5h
bWU9M0Qic2VhcmNoIiBwbGFjZWhvbGRlcj0zRCJTZWE9CnJjaC4uLiIgdmFsdWU9M0QiJytlLnNl
YXJjaHdvcmQrJyI+JysnPGJ1dHRvbiB0eXBlPTNEInN1Ym1pdCIgY2xhc3M9M0QiYnRuID0Kc2Vh
cmNoLWJ0biI+JysnPGkgY2xhc3M9M0QiZmEgZmEtc2VhcmNoIj48L2k+JysiPC9idXR0b24+Iisi
PC9mb3JtPiIrIjwvZGl2PQo+In19KSx2PTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNE
ZWZhdWx0Ont0eXBlOiJ0ZXh0IixwbGFjZWhvbGRlcjoiIiw9CmRpc2FibGVkOiExLHZpc2libGU6
ITAsY2xzOiIiLGFyZWE6ITF9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPQo9
M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGVtZW50KHRoaXMuX3Rl
bXBsYXRlKHRoaXMub3B0aW89Cm5zKSksdGhpcy5vcHRpb25zLnZhbHVlIT0zRD0zRHVuZGVmaW5l
ZCYmdGhpcy52YWx1ZSh0aGlzLm9wdGlvbnMudmFsdWUpLHRoaT0Kcy5vcHRpb25zLmRpc2FibGVk
JiZ0aGlzLiRlbC5wcm9wKCJkaXNhYmxlZCIsITApLHRoaXMub3B0aW9ucy52aXNpYmxlfHx0aGlz
PQouJGVsLmhpZGUoKTt2YXIgbj0zRHRoaXM7dGhpcy4kZWwub24oImlucHV0IixmdW5jdGlvbigp
e24ub3B0aW9ucy5vbmNoYW5nZSY9CiZuLm9wdGlvbnMub25jaGFuZ2Uobi4kZWwudmFsKCkpfSl9
LHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlIT0zRD0zRHVuZGVmaT0KbmVkJiZ0aGlzLiRlbC52
YWwoZSksdGhpcy4kZWwudmFsKCl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5hcmVh
Pyc8PQp0ZXh0YXJlYSBpZD0zRCInK2UuaWQrJyIgY2xhc3M9M0QidWktdGV4dGFyZWEgJytlLmNs
cysnIj48L3RleHRhcmVhPic6JzxpbnA9CnV0IGlkPTNEIicrZS5pZCsnIiB0eXBlPTNEIicrZS50
eXBlKyciIHZhbHVlPTNEIicrZS52YWx1ZSsnIiBwbGFjZWhvbGRlcj0zRD0KIicrZS5wbGFjZWhv
bGRlcisnIiBjbGFzcz0zRCJ1aS1pbnB1dCAnK2UuY2xzKyciPid9fSksbT0zREJhY2tib25lLlZp
ZXcuZXh0PQplbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oZSl7dGhpcy5vcHRpb25zPTNEZSx0aGlz
LnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGU9Cih0aGlzLm9wdGlvbnMpKSx0aGlzLm9wdGlvbnMu
dmFsdWUhPTNEPTNEdW5kZWZpbmVkJiZ0aGlzLnZhbHVlKHRoaXMub3B0aW9ucz0KLnZhbHVlKX0s
dmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPTNEPTNEdW5kZWZpbmVkJiZ0aGlzLiQoImhpZGRl
biIpLnZhbChlPQopLHRoaXMuJCgiaGlkZGVuIikudmFsKCl9LF90ZW1wbGF0ZTpmdW5jdGlvbihl
KXt2YXIgdD0zRCc8ZGl2IGlkPTNEIicrZS5pZCs9CiciID4nO3JldHVybiBlLmluZm8mJih0Kz0z
RCI8bGFiZWw+IitlLmluZm8rIjwvbGFiZWw+IiksdCs9M0QnPGhpZGRlbiB2YWx1ZT0KPTNEIicr
ZS52YWx1ZSsnIi8+JysiPC9kaXY+Iix0fX0pO3JldHVybntBbmNob3I6aCxCdXR0b246bCxCdXR0
b25JY29uOmMsQnV0PQp0b25NZW51OnMsSWNvbjpmLEltYWdlOnUsSW5wdXQ6dixMYWJlbDphLE1l
c3NhZ2U6cCxNb2RhbDpvLFJhZGlvQnV0dG9uOnIuUmE9CmRpb0J1dHRvbixDaGVja2JveDpyLkNo
ZWNrYm94LFJhZGlvOnIuUmFkaW8sU2VhcmNoYm94OmQsU2VsZWN0OnQsSGlkZGVuOm0sUz0KbGlk
ZXI6bixEcmlsbGRvd246aX19KSxkZWZpbmUoInBsdWdpbi9saWJyYXJ5L2pvYnMiLFsidXRpbHMv
dXRpbHMiXSxmdW5jdGlvPQpuKGUpe3JldHVybiBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe2luaXRp
YWxpemU6ZnVuY3Rpb24odCxuKXt0aGlzLmFwcD0zRHQsdGg9CmlzLm9wdGlvbnM9M0RlLm1lcmdl
KG4sdGhpcy5vcHRpb25zRGVmYXVsdCl9LHJlcXVlc3Q6ZnVuY3Rpb24oZSx0LG4scixpKXt2YT0K
ciBzPTNEdGhpcztlLnN0YXRlKCJ3YWl0IiwiUmVxdWVzdGluZyBqb2IgcmVzdWx0cy4uLiIpO3Zh
ciBvPTNEZS5nZXQoImRhdGFzPQpldF9pZF9qb2IiKTtvIT0zRCIiP3MuX3dhaXQoZSxyLGkpOnMu
X3N1Ym1pdChlLHQsbixyLGkpfSxjbGVhbnVwOmZ1bmN0aW9uKHQ9Cil7dmFyIG49M0R0aGlzLHI9
M0R0LmdldCgiZGF0YXNldF9pZF9qb2IiKTtyIT0zRCIiJiYoZS5yZXF1ZXN0KHt0eXBlOiJQVVQi
LD0KdXJsOmNvbmZpZy5yb290KyJhcGkvaGlzdG9yaWVzL25vbmUvY29udGVudHMvIityLGRhdGE6
e2RlbGV0ZWQ6ITB9LHN1Y2Nlc3M6PQpmdW5jdGlvbigpe24uX3JlZnJlc2hIZGFzKCl9fSksdC5z
ZXQoImRhdGFzZXRfaWRfam9iIiwiIikpfSxfc3VibWl0OmZ1bmN0aW89Cm4odCxuLHIsaSxzKXt2
YXIgbz0zRHRoaXMsdT0zRHQuaWQsYT0zRHQuZ2V0KCJ0eXBlIiksZj0zRHQuZGVmaW5pdGlvbjtk
YXRhPQo9M0R7dG9vbF9pZDoiY2hhcnRzIixpbnB1dHM6e2lucHV0OntpZDp0LmdldCgiZGF0YXNl
dF9pZCIpLHNyYzoiaGRhIn0sbW9kdWw9CmU6Zi5leGVjdXRlLGNvbHVtbnM6cixzZXR0aW5nczpu
fX0sdC5zdGF0ZSgid2FpdCIsIlNlbmRpbmcgam9iIHJlcXVlc3QuLi4iKT0KLGUucmVxdWVzdCh7
dHlwZToiUE9TVCIsdXJsOmNvbmZpZy5yb290KyJhcGkvdG9vbHMiLGRhdGE6ZGF0YSxzdWNjZXNz
OmZ1bmN0PQppb24oZSl7aWYoIWUub3V0cHV0c3x8ZS5vdXRwdXRzLmxlbmd0aD0zRD0zRDApdC5z
dGF0ZSgiZmFpbGVkIiwiSm9iIHN1Ym1pc3M9CmlvbiBmYWlsZWQuIE5vIHJlc3BvbnNlLiIpLHMm
JnMoKTtlbHNle28uX3JlZnJlc2hIZGFzKCk7dmFyIG49M0RlLm91dHB1dHNbMD0KXTt0LnN0YXRl
KCJ3YWl0IiwiWW91ciBqb2IgaGFzIGJlZW4gcXVldWVkLiBZb3UgbWF5IGNsb3NlIHRoZSBicm93
c2VyIHdpbmRvPQp3LiBUaGUgam9iIHdpbGwgcnVuIGluIHRoZSBiYWNrZ3JvdW5kLiIpLHQuc2V0
KCJkYXRhc2V0X2lkX2pvYiIsbi5pZCksby5hcHA9Ci5zdG9yYWdlLnNhdmUoKSxvLl93YWl0KHQs
aSxzKX19LGVycm9yOmZ1bmN0aW9uKGUpe3ZhciBuPTNEIiI7ZSYmZS5tZXNzYWdlJj0KJmUubWVz
c2FnZS5kYXRhJiZlLm1lc3NhZ2UuZGF0YS5pbnB1dCYmKG49M0RlLm1lc3NhZ2UuZGF0YS5pbnB1
dCsiLiIpLHQuc3RhPQp0ZSgiZmFpbGVkIiwiVGhpcyB2aXN1YWxpemF0aW9uIHJlcXVpcmVzIHRo
ZSAnY2hhcnRzJyB0b29sLiBQbGVhc2UgbWFrZSBzdXI9CmUgaXQgaXMgaW5zdGFsbGVkLiAiK24p
LHMmJnMoKX19KX0sX3dhaXQ6ZnVuY3Rpb24odCxuLHIpe3ZhciBpPTNEdGhpcztlLnJlcT0KdWVz
dCh7dHlwZToiR0VUIix1cmw6Y29uZmlnLnJvb3QrImFwaS9kYXRhc2V0cy8iK3QuZ2V0KCJkYXRh
c2V0X2lkX2pvYiIpLGRhPQp0YTp7fSxzdWNjZXNzOmZ1bmN0aW9uKGUpe3ZhciBzPTNEITE7c3dp
dGNoKGUuc3RhdGUpe2Nhc2Uib2siOnQuc3RhdGUoIndhaXQ9CiIsIkpvYiBjb21wbGV0ZWQgc3Vj
Y2Vzc2Z1bGx5Li4uIiksbiYmbihlKSxzPTNEITA7YnJlYWs7Y2FzZSJlcnJvciI6dC5zdGF0ZT0K
KCJmYWlsZWQiLCJKb2IgaGFzIGZhaWxlZC4gUGxlYXNlIGNoZWNrIHRoZSBoaXN0b3J5IGZvciBk
ZXRhaWxzLiIpLHImJnIoZSksPQpzPTNEITA7YnJlYWs7Y2FzZSJydW5uaW5nIjp0LnN0YXRlKCJ3
YWl0IiwiWW91ciBqb2IgaXMgcnVubmluZy4gWW91IG1heSBjbG89CnNlIHRoZSBicm93c2VyIHdp
bmRvdy4gVGhlIGpvYiB3aWxsIGNvbnRpbnVlIGluIHRoZSBiYWNrZ3JvdW5kLiIpfXN8fHNldFRp
bT0KZW91dChmdW5jdGlvbigpe2kuX3dhaXQodCxuLHIpfSxpLmFwcC5jb25maWcuZ2V0KCJxdWVy
eV90aW1lb3V0IikpfX0pfSxfcmVmPQpyZXNoSGRhczpmdW5jdGlvbigpe0dhbGF4eSYmR2FsYXh5
LmN1cnJIaXN0b3J5UGFuZWwmJkdhbGF4eS5jdXJySGlzdG9yeVBhbmU9CmwucmVmcmVzaENvbnRl
bnRzKCl9fSl9KSxkZWZpbmUoInBsdWdpbi9saWJyYXJ5L2RhdGFzZXRzIixbInV0aWxzL3V0aWxz
Il0sZj0KdW5jdGlvbihlKXtyZXR1cm4gQmFja2JvbmUuQ29sbGVjdGlvbi5leHRlbmQoe2xpc3Q6
e30sY2FjaGU6e30saW5pdGlhbGl6ZTpmPQp1bmN0aW9uKHQsbil7dGhpcy5hcHA9M0R0LHRoaXMu
b3B0aW9ucz0zRGUubWVyZ2Uobix0aGlzLm9wdGlvbnNEZWZhdWx0KX0scmU9CnF1ZXN0OmZ1bmN0
aW9uKGUpe2UuZ3JvdXBzP3RoaXMuX2dldF9ibG9ja3MoZSk6dGhpcy5fZ2V0X2RhdGFzZXQoZS5p
ZCxlLnN1Yz0KY2VzcyxlLmVycm9yKX0sX2dldF9ibG9ja3M6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24g
YyhpKXtsLl9nZXQoaSxmdW5jdGlvbigpe3ZhPQpyIHM9M0QhMTtmb3IodmFyIG8gaW4gZS5ncm91
cHMpe2Rlc3RpbmF0aW9uX2dyb3VwPTNEZS5ncm91cHNbb10sc291cmNlX2dyb3U9CnA9M0RpLmdy
b3Vwc1tvXSxkZXN0aW5hdGlvbl9ncm91cC52YWx1ZXN8fChkZXN0aW5hdGlvbl9ncm91cC52YWx1
ZXM9M0RbXSksZD0KZXN0aW5hdGlvbl9ncm91cC52YWx1ZXM9M0RkZXN0aW5hdGlvbl9ncm91cC52
YWx1ZXMuY29uY2F0KHNvdXJjZV9ncm91cC52YWx1PQplcyk7aWYoc291cmNlX2dyb3VwLnZhbHVl
cy5sZW5ndGg9M0Q9M0QwKXtzPTNEITA7YnJlYWt9fWlmKCsrZjx1JiYhcyl7biYmbig9CnBhcnNl
SW50KGYvdSoxMDApKTt2YXIgbD0zRGkuc3RhcnQrcjtpPTNEJC5leHRlbmQoITAsYSx7c3RhcnQ6
bH0pLGMoaSl9ZWxzZT0KIHQoKX0pfXZhciB0PTNEZS5zdWNjZXNzLG49M0RlLnByb2dyZXNzLHI9
M0R0aGlzLmFwcC5jb25maWcuZ2V0KCJxdWVyeV9saW1pPQp0IiksaT0zRGUuc3RhcnR8fDAscz0z
RGkrZS5xdWVyeV9saW1pdHx8aSt0aGlzLmFwcC5jb25maWcuZ2V0KCJxdWVyeV9saW1pdCI9Ciks
bz0zRE1hdGguYWJzKHMtaSk7aWYobzw9M0QwKXtjb25zb2xlLmRlYnVnKCJGQUlMRUQgLSBEYXRh
c2V0czo6cmVxdWVzdCgpID0KLSBJbnZhbGlkIHF1ZXJ5IHJhbmdlLiIpO3JldHVybn12YXIgdT0z
RE1hdGguY2VpbChvL3IpfHwxLGE9M0QkLmV4dGVuZCghMCx7PQp9LGUpLGY9M0QwLGw9M0R0aGlz
LGg9M0QkLmV4dGVuZCghMCxhLHtzdGFydDppfSk7dGhpcy5fZ2V0X2RhdGFzZXQoZS5pZCxmdW49
CmN0aW9uKCl7YyhoKX0pfSxfZ2V0X2RhdGFzZXQ6ZnVuY3Rpb24odCxuLHIpe3ZhciBpPTNEdGhp
cy5saXN0W3RdO2lmKGkpe24oaT0KKTtyZXR1cm59dmFyIHM9M0R0aGlzO2UucmVxdWVzdCh7dHlw
ZToiR0VUIix1cmw6Y29uZmlnLnJvb3QrImFwaS9kYXRhc2V0cy8iPQordCxzdWNjZXNzOmZ1bmN0
aW9uKGUpe3N3aXRjaChlLnN0YXRlKXtjYXNlImVycm9yIjpyJiZyKGUpO2JyZWFrO2RlZmF1bHQ6
cy49Cmxpc3RbdF09M0RlLG4oZSl9fX0pfSxfYmxvY2tfaWQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4g
ZS5pZCsiXyIrZS5zdGFydCsiXyIrZT0KLnN0YXJ0K3RoaXMuYXBwLmNvbmZpZy5nZXQoInF1ZXJ5
X2xpbWl0IikrIl8iK3R9LF9nZXQ6ZnVuY3Rpb24oZSx0KXtlLnN0YXJ0PQo9M0RlLnN0YXJ0fHww
O3ZhciBuPTNEW10scj0zRHt9LGk9M0QwO2Zvcih2YXIgcyBpbiBlLmdyb3Vwcyl7dmFyIG89M0Rl
Lmdyb3U9CnBzW3NdO2Zvcih2YXIgdSBpbiBvLmNvbHVtbnMpe3ZhciBhPTNEby5jb2x1bW5zW3Vd
LmluZGV4LGY9M0R0aGlzLl9ibG9ja19pZD0KKGUsYSk7aWYodGhpcy5jYWNoZVtmXXx8YT0zRD0z
RD0zRCJhdXRvInx8YT0zRD0zRD0zRCJ6ZXJvIiljb250aW51ZTshclthXSYmPQphIT0zRD0zRHVu
ZGVmaW5lZCYmKHJbYV09M0RpLG4ucHVzaChhKSxpKyspfX1pZihuLmxlbmd0aD0zRD0zRDApe3Ro
aXMuX2ZpbGw9Cl9mcm9tX2NhY2hlKGUpLHQoZSk7cmV0dXJufXZhciBsPTNEe2RhdGFzZXRfaWQ6
ZS5pZCxzdGFydDplLnN0YXJ0LGNvbHVtbnM6bj0KfSxjPTNEdGhpczt0aGlzLl9mZXRjaChsLGZ1
bmN0aW9uKHIpe2Zvcih2YXIgaSBpbiByKXt2YXIgcz0zRG5baV0sbz0zRGMuX2JsPQpvY2tfaWQo
ZSxzKTtjLmNhY2hlW29dPTNEcltpXX1jLl9maWxsX2Zyb21fY2FjaGUoZSksdChlKX0pfSxfZmls
bF9mcm9tX2NhY2g9CmU6ZnVuY3Rpb24oZSl7dmFyIHQ9M0RlLnN0YXJ0O2NvbnNvbGUuZGVidWco
IkRhdGFzZXRzOjpfZmlsbF9mcm9tX2NhY2hlKCkgLT0KIEZpbGxpbmcgcmVxdWVzdCBmcm9tIGNh
Y2hlIGF0ICIrdCsiLiIpO3ZhciBuPTNEMDtmb3IodmFyIHIgaW4gZS5ncm91cHMpe3ZhPQpyIGk9
M0RlLmdyb3Vwc1tyXTtmb3IodmFyIHMgaW4gaS5jb2x1bW5zKXt2YXIgbz0zRGkuY29sdW1uc1tz
XSx1PTNEdGhpcy5fYmw9Cm9ja19pZChlLG8uaW5kZXgpLGE9M0R0aGlzLmNhY2hlW3VdO2EmJihu
PTNETWF0aC5tYXgobixhLmxlbmd0aCkpfX1uPTNEPTNEMD0KJiZjb25zb2xlLmRlYnVnKCJEYXRh
c2V0czo6X2ZpbGxfZnJvbV9jYWNoZSgpIC0gUmVhY2hlZCBkYXRhIHJhbmdlIGxpbWl0LiIpPQo7
Zm9yKHZhciByIGluIGUuZ3JvdXBzKXt2YXIgaT0zRGUuZ3JvdXBzW3JdO2kudmFsdWVzPTNEW107
Zm9yKHZhciBmPTNEMDtmPG49CjtmKyspaS52YWx1ZXNbZl09M0R7eDpwYXJzZUludChmKSt0fX1m
b3IodmFyIHIgaW4gZS5ncm91cHMpe3ZhciBpPTNEZS5ncm91cD0Kc1tyXTtmb3IodmFyIHMgaW4g
aS5jb2x1bW5zKXt2YXIgbz0zRGkuY29sdW1uc1tzXTtzd2l0Y2goby5pbmRleCl7Y2FzZSJhdXRv
PQoiOmZvcih2YXIgZj0zRDA7ZjxuO2YrKyl7dmFyIGw9M0RpLnZhbHVlc1tmXTtsW3NdPTNEcGFy
c2VJbnQoZikrdH1icmVhaztjYXM9CmUiemVybyI6Zm9yKHZhciBmPTNEMDtmPG47ZisrKXt2YXIg
bD0zRGkudmFsdWVzW2ZdO2xbc109M0QwfWJyZWFrO2RlZmF1bHQ6dj0KYXIgdT0zRHRoaXMuX2Js
b2NrX2lkKGUsby5pbmRleCksYT0zRHRoaXMuY2FjaGVbdV07Zm9yKHZhciBmPTNEMDtmPG47Zisr
KXt2PQphciBsPTNEaS52YWx1ZXNbZl0sYz0zRGFbZl07aXNOYU4oYykmJiFvLmlzX2xhYmVsJiYo
Yz0zRDApLGxbc109M0RjfX19fX0sX2Y9CmV0Y2g6ZnVuY3Rpb24odCxuKXt2YXIgcj0zRHQuc3Rh
cnQ/dC5zdGFydDowLGk9M0R0aGlzLmFwcC5jb25maWcuZ2V0KCJxdWVyeT0KX2xpbWl0Iikscz0z
RDA7dC5jb2x1bW5zJiYocz0zRHQuY29sdW1ucy5sZW5ndGgsY29uc29sZS5kZWJ1ZygiRGF0YXNl
dHM6Ol9mPQpldGNoKCkgLSBGZXRjaGluZyAiK3MrIiBjb2x1bW4ocykgYXQgIityKyIuIikpLHM9
M0Q9M0QwJiZjb25zb2xlLmRlYnVnKCJEYXQ9CmFzZXRzOjpfZmV0Y2goKSAtIE5vIGNvbHVtbnMg
cmVxdWVzdGVkIik7dmFyIG89M0QiIjtmb3IodmFyIHUgaW4gdC5jb2x1bW5zKT0Kbys9M0R0LmNv
bHVtbnNbdV0rIiwiO289M0RvLnN1YnN0cmluZygwLG8ubGVuZ3RoLTEpO3ZhciBhPTNEdGhpcztl
LnJlcXVlc3QoPQp7dHlwZToiR0VUIix1cmw6Y29uZmlnLnJvb3QrImFwaS9kYXRhc2V0cy8iK3Qu
ZGF0YXNldF9pZCxkYXRhOntkYXRhX3R5cGU6InI9CmF3X2RhdGEiLHByb3ZpZGVyOiJkYXRhc2V0
LWNvbHVtbiIsbGltaXQ6aSxvZmZzZXQ6cixpbmRlY2VzOm99LHN1Y2Nlc3M6ZnVuYz0KdGlvbihl
KXt2YXIgdD0zRG5ldyBBcnJheShzKTtmb3IodmFyIHI9M0QwO3I8cztyKyspdFtyXT0zRFtdO2Zv
cih2YXIgciBpbiBlPQouZGF0YSl7dmFyIGk9M0RlLmRhdGFbcl07Zm9yKHZhciBvIGluIGkpe3Zh
ciB1PTNEaVtvXTt1IT0zRD0zRHVuZGVmaW5lZCYmdSE9Cj0zRDIxNDc0ODM2NDcmJnRbb10ucHVz
aCh1KX19Y29uc29sZS5kZWJ1ZygiRGF0YXNldHM6Ol9mZXRjaCgpIC0gRmV0Y2hpbmcgYz0Kb21w
bGV0ZS4iKSxuKHQpfX0pfX0pfSksZGVmaW5lKCJwbHVnaW4vbW9kZWxzL2dyb3VwIixbXSxmdW5j
dGlvbigpe3JldHVybiBCPQphY2tib25lLk1vZGVsLmV4dGVuZCh7ZGVmYXVsdHM6e2tleToiRGF0
YSBsYWJlbCIsZGF0ZToiIn0scmVzZXQ6ZnVuY3Rpb24oKXs9CnRoaXMuY2xlYXIoe3NpbGVudDoh
MH0pLnNldCh0aGlzLmRlZmF1bHRzKSx0aGlzLnRyaWdnZXIoInJlc2V0Iix0aGlzKX19KX0pLD0K
ZGVmaW5lKCJwbHVnaW4vbW9kZWxzL2dyb3VwcyIsWyJwbHVnaW4vbW9kZWxzL2dyb3VwIl0sZnVu
Y3Rpb24oZSl7cmV0dXJuIEJhPQpja2JvbmUuQ29sbGVjdGlvbi5leHRlbmQoe21vZGVsOmV9KX0p
LGRlZmluZSgicGx1Z2luL21vZGVscy9jaGFydCIsWyJwbHVnaW49Ci9tb2RlbHMvZ3JvdXBzIl0s
ZnVuY3Rpb24oZSl7cmV0dXJuIEJhY2tib25lLk1vZGVsLmV4dGVuZCh7ZGVmYXVsdHM6e2lkOm51
bD0KbCx0aXRsZToiIix0eXBlOiIiLGRhdGU6bnVsbCxzdGF0ZToiIixzdGF0ZV9pbmZvOiIiLG1v
ZGlmaWVkOiExLGRhdGFzZXRfaWQ6PQoiIixkYXRhc2V0X2lkX2pvYjoiIn0saW5pdGlhbGl6ZTpm
dW5jdGlvbih0KXt0aGlzLmdyb3Vwcz0zRG5ldyBlLHRoaXMuc2V0dGk9Cm5ncz0zRG5ldyBCYWNr
Ym9uZS5Nb2RlbH0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLmNsZWFyKHtzaWxlbnQ6ITB9KS5zZXQo
dGhpcz0KLmRlZmF1bHRzKSx0aGlzLmdyb3Vwcy5yZXNldCgpLHRoaXMuc2V0dGluZ3MuY2xlYXIo
KSx0aGlzLnRyaWdnZXIoInJlc2V0Iix0PQpoaXMpfSxjb3B5OmZ1bmN0aW9uKGUpe3ZhciB0PTNE
dGhpczt0LmNsZWFyKHtzaWxlbnQ6ITB9KS5zZXQodGhpcy5kZWZhdWx0cyk9Cix0LnNldChlLmF0
dHJpYnV0ZXMpLHQuc2V0dGluZ3M9M0RlLnNldHRpbmdzLmNsb25lKCksdC5ncm91cHMucmVzZXQo
KSxlLmdybz0KdXBzLmVhY2goZnVuY3Rpb24oZSl7dC5ncm91cHMuYWRkKGUuY2xvbmUoKSl9KSx0
LnRyaWdnZXIoImNoYW5nZSIsdCl9LHN0YXRlPQo6ZnVuY3Rpb24oZSx0KXt0aGlzLnNldCgic3Rh
dGUiLGUpLHRoaXMuc2V0KCJzdGF0ZV9pbmZvIix0KSx0aGlzLnRyaWdnZXIoInM9CmV0OnN0YXRl
IiksY29uc29sZS5kZWJ1ZygiQ2hhcnQ6c3RhdGUoKSAtICIrdCsiICgiK2UrIikiKX19KX0pO3Zh
ciBWaXN1YWxpej0KYXRpb249M0RCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe2RlZmF1bHRzOntjb25m
aWc6e319LHVybFJvb3Q6ZnVuY3Rpb24oKXt2YXIgPQplPTNEIi9hcGkvdmlzdWFsaXphdGlvbnMi
O3JldHVybiB3aW5kb3cuZ2FsYXh5X2NvbmZpZyYmZ2FsYXh5X2NvbmZpZy5yb290P2c9CmFsYXh5
X2NvbmZpZy5yb290K2U6ZX0saW5pdGlhbGl6ZTpmdW5jdGlvbihlKXtfLmlzT2JqZWN0KGUuY29u
ZmlnKSYmXy5pc09iaj0KZWN0KHRoaXMuZGVmYXVsdHMuY29uZmlnKSYmXy5kZWZhdWx0cyhlLmNv
bmZpZyx0aGlzLmRlZmF1bHRzLmNvbmZpZyksdGhpcy5fPQpzZXRVcExpc3RlbmVycygpfSxfc2V0
VXBMaXN0ZW5lcnM6ZnVuY3Rpb24oKXt9LHNldDpmdW5jdGlvbihlLHQpe2lmKGU9M0Q9M0Q9Cj0z
RCJjb25maWciKXt2YXIgbj0zRHRoaXMuZ2V0KCJjb25maWciKTtfLmlzT2JqZWN0KG4pJiYodD0z
RF8uZXh0ZW5kKF8uY2xvbj0KZShuKSx0KSl9cmV0dXJuIEJhY2tib25lLk1vZGVsLnByb3RvdHlw
ZS5zZXQuY2FsbCh0aGlzLGUsdCksdGhpc30sdG9TdHJpbmc6PQpmdW5jdGlvbigpe3ZhciBlPTNE
dGhpcy5nZXQoImlkIil8fCIiO3JldHVybiB0aGlzLmdldCgidGl0bGUiKSYmKGUrPTNEIjoiK3Q9
Cmhpcy5nZXQoInRpdGxlIikpLCJWaXN1YWxpemF0aW9uKCIrZSsiKSJ9fSksVmlzdWFsaXphdGlv
bkNvbGxlY3Rpb249M0RCYWNrYj0Kb25lLkNvbGxlY3Rpb24uZXh0ZW5kKHttb2RlbDpWaXN1YWxp
emF0aW9uLHVybDpmdW5jdGlvbigpe3JldHVybiBnYWxheHlfY29uPQpmaWcucm9vdCsiYXBpL3Zp
c3VhbGl6YXRpb25zIn0saW5pdGlhbGl6ZTpmdW5jdGlvbihlLHQpe3Q9M0R0fHx7fX0sc2V0OmZ1
bmM9CnRpb24oZSx0KXt2YXIgbj0zRHRoaXM7ZT0zRF8ubWFwKGUsZnVuY3Rpb24oZSl7dmFyIHQ9
M0RuLmdldChlLmlkKTtpZighdClyZT0KdHVybiBlO3ZhciByPTNEdC50b0pTT04oKTtyZXR1cm4g
Xy5leHRlbmQocixlKSxyfSksQmFja2JvbmUuQ29sbGVjdGlvbi5wcm90PQpvdHlwZS5zZXQuY2Fs
bCh0aGlzLGUsdCl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuWyJWaXN1YWxpemF0aW9uQ29s
bGVjdGk9Cm9uKCIsW3RoaXMuaGlzdG9yeUlkLHRoaXMubGVuZ3RoXS5qb2luKCksIikiXS5qb2lu
KCIiKX19KTtkZWZpbmUoIm12Yy92aXN1YT0KbGl6YXRpb24vdmlzdWFsaXphdGlvbi1tb2RlbCIs
ZnVuY3Rpb24oKXt9KSxkZWZpbmUoInBsdWdpbi9saWJyYXJ5L3N0b3JhZ2UiPQosWyJ1dGlscy91
dGlscyIsInBsdWdpbi9tb2RlbHMvY2hhcnQiLCJwbHVnaW4vbW9kZWxzL2dyb3VwIiwibXZjL3Zp
c3VhbGl6YXQ9Cmlvbi92aXN1YWxpemF0aW9uLW1vZGVsIl0sZnVuY3Rpb24oZSx0LG4pe3JldHVy
biBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe3Zpcz0KOm51bGwsaW5pdGlhbGl6ZTpmdW5jdGlvbihl
KXt0aGlzLmFwcD0zRGUsdGhpcy5jaGFydD0zRHRoaXMuYXBwLmNoYXJ0LHRoaXMuPQpvcHRpb25z
PTNEdGhpcy5hcHAub3B0aW9ucyx0aGlzLmlkPTNEdGhpcy5vcHRpb25zLmlkLHRoaXMudmlzPTNE
bmV3IFZpc3VhbGk9CnphdGlvbih7dHlwZToiY2hhcnRzIixjb25maWc6e2RhdGFzZXRfaWQ6dGhp
cy5vcHRpb25zLmNvbmZpZy5kYXRhc2V0X2lkLGNoYT0KcnRfZGljdDp7fX19KSx0aGlzLmlkJiYo
dGhpcy52aXMuaWQ9M0R0aGlzLmlkKTt2YXIgdD0zRHRoaXMub3B0aW9ucy5jb25maWcuPQpjaGFy
dF9kaWN0O3QmJih0aGlzLnZpcy5nZXQoImNvbmZpZyIpLmNoYXJ0X2RpY3Q9M0R0KX0sc2F2ZTpm
dW5jdGlvbigpe3ZhciA9CmU9M0R0aGlzLmFwcC5jaGFydDt0aGlzLnZpcy5nZXQoImNvbmZpZyIp
LmNoYXJ0X2RpY3Q9M0R7fTt2YXIgdD0zRGUuZ2V0KCJ0aT0KdGxlIik7dCE9M0QiIiYmdGhpcy52
aXMuc2V0KCJ0aXRsZSIsdCk7dmFyIG49M0R7YXR0cmlidXRlczplLmF0dHJpYnV0ZXMsc2V0PQp0
aW5nczplLnNldHRpbmdzLmF0dHJpYnV0ZXMsZ3JvdXBzOltdfTtlLmdyb3Vwcy5lYWNoKGZ1bmN0
aW9uKGUpe24uZ3JvdXBzLnA9CnVzaChlLmF0dHJpYnV0ZXMpfSksdGhpcy52aXMuZ2V0KCJjb25m
aWciKS5jaGFydF9kaWN0PTNEbjt2YXIgcj0zRHRoaXM7dGhpcz0KLnZpcy5zYXZlKCkuZmFpbChm
dW5jdGlvbihlLHQsbil7Y29uc29sZS5lcnJvcihlLHQsbil9KS50aGVuKGZ1bmN0aW9uKGUpe2Um
PQomZS5pZCYmKHIuaWQ9M0RlLmlkKX0pfSxsb2FkOmZ1bmN0aW9uKCl7dmFyIGU9M0R0aGlzLnZp
cy5nZXQoImNvbmZpZyIpLmNoYXI9CnRfZGljdDtpZighZS5hdHRyaWJ1dGVzKXJldHVybiExO3Zh
ciB0PTNEZS5hdHRyaWJ1dGVzLnR5cGU7aWYoIXQpcmV0dXJuIGNvbj0Kc29sZS5kZWJ1ZygiU3Rv
cmFnZTo6bG9hZCgpIC0gQ2hhcnQgdHlwZSBub3QgcHJvdmlkZWQuIEludmFsaWQgZm9ybWF0LiIp
LCExPQo7dmFyIHI9M0R0aGlzLmFwcC50eXBlcy5nZXQodCk7aWYoIXIpcmV0dXJuIGNvbnNvbGUu
ZGVidWcoIlN0b3JhZ2U6OmxvYWQoKSA9Ci0gQ2hhcnQgdHlwZSBub3Qgc3VwcG9ydGVkLiBQbGVh
c2UgcmUtY29uZmlndXJlIHRoZSBjaGFydC4gUmVzZXR0aW5nIGNoYXJ0Lj0KIiksITE7Y29uc29s
ZS5kZWJ1ZygiU3RvcmFnZTo6bG9hZCgpIC0gTG9hZGluZyBjaGFydCB0eXBlICIrdCsiLiIpLHRo
aXMuY2hhPQpydC5kZWZpbml0aW9uPTNEcix0aGlzLmNoYXJ0LnNldChlLmF0dHJpYnV0ZXMpLHRo
aXMuY2hhcnQuc3RhdGUoIm9rIiwiTG9hZGk9Cm5nIHNhdmVkIHZpc3VhbGl6YXRpb24uLi4iKSx0
aGlzLmNoYXJ0LnNldHRpbmdzLnNldChlLnNldHRpbmdzKTtmb3IodmFyIGkgaT0KbiBlLmdyb3Vw
cyl0aGlzLmNoYXJ0Lmdyb3Vwcy5hZGQobmV3IG4oZS5ncm91cHNbaV0pKTtyZXR1cm4gdGhpcy5j
aGFydC5zZXQoPQoibW9kaWZpZWQiLCExKSwhMH19KX0pLGRlZmluZSgidXRpbHMvZGVmZXJyZWQi
LFsidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihlKXs9CnJldHVybiBCYWNrYm9uZS5Nb2RlbC5leHRl
bmQoe3F1ZXVlOltdLHByb2Nlc3M6e30sY291bnRlcjowLGluaXRpYWxpemU6ZnVuYz0KdGlvbigp
e3RoaXMub24oInJlZnJlc2giLGZ1bmN0aW9uKCl7aWYodGhpcy5xdWV1ZS5sZW5ndGg+MCYmdGhp
cy5yZWFkeSgpKXt2PQphciBlPTNEdGhpcy5xdWV1ZVswXTt0aGlzLnF1ZXVlLnNwbGljZSgwLDEp
LGUmJmUoKX19KX0sZXhlY3V0ZTpmdW5jdGlvbihlKXs9CnRoaXMucXVldWUucHVzaChlKSx0aGlz
LnRyaWdnZXIoInJlZnJlc2giKX0scmVnaXN0ZXI6ZnVuY3Rpb24oKXt2YXIgdD0zRGUudT0KdWlk
KCk7cmV0dXJuIHRoaXMucHJvY2Vzc1t0XT0zRCEwLHRoaXMuY291bnRlcisrLGNvbnNvbGUuZGVi
dWcoIkRlZmVycmVkOnJlPQpnaXN0ZXIoKSAtIFJlZ2lzdGVyaW5nICIrdCksdH0sZG9uZTpmdW5j
dGlvbihlKXt0aGlzLnByb2Nlc3NbZV0mJihkZWxldGUgdGg9CmlzLnByb2Nlc3NbZV0sdGhpcy5j
b3VudGVyLS0sY29uc29sZS5kZWJ1ZygiRGVmZXJyZWQ6ZG9uZSgpIC0gVW5yZWdpc3RlcmluZz0K
ICIrZSksdGhpcy50cmlnZ2VyKCJyZWZyZXNoIikpfSxyZXNldDpmdW5jdGlvbigpe3RoaXMucXVl
dWU9M0RbXX0scmVhZHk6ZnVuPQpjdGlvbigpe3JldHVybiB0aGlzLmNvdW50ZXI9M0Q9M0QwfX0p
fSksZGVmaW5lKCJwbHVnaW4vdmlld3Mvdmlld3BvcnQiLFsibXY9CmMvdWkvdWktcG9ydGxldCIs
Im12Yy91aS91aS1taXNjIiwidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihlLHQsbil7cmV0dXJuIEJh
Yz0Ka2JvbmUuVmlldy5leHRlbmQoe2NvbnRhaW5lcl9saXN0OltdLGNhbnZhc19saXN0OltdLGlu
aXRpYWxpemU6ZnVuY3Rpb24oZSx0PQope3RoaXMuYXBwPTNEZSx0aGlzLmNoYXJ0PTNEdGhpcy5h
cHAuY2hhcnQsdGhpcy5vcHRpb25zPTNEbi5tZXJnZSh0LHRoaXMub3A9CnRpb25zRGVmYXVsdCks
dGhpcy5zZXRFbGVtZW50KCQodGhpcy5fdGVtcGxhdGUoKSkpLHRoaXMuX2Z1bGxzY3JlZW4odGhp
cy4kZT0KbCwxMDApLHRoaXMuX2NyZWF0ZUNvbnRhaW5lcigiZGl2Iik7dmFyIHI9M0R0aGlzO3Ro
aXMuY2hhcnQub24oInJlZHJhdyIsZnVuPQpjdGlvbigpe3IuX2RyYXcoci5jaGFydCl9KSx0aGlz
LmNoYXJ0Lm9uKCJzZXQ6c3RhdGUiLGZ1bmN0aW9uKCl7dmFyIGU9M0RyLiQ9CmVsLmZpbmQoIiNp
bmZvIiksdD0zRHIuJGVsLmZpbmQoIi5jaGFydHMtdmlld3BvcnQtY29udGFpbmVyIiksbj0zRGUu
ZmluZCgiIz0KaWNvbiIpO24ucmVtb3ZlQ2xhc3MoKSxlLnNob3coKSxlLmZpbmQoIiN0ZXh0Iiku
aHRtbChyLmNoYXJ0LmdldCgic3RhdGVfaW5mPQpvIikpO3ZhciBpPTNEci5jaGFydC5nZXQoInN0
YXRlIik7c3dpdGNoKGkpe2Nhc2Uib2siOmUuaGlkZSgpLHQuc2hvdygpO2JyZWE9Cms7Y2FzZSJm
YWlsZWQiOm4uYWRkQ2xhc3MoImljb24gZmEgZmEtd2FybmluZyIpLHQuaGlkZSgpO2JyZWFrO2Rl
ZmF1bHQ6bi5hZD0KZENsYXNzKCJpY29uIGZhIGZhLXNwaW5uZXIgZmEtc3BpbiIpLHQuc2hvdygp
fX0pfSxzaG93OmZ1bmN0aW9uKCl7dGhpcy4kZWwuPQpzaG93KCl9LGhpZGU6ZnVuY3Rpb24oKXt0
aGlzLiRlbC5oaWRlKCl9LF9mdWxsc2NyZWVuOmZ1bmN0aW9uKGUsdCl7ZS5jc3MoImg9CmVpZ2h0
IiwkKHdpbmRvdykuaGVpZ2h0KCktdCksJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbigpe2UuY3Nz
KCJoZWlnaHQiLCQodz0KaW5kb3cpLmhlaWdodCgpLXQpfSl9LF9jcmVhdGVDb250YWluZXI6ZnVu
Y3Rpb24oZSx0KXt0PTNEdHx8MTtmb3IodmFyIG4gaW4gPQp0aGlzLmNvbnRhaW5lcl9saXN0KXRo
aXMuY29udGFpbmVyX2xpc3Rbbl0ucmVtb3ZlKCk7dGhpcy5jb250YWluZXJfbGlzdD0zRFs9Cl0s
dGhpcy5jYW52YXNfbGlzdD0zRFtdO2Zvcih2YXIgbj0zRDA7bjx0O24rKyl7dmFyIHI9M0QkKHRo
aXMuX3RlbXBsYXRlQ29udD0KYWluZXIoZSxwYXJzZUludCgxMDAvdCkpKTt0aGlzLiRlbC5hcHBl
bmQociksdGhpcy5jb250YWluZXJfbGlzdFtuXT0zRHIsdGhpPQpzLmNhbnZhc19saXN0W25dPTNE
ci5maW5kKCIuY2hhcnRzLXZpZXdwb3J0LWNhbnZhcyIpLmF0dHIoImlkIil9fSxfZHJhdzpmdW49
CmN0aW9uKGUpe3ZhciB0PTNEdGhpcyxuPTNEdGhpcy5hcHAuZGVmZXJyZWQucmVnaXN0ZXIoKSxy
PTNEZS5nZXQoInR5cGUiKTt0aD0KaXMuY2hhcnRfZGVmaW5pdGlvbj0zRGUuZGVmaW5pdGlvbjt2
YXIgaT0zRDE7ZS5zZXR0aW5ncy5nZXQoInVzZV9wYW5lbHMiKT0KPTNEPTNEPTNEInRydWUiJiYo
aT0zRGUuZ3JvdXBzLmxlbmd0aCksdGhpcy5fY3JlYXRlQ29udGFpbmVyKHRoaXMuY2hhcnRfZGVm
PQppbml0aW9uLnRhZyxpKSxlLnN0YXRlKCJ3YWl0IiwiUGxlYXNlIHdhaXQuLi4iKTtpZighdGhp
cy5jaGFydF9kZWZpbml0aW9uLmU9CnhlY3V0ZXx8dGhpcy5jaGFydF9kZWZpbml0aW9uLmV4ZWN1
dGUmJmUuZ2V0KCJtb2RpZmllZCIpKXRoaXMuYXBwLmpvYnMuY2xlYT0KbnVwKGUpLGUuc2V0KCJt
b2RpZmllZCIsITEpO3ZhciB0PTNEdGhpcztyZXF1aXJlKFsicGx1Z2luL2NoYXJ0cy8iK3RoaXMu
YXBwPQouY2hhcnRQYXRoKHIpKyIvd3JhcHBlciJdLGZ1bmN0aW9uKHIpe2lmKHQuY2hhcnRfZGVm
aW5pdGlvbi5leGVjdXRlKXQuYXBwLmo9Cm9icy5yZXF1ZXN0KGUsdC5fZGVmYXVsdFNldHRpbmdz
U3RyaW5nKGUpLHQuX2RlZmF1bHRSZXF1ZXN0U3RyaW5nKGUpLGZ1bmN0aT0Kb24oKXt2YXIgaT0z
RG5ldyByKHQuYXBwLHtwcm9jZXNzX2lkOm4sY2hhcnQ6ZSxyZXF1ZXN0X2RpY3Rpb25hcnk6dC5f
ZGVmYXVsPQp0UmVxdWVzdERpY3Rpb25hcnkoZSksY2FudmFzX2xpc3Q6dC5jYW52YXNfbGlzdH0p
fSxmdW5jdGlvbigpe3RoaXMuYXBwLmRlZmU9CnJyZWQuZG9uZShuKX0pO2Vsc2UgdmFyIGk9M0Ru
ZXcgcih0LmFwcCx7cHJvY2Vzc19pZDpuLGNoYXJ0OmUscmVxdWVzdF9kaWN0aT0Kb25hcnk6dC5f
ZGVmYXVsdFJlcXVlc3REaWN0aW9uYXJ5KGUpLGNhbnZhc19saXN0OnQuY2FudmFzX2xpc3R9KX0p
fSxfZGVmYXVsPQp0UmVxdWVzdFN0cmluZzpmdW5jdGlvbihlKXt2YXIgdD0zRCIiLG49M0QwLHI9
M0R0aGlzO3JldHVybiBlLmdyb3Vwcy5lYWNoKGY9CnVuY3Rpb24oZSl7bisrO2Zvcih2YXIgaSBp
biByLmNoYXJ0X2RlZmluaXRpb24uY29sdW1ucyl0Kz0zRGkrIl8iK24rIjoiKyhwYT0KcnNlSW50
KGUuZ2V0KGkpKSsxKSsiLCAifSksdC5zdWJzdHJpbmcoMCx0Lmxlbmd0aC0yKX0sX2RlZmF1bHRT
ZXR0aW5nc1N0cmluPQpnOmZ1bmN0aW9uKGUpe3ZhciB0PTNEIiI7Zm9yKGtleSBpbiBlLnNldHRp
bmdzLmF0dHJpYnV0ZXMpdCs9M0RrZXkrIjoiK2Uuc2U9CnR0aW5ncy5nZXQoa2V5KSsiLCAiO3Jl
dHVybiB0LnN1YnN0cmluZygwLHQubGVuZ3RoLTIpfSxfZGVmYXVsdFJlcXVlc3REaWN0aT0Kb25h
cnk6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R7Z3JvdXBzOltdfTt0aGlzLmNoYXJ0X2RlZmluaXRpb24u
ZXhlY3V0ZT90LmlkPTNEPQplLmdldCgiZGF0YXNldF9pZF9qb2IiKTp0LmlkPTNEZS5nZXQoImRh
dGFzZXRfaWQiKTt2YXIgcj0zRDAsaT0zRHRoaXM7cmV0dXI9Cm4gZS5ncm91cHMuZWFjaChmdW5j
dGlvbihlKXt2YXIgcz0zRHt9O2Zvcih2YXIgbyBpbiBpLmNoYXJ0X2RlZmluaXRpb24uY29sdT0K
bW5zKXt2YXIgdT0zRGkuY2hhcnRfZGVmaW5pdGlvbi5jb2x1bW5zW29dO3Nbb109M0RuLm1lcmdl
KHtpbmRleDplLmdldChvKX0sPQp1KX10Lmdyb3Vwcy5wdXNoKHtrZXk6KytyKyI6IitlLmdldCgi
a2V5IiksY29sdW1uczpzfSl9KSx0fSxfdGVtcGxhdGU6ZnVuY3Q9Cmlvbigpe3JldHVybic8ZGl2
IGNsYXNzPTNEImNoYXJ0cy12aWV3cG9ydCI+PGRpdiBpZD0zRCJpbmZvIiBjbGFzcz0zRCJpbmZv
Ij0KPjxzcGFuIGlkPTNEImljb24iIGNsYXNzPTNEImljb24iLz48c3BhbiBpZD0zRCJ0ZXh0IiBj
bGFzcz0zRCJ0ZXh0IiAvPjwvZGl2PQo+PC9kaXY+J30sX3RlbXBsYXRlQ29udGFpbmVyOmZ1bmN0
aW9uKGUsdCl7cmV0dXJuJzxkaXYgY2xhc3M9M0QiY2hhcnRzLXZpZXc9CnBvcnQtY29udGFpbmVy
IiBzdHlsZT0zRCJ3aWR0aDonK3QrJyU7Ij4nKyc8ZGl2IGlkPTNEIm1lbnUiLz4nKyI8IitlKycg
aWQ9Cj0zRCInK24udXVpZCgpKyciIGNsYXNzPTNEImNoYXJ0cy12aWV3cG9ydC1jYW52YXMiPicr
IjwvZGl2PiJ9fSl9KSxkZWZpbmUoIj0KcGx1Z2luL2xpYnJhcnkvc2NyZWVuc2hvdCIsWyJsaWJz
L3VuZGVyc2NvcmUiXSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe2UuPQokZWwuZmluZCgic3Zn
IikubGVuZ3RoPjA/cihlKTpuKGUpfWZ1bmN0aW9uIG4oZSl7dHJ5e3ZhciB0PTNEZS4kZWwuZmlu
ZCgiLmo9CnFwbG90LXRhcmdldCIpLG49M0R0LmpxcGxvdFRvSW1hZ2VTdHIoe30pO24mJih3aW5k
b3cubG9jYXRpb24uaHJlZj0zRG4ucmVwbD0KYWNlKCJpbWFnZS9wbmciLCJpbWFnZS9vY3RldC1z
dHJlYW0iKSl9Y2F0Y2gocil7Y29uc29sZS5kZWJ1ZygiRkFJTEVEIC0gU2NyPQplZW5zaG90Ojpf
ZnJvbUNhbnZhcygpIC0gIityKSxlLmVycm9yJiZlLmVycm9yKCJQbGVhc2UgcmVkdWNlIHlvdXIg
Y2hhcnQgdG89CiBhIHNpbmdsZSBwYW5lbCBhbmQgdHJ5IGFnYWluLiIpfX1mdW5jdGlvbiByKGUp
e3ZhciB0PTNEZS4kZWwsbj0zRGUudXJsLHI9Cj0zRGUubmFtZSxzPTNEbmV3IFhNTFNlcmlhbGl6
ZXIsbz0zRGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLHU9M0QkKD0KbyksYT0zRHQu
ZmluZCgic3ZnIikubGVuZ3RoLGY9M0R0LmZpbmQoInN2ZyIpLmZpcnN0KCksbD0zRHBhcnNlSW50
KGYuY3NzKCJoPQplaWdodCIpKSxjPTNEcGFyc2VJbnQoZi5jc3MoIndpZHRoIikpO3UuYXR0cigi
d2lkdGgiLGMqYSksdS5hdHRyKCJoZWlnaHQiLGw9CiksKCFvLmdldENvbnRleHR8fCFvLmdldENv
bnRleHQoIjJkIikpJiZhbGVydCgiWW91ciBicm93c2VyIGRvZXNuJ3Qgc3VwcG9ydD0KIHRoaXMg
ZmVhdHVyZSwgcGxlYXNlIHVzZSBhIG1vZGVybiBicm93c2VyIik7dmFyIGg9M0RvLmdldENvbnRl
eHQoIjJkIikscD0KPTNEMDt0LmZpbmQoInN2ZyIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT0zRCQo
dGhpcyk7ZS5hdHRyKHt2ZXJzaW9uOiIxLjEiLHhtPQpsbnM6Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIix3aWR0aDpjLGhlaWdodDpsfSk7dmFyIHQ9M0RzLnNlcmlhbGl6ZVRvU3Q9CnJpbmco
dGhpcyk7aC5kcmF3U3ZnKHQscCwwLGMsbCkscCs9M0RjfSksd2luZG93LmxvY2F0aW9uLmhyZWY9
M0RpKG8sby5nZXRDbz0KbnRleHQoIjJkIiksIndoaXRlIikucmVwbGFjZSgiaW1hZ2UvcG5nIiwi
aW1hZ2Uvb2N0ZXQtc3RyZWFtIil9ZnVuY3Rpb24gaShlPQosdCxuKXt2YXIgcj0zRGUud2lkdGgs
aT0zRGUuaGVpZ2h0LHM7aWYobil7cz0zRHQuZ2V0SW1hZ2VEYXRhKDAsMCxyLGkpO3ZhciA9Cm89
M0R0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbjt0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0z
RCJkZXN0aW5hdGlvbi1vdj0KZXIiLHQuZmlsbFN0eWxlPTNEbix0LmZpbGxSZWN0KDAsMCxyLGkp
fXZhciB1PTNEZS50b0RhdGFVUkwoImltYWdlL3BuZyIpO3JlPQp0dXJuIG4mJih0LmNsZWFyUmVj
dCgwLDAscixpKSx0LnB1dEltYWdlRGF0YShzLDAsMCksdC5nbG9iYWxDb21wb3NpdGVPcGVyYXQ9
Cmlvbj0zRG8pLHV9ZnVuY3Rpb24gcyhlKXt3aW5kb3cubG9jYXRpb24uaHJlZj0zRCJkYXRhOm5v
bmUvbm9uZTtiYXNlNjQsIitidD0Kb2EoYShlKS5zdHJpbmcpfWZ1bmN0aW9uIG8oZSl7Zm9yKHZh
ciB0IGluIGRvY3VtZW50LnN0eWxlU2hlZXRzKXt2YXIgbj0zRGRvPQpjdW1lbnQuc3R5bGVTaGVl
dHNbdF0scj0zRG4uY3NzUnVsZXM7aWYocilmb3IodmFyIGk9M0QwLHM9M0RyLmxlbmd0aDtpPHM7
aSs9CispdHJ5e2UuZmluZChyW2ldLnNlbGVjdG9yVGV4dCkuZWFjaChmdW5jdGlvbihlLHQpe3Qu
c3R5bGUuY3NzVGV4dCs9M0RyW2ldLj0Kc3R5bGUuY3NzVGV4dH0pfWNhdGNoKG8pe319fWZ1bmN0
aW9uIHUoZSl7dmFyIHQ9M0RhKGUpLG49M0R7ZmlsZW5hbWU6bmFtZXx8PQoiY2hhcnQiLHR5cGU6
ImFwcGxpY2F0aW9uL3BkZiIsaGVpZ2h0OnQuaGVpZ2h0LHdpZHRoOnQud2lkdGgsc2NhbGU6Mixz
dmc6dC49CnN0cmluZ30scj0zRCQoImJvZHkiKSxpPTNEci5maW5kKCIjdmlld3BvcnQtZm9ybSIp
O2kubGVuZ3RoPTNEPTNEPTNEMCYmKGk9Cj0zRCQoIjxmb3JtPiIse2lkOiJ2aWV3cG9ydC1mb3Jt
IixtZXRob2Q6InBvc3QiLGFjdGlvbjoiaHR0cDovL2V4cG9ydC5oaWdoYz0KaGFydHMuY29tLyIs
ZGlzcGxheToibm9uZSJ9KSxyLmFwcGVuZChpKSksaS5lbXB0eSgpO2ZvcihuYW1lIGluIG4pe3Zh
ciBzPTNEPQokKCI8aW5wdXQvPiIse3R5cGU6ImhpZGRlbiIsbmFtZTpuYW1lLHZhbHVlOm5bbmFt
ZV19KTtpLmFwcGVuZChzKX10cnl7aS5zdWI9Cm1pdCgpfWNhdGNoKG8pe2NvbnNvbGUubG9nKG8p
fX1mdW5jdGlvbiBhKGUpe2lmKGUuJGVsLmZpbmQoInN2ZyIpLmxlbmd0aD0zRD0KPTNEMCYmZS5l
cnJvcil7ZS5lcnJvcigiTm8gU1ZHIGZvdW5kLiBUaGlzIGNoYXJ0IHR5cGUgZG9lcyBub3Qgc3Vw
cG9ydCBTVkcvPQpQREYgZXhwb3J0LiIpO3JldHVybn12YXIgdD0zRGUuJGVsLG49M0R0LmZpbmQo
InN2ZyIpLmxlbmd0aCxyPTNEcGFyc2VJbnQodC49CmZpbmQoInN2ZyIpLmZpcnN0KCkuY3NzKCJo
ZWlnaHQiKSksaT0zRHBhcnNlSW50KHQuZmluZCgic3ZnIikuZmlyc3QoKS5jc3MoIj0Kd2lkdGgi
KSkscz0zRG5ldyBYTUxTZXJpYWxpemVyLHU9M0QkKCI8c3ZnLz4iKTt1LmF0dHIoe3ZlcnNpb246
IjEuMSIseG1sbnM6PQoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOmkqbixoZWln
aHQ6cn0pO3ZhciBhPTNEIiIsZj0zRDA7cmV0dXJuIHQ9Ci5maW5kKCJzdmciKS5lYWNoKGZ1bmN0
aW9uKCl7dmFyIGU9M0QkKHRoaXMpLmNsb25lKCk7byhlKTt2YXIgdD0zRCQoJzxnIHRyYT0KbnNm
b3JtPTNEInRyYW5zbGF0ZSgnK2YrJywgMCkiPicpO3QuYXBwZW5kKGUuZmluZCgiZyIpLmZpcnN0
KCkpLHUuYXBwZW5kKHQpPQosZis9M0RpfSkse3N0cmluZzpzLnNlcmlhbGl6ZVRvU3RyaW5nKHVb
MF0pLGhlaWdodDpyLHdpZHRoOml9fXJldHVybntjcmVhdGU9ClBORzp0LGNyZWF0ZVNWRzpzLGNy
ZWF0ZVBERjp1fX0pLGRlZmluZSgicGx1Z2luL3ZpZXdzL3ZpZXdlciIsWyJ1dGlscy91dGlscz0K
IiwibXZjL3VpL3VpLW1pc2MiLCJtdmMvdWkvdWktcG9ydGxldCIsInBsdWdpbi92aWV3cy92aWV3
cG9ydCIsInBsdWdpbi9saWJyPQphcnkvc2NyZWVuc2hvdCJdLGZ1bmN0aW9uKGUsdCxuLHIsaSl7
cmV0dXJuIEJhY2tib25lLlZpZXcuZXh0ZW5kKHtpbml0aWFsaXo9CmU6ZnVuY3Rpb24oZSxzKXt0
aGlzLmFwcD0zRGUsdGhpcy5jaGFydD0zRHRoaXMuYXBwLmNoYXJ0LHRoaXMudmlld3BvcnRfdmll
dz0KPTNEbmV3IHIoZSk7dmFyIG89M0R0aGlzO3RoaXMubWVzc2FnZT0zRG5ldyB0Lk1lc3NhZ2U7
dmFyIHU9M0RuZXcgdC5CdXR0b25NPQplbnUoe2ljb246ImZhLWNhbWVyYSIsdGl0bGU6IlNjcmVl
bnNob3QiLHRvb2x0aXA6IkRvd25sb2FkIGFzIFBORywgU1ZHIG9yIFA9CkRGIGZpbGUifSk7dS5h
ZGRNZW51KHtpZDoiYnV0dG9uLXBuZyIsdGl0bGU6IlNhdmUgYXMgUE5HIixpY29uOiJmYS1maWxl
Iixvbj0KY2xpY2s6ZnVuY3Rpb24oKXtvLl93YWl0KG8uY2hhcnQsZnVuY3Rpb24oKXtpLmNyZWF0
ZVBORyh7JGVsOm8udmlld3BvcnRfdmllPQp3LiRlbCx0aXRsZTpvLmNoYXJ0LmdldCgidGl0bGUi
KSxlcnJvcjpmdW5jdGlvbihlKXtvLm1lc3NhZ2UudXBkYXRlKHttZXNzYWc9CmU6ZSxzdGF0dXM6
ImRhbmdlciJ9KX19KX0pfX0pLHUuYWRkTWVudSh7aWQ6ImJ1dHRvbi1zdmciLHRpdGxlOiJTYXZl
IGFzIFNWRz0KIixpY29uOiJmYS1maWxlLXRleHQtbyIsb25jbGljazpmdW5jdGlvbigpe28uX3dh
aXQoby5jaGFydCxmdW5jdGlvbigpe2kuY3JlPQphdGVTVkcoeyRlbDpvLnZpZXdwb3J0X3ZpZXcu
JGVsLHRpdGxlOm8uY2hhcnQuZ2V0KCJ0aXRsZSIpLGVycm9yOmZ1bmN0aW9uKGU9Cil7by5tZXNz
YWdlLnVwZGF0ZSh7bWVzc2FnZTplLHN0YXR1czoiZGFuZ2VyIn0pfX0pfSl9fSksdS5hZGRNZW51
KHtpZDoiYnV0dD0Kb24tcG5nIix0aXRsZToiU2F2ZSBhcyBQREYiLGljb246ImZhLWZpbGUtbyIs
b25jbGljazpmdW5jdGlvbigpe28uYXBwLm1vZGFsPQouc2hvdyh7dGl0bGU6IlNlbmQgY2hhcnQg
ZGF0YSBmb3IgUERGIGNyZWF0aW9uIixib2R5OiJHYWxheHkgZG9lcyBub3QgcHJvdmk9CmRlIGlu
dGVncmF0ZWQgUERGIGV4cG9ydCBzY3JpcHRzLiBZb3UgbWF5IGNsaWNrICdDb250aW51ZScgdG8g
Y3JlYXRlIHRoZSBQRD0KRiBieSB1c2luZyBhIDNyZCBwYXJ0eSBzZXJ2aWNlIChodHRwczovL2V4
cG9ydC5oaWdoY2hhcnRzLmNvbSkuIixidXR0b25zOntDPQphbmNlbDpmdW5jdGlvbigpe28uYXBw
Lm1vZGFsLmhpZGUoKX0sQ29udGludWU6ZnVuY3Rpb24oKXtvLmFwcC5tb2RhbC5oaWRlKCk9Cixv
Ll93YWl0KG8uY2hhcnQsZnVuY3Rpb24oKXtpLmNyZWF0ZVBERih7JGVsOm8udmlld3BvcnRfdmll
dy4kZWwsdGl0bGU6by5jaD0KYXJ0LmdldCgidGl0bGUiKSxlcnJvcjpmdW5jdGlvbihlKXtvLm1l
c3NhZ2UudXBkYXRlKHttZXNzYWdlOmUsc3RhdHVzOiJkYW5nPQplciJ9KX19KX0pfX19KX19KSx0
aGlzLnBvcnRsZXQ9M0RuZXcgbi5WaWV3KHtpY29uOiJmYS1iYXItY2hhcnQtbyIsdGl0bGU6IlY9
Cmlld3BvcnQiLHNjcm9sbGFibGU6ITEsb3BlcmF0aW9uczp7ZWRpdF9idXR0b246bmV3IHQuQnV0
dG9uSWNvbih7aWNvbjoiZmEtZT0KZGl0Iix0b29sdGlwOiJDdXN0b21pemUgdGhpcyBjaGFydCIs
dGl0bGU6IkVkaXRvciIsb25jbGljazpmdW5jdGlvbigpe28uX3dhPQppdChvLmNoYXJ0LGZ1bmN0
aW9uKCl7by5hcHAuZ28oImVkaXRvciIpfSl9fSkscGljdHVyZV9idXR0b25fbWVudTp1fX0pLHRo
aXM9Ci5wb3J0bGV0LmFwcGVuZCh0aGlzLm1lc3NhZ2UuJGVsKSx0aGlzLnBvcnRsZXQuYXBwZW5k
KHRoaXMudmlld3BvcnRfdmlldy4kZT0KbCksdGhpcy5zZXRFbGVtZW50KHRoaXMucG9ydGxldC4k
ZWwpO3ZhciBvPTNEdGhpczt0aGlzLmNoYXJ0Lm9uKCJjaGFuZ2U6dGl0PQpsZSIsZnVuY3Rpb24o
KXtvLl9yZWZyZXNoVGl0bGUoKX0pfSxzaG93OmZ1bmN0aW9uKCl7dGhpcy4kZWwuc2hvdygpLCQo
d2luZG89CncpLnRyaWdnZXIoInJlc2l6ZSIpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy4kZWwuaGlk
ZSgpfSxfcmVmcmVzaFRpdGxlOmZ1bmN0aT0Kb24oKXt2YXIgZT0zRHRoaXMuY2hhcnQuZ2V0KCJ0
aXRsZSIpO3RoaXMucG9ydGxldC50aXRsZShlKX0sX3dhaXQ6ZnVuY3Rpb24oPQplLHQpe3RoaXMu
YXBwLmRlZmVycmVkLnJlYWR5KCk/dCgpOnRoaXMubWVzc2FnZS51cGRhdGUoe21lc3NhZ2U6Illv
dXIgY2hhcnQ9CiBpcyBjdXJyZW50bHkgYmVpbmcgcHJvY2Vzc2VkLiBQbGVhc2Ugd2FpdCBhbmQg
dHJ5IGFnYWluLiJ9KX19KX0pLGRlZmluZSgibT0KdmMvdWkvdWktdGFicyIsWyJ1dGlscy91dGls
cyJdLGZ1bmN0aW9uKGUpe3ZhciB0PTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wPQp0aW9uc0Rl
ZmF1bHQ6e3RpdGxlX25ldzoiIixvcGVyYXRpb25zOm51bGwsb25uZXc6bnVsbCxtYXg6bnVsbCxv
bmNoYW5nZTpudWw9Cmx9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy52aXNpYmxlPTNEITEs
dGhpcy4kbmF2PTNEbnVsbCx0aGlzLiRjb250ZW50PQo9M0RudWxsLHRoaXMuZmlyc3RfdGFiPTNE
bnVsbCx0aGlzLmN1cnJlbnRfaWQ9M0RudWxsLHRoaXMub3B0aW9ucz0zRGUubWVyZ2U9Cih0LHRo
aXMub3B0aW9uc0RlZmF1bHQpO3ZhciBuPTNEJCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMp
KTt0aGlzLiRuYXY9Cj0zRG4uZmluZCgiLnRhYi1uYXZpZ2F0aW9uIiksdGhpcy4kY29udGVudD0z
RG4uZmluZCgiLnRhYi1jb250ZW50IiksdGhpcy5zZT0KdEVsZW1lbnQobiksdGhpcy5saXN0PTNE
e307dmFyIHI9M0R0aGlzO3RoaXMub3B0aW9ucy5vcGVyYXRpb25zJiYkLmVhY2godGhpPQpzLm9w
dGlvbnMub3BlcmF0aW9ucyxmdW5jdGlvbihlLHQpe3QuJGVsLnByb3AoImlkIixlKSxyLiRuYXYu
ZmluZCgiLm9wZXJhdGk9Cm9ucyIpLmFwcGVuZCh0LiRlbCl9KTtpZih0aGlzLm9wdGlvbnMub25u
ZXcpe3ZhciBpPTNEJCh0aGlzLl90ZW1wbGF0ZV90YWJfbj0KZXcodGhpcy5vcHRpb25zKSk7dGhp
cy4kbmF2LmFwcGVuZChpKSxpLnRvb2x0aXAoe3RpdGxlOiJBZGQgYSBuZXcgdGFiIixwbGFjPQpl
bWVudDoiYm90dG9tIixjb250YWluZXI6ci4kZWx9KSxpLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7
aS50b29sdGlwKCJoaWRlIik9CixyLm9wdGlvbnMub25uZXcoKX0pfX0sc2l6ZTpmdW5jdGlvbigp
e3JldHVybiBfLnNpemUodGhpcy5saXN0KX0sY3VycmVudDpmdT0KbmN0aW9uKCl7cmV0dXJuIHRo
aXMuJGVsLmZpbmQoIi50YWItcGFuZS5hY3RpdmUiKS5hdHRyKCJpZCIpfSxhZGQ6ZnVuY3Rpb24o
PQplKXt2YXIgdD0zRHRoaXMsbj0zRGUuaWQscj0zRCQodGhpcy5fdGVtcGxhdGVfdGFiKGUpKSxp
PTNEJCh0aGlzLl90ZW1wbGF0ZV89CnRhYl9jb250ZW50KGUpKTt0aGlzLmxpc3Rbbl09M0RlLm9u
ZGVsPyEwOiExLHRoaXMub3B0aW9ucy5vbm5ldz90aGlzLiRuYXYuZj0KaW5kKCIjbmV3LXRhYiIp
LmJlZm9yZShyKTp0aGlzLiRuYXYuYXBwZW5kKHIpLGkuYXBwZW5kKGUuJGVsKSx0aGlzLiRjb250
ZW50PQouYXBwZW5kKGkpLHRoaXMuc2l6ZSgpPTNEPTNEMSYmKHIuYWRkQ2xhc3MoImFjdGl2ZSIp
LGkuYWRkQ2xhc3MoImFjdGl2ZSIpLHQ9Cmhpcy5maXJzdF90YWI9M0RuKSx0aGlzLm9wdGlvbnMu
bWF4JiZ0aGlzLnNpemUoKT49M0R0aGlzLm9wdGlvbnMubWF4JiZ0aGlzLj0KJGVsLmZpbmQoIiNu
ZXctdGFiIikuaGlkZSgpO2lmKGUub25kZWwpe3ZhciBzPTNEci5maW5kKCIjZGVsZXRlIik7cy50
b29sdGlwPQooe3RpdGxlOiJEZWxldGUgdGhpcyB0YWIiLHBsYWNlbWVudDoiYm90dG9tIixjb250
YWluZXI6dC4kZWx9KSxzLm9uKCJjbGljayI9CixmdW5jdGlvbigpe3JldHVybiBzLnRvb2x0aXAo
ImRlc3Ryb3kiKSx0LiRlbC5maW5kKCIudG9vbHRpcCIpLnJlbW92ZSgpLGUubz0KbmRlbCgpLCEx
fSl9ci5vbigiY2xpY2siLGZ1bmN0aW9uKHIpe3IucHJldmVudERlZmF1bHQoKSxlLm9uY2xpY2s/
ZS5vbmNsaWNrPQooKTp0LnNob3cobil9KSx0aGlzLmN1cnJlbnRfaWR8fCh0aGlzLmN1cnJlbnRf
aWQ9M0RuKX0sZGVsOmZ1bmN0aW9uKGUpe3RoaXM9Ci4kZWwuZmluZCgiI3RhYi0iK2UpLnJlbW92
ZSgpLHRoaXMuJGVsLmZpbmQoIiMiK2UpLnJlbW92ZSgpLHRoaXMuZmlyc3RfdGFiPQo9M0Q9M0Rl
JiYodGhpcy5maXJzdF90YWI9M0RudWxsKSx0aGlzLmZpcnN0X3RhYiE9M0RudWxsJiZ0aGlzLnNo
b3codGhpcy5maXI9CnN0X3RhYiksdGhpcy5saXN0W2VdJiZkZWxldGUgdGhpcy5saXN0W2VdLHRo
aXMuc2l6ZSgpPHRoaXMub3B0aW9ucy5tYXgmJnRoaT0Kcy4kZWwuZmluZCgiI25ldy10YWIiKS5z
aG93KCl9LGRlbFJlbW92YWJsZTpmdW5jdGlvbigpe2Zvcih2YXIgZSBpbiB0aGlzLmxpPQpzdCl0
aGlzLmRlbChlKX0sc2hvdzpmdW5jdGlvbihlKXt0aGlzLiRlbC5mYWRlSW4oImZhc3QiKSx0aGlz
LnZpc2libGU9M0QhMCw9CmUmJih0aGlzLiRlbC5maW5kKCIjdGFiLSIrdGhpcy5jdXJyZW50X2lk
KS5yZW1vdmVDbGFzcygiYWN0aXZlIiksdGhpcy4kZWwuZj0KaW5kKCIjIit0aGlzLmN1cnJlbnRf
aWQpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKSx0aGlzLiRlbC5maW5kKCIjdGFiLSIrZSkuYWRkPQpD
bGFzcygiYWN0aXZlIiksdGhpcy4kZWwuZmluZCgiIyIrZSkuYWRkQ2xhc3MoImFjdGl2ZSIpLHRo
aXMuY3VycmVudF9pZD0zRGU9CiksdGhpcy5vcHRpb25zLm9uY2hhbmdlJiZ0aGlzLm9wdGlvbnMu
b25jaGFuZ2UoZSl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLiRlbD0KLmZhZGVPdXQoImZhc3QiKSx0
aGlzLnZpc2libGU9M0QhMX0saGlkZU9wZXJhdGlvbjpmdW5jdGlvbihlKXt0aGlzLiRuYXYuZmlu
PQpkKCIjIitlKS5oaWRlKCl9LHNob3dPcGVyYXRpb246ZnVuY3Rpb24oZSl7dGhpcy4kbmF2LmZp
bmQoIiMiK2UpLnNob3coKX0sc2U9CnRPcGVyYXRpb246ZnVuY3Rpb24oZSx0KXt2YXIgbj0zRHRo
aXMuJG5hdi5maW5kKCIjIitlKTtuLm9mZigiY2xpY2siKSxuLm9uKD0KImNsaWNrIix0KX0sdGl0
bGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj0zRHRoaXMuJGVsLmZpbmQoIiN0YWItdGl0bGUtdGV4dC0i
K2UpPQo7cmV0dXJuIHQmJm4uaHRtbCh0KSxuLmh0bWwoKX0scmV0aXRsZTpmdW5jdGlvbihlKXt2
YXIgdD0zRDA7Zm9yKHZhciBuIGluIHQ9Cmhpcy5saXN0KXRoaXMudGl0bGUobiwrK3QrIjogIitl
KX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3JldHVybic8ZGl2IGNsYXNzPQo9M0QidWktdGFicyB0
YWJiYWJsZSB0YWJzLWxlZnQiPjx1bCBpZD0zRCJ0YWItbmF2aWdhdGlvbiIgY2xhc3M9M0QidGFi
LW5hdmk9CmdhdGlvbiBuYXYgbmF2LXRhYnMiPjxkaXYgY2xhc3M9M0Qib3BlcmF0aW9ucyIgc3R5
bGU9M0QiZmxvYXQ6IHJpZ2h0OyBtYXJnaT0Kbi1ib3R0b206IDRweDsiPjwvZGl2PjwvdWw+PGRp
diBpZD0zRCJ0YWItY29udGVudCIgY2xhc3M9M0QidGFiLWNvbnRlbnQiLz48PQovZGl2Pid9LF90
ZW1wbGF0ZV90YWJfbmV3OmZ1bmN0aW9uKGUpe3JldHVybic8bGkgaWQ9M0QibmV3LXRhYiI+PGEg
aHJlZj0zRCI9CmphdmFzY3JpcHQ6dm9pZCgwKTsiPjxpIGNsYXNzPTNEInVpLXRhYnMtYWRkIGZh
IGZhLXBsdXMtY2lyY2xlIi8+JytlLnRpdGxlXz0KbmV3KyI8L2E+IisiPC9saT4ifSxfdGVtcGxh
dGVfdGFiOmZ1bmN0aW9uKGUpe3ZhciB0PTNEJzxsaSBpZD0zRCJ0YWItJytlLmlkPQorJyIgY2xh
c3M9M0QidGFiLWVsZW1lbnQiPicrJzxhIGlkPTNEInRhYi10aXRsZS1saW5rLScrZS5pZCsnIiB0
aXRsZT0zRCIiIGg9CnJlZj0zRCIjJytlLmlkKyciIGRhdGEtb3JpZ2luYWwtdGl0bGU9M0QiIj4n
Kyc8c3BhbiBpZD0zRCJ0YWItdGl0bGUtdGV4dC0nKz0KZS5pZCsnIiBjbGFzcz0zRCJ0YWItdGl0
bGUtdGV4dCI+JytlLnRpdGxlKyI8L3NwYW4+IjtyZXR1cm4gZS5vbmRlbCYmKHQrPTNEPQonPGkg
aWQ9M0QiZGVsZXRlIiBjbGFzcz0zRCJ1aS10YWJzLWRlbGV0ZSBmYSBmYS1taW51cy1jaXJjbGUi
Lz4nKSx0Kz0zRCI8L2E9Cj48L2xpPiIsdH0sX3RlbXBsYXRlX3RhYl9jb250ZW50OmZ1bmN0aW9u
KGUpe3JldHVybic8ZGl2IGlkPTNEIicrZS5pZCsnIiBjbD0KYXNzPTNEInRhYi1wYW5lIi8+J319
KTtyZXR1cm57Vmlldzp0fX0pLGRlZmluZSgibXZjL3VpL3VpLXRhYmxlIixbInV0aWxzL3V0PQpp
bHMiXSxmdW5jdGlvbihlKXt2YXIgdD0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtyb3c6bnVsbCxy
b3dfY291bnQ6MCxvcHRpb249CnNEZWZhdWx0Ontjb250ZW50OiJObyBjb250ZW50IGF2YWlsYWJs
ZS4iLG9uY2hhbmdlOm51bGwsb25kYmxjbGljazpudWxsLG9uYz0Kb25maXJtOm51bGwsY2xzOiJ1
aS10YWJsZSIsY2xzX3RyOiIifSxldmVudHM6e2NsaWNrOiJfb25jbGljayIsZGJsY2xpY2s6Il9v
PQpuZGJsY2xpY2sifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVy
Z2UodCx0aGlzLm9wdGlvbnNEZWY9CmF1bHQpO3ZhciBuPTNEJCh0aGlzLl90ZW1wbGF0ZSh0aGlz
Lm9wdGlvbnMpKTt0aGlzLiR0aGVhZD0zRG4uZmluZCgidGhlYWQiKT0KLHRoaXMuJHRib2R5PTNE
bi5maW5kKCJ0Ym9keSIpLHRoaXMuJHRtZXNzYWdlPTNEbi5maW5kKCJ0bWVzc2FnZSIpLHRoaXMu
c2V0PQpFbGVtZW50KG4pLHRoaXMucm93PTNEdGhpcy5fcm93KCl9LGFkZEhlYWRlcjpmdW5jdGlv
bihlKXt2YXIgdD0zRCQoIjx0aD48L3Q9Cmg+Iik7dC5hcHBlbmQoZSksdGhpcy5yb3cuYXBwZW5k
KHQpfSxhcHBlbmRIZWFkZXI6ZnVuY3Rpb24oKXt0aGlzLiR0aGVhZC5hcD0KcGVuZCh0aGlzLnJv
dyksdGhpcy5yb3c9M0QkKCI8dHI+PC90cj4iKX0sYWRkOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0z
RCQoIjx0PQpkPjwvdGQ+Iik7dCYmci5jc3MoIndpZHRoIix0KSxuJiZyLmNzcygidGV4dC1hbGln
biIsbiksci5hcHBlbmQoZSksdGhpcy5yb3c9Ci5hcHBlbmQocil9LGFwcGVuZDpmdW5jdGlvbihl
LHQpe3RoaXMuX2NvbW1pdChlLHQsITEpfSxwcmVwZW5kOmZ1bmN0aW9uKGUsdD0KKXt0aGlzLl9j
b21taXQoZSx0LCEwKX0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLiRlbC5maW5kKCIjIitl
KX0sZGVsOmZ1PQpuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLiR0Ym9keS5maW5kKCIjIitlKTt0Lmxl
bmd0aD4wJiYodC5yZW1vdmUoKSx0aGlzLnJvd189CmNvdW50LS0sdGhpcy5fcmVmcmVzaCgpKX0s
ZGVsQWxsOmZ1bmN0aW9uKCl7dGhpcy4kdGJvZHkuZW1wdHkoKSx0aGlzLnJvd19jbz0KdW50PTNE
MCx0aGlzLl9yZWZyZXNoKCl9LHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuYmVmb3JlPTNEdGhpcy4k
dGJvZHkuZmluZCgiPQouY3VycmVudCIpLmF0dHIoImlkIiksZSE9M0Q9M0R1bmRlZmluZWQmJih0
aGlzLiR0Ym9keS5maW5kKCJ0ciIpLnJlbW92ZUNsYXM9CnMoImN1cnJlbnQiKSxlJiZ0aGlzLiR0
Ym9keS5maW5kKCIjIitlKS5hZGRDbGFzcygiY3VycmVudCIpKTt2YXIgdD0zRHRoaXMuJD0KdGJv
ZHkuZmluZCgiLmN1cnJlbnQiKS5hdHRyKCJpZCIpO3JldHVybiB0PTNEPTNEPTNEdW5kZWZpbmVk
P251bGw6KHQhPTNEdGhpPQpzLmJlZm9yZSYmdGhpcy5vcHRpb25zLm9uY2hhbmdlJiZ0aGlzLm9w
dGlvbnMub25jaGFuZ2UoZSksdCl9LHNpemU6ZnVuY3Rpb249Cigpe3JldHVybiB0aGlzLiR0Ym9k
eS5maW5kKCJ0ciIpLmxlbmd0aH0sX2NvbW1pdDpmdW5jdGlvbihlLHQsbil7dGhpcy5kZWwoZT0K
KSx0aGlzLnJvdy5hdHRyKCJpZCIsZSksbj90aGlzLiR0Ym9keS5wcmVwZW5kKHRoaXMucm93KTp0
aGlzLiR0Ym9keS5hcHBlbmQoPQp0aGlzLnJvdyksdCYmKHRoaXMucm93LmhpZGUoKSx0aGlzLnJv
dy5mYWRlSW4oKSksdGhpcy5yb3c9M0R0aGlzLl9yb3coKSx0aGk9CnMucm93X2NvdW50KyssdGhp
cy5fcmVmcmVzaCgpfSxfcm93OmZ1bmN0aW9uKCl7cmV0dXJuICQoJzx0ciBjbGFzcz0zRCInK3Ro
aT0Kcy5vcHRpb25zLmNsc190cisnIj48L3RyPicpfSxfb25jbGljazpmdW5jdGlvbihlKXt2YXIg
dD0zRHRoaXMudmFsdWUoKSxuPTNEPQokKGUudGFyZ2V0KS5jbG9zZXN0KCJ0ciIpLmF0dHIoImlk
Iik7biE9M0QiIiYmbiYmdCE9M0RuJiYodGhpcy5vcHRpb25zLm9uY289Cm5maXJtP3RoaXMub3B0
aW9ucy5vbmNvbmZpcm0obik6dGhpcy52YWx1ZShuKSl9LF9vbmRibGNsaWNrOmZ1bmN0aW9uKGUp
e3Zhcj0KIHQ9M0R0aGlzLnZhbHVlKCk7dCYmdGhpcy5vcHRpb25zLm9uZGJsY2xpY2smJnRoaXMu
b3B0aW9ucy5vbmRibGNsaWNrKHQpfSxfPQpyZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5yb3dfY291
bnQ9M0Q9M0QwP3RoaXMuJHRtZXNzYWdlLnNob3coKTp0aGlzLiR0bWVzc2E9CmdlLmhpZGUoKX0s
X3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3JldHVybic8ZGl2Pjx0YWJsZSBjbGFzcz0zRCInK2UuY2xz
KyciPicrIj0KPHRoZWFkPjwvdGhlYWQ+IisiPHRib2R5PjwvdGJvZHk+IisiPC90YWJsZT4iKyI8
dG1lc3NhZ2U+IitlLmNvbnRlbnQrIjwvdG1lPQpzc2FnZT4iKyI8ZGl2PiJ9fSk7cmV0dXJue1Zp
ZXc6dH19KSxkZWZpbmUoInBsdWdpbi92aWV3cy9ncm91cCIsWyJtdmMvdWkvdWk9Ci10YWJsZSIs
Im12Yy91aS91aS1taXNjIiwidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihlLHQsbil7cmV0dXJuIEJh
Y2tib25lLlZpZT0Kdy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24ocixpKXt0aGlzLmFwcD0z
RHI7dmFyIHM9M0R0aGlzO3RoaXMuY2hhcnQ9M0R0PQpoaXMuYXBwLmNoYXJ0LHRoaXMuZ3JvdXA9
M0RpLmdyb3VwLHRoaXMuZ3JvdXBfa2V5PTNEbmV3IHQuSW5wdXQoe3BsYWNlaG9sZGU9CnI6IkRh
dGEgbGFiZWwiLG9uY2hhbmdlOmZ1bmN0aW9uKGUpe3MuZ3JvdXAuc2V0KCJrZXkiLGUpfX0pLHRo
aXMudGFibGU9M0RuZT0KdyBlLlZpZXcoe2NvbnRlbnQ6Ik5vIGRhdGEgY29sdW1uLiJ9KTt2YXIg
bz0zRCQoIjxkaXYvPiIpO28uYXBwZW5kKG4ud3JhcCgoPQpuZXcgdC5MYWJlbCh7dGl0bGU6IlBy
b3ZpZGUgYSBsYWJlbDoifSkpLiRlbCkpLG8uYXBwZW5kKG4ud3JhcCh0aGlzLmdyb3VwX2s9CmV5
LiRlbCkpLG8uYXBwZW5kKG4ud3JhcCgobmV3IHQuTGFiZWwoe3RpdGxlOiJTZWxlY3QgY29sdW1u
czoifSkpLiRlbCkpLG8uYT0KcHBlbmQobi53cmFwKHRoaXMudGFibGUuJGVsKSksdGhpcy5zZXRF
bGVtZW50KG8pO3ZhciBzPTNEdGhpczt0aGlzLmNoYXJ0Lm9uPQooImNoYW5nZTpkYXRhc2V0X2lk
IixmdW5jdGlvbigpe3MuX3JlZnJlc2hUYWJsZSgpfSksdGhpcy5jaGFydC5vbigiY2hhbmdlOnQ9
CnlwZSIsZnVuY3Rpb24oKXtzLl9yZWZyZXNoVGFibGUoKX0pLHRoaXMuZ3JvdXAub24oImNoYW5n
ZTprZXkiLGZ1bmN0aW9uKCl7cz0KLl9yZWZyZXNoR3JvdXBLZXkoKX0pLHRoaXMuZ3JvdXAub24o
ImNoYW5nZSIsZnVuY3Rpb24oKXtzLl9yZWZyZXNoR3JvdXAoKX0pPQosdGhpcy5fcmVmcmVzaFRh
YmxlKCksdGhpcy5fcmVmcmVzaEdyb3VwS2V5KCksdGhpcy5fcmVmcmVzaEdyb3VwKCl9LF9yZWZy
ZXM9CmhUYWJsZTpmdW5jdGlvbigpe3ZhciBlPTNEdGhpcy5jaGFydC5nZXQoImRhdGFzZXRfaWQi
KSxuPTNEdGhpcy5jaGFydC5nZXQoIj0KdHlwZSIpO2lmKCFlfHwhbilyZXR1cm47dmFyIHI9M0R0
aGlzLGk9M0R0aGlzLmNoYXJ0LmRlZmluaXRpb247dGhpcy50YWJsZS5kPQplbEFsbCgpO3ZhciBz
PTNEe307Zm9yKHZhciBvIGluIGkuY29sdW1ucyl7dmFyIHU9M0RpLmNvbHVtbnNbb107aWYoIXUp
e2NvbnM9Cm9sZS5kZWJ1ZygiR3JvdXA6Ol9yZWZyZXNoVGFibGUoKSAtIFNraXBwaW5nIGNvbHVt
biBkZWZpbml0aW9uLiIpO2NvbnRpbnVlfT0KdmFyIGE9M0RuZXcgdC5TZWxlY3QuVmlldyh7aWQ6
InNlbGVjdF8iK28sd2FpdDohMH0pLGY9M0R1LnRpdGxlO3UuaXNfdW5pcXVlPQomJihmKz0zRCIm
bmJzcDsoYWxsIGRhdGEgbGFiZWxzKSIpLHRoaXMudGFibGUuYWRkKGYsIjI1JSIpLHRoaXMudGFi
bGUuYWRkKGE9Ci4kZWwpLHRoaXMudGFibGUuYXBwZW5kKG8pLHNbb109M0RhfXRoaXMuY2hhcnQu
c3RhdGUoIndhaXQiLCJMb2FkaW5nIG1ldGFkYT0KdGEuLi4iKTt2YXIgbD0zRHRoaXMuYXBwLmRl
ZmVycmVkLnJlZ2lzdGVyKCksYz0zRHtpZDplLHN1Y2Nlc3M6ZnVuY3Rpb24oZSl7PQpmb3IodmFy
IHQgaW4gcylyLl9hZGRSb3codCxlLHMsaS5jb2x1bW5zW3RdKTtyLmNoYXJ0LnN0YXRlKCJvayIs
Ik1ldGFkYXRhIGk9Cm5pdGlhbGl6ZWQuLi4iKSxyLmFwcC5kZWZlcnJlZC5kb25lKGwpfX07dGhp
cy5hcHAuZGF0YXNldHMucmVxdWVzdChjKX0sX2FkZD0KUm93OmZ1bmN0aW9uKGUsdCxuLHIpe3Zh
ciBpPTNEdGhpcyxzPTNEci5pc19sYWJlbCxvPTNEci5pc19hdXRvLHU9M0RyLmlzX251PQptZXJp
YyxhPTNEci5pc191bmlxdWUsZj0zRHIuaXNfemVybyxsPTNEW10sYz0zRG5bZV07byYmbC5wdXNo
KHtsYWJlbDoiQ29sdW09Cm46IFJvdyBOdW1iZXIiLHZhbHVlOiJhdXRvIn0pLGYmJmwucHVzaCh7
bGFiZWw6IkNvbHVtbjogTm9uZSIsdmFsdWU6Inplcm8ifT0KKTt2YXIgaD0zRHQubWV0YWRhdGFf
Y29sdW1uX3R5cGVzO2Zvcih2YXIgcCBpbiBoKXt2YXIgZD0zRCExO2hbcF09M0Q9M0QiaW50PQoi
fHxoW3BdPTNEPTNEImZsb2F0Ij9kPTNEdTpkPTNEcyxkJiZsLnB1c2goe2xhYmVsOiJDb2x1bW46
ICIrKHBhcnNlSW50KHApKzE9CikrIiBbIitoW3BdKyJdIix2YWx1ZTpwfSl9Yy51cGRhdGUobCks
YSYmdGhpcy5jaGFydC5ncm91cHMuZmlyc3QoKSYmdGhpcy5ncj0Kb3VwLnNldChlLHRoaXMuY2hh
cnQuZ3JvdXBzLmZpcnN0KCkuZ2V0KGUpKTtpZighYy5leGlzdHModGhpcy5ncm91cC5nZXQoZSkp
PQope3ZhciB2PTNEYy5maXJzdCgpO2NvbnNvbGUuZGVidWcoJ0dyb3VwKCk6Ol9hZGRSb3coKSAt
IFN3aXRjaGluZyBtb2RlbCB2YWw9CnVlIGZyb20gIicrdGhpcy5ncm91cC5nZXQoZSkrJyIgdG8g
IicrdisnIi4nKSx0aGlzLmdyb3VwLnNldChlLHYpfWMudmFsdWUodD0KaGlzLmdyb3VwLmdldChl
KSksdGhpcy5ncm91cC5vZmYoImNoYW5nZToiK2UpLHRoaXMuZ3JvdXAub24oImNoYW5nZToiK2Us
ZnVuPQpjdGlvbigpe2MudmFsdWUoaS5ncm91cC5nZXQoZSkpfSksYy5zZXRPbkNoYW5nZShmdW5j
dGlvbih0KXthP2kuY2hhcnQuZ3JvdXA9CnMuZWFjaChmdW5jdGlvbihuKXtuLnNldChlLHQpfSk6
aS5ncm91cC5zZXQoZSx0KSxpLmNoYXJ0LnNldCgibW9kaWZpZWQiLCEwKT0KfSksYy5zaG93KCl9
LF9yZWZyZXNoR3JvdXA6ZnVuY3Rpb24oKXt0aGlzLmdyb3VwLnNldCgiZGF0ZSIsbi50aW1lKCkp
fSxfcmVmPQpyZXNoR3JvdXBLZXk6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMuZ3JvdXAuZ2V0KCJr
ZXkiKTtlPTNEPTNEPTNEdW5kZWZpbmVkJiY9CihlPTNEIiIpLHRoaXMuZ3JvdXBfa2V5LnZhbHVl
KGUpfX0pfSksZGVmaW5lKCJwbHVnaW4vbGlicmFyeS91aS10YWJsZS1mb3JtIj0KLFsibXZjL3Vp
L3VpLXRhYmxlIiwibXZjL3VpL3VpLW1pc2MiLCJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGUsdCxu
KXt2YXIgcj0KPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0Ont0aXRsZToi
Iixjb250ZW50OiIiLG1vZGU6IiJ9LGxpc3Q6PQpbXSxpbml0aWFsaXplOmZ1bmN0aW9uKHIsaSl7
dGhpcy5hcHA9M0RyLHRoaXMub3B0aW9ucz0zRG4ubWVyZ2UoaSx0aGlzLm9wdGk9Cm9uc0RlZmF1
bHQpLHRoaXMudGFibGVfdGl0bGU9M0RuZXcgdC5MYWJlbCh7dGl0bGU6dGhpcy5vcHRpb25zLnRp
dGxlfSksdGhpcz0KLnRhYmxlPTNEbmV3IGUuVmlldyh7Y29udGVudDp0aGlzLm9wdGlvbnMuY29u
dGVudH0pO3ZhciBzPTNEJCgnPGRpdiBjbGFzcz0KPTNEInVpLXRhYmxlLWZvcm0iLz4nKTt0aGlz
Lm9wdGlvbnMudGl0bGUmJnMuYXBwZW5kKG4ud3JhcCh0aGlzLnRhYmxlX3RpdGxlPQouJGVsKSks
cy5hcHBlbmQobi53cmFwKHRoaXMudGFibGUuJGVsKSksdGhpcy5zZXRFbGVtZW50KHMpfSx0aXRs
ZTpmdW5jdGlvbig9CmUpe3RoaXMudGFibGVfdGl0bGUudGl0bGUoZSl9LHVwZGF0ZTpmdW5jdGlv
bihlLHQpe3RoaXMudGFibGUuZGVsQWxsKCksdGhpcz0KLmxpc3Q9M0RbXTtmb3IodmFyIG4gaW4g
ZSl0aGlzLl9hZGQoZVtuXS5pZHx8bixlW25dLHQpO2Zvcih2YXIgbiBpbiB0aGlzLmxpPQpzdCl0
aGlzLmxpc3Rbbl0udHJpZ2dlcigiY2hhbmdlIil9LF9hZGQ6ZnVuY3Rpb24oZSxuLHIpe3ZhciBp
PTNEdGhpcyxzPTNEbnU9CmxsLG89M0RuLnR5cGU7c3dpdGNoKG8pe2Nhc2UidGV4dCI6cz0zRG5l
dyB0LklucHV0KHtpZDoiZmllbGQtIitlLHBsYWNlaG9sZD0KZXI6bi5wbGFjZWhvbGRlcix2YWx1
ZTpyLmdldChlKSxvbmNoYW5nZTpmdW5jdGlvbih0KXtyLnNldChlLHQpfX0pO2JyZWFrO2NhPQpz
ZSJyYWRpb2J1dHRvbiI6cz0zRG5ldyB0LlJhZGlvQnV0dG9uLlZpZXcoe2lkOiJmaWVsZC0iK2Us
ZGF0YTpuLmRhdGEsdmFsdWU9CjpyLmdldChlKSxvbmNoYW5nZTpmdW5jdGlvbih0KXtyLnNldChl
LHQpO3ZhciBzPTNEXy5maW5kV2hlcmUobi5kYXRhLHt2YWx1ZT0KOnR9KTtpZihzJiZzLm9wZXJh
dGlvbnMpe3ZhciBvPTNEcy5vcGVyYXRpb25zO2Zvcih2YXIgdSBpbiBvLnNob3cpe3ZhciBhPTNE
PQpvLnNob3dbdV07aS50YWJsZS5nZXQoYSkuc2hvdygpfWZvcih2YXIgdSBpbiBvLmhpZGUpe3Zh
ciBhPTNEby5oaWRlW3VdO2kudGE9CmJsZS5nZXQoYSkuaGlkZSgpfX19fSk7YnJlYWs7Y2FzZSJz
ZWxlY3QiOnM9M0RuZXcgdC5TZWxlY3QuVmlldyh7aWQ6ImZpZWxkLT0KIitlLGRhdGE6bi5kYXRh
LHZhbHVlOnIuZ2V0KGUpLG9uY2hhbmdlOmZ1bmN0aW9uKHQpe3Iuc2V0KGUsdCk7dmFyIHM9M0Rf
LmZpPQpuZFdoZXJlKG4uZGF0YSx7dmFsdWU6dH0pO2lmKHMmJnMub3BlcmF0aW9ucyl7dmFyIG89
M0RzLm9wZXJhdGlvbnM7Zm9yKHZhciA9CnUgaW4gby5zaG93KXt2YXIgYT0zRG8uc2hvd1t1XTtp
LnRhYmxlLmdldChhKS5zaG93KCl9Zm9yKHZhciB1IGluIG8uaGlkZSl7dj0KYXIgYT0zRG8uaGlk
ZVt1XTtpLnRhYmxlLmdldChhKS5oaWRlKCl9fX19KTticmVhaztjYXNlImRhdGFzZXQiOnM9M0Ru
ZXcgdC5TPQplbGVjdC5WaWV3KHtpZDoiZmllbGQtIitlLG9uY2hhbmdlOmZ1bmN0aW9uKHQpe3Iu
c2V0KGUsdCl9fSksaS5hcHAuZGF0YXNldHM9Ci5vbigiYWxsIixmdW5jdGlvbigpe3ZhciB0PTNE
W107aS5hcHAuZGF0YXNldHMuZWFjaChmdW5jdGlvbihlKXtlLmdldCgiZGF0YT0KdHlwZV9pZCIp
PTNEPTNEbi5kYXRhJiZ0LnB1c2goe3ZhbHVlOmUuZ2V0KCJpZCIpLGxhYmVsOmUuZ2V0KCJuYW1l
Iil9KX0pLHMuPQp1cGRhdGUodCksci5nZXQoZSl8fHIuc2V0KGUscy5maXJzdCgpKSxzLnZhbHVl
KHIuZ2V0KGUpKX0pLGkuYXBwLmRhdGFzZXRzLnQ9CnJpZ2dlcigiYWxsLmRhdGFzZXRzIik7YnJl
YWs7Y2FzZSJ0ZXh0YXJlYSI6cz0zRG5ldyB0LlRleHRhcmVhKHtpZDoiZmllbGQtIj0KK2Usb25j
aGFuZ2U6ZnVuY3Rpb24oKXtyLnNldChlLHMudmFsdWUoKSl9fSk7YnJlYWs7Y2FzZSJzZXBhcmF0
b3IiOnM9M0QkKCI8PQpkaXYvPiIpO2JyZWFrO2RlZmF1bHQ6cz0zRG5ldyB0LklucHV0KHtpZDoi
ZmllbGQtIitlLHBsYWNlaG9sZGVyOm4ucGxhY2Vob2w9CmRlcix0eXBlOm4udHlwZSxvbmNoYW5n
ZTpmdW5jdGlvbigpe3Iuc2V0KGUscy52YWx1ZSgpKX19KX1pZihvIT0zRCJzZXBhcmF0bz0KciIp
e3IuZ2V0KGUpfHxyLnNldChlLG4uaW5pdCkscy52YWx1ZShyLmdldChlKSksdGhpcy5saXN0W2Vd
PTNEczt2YXIgdT0zRCQoPQoiPGRpdi8+Iik7dS5hcHBlbmQocy4kZWwpLG4uaW5mbyYmdS5hcHBl
bmQoJzxkaXYgY2xhc3M9M0QidWktdGFibGUtZm9ybS1pbmY9Cm8iPicrbi5pbmZvKyI8L2Rpdj4i
KSx0aGlzLm9wdGlvbnMuc3R5bGU9M0Q9M0QiYm9sZCI/KHRoaXMudGFibGUuYWRkKChuZXcgdD0K
LkxhYmVsKHt0aXRsZTpuLnRpdGxlLGNsczoiZm9ybS1sYWJlbCJ9KSkuJGVsKSx0aGlzLnRhYmxl
LmFkZCh1KSk6KHRoaXMudGFiPQpsZS5hZGQoJzxzcGFuIGNsYXNzPTNEInVpLXRhYmxlLWZvcm0t
dGl0bGUiPicrbi50aXRsZSsiPC9zcGFuPiIsIjI1JSIpLHRoaXM9Ci50YWJsZS5hZGQodSkpfWVs
c2UgdGhpcy50YWJsZS5hZGQoJzxkaXYgY2xhc3M9M0QidWktdGFibGUtZm9ybS1zZXBhcmF0b3Ii
Pj0KJytuLnRpdGxlKyI6PGRpdi8+IiksdGhpcy50YWJsZS5hZGQoJCgiPGRpdi8+IikpO3RoaXMu
dGFibGUuYXBwZW5kKGUpLG4uaGlkPQplJiZ0aGlzLnRhYmxlLmdldChlKS5oaWRlKCl9fSk7cmV0
dXJue1ZpZXc6cn19KSxkZWZpbmUoInBsdWdpbi92aWV3cy9zZXR0aW49CmdzIixbIm12Yy91aS91
aS1taXNjIiwicGx1Z2luL2xpYnJhcnkvdWktdGFibGUtZm9ybSIsInV0aWxzL3V0aWxzIl0sZnVu
Y3Rpbz0KbihlLHQsbil7cmV0dXJuIEJhY2tib25lLlZpZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1
bmN0aW9uKGUsbil7dGhpcy5hcHA9M0RlPQo7dmFyIHI9M0R0aGlzO3RoaXMuY2hhcnQ9M0R0aGlz
LmFwcC5jaGFydCx0aGlzLmZvcm09M0RuZXcgdC5WaWV3KGUse3RpdGxlOiI9CkNvbmZpZ3VyYXRp
b24iLGNvbnRlbnQ6IlRoaXMgY2hhcnQgdHlwZSBkb2VzIG5vdCBwcm92aWRlIGFueSBvcHRpb25z
LiJ9KSx0aD0KaXMuc2V0RWxlbWVudCh0aGlzLmZvcm0uJGVsKTt2YXIgcj0zRHRoaXM7dGhpcy5j
aGFydC5vbigiY2hhbmdlIixmdW5jdGlvbigpPQp7ci5fcmVmcmVzaCgpfSl9LF9yZWZyZXNoOmZ1
bmN0aW9uKCl7dmFyIGU9M0R0aGlzLmNoYXJ0LmRlZmluaXRpb247aWYoIWUpcmU9CnR1cm47dGhp
cy5mb3JtLnRpdGxlKGUuY2F0ZWdvcnkrIiAtICIrZS50aXRsZSsiOiIpLHRoaXMuZm9ybS51cGRh
dGUoZS5zZXR0aT0KbmdzLHRoaXMuY2hhcnQuc2V0dGluZ3MpfX0pfSksZGVmaW5lKCJwbHVnaW4v
dmlld3MvdHlwZXMiLFsidXRpbHMvdXRpbHMiLCJtPQp2Yy91aS91aS1taXNjIl0sZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0Ons9Cm9uY2hh
bmdlOm51bGwsb25kYmxjbGljazpudWxsfSxldmVudHM6e2NsaWNrOiJfb25jbGljayIsZGJsY2xp
Y2s6Il9vbmRibGNsaT0KY2sifSxpbml0aWFsaXplOmZ1bmN0aW9uKG4scil7dmFyIGk9M0R0aGlz
O3RoaXMuYXBwPTNEbix0aGlzLm9wdGlvbnM9M0RlLm1lPQpyZ2Uocix0aGlzLm9wdGlvbnNEZWZh
dWx0KTt2YXIgcz0zRCQoJzxkaXYgY2xhc3M9M0QiY2hhcnRzLWdyaWQiLz4nKTtzLmFwcGU9Cm5k
KGUud3JhcCgobmV3IHQuTGFiZWwoe3RpdGxlOiJIb3cgbWFueSBkYXRhIHBvaW50cyB3b3VsZCB5
b3UgbGlrZSB0byBhbmFseT0KemU/In0pKS4kZWwpKSx0aGlzLmxpYnJhcnk9M0RuZXcgdC5SYWRp
b0J1dHRvbi5WaWV3KHtkYXRhOlt7bGFiZWw6IkZldyAoPDUwPQowKSIsdmFsdWU6InNtYWxsIn0s
e2xhYmVsOiJTb21lICg8MTBrKSIsdmFsdWU6Im1lZGl1bSJ9LHtsYWJlbDoiTWFueSAoPjEwayk9
CiIsdmFsdWU6ImxhcmdlIn1dLG9uY2hhbmdlOmZ1bmN0aW9uKGUpe2kuX2ZpbHRlcihlKX19KSxz
LmFwcGVuZChlLndyYXAodGhpcz0KLmxpYnJhcnkuJGVsKSksdGhpcy5zZXRFbGVtZW50KHMpLHRo
aXMuX3JlbmRlcigpLHRoaXMubGlicmFyeS52YWx1ZSgic21hbGwiPQopLHRoaXMubGlicmFyeS50
cmlnZ2VyKCJjaGFuZ2UiKX0sdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLiRlbC5maW5k
KCI9Ci5jdXJyZW50IikuYXR0cigiaWQiKTtlIT0zRD0zRHVuZGVmaW5lZCYmKHRoaXMuJGVsLmZp
bmQoIi5jdXJyZW50IikucmVtb3ZlQz0KbGFzcygiY3VycmVudCIpLHRoaXMuJGVsLmZpbmQoIiMi
K2UpLmFkZENsYXNzKCJjdXJyZW50IikpO3ZhciBuPTNEdGhpcy4kZWwuPQpmaW5kKCIuY3VycmVu
dCIpLmF0dHIoImlkIik7cmV0dXJuIG49M0Q9M0Q9M0R1bmRlZmluZWQ/bnVsbDoobiE9M0R0JiZ0
aGlzLm89CnB0aW9ucy5vbmNoYW5nZSYmdGhpcy5vcHRpb25zLm9uY2hhbmdlKGUpLG4pfSxfZmls
dGVyOmZ1bmN0aW9uKGUpe3RoaXMuJGVsLj0KZmluZCgiLmhlYWRlciIpLmhpZGUoKTt2YXIgdD0z
RHRoaXMuYXBwLnR5cGVzLmF0dHJpYnV0ZXM7Zm9yKHZhciBuIGluIHQpe3ZhPQpyIHI9M0R0W25d
LGk9M0R0aGlzLiRlbC5maW5kKCIjIituKSxzPTNEdGhpcy4kZWwuZmluZCgiI3R5cGVzLWhlYWRl
ci0iK3RoaXM9Ci5jYXRlZ29yaWVzX2luZGV4W3IuY2F0ZWdvcnldKSxvPTNEci5rZXl3b3Jkc3x8
IiI7by5pbmRleE9mKGUpPj0zRDA/KGkuc2hvdz0KKCkscy5zaG93KCkpOmkuaGlkZSgpfX0sX3Jl
bmRlcjpmdW5jdGlvbigpe3RoaXMuY2F0ZWdvcmllcz0zRHt9LHRoaXMuY2F0ZWdvPQpyaWVzX2lu
ZGV4PTNEe307dmFyIGU9M0QwLHQ9M0R0aGlzLmFwcC50eXBlcy5hdHRyaWJ1dGVzO2Zvcih2YXIg
biBpbiB0KXt2YXI9CiByPTNEdFtuXSxpPTNEci5jYXRlZ29yeTt0aGlzLmNhdGVnb3JpZXNbaV18
fCh0aGlzLmNhdGVnb3JpZXNbaV09M0R7fSx0aGlzLj0KY2F0ZWdvcmllc19pbmRleFtpXT0zRGUr
KyksdGhpcy5jYXRlZ29yaWVzW2ldW25dPTNEcn1mb3IodmFyIGkgaW4gdGhpcy5jYXRlPQpnb3Jp
ZXMpe3ZhciBzPTNEJCgnPGRpdiBzdHlsZT0zRCJjbGVhcjogYm90aDsiLz4nKTtzLmFwcGVuZCh0
aGlzLl90ZW1wbGF0ZV89CmhlYWRlcih7aWQ6InR5cGVzLWhlYWRlci0iK3RoaXMuY2F0ZWdvcmll
c19pbmRleFtpXSx0aXRsZTppfSkpO2Zvcih2YXIgbiBpbj0KIHRoaXMuY2F0ZWdvcmllc1tpXSl7
dmFyIHI9M0R0aGlzLmNhdGVnb3JpZXNbaV1bbl0sbz0zRHIudGl0bGUrIiAoIityLmxpYnJhPQpy
eSsiKSI7ci56b29tYWJsZSYmKG89M0QnPHNwYW4gY2xhc3M9M0QiZmEgZmEtc2VhcmNoLXBsdXMi
Lz4nK28pLHMuYXBwZW5kKHQ9Cmhpcy5fdGVtcGxhdGVfaXRlbSh7aWQ6bix0aXRsZTpvLHVybDpj
b25maWcuYXBwX3Jvb3QrImNoYXJ0cy8iK3RoaXMuYXBwLmNoYT0KcnRQYXRoKG4pKyIvbG9nby5w
bmcifSkpfXRoaXMuJGVsLmFwcGVuZChzKX19LF9vbmNsaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PTNE
PQp0aGlzLnZhbHVlKCksbj0zRCQoZS50YXJnZXQpLmNsb3Nlc3QoIi5pdGVtIikuYXR0cigiaWQi
KTtuIT0zRCIiJiZuJiZ0IT0zRG49CiYmdGhpcy52YWx1ZShuKX0sX29uZGJsY2xpY2s6ZnVuY3Rp
b24oZSl7dmFyIHQ9M0R0aGlzLnZhbHVlKCk7dCYmdGhpcy5vcHRpbz0KbnMub25kYmxjbGljayYm
dGhpcy5vcHRpb25zLm9uZGJsY2xpY2sodCl9LF90ZW1wbGF0ZV9oZWFkZXI6ZnVuY3Rpb24oZSl7
cmV0PQp1cm4nPGRpdiBpZD0zRCInK2UuaWQrJyIgY2xhc3M9M0QiaGVhZGVyIj4nKyImYnVsbDsg
IitlLnRpdGxlKyI8ZGl2PiJ9LF90ZW09CnBsYXRlX2l0ZW06ZnVuY3Rpb24oZSl7cmV0dXJuJzxk
aXYgaWQ9M0QiJytlLmlkKyciIGNsYXNzPTNEIml0ZW0iPicrJzxpbWcgYz0KbGFzcz0zRCJpbWFn
ZSIgc3JjPTNEIicrZS51cmwrJyI+JysnPGRpdiBjbGFzcz0zRCJ0aXRsZSI+JytlLnRpdGxlKyI8
L2Rpdj4iPQorIjxkaXY+In19KX0pLGRlZmluZSgicGx1Z2luL3ZpZXdzL2VkaXRvciIsWyJtdmMv
dWkvdWktdGFicyIsIm12Yy91aS91aS1taXM9CmMiLCJtdmMvdWkvdWktcG9ydGxldCIsInV0aWxz
L3V0aWxzIiwicGx1Z2luL21vZGVscy9jaGFydCIsInBsdWdpbi9tb2RlbHMvZz0Kcm91cCIsInBs
dWdpbi92aWV3cy9ncm91cCIsInBsdWdpbi92aWV3cy9zZXR0aW5ncyIsInBsdWdpbi92aWV3cy90
eXBlcyJdLGZ1PQpuY3Rpb24oZSx0LG4scixpLHMsbyx1LGEpe3JldHVybiBCYWNrYm9uZS5WaWV3
LmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbig9Cmkscyl7dmFyIG89M0R0aGlzO3RoaXMuYXBw
PTNEaSx0aGlzLmNoYXJ0PTNEdGhpcy5hcHAuY2hhcnQsdGhpcy5tZXNzYWdlPTNEbj0KZXcgdC5N
ZXNzYWdlLHRoaXMucG9ydGxldD0zRG5ldyBuLlZpZXcoe2ljb246ImZhLWJhci1jaGFydC1vIix0
aXRsZToiRWRpdG9yPQoiLG9wZXJhdGlvbnM6e3NhdmU6bmV3IHQuQnV0dG9uSWNvbih7aWNvbjoi
ZmEtc2F2ZSIsdG9vbHRpcDoiRHJhdyBDaGFydCIsdGk9CnRsZToiRHJhdyIsb25jbGljazpmdW5j
dGlvbigpe28uX3NhdmVDaGFydCgpfX0pLGJhY2s6bmV3IHQuQnV0dG9uSWNvbih7aWNvbj0KOiJm
YS1jYXJldC1sZWZ0Iix0b29sdGlwOiJSZXR1cm4gdG8gVmlld2VyIix0aXRsZToiQ2FuY2VsIixv
bmNsaWNrOmZ1bmN0aW9uPQooKXtvLmFwcC5nbygidmlld2VyIiksby5hcHAuc3RvcmFnZS5sb2Fk
KCl9fSl9fSksdGhpcy50eXBlcz0zRG5ldyBhKGkse29uY2g9CmFuZ2U6ZnVuY3Rpb24oZSl7dmFy
IHQ9M0RvLmFwcC50eXBlcy5nZXQoZSk7dHx8Y29uc29sZS5kZWJ1ZygiRkFJTEVEIC0gRWRpdD0K
b3I6Om9uY2hhbmdlKCkgLSBDaGFydCB0eXBlIG5vdCBzdXBwb3J0ZWQuIiksby5jaGFydC5kZWZp
bml0aW9uPTNEdCxvLmNoYXJ0PQouc2V0dGluZ3MuY2xlYXIoKSxvLmNoYXJ0LnNldCh7dHlwZTpl
fSksby5jaGFydC5zZXQoIm1vZGlmaWVkIiwhMCksY29uc29sZS49CmRlYnVnKCJFZGl0b3I6Om9u
Y2hhbmdlKCkgLSBTd2l0Y2hlZCBjaGFydCB0eXBlLiIpfSxvbmRibGNsaWNrOmZ1bmN0aW9uKGUp
ez0Kby5fc2F2ZUNoYXJ0KCl9fSksdGhpcy50YWJzPTNEbmV3IGUuVmlldyh7dGl0bGVfbmV3OiJB
ZGQgRGF0YSIsb25uZXc6ZnVuY3RpPQpvbigpe3ZhciBlPTNEby5fYWRkR3JvdXBNb2RlbCgpO28u
dGFicy5zaG93KGUuaWQpfX0pLHRoaXMudGl0bGU9M0RuZXcgdC5JbnA9CnV0KHtwbGFjZWhvbGRl
cjoiQ2hhcnQgdGl0bGUiLG9uY2hhbmdlOmZ1bmN0aW9uKCl7by5jaGFydC5zZXQoInRpdGxlIixv
LnRpdD0KbGUudmFsdWUoKSl9fSk7dmFyIGY9M0QkKCI8ZGl2Lz4iKTtmLmFwcGVuZChyLndyYXAo
KG5ldyB0LkxhYmVsKHt0aXRsZToiUHJvPQp2aWRlIGEgY2hhcnQgdGl0bGU6In0pKS4kZWwpKSxm
LmFwcGVuZChyLndyYXAodGhpcy50aXRsZS4kZWwpKSxmLmFwcGVuZChyLnc9CnJhcCh0aGlzLnR5
cGVzLiRlbCkpLHRoaXMudGFicy5hZGQoe2lkOiJtYWluIix0aXRsZToiU3RhcnQiLCRlbDpmfSks
dGhpcy5zZT0KdHRpbmdzPTNEbmV3IHUodGhpcy5hcHApLHRoaXMudGFicy5hZGQoe2lkOiJzZXR0
aW5ncyIsdGl0bGU6IkNvbmZpZ3VyYXRpb24iPQosJGVsOnRoaXMuc2V0dGluZ3MuJGVsfSksdGhp
cy5wb3J0bGV0LmFwcGVuZCh0aGlzLm1lc3NhZ2UuJGVsKSx0aGlzLnBvcnRsZXQ9Ci5hcHBlbmQo
dGhpcy50YWJzLiRlbCksdGhpcy5zZXRFbGVtZW50KHRoaXMucG9ydGxldC4kZWwpLHRoaXMudGFi
cy5oaWRlT3Blcj0KYXRpb24oImJhY2siKTt2YXIgbz0zRHRoaXM7dGhpcy5jaGFydC5vbigiY2hh
bmdlOnRpdGxlIixmdW5jdGlvbihlKXtvLl9yZWZyPQplc2hUaXRsZSgpfSksdGhpcy5jaGFydC5v
bigiY2hhbmdlOnR5cGUiLGZ1bmN0aW9uKGUpe28udHlwZXMudmFsdWUoZS5nZXQoInQ9CnlwZSIp
KX0pLHRoaXMuY2hhcnQub24oInJlc2V0IixmdW5jdGlvbihlKXtvLl9yZXNldENoYXJ0KCl9KSx0
aGlzLmFwcC5jaGFydD0KLm9uKCJyZWRyYXciLGZ1bmN0aW9uKGUpe28ucG9ydGxldC5zaG93T3Bl
cmF0aW9uKCJiYWNrIil9KSx0aGlzLmFwcC5jaGFydC5nPQpyb3Vwcy5vbigiYWRkIixmdW5jdGlv
bihlKXtvLl9hZGRHcm91cChlKX0pLHRoaXMuYXBwLmNoYXJ0Lmdyb3Vwcy5vbigicmVtb3Y9CmUi
LGZ1bmN0aW9uKGUpe28uX3JlbW92ZUdyb3VwKGUpfSksdGhpcy5hcHAuY2hhcnQuZ3JvdXBzLm9u
KCJyZXNldCIsZnVuY3Rpbz0KbihlKXtvLl9yZW1vdmVBbGxHcm91cHMoKX0pLHRoaXMuYXBwLmNo
YXJ0Lmdyb3Vwcy5vbigiY2hhbmdlOmtleSIsZnVuY3Rpb24oPQplKXtvLl9yZWZyZXNoR3JvdXBL
ZXkoKX0pLHRoaXMuX3Jlc2V0Q2hhcnQoKX0sc2hvdzpmdW5jdGlvbigpe3RoaXMuJGVsLnNob3c9
CigpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy4kZWwuaGlkZSgpfSxfcmVmcmVzaFRpdGxlOmZ1bmN0
aW9uKCl7dmFyIGU9M0R0aGlzLj0KY2hhcnQuZ2V0KCJ0aXRsZSIpO3RoaXMucG9ydGxldC50aXRs
ZShlKSx0aGlzLnRpdGxlLnZhbHVlKGUpfSxfcmVmcmVzaEdyb3VwPQpLZXk6ZnVuY3Rpb24oKXt2
YXIgZT0zRHRoaXMsdD0zRDA7dGhpcy5jaGFydC5ncm91cHMuZWFjaChmdW5jdGlvbihuKXt2YXIg
cj0KPTNEbi5nZXQoImtleSIsIiIpO3I9M0Q9M0QiIiYmKHI9M0QiRGF0YSBsYWJlbCIpLGUudGFi
cy50aXRsZShuLmlkLCsrdCsiOiAiPQorcil9KX0sX2FkZEdyb3VwTW9kZWw6ZnVuY3Rpb24oKXt2
YXIgZT0zRG5ldyBzKHtpZDpyLnV1aWQoKX0pO3JldHVybiB0aGlzLmM9CmhhcnQuZ3JvdXBzLmFk
ZChlKSxlfSxfYWRkR3JvdXA6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLG49M0RuZXcgbyh0aGlz
LmFwcD0KLHtncm91cDplfSk7dGhpcy50YWJzLmFkZCh7aWQ6ZS5pZCwkZWw6bi4kZWwsb25kZWw6
ZnVuY3Rpb24oKXt0LmNoYXJ0Lmdyb3VwPQpzLnJlbW92ZShlLmlkKX19KSx0aGlzLl9yZWZyZXNo
R3JvdXBLZXkoKSx0aGlzLmNoYXJ0LnNldCgibW9kaWZpZWQiLCEwKX0sX3I9CmVtb3ZlR3JvdXA6
ZnVuY3Rpb24oZSl7dGhpcy50YWJzLmRlbChlLmlkKSx0aGlzLl9yZWZyZXNoR3JvdXBLZXkoKSx0
aGlzLmNoYT0KcnQuc2V0KCJtb2RpZmllZCIsITApfSxfcmVtb3ZlQWxsR3JvdXBzOmZ1bmN0aW9u
KGUpe3RoaXMudGFicy5kZWxSZW1vdmFibGUoPQopfSxfcmVzZXRDaGFydDpmdW5jdGlvbigpe3Ro
aXMuY2hhcnQuc2V0KCJpZCIsci51dWlkKCkpLHRoaXMuY2hhcnQuc2V0KCJ0eXA9CmUiLCJudmQz
X2JhciIpLHRoaXMuY2hhcnQuc2V0KCJkYXRhc2V0X2lkIix0aGlzLmFwcC5vcHRpb25zLmNvbmZp
Zy5kYXRhc2V0Xz0KaWQpLHRoaXMuY2hhcnQuc2V0KCJ0aXRsZSIsIk5ldyBDaGFydCIpLHRoaXMu
cG9ydGxldC5oaWRlT3BlcmF0aW9uKCJiYWNrIil9PQosX3NhdmVDaGFydDpmdW5jdGlvbigpe3Ro
aXMuY2hhcnQuc2V0KHt0eXBlOnRoaXMudHlwZXMudmFsdWUoKSx0aXRsZTp0aGlzLnQ9Cml0bGUu
dmFsdWUoKSxkYXRlOnIudGltZSgpfSk7aWYodGhpcy5jaGFydC5ncm91cHMubGVuZ3RoPTNEPTNE
MCl7dGhpcy5tZXNzYT0KZ2UudXBkYXRlKHttZXNzYWdlOiJQbGVhc2Ugc2VsZWN0IGRhdGEgY29s
dW1ucyBiZWZvcmUgZHJhd2luZyB0aGUgY2hhcnQuIn0pPQo7dmFyIGU9M0R0aGlzLl9hZGRHcm91
cE1vZGVsKCk7dGhpcy50YWJzLnNob3coZS5pZCk7cmV0dXJufXZhciB0PTNEdGhpcyxuPQo9M0Qh
MCxpPTNEdGhpcy5jaGFydC5kZWZpbml0aW9uO3RoaXMuY2hhcnQuZ3JvdXBzLmVhY2goZnVuY3Rp
b24oZSl7aWYoIW4pcmU9CnR1cm47Zm9yKHZhciByIGluIGkuY29sdW1ucylpZihlLmF0dHJpYnV0
ZXNbcl09M0Q9M0QibnVsbCIpe3QubWVzc2FnZS51cGRhdD0KZSh7c3RhdHVzOiJkYW5nZXIiLG1l
c3NhZ2U6IlRoaXMgY2hhcnQgdHlwZSByZXF1aXJlcyBjb2x1bW4gdHlwZXMgbm90IGZvdW5kPQog
aW4geW91ciB0YWJ1bGFyIGZpbGUuIn0pLHQudGFicy5zaG93KGUuaWQpLG49M0QhMTtyZXR1cm59
fSk7aWYoIW4pcmV0dXJuO3Q9Cmhpcy5hcHAuZ28oInZpZXdlciIpO3ZhciB0PTNEdGhpczt0aGlz
LmFwcC5kZWZlcnJlZC5leGVjdXRlKGZ1bmN0aW9uKCl7dC5hcD0KcC5zdG9yYWdlLnNhdmUoKSx0
LmNoYXJ0LnRyaWdnZXIoInJlZHJhdyIpfSl9fSl9KSxkZWZpbmUoInBsdWdpbi9tb2RlbHMvY29u
PQpmaWciLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIEJhY2tib25lLk1vZGVsLmV4dGVuZCh7ZGVmYXVs
dHM6e3F1ZXJ5X2xpbWl0OjFlNCw9CnF1ZXJ5X3RpbWVvdXQ6MTAwfX0pfSksZGVmaW5lKCJwbHVn
aW4vY2hhcnRzL2Zvcm1zL2RlZmF1bHQiLFtdLGZ1bmN0aW9uKCl7cj0KZXR1cm57dGl0bGU6IiIs
Y2F0ZWdvcnk6IiIsbGlicmFyeToiIix0YWc6IiIsa2V5d29yZHM6IiIsc2V0dGluZ3M6e3NlcGFy
YXRvPQpyX3g6e3RpdGxlOiJYIGF4aXMiLHR5cGU6InNlcGFyYXRvciJ9LHhfYXhpc19sYWJlbDp7
dGl0bGU6IkF4aXMgbGFiZWwiLGluZm89CjoiUHJvdmlkZSBhIGxhYmVsIGZvciB0aGUgYXhpcy4i
LHR5cGU6InRleHQiLGluaXQ6IlgtYXhpcyIscGxhY2Vob2xkZXI6IkF4aT0KcyBsYWJlbCJ9LHhf
YXhpc190eXBlOnt0aXRsZToiQXhpcyB2YWx1ZSB0eXBlIixpbmZvOiJTZWxlY3QgdGhlIHZhbHVl
IHR5cGUgPQpvZiB0aGUgYXhpcy4iLHR5cGU6InNlbGVjdCIsaW5pdDoiYXV0byIsZGF0YTpbe2xh
YmVsOiItLSBEbyBub3Qgc2hvdyB2YWx1ZXM9CiAtLSIsdmFsdWU6ImhpZGUiLG9wZXJhdGlvbnM6
e2hpZGU6WyJ4X2F4aXNfcHJlY2lzaW9uIl19fSx7bGFiZWw6IkF1dG8iLHZhbD0KdWU6ImF1dG8i
LG9wZXJhdGlvbnM6e2hpZGU6WyJ4X2F4aXNfcHJlY2lzaW9uIl19fSx7bGFiZWw6IkZsb2F0Iix2
YWx1ZToiZiIsPQpvcGVyYXRpb25zOntzaG93OlsieF9heGlzX3ByZWNpc2lvbiJdfX0se2xhYmVs
OiJFeHBvbmVudCIsdmFsdWU6ImUiLG9wZXJhdGk9Cm9uczp7c2hvdzpbInhfYXhpc19wcmVjaXNp
b24iXX19LHtsYWJlbDoiSW50ZWdlciIsdmFsdWU6ImQiLG9wZXJhdGlvbnM6e2hpZD0KZTpbInhf
YXhpc19wcmVjaXNpb24iXX19LHtsYWJlbDoiUGVyY2VudGFnZSIsdmFsdWU6InAiLG9wZXJhdGlv
bnM6e3Nob3c6WyJ4PQpfYXhpc19wcmVjaXNpb24iXX19LHtsYWJlbDoiU0ktcHJlZml4Iix2YWx1
ZToicyIsb3BlcmF0aW9uczp7aGlkZTpbInhfYXhpc189CnByZWNpc2lvbiJdfX1dfSx4X2F4aXNf
cHJlY2lzaW9uOnt0aXRsZToiQXhpcyB0aWNrIGZvcm1hdCIsaW5mbzoiU2VsZWN0IHRoZT0KIHRp
Y2sgZm9ybWF0IGZvciB0aGUgYXhpcy4iLHR5cGU6InNlbGVjdCIsaW5pdDoiMSIsZGF0YTpbe2xh
YmVsOiIwLjAwMDAxIix2PQphbHVlOiI1In0se2xhYmVsOiIwLjAwMDEiLHZhbHVlOiI0In0se2xh
YmVsOiIwLjAwMSIsdmFsdWU6IjMifSx7bGFiZWw6IjAuMDE9CiIsdmFsdWU6IjIifSx7bGFiZWw6
IjAuMSIsdmFsdWU6IjEifSx7bGFiZWw6IjEiLHZhbHVlOiIwIn1dfSxzZXBhcmF0b3JfeTp7dD0K
aXRsZToiWSBheGlzIix0eXBlOiJzZXBhcmF0b3IifSx5X2F4aXNfbGFiZWw6e3RpdGxlOiJBeGlz
IGxhYmVsIixpbmZvOiJQcm92PQppZGUgYSBsYWJlbCBmb3IgdGhlIGF4aXMuIix0eXBlOiJ0ZXh0
Iixpbml0OiJZLWF4aXMiLHBsYWNlaG9sZGVyOiJBeGlzIGxhYmU9CmwifSx5X2F4aXNfdHlwZTp7
dGl0bGU6IkF4aXMgdmFsdWUgdHlwZSIsaW5mbzoiU2VsZWN0IHRoZSB2YWx1ZSB0eXBlIG9mIHRo
ZT0KIGF4aXMuIix0eXBlOiJzZWxlY3QiLGluaXQ6ImF1dG8iLGRhdGE6W3tsYWJlbDoiLS0gRG8g
bm90IHNob3cgdmFsdWVzIC0tIix2PQphbHVlOiJoaWRlIixvcGVyYXRpb25zOntoaWRlOlsieV9h
eGlzX3ByZWNpc2lvbiJdfX0se2xhYmVsOiJBdXRvIix2YWx1ZToiYXU9CnRvIixvcGVyYXRpb25z
OntoaWRlOlsieV9heGlzX3ByZWNpc2lvbiJdfX0se2xhYmVsOiJGbG9hdCIsdmFsdWU6ImYiLG9w
ZXJhdD0KaW9uczp7c2hvdzpbInlfYXhpc19wcmVjaXNpb24iXX19LHtsYWJlbDoiRXhwb25lbnQi
LHZhbHVlOiJlIixvcGVyYXRpb25zOntzPQpob3c6WyJ5X2F4aXNfcHJlY2lzaW9uIl19fSx7bGFi
ZWw6IkludGVnZXIiLHZhbHVlOiJkIixvcGVyYXRpb25zOntoaWRlOlsieV89CmF4aXNfcHJlY2lz
aW9uIl19fSx7bGFiZWw6IlBlcmNlbnRhZ2UiLHZhbHVlOiJwIixvcGVyYXRpb25zOntzaG93Olsi
eV9heGlzXz0KcHJlY2lzaW9uIl19fSx7bGFiZWw6IlNJLXByZWZpeCIsdmFsdWU6InMiLG9wZXJh
dGlvbnM6e2hpZGU6WyJ5X2F4aXNfcHJlY2lzPQppb24iXX19XX0seV9heGlzX3ByZWNpc2lvbjp7
dGl0bGU6IkF4aXMgdGljayBmb3JtYXQiLGluZm86IlNlbGVjdCB0aGUgdGljayA9CmZvcm1hdCBm
b3IgdGhlIGF4aXMuIix0eXBlOiJzZWxlY3QiLGluaXQ6IjEiLGRhdGE6W3tsYWJlbDoiMC4wMDAw
MSIsdmFsdWU6Ij0KNSJ9LHtsYWJlbDoiMC4wMDAxIix2YWx1ZToiNCJ9LHtsYWJlbDoiMC4wMDEi
LHZhbHVlOiIzIn0se2xhYmVsOiIwLjAxIix2YWx1PQplOiIyIn0se2xhYmVsOiIwLjEiLHZhbHVl
OiIxIn0se2xhYmVsOiIxIix2YWx1ZToiMCJ9XX0sc2VwYXJhdG9yX2xlZ2VuZDp7dGk9CnRsZToi
T3RoZXJzIix0eXBlOiJzZXBhcmF0b3IifSxzaG93X2xlZ2VuZDp7dGl0bGU6IlNob3cgbGVnZW5k
IixpbmZvOiJXb3VsZD0KIHlvdSBsaWtlIHRvIGFkZCBhIGxlZ2VuZD8iLHR5cGU6InJhZGlvYnV0
dG9uIixpbml0OiJ0cnVlIixkYXRhOlt7bGFiZWw6IlllPQpzIix2YWx1ZToidHJ1ZSJ9LHtsYWJl
bDoiTm8iLHZhbHVlOiJmYWxzZSJ9XX0sdXNlX3BhbmVsczp7dGl0bGU6IlVzZSBtdWx0aS09CnBh
bmVscyIsaW5mbzoiV291bGQgeW91IGxpa2UgdG8gc2VwYXJhdGUgeW91ciBkYXRhIGludG8gaW5k
aXZpZHVhbCBwYW5lbHM/Ij0KLHR5cGU6InJhZGlvYnV0dG9uIixpbml0OiJmYWxzZSIsZGF0YTpb
e2xhYmVsOiJZZXMiLHZhbHVlOiJ0cnVlIn0se2xhYmVsOiJOPQpvIix2YWx1ZToiZmFsc2UifV19
fX19KSxmdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSx0KXtyZXR1cm4obmV3IERhdGUodCxlKzEsMCk9
CikuZ2V0RGF0ZSgpfWZ1bmN0aW9uIG4oZSx0LG4pe3JldHVybiBmdW5jdGlvbihyLGkscyl7dmFy
IG89M0RlKHIpLHU9M0RbXTtvPD0KciYmdChvKTtpZihzPjEpd2hpbGUobzxpKXt2YXIgYT0zRG5l
dyBEYXRlKCtvKTtuKGEpJXM9M0Q9M0Q9M0QwJiZ1LnB1c2goYSksPQp0KG8pfWVsc2Ugd2hpbGUo
bzxpKXUucHVzaChuZXcgRGF0ZSgrbykpLHQobyk7cmV0dXJuIHV9fXZhciBlPTNEd2luZG93Lm52
fHw9Cnt9O2UudmVyc2lvbj0zRCIxLjEuMTViIixlLmRldj0zRCEwLHdpbmRvdy5udj0zRGUsZS50
b29sdGlwPTNEZS50b29sdGlwfHx7fT0KLGUudXRpbHM9M0RlLnV0aWxzfHx7fSxlLm1vZGVscz0z
RGUubW9kZWxzfHx7fSxlLmNoYXJ0cz0zRHt9LGUuZ3JhcGhzPTNEW10sPQplLmxvZ3M9M0R7fSxl
LmRpc3BhdGNoPTNEZDMuZGlzcGF0Y2goInJlbmRlcl9zdGFydCIsInJlbmRlcl9lbmQiKSxlLmRl
diYmKGU9Ci5kaXNwYXRjaC5vbigicmVuZGVyX3N0YXJ0IixmdW5jdGlvbih0KXtlLmxvZ3Muc3Rh
cnRUaW1lPTNEKyhuZXcgRGF0ZSl9KSxlLj0KZGlzcGF0Y2gub24oInJlbmRlcl9lbmQiLGZ1bmN0
aW9uKHQpe2UubG9ncy5lbmRUaW1lPTNEKyhuZXcgRGF0ZSksZS5sb2dzLnRvPQp0YWxUaW1lPTNE
ZS5sb2dzLmVuZFRpbWUtZS5sb2dzLnN0YXJ0VGltZSxlLmxvZygidG90YWwiLGUubG9ncy50b3Rh
bFRpbWUpfSk9CiksZS5sb2c9M0RmdW5jdGlvbigpe2lmKGUuZGV2JiZjb25zb2xlLmxvZyYmY29u
c29sZS5sb2cuYXBwbHkpY29uc29sZS5sb2cuYT0KcHBseShjb25zb2xlLGFyZ3VtZW50cyk7ZWxz
ZSBpZihlLmRldiYmdHlwZW9mIGNvbnNvbGUubG9nPTNEPTNEImZ1bmN0aW9uIiYmPQpGdW5jdGlv
bi5wcm90b3R5cGUuYmluZCl7dmFyIHQ9M0RGdW5jdGlvbi5wcm90b3R5cGUuYmluZC5jYWxsKGNv
bnNvbGUubG9nLGM9Cm9uc29sZSk7dC5hcHBseShjb25zb2xlLGFyZ3VtZW50cyl9cmV0dXJuIGFy
Z3VtZW50c1thcmd1bWVudHMubGVuZ3RoLTFdfSxlLj0KcmVuZGVyPTNEZnVuY3Rpb24obil7bj0z
RG58fDEsZS5yZW5kZXIuYWN0aXZlPTNEITAsZS5kaXNwYXRjaC5yZW5kZXJfc3RhcnQoPQopLHNl
dFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgdCxyO2Zvcih2YXIgaT0zRDA7aTxuJiYocj0zRGUucmVu
ZGVyLnF1ZXVlW2ldKTs9CmkrKyl0PTNEci5nZW5lcmF0ZSgpLHR5cGVvZiByLmNhbGxiYWNrPTNE
PTNEdHlwZW9mIEZ1bmN0aW9uJiZyLmNhbGxiYWNrKHQpLD0KZS5ncmFwaHMucHVzaCh0KTtlLnJl
bmRlci5xdWV1ZS5zcGxpY2UoMCxpKSxlLnJlbmRlci5xdWV1ZS5sZW5ndGg/c2V0VGltZW91PQp0
KGFyZ3VtZW50cy5jYWxsZWUsMCk6KGUuZGlzcGF0Y2gucmVuZGVyX2VuZCgpLGUucmVuZGVyLmFj
dGl2ZT0zRCExKX0sMCl9LGU9Ci5yZW5kZXIuYWN0aXZlPTNEITEsZS5yZW5kZXIucXVldWU9M0Rb
XSxlLmFkZEdyYXBoPTNEZnVuY3Rpb24odCl7dHlwZW9mIGFyZz0KdW1lbnRzWzBdPTNEPTNEdHlw
ZW9mIEZ1bmN0aW9uJiYodD0zRHtnZW5lcmF0ZTphcmd1bWVudHNbMF0sY2FsbGJhY2s6YXJndW1l
PQpudHNbMV19KSxlLnJlbmRlci5xdWV1ZS5wdXNoKHQpLGUucmVuZGVyLmFjdGl2ZXx8ZS5yZW5k
ZXIoKX0sZS5pZGVudGl0eT0zRGY9CnVuY3Rpb24oZSl7cmV0dXJuIGV9LGUuc3RyaXA9M0RmdW5j
dGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC8oXHN8JikvZywiIil9LD0KZDMudGltZS5tb250aEVu
ZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgRGF0ZShlLmdldEZ1bGxZZWFyKCksZS5nZXRNb250
aCgpPQosMCl9LGQzLnRpbWUubW9udGhFbmRzPTNEbihkMy50aW1lLm1vbnRoRW5kLGZ1bmN0aW9u
KGUpe2Uuc2V0VVRDRGF0ZShlLmdldFU9ClRDRGF0ZSgpKzEpLGUuc2V0RGF0ZSh0KGUuZ2V0TW9u
dGgoKSsxLGUuZ2V0RnVsbFllYXIoKSkpfSxmdW5jdGlvbihlKXtyZXR1cj0KbiBlLmdldE1vbnRo
KCl9KSxlLmludGVyYWN0aXZlR3VpZGVsaW5lPTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBjKG8pe28u
ZWFjaChmPQp1bmN0aW9uKG8pe2Z1bmN0aW9uIGcoKXt2YXIgZT0zRGQzLm1vdXNlKHRoaXMpLG49
M0RlWzBdLHI9M0RlWzFdLG89M0QhMCxhPQo9M0QhMTtsJiYobj0zRGQzLmV2ZW50Lm9mZnNldFgs
cj0zRGQzLmV2ZW50Lm9mZnNldFksZDMuZXZlbnQudGFyZ2V0LnRhZ05hbWU9CiE9M0Q9M0Qic3Zn
IiYmKG89M0QhMSksZDMuZXZlbnQudGFyZ2V0LmNsYXNzTmFtZS5iYXNlVmFsLm1hdGNoKCJudi1s
ZWdlbmQiKT0KJiYoYT0zRCEwKSksbyYmKG4tPTNEaS5sZWZ0LHItPTNEaS50b3ApO2lmKG48MHx8
cjwwfHxuPnB8fHI+ZHx8ZDMuZXZlbnQucmVsPQphdGVkVGFyZ2V0JiZkMy5ldmVudC5yZWxhdGVk
VGFyZ2V0Lm93bmVyU1ZHRWxlbWVudD0zRD0zRD0zRHVuZGVmaW5lZHx8YSl7aWY9CihsJiZkMy5l
dmVudC5yZWxhdGVkVGFyZ2V0JiZkMy5ldmVudC5yZWxhdGVkVGFyZ2V0Lm93bmVyU1ZHRWxlbWVu
dD0zRD0zRD0zRD0KdW5kZWZpbmVkJiZkMy5ldmVudC5yZWxhdGVkVGFyZ2V0LmNsYXNzTmFtZS5t
YXRjaCh0Lm52UG9pbnRlckV2ZW50c0NsYXNzKSlyPQpldHVybjt1LmVsZW1lbnRNb3VzZW91dCh7
bW91c2VYOm4sbW91c2VZOnJ9KSxjLnJlbmRlckd1aWRlTGluZShudWxsKTtyZXR1cm49Cn12YXIg
Zj0zRHMuaW52ZXJ0KG4pO3UuZWxlbWVudE1vdXNlbW92ZSh7bW91c2VYOm4sbW91c2VZOnIscG9p
bnRYVmFsdWU6Zn0pLD0KZDMuZXZlbnQudHlwZT0zRD0zRD0zRCJkYmxjbGljayImJnUuZWxlbWVu
dERibGNsaWNrKHttb3VzZVg6bixtb3VzZVk6cixwb2luPQp0WFZhbHVlOmZ9KX12YXIgaD0zRGQz
LnNlbGVjdCh0aGlzKSxwPTNEbnx8OTYwLGQ9M0RyfHw0MDAsdj0zRGguc2VsZWN0QWxsKCI9Cmcu
bnYtd3JhcC5udi1pbnRlcmFjdGl2ZUxpbmVMYXllciIpLmRhdGEoW29dKSxtPTNEdi5lbnRlcigp
LmFwcGVuZCgiZyIpLmF0dD0KcigiY2xhc3MiLCIgbnYtd3JhcCBudi1pbnRlcmFjdGl2ZUxpbmVM
YXllciIpO20uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJuPQp2LWludGVyYWN0aXZlR3VpZGVM
aW5lIik7aWYoIWYpcmV0dXJuO2Yub24oIm1vdXNlbW92ZSIsZywhMCkub24oIm1vdXNlb3V0Iiw9
CmcsITApLm9uKCJkYmxjbGljayIsZyksYy5yZW5kZXJHdWlkZUxpbmU9M0RmdW5jdGlvbih0KXtp
ZighYSlyZXR1cm47dmFyIG49Cj0zRHYuc2VsZWN0KCIubnYtaW50ZXJhY3RpdmVHdWlkZUxpbmUi
KS5zZWxlY3RBbGwoImxpbmUiKS5kYXRhKHQhPTNEbnVsbD9bZT0KLnV0aWxzLk5hTnRvWmVybyh0
KV06W10sU3RyaW5nKTtuLmVudGVyKCkuYXBwZW5kKCJsaW5lIikuYXR0cigiY2xhc3MiLCJudi1n
PQp1aWRlbGluZSIpLmF0dHIoIngxIixmdW5jdGlvbihlKXtyZXR1cm4gZX0pLmF0dHIoIngyIixm
dW5jdGlvbihlKXtyZXR1cm4gZX09CikuYXR0cigieTEiLGQpLmF0dHIoInkyIiwwKSxuLmV4aXQo
KS5yZW1vdmUoKX19KX12YXIgdD0zRGUubW9kZWxzLnRvb2x0aXAoKT0KLG49M0RudWxsLHI9M0Ru
dWxsLGk9M0R7bGVmdDowLHRvcDowfSxzPTNEZDMuc2NhbGUubGluZWFyKCksbz0zRGQzLnNjYWxl
LmxpPQpuZWFyKCksdT0zRGQzLmRpc3BhdGNoKCJlbGVtZW50TW91c2Vtb3ZlIiwiZWxlbWVudE1v
dXNlb3V0IiwiZWxlbWVudERibGNsaWM9CmsiKSxhPTNEITAsZj0zRG51bGwsbD0zRG5hdmlnYXRv
ci51c2VyQWdlbnQuaW5kZXhPZigiTVNJRSIpIT0zRD0zRC0xO3JldHVybj0KIGMuZGlzcGF0Y2g9
M0R1LGMudG9vbHRpcD0zRHQsYy5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0PQpoPyhpLnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDppLnRv
cCxpLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0KPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OmkubGVmdCxj
KTppfSxjLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sPQplbmd0aD8obj0z
RGUsYyk6bn0sYy5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
cj0zRGUsYyk9CjpyfSxjLnhTY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhzPTNEZSxjKTpzfSxjLnNob3dHdWlkZT0KTGluZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhhPTNEZSxjKTphfSxjLnN2Z0NvbnRhaW5lcj0zRGZ1PQpuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLGMpOmZ9LGN9LGUuaW50ZXJhY3RpdmVC
aXNlY3Q9M0RmdW49CmN0aW9uKGUsdCxuKXtpZighZSBpbnN0YW5jZW9mIEFycmF5KXJldHVybiBu
dWxsO3R5cGVvZiBuIT0zRCJmdW5jdGlvbiImJihuPQo9M0RmdW5jdGlvbihlLHQpe3JldHVybiBl
Lnh9KTt2YXIgcj0zRGQzLmJpc2VjdG9yKG4pLmxlZnQsaT0zRGQzLm1heChbMCxyKGU9Cix0KS0x
XSkscz0zRG4oZVtpXSxpKTt0eXBlb2Ygcz0zRD0zRCJ1bmRlZmluZWQiJiYocz0zRGkpO2lmKHM9
M0Q9M0Q9M0R0KXJldD0KdXJuIGk7dmFyIG89M0RkMy5taW4oW2krMSxlLmxlbmd0aC0xXSksdT0z
RG4oZVtvXSxvKTtyZXR1cm4gdHlwZW9mIHU9M0Q9M0QiPQp1bmRlZmluZWQiJiYodT0zRG8pLE1h
dGguYWJzKHUtdCk+PTNETWF0aC5hYnMocy10KT9pOm99LGUubmVhcmVzdFZhbHVlSW5kZXg9Cj0z
RGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0zREluZmluaXR5LGk9M0RudWxsO3JldHVybiBlLmZvckVh
Y2goZnVuY3Rpb24oZSxzKT0Ke3ZhciBvPTNETWF0aC5hYnModC1lKTtvPD0zRHImJm88biYmKHI9
M0RvLGk9M0RzKX0pLGl9LGZ1bmN0aW9uKCl7d2luZG93Lm52PQoudG9vbHRpcD0zRHt9LHdpbmRv
dy5udi5tb2RlbHMudG9vbHRpcD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24geSgpe2lmKGEpe3ZhciA9
CmU9M0RkMy5zZWxlY3QoYSk7ZS5ub2RlKCkudGFnTmFtZSE9M0Q9M0Qic3ZnIiYmKGU9M0RlLnNl
bGVjdCgic3ZnIikpO3ZhciB0PQo9M0RlLm5vZGUoKT9lLmF0dHIoInZpZXdCb3giKTpudWxsO2lm
KHQpe3Q9M0R0LnNwbGl0KCIgIik7dmFyIG49M0RwYXJzZUludCg9CmUuc3R5bGUoIndpZHRoIikp
L3RbMl07bC5sZWZ0PTNEbC5sZWZ0Km4sbC50b3A9M0RsLnRvcCpufX19ZnVuY3Rpb24gYihlKXt2
YT0KciB0O2E/dD0zRGQzLnNlbGVjdChhKTp0PTNEZDMuc2VsZWN0KCJib2R5Iik7dmFyIG49M0R0
LnNlbGVjdCgiLm52dG9vbHRpcCIpPQo7cmV0dXJuIG4ubm9kZSgpPTNEPTNEPTNEbnVsbCYmKG49
M0R0LmFwcGVuZCgiZGl2IikuYXR0cigiY2xhc3MiLCJudnRvb2x0aXA9CiAiKyh1P3U6Inh5LXRv
b2x0aXAiKSkuYXR0cigiaWQiLGgpKSxuLm5vZGUoKS5pbm5lckhUTUw9M0RlLG4uc3R5bGUoInRv
cCIsMD0KKS5zdHlsZSgibGVmdCIsMCkuc3R5bGUoIm9wYWNpdHkiLDApLG4uc2VsZWN0QWxsKCJk
aXYsIHRhYmxlLCB0ZCwgdHIiKS5jbGFzPQpzZWQocCwhMCksbi5jbGFzc2VkKHAsITApLG4ubm9k
ZSgpfWZ1bmN0aW9uIHcoKXtpZighYylyZXR1cm47aWYoIWcobikpcmV0dXI9Cm47eSgpO3ZhciB0
PTNEbC5sZWZ0LHU9M0RvIT0zRG51bGw/bzpsLnRvcCxoPTNEYihtKG4pKTtmPTNEaDtpZihhKXt2
YXIgcD0zRD0KYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic3ZnIilbMF0sZD0zRHA/cC5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKTphLmdldEJvdW5kPQppbmdDbGllbnRSZWN0KCksdj0zRHtsZWZ0OjAs
dG9wOjB9O2lmKHApe3ZhciBFPTNEcC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSw9ClM9M0RhLmdl
dEJvdW5kaW5nQ2xpZW50UmVjdCgpLHg9M0RFLnRvcDtpZih4PDApe3ZhciBUPTNEYS5nZXRCb3Vu
ZGluZ0NsaWVudD0KUmVjdCgpO3g9M0RNYXRoLmFicyh4KT5ULmhlaWdodD8wOnh9di50b3A9M0RN
YXRoLmFicyh4LVMudG9wKSx2LmxlZnQ9M0RNYXRoPQouYWJzKEUubGVmdC1TLmxlZnQpfXQrPTNE
YS5vZmZzZXRMZWZ0K3YubGVmdC0yKmEuc2Nyb2xsTGVmdCx1Kz0zRGEub2Zmc2V0VG89CnArdi50
b3AtMiphLnNjcm9sbFRvcH1yZXR1cm4gcyYmcz4wJiYodT0zRE1hdGguZmxvb3IodS9zKSpzKSxl
LnRvb2x0aXAuY2FsYz0KVG9vbHRpcFBvc2l0aW9uKFt0LHVdLHIsaSxoKSx3fXZhciB0PTNEbnVs
bCxuPTNEbnVsbCxyPTNEInciLGk9M0Q1MCxzPTNEMjUsPQpvPTNEbnVsbCx1PTNEbnVsbCxhPTNE
bnVsbCxmPTNEbnVsbCxsPTNEe2xlZnQ6bnVsbCx0b3A6bnVsbH0sYz0zRCEwLGg9M0QibnY9CnRv
b2x0aXAtIitNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMWU1KSxwPTNEIm52LXBvaW50ZXItZXZl
bnRzLW5vbmUiLGQ9M0RmdT0KbmN0aW9uKGUsdCl7cmV0dXJuIGV9LHY9M0RmdW5jdGlvbihlKXty
ZXR1cm4gZX0sbT0zRGZ1bmN0aW9uKGUpe2lmKHQhPTNEbnVsPQpsKXJldHVybiB0O2lmKGU9M0Q9
M0RudWxsKXJldHVybiIiO3ZhciBuPTNEZDMuc2VsZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQ9
CigidGFibGUiKSkscj0zRG4uc2VsZWN0QWxsKCJ0aGVhZCIpLmRhdGEoW2VdKS5lbnRlcigpLmFw
cGVuZCgidGhlYWQiKTtyLmFwcD0KZW5kKCJ0ciIpLmFwcGVuZCgidGQiKS5hdHRyKCJjb2xzcGFu
IiwzKS5hcHBlbmQoInN0cm9uZyIpLmNsYXNzZWQoIngtdmFsdWUiPQosITApLmh0bWwodihlLnZh
bHVlKSk7dmFyIGk9M0RuLnNlbGVjdEFsbCgidGJvZHkiKS5kYXRhKFtlXSkuZW50ZXIoKS5hcHBl
bmQ9CigidGJvZHkiKSxzPTNEaS5zZWxlY3RBbGwoInRyIikuZGF0YShmdW5jdGlvbihlKXtyZXR1
cm4gZS5zZXJpZXN9KS5lbnRlcigpLj0KYXBwZW5kKCJ0ciIpLmNsYXNzZWQoImhpZ2hsaWdodCIs
ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaGlnaGxpZ2h0fSk7cy5hcHBlbmQoPQoidGQiKS5jbGFzc2Vk
KCJsZWdlbmQtY29sb3ItZ3VpZGUiLCEwKS5hcHBlbmQoImRpdiIpLnN0eWxlKCJiYWNrZ3JvdW5k
LWNvbG89CnIiLGZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbG9yfSkscy5hcHBlbmQoInRkIikuY2xh
c3NlZCgia2V5IiwhMCkuaHRtbChmdW5jdD0KaW9uKGUpe3JldHVybiBlLmtleX0pLHMuYXBwZW5k
KCJ0ZCIpLmNsYXNzZWQoInZhbHVlIiwhMCkuaHRtbChmdW5jdGlvbihlLHQpPQp7cmV0dXJuIGQo
ZS52YWx1ZSx0KX0pLHMuc2VsZWN0QWxsKCJ0ZCIpLmVhY2goZnVuY3Rpb24oZSl7aWYoZS5oaWdo
bGlnaHQpe3Y9CmFyIHQ9M0RkMy5zY2FsZS5saW5lYXIoKS5kb21haW4oWzAsMV0pLnJhbmdlKFsi
I2ZmZiIsZS5jb2xvcl0pLG49M0QuNjtkMy5zZT0KbGVjdCh0aGlzKS5zdHlsZSgiYm9yZGVyLWJv
dHRvbS1jb2xvciIsdChuKSkuc3R5bGUoImJvcmRlci10b3AtY29sb3IiLHQobikpPQp9fSk7dmFy
IG89M0RuLm5vZGUoKS5vdXRlckhUTUw7cmV0dXJuIGUuZm9vdGVyIT0zRD0zRHVuZGVmaW5lZCYm
KG8rPTNEIjxkaXY9CiBjbGFzcz0zRCdmb290ZXInPiIrZS5mb290ZXIrIjwvZGl2PiIpLG99LGc9
M0RmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5zZXJpZT0KcyYmZS5zZXJpZXMubGVuZ3RoPjA/ITA6
ITF9O3JldHVybiB3Lm52UG9pbnRlckV2ZW50c0NsYXNzPTNEcCx3LmNvbnRlbnQ9M0RmPQp1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PTNEZSx3KTp0fSx3LnRvb2x0aXBFbGVt
PTNEZnVuY3Rpb24oKXs9CnJldHVybiBmfSx3LmNvbnRlbnRHZW5lcmF0b3I9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odHlwZW9mID0KZT0zRD0zRCJmdW5jdGlvbiImJiht
PTNEZSksdyk6bX0sdy5kYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5nPQp0
aD8obj0zRGUsdyk6bn0sdy5ncmF2aXR5PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHI9M0RlLHcpOnI9Cn0sdy5kaXN0YW5jZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhpPTNEZSx3KTppfSx3LnNuYXBEaXN0YT0KbmNlPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLHcpOnN9LHcuY2xhc3Nlcz0zRGZ1bmN0aW9u
PQooZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RlLHcpOnV9LHcuY2hhcnRDb250YWlu
ZXI9M0RmdW5jdGlvbihlKXtyZXQ9CnVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZSx3KTphfSx3
LnBvc2l0aW9uPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cz0KLmxlbmd0aD8obC5sZWZ0
PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6bC5sZWZ0LGwudG9wPTNEdHlw
ZW9mPQogZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6bC50b3Asdyk6bH0sdy5maXhlZFRvcD0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmc9CnVtZW50cy5sZW5ndGg/KG89M0RlLHcpOm99LHcuZW5h
YmxlZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPz0KKGM9M0RlLHcpOmN9
LHcudmFsdWVGb3JtYXR0ZXI9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
dHlwZW9mPQogZT0zRD0zRCJmdW5jdGlvbiImJihkPTNEZSksdyk6ZH0sdy5oZWFkZXJGb3JtYXR0
ZXI9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXI9Cmd1bWVudHMubGVuZ3RoPyh0eXBlb2YgZT0zRD0z
RCJmdW5jdGlvbiImJih2PTNEZSksdyk6dn0sdy5pZD0zRGZ1bmN0aW9uKCl7cj0KZXR1cm4gaH0s
d30sZS50b29sdGlwLnNob3c9M0RmdW5jdGlvbih0LG4scixpLHMsbyl7dmFyIHU9M0Rkb2N1bWVu
dC5jcmVhdGVFPQpsZW1lbnQoImRpdiIpO3UuY2xhc3NOYW1lPTNEIm52dG9vbHRpcCAiKyhvP286
Inh5LXRvb2x0aXAiKTt2YXIgYT0zRHM7aWYoIXM9Cnx8cy50YWdOYW1lLm1hdGNoKC9nfHN2Zy9p
KSlhPTNEZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXTt1Lj0Kc3R5bGUu
bGVmdD0zRDAsdS5zdHlsZS50b3A9M0QwLHUuc3R5bGUub3BhY2l0eT0zRDAsdS5pbm5lckhUTUw9
M0RuLGEuYXBwZW5kPQpDaGlsZCh1KSxzJiYodFswXT0zRHRbMF0tcy5zY3JvbGxMZWZ0LHRbMV09
M0R0WzFdLXMuc2Nyb2xsVG9wKSxlLnRvb2x0aXAuY2E9CmxjVG9vbHRpcFBvc2l0aW9uKHQscixp
LHUpfSxlLnRvb2x0aXAuZmluZEZpcnN0Tm9uU1ZHUGFyZW50PTNEZnVuY3Rpb24oZSl7dz0KaGls
ZShlLnRhZ05hbWUubWF0Y2goL15nfHN2ZyQvaSkhPTNEPTNEbnVsbCllPTNEZS5wYXJlbnROb2Rl
O3JldHVybiBlfSxlLnRvPQpvbHRpcC5maW5kVG90YWxPZmZzZXRUb3A9M0RmdW5jdGlvbihlLHQp
e3ZhciBuPTNEdDtkbyBpc05hTihlLm9mZnNldFRvcCl8fCg9Cm4rPTNEZS5vZmZzZXRUb3ApO3do
aWxlKGU9M0RlLm9mZnNldFBhcmVudCk7cmV0dXJuIG59LGUudG9vbHRpcC5maW5kVG90YWxPZj0K
ZnNldExlZnQ9M0RmdW5jdGlvbihlLHQpe3ZhciBuPTNEdDtkbyBpc05hTihlLm9mZnNldExlZnQp
fHwobis9M0RlLm9mZnNldExlPQpmdCk7d2hpbGUoZT0zRGUub2Zmc2V0UGFyZW50KTtyZXR1cm4g
bn0sZS50b29sdGlwLmNhbGNUb29sdGlwUG9zaXRpb249M0RmdW49CmN0aW9uKHQsbixyLGkpe3Zh
ciBzPTNEcGFyc2VJbnQoaS5vZmZzZXRIZWlnaHQpLG89M0RwYXJzZUludChpLm9mZnNldFdpZHRo
KT0KLHU9M0RlLnV0aWxzLndpbmRvd1NpemUoKS53aWR0aCxhPTNEZS51dGlscy53aW5kb3dTaXpl
KCkuaGVpZ2h0LGY9M0R3aW5kb3cuPQpwYWdlWU9mZnNldCxsPTNEd2luZG93LnBhZ2VYT2Zmc2V0
LGMsaDthPTNEd2luZG93LmlubmVyV2lkdGg+PTNEZG9jdW1lbnQuYm89CmR5LnNjcm9sbFdpZHRo
P2E6YS0xNix1PTNEd2luZG93LmlubmVySGVpZ2h0Pj0zRGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVp
Z2h0Pz0KdTp1LTE2LG49M0RufHwicyIscj0zRHJ8fDIwO3ZhciBwPTNEZnVuY3Rpb24odCl7cmV0
dXJuIGUudG9vbHRpcC5maW5kVG90YWxPPQpmZnNldFRvcCh0LGgpfSxkPTNEZnVuY3Rpb24odCl7
cmV0dXJuIGUudG9vbHRpcC5maW5kVG90YWxPZmZzZXRMZWZ0KHQsYyl9O3M9CndpdGNoKG4pe2Nh
c2UiZSI6Yz0zRHRbMF0tby1yLGg9M0R0WzFdLXMvMjt2YXIgdj0zRGQoaSksbT0zRHAoaSk7djxs
JiYoYz0zRD0KdFswXStyPmw/dFswXStyOmwtditjKSxtPGYmJihoPTNEZi1tK2gpLG0rcz5mK2Em
JihoPTNEZithLW0raC1zKTticmVhaztjYXNlPQoidyI6Yz0zRHRbMF0rcixoPTNEdFsxXS1zLzI7
dmFyIHY9M0RkKGkpLG09M0RwKGkpO3Yrbz51JiYoYz0zRHRbMF0tby1yKSxtPGY9CiYmKGg9M0Rm
KzUpLG0rcz5mK2EmJihoPTNEZithLW0raC1zKTticmVhaztjYXNlIm4iOmM9M0R0WzBdLW8vMi01
LGg9M0R0WzFdKz0Kcjt2YXIgdj0zRGQoaSksbT0zRHAoaSk7djxsJiYoYz0zRGwrNSksditvPnUm
JihjPTNEYy1vLzIrNSksbStzPmYrYSYmKGg9M0RmPQorYS1tK2gtcyk7YnJlYWs7Y2FzZSJzIjpj
PTNEdFswXS1vLzIsaD0zRHRbMV0tcy1yO3ZhciB2PTNEZChpKSxtPTNEcChpKTt2PGw9CiYmKGM9
M0RsKzUpLHYrbz51JiYoYz0zRGMtby8yKzUpLGY+bSYmKGg9M0RmKTticmVhaztjYXNlIm5vbmUi
OmM9M0R0WzBdLGg9Cj0zRHRbMV0tcjt2YXIgdj0zRGQoaSksbT0zRHAoaSl9cmV0dXJuIGkuc3R5
bGUubGVmdD0zRGMrInB4IixpLnN0eWxlLnRvcD0zRD0KaCsicHgiLGkuc3R5bGUub3BhY2l0eT0z
RDEsaS5zdHlsZS5wb3NpdGlvbj0zRCJhYnNvbHV0ZSIsaX0sZS50b29sdGlwLmNsZWFuPQp1cD0z
RGZ1bmN0aW9uKCl7dmFyIGU9M0Rkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJudnRv
b2x0aXAiKSx0PTNEW109Cjt3aGlsZShlLmxlbmd0aCl0LnB1c2goZVswXSksZVswXS5zdHlsZS50
cmFuc2l0aW9uRGVsYXk9M0QiMCAhaW1wb3J0YW50IixlWz0KMF0uc3R5bGUub3BhY2l0eT0zRDAs
ZVswXS5jbGFzc05hbWU9M0QibnZ0b29sdGlwLXBlbmRpbmctcmVtb3ZhbCI7c2V0VGltZW91PQp0
KGZ1bmN0aW9uKCl7d2hpbGUodC5sZW5ndGgpe3ZhciBlPTNEdC5wb3AoKTtlLnBhcmVudE5vZGUu
cmVtb3ZlQ2hpbGQoZSl9fSw9CjUwMCl9fSgpLGUudXRpbHMud2luZG93U2l6ZT0zRGZ1bmN0aW9u
KCl7dmFyIGU9M0R7d2lkdGg6NjQwLGhlaWdodDo0ODB9O3JldD0KdXJuIGRvY3VtZW50LmJvZHkm
JmRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgmJihlLndpZHRoPTNEZG9jdW1lbnQuYm9keS5vZmZz
PQpldFdpZHRoLGUuaGVpZ2h0PTNEZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQpLGRvY3VtZW50
LmNvbXBhdE1vZGU9M0Q9M0QiQ1M9ClMxQ29tcGF0IiYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
JiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0V2lkdGgmJj0KKGUud2lkdGg9M0Rkb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0V2lkdGgsZS5oZWlnaHQ9M0Rkb2N1bWVudC5kb2N1
bWVuPQp0RWxlbWVudC5vZmZzZXRIZWlnaHQpLHdpbmRvdy5pbm5lcldpZHRoJiZ3aW5kb3cuaW5u
ZXJIZWlnaHQmJihlLndpZHRoPTNEd2k9Cm5kb3cuaW5uZXJXaWR0aCxlLmhlaWdodD0zRHdpbmRv
dy5pbm5lckhlaWdodCksZX0sZS51dGlscy53aW5kb3dSZXNpemU9M0RmdT0KbmN0aW9uKGUpe2lm
KGU9M0Q9M0Q9M0R1bmRlZmluZWQpcmV0dXJuO3ZhciB0PTNEd2luZG93Lm9ucmVzaXplO3dpbmRv
dy5vbnJlPQpzaXplPTNEZnVuY3Rpb24obil7dHlwZW9mIHQ9M0Q9M0QiZnVuY3Rpb24iJiZ0KG4p
LGUobil9fSxlLnV0aWxzLmdldENvbG9yPQo9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD9PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCk9M0Q9Cj0zRD0zRCJbb2Jq
ZWN0IEFycmF5XSI/ZnVuY3Rpb24oZSxuKXtyZXR1cm4gZS5jb2xvcnx8dFtuJXQubGVuZ3RoXX06
dDplLnV0aT0KbHMuZGVmYXVsdENvbG9yKCl9LGUudXRpbHMuZGVmYXVsdENvbG9yPTNEZnVuY3Rp
b24oKXt2YXIgZT0zRGQzLnNjYWxlLmNhdGVnPQpvcnkyMCgpLnJhbmdlKCk7cmV0dXJuIGZ1bmN0
aW9uKHQsbil7cmV0dXJuIHQuY29sb3J8fGVbbiVlLmxlbmd0aF19fSxlLnV0aWw9CnMuY3VzdG9t
VGhlbWU9M0RmdW5jdGlvbihlLHQsbil7dD0zRHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlLmtleX0s
bj0zRG58fGQzLj0Kc2NhbGUuY2F0ZWdvcnkyMCgpLnJhbmdlKCk7dmFyIHI9M0RuLmxlbmd0aDty
ZXR1cm4gZnVuY3Rpb24oaSxzKXt2YXIgbz0zRHQoPQppKTtyZXR1cm4gcnx8KHI9M0RuLmxlbmd0
aCksdHlwZW9mIGVbb10hPTNEInVuZGVmaW5lZCI/dHlwZW9mIGVbb109M0Q9M0QiZnU9Cm5jdGlv
biI/ZVtvXSgpOmVbb106blstLXJdfX0sZS51dGlscy5wamF4PTNEZnVuY3Rpb24odCxuKXtmdW5j
dGlvbiByKHIpe2QzLj0KaHRtbChyLGZ1bmN0aW9uKHIpe3ZhciBpPTNEZDMuc2VsZWN0KG4pLm5v
ZGUoKTtpLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGQzPQouc2VsZWN0KHIpLnNlbGVjdChuKS5u
b2RlKCksaSksZS51dGlscy5wamF4KHQsbil9KX1kMy5zZWxlY3RBbGwodCkub24oImNsaWM9Cmsi
LGZ1bmN0aW9uKCl7aGlzdG9yeS5wdXNoU3RhdGUodGhpcy5ocmVmLHRoaXMudGV4dENvbnRlbnQs
dGhpcy5ocmVmKSxyKHRoaT0Kcy5ocmVmKSxkMy5ldmVudC5wcmV2ZW50RGVmYXVsdCgpfSksZDMu
c2VsZWN0KHdpbmRvdykub24oInBvcHN0YXRlIixmdW5jdGlvPQpuKCl7ZDMuZXZlbnQuc3RhdGUm
JnIoZDMuZXZlbnQuc3RhdGUpfSl9LGUudXRpbHMuY2FsY0FwcHJveFRleHRXaWR0aD0zRGZ1bmM9
CnRpb24oZSl7aWYodHlwZW9mIGUuc3R5bGU9M0Q9M0QiZnVuY3Rpb24iJiZ0eXBlb2YgZS50ZXh0
PTNEPTNEImZ1bmN0aW9uIil7dj0KYXIgdD0zRHBhcnNlSW50KGUuc3R5bGUoImZvbnQtc2l6ZSIp
LnJlcGxhY2UoInB4IiwiIikpLG49M0RlLnRleHQoKS5sZW5ndGg7PQpyZXR1cm4gbip0Ki41fXJl
dHVybiAwfSxlLnV0aWxzLk5hTnRvWmVybz0zRGZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZSE9
M0Q9CiJudW1iZXIifHxpc05hTihlKXx8ZT0zRD0zRD0zRG51bGx8fGU9M0Q9M0Q9M0RJbmZpbml0
eT8wOmV9LGUudXRpbHMub3B0aW9ucz0KRnVuYz0zRGZ1bmN0aW9uKGUpe3JldHVybiBlJiZkMy5t
YXAoZSkuZm9yRWFjaChmdW5jdGlvbihlLHQpe3R5cGVvZiB0aGlzW2VdPQo9M0Q9M0QiZnVuY3Rp
b24iJiZ0aGlzW2VdKHQpfS5iaW5kKHRoaXMpKSx0aGlzfSxlLm1vZGVscy5heGlzPTNEZnVuY3Rp
b24oKXs9CmZ1bmN0aW9uIG0oZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXt2YXIgaT0zRGQz
LnNlbGVjdCh0aGlzKSxtPTNEaS5zZWxlYz0KdEFsbCgiZy5udi13cmFwLm52LWF4aXMiKS5kYXRh
KFtlXSksZz0zRG0uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsPQoibnZkMyBudi13
cmFwIG52LWF4aXMiKSx5PTNEZy5hcHBlbmQoImciKSxiPTNEbS5zZWxlY3QoImciKTtwIT0zRD0z
RG51bGw/dC49CnRpY2tzKHApOih0Lm9yaWVudCgpPTNEPTNEInRvcCJ8fHQub3JpZW50KCk9M0Q9
M0QiYm90dG9tIikmJnQudGlja3MoTWF0aC5hYj0KcyhzLnJhbmdlKClbMV0tcy5yYW5nZSgpWzBd
KS8xMDApLGIuY2FsbCh0KSx2PTNEdnx8dC5zY2FsZSgpO3ZhciB3PTNEdC50aWNrPQpGb3JtYXQo
KTt3PTNEPTNEbnVsbCYmKHc9M0R2LnRpY2tGb3JtYXQoKSk7dmFyIEU9M0RiLnNlbGVjdEFsbCgi
dGV4dC5udi1heGk9CnNsYWJlbCIpLmRhdGEoW298fG51bGxdKTtFLmV4aXQoKS5yZW1vdmUoKTtz
d2l0Y2godC5vcmllbnQoKSl7Y2FzZSJ0b3AiOkUuZT0KbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0
dHIoImNsYXNzIiwibnYtYXhpc2xhYmVsIik7dmFyIFM9M0RzLnJhbmdlKCkubGVuZ3RoPQo9M0Q9
M0QyP3MucmFuZ2UoKVsxXTpzLnJhbmdlKClbcy5yYW5nZSgpLmxlbmd0aC0xXSsocy5yYW5nZSgp
WzFdLXMucmFuZ2UoKVs9CjBdKTtFLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikuYXR0cigi
eSIsMCkuYXR0cigieCIsUy8yKTtpZih1KXt2YXIgeD0zRD0KbS5zZWxlY3RBbGwoImcubnYtYXhp
c01heE1pbiIpLmRhdGEocy5kb21haW4oKSk7eC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoPQoi
Y2xhc3MiLCJudi1heGlzTWF4TWluIikuYXBwZW5kKCJ0ZXh0IikseC5leGl0KCkucmVtb3ZlKCks
eC5hdHRyKCJ0cmFuc2Zvcm09CiIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIrcyhl
KSsiLDApIn0pLnNlbGVjdCgidGV4dCIpLmF0dHIoImR5IiwiLT0KMC41ZW0iKS5hdHRyKCJ5Iiwt
dC50aWNrUGFkZGluZygpKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLnRleHQoZnVuY3Rp
PQpvbihlLHQpe3ZhciBuPTNEdyhlKTtyZXR1cm4oIiIrbikubWF0Y2goIk5hTiIpPyIiOm59KSx4
LmF0dHIoInRyYW5zZm9ybSIsZnU9Cm5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitzLnJh
bmdlKClbdF0rIiwwKSJ9KX1icmVhaztjYXNlImJvdHRvbSI6dmFyID0KVD0zRDM2LE49M0QzMCxD
PTNEYi5zZWxlY3RBbGwoImciKS5zZWxlY3QoInRleHQiKTtpZihmJTM2MCl7Qy5lYWNoKGZ1bmN0
aW9uPQooZSx0KXt2YXIgbj0zRHRoaXMuZ2V0QkJveCgpLndpZHRoO24+TiYmKE49M0RuKX0pO3Zh
ciBrPTNETWF0aC5hYnMoTWF0aC5zaW49CihmKk1hdGguUEkvMTgwKSksVD0zRChrP2sqTjpOKSsz
MDtDLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0LG4pe3JldHVybj0KInJvdGF0ZSgiK2Yr
IiAwLDApIn0pLnN0eWxlKCJ0ZXh0LWFuY2hvciIsZiUzNjA+MD8ic3RhcnQiOiJlbmQiKX1FLmVu
dGVyKCkuPQphcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52LWF4aXNsYWJlbCIpO3ZhciBT
PTNEcy5yYW5nZSgpLmxlbmd0aD0zRD0zRDI9Cj9zLnJhbmdlKClbMV06cy5yYW5nZSgpW3MucmFu
Z2UoKS5sZW5ndGgtMV0rKHMucmFuZ2UoKVsxXS1zLnJhbmdlKClbMF0pO0UuYT0KdHRyKCJ0ZXh0
LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoInkiLFQpLmF0dHIoIngiLFMvMik7aWYodSl7dmFyIHg9
M0RtLnNlbGVjPQp0QWxsKCJnLm52LWF4aXNNYXhNaW4iKS5kYXRhKFtzLmRvbWFpbigpWzBdLHMu
ZG9tYWluKClbcy5kb21haW4oKS5sZW5ndGgtMV09Cl0pO3guZW50ZXIoKS5hcHBlbmQoImciKS5h
dHRyKCJjbGFzcyIsIm52LWF4aXNNYXhNaW4iKS5hcHBlbmQoInRleHQiKSx4LmV4aT0KdCgpLnJl
bW92ZSgpLHguYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUo
IisocyhlKSsoaD9zPQoucmFuZ2VCYW5kKCkvMjowKSkrIiwwKSJ9KS5zZWxlY3QoInRleHQiKS5h
dHRyKCJkeSIsIi43MWVtIikuYXR0cigieSIsdC50aWM9CmtQYWRkaW5nKCkpLmF0dHIoInRyYW5z
Zm9ybSIsZnVuY3Rpb24oZSx0LG4pe3JldHVybiJyb3RhdGUoIitmKyIgMCwwKSJ9KS5zdD0KeWxl
KCJ0ZXh0LWFuY2hvciIsZj9mJTM2MD4wPyJzdGFydCI6ImVuZCI6Im1pZGRsZSIpLnRleHQoZnVu
Y3Rpb24oZSx0KXt2YXIgPQpuPTNEdyhlKTtyZXR1cm4oIiIrbikubWF0Y2goIk5hTiIpPyIiOm59
KSx4LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXs9CnJldHVybiJ0cmFuc2xhdGUoIiso
cyhlKSsoaD9zLnJhbmdlQmFuZCgpLzI6MCkpKyIsMCkifSl9YyYmQy5hdHRyKCJ0cmFuc2Zvcj0K
bSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKDAsIisodCUyPTNEPTNEMD8iMCI6IjEy
IikrIikifSk7YnJlYWs7Y2FzPQplInJpZ2h0IjpFLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0
cigiY2xhc3MiLCJudi1heGlzbGFiZWwiKSxFLnN0eWxlKCJ0ZXg9CnQtYW5jaG9yIixsPyJtaWRk
bGUiOiJiZWdpbiIpLmF0dHIoInRyYW5zZm9ybSIsbD8icm90YXRlKDkwKSI6IiIpLmF0dHIoInki
LD0KbD8tTWF0aC5tYXgobi5yaWdodCxyKSsxMjotMTApLmF0dHIoIngiLGw/cy5yYW5nZSgpWzBd
LzI6dC50aWNrUGFkZGluZygpKTtpPQpmKHUpe3ZhciB4PTNEbS5zZWxlY3RBbGwoImcubnYtYXhp
c01heE1pbiIpLmRhdGEocy5kb21haW4oKSk7eC5lbnRlcigpLmFwcGU9Cm5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudi1heGlzTWF4TWluIikuYXBwZW5kKCJ0ZXh0Iikuc3R5bGUoIm9wYWNpdHkiLDAp
LHguZT0KeGl0KCkucmVtb3ZlKCkseC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0
dXJuInRyYW5zbGF0ZSgwLCIrcyhlKSsiPQopIn0pLnNlbGVjdCgidGV4dCIpLmF0dHIoImR5Iiwi
LjMyZW0iKS5hdHRyKCJ5IiwwKS5hdHRyKCJ4Iix0LnRpY2tQYWRkaW5nKCk9Cikuc3R5bGUoInRl
eHQtYW5jaG9yIiwic3RhcnQiKS50ZXh0KGZ1bmN0aW9uKGUsdCl7dmFyIG49M0R3KGUpO3JldHVy
bigiIituKT0KLm1hdGNoKCJOYU4iKT8iIjpufSkseC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9u
KGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgwLCIrPQpzLnJhbmdlKClbdF0rIikifSkuc2VsZWN0KCJ0
ZXh0Iikuc3R5bGUoIm9wYWNpdHkiLDEpfWJyZWFrO2Nhc2UibGVmdCI6RS5lbnQ9CmVyKCkuYXBw
ZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudi1heGlzbGFiZWwiKSxFLnN0eWxlKCJ0ZXh0LWFu
Y2hvciIsbD8ibT0KaWRkbGUiOiJlbmQiKS5hdHRyKCJ0cmFuc2Zvcm0iLGw/InJvdGF0ZSgtOTAp
IjoiIikuYXR0cigieSIsbD8tTWF0aC5tYXgobi5sPQplZnQscikrZDotMTApLmF0dHIoIngiLGw/
LXMucmFuZ2UoKVswXS8yOi10LnRpY2tQYWRkaW5nKCkpO2lmKHUpe3ZhciB4PTNEbS49CnNlbGVj
dEFsbCgiZy5udi1heGlzTWF4TWluIikuZGF0YShzLmRvbWFpbigpKTt4LmVudGVyKCkuYXBwZW5k
KCJnIikuYXR0cigiYz0KbGFzcyIsIm52LWF4aXNNYXhNaW4iKS5hcHBlbmQoInRleHQiKS5zdHls
ZSgib3BhY2l0eSIsMCkseC5leGl0KCkucmVtb3ZlKCksPQp4LmF0dHIoInRyYW5zZm9ybSIsZnVu
Y3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKDAsIit2KGUpKyIpIn0pLnNlbGVjdCgidGU9Cnh0
IikuYXR0cigiZHkiLCIuMzJlbSIpLmF0dHIoInkiLDApLmF0dHIoIngiLC10LnRpY2tQYWRkaW5n
KCkpLmF0dHIoInRleHQtYT0KbmNob3IiLCJlbmQiKS50ZXh0KGZ1bmN0aW9uKGUsdCl7dmFyIG49
M0R3KGUpO3JldHVybigiIituKS5tYXRjaCgiTmFOIik/IiI6PQpufSkseC5hdHRyKCJ0cmFuc2Zv
cm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgwLCIrcy5yYW5nZSgpW3RdKyIpIn09
Cikuc2VsZWN0KCJ0ZXh0Iikuc3R5bGUoIm9wYWNpdHkiLDEpfX1FLnRleHQoZnVuY3Rpb24oZSl7
cmV0dXJuIGV9KSx1JiYodC5vcj0KaWVudCgpPTNEPTNEPTNEImxlZnQifHx0Lm9yaWVudCgpPTNE
PTNEPTNEInJpZ2h0IikmJihiLnNlbGVjdEFsbCgiZyIpLmVhY2goPQpmdW5jdGlvbihlLHQpe2Qz
LnNlbGVjdCh0aGlzKS5zZWxlY3QoInRleHQiKS5hdHRyKCJvcGFjaXR5IiwxKTtpZihzKGUpPHMu
cmE9Cm5nZSgpWzFdKzEwfHxzKGUpPnMucmFuZ2UoKVswXS0xMCkoZT4xZS0xMHx8ZTwtMWUtMTAp
JiZkMy5zZWxlY3QodGhpcykuYXR0cj0KKCJvcGFjaXR5IiwwKSxkMy5zZWxlY3QodGhpcykuc2Vs
ZWN0KCJ0ZXh0IikuYXR0cigib3BhY2l0eSIsMCl9KSxzLmRvbWFpbigpPQpbMF09M0Q9M0RzLmRv
bWFpbigpWzFdJiZzLmRvbWFpbigpWzBdPTNEPTNEMCYmbS5zZWxlY3RBbGwoImcubnYtYXhpc01h
eE1pbiI9Cikuc3R5bGUoIm9wYWNpdHkiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/MDoxfSkpO2lm
KHUmJih0Lm9yaWVudCgpPTNEPTNEPTNEIj0KdG9wInx8dC5vcmllbnQoKT0zRD0zRD0zRCJib3R0
b20iKSl7dmFyIEw9M0RbXTttLnNlbGVjdEFsbCgiZy5udi1heGlzTWF4TWluPQoiKS5lYWNoKGZ1
bmN0aW9uKGUsdCl7dHJ5e3Q/TC5wdXNoKHMoZSktdGhpcy5nZXRCQm94KCkud2lkdGgtNCk6TC5w
dXNoKHMoZSk9Cit0aGlzLmdldEJCb3goKS53aWR0aCs0KX1jYXRjaChuKXt0P0wucHVzaChzKGUp
LTQpOkwucHVzaChzKGUpKzQpfX0pLGIuc2VsZT0KY3RBbGwoImciKS5lYWNoKGZ1bmN0aW9uKGUs
dCl7aWYocyhlKTxMWzBdfHxzKGUpPkxbMV0pZT4xZS0xMHx8ZTwtMWUtMTA/ZDMuPQpzZWxlY3Qo
dGhpcykucmVtb3ZlKCk6ZDMuc2VsZWN0KHRoaXMpLnNlbGVjdCgidGV4dCIpLnJlbW92ZSgpfSl9
YSYmYi5zZWxlY3Q9CkFsbCgiLnRpY2siKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIXBhcnNl
RmxvYXQoTWF0aC5yb3VuZChlLl9fZGF0YV9fKjFlNT0KKS8xZTYpJiZlLl9fZGF0YV9fIT0zRD0z
RHVuZGVmaW5lZH0pLmNsYXNzZWQoInplcm8iLCEwKSx2PTNEcy5jb3B5KCl9KSxtfXZhPQpyIHQ9
M0RkMy5zdmcuYXhpcygpLG49M0R7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9LHI9M0Q3
NSxpPTNENjAscz0zRGQ9CjMuc2NhbGUubGluZWFyKCksbz0zRG51bGwsdT0zRCEwLGE9M0QhMCxm
PTNEMCxsPTNEITAsYz0zRCExLGg9M0QhMSxwPTNEbnVsbD0KLGQ9M0QxMjt0LnNjYWxlKHMpLm9y
aWVudCgiYm90dG9tIikudGlja0Zvcm1hdChmdW5jdGlvbihlKXtyZXR1cm4gZX0pO3ZhciB2PQo7
cmV0dXJuIG0uYXhpcz0zRHQsZDMucmViaW5kKG0sdCwib3JpZW50IiwidGlja1ZhbHVlcyIsInRp
Y2tTdWJkaXZpZGUiLCJ0aWM9CmtTaXplIiwidGlja1BhZGRpbmciLCJ0aWNrRm9ybWF0IiksZDMu
cmViaW5kKG0scywiZG9tYWluIiwicmFuZ2UiLCJyYW5nZUJhbj0KZCIsInJhbmdlQmFuZHMiKSxt
Lm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQobSksbS5tYXJnaW49M0RmdW5jdGlv
PQpuKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuLnRvcD0zRHR5cGVvZiBlLnRvcCE9M0Qi
dW5kZWZpbmVkIj9lLnRvcDpuLnQ9Cm9wLG4ucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5k
ZWZpbmVkIj9lLnJpZ2h0Om4ucmlnaHQsbi5ib3R0b209M0R0eXBlbz0KZiBlLmJvdHRvbSE9M0Qi
dW5kZWZpbmVkIj9lLmJvdHRvbTpuLmJvdHRvbSxuLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1
bmRlPQpmaW5lZCI/ZS5sZWZ0Om4ubGVmdCxtKTpufSxtLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9Cj0zRGUsbSk6cn0sbS50aWNrcz0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxtKTpwfSxtLmhlaT0KZ2h0PTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9M0RlLG0pOml9LG0uYXhpc0xhYmVsPTNE
ZnVuY3RpPQpvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsbSk6b30sbS5zaG93
TWF4TWluPTNEZnVuY3Rpb24oZSl7cmV0dXI9Cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsbSk6
dX0sbS5oaWdobGlnaHRaZXJvPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZT0KbnRzLmxlbmd0
aD8oYT0zRGUsbSk6YX0sbS5zY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhzPTNEPQplLHQuc2NhbGUocyksaD0zRHR5cGVvZiBzLnJhbmdlQmFuZHM9M0Q9M0QiZnVu
Y3Rpb24iLGQzLnJlYmluZChtLHMsImRvbWFpbiI9CiwicmFuZ2UiLCJyYW5nZUJhbmQiLCJyYW5n
ZUJhbmRzIiksbSk6c30sbS5yb3RhdGVZTGFiZWw9M0RmdW5jdGlvbihlKXtyZXR1cj0KbiBhcmd1
bWVudHMubGVuZ3RoPyhsPTNEZSxtKTpsfSxtLnJvdGF0ZUxhYmVscz0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVuPQp0cy5sZW5ndGg/KGY9M0RlLG0pOmZ9LG0uc3RhZ2dlckxhYmVscz0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Q9Cmg/KGM9M0RlLG0pOmN9LG0uYXhpc0xh
YmVsRGlzdGFuY2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0KPTNE
ZSxtKTpkfSxtfSxlLm1vZGVscy5oaXN0b3JpY2FsQmFyPTNEZnVuY3Rpb24oKXtmdW5jdGlvbiB3
KEUpe3JldHVybiBFLmVhPQpjaChmdW5jdGlvbih3KXt2YXIgRT0zRG4tdC5sZWZ0LXQucmlnaHQs
Uz0zRHItdC50b3AtdC5ib3R0b20sVD0zRGQzLnNlbGVjdCg9CnRoaXMpO3MuZG9tYWluKGR8fGQz
LmV4dGVudCh3WzBdLnZhbHVlcy5tYXAodSkuY29uY2F0KGYpKSksYz9zLnJhbmdlKG18fFtFKj0K
LjUvd1swXS52YWx1ZXMubGVuZ3RoLEUqKHdbMF0udmFsdWVzLmxlbmd0aC0uNSkvd1swXS52YWx1
ZXMubGVuZ3RoXSk6cy5yYW5nPQplKG18fFswLEVdKSxvLmRvbWFpbih2fHxkMy5leHRlbnQod1sw
XS52YWx1ZXMubWFwKGEpLmNvbmNhdChsKSkpLnJhbmdlKGd8fFs9ClMsMF0pLHMuZG9tYWluKClb
MF09M0Q9M0Q9M0RzLmRvbWFpbigpWzFdJiYocy5kb21haW4oKVswXT9zLmRvbWFpbihbcy5kb21h
aT0KbigpWzBdLXMuZG9tYWluKClbMF0qLjAxLHMuZG9tYWluKClbMV0rcy5kb21haW4oKVsxXSou
MDFdKTpzLmRvbWFpbihbLTEsMV0pPQopLG8uZG9tYWluKClbMF09M0Q9M0Q9M0RvLmRvbWFpbigp
WzFdJiYoby5kb21haW4oKVswXT9vLmRvbWFpbihbby5kb21haW4oKVs9CjBdK28uZG9tYWluKClb
MF0qLjAxLG8uZG9tYWluKClbMV0tby5kb21haW4oKVsxXSouMDFdKTpvLmRvbWFpbihbLTEsMV0p
KTt2YT0KciBOPTNEVC5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1oaXN0b3JpY2FsQmFyLSIraSku
ZGF0YShbd1swXS52YWx1ZXNdKSxDPTNEPQpOLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xh
c3MiLCJudmQzIG52LXdyYXAgbnYtaGlzdG9yaWNhbEJhci0iK2kpLGs9M0Q9CkMuYXBwZW5kKCJk
ZWZzIiksTD0zREMuYXBwZW5kKCJnIiksQT0zRE4uc2VsZWN0KCJnIik7TC5hcHBlbmQoImciKS5h
dHRyKCJjbD0KYXNzIiwibnYtYmFycyIpLE4uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIr
dC5sZWZ0KyIsIit0LnRvcCsiKSIpLFQub24oPQoiY2xpY2siLGZ1bmN0aW9uKGUsdCl7eS5jaGFy
dENsaWNrKHtkYXRhOmUsaW5kZXg6dCxwb3M6ZDMuZXZlbnQsaWQ6aX0pfSksay49CmFwcGVuZCgi
Y2xpcFBhdGgiKS5hdHRyKCJpZCIsIm52LWNoYXJ0LWNsaXAtcGF0aC0iK2kpLmFwcGVuZCgicmVj
dCIpLE4uc2VsZT0KY3QoIiNudi1jaGFydC1jbGlwLXBhdGgtIitpKyIgcmVjdCIpLmF0dHIoIndp
ZHRoIixFKS5hdHRyKCJoZWlnaHQiLFMpLEEuYXR0PQpyKCJjbGlwLXBhdGgiLGg/InVybCgjbnYt
Y2hhcnQtY2xpcC1wYXRoLSIraSsiKSI6IiIpO3ZhciBPPTNETi5zZWxlY3QoIi5udi09CmJhcnMi
KS5zZWxlY3RBbGwoIi5udi1iYXIiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlfSxmdW5jdGlv
bihlLHQpe3JldHVybj0KIHUoZSx0KX0pO08uZXhpdCgpLnJlbW92ZSgpO3ZhciBNPTNETy5lbnRl
cigpLmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLDApLmF0PQp0cigieSIsZnVuY3Rpb24odCxuKXty
ZXR1cm4gZS51dGlscy5OYU50b1plcm8obyhNYXRoLm1heCgwLGEodCxuKSkpKX0pLmF0dHI9Cigi
aGVpZ2h0IixmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhNYXRoLmFicyhv
KGEodCxuKSktbygwKSkpfT0KKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJu
InRyYW5zbGF0ZSgiKyhzKHUoZSx0KSktRS93WzBdLnZhbHVlPQpzLmxlbmd0aCouNDUpKyIsMCki
fSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oZSx0KXtpZighYilyZXR1cm47ZDMuc2VsZWN0KHQ9
CmhpcykuY2xhc3NlZCgiaG92ZXIiLCEwKSx5LmVsZW1lbnRNb3VzZW92ZXIoe3BvaW50OmUsc2Vy
aWVzOndbMF0scG9zOltzKHUoZT0KLHQpKSxvKGEoZSx0KSldLHBvaW50SW5kZXg6dCxzZXJpZXNJ
bmRleDowLGU6ZDMuZXZlbnR9KX0pLm9uKCJtb3VzZW91dCIsZnVuPQpjdGlvbihlLHQpe2lmKCFi
KXJldHVybjtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgiaG92ZXIiLCExKSx5LmVsZW1lbnRNb3Vz
ZW89CnV0KHtwb2ludDplLHNlcmllczp3WzBdLHBvaW50SW5kZXg6dCxzZXJpZXNJbmRleDowLGU6
ZDMuZXZlbnR9KX0pLm9uKCJjbGljaz0KIixmdW5jdGlvbihlLHQpe2lmKCFiKXJldHVybjt5LmVs
ZW1lbnRDbGljayh7dmFsdWU6YShlLHQpLGRhdGE6ZSxpbmRleDp0LHBvPQpzOltzKHUoZSx0KSks
byhhKGUsdCkpXSxlOmQzLmV2ZW50LGlkOml9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0p
Lm9uKCI9CmRibGNsaWNrIixmdW5jdGlvbihlLHQpe2lmKCFiKXJldHVybjt5LmVsZW1lbnREYmxD
bGljayh7dmFsdWU6YShlLHQpLGRhdGE6ZT0KLGluZGV4OnQscG9zOltzKHUoZSx0KSksbyhhKGUs
dCkpXSxlOmQzLmV2ZW50LGlkOml9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpPQpvbigpfSk7Ty5h
dHRyKCJmaWxsIixmdW5jdGlvbihlLHQpe3JldHVybiBwKGUsdCl9KS5hdHRyKCJjbGFzcyIsZnVu
Y3Rpb24oZSw9CnQsbil7cmV0dXJuKGEoZSx0KTwwPyJudi1iYXIgbmVnYXRpdmUiOiJudi1iYXIg
cG9zaXRpdmUiKSsiIG52LWJhci0iK24rIi0iKz0KdH0pLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rp
b24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIrKHModShlLHQpKS1FL3dbMF0udmFsPQp1ZXMubGVu
Z3RoKi40NSkrIiwwKSJ9KS5hdHRyKCJ3aWR0aCIsRS93WzBdLnZhbHVlcy5sZW5ndGgqLjkpLE8u
YXR0cigieSIsZnU9Cm5jdGlvbih0LG4pe3ZhciByPTNEYSh0LG4pPDA/bygwKTpvKDApLW8oYSh0
LG4pKTwxP28oMCktMTpvKGEodCxuKSk7cmV0dXJuID0KZS51dGlscy5OYU50b1plcm8ocil9KS5h
dHRyKCJoZWlnaHQiLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvPQooTWF0
aC5tYXgoTWF0aC5hYnMobyhhKHQsbikpLW8oMCkpLDEpKX0pfSksd312YXIgdD0zRHt0b3A6MCxy
aWdodDowLGJvdHRvbTo9CjAsbGVmdDowfSxuPTNEOTYwLHI9M0Q1MDAsaT0zRE1hdGguZmxvb3Io
TWF0aC5yYW5kb20oKSoxZTQpLHM9M0RkMy5zY2FsZS5saT0KbmVhcigpLG89M0RkMy5zY2FsZS5s
aW5lYXIoKSx1PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0sYT0zRGZ1bmN0aW9uKGUpe3JlPQp0
dXJuIGUueX0sZj0zRFtdLGw9M0RbMF0sYz0zRCExLGg9M0QhMCxwPTNEZS51dGlscy5kZWZhdWx0
Q29sb3IoKSxkLHYsbSxnLHk9Cj0zRGQzLmRpc3BhdGNoKCJjaGFydENsaWNrIiwiZWxlbWVudENs
aWNrIiwiZWxlbWVudERibENsaWNrIiwiZWxlbWVudE1vdXNlbz0KdmVyIiwiZWxlbWVudE1vdXNl
b3V0IiksYj0zRCEwO3JldHVybiB3LmhpZ2hsaWdodFBvaW50PTNEZnVuY3Rpb24oZSx0KXtkMy5z
PQplbGVjdCgiLm52LWhpc3RvcmljYWxCYXItIitpKS5zZWxlY3QoIi5udi1iYXJzIC5udi1iYXIt
MC0iK2UpLmNsYXNzZWQoImhvdmU9CnIiLHQpfSx3LmNsZWFySGlnaGxpZ2h0cz0zRGZ1bmN0aW9u
KCl7ZDMuc2VsZWN0KCIubnYtaGlzdG9yaWNhbEJhci0iK2kpLnNlbD0KZWN0KCIubnYtYmFycyAu
bnYtYmFyLmhvdmVyIikuY2xhc3NlZCgiaG92ZXIiLCExKX0sdy5kaXNwYXRjaD0zRHksdy5vcHRp
b25zPQo9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQodyksdy54PTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9Cj0zRGUsdyk6dX0sdy55PTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLHcpOmF9LHcubWFyZ2luPQo9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVm
aW5lZCI9Cj9lLnRvcDp0LnRvcCx0LnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5l
ZCI/ZS5yaWdodDp0LnJpZ2h0LHQuYm90dD0Kb209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVm
aW5lZCI/ZS5ib3R0b206dC5ib3R0b20sdC5sZWZ0PTNEdHlwZW9mIGUubGVmPQp0IT0zRCJ1bmRl
ZmluZWQiP2UubGVmdDp0LmxlZnQsdyk6dH0sdy53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHM9Ci5sZW5ndGg/KG49M0RlLHcpOm59LHcuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLD0Kdyk6cn0sdy54U2NhbGU9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0zRGUsdyk6c30sdy55U2NhbGU9Cj0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZSx3KTpvfSx3LnhEb21haW49M0Rm
dW5jdGlvbihlKT0Ke3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSx3KTpkfSx3LnlEb21h
aW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lPQpudHMubGVuZ3RoPyh2PTNEZSx3KTp2fSx3
LnhSYW5nZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPQo9M0RlLHcp
Om19LHcueVJhbmdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9M0Rl
LHcpOmd9LHcuZm89CnJjZVg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
Zj0zRGUsdyk6Zn0sdy5mb3JjZVk9M0RmdW5jdGlvbj0KKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhsPTNEZSx3KTpsfSx3LnBhZERhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJnPQp1bWVu
dHMubGVuZ3RoPyhjPTNEZSx3KTpjfSx3LmNsaXBFZGdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg9Cj8oaD0zRGUsdyk6aH0sdy5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZS51dGlscy5nZT0KdENvbG9yKHQpLHcpOnB9LHcuaWQ9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUsdyk6aX0sdy5pPQpu
dGVyYWN0aXZlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9M0QhMSx3
KTpifSx3fSxlLm1vZGVscy49CmJ1bGxldD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gbShlKXtyZXR1
cm4gZS5lYWNoKGZ1bmN0aW9uKGUsbil7dmFyIHA9M0RjLXQubD0KZWZ0LXQucmlnaHQsbT0zRGgt
dC50b3AtdC5ib3R0b20sZz0zRGQzLnNlbGVjdCh0aGlzKSx5PTNEaS5jYWxsKHRoaXMsZSxuKS5z
PQpsaWNlKCkuc29ydChkMy5kZXNjZW5kaW5nKSxiPTNEcy5jYWxsKHRoaXMsZSxuKS5zbGljZSgp
LnNvcnQoZDMuZGVzY2VuZGluZyk9Cix3PTNEby5jYWxsKHRoaXMsZSxuKS5zbGljZSgpLnNvcnQo
ZDMuZGVzY2VuZGluZyksRT0zRHUuY2FsbCh0aGlzLGUsbikuc2xpYz0KZSgpLFM9M0RhLmNhbGwo
dGhpcyxlLG4pLnNsaWNlKCkseD0zRGYuY2FsbCh0aGlzLGUsbikuc2xpY2UoKSxUPTNEZDMuc2Nh
bGUuPQpsaW5lYXIoKS5kb21haW4oZDMuZXh0ZW50KGQzLm1lcmdlKFtsLHldKSkpLnJhbmdlKHI/
W3AsMF06WzAscF0pLE49M0R0aGlzLl89Cl9jaGFydF9ffHxkMy5zY2FsZS5saW5lYXIoKS5kb21h
aW4oWzAsSW5maW5pdHldKS5yYW5nZShULnJhbmdlKCkpO3RoaXMuX19jaD0KYXJ0X189M0RUO3Zh
ciBDPTNEZDMubWluKHkpLGs9M0RkMy5tYXgoeSksTD0zRHlbMV0sQT0zRGcuc2VsZWN0QWxsKCJn
Lm52LXdyPQphcC5udi1idWxsZXQiKS5kYXRhKFtlXSksTz0zREEuZW50ZXIoKS5hcHBlbmQoImci
KS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3I9CmFwIG52LWJ1bGxldCIpLE09M0RPLmFwcGVuZCgi
ZyIpLF89M0RBLnNlbGVjdCgiZyIpO00uYXBwZW5kKCJyZWN0IikuYXR0cigiYz0KbGFzcyIsIm52
LXJhbmdlIG52LXJhbmdlTWF4IiksTS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm52LXJh
bmdlIG52LXJhPQpuZ2VBdmciKSxNLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwibnYtcmFu
Z2UgbnYtcmFuZ2VNaW4iKSxNLmFwcGVuZCgicmU9CmN0IikuYXR0cigiY2xhc3MiLCJudi1tZWFz
dXJlIiksTS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsIm52LW1hcmtlclRyaT0KYW5nbGUi
KSxBLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50b3ArIikiKTt2
YXIgRD0zRGZ1bmN0PQppb24oZSl7cmV0dXJuIE1hdGguYWJzKE4oZSktTigwKSl9LFA9M0RmdW5j
dGlvbihlKXtyZXR1cm4gTWF0aC5hYnMoVChlKS1UKDA9CikpfSxIPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGU8MD9OKGUpOk4oMCl9LEI9M0RmdW5jdGlvbihlKXtyZXR1cm4gZTwwP1QoZSk6VD0KKDAp
fTtfLnNlbGVjdCgicmVjdC5udi1yYW5nZU1heCIpLmF0dHIoImhlaWdodCIsbSkuYXR0cigid2lk
dGgiLFAoaz4wP2s6QykpPQouYXR0cigieCIsQihrPjA/azpDKSkuZGF0dW0oaz4wP2s6QyksXy5z
ZWxlY3QoInJlY3QubnYtcmFuZ2VBdmciKS5hdHRyKCJoZWk9CmdodCIsbSkuYXR0cigid2lkdGgi
LFAoTCkpLmF0dHIoIngiLEIoTCkpLmRhdHVtKEwpLF8uc2VsZWN0KCJyZWN0Lm52LXJhbmdlTT0K
aW4iKS5hdHRyKCJoZWlnaHQiLG0pLmF0dHIoIndpZHRoIixQKGspKS5hdHRyKCJ4IixCKGspKS5h
dHRyKCJ3aWR0aCIsUChrPjA/PQpDOmspKS5hdHRyKCJ4IixCKGs+MD9DOmspKS5kYXR1bShrPjA/
QzprKSxfLnNlbGVjdCgicmVjdC5udi1tZWFzdXJlIikuc3R5bGU9CigiZmlsbCIsZCkuYXR0cigi
aGVpZ2h0IixtLzMpLmF0dHIoInkiLG0vMykuYXR0cigid2lkdGgiLHc8MD9UKDApLVQod1swXSk6
VD0KKHdbMF0pLVQoMCkpLmF0dHIoIngiLEIodykpLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7
di5lbGVtZW50TW91c2VvdmVyKHt2PQphbHVlOndbMF0sbGFiZWw6eFswXXx8IkN1cnJlbnQiLHBv
czpbVCh3WzBdKSxtLzJdfSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW89Cm4oKXt2LmVsZW1lbnRN
b3VzZW91dCh7dmFsdWU6d1swXSxsYWJlbDp4WzBdfHwiQ3VycmVudCJ9KX0pO3ZhciBqPTNEbS82
O2JbMD0KXT9fLnNlbGVjdEFsbCgicGF0aC5udi1tYXJrZXJUcmlhbmdsZSIpLmF0dHIoInRyYW5z
Zm9ybSIsZnVuY3Rpb24oZSl7cmV0dXJuPQoidHJhbnNsYXRlKCIrVChiWzBdKSsiLCIrbS8yKyIp
In0pLmF0dHIoImQiLCJNMCwiK2orIkwiK2orIiwiKyAtaisiICIrIC1qKyI9CiwiKyAtaisiWiIp
Lm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7di5lbGVtZW50TW91c2VvdmVyKHt2YWx1ZTpiWzBd
LGxhYmVsOj0KU1swXXx8IlByZXZpb3VzIixwb3M6W1QoYlswXSksbS8yXX0pfSkub24oIm1vdXNl
b3V0IixmdW5jdGlvbigpe3YuZWxlbWVudE1vPQp1c2VvdXQoe3ZhbHVlOmJbMF0sbGFiZWw6U1sw
XXx8IlByZXZpb3VzIn0pfSk6Xy5zZWxlY3RBbGwoInBhdGgubnYtbWFya2VyVHI9CmlhbmdsZSIp
LnJlbW92ZSgpLEEuc2VsZWN0QWxsKCIubnYtcmFuZ2UiKS5vbigibW91c2VvdmVyIixmdW5jdGlv
bihlLHQpe3Zhcj0KIG49M0RFW3RdfHwodD90PTNEPTNEMT8iTWVhbiI6Ik1pbmltdW0iOiJNYXhp
bXVtIik7di5lbGVtZW50TW91c2VvdmVyKHt2YWx1PQplOmUsbGFiZWw6bixwb3M6W1QoZSksbS8y
XX0pfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbihlLHQpe3ZhciBuPTNERVt0XXx8KHQ9Cj90PTNE
PTNEMT8iTWVhbiI6Ik1pbmltdW0iOiJNYXhpbXVtIik7di5lbGVtZW50TW91c2VvdXQoe3ZhbHVl
OmUsbGFiZWw6bn0pfT0KKX0pLG19dmFyIHQ9M0R7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0
OjB9LG49M0QibGVmdCIscj0zRCExLGk9M0RmdW5jdGlvPQpuKGUpe3JldHVybiBlLnJhbmdlc30s
cz0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLm1hcmtlcnN9LG89M0RmdW5jdGlvbihlKXtyZXQ9CnVy
biBlLm1lYXN1cmVzfSx1PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUucmFuZ2VMYWJlbHM/ZS5yYW5n
ZUxhYmVsczpbXX0sYT0zRD0KZnVuY3Rpb24oZSl7cmV0dXJuIGUubWFya2VyTGFiZWxzP2UubWFy
a2VyTGFiZWxzOltdfSxmPTNEZnVuY3Rpb24oZSl7cmV0dXJuPQogZS5tZWFzdXJlTGFiZWxzP2Uu
bWVhc3VyZUxhYmVsczpbXX0sbD0zRFswXSxjPTNEMzgwLGg9M0QzMCxwPTNEbnVsbCxkPTNEZS49
CnV0aWxzLmdldENvbG9yKFsiIzFmNzdiNCJdKSx2PTNEZDMuZGlzcGF0Y2goImVsZW1lbnRNb3Vz
ZW92ZXIiLCJlbGVtZW50TW91cz0KZW91dCIpO3JldHVybiBtLmRpc3BhdGNoPTNEdixtLm9wdGlv
bnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQobSksbS5vcmllPQpudD0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPTNEZSxyPTNEbj0zRD0zRCJyaWdodCJ8fG49M0Q9
M0Q9CiJib3R0b20iLG0pOm59LG0ucmFuZ2VzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGk9M0RlLG0pOml9LD0KbS5tYXJrZXJzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHM9M0RlLG0pOnN9LG0ubWVhc3VyZXM9M0RmPQp1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZSxtKTpvfSxtLmZvcmNlWD0zRGZ1bmN0aW9uKGUp
e3JldHU9CnJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLG0pOmx9LG0ud2lkdGg9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbj0KZ3RoPyhjPTNEZSxtKTpjfSxtLmhlaWdodD0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxtKTpoPQp9LG0ubWFyZ2lu
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPTNEdHlwZW9mIGUu
dG9wIT0zRCI9CnVuZGVmaW5lZCI/ZS50b3A6dC50b3AsdC5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0
IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaT0KZ2h0LHQuYm90dG9tPTNEdHlwZW9mIGUuYm90
dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD0zRHR5PQpwZW9mIGUu
bGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6dC5sZWZ0LG0pOnR9LG0udGlja0Zvcm1hdD0zRGZ1
bmN0aW9uKGUpe3I9CmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLG0pOnB9LG0uY29sb3I9
M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLj0KbGVuZ3RoPyhkPTNEZS51dGlscy5nZXRD
b2xvcih0KSxtKTpkfSxtfSxlLm1vZGVscy5idWxsZXRDaGFydD0zRGZ1bmN0aW9uKCl7PQpmdW5j
dGlvbiBtKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24obixoKXt2YXIgZz0zRGQzLnNlbGVjdCh0
aGlzKSx5PTNEKGF8fHA9CmFyc2VJbnQoZy5zdHlsZSgid2lkdGgiKSl8fDk2MCktaS5sZWZ0LWku
cmlnaHQsYj0zRGYtaS50b3AtaS5ib3R0b20sdz0zRHRoaT0KczttLnVwZGF0ZT0zRGZ1bmN0aW9u
KCl7bShlKX0sbS5jb250YWluZXI9M0R0aGlzO2lmKCFufHwhcy5jYWxsKHRoaXMsbixoKSl7PQp2
YXIgRT0zRGcuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShbcF0pO3JldHVybiBFLmVudGVy
KCkuYXBwZW5kKCJ0ZXh0Iik9Ci5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cigi
ZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZD0KZGxlIiksRS5hdHRyKCJ4Iixp
LmxlZnQreS8yKS5hdHRyKCJ5IiwxOCtpLnRvcCtiLzIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJu
PQogZX0pLG19Zy5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKTt2YXIgUz0zRHMuY2Fs
bCh0aGlzLG4saCkuc2xpY2UoKS49CnNvcnQoZDMuZGVzY2VuZGluZykseD0zRG8uY2FsbCh0aGlz
LG4saCkuc2xpY2UoKS5zb3J0KGQzLmRlc2NlbmRpbmcpLFQ9M0R1Lj0KY2FsbCh0aGlzLG4saCku
c2xpY2UoKS5zb3J0KGQzLmRlc2NlbmRpbmcpLE49M0RnLnNlbGVjdEFsbCgiZy5udi13cmFwLm52
LWJ1PQpsbGV0Q2hhcnQiKS5kYXRhKFtuXSksQz0zRE4uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRy
KCJjbGFzcyIsIm52ZDMgbnYtd3JhcCA9Cm52LWJ1bGxldENoYXJ0Iiksaz0zREMuYXBwZW5kKCJn
IiksTD0zRE4uc2VsZWN0KCJnIik7ay5hcHBlbmQoImciKS5hdHRyKCJjbD0KYXNzIiwibnYtYnVs
bGV0V3JhcCIpLGsuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi10aXRsZXMiKSxOLmF0dHIo
InRyYW5zPQpmb3JtIiwidHJhbnNsYXRlKCIraS5sZWZ0KyIsIitpLnRvcCsiKSIpO3ZhciBBPTNE
ZDMuc2NhbGUubGluZWFyKCkuZG9tYWluKFs9CjAsTWF0aC5tYXgoU1swXSx4WzBdLFRbMF0pXSku
cmFuZ2Uocj9beSwwXTpbMCx5XSksTz0zRHRoaXMuX19jaGFydF9ffHxkMy5zYz0KYWxlLmxpbmVh
cigpLmRvbWFpbihbMCxJbmZpbml0eV0pLnJhbmdlKEEucmFuZ2UoKSk7dGhpcy5fX2NoYXJ0X189
M0RBO3ZhciBNPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5hYnMoTyhlKS1PKDApKX0sXz0z
RGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmFicyg9CkEoZSktQSgwKSl9LEQ9M0RrLnNlbGVjdCgi
Lm52LXRpdGxlcyIpLmFwcGVuZCgiZyIpLmF0dHIoInRleHQtYW5jaG9yIiwiZW5kIj0KKS5hdHRy
KCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoLTYsIisoZi1pLnRvcC1pLmJvdHRvbSkvMisiKSIpO0Qu
YXBwZW5kKCJ0ZXh0PQoiKS5hdHRyKCJjbGFzcyIsIm52LXRpdGxlIikudGV4dChmdW5jdGlvbihl
KXtyZXR1cm4gZS50aXRsZX0pLEQuYXBwZW5kKCJ0ZXg9CnQiKS5hdHRyKCJjbGFzcyIsIm52LXN1
YnRpdGxlIikuYXR0cigiZHkiLCIxZW0iKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlLj0Kc3Vi
dGl0bGV9KSx0LndpZHRoKHkpLmhlaWdodChiKTt2YXIgUD0zREwuc2VsZWN0KCIubnYtYnVsbGV0
V3JhcCIpO2QzLnRyYW5zPQppdGlvbihQKS5jYWxsKHQpO3ZhciBIPTNEbHx8QS50aWNrRm9ybWF0
KHkvMTAwKSxCPTNETC5zZWxlY3RBbGwoImcubnYtdGljayI9CikuZGF0YShBLnRpY2tzKHkvNTAp
LGZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnRleHRDb250ZW50fHxIKGUpfSksaj0zREIuZW50ZT0K
cigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtdGljayIpLmF0dHIoInRyYW5zZm9ybSIs
ZnVuY3Rpb24oZSl7cmV0dXJuPQoidHJhbnNsYXRlKCIrTyhlKSsiLDApIn0pLnN0eWxlKCJvcGFj
aXR5IiwxZS02KTtqLmFwcGVuZCgibGluZSIpLmF0dHIoInkxIiw9CmIpLmF0dHIoInkyIixiKjcv
Niksai5hcHBlbmQoInRleHQiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoImR5
Ij0KLCIxZW0iKS5hdHRyKCJ5IixiKjcvNikudGV4dChIKTt2YXIgRj0zRGQzLnRyYW5zaXRpb24o
QikuYXR0cigidHJhbnNmb3JtIixmPQp1bmN0aW9uKGUpe3JldHVybiJ0cmFuc2xhdGUoIitBKGUp
KyIsMCkifSkuc3R5bGUoIm9wYWNpdHkiLDEpO0Yuc2VsZWN0KCJsaW49CmUiKS5hdHRyKCJ5MSIs
YikuYXR0cigieTIiLGIqNy82KSxGLnNlbGVjdCgidGV4dCIpLmF0dHIoInkiLGIqNy82KSxkMy50
cmFucz0KaXRpb24oQi5leGl0KCkpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSl7cmV0dXJu
InRyYW5zbGF0ZSgiK0EoZSkrIiwwKSJ9PQopLnN0eWxlKCJvcGFjaXR5IiwxZS02KS5yZW1vdmUo
KSxkLm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7ZS5rZXk9M0RuLnQ9Cml0bGUsYyYmdihl
LHcucGFyZW50Tm9kZSl9KX0pLGQzLnRpbWVyLmZsdXNoKCksbX12YXIgdD0zRGUubW9kZWxzLmJ1
bGxldCgpLD0Kbj0zRCJsZWZ0IixyPTNEITEsaT0zRHt0b3A6NSxyaWdodDo0MCxib3R0b206MjAs
bGVmdDoxMjB9LHM9M0RmdW5jdGlvbihlKXtyPQpldHVybiBlLnJhbmdlc30sbz0zRGZ1bmN0aW9u
KGUpe3JldHVybiBlLm1hcmtlcnN9LHU9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS49Cm1lYXN1cmVz
fSxhPTNEbnVsbCxmPTNENTUsbD0zRG51bGwsYz0zRCEwLGg9M0RmdW5jdGlvbihlLHQsbixyLGkp
e3JldHVybiI8aD0KMz4iK3QrIjwvaDM+IisiPHA+IituKyI8L3A+In0scD0zRCJObyBEYXRhIEF2
YWlsYWJsZS4iLGQ9M0RkMy5kaXNwYXRjaCgidG9vPQpsdGlwU2hvdyIsInRvb2x0aXBIaWRlIiks
dj0zRGZ1bmN0aW9uKHQsbil7dmFyIHI9M0R0LnBvc1swXSsobi5vZmZzZXRMZWZ0fHw9CjApK2ku
bGVmdCxzPTNEdC5wb3NbMV0rKG4ub2Zmc2V0VG9wfHwwKStpLnRvcCxvPTNEaCh0LmtleSx0Lmxh
YmVsLHQudmFsdWUsdD0KLG0pO2UudG9vbHRpcC5zaG93KFtyLHNdLG8sdC52YWx1ZTwwPyJlIjoi
dyIsbnVsbCxuKX07cmV0dXJuIHQuZGlzcGF0Y2gub24oPQoiZWxlbWVudE1vdXNlb3Zlci50b29s
dGlwIixmdW5jdGlvbihlKXtkLnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWw9CmVt
ZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZC50b29sdGlwSGlkZShlKX0pLGQub24o
InRvb2x0aXBIaWRlIixmdT0KbmN0aW9uKCl7YyYmZS50b29sdGlwLmNsZWFudXAoKX0pLG0uZGlz
cGF0Y2g9M0RkLG0uYnVsbGV0PTNEdCxkMy5yZWJpbmQobSx0PQosImNvbG9yIiksbS5vcHRpb25z
PTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKG0pLG0ub3JpZW50PTNEZnVuY3Rpb24oZSl7cmU9
CnR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGUscj0zRG49M0Q9M0QicmlnaHQifHxuPTNEPTNE
ImJvdHRvbSIsbSk6bn0sbS5yYT0Kbmdlcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhzPTNEZSxtKTpzfSxtLm1hcmtlcnM9M0RmdW5jdGlvPQpuKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhvPTNEZSxtKTpvfSxtLm1lYXN1cmVzPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGE9CnJndW1lbnRzLmxlbmd0aD8odT0zRGUsbSk6dX0sbS53aWR0aD0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPz0KKGE9M0RlLG0pOmF9LG0uaGVpZ2h0PTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLG0pOmZ9LG0uPQptYXJnaW49M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaS50b3A9M0R0eXBlb2YgZS50b3AhPTNE
InVuZGU9CmZpbmVkIj9lLnRvcDppLnRvcCxpLnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVu
ZGVmaW5lZCI/ZS5yaWdodDppLnJpZ2h0LD0KaS5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNE
InVuZGVmaW5lZCI/ZS5ib3R0b206aS5ib3R0b20saS5sZWZ0PTNEdHlwZW9mPQogZS5sZWZ0IT0z
RCJ1bmRlZmluZWQiP2UubGVmdDppLmxlZnQsbSk6aX0sbS50aWNrRm9ybWF0PTNEZnVuY3Rpb24o
ZSl7cmV0dXI9Cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGUsbSk6bH0sbS50b29sdGlwcz0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubD0KZW5ndGg/KGM9M0RlLG0pOmN9LG0udG9vbHRp
cENvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oPQpoPTNEZSxt
KTpofSxtLm5vRGF0YT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNE
ZSxtKTpwfSxtfSw9CmUubW9kZWxzLmN1bXVsYXRpdmVMaW5lQ2hhcnQ9M0RmdW5jdGlvbigpe2Z1
bmN0aW9uIEQoYil7cmV0dXJuIGIuZWFjaChmdW5jdD0KaW9uKGIpe2Z1bmN0aW9uIEkoZSx0KXtk
My5zZWxlY3QoRC5jb250YWluZXIpLnN0eWxlKCJjdXJzb3IiLCJldy1yZXNpemUiKX1mPQp1bmN0
aW9uIHEoZSx0KXtNLng9M0RkMy5ldmVudC54LE0uaT0zRE1hdGgucm91bmQoTy5pbnZlcnQoTS54
KSksbnQoKX1mdW5jdGk9Cm9uIFIoZSx0KXtkMy5zZWxlY3QoRC5jb250YWluZXIpLnN0eWxlKCJj
dXJzb3IiLCJhdXRvIikseC5pbmRleD0zRE0uaSxrLnN0YT0KdGVDaGFuZ2UoeCl9ZnVuY3Rpb24g
bnQoKXt0dC5kYXRhKFtNXSk7dmFyIGU9M0RELnRyYW5zaXRpb25EdXJhdGlvbigpO0QudHJhPQpu
c2l0aW9uRHVyYXRpb24oMCksRC51cGRhdGUoKSxELnRyYW5zaXRpb25EdXJhdGlvbihlKX12YXIg
TD0zRGQzLnNlbGVjdCh0aGk9CnMpLmNsYXNzZWQoIm52LWNoYXJ0LSIrUywhMCksQT0zRHRoaXMs
SD0zRChmfHxwYXJzZUludChMLnN0eWxlKCJ3aWR0aCIpKXx8OT0KNjApLXUubGVmdC11LnJpZ2h0
LEI9M0QobHx8cGFyc2VJbnQoTC5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXUudG9wLXUuYm90dG9t
PQo7RC51cGRhdGU9M0RmdW5jdGlvbigpe0wuY2FsbChEKX0sRC5jb250YWluZXI9M0R0aGlzLHgu
ZGlzYWJsZWQ9M0RiLm1hcChmdW49CmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pO2lmKCFU
KXt2YXIgajtUPTNEe307Zm9yKGogaW4geCl4W2pdaW5zdGFuY2VvZj0KIEFycmF5P1Rbal09M0R4
W2pdLnNsaWNlKDApOlRbal09M0R4W2pdfXZhciBGPTNEZDMuYmVoYXZpb3IuZHJhZygpLm9uKCJk
cmFnPQpzdGFydCIsSSkub24oImRyYWciLHEpLm9uKCJkcmFnZW5kIixSKTtpZighYnx8IWIubGVu
Z3RofHwhYi5maWx0ZXIoZnVuY3Rpb249CihlKXtyZXR1cm4gZS52YWx1ZXMubGVuZ3RofSkubGVu
Z3RoKXt2YXIgVT0zREwuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YT0KKFtOXSk7cmV0dXJu
IFUuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRhIiku
YXR0cigiPQpkeSIsIi0uN2VtIikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiksVS5hdHRy
KCJ4Iix1LmxlZnQrSC8yKS5hdHRyKCJ5Iiw9CnUudG9wK0IvMikudGV4dChmdW5jdGlvbihlKXty
ZXR1cm4gZX0pLER9TC5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKT0KLHc9M0R0LnhT
Y2FsZSgpLEU9M0R0LnlTY2FsZSgpO2lmKCF5KXt2YXIgej0zRGIuZmlsdGVyKGZ1bmN0aW9uKGUp
e3JldHVybiFlPQouZGlzYWJsZWR9KS5tYXAoZnVuY3Rpb24oZSxuKXt2YXIgcj0zRGQzLmV4dGVu
dChlLnZhbHVlcyx0LnkoKSk7cmV0dXJuIHJbMF09CjwtMC45NSYmKHJbMF09M0QtMC45NSksWyhy
WzBdLXJbMV0pLygxK3JbMV0pLChyWzFdLXJbMF0pLygxK3JbMF0pXX0pLFc9M0RbZD0KMy5taW4o
eixmdW5jdGlvbihlKXtyZXR1cm4gZVswXX0pLGQzLm1heCh6LGZ1bmN0aW9uKGUpe3JldHVybiBl
WzFdfSldO3QueURvPQptYWluKFcpfWVsc2UgdC55RG9tYWluKG51bGwpO08uZG9tYWluKFswLGJb
MF0udmFsdWVzLmxlbmd0aC0xXSkucmFuZ2UoWzAsSF09CikuY2xhbXAoITApO3ZhciBiPTNEUChN
LmksYiksWD0zRGc/Im5vbmUiOiJhbGwiLFY9M0RMLnNlbGVjdEFsbCgiZy5udi13cmFwLj0KbnYt
Y3VtdWxhdGl2ZUxpbmUiKS5kYXRhKFtiXSksJD0zRFYuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRy
KCJjbGFzcyIsIm52ZDMgPQpudi13cmFwIG52LWN1bXVsYXRpdmVMaW5lIikuYXBwZW5kKCJnIiks
Sj0zRFYuc2VsZWN0KCJnIik7JC5hcHBlbmQoImciKS5hdHQ9CnIoImNsYXNzIiwibnYtaW50ZXJh
Y3RpdmUiKSwkLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIikuc3R5bD0K
ZSgicG9pbnRlci1ldmVudHMiLCJub25lIiksJC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52
LXkgbnYtYXhpcyIpLCQuYXBwPQplbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWJhY2tncm91bmQi
KSwkLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGluZXM9CldyYXAiKS5zdHlsZSgicG9p
bnRlci1ldmVudHMiLFgpLCQuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1hdmdMaW5lc1dy
YT0KcCIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKSwkLmFwcGVuZCgiZyIpLmF0dHIo
ImNsYXNzIiwibnYtbGVnZW5kV3JhPQpwIiksJC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52
LWNvbnRyb2xzV3JhcCIpLGMmJihpLndpZHRoKEgpLEouc2VsZWN0KCI9Ci5udi1sZWdlbmRXcmFw
IikuZGF0dW0oYikuY2FsbChpKSx1LnRvcCE9M0RpLmhlaWdodCgpJiYodS50b3A9M0RpLmhlaWdo
dCgpLD0KQj0zRChsfHxwYXJzZUludChMLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktdS50b3AtdS5i
b3R0b20pLEouc2VsZWN0KCIubnYtbGVnPQplbmRXcmFwIikuYXR0cigidHJhbnNmb3JtIiwidHJh
bnNsYXRlKDAsIisgLXUudG9wKyIpIikpO2lmKG0pe3ZhciBLPTNEW3trZXk9CjoiUmUtc2NhbGUg
eS1heGlzIixkaXNhYmxlZDoheX1dO3Mud2lkdGgoMTQwKS5jb2xvcihbIiM0NDQiLCIjNDQ0Iiwi
IzQ0NCJdKT0KLnJpZ2h0QWxpZ24oITEpLm1hcmdpbih7dG9wOjUscmlnaHQ6MCxib3R0b206NSxs
ZWZ0OjIwfSksSi5zZWxlY3QoIi5udi1jb250PQpyb2xzV3JhcCIpLmRhdHVtKEspLmF0dHIoInRy
YW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrIC11LnRvcCsiKSIpLmNhbGwocyl9Vi49CmF0dHIoInRy
YW5zZm9ybSIsInRyYW5zbGF0ZSgiK3UubGVmdCsiLCIrdS50b3ArIikiKSxkJiZKLnNlbGVjdCgi
Lm52LXkubnYtYT0KeGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrSCsiLDApIik7
dmFyIFE9M0RiLmZpbHRlcihmdW5jdGlvbihlKXtyPQpldHVybiBlLnRlbXBEaXNhYmxlZH0pO1Yu
c2VsZWN0KCIudGVtcERpc2FibGVkIikucmVtb3ZlKCksUS5sZW5ndGgmJlYuYXBwZW49CmQoInRl
eHQiKS5hdHRyKCJjbGFzcyIsInRlbXBEaXNhYmxlZCIpLmF0dHIoIngiLEgvMikuYXR0cigieSIs
Ii0uNzFlbSIpLnN0eT0KbGUoInRleHQtYW5jaG9yIiwiZW5kIikudGV4dChRLm1hcChmdW5jdGlv
bihlKXtyZXR1cm4gZS5rZXl9KS5qb2luKCIsICIpKyIgPQp2YWx1ZXMgY2Fubm90IGJlIGNhbGN1
bGF0ZWQgZm9yIHRoaXMgdGltZSBwZXJpb2QuIiksZyYmKG8ud2lkdGgoSCkuaGVpZ2h0KEI9Ciku
bWFyZ2luKHtsZWZ0OnUubGVmdCx0b3A6dS50b3B9KS5zdmdDb250YWluZXIoTCkueFNjYWxlKHcp
LFYuc2VsZWN0KCIubnYtaT0KbnRlcmFjdGl2ZSIpLmNhbGwobykpLCQuc2VsZWN0KCIubnYtYmFj
a2dyb3VuZCIpLmFwcGVuZCgicmVjdCIpLEouc2VsZWN0KCIuPQpudi1iYWNrZ3JvdW5kIHJlY3Qi
KS5hdHRyKCJ3aWR0aCIsSCkuYXR0cigiaGVpZ2h0IixCKSx0LnkoZnVuY3Rpb24oZSl7cmV0dXI9
Cm4gZS5kaXNwbGF5Lnl9KS53aWR0aChIKS5oZWlnaHQoQikuY29sb3IoYi5tYXAoZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gZS5jb2xvcj0KfHxhKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1
cm4hYlt0XS5kaXNhYmxlZCYmIWJbdF0udGVtcERpc2FibGVkfSkpPQo7dmFyIEc9M0RKLnNlbGVj
dCgiLm52LWxpbmVzV3JhcCIpLmRhdHVtKGIuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRp
c2E9CmJsZWQmJiFlLnRlbXBEaXNhYmxlZH0pKTtHLmNhbGwodCksYi5mb3JFYWNoKGZ1bmN0aW9u
KGUsdCl7ZS5zZXJpZXNJbmRleD0zRD0KdH0pO3ZhciBZPTNEYi5maWx0ZXIoZnVuY3Rpb24oZSl7
cmV0dXJuIWUuZGlzYWJsZWQmJiEhQyhlKX0pLFo9M0RKLnNlbGVjdCgiPQoubnYtYXZnTGluZXNX
cmFwIikuc2VsZWN0QWxsKCJsaW5lIikuZGF0YShZLGZ1bmN0aW9uKGUpe3JldHVybiBlLmtleX0p
LGV0PQo9M0RmdW5jdGlvbihlKXt2YXIgdD0zREUoQyhlKSk7cmV0dXJuIHQ8MD8wOnQ+Qj9COnR9
O1ouZW50ZXIoKS5hcHBlbmQoImxpbmU9CiIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLDIpLnN0eWxl
KCJzdHJva2UtZGFzaGFycmF5IiwiMTAsMTAiKS5zdHlsZSgic3Ryb2tlIj0KLGZ1bmN0aW9uKGUs
bil7cmV0dXJuIHQuY29sb3IoKShlLGUuc2VyaWVzSW5kZXgpfSkuYXR0cigieDEiLDApLmF0dHIo
IngyIixIPQopLmF0dHIoInkxIixldCkuYXR0cigieTIiLGV0KSxaLnN0eWxlKCJzdHJva2Utb3Bh
Y2l0eSIsZnVuY3Rpb24oZSl7dmFyIHQ9M0Q9CkUoQyhlKSk7cmV0dXJuIHQ8MHx8dD5CPzA6MX0p
LmF0dHIoIngxIiwwKS5hdHRyKCJ4MiIsSCkuYXR0cigieTEiLGV0KS5hdHRyKD0KInkyIixldCks
Wi5leGl0KCkucmVtb3ZlKCk7dmFyIHR0PTNERy5zZWxlY3RBbGwoIi5udi1pbmRleExpbmUiKS5k
YXRhKFtNXSk7PQp0dC5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwibnYtaW5k
ZXhMaW5lIikuYXR0cigid2lkdGgiLDMpLmF0dHI9CigieCIsLTIpLmF0dHIoImZpbGwiLCJyZWQi
KS5hdHRyKCJmaWxsLW9wYWNpdHkiLC41KS5zdHlsZSgicG9pbnRlci1ldmVudHMiLD0KImFsbCIp
LmNhbGwoRiksdHQuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlKXtyZXR1cm4idHJhbnNsYXRl
KCIrTyhlLmkpKyIsPQowKSJ9KS5hdHRyKCJoZWlnaHQiLEIpLGgmJihuLnNjYWxlKHcpLnRpY2tz
KE1hdGgubWluKGJbMF0udmFsdWVzLmxlbmd0aCxILzc9CjApKS50aWNrU2l6ZSgtQiwwKSxKLnNl
bGVjdCgiLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLD0KIitF
LnJhbmdlKClbMF0rIikiKSxkMy50cmFuc2l0aW9uKEouc2VsZWN0KCIubnYteC5udi1heGlzIikp
LmNhbGwobikpLHAmJihyPQouc2NhbGUoRSkudGlja3MoQi8zNikudGlja1NpemUoLUgsMCksZDMu
dHJhbnNpdGlvbihKLnNlbGVjdCgiLm52LXkubnYtYXhpcyI9CikpLmNhbGwocikpLEouc2VsZWN0
KCIubnYtYmFja2dyb3VuZCByZWN0Iikub24oImNsaWNrIixmdW5jdGlvbigpe00ueD0zRGQzLj0K
bW91c2UodGhpcylbMF0sTS5pPTNETWF0aC5yb3VuZChPLmludmVydChNLngpKSx4LmluZGV4PTNE
TS5pLGsuc3RhdGVDaGFuZ2UoPQp4KSxudCgpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudENsaWNr
IixmdW5jdGlvbihlKXtNLmk9M0RlLnBvaW50SW5kZXgsTS54PQo9M0RPKE0uaSkseC5pbmRleD0z
RE0uaSxrLnN0YXRlQ2hhbmdlKHgpLG50KCl9KSxzLmRpc3BhdGNoLm9uKCJsZWdlbmRDbGljayI9
CixmdW5jdGlvbihlLHQpe2UuZGlzYWJsZWQ9M0QhZS5kaXNhYmxlZCx5PTNEIWUuZGlzYWJsZWQs
eC5yZXNjYWxlWT0zRHksay5zdD0KYXRlQ2hhbmdlKHgpLEQudXBkYXRlKCl9KSxpLmRpc3BhdGNo
Lm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24oZSl7eC5kaXNhYmxlPQpkPTNEZS5kaXNhYmxlZCxr
LnN0YXRlQ2hhbmdlKHgpLEQudXBkYXRlKCl9KSxvLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2Vt
b3Y9CmUiLGZ1bmN0aW9uKGkpe3QuY2xlYXJIaWdobGlnaHRzKCk7dmFyIHMsZixsLGM9M0RbXTti
LmZpbHRlcihmdW5jdGlvbihlLHQpez0KcmV0dXJuIGUuc2VyaWVzSW5kZXg9M0R0LCFlLmRpc2Fi
bGVkfSkuZm9yRWFjaChmdW5jdGlvbihuLHIpe2Y9M0RlLmludGVyYWN0PQppdmVCaXNlY3Qobi52
YWx1ZXMsaS5wb2ludFhWYWx1ZSxELngoKSksdC5oaWdobGlnaHRQb2ludChyLGYsITApO3ZhciBv
PTNEbi49CnZhbHVlc1tmXTtpZih0eXBlb2Ygbz0zRD0zRCJ1bmRlZmluZWQiKXJldHVybjt0eXBl
b2Ygcz0zRD0zRCJ1bmRlZmluZWQiJiYocz0KPTNEbyksdHlwZW9mIGw9M0Q9M0QidW5kZWZpbmVk
IiYmKGw9M0RELnhTY2FsZSgpKEQueCgpKG8sZikpKSxjLnB1c2goe2tleTpuPQoua2V5LHZhbHVl
OkQueSgpKG8sZiksY29sb3I6YShuLG4uc2VyaWVzSW5kZXgpfSl9KTtpZihjLmxlbmd0aD4yKXt2
YXIgaD0zREQ9Ci55U2NhbGUoKS5pbnZlcnQoaS5tb3VzZVkpLHA9M0RNYXRoLmFicyhELnlTY2Fs
ZSgpLmRvbWFpbigpWzBdLUQueVNjYWxlKCkuZD0Kb21haW4oKVsxXSksZD0zRC4wMypwLG09M0Rl
Lm5lYXJlc3RWYWx1ZUluZGV4KGMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhPQpsdWV9KSxo
LGQpO20hPTNEPTNEbnVsbCYmKGNbbV0uaGlnaGxpZ2h0PTNEITApfXZhciBnPTNEbi50aWNrRm9y
bWF0KCkoRC54KCk9CihzLGYpLGYpO28udG9vbHRpcC5wb3NpdGlvbih7bGVmdDpsK3UubGVmdCx0
b3A6aS5tb3VzZVkrdS50b3B9KS5jaGFydENvbnRhaT0KbmVyKEEucGFyZW50Tm9kZSkuZW5hYmxl
ZCh2KS52YWx1ZUZvcm1hdHRlcihmdW5jdGlvbihlLHQpe3JldHVybiByLnRpY2tGb3JtPQphdCgp
KGUpfSkuZGF0YSh7dmFsdWU6ZyxzZXJpZXM6Y30pKCksby5yZW5kZXJHdWlkZUxpbmUobCl9KSxv
LmRpc3BhdGNoLm9uKCI9CmVsZW1lbnRNb3VzZW91dCIsZnVuY3Rpb24oZSl7ay50b29sdGlwSGlk
ZSgpLHQuY2xlYXJIaWdobGlnaHRzKCl9KSxrLm9uKCJ0bz0Kb2x0aXBTaG93IixmdW5jdGlvbihl
KXt2JiZfKGUsQS5wYXJlbnROb2RlKX0pLGsub24oImNoYW5nZVN0YXRlIixmdW5jdGlvbihlPQop
e3R5cGVvZiBlLmRpc2FibGVkIT0zRCJ1bmRlZmluZWQiJiYoYi5mb3JFYWNoKGZ1bmN0aW9uKHQs
bil7dC5kaXNhYmxlZD0zRGU9Ci5kaXNhYmxlZFtuXX0pLHguZGlzYWJsZWQ9M0RlLmRpc2FibGVk
KSx0eXBlb2YgZS5pbmRleCE9M0QidW5kZWZpbmVkIiYmKE0uaT0KPTNEZS5pbmRleCxNLng9M0RP
KE0uaSkseC5pbmRleD0zRGUuaW5kZXgsdHQuZGF0YShbTV0pKSx0eXBlb2YgZS5yZXNjYWxlWSE9
Cj0zRCJ1bmRlZmluZWQiJiYoeT0zRGUucmVzY2FsZVkpLEQudXBkYXRlKCl9KX0pLER9ZnVuY3Rp
b24gUChlLG4pe3JldHVybiBuLj0KbWFwKGZ1bmN0aW9uKG4scil7aWYoIW4udmFsdWVzKXJldHVy
biBuO3ZhciBpPTNEbi52YWx1ZXNbZV07aWYoaT0zRD0zRG51bGwpPQpyZXR1cm4gbjt2YXIgcz0z
RHQueSgpKGksZSk7cmV0dXJuIHM8LTAuOTUmJiFBPyhuLnRlbXBEaXNhYmxlZD0zRCEwLG4pOihu
LnQ9CmVtcERpc2FibGVkPTNEITEsbi52YWx1ZXM9M0RuLnZhbHVlcy5tYXAoZnVuY3Rpb24oZSxu
KXtyZXR1cm4gZS5kaXNwbGF5PTNEez0KeToodC55KCkoZSxuKS1zKS8oMStzKX0sZX0pLG4pfSl9
dmFyIHQ9M0RlLm1vZGVscy5saW5lKCksbj0zRGUubW9kZWxzLmF4aXMoPQopLHI9M0RlLm1vZGVs
cy5heGlzKCksaT0zRGUubW9kZWxzLmxlZ2VuZCgpLHM9M0RlLm1vZGVscy5sZWdlbmQoKSxvPTNE
ZS5pbnQ9CmVyYWN0aXZlR3VpZGVsaW5lKCksdT0zRHt0b3A6MzAscmlnaHQ6MzAsYm90dG9tOjUw
LGxlZnQ6NjB9LGE9M0RlLnV0aWxzLmRlZj0KYXVsdENvbG9yKCksZj0zRG51bGwsbD0zRG51bGws
Yz0zRCEwLGg9M0QhMCxwPTNEITAsZD0zRCExLHY9M0QhMCxtPTNEITAsZz0KPTNEITEseT0zRCEw
LGI9M0RmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIrbisi
IGF0ICIrPQp0KyI8L3A+In0sdyxFLFM9M0R0LmlkKCkseD0zRHtpbmRleDowLHJlc2NhbGVZOnl9
LFQ9M0RudWxsLE49M0QiTm8gRGF0YSBBdmE9CmlsYWJsZS4iLEM9M0RmdW5jdGlvbihlKXtyZXR1
cm4gZS5hdmVyYWdlfSxrPTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidD0Kb29sdGlwSGlk
ZSIsInN0YXRlQ2hhbmdlIiwiY2hhbmdlU3RhdGUiKSxMPTNEMCxBPTNEITE7bi5vcmllbnQoImJv
dHRvbSIpLnRpPQpja1BhZGRpbmcoNyksci5vcmllbnQoZD8icmlnaHQiOiJsZWZ0Iikscy51cGRh
dGVTdGF0ZSghMSk7dmFyIE89M0RkMy5zY2FsZS49CmxpbmVhcigpLE09M0R7aTowLHg6MH0sXz0z
RGZ1bmN0aW9uKGkscyl7dmFyIG89M0RpLnBvc1swXSsocy5vZmZzZXRMZWZ0fHwwKT0KLHU9M0Rp
LnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLGE9M0RuLnRpY2tGb3JtYXQoKSh0LngoKShpLnBvaW50
LGkucG9pbnRJbmRlPQp4KSksZj0zRHIudGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbnQsaS5wb2lu
dEluZGV4KSksbD0zRGIoaS5zZXJpZXMua2V5LGEsZiw9CmksRCk7ZS50b29sdGlwLnNob3coW28s
dV0sbCxudWxsLG51bGwscyl9O3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91cz0KZW92
ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rdS5sZWZ0LGUucG9zWzFd
K3UudG9wXSxrLnRvb2x0PQppcFNob3coZSl9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2Vv
dXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7ay50b29sdGlwSGk9CmRlKGUpfSksay5vbigidG9vbHRp
cEhpZGUiLGZ1bmN0aW9uKCl7diYmZS50b29sdGlwLmNsZWFudXAoKX0pLEQuZGlzcGF0Y2g9Cj0z
RGssRC5saW5lcz0zRHQsRC5sZWdlbmQ9M0RpLEQueEF4aXM9M0RuLEQueUF4aXM9M0RyLEQuaW50
ZXJhY3RpdmVMYXllcj0zRD0KbyxkMy5yZWJpbmQoRCx0LCJkZWZpbmVkIiwiaXNBcmVhIiwieCIs
InkiLCJ4U2NhbGUiLCJ5U2NhbGUiLCJzaXplIiwieERvbWFpPQpuIiwieURvbWFpbiIsInhSYW5n
ZSIsInlSYW5nZSIsImZvcmNlWCIsImZvcmNlWSIsImludGVyYWN0aXZlIiwiY2xpcEVkZ2UiLCI9
CmNsaXBWb3Jvbm9pIiwidXNlVm9yb25vaSIsImlkIiksRC5vcHRpb25zPTNEZS51dGlscy5vcHRp
b25zRnVuYy5iaW5kKEQpLEQubT0KYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8odS50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmPQppbmVkIj9lLnRvcDp1LnRv
cCx1LnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp1LnJpZ2h0
LHU9Ci5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dS5i
b3R0b20sdS5sZWZ0PTNEdHlwZW9mID0KZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDp1Lmxl
ZnQsRCk6dX0sRC53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1PQptZW50cy5sZW5ndGg/
KGY9M0RlLEQpOmZ9LEQuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGw9Cj0zRGUsRCk6bH0sRC5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhhPTNEZS51dGlscy5nZXRDbz0KbG9yKHQpLGkuY29sb3IoYSksRCk6YX0sRC5yZXNj
YWxlWT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PQo9M0RlLEQpOnl9
LEQuc2hvd0NvbnRyb2xzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09
M0RlLEQpOm09Cn0sRC51c2VJbnRlcmFjdGl2ZUd1aWRlbGluZT0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhnPTNEZSxlPQo9M0Q9M0Q9M0QhMCYmKEQuaW50ZXJhY3RpdmUo
ITEpLEQudXNlVm9yb25vaSghMSkpLEQpOmd9LEQuc2hvd0xlZ2VuZD0zRGZ1bmM9CnRpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLEQpOmN9LEQuc2hvd1hBeGlzPTNEZnVuY3Rp
b24oZSl7cmV0dT0Kcm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsRCk6aH0sRC5zaG93WUF4aXM9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzPQoubGVuZ3RoPyhwPTNEZSxEKTpwfSxELnJp
Z2h0QWxpZ25ZQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Q9Cmg/KGQ9
M0RlLHIub3JpZW50KGU/InJpZ2h0IjoibGVmdCIpLEQpOmR9LEQudG9vbHRpcHM9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYT0Kcmd1bWVudHMubGVuZ3RoPyh2PTNEZSxEKTp2fSxELnRvb2x0aXBDb250
ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50PQpzLmxlbmd0aD8oYj0zRGUsRCk6Yn0s
RC5zdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh4PTNEZSw9CkQp
Onh9LEQuZGVmYXVsdFN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KFQ9M0RlLEQpOlR9LEQubj0Kb0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oTj0zRGUsRCk6Tn0sRC5hdmVyYWdlPTNEZnVuY3RpPQpvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oQz0zRGUsRCk6Q30sRC50cmFuc2l0aW9uRHVyYXRpb249M0RmdW5jdGlvbig9
CmUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhMPTNEZSxEKTpMfSxELm5vRXJyb3JDaGVjaz0z
RGZ1bmN0aW9uKGUpe3JldHVybj0KIGFyZ3VtZW50cy5sZW5ndGg/KEE9M0RlLEQpOkF9LER9LGUu
bW9kZWxzLmRpc2NyZXRlQmFyPTNEZnVuY3Rpb24oKXtmdW5jdGlvPQpuIEUoZSl7cmV0dXJuIGUu
ZWFjaChmdW5jdGlvbihlKXt2YXIgaT0zRG4tdC5sZWZ0LXQucmlnaHQsRT0zRHItdC50b3AtdC5i
b3Q9CnRvbSxTPTNEZDMuc2VsZWN0KHRoaXMpO2UuZm9yRWFjaChmdW5jdGlvbihlLHQpe2UudmFs
dWVzLmZvckVhY2goZnVuY3Rpb24oZT0KKXtlLnNlcmllcz0zRHR9KX0pO3ZhciBUPTNEcCYmZD9b
XTplLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubWFwKGZ1PQpuY3Rpb24oZSx0KXty
ZXR1cm57eDp1KGUsdCkseTphKGUsdCkseTA6ZS55MH19KX0pO3MuZG9tYWluKHB8fGQzLm1lcmdl
KFQpLm09CmFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9KSkucmFuZ2VCYW5kcyh2fHxbMCxpXSwu
MSksby5kb21haW4oZHx8ZDMuZXh0ZW50KD0KZDMubWVyZ2UoVCkubWFwKGZ1bmN0aW9uKGUpe3Jl
dHVybiBlLnl9KS5jb25jYXQoZikpKSxjP28ucmFuZ2UobXx8W0UtKG8uZG9tPQphaW4oKVswXTww
PzEyOjApLG8uZG9tYWluKClbMV0+MD8xMjowXSk6by5yYW5nZShtfHxbRSwwXSksYj0zRGJ8fHMs
dz0zRHd8fG89Ci5jb3B5KCkucmFuZ2UoW28oMCksbygwKV0pO3ZhciBOPTNEUy5zZWxlY3RBbGwo
ImcubnYtd3JhcC5udi1kaXNjcmV0ZWJhciIpLj0KZGF0YShbZV0pLEM9M0ROLmVudGVyKCkuYXBw
ZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtZGlzY3JldGViPQphciIpLGs9
M0RDLmFwcGVuZCgiZyIpLEw9M0ROLnNlbGVjdCgiZyIpO2suYXBwZW5kKCJnIikuYXR0cigiY2xh
c3MiLCJudi1ncm89CnVwcyIpLE4uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdC5sZWZ0
KyIsIit0LnRvcCsiKSIpO3ZhciBBPTNETi5zZWxlYz0KdCgiLm52LWdyb3VwcyIpLnNlbGVjdEFs
bCgiLm52LWdyb3VwIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZX0sZnVuY3Rpb24oPQplKXty
ZXR1cm4gZS5rZXl9KTtBLmVudGVyKCkuYXBwZW5kKCJnIikuc3R5bGUoInN0cm9rZS1vcGFjaXR5
IiwxZS02KS5zdHlsZSg9CiJmaWxsLW9wYWNpdHkiLDFlLTYpLEEuZXhpdCgpLnN0eWxlKCJzdHJv
a2Utb3BhY2l0eSIsMWUtNikuc3R5bGUoImZpbGwtb3BhYz0KaXR5IiwxZS02KS5yZW1vdmUoKSxB
LmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiJudi1ncm91cCBudi1zZXJpZXMtPQoi
K3R9KS5jbGFzc2VkKCJob3ZlciIsZnVuY3Rpb24oZSl7cmV0dXJuIGUuaG92ZXJ9KSxBLnN0eWxl
KCJzdHJva2Utb3BhY2l0eSI9CiwxKS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwuNzUpO3ZhciBPPTNE
QS5zZWxlY3RBbGwoImcubnYtYmFyIikuZGF0YShmdW5jdGlvbj0KKGUpe3JldHVybiBlLnZhbHVl
c30pO08uZXhpdCgpLnJlbW92ZSgpO3ZhciBNPTNETy5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIo
PQoidHJhbnNmb3JtIixmdW5jdGlvbihlLHQsbil7cmV0dXJuInRyYW5zbGF0ZSgiKyhzKHUoZSx0
KSkrcy5yYW5nZUJhbmQoKSouMDU9CikrIiwgIitvKDApKyIpIn0pLm9uKCJtb3VzZW92ZXIiLGZ1
bmN0aW9uKHQsbil7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdj0KZXIiLCEwKSxnLmVsZW1l
bnRNb3VzZW92ZXIoe3ZhbHVlOmEodCxuKSxwb2ludDp0LHNlcmllczplW3Quc2VyaWVzXSxwb3M6
W3MoPQp1KHQsbikpK3MucmFuZ2VCYW5kKCkqKHQuc2VyaWVzKy41KS9lLmxlbmd0aCxvKGEodCxu
KSldLHBvaW50SW5kZXg6bixzZXJpZXM9CkluZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnR9KX0pLm9u
KCJtb3VzZW91dCIsZnVuY3Rpb24odCxuKXtkMy5zZWxlY3QodGhpcykuYz0KbGFzc2VkKCJob3Zl
ciIsITEpLGcuZWxlbWVudE1vdXNlb3V0KHt2YWx1ZTphKHQsbikscG9pbnQ6dCxzZXJpZXM6ZVt0
LnNlcmllPQpzXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpkMy5ldmVudH0p
fSkub24oImNsaWNrIixmdW5jdGlvbih0LG49Cil7Zy5lbGVtZW50Q2xpY2soe3ZhbHVlOmEodCxu
KSxwb2ludDp0LHNlcmllczplW3Quc2VyaWVzXSxwb3M6W3ModSh0LG4pKStzLj0KcmFuZ2VCYW5k
KCkqKHQuc2VyaWVzKy41KS9lLmxlbmd0aCxvKGEodCxuKSldLHBvaW50SW5kZXg6bixzZXJpZXNJ
bmRleDp0LnNlPQpyaWVzLGU6ZDMuZXZlbnR9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0p
Lm9uKCJkYmxjbGljayIsZnVuY3Rpb24odCxuKXs9CmcuZWxlbWVudERibENsaWNrKHt2YWx1ZTph
KHQsbikscG9pbnQ6dCxzZXJpZXM6ZVt0LnNlcmllc10scG9zOltzKHUodCxuKSkrcz0KLnJhbmdl
QmFuZCgpKih0LnNlcmllcysuNSkvZS5sZW5ndGgsbyhhKHQsbikpXSxwb2ludEluZGV4Om4sc2Vy
aWVzSW5kZXg6dC5zPQplcmllcyxlOmQzLmV2ZW50fSksZDMuZXZlbnQuc3RvcFByb3BhZ2F0aW9u
KCl9KTtNLmFwcGVuZCgicmVjdCIpLmF0dHIoImhlaWc9Cmh0IiwwKS5hdHRyKCJ3aWR0aCIscy5y
YW5nZUJhbmQoKSouOS9lLmxlbmd0aCksYz8oTS5hcHBlbmQoInRleHQiKS5hdHRyKCJ0ZT0KeHQt
YW5jaG9yIiwibWlkZGxlIiksTy5zZWxlY3QoInRleHQiKS50ZXh0KGZ1bmN0aW9uKGUsdCl7cmV0
dXJuIGgoYShlLHQpKX0pPQouYXR0cigieCIscy5yYW5nZUJhbmQoKSouOS8yKS5hdHRyKCJ5Iixm
dW5jdGlvbihlLHQpe3JldHVybiBhKGUsdCk8MD9vKGEoZSw9CnQpKS1vKDApKzEyOi00fSkpOk8u
c2VsZWN0QWxsKCJ0ZXh0IikucmVtb3ZlKCksTy5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KT0K
e3JldHVybiBhKGUsdCk8MD8ibnYtYmFyIG5lZ2F0aXZlIjoibnYtYmFyIHBvc2l0aXZlIn0pLnN0
eWxlKCJmaWxsIixmdW5jdGlvPQpuKGUsdCl7cmV0dXJuIGUuY29sb3J8fGwoZSx0KX0pLnN0eWxl
KCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3I9Cnx8bChlLHQpfSkuc2VsZWN0
KCJyZWN0IikuYXR0cigiY2xhc3MiLHkpLmF0dHIoIndpZHRoIixzLnJhbmdlQmFuZCgpKi45L2Uu
bD0KZW5ndGgpLE8uYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3ZhciBuPTNEcyh1KGUs
dCkpK3MucmFuZ2VCYW5kKCkqLjA1PQoscj0zRGEoZSx0KTwwP28oMCk6bygwKS1vKGEoZSx0KSk8
MT9vKDApLTE6byhhKGUsdCkpO3JldHVybiJ0cmFuc2xhdGUoIituKyI9CiwgIityKyIpIn0pLnNl
bGVjdCgicmVjdCIpLmF0dHIoImhlaWdodCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgo
TWF0aD0KLmFicyhvKGEoZSx0KSktbyhkJiZkWzBdfHwwKSl8fDEpfSksYj0zRHMuY29weSgpLHc9
M0RvLmNvcHkoKX0pLEV9dmFyIHQ9M0R7PQp0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0s
bj0zRDk2MCxyPTNENTAwLGk9M0RNYXRoLmZsb29yKE1hdGgucmFuZG9tKCk9CioxZTQpLHM9M0Rk
My5zY2FsZS5vcmRpbmFsKCksbz0zRGQzLnNjYWxlLmxpbmVhcigpLHU9M0RmdW5jdGlvbihlKXty
ZXR1cm4gZT0KLnh9LGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS55fSxmPTNEWzBdLGw9M0RlLnV0
aWxzLmRlZmF1bHRDb2xvcigpLGM9M0QhMSxoPQo9M0RkMy5mb3JtYXQoIiwuMmYiKSxwLGQsdixt
LGc9M0RkMy5kaXNwYXRjaCgiY2hhcnRDbGljayIsImVsZW1lbnRDbGljayIsImU9CmxlbWVudERi
bENsaWNrIiwiZWxlbWVudE1vdXNlb3ZlciIsImVsZW1lbnRNb3VzZW91dCIpLHk9M0QiZGlzY3Jl
dGVCYXIiLGIsdz0KO3JldHVybiBFLmRpc3BhdGNoPTNEZyxFLm9wdGlvbnM9M0RlLnV0aWxzLm9w
dGlvbnNGdW5jLmJpbmQoRSksRS54PTNEZnVuY3RpPQpvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8odT0zRGUsRSk6dX0sRS55PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW49CnRzLmxl
bmd0aD8oYT0zRGUsRSk6YX0sRS5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8odC50bz0KcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDp0LnRv
cCx0LnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuPQpkZWZpbmVkIj9lLnJpZ2h0OnQucmln
aHQsdC5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b209Cjp0
LmJvdHRvbSx0LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDp0Lmxl
ZnQsRSk6dH0sRS53aWR0aD0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KG49M0RlLEUpOm59LEUuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7PQpyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8ocj0zRGUsRSk6cn0sRS54U2NhbGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnQ9
CnMubGVuZ3RoPyhzPTNEZSxFKTpzfSxFLnlTY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhvPTNEZT0KLEUpOm99LEUueERvbWFpbj0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxFKTpwfSxFLnlEb21hPQppbj0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSxFKTpkfSxFLnhSYW5nZT0zRGZ1bmN0aW9u
KGU9Cil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9M0RlLEUpOnZ9LEUueVJhbmdlPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZT0KbnRzLmxlbmd0aD8obT0zRGUsRSk6bX0sRS5mb3JjZVk9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0KPTNEZSxFKTpmfSxFLmNv
bG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLnV0aWxzLmdl
dENvPQpsb3IodCksRSk6bH0sRS5pZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhpPTNEZSxFKTppfSxFLnNob3c9ClZhbHVlcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhjPTNEZSxFKTpjfSxFLnZhbHVlRm9ybWF0PTNEZj0KdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsRSk6aH0sRS5yZWN0Q2xhc3M9M0RmdW5jdGlv
bihlKXtyPQpldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PTNEZSxFKTp5fSxFfSxlLm1vZGVscy5k
aXNjcmV0ZUJhckNoYXJ0PTNEZnVuY3Rpb249Cigpe2Z1bmN0aW9uIHcoZSl7cmV0dXJuIGUuZWFj
aChmdW5jdGlvbihlKXt2YXIgdT0zRGQzLnNlbGVjdCh0aGlzKSxwPTNEdGhpcz0KLHk9M0Qoc3x8
cGFyc2VJbnQodS5zdHlsZSgid2lkdGgiKSl8fDk2MCktaS5sZWZ0LWkucmlnaHQsRT0zRChvfHxw
YXJzZUludCh1PQouc3R5bGUoImhlaWdodCIpKXx8NDAwKS1pLnRvcC1pLmJvdHRvbTt3LnVwZGF0
ZT0zRGZ1bmN0aW9uKCl7Zy5iZWZvcmVVcGRhdGU9CigpLHUuY2FsbCh3KX0sdy5jb250YWluZXI9
M0R0aGlzO2lmKCFlfHwhZS5sZW5ndGh8fCFlLmZpbHRlcihmdW5jdGlvbihlKXtyZT0KdHVybiBl
LnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgpe3ZhciBTPTNEdS5zZWxlY3RBbGwoIi5udi1ub0RhdGEi
KS5kYXRhKFttXSk7PQpyZXR1cm4gUy5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNz
IiwibnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi09Ci43ZW0iKS5zdHlsZSgidGV4dC1hbmNo
b3IiLCJtaWRkbGUiKSxTLmF0dHIoIngiLGkubGVmdCt5LzIpLmF0dHIoInkiLGkudG9wKz0KRS8y
KS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksd311LnNlbGVjdEFsbCgiLm52LW5vRGF0YSIp
LnJlbW92ZSgpLGQ9M0R0PQoueFNjYWxlKCksdj0zRHQueVNjYWxlKCkuY2xhbXAoITApO3ZhciBU
PTNEdS5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1kaXNjcmU9CnRlQmFyV2l0aEF4ZXMiKS5kYXRh
KFtlXSksTj0zRFQuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtdz0K
cmFwIG52LWRpc2NyZXRlQmFyV2l0aEF4ZXMiKS5hcHBlbmQoImciKSxDPTNETi5hcHBlbmQoImRl
ZnMiKSxrPTNEVC5zZWxlY3QoPQoiZyIpO04uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14
IG52LWF4aXMiKSxOLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiw9CiJudi15IG52LWF4aXMiKS5h
cHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXplcm9MaW5lIikuYXBwZW5kKCJsaW5lIiksTi5h
cD0KcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYmFyc1dyYXAiKSxrLmF0dHIoInRyYW5zZm9y
bSIsInRyYW5zbGF0ZSgiK2kubGVmPQp0KyIsIitpLnRvcCsiKSIpLGwmJmsuc2VsZWN0KCIubnYt
eS5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCI9Cit5KyIsMCkiKSx0Lndp
ZHRoKHkpLmhlaWdodChFKTt2YXIgTD0zRGsuc2VsZWN0KCIubnYtYmFyc1dyYXAiKS5kYXR1bShl
LmZpbD0KdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkpO0wuY2FsbCh0KSxDLmFw
cGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJpPQpkIiwibnYteC1sYWJlbC1jbGlwLSIrdC5pZCgpKS5h
cHBlbmQoInJlY3QiKSxrLnNlbGVjdCgiI252LXgtbGFiZWwtY2xpcC0iK3Q9Ci5pZCgpKyIgcmVj
dCIpLmF0dHIoIndpZHRoIixkLnJhbmdlQmFuZCgpKihjPzI6MSkpLmF0dHIoImhlaWdodCIsMTYp
LmF0dHIoIj0KeCIsLWQucmFuZ2VCYW5kKCkvKGM/MToyKSk7aWYoYSl7bi5zY2FsZShkKS50aWNr
cyh5LzEwMCkudGlja1NpemUoLUUsMCksay5zPQplbGVjdCgiLm52LXgubnYtYXhpcyIpLmF0dHIo
InRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrKHYucmFuZ2UoKVswXSsodC5zaG89CndWYWx1ZXMo
KSYmdi5kb21haW4oKVswXTwwPzE2OjApKSsiKSIpLGsuc2VsZWN0KCIubnYteC5udi1heGlzIiku
Y2FsbChuKTt2YT0KciBBPTNEay5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5zZWxlY3RBbGwoImci
KTtjJiZBLnNlbGVjdEFsbCgidGV4dCIpLmF0dHIoPQoidHJhbnNmb3JtIixmdW5jdGlvbihlLHQs
bil7cmV0dXJuInRyYW5zbGF0ZSgwLCIrKG4lMj0zRD0zRDA/IjUiOiIxNyIpKyIpIn09Cil9ZiYm
KHIuc2NhbGUodikudGlja3MoRS8zNikudGlja1NpemUoLXksMCksay5zZWxlY3QoIi5udi15Lm52
LWF4aXMiKS5jYWxsKD0KcikpLGsuc2VsZWN0KCIubnYtemVyb0xpbmUgbGluZSIpLmF0dHIoIngx
IiwwKS5hdHRyKCJ4MiIseSkuYXR0cigieTEiLHYoMCkpPQouYXR0cigieTIiLHYoMCkpLGcub24o
InRvb2x0aXBTaG93IixmdW5jdGlvbihlKXtoJiZiKGUscC5wYXJlbnROb2RlKX0pfSksd309CnZh
ciB0PTNEZS5tb2RlbHMuZGlzY3JldGVCYXIoKSxuPTNEZS5tb2RlbHMuYXhpcygpLHI9M0RlLm1v
ZGVscy5heGlzKCksaT0zRD0Ke3RvcDoxNSxyaWdodDoxMCxib3R0b206NTAsbGVmdDo2MH0scz0z
RG51bGwsbz0zRG51bGwsdT0zRGUudXRpbHMuZ2V0Q29sb3IoPQopLGE9M0QhMCxmPTNEITAsbD0z
RCExLGM9M0QhMSxoPTNEITAscD0zRGZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIjxoMz4iK3Q9
CisiPC9oMz4iKyI8cD4iK24rIjwvcD4ifSxkLHYsbT0zRCJObyBEYXRhIEF2YWlsYWJsZS4iLGc9
M0RkMy5kaXNwYXRjaCgidG9vbD0KdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwiYmVmb3JlVXBkYXRl
IikseT0zRDA7bi5vcmllbnQoImJvdHRvbSIpLmhpZ2hsaWdodFplPQpybyghMSkuc2hvd01heE1p
bighMSkudGlja0Zvcm1hdChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLHIub3JpZW50KGw/InJpZ2h0
Ijo9CiJsZWZ0IikudGlja0Zvcm1hdChkMy5mb3JtYXQoIiwuMWYiKSk7dmFyIGI9M0RmdW5jdGlv
bihpLHMpe3ZhciBvPTNEaS5wb3NbMD0KXSsocy5vZmZzZXRMZWZ0fHwwKSx1PTNEaS5wb3NbMV0r
KHMub2Zmc2V0VG9wfHwwKSxhPTNEbi50aWNrRm9ybWF0KCkodC54KCkoPQppLnBvaW50LGkucG9p
bnRJbmRleCkpLGY9M0RyLnRpY2tGb3JtYXQoKSh0LnkoKShpLnBvaW50LGkucG9pbnRJbmRleCkp
LGw9M0Q9CnAoaS5zZXJpZXMua2V5LGEsZixpLHcpO2UudG9vbHRpcC5zaG93KFtvLHVdLGwsaS52
YWx1ZTwwPyJuIjoicyIsbnVsbCxzKX07cj0KZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVudE1v
dXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swPQpdK2kubGVmdCxl
LnBvc1sxXStpLnRvcF0sZy50b29sdGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRN
b3VzZW91dC49CnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2cudG9vbHRpcEhpZGUoZSl9KSxnLm9uKCJ0
b29sdGlwSGlkZSIsZnVuY3Rpb24oKXtoJiZlLj0KdG9vbHRpcC5jbGVhbnVwKCl9KSx3LmRpc3Bh
dGNoPTNEZyx3LmRpc2NyZXRlYmFyPTNEdCx3LnhBeGlzPTNEbix3LnlBeGlzPTNEPQpyLGQzLnJl
YmluZCh3LHQsIngiLCJ5IiwieERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJm
b3JjZVgiLCJmb3I9CmNlWSIsImlkIiwic2hvd1ZhbHVlcyIsInZhbHVlRm9ybWF0Iiksdy5vcHRp
b25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKD0Kdyksdy5tYXJnaW49M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaS50b3A9M0R0eXBlb2YgZS50b3AhPTNEPQoidW5k
ZWZpbmVkIj9lLnRvcDppLnRvcCxpLnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5l
ZCI/ZS5yaWdodDppLnI9CmlnaHQsaS5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVm
aW5lZCI/ZS5ib3R0b206aS5ib3R0b20saS5sZWZ0PTNEdD0KeXBlb2YgZS5sZWZ0IT0zRCJ1bmRl
ZmluZWQiP2UubGVmdDppLmxlZnQsdyk6aX0sdy53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVyPQpu
IGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLHcpOnN9LHcuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW49Cmd0aD8obz0zRGUsdyk6b30sdy5jb2xvcj0zRGZ1bmN0aW9uKG4p
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZS51dGlscz0KLmdldENvbG9yKG4pLHQuY29s
b3IodSksdyk6dX0sdy5zaG93WEF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
PQpuZ3RoPyhhPTNEZSx3KTphfSx3LnNob3dZQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhmPTNEZSw9CncpOmZ9LHcucmlnaHRBbGlnbllBeGlzPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLHIub3JpZT0KbnQoZT8icmlnaHQiOiJs
ZWZ0Iiksdyk6bH0sdy5zdGFnZ2VyTGFiZWxzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sPQplbmd0aD8oYz0zRGUsdyk6Y30sdy50b29sdGlwcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhoPTNEZSw9CncpOmh9LHcudG9vbHRpcENvbnRlbnQ9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsdyk6cH0sdz0KLm5vRGF0YT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNEZSx3KTptfSx3LnRyYW5zaXRp
b25EdXJhPQp0aW9uPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9M0Rl
LHcpOnl9LHd9LGUubW9kZWxzLmRpc3RyaWI9CnV0aW9uPTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBs
KGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIGE9M0RuLShpPTNEPQo9M0Q9M0QieCI/
dC5sZWZ0K3QucmlnaHQ6dC50b3ArdC5ib3R0b20pLGw9M0RpPTNEPTNEIngiPyJ5IjoieCIsYz0z
RGQzLnNlbGU9CmN0KHRoaXMpO2Y9M0RmfHx1O3ZhciBoPTNEYy5zZWxlY3RBbGwoImcubnYtZGlz
dHJpYnV0aW9uIikuZGF0YShbZV0pLHA9M0RoLj0KZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJj
bGFzcyIsIm52ZDMgbnYtZGlzdHJpYnV0aW9uIiksZD0zRHAuYXBwZW5kKCJnIiksPQp2PTNEaC5z
ZWxlY3QoImciKTtoLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50
b3ArIikiKTt2YXI9CiBtPTNEdi5zZWxlY3RBbGwoImcubnYtZGlzdCIpLmRhdGEoZnVuY3Rpb24o
ZSl7cmV0dXJuIGV9LGZ1bmN0aW9uKGUpe3JldHVybj0KIGUua2V5fSk7bS5lbnRlcigpLmFwcGVu
ZCgiZyIpLG0uYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIm52LWRpc3QgPQpudi1z
ZXJpZXMtIit0fSkuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gbyhlLHQpfSk7
dmFyIGc9M0RtLnNlbGU9CmN0QWxsKCJsaW5lLm52LWRpc3QiK2kpLmRhdGEoZnVuY3Rpb24oZSl7
cmV0dXJuIGUudmFsdWVzfSk7Zy5lbnRlcigpLmFwcGVuZD0KKCJsaW5lIikuYXR0cihpKyIxIixm
dW5jdGlvbihlLHQpe3JldHVybiBmKHMoZSx0KSl9KS5hdHRyKGkrIjIiLGZ1bmN0aW9uKGUsPQp0
KXtyZXR1cm4gZihzKGUsdCkpfSksbS5leGl0KCkuc2VsZWN0QWxsKCJsaW5lLm52LWRpc3QiK2kp
LmF0dHIoaSsiMSIsZnVuY3Q9CmlvbihlLHQpe3JldHVybiB1KHMoZSx0KSl9KS5hdHRyKGkrIjIi
LGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHUocyhlLHQpKX0pLnN0eT0KbGUoInN0cm9rZS1vcGFjaXR5
IiwwKS5yZW1vdmUoKSxnLmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiJudi1kaXN0
PQoiK2krIiBudi1kaXN0IitpKyItIit0fSkuYXR0cihsKyIxIiwwKS5hdHRyKGwrIjIiLHIpLGcu
YXR0cihpKyIxIixmdW5jdGlvbig9CmUsdCl7cmV0dXJuIHUocyhlLHQpKX0pLmF0dHIoaSsiMiIs
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdShzKGUsdCkpfSksZj0zRHUuYz0Kb3B5KCl9KSxsfXZhciB0
PTNEe3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSxuPTNENDAwLHI9M0Q4LGk9M0QieCIs
cz0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGVbaV19LG89M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigp
LHU9M0RkMy5zY2FsZS5saW5lYXIoPQopLGEsZjtyZXR1cm4gbC5vcHRpb25zPTNEZS51dGlscy5v
cHRpb25zRnVuYy5iaW5kKGwpLGwubWFyZ2luPTNEZnVuY3Rpb24oZSk9CntyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8odC50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6dC50
b3AsdD0KLnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp0LnJp
Z2h0LHQuYm90dG9tPTNEdHlwZW9mIGUuPQpib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206
dC5ib3R0b20sdC5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmU9CmQiP2UubGVmdDp0
LmxlZnQsbCk6dH0sbC53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhuPTNEZT0KLGwpOm59LGwuYXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhpPTNEZSxsKTppfSxsLnNpemU9M0RmPQp1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhyPTNEZSxsKTpyfSxsLmdldERhdGE9M0RmdW5jdGlvbihlKXtyZXQ9CnVybiBhcmd1
bWVudHMubGVuZ3RoPyhzPTNEZDMuZnVuY3RvcihlKSxsKTpzfSxsLnNjYWxlPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuID0KYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsbCk6dX0sbC5jb2xvcj0zRGZ1bmN0
aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPQo/KG89M0RlLnV0aWxzLmdldENvbG9yKHQp
LGwpOm99LGx9LGUubW9kZWxzLmhpc3RvcmljYWxCYXJDaGFydD0zRGZ1bmN0aW9uKCk9CntmdW5j
dGlvbiB4KGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZCl7dmFyIEU9M0RkMy5zZWxlY3QodGhp
cyksVD0zRHRoaXMsTj0KPTNEKHV8fHBhcnNlSW50KEUuc3R5bGUoIndpZHRoIikpfHw5NjApLXMu
bGVmdC1zLnJpZ2h0LEM9M0QoYXx8cGFyc2VJbnQoRS5zPQp0eWxlKCJoZWlnaHQiKSl8fDQwMCkt
cy50b3Atcy5ib3R0b207eC51cGRhdGU9M0RmdW5jdGlvbigpe0UuY2FsbCh4KX0seC5jb249CnRh
aW5lcj0zRHRoaXMsZy5kaXNhYmxlZD0zRGQubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5kaXNh
YmxlZH0pO2lmKCF5KXt2YT0KciBrO3k9M0R7fTtmb3IoayBpbiBnKWdba11pbnN0YW5jZW9mIEFy
cmF5P3lba109M0RnW2tdLnNsaWNlKDApOnlba109M0RnW2tdPQp9aWYoIWR8fCFkLmxlbmd0aHx8
IWQuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgpe3Y9
CmFyIEw9M0RFLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW2JdKTtyZXR1cm4gTC5lbnRl
cigpLmFwcGVuZCgidGV4dCIpLj0KYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIo
ImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkPQpsZSIpLEwuYXR0cigieCIs
cy5sZWZ0K04vMikuYXR0cigieSIscy50b3ArQy8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBl
fSk9Cix4fUUuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtb3ZlKCksdj0zRHQueFNjYWxlKCks
bT0zRHQueVNjYWxlKCk7dmFyIEE9Cj0zREUuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtaGlzdG9y
aWNhbEJhckNoYXJ0IikuZGF0YShbZF0pLE89M0RBLmVudGVyKCkuYT0KcHBlbmQoImciKS5hdHRy
KCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1oaXN0b3JpY2FsQmFyQ2hhcnQiKS5hcHBlbmQoImci
KSxNPQo9M0RBLnNlbGVjdCgiZyIpO08uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14IG52
LWF4aXMiKSxPLmFwcGVuZCgiZyIpLmE9CnR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKSxPLmFw
cGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYmFyc1dyYXAiKSxPLmFwcD0KZW5kKCJnIikuYXR0
cigiY2xhc3MiLCJudi1sZWdlbmRXcmFwIiksZiYmKGkud2lkdGgoTiksTS5zZWxlY3QoIi5udi1s
ZWdlbmRXPQpyYXAiKS5kYXR1bShkKS5jYWxsKGkpLHMudG9wIT0zRGkuaGVpZ2h0KCkmJihzLnRv
cD0zRGkuaGVpZ2h0KCksQz0zRChhfHxwYXI9CnNlSW50KEUuc3R5bGUoImhlaWdodCIpKXx8NDAw
KS1zLnRvcC1zLmJvdHRvbSksQS5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuYT0KdHRyKCJ0cmFu
c2Zvcm0iLCJ0cmFuc2xhdGUoMCwiKyAtcy50b3ArIikiKSksQS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0
cmFuc2xhdGUoPQoiK3MubGVmdCsiLCIrcy50b3ArIikiKSxoJiZNLnNlbGVjdCgiLm52LXkubnYt
YXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW49CnNsYXRlKCIrTisiLDApIiksdC53aWR0aChO
KS5oZWlnaHQoQykuY29sb3IoZC5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jbz0KbG9yfHxv
KGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4hZFt0XS5kaXNhYmxlZH0pKTt2YXIg
Xz0zRE0uc2VsZWN0PQooIi5udi1iYXJzV3JhcCIpLmRhdHVtKGQuZmlsdGVyKGZ1bmN0aW9uKGUp
e3JldHVybiFlLmRpc2FibGVkfSkpO18uY2FsbCh0KSw9CmwmJihuLnNjYWxlKHYpLnRpY2tTaXpl
KC1DLDApLE0uc2VsZWN0KCIubnYteC5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidD0KcmFu
c2xhdGUoMCwiK20ucmFuZ2UoKVswXSsiKSIpLE0uc2VsZWN0KCIubnYteC5udi1heGlzIikuY2Fs
bChuKSksYyYmKHIuc2NhPQpsZShtKS50aWNrcyhDLzM2KS50aWNrU2l6ZSgtTiwwKSxNLnNlbGVj
dCgiLm52LXkubnYtYXhpcyIpLmNhbGwocikpLGkuZGlzcGE9CnRjaC5vbigibGVnZW5kQ2xpY2si
LGZ1bmN0aW9uKHQsbil7dC5kaXNhYmxlZD0zRCF0LmRpc2FibGVkLGQuZmlsdGVyKGZ1bmN0aT0K
b24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KS5sZW5ndGh8fGQubWFwKGZ1bmN0aW9uKGUpe3JldHVy
biBlLmRpc2FibGVkPTNEITEsPQpBLnNlbGVjdEFsbCgiLm52LXNlcmllcyIpLmNsYXNzZWQoImRp
c2FibGVkIiwhMSksZX0pLGcuZGlzYWJsZWQ9M0RkLm1hcChmdW49CmN0aW9uKGUpe3JldHVybiEh
ZS5kaXNhYmxlZH0pLHcuc3RhdGVDaGFuZ2UoZyksZS5jYWxsKHgpfSksaS5kaXNwYXRjaC5vbigi
bD0KZWdlbmREYmxjbGljayIsZnVuY3Rpb24oZSl7ZC5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuZGlz
YWJsZWQ9M0QhMH0pLGUuZGlzYWJsPQplZD0zRCExLGcuZGlzYWJsZWQ9M0RkLm1hcChmdW5jdGlv
bihlKXtyZXR1cm4hIWUuZGlzYWJsZWR9KSx3LnN0YXRlQ2hhbmdlKGc9CikseC51cGRhdGUoKX0p
LHcub24oInRvb2x0aXBTaG93IixmdW5jdGlvbihlKXtwJiZTKGUsVC5wYXJlbnROb2RlKX0pLHcu
b24oIj0KY2hhbmdlU3RhdGUiLGZ1bmN0aW9uKGUpe3R5cGVvZiBlLmRpc2FibGVkIT0zRCJ1bmRl
ZmluZWQiJiYoZC5mb3JFYWNoKGZ1bmN0PQppb24odCxuKXt0LmRpc2FibGVkPTNEZS5kaXNhYmxl
ZFtuXX0pLGcuZGlzYWJsZWQ9M0RlLmRpc2FibGVkKSx4LnVwZGF0ZSgpfSk9Cn0pLHh9dmFyIHQ9
M0RlLm1vZGVscy5oaXN0b3JpY2FsQmFyKCksbj0zRGUubW9kZWxzLmF4aXMoKSxyPTNEZS5tb2Rl
bHMuYXhpcz0KKCksaT0zRGUubW9kZWxzLmxlZ2VuZCgpLHM9M0R7dG9wOjMwLHJpZ2h0OjkwLGJv
dHRvbTo1MCxsZWZ0OjkwfSxvPTNEZS51dGlsPQpzLmRlZmF1bHRDb2xvcigpLHU9M0RudWxsLGE9
M0RudWxsLGY9M0QhMSxsPTNEITAsYz0zRCEwLGg9M0QhMSxwPTNEITAsZD0zRGY9CnVuY3Rpb24o
ZSx0LG4scixpKXtyZXR1cm4iPGgzPiIrZSsiPC9oMz4iKyI8cD4iK24rIiBhdCAiK3QrIjwvcD4i
fSx2LG0sZz0zRD0Ke30seT0zRG51bGwsYj0zRCJObyBEYXRhIEF2YWlsYWJsZS4iLHc9M0RkMy5k
aXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwPQpIaWRlIiwic3RhdGVDaGFuZ2UiLCJjaGFu
Z2VTdGF0ZSIpLEU9M0QwO24ub3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg3KSw9CnIub3Jp
ZW50KGg/InJpZ2h0IjoibGVmdCIpO3ZhciBTPTNEZnVuY3Rpb24oaSxzKXtpZihzKXt2YXIgbz0z
RGQzLnNlbGVjdChzKT0KLnNlbGVjdCgic3ZnIiksdT0zRG8ubm9kZSgpP28uYXR0cigidmlld0Jv
eCIpOm51bGw7aWYodSl7dT0zRHUuc3BsaXQoIiAiKTt2PQphciBhPTNEcGFyc2VJbnQoby5zdHls
ZSgid2lkdGgiKSkvdVsyXTtpLnBvc1swXT0zRGkucG9zWzBdKmEsaS5wb3NbMV09M0RpLnA9Cm9z
WzFdKmF9fXZhciBmPTNEaS5wb3NbMF0rKHMub2Zmc2V0TGVmdHx8MCksbD0zRGkucG9zWzFdKyhz
Lm9mZnNldFRvcHx8MCksYz0KPTNEbi50aWNrRm9ybWF0KCkodC54KCkoaS5wb2ludCxpLnBvaW50
SW5kZXgpKSxoPTNEci50aWNrRm9ybWF0KCkodC55KCkoaS5wPQpvaW50LGkucG9pbnRJbmRleCkp
LHA9M0RkKGkuc2VyaWVzLmtleSxjLGgsaSx4KTtlLnRvb2x0aXAuc2hvdyhbZixsXSxwLG51bGw9
CixudWxsLHMpfTtyZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlw
IixmdW5jdGlvbihlKXtlLnBvcz0KPTNEW2UucG9zWzBdK3MubGVmdCxlLnBvc1sxXStzLnRvcF0s
dy50b29sdGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2gub24oImVsZW1lPQpudE1vdXNlb3V0LnRvb2x0
aXAiLGZ1bmN0aW9uKGUpe3cudG9vbHRpcEhpZGUoZSl9KSx3Lm9uKCJ0b29sdGlwSGlkZSIsZnVu
Y3Q9Cmlvbigpe3AmJmUudG9vbHRpcC5jbGVhbnVwKCl9KSx4LmRpc3BhdGNoPTNEdyx4LmJhcnM9
M0R0LHgubGVnZW5kPTNEaSx4LnhBeD0KaXM9M0RuLHgueUF4aXM9M0RyLGQzLnJlYmluZCh4LHQs
ImRlZmluZWQiLCJpc0FyZWEiLCJ4IiwieSIsInNpemUiLCJ4U2NhbGUiPQosInlTY2FsZSIsInhE
b21haW4iLCJ5RG9tYWluIiwieFJhbmdlIiwieVJhbmdlIiwiZm9yY2VYIiwiZm9yY2VZIiwiaW50
ZXJhY3Q9Cml2ZSIsImNsaXBFZGdlIiwiY2xpcFZvcm9ub2kiLCJpZCIsImludGVycG9sYXRlIiwi
aGlnaGxpZ2h0UG9pbnQiLCJjbGVhckhpZz0KaGxpZ2h0cyIsImludGVyYWN0aXZlIikseC5vcHRp
b25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKHgpLHgubWFyZ2luPTNEPQpmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocy50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVm
aW5lZCI/ZS49CnRvcDpzLnRvcCxzLnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5l
ZCI/ZS5yaWdodDpzLnJpZ2h0LHMuYm90dG9tPQo9M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVm
aW5lZCI/ZS5ib3R0b206cy5ib3R0b20scy5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9Cj0zRCJ1bmRl
ZmluZWQiP2UubGVmdDpzLmxlZnQseCk6c30seC53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubD0KZW5ndGg/KHU9M0RlLHgpOnV9LHguaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLHgpPQo6YX0seC5jb2xvcj0zRGZ1bmN0aW9uKHQp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZS51dGlscy5nZXRDb2xvcih0KSw9CmkuY29s
b3IobykseCk6b30seC5zaG93TGVnZW5kPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGY9M0RlLD0KeCk6Zn0seC5zaG93WEF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8obD0zRGUseCk6bH0seC5zaG93PQpZQXhpcz0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSx4KTpjfSx4LnJpZ2h0QWxpZ25ZQXhpcz0KPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLHIub3JpZW50KGU/InJp
Z2h0IjoibGVmdCIpLHgpPQo6aH0seC50b29sdGlwcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhwPTNEZSx4KTpwfSx4LnRvb2x0aXA9CkNvbnRlbnQ9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGUseCk6ZH0seC5zdGF0ZT0zRGZ1bmN0aT0K
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9M0RlLHgpOmd9LHguZGVmYXVsdFN0YXRl
PTNEZnVuY3Rpb24oZSl7cmV0PQp1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT0zRGUseCk6eX0seC5u
b0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmw9CmVuZ3RoPyhiPTNEZSx4KTpi
fSx4LnRyYW5zaXRpb25EdXJhdGlvbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Zz0KdGg/KEU9M0RlLHgpOkV9LHh9LGUubW9kZWxzLmluZGVudGVkVHJlZT0zRGZ1bmN0aW9uKCl7
ZnVuY3Rpb24gZyhlKXtyZXR1cm4gPQplLmVhY2goZnVuY3Rpb24oZSl7ZnVuY3Rpb24gayhlLHQs
bil7ZDMuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7aWYoZDMuZXZlbnQ9Ci5zaGlmdEtleSYmIW4p
cmV0dXJuIGQzLmV2ZW50LnNoaWZ0S2V5PTNEITEsZS52YWx1ZXMmJmUudmFsdWVzLmZvckVhY2go
ZnVuYz0KdGlvbihlKXsoZS52YWx1ZXN8fGUuX3ZhbHVlcykmJmsoZSwwLCEwKX0pLCEwO2lmKCFP
KGUpKXJldHVybiEwO2UudmFsdWVzPyhlPQouX3ZhbHVlcz0zRGUudmFsdWVzLGUudmFsdWVzPTNE
bnVsbCk6KGUudmFsdWVzPTNEZS5fdmFsdWVzLGUuX3ZhbHVlcz0zRG51bGw9CiksZy51cGRhdGUo
KX1mdW5jdGlvbiBMKGUpe3JldHVybiBlLl92YWx1ZXMmJmUuX3ZhbHVlcy5sZW5ndGg/aDplLnZh
bHVlcyYmZT0KLnZhbHVlcy5sZW5ndGg/cDoiIn1mdW5jdGlvbiBBKGUpe3JldHVybiBlLl92YWx1
ZXMmJmUuX3ZhbHVlcy5sZW5ndGh9ZnVuY3RpPQpvbiBPKGUpe3ZhciB0PTNEZS52YWx1ZXN8fGUu
X3ZhbHVlcztyZXR1cm4gdCYmdC5sZW5ndGh9dmFyIHQ9M0QxLG49M0RkMy5zZWw9CmVjdCh0aGlz
KSxpPTNEZDMubGF5b3V0LnRyZWUoKS5jaGlsZHJlbihmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1
ZXN9KS5zaXplKD0KW3IsZl0pO2cudXBkYXRlPTNEZnVuY3Rpb24oKXtuLmNhbGwoZyl9LGVbMF18
fChlWzBdPTNEe2tleTphfSk7dmFyIHM9M0RpLm5vPQpkZXMoZVswXSkseT0zRGQzLnNlbGVjdCh0
aGlzKS5zZWxlY3RBbGwoImRpdiIpLmRhdGEoW1tzXV0pLGI9M0R5LmVudGVyKCkuYXA9CnBlbmQo
ImRpdiIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LWluZGVudGVkdHJlZSIpLHc9M0Ri
LmFwcGVuZCgidGFibD0KZSIpLEU9M0R5LnNlbGVjdCgidGFibGUiKS5hdHRyKCJ3aWR0aCIsIjEw
MCUiKS5hdHRyKCJjbGFzcyIsYyk7aWYobyl7dmFyIFM9Cj0zRHcuYXBwZW5kKCJ0aGVhZCIpLHg9
M0RTLmFwcGVuZCgidHIiKTtsLmZvckVhY2goZnVuY3Rpb24oZSl7eC5hcHBlbmQoInRoIj0KKS5h
dHRyKCJ3aWR0aCIsZS53aWR0aD9lLndpZHRoOiIxMCUiKS5zdHlsZSgidGV4dC1hbGlnbiIsZS50
eXBlPTNEPTNEIm51bWVyPQppYyI/InJpZ2h0IjoibGVmdCIpLmFwcGVuZCgic3BhbiIpLnRleHQo
ZS5sYWJlbCl9KX12YXIgVD0zREUuc2VsZWN0QWxsKCJ0Ym89CmR5IikuZGF0YShmdW5jdGlvbihl
KXtyZXR1cm4gZX0pO1QuZW50ZXIoKS5hcHBlbmQoInRib2R5IiksdD0zRGQzLm1heChzLGZ1bj0K
Y3Rpb24oZSl7cmV0dXJuIGUuZGVwdGh9KSxpLnNpemUoW3IsdCpmXSk7dmFyIE49M0RULnNlbGVj
dEFsbCgidHIiKS5kYXRhKGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGUuZmlsdGVyKGZ1bmN0aW9uKGUp
e3JldHVybiB1JiYhZS5jaGlsZHJlbj91KGUpOiEwfSl9LGZ1bmM9CnRpb24oZSx0KXtyZXR1cm4g
ZS5pZHx8ZS5pZHx8KyttfSk7Ti5leGl0KCkucmVtb3ZlKCksTi5zZWxlY3QoImltZy5udi10cmVl
aT0KY29uIikuYXR0cigic3JjIixMKS5jbGFzc2VkKCJmb2xkZWQiLEEpO3ZhciBDPTNETi5lbnRl
cigpLmFwcGVuZCgidHIiKTtsLmZvPQpyRWFjaChmdW5jdGlvbihlLHQpe3ZhciBuPTNEQy5hcHBl
bmQoInRkIikuc3R5bGUoInBhZGRpbmctbGVmdCIsZnVuY3Rpb24oZSk9CntyZXR1cm4odD8wOmUu
ZGVwdGgqZisxMisoTChlKT8wOjE2KSkrInB4In0sImltcG9ydGFudCIpLnN0eWxlKCJ0ZXh0LWFs
aWduIj0KLGUudHlwZT0zRD0zRCJudW1lcmljIj8icmlnaHQiOiJsZWZ0Iik7dD0zRD0zRDAmJm4u
YXBwZW5kKCJpbWciKS5jbGFzc2VkKCJuPQp2LXRyZWVpY29uIiwhMCkuY2xhc3NlZCgibnYtZm9s
ZGVkIixBKS5hdHRyKCJzcmMiLEwpLnN0eWxlKCJ3aWR0aCIsIjE0cHgiKS49CnN0eWxlKCJoZWln
aHQiLCIxNHB4Iikuc3R5bGUoInBhZGRpbmciLCIwIDFweCIpLnN0eWxlKCJkaXNwbGF5IixmdW5j
dGlvbihlKT0Ke3JldHVybiBMKGUpPyJpbmxpbmUtYmxvY2siOiJub25lIn0pLm9uKCJjbGljayIs
ayksbi5lYWNoKGZ1bmN0aW9uKG4peyF0JiZ2PQoobik/ZDMuc2VsZWN0KHRoaXMpLmFwcGVuZCgi
YSIpLmF0dHIoImhyZWYiLHYpLmF0dHIoImNsYXNzIixkMy5mdW5jdG9yKGUuY2w9CmFzc2VzKSku
YXBwZW5kKCJzcGFuIik6ZDMuc2VsZWN0KHRoaXMpLmFwcGVuZCgic3BhbiIpLGQzLnNlbGVjdCh0
aGlzKS5zZWxlYz0KdCgic3BhbiIpLmF0dHIoImNsYXNzIixkMy5mdW5jdG9yKGUuY2xhc3Nlcykp
LnRleHQoZnVuY3Rpb24odCl7cmV0dXJuIGUuZm9yPQptYXQ/dFtlLmtleV0/ZS5mb3JtYXQodFtl
LmtleV0pOiItIjp0W2Uua2V5XXx8Ii0ifSl9KSxlLnNob3dDb3VudCYmKG4uYXBwZW49CmQoInNw
YW4iKS5hdHRyKCJjbGFzcyIsIm52LWNoaWxkcmVuQ291bnQiKSxOLnNlbGVjdEFsbCgic3Bhbi5u
di1jaGlsZHJlbkNvdT0KbnQiKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcyYmZS52
YWx1ZXMubGVuZ3RofHxlLl92YWx1ZXMmJmUuX3ZhbHVlPQpzLmxlbmd0aD8iKCIrKGUudmFsdWVz
JiZlLnZhbHVlcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIHU/dShlKTohMH0pLmxlbmc9CnRo
fHxlLl92YWx1ZXMmJmUuX3ZhbHVlcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIHU/dShlKToh
MH0pLmxlbmd0aHx8MCkrIj0KKSI6IiJ9KSl9KSxOLm9yZGVyKCkub24oImNsaWNrIixmdW5jdGlv
bihlKXtkLmVsZW1lbnRDbGljayh7cm93OnRoaXMsZGF0YTplPQoscG9zOltlLngsZS55XX0pfSku
b24oImRibGNsaWNrIixmdW5jdGlvbihlKXtkLmVsZW1lbnREYmxjbGljayh7cm93OnRoaXMsZGE9
CnRhOmUscG9zOltlLngsZS55XX0pfSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oZSl7ZC5lbGVt
ZW50TW91c2VvdmVyKHtyb3c6dD0KaGlzLGRhdGE6ZSxwb3M6W2UueCxlLnldfSl9KS5vbigibW91
c2VvdXQiLGZ1bmN0aW9uKGUpe2QuZWxlbWVudE1vdXNlb3V0KHtyPQpvdzp0aGlzLGRhdGE6ZSxw
b3M6W2UueCxlLnldfSl9KX0pLGd9dmFyIHQ9M0R7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0
OjA9Cn0sbj0zRDk2MCxyPTNENTAwLGk9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLHM9M0RNYXRo
LmZsb29yKE1hdGgucmFuZG9tKCkqMT0KZTQpLG89M0QhMCx1PTNEITEsYT0zRCJObyBEYXRhIEF2
YWlsYWJsZS4iLGY9M0QyMCxsPTNEW3trZXk6ImtleSIsbGFiZWw6Ik5hPQptZSIsdHlwZToidGV4
dCJ9XSxjPTNEbnVsbCxoPTNEImltYWdlcy9ncmV5LXBsdXMucG5nIixwPTNEImltYWdlcy9ncmV5
LW1pbnU9CnMucG5nIixkPTNEZDMuZGlzcGF0Y2goImVsZW1lbnRDbGljayIsImVsZW1lbnREYmxj
bGljayIsImVsZW1lbnRNb3VzZW92ZXIiLD0KImVsZW1lbnRNb3VzZW91dCIpLHY9M0RmdW5jdGlv
bihlKXtyZXR1cm4gZS51cmx9LG09M0QwO3JldHVybiBnLm9wdGlvbnM9M0RlPQoudXRpbHMub3B0
aW9uc0Z1bmMuYmluZChnKSxnLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyg9CnQudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnQudG9w
LHQucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9Cj0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdo
dCx0LmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLj0KYm90dG9tOnQu
Ym90dG9tLHQubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnQubGVm
dCxnKTp0fSxnPQoud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
bj0zRGUsZyk6bn0sZy5oZWlnaHQ9M0RmdW5jdGk9Cm9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhyPTNEZSxnKTpyfSxnLmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZz0KdW1lbnRz
Lmxlbmd0aD8oaT0zRGUudXRpbHMuZ2V0Q29sb3IodCksc2NhdHRlci5jb2xvcihpKSxnKTppfSxn
LmlkPTNEZnVuY3RpPQpvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0zRGUsZyk6c30s
Zy5oZWFkZXI9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXI9Cmd1bWVudHMubGVuZ3RoPyhvPTNEZSxn
KTpvfSxnLm5vRGF0YT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPz0KKGE9
M0RlLGcpOmF9LGcuZmlsdGVyWmVybz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyh1PTNEZSxnKTp1PQp9LGcuY29sdW1ucz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhsPTNEZSxnKTpsfSxnLnRhYmxlQ2xhc3M9Cj0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSxnKTpjfSxnLmljb25PcGVuPTNEZnVuY3Rpb24oZT0K
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsZyk6aH0sZy5pY29uQ2xvc2U9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJnPQp1bWVudHMubGVuZ3RoPyhwPTNEZSxnKTpwfSxnLmdldFVybD0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyg9CnY9M0RlLGcpOnZ9LGd9LGUu
bW9kZWxzLmxlZ2VuZD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhoKXtyZXR1cm4gaC5lYWNoKGZ1
bj0KY3Rpb24oYyl7dmFyIGg9M0RuLXQubGVmdC10LnJpZ2h0LHA9M0RkMy5zZWxlY3QodGhpcyks
ZD0zRHAuc2VsZWN0QWxsKCJnLm52PQotbGVnZW5kIikuZGF0YShbY10pLHY9M0RkLmVudGVyKCku
YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LWxlZ2VuZCI9CikuYXBwZW5kKCJnIiks
bT0zRGQuc2VsZWN0KCJnIik7ZC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0LmxlZnQr
IiwiKz0KdC50b3ArIikiKTt2YXIgZz0zRG0uc2VsZWN0QWxsKCIubnYtc2VyaWVzIikuZGF0YShm
dW5jdGlvbihlKXtyZXR1cm4gZX0pLHk9Cj0zRGcuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJj
bGFzcyIsIm52LXNlcmllcyIpLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKD0KZSx0KXtsLmxlZ2Vu
ZE1vdXNlb3ZlcihlLHQpfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbihlLHQpe2wubGVnZW5kTW91
c2VvdXQoPQplLHQpfSkub24oImNsaWNrIixmdW5jdGlvbihlLHQpe2wubGVnZW5kQ2xpY2soZSx0
KSxhJiYoZj8oYy5mb3JFYWNoKGZ1bmN0aW89Cm4oZSl7ZS5kaXNhYmxlZD0zRCEwfSksZS5kaXNh
YmxlZD0zRCExKTooZS5kaXNhYmxlZD0zRCFlLmRpc2FibGVkLGMuZXZlcnkoZj0KdW5jdGlvbihl
KXtyZXR1cm4gZS5kaXNhYmxlZH0pJiZjLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5kaXNhYmxlZD0z
RCExfSkpLGwuPQpzdGF0ZUNoYW5nZSh7ZGlzYWJsZWQ6Yy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJu
ISFlLmRpc2FibGVkfSl9KSl9KS5vbigiZGJsY2w9CmljayIsZnVuY3Rpb24oZSx0KXtsLmxlZ2Vu
ZERibGNsaWNrKGUsdCksYSYmKGMuZm9yRWFjaChmdW5jdGlvbihlKXtlLmRpc2FibD0KZWQ9M0Qh
MH0pLGUuZGlzYWJsZWQ9M0QhMSxsLnN0YXRlQ2hhbmdlKHtkaXNhYmxlZDpjLm1hcChmdW5jdGlv
bihlKXtyZXR1cm4hPQohZS5kaXNhYmxlZH0pfSkpfSk7eS5hcHBlbmQoImNpcmNsZSIpLnN0eWxl
KCJzdHJva2Utd2lkdGgiLDIpLmF0dHIoImNsYXNzIiw9CiJudi1sZWdlbmQtc3ltYm9sIikuYXR0
cigiciIsNSkseS5hcHBlbmQoInRleHQiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsInN0YXJ0Ij0KKS5h
dHRyKCJjbGFzcyIsIm52LWxlZ2VuZC10ZXh0IikuYXR0cigiZHkiLCIuMzJlbSIpLmF0dHIoImR4
IiwiOCIpLGcuY2xhc3NlPQpkKCJkaXNhYmxlZCIsZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJs
ZWR9KSxnLmV4aXQoKS5yZW1vdmUoKSxnLnNlbGVjdCgiY2k9CnJjbGUiKS5zdHlsZSgiZmlsbCIs
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8cyhlLHQpfSkuc3R5bGUoInN0cm9rZSIsZj0K
dW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxzKGUsdCl9KSxnLnNlbGVjdCgidGV4dCIpLnRl
eHQoaSk7aWYobyl7dmFyIGI9Cj0zRFtdO2cuZWFjaChmdW5jdGlvbih0LG4pe3ZhciByPTNEZDMu
c2VsZWN0KHRoaXMpLnNlbGVjdCgidGV4dCIpLGk7dHJ5e2k9Cj0zRHIuZ2V0Q29tcHV0ZWRUZXh0
TGVuZ3RoKCk7aWYoaTw9M0QwKXRocm93IEVycm9yKCl9Y2F0Y2gocyl7aT0zRGUudXRpbHMuYz0K
YWxjQXBwcm94VGV4dFdpZHRoKHIpfWIucHVzaChpKzI4KX0pO3ZhciB3PTNEMCxFPTNEMCxTPTNE
W107d2hpbGUoRTxoJiZ3PGIuPQpsZW5ndGgpU1t3XT0zRGJbd10sRSs9M0RiW3crK107dz0zRD0z
RD0zRDAmJih3PTNEMSk7d2hpbGUoRT5oJiZ3PjEpe1M9M0RbXSw9CnctLTtmb3IodmFyIHg9M0Qw
O3g8Yi5sZW5ndGg7eCsrKWJbeF0+KFNbeCV3XXx8MCkmJihTW3gld109M0RiW3hdKTtFPTNEUy5y
ZT0KZHVjZShmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gZSt0fSl9dmFyIFQ9M0RbXTtmb3IodmFy
IE49M0QwLEM9M0QwO048dztOKyspPQpUW05dPTNEQyxDKz0zRFNbTl07Zy5hdHRyKCJ0cmFuc2Zv
cm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiK1RbdCU9CnddKyIsIisoNStNYXRo
LmZsb29yKHQvdykqMjApKyIpIn0pLHU/bS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIiso
bi10Lj0KcmlnaHQtRSkrIiwiK3QudG9wKyIpIik6bS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xh
dGUoMCwiK3QudG9wKyIpIikscj0zRHQuPQp0b3ArdC5ib3R0b20rTWF0aC5jZWlsKGIubGVuZ3Ro
L3cpKjIwfWVsc2V7dmFyIGs9M0Q1LEw9M0Q1LEE9M0QwLE87Zy5hdHRyKCI9CnRyYW5zZm9ybSIs
ZnVuY3Rpb24oZSxyKXt2YXIgaT0zRGQzLnNlbGVjdCh0aGlzKS5zZWxlY3QoInRleHQiKS5ub2Rl
KCkuZ2V0Qz0Kb21wdXRlZFRleHRMZW5ndGgoKSsyODtyZXR1cm4gTz0zREwsbjx0LmxlZnQrdC5y
aWdodCtPK2kmJihMPTNETz0zRDUsays9M0QyPQowKSxMKz0zRGksTD5BJiYoQT0zREwpLCJ0cmFu
c2xhdGUoIitPKyIsIitrKyIpIn0pLG0uYXR0cigidHJhbnNmb3JtIiwidHJhbnM9CmxhdGUoIiso
bi10LnJpZ2h0LUEpKyIsIit0LnRvcCsiKSIpLHI9M0R0LnRvcCt0LmJvdHRvbStrKzE1fX0pLGN9
dmFyIHQ9M0R7dD0Kb3A6NSxyaWdodDowLGJvdHRvbTo1LGxlZnQ6MH0sbj0zRDQwMCxyPTNEMjAs
aT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLmtleX0sPQpzPTNEZS51dGlscy5kZWZhdWx0Q29sb3Io
KSxvPTNEITAsdT0zRCEwLGE9M0QhMCxmPTNEITEsbD0zRGQzLmRpc3BhdGNoKCJsZWc9CmVuZENs
aWNrIiwibGVnZW5kRGJsY2xpY2siLCJsZWdlbmRNb3VzZW92ZXIiLCJsZWdlbmRNb3VzZW91dCIs
InN0YXRlQ2hhbmdlIj0KKTtyZXR1cm4gYy5kaXNwYXRjaD0zRGwsYy5vcHRpb25zPTNEZS51dGls
cy5vcHRpb25zRnVuYy5iaW5kKGMpLGMubWFyZ2luPTNEPQpmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8odC50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS49CnRv
cDp0LnRvcCx0LnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp0
LnJpZ2h0LHQuYm90dG9tPQo9M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0
b206dC5ib3R0b20sdC5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9Cj0zRCJ1bmRlZmluZWQiP2UubGVm
dDp0LmxlZnQsYyk6dH0sYy53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubD0K
ZW5ndGg/KG49M0RlLGMpOm59LGMuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KHI9M0RlLGMpPQo6cn0sYy5rZXk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oaT0zRGUsYyk6aX0sYy5jb2xvcj0zRGZ1bmM9CnRpb24odCl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHM9M0RlLnV0aWxzLmdldENvbG9yKHQpLGMpOnN9LGMuYWxpZ249M0Rm
dT0KbmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZSxjKTpvfSxjLnJpZ2h0
QWxpZ249M0RmdW5jdGlvbihlKXtyPQpldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZSxjKTp1
fSxjLnVwZGF0ZVN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3U9Cm1lbnRzLmxlbmd0aD8o
YT0zRGUsYyk6YX0sYy5yYWRpb0J1dHRvbk1vZGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLj0KbGVuZ3RoPyhmPTNEZSxjKTpmfSxjfSxlLm1vZGVscy5saW5lPTNEZnVuY3Rpb24oKXtm
dW5jdGlvbiBtKGcpe3JldHVybiBnLmVhPQpjaChmdW5jdGlvbihtKXt2YXIgZz0zRHItbi5sZWZ0
LW4ucmlnaHQsYj0zRGktbi50b3Atbi5ib3R0b20sdz0zRGQzLnNlbGVjdCg9CnRoaXMpO2M9M0R0
LnhTY2FsZSgpLGg9M0R0LnlTY2FsZSgpLGQ9M0RkfHxjLHY9M0R2fHxoO3ZhciBFPTNEdy5zZWxl
Y3RBbGwoIj0KZy5udi13cmFwLm52LWxpbmUiKS5kYXRhKFttXSksUz0zREUuZW50ZXIoKS5hcHBl
bmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgPQpudi13cmFwIG52LWxpbmUiKSxUPTNEUy5hcHBl
bmQoImRlZnMiKSxOPTNEUy5hcHBlbmQoImciKSxDPTNERS5zZWxlY3QoImciKTs9Ck4uYXBwZW5k
KCJnIikuYXR0cigiY2xhc3MiLCJudi1ncm91cHMiKSxOLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNz
IiwibnYtc2NhdD0KdGVyV3JhcCIpLEUuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrbi5s
ZWZ0KyIsIituLnRvcCsiKSIpLHQud2lkdGgoZykuPQpoZWlnaHQoYik7dmFyIGs9M0RFLnNlbGVj
dCgiLm52LXNjYXR0ZXJXcmFwIik7ay5jYWxsKHQpLFQuYXBwZW5kKCJjbGlwUGF0aCI9CikuYXR0
cigiaWQiLCJudi1lZGdlLWNsaXAtIit0LmlkKCkpLmFwcGVuZCgicmVjdCIpLEUuc2VsZWN0KCIj
bnYtZWRnZS1jbGlwLT0KIit0LmlkKCkrIiByZWN0IikuYXR0cigid2lkdGgiLGcpLmF0dHIoImhl
aWdodCIsYj4wP2I6MCksQy5hdHRyKCJjbGlwLXBhdGgiPQosbD8idXJsKCNudi1lZGdlLWNsaXAt
Iit0LmlkKCkrIikiOiIiKSxrLmF0dHIoImNsaXAtcGF0aCIsbD8idXJsKCNudi1lZGdlLWM9Cmxp
cC0iK3QuaWQoKSsiKSI6IiIpO3ZhciBMPTNERS5zZWxlY3QoIi5udi1ncm91cHMiKS5zZWxlY3RB
bGwoIi5udi1ncm91cCIpLj0KZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZX0sZnVuY3Rpb24oZSl7
cmV0dXJuIGUua2V5fSk7TC5lbnRlcigpLmFwcGVuZCgiZyIpPQouc3R5bGUoInN0cm9rZS1vcGFj
aXR5IiwxZS02KS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwxZS02KSxMLmV4aXQoKS5yZW1vdmUoKSw9
CkwuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIm52LWdyb3VwIG52LXNlcmllcy0i
K3R9KS5jbGFzc2VkKCJob3Zlcj0KIixmdW5jdGlvbihlKXtyZXR1cm4gZS5ob3Zlcn0pLnN0eWxl
KCJmaWxsIixmdW5jdGlvbihlLHQpe3JldHVybiBzKGUsdCl9KS5zPQp0eWxlKCJzdHJva2UiLGZ1
bmN0aW9uKGUsdCl7cmV0dXJuIHMoZSx0KX0pLEwuc3R5bGUoInN0cm9rZS1vcGFjaXR5IiwxKS5z
dHk9CmxlKCJmaWxsLW9wYWNpdHkiLC41KTt2YXIgQT0zREwuc2VsZWN0QWxsKCJwYXRoLm52LWFy
ZWEiKS5kYXRhKGZ1bmN0aW9uKGUpez0KcmV0dXJuIGYoZSk/W2VdOltdfSk7QS5lbnRlcigpLmFw
cGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwibnYtYXJlYSIpLmF0dHIoPQoiZCIsZnVuY3Rpb24o
dCl7cmV0dXJuIGQzLnN2Zy5hcmVhKCkuaW50ZXJwb2xhdGUocCkuZGVmaW5lZChhKS54KGZ1bmN0
aW9uKHQ9CixuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8oZChvKHQsbikpKX0pLnkwKGZ1bmN0
aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTj0KYU50b1plcm8odih1KHQsbikpKX0pLnkxKGZ1bmN0
aW9uKGUsdCl7cmV0dXJuIHYoaC5kb21haW4oKVswXTw9M0QwP2guZG9tYWluPQooKVsxXT49M0Qw
PzA6aC5kb21haW4oKVsxXTpoLmRvbWFpbigpWzBdKX0pLmFwcGx5KHRoaXMsW3QudmFsdWVzXSl9
KSxMLmV4aXQ9CigpLnNlbGVjdEFsbCgicGF0aC5udi1hcmVhIikucmVtb3ZlKCksQS5hdHRyKCJk
IixmdW5jdGlvbih0KXtyZXR1cm4gZDMuc3ZnLj0KYXJlYSgpLmludGVycG9sYXRlKHApLmRlZmlu
ZWQoYSkueChmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhjPQoobyh0LG4p
KSl9KS55MChmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhoKHUodCxuKSkp
fSkueTEoZnVuY3Q9CmlvbihlLHQpe3JldHVybiBoKGguZG9tYWluKClbMF08PTNEMD9oLmRvbWFp
bigpWzFdPj0zRDA/MDpoLmRvbWFpbigpWzFdOmguZD0Kb21haW4oKVswXSl9KS5hcHBseSh0aGlz
LFt0LnZhbHVlc10pfSk7dmFyIE89M0RMLnNlbGVjdEFsbCgicGF0aC5udi1saW5lIikuPQpkYXRh
KGZ1bmN0aW9uKGUpe3JldHVybltlLnZhbHVlc119KTtPLmVudGVyKCkuYXBwZW5kKCJwYXRoIiku
YXR0cigiY2xhc3MiLCI9Cm52LWxpbmUiKS5hdHRyKCJkIixkMy5zdmcubGluZSgpLmludGVycG9s
YXRlKHApLmRlZmluZWQoYSkueChmdW5jdGlvbih0LG4pez0KcmV0dXJuIGUudXRpbHMuTmFOdG9a
ZXJvKGQobyh0LG4pKSl9KS55KGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aPQpl
cm8odih1KHQsbikpKX0pKSxPLmF0dHIoImQiLGQzLnN2Zy5saW5lKCkuaW50ZXJwb2xhdGUocCku
ZGVmaW5lZChhKS54KGZ1bmM9CnRpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8oYyhv
KHQsbikpKX0pLnkoZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dD0KaWxzLk5hTnRvWmVybyhoKHUo
dCxuKSkpfSkpLGQ9M0RjLmNvcHkoKSx2PTNEaC5jb3B5KCl9KSxtfXZhciB0PTNEZS5tb2RlbHMu
PQpzY2F0dGVyKCksbj0zRHt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0scj0zRDk2MCxp
PTNENTAwLHM9M0RlLnV0aWxzLmQ9CmVmYXVsdENvbG9yKCksbz0zRGZ1bmN0aW9uKGUpe3JldHVy
biBlLnh9LHU9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS55fSxhPTNEZj0KdW5jdGlvbihlLHQpe3Jl
dHVybiFpc05hTih1KGUsdCkpJiZ1KGUsdCkhPTNEPTNEbnVsbH0sZj0zRGZ1bmN0aW9uKGUpe3Jl
dHVyPQpuIGUuYXJlYX0sbD0zRCExLGMsaCxwPTNEImxpbmVhciI7dC5zaXplKDE2KS5zaXplRG9t
YWluKFsxNiwyNTZdKTt2YXIgZCx2O3I9CmV0dXJuIG0uZGlzcGF0Y2g9M0R0LmRpc3BhdGNoLG0u
c2NhdHRlcj0zRHQsZDMucmViaW5kKG0sdCwiaWQiLCJpbnRlcmFjdGl2ZT0KIiwic2l6ZSIsInhT
Y2FsZSIsInlTY2FsZSIsInpTY2FsZSIsInhEb21haW4iLCJ5RG9tYWluIiwieFJhbmdlIiwieVJh
bmdlIiwiPQpzaXplRG9tYWluIiwiZm9yY2VYIiwiZm9yY2VZIiwiZm9yY2VTaXplIiwiY2xpcFZv
cm9ub2kiLCJ1c2VWb3Jvbm9pIiwiY2xpcFI9CmFkaXVzIiwicGFkRGF0YSIsImhpZ2hsaWdodFBv
aW50IiwiY2xlYXJIaWdobGlnaHRzIiksbS5vcHRpb25zPTNEZS51dGlscy5vcD0KdGlvbnNGdW5j
LmJpbmQobSksbS5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
bi50b3A9M0R0PQp5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDpuLnRvcCxuLnJpZ2h0
PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW49CmVkIj9lLnJpZ2h0Om4ucmlnaHQsbi5ib3R0
b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206bi5ibz0KdHRvbSxu
LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDpuLmxlZnQsbSk6bn0s
bS53aWR0aD0zRGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLG0p
OnJ9LG0uaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXI9Cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0z
RGUsbSk6aX0sbS54PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KD0Kbz0z
RGUsdC54KGUpLG0pOm99LG0ueT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
Pyh1PTNEZSx0LnkoZSksPQptKTp1fSxtLmNsaXBFZGdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGw9M0RlLG0pOmx9LG0uY29sb3I9Cj0zRGZ1bmN0aW9uKG4pe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhzPTNEZS51dGlscy5nZXRDb2xvcihuKSx0LmNvbG9yKHMpLD0K
bSk6c30sbS5pbnRlcnBvbGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhwPTNEZSxtKTpwfSxtLmRlPQpmaW5lZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhhPTNEZSxtKTphfSxtLmlzQXJlYT0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGY9M0RkMy5mdW5jdG9yKGUpLG0pOmZ9LG19LGUubW9kZWxzLmxpbmVDaGFy
dD0KPTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBOKG0pe3JldHVybiBtLmVhY2goZnVuY3Rpb24obSl7
dmFyIHg9M0RkMy5zZWxlY3QodGhpPQpzKSxDPTNEdGhpcyxrPTNEKGF8fHBhcnNlSW50KHguc3R5
bGUoIndpZHRoIikpfHw5NjApLW8ubGVmdC1vLnJpZ2h0LEw9M0QoZnw9CnxwYXJzZUludCh4LnN0
eWxlKCJoZWlnaHQiKSl8fDQwMCktby50b3Atby5ib3R0b207Ti51cGRhdGU9M0RmdW5jdGlvbigp
e3guYz0KYWxsKE4pfSxOLmNvbnRhaW5lcj0zRHRoaXMsYi5kaXNhYmxlZD0zRG0ubWFwKGZ1bmN0
aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlPQpkfSk7aWYoIXcpe3ZhciBBO3c9M0R7fTtmb3IoQSBp
biBiKWJbQV1pbnN0YW5jZW9mIEFycmF5P3dbQV09M0RiW0FdLnNsaWNlKDA9Cik6d1tBXT0zRGJb
QV19aWYoIW18fCFtLmxlbmd0aHx8IW0uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVl
cy5sZW5ndD0KaH0pLmxlbmd0aCl7dmFyIE89M0R4LnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRh
dGEoW0VdKTtyZXR1cm4gTy5lbnRlcigpLmFwPQpwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJu
dmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC09CmFuY2hvciIs
Im1pZGRsZSIpLE8uYXR0cigieCIsby5sZWZ0K2svMikuYXR0cigieSIsby50b3ArTC8yKS50ZXh0
KGZ1bmN0aW9uKD0KZSl7cmV0dXJuIGV9KSxOfXguc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVt
b3ZlKCksZz0zRHQueFNjYWxlKCkseT0zRHQueVNjPQphbGUoKTt2YXIgTT0zRHguc2VsZWN0QWxs
KCJnLm52LXdyYXAubnYtbGluZUNoYXJ0IikuZGF0YShbbV0pLF89M0RNLmVudGVyKCk9Ci5hcHBl
bmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1saW5lQ2hhcnQiKS5hcHBlbmQo
ImciKSxEPTNETS5zZT0KbGVjdCgiZyIpO18uYXBwZW5kKCJyZWN0Iikuc3R5bGUoIm9wYWNpdHki
LDApLF8uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJuPQp2LXggbnYtYXhpcyIpLF8uYXBwZW5k
KCJnIikuYXR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKSxfLmFwcGVuZCgiZyIpLmF0dHI9Cigi
Y2xhc3MiLCJudi1saW5lc1dyYXAiKSxfLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVn
ZW5kV3JhcCIpLF8uYXBwZT0KbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWludGVyYWN0aXZlIiks
RC5zZWxlY3QoInJlY3QiKS5hdHRyKCJ3aWR0aCIsaykuYXR0PQpyKCJoZWlnaHQiLEw+MD9MOjAp
LGwmJihpLndpZHRoKGspLEQuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmRhdHVtKG0pLmNhbGw9
CihpKSxvLnRvcCE9M0RpLmhlaWdodCgpJiYoby50b3A9M0RpLmhlaWdodCgpLEw9M0QoZnx8cGFy
c2VJbnQoeC5zdHlsZSgiaGVpZz0KaHQiKSl8fDQwMCktby50b3Atby5ib3R0b20pLE0uc2VsZWN0
KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyPQphbnNsYXRlKDAsIisgLW8u
dG9wKyIpIikpLE0uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrby5sZWZ0KyIsIitvLnRv
cCs9CiIpIikscCYmRC5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0
cmFuc2xhdGUoIitrKyIsMCkiKSxkJj0KJihzLndpZHRoKGspLmhlaWdodChMKS5tYXJnaW4oe2xl
ZnQ6by5sZWZ0LHRvcDpvLnRvcH0pLnN2Z0NvbnRhaW5lcih4KS54U2NhPQpsZShnKSxNLnNlbGVj
dCgiLm52LWludGVyYWN0aXZlIikuY2FsbChzKSksdC53aWR0aChrKS5oZWlnaHQoTCkuY29sb3Io
bS5tYXA9CihmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHx1KGUsdCl9KS5maWx0ZXIoZnVu
Y3Rpb24oZSx0KXtyZXR1cm4hbVt0XS5kaT0Kc2FibGVkfSkpO3ZhciBQPTNERC5zZWxlY3QoIi5u
di1saW5lc1dyYXAiKS5kYXR1bShtLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1PQpybiFlLmRpc2Fi
bGVkfSkpO1AuY2FsbCh0KSxjJiYobi5zY2FsZShnKS50aWNrcyhrLzEwMCkudGlja1NpemUoLUws
MCksRC5zZWw9CmVjdCgiLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0
ZSgwLCIreS5yYW5nZSgpWzBdKyIpIiksRC5zZT0KbGVjdCgiLm52LXgubnYtYXhpcyIpLmNhbGwo
bikpLGgmJihyLnNjYWxlKHkpLnRpY2tzKEwvMzYpLnRpY2tTaXplKC1rLDApLEQuPQpzZWxlY3Qo
Ii5udi15Lm52LWF4aXMiKS5jYWxsKHIpKSxpLmRpc3BhdGNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVu
Y3Rpb24oZSl7Yj0KPTNEZSxTLnN0YXRlQ2hhbmdlKGIpLE4udXBkYXRlKCl9KSxzLmRpc3BhdGNo
Lm9uKCJlbGVtZW50TW91c2Vtb3ZlIixmdW5jdGlvPQpuKGkpe3QuY2xlYXJIaWdobGlnaHRzKCk7
dmFyIGEsZixsLGM9M0RbXTttLmZpbHRlcihmdW5jdGlvbihlLHQpe3JldHVybiBlLnM9CmVyaWVz
SW5kZXg9M0R0LCFlLmRpc2FibGVkfSkuZm9yRWFjaChmdW5jdGlvbihuLHIpe2Y9M0RlLmludGVy
YWN0aXZlQmlzZWN0KD0Kbi52YWx1ZXMsaS5wb2ludFhWYWx1ZSxOLngoKSksdC5oaWdobGlnaHRQ
b2ludChyLGYsITApO3ZhciBzPTNEbi52YWx1ZXNbZl07PQppZih0eXBlb2Ygcz0zRD0zRCJ1bmRl
ZmluZWQiKXJldHVybjt0eXBlb2YgYT0zRD0zRCJ1bmRlZmluZWQiJiYoYT0zRHMpLHR5cGU9Cm9m
IGw9M0Q9M0QidW5kZWZpbmVkIiYmKGw9M0ROLnhTY2FsZSgpKE4ueCgpKHMsZikpKSxjLnB1c2go
e2tleTpuLmtleSx2YWx1ZT0KOk4ueSgpKHMsZiksY29sb3I6dShuLG4uc2VyaWVzSW5kZXgpfSl9
KTtpZihjLmxlbmd0aD4yKXt2YXIgaD0zRE4ueVNjYWxlKCkuPQppbnZlcnQoaS5tb3VzZVkpLHA9
M0RNYXRoLmFicyhOLnlTY2FsZSgpLmRvbWFpbigpWzBdLU4ueVNjYWxlKCkuZG9tYWluKClbMV09
CiksZD0zRC4wMypwLGc9M0RlLm5lYXJlc3RWYWx1ZUluZGV4KGMubWFwKGZ1bmN0aW9uKGUpe3Jl
dHVybiBlLnZhbHVlfSksaCxkKT0KO2chPTNEPTNEbnVsbCYmKGNbZ10uaGlnaGxpZ2h0PTNEITAp
fXZhciB5PTNEbi50aWNrRm9ybWF0KCkoTi54KCkoYSxmKSk7cy50PQpvb2x0aXAucG9zaXRpb24o
e2xlZnQ6bCtvLmxlZnQsdG9wOmkubW91c2VZK28udG9wfSkuY2hhcnRDb250YWluZXIoQy5wYXJl
bnQ9Ck5vZGUpLmVuYWJsZWQodikudmFsdWVGb3JtYXR0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4g
ci50aWNrRm9ybWF0KCkoZSl9KS5kYT0KdGEoe3ZhbHVlOnksc2VyaWVzOmN9KSgpLHMucmVuZGVy
R3VpZGVMaW5lKGwpfSkscy5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlPQpvdXQiLGZ1bmN0aW9u
KGUpe1MudG9vbHRpcEhpZGUoKSx0LmNsZWFySGlnaGxpZ2h0cygpfSksUy5vbigidG9vbHRpcFNo
b3ciLGY9CnVuY3Rpb24oZSl7diYmVChlLEMucGFyZW50Tm9kZSl9KSxTLm9uKCJjaGFuZ2VTdGF0
ZSIsZnVuY3Rpb24oZSl7dHlwZW9mIGUuZD0KaXNhYmxlZCE9M0QidW5kZWZpbmVkIiYmbS5sZW5n
dGg9M0Q9M0Q9M0RlLmRpc2FibGVkLmxlbmd0aCYmKG0uZm9yRWFjaChmdW5jPQp0aW9uKHQsbil7
dC5kaXNhYmxlZD0zRGUuZGlzYWJsZWRbbl19KSxiLmRpc2FibGVkPTNEZS5kaXNhYmxlZCksTi51
cGRhdGUoKX09Cil9KSxOfXZhciB0PTNEZS5tb2RlbHMubGluZSgpLG49M0RlLm1vZGVscy5heGlz
KCkscj0zRGUubW9kZWxzLmF4aXMoKSxpPTNEZT0KLm1vZGVscy5sZWdlbmQoKSxzPTNEZS5pbnRl
cmFjdGl2ZUd1aWRlbGluZSgpLG89M0R7dG9wOjMwLHJpZ2h0OjIwLGJvdHRvbTo1PQowLGxlZnQ6
NjB9LHU9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLGE9M0RudWxsLGY9M0RudWxsLGw9M0QhMCxj
PTNEITAsaD0zRCE9CjAscD0zRCExLGQ9M0QhMSx2PTNEITAsbT0zRGZ1bmN0aW9uKGUsdCxuLHIs
aSl7cmV0dXJuIjxoMz4iK2UrIjwvaDM+IisiPHA+Ij0KK24rIiBhdCAiK3QrIjwvcD4ifSxnLHks
Yj0zRHt9LHc9M0RudWxsLEU9M0QiTm8gRGF0YSBBdmFpbGFibGUuIixTPTNEZDMuZGlzPQpwYXRj
aCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlkZSIsInN0YXRlQ2hhbmdlIiwiY2hhbmdlU3RhdGUi
KSx4PTNEMDtuLm9yaWU9Cm50KCJib3R0b20iKS50aWNrUGFkZGluZyg3KSxyLm9yaWVudChwPyJy
aWdodCI6ImxlZnQiKTt2YXIgVD0zRGZ1bmN0aW9uKGkscz0KKXt2YXIgbz0zRGkucG9zWzBdKyhz
Lm9mZnNldExlZnR8fDApLHU9M0RpLnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLGE9M0RuLnRpPQpj
a0Zvcm1hdCgpKHQueCgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksZj0zRHIudGlja0Zvcm1hdCgp
KHQueSgpKGkucG9pbnQsaS49CnBvaW50SW5kZXgpKSxsPTNEbShpLnNlcmllcy5rZXksYSxmLGks
Tik7ZS50b29sdGlwLnNob3coW28sdV0sbCxudWxsLG51bGwscz0KKX07cmV0dXJuIHQuZGlzcGF0
Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5w
PQpvc1swXStvLmxlZnQsZS5wb3NbMV0rby50b3BdLFMudG9vbHRpcFNob3coZSl9KSx0LmRpc3Bh
dGNoLm9uKCJlbGVtZW50TW91c2U9Cm91dC50b29sdGlwIixmdW5jdGlvbihlKXtTLnRvb2x0aXBI
aWRlKGUpfSksUy5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7dj0KJiZlLnRvb2x0aXAuY2xl
YW51cCgpfSksTi5kaXNwYXRjaD0zRFMsTi5saW5lcz0zRHQsTi5sZWdlbmQ9M0RpLE4ueEF4aXM9
M0RuPQosTi55QXhpcz0zRHIsTi5pbnRlcmFjdGl2ZUxheWVyPTNEcyxkMy5yZWJpbmQoTix0LCJk
ZWZpbmVkIiwiaXNBcmVhIiwieCIsInk9CiIsInNpemUiLCJ4U2NhbGUiLCJ5U2NhbGUiLCJ4RG9t
YWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsImZvcmNlWCIsIj0KZm9yY2VZIiwiaW50
ZXJhY3RpdmUiLCJjbGlwRWRnZSIsImNsaXBWb3Jvbm9pIiwidXNlVm9yb25vaSIsImlkIiwiaW50
ZXJwb2xhPQp0ZSIpLE4ub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChOKSxOLm1h
cmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiA9CmFyZ3VtZW50cy5sZW5ndGg/KG8udG9wPTNEdHlw
ZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOm8udG9wLG8ucmlnaHQ9Cj0zRHR5cGVvZiBl
LnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6by5yaWdodCxvLmJvdHRvbT0zRHR5cGVvZiBl
LmJvdHRvbT0KIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOm8uYm90dG9tLG8ubGVmdD0zRHR5cGVv
ZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sPQplZnQ6by5sZWZ0LE4pOm99LE4ud2lkdGg9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0zRGUsTik6YX09CixOLmhlaWdo
dD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSxOKTpmfSxOLmNv
bG9yPTNEZnVuYz0KdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUudXRpbHMu
Z2V0Q29sb3IodCksaS5jb2xvcih1KSxOKTp1fSxOPQouc2hvd0xlZ2VuZD0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZSxOKTpsfSxOLnNob3dYQXhpcz0KPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLE4pOmN9LE4uc2hvd1lBeGlz
PTNEZnVuY3Rpb24oPQplKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsTik6aH0sTi5y
aWdodEFsaWduWUF4aXM9M0RmdW5jdGlvbihlKXtyZXQ9CnVybiBhcmd1bWVudHMubGVuZ3RoPyhw
PTNEZSxyLm9yaWVudChlPyJyaWdodCI6ImxlZnQiKSxOKTpwfSxOLnVzZUludGVyYWN0aT0KdmVH
dWlkZWxpbmU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGUsZT0z
RD0zRD0zRCEwJiYoTi5pPQpudGVyYWN0aXZlKCExKSxOLnVzZVZvcm9ub2koITEpKSxOKTpkfSxO
LnRvb2x0aXBzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3U9Cm1lbnRzLmxlbmd0aD8odj0zRGUs
Tik6dn0sTi50b29sdGlwQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubD0K
ZW5ndGg/KG09M0RlLE4pOm19LE4uc3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oYj0zRGUsTik6PQpifSxOLmRlZmF1bHRTdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyh3PTNEZSxOKTp3fSxOLm5vRGE9CnRhPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlLE4pOkV9LE4udHJhbnNpdGlvbkR1cmF0aW9u
PQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD0zRGUsTik6eH0sTn0s
ZS5tb2RlbHMubGluZVBsdXNCYXI9CkNoYXJ0PTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBUKGUpe3Jl
dHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIGw9M0RkMy5zZWxlYz0KdCh0aGlzKSxjPTNEdGhp
cyx2PTNEKGF8fHBhcnNlSW50KGwuc3R5bGUoIndpZHRoIikpfHw5NjApLXUubGVmdC11LnJpZ2h0
LE49Cj0zRChmfHxwYXJzZUludChsLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktdS50b3AtdS5ib3R0
b207VC51cGRhdGU9M0RmdW5jdGlvbj0KKCl7bC5jYWxsKFQpfSxiLmRpc2FibGVkPTNEZS5tYXAo
ZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSk7aWYoIXcpe3ZhPQpyIEM7dz0zRHt9O2Zv
cihDIGluIGIpYltDXWluc3RhbmNlb2YgQXJyYXk/d1tDXT0zRGJbQ10uc2xpY2UoMCk6d1tDXT0z
RGJbQ109Cn1pZighZXx8IWUubGVuZ3RofHwhZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUu
dmFsdWVzLmxlbmd0aH0pLmxlbmd0aCl7dj0KYXIgaz0zRGwuc2VsZWN0QWxsKCIubnYtbm9EYXRh
IikuZGF0YShbRV0pO3JldHVybiBrLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuPQphdHRyKCJjbGFz
cyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hv
ciIsIm1pZGQ9CmxlIiksay5hdHRyKCJ4Iix1LmxlZnQrdi8yKS5hdHRyKCJ5Iix1LnRvcCtOLzIp
LnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KT0KLFR9bC5zZWxlY3RBbGwoIi5udi1ub0RhdGEi
KS5yZW1vdmUoKTt2YXIgTD0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlPQouZGlzYWJs
ZWQmJmUuYmFyfSksQT0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmJhcn0pO209M0RB
LmZpbHRlcihmdW49CmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkubGVuZ3RoJiZBLmZpbHRl
cihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZD0KfSlbMF0udmFsdWVzLmxlbmd0aD90LnhT
Y2FsZSgpOm4ueFNjYWxlKCksZz0zRG4ueVNjYWxlKCkseT0zRHQueVNjYWxlKCk7dmFyPQogTz0z
RGQzLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1saW5lUGx1c0JhciIpLmRh
dGEoW2VdKSxNPTNETy49CmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52
LXdyYXAgbnYtbGluZVBsdXNCYXIiKS5hcHBlbmQoImciKT0KLF89M0RPLnNlbGVjdCgiZyIpO00u
YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14IG52LWF4aXMiKSxNLmFwcGVuZCgiZyIpPQou
YXR0cigiY2xhc3MiLCJudi15MSBudi1heGlzIiksTS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIs
Im52LXkyIG52LWF4aXMiKSw9Ck0uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1iYXJzV3Jh
cCIpLE0uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1saT0KbmVzV3JhcCIpLE0uYXBwZW5k
KCJnIikuYXR0cigiY2xhc3MiLCJudi1sZWdlbmRXcmFwIikscCYmKG8ud2lkdGgodi8yKSxfLnNl
PQpsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmRhdHVtKGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBl
Lm9yaWdpbmFsS2V5PTNEZS5vcmk9CmdpbmFsS2V5PTNEPTNEPTNEdW5kZWZpbmVkP2Uua2V5OmUu
b3JpZ2luYWxLZXksZS5rZXk9M0RlLm9yaWdpbmFsS2V5KyhlLmJhcj0KPyIgKGxlZnQgYXhpcyki
OiIgKHJpZ2h0IGF4aXMpIiksZX0pKS5jYWxsKG8pLHUudG9wIT0zRG8uaGVpZ2h0KCkmJih1LnRv
cD0KPTNEby5oZWlnaHQoKSxOPTNEKGZ8fHBhcnNlSW50KGwuc3R5bGUoImhlaWdodCIpKXx8NDAw
KS11LnRvcC11LmJvdHRvbSksXy5zPQplbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5hdHRyKCJ0cmFu
c2Zvcm0iLCJ0cmFuc2xhdGUoIit2LzIrIiwiKyAtdS50b3ArIikiKSk9CixPLmF0dHIoInRyYW5z
Zm9ybSIsInRyYW5zbGF0ZSgiK3UubGVmdCsiLCIrdS50b3ArIikiKSx0LndpZHRoKHYpLmhlaWdo
dChOKT0KLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGgoZSx0KX0p
LmZpbHRlcihmdW5jdGlvbih0LG4pe3JlPQp0dXJuIWVbbl0uZGlzYWJsZWQmJiFlW25dLmJhcn0p
KSxuLndpZHRoKHYpLmhlaWdodChOKS5jb2xvcihlLm1hcChmdW5jdGlvbig9CmUsdCl7cmV0dXJu
IGUuY29sb3J8fGgoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2Fi
bGVkJiZlWz0Kbl0uYmFyfSkpO3ZhciBEPTNEXy5zZWxlY3QoIi5udi1iYXJzV3JhcCIpLmRhdHVt
KEwubGVuZ3RoP0w6W3t2YWx1ZXM6W119XSksPQpQPTNEXy5zZWxlY3QoIi5udi1saW5lc1dyYXAi
KS5kYXR1bShBWzBdJiYhQVswXS5kaXNhYmxlZD9BOlt7dmFsdWVzOltdfV0pO2Q9CjMudHJhbnNp
dGlvbihEKS5jYWxsKG4pLGQzLnRyYW5zaXRpb24oUCkuY2FsbCh0KSxyLnNjYWxlKG0pLnRpY2tz
KHYvMTAwKS50aT0KY2tTaXplKC1OLDApLF8uc2VsZWN0KCIubnYteC5udi1heGlzIikuYXR0cigi
dHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitnLnJhPQpuZ2UoKVswXSsiKSIpLGQzLnRyYW5zaXRp
b24oXy5zZWxlY3QoIi5udi14Lm52LWF4aXMiKSkuY2FsbChyKSxpLnNjYWxlKGcpLnQ9Cmlja3Mo
Ti8zNikudGlja1NpemUoLXYsMCksZDMudHJhbnNpdGlvbihfLnNlbGVjdCgiLm52LXkxLm52LWF4
aXMiKSkuc3R5bGUoIj0Kb3BhY2l0eSIsTC5sZW5ndGg/MTowKS5jYWxsKGkpLHMuc2NhbGUoeSku
dGlja3MoTi8zNikudGlja1NpemUoTC5sZW5ndGg/MDotPQp2LDApLF8uc2VsZWN0KCIubnYteTIu
bnYtYXhpcyIpLnN0eWxlKCJvcGFjaXR5IixBLmxlbmd0aD8xOjApLmF0dHIoInRyYW5zZm89CnJt
IiwidHJhbnNsYXRlKCIrdisiLDApIiksZDMudHJhbnNpdGlvbihfLnNlbGVjdCgiLm52LXkyLm52
LWF4aXMiKSkuY2FsbChzKT0KLG8uZGlzcGF0Y2gub24oInN0YXRlQ2hhbmdlIixmdW5jdGlvbihl
KXtiPTNEZSxTLnN0YXRlQ2hhbmdlKGIpLFQudXBkYXRlKCl9PQopLFMub24oInRvb2x0aXBTaG93
IixmdW5jdGlvbihlKXtkJiZ4KGUsYy5wYXJlbnROb2RlKX0pLFMub24oImNoYW5nZVN0YXRlIiw9
CmZ1bmN0aW9uKHQpe3R5cGVvZiB0LmRpc2FibGVkIT0zRCJ1bmRlZmluZWQiJiYoZS5mb3JFYWNo
KGZ1bmN0aW9uKGUsbil7ZS5kaT0Kc2FibGVkPTNEdC5kaXNhYmxlZFtuXX0pLGIuZGlzYWJsZWQ9
M0R0LmRpc2FibGVkKSxULnVwZGF0ZSgpfSl9KSxUfXZhciB0PTNEPQplLm1vZGVscy5saW5lKCks
bj0zRGUubW9kZWxzLmhpc3RvcmljYWxCYXIoKSxyPTNEZS5tb2RlbHMuYXhpcygpLGk9M0RlLm1v
ZGU9CmxzLmF4aXMoKSxzPTNEZS5tb2RlbHMuYXhpcygpLG89M0RlLm1vZGVscy5sZWdlbmQoKSx1
PTNEe3RvcDozMCxyaWdodDo2MCxibz0KdHRvbTo1MCxsZWZ0OjYwfSxhPTNEbnVsbCxmPTNEbnVs
bCxsPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0sYz0zRGZ1bmN0aW9uPQooZSl7cmV0dXJuIGUu
eX0saD0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCkscD0zRCEwLGQ9M0QhMCx2PTNEZnVuY3Rpb24o
ZSx0LG49CixyLGkpe3JldHVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIrbisiIGF0ICIrdCsiPC9w
PiJ9LG0sZyx5LGI9M0R7fSx3PTNEbnVsbD0KLEU9M0QiTm8gRGF0YSBBdmFpbGFibGUuIixTPTNE
ZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhpZGUiLCJzdGF0PQplQ2hhbmdlIiwi
Y2hhbmdlU3RhdGUiKTtuLnBhZERhdGEoITApLHQuY2xpcEVkZ2UoITEpLnBhZERhdGEoITApLHIu
b3JpZW50KCI9CmJvdHRvbSIpLnRpY2tQYWRkaW5nKDcpLmhpZ2hsaWdodFplcm8oITEpLGkub3Jp
ZW50KCJsZWZ0Iikscy5vcmllbnQoInJpZ2h0Ij0KKTt2YXIgeD0zRGZ1bmN0aW9uKG4sbyl7dmFy
IHU9M0RuLnBvc1swXSsoby5vZmZzZXRMZWZ0fHwwKSxhPTNEbi5wb3NbMV0rKG8uPQpvZmZzZXRU
b3B8fDApLGY9M0RyLnRpY2tGb3JtYXQoKSh0LngoKShuLnBvaW50LG4ucG9pbnRJbmRleCkpLGw9
M0Qobi5zZXJpZXM9Ci5iYXI/aTpzKS50aWNrRm9ybWF0KCkodC55KCkobi5wb2ludCxuLnBvaW50
SW5kZXgpKSxjPTNEdihuLnNlcmllcy5rZXksZixsLD0KbixUKTtlLnRvb2x0aXAuc2hvdyhbdSxh
XSxjLG4udmFsdWU8MD8ibiI6InMiLG51bGwsbyl9O3JldHVybiB0LmRpc3BhdGNoLm9uPQooImVs
ZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rdS5s
ZWZ0LGUucG9zWzFdK3U9Ci50b3BdLFMudG9vbHRpcFNob3coZSl9KSx0LmRpc3BhdGNoLm9uKCJl
bGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZT0KKXtTLnRvb2x0aXBIaWRlKGUpfSks
bi5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtlPQou
cG9zPTNEW2UucG9zWzBdK3UubGVmdCxlLnBvc1sxXSt1LnRvcF0sUy50b29sdGlwU2hvdyhlKX0p
LG4uZGlzcGF0Y2gub24oImU9CmxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe1Mu
dG9vbHRpcEhpZGUoZSl9KSxTLm9uKCJ0b29sdGlwSGlkZSIsZj0KdW5jdGlvbigpe2QmJmUudG9v
bHRpcC5jbGVhbnVwKCl9KSxULmRpc3BhdGNoPTNEUyxULmxlZ2VuZD0zRG8sVC5saW5lcz0zRHQs
PQpULmJhcnM9M0RuLFQueEF4aXM9M0RyLFQueTFBeGlzPTNEaSxULnkyQXhpcz0zRHMsZDMucmVi
aW5kKFQsdCwiZGVmaW5lZCIsInM9Cml6ZSIsImNsaXBWb3Jvbm9pIiwiaW50ZXJwb2xhdGUiKSxU
Lm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoVCksVD0KLng9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGUsdC54KGUpLG4ueChlKSxUKTpsfSxULnk9
M0RmPQp1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSx0LnkoZSksbi55
KGUpLFQpOmN9LFQubWFyZ2luPTNEZnU9Cm5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8odS50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50bz0KcDp1LnRvcCx1LnJp
Z2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp1LnJpZ2h0LHUuYm90
dG9tPTNEPQp0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dS5ib3R0b20s
dS5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0Q9CiJ1bmRlZmluZWQiP2UubGVmdDp1LmxlZnQsVCk6
dX0sVC53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZz0KdGg/KGE9M0Rl
LFQpOmF9LFQuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9
M0RlLFQpOmZ9PQosVC5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhoPTNEZS51dGlscy5nZXRDb2xvcih0KSxvLmM9Cm9sb3IoaCksVCk6aH0sVC5zaG93TGVnZW5k
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLFQpOj0KcH0sVC50
b29sdGlwcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSxUKTpk
fSxULnRvb2x0aXBDPQpvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8odj0zRGUsVCk6dn0sVC5zdGF0ZT0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGI9M0RlLFQpOmJ9LFQuZGVmYXVsdFN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dT0Kcm4g
YXJndW1lbnRzLmxlbmd0aD8odz0zRGUsVCk6d30sVC5ub0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlPQpuZ3RoPyhFPTNEZSxUKTpFfSxUfSxlLm1vZGVscy5saW5lV2l0aEZv
Y3VzQ2hhcnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIGsoZSk9CntyZXR1cm4gZS5lYWNoKGZ1bmN0
aW9uKGUpe2Z1bmN0aW9uIFIoZSl7dmFyIHQ9M0QrKGU9M0Q9M0QiZSIpLG49M0R0PzE6LTEscj0K
PTNETy8zO3JldHVybiJNIisuNSpuKyIsIityKyJBNiw2IDAgMCAiK3QrIiAiKzYuNSpuKyIsIiso
cis2KSsiViIrKDIqci02KSsiPQpBNiw2IDAgMCAiK3QrIiAiKy41Km4rIiwiKzIqcisiWiIrIk0i
KzIuNSpuKyIsIisocis4KSsiViIrKDIqci04KSsiTSIrNC41Km49CisiLCIrKHIrOCkrIlYiKygy
KnItOCl9ZnVuY3Rpb24gVSgpe2EuZW1wdHkoKXx8YS5leHRlbnQodyksRi5kYXRhKFthLmVtcHR5
KD0KKT9nLmRvbWFpbigpOnddKS5lYWNoKGZ1bmN0aW9uKGUsdCl7dmFyIG49M0RnKGVbMF0pLXYu
cmFuZ2UoKVswXSxyPTNEdi5yYW5nPQplKClbMV0tZyhlWzFdKTtkMy5zZWxlY3QodGhpcykuc2Vs
ZWN0KCIubGVmdCIpLmF0dHIoIndpZHRoIixuPDA/MDpuKSxkMy5zZWw9CmVjdCh0aGlzKS5zZWxl
Y3QoIi5yaWdodCIpLmF0dHIoIngiLGcoZVsxXSkpLmF0dHIoIndpZHRoIixyPDA/MDpyKX0pfWZ1
bmN0aT0Kb24geigpe3c9M0RhLmVtcHR5KCk/bnVsbDphLmV4dGVudCgpO3ZhciBuPTNEYS5lbXB0
eSgpP2cuZG9tYWluKCk6YS5leHRlbnQoPQopO2lmKE1hdGguYWJzKG5bMF0tblsxXSk8PTNEMSly
ZXR1cm47VC5icnVzaCh7ZXh0ZW50Om4sYnJ1c2g6YX0pLFUoKTt2YXIgcz0KPTNEUC5zZWxlY3Qo
Ii5udi1mb2N1cyAubnYtbGluZXNXcmFwIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0
dXJuIWUuPQpkaXNhYmxlZH0pLm1hcChmdW5jdGlvbihlLHIpe3JldHVybntrZXk6ZS5rZXksdmFs
dWVzOmUudmFsdWVzLmZpbHRlcihmdW5jdGk9Cm9uKGUscil7cmV0dXJuIHQueCgpKGUscik+PTNE
blswXSYmdC54KCkoZSxyKTw9M0RuWzFdfSl9fSkpO3MuY2FsbCh0KSxQLnNlbD0KZWN0KCIubnYt
Zm9jdXMgLm52LXgubnYtYXhpcyIpLmNhbGwociksUC5zZWxlY3QoIi5udi1mb2N1cyAubnYteS5u
di1heGlzIikuPQpjYWxsKGkpfXZhciBTPTNEZDMuc2VsZWN0KHRoaXMpLE49M0R0aGlzLEw9M0Qo
aHx8cGFyc2VJbnQoUy5zdHlsZSgid2lkdGgiKSk9Cnx8OTYwKS1mLmxlZnQtZi5yaWdodCxBPTNE
KHB8fHBhcnNlSW50KFMuc3R5bGUoImhlaWdodCIpKXx8NDAwKS1mLnRvcC1mLmJvdD0KdG9tLWQs
Tz0zRGQtbC50b3AtbC5ib3R0b207ay51cGRhdGU9M0RmdW5jdGlvbigpe1MuY2FsbChrKX0say5j
b250YWluZXI9M0R0PQpoaXM7aWYoIWV8fCFlLmxlbmd0aHx8IWUuZmlsdGVyKGZ1bmN0aW9uKGUp
e3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGg9Cil7dmFyIE09M0RTLnNlbGVjdEFsbCgi
Lm52LW5vRGF0YSIpLmRhdGEoW3hdKTtyZXR1cm4gTS5lbnRlcigpLmFwcGVuZCgidGV4dD0KIiku
YXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgi
dGV4dC1hbmNob3IiLCJtPQppZGRsZSIpLE0uYXR0cigieCIsZi5sZWZ0K0wvMikuYXR0cigieSIs
Zi50b3ArQS8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiA9CmV9KSxrfVMuc2VsZWN0QWxsKCIu
bnYtbm9EYXRhIikucmVtb3ZlKCksdj0zRHQueFNjYWxlKCksbT0zRHQueVNjYWxlKCksZz0zRD0K
bi54U2NhbGUoKSx5PTNEbi55U2NhbGUoKTt2YXIgXz0zRFMuc2VsZWN0QWxsKCJnLm52LXdyYXAu
bnYtbGluZVdpdGhGb2N1c0NoPQphcnQiKS5kYXRhKFtlXSksRD0zRF8uZW50ZXIoKS5hcHBlbmQo
ImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1saW49CmVXaXRoRm9jdXNDaGFydCIp
LmFwcGVuZCgiZyIpLFA9M0RfLnNlbGVjdCgiZyIpO0QuYXBwZW5kKCJnIikuYXR0cigiY2xhc3Mi
LD0KIm52LWxlZ2VuZFdyYXAiKTt2YXIgSD0zREQuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJu
di1mb2N1cyIpO0guYXBwZW5kKCJnPQoiKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcyIpLEgu
YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKSw9CkguYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJudi1saW5lc1dyYXAiKTt2YXIgQj0zREQuYXBwZW5kKCJnIikuYXR0cigi
Y2xhcz0KcyIsIm52LWNvbnRleHQiKTtCLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBu
di1heGlzIiksQi5hcHBlbmQoImciKS5hPQp0dHIoImNsYXNzIiwibnYteSBudi1heGlzIiksQi5h
cHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxpbmVzV3JhcCIpLEIuYXA9CnBlbmQoImciKS5h
dHRyKCJjbGFzcyIsIm52LWJydXNoQmFja2dyb3VuZCIpLEIuYXBwZW5kKCJnIikuYXR0cigiY2xh
c3MiLCJudj0KLXggbnYtYnJ1c2giKSxiJiYodS53aWR0aChMKSxQLnNlbGVjdCgiLm52LWxlZ2Vu
ZFdyYXAiKS5kYXR1bShlKS5jYWxsKHUpLGYuPQp0b3AhPTNEdS5oZWlnaHQoKSYmKGYudG9wPTNE
dS5oZWlnaHQoKSxBPTNEKHB8fHBhcnNlSW50KFMuc3R5bGUoImhlaWdodCIpKXw9Cnw0MDApLWYu
dG9wLWYuYm90dG9tLWQpLFAuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9y
bSIsInRyYW5zbD0KYXRlKDAsIisgLWYudG9wKyIpIikpLF8uYXR0cigidHJhbnNmb3JtIiwidHJh
bnNsYXRlKCIrZi5sZWZ0KyIsIitmLnRvcCsiKSIpPQosdC53aWR0aChMKS5oZWlnaHQoQSkuY29s
b3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8YyhlLHQpfSkuZmk9Cmx0ZXIo
ZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZH0pKSxuLmRlZmluZWQodC5kZWZpbmVk
KCkpLndpZHRoKEwpLj0KaGVpZ2h0KE8pLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJu
IGUuY29sb3J8fGMoZSx0KX0pLmZpbHRlcihmdW5jdGlvPQpuKHQsbil7cmV0dXJuIWVbbl0uZGlz
YWJsZWR9KSksUC5zZWxlY3QoIi5udi1jb250ZXh0IikuYXR0cigidHJhbnNmb3JtIiwidHI9CmFu
c2xhdGUoMCwiKyhBK2YuYm90dG9tK2wudG9wKSsiKSIpO3ZhciBqPTNEUC5zZWxlY3QoIi5udi1j
b250ZXh0IC5udi1saW5lcz0KV3JhcCIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVy
biFlLmRpc2FibGVkfSkpO2QzLnRyYW5zaXRpb24oaikuY2FsPQpsKG4pLHIuc2NhbGUodikudGlj
a3MoTC8xMDApLnRpY2tTaXplKC1BLDApLGkuc2NhbGUobSkudGlja3MoQS8zNikudGlja1NpemU9
CigtTCwwKSxQLnNlbGVjdCgiLm52LWZvY3VzIC5udi14Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zv
cm0iLCJ0cmFuc2xhdGUoMCwiKz0KQSsiKSIpLGEueChnKS5vbigiYnJ1c2giLGZ1bmN0aW9uKCl7
dmFyIGU9M0RrLnRyYW5zaXRpb25EdXJhdGlvbigpO2sudHJhbnNpPQp0aW9uRHVyYXRpb24oMCks
eigpLGsudHJhbnNpdGlvbkR1cmF0aW9uKGUpfSksdyYmYS5leHRlbnQodyk7dmFyIEY9M0RQLnNl
bGU9CmN0KCIubnYtYnJ1c2hCYWNrZ3JvdW5kIikuc2VsZWN0QWxsKCJnIikuZGF0YShbd3x8YS5l
eHRlbnQoKV0pLEk9M0RGLmVudGVyKD0KKS5hcHBlbmQoImciKTtJLmFwcGVuZCgicmVjdCIpLmF0
dHIoImNsYXNzIiwibGVmdCIpLmF0dHIoIngiLDApLmF0dHIoInkiLDApPQouYXR0cigiaGVpZ2h0
IixPKSxJLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwicmlnaHQiKS5hdHRyKCJ4IiwwKS5h
dHRyKCI9CnkiLDApLmF0dHIoImhlaWdodCIsTyk7dmFyIHE9M0RQLnNlbGVjdCgiLm52LXgubnYt
YnJ1c2giKS5jYWxsKGEpO3Euc2VsZWN0QT0KbGwoInJlY3QiKS5hdHRyKCJoZWlnaHQiLE8pLHEu
c2VsZWN0QWxsKCIucmVzaXplIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsPQpSKSx6KCkscy5z
Y2FsZShnKS50aWNrcyhMLzEwMCkudGlja1NpemUoLU8sMCksUC5zZWxlY3QoIi5udi1jb250ZXh0
IC5udi14Lm49CnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIreS5yYW5n
ZSgpWzBdKyIpIiksZDMudHJhbnNpdGlvbihQLj0Kc2VsZWN0KCIubnYtY29udGV4dCAubnYteC5u
di1heGlzIikpLmNhbGwocyksby5zY2FsZSh5KS50aWNrcyhPLzM2KS50aWNrU2l6PQplKC1MLDAp
LGQzLnRyYW5zaXRpb24oUC5zZWxlY3QoIi5udi1jb250ZXh0IC5udi15Lm52LWF4aXMiKSkuY2Fs
bChvKSxQLnNlbGU9CmN0KCIubnYtY29udGV4dCAubnYteC5udi1heGlzIikuYXR0cigidHJhbnNm
b3JtIiwidHJhbnNsYXRlKDAsIit5LnJhbmdlKClbMD0KXSsiKSIpLHUuZGlzcGF0Y2gub24oInN0
YXRlQ2hhbmdlIixmdW5jdGlvbihlKXtrLnVwZGF0ZSgpfSksVC5vbigidG9vbHRpcFNoPQpvdyIs
ZnVuY3Rpb24oZSl7RSYmQyhlLE4ucGFyZW50Tm9kZSl9KX0pLGt9dmFyIHQ9M0RlLm1vZGVscy5s
aW5lKCksbj0zRGUubW89CmRlbHMubGluZSgpLHI9M0RlLm1vZGVscy5heGlzKCksaT0zRGUubW9k
ZWxzLmF4aXMoKSxzPTNEZS5tb2RlbHMuYXhpcygpLG89Cj0zRGUubW9kZWxzLmF4aXMoKSx1PTNE
ZS5tb2RlbHMubGVnZW5kKCksYT0zRGQzLnN2Zy5icnVzaCgpLGY9M0R7dG9wOjMwLHJpZz0KaHQ6
MzAsYm90dG9tOjMwLGxlZnQ6NjB9LGw9M0R7dG9wOjAscmlnaHQ6MzAsYm90dG9tOjIwLGxlZnQ6
NjB9LGM9M0RlLnV0aWxzPQouZGVmYXVsdENvbG9yKCksaD0zRG51bGwscD0zRG51bGwsZD0zRDEw
MCx2LG0sZyx5LGI9M0QhMCx3PTNEbnVsbCxFPTNEITAsUz0KPTNEZnVuY3Rpb24oZSx0LG4scixp
KXtyZXR1cm4iPGgzPiIrZSsiPC9oMz4iKyI8cD4iK24rIiBhdCAiK3QrIjwvcD4ifSx4PTNEPQoi
Tm8gRGF0YSBBdmFpbGFibGUuIixUPTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRp
cEhpZGUiLCJicnVzaCIpLE49Cj0zRDA7dC5jbGlwRWRnZSghMCksbi5pbnRlcmFjdGl2ZSghMSks
ci5vcmllbnQoImJvdHRvbSIpLnRpY2tQYWRkaW5nKDUpLGkubz0KcmllbnQoImxlZnQiKSxzLm9y
aWVudCgiYm90dG9tIikudGlja1BhZGRpbmcoNSksby5vcmllbnQoImxlZnQiKTt2YXIgQz0zRGZ1
PQpuY3Rpb24obixzKXt2YXIgbz0zRG4ucG9zWzBdKyhzLm9mZnNldExlZnR8fDApLHU9M0RuLnBv
c1sxXSsocy5vZmZzZXRUb3B8fDA9CiksYT0zRHIudGlja0Zvcm1hdCgpKHQueCgpKG4ucG9pbnQs
bi5wb2ludEluZGV4KSksZj0zRGkudGlja0Zvcm1hdCgpKHQueSgpKD0Kbi5wb2ludCxuLnBvaW50
SW5kZXgpKSxsPTNEUyhuLnNlcmllcy5rZXksYSxmLG4sayk7ZS50b29sdGlwLnNob3coW28sdV0s
bCxuPQp1bGwsbnVsbCxzKX07cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIu
dG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS49CnBvcz0zRFtlLnBvc1swXStmLmxlZnQsZS5wb3NbMV0r
Zi50b3BdLFQudG9vbHRpcFNob3coZSl9KSx0LmRpc3BhdGNoLm9uKCJlbD0KZW1lbnRNb3VzZW91
dC50b29sdGlwIixmdW5jdGlvbihlKXtULnRvb2x0aXBIaWRlKGUpfSksVC5vbigidG9vbHRpcEhp
ZGUiLGZ1PQpuY3Rpb24oKXtFJiZlLnRvb2x0aXAuY2xlYW51cCgpfSksay5kaXNwYXRjaD0zRFQs
ay5sZWdlbmQ9M0R1LGsubGluZXM9M0R0LGs9Ci5saW5lczI9M0RuLGsueEF4aXM9M0RyLGsueUF4
aXM9M0RpLGsueDJBeGlzPTNEcyxrLnkyQXhpcz0zRG8sZDMucmViaW5kKGssdD0KLCJkZWZpbmVk
IiwiaXNBcmVhIiwic2l6ZSIsInhEb21haW4iLCJ5RG9tYWluIiwieFJhbmdlIiwieVJhbmdlIiwi
Zm9yY2VYIiwiPQpmb3JjZVkiLCJpbnRlcmFjdGl2ZSIsImNsaXBFZGdlIiwiY2xpcFZvcm9ub2ki
LCJpZCIpLGsub3B0aW9ucz0zRGUudXRpbHMub3A9CnRpb25zRnVuYy5iaW5kKGspLGsueD0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LngoZSksbi54KGUpLD0Kayk6dC54
fSxrLnk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC55KGUpLG4ueShl
KSxrKTp0Lnl9LGsuPQptYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oZi50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGU9CmZpbmVkIj9lLnRvcDpmLnRvcCxmLnJp
Z2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDpmLnJpZ2h0LD0KZi5i
b3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206Zi5ib3R0b20s
Zi5sZWZ0PTNEdHlwZW9mPQogZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDpmLmxlZnQsayk6
Zn0say5tYXJnaW4yPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGE9CnJndW1lbnRzLmxlbmd0aD8obD0z
RGUsayk6bH0say53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPz0K
KGg9M0RlLGspOmh9LGsuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHA9M0RlLGspOnB9LGsuPQpoZWlnaHQyPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGQ9M0RlLGspOmR9LGsuY29sb3I9M0RmdW5jdGk9Cm9uKHQpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhjPTNEZS51dGlscy5nZXRDb2xvcih0KSx1LmNvbG9yKGMpLGspOmN9LGsu
cz0KaG93TGVnZW5kPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9M0Rl
LGspOmJ9LGsudG9vbHRpcHM9M0RmPQp1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhFPTNEZSxrKTpFfSxrLnRvb2x0aXBDb250ZW50PTNEZnVuY3Rpb249CihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oUz0zRGUsayk6U30say5pbnRlcnBvbGF0ZT0zRGZ1bmN0aW9uKGUpe3Jl
dHVybj0KIGFyZ3VtZW50cy5sZW5ndGg/KHQuaW50ZXJwb2xhdGUoZSksbi5pbnRlcnBvbGF0ZShl
KSxrKTp0LmludGVycG9sYXRlKCl9LGsuPQpub0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oeD0zRGUsayk6eH0say54VGlja0Zvcm1hdD0zRGY9CnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHIudGlja0Zvcm1hdChlKSxzLnRpY2tGb3JtYXQoZSks
ayk6ci50aT0KY2tGb3JtYXQoKX0say55VGlja0Zvcm1hdD0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhpLnRpY2tGb3JtPQphdChlKSxvLnRpY2tGb3JtYXQoZSksayk6aS50
aWNrRm9ybWF0KCl9LGsuYnJ1c2hFeHRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm49CiBhcmd1bWVu
dHMubGVuZ3RoPyh3PTNEZSxrKTp3fSxrLnRyYW5zaXRpb25EdXJhdGlvbj0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcj0KZ3VtZW50cy5sZW5ndGg/KE49M0RlLGspOk59LGt9LGUubW9kZWxzLmxpbmVQ
bHVzQmFyV2l0aEZvY3VzQ2hhcnQ9M0RmdW5jdGlvPQpuKCl7ZnVuY3Rpb24gQihlKXtyZXR1cm4g
ZS5lYWNoKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHR0KGUpe3ZhciB0PTNEKyhlPTNEPQo9M0QiZSIp
LG49M0R0PzE6LTEscj0zREkvMztyZXR1cm4iTSIrLjUqbisiLCIrcisiQTYsNiAwIDAgIit0KyIg
Iis2LjUqbisiLCI9Cisocis2KSsiViIrKDIqci02KSsiQTYsNiAwIDAgIit0KyIgIisuNSpuKyIs
IisyKnIrIloiKyJNIisyLjUqbisiLCIrKHIrOCkrIj0KViIrKDIqci04KSsiTSIrNC41Km4rIiwi
KyhyKzgpKyJWIisoMipyLTgpfWZ1bmN0aW9uIG50KCl7aC5lbXB0eSgpfHxoLmV4dGVuPQp0KHgp
LFkuZGF0YShbaC5lbXB0eSgpP2suZG9tYWluKCk6eF0pLmVhY2goZnVuY3Rpb24oZSx0KXt2YXIg
bj0zRGsoZVswXSktay49CnJhbmdlKClbMF0scj0zRGsucmFuZ2UoKVsxXS1rKGVbMV0pO2QzLnNl
bGVjdCh0aGlzKS5zZWxlY3QoIi5sZWZ0IikuYXR0cigidz0KaWR0aCIsbjwwPzA6biksZDMuc2Vs
ZWN0KHRoaXMpLnNlbGVjdCgiLnJpZ2h0IikuYXR0cigieCIsayhlWzFdKSkuYXR0cigid2lkPQp0
aCIscjwwPzA6cil9KX1mdW5jdGlvbiBydCgpe3g9M0RoLmVtcHR5KCk/bnVsbDpoLmV4dGVudCgp
LFM9M0RoLmVtcHR5KCk/ay49CmRvbWFpbigpOmguZXh0ZW50KCksRC5icnVzaCh7ZXh0ZW50OlMs
YnJ1c2g6aH0pLG50KCksci53aWR0aChqKS5oZWlnaHQoRikuYz0Kb2xvcihlLm1hcChmdW5jdGlv
bihlLHQpe3JldHVybiBlLmNvbG9yfHx3KGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1
PQpybiFlW25dLmRpc2FibGVkJiZlW25dLmJhcn0pKSx0LndpZHRoKGopLmhlaWdodChGKS5jb2xv
cihlLm1hcChmdW5jdGlvbihlLHQ9Cil7cmV0dXJuIGUuY29sb3J8fHcoZSx0KX0pLmZpbHRlcihm
dW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkJiYhZVtuXT0KLmJhcn0pKTt2YXIgbj0z
RCQuc2VsZWN0KCIubnYtZm9jdXMgLm52LWJhcnNXcmFwIikuZGF0dW0oUi5sZW5ndGg/Ui5tYXAo
ZnVuPQpjdGlvbihlLHQpe3JldHVybntrZXk6ZS5rZXksdmFsdWVzOmUudmFsdWVzLmZpbHRlcihm
dW5jdGlvbihlLHQpe3JldHVybiByLng9CigpKGUsdCk+PTNEU1swXSYmci54KCkoZSx0KTw9M0RT
WzFdfSl9fSk6W3t2YWx1ZXM6W119XSksaT0zRCQuc2VsZWN0KCIubnYtZj0Kb2N1cyAubnYtbGlu
ZXNXcmFwIikuZGF0dW0oVVswXS5kaXNhYmxlZD9be3ZhbHVlczpbXX1dOlUubWFwKGZ1bmN0aW9u
KGUsbil7PQpyZXR1cm57a2V5OmUua2V5LHZhbHVlczplLnZhbHVlcy5maWx0ZXIoZnVuY3Rpb24o
ZSxuKXtyZXR1cm4gdC54KCkoZSxuKT49M0Q9ClNbMF0mJnQueCgpKGUsbik8PTNEU1sxXX0pfX0p
KTtSLmxlbmd0aD9DPTNEci54U2NhbGUoKTpDPTNEdC54U2NhbGUoKSxzLnNjYT0KbGUoQykudGlj
a3Moai8xMDApLnRpY2tTaXplKC1GLDApLHMuZG9tYWluKFtNYXRoLmNlaWwoU1swXSksTWF0aC5m
bG9vcihTWzFdPQopXSksJC5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5jYWxsKHMpLG4uY2FsbChy
KSxpLmNhbGwodCksJC5zZWxlY3QoIi5udi1mb2M9CnVzIC5udi14Lm52LWF4aXMiKS5hdHRyKCJ0
cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK0wucmFuZ2UoKVswXSsiKSIpLHUuc2NhbD0KZShMKS50
aWNrcyhGLzM2KS50aWNrU2l6ZSgtaiwwKSwkLnNlbGVjdCgiLm52LWZvY3VzIC5udi15MS5udi1h
eGlzIikuc3R5bGUoPQoib3BhY2l0eSIsUi5sZW5ndGg/MTowKSxhLnNjYWxlKEEpLnRpY2tzKEYv
MzYpLnRpY2tTaXplKFIubGVuZ3RoPzA6LWosMCksJC49CnNlbGVjdCgiLm52LWZvY3VzIC5udi15
Mi5udi1heGlzIikuc3R5bGUoIm9wYWNpdHkiLFUubGVuZ3RoPzE6MCkuYXR0cigidHJhbj0Kc2Zv
cm0iLCJ0cmFuc2xhdGUoIitDLnJhbmdlKClbMV0rIiwwKSIpLCQuc2VsZWN0KCIubnYtZm9jdXMg
Lm52LXkxLm52LWF4aXMiPQopLmNhbGwodSksJC5zZWxlY3QoIi5udi1mb2N1cyAubnYteTIubnYt
YXhpcyIpLmNhbGwoYSl9dmFyIE49M0RkMy5zZWxlY3QodGg9CmlzKSxQPTNEdGhpcyxqPTNEKHZ8
fHBhcnNlSW50KE4uc3R5bGUoIndpZHRoIikpfHw5NjApLXAubGVmdC1wLnJpZ2h0LEY9M0QobT0K
fHxwYXJzZUludChOLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktcC50b3AtcC5ib3R0b20tZyxJPTNE
Zy1kLnRvcC1kLmJvdHRvbTtCPQoudXBkYXRlPTNEZnVuY3Rpb24oKXtOLmNhbGwoQil9LEIuY29u
dGFpbmVyPTNEdGhpcztpZighZXx8IWUubGVuZ3RofHwhZS5maWw9CnRlcihmdW5jdGlvbihlKXty
ZXR1cm4gZS52YWx1ZXMubGVuZ3RofSkubGVuZ3RoKXt2YXIgcT0zRE4uc2VsZWN0QWxsKCIubnYt
bj0Kb0RhdGEiKS5kYXRhKFtfXSk7cmV0dXJuIHEuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRy
KCJjbGFzcyIsIm52ZDMgbnYtbm9EPQphdGEiKS5hdHRyKCJkeSIsIi0uN2VtIikuc3R5bGUoInRl
eHQtYW5jaG9yIiwibWlkZGxlIikscS5hdHRyKCJ4IixwLmxlZnQrai89CjIpLmF0dHIoInkiLHAu
dG9wK0YvMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLEJ9Ti5zZWxlY3RBbGwoIi5udi1u
b0RhdD0KYSIpLnJlbW92ZSgpO3ZhciBSPTNEZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUu
ZGlzYWJsZWQmJmUuYmFyfSksVT0zRGUuPQpmaWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuYmFy
fSk7Qz0zRHIueFNjYWxlKCksaz0zRG8uc2NhbGUoKSxMPTNEci55U2NhbGU9CigpLEE9M0R0LnlT
Y2FsZSgpLE89M0RpLnlTY2FsZSgpLE09M0RuLnlTY2FsZSgpO3ZhciB6PTNEZS5maWx0ZXIoZnVu
Y3Rpb24oZT0KKXtyZXR1cm4hZS5kaXNhYmxlZCYmZS5iYXJ9KS5tYXAoZnVuY3Rpb24oZSl7cmV0
dXJuIGUudmFsdWVzLm1hcChmdW5jdGlvbihlPQosdCl7cmV0dXJue3g6eShlLHQpLHk6YihlLHQp
fX0pfSksVz0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGU9CmQmJiFlLmJh
cn0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubWFwKGZ1bmN0aW9uKGUsdCl7cmV0
dXJue3g6eShlLD0KdCkseTpiKGUsdCl9fSl9KTtDLnJhbmdlKFswLGpdKSxrLmRvbWFpbihkMy5l
eHRlbnQoZDMubWVyZ2Uoei5jb25jYXQoVykpLGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGUueH0pKS5y
YW5nZShbMCxqXSk7dmFyIFg9M0ROLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LWxpbmU9ClBsdXNC
YXIiKS5kYXRhKFtlXSksVj0zRFguZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52
ZDMgbnYtd3JhcCBudj0KLWxpbmVQbHVzQmFyIikuYXBwZW5kKCJnIiksJD0zRFguc2VsZWN0KCJn
Iik7Vi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52PQotbGVnZW5kV3JhcCIpO3ZhciBKPTNE
Vi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWZvY3VzIik7Si5hcHBlbmQoImciKS49CmF0
dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksSi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52
LXkxIG52LWF4aXMiKSxKLj0KYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15MiBudi1heGlz
IiksSi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWJhPQpyc1dyYXAiKSxKLmFwcGVuZCgi
ZyIpLmF0dHIoImNsYXNzIiwibnYtbGluZXNXcmFwIik7dmFyIEs9M0RWLmFwcGVuZCgiZyIpLmE9
CnR0cigiY2xhc3MiLCJudi1jb250ZXh0Iik7Sy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52
LXggbnYtYXhpcyIpLEsuYXBwZT0KbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkxIG52LWF4aXMi
KSxLLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteTIgbnYtPQpheGlzIiksSy5hcHBlbmQo
ImciKS5hdHRyKCJjbGFzcyIsIm52LWJhcnNXcmFwIiksSy5hcHBlbmQoImciKS5hdHRyKCJjbGFz
cyI9CiwibnYtbGluZXNXcmFwIiksSy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWJydXNo
QmFja2dyb3VuZCIpLEsuYXBwZW5kKD0KImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYnJ1c2gi
KSxFJiYoYy53aWR0aChqLzIpLCQuc2VsZWN0KCIubnYtbGVnZW5kV3JhPQpwIikuZGF0dW0oZS5t
YXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUub3JpZ2luYWxLZXk9M0RlLm9yaWdpbmFsS2V5PTNEPTNE
PTNEdW49CmRlZmluZWQ/ZS5rZXk6ZS5vcmlnaW5hbEtleSxlLmtleT0zRGUub3JpZ2luYWxLZXkr
KGUuYmFyPyIgKGxlZnQgYXhpcykiOiIgKD0KcmlnaHQgYXhpcykiKSxlfSkpLmNhbGwoYykscC50
b3AhPTNEYy5oZWlnaHQoKSYmKHAudG9wPTNEYy5oZWlnaHQoKSxGPTNEKG18PQp8cGFyc2VJbnQo
Ti5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXAudG9wLXAuYm90dG9tLWcpLCQuc2VsZWN0KCIubnYt
bGVnZW5kV3I9CmFwIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrai8yKyIsIisgLXAu
dG9wKyIpIikpLFguYXR0cigidHJhbnNmb3JtIj0KLCJ0cmFuc2xhdGUoIitwLmxlZnQrIiwiK3Au
dG9wKyIpIiksaS53aWR0aChqKS5oZWlnaHQoSSkuY29sb3IoZS5tYXAoZnVuY3RpPQpvbihlLHQp
e3JldHVybiBlLmNvbG9yfHx3KGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtu
XS5kaXNhYmxlZCY9CiZlW25dLmJhcn0pKSxuLndpZHRoKGopLmhlaWdodChJKS5jb2xvcihlLm1h
cChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfD0KfHcoZSx0KX0pLmZpbHRlcihmdW5jdGlv
bih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkJiYhZVtuXS5iYXJ9KSk7dmFyIFE9M0QkPQouc2Vs
ZWN0KCIubnYtY29udGV4dCAubnYtYmFyc1dyYXAiKS5kYXR1bShSLmxlbmd0aD9SOlt7dmFsdWVz
OltdfV0pLEc9M0QkLnM9CmVsZWN0KCIubnYtY29udGV4dCAubnYtbGluZXNXcmFwIikuZGF0dW0o
VVswXS5kaXNhYmxlZD9be3ZhbHVlczpbXX1dOlUpOyQucz0KZWxlY3QoIi5udi1jb250ZXh0Iiku
YXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIisoRitwLmJvdHRvbStkLnRvcCkrIikiPQop
LFEuY2FsbChpKSxHLmNhbGwobiksaC54KGspLm9uKCJicnVzaCIscnQpLHgmJmguZXh0ZW50KHgp
O3ZhciBZPTNEJC5zZWxlY3Q9CigiLm52LWJydXNoQmFja2dyb3VuZCIpLnNlbGVjdEFsbCgiZyIp
LmRhdGEoW3h8fGguZXh0ZW50KCldKSxaPTNEWS5lbnRlcigpLj0KYXBwZW5kKCJnIik7Wi5hcHBl
bmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsImxlZnQiKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IiwwKS5h
PQp0dHIoImhlaWdodCIsSSksWi5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsInJpZ2h0Iiku
YXR0cigieCIsMCkuYXR0cigieSI9CiwwKS5hdHRyKCJoZWlnaHQiLEkpO3ZhciBldD0zRCQuc2Vs
ZWN0KCIubnYteC5udi1icnVzaCIpLmNhbGwoaCk7ZXQuc2VsZWN0QT0KbGwoInJlY3QiKS5hdHRy
KCJoZWlnaHQiLEkpLGV0LnNlbGVjdEFsbCgiLnJlc2l6ZSIpLmFwcGVuZCgicGF0aCIpLmF0dHIo
ImQiPQosdHQpLG8udGlja3Moai8xMDApLnRpY2tTaXplKC1JLDApLCQuc2VsZWN0KCIubnYtY29u
dGV4dCAubnYteC5udi1heGlzIikuYXQ9CnRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK08u
cmFuZ2UoKVswXSsiKSIpLCQuc2VsZWN0KCIubnYtY29udGV4dCAubnYteD0KLm52LWF4aXMiKS5j
YWxsKG8pLGYuc2NhbGUoTykudGlja3MoSS8zNikudGlja1NpemUoLWosMCksJC5zZWxlY3QoIi5u
di1jb250PQpleHQgLm52LXkxLm52LWF4aXMiKS5zdHlsZSgib3BhY2l0eSIsUi5sZW5ndGg/MTow
KS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2w9CmF0ZSgwLCIray5yYW5nZSgpWzBdKyIpIiksJC5z
ZWxlY3QoIi5udi1jb250ZXh0IC5udi15MS5udi1heGlzIikuY2FsbChmKSxsLj0Kc2NhbGUoTSku
dGlja3MoSS8zNikudGlja1NpemUoUi5sZW5ndGg/MDotaiwwKSwkLnNlbGVjdCgiLm52LWNvbnRl
eHQgLm52LXkyPQoubnYtYXhpcyIpLnN0eWxlKCJvcGFjaXR5IixVLmxlbmd0aD8xOjApLmF0dHIo
InRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2sucmE9Cm5nZSgpWzFdKyIsMCkiKSwkLnNlbGVjdCgi
Lm52LWNvbnRleHQgLm52LXkyLm52LWF4aXMiKS5jYWxsKGwpLGMuZGlzcGF0Y2gubz0Kbigic3Rh
dGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe0IudXBkYXRlKCl9KSxELm9uKCJ0b29sdGlwU2hvdyIsZnVu
Y3Rpb24oZSl7VCYmPQpIKGUsUC5wYXJlbnROb2RlKX0pLHJ0KCl9KSxCfXZhciB0PTNEZS5tb2Rl
bHMubGluZSgpLG49M0RlLm1vZGVscy5saW5lKCkscj0KPTNEZS5tb2RlbHMuaGlzdG9yaWNhbEJh
cigpLGk9M0RlLm1vZGVscy5oaXN0b3JpY2FsQmFyKCkscz0zRGUubW9kZWxzLmF4aXMoPQopLG89
M0RlLm1vZGVscy5heGlzKCksdT0zRGUubW9kZWxzLmF4aXMoKSxhPTNEZS5tb2RlbHMuYXhpcygp
LGY9M0RlLm1vZGVscy49CmF4aXMoKSxsPTNEZS5tb2RlbHMuYXhpcygpLGM9M0RlLm1vZGVscy5s
ZWdlbmQoKSxoPTNEZDMuc3ZnLmJydXNoKCkscD0zRHt0bz0KcDozMCxyaWdodDozMCxib3R0b206
MzAsbGVmdDo2MH0sZD0zRHt0b3A6MCxyaWdodDozMCxib3R0b206MjAsbGVmdDo2MH0sdj0KPTNE
bnVsbCxtPTNEbnVsbCxnPTNEMTAwLHk9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS54fSxiPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuPQogZS55fSx3PTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxFPTNEITAs
Uyx4PTNEbnVsbCxUPTNEITAsTj0zRGZ1bmN0aW9uKGUsdCw9Cm4scixpKXtyZXR1cm4iPGgzPiIr
ZSsiPC9oMz4iKyI8cD4iK24rIiBhdCAiK3QrIjwvcD4ifSxDLGssTCxBLE8sTSxfPTNEIk5vID0K
RGF0YSBBdmFpbGFibGUuIixEPTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhp
ZGUiLCJicnVzaCIpLFA9M0QwPQo7dC5jbGlwRWRnZSghMCksbi5pbnRlcmFjdGl2ZSghMSkscy5v
cmllbnQoImJvdHRvbSIpLnRpY2tQYWRkaW5nKDUpLHUub3JpZW49CnQoImxlZnQiKSxhLm9yaWVu
dCgicmlnaHQiKSxvLm9yaWVudCgiYm90dG9tIikudGlja1BhZGRpbmcoNSksZi5vcmllbnQoImxl
Zj0KdCIpLGwub3JpZW50KCJyaWdodCIpO3ZhciBIPTNEZnVuY3Rpb24obixyKXtTJiYobi5wb2lu
dEluZGV4Kz0zRE1hdGguY2VpbChTPQpbMF0pKTt2YXIgaT0zRG4ucG9zWzBdKyhyLm9mZnNldExl
ZnR8fDApLG89M0RuLnBvc1sxXSsoci5vZmZzZXRUb3B8fDApLGY9M0Q9CnMudGlja0Zvcm1hdCgp
KHQueCgpKG4ucG9pbnQsbi5wb2ludEluZGV4KSksbD0zRChuLnNlcmllcy5iYXI/dTphKS50aWNr
Rm9ybT0KYXQoKSh0LnkoKShuLnBvaW50LG4ucG9pbnRJbmRleCkpLGM9M0ROKG4uc2VyaWVzLmtl
eSxmLGwsbixCKTtlLnRvb2x0aXAuc2hvPQp3KFtpLG9dLGMsbi52YWx1ZTwwPyJuIjoicyIsbnVs
bCxyKX07cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXI9Ci50b29sdGlwIixm
dW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXStwLmxlZnQsZS5wb3NbMV0rcC50b3BdLEQudG9v
bHRpcFNobz0KdyhlKX0pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixm
dW5jdGlvbihlKXtELnRvb2x0aXBIaWRlKGUpPQp9KSxyLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91
c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK3A9Ci5sZWZ0LGUu
cG9zWzFdK3AudG9wXSxELnRvb2x0aXBTaG93KGUpfSksci5kaXNwYXRjaC5vbigiZWxlbWVudE1v
dXNlb3V0LnRvbz0KbHRpcCIsZnVuY3Rpb24oZSl7RC50b29sdGlwSGlkZShlKX0pLEQub24oInRv
b2x0aXBIaWRlIixmdW5jdGlvbigpe1QmJmUudG9vPQpsdGlwLmNsZWFudXAoKX0pLEIuZGlzcGF0
Y2g9M0RELEIubGVnZW5kPTNEYyxCLmxpbmVzPTNEdCxCLmxpbmVzMj0zRG4sQi5iYXI9CnM9M0Ry
LEIuYmFyczI9M0RpLEIueEF4aXM9M0RzLEIueDJBeGlzPTNEbyxCLnkxQXhpcz0zRHUsQi55MkF4
aXM9M0RhLEIueTNBeD0KaXM9M0RmLEIueTRBeGlzPTNEbCxkMy5yZWJpbmQoQix0LCJkZWZpbmVk
Iiwic2l6ZSIsImNsaXBWb3Jvbm9pIiwiaW50ZXJwb2xhPQp0ZSIpLEIub3B0aW9ucz0zRGUudXRp
bHMub3B0aW9uc0Z1bmMuYmluZChCKSxCLng9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW09CmVu
dHMubGVuZ3RoPyh5PTNEZSx0LngoZSksci54KGUpLEIpOnl9LEIueT0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubD0KZW5ndGg/KGI9M0RlLHQueShlKSxyLnkoZSksQik6Yn0sQi5tYXJn
aW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlPQpuZ3RoPyhwLnRvcD0zRHR5cGVv
ZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDpwLnRvcCxwLnJpZ2h0PTNEdHlwZW9mIGUucmk9
CmdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OnAucmlnaHQscC5ib3R0b209M0R0eXBlb2YgZS5i
b3R0b20hPTNEInVuZGVmaW5lZD0KIj9lLmJvdHRvbTpwLmJvdHRvbSxwLmxlZnQ9M0R0eXBlb2Yg
ZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDpwLmxlZnQsQik6PQpwfSxCLndpZHRoPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9M0RlLEIpOnZ9LEIuaGVpZ2h0PTNE
ZnU9Cm5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0zRGUsQik6bX0sQi5jb2xv
cj0zRGZ1bmN0aW9uKHQpe3JldHVybj0KIGFyZ3VtZW50cy5sZW5ndGg/KHc9M0RlLnV0aWxzLmdl
dENvbG9yKHQpLGMuY29sb3IodyksQik6d30sQi5zaG93TGVnZW5kPTNEPQpmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT0zRGUsQik6RX0sQi50b29sdGlwcz0zRGZ1bmN0aW9u
KGUpe3I9CmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFQ9M0RlLEIpOlR9LEIudG9vbHRpcENvbnRl
bnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYT0Kcmd1bWVudHMubGVuZ3RoPyhOPTNEZSxCKTpOfSxC
Lm5vRGF0YT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPQo/KF89M0RlLEIp
Ol99LEIuYnJ1c2hFeHRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
eD0zRGUsQik9Cjp4fSxCfSxlLm1vZGVscy5tdWx0aUJhcj0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24g
QyhlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKD0KZSl7dmFyIGc9M0RuLXQubGVmdC10LnJpZ2h0
LEM9M0RyLXQudG9wLXQuYm90dG9tLGs9M0RkMy5zZWxlY3QodGhpcyk7ZCYmZS5sPQplbmd0aCYm
KGQ9M0Rbe3ZhbHVlczplWzBdLnZhbHVlcy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJue3g6ZS54LHk6
MCxzZXJpZXM6ZS49CnNlcmllcyxzaXplOi4wMX19KX1dKSxjJiYoZT0zRGQzLmxheW91dC5zdGFj
aygpLm9mZnNldChoKS52YWx1ZXMoZnVuY3Rpb24oZT0KKXtyZXR1cm4gZS52YWx1ZXN9KS55KGEp
KCFlLmxlbmd0aCYmZD9kOmUpKSxlLmZvckVhY2goZnVuY3Rpb24oZSx0KXtlLnZhbHVlPQpzLmZv
ckVhY2goZnVuY3Rpb24oZSl7ZS5zZXJpZXM9M0R0fSl9KSxjJiZlWzBdLnZhbHVlcy5tYXAoZnVu
Y3Rpb24odCxuKXt2YXI9CiByPTNEMCxpPTNEMDtlLm1hcChmdW5jdGlvbihlKXt2YXIgdD0zRGUu
dmFsdWVzW25dO3Quc2l6ZT0zRE1hdGguYWJzKHQueSksdD0KLnk8MD8odC55MT0zRGksaS09M0R0
LnNpemUpOih0LnkxPTNEdC5zaXplK3Iscis9M0R0LnNpemUpfSl9KTt2YXIgTD0zRHkmJmI/PQpb
XTplLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubWFwKGZ1bmN0aW9uKGUsdCl7cmV0
dXJue3g6dShlLHQpLHk6YSg9CmUsdCkseTA6ZS55MCx5MTplLnkxfX0pfSk7aS5kb21haW4oeXx8
ZDMubWVyZ2UoTCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLj0KeH0pKS5yYW5nZUJhbmRzKHd8
fFswLGddLFMpLHMuZG9tYWluKGJ8fGQzLmV4dGVudChkMy5tZXJnZShMKS5tYXAoZnVuY3Rpb24o
PQplKXtyZXR1cm4gYz9lLnk+MD9lLnkxOmUueTErZS55OmUueX0pLmNvbmNhdChmKSkpLnJhbmdl
KEV8fFtDLDBdKSxpLmRvbWFpbig9CilbMF09M0Q9M0Q9M0RpLmRvbWFpbigpWzFdJiYoaS5kb21h
aW4oKVswXT9pLmRvbWFpbihbaS5kb21haW4oKVswXS1pLmRvbWFpbj0KKClbMF0qLjAxLGkuZG9t
YWluKClbMV0raS5kb21haW4oKVsxXSouMDFdKTppLmRvbWFpbihbLTEsMV0pKSxzLmRvbWFpbigp
WzBdPQo9M0Q9M0Q9M0RzLmRvbWFpbigpWzFdJiYocy5kb21haW4oKVswXT9zLmRvbWFpbihbcy5k
b21haW4oKVswXStzLmRvbWFpbigpWzA9Cl0qLjAxLHMuZG9tYWluKClbMV0tcy5kb21haW4oKVsx
XSouMDFdKTpzLmRvbWFpbihbLTEsMV0pKSxUPTNEVHx8aSxOPTNETnx8cz0KO3ZhciBBPTNEay5z
ZWxlY3RBbGwoImcubnYtd3JhcC5udi1tdWx0aWJhciIpLmRhdGEoW2VdKSxPPTNEQS5lbnRlcigp
LmFwcGVuPQpkKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbXVsdGliYXIiKSxN
PTNETy5hcHBlbmQoImRlZnMiKSxfPTNETy49CmFwcGVuZCgiZyIpLEQ9M0RBLnNlbGVjdCgiZyIp
O18uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1ncm91cHMiKSxBLmF0dD0KcigidHJhbnNm
b3JtIiwidHJhbnNsYXRlKCIrdC5sZWZ0KyIsIit0LnRvcCsiKSIpLE0uYXBwZW5kKCJjbGlwUGF0
aCIpLmF0dHIoPQoiaWQiLCJudi1lZGdlLWNsaXAtIitvKS5hcHBlbmQoInJlY3QiKSxBLnNlbGVj
dCgiI252LWVkZ2UtY2xpcC0iK28rIiByZWN0Iik9Ci5hdHRyKCJ3aWR0aCIsZykuYXR0cigiaGVp
Z2h0IixDKSxELmF0dHIoImNsaXAtcGF0aCIsbD8idXJsKCNudi1lZGdlLWNsaXAtIj0KK28rIiki
OiIiKTt2YXIgUD0zREEuc2VsZWN0KCIubnYtZ3JvdXBzIikuc2VsZWN0QWxsKCIubnYtZ3JvdXAi
KS5kYXRhKGZ1bmN0PQppb24oZSl7cmV0dXJuIGV9LGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR9KTtQ
LmVudGVyKCkuYXBwZW5kKCJnIikuc3R5bGUoInN0cm89CmtlLW9wYWNpdHkiLDFlLTYpLnN0eWxl
KCJmaWxsLW9wYWNpdHkiLDFlLTYpLFAuZXhpdCgpLnNlbGVjdEFsbCgicmVjdC5udi1iYT0KciIp
LmF0dHIoInkiLGZ1bmN0aW9uKGUpe3JldHVybiBjP04oZS55MCk6TigwKX0pLmF0dHIoImhlaWdo
dCIsMCkucmVtb3ZlKCksPQpQLmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiJudi1n
cm91cCBudi1zZXJpZXMtIit0fSkuY2xhc3NlZCgiaG92ZXI9CiIsZnVuY3Rpb24oZSl7cmV0dXJu
IGUuaG92ZXJ9KS5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChlLHQpfSkucz0K
dHlsZSgic3Ryb2tlIixmdW5jdGlvbihlLHQpe3JldHVybiBwKGUsdCl9KSxQLnN0eWxlKCJzdHJv
a2Utb3BhY2l0eSIsMSkuc3R5PQpsZSgiZmlsbC1vcGFjaXR5IiwuNzUpO3ZhciBIPTNEUC5zZWxl
Y3RBbGwoInJlY3QubnYtYmFyIikuZGF0YShmdW5jdGlvbih0KXs9CnJldHVybiBkJiYhZS5sZW5n
dGg/ZC52YWx1ZXM6dC52YWx1ZXN9KTtILmV4aXQoKS5yZW1vdmUoKTt2YXIgQj0zREguZW50ZXIo
KT0KLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiBhKGUs
dCk8MD8ibnYtYmFyIG5lZ2F0aXZlPQoiOiJudi1iYXIgcG9zaXRpdmUifSkuYXR0cigieCIsZnVu
Y3Rpb24odCxuLHIpe3JldHVybiBjPzA6cippLnJhbmdlQmFuZCgpL2U9Ci5sZW5ndGh9KS5hdHRy
KCJ5IixmdW5jdGlvbihlKXtyZXR1cm4gTihjP2UueTA6MCl9KS5hdHRyKCJoZWlnaHQiLDApLmF0
dHIoIj0Kd2lkdGgiLGkucmFuZ2VCYW5kKCkvKGM/MTplLmxlbmd0aCkpLmF0dHIoInRyYW5zZm9y
bSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4iPQp0cmFuc2xhdGUoIitpKHUoZSx0KSkrIiwwKSJ9KTtI
LnN0eWxlKCJmaWxsIixmdW5jdGlvbihlLHQsbil7cmV0dXJuIHAoZSxuLHQ9Cil9KS5zdHlsZSgi
c3Ryb2tlIixmdW5jdGlvbihlLHQsbil7cmV0dXJuIHAoZSxuLHQpfSkub24oIm1vdXNlb3ZlciIs
ZnVuY3Rpbz0Kbih0LG4pe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIsITApLHguZWxl
bWVudE1vdXNlb3Zlcih7dmFsdWU6YSh0LG4pPQoscG9pbnQ6dCxzZXJpZXM6ZVt0LnNlcmllc10s
cG9zOltpKHUodCxuKSkraS5yYW5nZUJhbmQoKSooYz9lLmxlbmd0aC8yOnQuc2U9CnJpZXMrLjUp
L2UubGVuZ3RoLHMoYSh0LG4pKyhjP3QueTA6MCkpXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6
dC5zZXJpZXMsZT0KOmQzLmV2ZW50fSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKHQsbil7ZDMu
c2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhPQoxKSx4LmVsZW1lbnRNb3VzZW91dCh7dmFs
dWU6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvaW50SW5kZXg6biw9CnNlcmll
c0luZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnR9KX0pLm9uKCJjbGljayIsZnVuY3Rpb24odCxuKXt4
LmVsZW1lbnRDbGljaz0KKHt2YWx1ZTphKHQsbikscG9pbnQ6dCxzZXJpZXM6ZVt0LnNlcmllc10s
cG9zOltpKHUodCxuKSkraS5yYW5nZUJhbmQoKSooYz9lPQoubGVuZ3RoLzI6dC5zZXJpZXMrLjUp
L2UubGVuZ3RoLHMoYSh0LG4pKyhjP3QueTA6MCkpXSxwb2ludEluZGV4Om4sc2VyaWVzSW49CmRl
eDp0LnNlcmllcyxlOmQzLmV2ZW50fSksZDMuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigi
ZGJsY2xpY2siLGZ1bmN0aT0Kb24odCxuKXt4LmVsZW1lbnREYmxDbGljayh7dmFsdWU6YSh0LG4p
LHBvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvczpbaSh1PQoodCxuKSkraS5yYW5nZUJhbmQo
KSooYz9lLmxlbmd0aC8yOnQuc2VyaWVzKy41KS9lLmxlbmd0aCxzKGEodCxuKSsoYz90LnkwOjA9
CikpXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpkMy5ldmVudH0pLGQzLmV2
ZW50LnN0b3BQcm9wYWdhdGlvbj0KKCl9KSxILmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3Jl
dHVybiBhKGUsdCk8MD8ibnYtYmFyIG5lZ2F0aXZlIjoibnYtYmFyPQogcG9zaXRpdmUifSkuYXR0
cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitpKHUoZSx0KSkr
Iiw9CjApIn0pLHYmJihtfHwobT0zRGUubWFwKGZ1bmN0aW9uKCl7cmV0dXJuITB9KSksSC5zdHls
ZSgiZmlsbCIsZnVuY3Rpb24oZSx0LD0Kbil7cmV0dXJuIGQzLnJnYih2KGUsdCkpLmRhcmtlciht
Lm1hcChmdW5jdGlvbihlLHQpe3JldHVybiB0fSkuZmlsdGVyKGZ1bmN0PQppb24oZSx0KXtyZXR1
cm4hbVt0XX0pW25dKS50b1N0cmluZygpfSkuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSx0LG4p
e3JldHU9CnJuIGQzLnJnYih2KGUsdCkpLmRhcmtlcihtLm1hcChmdW5jdGlvbihlLHQpe3JldHVy
biB0fSkuZmlsdGVyKGZ1bmN0aW9uKGUsdD0KKXtyZXR1cm4hbVt0XX0pW25dKS50b1N0cmluZygp
fSkpLGM/SC5hdHRyKCJ5IixmdW5jdGlvbihlLHQpe3JldHVybiBzKGM/ZS55PQoxOjApfSkuYXR0
cigiaGVpZ2h0IixmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLm1heChNYXRoLmFicyhzKGUueSso
Yz9lLnkwOjA9CikpLXMoYz9lLnkwOjApKSwxKX0pLmF0dHIoIngiLGZ1bmN0aW9uKHQsbil7cmV0
dXJuIGM/MDp0LnNlcmllcyppLnJhbmdlQmFuZD0KKCkvZS5sZW5ndGh9KS5hdHRyKCJ3aWR0aCIs
aS5yYW5nZUJhbmQoKS8oYz8xOmUubGVuZ3RoKSk6SC5hdHRyKCJ4IixmdW5jdGlvPQpuKHQsbil7
cmV0dXJuIHQuc2VyaWVzKmkucmFuZ2VCYW5kKCkvZS5sZW5ndGh9KS5hdHRyKCJ3aWR0aCIsaS5y
YW5nZUJhbmQoKS89CmUubGVuZ3RoKS5hdHRyKCJ5IixmdW5jdGlvbihlLHQpe3JldHVybiBhKGUs
dCk8MD9zKDApOnMoMCktcyhhKGUsdCkpPDE/cygwKT0KLTE6cyhhKGUsdCkpfHwwfSkuYXR0cigi
aGVpZ2h0IixmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLm1heChNYXRoLmFicyhzKGEoPQplLHQp
KS1zKDApKSwxKXx8MH0pLFQ9M0RpLmNvcHkoKSxOPTNEcy5jb3B5KCl9KSxDfXZhciB0PTNEe3Rv
cDowLHJpZ2h0OjAsYm89CnR0b206MCxsZWZ0OjB9LG49M0Q5NjAscj0zRDUwMCxpPTNEZDMuc2Nh
bGUub3JkaW5hbCgpLHM9M0RkMy5zY2FsZS5saW5lYXIoKT0KLG89M0RNYXRoLmZsb29yKE1hdGgu
cmFuZG9tKCkqMWU0KSx1PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0sYT0zRGZ1bmN0aW9uPQoo
ZSl7cmV0dXJuIGUueX0sZj0zRFswXSxsPTNEITAsYz0zRCExLGg9M0QiemVybyIscD0zRGUudXRp
bHMuZGVmYXVsdENvbG9yKCk9CixkPTNEITEsdj0zRG51bGwsbSxnPTNEMTIwMCx5LGIsdyxFLFM9
M0QuMSx4PTNEZDMuZGlzcGF0Y2goImNoYXJ0Q2xpY2siLCJlbD0KZW1lbnRDbGljayIsImVsZW1l
bnREYmxDbGljayIsImVsZW1lbnRNb3VzZW92ZXIiLCJlbGVtZW50TW91c2VvdXQiKSxULE47cmV0
PQp1cm4gQy5kaXNwYXRjaD0zRHgsQy5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5k
KEMpLEMueD0zRGZ1bmN0aW9uKGU9Cil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RlLEMp
OnV9LEMueT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubD0KZW5ndGg/KGE9M0RlLEMp
OmF9LEMubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9w
PTNEPQp0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6dC50b3AsdC5yaWdodD0zRHR5
cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmk9Cm5lZCI/ZS5yaWdodDp0LnJpZ2h0LHQuYm90dG9tPTNE
dHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYj0Kb3R0b20sdC5sZWZ0
PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6dC5sZWZ0LEMpOnR9LEMud2lk
dGg9M0RmPQp1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPTNEZSxDKTpufSxD
LmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHU9CnJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLEMp
OnJ9LEMueFNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZT0Kbmd0aD8oaT0z
RGUsQyk6aX0sQy55U2NhbGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
cz0zRGUsQyk6PQpzfSxDLnhEb21haW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oeT0zRGUsQyk6eX0sQy55RG9tYWluPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oYj0zRGUsQyk6Yn0sQy54UmFuZ2U9M0RmdW5jdGlvbihlKXs9CnJldHVybiBh
cmd1bWVudHMubGVuZ3RoPyh3PTNEZSxDKTp3fSxDLnlSYW5nZT0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudD0Kcy5sZW5ndGg/KEU9M0RlLEMpOkV9LEMuZm9yY2VZPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlPQosQyk6Zn0sQy5zdGFja2VkPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLEMpOmN9LEMuc3RhY2s9Ck9mZnNl
dD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxDKTpofSxDLmNs
aXBFZGdlPTNEZnVuYz0KdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGUsQyk6
bH0sQy5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhPQpyZ3VtZW50cy5sZW5ndGg/KHA9M0Rl
LnV0aWxzLmdldENvbG9yKHQpLEMpOnB9LEMuYmFyQ29sb3I9M0RmdW5jdGlvbih0KXtyZXQ9CnVy
biBhcmd1bWVudHMubGVuZ3RoPyh2PTNEZS51dGlscy5nZXRDb2xvcih0KSxDKTp2fSxDLmRpc2Fi
bGVkPTNEZnVuY3Rpb24oZT0KKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0zRGUsQyk6bX0s
Qy5pZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMuPQpsZW5ndGg/KG89M0RlLEMpOm99
LEMuaGlkZWFibGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGU9
CixDKTpkfSxDLmRlbGF5PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9
M0RlLEMpOmd9LEMuZ3JvdXBTcD0KYWNpbmc9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oUz0zRGUsQyk6U30sQ30sZS5tb2RlbHMubXVsdGlCPQphckNoYXJ0PTNEZnVuY3Rp
b24oKXtmdW5jdGlvbiBBKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIGI9M0RkMy5z
ZWw9CmVjdCh0aGlzKSxrPTNEdGhpcyxPPTNEKHV8fHBhcnNlSW50KGIuc3R5bGUoIndpZHRoIikp
fHw5NjApLW8ubGVmdC1vLnJpZ2h0LD0KTT0zRChhfHxwYXJzZUludChiLnN0eWxlKCJoZWlnaHQi
KSl8fDQwMCktby50b3Atby5ib3R0b207QS51cGRhdGU9M0RmdW5jdGlvPQpuKCl7Yi5jYWxsKEEp
fSxBLmNvbnRhaW5lcj0zRHRoaXMsUy5kaXNhYmxlZD0zRGUubWFwKGZ1bmN0aW9uKGUpe3JldHVy
biEhZS49CmRpc2FibGVkfSk7aWYoIXgpe3ZhciBfO3g9M0R7fTtmb3IoXyBpbiBTKVNbX11pbnN0
YW5jZW9mIEFycmF5P3hbX109M0RTW19dLj0Kc2xpY2UoMCk6eFtfXT0zRFNbX119aWYoIWV8fCFl
Lmxlbmd0aHx8IWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlPQpzLmxlbmd0aH0p
Lmxlbmd0aCl7dmFyIEQ9M0RiLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW1RdKTtyZXR1
cm4gRC5lbnQ9CmVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0
YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZT0KKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLEQu
YXR0cigieCIsby5sZWZ0K08vMikuYXR0cigieSIsby50b3ArTS8yKS50ZXh0KGZ1PQpuY3Rpb24o
ZSl7cmV0dXJuIGV9KSxBfWIuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtb3ZlKCksdz0zRHQu
eFNjYWxlKCksRT0KPTNEdC55U2NhbGUoKTt2YXIgUD0zRGIuc2VsZWN0QWxsKCJnLm52LXdyYXAu
bnYtbXVsdGlCYXJXaXRoTGVnZW5kIikuZGF0YShbPQplXSksSD0zRFAuZW50ZXIoKS5hcHBlbmQo
ImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1tdWx0aUJhcldpdGhMZWc9CmVuZCIp
LmFwcGVuZCgiZyIpLEI9M0RQLnNlbGVjdCgiZyIpO0guYXBwZW5kKCJnIikuYXR0cigiY2xhc3Mi
LCJudi14IG52LWF4aT0KcyIpLEguYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15IG52LWF4
aXMiKSxILmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiPQpudi1iYXJzV3JhcCIpLEguYXBwZW5k
KCJnIikuYXR0cigiY2xhc3MiLCJudi1sZWdlbmRXcmFwIiksSC5hcHBlbmQoImciKS5hdHQ9CnIo
ImNsYXNzIiwibnYtY29udHJvbHNXcmFwIiksYyYmKGkud2lkdGgoTy1DKCkpLHQuYmFyQ29sb3Io
KSYmZS5mb3JFYWNoKGZ1bj0KY3Rpb24oZSx0KXtlLmNvbG9yPTNEZDMucmdiKCIjY2NjIikuZGFy
a2VyKHQqMS41KS50b1N0cmluZygpfSksQi5zZWxlY3QoIi5uPQp2LWxlZ2VuZFdyYXAiKS5kYXR1
bShlKS5jYWxsKGkpLG8udG9wIT0zRGkuaGVpZ2h0KCkmJihvLnRvcD0zRGkuaGVpZ2h0KCksTT0K
PTNEKGF8fHBhcnNlSW50KGIuc3R5bGUoImhlaWdodCIpKXx8NDAwKS1vLnRvcC1vLmJvdHRvbSks
Qi5zZWxlY3QoIi5udi1sZWdlPQpuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUo
IitDKCkrIiwiKyAtby50b3ArIikiKSk7aWYobCl7dmFyIGo9M0Q9Clt7a2V5OiJHcm91cGVkIixk
aXNhYmxlZDp0LnN0YWNrZWQoKX0se2tleToiU3RhY2tlZCIsZGlzYWJsZWQ6IXQuc3RhY2tlZCgp
fT0KXTtzLndpZHRoKEMoKSkuY29sb3IoWyIjNDQ0IiwiIzQ0NCIsIiM0NDQiXSksQi5zZWxlY3Qo
Ii5udi1jb250cm9sc1dyYXAiKS5kPQphdHVtKGopLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0
ZSgwLCIrIC1vLnRvcCsiKSIpLmNhbGwocyl9UC5hdHRyKCJ0cmFuc2Y9Cm9ybSIsInRyYW5zbGF0
ZSgiK28ubGVmdCsiLCIrby50b3ArIikiKSxkJiZCLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmF0
dHIoIj0KdHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrTysiLDApIiksdC5kaXNhYmxlZChlLm1hcChm
dW5jdGlvbihlKXtyZXR1cm4gZS5kaXNhPQpibGVkfSkpLndpZHRoKE8pLmhlaWdodChNKS5jb2xv
cihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxmKGUsdCk9Cn0pLmZpbHRlcihm
dW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkfSkpO3ZhciBGPTNEQi5zZWxlY3QoIi5u
di1iYXJzVz0KcmFwIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJs
ZWR9KSk7Ri5jYWxsKHQpO2lmKGgpe24uc2NhPQpsZSh3KS50aWNrcyhPLzEwMCkudGlja1NpemUo
LU0sMCksQi5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm09CiIsInRyYW5z
bGF0ZSgwLCIrRS5yYW5nZSgpWzBdKyIpIiksQi5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5jYWxs
KG4pO3ZhciBJPQo9M0RCLnNlbGVjdCgiLm52LXgubnYtYXhpcyA+IGciKS5zZWxlY3RBbGwoImci
KTtJLnNlbGVjdEFsbCgibGluZSwgdGV4dCIpLnM9CnR5bGUoIm9wYWNpdHkiLDEpO2lmKG0pe3Zh
ciBxPTNEZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIrZSsiLCIrdCsiKT0KIn0sUj0z
RDUsVT0zRDE3O0kuc2VsZWN0QWxsKCJ0ZXh0IikuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihl
LHQsbil7cmV0dXJuPQogcSgwLG4lMj0zRD0zRDA/UjpVKX0pO3ZhciB6PTNEZDMuc2VsZWN0QWxs
KCIubnYteC5udi1heGlzIC5udi13cmFwIGcgZyB0ZXg9CnQiKVswXS5sZW5ndGg7Qi5zZWxlY3RB
bGwoIi5udi14Lm52LWF4aXMgLm52LWF4aXNNYXhNaW4gdGV4dCIpLmF0dHIoInRyYW5zZj0Kb3Jt
IixmdW5jdGlvbihlLHQpe3JldHVybiBxKDAsdD0zRD0zRD0zRDB8fHolMiE9M0Q9M0QwP1U6Uil9
KX12JiZJLmZpbHRlcihmPQp1bmN0aW9uKHQsbil7cmV0dXJuIG4lTWF0aC5jZWlsKGVbMF0udmFs
dWVzLmxlbmd0aC8oTy8xMDApKSE9M0Q9M0QwfSkuc2VsZWM9CnRBbGwoInRleHQsIGxpbmUiKS5z
dHlsZSgib3BhY2l0eSIsMCksZyYmSS5zZWxlY3RBbGwoIi50aWNrIHRleHQiKS5hdHRyKCJ0cj0K
YW5zZm9ybSIsInJvdGF0ZSgiK2crIiAwLDApIikuc3R5bGUoInRleHQtYW5jaG9yIixnPjA/InN0
YXJ0IjoiZW5kIiksQi5zZWxlPQpjdCgiLm52LXgubnYtYXhpcyIpLnNlbGVjdEFsbCgiZy5udi1h
eGlzTWF4TWluIHRleHQiKS5zdHlsZSgib3BhY2l0eSIsMSl9cCY9CiYoci5zY2FsZShFKS50aWNr
cyhNLzM2KS50aWNrU2l6ZSgtTywwKSxCLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmNhbGwocikp
LD0KaS5kaXNwYXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe1M9M0RlLE4uc3RhdGVD
aGFuZ2UoUyksQS51cGRhdGUoKX0pPQoscy5kaXNwYXRjaC5vbigibGVnZW5kQ2xpY2siLGZ1bmN0
aW9uKGUsbil7aWYoIWUuZGlzYWJsZWQpcmV0dXJuO2o9M0RqLm1hcCg9CmZ1bmN0aW9uKGUpe3Jl
dHVybiBlLmRpc2FibGVkPTNEITAsZX0pLGUuZGlzYWJsZWQ9M0QhMTtzd2l0Y2goZS5rZXkpe2Nh
c2UiRz0Kcm91cGVkIjp0LnN0YWNrZWQoITEpO2JyZWFrO2Nhc2UiU3RhY2tlZCI6dC5zdGFja2Vk
KCEwKX1TLnN0YWNrZWQ9M0R0LnN0YWNrPQplZCgpLE4uc3RhdGVDaGFuZ2UoUyksQS51cGRhdGUo
KX0pLE4ub24oInRvb2x0aXBTaG93IixmdW5jdGlvbihlKXt5JiZMKGUsay49CnBhcmVudE5vZGUp
fSksTi5vbigiY2hhbmdlU3RhdGUiLGZ1bmN0aW9uKG4pe3R5cGVvZiBuLmRpc2FibGVkIT0zRCJ1
bmRlZmluZT0KZCImJihlLmZvckVhY2goZnVuY3Rpb24oZSx0KXtlLmRpc2FibGVkPTNEbi5kaXNh
YmxlZFt0XX0pLFMuZGlzYWJsZWQ9M0RuLmRpPQpzYWJsZWQpLHR5cGVvZiBuLnN0YWNrZWQhPTNE
InVuZGVmaW5lZCImJih0LnN0YWNrZWQobi5zdGFja2VkKSxTLnN0YWNrZWQ9M0Q9Cm4uc3RhY2tl
ZCksQS51cGRhdGUoKX0pfSksQX12YXIgdD0zRGUubW9kZWxzLm11bHRpQmFyKCksbj0zRGUubW9k
ZWxzLmF4aXMoKT0KLHI9M0RlLm1vZGVscy5heGlzKCksaT0zRGUubW9kZWxzLmxlZ2VuZCgpLHM9
M0RlLm1vZGVscy5sZWdlbmQoKSxvPTNEe3RvcDozPQowLHJpZ2h0OjIwLGJvdHRvbTo1MCxsZWZ0
OjYwfSx1PTNEbnVsbCxhPTNEbnVsbCxmPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSw9Cmw9M0Qh
MCxjPTNEITAsaD0zRCEwLHA9M0QhMCxkPTNEITEsdj0zRCEwLG09M0QhMSxnPTNEMCx5PTNEITAs
Yj0zRGZ1bmN0aW9uKD0KZSx0LG4scixpKXtyZXR1cm4iPGgzPiIrZSsiPC9oMz4iKyI8cD4iK24r
IiBvbiAiK3QrIjwvcD4ifSx3LEUsUz0zRHtzdGFja2VkPQo6ITF9LHg9M0RudWxsLFQ9M0QiTm8g
RGF0YSBBdmFpbGFibGUuIixOPTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHQ9Cmlw
SGlkZSIsInN0YXRlQ2hhbmdlIiwiY2hhbmdlU3RhdGUiKSxDPTNEZnVuY3Rpb24oKXtyZXR1cm4g
bD8xODA6MH0saz0zRDA7dD0KLnN0YWNrZWQoITEpLG4ub3JpZW50KCJib3R0b20iKS50aWNrUGFk
ZGluZyg3KS5oaWdobGlnaHRaZXJvKCEwKS5zaG93TWF4TWluPQooITEpLnRpY2tGb3JtYXQoZnVu
Y3Rpb24oZSl7cmV0dXJuIGV9KSxyLm9yaWVudChkPyJyaWdodCI6ImxlZnQiKS50aWNrRm9ybWE9
CnQoZDMuZm9ybWF0KCIsLjFmIikpLHMudXBkYXRlU3RhdGUoITEpO3ZhciBMPTNEZnVuY3Rpb24o
aSxzKXt2YXIgbz0zRGkucG9zWz0KMF0rKHMub2Zmc2V0TGVmdHx8MCksdT0zRGkucG9zWzFdKyhz
Lm9mZnNldFRvcHx8MCksYT0zRG4udGlja0Zvcm1hdCgpKHQueCgpPQooaS5wb2ludCxpLnBvaW50
SW5kZXgpKSxmPTNEci50aWNrRm9ybWF0KCkodC55KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKSxs
PQo9M0RiKGkuc2VyaWVzLmtleSxhLGYsaSxBKTtlLnRvb2x0aXAuc2hvdyhbbyx1XSxsLGkudmFs
dWU8MD8ibiI6InMiLG51bGwscyk9Cn07cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3Vz
ZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wbz0Kc1swXStvLmxlZnQsZS5w
b3NbMV0rby50b3BdLE4udG9vbHRpcFNob3coZSl9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91
c2VvPQp1dC50b29sdGlwIixmdW5jdGlvbihlKXtOLnRvb2x0aXBIaWRlKGUpfSksTi5vbigidG9v
bHRpcEhpZGUiLGZ1bmN0aW9uKCl7eSY9CiZlLnRvb2x0aXAuY2xlYW51cCgpfSksQS5kaXNwYXRj
aD0zRE4sQS5tdWx0aWJhcj0zRHQsQS5sZWdlbmQ9M0RpLEEueEF4aXM9Cj0zRG4sQS55QXhpcz0z
RHIsZDMucmViaW5kKEEsdCwieCIsInkiLCJ4RG9tYWluIiwieURvbWFpbiIsInhSYW5nZSIsInlS
YW5nZT0KIiwiZm9yY2VYIiwiZm9yY2VZIiwiY2xpcEVkZ2UiLCJpZCIsInN0YWNrZWQiLCJzdGFj
a09mZnNldCIsImRlbGF5IiwiYmFyQ29sPQpvciIsImdyb3VwU3BhY2luZyIpLEEub3B0aW9ucz0z
RGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChBKSxBLm1hcmdpbj0zRGZ1bmM9CnRpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG8udG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQi
P2UudG9wOj0Kby50b3Asby5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2Uu
cmlnaHQ6by5yaWdodCxvLmJvdHRvbT0zRHR5PQpwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQi
P2UuYm90dG9tOm8uYm90dG9tLG8ubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInU9Cm5kZWZpbmVk
Ij9lLmxlZnQ6by5sZWZ0LEEpOm99LEEud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD0KPyh1PTNEZSxBKTp1fSxBLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhhPTNEZSxBKTphfSxBPQouY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUudXRpbHMuZ2V0Q29sb3IodCksaS5jb2w9Cm9yKGYp
LEEpOmZ9LEEuc2hvd0NvbnRyb2xzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGw9M0RlLEEpOj0KbH0sQS5zaG93TGVnZW5kPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGM9M0RlLEEpOmN9LEEuc2hvd1hBPQp4aXM9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsQSk6aH0sQS5zaG93WUF4aXM9M0RmdW5jdGk9Cm9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxBKTpwfSxBLnJpZ2h0QWxpZ25ZQXhp
cz0zRGZ1bmN0aW9uKGUpez0KcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9M0RlLHIub3JpZW50
KGU/InJpZ2h0IjoibGVmdCIpLEEpOmR9LEEucmVkdWNlWFRpPQpja3M9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj0zRGUsQSk6dn0sQS5yb3RhdGVMYWJlbHM9M0RmdW49
CmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPTNEZSxBKTpnfSxBLnN0YWdnZXJM
YWJlbHM9M0RmdW5jdGlvbihlKT0Ke3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNEZSxBKTpt
fSxBLnRvb2x0aXA9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lPQpudHMubGVuZ3RoPyhiPTNE
ZSxBKTpifSxBLnRvb2x0aXBzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHk9Cj0zRGUsQSk6eX0sQS50b29sdGlwQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhiPTNEZSxBKT0KOmJ9LEEuc3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oUz0zRGUsQSk6U30sQS5kZWZhdWx0U3RhPQp0ZT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh4PTNEZSxBKTp4fSxBLm5vRGF0YT0zRGZ1bmN0
aW9uKGU9Cil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFQ9M0RlLEEpOlR9LEEudHJhbnNpdGlv
bkR1cmF0aW9uPTNEZnVuY3Rpb24oZSl7cj0KZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaz0zRGUs
QSk6a30sQX0sZS5tb2RlbHMubXVsdGlCYXJIb3Jpem9udGFsPTNEZnVuY3RpPQpvbigpe2Z1bmN0
aW9uIEMoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXt2YXIgaT0zRG4tdC5sZWZ0LXQucmln
aHQseT0zRHI9Ci10LnRvcC10LmJvdHRvbSxDPTNEZDMuc2VsZWN0KHRoaXMpO3AmJihlPTNEZDMu
bGF5b3V0LnN0YWNrKCkub2Zmc2V0KCJ6ZXJvIj0KKS52YWx1ZXMoZnVuY3Rpb24oZSl7cmV0dXJu
IGUudmFsdWVzfSkueShhKShlKSksZS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7ZS52PQphbHVlcy5m
b3JFYWNoKGZ1bmN0aW9uKGUpe2Uuc2VyaWVzPTNEdH0pfSkscCYmZVswXS52YWx1ZXMubWFwKGZ1
bmN0aW9uKHQsbik9Cnt2YXIgcj0zRDAsaT0zRDA7ZS5tYXAoZnVuY3Rpb24oZSl7dmFyIHQ9M0Rl
LnZhbHVlc1tuXTt0LnNpemU9M0RNYXRoLmFicyh0Lj0KeSksdC55PDA/KHQueTE9M0RpLXQuc2l6
ZSxpLT0zRHQuc2l6ZSk6KHQueTE9M0RyLHIrPTNEdC5zaXplKX0pfSk7dmFyIGs9M0RiPQomJnc/
W106ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlvbihlLHQpe3Jl
dHVybnt4OnUoZSx0KSw9Cnk6YShlLHQpLHkwOmUueTAseTE6ZS55MX19KX0pO3MuZG9tYWluKGJ8
fGQzLm1lcmdlKGspLm1hcChmdW5jdGlvbihlKXtyZXR1cj0KbiBlLnh9KSkucmFuZ2VCYW5kcyhF
fHxbMCx5XSwuMSksby5kb21haW4od3x8ZDMuZXh0ZW50KGQzLm1lcmdlKGspLm1hcChmdW5jPQp0
aW9uKGUpe3JldHVybiBwP2UueT4wP2UueTErZS55OmUueTE6ZS55fSkuY29uY2F0KGYpKSksZCYm
IXA/by5yYW5nZShTfHxbby49CmRvbWFpbigpWzBdPDA/bTowLGktKG8uZG9tYWluKClbMV0+MD9t
OjApXSk6by5yYW5nZShTfHxbMCxpXSksVD0zRFR8fHMsTj0zRD0KTnx8ZDMuc2NhbGUubGluZWFy
KCkuZG9tYWluKG8uZG9tYWluKCkpLnJhbmdlKFtvKDApLG8oMCldKTt2YXIgTD0zRGQzLnNlbGVj
PQp0KHRoaXMpLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LW11bHRpYmFySG9yaXpvbnRhbCIpLmRh
dGEoW2VdKSxBPTNETC5lbnRlcig9CikuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52
LXdyYXAgbnYtbXVsdGliYXJIb3Jpem9udGFsIiksTz0zREEuYXBwZT0KbmQoImRlZnMiKSxNPTNE
QS5hcHBlbmQoImciKSxfPTNETC5zZWxlY3QoImciKTtNLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNz
IiwiPQpudi1ncm91cHMiKSxMLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsi
LCIrdC50b3ArIikiKTt2YXIgRD0zREw9Ci5zZWxlY3QoIi5udi1ncm91cHMiKS5zZWxlY3RBbGwo
Ii5udi1ncm91cCIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGZ1bj0KY3Rpb24oZSx0KXty
ZXR1cm4gdH0pO0QuZW50ZXIoKS5hcHBlbmQoImciKS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDFl
LTYpLnN0PQp5bGUoImZpbGwtb3BhY2l0eSIsMWUtNiksRC5leGl0KCkuc3R5bGUoInN0cm9rZS1v
cGFjaXR5IiwxZS02KS5zdHlsZSgiZmlsbC09Cm9wYWNpdHkiLDFlLTYpLnJlbW92ZSgpLEQuYXR0
cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIm52LWdyb3VwIG52LXNlcj0KaWVzLSIrdH0p
LmNsYXNzZWQoImhvdmVyIixmdW5jdGlvbihlKXtyZXR1cm4gZS5ob3Zlcn0pLnN0eWxlKCJmaWxs
IixmdW5jdGlvPQpuKGUsdCl7cmV0dXJuIGwoZSx0KX0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9u
KGUsdCl7cmV0dXJuIGwoZSx0KX0pLEQuc3R5bGU9Cigic3Ryb2tlLW9wYWNpdHkiLDEpLnN0eWxl
KCJmaWxsLW9wYWNpdHkiLC43NSk7dmFyIFA9M0RELnNlbGVjdEFsbCgiZy5udi1iYT0KciIpLmRh
dGEoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzfSk7UC5leGl0KCkucmVtb3ZlKCk7dmFyIEg9
M0RQLmVudGVyKCkuPQphcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQsbixy
KXtyZXR1cm4idHJhbnNsYXRlKCIrTihwP3QueTA6MCk9CisiLCIrKHA/MDpyKnMucmFuZ2VCYW5k
KCkvZS5sZW5ndGgrcyh1KHQsbikpKSsiKSJ9KTtILmFwcGVuZCgicmVjdCIpLmF0dHIoIj0Kd2lk
dGgiLDApLmF0dHIoImhlaWdodCIscy5yYW5nZUJhbmQoKS8ocD8xOmUubGVuZ3RoKSksUC5vbigi
bW91c2VvdmVyIixmdW5jPQp0aW9uKHQsbil7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVy
IiwhMCkseC5lbGVtZW50TW91c2VvdmVyKHt2YWx1ZTphKHQ9CixuKSxwb2ludDp0LHNlcmllczpl
W3Quc2VyaWVzXSxwb3M6W28oYSh0LG4pKyhwP3QueTA6MCkpLHModSh0LG4pKStzLnJhbmdlQj0K
YW5kKCkqKHA/ZS5sZW5ndGgvMjp0LnNlcmllcysuNSkvZS5sZW5ndGhdLHBvaW50SW5kZXg6bixz
ZXJpZXNJbmRleDp0LnNlcmllPQpzLGU6ZDMuZXZlbnR9KX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rp
b24odCxuKXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgiaG92ZXI9CiIsITEpLHguZWxlbWVudE1v
dXNlb3V0KHt2YWx1ZTphKHQsbikscG9pbnQ6dCxzZXJpZXM6ZVt0LnNlcmllc10scG9pbnRJbmRl
eD0KOm4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpkMy5ldmVudH0pfSkub24oImNsaWNrIixmdW5j
dGlvbih0LG4pe3guZWxlbWVudENsPQppY2soe3ZhbHVlOmEodCxuKSxwb2ludDp0LHNlcmllczpl
W3Quc2VyaWVzXSxwb3M6W3ModSh0LG4pKStzLnJhbmdlQmFuZCgpKig9CnA/ZS5sZW5ndGgvMjp0
LnNlcmllcysuNSkvZS5sZW5ndGgsbyhhKHQsbikrKHA/dC55MDowKSldLHBvaW50SW5kZXg6bixz
ZXJpZT0Kc0luZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnR9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRp
b24oKX0pLm9uKCJkYmxjbGljayIsZnVuPQpjdGlvbih0LG4pe3guZWxlbWVudERibENsaWNrKHt2
YWx1ZTphKHQsbikscG9pbnQ6dCxzZXJpZXM6ZVt0LnNlcmllc10scG9zOls9CnModSh0LG4pKStz
LnJhbmdlQmFuZCgpKihwP2UubGVuZ3RoLzI6dC5zZXJpZXMrLjUpL2UubGVuZ3RoLG8oYSh0LG4p
KyhwP3QueT0KMDowKSldLHBvaW50SW5kZXg6bixzZXJpZXNJbmRleDp0LnNlcmllcyxlOmQzLmV2
ZW50fSksZDMuZXZlbnQuc3RvcFByb3BhZ2F0PQppb24oKX0pLEguYXBwZW5kKCJ0ZXh0IiksZCYm
IXA/KFAuc2VsZWN0KCJ0ZXh0IikuYXR0cigidGV4dC1hbmNob3IiLGZ1bmN0aW89Cm4oZSx0KXty
ZXR1cm4gYShlLHQpPDA/ImVuZCI6InN0YXJ0In0pLmF0dHIoInkiLHMucmFuZ2VCYW5kKCkvKGUu
bGVuZ3RoKjIpKT0KLmF0dHIoImR5IiwiLjMyZW0iKS50ZXh0KGZ1bmN0aW9uKGUsdCl7cmV0dXJu
IGcoYShlLHQpKX0pLFAuc2VsZWN0KCJ0ZXh0IikuPQphdHRyKCJ4IixmdW5jdGlvbihlLHQpe3Jl
dHVybiBhKGUsdCk8MD8tNDpvKGEoZSx0KSktbygwKSs0fSkpOlAuc2VsZWN0QWxsKCI9CnRleHQi
KS50ZXh0KCIiKSx2JiYhcD8oSC5hcHBlbmQoInRleHQiKS5jbGFzc2VkKCJudi1iYXItbGFiZWwi
LCEwKSxQLnNlbGVjdD0KKCJ0ZXh0Lm52LWJhci1sYWJlbCIpLmF0dHIoInRleHQtYW5jaG9yIixm
dW5jdGlvbihlLHQpe3JldHVybiBhKGUsdCk8MD8ic3RhPQpydCI6ImVuZCJ9KS5hdHRyKCJ5Iixz
LnJhbmdlQmFuZCgpLyhlLmxlbmd0aCoyKSkuYXR0cigiZHkiLCIuMzJlbSIpLnRleHQoZnU9Cm5j
dGlvbihlLHQpe3JldHVybiB1KGUsdCl9KSxQLnNlbGVjdCgidGV4dC5udi1iYXItbGFiZWwiKS5h
dHRyKCJ4IixmdW5jdGlvbj0KKGUsdCl7cmV0dXJuIGEoZSx0KTwwP28oMCktbyhhKGUsdCkpKzQ6
LTR9KSk6UC5zZWxlY3RBbGwoInRleHQubnYtYmFyLWxhYmVsPQoiKS50ZXh0KCIiKSxQLmF0dHIo
ImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiBhKGUsdCk8MD8ibnYtYmFyIG5lZ2F0aXZlIjo9
CiJudi1iYXIgcG9zaXRpdmUifSksYyYmKGh8fChoPTNEZS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4h
MH0pKSxQLnN0eWxlKCJmaWxsIj0KLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZDMucmdiKGMoZSx0
KSkuZGFya2VyKGgubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR9PQopLmZpbHRlcihmdW5jdGlv
bihlLHQpe3JldHVybiFoW3RdfSlbbl0pLnRvU3RyaW5nKCl9KS5zdHlsZSgic3Ryb2tlIixmdW5j
dGk9Cm9uKGUsdCxuKXtyZXR1cm4gZDMucmdiKGMoZSx0KSkuZGFya2VyKGgubWFwKGZ1bmN0aW9u
KGUsdCl7cmV0dXJuIHR9KS5maWx0ZT0KcihmdW5jdGlvbihlLHQpe3JldHVybiFoW3RdfSlbbl0p
LnRvU3RyaW5nKCl9KSkscD9QLmF0dHIoInRyYW5zZm9ybSIsZnVuY3RpPQpvbihlLHQpe3JldHVy
biJ0cmFuc2xhdGUoIitvKGUueTEpKyIsIitzKHUoZSx0KSkrIikifSkuc2VsZWN0KCJyZWN0Iiku
YXR0cig9CiJ3aWR0aCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5hYnMobyhhKGUsdCkrZS55
MCktbyhlLnkwKSl9KS5hdHRyKCJoZWlnaD0KdCIscy5yYW5nZUJhbmQoKSk6UC5hdHRyKCJ0cmFu
c2Zvcm0iLGZ1bmN0aW9uKHQsbil7cmV0dXJuInRyYW5zbGF0ZSgiKyhhKHQsPQpuKTwwP28oYSh0
LG4pKTpvKDApKSsiLCIrKHQuc2VyaWVzKnMucmFuZ2VCYW5kKCkvZS5sZW5ndGgrcyh1KHQsbikp
KSsiKSJ9KS49CnNlbGVjdCgicmVjdCIpLmF0dHIoImhlaWdodCIscy5yYW5nZUJhbmQoKS9lLmxl
bmd0aCkuYXR0cigid2lkdGgiLGZ1bmN0aW9uKD0KZSx0KXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5h
YnMobyhhKGUsdCkpLW8oMCkpLDEpfSksVD0zRHMuY29weSgpLE49M0RvLmNvcHkoPQopfSksQ312
YXIgdD0zRHt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0sbj0zRDk2MCxyPTNENTAwLGk9
M0RNYXRoLmZsb289CnIoTWF0aC5yYW5kb20oKSoxZTQpLHM9M0RkMy5zY2FsZS5vcmRpbmFsKCks
bz0zRGQzLnNjYWxlLmxpbmVhcigpLHU9M0RmdW5jdD0KaW9uKGUpe3JldHVybiBlLnh9LGE9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gZS55fSxmPTNEWzBdLGw9M0RlLnV0aWxzLmRlZmF1bHRDPQpvbG9y
KCksYz0zRG51bGwsaCxwPTNEITEsZD0zRCExLHY9M0QhMSxtPTNENjAsZz0zRGQzLmZvcm1hdCgi
LC4yZiIpLHk9M0QxMjA9CjAsYix3LEUsUyx4PTNEZDMuZGlzcGF0Y2goImNoYXJ0Q2xpY2siLCJl
bGVtZW50Q2xpY2siLCJlbGVtZW50RGJsQ2xpY2siLCJlbD0KZW1lbnRNb3VzZW92ZXIiLCJlbGVt
ZW50TW91c2VvdXQiKSxULE47cmV0dXJuIEMuZGlzcGF0Y2g9M0R4LEMub3B0aW9ucz0zRGUuPQp1
dGlscy5vcHRpb25zRnVuYy5iaW5kKEMpLEMueD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyh1PTNEZSw9CkMpOnV9LEMueT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhhPTNEZSxDKTphfSxDLm1hcmdpbj0zRGZ1bj0KY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHQudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9w
PQo6dC50b3AsdC5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6
dC5yaWdodCx0LmJvdHRvbT0zRHQ9CnlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90
dG9tOnQuYm90dG9tLHQubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEIj0KdW5kZWZpbmVkIj9lLmxl
ZnQ6dC5sZWZ0LEMpOnR9LEMud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0PQpoPyhuPTNEZSxDKTpufSxDLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhyPTNEZSxDKTpyfSw9CkMueFNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHM9M0RlLEMpOnN9LEMueVNjYWxlPTNEZnVuYz0KdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsQyk6b30sQy54RG9tYWluPTNEZnVuY3Rpb24oZSl7
cmV0dXJuPQogYXJndW1lbnRzLmxlbmd0aD8oYj0zRGUsQyk6Yn0sQy55RG9tYWluPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW49Cmd0aD8odz0zRGUsQyk6d30sQy54UmFuZ2U9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT0zRGUsQyk6RT0KfSxDLnlSYW5n
ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPTNEZSxDKTpTfSxDLmZv
cmNlWT0zRGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLEMpOmZ9
LEMuc3RhY2tlZD0zRGZ1bmN0aW9uKGUpe3JldHU9CnJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0Rl
LEMpOnB9LEMuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbj0KZ3RoPyhs
PTNEZS51dGlscy5nZXRDb2xvcih0KSxDKTpsfSxDLmJhckNvbG9yPTNEZnVuY3Rpb24odCl7cmV0
dXJuIGFyZ3VtZW50PQpzLmxlbmd0aD8oYz0zRGUudXRpbHMuZ2V0Q29sb3IodCksQyk6Y30sQy5k
aXNhYmxlZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmc9CnVtZW50cy5sZW5ndGg/KGg9M0RlLEMp
Omh9LEMuaWQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRD0KZSxD
KTppfSxDLmRlbGF5PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9M0Rl
LEMpOnl9LEMuc2hvd1ZhPQpsdWVzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGQ9M0RlLEMpOmR9LEMuc2hvd0JhckxhYmVscz0zRGY9CnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHY9M0RlLEMpOnZ9LEMudmFsdWVGb3JtYXQ9M0RmdW5jdGlvbihlKT0K
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPTNEZSxDKTpnfSxDLnZhbHVlUGFkZGluZz0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhPQpyZ3VtZW50cy5sZW5ndGg/KG09M0RlLEMpOm19LEN9LGUubW9k
ZWxzLm11bHRpQmFySG9yaXpvbnRhbENoYXJ0PTNEZnVuY3Rpb249Cigpe2Z1bmN0aW9uIEMoZSl7
cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXt2YXIgZD0zRGQzLnNlbGVjdCh0aGlzKSxtPTNEdGhp
cz0KLFQ9M0QodXx8cGFyc2VJbnQoZC5zdHlsZSgid2lkdGgiKSl8fDk2MCktby5sZWZ0LW8ucmln
aHQsaz0zRChhfHxwYXJzZUludChkPQouc3R5bGUoImhlaWdodCIpKXx8NDAwKS1vLnRvcC1vLmJv
dHRvbTtDLnVwZGF0ZT0zRGZ1bmN0aW9uKCl7ZC5jYWxsKEMpfSxDLmM9Cm9udGFpbmVyPTNEdGhp
cyxiLmRpc2FibGVkPTNEZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSk7aWYo
IXcpez0KdmFyIEw7dz0zRHt9O2ZvcihMIGluIGIpYltMXWluc3RhbmNlb2YgQXJyYXk/d1tMXT0z
RGJbTF0uc2xpY2UoMCk6d1tMXT0zRGJbPQpMXX1pZighZXx8IWUubGVuZ3RofHwhZS5maWx0ZXIo
ZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLmxlbmd0aH0pLmxlbmd0aCk9Cnt2YXIgQT0zRGQu
c2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShbRV0pO3JldHVybiBBLmVudGVyKCkuYXBwZW5k
KCJ0ZXh0Ij0KKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdl
bSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pPQpkZGxlIiksQS5hdHRyKCJ4IixvLmxlZnQrVC8y
KS5hdHRyKCJ5IixvLnRvcCtrLzIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGU9Cn0pLEN9ZC5z
ZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKSxnPTNEdC54U2NhbGUoKSx5PTNEdC55U2Nh
bGUoKTt2YXIgTz0KPTNEZC5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1tdWx0aUJhckhvcml6b250
YWxDaGFydCIpLmRhdGEoW2VdKSxNPTNETy5lbnRlPQpyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xh
c3MiLCJudmQzIG52LXdyYXAgbnYtbXVsdGlCYXJIb3Jpem9udGFsQ2hhcnQiKS5hcHA9CmVuZCgi
ZyIpLF89M0RPLnNlbGVjdCgiZyIpO00uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14IG52
LWF4aXMiKSxNLmFwcD0KZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKS5hcHBl
bmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXplcm9MaW5lPQoiKS5hcHBlbmQoImxpbmUiKSxNLmFw
cGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYmFyc1dyYXAiKSxNLmFwcGVuZCgiZyIpLmE9CnR0
cigiY2xhc3MiLCJudi1sZWdlbmRXcmFwIiksTS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52
LWNvbnRyb2xzV3JhcCIpLD0KYyYmKGkud2lkdGgoVC14KCkpLHQuYmFyQ29sb3IoKSYmZS5mb3JF
YWNoKGZ1bmN0aW9uKGUsdCl7ZS5jb2xvcj0zRGQzLnJnYigiPQojY2NjIikuZGFya2VyKHQqMS41
KS50b1N0cmluZygpfSksXy5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuZGF0dW0oZSkuY2FsbCg9
CmkpLG8udG9wIT0zRGkuaGVpZ2h0KCkmJihvLnRvcD0zRGkuaGVpZ2h0KCksaz0zRChhfHxwYXJz
ZUludChkLnN0eWxlKCJoZWlnaD0KdCIpKXx8NDAwKS1vLnRvcC1vLmJvdHRvbSksXy5zZWxlY3Qo
Ii5udi1sZWdlbmRXcmFwIikuYXR0cigidHJhbnNmb3JtIiwidHJhPQpuc2xhdGUoIit4KCkrIiwi
KyAtby50b3ArIikiKSk7aWYobCl7dmFyIEQ9M0Rbe2tleToiR3JvdXBlZCIsZGlzYWJsZWQ6dC5z
dGE9CmNrZWQoKX0se2tleToiU3RhY2tlZCIsZGlzYWJsZWQ6IXQuc3RhY2tlZCgpfV07cy53aWR0
aCh4KCkpLmNvbG9yKFsiIzQ0NCIsIj0KIzQ0NCIsIiM0NDQiXSksXy5zZWxlY3QoIi5udi1jb250
cm9sc1dyYXAiKS5kYXR1bShEKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuPQpzbGF0ZSgwLCIrIC1v
LnRvcCsiKSIpLmNhbGwocyl9Ty5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitvLmxlZnQr
IiwiK289Ci50b3ArIikiKSx0LmRpc2FibGVkKGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRp
c2FibGVkfSkpLndpZHRoKFQpLmhlaWdodD0KKGspLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIGUuY29sb3J8fGYoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pPQp7cmV0dXJuIWVb
bl0uZGlzYWJsZWR9KSk7dmFyIFA9M0RfLnNlbGVjdCgiLm52LWJhcnNXcmFwIikuZGF0dW0oZS5m
aWx0ZXIoZnU9Cm5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKTtQLmNhbGwodCk7aWYoaCl7
bi5zY2FsZShnKS50aWNrcyhrLzI0KS50aWNrUz0KaXplKC1ULDApLF8uc2VsZWN0KCIubnYteC5u
di1heGlzIikuY2FsbChuKTt2YXIgSD0zRF8uc2VsZWN0KCIubnYteC5udi1heGlzPQoiKS5zZWxl
Y3RBbGwoImciKTtILnNlbGVjdEFsbCgibGluZSwgdGV4dCIpfXAmJihyLnNjYWxlKHkpLnRpY2tz
KFQvMTAwKS50aWM9CmtTaXplKC1rLDApLF8uc2VsZWN0KCIubnYteS5udi1heGlzIikuYXR0cigi
dHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitrKyIpIj0KKSxfLnNlbGVjdCgiLm52LXkubnYtYXhp
cyIpLmNhbGwocikpLF8uc2VsZWN0KCIubnYtemVyb0xpbmUgbGluZSIpLmF0dHIoIngxPQoiLHko
MCkpLmF0dHIoIngyIix5KDApKS5hdHRyKCJ5MSIsMCkuYXR0cigieTIiLC1rKSxpLmRpc3BhdGNo
Lm9uKCJzdGF0ZUNoYW49CmdlIixmdW5jdGlvbihlKXtiPTNEZSxTLnN0YXRlQ2hhbmdlKGIpLEMu
dXBkYXRlKCl9KSxzLmRpc3BhdGNoLm9uKCJsZWdlbmRDbD0KaWNrIixmdW5jdGlvbihlLG4pe2lm
KCFlLmRpc2FibGVkKXJldHVybjtEPTNERC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzPQph
YmxlZD0zRCEwLGV9KSxlLmRpc2FibGVkPTNEITE7c3dpdGNoKGUua2V5KXtjYXNlIkdyb3VwZWQi
OnQuc3RhY2tlZCghMSk7YnI9CmVhaztjYXNlIlN0YWNrZWQiOnQuc3RhY2tlZCghMCl9Yi5zdGFj
a2VkPTNEdC5zdGFja2VkKCksUy5zdGF0ZUNoYW5nZShiKSxDLj0KdXBkYXRlKCl9KSxTLm9uKCJ0
b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7diYmTihlLG0ucGFyZW50Tm9kZSl9KSxTLm9uKCJjaGFu
PQpnZVN0YXRlIixmdW5jdGlvbihuKXt0eXBlb2Ygbi5kaXNhYmxlZCE9M0QidW5kZWZpbmVkIiYm
KGUuZm9yRWFjaChmdW5jdGlvbig9CmUsdCl7ZS5kaXNhYmxlZD0zRG4uZGlzYWJsZWRbdF19KSxi
LmRpc2FibGVkPTNEbi5kaXNhYmxlZCksdHlwZW9mIG4uc3RhY2tlZD0KIT0zRCJ1bmRlZmluZWQi
JiYodC5zdGFja2VkKG4uc3RhY2tlZCksYi5zdGFja2VkPTNEbi5zdGFja2VkKSxDLnVwZGF0ZSgp
fSl9PQopLEN9dmFyIHQ9M0RlLm1vZGVscy5tdWx0aUJhckhvcml6b250YWwoKSxuPTNEZS5tb2Rl
bHMuYXhpcygpLHI9M0RlLm1vZGVscy49CmF4aXMoKSxpPTNEZS5tb2RlbHMubGVnZW5kKCkuaGVp
Z2h0KDMwKSxzPTNEZS5tb2RlbHMubGVnZW5kKCkuaGVpZ2h0KDMwKSxvPQo9M0R7dG9wOjMwLHJp
Z2h0OjIwLGJvdHRvbTo1MCxsZWZ0OjYwfSx1PTNEbnVsbCxhPTNEbnVsbCxmPTNEZS51dGlscy5k
ZWZhdWw9CnRDb2xvcigpLGw9M0QhMCxjPTNEITAsaD0zRCEwLHA9M0QhMCxkPTNEITEsdj0zRCEw
LG09M0RmdW5jdGlvbihlLHQsbixyLGkpez0KcmV0dXJuIjxoMz4iK2UrIiAtICIrdCsiPC9oMz4i
KyI8cD4iK24rIjwvcD4ifSxnLHksYj0zRHtzdGFja2VkOmR9LHc9M0RudWxsPQosRT0zRCJObyBE
YXRhIEF2YWlsYWJsZS4iLFM9M0RkMy5kaXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlk
ZSIsInN0YXQ9CmVDaGFuZ2UiLCJjaGFuZ2VTdGF0ZSIpLHg9M0RmdW5jdGlvbigpe3JldHVybiBs
PzE4MDowfSxUPTNEMDt0LnN0YWNrZWQoZCksbj0KLm9yaWVudCgibGVmdCIpLnRpY2tQYWRkaW5n
KDUpLmhpZ2hsaWdodFplcm8oITEpLnNob3dNYXhNaW4oITEpLnRpY2tGb3JtYXQoPQpmdW5jdGlv
bihlKXtyZXR1cm4gZX0pLHIub3JpZW50KCJib3R0b20iKS50aWNrRm9ybWF0KGQzLmZvcm1hdCgi
LC4xZiIpKSxzLnU9CnBkYXRlU3RhdGUoITEpO3ZhciBOPTNEZnVuY3Rpb24oaSxzKXt2YXIgbz0z
RGkucG9zWzBdKyhzLm9mZnNldExlZnR8fDApLHU9Cj0zRGkucG9zWzFdKyhzLm9mZnNldFRvcHx8
MCksYT0zRG4udGlja0Zvcm1hdCgpKHQueCgpKGkucG9pbnQsaS5wb2ludEluZGV4KT0KKSxmPTNE
ci50aWNrRm9ybWF0KCkodC55KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKSxsPTNEbShpLnNlcmll
cy5rZXksYSxmLGksPQpDKTtlLnRvb2x0aXAuc2hvdyhbbyx1XSxsLGkudmFsdWU8MD8iZSI6Inci
LG51bGwscyl9O3JldHVybiB0LmRpc3BhdGNoLm9uKCI9CmVsZW1lbnRNb3VzZW92ZXIudG9vbHRp
cCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rby5sZWZ0LGUucG9zWzFdK28udD0Kb3Bd
LFMudG9vbHRpcFNob3coZSl9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRp
cCIsZnVuY3Rpb24oZSl7PQpTLnRvb2x0aXBIaWRlKGUpfSksUy5vbigidG9vbHRpcEhpZGUiLGZ1
bmN0aW9uKCl7diYmZS50b29sdGlwLmNsZWFudXAoKX0pLEM9Ci5kaXNwYXRjaD0zRFMsQy5tdWx0
aWJhcj0zRHQsQy5sZWdlbmQ9M0RpLEMueEF4aXM9M0RuLEMueUF4aXM9M0RyLGQzLnJlYmluZD0K
KEMsdCwieCIsInkiLCJ4RG9tYWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsImZvcmNl
WCIsImZvcmNlWSIsImNsaXBFPQpkZ2UiLCJpZCIsImRlbGF5Iiwic2hvd1ZhbHVlcyIsInNob3dC
YXJMYWJlbHMiLCJ2YWx1ZUZvcm1hdCIsInN0YWNrZWQiLCJiYXI9CkNvbG9yIiksQy5vcHRpb25z
PTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKEMpLEMubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0
dT0Kcm4gYXJndW1lbnRzLmxlbmd0aD8oby50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5l
ZCI/ZS50b3A6by50b3Asby5yaWdoPQp0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/
ZS5yaWdodDpvLnJpZ2h0LG8uYm90dG9tPTNEdHlwZW9mIGUuYm90dG89Cm0hPTNEInVuZGVmaW5l
ZCI/ZS5ib3R0b206by5ib3R0b20sby5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVk
Ij9lLj0KbGVmdDpvLmxlZnQsQyk6b30sQy53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyh1PTNEZSxDKTp1PQp9LEMuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLEMpOmF9LEMuY29sb3I9M0RmdW49CmN0aW9uKHQpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZS51dGlscy5nZXRDb2xvcih0KSxpLmNvbG9yKGYp
LEMpOmZ9LD0KQy5zaG93Q29udHJvbHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8obD0zRGUsQyk6bH0sQy5zaG93TGVnPQplbmQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oYz0zRGUsQyk6Y30sQy5zaG93WEF4aXM9M0RmdW5jdGk9Cm9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxDKTpofSxDLnNob3dZQXhpcz0zRGZ1bmN0aW9u
KGUpe3JldHVybj0KIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLEMpOnB9LEMudG9vbHRpcD0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuPQpndGg/KG09M0RlLEMpOm19LEMudG9vbHRp
cHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj0zRGUsQyk9Cjp2fSxD
LnRvb2x0aXBDb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09
M0RlLEMpOm19LEMucz0KdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhiPTNEZSxDKTpifSxDLmRlZmF1bHRTdGF0ZT0zRGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHc9M0RlLEMpOnd9LEMubm9EYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXI9Cm4g
YXJndW1lbnRzLmxlbmd0aD8oRT0zRGUsQyk6RX0sQy50cmFuc2l0aW9uRHVyYXRpb249M0RmdW5j
dGlvbihlKXtyZXR1cm4gYT0Kcmd1bWVudHMubGVuZ3RoPyhUPTNEZSxDKTpUfSxDfSxlLm1vZGVs
cy5tdWx0aUNoYXJ0PTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBDPQooZSl7cmV0dXJuIGUuZWFjaChm
dW5jdGlvbihlKXt2YXIgdT0zRGQzLnNlbGVjdCh0aGlzKSxmPTNEdGhpcztDLnVwZGF0ZT0zRGY9
CnVuY3Rpb24oKXt1LmNhbGwoQyl9LEMuY29udGFpbmVyPTNEdGhpczt2YXIgaz0zRChyfHxwYXJz
ZUludCh1LnN0eWxlKCJ3aWR0aD0KIikpfHw5NjApLXQubGVmdC10LnJpZ2h0LEw9M0QoaXx8cGFy
c2VJbnQodS5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXQudG9wLXQuPQpib3R0b20sQT0zRGUuZmls
dGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkJiZlLnR5cGU9M0Q9M0QibGluZSImJmUu
eUE9Cnhpcz0zRD0zRDF9KSxPPTNEZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJs
ZWQmJmUudHlwZT0zRD0zRCJsaW5lIj0KJiZlLnlBeGlzPTNEPTNEMn0pLE09M0RlLmZpbHRlcihm
dW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZCYmZS50eXBlPTNEPTNEPQoiYmFyIiYmZS55QXhp
cz0zRD0zRDF9KSxfPTNEZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQmJmUu
dHlwZT0KPTNEPTNEImJhciImJmUueUF4aXM9M0Q9M0QyfSksRD0zRGUuZmlsdGVyKGZ1bmN0aW9u
KGUpe3JldHVybiFlLmRpc2FibGVkJiZlPQoudHlwZT0zRD0zRCJhcmVhIiYmZS55QXhpcz0zRD0z
RDF9KSxQPTNEZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWI9CmxlZCYmZS50eXBl
PTNEPTNEImFyZWEiJiZlLnlBeGlzPTNEPTNEMn0pLEg9M0RlLmZpbHRlcihmdW5jdGlvbihlKXty
ZXR1cm4hZT0KLmRpc2FibGVkJiZlLnlBeGlzPTNEPTNEMX0pLm1hcChmdW5jdGlvbihlKXtyZXR1
cm4gZS52YWx1ZXMubWFwKGZ1bmN0aW9uKGUsPQp0KXtyZXR1cm57eDplLngseTplLnl9fSl9KSxC
PTNEZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQmJmUueUE9Cnhpcz0zRD0z
RDJ9KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlvbihlLHQpe3Jl
dHVybnt4OmUueD0KLHk6ZS55fX0pfSk7YS5kb21haW4oZDMuZXh0ZW50KGQzLm1lcmdlKEguY29u
Y2F0KEIpKSxmdW5jdGlvbihlKXtyZXR1cm4gZS54PQp9KSkucmFuZ2UoWzAsa10pO3ZhciBqPTNE
dS5zZWxlY3RBbGwoImcud3JhcC5tdWx0aUNoYXJ0IikuZGF0YShbZV0pLEY9M0RqLmU9Cm50ZXIo
KS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIndyYXAgbnZkMyBtdWx0aUNoYXJ0IikuYXBwZW5k
KCJnIik7Ri5hcHBlbj0KZCgiZyIpLmF0dHIoImNsYXNzIiwieCBheGlzIiksRi5hcHBlbmQoImci
KS5hdHRyKCJjbGFzcyIsInkxIGF4aXMiKSxGLmFwcGVuPQpkKCJnIikuYXR0cigiY2xhc3MiLCJ5
MiBheGlzIiksRi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImxpbmVzMVdyYXAiKSxGLmE9CnBw
ZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsaW5lczJXcmFwIiksRi5hcHBlbmQoImciKS5hdHRyKCJj
bGFzcyIsImJhcnMxV3JhcD0KIiksRi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImJhcnMyV3Jh
cCIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJzdGFjPQprMVdyYXAiKSxGLmFwcGVuZCgi
ZyIpLmF0dHIoImNsYXNzIiwic3RhY2syV3JhcCIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3M9
CiIsImxlZ2VuZFdyYXAiKTt2YXIgST0zRGouc2VsZWN0KCJnIik7cyYmKHgud2lkdGgoay8yKSxJ
LnNlbGVjdCgiLmxlZ2VuZFdyYT0KcCIpLmRhdHVtKGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBl
Lm9yaWdpbmFsS2V5PTNEZS5vcmlnaW5hbEtleT0zRD0zRD0zRHVuPQpkZWZpbmVkP2Uua2V5OmUu
b3JpZ2luYWxLZXksZS5rZXk9M0RlLm9yaWdpbmFsS2V5KyhlLnlBeGlzPTNEPTNEMT8iIjoiIChy
aWc9Cmh0IGF4aXMpIiksZX0pKS5jYWxsKHgpLHQudG9wIT0zRHguaGVpZ2h0KCkmJih0LnRvcD0z
RHguaGVpZ2h0KCksTD0zRChpfHxwYT0KcnNlSW50KHUuc3R5bGUoImhlaWdodCIpKXx8NDAwKS10
LnRvcC10LmJvdHRvbSksSS5zZWxlY3QoIi5sZWdlbmRXcmFwIikuYXR0PQpyKCJ0cmFuc2Zvcm0i
LCJ0cmFuc2xhdGUoIitrLzIrIiwiKyAtdC50b3ArIikiKSksZC53aWR0aChrKS5oZWlnaHQoTCku
aW50ZXI9CnBvbGF0ZSgibW9ub3RvbmUiKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVy
biBlLmNvbG9yfHxuW3Qlbi5sZW5ndGhdfT0KKS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4h
ZVtuXS5kaXNhYmxlZCYmZVtuXS55QXhpcz0zRD0zRDEmJmVbbl0udHlwZT0KPTNEPTNEImxpbmUi
fSkpLHYud2lkdGgoaykuaGVpZ2h0KEwpLmludGVycG9sYXRlKCJtb25vdG9uZSIpLmNvbG9yKGUu
bWFwKGZ1PQpuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8blt0JW4ubGVuZ3RoXX0pLmZpbHRl
cihmdW5jdGlvbih0LG4pe3JldHVybiFlW249Cl0uZGlzYWJsZWQmJmVbbl0ueUF4aXM9M0Q9M0Qy
JiZlW25dLnR5cGU9M0Q9M0QibGluZSJ9KSksbS53aWR0aChrKS5oZWlnaHQoTD0KKS5jb2xvcihl
Lm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxuW3Qlbi5sZW5ndGhdfSkuZmlsdGVy
KGZ1bmN0aW9uPQoodCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZCYmZVtuXS55QXhpcz0zRD0zRDEm
JmVbbl0udHlwZT0zRD0zRCJiYXIifSkpLGcud2k9CmR0aChrKS5oZWlnaHQoTCkuY29sb3IoZS5t
YXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8blt0JW4ubGVuZ3RoXX0pLj0KZmlsdGVy
KGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWQmJmVbbl0ueUF4aXM9M0Q9M0QyJiZl
W25dLnR5cGU9M0Q9Cj0zRCJiYXIifSkpLHkud2lkdGgoaykuaGVpZ2h0KEwpLmNvbG9yKGUubWFw
KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fD0Kblt0JW4ubGVuZ3RoXX0pLmZpbHRlcihm
dW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkJiZlW25dLnlBeGlzPTNEPTNEPQoxJiZl
W25dLnR5cGU9M0Q9M0QiYXJlYSJ9KSksYi53aWR0aChrKS5oZWlnaHQoTCkuY29sb3IoZS5tYXAo
ZnVuY3Rpb24oZSx0KXs9CnJldHVybiBlLmNvbG9yfHxuW3Qlbi5sZW5ndGhdfSkuZmlsdGVyKGZ1
bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWQmJj0KZVtuXS55QXhpcz0zRD0zRDImJmVb
bl0udHlwZT0zRD0zRCJhcmVhIn0pKSxJLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiPQor
dC5sZWZ0KyIsIit0LnRvcCsiKSIpO3ZhciBxPTNESS5zZWxlY3QoIi5saW5lczFXcmFwIikuZGF0
dW0oQSksUj0zREkuc2VsZWM9CnQoIi5iYXJzMVdyYXAiKS5kYXR1bShNKSxVPTNESS5zZWxlY3Qo
Ii5zdGFjazFXcmFwIikuZGF0dW0oRCksej0zREkuc2VsZWN0KD0KIi5saW5lczJXcmFwIikuZGF0
dW0oTyksVz0zREkuc2VsZWN0KCIuYmFyczJXcmFwIikuZGF0dW0oXyksWD0zREkuc2VsZWN0KCIu
PQpzdGFjazJXcmFwIikuZGF0dW0oUCksVj0zREQubGVuZ3RoP0QubWFwKGZ1bmN0aW9uKGUpe3Jl
dHVybiBlLnZhbHVlc30pLnJlZHU9CmNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubWFwKGZ1bmN0
aW9uKGUsbil7cmV0dXJue3g6ZS54LHk6ZS55K3Rbbl0ueX19KX0pLj0KY29uY2F0KFt7eDowLHk6
MH1dKTpbXSwkPTNEUC5sZW5ndGg/UC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzfSku
cmVkPQp1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5tYXAoZnVuY3Rpb24oZSxuKXtyZXR1cm57
eDplLngseTplLnkrdFtuXS55fX0pfSk9Ci5jb25jYXQoW3t4OjAseTowfV0pOltdO2guZG9tYWlu
KGx8fGQzLmV4dGVudChkMy5tZXJnZShIKS5jb25jYXQoViksZnVuY3Rpbz0KbihlKXtyZXR1cm4g
ZS55fSkpLnJhbmdlKFswLExdKSxwLmRvbWFpbihjfHxkMy5leHRlbnQoZDMubWVyZ2UoQikuY29u
Y2F0KCQpPQosZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0pKS5yYW5nZShbMCxMXSksZC55RG9tYWlu
KGguZG9tYWluKCkpLG0ueURvbWFpbihoLmQ9Cm9tYWluKCkpLHkueURvbWFpbihoLmRvbWFpbigp
KSx2LnlEb21haW4ocC5kb21haW4oKSksZy55RG9tYWluKHAuZG9tYWluKCkpLD0KYi55RG9tYWlu
KHAuZG9tYWluKCkpLEQubGVuZ3RoJiZkMy50cmFuc2l0aW9uKFUpLmNhbGwoeSksUC5sZW5ndGgm
JmQzLnRyYW5zPQppdGlvbihYKS5jYWxsKGIpLE0ubGVuZ3RoJiZkMy50cmFuc2l0aW9uKFIpLmNh
bGwobSksXy5sZW5ndGgmJmQzLnRyYW5zaXRpb249CihXKS5jYWxsKGcpLEEubGVuZ3RoJiZkMy50
cmFuc2l0aW9uKHEpLmNhbGwoZCksTy5sZW5ndGgmJmQzLnRyYW5zaXRpb24oeikuYz0KYWxsKHYp
LHcudGlja3Moay8xMDApLnRpY2tTaXplKC1MLDApLEkuc2VsZWN0KCIueC5heGlzIikuYXR0cigi
dHJhbnNmb3JtIiwiPQp0cmFuc2xhdGUoMCwiK0wrIikiKSxkMy50cmFuc2l0aW9uKEkuc2VsZWN0
KCIueC5heGlzIikpLmNhbGwodyksRS50aWNrcyhMLzM9CjYpLnRpY2tTaXplKC1rLDApLGQzLnRy
YW5zaXRpb24oSS5zZWxlY3QoIi55MS5heGlzIikpLmNhbGwoRSksUy50aWNrcyhMLzM2KT0KLnRp
Y2tTaXplKC1rLDApLGQzLnRyYW5zaXRpb24oSS5zZWxlY3QoIi55Mi5heGlzIikpLmNhbGwoUyks
SS5zZWxlY3QoIi55Mi5hPQp4aXMiKS5zdHlsZSgib3BhY2l0eSIsQi5sZW5ndGg/MTowKS5hdHRy
KCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIithLnJhbmdlKCk9ClsxXSsiLDApIikseC5kaXNwYXRj
aC5vbigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe0MudXBkYXRlKCl9KSxULm9uKCJ0b29sdD0K
aXBTaG93IixmdW5jdGlvbihlKXtvJiZOKGUsZi5wYXJlbnROb2RlKX0pfSksQ312YXIgdD0zRHt0
b3A6MzAscmlnaHQ6MjAsYm90PQp0b206NTAsbGVmdDo2MH0sbj0zRGQzLnNjYWxlLmNhdGVnb3J5
MjAoKS5yYW5nZSgpLHI9M0RudWxsLGk9M0RudWxsLHM9M0QhMCw9Cm89M0QhMCx1PTNEZnVuY3Rp
b24oZSx0LG4scixpKXtyZXR1cm4iPGgzPiIrZSsiPC9oMz4iKyI8cD4iK24rIiBhdCAiK3QrIjwv
cD0KPiJ9LGEsZixsLGMsYT0zRGQzLnNjYWxlLmxpbmVhcigpLGg9M0RkMy5zY2FsZS5saW5lYXIo
KSxwPTNEZDMuc2NhbGUubGluZWFyPQooKSxkPTNEZS5tb2RlbHMubGluZSgpLnlTY2FsZShoKSx2
PTNEZS5tb2RlbHMubGluZSgpLnlTY2FsZShwKSxtPTNEZS5tb2RlbHM9Ci5tdWx0aUJhcigpLnN0
YWNrZWQoITEpLnlTY2FsZShoKSxnPTNEZS5tb2RlbHMubXVsdGlCYXIoKS5zdGFja2VkKCExKS55
U2NhbD0KZShwKSx5PTNEZS5tb2RlbHMuc3RhY2tlZEFyZWEoKS55U2NhbGUoaCksYj0zRGUubW9k
ZWxzLnN0YWNrZWRBcmVhKCkueVNjYWxlPQoocCksdz0zRGUubW9kZWxzLmF4aXMoKS5zY2FsZShh
KS5vcmllbnQoImJvdHRvbSIpLnRpY2tQYWRkaW5nKDUpLEU9M0RlLm1vZGU9CmxzLmF4aXMoKS5z
Y2FsZShoKS5vcmllbnQoImxlZnQiKSxTPTNEZS5tb2RlbHMuYXhpcygpLnNjYWxlKHApLm9yaWVu
dCgicmlnaD0KdCIpLHg9M0RlLm1vZGVscy5sZWdlbmQoKS5oZWlnaHQoMzApLFQ9M0RkMy5kaXNw
YXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwPQpIaWRlIiksTj0zRGZ1bmN0aW9uKHQsbil7dmFy
IHI9M0R0LnBvc1swXSsobi5vZmZzZXRMZWZ0fHwwKSxpPTNEdC5wb3NbMV0rKG49Ci5vZmZzZXRU
b3B8fDApLHM9M0R3LnRpY2tGb3JtYXQoKShkLngoKSh0LnBvaW50LHQucG9pbnRJbmRleCkpLG89
M0QodC5zZXJpZT0Kcy55QXhpcz0zRD0zRDI/UzpFKS50aWNrRm9ybWF0KCkoZC55KCkodC5wb2lu
dCx0LnBvaW50SW5kZXgpKSxhPTNEdSh0LnNlcmllPQpzLmtleSxzLG8sdCxDKTtlLnRvb2x0aXAu
c2hvdyhbcixpXSxhLHVuZGVmaW5lZCx1bmRlZmluZWQsbi5vZmZzZXRQYXJlbnQpfTs9CnJldHVy
biBkLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2Uu
cG9zPTNEW2UucG9zWz0KMF0rdC5sZWZ0LGUucG9zWzFdK3QudG9wXSxULnRvb2x0aXBTaG93KGUp
fSksZC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0PQoudG9vbHRpcCIsZnVuY3Rpb24oZSl7
VC50b29sdGlwSGlkZShlKX0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG89Cm9s
dGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXSt0LmxlZnQsZS5wb3NbMV0rdC50b3Bd
LFQudG9vbHRpcFNob3coZT0KKX0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29s
dGlwIixmdW5jdGlvbihlKXtULnRvb2x0aXBIaWRlKGUpfSksPQptLmRpc3BhdGNoLm9uKCJlbGVt
ZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK3QubGU9
CmZ0LGUucG9zWzFdK3QudG9wXSxULnRvb2x0aXBTaG93KGUpfSksbS5kaXNwYXRjaC5vbigiZWxl
bWVudE1vdXNlb3V0LnRvb2x0aT0KcCIsZnVuY3Rpb24oZSl7VC50b29sdGlwSGlkZShlKX0pLGcu
ZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsPQpmdW5jdGlvbihlKXtlLnBv
cz0zRFtlLnBvc1swXSt0LmxlZnQsZS5wb3NbMV0rdC50b3BdLFQudG9vbHRpcFNob3coZSl9KSxn
LmQ9CmlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtULnRv
b2x0aXBIaWRlKGUpfSkseS5kaXNwYT0KdGNoLm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7
aWYoIU1hdGgucm91bmQoeS55KCkoZS5wb2ludCkqMTAwKSlyZXR1cm4gPQpzZXRUaW1lb3V0KGZ1
bmN0aW9uKCl7ZDMuc2VsZWN0QWxsKCIucG9pbnQuaG92ZXIiKS5jbGFzc2VkKCJob3ZlciIsITEp
fSwwKSw9CiExO2UucG9zPTNEW2UucG9zWzBdK3QubGVmdCxlLnBvc1sxXSt0LnRvcF0sVC50b29s
dGlwU2hvdyhlKX0pLHkuZGlzcGF0Y2gubz0KbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKGUpe1Qu
dG9vbHRpcEhpZGUoZSl9KSxiLmRpc3BhdGNoLm9uKCJ0b29sdGlwU2hvdyIsPQpmdW5jdGlvbihl
KXtpZighTWF0aC5yb3VuZChiLnkoKShlLnBvaW50KSoxMDApKXJldHVybiBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCk9CntkMy5zZWxlY3RBbGwoIi5wb2ludC5ob3ZlciIpLmNsYXNzZWQoImhvdmVyIiwh
MSl9LDApLCExO2UucG9zPTNEW2UucG9zWzBdKz0KdC5sZWZ0LGUucG9zWzFdK3QudG9wXSxULnRv
b2x0aXBTaG93KGUpfSksYi5kaXNwYXRjaC5vbigidG9vbHRpcEhpZGUiLGZ1bmN0PQppb24oZSl7
VC50b29sdGlwSGlkZShlKX0pLGQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRp
cCIsZnVuY3Rpb249CihlKXtlLnBvcz0zRFtlLnBvc1swXSt0LmxlZnQsZS5wb3NbMV0rdC50b3Bd
LFQudG9vbHRpcFNob3coZSl9KSxkLmRpc3BhdGNoLj0Kb24oImVsZW1lbnRNb3VzZW91dC50b29s
dGlwIixmdW5jdGlvbihlKXtULnRvb2x0aXBIaWRlKGUpfSksdi5kaXNwYXRjaC5vbigiPQplbGVt
ZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK3QubGVm
dCxlLnBvc1sxXSt0LnQ9Cm9wXSxULnRvb2x0aXBTaG93KGUpfSksdi5kaXNwYXRjaC5vbigiZWxl
bWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpez0KVC50b29sdGlwSGlkZShlKX0pLFQu
b24oInRvb2x0aXBIaWRlIixmdW5jdGlvbigpe28mJmUudG9vbHRpcC5jbGVhbnVwKCl9KSxDPQou
ZGlzcGF0Y2g9M0RULEMubGluZXMxPTNEZCxDLmxpbmVzMj0zRHYsQy5iYXJzMT0zRG0sQy5iYXJz
Mj0zRGcsQy5zdGFjazE9M0Q9CnksQy5zdGFjazI9M0RiLEMueEF4aXM9M0R3LEMueUF4aXMxPTNE
RSxDLnlBeGlzMj0zRFMsQy5vcHRpb25zPTNEZS51dGlscy5vcD0KdGlvbnNGdW5jLmJpbmQoQyks
Qy54PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGdldFg9M0RlLGQueChl
PQopLG0ueChlKSxDKTpnZXRYfSxDLnk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oZ2V0WT0zRGUsZC55KGU9CiksbS55KGUpLEMpOmdldFl9LEMueURvbWFpbjE9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGUsQz0KKTpsfSxDLnlEb21haW4y
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLEMpOmN9LEMubWFy
Z2luPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0zRGUsQyk6dH0s
Qy53aWR0aD0zRGZ1bmN0aW9uKGUpe3I9CmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLEMp
OnJ9LEMuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cz0KLmxlbmd0aD8oaT0z
RGUsQyk6aX0sQy5jb2xvcj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhu
PTNEZSx4PQouY29sb3IoZSksQyk6bn0sQy5zaG93TGVnZW5kPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLEM9Cik6c30sQy50b29sdGlwcz0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZSxDKTpvfSxDLnRvb2x0aT0KcENvbnRlbnQ9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsQyk6dX0sQ30sZS5t
b2RlbHMub2hsPQpjQmFyPTNEZnVuY3Rpb24oKXtmdW5jdGlvbiB4KGUpe3JldHVybiBlLmVhY2go
ZnVuY3Rpb24oZSl7dmFyIGc9M0RuLXQubGVmdC09CnQucmlnaHQseD0zRHItdC50b3AtdC5ib3R0
b20sVD0zRGQzLnNlbGVjdCh0aGlzKTtzLmRvbWFpbih5fHxkMy5leHRlbnQoZVswXT0KLnZhbHVl
cy5tYXAodSkuY29uY2F0KHApKSksdj9zLnJhbmdlKHd8fFtnKi41L2VbMF0udmFsdWVzLmxlbmd0
aCxnKihlWzBdLnZhPQpsdWVzLmxlbmd0aC0uNSkvZVswXS52YWx1ZXMubGVuZ3RoXSk6cy5yYW5n
ZSh3fHxbMCxnXSksby5kb21haW4oYnx8W2QzLm1pbig9CmVbMF0udmFsdWVzLm1hcChoKS5jb25j
YXQoZCkpLGQzLm1heChlWzBdLnZhbHVlcy5tYXAoYykuY29uY2F0KGQpKV0pLnJhbmdlKD0KRXx8
W3gsMF0pLHMuZG9tYWluKClbMF09M0Q9M0Q9M0RzLmRvbWFpbigpWzFdJiYocy5kb21haW4oKVsw
XT9zLmRvbWFpbihbcy5kPQpvbWFpbigpWzBdLXMuZG9tYWluKClbMF0qLjAxLHMuZG9tYWluKClb
MV0rcy5kb21haW4oKVsxXSouMDFdKTpzLmRvbWFpbihbLTE9CiwxXSkpLG8uZG9tYWluKClbMF09
M0Q9M0Q9M0RvLmRvbWFpbigpWzFdJiYoby5kb21haW4oKVswXT9vLmRvbWFpbihbby5kb21haT0K
bigpWzBdK28uZG9tYWluKClbMF0qLjAxLG8uZG9tYWluKClbMV0tby5kb21haW4oKVsxXSouMDFd
KTpvLmRvbWFpbihbLTEsMV0pPQopO3ZhciBOPTNEZDMuc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgi
Zy5udi13cmFwLm52LW9obGNCYXIiKS5kYXRhKFtlWzBdLnZhbHU9CmVzXSksQz0zRE4uZW50ZXIo
KS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1vaGxjQmFyIiksaz0z
RD0KQy5hcHBlbmQoImRlZnMiKSxMPTNEQy5hcHBlbmQoImciKSxBPTNETi5zZWxlY3QoImciKTtM
LmFwcGVuZCgiZyIpLmF0dHIoImNsPQphc3MiLCJudi10aWNrcyIpLE4uYXR0cigidHJhbnNmb3Jt
IiwidHJhbnNsYXRlKCIrdC5sZWZ0KyIsIit0LnRvcCsiKSIpLFQub249CigiY2xpY2siLGZ1bmN0
aW9uKGUsdCl7Uy5jaGFydENsaWNrKHtkYXRhOmUsaW5kZXg6dCxwb3M6ZDMuZXZlbnQsaWQ6aX0p
fSksaz0KLmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIsIm52LWNoYXJ0LWNsaXAtcGF0aC0i
K2kpLmFwcGVuZCgicmVjdCIpLE4uc2VsPQplY3QoIiNudi1jaGFydC1jbGlwLXBhdGgtIitpKyIg
cmVjdCIpLmF0dHIoIndpZHRoIixnKS5hdHRyKCJoZWlnaHQiLHgpLEEuYXQ9CnRyKCJjbGlwLXBh
dGgiLG0/InVybCgjbnYtY2hhcnQtY2xpcC1wYXRoLSIraSsiKSI6IiIpO3ZhciBPPTNETi5zZWxl
Y3QoIi5udj0KLXRpY2tzIikuc2VsZWN0QWxsKCIubnYtdGljayIpLmRhdGEoZnVuY3Rpb24oZSl7
cmV0dXJuIGV9KTtPLmV4aXQoKS5yZW1vdmUoPQopO3ZhciBNPTNETy5lbnRlcigpLmFwcGVuZCgi
cGF0aCIpLmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQsbil7cmV0dXJuKGYoZSw9CnQpPmwoZSx0
KT8ibnYtdGljayBuZWdhdGl2ZSI6Im52LXRpY2sgcG9zaXRpdmUiKSsiIG52LXRpY2stIituKyIt
Iit0fSkuYXR0cj0KKCJkIixmdW5jdGlvbih0LG4pe3ZhciByPTNEZy9lWzBdLnZhbHVlcy5sZW5n
dGgqLjk7cmV0dXJuIm0wLDBsMCwiKyhvKGYodCxuPQopKS1vKGModCxuKSkpKyJsIisgLXIvMisi
LDBsIityLzIrIiwwbDAsIisobyhoKHQsbikpLW8oZih0LG4pKSkrImwwLCIrKG8obCg9CnQsbikp
LW8oaCh0LG4pKSkrImwiK3IvMisiLDBsIisgLXIvMisiLDB6In0pLmF0dHIoInRyYW5zZm9ybSIs
ZnVuY3Rpb24oZSx0KT0Ke3JldHVybiJ0cmFuc2xhdGUoIitzKHUoZSx0KSkrIiwiK28oYyhlLHQp
KSsiKSJ9KS5vbigibW91c2VvdmVyIixmdW5jdGlvbih0PQosbil7ZDMuc2VsZWN0KHRoaXMpLmNs
YXNzZWQoImhvdmVyIiwhMCksUy5lbGVtZW50TW91c2VvdmVyKHtwb2ludDp0LHNlcmllczo9CmVb
MF0scG9zOltzKHUodCxuKSksbyhhKHQsbikpXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6MCxl
OmQzLmV2ZW50fSl9KS5vbj0KKCJtb3VzZW91dCIsZnVuY3Rpb24odCxuKXtkMy5zZWxlY3QodGhp
cykuY2xhc3NlZCgiaG92ZXIiLCExKSxTLmVsZW1lbnRNb3VzPQplb3V0KHtwb2ludDp0LHNlcmll
czplWzBdLHBvaW50SW5kZXg6bixzZXJpZXNJbmRleDowLGU6ZDMuZXZlbnR9KX0pLm9uKCJjbGk9
CmNrIixmdW5jdGlvbihlLHQpe1MuZWxlbWVudENsaWNrKHt2YWx1ZTphKGUsdCksZGF0YTplLGlu
ZGV4OnQscG9zOltzKHUoZSx0KT0KKSxvKGEoZSx0KSldLGU6ZDMuZXZlbnQsaWQ6aX0pLGQzLmV2
ZW50LnN0b3BQcm9wYWdhdGlvbigpfSkub24oImRibGNsaWNrIixmPQp1bmN0aW9uKGUsdCl7Uy5l
bGVtZW50RGJsQ2xpY2soe3ZhbHVlOmEoZSx0KSxkYXRhOmUsaW5kZXg6dCxwb3M6W3ModShlLHQp
KSw9Cm8oYShlLHQpKV0sZTpkMy5ldmVudCxpZDppfSksZDMuZXZlbnQuc3RvcFByb3BhZ2F0aW9u
KCl9KTtPLmF0dHIoImNsYXNzIixmdT0KbmN0aW9uKGUsdCxuKXtyZXR1cm4oZihlLHQpPmwoZSx0
KT8ibnYtdGljayBuZWdhdGl2ZSI6Im52LXRpY2sgcG9zaXRpdmUiKSsiPQogbnYtdGljay0iK24r
Ii0iK3R9KSxkMy50cmFuc2l0aW9uKE8pLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXty
ZXR1cm49CiJ0cmFuc2xhdGUoIitzKHUoZSx0KSkrIiwiK28oYyhlLHQpKSsiKSJ9KS5hdHRyKCJk
IixmdW5jdGlvbih0LG4pe3ZhciByPTNEZz0KL2VbMF0udmFsdWVzLmxlbmd0aCouOTtyZXR1cm4i
bTAsMGwwLCIrKG8oZih0LG4pKS1vKGModCxuKSkpKyJsIisgLXIvMisiLDBsPQoiK3IvMisiLDBs
MCwiKyhvKGgodCxuKSktbyhmKHQsbikpKSsibDAsIisobyhsKHQsbikpLW8oaCh0LG4pKSkrImwi
K3IvMisiLDA9CmwiKyAtci8yKyIsMHoifSl9KSx4fXZhciB0PTNEe3RvcDowLHJpZ2h0OjAsYm90
dG9tOjAsbGVmdDowfSxuPTNEOTYwLHI9M0Q1MD0KMCxpPTNETWF0aC5mbG9vcihNYXRoLnJhbmRv
bSgpKjFlNCkscz0zRGQzLnNjYWxlLmxpbmVhcigpLG89M0RkMy5zY2FsZS5saW5lPQphcigpLHU9
M0RmdW5jdGlvbihlKXtyZXR1cm4gZS54fSxhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0sZj0z
RGZ1bmN0aW9uKGU9Cil7cmV0dXJuIGUub3Blbn0sbD0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLmNs
b3NlfSxjPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUuaD0KaWdofSxoPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGUubG93fSxwPTNEW10sZD0zRFtdLHY9M0QhMSxtPTNEITAsZz0zRGUudXRpbHMuPQpkZWZh
dWx0Q29sb3IoKSx5LGIsdyxFLFM9M0RkMy5kaXNwYXRjaCgiY2hhcnRDbGljayIsImVsZW1lbnRD
bGljayIsImVsZW1lbnQ9CkRibENsaWNrIiwiZWxlbWVudE1vdXNlb3ZlciIsImVsZW1lbnRNb3Vz
ZW91dCIpO3JldHVybiB4LmRpc3BhdGNoPTNEUyx4Lm9wdD0KaW9ucz0zRGUudXRpbHMub3B0aW9u
c0Z1bmMuYmluZCh4KSx4Lng9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0PQpo
Pyh1PTNEZSx4KTp1fSx4Lnk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
YT0zRGUseCk6YX0seC5vcGU9Cm49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oZj0zRGUseCk6Zn0seC5jbG9zZT0zRGZ1bmN0aW9uKGUpez0KcmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGw9M0RlLHgpOmx9LHguaGlnaD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
PQpsZW5ndGg/KGM9M0RlLHgpOmN9LHgubG93PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGg9M0RlLHgpOmg9Cn0seC5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8odC50b3A9M0R0eXBlb2YgZS50b3AhPTNEIj0KdW5kZWZpbmVkIj9lLnRv
cDp0LnRvcCx0LnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp0
LnJpPQpnaHQsdC5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0
b206dC5ib3R0b20sdC5sZWZ0PTNEdHk9CnBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVm
dDp0LmxlZnQseCk6dH0seC53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybj0KIGFyZ3VtZW50cy5s
ZW5ndGg/KG49M0RlLHgpOm59LHguaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5nPQp0aD8ocj0zRGUseCk6cn0seC54U2NhbGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8ocz0zRGUseCk6c309Cix4LnlTY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZSx4KTpvfSx4LnhEb21haW49M0RmdT0KbmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PTNEZSx4KTp5fSx4LnlEb21haW49M0RmdW5jdGlv
bihlKXtyZXR1PQpybiBhcmd1bWVudHMubGVuZ3RoPyhiPTNEZSx4KTpifSx4LnhSYW5nZT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGU9Cm5ndGg/KHc9M0RlLHgpOnd9LHgueVJhbmdl
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlLHgpOj0KRX0seC5m
b3JjZVg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUseCk6cH0s
eC5mb3JjZVk9M0RmPQp1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSx4
KTpkfSx4LnBhZERhdGE9M0RmdW5jdGlvbihlKXtyZXQ9CnVybiBhcmd1bWVudHMubGVuZ3RoPyh2
PTNEZSx4KTp2fSx4LmNsaXBFZGdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cz0KLmxl
bmd0aD8obT0zRGUseCk6bX0seC5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhnPTNEZS51PQp0aWxzLmdldENvbG9yKHQpLHgpOmd9LHguaWQ9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUseCk9CjppfSx4fSxlLm1vZGVscy5waWU9
M0RmdW5jdGlvbigpe2Z1bmN0aW9uIFMoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXtmdT0K
bmN0aW9uIHEoZSl7dmFyIHQ9M0QoZS5zdGFydEFuZ2xlK2UuZW5kQW5nbGUpKjkwL01hdGguUEkt
OTA7cmV0dXJuIHQ+OTA/dC0xPQo4MDp0fWZ1bmN0aW9uIFIoZSl7ZS5lbmRBbmdsZT0zRGlzTmFO
KGUuZW5kQW5nbGUpPzA6ZS5lbmRBbmdsZSxlLnN0YXJ0QW5nbGU9Cj0zRGlzTmFOKGUuc3RhcnRB
bmdsZSk/MDplLnN0YXJ0QW5nbGUsbXx8KGUuaW5uZXJSYWRpdXM9M0QwKTt2YXIgdD0zRGQzLmlu
dD0KZXJwb2xhdGUodGhpcy5fY3VycmVudCxlKTtyZXR1cm4gdGhpcy5fY3VycmVudD0zRHQoMCks
ZnVuY3Rpb24oZSl7cmV0dXJuIEEoPQp0KGUpKX19ZnVuY3Rpb24gVShlKXtlLmlubmVyUmFkaXVz
PTNEMDt2YXIgdD0zRGQzLmludGVycG9sYXRlKHtzdGFydEFuZ2xlOjA9CixlbmRBbmdsZTowfSxl
KTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIEEodChlKSl9fXZhciBvPTNEbi10LmxlZnQtdC5y
aWdodD0KLGY9M0RyLXQudG9wLXQuYm90dG9tLFM9M0RNYXRoLm1pbihvLGYpLzIseD0zRFMtUy81
LFQ9M0RkMy5zZWxlY3QodGhpcyksTj0KPTNEVC5zZWxlY3RBbGwoIi5udi13cmFwLm52LXBpZSIp
LmRhdGEoZSksQz0zRE4uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjPQpsYXNzIiwibnZkMyBu
di13cmFwIG52LXBpZSBudi1jaGFydC0iK3UpLGs9M0RDLmFwcGVuZCgiZyIpLEw9M0ROLnNlbGVj
dCgiZyI9Cik7ay5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXBpZSIpLGsuYXBwZW5kKCJn
IikuYXR0cigiY2xhc3MiLCJudi1waWVMYT0KYmVscyIpLE4uYXR0cigidHJhbnNmb3JtIiwidHJh
bnNsYXRlKCIrdC5sZWZ0KyIsIit0LnRvcCsiKSIpLEwuc2VsZWN0KCIubnYtPQpwaWUiKS5hdHRy
KCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitvLzIrIiwiK2YvMisiKSIpLEwuc2VsZWN0KCIubnYt
cGllTGFiZWw9CnMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitvLzIrIiwiK2YvMisi
KSIpLFQub24oImNsaWNrIixmdW5jdGlvbihlLD0KdCl7RS5jaGFydENsaWNrKHtkYXRhOmUsaW5k
ZXg6dCxwb3M6ZDMuZXZlbnQsaWQ6dX0pfSk7dmFyIEE9M0RkMy5zdmcuYXJjKCkuPQpvdXRlclJh
ZGl1cyh4KTt5JiZBLnN0YXJ0QW5nbGUoeSksYiYmQS5lbmRBbmdsZShiKSxtJiZBLmlubmVyUmFk
aXVzKFMqdyk7dmE9CnIgTz0zRGQzLmxheW91dC5waWUoKS5zb3J0KG51bGwpLnZhbHVlKGZ1bmN0
aW9uKGUpe3JldHVybiBlLmRpc2FibGVkPzA6cyhlKT0KfSksTT0zRE4uc2VsZWN0KCIubnYtcGll
Iikuc2VsZWN0QWxsKCIubnYtc2xpY2UiKS5kYXRhKE8pLF89M0ROLnNlbGVjdCgiLm52PQotcGll
TGFiZWxzIikuc2VsZWN0QWxsKCIubnYtbGFiZWwiKS5kYXRhKE8pO00uZXhpdCgpLnJlbW92ZSgp
LF8uZXhpdCgpLnJlbW89CnZlKCk7dmFyIEQ9M0RNLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudi1zbGljZSIpLm9uKCJtb3VzZW92ZXIiLD0KZnVuY3Rpb24oZSx0KXtkMy5zZWxl
Y3QodGhpcykuY2xhc3NlZCgiaG92ZXIiLCEwKSxFLmVsZW1lbnRNb3VzZW92ZXIoe2xhYmVsPQo6
aShlLmRhdGEpLHZhbHVlOnMoZS5kYXRhKSxwb2ludDplLmRhdGEscG9pbnRJbmRleDp0LHBvczpb
ZDMuZXZlbnQucGFnZVgsZDM9Ci5ldmVudC5wYWdlWV0saWQ6dX0pfSkub24oIm1vdXNlb3V0Iixm
dW5jdGlvbihlLHQpe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKD0KImhvdmVyIiwhMSksRS5lbGVt
ZW50TW91c2VvdXQoe2xhYmVsOmkoZS5kYXRhKSx2YWx1ZTpzKGUuZGF0YSkscG9pbnQ6ZS5kYXRh
PQosaW5kZXg6dCxpZDp1fSl9KS5vbigiY2xpY2siLGZ1bmN0aW9uKGUsdCl7RS5lbGVtZW50Q2xp
Y2soe2xhYmVsOmkoZS5kYXRhKSw9CnZhbHVlOnMoZS5kYXRhKSxwb2ludDplLmRhdGEsaW5kZXg6
dCxwb3M6ZDMuZXZlbnQsaWQ6dX0pLGQzLmV2ZW50LnN0b3BQcm9wYT0KZ2F0aW9uKCl9KS5vbigi
ZGJsY2xpY2siLGZ1bmN0aW9uKGUsdCl7RS5lbGVtZW50RGJsQ2xpY2soe2xhYmVsOmkoZS5kYXRh
KSx2PQphbHVlOnMoZS5kYXRhKSxwb2ludDplLmRhdGEsaW5kZXg6dCxwb3M6ZDMuZXZlbnQsaWQ6
dX0pLGQzLmV2ZW50LnN0b3BQcm9wYWc9CmF0aW9uKCl9KTtNLmF0dHIoImZpbGwiLGZ1bmN0aW9u
KGUsdCl7cmV0dXJuIGEoZSx0KX0pLmF0dHIoInN0cm9rZSIsZnVuY3Rpbz0KbihlLHQpe3JldHVy
biBhKGUsdCl9KTt2YXIgUD0zREQuYXBwZW5kKCJwYXRoIikuZWFjaChmdW5jdGlvbihlKXt0aGlz
Ll9jdXJyPQplbnQ9M0RlfSk7TS5zZWxlY3QoInBhdGgiKS5hdHRyKCJkIixBKTtpZihsKXt2YXIg
SD0zRGQzLnN2Zy5hcmMoKS5pbm5lclJhZGk9CnVzKDApO2MmJihIPTNEQSksaCYmKEg9M0RkMy5z
dmcuYXJjKCkub3V0ZXJSYWRpdXMoQS5vdXRlclJhZGl1cygpKSksXy5lbnRlcj0KKCkuYXBwZW5k
KCJnIikuY2xhc3NlZCgibnYtbGFiZWwiLCEwKS5lYWNoKGZ1bmN0aW9uKGUsdCl7dmFyIG49M0Rk
My5zZWxlY3QoPQp0aGlzKTtuLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSl7aWYoZyl7ZS5v
dXRlclJhZGl1cz0zRHgrMTAsZS5pbm5lclJhZGk9CnVzPTNEeCsxNTt2YXIgdD0zRChlLnN0YXJ0
QW5nbGUrZS5lbmRBbmdsZSkvMiooMTgwL01hdGguUEkpO3JldHVybihlLnN0YXJ0QT0KbmdsZStl
LmVuZEFuZ2xlKS8yPE1hdGguUEk/dC09M0Q5MDp0Kz0zRDkwLCJ0cmFuc2xhdGUoIitILmNlbnRy
b2lkKGUpKyIpIHJvPQp0YXRlKCIrdCsiKSJ9cmV0dXJuIGUub3V0ZXJSYWRpdXM9M0RTKzEwLGUu
aW5uZXJSYWRpdXM9M0RTKzE1LCJ0cmFuc2xhdGUoIis9CkguY2VudHJvaWQoZSkrIikifSksbi5h
cHBlbmQoInJlY3QiKS5zdHlsZSgic3Ryb2tlIiwiI2ZmZiIpLnN0eWxlKCJmaWxsIiwiIz0KZmZm
IikuYXR0cigicngiLDMpLmF0dHIoInJ5IiwzKSxuLmFwcGVuZCgidGV4dCIpLnN0eWxlKCJ0ZXh0
LWFuY2hvciIsZz8oZS5zPQp0YXJ0QW5nbGUrZS5lbmRBbmdsZSkvMjxNYXRoLlBJPyJzdGFydCI6
ImVuZCI6Im1pZGRsZSIpLnN0eWxlKCJmaWxsIiwiIzAwMCI9Cil9KTt2YXIgQj0zRHt9LGo9M0Qx
NCxGPTNEMTQwLEk9M0RmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5mbG9vcihlWzBdL0YpKkYrIj0K
LCIrTWF0aC5mbG9vcihlWzFdL2opKmp9O18uYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlKXtp
ZihnKXtlLm91dGVyUmFkaXVzPQo9M0R4KzEwLGUuaW5uZXJSYWRpdXM9M0R4KzE1O3ZhciB0PTNE
KGUuc3RhcnRBbmdsZStlLmVuZEFuZ2xlKS8yKigxODAvTWF0aC49ClBJKTtyZXR1cm4oZS5zdGFy
dEFuZ2xlK2UuZW5kQW5nbGUpLzI8TWF0aC5QST90LT0zRDkwOnQrPTNEOTAsInRyYW5zbGF0ZSgi
Kz0KSC5jZW50cm9pZChlKSsiKSByb3RhdGUoIit0KyIpIn1lLm91dGVyUmFkaXVzPTNEUysxMCxl
LmlubmVyUmFkaXVzPTNEUysxNTt2PQphciBuPTNESC5jZW50cm9pZChlKSxyPTNESShuKTtyZXR1
cm4gQltyXSYmKG5bMV0tPTNEaiksQltJKG4pXT0zRCEwLCJ0cmFuc2w9CmF0ZSgiK24rIikifSks
Xy5zZWxlY3QoIi5udi1sYWJlbCB0ZXh0Iikuc3R5bGUoInRleHQtYW5jaG9yIixnPyhkLnN0YXJ0
QW5nbD0KZStkLmVuZEFuZ2xlKS8yPE1hdGguUEk/InN0YXJ0IjoiZW5kIjoibWlkZGxlIikudGV4
dChmdW5jdGlvbihlLHQpe3ZhciBuPTNEPQooZS5lbmRBbmdsZS1lLnN0YXJ0QW5nbGUpLygyKk1h
dGguUEkpLHI9M0R7a2V5OmkoZS5kYXRhKSx2YWx1ZTpzKGUuZGF0YSkscGU9CnJjZW50OmQzLmZv
cm1hdCgiJSIpKG4pfTtyZXR1cm4gZS52YWx1ZSYmbj52P3JbcF06IiJ9KX19KSxTfXZhciB0PTNE
e3RvcDowLD0KcmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9LG49M0Q1MDAscj0zRDUwMCxpPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGUueH0scz0zRGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGUueX0sbz0zRGZ1
bmN0aW9uKGUpe3JldHVybiBlLmRlc2NyaXB0aW9ufSx1PTNETWF0aC5mbG9vcig9Ck1hdGgucmFu
ZG9tKCkqMWU0KSxhPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxmPTNEZDMuZm9ybWF0KCIsLjJm
IiksbD0zRCEwLD0KYz0zRCEwLGg9M0QhMSxwPTNEImtleSIsdj0zRC4wMixtPTNEITEsZz0zRCEx
LHk9M0QhMSxiPTNEITEsdz0zRC41LEU9M0RkMy5kPQppc3BhdGNoKCJjaGFydENsaWNrIiwiZWxl
bWVudENsaWNrIiwiZWxlbWVudERibENsaWNrIiwiZWxlbWVudE1vdXNlb3ZlciIsImU9CmxlbWVu
dE1vdXNlb3V0Iik7cmV0dXJuIFMuZGlzcGF0Y2g9M0RFLFMub3B0aW9ucz0zRGUudXRpbHMub3B0
aW9uc0Z1bmMuYmluZD0KKFMpLFMubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KHQudG9wPTNEdHlwZW9mIGUudG9wIT0KPTNEInVuZGVmaW5lZCI/ZS50b3A6dC50
b3AsdC5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6PQp0LnJp
Z2h0LHQuYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnQu
Ym90dG9tLHQubGVmdD0KPTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6dC5s
ZWZ0LFMpOnR9LFMud2lkdGg9M0RmdW5jdGlvbihlKXtyPQpldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhuPTNEZSxTKTpufSxTLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHM9Ci5s
ZW5ndGg/KHI9M0RlLFMpOnJ9LFMudmFsdWVzPTNEZnVuY3Rpb24odCl7cmV0dXJuIGUubG9nKCJw
aWUudmFsdWVzKCkgaXMgbj0KbyBsb25nZXIgc3VwcG9ydGVkLiIpLFN9LFMueD0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPTNEZSxTPQopOml9LFMueT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPTNEZDMuZnVuY3RvcihlKSxTKTpzfSxTLmQ9
CmVzY3JpcHRpb249M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUs
Uyk6b30sUy5zaG93TGFiZWxzPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8obD0zRGUsUyk6bH0sUy5sYWJlbFN1bmJlYW1MYXlvdXQ9M0Q9CmZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhnPTNEZSxTKTpnfSxTLmRvbnV0TGFiZWxzT3V0c2lkZT0zRGZ1
bj0KY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLFMpOmh9LFMucGllTGFi
ZWxzT3V0c2lkZT0zRGZ1bmN0aW9uPQooZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0Rl
LFMpOmN9LFMubGFiZWxUeXBlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGE9CnJndW1lbnRzLmxlbmd0
aD8ocD0zRGUscD0zRHB8fCJrZXkiLFMpOnB9LFMuZG9udXQ9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndT0KbWVudHMubGVuZ3RoPyhtPTNEZSxTKTptfSxTLmRvbnV0UmF0aW89M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0PQpoPyh3PTNEZSxTKTp3fSxTLnN0YXJ0QW5nbGU9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT0zRGUsUyk9Cjp5fSxTLmVuZEFu
Z2xlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9M0RlLFMpOmJ9LFMu
aWQ9M0RmdT0KbmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZSxTKTp1fSxT
LmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuPQogYXJndW1lbnRzLmxlbmd0aD8oYT0zRGUudXRp
bHMuZ2V0Q29sb3IodCksUyk6YX0sUy52YWx1ZUZvcm1hdD0zRGZ1bmN0aW9uKGU9Cil7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLFMpOmZ9LFMubGFiZWxUaHJlc2hvbGQ9M0RmdW5jdGlv
bihlKXtyZXR1cj0KbiBhcmd1bWVudHMubGVuZ3RoPyh2PTNEZSxTKTp2fSxTfSxlLm1vZGVscy5w
aWVDaGFydD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gPQp2KGUpe3JldHVybiBlLmVhY2goZnVuY3Rp
b24oZSl7dmFyIHU9M0RkMy5zZWxlY3QodGhpcyksYT0zRHRoaXMsZj0zRChpfHxwYXI9CnNlSW50
KHUuc3R5bGUoIndpZHRoIikpfHw5NjApLXIubGVmdC1yLnJpZ2h0LGQ9M0Qoc3x8cGFyc2VJbnQo
dS5zdHlsZSgiaGVpZz0KaHQiKSl8fDQwMCktci50b3Atci5ib3R0b207di51cGRhdGU9M0RmdW5j
dGlvbigpe3UuY2FsbCh2KX0sdi5jb250YWluZXI9M0R0PQpoaXMsbC5kaXNhYmxlZD0zRGUubWFw
KGZ1bmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pO2lmKCFjKXt2YXIgbTtjPTNEe309Cjtm
b3IobSBpbiBsKWxbbV1pbnN0YW5jZW9mIEFycmF5P2NbbV09M0RsW21dLnNsaWNlKDApOmNbbV09
M0RsW21dfWlmKCFlfHwhZT0KLmxlbmd0aCl7dmFyIGc9M0R1LnNlbGVjdEFsbCgiLm52LW5vRGF0
YSIpLmRhdGEoW2hdKTtyZXR1cm4gZy5lbnRlcigpLmFwcGVuPQpkKCJ0ZXh0IikuYXR0cigiY2xh
c3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmM9
CmhvciIsIm1pZGRsZSIpLGcuYXR0cigieCIsci5sZWZ0K2YvMikuYXR0cigieSIsci50b3ArZC8y
KS50ZXh0KGZ1bmN0aW9uKGUpez0KcmV0dXJuIGV9KSx2fXUuc2VsZWN0QWxsKCIubnYtbm9EYXRh
IikucmVtb3ZlKCk7dmFyIHk9M0R1LnNlbGVjdEFsbCgiZy5udi13PQpyYXAubnYtcGllQ2hhcnQi
KS5kYXRhKFtlXSksYj0zRHkuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMg
bnY9Ci13cmFwIG52LXBpZUNoYXJ0IikuYXBwZW5kKCJnIiksdz0zRHkuc2VsZWN0KCJnIik7Yi5h
cHBlbmQoImciKS5hdHRyKCJjbGFzcz0KIiwibnYtcGllV3JhcCIpLGIuYXBwZW5kKCJnIikuYXR0
cigiY2xhc3MiLCJudi1sZWdlbmRXcmFwIiksbyYmKG4ud2lkdGgoZikuPQprZXkodC54KCkpLHku
c2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmRhdHVtKGUpLmNhbGwobiksci50b3AhPTNEbi5oZWln
aHQoKSY9CiYoci50b3A9M0RuLmhlaWdodCgpLGQ9M0Qoc3x8cGFyc2VJbnQodS5zdHlsZSgiaGVp
Z2h0IikpfHw0MDApLXIudG9wLXIuYm90dD0Kb20pLHkuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIp
LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrIC1yLnRvcCsiKSIpPQopLHkuYXR0cigi
dHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrci5sZWZ0KyIsIityLnRvcCsiKSIpLHQud2lkdGgoZiku
aGVpZ2h0KGQ9Cik7dmFyIEU9M0R3LnNlbGVjdCgiLm52LXBpZVdyYXAiKS5kYXR1bShbZV0pO2Qz
LnRyYW5zaXRpb24oRSkuY2FsbCh0KSxuLmRpcz0KcGF0Y2gub24oInN0YXRlQ2hhbmdlIixmdW5j
dGlvbihlKXtsPTNEZSxwLnN0YXRlQ2hhbmdlKGwpLHYudXBkYXRlKCl9KSx0LmRpPQpzcGF0Y2gu
b24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtwLnRvb2x0aXBIaWRlKGUp
fSkscC5vbigiY2g9CmFuZ2VTdGF0ZSIsZnVuY3Rpb24odCl7dHlwZW9mIHQuZGlzYWJsZWQhPTNE
InVuZGVmaW5lZCImJihlLmZvckVhY2goZnVuY3Rpbz0KbihlLG4pe2UuZGlzYWJsZWQ9M0R0LmRp
c2FibGVkW25dfSksbC5kaXNhYmxlZD0zRHQuZGlzYWJsZWQpLHYudXBkYXRlKCl9KX0pPQosdn12
YXIgdD0zRGUubW9kZWxzLnBpZSgpLG49M0RlLm1vZGVscy5sZWdlbmQoKSxyPTNEe3RvcDozMCxy
aWdodDoyMCxib3R0b209CjoyMCxsZWZ0OjIwfSxpPTNEbnVsbCxzPTNEbnVsbCxvPTNEITAsdT0z
RGUudXRpbHMuZGVmYXVsdENvbG9yKCksYT0zRCEwLGY9Cj0zRGZ1bmN0aW9uKGUsdCxuLHIpe3Jl
dHVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIrdCsiPC9wPiJ9LGw9M0R7fSxjPTNEbnVsbD0KLGg9
M0QiTm8gRGF0YSBBdmFpbGFibGUuIixwPTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9v
bHRpcEhpZGUiLCJzdGF0PQplQ2hhbmdlIiwiY2hhbmdlU3RhdGUiKSxkPTNEZnVuY3Rpb24obixy
KXt2YXIgaT0zRHQuZGVzY3JpcHRpb24oKShuLnBvaW50KXw9Cnx0LngoKShuLnBvaW50KSxzPTNE
bi5wb3NbMF0rKHImJnIub2Zmc2V0TGVmdHx8MCksbz0zRG4ucG9zWzFdKyhyJiZyLm9mZnNldD0K
VG9wfHwwKSx1PTNEdC52YWx1ZUZvcm1hdCgpKHQueSgpKG4ucG9pbnQpKSxhPTNEZihpLHUsbix2
KTtlLnRvb2x0aXAuc2hvdyhbPQpzLG9dLGEsbi52YWx1ZTwwPyJuIjoicyIsbnVsbCxyKX07cmV0
dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG89Cm9sdGlwIixmdW5jdGlvbihl
KXtlLnBvcz0zRFtlLnBvc1swXStyLmxlZnQsZS5wb3NbMV0rci50b3BdLHAudG9vbHRpcFNob3co
ZT0KKX0pLHAub24oInRvb2x0aXBTaG93IixmdW5jdGlvbihlKXthJiZkKGUpfSkscC5vbigidG9v
bHRpcEhpZGUiLGZ1bmN0aW9uKCl7PQphJiZlLnRvb2x0aXAuY2xlYW51cCgpfSksdi5sZWdlbmQ9
M0RuLHYuZGlzcGF0Y2g9M0RwLHYucGllPTNEdCxkMy5yZWJpbmQodiw9CnQsInZhbHVlRm9ybWF0
IiwidmFsdWVzIiwieCIsInkiLCJkZXNjcmlwdGlvbiIsImlkIiwic2hvd0xhYmVscyIsImRvbnV0
TGFiZT0KbHNPdXRzaWRlIiwicGllTGFiZWxzT3V0c2lkZSIsImxhYmVsVHlwZSIsImRvbnV0Iiwi
ZG9udXRSYXRpbyIsImxhYmVsVGhyZXNoPQpvbGQiKSx2Lm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlv
bnNGdW5jLmJpbmQodiksdi5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm49CiBhcmd1bWVudHMu
bGVuZ3RoPyhyLnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDpyLnRvcCxy
LnJpZ2h0PQo9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OnIucmlnaHQs
ci5ib3R0b209M0R0eXBlb2YgZS5ib3R0b209CiE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTpyLmJv
dHRvbSxyLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubD0KZWZ0OnIubGVm
dCx2KTpyfSx2LndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9
M0RlLHYpOml9PQosdi5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8ocz0zRGUsdik6c30sdi5jb2xvcj0zRGZ1bmM9CnRpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHU9M0RlLnV0aWxzLmdldENvbG9yKHIpLG4uY29sb3IodSksdC5jb2xvcj0KKHUpLHYp
OnV9LHYuc2hvd0xlZ2VuZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhv
PTNEZSx2KTpvfSx2PQoudG9vbHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oYT0zRGUsdik6YX0sdi50b29sdGlwQ29udGU9Cm50PTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLHYpOmZ9LHYuc3RhdGU9M0RmdW5jdGlvbihlKT0Ke3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZSx2KTpsfSx2LmRlZmF1bHRTdGF0ZT0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhPQpyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLHYpOmN9LHYubm9EYXRhPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9Cj8oaD0zRGUsdik6aH0sdn0sZS5t
b2RlbHMuc2NhdHRlcj0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gSShxKXtyZXR1cm4gcS5lYWNoKD0K
ZnVuY3Rpb24oSSl7ZnVuY3Rpb24gUSgpe2lmKCFnKXJldHVybiExO3ZhciBlLGk9M0RkMy5tZXJn
ZShJLm1hcChmdW5jdGlvbihlPQosdCl7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlvbihlLG4p
e3ZhciByPTNEZihlLG4pLGk9M0RsKGUsbik7cmV0dXJuW28ocik9Cix1KGkpLHQsbixlXX0pLmZp
bHRlcihmdW5jdGlvbihlLHQpe3JldHVybiBiKGVbNF0sdCl9KX0pKTtpZihEPTNEPTNEPTNEITAp
ez0KaWYoeCl7dmFyIGE9M0RYLnNlbGVjdCgiZGVmcyIpLnNlbGVjdEFsbCgiLm52LXBvaW50LWNs
aXBzIikuZGF0YShbc10pLmVudGVyPQooKTthLmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJjbGFz
cyIsIm52LXBvaW50LWNsaXBzIikuYXR0cigiaWQiLCJudi1wb2ludHM9Ci1jbGlwLSIrcyk7dmFy
IGM9M0RYLnNlbGVjdCgiI252LXBvaW50cy1jbGlwLSIrcykuc2VsZWN0QWxsKCJjaXJjbGUiKS5k
YXRhKD0KaSk7Yy5lbnRlcigpLmFwcGVuZCgiY2lyY2xlIikuYXR0cigiciIsVCksYy5leGl0KCku
cmVtb3ZlKCksYy5hdHRyKCJjeCIsZnVuPQpjdGlvbihlKXtyZXR1cm4gZVswXX0pLmF0dHIoImN5
IixmdW5jdGlvbihlKXtyZXR1cm4gZVsxXX0pLFguc2VsZWN0KCIubnYtcG89CmludC1wYXRocyIp
LmF0dHIoImNsaXAtcGF0aCIsInVybCgjbnYtcG9pbnRzLWNsaXAtIitzKyIpIil9aS5sZW5ndGgm
JihpLnB1cz0KaChbby5yYW5nZSgpWzBdLTIwLHUucmFuZ2UoKVswXS0yMCxudWxsLG51bGxdKSxp
LnB1c2goW28ucmFuZ2UoKVsxXSsyMCx1LnJhPQpuZ2UoKVsxXSsyMCxudWxsLG51bGxdKSxpLnB1
c2goW28ucmFuZ2UoKVswXS0yMCx1LnJhbmdlKClbMF0rMjAsbnVsbCxudWxsXSk9CixpLnB1c2go
W28ucmFuZ2UoKVsxXSsyMCx1LnJhbmdlKClbMV0tMjAsbnVsbCxudWxsXSkpO3ZhciBoPTNEZDMu
Z2VvbS5wb2x5Zz0Kb24oW1stMTAsLTEwXSxbLTEwLHIrMTBdLFtuKzEwLHIrMTBdLFtuKzEwLC0x
MF1dKSxwPTNEMWUtNjtpPTNEaS5zb3J0KGZ1bmN0PQppb24oZSx0KXtyZXR1cm4gZVswXS10WzBd
fHxlWzFdLXRbMV19KTtmb3IodmFyIGQ9M0QwO2Q8aS5sZW5ndGgtMTspTWF0aC5hYnM9CihpW2Rd
WzBdLWlbZCsxXVswXSk8cCYmTWF0aC5hYnMoaVtkXVsxXS1pW2QrMV1bMV0pPHA/aS5zcGxpY2Uo
ZCsxLDEpOmQrKzt2YT0KciB2PTNEZDMuZ2VvbS52b3Jvbm9pKGkpLm1hcChmdW5jdGlvbihlLHQp
e3JldHVybntkYXRhOmguY2xpcChlKSxzZXJpZXM6aVt0PQpdWzJdLHBvaW50OmlbdF1bM119fSks
bT0zRFguc2VsZWN0KCIubnYtcG9pbnQtcGF0aHMiKS5zZWxlY3RBbGwoInBhdGgiKS5kYXQ9CmEo
dik7bS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3Jl
dHVybiJudi1wYXRoLSIrdD0KfSksbS5leGl0KCkucmVtb3ZlKCksbS5hdHRyKCJkIixmdW5jdGlv
bihlKXtyZXR1cm4hZXx8IWUuZGF0YXx8ZS5kYXRhLmxlbmd0PQpoPTNEPTNEPTNEMD8iTSAwIDAi
OiJNIitlLmRhdGEuam9pbigiTCIpKyJaIn0pO3ZhciB5PTNEZnVuY3Rpb24oZSxuKXtpZihGKXI9
CmV0dXJuIDA7dmFyIHI9M0RJW2Uuc2VyaWVzXTtpZih0eXBlb2Ygcj0zRD0zRCJ1bmRlZmluZWQi
KXJldHVybjt2YXIgaT0zRHIudj0KYWx1ZXNbZS5wb2ludF07bih7cG9pbnQ6aSxzZXJpZXM6cixw
b3M6W28oZihpLGUucG9pbnQpKSt0LmxlZnQsdShsKGksZS5wb2luPQp0KSkrdC50b3BdLHNlcmll
c0luZGV4OmUuc2VyaWVzLHBvaW50SW5kZXg6ZS5wb2ludH0pfTttLm9uKCJjbGljayIsZnVuY3Rp
b249CihlKXt5KGUsXy5lbGVtZW50Q2xpY2spfSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oZSl7
eShlLF8uZWxlbWVudE1vdXNlb3Zlcj0KKX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oZSx0KXt5
KGUsXy5lbGVtZW50TW91c2VvdXQpfSl9ZWxzZSBYLnNlbGVjdCgiLm52PQotZ3JvdXBzIikuc2Vs
ZWN0QWxsKCIubnYtZ3JvdXAiKS5zZWxlY3RBbGwoIi5udi1wb2ludCIpLm9uKCJjbGljayIsZnVu
Y3Rpb249CihlLG4pe2lmKEZ8fCFJW2Uuc2VyaWVzXSlyZXR1cm4gMDt2YXIgcj0zRElbZS5zZXJp
ZXNdLGk9M0RyLnZhbHVlc1tuXTtfLmVsZT0KbWVudENsaWNrKHtwb2ludDppLHNlcmllczpyLHBv
czpbbyhmKGksbikpK3QubGVmdCx1KGwoaSxuKSkrdC50b3BdLHNlcmllc0luPQpkZXg6ZS5zZXJp
ZXMscG9pbnRJbmRleDpufSl9KS5vbigibW91c2VvdmVyIixmdW5jdGlvbihlLG4pe2lmKEZ8fCFJ
W2Uuc2VyaWU9CnNdKXJldHVybiAwO3ZhciByPTNESVtlLnNlcmllc10saT0zRHIudmFsdWVzW25d
O18uZWxlbWVudE1vdXNlb3Zlcih7cG9pbnQ6aT0KLHNlcmllczpyLHBvczpbbyhmKGksbikpK3Qu
bGVmdCx1KGwoaSxuKSkrdC50b3BdLHNlcmllc0luZGV4OmUuc2VyaWVzLHBvaW50PQpJbmRleDpu
fSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKGUsdCl7aWYoRnx8IUlbZS5zZXJpZXNdKXJldHVy
biAwO3ZhciBuPQo9M0RJW2Uuc2VyaWVzXSxyPTNEbi52YWx1ZXNbdF07Xy5lbGVtZW50TW91c2Vv
dXQoe3BvaW50OnIsc2VyaWVzOm4sc2VyaWVzSW49CmRleDplLnNlcmllcyxwb2ludEluZGV4OnR9
KX0pO0Y9M0QhMX12YXIgcT0zRG4tdC5sZWZ0LXQucmlnaHQsUj0zRHItdC50b3AtdD0KLmJvdHRv
bSxVPTNEZDMuc2VsZWN0KHRoaXMpO0kuZm9yRWFjaChmdW5jdGlvbihlLHQpe2UudmFsdWVzLmZv
ckVhY2goZnVuY3RpPQpvbihlKXtlLnNlcmllcz0zRHR9KX0pO3ZhciBXPTNETiYmQyYmQT9bXTpk
My5tZXJnZShJLm1hcChmdW5jdGlvbihlKXtyZXR1cm49CiBlLnZhbHVlcy5tYXAoZnVuY3Rpb24o
ZSx0KXtyZXR1cm57eDpmKGUsdCkseTpsKGUsdCksc2l6ZTpjKGUsdCl9fSl9KSk7by5kbz0KbWFp
bihOfHxkMy5leHRlbnQoVy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0pLmNvbmNhdChkKSkp
LHcmJklbMF0/by5yYW5nPQplKGt8fFsocSpFK3EpLygyKklbMF0udmFsdWVzLmxlbmd0aCkscS1x
KigxK0UpLygyKklbMF0udmFsdWVzLmxlbmd0aCldKTpvLnI9CmFuZ2Uoa3x8WzAscV0pLHUuZG9t
YWluKEN8fGQzLmV4dGVudChXLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS55fSkuY29uY2F0KD0K
dikpKS5yYW5nZShMfHxbUiwwXSksYS5kb21haW4oQXx8ZDMuZXh0ZW50KFcubWFwKGZ1bmN0aW9u
KGUpe3JldHVybiBlLnNpemV9PQopLmNvbmNhdChtKSkpLnJhbmdlKE98fFsxNiwyNTZdKTtpZihv
LmRvbWFpbigpWzBdPTNEPTNEPTNEby5kb21haW4oKVsxXXx8dS49CmRvbWFpbigpWzBdPTNEPTNE
PTNEdS5kb21haW4oKVsxXSlNPTNEITA7by5kb21haW4oKVswXT0zRD0zRD0zRG8uZG9tYWluKClb
MT0KXSYmKG8uZG9tYWluKClbMF0/by5kb21haW4oW28uZG9tYWluKClbMF0tby5kb21haW4oKVsw
XSouMDEsby5kb21haW4oKVsxXStvPQouZG9tYWluKClbMV0qLjAxXSk6by5kb21haW4oWy0xLDFd
KSksdS5kb21haW4oKVswXT0zRD0zRD0zRHUuZG9tYWluKClbMV0mJig9CnUuZG9tYWluKClbMF0/
dS5kb21haW4oW3UuZG9tYWluKClbMF0tdS5kb21haW4oKVswXSouMDEsdS5kb21haW4oKVsxXSt1
LmRvbT0KYWluKClbMV0qLjAxXSk6dS5kb21haW4oWy0xLDFdKSksaXNOYU4oby5kb21haW4oKVsw
XSkmJm8uZG9tYWluKFstMSwxXSksaXNOPQphTih1LmRvbWFpbigpWzBdKSYmdS5kb21haW4oWy0x
LDFdKSxQPTNEUHx8byxIPTNESHx8dSxCPTNEQnx8YTt2YXIgWD0zRFUuc2U9CmxlY3RBbGwoImcu
bnYtd3JhcC5udi1zY2F0dGVyIikuZGF0YShbSV0pLFY9M0RYLmVudGVyKCkuYXBwZW5kKCJnIiku
YXR0cigiYz0KbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1zY2F0dGVyIG52LWNoYXJ0LSIrcysoTT8i
IG52LXNpbmdsZS1wb2ludCI6IiIpKSwkPTNEPQpWLmFwcGVuZCgiZGVmcyIpLEo9M0RWLmFwcGVu
ZCgiZyIpLEs9M0RYLnNlbGVjdCgiZyIpO0ouYXBwZW5kKCJnIikuYXR0cigiY2w9CmFzcyIsIm52
LWdyb3VwcyIpLEouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1wb2ludC1wYXRocyIpLFgu
YXR0cigidHJhbj0Kc2Zvcm0iLCJ0cmFuc2xhdGUoIit0LmxlZnQrIiwiK3QudG9wKyIpIiksJC5h
cHBlbmQoImNsaXBQYXRoIikuYXR0cigiaWQiLCJuPQp2LWVkZ2UtY2xpcC0iK3MpLmFwcGVuZCgi
cmVjdCIpLFguc2VsZWN0KCIjbnYtZWRnZS1jbGlwLSIrcysiIHJlY3QiKS5hdHRyKCI9CndpZHRo
IixxKS5hdHRyKCJoZWlnaHQiLFI+MD9SOjApLEsuYXR0cigiY2xpcC1wYXRoIixTPyJ1cmwoI252
LWVkZ2UtY2xpcC0iKz0KcysiKSI6IiIpLEY9M0QhMDt2YXIgRz0zRFguc2VsZWN0KCIubnYtZ3Jv
dXBzIikuc2VsZWN0QWxsKCIubnYtZ3JvdXAiKS5kYXRhPQooZnVuY3Rpb24oZSl7cmV0dXJuIGV9
LGZ1bmN0aW9uKGUpe3JldHVybiBlLmtleX0pO0cuZW50ZXIoKS5hcHBlbmQoImciKS5zdHk9Cmxl
KCJzdHJva2Utb3BhY2l0eSIsMWUtNikuc3R5bGUoImZpbGwtb3BhY2l0eSIsMWUtNiksRy5leGl0
KCkucmVtb3ZlKCksRy5hdD0KdHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiJudi1ncm91
cCBudi1zZXJpZXMtIit0fSkuY2xhc3NlZCgiaG92ZXIiLGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGUu
aG92ZXJ9KSxHLnN0eWxlKCJmaWxsIixmdW5jdGlvbihlLHQpe3JldHVybiBpKGUsdCl9KS5zdHk9
CmxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGkoZSx0KX0pLnN0eWxlKCJzdHJva2Ut
b3BhY2l0eSIsMSkuc3R5bGUoIj0KZmlsbC1vcGFjaXR5IiwuNSk7aWYocCl7dmFyIFk9M0RHLnNl
bGVjdEFsbCgiY2lyY2xlLm52LXBvaW50IikuZGF0YShmdW5jdGlvPQpuKGUpe3JldHVybiBlLnZh
bHVlc30seSk7WS5lbnRlcigpLmFwcGVuZCgiY2lyY2xlIikuc3R5bGUoImZpbGwiLGZ1bmN0aW9u
KGU9Cix0KXtyZXR1cm4gZS5jb2xvcn0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0
dXJuIGUuY29sb3J9KS5hdHRyKCJjeD0KIixmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5h
TnRvWmVybyhQKGYodCxuKSkpfSkuYXR0cigiY3kiLGZ1bmN0aW9uKHQsPQpuKXtyZXR1cm4gZS51
dGlscy5OYU50b1plcm8oSChsKHQsbikpKX0pLmF0dHIoInIiLGZ1bmN0aW9uKGUsdCl7cmV0dXJu
IE1hdGg9Ci5zcXJ0KGEoYyhlLHQpKS9NYXRoLlBJKX0pLFkuZXhpdCgpLnJlbW92ZSgpLEcuZXhp
dCgpLnNlbGVjdEFsbCgicGF0aC5udi1wbz0KaW50IikuYXR0cigiY3giLGZ1bmN0aW9uKHQsbil7
cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKG8oZih0LG4pKSl9KS5hdHRyKCJjPQp5IixmdW5jdGlv
bih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyh1KGwodCxuKSkpfSkucmVtb3ZlKCksWS5l
YWNoKGZ1bmM9CnRpb24oZSx0KXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgibnYtcG9pbnQiLCEw
KS5jbGFzc2VkKCJudi1wb2ludC0iK3QsITApLj0KY2xhc3NlZCgiaG92ZXIiLCExKX0pLFkuYXR0
cigiY3giLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKG8oPQpmKHQsbikp
KX0pLmF0dHIoImN5IixmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyh1KGwo
dCxuKSkpfSkuYXQ9CnRyKCJyIixmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLnNxcnQoYShjKGUs
dCkpL01hdGguUEkpfSl9ZWxzZXt2YXIgWT0zREcucz0KZWxlY3RBbGwoInBhdGgubnYtcG9pbnQi
KS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlc30pO1kuZW50ZXIoKS5hcHBlPQpuZCgi
cGF0aCIpLnN0eWxlKCJmaWxsIixmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfSkuc3R5bGUo
InN0cm9rZSIsZnVuY3Q9CmlvbihlLHQpe3JldHVybiBlLmNvbG9yfSkuYXR0cigidHJhbnNmb3Jt
IixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIj0KK1AoZihlLHQpKSsiLCIrSChsKGUs
dCkpKyIpIn0pLmF0dHIoImQiLGQzLnN2Zy5zeW1ib2woKS50eXBlKGgpLnNpemUoZnVuY3RpPQpv
bihlLHQpe3JldHVybiBhKGMoZSx0KSl9KSksWS5leGl0KCkucmVtb3ZlKCksRy5leGl0KCkuc2Vs
ZWN0QWxsKCJwYXRoLm52LXA9Cm9pbnQiKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7
cmV0dXJuInRyYW5zbGF0ZSgiK28oZihlLHQpKSsiLCIrdShsKD0KZSx0KSkrIikifSkucmVtb3Zl
KCksWS5lYWNoKGZ1bmN0aW9uKGUsdCl7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoIm52LXBvaW50
PQoiLCEwKS5jbGFzc2VkKCJudi1wb2ludC0iK3QsITApLmNsYXNzZWQoImhvdmVyIiwhMSl9KSxZ
LmF0dHIoInRyYW5zZm9ybSIsZnU9Cm5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitvKGYo
ZSx0KSkrIiwiK3UobChlLHQpKSsiKSJ9KS5hdHRyKCJkIixkMy5zdj0KZy5zeW1ib2woKS50eXBl
KGgpLnNpemUoZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShjKGUsdCkpfSkpfWNsZWFyVGltZW91dChq
KSxqPQo9M0RzZXRUaW1lb3V0KFEsMzAwKSxQPTNEby5jb3B5KCksSD0zRHUuY29weSgpLEI9M0Rh
LmNvcHkoKX0pLEl9dmFyIHQ9M0R7dG89CnA6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0sbj0z
RDk2MCxyPTNENTAwLGk9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLHM9Cj0zRE1hdGguZmxvb3Io
TWF0aC5yYW5kb20oKSoxZTUpLG89M0RkMy5zY2FsZS5saW5lYXIoKSx1PTNEZDMuc2NhbGUubGlu
ZWFyKD0KKSxhPTNEZDMuc2NhbGUubGluZWFyKCksZj0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9
LGw9M0RmdW5jdGlvbihlKXtyZXR1cm4gPQplLnl9LGM9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5z
aXplfHwxfSxoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2hhcGV8fCJjaXI9CmNsZSJ9LHA9M0Qh
MCxkPTNEW10sdj0zRFtdLG09M0RbXSxnPTNEITAseT0zRG51bGwsYj0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiFlLj0Kbm90QWN0aXZlfSx3PTNEITEsRT0zRC4xLFM9M0QhMSx4PTNEITAsVD0zRGZ1bmN0
aW9uKCl7cmV0dXJuIDI1fSxOPTNEbnVsbCxDPQo9M0RudWxsLGs9M0RudWxsLEw9M0RudWxsLEE9
M0RudWxsLE89M0RudWxsLE09M0QhMSxfPTNEZDMuZGlzcGF0Y2goImVsZW1lbnQ9CkNsaWNrIiwi
ZWxlbWVudE1vdXNlb3ZlciIsImVsZW1lbnRNb3VzZW91dCIpLEQ9M0QhMCxQLEgsQixqLEY9M0Qh
MTtyZXR1cm4gST0KLmNsZWFySGlnaGxpZ2h0cz0zRGZ1bmN0aW9uKCl7ZDMuc2VsZWN0QWxsKCIu
bnYtY2hhcnQtIitzKyIgLm52LXBvaW50LmhvdmVyPQoiKS5jbGFzc2VkKCJob3ZlciIsITEpfSxJ
LmhpZ2hsaWdodFBvaW50PTNEZnVuY3Rpb24oZSx0LG4pe2QzLnNlbGVjdCgiLm52LWM9CmhhcnQt
IitzKyIgLm52LXNlcmllcy0iK2UrIiAubnYtcG9pbnQtIit0KS5jbGFzc2VkKCJob3ZlciIsbil9
LF8ub24oImVsZW1lbj0KdE1vdXNlb3Zlci5wb2ludCIsZnVuY3Rpb24oZSl7ZyYmSS5oaWdobGln
aHRQb2ludChlLnNlcmllc0luZGV4LGUucG9pbnRJbmRlPQp4LCEwKX0pLF8ub24oImVsZW1lbnRN
b3VzZW91dC5wb2ludCIsZnVuY3Rpb24oZSl7ZyYmSS5oaWdobGlnaHRQb2ludChlLnNlcmk9CmVz
SW5kZXgsZS5wb2ludEluZGV4LCExKX0pLEkuZGlzcGF0Y2g9M0RfLEkub3B0aW9ucz0zRGUudXRp
bHMub3B0aW9uc0Z1bmMuYj0KaW5kKEkpLEkueD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhmPTNEZDMuZnVuY3RvcihlKSxJKTpmfSxJPQoueT0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZDMuZnVuY3RvcihlKSxJKTpsfSxJLnNpemU9M0Q9
CmZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZDMuZnVuY3RvcihlKSxJ
KTpjfSxJLm1hcmdpbj0zRGZ1bj0KY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQu
dG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wPQo6dC50b3AsdC5yaWdodD0z
RHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT0z
RHQ9CnlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVm
dD0zRHR5cGVvZiBlLmxlZnQhPTNEIj0KdW5kZWZpbmVkIj9lLmxlZnQ6dC5sZWZ0LEkpOnR9LEku
d2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0PQpoPyhuPTNEZSxJKTpu
fSxJLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZSxJ
KTpyfSw9CkkueFNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89
M0RlLEkpOm99LEkueVNjYWxlPTNEZnVuYz0KdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8odT0zRGUsSSk6dX0sSS56U2NhbGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gPQphcmd1bWVudHMu
bGVuZ3RoPyhhPTNEZSxJKTphfSxJLnhEb21haW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmc9CnRoPyhOPTNEZSxJKTpOfSxJLnlEb21haW49M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oQz0zRGUsSSk6Qz0KfSxJLnNpemVEb21haW49M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oQT0zRGUsSSk6QX0sSS54UmFuZ2U9Cj0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhrPTNEZSxJKTprfSxJLnlSYW5nZT0zRGZ1
bmN0aW9uKGUpez0KcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEw9M0RlLEkpOkx9LEkuc2l6ZVJh
bmdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtPQplbnRzLmxlbmd0aD8oTz0zRGUsSSk6T30s
SS5mb3JjZVg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0KPTNEZSxJ
KTpkfSxJLmZvcmNlWT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PTNE
ZSxJKTp2fSxJLmZvPQpyY2VTaXplPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KG09M0RlLEkpOm19LEkuaW50ZXJhY3RpdmU9M0Q9CmZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhnPTNEZSxJKTpnfSxJLnBvaW50S2V5PTNEZnVuY3Rpb24oZSl7cj0KZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oeT0zRGUsSSk6eX0sSS5wb2ludEFjdGl2ZT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1PQptZW50cy5sZW5ndGg/KGI9M0RlLEkpOmJ9LEkucGFkRGF0YT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyg9Cnc9M0RlLEkpOnd9LEkucGFkRGF0
YU91dGVyPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlLEkpOj0K
RX0sSS5jbGlwRWRnZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPTNE
ZSxJKTpTfSxJLmNsaXBWb3JvPQpub2k9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oeD0zRGUsSSk6eH0sSS51c2VWb3Jvbm9pPTNEZnVuY3Q9CmlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oRD0zRGUsRD0zRD0zRD0zRCExJiYoeD0zRCExKSxJKTpEfSxJLmNsaXBS
YT0KZGl1cz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhUPTNEZSxJKTpU
fSxJLmNvbG9yPTNEZnVuY3Rpb24oPQp0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUu
dXRpbHMuZ2V0Q29sb3IodCksSSk6aX0sSS5zaGFwZT0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGg9M0RlLEkpOmh9LEkub25seUNpcmNsZXM9M0RmdW5jdGlvbihlKXty
ZXR1cj0KbiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxJKTpwfSxJLmlkPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/PQoocz0zRGUsSSk6c30sSS5zaW5nbGVQb2ludD0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhNPTNEZSxJKTo9Ck19LEl9LGUubW9k
ZWxzLnNjYXR0ZXJDaGFydD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gRihlKXtyZXR1cm4gZS5lYWNo
KGZ1bmN0aT0Kb24oZSl7ZnVuY3Rpb24gSigpe2lmKFQpcmV0dXJuIFcuc2VsZWN0KCIubnYtcG9p
bnQtcGF0aHMiKS5zdHlsZSgicG9pbnRlci1lPQp2ZW50cyIsImFsbCIpLCExO1cuc2VsZWN0KCIu
bnYtcG9pbnQtcGF0aHMiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJub25lIik9Cjt2YXIgaT0z
RGQzLm1vdXNlKHRoaXMpO2guZGlzdG9ydGlvbih4KS5mb2N1cyhpWzBdKSxwLmRpc3RvcnRpb24o
eCkuZm9jdXMoaT0KWzFdKSxXLnNlbGVjdCgiLm52LXNjYXR0ZXJXcmFwIikuY2FsbCh0KSxiJiZX
LnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmNhbGwoPQpuKSx3JiZXLnNlbGVjdCgiLm52LXkubnYt
YXhpcyIpLmNhbGwociksVy5zZWxlY3QoIi5udi1kaXN0cmlidXRpb25YIikuZGF0dW09CihlLmZp
bHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKS5jYWxsKG8pLFcuc2VsZWN0KCIu
bnYtZGlzdHJpYnV0aT0Kb25ZIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUu
ZGlzYWJsZWR9KSkuY2FsbCh1KX12YXIgQz0zRGQzLnNlPQpsZWN0KHRoaXMpLGs9M0R0aGlzLEw9
M0QoZnx8cGFyc2VJbnQoQy5zdHlsZSgid2lkdGgiKSl8fDk2MCktYS5sZWZ0LWEucmlnaHQ9CixE
PTNEKGx8fHBhcnNlSW50KEMuc3R5bGUoImhlaWdodCIpKXx8NDAwKS1hLnRvcC1hLmJvdHRvbTtG
LnVwZGF0ZT0zRGZ1bmN0aT0Kb24oKXtDLmNhbGwoRil9LEYuY29udGFpbmVyPTNEdGhpcyxBLmRp
c2FibGVkPTNEZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuISFlPQouZGlzYWJsZWR9KTtpZighTyl7
dmFyIEk7Tz0zRHt9O2ZvcihJIGluIEEpQVtJXWluc3RhbmNlb2YgQXJyYXk/T1tJXT0zREFbSV09
Ci5zbGljZSgwKTpPW0ldPTNEQVtJXX1pZighZXx8IWUubGVuZ3RofHwhZS5maWx0ZXIoZnVuY3Rp
b24oZSl7cmV0dXJuIGUudmFsdT0KZXMubGVuZ3RofSkubGVuZ3RoKXt2YXIgcT0zREMuc2VsZWN0
QWxsKCIubnYtbm9EYXRhIikuZGF0YShbX10pO3JldHVybiBxLmVuPQp0ZXIoKS5hcHBlbmQoInRl
eHQiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIpLnN0
eWw9CmUoInRleHQtYW5jaG9yIiwibWlkZGxlIikscS5hdHRyKCJ4IixhLmxlZnQrTC8yKS5hdHRy
KCJ5IixhLnRvcCtELzIpLnRleHQoZj0KdW5jdGlvbihlKXtyZXR1cm4gZX0pLEZ9Qy5zZWxlY3RB
bGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKSxQPTNEUHx8aCxIPTNESHx8PQpwO3ZhciBSPTNEQy5z
ZWxlY3RBbGwoImcubnYtd3JhcC5udi1zY2F0dGVyQ2hhcnQiKS5kYXRhKFtlXSksVT0zRFIuZW50
ZXIoKS49CmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LXNjYXR0ZXJD
aGFydCBudi1jaGFydC0iK3QuaWQoKSksej0KPTNEVS5hcHBlbmQoImciKSxXPTNEUi5zZWxlY3Qo
ImciKTt6LmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1iPQphY2tncm91bmQi
KSx6LmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksei5hcHBlbmQoImci
KS5hdHRyKCI9CmNsYXNzIiwibnYteSBudi1heGlzIiksei5hcHBlbmQoImciKS5hdHRyKCJjbGFz
cyIsIm52LXNjYXR0ZXJXcmFwIiksei5hcHBlbj0KZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtZGlz
dFdyYXAiKSx6LmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhPQpwIiksei5h
cHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWNvbnRyb2xzV3JhcCIpO2lmKHkpe3ZhciBYPTNE
Uz9MLzI6TDtpLnc9CmlkdGgoWCksUi5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuZGF0dW0oZSku
Y2FsbChpKSxhLnRvcCE9M0RpLmhlaWdodCgpJiYoYT0KLnRvcD0zRGkuaGVpZ2h0KCksRD0zRChs
fHxwYXJzZUludChDLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktYS50b3AtYS5ib3R0b20pPQosUi5z
ZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKEwt
WCkrIiwiKyAtYS50b3A9CisiKSIpfVMmJihzLndpZHRoKDE4MCkuY29sb3IoWyIjNDQ0Il0pLFcu
c2VsZWN0KCIubnYtY29udHJvbHNXcmFwIikuZGF0dW0oaj0KKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0
cmFuc2xhdGUoMCwiKyAtYS50b3ArIikiKS5jYWxsKHMpKSxSLmF0dHIoInRyYW5zZm9ybSIsPQoi
dHJhbnNsYXRlKCIrYS5sZWZ0KyIsIithLnRvcCsiKSIpLEUmJlcuc2VsZWN0KCIubnYteS5udi1h
eGlzIikuYXR0cigidHJhbnM9CmZvcm0iLCJ0cmFuc2xhdGUoIitMKyIsMCkiKSx0LndpZHRoKEwp
LmhlaWdodChEKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpez0KcmV0dXJuIGUuY29sb3J8fGMo
ZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkfSkpLGQhPTNE
PQo9M0QwJiZ0LnhEb21haW4obnVsbCksdiE9M0Q9M0QwJiZ0LnlEb21haW4obnVsbCksUi5zZWxl
Y3QoIi5udi1zY2F0dGVyV3JhcCI9CikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJu
IWUuZGlzYWJsZWR9KSkuY2FsbCh0KTtpZihkIT0zRD0zRDApe3Zhcj0KIFY9M0RoLmRvbWFpbigp
WzFdLWguZG9tYWluKClbMF07dC54RG9tYWluKFtoLmRvbWFpbigpWzBdLWQqVixoLmRvbWFpbigp
WzFdPQorZCpWXSl9aWYodiE9M0Q9M0QwKXt2YXIgJD0zRHAuZG9tYWluKClbMV0tcC5kb21haW4o
KVswXTt0LnlEb21haW4oW3AuZG9tYWk9Cm4oKVswXS12KiQscC5kb21haW4oKVsxXSt2KiRdKX0o
diE9M0Q9M0QwfHxkIT0zRD0zRDApJiZSLnNlbGVjdCgiLm52LXNjYXR0ZT0KcldyYXAiKS5kYXR1
bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKS5jYWxsKHQpLGImJihu
LnNjYWxlPQooaCkudGlja3Mobi50aWNrcygpJiZuLnRpY2tzKCkubGVuZ3RoP24udGlja3MoKTpM
LzEwMCkudGlja1NpemUoLUQsMCksVy5zZWw9CmVjdCgiLm52LXgubnYtYXhpcyIpLmF0dHIoInRy
YW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrcC5yYW5nZSgpWzBdKyIpIikuY2FsbD0KKG4pKSx3JiYo
ci5zY2FsZShwKS50aWNrcyhyLnRpY2tzKCkmJnIudGlja3MoKS5sZW5ndGg/ci50aWNrcygpOkQv
MzYpLnRpY2tTPQppemUoLUwsMCksVy5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5jYWxsKHIpKSxt
JiYoby5nZXREYXRhKHQueCgpKS5zY2FsZShoKS49CndpZHRoKEwpLmNvbG9yKGUubWFwKGZ1bmN0
aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGMoZSx0KX0pLmZpbHRlcihmdW5jdGlvbj0KKHQsbil7
cmV0dXJuIWVbbl0uZGlzYWJsZWR9KSksei5zZWxlY3QoIi5udi1kaXN0V3JhcCIpLmFwcGVuZCgi
ZyIpLmF0dHIoImNsPQphc3MiLCJudi1kaXN0cmlidXRpb25YIiksVy5zZWxlY3QoIi5udi1kaXN0
cmlidXRpb25YIikuYXR0cigidHJhbnNmb3JtIiwidHI9CmFuc2xhdGUoMCwiK3AucmFuZ2UoKVsw
XSsiKSIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfT0KKSku
Y2FsbChvKSksZyYmKHUuZ2V0RGF0YSh0LnkoKSkuc2NhbGUocCkud2lkdGgoRCkuY29sb3IoZS5t
YXAoZnVuY3Rpb24oZSx0PQope3JldHVybiBlLmNvbG9yfHxjKGUsdCl9KS5maWx0ZXIoZnVuY3Rp
b24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZH0pKSx6LnM9CmVsZWN0KCIubnYtZGlzdFdyYXAi
KS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWRpc3RyaWJ1dGlvblkiKSxXLnNlbGVjdD0K
KCIubnYtZGlzdHJpYnV0aW9uWSIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhFP0w6
LXUuc2l6ZSgpKSsiLDApIikuPQpkYXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5k
aXNhYmxlZH0pKS5jYWxsKHUpKSxkMy5maXNoZXllJiYoVy5zZWw9CmVjdCgiLm52LWJhY2tncm91
bmQiKS5hdHRyKCJ3aWR0aCIsTCkuYXR0cigiaGVpZ2h0IixEKSxXLnNlbGVjdCgiLm52LWJhY2tn
cj0Kb3VuZCIpLm9uKCJtb3VzZW1vdmUiLEopLFcuc2VsZWN0KCIubnYtYmFja2dyb3VuZCIpLm9u
KCJjbGljayIsZnVuY3Rpb24oKXtUPQo9M0QhVH0pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRDbGlj
ay5mcmVlemVGaXNoZXllIixmdW5jdGlvbigpe1Q9M0QhVH0pKSxzLmQ9CmlzcGF0Y2gub24oImxl
Z2VuZENsaWNrIixmdW5jdGlvbihlLGkpe2UuZGlzYWJsZWQ9M0QhZS5kaXNhYmxlZCx4PTNEZS5k
aXNhYj0KbGVkPzA6Mi41LFcuc2VsZWN0KCIubnYtYmFja2dyb3VuZCIpLnN0eWxlKCJwb2ludGVy
LWV2ZW50cyIsZS5kaXNhYmxlZD8ibm9uPQplIjoiYWxsIiksVy5zZWxlY3QoIi5udi1wb2ludC1w
YXRocyIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsZS5kaXNhYmxlZD8iYWw9CmwiOiJub25lIiks
ZS5kaXNhYmxlZD8oaC5kaXN0b3J0aW9uKHgpLmZvY3VzKDApLHAuZGlzdG9ydGlvbih4KS5mb2N1
cygwKSxXLj0Kc2VsZWN0KCIubnYtc2NhdHRlcldyYXAiKS5jYWxsKHQpLFcuc2VsZWN0KCIubnYt
eC5udi1heGlzIikuY2FsbChuKSxXLnNlbGVjPQp0KCIubnYteS5udi1heGlzIikuY2FsbChyKSk6
VD0zRCExLEYudXBkYXRlKCl9KSxpLmRpc3BhdGNoLm9uKCJzdGF0ZUNoYW5nZSI9CixmdW5jdGlv
bihlKXtBLmRpc2FibGVkPTNEZS5kaXNhYmxlZCxNLnN0YXRlQ2hhbmdlKEEpLEYudXBkYXRlKCl9
KSx0LmRpc3BhdD0KY2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7
ZDMuc2VsZWN0KCIubnYtY2hhcnQtIit0LmlkKCkrPQoiIC5udi1zZXJpZXMtIitlLnNlcmllc0lu
ZGV4KyIgLm52LWRpc3R4LSIrZS5wb2ludEluZGV4KS5hdHRyKCJ5MSIsZnVuY3Rpb249Cih0LG4p
e3JldHVybiBlLnBvc1sxXS1EfSksZDMuc2VsZWN0KCIubnYtY2hhcnQtIit0LmlkKCkrIiAubnYt
c2VyaWVzLSIrZS5zZT0Kcmllc0luZGV4KyIgLm52LWRpc3R5LSIrZS5wb2ludEluZGV4KS5hdHRy
KCJ4MiIsZS5wb3NbMF0rby5zaXplKCkpLGUucG9zPTNEPQpbZS5wb3NbMF0rYS5sZWZ0LGUucG9z
WzFdK2EudG9wXSxNLnRvb2x0aXBTaG93KGUpfSksTS5vbigidG9vbHRpcFNob3ciLGZ1bmM9CnRp
b24oZSl7TiYmQihlLGsucGFyZW50Tm9kZSl9KSxNLm9uKCJjaGFuZ2VTdGF0ZSIsZnVuY3Rpb24o
dCl7dHlwZW9mIHQuZGlzYT0KYmxlZCE9M0QidW5kZWZpbmVkIiYmKGUuZm9yRWFjaChmdW5jdGlv
bihlLG4pe2UuZGlzYWJsZWQ9M0R0LmRpc2FibGVkW25dfSksPQpBLmRpc2FibGVkPTNEdC5kaXNh
YmxlZCksRi51cGRhdGUoKX0pLFA9M0RoLmNvcHkoKSxIPTNEcC5jb3B5KCl9KSxGfXZhciB0PQo9
M0RlLm1vZGVscy5zY2F0dGVyKCksbj0zRGUubW9kZWxzLmF4aXMoKSxyPTNEZS5tb2RlbHMuYXhp
cygpLGk9M0RlLm1vZGVscy49CmxlZ2VuZCgpLHM9M0RlLm1vZGVscy5sZWdlbmQoKSxvPTNEZS5t
b2RlbHMuZGlzdHJpYnV0aW9uKCksdT0zRGUubW9kZWxzLmRpcz0KdHJpYnV0aW9uKCksYT0zRHt0
b3A6MzAscmlnaHQ6MjAsYm90dG9tOjUwLGxlZnQ6NzV9LGY9M0RudWxsLGw9M0RudWxsLGM9M0Rl
PQoudXRpbHMuZGVmYXVsdENvbG9yKCksaD0zRGQzLmZpc2hleWU/ZDMuZmlzaGV5ZS5zY2FsZShk
My5zY2FsZS5saW5lYXIpLmRpc3Q9Cm9ydGlvbigwKTp0LnhTY2FsZSgpLHA9M0RkMy5maXNoZXll
P2QzLmZpc2hleWUuc2NhbGUoZDMuc2NhbGUubGluZWFyKS5kaXN0bz0KcnRpb24oMCk6dC55U2Nh
bGUoKSxkPTNEMCx2PTNEMCxtPTNEITEsZz0zRCExLHk9M0QhMCxiPTNEITAsdz0zRCEwLEU9M0Qh
MSxTPQo9M0QhIWQzLmZpc2hleWUseD0zRDAsVD0zRCExLE49M0QhMCxDPTNEZnVuY3Rpb24oZSx0
LG4pe3JldHVybiI8c3Ryb25nPiIrdCs9CiI8L3N0cm9uZz4ifSxrPTNEZnVuY3Rpb24oZSx0LG4p
e3JldHVybiI8c3Ryb25nPiIrbisiPC9zdHJvbmc+In0sTD0zRG51bGwsQT0KPTNEe30sTz0zRG51
bGwsTT0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdGVDaGFu
Z2UiLCJjPQpoYW5nZVN0YXRlIiksXz0zRCJObyBEYXRhIEF2YWlsYWJsZS4iLEQ9M0QwO3QueFNj
YWxlKGgpLnlTY2FsZShwKSxuLm9yaWVudCg9CiJib3R0b20iKS50aWNrUGFkZGluZygxMCksci5v
cmllbnQoRT8icmlnaHQiOiJsZWZ0IikudGlja1BhZGRpbmcoMTApLG8uYXhpcz0KKCJ4IiksdS5h
eGlzKCJ5Iikscy51cGRhdGVTdGF0ZSghMSk7dmFyIFAsSCxCPTNEZnVuY3Rpb24oaSxzKXt2YXIg
bz0zRGkucG9zPQpbMF0rKHMub2Zmc2V0TGVmdHx8MCksdT0zRGkucG9zWzFdKyhzLm9mZnNldFRv
cHx8MCksZj0zRGkucG9zWzBdKyhzLm9mZnNldEw9CmVmdHx8MCksbD0zRHAucmFuZ2UoKVswXSth
LnRvcCsocy5vZmZzZXRUb3B8fDApLGM9M0RoLnJhbmdlKClbMF0rYS5sZWZ0KyhzLj0Kb2Zmc2V0
TGVmdHx8MCksZD0zRGkucG9zWzFdKyhzLm9mZnNldFRvcHx8MCksdj0zRG4udGlja0Zvcm1hdCgp
KHQueCgpKGkucG9pPQpudCxpLnBvaW50SW5kZXgpKSxtPTNEci50aWNrRm9ybWF0KCkodC55KCko
aS5wb2ludCxpLnBvaW50SW5kZXgpKTtDIT0zRG51bGw9CiYmZS50b29sdGlwLnNob3coW2YsbF0s
QyhpLnNlcmllcy5rZXksdixtLGksRiksIm4iLDEscywieC1udnRvb2x0aXAiKSxrIT0zRD0KbnVs
bCYmZS50b29sdGlwLnNob3coW2MsZF0sayhpLnNlcmllcy5rZXksdixtLGksRiksImUiLDEscywi
eS1udnRvb2x0aXAiKSxMPQohPTNEbnVsbCYmZS50b29sdGlwLnNob3coW28sdV0sTChpLnNlcmll
cy5rZXksdixtLGksRiksaS52YWx1ZTwwPyJuIjoicyIsbnU9CmxsLHMpfSxqPTNEW3trZXk6Ik1h
Z25pZnkiLGRpc2FibGVkOiEwfV07cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZT0K
b3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe00udG9vbHRpcEhpZGUoZSksZDMuc2VsZWN0KCIubnYt
Y2hhcnQtIit0LmlkKCkrIiAuPQpudi1zZXJpZXMtIitlLnNlcmllc0luZGV4KyIgLm52LWRpc3R4
LSIrZS5wb2ludEluZGV4KS5hdHRyKCJ5MSIsMCksZDMuc2VsZWM9CnQoIi5udi1jaGFydC0iK3Qu
aWQoKSsiIC5udi1zZXJpZXMtIitlLnNlcmllc0luZGV4KyIgLm52LWRpc3R5LSIrZS5wb2ludElu
ZD0KZXgpLmF0dHIoIngyIix1LnNpemUoKSl9KSxNLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24o
KXtOJiZlLnRvb2x0aXAuY2xlYW51PQpwKCl9KSxGLmRpc3BhdGNoPTNETSxGLnNjYXR0ZXI9M0R0
LEYubGVnZW5kPTNEaSxGLmNvbnRyb2xzPTNEcyxGLnhBeGlzPTNEbiw9CkYueUF4aXM9M0RyLEYu
ZGlzdFg9M0RvLEYuZGlzdFk9M0R1LGQzLnJlYmluZChGLHQsImlkIiwiaW50ZXJhY3RpdmUiLCJw
b2ludD0KQWN0aXZlIiwieCIsInkiLCJzaGFwZSIsInNpemUiLCJ4U2NhbGUiLCJ5U2NhbGUiLCJ6
U2NhbGUiLCJ4RG9tYWluIiwieURvbWFpPQpuIiwieFJhbmdlIiwieVJhbmdlIiwic2l6ZURvbWFp
biIsInNpemVSYW5nZSIsImZvcmNlWCIsImZvcmNlWSIsImZvcmNlU2l6ZSI9CiwiY2xpcFZvcm9u
b2kiLCJjbGlwUmFkaXVzIiwidXNlVm9yb25vaSIpLEYub3B0aW9ucz0zRGUudXRpbHMub3B0aW9u
c0Z1bmMuYj0KaW5kKEYpLEYubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGEudG9wPTNEdHlwZW9mIGUudG9wPQohPTNEInVuZGVmaW5lZCI/ZS50b3A6YS50b3As
YS5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ9CjphLnJpZ2h0
LGEuYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOmEuYm90
dG9tLGEubGVmdD0KPTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6YS5sZWZ0
LEYpOmF9LEYud2lkdGg9M0RmdW5jdGlvbihlKXtyPQpldHVybiBhcmd1bWVudHMubGVuZ3RoPyhm
PTNEZSxGKTpmfSxGLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHM9Ci5sZW5n
dGg/KGw9M0RlLEYpOmx9LEYuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oYz0zRGUudT0KdGlscy5nZXRDb2xvcih0KSxpLmNvbG9yKGMpLG8uY29sb3IoYyksdS5j
b2xvcihjKSxGKTpjfSxGLnNob3dEaXN0WD0zRGZ1bmN0PQppb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KG09M0RlLEYpOm19LEYuc2hvd0Rpc3RZPTNEZnVuY3Rpb24oZSl7cmV0dXI9Cm4g
YXJndW1lbnRzLmxlbmd0aD8oZz0zRGUsRik6Z30sRi5zaG93Q29udHJvbHM9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbj0KdHMubGVuZ3RoPyhTPTNEZSxGKTpTfSxGLnNob3dMZWdlbmQ9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oPQp5PTNEZSxGKTp5fSxGLnNob3dY
QXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPTNEZSxGKTpifSw9
CkYuc2hvd1lBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9M0Rl
LEYpOnd9LEYucmlnaHRBbGlnbj0KWUF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oRT0zRGUsci5vcmllbnQoZT8icmlnaHQiOiJsZWZ0PQoiKSxGKTpFfSxGLmZpc2hl
eWU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD0zRGUsRik6eH0sRi54
UGE9CmRkaW5nPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9M0RlLEYp
OmR9LEYueVBhZGRpbmc9M0RmdW5jdD0KaW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2
PTNEZSxGKTp2fSxGLnRvb2x0aXBzPTNEZnVuY3Rpb24oZSl7cmV0dXJuPQogYXJndW1lbnRzLmxl
bmd0aD8oTj0zRGUsRik6Tn0sRi50b29sdGlwQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWU9Cm50cy5sZW5ndGg/KEw9M0RlLEYpOkx9LEYudG9vbHRpcFhDb250ZW50PTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZT0Kbmd0aD8oQz0zRGUsRik6Q30sRi50b29sdGlwWUNv
bnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oPQprPTNEZSxGKTpr
fSxGLnN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEE9M0RlLEYp
OkF9LEYuZGU9CmZhdWx0U3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oTz0zRGUsRik6T30sRi5ub0RhdGE9M0RmdT0KbmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhfPTNEZSxGKTpffSxGLnRyYW5zaXRpb25EdXJhdGlvbj0zRGZ1bmN0PQppb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEQ9M0RlLEYpOkR9LEZ9LGUubW9kZWxzLnNjYXR0ZXJQ
bHVzTGluZUNoYXI9CnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIEIoZSl7cmV0dXJuIGUuZWFjaChm
dW5jdGlvbihlKXtmdW5jdGlvbiBWKCl7aWYoUylyZT0KdHVybiBVLnNlbGVjdCgiLm52LXBvaW50
LXBhdGhzIikuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIiksITE7VS5zZWxlY3QoPQoiLm52
LXBvaW50LXBhdGhzIikuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpO3ZhciBpPTNEZDMu
bW91c2UodGhpcyk7aC49CmRpc3RvcnRpb24oRSkuZm9jdXMoaVswXSkscC5kaXN0b3J0aW9uKEUp
LmZvY3VzKGlbMV0pLFUuc2VsZWN0KCIubnYtc2NhdHRlcj0KV3JhcCIpLmRhdHVtKGUuZmlsdGVy
KGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkpLmNhbGwodCksZyYmVS5zZWxlY3QoPQoi
Lm52LXgubnYtYXhpcyIpLmNhbGwobikseSYmVS5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5jYWxs
KHIpLFUuc2VsZWN0KCIubnY9Ci1kaXN0cmlidXRpb25YIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rp
b24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbChvKSxVLj0Kc2VsZWN0KCIubnYtZGlzdHJp
YnV0aW9uWSIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkp
PQouY2FsbCh1KX12YXIgVD0zRGQzLnNlbGVjdCh0aGlzKSxOPTNEdGhpcyxDPTNEKGZ8fHBhcnNl
SW50KFQuc3R5bGUoIndpZHRoIik9Cil8fDk2MCktYS5sZWZ0LWEucmlnaHQsTT0zRChsfHxwYXJz
ZUludChULnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktYS50b3AtYS5ibz0KdHRvbTtCLnVwZGF0ZT0z
RGZ1bmN0aW9uKCl7VC5jYWxsKEIpfSxCLmNvbnRhaW5lcj0zRHRoaXMsay5kaXNhYmxlZD0zRGUu
bWFwPQooZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSk7aWYoIUwpe3ZhciBqO0w9M0R7
fTtmb3IoaiBpbiBrKWtbal1pbnN0YW49CmNlb2YgQXJyYXk/TFtqXT0zRGtbal0uc2xpY2UoMCk6
TFtqXT0zRGtbal19aWYoIWV8fCFlLmxlbmd0aHx8IWUuZmlsdGVyKGZ1bj0KY3Rpb24oZSl7cmV0
dXJuIGUudmFsdWVzLmxlbmd0aH0pLmxlbmd0aCl7dmFyIEY9M0RULnNlbGVjdEFsbCgiLm52LW5v
RGF0YSIpPQouZGF0YShbT10pO3JldHVybiBGLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigi
Y2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmE9CnR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0
LWFuY2hvciIsIm1pZGRsZSIpLEYuYXR0cigieCIsYS5sZWZ0K0MvMikuYXR0cj0KKCJ5IixhLnRv
cCtNLzIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxCfVQuc2VsZWN0QWxsKCIubnYtbm9E
YXRhIikucmVtPQpvdmUoKSxoPTNEdC54U2NhbGUoKSxwPTNEdC55U2NhbGUoKSxfPTNEX3x8aCxE
PTNERHx8cDt2YXIgST0zRFQuc2VsZWN0QWxsKCI9CmcubnYtd3JhcC5udi1zY2F0dGVyQ2hhcnQi
KS5kYXRhKFtlXSkscT0zREkuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcz0KIiwibnZk
MyBudi13cmFwIG52LXNjYXR0ZXJDaGFydCBudi1jaGFydC0iK3QuaWQoKSksUj0zRHEuYXBwZW5k
KCJnIiksVT0zREkuPQpzZWxlY3QoImciKTtSLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwi
bnZkMyBudi1iYWNrZ3JvdW5kIikuc3R5bGUoInBvaW49CnRlci1ldmVudHMiLCJub25lIiksUi5h
cHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcyIpLFIuYXBwZW5kKCJnIj0KKS5h
dHRyKCJjbGFzcyIsIm52LXkgbnYtYXhpcyIpLFIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJu
di1zY2F0dGVyV3JhcCIpPQosUi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXJlZ3Jlc3Np
b25MaW5lc1dyYXAiKSxSLmFwcGVuZCgiZyIpLmF0dHIoImM9Cmxhc3MiLCJudi1kaXN0V3JhcCIp
LFIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1sZWdlbmRXcmFwIiksUi5hcHBlbmQoIj0K
ZyIpLmF0dHIoImNsYXNzIiwibnYtY29udHJvbHNXcmFwIiksSS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0
cmFuc2xhdGUoIithLmxlZnQrPQoiLCIrYS50b3ArIikiKSxiJiZVLnNlbGVjdCgiLm52LXkubnYt
YXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK0M9CisiLDApIiksbSYmKGkud2lk
dGgoQy8yKSxJLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5kYXR1bShlKS5jYWxsKGkpLGEudG9w
IT0KPTNEaS5oZWlnaHQoKSYmKGEudG9wPTNEaS5oZWlnaHQoKSxNPTNEKGx8fHBhcnNlSW50KFQu
c3R5bGUoImhlaWdodCIpKXx8NDAwPQopLWEudG9wLWEuYm90dG9tKSxJLnNlbGVjdCgiLm52LWxl
Z2VuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIis9CkMvMisiLCIrIC1hLnRv
cCsiKSIpKSx3JiYocy53aWR0aCgxODApLmNvbG9yKFsiIzQ0NCJdKSxVLnNlbGVjdCgiLm52LWNv
bnRybz0KbHNXcmFwIikuZGF0dW0oSCkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIisg
LWEudG9wKyIpIikuY2FsbChzKSksdC53PQppZHRoKEMpLmhlaWdodChNKS5jb2xvcihlLm1hcChm
dW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxjKGUsdCl9KS5maWx0ZXI9CihmdW5jdGlvbih0
LG4pe3JldHVybiFlW25dLmRpc2FibGVkfSkpLEkuc2VsZWN0KCIubnYtc2NhdHRlcldyYXAiKS5k
YXR1bShlLj0KZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkpLmNhbGwodCks
SS5zZWxlY3QoIi5udi1yZWdyZXNzaW9uTGluPQplc1dyYXAiKS5hdHRyKCJjbGlwLXBhdGgiLCJ1
cmwoI252LWVkZ2UtY2xpcC0iK3QuaWQoKSsiKSIpO3ZhciB6PTNESS5zZWxlY3Q9CigiLm52LXJl
Z3Jlc3Npb25MaW5lc1dyYXAiKS5zZWxlY3RBbGwoIi5udi1yZWdMaW5lcyIpLmRhdGEoZnVuY3Rp
b24oZSl7cmV0dT0Kcm4gZX0pO3ouZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52
LXJlZ0xpbmVzIik7dmFyIFc9M0R6LnNlbGVjdEFsPQpsKCIubnYtcmVnTGluZSIpLmRhdGEoZnVu
Y3Rpb24oZSl7cmV0dXJuW2VdfSksWD0zRFcuZW50ZXIoKS5hcHBlbmQoImxpbmUiKS49CmF0dHIo
ImNsYXNzIiwibnYtcmVnTGluZSIpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMCk7Vy5hdHRyKCJ4
MSIsaC5yYW5nZSgpWz0KMF0pLmF0dHIoIngyIixoLnJhbmdlKClbMV0pLmF0dHIoInkxIixmdW5j
dGlvbihlLHQpe3JldHVybiBwKGguZG9tYWluKClbMF0qPQplLnNsb3BlK2UuaW50ZXJjZXB0KX0p
LmF0dHIoInkyIixmdW5jdGlvbihlLHQpe3JldHVybiBwKGguZG9tYWluKClbMV0qZS5zbG89CnBl
K2UuaW50ZXJjZXB0KX0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gYyhl
LG4pfSkuc3R5bGUoInN0cj0Kb2tlLW9wYWNpdHkiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZGlz
YWJsZWR8fHR5cGVvZiBlLnNsb3BlPTNEPTNEInVuZGVmaW5lPQpkInx8dHlwZW9mIGUuaW50ZXJj
ZXB0PTNEPTNEInVuZGVmaW5lZCI/MDoxfSksZyYmKG4uc2NhbGUoaCkudGlja3Mobi50aWNrcyg9
Cik/bi50aWNrcygpOkMvMTAwKS50aWNrU2l6ZSgtTSwwKSxVLnNlbGVjdCgiLm52LXgubnYtYXhp
cyIpLmF0dHIoInRyYW5zZm9ybT0KIiwidHJhbnNsYXRlKDAsIitwLnJhbmdlKClbMF0rIikiKS5j
YWxsKG4pKSx5JiYoci5zY2FsZShwKS50aWNrcyhyLnRpY2tzKCk/PQpyLnRpY2tzKCk6TS8zNiku
dGlja1NpemUoLUMsMCksVS5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5jYWxsKHIpKSxkJiYoby5n
ZXQ9CkRhdGEodC54KCkpLnNjYWxlKGgpLndpZHRoKEMpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUs
dCl7cmV0dXJuIGUuY29sb3J8fGMoZT0KLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJu
IWVbbl0uZGlzYWJsZWR9KSksUi5zZWxlY3QoIi5udi1kaXN0V3JhcCIpPQouYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJudi1kaXN0cmlidXRpb25YIiksVS5zZWxlY3QoIi5udi1kaXN0cmlidXRp
b25YIik9Ci5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK3AucmFuZ2UoKVswXSsiKSIp
LmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKD0KZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbChv
KSksdiYmKHUuZ2V0RGF0YSh0LnkoKSkuc2NhbGUocCkud2lkdGgoTSkuY29sPQpvcihlLm1hcChm
dW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxjKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxu
KXtyZXR1cm49CiFlW25dLmRpc2FibGVkfSkpLFIuc2VsZWN0KCIubnYtZGlzdFdyYXAiKS5hcHBl
bmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWRpcz0KdHJpYnV0aW9uWSIpLFUuc2VsZWN0KCIubnYt
ZGlzdHJpYnV0aW9uWSIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhiPQo/QzotdS5z
aXplKCkpKyIsMCkiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxl
ZH0pKS5jYWxsKHU9CikpLGQzLmZpc2hleWUmJihVLnNlbGVjdCgiLm52LWJhY2tncm91bmQiKS5h
dHRyKCJ3aWR0aCIsQykuYXR0cigiaGVpZ2h0IixNKT0KLFUuc2VsZWN0KCIubnYtYmFja2dyb3Vu
ZCIpLm9uKCJtb3VzZW1vdmUiLFYpLFUuc2VsZWN0KCIubnYtYmFja2dyb3VuZCIpLm9uPQooImNs
aWNrIixmdW5jdGlvbigpe1M9M0QhU30pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRDbGljay5mcmVl
emVGaXNoZXllIixmdW49CmN0aW9uKCl7Uz0zRCFTfSkpLHMuZGlzcGF0Y2gub24oImxlZ2VuZENs
aWNrIixmdW5jdGlvbihlLGkpe2UuZGlzYWJsZWQ9M0QhZT0KLmRpc2FibGVkLEU9M0RlLmRpc2Fi
bGVkPzA6Mi41LFUuc2VsZWN0KCIubnYtYmFja2dyb3VuZCIpLnN0eWxlKCJwb2ludGVyLWV2PQpl
bnRzIixlLmRpc2FibGVkPyJub25lIjoiYWxsIiksVS5zZWxlY3QoIi5udi1wb2ludC1wYXRocyIp
LnN0eWxlKCJwb2ludGVyLWU9CnZlbnRzIixlLmRpc2FibGVkPyJhbGwiOiJub25lIiksZS5kaXNh
YmxlZD8oaC5kaXN0b3J0aW9uKEUpLmZvY3VzKDApLHAuZGlzdD0Kb3J0aW9uKEUpLmZvY3VzKDAp
LFUuc2VsZWN0KCIubnYtc2NhdHRlcldyYXAiKS5jYWxsKHQpLFUuc2VsZWN0KCIubnYteC5udi1h
PQp4aXMiKS5jYWxsKG4pLFUuc2VsZWN0KCIubnYteS5udi1heGlzIikuY2FsbChyKSk6Uz0zRCEx
LEIudXBkYXRlKCl9KSxpLmRpc3A9CmF0Y2gub24oInN0YXRlQ2hhbmdlIixmdW5jdGlvbihlKXtr
PTNEZSxBLnN0YXRlQ2hhbmdlKGspLEIudXBkYXRlKCl9KSx0LmRpcz0KcGF0Y2gub24oImVsZW1l
bnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZDMuc2VsZWN0KCIubnYtY2hhcnQtIit0
LmlkPQooKSsiIC5udi1zZXJpZXMtIitlLnNlcmllc0luZGV4KyIgLm52LWRpc3R4LSIrZS5wb2lu
dEluZGV4KS5hdHRyKCJ5MSIsZS5wb3M9ClsxXS1NKSxkMy5zZWxlY3QoIi5udi1jaGFydC0iK3Qu
aWQoKSsiIC5udi1zZXJpZXMtIitlLnNlcmllc0luZGV4KyIgLm52LWRpcz0KdHktIitlLnBvaW50
SW5kZXgpLmF0dHIoIngyIixlLnBvc1swXStvLnNpemUoKSksZS5wb3M9M0RbZS5wb3NbMF0rYS5s
ZWZ0LGUuPQpwb3NbMV0rYS50b3BdLEEudG9vbHRpcFNob3coZSl9KSxBLm9uKCJ0b29sdGlwU2hv
dyIsZnVuY3Rpb24oZSl7eCYmUChlLE4ucGE9CnJlbnROb2RlKX0pLEEub24oImNoYW5nZVN0YXRl
IixmdW5jdGlvbih0KXt0eXBlb2YgdC5kaXNhYmxlZCE9M0QidW5kZWZpbmVkIj0KJiYoZS5mb3JF
YWNoKGZ1bmN0aW9uKGUsbil7ZS5kaXNhYmxlZD0zRHQuZGlzYWJsZWRbbl19KSxrLmRpc2FibGVk
PTNEdC5kaXNhPQpibGVkKSxCLnVwZGF0ZSgpfSksXz0zRGguY29weSgpLEQ9M0RwLmNvcHkoKX0p
LEJ9dmFyIHQ9M0RlLm1vZGVscy5zY2F0dGVyKCk9CixuPTNEZS5tb2RlbHMuYXhpcygpLHI9M0Rl
Lm1vZGVscy5heGlzKCksaT0zRGUubW9kZWxzLmxlZ2VuZCgpLHM9M0RlLm1vZGVscz0KLmxlZ2Vu
ZCgpLG89M0RlLm1vZGVscy5kaXN0cmlidXRpb24oKSx1PTNEZS5tb2RlbHMuZGlzdHJpYnV0aW9u
KCksYT0zRHt0b3A6PQozMCxyaWdodDoyMCxib3R0b206NTAsbGVmdDo3NX0sZj0zRG51bGwsbD0z
RG51bGwsYz0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCk9CixoPTNEZDMuZmlzaGV5ZT9kMy5maXNo
ZXllLnNjYWxlKGQzLnNjYWxlLmxpbmVhcikuZGlzdG9ydGlvbigwKTp0LnhTY2FsZSgpLD0KcD0z
RGQzLmZpc2hleWU/ZDMuZmlzaGV5ZS5zY2FsZShkMy5zY2FsZS5saW5lYXIpLmRpc3RvcnRpb24o
MCk6dC55U2NhbGUoKSxkPQo9M0QhMSx2PTNEITEsbT0zRCEwLGc9M0QhMCx5PTNEITAsYj0zRCEx
LHc9M0QhIWQzLmZpc2hleWUsRT0zRDAsUz0zRCExLHg9M0Q9CiEwLFQ9M0RmdW5jdGlvbihlLHQs
bil7cmV0dXJuIjxzdHJvbmc+Iit0KyI8L3N0cm9uZz4ifSxOPTNEZnVuY3Rpb24oZSx0LG4pez0K
cmV0dXJuIjxzdHJvbmc+IituKyI8L3N0cm9uZz4ifSxDPTNEZnVuY3Rpb24oZSx0LG4scil7cmV0
dXJuIjxoMz4iK2UrIjwvaDM+PQoiKyI8cD4iK3IrIjwvcD4ifSxrPTNEe30sTD0zRG51bGwsQT0z
RGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWQ9CmUiLCJzdGF0ZUNoYW5nZSIs
ImNoYW5nZVN0YXRlIiksTz0zRCJObyBEYXRhIEF2YWlsYWJsZS4iLE09M0QwO3QueFNjYWxlKGgp
Lj0KeVNjYWxlKHApLG4ub3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZygxMCksci5vcmllbnQo
Yj8icmlnaHQiOiJsZWZ0IikudGljPQprUGFkZGluZygxMCksby5heGlzKCJ4IiksdS5heGlzKCJ5
Iikscy51cGRhdGVTdGF0ZSghMSk7dmFyIF8sRCxQPTNEZnVuY3Rpb249CihpLHMpe3ZhciBvPTNE
aS5wb3NbMF0rKHMub2Zmc2V0TGVmdHx8MCksdT0zRGkucG9zWzFdKyhzLm9mZnNldFRvcHx8MCks
Zj0zRD0KaS5wb3NbMF0rKHMub2Zmc2V0TGVmdHx8MCksbD0zRHAucmFuZ2UoKVswXSthLnRvcCso
cy5vZmZzZXRUb3B8fDApLGM9M0RoLnJhPQpuZ2UoKVswXSthLmxlZnQrKHMub2Zmc2V0TGVmdHx8
MCksZD0zRGkucG9zWzFdKyhzLm9mZnNldFRvcHx8MCksdj0zRG4udGlja0Y9Cm9ybWF0KCkodC54
KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKSxtPTNEci50aWNrRm9ybWF0KCkodC55KCkoaS5wb2lu
dCxpLnBvaT0KbnRJbmRleCkpO1QhPTNEbnVsbCYmZS50b29sdGlwLnNob3coW2YsbF0sVChpLnNl
cmllcy5rZXksdixtLGksQiksIm4iLDEscywiPQp4LW52dG9vbHRpcCIpLE4hPTNEbnVsbCYmZS50
b29sdGlwLnNob3coW2MsZF0sTihpLnNlcmllcy5rZXksdixtLGksQiksImUiLDE9CixzLCJ5LW52
dG9vbHRpcCIpLEMhPTNEbnVsbCYmZS50b29sdGlwLnNob3coW28sdV0sQyhpLnNlcmllcy5rZXks
dixtLGkucG9pbj0KdC50b29sdGlwLGksQiksaS52YWx1ZTwwPyJuIjoicyIsbnVsbCxzKX0sSD0z
RFt7a2V5OiJNYWduaWZ5IixkaXNhYmxlZDohMH1dPQo7cmV0dXJuIHQuZGlzcGF0Y2gub24oImVs
ZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtBLnRvb2x0aXBIaWRlKGU9CiksZDMu
c2VsZWN0KCIubnYtY2hhcnQtIit0LmlkKCkrIiAubnYtc2VyaWVzLSIrZS5zZXJpZXNJbmRleCsi
IC5udi1kaXN0eC0iKz0KZS5wb2ludEluZGV4KS5hdHRyKCJ5MSIsMCksZDMuc2VsZWN0KCIubnYt
Y2hhcnQtIit0LmlkKCkrIiAubnYtc2VyaWVzLSIrZS5zPQplcmllc0luZGV4KyIgLm52LWRpc3R5
LSIrZS5wb2ludEluZGV4KS5hdHRyKCJ4MiIsdS5zaXplKCkpfSksQS5vbigidG9vbHRpcEg9Cmlk
ZSIsZnVuY3Rpb24oKXt4JiZlLnRvb2x0aXAuY2xlYW51cCgpfSksQi5kaXNwYXRjaD0zREEsQi5z
Y2F0dGVyPTNEdCxCLmxlZz0KZW5kPTNEaSxCLmNvbnRyb2xzPTNEcyxCLnhBeGlzPTNEbixCLnlB
eGlzPTNEcixCLmRpc3RYPTNEbyxCLmRpc3RZPTNEdSxkMy5yPQplYmluZChCLHQsImlkIiwiaW50
ZXJhY3RpdmUiLCJwb2ludEFjdGl2ZSIsIngiLCJ5Iiwic2hhcGUiLCJzaXplIiwieFNjYWxlIiw9
CiJ5U2NhbGUiLCJ6U2NhbGUiLCJ4RG9tYWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIs
InNpemVEb21haW4iLCJzaXplUj0KYW5nZSIsImZvcmNlWCIsImZvcmNlWSIsImZvcmNlU2l6ZSIs
ImNsaXBWb3Jvbm9pIiwiY2xpcFJhZGl1cyIsInVzZVZvcm9ub2kiPQopLEIub3B0aW9ucz0zRGUu
dXRpbHMub3B0aW9uc0Z1bmMuYmluZChCKSxCLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmc9CnVtZW50cy5sZW5ndGg/KGEudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2Uu
dG9wOmEudG9wLGEucmlnaHQ9M0R0eT0KcGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2Uucmln
aHQ6YS5yaWdodCxhLmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QiPQp1bmRlZmluZWQiP2Uu
Ym90dG9tOmEuYm90dG9tLGEubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5s
ZWZ0OmE9Ci5sZWZ0LEIpOmF9LEIud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oZj0zRGUsQik6Zn0sQi5oZT0KaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhsPTNEZSxCKTpsfSxCLmNvbG9yPTNEZnVuY3Rpb24oPQp0KXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oYz0zRGUudXRpbHMuZ2V0Q29sb3IodCksaS5jb2xvcihjKSxvLmNv
bG9yKGMpLHU9Ci5jb2xvcihjKSxCKTpjfSxCLnNob3dEaXN0WD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSxCKT0KOmR9LEIuc2hvd0Rpc3RZPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9M0RlLEIpOnZ9LEIuc2hvd0NvPQpudHJvbHM9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz0zRGUsQik6d30sQi5zaG93
TGVnZW5kPTNEZnU9Cm5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0zRGUsQik6
bX0sQi5zaG93WEF4aXM9M0RmdW5jdGlvbihlKXtyZT0KdHVybiBhcmd1bWVudHMubGVuZ3RoPyhn
PTNEZSxCKTpnfSxCLnNob3dZQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVuPQp0cy5s
ZW5ndGg/KHk9M0RlLEIpOnl9LEIucmlnaHRBbGlnbllBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW49Cmd0aD8oYj0zRGUsci5vcmllbnQoZT8icmlnaHQiOiJsZWZ0IiksQik6
Yn0sQi5maXNoZXllPTNEZnVuY3Rpb24oZSl7cmV0dXJuID0KYXJndW1lbnRzLmxlbmd0aD8oRT0z
RGUsQik6RX0sQi50b29sdGlwcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuPQpn
dGg/KHg9M0RlLEIpOnh9LEIudG9vbHRpcENvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oQz0KPTNEZSxCKTpDfSxCLnRvb2x0aXBYQ29udGVudD0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhUPTNEZSxCPQopOlR9LEIudG9vbHRpcFlDb250
ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE49M0RlLEIpOk59LEI9
Ci5zdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhrPTNEZSxCKTpr
fSxCLmRlZmF1bHRTdGF0ZT0zRD0KZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KEw9M0RlLEIpOkx9LEIubm9EYXRhPTNEZnVuY3Rpb24oZSl7cmV0PQp1cm4gYXJndW1lbnRzLmxl
bmd0aD8oTz0zRGUsQik6T30sQi50cmFuc2l0aW9uRHVyYXRpb249M0RmdW5jdGlvbihlKXtyZXR1
cm49CiBhcmd1bWVudHMubGVuZ3RoPyhNPTNEZSxCKTpNfSxCfSxlLm1vZGVscy5zcGFya2xpbmU9
M0RmdW5jdGlvbigpe2Z1bmN0aW9uID0KZChlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3Zh
ciBpPTNEbi10LmxlZnQtdC5yaWdodCxkPTNEci10LnRvcC10LmJvdHRvPQptLHY9M0RkMy5zZWxl
Y3QodGhpcyk7cy5kb21haW4obHx8ZDMuZXh0ZW50KGUsdSkpLnJhbmdlKGh8fFswLGldKSxvLmRv
bWFpbig9CmN8fGQzLmV4dGVudChlLGEpKS5yYW5nZShwfHxbZCwwXSk7dmFyIG09M0R2LnNlbGVj
dEFsbCgiZy5udi13cmFwLm52LXNwYXJrbD0KaW5lIikuZGF0YShbZV0pLGc9M0RtLmVudGVyKCku
YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtc3BhPQpya2xpbmUiKSxi
PTNEZy5hcHBlbmQoImciKSx3PTNEbS5zZWxlY3QoImciKTttLmF0dHIoInRyYW5zZm9ybSIsInRy
YW5zbGF0ZSg9CiIrdC5sZWZ0KyIsIit0LnRvcCsiKSIpO3ZhciBFPTNEbS5zZWxlY3RBbGwoInBh
dGgiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybj0KW2VdfSk7RS5lbnRlcigpLmFwcGVuZCgicGF0
aCIpLEUuZXhpdCgpLnJlbW92ZSgpLEUuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oPQplLHQpe3Jl
dHVybiBlLmNvbG9yfHxmKGUsdCl9KS5hdHRyKCJkIixkMy5zdmcubGluZSgpLngoZnVuY3Rpb24o
ZSx0KXtyZXR1cm49CiBzKHUoZSx0KSl9KS55KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG8oYShlLHQp
KX0pKTt2YXIgUz0zRG0uc2VsZWN0QWxsKCJjaXJjbD0KZS5udi1wb2ludCIpLmRhdGEoZnVuY3Rp
b24oZSl7ZnVuY3Rpb24gbih0KXtpZih0IT0zRC0xKXt2YXIgbj0zRGVbdF07cmV0dXJuPQogbi5w
b2ludEluZGV4PTNEdCxufXJldHVybiBudWxsfXZhciB0PTNEZS5tYXAoZnVuY3Rpb24oZSx0KXty
ZXR1cm4gYShlLHQpfSk9CixyPTNEbih0Lmxhc3RJbmRleE9mKG8uZG9tYWluKClbMV0pKSxpPTNE
bih0LmluZGV4T2Yoby5kb21haW4oKVswXSkpLHM9M0RuKD0KdC5sZW5ndGgtMSk7cmV0dXJuW2ks
cixzXS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUhPTNEbnVsbH0pfSk7Uy5lbnRlcigpPQou
YXBwZW5kKCJjaXJjbGUiKSxTLmV4aXQoKS5yZW1vdmUoKSxTLmF0dHIoImN4IixmdW5jdGlvbihl
LHQpe3JldHVybiBzKHUoZSw9CmUucG9pbnRJbmRleCkpfSkuYXR0cigiY3kiLGZ1bmN0aW9uKGUs
dCl7cmV0dXJuIG8oYShlLGUucG9pbnRJbmRleCkpfSkuYXR0cj0KKCJyIiwyKS5hdHRyKCJjbGFz
cyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdShlLGUucG9pbnRJbmRleCk9M0Q9M0RzLmRvbWFpbigp
PQpbMV0/Im52LXBvaW50IG52LWN1cnJlbnRWYWx1ZSI6YShlLGUucG9pbnRJbmRleCk9M0Q9M0Rv
LmRvbWFpbigpWzBdPyJudi1wb2k9Cm50IG52LW1pblZhbHVlIjoibnYtcG9pbnQgbnYtbWF4VmFs
dWUifSl9KSxkfXZhciB0PTNEe3RvcDoyLHJpZ2h0OjAsYm90dG9tOj0KMixsZWZ0OjB9LG49M0Q0
MDAscj0zRDMyLGk9M0QhMCxzPTNEZDMuc2NhbGUubGluZWFyKCksbz0zRGQzLnNjYWxlLmxpbmVh
cigpPQosdT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9LGE9M0RmdW5jdGlvbihlKXtyZXR1cm4g
ZS55fSxmPTNEZS51dGlscy5nZXRDb2w9Cm9yKFsiIzAwMCJdKSxsLGMsaCxwO3JldHVybiBkLm9w
dGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoZCksZC5tYXJnaT0Kbj0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5k
ZWZpbmVkPQoiP2UudG9wOnQudG9wLHQucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZp
bmVkIj9lLnJpZ2h0OnQucmlnaHQsdC5ib3Q9CnRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5k
ZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHRvbSx0LmxlZnQ9M0R0eXBlb2YgZS5sZT0KZnQhPTNEInVu
ZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxkKTp0fSxkLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50PQpzLmxlbmd0aD8obj0zRGUsZCk6bn0sZC5oZWlnaHQ9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0zRGU9CixkKTpyfSxkLng9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGQzLmZ1bmN0b3IoZSksZCk6dX0sZD0KLnk9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0zRGQzLmZ1bmN0b3IoZSksZCk6
YX0sZC54U2NhbGU9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPTNE
ZSxkKTpzfSxkLnlTY2FsZT0zRGZ1bmN0aW9uKGUpez0KcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KG89M0RlLGQpOm99LGQueERvbWFpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVuPQp0cy5s
ZW5ndGg/KGw9M0RlLGQpOmx9LGQueURvbWFpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhjPQo9M0RlLGQpOmN9LGQueFJhbmdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGg9M0RlLGQpOmh9LGQueVI9CmFuZ2U9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsZCk6cH0sZC5hbmltYXRlPTNEZnVuY3Rpbz0Kbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUsZCk6aX0sZC5jb2xvcj0zRGZ1bmN0aW9u
KHQpe3JldHVybiBhcmd1PQptZW50cy5sZW5ndGg/KGY9M0RlLnV0aWxzLmdldENvbG9yKHQpLGQp
OmZ9LGR9LGUubW9kZWxzLnNwYXJrbGluZVBsdXM9M0RmdW49CmN0aW9uKCl7ZnVuY3Rpb24gdihl
KXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGMpe2Z1bmN0aW9uIE8oKXtpZihhKXJldHVybjt2YT0K
ciBlPTNEQy5zZWxlY3RBbGwoIi5udi1ob3ZlclZhbHVlIikuZGF0YSh1KSxyPTNEZS5lbnRlcigp
LmFwcGVuZCgiZyIpLmF0dHIoPQoiY2xhc3MiLCJudi1ob3ZlclZhbHVlIikuc3R5bGUoInN0cm9r
ZS1vcGFjaXR5IiwwKS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwwKTs9CmUuZXhpdCgpLnN0eWxlKCJz
dHJva2Utb3BhY2l0eSIsMCkuc3R5bGUoImZpbGwtb3BhY2l0eSIsMCkucmVtb3ZlKCksZS5hdHRy
KD0KInRyYW5zZm9ybSIsZnVuY3Rpb24oZSl7cmV0dXJuInRyYW5zbGF0ZSgiK3ModC54KCkoY1tl
XSxlKSkrIiwwKSJ9KS5zdHlsZSgiPQpzdHJva2Utb3BhY2l0eSIsMSkuc3R5bGUoImZpbGwtb3Bh
Y2l0eSIsMSk7aWYoIXUubGVuZ3RoKXJldHVybjtyLmFwcGVuZCgibGk9Cm5lIikuYXR0cigieDEi
LDApLmF0dHIoInkxIiwtbi50b3ApLmF0dHIoIngyIiwwKS5hdHRyKCJ5MiIsYiksci5hcHBlbmQo
InRleD0KdCIpLmF0dHIoImNsYXNzIiwibnYteFZhbHVlIikuYXR0cigieCIsLTYpLmF0dHIoInki
LC1uLnRvcCkuYXR0cigidGV4dC1hbmNoPQpvciIsImVuZCIpLmF0dHIoImR5IiwiLjllbSIpLEMu
c2VsZWN0KCIubnYtaG92ZXJWYWx1ZSAubnYteFZhbHVlIikudGV4dChmKHQ9Ci54KCkoY1t1WzBd
XSx1WzBdKSkpLHIuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudi15VmFsdWUiKS5hdHRy
KCJ4Iiw2KT0KLmF0dHIoInkiLC1uLnRvcCkuYXR0cigidGV4dC1hbmNob3IiLCJzdGFydCIpLmF0
dHIoImR5IiwiLjllbSIpLEMuc2VsZWN0KCIuPQpudi1ob3ZlclZhbHVlIC5udi15VmFsdWUiKS50
ZXh0KGwodC55KCkoY1t1WzBdXSx1WzBdKSkpfWZ1bmN0aW9uIE0oKXtmdW5jdGk9Cm9uIHIoZSxu
KXt2YXIgcj0zRE1hdGguYWJzKHQueCgpKGVbMF0sMCktbiksaT0zRDA7Zm9yKHZhciBzPTNEMDtz
PGUubGVuZ3RoOz0KcysrKU1hdGguYWJzKHQueCgpKGVbc10scyktbik8ciYmKHI9M0RNYXRoLmFi
cyh0LngoKShlW3NdLHMpLW4pLGk9M0RzKTtyZXR1PQpybiBpfWlmKGEpcmV0dXJuO3ZhciBlPTNE
ZDMubW91c2UodGhpcylbMF0tbi5sZWZ0O3U9M0RbcihjLE1hdGgucm91bmQocy5pbnY9CmVydChl
KSkpXSxPKCl9dmFyIG09M0RkMy5zZWxlY3QodGhpcyksZz0zRChyfHxwYXJzZUludChtLnN0eWxl
KCJ3aWR0aCIpKXx8OT0KNjApLW4ubGVmdC1uLnJpZ2h0LGI9M0QoaXx8cGFyc2VJbnQobS5zdHls
ZSgiaGVpZ2h0IikpfHw0MDApLW4udG9wLW4uYm90dG9tPQo7di51cGRhdGU9M0RmdW5jdGlvbigp
e3YoZSl9LHYuY29udGFpbmVyPTNEdGhpcztpZighY3x8IWMubGVuZ3RoKXt2YXIgdz0zRG09Ci5z
ZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFtkXSk7cmV0dXJuIHcuZW50ZXIoKS5hcHBlbmQo
InRleHQiKS5hdHRyKCJjbD0KYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2Vt
Iikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiksdy5hPQp0dHIoIngiLG4ubGVmdCtnLzIp
LmF0dHIoInkiLG4udG9wK2IvMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLHZ9bS5zZWw9
CmVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbW92ZSgpO3ZhciBFPTNEdC55KCkoY1tjLmxlbmd0aC0x
XSxjLmxlbmd0aC0xKTtzPTNEdD0KLnhTY2FsZSgpLG89M0R0LnlTY2FsZSgpO3ZhciBTPTNEbS5z
ZWxlY3RBbGwoImcubnYtd3JhcC5udi1zcGFya2xpbmVwbHVzIikuPQpkYXRhKFtjXSksVD0zRFMu
ZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1zcGFya2xp
bmU9CnBsdXMiKSxOPTNEVC5hcHBlbmQoImciKSxDPTNEUy5zZWxlY3QoImciKTtOLmFwcGVuZCgi
ZyIpLmF0dHIoImNsYXNzIiwibnYtcz0KcGFya2xpbmVXcmFwIiksTi5hcHBlbmQoImciKS5hdHRy
KCJjbGFzcyIsIm52LXZhbHVlV3JhcCIpLE4uYXBwZW5kKCJnIikuYXR0PQpyKCJjbGFzcyIsIm52
LWhvdmVyQXJlYSIpLFMuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrbi5sZWZ0KyIsIitu
LnRvcCs9CiIpIik7dmFyIGs9M0RDLnNlbGVjdCgiLm52LXNwYXJrbGluZVdyYXAiKTt0LndpZHRo
KGcpLmhlaWdodChiKSxrLmNhbGwodCk7dj0KYXIgTD0zREMuc2VsZWN0KCIubnYtdmFsdWVXcmFw
IiksQT0zREwuc2VsZWN0QWxsKCIubnYtY3VycmVudFZhbHVlIikuZGF0YShbPQpFXSk7QS5lbnRl
cigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnYtY3VycmVudFZhbHVlIikuYXR0cigi
ZHgiLHA/LTg9Cjo4KS5hdHRyKCJkeSIsIi45ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLHA/ImVu
ZCI6InN0YXJ0IiksQS5hdHRyKCJ4IixnKyhwPz0Kbi5yaWdodDowKSkuYXR0cigieSIsaD9mdW5j
dGlvbihlKXtyZXR1cm4gbyhlKX06MCkuc3R5bGUoImZpbGwiLHQuY29sb3IoKShjPQpbYy5sZW5n
dGgtMV0sYy5sZW5ndGgtMSkpLnRleHQobChFKSksTi5zZWxlY3QoIi5udi1ob3ZlckFyZWEiKS5h
cHBlbmQoInJlY3Q9CiIpLm9uKCJtb3VzZW1vdmUiLE0pLm9uKCJjbGljayIsZnVuY3Rpb24oKXth
PTNEIWF9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKD0KKXt1PTNEW10sTygpfSksQy5zZWxlY3Qo
Ii5udi1ob3ZlckFyZWEgcmVjdCIpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSl7PQpyZXR1
cm4idHJhbnNsYXRlKCIrIC1uLmxlZnQrIiwiKyAtbi50b3ArIikifSkuYXR0cigid2lkdGgiLGcr
bi5sZWZ0K24ucmlnaHQ9CikuYXR0cigiaGVpZ2h0IixiK24udG9wKX0pLHZ9dmFyIHQ9M0RlLm1v
ZGVscy5zcGFya2xpbmUoKSxuPTNEe3RvcDoxNSxyaWdodD0KOjEwMCxib3R0b206MTAsbGVmdDo1
MH0scj0zRG51bGwsaT0zRG51bGwscyxvLHU9M0RbXSxhPTNEITEsZj0zRGQzLmZvcm1hdCgiPQos
ciIpLGw9M0RkMy5mb3JtYXQoIiwuMmYiKSxjPTNEITAsaD0zRCEwLHA9M0QhMSxkPTNEIk5vIERh
dGEgQXZhaWxhYmxlLiI7cmU9CnR1cm4gdi5zcGFya2xpbmU9M0R0LGQzLnJlYmluZCh2LHQsIngi
LCJ5IiwieFNjYWxlIiwieVNjYWxlIiwiY29sb3IiKSx2Lm9wdD0KaW9ucz0zRGUudXRpbHMub3B0
aW9uc0Z1bmMuYmluZCh2KSx2Lm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
PQpsZW5ndGg/KG4udG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOm4udG9w
LG4ucmlnaHQ9M0R0eXBlb2YgZS49CnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6bi5yaWdo
dCxuLmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbj0KZWQiP2UuYm90dG9tOm4u
Ym90dG9tLG4ubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0Om4ubGVm
dCx2PQopOm59LHYud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
cj0zRGUsdik6cn0sdi5oZWlnaHQ9M0Q9CmZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhpPTNEZSx2KTppfSx2LnhUaWNrRm9ybWF0PTNEZnVuY3Rpb24oZT0KKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oZj0zRGUsdik6Zn0sdi55VGlja0Zvcm1hdD0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhPQpyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLHYpOmx9LHYuc2hvd1ZhbHVlPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW49Cmd0aD8oYz0zRGUsdik6Y30sdi5hbGlnblZhbHVl
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLD0Kdik6aH0sdi5y
aWdodEFsaWduVmFsdWU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0z
RGUsdik6cH0sPQp2Lm5vRGF0YT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhkPTNEZSx2KTpkfSx2fSxlLm1vZGVscy5zdGE9CmNrZWRBcmVhPTNEZnVuY3Rpb24oKXtmdW5j
dGlvbiBnKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIGE9M0RuLXQubD0KZWZ0LXQu
cmlnaHQsYj0zRHItdC50b3AtdC5ib3R0b20sdz0zRGQzLnNlbGVjdCh0aGlzKTtwPTNEdi54U2Nh
bGUoKSxkPTNEdi55PQpTY2FsZSgpO3ZhciBFPTNEZTtlLmZvckVhY2goZnVuY3Rpb24oZSx0KXtl
LnNlcmllc0luZGV4PTNEdCxlLnZhbHVlcz0zRGUudmE9Cmx1ZXMubWFwKGZ1bmN0aW9uKGUsbil7
cmV0dXJuIGUuaW5kZXg9M0RuLGUuc2VyaWVzSW5kZXg9M0R0LGV9KX0pO3ZhciBTPTNEZT0KLmZp
bHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pO2U9M0RkMy5sYXlvdXQuc3RhY2so
KS5vcmRlcihsKS5vZmZzPQpldChmKS52YWx1ZXMoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVz
fSkueChvKS55KHUpLm91dChmdW5jdGlvbihlLHQsbil7dmE9CnIgcj0zRHUoZSk9M0Q9M0Q9M0Qw
PzA6bjtlLmRpc3BsYXk9M0R7eTpyLHkwOnR9fSkoUyk7dmFyIFQ9M0R3LnNlbGVjdEFsbCgiZz0K
Lm52LXdyYXAubnYtc3RhY2tlZGFyZWEiKS5kYXRhKFtlXSksTj0zRFQuZW50ZXIoKS5hcHBlbmQo
ImciKS5hdHRyKCJjbGFzcyIsPQoibnZkMyBudi13cmFwIG52LXN0YWNrZWRhcmVhIiksQz0zRE4u
YXBwZW5kKCJkZWZzIiksaz0zRE4uYXBwZW5kKCJnIiksTD0zRFQ9Ci5zZWxlY3QoImciKTtrLmFw
cGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYXJlYVdyYXAiKSxrLmFwcGVuZCgiZyIpLmF0dHIo
Ij0KY2xhc3MiLCJudi1zY2F0dGVyV3JhcCIpLFQuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRl
KCIrdC5sZWZ0KyIsIit0LnRvcCsiPQopIiksdi53aWR0aChhKS5oZWlnaHQoYikueChvKS55KGZ1
bmN0aW9uKGUpe3JldHVybiBlLmRpc3BsYXkueStlLmRpc3BsYXkueTA9Cn0pLmZvcmNlWShbMF0p
LmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGkoZSxlLnNlcmllc0lu
ZGV4KT0KfSkpO3ZhciBBPTNETC5zZWxlY3QoIi5udi1zY2F0dGVyV3JhcCIpLmRhdHVtKGUpO0Eu
Y2FsbCh2KSxDLmFwcGVuZCgiY2xpcFBhPQp0aCIpLmF0dHIoImlkIiwibnYtZWRnZS1jbGlwLSIr
cykuYXBwZW5kKCJyZWN0IiksVC5zZWxlY3QoIiNudi1lZGdlLWNsaXAtIis9CnMrIiByZWN0Iiku
YXR0cigid2lkdGgiLGEpLmF0dHIoImhlaWdodCIsYiksTC5hdHRyKCJjbGlwLXBhdGgiLGg/InVy
bCgjbnYtZT0KZGdlLWNsaXAtIitzKyIpIjoiIik7dmFyIE89M0RkMy5zdmcuYXJlYSgpLngoZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gcChvKGUsdCkpPQp9KS55MChmdW5jdGlvbihlKXtyZXR1cm4gZChl
LmRpc3BsYXkueTApfSkueTEoZnVuY3Rpb24oZSl7cmV0dXJuIGQoZS5kaXNwbGE9CnkueStlLmRp
c3BsYXkueTApfSkuaW50ZXJwb2xhdGUoYyksTT0zRGQzLnN2Zy5hcmVhKCkueChmdW5jdGlvbihl
LHQpe3JldHVybj0KIHAobyhlLHQpKX0pLnkwKGZ1bmN0aW9uKGUpe3JldHVybiBkKGUuZGlzcGxh
eS55MCl9KS55MShmdW5jdGlvbihlKXtyZXR1cm4gPQpkKGUuZGlzcGxheS55MCl9KSxfPTNETC5z
ZWxlY3QoIi5udi1hcmVhV3JhcCIpLnNlbGVjdEFsbCgicGF0aC5udi1hcmVhIikuZGE9CnRhKGZ1
bmN0aW9uKGUpe3JldHVybiBlfSk7Xy5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNz
IixmdW5jdGlvbihlLD0KdCl7cmV0dXJuIm52LWFyZWEgbnYtYXJlYS0iK3R9KS5hdHRyKCJkIixm
dW5jdGlvbihlLHQpe3JldHVybiBNKGUudmFsdWVzLGUuPQpzZXJpZXNJbmRleCl9KS5vbigibW91
c2VvdmVyIixmdW5jdGlvbihlLHQpe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciI9Ciwh
MCksbS5hcmVhTW91c2VvdmVyKHtwb2ludDplLHNlcmllczplLmtleSxwb3M6W2QzLmV2ZW50LnBh
Z2VYLGQzLmV2ZW50LnBhZz0KZVldLHNlcmllc0luZGV4OmUuc2VyaWVzSW5kZXh9KX0pLm9uKCJt
b3VzZW91dCIsZnVuY3Rpb24oZSx0KXtkMy5zZWxlY3QodGhpPQpzKS5jbGFzc2VkKCJob3ZlciIs
ITEpLG0uYXJlYU1vdXNlb3V0KHtwb2ludDplLHNlcmllczplLmtleSxwb3M6W2QzLmV2ZW50LnA9
CmFnZVgsZDMuZXZlbnQucGFnZVldLHNlcmllc0luZGV4OmUuc2VyaWVzSW5kZXh9KX0pLm9uKCJj
bGljayIsZnVuY3Rpb24oZSx0KT0Ke2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIsITEp
LG0uYXJlYUNsaWNrKHtwb2ludDplLHNlcmllczplLmtleSxwb3M6PQpbZDMuZXZlbnQucGFnZVgs
ZDMuZXZlbnQucGFnZVldLHNlcmllc0luZGV4OmUuc2VyaWVzSW5kZXh9KX0pLF8uZXhpdCgpLnJl
bW89CnZlKCksXy5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8aShl
LGUuc2VyaWVzSW5kZXgpfSkuc3R5bD0KZSgic3Ryb2tlIixmdW5jdGlvbihlLHQpe3JldHVybiBl
LmNvbG9yfHxpKGUsZS5zZXJpZXNJbmRleCl9KSxfLmF0dHIoImQiLGZ1PQpuY3Rpb24oZSx0KXty
ZXR1cm4gTyhlLnZhbHVlcyx0KX0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIuYXJl
YSIsZnU9Cm5jdGlvbihlKXtMLnNlbGVjdCgiLm52LWNoYXJ0LSIrcysiIC5udi1hcmVhLSIrZS5z
ZXJpZXNJbmRleCkuY2xhc3NlZCgiaG92ZT0KciIsITApfSksdi5kaXNwYXRjaC5vbigiZWxlbWVu
dE1vdXNlb3V0LmFyZWEiLGZ1bmN0aW9uKGUpe0wuc2VsZWN0KCIubnYtY2hhPQpydC0iK3MrIiAu
bnYtYXJlYS0iK2Uuc2VyaWVzSW5kZXgpLmNsYXNzZWQoImhvdmVyIiwhMSl9KSxnLmQzX3N0YWNr
ZWRPZmZzZXQ9Cl9zdGFja1BlcmNlbnQ9M0RmdW5jdGlvbihlKXt2YXIgdD0zRGUubGVuZ3RoLG49
M0RlWzBdLmxlbmd0aCxyPTNEMS90LGkscyxvLD0KYT0zRFtdO2ZvcihzPTNEMDtzPG47KytzKXtm
b3IoaT0zRDAsbz0zRDA7aTxFLmxlbmd0aDtpKyspbys9M0R1KEVbaV0udmFsdWVzPQpbc10pO2lm
KG8pZm9yKGk9M0QwO2k8dDtpKyspZVtpXVtzXVsxXS89M0RvO2Vsc2UgZm9yKGk9M0QwO2k8dDtp
KyspZVtpXVtzXVs9CjFdPTNEcn1mb3Iocz0zRDA7czxuOysrcylhW3NdPTNEMDtyZXR1cm4gYX19
KSxnfXZhciB0PTNEe3RvcDowLHJpZ2h0OjAsYm90dD0Kb206MCxsZWZ0OjB9LG49M0Q5NjAscj0z
RDUwMCxpPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxzPTNETWF0aC5mbG9vcihNYXRoPQoucmFu
ZG9tKCkqMWU1KSxvPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0sdT0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBlLnl9LGE9M0Q9CiJzdGFjayIsZj0zRCJ6ZXJvIixsPTNEImRlZmF1bHQiLGM9M0QibGlu
ZWFyIixoPTNEITEscCxkLHY9M0RlLm1vZGVscy5zY2F0dD0KZXIoKSxtPTNEZDMuZGlzcGF0Y2go
InRvb2x0aXBTaG93IiwidG9vbHRpcEhpZGUiLCJhcmVhQ2xpY2siLCJhcmVhTW91c2VvdmVyPQoi
LCJhcmVhTW91c2VvdXQiKTtyZXR1cm4gdi5zaXplKDIuMikuc2l6ZURvbWFpbihbMi4yLDIuMl0p
LHYuZGlzcGF0Y2gub24oImU9CmxlbWVudENsaWNrLmFyZWEiLGZ1bmN0aW9uKGUpe20uYXJlYUNs
aWNrKGUpfSksdi5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlbz0KdmVyLnRvb2x0aXAiLGZ1bmN0
aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK3QubGVmdCxlLnBvc1sxXSt0LnRvcF0sbS50b29sdGlw
PQpTaG93KGUpfSksdi5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0
aW9uKGUpe20udG9vbHRpcEhpZGU9CihlKX0pLGcuZGlzcGF0Y2g9M0RtLGcuc2NhdHRlcj0zRHYs
ZDMucmViaW5kKGcsdiwiaW50ZXJhY3RpdmUiLCJzaXplIiwieFNjYT0KbGUiLCJ5U2NhbGUiLCJ6
U2NhbGUiLCJ4RG9tYWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsInNpemVEb21haW4i
LCJmPQpvcmNlWCIsImZvcmNlWSIsImZvcmNlU2l6ZSIsImNsaXBWb3Jvbm9pIiwidXNlVm9yb25v
aSIsImNsaXBSYWRpdXMiLCJoaWdobGk9CmdodFBvaW50IiwiY2xlYXJIaWdobGlnaHRzIiksZy5v
cHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKGcpLGcueD0zRD0KZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RkMy5mdW5jdG9yKGUpLGcpOm99LGcueT0zRGZ1
bmN0aW9uPQooZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RkMy5mdW5jdG9yKGUpLGcp
OnV9LGcubWFyZ2luPTNEZnVuY3Rpb24oZSk9CntyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC50
b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6dC50b3AsdD0KLnJpZ2h0PTNE
dHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp0LnJpZ2h0LHQuYm90dG9tPTNE
dHlwZW9mIGUuPQpib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dC5ib3R0b20sdC5sZWZ0
PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmU9CmQiP2UubGVmdDp0LmxlZnQsZyk6dH0sZy53
aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPTNEZT0KLGcpOm59
LGcuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLGcp
OnJ9LGcuY2xpcEVkPQpnZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyho
PTNEZSxnKTpofSxnLmNvbG9yPTNEZnVuY3Rpb24odCk9CntyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oaT0zRGUudXRpbHMuZ2V0Q29sb3IodCksZyk6aX0sZy5vZmZzZXQ9M0RmdW5jdGlvbj0KKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSxnKTpmfSxnLm9yZGVyPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtPQplbnRzLmxlbmd0aD8obD0zRGUsZyk6bH0sZy5zdHlsZT0zRGZ1bmN0
aW9uKGUpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiA9CmE7YT0zRGU7c3dpdGNoKGEpe2Nh
c2Uic3RhY2siOmcub2Zmc2V0KCJ6ZXJvIiksZy5vcmRlcigiZGVmYXVsdCIpO2JyZWFrO2Nhcz0K
ZSJzdHJlYW0iOmcub2Zmc2V0KCJ3aWdnbGUiKSxnLm9yZGVyKCJpbnNpZGUtb3V0Iik7YnJlYWs7
Y2FzZSJzdHJlYW0tY2VudGVyPQoiOmcub2Zmc2V0KCJzaWxob3VldHRlIiksZy5vcmRlcigiaW5z
aWRlLW91dCIpO2JyZWFrO2Nhc2UiZXhwYW5kIjpnLm9mZnNldCg9CiJleHBhbmQiKSxnLm9yZGVy
KCJkZWZhdWx0Iik7YnJlYWs7Y2FzZSJzdGFja19wZXJjZW50IjpnLm9mZnNldChnLmQzX3N0YWNr
ZT0KZE9mZnNldF9zdGFja1BlcmNlbnQpLGcub3JkZXIoImRlZmF1bHQiKX1yZXR1cm4gZ30sZy5p
bnRlcnBvbGF0ZT0zRGZ1bmN0aW9uPQooZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0Rl
LGcpOmN9LGd9LGUubW9kZWxzLnN0YWNrZWRBcmVhQ2hhcnQ9M0RmdW49CmN0aW9uKCl7ZnVuY3Rp
b24gTSh5KXtyZXR1cm4geS5lYWNoKGZ1bmN0aW9uKHkpe3ZhciBBPTNEZDMuc2VsZWN0KHRoaXMp
LF89Cj0zRHRoaXMsRD0zRChhfHxwYXJzZUludChBLnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS11Lmxl
ZnQtdS5yaWdodCxQPTNEKGZ8fHBhcj0Kc2VJbnQoQS5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXUu
dG9wLXUuYm90dG9tO00udXBkYXRlPTNEZnVuY3Rpb24oKXtBLmNhbGwoPQpNKX0sTS5jb250YWlu
ZXI9M0R0aGlzLFMuZGlzYWJsZWQ9M0R5Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlzYWJs
ZWR9KTs9CmlmKCF4KXt2YXIgSDt4PTNEe307Zm9yKEggaW4gUylTW0hdaW5zdGFuY2VvZiBBcnJh
eT94W0hdPTNEU1tIXS5zbGljZSgwKTp4Wz0KSF09M0RTW0hdfWlmKCF5fHwheS5sZW5ndGh8fCF5
LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubGVuZ3RofSkuPQpsZW5ndGgpe3Zh
ciBCPTNEQS5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFtUXSk7cmV0dXJuIEIuZW50ZXIo
KS5hcHBlbmQ9CigidGV4dCIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRyKCJk
eSIsIi0uN2VtIikuc3R5bGUoInRleHQtYW5jaD0Kb3IiLCJtaWRkbGUiKSxCLmF0dHIoIngiLHUu
bGVmdCtELzIpLmF0dHIoInkiLHUudG9wK1AvMikudGV4dChmdW5jdGlvbihlKXtyPQpldHVybiBl
fSksTX1BLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbW92ZSgpLGI9M0R0LnhTY2FsZSgpLHc9
M0R0LnlTY2FsZSg9Cik7dmFyIGo9M0RBLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LXN0YWNrZWRB
cmVhQ2hhcnQiKS5kYXRhKFt5XSksRj0zRGouZW50ZT0KcigpLmFwcGVuZCgiZyIpLmF0dHIoImNs
YXNzIiwibnZkMyBudi13cmFwIG52LXN0YWNrZWRBcmVhQ2hhcnQiKS5hcHBlbmQoImciPQopLEk9
M0RqLnNlbGVjdCgiZyIpO0YuYXBwZW5kKCJyZWN0Iikuc3R5bGUoIm9wYWNpdHkiLDApLEYuYXBw
ZW5kKCJnIikuYXR0cig9CiJjbGFzcyIsIm52LXggbnYtYXhpcyIpLEYuYXBwZW5kKCJnIikuYXR0
cigiY2xhc3MiLCJudi15IG52LWF4aXMiKSxGLmFwcGVuZD0KKCJnIikuYXR0cigiY2xhc3MiLCJu
di1zdGFja2VkV3JhcCIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1sZWdlbmRXPQpy
YXAiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtY29udHJvbHNXcmFwIiksRi5hcHBl
bmQoImciKS5hdHRyKCJjbGE9CnNzIiwibnYtaW50ZXJhY3RpdmUiKSxJLnNlbGVjdCgicmVjdCIp
LmF0dHIoIndpZHRoIixEKS5hdHRyKCJoZWlnaHQiLFApO2lmKD0KaCl7dmFyIHE9M0RjP0QtQzpE
O2kud2lkdGgocSksSS5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuZGF0dW0oeSkuY2FsbChpKSx1
PQoudG9wIT0zRGkuaGVpZ2h0KCkmJih1LnRvcD0zRGkuaGVpZ2h0KCksUD0zRChmfHxwYXJzZUlu
dChBLnN0eWxlKCJoZWlnaHQiKSk9Cnx8NDAwKS11LnRvcC11LmJvdHRvbSksSS5zZWxlY3QoIi5u
di1sZWdlbmRXcmFwIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYT0KdGUoIisoRC1xKSsiLCIr
IC11LnRvcCsiKSIpfWlmKGMpe3ZhciBSPTNEW3trZXk6TC5zdGFja2VkfHwiU3RhY2tlZCIsbWV0
YUtlPQp5OiJTdGFja2VkIixkaXNhYmxlZDp0LnN0eWxlKCkhPTNEInN0YWNrIixzdHlsZToic3Rh
Y2sifSx7a2V5Okwuc3RyZWFtfHwiU3Q9CnJlYW0iLG1ldGFLZXk6IlN0cmVhbSIsZGlzYWJsZWQ6
dC5zdHlsZSgpIT0zRCJzdHJlYW0iLHN0eWxlOiJzdHJlYW0ifSx7a2V5Oj0KTC5leHBhbmRlZHx8
IkV4cGFuZGVkIixtZXRhS2V5OiJFeHBhbmRlZCIsZGlzYWJsZWQ6dC5zdHlsZSgpIT0zRCJleHBh
bmQiLHN0PQp5bGU6ImV4cGFuZCJ9LHtrZXk6TC5zdGFja19wZXJjZW50fHwiU3RhY2sgJSIsbWV0
YUtleToiU3RhY2tfUGVyY2VudCIsZGlzYWI9CmxlZDp0LnN0eWxlKCkhPTNEInN0YWNrX3BlcmNl
bnQiLHN0eWxlOiJzdGFja19wZXJjZW50In1dO0M9M0RrLmxlbmd0aC8zKjI2MD0KLFI9M0RSLmZp
bHRlcihmdW5jdGlvbihlKXtyZXR1cm4gay5pbmRleE9mKGUubWV0YUtleSkhPTNEPTNELTF9KSxz
LndpZHRoKEMpPQouY29sb3IoWyIjNDQ0IiwiIzQ0NCIsIiM0NDQiXSksSS5zZWxlY3QoIi5udi1j
b250cm9sc1dyYXAiKS5kYXR1bShSKS5jYWxsKHM9CiksdS50b3AhPTNETWF0aC5tYXgocy5oZWln
aHQoKSxpLmhlaWdodCgpKSYmKHUudG9wPTNETWF0aC5tYXgocy5oZWlnaHQoKSxpLj0KaGVpZ2h0
KCkpLFA9M0QoZnx8cGFyc2VJbnQoQS5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXUudG9wLXUuYm90
dG9tKSxJLnNlbGVjPQp0KCIubnYtY29udHJvbHNXcmFwIikuYXR0cigidHJhbnNmb3JtIiwidHJh
bnNsYXRlKDAsIisgLXUudG9wKyIpIil9ai5hdHRyKCI9CnRyYW5zZm9ybSIsInRyYW5zbGF0ZSgi
K3UubGVmdCsiLCIrdS50b3ArIikiKSx2JiZJLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLj0KYXR0
cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrRCsiLDApIiksbSYmKG8ud2lkdGgoRCkuaGVpZ2h0
KFApLm1hcmdpbih7bGVmPQp0OnUubGVmdCx0b3A6dS50b3B9KS5zdmdDb250YWluZXIoQSkueFNj
YWxlKGIpLGouc2VsZWN0KCIubnYtaW50ZXJhY3RpdmUiKS49CmNhbGwobykpLHQud2lkdGgoRCku
aGVpZ2h0KFApO3ZhciBVPTNESS5zZWxlY3QoIi5udi1zdGFja2VkV3JhcCIpLmRhdHVtKHkpOz0K
VS5jYWxsKHQpLHAmJihuLnNjYWxlKGIpLnRpY2tzKEQvMTAwKS50aWNrU2l6ZSgtUCwwKSxJLnNl
bGVjdCgiLm52LXgubnYtYXhpPQpzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitQ
KyIpIiksSS5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5jYWxsKG49CikpLGQmJihyLnNjYWxlKHcp
LnRpY2tzKHQub2Zmc2V0KCk9M0Q9M0Qid2lnZ2xlIj8wOlAvMzYpLnRpY2tTaXplKC1ELDApLnNl
dD0KVGlja0Zvcm1hdCh0LnN0eWxlKCk9M0Q9M0QiZXhwYW5kInx8dC5zdHlsZSgpPTNEPTNEInN0
YWNrX3BlcmNlbnQiP2QzLmZvcm1hPQp0KCIlIik6RSksSS5zZWxlY3QoIi5udi15Lm52LWF4aXMi
KS5jYWxsKHIpKSx0LmRpc3BhdGNoLm9uKCJhcmVhQ2xpY2sudG9nZ2w9CmUiLGZ1bmN0aW9uKGUp
e3kuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkubGVuZ3RoPTNEPTNEPTNE
MT95Lj0KZm9yRWFjaChmdW5jdGlvbihlKXtlLmRpc2FibGVkPTNEITF9KTp5LmZvckVhY2goZnVu
Y3Rpb24odCxuKXt0LmRpc2FibGVkPTNEPQpuIT0zRGUuc2VyaWVzSW5kZXh9KSxTLmRpc2FibGVk
PTNEeS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSksTi49CnN0YXRlQ2hhbmdl
KFMpLE0udXBkYXRlKCl9KSxpLmRpc3BhdGNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24oZSl7
Uy5kaXNhYj0KbGVkPTNEZS5kaXNhYmxlZCxOLnN0YXRlQ2hhbmdlKFMpLE0udXBkYXRlKCl9KSxz
LmRpc3BhdGNoLm9uKCJsZWdlbmRDbGljayIsPQpmdW5jdGlvbihlLG4pe2lmKCFlLmRpc2FibGVk
KXJldHVybjtSPTNEUi5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJsZWQ9Cj0zRCEwLGV9
KSxlLmRpc2FibGVkPTNEITEsdC5zdHlsZShlLnN0eWxlKSxTLnN0eWxlPTNEdC5zdHlsZSgpLE4u
c3RhdGVDaGFuZz0KZShTKSxNLnVwZGF0ZSgpfSksby5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNl
bW92ZSIsZnVuY3Rpb24oaSl7dC5jbGVhckhpZ2hsPQppZ2h0cygpO3ZhciBzLGEsZixjPTNEW107
eS5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zZXJpZXNJbmRleD0zRHQsIWU9Ci5kaXNh
YmxlZH0pLmZvckVhY2goZnVuY3Rpb24obixyKXthPTNEZS5pbnRlcmFjdGl2ZUJpc2VjdChuLnZh
bHVlcyxpLnBvaW50WD0KVmFsdWUsTS54KCkpLHQuaGlnaGxpZ2h0UG9pbnQocixhLCEwKTt2YXIg
bz0zRG4udmFsdWVzW2FdO2lmKHR5cGVvZiBvPTNEPTNEPQoidW5kZWZpbmVkIilyZXR1cm47dHlw
ZW9mIHM9M0Q9M0QidW5kZWZpbmVkIiYmKHM9M0RvKSx0eXBlb2YgZj0zRD0zRCJ1bmRlZmk9Cm5l
ZCImJihmPTNETS54U2NhbGUoKShNLngoKShvLGEpKSk7dmFyIHU9M0R0LnN0eWxlKCk9M0Q9M0Qi
ZXhwYW5kIj9vLmRpc3BsYT0KeS55Ok0ueSgpKG8sYSk7Yy5wdXNoKHtrZXk6bi5rZXksdmFsdWU6
dSxjb2xvcjpsKG4sbi5zZXJpZXNJbmRleCksc3RhY2tlZFZhPQpsdWU6by5kaXNwbGF5fSl9KSxj
LnJldmVyc2UoKTtpZihjLmxlbmd0aD4yKXt2YXIgaD0zRE0ueVNjYWxlKCkuaW52ZXJ0KGkubW89
CnVzZVkpLHA9M0RJbmZpbml0eSxkPTNEbnVsbDtjLmZvckVhY2goZnVuY3Rpb24oZSx0KXtoPTNE
TWF0aC5hYnMoaCk7dmFyIG49Cj0zRE1hdGguYWJzKGUuc3RhY2tlZFZhbHVlLnkwKSxyPTNETWF0
aC5hYnMoZS5zdGFja2VkVmFsdWUueSk7aWYoaD49M0RuJiZoPD0KPTNEcituKXtkPTNEdDtyZXR1
cm59fSksZCE9M0RudWxsJiYoY1tkXS5oaWdobGlnaHQ9M0QhMCl9dmFyIHY9M0RuLnRpY2tGb3Jt
PQphdCgpKE0ueCgpKHMsYSkpLG09M0R0LnN0eWxlKCk9M0Q9M0QiZXhwYW5kIj9mdW5jdGlvbihl
LHQpe3JldHVybiBkMy5mb3JtYXQ9CigiLjElIikoZSl9OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIu
dGlja0Zvcm1hdCgpKGUpfTtvLnRvb2x0aXAucG9zaXRpb24oe2xlZj0KdDpmK3UubGVmdCx0b3A6
aS5tb3VzZVkrdS50b3B9KS5jaGFydENvbnRhaW5lcihfLnBhcmVudE5vZGUpLmVuYWJsZWQoZyku
dmFsPQp1ZUZvcm1hdHRlcihtKS5kYXRhKHt2YWx1ZTp2LHNlcmllczpjfSkoKSxvLnJlbmRlckd1
aWRlTGluZShmKX0pLG8uZGlzcGF0Y2g9Ci5vbigiZWxlbWVudE1vdXNlb3V0IixmdW5jdGlvbihl
KXtOLnRvb2x0aXBIaWRlKCksdC5jbGVhckhpZ2hsaWdodHMoKX0pLE4ubz0KbigidG9vbHRpcFNo
b3ciLGZ1bmN0aW9uKGUpe2cmJk8oZSxfLnBhcmVudE5vZGUpfSksTi5vbigiY2hhbmdlU3RhdGUi
LGZ1bmN0PQppb24oZSl7dHlwZW9mIGUuZGlzYWJsZWQhPTNEInVuZGVmaW5lZCImJnkubGVuZ3Ro
PTNEPTNEPTNEZS5kaXNhYmxlZC5sZW5ndGg9CiYmKHkuZm9yRWFjaChmdW5jdGlvbih0LG4pe3Qu
ZGlzYWJsZWQ9M0RlLmRpc2FibGVkW25dfSksUy5kaXNhYmxlZD0zRGUuZGlzYT0KYmxlZCksdHlw
ZW9mIGUuc3R5bGUhPTNEInVuZGVmaW5lZCImJnQuc3R5bGUoZS5zdHlsZSksTS51cGRhdGUoKX0p
fSksTX12YXIgPQp0PTNEZS5tb2RlbHMuc3RhY2tlZEFyZWEoKSxuPTNEZS5tb2RlbHMuYXhpcygp
LHI9M0RlLm1vZGVscy5heGlzKCksaT0zRGUubW89CmRlbHMubGVnZW5kKCkscz0zRGUubW9kZWxz
LmxlZ2VuZCgpLG89M0RlLmludGVyYWN0aXZlR3VpZGVsaW5lKCksdT0zRHt0b3A6Mz0KMCxyaWdo
dDoyNSxib3R0b206NTAsbGVmdDo2MH0sYT0zRG51bGwsZj0zRG51bGwsbD0zRGUudXRpbHMuZGVm
YXVsdENvbG9yKCksPQpjPTNEITAsaD0zRCEwLHA9M0QhMCxkPTNEITAsdj0zRCExLG09M0QhMSxn
PTNEITAseT0zRGZ1bmN0aW9uKGUsdCxuLHIsaSl7cmU9CnR1cm4iPGgzPiIrZSsiPC9oMz4iKyI8
cD4iK24rIiBvbiAiK3QrIjwvcD4ifSxiLHcsRT0zRGQzLmZvcm1hdCgiLC4yZiIpLFM9Cj0zRHtz
dHlsZTp0LnN0eWxlKCl9LHg9M0RudWxsLFQ9M0QiTm8gRGF0YSBBdmFpbGFibGUuIixOPTNEZDMu
ZGlzcGF0Y2goInRvbz0KbHRpcFNob3ciLCJ0b29sdGlwSGlkZSIsInN0YXRlQ2hhbmdlIiwiY2hh
bmdlU3RhdGUiKSxDPTNEMjUwLGs9M0RbIlN0YWNrZWQiPQosIlN0cmVhbSIsIkV4cGFuZGVkIl0s
TD0zRHt9LEE9M0QwO24ub3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg3KSxyLm9yaWU9Cm50
KHY/InJpZ2h0IjoibGVmdCIpLHMudXBkYXRlU3RhdGUoITEpO3ZhciBPPTNEZnVuY3Rpb24oaSxz
KXt2YXIgbz0zRGkucG9zWz0KMF0rKHMub2Zmc2V0TGVmdHx8MCksdT0zRGkucG9zWzFdKyhzLm9m
ZnNldFRvcHx8MCksYT0zRG4udGlja0Zvcm1hdCgpKHQueCgpPQooaS5wb2ludCxpLnBvaW50SW5k
ZXgpKSxmPTNEci50aWNrRm9ybWF0KCkodC55KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKSxsPQo9
M0R5KGkuc2VyaWVzLmtleSxhLGYsaSxNKTtlLnRvb2x0aXAuc2hvdyhbbyx1XSxsLGkudmFsdWU8
MD8ibiI6InMiLG51bGwscyk9Cn07cmV0dXJuIHQuZGlzcGF0Y2gub24oInRvb2x0aXBTaG93Iixm
dW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXSt1LmxlZnQsZT0KLnBvc1sxXSt1LnRvcF0sTi50
b29sdGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2gub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbihlKXtO
PQoudG9vbHRpcEhpZGUoZSl9KSxOLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXtnJiZlLnRv
b2x0aXAuY2xlYW51cCgpfSksTS49CmRpc3BhdGNoPTNETixNLnN0YWNrZWQ9M0R0LE0ubGVnZW5k
PTNEaSxNLmNvbnRyb2xzPTNEcyxNLnhBeGlzPTNEbixNLnlBeGlzPQo9M0RyLE0uaW50ZXJhY3Rp
dmVMYXllcj0zRG8sZDMucmViaW5kKE0sdCwieCIsInkiLCJzaXplIiwieFNjYWxlIiwieVNjYWxl
Iiw9CiJ4RG9tYWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsInNpemVEb21haW4iLCJp
bnRlcmFjdGl2ZSIsInVzZVZvcm9ubz0KaSIsIm9mZnNldCIsIm9yZGVyIiwic3R5bGUiLCJjbGlw
RWRnZSIsImZvcmNlWCIsImZvcmNlWSIsImZvcmNlU2l6ZSIsImludGVyPQpwb2xhdGUiKSxNLm9w
dGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoTSksTS5tYXJnaW49M0RmdW5jdGlvbihl
KXtyZXQ9CnVybiBhcmd1bWVudHMubGVuZ3RoPyh1LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5k
ZWZpbmVkIj9lLnRvcDp1LnRvcCx1LnJpZz0KaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZp
bmVkIj9lLnJpZ2h0OnUucmlnaHQsdS5ib3R0b209M0R0eXBlb2YgZS5ib3R0PQpvbSE9M0QidW5k
ZWZpbmVkIj9lLmJvdHRvbTp1LmJvdHRvbSx1LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRl
ZmluZWQiP2U9Ci5sZWZ0OnUubGVmdCxNKTp1fSxNLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLE0pOj0KYX0sTS5oZWlnaHQ9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUsTSk6Zn0sTS5jb2xvcj0zRGZ1PQpuY3Rpb24o
bil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLnV0aWxzLmdldENvbG9yKG4pLGkuY29s
b3IobCksdC5jb2w9Cm9yKGwpLE0pOmx9LE0uc2hvd0NvbnRyb2xzPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLE0pOj0KY30sTS5zaG93TGVnZW5kPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLE0pOmh9LE0uc2hvd1hBPQp4aXM9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsTSk6cH0sTS5zaG93
WUF4aXM9M0RmdW5jdGk9Cm9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSxNKTpk
fSxNLnJpZ2h0QWxpZ25ZQXhpcz0zRGZ1bmN0aW9uKGUpez0KcmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHY9M0RlLHIub3JpZW50KGU/InJpZ2h0IjoibGVmdCIpLE0pOnZ9LE0udXNlSW50ZXJhPQpj
dGl2ZUd1aWRlbGluZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNE
ZSxlPTNEPTNEPTNEITAmJig9Ck0uaW50ZXJhY3RpdmUoITEpLE0udXNlVm9yb25vaSghMSkpLE0p
Om19LE0udG9vbHRpcD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcj0KZ3VtZW50cy5sZW5ndGg/KHk9
M0RlLE0pOnl9LE0udG9vbHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
PQpoPyhnPTNEZSxNKTpnfSxNLnRvb2x0aXBDb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHk9M0Q9CmUsTSk6eX0sTS5zdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhTPTNEZSxNKTpTfSxNLmRlZmF1bD0KdFN0YXRlPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHg9M0RlLE0pOnh9LE0ubm9EYXRhPTNEZnVu
Y3RpPQpvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oVD0zRGUsTSk6VH0sTS50cmFuc2l0
aW9uRHVyYXRpb249M0RmdW5jdGlvbig9CmUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhBPTNE
ZSxNKTpBfSxNLmNvbnRyb2xzRGF0YT0zRGZ1bmN0aW9uKGUpe3JldHVybj0KIGFyZ3VtZW50cy5s
ZW5ndGg/KGs9M0RlLE0pOmt9LE0uY29udHJvbExhYmVscz0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVuPQp0cy5sZW5ndGg/dHlwZW9mIGUhPTNEIm9iamVjdCI/TDooTD0zRGUsTSk6TH0sci5z
ZXRUaWNrRm9ybWF0PTNEci50aWNrRm9ybWE9CnQsci50aWNrRm9ybWF0PTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlLHIpOkV9LE19fSgpLGRlZj0KaW5lKCJwbHVn
aW4vcGx1Z2lucy9udmQzL252LmQzIixmdW5jdGlvbigpe30pLGRlZmluZSgicGx1Z2luL2NoYXJ0
cy9udmQzL2NvPQptbW9uL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL2Zvcm1zL2RlZmF1bHQiLCJw
bHVnaW4vcGx1Z2lucy9udmQzL252LmQzIl0sZnU9Cm5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQo
ITAse30sZSx7dGl0bGU6IiIsY2F0ZWdvcnk6IiIsbGlicmFyeToiTlZEMyIsdGFnOj0KInN2ZyIs
a2V5d29yZHM6InNtYWxsIn0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252ZDMvYmFyL2NvbmZp
ZyIsWyJwbHVnaW4vPQpjaGFydHMvbnZkMy9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0
dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJSZWc9CnVsYXIiLGNhdGVnb3J5OiJCYXIgZGlh
Z3JhbXMiLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbGFiZT0KbDoh
MCxpc19hdXRvOiEwLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixp
c19udW1lcmljOiEwfX19PQopfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252ZDMvYmFyX3N0YWNr
ZWQvY29uZmlnIixbInBsdWdpbi9jaGFydHMvbnZkMy9jb209Cm1vbi9jb25maWciXSxmdW5jdGlv
bihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6IlN0YWNrZWQiLGNhdGVnb3J5Oj0K
IkJhciBkaWFncmFtcyIsY29sdW1uczp7eDp7dGl0bGU6IlZhbHVlcyBmb3IgeC1heGlzIixpc19s
YWJlbDohMCxpc19hdXRvOiEwPQosaXNfdW5pcXVlOiEwfSx5Ont0aXRsZToiVmFsdWVzIGZvciB5
LWF4aXMiLGlzX251bWVyaWM6ITB9fX0pfSksZGVmaW5lKCJwbHU9Cmdpbi9jaGFydHMvbnZkMy9i
YXJfaG9yaXpvbnRhbC9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9udmQzL2NvbW1vbi9jb25maWci
XT0KLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiSG9yaXpvbnRh
bCIsY2F0ZWdvcnk6IkJhciBkaWFnPQpyYW1zIixzZXR0aW5nczp7eF9heGlzX3R5cGU6e2luaXQ6
ImhpZGUifX0sY29sdW1uczp7eDp7dGl0bGU6IlZhbHVlcyBmb3IgeC09CmF4aXMiLGlzX2xhYmVs
OiEwLGlzX2F1dG86ITAsaXNfdW5pcXVlOiEwfSx5Ont0aXRsZToiVmFsdWVzIGZvciB5LWF4aXMi
LGlzXz0KbnVtZXJpYzohMH19fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvbnZkMy9iYXJfaG9y
aXpvbnRhbF9zdGFja2VkL2NvbmZpZyIsPQpbInBsdWdpbi9jaGFydHMvbnZkMy9jb21tb24vY29u
ZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3Q9Cml0bGU6IlN0YWNr
ZWQgaG9yaXpvbnRhbCIsY2F0ZWdvcnk6IkJhciBkaWFncmFtcyIsc2V0dGluZ3M6e3hfYXhpc190
eXBlOntpbj0KaXQ6ImhpZGUifX0sY29sdW1uczp7eDp7dGl0bGU6IlZhbHVlcyBmb3IgeC1heGlz
Iixpc19sYWJlbDohMCxpc19hdXRvOiEwLGlzPQpfdW5pcXVlOiEwfSx5Ont0aXRsZToiVmFsdWVz
IGZvciB5LWF4aXMiLGlzX251bWVyaWM6ITB9fX0pfSksZGVmaW5lKCJwbHVnaW49Ci9jaGFydHMv
bnZkMy9saW5lX2ZvY3VzL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL252ZDMvY29tbW9uL2NvbmZp
ZyJdLGZ1bmN0aT0Kb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJMaW5lIHdp
dGggZm9jdXMiLGNhdGVnb3J5OiJPdGhlcnMiLHpvPQpvbWFibGU6Im5hdGl2ZSIsY29sdW1uczp7
eDp7dGl0bGU6IlZhbHVlcyBmb3IgeC1heGlzIixpc19sYWJlbDohMCxpc19hdXRvOiE9CjAsaXNf
dW5pcXVlOiEwfSx5Ont0aXRsZToiVmFsdWVzIGZvciB5LWF4aXMiLGlzX251bWVyaWM6ITB9fX0p
fSksZGVmaW5lKCJwbD0KdWdpbi9jaGFydHMvbnZkMy9waWUvY29uZmlnIixbInBsdWdpbi9wbHVn
aW5zL252ZDMvbnYuZDMiXSxmdW5jdGlvbigpe3JldHVyPQpuICQuZXh0ZW5kKCEwLHt9LHt0aXRs
ZToiUGllIGNoYXJ0IixjYXRlZ29yeToiQXJlYSBjaGFydHMiLGxpYnJhcnk6Ik5WRDMiLHQ9CmFn
OiJzdmciLGtleXdvcmRzOiJzbWFsbCIsY29sdW1uczp7bGFiZWw6e3RpdGxlOiJMYWJlbHMiLGlz
X2xhYmVsOiEwLGlzX2F1dD0KbzohMH0seTp7dGl0bGU6IlZhbHVlcyIsaXNfbnVtZXJpYzohMH19
LHNldHRpbmdzOnttYWluX3NlcGFyYXRvcjp7dHlwZToic2VwPQphcmF0b3IiLHRpdGxlOiJQaWUg
Y2hhcnQgc2V0dGluZ3MifSxkb251dF9yYXRpbzp7dGl0bGU6IkRvbnV0IHJhdGlvIixpbmZvOiI9
CkRldGVybWluZSBob3cgbGFyZ2UgdGhlIGRvbnV0IGhvbGUgd2lsbCBiZS4iLHR5cGU6InNlbGVj
dCIsaW5pdDoiMC41IixkYXRhOj0KW3tsYWJlbDoiNTAlIix2YWx1ZToiMC41In0se2xhYmVsOiIy
NSUiLHZhbHVlOiIwLjI1In0se2xhYmVsOiIxMCUiLHZhbHVlOiIwPQouMTAifSx7bGFiZWw6IjAl
Iix2YWx1ZToiMCJ9XX0sc2hvd19sZWdlbmQ6e3RpdGxlOiJTaG93IGxlZ2VuZCIsaW5mbzoiV291
bGQ9CiB5b3UgbGlrZSB0byBhZGQgYSBsZWdlbmQ/Iix0eXBlOiJyYWRpb2J1dHRvbiIsaW5pdDoi
ZmFsc2UiLGRhdGE6W3tsYWJlbDoiWT0KZXMiLHZhbHVlOiJ0cnVlIn0se2xhYmVsOiJObyIsdmFs
dWU6ImZhbHNlIn1dfSxsYWJlbF9zZXBhcmF0b3I6e3R5cGU6InNlcGFyPQphdG9yIix0aXRsZToi
TGFiZWwgc2V0dGluZ3MifSxsYWJlbF90eXBlOnt0aXRsZToiRG9udXQgbGFiZWwiLGluZm86Ildo
YXQgd289CnVsZCB5b3UgbGlrZSB0byBzaG93IGZvciBlYWNoIHNsaWNlPyIsdHlwZToic2VsZWN0
Iixpbml0OiJwZXJjZW50IixkYXRhOlt7bD0KYWJlbDoiLS0gTm90aGluZyAtLSIsdmFsdWU6Imhp
ZGUiLGhpZGU6ImxhYmVsX291dHNpZGUifSx7bGFiZWw6IkxhYmVsIGNvbHVtPQpuIix2YWx1ZToi
a2V5IixzaG93OiJsYWJlbF9vdXRzaWRlIn0se2xhYmVsOiJWYWx1ZSBjb2x1bW4iLHZhbHVlOiJ2
YWx1ZSIsc2g9Cm93OiJsYWJlbF9vdXRzaWRlIn0se2xhYmVsOiJQZXJjZW50YWdlIix2YWx1ZToi
cGVyY2VudCIsc2hvdzoibGFiZWxfb3V0c2lkZT0KIn1dfSxsYWJlbF9vdXRzaWRlOnt0aXRsZToi
U2hvdyBvdXRzaWRlIixpbmZvOiJXb3VsZCB5b3UgbGlrZSB0byBzaG93IGxhYmVsPQpzIG91dHNp
ZGUgdGhlIGRvbnV0PyIsdHlwZToicmFkaW9idXR0b24iLGluaXQ6ImZhbHNlIixkYXRhOlt7bGFi
ZWw6IlllcyIsdmE9Cmx1ZToidHJ1ZSJ9LHtsYWJlbDoiTm8iLHZhbHVlOiJmYWxzZSJ9XX0sdXNl
X3BhbmVsczp7aW5pdDoidHJ1ZSIsaGlkZTohMH19fT0KKX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0
cy9udmQzL3N0YWNrZWRhcmVhX2Z1bGwvY29uZmlnIixbInBsdWdpbi9jaGFydHMvbnZkPQozL2Nv
bW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6
IkV4cGFuZGVkIix6b289Cm1hYmxlOiEwLGNhdGVnb3J5OiJBcmVhIGNoYXJ0cyIsa2V5d29yZHM6
ImRlZmF1bHQgc21hbGwiLGNvbHVtbnM6e3g6e3RpdGxlOj0KIlZhbHVlcyBmb3IgeC1heGlzIixp
c19sYWJlbDohMCxpc19hdXRvOiEwLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmPQpv
ciB5LWF4aXMiLGlzX251bWVyaWM6ITB9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252ZDMv
c3RhY2tlZGFyZWFfc3RyZWE9Cm0vY29uZmlnIixbInBsdWdpbi9jaGFydHMvbnZkMy9jb21tb24v
Y29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKD0KITAse30sZSx7dGl0bGU6IlN0
cmVhbSIsY2F0ZWdvcnk6IkFyZWEgY2hhcnRzIix6b29tYWJsZTohMCxrZXl3b3JkczoiZGVmYXVs
PQp0IHNtYWxsIixzaG93bWF4bWluOiEwLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgt
YXhpcyIsaXNfbGFiZWw6ITAsaXM9Cl9hdXRvOiEwLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6IlZh
bHVlcyBmb3IgeS1heGlzIixpc19udW1lcmljOiEwfX19KX0pLGRlZj0KaW5lKCJwbHVnaW4vY2hh
cnRzL252ZDMvaGlzdG9ncmFtL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL252ZDMvY29tbW9uL2Nv
bmZpPQpnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJIaXN0
b2dyYW0iLGNhdGVnb3J5OiJEYXRhIHA9CnJvY2Vzc2luZyAocmVxdWlyZXMgJ2NoYXJ0cycgdG9v
bCBmcm9tIFRvb2xzaGVkKSIsZXhlY3V0ZToiaGlzdG9ncmFtIixrZXl3bz0KcmRzOiJzbWFsbCBt
ZWRpdW0gbGFyZ2UiLGNvbHVtbnM6e3k6e3RpdGxlOiJPYnNlcnZhdGlvbnMiLGlzX251bWVyaWM6
ITB9fSxzPQpldHRpbmdzOnt4X2F4aXNfbGFiZWw6e2luaXQ6IlZhbHVlcyJ9LHlfYXhpc19sYWJl
bDp7aW5pdDoiRGVuc2l0eSJ9LHlfYXhpc189CnR5cGU6e2luaXQ6ImYifSx5X2F4aXNfcHJlY2lz
aW9uOntpbml0OiIuMiJ9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252ZD0KMy9saW5lL2Nv
bmZpZyIsWyJwbHVnaW4vY2hhcnRzL252ZDMvY29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3Jl
dHVybiAkLmV4PQp0ZW5kKCEwLHt9LGUse3RpdGxlOiJMaW5lIGNoYXJ0IixjYXRlZ29yeToiT3Ro
ZXJzIix6b29tYWJsZTohMCxjb2x1bW5zOnt4Ons9CnRpdGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIs
aXNfbGFiZWw6ITAsaXNfYXV0bzohMCxpc191bmlxdWU6ITB9LHk6e3RpdGxlOiJWYT0KbHVlcyBm
b3IgeS1heGlzIixpc19udW1lcmljOiEwfX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9udmQz
L3NjYXR0ZXIvY29uPQpmaWciLFsicGx1Z2luL2NoYXJ0cy9udmQzL2NvbW1vbi9jb25maWciXSxm
dW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse309CixlLHt0aXRsZToiU2NhdHRlciBwbG90
IixjYXRlZ29yeToiT3RoZXJzIix6b29tYWJsZTohMCxjb2x1bW5zOnt4Ont0aXRsZToiVj0KYWx1
ZXMgZm9yIHgtYXhpcyIsaXNfbnVtZXJpYzohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlz
Iixpc19udW1lcmljOiEwPQp9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252ZDMvc3RhY2tl
ZGFyZWEvY29uZmlnIixbInBsdWdpbi9jaGFydHMvbnZkMy89CmNvbW1vbi9jb25maWciXSxmdW5j
dGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6IlJlZ3VsYXIiLHpvb21hYj0K
bGU6ITAsY2F0ZWdvcnk6IkFyZWEgY2hhcnRzIixrZXl3b3JkczoiZGVmYXVsdCBzbWFsbCIsY29s
dW1uczp7eDp7dGl0bGU6IlZhPQpsdWVzIGZvciB4LWF4aXMiLGlzX2xhYmVsOiEwLGlzX2F1dG86
ITAsaXNfdW5pcXVlOiEwfSx5Ont0aXRsZToiVmFsdWVzIGZvciA9CnktYXhpcyIsaXNfbnVtZXJp
YzohMH19fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvanFwbG90L2NvbW1vbi9jb25maWciLFsi
cD0KbHVnaW4vY2hhcnRzL2Zvcm1zL2RlZmF1bHQiXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRl
bmQoITAse30sZSx7dGl0bGU6IiIsPQpjYXRlZ29yeToiIixsaWJyYXJ5OiJqcVBsb3QiLHRhZzoi
ZGl2Iix6b29tYWJsZTohMCxrZXl3b3JkczoibWVkaXVtIixzZXR0aW49CmdzOntzZXBhcmF0b3Jf
Z3JpZDp7dGl0bGU6IkdyaWRzIix0eXBlOiJzZXBhcmF0b3IifSx4X2F4aXNfZ3JpZDp7dGl0bGU6
IkF4aT0KcyBncmlkIixpbmZvOiJXb3VsZCB5b3UgbGlrZSB0byBzaG93IGdyaWQgbGluZXMgZm9y
IHRoZSBYIGF4aXM/Iix0eXBlOiJyYWRpPQpvYnV0dG9uIixpbml0OiJmYWxzZSIsZGF0YTpbe2xh
YmVsOiJPbiIsdmFsdWU6InRydWUifSx7bGFiZWw6Ik9mZiIsdmFsdWU6ImY9CmFsc2UifV19LHlf
YXhpc19ncmlkOnt0aXRsZToiQXhpcyBncmlkIixpbmZvOiJXb3VsZCB5b3UgbGlrZSB0byBzaG93
IGdyaWQgbD0KaW5lcyBmb3IgdGhlIFkgYXhpcz8iLHR5cGU6InJhZGlvYnV0dG9uIixpbml0OiJ0
cnVlIixkYXRhOlt7bGFiZWw6Ik9uIix2YWx1PQplOiJ0cnVlIn0se2xhYmVsOiJPZmYiLHZhbHVl
OiJmYWxzZSJ9XX19fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvanFwbG90L2I9CmFyL2NvbmZp
ZyIsWyJwbHVnaW4vY2hhcnRzL2pxcGxvdC9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0
dXJuICQuZXh0ZT0KbmQoITAse30sZSx7dGl0bGU6IlJlZ3VsYXIiLGNhdGVnb3J5OiJCYXIgZGlh
Z3JhbXMiLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1PQplcyBmb3IgeC1heGlzIixpc19sYWJlbDoh
MCxpc19hdXRvOiEwLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS09CmF4aXMi
LGlzX251bWVyaWM6ITB9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL2pxcGxvdC9saW5lL2Nv
bmZpZyIsWyJwbHVnaT0Kbi9jaGFydHMvanFwbG90L2NvbW1vbi9jb25maWciXSxmdW5jdGlvbihl
KXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6PQoiTGluZSBjaGFydCIsY2F0ZWdvcnk6
Ik90aGVycyIsY29sdW1uczp7eDp7dGl0bGU6IlZhbHVlcyBmb3IgeC1heGlzIixpc19sYWI9CmVs
OiEwLGlzX2F1dG86ITAsaXNfdW5pcXVlOiEwfSx5Ont0aXRsZToiVmFsdWVzIGZvciB5LWF4aXMi
LGlzX251bWVyaWM6ITB9fT0KfSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvanFwbG90L3NjYXR0
ZXIvY29uZmlnIixbInBsdWdpbi9jaGFydHMvanFwbG90L2NvPQptbW9uL2NvbmZpZyJdLGZ1bmN0
aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiU2NhdHRlciBwbG90IixjYXQ9
CmVnb3J5OiJPdGhlcnMiLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNf
bnVtZXJpYzohMH0seTp7dGl0bD0KZToiVmFsdWVzIGZvciB5LWF4aXMiLGlzX251bWVyaWM6ITB9
fSxzZXR0aW5nczp7eF9heGlzX2dyaWQ6e2luaXQ6InRydWUifX19PQopfSksZGVmaW5lKCJwbHVn
aW4vY2hhcnRzL2pxcGxvdC9ib3hwbG90L2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL2pxcGxvdC9j
b209Cm1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0
bGU6IkJveCBwbG90IixjYXRlZ29yeT0KOiJEYXRhIHByb2Nlc3NpbmcgKHJlcXVpcmVzICdjaGFy
dHMnIHRvb2wgZnJvbSBUb29sc2hlZCkiLGxpYnJhcnk6ImpxUGxvdCIsPQp0YWc6ImRpdiIsZXhl
Y3V0ZToiYm94cGxvdCIsa2V5d29yZHM6InNtYWxsIG1lZGl1bSBsYXJnZSIsY29sdW1uczp7eTp7
dGl0bGU9CjoiT2JzZXJ2YXRpb25zIixpc19udW1lcmljOiEwfX0sc2V0dGluZ3M6e3Nob3dfbGVn
ZW5kOntpbml0OiJmYWxzZSJ9fX0pfSksZD0KZWZpbmUoInBsdWdpbi9jaGFydHMvanFwbG90L2hp
c3RvZ3JhbV9kaXNjcmV0ZS9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9qcXBsPQpvdC9jb21tb24v
Y29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJEaXNj
cmV0ZSBIaXM9CnRvZ3JhbSIsY2F0ZWdvcnk6IkRhdGEgcHJvY2Vzc2luZyAocmVxdWlyZXMgJ2No
YXJ0cycgdG9vbCBmcm9tIFRvb2xzaGVkKSIsZT0KeGVjdXRlOiJoaXN0b2dyYW1kaXNjcmV0ZSIs
a2V5d29yZHM6InNtYWxsIG1lZGl1bSBsYXJnZSIsY29sdW1uczp7eDp7dGl0bGU6PQoiT2JzZXJ2
YXRpb25zIixpc19sYWJlbDohMH19LHNldHRpbmdzOnt4X2F4aXNfbGFiZWw6e2luaXQ6IkJyZWFr
cyJ9LHlfYXhpc189CmxhYmVsOntpbml0OiJEZW5zaXR5In19fSl9KSxkZWZpbmUoInBsdWdpbi9j
aGFydHMvb3RoZXJzL2hlYXRtYXAvY29uZmlnIixbIj0KcGx1Z2luL2NoYXJ0cy9mb3Jtcy9kZWZh
dWx0Il0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJIPQplYXRt
YXAiLGNhdGVnb3J5OiJPdGhlcnMiLGxpYnJhcnk6IkN1c3RvbSIsdGFnOiJzdmciLGtleXdvcmRz
OiJzbWFsbCIsem9vbWE9CmJsZTohMCxjb2x1bW5zOnt4Ont0aXRsZToiQ29sdW1uIGxhYmVscyIs
aXNfbGFiZWw6ITAsaXNfbnVtZXJpYzohMCxpc191bmlxdT0KZTohMH0seTp7dGl0bGU6IlJvdyBs
YWJlbHMiLGlzX2xhYmVsOiEwLGlzX251bWVyaWM6ITAsaXNfdW5pcXVlOiEwfSx6Ont0aXRsPQpl
OiJPYnNlcnZhdGlvbiIsaXNfbnVtZXJpYzohMH19LHNldHRpbmdzOnt1c2VfcGFuZWxzOntpbml0
OiJ0cnVlIixoaWRlOiEwfSw9CmNvbG9yX3NldDp7dGl0bGU6IkNvbG9yIHNjaGVtZSIsaW5mbzoi
U2VsZWN0IGEgY29sb3Igc2NoZW1lIGZvciB5b3VyIGhlYXRtYT0KcCIsdHlwZToic2VsZWN0Iixp
bml0OiJqZXQiLGRhdGE6W3tsYWJlbDoiQ29sZC10by1Ib3QiLHZhbHVlOiJob3QifSx7bGFiZWw6
PQoiQ29vbCIsdmFsdWU6ImNvb2wifSx7bGFiZWw6IkNvcHBlciIsdmFsdWU6ImNvcHBlciJ9LHts
YWJlbDoiR3JheSBzY2FsZSIsdmE9Cmx1ZToiZ3JheSJ9LHtsYWJlbDoiSmV0Iix2YWx1ZToiamV0
In0se2xhYmVsOiJOby1HcmVlbiIsdmFsdWU6Im5vX2dyZWVuIn0sez0KbGFiZWw6Ik9jZWFuIix2
YWx1ZToib2NlYW4ifSx7bGFiZWw6IlBvbGFyIix2YWx1ZToicG9sYXIifSx7bGFiZWw6IlJlZC10
by1HPQpyZWVuIix2YWx1ZToicmVkZ3JlZW4ifSx7bGFiZWw6IlJlZC10by1ncmVlbiAoc2F0dXJh
dGVkKSIsdmFsdWU6InJlZDJncmVlbiI9Cn0se2xhYmVsOiJSZWxpZWYiLHZhbHVlOiJyZWxpZWYi
fSx7bGFiZWw6IlNlaXNtb2dyYXBoIix2YWx1ZToic2VpcyJ9LHtsYWJlbD0KOiJTZWFsYW5kIix2
YWx1ZToic2VhbGFuZCJ9LHtsYWJlbDoiU3BsaXQiLHZhbHVlOiJzcGxpdCJ9LHtsYWJlbDoiV3lz
aXd5ZyIsPQp2YWx1ZToid3lzaXd5ZyJ9XX0sdXJsX3RlbXBsYXRlOnt0aXRsZToiVXJsIHRlbXBs
YXRlIixpbmZvOiJFbnRlciBhIHVybCB0byA9CmxpbmsgdGhlIGxhYmVscyB3aXRoIGV4dGVybmFs
IHNvdXJjZXMuIFVzZSBfX0xBQkVMX18gYXMgcGxhY2Vob2xkZXIuIix0eXBlOj0KInRleHQiLGlu
aXQ6IiIscGxhY2Vob2xkZXI6Imh0dHA6Ly9zb21ldXJsLmNvbT9pZD0zRF9fTEFCRUxfXyJ9fX0p
fSksZGVmaW5lPQooInBsdWdpbi9jaGFydHMvb3RoZXJzL2hlYXRtYXBfY2x1c3Rlci9jb25maWci
LFsicGx1Z2luL2NoYXJ0cy9vdGhlcnMvaGVhdG09CmFwL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3Jl
dHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiQ2x1c3RlcmVkIEhlYXRtYXAiLD0KY2F0ZWdv
cnk6IkRhdGEgcHJvY2Vzc2luZyAocmVxdWlyZXMgJ2NoYXJ0cycgdG9vbCBmcm9tIFRvb2xzaGVk
KSIsZXhlY3V0ZToiPQpoZWF0bWFwIixrZXl3b3Jkczoic21hbGwgbWVkaXVtIGxhcmdlIn0pfSks
ZGVmaW5lKCJwbHVnaW4vY2hhcnRzL3R5cGVzIixbInA9Cmx1Z2luL2NoYXJ0cy9udmQzL2Jhci9j
b25maWciLCJwbHVnaW4vY2hhcnRzL252ZDMvYmFyX3N0YWNrZWQvY29uZmlnIiwicGx1Zz0KaW4v
Y2hhcnRzL252ZDMvYmFyX2hvcml6b250YWwvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9udmQzL2Jh
cl9ob3Jpem9udGFsX3N0PQphY2tlZC9jb25maWciLCJwbHVnaW4vY2hhcnRzL252ZDMvbGluZV9m
b2N1cy9jb25maWciLCJwbHVnaW4vY2hhcnRzL252ZDMvcGk9CmUvY29uZmlnIiwicGx1Z2luL2No
YXJ0cy9udmQzL3N0YWNrZWRhcmVhX2Z1bGwvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9udmQzLz0K
c3RhY2tlZGFyZWFfc3RyZWFtL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvbnZkMy9oaXN0b2dyYW0v
Y29uZmlnIiwicGx1Z2luL2NoPQphcnRzL252ZDMvbGluZS9jb25maWciLCJwbHVnaW4vY2hhcnRz
L252ZDMvc2NhdHRlci9jb25maWciLCJwbHVnaW4vY2hhcnRzL249CnZkMy9zdGFja2VkYXJlYS9j
b25maWciLCJwbHVnaW4vY2hhcnRzL2pxcGxvdC9iYXIvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9q
cT0KcGxvdC9saW5lL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvanFwbG90L3NjYXR0ZXIvY29uZmln
IiwicGx1Z2luL2NoYXJ0cy9qcXBsPQpvdC9ib3hwbG90L2NvbmZpZyIsInBsdWdpbi9jaGFydHMv
anFwbG90L2hpc3RvZ3JhbV9kaXNjcmV0ZS9jb25maWciLCJwbHVnaW49Ci9jaGFydHMvb3RoZXJz
L2hlYXRtYXAvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9vdGhlcnMvaGVhdG1hcF9jbHVzdGVyL2Nv
bmZpZz0KIl0sZnVuY3Rpb24oZSx0LG4scixpLHMsbyx1LGEsZixsLGMsaCxwLGQsdixtLGcseSl7
cmV0dXJuIEJhY2tib25lLk1vZGVsLmV4PQp0ZW5kKHtkZWZhdWx0czp7bnZkM19iYXI6ZSxudmQz
X2Jhcl9zdGFja2VkOnQsbnZkM19iYXJfaG9yaXpvbnRhbDpuLG52ZDNfYmE9CnJfaG9yaXpvbnRh
bF9zdGFja2VkOnIsbnZkM19saW5lX2ZvY3VzOmksbnZkM19zdGFja2VkYXJlYTpjLG52ZDNfc3Rh
Y2tlZGFyZT0KYV9mdWxsOm8sbnZkM19zdGFja2VkYXJlYV9zdHJlYW06dSxudmQzX3BpZTpzLG52
ZDNfbGluZTpmLG52ZDNfc2NhdHRlcjpsLG52PQpkM19oaXN0b2dyYW06YSxqcXBsb3RfYmFyOmgs
anFwbG90X2hpc3RvZ3JhbV9kaXNjcmV0ZTptLGpxcGxvdF9saW5lOnAsanFwbG89CnRfc2NhdHRl
cjpkLGpxcGxvdF9ib3hwbG90OnYsb3RoZXJzX2hlYXRtYXA6ZyxvdGhlcnNfaGVhdG1hcF9jbHVz
dGVyOnl9fSl9KT0KLGRlZmluZSgicGx1Z2luL2FwcCIsWyJtdmMvdWkvdWktbW9kYWwiLCJtdmMv
dWkvdWktcG9ydGxldCIsIm12Yy91aS91aS1taXNjPQoiLCJ1dGlscy91dGlscyIsInBsdWdpbi9s
aWJyYXJ5L2pvYnMiLCJwbHVnaW4vbGlicmFyeS9kYXRhc2V0cyIsInBsdWdpbi9saWI9CnJhcnkv
c3RvcmFnZSIsInV0aWxzL2RlZmVycmVkIiwicGx1Z2luL3ZpZXdzL3ZpZXdlciIsInBsdWdpbi92
aWV3cy9lZGl0b3IiLD0KInBsdWdpbi9tb2RlbHMvY29uZmlnIiwicGx1Z2luL21vZGVscy9jaGFy
dCIsInBsdWdpbi9jaGFydHMvdHlwZXMiXSxmdW5jdGlvPQpuKGUsdCxuLHIsaSxzLG8sdSxhLGYs
bCxjLGgpe3JldHVybiBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGk9Cm9u
KHQpe3RoaXMub3B0aW9ucz0zRHQsR2FsYXh5JiZHYWxheHkubW9kYWw/dGhpcy5tb2RhbD0zREdh
bGF4eS5tb2RhbDp0aGlzLj0KbW9kYWw9M0RuZXcgZS5WaWV3LHRoaXMuY29uZmlnPTNEbmV3IGws
dGhpcy50eXBlcz0zRG5ldyBoLHRoaXMuY2hhcnQ9M0RuZXcgPQpjLHRoaXMuam9icz0zRG5ldyBp
KHRoaXMpLHRoaXMuZGF0YXNldHM9M0RuZXcgcyh0aGlzKSx0aGlzLnN0b3JhZ2U9M0RuZXcgbyg9
CnRoaXMpLHRoaXMuZGVmZXJyZWQ9M0RuZXcgdSx0aGlzLnZpZXdlcl92aWV3PTNEbmV3IGEodGhp
cyksdGhpcy5lZGl0b3Jfdmlldz0KPTNEbmV3IGYodGhpcyksdGhpcy4kZWwuYXBwZW5kKHRoaXMu
dmlld2VyX3ZpZXcuJGVsKSx0aGlzLiRlbC5hcHBlbmQodGhpcy5lPQpkaXRvcl92aWV3LiRlbCk7
aWYoIXRoaXMuc3RvcmFnZS5sb2FkKCkpdGhpcy5nbygiZWRpdG9yIik7ZWxzZXt0aGlzLmdvKCJ2
aWU9CndlciIpO3ZhciBuPTNEdGhpczt0aGlzLmRlZmVycmVkLmV4ZWN1dGUoZnVuY3Rpb24oKXtu
LmNoYXJ0LnRyaWdnZXIoInJlZHJhdz0KIil9KX19LGdvOmZ1bmN0aW9uKGUpeyQoIi50b29sdGlw
IikuaGlkZSgpO3N3aXRjaChlKXtjYXNlImVkaXRvciI6dGhpcy5lZGl0PQpvcl92aWV3LnNob3co
KSx0aGlzLnZpZXdlcl92aWV3LmhpZGUoKTticmVhaztjYXNlInZpZXdlciI6dGhpcy5lZGl0b3Jf
dmlldy49CmhpZGUoKSx0aGlzLnZpZXdlcl92aWV3LnNob3coKX19LGNoYXJ0UGF0aDpmdW5jdGlv
bihlKXt2YXIgdD0zRGUuc3BsaXQoL18oLj0KKykvKTtyZXR1cm4gdC5sZW5ndGg+PTNEMj90WzBd
KyIvIit0WzFdOihjb25zb2xlLmRlYnVnKCJGQUlMRUQgQXBwOmNoYXJ0UGF0PQpoKCkgLSBJbnZh
bGlkIGZvcm1hdDogIitlKSx1bmRlZmluZWQpfX0pfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQoKZGlmZiAtciAxNTk2MmIzZDlhYWMwNjFlOTU0MWY4MTc1YzhkMmUyYmM0YmE1Y2FiIC1y
IDJlOTkwY2FlZmM5NDNlYjJiMWQ0YTk0PQphZjUwOGMyMmJiMzRiN2ZhNiBsaWIvZ2FsYXh5L2Rh
dGF0eXBlcy9zZXF1ZW5jZS5weQotLS0gYS9saWIvZ2FsYXh5L2RhdGF0eXBlcy9zZXF1ZW5jZS5w
eQorKysgYi9saWIvZ2FsYXh5L2RhdGF0eXBlcy9zZXF1ZW5jZS5weQpAQCAtMTcsNyArMTcsNyBA
QAogZnJvbSBnYWxheHkuZGF0YXR5cGVzLmNoZWNrZXJzIGltcG9ydCBpc19nemlwCiBmcm9tIGdh
bGF4eS5kYXRhdHlwZXMuc25pZmYgaW1wb3J0IGdldF90ZXN0X2ZuYW1lLCBnZXRfaGVhZGVycwog
ZnJvbSBnYWxheHkuZGF0YXR5cGVzLm1ldGFkYXRhIGltcG9ydCBNZXRhZGF0YUVsZW1lbnQKLQor
ZnJvbSBnYWxheHkuZGF0YXR5cGVzLnV0aWwuaW1hZ2VfdXRpbCBpbXBvcnQgY2hlY2tfaW1hZ2Vf
dHlwZQo9MjAKIHRyeToKICAgICBlZ2dzLnJlcXVpcmUoICJieC1weXRob24iICkKQEAgLTgxNCwz
ICs4MTQsMzQgQEAKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCj0y
MAorCitjbGFzcyBSTkFEb3RQbG90TWF0cml4KCBkYXRhLkRhdGEgKToKKyAgICBmaWxlX2V4dCA9
M0QgInJuYV9lcHMiCisKKyAgICBkZWYgc2V0X3BlZWsoIHNlbGYsIGRhdGFzZXQsIGlzX211bHRp
X2J5dGU9M0RGYWxzZSApOgorICAgICAgICBpZiBub3QgZGF0YXNldC5kYXRhc2V0LnB1cmdlZDoK
KyAgICAgICAgICAgIGRhdGFzZXQucGVlayA9M0QgJ1JOQSBEb3QgUGxvdCBmb3JtYXQgKFBvc3Rz
Y3JpcHQgZGVyaXZhdGl2ZSknCisgICAgICAgICAgICBkYXRhc2V0LmJsdXJiID0zRCBkYXRhLm5p
Y2Vfc2l6ZSggZGF0YXNldC5nZXRfc2l6ZSgpICkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IGRhdGFzZXQucGVlayA9M0QgJ2ZpbGUgZG9lcyBub3QgZXhpc3QnCisgICAgICAgICAgICBkYXRh
c2V0LmJsdXJiID0zRCAnZmlsZSBwdXJnZWQgZnJvbSBkaXNrJworCisgICAgZGVmIHNuaWZmKHNl
bGYsIGZpbGVuYW1lKToKKyAgICAgICAgIiIiRGV0ZXJtaW5lIGlmIHRoZSBmaWxlIGlzIGluIFJO
QSBkb3QgcGxvdCBmb3JtYXQuIiIiCisgICAgICAgIGlmIGNoZWNrX2ltYWdlX3R5cGUoIGZpbGVu
YW1lLCBbJ0VQUyddICk6CisgICAgICAgICAgICBzZXEgPTNEIEZhbHNlCisgICAgICAgICAgICBj
b29yID0zRCBGYWxzZQorICAgICAgICAgICAgcGFpcnMgPTNEIEZhbHNlCisgICAgICAgICAgICB3
aXRoIG9wZW4oIGZpbGVuYW1lICkgYXMgaGFuZGxlOgorICAgICAgICAgICAgICAgIGZvciBsaW5l
IGluIGhhbmRsZToKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9M0QgbGluZS5zdHJpcCgpCisg
ICAgICAgICAgICAgICAgICAgIGlmIGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBs
aW5lLnN0YXJ0c3dpdGgoJy9zZXF1ZW5jZScpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlcSA9M0QgVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dp
dGgoJy9jb29yJyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vciA9M0QgVHJ1ZQor
ICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJy9wYWlycycpOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhaXJzID0zRCBUcnVlCisgICAgICAgICAgICAg
ICAgICAgIGlmIHNlcSBhbmQgY29vciBhbmQgcGFpcnM6CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCgpkaWZmIC1yIDE1OTYyYjNkOWFhYzA2MWU5NTQxZjgxNzVjOGQyZTJiYzRiYTVjYWIg
LXIgMmU5OTBjYWVmYzk0M2ViMmIxZDRhOTQ9CmFmNTA4YzIyYmIzNGI3ZmE2IGxpYi9nYWxheHkv
ZGF0YXR5cGVzL3V0aWwvaW1hZ2VfdXRpbC5weQotLS0gYS9saWIvZ2FsYXh5L2RhdGF0eXBlcy91
dGlsL2ltYWdlX3V0aWwucHkKKysrIGIvbGliL2dhbGF4eS9kYXRhdHlwZXMvdXRpbC9pbWFnZV91
dGlsLnB5CkBAIC03MSw2ICs3MSw0IEBACiAgICAgICAgIHJldHVybiAncGJtJwogICAgIGlmIGZv
cm1hdCA9M0Q9M0QgJ1BHTSc6CiAgICAgICAgIHJldHVybiAncGdtJwotICAgIGlmIGZvcm1hdCA9
M0Q9M0QgJ0VQUyc6Ci0gICAgICAgIHJldHVybiAnZXBzJwogICAgIHJldHVybiBOb25lCgpkaWZm
IC1yIDE1OTYyYjNkOWFhYzA2MWU5NTQxZjgxNzVjOGQyZTJiYzRiYTVjYWIgLXIgMmU5OTBjYWVm
Yzk0M2ViMmIxZDRhOTQ9CmFmNTA4YzIyYmIzNGI3ZmE2IGxpYi9nYWxheHkvdG9vbHMvcGFyYW1l
dGVycy9iYXNpYy5weQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xzL3BhcmFtZXRlcnMvYmFzaWMucHkK
KysrIGIvbGliL2dhbGF4eS90b29scy9wYXJhbWV0ZXJzL2Jhc2ljLnB5CkBAIC00Niw2ICs0Niw3
IEBACiAgICAgICAgIHNlbGYucmVmcmVzaF9vbl9jaGFuZ2VfdmFsdWVzID0zRCBbXQogICAgICAg
ICBzZWxmLm5hbWUgPTNEIGlucHV0X3NvdXJjZS5nZXQoIm5hbWUiKQogICAgICAgICBzZWxmLnR5
cGUgPTNEIGlucHV0X3NvdXJjZS5nZXQoInR5cGUiKQorICAgICAgICBzZWxmLmhpZGRlbiA9M0Qg
aW5wdXRfc291cmNlLmdldCgiaGlkZGVuIiwgRmFsc2UpCiAgICAgICAgIHNlbGYubGFiZWwgPTNE
IGlucHV0X3NvdXJjZS5wYXJzZV9sYWJlbCgpCiAgICAgICAgIHNlbGYuaGVscCA9M0QgaW5wdXRf
c291cmNlLnBhcnNlX2hlbHAoKQogICAgICAgICBzYW5pdGl6ZXJfZWxlbSA9M0QgaW5wdXRfc291
cmNlLnBhcnNlX3Nhbml0aXplcl9lbGVtKCkKQEAgLTIxMyw2ICsyMTQsNyBAQAo9MjAKICAgICAg
ICAgdG9vbF9kaWN0WyAnbW9kZWxfY2xhc3MnIF0gPTNEIHNlbGYuX19jbGFzc19fLl9fbmFtZV9f
CiAgICAgICAgIHRvb2xfZGljdFsgJ29wdGlvbmFsJyBdID0zRCBzZWxmLm9wdGlvbmFsCisgICAg
ICAgIHRvb2xfZGljdFsgJ2hpZGRlbicgXSA9M0Qgc2VsZi5oaWRkZW4KICAgICAgICAgaWYgaGFz
YXR0ciggc2VsZiwgJ3ZhbHVlJyApOgogICAgICAgICAgICAgdG9vbF9kaWN0WyAndmFsdWUnIF0g
PTNEIHNlbGYudmFsdWUKICAgICAgICAgcmV0dXJuIHRvb2xfZGljdApAQCAtNDg3LDcgKzQ4OSw3
IEBACiAgICAgICAgIGRbJ3RydWV2YWx1ZSddID0zRCBzZWxmLnRydWV2YWx1ZQogICAgICAgICBk
WydmYWxzZXZhbHVlJ10gPTNEIHNlbGYuZmFsc2V2YWx1ZQogICAgICAgICByZXR1cm4gZAotICAg
PTIwCisKICAgICBAcHJvcGVydHkKICAgICBkZWYgbGVnYWxfdmFsdWVzKCBzZWxmICk6CiAgICAg
ICAgIHJldHVybiBbIHNlbGYudHJ1ZXZhbHVlLCBzZWxmLmZhbHNldmFsdWUgXQpAQCAtNjMwLDYg
KzYzMiw3IEBACiAgICAgICAgIGlucHV0X3NvdXJjZSA9M0QgZW5zdXJlX2lucHV0X3NvdXJjZSgg
aW5wdXRfc291cmNlICkKICAgICAgICAgVG9vbFBhcmFtZXRlci5fX2luaXRfXyggc2VsZiwgdG9v
bCwgaW5wdXRfc291cmNlICkKICAgICAgICAgc2VsZi52YWx1ZSA9M0QgaW5wdXRfc291cmNlLmdl
dCggJ3ZhbHVlJyApCisgICAgICAgIHNlbGYuaGlkZGVuID0zRCBUcnVlCj0yMAogICAgIGRlZiBn
ZXRfaHRtbF9maWVsZCggc2VsZiwgdHJhbnM9M0ROb25lLCB2YWx1ZT0zRE5vbmUsIG90aGVyX3Zh
bHVlcz0zRHs9Cn0gKToKICAgICAgICAgcmV0dXJuIGZvcm1fYnVpbGRlci5IaWRkZW5GaWVsZCgg
c2VsZi5uYW1lLCBzZWxmLnZhbHVlICkKQEAgLTY3MCw3ICs2NzMsNyBAQAogICAgIGRlZiBnZXRf
bGFiZWwoIHNlbGYgKToKICAgICAgICAgIyBCYXNlVVJMVG9vbFBhcmFtZXRlcnMgYXJlIHVsdGlt
YXRlbHkgImhpZGRlbiIgcGFyYW1ldGVycwogICAgICAgICByZXR1cm4gTm9uZQotICAgPTIwCisK
ICAgICBkZWYgdG9fZGljdCggc2VsZiwgdHJhbnMsIHZpZXc9M0QnY29sbGVjdGlvbicsIHZhbHVl
X21hcHBlcj0zRE5vbmUgKToKICAgICAgICAgZCA9M0Qgc3VwZXIoIEJhc2VVUkxUb29sUGFyYW1l
dGVyLCBzZWxmICkudG9fZGljdCggdHJhbnMgKQogICAgICAgICBkWyd2YWx1ZSddID0zRCBzZWxm
LmdldF92YWx1ZSggdHJhbnMgKQpAQCAtNzgyLDggKzc4NSwxMSBAQAogICAgICAgICBpZiBzZWxm
Lm9wdGlvbnM6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5vcHRpb25zLmdldF9vcHRpb25zKCB0
cmFucywgb3RoZXJfdmFsdWVzICkKICAgICAgICAgZWxpZiBzZWxmLmR5bmFtaWNfb3B0aW9uczoK
KyAgICAgICAgICAgIGNhbGxfb3RoZXJfdmFsdWVzID0zRCB7Il9fdHJhbnNfXyI6IHRyYW5zfQor
ICAgICAgICAgICAgaWYgb3RoZXJfdmFsdWVzOgorICAgICAgICAgICAgICAgIGNhbGxfb3RoZXJf
dmFsdWVzLnVwZGF0ZSggb3RoZXJfdmFsdWVzLmRpY3QgKQogICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgIHJldHVybiBldmFsKCBzZWxmLmR5bmFtaWNfb3B0aW9ucywgc2VsZi50b29s
LmNvZGVfbmFtZXNwYWM9CmUsIG90aGVyX3ZhbHVlcyApCisgICAgICAgICAgICAgICAgcmV0dXJu
IGV2YWwoIHNlbGYuZHluYW1pY19vcHRpb25zLCBzZWxmLnRvb2wuY29kZV9uYW1lc3BhYz0KZSwg
Y2FsbF9vdGhlcl92YWx1ZXMgKQogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAg
ICAgICAgICAgICByZXR1cm4gW10KICAgICAgICAgZWxzZToKQEAgLTEwMzMsNyArMTAzOSw3IEBA
CiAgICAgICAgICAgICAgICAgICAgICMgRm91bmQgc2VsZWN0ZWQgb3B0aW9uLgogICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSA9M0Qgb3B0aW9uWzFdCiAgICAgICAgICAgICBkWyAndmFsdWUnIF0g
PTNEIHZhbHVlCi0gICAgICAgICAgID0yMAorCiAgICAgICAgIGRbJ2Rpc3BsYXknXSA9M0Qgc2Vs
Zi5kaXNwbGF5CiAgICAgICAgIGRbJ211bHRpcGxlJ10gPTNEIHNlbGYubXVsdGlwbGUKICAgICAg
ICAgZFsnaXNfZHluYW1pYyddID0zRCBzZWxmLmlzX2R5bmFtaWMKQEAgLTExMTQsNyArMTEyMCw3
IEBACiAgICAgICAgICAgICAnZGlzcGxheScgICA6IHNlbGYuZGlzcGxheSwKICAgICAgICAgICAg
ICdtdWx0aXBsZScgIDogc2VsZi5tdWx0aXBsZQogICAgICAgICB9KQotICAgICAgID0yMAorCiAg
ICAgICAgIHJldHVybiBkCj0yMAogICAgIGRlZiBfZ2V0X2Ria2V5X25hbWVzKCBzZWxmLCB0cmFu
cz0zRE5vbmUgKToKQEAgLTEzMTYsMTAgKzEzMjIsMTAgQEAKPTIwCiAgICAgICAgICMgYWRkIGRh
dGEgcmVmZXJlbmNlCiAgICAgICAgIGRbJ2RhdGFfcmVmJ10gPTNEIHNlbGYuZGF0YV9yZWYKLSAg
ICAgICA9MjAKKwogICAgICAgICAjIGFkZCBudW1lcmljYWwgZmxhZwogICAgICAgICBkWydudW1l
cmljYWwnXSA9M0Qgc2VsZi5udW1lcmljYWwKLSAgICAgICA9MjAKKwogICAgICAgICAjIHJldHVy
bgogICAgICAgICByZXR1cm4gZAo9MjAKQEAgLTIxMTEsNyArMjExNyw3IEBACiAgICAgICAgIGRb
J211bHRpcGxlJ10gPTNEIHNlbGYubXVsdGlwbGUKICAgICAgICAgZFsnaXNfZHluYW1pYyddID0z
RCBUcnVlCiAgICAgICAgIGRbJ29wdGlvbnMnXSA9M0QgeydoZGEnOiBbXSwgJ2hkY2EnOiBbXX0K
LSAgICAgICA9MjAKKwogICAgICAgICAjIHJldHVybiBkZWZhdWx0IGNvbnRlbnQgaWYgY29udGV4
dCBpcyBub3QgYXZhaWxhYmxlCiAgICAgICAgIGlmIG90aGVyX3ZhbHVlcyBpcyBOb25lOgogICAg
ICAgICAgICAgcmV0dXJuIGQKQEAgLTIxMjAsNyArMjEyNiw3IEBACiAgICAgICAgIGRhdGFzZXRf
bWF0Y2hlciA9M0QgRGF0YXNldE1hdGNoZXIoIHRyYW5zLCBzZWxmLCBOb25lLCBvdGhlcl92YWx1
ZT0KcyApCiAgICAgICAgIGhpc3RvcnkgPTNEIHRyYW5zLmhpc3RvcnkKICAgICAgICAgbXVsdGlw
bGUgPTNEIHNlbGYubXVsdGlwbGUKLSAgICAgICA9MjAKKwogICAgICAgICAjIGFkZCBkYXRhc2V0
cwogICAgICAgICBmb3IgaGRhIGluIGhpc3RvcnkuYWN0aXZlX2RhdGFzZXRzX2NoaWxkcmVuX2Fu
ZF9yb2xlczoKICAgICAgICAgICAgIG1hdGNoID0zRCBkYXRhc2V0X21hdGNoZXIuaGRhX21hdGNo
KCBoZGEgKQpAQCAtMjEzMyw3ICsyMTM5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgJ25hbWUn
ICAgICAgICAgIDogbS5uYW1lLAogICAgICAgICAgICAgICAgICAgICAnc3JjJyAgICAgICAgICAg
OiAnaGRhJwogICAgICAgICAgICAgICAgIH0pCi0gICAgICAgICAgID0yMAorCiAgICAgICAgICMg
YWRkIGRhdGFzZXQgY29sbGVjdGlvbnMKICAgICAgICAgZGF0YXNldF9jb2xsZWN0aW9uX21hdGNo
ZXIgPTNEIERhdGFzZXRDb2xsZWN0aW9uTWF0Y2hlciggZGF0YXNldF9tPQphdGNoZXIgKQogICAg
ICAgICBmb3IgaGRjYSBpbiBoaXN0b3J5LmFjdGl2ZV9kYXRhc2V0X2NvbGxlY3Rpb25zOgpAQCAt
MjM1Miw3ICsyMzU4LDcgQEAKICAgICAgICAgZFsnbXVsdGlwbGUnXSA9M0Qgc2VsZi5tdWx0aXBs
ZQogICAgICAgICBkWydpc19keW5hbWljJ10gPTNEIEZhbHNlCiAgICAgICAgIGRbJ29wdGlvbnMn
XSA9M0QgeydoZGEnOiBbXSwgJ2hkY2EnOiBbXX0KLSAgICAgICA9MjAKKwogICAgICAgICAjIHJl
dHVybiBkZWZhdWx0IGNvbnRlbnQgaWYgY29udGV4dCBpcyBub3QgYXZhaWxhYmxlCiAgICAgICAg
IGlmIG90aGVyX3ZhbHVlcyBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIGQKQEAgLTIzNjAs
NyArMjM2Niw3IEBACiAgICAgICAgICMgcHJlcGFyZSBkYXRhc2V0L2NvbGxlY3Rpb24gbWF0Y2hp
bmcKICAgICAgICAgZGF0YXNldF9tYXRjaGVyID0zRCBEYXRhc2V0TWF0Y2hlciggdHJhbnMsIHNl
bGYsIE5vbmUsIG90aGVyX3ZhbHVlPQpzICkKICAgICAgICAgaGlzdG9yeSA9M0QgdHJhbnMuaGlz
dG9yeQotICAgICAgID0yMAorCiAgICAgICAgICMgYXBwZW5kIGRpcmVjdGx5IG1hdGNoZWQgY29s
bGVjdGlvbnMKICAgICAgICAgZm9yIGhkY2EgaW4gc2VsZi5tYXRjaF9jb2xsZWN0aW9ucyggdHJh
bnMsIGhpc3RvcnksIGRhdGFzZXRfbWF0Y2hlPQpyICk6CiAgICAgICAgICAgICBkWydvcHRpb25z
J11bJ2hkY2EnXS5hcHBlbmQoewoKZGlmZiAtciAxNTk2MmIzZDlhYWMwNjFlOTU0MWY4MTc1Yzhk
MmUyYmM0YmE1Y2FiIC1yIDJlOTkwY2FlZmM5NDNlYjJiMWQ0YTk0PQphZjUwOGMyMmJiMzRiN2Zh
NiBzdGF0aWMvc2NyaXB0cy9nYWxheHkud29ya2Zsb3dfZWRpdG9yLmNhbnZhcy5qcwotLS0gYS9z
dGF0aWMvc2NyaXB0cy9nYWxheHkud29ya2Zsb3dfZWRpdG9yLmNhbnZhcy5qcworKysgYi9zdGF0
aWMvc2NyaXB0cy9nYWxheHkud29ya2Zsb3dfZWRpdG9yLmNhbnZhcy5qcwpAQCAtMTA4OSw3ICsx
MDg5LDExIEBACiAgICAgICAgIGlmICggdGhpcy5hY3RpdmVfbm9kZSAhPTNEIG5vZGUgKSB7CiAg
ICAgICAgICAgICB0aGlzLmNoZWNrX2NoYW5nZXNfaW5fYWN0aXZlX2Zvcm0oKTsKICAgICAgICAg
ICAgIHRoaXMuY2xlYXJfYWN0aXZlX25vZGUoKTsKLSAgICAgICAgICAgIHBhcmVudC5zaG93X2Zv
cm1fZm9yX3Rvb2woIG5vZGUuZm9ybV9odG1sICsgbm9kZS50b29sdGlwLCBub2RlPQogKTsKKyAg
ICAgICAgICAgIGlmIChwYXJlbnQuX19ORVdUT09MRk9STV9fKSB7CisgICAgICAgICAgICAgICAg
cGFyZW50LnNob3dfZm9ybV9mb3JfdG9vbCggbm9kZS5mb3JtX2h0bWwsIG5vZGUgKTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGFyZW50LnNob3dfZm9ybV9mb3JfdG9v
bCggbm9kZS5mb3JtX2h0bWwgKyBub2RlLnRvb2x0aXAsID0Kbm9kZSApOworICAgICAgICAgICAg
fQogICAgICAgICAgICAgbm9kZS5tYWtlX2FjdGl2ZSgpOwogICAgICAgICAgICAgdGhpcy5hY3Rp
dmVfbm9kZSA9M0Qgbm9kZTsKICAgICAgICAgfQpAQCAtMTA5OSw3ICsxMTAzLDExIEBACiAgICAg
ICAgIGlmICggdGhpcy5hY3RpdmVfbm9kZSA9M0Q9M0Qgbm9kZSAmJiAoIXBhcmVudC5fX05FV1RP
T0xGT1JNX18gfHwgZj0Kb3JjZSkpIHsKICAgICAgICAgICAgIC8vIFJlYWN0aXZlIHdpdGggbmV3
IGZvcm1faHRtbAogICAgICAgICAgICAgdGhpcy5jaGVja19jaGFuZ2VzX2luX2FjdGl2ZV9mb3Jt
KCk7IC8vRm9yY2UgY2hhbmdlcyB0byBiZSBzYXY9CmVkIGV2ZW4gb24gbmV3IGNvbm5lY3Rpb24g
KHByZXZpb3VzbHkgZHVtcGVkKQotICAgICAgICAgICAgcGFyZW50LnNob3dfZm9ybV9mb3JfdG9v
bCggbm9kZS5mb3JtX2h0bWwgKyBub2RlLnRvb2x0aXAsIG5vZGU9CiApOworICAgICAgICAgICAg
aWYgKHBhcmVudC5fX05FV1RPT0xGT1JNX18pIHsKKyAgICAgICAgICAgICAgICBwYXJlbnQuc2hv
d19mb3JtX2Zvcl90b29sKCBub2RlLmZvcm1faHRtbCwgbm9kZSApOworICAgICAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgICAgICBwYXJlbnQuc2hvd19mb3JtX2Zvcl90b29sKCBub2RlLmZv
cm1faHRtbCArIG5vZGUudG9vbHRpcCwgPQpub2RlICk7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9LAogICAgIGxheW91dCA6IGZ1bmN0aW9uICgpIHsKQEAgLTEzMDUsMTMgKzEzMTMs
NiBAQAogICAgIHJldHVybiBub2RlOwogfQo9MjAKLWZ1bmN0aW9uIHVwZGF0ZV9ub2RlKCBkYXRh
ICkgewotICAgIHZhciBub2RlID0zRCB3b3JrZmxvdy5hY3RpdmVfbm9kZTsKLSAgICBpZiAobm9k
ZSkgewotICAgICAgICBub2RlLnVwZGF0ZV9maWVsZF9kYXRhKGRhdGEsIHRydWUpOwotICAgIH0K
LX0KLQogdmFyIGV4dF90b190eXBlID0zRCBudWxsOwogdmFyIHR5cGVfdG9fdHlwZSA9M0QgbnVs
bDsKPTIwCgpkaWZmIC1yIDE1OTYyYjNkOWFhYzA2MWU5NTQxZjgxNzVjOGQyZTJiYzRiYTVjYWIg
LXIgMmU5OTBjYWVmYzk0M2ViMmIxZDRhOTQ9CmFmNTA4YzIyYmIzNGI3ZmE2IHN0YXRpYy9zY3Jp
cHRzL212Yy90b29scy90b29scy1mb3JtLWJhc2UuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvbXZj
L3Rvb2xzL3Rvb2xzLWZvcm0tYmFzZS5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9tdmMvdG9vbHMv
dG9vbHMtZm9ybS1iYXNlLmpzCkBAIC0yNzYsNiArMjc2LDExIEBACiAgICAgICAgICAgICAgICAg
YnV0dG9ucyA6IHRoaXMuYnV0dG9ucwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgID0yMAor
ICAgICAgICAgICAgLy8gcmVtb3ZlIHBhZGRpbmcKKyAgICAgICAgICAgIGlmICh0aGlzLm9wdGlv
bnMud29ya2Zsb3cpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnBvcnRsZXQuJGNvbnRlbnQuY3Nz
KCdwYWRkaW5nJywgJzBweCcpOworICAgICAgICAgICAgfQorICAgICAgICAgICA9MjAKICAgICAg
ICAgICAgIC8vIGFwcGVuZCBtZXNzYWdlCiAgICAgICAgICAgICB0aGlzLnBvcnRsZXQuYXBwZW5k
KHRoaXMubWVzc2FnZS4kZWwsIHRydWUpOwogICAgICAgICAgICA9MjAKCmRpZmYgLXIgMTU5NjJi
M2Q5YWFjMDYxZTk1NDFmODE3NWM4ZDJlMmJjNGJhNWNhYiAtciAyZTk5MGNhZWZjOTQzZWIyYjFk
NGE5ND0KYWY1MDhjMjJiYjM0YjdmYTYgc3RhdGljL3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLWZv
cm0td29ya2Zsb3cuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLWZvcm0t
d29ya2Zsb3cuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLWZvcm0td29y
a2Zsb3cuanMKQEAgLTcsOCArNywxOTkgQEAKICAgICAvLyBjcmVhdGUgZm9ybSB2aWV3CiAgICAg
dmFyIFZpZXcgPTNEIFRvb2xGb3JtQmFzZS5leHRlbmQoewogICAgICAgICBpbml0aWFsaXplOiBm
dW5jdGlvbihvcHRpb25zKSB7CisgICAgICAgICAgICAvLyBsaW5rIHdpdGggbm9kZSByZXByZXNl
bnRhdGlvbiBpbiB3b3JrZmxvdyBtb2R1bGUKKyAgICAgICAgICAgIHRoaXMubm9kZSA9M0Qgd29y
a2Zsb3cuYWN0aXZlX25vZGU7CisgICAgICAgICAgICBpZiAoIXRoaXMubm9kZSkgeworICAgICAg
ICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ0ZBSUxFRCAtIHRvb2xzLWZvcm0td29ya2Zsb3c6aW5p
dGlhbGl6ZSgpIC09CiBOb2RlIG5vdCBmb3VuZCBpbiB3b3JrZmxvdy4nKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgID0yMAorICAgICAgICAgICAg
Ly8gaW5pdGlhbGl6ZSBwYXJhbWV0ZXJzCiAgICAgICAgICAgICB0aGlzLndvcmtmbG93ID0zRCB0
cnVlOwotICAgICAgICAgICAgVG9vbEZvcm1CYXNlLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwo
dGhpcywgb3B0aW9ucyk7CisgICAgICAgICAgICB0aGlzLm9wdGlvbnMgPTNEIG9wdGlvbnM7CisK
KyAgICAgICAgICAgIC8vIGxvYWQgZXh0ZW5zaW9uCisgICAgICAgICAgICB2YXIgc2VsZiA9M0Qg
dGhpczsKKyAgICAgICAgICAgIFV0aWxzLmdldCh7CisgICAgICAgICAgICAgICAgdXJsICAgICA6
IGdhbGF4eV9jb25maWcucm9vdCArICdhcGkvZGF0YXR5cGVzJywKKyAgICAgICAgICAgICAgICBj
YWNoZSAgIDogdHJ1ZSwKKyAgICAgICAgICAgICAgICBzdWNjZXNzIDogZnVuY3Rpb24oZGF0YXR5
cGVzKSB7CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZGF0YXR5cGVzID0zRCBkYXRhdHlwZXM7
CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX21ha2VTZWN0aW9ucyhvcHRpb25zLmlucHV0cyk7
CisgICAgICAgICAgICAgICAgICAgIFRvb2xGb3JtQmFzZS5wcm90b3R5cGUuaW5pdGlhbGl6ZS5j
YWxsKHNlbGYsIG9wdGlvbnMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9LAorICAgICAgID0yMAorICAgICAgICAvKiogQnVpbGRzIGFsbCBzdWIgc2VjdGlv
bnMKKyAgICAgICAgKi8KKyAgICAgICAgX21ha2VTZWN0aW9uczogZnVuY3Rpb24oaW5wdXRzKXsK
KyAgICAgICAgICAgIC8vIGZvciBhbm5vdGF0aW9uCisgICAgICAgICAgICBpbnB1dHNbVXRpbHMu
dXVpZCgpXSA9M0QgeworICAgICAgICAgICAgICAgIGxhYmVsICAgOiAnRWRpdCBTdGVwIEF0dHJp
YnV0ZXMnLAorICAgICAgICAgICAgICAgIHR5cGUgICAgOiAnc2VjdGlvbicsCisgICAgICAgICAg
ICAgICAgaW5wdXRzICA6IFt7CisgICAgICAgICAgICAgICAgICAgIGxhYmVsICAgOiAnQW5ub3Rh
dGlvbiAvIE5vdGVzJywKKyAgICAgICAgICAgICAgICAgICAgbmFtZSAgICA6ICdhbm5vdGF0aW9u
JywKKyAgICAgICAgICAgICAgICAgICAgdHlwZSAgICA6ICd0ZXh0JywKKyAgICAgICAgICAgICAg
ICAgICAgYXJlYSAgICA6IHRydWUsCisgICAgICAgICAgICAgICAgICAgIGhlbHAgICAgOiAnQWRk
IGFuIGFubm90YXRpb24gb3Igbm90ZXMgdG8gdGhpcyBzdGVwOyBhbj0Kbm90YXRpb25zIGFyZSBh
dmFpbGFibGUgd2hlbiBhIHdvcmtmbG93IGlzIHZpZXdlZC4nLAorICAgICAgICAgICAgICAgICAg
ICB2YWx1ZSAgIDogdGhpcy5ub2RlLmFubm90YXRpb24KKyAgICAgICAgICAgICAgICB9XQorICAg
ICAgICAgICAgfQorICAgICAgICAgICA9MjAKKyAgICAgICAgICAgIC8vIGZvciBhY3Rpb25zCisg
ICAgICAgICAgICB0aGlzLnBvc3Rfam9iX2FjdGlvbnMgPTNEIHRoaXMubm9kZS5wb3N0X2pvYl9h
Y3Rpb25zOworICAgICAgICAgICAgZm9yICh2YXIgaSBpbiB0aGlzLm5vZGUub3V0cHV0X3Rlcm1p
bmFscykgeworICAgICAgICAgICAgICAgIGlucHV0c1tVdGlscy51dWlkKCldID0zRCB0aGlzLl9t
YWtlU2VjdGlvbihpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICA9MjAKKyAg
ICAgICAgLyoqIEJ1aWxkcyBzdWIgc2VjdGlvbiB3aXRoIHN0ZXAgYWN0aW9ucy9hbm5vdGF0aW9u
CisgICAgICAgICovCisgICAgICAgIF9tYWtlU2VjdGlvbjogZnVuY3Rpb24ob3V0cHV0X2lkKXsK
KyAgICAgICAgICAgIC8vIGZvcm1hdCBkYXRhdHlwZXMKKyAgICAgICAgICAgIHZhciBleHRlbnNp
b25zID0zRCBbXTsKKyAgICAgICAgICAgIGZvciAoa2V5IGluIHRoaXMuZGF0YXR5cGVzKSB7Cisg
ICAgICAgICAgICAgICAgZXh0ZW5zaW9ucy5wdXNoKHsKKyAgICAgICAgICAgICAgICAgICAgMCA6
IHRoaXMuZGF0YXR5cGVzW2tleV0sCisgICAgICAgICAgICAgICAgICAgIDEgOiB0aGlzLmRhdGF0
eXBlc1trZXldCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ID0yMAorICAgICAgICAgICAgLy8gc29ydCBleHRlbnNpb25zCisgICAgICAgICAgICBleHRlbnNp
b25zLnNvcnQoZnVuY3Rpb24oYSwgYikgeworICAgICAgICAgICAgICAgIHJldHVybiBhLmxhYmVs
ID4gYi5sYWJlbCA/IDEgOiBhLmxhYmVsIDwgYi5sYWJlbCA/IC0xIDogMDsKKyAgICAgICAgICAg
IH0pOworICAgICAgICAgICA9MjAKKyAgICAgICAgICAgIC8vIGFkZCBhZGRpdGlvbmFsIG9wdGlv
bnMKKyAgICAgICAgICAgIGV4dGVuc2lvbnMudW5zaGlmdCh7CisgICAgICAgICAgICAgICAgMCA6
ICdTZXF1ZW5jZXMnLAorICAgICAgICAgICAgICAgIDEgOiAnU2VxdWVuY2VzJworICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICBleHRlbnNpb25zLnVuc2hpZnQoeworICAgICAgICAgICAgICAg
IDAgOiAnUm9hZG1hcHMnLAorICAgICAgICAgICAgICAgIDEgOiAnUm9hZG1hcHMnCisgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgIGV4dGVuc2lvbnMudW5zaGlmdCh7CisgICAgICAgICAgICAg
ICAgMCA6ICdMZWF2ZSB1bmNoYW5nZWQnLAorICAgICAgICAgICAgICAgIDEgOiAnTm9uZScKKyAg
ICAgICAgICAgIH0pOworICAgICAgICAgICA9MjAKKyAgICAgICAgICAgIC8vIGNyZWF0ZSBjdXN0
b20gc3ViIHNlY3Rpb24KKyAgICAgICAgICAgIHZhciBpbnB1dF9jb25maWcgPTNEIHsKKyAgICAg
ICAgICAgICAgICBsYWJlbCAgIDogJ0VkaXQgU3RlcCBBY3Rpb246IFwnJyArIG91dHB1dF9pZCAr
ICdcJycsCisgICAgICAgICAgICAgICAgdHlwZSAgICA6ICdzZWN0aW9uJywKKyAgICAgICAgICAg
ICAgICBpbnB1dHMgIDogW3sKKyAgICAgICAgICAgICAgICAgICAgYWN0aW9uICAgICAgOiAnUmVu
YW1lRGF0YXNldEFjdGlvbicsCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50ICAgIDogJ25l
d25hbWUnLAorICAgICAgICAgICAgICAgICAgICBsYWJlbCAgICAgICA6ICdSZW5hbWUgZGF0YXNl
dCcsCisgICAgICAgICAgICAgICAgICAgIHR5cGUgICAgICAgIDogJ3RleHQnLAorICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSAgICAgICA6ICcnLAorICAgICAgICAgICAgICAgICAgICBpZ25vcmUg
ICAgICA6ICcnLAorICAgICAgICAgICAgICAgICAgICBoZWxwICAgICAgICA6ICdUaGlzIGFjdGlv
biB3aWxsIHJlbmFtZSB0aGUgcmVzdWx0IGRhdGE9CnNldC4gQ2xpY2sgPGEgaHJlZj0zRCJodHRw
czovL3dpa2kuZ2FsYXh5cHJvamVjdC5vcmcvTGVhcm4vQWR2YW5jZWRXb3JrZmxvdz0KL1Zhcmlh
YmxlcyI+aGVyZTwvYT4gZm9yIG1vcmUgaW5mb3JtYXRpb24uJworICAgICAgICAgICAgICAgIH0s
eworICAgICAgICAgICAgICAgICAgICBhY3Rpb24gICAgICA6ICdDaGFuZ2VEYXRhdHlwZUFjdGlv
bicsCisgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50ICAgIDogJ25ld3R5cGUnLAorICAgICAg
ICAgICAgICAgICAgICBsYWJlbCAgICAgICA6ICdDaGFuZ2UgZGF0YXR5cGUnLAorICAgICAgICAg
ICAgICAgICAgICB0eXBlICAgICAgICA6ICdzZWxlY3QnLAorICAgICAgICAgICAgICAgICAgICBp
Z25vcmUgICAgICA6ICdOb25lJywKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyAgICAgOiBl
eHRlbnNpb25zLAorICAgICAgICAgICAgICAgICAgICBoZWxwICAgICAgICA6ICdUaGlzIGFjdGlv
biB3aWxsIGNoYW5nZSB0aGUgZGF0YXR5cGUgb2Y9CiB0aGUgb3V0cHV0IHRvIHRoZSBpbmRpY2F0
ZWQgdmFsdWUuJworICAgICAgICAgICAgICAgIH0seworICAgICAgICAgICAgICAgICAgICBhY3Rp
b24gICAgICA6ICdUYWdEYXRhc2V0QWN0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgYXJndW1l
bnQgICAgOiAndGFncycsCisgICAgICAgICAgICAgICAgICAgIGxhYmVsICAgICAgIDogJ1RhZ3Mn
LAorICAgICAgICAgICAgICAgICAgICB0eXBlICAgICAgICA6ICd0ZXh0JywKKyAgICAgICAgICAg
ICAgICAgICAgdmFsdWUgICAgICAgOiAnJywKKyAgICAgICAgICAgICAgICAgICAgaWdub3JlICAg
ICAgOiAnJywKKyAgICAgICAgICAgICAgICAgICAgaGVscCAgICAgICAgOiAnVGhpcyBhY3Rpb24g
d2lsbCBzZXQgdGFncyBmb3IgdGhlIGRhdGFzPQpldC4nCisgICAgICAgICAgICAgICAgfSx7Cisg
ICAgICAgICAgICAgICAgICAgIGxhYmVsICAgOiAnQXNzaWduIGNvbHVtbnMnLAorICAgICAgICAg
ICAgICAgICAgICB0eXBlICAgIDogJ3NlY3Rpb24nLAorICAgICAgICAgICAgICAgICAgICBpbnB1
dHMgIDogW3sKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiAgICAgIDogJ0NvbHVtblNl
dEFjdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCAgICA6ICdjaHJvbUNv
bCcsCisgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCAgICAgICA6ICdDaHJvbSBjb2x1bW4n
LAorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAgICAgICAgOiAndGV4dCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICB2YWx1ZSAgICAgICA6ICcnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgaWdub3JlICAgICAgOiAnJworICAgICAgICAgICAgICAgICAgICB9LHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFjdGlvbiAgICAgIDogJ0NvbHVtblNldEFjdGlvbicsCisgICAgICAgICAg
ICAgICAgICAgICAgICBhcmd1bWVudCAgICA6ICdzdGFydENvbCcsCisgICAgICAgICAgICAgICAg
ICAgICAgICBsYWJlbCAgICAgICA6ICdTdGFydCBjb2x1bW4nLAorICAgICAgICAgICAgICAgICAg
ICAgICAgdHlwZSAgICAgICAgOiAndGV4dCcsCisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZSAgICAgICA6ICcnLAorICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlICAgICAgOiAnJwor
ICAgICAgICAgICAgICAgICAgICB9LHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiAg
ICAgIDogJ0NvbHVtblNldEFjdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVu
dCAgICA6ICdlbmRDb2wnLAorICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgICAgICAgOiAn
RW5kIGNvbHVtbicsCisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICAgICAgICA6ICd0ZXh0
JywKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlICAgICAgIDogJycsCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZ25vcmUgICAgICA6ICcnCisgICAgICAgICAgICAgICAgICAgIH0sewor
ICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uICAgICAgOiAnQ29sdW1uU2V0QWN0aW9uJywK
KyAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50ICAgIDogJ3N0cmFuZENvbCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICBsYWJlbCAgICAgICA6ICdTdHJhbmQgY29sdW1uJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHR5cGUgICAgICAgIDogJ3RleHQnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsdWUgICAgICAgOiAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9y
ZSAgICAgIDogJycKKyAgICAgICAgICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgICAgICAg
ICAgICBhY3Rpb24gICAgICA6ICdDb2x1bW5TZXRBY3Rpb24nLAorICAgICAgICAgICAgICAgICAg
ICAgICAgYXJndW1lbnQgICAgOiAnbmFtZUNvbCcsCisgICAgICAgICAgICAgICAgICAgICAgICBs
YWJlbCAgICAgICA6ICdOYW1lIGNvbHVtbicsCisgICAgICAgICAgICAgICAgICAgICAgICB0eXBl
ICAgICAgICA6ICd0ZXh0JywKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlICAgICAgIDog
JycsCisgICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUgICAgICA6ICcnCisgICAgICAgICAg
ICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgICAgICBoZWxwICAgIDogJ1RoaXMgYWN0aW9u
IHdpbGwgc2V0IGNvbHVtbiBhc3NpZ25tZW50cyBpbiA9CnRoZSBvdXRwdXQgZGF0YXNldC4gQmxh
bmsgZmllbGRzIGFyZSBpZ25vcmVkLicKKyAgICAgICAgICAgICAgICB9LHsKKyAgICAgICAgICAg
ICAgICAgICAgYWN0aW9uICAgICAgOiAnRW1haWxBY3Rpb24nLAorICAgICAgICAgICAgICAgICAg
ICBsYWJlbCAgICAgICA6ICdFbWFpbCBub3RpZmljYXRpb24nLAorICAgICAgICAgICAgICAgICAg
ICB0eXBlICAgICAgICA6ICdib29sZWFuJywKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgICAg
ICAgOiAnZmFsc2UnLAorICAgICAgICAgICAgICAgICAgICBpZ25vcmUgICAgICA6ICdmYWxzZScs
CisgICAgICAgICAgICAgICAgICAgIGhlbHAgICAgICAgIDogJ1RoaXMgYWN0aW9uIHdpbGwgc2Vu
ZCBhbiBlbWFpbCBub3RpZnlpbj0KZyB5b3Ugd2hlbiB0aGUgam9iIGlzIGRvbmUuJworICAgICAg
ICAgICAgICAgIH0seworICAgICAgICAgICAgICAgICAgICBhY3Rpb24gICAgICA6ICdEZWxldGVJ
bnRlcm1lZGlhdGVzQWN0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgbGFiZWwgICAgICAgOiAn
RGVsZXRlIG5vbi1vdXRwdXRzJywKKyAgICAgICAgICAgICAgICAgICAgdHlwZSAgICAgICAgOiAn
Ym9vbGVhbicsCisgICAgICAgICAgICAgICAgICAgIHZhbHVlICAgICAgIDogJ2ZhbHNlJywKKyAg
ICAgICAgICAgICAgICAgICAgaWdub3JlICAgICAgOiAnZmFsc2UnLAorICAgICAgICAgICAgICAg
ICAgICBoZWxwICAgICAgICA6ICdBbGwgbm9uLW91dHB1dCBzdGVwcyBvZiB0aGlzIHdvcmtmbG93
IHc9CmlsbCBoYXZlIGRhdGFzZXRzIGRlbGV0ZWQgaWYgdGhleSBhcmUgbm8gbG9uZ2VyIGJlaW5n
IHVzZWQgYXMgam9iIGlucHV0cyB3aD0KZW4gdGhlIGpvYiB0aGlzIGFjdGlvbiBpcyBhdHRhY2hl
ZCB0byBpcyBmaW5pc2hlZC4gWW91ICptdXN0KiBiZSB1c2luZyB3b3JrPQpmbG93IG91dHB1dHMg
KHRoZSBzbm93Zmxha2UpIGluIHlvdXIgd29ya2Zsb3cgZm9yIHRoaXMgdG8gaGF2ZSBhbnkgZWZm
ZWN0LicKKyAgICAgICAgICAgICAgICB9XQorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgPTIw
CisgICAgICAgICAgICAvLyB2aXNpdCBpbnB1dCBub2RlcyBhbmQgZW5yaWNoIGJ5IG5hbWUvdmFs
dWUgcGFpcnMgZnJvbSBzZXJ2ZT0KciBkYXRhCisgICAgICAgICAgICB2YXIgc2VsZiA9M0QgdGhp
czsKKyAgICAgICAgICAgIGZ1bmN0aW9uIHZpc2l0IChpbnB1dHMpIHsKKyAgICAgICAgICAgICAg
ICBmb3IgKHZhciBpIGluIGlucHV0cykgeworICAgICAgICAgICAgICAgICAgICB2YXIgaW5wdXQg
PTNEIGlucHV0c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmFjdGlvbikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQubmFtZSA9M0QgJ3BqYV9fJyArIG91dHB1dF9p
ZCArICdfXycgKyBpbnB1dC49CmFjdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChp
bnB1dC5hcmd1bWVudCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Lm5hbWUg
Kz0zRCAnX18nICsgaW5wdXQuYXJndW1lbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9M0Qgc2VsZi5wb3N0X2pvYl9hY3Rpb25zW2lu
cHV0LmFjdGlvbiArIG91dD0KcHV0X2lkXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChk
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmFyZ3VtZW50KSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlID0zRCBkLmFjdGlvbl9h
cmd1bWVudHMgJiYgZC5hYz0KdGlvbl9hcmd1bWVudHNbaW5wdXQuYXJndW1lbnRdIHx8IGlucHV0
LnZhbHVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlucHV0LnZhbHVlID0zRCAndHJ1ZSc7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0Lmlu
cHV0cykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0KGlucHV0LmlucHV0cyk7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2aXNpdChpbnB1dF9jb25m
aWcuaW5wdXRzKTsKKyAgICAgICAgICAgPTIwCisgICAgICAgICAgICAvLyByZXR1cm4gZmluYWwg
Y29uZmlndXJhdGlvbgorICAgICAgICAgICAgcmV0dXJuIGlucHV0X2NvbmZpZzsKICAgICAgICAg
fSwKICAgICAgICA9MjAKICAgICAgICAgLyoqIEJ1aWxkcyBhIG5ldyBtb2RlbCB0aHJvdWdoIGFw
aSBjYWxsIGFuZCByZWNyZWF0ZXMgdGhlIGVudGlyZSBmPQpvcm0KQEAgLTM4LDE1ICsyMjksMTYg
QEAKICAgICAgICAgICAgICAgICB0eXBlICAgIDogJ0dFVCcsCiAgICAgICAgICAgICAgICAgdXJs
ICAgICA6IG1vZGVsX3VybCwKICAgICAgICAgICAgICAgICBkYXRhICAgIDogY3VycmVudF9zdGF0
ZSwKLSAgICAgICAgICAgICAgICBzdWNjZXNzIDogZnVuY3Rpb24obm9kZSkgewotICAgICAgICAg
ICAgICAgICAgICBwYXJlbnQudXBkYXRlX25vZGUobm9kZSk7CisgICAgICAgICAgICAgICAgc3Vj
Y2VzcyA6IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlIG5v
ZGUgaW4gd29ya2Zsb3cgbW9kdWxlCisgICAgICAgICAgICAgICAgICAgIHNlbGYubm9kZS51cGRh
dGVfZmllbGRfZGF0YShkYXRhLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICA9MjAKICAgICAg
ICAgICAgICAgICAgICAgLy8gcHJvY2VzcyBjb21wbGV0ZWQKICAgICAgICAgICAgICAgICAgICAg
c2VsZi5kZWZlcnJlZC5kb25lKHByb2Nlc3NfaWQpOwogICAgICAgICAgICA9MjAKICAgICAgICAg
ICAgICAgICAgICAgLy8gbG9nIHN1Y2Nlc3MKICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5k
ZWJ1ZygndG9vbHMtZm9ybTo6X3JlZnJlc2hGb3JtKCkgLSBTdGF0ZXMgcmVmPQpyZXNoZWQuJyk7
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcobm9kZSk7CisgICAgICAgICAgICAg
ICAgICAgIGNvbnNvbGUuZGVidWcoZGF0YSk7CiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAg
ICAgICAgICBlcnJvciAgIDogZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgICAg
ICAgLy8gcHJvY2VzcyBjb21wbGV0ZWQKCmRpZmYgLXIgMTU5NjJiM2Q5YWFjMDYxZTk1NDFmODE3
NWM4ZDJlMmJjNGJhNWNhYiAtciAyZTk5MGNhZWZjOTQzZWIyYjFkNGE5ND0KYWY1MDhjMjJiYjM0
YjdmYTYgc3RhdGljL3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLXNlY3Rpb24uanMKLS0tIGEvc3Rh
dGljL3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLXNlY3Rpb24uanMKKysrIGIvc3RhdGljL3Njcmlw
dHMvbXZjL3Rvb2xzL3Rvb2xzLXNlY3Rpb24uanMKQEAgLTEsOCArMSw4IEBACiAvKioKICAgICBU
aGlzIGNsYXNzIGNyZWF0ZXMgYSB0b29sIGZvcm0gc2VjdGlvbiBhbmQgcG9wdWxhdGVzIGl0IHdp
dGggaW5wdXQgZWxlPQptZW50cy4gSXQgYWxzbyBoYW5kbGVzIHJlcGVhdCBibG9ja3MgYW5kIGNv
bmRpdGlvbmFscyBieSByZWN1cnNpdmVseSBjcmVhdGk9Cm5nIG5ldyBzdWIgc2VjdGlvbnMuIE5l
dyBpbnB1dCBlbGVtZW50cyBjYW4gYmUgcGx1Z2dlZCBpbiBieSBhZGRpbmcgY2FzZXMgdD0KbyB0
aGUgc3dpdGNoIGJsb2NrIGRlZmluZWQgaW4gdGhlIF9jcmVhdGVGaWVsZCgpIGZ1bmN0aW9uLgog
Ki8KLWRlZmluZShbJ3V0aWxzL3V0aWxzJywgJ212Yy91aS91aS10YWJsZScsICdtdmMvdWkvdWkt
bWlzYycsICdtdmMvdG9vbHMvdG9vPQpscy1yZXBlYXQnLCAnbXZjL3Rvb2xzL3Rvb2xzLXNlbGVj
dC1jb250ZW50JywgJ212Yy90b29scy90b29scy1pbnB1dCddLAotICAgIGZ1bmN0aW9uKFV0aWxz
LCBUYWJsZSwgVWksIFJlcGVhdCwgU2VsZWN0Q29udGVudCwgSW5wdXRFbGVtZW50KSB7CitkZWZp
bmUoWyd1dGlscy91dGlscycsICdtdmMvdWkvdWktdGFibGUnLCAnbXZjL3VpL3VpLW1pc2MnLCAn
bXZjL3VpL3VpLXBvcj0KdGxldCcsICdtdmMvdG9vbHMvdG9vbHMtcmVwZWF0JywgJ212Yy90b29s
cy90b29scy1zZWxlY3QtY29udGVudCcsICdtdmMvdG9vPQpscy90b29scy1pbnB1dCddLAorICAg
IGZ1bmN0aW9uKFV0aWxzLCBUYWJsZSwgVWksIFBvcnRsZXQsIFJlcGVhdCwgU2VsZWN0Q29udGVu
dCwgSW5wdXRFbGVtZW49CnQpIHsKPTIwCiAgICAgLy8gY3JlYXRlIGZvcm0gdmlldwogICAgIHZh
ciBWaWV3ID0zRCBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7CkBAIC0zNiwxMyArMzYsMTMgQEAKICAg
ICAgICAgICAgPTIwCiAgICAgICAgICAgICAvLyBsb2FkIHNldHRpbmdzIGVsZW1lbnRzIGludG8g
dGFibGUKICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gdGhpcy5pbnB1dHMpIHsKLSAgICAgICAg
ICAgICAgICB0aGlzLl9hZGQodGhpcy5pbnB1dHNbaV0pOworICAgICAgICAgICAgICAgIHRoaXMu
YWRkKHRoaXMuaW5wdXRzW2ldKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKICAgICAgICA9
MjAKICAgICAgICAgLyoqIEFkZCBhIG5ldyBpbnB1dCBlbGVtZW50CiAgICAgICAgICovCi0gICAg
ICAgIF9hZGQ6IGZ1bmN0aW9uKGlucHV0KSB7CisgICAgICAgIGFkZDogZnVuY3Rpb24oaW5wdXQp
IHsKICAgICAgICAgICAgIC8vIGxpbmsgdGhpcwogICAgICAgICAgICAgdmFyIHNlbGYgPTNEIHRo
aXM7CiAgICAgICAgICAgID0yMApAQCAtNjYsNiArNjYsMTAgQEAKICAgICAgICAgICAgICAgICBj
YXNlICdyZXBlYXQnOgogICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRSZXBlYXQoaW5wdXRf
ZGVmKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgLy8gY3Vz
dG9taXplZCBzZWN0aW9uCisgICAgICAgICAgICAgICAgY2FzZSAnc2VjdGlvbic6CisgICAgICAg
ICAgICAgICAgICAgIHRoaXMuX2FkZFNlY3Rpb24oaW5wdXRfZGVmKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgLy8gZGVmYXVsdCBzaW5nbGUgZWxlbWVudCBy
b3cKICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICB0aGlzLl9h
ZGRSb3coaW5wdXRfZGVmKTsKQEAgLTEwMyw4ICsxMDcsNyBAQAogICAgICAgICAgICAgICAgICAg
ICAvLyBjaGVjayBpZiBub24taGlkZGVuIGVsZW1lbnRzIGV4aXN0CiAgICAgICAgICAgICAgICAg
ICAgIHZhciBub25oaWRkZW4gPTNEIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBmb3IgKHZh
ciBqIGluIGNhc2VfZGVmLmlucHV0cykgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHR5
cGUgPTNEIGNhc2VfZGVmLmlucHV0c1tqXS50eXBlOwotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKHR5cGUgJiYgdHlwZSAhPTNEPTNEICdoaWRkZW4nKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIWNhc2VfZGVmLmlucHV0c1tqXS5oaWRkZW4pIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub25oaWRkZW4gPTNEIHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0yNDQsNiArMjQ3LDU4IEBA
CiAgICAgICAgICAgICB0aGlzLnRhYmxlLmFwcGVuZChpbnB1dF9kZWYuaWQpOwogICAgICAgICB9
LAogICAgICAgID0yMAorICAgICAgICAvKiogQWRkIGEgY3VzdG9taXplZCBzZWN0aW9uCisgICAg
ICAgICovCisgICAgICAgIF9hZGRTZWN0aW9uOiBmdW5jdGlvbihpbnB1dF9kZWYpIHsKKyAgICAg
ICAgICAgIC8vIGxpbmsgdGhpcworICAgICAgICAgICAgdmFyIHNlbGYgPTNEIHRoaXM7CisgICAg
ICAgICAgID0yMAorICAgICAgICAgICAgLy8gY3JlYXRlIHN1YiBzZWN0aW9uCisgICAgICAgICAg
ICB2YXIgc3ViX3NlY3Rpb24gPTNEIG5ldyBWaWV3KHNlbGYuYXBwLCB7CisgICAgICAgICAgICAg
ICAgaW5wdXRzICA6IGlucHV0X2RlZi5pbnB1dHMsCisgICAgICAgICAgICAgICAgY2xzICAgICA6
ICd1aS10YWJsZS1wbGFpbicKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICA9MjAKKyAgICAg
ICAgICAgIC8vIGRlbGV0ZSBidXR0b24KKyAgICAgICAgICAgIHZhciBidXR0b25fdmlzaWJsZSA9
M0QgbmV3IFVpLkJ1dHRvbkljb24oeworICAgICAgICAgICAgICAgIGljb24gICAgOiAnZmEtZXll
LXNsYXNoJywKKyAgICAgICAgICAgICAgICB0b29sdGlwIDogJ1Nob3cvaGlkZSBzZWN0aW9uJywK
KyAgICAgICAgICAgICAgICBjbHMgICAgIDogJ3VpLWJ1dHRvbi1pY29uLXBsYWluJworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgID0yMAorICAgICAgICAgICAgLy8gY3JlYXRlIHBvcnRsZXQg
Zm9yIHN1YiBzZWN0aW9uCisgICAgICAgICAgICB2YXIgcG9ydGxldCA9M0QgbmV3IFBvcnRsZXQu
Vmlldyh7CisgICAgICAgICAgICAgICAgdGl0bGUgICAgICAgOiBpbnB1dF9kZWYubGFiZWwsCisg
ICAgICAgICAgICAgICAgY2xzICAgICAgICAgOiAndWktcG9ydGxldC1zZWN0aW9uJywKKyAgICAg
ICAgICAgICAgICBvcGVyYXRpb25zICA6IHsKKyAgICAgICAgICAgICAgICAgICAgYnV0dG9uX3Zp
c2libGU6IGJ1dHRvbl92aXNpYmxlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICBwb3J0bGV0LmFwcGVuZChzdWJfc2VjdGlvbi4kZWwpOworICAgICAgICAg
ICA9MjAKKyAgICAgICAgICAgIC8vIGFkZCBldmVudCBoYW5kbGVyIHZpc2liaWxpdHkgYnV0dG9u
CisgICAgICAgICAgICB2YXIgdmlzaWJsZSA9M0QgZmFsc2U7CisgICAgICAgICAgICBwb3J0bGV0
LiRjb250ZW50LmhpZGUoKTsKKyAgICAgICAgICAgIHBvcnRsZXQuJGhlYWRlci5jc3MoJ2N1cnNv
cicsICdwb2ludGVyJyk7CisgICAgICAgICAgICBwb3J0bGV0LiRoZWFkZXIub24oJ2NsaWNrJywg
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgaWYgKHZpc2libGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdmlzaWJsZSA9M0QgZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHBvcnRsZXQu
JGNvbnRlbnQuaGlkZSgpOworICAgICAgICAgICAgICAgICAgICBidXR0b25fdmlzaWJsZS5zZXRJ
Y29uKCdmYS1leWUtc2xhc2gnKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICB2aXNpYmxlID0zRCB0cnVlOworICAgICAgICAgICAgICAgICAgICBwb3J0bGV0
LiRjb250ZW50LmZhZGVJbignZmFzdCcpOworICAgICAgICAgICAgICAgICAgICBidXR0b25fdmlz
aWJsZS5zZXRJY29uKCdmYS1leWUnKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgPTIwCisgICAgICAgICAgICAvLyBjcmVhdGUgdGFibGUgcm93CisgICAg
ICAgICAgICB0aGlzLnRhYmxlLmFkZChwb3J0bGV0LiRlbCk7CisKKyAgICAgICAgICAgIC8vIGFw
cGVuZCByb3cgdG8gdGFibGUKKyAgICAgICAgICAgIHRoaXMudGFibGUuYXBwZW5kKGlucHV0X2Rl
Zi5pZCk7CisgICAgICAgIH0sCisKICAgICAgICAgLyoqIEFkZCBhIHNpbmdsZSBpbnB1dCBmaWVs
ZCBlbGVtZW50CiAgICAgICAgICovCiAgICAgICAgIF9hZGRSb3c6IGZ1bmN0aW9uKGlucHV0X2Rl
ZikgewpAQCAtMjczLDYgKzMyOCwxMSBAQAogICAgICAgICAgICAgLy8gYXBwZW5kIHRvIHRhYmxl
CiAgICAgICAgICAgICB0aGlzLnRhYmxlLmFwcGVuZChpZCk7CiAgICAgICAgICAgID0yMAorICAg
ICAgICAgICAgLy8gaGlkZSByb3cgaWYgbmVjY2Vzc2FyeQorICAgICAgICAgICAgaWYgKGlucHV0
X2RlZi5oaWRkZW4pIHsKKyAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLmdldChpZCkuaGlkZSgp
OworICAgICAgICAgICAgfQorICAgICAgICAgICA9MjAKICAgICAgICAgICAgIC8vIHJldHVybiBj
cmVhdGVkIGZpZWxkCiAgICAgICAgICAgICByZXR1cm4gZmllbGQ7CiAgICAgICAgIH0sCkBAIC0z
MTYsNyArMzc2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgZmllbGQgPTNEIHRoaXMuX2ZpZWxk
SGlkZGVuKGlucHV0X2RlZik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICAgPTIwCi0gICAgICAgICAgICAgICAgLy8gaGlkZGVuIGZpZWxkCisgICAgICAgICAgICAg
ICAgLy8gaGlkZGVuIGRhdGEgZmllbGQKICAgICAgICAgICAgICAgICBjYXNlICdoaWRkZW5fZGF0
YSc6CiAgICAgICAgICAgICAgICAgICAgIGZpZWxkID0zRCB0aGlzLl9maWVsZEhpZGRlbihpbnB1
dF9kZWYpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQ2NSw5ICs1MjUsOSBAQAog
ICAgICAgICBfZmllbGRUZXh0IDogZnVuY3Rpb24oaW5wdXRfZGVmKSB7CiAgICAgICAgICAgICB2
YXIgc2VsZiA9M0QgdGhpczsKICAgICAgICAgICAgIHJldHVybiBuZXcgVWkuSW5wdXQoewotICAg
ICAgICAgICAgICAgIGlkICAgICAgOiAnZmllbGQtJyArIGlucHV0X2RlZi5pZCwKLSAgICAgICAg
ICAgICAgICBhcmVhICAgIDogaW5wdXRfZGVmLmFyZWEsCi0gICAgICAgICAgICAgICAgb25jaGFu
Z2U6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIGlkICAgICAgICAgIDogJ2ZpZWxkLScg
KyBpbnB1dF9kZWYuaWQsCisgICAgICAgICAgICAgICAgYXJlYSAgICAgICAgOiBpbnB1dF9kZWYu
YXJlYSwKKyAgICAgICAgICAgICAgICBvbmNoYW5nZSAgICA6IGZ1bmN0aW9uKCkgewogICAgICAg
ICAgICAgICAgICAgICBzZWxmLmFwcC50cmlnZ2VyKCdyZWZyZXNoJyk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfSk7CkBAIC00NzYsMTEgKzUzNiwxNSBAQAogICAgICAgICAvKiog
U2xpZGVyIGZpZWxkCiAgICAgICAgICovCiAgICAgICAgIF9maWVsZFNsaWRlcjogZnVuY3Rpb24o
aW5wdXRfZGVmKSB7CisgICAgICAgICAgICB2YXIgc2VsZiA9M0QgdGhpczsKICAgICAgICAgICAg
IHJldHVybiBuZXcgVWkuU2xpZGVyLlZpZXcoewotICAgICAgICAgICAgICAgIGlkICAgICAgOiAn
ZmllbGQtJyArIGlucHV0X2RlZi5pZCwKLSAgICAgICAgICAgICAgICBwcmVjaXNlIDogaW5wdXRf
ZGVmLnR5cGUgPTNEPTNEICdmbG9hdCcsCi0gICAgICAgICAgICAgICAgbWluICAgICA6IGlucHV0
X2RlZi5taW4sCi0gICAgICAgICAgICAgICAgbWF4ICAgICA6IGlucHV0X2RlZi5tYXgKKyAgICAg
ICAgICAgICAgICBpZCAgICAgICAgICA6ICdmaWVsZC0nICsgaW5wdXRfZGVmLmlkLAorICAgICAg
ICAgICAgICAgIHByZWNpc2UgICAgIDogaW5wdXRfZGVmLnR5cGUgPTNEPTNEICdmbG9hdCcsCisg
ICAgICAgICAgICAgICAgbWluICAgICAgICAgOiBpbnB1dF9kZWYubWluLAorICAgICAgICAgICAg
ICAgIG1heCAgICAgICAgIDogaW5wdXRfZGVmLm1heCwKKyAgICAgICAgICAgICAgICBvbmNoYW5n
ZSAgICA6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBzZWxmLmFwcC50cmlnZ2Vy
KCdyZWZyZXNoJyk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0sCiAgICAgICAgPTIwCkBAIC00ODgsMTggKzU1MiwyMiBAQAogICAgICAgICAqLwogICAgICAg
ICBfZmllbGRIaWRkZW4gOiBmdW5jdGlvbihpbnB1dF9kZWYpIHsKICAgICAgICAgICAgIHJldHVy
biBuZXcgVWkuSGlkZGVuKHsKLSAgICAgICAgICAgICAgICBpZCAgICAgIDogJ2ZpZWxkLScgKyBp
bnB1dF9kZWYuaWQsCi0gICAgICAgICAgICAgICAgaW5mbyAgICA6IGlucHV0X2RlZi5pbmZvCisg
ICAgICAgICAgICAgICAgaWQgICAgICAgICAgOiAnZmllbGQtJyArIGlucHV0X2RlZi5pZCwKKyAg
ICAgICAgICAgICAgICBpbmZvICAgICAgICA6IGlucHV0X2RlZi5pbmZvCiAgICAgICAgICAgICB9
KTsKICAgICAgICAgfSwKICAgICAgICA9MjAKICAgICAgICAgLyoqIEJvb2xlYW4gZmllbGQKICAg
ICAgICAgKi8KICAgICAgICAgX2ZpZWxkQm9vbGVhbiA6IGZ1bmN0aW9uKGlucHV0X2RlZikgewor
ICAgICAgICAgICAgdmFyIHNlbGYgPTNEIHRoaXM7CiAgICAgICAgICAgICByZXR1cm4gbmV3IFVp
LlJhZGlvQnV0dG9uLlZpZXcoewotICAgICAgICAgICAgICAgIGlkICAgICAgOiAnZmllbGQtJyAr
IGlucHV0X2RlZi5pZCwKLSAgICAgICAgICAgICAgICBkYXRhICAgIDogWyB7IGxhYmVsIDogJ1ll
cycsIHZhbHVlIDogJ3RydWUnICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbGFi
ZWwgOiAnTm8nLCAgdmFsdWUgOiAnZmFsc2UnIH1dCisgICAgICAgICAgICAgICAgaWQgICAgICAg
ICAgOiAnZmllbGQtJyArIGlucHV0X2RlZi5pZCwKKyAgICAgICAgICAgICAgICBkYXRhICAgICAg
ICA6IFsgeyBsYWJlbCA6ICdZZXMnLCB2YWx1ZSA6ICd0cnVlJyAgfSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeyBsYWJlbCA6ICdObycsICB2YWx1ZSA6ICdmYWxzZScgfV0sCisg
ICAgICAgICAgICAgICAgb25jaGFuZ2UgICAgOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5hcHAudHJpZ2dlcigncmVmcmVzaCcpOworICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfSk7CgpkaWZmIC1yIDE1OTYyYjNkOWFhYzA2
MWU5NTQxZjgxNzVjOGQyZTJiYzRiYTVjYWIgLXIgMmU5OTBjYWVmYzk0M2ViMmIxZDRhOTQ9CmFm
NTA4YzIyYmIzNGI3ZmE2IHN0YXRpYy9zY3JpcHRzL212Yy90b29scy90b29scy10cmVlLmpzCi0t
LSBhL3N0YXRpYy9zY3JpcHRzL212Yy90b29scy90b29scy10cmVlLmpzCisrKyBiL3N0YXRpYy9z
Y3JpcHRzL212Yy90b29scy90b29scy10cmVlLmpzCkBAIC0xMDgsMjIgKzEwOCwyOSBAQAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0KGpvYl9pbnB1dF9pZCwgaGVhZFtp
bnB1dC5pZCArICctc2U9CmN0aW9uLScgKyBzZWxlY3RlZENhc2VdKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgY3VzdG9tIHN1YiBzZWN0aW9ucworICAgICAg
ICAgICAgICAgICAgICAgICAgY2FzZSAnc2VjdGlvbic6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udmVydCgnJywgbm9kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGdldCBmaWVsZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBm
aWVsZCA9M0Qgc2VsZi5hcHAuZmllbGRfbGlzdFtpbnB1dC5pZF07Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICA9MjAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBnZXQgYW5kIHBh
dGNoIGZpZWxkIHZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0z
RCBmaWVsZC52YWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXRjaFtp
bnB1dC50eXBlXSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9M0Qg
cGF0Y2hbaW5wdXQudHlwZV0odmFsdWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgICAgICAgID0yMAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIC8vIGhhbmRsZSBkZWZhdWx0IHZhbHVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFmaWVsZC5za2lwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChm
aWVsZC52YWxpZGF0ZSAmJiAhZmllbGQudmFsaWRhdGUodmFsdT0KZSkpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0zRCBudWxsOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChmaWVsZCAmJiBmaWVsZC52YWx1ZSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvLyBnZXQgYW5kIHBhdGNoIGZpZWxkIHZhbHVlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9M0QgZmllbGQudmFsdWUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhdGNoW2lucHV0LnR5cGVdKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9M0QgcGF0Y2hbaW5wdXQudHlw
ZV0odmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFkZCAoam9iX2lucHV0X2lkLCBpbnB1dC5pZCwgdmFsdWUp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0yMAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBoYW5kbGUgZGVmYXVsdCB2YWx1ZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIWZpZWxkLnNraXApIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChmaWVsZC52YWxpZGF0ZSAmJiAhZmllbGQudmFsaWRhdGUoPQp2YWx1
ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9M0Qg
bnVsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5pZ25vcmUgPTNEPTNEPTNEIHVuZGVm
aW5lZCB8PQp8ICh2YWx1ZSAmJiBpbnB1dC5pZ25vcmUgIT0zRCB2YWx1ZSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgKGpvYl9pbnB1dF9pZCwgaW5wdXQu
aWQsIHZhbHVlPQopOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQoKZGlmZiAtciAx
NTk2MmIzZDlhYWMwNjFlOTU0MWY4MTc1YzhkMmUyYmM0YmE1Y2FiIC1yIDJlOTkwY2FlZmM5NDNl
YjJiMWQ0YTk0PQphZjUwOGMyMmJiMzRiN2ZhNiBzdGF0aWMvc2NyaXB0cy9tdmMvdWkvdWktbWlz
Yy5qcwotLS0gYS9zdGF0aWMvc2NyaXB0cy9tdmMvdWkvdWktbWlzYy5qcworKysgYi9zdGF0aWMv
c2NyaXB0cy9tdmMvdWkvdWktbWlzYy5qcwpAQCAtMTkzLDYgKzE5MywxMiBAQAogICAgICAgICB0
aGlzLmRpc2FibGVkID0zRCBmYWxzZTsKICAgICB9LAogICAgPTIwCisgICAgLy8gY2hhbmdlIGlj
b24KKyAgICBzZXRJY29uOiBmdW5jdGlvbihpY29uX2NscykgeworICAgICAgICB0aGlzLiQoJ2kn
KS5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuaWNvbikuYWRkQ2xhc3MoaWNvbl9jbHMpOworICAg
ICAgICB0aGlzLm9wdGlvbnMuaWNvbiA9M0QgaWNvbl9jbHM7CisgICAgfSwKKyAgID0yMAogICAg
IC8vIHRlbXBsYXRlCiAgICAgX3RlbXBsYXRlOiBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAg
IC8vIHdpZHRoCgpkaWZmIC1yIDE1OTYyYjNkOWFhYzA2MWU5NTQxZjgxNzVjOGQyZTJiYzRiYTVj
YWIgLXIgMmU5OTBjYWVmYzk0M2ViMmIxZDRhOTQ9CmFmNTA4YzIyYmIzNGI3ZmE2IHN0YXRpYy9z
Y3JpcHRzL212Yy91aS91aS1wb3J0bGV0LmpzCi0tLSBhL3N0YXRpYy9zY3JpcHRzL212Yy91aS91
aS1wb3J0bGV0LmpzCisrKyBiL3N0YXRpYy9zY3JpcHRzL212Yy91aS91aS1wb3J0bGV0LmpzCkBA
IC0yNSw2ICsyNSw3IEBACiAgICAgJGNvbnRlbnQgOiBudWxsLAogICAgICRidXR0b25zIDogbnVs
bCwKICAgICAkb3BlcmF0aW9ucyA6IG51bGwsCisgICAgJGhlYWRlciA6IG51bGwsCiAgICA9MjAK
ICAgICAvLyBpbml0aWFsaXplCiAgICAgaW5pdGlhbGl6ZSA6IGZ1bmN0aW9uKG9wdGlvbnMpIHsK
QEAgLTM1LDEzICszNiwxNiBAQAogICAgICAgICB0aGlzLnNldEVsZW1lbnQodGhpcy5fdGVtcGxh
dGUodGhpcy5vcHRpb25zKSk7CiAgICAgICAgPTIwCiAgICAgICAgIC8vIGxpbmsgY29udGVudAot
ICAgICAgICB0aGlzLiRjb250ZW50ID0zRCB0aGlzLiRlbC5maW5kKCcjY29udGVudCcpOworICAg
ICAgICB0aGlzLiRjb250ZW50ID0zRCB0aGlzLiRlbC5maW5kKCcuY29udGVudCcpOwogICAgICAg
ID0yMAogICAgICAgICAvLyBsaW5rIHRpdGxlCi0gICAgICAgIHRoaXMuJHRpdGxlID0zRCB0aGlz
LiRlbC5maW5kKCcjcG9ydGxldC10aXRsZS10ZXh0Jyk7CisgICAgICAgIHRoaXMuJHRpdGxlID0z
RCB0aGlzLiRlbC5maW5kKCcucG9ydGxldC10aXRsZS10ZXh0Jyk7CisgICAgICAgPTIwCisgICAg
ICAgIC8vIGxpbmsgaGVhZGVyCisgICAgICAgIHRoaXMuJGhlYWRlciA9M0QgdGhpcy4kZWwuZmlu
ZCgnLnBvcnRsZXQtaGVhZGVyJyk7CiAgICAgICAgPTIwCiAgICAgICAgIC8vIHNldCBjb250ZW50
IGZvcm1hdAotICAgICAgICB2YXIgJHBvcnRsZXRfY29udGVudCA9M0QgdGhpcy4kZWwuZmluZCgn
I3BvcnRsZXQtY29udGVudCcpOworICAgICAgICB2YXIgJHBvcnRsZXRfY29udGVudCA9M0QgdGhp
cy4kZWwuZmluZCgnLnBvcnRsZXQtY29udGVudCcpOwogICAgICAgICBpZiAoIXRoaXMub3B0aW9u
cy5zY3JvbGxhYmxlKSB7CiAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnRpdGxlKSB7CiAg
ICAgICAgICAgICAgICAgJHBvcnRsZXRfY29udGVudC5hZGRDbGFzcygnbm8tc2Nyb2xsJyk7CkBA
IC01OSw3ICs2Myw3IEBACiAgICAgICAgIH0KICAgICAgICA9MjAKICAgICAgICAgLy8gYXBwZW5k
IGJ1dHRvbnMKLSAgICAgICAgdGhpcy4kYnV0dG9ucyA9M0QgJCh0aGlzLmVsKS5maW5kKCcjYnV0
dG9ucycpOworICAgICAgICB0aGlzLiRidXR0b25zID0zRCAkKHRoaXMuZWwpLmZpbmQoJy5idXR0
b25zJyk7CiAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYnV0dG9ucykgewogICAgICAgICAgICAg
Ly8gbGluayBmdW5jdGlvbnMKICAgICAgICAgICAgIHZhciBzZWxmID0zRCB0aGlzOwpAQCAtNzIs
NyArNzYsNyBAQAogICAgICAgICB9CiAgICAgICAgPTIwCiAgICAgICAgIC8vIGFwcGVuZCBvcGVy
YXRpb25zCi0gICAgICAgIHRoaXMuJG9wZXJhdGlvbnMgPTNEICQodGhpcy5lbCkuZmluZCgnI29w
ZXJhdGlvbnMnKTsKKyAgICAgICAgdGhpcy4kb3BlcmF0aW9ucyA9M0QgJCh0aGlzLmVsKS5maW5k
KCcub3BlcmF0aW9ucycpOwogICAgICAgICBpZiAodGhpcy5vcHRpb25zLm9wZXJhdGlvbnMpIHsK
ICAgICAgICAgICAgIC8vIGxpbmsgZnVuY3Rpb25zCiAgICAgICAgICAgICB2YXIgc2VsZiA9M0Qg
dGhpczsKQEAgLTE2MSwyNyArMTY1LDI3IEBACiAgICAgICAgIHZhciB0bXBsID0zRCAgJzxkaXYg
aWQ9M0QiJyArIG9wdGlvbnMuaWQgKyAnIiBjbGFzcz0zRCInICsgb3B0aW9ucz0KLmNscyArICci
Pic7CiAgICAgICAgPTIwCiAgICAgICAgIGlmIChvcHRpb25zLnRpdGxlKSB7Ci0gICAgICAgICAg
ICB0bXBsICs9M0QgICAgICc8ZGl2IGlkPTNEInBvcnRsZXQtaGVhZGVyIiBjbGFzcz0zRCJwb3J0
bGV0LWhlYT0KZGVyIj4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBpZD0z
RCJvcGVyYXRpb25zIiBzdHlsZT0zRCJmbG9hdDogJyArIG9wPQp0aW9ucy5vcGVyYXRpb25zX2Zs
dCArICc7Ij48L2Rpdj4nICsKKyAgICAgICAgICAgIHRtcGwgKz0zRCAgICAgJzxkaXYgY2xhc3M9
M0QicG9ydGxldC1oZWFkZXIiPicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2
IGNsYXNzPTNEIm9wZXJhdGlvbnMiIHN0eWxlPTNEImZsb2F0OiAnICs9CiBvcHRpb25zLm9wZXJh
dGlvbnNfZmx0ICsgJzsiPjwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8
ZGl2IGNsYXNzPTNEInBvcnRsZXQtdGl0bGUiPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA9MjAKICAgICAgICAgICAgIGlmIChvcHRpb25zLmljb24pCiAgICAgICAgICAgICAgICAgdG1w
bCArPTNEICAgICAgICAgJzxpIGNsYXNzPTNEImljb24gZmEgJyArIG9wdGlvbnMuaWNvbiArID0K
JyI+Jm5ic3A7PC9pPic7CiAgICAgICAgPTIwCi0gICAgICAgICAgICB0bXBsICs9M0QgICAgICAg
ICAgICAgJzxzcGFuIGlkPTNEInBvcnRsZXQtdGl0bGUtdGV4dCIgY2xhc3M9Cj0zRCJwb3J0bGV0
LXRpdGxlLXRleHQiPicgKyBvcHRpb25zLnRpdGxlICsgJzwvc3Bhbj4nICsKKyAgICAgICAgICAg
IHRtcGwgKz0zRCAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9M0QicG9ydGxldC10aXRsZS10ZXh0
Ij4nICsgPQpvcHRpb25zLnRpdGxlICsgJzwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JzsKICAg
ICAgICAgfQotICAgICAgICB0bXBsICs9M0QgICAgICAgICAnPGRpdiBpZD0zRCJwb3J0bGV0LWNv
bnRlbnQiIGNsYXNzPTNEInBvcnRsZXQtY289Cm50ZW50Ij4nOworICAgICAgICB0bXBsICs9M0Qg
ICAgICAgICAnPGRpdiBjbGFzcz0zRCJwb3J0bGV0LWNvbnRlbnQiPic7CiAgICAgICAgPTIwCiAg
ICAgICAgIGlmIChvcHRpb25zLnBsYWNlbWVudCA9M0Q9M0QgJ3RvcCcpIHsKLSAgICAgICAgICAg
IHRtcGwgKz0zRCAgICAgICAgICc8ZGl2IGlkPTNEImJ1dHRvbnMiIGNsYXNzPTNEImJ1dHRvbnMi
PjwvZGl2PQo+JzsKKyAgICAgICAgICAgIHRtcGwgKz0zRCAgICAgICAgICc8ZGl2IGNsYXNzPTNE
ImJ1dHRvbnMiPjwvZGl2Pic7CiAgICAgICAgIH0KICAgICAgICA9MjAKLSAgICAgICAgdG1wbCAr
PTNEICAgICAgICAgICAgICc8ZGl2IGlkPTNEImNvbnRlbnQiIGNsYXNzPTNEImNvbnRlbnQiPjwv
ZGl2PQo+JzsKKyAgICAgICAgdG1wbCArPTNEICAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNEImNv
bnRlbnQiPjwvZGl2Pic7CiAgICAgICAgPTIwCiAgICAgICAgIGlmIChvcHRpb25zLnBsYWNlbWVu
dCA9M0Q9M0QgJ2JvdHRvbScpIHsKLSAgICAgICAgICAgIHRtcGwgKz0zRCAgICAgICAgICc8ZGl2
IGlkPTNEImJ1dHRvbnMiIGNsYXNzPTNEImJ1dHRvbnMiPjwvZGl2PQo+JzsKKyAgICAgICAgICAg
IHRtcGwgKz0zRCAgICAgICAgICc8ZGl2IGNsYXNzPTNEImJ1dHRvbnMiPjwvZGl2Pic7CiAgICAg
ICAgIH0KICAgICAgICA9MjAKICAgICAgICAgdG1wbCArPTNEICAgICAgICAgJzwvZGl2PicgKwoK
ZGlmZiAtciAxNTk2MmIzZDlhYWMwNjFlOTU0MWY4MTc1YzhkMmUyYmM0YmE1Y2FiIC1yIDJlOTkw
Y2FlZmM5NDNlYjJiMWQ0YTk0PQphZjUwOGMyMmJiMzRiN2ZhNiBzdGF0aWMvc2NyaXB0cy9wYWNr
ZWQvZ2FsYXh5LndvcmtmbG93X2VkaXRvci5jYW52YXMuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMv
cGFja2VkL2dhbGF4eS53b3JrZmxvd19lZGl0b3IuY2FudmFzLmpzCisrKyBiL3N0YXRpYy9zY3Jp
cHRzL3BhY2tlZC9nYWxheHkud29ya2Zsb3dfZWRpdG9yLmNhbnZhcy5qcwpAQCAtMSwxICsxLDEg
QEAKLWZ1bmN0aW9uIENvbGxlY3Rpb25UeXBlRGVzY3JpcHRpb24oYSl7dGhpcy5jb2xsZWN0aW9u
VHlwZT0zRGE7dGhpcy5pc0NvbGxlPQpjdGlvbj0zRHRydWU7dGhpcy5yYW5rPTNEYS5zcGxpdCgi
OiIpLmxlbmd0aH0kLmV4dGVuZChDb2xsZWN0aW9uVHlwZURlc2NyaXA9CnRpb24ucHJvdG90eXBl
LHthcHBlbmQ6ZnVuY3Rpb24oYSl7aWYoYT0zRD0zRD0zRE5VTExfQ09MTEVDVElPTl9UWVBFX0RF
U0NSST0KUFRJT04pe3JldHVybiB0aGlzfWlmKGE9M0Q9M0Q9M0RBTllfQ09MTEVDVElPTl9UWVBF
X0RFU0NSSVBUSU9OKXtyZXR1cm4gb3RoPQplckNvbGxlY3Rpb25UeXBlfXJldHVybiBuZXcgQ29s
bGVjdGlvblR5cGVEZXNjcmlwdGlvbih0aGlzLmNvbGxlY3Rpb25UeXBlKyI9CjoiK2EuY29sbGVj
dGlvblR5cGUpfSxjYW5NYXRjaDpmdW5jdGlvbihhKXtpZihhPTNEPTNEPTNETlVMTF9DT0xMRUNU
SU9OX1RZUD0KRV9ERVNDUklQVElPTil7cmV0dXJuIGZhbHNlfWlmKGE9M0Q9M0Q9M0RBTllfQ09M
TEVDVElPTl9UWVBFX0RFU0NSSVBUSU9OKXtyPQpldHVybiB0cnVlfXJldHVybiBhLmNvbGxlY3Rp
b25UeXBlPTNEPTNEdGhpcy5jb2xsZWN0aW9uVHlwZX0sY2FuTWFwT3ZlcjpmdW49CmN0aW9uKGIp
e2lmKGI9M0Q9M0Q9M0ROVUxMX0NPTExFQ1RJT05fVFlQRV9ERVNDUklQVElPTil7cmV0dXJuIGZh
bHNlfWlmKGI9Cj0zRD0zRD0zREFOWV9DT0xMRUNUSU9OX1RZUEVfREVTQ1JJUFRJT04pe3JldHVy
biBmYWxzZX1pZih0aGlzLnJhbms8PTNEYi5yYT0Kbmspe3JldHVybiBmYWxzZX12YXIgYT0zRGIu
Y29sbGVjdGlvblR5cGU7cmV0dXJuIHRoaXMuX2VuZHNXaXRoKHRoaXMuY29sbGVjPQp0aW9uVHlw
ZSxhKX0sZWZmZWN0aXZlTWFwT3ZlcjpmdW5jdGlvbihhKXt2YXIgYz0zRGEuY29sbGVjdGlvblR5
cGU7dmFyIGI9M0Q9CnRoaXMuY29sbGVjdGlvblR5cGUuc3Vic3RyaW5nKDAsdGhpcy5jb2xsZWN0
aW9uVHlwZS5sZW5ndGgtYy5sZW5ndGgtMSk7cmV0dT0Kcm4gbmV3IENvbGxlY3Rpb25UeXBlRGVz
Y3JpcHRpb24oYil9LGVxdWFsOmZ1bmN0aW9uKGEpe3JldHVybiBhLmNvbGxlY3Rpb25UPQp5cGU9
M0Q9M0R0aGlzLmNvbGxlY3Rpb25UeXBlfSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiJDb2xs
ZWN0aW9uVHlwZVsiK3Q9Cmhpcy5jb2xsZWN0aW9uVHlwZSsiXSJ9LF9lbmRzV2l0aDpmdW5jdGlv
bihiLGEpe3JldHVybiBiLmluZGV4T2YoYSxiLmxlbmd0aD0KLWEubGVuZ3RoKSE9M0Q9M0QtMX19
KTtOVUxMX0NPTExFQ1RJT05fVFlQRV9ERVNDUklQVElPTj0zRHtpc0NvbGxlY3Rpb246ZmFsPQpz
ZSxjYW5NYXRjaDpmdW5jdGlvbihhKXtyZXR1cm4gZmFsc2V9LGNhbk1hcE92ZXI6ZnVuY3Rpb24o
YSl7cmV0dXJuIGZhbHNlfSw9CnRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIk51bGxDb2xsZWN0
aW9uVHlwZVtdIn0sYXBwZW5kOmZ1bmN0aW9uKGEpe3JldHVybj0KIGF9LGVxdWFsOmZ1bmN0aW9u
KGEpe3JldHVybiBhPTNEPTNEPTNEdGhpc319O0FOWV9DT0xMRUNUSU9OX1RZUEVfREVTQ1JJUFRJ
PQpPTj0zRHtpc0NvbGxlY3Rpb246dHJ1ZSxjYW5NYXRjaDpmdW5jdGlvbihhKXtyZXR1cm4gTlVM
TF9DT0xMRUNUSU9OX1RZUEVfREU9ClNDUklQVElPTiE9M0Q9M0RhfSxjYW5NYXBPdmVyOmZ1bmN0
aW9uKGEpe3JldHVybiBmYWxzZX0sdG9TdHJpbmc6ZnVuY3Rpb24oKT0Ke3JldHVybiJBbnlDb2xs
ZWN0aW9uVHlwZVtdIn0sYXBwZW5kOmZ1bmN0aW9uKGEpe3Rocm93IkNhbm5vdCBhcHBlbmQgdG8g
QU5ZPQpfQ09MTEVDVElPTl9UWVBFX0RFU0NSSVBUSU9OIn0sZXF1YWw6ZnVuY3Rpb24oYSl7cmV0
dXJuIGE9M0Q9M0Q9M0R0aGlzfX07dmE9CnIgVGVybWluYWxNYXBwaW5nPTNEQmFja2JvbmUuTW9k
ZWwuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKGEpe3RoaXMubWFwTz0KdmVyPTNEYS5tYXBP
dmVyfHxOVUxMX0NPTExFQ1RJT05fVFlQRV9ERVNDUklQVElPTjt0aGlzLnRlcm1pbmFsPTNEYS50
ZXJtaW5hPQpsO3RoaXMudGVybWluYWwudGVybWluYWxNYXBwaW5nPTNEdGhpc30sZGlzYWJsZU1h
cE92ZXI6ZnVuY3Rpb24oKXt0aGlzLnNldE09CmFwT3ZlcihOVUxMX0NPTExFQ1RJT05fVFlQRV9E
RVNDUklQVElPTil9LHNldE1hcE92ZXI6ZnVuY3Rpb24oYSl7dGhpcy5tYXBPdj0KZXI9M0RhO3Ro
aXMudHJpZ2dlcigiY2hhbmdlIil9fSk7dmFyIFRlcm1pbmFsTWFwcGluZ1ZpZXc9M0RCYWNrYm9u
ZS5WaWV3LmV4PQp0ZW5kKHt0YWdOYW1lOiJkaXYiLGNsYXNzTmFtZToiZmEtaWNvbi1idXR0b24g
ZmEgZmEtZm9sZGVyLW8iLGluaXRpYWxpemU6ZnU9Cm5jdGlvbihiKXt2YXIgYT0zRCJSdW4gdG9v
bCBpbiBwYXJhbGxlbCBvdmVyIGNvbGxlY3Rpb24iO3RoaXMuJGVsLnRvb2x0aXAoez0KZGVsYXk6
NTAwLHRpdGxlOmF9KTt0aGlzLm1vZGVsLmJpbmQoImNoYW5nZSIsXy5iaW5kKHRoaXMucmVuZGVy
LHRoaXMpKX0scmVuPQpkZXI6ZnVuY3Rpb24oKXtpZih0aGlzLm1vZGVsLm1hcE92ZXIuaXNDb2xs
ZWN0aW9uKXt0aGlzLiRlbC5zaG93KCl9ZWxzZXt0aGk9CnMuJGVsLmhpZGUoKX19LH0pO3ZhciBJ
bnB1dFRlcm1pbmFsTWFwcGluZ1ZpZXc9M0RUZXJtaW5hbE1hcHBpbmdWaWV3LmV4dGVuZD0KKHtl
dmVudHM6e2NsaWNrOiJvbkNsaWNrIixtb3VzZWVudGVyOiJvbk1vdXNlRW50ZXIiLG1vdXNlbGVh
dmU6Im9uTW91c2VMZWF2PQplIix9LG9uTW91c2VFbnRlcjpmdW5jdGlvbihiKXt2YXIgYT0zRHRo
aXMubW9kZWw7aWYoIWEudGVybWluYWwuY29ubmVjdGVkKCk9CiYmYS5tYXBPdmVyLmlzQ29sbGVj
dGlvbil7dGhpcy4kZWwuY3NzKCJjb2xvciIsInJlZCIpfX0sb25Nb3VzZUxlYXZlOmZ1bmN0aT0K
b24oYSl7dGhpcy4kZWwuY3NzKCJjb2xvciIsImJsYWNrIil9LG9uQ2xpY2s6ZnVuY3Rpb24oYil7
dmFyIGE9M0R0aGlzLm1vZGVsPQo7aWYoIWEudGVybWluYWwuY29ubmVjdGVkKCkmJmEubWFwT3Zl
ci5pc0NvbGxlY3Rpb24pe2EudGVybWluYWwucmVzZXRNYXBwaW49CmcoKX19LH0pO3ZhciBJbnB1
dFRlcm1pbmFsTWFwcGluZz0zRFRlcm1pbmFsTWFwcGluZzt2YXIgSW5wdXRDb2xsZWN0aW9uVGVy
bT0KaW5hbE1hcHBpbmc9M0RUZXJtaW5hbE1hcHBpbmc7dmFyIE91dHB1dFRlcm1pbmFsTWFwcGlu
Zz0zRFRlcm1pbmFsTWFwcGluZzt2PQphciBPdXRwdXRUZXJtaW5hbE1hcHBpbmdWaWV3PTNEVGVy
bWluYWxNYXBwaW5nVmlldzt2YXIgSW5wdXRDb2xsZWN0aW9uVGVybWk9Cm5hbE1hcHBpbmdWaWV3
PTNESW5wdXRUZXJtaW5hbE1hcHBpbmdWaWV3O3ZhciBPdXRwdXRDb2xsZWN0aW9uVGVybWluYWxN
YXBwaT0Kbmc9M0RUZXJtaW5hbE1hcHBpbmc7dmFyIE91dHB1dENvbGxlY3Rpb25UZXJtaW5hbE1h
cHBpbmdWaWV3PTNEVGVybWluYWxNYXBwPQppbmdWaWV3O3ZhciBUZXJtaW5hbD0zREJhY2tib25l
Lk1vZGVsLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbihhKXt0aGlzLmU9CmxlbWVudD0zRGEu
ZWxlbWVudDt0aGlzLmNvbm5lY3RvcnM9M0RbXX0sY29ubmVjdDpmdW5jdGlvbihhKXt0aGlzLmNv
bm5lY3Rvcj0Kcy5wdXNoKGEpO2lmKHRoaXMubm9kZSl7dGhpcy5ub2RlLm1hcmtDaGFuZ2VkKCl9
fSxkaXNjb25uZWN0OmZ1bmN0aW9uKGEpe3RoPQppcy5jb25uZWN0b3JzLnNwbGljZSgkLmluQXJy
YXkoYSx0aGlzLmNvbm5lY3RvcnMpLDEpO2lmKHRoaXMubm9kZSl7dGhpcy5ub2Q9CmUubWFya0No
YW5nZWQoKTt0aGlzLnJlc2V0TWFwcGluZ0lmTmVlZGVkKCl9fSxyZWRyYXc6ZnVuY3Rpb24oKXsk
LmVhY2godGhpcz0KLmNvbm5lY3RvcnMsZnVuY3Rpb24oYSxiKXtiLnJlZHJhdygpfSl9LGRlc3Ry
b3k6ZnVuY3Rpb24oKXskLmVhY2godGhpcy5jb25uPQplY3RvcnMuc2xpY2UoKSxmdW5jdGlvbihh
LGIpe2IuZGVzdHJveSgpfSl9LGRlc3Ryb3lJbnZhbGlkQ29ubmVjdGlvbnM6ZnVuY3Q9Cmlvbigp
e18uZWFjaCh0aGlzLmNvbm5lY3RvcnMsZnVuY3Rpb24oYSl7YS5kZXN0cm95SWZJbnZhbGlkKCl9
KX0sc2V0TWFwT3Zlcj0KOmZ1bmN0aW9uKGEpe2lmKHRoaXMubXVsdGlwbGUpe3JldHVybn1pZigh
dGhpcy5tYXBPdmVyKCkuZXF1YWwoYSkpe3RoaXMudGVyPQptaW5hbE1hcHBpbmcuc2V0TWFwT3Zl
cihhKTtfLmVhY2godGhpcy5ub2RlLm91dHB1dF90ZXJtaW5hbHMsZnVuY3Rpb24oYil7Yi49CnNl
dE1hcE92ZXIoYSl9KX19LG1hcE92ZXI6ZnVuY3Rpb24oKXtpZighdGhpcy50ZXJtaW5hbE1hcHBp
bmcpe3JldHVybiBOVUxMXz0KQ09MTEVDVElPTl9UWVBFX0RFU0NSSVBUSU9OfWVsc2V7cmV0dXJu
IHRoaXMudGVybWluYWxNYXBwaW5nLm1hcE92ZXJ9fSxpc01hPQpwcGVkT3ZlcjpmdW5jdGlvbigp
e3JldHVybiB0aGlzLnRlcm1pbmFsTWFwcGluZyYmdGhpcy50ZXJtaW5hbE1hcHBpbmcubWFwT3Y9
CmVyLmlzQ29sbGVjdGlvbn0scmVzZXRNYXBwaW5nOmZ1bmN0aW9uKCl7dGhpcy50ZXJtaW5hbE1h
cHBpbmcuZGlzYWJsZU1hcE92ZT0KcigpfSxyZXNldE1hcHBpbmdJZk5lZWRlZDpmdW5jdGlvbigp
e30sfSk7dmFyIE91dHB1dFRlcm1pbmFsPTNEVGVybWluYWwuZXh0PQplbmQoe2luaXRpYWxpemU6
ZnVuY3Rpb24oYSl7VGVybWluYWwucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLGEpO3Ro
aXM9Ci5kYXRhdHlwZXM9M0RhLmRhdGF0eXBlc30scmVzZXRNYXBwaW5nSWZOZWVkZWQ6ZnVuY3Rp
b24oKXtpZighdGhpcy5ub2RlLmhhcz0KQ29ubmVjdGVkT3V0cHV0VGVybWluYWxzKCkmJiF0aGlz
Lm5vZGUuaGFzQ29ubmVjdGVkTWFwcGVkSW5wdXRUZXJtaW5hbHMoKSl7PQpfLmVhY2godGhpcy5u
b2RlLm1hcHBlZElucHV0VGVybWluYWxzKCksZnVuY3Rpb24oYil7Yi5yZXNldE1hcHBpbmdJZk5l
ZWRlZCg9Cil9KX12YXIgYT0zRCF0aGlzLm5vZGUuaGFzTWFwcGVkT3ZlcklucHV0VGVybWluYWxz
KCk7aWYoYSl7dGhpcy5yZXNldE1hcHBpbj0KZygpfX0scmVzZXRNYXBwaW5nOmZ1bmN0aW9uKCl7
dGhpcy50ZXJtaW5hbE1hcHBpbmcuZGlzYWJsZU1hcE92ZXIoKTtfLmVhY2goPQp0aGlzLmNvbm5l
Y3RvcnMsZnVuY3Rpb24oYSl7dmFyIGI9M0RhLmhhbmRsZTI7aWYoYil7Yi5yZXNldE1hcHBpbmdJ
Zk5lZWRlZCg9Cik7YS5kZXN0cm95SWZJbnZhbGlkKCl9fSl9fSk7dmFyIEJhc2VJbnB1dFRlcm1p
bmFsPTNEVGVybWluYWwuZXh0ZW5kKHtpbml0aT0KYWxpemU6ZnVuY3Rpb24oYSl7VGVybWluYWwu
cHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLGEpO3RoaXMudXBkYXRlKGEuPQppbnB1dCl9
LGNhbkFjY2VwdDpmdW5jdGlvbihhKXtpZih0aGlzLl9pbnB1dEZpbGxlZCgpKXtyZXR1cm4gZmFs
c2V9ZWxzZXtyZXQ9CnVybiB0aGlzLmF0dGFjaGFibGUoYSl9fSxyZXNldE1hcHBpbmdJZk5lZWRl
ZDpmdW5jdGlvbigpe3ZhciBiPTNEdGhpcy5tYXBPdj0KZXIoKTtpZighYi5pc0NvbGxlY3Rpb24p
e3JldHVybn12YXIgYT0zRHRoaXMubm9kZS5oYXNDb25uZWN0ZWRNYXBwZWRJbnB1dFRlPQpybWlu
YWxzKCl8fCghdGhpcy5ub2RlLmhhc0Nvbm5lY3RlZE91dHB1dFRlcm1pbmFscygpKTtpZihhKXt0
aGlzLnJlc2V0TWFwcGk9Cm5nKCl9fSxyZXNldE1hcHBpbmc6ZnVuY3Rpb24oKXt0aGlzLnRlcm1p
bmFsTWFwcGluZy5kaXNhYmxlTWFwT3ZlcigpO2lmKCF0aD0KaXMubm9kZS5oYXNNYXBwZWRPdmVy
SW5wdXRUZXJtaW5hbHMoKSl7Xy5lYWNoKHRoaXMubm9kZS5vdXRwdXRfdGVybWluYWxzLGZ1PQpu
Y3Rpb24oYSl7YS5yZXNldE1hcHBpbmcoKX0pfX0sY29ubmVjdGVkOmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuY29ubmVjdG9ycy49Cmxlbmd0aCE9M0Q9M0QwfSxfaW5wdXRGaWxsZWQ6ZnVuY3Rpb24o
KXt2YXIgYTtpZighdGhpcy5jb25uZWN0ZWQoKSl7YT0zRGZhbD0Kc2V9ZWxzZXtpZih0aGlzLm11
bHRpcGxlKXtpZih0aGlzLl9jb2xsZWN0aW9uQXR0YWNoZWQoKSl7aW5wdXRzRmlsbGVkPTNEdHJ1
PQplfWVsc2V7YT0zRGZhbHNlfX1lbHNle2E9M0R0cnVlfX1yZXR1cm4gYX0sX2NvbGxlY3Rpb25B
dHRhY2hlZDpmdW5jdGlvbigpe2k9CmYoIXRoaXMuY29ubmVjdGVkKCkpe3JldHVybiBmYWxzZX1l
bHNle3ZhciBhPTNEdGhpcy5jb25uZWN0b3JzWzBdLmhhbmRsZTE7aT0KZighYSl7cmV0dXJuIGZh
bHNlfWVsc2V7aWYoYS5pc0RhdGFDb2xsZWN0aW9uSW5wdXR8fGEuaXNNYXBwZWRPdmVyKCl8fGEu
ZGF0PQphdHlwZXMuaW5kZXhPZigiaW5wdXRfY29sbGVjdGlvbiIpPjApe3JldHVybiB0cnVlfWVs
c2V7cmV0dXJuIGZhbHNlfX19fSxfbWE9CnBwaW5nQ29uc3RyYWludHM6ZnVuY3Rpb24oKXtpZigh
dGhpcy5ub2RlKXtyZXR1cm5bXX12YXIgYj0zRHRoaXMubWFwT3ZlcigpOz0KaWYoYi5pc0NvbGxl
Y3Rpb24pe3JldHVybltiXX12YXIgYT0zRFtdO2lmKCF0aGlzLm5vZGUuaGFzQ29ubmVjdGVkT3V0
cHV0VGVyPQptaW5hbHMoKSl7Xy5lYWNoKHRoaXMubm9kZS5jb25uZWN0ZWRNYXBwZWRJbnB1dFRl
cm1pbmFscygpLGZ1bmN0aW9uKGMpe2EucHU9CnNoKGMubWFwT3ZlcigpKX0pfWVsc2V7YS5wdXNo
KF8uZmlyc3QoXy52YWx1ZXModGhpcy5ub2RlLm91dHB1dF90ZXJtaW5hbHMpKT0KLm1hcE92ZXIo
KSl9cmV0dXJuIGF9LF9wcm9kdWNlc0FjY2VwdGFibGVEYXRhdHlwZTpmdW5jdGlvbihhKXtmb3Io
dmFyIGMgaW4gPQp0aGlzLmRhdGF0eXBlcyl7dmFyIGY9M0RuZXcgQXJyYXkoKTtmPTNEZi5jb25j
YXQoYS5kYXRhdHlwZXMpO2lmKGEubm9kZS5wb3M9CnRfam9iX2FjdGlvbnMpe2Zvcih2YXIgZCBp
biBhLm5vZGUucG9zdF9qb2JfYWN0aW9ucyl7dmFyIGc9M0RhLm5vZGUucG9zdF9qbz0KYl9hY3Rp
b25zW2RdO2lmKGcuYWN0aW9uX3R5cGU9M0Q9M0QiQ2hhbmdlRGF0YXR5cGVBY3Rpb24iJiYoZy5v
dXRwdXRfbmFtZT0KPTNEPTNEIiJ8fGcub3V0cHV0X25hbWU9M0Q9M0RhLm5hbWUpJiZnLmFjdGlv
bl9hcmd1bWVudHMpe2YucHVzaChnLmFjdGlvbl9hPQpyZ3VtZW50cy5uZXd0eXBlKX19fWZvcih2
YXIgYiBpbiBmKXt2YXIgaD0zRGZbYl07aWYoaD0zRD0zRCJpbnB1dCJ8fGg9M0Q9M0Q9CiJpbnB1
dF9jb2xsZWN0aW9uInx8aXNzdWJ0eXBlKGZbYl0sdGhpcy5kYXRhdHlwZXNbY10pKXtyZXR1cm4g
dHJ1ZX19fXJldHVybj0KIGZhbHNlfSxfb3RoZXJDb2xsZWN0aW9uVHlwZTpmdW5jdGlvbihhKXt2
YXIgYz0zRE5VTExfQ09MTEVDVElPTl9UWVBFX0RFU0NSPQpJUFRJT047aWYoYS5pc0RhdGFDb2xs
ZWN0aW9uSW5wdXQpe2M9M0RhLmNvbGxlY3Rpb25UeXBlfWVsc2V7dmFyIGI9M0RhLm1hcE89CnZl
cigpO2lmKGIuaXNDb2xsZWN0aW9uKXtjPTNEYn19cmV0dXJuIGN9LH0pO3ZhciBJbnB1dFRlcm1p
bmFsPTNEQmFzZUlucHV0VD0KZXJtaW5hbC5leHRlbmQoe3VwZGF0ZTpmdW5jdGlvbihhKXt0aGlz
LmRhdGF0eXBlcz0zRGEuZXh0ZW5zaW9uczt0aGlzLm11bHRpPQpwbGU9M0RhLm11bHRpcGxlO3Ro
aXMuY29sbGVjdGlvbj0zRGZhbHNlfSxjb25uZWN0OmZ1bmN0aW9uKGEpe0Jhc2VJbnB1dFRlcm09
CmluYWwucHJvdG90eXBlLmNvbm5lY3QuY2FsbCh0aGlzLGEpO3ZhciBiPTNEYS5oYW5kbGUxO2lm
KCFiKXtyZXR1cm59dmFyIGM9Cj0zRHRoaXMuX290aGVyQ29sbGVjdGlvblR5cGUoYik7aWYoYy5p
c0NvbGxlY3Rpb24pe3RoaXMuc2V0TWFwT3ZlcihjKX19LGF0dD0KYWNoYWJsZTpmdW5jdGlvbihi
KXt2YXIgZD0zRHRoaXMuX290aGVyQ29sbGVjdGlvblR5cGUoYik7dmFyIGE9M0R0aGlzLm1hcE92
PQplcigpO2lmKGQuaXNDb2xsZWN0aW9uKXtpZih0aGlzLm11bHRpcGxlKXtpZih0aGlzLmNvbm5l
Y3RlZCgpJiYhdGhpcy5fY29sbGU9CmN0aW9uQXR0YWNoZWQoKSl7cmV0dXJuIGZhbHNlfWlmKGQu
cmFuaz0zRD0zRDEpe3JldHVybiB0aGlzLl9wcm9kdWNlc0FjY2VwdD0KYWJsZURhdGF0eXBlKGIp
fWVsc2V7cmV0dXJuIGZhbHNlfX1pZihhLmlzQ29sbGVjdGlvbiYmYS5jYW5NYXRjaChkKSl7cmV0
dXJuPQogdGhpcy5fcHJvZHVjZXNBY2NlcHRhYmxlRGF0YXR5cGUoYil9ZWxzZXt2YXIgYz0zRHRo
aXMuX21hcHBpbmdDb25zdHJhaW50cyg9Cik7aWYoYy5ldmVyeShfLmJpbmQoZC5jYW5NYXRjaCxk
KSkpe3JldHVybiB0aGlzLl9wcm9kdWNlc0FjY2VwdGFibGVEYXRhdHlwZT0KKGIpfWVsc2V7cmV0
dXJuIGZhbHNlfX19ZWxzZXtpZihhLmlzQ29sbGVjdGlvbil7cmV0dXJuIGZhbHNlfX1yZXR1cm4g
dGhpcy5fPQpwcm9kdWNlc0FjY2VwdGFibGVEYXRhdHlwZShiKX19KTt2YXIgSW5wdXRDb2xsZWN0
aW9uVGVybWluYWw9M0RCYXNlSW5wdXRUZXI9Cm1pbmFsLmV4dGVuZCh7dXBkYXRlOmZ1bmN0aW9u
KGEpe3RoaXMubXVsdGlwbGU9M0RmYWxzZTt0aGlzLmNvbGxlY3Rpb249M0R0cj0KdWU7dGhpcy5k
YXRhdHlwZXM9M0RhLmV4dGVuc2lvbnM7aWYoYS5jb2xsZWN0aW9uX3R5cGUpe3RoaXMuY29sbGVj
dGlvblR5cGU9Cj0zRG5ldyBDb2xsZWN0aW9uVHlwZURlc2NyaXB0aW9uKGEuY29sbGVjdGlvbl90
eXBlKX1lbHNle3RoaXMuY29sbGVjdGlvblR5cD0KZT0zREFOWV9DT0xMRUNUSU9OX1RZUEVfREVT
Q1JJUFRJT059fSxjb25uZWN0OmZ1bmN0aW9uKGIpe0Jhc2VJbnB1dFRlcm1pbmFsPQoucHJvdG90
eXBlLmNvbm5lY3QuY2FsbCh0aGlzLGIpO3ZhciBhPTNEYi5oYW5kbGUxO2lmKCFhKXtyZXR1cm59
dmFyIGM9M0R0aGk9CnMuX2VmZmVjdGl2ZU1hcE92ZXIoYSk7dGhpcy5zZXRNYXBPdmVyKGMpfSxf
ZWZmZWN0aXZlTWFwT3ZlcjpmdW5jdGlvbihhKXt2YT0KciBiPTNEdGhpcy5jb2xsZWN0aW9uVHlw
ZTt2YXIgYz0zRHRoaXMuX290aGVyQ29sbGVjdGlvblR5cGUoYSk7aWYoIWIuY2FuTWF0PQpjaChj
KSl7cmV0dXJuIGMuZWZmZWN0aXZlTWFwT3ZlcihiKX1lbHNle3JldHVybiBOVUxMX0NPTExFQ1RJ
T05fVFlQRV9ERVNDUkk9ClBUSU9OfX0sX2VmZmVjdGl2ZUNvbGxlY3Rpb25UeXBlOmZ1bmN0aW9u
KCl7dmFyIGI9M0R0aGlzLmNvbGxlY3Rpb25UeXBlO3Zhcj0KIGE9M0R0aGlzLm1hcE92ZXIoKTty
ZXR1cm4gYS5hcHBlbmQoYil9LGF0dGFjaGFibGU6ZnVuY3Rpb24oYil7dmFyIGc9M0R0aGlzPQou
X290aGVyQ29sbGVjdGlvblR5cGUoYik7aWYoZy5pc0NvbGxlY3Rpb24pe3ZhciBmPTNEdGhpcy5f
ZWZmZWN0aXZlQ29sbGVjdGk9Cm9uVHlwZSgpO3ZhciBhPTNEdGhpcy5tYXBPdmVyKCk7aWYoZi5j
YW5NYXRjaChnKSl7cmV0dXJuIHRoaXMuX3Byb2R1Y2VzQWNjZT0KcHRhYmxlRGF0YXR5cGUoYil9
ZWxzZXtpZihhLmlzQ29sbGVjdGlvbil7cmV0dXJuIGZhbHNlfWVsc2V7aWYoZy5jYW5NYXBPdmVy
PQoodGhpcy5jb2xsZWN0aW9uVHlwZSkpe3ZhciBkPTNEdGhpcy5fZWZmZWN0aXZlTWFwT3Zlcihi
KTtpZighZC5pc0NvbGxlY3Rpb249Cil7cmV0dXJuIGZhbHNlfXZhciBjPTNEdGhpcy5fbWFwcGlu
Z0NvbnN0cmFpbnRzKCk7aWYoYy5ldmVyeShkLmNhbk1hdGNoKSl7cj0KZXR1cm4gdGhpcy5fcHJv
ZHVjZXNBY2NlcHRhYmxlRGF0YXR5cGUoYil9fX19fXJldHVybiBmYWxzZX19KTt2YXIgT3V0cHV0
Q29sPQpsZWN0aW9uVGVybWluYWw9M0RUZXJtaW5hbC5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rp
b24oYSl7VGVybWluYWwucHJvdG90eXA9CmUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsYSk7dGhpcy5k
YXRhdHlwZXM9M0RhLmRhdGF0eXBlczt0aGlzLmNvbGxlY3Rpb25UeXBlPQo9M0RuZXcgQ29sbGVj
dGlvblR5cGVEZXNjcmlwdGlvbihhLmNvbGxlY3Rpb25fdHlwZSk7dGhpcy5pc0RhdGFDb2xsZWN0
aW9uSW49CnB1dD0zRHRydWV9LHVwZGF0ZTpmdW5jdGlvbihhKXt2YXIgYj0zRG5ldyBDb2xsZWN0
aW9uVHlwZURlc2NyaXB0aW9uKGEuY29sbD0KZWN0aW9uX3R5cGUpO2lmKGIuY29sbGVjdGlvblR5
cGUhPTNEdGhpcy5jb2xsZWN0aW9uVHlwZS5jb2xsZWN0aW9uVHlwZSl7Xy5lPQphY2godGhpcy5j
b25uZWN0b3JzLGZ1bmN0aW9uKGMpe2MuZGVzdHJveSgpfSl9dGhpcy5jb2xsZWN0aW9uVHlwZT0z
RGJ9fSk7ZnU9Cm5jdGlvbiBDb25uZWN0b3IoYixhKXt0aGlzLmNhbnZhcz0zRG51bGw7dGhpcy5k
cmFnZ2luZz0zRGZhbHNlO3RoaXMuaW5uZXJfYz0Kb2xvcj0zRCIjRkZGRkZGIjt0aGlzLm91dGVy
X2NvbG9yPTNEIiNEOEIzNjUiO2lmKGImJmEpe3RoaXMuY29ubmVjdChiLGEpfX0kPQouZXh0ZW5k
KENvbm5lY3Rvci5wcm90b3R5cGUse2Nvbm5lY3Q6ZnVuY3Rpb24oYixhKXt0aGlzLmhhbmRsZTE9
M0RiO2lmKHRoaXM9Ci5oYW5kbGUxKXt0aGlzLmhhbmRsZTEuY29ubmVjdCh0aGlzKX10aGlzLmhh
bmRsZTI9M0RhO2lmKHRoaXMuaGFuZGxlMil7dGhpcz0KLmhhbmRsZTIuY29ubmVjdCh0aGlzKX19
LGRlc3Ryb3k6ZnVuY3Rpb24oKXtpZih0aGlzLmhhbmRsZTEpe3RoaXMuaGFuZGxlMS5kPQppc2Nv
bm5lY3QodGhpcyl9aWYodGhpcy5oYW5kbGUyKXt0aGlzLmhhbmRsZTIuZGlzY29ubmVjdCh0aGlz
KX0kKHRoaXMuY2FudmE9CnMpLnJlbW92ZSgpfSxkZXN0cm95SWZJbnZhbGlkOmZ1bmN0aW9uKCl7
aWYodGhpcy5oYW5kbGUxJiZ0aGlzLmhhbmRsZTImJiF0aD0KaXMuaGFuZGxlMi5hdHRhY2hhYmxl
KHRoaXMuaGFuZGxlMSkpe3RoaXMuZGVzdHJveSgpfX0scmVkcmF3OmZ1bmN0aW9uKCl7dmFyPQog
Zj0zRCQoIiNjYW52YXMtY29udGFpbmVyIik7aWYoIXRoaXMuY2FudmFzKXt0aGlzLmNhbnZhcz0z
RGRvY3VtZW50LmNyZWF0ZUU9CmxlbWVudCgiY2FudmFzIik7aWYod2luZG93Lkdfdm1sQ2FudmFz
TWFuYWdlcil7R192bWxDYW52YXNNYW5hZ2VyLmluaXRFbGVtZT0KbnQodGhpcy5jYW52YXMpfWYu
YXBwZW5kKCQodGhpcy5jYW52YXMpKTtpZih0aGlzLmRyYWdnaW5nKXt0aGlzLmNhbnZhcy5zdHls
PQplLnpJbmRleD0zRCIzMDAifX12YXIgdj0zRGZ1bmN0aW9uKGMpe3JldHVybiAkKGMpLm9mZnNl
dCgpLmxlZnQtZi5vZmZzZXQoKS49CmxlZnR9O3ZhciBwPTNEZnVuY3Rpb24oYyl7cmV0dXJuICQo
Yykub2Zmc2V0KCkudG9wLWYub2Zmc2V0KCkudG9wfTtpZighdGhpcz0KLmhhbmRsZTF8fCF0aGlz
LmhhbmRsZTIpe3JldHVybn12YXIgbz0zRHYodGhpcy5oYW5kbGUxLmVsZW1lbnQpKzU7dmFyIG49
M0RwPQoodGhpcy5oYW5kbGUxLmVsZW1lbnQpKzU7dmFyIHg9M0R2KHRoaXMuaGFuZGxlMi5lbGVt
ZW50KSs1O3ZhciB1PTNEcCh0aGlzLmg9CmFuZGxlMi5lbGVtZW50KSs1O3ZhciBrPTNEMTAwO3Zh
ciByPTNETWF0aC5taW4obyx4KTt2YXIgYT0zRE1hdGgubWF4KG8seCk7dj0KYXIgcT0zRE1hdGgu
bWluKG4sdSk7dmFyIEI9M0RNYXRoLm1heChuLHUpO3ZhciBkPTNETWF0aC5taW4oTWF0aC5tYXgo
TWF0aC5hPQpicyhCLXEpLzIsMTAwKSwzMDApO3ZhciB3PTNEci1rO3ZhciBBPTNEcS1rO3ZhciB5
PTNEYS1yKzIqazt2YXIgcz0zREItcSsyKms9Cjt0aGlzLmNhbnZhcy5zdHlsZS5sZWZ0PTNEdysi
cHgiO3RoaXMuY2FudmFzLnN0eWxlLnRvcD0zREErInB4Ijt0aGlzLmNhbnZhcz0KLnNldEF0dHJp
YnV0ZSgid2lkdGgiLHkpO3RoaXMuY2FudmFzLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixzKTtvLT0z
RHc7bi09M0RBPQo7eC09M0R3O3UtPTNEQTt2YXIgej0zRHRoaXMuY2FudmFzLmdldENvbnRleHQo
IjJkIiksaD0zRG51bGwsbD0zRG51bGw7dmFyIGc9Cj0zRDE7aWYodGhpcy5oYW5kbGUxJiZ0aGlz
LmhhbmRsZTEuaXNNYXBwZWRPdmVyKCkpe3ZhciBoPTNEWy02LC0zLDAsMyw2XTtnPQo9M0Q1fWVs
c2V7dmFyIGg9M0RbMF19aWYodGhpcy5oYW5kbGUyJiZ0aGlzLmhhbmRsZTIuaXNNYXBwZWRPdmVy
KCkpe3ZhciBsPQo9M0RbLTYsLTMsMCwzLDZdO2c9M0Q1fWVsc2V7dmFyIGw9M0RbMF19dmFyIGI9
M0R0aGlzO2Zvcih2YXIgdD0zRDA7dDxnO3QrKyk9Cnt2YXIgbT0zRDUsaj0zRDc7aWYoaC5sZW5n
dGg+MXx8bC5sZW5ndGg+MSl7bT0zRDE7aj0zRDN9Yi5kcmF3X291dGxpbmVkX2N1cj0KdmUobyxu
LHgsdSxkLG0saixoW3QlaC5sZW5ndGhdLGxbdCVsLmxlbmd0aF0pfX0sZHJhd19vdXRsaW5lZF9j
dXJ2ZTpmdW5jdGlvPQpuKGosaSxsLGssYSxiLGYsZyxkKXt2YXIgZz0zRGd8fDA7dmFyIGQ9M0Rk
fHwwO3ZhciBoPTNEdGhpcy5jYW52YXMuZ2V0Q29udGU9Cnh0KCIyZCIpO2gubGluZUNhcD0zRCJy
b3VuZCI7aC5zdHJva2VTdHlsZT0zRHRoaXMub3V0ZXJfY29sb3I7aC5saW5lV2lkdGg9Cj0zRGY7
aC5iZWdpblBhdGgoKTtoLm1vdmVUbyhqLGkrZyk7aC5iZXppZXJDdXJ2ZVRvKGorYSxpK2csbC1h
LGsrZCxsLGsrZCk7aD0KLnN0cm9rZSgpO2guc3Ryb2tlU3R5bGU9M0R0aGlzLmlubmVyX2NvbG9y
O2gubGluZVdpZHRoPTNEYjtoLmJlZ2luUGF0aCgpO2guPQptb3ZlVG8oaixpK2cpO2guYmV6aWVy
Q3VydmVUbyhqK2EsaStnLGwtYSxrK2QsbCxrK2QpO2guc3Ryb2tlKCl9fSk7dmFyIE5vZGU9Cj0z
REJhY2tib25lLk1vZGVsLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbihhKXt0aGlzLmVsZW1l
bnQ9M0RhLmVsZW1lbnQ7dD0KaGlzLmlucHV0X3Rlcm1pbmFscz0zRHt9O3RoaXMub3V0cHV0X3Rl
cm1pbmFscz0zRHt9O3RoaXMudG9vbF9lcnJvcnM9M0R7fX0sPQpjb25uZWN0ZWRPdXRwdXRUZXJt
aW5hbHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29ubmVjdGVkVGVybWluYWxzKHRoaXMub3U9
CnRwdXRfdGVybWluYWxzKX0sX2Nvbm5lY3RlZFRlcm1pbmFsczpmdW5jdGlvbihiKXt2YXIgYT0z
RFtdOyQuZWFjaChiLGZ1bmN0aT0Kb24oYyxkKXtpZihkLmNvbm5lY3RvcnMubGVuZ3RoPjApe2Eu
cHVzaChkKX19KTtyZXR1cm4gYX0saGFzQ29ubmVjdGVkT3V0cHV0PQpUZXJtaW5hbHM6ZnVuY3Rp
b24oKXt2YXIgYT0zRHRoaXMub3V0cHV0X3Rlcm1pbmFscztmb3IodmFyIGIgaW4gYSl7aWYoYVti
XS49CmNvbm5lY3RvcnMubGVuZ3RoPjApe3JldHVybiB0cnVlfX1yZXR1cm4gZmFsc2V9LGNvbm5l
Y3RlZE1hcHBlZElucHV0VGVybWluYT0KbHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY29ubmVj
dGVkTWFwcGVkVGVybWluYWxzKHRoaXMuaW5wdXRfdGVybWluYWxzKX0sPQpoYXNDb25uZWN0ZWRN
YXBwZWRJbnB1dFRlcm1pbmFsczpmdW5jdGlvbigpe3ZhciBjPTNEdGhpcy5pbnB1dF90ZXJtaW5h
bHM7Zm89CnIodmFyIGIgaW4gYyl7dmFyIGE9M0RjW2JdO2lmKGEuY29ubmVjdG9ycy5sZW5ndGg+
MCYmYS5pc01hcHBlZE92ZXIoKSl7cmV0dT0Kcm4gdHJ1ZX19cmV0dXJuIGZhbHNlfSxfY29ubmVj
dGVkTWFwcGVkVGVybWluYWxzOmZ1bmN0aW9uKGIpe3ZhciBhPTNEW107JC5lPQphY2goYixmdW5j
dGlvbihjLGQpe3ZhciBmPTNEZC5tYXBPdmVyKCk7aWYoZi5pc0NvbGxlY3Rpb24pe2lmKGQuY29u
bmVjdG9ycy49Cmxlbmd0aD4wKXthLnB1c2goZCl9fX0pO3JldHVybiBhfSxtYXBwZWRJbnB1dFRl
cm1pbmFsczpmdW5jdGlvbigpe3JldHVybiB0aD0KaXMuX21hcHBlZFRlcm1pbmFscyh0aGlzLmlu
cHV0X3Rlcm1pbmFscyl9LF9tYXBwZWRUZXJtaW5hbHM6ZnVuY3Rpb24oYil7dmFyPQogYT0zRFtd
OyQuZWFjaChiLGZ1bmN0aW9uKGMsZCl7dmFyIGY9M0RkLm1hcE92ZXIoKTtpZihmLmlzQ29sbGVj
dGlvbil7YS5wdXM9CmgoZCl9fSk7cmV0dXJuIGF9LGhhc01hcHBlZE92ZXJJbnB1dFRlcm1pbmFs
czpmdW5jdGlvbigpe3ZhciBhPTNEZmFsc2U7Xy5lYT0KY2godGhpcy5pbnB1dF90ZXJtaW5hbHMs
ZnVuY3Rpb24oYil7dmFyIGM9M0RiLm1hcE92ZXIoKTtpZihjLmlzQ29sbGVjdGlvbil7PQphPTNE
dHJ1ZX19KTtyZXR1cm4gYX0scmVkcmF3OmZ1bmN0aW9uKCl7JC5lYWNoKHRoaXMuaW5wdXRfdGVy
bWluYWxzLGZ1bmN0aW89Cm4oYSxiKXtiLnJlZHJhdygpfSk7JC5lYWNoKHRoaXMub3V0cHV0X3Rl
cm1pbmFscyxmdW5jdGlvbihhLGIpe2IucmVkcmF3KCl9KT0KfSxkZXN0cm95OmZ1bmN0aW9uKCl7
JC5lYWNoKHRoaXMuaW5wdXRfdGVybWluYWxzLGZ1bmN0aW9uKGEsYil7Yi5kZXN0cm95KCl9PQop
OyQuZWFjaCh0aGlzLm91dHB1dF90ZXJtaW5hbHMsZnVuY3Rpb24oYSxiKXtiLmRlc3Ryb3koKX0p
O3dvcmtmbG93LnJlbW92ZV89Cm5vZGUodGhpcyk7JCh0aGlzLmVsZW1lbnQpLnJlbW92ZSgpfSxt
YWtlX2FjdGl2ZTpmdW5jdGlvbigpeyQodGhpcy5lbGVtZW50KT0KLmFkZENsYXNzKCJ0b29sRm9y
bS1hY3RpdmUiKX0sbWFrZV9pbmFjdGl2ZTpmdW5jdGlvbigpe3ZhciBhPTNEdGhpcy5lbGVtZW50
PQouZ2V0KDApOyhmdW5jdGlvbihiKXtiLnJlbW92ZUNoaWxkKGEpO2IuYXBwZW5kQ2hpbGQoYSl9
KShhLnBhcmVudE5vZGUpOyQoYSk9Ci5yZW1vdmVDbGFzcygidG9vbEZvcm0tYWN0aXZlIil9LGlu
aXRfZmllbGRfZGF0YTpmdW5jdGlvbihiKXtpZihiLnR5cGUpe3RoaT0Kcy50eXBlPTNEYi50eXBl
fXRoaXMubmFtZT0zRGIubmFtZTt0aGlzLmZvcm1faHRtbD0zRGIuZm9ybV9odG1sO3RoaXMudG9v
bF9zPQp0YXRlPTNEYi50b29sX3N0YXRlO3RoaXMudG9vbF9lcnJvcnM9M0RiLnRvb2xfZXJyb3Jz
O3RoaXMudG9vbHRpcD0zRGIudG9vbHQ9CmlwP2IudG9vbHRpcDoiIjt0aGlzLmFubm90YXRpb249
M0RiLmFubm90YXRpb247dGhpcy5wb3N0X2pvYl9hY3Rpb25zPTNEYi5wbz0Kc3Rfam9iX2FjdGlv
bnM/Yi5wb3N0X2pvYl9hY3Rpb25zOnt9O3RoaXMubGFiZWw9M0RiLmxhYmVsO3RoaXMudXVpZD0z
RGIudXVpPQpkO3RoaXMud29ya2Zsb3dfb3V0cHV0cz0zRGIud29ya2Zsb3dfb3V0cHV0cz9iLndv
cmtmbG93X291dHB1dHM6W107dmFyIGE9M0Q9CnRoaXM7dmFyIGM9M0RuZXcgTm9kZVZpZXcoe2Vs
OnRoaXMuZWxlbWVudFswXSxub2RlOmEsfSk7YS5ub2RlVmlldz0zRGM7JC5lYT0KY2goYi5kYXRh
X2lucHV0cyxmdW5jdGlvbihmLGQpe2MuYWRkRGF0YUlucHV0KGQpfSk7aWYoKGIuZGF0YV9pbnB1
dHMubGVuZ3RoPQo+MCkmJihiLmRhdGFfb3V0cHV0cy5sZW5ndGg+MCkpe2MuYWRkUnVsZSgpfSQu
ZWFjaChiLmRhdGFfb3V0cHV0cyxmdW5jdGlvbig9CmYsZCl7Yy5hZGREYXRhT3V0cHV0KGQpfSk7
Yy5yZW5kZXIoKTt3b3JrZmxvdy5ub2RlX2NoYW5nZWQodGhpcyx0cnVlKX0sdXBkYT0KdGVfZmll
bGRfZGF0YTpmdW5jdGlvbihkKXt2YXIgYz0zRHRoaXM7bm9kZVZpZXc9M0RjLm5vZGVWaWV3O3Ro
aXMudG9vbF9zdGF0PQplPTNEZC50b29sX3N0YXRlO3RoaXMuZm9ybV9odG1sPTNEZC5mb3JtX2h0
bWw7dGhpcy50b29sX2Vycm9ycz0zRGQudG9vbF9lcnI9Cm9yczt0aGlzLmFubm90YXRpb249M0Rk
LmFubm90YXRpb247aWYoInBvc3Rfam9iX2FjdGlvbnMiIGluIGQpe3ZhciBmPTNEJC5wYT0KcnNl
SlNPTihkLnBvc3Rfam9iX2FjdGlvbnMpO3RoaXMucG9zdF9qb2JfYWN0aW9ucz0zRGY/Zjp7fX1j
Lm5vZGVWaWV3LnJlbmRlPQpyVG9vbEVycm9ycygpO3ZhciBnPTNEbm9kZVZpZXcuJCgiZGl2Lmlu
cHV0cyIpO3ZhciBhPTNEbm9kZVZpZXcubmV3SW5wdXRzRGk9CnYoKTt2YXIgYj0zRHt9O18uZWFj
aChkLmRhdGFfaW5wdXRzLGZ1bmN0aW9uKGgpe3ZhciBpPTNEYy5ub2RlVmlldy5hZGREYXRhST0K
bnB1dChoLGEpO2JbaC5uYW1lXT0zRGl9KTtfLmVhY2goXy5kaWZmZXJlbmNlKF8udmFsdWVzKG5v
ZGVWaWV3LnRlcm1pbmFsVmllPQp3cyksXy52YWx1ZXMoYikpLGZ1bmN0aW9uKGgpe2guZWwudGVy
bWluYWwuZGVzdHJveSgpfSk7bm9kZVZpZXcudGVybWluYWxWaWU9CndzPTNEYjtpZihkLmRhdGFf
b3V0cHV0cy5sZW5ndGg9M0Q9M0QxJiYiY29sbGVjdGlvbl90eXBlIiBpbiBkLmRhdGFfb3V0cHV0
cz0KWzBdKXtub2RlVmlldy51cGRhdGVEYXRhT3V0cHV0KGQuZGF0YV9vdXRwdXRzWzBdKX1nLnJl
cGxhY2VXaXRoKGEpO3RoaXMubWFyPQprQ2hhbmdlZCgpO3RoaXMucmVkcmF3KCl9LGVycm9yOmZ1
bmN0aW9uKGQpe3ZhciBhPTNEJCh0aGlzLmVsZW1lbnQpLmZpbmQoIi49CnRvb2xGb3JtQm9keSIp
O2EuZmluZCgiZGl2IikucmVtb3ZlKCk7dmFyIGM9M0QiPGRpdiBzdHlsZT0zRCdjb2xvcjogcmVk
OyB0ZT0KeHQtc3R5bGU6IGl0YWxpYzsnPiIrZCsiPC9kaXY+Ijt0aGlzLmZvcm1faHRtbD0zRGM7
YS5odG1sKGMpO3dvcmtmbG93Lm5vZGVfPQpjaGFuZ2VkKHRoaXMpfSxtYXJrQ2hhbmdlZDpmdW5j
dGlvbigpe3dvcmtmbG93Lm5vZGVfY2hhbmdlZCh0aGlzKX19KTtmdW5jdGk9Cm9uIFdvcmtmbG93
KGEpe3RoaXMuY2FudmFzX2NvbnRhaW5lcj0zRGE7dGhpcy5pZF9jb3VudGVyPTNEMDt0aGlzLm5v
ZGVzPTNEez0KfTt0aGlzLm5hbWU9M0RudWxsO3RoaXMuaGFzX2NoYW5nZXM9M0RmYWxzZTt0aGlz
LmFjdGl2ZV9mb3JtX2hhc19jaGFuZ2VzPTNEPQpmYWxzZX0kLmV4dGVuZChXb3JrZmxvdy5wcm90
b3R5cGUse2FkZF9ub2RlOmZ1bmN0aW9uKGEpe2EuaWQ9M0R0aGlzLmlkX2NvdW49CnRlcjthLmVs
ZW1lbnQuYXR0cigiaWQiLCJ3Zi1ub2RlLXN0ZXAtIithLmlkKTt0aGlzLmlkX2NvdW50ZXIrKzt0
aGlzLm5vZGVzWz0KYS5pZF09M0RhO3RoaXMuaGFzX2NoYW5nZXM9M0R0cnVlO2Eud29ya2Zsb3c9
M0R0aGlzfSxyZW1vdmVfbm9kZTpmdW5jdGlvbihhPQope2lmKHRoaXMuYWN0aXZlX25vZGU9M0Q9
M0RhKXt0aGlzLmNsZWFyX2FjdGl2ZV9ub2RlKCl9ZGVsZXRlIHRoaXMubm9kZXNbYS49CmlkXTt0
aGlzLmhhc19jaGFuZ2VzPTNEdHJ1ZX0scmVtb3ZlX2FsbDpmdW5jdGlvbigpe3dmPTNEdGhpczsk
LmVhY2godGhpcy5ubz0KZGVzLGZ1bmN0aW9uKGIsYSl7YS5kZXN0cm95KCk7d2YucmVtb3ZlX25v
ZGUoYSl9KX0scmVjdGlmeV93b3JrZmxvd19vdXRwdXRzPQo6ZnVuY3Rpb24oKXt2YXIgYj0zRGZh
bHNlO3ZhciBhPTNEZmFsc2U7JC5lYWNoKHRoaXMubm9kZXMsZnVuY3Rpb24oYyxkKXtpZig9CmQu
d29ya2Zsb3dfb3V0cHV0cyYmZC53b3JrZmxvd19vdXRwdXRzLmxlbmd0aD4wKXtiPTNEdHJ1ZX0k
LmVhY2goZC5wb3N0X2pvYj0KX2FjdGlvbnMsZnVuY3Rpb24oZyxmKXtpZihmLmFjdGlvbl90eXBl
PTNEPTNEPTNEIkhpZGVEYXRhc2V0QWN0aW9uIil7YT0zRHRyPQp1ZX19KX0pO2lmKGIhPTNEPTNE
ZmFsc2V8fGEhPTNEPTNEZmFsc2UpeyQuZWFjaCh0aGlzLm5vZGVzLGZ1bmN0aW9uKGMsZyl7aWY9
CihnLnR5cGU9M0Q9M0Q9M0QidG9vbCIpe3ZhciBmPTNEZmFsc2U7aWYoZy5wb3N0X2pvYl9hY3Rp
b25zPTNEPTNEbnVsbCl7Zy5wbz0Kc3Rfam9iX2FjdGlvbnM9M0R7fTtmPTNEdHJ1ZX12YXIgZD0z
RFtdOyQuZWFjaChnLnBvc3Rfam9iX2FjdGlvbnMsZnVuY3Rpb24oPQppLGgpe2lmKGguYWN0aW9u
X3R5cGU9M0Q9M0QiSGlkZURhdGFzZXRBY3Rpb24iKXtkLnB1c2goaSl9fSk7aWYoZC5sZW5ndGg+
MCk9CnskLmVhY2goZCxmdW5jdGlvbihoLGope2Y9M0R0cnVlO2RlbGV0ZSBnLnBvc3Rfam9iX2Fj
dGlvbnNbal19KX1pZihiKXskLmVhYz0KaChnLm91dHB1dF90ZXJtaW5hbHMsZnVuY3Rpb24oaSxq
KXt2YXIgaD0zRHRydWU7JC5lYWNoKGcud29ya2Zsb3dfb3V0cHV0cyxmPQp1bmN0aW9uKGwsbSl7
aWYoai5uYW1lPTNEPTNEPTNEbSl7aD0zRGZhbHNlfX0pO2lmKGg9M0Q9M0Q9M0R0cnVlKXtmPTNE
dHJ1ZTs9CnZhciBrPTNEe2FjdGlvbl90eXBlOiJIaWRlRGF0YXNldEFjdGlvbiIsb3V0cHV0X25h
bWU6ai5uYW1lLGFjdGlvbl9hcmd1bWVudD0Kczp7fX07Zy5wb3N0X2pvYl9hY3Rpb25zWyJIaWRl
RGF0YXNldEFjdGlvbiIrai5uYW1lXT0zRG51bGw7Zy5wb3N0X2pvYl9hY3RpPQpvbnNbIkhpZGVE
YXRhc2V0QWN0aW9uIitqLm5hbWVdPTNEa319KX1pZih3b3JrZmxvdy5hY3RpdmVfbm9kZT0zRD0z
RGcmJmY9M0Q9Cj0zRD0zRHRydWUpe3dvcmtmbG93LnJlbG9hZF9hY3RpdmVfbm9kZSgpfX19KX19
LHRvX3NpbXBsZTpmdW5jdGlvbigpe3ZhciBhPQo9M0R7fTskLmVhY2godGhpcy5ub2RlcyxmdW5j
dGlvbihjLGYpe3ZhciBnPTNEe307JC5lYWNoKGYuaW5wdXRfdGVybWluYWxzLGY9CnVuY3Rpb24o
aSxqKXtnW2oubmFtZV09M0RudWxsO3ZhciBoPTNEW107JC5lYWNoKGouY29ubmVjdG9ycyxmdW5j
dGlvbihrLGwpez0KaFtrXT0zRHtpZDpsLmhhbmRsZTEubm9kZS5pZCxvdXRwdXRfbmFtZTpsLmhh
bmRsZTEubmFtZX07Z1tqLm5hbWVdPTNEaH0pfSk7PQp2YXIgYj0zRHt9O2lmKGYucG9zdF9qb2Jf
YWN0aW9ucyl7JC5lYWNoKGYucG9zdF9qb2JfYWN0aW9ucyxmdW5jdGlvbihqLGgpe3Y9CmFyIGs9
M0R7YWN0aW9uX3R5cGU6aC5hY3Rpb25fdHlwZSxvdXRwdXRfbmFtZTpoLm91dHB1dF9uYW1lLGFj
dGlvbl9hcmd1bWVudD0KczpoLmFjdGlvbl9hcmd1bWVudHN9O2JbaC5hY3Rpb25fdHlwZStoLm91
dHB1dF9uYW1lXT0zRG51bGw7YltoLmFjdGlvbl90eXBlPQoraC5vdXRwdXRfbmFtZV09M0RrfSl9
aWYoIWYud29ya2Zsb3dfb3V0cHV0cyl7Zi53b3JrZmxvd19vdXRwdXRzPTNEW119dmFyIGQ9Cj0z
RHtpZDpmLmlkLHR5cGU6Zi50eXBlLHRvb2xfaWQ6Zi50b29sX2lkLHRvb2xfc3RhdGU6Zi50b29s
X3N0YXRlLHRvb2xfZXJybz0KcnM6Zi50b29sX2Vycm9ycyxpbnB1dF9jb25uZWN0aW9uczpnLHBv
c2l0aW9uOiQoZi5lbGVtZW50KS5wb3NpdGlvbigpLGFubm90PQphdGlvbjpmLmFubm90YXRpb24s
cG9zdF9qb2JfYWN0aW9uczpmLnBvc3Rfam9iX2FjdGlvbnMsdXVpZDpmLnV1aWQsbGFiZWw6Zi49
CmxhYmVsLHdvcmtmbG93X291dHB1dHM6Zi53b3JrZmxvd19vdXRwdXRzfTthW2YuaWRdPTNEZH0p
O3JldHVybntzdGVwczphfX0sZj0Kcm9tX3NpbXBsZTpmdW5jdGlvbihiKXt3Zj0zRHRoaXM7dmFy
IGM9M0QwO3dmLm5hbWU9M0RiLm5hbWU7dmFyIGE9M0RmYWxzZTskPQouZWFjaChiLnN0ZXBzLGZ1
bmN0aW9uKGcsZil7dmFyIGQ9M0RwcmVidWlsZF9ub2RlKGYudHlwZSxmLm5hbWUsZi50b29sX2lk
KTs9CmQuaW5pdF9maWVsZF9kYXRhKGYpO2lmKGYucG9zaXRpb24pe2QuZWxlbWVudC5jc3Moe3Rv
cDpmLnBvc2l0aW9uLnRvcCxsZWZ0Oj0KZi5wb3NpdGlvbi5sZWZ0fSl9ZC5pZD0zRGYuaWQ7d2Yu
bm9kZXNbZC5pZF09M0RkO2M9M0RNYXRoLm1heChjLHBhcnNlSW50KGcpPQopO2lmKCFhJiZkLnR5
cGU9M0Q9M0Q9M0QidG9vbCIpe2lmKGQud29ya2Zsb3dfb3V0cHV0cy5sZW5ndGg+MCl7YT0zRHRy
dWV9ZWw9CnNleyQuZWFjaChkLnBvc3Rfam9iX2FjdGlvbnMsZnVuY3Rpb24oaSxoKXtpZihoLmFj
dGlvbl90eXBlPTNEPTNEPTNEIkhpZGVEYT0KdGFzZXRBY3Rpb24iKXthPTNEdHJ1ZX19KX19fSk7
d2YuaWRfY291bnRlcj0zRGMrMTskLmVhY2goYi5zdGVwcyxmdW5jdGlvbihnPQosZil7dmFyIGQ9
M0R3Zi5ub2Rlc1tnXTskLmVhY2goZi5pbnB1dF9jb25uZWN0aW9ucyxmdW5jdGlvbihpLGgpe2lm
KGgpe2lmKCE9CiQuaXNBcnJheShoKSl7aD0zRFtoXX0kLmVhY2goaCxmdW5jdGlvbihrLGope3Zh
ciBtPTNEd2Yubm9kZXNbai5pZF07dmFyIG49Cj0zRG5ldyBDb25uZWN0b3IoKTtuLmNvbm5lY3Qo
bS5vdXRwdXRfdGVybWluYWxzW2oub3V0cHV0X25hbWVdLGQuaW5wdXRfdGVybT0KaW5hbHNbaV0p
O24ucmVkcmF3KCl9KX19KTtpZihhJiZkLnR5cGU9M0Q9M0Q9M0QidG9vbCIpeyQuZWFjaChkLm91
dHB1dF90ZXJtPQppbmFscyxmdW5jdGlvbihoLGkpe2lmKGQucG9zdF9qb2JfYWN0aW9uc1siSGlk
ZURhdGFzZXRBY3Rpb24iK2kubmFtZV09M0Q9M0Q9Cj0zRHVuZGVmaW5lZCl7ZC53b3JrZmxvd19v
dXRwdXRzLnB1c2goaS5uYW1lKTtjYWxsb3V0PTNEJChkLmVsZW1lbnQpLmZpbmQoIj0KLmNhbGxv
dXQuIitpLm5hbWUpO2NhbGxvdXQuZmluZCgiaW1nIikuYXR0cigic3JjIixnYWxheHlfY29uZmln
LnJvb3QrInN0YXRpPQpjL2ltYWdlcy9mdWd1ZS9hc3Rlcmlzay1zbWFsbC5wbmciKTt3b3JrZmxv
dy5oYXNfY2hhbmdlcz0zRHRydWV9fSl9fSl9LGNoZWM9CmtfY2hhbmdlc19pbl9hY3RpdmVfZm9y
bTpmdW5jdGlvbigpe2lmKHRoaXMuYWN0aXZlX2Zvcm1faGFzX2NoYW5nZXMpe3RoaXMuaD0KYXNf
Y2hhbmdlcz0zRHRydWU7JCgiI3JpZ2h0LWNvbnRlbnQiKS5maW5kKCJmb3JtIikuc3VibWl0KCk7
dGhpcy5hY3RpdmVfZm9yPQptX2hhc19jaGFuZ2VzPTNEZmFsc2V9fSxyZWxvYWRfYWN0aXZlX25v
ZGU6ZnVuY3Rpb24oKXtpZih0aGlzLmFjdGl2ZV9ub2RlKXs9CnZhciBhPTNEdGhpcy5hY3RpdmVf
bm9kZTt0aGlzLmNsZWFyX2FjdGl2ZV9ub2RlKCk7dGhpcy5hY3RpdmF0ZV9ub2RlKGEpfX0sYz0K
bGVhcl9hY3RpdmVfbm9kZTpmdW5jdGlvbigpe2lmKHRoaXMuYWN0aXZlX25vZGUpe3RoaXMuYWN0
aXZlX25vZGUubWFrZV9pbmFjPQp0aXZlKCk7dGhpcy5hY3RpdmVfbm9kZT0zRG51bGx9cGFyZW50
LnNob3dfZm9ybV9mb3JfdG9vbCgiPGRpdj5ObyBub2RlIHNlbGU9CmN0ZWQ8L2Rpdj4iKX0sYWN0
aXZhdGVfbm9kZTpmdW5jdGlvbihhKXtpZih0aGlzLmFjdGl2ZV9ub2RlIT0zRGEpe3RoaXMuY2hl
Yz0Ka19jaGFuZ2VzX2luX2FjdGl2ZV9mb3JtKCk7dGhpcy5jbGVhcl9hY3RpdmVfbm9kZSgpO3Bh
cmVudC5zaG93X2Zvcm1fZm9yX3RvPQpvbChhLmZvcm1faHRtbCthLnRvb2x0aXAsYSk7YS5tYWtl
X2FjdGl2ZSgpO3RoaXMuYWN0aXZlX25vZGU9M0RhfX0sbm9kZV9jaGE9Cm5nZWQ6ZnVuY3Rpb24o
YSxiKXt0aGlzLmhhc19jaGFuZ2VzPTNEdHJ1ZTtpZih0aGlzLmFjdGl2ZV9ub2RlPTNEPTNEYSYm
KCFwYT0KcmVudC5fX05FV1RPT0xGT1JNX198fGIpKXt0aGlzLmNoZWNrX2NoYW5nZXNfaW5fYWN0
aXZlX2Zvcm0oKTtwYXJlbnQuc2hvd19mPQpvcm1fZm9yX3Rvb2woYS5mb3JtX2h0bWwrYS50b29s
dGlwLGEpfX0sbGF5b3V0OmZ1bmN0aW9uKCl7dGhpcy5jaGVja19jaGFuZ2U9CnNfaW5fYWN0aXZl
X2Zvcm0oKTt0aGlzLmhhc19jaGFuZ2VzPTNEdHJ1ZTt2YXIgaT0zRHt9O3ZhciBiPTNEe307JC5l
YWNoKHRoaT0Kcy5ub2RlcyxmdW5jdGlvbihsLGspe2lmKGlbbF09M0Q9M0Q9M0R1bmRlZmluZWQp
e2lbbF09M0QwfWlmKGJbbF09M0Q9M0Q9M0R1PQpuZGVmaW5lZCl7YltsXT0zRFtdfX0pOyQuZWFj
aCh0aGlzLm5vZGVzLGZ1bmN0aW9uKGwsayl7JC5lYWNoKGsuaW5wdXRfdGVybWk9Cm5hbHMsZnVu
Y3Rpb24obSxuKXskLmVhY2gobi5jb25uZWN0b3JzLGZ1bmN0aW9uKHAscSl7dmFyIG89M0RxLmhh
bmRsZTEubm9kZT0KO2lbay5pZF0rPTNEMTtiW28uaWRdLnB1c2goay5pZCl9KX0pfSk7bm9kZV9p
ZHNfYnlfbGV2ZWw9M0RbXTt3aGlsZSh0cnVlKXtsPQpldmVsX3BhcmVudHM9M0RbXTtmb3IodmFy
IGEgaW4gaSl7aWYoaVthXT0zRD0zRDApe2xldmVsX3BhcmVudHMucHVzaChhKX19aWY9CihsZXZl
bF9wYXJlbnRzLmxlbmd0aD0zRD0zRDApe2JyZWFrfW5vZGVfaWRzX2J5X2xldmVsLnB1c2gobGV2
ZWxfcGFyZW50cyk7Zj0Kb3IodmFyIGYgaW4gbGV2ZWxfcGFyZW50cyl7dmFyIGo9M0RsZXZlbF9w
YXJlbnRzW2ZdO2RlbGV0ZSBpW2pdO2Zvcih2YXIgZyBpPQpuIGJbal0pe2lbYltqXVtnXV0tPTNE
MX19fWlmKGkubGVuZ3RoKXtyZXR1cm59dmFyIGQ9M0R0aGlzLm5vZGVzO3ZhciBoPTNEODA9Cjt2
X3BhZD0zRDMwO3ZhciBjPTNEaDskLmVhY2gobm9kZV9pZHNfYnlfbGV2ZWwsZnVuY3Rpb24oayxs
KXtsLnNvcnQoZnVuY3Rpbz0KbihwLG8pe3JldHVybiAkKGRbcF0uZWxlbWVudCkucG9zaXRpb24o
KS50b3AtJChkW29dLmVsZW1lbnQpLnBvc2l0aW9uKCkudG9wPQp9KTt2YXIgbT0zRDA7dmFyIG49
M0R2X3BhZDskLmVhY2gobCxmdW5jdGlvbihvLHIpe3ZhciBxPTNEZFtyXTt2YXIgcD0zRCQocS49
CmVsZW1lbnQpOyQocCkuY3NzKHt0b3A6bixsZWZ0OmN9KTttPTNETWF0aC5tYXgobSwkKHApLndp
ZHRoKCkpO24rPTNEJChwKS5oZT0KaWdodCgpK3ZfcGFkfSk7Yys9M0RtK2h9KTskLmVhY2goZCxm
dW5jdGlvbihrLGwpe2wucmVkcmF3KCl9KX0sYm91bmRzX2Zvcl9hPQpsbF9ub2RlczpmdW5jdGlv
bigpe3ZhciBkPTNESW5maW5pdHksYj0zRC1JbmZpbml0eSxjPTNESW5maW5pdHksYT0zRC1JbmZp
bmk9CnR5LGY7JC5lYWNoKHRoaXMubm9kZXMsZnVuY3Rpb24oaCxnKXtlPTNEJChnLmVsZW1lbnQp
O2Y9M0RlLnBvc2l0aW9uKCk7ZD0zRD0KTWF0aC5taW4oZCxmLmxlZnQpO2I9M0RNYXRoLm1heChi
LGYubGVmdCtlLndpZHRoKCkpO2M9M0RNYXRoLm1pbihjLGYudG9wKTthPQo9M0RNYXRoLm1heChh
LGYudG9wK2Uud2lkdGgoKSl9KTtyZXR1cm57eG1pbjpkLHhtYXg6Yix5bWluOmMseW1heDphfX0s
Zml0X2M9CmFudmFzX3RvX25vZGVzOmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLmJvdW5kc19mb3Jf
YWxsX25vZGVzKCk7dmFyIGY9M0R0aGlzLj0KY2FudmFzX2NvbnRhaW5lci5wb3NpdGlvbigpO3Zh
ciBpPTNEdGhpcy5jYW52YXNfY29udGFpbmVyLnBhcmVudCgpO3ZhciBkPTNEPQpmaXhfZGVsdGEo
YS54bWluLDEwMCk7dmFyIGg9M0RmaXhfZGVsdGEoYS55bWluLDEwMCk7ZD0zRE1hdGgubWF4KGQs
Zi5sZWZ0KTs9Cmg9M0RNYXRoLm1heChoLGYudG9wKTt2YXIgYz0zRGYubGVmdC1kO3ZhciBnPTNE
Zi50b3AtaDt2YXIgYj0zRHJvdW5kX3VwKGEueD0KbWF4KzEwMCwxMDApK2Q7dmFyIGo9M0Ryb3Vu
ZF91cChhLnltYXgrMTAwLDEwMCkraDtiPTNETWF0aC5tYXgoYiwtYytpLndpZHRoPQooKSk7aj0z
RE1hdGgubWF4KGosLWcraS5oZWlnaHQoKSk7dGhpcy5jYW52YXNfY29udGFpbmVyLmNzcyh7bGVm
dDpjLHRvcDpnLHc9CmlkdGg6YixoZWlnaHQ6an0pO3RoaXMuY2FudmFzX2NvbnRhaW5lci5jaGls
ZHJlbigpLmVhY2goZnVuY3Rpb24oKXt2YXIgaz0zRD0KJCh0aGlzKS5wb3NpdGlvbigpOyQodGhp
cykuY3NzKCJsZWZ0IixrLmxlZnQrZCk7JCh0aGlzKS5jc3MoInRvcCIsay50b3AraCl9PQopfX0p
O2Z1bmN0aW9uIGZpeF9kZWx0YShhLGIpe2lmKGE8Ynx8YT4zKmIpe25ld19wb3M9M0QoTWF0aC5j
ZWlsKCgoYSViKSkvYik9CisxKSpiO3JldHVybigtKGEtbmV3X3BvcykpfXJldHVybiAwfWZ1bmN0
aW9uIHJvdW5kX3VwKGEsYil7cmV0dXJuIE1hdGguY2VpbD0KKGEvYikqYn1mdW5jdGlvbiBwcmVi
dWlsZF9ub2RlKGwsaixyKXt2YXIgaT0zRCQoIjxkaXYgY2xhc3M9M0QndG9vbEZvcm0gdG9vPQps
Rm9ybUluQ2FudmFzJz48L2Rpdj4iKTt2YXIgZz0zRG5ldyBOb2RlKHtlbGVtZW50Oml9KTtnLnR5
cGU9M0RsO2lmKGw9M0Q9M0Q9CiJ0b29sIil7Zy50b29sX2lkPTNEcn12YXIgbj0zRCQoIjxkaXYg
Y2xhc3M9M0QndG9vbEZvcm1UaXRsZSB1bnNlbGVjdGFibGUnPj0KIitqKyI8L2Rpdj4iKTtpLmFw
cGVuZChuKTtpLmNzcygibGVmdCIsJCh3aW5kb3cpLnNjcm9sbExlZnQoKSsyMCk7aS5jc3MoInRv
PQpwIiwkKHdpbmRvdykuc2Nyb2xsVG9wKCkrMjApO3ZhciBtPTNEJCgiPGRpdiBjbGFzcz0zRCd0
b29sRm9ybUJvZHknPjwvZGl2PiI9Cik7dmFyIGg9M0QiPGRpdj48aW1nIGhlaWdodD0zRCcxNicg
YWxpZ249M0QnbWlkZGxlJyBzcmM9M0QnIitnYWxheHlfY29uZmlnLj0Kcm9vdCsic3RhdGljL2lt
YWdlcy9sb2FkaW5nX3NtYWxsX3doaXRlX2JnLmdpZicvPiBsb2FkaW5nIHRvb2wgaW5mby4uLjwv
ZGl2PQo+IjttLmFwcGVuZChoKTtnLmZvcm1faHRtbD0zRGg7aS5hcHBlbmQobSk7dmFyIGs9M0Qk
KCI8ZGl2IGNsYXNzPTNEJ2J1dHRvbnM9Cicgc3R5bGU9M0QnZmxvYXQ6IHJpZ2h0Oyc+PC9kaXY+
Iik7ay5hcHBlbmQoJCgiPGRpdj4iKS5hZGRDbGFzcygiZmEtaWNvbi1idT0KdHRvbiBmYSBmYS10
aW1lcyIpLmNsaWNrKGZ1bmN0aW9uKGIpe2cuZGVzdHJveSgpfSkpO2kuYXBwZW5kVG8oIiNjYW52
YXMtY29uPQp0YWluZXIiKTt2YXIgZD0zRCQoIiNjYW52YXMtY29udGFpbmVyIikucG9zaXRpb24o
KTt2YXIgYz0zRCQoIiNjYW52YXMtY29udGE9CmluZXIiKS5wYXJlbnQoKTt2YXIgYT0zRGkud2lk
dGgoKTt2YXIgcT0zRGkuaGVpZ2h0KCk7aS5jc3Moe2xlZnQ6KC1kLmxlZnQpKz0KKGMud2lkdGgo
KS8yKS0oYS8yKSx0b3A6KC1kLnRvcCkrKGMuaGVpZ2h0KCkvMiktKHEvMil9KTtrLnByZXBlbmRU
byhuKTthKz0KPTNEKGsud2lkdGgoKSsxMCk7aS5jc3MoIndpZHRoIixhKTskKGkpLmJpbmQoImRy
YWdzdGFydCIsZnVuY3Rpb24oKXt3b3JrZmxvPQp3LmFjdGl2YXRlX25vZGUoZyl9KS5iaW5kKCJk
cmFnZW5kIixmdW5jdGlvbigpe3dvcmtmbG93Lm5vZGVfY2hhbmdlZCh0aGlzKTs9CndvcmtmbG93
LmZpdF9jYW52YXNfdG9fbm9kZXMoKTtjYW52YXNfbWFuYWdlci5kcmF3X292ZXJ2aWV3KCl9KS5i
aW5kKCJkcmFnYz0KbGlja29ubHkiLGZ1bmN0aW9uKCl7d29ya2Zsb3cuYWN0aXZhdGVfbm9kZShn
KX0pLmJpbmQoImRyYWciLGZ1bmN0aW9uKG8scCl7PQp2YXIgZj0zRCQodGhpcykub2Zmc2V0UGFy
ZW50KCkub2Zmc2V0KCksYj0zRHAub2Zmc2V0WC1mLmxlZnQscz0zRHAub2Zmc2V0WS09CmYudG9w
OyQodGhpcykuY3NzKHtsZWZ0OmIsdG9wOnN9KTskKHRoaXMpLmZpbmQoIi50ZXJtaW5hbCIpLmVh
Y2goZnVuY3Rpb24oKT0Ke3RoaXMudGVybWluYWwucmVkcmF3KCl9KX0pO3JldHVybiBnfWZ1bmN0
aW9uIGFkZF9ub2RlKGIsZCxhKXt2YXIgYz0zRHByZWJ1PQppbGRfbm9kZShiLGQsYSk7d29ya2Zs
b3cuYWRkX25vZGUoYyk7d29ya2Zsb3cuZml0X2NhbnZhc190b19ub2RlcygpO2NhbnZhc189Cm1h
bmFnZXIuZHJhd19vdmVydmlldygpO3dvcmtmbG93LmFjdGl2YXRlX25vZGUoYyk7cmV0dXJuIGN9
ZnVuY3Rpb24gdXBkYXRlXz0Kbm9kZShiKXt2YXIgYT0zRHdvcmtmbG93LmFjdGl2ZV9ub2RlO2lm
KGEpe2EudXBkYXRlX2ZpZWxkX2RhdGEoYix0cnVlKX19dmFyPQogZXh0X3RvX3R5cGU9M0RudWxs
O3ZhciB0eXBlX3RvX3R5cGU9M0RudWxsO2Z1bmN0aW9uIGlzc3VidHlwZShiLGEpe2I9M0RleHQ9
Cl90b190eXBlW2JdO2E9M0RleHRfdG9fdHlwZVthXTtyZXR1cm4odHlwZV90b190eXBlW2JdKSYm
KGEgaW4gdHlwZV90b190eXBlWz0KYl0pfWZ1bmN0aW9uIHBvcHVsYXRlX2RhdGF0eXBlX2luZm8o
YSl7ZXh0X3RvX3R5cGU9M0RhLmV4dF90b19jbGFzc19uYW1lO3R5PQpwZV90b190eXBlPTNEYS5j
bGFzc190b19jbGFzc2VzfXZhciBOb2RlVmlldz0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtpbml0
aWE9CmxpemU6ZnVuY3Rpb24oYSl7dGhpcy5ub2RlPTNEYS5ub2RlO3RoaXMub3V0cHV0X3dpZHRo
PTNETWF0aC5tYXgoMTUwLHRoaXMuJD0KZWwud2lkdGgoKSk7dGhpcy50b29sX2JvZHk9M0R0aGlz
LiRlbC5maW5kKCIudG9vbEZvcm1Cb2R5Iik7dGhpcy50b29sX2JvZHkuPQpmaW5kKCJkaXYiKS5y
ZW1vdmUoKTt0aGlzLm5ld0lucHV0c0RpdigpLmFwcGVuZFRvKHRoaXMudG9vbF9ib2R5KTt0aGlz
LnRlcm09CmluYWxWaWV3cz0zRHt9O3RoaXMub3V0cHV0VGVybWlubFZpZXdzPTNEe319LHJlbmRl
cjpmdW5jdGlvbigpe3RoaXMucmVuZGVyVD0Kb29sRXJyb3JzKCk7dGhpcy4kZWwuY3NzKCJ3aWR0
aCIsTWF0aC5taW4oMjUwLE1hdGgubWF4KHRoaXMuJGVsLndpZHRoKCksdGhpPQpzLm91dHB1dF93
aWR0aCkpKX0scmVuZGVyVG9vbEVycm9yczpmdW5jdGlvbigpe2lmKHRoaXMubm9kZS50b29sX2Vy
cm9ycyl7dGg9CmlzLiRlbC5hZGRDbGFzcygidG9vbC1ub2RlLWVycm9yIil9ZWxzZXt0aGlzLiRl
bC5yZW1vdmVDbGFzcygidG9vbC1ub2RlLWVycj0Kb3IiKX19LG5ld0lucHV0c0RpdjpmdW5jdGlv
bigpe3JldHVybiAkKCI8ZGl2IGNsYXNzPTNEJ2lucHV0cyc+PC9kaXY+Iil9LHVwPQpkYXRlTWF4
V2lkdGg6ZnVuY3Rpb24oYSl7dGhpcy5vdXRwdXRfd2lkdGg9M0RNYXRoLm1heCh0aGlzLm91dHB1
dF93aWR0aCxhKX09CixhZGRSdWxlOmZ1bmN0aW9uKCl7dGhpcy50b29sX2JvZHkuYXBwZW5kKCQo
IjxkaXYgY2xhc3M9M0QncnVsZSc+PC9kaXY+IikpfT0KLGFkZERhdGFJbnB1dDpmdW5jdGlvbihp
LGQpe3ZhciBqPTNEdHJ1ZTtpZighZCl7ZD0zRHRoaXMuJCgiLmlucHV0cyIpO2o9M0RmPQphbHNl
fXZhciBmPTNEdGhpcy50ZXJtaW5hbFZpZXdzW2kubmFtZV07dmFyIGg9M0QoaS5pbnB1dF90eXBl
PTNEPTNEImRhdGFzZXQ9Cl9jb2xsZWN0aW9uIik/SW5wdXRDb2xsZWN0aW9uVGVybWluYWxWaWV3
OklucHV0VGVybWluYWxWaWV3O2lmKGYmJiEoZiBpbnN0YT0KbmNlb2YgaCkpe2YuZWwudGVybWlu
YWwuZGVzdHJveSgpO2Y9M0RudWxsfWlmKCFmKXtmPTNEbmV3IGgoe25vZGU6dGhpcy5ub2RlPQos
aW5wdXQ6aX0pfWVsc2V7dmFyIGc9M0RmLmVsLnRlcm1pbmFsO2cudXBkYXRlKGkpO2cuZGVzdHJv
eUludmFsaWRDb25uZWN0aW89Cm5zKCl9dGhpcy50ZXJtaW5hbFZpZXdzW2kubmFtZV09M0RmO3Zh
ciBjPTNEZi5lbDt2YXIgYj0zRG5ldyBEYXRhSW5wdXRWaWV3KD0Ke3Rlcm1pbmFsRWxlbWVudDpj
LGlucHV0Omksbm9kZVZpZXc6dGhpcyxza2lwUmVzaXplOmp9KTt2YXIgYT0zRGIuJGVsO2QuYXBw
PQplbmQoYS5wcmVwZW5kKGYudGVybWluYWxFbGVtZW50cygpKSk7cmV0dXJuIGZ9LGFkZERhdGFP
dXRwdXQ6ZnVuY3Rpb24oYSl7dmE9CnIgZD0zRChhLmNvbGxlY3Rpb25fdHlwZSk/T3V0cHV0Q29s
bGVjdGlvblRlcm1pbmFsVmlldzpPdXRwdXRUZXJtaW5hbFZpZXc7dj0KYXIgYz0zRG5ldyBkKHtu
b2RlOnRoaXMubm9kZSxvdXRwdXQ6YX0pO3ZhciBiPTNEbmV3IERhdGFPdXRwdXRWaWV3KHtvdXRw
dXQ6PQphLHRlcm1pbmFsRWxlbWVudDpjLmVsLG5vZGVWaWV3OnRoaXMsfSk7dGhpcy50b29sX2Jv
ZHkuYXBwZW5kKGIuJGVsLmFwcGVuZCg9CmMudGVybWluYWxFbGVtZW50cygpKSl9LHVwZGF0ZURh
dGFPdXRwdXQ6ZnVuY3Rpb24oYil7dmFyIGE9M0R0aGlzLm5vZGUub3V0cD0KdXRfdGVybWluYWxz
W2IubmFtZV07YS51cGRhdGUoYil9fSk7dmFyIERhdGFJbnB1dFZpZXc9M0RCYWNrYm9uZS5WaWV3
LmV4dGVuPQpkKHtjbGFzc05hbWU6ImZvcm0tcm93IGRhdGFSb3cgaW5wdXQtZGF0YS1yb3ciLGlu
aXRpYWxpemU6ZnVuY3Rpb24oYSl7dGhpcy49CmlucHV0PTNEYS5pbnB1dDt0aGlzLm5vZGVWaWV3
PTNEYS5ub2RlVmlldzt0aGlzLnRlcm1pbmFsRWxlbWVudD0zRGEudGVybWluYT0KbEVsZW1lbnQ7
dGhpcy4kZWwuYXR0cigibmFtZSIsdGhpcy5pbnB1dC5uYW1lKS5odG1sKHRoaXMuaW5wdXQubGFi
ZWwpO2lmKCFhPQouc2tpcFJlc2l6ZSl7dGhpcy4kZWwuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUi
LGxlZnQ6LTEwMDAsdG9wOi0xMDAwLGRpc3BsYXk9Cjoibm9uZSJ9KTskKCJib2R5IikuYXBwZW5k
KHRoaXMuZWwpO3RoaXMubm9kZVZpZXcudXBkYXRlTWF4V2lkdGgodGhpcy4kZWwubz0KdXRlcldp
ZHRoKCkpO3RoaXMuJGVsLmNzcyh7cG9zaXRpb246IiIsbGVmdDoiIix0b3A6IiIsZGlzcGxheToi
In0pO3RoaXMuJGVsPQoucmVtb3ZlKCl9fSx9KTt2YXIgT3V0cHV0Q2FsbG91dFZpZXc9M0RCYWNr
Ym9uZS5WaWV3LmV4dGVuZCh7dGFnTmFtZToiZGl2Iiw9CmluaXRpYWxpemU6ZnVuY3Rpb24oYil7
dGhpcy5sYWJlbD0zRGIubGFiZWw7dGhpcy5ub2RlPTNEYi5ub2RlO3RoaXMub3V0cHV0PQo9M0Ri
Lm91dHB1dDt2YXIgYT0zRHRoaXM7dGhpcy4kZWwuYXR0cigiY2xhc3MiLCJjYWxsb3V0ICIrdGhp
cy5sYWJlbCkuY3NzKHs9CmRpc3BsYXk6Im5vbmUifSkuYXBwZW5kKCQoIjxkaXYgY2xhc3M9M0Qn
YnV0dG9ucyc+PC9kaXY+IikuYXBwZW5kKCQoIjxpbWcvPj0KIikuYXR0cigic3JjIixnYWxheHlf
Y29uZmlnLnJvb3QrInN0YXRpYy9pbWFnZXMvZnVndWUvYXN0ZXJpc2stc21hbGwtb3V0bGluPQpl
LnBuZyIpLmNsaWNrKGZ1bmN0aW9uKCl7aWYoJC5pbkFycmF5KGEub3V0cHV0Lm5hbWUsYS5ub2Rl
LndvcmtmbG93X291dHB1dHM9CikhPTNELTEpe2Eubm9kZS53b3JrZmxvd19vdXRwdXRzLnNwbGlj
ZSgkLmluQXJyYXkoYS5vdXRwdXQubmFtZSxhLm5vZGUud29yaz0KZmxvd19vdXRwdXRzKSwxKTth
LiQoImltZyIpLmF0dHIoInNyYyIsZ2FsYXh5X2NvbmZpZy5yb290KyJzdGF0aWMvaW1hZ2VzL2Z1
PQpndWUvYXN0ZXJpc2stc21hbGwtb3V0bGluZS5wbmciKX1lbHNle2Eubm9kZS53b3JrZmxvd19v
dXRwdXRzLnB1c2goYS5vdXRwdXQ9Ci5uYW1lKTthLiQoImltZyIpLmF0dHIoInNyYyIsZ2FsYXh5
X2NvbmZpZy5yb290KyJzdGF0aWMvaW1hZ2VzL2Z1Z3VlL2FzdGVyaT0Kc2stc21hbGwucG5nIil9
d29ya2Zsb3cuaGFzX2NoYW5nZXM9M0R0cnVlO2NhbnZhc19tYW5hZ2VyLmRyYXdfb3ZlcnZpZXco
KX0pPQopKS50b29sdGlwKHtkZWxheTo1MDAsdGl0bGU6Ik1hcmsgZGF0YXNldCBhcyBhIHdvcmtm
bG93IG91dHB1dC4gQWxsIHVubWFya2U9CmQgZGF0YXNldHMgd2lsbCBiZSBoaWRkZW4uIn0pO3Ro
aXMuJGVsLmNzcyh7dG9wOiI1MCUiLG1hcmdpbjoiLThweCAwcHggMHB4ID0KMHB4IixyaWdodDo4
fSk7dGhpcy4kZWwuc2hvdygpO3RoaXMucmVzZXRJbWFnZSgpfSxyZXNldEltYWdlOmZ1bmN0aW9u
KCl7aWYoPQokLmluQXJyYXkodGhpcy5vdXRwdXQubmFtZSx0aGlzLm5vZGUud29ya2Zsb3dfb3V0
cHV0cyk9M0Q9M0Q9M0QtMSl7dGhpcy4kKCI9CmltZyIpLmF0dHIoInNyYyIsZ2FsYXh5X2NvbmZp
Zy5yb290KyJzdGF0aWMvaW1hZ2VzL2Z1Z3VlL2FzdGVyaXNrLXNtYWxsLW91dD0KbGluZS5wbmci
KX1lbHNle3RoaXMuJCgiaW1nIikuYXR0cigic3JjIixnYWxheHlfY29uZmlnLnJvb3QrInN0YXRp
Yy9pbWFnZXMvPQpmdWd1ZS9hc3Rlcmlzay1zbWFsbC5wbmciKX19LGhvdmVySW1hZ2U6ZnVuY3Rp
b24oKXt0aGlzLiQoImltZyIpLmF0dHIoInNyYyI9CixnYWxheHlfY29uZmlnLnJvb3QrInN0YXRp
Yy9pbWFnZXMvZnVndWUvYXN0ZXJpc2stc21hbGwteWVsbG93LnBuZyIpfX0pO3Zhcj0KIERhdGFP
dXRwdXRWaWV3PTNEQmFja2JvbmUuVmlldy5leHRlbmQoe2NsYXNzTmFtZToiZm9ybS1yb3cgZGF0
YVJvdyIsaW5pdGlhPQpsaXplOmZ1bmN0aW9uKGMpe3RoaXMub3V0cHV0PTNEYy5vdXRwdXQ7dGhp
cy50ZXJtaW5hbEVsZW1lbnQ9M0RjLnRlcm1pbmFsRWw9CmVtZW50O3RoaXMubm9kZVZpZXc9M0Rj
Lm5vZGVWaWV3O3ZhciBhPTNEdGhpcy5vdXRwdXQ7dmFyIGI9M0RhLm5hbWU7dmFyIGY9Cj0zRHRo
aXMubm9kZVZpZXcubm9kZTt2YXIgZD0zRGEuZXh0ZW5zaW9ucy5pbmRleE9mKCJpbnB1dCIpPj0z
RDB8fGEuZXh0ZW5zaT0Kb25zLmluZGV4T2YoImlucHV0X2NvbGxlY3Rpb24iKT49M0QwO2lmKCFk
KXtiPTNEYisiICgiK2EuZXh0ZW5zaW9ucy5qb2luKCIsPQogIikrIikifXRoaXMuJGVsLmh0bWwo
Yik7aWYoZi50eXBlPTNEPTNEInRvb2wiKXt2YXIgZz0zRG5ldyBPdXRwdXRDYWxsb3V0Vmk9CmV3
KHtsYWJlbDpiLG91dHB1dDphLG5vZGU6Zix9KTt0aGlzLiRlbC5hcHBlbmQoZy5lbCk7dGhpcy4k
ZWwuaG92ZXIoZnVuY3Rpbz0Kbigpe2cuaG92ZXJJbWFnZSgpfSxmdW5jdGlvbigpe2cucmVzZXRJ
bWFnZSgpfSl9dGhpcy4kZWwuY3NzKHtwb3NpdGlvbjoiYWJzPQpvbHV0ZSIsbGVmdDotMTAwMCx0
b3A6LTEwMDAsZGlzcGxheToibm9uZSJ9KTskKCJib2R5IikuYXBwZW5kKHRoaXMuZWwpO3RoaXM9
Ci5ub2RlVmlldy51cGRhdGVNYXhXaWR0aCh0aGlzLiRlbC5vdXRlcldpZHRoKCkrMTcpO3RoaXMu
JGVsLmNzcyh7cG9zaXRpb246Ij0KIixsZWZ0OiIiLHRvcDoiIixkaXNwbGF5OiIifSkuZGV0YWNo
KCl9fSk7dmFyIFRlcm1pbmFsVmlldz0zREJhY2tib25lLlZpZXcuPQpleHRlbmQoe3NldHVwTWFw
cGluZ1ZpZXc6ZnVuY3Rpb24oYil7dmFyIGM9M0RuZXcgdGhpcy50ZXJtaW5hbE1hcHBpbmdDbGFz
cyg9Cnt0ZXJtaW5hbDpifSk7dmFyIGE9M0RuZXcgdGhpcy50ZXJtaW5hbE1hcHBpbmdWaWV3Q2xh
c3Moe21vZGVsOmN9KTthLnJlbmRlcj0KKCk7Yi50ZXJtaW5hbE1hcHBpbmdWaWV3PTNEYTt0aGlz
LnRlcm1pbmFsTWFwcGluZ1ZpZXc9M0RhfSx0ZXJtaW5hbEVsZW1lbnRzPQo6ZnVuY3Rpb24oKXtp
Zih0aGlzLnRlcm1pbmFsTWFwcGluZ1ZpZXcpe3JldHVyblt0aGlzLnRlcm1pbmFsTWFwcGluZ1Zp
ZXcuZWw9Cix0aGlzLmVsXX1lbHNle3JldHVyblt0aGlzLmVsXX19fSk7dmFyIEJhc2VJbnB1dFRl
cm1pbmFsVmlldz0zRFRlcm1pbmFsVmlldz0KLmV4dGVuZCh7Y2xhc3NOYW1lOiJ0ZXJtaW5hbCBp
bnB1dC10ZXJtaW5hbCIsaW5pdGlhbGl6ZTpmdW5jdGlvbihjKXt2YXIgZj0KPTNEYy5ub2RlO3Zh
ciBhPTNEYy5pbnB1dDt2YXIgYj0zRGEubmFtZTt2YXIgZD0zRHRoaXMudGVybWluYWxGb3JJbnB1
dChhKTtpPQpmKCFkLm11bHRpcGxlKXt0aGlzLnNldHVwTWFwcGluZ1ZpZXcoZCl9dGhpcy5lbC50
ZXJtaW5hbD0zRGQ7ZC5ub2RlPTNEZjtkLm49CmFtZT0zRGI7Zi5pbnB1dF90ZXJtaW5hbHNbYl09
M0RkfSxldmVudHM6e2Ryb3Bpbml0OiJvbkRyb3BJbml0Iixkcm9wc3RhcnQ6Ij0Kb25Ecm9wU3Rh
cnQiLGRyb3BlbmQ6Im9uRHJvcEVuZCIsZHJvcDoib25Ecm9wIixob3Zlcjoib25Ib3ZlciIsfSxv
bkRyb3BJbml0PQo6ZnVuY3Rpb24oYixjKXt2YXIgYT0zRHRoaXMuZWwudGVybWluYWw7cmV0dXJu
ICQoYy5kcmFnKS5oYXNDbGFzcygib3V0cHV0LXQ9CmVybWluYWwiKSYmYS5jYW5BY2NlcHQoYy5k
cmFnLnRlcm1pbmFsKX0sb25Ecm9wU3RhcnQ6ZnVuY3Rpb24oYSxiKXtpZihiLnBybz0KeHkudGVy
bWluYWwpe2IucHJveHkudGVybWluYWwuY29ubmVjdG9yc1swXS5pbm5lcl9jb2xvcj0zRCIjQkJG
RkJCIn19LG9uRHJvPQpwRW5kOmZ1bmN0aW9uKGEsYil7aWYoYi5wcm94eS50ZXJtaW5hbCl7Yi5w
cm94eS50ZXJtaW5hbC5jb25uZWN0b3JzWzBdLmlubmU9CnJfY29sb3I9M0QiI0ZGRkZGRiJ9fSxv
bkRyb3A6ZnVuY3Rpb24oYixjKXt2YXIgYT0zRHRoaXMuZWwudGVybWluYWw7bmV3IENvbj0KbmVj
dG9yKGMuZHJhZy50ZXJtaW5hbCxhKS5yZWRyYXcoKX0sb25Ib3ZlcjpmdW5jdGlvbigpe3ZhciBj
PTNEdGhpcy5lbDt2YXIgPQpiPTNEYy50ZXJtaW5hbDtpZihiLmNvbm5lY3RvcnMubGVuZ3RoPjAp
e3ZhciBhPTNEJCgiPGRpdiBjbGFzcz0zRCdjYWxsb3V0Jz49CjwvZGl2PiIpLmNzcyh7ZGlzcGxh
eToibm9uZSJ9KS5hcHBlbmRUbygiYm9keSIpLmFwcGVuZCgkKCI8ZGl2IGNsYXNzPTNEJ2J1dD0K
dG9uJz48L2Rpdj4iKS5hcHBlbmQoJCgiPGRpdi8+IikuYWRkQ2xhc3MoImZhLWljb24tYnV0dG9u
IGZhIGZhLXRpbWVzIikuY2xpPQpjayhmdW5jdGlvbigpeyQuZWFjaChiLmNvbm5lY3RvcnMsZnVu
Y3Rpb24oZixkKXtpZihkKXtkLmRlc3Ryb3koKX19KTthLnJlbW89CnZlKCl9KSkpLmJpbmQoIm1v
dXNlbGVhdmUiLGZ1bmN0aW9uKCl7JCh0aGlzKS5yZW1vdmUoKX0pO2EuY3NzKHt0b3A6JChjKS5v
Zj0KZnNldCgpLnRvcC0yLGxlZnQ6JChjKS5vZmZzZXQoKS5sZWZ0LWEud2lkdGgoKSwicGFkZGlu
Zy1yaWdodCI6JChjKS53aWR0aCgpPQp9KS5zaG93KCl9fSx9KTt2YXIgSW5wdXRUZXJtaW5hbFZp
ZXc9M0RCYXNlSW5wdXRUZXJtaW5hbFZpZXcuZXh0ZW5kKHt0ZXJtaW49CmFsTWFwcGluZ0NsYXNz
OklucHV0VGVybWluYWxNYXBwaW5nLHRlcm1pbmFsTWFwcGluZ1ZpZXdDbGFzczpJbnB1dFRlcm1p
bmFsTT0KYXBwaW5nVmlldyx0ZXJtaW5hbEZvcklucHV0OmZ1bmN0aW9uKGEpe3JldHVybiBuZXcg
SW5wdXRUZXJtaW5hbCh7ZWxlbWVudDp0PQpoaXMuZWwsaW5wdXQ6YX0pfSx9KTt2YXIgSW5wdXRD
b2xsZWN0aW9uVGVybWluYWxWaWV3PTNEQmFzZUlucHV0VGVybWluYWxWaWU9CncuZXh0ZW5kKHt0
ZXJtaW5hbE1hcHBpbmdDbGFzczpJbnB1dENvbGxlY3Rpb25UZXJtaW5hbE1hcHBpbmcsdGVybWlu
YWxNYXBwaT0KbmdWaWV3Q2xhc3M6SW5wdXRDb2xsZWN0aW9uVGVybWluYWxNYXBwaW5nVmlldyx0
ZXJtaW5hbEZvcklucHV0OmZ1bmN0aW9uKGEpPQp7cmV0dXJuIG5ldyBJbnB1dENvbGxlY3Rpb25U
ZXJtaW5hbCh7ZWxlbWVudDp0aGlzLmVsLGlucHV0OmF9KX0sfSk7dmFyIEJhc2U9Ck91dHB1dFRl
cm1pbmFsVmlldz0zRFRlcm1pbmFsVmlldy5leHRlbmQoe2NsYXNzTmFtZToidGVybWluYWwgb3V0
cHV0LXRlcm1pbj0KYWwiLGluaXRpYWxpemU6ZnVuY3Rpb24oYyl7dmFyIGY9M0RjLm5vZGU7dmFy
IGE9M0RjLm91dHB1dDt2YXIgYj0zRGEubmFtZTt2PQphciBkPTNEdGhpcy50ZXJtaW5hbEZvck91
dHB1dChhKTt0aGlzLnNldHVwTWFwcGluZ1ZpZXcoZCk7dGhpcy5lbC50ZXJtaW5hbD0KPTNEZDtk
Lm5vZGU9M0RmO2QubmFtZT0zRGI7Zi5vdXRwdXRfdGVybWluYWxzW2JdPTNEZH0sZXZlbnRzOntk
cmFnOiJvbkRyYWciPQosZHJhZ3N0YXJ0OiJvbkRyYWdTdGFydCIsZHJhZ2VuZDoib25EcmFnRW5k
Iix9LG9uRHJhZzpmdW5jdGlvbihiLGMpe3ZhciBhPQo9M0RmdW5jdGlvbigpe3ZhciBmPTNEJChj
LnByb3h5KS5vZmZzZXRQYXJlbnQoKS5vZmZzZXQoKSxkPTNEYy5vZmZzZXRYLWYubGU9CmZ0LGc9
M0RjLm9mZnNldFktZi50b3A7JChjLnByb3h5KS5jc3Moe2xlZnQ6ZCx0b3A6Z30pO2MucHJveHku
dGVybWluYWwucmVkcj0KYXcoKTtjYW52YXNfbWFuYWdlci51cGRhdGVfdmlld3BvcnRfb3Zlcmxh
eSgpfTthKCk7JCgiI2NhbnZhcy1jb250YWluZXIiKS5nPQpldCgwKS5zY3JvbGxfcGFuZWwudGVz
dChiLGEpfSxvbkRyYWdTdGFydDpmdW5jdGlvbihiLGYpeyQoZi5hdmFpbGFibGUpLmFkZEM9Cmxh
c3MoImlucHV0LXRlcm1pbmFsLWFjdGl2ZSIpO3dvcmtmbG93LmNoZWNrX2NoYW5nZXNfaW5fYWN0
aXZlX2Zvcm0oKTt2YXIgYT0KPTNEJCgnPGRpdiBjbGFzcz0zRCJkcmFnLXRlcm1pbmFsIiBzdHls
ZT0zRCJwb3NpdGlvbjogYWJzb2x1dGU7Ij48L2Rpdj4nKS5hPQpwcGVuZFRvKCIjY2FudmFzLWNv
bnRhaW5lciIpLmdldCgwKTthLnRlcm1pbmFsPTNEbmV3IE91dHB1dFRlcm1pbmFsKHtlbGVtZW49
CnQ6YX0pO3ZhciBnPTNEbmV3IENvbm5lY3RvcigpO2cuZHJhZ2dpbmc9M0R0cnVlO2cuY29ubmVj
dCh0aGlzLmVsLnRlcm1pbmFsLD0KYS50ZXJtaW5hbCk7cmV0dXJuIGF9LG9uRHJhZ0VuZDpmdW5j
dGlvbihiLGMpe3ZhciBhPTNEYy5wcm94eS50ZXJtaW5hbC5jb25uPQplY3RvcnNbMF07aWYoYSl7
YS5kZXN0cm95KCl9JChjLnByb3h5KS5yZW1vdmUoKTskKGMuYXZhaWxhYmxlKS5yZW1vdmVDbGFz
cyg9CiJpbnB1dC10ZXJtaW5hbC1hY3RpdmUiKTskKCIjY2FudmFzLWNvbnRhaW5lciIpLmdldCgw
KS5zY3JvbGxfcGFuZWwuc3RvcCgpfT0KfSk7dmFyIE91dHB1dFRlcm1pbmFsVmlldz0zREJhc2VP
dXRwdXRUZXJtaW5hbFZpZXcuZXh0ZW5kKHt0ZXJtaW5hbE1hcHBpbmdDPQpsYXNzOk91dHB1dFRl
cm1pbmFsTWFwcGluZyx0ZXJtaW5hbE1hcHBpbmdWaWV3Q2xhc3M6T3V0cHV0VGVybWluYWxNYXBw
aW5nVmk9CmV3LHRlcm1pbmFsRm9yT3V0cHV0OmZ1bmN0aW9uKGEpe3ZhciBjPTNEYS5leHRlbnNp
b25zO3ZhciBiPTNEbmV3IE91dHB1dFRlcj0KbWluYWwoe2VsZW1lbnQ6dGhpcy5lbCxkYXRhdHlw
ZXM6Y30pO3JldHVybiBifSx9KTt2YXIgT3V0cHV0Q29sbGVjdGlvblRlcm1pPQpuYWxWaWV3PTNE
QmFzZU91dHB1dFRlcm1pbmFsVmlldy5leHRlbmQoe3Rlcm1pbmFsTWFwcGluZ0NsYXNzOk91dHB1
dENvbGxlY3Q9CmlvblRlcm1pbmFsTWFwcGluZyx0ZXJtaW5hbE1hcHBpbmdWaWV3Q2xhc3M6T3V0
cHV0Q29sbGVjdGlvblRlcm1pbmFsTWFwcGluZz0KVmlldyx0ZXJtaW5hbEZvck91dHB1dDpmdW5j
dGlvbihhKXt2YXIgYz0zRGEuY29sbGVjdGlvbl90eXBlO3ZhciBiPTNEbmV3IE91PQp0cHV0Q29s
bGVjdGlvblRlcm1pbmFsKHtlbGVtZW50OnRoaXMuZWwsY29sbGVjdGlvbl90eXBlOmMsZGF0YXR5
cGVzOmEuZXh0ZW49CnNpb25zfSk7cmV0dXJuIGJ9LH0pO2Z1bmN0aW9uIFNjcm9sbFBhbmVsKGEp
e3RoaXMucGFuZWw9M0RhfSQuZXh0ZW5kKFNjcm9sbD0KUGFuZWwucHJvdG90eXBlLHt0ZXN0OmZ1
bmN0aW9uKHYsZCl7Y2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7dmFyIGs9M0R2LnBhPQpnZVgs
aj0zRHYucGFnZVksbD0zRCQodGhpcy5wYW5lbCksYz0zRGwucG9zaXRpb24oKSxiPTNEbC53aWR0
aCgpLGk9M0RsLmhlaWc9Cmh0KCksdz0zRGwucGFyZW50KCkscz0zRHcud2lkdGgoKSxhPTNEdy5o
ZWlnaHQoKSxyPTNEdy5vZmZzZXQoKSxwPTNEci5sZWZ0LD0KbT0zRHIudG9wLEE9M0RwK3cud2lk
dGgoKSx1PTNEbSt3LmhlaWdodCgpLEI9M0QtKGItKHMvMikpLHo9M0QtKGktKGEvMikpLGc9Cj0z
RChzLzIpLGY9M0QoYS8yKSxoPTNEZmFsc2UscT0zRDUsbz0zRDIzO2lmKGstcTxwKXtpZihjLmxl
ZnQ8Zyl7dmFyIG49M0RNYT0KdGgubWluKG8sZy1jLmxlZnQpO2wuY3NzKCJsZWZ0IixjLmxlZnQr
bik7aD0zRHRydWV9fWVsc2V7aWYoaytxPkEpe2lmKGMubGVmPQp0PkIpe3ZhciBuPTNETWF0aC5t
aW4obyxjLmxlZnQtQik7bC5jc3MoImxlZnQiLGMubGVmdC1uKTtoPTNEdHJ1ZX19ZWxzZXtpZig9
CmotcTxtKXtpZihjLnRvcDxmKXt2YXIgbj0zRE1hdGgubWluKG8sZi1jLnRvcCk7bC5jc3MoInRv
cCIsYy50b3Arbik7aD0zRHRydT0KZX19ZWxzZXtpZihqK3E+dSl7aWYoYy50b3A+eil7dmFyIG49
M0RNYXRoLm1pbihvLGMudG9wLUIpO2wuY3NzKCJ0b3AiLChjLnRvPQpwLW4pKyJweCIpO2g9M0R0
cnVlfX19fX1pZihoKXtkKCk7dmFyIGw9M0R0aGlzO3RoaXMudGltZW91dD0zRHNldFRpbWVvdXQo
ZnU9Cm5jdGlvbigpe2wudGVzdCh2LGQpfSw1MCl9fSxzdG9wOmZ1bmN0aW9uKGIsYSl7Y2xlYXJU
aW1lb3V0KHRoaXMudGltZW91dCl9fT0KKTtmdW5jdGlvbiBDYW52YXNNYW5hZ2VyKGIsYSl7dGhp
cy5jdj0zRGI7dGhpcy5jYz0zRHRoaXMuY3YuZmluZCgiI2NhbnZhcy1jPQpvbnRhaW5lciIpO3Ro
aXMub2M9M0RhLmZpbmQoIiNvdmVydmlldy1jYW52YXMiKTt0aGlzLm92PTNEYS5maW5kKCIjb3Zl
cnZpZXc9Ci12aWV3cG9ydCIpO3RoaXMuaW5pdF9kcmFnKCl9JC5leHRlbmQoQ2FudmFzTWFuYWdl
ci5wcm90b3R5cGUse2luaXRfZHJhZzpmdT0KbmN0aW9uKCl7dmFyIGI9M0R0aGlzO3ZhciBhPTNE
ZnVuY3Rpb24oZixnKXtmPTNETWF0aC5taW4oZixiLmN2LndpZHRoKCkvMik7PQpmPTNETWF0aC5t
YXgoZiwtYi5jYy53aWR0aCgpK2IuY3Yud2lkdGgoKS8yKTtnPTNETWF0aC5taW4oZyxiLmN2Lmhl
aWdodCgpLzI9Cik7Zz0zRE1hdGgubWF4KGcsLWIuY2MuaGVpZ2h0KCkrYi5jdi5oZWlnaHQoKS8y
KTtiLmNjLmNzcyh7bGVmdDpmLHRvcDpnfSk7Yj0KLnVwZGF0ZV92aWV3cG9ydF9vdmVybGF5KCl9
O3RoaXMuY2MuZWFjaChmdW5jdGlvbigpe3RoaXMuc2Nyb2xsX3BhbmVsPTNEbmV3PQogU2Nyb2xs
UGFuZWwodGhpcyl9KTt2YXIgZCxjO3RoaXMuY3YuYmluZCgiZHJhZ3N0YXJ0IixmdW5jdGlvbigp
e3ZhciBnPTNEJCg9CnRoaXMpLm9mZnNldCgpO3ZhciBmPTNEYi5jYy5wb3NpdGlvbigpO2M9M0Rm
LnRvcC1nLnRvcDtkPTNEZi5sZWZ0LWcubGVmdH0pLj0KYmluZCgiZHJhZyIsZnVuY3Rpb24oZixn
KXthKGcub2Zmc2V0WCtkLGcub2Zmc2V0WStjKX0pLmJpbmQoImRyYWdlbmQiLGZ1bmN0PQppb24o
KXt3b3JrZmxvdy5maXRfY2FudmFzX3RvX25vZGVzKCk7Yi5kcmF3X292ZXJ2aWV3KCl9KTt0aGlz
Lm92LmJpbmQoImRyYWc9CiIsZnVuY3Rpb24oayxsKXt2YXIgaD0zRGIuY2Mud2lkdGgoKSxuPTNE
Yi5jYy5oZWlnaHQoKSxtPTNEYi5vYy53aWR0aCgpLGo9Cj0zRGIub2MuaGVpZ2h0KCksZj0zRCQo
dGhpcykub2Zmc2V0UGFyZW50KCkub2Zmc2V0KCksaT0zRGwub2Zmc2V0WC1mLmxlZnQsZz0KPTNE
bC5vZmZzZXRZLWYudG9wO2EoLShpL20qaCksLShnL2oqbikpfSkuYmluZCgiZHJhZ2VuZCIsZnVu
Y3Rpb24oKXt3b3JrZmxvPQp3LmZpdF9jYW52YXNfdG9fbm9kZXMoKTtiLmRyYXdfb3ZlcnZpZXco
KX0pOyQoIiNvdmVydmlldy1ib3JkZXIiKS5iaW5kKCJkcmE9CmciLGZ1bmN0aW9uKGcsaSl7dmFy
IGo9M0QkKHRoaXMpLm9mZnNldFBhcmVudCgpO3ZhciBoPTNEai5vZmZzZXQoKTt2YXIgZj0zRD0K
TWF0aC5tYXgoai53aWR0aCgpLShpLm9mZnNldFgtaC5sZWZ0KSxqLmhlaWdodCgpLShpLm9mZnNl
dFktaC50b3ApKTskKHRoaXMpPQouY3NzKHt3aWR0aDpmLGhlaWdodDpmfSk7Yi5kcmF3X292ZXJ2
aWV3KCl9KTskKCIjb3ZlcnZpZXctYm9yZGVyIGRpdiIpLmJpbmQ9CigiZHJhZyIsZnVuY3Rpb24o
KXt9KX0sdXBkYXRlX3ZpZXdwb3J0X292ZXJsYXk6ZnVuY3Rpb24oKXt2YXIgYj0zRHRoaXMuY2Ms
Zj0KPTNEdGhpcy5jdixhPTNEdGhpcy5vYyxjPTNEdGhpcy5vdixkPTNEYi53aWR0aCgpLGo9M0Ri
LmhlaWdodCgpLGk9M0RhLndpZHRoPQooKSxnPTNEYS5oZWlnaHQoKSxoPTNEYi5wb3NpdGlvbigp
O2MuY3NzKHtsZWZ0Oi0oaC5sZWZ0L2QqaSksdG9wOi0oaC50b3Avaio9CmcpLHdpZHRoOihmLndp
ZHRoKCkvZCppKS0yLGhlaWdodDooZi5oZWlnaHQoKS9qKmcpLTJ9KX0sZHJhd19vdmVydmlldzpm
dW5jdD0KaW9uKCl7dmFyIGo9M0QkKCIjb3ZlcnZpZXctY2FudmFzIiksbT0zRGoucGFyZW50KCku
cGFyZW50KCkud2lkdGgoKSxpPTNEai5nPQpldCgwKS5nZXRDb250ZXh0KCIyZCIpLGQ9M0QkKCIj
Y2FudmFzLWNvbnRhaW5lciIpLndpZHRoKCksbD0zRCQoIiNjYW52YXMtY289Cm50YWluZXIiKS5o
ZWlnaHQoKTt2YXIgZyxhLGssZjt2YXIgaD0zRHRoaXMuY3Yud2lkdGgoKTt2YXIgYj0zRHRoaXMu
Y3YuaGVpZz0KaHQoKTtpZihkPGgmJmw8Yil7az0zRGQvaCptO2Y9M0QobS1rKS8yO2c9M0RsL2Iq
bTthPTNEKG0tZykvMn1lbHNle2lmKGQ8bCl7PQphPTNEMDtnPTNEbTtrPTNETWF0aC5jZWlsKGcq
ZC9sKTtmPTNEKG0taykvMn1lbHNle2s9M0RtO2Y9M0QwO2c9M0RNYXRoLmNlaWw9CihrKmwvZCk7
YT0zRChtLWcpLzJ9fWoucGFyZW50KCkuY3NzKHtsZWZ0OmYsdG9wOmEsd2lkdGg6ayxoZWlnaHQ6
Z30pO2ouYXR0cj0KKCJ3aWR0aCIsayk7ai5hdHRyKCJoZWlnaHQiLGcpOyQuZWFjaCh3b3JrZmxv
dy5ub2RlcyxmdW5jdGlvbih0LHEpe2kuZmlsbFN0PQp5bGU9M0QiI0QyQzA5OSI7aS5zdHJva2VT
dHlsZT0zRCIjRDhCMzY1IjtpLmxpbmVXaWR0aD0zRDE7dmFyIHM9M0QkKHEuZWxlbWU9Cm50KSxu
PTNEcy5wb3NpdGlvbigpLGM9M0RuLmxlZnQvZCprLHI9M0RuLnRvcC9sKmcsbz0zRHMud2lkdGgo
KS9kKmsscD0zRHMuaD0KZWlnaHQoKS9sKmc7aWYocS50b29sX2Vycm9ycyl7aS5maWxsU3R5bGU9
M0QiI0ZGQ0NDQyI7aS5zdHJva2VTdHlsZT0zRCIjQUE2PQo2NjYifWVsc2V7aWYocS53b3JrZmxv
d19vdXRwdXRzIT0zRHVuZGVmaW5lZCYmcS53b3JrZmxvd19vdXRwdXRzLmxlbmd0aD4wKXs9Cmku
ZmlsbFN0eWxlPTNEIiNFOEE5MkQiO2kuc3Ryb2tlU3R5bGU9M0QiI0U4QTkyRCJ9fWkuZmlsbFJl
Y3QoYyxyLG8scCk7aS5zdD0Kcm9rZVJlY3QoYyxyLG8scCl9KTt0aGlzLnVwZGF0ZV92aWV3cG9y
dF9vdmVybGF5KCl9fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZnVuY3Rpb24gQ29s
bGVjdGlvblR5cGVEZXNjcmlwdGlvbihhKXt0aGlzLmNvbGxlY3Rpb25UeXBlPTNEYTt0aGlzLmlz
Q29sbGU9CmN0aW9uPTNEdHJ1ZTt0aGlzLnJhbms9M0RhLnNwbGl0KCI6IikubGVuZ3RofSQuZXh0
ZW5kKENvbGxlY3Rpb25UeXBlRGVzY3JpcD0KdGlvbi5wcm90b3R5cGUse2FwcGVuZDpmdW5jdGlv
bihhKXtpZihhPTNEPTNEPTNETlVMTF9DT0xMRUNUSU9OX1RZUEVfREVTQ1JJPQpQVElPTil7cmV0
dXJuIHRoaXN9aWYoYT0zRD0zRD0zREFOWV9DT0xMRUNUSU9OX1RZUEVfREVTQ1JJUFRJT04pe3Jl
dHVybiBvdGg9CmVyQ29sbGVjdGlvblR5cGV9cmV0dXJuIG5ldyBDb2xsZWN0aW9uVHlwZURlc2Ny
aXB0aW9uKHRoaXMuY29sbGVjdGlvblR5cGUrIj0KOiIrYS5jb2xsZWN0aW9uVHlwZSl9LGNhbk1h
dGNoOmZ1bmN0aW9uKGEpe2lmKGE9M0Q9M0Q9M0ROVUxMX0NPTExFQ1RJT05fVFlQPQpFX0RFU0NS
SVBUSU9OKXtyZXR1cm4gZmFsc2V9aWYoYT0zRD0zRD0zREFOWV9DT0xMRUNUSU9OX1RZUEVfREVT
Q1JJUFRJT04pe3I9CmV0dXJuIHRydWV9cmV0dXJuIGEuY29sbGVjdGlvblR5cGU9M0Q9M0R0aGlz
LmNvbGxlY3Rpb25UeXBlfSxjYW5NYXBPdmVyOmZ1bj0KY3Rpb24oYil7aWYoYj0zRD0zRD0zRE5V
TExfQ09MTEVDVElPTl9UWVBFX0RFU0NSSVBUSU9OKXtyZXR1cm4gZmFsc2V9aWYoYj0KPTNEPTNE
PTNEQU5ZX0NPTExFQ1RJT05fVFlQRV9ERVNDUklQVElPTil7cmV0dXJuIGZhbHNlfWlmKHRoaXMu
cmFuazw9M0RiLnJhPQpuayl7cmV0dXJuIGZhbHNlfXZhciBhPTNEYi5jb2xsZWN0aW9uVHlwZTty
ZXR1cm4gdGhpcy5fZW5kc1dpdGgodGhpcy5jb2xsZWM9CnRpb25UeXBlLGEpfSxlZmZlY3RpdmVN
YXBPdmVyOmZ1bmN0aW9uKGEpe3ZhciBjPTNEYS5jb2xsZWN0aW9uVHlwZTt2YXIgYj0zRD0KdGhp
cy5jb2xsZWN0aW9uVHlwZS5zdWJzdHJpbmcoMCx0aGlzLmNvbGxlY3Rpb25UeXBlLmxlbmd0aC1j
Lmxlbmd0aC0xKTtyZXR1PQpybiBuZXcgQ29sbGVjdGlvblR5cGVEZXNjcmlwdGlvbihiKX0sZXF1
YWw6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuY29sbGVjdGlvblQ9CnlwZT0zRD0zRHRoaXMuY29sbGVj
dGlvblR5cGV9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIkNvbGxlY3Rpb25UeXBlWyIrdD0K
aGlzLmNvbGxlY3Rpb25UeXBlKyJdIn0sX2VuZHNXaXRoOmZ1bmN0aW9uKGIsYSl7cmV0dXJuIGIu
aW5kZXhPZihhLGIubGVuZ3RoPQotYS5sZW5ndGgpIT0zRD0zRC0xfX0pO05VTExfQ09MTEVDVElP
Tl9UWVBFX0RFU0NSSVBUSU9OPTNEe2lzQ29sbGVjdGlvbjpmYWw9CnNlLGNhbk1hdGNoOmZ1bmN0
aW9uKGEpe3JldHVybiBmYWxzZX0sY2FuTWFwT3ZlcjpmdW5jdGlvbihhKXtyZXR1cm4gZmFsc2V9
LD0KdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iTnVsbENvbGxlY3Rpb25UeXBlW10ifSxhcHBl
bmQ6ZnVuY3Rpb24oYSl7cmV0dXJuPQogYX0sZXF1YWw6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9M0Q9
M0Q9M0R0aGlzfX07QU5ZX0NPTExFQ1RJT05fVFlQRV9ERVNDUklQVEk9Ck9OPTNEe2lzQ29sbGVj
dGlvbjp0cnVlLGNhbk1hdGNoOmZ1bmN0aW9uKGEpe3JldHVybiBOVUxMX0NPTExFQ1RJT05fVFlQ
RV9ERT0KU0NSSVBUSU9OIT0zRD0zRGF9LGNhbk1hcE92ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIGZh
bHNlfSx0b1N0cmluZzpmdW5jdGlvbigpPQp7cmV0dXJuIkFueUNvbGxlY3Rpb25UeXBlW10ifSxh
cHBlbmQ6ZnVuY3Rpb24oYSl7dGhyb3ciQ2Fubm90IGFwcGVuZCB0byBBTlk9Cl9DT0xMRUNUSU9O
X1RZUEVfREVTQ1JJUFRJT04ifSxlcXVhbDpmdW5jdGlvbihhKXtyZXR1cm4gYT0zRD0zRD0zRHRo
aXN9fTt2YT0KciBUZXJtaW5hbE1hcHBpbmc9M0RCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe2luaXRp
YWxpemU6ZnVuY3Rpb24oYSl7dGhpcy5tYXBPPQp2ZXI9M0RhLm1hcE92ZXJ8fE5VTExfQ09MTEVD
VElPTl9UWVBFX0RFU0NSSVBUSU9OO3RoaXMudGVybWluYWw9M0RhLnRlcm1pbmE9Cmw7dGhpcy50
ZXJtaW5hbC50ZXJtaW5hbE1hcHBpbmc9M0R0aGlzfSxkaXNhYmxlTWFwT3ZlcjpmdW5jdGlvbigp
e3RoaXMuc2V0TT0KYXBPdmVyKE5VTExfQ09MTEVDVElPTl9UWVBFX0RFU0NSSVBUSU9OKX0sc2V0
TWFwT3ZlcjpmdW5jdGlvbihhKXt0aGlzLm1hcE92PQplcj0zRGE7dGhpcy50cmlnZ2VyKCJjaGFu
Z2UiKX19KTt2YXIgVGVybWluYWxNYXBwaW5nVmlldz0zREJhY2tib25lLlZpZXcuZXg9CnRlbmQo
e3RhZ05hbWU6ImRpdiIsY2xhc3NOYW1lOiJmYS1pY29uLWJ1dHRvbiBmYSBmYS1mb2xkZXItbyIs
aW5pdGlhbGl6ZTpmdT0KbmN0aW9uKGIpe3ZhciBhPTNEIlJ1biB0b29sIGluIHBhcmFsbGVsIG92
ZXIgY29sbGVjdGlvbiI7dGhpcy4kZWwudG9vbHRpcCh7PQpkZWxheTo1MDAsdGl0bGU6YX0pO3Ro
aXMubW9kZWwuYmluZCgiY2hhbmdlIixfLmJpbmQodGhpcy5yZW5kZXIsdGhpcykpfSxyZW49CmRl
cjpmdW5jdGlvbigpe2lmKHRoaXMubW9kZWwubWFwT3Zlci5pc0NvbGxlY3Rpb24pe3RoaXMuJGVs
LnNob3coKX1lbHNle3RoaT0Kcy4kZWwuaGlkZSgpfX0sfSk7dmFyIElucHV0VGVybWluYWxNYXBw
aW5nVmlldz0zRFRlcm1pbmFsTWFwcGluZ1ZpZXcuZXh0ZW5kPQooe2V2ZW50czp7Y2xpY2s6Im9u
Q2xpY2siLG1vdXNlZW50ZXI6Im9uTW91c2VFbnRlciIsbW91c2VsZWF2ZToib25Nb3VzZUxlYXY9
CmUiLH0sb25Nb3VzZUVudGVyOmZ1bmN0aW9uKGIpe3ZhciBhPTNEdGhpcy5tb2RlbDtpZighYS50
ZXJtaW5hbC5jb25uZWN0ZWQoKT0KJiZhLm1hcE92ZXIuaXNDb2xsZWN0aW9uKXt0aGlzLiRlbC5j
c3MoImNvbG9yIiwicmVkIil9fSxvbk1vdXNlTGVhdmU6ZnVuY3RpPQpvbihhKXt0aGlzLiRlbC5j
c3MoImNvbG9yIiwiYmxhY2siKX0sb25DbGljazpmdW5jdGlvbihiKXt2YXIgYT0zRHRoaXMubW9k
ZWw9CjtpZighYS50ZXJtaW5hbC5jb25uZWN0ZWQoKSYmYS5tYXBPdmVyLmlzQ29sbGVjdGlvbil7
YS50ZXJtaW5hbC5yZXNldE1hcHBpbj0KZygpfX0sfSk7dmFyIElucHV0VGVybWluYWxNYXBwaW5n
PTNEVGVybWluYWxNYXBwaW5nO3ZhciBJbnB1dENvbGxlY3Rpb25UZXJtPQppbmFsTWFwcGluZz0z
RFRlcm1pbmFsTWFwcGluZzt2YXIgT3V0cHV0VGVybWluYWxNYXBwaW5nPTNEVGVybWluYWxNYXBw
aW5nO3Y9CmFyIE91dHB1dFRlcm1pbmFsTWFwcGluZ1ZpZXc9M0RUZXJtaW5hbE1hcHBpbmdWaWV3
O3ZhciBJbnB1dENvbGxlY3Rpb25UZXJtaT0KbmFsTWFwcGluZ1ZpZXc9M0RJbnB1dFRlcm1pbmFs
TWFwcGluZ1ZpZXc7dmFyIE91dHB1dENvbGxlY3Rpb25UZXJtaW5hbE1hcHBpPQpuZz0zRFRlcm1p
bmFsTWFwcGluZzt2YXIgT3V0cHV0Q29sbGVjdGlvblRlcm1pbmFsTWFwcGluZ1ZpZXc9M0RUZXJt
aW5hbE1hcHA9CmluZ1ZpZXc7dmFyIFRlcm1pbmFsPTNEQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHtp
bml0aWFsaXplOmZ1bmN0aW9uKGEpe3RoaXMuZT0KbGVtZW50PTNEYS5lbGVtZW50O3RoaXMuY29u
bmVjdG9ycz0zRFtdfSxjb25uZWN0OmZ1bmN0aW9uKGEpe3RoaXMuY29ubmVjdG9yPQpzLnB1c2go
YSk7aWYodGhpcy5ub2RlKXt0aGlzLm5vZGUubWFya0NoYW5nZWQoKX19LGRpc2Nvbm5lY3Q6ZnVu
Y3Rpb24oYSl7dGg9CmlzLmNvbm5lY3RvcnMuc3BsaWNlKCQuaW5BcnJheShhLHRoaXMuY29ubmVj
dG9ycyksMSk7aWYodGhpcy5ub2RlKXt0aGlzLm5vZD0KZS5tYXJrQ2hhbmdlZCgpO3RoaXMucmVz
ZXRNYXBwaW5nSWZOZWVkZWQoKX19LHJlZHJhdzpmdW5jdGlvbigpeyQuZWFjaCh0aGlzPQouY29u
bmVjdG9ycyxmdW5jdGlvbihhLGIpe2IucmVkcmF3KCl9KX0sZGVzdHJveTpmdW5jdGlvbigpeyQu
ZWFjaCh0aGlzLmNvbm49CmVjdG9ycy5zbGljZSgpLGZ1bmN0aW9uKGEsYil7Yi5kZXN0cm95KCl9
KX0sZGVzdHJveUludmFsaWRDb25uZWN0aW9uczpmdW5jdD0KaW9uKCl7Xy5lYWNoKHRoaXMuY29u
bmVjdG9ycyxmdW5jdGlvbihhKXthLmRlc3Ryb3lJZkludmFsaWQoKX0pfSxzZXRNYXBPdmVyPQo6
ZnVuY3Rpb24oYSl7aWYodGhpcy5tdWx0aXBsZSl7cmV0dXJufWlmKCF0aGlzLm1hcE92ZXIoKS5l
cXVhbChhKSl7dGhpcy50ZXI9Cm1pbmFsTWFwcGluZy5zZXRNYXBPdmVyKGEpO18uZWFjaCh0aGlz
Lm5vZGUub3V0cHV0X3Rlcm1pbmFscyxmdW5jdGlvbihiKXtiLj0Kc2V0TWFwT3ZlcihhKX0pfX0s
bWFwT3ZlcjpmdW5jdGlvbigpe2lmKCF0aGlzLnRlcm1pbmFsTWFwcGluZyl7cmV0dXJuIE5VTExf
PQpDT0xMRUNUSU9OX1RZUEVfREVTQ1JJUFRJT059ZWxzZXtyZXR1cm4gdGhpcy50ZXJtaW5hbE1h
cHBpbmcubWFwT3Zlcn19LGlzTWE9CnBwZWRPdmVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGVy
bWluYWxNYXBwaW5nJiZ0aGlzLnRlcm1pbmFsTWFwcGluZy5tYXBPdj0KZXIuaXNDb2xsZWN0aW9u
fSxyZXNldE1hcHBpbmc6ZnVuY3Rpb24oKXt0aGlzLnRlcm1pbmFsTWFwcGluZy5kaXNhYmxlTWFw
T3ZlPQpyKCl9LHJlc2V0TWFwcGluZ0lmTmVlZGVkOmZ1bmN0aW9uKCl7fSx9KTt2YXIgT3V0cHV0
VGVybWluYWw9M0RUZXJtaW5hbC5leHQ9CmVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbihhKXtUZXJt
aW5hbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsYSk7dGhpcz0KLmRhdGF0eXBlcz0z
RGEuZGF0YXR5cGVzfSxyZXNldE1hcHBpbmdJZk5lZWRlZDpmdW5jdGlvbigpe2lmKCF0aGlzLm5v
ZGUuaGFzPQpDb25uZWN0ZWRPdXRwdXRUZXJtaW5hbHMoKSYmIXRoaXMubm9kZS5oYXNDb25uZWN0
ZWRNYXBwZWRJbnB1dFRlcm1pbmFscygpKXs9Cl8uZWFjaCh0aGlzLm5vZGUubWFwcGVkSW5wdXRU
ZXJtaW5hbHMoKSxmdW5jdGlvbihiKXtiLnJlc2V0TWFwcGluZ0lmTmVlZGVkKD0KKX0pfXZhciBh
PTNEIXRoaXMubm9kZS5oYXNNYXBwZWRPdmVySW5wdXRUZXJtaW5hbHMoKTtpZihhKXt0aGlzLnJl
c2V0TWFwcGluPQpnKCl9fSxyZXNldE1hcHBpbmc6ZnVuY3Rpb24oKXt0aGlzLnRlcm1pbmFsTWFw
cGluZy5kaXNhYmxlTWFwT3ZlcigpO18uZWFjaCg9CnRoaXMuY29ubmVjdG9ycyxmdW5jdGlvbihh
KXt2YXIgYj0zRGEuaGFuZGxlMjtpZihiKXtiLnJlc2V0TWFwcGluZ0lmTmVlZGVkKD0KKTthLmRl
c3Ryb3lJZkludmFsaWQoKX19KX19KTt2YXIgQmFzZUlucHV0VGVybWluYWw9M0RUZXJtaW5hbC5l
eHRlbmQoe2luaXRpPQphbGl6ZTpmdW5jdGlvbihhKXtUZXJtaW5hbC5wcm90b3R5cGUuaW5pdGlh
bGl6ZS5jYWxsKHRoaXMsYSk7dGhpcy51cGRhdGUoYS49CmlucHV0KX0sY2FuQWNjZXB0OmZ1bmN0
aW9uKGEpe2lmKHRoaXMuX2lucHV0RmlsbGVkKCkpe3JldHVybiBmYWxzZX1lbHNle3JldD0KdXJu
IHRoaXMuYXR0YWNoYWJsZShhKX19LHJlc2V0TWFwcGluZ0lmTmVlZGVkOmZ1bmN0aW9uKCl7dmFy
IGI9M0R0aGlzLm1hcE92PQplcigpO2lmKCFiLmlzQ29sbGVjdGlvbil7cmV0dXJufXZhciBhPTNE
dGhpcy5ub2RlLmhhc0Nvbm5lY3RlZE1hcHBlZElucHV0VGU9CnJtaW5hbHMoKXx8KCF0aGlzLm5v
ZGUuaGFzQ29ubmVjdGVkT3V0cHV0VGVybWluYWxzKCkpO2lmKGEpe3RoaXMucmVzZXRNYXBwaT0K
bmcoKX19LHJlc2V0TWFwcGluZzpmdW5jdGlvbigpe3RoaXMudGVybWluYWxNYXBwaW5nLmRpc2Fi
bGVNYXBPdmVyKCk7aWYoIXRoPQppcy5ub2RlLmhhc01hcHBlZE92ZXJJbnB1dFRlcm1pbmFscygp
KXtfLmVhY2godGhpcy5ub2RlLm91dHB1dF90ZXJtaW5hbHMsZnU9Cm5jdGlvbihhKXthLnJlc2V0
TWFwcGluZygpfSl9fSxjb25uZWN0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25uZWN0b3Jz
Lj0KbGVuZ3RoIT0zRD0zRDB9LF9pbnB1dEZpbGxlZDpmdW5jdGlvbigpe3ZhciBhO2lmKCF0aGlz
LmNvbm5lY3RlZCgpKXthPTNEZmFsPQpzZX1lbHNle2lmKHRoaXMubXVsdGlwbGUpe2lmKHRoaXMu
X2NvbGxlY3Rpb25BdHRhY2hlZCgpKXtpbnB1dHNGaWxsZWQ9M0R0cnU9CmV9ZWxzZXthPTNEZmFs
c2V9fWVsc2V7YT0zRHRydWV9fXJldHVybiBhfSxfY29sbGVjdGlvbkF0dGFjaGVkOmZ1bmN0aW9u
KCl7aT0KZighdGhpcy5jb25uZWN0ZWQoKSl7cmV0dXJuIGZhbHNlfWVsc2V7dmFyIGE9M0R0aGlz
LmNvbm5lY3RvcnNbMF0uaGFuZGxlMTtpPQpmKCFhKXtyZXR1cm4gZmFsc2V9ZWxzZXtpZihhLmlz
RGF0YUNvbGxlY3Rpb25JbnB1dHx8YS5pc01hcHBlZE92ZXIoKXx8YS5kYXQ9CmF0eXBlcy5pbmRl
eE9mKCJpbnB1dF9jb2xsZWN0aW9uIik+MCl7cmV0dXJuIHRydWV9ZWxzZXtyZXR1cm4gZmFsc2V9
fX19LF9tYT0KcHBpbmdDb25zdHJhaW50czpmdW5jdGlvbigpe2lmKCF0aGlzLm5vZGUpe3JldHVy
bltdfXZhciBiPTNEdGhpcy5tYXBPdmVyKCk7PQppZihiLmlzQ29sbGVjdGlvbil7cmV0dXJuW2Jd
fXZhciBhPTNEW107aWYoIXRoaXMubm9kZS5oYXNDb25uZWN0ZWRPdXRwdXRUZXI9Cm1pbmFscygp
KXtfLmVhY2godGhpcy5ub2RlLmNvbm5lY3RlZE1hcHBlZElucHV0VGVybWluYWxzKCksZnVuY3Rp
b24oYyl7YS5wdT0Kc2goYy5tYXBPdmVyKCkpfSl9ZWxzZXthLnB1c2goXy5maXJzdChfLnZhbHVl
cyh0aGlzLm5vZGUub3V0cHV0X3Rlcm1pbmFscykpPQoubWFwT3ZlcigpKX1yZXR1cm4gYX0sX3By
b2R1Y2VzQWNjZXB0YWJsZURhdGF0eXBlOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYyBpbiA9CnRoaXMu
ZGF0YXR5cGVzKXt2YXIgZj0zRG5ldyBBcnJheSgpO2Y9M0RmLmNvbmNhdChhLmRhdGF0eXBlcyk7
aWYoYS5ub2RlLnBvcz0KdF9qb2JfYWN0aW9ucyl7Zm9yKHZhciBkIGluIGEubm9kZS5wb3N0X2pv
Yl9hY3Rpb25zKXt2YXIgZz0zRGEubm9kZS5wb3N0X2pvPQpiX2FjdGlvbnNbZF07aWYoZy5hY3Rp
b25fdHlwZT0zRD0zRCJDaGFuZ2VEYXRhdHlwZUFjdGlvbiImJihnLm91dHB1dF9uYW1lPQo9M0Q9
M0QiInx8Zy5vdXRwdXRfbmFtZT0zRD0zRGEubmFtZSkmJmcuYWN0aW9uX2FyZ3VtZW50cyl7Zi5w
dXNoKGcuYWN0aW9uX2E9CnJndW1lbnRzLm5ld3R5cGUpfX19Zm9yKHZhciBiIGluIGYpe3ZhciBo
PTNEZltiXTtpZihoPTNEPTNEImlucHV0Inx8aD0zRD0zRD0KImlucHV0X2NvbGxlY3Rpb24ifHxp
c3N1YnR5cGUoZltiXSx0aGlzLmRhdGF0eXBlc1tjXSkpe3JldHVybiB0cnVlfX19cmV0dXJuPQog
ZmFsc2V9LF9vdGhlckNvbGxlY3Rpb25UeXBlOmZ1bmN0aW9uKGEpe3ZhciBjPTNETlVMTF9DT0xM
RUNUSU9OX1RZUEVfREVTQ1I9CklQVElPTjtpZihhLmlzRGF0YUNvbGxlY3Rpb25JbnB1dCl7Yz0z
RGEuY29sbGVjdGlvblR5cGV9ZWxzZXt2YXIgYj0zRGEubWFwTz0KdmVyKCk7aWYoYi5pc0NvbGxl
Y3Rpb24pe2M9M0RifX1yZXR1cm4gY30sfSk7dmFyIElucHV0VGVybWluYWw9M0RCYXNlSW5wdXRU
PQplcm1pbmFsLmV4dGVuZCh7dXBkYXRlOmZ1bmN0aW9uKGEpe3RoaXMuZGF0YXR5cGVzPTNEYS5l
eHRlbnNpb25zO3RoaXMubXVsdGk9CnBsZT0zRGEubXVsdGlwbGU7dGhpcy5jb2xsZWN0aW9uPTNE
ZmFsc2V9LGNvbm5lY3Q6ZnVuY3Rpb24oYSl7QmFzZUlucHV0VGVybT0KaW5hbC5wcm90b3R5cGUu
Y29ubmVjdC5jYWxsKHRoaXMsYSk7dmFyIGI9M0RhLmhhbmRsZTE7aWYoIWIpe3JldHVybn12YXIg
Yz0KPTNEdGhpcy5fb3RoZXJDb2xsZWN0aW9uVHlwZShiKTtpZihjLmlzQ29sbGVjdGlvbil7dGhp
cy5zZXRNYXBPdmVyKGMpfX0sYXR0PQphY2hhYmxlOmZ1bmN0aW9uKGIpe3ZhciBkPTNEdGhpcy5f
b3RoZXJDb2xsZWN0aW9uVHlwZShiKTt2YXIgYT0zRHRoaXMubWFwT3Y9CmVyKCk7aWYoZC5pc0Nv
bGxlY3Rpb24pe2lmKHRoaXMubXVsdGlwbGUpe2lmKHRoaXMuY29ubmVjdGVkKCkmJiF0aGlzLl9j
b2xsZT0KY3Rpb25BdHRhY2hlZCgpKXtyZXR1cm4gZmFsc2V9aWYoZC5yYW5rPTNEPTNEMSl7cmV0
dXJuIHRoaXMuX3Byb2R1Y2VzQWNjZXB0PQphYmxlRGF0YXR5cGUoYil9ZWxzZXtyZXR1cm4gZmFs
c2V9fWlmKGEuaXNDb2xsZWN0aW9uJiZhLmNhbk1hdGNoKGQpKXtyZXR1cm49CiB0aGlzLl9wcm9k
dWNlc0FjY2VwdGFibGVEYXRhdHlwZShiKX1lbHNle3ZhciBjPTNEdGhpcy5fbWFwcGluZ0NvbnN0
cmFpbnRzKD0KKTtpZihjLmV2ZXJ5KF8uYmluZChkLmNhbk1hdGNoLGQpKSl7cmV0dXJuIHRoaXMu
X3Byb2R1Y2VzQWNjZXB0YWJsZURhdGF0eXBlPQooYil9ZWxzZXtyZXR1cm4gZmFsc2V9fX1lbHNl
e2lmKGEuaXNDb2xsZWN0aW9uKXtyZXR1cm4gZmFsc2V9fXJldHVybiB0aGlzLl89CnByb2R1Y2Vz
QWNjZXB0YWJsZURhdGF0eXBlKGIpfX0pO3ZhciBJbnB1dENvbGxlY3Rpb25UZXJtaW5hbD0zREJh
c2VJbnB1dFRlcj0KbWluYWwuZXh0ZW5kKHt1cGRhdGU6ZnVuY3Rpb24oYSl7dGhpcy5tdWx0aXBs
ZT0zRGZhbHNlO3RoaXMuY29sbGVjdGlvbj0zRHRyPQp1ZTt0aGlzLmRhdGF0eXBlcz0zRGEuZXh0
ZW5zaW9ucztpZihhLmNvbGxlY3Rpb25fdHlwZSl7dGhpcy5jb2xsZWN0aW9uVHlwZT0KPTNEbmV3
IENvbGxlY3Rpb25UeXBlRGVzY3JpcHRpb24oYS5jb2xsZWN0aW9uX3R5cGUpfWVsc2V7dGhpcy5j
b2xsZWN0aW9uVHlwPQplPTNEQU5ZX0NPTExFQ1RJT05fVFlQRV9ERVNDUklQVElPTn19LGNvbm5l
Y3Q6ZnVuY3Rpb24oYil7QmFzZUlucHV0VGVybWluYWw9Ci5wcm90b3R5cGUuY29ubmVjdC5jYWxs
KHRoaXMsYik7dmFyIGE9M0RiLmhhbmRsZTE7aWYoIWEpe3JldHVybn12YXIgYz0zRHRoaT0Kcy5f
ZWZmZWN0aXZlTWFwT3ZlcihhKTt0aGlzLnNldE1hcE92ZXIoYyl9LF9lZmZlY3RpdmVNYXBPdmVy
OmZ1bmN0aW9uKGEpe3ZhPQpyIGI9M0R0aGlzLmNvbGxlY3Rpb25UeXBlO3ZhciBjPTNEdGhpcy5f
b3RoZXJDb2xsZWN0aW9uVHlwZShhKTtpZighYi5jYW5NYXQ9CmNoKGMpKXtyZXR1cm4gYy5lZmZl
Y3RpdmVNYXBPdmVyKGIpfWVsc2V7cmV0dXJuIE5VTExfQ09MTEVDVElPTl9UWVBFX0RFU0NSST0K
UFRJT059fSxfZWZmZWN0aXZlQ29sbGVjdGlvblR5cGU6ZnVuY3Rpb24oKXt2YXIgYj0zRHRoaXMu
Y29sbGVjdGlvblR5cGU7dmFyPQogYT0zRHRoaXMubWFwT3ZlcigpO3JldHVybiBhLmFwcGVuZChi
KX0sYXR0YWNoYWJsZTpmdW5jdGlvbihiKXt2YXIgZz0zRHRoaXM9Ci5fb3RoZXJDb2xsZWN0aW9u
VHlwZShiKTtpZihnLmlzQ29sbGVjdGlvbil7dmFyIGY9M0R0aGlzLl9lZmZlY3RpdmVDb2xsZWN0
aT0Kb25UeXBlKCk7dmFyIGE9M0R0aGlzLm1hcE92ZXIoKTtpZihmLmNhbk1hdGNoKGcpKXtyZXR1
cm4gdGhpcy5fcHJvZHVjZXNBY2NlPQpwdGFibGVEYXRhdHlwZShiKX1lbHNle2lmKGEuaXNDb2xs
ZWN0aW9uKXtyZXR1cm4gZmFsc2V9ZWxzZXtpZihnLmNhbk1hcE92ZXI9Cih0aGlzLmNvbGxlY3Rp
b25UeXBlKSl7dmFyIGQ9M0R0aGlzLl9lZmZlY3RpdmVNYXBPdmVyKGIpO2lmKCFkLmlzQ29sbGVj
dGlvbj0KKXtyZXR1cm4gZmFsc2V9dmFyIGM9M0R0aGlzLl9tYXBwaW5nQ29uc3RyYWludHMoKTtp
ZihjLmV2ZXJ5KGQuY2FuTWF0Y2gpKXtyPQpldHVybiB0aGlzLl9wcm9kdWNlc0FjY2VwdGFibGVE
YXRhdHlwZShiKX19fX19cmV0dXJuIGZhbHNlfX0pO3ZhciBPdXRwdXRDb2w9CmxlY3Rpb25UZXJt
aW5hbD0zRFRlcm1pbmFsLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbihhKXtUZXJtaW5hbC5w
cm90b3R5cD0KZS5pbml0aWFsaXplLmNhbGwodGhpcyxhKTt0aGlzLmRhdGF0eXBlcz0zRGEuZGF0
YXR5cGVzO3RoaXMuY29sbGVjdGlvblR5cGU9Cj0zRG5ldyBDb2xsZWN0aW9uVHlwZURlc2NyaXB0
aW9uKGEuY29sbGVjdGlvbl90eXBlKTt0aGlzLmlzRGF0YUNvbGxlY3Rpb25Jbj0KcHV0PTNEdHJ1
ZX0sdXBkYXRlOmZ1bmN0aW9uKGEpe3ZhciBiPTNEbmV3IENvbGxlY3Rpb25UeXBlRGVzY3JpcHRp
b24oYS5jb2xsPQplY3Rpb25fdHlwZSk7aWYoYi5jb2xsZWN0aW9uVHlwZSE9M0R0aGlzLmNvbGxl
Y3Rpb25UeXBlLmNvbGxlY3Rpb25UeXBlKXtfLmU9CmFjaCh0aGlzLmNvbm5lY3RvcnMsZnVuY3Rp
b24oYyl7Yy5kZXN0cm95KCl9KX10aGlzLmNvbGxlY3Rpb25UeXBlPTNEYn19KTtmdT0KbmN0aW9u
IENvbm5lY3RvcihiLGEpe3RoaXMuY2FudmFzPTNEbnVsbDt0aGlzLmRyYWdnaW5nPTNEZmFsc2U7
dGhpcy5pbm5lcl9jPQpvbG9yPTNEIiNGRkZGRkYiO3RoaXMub3V0ZXJfY29sb3I9M0QiI0Q4QjM2
NSI7aWYoYiYmYSl7dGhpcy5jb25uZWN0KGIsYSl9fSQ9Ci5leHRlbmQoQ29ubmVjdG9yLnByb3Rv
dHlwZSx7Y29ubmVjdDpmdW5jdGlvbihiLGEpe3RoaXMuaGFuZGxlMT0zRGI7aWYodGhpcz0KLmhh
bmRsZTEpe3RoaXMuaGFuZGxlMS5jb25uZWN0KHRoaXMpfXRoaXMuaGFuZGxlMj0zRGE7aWYodGhp
cy5oYW5kbGUyKXt0aGlzPQouaGFuZGxlMi5jb25uZWN0KHRoaXMpfX0sZGVzdHJveTpmdW5jdGlv
bigpe2lmKHRoaXMuaGFuZGxlMSl7dGhpcy5oYW5kbGUxLmQ9CmlzY29ubmVjdCh0aGlzKX1pZih0
aGlzLmhhbmRsZTIpe3RoaXMuaGFuZGxlMi5kaXNjb25uZWN0KHRoaXMpfSQodGhpcy5jYW52YT0K
cykucmVtb3ZlKCl9LGRlc3Ryb3lJZkludmFsaWQ6ZnVuY3Rpb24oKXtpZih0aGlzLmhhbmRsZTEm
JnRoaXMuaGFuZGxlMiYmIXRoPQppcy5oYW5kbGUyLmF0dGFjaGFibGUodGhpcy5oYW5kbGUxKSl7
dGhpcy5kZXN0cm95KCl9fSxyZWRyYXc6ZnVuY3Rpb24oKXt2YXI9CiBmPTNEJCgiI2NhbnZhcy1j
b250YWluZXIiKTtpZighdGhpcy5jYW52YXMpe3RoaXMuY2FudmFzPTNEZG9jdW1lbnQuY3JlYXRl
RT0KbGVtZW50KCJjYW52YXMiKTtpZih3aW5kb3cuR192bWxDYW52YXNNYW5hZ2VyKXtHX3ZtbENh
bnZhc01hbmFnZXIuaW5pdEVsZW1lPQpudCh0aGlzLmNhbnZhcyl9Zi5hcHBlbmQoJCh0aGlzLmNh
bnZhcykpO2lmKHRoaXMuZHJhZ2dpbmcpe3RoaXMuY2FudmFzLnN0eWw9CmUuekluZGV4PTNEIjMw
MCJ9fXZhciB2PTNEZnVuY3Rpb24oYyl7cmV0dXJuICQoYykub2Zmc2V0KCkubGVmdC1mLm9mZnNl
dCgpLj0KbGVmdH07dmFyIHA9M0RmdW5jdGlvbihjKXtyZXR1cm4gJChjKS5vZmZzZXQoKS50b3At
Zi5vZmZzZXQoKS50b3B9O2lmKCF0aGlzPQouaGFuZGxlMXx8IXRoaXMuaGFuZGxlMil7cmV0dXJu
fXZhciBvPTNEdih0aGlzLmhhbmRsZTEuZWxlbWVudCkrNTt2YXIgbj0zRHA9Cih0aGlzLmhhbmRs
ZTEuZWxlbWVudCkrNTt2YXIgeD0zRHYodGhpcy5oYW5kbGUyLmVsZW1lbnQpKzU7dmFyIHU9M0Rw
KHRoaXMuaD0KYW5kbGUyLmVsZW1lbnQpKzU7dmFyIGs9M0QxMDA7dmFyIHI9M0RNYXRoLm1pbihv
LHgpO3ZhciBhPTNETWF0aC5tYXgobyx4KTt2PQphciBxPTNETWF0aC5taW4obix1KTt2YXIgQj0z
RE1hdGgubWF4KG4sdSk7dmFyIGQ9M0RNYXRoLm1pbihNYXRoLm1heChNYXRoLmE9CmJzKEItcSkv
MiwxMDApLDMwMCk7dmFyIHc9M0RyLWs7dmFyIEE9M0RxLWs7dmFyIHk9M0RhLXIrMiprO3ZhciBz
PTNEQi1xKzIqaz0KO3RoaXMuY2FudmFzLnN0eWxlLmxlZnQ9M0R3KyJweCI7dGhpcy5jYW52YXMu
c3R5bGUudG9wPTNEQSsicHgiO3RoaXMuY2FudmFzPQouc2V0QXR0cmlidXRlKCJ3aWR0aCIseSk7
dGhpcy5jYW52YXMuc2V0QXR0cmlidXRlKCJoZWlnaHQiLHMpO28tPTNEdztuLT0zREE9Cjt4LT0z
RHc7dS09M0RBO3ZhciB6PTNEdGhpcy5jYW52YXMuZ2V0Q29udGV4dCgiMmQiKSxoPTNEbnVsbCxs
PTNEbnVsbDt2YXIgZz0KPTNEMTtpZih0aGlzLmhhbmRsZTEmJnRoaXMuaGFuZGxlMS5pc01hcHBl
ZE92ZXIoKSl7dmFyIGg9M0RbLTYsLTMsMCwzLDZdO2c9Cj0zRDV9ZWxzZXt2YXIgaD0zRFswXX1p
Zih0aGlzLmhhbmRsZTImJnRoaXMuaGFuZGxlMi5pc01hcHBlZE92ZXIoKSl7dmFyIGw9Cj0zRFst
NiwtMywwLDMsNl07Zz0zRDV9ZWxzZXt2YXIgbD0zRFswXX12YXIgYj0zRHRoaXM7Zm9yKHZhciB0
PTNEMDt0PGc7dCsrKT0Ke3ZhciBtPTNENSxqPTNENztpZihoLmxlbmd0aD4xfHxsLmxlbmd0aD4x
KXttPTNEMTtqPTNEM31iLmRyYXdfb3V0bGluZWRfY3VyPQp2ZShvLG4seCx1LGQsbSxqLGhbdCVo
Lmxlbmd0aF0sbFt0JWwubGVuZ3RoXSl9fSxkcmF3X291dGxpbmVkX2N1cnZlOmZ1bmN0aW89Cm4o
aixpLGwsayxhLGIsZixnLGQpe3ZhciBnPTNEZ3x8MDt2YXIgZD0zRGR8fDA7dmFyIGg9M0R0aGlz
LmNhbnZhcy5nZXRDb250ZT0KeHQoIjJkIik7aC5saW5lQ2FwPTNEInJvdW5kIjtoLnN0cm9rZVN0
eWxlPTNEdGhpcy5vdXRlcl9jb2xvcjtoLmxpbmVXaWR0aD0KPTNEZjtoLmJlZ2luUGF0aCgpO2gu
bW92ZVRvKGosaStnKTtoLmJlemllckN1cnZlVG8oaithLGkrZyxsLWEsaytkLGwsaytkKTtoPQou
c3Ryb2tlKCk7aC5zdHJva2VTdHlsZT0zRHRoaXMuaW5uZXJfY29sb3I7aC5saW5lV2lkdGg9M0Ri
O2guYmVnaW5QYXRoKCk7aC49Cm1vdmVUbyhqLGkrZyk7aC5iZXppZXJDdXJ2ZVRvKGorYSxpK2cs
bC1hLGsrZCxsLGsrZCk7aC5zdHJva2UoKX19KTt2YXIgTm9kZT0KPTNEQmFja2JvbmUuTW9kZWwu
ZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKGEpe3RoaXMuZWxlbWVudD0zRGEuZWxlbWVudDt0
PQpoaXMuaW5wdXRfdGVybWluYWxzPTNEe307dGhpcy5vdXRwdXRfdGVybWluYWxzPTNEe307dGhp
cy50b29sX2Vycm9ycz0zRHt9fSw9CmNvbm5lY3RlZE91dHB1dFRlcm1pbmFsczpmdW5jdGlvbigp
e3JldHVybiB0aGlzLl9jb25uZWN0ZWRUZXJtaW5hbHModGhpcy5vdT0KdHB1dF90ZXJtaW5hbHMp
fSxfY29ubmVjdGVkVGVybWluYWxzOmZ1bmN0aW9uKGIpe3ZhciBhPTNEW107JC5lYWNoKGIsZnVu
Y3RpPQpvbihjLGQpe2lmKGQuY29ubmVjdG9ycy5sZW5ndGg+MCl7YS5wdXNoKGQpfX0pO3JldHVy
biBhfSxoYXNDb25uZWN0ZWRPdXRwdXQ9ClRlcm1pbmFsczpmdW5jdGlvbigpe3ZhciBhPTNEdGhp
cy5vdXRwdXRfdGVybWluYWxzO2Zvcih2YXIgYiBpbiBhKXtpZihhW2JdLj0KY29ubmVjdG9ycy5s
ZW5ndGg+MCl7cmV0dXJuIHRydWV9fXJldHVybiBmYWxzZX0sY29ubmVjdGVkTWFwcGVkSW5wdXRU
ZXJtaW5hPQpsczpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb25uZWN0ZWRNYXBwZWRUZXJtaW5h
bHModGhpcy5pbnB1dF90ZXJtaW5hbHMpfSw9Cmhhc0Nvbm5lY3RlZE1hcHBlZElucHV0VGVybWlu
YWxzOmZ1bmN0aW9uKCl7dmFyIGM9M0R0aGlzLmlucHV0X3Rlcm1pbmFscztmbz0Kcih2YXIgYiBp
biBjKXt2YXIgYT0zRGNbYl07aWYoYS5jb25uZWN0b3JzLmxlbmd0aD4wJiZhLmlzTWFwcGVkT3Zl
cigpKXtyZXR1PQpybiB0cnVlfX1yZXR1cm4gZmFsc2V9LF9jb25uZWN0ZWRNYXBwZWRUZXJtaW5h
bHM6ZnVuY3Rpb24oYil7dmFyIGE9M0RbXTskLmU9CmFjaChiLGZ1bmN0aW9uKGMsZCl7dmFyIGY9
M0RkLm1hcE92ZXIoKTtpZihmLmlzQ29sbGVjdGlvbil7aWYoZC5jb25uZWN0b3JzLj0KbGVuZ3Ro
PjApe2EucHVzaChkKX19fSk7cmV0dXJuIGF9LG1hcHBlZElucHV0VGVybWluYWxzOmZ1bmN0aW9u
KCl7cmV0dXJuIHRoPQppcy5fbWFwcGVkVGVybWluYWxzKHRoaXMuaW5wdXRfdGVybWluYWxzKX0s
X21hcHBlZFRlcm1pbmFsczpmdW5jdGlvbihiKXt2YXI9CiBhPTNEW107JC5lYWNoKGIsZnVuY3Rp
b24oYyxkKXt2YXIgZj0zRGQubWFwT3ZlcigpO2lmKGYuaXNDb2xsZWN0aW9uKXthLnB1cz0KaChk
KX19KTtyZXR1cm4gYX0saGFzTWFwcGVkT3ZlcklucHV0VGVybWluYWxzOmZ1bmN0aW9uKCl7dmFy
IGE9M0RmYWxzZTtfLmVhPQpjaCh0aGlzLmlucHV0X3Rlcm1pbmFscyxmdW5jdGlvbihiKXt2YXIg
Yz0zRGIubWFwT3ZlcigpO2lmKGMuaXNDb2xsZWN0aW9uKXs9CmE9M0R0cnVlfX0pO3JldHVybiBh
fSxyZWRyYXc6ZnVuY3Rpb24oKXskLmVhY2godGhpcy5pbnB1dF90ZXJtaW5hbHMsZnVuY3Rpbz0K
bihhLGIpe2IucmVkcmF3KCl9KTskLmVhY2godGhpcy5vdXRwdXRfdGVybWluYWxzLGZ1bmN0aW9u
KGEsYil7Yi5yZWRyYXcoKX0pPQp9LGRlc3Ryb3k6ZnVuY3Rpb24oKXskLmVhY2godGhpcy5pbnB1
dF90ZXJtaW5hbHMsZnVuY3Rpb24oYSxiKXtiLmRlc3Ryb3koKX09Cik7JC5lYWNoKHRoaXMub3V0
cHV0X3Rlcm1pbmFscyxmdW5jdGlvbihhLGIpe2IuZGVzdHJveSgpfSk7d29ya2Zsb3cucmVtb3Zl
Xz0Kbm9kZSh0aGlzKTskKHRoaXMuZWxlbWVudCkucmVtb3ZlKCl9LG1ha2VfYWN0aXZlOmZ1bmN0
aW9uKCl7JCh0aGlzLmVsZW1lbnQpPQouYWRkQ2xhc3MoInRvb2xGb3JtLWFjdGl2ZSIpfSxtYWtl
X2luYWN0aXZlOmZ1bmN0aW9uKCl7dmFyIGE9M0R0aGlzLmVsZW1lbnQ9Ci5nZXQoMCk7KGZ1bmN0
aW9uKGIpe2IucmVtb3ZlQ2hpbGQoYSk7Yi5hcHBlbmRDaGlsZChhKX0pKGEucGFyZW50Tm9kZSk7
JChhKT0KLnJlbW92ZUNsYXNzKCJ0b29sRm9ybS1hY3RpdmUiKX0saW5pdF9maWVsZF9kYXRhOmZ1
bmN0aW9uKGIpe2lmKGIudHlwZSl7dGhpPQpzLnR5cGU9M0RiLnR5cGV9dGhpcy5uYW1lPTNEYi5u
YW1lO3RoaXMuZm9ybV9odG1sPTNEYi5mb3JtX2h0bWw7dGhpcy50b29sX3M9CnRhdGU9M0RiLnRv
b2xfc3RhdGU7dGhpcy50b29sX2Vycm9ycz0zRGIudG9vbF9lcnJvcnM7dGhpcy50b29sdGlwPTNE
Yi50b29sdD0KaXA/Yi50b29sdGlwOiIiO3RoaXMuYW5ub3RhdGlvbj0zRGIuYW5ub3RhdGlvbjt0
aGlzLnBvc3Rfam9iX2FjdGlvbnM9M0RiLnBvPQpzdF9qb2JfYWN0aW9ucz9iLnBvc3Rfam9iX2Fj
dGlvbnM6e307dGhpcy5sYWJlbD0zRGIubGFiZWw7dGhpcy51dWlkPTNEYi51dWk9CmQ7dGhpcy53
b3JrZmxvd19vdXRwdXRzPTNEYi53b3JrZmxvd19vdXRwdXRzP2Iud29ya2Zsb3dfb3V0cHV0czpb
XTt2YXIgYT0zRD0KdGhpczt2YXIgYz0zRG5ldyBOb2RlVmlldyh7ZWw6dGhpcy5lbGVtZW50WzBd
LG5vZGU6YSx9KTthLm5vZGVWaWV3PTNEYzskLmVhPQpjaChiLmRhdGFfaW5wdXRzLGZ1bmN0aW9u
KGYsZCl7Yy5hZGREYXRhSW5wdXQoZCl9KTtpZigoYi5kYXRhX2lucHV0cy5sZW5ndGg9Cj4wKSYm
KGIuZGF0YV9vdXRwdXRzLmxlbmd0aD4wKSl7Yy5hZGRSdWxlKCl9JC5lYWNoKGIuZGF0YV9vdXRw
dXRzLGZ1bmN0aW9uKD0KZixkKXtjLmFkZERhdGFPdXRwdXQoZCl9KTtjLnJlbmRlcigpO3dvcmtm
bG93Lm5vZGVfY2hhbmdlZCh0aGlzLHRydWUpfSx1cGRhPQp0ZV9maWVsZF9kYXRhOmZ1bmN0aW9u
KGQpe3ZhciBjPTNEdGhpcztub2RlVmlldz0zRGMubm9kZVZpZXc7dGhpcy50b29sX3N0YXQ9CmU9
M0RkLnRvb2xfc3RhdGU7dGhpcy5mb3JtX2h0bWw9M0RkLmZvcm1faHRtbDt0aGlzLnRvb2xfZXJy
b3JzPTNEZC50b29sX2Vycj0Kb3JzO3RoaXMuYW5ub3RhdGlvbj0zRGQuYW5ub3RhdGlvbjtpZigi
cG9zdF9qb2JfYWN0aW9ucyIgaW4gZCl7dmFyIGY9M0QkLnBhPQpyc2VKU09OKGQucG9zdF9qb2Jf
YWN0aW9ucyk7dGhpcy5wb3N0X2pvYl9hY3Rpb25zPTNEZj9mOnt9fWMubm9kZVZpZXcucmVuZGU9
CnJUb29sRXJyb3JzKCk7dmFyIGc9M0Rub2RlVmlldy4kKCJkaXYuaW5wdXRzIik7dmFyIGE9M0Ru
b2RlVmlldy5uZXdJbnB1dHNEaT0KdigpO3ZhciBiPTNEe307Xy5lYWNoKGQuZGF0YV9pbnB1dHMs
ZnVuY3Rpb24oaCl7dmFyIGk9M0RjLm5vZGVWaWV3LmFkZERhdGFJPQpucHV0KGgsYSk7YltoLm5h
bWVdPTNEaX0pO18uZWFjaChfLmRpZmZlcmVuY2UoXy52YWx1ZXMobm9kZVZpZXcudGVybWluYWxW
aWU9CndzKSxfLnZhbHVlcyhiKSksZnVuY3Rpb24oaCl7aC5lbC50ZXJtaW5hbC5kZXN0cm95KCl9
KTtub2RlVmlldy50ZXJtaW5hbFZpZT0Kd3M9M0RiO2lmKGQuZGF0YV9vdXRwdXRzLmxlbmd0aD0z
RD0zRDEmJiJjb2xsZWN0aW9uX3R5cGUiIGluIGQuZGF0YV9vdXRwdXRzPQpbMF0pe25vZGVWaWV3
LnVwZGF0ZURhdGFPdXRwdXQoZC5kYXRhX291dHB1dHNbMF0pfWcucmVwbGFjZVdpdGgoYSk7dGhp
cy5tYXI9CmtDaGFuZ2VkKCk7dGhpcy5yZWRyYXcoKX0sZXJyb3I6ZnVuY3Rpb24oZCl7dmFyIGE9
M0QkKHRoaXMuZWxlbWVudCkuZmluZCgiLj0KdG9vbEZvcm1Cb2R5Iik7YS5maW5kKCJkaXYiKS5y
ZW1vdmUoKTt2YXIgYz0zRCI8ZGl2IHN0eWxlPTNEJ2NvbG9yOiByZWQ7IHRlPQp4dC1zdHlsZTog
aXRhbGljOyc+IitkKyI8L2Rpdj4iO3RoaXMuZm9ybV9odG1sPTNEYzthLmh0bWwoYyk7d29ya2Zs
b3cubm9kZV89CmNoYW5nZWQodGhpcyl9LG1hcmtDaGFuZ2VkOmZ1bmN0aW9uKCl7d29ya2Zsb3cu
bm9kZV9jaGFuZ2VkKHRoaXMpfX0pO2Z1bmN0aT0Kb24gV29ya2Zsb3coYSl7dGhpcy5jYW52YXNf
Y29udGFpbmVyPTNEYTt0aGlzLmlkX2NvdW50ZXI9M0QwO3RoaXMubm9kZXM9M0R7PQp9O3RoaXMu
bmFtZT0zRG51bGw7dGhpcy5oYXNfY2hhbmdlcz0zRGZhbHNlO3RoaXMuYWN0aXZlX2Zvcm1faGFz
X2NoYW5nZXM9M0Q9CmZhbHNlfSQuZXh0ZW5kKFdvcmtmbG93LnByb3RvdHlwZSx7YWRkX25vZGU6
ZnVuY3Rpb24oYSl7YS5pZD0zRHRoaXMuaWRfY291bj0KdGVyO2EuZWxlbWVudC5hdHRyKCJpZCIs
IndmLW5vZGUtc3RlcC0iK2EuaWQpO3RoaXMuaWRfY291bnRlcisrO3RoaXMubm9kZXNbPQphLmlk
XT0zRGE7dGhpcy5oYXNfY2hhbmdlcz0zRHRydWU7YS53b3JrZmxvdz0zRHRoaXN9LHJlbW92ZV9u
b2RlOmZ1bmN0aW9uKGE9Cil7aWYodGhpcy5hY3RpdmVfbm9kZT0zRD0zRGEpe3RoaXMuY2xlYXJf
YWN0aXZlX25vZGUoKX1kZWxldGUgdGhpcy5ub2Rlc1thLj0KaWRdO3RoaXMuaGFzX2NoYW5nZXM9
M0R0cnVlfSxyZW1vdmVfYWxsOmZ1bmN0aW9uKCl7d2Y9M0R0aGlzOyQuZWFjaCh0aGlzLm5vPQpk
ZXMsZnVuY3Rpb24oYixhKXthLmRlc3Ryb3koKTt3Zi5yZW1vdmVfbm9kZShhKX0pfSxyZWN0aWZ5
X3dvcmtmbG93X291dHB1dHM9CjpmdW5jdGlvbigpe3ZhciBiPTNEZmFsc2U7dmFyIGE9M0RmYWxz
ZTskLmVhY2godGhpcy5ub2RlcyxmdW5jdGlvbihjLGQpe2lmKD0KZC53b3JrZmxvd19vdXRwdXRz
JiZkLndvcmtmbG93X291dHB1dHMubGVuZ3RoPjApe2I9M0R0cnVlfSQuZWFjaChkLnBvc3Rfam9i
PQpfYWN0aW9ucyxmdW5jdGlvbihnLGYpe2lmKGYuYWN0aW9uX3R5cGU9M0Q9M0Q9M0QiSGlkZURh
dGFzZXRBY3Rpb24iKXthPTNEdHI9CnVlfX0pfSk7aWYoYiE9M0Q9M0RmYWxzZXx8YSE9M0Q9M0Rm
YWxzZSl7JC5lYWNoKHRoaXMubm9kZXMsZnVuY3Rpb24oYyxnKXtpZj0KKGcudHlwZT0zRD0zRD0z
RCJ0b29sIil7dmFyIGY9M0RmYWxzZTtpZihnLnBvc3Rfam9iX2FjdGlvbnM9M0Q9M0RudWxsKXtn
LnBvPQpzdF9qb2JfYWN0aW9ucz0zRHt9O2Y9M0R0cnVlfXZhciBkPTNEW107JC5lYWNoKGcucG9z
dF9qb2JfYWN0aW9ucyxmdW5jdGlvbig9CmksaCl7aWYoaC5hY3Rpb25fdHlwZT0zRD0zRCJIaWRl
RGF0YXNldEFjdGlvbiIpe2QucHVzaChpKX19KTtpZihkLmxlbmd0aD4wKT0KeyQuZWFjaChkLGZ1
bmN0aW9uKGgsail7Zj0zRHRydWU7ZGVsZXRlIGcucG9zdF9qb2JfYWN0aW9uc1tqXX0pfWlmKGIp
eyQuZWFjPQpoKGcub3V0cHV0X3Rlcm1pbmFscyxmdW5jdGlvbihpLGope3ZhciBoPTNEdHJ1ZTsk
LmVhY2goZy53b3JrZmxvd19vdXRwdXRzLGY9CnVuY3Rpb24obCxtKXtpZihqLm5hbWU9M0Q9M0Q9
M0RtKXtoPTNEZmFsc2V9fSk7aWYoaD0zRD0zRD0zRHRydWUpe2Y9M0R0cnVlOz0KdmFyIGs9M0R7
YWN0aW9uX3R5cGU6IkhpZGVEYXRhc2V0QWN0aW9uIixvdXRwdXRfbmFtZTpqLm5hbWUsYWN0aW9u
X2FyZ3VtZW50PQpzOnt9fTtnLnBvc3Rfam9iX2FjdGlvbnNbIkhpZGVEYXRhc2V0QWN0aW9uIitq
Lm5hbWVdPTNEbnVsbDtnLnBvc3Rfam9iX2FjdGk9Cm9uc1siSGlkZURhdGFzZXRBY3Rpb24iK2ou
bmFtZV09M0RrfX0pfWlmKHdvcmtmbG93LmFjdGl2ZV9ub2RlPTNEPTNEZyYmZj0zRD0KPTNEPTNE
dHJ1ZSl7d29ya2Zsb3cucmVsb2FkX2FjdGl2ZV9ub2RlKCl9fX0pfX0sdG9fc2ltcGxlOmZ1bmN0
aW9uKCl7dmFyIGE9Cj0zRHt9OyQuZWFjaCh0aGlzLm5vZGVzLGZ1bmN0aW9uKGMsZil7dmFyIGc9
M0R7fTskLmVhY2goZi5pbnB1dF90ZXJtaW5hbHMsZj0KdW5jdGlvbihpLGope2dbai5uYW1lXT0z
RG51bGw7dmFyIGg9M0RbXTskLmVhY2goai5jb25uZWN0b3JzLGZ1bmN0aW9uKGssbCl7PQpoW2td
PTNEe2lkOmwuaGFuZGxlMS5ub2RlLmlkLG91dHB1dF9uYW1lOmwuaGFuZGxlMS5uYW1lfTtnW2ou
bmFtZV09M0RofSl9KTs9CnZhciBiPTNEe307aWYoZi5wb3N0X2pvYl9hY3Rpb25zKXskLmVhY2go
Zi5wb3N0X2pvYl9hY3Rpb25zLGZ1bmN0aW9uKGosaCl7dj0KYXIgaz0zRHthY3Rpb25fdHlwZTpo
LmFjdGlvbl90eXBlLG91dHB1dF9uYW1lOmgub3V0cHV0X25hbWUsYWN0aW9uX2FyZ3VtZW50PQpz
OmguYWN0aW9uX2FyZ3VtZW50c307YltoLmFjdGlvbl90eXBlK2gub3V0cHV0X25hbWVdPTNEbnVs
bDtiW2guYWN0aW9uX3R5cGU9CitoLm91dHB1dF9uYW1lXT0zRGt9KX1pZighZi53b3JrZmxvd19v
dXRwdXRzKXtmLndvcmtmbG93X291dHB1dHM9M0RbXX12YXIgZD0KPTNEe2lkOmYuaWQsdHlwZTpm
LnR5cGUsdG9vbF9pZDpmLnRvb2xfaWQsdG9vbF9zdGF0ZTpmLnRvb2xfc3RhdGUsdG9vbF9lcnJv
PQpyczpmLnRvb2xfZXJyb3JzLGlucHV0X2Nvbm5lY3Rpb25zOmcscG9zaXRpb246JChmLmVsZW1l
bnQpLnBvc2l0aW9uKCksYW5ub3Q9CmF0aW9uOmYuYW5ub3RhdGlvbixwb3N0X2pvYl9hY3Rpb25z
OmYucG9zdF9qb2JfYWN0aW9ucyx1dWlkOmYudXVpZCxsYWJlbDpmLj0KbGFiZWwsd29ya2Zsb3df
b3V0cHV0czpmLndvcmtmbG93X291dHB1dHN9O2FbZi5pZF09M0RkfSk7cmV0dXJue3N0ZXBzOmF9
fSxmPQpyb21fc2ltcGxlOmZ1bmN0aW9uKGIpe3dmPTNEdGhpczt2YXIgYz0zRDA7d2YubmFtZT0z
RGIubmFtZTt2YXIgYT0zRGZhbHNlOyQ9Ci5lYWNoKGIuc3RlcHMsZnVuY3Rpb24oZyxmKXt2YXIg
ZD0zRHByZWJ1aWxkX25vZGUoZi50eXBlLGYubmFtZSxmLnRvb2xfaWQpOz0KZC5pbml0X2ZpZWxk
X2RhdGEoZik7aWYoZi5wb3NpdGlvbil7ZC5lbGVtZW50LmNzcyh7dG9wOmYucG9zaXRpb24udG9w
LGxlZnQ6PQpmLnBvc2l0aW9uLmxlZnR9KX1kLmlkPTNEZi5pZDt3Zi5ub2Rlc1tkLmlkXT0zRGQ7
Yz0zRE1hdGgubWF4KGMscGFyc2VJbnQoZyk9Cik7aWYoIWEmJmQudHlwZT0zRD0zRD0zRCJ0b29s
Iil7aWYoZC53b3JrZmxvd19vdXRwdXRzLmxlbmd0aD4wKXthPTNEdHJ1ZX1lbD0Kc2V7JC5lYWNo
KGQucG9zdF9qb2JfYWN0aW9ucyxmdW5jdGlvbihpLGgpe2lmKGguYWN0aW9uX3R5cGU9M0Q9M0Q9
M0QiSGlkZURhPQp0YXNldEFjdGlvbiIpe2E9M0R0cnVlfX0pfX19KTt3Zi5pZF9jb3VudGVyPTNE
YysxOyQuZWFjaChiLnN0ZXBzLGZ1bmN0aW9uKGc9CixmKXt2YXIgZD0zRHdmLm5vZGVzW2ddOyQu
ZWFjaChmLmlucHV0X2Nvbm5lY3Rpb25zLGZ1bmN0aW9uKGksaCl7aWYoaCl7aWYoIT0KJC5pc0Fy
cmF5KGgpKXtoPTNEW2hdfSQuZWFjaChoLGZ1bmN0aW9uKGssail7dmFyIG09M0R3Zi5ub2Rlc1tq
LmlkXTt2YXIgbj0KPTNEbmV3IENvbm5lY3RvcigpO24uY29ubmVjdChtLm91dHB1dF90ZXJtaW5h
bHNbai5vdXRwdXRfbmFtZV0sZC5pbnB1dF90ZXJtPQppbmFsc1tpXSk7bi5yZWRyYXcoKX0pfX0p
O2lmKGEmJmQudHlwZT0zRD0zRD0zRCJ0b29sIil7JC5lYWNoKGQub3V0cHV0X3Rlcm09CmluYWxz
LGZ1bmN0aW9uKGgsaSl7aWYoZC5wb3N0X2pvYl9hY3Rpb25zWyJIaWRlRGF0YXNldEFjdGlvbiIr
aS5uYW1lXT0zRD0zRD0KPTNEdW5kZWZpbmVkKXtkLndvcmtmbG93X291dHB1dHMucHVzaChpLm5h
bWUpO2NhbGxvdXQ9M0QkKGQuZWxlbWVudCkuZmluZCgiPQouY2FsbG91dC4iK2kubmFtZSk7Y2Fs
bG91dC5maW5kKCJpbWciKS5hdHRyKCJzcmMiLGdhbGF4eV9jb25maWcucm9vdCsic3RhdGk9CmMv
aW1hZ2VzL2Z1Z3VlL2FzdGVyaXNrLXNtYWxsLnBuZyIpO3dvcmtmbG93Lmhhc19jaGFuZ2VzPTNE
dHJ1ZX19KX19KX0sY2hlYz0Ka19jaGFuZ2VzX2luX2FjdGl2ZV9mb3JtOmZ1bmN0aW9uKCl7aWYo
dGhpcy5hY3RpdmVfZm9ybV9oYXNfY2hhbmdlcyl7dGhpcy5oPQphc19jaGFuZ2VzPTNEdHJ1ZTsk
KCIjcmlnaHQtY29udGVudCIpLmZpbmQoImZvcm0iKS5zdWJtaXQoKTt0aGlzLmFjdGl2ZV9mb3I9
Cm1faGFzX2NoYW5nZXM9M0RmYWxzZX19LHJlbG9hZF9hY3RpdmVfbm9kZTpmdW5jdGlvbigpe2lm
KHRoaXMuYWN0aXZlX25vZGUpez0KdmFyIGE9M0R0aGlzLmFjdGl2ZV9ub2RlO3RoaXMuY2xlYXJf
YWN0aXZlX25vZGUoKTt0aGlzLmFjdGl2YXRlX25vZGUoYSl9fSxjPQpsZWFyX2FjdGl2ZV9ub2Rl
OmZ1bmN0aW9uKCl7aWYodGhpcy5hY3RpdmVfbm9kZSl7dGhpcy5hY3RpdmVfbm9kZS5tYWtlX2lu
YWM9CnRpdmUoKTt0aGlzLmFjdGl2ZV9ub2RlPTNEbnVsbH1wYXJlbnQuc2hvd19mb3JtX2Zvcl90
b29sKCI8ZGl2Pk5vIG5vZGUgc2VsZT0KY3RlZDwvZGl2PiIpfSxhY3RpdmF0ZV9ub2RlOmZ1bmN0
aW9uKGEpe2lmKHRoaXMuYWN0aXZlX25vZGUhPTNEYSl7dGhpcy5jaGVjPQprX2NoYW5nZXNfaW5f
YWN0aXZlX2Zvcm0oKTt0aGlzLmNsZWFyX2FjdGl2ZV9ub2RlKCk7aWYocGFyZW50Ll9fTkVXVE9P
TEZPUk09Cl9fKXtwYXJlbnQuc2hvd19mb3JtX2Zvcl90b29sKGEuZm9ybV9odG1sLGEpfWVsc2V7
cGFyZW50LnNob3dfZm9ybV9mb3JfdG9vbD0KKGEuZm9ybV9odG1sK2EudG9vbHRpcCxhKX1hLm1h
a2VfYWN0aXZlKCk7dGhpcy5hY3RpdmVfbm9kZT0zRGF9fSxub2RlX2NoYW5nPQplZDpmdW5jdGlv
bihhLGIpe3RoaXMuaGFzX2NoYW5nZXM9M0R0cnVlO2lmKHRoaXMuYWN0aXZlX25vZGU9M0Q9M0Rh
JiYoIXBhcmU9Cm50Ll9fTkVXVE9PTEZPUk1fX3x8Yikpe3RoaXMuY2hlY2tfY2hhbmdlc19pbl9h
Y3RpdmVfZm9ybSgpO2lmKHBhcmVudC5fX05FVz0KVE9PTEZPUk1fXyl7cGFyZW50LnNob3dfZm9y
bV9mb3JfdG9vbChhLmZvcm1faHRtbCxhKX1lbHNle3BhcmVudC5zaG93X2Zvcm1fPQpmb3JfdG9v
bChhLmZvcm1faHRtbCthLnRvb2x0aXAsYSl9fX0sbGF5b3V0OmZ1bmN0aW9uKCl7dGhpcy5jaGVj
a19jaGFuZ2VzX2k9Cm5fYWN0aXZlX2Zvcm0oKTt0aGlzLmhhc19jaGFuZ2VzPTNEdHJ1ZTt2YXIg
aT0zRHt9O3ZhciBiPTNEe307JC5lYWNoKHRoaXMubj0Kb2RlcyxmdW5jdGlvbihsLGspe2lmKGlb
bF09M0Q9M0Q9M0R1bmRlZmluZWQpe2lbbF09M0QwfWlmKGJbbF09M0Q9M0Q9M0R1bmRlPQpmaW5l
ZCl7YltsXT0zRFtdfX0pOyQuZWFjaCh0aGlzLm5vZGVzLGZ1bmN0aW9uKGwsayl7JC5lYWNoKGsu
aW5wdXRfdGVybWluYWw9CnMsZnVuY3Rpb24obSxuKXskLmVhY2gobi5jb25uZWN0b3JzLGZ1bmN0
aW9uKHAscSl7dmFyIG89M0RxLmhhbmRsZTEubm9kZTtpWz0Kay5pZF0rPTNEMTtiW28uaWRdLnB1
c2goay5pZCl9KX0pfSk7bm9kZV9pZHNfYnlfbGV2ZWw9M0RbXTt3aGlsZSh0cnVlKXtsZXZlPQps
X3BhcmVudHM9M0RbXTtmb3IodmFyIGEgaW4gaSl7aWYoaVthXT0zRD0zRDApe2xldmVsX3BhcmVu
dHMucHVzaChhKX19aWYobGU9CnZlbF9wYXJlbnRzLmxlbmd0aD0zRD0zRDApe2JyZWFrfW5vZGVf
aWRzX2J5X2xldmVsLnB1c2gobGV2ZWxfcGFyZW50cyk7Zm9yKD0KdmFyIGYgaW4gbGV2ZWxfcGFy
ZW50cyl7dmFyIGo9M0RsZXZlbF9wYXJlbnRzW2ZdO2RlbGV0ZSBpW2pdO2Zvcih2YXIgZyBpbiBi
PQpbal0pe2lbYltqXVtnXV0tPTNEMX19fWlmKGkubGVuZ3RoKXtyZXR1cm59dmFyIGQ9M0R0aGlz
Lm5vZGVzO3ZhciBoPTNEODA7dl89CnBhZD0zRDMwO3ZhciBjPTNEaDskLmVhY2gobm9kZV9pZHNf
YnlfbGV2ZWwsZnVuY3Rpb24oayxsKXtsLnNvcnQoZnVuY3Rpb24ocD0KLG8pe3JldHVybiAkKGRb
cF0uZWxlbWVudCkucG9zaXRpb24oKS50b3AtJChkW29dLmVsZW1lbnQpLnBvc2l0aW9uKCkudG9w
fSk7PQp2YXIgbT0zRDA7dmFyIG49M0R2X3BhZDskLmVhY2gobCxmdW5jdGlvbihvLHIpe3ZhciBx
PTNEZFtyXTt2YXIgcD0zRCQocS5lbGU9Cm1lbnQpOyQocCkuY3NzKHt0b3A6bixsZWZ0OmN9KTtt
PTNETWF0aC5tYXgobSwkKHApLndpZHRoKCkpO24rPTNEJChwKS5oZWlnaD0KdCgpK3ZfcGFkfSk7
Yys9M0RtK2h9KTskLmVhY2goZCxmdW5jdGlvbihrLGwpe2wucmVkcmF3KCl9KX0sYm91bmRzX2Zv
cl9hbGxfPQpub2RlczpmdW5jdGlvbigpe3ZhciBkPTNESW5maW5pdHksYj0zRC1JbmZpbml0eSxj
PTNESW5maW5pdHksYT0zRC1JbmZpbml0eSw9CmY7JC5lYWNoKHRoaXMubm9kZXMsZnVuY3Rpb24o
aCxnKXtlPTNEJChnLmVsZW1lbnQpO2Y9M0RlLnBvc2l0aW9uKCk7ZD0zRE1hdD0KaC5taW4oZCxm
LmxlZnQpO2I9M0RNYXRoLm1heChiLGYubGVmdCtlLndpZHRoKCkpO2M9M0RNYXRoLm1pbihjLGYu
dG9wKTthPTNEPQpNYXRoLm1heChhLGYudG9wK2Uud2lkdGgoKSl9KTtyZXR1cm57eG1pbjpkLHht
YXg6Yix5bWluOmMseW1heDphfX0sZml0X2NhbnY9CmFzX3RvX25vZGVzOmZ1bmN0aW9uKCl7dmFy
IGE9M0R0aGlzLmJvdW5kc19mb3JfYWxsX25vZGVzKCk7dmFyIGY9M0R0aGlzLmNhbj0KdmFzX2Nv
bnRhaW5lci5wb3NpdGlvbigpO3ZhciBpPTNEdGhpcy5jYW52YXNfY29udGFpbmVyLnBhcmVudCgp
O3ZhciBkPTNEZml4PQpfZGVsdGEoYS54bWluLDEwMCk7dmFyIGg9M0RmaXhfZGVsdGEoYS55bWlu
LDEwMCk7ZD0zRE1hdGgubWF4KGQsZi5sZWZ0KTtoPQo9M0RNYXRoLm1heChoLGYudG9wKTt2YXIg
Yz0zRGYubGVmdC1kO3ZhciBnPTNEZi50b3AtaDt2YXIgYj0zRHJvdW5kX3VwKGEueG09CmF4KzEw
MCwxMDApK2Q7dmFyIGo9M0Ryb3VuZF91cChhLnltYXgrMTAwLDEwMCkraDtiPTNETWF0aC5tYXgo
YiwtYytpLndpZHRoKD0KKSk7aj0zRE1hdGgubWF4KGosLWcraS5oZWlnaHQoKSk7dGhpcy5jYW52
YXNfY29udGFpbmVyLmNzcyh7bGVmdDpjLHRvcDpnLHdpPQpkdGg6YixoZWlnaHQ6an0pO3RoaXMu
Y2FudmFzX2NvbnRhaW5lci5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24oKXt2YXIgaz0zRCQ9Cih0
aGlzKS5wb3NpdGlvbigpOyQodGhpcykuY3NzKCJsZWZ0IixrLmxlZnQrZCk7JCh0aGlzKS5jc3Mo
InRvcCIsay50b3AraCl9KT0KfX0pO2Z1bmN0aW9uIGZpeF9kZWx0YShhLGIpe2lmKGE8Ynx8YT4z
KmIpe25ld19wb3M9M0QoTWF0aC5jZWlsKCgoYSViKSkvYikrPQoxKSpiO3JldHVybigtKGEtbmV3
X3BvcykpfXJldHVybiAwfWZ1bmN0aW9uIHJvdW5kX3VwKGEsYil7cmV0dXJuIE1hdGguY2VpbCg9
CmEvYikqYn1mdW5jdGlvbiBwcmVidWlsZF9ub2RlKGwsaixyKXt2YXIgaT0zRCQoIjxkaXYgY2xh
c3M9M0QndG9vbEZvcm0gdG9vbD0KRm9ybUluQ2FudmFzJz48L2Rpdj4iKTt2YXIgZz0zRG5ldyBO
b2RlKHtlbGVtZW50Oml9KTtnLnR5cGU9M0RsO2lmKGw9M0Q9M0QiPQp0b29sIil7Zy50b29sX2lk
PTNEcn12YXIgbj0zRCQoIjxkaXYgY2xhc3M9M0QndG9vbEZvcm1UaXRsZSB1bnNlbGVjdGFibGUn
PiI9CitqKyI8L2Rpdj4iKTtpLmFwcGVuZChuKTtpLmNzcygibGVmdCIsJCh3aW5kb3cpLnNjcm9s
bExlZnQoKSsyMCk7aS5jc3MoInRvcD0KIiwkKHdpbmRvdykuc2Nyb2xsVG9wKCkrMjApO3ZhciBt
PTNEJCgiPGRpdiBjbGFzcz0zRCd0b29sRm9ybUJvZHknPjwvZGl2PiIpPQo7dmFyIGg9M0QiPGRp
dj48aW1nIGhlaWdodD0zRCcxNicgYWxpZ249M0QnbWlkZGxlJyBzcmM9M0QnIitnYWxheHlfY29u
ZmlnLnI9Cm9vdCsic3RhdGljL2ltYWdlcy9sb2FkaW5nX3NtYWxsX3doaXRlX2JnLmdpZicvPiBs
b2FkaW5nIHRvb2wgaW5mby4uLjwvZGl2Pj0KIjttLmFwcGVuZChoKTtnLmZvcm1faHRtbD0zRGg7
aS5hcHBlbmQobSk7dmFyIGs9M0QkKCI8ZGl2IGNsYXNzPTNEJ2J1dHRvbnMnPQogc3R5bGU9M0Qn
ZmxvYXQ6IHJpZ2h0Oyc+PC9kaXY+Iik7ay5hcHBlbmQoJCgiPGRpdj4iKS5hZGRDbGFzcygiZmEt
aWNvbi1idXQ9CnRvbiBmYSBmYS10aW1lcyIpLmNsaWNrKGZ1bmN0aW9uKGIpe2cuZGVzdHJveSgp
fSkpO2kuYXBwZW5kVG8oIiNjYW52YXMtY29udD0KYWluZXIiKTt2YXIgZD0zRCQoIiNjYW52YXMt
Y29udGFpbmVyIikucG9zaXRpb24oKTt2YXIgYz0zRCQoIiNjYW52YXMtY29udGFpPQpuZXIiKS5w
YXJlbnQoKTt2YXIgYT0zRGkud2lkdGgoKTt2YXIgcT0zRGkuaGVpZ2h0KCk7aS5jc3Moe2xlZnQ6
KC1kLmxlZnQpKyg9CmMud2lkdGgoKS8yKS0oYS8yKSx0b3A6KC1kLnRvcCkrKGMuaGVpZ2h0KCkv
MiktKHEvMil9KTtrLnByZXBlbmRUbyhuKTthKz0zRD0KKGsud2lkdGgoKSsxMCk7aS5jc3MoIndp
ZHRoIixhKTskKGkpLmJpbmQoImRyYWdzdGFydCIsZnVuY3Rpb24oKXt3b3JrZmxvdy5hPQpjdGl2
YXRlX25vZGUoZyl9KS5iaW5kKCJkcmFnZW5kIixmdW5jdGlvbigpe3dvcmtmbG93Lm5vZGVfY2hh
bmdlZCh0aGlzKTt3b3I9CmtmbG93LmZpdF9jYW52YXNfdG9fbm9kZXMoKTtjYW52YXNfbWFuYWdl
ci5kcmF3X292ZXJ2aWV3KCl9KS5iaW5kKCJkcmFnY2xpYz0Ka29ubHkiLGZ1bmN0aW9uKCl7d29y
a2Zsb3cuYWN0aXZhdGVfbm9kZShnKX0pLmJpbmQoImRyYWciLGZ1bmN0aW9uKG8scCl7dmFyPQog
Zj0zRCQodGhpcykub2Zmc2V0UGFyZW50KCkub2Zmc2V0KCksYj0zRHAub2Zmc2V0WC1mLmxlZnQs
cz0zRHAub2Zmc2V0WS1mLnQ9Cm9wOyQodGhpcykuY3NzKHtsZWZ0OmIsdG9wOnN9KTskKHRoaXMp
LmZpbmQoIi50ZXJtaW5hbCIpLmVhY2goZnVuY3Rpb24oKXt0aD0KaXMudGVybWluYWwucmVkcmF3
KCl9KX0pO3JldHVybiBnfWZ1bmN0aW9uIGFkZF9ub2RlKGIsZCxhKXt2YXIgYz0zRHByZWJ1aWxk
PQpfbm9kZShiLGQsYSk7d29ya2Zsb3cuYWRkX25vZGUoYyk7d29ya2Zsb3cuZml0X2NhbnZhc190
b19ub2RlcygpO2NhbnZhc19tYW49CmFnZXIuZHJhd19vdmVydmlldygpO3dvcmtmbG93LmFjdGl2
YXRlX25vZGUoYyk7cmV0dXJuIGN9dmFyIGV4dF90b190eXBlPTNEbj0KdWxsO3ZhciB0eXBlX3Rv
X3R5cGU9M0RudWxsO2Z1bmN0aW9uIGlzc3VidHlwZShiLGEpe2I9M0RleHRfdG9fdHlwZVtiXTth
PTNEPQpleHRfdG9fdHlwZVthXTtyZXR1cm4odHlwZV90b190eXBlW2JdKSYmKGEgaW4gdHlwZV90
b190eXBlW2JdKX1mdW5jdGlvbiBwb3A9CnVsYXRlX2RhdGF0eXBlX2luZm8oYSl7ZXh0X3RvX3R5
cGU9M0RhLmV4dF90b19jbGFzc19uYW1lO3R5cGVfdG9fdHlwZT0zRGEuYz0KbGFzc190b19jbGFz
c2VzfXZhciBOb2RlVmlldz0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0
aW9uKGEpPQp7dGhpcy5ub2RlPTNEYS5ub2RlO3RoaXMub3V0cHV0X3dpZHRoPTNETWF0aC5tYXgo
MTUwLHRoaXMuJGVsLndpZHRoKCkpO3RoaXM9Ci50b29sX2JvZHk9M0R0aGlzLiRlbC5maW5kKCIu
dG9vbEZvcm1Cb2R5Iik7dGhpcy50b29sX2JvZHkuZmluZCgiZGl2IikucmVtbz0KdmUoKTt0aGlz
Lm5ld0lucHV0c0RpdigpLmFwcGVuZFRvKHRoaXMudG9vbF9ib2R5KTt0aGlzLnRlcm1pbmFsVmll
d3M9M0R7fTt0PQpoaXMub3V0cHV0VGVybWlubFZpZXdzPTNEe319LHJlbmRlcjpmdW5jdGlvbigp
e3RoaXMucmVuZGVyVG9vbEVycm9ycygpO3RoaXM9Ci4kZWwuY3NzKCJ3aWR0aCIsTWF0aC5taW4o
MjUwLE1hdGgubWF4KHRoaXMuJGVsLndpZHRoKCksdGhpcy5vdXRwdXRfd2lkdGgpKT0KKX0scmVu
ZGVyVG9vbEVycm9yczpmdW5jdGlvbigpe2lmKHRoaXMubm9kZS50b29sX2Vycm9ycyl7dGhpcy4k
ZWwuYWRkQ2xhc3MoPQoidG9vbC1ub2RlLWVycm9yIil9ZWxzZXt0aGlzLiRlbC5yZW1vdmVDbGFz
cygidG9vbC1ub2RlLWVycm9yIil9fSxuZXdJbnB1dHM9CkRpdjpmdW5jdGlvbigpe3JldHVybiAk
KCI8ZGl2IGNsYXNzPTNEJ2lucHV0cyc+PC9kaXY+Iil9LHVwZGF0ZU1heFdpZHRoOmZ1bj0KY3Rp
b24oYSl7dGhpcy5vdXRwdXRfd2lkdGg9M0RNYXRoLm1heCh0aGlzLm91dHB1dF93aWR0aCxhKX0s
YWRkUnVsZTpmdW5jdGlvPQpuKCl7dGhpcy50b29sX2JvZHkuYXBwZW5kKCQoIjxkaXYgY2xhc3M9
M0QncnVsZSc+PC9kaXY+IikpfSxhZGREYXRhSW5wdXQ6ZnU9Cm5jdGlvbihpLGQpe3ZhciBqPTNE
dHJ1ZTtpZighZCl7ZD0zRHRoaXMuJCgiLmlucHV0cyIpO2o9M0RmYWxzZX12YXIgZj0zRHRoaT0K
cy50ZXJtaW5hbFZpZXdzW2kubmFtZV07dmFyIGg9M0QoaS5pbnB1dF90eXBlPTNEPTNEImRhdGFz
ZXRfY29sbGVjdGlvbiIpP0luPQpwdXRDb2xsZWN0aW9uVGVybWluYWxWaWV3OklucHV0VGVybWlu
YWxWaWV3O2lmKGYmJiEoZiBpbnN0YW5jZW9mIGgpKXtmLmVsLnQ9CmVybWluYWwuZGVzdHJveSgp
O2Y9M0RudWxsfWlmKCFmKXtmPTNEbmV3IGgoe25vZGU6dGhpcy5ub2RlLGlucHV0Oml9KX1lbHNl
ez0KdmFyIGc9M0RmLmVsLnRlcm1pbmFsO2cudXBkYXRlKGkpO2cuZGVzdHJveUludmFsaWRDb25u
ZWN0aW9ucygpfXRoaXMudGVybWluPQphbFZpZXdzW2kubmFtZV09M0RmO3ZhciBjPTNEZi5lbDt2
YXIgYj0zRG5ldyBEYXRhSW5wdXRWaWV3KHt0ZXJtaW5hbEVsZW1lbnQ9CjpjLGlucHV0Omksbm9k
ZVZpZXc6dGhpcyxza2lwUmVzaXplOmp9KTt2YXIgYT0zRGIuJGVsO2QuYXBwZW5kKGEucHJlcGVu
ZChmLj0KdGVybWluYWxFbGVtZW50cygpKSk7cmV0dXJuIGZ9LGFkZERhdGFPdXRwdXQ6ZnVuY3Rp
b24oYSl7dmFyIGQ9M0QoYS5jb2xsZWN0PQppb25fdHlwZSk/T3V0cHV0Q29sbGVjdGlvblRlcm1p
bmFsVmlldzpPdXRwdXRUZXJtaW5hbFZpZXc7dmFyIGM9M0RuZXcgZCh7bm89CmRlOnRoaXMubm9k
ZSxvdXRwdXQ6YX0pO3ZhciBiPTNEbmV3IERhdGFPdXRwdXRWaWV3KHtvdXRwdXQ6YSx0ZXJtaW5h
bEVsZW1lbj0KdDpjLmVsLG5vZGVWaWV3OnRoaXMsfSk7dGhpcy50b29sX2JvZHkuYXBwZW5kKGIu
JGVsLmFwcGVuZChjLnRlcm1pbmFsRWxlbWVuPQp0cygpKSl9LHVwZGF0ZURhdGFPdXRwdXQ6ZnVu
Y3Rpb24oYil7dmFyIGE9M0R0aGlzLm5vZGUub3V0cHV0X3Rlcm1pbmFsc1tiLm49CmFtZV07YS51
cGRhdGUoYil9fSk7dmFyIERhdGFJbnB1dFZpZXc9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7Y2xh
c3NOYW1lOiJmbz0Kcm0tcm93IGRhdGFSb3cgaW5wdXQtZGF0YS1yb3ciLGluaXRpYWxpemU6ZnVu
Y3Rpb24oYSl7dGhpcy5pbnB1dD0zRGEuaW5wdXQ7PQp0aGlzLm5vZGVWaWV3PTNEYS5ub2RlVmll
dzt0aGlzLnRlcm1pbmFsRWxlbWVudD0zRGEudGVybWluYWxFbGVtZW50O3RoaXMuJGU9CmwuYXR0
cigibmFtZSIsdGhpcy5pbnB1dC5uYW1lKS5odG1sKHRoaXMuaW5wdXQubGFiZWwpO2lmKCFhLnNr
aXBSZXNpemUpe3RoaT0Kcy4kZWwuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6LTEwMDAs
dG9wOi0xMDAwLGRpc3BsYXk6Im5vbmUifSk7JCgiYm9kPQp5IikuYXBwZW5kKHRoaXMuZWwpO3Ro
aXMubm9kZVZpZXcudXBkYXRlTWF4V2lkdGgodGhpcy4kZWwub3V0ZXJXaWR0aCgpKTt0aGk9CnMu
JGVsLmNzcyh7cG9zaXRpb246IiIsbGVmdDoiIix0b3A6IiIsZGlzcGxheToiIn0pO3RoaXMuJGVs
LnJlbW92ZSgpfX0sfSk7dj0KYXIgT3V0cHV0Q2FsbG91dFZpZXc9M0RCYWNrYm9uZS5WaWV3LmV4
dGVuZCh7dGFnTmFtZToiZGl2Iixpbml0aWFsaXplOmZ1bmN0PQppb24oYil7dGhpcy5sYWJlbD0z
RGIubGFiZWw7dGhpcy5ub2RlPTNEYi5ub2RlO3RoaXMub3V0cHV0PTNEYi5vdXRwdXQ7dmFyIGE9
Cj0zRHRoaXM7dGhpcy4kZWwuYXR0cigiY2xhc3MiLCJjYWxsb3V0ICIrdGhpcy5sYWJlbCkuY3Nz
KHtkaXNwbGF5OiJub25lIn0pLj0KYXBwZW5kKCQoIjxkaXYgY2xhc3M9M0QnYnV0dG9ucyc+PC9k
aXY+IikuYXBwZW5kKCQoIjxpbWcvPiIpLmF0dHIoInNyYyIsZ2FsPQpheHlfY29uZmlnLnJvb3Qr
InN0YXRpYy9pbWFnZXMvZnVndWUvYXN0ZXJpc2stc21hbGwtb3V0bGluZS5wbmciKS5jbGljayhm
dW49CmN0aW9uKCl7aWYoJC5pbkFycmF5KGEub3V0cHV0Lm5hbWUsYS5ub2RlLndvcmtmbG93X291
dHB1dHMpIT0zRC0xKXthLm5vZGUudz0Kb3JrZmxvd19vdXRwdXRzLnNwbGljZSgkLmluQXJyYXko
YS5vdXRwdXQubmFtZSxhLm5vZGUud29ya2Zsb3dfb3V0cHV0cyksMSk7PQphLiQoImltZyIpLmF0
dHIoInNyYyIsZ2FsYXh5X2NvbmZpZy5yb290KyJzdGF0aWMvaW1hZ2VzL2Z1Z3VlL2FzdGVyaXNr
LXNtYWw9Cmwtb3V0bGluZS5wbmciKX1lbHNle2Eubm9kZS53b3JrZmxvd19vdXRwdXRzLnB1c2go
YS5vdXRwdXQubmFtZSk7YS4kKCJpbWciKT0KLmF0dHIoInNyYyIsZ2FsYXh5X2NvbmZpZy5yb290
KyJzdGF0aWMvaW1hZ2VzL2Z1Z3VlL2FzdGVyaXNrLXNtYWxsLnBuZyIpfXdvPQpya2Zsb3cuaGFz
X2NoYW5nZXM9M0R0cnVlO2NhbnZhc19tYW5hZ2VyLmRyYXdfb3ZlcnZpZXcoKX0pKSkudG9vbHRp
cCh7ZGVsYXk9Cjo1MDAsdGl0bGU6Ik1hcmsgZGF0YXNldCBhcyBhIHdvcmtmbG93IG91dHB1dC4g
QWxsIHVubWFya2VkIGRhdGFzZXRzIHdpbGwgYj0KZSBoaWRkZW4uIn0pO3RoaXMuJGVsLmNzcyh7
dG9wOiI1MCUiLG1hcmdpbjoiLThweCAwcHggMHB4IDBweCIscmlnaHQ6OH0pO3RoPQppcy4kZWwu
c2hvdygpO3RoaXMucmVzZXRJbWFnZSgpfSxyZXNldEltYWdlOmZ1bmN0aW9uKCl7aWYoJC5pbkFy
cmF5KHRoaXMub3U9CnRwdXQubmFtZSx0aGlzLm5vZGUud29ya2Zsb3dfb3V0cHV0cyk9M0Q9M0Q9
M0QtMSl7dGhpcy4kKCJpbWciKS5hdHRyKCJzcmMiLD0KZ2FsYXh5X2NvbmZpZy5yb290KyJzdGF0
aWMvaW1hZ2VzL2Z1Z3VlL2FzdGVyaXNrLXNtYWxsLW91dGxpbmUucG5nIil9ZWxzZXt0PQpoaXMu
JCgiaW1nIikuYXR0cigic3JjIixnYWxheHlfY29uZmlnLnJvb3QrInN0YXRpYy9pbWFnZXMvZnVn
dWUvYXN0ZXJpc2stc209CmFsbC5wbmciKX19LGhvdmVySW1hZ2U6ZnVuY3Rpb24oKXt0aGlzLiQo
ImltZyIpLmF0dHIoInNyYyIsZ2FsYXh5X2NvbmZpZy5ybz0Kb3QrInN0YXRpYy9pbWFnZXMvZnVn
dWUvYXN0ZXJpc2stc21hbGwteWVsbG93LnBuZyIpfX0pO3ZhciBEYXRhT3V0cHV0Vmlldz0KPTNE
QmFja2JvbmUuVmlldy5leHRlbmQoe2NsYXNzTmFtZToiZm9ybS1yb3cgZGF0YVJvdyIsaW5pdGlh
bGl6ZTpmdW5jdGlvbihjPQope3RoaXMub3V0cHV0PTNEYy5vdXRwdXQ7dGhpcy50ZXJtaW5hbEVs
ZW1lbnQ9M0RjLnRlcm1pbmFsRWxlbWVudDt0aGlzLm5vZGU9ClZpZXc9M0RjLm5vZGVWaWV3O3Zh
ciBhPTNEdGhpcy5vdXRwdXQ7dmFyIGI9M0RhLm5hbWU7dmFyIGY9M0R0aGlzLm5vZGVWaWV3Lj0K
bm9kZTt2YXIgZD0zRGEuZXh0ZW5zaW9ucy5pbmRleE9mKCJpbnB1dCIpPj0zRDB8fGEuZXh0ZW5z
aW9ucy5pbmRleE9mKCJpbnB1PQp0X2NvbGxlY3Rpb24iKT49M0QwO2lmKCFkKXtiPTNEYisiICgi
K2EuZXh0ZW5zaW9ucy5qb2luKCIsICIpKyIpIn10aGlzLiRlbC49Cmh0bWwoYik7aWYoZi50eXBl
PTNEPTNEInRvb2wiKXt2YXIgZz0zRG5ldyBPdXRwdXRDYWxsb3V0Vmlldyh7bGFiZWw6YixvdXRw
dT0KdDphLG5vZGU6Zix9KTt0aGlzLiRlbC5hcHBlbmQoZy5lbCk7dGhpcy4kZWwuaG92ZXIoZnVu
Y3Rpb24oKXtnLmhvdmVySW1hZ2UoPQopfSxmdW5jdGlvbigpe2cucmVzZXRJbWFnZSgpfSl9dGhp
cy4kZWwuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6LTEwMDA9Cix0b3A6LTEwMDAsZGlz
cGxheToibm9uZSJ9KTskKCJib2R5IikuYXBwZW5kKHRoaXMuZWwpO3RoaXMubm9kZVZpZXcudXBk
YXRlTT0KYXhXaWR0aCh0aGlzLiRlbC5vdXRlcldpZHRoKCkrMTcpO3RoaXMuJGVsLmNzcyh7cG9z
aXRpb246IiIsbGVmdDoiIix0b3A6IiIsPQpkaXNwbGF5OiIifSkuZGV0YWNoKCl9fSk7dmFyIFRl
cm1pbmFsVmlldz0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtzZXR1cE1hcHA9CmluZ1ZpZXc6ZnVu
Y3Rpb24oYil7dmFyIGM9M0RuZXcgdGhpcy50ZXJtaW5hbE1hcHBpbmdDbGFzcyh7dGVybWluYWw6
Yn0pO3Zhcj0KIGE9M0RuZXcgdGhpcy50ZXJtaW5hbE1hcHBpbmdWaWV3Q2xhc3Moe21vZGVsOmN9
KTthLnJlbmRlcigpO2IudGVybWluYWxNYXBwPQppbmdWaWV3PTNEYTt0aGlzLnRlcm1pbmFsTWFw
cGluZ1ZpZXc9M0RhfSx0ZXJtaW5hbEVsZW1lbnRzOmZ1bmN0aW9uKCl7aWYodGg9CmlzLnRlcm1p
bmFsTWFwcGluZ1ZpZXcpe3JldHVyblt0aGlzLnRlcm1pbmFsTWFwcGluZ1ZpZXcuZWwsdGhpcy5l
bF19ZWxzZXtyZT0KdHVyblt0aGlzLmVsXX19fSk7dmFyIEJhc2VJbnB1dFRlcm1pbmFsVmlldz0z
RFRlcm1pbmFsVmlldy5leHRlbmQoe2NsYXNzTmFtPQplOiJ0ZXJtaW5hbCBpbnB1dC10ZXJtaW5h
bCIsaW5pdGlhbGl6ZTpmdW5jdGlvbihjKXt2YXIgZj0zRGMubm9kZTt2YXIgYT0zRGM9Ci5pbnB1
dDt2YXIgYj0zRGEubmFtZTt2YXIgZD0zRHRoaXMudGVybWluYWxGb3JJbnB1dChhKTtpZighZC5t
dWx0aXBsZSl7dGhpcz0KLnNldHVwTWFwcGluZ1ZpZXcoZCl9dGhpcy5lbC50ZXJtaW5hbD0zRGQ7
ZC5ub2RlPTNEZjtkLm5hbWU9M0RiO2YuaW5wdXRfdGVyPQptaW5hbHNbYl09M0RkfSxldmVudHM6
e2Ryb3Bpbml0OiJvbkRyb3BJbml0Iixkcm9wc3RhcnQ6Im9uRHJvcFN0YXJ0Iixkcm9wZW49CmQ6
Im9uRHJvcEVuZCIsZHJvcDoib25Ecm9wIixob3Zlcjoib25Ib3ZlciIsfSxvbkRyb3BJbml0OmZ1
bmN0aW9uKGIsYyl7dmFyID0KYT0zRHRoaXMuZWwudGVybWluYWw7cmV0dXJuICQoYy5kcmFnKS5o
YXNDbGFzcygib3V0cHV0LXRlcm1pbmFsIikmJmEuY2FuQWNjPQplcHQoYy5kcmFnLnRlcm1pbmFs
KX0sb25Ecm9wU3RhcnQ6ZnVuY3Rpb24oYSxiKXtpZihiLnByb3h5LnRlcm1pbmFsKXtiLnByb3g9
CnkudGVybWluYWwuY29ubmVjdG9yc1swXS5pbm5lcl9jb2xvcj0zRCIjQkJGRkJCIn19LG9uRHJv
cEVuZDpmdW5jdGlvbihhLGIpez0KaWYoYi5wcm94eS50ZXJtaW5hbCl7Yi5wcm94eS50ZXJtaW5h
bC5jb25uZWN0b3JzWzBdLmlubmVyX2NvbG9yPTNEIiNGRkZGRkYiPQp9fSxvbkRyb3A6ZnVuY3Rp
b24oYixjKXt2YXIgYT0zRHRoaXMuZWwudGVybWluYWw7bmV3IENvbm5lY3RvcihjLmRyYWcudGVy
bWk9Cm5hbCxhKS5yZWRyYXcoKX0sb25Ib3ZlcjpmdW5jdGlvbigpe3ZhciBjPTNEdGhpcy5lbDt2
YXIgYj0zRGMudGVybWluYWw7aWYoYj0KLmNvbm5lY3RvcnMubGVuZ3RoPjApe3ZhciBhPTNEJCgi
PGRpdiBjbGFzcz0zRCdjYWxsb3V0Jz48L2Rpdj4iKS5jc3Moe2Rpc3BsPQpheToibm9uZSJ9KS5h
cHBlbmRUbygiYm9keSIpLmFwcGVuZCgkKCI8ZGl2IGNsYXNzPTNEJ2J1dHRvbic+PC9kaXY+Iiku
YXBwZW49CmQoJCgiPGRpdi8+IikuYWRkQ2xhc3MoImZhLWljb24tYnV0dG9uIGZhIGZhLXRpbWVz
IikuY2xpY2soZnVuY3Rpb24oKXskLmVhYz0KaChiLmNvbm5lY3RvcnMsZnVuY3Rpb24oZixkKXtp
ZihkKXtkLmRlc3Ryb3koKX19KTthLnJlbW92ZSgpfSkpKS5iaW5kKCJtb3VzPQplbGVhdmUiLGZ1
bmN0aW9uKCl7JCh0aGlzKS5yZW1vdmUoKX0pO2EuY3NzKHt0b3A6JChjKS5vZmZzZXQoKS50b3At
MixsZWZ0OiQ9CihjKS5vZmZzZXQoKS5sZWZ0LWEud2lkdGgoKSwicGFkZGluZy1yaWdodCI6JChj
KS53aWR0aCgpfSkuc2hvdygpfX0sfSk7dmFyID0KSW5wdXRUZXJtaW5hbFZpZXc9M0RCYXNlSW5w
dXRUZXJtaW5hbFZpZXcuZXh0ZW5kKHt0ZXJtaW5hbE1hcHBpbmdDbGFzczpJbnB1PQp0VGVybWlu
YWxNYXBwaW5nLHRlcm1pbmFsTWFwcGluZ1ZpZXdDbGFzczpJbnB1dFRlcm1pbmFsTWFwcGluZ1Zp
ZXcsdGVybWluYWw9CkZvcklucHV0OmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgSW5wdXRUZXJtaW5h
bCh7ZWxlbWVudDp0aGlzLmVsLGlucHV0OmF9KX0sfT0KKTt2YXIgSW5wdXRDb2xsZWN0aW9uVGVy
bWluYWxWaWV3PTNEQmFzZUlucHV0VGVybWluYWxWaWV3LmV4dGVuZCh7dGVybWluYWxNPQphcHBp
bmdDbGFzczpJbnB1dENvbGxlY3Rpb25UZXJtaW5hbE1hcHBpbmcsdGVybWluYWxNYXBwaW5nVmll
d0NsYXNzOklucHV0Q289CmxsZWN0aW9uVGVybWluYWxNYXBwaW5nVmlldyx0ZXJtaW5hbEZvcklu
cHV0OmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgSW5wdXRDbz0KbGxlY3Rpb25UZXJtaW5hbCh7ZWxl
bWVudDp0aGlzLmVsLGlucHV0OmF9KX0sfSk7dmFyIEJhc2VPdXRwdXRUZXJtaW5hbFZpZXc9Cj0z
RFRlcm1pbmFsVmlldy5leHRlbmQoe2NsYXNzTmFtZToidGVybWluYWwgb3V0cHV0LXRlcm1pbmFs
Iixpbml0aWFsaXplOmZ1bj0KY3Rpb24oYyl7dmFyIGY9M0RjLm5vZGU7dmFyIGE9M0RjLm91dHB1
dDt2YXIgYj0zRGEubmFtZTt2YXIgZD0zRHRoaXMudGVybWluPQphbEZvck91dHB1dChhKTt0aGlz
LnNldHVwTWFwcGluZ1ZpZXcoZCk7dGhpcy5lbC50ZXJtaW5hbD0zRGQ7ZC5ub2RlPTNEZjtkLm49
CmFtZT0zRGI7Zi5vdXRwdXRfdGVybWluYWxzW2JdPTNEZH0sZXZlbnRzOntkcmFnOiJvbkRyYWci
LGRyYWdzdGFydDoib25EcmFnUz0KdGFydCIsZHJhZ2VuZDoib25EcmFnRW5kIix9LG9uRHJhZzpm
dW5jdGlvbihiLGMpe3ZhciBhPTNEZnVuY3Rpb24oKXt2YXIgZj0KPTNEJChjLnByb3h5KS5vZmZz
ZXRQYXJlbnQoKS5vZmZzZXQoKSxkPTNEYy5vZmZzZXRYLWYubGVmdCxnPTNEYy5vZmZzZXRZLWYu
PQp0b3A7JChjLnByb3h5KS5jc3Moe2xlZnQ6ZCx0b3A6Z30pO2MucHJveHkudGVybWluYWwucmVk
cmF3KCk7Y2FudmFzX21hbmFnZXI9Ci51cGRhdGVfdmlld3BvcnRfb3ZlcmxheSgpfTthKCk7JCgi
I2NhbnZhcy1jb250YWluZXIiKS5nZXQoMCkuc2Nyb2xsX3BhbmVsLj0KdGVzdChiLGEpfSxvbkRy
YWdTdGFydDpmdW5jdGlvbihiLGYpeyQoZi5hdmFpbGFibGUpLmFkZENsYXNzKCJpbnB1dC10ZXJt
aW5hPQpsLWFjdGl2ZSIpO3dvcmtmbG93LmNoZWNrX2NoYW5nZXNfaW5fYWN0aXZlX2Zvcm0oKTt2
YXIgYT0zRCQoJzxkaXYgY2xhc3M9M0Q9CiJkcmFnLXRlcm1pbmFsIiBzdHlsZT0zRCJwb3NpdGlv
bjogYWJzb2x1dGU7Ij48L2Rpdj4nKS5hcHBlbmRUbygiI2NhbnZhcy1jbz0KbnRhaW5lciIpLmdl
dCgwKTthLnRlcm1pbmFsPTNEbmV3IE91dHB1dFRlcm1pbmFsKHtlbGVtZW50OmF9KTt2YXIgZz0z
RG5ldyBDPQpvbm5lY3RvcigpO2cuZHJhZ2dpbmc9M0R0cnVlO2cuY29ubmVjdCh0aGlzLmVsLnRl
cm1pbmFsLGEudGVybWluYWwpO3JldHVybiA9CmF9LG9uRHJhZ0VuZDpmdW5jdGlvbihiLGMpe3Zh
ciBhPTNEYy5wcm94eS50ZXJtaW5hbC5jb25uZWN0b3JzWzBdO2lmKGEpe2EuZD0KZXN0cm95KCl9
JChjLnByb3h5KS5yZW1vdmUoKTskKGMuYXZhaWxhYmxlKS5yZW1vdmVDbGFzcygiaW5wdXQtdGVy
bWluYWwtYWN0PQppdmUiKTskKCIjY2FudmFzLWNvbnRhaW5lciIpLmdldCgwKS5zY3JvbGxfcGFu
ZWwuc3RvcCgpfX0pO3ZhciBPdXRwdXRUZXJtaW49CmFsVmlldz0zREJhc2VPdXRwdXRUZXJtaW5h
bFZpZXcuZXh0ZW5kKHt0ZXJtaW5hbE1hcHBpbmdDbGFzczpPdXRwdXRUZXJtaW5hbD0KTWFwcGlu
Zyx0ZXJtaW5hbE1hcHBpbmdWaWV3Q2xhc3M6T3V0cHV0VGVybWluYWxNYXBwaW5nVmlldyx0ZXJt
aW5hbEZvck91dHB1PQp0OmZ1bmN0aW9uKGEpe3ZhciBjPTNEYS5leHRlbnNpb25zO3ZhciBiPTNE
bmV3IE91dHB1dFRlcm1pbmFsKHtlbGVtZW50OnRoaXM9Ci5lbCxkYXRhdHlwZXM6Y30pO3JldHVy
biBifSx9KTt2YXIgT3V0cHV0Q29sbGVjdGlvblRlcm1pbmFsVmlldz0zREJhc2VPdXRwdT0KdFRl
cm1pbmFsVmlldy5leHRlbmQoe3Rlcm1pbmFsTWFwcGluZ0NsYXNzOk91dHB1dENvbGxlY3Rpb25U
ZXJtaW5hbE1hcHBpbmcsPQp0ZXJtaW5hbE1hcHBpbmdWaWV3Q2xhc3M6T3V0cHV0Q29sbGVjdGlv
blRlcm1pbmFsTWFwcGluZ1ZpZXcsdGVybWluYWxGb3JPdXQ9CnB1dDpmdW5jdGlvbihhKXt2YXIg
Yz0zRGEuY29sbGVjdGlvbl90eXBlO3ZhciBiPTNEbmV3IE91dHB1dENvbGxlY3Rpb25UZXJtaT0K
bmFsKHtlbGVtZW50OnRoaXMuZWwsY29sbGVjdGlvbl90eXBlOmMsZGF0YXR5cGVzOmEuZXh0ZW5z
aW9uc30pO3JldHVybiBifSx9PQopO2Z1bmN0aW9uIFNjcm9sbFBhbmVsKGEpe3RoaXMucGFuZWw9
M0RhfSQuZXh0ZW5kKFNjcm9sbFBhbmVsLnByb3RvdHlwZSx7dGU9CnN0OmZ1bmN0aW9uKHYsZCl7
Y2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7dmFyIGs9M0R2LnBhZ2VYLGo9M0R2LnBhZ2VZLGw9
Cj0zRCQodGhpcy5wYW5lbCksYz0zRGwucG9zaXRpb24oKSxiPTNEbC53aWR0aCgpLGk9M0RsLmhl
aWdodCgpLHc9M0RsLnBhcmVudD0KKCkscz0zRHcud2lkdGgoKSxhPTNEdy5oZWlnaHQoKSxyPTNE
dy5vZmZzZXQoKSxwPTNEci5sZWZ0LG09M0RyLnRvcCxBPTNEcCt3PQoud2lkdGgoKSx1PTNEbSt3
LmhlaWdodCgpLEI9M0QtKGItKHMvMikpLHo9M0QtKGktKGEvMikpLGc9M0Qocy8yKSxmPTNEKGEv
Mik9CixoPTNEZmFsc2UscT0zRDUsbz0zRDIzO2lmKGstcTxwKXtpZihjLmxlZnQ8Zyl7dmFyIG49
M0RNYXRoLm1pbihvLGctYy5sZWZ0KT0KO2wuY3NzKCJsZWZ0IixjLmxlZnQrbik7aD0zRHRydWV9
fWVsc2V7aWYoaytxPkEpe2lmKGMubGVmdD5CKXt2YXIgbj0zRE1hdGguPQptaW4obyxjLmxlZnQt
Qik7bC5jc3MoImxlZnQiLGMubGVmdC1uKTtoPTNEdHJ1ZX19ZWxzZXtpZihqLXE8bSl7aWYoYy50
b3A8Zik9Cnt2YXIgbj0zRE1hdGgubWluKG8sZi1jLnRvcCk7bC5jc3MoInRvcCIsYy50b3Arbik7
aD0zRHRydWV9fWVsc2V7aWYoaitxPnUpez0KaWYoYy50b3A+eil7dmFyIG49M0RNYXRoLm1pbihv
LGMudG9wLUIpO2wuY3NzKCJ0b3AiLChjLnRvcC1uKSsicHgiKTtoPTNEdHJ1PQplfX19fX1pZiho
KXtkKCk7dmFyIGw9M0R0aGlzO3RoaXMudGltZW91dD0zRHNldFRpbWVvdXQoZnVuY3Rpb24oKXts
LnRlc3Qodiw9CmQpfSw1MCl9fSxzdG9wOmZ1bmN0aW9uKGIsYSl7Y2xlYXJUaW1lb3V0KHRoaXMu
dGltZW91dCl9fSk7ZnVuY3Rpb24gQ2FudmFzTT0KYW5hZ2VyKGIsYSl7dGhpcy5jdj0zRGI7dGhp
cy5jYz0zRHRoaXMuY3YuZmluZCgiI2NhbnZhcy1jb250YWluZXIiKTt0aGlzLm9jPQo9M0RhLmZp
bmQoIiNvdmVydmlldy1jYW52YXMiKTt0aGlzLm92PTNEYS5maW5kKCIjb3ZlcnZpZXctdmlld3Bv
cnQiKTt0aGlzLmk9Cm5pdF9kcmFnKCl9JC5leHRlbmQoQ2FudmFzTWFuYWdlci5wcm90b3R5cGUs
e2luaXRfZHJhZzpmdW5jdGlvbigpe3ZhciBiPTNEdD0KaGlzO3ZhciBhPTNEZnVuY3Rpb24oZixn
KXtmPTNETWF0aC5taW4oZixiLmN2LndpZHRoKCkvMik7Zj0zRE1hdGgubWF4KGYsLWIuPQpjYy53
aWR0aCgpK2IuY3Yud2lkdGgoKS8yKTtnPTNETWF0aC5taW4oZyxiLmN2LmhlaWdodCgpLzIpO2c9
M0RNYXRoLm1heChnLC09CmIuY2MuaGVpZ2h0KCkrYi5jdi5oZWlnaHQoKS8yKTtiLmNjLmNzcyh7
bGVmdDpmLHRvcDpnfSk7Yi51cGRhdGVfdmlld3BvcnRfbz0KdmVybGF5KCl9O3RoaXMuY2MuZWFj
aChmdW5jdGlvbigpe3RoaXMuc2Nyb2xsX3BhbmVsPTNEbmV3IFNjcm9sbFBhbmVsKHRoaXMpPQp9
KTt2YXIgZCxjO3RoaXMuY3YuYmluZCgiZHJhZ3N0YXJ0IixmdW5jdGlvbigpe3ZhciBnPTNEJCh0
aGlzKS5vZmZzZXQoKTt2YXI9CiBmPTNEYi5jYy5wb3NpdGlvbigpO2M9M0RmLnRvcC1nLnRvcDtk
PTNEZi5sZWZ0LWcubGVmdH0pLmJpbmQoImRyYWciLGZ1bmN0aT0Kb24oZixnKXthKGcub2Zmc2V0
WCtkLGcub2Zmc2V0WStjKX0pLmJpbmQoImRyYWdlbmQiLGZ1bmN0aW9uKCl7d29ya2Zsb3cuZml0
PQpfY2FudmFzX3RvX25vZGVzKCk7Yi5kcmF3X292ZXJ2aWV3KCl9KTt0aGlzLm92LmJpbmQoImRy
YWciLGZ1bmN0aW9uKGssbCl7dmE9CnIgaD0zRGIuY2Mud2lkdGgoKSxuPTNEYi5jYy5oZWlnaHQo
KSxtPTNEYi5vYy53aWR0aCgpLGo9M0RiLm9jLmhlaWdodCgpLGY9Cj0zRCQodGhpcykub2Zmc2V0
UGFyZW50KCkub2Zmc2V0KCksaT0zRGwub2Zmc2V0WC1mLmxlZnQsZz0zRGwub2Zmc2V0WS1mLnRv
cD0KO2EoLShpL20qaCksLShnL2oqbikpfSkuYmluZCgiZHJhZ2VuZCIsZnVuY3Rpb24oKXt3b3Jr
Zmxvdy5maXRfY2FudmFzX3RvX25vPQpkZXMoKTtiLmRyYXdfb3ZlcnZpZXcoKX0pOyQoIiNvdmVy
dmlldy1ib3JkZXIiKS5iaW5kKCJkcmFnIixmdW5jdGlvbihnLGkpe3Y9CmFyIGo9M0QkKHRoaXMp
Lm9mZnNldFBhcmVudCgpO3ZhciBoPTNEai5vZmZzZXQoKTt2YXIgZj0zRE1hdGgubWF4KGoud2lk
dGgoKT0KLShpLm9mZnNldFgtaC5sZWZ0KSxqLmhlaWdodCgpLShpLm9mZnNldFktaC50b3ApKTsk
KHRoaXMpLmNzcyh7d2lkdGg6ZixoZWlnPQpodDpmfSk7Yi5kcmF3X292ZXJ2aWV3KCl9KTskKCIj
b3ZlcnZpZXctYm9yZGVyIGRpdiIpLmJpbmQoImRyYWciLGZ1bmN0aW9uKCk9Cnt9KX0sdXBkYXRl
X3ZpZXdwb3J0X292ZXJsYXk6ZnVuY3Rpb24oKXt2YXIgYj0zRHRoaXMuY2MsZj0zRHRoaXMuY3Ys
YT0zRHRoaT0Kcy5vYyxjPTNEdGhpcy5vdixkPTNEYi53aWR0aCgpLGo9M0RiLmhlaWdodCgpLGk9
M0RhLndpZHRoKCksZz0zRGEuaGVpZ2h0KCksPQpoPTNEYi5wb3NpdGlvbigpO2MuY3NzKHtsZWZ0
Oi0oaC5sZWZ0L2QqaSksdG9wOi0oaC50b3AvaipnKSx3aWR0aDooZi53aWR0aCg9CikvZCppKS0y
LGhlaWdodDooZi5oZWlnaHQoKS9qKmcpLTJ9KX0sZHJhd19vdmVydmlldzpmdW5jdGlvbigpe3Zh
ciBqPTNEJCgiIz0Kb3ZlcnZpZXctY2FudmFzIiksbT0zRGoucGFyZW50KCkucGFyZW50KCkud2lk
dGgoKSxpPTNEai5nZXQoMCkuZ2V0Q29udGV4dCgiPQoyZCIpLGQ9M0QkKCIjY2FudmFzLWNvbnRh
aW5lciIpLndpZHRoKCksbD0zRCQoIiNjYW52YXMtY29udGFpbmVyIikuaGVpZ2h0KCk9Cjt2YXIg
ZyxhLGssZjt2YXIgaD0zRHRoaXMuY3Yud2lkdGgoKTt2YXIgYj0zRHRoaXMuY3YuaGVpZ2h0KCk7
aWYoZDxoJiZsPGIpez0Kaz0zRGQvaCptO2Y9M0QobS1rKS8yO2c9M0RsL2IqbTthPTNEKG0tZykv
Mn1lbHNle2lmKGQ8bCl7YT0zRDA7Zz0zRG07az0zRE1hPQp0aC5jZWlsKGcqZC9sKTtmPTNEKG0t
aykvMn1lbHNle2s9M0RtO2Y9M0QwO2c9M0RNYXRoLmNlaWwoaypsL2QpO2E9M0QobS1nKS89CjJ9
fWoucGFyZW50KCkuY3NzKHtsZWZ0OmYsdG9wOmEsd2lkdGg6ayxoZWlnaHQ6Z30pO2ouYXR0cigi
d2lkdGgiLGspO2ouYXR0cj0KKCJoZWlnaHQiLGcpOyQuZWFjaCh3b3JrZmxvdy5ub2RlcyxmdW5j
dGlvbih0LHEpe2kuZmlsbFN0eWxlPTNEIiNEMkMwOTkiO2kuPQpzdHJva2VTdHlsZT0zRCIjRDhC
MzY1IjtpLmxpbmVXaWR0aD0zRDE7dmFyIHM9M0QkKHEuZWxlbWVudCksbj0zRHMucG9zaXRpb249
CigpLGM9M0RuLmxlZnQvZCprLHI9M0RuLnRvcC9sKmcsbz0zRHMud2lkdGgoKS9kKmsscD0zRHMu
aGVpZ2h0KCkvbCpnO2lmKHEudD0Kb29sX2Vycm9ycyl7aS5maWxsU3R5bGU9M0QiI0ZGQ0NDQyI7
aS5zdHJva2VTdHlsZT0zRCIjQUE2NjY2In1lbHNle2lmKHEud29yPQprZmxvd19vdXRwdXRzIT0z
RHVuZGVmaW5lZCYmcS53b3JrZmxvd19vdXRwdXRzLmxlbmd0aD4wKXtpLmZpbGxTdHlsZT0zRCIj
RTg9CkE5MkQiO2kuc3Ryb2tlU3R5bGU9M0QiI0U4QTkyRCJ9fWkuZmlsbFJlY3QoYyxyLG8scCk7
aS5zdHJva2VSZWN0KGMscixvLHApfT0KKTt0aGlzLnVwZGF0ZV92aWV3cG9ydF9vdmVybGF5KCl9
fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKZGlmZiAtciAxNTk2MmIzZDlhYWMwNjFl
OTU0MWY4MTc1YzhkMmUyYmM0YmE1Y2FiIC1yIDJlOTkwY2FlZmM5NDNlYjJiMWQ0YTk0PQphZjUw
OGMyMmJiMzRiN2ZhNiBzdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3Rvb2xzL3Rvb2xzLWZvcm0t
YmFzZS5qcwotLS0gYS9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3Rvb2xzL3Rvb2xzLWZvcm0t
YmFzZS5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3Rvb2xzL3Rvb2xzLWZvcm0t
YmFzZS5qcwpAQCAtMSwxICsxLDEgQEAKLWRlZmluZShbInV0aWxzL3V0aWxzIiwidXRpbHMvZGVm
ZXJyZWQiLCJtdmMvdWkvdWktcG9ydGxldCIsIm12Yy91aS91aS1taXNjPQoiLCJtdmMvY2l0YXRp
b24vY2l0YXRpb24tbW9kZWwiLCJtdmMvY2l0YXRpb24vY2l0YXRpb24tdmlldyIsIm12Yy90b29s
cyIsIm09CnZjL3Rvb2xzL3Rvb2xzLXRlbXBsYXRlIiwibXZjL3Rvb2xzL3Rvb2xzLWNvbnRlbnQi
LCJtdmMvdG9vbHMvdG9vbHMtc2VjdGlvbj0KIiwibXZjL3Rvb2xzL3Rvb2xzLXRyZWUiXSxmdW5j
dGlvbihnLGgsZixrLGksYSxkLGMsZSxqLGIpe3JldHVybiBCYWNrYm9uZS5WPQppZXcuZXh0ZW5k
KHtpbml0aWFsaXplOmZ1bmN0aW9uKGwpe2NvbnNvbGUuZGVidWcobCk7dmFyIG09M0RwYXJlbnQu
R2FsYXh5O2k9CmYobSYmbS5tb2RhbCl7dGhpcy5tb2RhbD0zRG0ubW9kYWx9ZWxzZXt0aGlzLm1v
ZGFsPTNEbmV3IGsuTW9kYWwuVmlldygpfWlmKD0KbSYmbS5jdXJyVXNlcil7dGhpcy5pc19hZG1p
bj0zRG0uY3VyclVzZXIuZ2V0KCJpc19hZG1pbiIpfWVsc2V7dGhpcy5pc19hZG1pPQpuPTNEZmFs
c2V9dGhpcy5vcHRpb25zPTNEbDt0aGlzLmNvbnRhaW5lcj0zRHRoaXMub3B0aW9ucy5jb250YWlu
ZXJ8fCJib2R5Ijs9CnRoaXMuZGVmZXJyZWQ9M0RuZXcgaCgpO3RoaXMuc2V0RWxlbWVudCgiPGRp
di8+Iik7JCh0aGlzLmNvbnRhaW5lcikuYXBwZW5kKD0KdGhpcy4kZWwpO3RoaXMuX2J1aWxkRm9y
bSgpfSxyZWNpZXB0OmZ1bmN0aW9uKGwpeyQodGhpcy5jb250YWluZXIpLmVtcHR5KCk7PQokKHRo
aXMuY29udGFpbmVyKS5hcHBlbmQobCl9LGhpZ2hsaWdodDpmdW5jdGlvbihtLG4sbCl7dmFyIG89
M0R0aGlzLmVsZW1lbnQ9Cl9saXN0W21dO2lmKG8pe28uZXJyb3Iobnx8IlBsZWFzZSB2ZXJpZnkg
dGhpcyBwYXJhbWV0ZXIuIik7aWYoIWwpeyQodGhpcy5jbz0KbnRhaW5lcikuYW5pbWF0ZSh7c2Ny
b2xsVG9wOm8uJGVsLm9mZnNldCgpLnRvcC0yMH0sNTAwKX19fSxfYnVpbGRGb3JtOmZ1bmN0PQpp
b24oKXt2YXIgbD0zRHRoaXM7dGhpcy5vZmYoInJlZnJlc2giKTt0aGlzLm9mZigicmVzZXQiKTt0
aGlzLmZpZWxkX2xpc3Q9M0Q9Cnt9O3RoaXMuaW5wdXRfbGlzdD0zRHt9O3RoaXMuZWxlbWVudF9s
aXN0PTNEe307dGhpcy50cmVlPTNEbmV3IGIodGhpcyk7dGhpcz0KLmNvbnRlbnQ9M0RuZXcgZSh0
aGlzKTt2YXIgbj0zRHRoaXMub3B0aW9uczt0aGlzLl9yZW5kZXJGb3JtKG4pO3RoaXMudHJlZS5m
PQppbmFsaXplKCk7aWYoIXRoaXMud29ya2Zsb3cmJm4uZXJyb3JzKXt2YXIgbz0zRHRoaXMudHJl
ZS5tYXRjaFJlc3BvbnNlKG4uZXI9CnJvcnMpO2Zvcih2YXIgbSBpbiBvKXt0aGlzLmhpZ2hsaWdo
dChtLG9bbV0sdHJ1ZSl9fXRoaXMub24oInJlZnJlc2giLGZ1bmN0aT0Kb24oKXtsLmRlZmVycmVk
LnJlc2V0KCk7bC5kZWZlcnJlZC5leGVjdXRlKGZ1bmN0aW9uKCl7bC5fdXBkYXRlTW9kZWwoKX0p
fSk7PQp0aGlzLm9uKCJyZXNldCIsZnVuY3Rpb24oKXtmb3IodmFyIHAgaW4gdGhpcy5lbGVtZW50
X2xpc3Qpe3RoaXMuZWxlbWVudF9saXM9CnRbcF0ucmVzZXQoKX19KX0sX3JlbmRlckZvcm06ZnVu
Y3Rpb24odSl7dmFyIHQ9M0R0aGlzO3RoaXMubWVzc2FnZT0zRG5ldyBrLj0KTWVzc2FnZSgpO3Zh
ciBxPTNEbmV3IGsuQnV0dG9uSWNvbih7aWNvbjoiZmEtaW5mby1jaXJjbGUiLHRpdGxlOiJSZXF1
aXJlbWVuPQp0cyIsdG9vbHRpcDoiRGlzcGxheSB0b29sIHJlcXVpcmVtZW50cyIsb25jbGljazpm
dW5jdGlvbigpe2lmKCF0aGlzLnZpc2libGU9Cil7dGhpcy52aXNpYmxlPTNEdHJ1ZTt0Lm1lc3Nh
Z2UudXBkYXRlKHtwZXJzaXN0ZW50OnRydWUsbWVzc2FnZTpjLnJlcXVpcmVtZT0KbnRzKHUpLHN0
YXR1czoiaW5mbyJ9KX1lbHNle3RoaXMudmlzaWJsZT0zRGZhbHNlO3QubWVzc2FnZS51cGRhdGUo
e21lc3NhZ2U6PQoiIn0pfX19KTtpZighdS5yZXF1aXJlbWVudHN8fHUucmVxdWlyZW1lbnRzLmxl
bmd0aD0zRD0zRDApe3EuJGVsLmhpZGUoKX12YXI9CiBtPTNEbmV3IGsuQnV0dG9uTWVudSh7aWNv
bjoiZmEtY3ViZXMiLHRpdGxlOiJWZXJzaW9ucyIsdG9vbHRpcDoiU2VsZWN0IGFubz0KdGhlciB0
b29sIHZlcnNpb24ifSk7aWYodS52ZXJzaW9ucyYmdS52ZXJzaW9ucy5sZW5ndGg+MSl7Zm9yKHZh
ciBvIGluIHUudmVyPQpzaW9ucyl7dmFyIHI9M0R1LnZlcnNpb25zW29dO2lmKHIhPTNEdS52ZXJz
aW9uKXttLmFkZE1lbnUoe3RpdGxlOiJTd2l0Y2ggdG89CiAiK3IsdmVyc2lvbjpyLGljb246ImZh
LWN1YmUiLG9uY2xpY2s6ZnVuY3Rpb24oKXt1LmlkPTNEdS5pZC5yZXBsYWNlKHUudmVycz0KaW9u
LHRoaXMudmVyc2lvbik7dS52ZXJzaW9uPTNEdGhpcy52ZXJzaW9uO3QuZGVmZXJyZWQucmVzZXQo
KTt0LmRlZmVycmVkLmV4PQplY3V0ZShmdW5jdGlvbigpe3QuX2J1aWxkTW9kZWwoKX0pfX0pfX19
ZWxzZXttLiRlbC5oaWRlKCl9dmFyIHA9M0RuZXcgay5CdXQ9CnRvbk1lbnUoe2ljb246ImZhLWNh
cmV0LWRvd24iLHRpdGxlOiJPcHRpb25zIix0b29sdGlwOiJWaWV3IGF2YWlsYWJsZSBvcHRpbz0K
bnMifSk7aWYodS5iaW9zdGFyX3VybCl7cC5hZGRNZW51KHtpY29uOiJmYS1xdWVzdGlvbi1jaXJj
bGUiLHRpdGxlOiJRdWVzdGlvPQpuPyIsdG9vbHRpcDoiQXNrIGEgcXVlc3Rpb24gYWJvdXQgdGhp
cyB0b29sIChCaW9zdGFyKSIsb25jbGljazpmdW5jdGlvbigpe3c9CmluZG93Lm9wZW4odS5iaW9z
dGFyX3VybCsiL3AvbmV3L3Bvc3QvIil9fSk7cC5hZGRNZW51KHtpY29uOiJmYS1zZWFyY2giLHRp
dD0KbGU6IlNlYXJjaCIsdG9vbHRpcDoiU2VhcmNoIGhlbHAgZm9yIHRoaXMgdG9vbCAoQmlvc3Rh
cikiLG9uY2xpY2s6ZnVuY3Rpb24oPQope3dpbmRvdy5vcGVuKHUuYmlvc3Rhcl91cmwrIi90LyIr
dS5pZCsiLyIpfX0pfXAuYWRkTWVudSh7aWNvbjoiZmEtc2hhcmUiLHQ9Cml0bGU6IlNoYXJlIix0
b29sdGlwOiJTaGFyZSB0aGlzIHRvb2wiLG9uY2xpY2s6ZnVuY3Rpb24oKXtwcm9tcHQoIkNvcHkg
dG8gYz0KbGlwYm9hcmQ6IEN0cmwrQywgRW50ZXIiLHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4rZ2Fs
YXh5X2NvbmZpZy5yb290KyJyb290P3RvPQpvbF9pZD0zRCIrdS5pZCl9fSk7aWYodGhpcy5pc19h
ZG1pbil7cC5hZGRNZW51KHtpY29uOiJmYS1kb3dubG9hZCIsdGl0bGU6IkQ9Cm93bmxvYWQiLHRv
b2x0aXA6IkRvd25sb2FkIHRoaXMgdG9vbCIsb25jbGljazpmdW5jdGlvbigpe3dpbmRvdy5sb2Nh
dGlvbi5ocj0KZWY9M0RnYWxheHlfY29uZmlnLnJvb3QrImFwaS90b29scy8iK3UuaWQrIi9kb3du
bG9hZCJ9fSl9dGhpcy5zZWN0aW9uPTNEbmV3PQogai5WaWV3KHQse2lucHV0czp1LmlucHV0cyxj
bHM6InVpLXRhYmxlLXBsYWluIn0pO2lmKHRoaXMuaW5jb21wYXRpYmxlKXt0aGk9CnMuJGVsLmhp
ZGUoKTskKCIjdG9vbC1mb3JtLWNsYXNzaWMiKS5zaG93KCk7cmV0dXJufXRoaXMucG9ydGxldD0z
RG5ldyBmLlZpZT0Kdyh7aWNvbjoiZmEtd3JlbmNoIix0aXRsZToiPGI+Iit1Lm5hbWUrIjwvYj4g
Iit1LmRlc2NyaXB0aW9uKyIgKEdhbGF4eSBUb29sPQogVmVyc2lvbiAiK3UudmVyc2lvbisiKSIs
Y2xzOiJ1aS1wb3J0bGV0LXNsaW0iLG9wZXJhdGlvbnM6e3JlcXVpcmVtZW50czpxLG09CmVudTpw
LHZlcnNpb25zOm19LGJ1dHRvbnM6dGhpcy5idXR0b25zfSk7dGhpcy5wb3J0bGV0LmFwcGVuZCh0
aGlzLm1lc3NhZ2UuJD0KZWwsdHJ1ZSk7dGhpcy5wb3J0bGV0LmFwcGVuZCh0aGlzLnNlY3Rpb24u
JGVsKTt0aGlzLiRlbC5lbXB0eSgpO3RoaXMuJGVsLmFwPQpwZW5kKHRoaXMucG9ydGxldC4kZWwp
O2lmKHUuaGVscCE9M0QiIil7dGhpcy4kZWwuYXBwZW5kKGMuaGVscCh1LmhlbHApKX1pZig9CnUu
Y2l0YXRpb25zKXt2YXIgcz0zRCQoIjxkaXYvPiIpO3ZhciBsPTNEbmV3IGkuVG9vbENpdGF0aW9u
Q29sbGVjdGlvbigpO2wudD0Kb29sX2lkPTNEdS5pZDt2YXIgbj0zRG5ldyBhLkNpdGF0aW9uTGlz
dFZpZXcoe2VsOnMsY29sbGVjdGlvbjpsfSk7bi5yZW5kZXIoPQopO2wuZmV0Y2goKTt0aGlzLiRl
bC5hcHBlbmQocyl9aWYodS5tZXNzYWdlKXt0aGlzLm1lc3NhZ2UudXBkYXRlKHtwZXJzaXN0ZW49
CnQ6dHJ1ZSxzdGF0dXM6Indhcm5pbmciLG1lc3NhZ2U6dS5tZXNzYWdlfSl9fX0pfSk7ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGVmaW5lKFsidXRpbHMvdXRpbHMiLCJ1dGlscy9kZWZl
cnJlZCIsIm12Yy91aS91aS1wb3J0bGV0IiwibXZjL3VpL3VpLW1pc2M9CiIsIm12Yy9jaXRhdGlv
bi9jaXRhdGlvbi1tb2RlbCIsIm12Yy9jaXRhdGlvbi9jaXRhdGlvbi12aWV3IiwibXZjL3Rvb2xz
IiwibT0KdmMvdG9vbHMvdG9vbHMtdGVtcGxhdGUiLCJtdmMvdG9vbHMvdG9vbHMtY29udGVudCIs
Im12Yy90b29scy90b29scy1zZWN0aW9uPQoiLCJtdmMvdG9vbHMvdG9vbHMtdHJlZSJdLGZ1bmN0
aW9uKGcsaCxmLGssaSxhLGQsYyxlLGosYil7cmV0dXJuIEJhY2tib25lLlY9Cmlldy5leHRlbmQo
e2luaXRpYWxpemU6ZnVuY3Rpb24obCl7Y29uc29sZS5kZWJ1ZyhsKTt2YXIgbT0zRHBhcmVudC5H
YWxheHk7aT0KZihtJiZtLm1vZGFsKXt0aGlzLm1vZGFsPTNEbS5tb2RhbH1lbHNle3RoaXMubW9k
YWw9M0RuZXcgay5Nb2RhbC5WaWV3KCl9aWYoPQptJiZtLmN1cnJVc2VyKXt0aGlzLmlzX2FkbWlu
PTNEbS5jdXJyVXNlci5nZXQoImlzX2FkbWluIil9ZWxzZXt0aGlzLmlzX2FkbWk9Cm49M0RmYWxz
ZX10aGlzLm9wdGlvbnM9M0RsO3RoaXMuY29udGFpbmVyPTNEdGhpcy5vcHRpb25zLmNvbnRhaW5l
cnx8ImJvZHkiOz0KdGhpcy5kZWZlcnJlZD0zRG5ldyBoKCk7dGhpcy5zZXRFbGVtZW50KCI8ZGl2
Lz4iKTskKHRoaXMuY29udGFpbmVyKS5hcHBlbmQoPQp0aGlzLiRlbCk7dGhpcy5fYnVpbGRGb3Jt
KCl9LHJlY2llcHQ6ZnVuY3Rpb24obCl7JCh0aGlzLmNvbnRhaW5lcikuZW1wdHkoKTs9CiQodGhp
cy5jb250YWluZXIpLmFwcGVuZChsKX0saGlnaGxpZ2h0OmZ1bmN0aW9uKG0sbixsKXt2YXIgbz0z
RHRoaXMuZWxlbWVudD0KX2xpc3RbbV07aWYobyl7by5lcnJvcihufHwiUGxlYXNlIHZlcmlmeSB0
aGlzIHBhcmFtZXRlci4iKTtpZighbCl7JCh0aGlzLmNvPQpudGFpbmVyKS5hbmltYXRlKHtzY3Jv
bGxUb3A6by4kZWwub2Zmc2V0KCkudG9wLTIwfSw1MDApfX19LF9idWlsZEZvcm06ZnVuY3Q9Cmlv
bigpe3ZhciBsPTNEdGhpczt0aGlzLm9mZigicmVmcmVzaCIpO3RoaXMub2ZmKCJyZXNldCIpO3Ro
aXMuZmllbGRfbGlzdD0zRD0Ke307dGhpcy5pbnB1dF9saXN0PTNEe307dGhpcy5lbGVtZW50X2xp
c3Q9M0R7fTt0aGlzLnRyZWU9M0RuZXcgYih0aGlzKTt0aGlzPQouY29udGVudD0zRG5ldyBlKHRo
aXMpO3ZhciBuPTNEdGhpcy5vcHRpb25zO3RoaXMuX3JlbmRlckZvcm0obik7dGhpcy50cmVlLmY9
CmluYWxpemUoKTtpZighdGhpcy53b3JrZmxvdyYmbi5lcnJvcnMpe3ZhciBvPTNEdGhpcy50cmVl
Lm1hdGNoUmVzcG9uc2Uobi5lcj0Kcm9ycyk7Zm9yKHZhciBtIGluIG8pe3RoaXMuaGlnaGxpZ2h0
KG0sb1ttXSx0cnVlKX19dGhpcy5vbigicmVmcmVzaCIsZnVuY3RpPQpvbigpe2wuZGVmZXJyZWQu
cmVzZXQoKTtsLmRlZmVycmVkLmV4ZWN1dGUoZnVuY3Rpb24oKXtsLl91cGRhdGVNb2RlbCgpfSl9
KTs9CnRoaXMub24oInJlc2V0IixmdW5jdGlvbigpe2Zvcih2YXIgcCBpbiB0aGlzLmVsZW1lbnRf
bGlzdCl7dGhpcy5lbGVtZW50X2xpcz0KdFtwXS5yZXNldCgpfX0pfSxfcmVuZGVyRm9ybTpmdW5j
dGlvbih1KXt2YXIgdD0zRHRoaXM7dGhpcy5tZXNzYWdlPTNEbmV3IGsuPQpNZXNzYWdlKCk7dmFy
IHE9M0RuZXcgay5CdXR0b25JY29uKHtpY29uOiJmYS1pbmZvLWNpcmNsZSIsdGl0bGU6IlJlcXVp
cmVtZW49CnRzIix0b29sdGlwOiJEaXNwbGF5IHRvb2wgcmVxdWlyZW1lbnRzIixvbmNsaWNrOmZ1
bmN0aW9uKCl7aWYoIXRoaXMudmlzaWJsZT0KKXt0aGlzLnZpc2libGU9M0R0cnVlO3QubWVzc2Fn
ZS51cGRhdGUoe3BlcnNpc3RlbnQ6dHJ1ZSxtZXNzYWdlOmMucmVxdWlyZW1lPQpudHModSksc3Rh
dHVzOiJpbmZvIn0pfWVsc2V7dGhpcy52aXNpYmxlPTNEZmFsc2U7dC5tZXNzYWdlLnVwZGF0ZSh7
bWVzc2FnZTo9CiIifSl9fX0pO2lmKCF1LnJlcXVpcmVtZW50c3x8dS5yZXF1aXJlbWVudHMubGVu
Z3RoPTNEPTNEMCl7cS4kZWwuaGlkZSgpfXZhcj0KIG09M0RuZXcgay5CdXR0b25NZW51KHtpY29u
OiJmYS1jdWJlcyIsdGl0bGU6IlZlcnNpb25zIix0b29sdGlwOiJTZWxlY3QgYW5vPQp0aGVyIHRv
b2wgdmVyc2lvbiJ9KTtpZih1LnZlcnNpb25zJiZ1LnZlcnNpb25zLmxlbmd0aD4xKXtmb3IodmFy
IG8gaW4gdS52ZXI9CnNpb25zKXt2YXIgcj0zRHUudmVyc2lvbnNbb107aWYociE9M0R1LnZlcnNp
b24pe20uYWRkTWVudSh7dGl0bGU6IlN3aXRjaCB0bz0KICIrcix2ZXJzaW9uOnIsaWNvbjoiZmEt
Y3ViZSIsb25jbGljazpmdW5jdGlvbigpe3UuaWQ9M0R1LmlkLnJlcGxhY2UodS52ZXJzPQppb24s
dGhpcy52ZXJzaW9uKTt1LnZlcnNpb249M0R0aGlzLnZlcnNpb247dC5kZWZlcnJlZC5yZXNldCgp
O3QuZGVmZXJyZWQuZXg9CmVjdXRlKGZ1bmN0aW9uKCl7dC5fYnVpbGRNb2RlbCgpfSl9fSl9fX1l
bHNle20uJGVsLmhpZGUoKX12YXIgcD0zRG5ldyBrLkJ1dD0KdG9uTWVudSh7aWNvbjoiZmEtY2Fy
ZXQtZG93biIsdGl0bGU6Ik9wdGlvbnMiLHRvb2x0aXA6IlZpZXcgYXZhaWxhYmxlIG9wdGlvPQpu
cyJ9KTtpZih1LmJpb3N0YXJfdXJsKXtwLmFkZE1lbnUoe2ljb246ImZhLXF1ZXN0aW9uLWNpcmNs
ZSIsdGl0bGU6IlF1ZXN0aW89Cm4/Iix0b29sdGlwOiJBc2sgYSBxdWVzdGlvbiBhYm91dCB0aGlz
IHRvb2wgKEJpb3N0YXIpIixvbmNsaWNrOmZ1bmN0aW9uKCl7dz0KaW5kb3cub3Blbih1LmJpb3N0
YXJfdXJsKyIvcC9uZXcvcG9zdC8iKX19KTtwLmFkZE1lbnUoe2ljb246ImZhLXNlYXJjaCIsdGl0
PQpsZToiU2VhcmNoIix0b29sdGlwOiJTZWFyY2ggaGVscCBmb3IgdGhpcyB0b29sIChCaW9zdGFy
KSIsb25jbGljazpmdW5jdGlvbig9Cil7d2luZG93Lm9wZW4odS5iaW9zdGFyX3VybCsiL3QvIit1
LmlkKyIvIil9fSl9cC5hZGRNZW51KHtpY29uOiJmYS1zaGFyZSIsdD0KaXRsZToiU2hhcmUiLHRv
b2x0aXA6IlNoYXJlIHRoaXMgdG9vbCIsb25jbGljazpmdW5jdGlvbigpe3Byb21wdCgiQ29weSB0
byBjPQpsaXBib2FyZDogQ3RybCtDLCBFbnRlciIsd2luZG93LmxvY2F0aW9uLm9yaWdpbitnYWxh
eHlfY29uZmlnLnJvb3QrInJvb3Q/dG89Cm9sX2lkPTNEIit1LmlkKX19KTtpZih0aGlzLmlzX2Fk
bWluKXtwLmFkZE1lbnUoe2ljb246ImZhLWRvd25sb2FkIix0aXRsZToiRD0Kb3dubG9hZCIsdG9v
bHRpcDoiRG93bmxvYWQgdGhpcyB0b29sIixvbmNsaWNrOmZ1bmN0aW9uKCl7d2luZG93LmxvY2F0
aW9uLmhyPQplZj0zRGdhbGF4eV9jb25maWcucm9vdCsiYXBpL3Rvb2xzLyIrdS5pZCsiL2Rvd25s
b2FkIn19KX10aGlzLnNlY3Rpb249M0RuZXc9CiBqLlZpZXcodCx7aW5wdXRzOnUuaW5wdXRzLGNs
czoidWktdGFibGUtcGxhaW4ifSk7aWYodGhpcy5pbmNvbXBhdGlibGUpe3RoaT0Kcy4kZWwuaGlk
ZSgpOyQoIiN0b29sLWZvcm0tY2xhc3NpYyIpLnNob3coKTtyZXR1cm59dGhpcy5wb3J0bGV0PTNE
bmV3IGYuVmllPQp3KHtpY29uOiJmYS13cmVuY2giLHRpdGxlOiI8Yj4iK3UubmFtZSsiPC9iPiAi
K3UuZGVzY3JpcHRpb24rIiAoR2FsYXh5IFRvb2w9CiBWZXJzaW9uICIrdS52ZXJzaW9uKyIpIixj
bHM6InVpLXBvcnRsZXQtc2xpbSIsb3BlcmF0aW9uczp7cmVxdWlyZW1lbnRzOnEsbT0KZW51OnAs
dmVyc2lvbnM6bX0sYnV0dG9uczp0aGlzLmJ1dHRvbnN9KTtpZih0aGlzLm9wdGlvbnMud29ya2Zs
b3cpe3RoaXMucG9yPQp0bGV0LiRjb250ZW50LmNzcygicGFkZGluZyIsIjBweCIpfXRoaXMucG9y
dGxldC5hcHBlbmQodGhpcy5tZXNzYWdlLiRlbCx0cnU9CmUpO3RoaXMucG9ydGxldC5hcHBlbmQo
dGhpcy5zZWN0aW9uLiRlbCk7dGhpcy4kZWwuZW1wdHkoKTt0aGlzLiRlbC5hcHBlbmQodD0KaGlz
LnBvcnRsZXQuJGVsKTtpZih1LmhlbHAhPTNEIiIpe3RoaXMuJGVsLmFwcGVuZChjLmhlbHAodS5o
ZWxwKSl9aWYodS5jaXRhPQp0aW9ucyl7dmFyIHM9M0QkKCI8ZGl2Lz4iKTt2YXIgbD0zRG5ldyBp
LlRvb2xDaXRhdGlvbkNvbGxlY3Rpb24oKTtsLnRvb2xfaWQ9Cj0zRHUuaWQ7dmFyIG49M0RuZXcg
YS5DaXRhdGlvbkxpc3RWaWV3KHtlbDpzLGNvbGxlY3Rpb246bH0pO24ucmVuZGVyKCk7bC5mZT0K
dGNoKCk7dGhpcy4kZWwuYXBwZW5kKHMpfWlmKHUubWVzc2FnZSl7dGhpcy5tZXNzYWdlLnVwZGF0
ZSh7cGVyc2lzdGVudDp0cnVlPQosc3RhdHVzOiJ3YXJuaW5nIixtZXNzYWdlOnUubWVzc2FnZX0p
fX19KX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCmRpZmYgLXIgMTU5NjJiM2Q5YWFj
MDYxZTk1NDFmODE3NWM4ZDJlMmJjNGJhNWNhYiAtciAyZTk5MGNhZWZjOTQzZWIyYjFkNGE5ND0K
YWY1MDhjMjJiYjM0YjdmYTYgc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy90b29scy90b29scy1m
b3JtLXdvcmtmbG93LmpzCi0tLSBhL3N0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvdG9vbHMvdG9v
bHMtZm9ybS13b3JrZmxvdy5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3Rvb2xz
L3Rvb2xzLWZvcm0td29ya2Zsb3cuanMKQEAgLTEsMSArMSwxIEBACi1kZWZpbmUoWyJ1dGlscy91
dGlscyIsIm12Yy90b29scy90b29scy1mb3JtLWJhc2UiXSxmdW5jdGlvbihiLGEpe3ZhciBjPTNE
YT0KLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbihkKXt0aGlzLndvcmtmbG93PTNEdHJ1ZTth
LnByb3RvdHlwZS5pbml0aWFsaXplPQouY2FsbCh0aGlzLGQpfSxfYnVpbGRNb2RlbDpmdW5jdGlv
bigpe30sX3VwZGF0ZU1vZGVsOmZ1bmN0aW9uKCl7dmFyIGQ9M0R0aGk9CnM7dmFyIGU9M0R0aGlz
LnRyZWUuZmluYWxpemUoKTtjb25zb2xlLmRlYnVnKCJ0b29scy1mb3JtLXdvcmtmbG93OjpfcmVm
cmVzaD0KRm9ybSgpIC0gUmVmcmVzaGluZyBzdGF0ZXMuIik7Y29uc29sZS5kZWJ1ZyhlKTt2YXIg
Zz0zRHRoaXMuZGVmZXJyZWQucmVnaXN0PQplcigpO3ZhciBmPTNEZ2FsYXh5X2NvbmZpZy5yb290
KyJ3b3JrZmxvdy9lZGl0b3JfZm9ybV9wb3N0P3Rvb2xfaWQ9M0QiK3RoaXM9Ci5vcHRpb25zLmlk
O2IucmVxdWVzdCh7dHlwZToiR0VUIix1cmw6ZixkYXRhOmUsc3VjY2VzczpmdW5jdGlvbihoKXtw
YXJlbnQudT0KcGRhdGVfbm9kZShoKTtkLmRlZmVycmVkLmRvbmUoZyk7Y29uc29sZS5kZWJ1Zygi
dG9vbHMtZm9ybTo6X3JlZnJlc2hGb3JtKCkgPQotIFN0YXRlcyByZWZyZXNoZWQuIik7Y29uc29s
ZS5kZWJ1ZyhoKX0sZXJyb3I6ZnVuY3Rpb24oaCl7ZC5kZWZlcnJlZC5kb25lKGc9Cik7Y29uc29s
ZS5kZWJ1ZygidG9vbHMtZm9ybTo6X3JlZnJlc2hGb3JtKCkgLSBSZWZyZXNoIHJlcXVlc3QgZmFp
bGVkLiIpO2Nvbj0Kc29sZS5kZWJ1ZyhoKX19KX19KTtyZXR1cm57VmlldzpjfX0pOwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RlZmluZShbInV0aWxzL3V0aWxzIiwibXZjL3Rvb2xzL3Rv
b2xzLWZvcm0tYmFzZSJdLGZ1bmN0aW9uKGIsYSl7dmFyIGM9M0RhPQouZXh0ZW5kKHtpbml0aWFs
aXplOmZ1bmN0aW9uKGUpe3RoaXMubm9kZT0zRHdvcmtmbG93LmFjdGl2ZV9ub2RlO2lmKCF0aGlz
Lm49Cm9kZSl7Y29uc29sZS5kZWJ1ZygiRkFJTEVEIC0gdG9vbHMtZm9ybS13b3JrZmxvdzppbml0
aWFsaXplKCkgLSBOb2RlIG5vdCBmbz0KdW5kIGluIHdvcmtmbG93LiIpO3JldHVybn10aGlzLndv
cmtmbG93PTNEdHJ1ZTt0aGlzLm9wdGlvbnM9M0RlO3ZhciBkPTNEdGhpPQpzO2IuZ2V0KHt1cmw6
Z2FsYXh5X2NvbmZpZy5yb290KyJhcGkvZGF0YXR5cGVzIixjYWNoZTp0cnVlLHN1Y2Nlc3M6ZnVu
Y3Rpb249CihmKXtkLmRhdGF0eXBlcz0zRGY7ZC5fbWFrZVNlY3Rpb25zKGUuaW5wdXRzKTthLnBy
b3RvdHlwZS5pbml0aWFsaXplLmNhbGwoZD0KLGUpfX0pfSxfbWFrZVNlY3Rpb25zOmZ1bmN0aW9u
KGQpe2RbYi51dWlkKCldPTNEe2xhYmVsOiJFZGl0IFN0ZXAgQXR0cmlidXRlPQpzIix0eXBlOiJz
ZWN0aW9uIixpbnB1dHM6W3tsYWJlbDoiQW5ub3RhdGlvbiAvIE5vdGVzIixuYW1lOiJhbm5vdGF0
aW9uIix0eXA9CmU6InRleHQiLGFyZWE6dHJ1ZSxoZWxwOiJBZGQgYW4gYW5ub3RhdGlvbiBvciBu
b3RlcyB0byB0aGlzIHN0ZXA7IGFubm90YXRpbz0KbnMgYXJlIGF2YWlsYWJsZSB3aGVuIGEgd29y
a2Zsb3cgaXMgdmlld2VkLiIsdmFsdWU6dGhpcy5ub2RlLmFubm90YXRpb259XX07PQp0aGlzLnBv
c3Rfam9iX2FjdGlvbnM9M0R0aGlzLm5vZGUucG9zdF9qb2JfYWN0aW9ucztmb3IodmFyIGUgaW4g
dGhpcy5ub2RlLm89CnV0cHV0X3Rlcm1pbmFscyl7ZFtiLnV1aWQoKV09M0R0aGlzLl9tYWtlU2Vj
dGlvbihlKX19LF9tYWtlU2VjdGlvbjpmdW5jdGlvbj0KKGgpe3ZhciBnPTNEW107Zm9yKGtleSBp
biB0aGlzLmRhdGF0eXBlcyl7Zy5wdXNoKHswOnRoaXMuZGF0YXR5cGVzW2tleV0sMTp0PQpoaXMu
ZGF0YXR5cGVzW2tleV19KX1nLnNvcnQoZnVuY3Rpb24oaixpKXtyZXR1cm4gai5sYWJlbD5pLmxh
YmVsPzE6ai5sYWJlbDw9CmkubGFiZWw/LTE6MH0pO2cudW5zaGlmdCh7MDoiU2VxdWVuY2VzIiwx
OiJTZXF1ZW5jZXMifSk7Zy51bnNoaWZ0KHswOiJSb2FkbT0KYXBzIiwxOiJSb2FkbWFwcyJ9KTtn
LnVuc2hpZnQoezA6IkxlYXZlIHVuY2hhbmdlZCIsMToiTm9uZSJ9KTt2YXIgZj0zRHtsYWJlPQps
OiJFZGl0IFN0ZXAgQWN0aW9uOiAnIitoKyInIix0eXBlOiJzZWN0aW9uIixpbnB1dHM6W3thY3Rp
b246IlJlbmFtZURhdGFzZXQ9CkFjdGlvbiIsYXJndW1lbnQ6Im5ld25hbWUiLGxhYmVsOiJSZW5h
bWUgZGF0YXNldCIsdHlwZToidGV4dCIsdmFsdWU6IiIsaWdubz0KcmU6IiIsaGVscDonVGhpcyBh
Y3Rpb24gd2lsbCByZW5hbWUgdGhlIHJlc3VsdCBkYXRhc2V0LiBDbGljayA8YSBocmVmPTNEImh0
PQp0cHM6Ly93aWtpLmdhbGF4eXByb2plY3Qub3JnL0xlYXJuL0FkdmFuY2VkV29ya2Zsb3cvVmFy
aWFibGVzIj5oZXJlPC9hPiBmb3I9CiBtb3JlIGluZm9ybWF0aW9uLid9LHthY3Rpb246IkNoYW5n
ZURhdGF0eXBlQWN0aW9uIixhcmd1bWVudDoibmV3dHlwZSIsbGFiZT0KbDoiQ2hhbmdlIGRhdGF0
eXBlIix0eXBlOiJzZWxlY3QiLGlnbm9yZToiTm9uZSIsb3B0aW9uczpnLGhlbHA6IlRoaXMgYWN0
aW9uPQogd2lsbCBjaGFuZ2UgdGhlIGRhdGF0eXBlIG9mIHRoZSBvdXRwdXQgdG8gdGhlIGluZGlj
YXRlZCB2YWx1ZS4ifSx7YWN0aW9uOiI9ClRhZ0RhdGFzZXRBY3Rpb24iLGFyZ3VtZW50OiJ0YWdz
IixsYWJlbDoiVGFncyIsdHlwZToidGV4dCIsdmFsdWU6IiIsaWdub3JlOj0KIiIsaGVscDoiVGhp
cyBhY3Rpb24gd2lsbCBzZXQgdGFncyBmb3IgdGhlIGRhdGFzZXQuIn0se2xhYmVsOiJBc3NpZ24g
Y29sdW1uPQpzIix0eXBlOiJzZWN0aW9uIixpbnB1dHM6W3thY3Rpb246IkNvbHVtblNldEFjdGlv
biIsYXJndW1lbnQ6ImNocm9tQ29sIixsYWI9CmVsOiJDaHJvbSBjb2x1bW4iLHR5cGU6InRleHQi
LHZhbHVlOiIiLGlnbm9yZToiIn0se2FjdGlvbjoiQ29sdW1uU2V0QWN0aW9uIj0KLGFyZ3VtZW50
OiJzdGFydENvbCIsbGFiZWw6IlN0YXJ0IGNvbHVtbiIsdHlwZToidGV4dCIsdmFsdWU6IiIsaWdu
b3JlOiIifSx7PQphY3Rpb246IkNvbHVtblNldEFjdGlvbiIsYXJndW1lbnQ6ImVuZENvbCIsbGFi
ZWw6IkVuZCBjb2x1bW4iLHR5cGU6InRleHQiLHY9CmFsdWU6IiIsaWdub3JlOiIifSx7YWN0aW9u
OiJDb2x1bW5TZXRBY3Rpb24iLGFyZ3VtZW50OiJzdHJhbmRDb2wiLGxhYmVsOiJTdD0KcmFuZCBj
b2x1bW4iLHR5cGU6InRleHQiLHZhbHVlOiIiLGlnbm9yZToiIn0se2FjdGlvbjoiQ29sdW1uU2V0
QWN0aW9uIixhcmd1PQptZW50OiJuYW1lQ29sIixsYWJlbDoiTmFtZSBjb2x1bW4iLHR5cGU6InRl
eHQiLHZhbHVlOiIiLGlnbm9yZToiIn1dLGhlbHA6IlQ9CmhpcyBhY3Rpb24gd2lsbCBzZXQgY29s
dW1uIGFzc2lnbm1lbnRzIGluIHRoZSBvdXRwdXQgZGF0YXNldC4gQmxhbmsgZmllbGRzID0KYXJl
IGlnbm9yZWQuIn0se2FjdGlvbjoiRW1haWxBY3Rpb24iLGxhYmVsOiJFbWFpbCBub3RpZmljYXRp
b24iLHR5cGU6ImJvb2xlPQphbiIsdmFsdWU6ImZhbHNlIixpZ25vcmU6ImZhbHNlIixoZWxwOiJU
aGlzIGFjdGlvbiB3aWxsIHNlbmQgYW4gZW1haWwgbm90aWY9CnlpbmcgeW91IHdoZW4gdGhlIGpv
YiBpcyBkb25lLiJ9LHthY3Rpb246IkRlbGV0ZUludGVybWVkaWF0ZXNBY3Rpb24iLGxhYmVsOj0K
IkRlbGV0ZSBub24tb3V0cHV0cyIsdHlwZToiYm9vbGVhbiIsdmFsdWU6ImZhbHNlIixpZ25vcmU6
ImZhbHNlIixoZWxwOiJBbGwgPQpub24tb3V0cHV0IHN0ZXBzIG9mIHRoaXMgd29ya2Zsb3cgd2ls
bCBoYXZlIGRhdGFzZXRzIGRlbGV0ZWQgaWYgdGhleSBhcmUgbm89CiBsb25nZXIgYmVpbmcgdXNl
ZCBhcyBqb2IgaW5wdXRzIHdoZW4gdGhlIGpvYiB0aGlzIGFjdGlvbiBpcyBhdHRhY2hlZCB0byBp
cz0KIGZpbmlzaGVkLiBZb3UgKm11c3QqIGJlIHVzaW5nIHdvcmtmbG93IG91dHB1dHMgKHRoZSBz
bm93Zmxha2UpIGluIHlvdXIgd29yPQprZmxvdyBmb3IgdGhpcyB0byBoYXZlIGFueSBlZmZlY3Qu
In1dfTt2YXIgZD0zRHRoaXM7ZnVuY3Rpb24gZShqKXtmb3IodmFyIGw9CiBpbiBqKXt2YXIgaz0z
RGpbbF07aWYoay5hY3Rpb24pe2submFtZT0zRCJwamFfXyIraCsiX18iK2suYWN0aW9uO2lmKGsu
YXJndT0KbWVudCl7ay5uYW1lKz0zRCJfXyIray5hcmd1bWVudH12YXIgbT0zRGQucG9zdF9qb2Jf
YWN0aW9uc1trLmFjdGlvbitoXTtpZihtPQope2lmKGsuYXJndW1lbnQpe2sudmFsdWU9M0RtLmFj
dGlvbl9hcmd1bWVudHMmJm0uYWN0aW9uX2FyZ3VtZW50c1trLmFyZ3VtZW49CnRdfHxrLnZhbHVl
fWVsc2V7ay52YWx1ZT0zRCJ0cnVlIn19fWVsc2V7aWYoay5pbnB1dHMpe2Uoay5pbnB1dHMpfX19
fWUoZi5pbj0KcHV0cyk7cmV0dXJuIGZ9LF9idWlsZE1vZGVsOmZ1bmN0aW9uKCl7fSxfdXBkYXRl
TW9kZWw6ZnVuY3Rpb24oKXt2YXIgZD0zRHRoPQppczt2YXIgZT0zRHRoaXMudHJlZS5maW5hbGl6
ZSgpO2NvbnNvbGUuZGVidWcoInRvb2xzLWZvcm0td29ya2Zsb3c6Ol9yZWZyZXM9CmhGb3JtKCkg
LSBSZWZyZXNoaW5nIHN0YXRlcy4iKTtjb25zb2xlLmRlYnVnKGUpO3ZhciBnPTNEdGhpcy5kZWZl
cnJlZC5yZWdpcz0KdGVyKCk7dmFyIGY9M0RnYWxheHlfY29uZmlnLnJvb3QrIndvcmtmbG93L2Vk
aXRvcl9mb3JtX3Bvc3Q/dG9vbF9pZD0zRCIrdGhpPQpzLm9wdGlvbnMuaWQ7Yi5yZXF1ZXN0KHt0
eXBlOiJHRVQiLHVybDpmLGRhdGE6ZSxzdWNjZXNzOmZ1bmN0aW9uKGgpe2Qubm9kZS49CnVwZGF0
ZV9maWVsZF9kYXRhKGgsdHJ1ZSk7ZC5kZWZlcnJlZC5kb25lKGcpO2NvbnNvbGUuZGVidWcoInRv
b2xzLWZvcm06Ol9yZT0KZnJlc2hGb3JtKCkgLSBTdGF0ZXMgcmVmcmVzaGVkLiIpO2NvbnNvbGUu
ZGVidWcoaCl9LGVycm9yOmZ1bmN0aW9uKGgpe2QuZGVmPQplcnJlZC5kb25lKGcpO2NvbnNvbGUu
ZGVidWcoInRvb2xzLWZvcm06Ol9yZWZyZXNoRm9ybSgpIC0gUmVmcmVzaCByZXF1ZXN0IGY9CmFp
bGVkLiIpO2NvbnNvbGUuZGVidWcoaCl9fSl9fSk7cmV0dXJue1ZpZXc6Y319KTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCgpkaWZmIC1yIDE1OTYyYjNkOWFhYzA2MWU5NTQxZjgxNzVjOGQy
ZTJiYzRiYTVjYWIgLXIgMmU5OTBjYWVmYzk0M2ViMmIxZDRhOTQ9CmFmNTA4YzIyYmIzNGI3ZmE2
IHN0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvdG9vbHMvdG9vbHMtc2VjdGlvbi5qcwotLS0gYS9z
dGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3Rvb2xzL3Rvb2xzLXNlY3Rpb24uanMKKysrIGIvc3Rh
dGljL3NjcmlwdHMvcGFja2VkL212Yy90b29scy90b29scy1zZWN0aW9uLmpzCkBAIC0xLDEgKzEs
MSBAQAotZGVmaW5lKFsidXRpbHMvdXRpbHMiLCJtdmMvdWkvdWktdGFibGUiLCJtdmMvdWkvdWkt
bWlzYyIsIm12Yy90b29scy90b29scy09CnJlcGVhdCIsIm12Yy90b29scy90b29scy1zZWxlY3Qt
Y29udGVudCIsIm12Yy90b29scy90b29scy1pbnB1dCJdLGZ1bmN0aW9uKD0KZCxiLGcsYyxhLGUp
e3ZhciBmPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oaSxoKXt0
aGlzLmFwPQpwPTNEaTt0aGlzLmlucHV0cz0zRGguaW5wdXRzO2guY2xzX3RyPTNEInNlY3Rpb24t
cm93Ijt0aGlzLnRhYmxlPTNEbmV3IGIuVmk9CmV3KGgpO3RoaXMuc2V0RWxlbWVudCh0aGlzLnRh
YmxlLiRlbCk7dGhpcy5yZW5kZXIoKX0scmVuZGVyOmZ1bmN0aW9uKCl7dGhpcz0KLnRhYmxlLmRl
bEFsbCgpO2Zvcih2YXIgaCBpbiB0aGlzLmlucHV0cyl7dGhpcy5fYWRkKHRoaXMuaW5wdXRzW2hd
KX19LF9hZGQ6PQpmdW5jdGlvbihqKXt2YXIgaT0zRHRoaXM7dmFyIGg9M0RqUXVlcnkuZXh0ZW5k
KHRydWUse30saik7aC5pZD0zRGouaWQ9M0RkLnU9CnVpZCgpO3RoaXMuYXBwLmlucHV0X2xpc3Rb
aC5pZF09M0RoO3ZhciBrPTNEaC50eXBlO3N3aXRjaChrKXtjYXNlImNvbmRpdGlvbj0KYWwiOnRo
aXMuX2FkZENvbmRpdGlvbmFsKGgpO2JyZWFrO2Nhc2UicmVwZWF0Ijp0aGlzLl9hZGRSZXBlYXQo
aCk7YnJlYWs7ZGVmPQphdWx0OnRoaXMuX2FkZFJvdyhoKX19LF9hZGRDb25kaXRpb25hbDpmdW5j
dGlvbihoKXt2YXIgaj0zRHRoaXM7aC50ZXN0X3BhcmE9Cm0uaWQ9M0RoLmlkO3ZhciBtPTNEdGhp
cy5fYWRkUm93KGgudGVzdF9wYXJhbSk7bS5vcHRpb25zLm9uY2hhbmdlPTNEZnVuY3Rpbz0Kbih0
KXt2YXIgcD0zRGouYXBwLnRyZWUubWF0Y2hDYXNlKGgsdCk7Zm9yKHZhciByIGluIGguY2FzZXMp
e3ZhciB3PTNEaC5jYXNlPQpzW3JdO3ZhciB1PTNEaC5pZCsiLXNlY3Rpb24tIityO3ZhciBvPTNE
ai50YWJsZS5nZXQodSk7dmFyIHY9M0RmYWxzZTtmb3IodmE9CnIgcSBpbiB3LmlucHV0cyl7dmFy
IHM9M0R3LmlucHV0c1txXS50eXBlO2lmKHMmJnMhPTNEPTNEImhpZGRlbiIpe3Y9M0R0cnVlOz0K
YnJlYWt9fWlmKHI9M0Q9M0RwJiZ2KXtvLmZhZGVJbigiZmFzdCIpfWVsc2V7by5oaWRlKCl9fWou
YXBwLnRyaWdnZXIoInJlZnJlPQpzaCIpfTtmb3IodmFyIGwgaW4gaC5jYXNlcyl7dmFyIGs9M0Ro
LmlkKyItc2VjdGlvbi0iK2w7dmFyIG49M0RuZXcgZih0aGlzLmE9CnBwLHtpbnB1dHM6aC5jYXNl
c1tsXS5pbnB1dHMsY2xzOiJ1aS10YWJsZS1wbGFpbiJ9KTtuLiRlbC5hZGRDbGFzcygidWktdGFi
bD0KZS1mb3JtLXNlY3Rpb24iKTt0aGlzLnRhYmxlLmFkZChuLiRlbCk7dGhpcy50YWJsZS5hcHBl
bmQoayl9bS50cmlnZ2VyKCJjaGFuPQpnZSIpfSxfYWRkUmVwZWF0OmZ1bmN0aW9uKG8pe3ZhciBy
PTNEdGhpczt2YXIgcD0zRDA7ZnVuY3Rpb24gbShpLHQpe3ZhciBzPQo9M0RvLmlkKyItc2VjdGlv
bi0iKyhwKyspO3ZhciB1PTNEbnVsbDtpZih0KXt1PTNEZnVuY3Rpb24oKXtrLmRlbChzKTtrLnJl
dGk9CnRsZShvLnRpdGxlKTtyLmFwcC50cmlnZ2VyKCJyZWZyZXNoIil9fXZhciB2PTNEbmV3IGYo
ci5hcHAse2lucHV0czppLGNsczoidT0KaS10YWJsZS1wbGFpbiJ9KTtrLmFkZCh7aWQ6cyx0aXRs
ZTpvLnRpdGxlLCRlbDp2LiRlbCxvbmRlbDp1fSk7ay5yZXRpdGxlKG8uPQp0aXRsZSl9dmFyIGs9
M0RuZXcgYy5WaWV3KHt0aXRsZV9uZXc6by50aXRsZSxtYXg6by5tYXgsb25uZXc6ZnVuY3Rpb24o
KXttKG89Ci5pbnB1dHMsdHJ1ZSk7ci5hcHAudHJpZ2dlcigicmVmcmVzaCIpfX0pO3ZhciBoPTNE
by5taW47dmFyIHE9M0RfLnNpemUoby5jYT0KY2hlKTtmb3IodmFyIGw9M0QwO2w8TWF0aC5tYXgo
cSxoKTtsKyspe3ZhciBuPTNEbnVsbDtpZihsPHEpe249M0RvLmNhY2hlW2xdPQp9ZWxzZXtuPTNE
by5pbnB1dHN9bShuLGw+PTNEaCl9dmFyIGo9M0RuZXcgZSh0aGlzLmFwcCx7bGFiZWw6by50aXRs
ZSxoZWxwOm89Ci5oZWxwLGZpZWxkOmt9KTtqLiRlbC5hZGRDbGFzcygidWktdGFibGUtZm9ybS1z
ZWN0aW9uIik7dGhpcy50YWJsZS5hZGQoai4kZT0KbCk7dGhpcy50YWJsZS5hcHBlbmQoby5pZCl9
LF9hZGRSb3c6ZnVuY3Rpb24oaCl7dmFyIGs9M0RoLmlkO3ZhciBpPTNEdGhpcy5fPQpjcmVhdGVG
aWVsZChoKTt0aGlzLmFwcC5maWVsZF9saXN0W2tdPTNEaTt2YXIgaj0zRG5ldyBlKHRoaXMuYXBw
LHtsYWJlbDpoLmw9CmFiZWwsb3B0aW9uYWw6aC5vcHRpb25hbCxoZWxwOmguaGVscCxmaWVsZDpp
fSk7dGhpcy5hcHAuZWxlbWVudF9saXN0W2tdPTNEaj0KO3RoaXMudGFibGUuYWRkKGouJGVsKTt0
aGlzLnRhYmxlLmFwcGVuZChrKTtyZXR1cm4gaX0sX2NyZWF0ZUZpZWxkOmZ1bmN0aW9uPQooaCl7
dmFyIGk9M0RudWxsO3N3aXRjaChoLnR5cGUpe2Nhc2UidGV4dCI6aT0zRHRoaXMuX2ZpZWxkVGV4
dChoKTticmVhaztjYXM9CmUic2VsZWN0IjppPTNEdGhpcy5fZmllbGRTZWxlY3QoaCk7YnJlYWs7
Y2FzZSJkYXRhIjppPTNEdGhpcy5fZmllbGREYXRhKGgpOz0KYnJlYWs7Y2FzZSJkYXRhX2NvbGxl
Y3Rpb24iOmk9M0R0aGlzLl9maWVsZERhdGEoaCk7YnJlYWs7Y2FzZSJkYXRhX2NvbHVtbiI6PQpo
LmVycm9yX3RleHQ9M0QiTWlzc2luZyBjb2x1bW5zIGluIHJlZmVyZW5jZWQgZGF0YXNldC4iO2k9
M0R0aGlzLl9maWVsZFNlbGU9CmN0KGgpO2JyZWFrO2Nhc2UiaGlkZGVuIjppPTNEdGhpcy5fZmll
bGRIaWRkZW4oaCk7YnJlYWs7Y2FzZSJoaWRkZW5fZGF0YSI6aT0KPTNEdGhpcy5fZmllbGRIaWRk
ZW4oaCk7YnJlYWs7Y2FzZSJpbnRlZ2VyIjppPTNEdGhpcy5fZmllbGRTbGlkZXIoaCk7YnJlYWs7
PQpjYXNlImZsb2F0IjppPTNEdGhpcy5fZmllbGRTbGlkZXIoaCk7YnJlYWs7Y2FzZSJib29sZWFu
IjppPTNEdGhpcy5fZmllbGRCb289CmxlYW4oaCk7YnJlYWs7Y2FzZSJnZW5vbWVidWlsZCI6aC5z
ZWFyY2hhYmxlPTNEdHJ1ZTtpPTNEdGhpcy5fZmllbGRTZWxlY3QoaD0KKTticmVhaztjYXNlImRy
aWxsX2Rvd24iOmk9M0R0aGlzLl9maWVsZERyaWxsZG93bihoKTticmVhaztjYXNlImJhc2V1cmwi
Omk9Cj0zRHRoaXMuX2ZpZWxkSGlkZGVuKGgpO2JyZWFrO2RlZmF1bHQ6dGhpcy5hcHAuaW5jb21w
YXRpYmxlPTNEdHJ1ZTtpZihoLm9wdD0KaW9ucyl7aT0zRHRoaXMuX2ZpZWxkU2VsZWN0KGgpfWVs
c2V7aT0zRHRoaXMuX2ZpZWxkVGV4dChoKX1jb25zb2xlLmRlYnVnKCJ0PQpvb2xzLWZvcm06Ol9h
ZGRSb3coKSA6IEF1dG8gbWF0Y2hlZCBmaWVsZCB0eXBlICgiK2gudHlwZSsiKS4iKX1pZihoLnZh
bHVlIT0KPTNEPTNEdW5kZWZpbmVkKXtpLnZhbHVlKGgudmFsdWUpfXJldHVybiBpfSxfZmllbGRE
YXRhOmZ1bmN0aW9uKGgpe2lmKHRoaXMuPQphcHAud29ya2Zsb3cpe3ZhciBqPTNEZC50ZXh0aWZ5
KGguZXh0ZW5zaW9ucy50b1N0cmluZygpKTtoLmluZm89M0QiRGF0YSBpbnA9CnV0ICciK2gubmFt
ZSsiJyAoIitqKyIpIjtyZXR1cm4gdGhpcy5fZmllbGRIaWRkZW4oaCl9dmFyIGk9M0R0aGlzO3Jl
dHVybiBuZT0KdyBhLlZpZXcodGhpcy5hcHAse2lkOiJmaWVsZC0iK2guaWQsZXh0ZW5zaW9uczpo
LmV4dGVuc2lvbnMsbXVsdGlwbGU6aC5tdWx0PQppcGxlLHR5cGU6aC50eXBlLGRhdGE6aC5vcHRp
b25zLG9uY2hhbmdlOmZ1bmN0aW9uKCl7aS5hcHAudHJpZ2dlcigicmVmcmVzaCI9Cil9fSl9LF9m
aWVsZFNlbGVjdDpmdW5jdGlvbihoKXtpZih0aGlzLmFwcC53b3JrZmxvdyYmaC5pc19keW5hbWlj
KXtpZighZC52YT0KbGlkYXRlKGgudmFsdWUpKXtoLnZhbHVlPTNEIiJ9cmV0dXJuIHRoaXMuX2Zp
ZWxkVGV4dChoKX12YXIgaz0zRFtdO2Zvcih2YXIgPQpsIGluIGgub3B0aW9ucyl7dmFyIG09M0Ro
Lm9wdGlvbnNbbF07ay5wdXNoKHtsYWJlbDptWzBdLHZhbHVlOm1bMV19KX12YXIgbj0KPTNEZy5T
ZWxlY3Q7c3dpdGNoKGguZGlzcGxheSl7Y2FzZSJjaGVja2JveGVzIjpuPTNEZy5DaGVja2JveDti
cmVhaztjYXNlInJhPQpkaW8iOm49M0RnLlJhZGlvO2JyZWFrfXZhciBqPTNEdGhpcztyZXR1cm4g
bmV3IG4uVmlldyh7aWQ6ImZpZWxkLSIraC5pZCxkYXQ9CmE6ayxlcnJvcl90ZXh0OmguZXJyb3Jf
dGV4dHx8Ik5vIG9wdGlvbnMgYXZhaWxhYmxlIixtdWx0aXBsZTpoLm11bHRpcGxlLHNlYT0KcmNo
YWJsZTpoLnNlYXJjaGFibGUsb25jaGFuZ2U6ZnVuY3Rpb24oKXtqLmFwcC50cmlnZ2VyKCJyZWZy
ZXNoIil9fSl9LF9maWVsPQpkRHJpbGxkb3duOmZ1bmN0aW9uKGgpe3ZhciBpPTNEdGhpcztyZXR1
cm4gbmV3IGcuRHJpbGxkb3duLlZpZXcoe2lkOiJmaWVsZC09CiIraC5pZCxkYXRhOmgub3B0aW9u
cyxkaXNwbGF5OmguZGlzcGxheSxvbmNoYW5nZTpmdW5jdGlvbigpe2kuYXBwLnRyaWdnZXIoIj0K
cmVmcmVzaCIpfX0pfSxfZmllbGRUZXh0OmZ1bmN0aW9uKGgpe3ZhciBpPTNEdGhpcztyZXR1cm4g
bmV3IGcuSW5wdXQoe2lkOiJmPQppZWxkLSIraC5pZCxhcmVhOmguYXJlYSxvbmNoYW5nZTpmdW5j
dGlvbigpe2kuYXBwLnRyaWdnZXIoInJlZnJlc2giKX19KX0sX2Y9CmllbGRTbGlkZXI6ZnVuY3Rp
b24oaCl7cmV0dXJuIG5ldyBnLlNsaWRlci5WaWV3KHtpZDoiZmllbGQtIitoLmlkLHByZWNpc2U6
aD0KLnR5cGU9M0Q9M0QiZmxvYXQiLG1pbjpoLm1pbixtYXg6aC5tYXh9KX0sX2ZpZWxkSGlkZGVu
OmZ1bmN0aW9uKGgpe3JldHVybiBuPQpldyBnLkhpZGRlbih7aWQ6ImZpZWxkLSIraC5pZCxpbmZv
OmguaW5mb30pfSxfZmllbGRCb29sZWFuOmZ1bmN0aW9uKGgpe3JldHU9CnJuIG5ldyBnLlJhZGlv
QnV0dG9uLlZpZXcoe2lkOiJmaWVsZC0iK2guaWQsZGF0YTpbe2xhYmVsOiJZZXMiLHZhbHVlOiJ0
cnVlIj0KfSx7bGFiZWw6Ik5vIix2YWx1ZToiZmFsc2UifV19KX19KTtyZXR1cm57VmlldzpmfX0p
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RlZmluZShbInV0aWxzL3V0aWxzIiwibXZj
L3VpL3VpLXRhYmxlIiwibXZjL3VpL3VpLW1pc2MiLCJtdmMvdWkvdWktcG9ydGxlPQp0IiwibXZj
L3Rvb2xzL3Rvb2xzLXJlcGVhdCIsIm12Yy90b29scy90b29scy1zZWxlY3QtY29udGVudCIsIm12
Yy90b29scy90b289CmxzLWlucHV0Il0sZnVuY3Rpb24oZSxiLGgsZCxjLGEsZil7dmFyIGc9M0RC
YWNrYm9uZS5WaWV3LmV4dGVuZCh7aW5pdGlhbGl6ZT0KOmZ1bmN0aW9uKGosaSl7dGhpcy5hcHA9
M0RqO3RoaXMuaW5wdXRzPTNEaS5pbnB1dHM7aS5jbHNfdHI9M0Qic2VjdGlvbi1yb3ciPQo7dGhp
cy50YWJsZT0zRG5ldyBiLlZpZXcoaSk7dGhpcy5zZXRFbGVtZW50KHRoaXMudGFibGUuJGVsKTt0
aGlzLnJlbmRlcigpfSw9CnJlbmRlcjpmdW5jdGlvbigpe3RoaXMudGFibGUuZGVsQWxsKCk7Zm9y
KHZhciBqIGluIHRoaXMuaW5wdXRzKXt0aGlzLmFkZCh0aD0KaXMuaW5wdXRzW2pdKX19LGFkZDpm
dW5jdGlvbihrKXt2YXIgaj0zRHRoaXM7dmFyIGk9M0RqUXVlcnkuZXh0ZW5kKHRydWUse30sPQpr
KTtpLmlkPTNEay5pZD0zRGUudXVpZCgpO3RoaXMuYXBwLmlucHV0X2xpc3RbaS5pZF09M0RpO3Zh
ciBsPTNEaS50eXBlO3N3aXQ9CmNoKGwpe2Nhc2UiY29uZGl0aW9uYWwiOnRoaXMuX2FkZENvbmRp
dGlvbmFsKGkpO2JyZWFrO2Nhc2UicmVwZWF0Ijp0aGlzLl9hZD0KZFJlcGVhdChpKTticmVhaztj
YXNlInNlY3Rpb24iOnRoaXMuX2FkZFNlY3Rpb24oaSk7YnJlYWs7ZGVmYXVsdDp0aGlzLl9hZGRS
PQpvdyhpKX19LF9hZGRDb25kaXRpb25hbDpmdW5jdGlvbihqKXt2YXIgaz0zRHRoaXM7ai50ZXN0
X3BhcmFtLmlkPTNEai5pZDt2YXI9CiBuPTNEdGhpcy5fYWRkUm93KGoudGVzdF9wYXJhbSk7bi5v
cHRpb25zLm9uY2hhbmdlPTNEZnVuY3Rpb24odyl7dmFyIHY9M0RrLj0KYXBwLnRyZWUubWF0Y2hD
YXNlKGosdyk7Zm9yKHZhciB1IGluIGouY2FzZXMpe3ZhciBxPTNEai5jYXNlc1t1XTt2YXIgdD0z
RGouPQppZCsiLXNlY3Rpb24tIit1O3ZhciBwPTNEay50YWJsZS5nZXQodCk7dmFyIHM9M0RmYWxz
ZTtmb3IodmFyIHIgaW4gcS5pbnB1dHM9Cil7aWYoIXEuaW5wdXRzW3JdLmhpZGRlbil7cz0zRHRy
dWU7YnJlYWt9fWlmKHU9M0Q9M0R2JiZzKXtwLmZhZGVJbigiZmFzdCIpfT0KZWxzZXtwLmhpZGUo
KX19ay5hcHAudHJpZ2dlcigicmVmcmVzaCIpfTtmb3IodmFyIG0gaW4gai5jYXNlcyl7dmFyIGw9
M0RqLmlkPQorIi1zZWN0aW9uLSIrbTt2YXIgbz0zRG5ldyBnKHRoaXMuYXBwLHtpbnB1dHM6ai5j
YXNlc1ttXS5pbnB1dHMsY2xzOiJ1aS10YWI9CmxlLXBsYWluIn0pO28uJGVsLmFkZENsYXNzKCJ1
aS10YWJsZS1mb3JtLXNlY3Rpb24iKTt0aGlzLnRhYmxlLmFkZChvLiRlbCk7dD0KaGlzLnRhYmxl
LmFwcGVuZChsKX1uLnRyaWdnZXIoImNoYW5nZSIpfSxfYWRkUmVwZWF0OmZ1bmN0aW9uKHApe3Zh
ciBzPTNEdGhpPQpzO3ZhciBxPTNEMDtmdW5jdGlvbiBuKGksdSl7dmFyIHQ9M0RwLmlkKyItc2Vj
dGlvbi0iKyhxKyspO3ZhciB2PTNEbnVsbDtpZig9CnUpe3Y9M0RmdW5jdGlvbigpe2wuZGVsKHQp
O2wucmV0aXRsZShwLnRpdGxlKTtzLmFwcC50cmlnZ2VyKCJyZWZyZXNoIil9fXZhcj0KIHc9M0Ru
ZXcgZyhzLmFwcCx7aW5wdXRzOmksY2xzOiJ1aS10YWJsZS1wbGFpbiJ9KTtsLmFkZCh7aWQ6dCx0
aXRsZTpwLnRpdGxlPQosJGVsOncuJGVsLG9uZGVsOnZ9KTtsLnJldGl0bGUocC50aXRsZSl9dmFy
IGw9M0RuZXcgYy5WaWV3KHt0aXRsZV9uZXc6cC50aXQ9CmxlLG1heDpwLm1heCxvbm5ldzpmdW5j
dGlvbigpe24ocC5pbnB1dHMsdHJ1ZSk7cy5hcHAudHJpZ2dlcigicmVmcmVzaCIpfX0pOz0KdmFy
IGo9M0RwLm1pbjt2YXIgcj0zRF8uc2l6ZShwLmNhY2hlKTtmb3IodmFyIG09M0QwO208TWF0aC5t
YXgocixqKTttKyspe3ZhPQpyIG89M0RudWxsO2lmKG08cil7bz0zRHAuY2FjaGVbbV19ZWxzZXtv
PTNEcC5pbnB1dHN9bihvLG0+PTNEail9dmFyIGs9M0RuZXc9CiBmKHRoaXMuYXBwLHtsYWJlbDpw
LnRpdGxlLGhlbHA6cC5oZWxwLGZpZWxkOmx9KTtrLiRlbC5hZGRDbGFzcygidWktdGFibGUtZj0K
b3JtLXNlY3Rpb24iKTt0aGlzLnRhYmxlLmFkZChrLiRlbCk7dGhpcy50YWJsZS5hcHBlbmQocC5p
ZCl9LF9hZGRTZWN0aW9uOmZ1PQpuY3Rpb24oaSl7dmFyIGo9M0R0aGlzO3ZhciBuPTNEbmV3IGco
ai5hcHAse2lucHV0czppLmlucHV0cyxjbHM6InVpLXRhYmxlLXA9CmxhaW4ifSk7dmFyIG09M0Ru
ZXcgaC5CdXR0b25JY29uKHtpY29uOiJmYS1leWUtc2xhc2giLHRvb2x0aXA6IlNob3cvaGlkZSBz
ZT0KY3Rpb24iLGNsczoidWktYnV0dG9uLWljb24tcGxhaW4ifSk7dmFyIGw9M0RuZXcgZC5WaWV3
KHt0aXRsZTppLmxhYmVsLGNsczoiPQp1aS1wb3J0bGV0LXNlY3Rpb24iLG9wZXJhdGlvbnM6e2J1
dHRvbl92aXNpYmxlOm19fSk7bC5hcHBlbmQobi4kZWwpO3ZhciBrPQo9M0RmYWxzZTtsLiRjb250
ZW50LmhpZGUoKTtsLiRoZWFkZXIuY3NzKCJjdXJzb3IiLCJwb2ludGVyIik7bC4kaGVhZGVyLm9u
KCI9CmNsaWNrIixmdW5jdGlvbigpe2lmKGspe2s9M0RmYWxzZTtsLiRjb250ZW50LmhpZGUoKTtt
LnNldEljb24oImZhLWV5ZS1zbGFzaD0KIil9ZWxzZXtrPTNEdHJ1ZTtsLiRjb250ZW50LmZhZGVJ
bigiZmFzdCIpO20uc2V0SWNvbigiZmEtZXllIil9fSk7dGhpcy50YWJsPQplLmFkZChsLiRlbCk7
dGhpcy50YWJsZS5hcHBlbmQoaS5pZCl9LF9hZGRSb3c6ZnVuY3Rpb24oaSl7dmFyIGw9M0RpLmlk
O3ZhciA9Cmo9M0R0aGlzLl9jcmVhdGVGaWVsZChpKTt0aGlzLmFwcC5maWVsZF9saXN0W2xdPTNE
ajt2YXIgaz0zRG5ldyBmKHRoaXMuYXBwLD0Ke2xhYmVsOmkubGFiZWwsb3B0aW9uYWw6aS5vcHRp
b25hbCxoZWxwOmkuaGVscCxmaWVsZDpqfSk7dGhpcy5hcHAuZWxlbWVudF9sPQppc3RbbF09M0Rr
O3RoaXMudGFibGUuYWRkKGsuJGVsKTt0aGlzLnRhYmxlLmFwcGVuZChsKTtpZihpLmhpZGRlbil7
dGhpcy50YWI9CmxlLmdldChsKS5oaWRlKCl9cmV0dXJuIGp9LF9jcmVhdGVGaWVsZDpmdW5jdGlv
bihpKXt2YXIgaj0zRG51bGw7c3dpdGNoKGkudD0KeXBlKXtjYXNlInRleHQiOmo9M0R0aGlzLl9m
aWVsZFRleHQoaSk7YnJlYWs7Y2FzZSJzZWxlY3QiOmo9M0R0aGlzLl9maWVsZFNlPQpsZWN0KGkp
O2JyZWFrO2Nhc2UiZGF0YSI6aj0zRHRoaXMuX2ZpZWxkRGF0YShpKTticmVhaztjYXNlImRhdGFf
Y29sbGVjdGlvbiI9CjpqPTNEdGhpcy5fZmllbGREYXRhKGkpO2JyZWFrO2Nhc2UiZGF0YV9jb2x1
bW4iOmkuZXJyb3JfdGV4dD0zRCJNaXNzaW5nIGNvbD0KdW1ucyBpbiByZWZlcmVuY2VkIGRhdGFz
ZXQuIjtqPTNEdGhpcy5fZmllbGRTZWxlY3QoaSk7YnJlYWs7Y2FzZSJoaWRkZW4iOmo9Cj0zRHRo
aXMuX2ZpZWxkSGlkZGVuKGkpO2JyZWFrO2Nhc2UiaGlkZGVuX2RhdGEiOmo9M0R0aGlzLl9maWVs
ZEhpZGRlbihpKTticj0KZWFrO2Nhc2UiaW50ZWdlciI6aj0zRHRoaXMuX2ZpZWxkU2xpZGVyKGkp
O2JyZWFrO2Nhc2UiZmxvYXQiOmo9M0R0aGlzLl9maWVsPQpkU2xpZGVyKGkpO2JyZWFrO2Nhc2Ui
Ym9vbGVhbiI6aj0zRHRoaXMuX2ZpZWxkQm9vbGVhbihpKTticmVhaztjYXNlImdlbm9tZWI9CnVp
bGQiOmkuc2VhcmNoYWJsZT0zRHRydWU7aj0zRHRoaXMuX2ZpZWxkU2VsZWN0KGkpO2JyZWFrO2Nh
c2UiZHJpbGxfZG93biI6aj0KPTNEdGhpcy5fZmllbGREcmlsbGRvd24oaSk7YnJlYWs7Y2FzZSJi
YXNldXJsIjpqPTNEdGhpcy5fZmllbGRIaWRkZW4oaSk7YnJlPQphaztkZWZhdWx0OnRoaXMuYXBw
LmluY29tcGF0aWJsZT0zRHRydWU7aWYoaS5vcHRpb25zKXtqPTNEdGhpcy5fZmllbGRTZWxlY3Q9
CihpKX1lbHNle2o9M0R0aGlzLl9maWVsZFRleHQoaSl9Y29uc29sZS5kZWJ1ZygidG9vbHMtZm9y
bTo6X2FkZFJvdygpIDogQXV0bz0KIG1hdGNoZWQgZmllbGQgdHlwZSAoIitpLnR5cGUrIikuIil9
aWYoaS52YWx1ZSE9M0Q9M0R1bmRlZmluZWQpe2oudmFsdWUoaS52PQphbHVlKX1yZXR1cm4gan0s
X2ZpZWxkRGF0YTpmdW5jdGlvbihpKXtpZih0aGlzLmFwcC53b3JrZmxvdyl7dmFyIGs9M0RlLnRl
eHQ9CmlmeShpLmV4dGVuc2lvbnMudG9TdHJpbmcoKSk7aS5pbmZvPTNEIkRhdGEgaW5wdXQgJyIr
aS5uYW1lKyInICgiK2srIikiO3JldD0KdXJuIHRoaXMuX2ZpZWxkSGlkZGVuKGkpfXZhciBqPTNE
dGhpcztyZXR1cm4gbmV3IGEuVmlldyh0aGlzLmFwcCx7aWQ6ImZpZWxkPQotIitpLmlkLGV4dGVu
c2lvbnM6aS5leHRlbnNpb25zLG11bHRpcGxlOmkubXVsdGlwbGUsdHlwZTppLnR5cGUsZGF0YTpp
Lm9wdGk9Cm9ucyxvbmNoYW5nZTpmdW5jdGlvbigpe2ouYXBwLnRyaWdnZXIoInJlZnJlc2giKX19
KX0sX2ZpZWxkU2VsZWN0OmZ1bmN0aW9uKD0Kail7aWYodGhpcy5hcHAud29ya2Zsb3cmJmouaXNf
ZHluYW1pYyl7aWYoIWUudmFsaWRhdGUoai52YWx1ZSkpe2oudmFsdWU9M0QiPQoifXJldHVybiB0
aGlzLl9maWVsZFRleHQoail9dmFyIGw9M0RbXTtmb3IodmFyIG0gaW4gai5vcHRpb25zKXt2YXIg
bj0zRGoub3A9CnRpb25zW21dO2wucHVzaCh7bGFiZWw6blswXSx2YWx1ZTpuWzFdfSl9dmFyIG89
M0RoLlNlbGVjdDtzd2l0Y2goai5kaXNwbGF5KT0Ke2Nhc2UiY2hlY2tib3hlcyI6bz0zRGguQ2hl
Y2tib3g7YnJlYWs7Y2FzZSJyYWRpbyI6bz0zRGguUmFkaW87YnJlYWt9dmFyIGs9Cj0zRHRoaXM7
cmV0dXJuIG5ldyBvLlZpZXcoe2lkOiJmaWVsZC0iK2ouaWQsZGF0YTpsLGVycm9yX3RleHQ6ai5l
cnJvcl90ZXh0fD0KfCJObyBvcHRpb25zIGF2YWlsYWJsZSIsbXVsdGlwbGU6ai5tdWx0aXBsZSxz
ZWFyY2hhYmxlOmouc2VhcmNoYWJsZSxvbmNoYW5nPQplOmZ1bmN0aW9uKCl7ay5hcHAudHJpZ2dl
cigicmVmcmVzaCIpfX0pfSxfZmllbGREcmlsbGRvd246ZnVuY3Rpb24oaSl7dmFyIGo9Cj0zRHRo
aXM7cmV0dXJuIG5ldyBoLkRyaWxsZG93bi5WaWV3KHtpZDoiZmllbGQtIitpLmlkLGRhdGE6aS5v
cHRpb25zLGRpc3BsYT0KeTppLmRpc3BsYXksb25jaGFuZ2U6ZnVuY3Rpb24oKXtqLmFwcC50cmln
Z2VyKCJyZWZyZXNoIil9fSl9LF9maWVsZFRleHQ6ZnVuPQpjdGlvbihpKXt2YXIgaj0zRHRoaXM7
cmV0dXJuIG5ldyBoLklucHV0KHtpZDoiZmllbGQtIitpLmlkLGFyZWE6aS5hcmVhLG9uY2g9CmFu
Z2U6ZnVuY3Rpb24oKXtqLmFwcC50cmlnZ2VyKCJyZWZyZXNoIil9fSl9LF9maWVsZFNsaWRlcjpm
dW5jdGlvbihpKXt2YXIgaj0KPTNEdGhpcztyZXR1cm4gbmV3IGguU2xpZGVyLlZpZXcoe2lkOiJm
aWVsZC0iK2kuaWQscHJlY2lzZTppLnR5cGU9M0Q9M0QiZmxvPQphdCIsbWluOmkubWluLG1heDpp
Lm1heCxvbmNoYW5nZTpmdW5jdGlvbigpe2ouYXBwLnRyaWdnZXIoInJlZnJlc2giKX19KX0sX2Y9
CmllbGRIaWRkZW46ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyBoLkhpZGRlbih7aWQ6ImZpZWxkLSIr
aS5pZCxpbmZvOmkuaW5mb30pfT0KLF9maWVsZEJvb2xlYW46ZnVuY3Rpb24oaSl7dmFyIGo9M0R0
aGlzO3JldHVybiBuZXcgaC5SYWRpb0J1dHRvbi5WaWV3KHtpZDoiPQpmaWVsZC0iK2kuaWQsZGF0
YTpbe2xhYmVsOiJZZXMiLHZhbHVlOiJ0cnVlIn0se2xhYmVsOiJObyIsdmFsdWU6ImZhbHNlIn1d
LG89Cm5jaGFuZ2U6ZnVuY3Rpb24oKXtqLmFwcC50cmlnZ2VyKCJyZWZyZXNoIil9fSl9fSk7cmV0
dXJue1ZpZXc6Z319KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpkaWZmIC1yIDE1OTYy
YjNkOWFhYzA2MWU5NTQxZjgxNzVjOGQyZTJiYzRiYTVjYWIgLXIgMmU5OTBjYWVmYzk0M2ViMmIx
ZDRhOTQ9CmFmNTA4YzIyYmIzNGI3ZmE2IHN0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvdG9vbHMv
dG9vbHMtdHJlZS5qcwotLS0gYS9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3Rvb2xzL3Rvb2xz
LXRyZWUuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy90b29scy90b29scy10cmVl
LmpzCkBAIC0xLDEgKzEsMSBAQAotZGVmaW5lKFsidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihhKXty
ZXR1cm4gQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHtpbml0aWFsaXo9CmU6ZnVuY3Rpb24oYil7dGhp
cy5hcHA9M0RifSxmaW5hbGl6ZTpmdW5jdGlvbihnKXt2YXIgYj0zRHRoaXM7dGhpcy5tYXBfZGlj
dD0KPTNEe307aWYoIXRoaXMuYXBwLnNlY3Rpb24pe3JldHVybnt9fWc9M0RnfHx7fTt2YXIgZj0z
RHt9O3ZhciBlPTNEe307dGhpcy5fPQppdGVyYXRlKHRoaXMuYXBwLnNlY3Rpb24uJGVsLGUpO2Z1
bmN0aW9uIGQoaixpLGgpe2Zbal09M0RoO2IubWFwX2RpY3Rbal09M0Q9Cml9ZnVuY3Rpb24gYyhv
LHIpe2Zvcih2YXIgbSBpbiByKXt2YXIgaz0zRHJbbV07aWYoay5pbnB1dCl7dmFyIHQ9M0RrLmlu
cHV0Oz0KdmFyIG49M0RvO2lmKG8hPTNEIiIpe24rPTNEInwifW4rPTNEdC5uYW1lO3N3aXRjaCh0
LnR5cGUpe2Nhc2UicmVwZWF0Ijp2YXIgPQpqPTNEInNlY3Rpb24tIjt2YXIgdz0zRFtdO3ZhciBx
PTNEbnVsbDtmb3IodmFyIHYgaW4gayl7dmFyIHA9M0R2LmluZGV4T2Yoaik9CjtpZihwIT0zRC0x
KXtwKz0zRGoubGVuZ3RoO3cucHVzaChwYXJzZUludCh2LnN1YnN0cihwKSkpO2lmKCFxKXtxPTNE
di5zdWJzdD0KcigwLHApfX19dy5zb3J0KGZ1bmN0aW9uKHgsaSl7cmV0dXJuIHgtaX0pO3ZhciBt
PTNEMDtmb3IodmFyIGwgaW4gdyl7YyhuKyJfPQoiK20rKyxrW3Erd1tsXV0pfWJyZWFrO2Nhc2Ui
Y29uZGl0aW9uYWwiOnZhciB1PTNEYi5hcHAuZmllbGRfbGlzdFt0LmlkXS52YWw9CnVlKCk7aWYo
Z1t0LnRlc3RfcGFyYW0udHlwZV0pe3U9M0RnW3QudGVzdF9wYXJhbS50eXBlXSh1KX1kKG4rInwi
K3QudGVzdF9wYT0KcmFtLm5hbWUsdC5pZCx1KTt2YXIgaD0zRGIubWF0Y2hDYXNlKHQsdSk7aWYo
aCE9M0QtMSl7YyhuLHJbdC5pZCsiLXNlY3Rpb24tPQoiK2hdKX1icmVhaztkZWZhdWx0OnZhciBz
PTNEYi5hcHAuZmllbGRfbGlzdFt0LmlkXTt2YXIgdT0zRHMudmFsdWUoKTtpZihnW3Q9Ci50eXBl
XSl7dT0zRGdbdC50eXBlXSh1KX1pZighcy5za2lwKXtpZihzLnZhbGlkYXRlJiYhcy52YWxpZGF0
ZSh1KSl7dT0zRG51bD0KbH1kKG4sdC5pZCx1KX19fX19YygiIixlKTtyZXR1cm4gZn0sbWF0Y2g6
ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubWFwX2RpY3QmPQomdGhpcy5tYXBfZGljdFtiXX0sbWF0
Y2hDYXNlOmZ1bmN0aW9uKGIsZCl7aWYoYi50ZXN0X3BhcmFtLnR5cGU9M0Q9M0QiYm9vbGU9CmFu
Iil7aWYoZD0zRD0zRCJ0cnVlIil7ZD0zRGIudGVzdF9wYXJhbS50cnVldmFsdWV8fCJ0cnVlIn1l
bHNle2Q9M0RiLnRlc3RfcD0KYXJhbS5mYWxzZXZhbHVlfHwiZmFsc2UifX1mb3IodmFyIGMgaW4g
Yi5jYXNlcyl7aWYoYi5jYXNlc1tjXS52YWx1ZT0zRD0zRGQpPQp7cmV0dXJuIGN9fXJldHVybiAt
MX0sbWF0Y2hNb2RlbDpmdW5jdGlvbihkLGYpe3ZhciBiPTNEe307dmFyIGM9M0R0aGlzO2Z1bmM9
CnRpb24gZShnLHApe2Zvcih2YXIgbSBpbiBwKXt2YXIgaz0zRHBbbV07dmFyIG49M0RrLm5hbWU7
aWYoZyE9M0QiIil7bj0zRGcrIj0KfCIrbn1zd2l0Y2goay50eXBlKXtjYXNlInJlcGVhdCI6Zm9y
KHZhciBsIGluIGsuY2FjaGUpe2UobisiXyIrbCxrLmNhY2hlW2xdPQopfWJyZWFrO2Nhc2UiY29u
ZGl0aW9uYWwiOnZhciBxPTNEay50ZXN0X3BhcmFtJiZrLnRlc3RfcGFyYW0udmFsdWU7dmFyIGg9
M0Q9CmMubWF0Y2hDYXNlKGsscSk7aWYoaCE9M0QtMSl7ZShuLGsuY2FzZXNbaF0uaW5wdXRzKX1i
cmVhaztkZWZhdWx0OnZhciBvPTNEYz0KLm1hcF9kaWN0W25dO2lmKG8pe2YobyxrKX19fX1lKCIi
LGQuaW5wdXRzKTtyZXR1cm4gYn0sbWF0Y2hSZXNwb25zZTpmdW5jdGlvPQpuKGQpe3ZhciBiPTNE
e307dmFyIGM9M0R0aGlzO2Z1bmN0aW9uIGUobCxqKXtpZih0eXBlb2Ygaj0zRD0zRD0zRCJzdHJp
bmciKXs9CnZhciBnPTNEYy5tYXBfZGljdFtsXTtpZihnKXtiW2ddPTNEan19ZWxzZXtmb3IodmFy
IGggaW4gail7dmFyIGY9M0RoO2lmKGwhPQo9M0Q9M0QiIil7dmFyIGs9M0QifCI7aWYoaiBpbnN0
YW5jZW9mIEFycmF5KXtrPTNEIl8ifWY9M0RsK2srZn1lKGYsaltoXSl9fX09CmUoIiIsZCk7cmV0
dXJuIGJ9LF9pdGVyYXRlOmZ1bmN0aW9uKGQsZSl7dmFyIGI9M0R0aGlzO3ZhciBjPTNEJChkKS5j
aGlsZHJlbj0KKCk7Yy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGg9M0R0aGlzO3ZhciBnPTNEJChoKS5h
dHRyKCJpZCIpO2lmKCQoaCkuaGFzQ2xhc3MoPQoic2VjdGlvbi1yb3ciKSl7ZVtnXT0zRHt9O3Zh
ciBmPTNEYi5hcHAuaW5wdXRfbGlzdFtnXTtpZihmKXtlW2ddPTNEe2lucHV0OmY9Cn19Yi5faXRl
cmF0ZShoLGVbZ10pfWVsc2V7Yi5faXRlcmF0ZShoLGUpfX0pfX0pfSk7ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQorZGVmaW5lKFsidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihhKXtyZXR1cm4g
QmFja2JvbmUuTW9kZWwuZXh0ZW5kKHtpbml0aWFsaXo9CmU6ZnVuY3Rpb24oYil7dGhpcy5hcHA9
M0RifSxmaW5hbGl6ZTpmdW5jdGlvbihnKXt2YXIgYj0zRHRoaXM7dGhpcy5tYXBfZGljdD0KPTNE
e307aWYoIXRoaXMuYXBwLnNlY3Rpb24pe3JldHVybnt9fWc9M0RnfHx7fTt2YXIgZj0zRHt9O3Zh
ciBlPTNEe307dGhpcy5fPQppdGVyYXRlKHRoaXMuYXBwLnNlY3Rpb24uJGVsLGUpO2Z1bmN0aW9u
IGQoaixpLGgpe2Zbal09M0RoO2IubWFwX2RpY3Rbal09M0Q9Cml9ZnVuY3Rpb24gYyhvLHIpe2Zv
cih2YXIgbSBpbiByKXt2YXIgaz0zRHJbbV07aWYoay5pbnB1dCl7dmFyIHQ9M0RrLmlucHV0Oz0K
dmFyIG49M0RvO2lmKG8hPTNEIiIpe24rPTNEInwifW4rPTNEdC5uYW1lO3N3aXRjaCh0LnR5cGUp
e2Nhc2UicmVwZWF0Ijp2YXIgPQpqPTNEInNlY3Rpb24tIjt2YXIgdz0zRFtdO3ZhciBxPTNEbnVs
bDtmb3IodmFyIHYgaW4gayl7dmFyIHA9M0R2LmluZGV4T2Yoaik9CjtpZihwIT0zRC0xKXtwKz0z
RGoubGVuZ3RoO3cucHVzaChwYXJzZUludCh2LnN1YnN0cihwKSkpO2lmKCFxKXtxPTNEdi5zdWJz
dD0KcigwLHApfX19dy5zb3J0KGZ1bmN0aW9uKHgsaSl7cmV0dXJuIHgtaX0pO3ZhciBtPTNEMDtm
b3IodmFyIGwgaW4gdyl7YyhuKyJfPQoiK20rKyxrW3Erd1tsXV0pfWJyZWFrO2Nhc2UiY29uZGl0
aW9uYWwiOnZhciB1PTNEYi5hcHAuZmllbGRfbGlzdFt0LmlkXS52YWw9CnVlKCk7aWYoZ1t0LnRl
c3RfcGFyYW0udHlwZV0pe3U9M0RnW3QudGVzdF9wYXJhbS50eXBlXSh1KX1kKG4rInwiK3QudGVz
dF9wYT0KcmFtLm5hbWUsdC5pZCx1KTt2YXIgaD0zRGIubWF0Y2hDYXNlKHQsdSk7aWYoaCE9M0Qt
MSl7YyhuLHJbdC5pZCsiLXNlY3Rpb24tPQoiK2hdKX1icmVhaztjYXNlInNlY3Rpb24iOmMoIiIs
ayk7YnJlYWs7ZGVmYXVsdDp2YXIgcz0zRGIuYXBwLmZpZWxkX2xpc3RbdC49CmlkXTtpZihzJiZz
LnZhbHVlKXt2YXIgdT0zRHMudmFsdWUoKTtpZihnW3QudHlwZV0pe3U9M0RnW3QudHlwZV0odSl9
aWYoIXMucz0Ka2lwKXtpZihzLnZhbGlkYXRlJiYhcy52YWxpZGF0ZSh1KSl7dT0zRG51bGx9aWYo
dC5pZ25vcmU9M0Q9M0Q9M0R1bmRlZmluZWR8PQp8KHUmJnQuaWdub3JlIT0zRHUpKXtkKG4sdC5p
ZCx1KX19fX19fX1jKCIiLGUpO3JldHVybiBmfSxtYXRjaDpmdW5jdGlvbihiKXs9CnJldHVybiB0
aGlzLm1hcF9kaWN0JiZ0aGlzLm1hcF9kaWN0W2JdfSxtYXRjaENhc2U6ZnVuY3Rpb24oYixkKXtp
ZihiLnRlc3RfcD0KYXJhbS50eXBlPTNEPTNEImJvb2xlYW4iKXtpZihkPTNEPTNEInRydWUiKXtk
PTNEYi50ZXN0X3BhcmFtLnRydWV2YWx1ZXx8InRyPQp1ZSJ9ZWxzZXtkPTNEYi50ZXN0X3BhcmFt
LmZhbHNldmFsdWV8fCJmYWxzZSJ9fWZvcih2YXIgYyBpbiBiLmNhc2VzKXtpZihiLmM9CmFzZXNb
Y10udmFsdWU9M0Q9M0RkKXtyZXR1cm4gY319cmV0dXJuIC0xfSxtYXRjaE1vZGVsOmZ1bmN0aW9u
KGQsZil7dmFyIGI9Cj0zRHt9O3ZhciBjPTNEdGhpcztmdW5jdGlvbiBlKGcscCl7Zm9yKHZhciBt
IGluIHApe3ZhciBrPTNEcFttXTt2YXIgbj0zRGsubj0KYW1lO2lmKGchPTNEIiIpe249M0RnKyJ8
IitufXN3aXRjaChrLnR5cGUpe2Nhc2UicmVwZWF0Ijpmb3IodmFyIGwgaW4gay5jYWNoPQplKXtl
KG4rIl8iK2wsay5jYWNoZVtsXSl9YnJlYWs7Y2FzZSJjb25kaXRpb25hbCI6dmFyIHE9M0RrLnRl
c3RfcGFyYW0mJmsudGU9CnN0X3BhcmFtLnZhbHVlO3ZhciBoPTNEYy5tYXRjaENhc2UoayxxKTtp
ZihoIT0zRC0xKXtlKG4say5jYXNlc1toXS5pbnB1dHMpfT0KYnJlYWs7ZGVmYXVsdDp2YXIgbz0z
RGMubWFwX2RpY3Rbbl07aWYobyl7ZihvLGspfX19fWUoIiIsZC5pbnB1dHMpO3JldHVybiBiPQp9
LG1hdGNoUmVzcG9uc2U6ZnVuY3Rpb24oZCl7dmFyIGI9M0R7fTt2YXIgYz0zRHRoaXM7ZnVuY3Rp
b24gZShsLGope2lmKHR5cGU9Cm9mIGo9M0Q9M0Q9M0Qic3RyaW5nIil7dmFyIGc9M0RjLm1hcF9k
aWN0W2xdO2lmKGcpe2JbZ109M0RqfX1lbHNle2Zvcih2YXIgaD0KIGluIGope3ZhciBmPTNEaDtp
ZihsIT0zRD0zRCIiKXt2YXIgaz0zRCJ8IjtpZihqIGluc3RhbmNlb2YgQXJyYXkpe2s9M0QiXyJ9
PQpmPTNEbCtrK2Z9ZShmLGpbaF0pfX19ZSgiIixkKTtyZXR1cm4gYn0sX2l0ZXJhdGU6ZnVuY3Rp
b24oZCxlKXt2YXIgYj0zRHRoaXM9Cjt2YXIgYz0zRCQoZCkuY2hpbGRyZW4oKTtjLmVhY2goZnVu
Y3Rpb24oKXt2YXIgaD0zRHRoaXM7dmFyIGc9M0QkKGgpLmF0dHIoIj0KaWQiKTtpZigkKGgpLmhh
c0NsYXNzKCJzZWN0aW9uLXJvdyIpKXtlW2ddPTNEe307dmFyIGY9M0RiLmFwcC5pbnB1dF9saXN0
W2ddPQo7aWYoZil7ZVtnXT0zRHtpbnB1dDpmfX1iLl9pdGVyYXRlKGgsZVtnXSl9ZWxzZXtiLl9p
dGVyYXRlKGgsZSl9fSl9fSl9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpkaWZmIC1y
IDE1OTYyYjNkOWFhYzA2MWU5NTQxZjgxNzVjOGQyZTJiYzRiYTVjYWIgLXIgMmU5OTBjYWVmYzk0
M2ViMmIxZDRhOTQ9CmFmNTA4YzIyYmIzNGI3ZmE2IHN0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMv
dWkvdWktbWlzYy5qcwotLS0gYS9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3VpL3VpLW1pc2Mu
anMKKysrIGIvc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy91aS91aS1taXNjLmpzCkBAIC0xLDEg
KzEsMSBAQAotZGVmaW5lKFsidXRpbHMvdXRpbHMiLCJtdmMvdWkvdWktc2VsZWN0LWRlZmF1bHQi
LCJtdmMvdWkvdWktc2xpZGVyIiwibXZjL3U9CmkvdWktb3B0aW9ucyIsIm12Yy91aS91aS1kcmls
bGRvd24iLCJtdmMvdWkvdWktYnV0dG9uLW1lbnUiLCJtdmMvdWkvdWktbW9kYT0KbCJdLGZ1bmN0
aW9uKGssYixlLG8sbCxxLG0pe3ZhciBkPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNE
ZWZhdWx0Ont1PQpybDoiIixjbHM6IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24ocil7dGhpcy5vcHRp
b25zPTNEay5tZXJnZShyLHRoaXMub3B0aW9uc0Q9CmVmYXVsdCk7dGhpcy5zZXRFbGVtZW50KHRo
aXMuX3RlbXBsYXRlKHRoaXMub3B0aW9ucykpfSxfdGVtcGxhdGU6ZnVuY3Rpb24ocj0KKXtyZXR1
cm4nPGltZyBjbGFzcz0zRCJ1aS1pbWFnZSAnK3IuY2xzKyciIHNyYz0zRCInK3IudXJsKyciLz4n
fX0pO3ZhciBqPTNEPQpCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e3RpdGxl
OiIiLGNsczoiIn0saW5pdGlhbGl6ZTpmdW5jdGlvbig9CnIpe3RoaXMub3B0aW9ucz0zRGsubWVy
Z2Uocix0aGlzLm9wdGlvbnNEZWZhdWx0KTt0aGlzLnNldEVsZW1lbnQodGhpcy5fdGVtcD0KbGF0
ZSh0aGlzLm9wdGlvbnMpKX0sdGl0bGU6ZnVuY3Rpb24ocil7dGhpcy4kZWwuaHRtbChyKX0sX3Rl
bXBsYXRlOmZ1bmN0aW9uPQoocil7cmV0dXJuJzxsYWJlbCBjbGFzcz0zRCJ1aS1sYWJlbCAnK3Iu
Y2xzKyciPicrci50aXRsZSsiPC9sYWJlbD4ifSx2YWx1ZTo9CmZ1bmN0aW9uKCl7cmV0dXJuIG9w
dGlvbnMudGl0bGV9fSk7dmFyIGM9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZj0K
YXVsdDp7ZmxvYXRpbmc6InJpZ2h0IixpY29uOiIiLHRvb2x0aXA6IiIscGxhY2VtZW50OiJib3R0
b20iLHRpdGxlOiIiLGNsczoiPQoifSxpbml0aWFsaXplOmZ1bmN0aW9uKHIpe3RoaXMub3B0aW9u
cz0zRGsubWVyZ2Uocix0aGlzLm9wdGlvbnNEZWZhdWx0KTt0aGk9CnMuc2V0RWxlbWVudCh0aGlz
Ll90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKTskKHRoaXMuZWwpLnRvb2x0aXAoe3RpdGxlOnIudG9v
bD0KdGlwLHBsYWNlbWVudDoiYm90dG9tIn0pfSxfdGVtcGxhdGU6ZnVuY3Rpb24ocil7cmV0dXJu
JzxkaXY+PHNwYW4gY2xhc3M9M0QiPQpmYSAnK3IuaWNvbisnIiBjbGFzcz0zRCJ1aS1pY29uIi8+
Jm5ic3A7JytyLnRpdGxlKyI8L2Rpdj4ifX0pO3ZhciBnPTNEQmFja2I9Cm9uZS5WaWV3LmV4dGVu
ZCh7b3B0aW9uc0RlZmF1bHQ6e2lkOm51bGwsdGl0bGU6IiIsZmxvYXRpbmc6InJpZ2h0IixjbHM6
InVpLT0KYnV0dG9uIGJ0biBidG4tZGVmYXVsdCIsaWNvbjoiIn0saW5pdGlhbGl6ZTpmdW5jdGlv
bihyKXt0aGlzLm9wdGlvbnM9M0RrLm1lPQpyZ2Uocix0aGlzLm9wdGlvbnNEZWZhdWx0KTt0aGlz
LnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSk7JCg9CnRoaXMuZWwpLm9u
KCJjbGljayIsZnVuY3Rpb24oKXskKCIudG9vbHRpcCIpLmhpZGUoKTtpZihyLm9uY2xpY2spe3Iu
b25jbGljaz0KKCl9fSk7JCh0aGlzLmVsKS50b29sdGlwKHt0aXRsZTpyLnRvb2x0aXAscGxhY2Vt
ZW50OiJib3R0b20ifSl9LF90ZW1wbGF0ZTpmPQp1bmN0aW9uKHIpe3ZhciBzPTNEJzxidXR0b24g
aWQ9M0QiJytyLmlkKyciIHR5cGU9M0Qic3VibWl0IiBzdHlsZT0zRCJmbG9hdDo9CiAnK3IuZmxv
YXRpbmcrJzsiIHR5cGU9M0QiYnV0dG9uIiBjbGFzcz0zRCInK3IuY2xzKyciPic7aWYoci5pY29u
KXtzKz0zRCc8aT0KIGNsYXNzPTNEImljb24gZmEgJytyLmljb24rJyI+PC9pPiZuYnNwOyd9cys9
M0RyLnRpdGxlKyI8L2J1dHRvbj4iO3JldHVybiBzPQp9fSk7dmFyIGg9M0RCYWNrYm9uZS5WaWV3
LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e2lkOm51bGwsdGl0bGU6IiIsZmxvYXRpbmc9Cjoicmln
aHQiLGNsczoidWktYnV0dG9uLWljb24iLGljb246IiIsdG9vbHRpcDoiIixvbmNsaWNrOm51bGx9
LGluaXRpYWxpemU6Zj0KdW5jdGlvbihzKXt0aGlzLm9wdGlvbnM9M0RrLm1lcmdlKHMsdGhpcy5v
cHRpb25zRGVmYXVsdCk7dGhpcy5zZXRFbGVtZW50KHRoPQppcy5fdGVtcGxhdGUodGhpcy5vcHRp
b25zKSk7dGhpcy4kYnV0dG9uPTNEdGhpcy4kZWwuZmluZCgiLmJ1dHRvbiIpO3ZhciByPQo9M0R0
aGlzOyQodGhpcy5lbCkub24oImNsaWNrIixmdW5jdGlvbigpeyQoIi50b29sdGlwIikuaGlkZSgp
O2lmKHMub25jbGljayY9CiYhci5kaXNhYmxlZCl7cy5vbmNsaWNrKCl9fSk7JCh0aGlzLmVsKS50
b29sdGlwKHt0aXRsZTpzLnRvb2x0aXAscGxhY2VtZW50Oj0KImJvdHRvbSJ9KX0sZGlzYWJsZTpm
dW5jdGlvbigpe3RoaXMuJGJ1dHRvbi5hZGRDbGFzcygiZGlzYWJsZWQiKTt0aGlzLmRpc2FiPQps
ZWQ9M0R0cnVlfSxlbmFibGU6ZnVuY3Rpb24oKXt0aGlzLiRidXR0b24ucmVtb3ZlQ2xhc3MoImRp
c2FibGVkIik7dGhpcy5kaXM9CmFibGVkPTNEZmFsc2V9LF90ZW1wbGF0ZTpmdW5jdGlvbihyKXt2
YXIgcz0zRCIiO2lmKHIudGl0bGUpe3M9M0Qid2lkdGg6IGF1dD0KbzsifXZhciB0PTNEJzxkaXYg
aWQ9M0QiJytyLmlkKyciIHN0eWxlPTNEImZsb2F0OiAnK3IuZmxvYXRpbmcrIjsgIitzKyciIGNs
PQphc3M9M0QiJytyLmNscysnIj4nO2lmKHIudGl0bGUpe3QrPTNEJzxkaXYgY2xhc3M9M0QiYnV0
dG9uIj48aSBjbGFzcz0zRCJpY289Cm4gZmEgJytyLmljb24rJyIvPiZuYnNwOzxzcGFuIGNsYXNz
PTNEInRpdGxlIj4nK3IudGl0bGUrIjwvc3Bhbj48L2Rpdj4ifWVscz0KZXt0Kz0zRCc8aSBjbGFz
cz0zRCJpY29uIGZhICcrci5pY29uKyciLz4nfXQrPTNEIjwvZGl2PiI7cmV0dXJuIHR9fSk7dmFy
IGY9Cj0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7dGl0bGU6IiIsY2xz
OiIifSxpbml0aWFsaXplOmZ1bmN0aT0Kb24ocil7dGhpcy5vcHRpb25zPTNEay5tZXJnZShyLHRo
aXMub3B0aW9uc0RlZmF1bHQpO3RoaXMuc2V0RWxlbWVudCh0aGlzLl90PQplbXBsYXRlKHRoaXMu
b3B0aW9ucykpOyQodGhpcy5lbCkub24oImNsaWNrIixyLm9uY2xpY2spfSxfdGVtcGxhdGU6ZnVu
Y3Rpb249CihyKXtyZXR1cm4nPGRpdj48YSBocmVmPTNEImphdmFzY3JpcHQ6dm9pZCgwKSIgY2xh
c3M9M0QidWktYW5jaG9yICcrci5jbHMrJz0KIj4nK3IudGl0bGUrIjwvYT48L2Rpdj4ifX0pO3Zh
ciBuPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0OnttPQplc3NhZ2U6bnVs
bCxzdGF0dXM6ImluZm8iLHBlcnNpc3RlbnQ6ZmFsc2V9LGluaXRpYWxpemU6ZnVuY3Rpb24ocil7
dGhpcy5vcHQ9CmlvbnM9M0RrLm1lcmdlKHIsdGhpcy5vcHRpb25zRGVmYXVsdCk7dGhpcy5zZXRF
bGVtZW50KCI8ZGl2PjwvZGl2PiIpO2lmKHRoaT0Kcy5vcHRpb25zLm1lc3NhZ2Upe3RoaXMudXBk
YXRlKHRoaXMub3B0aW9ucyl9fSx1cGRhdGU6ZnVuY3Rpb24ocyl7dGhpcy5vcHRpPQpvbnM9M0Rr
Lm1lcmdlKHMsdGhpcy5vcHRpb25zRGVmYXVsdCk7aWYocy5tZXNzYWdlIT0zRCIiKXt0aGlzLiRl
bC5odG1sKHRoaXM9Ci5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSk7dGhpcy4kZWwuZmluZCgiLmFs
ZXJ0IikuYXBwZW5kKHMubWVzc2FnZSk7dGhpcy4kZT0KbC5mYWRlSW4oKTtpZih0aGlzLnRpbWVv
dXQpe3dpbmRvdy5jbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KX1pZighcy5wZXJzaXN0PQplbnQp
e3ZhciByPTNEdGhpczt0aGlzLnRpbWVvdXQ9M0R3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigp
e2lmKHIuJGVsLmlzKCI9Cjp2aXNpYmxlIikpe3IuJGVsLmZhZGVPdXQoKX1lbHNle3IuJGVsLmhp
ZGUoKX19LDMwMDApfX1lbHNle3RoaXMuJGVsLmZhZGVPdT0KdCgpfX0sX3RlbXBsYXRlOmZ1bmN0
aW9uKHIpe3JldHVybic8ZGl2IGNsYXNzPTNEInVpLW1lc3NhZ2UgYWxlcnQgYWxlcnQtJytyPQou
c3RhdHVzKyciLz4nfX0pO3ZhciBhPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZh
dWx0OntvbmNsaWNrOm51bGw9CixzZWFyY2h3b3JkOiIifSxpbml0aWFsaXplOmZ1bmN0aW9uKHMp
e3RoaXMub3B0aW9ucz0zRGsubWVyZ2Uocyx0aGlzLm9wdGlvbj0Kc0RlZmF1bHQpO3RoaXMuc2V0
RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKTt2YXIgcj0zRHRoaXM7aWYodGhp
PQpzLm9wdGlvbnMub25jbGljayl7dGhpcy4kZWwub24oInN1Ym1pdCIsZnVuY3Rpb24odSl7dmFy
IHQ9M0RyLiRlbC5maW5kKCIjc2U9CmFyY2giKTtyLm9wdGlvbnMub25jbGljayh0LnZhbCgpKX0p
fX0sX3RlbXBsYXRlOmZ1bmN0aW9uKHIpe3JldHVybic8ZGl2IGNsYT0Kc3M9M0QidWktc2VhcmNo
Ij48Zm9ybSBvbnN1Ym1pdD0zRCJyZXR1cm4gZmFsc2U7Ij48aW5wdXQgaWQ9M0Qic2VhcmNoIiBj
bGFzPQpzPTNEImZvcm0tY29udHJvbCBpbnB1dC1zbSIgdHlwZT0zRCJ0ZXh0IiBuYW1lPTNEInNl
YXJjaCIgcGxhY2Vob2xkZXI9M0QiU2U9CmFyY2guLi4iIHZhbHVlPTNEIicrci5zZWFyY2h3b3Jk
KyciPjxidXR0b24gdHlwZT0zRCJzdWJtaXQiIGNsYXNzPTNEImJ0biBzZT0KYXJjaC1idG4iPjxp
IGNsYXNzPTNEImZhIGZhLXNlYXJjaCI+PC9pPjwvYnV0dG9uPjwvZm9ybT48L2Rpdj4nfX0pO3Zh
ciBpPTNEPQpCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e3R5cGU6InRleHQi
LHBsYWNlaG9sZGVyOiIiLGRpc2FibGVkOmY9CmFsc2UsdmlzaWJsZTp0cnVlLGNsczoiIixhcmVh
OmZhbHNlfSxpbml0aWFsaXplOmZ1bmN0aW9uKHMpe3RoaXMub3B0aW9ucz0zRD0Kay5tZXJnZShz
LHRoaXMub3B0aW9uc0RlZmF1bHQpO3RoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlz
Lm9wdGlvbnMpPQopO2lmKHRoaXMub3B0aW9ucy52YWx1ZSE9M0Q9M0R1bmRlZmluZWQpe3RoaXMu
dmFsdWUodGhpcy5vcHRpb25zLnZhbHVlKX1pZig9CnRoaXMub3B0aW9ucy5kaXNhYmxlZCl7dGhp
cy4kZWwucHJvcCgiZGlzYWJsZWQiLHRydWUpfWlmKCF0aGlzLm9wdGlvbnMudmlzaT0KYmxlKXt0
aGlzLiRlbC5oaWRlKCl9dmFyIHI9M0R0aGlzO3RoaXMuJGVsLm9uKCJpbnB1dCIsZnVuY3Rpb24o
KXtpZihyLm9wdGlvPQpucy5vbmNoYW5nZSl7ci5vcHRpb25zLm9uY2hhbmdlKHIuJGVsLnZhbCgp
KX19KX0sdmFsdWU6ZnVuY3Rpb24ocil7aWYociE9M0Q9Cj0zRHVuZGVmaW5lZCl7dGhpcy4kZWwu
dmFsKHIpfXJldHVybiB0aGlzLiRlbC52YWwoKX0sX3RlbXBsYXRlOmZ1bmN0aW9uKHIpez0KaWYo
ci5hcmVhKXtyZXR1cm4nPHRleHRhcmVhIGlkPTNEIicrci5pZCsnIiBjbGFzcz0zRCJ1aS10ZXh0
YXJlYSAnK3IuY2xzKyciPQo+PC90ZXh0YXJlYT4nfWVsc2V7cmV0dXJuJzxpbnB1dCBpZD0zRCIn
K3IuaWQrJyIgdHlwZT0zRCInK3IudHlwZSsnIiB2YWx1ZT0KPTNEIicrci52YWx1ZSsnIiBwbGFj
ZWhvbGRlcj0zRCInK3IucGxhY2Vob2xkZXIrJyIgY2xhc3M9M0QidWktaW5wdXQgJytyLmNsPQpz
KyciPid9fX0pO3ZhciBwPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rp
b24ocil7dGhpcy5vcHRpb249CnM9M0RyO3RoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0
aGlzLm9wdGlvbnMpKTtpZih0aGlzLm9wdGlvbnMudmFsdWUhPQo9M0Q9M0R1bmRlZmluZWQpe3Ro
aXMudmFsdWUodGhpcy5vcHRpb25zLnZhbHVlKX19LHZhbHVlOmZ1bmN0aW9uKHIpe2lmKHIhPQo9
M0Q9M0R1bmRlZmluZWQpe3RoaXMuJCgiaGlkZGVuIikudmFsKHIpfXJldHVybiB0aGlzLiQoImhp
ZGRlbiIpLnZhbCgpfSxfdGU9Cm1wbGF0ZTpmdW5jdGlvbihzKXt2YXIgcj0zRCc8ZGl2IGlkPTNE
Iicrcy5pZCsnIiA+JztpZihzLmluZm8pe3IrPTNEIjxsYWJlbD0KPiIrcy5pbmZvKyI8L2xhYmVs
PiJ9cis9M0QnPGhpZGRlbiB2YWx1ZT0zRCInK3MudmFsdWUrJyIvPjwvZGl2Pic7cmV0dXJuIHJ9
PQp9KTtyZXR1cm57QW5jaG9yOmYsQnV0dG9uOmcsQnV0dG9uSWNvbjpoLEJ1dHRvbk1lbnU6cSxJ
Y29uOmMsSW1hZ2U6ZCxJbnB1dDo9CmksTGFiZWw6aixNZXNzYWdlOm4sTW9kYWw6bSxSYWRpb0J1
dHRvbjpvLlJhZGlvQnV0dG9uLENoZWNrYm94Om8uQ2hlY2tib3gsUj0KYWRpbzpvLlJhZGlvLFNl
YXJjaGJveDphLFNlbGVjdDpiLEhpZGRlbjpwLFNsaWRlcjplLERyaWxsZG93bjpsfX0pOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RlZmluZShbInV0aWxzL3V0aWxzIiwibXZjL3VpL3Vp
LXNlbGVjdC1kZWZhdWx0IiwibXZjL3VpL3VpLXNsaWRlciIsIm12Yy91PQppL3VpLW9wdGlvbnMi
LCJtdmMvdWkvdWktZHJpbGxkb3duIiwibXZjL3VpL3VpLWJ1dHRvbi1tZW51IiwibXZjL3VpL3Vp
LW1vZGE9CmwiXSxmdW5jdGlvbihrLGIsZSxvLGwscSxtKXt2YXIgZD0zREJhY2tib25lLlZpZXcu
ZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7dT0Kcmw6IiIsY2xzOiIifSxpbml0aWFsaXplOmZ1bmN0
aW9uKHIpe3RoaXMub3B0aW9ucz0zRGsubWVyZ2Uocix0aGlzLm9wdGlvbnNEPQplZmF1bHQpO3Ro
aXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKX0sX3RlbXBsYXRlOmZ1
bmN0aW9uKHI9Cil7cmV0dXJuJzxpbWcgY2xhc3M9M0QidWktaW1hZ2UgJytyLmNscysnIiBzcmM9
M0QiJytyLnVybCsnIi8+J319KTt2YXIgaj0zRD0KQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlv
bnNEZWZhdWx0Ont0aXRsZToiIixjbHM6IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24oPQpyKXt0aGlz
Lm9wdGlvbnM9M0RrLm1lcmdlKHIsdGhpcy5vcHRpb25zRGVmYXVsdCk7dGhpcy5zZXRFbGVtZW50
KHRoaXMuX3RlbXA9CmxhdGUodGhpcy5vcHRpb25zKSl9LHRpdGxlOmZ1bmN0aW9uKHIpe3RoaXMu
JGVsLmh0bWwocil9LF90ZW1wbGF0ZTpmdW5jdGlvbj0KKHIpe3JldHVybic8bGFiZWwgY2xhc3M9
M0QidWktbGFiZWwgJytyLmNscysnIj4nK3IudGl0bGUrIjwvbGFiZWw+In0sdmFsdWU6PQpmdW5j
dGlvbigpe3JldHVybiBvcHRpb25zLnRpdGxlfX0pO3ZhciBjPTNEQmFja2JvbmUuVmlldy5leHRl
bmQoe29wdGlvbnNEZWY9CmF1bHQ6e2Zsb2F0aW5nOiJyaWdodCIsaWNvbjoiIix0b29sdGlwOiIi
LHBsYWNlbWVudDoiYm90dG9tIix0aXRsZToiIixjbHM6Ij0KIn0saW5pdGlhbGl6ZTpmdW5jdGlv
bihyKXt0aGlzLm9wdGlvbnM9M0RrLm1lcmdlKHIsdGhpcy5vcHRpb25zRGVmYXVsdCk7dGhpPQpz
LnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSk7JCh0aGlzLmVsKS50b29s
dGlwKHt0aXRsZTpyLnRvb2w9CnRpcCxwbGFjZW1lbnQ6ImJvdHRvbSJ9KX0sX3RlbXBsYXRlOmZ1
bmN0aW9uKHIpe3JldHVybic8ZGl2PjxzcGFuIGNsYXNzPTNEIj0KZmEgJytyLmljb24rJyIgY2xh
c3M9M0QidWktaWNvbiIvPiZuYnNwOycrci50aXRsZSsiPC9kaXY+In19KTt2YXIgZz0zREJhY2ti
PQpvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0OntpZDpudWxsLHRpdGxlOiIiLGZsb2F0
aW5nOiJyaWdodCIsY2xzOiJ1aS09CmJ1dHRvbiBidG4gYnRuLWRlZmF1bHQiLGljb246IiJ9LGlu
aXRpYWxpemU6ZnVuY3Rpb24ocil7dGhpcy5vcHRpb25zPTNEay5tZT0KcmdlKHIsdGhpcy5vcHRp
b25zRGVmYXVsdCk7dGhpcy5zZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9ucykp
OyQoPQp0aGlzLmVsKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7JCgiLnRvb2x0aXAiKS5oaWRlKCk7
aWYoci5vbmNsaWNrKXtyLm9uY2xpY2s9CigpfX0pOyQodGhpcy5lbCkudG9vbHRpcCh7dGl0bGU6
ci50b29sdGlwLHBsYWNlbWVudDoiYm90dG9tIn0pfSxfdGVtcGxhdGU6Zj0KdW5jdGlvbihyKXt2
YXIgcz0zRCc8YnV0dG9uIGlkPTNEIicrci5pZCsnIiB0eXBlPTNEInN1Ym1pdCIgc3R5bGU9M0Qi
ZmxvYXQ6PQogJytyLmZsb2F0aW5nKyc7IiB0eXBlPTNEImJ1dHRvbiIgY2xhc3M9M0QiJytyLmNs
cysnIj4nO2lmKHIuaWNvbil7cys9M0QnPGk9CiBjbGFzcz0zRCJpY29uIGZhICcrci5pY29uKyci
PjwvaT4mbmJzcDsnfXMrPTNEci50aXRsZSsiPC9idXR0b24+IjtyZXR1cm4gcz0KfX0pO3ZhciBo
PTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0OntpZDpudWxsLHRpdGxlOiIi
LGZsb2F0aW5nPQo6InJpZ2h0IixjbHM6InVpLWJ1dHRvbi1pY29uIixpY29uOiIiLHRvb2x0aXA6
IiIsb25jbGljazpudWxsfSxpbml0aWFsaXplOmY9CnVuY3Rpb24ocyl7dGhpcy5vcHRpb25zPTNE
ay5tZXJnZShzLHRoaXMub3B0aW9uc0RlZmF1bHQpO3RoaXMuc2V0RWxlbWVudCh0aD0KaXMuX3Rl
bXBsYXRlKHRoaXMub3B0aW9ucykpO3RoaXMuJGJ1dHRvbj0zRHRoaXMuJGVsLmZpbmQoIi5idXR0
b24iKTt2YXIgcj0KPTNEdGhpczskKHRoaXMuZWwpLm9uKCJjbGljayIsZnVuY3Rpb24oKXskKCIu
dG9vbHRpcCIpLmhpZGUoKTtpZihzLm9uY2xpY2smPQomIXIuZGlzYWJsZWQpe3Mub25jbGljaygp
fX0pOyQodGhpcy5lbCkudG9vbHRpcCh7dGl0bGU6cy50b29sdGlwLHBsYWNlbWVudDo9CiJib3R0
b20ifSl9LGRpc2FibGU6ZnVuY3Rpb24oKXt0aGlzLiRidXR0b24uYWRkQ2xhc3MoImRpc2FibGVk
Iik7dGhpcy5kaXNhYj0KbGVkPTNEdHJ1ZX0sZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy4kYnV0dG9u
LnJlbW92ZUNsYXNzKCJkaXNhYmxlZCIpO3RoaXMuZGlzPQphYmxlZD0zRGZhbHNlfSxzZXRJY29u
OmZ1bmN0aW9uKHIpe3RoaXMuJCgiaSIpLnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5pY289Cm4p
LmFkZENsYXNzKHIpO3RoaXMub3B0aW9ucy5pY29uPTNEcn0sX3RlbXBsYXRlOmZ1bmN0aW9uKHIp
e3ZhciBzPTNEIiI7aWYocj0KLnRpdGxlKXtzPTNEIndpZHRoOiBhdXRvOyJ9dmFyIHQ9M0QnPGRp
diBpZD0zRCInK3IuaWQrJyIgc3R5bGU9M0QiZmxvYXQ6ICcrPQpyLmZsb2F0aW5nKyI7ICIrcysn
IiBjbGFzcz0zRCInK3IuY2xzKyciPic7aWYoci50aXRsZSl7dCs9M0QnPGRpdiBjbGFzcz0zRCI9
CmJ1dHRvbiI+PGkgY2xhc3M9M0QiaWNvbiBmYSAnK3IuaWNvbisnIi8+Jm5ic3A7PHNwYW4gY2xh
c3M9M0QidGl0bGUiPicrci50aT0KdGxlKyI8L3NwYW4+PC9kaXY+In1lbHNle3QrPTNEJzxpIGNs
YXNzPTNEImljb24gZmEgJytyLmljb24rJyIvPid9dCs9M0QiPC9kPQppdj4iO3JldHVybiB0fX0p
O3ZhciBmPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0Ont0aXRsZToiIixj
bHM9CjoiIn0saW5pdGlhbGl6ZTpmdW5jdGlvbihyKXt0aGlzLm9wdGlvbnM9M0RrLm1lcmdlKHIs
dGhpcy5vcHRpb25zRGVmYXVsdCk7dD0KaGlzLnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGhp
cy5vcHRpb25zKSk7JCh0aGlzLmVsKS5vbigiY2xpY2siLHIub25jbGljPQprKX0sX3RlbXBsYXRl
OmZ1bmN0aW9uKHIpe3JldHVybic8ZGl2PjxhIGhyZWY9M0QiamF2YXNjcmlwdDp2b2lkKDApIiBj
bGFzcz0KPTNEInVpLWFuY2hvciAnK3IuY2xzKyciPicrci50aXRsZSsiPC9hPjwvZGl2PiJ9fSk7
dmFyIG49M0RCYWNrYm9uZS5WaWV3LmV4PQp0ZW5kKHtvcHRpb25zRGVmYXVsdDp7bWVzc2FnZTpu
dWxsLHN0YXR1czoiaW5mbyIscGVyc2lzdGVudDpmYWxzZX0saW5pdGlhbGk9CnplOmZ1bmN0aW9u
KHIpe3RoaXMub3B0aW9ucz0zRGsubWVyZ2Uocix0aGlzLm9wdGlvbnNEZWZhdWx0KTt0aGlzLnNl
dEVsZW1lbj0KdCgiPGRpdj48L2Rpdj4iKTtpZih0aGlzLm9wdGlvbnMubWVzc2FnZSl7dGhpcy51
cGRhdGUodGhpcy5vcHRpb25zKX19LHVwZGF0PQplOmZ1bmN0aW9uKHMpe3RoaXMub3B0aW9ucz0z
RGsubWVyZ2Uocyx0aGlzLm9wdGlvbnNEZWZhdWx0KTtpZihzLm1lc3NhZ2UhPQo9M0QiIil7dGhp
cy4kZWwuaHRtbCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKTt0aGlzLiRlbC5maW5kKCIu
YWxlcnQiKS49CmFwcGVuZChzLm1lc3NhZ2UpO3RoaXMuJGVsLmZhZGVJbigpO2lmKHRoaXMudGlt
ZW91dCl7d2luZG93LmNsZWFyVGltZW91dCh0aD0KaXMudGltZW91dCl9aWYoIXMucGVyc2lzdGVu
dCl7dmFyIHI9M0R0aGlzO3RoaXMudGltZW91dD0zRHdpbmRvdy5zZXRUaW1lb3V0PQooZnVuY3Rp
b24oKXtpZihyLiRlbC5pcygiOnZpc2libGUiKSl7ci4kZWwuZmFkZU91dCgpfWVsc2V7ci4kZWwu
aGlkZSgpfX0sMzA9CjAwKX19ZWxzZXt0aGlzLiRlbC5mYWRlT3V0KCl9fSxfdGVtcGxhdGU6ZnVu
Y3Rpb24ocil7cmV0dXJuJzxkaXYgY2xhc3M9M0QidT0KaS1tZXNzYWdlIGFsZXJ0IGFsZXJ0LScr
ci5zdGF0dXMrJyIvPid9fSk7dmFyIGE9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0PQppb25z
RGVmYXVsdDp7b25jbGljazpudWxsLHNlYXJjaHdvcmQ6IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24o
cyl7dGhpcy5vcHRpb249CnM9M0RrLm1lcmdlKHMsdGhpcy5vcHRpb25zRGVmYXVsdCk7dGhpcy5z
ZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aT0Kb25zKSk7dmFyIHI9M0R0aGlzO2lm
KHRoaXMub3B0aW9ucy5vbmNsaWNrKXt0aGlzLiRlbC5vbigic3VibWl0IixmdW5jdGlvbih1PQop
e3ZhciB0PTNEci4kZWwuZmluZCgiI3NlYXJjaCIpO3Iub3B0aW9ucy5vbmNsaWNrKHQudmFsKCkp
fSl9fSxfdGVtcGxhdGU6ZnU9Cm5jdGlvbihyKXtyZXR1cm4nPGRpdiBjbGFzcz0zRCJ1aS1zZWFy
Y2giPjxmb3JtIG9uc3VibWl0PTNEInJldHVybiBmYWxzZTsiPj0KPGlucHV0IGlkPTNEInNlYXJj
aCIgY2xhc3M9M0QiZm9ybS1jb250cm9sIGlucHV0LXNtIiB0eXBlPTNEInRleHQiIG5hbWU9M0Qi
PQpzZWFyY2giIHBsYWNlaG9sZGVyPTNEIlNlYXJjaC4uLiIgdmFsdWU9M0QiJytyLnNlYXJjaHdv
cmQrJyI+PGJ1dHRvbiB0eXBlPQo9M0Qic3VibWl0IiBjbGFzcz0zRCJidG4gc2VhcmNoLWJ0biI+
PGkgY2xhc3M9M0QiZmEgZmEtc2VhcmNoIj48L2k+PC9idXR0b249Cj48L2Zvcm0+PC9kaXY+J319
KTt2YXIgaT0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7dHlwZToidGV4
dD0KIixwbGFjZWhvbGRlcjoiIixkaXNhYmxlZDpmYWxzZSx2aXNpYmxlOnRydWUsY2xzOiIiLGFy
ZWE6ZmFsc2V9LGluaXRpYWxpemU6PQpmdW5jdGlvbihzKXt0aGlzLm9wdGlvbnM9M0RrLm1lcmdl
KHMsdGhpcy5vcHRpb25zRGVmYXVsdCk7dGhpcy5zZXRFbGVtZW50KHQ9Cmhpcy5fdGVtcGxhdGUo
dGhpcy5vcHRpb25zKSk7aWYodGhpcy5vcHRpb25zLnZhbHVlIT0zRD0zRHVuZGVmaW5lZCl7dGhp
cy52YT0KbHVlKHRoaXMub3B0aW9ucy52YWx1ZSl9aWYodGhpcy5vcHRpb25zLmRpc2FibGVkKXt0
aGlzLiRlbC5wcm9wKCJkaXNhYmxlZCIsPQp0cnVlKX1pZighdGhpcy5vcHRpb25zLnZpc2libGUp
e3RoaXMuJGVsLmhpZGUoKX12YXIgcj0zRHRoaXM7dGhpcy4kZWwub24oImk9Cm5wdXQiLGZ1bmN0
aW9uKCl7aWYoci5vcHRpb25zLm9uY2hhbmdlKXtyLm9wdGlvbnMub25jaGFuZ2Uoci4kZWwudmFs
KCkpfX0pfT0KLHZhbHVlOmZ1bmN0aW9uKHIpe2lmKHIhPTNEPTNEdW5kZWZpbmVkKXt0aGlzLiRl
bC52YWwocil9cmV0dXJuIHRoaXMuJGVsLnZhPQpsKCl9LF90ZW1wbGF0ZTpmdW5jdGlvbihyKXtp
ZihyLmFyZWEpe3JldHVybic8dGV4dGFyZWEgaWQ9M0QiJytyLmlkKyciIGNsYXM9CnM9M0QidWkt
dGV4dGFyZWEgJytyLmNscysnIj48L3RleHRhcmVhPid9ZWxzZXtyZXR1cm4nPGlucHV0IGlkPTNE
Iicrci5pZCsnIj0KIHR5cGU9M0QiJytyLnR5cGUrJyIgdmFsdWU9M0QiJytyLnZhbHVlKyciIHBs
YWNlaG9sZGVyPTNEIicrci5wbGFjZWhvbGRlcisnPQoiIGNsYXNzPTNEInVpLWlucHV0ICcrci5j
bHMrJyI+J319fSk7dmFyIHA9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7aW5pdGlhbGk9CnplOmZ1
bmN0aW9uKHIpe3RoaXMub3B0aW9ucz0zRHI7dGhpcy5zZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRl
KHRoaXMub3B0aW9ucz0KKSk7aWYodGhpcy5vcHRpb25zLnZhbHVlIT0zRD0zRHVuZGVmaW5lZCl7
dGhpcy52YWx1ZSh0aGlzLm9wdGlvbnMudmFsdWUpfX0sPQp2YWx1ZTpmdW5jdGlvbihyKXtpZihy
IT0zRD0zRHVuZGVmaW5lZCl7dGhpcy4kKCJoaWRkZW4iKS52YWwocil9cmV0dXJuIHRoaXM9Ci4k
KCJoaWRkZW4iKS52YWwoKX0sX3RlbXBsYXRlOmZ1bmN0aW9uKHMpe3ZhciByPTNEJzxkaXYgaWQ9
M0QiJytzLmlkKyciID4nOz0KaWYocy5pbmZvKXtyKz0zRCI8bGFiZWw+IitzLmluZm8rIjwvbGFi
ZWw+In1yKz0zRCc8aGlkZGVuIHZhbHVlPTNEIicrcy52YWx1PQplKyciLz48L2Rpdj4nO3JldHVy
biByfX0pO3JldHVybntBbmNob3I6ZixCdXR0b246ZyxCdXR0b25JY29uOmgsQnV0dG9uTWVudTo9
CnEsSWNvbjpjLEltYWdlOmQsSW5wdXQ6aSxMYWJlbDpqLE1lc3NhZ2U6bixNb2RhbDptLFJhZGlv
QnV0dG9uOm8uUmFkaW9CdXR0bz0KbixDaGVja2JveDpvLkNoZWNrYm94LFJhZGlvOm8uUmFkaW8s
U2VhcmNoYm94OmEsU2VsZWN0OmIsSGlkZGVuOnAsU2xpZGVyOmUsPQpEcmlsbGRvd246bH19KTsK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpkaWZmIC1yIDE1OTYyYjNkOWFhYzA2MWU5NTQx
ZjgxNzVjOGQyZTJiYzRiYTVjYWIgLXIgMmU5OTBjYWVmYzk0M2ViMmIxZDRhOTQ9CmFmNTA4YzIy
YmIzNGI3ZmE2IHN0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvdWkvdWktcG9ydGxldC5qcwotLS0g
YS9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3VpL3VpLXBvcnRsZXQuanMKKysrIGIvc3RhdGlj
L3NjcmlwdHMvcGFja2VkL212Yy91aS91aS1wb3J0bGV0LmpzCkBAIC0xLDEgKzEsMSBAQAotZGVm
aW5lKFsidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihhKXt2YXIgYj0zREJhY2tib25lLlZpZXcuZXh0
ZW5kKHt2aXNpYmxlOmY9CmFsc2Usb3B0aW9uc0RlZmF1bHQ6e3RpdGxlOiIiLGljb246IiIsYnV0
dG9uczpudWxsLGJvZHk6bnVsbCxzY3JvbGxhYmxlOnRydT0KZSxub3BhZGRpbmc6ZmFsc2Usb3Bl
cmF0aW9uczpudWxsLHBsYWNlbWVudDoiYm90dG9tIixjbHM6InVpLXBvcnRsZXQiLG9wZXJhPQp0
aW9uc19mbHQ6InJpZ2h0In0sJHRpdGxlOm51bGwsJGNvbnRlbnQ6bnVsbCwkYnV0dG9uczpudWxs
LCRvcGVyYXRpb25zOm51bGw9Cixpbml0aWFsaXplOmZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucz0z
RGEubWVyZ2UoZSx0aGlzLm9wdGlvbnNEZWZhdWx0KTt0aGlzLj0Kc2V0RWxlbWVudCh0aGlzLl90
ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKTt0aGlzLiRjb250ZW50PTNEdGhpcy4kZWwuZmluZCgiI2Nv
PQpudGVudCIpO3RoaXMuJHRpdGxlPTNEdGhpcy4kZWwuZmluZCgiI3BvcnRsZXQtdGl0bGUtdGV4
dCIpO3ZhciBkPTNEdGhpcy4kZWw9Ci5maW5kKCIjcG9ydGxldC1jb250ZW50Iik7aWYoIXRoaXMu
b3B0aW9ucy5zY3JvbGxhYmxlKXtpZih0aGlzLm9wdGlvbnMudGl0bD0KZSl7ZC5hZGRDbGFzcygi
bm8tc2Nyb2xsIil9ZWxzZXtkLmFkZENsYXNzKCJuby1zY3JvbGwtbm8tdGl0bGUiKX19ZWxzZXtk
LmFkPQpkQ2xhc3MoInNjcm9sbCIpfWlmKHRoaXMub3B0aW9ucy5ub3BhZGRpbmcpe2QuY3NzKCJw
YWRkaW5nIiwiMHB4Iik7dGhpcy4kY289Cm50ZW50LmNzcygicGFkZGluZyIsIjBweCIpfXRoaXMu
JGJ1dHRvbnM9M0QkKHRoaXMuZWwpLmZpbmQoIiNidXR0b25zIik7aWYodD0KaGlzLm9wdGlvbnMu
YnV0dG9ucyl7dmFyIGM9M0R0aGlzOyQuZWFjaCh0aGlzLm9wdGlvbnMuYnV0dG9ucyxmdW5jdGlv
bihmLGcpPQp7Zy4kZWwucHJvcCgiaWQiLGYpO2MuJGJ1dHRvbnMuYXBwZW5kKGcuJGVsKX0pfWVs
c2V7dGhpcy4kYnV0dG9ucy5yZW1vdmUoKX09CnRoaXMuJG9wZXJhdGlvbnM9M0QkKHRoaXMuZWwp
LmZpbmQoIiNvcGVyYXRpb25zIik7aWYodGhpcy5vcHRpb25zLm9wZXJhdGlvbj0Kcyl7dmFyIGM9
M0R0aGlzOyQuZWFjaCh0aGlzLm9wdGlvbnMub3BlcmF0aW9ucyxmdW5jdGlvbihmLGcpe2cuJGVs
LnByb3AoImlkPQoiLGYpO2MuJG9wZXJhdGlvbnMuYXBwZW5kKGcuJGVsKX0pfWlmKHRoaXMub3B0
aW9ucy5ib2R5KXt0aGlzLmFwcGVuZCh0aGlzLm89CnB0aW9ucy5ib2R5KX19LGFwcGVuZDpmdW5j
dGlvbihkLGMpe2lmKGMpe3RoaXMuJGNvbnRlbnQuYXBwZW5kKGQpfWVsc2V7dGhpcz0KLiRjb250
ZW50LmFwcGVuZChhLndyYXAoZCkpfX0sY29udGVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRj
b250ZW50fSxzaG93PQo6ZnVuY3Rpb24oKXt0aGlzLiRlbC5mYWRlSW4oImZhc3QiKTt0aGlzLnZp
c2libGU9M0R0cnVlfSxoaWRlOmZ1bmN0aW9uKCl7dGg9CmlzLiRlbC5mYWRlT3V0KCJmYXN0Iik7
dGhpcy52aXNpYmxlPTNEZmFsc2V9LGVuYWJsZUJ1dHRvbjpmdW5jdGlvbihjKXt0aGlzLj0KJGJ1
dHRvbnMuZmluZCgiIyIrYykucHJvcCgiZGlzYWJsZWQiLGZhbHNlKX0sZGlzYWJsZUJ1dHRvbjpm
dW5jdGlvbihjKXt0aGlzPQouJGJ1dHRvbnMuZmluZCgiIyIrYykucHJvcCgiZGlzYWJsZWQiLHRy
dWUpfSxoaWRlT3BlcmF0aW9uOmZ1bmN0aW9uKGMpe3RoaXM9Ci4kb3BlcmF0aW9ucy5maW5kKCIj
IitjKS5oaWRlKCl9LHNob3dPcGVyYXRpb246ZnVuY3Rpb24oYyl7dGhpcy4kb3BlcmF0aW9ucz0K
LmZpbmQoIiMiK2MpLnNob3coKX0sc2V0T3BlcmF0aW9uOmZ1bmN0aW9uKGUsZCl7dmFyIGM9M0R0
aGlzLiRvcGVyYXRpb25zLmZpPQpuZCgiIyIrZSk7Yy5vZmYoImNsaWNrIik7Yy5vbigiY2xpY2si
LGQpfSx0aXRsZTpmdW5jdGlvbihkKXt2YXIgYz0zRHRoaXMuJHQ9Cml0bGU7aWYoZCl7Yy5odG1s
KGQpfXJldHVybiBjLmh0bWwoKX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGQpe3ZhciBjPTNEJzxkaXYg
aT0KZD0zRCInK2QuaWQrJyIgY2xhc3M9M0QiJytkLmNscysnIj4nO2lmKGQudGl0bGUpe2MrPTNE
JzxkaXYgaWQ9M0QicG9ydGxldC1oPQplYWRlciIgY2xhc3M9M0QicG9ydGxldC1oZWFkZXIiPjxk
aXYgaWQ9M0Qib3BlcmF0aW9ucyIgc3R5bGU9M0QiZmxvYXQ6ICcrZC49Cm9wZXJhdGlvbnNfZmx0
Kyc7Ij48L2Rpdj48ZGl2IGNsYXNzPTNEInBvcnRsZXQtdGl0bGUiPic7aWYoZC5pY29uKXtjKz0z
RCc8aT0KIGNsYXNzPTNEImljb24gZmEgJytkLmljb24rJyI+Jm5ic3A7PC9pPid9Yys9M0QnPHNw
YW4gaWQ9M0QicG9ydGxldC10aXRsZS10PQpleHQiIGNsYXNzPTNEInBvcnRsZXQtdGl0bGUtdGV4
dCI+JytkLnRpdGxlKyI8L3NwYW4+PC9kaXY+PC9kaXY+In1jKz0zRCc8ZGk9CnYgaWQ9M0QicG9y
dGxldC1jb250ZW50IiBjbGFzcz0zRCJwb3J0bGV0LWNvbnRlbnQiPic7aWYoZC5wbGFjZW1lbnQ9
M0Q9M0QidD0Kb3AiKXtjKz0zRCc8ZGl2IGlkPTNEImJ1dHRvbnMiIGNsYXNzPTNEImJ1dHRvbnMi
PjwvZGl2Pid9Yys9M0QnPGRpdiBpZD0zRCJjPQpvbnRlbnQiIGNsYXNzPTNEImNvbnRlbnQiPjwv
ZGl2Pic7aWYoZC5wbGFjZW1lbnQ9M0Q9M0QiYm90dG9tIil7Yys9M0QnPGRpdiA9CmlkPTNEImJ1
dHRvbnMiIGNsYXNzPTNEImJ1dHRvbnMiPjwvZGl2Pid9Yys9M0QiPC9kaXY+PC9kaXY+IjtyZXR1
cm4gY319KTtyZT0KdHVybntWaWV3OmJ9fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQor
ZGVmaW5lKFsidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihhKXt2YXIgYj0zREJhY2tib25lLlZpZXcu
ZXh0ZW5kKHt2aXNpYmxlOmY9CmFsc2Usb3B0aW9uc0RlZmF1bHQ6e3RpdGxlOiIiLGljb246IiIs
YnV0dG9uczpudWxsLGJvZHk6bnVsbCxzY3JvbGxhYmxlOnRydT0KZSxub3BhZGRpbmc6ZmFsc2Us
b3BlcmF0aW9uczpudWxsLHBsYWNlbWVudDoiYm90dG9tIixjbHM6InVpLXBvcnRsZXQiLG9wZXJh
PQp0aW9uc19mbHQ6InJpZ2h0In0sJHRpdGxlOm51bGwsJGNvbnRlbnQ6bnVsbCwkYnV0dG9uczpu
dWxsLCRvcGVyYXRpb25zOm51bGw9CiwkaGVhZGVyOm51bGwsaW5pdGlhbGl6ZTpmdW5jdGlvbihl
KXt0aGlzLm9wdGlvbnM9M0RhLm1lcmdlKGUsdGhpcy5vcHRpb25zRD0KZWZhdWx0KTt0aGlzLnNl
dEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSk7dGhpcy4kY29udGVudD0zRHRo
aXMuPQokZWwuZmluZCgiLmNvbnRlbnQiKTt0aGlzLiR0aXRsZT0zRHRoaXMuJGVsLmZpbmQoIi5w
b3J0bGV0LXRpdGxlLXRleHQiKTt0aGk9CnMuJGhlYWRlcj0zRHRoaXMuJGVsLmZpbmQoIi5wb3J0
bGV0LWhlYWRlciIpO3ZhciBkPTNEdGhpcy4kZWwuZmluZCgiLnBvcnRsZT0KdC1jb250ZW50Iik7
aWYoIXRoaXMub3B0aW9ucy5zY3JvbGxhYmxlKXtpZih0aGlzLm9wdGlvbnMudGl0bGUpe2QuYWRk
Q2xhc3MoPQoibm8tc2Nyb2xsIil9ZWxzZXtkLmFkZENsYXNzKCJuby1zY3JvbGwtbm8tdGl0bGUi
KX19ZWxzZXtkLmFkZENsYXNzKCJzY3JvbGw9CiIpfWlmKHRoaXMub3B0aW9ucy5ub3BhZGRpbmcp
e2QuY3NzKCJwYWRkaW5nIiwiMHB4Iik7dGhpcy4kY29udGVudC5jc3MoInBhZD0KZGluZyIsIjBw
eCIpfXRoaXMuJGJ1dHRvbnM9M0QkKHRoaXMuZWwpLmZpbmQoIi5idXR0b25zIik7aWYodGhpcy5v
cHRpb25zLmJ1PQp0dG9ucyl7dmFyIGM9M0R0aGlzOyQuZWFjaCh0aGlzLm9wdGlvbnMuYnV0dG9u
cyxmdW5jdGlvbihmLGcpe2cuJGVsLnByb3AoImk9CmQiLGYpO2MuJGJ1dHRvbnMuYXBwZW5kKGcu
JGVsKX0pfWVsc2V7dGhpcy4kYnV0dG9ucy5yZW1vdmUoKX10aGlzLiRvcGVyYXRpbz0KbnM9M0Qk
KHRoaXMuZWwpLmZpbmQoIi5vcGVyYXRpb25zIik7aWYodGhpcy5vcHRpb25zLm9wZXJhdGlvbnMp
e3ZhciBjPTNEdGhpPQpzOyQuZWFjaCh0aGlzLm9wdGlvbnMub3BlcmF0aW9ucyxmdW5jdGlvbihm
LGcpe2cuJGVsLnByb3AoImlkIixmKTtjLiRvcGVyYXQ9CmlvbnMuYXBwZW5kKGcuJGVsKX0pfWlm
KHRoaXMub3B0aW9ucy5ib2R5KXt0aGlzLmFwcGVuZCh0aGlzLm9wdGlvbnMuYm9keSl9fT0KLGFw
cGVuZDpmdW5jdGlvbihkLGMpe2lmKGMpe3RoaXMuJGNvbnRlbnQuYXBwZW5kKGQpfWVsc2V7dGhp
cy4kY29udGVudC5hcHBlPQpuZChhLndyYXAoZCkpfX0sY29udGVudDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLiRjb250ZW50fSxzaG93OmZ1bmN0aW9uKCl7dGg9CmlzLiRlbC5mYWRlSW4oImZhc3Qi
KTt0aGlzLnZpc2libGU9M0R0cnVlfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy4kZWwuZmFkZU91dD0K
KCJmYXN0Iik7dGhpcy52aXNpYmxlPTNEZmFsc2V9LGVuYWJsZUJ1dHRvbjpmdW5jdGlvbihjKXt0
aGlzLiRidXR0b25zLmZpbmQoPQoiIyIrYykucHJvcCgiZGlzYWJsZWQiLGZhbHNlKX0sZGlzYWJs
ZUJ1dHRvbjpmdW5jdGlvbihjKXt0aGlzLiRidXR0b25zLmZpbmQ9CigiIyIrYykucHJvcCgiZGlz
YWJsZWQiLHRydWUpfSxoaWRlT3BlcmF0aW9uOmZ1bmN0aW9uKGMpe3RoaXMuJG9wZXJhdGlvbnMu
Zj0KaW5kKCIjIitjKS5oaWRlKCl9LHNob3dPcGVyYXRpb246ZnVuY3Rpb24oYyl7dGhpcy4kb3Bl
cmF0aW9ucy5maW5kKCIjIitjKS5zPQpob3coKX0sc2V0T3BlcmF0aW9uOmZ1bmN0aW9uKGUsZCl7
dmFyIGM9M0R0aGlzLiRvcGVyYXRpb25zLmZpbmQoIiMiK2UpO2Mub2Y9CmYoImNsaWNrIik7Yy5v
bigiY2xpY2siLGQpfSx0aXRsZTpmdW5jdGlvbihkKXt2YXIgYz0zRHRoaXMuJHRpdGxlO2lmKGQp
e2MuaD0KdG1sKGQpfXJldHVybiBjLmh0bWwoKX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGQpe3ZhciBj
PTNEJzxkaXYgaWQ9M0QiJytkLmlkKyciPQogY2xhc3M9M0QiJytkLmNscysnIj4nO2lmKGQudGl0
bGUpe2MrPTNEJzxkaXYgY2xhc3M9M0QicG9ydGxldC1oZWFkZXIiPjxkaXY9CiBjbGFzcz0zRCJv
cGVyYXRpb25zIiBzdHlsZT0zRCJmbG9hdDogJytkLm9wZXJhdGlvbnNfZmx0Kyc7Ij48L2Rpdj48
ZGl2IGNsYT0Kc3M9M0QicG9ydGxldC10aXRsZSI+JztpZihkLmljb24pe2MrPTNEJzxpIGNsYXNz
PTNEImljb24gZmEgJytkLmljb24rJyI+Jm5iPQpzcDs8L2k+J31jKz0zRCc8c3BhbiBjbGFzcz0z
RCJwb3J0bGV0LXRpdGxlLXRleHQiPicrZC50aXRsZSsiPC9zcGFuPjwvZGl2Pjw9Ci9kaXY+In1j
Kz0zRCc8ZGl2IGNsYXNzPTNEInBvcnRsZXQtY29udGVudCI+JztpZihkLnBsYWNlbWVudD0zRD0z
RCJ0b3AiKXtjKz0KPTNEJzxkaXYgY2xhc3M9M0QiYnV0dG9ucyI+PC9kaXY+J31jKz0zRCc8ZGl2
IGNsYXNzPTNEImNvbnRlbnQiPjwvZGl2Pic7aWYoPQpkLnBsYWNlbWVudD0zRD0zRCJib3R0b20i
KXtjKz0zRCc8ZGl2IGNsYXNzPTNEImJ1dHRvbnMiPjwvZGl2Pid9Yys9M0QiPC9kaXY9Cj48L2Rp
dj4iO3JldHVybiBjfX0pO3JldHVybntWaWV3OmJ9fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQoKZGlmZiAtciAxNTk2MmIzZDlhYWMwNjFlOTU0MWY4MTc1YzhkMmUyYmM0YmE1Y2FiIC1y
IDJlOTkwY2FlZmM5NDNlYjJiMWQ0YTk0PQphZjUwOGMyMmJiMzRiN2ZhNiBzdGF0aWMvc3R5bGUv
Ymx1ZS9iYXNlLmNzcwotLS0gYS9zdGF0aWMvc3R5bGUvYmx1ZS9iYXNlLmNzcworKysgYi9zdGF0
aWMvc3R5bGUvYmx1ZS9iYXNlLmNzcwpAQCAtMTM4OSw3ICsxMzg5LDcgQEAKIC51cGxvYWQtZnRw
IC51cGxvYWQtZnRwLWhlbHB7bWFyZ2luLWJvdHRvbToxMHB4fQogLnVwbG9hZC1mdHAgLnVwbG9h
ZC1mdHAtd2FybmluZ3t0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tdG9wOjIwcHh9CiAudXBsb2Fk
LXNldHRpbmdzIC51cGxvYWQtc2V0dGluZ3MtY292ZXJ7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6
MTAwJTtoZWlnaD0KdDoxMDAlO3RvcDowcHg7bGVmdDowcHg7YmFja2dyb3VuZDojZmZmO29wYWNp
dHk6MC40O2N1cnNvcjpuby1kcm9wfQotLm5vLWhpZ2hsaWdodCwudWktYnV0dG9uLWljb24sLnVp
LXBvcnRsZXQsLnVpLXBvcnRsZXQtc2xpbSwudWktcG9ydGxldC1yZXA9CmVhdHstd2Via2l0LXVz
ZXItc2VsZWN0Om5vbmU7LW1vei11c2VyLXNlbGVjdDpub25lOy1raHRtbC11c2VyLXNlbGVjdDpu
b25lOz0KLW1zLXVzZXItc2VsZWN0Om5vbmU7fQorLm5vLWhpZ2hsaWdodCwudWktYnV0dG9uLWlj
b24sLnVpLXBvcnRsZXQsLnVpLXBvcnRsZXQtc2xpbSwudWktcG9ydGxldC1yZXA9CmVhdCwudWkt
cG9ydGxldC1zZWN0aW9uey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0
Om5vbmU7LWtodD0KbWwtdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt9CiAu
dWktZXJyb3J7LW1vei1ib3JkZXItcmFkaXVzOjNweDtib3JkZXItcmFkaXVzOjNweDtiYWNrZ3Jv
dW5kOiNmOWM3YzU7cGFkZD0KaW5nOjVweH0KIC51aS10YWJsZS1mb3JtLWVycm9ye2Rpc3BsYXk6
bm9uZX0udWktdGFibGUtZm9ybS1lcnJvciAudWktdGFibGUtZm9ybS1lcnJvPQpyLXRleHR7cGFk
ZGluZy1sZWZ0OjVweH0KIC51aS10YWJsZSB0Ym9keXtjdXJzb3I6cG9pbnRlcn0KQEAgLTE0MDQs
NyArMTQwNCw3IEBACiAudWktbGFiZWx7Zm9udC13ZWlnaHQ6Ym9sZH0KIC51aS1tZXNzYWdle3Bh
ZGRpbmc6MnB4IDEwcHggMnB4IDEwcHg7bWFyZ2luLWJvdHRvbTo1cHh9CiAudWktaWNvbntmb250
LXNpemU6MS4yZW19Ci0udWktYnV0dG9uLWljb257bWFyZ2luLXJpZ2h0OjVweH0udWktYnV0dG9u
LWljb24gdWwgaXtmb250LXNpemU6MS4yZW07bWFyZz0KaW4tcmlnaHQ6NXB4O3Bvc2l0aW9uOnJl
bGF0aXZlO3RvcDoxcHh9CisudWktYnV0dG9uLWljb257bWFyZ2luLXJpZ2h0OjVweDtoZWlnaHQ6
YXV0byAhaW1wb3J0YW50fS51aS1idXR0b24taWNvbiB1bD0KIGl7Zm9udC1zaXplOjEuMmVtO21h
cmdpbi1yaWdodDo1cHg7cG9zaXRpb246cmVsYXRpdmU7dG9wOjFweH0KIC51aS1idXR0b24taWNv
biAuYnV0dG9ue21hcmdpbi1yaWdodDo1cHg7bWFyZ2luLWxlZnQ6NXB4fS51aS1idXR0b24taWNv
biAuPQpidXR0b24gLnRpdGxle3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZTowLjhlbTtmb250
LXdlaWdodDpub3JtYWw7dG9wOi0xcHh9CiAudWktYnV0dG9uLWljb24gLmJ1dHRvbi5kaXNhYmxl
ZHtmaWx0ZXI6YWxwaGEob3BhY2l0eT0zRDY1KTtvcGFjaXR5Oi42NTstbT0Kcy1maWx0ZXI6cHJv
Z2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9M0Q2NSk7ZmlsdGVy
OmFscGhhPQoob3BhY2l0eT0zRDY1KX0KIC51aS1idXR0b24tbWVudSAuZHJvcGRvd24tbWVudXtt
aW4td2lkdGg6NTBweH0KQEAgLTE0MTIsMTQgKzE0MTIsMTUgQEAKIC51aS1idXR0b24taWNvbi1w
bGFpbntib3JkZXI6bm9uZSAhaW1wb3J0YW50O2JhY2tncm91bmQ6bm9uZSAhaW1wb3J0YW50O2hl
PQppZ2h0OmluaGVyaXQgIWltcG9ydGFudDt3aWR0aDppbmhlcml0ICFpbXBvcnRhbnQ7cGFkZGlu
Zy1yaWdodDozcHggIWltcG9ydGE9Cm50fQogLnVpLXRhYnMgLnVpLXRhYnMtYWRke2ZvbnQtc2l6
ZTowLjhlbTttYXJnaW4tcmlnaHQ6NXB4fQogLnVpLXRhYnMgLnVpLXRhYnMtZGVsZXRle2ZvbnQt
c2l6ZTowLjhlbTttYXJnaW4tbGVmdDo1cHg7Y3Vyc29yOnBvaW50ZXJ9Ci0udWktcG9ydGxldCwu
dWktcG9ydGxldC1zbGltLC51aS1wb3J0bGV0LXJlcGVhdCwudWktcG9ydGxldC1zbGltLC51aS1w
b3J0bD0KZXQtcmVwZWF0e2JvcmRlcjpzb2xpZCAjZDZiMTYxIDFweDstd2Via2l0LWJvcmRlci1y
YWRpdXM6M3B4Oy1tb3otYm9yZGVyLXJhPQpkaXVzOjNweDtib3JkZXItcmFkaXVzOjNweDtwb3Np
dGlvbjpyZWxhdGl2ZTtjbGVhcjpib3RoO3dpZHRoOmF1dG87aGVpZ2h0OjE9CjAwJX0udWktcG9y
dGxldCAucG9ydGxldC1oZWFkZXIsLnVpLXBvcnRsZXQtc2xpbSAucG9ydGxldC1oZWFkZXJ7YmFj
a2dyb3VuZD0KOiNlYmQ5YjI7Ym9yZGVyLWJvdHRvbTpzb2xpZCAjZDZiMTYxIDFweDtwYWRkaW5n
OjJweCA4cHg7b3ZlcmZsb3c6dmlzaWJsZTtmPQpsb2F0OnJpZ2h0O3dpZHRoOjEwMCV9LnVpLXBv
cnRsZXQgLnBvcnRsZXQtaGVhZGVyIC5wb3J0bGV0LXRpdGxlLC51aS1wb3J0bGU9CnQtc2xpbSAu
cG9ydGxldC1oZWFkZXIgLnBvcnRsZXQtdGl0bGV7ZGlzcGxheTppbmxpbmU7dmVydGljYWwtYWxp
Z246bWlkZGxlfT0KLnVpLXBvcnRsZXQgLnBvcnRsZXQtaGVhZGVyIC5wb3J0bGV0LXRpdGxlIC5w
b3J0bGV0LXRpdGxlLXRleHQsLnVpLXBvcnRsZXQtPQpzbGltIC5wb3J0bGV0LWhlYWRlciAucG9y
dGxldC10aXRsZSAucG9ydGxldC10aXRsZS10ZXh0e3ZlcnRpY2FsLWFsaWduOm1pZGQ9CmxlfQor
LnVpLXBvcnRsZXQsLnVpLXBvcnRsZXQtc2xpbSwudWktcG9ydGxldC1yZXBlYXQsLnVpLXBvcnRs
ZXQtc2VjdGlvbiwudWktcG89CnJ0bGV0LXNsaW0sLnVpLXBvcnRsZXQtcmVwZWF0LC51aS1wb3J0
bGV0LXNlY3Rpb257Ym9yZGVyOnNvbGlkICNkNmIxNjEgMXB4Oz0KLXdlYmtpdC1ib3JkZXItcmFk
aXVzOjNweDstbW96LWJvcmRlci1yYWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O3Bvc2l0aW9u
PQo6cmVsYXRpdmU7Y2xlYXI6Ym90aDt3aWR0aDphdXRvO2hlaWdodDoxMDAlfS51aS1wb3J0bGV0
IC5wb3J0bGV0LWhlYWRlciwudWk9Ci1wb3J0bGV0LXNsaW0gLnBvcnRsZXQtaGVhZGVye2JhY2tn
cm91bmQ6I2ViZDliMjtib3JkZXItYm90dG9tOnNvbGlkICNkNmIxNj0KMSAxcHg7cGFkZGluZzoy
cHggOHB4O292ZXJmbG93OnZpc2libGU7ZmxvYXQ6cmlnaHQ7d2lkdGg6MTAwJX0udWktcG9ydGxl
dCAuPQpwb3J0bGV0LWhlYWRlciAucG9ydGxldC10aXRsZSwudWktcG9ydGxldC1zbGltIC5wb3J0
bGV0LWhlYWRlciAucG9ydGxldC10aXQ9Cmxle2Rpc3BsYXk6aW5saW5lO3ZlcnRpY2FsLWFsaWdu
Om1pZGRsZX0udWktcG9ydGxldCAucG9ydGxldC1oZWFkZXIgLnBvcnRsZT0KdC10aXRsZSAucG9y
dGxldC10aXRsZS10ZXh0LC51aS1wb3J0bGV0LXNsaW0gLnBvcnRsZXQtaGVhZGVyIC5wb3J0bGV0
LXRpdGxlPQogLnBvcnRsZXQtdGl0bGUtdGV4dHt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9CiAudWkt
cG9ydGxldCAucG9ydGxldC1oZWFkZXIgLnBvcnRsZXQtdGl0bGUgLmljb24sLnVpLXBvcnRsZXQt
c2xpbSAucG9ydGxldD0KLWhlYWRlciAucG9ydGxldC10aXRsZSAuaWNvbntmb250LXNpemU6MS4y
ZW07dmVydGljYWwtYWxpZ246bWlkZGxlfQogLnVpLXBvcnRsZXQgLnBvcnRsZXQtYnV0dG9ucywu
dWktcG9ydGxldC1zbGltIC5wb3J0bGV0LWJ1dHRvbnN7aGVpZ2h0OjUwcHg9CjtwYWRkaW5nOjEw
cHh9CiAudWktcG9ydGxldCAucG9ydGxldC1jb250ZW50LC51aS1wb3J0bGV0LXNsaW0gLnBvcnRs
ZXQtY29udGVudHtoZWlnaHQ6aW5oZT0Kcml0O3BhZGRpbmc6MTBweDtjbGVhcjpib3RofS51aS1w
b3J0bGV0IC5wb3J0bGV0LWNvbnRlbnQgLmNvbnRlbnQsLnVpLXBvcnRsPQpldC1zbGltIC5wb3J0
bGV0LWNvbnRlbnQgLmNvbnRlbnR7cGFkZGluZzoxMHB4O2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9
LnVpLXA9Cm9ydGxldCAucG9ydGxldC1jb250ZW50IC5jb250ZW50IC5idXR0b25zLC51aS1wb3J0
bGV0LXNsaW0gLnBvcnRsZXQtY29udGVudD0KIC5jb250ZW50IC5idXR0b25ze2hlaWdodDo1MHB4
O3BhZGRpbmc6MTBweH0KIC51aS1wb3J0bGV0IC5uby1zY3JvbGwsLnVpLXBvcnRsZXQtc2xpbSAu
bm8tc2Nyb2xse2hlaWdodDpjYWxjKDEwMCUgLSA4MHB4PQopfQogLnVpLXBvcnRsZXQtc2xpbXtt
YXgtd2lkdGg6OTAwcHh9Ci0udWktcG9ydGxldC1yZXBlYXR7Ym9yZGVyOm5vbmU7Ym9yZGVyLWxl
ZnQ6c29saWQgM3B4ICNlYmQ5YjI7Ym9yZGVyLXJhZGl1cz0KOjVweH0udWktcG9ydGxldC1yZXBl
YXQgLnBvcnRsZXQtaGVhZGVye2JhY2tncm91bmQ6I2ViZDliMjtib3JkZXItcmFkaXVzOjNwPQp4
O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MHB4O3BhZGRpbmc6MHB4IDJweH0KLS51aS1wb3J0
bGV0LXJlcGVhdCAucG9ydGxldC1jb250ZW50e3BhZGRpbmc6MHB4fS51aS1wb3J0bGV0LXJlcGVh
dCAucG9ydGxlPQp0LWNvbnRlbnQgLmNvbnRlbnR7cGFkZGluZzowcHg7cGFkZGluZy1sZWZ0OjEw
cHh9CisudWktcG9ydGxldC1yZXBlYXQsLnVpLXBvcnRsZXQtc2VjdGlvbiwudWktcG9ydGxldC1z
ZWN0aW9ue2JvcmRlcjpub25lO2Jvcj0KZGVyLWxlZnQ6c29saWQgM3B4ICNlYmQ5YjI7Ym9yZGVy
LXJhZGl1czo1cHh9LnVpLXBvcnRsZXQtcmVwZWF0IC5wb3J0bGV0LWhlPQphZGVyLC51aS1wb3J0
bGV0LXNlY3Rpb24gLnBvcnRsZXQtaGVhZGVye2JhY2tncm91bmQ6I2ViZDliMjtib3JkZXItcmFk
aXVzOjM9CnB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MHB4O3BhZGRpbmc6MHB4IDJweH0K
Ky51aS1wb3J0bGV0LXJlcGVhdCAucG9ydGxldC1jb250ZW50LC51aS1wb3J0bGV0LXNlY3Rpb24g
LnBvcnRsZXQtY29udGVudHtwPQphZGRpbmc6MHB4fS51aS1wb3J0bGV0LXJlcGVhdCAucG9ydGxl
dC1jb250ZW50IC5jb250ZW50LC51aS1wb3J0bGV0LXNlY3Rpb249CiAucG9ydGxldC1jb250ZW50
IC5jb250ZW50e3BhZGRpbmc6MHB4O3BhZGRpbmctbGVmdDoxMHB4fQorLnVpLXBvcnRsZXQtc2Vj
dGlvbntib3JkZXItbGVmdDpzb2xpZCAzcHggI2RmZTVmOTtib3JkZXItcmFkaXVzOjVweH0udWkt
cG89CnJ0bGV0LXNlY3Rpb24gLnBvcnRsZXQtaGVhZGVye2JhY2tncm91bmQ6I2RmZTVmOTtib3Jk
ZXItYm90dG9tOnNvbGlkICNiNGMyZj0KMSAxcHh9CiAudWktcG9wb3ZlcnttYXgtd2lkdGg6NzAw
cHg7ZGlzcGxheTpub25lfS51aS1wb3BvdmVyIC5wb3BvdmVyLWNsb3Nle3Bvc2l0aT0Kb246YWJz
b2x1dGU7cmlnaHQ6MTBweDt0b3A6N3B4O2ZvbnQtc2l6ZToxLjJlbTtjdXJzb3I6cG9pbnRlcn0K
IC51aS1wb3BvdmVyIC5wb3BvdmVyLXRpdGxle3BhZGRpbmc6NHB4IDEwcHh9CiAudWktaW5wdXQs
LnVpLXRleHRhcmVhLC51aS1vcHRpb25zLC51aS1mb3JtLXNsaWRlciAudWktZm9ybS1zbGlkZXIt
dGV4dCwudT0KaS1zZWxlY3QtbXVsdGlwbGUsLnVpLXRleHRhcmVhLC51aS1vcHRpb25zLC51aS1m
b3JtLXNsaWRlciAudWktZm9ybS1zbGlkZXItPQp0ZXh0LC51aS1zZWxlY3QtbXVsdGlwbGV7YmFj
a2dyb3VuZDp0cmFuc3BhcmVudH0KQEAgLTE3NDIsNyArMTc0Myw3IEBACiAjbWFzdGhlYWQgbGku
ZHJvcGRvd24+YTpob3ZlciAuY2FyZXR7Ym9yZGVyLXRvcC1jb2xvcjpnb2xkO2JvcmRlci1ib3R0
b20tYz0Kb2xvcjpnb2xkfQogI21hc3RoZWFkIC5uYXZiYXItYnJhbmR7cG9zaXRpb246YWJzb2x1
dGU7bGVmdDowO3RvcDowO2ZvbnQtZmFtaWx5OnZlcmRhbmE9Cjtmb250LXdlaWdodDpib2xkO2Zv
bnQtc2l6ZToyMHB4O2xpbmUtaGVpZ2h0OjE7Y29sb3I6d2hpdGU7cGFkZGluZzo1cHggMjBweD0K
IDEycHg7bWFyZ2luLWxlZnQ6LTE1cHg7ei1pbmRleDoyMDAwfSNtYXN0aGVhZCAubmF2YmFyLWJy
YW5kIGltZ3tkaXNwbGF5OmluPQpsaW5lO3dpZHRoOjI2cHg7dmVydGljYWwtYWxpZ246dG9wfQog
I21hc3RoZWFkIC5uYXZiYXItYnJhbmQgYXtjb2xvcjp3aGl0ZTt0ZXh0LWRlY29yYXRpb246bm9u
ZX0KLSNtYXN0aGVhZCAuaWNvbmJhcntwb3NpdGlvbjphYnNvbHV0ZTt0b3A6N3B4O3JpZ2h0OjEx
MHB4O2N1cnNvcjpwb2ludGVyO2NvPQpsb3I6Izk5OTtvdmVyZmxvdzpoaWRkZW59I21hc3RoZWFk
IC5pY29uYmFyIC5zeW1ib2x7ZmxvYXQ6bGVmdDttYXJnaW46MHB4IDE9CjBweDtoZWlnaHQ6MjZw
eDtmb250LXNpemU6MTFweH0KKyNtYXN0aGVhZCAuaWNvbmJhcntwb3NpdGlvbjphYnNvbHV0ZTt0
b3A6N3B4O3JpZ2h0OjExMHB4O2N1cnNvcjpwb2ludGVyO2NvPQpsb3I6Izk5OTtvdmVyZmxvdzpo
aWRkZW59I21hc3RoZWFkIC5pY29uYmFyIC5zeW1ib2x7ZmxvYXQ6bGVmdDttYXJnaW46MHB4IDE9
CjBweDtmb250LXNpemU6MTFweH0KICNtYXN0aGVhZCAuaWNvbmJhciAuc3ltYm9sIC5udW1iZXJ7
Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXNpemU6MTBweDtmb250LWZhPQptaWx5OiJMdWNpZGEgR3Jh
bmRlIix2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zLXNlcmlmO3Bvc2l0aW9uOnJlbGF0aXZl
O2w9CmVmdDoyM3B4O3RvcDotMTJweH0KICNtYXN0aGVhZCAuaWNvbmJhciAudG9nZ2xle2NvbG9y
OmdvbGR9CiAucXVvdGEtbWV0ZXItY29udGFpbmVye3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3Jp
Z2h0OjA7aGVpZ2h0OjMycHh9CgpkaWZmIC1yIDE1OTYyYjNkOWFhYzA2MWU5NTQxZjgxNzVjOGQy
ZTJiYzRiYTVjYWIgLXIgMmU5OTBjYWVmYzk0M2ViMmIxZDRhOTQ9CmFmNTA4YzIyYmIzNGI3ZmE2
IHN0YXRpYy9zdHlsZS9zcmMvbGVzcy9iYXNlLmxlc3MKLS0tIGEvc3RhdGljL3N0eWxlL3NyYy9s
ZXNzL2Jhc2UubGVzcworKysgYi9zdGF0aWMvc3R5bGUvc3JjL2xlc3MvYmFzZS5sZXNzCkBAIC00
MzUsNyArNDM1LDYgQEAKICAgICAgICAgewogICAgICAgICAgICAgZmxvYXQgICAgICAgICAgIDog
bGVmdDsKICAgICAgICAgICAgIG1hcmdpbiAgICAgICAgICA6IDBweCAxMHB4OwotICAgICAgICAg
ICAgaGVpZ2h0ICAgICAgICAgIDogMjZweDsKICAgICAgICAgICAgIGZvbnQtc2l6ZSAgICAgICA6
IDExcHg7CiAgICAgICAgIH0KPTIwCgpkaWZmIC1yIDE1OTYyYjNkOWFhYzA2MWU5NTQxZjgxNzVj
OGQyZTJiYzRiYTVjYWIgLXIgMmU5OTBjYWVmYzk0M2ViMmIxZDRhOTQ9CmFmNTA4YzIyYmIzNGI3
ZmE2IHN0YXRpYy9zdHlsZS9zcmMvbGVzcy91aS5sZXNzCi0tLSBhL3N0YXRpYy9zdHlsZS9zcmMv
bGVzcy91aS5sZXNzCisrKyBiL3N0YXRpYy9zdHlsZS9zcmMvbGVzcy91aS5sZXNzCkBAIC05Miw2
ICs5Miw3IEBACiAgICAgJjpleHRlbmQoLmljb24tYnRuKTsKICAgICAmOmV4dGVuZCgubm8taGln
aGxpZ2h0KTsKICAgICBtYXJnaW4tcmlnaHQ6IDVweDsKKyAgICBoZWlnaHQ6IGF1dG8gIWltcG9y
dGFudDsKICAgICB1bCB7CiAgICAgICAgIGkgewogICAgICAgICAgICAgZm9udC1zaXplOiAxLjJl
bTsgbWFyZ2luLXJpZ2h0OiA1cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgdG9wOiA9CjFweDsKQEAg
LTIyOCw2ICsyMjksMTYgQEAKICAgICB9CiB9Cj0yMAorLnVpLXBvcnRsZXQtc2VjdGlvbiB7Cisg
ICAgJjpleHRlbmQoLnVpLXBvcnRsZXQtcmVwZWF0IGFsbCk7CisgICAgYm9yZGVyLWxlZnQ6IHNv
bGlkIDNweCBAc2lkZS1wYW5lbC1iZzsKKyAgICBib3JkZXItcmFkaXVzOiA1cHg7CisgICAgLnBv
cnRsZXQtaGVhZGVyIHsKKyAgICAgICAgYmFja2dyb3VuZDogQHNpZGUtcGFuZWwtYmc7CisgICAg
ICAgIGJvcmRlci1ib3R0b206IHNvbGlkIGRhcmtlbihAc2lkZS1wYW5lbC1iZywgMTAlKSAxcHg7
CisgICAgfQorfQorCiAudWktcG9wb3ZlciB7CiAgICAgbWF4LXdpZHRoOiA3MDBweDsKICAgICBk
aXNwbGF5OiBub25lOwoKZGlmZiAtciAxNTk2MmIzZDlhYWMwNjFlOTU0MWY4MTc1YzhkMmUyYmM0
YmE1Y2FiIC1yIDJlOTkwY2FlZmM5NDNlYjJiMWQ0YTk0PQphZjUwOGMyMmJiMzRiN2ZhNiB0ZW1w
bGF0ZXMvd2ViYXBwcy9nYWxheHkvd29ya2Zsb3cvZWRpdG9yLm1ha28KLS0tIGEvdGVtcGxhdGVz
L3dlYmFwcHMvZ2FsYXh5L3dvcmtmbG93L2VkaXRvci5tYWtvCisrKyBiL3RlbXBsYXRlcy93ZWJh
cHBzL2dhbGF4eS93b3JrZmxvdy9lZGl0b3IubWFrbwpAQCAtMzIsNiArMzIsOSBAQAogICAgIDwh
W2VuZGlmXS0tPjxzY3JpcHQgdHlwZT0zRCd0ZXh0L2phdmFzY3JpcHQnPgorICAgICAgICAvLyBT
d2l0Y2ggZm9yIG5ldyB0b29sIGZvcm0KKyAgICAgICAgX19ORVdUT09MRk9STV9fID0zRCBmYWxz
ZTsKKyAgICAgICA9MjAKICAgICAgICAgLy8gR2xvYmFscwogICAgICAgICB3b3JrZmxvdyA9M0Qg
bnVsbDsKICAgICAgICAgY2FudmFzX21hbmFnZXIgPTNEIG51bGw7CgpkaWZmIC1yIDE1OTYyYjNk
OWFhYzA2MWU5NTQxZjgxNzVjOGQyZTJiYzRiYTVjYWIgLXIgMmU5OTBjYWVmYzk0M2ViMmIxZDRh
OTQ9CmFmNTA4YzIyYmIzNGI3ZmE2IHRlbXBsYXRlcy93ZWJhcHBzL2dhbGF4eS93b3JrZmxvdy9l
ZGl0b3JfdG9vbF9mb3JtLm1ha28KLS0tIGEvdGVtcGxhdGVzL3dlYmFwcHMvZ2FsYXh5L3dvcmtm
bG93L2VkaXRvcl90b29sX2Zvcm0ubWFrbworKysgYi90ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkv
d29ya2Zsb3cvZWRpdG9yX3Rvb2xfZm9ybS5tYWtvCkBAIC0xOCwxOCArMTgsMTIgQEAKICAgICAg
ICAgfSkKICAgICAlPjxzY3JpcHQ+Ci0gICAgICAgIHBhcmVudC5fX05FV1RPT0xGT1JNX18gPTNE
IHRydWU7CiAgICAgICAgIHJlcXVpcmUoWydtdmMvdG9vbHMvdG9vbHMtZm9ybS13b3JrZmxvdydd
LCBmdW5jdGlvbihUb29sc0Zvcm0pewogICAgICAgICAgICAkKGZ1bmN0aW9uKCl7CiAgICAgICAg
ICAgICAgICAgdmFyIGZvcm0gPTNEIG5ldyBUb29sc0Zvcm0uVmlldygkeyBoLmR1bXBzKHNlbGYu
Zm9ybV9jb25maT0KZykgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgPC9z
Y3JpcHQ+Ci0gICAgPGZvcm0gbWV0aG9kPTNEInBvc3QiIGFjdGlvbj0zRCIke2gudXJsX2Zvcihj
b250cm9sbGVyPTNEJ3dvcmtmbG93JywgYT0KY3Rpb249M0QnZWRpdG9yX2Zvcm1fcG9zdCcgKX0i
PgotICAgICAgICA8ZGl2IGNsYXNzPTNEInRvb2xGb3JtIj4KLSAgICAgICAgICAgIDxpbnB1dCB0
eXBlPTNEImhpZGRlbiIgbmFtZT0zRCJ0b29sX2lkIiB2YWx1ZT0zRCIke3Rvb2wuaWR9IiAvPgot
ICAgICAgICA8L2Rpdj4KLSAgICA8L2Zvcm0+CiAlZWxzZToKICAgICA8JQogICAgIGZyb20gZ2Fs
YXh5LnRvb2xzLnBhcmFtZXRlcnMgaW1wb3J0IERhdGFUb29sUGFyYW1ldGVyLCBSdW50aW1lVmFs
dWUKCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMv
NDI4ZTU4ZmNkMzNhLwpDaGFuZ2VzZXQ6ICAgNDI4ZTU4ZmNkMzNhClVzZXI6ICAgICAgICBjYXJs
ZmViZXJoYXJkCkRhdGU6ICAgICAgICAyMDE1LTAxLTEzIDE5OjAzOjM0KzAwOjAwClN1bW1hcnk6
ICAgICBBZGQgc3R1YmJlZCBtYW5hZ2VycyBmb3IgUGFnZXMgYW5kIFZpc3VhbGl6YXRpb25zOyBi
cmVhayBvdXQgYT0Kc3BlY3Qtb3JpZW50ZWQgbWl4aW5zIHRhZ2dhYmxlLCByYXRhYmxlLCBhbm5v
dGF0YWJsZTsgZGlmZmVyZW50aWF0ZSBidHduIHVzPQplciBkdXBsaWNhdGlvbiAoQ29uZmxpY3Qp
IGFuZCBzZXJ2ZXIgZGIgZHVwbGljYXRpb24gKEluY29uc2lzdGVudERhdGFiYXNlKSA9CmluIGR1
cGxpY2F0aW9uIGV4Y2VwdGlvbnMKQWZmZWN0ZWQgIzogIDExIGZpbGVzCgpkaWZmIC1yIDJlOTkw
Y2FlZmM5NDNlYjJiMWQ0YTk0YWY1MDhjMjJiYjM0YjdmYTYgLXIgNDI4ZTU4ZmNkMzNhOWY5MzQy
OTJmY2E9CmRhYzg0MGM3NTc4M2JjZDYyIGxpYi9nYWxheHkvbWFuYWdlcnMvYW5ub3RhdGFibGUu
cHkKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvZ2FsYXh5L21hbmFnZXJzL2Fubm90YXRhYmxlLnB5
CkBAIC0wLDAgKzEsNTAgQEAKKyIiIgorTWl4aW5zIGZvciBBbm5vdGF0YWJsZSBtb2RlbCBtYW5h
Z2VycyBhbmQgc2VyaWFsaXplcnMuCisiIiIKKworZnJvbSBnYWxheHkgaW1wb3J0IGV4Y2VwdGlv
bnMKK2Zyb20gZ2FsYXh5IGltcG9ydCBtb2RlbAorCitpbXBvcnQgbG9nZ2luZworbG9nID0zRCBs
b2dnaW5nLmdldExvZ2dlciggX19uYW1lX18gKQorCisKKyMgPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECitjbGFzcyBBbm5v
dGF0YWJsZU1hbmFnZXJJbnRlcmZhY2UoIG9iamVjdCApOgorICAgIGFubm90YXRpb25fYXNzb2Mg
PTNEIE5vbmUKKworICAgICNUT0RPOiBtb3N0IG9mIHRoaXMgc2VlbXMgdG8gYmUgY292ZXJlZCBi
eSBpdGVtX2F0dHJzLlVzZXNBbm5vdGF0aW9ucworCisKKyMgPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECitjbGFzcyBBbm5v
dGF0YWJsZVNlcmlhbGl6ZXIoIG9iamVjdCApOgorCisgICAgZGVmIGFkZF9zZXJpYWxpemVycygg
c2VsZiApOgorICAgICAgICBzZWxmLnNlcmlhbGl6ZXJzWyAnYW5ub3RhdGlvbicgXSA9M0Qgc2Vs
Zi5zZXJpYWxpemVfYW5ub3RhdGlvbgorCisgICAgZGVmIHNlcmlhbGl6ZV9hbm5vdGF0aW9uKCBz
ZWxmLCB0cmFucywgaXRlbSwga2V5ICk6CisgICAgICAgICIiIgorICAgICAgICBHZXQgYW5kIHNl
cmlhbGl6ZSBhbiBgaXRlbWAncyBhbm5vdGF0aW9uLgorICAgICAgICAiIiIKKyNUT0RPOiB3aGlj
aCBpcyBjb3JyZWN0IGhlcmU/CisgICAgICAgICN1c2VyID0zRCBpdGVtLnVzZXIKKyAgICAgICAg
dXNlciA9M0QgdHJhbnMudXNlcgorICAgICAgICBzYV9zZXNzaW9uID0zRCBzZWxmLmFwcC5tb2Rl
bC5jb250ZXh0CisgICAgICAgIHJldHVybiBpdGVtLmdldF9pdGVtX2Fubm90YXRpb25fc3RyKCBz
YV9zZXNzaW9uLCB1c2VyLCBpdGVtICkKKworCisjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRAorY2xhc3MgQW5ub3RhdGFi
bGVEZXNlcmlhbGl6ZXIoIG9iamVjdCApOgorCisgICAgZGVmIGFkZF9kZXNlcmlhbGl6ZXJzKCBz
ZWxmICk6CisgICAgICAgIHNlbGYuZGVzZXJpYWxpemVyc1sgJ3RhZ3MnIF0gPTNEIHNlbGYuZGVz
ZXJpYWxpemVfYW5ub3RhdGlvbgorCisgICAgZGVmIGRlc2VyaWFsaXplX2Fubm90YXRpb24oIHNl
bGYsIHRyYW5zLCBpdGVtLCBrZXksIHZhbCApOgorICAgICAgICAiIiIKKyAgICAgICAgTWFrZSBz
dXJlIGB2YWxgIGlzIGEgdmFsaWQgYW5ub3RhdGlvbiBhbmQgYXNzaWduIGl0LgorICAgICAgICAi
IiIKKyNUT0RPOiBubyB2YWxpZGF0ZSBoZXJlLi4uCisgICAgICAgIHZhbCA9M0Qgc2VsZi52YWxp
ZGF0ZS5udWxsYWJsZV9iYXNlc3RyaW5nKCBrZXksIHZhbCApCisgICAgICAgICNUT0RPOiBoYXZl
IHRvIGFzc3VtZSB0cmFucy51c2VyIGhlcmUuLi4KKyAgICAgICAgcmV0dXJuIGl0ZW0uYWRkX2l0
ZW1fYW5ub3RhdGlvbiggdHJhbnMuc2Ffc2Vzc2lvbiwgdHJhbnMudXNlciwgaXRlPQptLCB2YWwg
KQorCgpkaWZmIC1yIDJlOTkwY2FlZmM5NDNlYjJiMWQ0YTk0YWY1MDhjMjJiYjM0YjdmYTYgLXIg
NDI4ZTU4ZmNkMzNhOWY5MzQyOTJmY2E9CmRhYzg0MGM3NTc4M2JjZDYyIGxpYi9nYWxheHkvbWFu
YWdlcnMvYmFzZS5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL2Jhc2UucHkKKysrIGIvbGli
L2dhbGF4eS9tYW5hZ2Vycy9iYXNlLnB5CkBAIC0xNiw3ICsxNiw4IEBACj0yMAogIyA9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9
M0QKIGRlZiBzZWN1cml0eV9jaGVjayggdHJhbnMsIGl0ZW0sIGNoZWNrX293bmVyc2hpcD0zREZh
bHNlLCBjaGVja19hY2Nlc3NpYmxlPQo9M0RGYWxzZSApOgotICAgICIiIiBTZWN1cml0eSBjaGVj
a3MgZm9yIGFuIGl0ZW06IGNoZWNrcyBpZiAoYSkgdXNlciBvd25zIGl0ZW0gb3IgKGIpIGk9CnRl
bQorICAgICIiIgorICAgIFNlY3VyaXR5IGNoZWNrcyBmb3IgYW4gaXRlbTogY2hlY2tzIGlmIChh
KSB1c2VyIG93bnMgaXRlbSBvciAoYikgaXRlbQogICAgIGlzIGFjY2Vzc2libGUgdG8gdXNlci4g
VGhpcyBpcyBhIGdlbmVyaWMgbWV0aG9kIGZvciBkZWFsaW5nIHdpdGggb2JqZWM9CnRzCiAgICAg
dW5pZm9ybWx5IGZyb20gdGhlIG9sZGVyIGNvbnRyb2xsZXIgbWl4aW4gY29kZSAtIGhvd2V2ZXIg
d2hlbmV2ZXIgcG9zcz0KaWJsZQogICAgIHRoZSBtYW5hZ2VycyBmb3IgYSBwYXJ0aWN1bGFyIG1v
ZGVsIHNob3VsZCBiZSB1c2VkIHRvIHBlcmZvcm0gc2VjdXJpdHkKQEAgLTQ4LDcgKzQ5LDEwIEBA
Cj0yMAo9MjAKIGRlZiBnZXRfY2xhc3MoIGNsYXNzX25hbWUgKToKLSAgICAiIiIgUmV0dXJucyB0
aGUgY2xhc3Mgb2JqZWN0IHRoYXQgYSBzdHJpbmcgZGVub3Rlcy4gV2l0aG91dCB0aGlzIG1ldGhv
PQpkLCB3ZSdkIGhhdmUgdG8gZG8gZXZhbCg8Y2xhc3NfbmFtZT4pLiAiIiIKKyAgICAiIiIKKyAg
ICBSZXR1cm5zIHRoZSBjbGFzcyBvYmplY3QgdGhhdCBhIHN0cmluZyBkZW5vdGVzLiBXaXRob3V0
IHRoaXMgbWV0aG9kLCB3PQplJ2QgaGF2ZQorICAgIHRvIGRvIGV2YWwoPGNsYXNzX25hbWU+KS4K
KyAgICAiIiIKICAgICBpZiBjbGFzc19uYW1lID0zRD0zRCAnSGlzdG9yeSc6CiAgICAgICAgIGl0
ZW1fY2xhc3MgPTNEIG1vZGVsLkhpc3RvcnkKICAgICBlbGlmIGNsYXNzX25hbWUgPTNEPTNEICdI
aXN0b3J5RGF0YXNldEFzc29jaWF0aW9uJzoKQEAgLTE0OCw3ICsxNTIsNyBAQAogICAgICAgICBp
ZiBlYWdlcmxvYWRzIGlzIEZhbHNlOgogICAgICAgICAgICAgcXVlcnkgPTNEIHF1ZXJ5LmVuYWJs
ZV9lYWdlcmxvYWRzKCBGYWxzZSApCj0yMAotI1RPRE86IGlmIG5vbi1vcm0gZmlsdGVycyBhcmUg
dGhlIG9ubHkgb3B0aW9uLCBoZXJlIGlzIHdoZXJlIHRoZXknZCBnbworICAgICAgICAjVE9ETzog
aWYgbm9uLW9ybSBmaWx0ZXJzIGFyZSB0aGUgb25seSBvcHRpb24sIGhlcmUgaXMgd2hlcmUgdGhl
eSc9CmQgZ28KICAgICAgICAgcXVlcnkgPTNEIHNlbGYuX2FwcGx5X2ZpbHRlcnMoIHF1ZXJ5LCBm
aWx0ZXJzICkKICAgICAgICAgcXVlcnkgPTNEIHNlbGYuX2FwcGx5X29yZGVyX2J5X2xpbWl0X29m
ZnNldCggcXVlcnksIG9yZGVyX2J5LCBsaW1pPQp0LCBvZmZzZXQgKQogICAgICAgICByZXR1cm4g
cXVlcnkKQEAgLTE5OCw3ICsyMDIsNiBAQAogICAgICAgICBVc2UgdGhlIG1hbmFnZXIncyBkZWZh
dWx0X29yZGVyX2J5IGlmIG9yZGVyX2J5IGlzIE5vbmUuCiAgICAgICAgICIiIgogICAgICAgICBp
ZiBvcmRlcl9ieSBpcyBOb25lOgotICAgICAgICAgICAgI1RPRE86IGFsbG93IG5vbi10dXBsZSBk
ZWZhdWx0X29yZGVyX2J5CiAgICAgICAgICAgICByZXR1cm4gcXVlcnkub3JkZXJfYnkoICpzZWxm
LmRlZmF1bHRfb3JkZXJfYnkgKQo9MjAKICAgICAgICAgaWYgaXNpbnN0YW5jZSggb3JkZXJfYnks
ICggbGlzdCwgdHVwbGUgKSApOgpAQCAtMjI5LDIyICsyMzIsMjEgQEAKICAgICAgICAgQ2FsbCBz
cWxhbGNoZW15J3Mgb25lIGFuZCByZWNhc3QgZXJyb3JzIHRvIHNlcmlhbGl6YWJsZSBlcnJvcnMg
aWYgPQphbnkuCj0yMAogICAgICAgICA6cmFpc2VzIGV4Y2VwdGlvbnMuT2JqZWN0Tm90Rm91bmQ6
IGlmIG5vIG1vZGVsIGlzIGZvdW5kCi0gICAgICAgIDpyYWlzZXMgZXhjZXB0aW9ucy5Db25mbGlj
dDogaWYgbW9yZSB0aGFuIG9uZSBtb2RlbCBpcyBmb3VuZAorICAgICAgICA6cmFpc2VzIGV4Y2Vw
dGlvbnMuSW5jb25zaXN0ZW50RGF0YWJhc2U6IGlmIG1vcmUgdGhhbiBvbmUgbW9kZWwgaXM9CiBm
b3VuZAogICAgICAgICAiIiIKICAgICAgICAgIyBvdmVycmlkZGVuIHRvIHJhaXNlIHNlcmlhbGl6
YWJsZSBlcnJvcnMKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5Lm9uZSgp
CiAgICAgICAgIGV4Y2VwdCBzcWxhbGNoZW15Lm9ybS5leGMuTm9SZXN1bHRGb3VuZCwgbm90X2Zv
dW5kOgogICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5PYmplY3ROb3RGb3VuZCggc2VsZi5t
b2RlbF9jbGFzcy5fX25hbWVfXyArICc9CiBub3QgZm91bmQnICkKLSNUT0RPOiBleGNlcHRpb25z
LkluY29uc2lzdGVudERhdGFiYXNlPwogICAgICAgICBleGNlcHQgc3FsYWxjaGVteS5vcm0uZXhj
Lk11bHRpcGxlUmVzdWx0c0ZvdW5kLCBtdWx0aV9mb3VuZDoKLSAgICAgICAgICAgIHJhaXNlIGV4
Y2VwdGlvbnMuQ29uZmxpY3QoICdmb3VuZCBtb3JlIHRoYW4gb25lICcgKyBzZWxmLm1vZGVsPQpf
Y2xhc3MuX19uYW1lX18gKQorICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5JbmNvbnNpc3Rl
bnREYXRhYmFzZSggJ2ZvdW5kIG1vcmUgdGhhbiBvbmUgJyA9Cisgc2VsZi5tb2RlbF9jbGFzcy5f
X25hbWVfXyApCj0yMAogICAgIGRlZiBfb25lX29yX25vbmUoIHNlbGYsIHF1ZXJ5ICk6CiAgICAg
ICAgICIiIgogICAgICAgICBSZXR1cm4gdGhlIG9iamVjdCBpZiBmb3VuZCwgTm9uZSBpZiBpdCdz
IG5vdC4KPTIwCi0gICAgICAgIDpyYWlzZXMgZXhjZXB0aW9ucy5Db25mbGljdDogaWYgbW9yZSB0
aGFuIG9uZSBtb2RlbCBpcyBmb3VuZAorICAgICAgICA6cmFpc2VzIGV4Y2VwdGlvbnMuSW5jb25z
aXN0ZW50RGF0YWJhc2U6IGlmIG1vcmUgdGhhbiBvbmUgbW9kZWwgaXM9CiBmb3VuZAogICAgICAg
ICAiIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX29uZV93aXRoX3Jl
Y2FzdF9lcnJvcnMoIHF1ZXJ5ICkKQEAgLTM3NSw1OCArMzc3LDYgQEAKPTIwCj0yMAogIyA9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9
M0Q9M0QKLWNsYXNzIERlbGV0YWJsZU1vZGVsSW50ZXJmYWNlKCBvYmplY3QgKToKLSAgICAiIiIK
LSAgICBBIG1peGluL2ludGVyZmFjZSBmb3IgYSBtb2RlbCB0aGF0IGlzIGRlbGV0YWJsZSAoaS5l
LiBoYXMgYSAnZGVsZXRlZCcgPQphdHRyKS4KLQotICAgIE1hbnkgcmVzb3VyY2VzIGluIEdhbGF4
eSBjYW4gYmUgbWFya2VkIGFzIGRlbGV0ZWQgLSBtZWFuaW5nIChpbiBtb3N0IGM9CmFzZXMpCi0g
ICAgdGhhdCB0aGV5IGFyZSBubyBsb25nZXIgbmVlZGVkLCBzaG91bGQgbm90IGJlIGRpc3BsYXll
ZCwgb3IgbWF5IGJlIGFjdD0KdWFsbHkKLSAgICByZW1vdmVkIGJ5IGFuIGFkbWluL3NjcmlwdC4K
LSAgICAiIiIKLQotICAgIGRlZiBkZWxldGUoIHNlbGYsIHRyYW5zLCBpdGVtLCBmbHVzaD0zRFRy
dWUsICoqa3dhcmdzICk6Ci0gICAgICAgICIiIgotICAgICAgICBNYXJrIGFzIGRlbGV0ZWQgYW5k
IHJldHVybi4KLSAgICAgICAgIiIiCi0gICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCBpdGVt
ICkKLSAgICAgICAgaXRlbS5kZWxldGVkID0zRCBUcnVlCi0gICAgICAgIGlmIGZsdXNoOgotICAg
ICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCi0gICAgICAgIHJldHVybiBpdGVtCi0K
LSAgICBkZWYgdW5kZWxldGUoIHNlbGYsIHRyYW5zLCBpdGVtLCBmbHVzaD0zRFRydWUsICoqa3dh
cmdzICk6Ci0gICAgICAgICIiIgotICAgICAgICBNYXJrIGFzIG5vdCBkZWxldGVkIGFuZCByZXR1
cm4uCi0gICAgICAgICIiIgotICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmFkZCggaXRlbSApCi0g
ICAgICAgIGl0ZW0uZGVsZXRlZCA9M0QgRmFsc2UKLSAgICAgICAgaWYgZmx1c2g6Ci0gICAgICAg
ICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKLSAgICAgICAgcmV0dXJuIGl0ZW0KLQotCi0j
ID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
Cj0zRD0zRD0zRAotY2xhc3MgUHVyZ2FibGVNb2RlbEludGVyZmFjZSggRGVsZXRhYmxlTW9kZWxJ
bnRlcmZhY2UgKToKLSAgICAiIiIKLSAgICBBIG1hbmFnZXIgaW50ZXJmYWNlL21peGluIGZvciBh
IHJlc291cmNlIHRoYXQgYWxsb3dzIGRlbGV0aW5nIGFuZCBwdXJnPQppbmcgd2hlcmUKLSAgICBw
dXJnaW5nIGlzIG9mdGVuIHJlbW92YWwgb2Ygc29tZSBhZGRpdGlvbmFsLCBub24tZGIgcmVzb3Vy
Y2UgKGUuZy4gYSBkPQphdGFzZXQncwotICAgIGZpbGUpLgotICAgICIiIgotCi0gICAgZGVmIHB1
cmdlKCBzZWxmLCB0cmFucywgaXRlbSwgZmx1c2g9M0RUcnVlLCAqKmt3YXJncyApOgotICAgICAg
ICAiIiIKLSAgICAgICAgTWFyayBhcyBwdXJnZWQgYW5kIHJldHVybi4KLQotICAgICAgICBPdmVy
cmlkZSB0aGlzIGluIHN1YmNsYXNzZXMgdG8gZG8gdGhlIGFkZGl0aW9uYWwgcmVzb3VyY2UgcmVt
b3ZhbC4KLSAgICAgICAgIiIiCi0gICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCBpdGVtICkK
LSAgICAgICAgaXRlbS5wdXJnZWQgPTNEIFRydWUKLSAgICAgICAgaWYgZmx1c2g6Ci0gICAgICAg
ICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKLSAgICAgICAgcmV0dXJuIGl0ZW0KLQotCi0j
ID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
Cj0zRD0zRD0zRAogY2xhc3MgQWNjZXNzaWJsZU1vZGVsSW50ZXJmYWNlKCBvYmplY3QgKToKICAg
ICAiIiIKICAgICBBIHNlY3VyaXR5IGludGVyZmFjZSB0byBjaGVjayBpZiBhIFVzZXIgY2FuIHJl
YWQvdmlldyBhbiBpdGVtJ3MuCkBAIC00NzEsNyArNDIxLDcgQEAKPTIwCiAgICAgICAgIDpyYWlz
ZXMgZXhjZXB0aW9ucy5JdGVtQWNjZXNzaWJpbGl0eUV4Y2VwdGlvbjoKICAgICAgICAgIiIiCi0g
ICAgICAgICNOT1RFOiB0aGlzIHdpbGwgYmUgYSBsYXJnZSwgaW5lZmZpY2llbnQgbGlzdCBpZiBm
aWx0ZXJzIGFyZSBwYXNzZT0KZCBpbiBrd2FyZ3MKKyAgICAgICAgI05PVEU6IHRoaXMgd2lsbCBi
ZSBhIGxhcmdlLCBpbmVmZmljaWVudCBsaXN0IGlmIGZpbHRlcnMgYXJlIG5vdCBwPQphc3NlZCBp
biBrd2FyZ3MKICAgICAgICAgaXRlbXMgPTNEIE1vZGVsTWFuYWdlci5saXN0KCBzZWxmLCB0cmFu
cywgKiprd2FyZ3MgKQogICAgICAgICByZXR1cm4gWyBzZWxmLmVycm9yX3VubGVzc19hY2Nlc3Np
YmxlKCB0cmFucywgaXRlbSwgdXNlciApIGZvciBpdGU9Cm0gaW4gaXRlbXMgXQo9MjAKQEAgLTQ3
OSw3ICs0MjksNyBAQAogICAgICAgICAiIiIKICAgICAgICAgUmV0dXJuIGEgbGlzdCBvZiBpdGVt
cyBhY2Nlc3NpYmxlIHRvIHRoZSB1c2VyLgogICAgICAgICAiIiIKLSAgICAgICAgI05PVEU6IHRo
aXMgd2lsbCBiZSBhIGxhcmdlLCBpbmVmZmljaWVudCBsaXN0IGlmIGZpbHRlcnMgYXJlIHBhc3Nl
PQpkIGluIGt3YXJncworICAgICAgICAjTk9URTogdGhpcyB3aWxsIGJlIGEgbGFyZ2UsIGluZWZm
aWNpZW50IGxpc3QgaWYgZmlsdGVycyBhcmUgbm90ICA9CnBhc3NlZCBpbiBrd2FyZ3MKICAgICAg
ICAgaXRlbXMgPTNEIE1vZGVsTWFuYWdlci5saXN0KCBzZWxmLCB0cmFucywgKiprd2FyZ3MgKQog
ICAgICAgICByZXR1cm4gZmlsdGVyKCBsYW1iZGEgaXRlbTogc2VsZi5pc19hY2Nlc3NpYmxlKCB0
cmFucywgaXRlbSwgdXNlciA9CiksIGl0ZW1zICkKPTIwCkBAIC01MjMsNyArNDczLDYgQEAKICAg
ICAgICAgICAgIHJldHVybiBpdGVtCiAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuSXRlbU93bmVy
c2hpcEV4Y2VwdGlvbiggIiVzIGlzIG5vdCBvd25lZCBieSB1c2VyIj0KICUgKCBzZWxmLm1vZGVs
X2NsYXNzLl9fbmFtZV9fICkgKQo9MjAKLSAgICAjVE9ETzo/PyBhcmUgdGhlc2UgZXZlbiB1c2Vm
dWw/IERvZXNuJ3QgYnlfdXNlciB3b3JrIGhlcmUgbW9zdCBvZnRlbj8KICAgICBkZWYgbGlzdF9v
d25lZCggc2VsZiwgdHJhbnMsIHVzZXIsICoqa3dhcmdzICk6CiAgICAgICAgICIiIgogICAgICAg
ICBSZXR1cm4gYSBsaXN0IG9mIGl0ZW1zIG93bmVkIGJ5IHRoZSB1c2VyLCByYWlzaW5nIGFuIGVy
cm9yIGlmIEFOWQpAQCAtNTMxLDIyICs0ODAsMjAgQEAKPTIwCiAgICAgICAgIDpyYWlzZXMgZXhj
ZXB0aW9ucy5JdGVtQWNjZXNzaWJpbGl0eUV4Y2VwdGlvbjoKICAgICAgICAgIiIiCi0gICAgICAg
ICNOT1RFOiB0aGlzIHdpbGwgYmUgYSBsYXJnZSwgaW5lZmZpY2llbnQgbGlzdCBpZiBmaWx0ZXJz
IGFyZSBwYXNzZT0KZCBpbiBrd2FyZ3MKLSAgICAgICAgaXRlbXMgPTNEIE1vZGVsTWFuYWdlci5s
aXN0KCBzZWxmLCB0cmFucywgKiprd2FyZ3MgKQotICAgICAgICByZXR1cm4gWyBzZWxmLmVycm9y
X3VubGVzc19vd25lciggdHJhbnMsIGl0ZW0sIHVzZXIgKSBmb3IgaXRlbSBpbiA9Cml0ZW1zIF0K
KyAgICAgICAgIyBqdXN0IGFsaWFzIHRvIGJ5X3VzZXIgKGVhc2llci9zYW1lIHRoaW5nKQorICAg
ICAgICByZXR1cm4gc2VsZi5ieV91c2VyKCB0cmFucywgdXNlciwgKiprd2FyZ3MgKQo9MjAKICAg
ICBkZWYgZmlsdGVyX293bmVkKCBzZWxmLCB0cmFucywgdXNlciwgKiprd2FyZ3MgKToKICAgICAg
ICAgIiIiCiAgICAgICAgIFJldHVybiBhIGxpc3Qgb2YgaXRlbXMgb3duZWQgYnkgdGhlIHVzZXIu
CiAgICAgICAgICIiIgotICAgICAgICBpdGVtcyA9M0QgTW9kZWxNYW5hZ2VyLmxpc3QoIHNlbGYs
IHRyYW5zLCAqKmt3YXJncyApCi0gICAgICAgIHJldHVybiBmaWx0ZXIoIGxhbWJkYSBpdGVtOiBz
ZWxmLmlzX293bmVkKCB0cmFucywgaXRlbSwgdXNlciApLCBpdD0KZW1zICkKKyAgICAgICAgIyBq
dXN0IGFsaWFzIHRvIGxpc3Rfb3duZWQKKyAgICAgICAgcmV0dXJuIHNlbGYubGlzdF9vd25lZCgg
dHJhbnMsIHVzZXIsICoqa3dhcmdzICkKPTIwCj0yMAogIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QgU0VSSUFMSVpFUlMv
dG9fZGljdCxmcm9tX2RpY3QKLWNsYXNzIE1vZGVsU2VyaWFsaXppbmdFcnJvciggZXhjZXB0aW9u
cy5PYmplY3RBdHRyaWJ1dGVJbnZhbGlkRXhjZXB0aW9uICk6CitjbGFzcyBNb2RlbFNlcmlhbGl6
aW5nRXJyb3IoIGV4Y2VwdGlvbnMuSW50ZXJuYWxTZXJ2ZXJFcnJvciApOgogICAgICIiIlRocm93
biB3aGVuIHJlcXVlc3QgbW9kZWwgdmFsdWVzIGNhbid0IGJlIHNlcmlhbGl6ZWQiIiIKLSAgICAj
VE9ETzogYmV0dGVyIGFzIDUwMD8KICAgICBwYXNzCj0yMAo9MjAKQEAgLTYwNCw2ICs1NTEsNyBA
QAogICAgICAgICAiIiIKICAgICAgICAgIyB0byBiZSBvdmVycmlkZGVuIGluIHN1YmNsYXNzZXMK
ICAgICAgICAgcGFzcworICAgICAgICAjc3VwZXIoIE1vZGVsU2VyaWFsaXplciwgc2VsZiApLmFk
ZF9zZXJpYWxpemVycygpCj0yMAogICAgIGRlZiBzZXJpYWxpemUoIHNlbGYsIHRyYW5zLCBpdGVt
LCBrZXlzICk6CiAgICAgICAgICIiIgpAQCAtNjQ2LDI1ICs1OTQsNiBAQAogICAgICAgICBpZCA9
M0QgZ2V0YXR0ciggaXRlbSwga2V5ICkKICAgICAgICAgcmV0dXJuIHNlbGYuYXBwLnNlY3VyaXR5
LmVuY29kZV9pZCggaWQgKSBpZiBpZCBpcyBub3QgTm9uZSBlbHNlIE5vPQpuZQo9MjAKLSAgICAj
VE9ETzogQW5ub3RhdGFibGVNaXhpbgotICAgIGRlZiBzZXJpYWxpemVfYW5ub3RhdGlvbiggc2Vs
ZiwgdHJhbnMsIGl0ZW0sIGtleSApOgotICAgICAgICAiIiIKLSAgICAgICAgR2V0IGFuZCBzZXJp
YWxpemUgYW4gYGl0ZW1gJ3MgYW5ub3RhdGlvbi4KLSAgICAgICAgIiIiCi0jVE9ETzogd2hpY2gg
aXMgY29ycmVjdCBoZXJlPwotICAgICAgICAjdXNlciA9M0QgaXRlbS51c2VyCi0gICAgICAgIHVz
ZXIgPTNEIHRyYW5zLnVzZXIKLSAgICAgICAgc2Ffc2Vzc2lvbiA9M0Qgc2VsZi5hcHAubW9kZWwu
Y29udGV4dAotICAgICAgICByZXR1cm4gaXRlbS5nZXRfaXRlbV9hbm5vdGF0aW9uX3N0ciggc2Ff
c2Vzc2lvbiwgdXNlciwgaXRlbSApCi0KLSAgICAjVE9ETzogVGFnZ2FibGVNaXhpbgotICAgIGRl
ZiBzZXJpYWxpemVfdGFncyggc2VsZiwgdHJhbnMsIGl0ZW0sIGtleSApOgotICAgICAgICAiIiIK
LSAgICAgICAgR2V0IGFuZCBzZXJpYWxpemUgYW4gYGl0ZW1gJ3MgdGFncy4KLSAgICAgICAgIiIi
Ci0jVE9ETzogd2hvc2UgdGFncyBhcmUgdGhlc2U/Ci0gICAgICAgIHJldHVybiBbIHRhZy51c2Vy
X3RuYW1lICsgKCAnOicgKyB0YWcudXNlcl92YWx1ZSBpZiB0YWcudXNlcl92YWx1ZT0KIGVsc2Ug
JycgKSBmb3IgdGFnIGluIGl0ZW0udGFncyBdCi0KICAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBz
ZXJpYWxpemluZyB0byBhIHZpZXcKICAgICAjIHdoZXJlIGEgdmlldyBpcyBhIHByZWRlZmllZCBs
aXN0IG9mIGtleXMgdG8gc2VyaWFsaXplCiAgICAgZGVmIHNlcmlhbGl6ZV90b192aWV3KCBzZWxm
LCB0cmFucywgaXRlbSwgdmlldz0zRE5vbmUsIGtleXM9M0ROb25lLCBkZT0KZmF1bHRfdmlldz0z
RE5vbmUgKToKQEAgLTc5MywzNyArNzIyLDYgQEAKICAgICAgICAgdmFsID0zRCBzZWxmLnZhbGlk
YXRlLmdlbm9tZV9idWlsZCggdHJhbnMsIGtleSwgdmFsICkKICAgICAgICAgcmV0dXJuIHNlbGYu
ZGVmYXVsdF9kZXNlcmlhbGl6ZXIoIHRyYW5zLCBpdGVtLCBrZXksIHZhbCApCj0yMAotICAgIGRl
ZiBkZXNlcmlhbGl6ZV9hbm5vdGF0aW9uKCBzZWxmLCB0cmFucywgaXRlbSwga2V5LCB2YWwgKToK
LSAgICAgICAgIiIiCi0gICAgICAgIE1ha2Ugc3VyZSBgdmFsYCBpcyBhIHZhbGlkIGFubm90YXRp
b24gYW5kIGFzc2lnbiBpdC4KLSAgICAgICAgIiIiCi0gICAgICAgIHZhbCA9M0Qgc2VsZi52YWxp
ZGF0ZS5udWxsYWJsZV9iYXNlc3RyaW5nKCBrZXksIHZhbCApCi0gICAgICAgICNUT0RPOiBoYXZl
IHRvIGFzc3VtZSB0cmFucy51c2VyIGhlcmUuLi4KLSAgICAgICAgcmV0dXJuIGl0ZW0uYWRkX2l0
ZW1fYW5ub3RhdGlvbiggdHJhbnMuc2Ffc2Vzc2lvbiwgdHJhbnMudXNlciwgaXRlPQptLCB2YWwg
KQotCi0gICAgZGVmIGRlc2VyaWFsaXplX3RhZ3MoIHNlbGYsIHRyYW5zLCBpdGVtLCBrZXksIHZh
bCApOgotICAgICAgICAiIiIKLSAgICAgICAgTWFrZSBzdXJlIGB2YWxgIGlzIGEgdmFsaWQgbGlz
dCBvZiB0YWcgc3RyaW5ncyBhbmQgYXNzaWduIHRoZW0uCi0KLSAgICAgICAgTm90ZTogdGhpcyB3
aWxsIGVyYXNlIGFueSBwcmV2aW91cyB0YWdzLgotICAgICAgICAiIiIKLSAgICAgICAgbmV3X3Rh
Z3NfbGlzdCA9M0Qgc2VsZi52YWxpZGF0ZS5iYXNlc3RyaW5nX2xpc3QoIGtleSwgdmFsICkKLSAg
ICAgICAgI1RPRE86IGhhdmUgdG8gYXNzdW1lIHRyYW5zLnVzZXIgaGVyZS4uLgotICAgICAgICB1
c2VyID0zRCB0cmFucy51c2VyCi0gICAgICAgICNUT0RPOiBkdXBlZCBmcm9tIHRhZ3MgbWFuYWdl
ciAtIGRlLWR1cGUgd2hlbiBtb3ZlZCB0byB0YWdnYWJsZSBtaT0KeGluCi0gICAgICAgIHRhZ19o
YW5kbGVyID0zRCB0cmFucy5hcHAudGFnX2hhbmRsZXIKLSAgICAgICAgdGFnX2hhbmRsZXIuZGVs
ZXRlX2l0ZW1fdGFncyggdXNlciwgaXRlbSApCi0gICAgICAgIG5ld190YWdzX3N0ciA9M0QgJywn
LmpvaW4oIG5ld190YWdzX2xpc3QgKQotICAgICAgICB0YWdfaGFuZGxlci5hcHBseV9pdGVtX3Rh
Z3MoIHVzZXIsIGl0ZW0sIHVuaWNvZGUoIG5ld190YWdzX3N0ci5lbmM9Cm9kZSggJ3V0Zi04JyAp
LCAndXRmLTgnICkgKQotICAgICAgICAjdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCi0KLSNUT0RP
OiEhIGRvZXMgdGhlIGNyZWF0aW9uIG9mIG5ld190YWdzX2xpc3QgbWVhbiB0aGVyZSBhcmUgbm93
IG1vcmUgYW5kIG1vPQpyZSB1bnVzZWQgdGFnIHJvd3MgaW4gdGhlIGRiPwotICAgICAgICByZXR1
cm4gaXRlbS50YWdzCi0KLSAgICAjZGVmIGRlc2VyaWFsaXplX3JhdGluZyggc2VsZiwgdHJhbnMs
IGl0ZW0sIGtleSwgdmFsICk6Ci0gICAgIyAgICB2YWwgPTNEIHNlbGYudmFsaWRhdGUuaW50X3Jh
bmdlKCBrZXksIHZhbCwgMCwgNSApCi0gICAgIyAgICByZXR1cm4gc2VsZi5zZXRfcmF0aW5nLi4u
KCB0cmFucywgaXRlbSwgdmFsLCB1c2VyPTNEdHJhbnMudXNlciApCi0KICAgICAjIC4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uPQouLi4uLiBhbGlhc2VzCiAgICAgI2RlZiBmcm9tX2RpY3QoIHNlbGYsIHRyYW5zLCBpdGVt
LCBkYXRhICk6CiAgICAgIyAgICBzZWxmLmRlc2VyaWFsaXplKCB0cmFucywgaXRlbSwgZGF0YSAp
CkBAIC04NDMsNiArNzQxLDkgQEAKPTIwCiAgICAgZGVmIHR5cGUoIHNlbGYsIGtleSwgdmFsLCB0
eXBlcyApOgogICAgICAgICAiIiIKKyAgICAgICAgQ2hlY2sgYHZhbGAgYWdhaW5zdCB0aGUgdHlw
ZSAob3IgdHVwbGUgb2YgdHlwZXMpIGluIGB0eXBlc2AuCisKKyAgICAgICAgOnJhaXNlcyBleGNl
cHRpb25zLlJlcXVlc3RQYXJhbWV0ZXJJbnZhbGlkRXhjZXB0aW9uOiBpZiBub3QgYW4gaW5zPQp0
YW5jZS4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKCB2YWwsIHR5cGVz
ICk6CiAgICAgICAgICAgICBtc2cgPTNEICdtdXN0IGJlIGEgdHlwZTogJXMnICUgKCBzdHIoIHR5
cGVzICkgKQpAQCAtOTA2LDkzICs4MDcsOTQgQEAKICMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECiAjIE1peGlucyAoaGVy
ZSBmb3Igbm93KQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0tCitjbGFzcyBEZWxldGFibGVNb2Rl
bEludGVyZmFjZSggb2JqZWN0ICk6CisgICAgIiIiCisgICAgQSBtaXhpbi9pbnRlcmZhY2UgZm9y
IGEgbW9kZWwgdGhhdCBpcyBkZWxldGFibGUgKGkuZS4gaGFzIGEgJ2RlbGV0ZWQnID0KYXR0ciku
CisKKyAgICBNYW55IHJlc291cmNlcyBpbiBHYWxheHkgY2FuIGJlIG1hcmtlZCBhcyBkZWxldGVk
IC0gbWVhbmluZyAoaW4gbW9zdCBjPQphc2VzKQorICAgIHRoYXQgdGhleSBhcmUgbm8gbG9uZ2Vy
IG5lZWRlZCwgc2hvdWxkIG5vdCBiZSBkaXNwbGF5ZWQsIG9yIG1heSBiZSBhY3Q9CnVhbGx5Cisg
ICAgcmVtb3ZlZCBieSBhbiBhZG1pbi9zY3JpcHQuCisgICAgIiIiCisKKyAgICBkZWYgZGVsZXRl
KCBzZWxmLCB0cmFucywgaXRlbSwgZmx1c2g9M0RUcnVlLCAqKmt3YXJncyApOgorICAgICAgICAi
IiIKKyAgICAgICAgTWFyayBhcyBkZWxldGVkIGFuZCByZXR1cm4uCisgICAgICAgICIiIgorICAg
ICAgICB0cmFucy5zYV9zZXNzaW9uLmFkZCggaXRlbSApCisgICAgICAgIGl0ZW0uZGVsZXRlZCA9
M0QgVHJ1ZQorICAgICAgICBpZiBmbHVzaDoKKyAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24u
Zmx1c2goKQorICAgICAgICByZXR1cm4gaXRlbQorCisgICAgZGVmIHVuZGVsZXRlKCBzZWxmLCB0
cmFucywgaXRlbSwgZmx1c2g9M0RUcnVlLCAqKmt3YXJncyApOgorICAgICAgICAiIiIKKyAgICAg
ICAgTWFyayBhcyBub3QgZGVsZXRlZCBhbmQgcmV0dXJuLgorICAgICAgICAiIiIKKyAgICAgICAg
dHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIGl0ZW0gKQorICAgICAgICBpdGVtLmRlbGV0ZWQgPTNEIEZh
bHNlCisgICAgICAgIGlmIGZsdXNoOgorICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVz
aCgpCisgICAgICAgIHJldHVybiBpdGVtCisKKwogI1RPRE86IHRoZXNlIGFyZSBvZiBxdWVzdGlv
bmFibGUgdmFsdWUgaWYgd2UgZG9uJ3Qgd2FudCB0byBlbmFibGUgdXNlcnMgdG89CiBkZWxldGUv
cHVyZ2UgdmlhIHVwZGF0ZQogY2xhc3MgRGVsZXRhYmxlTW9kZWxEZXNlcmlhbGl6ZXIoIG9iamVj
dCApOgorICAgIHBhc3MKPTIwCi0gICAgZGVmIGFkZF9kZXNlcmlhbGl6ZXJzKCBzZWxmICk6Ci0g
ICAgICAgICIiIgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5kZXNlcmlhbGl6ZXJzWyAnZGVs
ZXRlZCcgXSA9M0Qgc2VsZi5kZXNlcmlhbGl6ZV9kZWxldGVkCi0KLSAgICBkZWYgZGVzZXJpYWxp
emVfZGVsZXRlZCggc2VsZiwgdHJhbnMsIGl0ZW0sIGtleSwgdmFsICk6Ci0gICAgICAgICIiIgot
ICAgICAgICAiIiIKLSAgICAgICAgbmV3X2RlbGV0ZWQgPTNEIHNlbGYudmFsaWRhdGUuYm9vbCgg
a2V5LCB2YWwgKQotICAgICAgICBpZiBuZXdfZGVsZXRlZCA9M0Q9M0QgaXRlbS5kZWxldGVkOgot
ICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZGVsZXRlZAotICAgICAgICAjVE9ETzo/PyBmbHVzaD0z
REZhbHNlPwotICAgICAgICBpZiBuZXdfZGVsZXRlZDoKLSAgICAgICAgICAgIHNlbGYubWdyLmRl
bGV0ZSggdHJhbnMsIGl0ZW0gKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5tZ3Iu
dW5kZWxldGUoIHRyYW5zLCBpdGVtICkKLSAgICAgICAgcmV0dXJuIGl0ZW0uZGVsZXRlZAorICAg
ICNkZWYgYWRkX2Rlc2VyaWFsaXplcnMoIHNlbGYgKToKKyAgICAjICAgICIiIgorICAgICMgICAg
IiIiCisgICAgIyAgICBzZWxmLmRlc2VyaWFsaXplcnNbICdkZWxldGVkJyBdID0zRCBzZWxmLmRl
c2VyaWFsaXplX2RlbGV0ZWQKKyAgICAjCisgICAgI2RlZiBkZXNlcmlhbGl6ZV9kZWxldGVkKCBz
ZWxmLCB0cmFucywgaXRlbSwga2V5LCB2YWwgKToKKyAgICAjICAgICIiIgorICAgICMgICAgIiIi
CisgICAgIyAgICBuZXdfZGVsZXRlZCA9M0Qgc2VsZi52YWxpZGF0ZS5ib29sKCBrZXksIHZhbCAp
CisgICAgIyAgICBpZiBuZXdfZGVsZXRlZCA9M0Q9M0QgaXRlbS5kZWxldGVkOgorICAgICMgICAg
ICAgIHJldHVybiBpdGVtLmRlbGV0ZWQKKyAgICAjICAgICNUT0RPOj8/IGZsdXNoPTNERmFsc2U/
CisgICAgIyAgICBpZiBuZXdfZGVsZXRlZDoKKyAgICAjICAgICAgICBzZWxmLm1nci5kZWxldGUo
IHRyYW5zLCBpdGVtICkKKyAgICAjICAgIGVsc2U6CisgICAgIyAgICAgICAgc2VsZi5tZ3IudW5k
ZWxldGUoIHRyYW5zLCBpdGVtICkKKyAgICAjICAgIHJldHVybiBpdGVtLmRlbGV0ZWQKPTIwCj0y
MAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0tCitjbGFzcyBQdXJnYWJsZU1vZGVsSW50ZXJmYWNl
KCBEZWxldGFibGVNb2RlbEludGVyZmFjZSApOgorICAgICIiIgorICAgIEEgbWFuYWdlciBpbnRl
cmZhY2UvbWl4aW4gZm9yIGEgcmVzb3VyY2UgdGhhdCBhbGxvd3MgZGVsZXRpbmcgYW5kIHB1cmc9
CmluZyB3aGVyZQorICAgIHB1cmdpbmcgaXMgb2Z0ZW4gcmVtb3ZhbCBvZiBzb21lIGFkZGl0aW9u
YWwsIG5vbi1kYiByZXNvdXJjZSAoZS5nLiBhIGQ9CmF0YXNldCdzCisgICAgZmlsZSkuCisgICAg
IiIiCisKKyAgICBkZWYgcHVyZ2UoIHNlbGYsIHRyYW5zLCBpdGVtLCBmbHVzaD0zRFRydWUsICoq
a3dhcmdzICk6CisgICAgICAgICIiIgorICAgICAgICBNYXJrIGFzIHB1cmdlZCBhbmQgcmV0dXJu
LgorCisgICAgICAgIE92ZXJyaWRlIHRoaXMgaW4gc3ViY2xhc3NlcyB0byBkbyB0aGUgYWRkaXRp
b25hbCByZXNvdXJjZSByZW1vdmFsLgorICAgICAgICAiIiIKKyAgICAgICAgdHJhbnMuc2Ffc2Vz
c2lvbi5hZGQoIGl0ZW0gKQorICAgICAgICBpdGVtLnB1cmdlZCA9M0QgVHJ1ZQorICAgICAgICBp
ZiBmbHVzaDoKKyAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uZmx1c2goKQorICAgICAgICBy
ZXR1cm4gaXRlbQorCisKIGNsYXNzIFB1cmdhYmxlTW9kZWxEZXNlcmlhbGl6ZXIoIERlbGV0YWJs
ZU1vZGVsRGVzZXJpYWxpemVyICk6CisgICAgcGFzcwo9MjAKLSAgICBkZWYgYWRkX2Rlc2VyaWFs
aXplcnMoIHNlbGYgKToKLSAgICAgICAgIiIiCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLmRl
c2VyaWFsaXplcnNbICdwdXJnZWQnIF0gPTNEIHNlbGYuZGVzZXJpYWxpemVfcHVyZ2VkCi0KLSAg
ICBkZWYgZGVzZXJpYWxpemVfcHVyZ2VkKCBzZWxmLCB0cmFucywgaXRlbSwga2V5LCB2YWwgKToK
LSAgICAgICAgIiIiCi0gICAgICAgICIiIgotICAgICAgICBuZXdfcHVyZ2VkID0zRCBzZWxmLnZh
bGlkYXRlLmJvb2woIGtleSwgdmFsICkKLSAgICAgICAgaWYgbmV3X3B1cmdlZCA9M0Q9M0QgaXRl
bS5wdXJnZWQ6Ci0gICAgICAgICAgICByZXR1cm4gaXRlbS5wdXJnZWQKLSAgICAgICAgaWYgbmV3
X3B1cmdlZDoKLSAgICAgICAgICAgIHNlbGYubWdyLnB1cmdlKCB0cmFucywgaXRlbSApCi0gICAg
ICAgIHJldHVybiBzZWxmLnB1cmdlZAotCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPQotLS0tLQotY2xh
c3MgVGFnZ2FibGVTZXJpYWxpemVyKCBvYmplY3QgKToKLQotICAgIGRlZiBhZGRfc2VyaWFsaXpl
cnMoIHNlbGYgKToKLSAgICAgICAgIiIiCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLnNlcmlh
bGl6ZXJzWyAndGFncycgXSA9M0Qgc2VsZi5zZXJpYWxpemVfdGFncwotCi0gICAgZGVmIHNlcmlh
bGl6ZV90YWdzKCBzZWxmLCB0cmFucywgaXRlbSwga2V5ICk6Ci0gICAgICAgICIiIgotICAgICAg
ICAiIiIKLSAgICAgICAgaWYgbm90IGhhc2F0dHIoIGl0ZW0sICd0YWdzJyApOgotICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKLQotICAgICAgICB0YWdzX3N0cl9saXN0ID0zRCBbXQotICAgICAgICBm
b3IgdGFnIGluIGl0ZW0udGFnczoKLSAgICAgICAgICAgIHRhZ19zdHIgPTNEIHRhZy51c2VyX3Ru
YW1lCi0gICAgICAgICAgICBpZiB0YWcudmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAg
ICAgdGFnX3N0ciArPTNEICI6IiArIHRhZy51c2VyX3ZhbHVlCi0gICAgICAgICAgICB0YWdzX3N0
cl9saXN0LmFwcGVuZCggdGFnX3N0ciApCi0gICAgICAgIHByaW50ICdcdCB0YWdzX3N0cl9saXN0
JywgdGFnc19zdHJfbGlzdAotICAgICAgICByZXR1cm4gdGFnc19zdHJfbGlzdAotCi0KLWNsYXNz
IEFubm90YXRhYmxlU2VyaWFsaXphYmxlKCBvYmplY3QgKToKLQotICAgIGRlZiBhZGRfc2VyaWFs
aXplcnMoIHNlbGYgKToKLSAgICAgICAgIiIiCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLnNl
cmlhbGl6ZXJzWyAnYW5ub3RhdGlvbicgXSA9M0QgbGFtYmRhIHQsIGksIGs6IHVuaWNvZGUoIHNl
bGY9Ci5nZXRfYW5ub3RhdGlvbiggdCwgaSApICkKLQotCi1jbGFzcyBSYXRhYmxlU2VyaWFsaXph
YmxlKCBvYmplY3QgKToKLQotICAgIGRlZiBhZGRfc2VyaWFsaXplcnMoIHNlbGYgKToKLSAgICAg
ICAgIiIiCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLnNlcmlhbGl6ZXJzWyAndXNlcl9yYXRp
bmcnIF0gPTNEIHNlbGYuc2VyaWFsaXplX3VzZXJfcmF0aW5nCi0gICAgICAgIHNlbGYuc2VyaWFs
aXplcnNbICdjb21tdW5pdHlfcmF0aW5nJyBdID0zRCBzZWxmLnNlcmlhbGl6ZV9jb21tdW5pdD0K
eV9yYXRpbmcKLQotICAgIGRlZiBzZXJpYWxpemVfdXNlcl9yYXRpbmcoIHNlbGYsIHRyYW5zLCBp
dGVtLCBrZXkgKToKLSAgICAgICAgIiIiCi0gICAgICAgICIiIgotICAgICAgICBwYXNzCi0KLSAg
ICBkZWYgc2VyaWFsaXplX2NvbW11bml0eV9yYXRpbmcoIHNlbGYsIHRyYW5zLCBpdGVtLCBrZXkg
KToKLSAgICAgICAgIiIiCi0gICAgICAgICIiIgotICAgICAgICBwYXNzCisgICAgI2RlZiBhZGRf
ZGVzZXJpYWxpemVycyggc2VsZiApOgorICAgICMgICAgIiIiCisgICAgIyAgICAiIiIKKyAgICAj
ICAgIHNlbGYuZGVzZXJpYWxpemVyc1sgJ3B1cmdlZCcgXSA9M0Qgc2VsZi5kZXNlcmlhbGl6ZV9w
dXJnZWQKKyAgICAjCisgICAgI2RlZiBkZXNlcmlhbGl6ZV9wdXJnZWQoIHNlbGYsIHRyYW5zLCBp
dGVtLCBrZXksIHZhbCApOgorICAgICMgICAgIiIiCisgICAgIyAgICAiIiIKKyAgICAjICAgIG5l
d19wdXJnZWQgPTNEIHNlbGYudmFsaWRhdGUuYm9vbCgga2V5LCB2YWwgKQorICAgICMgICAgaWYg
bmV3X3B1cmdlZCA9M0Q9M0QgaXRlbS5wdXJnZWQ6CisgICAgIyAgICAgICAgcmV0dXJuIGl0ZW0u
cHVyZ2VkCisgICAgIyAgICBpZiBuZXdfcHVyZ2VkOgorICAgICMgICAgICAgIHNlbGYubWdyLnB1
cmdlKCB0cmFucywgaXRlbSApCisgICAgIyAgICByZXR1cm4gc2VsZi5wdXJnZWQKCmRpZmYgLXIg
MmU5OTBjYWVmYzk0M2ViMmIxZDRhOTRhZjUwOGMyMmJiMzRiN2ZhNiAtciA0MjhlNThmY2QzM2E5
ZjkzNDI5MmZjYT0KZGFjODQwYzc1NzgzYmNkNjIgbGliL2dhbGF4eS9tYW5hZ2Vycy9kYXRhc2V0
cy5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL2RhdGFzZXRzLnB5CisrKyBiL2xpYi9nYWxh
eHkvbWFuYWdlcnMvZGF0YXNldHMucHkKQEAgLTI2LDcgKzI2LDcgQEAKICAgICBkZWYgX19pbml0
X18oIHNlbGYsIGFwcCApOgogICAgICAgICBzdXBlciggRGF0YXNldE1hbmFnZXIsIHNlbGYgKS5f
X2luaXRfXyggYXBwICkKICAgICAgICAgIyBuZWVkIGZvciBhZG1pbiB0ZXN0Ci0gICAgICAgIHNl
bGYudXNlcl9tZ3IgPTNEIHVzZXJzLlVzZXJNYW5hZ2VyKCBhcHAgKQorICAgICAgICBzZWxmLnVz
ZXJfbWFuYWdlciA9M0QgdXNlcnMuVXNlck1hbmFnZXIoIGFwcCApCj0yMAogICAgICMgLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi49Ci4uLi4uIGNyZWF0ZQogICAgIGRlZiBjcmVhdGUoIHNlbGYsIHRyYW5zLCBmbHVzaD0z
RFRydWUsICoqa3dhcmdzICk6CkBAIC05Myw3ICs5Myw3IEBACiAgICAgICAgICIiIgogICAgICAg
ICBJcyB0aGlzIGRhdGFzZXQgcmVhZGFibGUvdmlld2FibGUgdG8gdXNlcj8KICAgICAgICAgIiIi
Ci0gICAgICAgIGlmIHNlbGYudXNlcl9tZ3IuaXNfYWRtaW4oIHRyYW5zLCB1c2VyICk6CisgICAg
ICAgIGlmIHNlbGYudXNlcl9tYW5hZ2VyLmlzX2FkbWluKCB0cmFucywgdXNlciApOgogICAgICAg
ICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgaWYgc2VsZi5oYXNfYWNjZXNzX3Blcm1pc3Npb24o
IHRyYW5zLCBkYXRhc2V0LCB1c2VyICk6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQpAQCAtMjQx
LDI1ICsyNDEsMjUgQEAKICAgICBkZWZhdWx0X29yZGVyX2J5ID0zRCAoIG1vZGVsLkRhdGFzZXQu
Y3JlYXRlX3RpbWUsICkKPTIwCiAgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToKLSAgICAg
ICAgIiIiCi0gICAgICAgICIiIgogICAgICAgICBzdXBlciggRGF0YXNldEFzc29jaWF0aW9uTWFu
YWdlciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQotICAgICAgICBzZWxmLmRhdGFzZXRfbWdyID0z
RCBEYXRhc2V0TWFuYWdlciggYXBwICkKKyAgICAgICAgc2VsZi5kYXRhc2V0X21hbmFnZXIgPTNE
IERhdGFzZXRNYW5hZ2VyKCBhcHAgKQo9MjAKICAgICBkZWYgaXNfYWNjZXNzaWJsZSggc2VsZiwg
dHJhbnMsIGRhdGFzZXRfYXNzb2MsIHVzZXIgKToKICAgICAgICAgIiIiCisgICAgICAgIElzIHRo
aXMgREEgYWNjZXNzaWJsZSB0byBgdXNlcmA/CiAgICAgICAgICIiIgogICAgICAgICAjIGRlZmVy
IHRvIHRoZSBkYXRhc2V0Ci0gICAgICAgIHJldHVybiBzZWxmLmRhdGFzZXRfbWdyLmlzX2FjY2Vz
c2libGUoIHRyYW5zLCBkYXRhc2V0X2Fzc29jLmRhdGFzZT0KdCwgdXNlciApCisgICAgICAgIHJl
dHVybiBzZWxmLmRhdGFzZXRfbWFuYWdlci5pc19hY2Nlc3NpYmxlKCB0cmFucywgZGF0YXNldF9h
c3NvYy5kYT0KdGFzZXQsIHVzZXIgKQo9MjAKLSAgICBkZWYgbWV0YWRhdGEoIHNlbGYsIHRyYW5z
LCBkYXRhc2V0X2Fzc29jICk6Ci0gICAgICAgICIiIgotICAgICAgICAiIiIKLSAgICAgICAgIyBn
ZXQgbWV0YWRhdGEKLSAgICAgICAgcGFzcworICAgICNkZWYgbWV0YWRhdGEoIHNlbGYsIHRyYW5z
LCBkYXRhc2V0X2Fzc29jICk6CisgICAgIyAgICAiIiIKKyAgICAjICAgIFJldHVybiB0aGUgbWV0
YWRhdGEgY29sbGVjdGlvbi4KKyAgICAjICAgICIiIgorICAgICMgICAgIyBnZXQgbWV0YWRhdGEK
KyAgICAjICAgIHBhc3MKPTIwCi0gICAgZGVmIGlzX2JlaW5nX3VzZWQoIHNlbGYsIHRyYW5zLCBk
YXRhc2V0X2Fzc29jICk6Ci0gICAgICAgICIiIgotICAgICAgICAiIiIKLSAgICAgICAgI1RPRE86
IGNoZWNrIGhpc3RvcnlfYXNzb2NpYXRpb25zLCBsaWJyYXJ5X2Fzc29jaWF0aW9ucwotICAgICAg
ICBwYXNzCisgICAgI2RlZiBpc19iZWluZ191c2VkKCBzZWxmLCB0cmFucywgZGF0YXNldF9hc3Nv
YyApOgorICAgICMgICAgIiIiCisgICAgIyAgICAiIiIKKyAgICAjICAgICNUT0RPOiBjaGVjayBo
aXN0b3J5X2Fzc29jaWF0aW9ucywgbGlicmFyeV9hc3NvY2lhdGlvbnMKKyAgICAjICAgIHBhc3MK
CmRpZmYgLXIgMmU5OTBjYWVmYzk0M2ViMmIxZDRhOTRhZjUwOGMyMmJiMzRiN2ZhNiAtciA0Mjhl
NThmY2QzM2E5ZjkzNDI5MmZjYT0KZGFjODQwYzc1NzgzYmNkNjIgbGliL2dhbGF4eS9tYW5hZ2Vy
cy9oZGFzLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvaGRhcy5weQorKysgYi9saWIvZ2Fs
YXh5L21hbmFnZXJzL2hkYXMucHkKQEAgLTEzLDYgKzEzLDggQEAKIGZyb20gZ2FsYXh5IGltcG9y
dCBkYXRhdHlwZXMKPTIwCiBpbXBvcnQgYmFzZQoraW1wb3J0IHRhZ2dhYmxlCitpbXBvcnQgYW5u
b3RhdGFibGUKIGltcG9ydCBoaXN0b3JpZXMKIGltcG9ydCBkYXRhc2V0cwo9MjAKQEAgLTIyLDE0
ICsyNCwxOSBAQAo9MjAKPTIwCiAjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRAotY2xhc3MgSERBTWFuYWdlciggZGF0YXNl
dHMuRGF0YXNldEFzc29jaWF0aW9uTWFuYWdlciwgYmFzZS5Pd25hYmxlTW9kZWxJbnQ9CmVyZmFj
ZSApOgorY2xhc3MgSERBTWFuYWdlciggZGF0YXNldHMuRGF0YXNldEFzc29jaWF0aW9uTWFuYWdl
ciwgYmFzZS5Pd25hYmxlTW9kZWxJbnQ9CmVyZmFjZSwKKyAgICAgICAgdGFnZ2FibGUuVGFnZ2Fi
bGVNYW5hZ2VySW50ZXJmYWNlLCBhbm5vdGF0YWJsZS5Bbm5vdGF0YWJsZU1hbmFnZXJJPQpudGVy
ZmFjZSApOgogICAgICNUT0RPOiBtb3ZlIHdoYXQgbWFrZXMgc2Vuc2UgaW50byBEYXRhc2V0TWFu
YWdlcgogICAgICIiIgogICAgIEludGVyZmFjZS9zZXJ2aWNlIG9iamVjdCBmb3IgaW50ZXJhY3Rp
bmcgd2l0aCBIREFzLgogICAgICIiIgogICAgIG1vZGVsX2NsYXNzID0zRCBtb2RlbC5IaXN0b3J5
RGF0YXNldEFzc29jaWF0aW9uCisgICAgZm9yZWlnbl9rZXlfbmFtZSA9M0QgJ2hpc3RvcnlfZGF0
YXNldF9hc3NvY2lhdGlvbicKICAgICBkZWZhdWx0X29yZGVyX2J5ID0zRCAoIG1vZGVsLkhpc3Rv
cnlEYXRhc2V0QXNzb2NpYXRpb24uY3JlYXRlX3RpbWUsICkKPTIwCisgICAgdGFnX2Fzc29jID0z
RCBtb2RlbC5IaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uVGFnQXNzb2NpYXRpb24KKyAgICBhbm5v
dGF0aW9uX2Fzc29jID0zRCBtb2RlbC5IaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uQW5ub3RhdGlv
bkFzc29jaWF0PQppb24KKwogICAgICNUT0RPOiB3aGljaCBvZiB0aGVzZSBhcmUgY29tbW9uIHdp
dGggTEREQXMgYW5kIGNhbiBiZSBwdXNoZWQgZG93biBpbnQ9Cm8gRGF0YXNldEFzc29jaWF0aW9u
TWFuYWdlcj8KPTIwCiAgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToKQEAgLTQxLDYgKzQ4
LDcgQEAKICAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBzZWN1cml0eSBhbmQgcGVybWlzc2lvbnMK
ICAgICBkZWYgaXNfYWNjZXNzaWJsZSggc2VsZiwgdHJhbnMsIGhkYSwgdXNlciApOgogICAgICAg
ICAiIiIKKyAgICAgICAgT3ZlcnJpZGUgdG8gYWxsb3cgb3duZXJzICh0aG9zZSB0aGF0IG93biB0
aGUgYXNzb2NpYXRlZCBoaXN0b3J5KS4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIHNlbGYuaXNf
b3duZXIoIHRyYW5zLCBoZGEsIHVzZXIgKToKICAgICAgICAgICAgIHJldHVybiBUcnVlCkBAIC0x
MTgsMzMgKzEyNiwyOSBAQAo9MjAKICAgICBkZWYgY29weV9sZGRhKCBzZWxmLCB0cmFucywgaGlz
dG9yeSwgbGRkYSwgKiprd2FyZ3MgKToKICAgICAgICAgIiIiCisgICAgICAgIENvcHkgdGhpcyBI
REEgYXMgYSBMRERBIGFuZCByZXR1cm4uCiAgICAgICAgICIiIgogICAgICAgICByZXR1cm4gbGRk
YS50b19oaXN0b3J5X2RhdGFzZXRfYXNzb2NpYXRpb24oIGhpc3RvcnksIGFkZF90b19oaXN0b3I9
Cnk9M0RUcnVlICkKPTIwCi0gICAgZGVmIGlzX2FfY29weSggc2VsZiwgdHJhbnMsIGhkYSApOgot
ICAgICAgICBwYXNzCisgICAgI1RPRE86IHN0dWIKKyAgICAjZGVmIGlzX2FfY29weSggc2VsZiwg
dHJhbnMsIGhkYSApOgorICAgICMgICAgcGFzcwo9MjAKLSAgICBkZWYgY29waWVkX2Zyb20oIHNl
bGYsIHRyYW5zLCBoZGEgKToKLSAgICAgICAgcGFzcworICAgICNUT0RPOiBzdHViCisgICAgI2Rl
ZiBjb3BpZWRfZnJvbSggc2VsZiwgdHJhbnMsIGhkYSApOgorICAgICMgICAgcGFzcwo9MjAKLSAg
ICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uPQouLi4uLgotIyAgICBkZWYgYnlfaGlzdG9yeV9pZCggc2VsZiwgdHJh
bnMsIGhpc3RvcnlfaWQsIGZpbHRlcnM9M0ROb25lLCAqKmt3YXJncyA9Cik6Ci0jICAgICAgICBo
aXN0b3J5X2lkX2ZpbHRlciA9M0Qgc2VsZi5tb2RlbF9jbGFzcy5oaXN0b3J5X2lkID0zRD0zRCBo
aXN0b3J5Xz0KaWQKLSMgICAgICAgIGZpbHRlcnMgPTNEIHNlbGYuX211bmdlX2ZpbHRlcnMoIGhp
c3RvcnlfaWRfZmlsdGVyLCBmaWx0ZXJzICkKLSMgICAgICAgIHJldHVybiBzZWxmLmxpc3QoIHRy
YW5zLCBmaWx0ZXJzPTNEZmlsdGVycywgKiprd2FyZ3MgKQotCi0jICAgICNkZWYgYnlfaGlzdG9y
eSggc2VsZiwgdHJhbnMsIGhpc3RvcnksIGZpbHRlcnM9M0ROb25lLCAqKmt3YXJncyApOgotIyAg
ICAjICAgIHJldHVybiBoaXN0b3J5LmRhdGFzZXRzCi0KKyAgICAjVE9ETzogc3R1YgogICAgICNk
ZWYgYnlfdXNlciggc2VsZiwgdHJhbnMsIHVzZXIgKToKICAgICAjICAgIHBhc3MKPTIwCiAgICAg
ZGVmIHB1cmdlKCBzZWxmLCB0cmFucywgaGRhICk6CiAgICAgICAgICIiIgorICAgICAgICBQdXJn
ZSB0aGlzIEhEQSBhbmQgdGhlIGRhdGFzZXQgdW5kZXJseWluZyBpdC4KICAgICAgICAgIiIiCiAg
ICAgICAgICMgZXJyb3IgaGVyZSBpZiBkaXNhbGxvd2VkIC0gYmVmb3JlIGpvYnMgYXJlIHN0b3Bw
ZWQKICAgICAgICAgI1RPRE86IHBvc3MuIG1vdmUgdG8gRGF0YXNldEFzc29jaWF0aW9uTWFuYWdl
cgotICAgICAgICBzZWxmLmRhdGFzZXRfbWdyLmVycm9yX3VubGVzc19kYXRhc2V0X3B1cmdlX2Fs
bG93ZWQoIHRyYW5zLCBoZGEgKQorICAgICAgICBzZWxmLmRhdGFzZXRfbWFuYWdlci5lcnJvcl91
bmxlc3NfZGF0YXNldF9wdXJnZV9hbGxvd2VkKCB0cmFucywgaGQ9CmEgKQogICAgICAgICBzdXBl
ciggSERBTWFuYWdlciwgc2VsZiApLnB1cmdlKCB0cmFucywgaGRhLCBmbHVzaD0zRFRydWUgKQo9
MjAKICAgICAgICAgIyBzaWduYWwgdG8gc3RvcCB0aGUgY3JlYXRpbmcgam9iPwpAQCAtMTU1LDE3
ICsxNTksMjcgQEAKPTIwCiAgICAgICAgICMgbW9yZSBpbXBvcnRhbnRseSwgcHVyZ2UgZGF0YXNl
dCBhcyB3ZWxsCiAgICAgICAgIGlmIGhkYS5kYXRhc2V0LnVzZXJfY2FuX3B1cmdlOgotICAgICAg
ICAgICAgc2VsZi5kYXRhc2V0X21nci5wdXJnZSggdHJhbnMsIGhkYS5kYXRhc2V0ICkKKyAgICAg
ICAgICAgIHNlbGYuZGF0YXNldF9tYW5hZ2VyLnB1cmdlKCB0cmFucywgaGRhLmRhdGFzZXQgKQog
ICAgICAgICByZXR1cm4gaGRhCj0yMAogICAgIGRlZiBlcnJvcl9pZl91cGxvYWRpbmcoIHNlbGYs
IHRyYW5zLCBoZGEgKToKICAgICAgICAgIiIiCiAgICAgICAgIFJhaXNlIGVycm9yIGlmIEhEQSBp
cyBzdGlsbCB1cGxvYWRpbmcuCiAgICAgICAgICIiIgorICAgICAgICAjVE9ETzogbWF5IGJlIGJl
dHRlciBhZGRlZCB0byBhbiBvdmVycmlkZGVuIGdldF9hY2Nlc3NpYmxlCiAgICAgICAgIGlmIGhk
YS5zdGF0ZSA9M0Q9M0QgbW9kZWwuRGF0YXNldC5zdGF0ZXMuVVBMT0FEOgogICAgICAgICAgICAg
cmFpc2UgZXhjZXB0aW9ucy5Db25mbGljdCggIlBsZWFzZSB3YWl0IHVudGlsIHRoaXMgZGF0YXNl
dCBmaW49CmlzaGVzIHVwbG9hZGluZyIgKQogICAgICAgICByZXR1cm4gaGRhCj0yMAorICAgICMg
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi49Ci4uLi4uIHZpYSBoaXN0b3J5CisgICAgI2RlZiBieV9oaXN0b3J5X2lkKCBz
ZWxmLCB0cmFucywgaGlzdG9yeV9pZCwgZmlsdGVycz0zRE5vbmUsICoqa3dhcmdzID0KKToKKyAg
ICAjICAgIGhpc3RvcnlfaWRfZmlsdGVyID0zRCBzZWxmLm1vZGVsX2NsYXNzLmhpc3RvcnlfaWQg
PTNEPTNEIGhpc3RvcnlfPQppZAorICAgICMgICAgZmlsdGVycyA9M0Qgc2VsZi5fbXVuZ2VfZmls
dGVycyggaGlzdG9yeV9pZF9maWx0ZXIsIGZpbHRlcnMgKQorICAgICMgICAgcmV0dXJuIHNlbGYu
bGlzdCggdHJhbnMsIGZpbHRlcnM9M0RmaWx0ZXJzLCAqKmt3YXJncyApCisKKyAgICAjZGVmIGJ5
X2hpc3RvcnkoIHNlbGYsIHRyYW5zLCBoaXN0b3J5LCBmaWx0ZXJzPTNETm9uZSwgKiprd2FyZ3Mg
KToKKyAgICAjICAgIHJldHVybiBoaXN0b3J5LmRhdGFzZXRzCisKICAgICAjIC4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
PQouLi4uLiBhc3NvY2lhdGVkCiAjVE9ETzogaXMgdGhpcyBuZWVkZWQ/IENhbid0IHlvdSB1c2Ug
dGhlIGhkYS5jcmVhdGluZ19qb2IgYXR0cmlidXRlPyBXaGVuID0KaXMgdGhpcyBOb25lPwogICAg
IGRlZiBjcmVhdGluZ19qb2IoIHNlbGYsIHRyYW5zLCBoZGEgKToKQEAgLTIyNCw2ICsyMzgsOCBA
QAo9MjAKICAgICBkZWYgZ2V0X3Zpc3VhbGl6YXRpb25zKCBzZWxmLCB0cmFucywgaGRhICk6CiAg
ICAgICAgICIiIgorICAgICAgICBSZXR1cm4gYSBsaXN0IG9mIGRpY3Rpb25hcmllcyB3aXRoIGxp
bmtzIHRvIHZpc3VhbGl6YXRpb24gcGFnZXMKKyAgICAgICAgZm9yIHRob3NlIHZpc3VhbGl6YXRp
b25zIHRoYXQgYXBwbHkgdG8gdGhpcyBoZGEuCiAgICAgICAgICIiIgogICAgICAgICAjIHVzZSBv
bGRlciBzeXN0ZW0gaWYgcmVnaXN0cnkgaXMgb2ZmIGluIHRoZSBjb25maWcKICAgICAgICAgaWYg
bm90IHNlbGYuYXBwLnZpc3VhbGl6YXRpb25zX3JlZ2lzdHJ5OgpAQCAtMjg2LDEzICszMDIsMTQg
QEAKPTIwCj0yMAogIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKLWNsYXNzIEhEQVNlcmlhbGl6ZXIoIGJhc2UuTW9kZWxT
ZXJpYWxpemVyICk6CitjbGFzcyBIREFTZXJpYWxpemVyKCBiYXNlLk1vZGVsU2VyaWFsaXplciwK
KyAgICAgICAgdGFnZ2FibGUuVGFnZ2FibGVTZXJpYWxpemVyLCBhbm5vdGF0YWJsZS5Bbm5vdGF0
YWJsZVNlcmlhbGl6ZXIgKToKICAgICAjVE9ETzogaW5oZXJpdCBmcm9tIGRhdGFzZXRzLkRhdGFz
ZXRBc3NvY2lhdGlvblNlcmlhbGl6ZXIKICAgICAjVE9ETzogbW92ZSB3aGF0IG1ha2VzIHNlbnNl
IGludG8gRGF0YXNldFNlcmlhbGl6ZXIKPTIwCiAgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAg
KToKICAgICAgICAgc3VwZXIoIEhEQVNlcmlhbGl6ZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwICkK
LSAgICAgICAgc2VsZi5oZGFfbWdyID0zRCBIREFNYW5hZ2VyKCBhcHAgKQorICAgICAgICBzZWxm
LmhkYV9tYW5hZ2VyID0zRCBIREFNYW5hZ2VyKCBhcHAgKQo9MjAKICAgICAgICAgIyBtb3N0IG9m
IHRoZXNlIHZpZXdzIGJ1aWxkL2FkZCB0byB0aGUgcHJldmlvdXMgdmlldwogICAgICAgICBzdW1t
YXJ5X3ZpZXcgPTNEIFsKQEAgLTM2MCw2ICszNzcsMTAgQEAKICAgICAgICAgc2VsZi5kZWZhdWx0
X3ZpZXcgPTNEICdzdW1tYXJ5Jwo9MjAKICAgICBkZWYgYWRkX3NlcmlhbGl6ZXJzKCBzZWxmICk6
CisgICAgICAgIHN1cGVyKCBIREFTZXJpYWxpemVyLCBzZWxmICkuYWRkX3NlcmlhbGl6ZXJzKCkK
KyAgICAgICAgdGFnZ2FibGUuVGFnZ2FibGVTZXJpYWxpemVyLmFkZF9zZXJpYWxpemVycyggc2Vs
ZiApCisgICAgICAgIGFubm90YXRhYmxlLkFubm90YXRhYmxlU2VyaWFsaXplci5hZGRfc2VyaWFs
aXplcnMoIHNlbGYgKQorCiAgICAgICAgIHNlbGYuc2VyaWFsaXplcnMudXBkYXRlKHsKICAgICAg
ICAgICAgICdtb2RlbF9jbGFzcycgICA6IGxhbWJkYSAqYTogJ0hpc3RvcnlEYXRhc2V0QXNzb2Np
YXRpb24nLAogICAgICAgICAgICAgI1RPRE86IGFjY2Vzc2libGUgbmVlZHMgdG8gZ28gYXdheQpA
QCAtNDAzLDkgKzQyNCw5IEBACiAgICAgICAgICAgICAnYW5ub3RhdGlvbicgICAgOiBzZWxmLnNl
cmlhbGl6ZV9hbm5vdGF0aW9uLAogICAgICAgICAgICAgJ3RhZ3MnICAgICAgICAgIDogc2VsZi5z
ZXJpYWxpemVfdGFncywKPTIwCi0gICAgICAgICAgICAnZGlzcGxheV9hcHBzJyAgOiBsYW1iZGEg
dCwgaSwgazogc2VsZi5oZGFfbWdyLmdldF9kaXNwbGF5X2FwcD0KcyggdCwgaSApLAotICAgICAg
ICAgICAgJ2Rpc3BsYXlfdHlwZXMnIDogbGFtYmRhIHQsIGksIGs6IHNlbGYuaGRhX21nci5nZXRf
b2xkX2Rpc3BsYXk9Cl9hcHBsaWNhdGlvbnMoIHQsIGkgKSwKLSAgICAgICAgICAgICd2aXN1YWxp
emF0aW9ucyc6IGxhbWJkYSB0LCBpLCBrOiBzZWxmLmhkYV9tZ3IuZ2V0X3Zpc3VhbGl6YXRpPQpv
bnMoIHQsIGkgKSwKKyAgICAgICAgICAgICdkaXNwbGF5X2FwcHMnICA6IGxhbWJkYSB0LCBpLCBr
OiBzZWxmLmhkYV9tYW5hZ2VyLmdldF9kaXNwbGF5PQpfYXBwcyggdCwgaSApLAorICAgICAgICAg
ICAgJ2Rpc3BsYXlfdHlwZXMnIDogbGFtYmRhIHQsIGksIGs6IHNlbGYuaGRhX21hbmFnZXIuZ2V0
X29sZF9kaXM9CnBsYXlfYXBwbGljYXRpb25zKCB0LCBpICksCisgICAgICAgICAgICAndmlzdWFs
aXphdGlvbnMnOiBsYW1iZGEgdCwgaSwgazogc2VsZi5oZGFfbWFuYWdlci5nZXRfdmlzdWFsaT0K
emF0aW9ucyggdCwgaSApLAo9MjAKICAgICAgICAgICAgICdkYXRhc2V0X3V1aWQnICA6IGxhbWJk
YSB0LCBpLCBrOiBzdHIoIGkuZGF0YXNldC51dWlkICkgaWYgaS5kPQphdGFzZXQudXVpZCBlbHNl
IE5vbmUsCiAgICAgICAgICAgICAndXVpZCcgICAgICAgICAgOiBsYW1iZGEgdCwgaSwgazogc2Vs
Zi5zZXJpYWxpemVyc1sgJ2RhdGFzZXRfdT0KdWlkJyBdKCB0LCBpLCBrICksCkBAIC00MjgsNiAr
NDQ5LDcgQEAKPTIwCiAgICAgZGVmIHNlcmlhbGl6ZSggc2VsZiwgdHJhbnMsIGhkYSwga2V5cyAp
OgogICAgICAgICAiIiIKKyAgICAgICAgT3ZlcnJpZGUgdG8gYWRkIG1ldGFkYXRhIGFzIGZsYXR0
ZW5lZCBrZXlzIG9uIHRoZSBzZXJpYWxpemVkIEhEQS4KICAgICAgICAgIiIiCiAgICAgICAgICMg
aWYgJ21ldGFkYXRhJyBpc24ndCByZW1vdmVkIGZyb20ga2V5cyBoZXJlIHNlcmlhbGl6ZSB3aWxs
IHJldHJpZT0KdmUgdGhlIHVuLXNlcmlhbGl6YWJsZSBNZXRhZGF0YUNvbGxlY3Rpb24KICAgICAg
ICAgI1RPRE86IHJlbW92ZSB0aGVzZSB3aGVuIG1ldGFkYXRhIGlzIHN1Yi1vYmplY3QKQEAgLTQ3
MCw2ICs0OTIsNyBAQAo9MjAKICAgICBkZWYgc2VyaWFsaXplX21ldGFkYXRhKCBzZWxmLCB0cmFu
cywgaGRhLCBrZXksIGV4Y2x1ZGVkPTNETm9uZSApOgogICAgICAgICAiIiIKKyAgICAgICAgQ3lj
bGUgdGhyb3VnaCBtZXRhZGF0YSBhbmQgcmV0dXJuIGFzIGRpY3Rpb25hcnkuCiAgICAgICAgICIi
IgogICAgICAgICAjIGRia2V5IGlzIGEgcmVwZWF0IGFjdHVhbGx5IChtZXRhZGF0YV9kYmtleSA9
M0Q9M0QgZ2Vub21lX2J1aWxkKQogICAgICAgICAjZXhjbHVkZWQgPTNEIFsgJ2Ria2V5JyBdIGlm
IGV4Y2x1ZGVkIGlzIE5vbmUgZWxzZSBleGNsdWRlZApAQCAtNDk3LDYgKzUyMCw3IEBACiAgICAg
IyBhZGQgdG8gc2VyaWFsaXplX21ldGFkYXRhIGFib3ZlCiAgICAgZGVmIHNlcmlhbGl6ZV9tZXRh
X2ZpbGVzKCBzZWxmLCB0cmFucywgaGRhLCBrZXkgKToKICAgICAgICAgIiIiCisgICAgICAgIEN5
Y2xlIHRocm91Z2ggbWV0YSBmaWxlcyBhbmQgcmV0dXJuIHRoZW0gYXMgYSBsaXN0IG9mIGRpY3Rp
b25hcmllcy4KICAgICAgICAgIiIiCiAgICAgICAgIG1ldGFfZmlsZXMgPTNEIFtdCiAgICAgICAg
IGZvciBtZXRhX3R5cGUgaW4gaGRhLm1ldGFkYXRhLnNwZWMua2V5cygpOgpAQCAtNTA4LDYgKzUz
Miw3IEBACiAgICAgI1RPRE86IGFuZCB0byBkYXRhc2V0IGluc3RlYWQgKHBhc3NpbmcgdGhyb3Vn
aCBvYmplY3Qgc3RvcmUpCiAgICAgZGVmIHNlcmlhbGl6ZV9maWxlX3BhdGgoIHNlbGYsIHRyYW5z
LCBoZGEsIGtleSApOgogICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIHRoZSBgZmlsZV9uYW1l
YCBvZiB0aGUgSERBIGlmIHRoZSBjb25maWcgZXhwb3NlcyBpdCwgTm9uZSBvPQp0aGVyd2lzZS4K
ICAgICAgICAgIiIiCiAjVE9ETzogYWxsb3cgYWRtaW4KICAgICAgICAgaWYgc2VsZi5hcHAuY29u
ZmlnLmV4cG9zZV9kYXRhc2V0X3BhdGg6CkBAIC01MTksNiArNTQ0LDcgQEAKPTIwCiAgICAgZGVm
IHNlcmlhbGl6ZV91cmxzKCBzZWxmLCB0cmFucywgaGRhLCBrZXkgKToKICAgICAgICAgIiIiCisg
ICAgICAgIFJldHVybiB3ZWIgY29udHJvbGxlciB1cmxzIHVzZWZ1bCBmb3IgdGhpcyBIREEuCiAg
ICAgICAgICIiIgogICAgICAgICB1cmxfZm9yID0zRCBnYWxheHkud2ViLnVybF9mb3IKICAgICAg
ICAgZW5jb2RlZF9pZCA9M0Qgc2VsZi5zZWN1cml0eS5lbmNvZGVfaWQoIGhkYS5pZCApCkBAIC01
MzksMTAyICs1NjUsMjIgQEAKICAgICAgICAgcmV0dXJuIHVybHMKPTIwCj0yMAotICAgICNUT0RP
OiBtb3ZlIGludG8gc2VyaWFsaXplciBiZWxvdwotICAgICNkZWYgZ2V0X2hkYV9kaWN0KCBzZWxm
LCB0cmFucywgaGRhICk6Ci0gICAgIyAgICAiIiIKLSAgICAjICAgIFJldHVybiBmdWxsIGRldGFp
bHMgb2YgdGhpcyBIREEgaW4gZGljdGlvbmFyeSBmb3JtLgotICAgICMgICAgIiIiCi0gICAgIyAg
ICAjcHJlY29uZGl0aW9uOiB0aGUgdXNlcidzIGFjY2VzcyB0byB0aGlzIGhkYSBoYXMgYWxyZWFk
eSBiZWVuIGNoZT0KY2tlZAotICAgICMgICAgI1RPRE86Pz8gcG9zdGNvbmRpdGlvbjogYWxsIGlk
cyBhcmUgZW5jb2RlZCAoaXMgdGhpcyByZWFsbHkgd2hhdCA9CndlIHdhbnQgYXQgdGhpcyBsZXZl
bD8pCi0gICAgIyAgICBleHBvc2VfZGF0YXNldF9wYXRoID0zRCB0cmFucy51c2VyX2lzX2FkbWlu
KCkgb3IgdHJhbnMuYXBwLmNvbmZpZz0KLmV4cG9zZV9kYXRhc2V0X3BhdGgKLSAgICAjICAgIGhk
YV9kaWN0ID0zRCBoZGEudG9fZGljdCggdmlldz0zRCdlbGVtZW50JywgZXhwb3NlX2RhdGFzZXRf
cGF0aD0KPTNEZXhwb3NlX2RhdGFzZXRfcGF0aCApCi0gICAgIyAgICBoZGFfZGljdFsgJ2FwaV90
eXBlJyBdID0zRCAiZmlsZSIKLSAgICAjCi0gICAgIyAgICAjIEFkZCBhZGRpdGlvbmFsIGF0dHJp
YnV0ZXMgdGhhdCBkZXBlbmQgb24gdHJhbnMgbXVzdCBiZSBhZGRlZCBoZT0KcmUgcmF0aGVyIHRo
YW4gYXQgdGhlIG1vZGVsIGxldmVsLgotICAgICMgICAgY2FuX2FjY2Vzc19oZGEgPTNEIHRyYW5z
LmFwcC5zZWN1cml0eV9hZ2VudC5jYW5fYWNjZXNzX2RhdGFzZXQoIHQ9CnJhbnMuZ2V0X2N1cnJl
bnRfdXNlcl9yb2xlcygpLCBoZGEuZGF0YXNldCApCi0gICAgIyAgICBjYW5fYWNjZXNzX2hkYSA9
M0QgKCB0cmFucy51c2VyX2lzX2FkbWluKCkgb3IgY2FuX2FjY2Vzc19oZGEgKQotICAgICMgICAg
aWYgbm90IGNhbl9hY2Nlc3NfaGRhOgotICAgICMgICAgICAgIHJldHVybiBzZWxmLmdldF9pbmFj
Y2Vzc2libGVfaGRhX2RpY3QoIHRyYW5zLCBoZGEgKQotICAgICMgICAgaGRhX2RpY3RbICdhY2Nl
c3NpYmxlJyBdID0zRCBUcnVlCi0gICAgIwotICAgICMgICAgI1RPRE86IEknbSB1bmNsZWFyIGFz
IHRvIHdoaWNoIGFjY2VzcyBwYXR0ZXJuIGlzIHJpZ2h0Ci0gICAgIyAgICBoZGFfZGljdFsgJ2Fu
bm90YXRpb24nIF0gPTNEIGhkYS5nZXRfaXRlbV9hbm5vdGF0aW9uX3N0ciggdHJhbnMucz0KYV9z
ZXNzaW9uLCBoZGEuaGlzdG9yeS51c2VyLCBoZGEgKQotICAgICMgICAgI2Fubm90YXRpb24gPTNE
IGdldGF0dHIoIGhkYSwgJ2Fubm90YXRpb24nLCBoZGEuZ2V0X2l0ZW1fYW5ub3RhdGk9Cm9uX3N0
ciggdHJhbnMuc2Ffc2Vzc2lvbiwgdHJhbnMudXNlciwgaGRhICkgKQotICAgICMKLSAgICAjICAg
ICMgLS0tLSByZXR1cm4gaGVyZSBpZiBkZWxldGVkIEFORCBwdXJnZWQgT1IgY2FuJ3QgYWNjZXNz
Ci0gICAgIyAgICBwdXJnZWQgPTNEICggaGRhLnB1cmdlZCBvciBoZGEuZGF0YXNldC5wdXJnZWQg
KQotICAgICMgICAgaWYgKCBoZGEuZGVsZXRlZCBhbmQgcHVyZ2VkICk6Ci0gICAgIyAgICAgICAg
I1RPRE86IHRvX2RpY3Qgc2hvdWxkIHJlYWxseSBnbyBBRlRFUiB0aGlzIC0gb25seSBzdW1tYXJ5
IGRhdGEKLSAgICAjICAgICAgICByZXR1cm4gdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2RpY3RfaWRz
KCBoZGFfZGljdCApCi0gICAgIwotICAgICMgICAgaWYgZXhwb3NlX2RhdGFzZXRfcGF0aDoKLSAg
ICAjICAgICAgICB0cnk6Ci0gICAgIyAgICAgICAgICAgIGhkYV9kaWN0WyAnZmlsZV9uYW1lJyBd
ID0zRCBoZGEuZmlsZV9uYW1lCi0gICAgIyAgICAgICAgZXhjZXB0IG9iamVjdHN0b3JlLk9iamVj
dE5vdEZvdW5kOgotICAgICMgICAgICAgICAgICBsb2cuZXhjZXB0aW9uKCAnb2JqZWN0c3RvcmUu
T2JqZWN0Tm90Rm91bmQsIEhEQSAlcy4nLCBoZGE9Ci5pZCApCi0gICAgIwotICAgICMgICAgaGRh
X2RpY3RbICdkb3dubG9hZF91cmwnIF0gPTNEIGdhbGF4eS53ZWIudXJsX2ZvciggJ2hpc3Rvcnlf
Y29udGU9Cm50c19kaXNwbGF5JywKLSAgICAjICAgICAgICBoaXN0b3J5X2lkID0zRCB0cmFucy5z
ZWN1cml0eS5lbmNvZGVfaWQoIGhkYS5oaXN0b3J5LmlkICksCi0gICAgIyAgICAgICAgaGlzdG9y
eV9jb250ZW50X2lkID0zRCB0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIGhkYS5pZCApICkKLSAg
ICAjCi0gICAgIyAgICAjIGluZGVjZXMsIGFzc29jLiBtZXRhZGF0YSBmaWxlcywgZXRjLgotICAg
ICMgICAgbWV0YV9maWxlcyA9M0QgW10KLSAgICAjICAgIGZvciBtZXRhX3R5cGUgaW4gaGRhLm1l
dGFkYXRhLnNwZWMua2V5cygpOgotICAgICMgICAgICAgIGlmIGlzaW5zdGFuY2UoIGhkYS5tZXRh
ZGF0YS5zcGVjWyBtZXRhX3R5cGUgXS5wYXJhbSwgZ2FsYXh5LmQ9CmF0YXR5cGVzLm1ldGFkYXRh
LkZpbGVQYXJhbWV0ZXIgKToKLSAgICAjICAgICAgICAgICAgbWV0YV9maWxlcy5hcHBlbmQoIGRp
Y3QoIGZpbGVfdHlwZT0zRG1ldGFfdHlwZSApICkKLSAgICAjICAgIGlmIG1ldGFfZmlsZXM6Ci0g
ICAgIyAgICAgICAgaGRhX2RpY3RbICdtZXRhX2ZpbGVzJyBdID0zRCBtZXRhX2ZpbGVzCi0gICAg
IwotICAgICMgICAgIyBjdXJyZW50bHksIHRoZSB2aXogcmVnIGlzIG9wdGlvbmFsIC0gaGFuZGxl
IG9uL29mZgotICAgICMgICAgaWYgdHJhbnMuYXBwLnZpc3VhbGl6YXRpb25zX3JlZ2lzdHJ5Ogot
ICAgICMgICAgICAgIGhkYV9kaWN0WyAndmlzdWFsaXphdGlvbnMnIF0gPTNEIHRyYW5zLmFwcC52
aXN1YWxpemF0aW9uc19yZWc9CmlzdHJ5LmdldF92aXN1YWxpemF0aW9ucyggdHJhbnMsIGhkYSAp
Ci0gICAgIyAgICBlbHNlOgotICAgICMgICAgICAgIGhkYV9kaWN0WyAndmlzdWFsaXphdGlvbnMn
IF0gPTNEIGhkYS5nZXRfdmlzdWFsaXphdGlvbnMoKQotICAgICMgICAgI1RPRE86IGl0IG1heSBh
bHNvIGJlIHdpc2VyIHRvIHJlbW92ZSBmcm9tIGhlcmUgYW5kIGFkZCBhcyBBUEkgY2E9CmxsIHRo
YXQgbG9hZHMgdGhlIHZpc3VhbGl6YXRpb25zCi0gICAgIyAgICAjICAgICAgICAgICB3aGVuIHRo
ZSB2aXN1YWxpemF0aW9ucyBidXR0b24gaXMgY2xpY2tlZCAoaW5zdGVhZCBvZj0KIHByZWxvYWRp
bmcvcHJlLWNoZWNraW5nKQotICAgICMKLSAgICAjICAgICMgLS0tLSByZXR1cm4gaGVyZSBpZiBk
ZWxldGVkCi0gICAgIyAgICBpZiBoZGEuZGVsZXRlZCBhbmQgbm90IHB1cmdlZDoKLSAgICAjICAg
ICAgICByZXR1cm4gdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2RpY3RfaWRzKCBoZGFfZGljdCApCi0g
ICAgIwotICAgICMgICAgcmV0dXJuIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9kaWN0X2lkcyggaGRh
X2RpY3QgKQotCi0gICAgI2RlZiBnZXRfaW5hY2Nlc3NpYmxlX2hkYV9kaWN0KCBzZWxmLCB0cmFu
cywgaGRhICk6Ci0gICAgIyAgICByZXR1cm4gdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2RpY3RfaWRz
KHsKLSAgICAjICAgICAgICAnaWQnICAgICAgICA6IGhkYS5pZCwKLSAgICAjICAgICAgICAnaGlz
dG9yeV9pZCc6IGhkYS5oaXN0b3J5LmlkLAotICAgICMgICAgICAgICdoaWQnICAgICAgIDogaGRh
LmhpZCwKLSAgICAjICAgICAgICAnbmFtZScgICAgICA6IGhkYS5uYW1lLAotICAgICMgICAgICAg
ICdzdGF0ZScgICAgIDogaGRhLnN0YXRlLAotICAgICMgICAgICAgICdkZWxldGVkJyAgIDogaGRh
LmRlbGV0ZWQsCi0gICAgIyAgICAgICAgJ3Zpc2libGUnICAgOiBoZGEudmlzaWJsZSwKLSAgICAj
ICAgICAgICAnYWNjZXNzaWJsZSc6IEZhbHNlCi0gICAgIyAgICB9KQotCi0gICAgI2RlZiBnZXRf
aGRhX2RpY3Rfd2l0aF9lcnJvciggc2VsZiwgdHJhbnMsIGhkYT0zRE5vbmUsIGhpc3RvcnlfaWQ9
M0RObz0KbmUsIGlkPTNETm9uZSwgZXJyb3JfbXNnPTNEJ0Vycm9yJyApOgotICAgICMgICAgcmV0
dXJuIHRyYW5zLnNlY3VyaXR5LmVuY29kZV9kaWN0X2lkcyh7Ci0gICAgIyAgICAgICAgJ2lkJyAg
ICAgICAgOiBoZGEuaWQgaWYgaGRhIGVsc2UgaWQsCi0gICAgIyAgICAgICAgJ2hpc3RvcnlfaWQn
OiBoZGEuaGlzdG9yeS5pZCBpZiBoZGEgZWxzZSBoaXN0b3J5X2lkLAotICAgICMgICAgICAgICdo
aWQnICAgICAgIDogaGRhLmhpZCBpZiBoZGEgZWxzZSAnKHVua25vd24pJywKLSAgICAjICAgICAg
ICAnbmFtZScgICAgICA6IGhkYS5uYW1lIGlmIGhkYSBlbHNlICcodW5rbm93biknLAotICAgICMg
ICAgICAgICdlcnJvcicgICAgIDogZXJyb3JfbXNnLAotICAgICMgICAgICAgICdzdGF0ZScgICAg
IDogdHJhbnMubW9kZWwuRGF0YXNldC5zdGF0ZXMuTkVXCi0gICAgIyAgICB9KQotCi0KICMgPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNE
PTNEPTNECi1jbGFzcyBIREFEZXNlcmlhbGl6ZXIoIGJhc2UuTW9kZWxEZXNlcmlhbGl6ZXIgKToK
K2NsYXNzIEhEQURlc2VyaWFsaXplciggYmFzZS5Nb2RlbERlc2VyaWFsaXplciwKKyAgICAgICAg
dGFnZ2FibGUuVGFnZ2FibGVEZXNlcmlhbGl6ZXIsIGFubm90YXRhYmxlLkFubm90YXRhYmxlRGVz
ZXJpYWxpemVyPQogKToKICAgICAiIiIKICAgICBJbnRlcmZhY2Uvc2VydmljZSBvYmplY3QgZm9y
IHZhbGlkYXRpbmcgYW5kIGRlc2VyaWFsaXppbmcgZGljdGlvbmFyaWVzPQogaW50byBoaXN0b3Jp
ZXMuCiAgICAgIiIiCj0yMAogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CiAgICAgICAg
IHN1cGVyKCBIREFEZXNlcmlhbGl6ZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwICkKLSAgICAgICAg
c2VsZi5oZGFfbWdyID0zRCBIREFNYW5hZ2VyKCBhcHAgKQorICAgICAgICBzZWxmLmhkYV9tYW5h
Z2VyID0zRCBIREFNYW5hZ2VyKCBhcHAgKQo9MjAKICAgICAjYXNzdW1lczogaW5jb21pbmcgZnJv
bSBqc29uLmxvYWRzIGFuZCBzYW5pdGl6ZWQKICAgICBkZWYgYWRkX2Rlc2VyaWFsaXplcnMoIHNl
bGYgKToKICAgICAgICAgc3VwZXIoIEhEQURlc2VyaWFsaXplciwgc2VsZiApLmFkZF9kZXNlcmlh
bGl6ZXJzKCkKKyAgICAgICAgdGFnZ2FibGUuVGFnZ2FibGVEZXNlcmlhbGl6ZXIuYWRkX2Rlc2Vy
aWFsaXplcnMoIHNlbGYgKQorICAgICAgICBhbm5vdGF0YWJsZS5Bbm5vdGF0YWJsZURlc2VyaWFs
aXplci5hZGRfZGVzZXJpYWxpemVycyggc2VsZiApCiAgICAgICAgIHNlbGYuZGVzZXJpYWxpemVy
cy51cGRhdGUoewogICAgICAgICAgICAgJ25hbWUnICAgICAgICAgIDogc2VsZi5kZXNlcmlhbGl6
ZV9iYXNlc3RyaW5nLAogICAgICAgICAgICAgJ3Zpc2libGUnICAgICAgIDogc2VsZi5kZXNlcmlh
bGl6ZV9ib29sLAoKZGlmZiAtciAyZTk5MGNhZWZjOTQzZWIyYjFkNGE5NGFmNTA4YzIyYmIzNGI3
ZmE2IC1yIDQyOGU1OGZjZDMzYTlmOTM0MjkyZmNhPQpkYWM4NDBjNzU3ODNiY2Q2MiBsaWIvZ2Fs
YXh5L21hbmFnZXJzL2hpc3Rvcmllcy5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL2hpc3Rv
cmllcy5weQorKysgYi9saWIvZ2FsYXh5L21hbmFnZXJzL2hpc3Rvcmllcy5weQpAQCAtNywxMiAr
NywxMSBAQAo9MjAKIGZyb20gZ2FsYXh5IGltcG9ydCBleGNlcHRpb25zCiBmcm9tIGdhbGF4eSBp
bXBvcnQgbW9kZWwKLWZyb20gZ2FsYXh5Lm1vZGVsIGltcG9ydCBvcm0KPTIwCiBpbXBvcnQgYmFz
ZQogaW1wb3J0IHNoYXJhYmxlCiBpbXBvcnQgaGRhcwotaW1wb3J0IGdhbGF4eS5tYW5hZ2Vycy5j
b2xsZWN0aW9uc191dGlsCitpbXBvcnQgY29sbGVjdGlvbnNfdXRpbAo9MjAKIGltcG9ydCBnYWxh
eHkud2ViCj0yMApAQCAtMjIsMjcgKzIxLDMxIEBACj0yMAogIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKIGNsYXNzIEhp
c3RvcnlNYW5hZ2VyKCBzaGFyYWJsZS5TaGFyYWJsZU1vZGVsTWFuYWdlciwgYmFzZS5QdXJnYWJs
ZU1vZGVsSW50PQplcmZhY2UgKToKLSAgICAiIiIKLSAgICAiIiIKPTIwCiAgICAgbW9kZWxfY2xh
c3MgPTNEIG1vZGVsLkhpc3RvcnkKICAgICBkZWZhdWx0X29yZGVyX2J5ID0zRCAoIG1vZGVsLkhp
c3RvcnkuY3JlYXRlX3RpbWUsICkKICAgICBmb3JlaWduX2tleV9uYW1lID0zRCAnaGlzdG9yeScK
ICAgICB1c2VyX3NoYXJlX21vZGVsID0zRCBtb2RlbC5IaXN0b3J5VXNlclNoYXJlQXNzb2NpYXRp
b24KPTIwCisgICAgdGFnX2Fzc29jID0zRCBtb2RlbC5IaXN0b3J5VGFnQXNzb2NpYXRpb24KKyAg
ICBhbm5vdGF0aW9uX2Fzc29jID0zRCBtb2RlbC5IaXN0b3J5QW5ub3RhdGlvbkFzc29jaWF0aW9u
CisgICAgcmF0aW5nX2Fzc29jID0zRCBtb2RlbC5IaXN0b3J5UmF0aW5nQXNzb2NpYXRpb24KKwor
ICAgICNUT0RPOiBpbmNvcnBvcmF0ZSBpbXAvZXhwIChvciBsaW5rIHRvKQorCiAgICAgZGVmIF9f
aW5pdF9fKCBzZWxmLCBhcHAsICphcmdzLCAqKmt3YXJncyApOgotICAgICAgICAiIiIKLSAgICAg
ICAgIiIiCiAgICAgICAgIHN1cGVyKCBIaXN0b3J5TWFuYWdlciwgc2VsZiApLl9faW5pdF9fKCBh
cHAsICphcmdzLCAqKmt3YXJncyApCi0gICAgICAgIHNlbGYuaGRhX21nciA9M0QgaGRhcy5IREFN
YW5hZ2VyKCBhcHAgKQorICAgICAgICBzZWxmLmhkYV9tYW5hZ2VyID0zRCBoZGFzLkhEQU1hbmFn
ZXIoIGFwcCApCj0yMAogICAgIGRlZiBjb3B5KCBzZWxmLCB0cmFucywgaGlzdG9yeSwgdXNlciwg
Kiprd2FyZ3MgKToKICAgICAgICAgIiIiCisgICAgICAgIENvcHkgYW5kIHJldHVybiB0aGUgZ2l2
ZW4gYGhpc3RvcnlgLgogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIGhpc3RvcnkuY29weSgg
dGFyZ2V0X3VzZXI9M0R1c2VyLCAqKmt3YXJncyApCj0yMAogICAgIGRlZiBtb3N0X3JlY2VudCgg
c2VsZiwgdHJhbnMsIHVzZXIsICoqa3dhcmdzICk6CiAgICAgICAgICIiIgorICAgICAgICBSZXR1
cm4gdGhlIG1vc3QgcmVjZW50bHkgdXBkYXRlIGhpc3RvcnkgZm9yIHRoZSB1c2VyLgogICAgICAg
ICAiIiIKICNUT0RPOiBub3JtYWxpemUgdGhpcwogICAgICAgICBpZiBub3QgdXNlcjoKQEAgLTU4
LDcgKzYxLDcgQEAKICAgICAgICAgb3JkZXJlZCBieSB1cGRhdGUgdGltZS4KICAgICAgICAgIiIi
CiAgICAgICAgICMgaGFuZGxlIGRlZmF1bHQgYW5kL29yIGFub255bW91cyB1c2VyICh3aGljaCBz
dGlsbCBtYXkgbm90IGhhdmUgYT0KIGhpc3RvcnkgeWV0KQotICAgICAgICBpZiBzZWxmLnVzZXJf
bWdyLmlzX2Fub255bW91cyggdXNlciApOgorICAgICAgICBpZiBzZWxmLnVzZXJfbWFuYWdlci5p
c19hbm9ueW1vdXMoIHVzZXIgKToKICAgICAgICAgICAgIGN1cnJlbnRfaGlzdG9yeSA9M0QgdHJh
bnMuZ2V0X2hpc3RvcnkoKQogICAgICAgICAgICAgcmV0dXJuIFsgY3VycmVudF9oaXN0b3J5IF0g
aWYgY3VycmVudF9oaXN0b3J5IGVsc2UgW10KPTIwCkBAIC02OSwyMCArNzIsMjEgQEAKICAgICAg
ICAgVHJ1ZSBpZiB0aGUgY3VycmVudCB1c2VyIGlzIHRoZSBvd25lciBvZiB0aGUgZ2l2ZW4gaGlz
dG9yeS4KICAgICAgICAgIiIiCiAgICAgICAgICMgYW5vbiB1c2VycyBhcmUgb25seSBhbGxvd2Vk
IHRvIHZpZXcgdGhlaXIgY3VycmVudCBoaXN0b3J5Ci0gICAgICAgIGlmIHNlbGYudXNlcl9tZ3Iu
aXNfYW5vbnltb3VzKCB1c2VyICkgYW5kIGhpc3RvcnkgPTNEPTNEIHRyYW5zLmdldD0KX2hpc3Rv
cnkoKToKKyAgICAgICAgaWYgc2VsZi51c2VyX21hbmFnZXIuaXNfYW5vbnltb3VzKCB1c2VyICkg
YW5kIGhpc3RvcnkgPTNEPTNEIHRyYW5zPQouZ2V0X2hpc3RvcnkoKToKICAgICAgICAgICAgIHJl
dHVybiBUcnVlCiAgICAgICAgIHJldHVybiBzdXBlciggSGlzdG9yeU1hbmFnZXIsIHNlbGYgKS5p
c19vd25lciggdHJhbnMsIGhpc3RvcnksIHVzZT0KciApCj0yMAogICAgICMgLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi49
Ci4uLi4uIHB1cmdhYmxlCiAgICAgZGVmIHB1cmdlKCBzZWxmLCB0cmFucywgaGlzdG9yeSwgZmx1
c2g9M0RUcnVlLCAqKmt3YXJncyApOgogICAgICAgICAiIiIKKyAgICAgICAgUHVyZ2UgdGhpcyBo
aXN0b3J5IGFuZCBhbGwgSERBcywgQ29sbGVjdGlvbnMsIGFuZCBEYXRhc2V0cyBpbnNpZGUgPQp0
aGlzIGhpc3RvcnkuCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLmhkYV9tZ3IuZGF0YXNldF9t
Z3IuZXJyb3JfdW5sZXNzX2RhdGFzZXRfcHVyZ2VfYWxsb3dlZCggdHJhbnM9CiwgaGlzdG9yeSAp
CisgICAgICAgIHNlbGYuaGRhX21hbmFnZXIuZGF0YXNldF9tYW5hZ2VyLmVycm9yX3VubGVzc19k
YXRhc2V0X3B1cmdlX2FsbG93ZT0KZCggdHJhbnMsIGhpc3RvcnkgKQo9MjAKICAgICAgICAgIyBG
aXJzdCBwdXJnZSBhbGwgdGhlIGRhdGFzZXRzCiAgICAgICAgIGZvciBoZGEgaW4gaGlzdG9yeS5k
YXRhc2V0czoKICAgICAgICAgICAgIGlmIG5vdCBoZGEucHVyZ2VkOgotICAgICAgICAgICAgICAg
IHNlbGYuaGRhX21nci5wdXJnZSggdHJhbnMsIGhkYSwgZmx1c2g9M0RUcnVlICkKKyAgICAgICAg
ICAgICAgICBzZWxmLmhkYV9tYW5hZ2VyLnB1cmdlKCB0cmFucywgaGRhLCBmbHVzaD0zRFRydWUg
KQo9MjAKICAgICAgICAgIyBOb3cgbWFyayB0aGUgaGlzdG9yeSBhcyBwdXJnZWQKICAgICAgICAg
c3VwZXIoIEhpc3RvcnlNYW5hZ2VyLCBzZWxmICkucHVyZ2UoIHRyYW5zLCBoaXN0b3J5LCBmbHVz
aD0zRGZsdXNoPQosICoqa3dhcmdzICkKQEAgLTkzLDE3ICs5NywyMCBAQAogICAgICMgLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi49Ci4uLi4uIGN1cnJlbnQKICAgICBkZWYgZ2V0X2N1cnJlbnQoIHNlbGYsIHRyYW5zICk6
CiAgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gdGhlIGN1cnJlbnQgaGlzdG9yeS4KICAgICAg
ICAgIiIiCiAgICAgICAgIHJldHVybiB0cmFucy5nZXRfaGlzdG9yeSgpCj0yMAogICAgIGRlZiBz
ZXRfY3VycmVudCggc2VsZiwgdHJhbnMsIGhpc3RvcnkgKToKICAgICAgICAgIiIiCisgICAgICAg
IFNldCB0aGUgY3VycmVudCBoaXN0b3J5LgogICAgICAgICAiIiIKICAgICAgICAgdHJhbnMuc2V0
X2hpc3RvcnkoIGhpc3RvcnkgKQogICAgICAgICByZXR1cm4gaGlzdG9yeQo9MjAKICAgICBkZWYg
c2V0X2N1cnJlbnRfYnlfaWQoIHNlbGYsIHRyYW5zLCBoaXN0b3J5X2lkICk6CiAgICAgICAgICIi
IgorICAgICAgICBTZXQgdGhlIGN1cnJlbnQgaGlzdG9yeSBieSBhbiBpZC4KICAgICAgICAgIiIi
CiAgICAgICAgIHJldHVybiBzZWxmLnNldF9jdXJyZW50KCB0cmFucywgc2VsZi5ieV9pZCggdHJh
bnMsIGhpc3RvcnlfaWQgKSApCj0yMApAQCAtMTE3LDcgKzEyNCw3IEBACiAgICAgICAgICNUT0RP
OiBpbnN0YW50aWF0ZSBoZXJlPyByZWFsbHk/CiAgICAgICAgIGhpc3Rvcnlfc2VyaWFsaXplciA9
M0QgSGlzdG9yeVNlcmlhbGl6ZXIoIHNlbGYuYXBwICkKICAgICAgICAgaGRhX3NlcmlhbGl6ZXIg
PTNEIGhkYXMuSERBU2VyaWFsaXplciggc2VsZi5hcHAgKQotICAgICAgICBjb2xsZWN0aW9uX2Rp
Y3RpZmllciA9M0QgZ2FsYXh5Lm1hbmFnZXJzLmNvbGxlY3Rpb25zX3V0aWwuZGljdGlmeV89CmRh
dGFzZXRfY29sbGVjdGlvbl9pbnN0YW5jZQorICAgICAgICBjb2xsZWN0aW9uX2RpY3RpZmllciA9
M0QgY29sbGVjdGlvbnNfdXRpbC5kaWN0aWZ5X2RhdGFzZXRfY29sbGVjdGk9Cm9uX2luc3RhbmNl
Cj0yMAogICAgICAgICBoaXN0b3J5X2RpY3Rpb25hcnkgPTNEIHt9CiAgICAgICAgIGNvbnRlbnRz
X2RpY3Rpb25hcmllcyA9M0QgW10KQEAgLTE2Myw2ICsxNzAsOCBAQAogICAgICMgcmVtb3ZlIHRo
aXMKICAgICBkZWYgZ2V0X3N0YXRlX2NvdW50cyggc2VsZiwgdHJhbnMsIGhpc3RvcnksIGV4Y2x1
ZGVfZGVsZXRlZD0zRFRydWUsIGV4PQpjbHVkZV9oaWRkZW49M0RGYWxzZSApOgogICAgICAgICAi
IiIKKyAgICAgICAgUmV0dXJuIGEgZGljdGlvbmFyeSBrZXllZCB0byBwb3NzaWJsZSBkYXRhc2V0
IHN0YXRlcyBhbmQgdmFsdWVkIHdpPQp0aCB0aGUgbnVtYmVyCisgICAgICAgIG9mIGRhdGFzZXRz
IGluIHRoaXMgaGlzdG9yeSB0aGF0IGhhdmUgdGhvc2Ugc3RhdGVzLgogICAgICAgICAiIiIKICAg
ICAgICAgI1RPRE86IHRoZSBkZWZhdWx0IGZsYWdzIGFib3ZlIG1heSBub3QgbWFrZSBhIGxvdCBv
ZiBzZW5zZSAoVCxUPykKICAgICAgICAgc3RhdGVfY291bnRzID0zRCB7fQpAQCAtMTgxLDYgKzE5
MCw4IEBACiAgICAgIyByZW1vdmUgdGhpcwogICAgIGRlZiBnZXRfc3RhdGVfaWRzKCBzZWxmLCB0
cmFucywgaGlzdG9yeSApOgogICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIGEgZGljdGlvbmFy
eSBrZXllZCB0byBwb3NzaWJsZSBkYXRhc2V0IHN0YXRlcyBhbmQgdmFsdWVkIHdpPQp0aCBsaXN0
cworICAgICAgICBjb250YWluaW5nIHRoZSBpZHMgb2YgZWFjaCBIREEgaW4gdGhhdCBzdGF0ZS4K
ICAgICAgICAgIiIiCiAgICAgICAgIHN0YXRlX2lkcyA9M0Qge30KICAgICAgICAgZm9yIHN0YXRl
IGluIG1vZGVsLkRhdGFzZXQuc3RhdGVzLnZhbHVlcygpOgpAQCAtMTk1LDcgKzIwNiw4IEBACj0y
MAogICAgICNUT0RPOiByZW1vdmUgdGhpcyAoaXMgc3RhdGUgdXNlZC91c2VmdWw/KQogICAgIGRl
ZiBnZXRfaGlzdG9yeV9zdGF0ZSggc2VsZiwgdHJhbnMsIGhpc3RvcnkgKToKLSAgICAgICAgIiIi
UmV0dXJucyB0aGUgaGlzdG9yeSBzdGF0ZSBiYXNlZCBvbiB0aGUgc3RhdGVzIG9mIHRoZSBIREFz
IGl0IGNvPQpudGFpbnMuCisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5zIHRoZSBoaXN0b3J5
IHN0YXRlIGJhc2VkIG9uIHRoZSBzdGF0ZXMgb2YgdGhlIEhEQXMgaXQgY29udGE9Cmlucy4KICAg
ICAgICAgIiIiCiAgICAgICAgIHN0YXRlcyA9M0QgbW9kZWwuRGF0YXNldC5zdGF0ZXMKPTIwCkBA
IC0yMzcsOCArMjQ5LDggQEAKPTIwCiAgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToKICAg
ICAgICAgc3VwZXIoIEhpc3RvcnlTZXJpYWxpemVyLCBzZWxmICkuX19pbml0X18oIGFwcCApCi0g
ICAgICAgIHNlbGYuaGlzdG9yeV9tZ3IgPTNEIEhpc3RvcnlNYW5hZ2VyKCBhcHAgKQotICAgICAg
ICBzZWxmLmhkYV9tZ3IgPTNEIGhkYXMuSERBTWFuYWdlciggYXBwICkKKyAgICAgICAgc2VsZi5o
aXN0b3J5X21hbmFnZXIgPTNEIEhpc3RvcnlNYW5hZ2VyKCBhcHAgKQorICAgICAgICBzZWxmLmhk
YV9tYW5hZ2VyID0zRCBoZGFzLkhEQU1hbmFnZXIoIGFwcCApCiAgICAgICAgIHNlbGYuaGRhX3Nl
cmlhbGl6ZXIgPTNEIGhkYXMuSERBU2VyaWFsaXplciggYXBwICkKPTIwCiAgICAgICAgIHN1bW1h
cnlfdmlldyA9M0QgWwpAQCAtMjkxLDE3ICszMDMsMTUgQEAKICAgICAgICAgICAgICdzaXplJyAg
ICAgICAgICA6IGxhbWJkYSB0LCBpLCBrOiBpbnQoIGkuZ2V0X2Rpc2tfc2l6ZSgpICksCiAgICAg
ICAgICAgICAnbmljZV9zaXplJyAgICAgOiBsYW1iZGEgdCwgaSwgazogaS5nZXRfZGlza19zaXpl
KCBuaWNlX3NpemU9Cj0zRFRydWUgKSwKPTIwCi0gICAgICAgICAgICAnYW5ub3RhdGlvbicgICAg
OiBzZWxmLnNlcmlhbGl6ZV9hbm5vdGF0aW9uLAotICAgICAgICAgICAgJ3RhZ3MnICAgICAgICAg
IDogc2VsZi5zZXJpYWxpemVfdGFncywKICAgICAgICAgICAgICd1cmwnICAgICAgICAgICA6IGxh
bWJkYSB0LCBpLCBrOiBnYWxheHkud2ViLnVybF9mb3IoICdoaXN0b3J5PQonLCBpZD0zRHQuc2Vj
dXJpdHkuZW5jb2RlX2lkKCBpLmlkICkgKSwKICAgICAgICAgICAgICdjb250ZW50c191cmwnICA6
IGxhbWJkYSB0LCBpLCBrOgogICAgICAgICAgICAgICAgIGdhbGF4eS53ZWIudXJsX2ZvciggJ2hp
c3RvcnlfY29udGVudHMnLCBoaXN0b3J5X2lkPTNEdC5zZWM9CnVyaXR5LmVuY29kZV9pZCggaS5p
ZCApICksCiAgICAgICAgICAgICAnZW1wdHknICAgICAgICAgOiBsYW1iZGEgdCwgaSwgazogbGVu
KCBpLmRhdGFzZXRzICkgPD0zRCAwLAo9MjAKICAgICAgICAgICAgICdoZGFzJyAgICAgICAgICA6
IGxhbWJkYSB0LCBpLCBrOiBbIHQuc2VjdXJpdHkuZW5jb2RlX2lkKCBoZGEuPQppZCApIGZvciBo
ZGEgaW4gaS5kYXRhc2V0cyBdLAotICAgICAgICAgICAgJ3N0YXRlJyAgICAgICAgIDogbGFtYmRh
IHQsIGksIGs6IHNlbGYuaGlzdG9yeV9tZ3IuZ2V0X2hpc3Rvcnk9Cl9zdGF0ZSggdCwgaSApLAot
ICAgICAgICAgICAgJ3N0YXRlX2RldGFpbHMnIDogbGFtYmRhIHQsIGksIGs6IHNlbGYuaGlzdG9y
eV9tZ3IuZ2V0X3N0YXRlX2M9Cm91bnRzKCB0LCBpICksCi0gICAgICAgICAgICAnc3RhdGVfaWRz
JyAgICAgOiBsYW1iZGEgdCwgaSwgazogc2VsZi5oaXN0b3J5X21nci5nZXRfc3RhdGVfaT0KZHMo
IHQsIGkgKSwKKyAgICAgICAgICAgICdzdGF0ZScgICAgICAgICA6IGxhbWJkYSB0LCBpLCBrOiBz
ZWxmLmhpc3RvcnlfbWFuYWdlci5nZXRfaGlzPQp0b3J5X3N0YXRlKCB0LCBpICksCisgICAgICAg
ICAgICAnc3RhdGVfZGV0YWlscycgOiBsYW1iZGEgdCwgaSwgazogc2VsZi5oaXN0b3J5X21hbmFn
ZXIuZ2V0X3N0YT0KdGVfY291bnRzKCB0LCBpICksCisgICAgICAgICAgICAnc3RhdGVfaWRzJyAg
ICAgOiBsYW1iZGEgdCwgaSwgazogc2VsZi5oaXN0b3J5X21hbmFnZXIuZ2V0X3N0YT0KdGVfaWRz
KCB0LCBpICksCiAgICAgICAgICAgICAnY29udGVudHMnICAgICAgOiBzZWxmLnNlcmlhbGl6ZV9j
b250ZW50cwogICAgICAgICB9KQo9MjAKQEAgLTMzMyw3ICszNDMsNyBAQAo9MjAKICAgICBkZWYg
X19pbml0X18oIHNlbGYsIGFwcCApOgogICAgICAgICBzdXBlciggSGlzdG9yeURlc2VyaWFsaXpl
ciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQotICAgICAgICBzZWxmLmhpc3RvcnlfbWdyID0zRCBI
aXN0b3J5TWFuYWdlciggYXBwICkKKyAgICAgICAgc2VsZi5oaXN0b3J5X21hbmFnZXIgPTNEIEhp
c3RvcnlNYW5hZ2VyKCBhcHAgKQo9MjAKICAgICAjYXNzdW1lczogaW5jb21pbmcgZnJvbSBqc29u
LmxvYWRzIGFuZCBzYW5pdGl6ZWQKICAgICBkZWYgYWRkX2Rlc2VyaWFsaXplcnMoIHNlbGYgKToK
QEAgLTM0MSwxMCArMzUxLDYgQEAKICAgICAgICAgc2VsZi5kZXNlcmlhbGl6ZXJzLnVwZGF0ZSh7
CiAgICAgICAgICAgICAnbmFtZScgICAgICAgICAgOiBzZWxmLmRlc2VyaWFsaXplX2Jhc2VzdHJp
bmcsCiAgICAgICAgICAgICAnZ2Vub21lX2J1aWxkJyAgOiBzZWxmLmRlc2VyaWFsaXplX2dlbm9t
ZV9idWlsZCwKLSAgICAgICAgICAgICMgbWl4aW46IGFubm90YXRhYmxlCi0gICAgICAgICAgICAn
YW5ub3RhdGlvbicgICAgOiBzZWxmLmRlc2VyaWFsaXplX2Fubm90YXRpb24sCi0gICAgICAgICAg
ICAjIG1peGluOiB0YWdnYWJsZQotICAgICAgICAgICAgJ3RhZ3MnICAgICAgICAgIDogc2VsZi5k
ZXNlcmlhbGl6ZV90YWdzLAo9MjAKICAgICAgICAgICAgICMgbWl4aW46IGRlbGV0YWJsZQogICAg
ICAgICAgICAgJ2RlbGV0ZWQnICAgICAgIDogc2VsZi5kZXNlcmlhbGl6ZV9ib29sLAoKZGlmZiAt
ciAyZTk5MGNhZWZjOTQzZWIyYjFkNGE5NGFmNTA4YzIyYmIzNGI3ZmE2IC1yIDQyOGU1OGZjZDMz
YTlmOTM0MjkyZmNhPQpkYWM4NDBjNzU3ODNiY2Q2MiBsaWIvZ2FsYXh5L21hbmFnZXJzL3BhZ2Vz
LnB5Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vycy9wYWdlcy5weQpAQCAt
MCwwICsxLDg5IEBACisiIiIKK01hbmFnZXIgYW5kIFNlcmlhbGl6ZXJzIGZvciBQYWdlcy4KKwor
UGFnZXMgYXJlIG1hcmt1cCBjcmVhdGVkIGFuZCBzYXZlZCBieSB1c2VycyB0aGF0IGNhbiBjb250
YWluIEdhbGF4eSBvYmplY3RzCisoc3VjaCBhcyBkYXRhc2V0cykgYW5kIGFyZSBvZnRlbiB1c2Vk
IHRvIGRlc2NyaWJlIG9yIHByZXNlbnQgYW4gYW5hbHlzaXMKK2Zyb20gd2l0aGluIEdhbGF4eS4K
KyIiIgorCitmcm9tIGdhbGF4eSBpbXBvcnQgZXhjZXB0aW9ucworZnJvbSBnYWxheHkgaW1wb3J0
IG1vZGVsCisKK2ltcG9ydCBiYXNlCitpbXBvcnQgc2hhcmFibGUKKworaW1wb3J0IGdhbGF4eS53
ZWIKKworaW1wb3J0IGxvZ2dpbmcKK2xvZyA9M0QgbG9nZ2luZy5nZXRMb2dnZXIoIF9fbmFtZV9f
ICkKKworCisjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9Cj0zRD0zRD0zRAorY2xhc3MgUGFnZU1hbmFnZXIoIHNoYXJhYmxlLlNoYXJhYmxl
TW9kZWxNYW5hZ2VyICk6CisgICAgIiIiCisgICAgIiIiCisKKyAgICBtb2RlbF9jbGFzcyA9M0Qg
bW9kZWwuUGFnZQorICAgIGRlZmF1bHRfb3JkZXJfYnkgPTNEICggbW9kZWwuUGFnZS5jcmVhdGVf
dGltZSwgKQorICAgIGZvcmVpZ25fa2V5X25hbWUgPTNEICdwYWdlJworICAgIHVzZXJfc2hhcmVf
bW9kZWwgPTNEIG1vZGVsLlBhZ2VVc2VyU2hhcmVBc3NvY2lhdGlvbgorCisgICAgdGFnX2Fzc29j
ID0zRCBtb2RlbC5QYWdlVGFnQXNzb2NpYXRpb24KKyAgICBhbm5vdGF0aW9uX2Fzc29jID0zRCBt
b2RlbC5QYWdlQW5ub3RhdGlvbkFzc29jaWF0aW9uCisgICAgcmF0aW5nX2Fzc29jID0zRCBtb2Rl
bC5QYWdlUmF0aW5nQXNzb2NpYXRpb24KKworICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwLCAq
YXJncywgKiprd2FyZ3MgKToKKyAgICAgICAgIiIiCisgICAgICAgICIiIgorICAgICAgICBzdXBl
ciggUGFnZU1hbmFnZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwLCAqYXJncywgKiprd2FyZ3MgKQor
CisgICAgZGVmIGNvcHkoIHNlbGYsIHRyYW5zLCBwYWdlLCB1c2VyLCAqKmt3YXJncyApOgorICAg
ICAgICAiIiIKKyAgICAgICAgIiIiCisgICAgICAgIHBhc3MKKworCisjIyA9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0QKK2Ns
YXNzIFBhZ2VTZXJpYWxpemVyKCBzaGFyYWJsZS5TaGFyYWJsZU1vZGVsU2VyaWFsaXplciApOgor
ICAgICIiIgorICAgIEludGVyZmFjZS9zZXJ2aWNlIG9iamVjdCBmb3Igc2VyaWFsaXppbmcgcGFn
ZXMgaW50byBkaWN0aW9uYXJpZXMuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oIHNlbGYs
IGFwcCApOgorICAgICAgICBzdXBlciggUGFnZVNlcmlhbGl6ZXIsIHNlbGYgKS5fX2luaXRfXygg
YXBwICkKKyAgICAgICAgc2VsZi5wYWdlX21hbmFnZXIgPTNEIFBhZ2VNYW5hZ2VyKCBhcHAgKQor
CisgICAgICAgIHN1bW1hcnlfdmlldyA9M0QgWworICAgICAgICBdCisgICAgICAgICMgaW4gdGhl
IFBhZ2VzJyBjYXNlLCBlYWNoIG9mIHRoZXNlIHZpZXdzIGluY2x1ZGVzIHRoZSBrZXlzIGZyb20g
dD0KaGUgcHJldmlvdXMKKyAgICAgICAgZGV0YWlsZWRfdmlldyA9M0Qgc3VtbWFyeV92aWV3ICsg
WworICAgICAgICBdCisgICAgICAgIHNlbGYuc2VyaWFsaXphYmxlX2tleXMgPTNEIGRldGFpbGVk
X3ZpZXcgKyBbXQorICAgICAgICBzZWxmLnZpZXdzID0zRCB7CisgICAgICAgICAgICAnc3VtbWFy
eScgICA6IHN1bW1hcnlfdmlldywKKyAgICAgICAgICAgICdkZXRhaWxlZCcgIDogZGV0YWlsZWRf
dmlldworICAgICAgICB9CisgICAgICAgIHNlbGYuZGVmYXVsdF92aWV3ID0zRCAnc3VtbWFyeScK
KworICAgIGRlZiBhZGRfc2VyaWFsaXplcnMoIHNlbGYgKToKKyAgICAgICAgc3VwZXIoIFBhZ2VT
ZXJpYWxpemVyLCBzZWxmICkuYWRkX3NlcmlhbGl6ZXJzKCkKKyAgICAgICAgc2VsZi5zZXJpYWxp
emVycy51cGRhdGUoeworICAgICAgICB9KQorCisKKyMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECitjbGFzcyBQYWdlRGVz
ZXJpYWxpemVyKCBzaGFyYWJsZS5TaGFyYWJsZU1vZGVsRGVzZXJpYWxpemVyICk6CisgICAgIiIi
CisgICAgSW50ZXJmYWNlL3NlcnZpY2Ugb2JqZWN0IGZvciB2YWxpZGF0aW5nIGFuZCBkZXNlcmlh
bGl6aW5nIGRpY3Rpb25hcmllcworICAgIGludG8gcGFnZXMuCisgICAgIiIiCisKKyAgICBkZWYg
X19pbml0X18oIHNlbGYsIGFwcCApOgorICAgICAgICBzdXBlciggUGFnZURlc2VyaWFsaXplciwg
c2VsZiApLl9faW5pdF9fKCBhcHAgKQorICAgICAgICBzZWxmLnBhZ2VfbWFuYWdlciA9M0QgUGFn
ZU1hbmFnZXIoIGFwcCApCisKKyAgICBkZWYgYWRkX2Rlc2VyaWFsaXplcnMoIHNlbGYgKToKKyAg
ICAgICAgc3VwZXIoIFBhZ2VEZXNlcmlhbGl6ZXIsIHNlbGYgKS5hZGRfZGVzZXJpYWxpemVycygp
CisgICAgICAgIHNlbGYuZGVzZXJpYWxpemVycy51cGRhdGUoeworICAgICAgICB9KQorICAgICAg
ICBzZWxmLmRlc2VyaWFsaXphYmxlX2tleXMgPTNEIHNlbGYuZGVzZXJpYWxpemVycy5rZXlzKCkK
CmRpZmYgLXIgMmU5OTBjYWVmYzk0M2ViMmIxZDRhOTRhZjUwOGMyMmJiMzRiN2ZhNiAtciA0Mjhl
NThmY2QzM2E5ZjkzNDI5MmZjYT0KZGFjODQwYzc1NzgzYmNkNjIgbGliL2dhbGF4eS9tYW5hZ2Vy
cy9yYXRhYmxlLnB5Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vycy9yYXRh
YmxlLnB5CkBAIC0wLDAgKzEsNDcgQEAKKyIiIgorTWl4aW5zIGZvciBSYXRhYmxlIG1vZGVsIG1h
bmFnZXJzIGFuZCBzZXJpYWxpemVycy4KKyIiIgorCitmcm9tIGdhbGF4eSBpbXBvcnQgZXhjZXB0
aW9ucworZnJvbSBnYWxheHkgaW1wb3J0IG1vZGVsCisKK2ltcG9ydCBsb2dnaW5nCitsb2cgPTNE
IGxvZ2dpbmcuZ2V0TG9nZ2VyKCBfX25hbWVfXyApCisKKworIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKK2NsYXNzIFJh
dGFibGVNYW5hZ2VySW50ZXJmYWNlKCBvYmplY3QgKToKKyAgICByYXRpbmdfYXNzb2MgPTNEIE5v
bmUKKworICAgICNUT0RPOiBtb3N0IG9mIHRoaXMgc2VlbXMgdG8gYmUgY292ZXJlZCBieSBpdGVt
X2F0dHJzLlVzZXNJdGVtUmF0aW5ncworCisKKyMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECitjbGFzcyBSYXRhYmxlU2Vy
aWFsaXplciggb2JqZWN0ICk6CisKKyAgICBkZWYgYWRkX3NlcmlhbGl6ZXJzKCBzZWxmICk6Cisg
ICAgICAgIHNlbGYuc2VyaWFsaXplcnNbICd1c2VyX3JhdGluZycgXSA9M0Qgc2VsZi5zZXJpYWxp
emVfdXNlcl9yYXRpbmcKKyAgICAgICAgc2VsZi5zZXJpYWxpemVyc1sgJ2NvbW11bml0eV9yYXRp
bmcnIF0gPTNEIHNlbGYuc2VyaWFsaXplX2NvbW11bml0PQp5X3JhdGluZworCisgICAgZGVmIHNl
cmlhbGl6ZV91c2VyX3JhdGluZyggc2VsZiwgdHJhbnMsIGl0ZW0sIGtleSApOgorICAgICAgICAi
IiIKKyAgICAgICAgIiIiCisgICAgICAgIHBhc3MKKworICAgIGRlZiBzZXJpYWxpemVfY29tbXVu
aXR5X3JhdGluZyggc2VsZiwgdHJhbnMsIGl0ZW0sIGtleSApOgorICAgICAgICAiIiIKKyAgICAg
ICAgIiIiCisgICAgICAgIHBhc3MKKworIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKK2NsYXNzIFJhdGFibGVEZXNlcmlh
bGl6ZXIoIG9iamVjdCApOgorICAgIHBhc3MKKworICAgIGRlZiBhZGRfZGVzZXJpYWxpemVycygg
c2VsZiApOgorICAgICAgICBwYXNzCisgICAgICAgICNzZWxmLmRlc2VyaWFsaXplcnNbICd1c2Vy
X3JhdGluZycgXSA9M0Qgc2VsZi5kZXNlcmlhbGl6ZV9yYXRpbmcKKworICAgICNkZWYgZGVzZXJp
YWxpemVfcmF0aW5nKCBzZWxmLCB0cmFucywgaXRlbSwga2V5LCB2YWwgKToKKyAgICAjICAgIHZh
bCA9M0Qgc2VsZi52YWxpZGF0ZS5pbnRfcmFuZ2UoIGtleSwgdmFsLCAwLCA1ICkKKyAgICAjICAg
IHJldHVybiBzZWxmLnNldF9yYXRpbmcuLi4oIHRyYW5zLCBpdGVtLCB2YWwsIHVzZXI9M0R0cmFu
cy51c2VyICkKKwoKZGlmZiAtciAyZTk5MGNhZWZjOTQzZWIyYjFkNGE5NGFmNTA4YzIyYmIzNGI3
ZmE2IC1yIDQyOGU1OGZjZDMzYTlmOTM0MjkyZmNhPQpkYWM4NDBjNzU3ODNiY2Q2MiBsaWIvZ2Fs
YXh5L21hbmFnZXJzL3NoYXJhYmxlLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvc2hhcmFi
bGUucHkKKysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vycy9zaGFyYWJsZS5weQpAQCAtMSwxMCArMSwy
MyBAQAogIiIiCitTdXBlcmNsYXNzIE1hbmFnZXIgYW5kIFNlcmlhbGl6ZXJzIGZvciBTaGFyYWJs
ZSBvYmplY3RzLgorCitBIHNoYXJhYmxlIEdhbGF4eSBvYmplY3Q6CisgICAgaGFzIGFuIG93bmVy
L2NyZWF0b3IgVXNlcgorICAgIGlzIHNoYXJhYmxlIHdpdGggb3RoZXIsIHNwZWNpZmljIFVzZXJz
CisgICAgaXMgaW1wb3J0YWJsZSAoY29weWFibGUpIGJ5IHVzZXJzIHRoYXQgaGF2ZSBhY2Nlc3MK
KyAgICBoYXMgYSBzbHVnIHdoaWNoIGNhbiBiZSB1c2VkIGFzIGEgbGluayB0byB2aWV3IHRoZSBy
ZXNvdXJjZQorICAgIGNhbiBiZSBwdWJsaXNoZWQgZWZmZWN0aXZlbHkgbWFraW5nIGl0IGF2YWls
YWJsZSB0byBhbGwgb3RoZXIgVXNlcnMKKyAgICBjYW4gYmUgcmF0ZWQKICIiIgorCiBpbXBvcnQg
cmUKPTIwCiBmcm9tIGdhbGF4eSBpbXBvcnQgZXhjZXB0aW9ucwo9MjAKIGltcG9ydCBiYXNlCitp
bXBvcnQgdGFnZ2FibGUKK2ltcG9ydCBhbm5vdGF0YWJsZQoraW1wb3J0IHJhdGFibGUKIGltcG9y
dCB1c2Vycwo9MjAKIGltcG9ydCBsb2dnaW5nCkBAIC0xMiwxNiArMjUsOCBAQAo9MjAKPTIwCiAj
ID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
Cj0zRD0zRD0zRAotY2xhc3MgU2hhcmFibGVNb2RlbE1hbmFnZXIoIGJhc2UuTW9kZWxNYW5hZ2Vy
LCBiYXNlLk93bmFibGVNb2RlbEludGVyZmFjZSw9CiBiYXNlLkFjY2Vzc2libGVNb2RlbEludGVy
ZmFjZSApOgotICAgICIiIgotICAgIFN1cGVyY2xhc3MgZm9yIG1hbmFnZXJzIG9mIGEgbW9kZWwg
dGhhdDoKLSAgICAgICAgaGFzIGFuIG93bmVyL2NyZWF0b3IgVXNlcgotICAgICAgICBpcyBzaGFy
YWJsZSB3aXRoIG90aGVyLCBzcGVjaWZpYyBVc2VycwotICAgICAgICBpcyBpbXBvcnRhYmxlIChj
b3B5YWJsZSkgYnkgdXNlcnMgdGhhdCBoYXZlIGFjY2VzcwotICAgICAgICBoYXMgYSBzbHVnIHdo
aWNoIGNhbiBiZSB1c2VkIGFzIGEgbGluayB0byB2aWV3IHRoZSByZXNvdXJjZQotICAgICAgICBj
YW4gYmUgcHVibGlzaGVkIGVmZmVjdGl2ZWx5IG1ha2luZyBpdCBhdmFpbGFibGUgdG8gYWxsIG90
aGVyIFVzZXJzCi0gICAgICAgIGNhbiBiZSByYXRlZAotICAgICIiIgorY2xhc3MgU2hhcmFibGVN
b2RlbE1hbmFnZXIoIGJhc2UuTW9kZWxNYW5hZ2VyLCBiYXNlLk93bmFibGVNb2RlbEludGVyZmFj
ZSw9CiBiYXNlLkFjY2Vzc2libGVNb2RlbEludGVyZmFjZSwKKyAgICAgICAgdGFnZ2FibGUuVGFn
Z2FibGVNYW5hZ2VySW50ZXJmYWNlLCBhbm5vdGF0YWJsZS5Bbm5vdGF0YWJsZU1hbmFnZXJJPQpu
dGVyZmFjZSwgcmF0YWJsZS5SYXRhYmxlTWFuYWdlckludGVyZmFjZSApOgogICAgICMgZS5nLiBo
aXN0b3JpZXMsIHBhZ2VzLCBzdG9yZWQgd29ya2Zsb3dzLCB2aXN1YWxpemF0aW9ucwo9MjAKICAg
ICAjIHRoZSBtb2RlbCB1c2VkIGZvciBVc2VyU2hhcmVBc3NvY2lhdGlvbnMgd2l0aCB0aGlzIG1v
ZGVsCkBAIC0zMCw3ICszNSw3IEBACiAgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToKICAg
ICAgICAgc3VwZXIoIFNoYXJhYmxlTW9kZWxNYW5hZ2VyLCBzZWxmICkuX19pbml0X18oIGFwcCAp
CiAgICAgICAgICMgdXNlciBtYW5hZ2VyIGlzIG5lZWRlZCB0byBjaGVjayBhY2Nlc3Mvb3duZXJz
aGlwL2FkbWluCi0gICAgICAgIHNlbGYudXNlcl9tZ3IgPTNEIHVzZXJzLlVzZXJNYW5hZ2VyKCBh
cHAgKQorICAgICAgICBzZWxmLnVzZXJfbWFuYWdlciA9M0QgdXNlcnMuVXNlck1hbmFnZXIoIGFw
cCApCj0yMAogICAgICMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi49Ci4uLi4uIGhhcyBhIHVzZXIKICAgICBkZWYgX3F1
ZXJ5X2J5X3VzZXIoIHNlbGYsIHRyYW5zLCB1c2VyLCBmaWx0ZXJzPTNETm9uZSwgKiprd2FyZ3Mg
KToKQEAgLTU1LDExICs2MCwxMSBAQAogICAgICAgICAiIiIKICAgICAgICAgUmV0dXJuIHRydWUg
aWYgdGhpcyBzaGFyYWJsZSBiZWxvbmdzIHRvIGB1c2VyYCAob3IgYHVzZXJgIGlzIGFuIGFkPQpt
aW4pLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi51c2VyX21nci5pc19hbm9ueW1vdXMo
IHVzZXIgKToKKyAgICAgICAgaWYgc2VsZi51c2VyX21hbmFnZXIuaXNfYW5vbnltb3VzKCB1c2Vy
ICk6CiAgICAgICAgICAgICAjIG5vdGU6IHRoaXMgbmVlZHMgdG8gYmUgb3ZlcnJpZGRlbiBpbiB0
aGUgY2FzZSBvZiBhbm9uIHVzZXJzID0KYW5kIHNlc3Npb24uY3VycmVudF9oaXN0b3J5CiAgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgIyAuLi4gZWZmZWN0aXZlbHkgYSBnb29kIGZp
dCB0byBoYXZlIHRoaXMgaGVyZSwgYnV0IG5vdCBzZW1hbnRpY2FsPQpseQotICAgICAgICBpZiBz
ZWxmLnVzZXJfbWdyLmlzX2FkbWluKCB0cmFucywgdXNlciApOgorICAgICAgICBpZiBzZWxmLnVz
ZXJfbWFuYWdlci5pc19hZG1pbiggdHJhbnMsIHVzZXIgKToKICAgICAgICAgICAgIHJldHVybiBU
cnVlCiAgICAgICAgIHJldHVybiBpdGVtLnVzZXIgPTNEPTNEIHVzZXIKPTIwCkBAIC03NCw3ICs3
OSw3IEBACiAgICAgICAgICMgbm90ZTogb3duZXJzIGFsd2F5cyBoYXZlIGFjY2VzcyAtIGNoZWNr
aW5nIGZvciBhY2Nlc3NpYmxlIGltcGxpYz0KaXRseSBjaGVja3MgZm9yIG93bmVyc2hpcAogICAg
ICAgICBpZiBzZWxmLmlzX293bmVyKCB0cmFucywgaXRlbSwgdXNlciApOgogICAgICAgICAgICAg
cmV0dXJuIFRydWUKLSAgICAgICAgaWYgc2VsZi51c2VyX21nci5pc19hbm9ueW1vdXMoIHVzZXIg
KToKKyAgICAgICAgaWYgc2VsZi51c2VyX21hbmFnZXIuaXNfYW5vbnltb3VzKCB1c2VyICk6CiAg
ICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgaWYgdXNlciBpbiBpdGVtLnVzZXJzX3No
YXJlZF93aXRoX2RvdF91c2VyczoKICAgICAgICAgICAgIHJldHVybiBUcnVlCkBAIC0zMzMsOCAr
MzM4LDE1IEBACj0yMAo9MjAKICMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECi1jbGFzcyBTaGFyYWJsZU1vZGVsU2VyaWFs
aXplciggYmFzZS5Nb2RlbFNlcmlhbGl6ZXIgKToKLSAgICBwYXNzCitjbGFzcyBTaGFyYWJsZU1v
ZGVsU2VyaWFsaXplciggYmFzZS5Nb2RlbFNlcmlhbGl6ZXIsCisgICAgICAgIHRhZ2dhYmxlLlRh
Z2dhYmxlU2VyaWFsaXplciwgYW5ub3RhdGFibGUuQW5ub3RhdGFibGVTZXJpYWxpemVyLCByYT0K
dGFibGUuUmF0YWJsZVNlcmlhbGl6ZXIgKToKKyNUT0RPOiBzdHViCisKKyAgICBkZWYgYWRkX3Nl
cmlhbGl6ZXJzKCBzZWxmICk6CisgICAgICAgIHN1cGVyKCBTaGFyYWJsZU1vZGVsU2VyaWFsaXpl
ciwgc2VsZiApLmFkZF9zZXJpYWxpemVycygpCisgICAgICAgIHRhZ2dhYmxlLlRhZ2dhYmxlU2Vy
aWFsaXplci5hZGRfc2VyaWFsaXplcnMoIHNlbGYgKQorICAgICAgICBhbm5vdGF0YWJsZS5Bbm5v
dGF0YWJsZVNlcmlhbGl6ZXIuYWRkX3NlcmlhbGl6ZXJzKCBzZWxmICkKKyAgICAgICAgcmF0YWJs
ZS5SYXRhYmxlU2VyaWFsaXplci5hZGRfc2VyaWFsaXplcnMoIHNlbGYgKQo9MjAKICAgICAjIHRo
ZSBvbmx5IG9uZXMgdGhhdCBuZWVkcyBhbnkgZm5zOgogICAgICMgICB1c2VyL3VzZXJfaWQKQEAg
LTM1MCwyNCArMzYyLDMyIEBACj0yMAo9MjAKICMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECi1jbGFzcyBTaGFyYWJsZU1v
ZGVsRGVzZXJpYWxpemVyKCBiYXNlLk1vZGVsRGVzZXJpYWxpemVyICk6CitjbGFzcyBTaGFyYWJs
ZU1vZGVsRGVzZXJpYWxpemVyKCBiYXNlLk1vZGVsRGVzZXJpYWxpemVyLAorICAgICAgICB0YWdn
YWJsZS5UYWdnYWJsZURlc2VyaWFsaXplciwgYW5ub3RhdGFibGUuQW5ub3RhdGFibGVEZXNlcmlh
bGl6ZXI9CiwgcmF0YWJsZS5SYXRhYmxlRGVzZXJpYWxpemVyICk6CisjVE9ETzogc3R1Ygo9MjAK
LSAgICBkZWYgZGVzZXJpYWxpemVfcHVibGlzaGVkKCBzZWxmLCB0cmFucywgaXRlbSwgdmFsICk6
Ci0gICAgICAgICIiIgotICAgICAgICAiIiIKLSAgICAgICAgI1RPRE86IGNhbGwgbWFuYWdlci5w
dWJsaXNoL3VucHVibGlzaAotICAgICAgICBwYXNzCisgICAgZGVmIGFkZF9kZXNlcmlhbGl6ZXJz
KCBzZWxmICk6CisgICAgICAgIHN1cGVyKCBTaGFyYWJsZU1vZGVsRGVzZXJpYWxpemVyLCBzZWxm
ICkuYWRkX2Rlc2VyaWFsaXplcnMoKQorICAgICAgICB0YWdnYWJsZS5UYWdnYWJsZURlc2VyaWFs
aXplci5hZGRfZGVzZXJpYWxpemVycyggc2VsZiApCisgICAgICAgIGFubm90YXRhYmxlLkFubm90
YXRhYmxlRGVzZXJpYWxpemVyLmFkZF9kZXNlcmlhbGl6ZXJzKCBzZWxmICkKKyAgICAgICAgcmF0
YWJsZS5SYXRhYmxlRGVzZXJpYWxpemVyLmFkZF9kZXNlcmlhbGl6ZXJzKCBzZWxmICkKPTIwCi0g
ICAgZGVmIGRlc2VyaWFsaXplX2ltcG9ydGFibGUoIHNlbGYsIHRyYW5zLCBpdGVtLCB2YWwgKToK
LSAgICAgICAgIiIiCi0gICAgICAgICIiIgotICAgICAgICAjVE9ETzogY2FsbCBtYW5hZ2VyLm1h
a2VfaW1wb3J0YWJsZS9ub25faW1wb3J0YWJsZQotICAgICAgICBwYXNzCi0KLSAgICBkZWYgZGVz
ZXJpYWxpemVfc2x1Zyggc2VsZiwgdHJhbnMsIGl0ZW0sIHZhbCApOgotICAgICAgICAiIiIKLSAg
ICAgICAgIiIiCi0gICAgICAgICNUT0RPOiBjYWxsIG1hbmFnZXIuc2V0X3NsdWcKLSAgICAgICAg
cGFzcworICAgICNkZWYgZGVzZXJpYWxpemVfcHVibGlzaGVkKCBzZWxmLCB0cmFucywgaXRlbSwg
dmFsICk6CisgICAgIyAgICAiIiIKKyAgICAjICAgICIiIgorICAgICMgICAgI1RPRE86IGNhbGwg
bWFuYWdlci5wdWJsaXNoL3VucHVibGlzaAorICAgICMgICAgcGFzcworICAgICMKKyAgICAjZGVm
IGRlc2VyaWFsaXplX2ltcG9ydGFibGUoIHNlbGYsIHRyYW5zLCBpdGVtLCB2YWwgKToKKyAgICAj
ICAgICIiIgorICAgICMgICAgIiIiCisgICAgIyAgICAjVE9ETzogY2FsbCBtYW5hZ2VyLm1ha2Vf
aW1wb3J0YWJsZS9ub25faW1wb3J0YWJsZQorICAgICMgICAgcGFzcworICAgICMKKyAgICAjZGVm
IGRlc2VyaWFsaXplX3NsdWcoIHNlbGYsIHRyYW5zLCBpdGVtLCB2YWwgKToKKyAgICAjICAgICIi
IgorICAgICMgICAgIiIiCisgICAgIyAgICAjVE9ETzogY2FsbCBtYW5hZ2VyLnNldF9zbHVnCisg
ICAgIyAgICBwYXNzCj0yMAogICAgICNkZWYgZGVzZXJpYWxpemVfdXNlcl9zaGFyZXMoKToKCmRp
ZmYgLXIgMmU5OTBjYWVmYzk0M2ViMmIxZDRhOTRhZjUwOGMyMmJiMzRiN2ZhNiAtciA0MjhlNThm
Y2QzM2E5ZjkzNDI5MmZjYT0KZGFjODQwYzc1NzgzYmNkNjIgbGliL2dhbGF4eS9tYW5hZ2Vycy90
YWdnYWJsZS5weQotLS0gL2Rldi9udWxsCisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvdGFnZ2Fi
bGUucHkKQEAgLTAsMCArMSw2NSBAQAorIiIiCitNaXhpbnMgZm9yIFRhZ2dhYmxlIG1vZGVsIG1h
bmFnZXJzIGFuZCBzZXJpYWxpemVycy4KKyIiIgorCitmcm9tIGdhbGF4eSBpbXBvcnQgZXhjZXB0
aW9ucworZnJvbSBnYWxheHkgaW1wb3J0IG1vZGVsCisKK2ltcG9ydCBsb2dnaW5nCitsb2cgPTNE
IGxvZ2dpbmcuZ2V0TG9nZ2VyKCBfX25hbWVfXyApCisKKworIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKK2NsYXNzIFRh
Z2dhYmxlTWFuYWdlckludGVyZmFjZSggb2JqZWN0ICk6CisgICAgdGFnX2Fzc29jID0zRCBOb25l
CisKKyAgICAjVE9ETzogbW9zdCBvZiB0aGlzIGNhbiBiZSBkb25lIGJ5IGRlbGVnYXRpbmcgdG8g
dGhlIFRhZ01hbmFnZXI/CisKKworIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKK2NsYXNzIFRhZ2dhYmxlU2VyaWFsaXpl
ciggb2JqZWN0ICk6CisKKyAgICBkZWYgYWRkX3NlcmlhbGl6ZXJzKCBzZWxmICk6CisgICAgICAg
IHNlbGYuc2VyaWFsaXplcnNbICd0YWdzJyBdID0zRCBzZWxmLnNlcmlhbGl6ZV90YWdzCisKKyAg
ICBkZWYgc2VyaWFsaXplX3RhZ3MoIHNlbGYsIHRyYW5zLCBpdGVtLCBrZXkgKToKKyAgICAgICAg
IiIiCisgICAgICAgIFJldHVybiB0YWdzIGFzIGEgbGlzdCBvZiBzdHJpbmdzLgorICAgICAgICAi
IiIKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoIGl0ZW0sICd0YWdzJyApOgorICAgICAgICAgICAg
cmV0dXJuIE5vbmUKKworICAgICAgICB0YWdzX3N0cl9saXN0ID0zRCBbXQorICAgICAgICBmb3Ig
dGFnIGluIGl0ZW0udGFnczoKKyAgICAgICAgICAgIHRhZ19zdHIgPTNEIHRhZy51c2VyX3RuYW1l
CisgICAgICAgICAgICBpZiB0YWcudmFsdWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAg
dGFnX3N0ciArPTNEICI6IiArIHRhZy51c2VyX3ZhbHVlCisgICAgICAgICAgICB0YWdzX3N0cl9s
aXN0LmFwcGVuZCggdGFnX3N0ciApCisgICAgICAgIHJldHVybiB0YWdzX3N0cl9saXN0CisKKwor
IyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PQo9M0Q9M0Q9M0QKK2NsYXNzIFRhZ2dhYmxlRGVzZXJpYWxpemVyKCBvYmplY3QgKToKKworICAg
IGRlZiBhZGRfZGVzZXJpYWxpemVycyggc2VsZiApOgorICAgICAgICBzZWxmLmRlc2VyaWFsaXpl
cnNbICd0YWdzJyBdID0zRCBzZWxmLmRlc2VyaWFsaXplX3RhZ3MKKworICAgIGRlZiBkZXNlcmlh
bGl6ZV90YWdzKCBzZWxmLCB0cmFucywgaXRlbSwga2V5LCB2YWwgKToKKyAgICAgICAgIiIiCisg
ICAgICAgIE1ha2Ugc3VyZSBgdmFsYCBpcyBhIHZhbGlkIGxpc3Qgb2YgdGFnIHN0cmluZ3MgYW5k
IGFzc2lnbiB0aGVtLgorCisgICAgICAgIE5vdGU6IHRoaXMgd2lsbCBlcmFzZSBhbnkgcHJldmlv
dXMgdGFncy4KKyAgICAgICAgIiIiCisgICAgICAgIG5ld190YWdzX2xpc3QgPTNEIHNlbGYudmFs
aWRhdGUuYmFzZXN0cmluZ19saXN0KCBrZXksIHZhbCApCisgICAgICAgICNUT0RPOiBoYXZlIHRv
IGFzc3VtZSB0cmFucy51c2VyIGhlcmUuLi4KKyAgICAgICAgdXNlciA9M0QgdHJhbnMudXNlcgor
ICAgICAgICAjVE9ETzogZHVwZWQgZnJvbSB0YWdzIG1hbmFnZXIgLSBkZS1kdXBlIHdoZW4gbW92
ZWQgdG8gdGFnZ2FibGUgbWk9CnhpbgorICAgICAgICB0YWdfaGFuZGxlciA9M0QgdHJhbnMuYXBw
LnRhZ19oYW5kbGVyCisgICAgICAgIHRhZ19oYW5kbGVyLmRlbGV0ZV9pdGVtX3RhZ3MoIHVzZXIs
IGl0ZW0gKQorICAgICAgICBuZXdfdGFnc19zdHIgPTNEICcsJy5qb2luKCBuZXdfdGFnc19saXN0
ICkKKyAgICAgICAgdGFnX2hhbmRsZXIuYXBwbHlfaXRlbV90YWdzKCB1c2VyLCBpdGVtLCB1bmlj
b2RlKCBuZXdfdGFnc19zdHIuZW5jPQpvZGUoICd1dGYtOCcgKSwgJ3V0Zi04JyApICkKKyAgICAg
ICAgI3RyYW5zLnNhX3Nlc3Npb24uZmx1c2goKQorCisjVE9ETzohISBkb2VzIHRoZSBjcmVhdGlv
biBvZiBuZXdfdGFnc19saXN0IG1lYW4gdGhlcmUgYXJlIG5vdyBtb3JlIGFuZCBtbz0KcmUgdW51
c2VkIHRhZyByb3dzIGluIHRoZSBkYj8KKyAgICAgICAgcmV0dXJuIGl0ZW0udGFncworCgpkaWZm
IC1yIDJlOTkwY2FlZmM5NDNlYjJiMWQ0YTk0YWY1MDhjMjJiYjM0YjdmYTYgLXIgNDI4ZTU4ZmNk
MzNhOWY5MzQyOTJmY2E9CmRhYzg0MGM3NTc4M2JjZDYyIGxpYi9nYWxheHkvbWFuYWdlcnMvdXNl
cnMucHkKLS0tIGEvbGliL2dhbGF4eS9tYW5hZ2Vycy91c2Vycy5weQorKysgYi9saWIvZ2FsYXh5
L21hbmFnZXJzL3VzZXJzLnB5CkBAIC0xLDQgKzEsNSBAQAogIiIiCitNYW5hZ2VyIGFuZCBTZXJp
YWxpemVyIGZvciBVc2Vycy4KICIiIgo9MjAKIGltcG9ydCBwa2dfcmVzb3VyY2VzCkBAIC0xNyw4
ICsxOCw2IEBACj0yMAogIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKIGNsYXNzIFVzZXJNYW5hZ2VyKCBiYXNlLk1vZGVs
TWFuYWdlciApOgotICAgICIiIgotICAgICIiIgogICAgIG1vZGVsX2NsYXNzID0zRCBtb2RlbC5V
c2VyCiAgICAgZGVmYXVsdF9vcmRlcl9ieSA9M0QgKCBtb2RlbC5Vc2VyLmNyZWF0ZV90aW1lLCAp
CiAgICAgZm9yZWlnbl9rZXlfbmFtZSA9M0QgJ3VzZXInCkBAIC0yNiw5ICsyNSwxMiBAQAogICAg
ICNUT0RPOiB0aGVyZSBpcyBxdWl0ZSBhIGJpdCBvZiBmdW5jdGlvbmFsaXR5IGFyb3VuZCB0aGUg
dXNlciAoYXV0aGVudGk9CmNhdGlvbiwgcGVybWlzc2lvbnMsIHF1b3RhcywgZ3JvdXBzL3JvbGVz
KQogICAgICMgICBtb3N0IG9mIHdoaWNoIGl0IG1heSBiZSB1bm5lY2Nlc3NhcnkgdG8gaGF2ZSBo
ZXJlCj0yMAorICAgICNUT0RPOiBpbmNvcnAgUHJvdmlkZXNVc2VyQ29udGV4dAogICAgICNUT0RP
OiBpbmNvcnAgQmFzZUFQSUNvbnRyb2xsZXIudmFsaWRhdGVfaW5fdXNlcnNfYW5kX2dyb3Vwcwog
ICAgICNUT0RPOiBpbmNvcnAgQ3JlYXRlc1VzZXJzTWl4aW4KICAgICAjVE9ETzogaW5jb3JwIENy
ZWF0ZXNBcGlLZXlzTWl4aW4KKyAgICAjVE9ETzogaW5jb3Jwb3JhdGUgc2VjdXJpdHkvdmFsaWRh
dGVfdXNlcl9pbnB1dC5weQorICAgICNUT0RPOiBpbmNvcnBvcmF0ZSBVc2VzRm9ybURlZmluaXRp
b25zTWl4aW4/Cj0yMAogICAgIGRlZiBjcmVhdGUoIHNlbGYsIHRyYW5zLCAqKmt3YXJncyApOgog
ICAgICAgICAiIiIKQEAgLTY2LDggKzY4LDYgQEAKICAgICAgICAgICAgIHNlbGYuYXBwLnNlY3Vy
aXR5X2FnZW50LnVzZXJfc2V0X2RlZmF1bHRfcGVybWlzc2lvbnMoIHVzZXIsIGRlPQpmYXVsdF9h
Y2Nlc3NfcHJpdmF0ZT0zRHBlcm1pc3Npb25zICkKICAgICAgICAgcmV0dXJuIHVzZXIKPTIwCi0g
ICAgI1RPRE86IGluY29ycG9yYXRlIHNlY3VyaXR5L3ZhbGlkYXRlX3VzZXJfaW5wdXQucHkKLQog
ICAgIGRlZiBfZXJyb3Jfb25fZHVwbGljYXRlX2VtYWlsKCBzZWxmLCB0cmFucywgZW1haWwgKToK
ICAgICAgICAgIiIiCiAgICAgICAgIENoZWNrIGZvciBhIGR1cGxpY2F0ZSBlbWFpbCBhbmQgcmFp
c2UgaWYgZm91bmQuCkBAIC04MSw2ICs4MSw3IEBACiAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0tLS0g
ZmlsdGVycwogICAgIGRlZiBieV9lbWFpbCggc2VsZiwgdHJhbnMsIGVtYWlsLCBmaWx0ZXJzPTNE
Tm9uZSwgKiprd2FyZ3MgKToKICAgICAgICAgIiIiCisgICAgICAgIEZpbmQgYSB1c2VyIGJ5IHRo
ZWlyIGVtYWlsLgogICAgICAgICAiIiIKICAgICAgICAgZmlsdGVycyA9M0Qgc2VsZi5fbXVuZ2Vf
ZmlsdGVycyggc2VsZi5tb2RlbF9jbGFzcy5lbWFpbCA9M0Q9M0QgZW1hPQppbCwgZmlsdGVycyAp
CiAgICAgICAgIHRyeToKQEAgLTkxLDYgKzkyLDcgQEAKPTIwCiAgICAgZGVmIGJ5X2VtYWlsX2xp
a2UoIHNlbGYsIHRyYW5zLCBlbWFpbF93aXRoX3dpbGRjYXJkcywgZmlsdGVycz0zRE5vbmUsID0K
b3JkZXJfYnk9M0ROb25lLCAqKmt3YXJncyApOgogICAgICAgICAiIiIKKyAgICAgICAgRmluZCBh
IHVzZXIgc2VhcmNoaW5nIHdpdGggU1FMIHdpbGRjYXJkcy4KICAgICAgICAgIiIiCiAgICAgICAg
IGZpbHRlcnMgPTNEIHNlbGYuX211bmdlX2ZpbHRlcnMoIHNlbGYubW9kZWxfY2xhc3MuZW1haWwu
bGlrZSggZW1haT0KbF93aXRoX3dpbGRjYXJkcyApLCBmaWx0ZXJzICkKICAgICAgICAgb3JkZXJf
YnkgPTNEIG9yZGVyX2J5IG9yICggbW9kZWwuVXNlci5lbWFpbCwgKQpAQCAtMTY2LDEyICsxNjgs
MTYgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuaXNfYWRtaW4oIHRyYW5zLCB0cmFucy51c2VyICkK
PTIwCiAgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0tLS0gPwotICAgICNkZWYgdGFncyggc2VsZiwgdHJh
bnMsICoqa3dhcmdzICk6Ci0gICAgIyAgICAjIHJldHVybiBhbGwgdGFncyBmcm9tIHRoaXMgdXNl
cgorICAgICNkZWYgdGFncyggc2VsZiwgdHJhbnMsIHVzZXIsICoqa3dhcmdzICk6CisgICAgIyAg
ICAiIiIKKyAgICAjICAgIFJldHVybiBhbGwgdGFncyBjcmVhdGVkIGJ5IHRoaXMgdXNlci4KKyAg
ICAjICAgICIiIgogICAgICMgICAgcGFzcwo9MjAKLSAgICAjZGVmIGFubm90YXRpb25zKCBzZWxm
LCB0cmFucywgKiprd2FyZ3MgKToKLSAgICAjICAgICMgcmV0dXJuIGFsbCBhbm5vdGF0aW9ucyBm
cm9tIHRoaXMgdXNlcgorICAgICNkZWYgYW5ub3RhdGlvbnMoIHNlbGYsIHRyYW5zLCB1c2VyLCAq
Kmt3YXJncyApOgorICAgICMgICAgIiIiCisgICAgIyAgICBSZXR1cm4gYWxsIGFubm90YXRpb25z
IGNyZWF0ZWQgYnkgdGhpcyB1c2VyLgorICAgICMgICAgIiIiCiAgICAgIyAgICBwYXNzCj0yMAog
ICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0tIGFwaSBrZXlzCkBAIC0xODksOCArMTk1LDE1IEBACiAg
ICAgICAgICIiIgogICAgICAgICBxdWVyeSA9M0QgKCBzZWxmLmFwcC5tb2RlbC5jb250ZXh0LnF1
ZXJ5KCBtb2RlbC5BUElLZXlzICkKICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcl9ieSggdXNl
cj0zRHVzZXIgKQotICAgICAgICAgICAgICAgICAgICAub3JkZXJfYnkoIG1vZGVsLkFQSUtleXMu
Y3JlYXRlX3RpbWUgKSApCi0gICAgICAgIHJldHVybiBxdWVyeS5maXJzdCgpCisgICAgICAgICAg
ICAgICAgICAgIC5vcmRlcl9ieSggc3FsYWxjaGVteS5kZXNjKCBtb2RlbC5BUElLZXlzLmNyZWF0
ZV90aW1lID0KKSApICkKKyAgICAgICAgYWxsID0zRCBxdWVyeS5hbGwoKQorICAgICAgICBmb3Ig
YSBpbiBhbGw6CisgICAgICAgICAgICBwcmludCBhLnVzZXIudXNlcm5hbWUsIGEua2V5LCBhLmNy
ZWF0ZV90aW1lCisgICAgICAgIHByaW50IGFsbAorICAgICAgICBpZiBsZW4oIGFsbCApOgorICAg
ICAgICAgICAgcmV0dXJuIGFsbFswXQorICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAjcmV0
dXJuIHF1ZXJ5LmZpcnN0KCkKPTIwCiAgICAgI1RPRE86IHBvc3NpYmx5IG1vdmUgdG8gQXBpS2V5
TWFuYWdlcgogICAgIGRlZiBnZXRfb3JfY3JlYXRlX3ZhbGlkX2FwaV9rZXkoIHNlbGYsIHRyYW5z
LCB1c2VyICk6CgpkaWZmIC1yIDJlOTkwY2FlZmM5NDNlYjJiMWQ0YTk0YWY1MDhjMjJiYjM0Yjdm
YTYgLXIgNDI4ZTU4ZmNkMzNhOWY5MzQyOTJmY2E9CmRhYzg0MGM3NTc4M2JjZDYyIGxpYi9nYWxh
eHkvbWFuYWdlcnMvdmlzdWFsaXphdGlvbnMucHkKLS0tIC9kZXYvbnVsbAorKysgYi9saWIvZ2Fs
YXh5L21hbmFnZXJzL3Zpc3VhbGl6YXRpb25zLnB5CkBAIC0wLDAgKzEsOTAgQEAKKyIiIgorTWFu
YWdlciBhbmQgU2VyaWFsaXplcnMgZm9yIFZpc3VhbGl6YXRpb25zLgorCitWaXN1YWxpemF0aW9u
cyBhcmUgc2F2ZWQgY29uZmlndXJhdGlvbnMvdmFyaWFibGVzIHVzZWQgdG8KK3JlcHJvZHVjZSBh
IHNwZWNpZmljIHZpZXcgaW4gYSBHYWxheHkgdmlzdWFsaXphdGlvbi4KKyIiIgorCitmcm9tIGdh
bGF4eSBpbXBvcnQgZXhjZXB0aW9ucworZnJvbSBnYWxheHkgaW1wb3J0IG1vZGVsCisKK2ltcG9y
dCBiYXNlCitpbXBvcnQgc2hhcmFibGUKKworaW1wb3J0IGdhbGF4eS53ZWIKKworaW1wb3J0IGxv
Z2dpbmcKK2xvZyA9M0QgbG9nZ2luZy5nZXRMb2dnZXIoIF9fbmFtZV9fICkKKworCisjID0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0z
RD0zRAorY2xhc3MgVmlzdWFsaXphdGlvbk1hbmFnZXIoIHNoYXJhYmxlLlNoYXJhYmxlTW9kZWxN
YW5hZ2VyICk6CisgICAgIiIiCisgICAgIiIiCisKKyAgICBtb2RlbF9jbGFzcyA9M0QgbW9kZWwu
VmlzdWFsaXphdGlvbgorICAgIGRlZmF1bHRfb3JkZXJfYnkgPTNEICggbW9kZWwuVmlzdWFsaXph
dGlvbi5jcmVhdGVfdGltZSwgKQorICAgIGZvcmVpZ25fa2V5X25hbWUgPTNEICd2aXN1YWxpemF0
aW9uJworICAgIHVzZXJfc2hhcmVfbW9kZWwgPTNEIG1vZGVsLlZpc3VhbGl6YXRpb25Vc2VyU2hh
cmVBc3NvY2lhdGlvbgorCisgICAgdGFnX2Fzc29jID0zRCBtb2RlbC5WaXN1YWxpemF0aW9uVGFn
QXNzb2NpYXRpb24KKyAgICBhbm5vdGF0aW9uX2Fzc29jID0zRCBtb2RlbC5WaXN1YWxpemF0aW9u
QW5ub3RhdGlvbkFzc29jaWF0aW9uCisgICAgcmF0aW5nX2Fzc29jID0zRCBtb2RlbC5WaXN1YWxp
emF0aW9uUmF0aW5nQXNzb2NpYXRpb24KKworICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwLCAq
YXJncywgKiprd2FyZ3MgKToKKyAgICAgICAgIiIiCisgICAgICAgICIiIgorICAgICAgICBzdXBl
ciggVmlzdWFsaXphdGlvbk1hbmFnZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwLCAqYXJncywgKipr
d2FyZ3M9CiApCisKKyAgICBkZWYgY29weSggc2VsZiwgdHJhbnMsIHZpc3VhbGl6YXRpb24sIHVz
ZXIsICoqa3dhcmdzICk6CisgICAgICAgICIiIgorICAgICAgICAiIiIKKyAgICAgICAgcGFzcwor
CisgICAgI1RPRE86IHJldmlzaW9ucworCisKKyMjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRAorY2xhc3MgVmlzdWFsaXph
dGlvblNlcmlhbGl6ZXIoIHNoYXJhYmxlLlNoYXJhYmxlTW9kZWxTZXJpYWxpemVyICk6CisgICAg
IiIiCisgICAgSW50ZXJmYWNlL3NlcnZpY2Ugb2JqZWN0IGZvciBzZXJpYWxpemluZyB2aXN1YWxp
emF0aW9ucyBpbnRvIGRpY3Rpb25hcj0KaWVzLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9f
KCBzZWxmLCBhcHAgKToKKyAgICAgICAgc3VwZXIoIFZpc3VhbGl6YXRpb25TZXJpYWxpemVyLCBz
ZWxmICkuX19pbml0X18oIGFwcCApCisgICAgICAgIHNlbGYudmlzdWFsaXphdGlvbnNfbWFuYWdl
ciA9M0QgVmlzdWFsaXphdGlvbk1hbmFnZXIoIGFwcCApCisKKyAgICAgICAgc3VtbWFyeV92aWV3
ID0zRCBbCisgICAgICAgIF0KKyAgICAgICAgIyBpbiB0aGUgVmlzdWFsaXphdGlvbnMnIGNhc2Us
IGVhY2ggb2YgdGhlc2Ugdmlld3MgaW5jbHVkZXMgdGhlIGtlPQp5cyBmcm9tIHRoZSBwcmV2aW91
cworICAgICAgICBkZXRhaWxlZF92aWV3ID0zRCBzdW1tYXJ5X3ZpZXcgKyBbCisgICAgICAgIF0K
KyAgICAgICAgc2VsZi5zZXJpYWxpemFibGVfa2V5cyA9M0QgZGV0YWlsZWRfdmlldyArIFtdCisg
ICAgICAgIHNlbGYudmlld3MgPTNEIHsKKyAgICAgICAgICAgICdzdW1tYXJ5JyAgIDogc3VtbWFy
eV92aWV3LAorICAgICAgICAgICAgJ2RldGFpbGVkJyAgOiBkZXRhaWxlZF92aWV3CisgICAgICAg
IH0KKyAgICAgICAgc2VsZi5kZWZhdWx0X3ZpZXcgPTNEICdzdW1tYXJ5JworCisgICAgZGVmIGFk
ZF9zZXJpYWxpemVycyggc2VsZiApOgorICAgICAgICBzdXBlciggVmlzdWFsaXphdGlvblNlcmlh
bGl6ZXIsIHNlbGYgKS5hZGRfc2VyaWFsaXplcnMoKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZXJz
LnVwZGF0ZSh7CisgICAgICAgIH0pCisKKworIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKK2NsYXNzIFZpc3VhbGl6YXRp
b25EZXNlcmlhbGl6ZXIoIHNoYXJhYmxlLlNoYXJhYmxlTW9kZWxEZXNlcmlhbGl6ZXIgKToKKyAg
ICAiIiIKKyAgICBJbnRlcmZhY2Uvc2VydmljZSBvYmplY3QgZm9yIHZhbGlkYXRpbmcgYW5kIGRl
c2VyaWFsaXppbmcKKyAgICBkaWN0aW9uYXJpZXMgaW50byB2aXN1YWxpemF0aW9ucy4KKyAgICAi
IiIKKworICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CisgICAgICAgIHN1cGVyKCBWaXN1
YWxpemF0aW9uRGVzZXJpYWxpemVyLCBzZWxmICkuX19pbml0X18oIGFwcCApCisgICAgICAgIHNl
bGYudmlzdWFsaXphdGlvbl9tYW5hZ2VyID0zRCBWaXN1YWxpemF0aW9uTWFuYWdlciggYXBwICkK
KworICAgIGRlZiBhZGRfZGVzZXJpYWxpemVycyggc2VsZiApOgorICAgICAgICBzdXBlciggVmlz
dWFsaXphdGlvbkRlc2VyaWFsaXplciwgc2VsZiApLmFkZF9kZXNlcmlhbGl6ZXJzKCkKKyAgICAg
ICAgc2VsZi5kZXNlcmlhbGl6ZXJzLnVwZGF0ZSh7CisgICAgICAgIH0pCisgICAgICAgIHNlbGYu
ZGVzZXJpYWxpemFibGVfa2V5cyA9M0Qgc2VsZi5kZXNlcmlhbGl6ZXJzLmtleXMoKQoKCmh0dHBz
Oi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy9hMjVjZTYzY2Rj
ZjAvCkNoYW5nZXNldDogICBhMjVjZTYzY2RjZjAKVXNlcjogICAgICAgIGNhcmxmZWJlcmhhcmQK
RGF0ZTogICAgICAgIDIwMTUtMDEtMTMgMjE6MTc6NDMrMDA6MDAKU3VtbWFyeTogICAgIE1lcmdl
ZCBnYWxheHkvZ2FsYXh5LWNlbnRyYWwgaW50byBkZWZhdWx0CkFmZmVjdGVkICM6ICA5IGZpbGVz
CgpkaWZmIC1yIDQyOGU1OGZjZDMzYTlmOTM0MjkyZmNhZGFjODQwYzc1NzgzYmNkNjIgLXIgYTI1
Y2U2M2NkY2YwN2NiMmQyMGZmMzQ9CjdiZjQyZTg2ZjRmZDRmMjFiIGNvbmZpZy9nYWxheHkuaW5p
LnNhbXBsZQotLS0gYS9jb25maWcvZ2FsYXh5LmluaS5zYW1wbGUKKysrIGIvY29uZmlnL2dhbGF4
eS5pbmkuc2FtcGxlCkBAIC0zNTQsMTAgKzM1NCw2IEBACiAjIElmIG5vIG1lc3NhZ2Ugc3BlY2lm
aWVkIHRoZSB3YXJuaW5nIGJveCB3aWxsIG5vdCBiZSBzaG93bi4KICNyZWdpc3RyYXRpb25fd2Fy
bmluZ19tZXNzYWdlID0zRCBQbGVhc2UgcmVnaXN0ZXIgb25seSBvbmUgYWNjb3VudCAtIHdlIHBy
PQpvdmlkZSB0aGlzIHNlcnZpY2UgZnJlZSBvZiBjaGFyZ2UgYW5kIGhhdmUgbGltaXRlZCBjb21w
dXRhdGlvbmFsIHJlc291cmNlcy49CiBNdWx0aS1hY2NvdW50cyBhcmUgdHJhY2tlZCBhbmQgd2ls
bCBiZSBzdWJqZWN0ZWQgdG8gYWNjb3VudCB0ZXJtaW5hdGlvbiBhbj0KZCBkYXRhIGRlbGV0aW9u
Lgo9MjAKLSMgV2hlbiB1c2VycyBvcHQgdG8gcmVzZXQgcGFzc3dvcmRzLCBuZXcgb25lcyBhcmUg
Y3JlYXRlZCwgdGhpcyBvcHRpb24KLSMgc3BlY2lmaWVzIHRoZSBsZW5ndGggb2YgdGhlc2UgcGFz
c3dvcmRzLgotI3Jlc2V0X3Bhc3N3b3JkX2xlbmd0aCA9M0QgMTUKLQo9MjAKICMgLS0gQWNjb3Vu
dCBhY3RpdmF0aW9uCj0yMAoKZGlmZiAtciA0MjhlNThmY2QzM2E5ZjkzNDI5MmZjYWRhYzg0MGM3
NTc4M2JjZDYyIC1yIGEyNWNlNjNjZGNmMDdjYjJkMjBmZjM0PQo3YmY0MmU4NmY0ZmQ0ZjIxYiBs
aWIvZ2FsYXh5L2NvbmZpZy5weQotLS0gYS9saWIvZ2FsYXh5L2NvbmZpZy5weQorKysgYi9saWIv
Z2FsYXh5L2NvbmZpZy5weQpAQCAtMTYxLDcgKzE2MSw2IEBACiAgICAgICAgICAgICBzZWxmLmpv
Yl93YWxsdGltZV9kZWx0YSA9M0QgdGltZWRlbHRhKCAwLCBzLCAwLCAwLCBtLCBoICkKICAgICAg
ICAgc2VsZi5hZG1pbl91c2VycyA9M0Qga3dhcmdzLmdldCggImFkbWluX3VzZXJzIiwgIiIgKQog
ICAgICAgICBzZWxmLmFkbWluX3VzZXJzX2xpc3QgPTNEIFt1LnN0cmlwKCkgZm9yIHUgaW4gc2Vs
Zi5hZG1pbl91c2Vycy5zcGw9Cml0KCcsJykgaWYgdV0KLSAgICAgICAgc2VsZi5yZXNldF9wYXNz
d29yZF9sZW5ndGggPTNEIGludCgga3dhcmdzLmdldCgncmVzZXRfcGFzc3dvcmRfbGVuPQpndGgn
LCAnMTUnKSApCiAgICAgICAgIHNlbGYubWFpbGluZ19qb2luX2FkZHIgPTNEIGt3YXJncy5nZXQo
J21haWxpbmdfam9pbl9hZGRyJywgJ2dhbGF4eT0KLWFubm91bmNlLWpvaW5AYngucHN1LmVkdScp
CiAgICAgICAgIHNlbGYuZXJyb3JfZW1haWxfdG8gPTNEIGt3YXJncy5nZXQoICdlcnJvcl9lbWFp
bF90bycsIE5vbmUgKQogICAgICAgICBzZWxmLmFjdGl2YXRpb25fZW1haWwgPTNEIGt3YXJncy5n
ZXQoICdhY3RpdmF0aW9uX2VtYWlsJywgTm9uZSApCgpkaWZmIC1yIDQyOGU1OGZjZDMzYTlmOTM0
MjkyZmNhZGFjODQwYzc1NzgzYmNkNjIgLXIgYTI1Y2U2M2NkY2YwN2NiMmQyMGZmMzQ9CjdiZjQy
ZTg2ZjRmZDRmMjFiIGxpYi9nYWxheHkvbW9kZWwvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4
eS9tb2RlbC9fX2luaXRfXy5weQorKysgYi9saWIvZ2FsYXh5L21vZGVsL19faW5pdF9fLnB5CkBA
IC0xOCw2ICsxOCw3IEBACiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgdGltZQogaW1wb3J0IG51bWJl
cnMKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKIGZyb20gdXVpZCBp
bXBvcnQgVVVJRCwgdXVpZDQKIGZyb20gc3RyaW5nIGltcG9ydCBUZW1wbGF0ZQogZnJvbSBpdGVy
dG9vbHMgaW1wb3J0IGlmaWx0ZXIKQEAgLTMxLDcgKzMyLDcgQEAKIGltcG9ydCBnYWxheHkubW9k
ZWwub3JtLm5vdwogZnJvbSBnYWxheHkuc2VjdXJpdHkgaW1wb3J0IGdldF9wZXJtaXR0ZWRfYWN0
aW9ucwogZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgaXNfbXVsdGlfYnl0ZSwgbmljZV9zaXplLCBQ
YXJhbXMsIHJlc3RvcmVfdGV4dCwgc2U9Cm5kX21haWwKLWZyb20gZ2FsYXh5LnV0aWwgaW1wb3J0
IHJlYWR5X25hbWVfZm9yX3VybAorZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgcmVhZHlfbmFtZV9m
b3JfdXJsLCB1bmlxdWVfaWQKIGZyb20gZ2FsYXh5LnV0aWwuYnVuY2ggaW1wb3J0IEJ1bmNoCiBm
cm9tIGdhbGF4eS51dGlsLmhhc2hfdXRpbCBpbXBvcnQgbmV3X3NlY3VyZV9oYXNoCiBmcm9tIGdh
bGF4eS51dGlsLmRpcmVjdG9yeV9oYXNoIGltcG9ydCBkaXJlY3RvcnlfaGFzaF9pZApAQCAtMjYx
LDYgKzI2MiwxNCBAQAogICAgICAgICBlbnZpcm9ubWVudCA9M0QgVXNlci51c2VyX3RlbXBsYXRl
X2Vudmlyb25tZW50KCB1c2VyICkKICAgICAgICAgcmV0dXJuIFRlbXBsYXRlKCBpbl9zdHJpbmcg
KS5zYWZlX3N1YnN0aXR1dGUoIGVudmlyb25tZW50ICkKPTIwCitjbGFzcyBQYXNzd29yZFJlc2V0
VG9rZW4oIG9iamVjdCApOgorICAgIGRlZiBfX2luaXRfXyggc2VsZiwgdXNlciwgdG9rZW49M0RO
b25lKToKKyAgICAgICAgaWYgdG9rZW46CisgICAgICAgICAgICBzZWxmLnRva2VuID0zRCB0b2tl
bgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi50b2tlbiA9M0QgdW5pcXVlX2lkKCkK
KyAgICAgICAgc2VsZi51c2VyID0zRCB1c2VyCisgICAgICAgIHNlbGYuZXhwaXJhdGlvbl90aW1l
ID0zRCBkYXRldGltZS5ub3coKSArIHRpbWVkZWx0YShob3Vycz0zRDI0KQo9MjAKIGNsYXNzIEJh
c2VKb2JNZXRyaWMoIG9iamVjdCApOgo9MjAKCmRpZmYgLXIgNDI4ZTU4ZmNkMzNhOWY5MzQyOTJm
Y2FkYWM4NDBjNzU3ODNiY2Q2MiAtciBhMjVjZTYzY2RjZjA3Y2IyZDIwZmYzND0KN2JmNDJlODZm
NGZkNGYyMWIgbGliL2dhbGF4eS9tb2RlbC9tYXBwaW5nLnB5Ci0tLSBhL2xpYi9nYWxheHkvbW9k
ZWwvbWFwcGluZy5weQorKysgYi9saWIvZ2FsYXh5L21vZGVsL21hcHBpbmcucHkKQEAgLTY4LDYg
KzY4LDExIEBACiAgICAgQ29sdW1uKCAicHJvdmlkZXIiLCBUcmltbWVkU3RyaW5nKCAyNTUgKSAp
LAogICAgICkKPTIwCittb2RlbC5QYXNzd29yZFJlc2V0VG9rZW4udGFibGUgPTNEIFRhYmxlKCJw
YXNzd29yZF9yZXNldF90b2tlbiIsIG1ldGFkYXRhLAorICAgIENvbHVtbiggInRva2VuIiwgU3Ry
aW5nKCAzMiApLCBwcmltYXJ5X2tleT0zRFRydWUsIHVuaXF1ZT0zRFRydWUsIGluZGU9Cng9M0RU
cnVlICksCisgICAgQ29sdW1uKCAiZXhwaXJhdGlvbl90aW1lIiwgRGF0ZVRpbWUgKSwKKyAgICBD
b2x1bW4oICJ1c2VyX2lkIiwgSW50ZWdlciwgRm9yZWlnbktleSggImdhbGF4eV91c2VyLmlkIiAp
LCBpbmRleD0zRFRyPQp1ZSApICkKKwogbW9kZWwuSGlzdG9yeS50YWJsZSA9M0QgVGFibGUoICJo
aXN0b3J5IiwgbWV0YWRhdGEsCiAgICAgQ29sdW1uKCAiaWQiLCBJbnRlZ2VyLCBwcmltYXJ5X2tl
eT0zRFRydWUpLAogICAgIENvbHVtbiggImNyZWF0ZV90aW1lIiwgRGF0ZVRpbWUsIGRlZmF1bHQ9
M0Rub3cgKSwKQEAgLTE1NjUsNiArMTU3MCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgYXBp
X2tleXM9M0RyZWxhdGlvbiggbW9kZWwuQVBJS2V5cywgYmFja3JlZj0zRCJ1c2VyIiw9CiBvcmRl
cl9ieT0zRGRlc2MoIG1vZGVsLkFQSUtleXMudGFibGUuYy5jcmVhdGVfdGltZSApICksCiAgICAg
ICAgICAgICAgICAgICAgICApICkKPTIwCittYXBwZXIoIG1vZGVsLlBhc3N3b3JkUmVzZXRUb2tl
biwgbW9kZWwuUGFzc3dvcmRSZXNldFRva2VuLnRhYmxlLAorICAgICAgICBwcm9wZXJ0aWVzPTNE
ZGljdCggdXNlcj0zRHJlbGF0aW9uKCBtb2RlbC5Vc2VyLCBiYWNrcmVmPTNEInJlc2V0X3Q9Cm9r
ZW5zIikgKSApCisKKwogIyBTZXQgdXAgcHJveHkgc28gdGhhdCB0aGlzIHN5bnRheCBpcyBwb3Nz
aWJsZToKICMgPHVzZXJfb2JqPi5wcmVmZXJlbmNlc1twcmVmX25hbWVdID0zRCBwcmVmX3ZhbHVl
CiBtb2RlbC5Vc2VyLnByZWZlcmVuY2VzID0zRCBhc3NvY2lhdGlvbl9wcm94eSgnX3ByZWZlcmVu
Y2VzJywgJ3ZhbHVlJywgY3JlYT0KdG9yPTNEbW9kZWwuVXNlclByZWZlcmVuY2UpCgpkaWZmIC1y
IDQyOGU1OGZjZDMzYTlmOTM0MjkyZmNhZGFjODQwYzc1NzgzYmNkNjIgLXIgYTI1Y2U2M2NkY2Yw
N2NiMmQyMGZmMzQ9CjdiZjQyZTg2ZjRmZDRmMjFiIGxpYi9nYWxheHkvbW9kZWwvbWlncmF0ZS92
ZXJzaW9ucy8wMTI2X3Bhc3N3b3JkX3Jlc2V0LnB5Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL2dh
bGF4eS9tb2RlbC9taWdyYXRlL3ZlcnNpb25zLzAxMjZfcGFzc3dvcmRfcmVzZXQucHkKQEAgLTAs
MCArMSw0MyBAQAorIiIiCitNaWdyYXRpb24gc2NyaXB0IGZvciB0aGUgcGFzc3dvcmQgcmVzZXQg
dGFibGUKKyIiIgorCitmcm9tIHNxbGFsY2hlbXkgaW1wb3J0ICoKK2Zyb20gc3FsYWxjaGVteS5v
cm0gaW1wb3J0ICoKK2Zyb20gbWlncmF0ZSBpbXBvcnQgKgorZnJvbSBtaWdyYXRlLmNoYW5nZXNl
dCBpbXBvcnQgKgorZnJvbSBnYWxheHkubW9kZWwuY3VzdG9tX3R5cGVzIGltcG9ydCAqCisKK2lt
cG9ydCBkYXRldGltZQorbm93ID0zRCBkYXRldGltZS5kYXRldGltZS51dGNub3cKKworaW1wb3J0
IGxvZ2dpbmcKK2xvZyA9M0QgbG9nZ2luZy5nZXRMb2dnZXIoIF9fbmFtZV9fICkKKworbWV0YWRh
dGEgPTNEIE1ldGFEYXRhKCkKKworUGFzc3dvcmRSZXNldFRva2VuX3RhYmxlID0zRCBUYWJsZSgi
cGFzc3dvcmRfcmVzZXRfdG9rZW4iLCBtZXRhZGF0YSwKKyAgICBDb2x1bW4oICJ0b2tlbiIsIFN0
cmluZyggMzIgKSwgcHJpbWFyeV9rZXk9M0RUcnVlLCB1bmlxdWU9M0RUcnVlLCBpbmRlPQp4PTNE
VHJ1ZSApLAorICAgIENvbHVtbiggImV4cGlyYXRpb25fdGltZSIsIERhdGVUaW1lICksCisgICAg
Q29sdW1uKCAidXNlcl9pZCIsIEludGVnZXIsIEZvcmVpZ25LZXkoICJnYWxheHlfdXNlci5pZCIg
KSwgaW5kZXg9M0RUcj0KdWUgKSkKKworCitkZWYgdXBncmFkZShtaWdyYXRlX2VuZ2luZSk6Cisg
ICAgbWV0YWRhdGEuYmluZCA9M0QgbWlncmF0ZV9lbmdpbmUKKyAgICBwcmludCBfX2RvY19fCisg
ICAgbWV0YWRhdGEucmVmbGVjdCgpCisgICAgdHJ5OgorICAgICAgICBQYXNzd29yZFJlc2V0VG9r
ZW5fdGFibGUuY3JlYXRlKCkKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIHBy
aW50IHN0cihlKQorICAgICAgICBsb2cuZXhjZXB0aW9uKCJDcmVhdGluZyAlcyB0YWJsZSBmYWls
ZWQ6ICVzIiAlIChQYXNzd29yZFJlc2V0VG9rZW49Cl90YWJsZS5uYW1lLCBzdHIoIGUgKSApICkK
KworCitkZWYgZG93bmdyYWRlKG1pZ3JhdGVfZW5naW5lKToKKyAgICBtZXRhZGF0YS5iaW5kID0z
RCBtaWdyYXRlX2VuZ2luZQorICAgIG1ldGFkYXRhLnJlZmxlY3QoKQorICAgIHRyeToKKyAgICAg
ICAgUGFzc3dvcmRSZXNldFRva2VuX3RhYmxlLmRyb3AoKQorICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZToKKyAgICAgICAgcHJpbnQgc3RyKGUpCisgICAgICAgIGxvZy5leGNlcHRpb24oIkRyb3Bw
aW5nICVzIHRhYmxlIGZhaWxlZDogJXMiICUgKFBhc3N3b3JkUmVzZXRUb2tlbj0KX3RhYmxlLm5h
bWUsIHN0ciggZSApICkgKQoKZGlmZiAtciA0MjhlNThmY2QzM2E5ZjkzNDI5MmZjYWRhYzg0MGM3
NTc4M2JjZDYyIC1yIGEyNWNlNjNjZGNmMDdjYjJkMjBmZjM0PQo3YmY0MmU4NmY0ZmQ0ZjIxYiBs
aWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL3VzZXIucHkKLS0tIGEvbGliL2dh
bGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy91c2VyLnB5CisrKyBiL2xpYi9nYWxheHkv
d2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvdXNlci5weQpAQCAtNyw3ICs3LDYgQEAKIGltcG9y
dCBvcwogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHNvY2tldAotaW1wb3J0IHN0cmluZwogaW1wb3J0
IHVybGxpYgo9MjAKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKQEAg
LTI5LDE4ICsyOCwyNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFVzZXNGb3JtRGVmaW5pdGlvbnNNaXhpbikKIGZyb20gZ2FsYXh5LndlYi5mb3JtX2J1aWxkZXIg
aW1wb3J0IGJ1aWxkX3NlbGVjdF9maWVsZCwgQ2hlY2tib3hGaWVsZAogZnJvbSBnYWxheHkud2Vi
LmZyYW1ld29yay5oZWxwZXJzIGltcG9ydCBlc2NhcGUsIGdyaWRzLCB0aW1lX2FnbwotZnJvbSBn
YWxheHkud2ViLmZyYW1ld29yay5oZWxwZXJzIGltcG9ydCB0aW1lX2FnbywgZ3JpZHMKLWZyb20g
bWFya3Vwc2FmZSBpbXBvcnQgZXNjYXBlCj0yMAogbG9nID0zRCBsb2dnaW5nLmdldExvZ2dlcigg
X19uYW1lX18gKQo9MjAKLXJlcXVpcmVfbG9naW5fdGVtcGxhdGUgPTNEICIiIgorUkVRVUlSRV9M
T0dJTl9URU1QTEFURSA9M0QgIiIiCiA8cD4KICAgICBUaGlzICVzIGhhcyBiZWVuIGNvbmZpZ3Vy
ZWQgc3VjaCB0aGF0IG9ubHkgdXNlcnMgd2hvIGFyZSBsb2dnZWQgaW4gbWF5PQogdXNlIGl0LiVz
CiA8L3A+PHAvPgogIiIiCj0yMAorUEFTU1dPUkRfUkVTRVRfVEVNUExBVEUgPTNEICIiIgorVG8g
cmVzZXQgeW91ciBHYWxheHkgcGFzc3dvcmQgZm9yIHRoZSBpbnN0YW5jZSBhdCAlcywgdXNlIHRo
ZSBmb2xsb3dpbmcgbGk9Cm5rOgorCisgICAgPGEgaHJlZj0zRCIlcyI+JXM8L2E+CisKK0lmIHlv
dSBkaWQgbm90IG1ha2UgdGhpcyByZXF1ZXN0LCBubyBhY3Rpb24gaXMgbmVjZXNzYXJ5IG9uIHlv
dXIgcGFydCwgdGhvPQp1Z2gKK3lvdSBtYXkgd2FudCB0byBub3RpZnkgYW4gYWRtaW5pc3RyYXRv
ci4iIiIKKwo9MjAKIGNsYXNzIFVzZXJPcGVuSURHcmlkKCBncmlkcy5HcmlkICk6CiAgICAgdXNl
X3BhbmVscyA9M0QgRmFsc2UKQEAgLTQ3NywxNCArNDgyLDE0IEBACiAgICAgICAgICAgICAgICAg
Y3JlYXRlX2FjY291bnRfc3RyID0zRCAiICBJZiB5b3UgZG9uJ3QgYWxyZWFkeSBoYXZlIGFuIGFj
Yz0Kb3VudCwgPGEgaHJlZj0zRCclcyc+eW91IG1heSBjcmVhdGUgb25lPC9hPi4iICUgXAogICAg
ICAgICAgICAgICAgICAgICB3ZWIudXJsX2ZvciggY29udHJvbGxlcj0zRCd1c2VyJywgYWN0aW9u
PTNEJ2NyZWF0ZScsIGM9Cm50cmxsZXI9M0QndXNlcicgKQogICAgICAgICAgICAgICAgIGlmIHRy
YW5zLndlYmFwcC5uYW1lID0zRD0zRCAnZ2FsYXh5JzoKLSAgICAgICAgICAgICAgICAgICAgaGVh
ZGVyID0zRCByZXF1aXJlX2xvZ2luX3RlbXBsYXRlICUgKCAiR2FsYXh5IGluc3RhbmNlPQoiLCBj
cmVhdGVfYWNjb3VudF9zdHIgKQorICAgICAgICAgICAgICAgICAgICBoZWFkZXIgPTNEIFJFUVVJ
UkVfTE9HSU5fVEVNUExBVEUgJSAoICJHYWxheHkgaW5zdGFuY2U9CiIsIGNyZWF0ZV9hY2NvdW50
X3N0ciApCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaGVhZGVy
ID0zRCByZXF1aXJlX2xvZ2luX3RlbXBsYXRlICUgKCAiR2FsYXh5IHRvb2wgc2hlPQpkIiwgY3Jl
YXRlX2FjY291bnRfc3RyICkKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVyID0zRCBSRVFVSVJF
X0xPR0lOX1RFTVBMQVRFICUgKCAiR2FsYXh5IHRvb2wgc2hlPQpkIiwgY3JlYXRlX2FjY291bnRf
c3RyICkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgaWYgdHJhbnMud2ViYXBw
Lm5hbWUgPTNEPTNEICdnYWxheHknOgotICAgICAgICAgICAgICAgICAgICBoZWFkZXIgPTNEIHJl
cXVpcmVfbG9naW5fdGVtcGxhdGUgJSAoICJHYWxheHkgaW5zdGFuY2U9CiIsICIiICkKKyAgICAg
ICAgICAgICAgICAgICAgaGVhZGVyID0zRCBSRVFVSVJFX0xPR0lOX1RFTVBMQVRFICUgKCAiR2Fs
YXh5IGluc3RhbmNlPQoiLCAiIiApCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICAgICAgaGVhZGVyID0zRCByZXF1aXJlX2xvZ2luX3RlbXBsYXRlICUgKCAiR2FsYXh5IHRv
b2wgc2hlPQpkIiwgIiIgKQorICAgICAgICAgICAgICAgICAgICBoZWFkZXIgPTNEIFJFUVVJUkVf
TE9HSU5fVEVNUExBVEUgJSAoICJHYWxheHkgdG9vbCBzaGU9CmQiLCAiIiApCiAgICAgICAgIHJl
dHVybiB0cmFucy5maWxsX3RlbXBsYXRlKCAnL3VzZXIvbG9naW4ubWFrbycsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbD0zRGVtYWlsLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGVhZGVyPTNEaGVhZGVyLApAQCAtMTAzMSwzOCArMTAzNiw2
IEBACiAgICAgICAgICAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCB1c2VyICkKICAg
ICAgICAgICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCiAgICAgICAgICAgICAg
ICAgbWVzc2FnZSA9M0QgJ1RoZSBsb2dpbiBpbmZvcm1hdGlvbiBoYXMgYmVlbiB1cGRhdGVkIHdp
dGggdD0KaGUgY2hhbmdlcy4nCi0gICAgICAgIGVsaWYgdXNlciBhbmQgcGFyYW1zLmdldCggJ2No
YW5nZV9wYXNzd29yZF9idXR0b24nLCBGYWxzZSApOgotICAgICAgICAgICAgIyBFZGl0aW5nIHBh
c3N3b3JkLiAgRG8gbm90IHNhbml0aXplIHBhc3N3b3Jkcywgc28gZ2V0IGZyb20ga3dkCi0gICAg
ICAgICAgICAjIGFuZCBub3QgcGFyYW1zICh3aGljaCB3ZXJlIHNhbml0aXplZCkuCi0gICAgICAg
ICAgICBwYXNzd29yZCA9M0Qga3dkLmdldCggJ3Bhc3N3b3JkJywgJycgKQotICAgICAgICAgICAg
Y29uZmlybSA9M0Qga3dkLmdldCggJ2NvbmZpcm0nLCAnJyApCi0gICAgICAgICAgICBvayA9M0Qg
VHJ1ZQotICAgICAgICAgICAgaWYgbm90IGlzX2FkbWluOgotICAgICAgICAgICAgICAgICMgSWYg
dGhlIGN1cnJlbnQgdXNlciBpcyBjaGFuZ2luZyB0aGVpciBvd24gcGFzc3dvcmQsIHZhbGk9CmRh
dGUgdGhlaXIgY3VycmVudCBwYXNzd29yZAotICAgICAgICAgICAgICAgIGN1cnJlbnQgPTNEIGt3
ZC5nZXQoICdjdXJyZW50JywgJycgKQotICAgICAgICAgICAgICAgIGlmIG5vdCB0cmFucy51c2Vy
LmNoZWNrX3Bhc3N3b3JkKCBjdXJyZW50ICk6Ci0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2Ug
PTNEICdJbnZhbGlkIGN1cnJlbnQgcGFzc3dvcmQnCi0gICAgICAgICAgICAgICAgICAgIHN0YXR1
cyA9M0QgJ2Vycm9yJwotICAgICAgICAgICAgICAgICAgICBvayA9M0QgRmFsc2UKLSAgICAgICAg
ICAgIGlmIG9rOgotICAgICAgICAgICAgICAgICMgVmFsaWRhdGUgdGhlIG5ldyBwYXNzd29yZAot
ICAgICAgICAgICAgICAgIG1lc3NhZ2UgPTNEIHZhbGlkYXRlX3Bhc3N3b3JkKCB0cmFucywgcGFz
c3dvcmQsIGNvbmZpcm0gKQotICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2U6Ci0gICAgICAgICAg
ICAgICAgICAgIHN0YXR1cyA9M0QgJ2Vycm9yJwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgICAgICMgU2F2ZSBuZXcgcGFzc3dvcmQKLSAgICAgICAgICAgICAgICAgICAg
dXNlci5zZXRfcGFzc3dvcmRfY2xlYXJ0ZXh0KCBwYXNzd29yZCApCi0gICAgICAgICAgICAgICAg
ICAgICMgSW52YWxpZGF0ZSBhbGwgb3RoZXIgc2Vzc2lvbnMKLSAgICAgICAgICAgICAgICAgICAg
Zm9yIG90aGVyX2dhbGF4eV9zZXNzaW9uIGluIHRyYW5zLnNhX3Nlc3Npb24ucXVlcnkoIHRyPQph
bnMuYXBwLm1vZGVsLkdhbGF4eVNlc3Npb24gKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoIGFuZF8oIHRyYW5zLj0KYXBwLm1v
ZGVsLkdhbGF4eVNlc3Npb24udGFibGUuYy51c2VyX2lkID0zRD0zRCB0cmFucy51c2VyLmlkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0cmFucy49CmFwcC5tb2RlbC5HYWxheHlTZXNzaW9uLnRhYmxlLmMuaXNfdmFs
aWQgaXMgVHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnMuPQphcHAubW9kZWwuR2FsYXh5U2Vzc2lvbi50
YWJsZS5jLmlkICE9M0QgdHJhbnMuZ2FsYXh5X3Nlc3Npb24uaWQgKSApOgotICAgICAgICAgICAg
ICAgICAgICAgICAgb3RoZXJfZ2FsYXh5X3Nlc3Npb24uaXNfdmFsaWQgPTNEIEZhbHNlCi0gICAg
ICAgICAgICAgICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmFkZCggb3RoZXJfZ2FsYXh5X3Nl
c3Npb24gKQotICAgICAgICAgICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmFkZCggdXNlciAp
Ci0gICAgICAgICAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uZmx1c2goKQotICAgICAgICAg
ICAgICAgICAgICB0cmFucy5sb2dfZXZlbnQoICJVc2VyIGNoYW5nZSBwYXNzd29yZCIgKQotICAg
ICAgICAgICAgICAgICAgICBtZXNzYWdlID0zRCAnVGhlIHBhc3N3b3JkIGhhcyBiZWVuIGNoYW5n
ZWQgYW5kIGFueSBvdGg9CmVyIGV4aXN0aW5nIEdhbGF4eSBzZXNzaW9ucyBoYXZlIGJlZW4gbG9n
Z2VkIG91dCAoYnV0IGpvYnMgaW4gaGlzdG9yaWVzIGluID0KdGhvc2Ugc2Vzc2lvbnMgd2lsbCBu
b3QgYmUgaW50ZXJydXB0ZWQpLicKICAgICAgICAgZWxpZiB1c2VyIGFuZCBwYXJhbXMuZ2V0KCAn
ZWRpdF91c2VyX2luZm9fYnV0dG9uJywgRmFsc2UgKToKICAgICAgICAgICAgICMgRWRpdCB1c2Vy
IGluZm9ybWF0aW9uIC0gd2ViYXBwIE1VU1QgQkUgJ2dhbGF4eScKICAgICAgICAgICAgIHVzZXJf
dHlwZV9mZF9pZCA9M0QgcGFyYW1zLmdldCggJ3VzZXJfdHlwZV9mZF9pZCcsICdub25lJyApCkBA
IC0xMTA1LDQ3ICsxMDc4LDEwNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dkICkgKQo9MjAKICAgICBAd2ViLmV4cG9zZQot
ICAgIGRlZiByZXNldF9wYXNzd29yZCggc2VsZiwgdHJhbnMsIGVtYWlsPTNETm9uZSwgKiprd2Qg
KToKKyAgICBkZWYgY2hhbmdlX3Bhc3N3b3JkKCBzZWxmLCB0cmFucywgdG9rZW49M0ROb25lLCAq
Kmt3ZCk6CisgICAgICAgICIiIgorICAgICAgICBQcm92aWRlcyBhIGZvcm0gd2l0aCB3aGljaCBv
bmUgY2FuIGNoYW5nZSB0aGVpciBwYXNzd29yZC4gIElmIHRva2U9Cm4gaXMKKyAgICAgICAgcHJv
dmlkZWQsIGRvbid0IHJlcXVpcmUgY3VycmVudCBwYXNzd29yZC4KKyAgICAgICAgIiIiCisgICAg
ICAgIHN0YXR1cyA9M0QgTm9uZQorICAgICAgICBtZXNzYWdlID0zRCBOb25lCisgICAgICAgIHVz
ZXIgPTNEIE5vbmUKKyAgICAgICAgaWYga3dkLmdldCggJ2NoYW5nZV9wYXNzd29yZF9idXR0b24n
LCBGYWxzZSApOgorICAgICAgICAgICAgcGFzc3dvcmQgPTNEIGt3ZC5nZXQoICdwYXNzd29yZCcs
ICcnICkKKyAgICAgICAgICAgIGNvbmZpcm0gPTNEIGt3ZC5nZXQoICdjb25maXJtJywgJycgKQor
ICAgICAgICAgICAgY3VycmVudCA9M0Qga3dkLmdldCggJ2N1cnJlbnQnLCAnJyApCisgICAgICAg
ICAgICB0b2tlbl9yZXN1bHQgPTNEIE5vbmUKKyAgICAgICAgICAgIGlmIHRva2VuOgorICAgICAg
ICAgICAgICAgICMgSWYgYSB0b2tlbiB3YXMgc3VwcGxpZWQsIHZhbGlkYXRlIGFuZCBzZXQgdXNl
cgorICAgICAgICAgICAgICAgIHRva2VuX3Jlc3VsdCA9M0QgdHJhbnMuc2Ffc2Vzc2lvbi5xdWVy
eSggdHJhbnMuYXBwLm1vZGVsLlA9CmFzc3dvcmRSZXNldFRva2VuICkuZ2V0KHRva2VuKQorICAg
ICAgICAgICAgICAgIGlmIHRva2VuX3Jlc3VsdCBhbmQgdG9rZW5fcmVzdWx0LmV4cGlyYXRpb25f
dGltZSA+IGRhdGV0aW09CmUubm93KCk6CisgICAgICAgICAgICAgICAgICAgIHVzZXIgPTNEIHRv
a2VuX3Jlc3VsdC51c2VyCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHRyYW5zLnNob3dfZXJyb3JfbWVzc2FnZSgiSW52YWxpZCBvciBleHBpcmVkIHBh
PQpzc3dvcmQgcmVzZXQgdG9rZW4sIHBsZWFzZSByZXF1ZXN0IGEgbmV3IG9uZS4iKQorICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIFRoZSB1c2VyIGlzIGNoYW5naW5nIHRoZWly
IG93biBwYXNzd29yZCwgdmFsaWRhdGUgdGhlaXIgPQpjdXJyZW50IHBhc3N3b3JkCisgICAgICAg
ICAgICAgICAgaWYgdHJhbnMudXNlci5jaGVja19wYXNzd29yZCggY3VycmVudCApOgorICAgICAg
ICAgICAgICAgICAgICB1c2VyID0zRCB0cmFucy51c2VyCisgICAgICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9M0QgJ0ludmFsaWQgY3VycmVudCBwYXNzd29y
ZCcKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0zRCAnZXJyb3InCisgICAgICAgICAgICBp
ZiB1c2VyOgorICAgICAgICAgICAgICAgICMgVmFsaWRhdGUgdGhlIG5ldyBwYXNzd29yZAorICAg
ICAgICAgICAgICAgIG1lc3NhZ2UgPTNEIHZhbGlkYXRlX3Bhc3N3b3JkKCB0cmFucywgcGFzc3dv
cmQsIGNvbmZpcm0gKQorICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2U6CisgICAgICAgICAgICAg
ICAgICAgIHN0YXR1cyA9M0QgJ2Vycm9yJworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgICAgICMgU2F2ZSBuZXcgcGFzc3dvcmQKKyAgICAgICAgICAgICAgICAgICAgdXNl
ci5zZXRfcGFzc3dvcmRfY2xlYXJ0ZXh0KCBwYXNzd29yZCApCisgICAgICAgICAgICAgICAgICAg
ICMgaWYgd2UgdXNlZCBhIHRva2VuLCBpbnZhbGlkYXRlIGl0IGFuZCBsb2cgdGhlIHVzZXIgaT0K
bi4KKyAgICAgICAgICAgICAgICAgICAgaWYgdG9rZW5fcmVzdWx0OgorICAgICAgICAgICAgICAg
ICAgICAgICAgdHJhbnMuaGFuZGxlX3VzZXJfbG9naW4odG9rZW5fcmVzdWx0LnVzZXIpCisgICAg
ICAgICAgICAgICAgICAgICAgICB0b2tlbl9yZXN1bHQuZXhwaXJhdGlvbl90aW1lID0zRCBkYXRl
dGltZS5ub3coKQorICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQo
dG9rZW5fcmVzdWx0KQorICAgICAgICAgICAgICAgICAgICAjIEludmFsaWRhdGUgYWxsIG90aGVy
IHNlc3Npb25zCisgICAgICAgICAgICAgICAgICAgIGZvciBvdGhlcl9nYWxheHlfc2Vzc2lvbiBp
biB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCB0cj0KYW5zLmFwcC5tb2RlbC5HYWxheHlTZXNzaW9u
ICkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAuZmlsdGVyKCBhbmRfKCB0cmFucy49CmFwcC5tb2RlbC5HYWxheHlTZXNzaW9uLnRhYmxlLmMu
dXNlcl9pZCA9M0Q9M0QgdXNlci5pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnMuPQphcHAubW9kZWwuR2Fs
YXh5U2Vzc2lvbi50YWJsZS5jLmlzX3ZhbGlkIGlzIFRydWUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zLj0K
YXBwLm1vZGVsLkdhbGF4eVNlc3Npb24udGFibGUuYy5pZCAhPTNEIHRyYW5zLmdhbGF4eV9zZXNz
aW9uLmlkICkgKToKKyAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyX2dhbGF4eV9zZXNzaW9u
LmlzX3ZhbGlkID0zRCBGYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnMuc2Ffc2Vz
c2lvbi5hZGQoIG90aGVyX2dhbGF4eV9zZXNzaW9uICkKKyAgICAgICAgICAgICAgICAgICAgdHJh
bnMuc2Ffc2Vzc2lvbi5hZGQoIHVzZXIgKQorICAgICAgICAgICAgICAgICAgICB0cmFucy5zYV9z
ZXNzaW9uLmZsdXNoKCkKKyAgICAgICAgICAgICAgICAgICAgdHJhbnMubG9nX2V2ZW50KCAiVXNl
ciBjaGFuZ2UgcGFzc3dvcmQiICkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnNo
b3dfb2tfbWVzc2FnZSgnVGhlIHBhc3N3b3JkIGhhcyBiZWVuIGNoPQphbmdlZCBhbmQgYW55IG90
aGVyIGV4aXN0aW5nIEdhbGF4eSBzZXNzaW9ucyBoYXZlIGJlZW4gbG9nZ2VkIG91dCAoYnV0IGpv
YnM9CiBpbiBoaXN0b3JpZXMgaW4gdGhvc2Ugc2Vzc2lvbnMgd2lsbCBub3QgYmUgaW50ZXJydXB0
ZWQpLicpCisgICAgICAgIHJldHVybiB0cmFucy5maWxsX3RlbXBsYXRlKCAnL3VzZXIvY2hhbmdl
X3Bhc3N3b3JkLm1ha28nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9r
ZW49M0R0b2tlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0z
RHN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9M0Rt
ZXNzYWdlICkKKworICAgIEB3ZWIuZXhwb3NlCisgICAgZGVmIHJlc2V0X3Bhc3N3b3JkKCBzZWxm
LCB0cmFucywgZW1haWw9M0ROb25lLCB0b2tlbj0zRE5vbmUsICoqa3dkICk6CiAgICAgICAgICIi
IlJlc2V0IHRoZSB1c2VyJ3MgcGFzc3dvcmQuIFNlbmQgYW4gZW1haWwgd2l0aCB0aGUgbmV3IHBh
c3N3b3JkLj0KIiIiCiAgICAgICAgIGlmIHRyYW5zLmFwcC5jb25maWcuc210cF9zZXJ2ZXIgaXMg
Tm9uZToKLSAgICAgICAgICAgIHJldHVybiB0cmFucy5zaG93X2Vycm9yX21lc3NhZ2UoICJNYWls
IGlzIG5vdCBjb25maWd1cmVkIGZvciB0PQpoaXMgR2FsYXh5IGluc3RhbmNlLiBQbGVhc2UgY29u
dGFjdCB5b3VyIGxvY2FsIEdhbGF4eSBhZG1pbmlzdHJhdG9yLiIgKQotICAgICAgICBtZXNzYWdl
ID0zRCAnJworICAgICAgICAgICAgcmV0dXJuIHRyYW5zLnNob3dfZXJyb3JfbWVzc2FnZSggIk1h
aWwgaXMgbm90IGNvbmZpZ3VyZWQgZm9yIHQ9CmhpcyBHYWxheHkgaW5zdGFuY2UgIgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCBwYXNzd29yZCByZXNl
dCBpbmZvcm1hdGk9Cm9uIGNhbm5vdCBiZSBzZW50LiAiCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiUGxlYXNlIGNvbnRhY3QgeW91ciBsb2NhbCBHYT0KbGF4
eSBhZG1pbmlzdHJhdG9yLiIgKQorICAgICAgICBtZXNzYWdlID0zRCBOb25lCiAgICAgICAgIHN0
YXR1cyA9M0QgJ2RvbmUnCiAgICAgICAgIGlmIGt3ZC5nZXQoICdyZXNldF9wYXNzd29yZF9idXR0
b24nLCBGYWxzZSApOgorICAgICAgICAgICAgIyBEZWZhdWx0IHRvIGEgbm9uLXVzZXJpbmZvLWxl
YWtpbmcgcmVzcG9uc2UgbWVzc2FnZQorICAgICAgICAgICAgbWVzc2FnZSA9M0QgIllvdXIgcmVz
ZXQgcmVxdWVzdCBmb3IgJXMgaGFzIGJlZW4gcmVjZWl2ZWQuICBQbGU9CmFzZSBjaGVjayB5b3Vy
IGVtYWlsIGFjY291bnQgZm9yIG1vcmUgaW5zdHJ1Y3Rpb25zLiAgSWYgeW91IGRvIG5vdCByZWNl
aXZlID0KYW4gZW1haWwgc2hvcnRseSwgcGxlYXNlIGNvbnRhY3QgYW4gYWRtaW5pc3RyYXRvci4i
ICUgKCBlc2NhcGUoIGVtYWlsICkgKQogICAgICAgICAgICAgcmVzZXRfdXNlciA9M0QgdHJhbnMu
c2Ffc2Vzc2lvbi5xdWVyeSggdHJhbnMuYXBwLm1vZGVsLlVzZXIgKS49CmZpbHRlciggdHJhbnMu
YXBwLm1vZGVsLlVzZXIudGFibGUuYy5lbWFpbCA9M0Q9M0QgZW1haWwgKS5maXJzdCgpCiAgICAg
ICAgICAgICB1c2VyID0zRCB0cmFucy5nZXRfdXNlcigpCiAgICAgICAgICAgICBpZiByZXNldF91
c2VyOgogICAgICAgICAgICAgICAgIGlmIHVzZXIgYW5kIHVzZXIuaWQgIT0zRCByZXNldF91c2Vy
LmlkOgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgZG9lc24ndCBtYWtlIGFueSBzZW5zZSBi
ZWNhdXNlIGFsbCB0aGV5IGhhdmUgdG89CiBkbyBpcyBsb2cKKyAgICAgICAgICAgICAgICAgICAg
IyBvdXQgYW5kIHRoZW4gdHJ5IGl0IGFnYWluICAgI1RPRE8gcmV2aXNpdCB3aHkgdGhpcyBlPQp4
aXN0cy4KICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9M0QgIllvdSBtYXkgb25seSByZXNl
dCB5b3VyIG93biBwYXNzd29yZC4iCiAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9M0QgJ2Vy
cm9yJwogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGNoYXJzID0z
RCBzdHJpbmcubGV0dGVycyArIHN0cmluZy5kaWdpdHMKLSAgICAgICAgICAgICAgICAgICAgbmV3
X3Bhc3MgPTNEICIiCi0gICAgICAgICAgICAgICAgICAgIHJlc2V0X3Bhc3N3b3JkX2xlbmd0aCA9
M0QgZ2V0YXR0ciggdHJhbnMuYXBwLmNvbmZpZywgIj0KcmVzZXRfcGFzc3dvcmRfbGVuZ3RoIiwg
MTUgKQotICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSggcmVzZXRfcGFzc3dvcmRf
bGVuZ3RoICk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXdfcGFzcyA9M0QgbmV3X3Bhc3Mg
KyByYW5kb20uY2hvaWNlKCBjaGFycyApCisgICAgICAgICAgICAgICAgICAgIHBydCA9M0QgbW9k
ZWwuUGFzc3dvcmRSZXNldFRva2VuKCByZXNldF91c2VyICkKKyAgICAgICAgICAgICAgICAgICAg
dHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIHBydCApCisgICAgICAgICAgICAgICAgICAgIHRyYW5zLnNh
X3Nlc3Npb24uZmx1c2goKQogICAgICAgICAgICAgICAgICAgICBob3N0ID0zRCB0cmFucy5yZXF1
ZXN0Lmhvc3Quc3BsaXQoICc6JyApWyAwIF0KICAgICAgICAgICAgICAgICAgICAgaWYgaG9zdCA9
M0Q9M0QgJ2xvY2FsaG9zdCc6CiAgICAgICAgICAgICAgICAgICAgICAgICBob3N0ID0zRCBzb2Nr
ZXQuZ2V0ZnFkbigpCi0gICAgICAgICAgICAgICAgICAgIGJvZHkgPTNEICdZb3VyIHBhc3N3b3Jk
IG9uICVzIGhhcyBiZWVuIHJlc2V0IHRvOlxuXG4gID0KJXNcbicgJSAoIGhvc3QsIG5ld19wYXNz
ICkKKyAgICAgICAgICAgICAgICAgICAgcmVzZXRfdXJsID0zRCB1cmxfZm9yKCBjb250cm9sbGVy
PTNEJ3VzZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rp
b249M0QiY2hhbmdlX3Bhc3N3b3JkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdG9rZW49M0RwcnQudG9rZW4sIHF1YWxpZmllZD0zRFRyPQp1ZSkKKyAgICAgICAg
ICAgICAgICAgICAgYm9keSA9M0QgUEFTU1dPUkRfUkVTRVRfVEVNUExBVEUgJSAoIGhvc3QsIHJl
c2V0X3VybCwgPQpyZXNldF91cmwgKQogICAgICAgICAgICAgICAgICAgICBmcm0gPTNEICdnYWxh
eHktbm8tcmVwbHlAJyArIGhvc3QKICAgICAgICAgICAgICAgICAgICAgc3ViamVjdCA9M0QgJ0dh
bGF4eSBQYXNzd29yZCBSZXNldCcKICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAg
ICAgICAgICAgICAgICAgdXRpbC5zZW5kX21haWwoIGZybSwgZW1haWwsIHN1YmplY3QsIGJvZHks
IHRyYW5zLmE9CnBwLmNvbmZpZyApCi0gICAgICAgICAgICAgICAgICAgICAgICByZXNldF91c2Vy
LnNldF9wYXNzd29yZF9jbGVhcnRleHQoIG5ld19wYXNzICkKICAgICAgICAgICAgICAgICAgICAg
ICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRkKCByZXNldF91c2VyICkKICAgICAgICAgICAgICAgICAg
ICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uZmx1c2goKQogICAgICAgICAgICAgICAgICAgICAgICAg
dHJhbnMubG9nX2V2ZW50KCAiVXNlciByZXNldCBwYXNzd29yZDogJXMiICUgZW1haWw9CiApCi0g
ICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0zRCAiUGFzc3dvcmQgaGFzIGJlZW4gcmVz
ZXQgYW5kIGVtYWlsZWQgdD0KbzogJXMuICA8YSBocmVmPTNEJyVzJz5DbGljayBoZXJlPC9hPiB0
byByZXR1cm4gdG8gdGhlIGxvZ2luIGZvcm0uIiAlICggZXNjPQphcGUoIGVtYWlsICksIHdlYi51
cmxfZm9yKCBjb250cm9sbGVyPTNEJ3VzZXInLCBhY3Rpb249M0QnbG9naW4nLCBub3JlZGlyZWM9
CnQ9M0QndHJ1ZScgKSApCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6
CiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPTNEICdlcnJvcicKICAgICAgICAgICAg
ICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICdGYWlsZWQgdG8gcmVzZXQgcGFzc3dvcmQ6ICVzJyAl
IHN0ciggPQplICkKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5leGNlcHRpb24oICdVbmFi
bGUgdG8gcmVzZXQgcGFzc3dvcmQuJyApCi0gICAgICAgICAgICBlbGlmIGVtYWlsIGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPTNEICJUaGUgc3BlY2lmaWVkIHVzZXIgZG9l
cyBub3QgZXhpc3QuIgotICAgICAgICAgICAgICAgIHN0YXR1cyA9M0QgJ2Vycm9yJwotICAgICAg
ICAgICAgZWxpZiBlbWFpbCBpcyBOb25lOgotICAgICAgICAgICAgICAgIGVtYWlsID0zRCAiIgog
ICAgICAgICByZXR1cm4gdHJhbnMuZmlsbF90ZW1wbGF0ZSggJy91c2VyL3Jlc2V0X3Bhc3N3b3Jk
Lm1ha28nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0zRG1l
c3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9M0RzdGF0
dXMgKQoKZGlmZiAtciA0MjhlNThmY2QzM2E5ZjkzNDI5MmZjYWRhYzg0MGM3NTc4M2JjZDYyIC1y
IGEyNWNlNjNjZGNmMDdjYjJkMjBmZjM0PQo3YmY0MmU4NmY0ZmQ0ZjIxYiB0ZW1wbGF0ZXMvdXNl
ci9jaGFuZ2VfcGFzc3dvcmQubWFrbwotLS0gL2Rldi9udWxsCisrKyBiL3RlbXBsYXRlcy91c2Vy
L2NoYW5nZV9wYXNzd29yZC5tYWtvCkBAIC0wLDAgKzEsMzEgQEAKKzwlaW5oZXJpdCBmaWxlPTNE
Ii9iYXNlLm1ha28iLz4KKzwlbmFtZXNwYWNlIGZpbGU9M0QiL21lc3NhZ2UubWFrbyIgaW1wb3J0
PTNEInJlbmRlcl9tc2ciIC8+CisKKyVpZiBtZXNzYWdlOgorICAgICR7cmVuZGVyX21zZyggbWVz
c2FnZSwgc3RhdHVzICl9CislZW5kaWYKKworPGRpdiBjbGFzcz0zRCJ0b29sRm9ybSI+CisgICAg
PGZvcm0gbmFtZT0zRCJjaGFuZ2VfcGFzc3dvcmQiIGlkPTNEImNoYW5nZV9wYXNzd29yZCIgYWN0
aW9uPTNEIiR7aC51cj0KbF9mb3IoIGNvbnRyb2xsZXI9M0QndXNlcicsIGFjdGlvbj0zRCdjaGFu
Z2VfcGFzc3dvcmQnICl9IiBtZXRob2Q9M0QicG9zdCIgPgorICAgICAgICA8ZGl2IGNsYXNzPTNE
InRvb2xGb3JtVGl0bGUiPkNoYW5nZSBQYXNzd29yZDwvZGl2PgorICAgICAgICAlaWYgdG9rZW46
CisgICAgICAgICAgICA8aW5wdXQgdHlwZT0zRCJoaWRkZW4iIG5hbWU9M0QidG9rZW4iIHZhbHVl
PTNEIiR7dG9rZW58aH0iLz4KKyAgICAgICAgJWVsaWYgbm90IGlzX2FkbWluOgorICAgICAgICAg
ICAgPGRpdiBjbGFzcz0zRCJmb3JtLXJvdyI+CisgICAgICAgICAgICAgICAgPGxhYmVsPkN1cnJl
bnQgcGFzc3dvcmQ6PC9sYWJlbD4KKyAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0zRCJwYXNz
d29yZCIgbmFtZT0zRCJjdXJyZW50IiB2YWx1ZT0zRCIiIHNpemU9Cj0zRCI0MCIvPgorICAgICAg
ICAgICAgPC9kaXY+CisgICAgICAgICVlbmRpZgorICAgICAgICA8ZGl2IGNsYXNzPTNEImZvcm0t
cm93Ij4KKyAgICAgICAgICAgIDxsYWJlbD5OZXcgcGFzc3dvcmQ6PC9sYWJlbD4KKyAgICAgICAg
ICAgIDxpbnB1dCB0eXBlPTNEInBhc3N3b3JkIiBuYW1lPTNEInBhc3N3b3JkIiB2YWx1ZT0zRCIi
IHNpemU9M0QiPQo0MCIvPgorICAgICAgICA8L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz0zRCJm
b3JtLXJvdyI+CisgICAgICAgICAgICA8bGFiZWw+Q29uZmlybTo8L2xhYmVsPgorICAgICAgICAg
ICAgPGlucHV0IHR5cGU9M0QicGFzc3dvcmQiIG5hbWU9M0QiY29uZmlybSIgdmFsdWU9M0QiIiBz
aXplPTNEIjQ9CjAiLz4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9M0QiZm9y
bS1yb3ciPgorICAgICAgICAgICAgPGlucHV0IHR5cGU9M0Qic3VibWl0IiBuYW1lPTNEImNoYW5n
ZV9wYXNzd29yZF9idXR0b24iIHZhbHVlPQo9M0QiU2F2ZSIvPgorICAgICAgICA8L2Rpdj4KKyAg
ICA8L2Zvcm0+Cis8L2Rpdj4KCmRpZmYgLXIgNDI4ZTU4ZmNkMzNhOWY5MzQyOTJmY2FkYWM4NDBj
NzU3ODNiY2Q2MiAtciBhMjVjZTYzY2RjZjA3Y2IyZDIwZmYzND0KN2JmNDJlODZmNGZkNGYyMWIg
dGVtcGxhdGVzL3VzZXIvaW5kZXgubWFrbwotLS0gYS90ZW1wbGF0ZXMvdXNlci9pbmRleC5tYWtv
CisrKyBiL3RlbXBsYXRlcy91c2VyL2luZGV4Lm1ha28KQEAgLTYsNyArNiw4IEBACiAgICAgPHVs
PgogICAgICAgICAlaWYgdC53ZWJhcHAubmFtZSA9M0Q9M0QgJ2dhbGF4eSc6CiAgICAgICAgICAg
ICAlaWYgbm90IHRyYW5zLmFwcC5jb25maWcudXNlX3JlbW90ZV91c2VyOgotICAgICAgICAgICAg
ICAgIDxsaT48YSBocmVmPTNEIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3VzZXInLCBhY3Rp
b249M0Q9CidtYW5hZ2VfdXNlcl9pbmZvJywgY250cmxsZXI9M0RjbnRybGxlciApfSI+JHtfKCdN
YW5hZ2UgeW91ciBpbmZvcm1hdGlvbicpfT0KPC9hPiAoZW1haWwsIHBhc3N3b3JkLCBldGMuKTwv
bGk+CisgICAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9M0QiJHtoLnVybF9mb3IoIGNvbnRyb2xs
ZXI9M0QndXNlcicsIGFjdGlvbj0zRD0KJ21hbmFnZV91c2VyX2luZm8nLCBjbnRybGxlcj0zRGNu
dHJsbGVyICl9Ij4ke18oJ01hbmFnZSB5b3VyIGluZm9ybWF0aW9uJyl9PQo8L2E+IChlbWFpbCwg
YWRkcmVzcywgZXRjLik8L2xpPgorICAgICAgICAgICAgICAgIDxsaT48YSBocmVmPTNEIiR7aC51
cmxfZm9yKCBjb250cm9sbGVyPTNEJ3VzZXInLCBhY3Rpb249M0Q9CidjaGFuZ2VfcGFzc3dvcmQn
ICl9Ij4ke18oJ0NoYW5nZSB5b3VyIHBhc3N3b3JkJyl9PC9hPjwvbGk+CiAgICAgICAgICAgICAl
ZW5kaWYKICAgICAgICAgICAgIDxsaT48YSBocmVmPTNEIiR7aC51cmxfZm9yKCBjb250cm9sbGVy
PTNEJ3VzZXInLCBhY3Rpb249M0Qnc2V0PQpfZGVmYXVsdF9wZXJtaXNzaW9ucycsIGNudHJsbGVy
PTNEY250cmxsZXIgKX0iPiR7XygnQ2hhbmdlIGRlZmF1bHQgcGVybWlzc2k9Cm9ucycpfTwvYT4g
Zm9yIG5ldyBoaXN0b3JpZXM8L2xpPjxsaT48YSBocmVmPTNEIiR7aC51cmxfZm9yKCBjb250cm9s
bGVyPTNEJz0KdXNlcicsIGFjdGlvbj0zRCdhcGlfa2V5cycsIGNudHJsbGVyPTNEY250cmxsZXIg
KX0iPiR7XygnTWFuYWdlIHlvdXIgQVBJIGtlPQp5cycpfTwvYT48L2xpPgoKZGlmZiAtciA0Mjhl
NThmY2QzM2E5ZjkzNDI5MmZjYWRhYzg0MGM3NTc4M2JjZDYyIC1yIGEyNWNlNjNjZGNmMDdjYjJk
MjBmZjM0PQo3YmY0MmU4NmY0ZmQ0ZjIxYiB0ZW1wbGF0ZXMvdXNlci9pbmZvLm1ha28KLS0tIGEv
dGVtcGxhdGVzL3VzZXIvaW5mby5tYWtvCisrKyBiL3RlbXBsYXRlcy91c2VyL2luZm8ubWFrbwpA
QCAtNyw3ICs3LDcgQEAKICAgICA8c2NyaXB0IHR5cGU9M0QidGV4dC9qYXZhc2NyaXB0Ij4KICAg
ICAgICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7Cj0yMAotICAgICAgICAgICAgZnVu
Y3Rpb24gdmFsaWRhdGVTdHJpbmcodGVzdF9zdHJpbmcsIHR5cGUpIHs9MjAKKyAgICAgICAgICAg
IGZ1bmN0aW9uIHZhbGlkYXRlU3RyaW5nKHRlc3Rfc3RyaW5nLCB0eXBlKSB7CiAgICAgICAgICAg
ICAgICAgdmFyIG1haWxfcmUgPTNEIC9eKChbXjw+KClbXF1cXC4sOzpcc0BcIl0rKFwuW148Pigp
W1xdXFwuLD0KOzpcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxbWzAtOV17MSwzfVwuWzAtOV17MSwz
fVwuWzAtOV17MSwzfVwuWzAtOV17MSwzfVxdPQopfCgoW2EtekEtWlwtMC05XStcLikrW2EtekEt
Wl17Mix9KSkkLzsKICAgICAgICAgICAgICAgICB2YXIgdXNlcm5hbWVfcmUgPTNEIC9eW2EtejAt
OVwtXXs0LDI1NX0kLzsKICAgICAgICAgICAgICAgICBpZiAodHlwZSA9M0Q9M0Q9M0QgJ2VtYWls
JykgewpAQCAtMTUsNyArMTUsNyBAQAogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9
M0Q9M0Q9M0QgJ3VzZXJuYW1lJyl7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1c2VybmFt
ZV9yZS50ZXN0KHRlc3Rfc3RyaW5nKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
PTIwCisgICAgICAgICAgICB9Cj0yMAogICAgICAgICAgICAgZnVuY3Rpb24gcmVuZGVyRXJyb3Io
bWVzc2FnZSkgewogICAgICAgICAgICAgICAgICQoIi5kb25lbWVzc2FnZSIpLmhpZGUoKTsKQEAg
LTI2LDggKzI2LDkgQEAKICAgICAgICAgICAgICAgICAgICAgZGl2LmNsYXNzTmFtZSA9M0QgImVy
cm9ybWVzc2FnZSI7CiAgICAgICAgICAgICAgICAgICAgIGRpdi5pbm5lckhUTUwgPTNEIG1lc3Nh
Z2U7CiAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKCBkaXYs
IGRvY3VtZW50LmJvZHkuZmlyc3RDaD0KaWxkICk7Ci0gICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGZ1bmN0aW9uIHJl
bmRlckRvbmUobWVzc2FnZSkgewogICAgICAgICAgICAgICAgICQoIi5lcnJvcm1lc3NhZ2UiKS5o
aWRlKCk7CiAgICAgICAgICAgICAgICAgaWYgKCQoIi5kb25lbWVzc2FnZSIpLmxlbmd0aCA9M0Q9
M0Q9M0QgMSkgewpAQCAtMzcsOCArMzgsOCBAQAogICAgICAgICAgICAgICAgICAgICBkaXYuY2xh
c3NOYW1lID0zRCAiZG9uZW1lc3NhZ2UiOwogICAgICAgICAgICAgICAgICAgICBkaXYuaW5uZXJI
VE1MID0zRCBtZXNzYWdlOwogICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2Vy
dEJlZm9yZSggZGl2LCBkb2N1bWVudC5ib2R5LmZpcnN0Q2g9CmlsZCApOwotICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQo9MjAKICAgICAgICAg
ICAgIG9yaWdpbmFsX2VtYWlsID0zRCAkKCAnI2VtYWlsX2lucHV0JyApLnZhbCgpOwogICAgICAg
ICAgICAgb3JpZ2luYWxfdXNlcm5hbWUgPTNEICQoICcjbmFtZV9pbnB1dCcgKS52YWwoKTsKQEAg
LTU1LDcgKzU2LDYgQEAKICAgICAgICAgICAgICAgICB2YXIgaGlkZGVuX2lucHV0ID0zRCAnPGlu
cHV0IHR5cGU9M0QiaGlkZGVuIiBpZD0zRCJsb2dpbl9pPQpuZm9fYnV0dG9uIiBuYW1lPTNEImxv
Z2luX2luZm9fYnV0dG9uIiB2YWx1ZT0zRCJTdWJtaXQiLz4nOwogICAgICAgICAgICAgICAgICQo
ICcjc2VuZCcgKS5hdHRyKCAnZGlzYWJsZWQnLCAnZGlzYWJsZWQnICk7CiAgICAgICAgICAgICAg
ICAgJCggIiNlbWFpbF9pbnB1dCIgKS5iZWZvcmUoIGhpZGRlbl9pbnB1dCApOwotICAgICAgICAg
ICAgICAgPTIwCiAgICAgICAgICAgICAgICAgaWYgKCBvcmlnaW5hbF9lbWFpbCAhPTNEPTNEIGVt
YWlsICl7CiAgICAgICAgICAgICAgICAgICAgIGlmICggZW1haWwubGVuZ3RoID4gMjU1ICl7IHJl
bmRlckVycm9yKCBlcnJvcl90ZXh0X2VtYT0KaWxfbG9uZyApOyB2YWxpZEZvcm0gPTNEIGZhbHNl
OyB9CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCAhdmFsaWRhdGVTdHJpbmcoIGVtYWls
LCAiZW1haWwiICkgKXsgcmVuZGVyRT0KcnJvciggZXJyb3JfdGV4dF9lbWFpbCApOyB2YWxpZEZv
cm0gPTNEIGZhbHNlOyB9CkBAIC02Niw3ICs2Niw3IEBACiAgICAgICAgICAgICAgICAgaWYgKCBu
b3RoaW5nX2NoYW5nZWQgKXsKICAgICAgICAgICAgICAgICAgICAgcmVuZGVyRG9uZSggIk5vdGhp
bmcgaGFzIGNoYW5nZWQuIiApOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBp
ZiAoICF2YWxpZEZvcm0gIHx8IG5vdGhpbmdfY2hhbmdlZCApIHs9MjAKKyAgICAgICAgICAgICAg
ICBpZiAoICF2YWxpZEZvcm0gIHx8IG5vdGhpbmdfY2hhbmdlZCApIHsKICAgICAgICAgICAgICAg
ICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICAgICAgICAgICAvLyByZWFjdGl2
YXRlIHRoZSBidXR0b24gaWYgdGhlIGZvcm0gd2Fzbid0IHN1Ym1pdHRlZAogICAgICAgICAgICAg
ICAgICAgICAkKCAnI3NlbmQnICkucmVtb3ZlQXR0ciggJ2Rpc2FibGVkJyApOwpAQCAtMTI3LDI3
ICsxMjcsNCBAQAogICAgICAgICAgICAgPC9kaXY+PC9mb3JtPjwvZGl2PgotICAgIDxwPjwvcD4K
LSAgICA8ZGl2IGNsYXNzPTNEInRvb2xGb3JtIj4KLSAgICAgICAgPGZvcm0gbmFtZT0zRCJjaGFu
Z2VfcGFzc3dvcmQiIGlkPTNEImNoYW5nZV9wYXNzd29yZCIgYWN0aW9uPTNEIiR7PQpoLnVybF9m
b3IoIGNvbnRyb2xsZXI9M0QndXNlcicsIGFjdGlvbj0zRCdlZGl0X2luZm8nLCBjbnRybGxlcj0z
RGNudHJsbGVyLCA9CnVzZXJfaWQ9M0R0cmFucy5zZWN1cml0eS5lbmNvZGVfaWQoIHVzZXIuaWQg
KSApfSIgbWV0aG9kPTNEInBvc3QiID4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9M0QidG9vbEZv
cm1UaXRsZSI+Q2hhbmdlIFBhc3N3b3JkPC9kaXY+Ci0gICAgICAgICAgICAlaWYgbm90IGlzX2Fk
bWluOgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9M0QiZm9ybS1yb3ciPgotICAgICAgICAg
ICAgICAgICAgICA8bGFiZWw+Q3VycmVudCBwYXNzd29yZDo8L2xhYmVsPgotICAgICAgICAgICAg
ICAgICAgICA8aW5wdXQgdHlwZT0zRCJwYXNzd29yZCIgbmFtZT0zRCJjdXJyZW50IiB2YWx1ZT0z
RCIiIHM9Cml6ZT0zRCI0MCIvPgotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg
JWVuZGlmCi0gICAgICAgICAgICA8ZGl2IGNsYXNzPTNEImZvcm0tcm93Ij4KLSAgICAgICAgICAg
ICAgICA8bGFiZWw+TmV3IHBhc3N3b3JkOjwvbGFiZWw+Ci0gICAgICAgICAgICAgICAgPGlucHV0
IHR5cGU9M0QicGFzc3dvcmQiIG5hbWU9M0QicGFzc3dvcmQiIHZhbHVlPTNEIiIgc2l6ZT0KPTNE
IjQwIi8+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9M0QiZm9y
bS1yb3ciPgotICAgICAgICAgICAgICAgIDxsYWJlbD5Db25maXJtOjwvbGFiZWw+Ci0gICAgICAg
ICAgICAgICAgPGlucHV0IHR5cGU9M0QicGFzc3dvcmQiIG5hbWU9M0QiY29uZmlybSIgdmFsdWU9
M0QiIiBzaXplPQo9M0QiNDAiLz4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAgPGRp
diBjbGFzcz0zRCJmb3JtLXJvdyI+Ci0gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9M0Qic3Vi
bWl0IiBuYW1lPTNEImNoYW5nZV9wYXNzd29yZF9idXR0b24iIHZhbD0KdWU9M0QiU2F2ZSIvPgot
ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgIDwvZm9ybT4KLSAgICA8L2Rpdj48LyVkZWY+CgoK
aHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzNiYmVh
NGZmZjlmMi8KQ2hhbmdlc2V0OiAgIDNiYmVhNGZmZjlmMgpVc2VyOiAgICAgICAgY2FybGZlYmVy
aGFyZApEYXRlOiAgICAgICAgMjAxNS0wMS0xNCAxMzo1OTozNCswMDowMApTdW1tYXJ5OiAgICAg
TWVyZ2VkIGdhbGF4eS9nYWxheHktY2VudHJhbCBpbnRvIGRlZmF1bHQKQWZmZWN0ZWQgIzogIDM5
IGZpbGVzCgpkaWZmIC1yIGEyNWNlNjNjZGNmMDdjYjJkMjBmZjM0N2JmNDJlODZmNGZkNGYyMWIg
LXIgM2JiZWE0ZmZmOWYyMmFmMDU2NWUxMzY9CmRiYTY1OTkyNDAzYzBhOWE1IC5oZ3RhZ3MKLS0t
IGEvLmhndGFncworKysgYi8uaGd0YWdzCkBAIC04LDE2ICs4LDE4IEBACiA1ZTYwNWVkNjA2OWZl
NGM1Y2E5ODc1ZTk1ZTkxYjI3MTM0OTllOGNhIHJlbGVhc2VfMjAxNC4wMi4xMAogOWU1MzI1MWIw
YjdlOTNiOTU2MzAwOGEyYjExMmYyZTgxNWEwNGJiYyByZWxlYXNlXzIwMTQuMDQuMTQKIDdlMjU3
YzdiMTBiYWRiNjU3NzJiMTUyOGNiNjFkNTgxNzVhNDJlNDcgcmVsZWFzZV8yMDE0LjA2LjAyCi03
YTRkMzIxYzBlMzhmYTI2M2VhODNkMjlhMzVhNjA4YzMxODFmY2JhIGxhdGVzdF8yMDE0LjA2LjAy
Ci05NjYxYjlkNWQ1YjMzMDQ4M2FlM2FkMjIzNjQxMGUwZWZhYTdjNTAwIGxhdGVzdF8yMDE0LjA0
LjE0Ci02YjBiZDkzMDM4YTg0M2IxNTg1MTU1ZjBkNjNmMGVlYTI0NTljNzBiIGxhdGVzdF8yMDEz
LjAxLjEzCi0zZTYyMDYwYjE0YjlhZmM0NmY4ZTBlYzAyZTFhNDUwMGQ3N2RiOWUxIGxhdGVzdF8y
MDEzLjAyLjA4Ci00MjUwMDliM2ZmNGQ4YjY3ZDI4MTIyNTNiMjIxZjNjNGY0YThkMWUzIGxhdGVz
dF8yMDEzLjA0LjAxCi05NzEzZDg2MzkyZWY5ODVmZmNkYzM5ZmYwYzhkZGY1MWExZjljZTQ3IGxh
dGVzdF8yMDEzLjA2LjAzCi05ZWQ4NGNkMjA4ZTA3ZTg5ODVlYzkxN2NiMDI1ZmNiYmIwOWVkY2Zi
IGxhdGVzdF8yMDEzLjA4LjEyCi04MWZiZTI1YmQwMmVkY2Q1MzA2NWU4ZTQ0NzZkZDFkZmI1YTcy
Y2YyIGxhdGVzdF8yMDEzLjExLjA0Ci0yYTc1NmNhMmNiMTgyNmRiNzc5NjAxOGU3N2QxMmUyZGQ3
YjY3NjAzIGxhdGVzdF8yMDE0LjAyLjEwCis0MTQ1NDE3YTZlMWMxM2Y4MmEzZGUzNjVhYWRlZjBm
YjNlZDdhYjE0IGxhdGVzdF8yMDE0LjA2LjAyCis4ZjlkY2FjMDMzNjk0ZTRjYWJjZjVkYWFlNWNj
YTFjZmVmYmU5NjdmIGxhdGVzdF8yMDE0LjA0LjE0Cis5YzMyM2FhZDRmZmRkNjVhM2RlYjA2YTRh
MzZmNmIyYzUxMTVhNjBmIGxhdGVzdF8yMDEzLjAxLjEzCitiOTg2YzE4NGJlODg5NDdiNWQxZDkw
YmU3ZjM2Y2ZkMjYyN2RkOTM4IGxhdGVzdF8yMDEzLjAyLjA4CitkZWM5NDMxZDY2YjgzN2EyMDhl
MmYwNjBkOTBhZmQ5MTNjNzIxMjI3IGxhdGVzdF8yMDEzLjA0LjAxCisxOWU1NmU2NmIwYjM0NGM2
ZTJhZmE0NTQxZjY5ODhlNGZkYjlhZjI5IGxhdGVzdF8yMDEzLjA2LjAzCitjZWU5MDNiOGIzZWVl
OTE0NTYyN2VlODk3NDI1NTVkYWM1ODE3OTFlIGxhdGVzdF8yMDEzLjA4LjEyCis3ZDVhYTE5YTE2
NmNiYTkwMzllMTVmMzM4YTFlM2ZjOTI0YzQzZDNhIGxhdGVzdF8yMDEzLjExLjA0CiswYzAwMGNj
MmY5YzA1YmY0YzFjMmJjM2ExMDIxNTAxNGZkNjRlNjk2IGxhdGVzdF8yMDE0LjAyLjEwCiBjYTQ1
Yjc4YWRiNDE1MmZjNmU3Mzk1NTE0ZDQ2ZWJhNmI3ZDBiODM4IHJlbGVhc2VfMjAxNC4wOC4xMQot
NTQ4YWIyNDY2N2Q2MjA2NzgwMjM3YmQ4MDdmN2Q4NTdhNDg0YzQ2MSBsYXRlc3RfMjAxNC4wOC4x
MQorODE1MDAyNGMwZTZmYzVhZWYzMDMzY2Y4YWFhNTc0ODk2ZjZiNWQwZCBsYXRlc3RfMjAxNC4w
OC4xMQogMjA5Mjk0ODkzN2FjMzBlZjgyZjcxNDYzYTIzNWM2NmQzNDk4NzA4OCByZWxlYXNlXzIw
MTQuMTAuMDYKLTU4MzRiMTA2NjQ2MmRkMjE5ZjY3YzFjM2NiZDc3Yzc4ZTdjZjNhNmMgbGF0ZXN0
XzIwMTQuMTAuMDYKK2M0MzdiMjgzNDhhOTM0NWRiODQzM2U1YjRmMGUwNWVjOGZiNmMzOGEgbGF0
ZXN0XzIwMTQuMTAuMDYKKzJlOGRkMjk0OWRkM2VlZTBmNTZmOWEzYTVlYmYxYjJiYWNhMjRhZWUg
cmVsZWFzZV8yMDE1LjAxLjEzCisyZThkZDI5NDlkZDNlZWUwZjU2ZjlhM2E1ZWJmMWIyYmFjYTI0
YWVlIGxhdGVzdF8yMDE1LjAxLjEzCgpkaWZmIC1yIGEyNWNlNjNjZGNmMDdjYjJkMjBmZjM0N2Jm
NDJlODZmNGZkNGYyMWIgLXIgM2JiZWE0ZmZmOWYyMmFmMDU2NWUxMzY9CmRiYTY1OTkyNDAzYzBh
OWE1IGNsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtZm9ybS1iYXNlLmpzCi0t
LSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtZm9ybS1iYXNlLmpzCisr
KyBiL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtZm9ybS1iYXNlLmpzCkBA
IC0xMTEsNyArMTExLDcgQEAKICAgICAgICAgICAgIHRoaXMudHJlZS5maW5hbGl6ZSgpOwogICAg
ICAgICAgICA9MjAKICAgICAgICAgICAgIC8vIHNob3cgZXJyb3JzCi0gICAgICAgICAgICBpZiAo
IXRoaXMud29ya2Zsb3cgJiYgb3B0aW9ucy5lcnJvcnMpIHsKKyAgICAgICAgICAgIGlmIChvcHRp
b25zLmVycm9ycykgewogICAgICAgICAgICAgICAgIHZhciBlcnJvcl9tZXNzYWdlcyA9M0QgdGhp
cy50cmVlLm1hdGNoUmVzcG9uc2Uob3B0aW9ucy5lcnI9Cm9ycyk7CiAgICAgICAgICAgICAgICAg
Zm9yICh2YXIgaW5wdXRfaWQgaW4gZXJyb3JfbWVzc2FnZXMpIHsKICAgICAgICAgICAgICAgICAg
ICAgdGhpcy5oaWdobGlnaHQoaW5wdXRfaWQsIGVycm9yX21lc3NhZ2VzW2lucHV0X2lkXSwgdHJ1
PQplKTsKQEAgLTEzMSw2ICsxMzEsOSBAQAogICAgICAgICAgICAgICAgICAgICB0aGlzLmVsZW1l
bnRfbGlzdFtpXS5yZXNldCgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICA9MjAKKyAgICAgICAgICAgIC8vIHJlZnJlc2gKKyAgICAgICAgICAgIHRoaXMu
dHJpZ2dlcigncmVmcmVzaCcpOwogICAgICAgICB9LAo9MjAKICAgICAgICAgLyoqIFJlbmRlcnMg
dGhlIFVJIGVsZW1lbnRzIHJlcXVpcmVkIGZvciB0aGUgZm9ybQpAQCAtMTQ1LDcgKzE0OCw3IEBA
CiAgICAgICAgICAgICAvLyBidXR0b24gZm9yIHZlcnNpb24gc2VsZWN0aW9uCiAgICAgICAgICAg
ICB2YXIgcmVxdWlyZW1lbnRzX2J1dHRvbiA9M0QgbmV3IFVpLkJ1dHRvbkljb24oewogICAgICAg
ICAgICAgICAgIGljb24gICAgOiAnZmEtaW5mby1jaXJjbGUnLAotICAgICAgICAgICAgICAgIHRp
dGxlICAgOiAnUmVxdWlyZW1lbnRzJywKKyAgICAgICAgICAgICAgICB0aXRsZSAgIDogKCF0aGlz
LndvcmtmbG93ICYmICdSZXF1aXJlbWVudHMnKSB8fCBudWxsLAogICAgICAgICAgICAgICAgIHRv
b2x0aXAgOiAnRGlzcGxheSB0b29sIHJlcXVpcmVtZW50cycsCiAgICAgICAgICAgICAgICAgb25j
bGljayA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMudmlzaWJs
ZSkgewpAQCAtMTcwLDcgKzE3Myw3IEBACiAgICAgICAgICAgICAvLyBidXR0b24gZm9yIHZlcnNp
b24gc2VsZWN0aW9uCiAgICAgICAgICAgICB2YXIgdmVyc2lvbnNfYnV0dG9uID0zRCBuZXcgVWku
QnV0dG9uTWVudSh7CiAgICAgICAgICAgICAgICAgaWNvbiAgICA6ICdmYS1jdWJlcycsCi0gICAg
ICAgICAgICAgICAgdGl0bGUgICA6ICdWZXJzaW9ucycsCisgICAgICAgICAgICAgICAgdGl0bGUg
ICA6ICghdGhpcy53b3JrZmxvdyAmJiAnVmVyc2lvbnMnKSB8fCBudWxsLAogICAgICAgICAgICAg
ICAgIHRvb2x0aXAgOiAnU2VsZWN0IGFub3RoZXIgdG9vbCB2ZXJzaW9uJwogICAgICAgICAgICAg
fSk7CiAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJzaW9ucyAmJiBvcHRpb25zLnZlcnNpb25z
Lmxlbmd0aCA+IDEpIHsKQEAgLTIwMCw3ICsyMDMsNyBAQAogICAgICAgICAgICAgLy8gYnV0dG9u
IG1lbnUKICAgICAgICAgICAgIHZhciBtZW51X2J1dHRvbiA9M0QgbmV3IFVpLkJ1dHRvbk1lbnUo
ewogICAgICAgICAgICAgICAgIGljb24gICAgOiAnZmEtY2FyZXQtZG93bicsCi0gICAgICAgICAg
ICAgICAgdGl0bGUgICA6ICdPcHRpb25zJywKKyAgICAgICAgICAgICAgICB0aXRsZSAgIDogKCF0
aGlzLndvcmtmbG93ICYmICdPcHRpb25zJykgfHwgbnVsbCwKICAgICAgICAgICAgICAgICB0b29s
dGlwIDogJ1ZpZXcgYXZhaWxhYmxlIG9wdGlvbnMnCiAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgPTIwCgpkaWZmIC1yIGEyNWNlNjNjZGNmMDdjYjJkMjBmZjM0N2JmNDJlODZmNGZkNGYyMWIg
LXIgM2JiZWE0ZmZmOWYyMmFmMDU2NWUxMzY9CmRiYTY1OTkyNDAzYzBhOWE1IGNsaWVudC9nYWxh
eHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtZm9ybS13b3JrZmxvdy5qcwotLS0gYS9jbGllbnQv
Z2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLWZvcm0td29ya2Zsb3cuanMKKysrIGIvY2xp
ZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy1mb3JtLXdvcmtmbG93LmpzCkBAIC05
LDYgKzksNyBAQAogICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAg
ICAgICAgICAvLyBsaW5rIHdpdGggbm9kZSByZXByZXNlbnRhdGlvbiBpbiB3b3JrZmxvdyBtb2R1
bGUKICAgICAgICAgICAgIHRoaXMubm9kZSA9M0Qgd29ya2Zsb3cuYWN0aXZlX25vZGU7CisKICAg
ICAgICAgICAgIGlmICghdGhpcy5ub2RlKSB7CiAgICAgICAgICAgICAgICAgY29uc29sZS5kZWJ1
ZygnRkFJTEVEIC0gdG9vbHMtZm9ybS13b3JrZmxvdzppbml0aWFsaXplKCkgLT0KIE5vZGUgbm90
IGZvdW5kIGluIHdvcmtmbG93LicpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4LDYg
KzE5LDIyIEBACiAgICAgICAgICAgICB0aGlzLndvcmtmbG93ID0zRCB0cnVlOwogICAgICAgICAg
ICAgdGhpcy5vcHRpb25zID0zRCBvcHRpb25zOwo9MjAKKyAgICAgICAgICAgIC8vIGRlY2xhcmUg
ZmllbGRzIGFzIG9wdGlvbmFsCisgICAgICAgICAgICBVdGlscy5kZWVwZWFjaChvcHRpb25zLmlu
cHV0cywgZnVuY3Rpb24oaXRlbSkgeworICAgICAgICAgICAgICAgIGlmIChpdGVtLnR5cGUpIHsK
KyAgICAgICAgICAgICAgICAgICAgaXRlbS5vcHRpb25hbCA9M0QgKFsnZGF0YScsICdkYXRhX2hp
ZGRlbicsICdoaWRkZW4nLCAnPQpkcmlsbF9kb3duJ10pLmluZGV4T2YoaXRlbS50eXBlKSA9M0Q9
M0QgLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICA9MjAKKyAg
ICAgICAgICAgIC8vIGRlY2xhcmUgY29uZGl0aW9uYWwgZmllbGRzIGFzIG5vdCBvcHRpb25hbAor
ICAgICAgICAgICAgVXRpbHMuZGVlcGVhY2gob3B0aW9ucy5pbnB1dHMsIGZ1bmN0aW9uKGl0ZW0p
IHsKKyAgICAgICAgICAgICAgICBpZiAoaXRlbS50eXBlKSB7CisgICAgICAgICAgICAgICAgICAg
IGlmIChpdGVtLnR5cGUgPTNEPTNEICdjb25kaXRpb25hbCcpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGl0ZW0udGVzdF9wYXJhbS5vcHRpb25hbCA9M0QgZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKwogICAgICAgICAg
ICAgLy8gbG9hZCBleHRlbnNpb24KICAgICAgICAgICAgIHZhciBzZWxmID0zRCB0aGlzOwogICAg
ICAgICAgICAgVXRpbHMuZ2V0KHsKQEAgLTM4LDYgKzU1LDcgQEAKICAgICAgICAgICAgIGlucHV0
c1tVdGlscy51dWlkKCldID0zRCB7CiAgICAgICAgICAgICAgICAgbGFiZWwgICA6ICdFZGl0IFN0
ZXAgQXR0cmlidXRlcycsCiAgICAgICAgICAgICAgICAgdHlwZSAgICA6ICdzZWN0aW9uJywKKyAg
ICAgICAgICAgICAgICBleHBhbmQgIDogdGhpcy5ub2RlLmFubm90YXRpb24sCiAgICAgICAgICAg
ICAgICAgaW5wdXRzICA6IFt7CiAgICAgICAgICAgICAgICAgICAgIGxhYmVsICAgOiAnQW5ub3Rh
dGlvbiAvIE5vdGVzJywKICAgICAgICAgICAgICAgICAgICAgbmFtZSAgICA6ICdhbm5vdGF0aW9u
JywKQEAgLTE2MCw3ICsxNzgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgdHlwZSAgICAgICAg
OiAnYm9vbGVhbicsCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlICAgICAgIDogJ2ZhbHNlJywK
ICAgICAgICAgICAgICAgICAgICAgaWdub3JlICAgICAgOiAnZmFsc2UnLAotICAgICAgICAgICAg
ICAgICAgICBoZWxwICAgICAgICA6ICdUaGlzIGFjdGlvbiB3aWxsIHNlbmQgYW4gZW1haWwgbm90
aWZ5aW49CmcgeW91IHdoZW4gdGhlIGpvYiBpcyBkb25lLicKKyAgICAgICAgICAgICAgICAgICAg
aGVscCAgICAgICAgOiAnVGhpcyBhY3Rpb24gd2lsbCBzZW5kIGFuIGVtYWlsIG5vdGlmeWluPQpn
IHlvdSB3aGVuIHRoZSBqb2IgaXMgZG9uZS4nLAorICAgICAgICAgICAgICAgICAgICBwYXlsb2Fk
ICAgICA6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdob3N0JyAgOiB3aW5kb3cubG9jYXRp
b24uaG9zdAorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSx7CiAgICAg
ICAgICAgICAgICAgICAgIGFjdGlvbiAgICAgIDogJ0RlbGV0ZUludGVybWVkaWF0ZXNBY3Rpb24n
LAogICAgICAgICAgICAgICAgICAgICBsYWJlbCAgICAgICA6ICdEZWxldGUgbm9uLW91dHB1dHMn
LApAQCAtMTczLDMxICsxOTQsNTEgQEAKICAgICAgICAgICAgPTIwCiAgICAgICAgICAgICAvLyB2
aXNpdCBpbnB1dCBub2RlcyBhbmQgZW5yaWNoIGJ5IG5hbWUvdmFsdWUgcGFpcnMgZnJvbSBzZXJ2
ZT0KciBkYXRhCiAgICAgICAgICAgICB2YXIgc2VsZiA9M0QgdGhpczsKLSAgICAgICAgICAgIGZ1
bmN0aW9uIHZpc2l0IChpbnB1dHMpIHsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIGlu
cHV0cykgewotICAgICAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPTNEIGlucHV0c1tpXTsKKyAg
ICAgICAgICAgIGZ1bmN0aW9uIHZpc2l0IChoZWFkLCBoZWFkX2xpc3QpIHsKKyAgICAgICAgICAg
ICAgICBoZWFkX2xpc3QgPTNEIGhlYWRfbGlzdCB8fCBbXTsKKyAgICAgICAgICAgICAgICBoZWFk
X2xpc3QucHVzaChoZWFkKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIGhlYWQuaW5w
dXRzKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9M0QgaGVhZC5pbnB1dHNbaV07
CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5hY3Rpb24pIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGNvbnN0cnVjdCBpZGVudGlmaWVyIGFzIGV4cGVjdGVkIGJ5IGJhY2tlbmQK
ICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Lm5hbWUgPTNEICdwamFfXycgKyBvdXRwdXRf
aWQgKyAnX18nICsgaW5wdXQuPQphY3Rpb247CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
aW5wdXQuYXJndW1lbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC5uYW1l
ICs9M0QgJ19fJyArIGlucHV0LmFyZ3VtZW50OwogICAgICAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAgICA9MjAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1v
ZGlmeSBuYW1lcyBvZiBwYXlsb2FkIGFyZ3VtZW50cworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGlucHV0LnBheWxvYWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZh
ciBwX2lkIGluIGlucHV0LnBheWxvYWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIHAgPTNEIGlucHV0LnBheWxvYWRbcF9pZF07CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlucHV0LnBheWxvYWRbaW5wdXQubmFtZSArICdfXycgKyBwX2lkXSA9Cj0zRCBw
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgID0yMAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzL3Zlcmlm
eSBleGlzdGVuY2Ugb2YgdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0zRCBz
ZWxmLnBvc3Rfam9iX2FjdGlvbnNbaW5wdXQuYWN0aW9uICsgb3V0PQpwdXRfaWRdOwogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBtYXJrIGFzIGV4cGFuZGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIg
aiBpbiBoZWFkX2xpc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZF9s
aXN0W2pdLmV4cGFuZCA9M0QgdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGUgaW5wdXQgZmllbGQgdmFsdWUK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuYXJndW1lbnQpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQudmFsdWUgPTNEIGQuYWN0aW9uX2FyZ3Vt
ZW50cyAmJiBkLmFjPQp0aW9uX2FyZ3VtZW50c1tpbnB1dC5hcmd1bWVudF0gfHwgaW5wdXQudmFs
dWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5wdXQudmFsdWUgPTNEICd0cnVlJzsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuaW5wdXRz
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXQoaW5wdXQuaW5wdXRzKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAvLyBjb250aW51ZSB3aXRoIHN1YiBzZWN0aW9uCisgICAgICAgICAgICAgICAg
ICAgIGlmIChpbnB1dC5pbnB1dHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0KGlu
cHV0LCBoZWFkX2xpc3Quc2xpY2UoMCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgdmlzaXQoaW5wdXRfY29uZmln
LmlucHV0cyk7Ci0gICAgICAgICAgID0yMAorICAgICAgICAgICAgdmlzaXQoaW5wdXRfY29uZmln
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgPTIwCiAgICAgICAgICAgICAvLyByZXR1cm4gZmlu
YWwgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgcmV0dXJuIGlucHV0X2NvbmZpZzsKICAgICAg
ICAgfSwKQEAgLTIwNSw2ICsyNDYsMTUgQEAKICAgICAgICAgLyoqIEJ1aWxkcyBhIG5ldyBtb2Rl
bCB0aHJvdWdoIGFwaSBjYWxsIGFuZCByZWNyZWF0ZXMgdGhlIGVudGlyZSBmPQpvcm0KICAgICAg
ICAgKi8KICAgICAgICAgX2J1aWxkTW9kZWw6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgR2Fs
YXh5Lm1vZGFsLnNob3coeworICAgICAgICAgICAgICAgIHRpdGxlICAgOiAnQ29taW5nIHNvb24u
Li4nLAorICAgICAgICAgICAgICAgIGJvZHkgICAgOiAnVGhpcyBmZWF0dXJlIGhhcyBub3QgYmVl
biBpbXBsZW1lbnRlZCB5ZXQuJywKKyAgICAgICAgICAgICAgICBidXR0b25zIDogeworICAgICAg
ICAgICAgICAgICAgICAnQ2xvc2UnIDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBHYWxheHkubW9kYWwuaGlkZSgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSk7CiAgICAgICAgIH0sCiAgICAgICAgPTIwCiAgICAg
ICAgIC8qKiBSZXF1ZXN0IGEgbmV3IG1vZGVsIGZvciBhbiBhbHJlYWR5IGNyZWF0ZWQgdG9vbCBm
b3JtIGFuZCB1cGRhdD0KZXMgdGhlIGZvcm0gaW5wdXRzCkBAIC0yMzEsNyArMjgxLDcgQEAKICAg
ICAgICAgICAgICAgICBkYXRhICAgIDogY3VycmVudF9zdGF0ZSwKICAgICAgICAgICAgICAgICBz
dWNjZXNzIDogZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGUg
bm9kZSBpbiB3b3JrZmxvdyBtb2R1bGUKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5ub2RlLnVw
ZGF0ZV9maWVsZF9kYXRhKGRhdGEsIHRydWUpOworICAgICAgICAgICAgICAgICAgICBzZWxmLm5v
ZGUudXBkYXRlX2ZpZWxkX2RhdGEoZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgPTIwCiAgICAg
ICAgICAgICAgICAgICAgIC8vIHByb2Nlc3MgY29tcGxldGVkCiAgICAgICAgICAgICAgICAgICAg
IHNlbGYuZGVmZXJyZWQuZG9uZShwcm9jZXNzX2lkKTsKCmRpZmYgLXIgYTI1Y2U2M2NkY2YwN2Ni
MmQyMGZmMzQ3YmY0MmU4NmY0ZmQ0ZjIxYiAtciAzYmJlYTRmZmY5ZjIyYWYwNTY1ZTEzNj0KZGJh
NjU5OTI0MDNjMGE5YTUgY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy1pbnB1
dC5qcwotLS0gYS9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLWlucHV0Lmpz
CisrKyBiL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtaW5wdXQuanMKQEAg
LTEyLDYgKzEyLDcgQEAKICAgICAgICAgICAgPTIwCiAgICAgICAgICAgICAvLyBsaW5rIGZpZWxk
CiAgICAgICAgICAgICB0aGlzLmZpZWxkID0zRCBvcHRpb25zLmZpZWxkOworICAgICAgICAgICAg
dGhpcy5kZWZhdWx0dmFsdWUgPTNEIG9wdGlvbnMuZGVmYXVsdHZhbHVlOwogICAgICAgICAgICA9
MjAKICAgICAgICAgICAgIC8vIHNldCBlbGVtZW50CiAgICAgICAgICAgICB0aGlzLnNldEVsZW1l
bnQodGhpcy5fdGVtcGxhdGUob3B0aW9ucykpOwpAQCAtMjUsOCArMjYsMTMgQEAKICAgICAgICAg
ICAgIC8vIGFkZCBmaWVsZCBlbGVtZW50CiAgICAgICAgICAgICB0aGlzLiRmaWVsZC5wcmVwZW5k
KHRoaXMuZmllbGQuJGVsKTsKICAgICAgICAgICAgPTIwCi0gICAgICAgICAgICAvLyBzdGFydCB3
aXRoIGVuYWJsZWQgb3B0aW9uYWwgZmllbGRzCisgICAgICAgICAgICAvLyBkZWNpZGUgd2V0aGVy
IHRvIGV4cGFuZCBvciBjb2xsYXBzZSBvcHRpb25hbCBmaWVsZHMKICAgICAgICAgICAgIHRoaXMu
ZmllbGQuc2tpcCA9M0QgZmFsc2U7CisgICAgICAgICAgICB2YXIgdiA9M0QgdGhpcy5maWVsZC52
YWx1ZSAmJiB0aGlzLmZpZWxkLnZhbHVlKCk7CisgICAgICAgICAgICB0aGlzLmZpZWxkLnNraXAg
PTNEIEJvb2xlYW4ob3B0aW9ucy5vcHRpb25hbCAmJgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICgodGhpcy5maWVsZC52YWxpZGF0ZSAmJiAhdGhpcy5maWU9CmxkLnZh
bGlkYXRlKCkpIHx8ICF2IHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHYgPTNEPTNEIHRoaXMuZGVmYXVsdHZhbHVlKSB8fCAoTj0KdW1iZXIodikgPTNEPTNEIE51
bWJlcih0aGlzLmRlZmF1bHR2YWx1ZSkpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKEpTT04uc3RyaW5naWZ5KHYpID0zRD0zRCBKU09OLnN0cj0KaW5naWZ5KHRo
aXMuZGVmYXVsdHZhbHVlKSkpKTsKICAgICAgICAgICAgPTIwCiAgICAgICAgICAgICAvLyByZWZy
ZXNoIHZpZXcKICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2goKTsKQEAgLTYzLDExICs2OSwxMiBA
QAogICAgICAgICAgICAgaWYgKCF0aGlzLmZpZWxkLnNraXApIHsKICAgICAgICAgICAgICAgICB0
aGlzLiRmaWVsZC5mYWRlSW4oJ2Zhc3QnKTsKICAgICAgICAgICAgICAgICB0aGlzLiR0aXRsZV9v
cHRpb25hbC5odG1sKCdEaXNhYmxlJyk7Ci0gICAgICAgICAgICAgICAgdGhpcy5hcHAudHJpZ2dl
cigncmVmcmVzaCcpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB0aGlz
LiRmaWVsZC5oaWRlKCk7CiAgICAgICAgICAgICAgICAgdGhpcy4kdGl0bGVfb3B0aW9uYWwuaHRt
bCgnRW5hYmxlJyk7CisgICAgICAgICAgICAgICAgdGhpcy5maWVsZC52YWx1ZSAmJiB0aGlzLmZp
ZWxkLnZhbHVlKHRoaXMuZGVmYXVsdHZhbHVlKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IHRoaXMuYXBwLnRyaWdnZXIoJ3JlZnJlc2gnKTsKICAgICAgICAgfSwKICAgICAgICA9MjAKICAg
ICAgICAgLyoqIE1haW4gVGVtcGxhdGUKQEAgLTgyLDcgKzg5LDcgQEAKICAgICAgICAgICAgPTIw
CiAgICAgICAgICAgICAvLyBpcyBvcHRpb25hbAogICAgICAgICAgICAgaWYgKG9wdGlvbnMub3B0
aW9uYWwpIHsKLSAgICAgICAgICAgICAgICB0bXAgKz0zRCAgICAgICAgICAnT3B0aW9uYWw6ICcg
KyBvcHRpb25zLmxhYmVsICsKKyAgICAgICAgICAgICAgICB0bXAgKz0zRCAgICAgICAgICBvcHRp
b25zLmxhYmVsICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuPiZuYnNw
WzxzcGFuIGNsYXNzPTNEInVpLXRhYmxlLWZvcm0tPQp0aXRsZS1vcHRpb25hbCIvPl08L3NwYW4+
JzsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdG1wICs9M0QgICAgICAg
ICAgb3B0aW9ucy5sYWJlbDsKCmRpZmYgLXIgYTI1Y2U2M2NkY2YwN2NiMmQyMGZmMzQ3YmY0MmU4
NmY0ZmQ0ZjIxYiAtciAzYmJlYTRmZmY5ZjIyYWYwNTY1ZTEzNj0KZGJhNjU5OTI0MDNjMGE5YTUg
Y2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy1zZWN0aW9uLmpzCi0tLSBhL2Ns
aWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtc2VjdGlvbi5qcworKysgYi9jbGll
bnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLXNlY3Rpb24uanMKQEAgLTIzMiw5ICsy
MzIsOSBAQAogICAgICAgICAgICA9MjAKICAgICAgICAgICAgIC8vIGNyZWF0ZSBpbnB1dCBmaWVs
ZCB3cmFwcGVyCiAgICAgICAgICAgICB2YXIgaW5wdXRfZWxlbWVudCA9M0QgbmV3IElucHV0RWxl
bWVudCh0aGlzLmFwcCwgewotICAgICAgICAgICAgICAgIGxhYmVsICAgICAgIDogaW5wdXRfZGVm
LnRpdGxlLAotICAgICAgICAgICAgICAgIGhlbHAgICAgICAgIDogaW5wdXRfZGVmLmhlbHAsCi0g
ICAgICAgICAgICAgICAgZmllbGQgICAgICAgOiByZXBlYXQKKyAgICAgICAgICAgICAgICBsYWJl
bCAgIDogaW5wdXRfZGVmLnRpdGxlLAorICAgICAgICAgICAgICAgIGhlbHAgICAgOiBpbnB1dF9k
ZWYuaGVscCwKKyAgICAgICAgICAgICAgICBmaWVsZCAgIDogcmVwZWF0CiAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgPTIwCiAgICAgICAgICAgICAvLyBkaXNwbGF5cyBhcyBncm91cGVkIHN1
YnNlY3Rpb24KQEAgLTI5Miw2ICsyOTIsMTEgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgICAgPTIwCisgICAgICAgICAgICAvLyBzaG93IHN1YiBzZWN0aW9u
IGlmIHJlcXVlc3RlZAorICAgICAgICAgICAgaWYgKGlucHV0X2RlZi5leHBhbmQpIHsKKyAgICAg
ICAgICAgICAgICBwb3J0bGV0LiRoZWFkZXIudHJpZ2dlcignY2xpY2snKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgPTIwCiAgICAgICAgICAgICAvLyBjcmVhdGUgdGFibGUgcm93CiAgICAg
ICAgICAgICB0aGlzLnRhYmxlLmFkZChwb3J0bGV0LiRlbCk7Cj0yMApAQCAtMzEzLDEwICszMTgs
MTEgQEAKICAgICAgICAgICAgPTIwCiAgICAgICAgICAgICAvLyBjcmVhdGUgaW5wdXQgZmllbGQg
d3JhcHBlcgogICAgICAgICAgICAgdmFyIGlucHV0X2VsZW1lbnQgPTNEIG5ldyBJbnB1dEVsZW1l
bnQodGhpcy5hcHAsIHsKLSAgICAgICAgICAgICAgICBsYWJlbCAgICAgICA6IGlucHV0X2RlZi5s
YWJlbCwKLSAgICAgICAgICAgICAgICBvcHRpb25hbCAgICA6IGlucHV0X2RlZi5vcHRpb25hbCwK
LSAgICAgICAgICAgICAgICBoZWxwICAgICAgICA6IGlucHV0X2RlZi5oZWxwLAotICAgICAgICAg
ICAgICAgIGZpZWxkICAgICAgIDogZmllbGQKKyAgICAgICAgICAgICAgICBsYWJlbCAgICAgICAg
ICAgOiBpbnB1dF9kZWYubGFiZWwsCisgICAgICAgICAgICAgICAgZGVmYXVsdHZhbHVlICAgIDog
aW5wdXRfZGVmLmRlZmF1bHR2YWx1ZSwKKyAgICAgICAgICAgICAgICBvcHRpb25hbCAgICAgICAg
OiBpbnB1dF9kZWYub3B0aW9uYWwsCisgICAgICAgICAgICAgICAgaGVscCAgICAgICAgICAgIDog
aW5wdXRfZGVmLmhlbHAsCisgICAgICAgICAgICAgICAgZmllbGQgICAgICAgICAgIDogZmllbGQK
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICA9MjAKICAgICAgICAgICAgIC8vIGFkZCB0byBl
bGVtZW50IGxpc3QKCmRpZmYgLXIgYTI1Y2U2M2NkY2YwN2NiMmQyMGZmMzQ3YmY0MmU4NmY0ZmQ0
ZjIxYiAtciAzYmJlYTRmZmY5ZjIyYWYwNTY1ZTEzNj0KZGJhNjU5OTI0MDNjMGE5YTUgY2xpZW50
L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy10ZW1wbGF0ZS5qcwotLS0gYS9jbGllbnQv
Z2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLXRlbXBsYXRlLmpzCisrKyBiL2NsaWVudC9n
YWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtdGVtcGxhdGUuanMKQEAgLTQsNyArNCw3IEBA
CiAvLyB0b29sIGZvcm0gdGVtcGxhdGVzCiByZXR1cm4gewogICAgIGhlbHA6IGZ1bmN0aW9uKGNv
bnRlbnQpIHsKLSAgICAgICAgcmV0dXJuICAnPGRpdiBjbGFzcz0zRCJ0b29sSGVscCI+JyArCisg
ICAgICAgIHJldHVybiAgJzxkaXYgY2xhc3M9M0QidG9vbEhlbHAiIHN0eWxlPTNEIm92ZXJmbG93
OiBhdXRvOyI+JyArCiAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNEInRvb2xIZWxw
Qm9keSI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ICsKICAgICAgICAgICAg
ICAgICAgICAgJzwvZGl2PicgKwoKZGlmZiAtciBhMjVjZTYzY2RjZjA3Y2IyZDIwZmYzNDdiZjQy
ZTg2ZjRmZDRmMjFiIC1yIDNiYmVhNGZmZjlmMjJhZjA1NjVlMTM2PQpkYmE2NTk5MjQwM2MwYTlh
NSBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLXRyZWUuanMKLS0tIGEvY2xp
ZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy10cmVlLmpzCisrKyBiL2NsaWVudC9n
YWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtdHJlZS5qcwpAQCAtMTIyLDEzICsxMjIsMjEg
QEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0zRCBwYXRjaFtp
bnB1dC50eXBlXSh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9MjAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLy8gaGFuZGxlIGRlZmF1bHQgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFmaWVsZC5za2lwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZmllbGQudmFsaWRhdGUgJiYgIWZpZWxkLnZhbGlkYXRlKD0KdmFsdWUpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBzaW1wbGUgdmFsdWUK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWVsZC5za2lwIHx8IHNlbGYu
YXBwLndvcmtmbG93KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
ZmllbGQudmFsaWRhdGUgJiYgIWZpZWxkLnZhbGlkYXRlKD0KKSkgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0zRCBudWxsOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGlucHV0Lmlnbm9yZSA9M0Q9M0Q9M0QgdW5kZWZpbmVkIHw9CnwgKHZhbHVlICYmIGlu
cHV0Lmlnbm9yZSAhPTNEIHZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGlucHV0Lmlnbm9yZSA9M0Q9M0Q9M0QgdW5kZWZpbmVkIHw9CnwgKHZhbHVlICE9
M0Q9M0QgbnVsbCAmJiBpbnB1dC5pZ25vcmUgIT0zRCB2YWx1ZSkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGQgdmFsdWUgdG8gc3VibWlzc2lvbgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCAoam9iX2lucHV0X2lkLCBp
bnB1dC5pZCwgdmFsdWU9Cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPTIwCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRkIHBheWxvYWQgdG8gc3Vi
bWlzc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1
dC5wYXlsb2FkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvciAodmFyIHBfaWQgaW4gaW5wdXQucGF5bG9hZD0KKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgKHBfaWQsIGlucHV0LmlkLCBpbnB1dD0K
LnBheWxvYWRbcF9pZF0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKZGlmZiAtciBhMjVjZTYz
Y2RjZjA3Y2IyZDIwZmYzNDdiZjQyZTg2ZjRmZDRmMjFiIC1yIDNiYmVhNGZmZjlmMjJhZjA1NjVl
MTM2PQpkYmE2NTk5MjQwM2MwYTlhNSBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvdXRpbHMvdXRpbHMu
anMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL3V0aWxzL3V0aWxzLmpzCisrKyBiL2NsaWVu
dC9nYWxheHkvc2NyaXB0cy91dGlscy91dGlscy5qcwpAQCAtNiw2ICs2LDE4IEBACiAvLyBkZXBl
bmRlbmNpZXMKIGRlZmluZShbImxpYnMvdW5kZXJzY29yZSJdLCBmdW5jdGlvbihfKSB7Cj0yMAor
LyoqIFRyYXZlcnNlIHRocm91Z2gganNvbgorKi8KK2Z1bmN0aW9uIGRlZXBlYWNoKGRpY3QsIGNh
bGxiYWNrKSB7CisgICAgZm9yICh2YXIgaSBpbiBkaWN0KSB7CisgICAgICAgIHZhciBkID0zRCBk
aWN0W2ldOworICAgICAgICBpZiAoZCAmJiB0eXBlb2YoZCkgPTNEPTNEICJvYmplY3QiKSB7Cisg
ICAgICAgICAgICBjYWxsYmFjayhkKTsKKyAgICAgICAgICAgIGRlZXBlYWNoKGQsIGNhbGxiYWNr
KTsKKyAgICAgICAgfQorICAgIH0KK30KKwogLyoqCiAgKiBTYW5pdGl6ZS9lc2NhcGUgYSBzdHJp
bmcKICAqIEBwYXJhbXtTdHJpbmd9ICAgY29udGVudCAtIENvbnRlbnQgdG8gYmUgc2FuaXRpemVk
CkBAIC0yNDgsNyArMjYwLDggQEAKICAgICByZXF1ZXN0OiByZXF1ZXN0LAogICAgIHNhbml0aXpl
OiBzYW5pdGl6ZSwKICAgICB0ZXh0aWZ5OiB0ZXh0aWZ5LAotICAgIHZhbGlkYXRlOiB2YWxpZGF0
ZQorICAgIHZhbGlkYXRlOiB2YWxpZGF0ZSwKKyAgICBkZWVwZWFjaDogZGVlcGVhY2gKIH07Cj0y
MAogfSk7CgpkaWZmIC1yIGEyNWNlNjNjZGNmMDdjYjJkMjBmZjM0N2JmNDJlODZmNGZkNGYyMWIg
LXIgM2JiZWE0ZmZmOWYyMmFmMDU2NWUxMzY9CmRiYTY1OTkyNDAzYzBhOWE1IGxpYi9nYWxheHkv
ZGF0YXR5cGVzL21ldGFkYXRhLnB5Ci0tLSBhL2xpYi9nYWxheHkvZGF0YXR5cGVzL21ldGFkYXRh
LnB5CisrKyBiL2xpYi9nYWxheHkvZGF0YXR5cGVzL21ldGFkYXRhLnB5CkBAIC0yMCw2ICsyMCw3
IEBACj0yMAogaW1wb3J0IGdhbGF4eS5tb2RlbAogZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgbGlz
dGlmeQorZnJvbSBnYWxheHkudXRpbC5vYmplY3Rfd3JhcHBlciBpbXBvcnQgc2FuaXRpemVfbGlz
dHNfdG9fc3RyaW5nCiBmcm9tIGdhbGF4eS51dGlsIGltcG9ydCBzdHJpbmdpZnlfZGljdGlvbmFy
eV9rZXlzCiBmcm9tIGdhbGF4eS51dGlsIGltcG9ydCBzdHJpbmdfYXNfYm9vbAogZnJvbSBnYWxh
eHkudXRpbCBpbXBvcnQgaW5fZGlyZWN0b3J5CkBAIC0yMzIsNiArMjMzLDkgQEAKICAgICBkZWYg
dG9fc3RyaW5nKCBzZWxmLCB2YWx1ZSApOgogICAgICAgICByZXR1cm4gc3RyKCB2YWx1ZSApCj0y
MAorICAgIGRlZiB0b19zYWZlX3N0cmluZyggc2VsZiwgdmFsdWUgKToKKyAgICAgICAgcmV0dXJu
IHNhbml0aXplX2xpc3RzX3RvX3N0cmluZyggc2VsZi50b19zdHJpbmcoIHZhbHVlICkgKQorCiAg
ICAgZGVmIG1ha2VfY29weSggc2VsZiwgdmFsdWUsIHRhcmdldF9jb250ZXh0ID0zRCBOb25lLCBz
b3VyY2VfY29udGV4dCA9Cj0zRCBOb25lICk6CiAgICAgICAgIHJldHVybiBjb3B5LmRlZXBjb3B5
KCB2YWx1ZSApCj0yMApAQCAtNDgwLDYgKzQ4NCwxMCBAQAogICAgIGRlZiB0b19zdHJpbmcoIHNl
bGYsIHZhbHVlICk6CiAgICAgICAgIHJldHVybiAganNvbi5kdW1wcyggdmFsdWUgKQo9MjAKKyAg
ICBkZWYgdG9fc2FmZV9zdHJpbmcoIHNlbGYsIHZhbHVlICk6CisgICAgICAgICMgV2UgZG8gbm90
IHNhbml0aXplIGpzb24gZGljdHMKKyAgICAgICAgcmV0dXJuIGpzb24uc2FmZV9kdW1wcyggdmFs
dWUgKQorCj0yMAogY2xhc3MgUHl0aG9uT2JqZWN0UGFyYW1ldGVyKCBNZXRhZGF0YVBhcmFtZXRl
ciApOgo9MjAKQEAgLTUxMCw2ICs1MTgsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBzdHIoIHNl
bGYuc3BlYy5ub192YWx1ZSApCiAgICAgICAgIHJldHVybiB2YWx1ZS5maWxlX25hbWUKPTIwCisg
ICAgZGVmIHRvX3NhZmVfc3RyaW5nKCBzZWxmLCB2YWx1ZSApOgorICAgICAgICAjIFdlIGRvIG5v
dCBzYW5pdGl6ZSBmaWxlIG5hbWVzCisgICAgICAgIHJldHVybiBzZWxmLnRvX3N0cmluZyggdmFs
dWUgKQorCiAgICAgZGVmIGdldF9odG1sX2ZpZWxkKCBzZWxmLCB2YWx1ZT0zRE5vbmUsIGNvbnRl
eHQ9M0ROb25lLCBvdGhlcl92YWx1ZXM9Cj0zRE5vbmUsICoqa3dkICk6CiAgICAgICAgIGNvbnRl
eHQgPTNEIGNvbnRleHQgb3Ige30KICAgICAgICAgb3RoZXJfdmFsdWVzID0zRCBvdGhlcl92YWx1
ZXMgb3Ige30KCmRpZmYgLXIgYTI1Y2U2M2NkY2YwN2NiMmQyMGZmMzQ3YmY0MmU4NmY0ZmQ0ZjIx
YiAtciAzYmJlYTRmZmY5ZjIyYWYwNTY1ZTEzNj0KZGJhNjU5OTI0MDNjMGE5YTUgbGliL2dhbGF4
eS90b29scy9fX2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xzL19faW5pdF9fLnB5Cisr
KyBiL2xpYi9nYWxheHkvdG9vbHMvX19pbml0X18ucHkKQEAgLTEyLDggKzEyLDEwIEBACiBpbXBv
cnQgdGhyZWFkaW5nCiBpbXBvcnQgdHlwZXMKIGltcG9ydCB1cmxsaWIKK2ltcG9ydCBjb3B5Cj0y
MAotZnJvbSBnYWxheHkgaW1wb3J0IGVnZ3MKK2Zyb20gZ2FsYXh5IGltcG9ydCBlZ2dzLCB1dGls
CisKIGVnZ3MucmVxdWlyZSggIk1hcmt1cFNhZmUiICkgICMgTWFya3VwU2FmZSBtdXN0IGxvYWQg
YmVmb3JlIG1ha28KIGVnZ3MucmVxdWlyZSggIk1ha28iICkKIGVnZ3MucmVxdWlyZSggImVsZW1l
bnR0cmVlIiApCkBAIC0yMTUwLDkgKzIxNTIsOSBAQAogICAgICAgICAgICAgICAgIHJldHVybiBO
b25lCj0yMAogICAgICAgICAjIGVuc3VyZXMgdGhhdCBpbnB1dCBkaWN0aW9uYXJ5IGlzIGpzb25p
ZmlhYmxlCi0gICAgICAgIGRlZiBzYW5pdGl6ZShkaWN0KToKKyAgICAgICAgZGVmIHNhbml0aXpl
KGRpY3QsIGtleT0zRCd2YWx1ZScpOgogICAgICAgICAgICAgIyBnZXQgY3VycmVudCB2YWx1ZQot
ICAgICAgICAgICAgdmFsdWUgPTNEIGRpY3RbJ3ZhbHVlJ10gaWYgJ3ZhbHVlJyBpbiBkaWN0IGVs
c2UgTm9uZQorICAgICAgICAgICAgdmFsdWUgPTNEIGRpY3Rba2V5XSBpZiBrZXkgaW4gZGljdCBl
bHNlIE5vbmUKPTIwCiAgICAgICAgICAgICAjIGpzb25pZnkgYnkgdHlwZQogICAgICAgICAgICAg
aWYgZGljdFsndHlwZSddIGluIFsnZGF0YSddOgpAQCAtMjE2NywxNSArMjE2OSw4IEBACiAgICAg
ICAgICAgICAgICAgdmFsdWUgPTNEIGpzb25pZnkodmFsdWUpCj0yMAogICAgICAgICAgICAgIyB1
cGRhdGUgYW5kIHJldHVybgotICAgICAgICAgICAgZGljdFsndmFsdWUnXSA9M0QgdmFsdWUKLSAg
ICAgICAgICAgIHJldHVybiBkaWN0CisgICAgICAgICAgICBkaWN0W2tleV0gPTNEIHZhbHVlCiAg
ICAgICAgPTIwCi0gICAgICAgICMgaW5pdGlhbGl6ZSBzdGF0ZSB1c2luZyBkZWZhdWx0IHBhcmFt
ZXRlcnMKLSAgICAgICAgZGVmIGluaXRpYWxpemVfc3RhdGUodHJhbnMsIGlucHV0cywgc3RhdGUs
IGNvbnRleHQ9M0ROb25lKToKLSAgICAgICAgICAgIGNvbnRleHQgPTNEIEV4cHJlc3Npb25Db250
ZXh0KHN0YXRlLCBjb250ZXh0KQotICAgICAgICAgICAgZm9yIGlucHV0IGluIGlucHV0cy5pdGVy
dmFsdWVzKCk6Ci0gICAgICAgICAgICAgICAgc3RhdGVbaW5wdXQubmFtZV0gPTNEIGlucHV0Lmdl
dF9pbml0aWFsX3ZhbHVlKHRyYW5zLCBjb250ZT0KeHQpCi0gICA9MjAKICAgICAgICAgIyBjaGVj
ayB0aGUgY3VycmVudCBzdGF0ZSBvZiBhIHZhbHVlIGFuZCB1cGRhdGUgaXQgaWYgbmVjZXNzYXJ5
CiAgICAgICAgIGRlZiBjaGVja19zdGF0ZSh0cmFucywgaW5wdXQsIGRlZmF1bHRfdmFsdWUsIGNv
bnRleHQpOgogICAgICAgICAgICAgdmFsdWUgPTNEIGRlZmF1bHRfdmFsdWUKQEAgLTIxOTUsNiAr
MjE5MCw3IEBACiAgICAgICAgIGRlZiBwb3B1bGF0ZV9zdGF0ZSh0cmFucywgaW5wdXRzLCBzdGF0
ZSwgZXJyb3JzLCBpbmNvbWluZywgcHJlZml4PQo9M0QiIiwgY29udGV4dD0zRE5vbmUgKToKICAg
ICAgICAgICAgIGNvbnRleHQgPTNEIEV4cHJlc3Npb25Db250ZXh0KHN0YXRlLCBjb250ZXh0KQog
ICAgICAgICAgICAgZm9yIGlucHV0IGluIGlucHV0cy5pdGVydmFsdWVzKCk6CisgICAgICAgICAg
ICAgICAgc3RhdGVbaW5wdXQubmFtZV0gPTNEIGlucHV0LmdldF9pbml0aWFsX3ZhbHVlKHRyYW5z
LCBjb250ZT0KeHQpCiAgICAgICAgICAgICAgICAga2V5ID0zRCBwcmVmaXggKyBpbnB1dC5uYW1l
CiAgICAgICAgICAgICAgICAgaWYgaW5wdXQudHlwZSA9M0Q9M0QgJ3JlcGVhdCc6CiAgICAgICAg
ICAgICAgICAgICAgIGdyb3VwX3N0YXRlID0zRCBzdGF0ZVtpbnB1dC5uYW1lXQpAQCAtMjIwNyw3
ICsyMjAzLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlcF9pbmRleCA8IGlucHV0
Lm1heDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfc3RhdGUgPTNEIHt9CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3N0YXRlWydfX2luZGV4X18nXSA9M0QgcmVwX2lu
ZGV4Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZV9zdGF0ZSh0cmFucywg
aW5wdXQuaW5wdXRzLCBuZXdfc3RhdD0KZSwgY29udGV4dCkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBncm91cF9zdGF0ZS5hcHBlbmQobmV3X3N0YXRlKQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBvcHVsYXRlX3N0YXRlKHRyYW5zLCBpbnB1dC5pbnB1dHMsIG5ld19zdGF0ZSw9
CiBlcnJvcnMsIGluY29taW5nLCBwcmVmaXg9M0RyZXBfbmFtZSArICJ8IiwgY29udGV4dD0zRGNv
bnRleHQpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXBfaW5kZXggKz0zRCAxCkBAIC0yMjIz
LDcgKzIyMTgsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGN1cnJlbnRfY2FzZSA9M0QgaW5wdXQuZ2V0X2N1cnJlbnRfY2FzZSh2
YWx1ZSw9CiB0cmFucykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cF9zdGF0ZSA9
M0Qgc3RhdGVbaW5wdXQubmFtZV0gPTNEIHt9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW5pdGlhbGl6ZV9zdGF0ZSh0cmFucywgaW5wdXQuY2FzZXNbY3VycmVudF9jYT0Kc2VdLmlucHV0
cywgZ3JvdXBfc3RhdGUsIGNvbnRleHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9w
dWxhdGVfc3RhdGUoIHRyYW5zLCBpbnB1dC5jYXNlc1tjdXJyZW50X2Nhcz0KZV0uaW5wdXRzLCBn
cm91cF9zdGF0ZSwgZXJyb3JzLCBpbmNvbWluZywgcHJlZml4PTNEZ3JvdXBfcHJlZml4LCBjb250
ZXh0PTNEPQpjb250ZXh0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwX3N0YXRl
WydfX2N1cnJlbnRfY2FzZV9fJ10gPTNEIGN1cnJlbnRfY2E9CnNlCiAgICAgICAgICAgICAgICAg
ICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgpAQCAtMjI3MiwxMyArMjI2NiwxNyBAQAogICAg
ICAgICAgICAgICAgICAgICAjIGlkZW50aWZ5IG5hbWUKICAgICAgICAgICAgICAgICAgICAgaW5w
dXRfbmFtZSA9M0QgdG9vbF9kaWN0LmdldCgnbmFtZScpCiAgICAgICAgICAgICAgICAgICAgIGlm
IGlucHV0X25hbWU6CisgICAgICAgICAgICAgICAgICAgICAgICAjIGJhY2t1cCBkZWZhdWx0IHZh
bHVlCisgICAgICAgICAgICAgICAgICAgICAgICB0b29sX2RpY3RbJ2RlZmF1bHR2YWx1ZSddID0z
RCBpbnB1dC5nZXRfaW5pdGlhbF92YT0KbHVlKHRyYW5zLCBvdGhlcl92YWx1ZXMpCisgICAgICAg
ICAgICAgICAgICAgICAgID0yMAogICAgICAgICAgICAgICAgICAgICAgICAgIyB1cGRhdGUgaW5w
dXQgdmFsdWUgZnJvbSB0b29sIHN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpbnB1
dF9uYW1lIGluIHN0YXRlX2lucHV0czoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29s
X2RpY3RbJ3ZhbHVlJ10gPTNEIHN0YXRlX2lucHV0c1tpbnB1dF9uYW1lXQotCi0gICAgICAgICAg
ICAgICAgICAgICAgICAjIHNhbml0aXplIGlmIHZhbHVlIGV4aXN0cwotICAgICAgICAgICAgICAg
ICAgICAgICAgdG9vbF9kaWN0ID0zRCBzYW5pdGl6ZSh0b29sX2RpY3QpCi0gICAgICAgICAgID0y
MAorICAgICAgICAgICAgICAgICAgICAgICA9MjAKKyAgICAgICAgICAgICAgICAgICAgICAgICMg
c2FuaXRpemUgdmFsdWVzCisgICAgICAgICAgICAgICAgICAgICAgICBzYW5pdGl6ZSh0b29sX2Rp
Y3QsICd2YWx1ZScpCisgICAgICAgICAgICAgICAgICAgICAgICBzYW5pdGl6ZSh0b29sX2RpY3Qs
ICdkZWZhdWx0dmFsdWUnKQorICAgICAgICAgICAgICAgICAgICAgICA9MjAKICAgICAgICAgICAg
ICAgICAjIGJhY2t1cCBmaW5hbCBpbnB1dCBkaWN0aW9uYXJ5CiAgICAgICAgICAgICAgICAgZ3Jv
dXBfaW5wdXRzW2lucHV0X2luZGV4XSA9M0QgdG9vbF9kaWN0Cj0yMApAQCAtMjMwMyw3ICsyMzAx
LDYgQEAKICAgICAgICAgIyBpbml0aWFsaXplIGFuZCBwb3B1bGF0ZSB0b29sIHN0YXRlCiAgICAg
ICAgIHN0YXRlX2lucHV0cyA9M0Qge30KICAgICAgICAgc3RhdGVfZXJyb3JzID0zRCB7fQotICAg
ICAgICBpbml0aWFsaXplX3N0YXRlKHRyYW5zLCBzZWxmLmlucHV0cywgc3RhdGVfaW5wdXRzKQog
ICAgICAgICBwb3B1bGF0ZV9zdGF0ZSh0cmFucywgc2VsZi5pbnB1dHMsIHN0YXRlX2lucHV0cywg
c3RhdGVfZXJyb3JzLCBwYXI9CmFtcy5fX2RpY3RfXykKPTIwCiAgICAgICAgICMgY3JlYXRlIGJh
c2ljIHRvb2wgbW9kZWwKCmRpZmYgLXIgYTI1Y2U2M2NkY2YwN2NiMmQyMGZmMzQ3YmY0MmU4NmY0
ZmQ0ZjIxYiAtciAzYmJlYTRmZmY5ZjIyYWYwNTY1ZTEzNj0KZGJhNjU5OTI0MDNjMGE5YTUgbGli
L2dhbGF4eS90b29scy9ldmFsdWF0aW9uLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvZXZhbHVh
dGlvbi5weQorKysgYi9saWIvZ2FsYXh5L3Rvb2xzL2V2YWx1YXRpb24ucHkKQEAgLTIsMTAgKzIs
MTIgQEAKIGltcG9ydCB0ZW1wZmlsZQo9MjAKIGZyb20gZ2FsYXh5IGltcG9ydCBtb2RlbAorZnJv
bSBnYWxheHkudXRpbC5vYmplY3Rfd3JhcHBlciBpbXBvcnQgd3JhcF93aXRoX3NhZmVfc3RyaW5n
CiBmcm9tIGdhbGF4eS51dGlsLmJ1bmNoIGltcG9ydCBCdW5jaAogZnJvbSBnYWxheHkudXRpbC5u
b25lX2xpa2UgaW1wb3J0IE5vbmVEYXRhc2V0CiBmcm9tIGdhbGF4eS51dGlsLnRlbXBsYXRlIGlt
cG9ydCBmaWxsX3RlbXBsYXRlCiBmcm9tIGdhbGF4eS50b29scy53cmFwcGVycyBpbXBvcnQgKAor
ICAgIFRvb2xQYXJhbWV0ZXJWYWx1ZVdyYXBwZXIsCiAgICAgRGF0YXNldEZpbGVuYW1lV3JhcHBl
ciwKICAgICBEYXRhc2V0TGlzdFdyYXBwZXIsCiAgICAgRGF0YXNldENvbGxlY3Rpb25XcmFwcGVy
LApAQCAtMTE0LDYgKzExNiw5IEBACiAgICAgICAgIHNlbGYuX19wb3B1bGF0ZV9pbnB1dF9kYXRh
c2V0X3dyYXBwZXJzKHBhcmFtX2RpY3QsIGlucHV0X2RhdGFzZXRzLD0KIGlucHV0X2RhdGFzZXRf
cGF0aHMpCiAgICAgICAgIHNlbGYuX19wb3B1bGF0ZV9vdXRwdXRfZGF0YXNldF93cmFwcGVycyhw
YXJhbV9kaWN0LCBvdXRwdXRfZGF0YXNldD0Kcywgb3V0cHV0X3BhdGhzLCBqb2Jfd29ya2luZ19k
aXJlY3RvcnkpCiAgICAgICAgIHNlbGYuX19wb3B1bGF0ZV91bnN0cnVjdHVyZWRfcGF0aF9yZXdy
aXRlcyhwYXJhbV9kaWN0KQorICAgICAgICAjIENhbGwgcGFyYW0gZGljdCBzYW5pdGl6ZXIsIGJl
Zm9yZSBub24tam9iIHBhcmFtcyBhcmUgYWRkZWQsIGFzIHc9CmUgZG9uJ3Qgd2FudCB0byBzYW5p
dGl6ZSBmaWxlbmFtZXMuCisgICAgICAgIHNlbGYuX19zYW5pdGl6ZV9wYXJhbV9kaWN0KCBwYXJh
bV9kaWN0ICkKKyAgICAgICAgIyBQYXJhbWV0ZXJzIGFkZGVkIGFmdGVyIHRoaXMgbGluZSBhcmUg
bm90IHNhbml0aXplZAogICAgICAgICBzZWxmLl9fcG9wdWxhdGVfbm9uX2pvYl9wYXJhbXMocGFy
YW1fZGljdCkKPTIwCiAgICAgICAgICMgUmV0dXJuIHRoZSBkaWN0aW9uYXJ5IG9mIHBhcmFtZXRl
cnMKQEAgLTMzNCw2ICszMzksMjQgQEAKICAgICAgICAgICAgICN0aGUgcGF0aHMgcmV3cml0dGVu
LgogICAgICAgICAgICAgc2VsZi5fX3dhbGtfaW5wdXRzKCBzZWxmLnRvb2wuaW5wdXRzLCBwYXJh
bV9kaWN0LCByZXdyaXRlX3Vuc3Q9CnJ1Y3R1cmVkX3BhdGhzICkKPTIwCisgICAgZGVmIF9fc2Fu
aXRpemVfcGFyYW1fZGljdCggc2VsZiwgcGFyYW1fZGljdCApOgorICAgICAgICAiIiIKKyAgICAg
ICAgU2FuaXRpemUgYWxsIHZhbHVlcyB0aGF0IHdpbGwgYmUgc3Vic3RpdHV0ZWQgb24gdGhlIGNv
bW1hbmQgbGluZSwgPQp3aXRoIHRoZSBleGNlcHRpb24gb2YgVG9vbFBhcmFtZXRlclZhbHVlV3Jh
cHBlcnMsCisgICAgICAgIHdoaWNoIGFscmVhZHkgaGF2ZSB0aGVpciBvd24gc3BlY2lmaWMgc2Fu
aXRpemF0aW9uIHJ1bGVzIGFuZCBhbHNvID0KZXhjbHVkZSBzcGVjaWFsLWNhc2VkIG5hbWVkIHZh
bHVlcy4KKyAgICAgICAgV2Ugd2lsbCBvbmx5IGV4YW1pbmUgdGhlIGZpcnN0IGxldmVsIGZvciB2
YWx1ZXMgdG8gc2tpcDsgdGhlIHdyYXBwPQppbmcgZnVuY3Rpb24gd2lsbCByZWN1cnNlIGFzIG5l
Y2Vzc2FyeS4KKyAgICAgICA9MjAKKyAgICAgICAgTm90ZTogdGhpcyBtZXRob2QgZm9sbG93cyB0
aGUgc3R5bGUgb2YgdGhlIHNpbWlsYXIgcG9wdWxhdGUgY2FsbHMsPQogaW4gdGhhdCBwYXJhbV9k
aWN0IGlzIG1vZGlmaWVkIGluLXBsYWNlLgorICAgICAgICAiIiIKKyAgICAgICAgIyBjaHJvbUlu
Zm8gaXMgYSBmaWxlbmFtZSwgZG8gbm90IHNhbml0aXplIGl0LgorICAgICAgICBza2lwID0zRCBb
ICdjaHJvbUluZm8nIF0KKyAgICAgICAgaWYgbm90IHNlbGYudG9vbCBvciBub3Qgc2VsZi50b29s
Lm9wdGlvbnMgb3Igc2VsZi50b29sLm9wdGlvbnMuc2FuPQppdGl6ZToKKyAgICAgICAgICAgIGZv
ciBrZXksIHZhbHVlIGluIHBhcmFtX2RpY3QuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBpZiBr
ZXkgbm90IGluIHNraXA6CisgICAgICAgICAgICAgICAgICAgICMgUmVtb3ZlIGtleSBzbyB0aGF0
IG5ldyB3cmFwcGVkIG9iamVjdCB3aWxsIG9jY3VweSBrZT0KeSBzbG90CisgICAgICAgICAgICAg
ICAgICAgIGRlbCBwYXJhbV9kaWN0W2tleV0KKyAgICAgICAgICAgICAgICAgICAgIyBBbmQgcmVw
bGFjZSB3aXRoIG5ldyB3cmFwcGVkIGtleQorICAgICAgICAgICAgICAgICAgICBwYXJhbV9kaWN0
WyB3cmFwX3dpdGhfc2FmZV9zdHJpbmcoIGtleSwgbm9fd3JhcF9jbGFzc2U9CnM9M0RUb29sUGFy
YW1ldGVyVmFsdWVXcmFwcGVyICkgXSA9M0Qgd3JhcF93aXRoX3NhZmVfc3RyaW5nKCB2YWx1ZSwg
bm9fd3JhcD0KX2NsYXNzZXM9M0RUb29sUGFyYW1ldGVyVmFsdWVXcmFwcGVyICkKKwogICAgIGRl
ZiBidWlsZCggc2VsZiApOgogICAgICAgICAiIiIKICAgICAgICAgQnVpbGQgcnVudGltZSBkZXNj
cmlwdGlvbiBvZiBqb2IgdG8gZXhlY3V0ZSwgZXZhbHVhdGUgY29tbWFuZCBhbmQKCmRpZmYgLXIg
YTI1Y2U2M2NkY2YwN2NiMmQyMGZmMzQ3YmY0MmU4NmY0ZmQ0ZjIxYiAtciAzYmJlYTRmZmY5ZjIy
YWYwNTY1ZTEzNj0KZGJhNjU5OTI0MDNjMGE5YTUgbGliL2dhbGF4eS90b29scy93cmFwcGVycy5w
eQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xzL3dyYXBwZXJzLnB5CisrKyBiL2xpYi9nYWxheHkvdG9v
bHMvd3JhcHBlcnMucHkKQEAgLTIsNiArMiw3IEBACiBmcm9tIGdhbGF4eSBpbXBvcnQgZXhjZXB0
aW9ucwogZnJvbSBnYWxheHkudXRpbC5ub25lX2xpa2UgaW1wb3J0IE5vbmVEYXRhc2V0CiBmcm9t
IGdhbGF4eS51dGlsIGltcG9ydCBvZGljdAorZnJvbSBnYWxheHkudXRpbC5vYmplY3Rfd3JhcHBl
ciBpbXBvcnQgd3JhcF93aXRoX3NhZmVfc3RyaW5nCj0yMAogZnJvbSBsb2dnaW5nIGltcG9ydCBn
ZXRMb2dnZXIKIGxvZyA9M0QgZ2V0TG9nZ2VyKCBfX25hbWVfXyApCkBAIC0xNjIsMTAgKzE2Mywx
MyBAQAogICAgICAgICAgICAgaWYgbmFtZSBpbiBzZWxmLm1ldGFkYXRhLnNwZWM6CiAgICAgICAg
ICAgICAgICAgaWYgcnZhbCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICBydmFsID0zRCBz
ZWxmLm1ldGFkYXRhLnNwZWNbbmFtZV0ubm9fdmFsdWUKLSAgICAgICAgICAgICAgICBydmFsID0z
RCBzZWxmLm1ldGFkYXRhLnNwZWNbbmFtZV0ucGFyYW0udG9fc3RyaW5nKCBydmFsICkKKyAgICAg
ICAgICAgICAgICBydmFsID0zRCBzZWxmLm1ldGFkYXRhLnNwZWNbIG5hbWUgXS5wYXJhbS50b19z
YWZlX3N0cmluZyggPQpydmFsICkKICAgICAgICAgICAgICAgICAjIFN0b3JlIHRoaXMgdmFsdWUs
IHNvIHdlIGRvbid0IG5lZWQgdG8gcmVjYWxjdWxhdGUgaWYgbmVlPQpkZWQKICAgICAgICAgICAg
ICAgICAjIGFnYWluCiAgICAgICAgICAgICAgICAgc2V0YXR0ciggc2VsZiwgbmFtZSwgcnZhbCAp
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICNlc2NhcGUgc3RyaW5nIHZhbHVl
IG9mIG5vbi1kZWZpbmVkIG1ldGFkYXRhIHZhbHVlCisgICAgICAgICAgICAgICAgcnZhbCA9M0Qg
d3JhcF93aXRoX3NhZmVfc3RyaW5nKCBydmFsICkKICAgICAgICAgICAgIHJldHVybiBydmFsCj0y
MAogICAgICAgICBkZWYgX19ub256ZXJvX18oIHNlbGYgKToKQEAgLTE5MCw5ICsxOTQsMTMgQEAK
ICAgICAgICAgICAgICAgICBleHQgPTNEIHRvb2wuaW5wdXRzW25hbWVdLmV4dGVuc2lvbnNbMF0K
ICAgICAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgICAgICBleHQgPTNEICdkYXRhJwotICAg
ICAgICAgICAgc2VsZi5kYXRhc2V0ID0zRCBOb25lRGF0YXNldCggZGF0YXR5cGVzX3JlZ2lzdHJ5
PTNEZGF0YXR5cGVzX3I9CmVnaXN0cnksIGV4dD0zRGV4dCApCisgICAgICAgICAgICBzZWxmLmRh
dGFzZXQgPTNEIHdyYXBfd2l0aF9zYWZlX3N0cmluZyggTm9uZURhdGFzZXQoIGRhdGF0eXBlcz0K
X3JlZ2lzdHJ5PTNEZGF0YXR5cGVzX3JlZ2lzdHJ5LCBleHQ9M0RleHQgKSwgbm9fd3JhcF9jbGFz
c2VzPTNEVG9vbFBhcmFtZXRlPQpyVmFsdWVXcmFwcGVyICkKICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHNlbGYuZGF0YXNldCA9M0QgZGF0YXNldAorICAgICAgICAgICAgIyBUb29sIHdyYXBw
ZXJzIHNob3VsZCBub3Qgbm9ybWFsbHkgYmUgYWNjZXNzaW5nIC5kYXRhc2V0IGRpcmU9CmN0bHks
PTIwCisgICAgICAgICAgICAjIHNvIHdlIHdpbGwgd3JhcCBpdCBhbmQga2VlcCB0aGUgb3JpZ2lu
YWwgYXJvdW5kIGZvciBmaWxlIHBhdD0KaHMKKyAgICAgICAgICAgICMgU2hvdWxkIHdlIG5hbWUg
dGhpcyAudmFsdWUgdG8gbWFpbnRhaW4gY29uc2lzdGVuY3kgd2l0aCBtb3N0PQogb3RoZXIgVG9v
bFBhcmFtZXRlclZhbHVlV3JhcHBlcj8KKyAgICAgICAgICAgIHNlbGYudW5zYW5pdGl6ZWQgPTNE
IGRhdGFzZXQKKyAgICAgICAgICAgIHNlbGYuZGF0YXNldCA9M0Qgd3JhcF93aXRoX3NhZmVfc3Ry
aW5nKCBkYXRhc2V0LCBub193cmFwX2NsYXNzPQplcz0zRFRvb2xQYXJhbWV0ZXJWYWx1ZVdyYXBw
ZXIgKQogICAgICAgICAgICAgc2VsZi5tZXRhZGF0YSA9M0Qgc2VsZi5NZXRhZGF0YVdyYXBwZXIo
IGRhdGFzZXQubWV0YWRhdGEgKQogICAgICAgICBzZWxmLmRhdGF0eXBlc19yZWdpc3RyeSA9M0Qg
ZGF0YXR5cGVzX3JlZ2lzdHJ5CiAgICAgICAgIHNlbGYuZmFsc2VfcGF0aCA9M0QgZ2V0YXR0cigg
ZGF0YXNldF9wYXRoLCAiZmFsc2VfcGF0aCIsIE5vbmUgKQpAQCAtMjEwLDcgKzIxOCw3IEBACiAg
ICAgICAgIGlmIHNlbGYuZmFsc2VfcGF0aCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJldHVy
biBzZWxmLmZhbHNlX3BhdGgKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBzZWxm
LmRhdGFzZXQuZmlsZV9uYW1lCisgICAgICAgICAgICByZXR1cm4gc2VsZi51bnNhbml0aXplZC5m
aWxlX25hbWUKPTIwCiAgICAgZGVmIF9fZ2V0YXR0cl9fKCBzZWxmLCBrZXkgKToKICAgICAgICAg
aWYgc2VsZi5mYWxzZV9wYXRoIGlzIG5vdCBOb25lIGFuZCBrZXkgPTNEPTNEICdmaWxlX25hbWUn
OgpAQCAtMjMwLDcgKzIzOCw3IEBACiAgICAgICAgICAgICAgICAgIyBvYmplY3Qgc3RvcmUgdG8g
ZmluZCB0aGUgc3RhdGljIGxvY2F0aW9uIG9mIHRoaXMKICAgICAgICAgICAgICAgICAjIGRpcmVj
dG9yeS4KICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBz
ZWxmLmRhdGFzZXQuZXh0cmFfZmlsZXNfcGF0aAorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
c2VsZi51bnNhbml0aXplZC5leHRyYV9maWxlc19wYXRoCiAgICAgICAgICAgICAgICAgZXhjZXB0
IGV4Y2VwdGlvbnMuT2JqZWN0Tm90Rm91bmQ6CiAgICAgICAgICAgICAgICAgICAgICMgTmVzdGVk
T2JqZWN0c3RvcmUgcmFpc2VzIGFuIGVycm9yIGhlcmUKICAgICAgICAgICAgICAgICAgICAgIyBp
bnN0ZWFkIG9mIGp1c3QgcmV0dXJuaW5nIGEgbm9uLWV4aXN0ZW50CgpkaWZmIC1yIGEyNWNlNjNj
ZGNmMDdjYjJkMjBmZjM0N2JmNDJlODZmNGZkNGYyMWIgLXIgM2JiZWE0ZmZmOWYyMmFmMDU2NWUx
MzY9CmRiYTY1OTkyNDAzYzBhOWE1IGxpYi9nYWxheHkvdXRpbC9fX2luaXRfXy5weQotLS0gYS9s
aWIvZ2FsYXh5L3V0aWwvX19pbml0X18ucHkKKysrIGIvbGliL2dhbGF4eS91dGlsL19faW5pdF9f
LnB5CkBAIC0zNjAsNDYgKzM2MCw1NyBAQAogICAgICAgICAgICAgICAgICAnIyc6ICdfX3BkX18n
fQo9MjAKPTIwCi1kZWYgcmVzdG9yZV90ZXh0KHRleHQpOgorZGVmIHJlc3RvcmVfdGV4dCggdGV4
dCwgY2hhcmFjdGVyX21hcD0zRG1hcHBlZF9jaGFycyApOgogICAgICIiIlJlc3RvcmVzIHNhbml0
aXplZCB0ZXh0IiIiCiAgICAgaWYgbm90IHRleHQ6CiAgICAgICAgIHJldHVybiB0ZXh0Ci0gICAg
Zm9yIGtleSwgdmFsdWUgaW4gbWFwcGVkX2NoYXJzLml0ZW1zKCk6CisgICAgZm9yIGtleSwgdmFs
dWUgaW4gY2hhcmFjdGVyX21hcC5pdGVtcygpOgogICAgICAgICB0ZXh0ID0zRCB0ZXh0LnJlcGxh
Y2UodmFsdWUsIGtleSkKICAgICByZXR1cm4gdGV4dAo9MjAKPTIwCi1kZWYgc2FuaXRpemVfdGV4
dCh0ZXh0KToKK2RlZiBzYW5pdGl6ZV90ZXh0KCB0ZXh0LCB2YWxpZF9jaGFyYWN0ZXJzPTNEdmFs
aWRfY2hhcnMsIGNoYXJhY3Rlcl9tYXA9M0RtPQphcHBlZF9jaGFycywgaW52YWxpZF9jaGFyYWN0
ZXI9M0QnWCcgKToKICAgICAiIiIKICAgICBSZXN0cmljdHMgdGhlIGNoYXJhY3RlcnMgdGhhdCBh
cmUgYWxsb3dlZCBpbiB0ZXh0OyBhY2NlcHRzIGJvdGggc3RyaW5ncwotICAgIGFuZCBsaXN0cyBv
ZiBzdHJpbmdzLgorICAgIGFuZCBsaXN0cyBvZiBzdHJpbmdzOyBub24tc3RyaW5nIGVudGl0aWVz
IHdpbGwgYmUgY2FzdCB0byBzdHJpbmdzLgogICAgICIiIgotICAgIGlmIGlzaW5zdGFuY2UoIHRl
eHQsIGJhc2VzdHJpbmcgKToKLSAgICAgICAgcmV0dXJuIF9zYW5pdGl6ZV90ZXh0X2hlbHBlcih0
ZXh0KQotICAgIGVsaWYgaXNpbnN0YW5jZSggdGV4dCwgbGlzdCApOgotICAgICAgICByZXR1cm4g
WyBfc2FuaXRpemVfdGV4dF9oZWxwZXIodCkgZm9yIHQgaW4gdGV4dCBdCisgICAgaWYgaXNpbnN0
YW5jZSggdGV4dCwgbGlzdCApOgorICAgICAgICByZXR1cm4gbWFwKCBsYW1iZGEgeDogc2FuaXRp
emVfdGV4dCggeCwgdmFsaWRfY2hhcmFjdGVycz0zRHZhbGlkX2M9CmhhcmFjdGVycywgY2hhcmFj
dGVyX21hcD0zRGNoYXJhY3Rlcl9tYXAsIGludmFsaWRfY2hhcmFjdGVyPTNEaW52YWxpZF9jaGFy
YT0KY3RlciApLCB0ZXh0ICkKKyAgICBpZiBub3QgaXNpbnN0YW5jZSggdGV4dCwgYmFzZXN0cmlu
ZyApOgorICAgICAgICB0ZXh0ID0zRCBzbWFydF9zdHIoIHRleHQgKQorICAgIHJldHVybiBfc2Fu
aXRpemVfdGV4dF9oZWxwZXIoIHRleHQsIHZhbGlkX2NoYXJhY3RlcnM9M0R2YWxpZF9jaGFyYWN0
ZXI9CnMsIGNoYXJhY3Rlcl9tYXA9M0RjaGFyYWN0ZXJfbWFwICkKPTIwCi0KLWRlZiBfc2FuaXRp
emVfdGV4dF9oZWxwZXIodGV4dCk6CitkZWYgX3Nhbml0aXplX3RleHRfaGVscGVyKCB0ZXh0LCB2
YWxpZF9jaGFyYWN0ZXJzPTNEdmFsaWRfY2hhcnMsIGNoYXJhY3Rlcj0KX21hcD0zRG1hcHBlZF9j
aGFycywgaW52YWxpZF9jaGFyYWN0ZXI9M0QnWCcgKToKICAgICAiIiJSZXN0cmljdHMgdGhlIGNo
YXJhY3RlcnMgdGhhdCBhcmUgYWxsb3dlZCBpbiBhIHN0cmluZyIiIgo9MjAKICAgICBvdXQgPTNE
IFtdCiAgICAgZm9yIGMgaW4gdGV4dDoKLSAgICAgICAgaWYgYyBpbiB2YWxpZF9jaGFyczoKKyAg
ICAgICAgaWYgYyBpbiB2YWxpZF9jaGFyYWN0ZXJzOgogICAgICAgICAgICAgb3V0LmFwcGVuZChj
KQotICAgICAgICBlbGlmIGMgaW4gbWFwcGVkX2NoYXJzOgotICAgICAgICAgICAgb3V0LmFwcGVu
ZChtYXBwZWRfY2hhcnNbY10pCisgICAgICAgIGVsaWYgYyBpbiBjaGFyYWN0ZXJfbWFwOgorICAg
ICAgICAgICAgb3V0LmFwcGVuZCggY2hhcmFjdGVyX21hcFtjXSApCiAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBvdXQuYXBwZW5kKCdYJykgICMgbWFrZXMgZGVidWdnaW5nIGVhc2llcgorICAg
ICAgICAgICAgb3V0LmFwcGVuZCggaW52YWxpZF9jaGFyYWN0ZXIgKSAgIyBtYWtlcyBkZWJ1Z2dp
bmcgZWFzaWVyCiAgICAgcmV0dXJuICcnLmpvaW4ob3V0KQo9MjAKPTIwCi1kZWYgc2FuaXRpemVf
cGFyYW0odmFsdWUpOgorZGVmIHNhbml0aXplX2xpc3RzX3RvX3N0cmluZyggdmFsdWVzLCB2YWxp
ZF9jaGFyYWN0ZXJzPTNEdmFsaWRfY2hhcnMsIGNoYXI9CmFjdGVyX21hcD0zRG1hcHBlZF9jaGFy
cywgaW52YWxpZF9jaGFyYWN0ZXI9M0QnWCcgICk6CisgICAgaWYgaXNpbnN0YW5jZSggdmFsdWVz
LCBsaXN0ICk6CisgICAgICAgIHJ2YWwgPTNEIFtdCisgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1
ZXM6CisgICAgICAgICAgICBydmFsLmFwcGVuZCggc2FuaXRpemVfbGlzdHNfdG9fc3RyaW5nKCB2
YWx1ZSwgdmFsaWRfY2hhcmFjdGVycz0KPTNEdmFsaWRfY2hhcmFjdGVycywgY2hhcmFjdGVyX21h
cD0zRGNoYXJhY3Rlcl9tYXAsIGludmFsaWRfY2hhcmFjdGVyPTNEaW52PQphbGlkX2NoYXJhY3Rl
ciApICkKKyAgICAgICAgdmFsdWVzID0zRCAiLCIuam9pbiggcnZhbCApCisgICAgZWxzZToKKyAg
ICAgICAgdmFsdWVzID0zRCBzYW5pdGl6ZV90ZXh0KCB2YWx1ZXMsIHZhbGlkX2NoYXJhY3RlcnM9
M0R2YWxpZF9jaGFyYWN0PQplcnMsIGNoYXJhY3Rlcl9tYXA9M0RjaGFyYWN0ZXJfbWFwLCBpbnZh
bGlkX2NoYXJhY3Rlcj0zRGludmFsaWRfY2hhcmFjdGVyICkKKyAgICByZXR1cm4gdmFsdWVzCisK
KworZGVmIHNhbml0aXplX3BhcmFtKCB2YWx1ZSwgdmFsaWRfY2hhcmFjdGVycz0zRHZhbGlkX2No
YXJzLCBjaGFyYWN0ZXJfbWFwPQo9M0RtYXBwZWRfY2hhcnMsIGludmFsaWRfY2hhcmFjdGVyPTNE
J1gnICk6CiAgICAgIiIiQ2xlYW4gaW5jb21pbmcgcGFyYW1ldGVycyAoc3RyaW5ncyBvciBsaXN0
cykiIiIKICAgICBpZiBpc2luc3RhbmNlKCB2YWx1ZSwgYmFzZXN0cmluZyApOgotICAgICAgICBy
ZXR1cm4gc2FuaXRpemVfdGV4dCh2YWx1ZSkKKyAgICAgICAgcmV0dXJuIHNhbml0aXplX3RleHQo
IHZhbHVlLCB2YWxpZF9jaGFyYWN0ZXJzPTNEdmFsaWRfY2hhcmFjdGVycywgPQpjaGFyYWN0ZXJf
bWFwPTNEY2hhcmFjdGVyX21hcCwgaW52YWxpZF9jaGFyYWN0ZXI9M0RpbnZhbGlkX2NoYXJhY3Rl
ciApCiAgICAgZWxpZiBpc2luc3RhbmNlKCB2YWx1ZSwgbGlzdCApOgotICAgICAgICByZXR1cm4g
bWFwKHNhbml0aXplX3RleHQsIHZhbHVlKQorICAgICAgICByZXR1cm4gbWFwKCBsYW1iZGEgeDog
c2FuaXRpemVfdGV4dCggeCwgdmFsaWRfY2hhcmFjdGVycz0zRHZhbGlkX2M9CmhhcmFjdGVycywg
Y2hhcmFjdGVyX21hcD0zRGNoYXJhY3Rlcl9tYXAsIGludmFsaWRfY2hhcmFjdGVyPTNEaW52YWxp
ZF9jaGFyYT0KY3RlciApLCB2YWx1ZSApCiAgICAgZWxzZToKICAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCdVbmtub3duIHBhcmFtZXRlciB0eXBlICglcyknICUgKCB0eXBlKCB2YWx1ZSApICkpCj0y
MAoKZGlmZiAtciBhMjVjZTYzY2RjZjA3Y2IyZDIwZmYzNDdiZjQyZTg2ZjRmZDRmMjFiIC1yIDNi
YmVhNGZmZjlmMjJhZjA1NjVlMTM2PQpkYmE2NTk5MjQwM2MwYTlhNSBsaWIvZ2FsYXh5L3V0aWwv
ZGJrZXlzLnB5Ci0tLSBhL2xpYi9nYWxheHkvdXRpbC9kYmtleXMucHkKKysrIGIvbGliL2dhbGF4
eS91dGlsL2Ria2V5cy5weQpAQCAtNCw2ICs0LDcgQEAKICNkYmtleXMgcmVhZCBmcm9tIGRpc2sg
dXNpbmcgYnVpbGRzLnR4dAogZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgcmVhZF9kYm5hbWVzCiBm
cm9tIGdhbGF4eS51dGlsLmpzb24gaW1wb3J0IGxvYWRzCitmcm9tIGdhbGF4eS51dGlsLm9iamVj
dF93cmFwcGVyIGltcG9ydCBzYW5pdGl6ZV9saXN0c190b19zdHJpbmcKIGltcG9ydCBvcy5wYXRo
Cj0yMAo9MjAKQEAgLTg0LDYgKzg1LDcgQEAKICAgICAgICAgIyB1c2UgY29uZmlndXJlZCBzZXJ2
ZXIgbGVuIHBhdGgKICAgICAgICAgaWYgbm90IGNocm9tX2luZm86CiAgICAgICAgICAgICAjIERl
ZmF1bHQgdG8gYnVpbHQtaW4gYnVpbGQuCi0gICAgICAgICAgICBjaHJvbV9pbmZvID0zRCBvcy5w
YXRoLmpvaW4oIHNlbGYuX3N0YXRpY19jaHJvbV9pbmZvX3BhdGgsICIlcz0KLmxlbiIgJSBkYmtl
eSApCisgICAgICAgICAgICAjIFNpbmNlIHdlIGFyZSB1c2luZyBhbiB1bnZlcmlmaWVkIGRia2V5
LCB3ZSB3aWxsIHNhbml0aXplIHRoZT0KIGRia2V5IGJlZm9yZSB1c2UKKyAgICAgICAgICAgIGNo
cm9tX2luZm8gPTNEIG9zLnBhdGguam9pbiggc2VsZi5fc3RhdGljX2Nocm9tX2luZm9fcGF0aCwg
IiVzPQoubGVuIiAlIHNhbml0aXplX2xpc3RzX3RvX3N0cmluZyggZGJrZXkgKSApCiAgICAgICAg
IGNocm9tX2luZm8gPTNEIG9zLnBhdGguYWJzcGF0aCggY2hyb21faW5mbyApCiAgICAgICAgIHJl
dHVybiAoIGNocm9tX2luZm8sIGRiX2RhdGFzZXQgKQoKZGlmZiAtciBhMjVjZTYzY2RjZjA3Y2Iy
ZDIwZmYzNDdiZjQyZTg2ZjRmZDRmMjFiIC1yIDNiYmVhNGZmZjlmMjJhZjA1NjVlMTM2PQpkYmE2
NTk5MjQwM2MwYTlhNSBsaWIvZ2FsYXh5L3V0aWwvb2JqZWN0X3dyYXBwZXIucHkKLS0tIC9kZXYv
bnVsbAorKysgYi9saWIvZ2FsYXh5L3V0aWwvb2JqZWN0X3dyYXBwZXIucHkKQEAgLTAsMCArMSw0
MzYgQEAKKyIiIgorQ2xhc3NlcyBmb3Igd3JhcHBpbmcgT2JqZWN0cyBhbmQgU2FuaXRpemluZyBz
dHJpbmcgb3V0cHV0LgorIiIiCisKK2ltcG9ydCBpbnNwZWN0CitpbXBvcnQgY29weV9yZWcKK2lt
cG9ydCBsb2dnaW5nCitpbXBvcnQgc3RyaW5nCitmcm9tIG51bWJlcnMgaW1wb3J0IE51bWJlcgor
ZnJvbSB0eXBlcyBpbXBvcnQgKCBOb25lVHlwZSwgTm90SW1wbGVtZW50ZWRUeXBlLCBFbGxpcHNp
c1R5cGUsIEZ1bmN0aW9uVHk9CnBlLCBNZXRob2RUeXBlLCBHZW5lcmF0b3JUeXBlLCBDb2RlVHlw
ZSwKKyAgICAgICAgICAgICAgICAgICAgQnVpbHRpbkZ1bmN0aW9uVHlwZSwgQnVpbHRpbk1ldGhv
ZFR5cGUsIE1vZHVsZVR5cGUsIFhSPQphbmdlVHlwZSwgU2xpY2VUeXBlLCBUcmFjZWJhY2tUeXBl
LCBGcmFtZVR5cGUsCisgICAgICAgICAgICAgICAgICAgIEJ1ZmZlclR5cGUsIERpY3RQcm94eVR5
cGUsIEdldFNldERlc2NyaXB0b3JUeXBlLCBNZW1iZT0KckRlc2NyaXB0b3JUeXBlICkKK2Zyb20g
VXNlckRpY3QgaW1wb3J0IFVzZXJEaWN0CisKK2Zyb20gZ2FsYXh5LnV0aWwgaW1wb3J0IHNhbml0
aXplX2xpc3RzX3RvX3N0cmluZyBhcyBfc2FuaXRpemVfbGlzdHNfdG9fc3RyPQppbmcKKworbG9n
ID0zRCBsb2dnaW5nLmdldExvZ2dlciggX19uYW1lX18gKQorCisjIERlZmluZSBkaWZmZXJlbnQg
YmVoYXZpb3JzIGZvciBkaWZmZXJlbnQgdHlwZXMsIHNlZSBhbHNvOiBodHRwczovL2RvY3MucD0K
eXRob24ub3JnLzIvbGlicmFyeS90eXBlcy5odG1sCisKKyMgS25vd24gQ2FsbGFibGUgdHlwZXMK
K19fQ0FMTEFCTEVfVFlQRVNfXyA9M0QgKCBGdW5jdGlvblR5cGUsIE1ldGhvZFR5cGUsIEdlbmVy
YXRvclR5cGUsIENvZGVUeXBlPQosIEJ1aWx0aW5GdW5jdGlvblR5cGUsIEJ1aWx0aW5NZXRob2RU
eXBlLCApCisKKyMgQWx3YXlzIHdyYXAgdGhlc2UgdHlwZXMgd2l0aG91dCBhdHRlbXB0aW5nIHRv
IHN1YmNsYXNzCitfX1dSQVBfTk9fU1VCQ0xBU1NfXyA9M0QgICggTW9kdWxlVHlwZSwgWFJhbmdl
VHlwZSwgU2xpY2VUeXBlLCBCdWZmZXJUeXBlLD0KIFRyYWNlYmFja1R5cGUsIEZyYW1lVHlwZSwg
RGljdFByb3h5VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0U2V0RGVzY3JpcHRv
clR5cGUsIE1lbWJlckRlc2NyaXB0b3JUeXBlICkgKyBfPQpfQ0FMTEFCTEVfVFlQRVNfXworCisj
IERvbid0IHdyYXAgb3Igc2FuaXRpemUuCitfX0RPTlRfU0FOSVRJWkVfVFlQRVNfXyA9M0QgKCBO
dW1iZXIsIGJvb2wsIE5vbmVUeXBlLCBOb3RJbXBsZW1lbnRlZFR5cGUsID0KRWxsaXBzaXNUeXBl
LCBieXRlYXJyYXksICkKKworIyBEb24ndCB3cmFwLCBidXQgZG8gc2FuaXRpemUuCitfX0RPTlRf
V1JBUF9UWVBFU19fID0zRCB0dXBsZSgpICMoIGJhc2VzdHJpbmcsICkgc28gdGhhdCB3ZSBjYW4g
Z2V0IHRoZSB1bj0Kc2FuaXRpemVkIHN0cmluZywgd2Ugd2lsbCBub3cgd3JhcCBiYXNlc3RyaW5n
IGluc3RhbmNlcworCisjIFdyYXAgY29udGVudHMsIGJ1dCBub3QgdGhlIGNvbnRhaW5lcgorX19X
UkFQX1NFUVVFTkNFU19fID0zRCAoIHR1cGxlLCBsaXN0LCApCitfX1dSQVBfU0VUU19fID0zRCAo
IHNldCwgZnJvemVuc2V0LCApCitfX1dSQVBfTUFQUElOR1NfXyA9M0QgKCBkaWN0LCBVc2VyRGlj
dCwgKQorCisKKyMgRGVmaW5lIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0aGF0IGFyZSBub3Qgc2Fu
aXRpemVkLCBhbmQgZGVmaW5lIGEgc2V0IG9mPQogbWFwcGluZ3MgZm9yIHRob3NlIHRoYXQgYXJl
LgorIyBjaGFyYWN0ZXJzIHRoYXQgYXJlIHZhbGlkCitWQUxJRF9DSEFSQUNURVJTID0zRCBzZXQo
IHN0cmluZy5sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICIgLT0zRF8uKCkvKypeLD0KOj8hQCIg
KQorCisjIGNoYXJhY3RlcnMgdGhhdCBhcmUgYWxsb3dlZCBidXQgbmVlZCB0byBiZSBlc2NhcGVk
CitDSEFSQUNURVJfTUFQID0zRCB7ICc+JzogJ19fZ3RfXycsCisgICAgICAgICAgICAgICAgICc8
JzogJ19fbHRfXycsCisgICAgICAgICAgICAgICAgICInIjogJ19fc3FfXycsCisgICAgICAgICAg
ICAgICAgICciJzogJ19fZHFfXycsCisgICAgICAgICAgICAgICAgICdbJzogJ19fb2JfXycsCisg
ICAgICAgICAgICAgICAgICddJzogJ19fY2JfXycsCisgICAgICAgICAgICAgICAgICd7JzogJ19f
b2NfXycsCisgICAgICAgICAgICAgICAgICd9JzogJ19fY2NfXycsCisgICAgICAgICAgICAgICAg
ICdcbic6ICdfX2NuX18nLAorICAgICAgICAgICAgICAgICAnXHInOiAnX19jcl9fJywKKyAgICAg
ICAgICAgICAgICAgJ1x0JzogJ19fdGNfXycsCisgICAgICAgICAgICAgICAgICcjJzogJ19fcGRf
Xyd9CisKK0lOVkFMSURfQ0hBUkFDVEVSID0zRCAiWCIKKworZGVmIHNhbml0aXplX2xpc3RzX3Rv
X3N0cmluZyggdmFsdWVzLCB2YWxpZF9jaGFyYWN0ZXJzPTNEVkFMSURfQ0hBUkFDVEVSUyw9CiBj
aGFyYWN0ZXJfbWFwPTNEQ0hBUkFDVEVSX01BUCwgaW52YWxpZF9jaGFyYWN0ZXI9M0RJTlZBTElE
X0NIQVJBQ1RFUiAgKToKKyAgICByZXR1cm4gX3Nhbml0aXplX2xpc3RzX3RvX3N0cmluZyggdmFs
dWVzLCB2YWxpZF9jaGFyYWN0ZXJzPTNEdmFsaWRfY2hhPQpyYWN0ZXJzLCBjaGFyYWN0ZXJfbWFw
PTNEY2hhcmFjdGVyX21hcCwgaW52YWxpZF9jaGFyYWN0ZXI9M0RpbnZhbGlkX2NoYXJhY3Q9CmVy
ICApCisKKworZGVmIHdyYXBfd2l0aF9zYWZlX3N0cmluZyggdmFsdWUsIG5vX3dyYXBfY2xhc3Nl
cyA9M0QgTm9uZSApOgorICAgICIiIgorICAgIFJlY3Vyc2l2ZWx5IHdyYXAgdmFsdWVzIHRoYXQg
c2hvdWxkIGJlIHdyYXBwZWQuCisgICAgIiIiCisKKyAgICBkZWYgX19kb193cmFwKCB2YWx1ZSAp
OgorICAgICAgICBpZiBpc2luc3RhbmNlKCB2YWx1ZSwgU2FmZVN0cmluZ1dyYXBwZXIgKToKKyAg
ICAgICAgICAgICMgT25seSBldmVyIHdyYXAgb25lLWxheWVyCisgICAgICAgICAgICByZXR1cm4g
dmFsdWUKKyAgICAgICAgaWYgY2FsbGFibGUoIHZhbHVlICk6CisgICAgICAgICAgICBzYWZlX2Ns
YXNzID0zRCBDYWxsYWJsZVNhZmVTdHJpbmdXcmFwcGVyCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBzYWZlX2NsYXNzID0zRCBTYWZlU3RyaW5nV3JhcHBlcgorICAgICAgICBpZiBpc2luc3Rh
bmNlKCB2YWx1ZSwgbm9fd3JhcF9jbGFzc2VzICk6CisgICAgICAgICAgICByZXR1cm4gdmFsdWUK
KyAgICAgICAgaWYgaXNpbnN0YW5jZSggdmFsdWUsIF9fRE9OVF9XUkFQX1RZUEVTX18gKToKKyAg
ICAgICAgICAgIHJldHVybiBzYW5pdGl6ZV9saXN0c190b19zdHJpbmcoIHZhbHVlLCB2YWxpZF9j
aGFyYWN0ZXJzPTNEVkFMPQpJRF9DSEFSQUNURVJTLCBjaGFyYWN0ZXJfbWFwPTNEQ0hBUkFDVEVS
X01BUCApCisgICAgICAgIGlmIGlzaW5zdGFuY2UoIHZhbHVlLCBfX1dSQVBfTk9fU1VCQ0xBU1Nf
XyApOgorICAgICAgICAgICAgcmV0dXJuIHNhZmVfY2xhc3MoIHZhbHVlLCBzYWZlX3N0cmluZ193
cmFwcGVyX2Z1bmN0aW9uID0zRCBfX2Q9Cm9fd3JhcCApCisgICAgICAgIGZvciB0aGlzX3R5cGUg
aW4gX19XUkFQX1NFUVVFTkNFU19fICsgX19XUkFQX1NFVFNfXzoKKyAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2UoIHZhbHVlLCB0aGlzX3R5cGUgKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhp
c190eXBlKCBtYXAoIF9fZG9fd3JhcCwgdmFsdWUgKSApCisgICAgICAgIGZvciB0aGlzX3R5cGUg
aW4gX19XUkFQX01BUFBJTkdTX186CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKCB2YWx1ZSwg
dGhpc190eXBlICk6CisgICAgICAgICAgICAgICAgIyBXcmFwIGJvdGgga2V5IGFuZCB2YWx1ZQor
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzX3R5cGUoIG1hcCggbGFtYmRhIHg6ICggX19kb193
cmFwKCB4WzBdICksIF9fZG89Cl93cmFwKCB4WzFdICkgKSwgdmFsdWUuaXRlbXMoKSApICkKKyAg
ICAgICAgIyBDcmVhdGUgYSBkeW5hbWljIGNsYXNzIHRoYXQgam9pbnMgU2FmZVN0cmluZ1dyYXBw
ZXIgd2l0aCB0aGUgb2JqPQplY3QgYmVpbmcgd3JhcHBlZC4KKyAgICAgICAgIyBUaGlzIGFsbG93
cyBlLmcuIGlzaW5zdGFuY2UgdG8gY29udGludWUgdG8gd29yay4KKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgd3JhcHBlZF9jbGFzc19uYW1lID0zRCB2YWx1ZS5fX25hbWVfXworICAgICAgICAg
ICAgd3JhcHBlZF9jbGFzcyA9M0QgdmFsdWUKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAg
d3JhcHBlZF9jbGFzc19uYW1lID0zRCB2YWx1ZS5fX2NsYXNzX18uX19uYW1lX18KKyAgICAgICAg
ICAgIHdyYXBwZWRfY2xhc3MgPTNEIHZhbHVlLl9fY2xhc3NfXworICAgICAgICB2YWx1ZV9tb2Qg
PTNEIGluc3BlY3QuZ2V0bW9kdWxlKCB2YWx1ZSApCisgICAgICAgIGlmIHZhbHVlX21vZDoKKyAg
ICAgICAgICAgIHdyYXBwZWRfY2xhc3NfbmFtZSA9M0QgIiVzLiVzIiAlICggdmFsdWVfbW9kLl9f
bmFtZV9fLCB3cmFwcGVkPQpfY2xhc3NfbmFtZSApCisgICAgICAgIHdyYXBwZWRfY2xhc3NfbmFt
ZSA9M0QgIlNhZmVTdHJpbmdXcmFwcGVyKCVzOiVzKSIgJSAoIHdyYXBwZWRfY2xhcz0Kc19uYW1l
LCAiLCIuam9pbiggc29ydGVkKCBtYXAoIHN0ciwgbm9fd3JhcF9jbGFzc2VzICkgKSApICkKKyAg
ICAgICAgZG9fd3JhcF9mdW5jX25hbWUgPTNEICJfX2RvX3dyYXBfJXMiICUgKCB3cmFwcGVkX2Ns
YXNzX25hbWUgKQorICAgICAgICBkb193cmFwX2Z1bmMgPTNEIF9fZG9fd3JhcAorICAgICAgICBn
bG9iYWxfZGljdCA9M0QgZ2xvYmFscygpCisgICAgICAgIGlmIHdyYXBwZWRfY2xhc3NfbmFtZSBp
biBnbG9iYWxfZGljdDoKKyAgICAgICAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHdlIGhhdmUgY3Jl
YXRlZCBhIHdyYXBwZXIgZm9yIHRoaXMgY2xhc3MgeWV0PQosIGlmIHNvLCByZXVzZQorICAgICAg
ICAgICAgd3JhcHBlZF9jbGFzcyA9M0QgZ2xvYmFsX2RpY3QuZ2V0KCB3cmFwcGVkX2NsYXNzX25h
bWUgKQorICAgICAgICAgICAgZG9fd3JhcF9mdW5jID0zRCBnbG9iYWxfZGljdC5nZXQoIGRvX3dy
YXBfZnVuY19uYW1lLCBfX2RvX3dyYXA9CiApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0
cnk6CisgICAgICAgICAgICAgICAgd3JhcHBlZF9jbGFzcyA9M0QgdHlwZSggd3JhcHBlZF9jbGFz
c19uYW1lLCAoIHNhZmVfY2xhc3MsID0Kd3JhcHBlZF9jbGFzcywgKSwge30gKQorICAgICAgICAg
ICAgZXhjZXB0IFR5cGVFcnJvciwgZToKKyAgICAgICAgICAgICAgICAgIyBGYWlsLXNhZmUgZm9y
IHdoZW4gYSBjbGFzcyBjYW5ub3QgYmUgZHluYW1pY2FsbHkgc3ViY2xhPQpzc2VkLgorICAgICAg
ICAgICAgICAgICBsb2cud2FybmluZyggIlVuYWJsZSB0byBjcmVhdGUgZHluYW1pYyBzdWJjbGFz
cyBmb3IgJXMsICU9CnM6ICVzIiwgdHlwZSggdmFsdWUpLCB2YWx1ZSwgZSApCisgICAgICAgICAg
ICAgICAgIHdyYXBwZWRfY2xhc3MgPTNEIHR5cGUoIHdyYXBwZWRfY2xhc3NfbmFtZSwgKCBzYWZl
X2NsYXNzLD0KICksIHt9ICkKKyAgICAgICAgICAgIGlmIHdyYXBwZWRfY2xhc3Mgbm90IGluICgg
U2FmZVN0cmluZ1dyYXBwZXIsIENhbGxhYmxlU2FmZVN0cmluPQpnV3JhcHBlciApOgorICAgICAg
ICAgICAgICAgICMgU2F2ZSB0aGlzIHdyYXBwZXIgZm9yIHJldXNlIGFuZCBwaWNrbGluZy9jb3B5
aW5nCisgICAgICAgICAgICAgICAgZ2xvYmFsX2RpY3RbIHdyYXBwZWRfY2xhc3NfbmFtZSBdID0z
RCB3cmFwcGVkX2NsYXNzCisgICAgICAgICAgICAgICAgZG9fd3JhcF9mdW5jLl9fbmFtZV9fID0z
RCBkb193cmFwX2Z1bmNfbmFtZQorICAgICAgICAgICAgICAgIGdsb2JhbF9kaWN0WyBkb193cmFw
X2Z1bmNfbmFtZSBdID0zRCBkb193cmFwX2Z1bmMKKyAgICAgICAgICAgICAgICBkZWYgcGlja2xl
X3NhZmVfb2JqZWN0KCBzYWZlX29iamVjdCApOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KCB3cmFwcGVkX2NsYXNzLCAoIHNhZmVfb2JqZWN0LnVuc2FuaXRpemVkLCBkb189CndyYXBfZnVu
YywgKSApCisgICAgICAgICAgICAgICAgIyBTZXQgcGlja2xlIGFuZCBjb3B5IHByb3BlcnRpZXMK
KyAgICAgICAgICAgICAgICBjb3B5X3JlZy5waWNrbGUoIHdyYXBwZWRfY2xhc3MsIHBpY2tsZV9z
YWZlX29iamVjdCwgZG9fd3JhPQpwX2Z1bmMgKQorICAgICAgICByZXR1cm4gd3JhcHBlZF9jbGFz
cyggdmFsdWUsIHNhZmVfc3RyaW5nX3dyYXBwZXJfZnVuY3Rpb24gPTNEIGRvX3c9CnJhcF9mdW5j
ICkKKyAgICAjIERldGVybWluZSBjbGFzc2VzIG5vdCB0byB3cmFwCisgICAgaWYgbm9fd3JhcF9j
bGFzc2VzOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSggbm9fd3JhcF9jbGFzc2VzLCAoIHR1
cGxlLCBsaXN0ICkgKToKKyAgICAgICAgICAgIG5vX3dyYXBfY2xhc3NlcyA9M0QgWyBub193cmFw
X2NsYXNzZXMgXQorICAgICAgICBub193cmFwX2NsYXNzZXMgPTNEIGxpc3QoIG5vX3dyYXBfY2xh
c3NlcyApICsgbGlzdCggX19ET05UX1NBTklUSVo9CkVfVFlQRVNfXyApICsgWyBTYWZlU3RyaW5n
V3JhcHBlciBdCisgICAgZWxzZToKKyAgICAgICAgbm9fd3JhcF9jbGFzc2VzID0zRCBsaXN0KCBf
X0RPTlRfU0FOSVRJWkVfVFlQRVNfXyApICsgWyBTYWZlU3RyaW5nPQpXcmFwcGVyIF0KKyAgICBu
b193cmFwX2NsYXNzZXMgPTNEIHR1cGxlKCBzZXQoIHNvcnRlZCggbm9fd3JhcF9jbGFzc2VzLCBr
ZXk9M0RzdHIgKSApPQogKQorICAgIHJldHVybiBfX2RvX3dyYXAoIHZhbHVlICkKKworCisjIE4u
Qi4gcmVmZXIgdG8gZS5nLiBodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL3JlZmVyZW5jZS9kYXRh
bW9kZWwuaHRtbCBmbz0KciBpbmZvcm1hdGlvbiBvbiBQeXRob24ncyBEYXRhIE1vZGVsLgorCisK
K2NsYXNzIFNhZmVTdHJpbmdXcmFwcGVyKCBvYmplY3QgKToKKyAgICAiIiIKKyAgICBDbGFzcyB0
aGF0IHdyYXBzIGFuZCBzYW5pdGl6ZXMgYW55IHByb3ZpZGVkIHZhbHVlJ3MgYXR0cmlidXRlcz0y
MAorICAgIHRoYXQgd2lsbCBhdHRlbXB0IHRvIGJlIGNhc3QgaW50byBhIHN0cmluZy4KKyAgID0y
MAorICAgIEF0dGVtcHRzIHRvIG1pbWljIGJlaGF2aW9yIG9mIG9yaWdpbmFsIGNsYXNzLCBpbmNs
dWRpbmcgb3BlcmFuZHMuCisgICA9MjAKKyAgICBUbyBlbnN1cmUgcHJvcGVyIGhhbmRsaW5nIG9m
IGUuZy4gc3ViY2xhc3MgY2hlY2tzLCB0aGUgKndyYXBfd2l0aF9zYWZlPQpfc3RyaW5nKCkqCisg
ICAgbWV0aG9kIHNob3VsZCBiZSB1c2VkLgorICAgPTIwCisgICAgVGhpcyB3cmFwcGluZyBvY2N1
cnMgaW4gYSByZWN1cnNpdmUvcGFyYXNpdGljIGZhc2hpb24sIGFzIGFsbCBjYWxsZWQgYT0KdHRy
aWJ1dGVzIG9mPTIwCisgICAgdGhlIG9yaWdpbmFsbHkgd3JhcHBlZCBvYmplY3Qgd2lsbCBhbHNv
IGJlIHdyYXBwZWQgYW5kIHNhbml0aXplZCwgdW5sZT0Kc3MgdGhlIGF0dHJpYnV0ZQorICAgIGlz
IG9mIGEgdHlwZSBmb3VuZCBpbiBfX0RPTlRfU0FOSVRJWkVfVFlQRVNfXyArIF9fRE9OVF9XUkFQ
X1RZUEVTX18sIHc9CmhlcmUgZS5nLiB+KHN0cmluZ3MKKyAgICB3aWxsIHN0aWxsIGJlIHNhbml0
aXplZCwgYnV0IG5vdCB3cmFwcGVkKSwgYW5kIGUuZy4gaW50ZWdlcnMgd2lsbCBoYXZlPQogbmVp
dGhlci4KKyAgICAiIiIKKyAgICBfX1VOU0FOSVRJWkVEX0FUVFJJQlVURV9OQU1FX18gPTNEICd1
bnNhbml0aXplZCc9MjAKKyAgICBfX05PX1dSQVBfTkFNRVNfXyA9M0QgWyAnX19zYWZlX3N0cmlu
Z193cmFwcGVyX2Z1bmN0aW9uX18nLCBfX1VOU0FOSVRJPQpaRURfQVRUUklCVVRFX05BTUVfX10K
KworCisgICAgZGVmIF9fbmV3X18oIGNscywgKmFyZywgKiprd2QgKToKKyAgICAgICAgIyBXZSBu
ZWVkIHRvIGRlZmluZSBhIF9fbmV3X18gc2luY2UsIHdlIGFyZSBzdWJjbGFzc2luZyBmcm9tIGUu
Zy4gPQppbW11dGFibGUgc3RyLCB3aGljaCBpbnRlcm5hbGx5IHNldHMgZGF0YT0yMAorICAgICAg
ICAjIHRoYXQgd2lsbCBiZSB1c2VkIHdoZW4gb3RoZXIgKyB0aGlzICh0aGlzICsgb3RoZXIgaXMg
aGFuZGxlZCBieSA9Cl9fYWRkX18pCisgICAgICAgIHNhZmVfc3RyaW5nX3dyYXBwZXJfZnVuY3Rp
b24gPTNEIGt3ZC5nZXQoICdzYWZlX3N0cmluZ193cmFwcGVyX2Z1bj0KY3Rpb24nLCBOb25lKSBv
ciB3cmFwX3dpdGhfc2FmZV9zdHJpbmcKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJu
IHN1cGVyKCBTYWZlU3RyaW5nV3JhcHBlciwgY2xzICkuX19uZXdfXyggY2xzLCBzYW5pdGl6ZV89
Cmxpc3RzX3RvX3N0cmluZyggYXJnWzBdLCB2YWxpZF9jaGFyYWN0ZXJzPTNEVkFMSURfQ0hBUkFD
VEVSUywgY2hhcmFjdGVyX21hcD0KPTNEQ0hBUkFDVEVSX01BUCApICkKKyAgICAgICAgZXhjZXB0
IEV4Y2VwdGlvbiwgZToKKyAgICAgICAgICAgIGxvZy53YXJuaW5nKCAiQ291bGQgbm90IHByb3Zp
ZGUgYW4gYXJndW1lbnQgdG8gJXMuX19uZXdfXzogJXM7PQogd2lsbCB0cnkgd2l0aG91dCBhcmd1
bWVudHMuIiwgY2xzLCBlICkKKyAgICAgICAgICAgIHJldHVybiBzdXBlciggU2FmZVN0cmluZ1dy
YXBwZXIsIGNscyApLl9fbmV3X18oIGNscyApCisKKyAgICBkZWYgX19pbml0X18oIHNlbGYsIHZh
bHVlLCBzYWZlX3N0cmluZ193cmFwcGVyX2Z1bmN0aW9uID0zRCB3cmFwX3dpdGhfPQpzYWZlX3N0
cmluZyApOgorICAgICAgICBzZWxmLnVuc2FuaXRpemVkID0zRCB2YWx1ZQorICAgICAgICBzZWxm
Ll9fc2FmZV9zdHJpbmdfd3JhcHBlcl9mdW5jdGlvbl9fID0zRCBzYWZlX3N0cmluZ193cmFwcGVy
X2Z1bmM9CnRpb24KKworICAgIGRlZiBfX3N0cl9fKCBzZWxmICk6CisgICAgICAgIHJldHVybiBz
YW5pdGl6ZV9saXN0c190b19zdHJpbmcoIHNlbGYudW5zYW5pdGl6ZWQsIHZhbGlkX2NoYXJhY3Rl
cj0Kcz0zRFZBTElEX0NIQVJBQ1RFUlMsIGNoYXJhY3Rlcl9tYXA9M0RDSEFSQUNURVJfTUFQICkK
KworICAgIGRlZiBfX3JlcHJfXyggc2VsZiApOgorICAgICAgICByZXR1cm4gIiVzIG9iamVjdCBh
dCAleCBvbjogJXMiICUgKCBzYW5pdGl6ZV9saXN0c190b19zdHJpbmcoIHNlbGY9Ci5fX2NsYXNz
X18uX19uYW1lX18sIHZhbGlkX2NoYXJhY3RlcnM9M0RWQUxJRF9DSEFSQUNURVJTLCBjaGFyYWN0
ZXJfbWFwPTNEQz0KSEFSQUNURVJfTUFQICksIGlkKCBzZWxmICksIHNhbml0aXplX2xpc3RzX3Rv
X3N0cmluZyggcmVwciggc2VsZi51bnNhbml0aXplPQpkICksIHZhbGlkX2NoYXJhY3RlcnM9M0RW
QUxJRF9DSEFSQUNURVJTLCBjaGFyYWN0ZXJfbWFwPTNEQ0hBUkFDVEVSX01BUCApICkKKworICAg
IGRlZiBfX2x0X18oIHNlbGYsIG90aGVyICk6CisgICAgICAgIHdoaWxlIGlzaW5zdGFuY2UoIG90
aGVyLCBTYWZlU3RyaW5nV3JhcHBlciApOgorICAgICAgICAgICAgb3RoZXIgPTNEIG90aGVyLnVu
c2FuaXRpemVkCisgICAgICAgIHJldHVybiBzZWxmLnVuc2FuaXRpemVkIDwgb3RoZXIKKworICAg
IGRlZiBfX2xlX18oIHNlbGYsIG90aGVyICk6CisgICAgICAgIHdoaWxlIGlzaW5zdGFuY2UoIG90
aGVyLCBTYWZlU3RyaW5nV3JhcHBlciApOgorICAgICAgICAgICAgb3RoZXIgPTNEIG90aGVyLnVu
c2FuaXRpemVkCisgICAgICAgIHJldHVybiBzZWxmLnVuc2FuaXRpemVkIDw9M0Qgb3RoZXIKKwor
ICAgIGRlZiBfX2VxX18oIHNlbGYsIG90aGVyICk6CisgICAgICAgIHdoaWxlIGlzaW5zdGFuY2Uo
IG90aGVyLCBTYWZlU3RyaW5nV3JhcHBlciApOgorICAgICAgICAgICAgb3RoZXIgPTNEIG90aGVy
LnVuc2FuaXRpemVkCisgICAgICAgIHJldHVybiBzZWxmLnVuc2FuaXRpemVkID0zRD0zRCBvdGhl
cgorCisgICAgZGVmIF9fbmVfXyggc2VsZiwgb3RoZXIgKToKKyAgICAgICAgd2hpbGUgaXNpbnN0
YW5jZSggb3RoZXIsIFNhZmVTdHJpbmdXcmFwcGVyICk6CisgICAgICAgICAgICBvdGhlciA9M0Qg
b3RoZXIudW5zYW5pdGl6ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYudW5zYW5pdGl6ZWQgIT0zRCBv
dGhlcgorCisgICAgZGVmIF9fZ3RfXyggc2VsZiwgb3RoZXIgKToKKyAgICAgICAgd2hpbGUgaXNp
bnN0YW5jZSggb3RoZXIsIFNhZmVTdHJpbmdXcmFwcGVyICk6CisgICAgICAgICAgICBvdGhlciA9
M0Qgb3RoZXIudW5zYW5pdGl6ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYudW5zYW5pdGl6ZWQgPiBv
dGhlcgorCisgICAgZGVmIF9fZ2VfXyggc2VsZiwgb3RoZXIgKToKKyAgICAgICAgd2hpbGUgaXNp
bnN0YW5jZSggb3RoZXIsIFNhZmVTdHJpbmdXcmFwcGVyICk6CisgICAgICAgICAgICBvdGhlciA9
M0Qgb3RoZXIudW5zYW5pdGl6ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYudW5zYW5pdGl6ZWQgPj0z
RCBvdGhlcgorCisgICAgZGVmIF9fbHRfXyggc2VsZiwgb3RoZXIgKToKKyAgICAgICAgd2hpbGUg
aXNpbnN0YW5jZSggb3RoZXIsIFNhZmVTdHJpbmdXcmFwcGVyICk6CisgICAgICAgICAgICBvdGhl
ciA9M0Qgb3RoZXIudW5zYW5pdGl6ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYudW5zYW5pdGl6ZWQg
PCBvdGhlcgorCisgICAgZGVmIF9fY21wX18oIHNlbGYsIG90aGVyICk6CisgICAgICAgIHdoaWxl
IGlzaW5zdGFuY2UoIG90aGVyLCBTYWZlU3RyaW5nV3JhcHBlciApOgorICAgICAgICAgICAgb3Ro
ZXIgPTNEIG90aGVyLnVuc2FuaXRpemVkCisgICAgICAgIHJldHVybiBjbXAoIHNlbGYudW5zYW5p
dGl6ZWQsIG90aGVyICkKKworICAgICMgRG8gbm90IGltcGxlbWVudCBfX3JjbXBfXywgcHl0aG9u
IDIuMiA8IDIuNgorCisgICAgZGVmIF9faGFzaF9fKCBzZWxmICk6CisgICAgICAgIHJldHVybiBo
YXNoKCBzZWxmLnVuc2FuaXRpemVkICkKKworICAgIGRlZiBfX25vbnplcm9fXyggc2VsZiApOgor
ICAgICAgICByZXR1cm4gYm9vbCggc2VsZi51bnNhbml0aXplZCApCisKKyAgICAjIERvIG5vdCBp
bXBsZW1lbnQgX191bmljb2RlX18sIHdlIHdpbGwgcmVseSBvbiBfX3N0cl9fCisKKyAgICBkZWYg
X19nZXRhdHRyX18oIHNlbGYsIG5hbWUgKToKKyAgICAgICAgaWYgbmFtZSBpbiBTYWZlU3RyaW5n
V3JhcHBlci5fX05PX1dSQVBfTkFNRVNfXzoKKyAgICAgICAgICAgICNGSVhNRTogaXMgdGhpcyBl
dmVyIHJlYWNoZWQ/CisgICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fZ2V0YXR0cl9fKCBzZWxm
LCBuYW1lICkKKyAgICAgICAgcmV0dXJuIHNlbGYuX19zYWZlX3N0cmluZ193cmFwcGVyX2Z1bmN0
aW9uX18oIGdldGF0dHIoIHNlbGYudW5zYW5pPQp0aXplZCwgbmFtZSApICkKKworICAgIGRlZiBf
X3NldGF0dHJfXyggc2VsZiwgbmFtZSwgdmFsdWUgKToKKyAgICAgICAgaWYgbmFtZSBpbiBTYWZl
U3RyaW5nV3JhcHBlci5fX05PX1dSQVBfTkFNRVNfXzoKKyAgICAgICAgICAgIHJldHVybiBvYmpl
Y3QuX19zZXRhdHRyX18oIHNlbGYsIG5hbWUsIHZhbHVlICkKKyAgICAgICAgcmV0dXJuIHNldGF0
dHIoIHNlbGYudW5zYW5pdGl6ZWQsIG5hbWUsIHZhbHVlICkKKworICAgIGRlZiBfX2RlbGF0dHJf
Xyggc2VsZiwgbmFtZSApOgorICAgICAgICBpZiBuYW1lIGluIFNhZmVTdHJpbmdXcmFwcGVyLl9f
Tk9fV1JBUF9OQU1FU19fOgorICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2RlbGF0dHJfXygg
c2VsZiwgbmFtZSApCisgICAgICAgIHJldHVybiBkZWxhdHRyKCBzZWxmLnVuc2FuaXRpemVkLCBu
YW1lICkKKworICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCBzZWxmLCBuYW1lICk6CisgICAgICAg
IGlmIG5hbWUgaW4gU2FmZVN0cmluZ1dyYXBwZXIuX19OT19XUkFQX05BTUVTX186CisgICAgICAg
ICAgICByZXR1cm4gb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oIHNlbGYsIG5hbWUgKQorICAgICAg
ICByZXR1cm4gc2VsZi5fX3NhZmVfc3RyaW5nX3dyYXBwZXJfZnVuY3Rpb25fXyggZ2V0YXR0cigg
b2JqZWN0Ll9fZ2U9CnRhdHRyaWJ1dGVfXyggc2VsZiwgJ3Vuc2FuaXRpemVkJyApLCBuYW1lICkg
KQorCisgICAgIyBTa2lwIERlc2NyaXB0b3JzCisKKyAgICAjIFNraXAgX19zbG90c19fCisgICA9
MjAKKyAgICAjIERvbid0IG5lZWQgX19tZXRhY2xhc3NfXywgd2UnbGwgdXNlIHRoZSBoZWxwZXIg
ZnVuY3Rpb24gdG8gaGFuZGxlIHdpPQp0aCBzdWJjbGFzc2luZyBmb3IgZS5nLiBpc2luc3RhbmNl
KCkKKworICAgICMgUmV2aXNpdDoKKyAgICAjIF9faW5zdGFuY2VjaGVja19fCisgICAgIyBfX3N1
YmNsYXNzY2hlY2tfXworICAgICMgV2UgYXJlIHVzaW5nIGEgaGVscGVyIGNsYXNzIHRvIGNyZWF0
ZSBkeW5hbWljIHN1YmNsYXNzZXMgdG8gaGFuZGxlIGM9Cmxhc3MgY2hlY2tzCisKKyAgICAjIFdl
IGFkZHJlc3MgX19jYWxsX18gYXMgbmVlZGVkIGJhc2VkIHVwb24gdW5zYW5pdGl6ZWQsIHRocm91
Z2ggdGhlIHVzPQplIG9mIGEgQ2FsbGFibGVTYWZlU3RyaW5nV3JhcHBlciBjbGFzcworCisgICAg
ZGVmIF9fbGVuX18oIHNlbGYgKToKKyAgICAgICAgb3JpZ2luYWxfdmFsdWUgPTNEIHNlbGYudW5z
YW5pdGl6ZWQKKyAgICAgICAgd2hpbGUgaXNpbnN0YW5jZSggb3JpZ2luYWxfdmFsdWUsIFNhZmVT
dHJpbmdXcmFwcGVyICk6CisgICAgICAgICAgICBvcmlnaW5hbF92YWx1ZSA9M0Qgc2VsZi51bnNh
bml0aXplZAorICAgICAgICByZXR1cm4gbGVuKCBzZWxmLnVuc2FuaXRpemVkICkKKworICAgIGRl
ZiBfX2dldGl0ZW1fXyggc2VsZiwga2V5ICk6CisgICAgICAgIHJldHVybiBzZWxmLl9fc2FmZV9z
dHJpbmdfd3JhcHBlcl9mdW5jdGlvbl9fKCBzZWxmLnVuc2FuaXRpemVkWyBrZT0KeSBdICkKKwor
ICAgIGRlZiBfX3NldGl0ZW1fXyggc2VsZiwga2V5LCB2YWx1ZSApOgorICAgICAgICB3aGlsZSBp
c2luc3RhbmNlKCB2YWx1ZSwgU2FmZVN0cmluZ1dyYXBwZXIgKToKKyAgICAgICAgICAgIHZhbHVl
ID0zRCB2YWx1ZS51bnNhbml0aXplZAorICAgICAgICBzZWxmLnVuc2FuaXRpemVkWyBrZXkgXSA9
M0QgdmFsdWUKKworICAgIGRlZiBfX2RlbGl0ZW1fXyggc2VsZiwga2V5ICk6CisgICAgICAgIGRl
bCBzZWxmLnVuc2FuaXRpemVkWyBrZXkgXQorCisgICAgZGVmIF9faXRlcl9fKCBzZWxmICk6Cisg
ICAgICAgIHJldHVybiBpdGVyKCBtYXAoIHNlbGYuX19zYWZlX3N0cmluZ193cmFwcGVyX2Z1bmN0
aW9uX18sIGl0ZXIoIHNlbD0KZi51bnNhbml0aXplZCApICkgKQorCisgICAgIyBEbyBub3QgaW1w
bGVtZW50IF9fcmV2ZXJzZWRfXworCisgICAgZGVmIF9fY29udGFpbnNfXyggc2VsZiwgaXRlbSAp
OgorICAgICAgICAjIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGNvbnNpZGVyIGlmIGl0ZW0gaXMvaXNu
J3Qgb3IgZG9lcy9kb2Vzbid0IGM9Cm9udGFpbiBTYWZlU3RyaW5nV3JhcHBlcj8KKyAgICAgICAg
IyBXaGVuIGNvbnNpZGVyaW5nIGUuZy4gbmVzdGVkIGxpc3RzL2RpY3RzL2V0YywgdGhpcyBnZXRz
IGNvbXBsaWNhPQp0ZWQKKyAgICAgICAgd2hpbGUgaXNpbnN0YW5jZSggaXRlbSwgU2FmZVN0cmlu
Z1dyYXBwZXIgKToKKyAgICAgICAgICAgIGl0ZW0gPTNEIGl0ZW0udW5zYW5pdGl6ZWQKKyAgICAg
ICAgcmV0dXJuIGl0ZW0gaW4gc2VsZi51bnNhbml0aXplZAorCisgICAgIyBOb3Qgc3VyZSB0aGF0
IHdlIG5lZWQgdGhlc2Ugc2xpY2UgbWV0aG9kcywgYnV0IHdpbGwgcHJvdmlkZSBhbnl3YXkKKyAg
ICBkZWYgX19nZXRzbGljZV9fKCBzZWxmLCBpLCBqICk6CisgICAgICAgIHJldHVybiBzZWxmLl9f
c2FmZV9zdHJpbmdfd3JhcHBlcl9mdW5jdGlvbl9fKCBzZWxmLnVuc2FuaXRpemVkWyBpOj0KaiBd
ICkKKworICAgIGRlZiBfX3NldHNsaWNlX18oIHNlbGYsIGksIGosIHZhbHVlICk6CisgICAgICAg
IHNlbGYudW5zYW5pdGl6ZWRbIGk6aiBdID0zRCB2YWx1ZQorCisgICAgZGVmIF9fZGVsc2xpY2Vf
Xyggc2VsZiwgaSwgaiApOgorICAgICAgICBkZWwgc2VsZi51bnNhbml0aXplZFsgaTpqIF0KKwor
ICAgIGRlZiBfX2FkZF9fKCBzZWxmLCBvdGhlciApOgorICAgICAgICB3aGlsZSBpc2luc3RhbmNl
KCBvdGhlciwgU2FmZVN0cmluZ1dyYXBwZXIgKToKKyAgICAgICAgICAgIG90aGVyID0zRCBvdGhl
ci51bnNhbml0aXplZAorICAgICAgICByZXR1cm4gc2VsZi5fX3NhZmVfc3RyaW5nX3dyYXBwZXJf
ZnVuY3Rpb25fXyggc2VsZi51bnNhbml0aXplZCArIG89CnRoZXIgKQorCisgICAgZGVmIF9fc3Vi
X18oIHNlbGYsIG90aGVyICk6CisgICAgICAgIHdoaWxlIGlzaW5zdGFuY2UoIG90aGVyLCBTYWZl
U3RyaW5nV3JhcHBlciApOgorICAgICAgICAgICAgb3RoZXIgPTNEIG90aGVyLnVuc2FuaXRpemVk
CisgICAgICAgIHJldHVybiBzZWxmLl9fc2FmZV9zdHJpbmdfd3JhcHBlcl9mdW5jdGlvbl9fKCBz
ZWxmLnVuc2FuaXRpemVkIC0gbz0KdGhlciApCisKKyAgICBkZWYgX19tdWxfXyggc2VsZiwgb3Ro
ZXIgKToKKyAgICAgICAgd2hpbGUgaXNpbnN0YW5jZSggb3RoZXIsIFNhZmVTdHJpbmdXcmFwcGVy
ICk6CisgICAgICAgICAgICBvdGhlciA9M0Qgb3RoZXIudW5zYW5pdGl6ZWQKKyAgICAgICAgcmV0
dXJuIHNlbGYuX19zYWZlX3N0cmluZ193cmFwcGVyX2Z1bmN0aW9uX18oIHNlbGYudW5zYW5pdGl6
ZWQgKiBvPQp0aGVyICkKKworICAgIGRlZiBfX2Zsb29yZGl2X18oIHNlbGYsIG90aGVyICk6Cisg
ICAgICAgIHdoaWxlIGlzaW5zdGFuY2UoIG90aGVyLCBTYWZlU3RyaW5nV3JhcHBlciApOgorICAg
ICAgICAgICAgb3RoZXIgPTNEIG90aGVyLnVuc2FuaXRpemVkCisgICAgICAgIHJldHVybiBzZWxm
Ll9fc2FmZV9zdHJpbmdfd3JhcHBlcl9mdW5jdGlvbl9fKCBzZWxmLnVuc2FuaXRpemVkIC8vID0K
b3RoZXIgKQorCisgICAgZGVmIF9fbW9kX18oIHNlbGYsIG90aGVyICk6CisgICAgICAgIHdoaWxl
IGlzaW5zdGFuY2UoIG90aGVyLCBTYWZlU3RyaW5nV3JhcHBlciApOgorICAgICAgICAgICAgb3Ro
ZXIgPTNEIG90aGVyLnVuc2FuaXRpemVkCisgICAgICAgIHJldHVybiBzZWxmLl9fc2FmZV9zdHJp
bmdfd3JhcHBlcl9mdW5jdGlvbl9fKCBzZWxmLnVuc2FuaXRpemVkICUgbz0KdGhlciApCisKKyAg
ICBkZWYgX19kaXZtb2RfXyggc2VsZiwgb3RoZXIgKToKKyAgICAgICAgd2hpbGUgaXNpbnN0YW5j
ZSggb3RoZXIsIFNhZmVTdHJpbmdXcmFwcGVyICk6CisgICAgICAgICAgICBvdGhlciA9M0Qgb3Ro
ZXIudW5zYW5pdGl6ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19zYWZlX3N0cmluZ193cmFwcGVy
X2Z1bmN0aW9uX18oIGRpdm1vZCggc2VsZi51bnNhbml0PQppemVkLCBvdGhlciApICkKKworICAg
IGRlZiBfX3Bvd19fKCBzZWxmLCAqb3RoZXIgKToKKyAgICAgICAgd2hpbGUgaXNpbnN0YW5jZSgg
b3RoZXIsIFNhZmVTdHJpbmdXcmFwcGVyICk6CisgICAgICAgICAgICBvdGhlciA9M0Qgb3RoZXIu
dW5zYW5pdGl6ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19zYWZlX3N0cmluZ193cmFwcGVyX2Z1
bmN0aW9uX18oIHBvdyggc2VsZi51bnNhbml0aXplPQpkLCAqb3RoZXIgKSApCisKKyAgICBkZWYg
X19sc2hpZnRfXyggc2VsZiwgb3RoZXIgKToKKyAgICAgICAgd2hpbGUgaXNpbnN0YW5jZSggb3Ro
ZXIsIFNhZmVTdHJpbmdXcmFwcGVyICk6CisgICAgICAgICAgICBvdGhlciA9M0Qgb3RoZXIudW5z
YW5pdGl6ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19zYWZlX3N0cmluZ193cmFwcGVyX2Z1bmN0
aW9uX18oIHNlbGYudW5zYW5pdGl6ZWQgPDwgPQpvdGhlciApCisKKyAgICBkZWYgX19yc2hpZnRf
Xyggc2VsZiwgb3RoZXIgKToKKyAgICAgICAgd2hpbGUgaXNpbnN0YW5jZSggb3RoZXIsIFNhZmVT
dHJpbmdXcmFwcGVyICk6CisgICAgICAgICAgICBvdGhlciA9M0Qgb3RoZXIudW5zYW5pdGl6ZWQK
KyAgICAgICAgcmV0dXJuIHNlbGYuX19zYWZlX3N0cmluZ193cmFwcGVyX2Z1bmN0aW9uX18oIHNl
bGYudW5zYW5pdGl6ZWQgPj4gPQpvdGhlciApCisKKyAgICBkZWYgX19hbmRfXyggc2VsZiwgb3Ro
ZXIgKToKKyAgICAgICAgd2hpbGUgaXNpbnN0YW5jZSggb3RoZXIsIFNhZmVTdHJpbmdXcmFwcGVy
ICk6CisgICAgICAgICAgICBvdGhlciA9M0Qgb3RoZXIudW5zYW5pdGl6ZWQKKyAgICAgICAgcmV0
dXJuIHNlbGYuX19zYWZlX3N0cmluZ193cmFwcGVyX2Z1bmN0aW9uX18oIHNlbGYudW5zYW5pdGl6
ZWQgJiBvPQp0aGVyICkKKworICAgIGRlZiBfX3hvcl9fKCBzZWxmLCBvdGhlciApOgorICAgICAg
ICB3aGlsZSBpc2luc3RhbmNlKCBvdGhlciwgU2FmZVN0cmluZ1dyYXBwZXIgKToKKyAgICAgICAg
ICAgIG90aGVyID0zRCBvdGhlci51bnNhbml0aXplZAorICAgICAgICByZXR1cm4gc2VsZi5fX3Nh
ZmVfc3RyaW5nX3dyYXBwZXJfZnVuY3Rpb25fXyggc2VsZi51bnNhbml0aXplZCBeIG89CnRoZXIg
KQorCisgICAgZGVmIF9fb3JfXyggc2VsZiwgb3RoZXIgKToKKyAgICAgICAgd2hpbGUgaXNpbnN0
YW5jZSggb3RoZXIsIFNhZmVTdHJpbmdXcmFwcGVyICk6CisgICAgICAgICAgICBvdGhlciA9M0Qg
b3RoZXIudW5zYW5pdGl6ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19zYWZlX3N0cmluZ193cmFw
cGVyX2Z1bmN0aW9uX18oIHNlbGYudW5zYW5pdGl6ZWQgfCBvPQp0aGVyICkKKworICAgIGRlZiBf
X2Rpdl9fKCBzZWxmLCBvdGhlciApOgorICAgICAgICB3aGlsZSBpc2luc3RhbmNlKCBvdGhlciwg
U2FmZVN0cmluZ1dyYXBwZXIgKToKKyAgICAgICAgICAgIG90aGVyID0zRCBvdGhlci51bnNhbml0
aXplZAorICAgICAgICByZXR1cm4gc2VsZi5fX3NhZmVfc3RyaW5nX3dyYXBwZXJfZnVuY3Rpb25f
Xyggc2VsZi51bnNhbml0aXplZCAvIG89CnRoZXIgKQorCisgICAgZGVmIF9fdHJ1ZWRpdl9fKCBz
ZWxmLCBvdGhlciApOgorICAgICAgICB3aGlsZSBpc2luc3RhbmNlKCBvdGhlciwgU2FmZVN0cmlu
Z1dyYXBwZXIgKToKKyAgICAgICAgICAgIG90aGVyID0zRCBvdGhlci51bnNhbml0aXplZAorICAg
ICAgICByZXR1cm4gc2VsZi5fX3NhZmVfc3RyaW5nX3dyYXBwZXJfZnVuY3Rpb25fXyggc2VsZi51
bnNhbml0aXplZCAvIG89CnRoZXIgKQorCisgICAgIyBUaGUgb25seSByZWZsZWN0ZWQgb3BlcmFu
ZCB0aGF0IHdlIHdpbGwgZGVmaW5lIGlzIF9fcnBvd19fLCBkdWUgdG8gYz0Kb2VyY2lvbiBydWxl
cyBjb21wbGljYXRpb25zIGFzIHBlciBkb2NzCisgICAgZGVmIF9fcnBvd19fKCBzZWxmLCBvdGhl
ciApOgorICAgICAgICB3aGlsZSBpc2luc3RhbmNlKCBvdGhlciwgU2FmZVN0cmluZ1dyYXBwZXIg
KToKKyAgICAgICAgICAgIG90aGVyID0zRCBvdGhlci51bnNhbml0aXplZAorICAgICAgICByZXR1
cm4gc2VsZi5fX3NhZmVfc3RyaW5nX3dyYXBwZXJfZnVuY3Rpb25fXyggcG93KCBvdGhlciwgc2Vs
Zi51bnM9CmFuaXRpemVkICkgKQorCisgICAgIyBEbyBub3QgaW1wbGVtZW50IGluLXBsYWNlIG9w
ZXJhbmRzCisKKyAgICBkZWYgX19uZWdfXyggc2VsZiApOgorICAgICAgICByZXR1cm4gX19zYWZl
X3N0cmluZ193cmFwcGVyX2Z1bmN0aW9uX18oIC1zZWxmLnVuc2FuaXRpemVkICkKKworICAgIGRl
ZiBfX3Bvc19fKCBzZWxmICk6CisgICAgICAgIHJldHVybiBfX3NhZmVfc3RyaW5nX3dyYXBwZXJf
ZnVuY3Rpb25fXyggK3NlbGYudW5zYW5pdGl6ZWQgKQorCisgICAgZGVmIF9fYWJzX18oIHNlbGYg
KToKKyAgICAgICAgcmV0dXJuIF9fc2FmZV9zdHJpbmdfd3JhcHBlcl9mdW5jdGlvbl9fKCBhYnMo
IHNlbGYudW5zYW5pdGl6ZWQgKSApCisKKyAgICBkZWYgX19pbnZlcnRfXyggc2VsZiApOgorICAg
ICAgICByZXR1cm4gX19zYWZlX3N0cmluZ193cmFwcGVyX2Z1bmN0aW9uX18oIH5zZWxmLnVuc2Fu
aXRpemVkICkKKworICAgIGRlZiBfX2NvbXBsZXhfXyggc2VsZiApOgorICAgICAgICByZXR1cm4g
X19zYWZlX3N0cmluZ193cmFwcGVyX2Z1bmN0aW9uX18oIGNvbXBsZXgoIHNlbGYudW5zYW5pdGl6
ZWQ9CiApICkKKworICAgIGRlZiBfX2ludF9fKCBzZWxmICk6CisgICAgICAgIHJldHVybiBpbnQo
IHNlbGYudW5zYW5pdGl6ZWQgKQorCisgICAgZGVmIF9fZmxvYXRfXyggc2VsZiApOgorICAgICAg
ICByZXR1cm4gZmxvYXQoIHNlbGYudW5zYW5pdGl6ZWQgKQorCisgICAgZGVmIF9fb2N0X18oIHNl
bGYgKToKKyAgICAgICAgcmV0dXJuIG9jdCggc2VsZi51bnNhbml0aXplZCApCisKKyAgICBkZWYg
X19oZXhfXyggc2VsZiApOgorICAgICAgICByZXR1cm4gaGV4KCBzZWxmLnVuc2FuaXRpemVkICkK
KworICAgIGRlZiBfX2luZGV4X18oIHNlbGYgKToKKyAgICAgICAgcmV0dXJuIHNlbGYudW5zYW5p
dGl6ZWQuaW5kZXgoKQorCisgICAgZGVmIF9fY29lcmNlX18oIHNlbGYsIG90aGVyICk6CisgICAg
ICAgIHdoaWxlIGlzaW5zdGFuY2UoIG90aGVyLCBTYWZlU3RyaW5nV3JhcHBlciApOgorICAgICAg
ICAgICAgb3RoZXIgPTNEIG90aGVyLnVuc2FuaXRpemVkCisgICAgICAgIHJldHVybiBjb2VyY2Uo
IHNlbGYudW5zYW5pdGl6ZWQsIG90aGVyICkKKworICAgIGRlZiBfX2VudGVyX18oIHNlbGYgKToK
KyAgICAgICAgcmV0dXJuIHNlbGYudW5zYW5pdGl6ZWQuX19lbnRlcl9fKCkKKworICAgIGRlZiBf
X2V4aXRfXyggc2VsZiwgKmFyZ3MgKToKKyAgICAgICAgcmV0dXJuIHNlbGYudW5zYW5pdGl6ZWQu
X19leGl0X18oICphcmdzICkKKworY2xhc3MgQ2FsbGFibGVTYWZlU3RyaW5nV3JhcHBlciggU2Fm
ZVN0cmluZ1dyYXBwZXIgKToKKyAgID0yMAorICAgIGRlZiBfX2NhbGxfXyggc2VsZiwgKmFyZ3Ms
ICoqa3dkcyApOgorICAgICAgICByZXR1cm4gc2VsZi5fX3NhZmVfc3RyaW5nX3dyYXBwZXJfZnVu
Y3Rpb25fXyggc2VsZi51bnNhbml0aXplZCggKmE9CnJncywgKiprd2RzICkgKQorCisKKyMgRW5h
YmxlIHBpY2tsaW5nL2RlZXBjb3B5CitkZWYgcGlja2xlX1NhZmVTdHJpbmdXcmFwcGVyKCBzYWZl
X29iamVjdCApOgorICAgIGFyZ3MgPTNEICggc2FmZV9vYmplY3QudW5zYW5pdGl6ZWQsICkKKyAg
ICBjbHMgPTNEIFNhZmVTdHJpbmdXcmFwcGVyCisgICAgaWYgaXNpbnN0YW5jZSggc2FmZV9vYmpl
Y3QsIENhbGxhYmxlU2FmZVN0cmluZ1dyYXBwZXIgKToKKyAgICAgICAgY2xzID0zRCBDYWxsYWJs
ZVNhZmVTdHJpbmdXcmFwcGVyCisgICAgcmV0dXJuICggY2xzLCBhcmdzICkKK2NvcHlfcmVnLnBp
Y2tsZSggU2FmZVN0cmluZ1dyYXBwZXIsIHBpY2tsZV9TYWZlU3RyaW5nV3JhcHBlciwgd3JhcF93
aXRoX3NhPQpmZV9zdHJpbmcgKQorY29weV9yZWcucGlja2xlKCBDYWxsYWJsZVNhZmVTdHJpbmdX
cmFwcGVyLCBwaWNrbGVfU2FmZVN0cmluZ1dyYXBwZXIsIHdyYXA9Cl93aXRoX3NhZmVfc3RyaW5n
ICkKKwoKZGlmZiAtciBhMjVjZTYzY2RjZjA3Y2IyZDIwZmYzNDdiZjQyZTg2ZjRmZDRmMjFiIC1y
IDNiYmVhNGZmZjlmMjJhZjA1NjVlMTM2PQpkYmE2NTk5MjQwM2MwYTlhNSBsaWIvZ2FsYXh5L3dl
YmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL3Rvb2xfcnVubmVyLnB5Ci0tLSBhL2xpYi9nYWxheHkv
d2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvdG9vbF9ydW5uZXIucHkKKysrIGIvbGliL2dhbGF4
eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy90b29sX3J1bm5lci5weQpAQCAtODAsMTQgKzgw
LDI4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVzc2FnZT0zRG1lc3NhZz0KZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9M0RzdGF0dXMsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVkaXJl
Y3Q9M0RyZWRpcj0KZWN0ICkgKQotICAgICAgICBwYXJhbXMgPTNEIGdhbGF4eS51dGlsLlBhcmFt
cygga3dkLCBzYW5pdGl6ZSA9M0QgRmFsc2UgKSAjU2FuaXRpemU9CiBwYXJhbWV0ZXJzIHdoZW4g
c3Vic3RpdHV0aW5nIGludG8gY29tbWFuZCBsaW5lIHZpYSBpbnB1dCB3cmFwcGVycwotICAgICAg
ICAjZG8gcGFyYW0gdHJhbnNsYXRpb24gaGVyZSwgdXNlZCBieSBkYXRhc291cmNlIHRvb2xzCi0g
ICAgICAgIGlmIHRvb2wuaW5wdXRfdHJhbnNsYXRvcjoKLSAgICAgICAgICAgIHRvb2wuaW5wdXRf
dHJhbnNsYXRvci50cmFuc2xhdGUoIHBhcmFtcyApCisKKyAgICAgICAgZGVmIF92YWxpZGF0ZWRf
cGFyYW1zX2Zvcigga3dkICk6CisgICAgICAgICAgICBwYXJhbXMgPTNEIGdhbGF4eS51dGlsLlBh
cmFtcygga3dkLCBzYW5pdGl6ZT0zREZhbHNlICkgICMgU2FuaT0KdGl6ZSBwYXJhbWV0ZXJzIHdo
ZW4gc3Vic3RpdHV0aW5nIGludG8gY29tbWFuZCBsaW5lIHZpYSBpbnB1dCB3cmFwcGVycworICAg
ICAgICAgICAgI2RvIHBhcmFtIHRyYW5zbGF0aW9uIGhlcmUsIHVzZWQgYnkgZGF0YXNvdXJjZSB0
b29scworICAgICAgICAgICAgaWYgdG9vbC5pbnB1dF90cmFuc2xhdG9yOgorICAgICAgICAgICAg
ICAgIHRvb2wuaW5wdXRfdHJhbnNsYXRvci50cmFuc2xhdGUoIHBhcmFtcyApCisgICAgICAgICAg
ICByZXR1cm4gcGFyYW1zCisKKyAgICAgICAgcGFyYW1zID0zRCBfdmFsaWRhdGVkX3BhcmFtc19m
b3IoIGt3ZCApCiAgICAgICAgICMgV2UgbWF5IGJlIHZpc2l0aW5nIEdhbGF4eSBmb3IgdGhlIGZp
cnN0IHRpbWUgKCBlLmcuLCBzZW5kaW5nIGRhdD0KYSBmcm9tIFVDU0MgKSwKICAgICAgICAgIyBz
byBtYWtlIHN1cmUgdG8gY3JlYXRlIGEgbmV3IGhpc3RvcnkgaWYgd2UndmUgbmV2ZXIgaGFkIG9u
ZSBiZWZvPQpyZS4KICAgICAgICAgaGlzdG9yeSA9M0QgdG9vbC5nZXRfZGVmYXVsdF9oaXN0b3J5
X2J5X3RyYW5zKCB0cmFucywgY3JlYXRlPTNEVHJ1PQplICkKLSAgICAgICAgdGVtcGxhdGUsIHZh
cnMgPTNEIHRvb2wuaGFuZGxlX2lucHV0KCB0cmFucywgcGFyYW1zLl9fZGljdF9fICkKKyAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgdGVtcGxhdGUsIHZhcnMgPTNEIHRvb2wuaGFuZGxlX2lucHV0
KCB0cmFucywgcGFyYW1zLl9fZGljdF9fICkKKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAg
ICAgICAgICAgIyBUaGlzIGVycm9yIGluZGljYXRlcyAob3IgYXQgbGVhc3QgY2FuIGluZGljYXRl
KSB0aGVyZSB3YXMgYQorICAgICAgICAgICAgIyBwcm9ibGVtIHdpdGggdGhlIHN0b3JlZCB0b29s
X3N0YXRlIC0gaXQgaXMgaW5jb21wYXRpYmxlIHdpdGgKKyAgICAgICAgICAgICMgdGhpcyB2YXJp
YW50IG9mIHRoZSB0b29sIC0gcG9zc2libHkgYmVjYXVzZSB0aGUgdG9vbCBjaGFuZ2VkCisgICAg
ICAgICAgICAjIG9yIGJlY2F1c2UgdGhlIHRvb2wgdmVyc2lvbiBjaGFuZ2VkLgorICAgICAgICAg
ICAgZGVsIGt3ZFsgInRvb2xfc3RhdGUiIF0KKyAgICAgICAgICAgIHBhcmFtcyA9M0QgX3ZhbGlk
YXRlZF9wYXJhbXNfZm9yKCBrd2QgKQorICAgICAgICAgICAgdGVtcGxhdGUsIHZhcnMgPTNEIHRv
b2wuaGFuZGxlX2lucHV0KCB0cmFucywgcGFyYW1zLl9fZGljdF9fICkKICAgICAgICAgaWYgbGVu
KCBwYXJhbXMgKSA+IDA6CiAgICAgICAgICAgICB0cmFucy5sb2dfZXZlbnQoICJUb29sIHBhcmFt
czogJXMiICUgKCBzdHIoIHBhcmFtcyApICksIHRvb2xfaT0KZD0zRHRvb2xfaWQgKQogICAgICAg
ICBhZGRfZnJhbWUgPTNEIEFkZEZyYW1lRGF0YSgpCgpkaWZmIC1yIGEyNWNlNjNjZGNmMDdjYjJk
MjBmZjM0N2JmNDJlODZmNGZkNGYyMWIgLXIgM2JiZWE0ZmZmOWYyMmFmMDU2NWUxMzY9CmRiYTY1
OTkyNDAzYzBhOWE1IGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvdXNlci5w
eQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL3VzZXIucHkKKysr
IGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy91c2VyLnB5CkBAIC0xMTQ5
LDMzICsxMTQ5LDI3IEBACiAgICAgICAgICAgICByZXNldF91c2VyID0zRCB0cmFucy5zYV9zZXNz
aW9uLnF1ZXJ5KCB0cmFucy5hcHAubW9kZWwuVXNlciApLj0KZmlsdGVyKCB0cmFucy5hcHAubW9k
ZWwuVXNlci50YWJsZS5jLmVtYWlsID0zRD0zRCBlbWFpbCApLmZpcnN0KCkKICAgICAgICAgICAg
IHVzZXIgPTNEIHRyYW5zLmdldF91c2VyKCkKICAgICAgICAgICAgIGlmIHJlc2V0X3VzZXI6Ci0g
ICAgICAgICAgICAgICAgaWYgdXNlciBhbmQgdXNlci5pZCAhPTNEIHJlc2V0X3VzZXIuaWQ6Ci0g
ICAgICAgICAgICAgICAgICAgICMgVGhpcyBkb2Vzbid0IG1ha2UgYW55IHNlbnNlIGJlY2F1c2Ug
YWxsIHRoZXkgaGF2ZSB0bz0KIGRvIGlzIGxvZwotICAgICAgICAgICAgICAgICAgICAjIG91dCBh
bmQgdGhlbiB0cnkgaXQgYWdhaW4gICAjVE9ETyByZXZpc2l0IHdoeSB0aGlzIGU9Cnhpc3RzLgot
ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0zRCAiWW91IG1heSBvbmx5IHJlc2V0IHlvdXIg
b3duIHBhc3N3b3JkLiIKKyAgICAgICAgICAgICAgICBwcnQgPTNEIHRyYW5zLmFwcC5tb2RlbC5Q
YXNzd29yZFJlc2V0VG9rZW4oIHJlc2V0X3VzZXIgKQorICAgICAgICAgICAgICAgIHRyYW5zLnNh
X3Nlc3Npb24uYWRkKCBwcnQgKQorICAgICAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uZmx1
c2goKQorICAgICAgICAgICAgICAgIGhvc3QgPTNEIHRyYW5zLnJlcXVlc3QuaG9zdC5zcGxpdCgg
JzonIClbIDAgXQorICAgICAgICAgICAgICAgIGlmIGhvc3QgPTNEPTNEICdsb2NhbGhvc3QnOgor
ICAgICAgICAgICAgICAgICAgICBob3N0ID0zRCBzb2NrZXQuZ2V0ZnFkbigpCisgICAgICAgICAg
ICAgICAgcmVzZXRfdXJsID0zRCB1cmxfZm9yKCBjb250cm9sbGVyPTNEJ3VzZXInLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0zRCJjaGFuZ2VfcGFzc3dv
cmQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuPTNEcHJ0
LnRva2VuLCBxdWFsaWZpZWQ9M0RUcnU9CmUpCisgICAgICAgICAgICAgICAgYm9keSA9M0QgUEFT
U1dPUkRfUkVTRVRfVEVNUExBVEUgJSAoIGhvc3QsIHJlc2V0X3VybCwgcmVzZT0KdF91cmwgKQor
ICAgICAgICAgICAgICAgIGZybSA9M0QgJ2dhbGF4eS1uby1yZXBseUAnICsgaG9zdAorICAgICAg
ICAgICAgICAgIHN1YmplY3QgPTNEICdHYWxheHkgUGFzc3dvcmQgUmVzZXQnCisgICAgICAgICAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB1dGlsLnNlbmRfbWFpbCggZnJtLCBlbWFp
bCwgc3ViamVjdCwgYm9keSwgdHJhbnMuYXBwLmM9Cm9uZmlnICkKKyAgICAgICAgICAgICAgICAg
ICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIHJlc2V0X3VzZXIgKQorICAgICAgICAgICAgICAgICAg
ICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKKyAgICAgICAgICAgICAgICAgICAgdHJhbnMubG9n
X2V2ZW50KCAiVXNlciByZXNldCBwYXNzd29yZDogJXMiICUgZW1haWwgKQorICAgICAgICAgICAg
ICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6CiAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyA9M0Qg
J2Vycm9yJwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHBydCA9
M0QgbW9kZWwuUGFzc3dvcmRSZXNldFRva2VuKCByZXNldF91c2VyICkKLSAgICAgICAgICAgICAg
ICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIHBydCApCi0gICAgICAgICAgICAgICAgICAgIHRy
YW5zLnNhX3Nlc3Npb24uZmx1c2goKQotICAgICAgICAgICAgICAgICAgICBob3N0ID0zRCB0cmFu
cy5yZXF1ZXN0Lmhvc3Quc3BsaXQoICc6JyApWyAwIF0KLSAgICAgICAgICAgICAgICAgICAgaWYg
aG9zdCA9M0Q9M0QgJ2xvY2FsaG9zdCc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBob3N0ID0z
RCBzb2NrZXQuZ2V0ZnFkbigpCi0gICAgICAgICAgICAgICAgICAgIHJlc2V0X3VybCA9M0QgdXJs
X2ZvciggY29udHJvbGxlcj0zRCd1c2VyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uPTNEImNoYW5nZV9wYXNzd29yZCIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuPTNEcHJ0LnRva2VuLCBxdWFsaWZpZWQ9M0RU
cj0KdWUpCi0gICAgICAgICAgICAgICAgICAgIGJvZHkgPTNEIFBBU1NXT1JEX1JFU0VUX1RFTVBM
QVRFICUgKCBob3N0LCByZXNldF91cmwsID0KcmVzZXRfdXJsICkKLSAgICAgICAgICAgICAgICAg
ICAgZnJtID0zRCAnZ2FsYXh5LW5vLXJlcGx5QCcgKyBob3N0Ci0gICAgICAgICAgICAgICAgICAg
IHN1YmplY3QgPTNEICdHYWxheHkgUGFzc3dvcmQgUmVzZXQnCi0gICAgICAgICAgICAgICAgICAg
IHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuc2VuZF9tYWlsKCBmcm0sIGVtYWls
LCBzdWJqZWN0LCBib2R5LCB0cmFucy5hPQpwcC5jb25maWcgKQotICAgICAgICAgICAgICAgICAg
ICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIHJlc2V0X3VzZXIgKQotICAgICAgICAgICAgICAg
ICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCi0gICAgICAgICAgICAgICAgICAgICAg
ICB0cmFucy5sb2dfZXZlbnQoICJVc2VyIHJlc2V0IHBhc3N3b3JkOiAlcyIgJSBlbWFpbD0KICkK
LSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHN0YXR1cyA9M0QgJ2Vycm9yJwotICAgICAgICAgICAgICAgICAgICAgICAgbWVz
c2FnZSA9M0QgJ0ZhaWxlZCB0byByZXNldCBwYXNzd29yZDogJXMnICUgc3RyKCA9CmUgKQotICAg
ICAgICAgICAgICAgICAgICAgICAgbG9nLmV4Y2VwdGlvbiggJ1VuYWJsZSB0byByZXNldCBwYXNz
d29yZC4nICkKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9M0QgJ0ZhaWxlZCB0byByZXNl
dCBwYXNzd29yZDogJXMnICUgc3RyKCBlICkKKyAgICAgICAgICAgICAgICAgICAgbG9nLmV4Y2Vw
dGlvbiggJ1VuYWJsZSB0byByZXNldCBwYXNzd29yZC4nICkKICAgICAgICAgcmV0dXJuIHRyYW5z
LmZpbGxfdGVtcGxhdGUoICcvdXNlci9yZXNldF9wYXNzd29yZC5tYWtvJywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9M0RtZXNzYWdlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTNEc3RhdHVzICkKCmRpZmYgLXIgYTI1Y2U2
M2NkY2YwN2NiMmQyMGZmMzQ3YmY0MmU4NmY0ZmQ0ZjIxYiAtciAzYmJlYTRmZmY5ZjIyYWYwNTY1
ZTEzNj0KZGJhNjU5OTI0MDNjMGE5YTUgbGliL2dhbGF4eS93ZWJhcHBzL3Rvb2xfc2hlZC9tb2Rl
bC9fX2luaXRfXy5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvdG9vbF9zaGVkL21vZGVsL19f
aW5pdF9fLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy90b29sX3NoZWQvbW9kZWwvX19pbml0
X18ucHkKQEAgLTEsNyArMSw5IEBACiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9wZXJhdG9yCiBp
bXBvcnQgb3MKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKIGZyb20g
Z2FsYXh5IGltcG9ydCB1dGlsCitmcm9tIGdhbGF4eS51dGlsIGltcG9ydCB1bmlxdWVfaWQKIGZy
b20gZ2FsYXh5LnV0aWwuYnVuY2ggaW1wb3J0IEJ1bmNoCiBmcm9tIGdhbGF4eS51dGlsLmhhc2hf
dXRpbCBpbXBvcnQgbmV3X3NlY3VyZV9oYXNoCiBmcm9tIGdhbGF4eS5tb2RlbC5pdGVtX2F0dHJz
IGltcG9ydCBEaWN0aWZpYWJsZQpAQCAtNjEsNiArNjMsMTYgQEAKICAgICAgICAgc2VsZi5wYXNz
d29yZCA9M0QgbmV3X3NlY3VyZV9oYXNoKCB0ZXh0X3R5cGU9M0RjbGVhcnRleHQgKQo9MjAKPTIw
CitjbGFzcyBQYXNzd29yZFJlc2V0VG9rZW4oIG9iamVjdCApOgorICAgIGRlZiBfX2luaXRfXygg
c2VsZiwgdXNlciwgdG9rZW49M0ROb25lKToKKyAgICAgICAgaWYgdG9rZW46CisgICAgICAgICAg
ICBzZWxmLnRva2VuID0zRCB0b2tlbgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi50
b2tlbiA9M0QgdW5pcXVlX2lkKCkKKyAgICAgICAgc2VsZi51c2VyID0zRCB1c2VyCisgICAgICAg
IHNlbGYuZXhwaXJhdGlvbl90aW1lID0zRCBkYXRldGltZS5ub3coKSArIHRpbWVkZWx0YShob3Vy
cz0zRDI0KQorCisKIGNsYXNzIEdyb3VwKCBvYmplY3QsIERpY3RpZmlhYmxlICk6CiAgICAgZGlj
dF9jb2xsZWN0aW9uX3Zpc2libGVfa2V5cyA9M0QgKCAnaWQnLCAnbmFtZScgKQogICAgIGRpY3Rf
ZWxlbWVudF92aXNpYmxlX2tleXMgPTNEICggJ2lkJywgJ25hbWUnICkKQEAgLTg1LDcgKzk3LDcg
QEAKICAgICAgICAgc2VsZi5kZXNjcmlwdGlvbiA9M0QgZGVzY3JpcHRpb24KICAgICAgICAgc2Vs
Zi50eXBlID0zRCB0eXBlCiAgICAgICAgIHNlbGYuZGVsZXRlZCA9M0QgZGVsZXRlZAotICAgPTIw
CisKICAgICBAcHJvcGVydHkKICAgICBkZWYgaXNfcmVwb3NpdG9yeV9hZG1pbl9yb2xlKCBzZWxm
ICk6CiAgICAgICAgICMgQSByZXBvc2l0b3J5IGFkbWluIHJvbGUgbXVzdCBhbHdheXMgYmUgYXNz
b2NpYXRlZCB3aXRoIGEgcmVwb3NpdD0Kb3J5LiBUaGUgbWFwcGVyIHJldHVybnMgYW4KCmRpZmYg
LXIgYTI1Y2U2M2NkY2YwN2NiMmQyMGZmMzQ3YmY0MmU4NmY0ZmQ0ZjIxYiAtciAzYmJlYTRmZmY5
ZjIyYWYwNTY1ZTEzNj0KZGJhNjU5OTI0MDNjMGE5YTUgbGliL2dhbGF4eS93ZWJhcHBzL3Rvb2xf
c2hlZC9tb2RlbC9tYXBwaW5nLnB5Ci0tLSBhL2xpYi9nYWxheHkvd2ViYXBwcy90b29sX3NoZWQv
bW9kZWwvbWFwcGluZy5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvdG9vbF9zaGVkL21vZGVs
L21hcHBpbmcucHkKQEAgLTM3LDYgKzM3LDExIEBACiAgICAgQ29sdW1uKCAiZGVsZXRlZCIsIEJv
b2xlYW4sIGluZGV4PTNEVHJ1ZSwgZGVmYXVsdD0zREZhbHNlICksCiAgICAgQ29sdW1uKCAicHVy
Z2VkIiwgQm9vbGVhbiwgaW5kZXg9M0RUcnVlLCBkZWZhdWx0PTNERmFsc2UgKSApCj0yMAorUGFz
c3dvcmRSZXNldFRva2VuLnRhYmxlID0zRCBUYWJsZSgicGFzc3dvcmRfcmVzZXRfdG9rZW4iLCBt
ZXRhZGF0YSwKKyAgICBDb2x1bW4oICJ0b2tlbiIsIFN0cmluZyggMzIgKSwgcHJpbWFyeV9rZXk9
M0RUcnVlLCB1bmlxdWU9M0RUcnVlLCBpbmRlPQp4PTNEVHJ1ZSApLAorICAgIENvbHVtbiggImV4
cGlyYXRpb25fdGltZSIsIERhdGVUaW1lICksCisgICAgQ29sdW1uKCAidXNlcl9pZCIsIEludGVn
ZXIsIEZvcmVpZ25LZXkoICJnYWxheHlfdXNlci5pZCIgKSwgaW5kZXg9M0RUcj0KdWUgKSApCisK
IEdyb3VwLnRhYmxlID0zRCBUYWJsZSggImdhbGF4eV9ncm91cCIsIG1ldGFkYXRhLAogICAgIENv
bHVtbiggImlkIiwgSW50ZWdlciwgcHJpbWFyeV9rZXk9M0RUcnVlICksCiAgICAgQ29sdW1uKCAi
Y3JlYXRlX3RpbWUiLCBEYXRlVGltZSwgZGVmYXVsdD0zRG5vdyApLApAQCAtMjA0LDYgKzIwOSw5
IEBACiAgICAgICAgICAgICAgICAgICAgICBnYWxheHlfc2Vzc2lvbnM9M0RyZWxhdGlvbiggR2Fs
YXh5U2Vzc2lvbiwgb3JkZXJfYnk9Cj0zRGRlc2MoIEdhbGF4eVNlc3Npb24udGFibGUuYy51cGRh
dGVfdGltZSApICksCiAgICAgICAgICAgICAgICAgICAgICBhcGlfa2V5cz0zRHJlbGF0aW9uKCBB
UElLZXlzLCBiYWNrcmVmPTNEInVzZXIiLCBvcmRlcj0KX2J5PTNEZGVzYyggQVBJS2V5cy50YWJs
ZS5jLmNyZWF0ZV90aW1lICkgKSApICkKPTIwCittYXBwZXIoIFBhc3N3b3JkUmVzZXRUb2tlbiwg
UGFzc3dvcmRSZXNldFRva2VuLnRhYmxlLAorICAgICAgICBwcm9wZXJ0aWVzPTNEZGljdCggdXNl
cj0zRHJlbGF0aW9uKCBVc2VyLCBiYWNrcmVmPTNEInJlc2V0X3Rva2VucyI9CikgKSApCisKIG1h
cHBlciggQVBJS2V5cywgQVBJS2V5cy50YWJsZSwKICAgICBwcm9wZXJ0aWVzID0zRCB7fSApCj0y
MAoKZGlmZiAtciBhMjVjZTYzY2RjZjA3Y2IyZDIwZmYzNDdiZjQyZTg2ZjRmZDRmMjFiIC1yIDNi
YmVhNGZmZjlmMjJhZjA1NjVlMTM2PQpkYmE2NTk5MjQwM2MwYTlhNSBsaWIvZ2FsYXh5L3dlYmFw
cHMvdG9vbF9zaGVkL21vZGVsL21pZ3JhdGUvdmVyc2lvbnMvMDAyNF89CnBhc3N3b3JkX3Jlc2V0
LnB5Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL3Rvb2xfc2hlZC9tb2Rl
bC9taWdyYXRlL3ZlcnNpb25zLzAwMjRfcGFzc3dvcmRfcmVzPQpldC5weQpAQCAtMCwwICsxLDQz
IEBACisiIiIKK01pZ3JhdGlvbiBzY3JpcHQgZm9yIHRoZSBwYXNzd29yZCByZXNldCB0YWJsZQor
IiIiCisKK2Zyb20gc3FsYWxjaGVteSBpbXBvcnQgKgorZnJvbSBzcWxhbGNoZW15Lm9ybSBpbXBv
cnQgKgorZnJvbSBtaWdyYXRlIGltcG9ydCAqCitmcm9tIG1pZ3JhdGUuY2hhbmdlc2V0IGltcG9y
dCAqCitmcm9tIGdhbGF4eS5tb2RlbC5jdXN0b21fdHlwZXMgaW1wb3J0ICoKKworaW1wb3J0IGRh
dGV0aW1lCitub3cgPTNEIGRhdGV0aW1lLmRhdGV0aW1lLnV0Y25vdworCitpbXBvcnQgbG9nZ2lu
ZworbG9nID0zRCBsb2dnaW5nLmdldExvZ2dlciggX19uYW1lX18gKQorCittZXRhZGF0YSA9M0Qg
TWV0YURhdGEoKQorCitQYXNzd29yZFJlc2V0VG9rZW5fdGFibGUgPTNEIFRhYmxlKCJwYXNzd29y
ZF9yZXNldF90b2tlbiIsIG1ldGFkYXRhLAorICAgIENvbHVtbiggInRva2VuIiwgU3RyaW5nKCAz
MiApLCBwcmltYXJ5X2tleT0zRFRydWUsIHVuaXF1ZT0zRFRydWUsIGluZGU9Cng9M0RUcnVlICks
CisgICAgQ29sdW1uKCAiZXhwaXJhdGlvbl90aW1lIiwgRGF0ZVRpbWUgKSwKKyAgICBDb2x1bW4o
ICJ1c2VyX2lkIiwgSW50ZWdlciwgRm9yZWlnbktleSggImdhbGF4eV91c2VyLmlkIiApLCBpbmRl
eD0zRFRyPQp1ZSApKQorCisKK2RlZiB1cGdyYWRlKG1pZ3JhdGVfZW5naW5lKToKKyAgICBtZXRh
ZGF0YS5iaW5kID0zRCBtaWdyYXRlX2VuZ2luZQorICAgIHByaW50IF9fZG9jX18KKyAgICBtZXRh
ZGF0YS5yZWZsZWN0KCkKKyAgICB0cnk6CisgICAgICAgIFBhc3N3b3JkUmVzZXRUb2tlbl90YWJs
ZS5jcmVhdGUoKQorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgcHJpbnQgc3Ry
KGUpCisgICAgICAgIGxvZy5leGNlcHRpb24oIkNyZWF0aW5nICVzIHRhYmxlIGZhaWxlZDogJXMi
ICUgKFBhc3N3b3JkUmVzZXRUb2tlbj0KX3RhYmxlLm5hbWUsIHN0ciggZSApICkgKQorCisKK2Rl
ZiBkb3duZ3JhZGUobWlncmF0ZV9lbmdpbmUpOgorICAgIG1ldGFkYXRhLmJpbmQgPTNEIG1pZ3Jh
dGVfZW5naW5lCisgICAgbWV0YWRhdGEucmVmbGVjdCgpCisgICAgdHJ5OgorICAgICAgICBQYXNz
d29yZFJlc2V0VG9rZW5fdGFibGUuZHJvcCgpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgor
ICAgICAgICBwcmludCBzdHIoZSkKKyAgICAgICAgbG9nLmV4Y2VwdGlvbigiRHJvcHBpbmcgJXMg
dGFibGUgZmFpbGVkOiAlcyIgJSAoUGFzc3dvcmRSZXNldFRva2VuPQpfdGFibGUubmFtZSwgc3Ry
KCBlICkgKSApCgpkaWZmIC1yIGEyNWNlNjNjZGNmMDdjYjJkMjBmZjM0N2JmNDJlODZmNGZkNGYy
MWIgLXIgM2JiZWE0ZmZmOWYyMmFmMDU2NWUxMzY9CmRiYTY1OTkyNDAzYzBhOWE1IHN0YXRpYy9z
Y3JpcHRzL212Yy90b29scy90b29scy1mb3JtLWJhc2UuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMv
bXZjL3Rvb2xzL3Rvb2xzLWZvcm0tYmFzZS5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9tdmMvdG9v
bHMvdG9vbHMtZm9ybS1iYXNlLmpzCkBAIC0xMTEsNyArMTExLDcgQEAKICAgICAgICAgICAgIHRo
aXMudHJlZS5maW5hbGl6ZSgpOwogICAgICAgICAgICA9MjAKICAgICAgICAgICAgIC8vIHNob3cg
ZXJyb3JzCi0gICAgICAgICAgICBpZiAoIXRoaXMud29ya2Zsb3cgJiYgb3B0aW9ucy5lcnJvcnMp
IHsKKyAgICAgICAgICAgIGlmIChvcHRpb25zLmVycm9ycykgewogICAgICAgICAgICAgICAgIHZh
ciBlcnJvcl9tZXNzYWdlcyA9M0QgdGhpcy50cmVlLm1hdGNoUmVzcG9uc2Uob3B0aW9ucy5lcnI9
Cm9ycyk7CiAgICAgICAgICAgICAgICAgZm9yICh2YXIgaW5wdXRfaWQgaW4gZXJyb3JfbWVzc2Fn
ZXMpIHsKICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHQoaW5wdXRfaWQsIGVycm9y
X21lc3NhZ2VzW2lucHV0X2lkXSwgdHJ1PQplKTsKQEAgLTEzMSw2ICsxMzEsOSBAQAogICAgICAg
ICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRfbGlzdFtpXS5yZXNldCgpOwogICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIH0pOworICAgICAgICAgICA9MjAKKyAgICAgICAgICAgIC8vIHJl
ZnJlc2gKKyAgICAgICAgICAgIHRoaXMudHJpZ2dlcigncmVmcmVzaCcpOwogICAgICAgICB9LAo9
MjAKICAgICAgICAgLyoqIFJlbmRlcnMgdGhlIFVJIGVsZW1lbnRzIHJlcXVpcmVkIGZvciB0aGUg
Zm9ybQpAQCAtMTQ1LDcgKzE0OCw3IEBACiAgICAgICAgICAgICAvLyBidXR0b24gZm9yIHZlcnNp
b24gc2VsZWN0aW9uCiAgICAgICAgICAgICB2YXIgcmVxdWlyZW1lbnRzX2J1dHRvbiA9M0QgbmV3
IFVpLkJ1dHRvbkljb24oewogICAgICAgICAgICAgICAgIGljb24gICAgOiAnZmEtaW5mby1jaXJj
bGUnLAotICAgICAgICAgICAgICAgIHRpdGxlICAgOiAnUmVxdWlyZW1lbnRzJywKKyAgICAgICAg
ICAgICAgICB0aXRsZSAgIDogKCF0aGlzLndvcmtmbG93ICYmICdSZXF1aXJlbWVudHMnKSB8fCBu
dWxsLAogICAgICAgICAgICAgICAgIHRvb2x0aXAgOiAnRGlzcGxheSB0b29sIHJlcXVpcmVtZW50
cycsCiAgICAgICAgICAgICAgICAgb25jbGljayA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
ICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkgewpAQCAtMTcwLDcgKzE3Myw3IEBACiAgICAgICAg
ICAgICAvLyBidXR0b24gZm9yIHZlcnNpb24gc2VsZWN0aW9uCiAgICAgICAgICAgICB2YXIgdmVy
c2lvbnNfYnV0dG9uID0zRCBuZXcgVWkuQnV0dG9uTWVudSh7CiAgICAgICAgICAgICAgICAgaWNv
biAgICA6ICdmYS1jdWJlcycsCi0gICAgICAgICAgICAgICAgdGl0bGUgICA6ICdWZXJzaW9ucycs
CisgICAgICAgICAgICAgICAgdGl0bGUgICA6ICghdGhpcy53b3JrZmxvdyAmJiAnVmVyc2lvbnMn
KSB8fCBudWxsLAogICAgICAgICAgICAgICAgIHRvb2x0aXAgOiAnU2VsZWN0IGFub3RoZXIgdG9v
bCB2ZXJzaW9uJwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJz
aW9ucyAmJiBvcHRpb25zLnZlcnNpb25zLmxlbmd0aCA+IDEpIHsKQEAgLTIwMCw3ICsyMDMsNyBA
QAogICAgICAgICAgICAgLy8gYnV0dG9uIG1lbnUKICAgICAgICAgICAgIHZhciBtZW51X2J1dHRv
biA9M0QgbmV3IFVpLkJ1dHRvbk1lbnUoewogICAgICAgICAgICAgICAgIGljb24gICAgOiAnZmEt
Y2FyZXQtZG93bicsCi0gICAgICAgICAgICAgICAgdGl0bGUgICA6ICdPcHRpb25zJywKKyAgICAg
ICAgICAgICAgICB0aXRsZSAgIDogKCF0aGlzLndvcmtmbG93ICYmICdPcHRpb25zJykgfHwgbnVs
bCwKICAgICAgICAgICAgICAgICB0b29sdGlwIDogJ1ZpZXcgYXZhaWxhYmxlIG9wdGlvbnMnCiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgPTIwCgpkaWZmIC1yIGEyNWNlNjNjZGNmMDdjYjJk
MjBmZjM0N2JmNDJlODZmNGZkNGYyMWIgLXIgM2JiZWE0ZmZmOWYyMmFmMDU2NWUxMzY9CmRiYTY1
OTkyNDAzYzBhOWE1IHN0YXRpYy9zY3JpcHRzL212Yy90b29scy90b29scy1mb3JtLXdvcmtmbG93
LmpzCi0tLSBhL3N0YXRpYy9zY3JpcHRzL212Yy90b29scy90b29scy1mb3JtLXdvcmtmbG93Lmpz
CisrKyBiL3N0YXRpYy9zY3JpcHRzL212Yy90b29scy90b29scy1mb3JtLXdvcmtmbG93LmpzCkBA
IC05LDYgKzksNyBAQAogICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbihvcHRpb25zKSB7CiAg
ICAgICAgICAgICAvLyBsaW5rIHdpdGggbm9kZSByZXByZXNlbnRhdGlvbiBpbiB3b3JrZmxvdyBt
b2R1bGUKICAgICAgICAgICAgIHRoaXMubm9kZSA9M0Qgd29ya2Zsb3cuYWN0aXZlX25vZGU7CisK
ICAgICAgICAgICAgIGlmICghdGhpcy5ub2RlKSB7CiAgICAgICAgICAgICAgICAgY29uc29sZS5k
ZWJ1ZygnRkFJTEVEIC0gdG9vbHMtZm9ybS13b3JrZmxvdzppbml0aWFsaXplKCkgLT0KIE5vZGUg
bm90IGZvdW5kIGluIHdvcmtmbG93LicpOwogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4
LDYgKzE5LDIyIEBACiAgICAgICAgICAgICB0aGlzLndvcmtmbG93ID0zRCB0cnVlOwogICAgICAg
ICAgICAgdGhpcy5vcHRpb25zID0zRCBvcHRpb25zOwo9MjAKKyAgICAgICAgICAgIC8vIGRlY2xh
cmUgZmllbGRzIGFzIG9wdGlvbmFsCisgICAgICAgICAgICBVdGlscy5kZWVwZWFjaChvcHRpb25z
LmlucHV0cywgZnVuY3Rpb24oaXRlbSkgeworICAgICAgICAgICAgICAgIGlmIChpdGVtLnR5cGUp
IHsKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5vcHRpb25hbCA9M0QgKFsnZGF0YScsICdkYXRh
X2hpZGRlbicsICdoaWRkZW4nLCAnPQpkcmlsbF9kb3duJ10pLmluZGV4T2YoaXRlbS50eXBlKSA9
M0Q9M0QgLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICA9MjAK
KyAgICAgICAgICAgIC8vIGRlY2xhcmUgY29uZGl0aW9uYWwgZmllbGRzIGFzIG5vdCBvcHRpb25h
bAorICAgICAgICAgICAgVXRpbHMuZGVlcGVhY2gob3B0aW9ucy5pbnB1dHMsIGZ1bmN0aW9uKGl0
ZW0pIHsKKyAgICAgICAgICAgICAgICBpZiAoaXRlbS50eXBlKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChpdGVtLnR5cGUgPTNEPTNEICdjb25kaXRpb25hbCcpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGl0ZW0udGVzdF9wYXJhbS5vcHRpb25hbCA9M0QgZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKwogICAgICAg
ICAgICAgLy8gbG9hZCBleHRlbnNpb24KICAgICAgICAgICAgIHZhciBzZWxmID0zRCB0aGlzOwog
ICAgICAgICAgICAgVXRpbHMuZ2V0KHsKQEAgLTM4LDYgKzU1LDcgQEAKICAgICAgICAgICAgIGlu
cHV0c1tVdGlscy51dWlkKCldID0zRCB7CiAgICAgICAgICAgICAgICAgbGFiZWwgICA6ICdFZGl0
IFN0ZXAgQXR0cmlidXRlcycsCiAgICAgICAgICAgICAgICAgdHlwZSAgICA6ICdzZWN0aW9uJywK
KyAgICAgICAgICAgICAgICBleHBhbmQgIDogdGhpcy5ub2RlLmFubm90YXRpb24sCiAgICAgICAg
ICAgICAgICAgaW5wdXRzICA6IFt7CiAgICAgICAgICAgICAgICAgICAgIGxhYmVsICAgOiAnQW5u
b3RhdGlvbiAvIE5vdGVzJywKICAgICAgICAgICAgICAgICAgICAgbmFtZSAgICA6ICdhbm5vdGF0
aW9uJywKQEAgLTE2MCw3ICsxNzgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgdHlwZSAgICAg
ICAgOiAnYm9vbGVhbicsCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlICAgICAgIDogJ2ZhbHNl
JywKICAgICAgICAgICAgICAgICAgICAgaWdub3JlICAgICAgOiAnZmFsc2UnLAotICAgICAgICAg
ICAgICAgICAgICBoZWxwICAgICAgICA6ICdUaGlzIGFjdGlvbiB3aWxsIHNlbmQgYW4gZW1haWwg
bm90aWZ5aW49CmcgeW91IHdoZW4gdGhlIGpvYiBpcyBkb25lLicKKyAgICAgICAgICAgICAgICAg
ICAgaGVscCAgICAgICAgOiAnVGhpcyBhY3Rpb24gd2lsbCBzZW5kIGFuIGVtYWlsIG5vdGlmeWlu
PQpnIHlvdSB3aGVuIHRoZSBqb2IgaXMgZG9uZS4nLAorICAgICAgICAgICAgICAgICAgICBwYXls
b2FkICAgICA6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICdob3N0JyAgOiB3aW5kb3cubG9j
YXRpb24uaG9zdAorICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSx7CiAg
ICAgICAgICAgICAgICAgICAgIGFjdGlvbiAgICAgIDogJ0RlbGV0ZUludGVybWVkaWF0ZXNBY3Rp
b24nLAogICAgICAgICAgICAgICAgICAgICBsYWJlbCAgICAgICA6ICdEZWxldGUgbm9uLW91dHB1
dHMnLApAQCAtMTczLDMxICsxOTQsNTEgQEAKICAgICAgICAgICAgPTIwCiAgICAgICAgICAgICAv
LyB2aXNpdCBpbnB1dCBub2RlcyBhbmQgZW5yaWNoIGJ5IG5hbWUvdmFsdWUgcGFpcnMgZnJvbSBz
ZXJ2ZT0KciBkYXRhCiAgICAgICAgICAgICB2YXIgc2VsZiA9M0QgdGhpczsKLSAgICAgICAgICAg
IGZ1bmN0aW9uIHZpc2l0IChpbnB1dHMpIHsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGlu
IGlucHV0cykgewotICAgICAgICAgICAgICAgICAgICB2YXIgaW5wdXQgPTNEIGlucHV0c1tpXTsK
KyAgICAgICAgICAgIGZ1bmN0aW9uIHZpc2l0IChoZWFkLCBoZWFkX2xpc3QpIHsKKyAgICAgICAg
ICAgICAgICBoZWFkX2xpc3QgPTNEIGhlYWRfbGlzdCB8fCBbXTsKKyAgICAgICAgICAgICAgICBo
ZWFkX2xpc3QucHVzaChoZWFkKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIGhlYWQu
aW5wdXRzKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9M0QgaGVhZC5pbnB1dHNb
aV07CiAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5hY3Rpb24pIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGNvbnN0cnVjdCBpZGVudGlmaWVyIGFzIGV4cGVjdGVkIGJ5IGJhY2tl
bmQKICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Lm5hbWUgPTNEICdwamFfXycgKyBvdXRw
dXRfaWQgKyAnX18nICsgaW5wdXQuPQphY3Rpb247CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoaW5wdXQuYXJndW1lbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dC5u
YW1lICs9M0QgJ19fJyArIGlucHV0LmFyZ3VtZW50OwogICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICAgICA9MjAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8v
IG1vZGlmeSBuYW1lcyBvZiBwYXlsb2FkIGFyZ3VtZW50cworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGlucHV0LnBheWxvYWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Ig
KHZhciBwX2lkIGluIGlucHV0LnBheWxvYWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHAgPTNEIGlucHV0LnBheWxvYWRbcF9pZF07CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlucHV0LnBheWxvYWRbaW5wdXQubmFtZSArICdfXycgKyBwX2lkXSA9Cj0z
RCBwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgICAgID0yMAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjZXNzL3Zl
cmlmeSBleGlzdGVuY2Ugb2YgdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0z
RCBzZWxmLnBvc3Rfam9iX2FjdGlvbnNbaW5wdXQuYWN0aW9uICsgb3V0PQpwdXRfaWRdOwogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBtYXJrIGFzIGV4cGFuZGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2
YXIgaiBpbiBoZWFkX2xpc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVh
ZF9saXN0W2pdLmV4cGFuZCA9M0QgdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGUgaW5wdXQgZmllbGQgdmFs
dWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuYXJndW1lbnQpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQudmFsdWUgPTNEIGQuYWN0aW9uX2Fy
Z3VtZW50cyAmJiBkLmFjPQp0aW9uX2FyZ3VtZW50c1tpbnB1dC5hcmd1bWVudF0gfHwgaW5wdXQu
dmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5wdXQudmFsdWUgPTNEICd0cnVlJzsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuaW5w
dXRzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaXQoaW5wdXQuaW5wdXRzKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICAvLyBjb250aW51ZSB3aXRoIHN1YiBzZWN0aW9uCisgICAgICAgICAgICAg
ICAgICAgIGlmIChpbnB1dC5pbnB1dHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZpc2l0
KGlucHV0LCBoZWFkX2xpc3Quc2xpY2UoMCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgdmlzaXQoaW5wdXRfY29u
ZmlnLmlucHV0cyk7Ci0gICAgICAgICAgID0yMAorICAgICAgICAgICAgdmlzaXQoaW5wdXRfY29u
ZmlnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgPTIwCiAgICAgICAgICAgICAvLyByZXR1cm4g
ZmluYWwgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgcmV0dXJuIGlucHV0X2NvbmZpZzsKICAg
ICAgICAgfSwKQEAgLTIwNSw2ICsyNDYsMTUgQEAKICAgICAgICAgLyoqIEJ1aWxkcyBhIG5ldyBt
b2RlbCB0aHJvdWdoIGFwaSBjYWxsIGFuZCByZWNyZWF0ZXMgdGhlIGVudGlyZSBmPQpvcm0KICAg
ICAgICAgKi8KICAgICAgICAgX2J1aWxkTW9kZWw6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
R2FsYXh5Lm1vZGFsLnNob3coeworICAgICAgICAgICAgICAgIHRpdGxlICAgOiAnQ29taW5nIHNv
b24uLi4nLAorICAgICAgICAgICAgICAgIGJvZHkgICAgOiAnVGhpcyBmZWF0dXJlIGhhcyBub3Qg
YmVlbiBpbXBsZW1lbnRlZCB5ZXQuJywKKyAgICAgICAgICAgICAgICBidXR0b25zIDogeworICAg
ICAgICAgICAgICAgICAgICAnQ2xvc2UnIDogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBHYWxheHkubW9kYWwuaGlkZSgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CiAgICAgICAgIH0sCiAgICAgICAgPTIwCiAg
ICAgICAgIC8qKiBSZXF1ZXN0IGEgbmV3IG1vZGVsIGZvciBhbiBhbHJlYWR5IGNyZWF0ZWQgdG9v
bCBmb3JtIGFuZCB1cGRhdD0KZXMgdGhlIGZvcm0gaW5wdXRzCkBAIC0yMzEsNyArMjgxLDcgQEAK
ICAgICAgICAgICAgICAgICBkYXRhICAgIDogY3VycmVudF9zdGF0ZSwKICAgICAgICAgICAgICAg
ICBzdWNjZXNzIDogZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgICAgICAgICAgICAvLyB1cGRh
dGUgbm9kZSBpbiB3b3JrZmxvdyBtb2R1bGUKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5ub2Rl
LnVwZGF0ZV9maWVsZF9kYXRhKGRhdGEsIHRydWUpOworICAgICAgICAgICAgICAgICAgICBzZWxm
Lm5vZGUudXBkYXRlX2ZpZWxkX2RhdGEoZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgPTIwCiAg
ICAgICAgICAgICAgICAgICAgIC8vIHByb2Nlc3MgY29tcGxldGVkCiAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuZGVmZXJyZWQuZG9uZShwcm9jZXNzX2lkKTsKCmRpZmYgLXIgYTI1Y2U2M2NkY2Yw
N2NiMmQyMGZmMzQ3YmY0MmU4NmY0ZmQ0ZjIxYiAtciAzYmJlYTRmZmY5ZjIyYWYwNTY1ZTEzNj0K
ZGJhNjU5OTI0MDNjMGE5YTUgc3RhdGljL3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLWlucHV0Lmpz
Ci0tLSBhL3N0YXRpYy9zY3JpcHRzL212Yy90b29scy90b29scy1pbnB1dC5qcworKysgYi9zdGF0
aWMvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtaW5wdXQuanMKQEAgLTEyLDYgKzEyLDcgQEAKICAg
ICAgICAgICAgPTIwCiAgICAgICAgICAgICAvLyBsaW5rIGZpZWxkCiAgICAgICAgICAgICB0aGlz
LmZpZWxkID0zRCBvcHRpb25zLmZpZWxkOworICAgICAgICAgICAgdGhpcy5kZWZhdWx0dmFsdWUg
PTNEIG9wdGlvbnMuZGVmYXVsdHZhbHVlOwogICAgICAgICAgICA9MjAKICAgICAgICAgICAgIC8v
IHNldCBlbGVtZW50CiAgICAgICAgICAgICB0aGlzLnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGUo
b3B0aW9ucykpOwpAQCAtMjUsOCArMjYsMTMgQEAKICAgICAgICAgICAgIC8vIGFkZCBmaWVsZCBl
bGVtZW50CiAgICAgICAgICAgICB0aGlzLiRmaWVsZC5wcmVwZW5kKHRoaXMuZmllbGQuJGVsKTsK
ICAgICAgICAgICAgPTIwCi0gICAgICAgICAgICAvLyBzdGFydCB3aXRoIGVuYWJsZWQgb3B0aW9u
YWwgZmllbGRzCisgICAgICAgICAgICAvLyBkZWNpZGUgd2V0aGVyIHRvIGV4cGFuZCBvciBjb2xs
YXBzZSBvcHRpb25hbCBmaWVsZHMKICAgICAgICAgICAgIHRoaXMuZmllbGQuc2tpcCA9M0QgZmFs
c2U7CisgICAgICAgICAgICB2YXIgdiA9M0QgdGhpcy5maWVsZC52YWx1ZSAmJiB0aGlzLmZpZWxk
LnZhbHVlKCk7CisgICAgICAgICAgICB0aGlzLmZpZWxkLnNraXAgPTNEIEJvb2xlYW4ob3B0aW9u
cy5vcHRpb25hbCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgo
dGhpcy5maWVsZC52YWxpZGF0ZSAmJiAhdGhpcy5maWU9CmxkLnZhbGlkYXRlKCkpIHx8ICF2IHx8
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHYgPTNEPTNEIHRoaXMu
ZGVmYXVsdHZhbHVlKSB8fCAoTj0KdW1iZXIodikgPTNEPTNEIE51bWJlcih0aGlzLmRlZmF1bHR2
YWx1ZSkpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEpTT04u
c3RyaW5naWZ5KHYpID0zRD0zRCBKU09OLnN0cj0KaW5naWZ5KHRoaXMuZGVmYXVsdHZhbHVlKSkp
KTsKICAgICAgICAgICAgPTIwCiAgICAgICAgICAgICAvLyByZWZyZXNoIHZpZXcKICAgICAgICAg
ICAgIHRoaXMuX3JlZnJlc2goKTsKQEAgLTYzLDExICs2OSwxMiBAQAogICAgICAgICAgICAgaWYg
KCF0aGlzLmZpZWxkLnNraXApIHsKICAgICAgICAgICAgICAgICB0aGlzLiRmaWVsZC5mYWRlSW4o
J2Zhc3QnKTsKICAgICAgICAgICAgICAgICB0aGlzLiR0aXRsZV9vcHRpb25hbC5odG1sKCdEaXNh
YmxlJyk7Ci0gICAgICAgICAgICAgICAgdGhpcy5hcHAudHJpZ2dlcigncmVmcmVzaCcpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB0aGlzLiRmaWVsZC5oaWRlKCk7CiAg
ICAgICAgICAgICAgICAgdGhpcy4kdGl0bGVfb3B0aW9uYWwuaHRtbCgnRW5hYmxlJyk7CisgICAg
ICAgICAgICAgICAgdGhpcy5maWVsZC52YWx1ZSAmJiB0aGlzLmZpZWxkLnZhbHVlKHRoaXMuZGVm
YXVsdHZhbHVlKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuYXBwLnRyaWdnZXIo
J3JlZnJlc2gnKTsKICAgICAgICAgfSwKICAgICAgICA9MjAKICAgICAgICAgLyoqIE1haW4gVGVt
cGxhdGUKQEAgLTgyLDcgKzg5LDcgQEAKICAgICAgICAgICAgPTIwCiAgICAgICAgICAgICAvLyBp
cyBvcHRpb25hbAogICAgICAgICAgICAgaWYgKG9wdGlvbnMub3B0aW9uYWwpIHsKLSAgICAgICAg
ICAgICAgICB0bXAgKz0zRCAgICAgICAgICAnT3B0aW9uYWw6ICcgKyBvcHRpb25zLmxhYmVsICsK
KyAgICAgICAgICAgICAgICB0bXAgKz0zRCAgICAgICAgICBvcHRpb25zLmxhYmVsICsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuPiZuYnNwWzxzcGFuIGNsYXNzPTNEInVp
LXRhYmxlLWZvcm0tPQp0aXRsZS1vcHRpb25hbCIvPl08L3NwYW4+JzsKICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgdG1wICs9M0QgICAgICAgICAgb3B0aW9ucy5sYWJlbDsK
CmRpZmYgLXIgYTI1Y2U2M2NkY2YwN2NiMmQyMGZmMzQ3YmY0MmU4NmY0ZmQ0ZjIxYiAtciAzYmJl
YTRmZmY5ZjIyYWYwNTY1ZTEzNj0KZGJhNjU5OTI0MDNjMGE5YTUgc3RhdGljL3NjcmlwdHMvbXZj
L3Rvb2xzL3Rvb2xzLXNlY3Rpb24uanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvbXZjL3Rvb2xzL3Rv
b2xzLXNlY3Rpb24uanMKKysrIGIvc3RhdGljL3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLXNlY3Rp
b24uanMKQEAgLTIzMiw5ICsyMzIsOSBAQAogICAgICAgICAgICA9MjAKICAgICAgICAgICAgIC8v
IGNyZWF0ZSBpbnB1dCBmaWVsZCB3cmFwcGVyCiAgICAgICAgICAgICB2YXIgaW5wdXRfZWxlbWVu
dCA9M0QgbmV3IElucHV0RWxlbWVudCh0aGlzLmFwcCwgewotICAgICAgICAgICAgICAgIGxhYmVs
ICAgICAgIDogaW5wdXRfZGVmLnRpdGxlLAotICAgICAgICAgICAgICAgIGhlbHAgICAgICAgIDog
aW5wdXRfZGVmLmhlbHAsCi0gICAgICAgICAgICAgICAgZmllbGQgICAgICAgOiByZXBlYXQKKyAg
ICAgICAgICAgICAgICBsYWJlbCAgIDogaW5wdXRfZGVmLnRpdGxlLAorICAgICAgICAgICAgICAg
IGhlbHAgICAgOiBpbnB1dF9kZWYuaGVscCwKKyAgICAgICAgICAgICAgICBmaWVsZCAgIDogcmVw
ZWF0CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgPTIwCiAgICAgICAgICAgICAvLyBkaXNw
bGF5cyBhcyBncm91cGVkIHN1YnNlY3Rpb24KQEAgLTI5Miw2ICsyOTIsMTEgQEAKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgPTIwCisgICAgICAgICAgICAv
LyBzaG93IHN1YiBzZWN0aW9uIGlmIHJlcXVlc3RlZAorICAgICAgICAgICAgaWYgKGlucHV0X2Rl
Zi5leHBhbmQpIHsKKyAgICAgICAgICAgICAgICBwb3J0bGV0LiRoZWFkZXIudHJpZ2dlcignY2xp
Y2snKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgPTIwCiAgICAgICAgICAgICAvLyBjcmVh
dGUgdGFibGUgcm93CiAgICAgICAgICAgICB0aGlzLnRhYmxlLmFkZChwb3J0bGV0LiRlbCk7Cj0y
MApAQCAtMzEzLDEwICszMTgsMTEgQEAKICAgICAgICAgICAgPTIwCiAgICAgICAgICAgICAvLyBj
cmVhdGUgaW5wdXQgZmllbGQgd3JhcHBlcgogICAgICAgICAgICAgdmFyIGlucHV0X2VsZW1lbnQg
PTNEIG5ldyBJbnB1dEVsZW1lbnQodGhpcy5hcHAsIHsKLSAgICAgICAgICAgICAgICBsYWJlbCAg
ICAgICA6IGlucHV0X2RlZi5sYWJlbCwKLSAgICAgICAgICAgICAgICBvcHRpb25hbCAgICA6IGlu
cHV0X2RlZi5vcHRpb25hbCwKLSAgICAgICAgICAgICAgICBoZWxwICAgICAgICA6IGlucHV0X2Rl
Zi5oZWxwLAotICAgICAgICAgICAgICAgIGZpZWxkICAgICAgIDogZmllbGQKKyAgICAgICAgICAg
ICAgICBsYWJlbCAgICAgICAgICAgOiBpbnB1dF9kZWYubGFiZWwsCisgICAgICAgICAgICAgICAg
ZGVmYXVsdHZhbHVlICAgIDogaW5wdXRfZGVmLmRlZmF1bHR2YWx1ZSwKKyAgICAgICAgICAgICAg
ICBvcHRpb25hbCAgICAgICAgOiBpbnB1dF9kZWYub3B0aW9uYWwsCisgICAgICAgICAgICAgICAg
aGVscCAgICAgICAgICAgIDogaW5wdXRfZGVmLmhlbHAsCisgICAgICAgICAgICAgICAgZmllbGQg
ICAgICAgICAgIDogZmllbGQKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICA9MjAKICAgICAg
ICAgICAgIC8vIGFkZCB0byBlbGVtZW50IGxpc3QKCmRpZmYgLXIgYTI1Y2U2M2NkY2YwN2NiMmQy
MGZmMzQ3YmY0MmU4NmY0ZmQ0ZjIxYiAtciAzYmJlYTRmZmY5ZjIyYWYwNTY1ZTEzNj0KZGJhNjU5
OTI0MDNjMGE5YTUgc3RhdGljL3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLXRlbXBsYXRlLmpzCi0t
LSBhL3N0YXRpYy9zY3JpcHRzL212Yy90b29scy90b29scy10ZW1wbGF0ZS5qcworKysgYi9zdGF0
aWMvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtdGVtcGxhdGUuanMKQEAgLTQsNyArNCw3IEBACiAv
LyB0b29sIGZvcm0gdGVtcGxhdGVzCiByZXR1cm4gewogICAgIGhlbHA6IGZ1bmN0aW9uKGNvbnRl
bnQpIHsKLSAgICAgICAgcmV0dXJuICAnPGRpdiBjbGFzcz0zRCJ0b29sSGVscCI+JyArCisgICAg
ICAgIHJldHVybiAgJzxkaXYgY2xhc3M9M0QidG9vbEhlbHAiIHN0eWxlPTNEIm92ZXJmbG93OiBh
dXRvOyI+JyArCiAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPTNEInRvb2xIZWxwQm9k
eSI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50ICsKICAgICAgICAgICAgICAg
ICAgICAgJzwvZGl2PicgKwoKZGlmZiAtciBhMjVjZTYzY2RjZjA3Y2IyZDIwZmYzNDdiZjQyZTg2
ZjRmZDRmMjFiIC1yIDNiYmVhNGZmZjlmMjJhZjA1NjVlMTM2PQpkYmE2NTk5MjQwM2MwYTlhNSBz
dGF0aWMvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtdHJlZS5qcwotLS0gYS9zdGF0aWMvc2NyaXB0
cy9tdmMvdG9vbHMvdG9vbHMtdHJlZS5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9tdmMvdG9vbHMv
dG9vbHMtdHJlZS5qcwpAQCAtMTIyLDEzICsxMjIsMjEgQEAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlID0zRCBwYXRjaFtpbnB1dC50eXBlXSh2YWx1ZSk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA9MjAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIGRlZmF1
bHQgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWVsZC5za2lw
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQudmFsaWRh
dGUgJiYgIWZpZWxkLnZhbGlkYXRlKD0KdmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIGhhbmRsZSBzaW1wbGUgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFmaWVsZC5za2lwIHx8IHNlbGYuYXBwLndvcmtmbG93KSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQudmFsaWRhdGUgJiYgIWZpZWxk
LnZhbGlkYXRlKD0KKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlID0zRCBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0Lmlnbm9yZSA9M0Q9
M0Q9M0QgdW5kZWZpbmVkIHw9CnwgKHZhbHVlICYmIGlucHV0Lmlnbm9yZSAhPTNEIHZhbHVlKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0Lmlnbm9yZSA9
M0Q9M0Q9M0QgdW5kZWZpbmVkIHw9CnwgKHZhbHVlICE9M0Q9M0QgbnVsbCAmJiBpbnB1dC5pZ25v
cmUgIT0zRCB2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBhZGQgdmFsdWUgdG8gc3VibWlzc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFkZCAoam9iX2lucHV0X2lkLCBpbnB1dC5pZCwgdmFsdWU9Cik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgPTIwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gYWRkIHBheWxvYWQgdG8gc3VibWlzc2lvbgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5wYXlsb2FkKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHBfaWQgaW4gaW5wdXQu
cGF5bG9hZD0KKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhZGQgKHBfaWQsIGlucHV0LmlkLCBpbnB1dD0KLnBheWxvYWRbcF9pZF0pOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQoKZGlmZiAtciBhMjVjZTYzY2RjZjA3Y2IyZDIwZmYzNDdiZjQyZTg2
ZjRmZDRmMjFiIC1yIDNiYmVhNGZmZjlmMjJhZjA1NjVlMTM2PQpkYmE2NTk5MjQwM2MwYTlhNSBz
dGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3Rvb2xzL3Rvb2xzLWZvcm0tYmFzZS5qcwotLS0gYS9z
dGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3Rvb2xzL3Rvb2xzLWZvcm0tYmFzZS5qcworKysgYi9z
dGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3Rvb2xzL3Rvb2xzLWZvcm0tYmFzZS5qcwpAQCAtMSwx
ICsxLDEgQEAKLWRlZmluZShbInV0aWxzL3V0aWxzIiwidXRpbHMvZGVmZXJyZWQiLCJtdmMvdWkv
dWktcG9ydGxldCIsIm12Yy91aS91aS1taXNjPQoiLCJtdmMvY2l0YXRpb24vY2l0YXRpb24tbW9k
ZWwiLCJtdmMvY2l0YXRpb24vY2l0YXRpb24tdmlldyIsIm12Yy90b29scyIsIm09CnZjL3Rvb2xz
L3Rvb2xzLXRlbXBsYXRlIiwibXZjL3Rvb2xzL3Rvb2xzLWNvbnRlbnQiLCJtdmMvdG9vbHMvdG9v
bHMtc2VjdGlvbj0KIiwibXZjL3Rvb2xzL3Rvb2xzLXRyZWUiXSxmdW5jdGlvbihnLGgsZixrLGks
YSxkLGMsZSxqLGIpe3JldHVybiBCYWNrYm9uZS5WPQppZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1
bmN0aW9uKGwpe2NvbnNvbGUuZGVidWcobCk7dmFyIG09M0RwYXJlbnQuR2FsYXh5O2k9CmYobSYm
bS5tb2RhbCl7dGhpcy5tb2RhbD0zRG0ubW9kYWx9ZWxzZXt0aGlzLm1vZGFsPTNEbmV3IGsuTW9k
YWwuVmlldygpfWlmKD0KbSYmbS5jdXJyVXNlcil7dGhpcy5pc19hZG1pbj0zRG0uY3VyclVzZXIu
Z2V0KCJpc19hZG1pbiIpfWVsc2V7dGhpcy5pc19hZG1pPQpuPTNEZmFsc2V9dGhpcy5vcHRpb25z
PTNEbDt0aGlzLmNvbnRhaW5lcj0zRHRoaXMub3B0aW9ucy5jb250YWluZXJ8fCJib2R5Ijs9CnRo
aXMuZGVmZXJyZWQ9M0RuZXcgaCgpO3RoaXMuc2V0RWxlbWVudCgiPGRpdi8+Iik7JCh0aGlzLmNv
bnRhaW5lcikuYXBwZW5kKD0KdGhpcy4kZWwpO3RoaXMuX2J1aWxkRm9ybSgpfSxyZWNpZXB0OmZ1
bmN0aW9uKGwpeyQodGhpcy5jb250YWluZXIpLmVtcHR5KCk7PQokKHRoaXMuY29udGFpbmVyKS5h
cHBlbmQobCl9LGhpZ2hsaWdodDpmdW5jdGlvbihtLG4sbCl7dmFyIG89M0R0aGlzLmVsZW1lbnQ9
Cl9saXN0W21dO2lmKG8pe28uZXJyb3Iobnx8IlBsZWFzZSB2ZXJpZnkgdGhpcyBwYXJhbWV0ZXIu
Iik7aWYoIWwpeyQodGhpcy5jbz0KbnRhaW5lcikuYW5pbWF0ZSh7c2Nyb2xsVG9wOm8uJGVsLm9m
ZnNldCgpLnRvcC0yMH0sNTAwKX19fSxfYnVpbGRGb3JtOmZ1bmN0PQppb24oKXt2YXIgbD0zRHRo
aXM7dGhpcy5vZmYoInJlZnJlc2giKTt0aGlzLm9mZigicmVzZXQiKTt0aGlzLmZpZWxkX2xpc3Q9
M0Q9Cnt9O3RoaXMuaW5wdXRfbGlzdD0zRHt9O3RoaXMuZWxlbWVudF9saXN0PTNEe307dGhpcy50
cmVlPTNEbmV3IGIodGhpcyk7dGhpcz0KLmNvbnRlbnQ9M0RuZXcgZSh0aGlzKTt2YXIgbj0zRHRo
aXMub3B0aW9uczt0aGlzLl9yZW5kZXJGb3JtKG4pO3RoaXMudHJlZS5mPQppbmFsaXplKCk7aWYo
IXRoaXMud29ya2Zsb3cmJm4uZXJyb3JzKXt2YXIgbz0zRHRoaXMudHJlZS5tYXRjaFJlc3BvbnNl
KG4uZXI9CnJvcnMpO2Zvcih2YXIgbSBpbiBvKXt0aGlzLmhpZ2hsaWdodChtLG9bbV0sdHJ1ZSl9
fXRoaXMub24oInJlZnJlc2giLGZ1bmN0aT0Kb24oKXtsLmRlZmVycmVkLnJlc2V0KCk7bC5kZWZl
cnJlZC5leGVjdXRlKGZ1bmN0aW9uKCl7bC5fdXBkYXRlTW9kZWwoKX0pfSk7PQp0aGlzLm9uKCJy
ZXNldCIsZnVuY3Rpb24oKXtmb3IodmFyIHAgaW4gdGhpcy5lbGVtZW50X2xpc3Qpe3RoaXMuZWxl
bWVudF9saXM9CnRbcF0ucmVzZXQoKX19KX0sX3JlbmRlckZvcm06ZnVuY3Rpb24odSl7dmFyIHQ9
M0R0aGlzO3RoaXMubWVzc2FnZT0zRG5ldyBrLj0KTWVzc2FnZSgpO3ZhciBxPTNEbmV3IGsuQnV0
dG9uSWNvbih7aWNvbjoiZmEtaW5mby1jaXJjbGUiLHRpdGxlOiJSZXF1aXJlbWVuPQp0cyIsdG9v
bHRpcDoiRGlzcGxheSB0b29sIHJlcXVpcmVtZW50cyIsb25jbGljazpmdW5jdGlvbigpe2lmKCF0
aGlzLnZpc2libGU9Cil7dGhpcy52aXNpYmxlPTNEdHJ1ZTt0Lm1lc3NhZ2UudXBkYXRlKHtwZXJz
aXN0ZW50OnRydWUsbWVzc2FnZTpjLnJlcXVpcmVtZT0KbnRzKHUpLHN0YXR1czoiaW5mbyJ9KX1l
bHNle3RoaXMudmlzaWJsZT0zRGZhbHNlO3QubWVzc2FnZS51cGRhdGUoe21lc3NhZ2U6PQoiIn0p
fX19KTtpZighdS5yZXF1aXJlbWVudHN8fHUucmVxdWlyZW1lbnRzLmxlbmd0aD0zRD0zRDApe3Eu
JGVsLmhpZGUoKX12YXI9CiBtPTNEbmV3IGsuQnV0dG9uTWVudSh7aWNvbjoiZmEtY3ViZXMiLHRp
dGxlOiJWZXJzaW9ucyIsdG9vbHRpcDoiU2VsZWN0IGFubz0KdGhlciB0b29sIHZlcnNpb24ifSk7
aWYodS52ZXJzaW9ucyYmdS52ZXJzaW9ucy5sZW5ndGg+MSl7Zm9yKHZhciBvIGluIHUudmVyPQpz
aW9ucyl7dmFyIHI9M0R1LnZlcnNpb25zW29dO2lmKHIhPTNEdS52ZXJzaW9uKXttLmFkZE1lbnUo
e3RpdGxlOiJTd2l0Y2ggdG89CiAiK3IsdmVyc2lvbjpyLGljb246ImZhLWN1YmUiLG9uY2xpY2s6
ZnVuY3Rpb24oKXt1LmlkPTNEdS5pZC5yZXBsYWNlKHUudmVycz0KaW9uLHRoaXMudmVyc2lvbik7
dS52ZXJzaW9uPTNEdGhpcy52ZXJzaW9uO3QuZGVmZXJyZWQucmVzZXQoKTt0LmRlZmVycmVkLmV4
PQplY3V0ZShmdW5jdGlvbigpe3QuX2J1aWxkTW9kZWwoKX0pfX0pfX19ZWxzZXttLiRlbC5oaWRl
KCl9dmFyIHA9M0RuZXcgay5CdXQ9CnRvbk1lbnUoe2ljb246ImZhLWNhcmV0LWRvd24iLHRpdGxl
OiJPcHRpb25zIix0b29sdGlwOiJWaWV3IGF2YWlsYWJsZSBvcHRpbz0KbnMifSk7aWYodS5iaW9z
dGFyX3VybCl7cC5hZGRNZW51KHtpY29uOiJmYS1xdWVzdGlvbi1jaXJjbGUiLHRpdGxlOiJRdWVz
dGlvPQpuPyIsdG9vbHRpcDoiQXNrIGEgcXVlc3Rpb24gYWJvdXQgdGhpcyB0b29sIChCaW9zdGFy
KSIsb25jbGljazpmdW5jdGlvbigpe3c9CmluZG93Lm9wZW4odS5iaW9zdGFyX3VybCsiL3AvbmV3
L3Bvc3QvIil9fSk7cC5hZGRNZW51KHtpY29uOiJmYS1zZWFyY2giLHRpdD0KbGU6IlNlYXJjaCIs
dG9vbHRpcDoiU2VhcmNoIGhlbHAgZm9yIHRoaXMgdG9vbCAoQmlvc3RhcikiLG9uY2xpY2s6ZnVu
Y3Rpb24oPQope3dpbmRvdy5vcGVuKHUuYmlvc3Rhcl91cmwrIi90LyIrdS5pZCsiLyIpfX0pfXAu
YWRkTWVudSh7aWNvbjoiZmEtc2hhcmUiLHQ9Cml0bGU6IlNoYXJlIix0b29sdGlwOiJTaGFyZSB0
aGlzIHRvb2wiLG9uY2xpY2s6ZnVuY3Rpb24oKXtwcm9tcHQoIkNvcHkgdG8gYz0KbGlwYm9hcmQ6
IEN0cmwrQywgRW50ZXIiLHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4rZ2FsYXh5X2NvbmZpZy5yb290
KyJyb290P3RvPQpvbF9pZD0zRCIrdS5pZCl9fSk7aWYodGhpcy5pc19hZG1pbil7cC5hZGRNZW51
KHtpY29uOiJmYS1kb3dubG9hZCIsdGl0bGU6IkQ9Cm93bmxvYWQiLHRvb2x0aXA6IkRvd25sb2Fk
IHRoaXMgdG9vbCIsb25jbGljazpmdW5jdGlvbigpe3dpbmRvdy5sb2NhdGlvbi5ocj0KZWY9M0Rn
YWxheHlfY29uZmlnLnJvb3QrImFwaS90b29scy8iK3UuaWQrIi9kb3dubG9hZCJ9fSl9dGhpcy5z
ZWN0aW9uPTNEbmV3PQogai5WaWV3KHQse2lucHV0czp1LmlucHV0cyxjbHM6InVpLXRhYmxlLXBs
YWluIn0pO2lmKHRoaXMuaW5jb21wYXRpYmxlKXt0aGk9CnMuJGVsLmhpZGUoKTskKCIjdG9vbC1m
b3JtLWNsYXNzaWMiKS5zaG93KCk7cmV0dXJufXRoaXMucG9ydGxldD0zRG5ldyBmLlZpZT0Kdyh7
aWNvbjoiZmEtd3JlbmNoIix0aXRsZToiPGI+Iit1Lm5hbWUrIjwvYj4gIit1LmRlc2NyaXB0aW9u
KyIgKEdhbGF4eSBUb29sPQogVmVyc2lvbiAiK3UudmVyc2lvbisiKSIsY2xzOiJ1aS1wb3J0bGV0
LXNsaW0iLG9wZXJhdGlvbnM6e3JlcXVpcmVtZW50czpxLG09CmVudTpwLHZlcnNpb25zOm19LGJ1
dHRvbnM6dGhpcy5idXR0b25zfSk7aWYodGhpcy5vcHRpb25zLndvcmtmbG93KXt0aGlzLnBvcj0K
dGxldC4kY29udGVudC5jc3MoInBhZGRpbmciLCIwcHgiKX10aGlzLnBvcnRsZXQuYXBwZW5kKHRo
aXMubWVzc2FnZS4kZWwsdHJ1PQplKTt0aGlzLnBvcnRsZXQuYXBwZW5kKHRoaXMuc2VjdGlvbi4k
ZWwpO3RoaXMuJGVsLmVtcHR5KCk7dGhpcy4kZWwuYXBwZW5kKHQ9Cmhpcy5wb3J0bGV0LiRlbCk7
aWYodS5oZWxwIT0zRCIiKXt0aGlzLiRlbC5hcHBlbmQoYy5oZWxwKHUuaGVscCkpfWlmKHUuY2l0
YT0KdGlvbnMpe3ZhciBzPTNEJCgiPGRpdi8+Iik7dmFyIGw9M0RuZXcgaS5Ub29sQ2l0YXRpb25D
b2xsZWN0aW9uKCk7bC50b29sX2lkPQo9M0R1LmlkO3ZhciBuPTNEbmV3IGEuQ2l0YXRpb25MaXN0
Vmlldyh7ZWw6cyxjb2xsZWN0aW9uOmx9KTtuLnJlbmRlcigpO2wuZmU9CnRjaCgpO3RoaXMuJGVs
LmFwcGVuZChzKX1pZih1Lm1lc3NhZ2Upe3RoaXMubWVzc2FnZS51cGRhdGUoe3BlcnNpc3RlbnQ6
dHJ1ZT0KLHN0YXR1czoid2FybmluZyIsbWVzc2FnZTp1Lm1lc3NhZ2V9KX19fSl9KTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkZWZpbmUoWyJ1dGlscy91dGlscyIsInV0aWxzL2RlZmVy
cmVkIiwibXZjL3VpL3VpLXBvcnRsZXQiLCJtdmMvdWkvdWktbWlzYz0KIiwibXZjL2NpdGF0aW9u
L2NpdGF0aW9uLW1vZGVsIiwibXZjL2NpdGF0aW9uL2NpdGF0aW9uLXZpZXciLCJtdmMvdG9vbHMi
LCJtPQp2Yy90b29scy90b29scy10ZW1wbGF0ZSIsIm12Yy90b29scy90b29scy1jb250ZW50Iiwi
bXZjL3Rvb2xzL3Rvb2xzLXNlY3Rpb249CiIsIm12Yy90b29scy90b29scy10cmVlIl0sZnVuY3Rp
b24oZyxoLGYsayxpLGEsZCxjLGUsaixiKXtyZXR1cm4gQmFja2JvbmUuVj0KaWV3LmV4dGVuZCh7
aW5pdGlhbGl6ZTpmdW5jdGlvbihsKXtjb25zb2xlLmRlYnVnKGwpO3ZhciBtPTNEcGFyZW50Lkdh
bGF4eTtpPQpmKG0mJm0ubW9kYWwpe3RoaXMubW9kYWw9M0RtLm1vZGFsfWVsc2V7dGhpcy5tb2Rh
bD0zRG5ldyBrLk1vZGFsLlZpZXcoKX1pZig9Cm0mJm0uY3VyclVzZXIpe3RoaXMuaXNfYWRtaW49
M0RtLmN1cnJVc2VyLmdldCgiaXNfYWRtaW4iKX1lbHNle3RoaXMuaXNfYWRtaT0Kbj0zRGZhbHNl
fXRoaXMub3B0aW9ucz0zRGw7dGhpcy5jb250YWluZXI9M0R0aGlzLm9wdGlvbnMuY29udGFpbmVy
fHwiYm9keSI7PQp0aGlzLmRlZmVycmVkPTNEbmV3IGgoKTt0aGlzLnNldEVsZW1lbnQoIjxkaXYv
PiIpOyQodGhpcy5jb250YWluZXIpLmFwcGVuZCg9CnRoaXMuJGVsKTt0aGlzLl9idWlsZEZvcm0o
KX0scmVjaWVwdDpmdW5jdGlvbihsKXskKHRoaXMuY29udGFpbmVyKS5lbXB0eSgpOz0KJCh0aGlz
LmNvbnRhaW5lcikuYXBwZW5kKGwpfSxoaWdobGlnaHQ6ZnVuY3Rpb24obSxuLGwpe3ZhciBvPTNE
dGhpcy5lbGVtZW50PQpfbGlzdFttXTtpZihvKXtvLmVycm9yKG58fCJQbGVhc2UgdmVyaWZ5IHRo
aXMgcGFyYW1ldGVyLiIpO2lmKCFsKXskKHRoaXMuY289Cm50YWluZXIpLmFuaW1hdGUoe3Njcm9s
bFRvcDpvLiRlbC5vZmZzZXQoKS50b3AtMjB9LDUwMCl9fX0sX2J1aWxkRm9ybTpmdW5jdD0KaW9u
KCl7dmFyIGw9M0R0aGlzO3RoaXMub2ZmKCJyZWZyZXNoIik7dGhpcy5vZmYoInJlc2V0Iik7dGhp
cy5maWVsZF9saXN0PTNEPQp7fTt0aGlzLmlucHV0X2xpc3Q9M0R7fTt0aGlzLmVsZW1lbnRfbGlz
dD0zRHt9O3RoaXMudHJlZT0zRG5ldyBiKHRoaXMpO3RoaXM9Ci5jb250ZW50PTNEbmV3IGUodGhp
cyk7dmFyIG49M0R0aGlzLm9wdGlvbnM7dGhpcy5fcmVuZGVyRm9ybShuKTt0aGlzLnRyZWUuZj0K
aW5hbGl6ZSgpO2lmKG4uZXJyb3JzKXt2YXIgbz0zRHRoaXMudHJlZS5tYXRjaFJlc3BvbnNlKG4u
ZXJyb3JzKTtmb3IodmFyIG0gPQppbiBvKXt0aGlzLmhpZ2hsaWdodChtLG9bbV0sdHJ1ZSl9fXRo
aXMub24oInJlZnJlc2giLGZ1bmN0aW9uKCl7bC5kZWZlcnJlZC49CnJlc2V0KCk7bC5kZWZlcnJl
ZC5leGVjdXRlKGZ1bmN0aW9uKCl7bC5fdXBkYXRlTW9kZWwoKX0pfSk7dGhpcy5vbigicmVzZXQi
LD0KZnVuY3Rpb24oKXtmb3IodmFyIHAgaW4gdGhpcy5lbGVtZW50X2xpc3Qpe3RoaXMuZWxlbWVu
dF9saXN0W3BdLnJlc2V0KCl9fSk7PQp0aGlzLnRyaWdnZXIoInJlZnJlc2giKX0sX3JlbmRlckZv
cm06ZnVuY3Rpb24odSl7dmFyIHQ9M0R0aGlzO3RoaXMubWVzc2FnZT0KPTNEbmV3IGsuTWVzc2Fn
ZSgpO3ZhciBxPTNEbmV3IGsuQnV0dG9uSWNvbih7aWNvbjoiZmEtaW5mby1jaXJjbGUiLHRpdGxl
OighPQp0aGlzLndvcmtmbG93JiYiUmVxdWlyZW1lbnRzIil8fG51bGwsdG9vbHRpcDoiRGlzcGxh
eSB0b29sIHJlcXVpcmVtZW50cyIsb249CmNsaWNrOmZ1bmN0aW9uKCl7aWYoIXRoaXMudmlzaWJs
ZSl7dGhpcy52aXNpYmxlPTNEdHJ1ZTt0Lm1lc3NhZ2UudXBkYXRlKHtwZT0KcnNpc3RlbnQ6dHJ1
ZSxtZXNzYWdlOmMucmVxdWlyZW1lbnRzKHUpLHN0YXR1czoiaW5mbyJ9KX1lbHNle3RoaXMudmlz
aWJsZT0KPTNEZmFsc2U7dC5tZXNzYWdlLnVwZGF0ZSh7bWVzc2FnZToiIn0pfX19KTtpZighdS5y
ZXF1aXJlbWVudHN8fHUucmVxdWlyZW1lPQpudHMubGVuZ3RoPTNEPTNEMCl7cS4kZWwuaGlkZSgp
fXZhciBtPTNEbmV3IGsuQnV0dG9uTWVudSh7aWNvbjoiZmEtY3ViZXMiLHQ9Cml0bGU6KCF0aGlz
LndvcmtmbG93JiYiVmVyc2lvbnMiKXx8bnVsbCx0b29sdGlwOiJTZWxlY3QgYW5vdGhlciB0b29s
IHZlcnNpbz0KbiJ9KTtpZih1LnZlcnNpb25zJiZ1LnZlcnNpb25zLmxlbmd0aD4xKXtmb3IodmFy
IG8gaW4gdS52ZXJzaW9ucyl7dmFyIHI9M0R1PQoudmVyc2lvbnNbb107aWYociE9M0R1LnZlcnNp
b24pe20uYWRkTWVudSh7dGl0bGU6IlN3aXRjaCB0byAiK3IsdmVyc2lvbjpyLGk9CmNvbjoiZmEt
Y3ViZSIsb25jbGljazpmdW5jdGlvbigpe3UuaWQ9M0R1LmlkLnJlcGxhY2UodS52ZXJzaW9uLHRo
aXMudmVyc2lvbj0KKTt1LnZlcnNpb249M0R0aGlzLnZlcnNpb247dC5kZWZlcnJlZC5yZXNldCgp
O3QuZGVmZXJyZWQuZXhlY3V0ZShmdW5jdGlvbigpPQp7dC5fYnVpbGRNb2RlbCgpfSl9fSl9fX1l
bHNle20uJGVsLmhpZGUoKX12YXIgcD0zRG5ldyBrLkJ1dHRvbk1lbnUoe2ljb246ImY9CmEtY2Fy
ZXQtZG93biIsdGl0bGU6KCF0aGlzLndvcmtmbG93JiYiT3B0aW9ucyIpfHxudWxsLHRvb2x0aXA6
IlZpZXcgYXZhaWxhYj0KbGUgb3B0aW9ucyJ9KTtpZih1LmJpb3N0YXJfdXJsKXtwLmFkZE1lbnUo
e2ljb246ImZhLXF1ZXN0aW9uLWNpcmNsZSIsdGl0bGU6PQoiUXVlc3Rpb24/Iix0b29sdGlwOiJB
c2sgYSBxdWVzdGlvbiBhYm91dCB0aGlzIHRvb2wgKEJpb3N0YXIpIixvbmNsaWNrOmZ1bmM9CnRp
b24oKXt3aW5kb3cub3Blbih1LmJpb3N0YXJfdXJsKyIvcC9uZXcvcG9zdC8iKX19KTtwLmFkZE1l
bnUoe2ljb246ImZhLXNlYT0KcmNoIix0aXRsZToiU2VhcmNoIix0b29sdGlwOiJTZWFyY2ggaGVs
cCBmb3IgdGhpcyB0b29sIChCaW9zdGFyKSIsb25jbGljazpmPQp1bmN0aW9uKCl7d2luZG93Lm9w
ZW4odS5iaW9zdGFyX3VybCsiL3QvIit1LmlkKyIvIil9fSl9cC5hZGRNZW51KHtpY29uOiJmYS09
CnNoYXJlIix0aXRsZToiU2hhcmUiLHRvb2x0aXA6IlNoYXJlIHRoaXMgdG9vbCIsb25jbGljazpm
dW5jdGlvbigpe3Byb21wdCgiQz0Kb3B5IHRvIGNsaXBib2FyZDogQ3RybCtDLCBFbnRlciIsd2lu
ZG93LmxvY2F0aW9uLm9yaWdpbitnYWxheHlfY29uZmlnLnJvb3QrPQoicm9vdD90b29sX2lkPTNE
Iit1LmlkKX19KTtpZih0aGlzLmlzX2FkbWluKXtwLmFkZE1lbnUoe2ljb246ImZhLWRvd25sb2Fk
Iiw9CnRpdGxlOiJEb3dubG9hZCIsdG9vbHRpcDoiRG93bmxvYWQgdGhpcyB0b29sIixvbmNsaWNr
OmZ1bmN0aW9uKCl7d2luZG93LmxvYz0KYXRpb24uaHJlZj0zRGdhbGF4eV9jb25maWcucm9vdCsi
YXBpL3Rvb2xzLyIrdS5pZCsiL2Rvd25sb2FkIn19KX10aGlzLnNlY3RpPQpvbj0zRG5ldyBqLlZp
ZXcodCx7aW5wdXRzOnUuaW5wdXRzLGNsczoidWktdGFibGUtcGxhaW4ifSk7aWYodGhpcy5pbmNv
bXBhdGk9CmJsZSl7dGhpcy4kZWwuaGlkZSgpOyQoIiN0b29sLWZvcm0tY2xhc3NpYyIpLnNob3co
KTtyZXR1cm59dGhpcy5wb3J0bGV0PTNEbj0KZXcgZi5WaWV3KHtpY29uOiJmYS13cmVuY2giLHRp
dGxlOiI8Yj4iK3UubmFtZSsiPC9iPiAiK3UuZGVzY3JpcHRpb24rIiAoR2FsPQpheHkgVG9vbCBW
ZXJzaW9uICIrdS52ZXJzaW9uKyIpIixjbHM6InVpLXBvcnRsZXQtc2xpbSIsb3BlcmF0aW9uczp7
cmVxdWlyZW09CmVudHM6cSxtZW51OnAsdmVyc2lvbnM6bX0sYnV0dG9uczp0aGlzLmJ1dHRvbnN9
KTtpZih0aGlzLm9wdGlvbnMud29ya2Zsb3cpez0KdGhpcy5wb3J0bGV0LiRjb250ZW50LmNzcygi
cGFkZGluZyIsIjBweCIpfXRoaXMucG9ydGxldC5hcHBlbmQodGhpcy5tZXNzYWdlPQouJGVsLHRy
dWUpO3RoaXMucG9ydGxldC5hcHBlbmQodGhpcy5zZWN0aW9uLiRlbCk7dGhpcy4kZWwuZW1wdHko
KTt0aGlzLiRlbC49CmFwcGVuZCh0aGlzLnBvcnRsZXQuJGVsKTtpZih1LmhlbHAhPTNEIiIpe3Ro
aXMuJGVsLmFwcGVuZChjLmhlbHAodS5oZWxwKSl9aT0KZih1LmNpdGF0aW9ucyl7dmFyIHM9M0Qk
KCI8ZGl2Lz4iKTt2YXIgbD0zRG5ldyBpLlRvb2xDaXRhdGlvbkNvbGxlY3Rpb24oKTtsPQoudG9v
bF9pZD0zRHUuaWQ7dmFyIG49M0RuZXcgYS5DaXRhdGlvbkxpc3RWaWV3KHtlbDpzLGNvbGxlY3Rp
b246bH0pO24ucmVuZGU9CnIoKTtsLmZldGNoKCk7dGhpcy4kZWwuYXBwZW5kKHMpfWlmKHUubWVz
c2FnZSl7dGhpcy5tZXNzYWdlLnVwZGF0ZSh7cGVyc2lzdD0KZW50OnRydWUsc3RhdHVzOiJ3YXJu
aW5nIixtZXNzYWdlOnUubWVzc2FnZX0pfX19KX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKCmRpZmYgLXIgYTI1Y2U2M2NkY2YwN2NiMmQyMGZmMzQ3YmY0MmU4NmY0ZmQ0ZjIxYiAtciAz
YmJlYTRmZmY5ZjIyYWYwNTY1ZTEzNj0KZGJhNjU5OTI0MDNjMGE5YTUgc3RhdGljL3NjcmlwdHMv
cGFja2VkL212Yy90b29scy90b29scy1mb3JtLXdvcmtmbG93LmpzCi0tLSBhL3N0YXRpYy9zY3Jp
cHRzL3BhY2tlZC9tdmMvdG9vbHMvdG9vbHMtZm9ybS13b3JrZmxvdy5qcworKysgYi9zdGF0aWMv
c2NyaXB0cy9wYWNrZWQvbXZjL3Rvb2xzL3Rvb2xzLWZvcm0td29ya2Zsb3cuanMKQEAgLTEsMSAr
MSwxIEBACi1kZWZpbmUoWyJ1dGlscy91dGlscyIsIm12Yy90b29scy90b29scy1mb3JtLWJhc2Ui
XSxmdW5jdGlvbihiLGEpe3ZhciBjPTNEYT0KLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbihl
KXt0aGlzLm5vZGU9M0R3b3JrZmxvdy5hY3RpdmVfbm9kZTtpZighdGhpcy5uPQpvZGUpe2NvbnNv
bGUuZGVidWcoIkZBSUxFRCAtIHRvb2xzLWZvcm0td29ya2Zsb3c6aW5pdGlhbGl6ZSgpIC0gTm9k
ZSBub3QgZm89CnVuZCBpbiB3b3JrZmxvdy4iKTtyZXR1cm59dGhpcy53b3JrZmxvdz0zRHRydWU7
dGhpcy5vcHRpb25zPTNEZTt2YXIgZD0zRHRoaT0KcztiLmdldCh7dXJsOmdhbGF4eV9jb25maWcu
cm9vdCsiYXBpL2RhdGF0eXBlcyIsY2FjaGU6dHJ1ZSxzdWNjZXNzOmZ1bmN0aW9uPQooZil7ZC5k
YXRhdHlwZXM9M0RmO2QuX21ha2VTZWN0aW9ucyhlLmlucHV0cyk7YS5wcm90b3R5cGUuaW5pdGlh
bGl6ZS5jYWxsKGQ9CixlKX19KX0sX21ha2VTZWN0aW9uczpmdW5jdGlvbihkKXtkW2IudXVpZCgp
XT0zRHtsYWJlbDoiRWRpdCBTdGVwIEF0dHJpYnV0ZT0KcyIsdHlwZToic2VjdGlvbiIsaW5wdXRz
Olt7bGFiZWw6IkFubm90YXRpb24gLyBOb3RlcyIsbmFtZToiYW5ub3RhdGlvbiIsdHlwPQplOiJ0
ZXh0IixhcmVhOnRydWUsaGVscDoiQWRkIGFuIGFubm90YXRpb24gb3Igbm90ZXMgdG8gdGhpcyBz
dGVwOyBhbm5vdGF0aW89Cm5zIGFyZSBhdmFpbGFibGUgd2hlbiBhIHdvcmtmbG93IGlzIHZpZXdl
ZC4iLHZhbHVlOnRoaXMubm9kZS5hbm5vdGF0aW9ufV19Oz0KdGhpcy5wb3N0X2pvYl9hY3Rpb25z
PTNEdGhpcy5ub2RlLnBvc3Rfam9iX2FjdGlvbnM7Zm9yKHZhciBlIGluIHRoaXMubm9kZS5vPQp1
dHB1dF90ZXJtaW5hbHMpe2RbYi51dWlkKCldPTNEdGhpcy5fbWFrZVNlY3Rpb24oZSl9fSxfbWFr
ZVNlY3Rpb246ZnVuY3Rpb249CihoKXt2YXIgZz0zRFtdO2ZvcihrZXkgaW4gdGhpcy5kYXRhdHlw
ZXMpe2cucHVzaCh7MDp0aGlzLmRhdGF0eXBlc1trZXldLDE6dD0KaGlzLmRhdGF0eXBlc1trZXld
fSl9Zy5zb3J0KGZ1bmN0aW9uKGosaSl7cmV0dXJuIGoubGFiZWw+aS5sYWJlbD8xOmoubGFiZWw8
PQppLmxhYmVsPy0xOjB9KTtnLnVuc2hpZnQoezA6IlNlcXVlbmNlcyIsMToiU2VxdWVuY2VzIn0p
O2cudW5zaGlmdCh7MDoiUm9hZG09CmFwcyIsMToiUm9hZG1hcHMifSk7Zy51bnNoaWZ0KHswOiJM
ZWF2ZSB1bmNoYW5nZWQiLDE6Ik5vbmUifSk7dmFyIGY9M0R7bGFiZT0KbDoiRWRpdCBTdGVwIEFj
dGlvbjogJyIraCsiJyIsdHlwZToic2VjdGlvbiIsaW5wdXRzOlt7YWN0aW9uOiJSZW5hbWVEYXRh
c2V0PQpBY3Rpb24iLGFyZ3VtZW50OiJuZXduYW1lIixsYWJlbDoiUmVuYW1lIGRhdGFzZXQiLHR5
cGU6InRleHQiLHZhbHVlOiIiLGlnbm89CnJlOiIiLGhlbHA6J1RoaXMgYWN0aW9uIHdpbGwgcmVu
YW1lIHRoZSByZXN1bHQgZGF0YXNldC4gQ2xpY2sgPGEgaHJlZj0zRCJodD0KdHBzOi8vd2lraS5n
YWxheHlwcm9qZWN0Lm9yZy9MZWFybi9BZHZhbmNlZFdvcmtmbG93L1ZhcmlhYmxlcyI+aGVyZTwv
YT4gZm9yPQogbW9yZSBpbmZvcm1hdGlvbi4nfSx7YWN0aW9uOiJDaGFuZ2VEYXRhdHlwZUFjdGlv
biIsYXJndW1lbnQ6Im5ld3R5cGUiLGxhYmU9Cmw6IkNoYW5nZSBkYXRhdHlwZSIsdHlwZToic2Vs
ZWN0IixpZ25vcmU6Ik5vbmUiLG9wdGlvbnM6ZyxoZWxwOiJUaGlzIGFjdGlvbj0KIHdpbGwgY2hh
bmdlIHRoZSBkYXRhdHlwZSBvZiB0aGUgb3V0cHV0IHRvIHRoZSBpbmRpY2F0ZWQgdmFsdWUuIn0s
e2FjdGlvbjoiPQpUYWdEYXRhc2V0QWN0aW9uIixhcmd1bWVudDoidGFncyIsbGFiZWw6IlRhZ3Mi
LHR5cGU6InRleHQiLHZhbHVlOiIiLGlnbm9yZTo9CiIiLGhlbHA6IlRoaXMgYWN0aW9uIHdpbGwg
c2V0IHRhZ3MgZm9yIHRoZSBkYXRhc2V0LiJ9LHtsYWJlbDoiQXNzaWduIGNvbHVtbj0KcyIsdHlw
ZToic2VjdGlvbiIsaW5wdXRzOlt7YWN0aW9uOiJDb2x1bW5TZXRBY3Rpb24iLGFyZ3VtZW50OiJj
aHJvbUNvbCIsbGFiPQplbDoiQ2hyb20gY29sdW1uIix0eXBlOiJ0ZXh0Iix2YWx1ZToiIixpZ25v
cmU6IiJ9LHthY3Rpb246IkNvbHVtblNldEFjdGlvbiI9Cixhcmd1bWVudDoic3RhcnRDb2wiLGxh
YmVsOiJTdGFydCBjb2x1bW4iLHR5cGU6InRleHQiLHZhbHVlOiIiLGlnbm9yZToiIn0sez0KYWN0
aW9uOiJDb2x1bW5TZXRBY3Rpb24iLGFyZ3VtZW50OiJlbmRDb2wiLGxhYmVsOiJFbmQgY29sdW1u
Iix0eXBlOiJ0ZXh0Iix2PQphbHVlOiIiLGlnbm9yZToiIn0se2FjdGlvbjoiQ29sdW1uU2V0QWN0
aW9uIixhcmd1bWVudDoic3RyYW5kQ29sIixsYWJlbDoiU3Q9CnJhbmQgY29sdW1uIix0eXBlOiJ0
ZXh0Iix2YWx1ZToiIixpZ25vcmU6IiJ9LHthY3Rpb246IkNvbHVtblNldEFjdGlvbiIsYXJndT0K
bWVudDoibmFtZUNvbCIsbGFiZWw6Ik5hbWUgY29sdW1uIix0eXBlOiJ0ZXh0Iix2YWx1ZToiIixp
Z25vcmU6IiJ9XSxoZWxwOiJUPQpoaXMgYWN0aW9uIHdpbGwgc2V0IGNvbHVtbiBhc3NpZ25tZW50
cyBpbiB0aGUgb3V0cHV0IGRhdGFzZXQuIEJsYW5rIGZpZWxkcyA9CmFyZSBpZ25vcmVkLiJ9LHth
Y3Rpb246IkVtYWlsQWN0aW9uIixsYWJlbDoiRW1haWwgbm90aWZpY2F0aW9uIix0eXBlOiJib29s
ZT0KYW4iLHZhbHVlOiJmYWxzZSIsaWdub3JlOiJmYWxzZSIsaGVscDoiVGhpcyBhY3Rpb24gd2ls
bCBzZW5kIGFuIGVtYWlsIG5vdGlmPQp5aW5nIHlvdSB3aGVuIHRoZSBqb2IgaXMgZG9uZS4ifSx7
YWN0aW9uOiJEZWxldGVJbnRlcm1lZGlhdGVzQWN0aW9uIixsYWJlbDo9CiJEZWxldGUgbm9uLW91
dHB1dHMiLHR5cGU6ImJvb2xlYW4iLHZhbHVlOiJmYWxzZSIsaWdub3JlOiJmYWxzZSIsaGVscDoi
QWxsID0Kbm9uLW91dHB1dCBzdGVwcyBvZiB0aGlzIHdvcmtmbG93IHdpbGwgaGF2ZSBkYXRhc2V0
cyBkZWxldGVkIGlmIHRoZXkgYXJlIG5vPQogbG9uZ2VyIGJlaW5nIHVzZWQgYXMgam9iIGlucHV0
cyB3aGVuIHRoZSBqb2IgdGhpcyBhY3Rpb24gaXMgYXR0YWNoZWQgdG8gaXM9CiBmaW5pc2hlZC4g
WW91ICptdXN0KiBiZSB1c2luZyB3b3JrZmxvdyBvdXRwdXRzICh0aGUgc25vd2ZsYWtlKSBpbiB5
b3VyIHdvcj0Ka2Zsb3cgZm9yIHRoaXMgdG8gaGF2ZSBhbnkgZWZmZWN0LiJ9XX07dmFyIGQ9M0R0
aGlzO2Z1bmN0aW9uIGUoail7Zm9yKHZhciBsPQogaW4gail7dmFyIGs9M0RqW2xdO2lmKGsuYWN0
aW9uKXtrLm5hbWU9M0QicGphX18iK2grIl9fIitrLmFjdGlvbjtpZihrLmFyZ3U9Cm1lbnQpe2su
bmFtZSs9M0QiX18iK2suYXJndW1lbnR9dmFyIG09M0RkLnBvc3Rfam9iX2FjdGlvbnNbay5hY3Rp
b24raF07aWYobT0KKXtpZihrLmFyZ3VtZW50KXtrLnZhbHVlPTNEbS5hY3Rpb25fYXJndW1lbnRz
JiZtLmFjdGlvbl9hcmd1bWVudHNbay5hcmd1bWVuPQp0XXx8ay52YWx1ZX1lbHNle2sudmFsdWU9
M0QidHJ1ZSJ9fX1lbHNle2lmKGsuaW5wdXRzKXtlKGsuaW5wdXRzKX19fX1lKGYuaW49CnB1dHMp
O3JldHVybiBmfSxfYnVpbGRNb2RlbDpmdW5jdGlvbigpe30sX3VwZGF0ZU1vZGVsOmZ1bmN0aW9u
KCl7dmFyIGQ9M0R0aD0KaXM7dmFyIGU9M0R0aGlzLnRyZWUuZmluYWxpemUoKTtjb25zb2xlLmRl
YnVnKCJ0b29scy1mb3JtLXdvcmtmbG93OjpfcmVmcmVzPQpoRm9ybSgpIC0gUmVmcmVzaGluZyBz
dGF0ZXMuIik7Y29uc29sZS5kZWJ1ZyhlKTt2YXIgZz0zRHRoaXMuZGVmZXJyZWQucmVnaXM9CnRl
cigpO3ZhciBmPTNEZ2FsYXh5X2NvbmZpZy5yb290KyJ3b3JrZmxvdy9lZGl0b3JfZm9ybV9wb3N0
P3Rvb2xfaWQ9M0QiK3RoaT0Kcy5vcHRpb25zLmlkO2IucmVxdWVzdCh7dHlwZToiR0VUIix1cmw6
ZixkYXRhOmUsc3VjY2VzczpmdW5jdGlvbihoKXtkLm5vZGUuPQp1cGRhdGVfZmllbGRfZGF0YSho
LHRydWUpO2QuZGVmZXJyZWQuZG9uZShnKTtjb25zb2xlLmRlYnVnKCJ0b29scy1mb3JtOjpfcmU9
CmZyZXNoRm9ybSgpIC0gU3RhdGVzIHJlZnJlc2hlZC4iKTtjb25zb2xlLmRlYnVnKGgpfSxlcnJv
cjpmdW5jdGlvbihoKXtkLmRlZj0KZXJyZWQuZG9uZShnKTtjb25zb2xlLmRlYnVnKCJ0b29scy1m
b3JtOjpfcmVmcmVzaEZvcm0oKSAtIFJlZnJlc2ggcmVxdWVzdCBmPQphaWxlZC4iKTtjb25zb2xl
LmRlYnVnKGgpfX0pfX0pO3JldHVybntWaWV3OmN9fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQorZGVmaW5lKFsidXRpbHMvdXRpbHMiLCJtdmMvdG9vbHMvdG9vbHMtZm9ybS1iYXNlIl0s
ZnVuY3Rpb24oYixhKXt2YXIgYz0zRGE9Ci5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oZSl7
dGhpcy5ub2RlPTNEd29ya2Zsb3cuYWN0aXZlX25vZGU7aWYoIXRoaXMubj0Kb2RlKXtjb25zb2xl
LmRlYnVnKCJGQUlMRUQgLSB0b29scy1mb3JtLXdvcmtmbG93OmluaXRpYWxpemUoKSAtIE5vZGUg
bm90IGZvPQp1bmQgaW4gd29ya2Zsb3cuIik7cmV0dXJufXRoaXMud29ya2Zsb3c9M0R0cnVlO3Ro
aXMub3B0aW9ucz0zRGU7Yi5kZWVwZWFjaCg9CmUuaW5wdXRzLGZ1bmN0aW9uKGYpe2lmKGYudHlw
ZSl7Zi5vcHRpb25hbD0zRChbImRhdGEiLCJkYXRhX2hpZGRlbiIsImhpZGRlbj0KIiwiZHJpbGxf
ZG93biJdKS5pbmRleE9mKGYudHlwZSk9M0Q9M0QtMX19KTtiLmRlZXBlYWNoKGUuaW5wdXRzLGZ1
bmN0aW9uKGYpPQp7aWYoZi50eXBlKXtpZihmLnR5cGU9M0Q9M0QiY29uZGl0aW9uYWwiKXtmLnRl
c3RfcGFyYW0ub3B0aW9uYWw9M0RmYWxzZX19fSk9Cjt2YXIgZD0zRHRoaXM7Yi5nZXQoe3VybDpn
YWxheHlfY29uZmlnLnJvb3QrImFwaS9kYXRhdHlwZXMiLGNhY2hlOnRydWUsc3VjYz0KZXNzOmZ1
bmN0aW9uKGYpe2QuZGF0YXR5cGVzPTNEZjtkLl9tYWtlU2VjdGlvbnMoZS5pbnB1dHMpO2EucHJv
dG90eXBlLmluaXRpPQphbGl6ZS5jYWxsKGQsZSl9fSl9LF9tYWtlU2VjdGlvbnM6ZnVuY3Rpb24o
ZCl7ZFtiLnV1aWQoKV09M0R7bGFiZWw6IkVkaXQgU3Q9CmVwIEF0dHJpYnV0ZXMiLHR5cGU6InNl
Y3Rpb24iLGV4cGFuZDp0aGlzLm5vZGUuYW5ub3RhdGlvbixpbnB1dHM6W3tsYWJlbDoiQT0Kbm5v
dGF0aW9uIC8gTm90ZXMiLG5hbWU6ImFubm90YXRpb24iLHR5cGU6InRleHQiLGFyZWE6dHJ1ZSxo
ZWxwOiJBZGQgYW4gYW5uPQpvdGF0aW9uIG9yIG5vdGVzIHRvIHRoaXMgc3RlcDsgYW5ub3RhdGlv
bnMgYXJlIGF2YWlsYWJsZSB3aGVuIGEgd29ya2Zsb3cgaXM9CiB2aWV3ZWQuIix2YWx1ZTp0aGlz
Lm5vZGUuYW5ub3RhdGlvbn1dfTt0aGlzLnBvc3Rfam9iX2FjdGlvbnM9M0R0aGlzLm5vZGUucD0K
b3N0X2pvYl9hY3Rpb25zO2Zvcih2YXIgZSBpbiB0aGlzLm5vZGUub3V0cHV0X3Rlcm1pbmFscyl7
ZFtiLnV1aWQoKV09M0R0aGlzPQouX21ha2VTZWN0aW9uKGUpfX0sX21ha2VTZWN0aW9uOmZ1bmN0
aW9uKGgpe3ZhciBnPTNEW107Zm9yKGtleSBpbiB0aGlzLmRhdGE9CnR5cGVzKXtnLnB1c2goezA6
dGhpcy5kYXRhdHlwZXNba2V5XSwxOnRoaXMuZGF0YXR5cGVzW2tleV19KX1nLnNvcnQoZnVuY3Rp
bz0KbihqLGkpe3JldHVybiBqLmxhYmVsPmkubGFiZWw/MTpqLmxhYmVsPGkubGFiZWw/LTE6MH0p
O2cudW5zaGlmdCh7MDoiU2VxdWVuPQpjZXMiLDE6IlNlcXVlbmNlcyJ9KTtnLnVuc2hpZnQoezA6
IlJvYWRtYXBzIiwxOiJSb2FkbWFwcyJ9KTtnLnVuc2hpZnQoezA6Ikw9CmVhdmUgdW5jaGFuZ2Vk
IiwxOiJOb25lIn0pO3ZhciBmPTNEe2xhYmVsOiJFZGl0IFN0ZXAgQWN0aW9uOiAnIitoKyInIix0
eXBlOj0KInNlY3Rpb24iLGlucHV0czpbe2FjdGlvbjoiUmVuYW1lRGF0YXNldEFjdGlvbiIsYXJn
dW1lbnQ6Im5ld25hbWUiLGxhYmVsOiJSPQplbmFtZSBkYXRhc2V0Iix0eXBlOiJ0ZXh0Iix2YWx1
ZToiIixpZ25vcmU6IiIsaGVscDonVGhpcyBhY3Rpb24gd2lsbCByZW5hbWU9CiB0aGUgcmVzdWx0
IGRhdGFzZXQuIENsaWNrIDxhIGhyZWY9M0QiaHR0cHM6Ly93aWtpLmdhbGF4eXByb2plY3Qub3Jn
L0xlYXJuLz0KQWR2YW5jZWRXb3JrZmxvdy9WYXJpYWJsZXMiPmhlcmU8L2E+IGZvciBtb3JlIGlu
Zm9ybWF0aW9uLid9LHthY3Rpb246IkNoYW5nPQplRGF0YXR5cGVBY3Rpb24iLGFyZ3VtZW50OiJu
ZXd0eXBlIixsYWJlbDoiQ2hhbmdlIGRhdGF0eXBlIix0eXBlOiJzZWxlY3QiLGk9Cmdub3JlOiJO
b25lIixvcHRpb25zOmcsaGVscDoiVGhpcyBhY3Rpb24gd2lsbCBjaGFuZ2UgdGhlIGRhdGF0eXBl
IG9mIHRoZSBvdT0KdHB1dCB0byB0aGUgaW5kaWNhdGVkIHZhbHVlLiJ9LHthY3Rpb246IlRhZ0Rh
dGFzZXRBY3Rpb24iLGFyZ3VtZW50OiJ0YWdzIixsPQphYmVsOiJUYWdzIix0eXBlOiJ0ZXh0Iix2
YWx1ZToiIixpZ25vcmU6IiIsaGVscDoiVGhpcyBhY3Rpb24gd2lsbCBzZXQgdGFncyA9CmZvciB0
aGUgZGF0YXNldC4ifSx7bGFiZWw6IkFzc2lnbiBjb2x1bW5zIix0eXBlOiJzZWN0aW9uIixpbnB1
dHM6W3thY3Rpb246Ij0KQ29sdW1uU2V0QWN0aW9uIixhcmd1bWVudDoiY2hyb21Db2wiLGxhYmVs
OiJDaHJvbSBjb2x1bW4iLHR5cGU6InRleHQiLHZhbHVlPQo6IiIsaWdub3JlOiIifSx7YWN0aW9u
OiJDb2x1bW5TZXRBY3Rpb24iLGFyZ3VtZW50OiJzdGFydENvbCIsbGFiZWw6IlN0YXJ0IGM9Cm9s
dW1uIix0eXBlOiJ0ZXh0Iix2YWx1ZToiIixpZ25vcmU6IiJ9LHthY3Rpb246IkNvbHVtblNldEFj
dGlvbiIsYXJndW1lbnQ6Ij0KZW5kQ29sIixsYWJlbDoiRW5kIGNvbHVtbiIsdHlwZToidGV4dCIs
dmFsdWU6IiIsaWdub3JlOiIifSx7YWN0aW9uOiJDb2x1bW5TPQpldEFjdGlvbiIsYXJndW1lbnQ6
InN0cmFuZENvbCIsbGFiZWw6IlN0cmFuZCBjb2x1bW4iLHR5cGU6InRleHQiLHZhbHVlOiIiLGk9
Cmdub3JlOiIifSx7YWN0aW9uOiJDb2x1bW5TZXRBY3Rpb24iLGFyZ3VtZW50OiJuYW1lQ29sIixs
YWJlbDoiTmFtZSBjb2x1bW4iLD0KdHlwZToidGV4dCIsdmFsdWU6IiIsaWdub3JlOiIifV0saGVs
cDoiVGhpcyBhY3Rpb24gd2lsbCBzZXQgY29sdW1uIGFzc2lnbm1lPQpudHMgaW4gdGhlIG91dHB1
dCBkYXRhc2V0LiBCbGFuayBmaWVsZHMgYXJlIGlnbm9yZWQuIn0se2FjdGlvbjoiRW1haWxBY3Rp
b249CiIsbGFiZWw6IkVtYWlsIG5vdGlmaWNhdGlvbiIsdHlwZToiYm9vbGVhbiIsdmFsdWU6ImZh
bHNlIixpZ25vcmU6ImZhbHNlIixoZT0KbHA6IlRoaXMgYWN0aW9uIHdpbGwgc2VuZCBhbiBlbWFp
bCBub3RpZnlpbmcgeW91IHdoZW4gdGhlIGpvYiBpcyBkb25lLiIscGF5PQpsb2FkOntob3N0Ondp
bmRvdy5sb2NhdGlvbi5ob3N0fX0se2FjdGlvbjoiRGVsZXRlSW50ZXJtZWRpYXRlc0FjdGlvbiIs
bGFiZWw9CjoiRGVsZXRlIG5vbi1vdXRwdXRzIix0eXBlOiJib29sZWFuIix2YWx1ZToiZmFsc2Ui
LGlnbm9yZToiZmFsc2UiLGhlbHA6IkFsbD0KIG5vbi1vdXRwdXQgc3RlcHMgb2YgdGhpcyB3b3Jr
ZmxvdyB3aWxsIGhhdmUgZGF0YXNldHMgZGVsZXRlZCBpZiB0aGV5IGFyZSBuPQpvIGxvbmdlciBi
ZWluZyB1c2VkIGFzIGpvYiBpbnB1dHMgd2hlbiB0aGUgam9iIHRoaXMgYWN0aW9uIGlzIGF0dGFj
aGVkIHRvIGk9CnMgZmluaXNoZWQuIFlvdSAqbXVzdCogYmUgdXNpbmcgd29ya2Zsb3cgb3V0cHV0
cyAodGhlIHNub3dmbGFrZSkgaW4geW91ciB3bz0KcmtmbG93IGZvciB0aGlzIHRvIGhhdmUgYW55
IGVmZmVjdC4ifV19O3ZhciBkPTNEdGhpcztmdW5jdGlvbiBlKG4sbyl7bz0zRG98PQp8W107by5w
dXNoKG4pO2Zvcih2YXIgbSBpbiBuLmlucHV0cyl7dmFyIGs9M0RuLmlucHV0c1ttXTtpZihrLmFj
dGlvbil7ay5uYW09CmU9M0QicGphX18iK2grIl9fIitrLmFjdGlvbjtpZihrLmFyZ3VtZW50KXtr
Lm5hbWUrPTNEIl9fIitrLmFyZ3VtZW50fWlmKGsucD0KYXlsb2FkKXtmb3IodmFyIHMgaW4gay5w
YXlsb2FkKXt2YXIgcT0zRGsucGF5bG9hZFtzXTtrLnBheWxvYWRbay5uYW1lKyJfXyIrPQpzXT0z
RHE7ZGVsZXRlIHF9fXZhciByPTNEZC5wb3N0X2pvYl9hY3Rpb25zW2suYWN0aW9uK2hdO2lmKHIp
e2Zvcih2YXIgbCBpbiA9Cm8pe29bbF0uZXhwYW5kPTNEdHJ1ZX1pZihrLmFyZ3VtZW50KXtrLnZh
bHVlPTNEci5hY3Rpb25fYXJndW1lbnRzJiZyLmFjdGlvbj0KX2FyZ3VtZW50c1trLmFyZ3VtZW50
XXx8ay52YWx1ZX1lbHNle2sudmFsdWU9M0QidHJ1ZSJ9fX1pZihrLmlucHV0cyl7ZShrLG8uPQpz
bGljZSgwKSl9fX1lKGYpO3JldHVybiBmfSxfYnVpbGRNb2RlbDpmdW5jdGlvbigpe0dhbGF4eS5t
b2RhbC5zaG93KHt0aXRsZTo9CiJDb21pbmcgc29vbi4uLiIsYm9keToiVGhpcyBmZWF0dXJlIGhh
cyBub3QgYmVlbiBpbXBsZW1lbnRlZCB5ZXQuIixidXR0b25zOj0Ke0Nsb3NlOmZ1bmN0aW9uKCl7
R2FsYXh5Lm1vZGFsLmhpZGUoKX19fSl9LF91cGRhdGVNb2RlbDpmdW5jdGlvbigpe3ZhciBkPTNE
PQp0aGlzO3ZhciBlPTNEdGhpcy50cmVlLmZpbmFsaXplKCk7Y29uc29sZS5kZWJ1ZygidG9vbHMt
Zm9ybS13b3JrZmxvdzo6X3JlZnI9CmVzaEZvcm0oKSAtIFJlZnJlc2hpbmcgc3RhdGVzLiIpO2Nv
bnNvbGUuZGVidWcoZSk7dmFyIGc9M0R0aGlzLmRlZmVycmVkLnJlZz0KaXN0ZXIoKTt2YXIgZj0z
RGdhbGF4eV9jb25maWcucm9vdCsid29ya2Zsb3cvZWRpdG9yX2Zvcm1fcG9zdD90b29sX2lkPTNE
Iit0PQpoaXMub3B0aW9ucy5pZDtiLnJlcXVlc3Qoe3R5cGU6IkdFVCIsdXJsOmYsZGF0YTplLHN1
Y2Nlc3M6ZnVuY3Rpb24oaCl7ZC5ub2Q9CmUudXBkYXRlX2ZpZWxkX2RhdGEoaCk7ZC5kZWZlcnJl
ZC5kb25lKGcpO2NvbnNvbGUuZGVidWcoInRvb2xzLWZvcm06Ol9yZWZyZT0Kc2hGb3JtKCkgLSBT
dGF0ZXMgcmVmcmVzaGVkLiIpO2NvbnNvbGUuZGVidWcoaCl9LGVycm9yOmZ1bmN0aW9uKGgpe2Qu
ZGVmZXJyPQplZC5kb25lKGcpO2NvbnNvbGUuZGVidWcoInRvb2xzLWZvcm06Ol9yZWZyZXNoRm9y
bSgpIC0gUmVmcmVzaCByZXF1ZXN0IGZhaWw9CmVkLiIpO2NvbnNvbGUuZGVidWcoaCl9fSl9fSk7
cmV0dXJue1ZpZXc6Y319KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpkaWZmIC1yIGEy
NWNlNjNjZGNmMDdjYjJkMjBmZjM0N2JmNDJlODZmNGZkNGYyMWIgLXIgM2JiZWE0ZmZmOWYyMmFm
MDU2NWUxMzY9CmRiYTY1OTkyNDAzYzBhOWE1IHN0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvdG9v
bHMvdG9vbHMtaW5wdXQuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy90b29scy90
b29scy1pbnB1dC5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3Rvb2xzL3Rvb2xz
LWlucHV0LmpzCkBAIC0xLDEgKzEsMSBAQAotZGVmaW5lKFtdLGZ1bmN0aW9uKCl7cmV0dXJuIEJh
Y2tib25lLlZpZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKGMsYik9Cnt0aGlzLmFwcD0z
RGM7dGhpcy5maWVsZD0zRGIuZmllbGQ7dGhpcy5zZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRlKGIp
KTt0aGlzLj0KJGZpZWxkPTNEdGhpcy4kZWwuZmluZCgiLnVpLXRhYmxlLWZvcm0tZmllbGQiKTt0
aGlzLiR0aXRsZV9vcHRpb25hbD0zRHRoaXMuPQokZWwuZmluZCgiLnVpLXRhYmxlLWZvcm0tdGl0
bGUtb3B0aW9uYWwiKTt0aGlzLiRlcnJvcl90ZXh0PTNEdGhpcy4kZWwuZmluZCg9CiIudWktdGFi
bGUtZm9ybS1lcnJvci10ZXh0Iik7dGhpcy4kZXJyb3I9M0R0aGlzLiRlbC5maW5kKCIudWktdGFi
bGUtZm9ybS1lcj0Kcm9yIik7dGhpcy4kZmllbGQucHJlcGVuZCh0aGlzLmZpZWxkLiRlbCk7dGhp
cy5maWVsZC5za2lwPTNEZmFsc2U7dGhpcy5fcmVmPQpyZXNoKCk7dmFyIGE9M0R0aGlzO3RoaXMu
JHRpdGxlX29wdGlvbmFsLm9uKCJjbGljayIsZnVuY3Rpb24oKXthLmZpZWxkLnNraXA9Cj0zRCFh
LmZpZWxkLnNraXA7YS5fcmVmcmVzaCgpfSl9LGVycm9yOmZ1bmN0aW9uKGEpe3RoaXMuJGVycm9y
X3RleHQuaHRtbChhKT0KO3RoaXMuJGVycm9yLmZhZGVJbigpO3RoaXMuJGVsLmFkZENsYXNzKCJ1
aS1lcnJvciIpfSxyZXNldDpmdW5jdGlvbigpe3RoaXMuPQokZXJyb3IuaGlkZSgpO3RoaXMuJGVs
LnJlbW92ZUNsYXNzKCJ1aS1lcnJvciIpfSxfcmVmcmVzaDpmdW5jdGlvbigpe2lmKCF0aGk9CnMu
ZmllbGQuc2tpcCl7dGhpcy4kZmllbGQuZmFkZUluKCJmYXN0Iik7dGhpcy4kdGl0bGVfb3B0aW9u
YWwuaHRtbCgiRGlzYWJsZT0KIik7dGhpcy5hcHAudHJpZ2dlcigicmVmcmVzaCIpfWVsc2V7dGhp
cy4kZmllbGQuaGlkZSgpO3RoaXMuJHRpdGxlX29wdGlvbmFsPQouaHRtbCgiRW5hYmxlIil9fSxf
dGVtcGxhdGU6ZnVuY3Rpb24oYSl7dmFyIGI9M0QnPGRpdiBjbGFzcz0zRCJ1aS10YWJsZS1mb3I9
Cm0tZWxlbWVudCI+PGRpdiBjbGFzcz0zRCJ1aS10YWJsZS1mb3JtLWVycm9yIHVpLWVycm9yIj48
c3BhbiBjbGFzcz0zRCJmYSBmYT0KLWFycm93LWRvd24iLz48c3BhbiBjbGFzcz0zRCJ1aS10YWJs
ZS1mb3JtLWVycm9yLXRleHQiLz48L2Rpdj48ZGl2IGNsYXNzPTNEPQoidWktdGFibGUtZm9ybS10
aXRsZS1zdHJvbmciPic7aWYoYS5vcHRpb25hbCl7Yis9M0QiT3B0aW9uYWw6ICIrYS5sYWJlbCsn
PHM9CnBhbj4mbmJzcFs8c3BhbiBjbGFzcz0zRCJ1aS10YWJsZS1mb3JtLXRpdGxlLW9wdGlvbmFs
Ii8+XTwvc3Bhbj4nfWVsc2V7Yis9Cj0zRGEubGFiZWx9Yis9M0QnPC9kaXY+PGRpdiBjbGFzcz0z
RCJ1aS10YWJsZS1mb3JtLWZpZWxkIj4nO2lmKGEuaGVscCl7Yis9Cj0zRCc8ZGl2IGNsYXNzPTNE
InVpLXRhYmxlLWZvcm0taW5mbyI+JythLmhlbHArIjwvZGl2PiJ9Yis9M0QiPC9kaXY+PC9kaXY+
Ij0KO3JldHVybiBifX0pfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGVmaW5lKFtd
LGZ1bmN0aW9uKCl7cmV0dXJuIEJhY2tib25lLlZpZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0
aW9uKGQsYyk9Cnt0aGlzLmFwcD0zRGQ7dGhpcy5maWVsZD0zRGMuZmllbGQ7dGhpcy5kZWZhdWx0
dmFsdWU9M0RjLmRlZmF1bHR2YWx1ZTt0aGlzLj0Kc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZShj
KSk7dGhpcy4kZmllbGQ9M0R0aGlzLiRlbC5maW5kKCIudWktdGFibGUtZm9ybS1mPQppZWxkIik7
dGhpcy4kdGl0bGVfb3B0aW9uYWw9M0R0aGlzLiRlbC5maW5kKCIudWktdGFibGUtZm9ybS10aXRs
ZS1vcHRpb25hbCI9Cik7dGhpcy4kZXJyb3JfdGV4dD0zRHRoaXMuJGVsLmZpbmQoIi51aS10YWJs
ZS1mb3JtLWVycm9yLXRleHQiKTt0aGlzLiRlcnJvcj0KPTNEdGhpcy4kZWwuZmluZCgiLnVpLXRh
YmxlLWZvcm0tZXJyb3IiKTt0aGlzLiRmaWVsZC5wcmVwZW5kKHRoaXMuZmllbGQuJGVsPQopO3Ro
aXMuZmllbGQuc2tpcD0zRGZhbHNlO3ZhciBiPTNEdGhpcy5maWVsZC52YWx1ZSYmdGhpcy5maWVs
ZC52YWx1ZSgpO3RoaXM9Ci5maWVsZC5za2lwPTNEQm9vbGVhbihjLm9wdGlvbmFsJiYoKHRoaXMu
ZmllbGQudmFsaWRhdGUmJiF0aGlzLmZpZWxkLnZhbGlkYT0KdGUoKSl8fCFifHwoYj0zRD0zRHRo
aXMuZGVmYXVsdHZhbHVlKXx8KE51bWJlcihiKT0zRD0zRE51bWJlcih0aGlzLmRlZmF1bHR2PQph
bHVlKSl8fChKU09OLnN0cmluZ2lmeShiKT0zRD0zREpTT04uc3RyaW5naWZ5KHRoaXMuZGVmYXVs
dHZhbHVlKSkpKTt0aGlzLl89CnJlZnJlc2goKTt2YXIgYT0zRHRoaXM7dGhpcy4kdGl0bGVfb3B0
aW9uYWwub24oImNsaWNrIixmdW5jdGlvbigpe2EuZmllbGQucz0Ka2lwPTNEIWEuZmllbGQuc2tp
cDthLl9yZWZyZXNoKCl9KX0sZXJyb3I6ZnVuY3Rpb24oYSl7dGhpcy4kZXJyb3JfdGV4dC5odG1s
PQooYSk7dGhpcy4kZXJyb3IuZmFkZUluKCk7dGhpcy4kZWwuYWRkQ2xhc3MoInVpLWVycm9yIil9
LHJlc2V0OmZ1bmN0aW9uKCl7dGg9CmlzLiRlcnJvci5oaWRlKCk7dGhpcy4kZWwucmVtb3ZlQ2xh
c3MoInVpLWVycm9yIil9LF9yZWZyZXNoOmZ1bmN0aW9uKCl7aWYoIT0KdGhpcy5maWVsZC5za2lw
KXt0aGlzLiRmaWVsZC5mYWRlSW4oImZhc3QiKTt0aGlzLiR0aXRsZV9vcHRpb25hbC5odG1sKCJE
aXNhPQpibGUiKX1lbHNle3RoaXMuJGZpZWxkLmhpZGUoKTt0aGlzLiR0aXRsZV9vcHRpb25hbC5o
dG1sKCJFbmFibGUiKTt0aGlzLmZpZWw9CmQudmFsdWUmJnRoaXMuZmllbGQudmFsdWUodGhpcy5k
ZWZhdWx0dmFsdWUpfXRoaXMuYXBwLnRyaWdnZXIoInJlZnJlc2giKX0sXz0KdGVtcGxhdGU6ZnVu
Y3Rpb24oYSl7dmFyIGI9M0QnPGRpdiBjbGFzcz0zRCJ1aS10YWJsZS1mb3JtLWVsZW1lbnQiPjxk
aXYgY2xhPQpzcz0zRCJ1aS10YWJsZS1mb3JtLWVycm9yIHVpLWVycm9yIj48c3BhbiBjbGFzcz0z
RCJmYSBmYS1hcnJvdy1kb3duIi8+PHNwYW49CiBjbGFzcz0zRCJ1aS10YWJsZS1mb3JtLWVycm9y
LXRleHQiLz48L2Rpdj48ZGl2IGNsYXNzPTNEInVpLXRhYmxlLWZvcm0tdGl0bD0KZS1zdHJvbmci
Pic7aWYoYS5vcHRpb25hbCl7Yis9M0RhLmxhYmVsKyc8c3Bhbj4mbmJzcFs8c3BhbiBjbGFzcz0z
RCJ1aS10YWJsPQplLWZvcm0tdGl0bGUtb3B0aW9uYWwiLz5dPC9zcGFuPid9ZWxzZXtiKz0zRGEu
bGFiZWx9Yis9M0QnPC9kaXY+PGRpdiBjbGFzcz0KPTNEInVpLXRhYmxlLWZvcm0tZmllbGQiPic7
aWYoYS5oZWxwKXtiKz0zRCc8ZGl2IGNsYXNzPTNEInVpLXRhYmxlLWZvcm0taW5mPQpvIj4nK2Eu
aGVscCsiPC9kaXY+In1iKz0zRCI8L2Rpdj48L2Rpdj4iO3JldHVybiBifX0pfSk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQoKZGlmZiAtciBhMjVjZTYzY2RjZjA3Y2IyZDIwZmYzNDdiZjQy
ZTg2ZjRmZDRmMjFiIC1yIDNiYmVhNGZmZjlmMjJhZjA1NjVlMTM2PQpkYmE2NTk5MjQwM2MwYTlh
NSBzdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3Rvb2xzL3Rvb2xzLXNlY3Rpb24uanMKLS0tIGEv
c3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy90b29scy90b29scy1zZWN0aW9uLmpzCisrKyBiL3N0
YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvdG9vbHMvdG9vbHMtc2VjdGlvbi5qcwpAQCAtMSwxICsx
LDEgQEAKLWRlZmluZShbInV0aWxzL3V0aWxzIiwibXZjL3VpL3VpLXRhYmxlIiwibXZjL3VpL3Vp
LW1pc2MiLCJtdmMvdWkvdWktcG9ydGxlPQp0IiwibXZjL3Rvb2xzL3Rvb2xzLXJlcGVhdCIsIm12
Yy90b29scy90b29scy1zZWxlY3QtY29udGVudCIsIm12Yy90b29scy90b289CmxzLWlucHV0Il0s
ZnVuY3Rpb24oZSxiLGgsZCxjLGEsZil7dmFyIGc9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7aW5p
dGlhbGl6ZT0KOmZ1bmN0aW9uKGosaSl7dGhpcy5hcHA9M0RqO3RoaXMuaW5wdXRzPTNEaS5pbnB1
dHM7aS5jbHNfdHI9M0Qic2VjdGlvbi1yb3ciPQo7dGhpcy50YWJsZT0zRG5ldyBiLlZpZXcoaSk7
dGhpcy5zZXRFbGVtZW50KHRoaXMudGFibGUuJGVsKTt0aGlzLnJlbmRlcigpfSw9CnJlbmRlcjpm
dW5jdGlvbigpe3RoaXMudGFibGUuZGVsQWxsKCk7Zm9yKHZhciBqIGluIHRoaXMuaW5wdXRzKXt0
aGlzLmFkZCh0aD0KaXMuaW5wdXRzW2pdKX19LGFkZDpmdW5jdGlvbihrKXt2YXIgaj0zRHRoaXM7
dmFyIGk9M0RqUXVlcnkuZXh0ZW5kKHRydWUse30sPQprKTtpLmlkPTNEay5pZD0zRGUudXVpZCgp
O3RoaXMuYXBwLmlucHV0X2xpc3RbaS5pZF09M0RpO3ZhciBsPTNEaS50eXBlO3N3aXQ9CmNoKGwp
e2Nhc2UiY29uZGl0aW9uYWwiOnRoaXMuX2FkZENvbmRpdGlvbmFsKGkpO2JyZWFrO2Nhc2UicmVw
ZWF0Ijp0aGlzLl9hZD0KZFJlcGVhdChpKTticmVhaztjYXNlInNlY3Rpb24iOnRoaXMuX2FkZFNl
Y3Rpb24oaSk7YnJlYWs7ZGVmYXVsdDp0aGlzLl9hZGRSPQpvdyhpKX19LF9hZGRDb25kaXRpb25h
bDpmdW5jdGlvbihqKXt2YXIgaz0zRHRoaXM7ai50ZXN0X3BhcmFtLmlkPTNEai5pZDt2YXI9CiBu
PTNEdGhpcy5fYWRkUm93KGoudGVzdF9wYXJhbSk7bi5vcHRpb25zLm9uY2hhbmdlPTNEZnVuY3Rp
b24odyl7dmFyIHY9M0RrLj0KYXBwLnRyZWUubWF0Y2hDYXNlKGosdyk7Zm9yKHZhciB1IGluIGou
Y2FzZXMpe3ZhciBxPTNEai5jYXNlc1t1XTt2YXIgdD0zRGouPQppZCsiLXNlY3Rpb24tIit1O3Zh
ciBwPTNEay50YWJsZS5nZXQodCk7dmFyIHM9M0RmYWxzZTtmb3IodmFyIHIgaW4gcS5pbnB1dHM9
Cil7aWYoIXEuaW5wdXRzW3JdLmhpZGRlbil7cz0zRHRydWU7YnJlYWt9fWlmKHU9M0Q9M0R2JiZz
KXtwLmZhZGVJbigiZmFzdCIpfT0KZWxzZXtwLmhpZGUoKX19ay5hcHAudHJpZ2dlcigicmVmcmVz
aCIpfTtmb3IodmFyIG0gaW4gai5jYXNlcyl7dmFyIGw9M0RqLmlkPQorIi1zZWN0aW9uLSIrbTt2
YXIgbz0zRG5ldyBnKHRoaXMuYXBwLHtpbnB1dHM6ai5jYXNlc1ttXS5pbnB1dHMsY2xzOiJ1aS10
YWI9CmxlLXBsYWluIn0pO28uJGVsLmFkZENsYXNzKCJ1aS10YWJsZS1mb3JtLXNlY3Rpb24iKTt0
aGlzLnRhYmxlLmFkZChvLiRlbCk7dD0KaGlzLnRhYmxlLmFwcGVuZChsKX1uLnRyaWdnZXIoImNo
YW5nZSIpfSxfYWRkUmVwZWF0OmZ1bmN0aW9uKHApe3ZhciBzPTNEdGhpPQpzO3ZhciBxPTNEMDtm
dW5jdGlvbiBuKGksdSl7dmFyIHQ9M0RwLmlkKyItc2VjdGlvbi0iKyhxKyspO3ZhciB2PTNEbnVs
bDtpZig9CnUpe3Y9M0RmdW5jdGlvbigpe2wuZGVsKHQpO2wucmV0aXRsZShwLnRpdGxlKTtzLmFw
cC50cmlnZ2VyKCJyZWZyZXNoIil9fXZhcj0KIHc9M0RuZXcgZyhzLmFwcCx7aW5wdXRzOmksY2xz
OiJ1aS10YWJsZS1wbGFpbiJ9KTtsLmFkZCh7aWQ6dCx0aXRsZTpwLnRpdGxlPQosJGVsOncuJGVs
LG9uZGVsOnZ9KTtsLnJldGl0bGUocC50aXRsZSl9dmFyIGw9M0RuZXcgYy5WaWV3KHt0aXRsZV9u
ZXc6cC50aXQ9CmxlLG1heDpwLm1heCxvbm5ldzpmdW5jdGlvbigpe24ocC5pbnB1dHMsdHJ1ZSk7
cy5hcHAudHJpZ2dlcigicmVmcmVzaCIpfX0pOz0KdmFyIGo9M0RwLm1pbjt2YXIgcj0zRF8uc2l6
ZShwLmNhY2hlKTtmb3IodmFyIG09M0QwO208TWF0aC5tYXgocixqKTttKyspe3ZhPQpyIG89M0Ru
dWxsO2lmKG08cil7bz0zRHAuY2FjaGVbbV19ZWxzZXtvPTNEcC5pbnB1dHN9bihvLG0+PTNEail9
dmFyIGs9M0RuZXc9CiBmKHRoaXMuYXBwLHtsYWJlbDpwLnRpdGxlLGhlbHA6cC5oZWxwLGZpZWxk
Omx9KTtrLiRlbC5hZGRDbGFzcygidWktdGFibGUtZj0Kb3JtLXNlY3Rpb24iKTt0aGlzLnRhYmxl
LmFkZChrLiRlbCk7dGhpcy50YWJsZS5hcHBlbmQocC5pZCl9LF9hZGRTZWN0aW9uOmZ1PQpuY3Rp
b24oaSl7dmFyIGo9M0R0aGlzO3ZhciBuPTNEbmV3IGcoai5hcHAse2lucHV0czppLmlucHV0cyxj
bHM6InVpLXRhYmxlLXA9CmxhaW4ifSk7dmFyIG09M0RuZXcgaC5CdXR0b25JY29uKHtpY29uOiJm
YS1leWUtc2xhc2giLHRvb2x0aXA6IlNob3cvaGlkZSBzZT0KY3Rpb24iLGNsczoidWktYnV0dG9u
LWljb24tcGxhaW4ifSk7dmFyIGw9M0RuZXcgZC5WaWV3KHt0aXRsZTppLmxhYmVsLGNsczoiPQp1
aS1wb3J0bGV0LXNlY3Rpb24iLG9wZXJhdGlvbnM6e2J1dHRvbl92aXNpYmxlOm19fSk7bC5hcHBl
bmQobi4kZWwpO3ZhciBrPQo9M0RmYWxzZTtsLiRjb250ZW50LmhpZGUoKTtsLiRoZWFkZXIuY3Nz
KCJjdXJzb3IiLCJwb2ludGVyIik7bC4kaGVhZGVyLm9uKCI9CmNsaWNrIixmdW5jdGlvbigpe2lm
KGspe2s9M0RmYWxzZTtsLiRjb250ZW50LmhpZGUoKTttLnNldEljb24oImZhLWV5ZS1zbGFzaD0K
Iil9ZWxzZXtrPTNEdHJ1ZTtsLiRjb250ZW50LmZhZGVJbigiZmFzdCIpO20uc2V0SWNvbigiZmEt
ZXllIil9fSk7dGhpcy50YWJsPQplLmFkZChsLiRlbCk7dGhpcy50YWJsZS5hcHBlbmQoaS5pZCl9
LF9hZGRSb3c6ZnVuY3Rpb24oaSl7dmFyIGw9M0RpLmlkO3ZhciA9Cmo9M0R0aGlzLl9jcmVhdGVG
aWVsZChpKTt0aGlzLmFwcC5maWVsZF9saXN0W2xdPTNEajt2YXIgaz0zRG5ldyBmKHRoaXMuYXBw
LD0Ke2xhYmVsOmkubGFiZWwsb3B0aW9uYWw6aS5vcHRpb25hbCxoZWxwOmkuaGVscCxmaWVsZDpq
fSk7dGhpcy5hcHAuZWxlbWVudF9sPQppc3RbbF09M0RrO3RoaXMudGFibGUuYWRkKGsuJGVsKTt0
aGlzLnRhYmxlLmFwcGVuZChsKTtpZihpLmhpZGRlbil7dGhpcy50YWI9CmxlLmdldChsKS5oaWRl
KCl9cmV0dXJuIGp9LF9jcmVhdGVGaWVsZDpmdW5jdGlvbihpKXt2YXIgaj0zRG51bGw7c3dpdGNo
KGkudD0KeXBlKXtjYXNlInRleHQiOmo9M0R0aGlzLl9maWVsZFRleHQoaSk7YnJlYWs7Y2FzZSJz
ZWxlY3QiOmo9M0R0aGlzLl9maWVsZFNlPQpsZWN0KGkpO2JyZWFrO2Nhc2UiZGF0YSI6aj0zRHRo
aXMuX2ZpZWxkRGF0YShpKTticmVhaztjYXNlImRhdGFfY29sbGVjdGlvbiI9CjpqPTNEdGhpcy5f
ZmllbGREYXRhKGkpO2JyZWFrO2Nhc2UiZGF0YV9jb2x1bW4iOmkuZXJyb3JfdGV4dD0zRCJNaXNz
aW5nIGNvbD0KdW1ucyBpbiByZWZlcmVuY2VkIGRhdGFzZXQuIjtqPTNEdGhpcy5fZmllbGRTZWxl
Y3QoaSk7YnJlYWs7Y2FzZSJoaWRkZW4iOmo9Cj0zRHRoaXMuX2ZpZWxkSGlkZGVuKGkpO2JyZWFr
O2Nhc2UiaGlkZGVuX2RhdGEiOmo9M0R0aGlzLl9maWVsZEhpZGRlbihpKTticj0KZWFrO2Nhc2Ui
aW50ZWdlciI6aj0zRHRoaXMuX2ZpZWxkU2xpZGVyKGkpO2JyZWFrO2Nhc2UiZmxvYXQiOmo9M0R0
aGlzLl9maWVsPQpkU2xpZGVyKGkpO2JyZWFrO2Nhc2UiYm9vbGVhbiI6aj0zRHRoaXMuX2ZpZWxk
Qm9vbGVhbihpKTticmVhaztjYXNlImdlbm9tZWI9CnVpbGQiOmkuc2VhcmNoYWJsZT0zRHRydWU7
aj0zRHRoaXMuX2ZpZWxkU2VsZWN0KGkpO2JyZWFrO2Nhc2UiZHJpbGxfZG93biI6aj0KPTNEdGhp
cy5fZmllbGREcmlsbGRvd24oaSk7YnJlYWs7Y2FzZSJiYXNldXJsIjpqPTNEdGhpcy5fZmllbGRI
aWRkZW4oaSk7YnJlPQphaztkZWZhdWx0OnRoaXMuYXBwLmluY29tcGF0aWJsZT0zRHRydWU7aWYo
aS5vcHRpb25zKXtqPTNEdGhpcy5fZmllbGRTZWxlY3Q9CihpKX1lbHNle2o9M0R0aGlzLl9maWVs
ZFRleHQoaSl9Y29uc29sZS5kZWJ1ZygidG9vbHMtZm9ybTo6X2FkZFJvdygpIDogQXV0bz0KIG1h
dGNoZWQgZmllbGQgdHlwZSAoIitpLnR5cGUrIikuIil9aWYoaS52YWx1ZSE9M0Q9M0R1bmRlZmlu
ZWQpe2oudmFsdWUoaS52PQphbHVlKX1yZXR1cm4gan0sX2ZpZWxkRGF0YTpmdW5jdGlvbihpKXtp
Zih0aGlzLmFwcC53b3JrZmxvdyl7dmFyIGs9M0RlLnRleHQ9CmlmeShpLmV4dGVuc2lvbnMudG9T
dHJpbmcoKSk7aS5pbmZvPTNEIkRhdGEgaW5wdXQgJyIraS5uYW1lKyInICgiK2srIikiO3JldD0K
dXJuIHRoaXMuX2ZpZWxkSGlkZGVuKGkpfXZhciBqPTNEdGhpcztyZXR1cm4gbmV3IGEuVmlldyh0
aGlzLmFwcCx7aWQ6ImZpZWxkPQotIitpLmlkLGV4dGVuc2lvbnM6aS5leHRlbnNpb25zLG11bHRp
cGxlOmkubXVsdGlwbGUsdHlwZTppLnR5cGUsZGF0YTppLm9wdGk9Cm9ucyxvbmNoYW5nZTpmdW5j
dGlvbigpe2ouYXBwLnRyaWdnZXIoInJlZnJlc2giKX19KX0sX2ZpZWxkU2VsZWN0OmZ1bmN0aW9u
KD0Kail7aWYodGhpcy5hcHAud29ya2Zsb3cmJmouaXNfZHluYW1pYyl7aWYoIWUudmFsaWRhdGUo
ai52YWx1ZSkpe2oudmFsdWU9M0QiPQoifXJldHVybiB0aGlzLl9maWVsZFRleHQoail9dmFyIGw9
M0RbXTtmb3IodmFyIG0gaW4gai5vcHRpb25zKXt2YXIgbj0zRGoub3A9CnRpb25zW21dO2wucHVz
aCh7bGFiZWw6blswXSx2YWx1ZTpuWzFdfSl9dmFyIG89M0RoLlNlbGVjdDtzd2l0Y2goai5kaXNw
bGF5KT0Ke2Nhc2UiY2hlY2tib3hlcyI6bz0zRGguQ2hlY2tib3g7YnJlYWs7Y2FzZSJyYWRpbyI6
bz0zRGguUmFkaW87YnJlYWt9dmFyIGs9Cj0zRHRoaXM7cmV0dXJuIG5ldyBvLlZpZXcoe2lkOiJm
aWVsZC0iK2ouaWQsZGF0YTpsLGVycm9yX3RleHQ6ai5lcnJvcl90ZXh0fD0KfCJObyBvcHRpb25z
IGF2YWlsYWJsZSIsbXVsdGlwbGU6ai5tdWx0aXBsZSxzZWFyY2hhYmxlOmouc2VhcmNoYWJsZSxv
bmNoYW5nPQplOmZ1bmN0aW9uKCl7ay5hcHAudHJpZ2dlcigicmVmcmVzaCIpfX0pfSxfZmllbGRE
cmlsbGRvd246ZnVuY3Rpb24oaSl7dmFyIGo9Cj0zRHRoaXM7cmV0dXJuIG5ldyBoLkRyaWxsZG93
bi5WaWV3KHtpZDoiZmllbGQtIitpLmlkLGRhdGE6aS5vcHRpb25zLGRpc3BsYT0KeTppLmRpc3Bs
YXksb25jaGFuZ2U6ZnVuY3Rpb24oKXtqLmFwcC50cmlnZ2VyKCJyZWZyZXNoIil9fSl9LF9maWVs
ZFRleHQ6ZnVuPQpjdGlvbihpKXt2YXIgaj0zRHRoaXM7cmV0dXJuIG5ldyBoLklucHV0KHtpZDoi
ZmllbGQtIitpLmlkLGFyZWE6aS5hcmVhLG9uY2g9CmFuZ2U6ZnVuY3Rpb24oKXtqLmFwcC50cmln
Z2VyKCJyZWZyZXNoIil9fSl9LF9maWVsZFNsaWRlcjpmdW5jdGlvbihpKXt2YXIgaj0KPTNEdGhp
cztyZXR1cm4gbmV3IGguU2xpZGVyLlZpZXcoe2lkOiJmaWVsZC0iK2kuaWQscHJlY2lzZTppLnR5
cGU9M0Q9M0QiZmxvPQphdCIsbWluOmkubWluLG1heDppLm1heCxvbmNoYW5nZTpmdW5jdGlvbigp
e2ouYXBwLnRyaWdnZXIoInJlZnJlc2giKX19KX0sX2Y9CmllbGRIaWRkZW46ZnVuY3Rpb24oaSl7
cmV0dXJuIG5ldyBoLkhpZGRlbih7aWQ6ImZpZWxkLSIraS5pZCxpbmZvOmkuaW5mb30pfT0KLF9m
aWVsZEJvb2xlYW46ZnVuY3Rpb24oaSl7dmFyIGo9M0R0aGlzO3JldHVybiBuZXcgaC5SYWRpb0J1
dHRvbi5WaWV3KHtpZDoiPQpmaWVsZC0iK2kuaWQsZGF0YTpbe2xhYmVsOiJZZXMiLHZhbHVlOiJ0
cnVlIn0se2xhYmVsOiJObyIsdmFsdWU6ImZhbHNlIn1dLG89Cm5jaGFuZ2U6ZnVuY3Rpb24oKXtq
LmFwcC50cmlnZ2VyKCJyZWZyZXNoIil9fSl9fSk7cmV0dXJue1ZpZXc6Z319KTsKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCitkZWZpbmUoWyJ1dGlscy91dGlscyIsIm12Yy91aS91aS10YWJs
ZSIsIm12Yy91aS91aS1taXNjIiwibXZjL3VpL3VpLXBvcnRsZT0KdCIsIm12Yy90b29scy90b29s
cy1yZXBlYXQiLCJtdmMvdG9vbHMvdG9vbHMtc2VsZWN0LWNvbnRlbnQiLCJtdmMvdG9vbHMvdG9v
PQpscy1pbnB1dCJdLGZ1bmN0aW9uKGUsYixoLGQsYyxhLGYpe3ZhciBnPTNEQmFja2JvbmUuVmll
dy5leHRlbmQoe2luaXRpYWxpemU9CjpmdW5jdGlvbihqLGkpe3RoaXMuYXBwPTNEajt0aGlzLmlu
cHV0cz0zRGkuaW5wdXRzO2kuY2xzX3RyPTNEInNlY3Rpb24tcm93Ij0KO3RoaXMudGFibGU9M0Ru
ZXcgYi5WaWV3KGkpO3RoaXMuc2V0RWxlbWVudCh0aGlzLnRhYmxlLiRlbCk7dGhpcy5yZW5kZXIo
KX0sPQpyZW5kZXI6ZnVuY3Rpb24oKXt0aGlzLnRhYmxlLmRlbEFsbCgpO2Zvcih2YXIgaiBpbiB0
aGlzLmlucHV0cyl7dGhpcy5hZGQodGg9CmlzLmlucHV0c1tqXSl9fSxhZGQ6ZnVuY3Rpb24oayl7
dmFyIGo9M0R0aGlzO3ZhciBpPTNEalF1ZXJ5LmV4dGVuZCh0cnVlLHt9LD0Kayk7aS5pZD0zRGsu
aWQ9M0RlLnV1aWQoKTt0aGlzLmFwcC5pbnB1dF9saXN0W2kuaWRdPTNEaTt2YXIgbD0zRGkudHlw
ZTtzd2l0PQpjaChsKXtjYXNlImNvbmRpdGlvbmFsIjp0aGlzLl9hZGRDb25kaXRpb25hbChpKTti
cmVhaztjYXNlInJlcGVhdCI6dGhpcy5fYWQ9CmRSZXBlYXQoaSk7YnJlYWs7Y2FzZSJzZWN0aW9u
Ijp0aGlzLl9hZGRTZWN0aW9uKGkpO2JyZWFrO2RlZmF1bHQ6dGhpcy5fYWRkUj0Kb3coaSl9fSxf
YWRkQ29uZGl0aW9uYWw6ZnVuY3Rpb24oail7dmFyIGs9M0R0aGlzO2oudGVzdF9wYXJhbS5pZD0z
RGouaWQ7dmFyPQogbj0zRHRoaXMuX2FkZFJvdyhqLnRlc3RfcGFyYW0pO24ub3B0aW9ucy5vbmNo
YW5nZT0zRGZ1bmN0aW9uKHcpe3ZhciB2PTNEay49CmFwcC50cmVlLm1hdGNoQ2FzZShqLHcpO2Zv
cih2YXIgdSBpbiBqLmNhc2VzKXt2YXIgcT0zRGouY2FzZXNbdV07dmFyIHQ9M0RqLj0KaWQrIi1z
ZWN0aW9uLSIrdTt2YXIgcD0zRGsudGFibGUuZ2V0KHQpO3ZhciBzPTNEZmFsc2U7Zm9yKHZhciBy
IGluIHEuaW5wdXRzPQope2lmKCFxLmlucHV0c1tyXS5oaWRkZW4pe3M9M0R0cnVlO2JyZWFrfX1p
Zih1PTNEPTNEdiYmcyl7cC5mYWRlSW4oImZhc3QiKX09CmVsc2V7cC5oaWRlKCl9fWsuYXBwLnRy
aWdnZXIoInJlZnJlc2giKX07Zm9yKHZhciBtIGluIGouY2FzZXMpe3ZhciBsPTNEai5pZD0KKyIt
c2VjdGlvbi0iK207dmFyIG89M0RuZXcgZyh0aGlzLmFwcCx7aW5wdXRzOmouY2FzZXNbbV0uaW5w
dXRzLGNsczoidWktdGFiPQpsZS1wbGFpbiJ9KTtvLiRlbC5hZGRDbGFzcygidWktdGFibGUtZm9y
bS1zZWN0aW9uIik7dGhpcy50YWJsZS5hZGQoby4kZWwpO3Q9Cmhpcy50YWJsZS5hcHBlbmQobCl9
bi50cmlnZ2VyKCJjaGFuZ2UiKX0sX2FkZFJlcGVhdDpmdW5jdGlvbihwKXt2YXIgcz0zRHRoaT0K
czt2YXIgcT0zRDA7ZnVuY3Rpb24gbihpLHUpe3ZhciB0PTNEcC5pZCsiLXNlY3Rpb24tIisocSsr
KTt2YXIgdj0zRG51bGw7aWYoPQp1KXt2PTNEZnVuY3Rpb24oKXtsLmRlbCh0KTtsLnJldGl0bGUo
cC50aXRsZSk7cy5hcHAudHJpZ2dlcigicmVmcmVzaCIpfX12YXI9CiB3PTNEbmV3IGcocy5hcHAs
e2lucHV0czppLGNsczoidWktdGFibGUtcGxhaW4ifSk7bC5hZGQoe2lkOnQsdGl0bGU6cC50aXRs
ZT0KLCRlbDp3LiRlbCxvbmRlbDp2fSk7bC5yZXRpdGxlKHAudGl0bGUpfXZhciBsPTNEbmV3IGMu
Vmlldyh7dGl0bGVfbmV3OnAudGl0PQpsZSxtYXg6cC5tYXgsb25uZXc6ZnVuY3Rpb24oKXtuKHAu
aW5wdXRzLHRydWUpO3MuYXBwLnRyaWdnZXIoInJlZnJlc2giKX19KTs9CnZhciBqPTNEcC5taW47
dmFyIHI9M0RfLnNpemUocC5jYWNoZSk7Zm9yKHZhciBtPTNEMDttPE1hdGgubWF4KHIsaik7bSsr
KXt2YT0KciBvPTNEbnVsbDtpZihtPHIpe289M0RwLmNhY2hlW21dfWVsc2V7bz0zRHAuaW5wdXRz
fW4obyxtPj0zRGopfXZhciBrPTNEbmV3PQogZih0aGlzLmFwcCx7bGFiZWw6cC50aXRsZSxoZWxw
OnAuaGVscCxmaWVsZDpsfSk7ay4kZWwuYWRkQ2xhc3MoInVpLXRhYmxlLWY9Cm9ybS1zZWN0aW9u
Iik7dGhpcy50YWJsZS5hZGQoay4kZWwpO3RoaXMudGFibGUuYXBwZW5kKHAuaWQpfSxfYWRkU2Vj
dGlvbjpmdT0KbmN0aW9uKGkpe3ZhciBqPTNEdGhpczt2YXIgbj0zRG5ldyBnKGouYXBwLHtpbnB1
dHM6aS5pbnB1dHMsY2xzOiJ1aS10YWJsZS1wPQpsYWluIn0pO3ZhciBtPTNEbmV3IGguQnV0dG9u
SWNvbih7aWNvbjoiZmEtZXllLXNsYXNoIix0b29sdGlwOiJTaG93L2hpZGUgc2U9CmN0aW9uIixj
bHM6InVpLWJ1dHRvbi1pY29uLXBsYWluIn0pO3ZhciBsPTNEbmV3IGQuVmlldyh7dGl0bGU6aS5s
YWJlbCxjbHM6Ij0KdWktcG9ydGxldC1zZWN0aW9uIixvcGVyYXRpb25zOntidXR0b25fdmlzaWJs
ZTptfX0pO2wuYXBwZW5kKG4uJGVsKTt2YXIgaz0KPTNEZmFsc2U7bC4kY29udGVudC5oaWRlKCk7
bC4kaGVhZGVyLmNzcygiY3Vyc29yIiwicG9pbnRlciIpO2wuJGhlYWRlci5vbigiPQpjbGljayIs
ZnVuY3Rpb24oKXtpZihrKXtrPTNEZmFsc2U7bC4kY29udGVudC5oaWRlKCk7bS5zZXRJY29uKCJm
YS1leWUtc2xhc2g9CiIpfWVsc2V7az0zRHRydWU7bC4kY29udGVudC5mYWRlSW4oImZhc3QiKTtt
LnNldEljb24oImZhLWV5ZSIpfX0pO2lmKGkuZXhwYT0KbmQpe2wuJGhlYWRlci50cmlnZ2VyKCJj
bGljayIpfXRoaXMudGFibGUuYWRkKGwuJGVsKTt0aGlzLnRhYmxlLmFwcGVuZChpLmlkPQopfSxf
YWRkUm93OmZ1bmN0aW9uKGkpe3ZhciBsPTNEaS5pZDt2YXIgaj0zRHRoaXMuX2NyZWF0ZUZpZWxk
KGkpO3RoaXMuYXBwLmY9CmllbGRfbGlzdFtsXT0zRGo7dmFyIGs9M0RuZXcgZih0aGlzLmFwcCx7
bGFiZWw6aS5sYWJlbCxkZWZhdWx0dmFsdWU6aS5kZWZhdT0KbHR2YWx1ZSxvcHRpb25hbDppLm9w
dGlvbmFsLGhlbHA6aS5oZWxwLGZpZWxkOmp9KTt0aGlzLmFwcC5lbGVtZW50X2xpc3RbbF09Cj0z
RGs7dGhpcy50YWJsZS5hZGQoay4kZWwpO3RoaXMudGFibGUuYXBwZW5kKGwpO2lmKGkuaGlkZGVu
KXt0aGlzLnRhYmxlLmdldD0KKGwpLmhpZGUoKX1yZXR1cm4gan0sX2NyZWF0ZUZpZWxkOmZ1bmN0
aW9uKGkpe3ZhciBqPTNEbnVsbDtzd2l0Y2goaS50eXBlKXtjPQphc2UidGV4dCI6aj0zRHRoaXMu
X2ZpZWxkVGV4dChpKTticmVhaztjYXNlInNlbGVjdCI6aj0zRHRoaXMuX2ZpZWxkU2VsZWN0KGk9
Cik7YnJlYWs7Y2FzZSJkYXRhIjpqPTNEdGhpcy5fZmllbGREYXRhKGkpO2JyZWFrO2Nhc2UiZGF0
YV9jb2xsZWN0aW9uIjpqPTNEdD0KaGlzLl9maWVsZERhdGEoaSk7YnJlYWs7Y2FzZSJkYXRhX2Nv
bHVtbiI6aS5lcnJvcl90ZXh0PTNEIk1pc3NpbmcgY29sdW1ucyBpPQpuIHJlZmVyZW5jZWQgZGF0
YXNldC4iO2o9M0R0aGlzLl9maWVsZFNlbGVjdChpKTticmVhaztjYXNlImhpZGRlbiI6aj0zRHRo
aXM9Ci5fZmllbGRIaWRkZW4oaSk7YnJlYWs7Y2FzZSJoaWRkZW5fZGF0YSI6aj0zRHRoaXMuX2Zp
ZWxkSGlkZGVuKGkpO2JyZWFrO2Nhcz0KZSJpbnRlZ2VyIjpqPTNEdGhpcy5fZmllbGRTbGlkZXIo
aSk7YnJlYWs7Y2FzZSJmbG9hdCI6aj0zRHRoaXMuX2ZpZWxkU2xpZGVyPQooaSk7YnJlYWs7Y2Fz
ZSJib29sZWFuIjpqPTNEdGhpcy5fZmllbGRCb29sZWFuKGkpO2JyZWFrO2Nhc2UiZ2Vub21lYnVp
bGQiOmk9Ci5zZWFyY2hhYmxlPTNEdHJ1ZTtqPTNEdGhpcy5fZmllbGRTZWxlY3QoaSk7YnJlYWs7
Y2FzZSJkcmlsbF9kb3duIjpqPTNEdGhpcz0KLl9maWVsZERyaWxsZG93bihpKTticmVhaztjYXNl
ImJhc2V1cmwiOmo9M0R0aGlzLl9maWVsZEhpZGRlbihpKTticmVhaztkZWZhPQp1bHQ6dGhpcy5h
cHAuaW5jb21wYXRpYmxlPTNEdHJ1ZTtpZihpLm9wdGlvbnMpe2o9M0R0aGlzLl9maWVsZFNlbGVj
dChpKX1lbHM9CmV7aj0zRHRoaXMuX2ZpZWxkVGV4dChpKX1jb25zb2xlLmRlYnVnKCJ0b29scy1m
b3JtOjpfYWRkUm93KCkgOiBBdXRvIG1hdGNoZT0KZCBmaWVsZCB0eXBlICgiK2kudHlwZSsiKS4i
KX1pZihpLnZhbHVlIT0zRD0zRHVuZGVmaW5lZCl7ai52YWx1ZShpLnZhbHVlKX1yPQpldHVybiBq
fSxfZmllbGREYXRhOmZ1bmN0aW9uKGkpe2lmKHRoaXMuYXBwLndvcmtmbG93KXt2YXIgaz0zRGUu
dGV4dGlmeShpLmU9Cnh0ZW5zaW9ucy50b1N0cmluZygpKTtpLmluZm89M0QiRGF0YSBpbnB1dCAn
IitpLm5hbWUrIicgKCIraysiKSI7cmV0dXJuIHRoaT0Kcy5fZmllbGRIaWRkZW4oaSl9dmFyIGo9
M0R0aGlzO3JldHVybiBuZXcgYS5WaWV3KHRoaXMuYXBwLHtpZDoiZmllbGQtIitpLmlkPQosZXh0
ZW5zaW9uczppLmV4dGVuc2lvbnMsbXVsdGlwbGU6aS5tdWx0aXBsZSx0eXBlOmkudHlwZSxkYXRh
Omkub3B0aW9ucyxvbmM9CmhhbmdlOmZ1bmN0aW9uKCl7ai5hcHAudHJpZ2dlcigicmVmcmVzaCIp
fX0pfSxfZmllbGRTZWxlY3Q6ZnVuY3Rpb24oail7aWYodD0KaGlzLmFwcC53b3JrZmxvdyYmai5p
c19keW5hbWljKXtpZighZS52YWxpZGF0ZShqLnZhbHVlKSl7ai52YWx1ZT0zRCIifXJldHVyPQpu
IHRoaXMuX2ZpZWxkVGV4dChqKX12YXIgbD0zRFtdO2Zvcih2YXIgbSBpbiBqLm9wdGlvbnMpe3Zh
ciBuPTNEai5vcHRpb25zW209Cl07bC5wdXNoKHtsYWJlbDpuWzBdLHZhbHVlOm5bMV19KX12YXIg
bz0zRGguU2VsZWN0O3N3aXRjaChqLmRpc3BsYXkpe2Nhc2UiYz0KaGVja2JveGVzIjpvPTNEaC5D
aGVja2JveDticmVhaztjYXNlInJhZGlvIjpvPTNEaC5SYWRpbzticmVha312YXIgaz0zRHRoaXM7
PQpyZXR1cm4gbmV3IG8uVmlldyh7aWQ6ImZpZWxkLSIrai5pZCxkYXRhOmwsZXJyb3JfdGV4dDpq
LmVycm9yX3RleHR8fCJObyBvcHQ9CmlvbnMgYXZhaWxhYmxlIixtdWx0aXBsZTpqLm11bHRpcGxl
LHNlYXJjaGFibGU6ai5zZWFyY2hhYmxlLG9uY2hhbmdlOmZ1bmN0aT0Kb24oKXtrLmFwcC50cmln
Z2VyKCJyZWZyZXNoIil9fSl9LF9maWVsZERyaWxsZG93bjpmdW5jdGlvbihpKXt2YXIgaj0zRHRo
aXM7PQpyZXR1cm4gbmV3IGguRHJpbGxkb3duLlZpZXcoe2lkOiJmaWVsZC0iK2kuaWQsZGF0YTpp
Lm9wdGlvbnMsZGlzcGxheTppLmRpc3A9CmxheSxvbmNoYW5nZTpmdW5jdGlvbigpe2ouYXBwLnRy
aWdnZXIoInJlZnJlc2giKX19KX0sX2ZpZWxkVGV4dDpmdW5jdGlvbihpKT0Ke3ZhciBqPTNEdGhp
cztyZXR1cm4gbmV3IGguSW5wdXQoe2lkOiJmaWVsZC0iK2kuaWQsYXJlYTppLmFyZWEsb25jaGFu
Z2U6ZnVuPQpjdGlvbigpe2ouYXBwLnRyaWdnZXIoInJlZnJlc2giKX19KX0sX2ZpZWxkU2xpZGVy
OmZ1bmN0aW9uKGkpe3ZhciBqPTNEdGhpczs9CnJldHVybiBuZXcgaC5TbGlkZXIuVmlldyh7aWQ6
ImZpZWxkLSIraS5pZCxwcmVjaXNlOmkudHlwZT0zRD0zRCJmbG9hdCIsbWluOj0KaS5taW4sbWF4
OmkubWF4LG9uY2hhbmdlOmZ1bmN0aW9uKCl7ai5hcHAudHJpZ2dlcigicmVmcmVzaCIpfX0pfSxf
ZmllbGRIaWRkPQplbjpmdW5jdGlvbihpKXtyZXR1cm4gbmV3IGguSGlkZGVuKHtpZDoiZmllbGQt
IitpLmlkLGluZm86aS5pbmZvfSl9LF9maWVsZEI9Cm9vbGVhbjpmdW5jdGlvbihpKXt2YXIgaj0z
RHRoaXM7cmV0dXJuIG5ldyBoLlJhZGlvQnV0dG9uLlZpZXcoe2lkOiJmaWVsZC0iKz0KaS5pZCxk
YXRhOlt7bGFiZWw6IlllcyIsdmFsdWU6InRydWUifSx7bGFiZWw6Ik5vIix2YWx1ZToiZmFsc2Ui
fV0sb25jaGFuZ2U6PQpmdW5jdGlvbigpe2ouYXBwLnRyaWdnZXIoInJlZnJlc2giKX19KX19KTty
ZXR1cm57VmlldzpnfX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCmRpZmYgLXIgYTI1
Y2U2M2NkY2YwN2NiMmQyMGZmMzQ3YmY0MmU4NmY0ZmQ0ZjIxYiAtciAzYmJlYTRmZmY5ZjIyYWYw
NTY1ZTEzNj0KZGJhNjU5OTI0MDNjMGE5YTUgc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy90b29s
cy90b29scy10ZW1wbGF0ZS5qcwotLS0gYS9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3Rvb2xz
L3Rvb2xzLXRlbXBsYXRlLmpzCisrKyBiL3N0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvdG9vbHMv
dG9vbHMtdGVtcGxhdGUuanMKQEAgLTEsMSArMSwxIEBACi1kZWZpbmUoW10sZnVuY3Rpb24oKXty
ZXR1cm57aGVscDpmdW5jdGlvbihhKXtyZXR1cm4nPGRpdiBjbGFzcz0zRCJ0b29sSGVscD0KIj48
ZGl2IGNsYXNzPTNEInRvb2xIZWxwQm9keSI+JythKyI8L2Rpdj48L2Rpdj4ifSxzdWNjZXNzOmZ1
bmN0aW9uKGMpe2lmKCFjPQouam9ic3x8IWMuam9icy5sZW5ndGgpe2NvbnNvbGUuZGVidWcoInRv
b2xzLXRlbXBsYXRlOjpzdWNjZXNzKCkgLSBGYWlsZWQgam89CmJzLiIpO3JldHVybn12YXIgYT0z
RGMuam9icy5sZW5ndGg7dmFyIGQ9M0QiIjtpZihhPTNEPTNEMSl7ZD0zRCIxIGpvYiBoYXMifT0K
ZWxzZXtkPTNEYSsiIGpvYnMgaGF2ZSJ9dmFyIGI9M0QnPGRpdiBjbGFzcz0zRCJkb25lbWVzc2Fn
ZWxhcmdlIj48cD4nK2QrIiBiPQplZW4gc3VjY2Vzc2Z1bGx5IGFkZGVkIHRvIHRoZSBxdWV1ZSAt
IHJlc3VsdGluZyBpbiB0aGUgZm9sbG93aW5nIGRhdGFzZXRzOjw9Ci9wPiI7Zm9yKHZhciBlIGlu
IGMub3V0cHV0cyl7Yis9M0QnPHAgc3R5bGU9M0QicGFkZGluZzogMTBweCAyMHB4OyI+PGI+Jyso
cD0KYXJzZUludChlKSsxKSsiOiAiK2Mub3V0cHV0c1tlXS5uYW1lKyI8L2I+PC9wPiJ9Yis9M0Qi
PHA+WW91IGNhbiBjaGVjayB0aGUgPQpzdGF0dXMgb2YgcXVldWVkIGpvYnMgYW5kIHZpZXcgdGhl
IHJlc3VsdGluZyBkYXRhIGJ5IHJlZnJlc2hpbmcgdGhlIEhpc3Rvcnk9CiBwYW5lLiBXaGVuIHRo
ZSBqb2IgaGFzIGJlZW4gcnVuIHRoZSBzdGF0dXMgd2lsbCBjaGFuZ2UgZnJvbSAncnVubmluZycg
dG8gJz0KZmluaXNoZWQnIGlmIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkgb3IgJ2Vycm9yJyBpZiBw
cm9ibGVtcyB3ZXJlIGVuY291bnRlcmVkPQouPC9wPjwvZGl2PiI7cmV0dXJuIGJ9LGVycm9yOmZ1
bmN0aW9uKGEpe3JldHVybic8ZGl2PjxwPlRoZSBzZXJ2ZXIgY291bGQgbm89CnQgY29tcGxldGUg
dGhlIHJlcXVlc3QuIFBsZWFzZSBjb250YWN0IHRoZSBHYWxheHkgVGVhbSBpZiB0aGlzIGVycm9y
IHBlcnNpcz0KdHMuPC9wPjx0ZXh0YXJlYSBjbGFzcz0zRCJ1aS10ZXh0YXJlYSIgZGlzYWJsZWQg
c3R5bGU9M0QiY29sb3I6IGJsYWNrOyIgcm93PQpzPTNEIjYiPicrSlNPTi5zdHJpbmdpZnkoYSx1
bmRlZmluZWQsNCkrIjwvdGV4dGFyZWE+PC9kaXY+In0sYmF0Y2hNb2RlOmZ1bmM9CnRpb24oKXty
ZXR1cm4nPGRpdiBjbGFzcz0zRCJ1aS10YWJsZS1mb3JtLWluZm8iPjxpIGNsYXNzPTNEImZhIGZh
LXNpdGVtYXAiID0Kc3R5bGU9M0QiZm9udC1zaXplOiAxLjJlbTsgcGFkZGluZzogMnB4IDVweDsi
Lz5UaGlzIGlzIGEgYmF0Y2ggbW9kZSBpbnB1dCBmPQppZWxkLiBBIHNlcGFyYXRlIGpvYiB3aWxs
IGJlIHRyaWdnZXJlZCBmb3IgZWFjaCBkYXRhc2V0LjwvZGl2Pid9LHJlcXVpcmVtZW49CnRzOmZ1
bmN0aW9uKGEpe3ZhciBkPTNEIlRoaXMgdG9vbCByZXF1aXJlcyAiO2Zvcih2YXIgYiBpbiBhLnJl
cXVpcmVtZW50cyl7dj0KYXIgYz0zRGEucmVxdWlyZW1lbnRzW2JdO2QrPTNEYy5uYW1lO2lmKGMu
dmVyc2lvbil7ZCs9M0QiIChWZXJzaW9uICIrYy52ZXJzPQppb24rIikifWlmKGI8YS5yZXF1aXJl
bWVudHMubGVuZ3RoLTIpe2QrPTNEIiwgIn1pZihiPTNEPTNEYS5yZXF1aXJlbWVudHMubGU9Cm5n
dGgtMil7ZCs9M0QiIGFuZCAifX1yZXR1cm4gZCsnLiBDbGljayA8YSB0YXJnZXQ9M0QiX2JsYW5r
IiBocmVmPTNEImh0dHBzOj0KLy93aWtpLmdhbGF4eXByb2plY3Qub3JnL1Rvb2xzL1JlcXVpcmVt
ZW50cyI+aGVyZTwvYT4gZm9yIG1vcmUgaW5mb3JtYXRpb24uPQonfX19KTsKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCitkZWZpbmUoW10sZnVuY3Rpb24oKXtyZXR1cm57aGVscDpmdW5jdGlv
bihhKXtyZXR1cm4nPGRpdiBjbGFzcz0zRCJ0b29sSGVscD0KIiBzdHlsZT0zRCJvdmVyZmxvdzog
YXV0bzsiPjxkaXYgY2xhc3M9M0QidG9vbEhlbHBCb2R5Ij4nK2ErIjwvZGl2PjwvZGl2PiJ9PQos
c3VjY2VzczpmdW5jdGlvbihjKXtpZighYy5qb2JzfHwhYy5qb2JzLmxlbmd0aCl7Y29uc29sZS5k
ZWJ1ZygidG9vbHMtdGVtcGw9CmF0ZTo6c3VjY2VzcygpIC0gRmFpbGVkIGpvYnMuIik7cmV0dXJu
fXZhciBhPTNEYy5qb2JzLmxlbmd0aDt2YXIgZD0zRCIiO2lmKD0KYT0zRD0zRDEpe2Q9M0QiMSBq
b2IgaGFzIn1lbHNle2Q9M0RhKyIgam9icyBoYXZlIn12YXIgYj0zRCc8ZGl2IGNsYXNzPTNEImRv
PQpuZW1lc3NhZ2VsYXJnZSI+PHA+JytkKyIgYmVlbiBzdWNjZXNzZnVsbHkgYWRkZWQgdG8gdGhl
IHF1ZXVlIC0gcmVzdWx0aW5nIGk9Cm4gdGhlIGZvbGxvd2luZyBkYXRhc2V0czo8L3A+Ijtmb3Io
dmFyIGUgaW4gYy5vdXRwdXRzKXtiKz0zRCc8cCBzdHlsZT0zRCJwYT0KZGRpbmc6IDEwcHggMjBw
eDsiPjxiPicrKHBhcnNlSW50KGUpKzEpKyI6ICIrYy5vdXRwdXRzW2VdLm5hbWUrIjwvYj48L3A+
In1iPQorPTNEIjxwPllvdSBjYW4gY2hlY2sgdGhlIHN0YXR1cyBvZiBxdWV1ZWQgam9icyBhbmQg
dmlldyB0aGUgcmVzdWx0aW5nIGRhdGE9CiBieSByZWZyZXNoaW5nIHRoZSBIaXN0b3J5IHBhbmUu
IFdoZW4gdGhlIGpvYiBoYXMgYmVlbiBydW4gdGhlIHN0YXR1cyB3aWxsID0KY2hhbmdlIGZyb20g
J3J1bm5pbmcnIHRvICdmaW5pc2hlZCcgaWYgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBvciAnZXJy
b3InIGlmPQogcHJvYmxlbXMgd2VyZSBlbmNvdW50ZXJlZC48L3A+PC9kaXY+IjtyZXR1cm4gYn0s
ZXJyb3I6ZnVuY3Rpb24oYSl7cmV0dXJuJzw9CmRpdj48cD5UaGUgc2VydmVyIGNvdWxkIG5vdCBj
b21wbGV0ZSB0aGUgcmVxdWVzdC4gUGxlYXNlIGNvbnRhY3QgdGhlIEdhbGF4eT0KIFRlYW0gaWYg
dGhpcyBlcnJvciBwZXJzaXN0cy48L3A+PHRleHRhcmVhIGNsYXNzPTNEInVpLXRleHRhcmVhIiBk
aXNhYmxlZCBzPQp0eWxlPTNEImNvbG9yOiBibGFjazsiIHJvd3M9M0QiNiI+JytKU09OLnN0cmlu
Z2lmeShhLHVuZGVmaW5lZCw0KSsiPC90ZXh0YXI9CmVhPjwvZGl2PiJ9LGJhdGNoTW9kZTpmdW5j
dGlvbigpe3JldHVybic8ZGl2IGNsYXNzPTNEInVpLXRhYmxlLWZvcm0taW5mbyI+PD0KaSBjbGFz
cz0zRCJmYSBmYS1zaXRlbWFwIiBzdHlsZT0zRCJmb250LXNpemU6IDEuMmVtOyBwYWRkaW5nOiAy
cHggNXB4OyIvPlRoPQppcyBpcyBhIGJhdGNoIG1vZGUgaW5wdXQgZmllbGQuIEEgc2VwYXJhdGUg
am9iIHdpbGwgYmUgdHJpZ2dlcmVkIGZvciBlYWNoIGQ9CmF0YXNldC48L2Rpdj4nfSxyZXF1aXJl
bWVudHM6ZnVuY3Rpb24oYSl7dmFyIGQ9M0QiVGhpcyB0b29sIHJlcXVpcmVzICI7Zm9yKD0KdmFy
IGIgaW4gYS5yZXF1aXJlbWVudHMpe3ZhciBjPTNEYS5yZXF1aXJlbWVudHNbYl07ZCs9M0RjLm5h
bWU7aWYoYy52ZXJzaW9uPQope2QrPTNEIiAoVmVyc2lvbiAiK2MudmVyc2lvbisiKSJ9aWYoYjxh
LnJlcXVpcmVtZW50cy5sZW5ndGgtMil7ZCs9M0QiLCAifWk9CmYoYj0zRD0zRGEucmVxdWlyZW1l
bnRzLmxlbmd0aC0yKXtkKz0zRCIgYW5kICJ9fXJldHVybiBkKycuIENsaWNrIDxhIHRhcmdldD0K
PTNEIl9ibGFuayIgaHJlZj0zRCJodHRwczovL3dpa2kuZ2FsYXh5cHJvamVjdC5vcmcvVG9vbHMv
UmVxdWlyZW1lbnRzIj5oZXJlPQo8L2E+IGZvciBtb3JlIGluZm9ybWF0aW9uLid9fX0pOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCmRpZmYgLXIgYTI1Y2U2M2NkY2YwN2NiMmQyMGZmMzQ3
YmY0MmU4NmY0ZmQ0ZjIxYiAtciAzYmJlYTRmZmY5ZjIyYWYwNTY1ZTEzNj0KZGJhNjU5OTI0MDNj
MGE5YTUgc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy90b29scy90b29scy10cmVlLmpzCi0tLSBh
L3N0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvdG9vbHMvdG9vbHMtdHJlZS5qcworKysgYi9zdGF0
aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3Rvb2xzL3Rvb2xzLXRyZWUuanMKQEAgLTEsMSArMSwxIEBA
Ci1kZWZpbmUoWyJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGEpe3JldHVybiBCYWNrYm9uZS5Nb2Rl
bC5leHRlbmQoe2luaXRpYWxpej0KZTpmdW5jdGlvbihiKXt0aGlzLmFwcD0zRGJ9LGZpbmFsaXpl
OmZ1bmN0aW9uKGcpe3ZhciBiPTNEdGhpczt0aGlzLm1hcF9kaWN0PQo9M0R7fTtpZighdGhpcy5h
cHAuc2VjdGlvbil7cmV0dXJue319Zz0zRGd8fHt9O3ZhciBmPTNEe307dmFyIGU9M0R7fTt0aGlz
Ll89Cml0ZXJhdGUodGhpcy5hcHAuc2VjdGlvbi4kZWwsZSk7ZnVuY3Rpb24gZChqLGksaCl7Zltq
XT0zRGg7Yi5tYXBfZGljdFtqXT0zRD0KaX1mdW5jdGlvbiBjKG8scil7Zm9yKHZhciBtIGluIHIp
e3ZhciBrPTNEclttXTtpZihrLmlucHV0KXt2YXIgdD0zRGsuaW5wdXQ7PQp2YXIgbj0zRG87aWYo
byE9M0QiIil7bis9M0QifCJ9bis9M0R0Lm5hbWU7c3dpdGNoKHQudHlwZSl7Y2FzZSJyZXBlYXQi
OnZhciA9Cmo9M0Qic2VjdGlvbi0iO3ZhciB3PTNEW107dmFyIHE9M0RudWxsO2Zvcih2YXIgdiBp
biBrKXt2YXIgcD0zRHYuaW5kZXhPZihqKT0KO2lmKHAhPTNELTEpe3ArPTNEai5sZW5ndGg7dy5w
dXNoKHBhcnNlSW50KHYuc3Vic3RyKHApKSk7aWYoIXEpe3E9M0R2LnN1YnN0PQpyKDAscCl9fX13
LnNvcnQoZnVuY3Rpb24oeCxpKXtyZXR1cm4geC1pfSk7dmFyIG09M0QwO2Zvcih2YXIgbCBpbiB3
KXtjKG4rIl89CiIrbSsrLGtbcSt3W2xdXSl9YnJlYWs7Y2FzZSJjb25kaXRpb25hbCI6dmFyIHU9
M0RiLmFwcC5maWVsZF9saXN0W3QuaWRdLnZhbD0KdWUoKTtpZihnW3QudGVzdF9wYXJhbS50eXBl
XSl7dT0zRGdbdC50ZXN0X3BhcmFtLnR5cGVdKHUpfWQobisifCIrdC50ZXN0X3BhPQpyYW0ubmFt
ZSx0LmlkLHUpO3ZhciBoPTNEYi5tYXRjaENhc2UodCx1KTtpZihoIT0zRC0xKXtjKG4sclt0Lmlk
KyItc2VjdGlvbi09CiIraF0pfWJyZWFrO2Nhc2Uic2VjdGlvbiI6YygiIixrKTticmVhaztkZWZh
dWx0OnZhciBzPTNEYi5hcHAuZmllbGRfbGlzdFt0Lj0KaWRdO2lmKHMmJnMudmFsdWUpe3ZhciB1
PTNEcy52YWx1ZSgpO2lmKGdbdC50eXBlXSl7dT0zRGdbdC50eXBlXSh1KX1pZighcy5zPQpraXAp
e2lmKHMudmFsaWRhdGUmJiFzLnZhbGlkYXRlKHUpKXt1PTNEbnVsbH1pZih0Lmlnbm9yZT0zRD0z
RD0zRHVuZGVmaW5lZHw9CnwodSYmdC5pZ25vcmUhPTNEdSkpe2Qobix0LmlkLHUpfX19fX19fWMo
IiIsZSk7cmV0dXJuIGZ9LG1hdGNoOmZ1bmN0aW9uKGIpez0KcmV0dXJuIHRoaXMubWFwX2RpY3Qm
JnRoaXMubWFwX2RpY3RbYl19LG1hdGNoQ2FzZTpmdW5jdGlvbihiLGQpe2lmKGIudGVzdF9wPQph
cmFtLnR5cGU9M0Q9M0QiYm9vbGVhbiIpe2lmKGQ9M0Q9M0QidHJ1ZSIpe2Q9M0RiLnRlc3RfcGFy
YW0udHJ1ZXZhbHVlfHwidHI9CnVlIn1lbHNle2Q9M0RiLnRlc3RfcGFyYW0uZmFsc2V2YWx1ZXx8
ImZhbHNlIn19Zm9yKHZhciBjIGluIGIuY2FzZXMpe2lmKGIuYz0KYXNlc1tjXS52YWx1ZT0zRD0z
RGQpe3JldHVybiBjfX1yZXR1cm4gLTF9LG1hdGNoTW9kZWw6ZnVuY3Rpb24oZCxmKXt2YXIgYj0K
PTNEe307dmFyIGM9M0R0aGlzO2Z1bmN0aW9uIGUoZyxwKXtmb3IodmFyIG0gaW4gcCl7dmFyIGs9
M0RwW21dO3ZhciBuPTNEay5uPQphbWU7aWYoZyE9M0QiIil7bj0zRGcrInwiK259c3dpdGNoKGsu
dHlwZSl7Y2FzZSJyZXBlYXQiOmZvcih2YXIgbCBpbiBrLmNhY2g9CmUpe2UobisiXyIrbCxrLmNh
Y2hlW2xdKX1icmVhaztjYXNlImNvbmRpdGlvbmFsIjp2YXIgcT0zRGsudGVzdF9wYXJhbSYmay50
ZT0Kc3RfcGFyYW0udmFsdWU7dmFyIGg9M0RjLm1hdGNoQ2FzZShrLHEpO2lmKGghPTNELTEpe2Uo
bixrLmNhc2VzW2hdLmlucHV0cyl9PQpicmVhaztkZWZhdWx0OnZhciBvPTNEYy5tYXBfZGljdFtu
XTtpZihvKXtmKG8sayl9fX19ZSgiIixkLmlucHV0cyk7cmV0dXJuIGI9Cn0sbWF0Y2hSZXNwb25z
ZTpmdW5jdGlvbihkKXt2YXIgYj0zRHt9O3ZhciBjPTNEdGhpcztmdW5jdGlvbiBlKGwsail7aWYo
dHlwZT0Kb2Ygaj0zRD0zRD0zRCJzdHJpbmciKXt2YXIgZz0zRGMubWFwX2RpY3RbbF07aWYoZyl7
YltnXT0zRGp9fWVsc2V7Zm9yKHZhciBoPQogaW4gail7dmFyIGY9M0RoO2lmKGwhPTNEPTNEIiIp
e3ZhciBrPTNEInwiO2lmKGogaW5zdGFuY2VvZiBBcnJheSl7az0zRCJfIn09CmY9M0RsK2srZn1l
KGYsaltoXSl9fX1lKCIiLGQpO3JldHVybiBifSxfaXRlcmF0ZTpmdW5jdGlvbihkLGUpe3ZhciBi
PTNEdGhpcz0KO3ZhciBjPTNEJChkKS5jaGlsZHJlbigpO2MuZWFjaChmdW5jdGlvbigpe3ZhciBo
PTNEdGhpczt2YXIgZz0zRCQoaCkuYXR0cigiPQppZCIpO2lmKCQoaCkuaGFzQ2xhc3MoInNlY3Rp
b24tcm93Iikpe2VbZ109M0R7fTt2YXIgZj0zRGIuYXBwLmlucHV0X2xpc3RbZ109CjtpZihmKXtl
W2ddPTNEe2lucHV0OmZ9fWIuX2l0ZXJhdGUoaCxlW2ddKX1lbHNle2IuX2l0ZXJhdGUoaCxlKX19
KX19KX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RlZmluZShbInV0aWxzL3V0aWxz
Il0sZnVuY3Rpb24oYSl7cmV0dXJuIEJhY2tib25lLk1vZGVsLmV4dGVuZCh7aW5pdGlhbGl6PQpl
OmZ1bmN0aW9uKGIpe3RoaXMuYXBwPTNEYn0sZmluYWxpemU6ZnVuY3Rpb24oZyl7dmFyIGI9M0R0
aGlzO3RoaXMubWFwX2RpY3Q9Cj0zRHt9O2lmKCF0aGlzLmFwcC5zZWN0aW9uKXtyZXR1cm57fX1n
PTNEZ3x8e307dmFyIGY9M0R7fTt2YXIgZT0zRHt9O3RoaXMuXz0KaXRlcmF0ZSh0aGlzLmFwcC5z
ZWN0aW9uLiRlbCxlKTtmdW5jdGlvbiBkKGosaSxoKXtmW2pdPTNEaDtiLm1hcF9kaWN0W2pdPTNE
PQppfWZ1bmN0aW9uIGMocCxzKXtmb3IodmFyIG4gaW4gcyl7dmFyIGs9M0RzW25dO2lmKGsuaW5w
dXQpe3ZhciB1PTNEay5pbnB1dDs9CnZhciBvPTNEcDtpZihwIT0zRCIiKXtvKz0zRCJ8In1vKz0z
RHUubmFtZTtzd2l0Y2godS50eXBlKXtjYXNlInJlcGVhdCI6dmFyID0Kaj0zRCJzZWN0aW9uLSI7
dmFyIHg9M0RbXTt2YXIgcj0zRG51bGw7Zm9yKHZhciB3IGluIGspe3ZhciBxPTNEdy5pbmRleE9m
KGopPQo7aWYocSE9M0QtMSl7cSs9M0RqLmxlbmd0aDt4LnB1c2gocGFyc2VJbnQody5zdWJzdHIo
cSkpKTtpZighcil7cj0zRHcuc3Vic3Q9CnIoMCxxKX19fXguc29ydChmdW5jdGlvbih5LGkpe3Jl
dHVybiB5LWl9KTt2YXIgbj0zRDA7Zm9yKHZhciBsIGluIHgpe2MobysiXz0KIituKyssa1tyK3hb
bF1dKX1icmVhaztjYXNlImNvbmRpdGlvbmFsIjp2YXIgdj0zRGIuYXBwLmZpZWxkX2xpc3RbdS5p
ZF0udmFsPQp1ZSgpO2lmKGdbdS50ZXN0X3BhcmFtLnR5cGVdKXt2PTNEZ1t1LnRlc3RfcGFyYW0u
dHlwZV0odil9ZChvKyJ8Iit1LnRlc3RfcGE9CnJhbS5uYW1lLHUuaWQsdik7dmFyIGg9M0RiLm1h
dGNoQ2FzZSh1LHYpO2lmKGghPTNELTEpe2MobyxzW3UuaWQrIi1zZWN0aW9uLT0KIitoXSl9YnJl
YWs7Y2FzZSJzZWN0aW9uIjpjKCIiLGspO2JyZWFrO2RlZmF1bHQ6dmFyIHQ9M0RiLmFwcC5maWVs
ZF9saXN0W3UuPQppZF07aWYodCYmdC52YWx1ZSl7dmFyIHY9M0R0LnZhbHVlKCk7aWYoZ1t1LnR5
cGVdKXt2PTNEZ1t1LnR5cGVdKHYpfWlmKCF0LnM9CmtpcHx8Yi5hcHAud29ya2Zsb3cpe2lmKHQu
dmFsaWRhdGUmJiF0LnZhbGlkYXRlKCkpe3Y9M0RudWxsfWlmKHUuaWdub3JlPTNEPQo9M0Q9M0R1
bmRlZmluZWR8fCh2IT0zRD0zRG51bGwmJnUuaWdub3JlIT0zRHYpKXtkKG8sdS5pZCx2KTtpZih1
LnBheWxvYWQpe2Y9Cm9yKHZhciBtIGluIHUucGF5bG9hZCl7ZChtLHUuaWQsdS5wYXlsb2FkW21d
KX19fX19fX19fWMoIiIsZSk7cmV0dXJuIGZ9LG1hdD0KY2g6ZnVuY3Rpb24oYil7cmV0dXJuIHRo
aXMubWFwX2RpY3QmJnRoaXMubWFwX2RpY3RbYl19LG1hdGNoQ2FzZTpmdW5jdGlvbihiPQosZCl7
aWYoYi50ZXN0X3BhcmFtLnR5cGU9M0Q9M0QiYm9vbGVhbiIpe2lmKGQ9M0Q9M0QidHJ1ZSIpe2Q9
M0RiLnRlc3RfcGFyYW09Ci50cnVldmFsdWV8fCJ0cnVlIn1lbHNle2Q9M0RiLnRlc3RfcGFyYW0u
ZmFsc2V2YWx1ZXx8ImZhbHNlIn19Zm9yKHZhciBjIGluID0KYi5jYXNlcyl7aWYoYi5jYXNlc1tj
XS52YWx1ZT0zRD0zRGQpe3JldHVybiBjfX1yZXR1cm4gLTF9LG1hdGNoTW9kZWw6ZnVuY3RpPQpv
bihkLGYpe3ZhciBiPTNEe307dmFyIGM9M0R0aGlzO2Z1bmN0aW9uIGUoZyxwKXtmb3IodmFyIG0g
aW4gcCl7dmFyIGs9M0RwW209Cl07dmFyIG49M0RrLm5hbWU7aWYoZyE9M0QiIil7bj0zRGcrInwi
K259c3dpdGNoKGsudHlwZSl7Y2FzZSJyZXBlYXQiOmZvcih2YT0KciBsIGluIGsuY2FjaGUpe2Uo
bisiXyIrbCxrLmNhY2hlW2xdKX1icmVhaztjYXNlImNvbmRpdGlvbmFsIjp2YXIgcT0zRGsudGVz
PQp0X3BhcmFtJiZrLnRlc3RfcGFyYW0udmFsdWU7dmFyIGg9M0RjLm1hdGNoQ2FzZShrLHEpO2lm
KGghPTNELTEpe2UobixrLmNhc2U9CnNbaF0uaW5wdXRzKX1icmVhaztkZWZhdWx0OnZhciBvPTNE
Yy5tYXBfZGljdFtuXTtpZihvKXtmKG8sayl9fX19ZSgiIixkLmlucD0KdXRzKTtyZXR1cm4gYn0s
bWF0Y2hSZXNwb25zZTpmdW5jdGlvbihkKXt2YXIgYj0zRHt9O3ZhciBjPTNEdGhpcztmdW5jdGlv
biBlPQoobCxqKXtpZih0eXBlb2Ygaj0zRD0zRD0zRCJzdHJpbmciKXt2YXIgZz0zRGMubWFwX2Rp
Y3RbbF07aWYoZyl7YltnXT0zRGp9fWU9CmxzZXtmb3IodmFyIGggaW4gail7dmFyIGY9M0RoO2lm
KGwhPTNEPTNEIiIpe3ZhciBrPTNEInwiO2lmKGogaW5zdGFuY2VvZiBBcj0KcmF5KXtrPTNEIl8i
fWY9M0RsK2srZn1lKGYsaltoXSl9fX1lKCIiLGQpO3JldHVybiBifSxfaXRlcmF0ZTpmdW5jdGlv
bihkLGUpPQp7dmFyIGI9M0R0aGlzO3ZhciBjPTNEJChkKS5jaGlsZHJlbigpO2MuZWFjaChmdW5j
dGlvbigpe3ZhciBoPTNEdGhpczt2YXIgZz0KPTNEJChoKS5hdHRyKCJpZCIpO2lmKCQoaCkuaGFz
Q2xhc3MoInNlY3Rpb24tcm93Iikpe2VbZ109M0R7fTt2YXIgZj0zRGIuYXBwPQouaW5wdXRfbGlz
dFtnXTtpZihmKXtlW2ddPTNEe2lucHV0OmZ9fWIuX2l0ZXJhdGUoaCxlW2ddKX1lbHNle2IuX2l0
ZXJhdGUoaCw9CmUpfX0pfX0pfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKZGlmZiAt
ciBhMjVjZTYzY2RjZjA3Y2IyZDIwZmYzNDdiZjQyZTg2ZjRmZDRmMjFiIC1yIDNiYmVhNGZmZjlm
MjJhZjA1NjVlMTM2PQpkYmE2NTk5MjQwM2MwYTlhNSBzdGF0aWMvc2NyaXB0cy9wYWNrZWQvdXRp
bHMvdXRpbHMuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvcGFja2VkL3V0aWxzL3V0aWxzLmpzCisr
KyBiL3N0YXRpYy9zY3JpcHRzL3BhY2tlZC91dGlscy91dGlscy5qcwpAQCAtMSwxICsxLDEgQEAK
LWRlZmluZShbImxpYnMvdW5kZXJzY29yZSJdLGZ1bmN0aW9uKG0pe2Z1bmN0aW9uIGQobil7cmV0
dXJuICQoIjxkaXYvPiIpLnRlPQp4dChuKS5odG1sKCl9ZnVuY3Rpb24gbChvKXtpZighKG8gaW5z
dGFuY2VvZiBBcnJheSkpe289M0Rbb119Zm9yKHZhciBuIGluIG89Cil7aWYoWyJOb25lIixudWxs
LCJudWxsIix1bmRlZmluZWQsInVuZGVmaW5lZCJdLmluZGV4T2Yob1tuXSk+LTEpe3JldHVybiBm
YT0KbHNlfX1yZXR1cm4gdHJ1ZX1mdW5jdGlvbiBoKG4pe3ZhciBuPTNEbi50b1N0cmluZygpO2lm
KG4pe249M0RuLnJlcGxhY2UoLywvPQpnLCIsICIpO3ZhciBvPTNEbi5sYXN0SW5kZXhPZigiLCAi
KTtpZihvIT0zRC0xKXtuPTNEbi5zdWJzdHIoMCxvKSsiIG9yICIrbi49CnN1YnN0cihvKzEpfXJl
dHVybiBufXJldHVybiIifWZ1bmN0aW9uIGUobil7dG9wLl9fdXRpbHNfX2dldF9fPTNEdG9wLl9f
dXRpbD0Kc19fZ2V0X198fHt9O2lmKG4uY2FjaGUmJnRvcC5fX3V0aWxzX19nZXRfX1tuLnVybF0p
e24uc3VjY2VzcyYmbi5zdWNjZXNzKHRvPQpwLl9fdXRpbHNfX2dldF9fW24udXJsXSk7Y29uc29s
ZS5kZWJ1ZygidXRpbHMuanM6OmdldCgpIC0gRmV0Y2hpbmcgZnJvbSBjYWM9CmhlIFsiK24udXJs
KyJdLiIpfWVsc2V7aSh7dXJsOm4udXJsLGRhdGE6bi5kYXRhLHN1Y2Nlc3M6ZnVuY3Rpb24obyl7
dG9wLl9fdT0KdGlsc19fZ2V0X19bbi51cmxdPTNEbztuLnN1Y2Nlc3MmJm4uc3VjY2VzcyhvKX0s
ZXJyb3I6ZnVuY3Rpb24obyl7bi5lcnJvciYmPQpuLmVycm9yKG8pfX0pfX1mdW5jdGlvbiBpKG8p
e3ZhciBuPTNEe2NvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9qc29uIix0eXBlOm89Ci50eXBlfHwi
R0VUIixkYXRhOm8uZGF0YXx8e30sdXJsOm8udXJsfTtpZihuLnR5cGU9M0Q9M0QiR0VUInx8bi50
eXBlPTNEPTNEIj0KREVMRVRFIil7aWYobi51cmwuaW5kZXhPZigiPyIpPTNEPTNELTEpe24udXJs
Kz0zRCI/In1lbHNle24udXJsKz0zRCImIn1uLnVyPQpsPTNEbi51cmwrJC5wYXJhbShuLmRhdGEp
O24uZGF0YT0zRG51bGx9ZWxzZXtuLmRhdGFUeXBlPTNEImpzb24iO24udXJsPTNEbi49CnVybDtu
LmRhdGE9M0RKU09OLnN0cmluZ2lmeShuLmRhdGEpfSQuYWpheChuKS5kb25lKGZ1bmN0aW9uKHAp
e2lmKHR5cGVvZiBwPQo9M0Q9M0Q9M0Qic3RyaW5nIil7dHJ5e3A9M0RwLnJlcGxhY2UoIkluZmlu
aXR5LCIsJyJJbmZpbml0eSIsJyk7cD0zRGpRdWVyeS49CnBhcnNlSlNPTihwKX1jYXRjaChxKXtj
b25zb2xlLmRlYnVnKHEpfX1vLnN1Y2Nlc3MmJm8uc3VjY2VzcyhwKX0pLmZhaWwoZnVuYz0KdGlv
bihxKXt2YXIgcD0zRG51bGw7dHJ5e3A9M0RqUXVlcnkucGFyc2VKU09OKHEucmVzcG9uc2VUZXh0
KX1jYXRjaChyKXtwPTNEPQpxLnJlc3BvbnNlVGV4dH1vLmVycm9yJiZvLmVycm9yKHAscSl9KX1m
dW5jdGlvbiBqKHEsbil7dmFyIG89M0QkKCc8ZGl2IGNsYXM9CnM9M0QiJytxKyciPjwvZGl2Picp
O28uYXBwZW5kVG8oIjplcSgwKSIpO3ZhciBwPTNEby5jc3Mobik7by5yZW1vdmUoKTtyZXR1cj0K
biBwfWZ1bmN0aW9uIGcobil7aWYoISQoJ2xpbmtbaHJlZl49M0QiJytuKyciXScpLmxlbmd0aCl7
JCgnPGxpbmsgaHJlZj0zRCInPQorZ2FsYXh5X2NvbmZpZy5yb290K24rJyIgcmVsPTNEInN0eWxl
c2hlZXQiPicpLmFwcGVuZFRvKCJoZWFkIil9fWZ1bmN0aW9uIGs9CihuLG8pe2lmKG4pe3JldHVy
biBtLmRlZmF1bHRzKG4sbyl9ZWxzZXtyZXR1cm4gb319ZnVuY3Rpb24gYihvLHEpe3ZhciBwPTNE
Ij0KIjtpZihvPj0zRDEwMDAwMDAwMDAwMCl7bz0zRG8vMTAwMDAwMDAwMDAwO3A9M0QiVEIifWVs
c2V7aWYobz49M0QxMDAwMDAwMDApPQp7bz0zRG8vMTAwMDAwMDAwO3A9M0QiR0IifWVsc2V7aWYo
bz49M0QxMDAwMDApe289M0RvLzEwMDAwMDtwPTNEIk1CIn1lbHNle2k9CmYobz49M0QxMDApe289
M0RvLzEwMDtwPTNEIktCIn1lbHNle2lmKG8+MCl7bz0zRG8qMTA7cD0zRCJiIn1lbHNle3JldHVy
biI8cz0KdHJvbmc+LTwvc3Ryb25nPiJ9fX19fXZhciBuPTNEKE1hdGgucm91bmQobykvMTApO2lm
KHEpe3JldHVybiBuKyIgIitwfWVsc2V7PQpyZXR1cm4iPHN0cm9uZz4iK24rIjwvc3Ryb25nPiAi
K3B9fWZ1bmN0aW9uIGEoKXtyZXR1cm4ieCIrTWF0aC5yYW5kb20oKS50b1M9CnRyaW5nKDM2KS5z
dWJzdHJpbmcoMiw5KX1mdW5jdGlvbiBjKG4pe3ZhciBvPTNEJCgiPHA+PC9wPiIpO28uYXBwZW5k
KG4pO3JldD0KdXJuIG99ZnVuY3Rpb24gZigpe3ZhciBwPTNEbmV3IERhdGUoKTt2YXIgbj0zRChw
LmdldEhvdXJzKCk8MTA/IjAiOiIiKStwLmdlPQp0SG91cnMoKTt2YXIgbz0zRChwLmdldE1pbnV0
ZXMoKTwxMD8iMCI6IiIpK3AuZ2V0TWludXRlcygpO3ZhciBxPTNEcC5nZXREYXQ9CmUoKSsiLyIr
KHAuZ2V0TW9udGgoKSsxKSsiLyIrcC5nZXRGdWxsWWVhcigpKyIsICIrbisiOiIrbztyZXR1cm4g
cX1yZXR1cm57Yz0Kc3NMb2FkRmlsZTpnLGNzc0dldEF0dHJpYnV0ZTpqLGdldDplLG1lcmdlOmss
Ynl0ZXNUb1N0cmluZzpiLHV1aWQ6YSx0aW1lOmYsPQp3cmFwOmMscmVxdWVzdDppLHNhbml0aXpl
OmQsdGV4dGlmeTpoLHZhbGlkYXRlOmx9fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQor
ZGVmaW5lKFsibGlicy91bmRlcnNjb3JlIl0sZnVuY3Rpb24obSl7ZnVuY3Rpb24gbihyLHEpe2Zv
cih2YXIgbyBpbiByKXt2YXI9CiBwPTNEcltvXTtpZihwJiZ0eXBlb2YocCk9M0Q9M0Qib2JqZWN0
Iil7cShwKTtuKHAscSl9fX1mdW5jdGlvbiBkKG8pe3JldHVybj0KICQoIjxkaXYvPiIpLnRleHQo
bykuaHRtbCgpfWZ1bmN0aW9uIGwocCl7aWYoIShwIGluc3RhbmNlb2YgQXJyYXkpKXtwPTNEW3Bd
PQp9Zm9yKHZhciBvIGluIHApe2lmKFsiTm9uZSIsbnVsbCwibnVsbCIsdW5kZWZpbmVkLCJ1bmRl
ZmluZWQiXS5pbmRleE9mKHBbb109Cik+LTEpe3JldHVybiBmYWxzZX19cmV0dXJuIHRydWV9ZnVu
Y3Rpb24gaChvKXt2YXIgbz0zRG8udG9TdHJpbmcoKTtpZihvKXtvPQo9M0RvLnJlcGxhY2UoLywv
ZywiLCAiKTt2YXIgcD0zRG8ubGFzdEluZGV4T2YoIiwgIik7aWYocCE9M0QtMSl7bz0zRG8uc3Vi
c3Q9CnIoMCxwKSsiIG9yICIrby5zdWJzdHIocCsxKX1yZXR1cm4gb31yZXR1cm4iIn1mdW5jdGlv
biBlKG8pe3RvcC5fX3V0aWxzX19nZT0KdF9fPTNEdG9wLl9fdXRpbHNfX2dldF9ffHx7fTtpZihv
LmNhY2hlJiZ0b3AuX191dGlsc19fZ2V0X19bby51cmxdKXtvLnN1Y2NlPQpzcyYmby5zdWNjZXNz
KHRvcC5fX3V0aWxzX19nZXRfX1tvLnVybF0pO2NvbnNvbGUuZGVidWcoInV0aWxzLmpzOjpnZXQo
KSAtIEY9CmV0Y2hpbmcgZnJvbSBjYWNoZSBbIitvLnVybCsiXS4iKX1lbHNle2koe3VybDpvLnVy
bCxkYXRhOm8uZGF0YSxzdWNjZXNzOmZ1bj0KY3Rpb24ocCl7dG9wLl9fdXRpbHNfX2dldF9fW28u
dXJsXT0zRHA7by5zdWNjZXNzJiZvLnN1Y2Nlc3MocCl9LGVycm9yOmZ1bmN0PQppb24ocCl7by5l
cnJvciYmby5lcnJvcihwKX19KX19ZnVuY3Rpb24gaShwKXt2YXIgbz0zRHtjb250ZW50VHlwZToi
YXBwbGljYXQ9Cmlvbi9qc29uIix0eXBlOnAudHlwZXx8IkdFVCIsZGF0YTpwLmRhdGF8fHt9LHVy
bDpwLnVybH07aWYoby50eXBlPTNEPTNEIkdFVD0KInx8by50eXBlPTNEPTNEIkRFTEVURSIpe2lm
KG8udXJsLmluZGV4T2YoIj8iKT0zRD0zRC0xKXtvLnVybCs9M0QiPyJ9ZWxzZXtvPQoudXJsKz0z
RCImIn1vLnVybD0zRG8udXJsKyQucGFyYW0oby5kYXRhKTtvLmRhdGE9M0RudWxsfWVsc2V7by5k
YXRhVHlwZT0zRCI9Cmpzb24iO28udXJsPTNEby51cmw7by5kYXRhPTNESlNPTi5zdHJpbmdpZnko
by5kYXRhKX0kLmFqYXgobykuZG9uZShmdW5jdGlvbj0KKHEpe2lmKHR5cGVvZiBxPTNEPTNEPTNE
InN0cmluZyIpe3RyeXtxPTNEcS5yZXBsYWNlKCJJbmZpbml0eSwiLCciSW5maW5pdHkiPQosJyk7
cT0zRGpRdWVyeS5wYXJzZUpTT04ocSl9Y2F0Y2gocil7Y29uc29sZS5kZWJ1ZyhyKX19cC5zdWNj
ZXNzJiZwLnN1Y2Nlc3M9CihxKX0pLmZhaWwoZnVuY3Rpb24ocil7dmFyIHE9M0RudWxsO3RyeXtx
PTNEalF1ZXJ5LnBhcnNlSlNPTihyLnJlc3BvbnNlVGV4dD0KKX1jYXRjaChzKXtxPTNEci5yZXNw
b25zZVRleHR9cC5lcnJvciYmcC5lcnJvcihxLHIpfSl9ZnVuY3Rpb24gaihyLG8pe3ZhciBwPQo9
M0QkKCc8ZGl2IGNsYXNzPTNEIicrcisnIj48L2Rpdj4nKTtwLmFwcGVuZFRvKCI6ZXEoMCkiKTt2
YXIgcT0zRHAuY3NzKG8pO3A9Ci5yZW1vdmUoKTtyZXR1cm4gcX1mdW5jdGlvbiBnKG8pe2lmKCEk
KCdsaW5rW2hyZWZePTNEIicrbysnIl0nKS5sZW5ndGgpeyQoJz0KPGxpbmsgaHJlZj0zRCInK2dh
bGF4eV9jb25maWcucm9vdCtvKyciIHJlbD0zRCJzdHlsZXNoZWV0Ij4nKS5hcHBlbmRUbygiaGVh
PQpkIil9fWZ1bmN0aW9uIGsobyxwKXtpZihvKXtyZXR1cm4gbS5kZWZhdWx0cyhvLHApfWVsc2V7
cmV0dXJuIHB9fWZ1bmN0aW9uIGI9CihwLHIpe3ZhciBxPTNEIiI7aWYocD49M0QxMDAwMDAwMDAw
MDApe3A9M0RwLzEwMDAwMDAwMDAwMDtxPTNEIlRCIn1lbHNle2lmKD0KcD49M0QxMDAwMDAwMDAp
e3A9M0RwLzEwMDAwMDAwMDtxPTNEIkdCIn1lbHNle2lmKHA+PTNEMTAwMDAwKXtwPTNEcC8xMDAw
MDA7PQpxPTNEIk1CIn1lbHNle2lmKHA+PTNEMTAwKXtwPTNEcC8xMDA7cT0zRCJLQiJ9ZWxzZXtp
ZihwPjApe3A9M0RwKjEwO3E9M0QiYiI9Cn1lbHNle3JldHVybiI8c3Ryb25nPi08L3N0cm9uZz4i
fX19fX12YXIgbz0zRChNYXRoLnJvdW5kKHApLzEwKTtpZihyKXtyZXR1cj0KbiBvKyIgIitxfWVs
c2V7cmV0dXJuIjxzdHJvbmc+IitvKyI8L3N0cm9uZz4gIitxfX1mdW5jdGlvbiBhKCl7cmV0dXJu
IngiK01hPQp0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsOSl9ZnVuY3Rpb24g
YyhvKXt2YXIgcD0zRCQoIjxwPjwvcD4iKTs9CnAuYXBwZW5kKG8pO3JldHVybiBwfWZ1bmN0aW9u
IGYoKXt2YXIgcT0zRG5ldyBEYXRlKCk7dmFyIG89M0QocS5nZXRIb3VycygpPD0KMTA/IjAiOiIi
KStxLmdldEhvdXJzKCk7dmFyIHA9M0QocS5nZXRNaW51dGVzKCk8MTA/IjAiOiIiKStxLmdldE1p
bnV0ZXMoKTt2PQphciByPTNEcS5nZXREYXRlKCkrIi8iKyhxLmdldE1vbnRoKCkrMSkrIi8iK3Eu
Z2V0RnVsbFllYXIoKSsiLCAiK28rIjoiK3A7cmU9CnR1cm4gcn1yZXR1cm57Y3NzTG9hZEZpbGU6
Zyxjc3NHZXRBdHRyaWJ1dGU6aixnZXQ6ZSxtZXJnZTprLGJ5dGVzVG9TdHJpbmc6Yj0KLHV1aWQ6
YSx0aW1lOmYsd3JhcDpjLHJlcXVlc3Q6aSxzYW5pdGl6ZTpkLHRleHRpZnk6aCx2YWxpZGF0ZTps
LGRlZXBlYWNoOm59PQp9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpkaWZmIC1yIGEy
NWNlNjNjZGNmMDdjYjJkMjBmZjM0N2JmNDJlODZmNGZkNGYyMWIgLXIgM2JiZWE0ZmZmOWYyMmFm
MDU2NWUxMzY9CmRiYTY1OTkyNDAzYzBhOWE1IHN0YXRpYy9zY3JpcHRzL3V0aWxzL3V0aWxzLmpz
Ci0tLSBhL3N0YXRpYy9zY3JpcHRzL3V0aWxzL3V0aWxzLmpzCisrKyBiL3N0YXRpYy9zY3JpcHRz
L3V0aWxzL3V0aWxzLmpzCkBAIC02LDYgKzYsMTggQEAKIC8vIGRlcGVuZGVuY2llcwogZGVmaW5l
KFsibGlicy91bmRlcnNjb3JlIl0sIGZ1bmN0aW9uKF8pIHsKPTIwCisvKiogVHJhdmVyc2UgdGhy
b3VnaCBqc29uCisqLworZnVuY3Rpb24gZGVlcGVhY2goZGljdCwgY2FsbGJhY2spIHsKKyAgICBm
b3IgKHZhciBpIGluIGRpY3QpIHsKKyAgICAgICAgdmFyIGQgPTNEIGRpY3RbaV07CisgICAgICAg
IGlmIChkICYmIHR5cGVvZihkKSA9M0Q9M0QgIm9iamVjdCIpIHsKKyAgICAgICAgICAgIGNhbGxi
YWNrKGQpOworICAgICAgICAgICAgZGVlcGVhY2goZCwgY2FsbGJhY2spOworICAgICAgICB9Cisg
ICAgfQorfQorCiAvKioKICAqIFNhbml0aXplL2VzY2FwZSBhIHN0cmluZwogICogQHBhcmFte1N0
cmluZ30gICBjb250ZW50IC0gQ29udGVudCB0byBiZSBzYW5pdGl6ZWQKQEAgLTI0OCw3ICsyNjAs
OCBAQAogICAgIHJlcXVlc3Q6IHJlcXVlc3QsCiAgICAgc2FuaXRpemU6IHNhbml0aXplLAogICAg
IHRleHRpZnk6IHRleHRpZnksCi0gICAgdmFsaWRhdGU6IHZhbGlkYXRlCisgICAgdmFsaWRhdGU6
IHZhbGlkYXRlLAorICAgIGRlZXBlYWNoOiBkZWVwZWFjaAogfTsKPTIwCiB9KTsKCmRpZmYgLXIg
YTI1Y2U2M2NkY2YwN2NiMmQyMGZmMzQ3YmY0MmU4NmY0ZmQ0ZjIxYiAtciAzYmJlYTRmZmY5ZjIy
YWYwNTY1ZTEzNj0KZGJhNjU5OTI0MDNjMGE5YTUgc3RhdGljL3N0eWxlL2JsdWUvYmFzZS5jc3MK
LS0tIGEvc3RhdGljL3N0eWxlL2JsdWUvYmFzZS5jc3MKKysrIGIvc3RhdGljL3N0eWxlL2JsdWUv
YmFzZS5jc3MKQEAgLTE0MTIsNyArMTQxMiw3IEBACiAudWktYnV0dG9uLWljb24tcGxhaW57Ym9y
ZGVyOm5vbmUgIWltcG9ydGFudDtiYWNrZ3JvdW5kOm5vbmUgIWltcG9ydGFudDtoZT0KaWdodDpp
bmhlcml0ICFpbXBvcnRhbnQ7d2lkdGg6aW5oZXJpdCAhaW1wb3J0YW50O3BhZGRpbmctcmlnaHQ6
M3B4ICFpbXBvcnRhPQpudH0KIC51aS10YWJzIC51aS10YWJzLWFkZHtmb250LXNpemU6MC44ZW07
bWFyZ2luLXJpZ2h0OjVweH0KIC51aS10YWJzIC51aS10YWJzLWRlbGV0ZXtmb250LXNpemU6MC44
ZW07bWFyZ2luLWxlZnQ6NXB4O2N1cnNvcjpwb2ludGVyfQotLnVpLXBvcnRsZXQsLnVpLXBvcnRs
ZXQtc2xpbSwudWktcG9ydGxldC1yZXBlYXQsLnVpLXBvcnRsZXQtc2VjdGlvbiwudWktcG89CnJ0
bGV0LXNsaW0sLnVpLXBvcnRsZXQtcmVwZWF0LC51aS1wb3J0bGV0LXNlY3Rpb257Ym9yZGVyOnNv
bGlkICNkNmIxNjEgMXB4Oz0KLXdlYmtpdC1ib3JkZXItcmFkaXVzOjNweDstbW96LWJvcmRlci1y
YWRpdXM6M3B4O2JvcmRlci1yYWRpdXM6M3B4O3Bvc2l0aW9uPQo6cmVsYXRpdmU7Y2xlYXI6Ym90
aDt3aWR0aDphdXRvO2hlaWdodDoxMDAlfS51aS1wb3J0bGV0IC5wb3J0bGV0LWhlYWRlciwudWk9
Ci1wb3J0bGV0LXNsaW0gLnBvcnRsZXQtaGVhZGVye2JhY2tncm91bmQ6I2ViZDliMjtib3JkZXIt
Ym90dG9tOnNvbGlkICNkNmIxNj0KMSAxcHg7cGFkZGluZzoycHggOHB4O292ZXJmbG93OnZpc2li
bGU7ZmxvYXQ6cmlnaHQ7d2lkdGg6MTAwJX0udWktcG9ydGxldCAuPQpwb3J0bGV0LWhlYWRlciAu
cG9ydGxldC10aXRsZSwudWktcG9ydGxldC1zbGltIC5wb3J0bGV0LWhlYWRlciAucG9ydGxldC10
aXQ9Cmxle2Rpc3BsYXk6aW5saW5lO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0udWktcG9ydGxldCAu
cG9ydGxldC1oZWFkZXIgLnBvcnRsZT0KdC10aXRsZSAucG9ydGxldC10aXRsZS10ZXh0LC51aS1w
b3J0bGV0LXNsaW0gLnBvcnRsZXQtaGVhZGVyIC5wb3J0bGV0LXRpdGxlPQogLnBvcnRsZXQtdGl0
bGUtdGV4dHt2ZXJ0aWNhbC1hbGlnbjptaWRkbGV9CisudWktcG9ydGxldCwudWktcG9ydGxldC1z
bGltLC51aS1wb3J0bGV0LXJlcGVhdCwudWktcG9ydGxldC1zZWN0aW9uLC51aS1wbz0KcnRsZXQt
c2xpbSwudWktcG9ydGxldC1yZXBlYXQsLnVpLXBvcnRsZXQtc2VjdGlvbntib3JkZXI6c29saWQg
I2Q2YjE2MSAxcHg7PQotd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4Oy1tb3otYm9yZGVyLXJhZGl1
czozcHg7Ym9yZGVyLXJhZGl1czozcHg7cG9zaXRpb249CjpyZWxhdGl2ZTtjbGVhcjpib3RoO3dp
ZHRoOmF1dG87aGVpZ2h0OjEwMCV9LnVpLXBvcnRsZXQgLnBvcnRsZXQtaGVhZGVyLC51aT0KLXBv
cnRsZXQtc2xpbSAucG9ydGxldC1oZWFkZXJ7YmFja2dyb3VuZDojZWJkOWIyO2JvcmRlci1ib3R0
b206c29saWQgI2Q2YjE2PQoxIDFweDtwYWRkaW5nOjJweCA4cHg7b3ZlcmZsb3c6dmlzaWJsZTtm
bG9hdDpyaWdodDt3aWR0aDoxMDAlfS51aS1wb3J0bGV0IC49CnBvcnRsZXQtaGVhZGVyIC5wb3J0
bGV0LXRpdGxlLC51aS1wb3J0bGV0LXNsaW0gLnBvcnRsZXQtaGVhZGVyIC5wb3J0bGV0LXRpdD0K
bGV7ZGlzcGxheTppbmxpbmU7dmVydGljYWwtYWxpZ246bWlkZGxlfS51aS1wb3J0bGV0IC5wb3J0
bGV0LWhlYWRlciAucG9ydGxlPQp0LXRpdGxlIC5wb3J0bGV0LXRpdGxlLXRleHQsLnVpLXBvcnRs
ZXQtc2xpbSAucG9ydGxldC1oZWFkZXIgLnBvcnRsZXQtdGl0bGU9CiAucG9ydGxldC10aXRsZS10
ZXh0e3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtsaW5lLWhlaWdodDoyMHB4fQogLnVpLXBvcnRsZXQg
LnBvcnRsZXQtaGVhZGVyIC5wb3J0bGV0LXRpdGxlIC5pY29uLC51aS1wb3J0bGV0LXNsaW0gLnBv
cnRsZXQ9Ci1oZWFkZXIgLnBvcnRsZXQtdGl0bGUgLmljb257Zm9udC1zaXplOjEuMmVtO3ZlcnRp
Y2FsLWFsaWduOm1pZGRsZX0KIC51aS1wb3J0bGV0IC5wb3J0bGV0LWJ1dHRvbnMsLnVpLXBvcnRs
ZXQtc2xpbSAucG9ydGxldC1idXR0b25ze2hlaWdodDo1MHB4PQo7cGFkZGluZzoxMHB4fQogLnVp
LXBvcnRsZXQgLnBvcnRsZXQtY29udGVudCwudWktcG9ydGxldC1zbGltIC5wb3J0bGV0LWNvbnRl
bnR7aGVpZ2h0OmluaGU9CnJpdDtwYWRkaW5nOjEwcHg7Y2xlYXI6Ym90aH0udWktcG9ydGxldCAu
cG9ydGxldC1jb250ZW50IC5jb250ZW50LC51aS1wb3J0bD0KZXQtc2xpbSAucG9ydGxldC1jb250
ZW50IC5jb250ZW50e3BhZGRpbmc6MTBweDtoZWlnaHQ6MTAwJTt3aWR0aDoxMDAlfS51aS1wPQpv
cnRsZXQgLnBvcnRsZXQtY29udGVudCAuY29udGVudCAuYnV0dG9ucywudWktcG9ydGxldC1zbGlt
IC5wb3J0bGV0LWNvbnRlbnQ9CiAuY29udGVudCAuYnV0dG9uc3toZWlnaHQ6NTBweDtwYWRkaW5n
OjEwcHh9CkBAIC0xNzY1LDcgKzE3NjUsNyBAQAogZGl2LnRvb2xGb3JtRGlzYWJsZWR7Ym9yZGVy
LWNvbG9yOiNiZmJmYmZ9CiBkaXYudG9vbEhlbHB7bWFyZ2luLXRvcDoxNXB4O3BhZGRpbmc6NXB4
fQogZGl2LnRvb2xIZWxwQm9keXt3aWR0aDoxMDAlfQotLnRvb2xGb3JtLnRvb2xGb3JtSW5DYW52
YXN7Ym9yZGVyOnNvbGlkICNkNmIxNjEgMXB4O2JhY2tncm91bmQ6I2ZmZn0udG9vbEY9Cm9ybS50
b29sRm9ybUluQ2FudmFzLnRvb2xGb3JtLWFjdGl2ZXtib3JkZXI6c29saWQgYmx1ZSAzcHg7bWFy
Z2luOjRweH0KKy50b29sRm9ybS50b29sRm9ybUluQ2FudmFze2JvcmRlcjpzb2xpZCAjZDZiMTYx
IDFweDtiYWNrZ3JvdW5kOiNmZmZ9LnRvb2xGPQpvcm0udG9vbEZvcm1JbkNhbnZhcy50b29sRm9y
bS1hY3RpdmV7Ym9yZGVyOnNvbGlkICM1ZjY5OTAgM3B4O21hcmdpbjo0cHh9CiAudG9vbEZvcm0u
dG9vbEZvcm1JbkNhbnZhcyAudG9vbEZvcm1UaXRsZXtmb250LXNpemU6MTJweDtsaW5lLWhlaWdo
dDoxLjQyOD0KNTcxNDI5fQogZGl2LmZvcm0sZGl2LnRvb2xGb3Jte2JvcmRlcjpzb2xpZCAjZDZi
MTYxIDFweDstd2Via2l0LWJvcmRlci1yYWRpdXM6M3B4Oy09Cm1vei1ib3JkZXItcmFkaXVzOjNw
eDtib3JkZXItcmFkaXVzOjNweH0KIGRpdi5mb3JtLXRpdGxlLGRpdi50b29sRm9ybVRpdGxle3Bh
ZGRpbmc6NXB4IDEwcHg7YmFja2dyb3VuZDojZWJkOWIyO2JvcmRlPQpyLWJvdHRvbTpzb2xpZCAj
ZDZiMTYxIDFweH0KCmRpZmYgLXIgYTI1Y2U2M2NkY2YwN2NiMmQyMGZmMzQ3YmY0MmU4NmY0ZmQ0
ZjIxYiAtciAzYmJlYTRmZmY5ZjIyYWYwNTY1ZTEzNj0KZGJhNjU5OTI0MDNjMGE5YTUgc3RhdGlj
L3N0eWxlL3NyYy9sZXNzL2Jhc2UubGVzcwotLS0gYS9zdGF0aWMvc3R5bGUvc3JjL2xlc3MvYmFz
ZS5sZXNzCisrKyBiL3N0YXRpYy9zdHlsZS9zcmMvbGVzcy9iYXNlLmxlc3MKQEAgLTU4Niw3ICs1
ODYsNyBAQAogICAgIGJvcmRlcjogc29saWQgQGZvcm0tYm9yZGVyIDFweDsKICAgICBiYWNrZ3Jv
dW5kOiBAd2hpdGU7CiAgICAgJi50b29sRm9ybS1hY3RpdmUgewotICAgICAgICBib3JkZXI6IHNv
bGlkIGJsdWUgM3B4OworICAgICAgICBib3JkZXI6IHNvbGlkIEBicmFuZC1wcmltYXJ5IDNweDsK
ICAgICAgICAgbWFyZ2luOiA0cHg7CiAgICAgfQogICAgIC50b29sRm9ybVRpdGxlIHsKCmRpZmYg
LXIgYTI1Y2U2M2NkY2YwN2NiMmQyMGZmMzQ3YmY0MmU4NmY0ZmQ0ZjIxYiAtciAzYmJlYTRmZmY5
ZjIyYWYwNTY1ZTEzNj0KZGJhNjU5OTI0MDNjMGE5YTUgc3RhdGljL3N0eWxlL3NyYy9sZXNzL3Vp
Lmxlc3MKLS0tIGEvc3RhdGljL3N0eWxlL3NyYy9sZXNzL3VpLmxlc3MKKysrIGIvc3RhdGljL3N0
eWxlL3NyYy9sZXNzL3VpLmxlc3MKQEAgLTE2OCw2ICsxNjgsNyBAQAogICAgICAgICAgICAgdmVy
dGljYWwtYWxpZ246IG1pZGRsZTsKICAgICAgICAgICAgIC5wb3J0bGV0LXRpdGxlLXRleHQgewog
ICAgICAgICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CisgICAgICAgICAgICAgICAg
bGluZS1oZWlnaHQ6IDIwcHg7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAuaWNvbiB7CiAg
ICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjJlbTsKCmRpZmYgLXIgYTI1Y2U2M2NkY2YwN2Ni
MmQyMGZmMzQ3YmY0MmU4NmY0ZmQ0ZjIxYiAtciAzYmJlYTRmZmY5ZjIyYWYwNTY1ZTEzNj0KZGJh
NjU5OTI0MDNjMGE5YTUgdGVtcGxhdGVzL3VzZXIvaW5kZXgubWFrbwotLS0gYS90ZW1wbGF0ZXMv
dXNlci9pbmRleC5tYWtvCisrKyBiL3RlbXBsYXRlcy91c2VyL2luZGV4Lm1ha28KQEAgLTE4LDYg
KzE4LDcgQEAKICAgICAgICAgICAgIDxsaT48YSBocmVmPTNEIiR7aC51cmxfZm9yKCBjb250cm9s
bGVyPTNEJ3VzZXInLCBhY3Rpb249M0QnbG9nPQpvdXQnLCBsb2dvdXRfYWxsPTNEVHJ1ZSApfSIg
dGFyZ2V0PTNEIl90b3AiPiR7XygnTG9nb3V0Jyl9PC9hPiAke18oJ29mIGFsbCA9CnVzZXIgc2Vz
c2lvbnMnKX08L2xpPgogICAgICAgICAlZWxzZToKICAgICAgICAgICAgIDxsaT48YSBocmVmPTNE
IiR7aC51cmxfZm9yKCBjb250cm9sbGVyPTNEJ3VzZXInLCBhY3Rpb249M0QnbWFuPQphZ2VfdXNl
cl9pbmZvJywgY250cmxsZXI9M0RjbnRybGxlciApfSI+JHtfKCdNYW5hZ2UgeW91ciBpbmZvcm1h
dGlvbicpfTwvYT49CjwvbGk+CisgICAgICAgICAgICA8bGk+PGEgaHJlZj0zRCIke2gudXJsX2Zv
ciggY29udHJvbGxlcj0zRCd1c2VyJywgYWN0aW9uPTNEJ2NoYT0KbmdlX3Bhc3N3b3JkJyApfSI+
JHtfKCdDaGFuZ2UgeW91ciBwYXNzd29yZCcpfTwvYT48L2xpPjxsaT48YSBocmVmPTNEIiR7aC51
PQpybF9mb3IoIGNvbnRyb2xsZXI9M0QndXNlcicsIGFjdGlvbj0zRCdhcGlfa2V5cycsIGNudHJs
bGVyPTNEY250cmxsZXIgKX0iPiQ9CntfKCdNYW5hZ2UgeW91ciBBUEkga2V5cycpfTwvYT48L2xp
PjxsaT48YSBocmVmPTNEIiR7aC51cmxfZm9yKCBjb250cm9sbGVyPQo9M0QncmVwb3NpdG9yeScs
IGFjdGlvbj0zRCdtYW5hZ2VfZW1haWxfYWxlcnRzJywgY250cmxsZXI9M0RjbnRybGxlciApfSI+
JHs9Cl8oJ01hbmFnZSB5b3VyIGVtYWlsIGFsZXJ0cycpfTwvYT48L2xpPjxsaT48YSBocmVmPTNE
IiR7aC51cmxfZm9yKCBjb250cm9sbD0KZXI9M0QndXNlcicsIGFjdGlvbj0zRCdsb2dvdXQnLCBs
b2dvdXRfYWxsPTNEVHJ1ZSApfSIgdGFyZ2V0PTNEIl90b3AiPiR7XygnPQpMb2dvdXQnKX08L2E+
ICR7Xygnb2YgYWxsIHVzZXIgc2Vzc2lvbnMnKX08L2xpPgoKCmh0dHBzOi8vYml0YnVja2V0Lm9y
Zy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy8zMTM1N2VkZjI2MGUvCkNoYW5nZXNldDog
ICAzMTM1N2VkZjI2MGUKVXNlcjogICAgICAgIGNhcmxmZWJlcmhhcmQKRGF0ZTogICAgICAgIDIw
MTUtMDEtMTQgMjI6MTg6MzUrMDA6MDAKU3VtbWFyeTogICAgIE1lcmdlZCBnYWxheHkvZ2FsYXh5
LWNlbnRyYWwgaW50byBkZWZhdWx0CkFmZmVjdGVkICM6ICA1IGZpbGVzCgpkaWZmIC1yIDNiYmVh
NGZmZjlmMjJhZjA1NjVlMTM2ZGJhNjU5OTI0MDNjMGE5YTUgLXIgMzEzNTdlZGYyNjBlYTZiMjU5
ZGM2ODI9CjMwZjMwODNiM2YwZmFmY2EwIGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2No
YXJ0cy9zdGF0aWMvYnVpbGQtYXBwLmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRp
b25zL2NoYXJ0cy9zdGF0aWMvYnVpbGQtYXBwLmpzCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3Vh
bGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvYnVpbGQtYXBwLmpzCkBAIC0zLDQgKzMsNCBAQAogLy8g
ICAgIChjKSAyMDA5LTIwMTQgSmVyZW15IEFzaGtlbmFzLCBEb2N1bWVudENsb3VkIGFuZCBJbnZl
c3RpZ2F0aXZlIFJlcG89CnJ0ZXJzICYgRWRpdG9ycwogLy8gICAgIFVuZGVyc2NvcmUgbWF5IGJl
IGZyZWVseSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuCj0yMAotZGVmaW5lKCJt
dmMvdWkvdWktbW9kYWwiLFtdLGZ1bmN0aW9uKCl7dmFyIGU9M0RCYWNrYm9uZS5WaWV3LmV4dGVu
ZCh7ZWxNYWk9Cm46ImJvZHkiLG9wdGlvbnNEZWZhdWx0Ont0aXRsZToidWktbW9kYWwiLGJvZHk6
IiIsYmFja2Ryb3A6ITAsaGVpZ2h0Om51bGwsdz0KaWR0aDpudWxsLGNsb3NpbmdfZXZlbnRzOiEx
LGNsb3NpbmdfY2FsbGJhY2s6bnVsbH0sYnV0dG9uTGlzdDp7fSxpbml0aWFsaXplPQo6ZnVuY3Rp
b24oZSl7ZSYmdGhpcy5fY3JlYXRlKGUpfSxzaG93OmZ1bmN0aW9uKGUpe3RoaXMuaW5pdGlhbGl6
ZShlKSx0aGlzLm89CnB0aW9ucy5oZWlnaHQ/KHRoaXMuJGJvZHkuY3NzKCJoZWlnaHQiLHRoaXMu
b3B0aW9ucy5oZWlnaHQpLHRoaXMuJGJvZHkuY3NzKD0KIm92ZXJmbG93IiwiaGlkZGVuIikpOnRo
aXMuJGJvZHkuY3NzKCJtYXgtaGVpZ2h0IiwkKHdpbmRvdykuaGVpZ2h0KCkvMiksdGhpPQpzLm9w
dGlvbnMud2lkdGgmJnRoaXMuJGRpYWxvZy5jc3MoIndpZHRoIix0aGlzLm9wdGlvbnMud2lkdGgp
LHRoaXMudmlzaWJsZT89CnRoaXMuJGVsLnNob3coKTp0aGlzLiRlbC5mYWRlSW4oImZhc3QiKSx0
aGlzLnZpc2libGU9M0QhMH0saGlkZTpmdW5jdGlvbigpez0KdGhpcy52aXNpYmxlPTNEITEsdGhp
cy4kZWwuZmFkZU91dCgiZmFzdCIpLHRoaXMub3B0aW9ucy5jbG9zaW5nX2NhbGxiYWNrJiZ0PQpo
aXMub3B0aW9ucy5jbG9zaW5nX2NhbGxiYWNrKCl9LGVuYWJsZUJ1dHRvbjpmdW5jdGlvbihlKXt2
YXIgdD0zRHRoaXMuYnV0dG89Cm5MaXN0W2VdO3RoaXMuJGJ1dHRvbnMuZmluZCgiIyIrdCkucHJv
cCgiZGlzYWJsZWQiLCExKX0sZGlzYWJsZUJ1dHRvbjpmdW5jdD0KaW9uKGUpe3ZhciB0PTNEdGhp
cy5idXR0b25MaXN0W2VdO3RoaXMuJGJ1dHRvbnMuZmluZCgiIyIrdCkucHJvcCgiZGlzYWJsZWQi
PQosITApfSxzaG93QnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy5idXR0b25MaXN0W2Vd
O3RoaXMuJGJ1dHRvbnMuZmluZCg9CiIjIit0KS5zaG93KCl9LGhpZGVCdXR0b246ZnVuY3Rpb24o
ZSl7dmFyIHQ9M0R0aGlzLmJ1dHRvbkxpc3RbZV07dGhpcy4kYnV0dD0Kb25zLmZpbmQoIiMiK3Qp
LmhpZGUoKX0sZ2V0QnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy5idXR0b25MaXN0W2Vd
O3JlPQp0dXJuIHRoaXMuJGJ1dHRvbnMuZmluZCgiIyIrdCl9LHNjcm9sbFRvcDpmdW5jdGlvbigp
e3JldHVybiB0aGlzLiRib2R5LnNjcm89CmxsVG9wKCl9LF9jcmVhdGU6ZnVuY3Rpb24oZSl7dmFy
IHQ9M0R0aGlzO3RoaXMub3B0aW9ucz0zRF8uZGVmYXVsdHMoZSx0aGlzLj0Kb3B0aW9uc0RlZmF1
bHQpLHRoaXMub3B0aW9ucy5ib2R5PTNEPTNEInByb2dyZXNzIiYmKHRoaXMub3B0aW9ucy5ib2R5
PTNEJCgnPQo8ZGl2IGNsYXNzPTNEInByb2dyZXNzIHByb2dyZXNzLXN0cmlwZWQgYWN0aXZlIj48
ZGl2IGNsYXNzPTNEInByb2dyZXNzLWJhciA9CnByb2dyZXNzLWJhci1pbmZvIiBzdHlsZT0zRCJ3
aWR0aDoxMDAlIj48L2Rpdj48L2Rpdj4nKSksdGhpcy4kZWwmJih0aGlzLiRlbD0KLnJlbW92ZSgp
LCQoZG9jdW1lbnQpLm9mZigia2V5dXAudWktbW9kYWwiKSksdGhpcy5zZXRFbGVtZW50KHRoaXMu
X3RlbXBsYXRlPQoodGhpcy5vcHRpb25zLnRpdGxlKSksdGhpcy4kZGlhbG9nPTNEdGhpcy4kZWwu
ZmluZCgiLm1vZGFsLWRpYWxvZyIpLHRoaXMuJGI9Cm9keT0zRHRoaXMuJGVsLmZpbmQoIi5tb2Rh
bC1ib2R5IiksdGhpcy4kZm9vdGVyPTNEdGhpcy4kZWwuZmluZCgiLm1vZGFsLWZvbz0KdGVyIiks
dGhpcy4kYnV0dG9ucz0zRHRoaXMuJGVsLmZpbmQoIi5idXR0b25zIiksdGhpcy4kYmFja2Ryb3A9
M0R0aGlzLiRlbC5mPQppbmQoIi5tb2RhbC1iYWNrZHJvcCIpLHRoaXMuJGJvZHkuaHRtbCh0aGlz
Lm9wdGlvbnMuYm9keSksdGhpcy5vcHRpb25zLmJhY2s9CmRyb3B8fHRoaXMuJGJhY2tkcm9wLnJl
bW92ZUNsYXNzKCJpbiIpO2lmKHRoaXMub3B0aW9ucy5idXR0b25zKXt0aGlzLmJ1dHRvbj0KTGlz
dD0zRHt9O3ZhciBuPTNEMDskLmVhY2godGhpcy5vcHRpb25zLmJ1dHRvbnMsZnVuY3Rpb24oZSxy
KXt2YXIgaT0zRCJidXR0PQpvbi0iK24rKzt0LiRidXR0b25zLmFwcGVuZCgkKCc8YnV0dG9uIGlk
PTNEIicraSsnIj48L2J1dHRvbj4nKS50ZXh0KGUpLmNsaWM9CmsocikpLmFwcGVuZCgiICIpLHQu
YnV0dG9uTGlzdFtlXT0zRGl9KX1lbHNlIHRoaXMuJGZvb3Rlci5oaWRlKCk7JCh0aGlzLmVsTT0K
YWluKS5hcHBlbmQoJCh0aGlzLmVsKSksdGhpcy5vcHRpb25zLmNsb3NpbmdfZXZlbnRzJiYoJChk
b2N1bWVudCkub24oImtleXVwPQoudWktbW9kYWwiLGZ1bmN0aW9uKGUpe2Uua2V5Q29kZT0zRD0z
RDI3JiZ0LmhpZGUoKX0pLHRoaXMuJGVsLmZpbmQoIi5tb2RhbC09CmJhY2tkcm9wIikub24oImNs
aWNrIixmdW5jdGlvbigpe3QuaGlkZSgpfSkpfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7cmV0dXJu
Jz0KPGRpdiBjbGFzcz0zRCJ1aS1tb2RhbCBtb2RhbCI+PGRpdiBjbGFzcz0zRCJtb2RhbC1iYWNr
ZHJvcCBmYWRlIGluIiBzdHlsZT0KPTNEInotaW5kZXg6IC0xOyI+PC9kaXY+PGRpdiBjbGFzcz0z
RCJtb2RhbC1kaWFsb2ciPjxkaXYgY2xhc3M9M0QibW9kYWwtY29uPQp0ZW50Ij48ZGl2IGNsYXNz
PTNEIm1vZGFsLWhlYWRlciI+PGJ1dHRvbiB0eXBlPTNEImJ1dHRvbiIgY2xhc3M9M0QiY2xvc2Ui
IHM9CnR5bGU9M0QiZGlzcGxheTogbm9uZTsiPiZ0aW1lczs8L2J1dHRvbj48aDQgY2xhc3M9M0Qi
dGl0bGUiPicrZSsiPC9oND4iKyI8Lz0KZGl2PiIrJzxkaXYgY2xhc3M9M0QibW9kYWwtYm9keSIg
c3R5bGU9M0QicG9zaXRpb246IHN0YXRpYzsiPjwvZGl2PicrJzxkaXYgPQpjbGFzcz0zRCJtb2Rh
bC1mb290ZXIiPicrJzxkaXYgY2xhc3M9M0QiYnV0dG9ucyIgc3R5bGU9M0QiZmxvYXQ6IHJpZ2h0
OyI+PC89CmRpdj4nKyI8L2Rpdj4iKyI8L2RpdiIrIjwvZGl2PiIrIjwvZGl2PiJ9fSk7cmV0dXJu
e1ZpZXc6ZX19KSxmdW5jdGlvbigpe3Zhcj0KIGU9M0R0aGlzLHQ9M0RlLl8sbj0zREFycmF5LnBy
b3RvdHlwZSxyPTNET2JqZWN0LnByb3RvdHlwZSxpPTNERnVuY3Rpb24ucHJvPQp0b3R5cGUscz0z
RG4ucHVzaCxvPTNEbi5zbGljZSx1PTNEbi5jb25jYXQsYT0zRHIudG9TdHJpbmcsZj0zRHIuaGFz
T3duUHJvcGU9CnJ0eSxsPTNEQXJyYXkuaXNBcnJheSxjPTNET2JqZWN0LmtleXMsaD0zRGkuYmlu
ZCxwPTNEZnVuY3Rpb24oZSl7aWYoZSBpbnN0YT0KbmNlb2YgcClyZXR1cm4gZTtpZighKHRoaXMg
aW5zdGFuY2VvZiBwKSlyZXR1cm4gbmV3IHAoZSk7dGhpcy5fd3JhcHBlZD0zRGV9PQo7dHlwZW9m
IGV4cG9ydHMhPTNEInVuZGVmaW5lZCI/KHR5cGVvZiBtb2R1bGUhPTNEInVuZGVmaW5lZCImJm1v
ZHVsZS5leHBvcnQ9CnMmJihleHBvcnRzPTNEbW9kdWxlLmV4cG9ydHM9M0RwKSxleHBvcnRzLl89
M0RwKTplLl89M0RwLHAuVkVSU0lPTj0zRCIxLjcuMD0KIjt2YXIgZD0zRGZ1bmN0aW9uKGUsdCxu
KXtpZih0PTNEPTNEPTNEdm9pZCAwKXJldHVybiBlO3N3aXRjaChuPTNEPTNEbnVsbD8zPQo6bil7
Y2FzZSAxOnJldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gZS5jYWxsKHQsbil9O2Nhc2UgMjpyZXR1
cm4gZnVuY3Rpb24obiw9CnIpe3JldHVybiBlLmNhbGwodCxuLHIpfTtjYXNlIDM6cmV0dXJuIGZ1
bmN0aW9uKG4scixpKXtyZXR1cm4gZS5jYWxsKHQsbixyLD0KaSl9O2Nhc2UgNDpyZXR1cm4gZnVu
Y3Rpb24obixyLGkscyl7cmV0dXJuIGUuY2FsbCh0LG4scixpLHMpfX1yZXR1cm4gZnVuY3RpPQpv
bigpe3JldHVybiBlLmFwcGx5KHQsYXJndW1lbnRzKX19O3AuaXRlcmF0ZWU9M0RmdW5jdGlvbihl
LHQsbil7cmV0dXJuIGU9M0Q9Cj0zRG51bGw/cC5pZGVudGl0eTpwLmlzRnVuY3Rpb24oZSk/ZChl
LHQsbik6cC5pc09iamVjdChlKT9wLm1hdGNoZXMoZSk6cC5wcj0Kb3BlcnR5KGUpfSxwLmVhY2g9
M0RwLmZvckVhY2g9M0RmdW5jdGlvbihlLHQsbil7aWYoZT0zRD0zRG51bGwpcmV0dXJuIGU7dD0K
PTNEZCh0LG4pO3ZhciByLGk9M0RlLmxlbmd0aDtpZihpPTNEPTNEPTNEK2kpZm9yKHI9M0QwO3I8
aTtyKyspdChlW3JdLHIsZSk7PQplbHNle3ZhciBzPTNEcC5rZXlzKGUpO2ZvcihyPTNEMCxpPTNE
cy5sZW5ndGg7cjxpO3IrKyl0KGVbc1tyXV0sc1tyXSxlKX1yZXQ9CnVybiBlfSxwLm1hcD0zRHAu
Y29sbGVjdD0zRGZ1bmN0aW9uKGUsdCxuKXtpZihlPTNEPTNEbnVsbClyZXR1cm5bXTt0PTNEcC5p
dD0KZXJhdGVlKHQsbik7dmFyIHI9M0RlLmxlbmd0aCE9M0Q9M0QrZS5sZW5ndGgmJnAua2V5cyhl
KSxpPTNEKHJ8fGUpLmxlbmd0aCxzPQo9M0RBcnJheShpKSxvO2Zvcih2YXIgdT0zRDA7dTxpO3Ur
KylvPTNEcj9yW3VdOnUsc1t1XT0zRHQoZVtvXSxvLGUpO3JldHVybiA9CnN9O3ZhciB2PTNEIlJl
ZHVjZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiO3AucmVkdWNlPTNEcC5m
b2xkbD0KPTNEcC5pbmplY3Q9M0RmdW5jdGlvbihlLHQsbixyKXtlPTNEPTNEbnVsbCYmKGU9M0Rb
XSksdD0zRGQodCxyLDQpO3ZhciBpPTNEPQplLmxlbmd0aCE9M0Q9M0QrZS5sZW5ndGgmJnAua2V5
cyhlKSxzPTNEKGl8fGUpLmxlbmd0aCxvPTNEMCx1O2lmKGFyZ3VtZW50cy49Cmxlbmd0aDwzKXtp
Zighcyl0aHJvdyBuZXcgVHlwZUVycm9yKHYpO249M0RlW2k/aVtvKytdOm8rK119Zm9yKDtvPHM7
bysrKXU9Cj0zRGk/aVtvXTpvLG49M0R0KG4sZVt1XSx1LGUpO3JldHVybiBufSxwLnJlZHVjZVJp
Z2h0PTNEcC5mb2xkcj0zRGZ1bmN0aW9uKD0KZSx0LG4scil7ZT0zRD0zRG51bGwmJihlPTNEW10p
LHQ9M0RkKHQsciw0KTt2YXIgaT0zRGUubGVuZ3RoIT0zRD0zRCtlLmxlbmd0PQpoJiZwLmtleXMo
ZSkscz0zRChpfHxlKS5sZW5ndGgsbztpZihhcmd1bWVudHMubGVuZ3RoPDMpe2lmKCFzKXRocm93
IG5ldyBUeXA9CmVFcnJvcih2KTtuPTNEZVtpP2lbLS1zXTotLXNdfXdoaWxlKHMtLSlvPTNEaT9p
W3NdOnMsbj0zRHQobixlW29dLG8sZSk7cmV0dT0Kcm4gbn0scC5maW5kPTNEcC5kZXRlY3Q9M0Rm
dW5jdGlvbihlLHQsbil7dmFyIHI7cmV0dXJuIHQ9M0RwLml0ZXJhdGVlKHQsbiksPQpwLnNvbWUo
ZSxmdW5jdGlvbihlLG4saSl7aWYodChlLG4saSkpcmV0dXJuIHI9M0RlLCEwfSkscn0scC5maWx0
ZXI9M0RwLnNlbGU9CmN0PTNEZnVuY3Rpb24oZSx0LG4pe3ZhciByPTNEW107cmV0dXJuIGU9M0Q9
M0RudWxsP3I6KHQ9M0RwLml0ZXJhdGVlKHQsbikscD0KLmVhY2goZSxmdW5jdGlvbihlLG4saSl7
dChlLG4saSkmJnIucHVzaChlKX0pLHIpfSxwLnJlamVjdD0zRGZ1bmN0aW9uKGUsdCxuPQope3Jl
dHVybiBwLmZpbHRlcihlLHAubmVnYXRlKHAuaXRlcmF0ZWUodCkpLG4pfSxwLmV2ZXJ5PTNEcC5h
bGw9M0RmdW5jdGlvbig9CmUsdCxuKXtpZihlPTNEPTNEbnVsbClyZXR1cm4hMDt0PTNEcC5pdGVy
YXRlZSh0LG4pO3ZhciByPTNEZS5sZW5ndGghPTNEPTNEKz0KZS5sZW5ndGgmJnAua2V5cyhlKSxp
PTNEKHJ8fGUpLmxlbmd0aCxzLG87Zm9yKHM9M0QwO3M8aTtzKyspe289M0RyP3Jbc106cztpPQpm
KCF0KGVbb10sbyxlKSlyZXR1cm4hMX1yZXR1cm4hMH0scC5zb21lPTNEcC5hbnk9M0RmdW5jdGlv
bihlLHQsbil7aWYoZT0zRD0KPTNEbnVsbClyZXR1cm4hMTt0PTNEcC5pdGVyYXRlZSh0LG4pO3Zh
ciByPTNEZS5sZW5ndGghPTNEPTNEK2UubGVuZ3RoJiZwLmtlPQp5cyhlKSxpPTNEKHJ8fGUpLmxl
bmd0aCxzLG87Zm9yKHM9M0QwO3M8aTtzKyspe289M0RyP3Jbc106cztpZih0KGVbb10sbyxlKSk9
CnJldHVybiEwfXJldHVybiExfSxwLmNvbnRhaW5zPTNEcC5pbmNsdWRlPTNEZnVuY3Rpb24oZSx0
KXtyZXR1cm4gZT0zRD0zRG51bD0KbD8hMTooZS5sZW5ndGghPTNEPTNEK2UubGVuZ3RoJiYoZT0z
RHAudmFsdWVzKGUpKSxwLmluZGV4T2YoZSx0KT49M0QwKX0scC5pPQpudm9rZT0zRGZ1bmN0aW9u
KGUsdCl7dmFyIG49M0RvLmNhbGwoYXJndW1lbnRzLDIpLHI9M0RwLmlzRnVuY3Rpb24odCk7cmV0
dXI9Cm4gcC5tYXAoZSxmdW5jdGlvbihlKXtyZXR1cm4ocj90OmVbdF0pLmFwcGx5KGUsbil9KX0s
cC5wbHVjaz0zRGZ1bmN0aW9uKGUsdD0KKXtyZXR1cm4gcC5tYXAoZSxwLnByb3BlcnR5KHQpKX0s
cC53aGVyZT0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAuZmlsdGVyKGUsPQpwLm1hdGNoZXModCkp
fSxwLmZpbmRXaGVyZT0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAuZmluZChlLHAubWF0Y2hlcyh0
KSl9LHA9Ci5tYXg9M0RmdW5jdGlvbihlLHQsbil7dmFyIHI9M0QtSW5maW5pdHksaT0zRC1JbmZp
bml0eSxzLG87aWYodD0zRD0zRG51bGwmJj0KZSE9M0RudWxsKXtlPTNEZS5sZW5ndGg9M0Q9M0Q9
M0QrZS5sZW5ndGg/ZTpwLnZhbHVlcyhlKTtmb3IodmFyIHU9M0QwLGE9M0RlPQoubGVuZ3RoO3U8
YTt1Kyspcz0zRGVbdV0scz5yJiYocj0zRHMpfWVsc2UgdD0zRHAuaXRlcmF0ZWUodCxuKSxwLmVh
Y2goZSxmdW49CmN0aW9uKGUsbixzKXtvPTNEdChlLG4scyk7aWYobz5pfHxvPTNEPTNEPTNELUlu
ZmluaXR5JiZyPTNEPTNEPTNELUluZmluaXR5KT0Kcj0zRGUsaT0zRG99KTtyZXR1cm4gcn0scC5t
aW49M0RmdW5jdGlvbihlLHQsbil7dmFyIHI9M0RJbmZpbml0eSxpPTNESW5maW5pPQp0eSxzLG87
aWYodD0zRD0zRG51bGwmJmUhPTNEbnVsbCl7ZT0zRGUubGVuZ3RoPTNEPTNEPTNEK2UubGVuZ3Ro
P2U6cC52YWx1ZXM9CihlKTtmb3IodmFyIHU9M0QwLGE9M0RlLmxlbmd0aDt1PGE7dSsrKXM9M0Rl
W3VdLHM8ciYmKHI9M0RzKX1lbHNlIHQ9M0RwLml0ZT0KcmF0ZWUodCxuKSxwLmVhY2goZSxmdW5j
dGlvbihlLG4scyl7bz0zRHQoZSxuLHMpO2lmKG88aXx8bz0zRD0zRD0zREluZmluaXR5PQomJnI9
M0Q9M0Q9M0RJbmZpbml0eSlyPTNEZSxpPTNEb30pO3JldHVybiByfSxwLnNodWZmbGU9M0RmdW5j
dGlvbihlKXt2YXIgdD0KPTNEZSYmZS5sZW5ndGg9M0Q9M0Q9M0QrZS5sZW5ndGg/ZTpwLnZhbHVl
cyhlKSxuPTNEdC5sZW5ndGgscj0zREFycmF5KG4pO2ZvPQpyKHZhciBpPTNEMCxzO2k8bjtpKysp
cz0zRHAucmFuZG9tKDAsaSkscyE9M0Q9M0RpJiYocltpXT0zRHJbc10pLHJbc109M0R0W2k9Cl07
cmV0dXJuIHJ9LHAuc2FtcGxlPTNEZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PTNEPTNEbnVsbHx8
bj8oZS5sZW5ndGghPTNEPQo9M0QrZS5sZW5ndGgmJihlPTNEcC52YWx1ZXMoZSkpLGVbcC5yYW5k
b20oZS5sZW5ndGgtMSldKTpwLnNodWZmbGUoZSkuc2xpY2U9CigwLE1hdGgubWF4KDAsdCkpfSxw
LnNvcnRCeT0zRGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdD0zRHAuaXRlcmF0ZWUodCxuKSxwLj0K
cGx1Y2socC5tYXAoZSxmdW5jdGlvbihlLG4scil7cmV0dXJue3ZhbHVlOmUsaW5kZXg6bixjcml0
ZXJpYTp0KGUsbixyKX19KS5zPQpvcnQoZnVuY3Rpb24oZSx0KXt2YXIgbj0zRGUuY3JpdGVyaWEs
cj0zRHQuY3JpdGVyaWE7aWYobiE9M0Q9M0RyKXtpZihuPnJ8fG49Cj0zRD0zRD0zRHZvaWQgMCly
ZXR1cm4gMTtpZihuPHJ8fHI9M0Q9M0Q9M0R2b2lkIDApcmV0dXJuLTF9cmV0dXJuIGUuaW5kZXgt
dD0KLmluZGV4fSksInZhbHVlIil9O3ZhciBtPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9u
KHQsbixyKXt2YXIgaT0zRHt9O3JlPQp0dXJuIG49M0RwLml0ZXJhdGVlKG4scikscC5lYWNoKHQs
ZnVuY3Rpb24ocixzKXt2YXIgbz0zRG4ocixzLHQpO2UoaSxyLG8pfSk9CixpfX07cC5ncm91cEJ5
PTNEbShmdW5jdGlvbihlLHQsbil7cC5oYXMoZSxuKT9lW25dLnB1c2godCk6ZVtuXT0zRFt0XX0p
LHAuaT0KbmRleEJ5PTNEbShmdW5jdGlvbihlLHQsbil7ZVtuXT0zRHR9KSxwLmNvdW50Qnk9M0Rt
KGZ1bmN0aW9uKGUsdCxuKXtwLmhhcyhlPQosbik/ZVtuXSsrOmVbbl09M0QxfSkscC5zb3J0ZWRJ
bmRleD0zRGZ1bmN0aW9uKGUsdCxuLHIpe249M0RwLml0ZXJhdGVlKG4sciw9CjEpO3ZhciBpPTNE
bih0KSxzPTNEMCxvPTNEZS5sZW5ndGg7d2hpbGUoczxvKXt2YXIgdT0zRHMrbz4+PjE7bihlW3Vd
KTxpP3M9Cj0zRHUrMTpvPTNEdX1yZXR1cm4gc30scC50b0FycmF5PTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGU/cC5pc0FycmF5KGUpP28uY2FsbD0KKGUpOmUubGVuZ3RoPTNEPTNEPTNEK2UubGVuZ3Ro
P3AubWFwKGUscC5pZGVudGl0eSk6cC52YWx1ZXMoZSk6W119LHAuc2l6ZT0KPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGU9M0Q9M0RudWxsPzA6ZS5sZW5ndGg9M0Q9M0Q9M0QrZS5sZW5ndGg/ZS5sZW5n
dGg6cC5rPQpleXMoZSkubGVuZ3RofSxwLnBhcnRpdGlvbj0zRGZ1bmN0aW9uKGUsdCxuKXt0PTNE
cC5pdGVyYXRlZSh0LG4pO3ZhciByPTNEW109CixpPTNEW107cmV0dXJuIHAuZWFjaChlLGZ1bmN0
aW9uKGUsbixzKXsodChlLG4scyk/cjppKS5wdXNoKGUpfSksW3IsaV19LHAuZj0KaXJzdD0zRHAu
aGVhZD0zRHAudGFrZT0zRGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0zRD0zRG51bGw/dm9pZCAw
OnQ9M0Q9M0RuPQp1bGx8fG4/ZVswXTp0PDA/W106by5jYWxsKGUsMCx0KX0scC5pbml0aWFsPTNE
ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBvLmNhbGw9CihlLDAsTWF0aC5tYXgoMCxlLmxlbmd0aC0o
dD0zRD0zRG51bGx8fG4/MTp0KSkpfSxwLmxhc3Q9M0RmdW5jdGlvbihlLHQsbil7cj0KZXR1cm4g
ZT0zRD0zRG51bGw/dm9pZCAwOnQ9M0Q9M0RudWxsfHxuP2VbZS5sZW5ndGgtMV06by5jYWxsKGUs
TWF0aC5tYXgoZS5sPQplbmd0aC10LDApKX0scC5yZXN0PTNEcC50YWlsPTNEcC5kcm9wPTNEZnVu
Y3Rpb24oZSx0LG4pe3JldHVybiBvLmNhbGwoZSx0PQo9M0Q9M0RudWxsfHxuPzE6dCl9LHAuY29t
cGFjdD0zRGZ1bmN0aW9uKGUpe3JldHVybiBwLmZpbHRlcihlLHAuaWRlbnRpdHkpfTs9CnZhciBn
PTNEZnVuY3Rpb24oZSx0LG4scil7aWYodCYmcC5ldmVyeShlLHAuaXNBcnJheSkpcmV0dXJuIHUu
YXBwbHkocixlKTtmbz0Kcih2YXIgaT0zRDAsbz0zRGUubGVuZ3RoO2k8bztpKyspe3ZhciBhPTNE
ZVtpXTshcC5pc0FycmF5KGEpJiYhcC5pc0FyZ3VtZW50PQpzKGEpP258fHIucHVzaChhKTp0P3Mu
YXBwbHkocixhKTpnKGEsdCxuLHIpfXJldHVybiByfTtwLmZsYXR0ZW49M0RmdW5jdGlvbig9CmUs
dCl7cmV0dXJuIGcoZSx0LCExLFtdKX0scC53aXRob3V0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIHAu
ZGlmZmVyZW5jZShlLG8uYz0KYWxsKGFyZ3VtZW50cywxKSl9LHAudW5pcT0zRHAudW5pcXVlPTNE
ZnVuY3Rpb24oZSx0LG4scil7aWYoZT0zRD0zRG51bGwpcmV0PQp1cm5bXTtwLmlzQm9vbGVhbih0
KXx8KHI9M0RuLG49M0R0LHQ9M0QhMSksbiE9M0RudWxsJiYobj0zRHAuaXRlcmF0ZWUobixyKSk9
Cjt2YXIgaT0zRFtdLHM9M0RbXTtmb3IodmFyIG89M0QwLHU9M0RlLmxlbmd0aDtvPHU7bysrKXt2
YXIgYT0zRGVbb107aWYodCkoIT0Kb3x8cyE9M0Q9M0RhKSYmaS5wdXNoKGEpLHM9M0RhO2Vsc2Ug
aWYobil7dmFyIGY9M0RuKGEsbyxlKTtwLmluZGV4T2YocyxmKTwwPQomJihzLnB1c2goZiksaS5w
dXNoKGEpKX1lbHNlIHAuaW5kZXhPZihpLGEpPDAmJmkucHVzaChhKX1yZXR1cm4gaX0scC51bmlv
bj0KPTNEZnVuY3Rpb24oKXtyZXR1cm4gcC51bmlxKGcoYXJndW1lbnRzLCEwLCEwLFtdKSl9LHAu
aW50ZXJzZWN0aW9uPTNEZnVuY3RpPQpvbihlKXtpZihlPTNEPTNEbnVsbClyZXR1cm5bXTt2YXIg
dD0zRFtdLG49M0Rhcmd1bWVudHMubGVuZ3RoO2Zvcih2YXIgcj0zRDA9CixpPTNEZS5sZW5ndGg7
cjxpO3IrKyl7dmFyIHM9M0RlW3JdO2lmKHAuY29udGFpbnModCxzKSljb250aW51ZTtmb3IodmFy
IG89Cj0zRDE7bzxuO28rKylpZighcC5jb250YWlucyhhcmd1bWVudHNbb10scykpYnJlYWs7bz0z
RD0zRD0zRG4mJnQucHVzaChzKX1yZT0KdHVybiB0fSxwLmRpZmZlcmVuY2U9M0RmdW5jdGlvbihl
KXt2YXIgdD0zRGcoby5jYWxsKGFyZ3VtZW50cywxKSwhMCwhMCxbXSk7PQpyZXR1cm4gcC5maWx0
ZXIoZSxmdW5jdGlvbihlKXtyZXR1cm4hcC5jb250YWlucyh0LGUpfSl9LHAuemlwPTNEZnVuY3Rp
b24oZSk9CntpZihlPTNEPTNEbnVsbClyZXR1cm5bXTt2YXIgdD0zRHAubWF4KGFyZ3VtZW50cywi
bGVuZ3RoIikubGVuZ3RoLG49M0RBcnJheT0KKHQpO2Zvcih2YXIgcj0zRDA7cjx0O3IrKyluW3Jd
PTNEcC5wbHVjayhhcmd1bWVudHMscik7cmV0dXJuIG59LHAub2JqZWN0PTNEPQpmdW5jdGlvbihl
LHQpe2lmKGU9M0Q9M0RudWxsKXJldHVybnt9O3ZhciBuPTNEe307Zm9yKHZhciByPTNEMCxpPTNE
ZS5sZW5ndGg9CjtyPGk7cisrKXQ/bltlW3JdXT0zRHRbcl06bltlW3JdWzBdXT0zRGVbcl1bMV07
cmV0dXJuIG59LHAuaW5kZXhPZj0zRGZ1bmN0aT0Kb24oZSx0LG4pe2lmKGU9M0Q9M0RudWxsKXJl
dHVybi0xO3ZhciByPTNEMCxpPTNEZS5sZW5ndGg7aWYobil7aWYodHlwZW9mIG4hPQo9M0QibnVt
YmVyIilyZXR1cm4gcj0zRHAuc29ydGVkSW5kZXgoZSx0KSxlW3JdPTNEPTNEPTNEdD9yOi0xO3I9
M0RuPDA/TWF0aC49Cm1heCgwLGkrbik6bn1mb3IoO3I8aTtyKyspaWYoZVtyXT0zRD0zRD0zRHQp
cmV0dXJuIHI7cmV0dXJuLTF9LHAubGFzdEluZGV4Tz0KZj0zRGZ1bmN0aW9uKGUsdCxuKXtpZihl
PTNEPTNEbnVsbClyZXR1cm4tMTt2YXIgcj0zRGUubGVuZ3RoO3R5cGVvZiBuPTNEPTNEPQoibnVt
YmVyIiYmKHI9M0RuPDA/cituKzE6TWF0aC5taW4ocixuKzEpKTt3aGlsZSgtLXI+PTNEMClpZihl
W3JdPTNEPTNEPTNEdCk9CnJldHVybiByO3JldHVybi0xfSxwLnJhbmdlPTNEZnVuY3Rpb24oZSx0
LG4pe2FyZ3VtZW50cy5sZW5ndGg8PTNEMSYmKHQ9M0RlfD0KfDAsZT0zRDApLG49M0RufHwxO3Zh
ciByPTNETWF0aC5tYXgoTWF0aC5jZWlsKCh0LWUpL24pLDApLGk9M0RBcnJheShyKTtmb3IoPQp2
YXIgcz0zRDA7czxyO3MrKyxlKz0zRG4paVtzXT0zRGU7cmV0dXJuIGl9O3ZhciB5PTNEZnVuY3Rp
b24oKXt9O3AuYmluZD0zRGY9CnVuY3Rpb24oZSx0KXt2YXIgbixyO2lmKGgmJmUuYmluZD0zRD0z
RD0zRGgpcmV0dXJuIGguYXBwbHkoZSxvLmNhbGwoYXJndW1lbj0KdHMsMSkpO2lmKCFwLmlzRnVu
Y3Rpb24oZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQmluZCBtdXN0IGJlIGNhbGxlZCBvbiBhIGZ1
PQpuY3Rpb24iKTtyZXR1cm4gbj0zRG8uY2FsbChhcmd1bWVudHMsMikscj0zRGZ1bmN0aW9uKCl7
aWYodGhpcyBpbnN0YW5jZW9mIHI9Cil7eS5wcm90b3R5cGU9M0RlLnByb3RvdHlwZTt2YXIgaT0z
RG5ldyB5O3kucHJvdG90eXBlPTNEbnVsbDt2YXIgcz0zRGUuYXBwbD0KeShpLG4uY29uY2F0KG8u
Y2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIHAuaXNPYmplY3Qocyk/czppfXJldHVybiBlLmFwcGx5
KHQsPQpuLmNvbmNhdChvLmNhbGwoYXJndW1lbnRzKSkpfSxyfSxwLnBhcnRpYWw9M0RmdW5jdGlv
bihlKXt2YXIgdD0zRG8uY2FsbChhcmc9CnVtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIg
bj0zRDAscj0zRHQuc2xpY2UoKTtmb3IodmFyIGk9M0QwLHM9M0RyLmxlbj0KZ3RoO2k8cztpKysp
cltpXT0zRD0zRD0zRHAmJihyW2ldPTNEYXJndW1lbnRzW24rK10pO3doaWxlKG48YXJndW1lbnRz
Lmxlbmd0PQpoKXIucHVzaChhcmd1bWVudHNbbisrXSk7cmV0dXJuIGUuYXBwbHkodGhpcyxyKX19
LHAuYmluZEFsbD0zRGZ1bmN0aW9uKGUpe3Y9CmFyIHQsbj0zRGFyZ3VtZW50cy5sZW5ndGgscjtp
ZihuPD0zRDEpdGhyb3cgbmV3IEVycm9yKCJiaW5kQWxsIG11c3QgYmUgcGFzcz0KZWQgZnVuY3Rp
b24gbmFtZXMiKTtmb3IodD0zRDE7dDxuO3QrKylyPTNEYXJndW1lbnRzW3RdLGVbcl09M0RwLmJp
bmQoZVtyXSxlPQopO3JldHVybiBlfSxwLm1lbW9pemU9M0RmdW5jdGlvbihlLHQpe3ZhciBuPTNE
ZnVuY3Rpb24ocil7dmFyIGk9M0RuLmNhY2hlLHM9Cj0zRHQ/dC5hcHBseSh0aGlzLGFyZ3VtZW50
cyk6cjtyZXR1cm4gcC5oYXMoaSxzKXx8KGlbc109M0RlLmFwcGx5KHRoaXMsYXJndT0KbWVudHMp
KSxpW3NdfTtyZXR1cm4gbi5jYWNoZT0zRHt9LG59LHAuZGVsYXk9M0RmdW5jdGlvbihlLHQpe3Zh
ciBuPTNEby5jYWxsPQooYXJndW1lbnRzLDIpO3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7
cmV0dXJuIGUuYXBwbHkobnVsbCxuKX0sdCl9LHAuZGU9CmZlcj0zRGZ1bmN0aW9uKGUpe3JldHVy
biBwLmRlbGF5LmFwcGx5KHAsW2UsMV0uY29uY2F0KG8uY2FsbChhcmd1bWVudHMsMSkpKT0KfSxw
LnRocm90dGxlPTNEZnVuY3Rpb24oZSx0LG4pe3ZhciByLGkscyxvPTNEbnVsbCx1PTNEMDtufHwo
bj0zRHt9KTt2YXIgYT0KPTNEZnVuY3Rpb24oKXt1PTNEbi5sZWFkaW5nPTNEPTNEPTNEITE/MDpw
Lm5vdygpLG89M0RudWxsLHM9M0RlLmFwcGx5KHIsaSksPQpvfHwocj0zRGk9M0RudWxsKX07cmV0
dXJuIGZ1bmN0aW9uKCl7dmFyIGY9M0RwLm5vdygpOyF1JiZuLmxlYWRpbmc9M0Q9M0Q9M0Q9CiEx
JiYodT0zRGYpO3ZhciBsPTNEdC0oZi11KTtyZXR1cm4gcj0zRHRoaXMsaT0zRGFyZ3VtZW50cyxs
PD0zRDB8fGw+dD8oY2xlYT0KclRpbWVvdXQobyksbz0zRG51bGwsdT0zRGYscz0zRGUuYXBwbHko
cixpKSxvfHwocj0zRGk9M0RudWxsKSk6IW8mJm4udHJhaWxpPQpuZyE9M0Q9M0QhMSYmKG89M0Rz
ZXRUaW1lb3V0KGEsbCkpLHN9fSxwLmRlYm91bmNlPTNEZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9
CixzLG8sdSxhPTNEZnVuY3Rpb24oKXt2YXIgZj0zRHAubm93KCktbztmPHQmJmY+MD9yPTNEc2V0
VGltZW91dChhLHQtZik6KHI9Cj0zRG51bGwsbnx8KHU9M0RlLmFwcGx5KHMsaSkscnx8KHM9M0Rp
PTNEbnVsbCkpKX07cmV0dXJuIGZ1bmN0aW9uKCl7cz0zRHRoaT0KcyxpPTNEYXJndW1lbnRzLG89
M0RwLm5vdygpO3ZhciBmPTNEbiYmIXI7cmV0dXJuIHJ8fChyPTNEc2V0VGltZW91dChhLHQpKSxm
PQomJih1PTNEZS5hcHBseShzLGkpLHM9M0RpPTNEbnVsbCksdX19LHAud3JhcD0zRGZ1bmN0aW9u
KGUsdCl7cmV0dXJuIHAucGFydGk9CmFsKHQsZSl9LHAubmVnYXRlPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIWUuYXBwbHkodGhpcyxhcmd1bT0KZW50cyl9fSxwLmNvbXBv
c2U9M0RmdW5jdGlvbigpe3ZhciBlPTNEYXJndW1lbnRzLHQ9M0RlLmxlbmd0aC0xO3JldHVybiBm
dW5jPQp0aW9uKCl7dmFyIG49M0R0LHI9M0RlW3RdLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt3aGls
ZShuLS0pcj0zRGVbbl0uY2FsbCh0aGk9CnMscik7cmV0dXJuIHJ9fSxwLmFmdGVyPTNEZnVuY3Rp
b24oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtpZigtLWU8MSlyZXR1cm4gdD0KLmFwcGx5KHRoaXMs
YXJndW1lbnRzKX19LHAuYmVmb3JlPTNEZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gZnVuY3Rp
b24oKXtyPQpldHVybi0tZT4wP249M0R0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0PTNEbnVsbCxu
fX0scC5vbmNlPTNEcC5wYXJ0aWFsKHAuYmU9CmZvcmUsMikscC5rZXlzPTNEZnVuY3Rpb24oZSl7
aWYoIXAuaXNPYmplY3QoZSkpcmV0dXJuW107aWYoYylyZXR1cm4gYyhlKTt2YT0KciB0PTNEW107
Zm9yKHZhciBuIGluIGUpcC5oYXMoZSxuKSYmdC5wdXNoKG4pO3JldHVybiB0fSxwLnZhbHVlcz0z
RGZ1bmN0aW9uPQooZSl7dmFyIHQ9M0RwLmtleXMoZSksbj0zRHQubGVuZ3RoLHI9M0RBcnJheShu
KTtmb3IodmFyIGk9M0QwO2k8bjtpKyspcltpXT0KPTNEZVt0W2ldXTtyZXR1cm4gcn0scC5wYWly
cz0zRGZ1bmN0aW9uKGUpe3ZhciB0PTNEcC5rZXlzKGUpLG49M0R0Lmxlbmd0aCxyPQo9M0RBcnJh
eShuKTtmb3IodmFyIGk9M0QwO2k8bjtpKyspcltpXT0zRFt0W2ldLGVbdFtpXV1dO3JldHVybiBy
fSxwLmludmVydD0KPTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0R7fSxuPTNEcC5rZXlzKGUpO2Zvcih2
YXIgcj0zRDAsaT0zRG4ubGVuZ3RoO3I8aTtyKyspPQp0W2VbbltyXV1dPTNEbltyXTtyZXR1cm4g
dH0scC5mdW5jdGlvbnM9M0RwLm1ldGhvZHM9M0RmdW5jdGlvbihlKXt2YXIgdD0zRFs9Cl07Zm9y
KHZhciBuIGluIGUpcC5pc0Z1bmN0aW9uKGVbbl0pJiZ0LnB1c2gobik7cmV0dXJuIHQuc29ydCgp
fSxwLmV4dGVuZD0zRD0KZnVuY3Rpb24oZSl7aWYoIXAuaXNPYmplY3QoZSkpcmV0dXJuIGU7dmFy
IHQsbjtmb3IodmFyIHI9M0QxLGk9M0Rhcmd1bWVudHMuPQpsZW5ndGg7cjxpO3IrKyl7dD0zRGFy
Z3VtZW50c1tyXTtmb3IobiBpbiB0KWYuY2FsbCh0LG4pJiYoZVtuXT0zRHRbbl0pfXJldHU9CnJu
IGV9LHAucGljaz0zRGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0zRHt9LGk7aWYoZT0zRD0zRG51bGwp
cmV0dXJuIHI7aWYocC5pcz0KRnVuY3Rpb24odCkpe3Q9M0RkKHQsbik7Zm9yKGkgaW4gZSl7dmFy
IHM9M0RlW2ldO3QocyxpLGUpJiYocltpXT0zRHMpfX1lbHNlPQp7dmFyIGE9M0R1LmFwcGx5KFtd
LG8uY2FsbChhcmd1bWVudHMsMSkpO2U9M0RuZXcgT2JqZWN0KGUpO2Zvcih2YXIgZj0zRDAsbD0K
PTNEYS5sZW5ndGg7ZjxsO2YrKylpPTNEYVtmXSxpIGluIGUmJihyW2ldPTNEZVtpXSl9cmV0dXJu
IHJ9LHAub21pdD0zRGZ1bmN0PQppb24oZSx0LG4pe2lmKHAuaXNGdW5jdGlvbih0KSl0PTNEcC5u
ZWdhdGUodCk7ZWxzZXt2YXIgcj0zRHAubWFwKHUuYXBwbHkoW109CixvLmNhbGwoYXJndW1lbnRz
LDEpKSxTdHJpbmcpO3Q9M0RmdW5jdGlvbihlLHQpe3JldHVybiFwLmNvbnRhaW5zKHIsdCl9fXJl
dD0KdXJuIHAucGljayhlLHQsbil9LHAuZGVmYXVsdHM9M0RmdW5jdGlvbihlKXtpZighcC5pc09i
amVjdChlKSlyZXR1cm4gZTtmb3IoPQp2YXIgdD0zRDEsbj0zRGFyZ3VtZW50cy5sZW5ndGg7dDxu
O3QrKyl7dmFyIHI9M0Rhcmd1bWVudHNbdF07Zm9yKHZhciBpIGluIHI9CillW2ldPTNEPTNEPTNE
dm9pZCAwJiYoZVtpXT0zRHJbaV0pfXJldHVybiBlfSxwLmNsb25lPTNEZnVuY3Rpb24oZSl7cmV0
dXJuID0KcC5pc09iamVjdChlKT9wLmlzQXJyYXkoZSk/ZS5zbGljZSgpOnAuZXh0ZW5kKHt9LGUp
OmV9LHAudGFwPTNEZnVuY3Rpb24oZSx0PQope3JldHVybiB0KGUpLGV9O3ZhciBiPTNEZnVuY3Rp
b24oZSx0LG4scil7aWYoZT0zRD0zRD0zRHQpcmV0dXJuIGUhPTNEPTNEMHw9CnwxL2U9M0Q9M0Q9
M0QxL3Q7aWYoZT0zRD0zRG51bGx8fHQ9M0Q9M0RudWxsKXJldHVybiBlPTNEPTNEPTNEdDtlIGlu
c3RhbmNlbz0KZiBwJiYoZT0zRGUuX3dyYXBwZWQpLHQgaW5zdGFuY2VvZiBwJiYodD0zRHQuX3dy
YXBwZWQpO3ZhciBpPTNEYS5jYWxsKGUpO2lmPQooaSE9M0Q9M0RhLmNhbGwodCkpcmV0dXJuITE7
c3dpdGNoKGkpe2Nhc2UiW29iamVjdCBSZWdFeHBdIjpjYXNlIltvYmplY3QgU3Q9CnJpbmddIjpy
ZXR1cm4iIitlPTNEPTNEIiIrdDtjYXNlIltvYmplY3QgTnVtYmVyXSI6aWYoK2UhPTNEPTNEK2Up
cmV0dXJuK3QhPQo9M0Q9M0QrdDtyZXR1cm4rZT0zRD0zRD0zRDA/MS8rZT0zRD0zRD0zRDEvdDor
ZT0zRD0zRD0zRCt0O2Nhc2UiW29iamVjdCBEYXQ9CmVdIjpjYXNlIltvYmplY3QgQm9vbGVhbl0i
OnJldHVybitlPTNEPTNEPTNEK3R9aWYodHlwZW9mIGUhPTNEIm9iamVjdCJ8fHR5cD0KZW9mIHQh
PTNEIm9iamVjdCIpcmV0dXJuITE7dmFyIHM9M0RuLmxlbmd0aDt3aGlsZShzLS0paWYobltzXT0z
RD0zRD0zRGUpcmV0PQp1cm4gcltzXT0zRD0zRD0zRHQ7dmFyIG89M0RlLmNvbnN0cnVjdG9yLHU9
M0R0LmNvbnN0cnVjdG9yO2lmKG8hPTNEPTNEdSYmImM9Cm9uc3RydWN0b3IiaW4gZSYmImNvbnN0
cnVjdG9yImluIHQmJiEocC5pc0Z1bmN0aW9uKG8pJiZvIGluc3RhbmNlb2YgbyYmcC5pcz0KRnVu
Y3Rpb24odSkmJnUgaW5zdGFuY2VvZiB1KSlyZXR1cm4hMTtuLnB1c2goZSksci5wdXNoKHQpO3Zh
ciBmLGw7aWYoaT0zRD0KPTNEPTNEIltvYmplY3QgQXJyYXldIil7Zj0zRGUubGVuZ3RoLGw9M0Rm
PTNEPTNEPTNEdC5sZW5ndGg7aWYobCl3aGlsZShmLS0pPQppZighKGw9M0RiKGVbZl0sdFtmXSxu
LHIpKSlicmVha31lbHNle3ZhciBjPTNEcC5rZXlzKGUpLGg7Zj0zRGMubGVuZ3RoLGw9M0Q9CnAu
a2V5cyh0KS5sZW5ndGg9M0Q9M0Q9M0RmO2lmKGwpd2hpbGUoZi0tKXtoPTNEY1tmXTtpZighKGw9
M0RwLmhhcyh0LGgpJiZiKD0KZVtoXSx0W2hdLG4scikpKWJyZWFrfX1yZXR1cm4gbi5wb3AoKSxy
LnBvcCgpLGx9O3AuaXNFcXVhbD0zRGZ1bmN0aW9uKGUsdCl7PQpyZXR1cm4gYihlLHQsW10sW10p
fSxwLmlzRW1wdHk9M0RmdW5jdGlvbihlKXtpZihlPTNEPTNEbnVsbClyZXR1cm4hMDtpZihwLmk9
CnNBcnJheShlKXx8cC5pc1N0cmluZyhlKXx8cC5pc0FyZ3VtZW50cyhlKSlyZXR1cm4gZS5sZW5n
dGg9M0Q9M0Q9M0QwO2Zvcih2YT0KciB0IGluIGUpaWYocC5oYXMoZSx0KSlyZXR1cm4hMTtyZXR1
cm4hMH0scC5pc0VsZW1lbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4hPQohZSYmZS5ub2RlVHlwZT0z
RD0zRD0zRDF9LHAuaXNBcnJheT0zRGx8fGZ1bmN0aW9uKGUpe3JldHVybiBhLmNhbGwoZSk9M0Q9
M0Q9Cj0zRCJbb2JqZWN0IEFycmF5XSJ9LHAuaXNPYmplY3Q9M0RmdW5jdGlvbihlKXt2YXIgdD0z
RHR5cGVvZiBlO3JldHVybiB0PTNEPQo9M0Q9M0QiZnVuY3Rpb24ifHx0PTNEPTNEPTNEIm9iamVj
dCImJiEhZX0scC5lYWNoKFsiQXJndW1lbnRzIiwiRnVuY3Rpb24iLCI9ClN0cmluZyIsIk51bWJl
ciIsIkRhdGUiLCJSZWdFeHAiXSxmdW5jdGlvbihlKXtwWyJpcyIrZV09M0RmdW5jdGlvbih0KXty
ZXR1cj0KbiBhLmNhbGwodCk9M0Q9M0Q9M0QiW29iamVjdCAiK2UrIl0ifX0pLHAuaXNBcmd1bWVu
dHMoYXJndW1lbnRzKXx8KHAuaXNBcmd1PQptZW50cz0zRGZ1bmN0aW9uKGUpe3JldHVybiBwLmhh
cyhlLCJjYWxsZWUiKX0pLHR5cGVvZiAvLi8hPTNEImZ1bmN0aW9uIiYmKHA9Ci5pc0Z1bmN0aW9u
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPTNEPTNEImZ1bmN0aW9uInx8ITF9KSxwLmlz
RmluaXRlPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gaXNGaW5pdGUoZSkmJiFpc05hTihwYXJzZUZs
b2F0KGUpKX0scC5pc05hTj0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJuIHAuaXNOdW1iZXIoZSkmJmUh
PTNEPTNEK2V9LHAuaXNCb29sZWFuPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGU9Cj0zRD0zRD0zRCEw
fHxlPTNEPTNEPTNEITF8fGEuY2FsbChlKT0zRD0zRD0zRCJbb2JqZWN0IEJvb2xlYW5dIn0scC5p
c051bGw9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBlPTNEPTNEPTNEbnVsbH0scC5pc1VuZGVmaW5l
ZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBlPQo9M0Q9M0Q9M0R2b2lkIDB9LHAuaGFzPTNEZnVuY3Rp
b24oZSx0KXtyZXR1cm4gZSE9M0RudWxsJiZmLmNhbGwoZSx0KX0scC5ub0M9Cm9uZmxpY3Q9M0Rm
dW5jdGlvbigpe3JldHVybiBlLl89M0R0LHRoaXN9LHAuaWRlbnRpdHk9M0RmdW5jdGlvbihlKXty
ZXR1cm4gZT0KfSxwLmNvbnN0YW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0
dXJuIGV9fSxwLm5vb3A9M0RmdW5jdGlvbigpPQp7fSxwLnByb3BlcnR5PTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0W2VdfX0scC5tYXRjaGVzPTNEZnU9Cm5jdGlvbihl
KXt2YXIgdD0zRHAucGFpcnMoZSksbj0zRHQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihlKXtpZihl
PTNEPTNEbnVsbD0KKXJldHVybiFuO2U9M0RuZXcgT2JqZWN0KGUpO2Zvcih2YXIgcj0zRDA7cjxu
O3IrKyl7dmFyIGk9M0R0W3JdLHM9M0RpWzBdO2lmPQooaVsxXSE9M0Q9M0RlW3NdfHwhKHMgaW4g
ZSkpcmV0dXJuITF9cmV0dXJuITB9fSxwLnRpbWVzPTNEZnVuY3Rpb24oZSx0LG4pe3Y9CmFyIHI9
M0RBcnJheShNYXRoLm1heCgwLGUpKTt0PTNEZCh0LG4sMSk7Zm9yKHZhciBpPTNEMDtpPGU7aSsr
KXJbaV09M0R0KGkpOz0KcmV0dXJuIHJ9LHAucmFuZG9tPTNEZnVuY3Rpb24oZSx0KXtyZXR1cm4g
dD0zRD0zRG51bGwmJih0PTNEZSxlPTNEMCksZStNYXRoPQouZmxvb3IoTWF0aC5yYW5kb20oKSoo
dC1lKzEpKX0scC5ub3c9M0REYXRlLm5vd3x8ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGU9Ciku
Z2V0VGltZSgpfTt2YXIgdz0zRHsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyIn
OiImcXVvdDsiLCInIjoiJj0KI3gyNzsiLCJgIjoiJiN4NjA7In0sRT0zRHAuaW52ZXJ0KHcpLFM9
M0RmdW5jdGlvbihlKXt2YXIgdD0zRGZ1bmN0aW9uKHQpe3JlPQp0dXJuIGVbdF19LG49M0QiKD86
IitwLmtleXMoZSkuam9pbigifCIpKyIpIixyPTNEUmVnRXhwKG4pLGk9M0RSZWdFeHAobiwiZyI9
Cik7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlPTNEZT0zRD0zRG51bGw/IiI6IiIrZSxyLnRl
c3QoZSk/ZS5yZXBsYWNlKGksdD0KKTplfX07cC5lc2NhcGU9M0RTKHcpLHAudW5lc2NhcGU9M0RT
KEUpLHAucmVzdWx0PTNEZnVuY3Rpb24oZSx0KXtpZihlPTNEPTNEPQpudWxsKXJldHVybiB2b2lk
IDA7dmFyIG49M0RlW3RdO3JldHVybiBwLmlzRnVuY3Rpb24obik/ZVt0XSgpOm59O3ZhciB4PTNE
MDs9CnAudW5pcXVlSWQ9M0RmdW5jdGlvbihlKXt2YXIgdD0zRCsreCsiIjtyZXR1cm4gZT9lK3Q6
dH0scC50ZW1wbGF0ZVNldHRpbmdzPQo9M0R7ZXZhbHVhdGU6LzwlKFtcc1xTXSs/KSU+L2csaW50
ZXJwb2xhdGU6LzwlPTNEKFtcc1xTXSs/KSU+L2csZXNjYXBlOi88JS09CihbXHNcU10rPyklPi9n
fTt2YXIgVD0zRC8oLileLyxOPTNEeyInIjoiJyIsIlxcIjoiXFwiLCJcciI6InIiLCJcbiI6Im4i
LCJcdT0KMjAyOCI6InUyMDI4IiwiXHUyMDI5IjoidTIwMjkifSxDPTNEL1xcfCd8XHJ8XG58XHUy
MDI4fFx1MjAyOS9nLGs9M0RmdW5jdGlvPQpuKGUpe3JldHVybiJcXCIrTltlXX07cC50ZW1wbGF0
ZT0zRGZ1bmN0aW9uKGUsdCxuKXshdCYmbiYmKHQ9M0RuKSx0PTNEcC5kZWY9CmF1bHRzKHt9LHQs
cC50ZW1wbGF0ZVNldHRpbmdzKTt2YXIgcj0zRFJlZ0V4cChbKHQuZXNjYXBlfHxUKS5zb3VyY2Us
KHQuaW50ZT0KcnBvbGF0ZXx8VCkuc291cmNlLCh0LmV2YWx1YXRlfHxUKS5zb3VyY2VdLmpvaW4o
InwiKSsifCQiLCJnIiksaT0zRDAscz0zRCJfPQpfcCs9M0QnIjtlLnJlcGxhY2UocixmdW5jdGlv
bih0LG4scixvLHUpe3JldHVybiBzKz0zRGUuc2xpY2UoaSx1KS5yZXBsYWNlKEM9CixrKSxpPTNE
dSt0Lmxlbmd0aCxuP3MrPTNEIicrXG4oKF9fdD0zRCgiK24rIikpPTNEPTNEbnVsbD8nJzpfLmVz
Y2FwZShfX3QpKT0KK1xuJyI6cj9zKz0zRCInK1xuKChfX3Q9M0QoIityKyIpKT0zRD0zRG51bGw/
Jyc6X190KStcbiciOm8mJihzKz0zRCInO1xuIitvPQorIlxuX19wKz0zRCciKSx0fSkscys9M0Qi
JztcbiIsdC52YXJpYWJsZXx8KHM9M0Qid2l0aChvYmp8fHt9KXtcbiIrcysifVxuIik9CixzPTNE
InZhciBfX3QsX19wPTNEJycsX19qPTNEQXJyYXkucHJvdG90eXBlLmpvaW4scHJpbnQ9M0RmdW5j
dGlvbigpe19fcCs9Cj0zRF9fai5jYWxsKGFyZ3VtZW50cywnJyk7fTtcbiIrcysicmV0dXJuIF9f
cDtcbiI7dHJ5e3ZhciBvPTNEbmV3IEZ1bmN0aW9uKD0KdC52YXJpYWJsZXx8Im9iaiIsIl8iLHMp
fWNhdGNoKHUpe3Rocm93IHUuc291cmNlPTNEcyx1fXZhciBhPTNEZnVuY3Rpb24oZSl7PQpyZXR1
cm4gby5jYWxsKHRoaXMsZSxwKX0sZj0zRHQudmFyaWFibGV8fCJvYmoiO3JldHVybiBhLnNvdXJj
ZT0zRCJmdW5jdGlvbig9CiIrZisiKXtcbiIrcysifSIsYX0scC5jaGFpbj0zRGZ1bmN0aW9uKGUp
e3ZhciB0PTNEcChlKTtyZXR1cm4gdC5fY2hhaW49M0QhMD0KLHR9O3ZhciBMPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIHRoaXMuX2NoYWluP3AoZSkuY2hhaW4oKTplfTtwLm1peGluPTNEZnVuY3RpPQpv
bihlKXtwLmVhY2gocC5mdW5jdGlvbnMoZSksZnVuY3Rpb24odCl7dmFyIG49M0RwW3RdPTNEZVt0
XTtwLnByb3RvdHlwZVt0XT0KPTNEZnVuY3Rpb24oKXt2YXIgZT0zRFt0aGlzLl93cmFwcGVkXTty
ZXR1cm4gcy5hcHBseShlLGFyZ3VtZW50cyksTC5jYWxsKHRoPQppcyxuLmFwcGx5KHAsZSkpfX0p
fSxwLm1peGluKHApLHAuZWFjaChbInBvcCIsInB1c2giLCJyZXZlcnNlIiwic2hpZnQiLCJzb3I9
CnQiLCJzcGxpY2UiLCJ1bnNoaWZ0Il0sZnVuY3Rpb24oZSl7dmFyIHQ9M0RuW2VdO3AucHJvdG90
eXBlW2VdPTNEZnVuY3Rpb24oKT0Ke3ZhciBuPTNEdGhpcy5fd3JhcHBlZDtyZXR1cm4gdC5hcHBs
eShuLGFyZ3VtZW50cyksKGU9M0Q9M0Q9M0Qic2hpZnQifHxlPTNEPQo9M0Q9M0Qic3BsaWNlIikm
Jm4ubGVuZ3RoPTNEPTNEPTNEMCYmZGVsZXRlIG5bMF0sTC5jYWxsKHRoaXMsbil9fSkscC5lYWNo
KFs9CiJjb25jYXQiLCJqb2luIiwic2xpY2UiXSxmdW5jdGlvbihlKXt2YXIgdD0zRG5bZV07cC5w
cm90b3R5cGVbZV09M0RmdW5jdGlvbj0KKCl7cmV0dXJuIEwuY2FsbCh0aGlzLHQuYXBwbHkodGhp
cy5fd3JhcHBlZCxhcmd1bWVudHMpKX19KSxwLnByb3RvdHlwZS52YWx1PQplPTNEZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5fd3JhcHBlZH0sdHlwZW9mIGRlZmluZT0zRD0zRCJmdW5jdGlvbiImJmRl
ZmluZS49CmFtZCYmZGVmaW5lKCJ1bmRlcnNjb3JlIixbXSxmdW5jdGlvbigpe3JldHVybiBwfSl9
LmNhbGwodGhpcyksZGVmaW5lKCJsaWJzLz0KdW5kZXJzY29yZSIsZnVuY3Rpb24oZSl7cmV0dXJu
IGZ1bmN0aW9uKCl7dmFyIHQsbjtyZXR1cm4gdHx8ZS5ffX0odGhpcykpLGRlPQpmaW5lKCJ1dGls
cy91dGlscyIsWyJsaWJzL3VuZGVyc2NvcmUiXSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3Jl
dHVybiAkKCI9CjxkaXYvPiIpLnRleHQoZSkuaHRtbCgpfWZ1bmN0aW9uIG4oZSl7ZSBpbnN0YW5j
ZW9mIEFycmF5fHwoZT0zRFtlXSk7Zm9yKHZhcj0KIHQgaW4gZSlpZihbIk5vbmUiLG51bGwsIm51
bGwiLHVuZGVmaW5lZCwidW5kZWZpbmVkIl0uaW5kZXhPZihlW3RdKT4tMSlyZXR1PQpybiExO3Jl
dHVybiEwfWZ1bmN0aW9uIHIoZSl7dmFyIGU9M0RlLnRvU3RyaW5nKCk7aWYoZSl7ZT0zRGUucmVw
bGFjZSgvLC9nLCI9CiwgIik7dmFyIHQ9M0RlLmxhc3RJbmRleE9mKCIsICIpO3JldHVybiB0IT0z
RC0xJiYoZT0zRGUuc3Vic3RyKDAsdCkrIiBvciAiKz0KZS5zdWJzdHIodCsxKSksZX1yZXR1cm4i
In1mdW5jdGlvbiBpKGUpe3RvcC5fX3V0aWxzX19nZXRfXz0zRHRvcC5fX3V0aWxzX19nPQpldF9f
fHx7fSxlLmNhY2hlJiZ0b3AuX191dGlsc19fZ2V0X19bZS51cmxdPyhlLnN1Y2Nlc3MmJmUuc3Vj
Y2Vzcyh0b3AuX191dGk9CmxzX19nZXRfX1tlLnVybF0pLGNvbnNvbGUuZGVidWcoInV0aWxzLmpz
OjpnZXQoKSAtIEZldGNoaW5nIGZyb20gY2FjaGUgWyIrZT0KLnVybCsiXS4iKSk6cyh7dXJsOmUu
dXJsLGRhdGE6ZS5kYXRhLHN1Y2Nlc3M6ZnVuY3Rpb24odCl7dG9wLl9fdXRpbHNfX2dldF9fPQpb
ZS51cmxdPTNEdCxlLnN1Y2Nlc3MmJmUuc3VjY2Vzcyh0KX0sZXJyb3I6ZnVuY3Rpb24odCl7ZS5l
cnJvciYmZS5lcnJvcih0KX09Cn0pfWZ1bmN0aW9uIHMoZSl7dmFyIHQ9M0R7Y29udGVudFR5cGU6
ImFwcGxpY2F0aW9uL2pzb24iLHR5cGU6ZS50eXBlfHwiR0VUIj0KLGRhdGE6ZS5kYXRhfHx7fSx1
cmw6ZS51cmx9O3QudHlwZT0zRD0zRCJHRVQifHx0LnR5cGU9M0Q9M0QiREVMRVRFIj8odC51cmwu
PQppbmRleE9mKCI/Iik9M0Q9M0QtMT90LnVybCs9M0QiPyI6dC51cmwrPTNEIiYiLHQudXJsPTNE
dC51cmwrJC5wYXJhbSh0LmRhdGE9CiksdC5kYXRhPTNEbnVsbCk6KHQuZGF0YVR5cGU9M0QianNv
biIsdC51cmw9M0R0LnVybCx0LmRhdGE9M0RKU09OLnN0cmluZ2lmeT0KKHQuZGF0YSkpLCQuYWph
eCh0KS5kb25lKGZ1bmN0aW9uKHQpe2lmKHR5cGVvZiB0PTNEPTNEInN0cmluZyIpdHJ5e3Q9M0R0
LnJlPQpwbGFjZSgiSW5maW5pdHksIiwnIkluZmluaXR5IiwnKSx0PTNEalF1ZXJ5LnBhcnNlSlNP
Tih0KX1jYXRjaChuKXtjb25zb2xlLmQ9CmVidWcobil9ZS5zdWNjZXNzJiZlLnN1Y2Nlc3ModCl9
KS5mYWlsKGZ1bmN0aW9uKHQpe3ZhciBuPTNEbnVsbDt0cnl7bj0zRGpRdT0KZXJ5LnBhcnNlSlNP
Tih0LnJlc3BvbnNlVGV4dCl9Y2F0Y2gocil7bj0zRHQucmVzcG9uc2VUZXh0fWUuZXJyb3ImJmUu
ZXJyb3IoPQpuLHQpfSl9ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPTNEJCgnPGRpdiBjbGFzcz0zRCIn
K2UrJyI+PC9kaXY+Jyk7bi5hcHBlbmRUbyg9CiI6ZXEoMCkiKTt2YXIgcj0zRG4uY3NzKHQpO3Jl
dHVybiBuLnJlbW92ZSgpLHJ9ZnVuY3Rpb24gdShlKXskKCdsaW5rW2hyZWZePQo9M0QiJytlKyci
XScpLmxlbmd0aHx8JCgnPGxpbmsgaHJlZj0zRCInK2dhbGF4eV9jb25maWcucm9vdCtlKyciIHJl
bD0zRCJzdHk9Cmxlc2hlZXQiPicpLmFwcGVuZFRvKCJoZWFkIil9ZnVuY3Rpb24gYSh0LG4pe3Jl
dHVybiB0P2UuZGVmYXVsdHModCxuKTpufWZ1bj0KY3Rpb24gZihlLHQpe3ZhciBuPTNEIiI7aWYo
ZT49M0QxZTExKWUvPTNEMWUxMSxuPTNEIlRCIjtlbHNlIGlmKGU+PTNEMWU4KWUvPQo9M0QxZTgs
bj0zRCJHQiI7ZWxzZSBpZihlPj0zRDFlNSllLz0zRDFlNSxuPTNEIk1CIjtlbHNlIGlmKGU+PTNE
MTAwKWUvPTNEMTA9CjAsbj0zRCJLQiI7ZWxzZXtpZighKGU+MCkpcmV0dXJuIjxzdHJvbmc+LTwv
c3Ryb25nPiI7ZSo9M0QxMCxuPTNEImIifXZhciByPQo9M0RNYXRoLnJvdW5kKGUpLzEwO3JldHVy
biB0P3IrIiAiK246IjxzdHJvbmc+IityKyI8L3N0cm9uZz4gIitufWZ1bmN0aW9uIGw9Cigpe3Jl
dHVybiJ4IitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiw5KX1mdW5jdGlv
biBjKGUpe3ZhciB0PQo9M0QkKCI8cD48L3A+Iik7cmV0dXJuIHQuYXBwZW5kKGUpLHR9ZnVuY3Rp
b24gaCgpe3ZhciBlPTNEbmV3IERhdGUsdD0zRChlLmc9CmV0SG91cnMoKTwxMD8iMCI6IiIpK2Uu
Z2V0SG91cnMoKSxuPTNEKGUuZ2V0TWludXRlcygpPDEwPyIwIjoiIikrZS5nZXRNaW51dD0KZXMo
KSxyPTNEZS5nZXREYXRlKCkrIi8iKyhlLmdldE1vbnRoKCkrMSkrIi8iK2UuZ2V0RnVsbFllYXIo
KSsiLCAiK3QrIjoiK247PQpyZXR1cm4gcn1yZXR1cm57Y3NzTG9hZEZpbGU6dSxjc3NHZXRBdHRy
aWJ1dGU6byxnZXQ6aSxtZXJnZTphLGJ5dGVzVG9TdHJpbmc9CjpmLHV1aWQ6bCx0aW1lOmgsd3Jh
cDpjLHJlcXVlc3Q6cyxzYW5pdGl6ZTp0LHRleHRpZnk6cix2YWxpZGF0ZTpufX0pLGRlZmluZT0K
KCJtdmMvdWkvdWktcG9ydGxldCIsWyJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGUpe3ZhciB0PTNE
QmFja2JvbmUuVmlldy5leHRlPQpuZCh7dmlzaWJsZTohMSxvcHRpb25zRGVmYXVsdDp7dGl0bGU6
IiIsaWNvbjoiIixidXR0b25zOm51bGwsYm9keTpudWxsLHNjcm89CmxsYWJsZTohMCxub3BhZGRp
bmc6ITEsb3BlcmF0aW9uczpudWxsLHBsYWNlbWVudDoiYm90dG9tIixjbHM6InVpLXBvcnRsZXQi
LD0Kb3BlcmF0aW9uc19mbHQ6InJpZ2h0In0sJHRpdGxlOm51bGwsJGNvbnRlbnQ6bnVsbCwkYnV0
dG9uczpudWxsLCRvcGVyYXRpb25zPQo6bnVsbCwkaGVhZGVyOm51bGwsaW5pdGlhbGl6ZTpmdW5j
dGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHQ9CmlvbnNEZWZhdWx0KSx0
aGlzLnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSksdGhpcy4kY29udGVu
dD0zRD0KdGhpcy4kZWwuZmluZCgiLmNvbnRlbnQiKSx0aGlzLiR0aXRsZT0zRHRoaXMuJGVsLmZp
bmQoIi5wb3J0bGV0LXRpdGxlLXRleHQiPQopLHRoaXMuJGhlYWRlcj0zRHRoaXMuJGVsLmZpbmQo
Ii5wb3J0bGV0LWhlYWRlciIpO3ZhciBuPTNEdGhpcy4kZWwuZmluZCgiLnA9Cm9ydGxldC1jb250
ZW50Iik7dGhpcy5vcHRpb25zLnNjcm9sbGFibGU/bi5hZGRDbGFzcygic2Nyb2xsIik6dGhpcy5v
cHRpb25zLj0KdGl0bGU/bi5hZGRDbGFzcygibm8tc2Nyb2xsIik6bi5hZGRDbGFzcygibm8tc2Ny
b2xsLW5vLXRpdGxlIiksdGhpcy5vcHRpb25zPQoubm9wYWRkaW5nJiYobi5jc3MoInBhZGRpbmci
LCIwcHgiKSx0aGlzLiRjb250ZW50LmNzcygicGFkZGluZyIsIjBweCIpKSx0aGk9CnMuJGJ1dHRv
bnM9M0QkKHRoaXMuZWwpLmZpbmQoIi5idXR0b25zIik7aWYodGhpcy5vcHRpb25zLmJ1dHRvbnMp
e3ZhciByPTNEdD0KaGlzOyQuZWFjaCh0aGlzLm9wdGlvbnMuYnV0dG9ucyxmdW5jdGlvbihlLHQp
e3QuJGVsLnByb3AoImlkIixlKSxyLiRidXR0b25zPQouYXBwZW5kKHQuJGVsKX0pfWVsc2UgdGhp
cy4kYnV0dG9ucy5yZW1vdmUoKTt0aGlzLiRvcGVyYXRpb25zPTNEJCh0aGlzLmVsKS49CmZpbmQo
Ii5vcGVyYXRpb25zIik7aWYodGhpcy5vcHRpb25zLm9wZXJhdGlvbnMpe3ZhciByPTNEdGhpczsk
LmVhY2godGhpcy5vcD0KdGlvbnMub3BlcmF0aW9ucyxmdW5jdGlvbihlLHQpe3QuJGVsLnByb3Ao
ImlkIixlKSxyLiRvcGVyYXRpb25zLmFwcGVuZCh0LiRlPQpsKX0pfXRoaXMub3B0aW9ucy5ib2R5
JiZ0aGlzLmFwcGVuZCh0aGlzLm9wdGlvbnMuYm9keSl9LGFwcGVuZDpmdW5jdGlvbih0LG49Cil7
bj90aGlzLiRjb250ZW50LmFwcGVuZCh0KTp0aGlzLiRjb250ZW50LmFwcGVuZChlLndyYXAodCkp
fSxjb250ZW50OmZ1bmN0aT0Kb24oKXtyZXR1cm4gdGhpcy4kY29udGVudH0sc2hvdzpmdW5jdGlv
bigpe3RoaXMuJGVsLmZhZGVJbigiZmFzdCIpLHRoaXMudmlzPQppYmxlPTNEITB9LGhpZGU6ZnVu
Y3Rpb24oKXt0aGlzLiRlbC5mYWRlT3V0KCJmYXN0IiksdGhpcy52aXNpYmxlPTNEITF9LGVuYWI9
CmxlQnV0dG9uOmZ1bmN0aW9uKGUpe3RoaXMuJGJ1dHRvbnMuZmluZCgiIyIrZSkucHJvcCgiZGlz
YWJsZWQiLCExKX0sZGlzYWJsZT0KQnV0dG9uOmZ1bmN0aW9uKGUpe3RoaXMuJGJ1dHRvbnMuZmlu
ZCgiIyIrZSkucHJvcCgiZGlzYWJsZWQiLCEwKX0saGlkZU9wZXJhPQp0aW9uOmZ1bmN0aW9uKGUp
e3RoaXMuJG9wZXJhdGlvbnMuZmluZCgiIyIrZSkuaGlkZSgpfSxzaG93T3BlcmF0aW9uOmZ1bmN0
aW89Cm4oZSl7dGhpcy4kb3BlcmF0aW9ucy5maW5kKCIjIitlKS5zaG93KCl9LHNldE9wZXJhdGlv
bjpmdW5jdGlvbihlLHQpe3ZhciBuPQo9M0R0aGlzLiRvcGVyYXRpb25zLmZpbmQoIiMiK2UpO24u
b2ZmKCJjbGljayIpLG4ub24oImNsaWNrIix0KX0sdGl0bGU6ZnVuY3Q9CmlvbihlKXt2YXIgdD0z
RHRoaXMuJHRpdGxlO3JldHVybiBlJiZ0Lmh0bWwoZSksdC5odG1sKCl9LF90ZW1wbGF0ZTpmdW5j
dGlvbj0KKGUpe3ZhciB0PTNEJzxkaXYgaWQ9M0QiJytlLmlkKyciIGNsYXNzPTNEIicrZS5jbHMr
JyI+JztyZXR1cm4gZS50aXRsZSYmKHQrPQo9M0QnPGRpdiBjbGFzcz0zRCJwb3J0bGV0LWhlYWRl
ciI+PGRpdiBjbGFzcz0zRCJvcGVyYXRpb25zIiBzdHlsZT0zRCJmbG9hdDo9CiAnK2Uub3BlcmF0
aW9uc19mbHQrJzsiPjwvZGl2PicrJzxkaXYgY2xhc3M9M0QicG9ydGxldC10aXRsZSI+JyxlLmlj
b24mJih0Kz0KPTNEJzxpIGNsYXNzPTNEImljb24gZmEgJytlLmljb24rJyI+Jm5ic3A7PC9pPicp
LHQrPTNEJzxzcGFuIGNsYXNzPTNEInBvcnRsPQpldC10aXRsZS10ZXh0Ij4nK2UudGl0bGUrIjwv
c3Bhbj4iKyI8L2Rpdj4iKyI8L2Rpdj4iKSx0Kz0zRCc8ZGl2IGNsYXNzPTNEInA9Cm9ydGxldC1j
b250ZW50Ij4nLGUucGxhY2VtZW50PTNEPTNEInRvcCImJih0Kz0zRCc8ZGl2IGNsYXNzPTNEImJ1
dHRvbnMiPjwvZD0KaXY+JyksdCs9M0QnPGRpdiBjbGFzcz0zRCJjb250ZW50Ij48L2Rpdj4nLGUu
cGxhY2VtZW50PTNEPTNEImJvdHRvbSImJih0Kz0KPTNEJzxkaXYgY2xhc3M9M0QiYnV0dG9ucyI+
PC9kaXY+JyksdCs9M0QiPC9kaXY+PC9kaXY+Iix0fX0pO3JldHVybntWaWV3OnR9PQp9KSxkZWZp
bmUoIm12Yy91aS91aS1zZWxlY3QtZGVmYXVsdCIsWyJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGUp
e3ZhciB0PTNEQmE9CmNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e2lkOiIiLGNs
czoiIixlcnJvcl90ZXh0OiJObyBkYXRhIGF2YWlsYT0KYmxlIix2aXNpYmxlOiEwLHdhaXQ6ITEs
bXVsdGlwbGU6ITEsc2VhcmNoYWJsZTohMX0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0PQpoaXMu
b3B0aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlzLnNldEVsZW1lbnQo
dGhpcy5fdGVtcGxhdGU9Cih0aGlzLm9wdGlvbnMpKSx0aGlzLiRzZWxlY3Q9M0R0aGlzLiRlbC5m
aW5kKCIuc2VsZWN0IiksdGhpcy4kaWNvbj0zRHRoaXMuJD0KZWwuZmluZCgiLmljb24iKSx0aGlz
LiRidXR0b249M0R0aGlzLiRlbC5maW5kKCIuYnV0dG9uIiksdGhpcy5vcHRpb25zLm11bHRpPQpw
bGU/KHRoaXMuJHNlbGVjdC5wcm9wKCJtdWx0aXBsZSIsITApLHRoaXMuJHNlbGVjdC5hZGRDbGFz
cygidWktc2VsZWN0LW11bHQ9CmlwbGUiKSx0aGlzLiRpY29uLnJlbW92ZSgpKTp0aGlzLiRlbC5h
ZGRDbGFzcygidWktc2VsZWN0IiksdGhpcy51cGRhdGUodGhpcz0KLm9wdGlvbnMuZGF0YSksdGhp
cy5vcHRpb25zLnZhbHVlIT0zRD0zRHVuZGVmaW5lZCYmdGhpcy52YWx1ZSh0aGlzLm9wdGlvbnMu
PQp2YWx1ZSksdGhpcy5vcHRpb25zLnZpc2libGV8fHRoaXMuaGlkZSgpLHRoaXMub3B0aW9ucy53
YWl0P3RoaXMud2FpdCgpOnRoaXM9Ci5zaG93KCk7dmFyIG49M0R0aGlzO3RoaXMuJHNlbGVjdC5v
bigiY2hhbmdlIixmdW5jdGlvbigpe24uX2NoYW5nZSgpfSksdGhpcz0KLm9uKCJjaGFuZ2UiLGZ1
bmN0aW9uKCl7bi5fY2hhbmdlKCl9KX0sdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPTNEPTNE
dW5kPQplZmluZWQmJih0aGlzLiRzZWxlY3QudmFsKGUpLHRoaXMuJHNlbGVjdC5zZWxlY3QyJiZ0
aGlzLiRzZWxlY3Quc2VsZWN0MigidmE9CmwiLGUpKSx0aGlzLiRzZWxlY3QudmFsKCl9LGZpcnN0
OmZ1bmN0aW9uKCl7dmFyIGU9M0R0aGlzLiRzZWxlY3QuZmluZCgib3B0aT0Kb24iKTtyZXR1cm4g
ZS5sZW5ndGg+MD9lLnZhbCgpOnVuZGVmaW5lZH0sdmFsaWRhdGU6ZnVuY3Rpb24oKXtyZXR1cm4g
ZS52YWxpPQpkYXRlKHRoaXMudmFsdWUoKSl9LHRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4k
c2VsZWN0LmZpbmQoIm9wdGlvbjpzZWxlY3Q9CmVkIikudGV4dCgpfSxzaG93OmZ1bmN0aW9uKCl7
dGhpcy51bndhaXQoKSx0aGlzLiRzZWxlY3Quc2hvdygpLHRoaXMuJGVsLnNobz0KdygpfSxoaWRl
OmZ1bmN0aW9uKCl7dGhpcy4kZWwuaGlkZSgpfSx3YWl0OmZ1bmN0aW9uKCl7dGhpcy4kaWNvbi5y
ZW1vdmVDbGFzPQpzKCksdGhpcy4kaWNvbi5hZGRDbGFzcygiZmEgZmEtc3Bpbm5lciBmYS1zcGlu
Iil9LHVud2FpdDpmdW5jdGlvbigpe3RoaXMuJGk9CmNvbi5yZW1vdmVDbGFzcygpLHRoaXMuJGlj
b24uYWRkQ2xhc3MoImZhIGZhLWNhcmV0LWRvd24iKX0sZGlzYWJsZWQ6ZnVuY3Rpbz0Kbigpe3Jl
dHVybiB0aGlzLiRzZWxlY3QuaXMoIjpkaXNhYmxlZCIpfSxlbmFibGU6ZnVuY3Rpb24oKXt0aGlz
LiRzZWxlY3QucHJvPQpwKCJkaXNhYmxlZCIsITEpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy4k
c2VsZWN0LnByb3AoImRpc2FibGVkIiwhMCl9LGFkZDo9CmZ1bmN0aW9uKGUpe3RoaXMuJHNlbGVj
dC5hcHBlbmQodGhpcy5fdGVtcGxhdGVPcHRpb24oZSkpLHRoaXMuX3JlZnJlc2goKX0sZD0KZWw6
ZnVuY3Rpb24oZSl7dGhpcy4kc2VsZWN0LmZpbmQoIm9wdGlvblt2YWx1ZT0zRCIrZSsiXSIpLnJl
bW92ZSgpLHRoaXMuJHNlPQpsZWN0LnRyaWdnZXIoImNoYW5nZSIpLHRoaXMuX3JlZnJlc2goKX0s
dXBkYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy4kc2U9CmxlY3QudmFsKCk7dGhpcy4kc2Vs
ZWN0LmZpbmQoIm9wdGlvbiIpLnJlbW92ZSgpO2Zvcih2YXIgbiBpbiBlKXRoaXMuJHNlbGVjdD0K
LmFwcGVuZCh0aGlzLl90ZW1wbGF0ZU9wdGlvbihlW25dKSk7dGhpcy5fcmVmcmVzaCgpLHRoaXMu
JHNlbGVjdC52YWwodCksdGhpPQpzLiRzZWxlY3QudmFsKCl8fHRoaXMuJHNlbGVjdC52YWwodGhp
cy5maXJzdCgpKSx0aGlzLm9wdGlvbnMuc2VhcmNoYWJsZSYmKHQ9Cmhpcy4kYnV0dG9uLmhpZGUo
KSx0aGlzLiRzZWxlY3Quc2VsZWN0MigiZGVzdHJveSIpLHRoaXMuJHNlbGVjdC5zZWxlY3QyKCkp
fT0KLHNldE9uQ2hhbmdlOmZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucy5vbmNoYW5nZT0zRGV9LGV4
aXN0czpmdW5jdGlvbihlKXtyZXR1PQpybiB0aGlzLiRzZWxlY3QuZmluZCgnb3B0aW9uW3ZhbHVl
PTNEIicrZSsnIl0nKS5sZW5ndGg+MH0sX2NoYW5nZTpmdW5jdGlvbig9Cil7dGhpcy5vcHRpb25z
Lm9uY2hhbmdlJiZ0aGlzLm9wdGlvbnMub25jaGFuZ2UodGhpcy4kc2VsZWN0LnZhbCgpKX0sX3Jl
ZnJlcz0KaDpmdW5jdGlvbigpe3RoaXMuJHNlbGVjdC5maW5kKCJvcHRpb25bdmFsdWU9M0RudWxs
XSIpLnJlbW92ZSgpO3ZhciBlPTNEdGhpPQpzLiRzZWxlY3QuZmluZCgib3B0aW9uIikubGVuZ3Ro
O2U9M0Q9M0QwPyh0aGlzLmRpc2FibGUoKSx0aGlzLiRzZWxlY3QuYXBwZW49CmQodGhpcy5fdGVt
cGxhdGVPcHRpb24oe3ZhbHVlOiJudWxsIixsYWJlbDp0aGlzLm9wdGlvbnMuZXJyb3JfdGV4dH0p
KSk6dGhpcz0KLmVuYWJsZSgpfSxfdGVtcGxhdGVPcHRpb246ZnVuY3Rpb24oZSl7cmV0dXJuJzxv
cHRpb24gdmFsdWU9M0QiJytlLnZhbHVlKyciPQo+JytlLmxhYmVsKyI8L29wdGlvbj4ifSxfdGVt
cGxhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuJzxkaXYgaWQ9M0QiJytlLmlkKyciPic9CisnPHNlbGVj
dCBpZD0zRCJzZWxlY3QiIGNsYXNzPTNEInNlbGVjdCAnK2UuY2xzKyIgIitlLmlkKyciPjwvc2Vs
ZWN0PicrJzxkaT0KdiBjbGFzcz0zRCJidXR0b24iPicrJzxpIGNsYXNzPTNEImljb24iLz4nKyI8
L2Rpdj4iKyI8L2Rpdj4ifX0pO3JldHVybntWaWV3PQo6dH19KSxkZWZpbmUoIm12Yy91aS91aS1z
bGlkZXIiLFsidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihlKXt2YXIgdD0zREJhY2tib249CmUuVmll
dy5leHRlbmQoe29wdGlvbnNEZWZhdWx0OnttaW46bnVsbCxtYXg6bnVsbCxzdGVwOm51bGwscHJl
Y2lzZTohMSxzcGxpdD0KOjFlNH0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt2YXIgbj0zRHRoaXM7
dGhpcy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0PQppb25zRGVmYXVsdCksdGhpcy5zZXRF
bGVtZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9ucykpLHRoaXMudXNlc2xpZGVyPQo9M0R0
aGlzLm9wdGlvbnMubWF4IT0zRD0zRG51bGwmJnRoaXMub3B0aW9ucy5taW4hPTNEPTNEbnVsbCYm
dGhpcy5vcHRpb25zLm09CmF4PnRoaXMub3B0aW9ucy5taW4sdGhpcy5vcHRpb25zLnN0ZXA9M0Q9
M0Q9M0RudWxsJiYodGhpcy5vcHRpb25zLnN0ZXA9M0QxLD0KdGhpcy5vcHRpb25zLnByZWNpc2Um
JnRoaXMudXNlc2xpZGVyJiYodGhpcy5vcHRpb25zLnN0ZXA9M0QodGhpcy5vcHRpb25zLm1hPQp4
LXRoaXMub3B0aW9ucy5taW4pL3RoaXMub3B0aW9ucy5zcGxpdCkpLHRoaXMudXNlc2xpZGVyPyh0
aGlzLiRzbGlkZXI9M0R0aGk9CnMuJGVsLmZpbmQoIiNzbGlkZXIiKSx0aGlzLiRzbGlkZXIuc2xp
ZGVyKHRoaXMub3B0aW9ucyksdGhpcy4kc2xpZGVyLm9uKCJzbD0KaWRlIixmdW5jdGlvbihlLHQp
e24udmFsdWUodC52YWx1ZSl9KSk6dGhpcy4kZWwuZmluZCgiLnVpLWZvcm0tc2xpZGVyLXRleHQi
PQopLmNzcygid2lkdGgiLCIxMDAlIiksdGhpcy4kdGV4dD0zRHRoaXMuJGVsLmZpbmQoIiN0ZXh0
IiksdGhpcy5vcHRpb25zLnZhbHU9CmUhPTNEPTNEdW5kZWZpbmVkJiZ0aGlzLnZhbHVlKHRoaXMu
b3B0aW9ucy52YWx1ZSksdGhpcy4kdGV4dC5vbigiY2hhbmdlIixmdT0KbmN0aW9uKCl7bi52YWx1
ZSgkKHRoaXMpLnZhbCgpKX0pO3ZhciByPTNEW107dGhpcy4kdGV4dC5vbigia2V5dXAiLGZ1bmN0
aW9uPQooZSl7cltlLndoaWNoXT0zRCExfSksdGhpcy4kdGV4dC5vbigia2V5ZG93biIsZnVuY3Rp
b24oZSl7dmFyIHQ9M0RlLndoaWNoO3I9Clt0XT0zRCEwLHQ9M0Q9M0Q4fHx0PTNEPTNEOXx8dD0z
RD0zRDEzfHx0PTNEPTNEMzd8fHQ9M0Q9M0QzOXx8dD49M0Q0OCYmdDw9Cj0zRDU3fHx0PTNEPTNE
MTkwJiYkKHRoaXMpLnZhbCgpLmluZGV4T2YoIi4iKT0zRD0zRC0xJiZuLm9wdGlvbnMucHJlY2lz
ZXx8dD0KPTNEPTNEMTg5JiYkKHRoaXMpLnZhbCgpLmluZGV4T2YoIi0iKT0zRD0zRC0xfHxyWzkx
XXx8clsxN118fGV2ZW50LnByZXZlbnREPQplZmF1bHQoKX0pfSx2YWx1ZTpmdW5jdGlvbihlKXty
ZXR1cm4gZSE9M0Q9M0R1bmRlZmluZWQmJihpc05hTihlKSYmKGU9M0QwKSw9CnRoaXMub3B0aW9u
cy5tYXghPTNEPTNEbnVsbCYmKGU9M0RNYXRoLm1pbihlLHRoaXMub3B0aW9ucy5tYXgpKSx0aGlz
Lm9wdGlvbj0Kcy5taW4hPTNEPTNEbnVsbCYmKGU9M0RNYXRoLm1heChlLHRoaXMub3B0aW9ucy5t
aW4pKSx0aGlzLm9wdGlvbnMub25jaGFuZ2UmPQomdGhpcy5vcHRpb25zLm9uY2hhbmdlKGUpLHRo
aXMuJHNsaWRlciYmdGhpcy4kc2xpZGVyLnNsaWRlcigidmFsdWUiLGUpLHRoaXM9Ci4kdGV4dC52
YWwoZSkpLHRoaXMuJHRleHQudmFsKCl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGRp
diBpZD0zRCInKz0KZS5pZCsnIiBjbGFzcz0zRCJ1aS1mb3JtLXNsaWRlciI+JysnPGlucHV0IGlk
PTNEInRleHQiIHR5cGU9M0QidGV4dCIgY2xhc3M9Cj0zRCJ1aS1mb3JtLXNsaWRlci10ZXh0Ii8+
JysnPGRpdiBpZD0zRCJzbGlkZXIiIGNsYXNzPTNEInVpLWZvcm0tc2xpZGVyLWVsZT0KbWVudCIv
PicrIjwvZGl2PiJ9fSk7cmV0dXJue1ZpZXc6dH19KSxkZWZpbmUoIm12Yy91aS91aS1vcHRpb25z
IixbInV0aWxzL3V0PQppbHMiXSxmdW5jdGlvbihlKXt2YXIgdD0zREJhY2tib25lLlZpZXcuZXh0
ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXM9Ci5vcHRpb25zRGVmYXVsdD0zRHt2aXNp
YmxlOiEwLGRhdGE6W10saWQ6ZS51dWlkKCksZXJyb3JfdGV4dDoiTm8gZGF0YSBhdmFpbD0KYWJs
ZS4iLHdhaXRfdGV4dDoiUGxlYXNlIHdhaXQuLi4ifSx0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQs
dGhpcy5vcHRpb25zRGVmPQphdWx0KSx0aGlzLnNldEVsZW1lbnQoIjxkaXYvPiIpLHRoaXMuJG1l
c3NhZ2U9M0QkKCI8ZGl2Lz4iKSx0aGlzLiRvcHRpb25zPQo9M0QkKHRoaXMuX3RlbXBsYXRlKHQp
KSx0aGlzLiRlbC5hcHBlbmQodGhpcy4kbWVzc2FnZSksdGhpcy4kZWwuYXBwZW5kKHRoaXM9Ci4k
b3B0aW9ucyksdGhpcy5vcHRpb25zLnZpc2libGV8fHRoaXMuJGVsLmhpZGUoKSx0aGlzLnVwZGF0
ZSh0aGlzLm9wdGlvbnMuZD0KYXRhKSx0aGlzLm9wdGlvbnMudmFsdWUhPTNEPTNEdW5kZWZpbmVk
JiZ0aGlzLnZhbHVlKHRoaXMub3B0aW9ucy52YWx1ZSk7dmFyPQogbj0zRHRoaXM7dGhpcy5vbigi
Y2hhbmdlIixmdW5jdGlvbigpe24uX2NoYW5nZSgpfSl9LHVwZGF0ZTpmdW5jdGlvbihlKXt2YXI9
CiB0PTNEdGhpcy5fZ2V0VmFsdWUoKTt0aGlzLiRvcHRpb25zLmVtcHR5KCk7aWYodGhpcy5fdGVt
cGxhdGVPcHRpb25zKXRoaXMuJD0Kb3B0aW9ucy5hcHBlbmQodGhpcy5fdGVtcGxhdGVPcHRpb25z
KGUpKTtlbHNlIGZvcih2YXIgbiBpbiBlKXt2YXIgcj0zRCQodGhpPQpzLl90ZW1wbGF0ZU9wdGlv
bihlW25dKSk7ci5hZGRDbGFzcygidWktb3B0aW9uIiksdGhpcy4kb3B0aW9ucy5hcHBlbmQocil9
dmE9CnIgaT0zRHRoaXM7dGhpcy4kZWwuZmluZCgiaW5wdXQiKS5vbigiY2hhbmdlIixmdW5jdGlv
bigpe2kudmFsdWUoaS5fZ2V0VmFsdT0KZSgpKSxpLl9jaGFuZ2UoKX0pLHRoaXMuX3JlZnJlc2go
KSx0aGlzLnZhbHVlKHQpfSx2YWx1ZTpmdW5jdGlvbihlKXtpZihlIT0KPTNEPTNEdW5kZWZpbmVk
KXtlIGluc3RhbmNlb2YgQXJyYXl8fChlPTNEW2VdKSx0aGlzLiRlbC5maW5kKCJpbnB1dCIpLnBy
b3AoPQoiY2hlY2tlZCIsITEpO2Zvcih2YXIgdCBpbiBlKXRoaXMuJGVsLmZpbmQoJ2lucHV0W3Zh
bHVlPTNEIicrZVt0XSsnIl0nKS5maXI9CnN0KCkucHJvcCgiY2hlY2tlZCIsITApfXJldHVybiB0
aGlzLl9nZXRWYWx1ZSgpfSxleGlzdHM6ZnVuY3Rpb24oZSl7aWYoZSE9Cj0zRD0zRHVuZGVmaW5l
ZCl7ZSBpbnN0YW5jZW9mIEFycmF5fHwoZT0zRFtlXSk7Zm9yKHZhciB0IGluIGUpaWYodGhpcy4k
ZWwuZj0KaW5kKCdpbnB1dFt2YWx1ZT0zRCInK2VbdF0rJyJdJykubGVuZ3RoPjApcmV0dXJuITB9
cmV0dXJuITF9LGZpcnN0OmZ1bmN0aW9uPQooKXt2YXIgZT0zRHRoaXMuJGVsLmZpbmQoImlucHV0
Iik7cmV0dXJuIGUubGVuZ3RoPjA/ZS52YWwoKTp1bmRlZmluZWR9LHZhbGk9CmRhdGU6ZnVuY3Rp
b24oKXtyZXR1cm4gZS52YWxpZGF0ZSh0aGlzLnZhbHVlKCkpfSx3YWl0OmZ1bmN0aW9uKCl7dGhp
cy5fc2l6ZT0KKCk9M0Q9M0QwJiYodGhpcy5fbWVzc2FnZVNob3codGhpcy5vcHRpb25zLndhaXRf
dGV4dCwiaW5mbyIpLHRoaXMuJG9wdGlvbnMuPQpoaWRlKCkpfSx1bndhaXQ6ZnVuY3Rpb24oKXt0
aGlzLl9tZXNzYWdlSGlkZSgpLHRoaXMuX3JlZnJlc2goKX0sX2NoYW5nZTpmdW49CmN0aW9uKCl7
dGhpcy5vcHRpb25zLm9uY2hhbmdlJiZ0aGlzLm9wdGlvbnMub25jaGFuZ2UodGhpcy5fZ2V0VmFs
dWUoKSl9LF9yZT0KZnJlc2g6ZnVuY3Rpb24oKXt0aGlzLl9zaXplKCk9M0Q9M0QwPyh0aGlzLl9t
ZXNzYWdlU2hvdyh0aGlzLm9wdGlvbnMuZXJyb3JfPQp0ZXh0LCJkYW5nZXIiKSx0aGlzLiRvcHRp
b25zLmhpZGUoKSk6KHRoaXMuX21lc3NhZ2VIaWRlKCksdGhpcy4kb3B0aW9ucy5jc3M9CigiZGlz
cGxheSIsImlubGluZS1ibG9jayIpKX0sX2dldFZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9M0R0aGlz
LiRlbC5maW5kKCI6Yz0KaGVja2VkIik7aWYoZS5sZW5ndGg9M0Q9M0QwKXJldHVybiJudWxsIjtp
Zih0aGlzLm9wdGlvbnMubXVsdGlwbGUpe3ZhciB0PTNEPQpbXTtyZXR1cm4gZS5lYWNoKGZ1bmN0
aW9uKCl7dC5wdXNoKCQodGhpcykudmFsKCkpfSksdH1yZXR1cm4gZS52YWwoKX0sX3NpemU9Cjpm
dW5jdGlvbigpe3JldHVybiB0aGlzLiRlbC5maW5kKCIudWktb3B0aW9uIikubGVuZ3RofSxfbWVz
c2FnZVNob3c6ZnVuY3Rpbz0KbihlLHQpe3RoaXMuJG1lc3NhZ2Uuc2hvdygpLHRoaXMuJG1lc3Nh
Z2UucmVtb3ZlQ2xhc3MoKSx0aGlzLiRtZXNzYWdlLmFkZENsPQphc3MoInVpLW1lc3NhZ2UgYWxl
cnQgYWxlcnQtIit0KSx0aGlzLiRtZXNzYWdlLmh0bWwoZSl9LF9tZXNzYWdlSGlkZTpmdW5jdGk9
Cm9uKCl7dGhpcy4kbWVzc2FnZS5oaWRlKCl9LF90ZW1wbGF0ZTpmdW5jdGlvbigpe3JldHVybic8
ZGl2IGNsYXNzPTNEInVpLW9wdD0KaW9ucyIvPid9fSksbj0zRHt9O24uVmlldz0zRHQuZXh0ZW5k
KHtpbml0aWFsaXplOmZ1bmN0aW9uKGUpe3QucHJvdG90eXBlLmluPQppdGlhbGl6ZS5jYWxsKHRo
aXMsZSl9LF90ZW1wbGF0ZU9wdGlvbjpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdj48aW5wdXQgdHlw
ZT0KPTNEInJhZGlvIiBuYW1lPTNEIicrdGhpcy5vcHRpb25zLmlkKyciIHZhbHVlPTNEIicrZS52
YWx1ZSsnIi8+JytlLmxhYmVsKyI8PQpicj4iKyI8L2Rpdj4ifX0pO3ZhciByPTNEe307ci5WaWV3
PTNEdC5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oZSl7ZS5tdWw9CnRpcGxlPTNEITAsdC5w
cm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsZSl9LF90ZW1wbGF0ZU9wdGlvbjpmdW5jdGlv
bihlKT0Ke3JldHVybic8ZGl2PjxpbnB1dCB0eXBlPTNEImNoZWNrYm94IiBuYW1lPTNEIicrdGhp
cy5vcHRpb25zLmlkKyciIHZhbHVlPTNEPQoiJytlLnZhbHVlKyciLz4nK2UubGFiZWwrIjxicj4i
KyI8L2Rpdj4ifX0pO3ZhciBpPTNEe307cmV0dXJuIGkuVmlldz0zRHQuZXg9CnRlbmQoe2luaXRp
YWxpemU6ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsZSl9LHZh
bHVlOmZ1bj0KY3Rpb24oZSl7cmV0dXJuIGUhPTNEPTNEdW5kZWZpbmVkJiYodGhpcy4kZWwuZmlu
ZCgiaW5wdXQiKS5wcm9wKCJjaGVja2VkIiwhPQoxKSx0aGlzLiRlbC5maW5kKCJsYWJlbCIpLnJl
bW92ZUNsYXNzKCJhY3RpdmUiKSx0aGlzLiRlbC5maW5kKCdbdmFsdWU9M0QiJys9CmUrJyJdJyku
cHJvcCgiY2hlY2tlZCIsITApLmNsb3Nlc3QoImxhYmVsIikuYWRkQ2xhc3MoImFjdGl2ZSIpKSx0
aGlzLl9nZXRWYT0KbHVlKCl9LF90ZW1wbGF0ZU9wdGlvbjpmdW5jdGlvbihlKXt2YXIgdD0zRCc8
bGFiZWwgY2xhc3M9M0QiYnRuIGJ0bi1kZWZhdWx0PQoiPic7cmV0dXJuIGUuaWNvbiYmKHQrPTNE
JzxpIGNsYXNzPTNEImZhICcrZS5pY29uKyciLz4nKSx0Kz0zRCc8aW5wdXQgdHlwZT0KPTNEInJh
ZGlvIiBuYW1lPTNEIicrdGhpcy5vcHRpb25zLmlkKyciIHZhbHVlPTNEIicrZS52YWx1ZSsnIj4n
K2UubGFiZWwrIjwvPQpsYWJlbD4iLHR9LF90ZW1wbGF0ZTpmdW5jdGlvbigpe3JldHVybic8ZGl2
IGNsYXNzPTNEImJ0bi1ncm91cCB1aS1yYWRpb2J1dHQ9Cm9uIiBkYXRhLXRvZ2dsZT0zRCJidXR0
b25zIi8+J319KSx7QmFzZTp0LFJhZGlvOm4sUmFkaW9CdXR0b246aSxDaGVja2JveDpyfT0KfSks
ZGVmaW5lKCJtdmMvdWkvdWktZHJpbGxkb3duIixbInV0aWxzL3V0aWxzIiwibXZjL3VpL3VpLW9w
dGlvbnMiXSxmdW5jdGlvPQpuKGUsdCl7dmFyIG49M0R0LkJhc2UuZXh0ZW5kKHtpbml0aWFsaXpl
OmZ1bmN0aW9uKGUpe3RoaXMuZGlzcGxheT0zRGUuZGlzcGw9CmF5fHwiY2hlY2tib3giLGUubXVs
dGlwbGU9M0R0aGlzLmRpc3BsYXk9M0Q9M0QiY2hlY2tib3giLHQuQmFzZS5wcm90b3R5cGUuaT0K
bml0aWFsaXplLmNhbGwodGhpcyxlKX0sX3RlbXBsYXRlT3B0aW9uOmZ1bmN0aW9uKGUsdCxuKXty
ZXR1cm4nPGRpdj48aW5wdXQgPQpuYW1lPTNEIicrdGhpcy5vcHRpb25zLmlkKyciIGNsYXNzPTNE
InVpLW9wdGlvbiIgdHlwZT0zRCInK3RoaXMuZGlzcGxheSsnIiA9CnZhbHVlPTNEIicrdCsnIj4n
K2UrIjxkaXYvPiJ9LF90ZW1wbGF0ZU9wdGlvbnM6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbihlLHQp
ez0KZnVuY3Rpb24gbihuKXtuPyh0LmZhZGVJbigiZmFzdCIpLGUucmVtb3ZlQ2xhc3MoInRvZ2ds
ZS1leHBhbmQiKSxlLmFkZENsYXNzPQooInRvZ2dsZSIpLGUuaXNfZXhwYW5kZWQ9M0QhMCk6KHQu
aGlkZSgpLGUucmVtb3ZlQ2xhc3MoInRvZ2dsZSIpLGUuYWRkQ2xhc3M9CigidG9nZ2xlLWV4cGFu
ZCIpLGUuaXNfZXhwYW5kZWQ9M0QhMSl9ZS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7bighZS5pc19l
eHBhbj0KZGVkKX0pfWZ1bmN0aW9uIHIoZSxzKXtmb3IoaSBpbiBzKXt2YXIgbz0zRHNbaV0sdT0z
RG8ub3B0aW9ucy5sZW5ndGg+MCxhPTNEPQokKCI8ZGl2Lz4iKTtpZih1KXt2YXIgZj0zRCQoJzxz
cGFuIGNsYXNzPTNEInVpLWRyaWxsZG93bi1idXR0b24gZm9ybS10b2dnbGU9CiBpY29uLWJ1dHRv
biB0b2dnbGUtZXhwYW5kIiBzdHlsZT0zRCJwb3NpdGlvbjogcmVsYXRpdmU7IHRvcDogMnB4OyIv
PicpLGw9Cj0zRCQoIjxkaXYvPiIpO2wuYXBwZW5kKGYpLGwuYXBwZW5kKHQuX3RlbXBsYXRlT3B0
aW9uKG8ubmFtZSxvLnZhbHVlKSksYS5hcD0KcGVuZChsKTt2YXIgYz0zRCQoJzxkaXYgc3R5bGU9
M0QiZGlzcGxheTogbm9uZTsgbWFyZ2luLWxlZnQ6IDI1cHg7Ii8+Jyk7cihjPQosby5vcHRpb25z
KSxhLmFwcGVuZChjKSxuKGYsYyl9ZWxzZSBhLmFwcGVuZCh0Ll90ZW1wbGF0ZU9wdGlvbihvLm5h
bWUsby52YWw9CnVlKSk7ZS5hcHBlbmQoYSl9fXZhciB0PTNEdGhpcyxzPTNEJCgiPGRpdi8+Iik7
cmV0dXJuIHIocyxlKSxzfSxfdGVtcGxhdGU6Zj0KdW5jdGlvbihlKXtyZXR1cm4nPGRpdiBjbGFz
cz0zRCJ1aS1vcHRpb25zIGRyaWxsZG93bi1jb250YWluZXIiIGlkPTNEIicrZS5pPQpkKyciLz4n
fX0pO3JldHVybntWaWV3Om59fSksZGVmaW5lKCJtdmMvdWkvdWktYnV0dG9uLW1lbnUiLFsidXRp
bHMvdXRpbHMiXSw9CmZ1bmN0aW9uKGUpe3JldHVybiBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0
aW9uc0RlZmF1bHQ6e2lkOiIiLHRpdGxlOiIiLGZsbz0KYXRpbmc6InJpZ2h0IixpY29uOm51bGws
b25jbGljazpudWxsLGNsczoidWktYnV0dG9uLWljb24gdWktYnV0dG9uLW1lbnUiLHRvPQpvbHRp
cDoiIix0YXJnZXQ6IiIsaHJlZjoiIixvbnVubG9hZDpudWxsLHZpc2libGU6ITAsdGFnOiIifSwk
bWVudTpudWxsLGluaXQ9CmlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdl
KHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbD0KZW1lbnQoJCh0aGlzLl90ZW1wbGF0
ZSh0aGlzLm9wdGlvbnMpKSk7dmFyIG49M0QkKHRoaXMuZWwpLmZpbmQoIi5yb290Iikscj0KPTNE
dGhpcztuLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7JCgiLnRvb2x0aXAiKS5oaWRlKCksZS5wcmV2
ZW50RGVmYXVsdCgpLHIuPQpvcHRpb25zLm9uY2xpY2smJnIub3B0aW9ucy5vbmNsaWNrKCl9KSx0
aGlzLm9wdGlvbnMudmlzaWJsZXx8dGhpcy5oaWRlKCksbi49CnRvb2x0aXAoe3RpdGxlOnQudG9v
bHRpcCxwbGFjZW1lbnQ6ImJvdHRvbSJ9KX0sc2hvdzpmdW5jdGlvbigpeyQodGhpcy5lbCkucz0K
aG93KCl9LGhpZGU6ZnVuY3Rpb24oKXskKHRoaXMuZWwpLmhpZGUoKX0sYWRkTWVudTpmdW5jdGlv
bih0KXt2YXIgbj0zRHt0aXRsPQplOiIiLHRhcmdldDoiIixocmVmOiIiLG9uY2xpY2s6bnVsbCxk
aXZpZGVyOiExLGljb246bnVsbCxjbHM6ImJ1dHRvbi1tZW51IGI9CnRuLWdyb3VwIn07bj0zRGUu
bWVyZ2UodCxuKSx0aGlzLiRtZW51fHwoJCh0aGlzLmVsKS5hcHBlbmQodGhpcy5fdGVtcGxhdGVN
ZT0KbnUoKSksdGhpcy4kbWVudT0zRCQodGhpcy5lbCkuZmluZCgiLm1lbnUiKSk7dmFyIHI9M0Qk
KHRoaXMuX3RlbXBsYXRlTWVudUl0PQplbShuKSk7ci5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe2Uu
cHJldmVudERlZmF1bHQoKSxuLm9uY2xpY2smJm4ub25jbGljaygpfSk9Cix0aGlzLiRtZW51LmFw
cGVuZChyKSxuLmRpdmlkZXImJnRoaXMuJG1lbnUuYXBwZW5kKCQodGhpcy5fdGVtcGxhdGVEaXZp
ZGVyKD0KKSkpfSxfdGVtcGxhdGVNZW51SXRlbTpmdW5jdGlvbihlKXt2YXIgdD0zRCc8bGk+PGEg
Y2xhc3M9M0QiZHJvcGRvd24taXRlbSIgPQpocmVmPTNEIicrZS5ocmVmKyciIHRhcmdldD0zRCIn
K2UudGFyZ2V0KyciPic7cmV0dXJuIGUuaWNvbiYmKHQrPTNEJzxpIGNsYXM9CnM9M0QiZmEgJytl
Lmljb24rJyI+PC9pPicpLHQrPTNEIiAiK2UudGl0bGUrIjwvYT4iKyI8L2xpPiIsdH0sX3RlbXBs
YXRlTWVudT0KOmZ1bmN0aW9uKCl7cmV0dXJuJzx1bCBjbGFzcz0zRCJtZW51IGRyb3Bkb3duLW1l
bnUgcHVsbC1yaWdodCIgcm9sZT0zRCJtZW51PQoiPjwvdWw+J30sX3RlbXBsYXRlRGl2aWRlcjpm
dW5jdGlvbigpe3JldHVybic8bGkgY2xhc3M9M0QiZGl2aWRlciI+PC9saT4nfSw9Cl90ZW1wbGF0
ZTpmdW5jdGlvbihlKXt2YXIgdD0zRCIiLG49M0QiIjtlLnRpdGxlP3Q9M0Qid2lkdGg6IGF1dG87
IjpuPTNEIm1hcj0KZ2luOiAwcHg7Ijt2YXIgcj0zRCc8ZGl2IGlkPTNEIicrZS5pZCsnIiBzdHls
ZT0zRCJmbG9hdDogJytlLmZsb2F0aW5nKyI7ICIrPQp0KyciIGNsYXNzPTNEImRyb3Bkb3duICcr
ZS5jbHMrJyI+JysnPGRpdiBjbGFzcz0zRCJyb290IGJ1dHRvbiBkcm9wZG93bi10b2c9CmdsZSIg
ZGF0YS10b2dnbGU9M0QiZHJvcGRvd24iIHN0eWxlPTNEIicrbisnIj4nKyc8aSBjbGFzcz0zRCJp
Y29uIGZhICcrZS5pYz0Kb24rJyIvPic7cmV0dXJuIGUudGl0bGUmJihyKz0zRCcmbmJzcDs8c3Bh
biBjbGFzcz0zRCJ0aXRsZSI+JytlLnRpdGxlKyI8L3NwPQphbj4iKSxyKz0zRCI8L2Rpdj48L2Rp
dj4iLHJ9fSl9KSxkZWZpbmUoIm12Yy91aS91aS1taXNjIixbInV0aWxzL3V0aWxzIiwibXY9CmMv
dWkvdWktc2VsZWN0LWRlZmF1bHQiLCJtdmMvdWkvdWktc2xpZGVyIiwibXZjL3VpL3VpLW9wdGlv
bnMiLCJtdmMvdWkvdWktZD0KcmlsbGRvd24iLCJtdmMvdWkvdWktYnV0dG9uLW1lbnUiLCJtdmMv
dWkvdWktbW9kYWwiXSxmdW5jdGlvbihlLHQsbixyLGkscyxvPQope3ZhciB1PTNEQmFja2JvbmUu
Vmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0Ont1cmw6IiIsY2xzOiIifSxpbml0aWFsaXplOmY9
CnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQp
LHRoaXMuc2V0RWxlbWVudCh0aD0KaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9ucykpfSxfdGVtcGxh
dGU6ZnVuY3Rpb24oZSl7cmV0dXJuJzxpbWcgY2xhc3M9M0QidWktPQppbWFnZSAnK2UuY2xzKyci
IHNyYz0zRCInK2UudXJsKyciLz4nfX0pLGE9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9u
c0Q9CmVmYXVsdDp7dGl0bGU6IiIsY2xzOiIifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMu
b3B0aW9ucz0zRGUubWVyZ2UodCx0aD0KaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVu
dCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKX0sdGl0bGU6ZnVuPQpjdGlvbihlKXt0aGlz
LiRlbC5odG1sKGUpfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuJzxsYWJlbCBjbGFzcz0z
RCJ1aS09CmxhYmVsICcrZS5jbHMrJyI+JytlLnRpdGxlKyI8L2xhYmVsPiJ9LHZhbHVlOmZ1bmN0
aW9uKCl7cmV0dXJuIG9wdGlvbnMudGl0bD0KZX19KSxmPTNEQmFja2JvbmUuVmlldy5leHRlbmQo
e29wdGlvbnNEZWZhdWx0OntmbG9hdGluZzoicmlnaHQiLGljb246IiIsdG9vPQpsdGlwOiIiLHBs
YWNlbWVudDoiYm90dG9tIix0aXRsZToiIixjbHM6IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7
dGhpcy5vcHQ9CmlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRF
bGVtZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMubz0KcHRpb25zKSksJCh0aGlzLmVsKS50b29sdGlw
KHt0aXRsZTp0LnRvb2x0aXAscGxhY2VtZW50OiJib3R0b20ifSl9LF90ZW1wbGF0PQplOmZ1bmN0
aW9uKGUpe3JldHVybic8ZGl2PjxzcGFuIGNsYXNzPTNEImZhICcrZS5pY29uKyciIGNsYXNzPTNE
InVpLWljb24iLz49CiZuYnNwOycrZS50aXRsZSsiPC9kaXY+In19KSxsPTNEQmFja2JvbmUuVmll
dy5leHRlbmQoe29wdGlvbnNEZWZhdWx0OntpZDpudT0KbGwsdGl0bGU6IiIsZmxvYXRpbmc6InJp
Z2h0IixjbHM6InVpLWJ1dHRvbiBidG4gYnRuLWRlZmF1bHQiLGljb246IiJ9LGluaXRpPQphbGl6
ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVs
dCksdGhpcy5zZXRFbGU9Cm1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSksJCh0aGlz
LmVsKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7JCgiLnRvbz0KbHRpcCIpLmhpZGUoKSx0Lm9uY2xp
Y2smJnQub25jbGljaygpfSksJCh0aGlzLmVsKS50b29sdGlwKHt0aXRsZTp0LnRvb2x0aXAsPQpw
bGFjZW1lbnQ6ImJvdHRvbSJ9KX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PTNEJzxidXR0
b24gaWQ9M0QiJytlLmlkKyc9CiIgdHlwZT0zRCJzdWJtaXQiIHN0eWxlPTNEImZsb2F0OiAnK2Uu
ZmxvYXRpbmcrJzsiIHR5cGU9M0QiYnV0dG9uIiBjbGFzcz0zRD0KIicrZS5jbHMrJyI+JztyZXR1
cm4gZS5pY29uJiYodCs9M0QnPGkgY2xhc3M9M0QiaWNvbiBmYSAnK2UuaWNvbisnIj48L2k+Jm5i
PQpzcDsnKSx0Kz0zRGUudGl0bGUrIjwvYnV0dG9uPiIsdH19KSxjPTNEQmFja2JvbmUuVmlldy5l
eHRlbmQoe29wdGlvbnNEZWZhdWw9CnQ6e2lkOm51bGwsdGl0bGU6IiIsZmxvYXRpbmc6InJpZ2h0
IixjbHM6InVpLWJ1dHRvbi1pY29uIixpY29uOiIiLHRvb2x0aXA6Ij0KIixvbmNsaWNrOm51bGx9
LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0
aW9uPQpzRGVmYXVsdCksdGhpcy5zZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9u
cykpLHRoaXMuJGJ1dHRvbj0zRHRoaXM9Ci4kZWwuZmluZCgiLmJ1dHRvbiIpO3ZhciBuPTNEdGhp
czskKHRoaXMuZWwpLm9uKCJjbGljayIsZnVuY3Rpb24oKXskKCIudG9vbD0KdGlwIikuaGlkZSgp
LHQub25jbGljayYmIW4uZGlzYWJsZWQmJnQub25jbGljaygpfSksJCh0aGlzLmVsKS50b29sdGlw
KHt0aXRsPQplOnQudG9vbHRpcCxwbGFjZW1lbnQ6ImJvdHRvbSJ9KX0sZGlzYWJsZTpmdW5jdGlv
bigpe3RoaXMuJGJ1dHRvbi5hZGRDbGFzcyg9CiJkaXNhYmxlZCIpLHRoaXMuZGlzYWJsZWQ9M0Qh
MH0sZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy4kYnV0dG9uLnJlbW92ZUNsYXNzKD0KImRpc2FibGVk
IiksdGhpcy5kaXNhYmxlZD0zRCExfSxzZXRJY29uOmZ1bmN0aW9uKGUpe3RoaXMuJCgiaSIpLnJl
bW92ZUNsYXNzPQoodGhpcy5vcHRpb25zLmljb24pLmFkZENsYXNzKGUpLHRoaXMub3B0aW9ucy5p
Y29uPTNEZX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGU9Cil7dmFyIHQ9M0QiIjtlLnRpdGxlJiYodD0z
RCJ3aWR0aDogYXV0bzsiKTt2YXIgbj0zRCc8ZGl2IGlkPTNEIicrZS5pZCsnIiBzdD0KeWxlPTNE
ImZsb2F0OiAnK2UuZmxvYXRpbmcrIjsgIit0KyciIGNsYXNzPTNEIicrZS5jbHMrJyI+JztyZXR1
cm4gZS50aXRsZT9uPQorPTNEJzxkaXYgY2xhc3M9M0QiYnV0dG9uIj48aSBjbGFzcz0zRCJpY29u
IGZhICcrZS5pY29uKyciLz4mbmJzcDsnKyc8c3BhbiA9CmNsYXNzPTNEInRpdGxlIj4nK2UudGl0
bGUrIjwvc3Bhbj4iKyI8L2Rpdj4iOm4rPTNEJzxpIGNsYXNzPTNEImljb24gZmEgJytlLj0KaWNv
bisnIi8+JyxuKz0zRCI8L2Rpdj4iLG59fSksaD0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRp
b25zRGVmYXVsdDp7dGl0PQpsZToiIixjbHM6IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhp
cy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0Q9CmVmYXVsdCksdGhpcy5zZXRFbGVt
ZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9ucykpLCQodGhpcy5lbCkub24oImNsaWNrIj0K
LHQub25jbGljayl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdj48YSBocmVmPTNE
ImphdmFzY3JpcHQ6dm9pZCgwPQopIiBjbGFzcz0zRCJ1aS1hbmNob3IgJytlLmNscysnIj4nK2Uu
dGl0bGUrIjwvYT48L2Rpdj4ifX0pLHA9M0RCYWNrYm9uZS5WaWU9CncuZXh0ZW5kKHtvcHRpb25z
RGVmYXVsdDp7bWVzc2FnZTpudWxsLHN0YXR1czoiaW5mbyIscGVyc2lzdGVudDohMX0saW5pdGlh
bD0KaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNE
ZWZhdWx0KSx0aGlzLnNldEVsZW1lPQpudCgiPGRpdj48L2Rpdj4iKSx0aGlzLm9wdGlvbnMubWVz
c2FnZSYmdGhpcy51cGRhdGUodGhpcy5vcHRpb25zKX0sdXBkYXRlOmY9CnVuY3Rpb24odCl7dGhp
cy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpO2lmKHQubWVzc2FnZSE9
M0QiIj0KKXt0aGlzLiRlbC5odG1sKHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9ucykpLHRoaXMu
JGVsLmZpbmQoIi5hbGVydCIpLmFwcGVuPQpkKHQubWVzc2FnZSksdGhpcy4kZWwuZmFkZUluKCks
dGhpcy50aW1lb3V0JiZ3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMudGltZW89CnV0KTtpZighdC5w
ZXJzaXN0ZW50KXt2YXIgbj0zRHRoaXM7dGhpcy50aW1lb3V0PTNEd2luZG93LnNldFRpbWVvdXQo
ZnVuY3Rpbz0Kbigpe24uJGVsLmlzKCI6dmlzaWJsZSIpP24uJGVsLmZhZGVPdXQoKTpuLiRlbC5o
aWRlKCl9LDNlMyl9fWVsc2UgdGhpcy4kZWwuPQpmYWRlT3V0KCl9LF90ZW1wbGF0ZTpmdW5jdGlv
bihlKXtyZXR1cm4nPGRpdiBjbGFzcz0zRCJ1aS1tZXNzYWdlIGFsZXJ0IGFsZXI9CnQtJytlLnN0
YXR1cysnIi8+J319KSxkPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0Ontv
bmNsaWNrOm51bD0KbCxzZWFyY2h3b3JkOiIifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMu
b3B0aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvPQpuc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVu
dCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKTt2YXIgbj0zRHRoaXM7dGhpcy49Cm9wdGlv
bnMub25jbGljayYmdGhpcy4kZWwub24oInN1Ym1pdCIsZnVuY3Rpb24oZSl7dmFyIHQ9M0RuLiRl
bC5maW5kKCIjc2Vhcj0KY2giKTtuLm9wdGlvbnMub25jbGljayh0LnZhbCgpKX0pfSxfdGVtcGxh
dGU6ZnVuY3Rpb24oZSl7cmV0dXJuJzxkaXYgY2xhc3M9Cj0zRCJ1aS1zZWFyY2giPjxmb3JtIG9u
c3VibWl0PTNEInJldHVybiBmYWxzZTsiPjxpbnB1dCBpZD0zRCJzZWFyY2giIGNsYXNzPQo9M0Qi
Zm9ybS1jb250cm9sIGlucHV0LXNtIiB0eXBlPTNEInRleHQiIG5hbWU9M0Qic2VhcmNoIiBwbGFj
ZWhvbGRlcj0zRCJTZWE9CnJjaC4uLiIgdmFsdWU9M0QiJytlLnNlYXJjaHdvcmQrJyI+JysnPGJ1
dHRvbiB0eXBlPTNEInN1Ym1pdCIgY2xhc3M9M0QiYnRuID0Kc2VhcmNoLWJ0biI+JysnPGkgY2xh
c3M9M0QiZmEgZmEtc2VhcmNoIj48L2k+JysiPC9idXR0b24+IisiPC9mb3JtPiIrIjwvZGl2PQo+
In19KSx2PTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0Ont0eXBlOiJ0ZXh0
IixwbGFjZWhvbGRlcjoiIiw9CmRpc2FibGVkOiExLHZpc2libGU6ITAsY2xzOiIiLGFyZWE6ITF9
LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPQo9M0RlLm1lcmdlKHQsdGhpcy5v
cHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW89
Cm5zKSksdGhpcy5vcHRpb25zLnZhbHVlIT0zRD0zRHVuZGVmaW5lZCYmdGhpcy52YWx1ZSh0aGlz
Lm9wdGlvbnMudmFsdWUpLHRoaT0Kcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLiRlbC5wcm9wKCJk
aXNhYmxlZCIsITApLHRoaXMub3B0aW9ucy52aXNpYmxlfHx0aGlzPQouJGVsLmhpZGUoKTt2YXIg
bj0zRHRoaXM7dGhpcy4kZWwub24oImlucHV0IixmdW5jdGlvbigpe24ub3B0aW9ucy5vbmNoYW5n
ZSY9CiZuLm9wdGlvbnMub25jaGFuZ2Uobi4kZWwudmFsKCkpfSl9LHZhbHVlOmZ1bmN0aW9uKGUp
e3JldHVybiBlIT0zRD0zRHVuZGVmaT0KbmVkJiZ0aGlzLiRlbC52YWwoZSksdGhpcy4kZWwudmFs
KCl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5hcmVhPyc8PQp0ZXh0YXJlYSBpZD0z
RCInK2UuaWQrJyIgY2xhc3M9M0QidWktdGV4dGFyZWEgJytlLmNscysnIj48L3RleHRhcmVhPic6
JzxpbnA9CnV0IGlkPTNEIicrZS5pZCsnIiB0eXBlPTNEIicrZS50eXBlKyciIHZhbHVlPTNEIicr
ZS52YWx1ZSsnIiBwbGFjZWhvbGRlcj0zRD0KIicrZS5wbGFjZWhvbGRlcisnIiBjbGFzcz0zRCJ1
aS1pbnB1dCAnK2UuY2xzKyciPid9fSksbT0zREJhY2tib25lLlZpZXcuZXh0PQplbmQoe2luaXRp
YWxpemU6ZnVuY3Rpb24oZSl7dGhpcy5vcHRpb25zPTNEZSx0aGlzLnNldEVsZW1lbnQodGhpcy5f
dGVtcGxhdGU9Cih0aGlzLm9wdGlvbnMpKSx0aGlzLm9wdGlvbnMudmFsdWUhPTNEPTNEdW5kZWZp
bmVkJiZ0aGlzLnZhbHVlKHRoaXMub3B0aW9ucz0KLnZhbHVlKX0sdmFsdWU6ZnVuY3Rpb24oZSl7
cmV0dXJuIGUhPTNEPTNEdW5kZWZpbmVkJiZ0aGlzLiQoImhpZGRlbiIpLnZhbChlPQopLHRoaXMu
JCgiaGlkZGVuIikudmFsKCl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXt2YXIgdD0zRCc8ZGl2IGlk
PTNEIicrZS5pZCs9CiciID4nO3JldHVybiBlLmluZm8mJih0Kz0zRCI8bGFiZWw+IitlLmluZm8r
IjwvbGFiZWw+IiksdCs9M0QnPGhpZGRlbiB2YWx1ZT0KPTNEIicrZS52YWx1ZSsnIi8+JysiPC9k
aXY+Iix0fX0pO3JldHVybntBbmNob3I6aCxCdXR0b246bCxCdXR0b25JY29uOmMsQnV0PQp0b25N
ZW51OnMsSWNvbjpmLEltYWdlOnUsSW5wdXQ6dixMYWJlbDphLE1lc3NhZ2U6cCxNb2RhbDpvLFJh
ZGlvQnV0dG9uOnIuUmE9CmRpb0J1dHRvbixDaGVja2JveDpyLkNoZWNrYm94LFJhZGlvOnIuUmFk
aW8sU2VhcmNoYm94OmQsU2VsZWN0OnQsSGlkZGVuOm0sUz0KbGlkZXI6bixEcmlsbGRvd246aX19
KSxkZWZpbmUoInBsdWdpbi9saWJyYXJ5L2pvYnMiLFsidXRpbHMvdXRpbHMiXSxmdW5jdGlvPQpu
KGUpe3JldHVybiBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCxu
KXt0aGlzLmFwcD0zRHQsdGg9CmlzLm9wdGlvbnM9M0RlLm1lcmdlKG4sdGhpcy5vcHRpb25zRGVm
YXVsdCl9LHJlcXVlc3Q6ZnVuY3Rpb24oZSx0LG4scixpKXt2YT0KciBzPTNEdGhpcztlLnN0YXRl
KCJ3YWl0IiwiUmVxdWVzdGluZyBqb2IgcmVzdWx0cy4uLiIpO3ZhciBvPTNEZS5nZXQoImRhdGFz
PQpldF9pZF9qb2IiKTtvIT0zRCIiP3MuX3dhaXQoZSxyLGkpOnMuX3N1Ym1pdChlLHQsbixyLGkp
fSxjbGVhbnVwOmZ1bmN0aW9uKHQ9Cil7dmFyIG49M0R0aGlzLHI9M0R0LmdldCgiZGF0YXNldF9p
ZF9qb2IiKTtyIT0zRCIiJiYoZS5yZXF1ZXN0KHt0eXBlOiJQVVQiLD0KdXJsOmNvbmZpZy5yb290
KyJhcGkvaGlzdG9yaWVzL25vbmUvY29udGVudHMvIityLGRhdGE6e2RlbGV0ZWQ6ITB9LHN1Y2Nl
c3M6PQpmdW5jdGlvbigpe24uX3JlZnJlc2hIZGFzKCl9fSksdC5zZXQoImRhdGFzZXRfaWRfam9i
IiwiIikpfSxfc3VibWl0OmZ1bmN0aW89Cm4odCxuLHIsaSxzKXt2YXIgbz0zRHRoaXMsdT0zRHQu
aWQsYT0zRHQuZ2V0KCJ0eXBlIiksZj0zRHQuZGVmaW5pdGlvbjtkYXRhPQo9M0R7dG9vbF9pZDoi
Y2hhcnRzIixpbnB1dHM6e2lucHV0OntpZDp0LmdldCgiZGF0YXNldF9pZCIpLHNyYzoiaGRhIn0s
bW9kdWw9CmU6Zi5leGVjdXRlLGNvbHVtbnM6cixzZXR0aW5nczpufX0sdC5zdGF0ZSgid2FpdCIs
IlNlbmRpbmcgam9iIHJlcXVlc3QuLi4iKT0KLGUucmVxdWVzdCh7dHlwZToiUE9TVCIsdXJsOmNv
bmZpZy5yb290KyJhcGkvdG9vbHMiLGRhdGE6ZGF0YSxzdWNjZXNzOmZ1bmN0PQppb24oZSl7aWYo
IWUub3V0cHV0c3x8ZS5vdXRwdXRzLmxlbmd0aD0zRD0zRDApdC5zdGF0ZSgiZmFpbGVkIiwiSm9i
IHN1Ym1pc3M9CmlvbiBmYWlsZWQuIE5vIHJlc3BvbnNlLiIpLHMmJnMoKTtlbHNle28uX3JlZnJl
c2hIZGFzKCk7dmFyIG49M0RlLm91dHB1dHNbMD0KXTt0LnN0YXRlKCJ3YWl0IiwiWW91ciBqb2Ig
aGFzIGJlZW4gcXVldWVkLiBZb3UgbWF5IGNsb3NlIHRoZSBicm93c2VyIHdpbmRvPQp3LiBUaGUg
am9iIHdpbGwgcnVuIGluIHRoZSBiYWNrZ3JvdW5kLiIpLHQuc2V0KCJkYXRhc2V0X2lkX2pvYiIs
bi5pZCksby5hcHA9Ci5zdG9yYWdlLnNhdmUoKSxvLl93YWl0KHQsaSxzKX19LGVycm9yOmZ1bmN0
aW9uKGUpe3ZhciBuPTNEIiI7ZSYmZS5tZXNzYWdlJj0KJmUubWVzc2FnZS5kYXRhJiZlLm1lc3Nh
Z2UuZGF0YS5pbnB1dCYmKG49M0RlLm1lc3NhZ2UuZGF0YS5pbnB1dCsiLiIpLHQuc3RhPQp0ZSgi
ZmFpbGVkIiwiVGhpcyB2aXN1YWxpemF0aW9uIHJlcXVpcmVzIHRoZSAnY2hhcnRzJyB0b29sLiBQ
bGVhc2UgbWFrZSBzdXI9CmUgaXQgaXMgaW5zdGFsbGVkLiAiK24pLHMmJnMoKX19KX0sX3dhaXQ6
ZnVuY3Rpb24odCxuLHIpe3ZhciBpPTNEdGhpcztlLnJlcT0KdWVzdCh7dHlwZToiR0VUIix1cmw6
Y29uZmlnLnJvb3QrImFwaS9kYXRhc2V0cy8iK3QuZ2V0KCJkYXRhc2V0X2lkX2pvYiIpLGRhPQp0
YTp7fSxzdWNjZXNzOmZ1bmN0aW9uKGUpe3ZhciBzPTNEITE7c3dpdGNoKGUuc3RhdGUpe2Nhc2Ui
b2siOnQuc3RhdGUoIndhaXQ9CiIsIkpvYiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Li4uIiksbiYm
bihlKSxzPTNEITA7YnJlYWs7Y2FzZSJlcnJvciI6dC5zdGF0ZT0KKCJmYWlsZWQiLCJKb2IgaGFz
IGZhaWxlZC4gUGxlYXNlIGNoZWNrIHRoZSBoaXN0b3J5IGZvciBkZXRhaWxzLiIpLHImJnIoZSks
PQpzPTNEITA7YnJlYWs7Y2FzZSJydW5uaW5nIjp0LnN0YXRlKCJ3YWl0IiwiWW91ciBqb2IgaXMg
cnVubmluZy4gWW91IG1heSBjbG89CnNlIHRoZSBicm93c2VyIHdpbmRvdy4gVGhlIGpvYiB3aWxs
IGNvbnRpbnVlIGluIHRoZSBiYWNrZ3JvdW5kLiIpfXN8fHNldFRpbT0KZW91dChmdW5jdGlvbigp
e2kuX3dhaXQodCxuLHIpfSxpLmFwcC5jb25maWcuZ2V0KCJxdWVyeV90aW1lb3V0IikpfX0pfSxf
cmVmPQpyZXNoSGRhczpmdW5jdGlvbigpe0dhbGF4eSYmR2FsYXh5LmN1cnJIaXN0b3J5UGFuZWwm
JkdhbGF4eS5jdXJySGlzdG9yeVBhbmU9CmwucmVmcmVzaENvbnRlbnRzKCl9fSl9KSxkZWZpbmUo
InBsdWdpbi9saWJyYXJ5L2RhdGFzZXRzIixbInV0aWxzL3V0aWxzIl0sZj0KdW5jdGlvbihlKXty
ZXR1cm4gQmFja2JvbmUuQ29sbGVjdGlvbi5leHRlbmQoe2xpc3Q6e30sY2FjaGU6e30saW5pdGlh
bGl6ZTpmPQp1bmN0aW9uKHQsbil7dGhpcy5hcHA9M0R0LHRoaXMub3B0aW9ucz0zRGUubWVyZ2Uo
bix0aGlzLm9wdGlvbnNEZWZhdWx0KX0scmU9CnF1ZXN0OmZ1bmN0aW9uKGUpe2UuZ3JvdXBzP3Ro
aXMuX2dldF9ibG9ja3MoZSk6dGhpcy5fZ2V0X2RhdGFzZXQoZS5pZCxlLnN1Yz0KY2VzcyxlLmVy
cm9yKX0sX2dldF9ibG9ja3M6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gYyhpKXtsLl9nZXQoaSxmdW5j
dGlvbigpe3ZhPQpyIHM9M0QhMTtmb3IodmFyIG8gaW4gZS5ncm91cHMpe2Rlc3RpbmF0aW9uX2dy
b3VwPTNEZS5ncm91cHNbb10sc291cmNlX2dyb3U9CnA9M0RpLmdyb3Vwc1tvXSxkZXN0aW5hdGlv
bl9ncm91cC52YWx1ZXN8fChkZXN0aW5hdGlvbl9ncm91cC52YWx1ZXM9M0RbXSksZD0KZXN0aW5h
dGlvbl9ncm91cC52YWx1ZXM9M0RkZXN0aW5hdGlvbl9ncm91cC52YWx1ZXMuY29uY2F0KHNvdXJj
ZV9ncm91cC52YWx1PQplcyk7aWYoc291cmNlX2dyb3VwLnZhbHVlcy5sZW5ndGg9M0Q9M0QwKXtz
PTNEITA7YnJlYWt9fWlmKCsrZjx1JiYhcyl7biYmbig9CnBhcnNlSW50KGYvdSoxMDApKTt2YXIg
bD0zRGkuc3RhcnQrcjtpPTNEJC5leHRlbmQoITAsYSx7c3RhcnQ6bH0pLGMoaSl9ZWxzZT0KIHQo
KX0pfXZhciB0PTNEZS5zdWNjZXNzLG49M0RlLnByb2dyZXNzLHI9M0R0aGlzLmFwcC5jb25maWcu
Z2V0KCJxdWVyeV9saW1pPQp0IiksaT0zRGUuc3RhcnR8fDAscz0zRGkrZS5xdWVyeV9saW1pdHx8
aSt0aGlzLmFwcC5jb25maWcuZ2V0KCJxdWVyeV9saW1pdCI9Ciksbz0zRE1hdGguYWJzKHMtaSk7
aWYobzw9M0QwKXtjb25zb2xlLmRlYnVnKCJGQUlMRUQgLSBEYXRhc2V0czo6cmVxdWVzdCgpID0K
LSBJbnZhbGlkIHF1ZXJ5IHJhbmdlLiIpO3JldHVybn12YXIgdT0zRE1hdGguY2VpbChvL3IpfHwx
LGE9M0QkLmV4dGVuZCghMCx7PQp9LGUpLGY9M0QwLGw9M0R0aGlzLGg9M0QkLmV4dGVuZCghMCxh
LHtzdGFydDppfSk7dGhpcy5fZ2V0X2RhdGFzZXQoZS5pZCxmdW49CmN0aW9uKCl7YyhoKX0pfSxf
Z2V0X2RhdGFzZXQ6ZnVuY3Rpb24odCxuLHIpe3ZhciBpPTNEdGhpcy5saXN0W3RdO2lmKGkpe24o
aT0KKTtyZXR1cm59dmFyIHM9M0R0aGlzO2UucmVxdWVzdCh7dHlwZToiR0VUIix1cmw6Y29uZmln
LnJvb3QrImFwaS9kYXRhc2V0cy8iPQordCxzdWNjZXNzOmZ1bmN0aW9uKGUpe3N3aXRjaChlLnN0
YXRlKXtjYXNlImVycm9yIjpyJiZyKGUpO2JyZWFrO2RlZmF1bHQ6cy49Cmxpc3RbdF09M0RlLG4o
ZSl9fX0pfSxfYmxvY2tfaWQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5pZCsiXyIrZS5zdGFydCsi
XyIrZT0KLnN0YXJ0K3RoaXMuYXBwLmNvbmZpZy5nZXQoInF1ZXJ5X2xpbWl0IikrIl8iK3R9LF9n
ZXQ6ZnVuY3Rpb24oZSx0KXtlLnN0YXJ0PQo9M0RlLnN0YXJ0fHwwO3ZhciBuPTNEW10scj0zRHt9
LGk9M0QwO2Zvcih2YXIgcyBpbiBlLmdyb3Vwcyl7dmFyIG89M0RlLmdyb3U9CnBzW3NdO2Zvcih2
YXIgdSBpbiBvLmNvbHVtbnMpe3ZhciBhPTNEby5jb2x1bW5zW3VdLmluZGV4LGY9M0R0aGlzLl9i
bG9ja19pZD0KKGUsYSk7aWYodGhpcy5jYWNoZVtmXXx8YT0zRD0zRD0zRCJhdXRvInx8YT0zRD0z
RD0zRCJ6ZXJvIiljb250aW51ZTshclthXSYmPQphIT0zRD0zRHVuZGVmaW5lZCYmKHJbYV09M0Rp
LG4ucHVzaChhKSxpKyspfX1pZihuLmxlbmd0aD0zRD0zRDApe3RoaXMuX2ZpbGw9Cl9mcm9tX2Nh
Y2hlKGUpLHQoZSk7cmV0dXJufXZhciBsPTNEe2RhdGFzZXRfaWQ6ZS5pZCxzdGFydDplLnN0YXJ0
LGNvbHVtbnM6bj0KfSxjPTNEdGhpczt0aGlzLl9mZXRjaChsLGZ1bmN0aW9uKHIpe2Zvcih2YXIg
aSBpbiByKXt2YXIgcz0zRG5baV0sbz0zRGMuX2JsPQpvY2tfaWQoZSxzKTtjLmNhY2hlW29dPTNE
cltpXX1jLl9maWxsX2Zyb21fY2FjaGUoZSksdChlKX0pfSxfZmlsbF9mcm9tX2NhY2g9CmU6ZnVu
Y3Rpb24oZSl7dmFyIHQ9M0RlLnN0YXJ0O2NvbnNvbGUuZGVidWcoIkRhdGFzZXRzOjpfZmlsbF9m
cm9tX2NhY2hlKCkgLT0KIEZpbGxpbmcgcmVxdWVzdCBmcm9tIGNhY2hlIGF0ICIrdCsiLiIpO3Zh
ciBuPTNEMDtmb3IodmFyIHIgaW4gZS5ncm91cHMpe3ZhPQpyIGk9M0RlLmdyb3Vwc1tyXTtmb3Io
dmFyIHMgaW4gaS5jb2x1bW5zKXt2YXIgbz0zRGkuY29sdW1uc1tzXSx1PTNEdGhpcy5fYmw9Cm9j
a19pZChlLG8uaW5kZXgpLGE9M0R0aGlzLmNhY2hlW3VdO2EmJihuPTNETWF0aC5tYXgobixhLmxl
bmd0aCkpfX1uPTNEPTNEMD0KJiZjb25zb2xlLmRlYnVnKCJEYXRhc2V0czo6X2ZpbGxfZnJvbV9j
YWNoZSgpIC0gUmVhY2hlZCBkYXRhIHJhbmdlIGxpbWl0LiIpPQo7Zm9yKHZhciByIGluIGUuZ3Jv
dXBzKXt2YXIgaT0zRGUuZ3JvdXBzW3JdO2kudmFsdWVzPTNEW107Zm9yKHZhciBmPTNEMDtmPG49
CjtmKyspaS52YWx1ZXNbZl09M0R7eDpwYXJzZUludChmKSt0fX1mb3IodmFyIHIgaW4gZS5ncm91
cHMpe3ZhciBpPTNEZS5ncm91cD0Kc1tyXTtmb3IodmFyIHMgaW4gaS5jb2x1bW5zKXt2YXIgbz0z
RGkuY29sdW1uc1tzXTtzd2l0Y2goby5pbmRleCl7Y2FzZSJhdXRvPQoiOmZvcih2YXIgZj0zRDA7
ZjxuO2YrKyl7dmFyIGw9M0RpLnZhbHVlc1tmXTtsW3NdPTNEcGFyc2VJbnQoZikrdH1icmVhaztj
YXM9CmUiemVybyI6Zm9yKHZhciBmPTNEMDtmPG47ZisrKXt2YXIgbD0zRGkudmFsdWVzW2ZdO2xb
c109M0QwfWJyZWFrO2RlZmF1bHQ6dj0KYXIgdT0zRHRoaXMuX2Jsb2NrX2lkKGUsby5pbmRleCks
YT0zRHRoaXMuY2FjaGVbdV07Zm9yKHZhciBmPTNEMDtmPG47ZisrKXt2PQphciBsPTNEaS52YWx1
ZXNbZl0sYz0zRGFbZl07aXNOYU4oYykmJiFvLmlzX2xhYmVsJiYoYz0zRDApLGxbc109M0RjfX19
fX0sX2Y9CmV0Y2g6ZnVuY3Rpb24odCxuKXt2YXIgcj0zRHQuc3RhcnQ/dC5zdGFydDowLGk9M0R0
aGlzLmFwcC5jb25maWcuZ2V0KCJxdWVyeT0KX2xpbWl0Iikscz0zRDA7dC5jb2x1bW5zJiYocz0z
RHQuY29sdW1ucy5sZW5ndGgsY29uc29sZS5kZWJ1ZygiRGF0YXNldHM6Ol9mPQpldGNoKCkgLSBG
ZXRjaGluZyAiK3MrIiBjb2x1bW4ocykgYXQgIityKyIuIikpLHM9M0Q9M0QwJiZjb25zb2xlLmRl
YnVnKCJEYXQ9CmFzZXRzOjpfZmV0Y2goKSAtIE5vIGNvbHVtbnMgcmVxdWVzdGVkIik7dmFyIG89
M0QiIjtmb3IodmFyIHUgaW4gdC5jb2x1bW5zKT0Kbys9M0R0LmNvbHVtbnNbdV0rIiwiO289M0Rv
LnN1YnN0cmluZygwLG8ubGVuZ3RoLTEpO3ZhciBhPTNEdGhpcztlLnJlcXVlc3QoPQp7dHlwZToi
R0VUIix1cmw6Y29uZmlnLnJvb3QrImFwaS9kYXRhc2V0cy8iK3QuZGF0YXNldF9pZCxkYXRhOntk
YXRhX3R5cGU6InI9CmF3X2RhdGEiLHByb3ZpZGVyOiJkYXRhc2V0LWNvbHVtbiIsbGltaXQ6aSxv
ZmZzZXQ6cixpbmRlY2VzOm99LHN1Y2Nlc3M6ZnVuYz0KdGlvbihlKXt2YXIgdD0zRG5ldyBBcnJh
eShzKTtmb3IodmFyIHI9M0QwO3I8cztyKyspdFtyXT0zRFtdO2Zvcih2YXIgciBpbiBlPQouZGF0
YSl7dmFyIGk9M0RlLmRhdGFbcl07Zm9yKHZhciBvIGluIGkpe3ZhciB1PTNEaVtvXTt1IT0zRD0z
RHVuZGVmaW5lZCYmdSE9Cj0zRDIxNDc0ODM2NDcmJnRbb10ucHVzaCh1KX19Y29uc29sZS5kZWJ1
ZygiRGF0YXNldHM6Ol9mZXRjaCgpIC0gRmV0Y2hpbmcgYz0Kb21wbGV0ZS4iKSxuKHQpfX0pfX0p
fSksZGVmaW5lKCJwbHVnaW4vbW9kZWxzL2dyb3VwIixbXSxmdW5jdGlvbigpe3JldHVybiBCPQph
Y2tib25lLk1vZGVsLmV4dGVuZCh7ZGVmYXVsdHM6e2tleToiRGF0YSBsYWJlbCIsZGF0ZToiIn0s
cmVzZXQ6ZnVuY3Rpb24oKXs9CnRoaXMuY2xlYXIoe3NpbGVudDohMH0pLnNldCh0aGlzLmRlZmF1
bHRzKSx0aGlzLnRyaWdnZXIoInJlc2V0Iix0aGlzKX19KX0pLD0KZGVmaW5lKCJwbHVnaW4vbW9k
ZWxzL2dyb3VwcyIsWyJwbHVnaW4vbW9kZWxzL2dyb3VwIl0sZnVuY3Rpb24oZSl7cmV0dXJuIEJh
PQpja2JvbmUuQ29sbGVjdGlvbi5leHRlbmQoe21vZGVsOmV9KX0pLGRlZmluZSgicGx1Z2luL21v
ZGVscy9jaGFydCIsWyJwbHVnaW49Ci9tb2RlbHMvZ3JvdXBzIl0sZnVuY3Rpb24oZSl7cmV0dXJu
IEJhY2tib25lLk1vZGVsLmV4dGVuZCh7ZGVmYXVsdHM6e2lkOm51bD0KbCx0aXRsZToiIix0eXBl
OiIiLGRhdGU6bnVsbCxzdGF0ZToiIixzdGF0ZV9pbmZvOiIiLG1vZGlmaWVkOiExLGRhdGFzZXRf
aWQ6PQoiIixkYXRhc2V0X2lkX2pvYjoiIn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLmdy
b3Vwcz0zRG5ldyBlLHRoaXMuc2V0dGk9Cm5ncz0zRG5ldyBCYWNrYm9uZS5Nb2RlbH0scmVzZXQ6
ZnVuY3Rpb24oKXt0aGlzLmNsZWFyKHtzaWxlbnQ6ITB9KS5zZXQodGhpcz0KLmRlZmF1bHRzKSx0
aGlzLmdyb3Vwcy5yZXNldCgpLHRoaXMuc2V0dGluZ3MuY2xlYXIoKSx0aGlzLnRyaWdnZXIoInJl
c2V0Iix0PQpoaXMpfSxjb3B5OmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpczt0LmNsZWFyKHtzaWxl
bnQ6ITB9KS5zZXQodGhpcy5kZWZhdWx0cyk9Cix0LnNldChlLmF0dHJpYnV0ZXMpLHQuc2V0dGlu
Z3M9M0RlLnNldHRpbmdzLmNsb25lKCksdC5ncm91cHMucmVzZXQoKSxlLmdybz0KdXBzLmVhY2go
ZnVuY3Rpb24oZSl7dC5ncm91cHMuYWRkKGUuY2xvbmUoKSl9KSx0LnRyaWdnZXIoImNoYW5nZSIs
dCl9LHN0YXRlPQo6ZnVuY3Rpb24oZSx0KXt0aGlzLnNldCgic3RhdGUiLGUpLHRoaXMuc2V0KCJz
dGF0ZV9pbmZvIix0KSx0aGlzLnRyaWdnZXIoInM9CmV0OnN0YXRlIiksY29uc29sZS5kZWJ1Zygi
Q2hhcnQ6c3RhdGUoKSAtICIrdCsiICgiK2UrIikiKX19KX0pO3ZhciBWaXN1YWxpej0KYXRpb249
M0RCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe2RlZmF1bHRzOntjb25maWc6e319LHVybFJvb3Q6ZnVu
Y3Rpb24oKXt2YXIgPQplPTNEIi9hcGkvdmlzdWFsaXphdGlvbnMiO3JldHVybiB3aW5kb3cuZ2Fs
YXh5X2NvbmZpZyYmZ2FsYXh5X2NvbmZpZy5yb290P2c9CmFsYXh5X2NvbmZpZy5yb290K2U6ZX0s
aW5pdGlhbGl6ZTpmdW5jdGlvbihlKXtfLmlzT2JqZWN0KGUuY29uZmlnKSYmXy5pc09iaj0KZWN0
KHRoaXMuZGVmYXVsdHMuY29uZmlnKSYmXy5kZWZhdWx0cyhlLmNvbmZpZyx0aGlzLmRlZmF1bHRz
LmNvbmZpZyksdGhpcy5fPQpzZXRVcExpc3RlbmVycygpfSxfc2V0VXBMaXN0ZW5lcnM6ZnVuY3Rp
b24oKXt9LHNldDpmdW5jdGlvbihlLHQpe2lmKGU9M0Q9M0Q9Cj0zRCJjb25maWciKXt2YXIgbj0z
RHRoaXMuZ2V0KCJjb25maWciKTtfLmlzT2JqZWN0KG4pJiYodD0zRF8uZXh0ZW5kKF8uY2xvbj0K
ZShuKSx0KSl9cmV0dXJuIEJhY2tib25lLk1vZGVsLnByb3RvdHlwZS5zZXQuY2FsbCh0aGlzLGUs
dCksdGhpc30sdG9TdHJpbmc6PQpmdW5jdGlvbigpe3ZhciBlPTNEdGhpcy5nZXQoImlkIil8fCIi
O3JldHVybiB0aGlzLmdldCgidGl0bGUiKSYmKGUrPTNEIjoiK3Q9Cmhpcy5nZXQoInRpdGxlIikp
LCJWaXN1YWxpemF0aW9uKCIrZSsiKSJ9fSksVmlzdWFsaXphdGlvbkNvbGxlY3Rpb249M0RCYWNr
Yj0Kb25lLkNvbGxlY3Rpb24uZXh0ZW5kKHttb2RlbDpWaXN1YWxpemF0aW9uLHVybDpmdW5jdGlv
bigpe3JldHVybiBnYWxheHlfY29uPQpmaWcucm9vdCsiYXBpL3Zpc3VhbGl6YXRpb25zIn0saW5p
dGlhbGl6ZTpmdW5jdGlvbihlLHQpe3Q9M0R0fHx7fX0sc2V0OmZ1bmM9CnRpb24oZSx0KXt2YXIg
bj0zRHRoaXM7ZT0zRF8ubWFwKGUsZnVuY3Rpb24oZSl7dmFyIHQ9M0RuLmdldChlLmlkKTtpZigh
dClyZT0KdHVybiBlO3ZhciByPTNEdC50b0pTT04oKTtyZXR1cm4gXy5leHRlbmQocixlKSxyfSks
QmFja2JvbmUuQ29sbGVjdGlvbi5wcm90PQpvdHlwZS5zZXQuY2FsbCh0aGlzLGUsdCl9LHRvU3Ry
aW5nOmZ1bmN0aW9uKCl7cmV0dXJuWyJWaXN1YWxpemF0aW9uQ29sbGVjdGk9Cm9uKCIsW3RoaXMu
aGlzdG9yeUlkLHRoaXMubGVuZ3RoXS5qb2luKCksIikiXS5qb2luKCIiKX19KTtkZWZpbmUoIm12
Yy92aXN1YT0KbGl6YXRpb24vdmlzdWFsaXphdGlvbi1tb2RlbCIsZnVuY3Rpb24oKXt9KSxkZWZp
bmUoInBsdWdpbi9saWJyYXJ5L3N0b3JhZ2UiPQosWyJ1dGlscy91dGlscyIsInBsdWdpbi9tb2Rl
bHMvY2hhcnQiLCJwbHVnaW4vbW9kZWxzL2dyb3VwIiwibXZjL3Zpc3VhbGl6YXQ9Cmlvbi92aXN1
YWxpemF0aW9uLW1vZGVsIl0sZnVuY3Rpb24oZSx0LG4pe3JldHVybiBCYWNrYm9uZS5Nb2RlbC5l
eHRlbmQoe3Zpcz0KOm51bGwsaW5pdGlhbGl6ZTpmdW5jdGlvbihlKXt0aGlzLmFwcD0zRGUsdGhp
cy5jaGFydD0zRHRoaXMuYXBwLmNoYXJ0LHRoaXMuPQpvcHRpb25zPTNEdGhpcy5hcHAub3B0aW9u
cyx0aGlzLmlkPTNEdGhpcy5vcHRpb25zLmlkLHRoaXMudmlzPTNEbmV3IFZpc3VhbGk9CnphdGlv
bih7dHlwZToiY2hhcnRzIixjb25maWc6e2RhdGFzZXRfaWQ6dGhpcy5vcHRpb25zLmNvbmZpZy5k
YXRhc2V0X2lkLGNoYT0KcnRfZGljdDp7fX19KSx0aGlzLmlkJiYodGhpcy52aXMuaWQ9M0R0aGlz
LmlkKTt2YXIgdD0zRHRoaXMub3B0aW9ucy5jb25maWcuPQpjaGFydF9kaWN0O3QmJih0aGlzLnZp
cy5nZXQoImNvbmZpZyIpLmNoYXJ0X2RpY3Q9M0R0KX0sc2F2ZTpmdW5jdGlvbigpe3ZhciA9CmU9
M0R0aGlzLmFwcC5jaGFydDt0aGlzLnZpcy5nZXQoImNvbmZpZyIpLmNoYXJ0X2RpY3Q9M0R7fTt2
YXIgdD0zRGUuZ2V0KCJ0aT0KdGxlIik7dCE9M0QiIiYmdGhpcy52aXMuc2V0KCJ0aXRsZSIsdCk7
dmFyIG49M0R7YXR0cmlidXRlczplLmF0dHJpYnV0ZXMsc2V0PQp0aW5nczplLnNldHRpbmdzLmF0
dHJpYnV0ZXMsZ3JvdXBzOltdfTtlLmdyb3Vwcy5lYWNoKGZ1bmN0aW9uKGUpe24uZ3JvdXBzLnA9
CnVzaChlLmF0dHJpYnV0ZXMpfSksdGhpcy52aXMuZ2V0KCJjb25maWciKS5jaGFydF9kaWN0PTNE
bjt2YXIgcj0zRHRoaXM7dGhpcz0KLnZpcy5zYXZlKCkuZmFpbChmdW5jdGlvbihlLHQsbil7Y29u
c29sZS5lcnJvcihlLHQsbil9KS50aGVuKGZ1bmN0aW9uKGUpe2UmPQomZS5pZCYmKHIuaWQ9M0Rl
LmlkKX0pfSxsb2FkOmZ1bmN0aW9uKCl7dmFyIGU9M0R0aGlzLnZpcy5nZXQoImNvbmZpZyIpLmNo
YXI9CnRfZGljdDtpZighZS5hdHRyaWJ1dGVzKXJldHVybiExO3ZhciB0PTNEZS5hdHRyaWJ1dGVz
LnR5cGU7aWYoIXQpcmV0dXJuIGNvbj0Kc29sZS5kZWJ1ZygiU3RvcmFnZTo6bG9hZCgpIC0gQ2hh
cnQgdHlwZSBub3QgcHJvdmlkZWQuIEludmFsaWQgZm9ybWF0LiIpLCExPQo7dmFyIHI9M0R0aGlz
LmFwcC50eXBlcy5nZXQodCk7aWYoIXIpcmV0dXJuIGNvbnNvbGUuZGVidWcoIlN0b3JhZ2U6Omxv
YWQoKSA9Ci0gQ2hhcnQgdHlwZSBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgcmUtY29uZmlndXJlIHRo
ZSBjaGFydC4gUmVzZXR0aW5nIGNoYXJ0Lj0KIiksITE7Y29uc29sZS5kZWJ1ZygiU3RvcmFnZTo6
bG9hZCgpIC0gTG9hZGluZyBjaGFydCB0eXBlICIrdCsiLiIpLHRoaXMuY2hhPQpydC5kZWZpbml0
aW9uPTNEcix0aGlzLmNoYXJ0LnNldChlLmF0dHJpYnV0ZXMpLHRoaXMuY2hhcnQuc3RhdGUoIm9r
IiwiTG9hZGk9Cm5nIHNhdmVkIHZpc3VhbGl6YXRpb24uLi4iKSx0aGlzLmNoYXJ0LnNldHRpbmdz
LnNldChlLnNldHRpbmdzKTtmb3IodmFyIGkgaT0KbiBlLmdyb3Vwcyl0aGlzLmNoYXJ0Lmdyb3Vw
cy5hZGQobmV3IG4oZS5ncm91cHNbaV0pKTtyZXR1cm4gdGhpcy5jaGFydC5zZXQoPQoibW9kaWZp
ZWQiLCExKSwhMH19KX0pLGRlZmluZSgidXRpbHMvZGVmZXJyZWQiLFsidXRpbHMvdXRpbHMiXSxm
dW5jdGlvbihlKXs9CnJldHVybiBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe3F1ZXVlOltdLHByb2Nl
c3M6e30sY291bnRlcjowLGluaXRpYWxpemU6ZnVuYz0KdGlvbigpe3RoaXMub24oInJlZnJlc2gi
LGZ1bmN0aW9uKCl7aWYodGhpcy5xdWV1ZS5sZW5ndGg+MCYmdGhpcy5yZWFkeSgpKXt2PQphciBl
PTNEdGhpcy5xdWV1ZVswXTt0aGlzLnF1ZXVlLnNwbGljZSgwLDEpLGUmJmUoKX19KX0sZXhlY3V0
ZTpmdW5jdGlvbihlKXs9CnRoaXMucXVldWUucHVzaChlKSx0aGlzLnRyaWdnZXIoInJlZnJlc2gi
KX0scmVnaXN0ZXI6ZnVuY3Rpb24oKXt2YXIgdD0zRGUudT0KdWlkKCk7cmV0dXJuIHRoaXMucHJv
Y2Vzc1t0XT0zRCEwLHRoaXMuY291bnRlcisrLGNvbnNvbGUuZGVidWcoIkRlZmVycmVkOnJlPQpn
aXN0ZXIoKSAtIFJlZ2lzdGVyaW5nICIrdCksdH0sZG9uZTpmdW5jdGlvbihlKXt0aGlzLnByb2Nl
c3NbZV0mJihkZWxldGUgdGg9CmlzLnByb2Nlc3NbZV0sdGhpcy5jb3VudGVyLS0sY29uc29sZS5k
ZWJ1ZygiRGVmZXJyZWQ6ZG9uZSgpIC0gVW5yZWdpc3RlcmluZz0KICIrZSksdGhpcy50cmlnZ2Vy
KCJyZWZyZXNoIikpfSxyZXNldDpmdW5jdGlvbigpe3RoaXMucXVldWU9M0RbXX0scmVhZHk6ZnVu
PQpjdGlvbigpe3JldHVybiB0aGlzLmNvdW50ZXI9M0Q9M0QwfX0pfSksZGVmaW5lKCJwbHVnaW4v
dmlld3Mvdmlld3BvcnQiLFsibXY9CmMvdWkvdWktcG9ydGxldCIsIm12Yy91aS91aS1taXNjIiwi
dXRpbHMvdXRpbHMiXSxmdW5jdGlvbihlLHQsbil7cmV0dXJuIEJhYz0Ka2JvbmUuVmlldy5leHRl
bmQoe2NvbnRhaW5lcl9saXN0OltdLGNhbnZhc19saXN0OltdLGluaXRpYWxpemU6ZnVuY3Rpb24o
ZSx0PQope3RoaXMuYXBwPTNEZSx0aGlzLmNoYXJ0PTNEdGhpcy5hcHAuY2hhcnQsdGhpcy5vcHRp
b25zPTNEbi5tZXJnZSh0LHRoaXMub3A9CnRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGVtZW50KCQo
dGhpcy5fdGVtcGxhdGUoKSkpLHRoaXMuX2Z1bGxzY3JlZW4odGhpcy4kZT0KbCwxMDApLHRoaXMu
X2NyZWF0ZUNvbnRhaW5lcigiZGl2Iik7dmFyIHI9M0R0aGlzO3RoaXMuY2hhcnQub24oInJlZHJh
dyIsZnVuPQpjdGlvbigpe3IuX2RyYXcoci5jaGFydCl9KSx0aGlzLmNoYXJ0Lm9uKCJzZXQ6c3Rh
dGUiLGZ1bmN0aW9uKCl7dmFyIGU9M0RyLiQ9CmVsLmZpbmQoIiNpbmZvIiksdD0zRHIuJGVsLmZp
bmQoIi5jaGFydHMtdmlld3BvcnQtY29udGFpbmVyIiksbj0zRGUuZmluZCgiIz0KaWNvbiIpO24u
cmVtb3ZlQ2xhc3MoKSxlLnNob3coKSxlLmZpbmQoIiN0ZXh0IikuaHRtbChyLmNoYXJ0LmdldCgi
c3RhdGVfaW5mPQpvIikpO3ZhciBpPTNEci5jaGFydC5nZXQoInN0YXRlIik7c3dpdGNoKGkpe2Nh
c2Uib2siOmUuaGlkZSgpLHQuc2hvdygpO2JyZWE9Cms7Y2FzZSJmYWlsZWQiOm4uYWRkQ2xhc3Mo
Imljb24gZmEgZmEtd2FybmluZyIpLHQuaGlkZSgpO2JyZWFrO2RlZmF1bHQ6bi5hZD0KZENsYXNz
KCJpY29uIGZhIGZhLXNwaW5uZXIgZmEtc3BpbiIpLHQuc2hvdygpfX0pfSxzaG93OmZ1bmN0aW9u
KCl7dGhpcy4kZWwuPQpzaG93KCl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLiRlbC5oaWRlKCl9LF9m
dWxsc2NyZWVuOmZ1bmN0aW9uKGUsdCl7ZS5jc3MoImg9CmVpZ2h0IiwkKHdpbmRvdykuaGVpZ2h0
KCktdCksJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbigpe2UuY3NzKCJoZWlnaHQiLCQodz0KaW5k
b3cpLmhlaWdodCgpLXQpfSl9LF9jcmVhdGVDb250YWluZXI6ZnVuY3Rpb24oZSx0KXt0PTNEdHx8
MTtmb3IodmFyIG4gaW4gPQp0aGlzLmNvbnRhaW5lcl9saXN0KXRoaXMuY29udGFpbmVyX2xpc3Rb
bl0ucmVtb3ZlKCk7dGhpcy5jb250YWluZXJfbGlzdD0zRFs9Cl0sdGhpcy5jYW52YXNfbGlzdD0z
RFtdO2Zvcih2YXIgbj0zRDA7bjx0O24rKyl7dmFyIHI9M0QkKHRoaXMuX3RlbXBsYXRlQ29udD0K
YWluZXIoZSxwYXJzZUludCgxMDAvdCkpKTt0aGlzLiRlbC5hcHBlbmQociksdGhpcy5jb250YWlu
ZXJfbGlzdFtuXT0zRHIsdGhpPQpzLmNhbnZhc19saXN0W25dPTNEci5maW5kKCIuY2hhcnRzLXZp
ZXdwb3J0LWNhbnZhcyIpLmF0dHIoImlkIil9fSxfZHJhdzpmdW49CmN0aW9uKGUpe3ZhciB0PTNE
dGhpcyxuPTNEdGhpcy5hcHAuZGVmZXJyZWQucmVnaXN0ZXIoKSxyPTNEZS5nZXQoInR5cGUiKTt0
aD0KaXMuY2hhcnRfZGVmaW5pdGlvbj0zRGUuZGVmaW5pdGlvbjt2YXIgaT0zRDE7ZS5zZXR0aW5n
cy5nZXQoInVzZV9wYW5lbHMiKT0KPTNEPTNEPTNEInRydWUiJiYoaT0zRGUuZ3JvdXBzLmxlbmd0
aCksdGhpcy5fY3JlYXRlQ29udGFpbmVyKHRoaXMuY2hhcnRfZGVmPQppbml0aW9uLnRhZyxpKSxl
LnN0YXRlKCJ3YWl0IiwiUGxlYXNlIHdhaXQuLi4iKTtpZighdGhpcy5jaGFydF9kZWZpbml0aW9u
LmU9CnhlY3V0ZXx8dGhpcy5jaGFydF9kZWZpbml0aW9uLmV4ZWN1dGUmJmUuZ2V0KCJtb2RpZmll
ZCIpKXRoaXMuYXBwLmpvYnMuY2xlYT0KbnVwKGUpLGUuc2V0KCJtb2RpZmllZCIsITEpO3ZhciB0
PTNEdGhpcztyZXF1aXJlKFsicGx1Z2luL2NoYXJ0cy8iK3RoaXMuYXBwPQouY2hhcnRQYXRoKHIp
KyIvd3JhcHBlciJdLGZ1bmN0aW9uKHIpe2lmKHQuY2hhcnRfZGVmaW5pdGlvbi5leGVjdXRlKXQu
YXBwLmo9Cm9icy5yZXF1ZXN0KGUsdC5fZGVmYXVsdFNldHRpbmdzU3RyaW5nKGUpLHQuX2RlZmF1
bHRSZXF1ZXN0U3RyaW5nKGUpLGZ1bmN0aT0Kb24oKXt2YXIgaT0zRG5ldyByKHQuYXBwLHtwcm9j
ZXNzX2lkOm4sY2hhcnQ6ZSxyZXF1ZXN0X2RpY3Rpb25hcnk6dC5fZGVmYXVsPQp0UmVxdWVzdERp
Y3Rpb25hcnkoZSksY2FudmFzX2xpc3Q6dC5jYW52YXNfbGlzdH0pfSxmdW5jdGlvbigpe3RoaXMu
YXBwLmRlZmU9CnJyZWQuZG9uZShuKX0pO2Vsc2UgdmFyIGk9M0RuZXcgcih0LmFwcCx7cHJvY2Vz
c19pZDpuLGNoYXJ0OmUscmVxdWVzdF9kaWN0aT0Kb25hcnk6dC5fZGVmYXVsdFJlcXVlc3REaWN0
aW9uYXJ5KGUpLGNhbnZhc19saXN0OnQuY2FudmFzX2xpc3R9KX0pfSxfZGVmYXVsPQp0UmVxdWVz
dFN0cmluZzpmdW5jdGlvbihlKXt2YXIgdD0zRCIiLG49M0QwLHI9M0R0aGlzO3JldHVybiBlLmdy
b3Vwcy5lYWNoKGY9CnVuY3Rpb24oZSl7bisrO2Zvcih2YXIgaSBpbiByLmNoYXJ0X2RlZmluaXRp
b24uY29sdW1ucyl0Kz0zRGkrIl8iK24rIjoiKyhwYT0KcnNlSW50KGUuZ2V0KGkpKSsxKSsiLCAi
fSksdC5zdWJzdHJpbmcoMCx0Lmxlbmd0aC0yKX0sX2RlZmF1bHRTZXR0aW5nc1N0cmluPQpnOmZ1
bmN0aW9uKGUpe3ZhciB0PTNEIiI7Zm9yKGtleSBpbiBlLnNldHRpbmdzLmF0dHJpYnV0ZXMpdCs9
M0RrZXkrIjoiK2Uuc2U9CnR0aW5ncy5nZXQoa2V5KSsiLCAiO3JldHVybiB0LnN1YnN0cmluZygw
LHQubGVuZ3RoLTIpfSxfZGVmYXVsdFJlcXVlc3REaWN0aT0Kb25hcnk6ZnVuY3Rpb24oZSl7dmFy
IHQ9M0R7Z3JvdXBzOltdfTt0aGlzLmNoYXJ0X2RlZmluaXRpb24uZXhlY3V0ZT90LmlkPTNEPQpl
LmdldCgiZGF0YXNldF9pZF9qb2IiKTp0LmlkPTNEZS5nZXQoImRhdGFzZXRfaWQiKTt2YXIgcj0z
RDAsaT0zRHRoaXM7cmV0dXI9Cm4gZS5ncm91cHMuZWFjaChmdW5jdGlvbihlKXt2YXIgcz0zRHt9
O2Zvcih2YXIgbyBpbiBpLmNoYXJ0X2RlZmluaXRpb24uY29sdT0KbW5zKXt2YXIgdT0zRGkuY2hh
cnRfZGVmaW5pdGlvbi5jb2x1bW5zW29dO3Nbb109M0RuLm1lcmdlKHtpbmRleDplLmdldChvKX0s
PQp1KX10Lmdyb3Vwcy5wdXNoKHtrZXk6KytyKyI6IitlLmdldCgia2V5IiksY29sdW1uczpzfSl9
KSx0fSxfdGVtcGxhdGU6ZnVuY3Q9Cmlvbigpe3JldHVybic8ZGl2IGNsYXNzPTNEImNoYXJ0cy12
aWV3cG9ydCI+PGRpdiBpZD0zRCJpbmZvIiBjbGFzcz0zRCJpbmZvIj0KPjxzcGFuIGlkPTNEImlj
b24iIGNsYXNzPTNEImljb24iLz48c3BhbiBpZD0zRCJ0ZXh0IiBjbGFzcz0zRCJ0ZXh0IiAvPjwv
ZGl2PQo+PC9kaXY+J30sX3RlbXBsYXRlQ29udGFpbmVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuJzxk
aXYgY2xhc3M9M0QiY2hhcnRzLXZpZXc9CnBvcnQtY29udGFpbmVyIiBzdHlsZT0zRCJ3aWR0aDon
K3QrJyU7Ij4nKyc8ZGl2IGlkPTNEIm1lbnUiLz4nKyI8IitlKycgaWQ9Cj0zRCInK24udXVpZCgp
KyciIGNsYXNzPTNEImNoYXJ0cy12aWV3cG9ydC1jYW52YXMiPicrIjwvZGl2PiJ9fSl9KSxkZWZp
bmUoIj0KcGx1Z2luL2xpYnJhcnkvc2NyZWVuc2hvdCIsWyJsaWJzL3VuZGVyc2NvcmUiXSxmdW5j
dGlvbihlKXtmdW5jdGlvbiB0KGUpe2UuPQokZWwuZmluZCgic3ZnIikubGVuZ3RoPjA/cihlKTpu
KGUpfWZ1bmN0aW9uIG4oZSl7dHJ5e3ZhciB0PTNEZS4kZWwuZmluZCgiLmo9CnFwbG90LXRhcmdl
dCIpLG49M0R0LmpxcGxvdFRvSW1hZ2VTdHIoe30pO24mJih3aW5kb3cubG9jYXRpb24uaHJlZj0z
RG4ucmVwbD0KYWNlKCJpbWFnZS9wbmciLCJpbWFnZS9vY3RldC1zdHJlYW0iKSl9Y2F0Y2gocil7
Y29uc29sZS5kZWJ1ZygiRkFJTEVEIC0gU2NyPQplZW5zaG90OjpfZnJvbUNhbnZhcygpIC0gIity
KSxlLmVycm9yJiZlLmVycm9yKCJQbGVhc2UgcmVkdWNlIHlvdXIgY2hhcnQgdG89CiBhIHNpbmds
ZSBwYW5lbCBhbmQgdHJ5IGFnYWluLiIpfX1mdW5jdGlvbiByKGUpe3ZhciB0PTNEZS4kZWwsbj0z
RGUudXJsLHI9Cj0zRGUubmFtZSxzPTNEbmV3IFhNTFNlcmlhbGl6ZXIsbz0zRGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImNhbnZhcyIpLHU9M0QkKD0KbyksYT0zRHQuZmluZCgic3ZnIikubGVuZ3Ro
LGY9M0R0LmZpbmQoInN2ZyIpLmZpcnN0KCksbD0zRHBhcnNlSW50KGYuY3NzKCJoPQplaWdodCIp
KSxjPTNEcGFyc2VJbnQoZi5jc3MoIndpZHRoIikpO3UuYXR0cigid2lkdGgiLGMqYSksdS5hdHRy
KCJoZWlnaHQiLGw9CiksKCFvLmdldENvbnRleHR8fCFvLmdldENvbnRleHQoIjJkIikpJiZhbGVy
dCgiWW91ciBicm93c2VyIGRvZXNuJ3Qgc3VwcG9ydD0KIHRoaXMgZmVhdHVyZSwgcGxlYXNlIHVz
ZSBhIG1vZGVybiBicm93c2VyIik7dmFyIGg9M0RvLmdldENvbnRleHQoIjJkIikscD0KPTNEMDt0
LmZpbmQoInN2ZyIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT0zRCQodGhpcyk7ZS5hdHRyKHt2ZXJz
aW9uOiIxLjEiLHhtPQpsbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDpjLGhl
aWdodDpsfSk7dmFyIHQ9M0RzLnNlcmlhbGl6ZVRvU3Q9CnJpbmcodGhpcyk7aC5kcmF3U3ZnKHQs
cCwwLGMsbCkscCs9M0RjfSksd2luZG93LmxvY2F0aW9uLmhyZWY9M0RpKG8sby5nZXRDbz0KbnRl
eHQoIjJkIiksIndoaXRlIikucmVwbGFjZSgiaW1hZ2UvcG5nIiwiaW1hZ2Uvb2N0ZXQtc3RyZWFt
Iil9ZnVuY3Rpb24gaShlPQosdCxuKXt2YXIgcj0zRGUud2lkdGgsaT0zRGUuaGVpZ2h0LHM7aWYo
bil7cz0zRHQuZ2V0SW1hZ2VEYXRhKDAsMCxyLGkpO3ZhciA9Cm89M0R0Lmdsb2JhbENvbXBvc2l0
ZU9wZXJhdGlvbjt0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0zRCJkZXN0aW5hdGlvbi1vdj0K
ZXIiLHQuZmlsbFN0eWxlPTNEbix0LmZpbGxSZWN0KDAsMCxyLGkpfXZhciB1PTNEZS50b0RhdGFV
UkwoImltYWdlL3BuZyIpO3JlPQp0dXJuIG4mJih0LmNsZWFyUmVjdCgwLDAscixpKSx0LnB1dElt
YWdlRGF0YShzLDAsMCksdC5nbG9iYWxDb21wb3NpdGVPcGVyYXQ9Cmlvbj0zRG8pLHV9ZnVuY3Rp
b24gcyhlKXt3aW5kb3cubG9jYXRpb24uaHJlZj0zRCJkYXRhOm5vbmUvbm9uZTtiYXNlNjQsIiti
dD0Kb2EoYShlKS5zdHJpbmcpfWZ1bmN0aW9uIG8oZSl7Zm9yKHZhciB0IGluIGRvY3VtZW50LnN0
eWxlU2hlZXRzKXt2YXIgbj0zRGRvPQpjdW1lbnQuc3R5bGVTaGVldHNbdF0scj0zRG4uY3NzUnVs
ZXM7aWYocilmb3IodmFyIGk9M0QwLHM9M0RyLmxlbmd0aDtpPHM7aSs9CispdHJ5e2UuZmluZChy
W2ldLnNlbGVjdG9yVGV4dCkuZWFjaChmdW5jdGlvbihlLHQpe3Quc3R5bGUuY3NzVGV4dCs9M0Ry
W2ldLj0Kc3R5bGUuY3NzVGV4dH0pfWNhdGNoKG8pe319fWZ1bmN0aW9uIHUoZSl7dmFyIHQ9M0Rh
KGUpLG49M0R7ZmlsZW5hbWU6bmFtZXx8PQoiY2hhcnQiLHR5cGU6ImFwcGxpY2F0aW9uL3BkZiIs
aGVpZ2h0OnQuaGVpZ2h0LHdpZHRoOnQud2lkdGgsc2NhbGU6Mixzdmc6dC49CnN0cmluZ30scj0z
RCQoImJvZHkiKSxpPTNEci5maW5kKCIjdmlld3BvcnQtZm9ybSIpO2kubGVuZ3RoPTNEPTNEPTNE
MCYmKGk9Cj0zRCQoIjxmb3JtPiIse2lkOiJ2aWV3cG9ydC1mb3JtIixtZXRob2Q6InBvc3QiLGFj
dGlvbjoiaHR0cDovL2V4cG9ydC5oaWdoYz0KaGFydHMuY29tLyIsZGlzcGxheToibm9uZSJ9KSxy
LmFwcGVuZChpKSksaS5lbXB0eSgpO2ZvcihuYW1lIGluIG4pe3ZhciBzPTNEPQokKCI8aW5wdXQv
PiIse3R5cGU6ImhpZGRlbiIsbmFtZTpuYW1lLHZhbHVlOm5bbmFtZV19KTtpLmFwcGVuZChzKX10
cnl7aS5zdWI9Cm1pdCgpfWNhdGNoKG8pe2NvbnNvbGUubG9nKG8pfX1mdW5jdGlvbiBhKGUpe2lm
KGUuJGVsLmZpbmQoInN2ZyIpLmxlbmd0aD0zRD0KPTNEMCYmZS5lcnJvcil7ZS5lcnJvcigiTm8g
U1ZHIGZvdW5kLiBUaGlzIGNoYXJ0IHR5cGUgZG9lcyBub3Qgc3VwcG9ydCBTVkcvPQpQREYgZXhw
b3J0LiIpO3JldHVybn12YXIgdD0zRGUuJGVsLG49M0R0LmZpbmQoInN2ZyIpLmxlbmd0aCxyPTNE
cGFyc2VJbnQodC49CmZpbmQoInN2ZyIpLmZpcnN0KCkuY3NzKCJoZWlnaHQiKSksaT0zRHBhcnNl
SW50KHQuZmluZCgic3ZnIikuZmlyc3QoKS5jc3MoIj0Kd2lkdGgiKSkscz0zRG5ldyBYTUxTZXJp
YWxpemVyLHU9M0QkKCI8c3ZnLz4iKTt1LmF0dHIoe3ZlcnNpb246IjEuMSIseG1sbnM6PQoiaHR0
cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOmkqbixoZWlnaHQ6cn0pO3ZhciBhPTNEIiIs
Zj0zRDA7cmV0dXJuIHQ9Ci5maW5kKCJzdmciKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9M0QkKHRo
aXMpLmNsb25lKCk7byhlKTt2YXIgdD0zRCQoJzxnIHRyYT0KbnNmb3JtPTNEInRyYW5zbGF0ZSgn
K2YrJywgMCkiPicpO3QuYXBwZW5kKGUuZmluZCgiZyIpLmZpcnN0KCkpLHUuYXBwZW5kKHQpPQos
Zis9M0RpfSkse3N0cmluZzpzLnNlcmlhbGl6ZVRvU3RyaW5nKHVbMF0pLGhlaWdodDpyLHdpZHRo
Oml9fXJldHVybntjcmVhdGU9ClBORzp0LGNyZWF0ZVNWRzpzLGNyZWF0ZVBERjp1fX0pLGRlZmlu
ZSgicGx1Z2luL3ZpZXdzL3ZpZXdlciIsWyJ1dGlscy91dGlscz0KIiwibXZjL3VpL3VpLW1pc2Mi
LCJtdmMvdWkvdWktcG9ydGxldCIsInBsdWdpbi92aWV3cy92aWV3cG9ydCIsInBsdWdpbi9saWJy
PQphcnkvc2NyZWVuc2hvdCJdLGZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIEJhY2tib25lLlZp
ZXcuZXh0ZW5kKHtpbml0aWFsaXo9CmU6ZnVuY3Rpb24oZSxzKXt0aGlzLmFwcD0zRGUsdGhpcy5j
aGFydD0zRHRoaXMuYXBwLmNoYXJ0LHRoaXMudmlld3BvcnRfdmlldz0KPTNEbmV3IHIoZSk7dmFy
IG89M0R0aGlzO3RoaXMubWVzc2FnZT0zRG5ldyB0Lk1lc3NhZ2U7dmFyIHU9M0RuZXcgdC5CdXR0
b25NPQplbnUoe2ljb246ImZhLWNhbWVyYSIsdGl0bGU6IlNjcmVlbnNob3QiLHRvb2x0aXA6IkRv
d25sb2FkIGFzIFBORywgU1ZHIG9yIFA9CkRGIGZpbGUifSk7dS5hZGRNZW51KHtpZDoiYnV0dG9u
LXBuZyIsdGl0bGU6IlNhdmUgYXMgUE5HIixpY29uOiJmYS1maWxlIixvbj0KY2xpY2s6ZnVuY3Rp
b24oKXtvLl93YWl0KG8uY2hhcnQsZnVuY3Rpb24oKXtpLmNyZWF0ZVBORyh7JGVsOm8udmlld3Bv
cnRfdmllPQp3LiRlbCx0aXRsZTpvLmNoYXJ0LmdldCgidGl0bGUiKSxlcnJvcjpmdW5jdGlvbihl
KXtvLm1lc3NhZ2UudXBkYXRlKHttZXNzYWc9CmU6ZSxzdGF0dXM6ImRhbmdlciJ9KX19KX0pfX0p
LHUuYWRkTWVudSh7aWQ6ImJ1dHRvbi1zdmciLHRpdGxlOiJTYXZlIGFzIFNWRz0KIixpY29uOiJm
YS1maWxlLXRleHQtbyIsb25jbGljazpmdW5jdGlvbigpe28uX3dhaXQoby5jaGFydCxmdW5jdGlv
bigpe2kuY3JlPQphdGVTVkcoeyRlbDpvLnZpZXdwb3J0X3ZpZXcuJGVsLHRpdGxlOm8uY2hhcnQu
Z2V0KCJ0aXRsZSIpLGVycm9yOmZ1bmN0aW9uKGU9Cil7by5tZXNzYWdlLnVwZGF0ZSh7bWVzc2Fn
ZTplLHN0YXR1czoiZGFuZ2VyIn0pfX0pfSl9fSksdS5hZGRNZW51KHtpZDoiYnV0dD0Kb24tcG5n
Iix0aXRsZToiU2F2ZSBhcyBQREYiLGljb246ImZhLWZpbGUtbyIsb25jbGljazpmdW5jdGlvbigp
e28uYXBwLm1vZGFsPQouc2hvdyh7dGl0bGU6IlNlbmQgY2hhcnQgZGF0YSBmb3IgUERGIGNyZWF0
aW9uIixib2R5OiJHYWxheHkgZG9lcyBub3QgcHJvdmk9CmRlIGludGVncmF0ZWQgUERGIGV4cG9y
dCBzY3JpcHRzLiBZb3UgbWF5IGNsaWNrICdDb250aW51ZScgdG8gY3JlYXRlIHRoZSBQRD0KRiBi
eSB1c2luZyBhIDNyZCBwYXJ0eSBzZXJ2aWNlIChodHRwczovL2V4cG9ydC5oaWdoY2hhcnRzLmNv
bSkuIixidXR0b25zOntDPQphbmNlbDpmdW5jdGlvbigpe28uYXBwLm1vZGFsLmhpZGUoKX0sQ29u
dGludWU6ZnVuY3Rpb24oKXtvLmFwcC5tb2RhbC5oaWRlKCk9CixvLl93YWl0KG8uY2hhcnQsZnVu
Y3Rpb24oKXtpLmNyZWF0ZVBERih7JGVsOm8udmlld3BvcnRfdmlldy4kZWwsdGl0bGU6by5jaD0K
YXJ0LmdldCgidGl0bGUiKSxlcnJvcjpmdW5jdGlvbihlKXtvLm1lc3NhZ2UudXBkYXRlKHttZXNz
YWdlOmUsc3RhdHVzOiJkYW5nPQplciJ9KX19KX0pfX19KX19KSx0aGlzLnBvcnRsZXQ9M0RuZXcg
bi5WaWV3KHtpY29uOiJmYS1iYXItY2hhcnQtbyIsdGl0bGU6IlY9Cmlld3BvcnQiLHNjcm9sbGFi
bGU6ITEsb3BlcmF0aW9uczp7ZWRpdF9idXR0b246bmV3IHQuQnV0dG9uSWNvbih7aWNvbjoiZmEt
ZT0KZGl0Iix0b29sdGlwOiJDdXN0b21pemUgdGhpcyBjaGFydCIsdGl0bGU6IkVkaXRvciIsb25j
bGljazpmdW5jdGlvbigpe28uX3dhPQppdChvLmNoYXJ0LGZ1bmN0aW9uKCl7by5hcHAuZ28oImVk
aXRvciIpfSl9fSkscGljdHVyZV9idXR0b25fbWVudTp1fX0pLHRoaXM9Ci5wb3J0bGV0LmFwcGVu
ZCh0aGlzLm1lc3NhZ2UuJGVsKSx0aGlzLnBvcnRsZXQuYXBwZW5kKHRoaXMudmlld3BvcnRfdmll
dy4kZT0KbCksdGhpcy5zZXRFbGVtZW50KHRoaXMucG9ydGxldC4kZWwpO3ZhciBvPTNEdGhpczt0
aGlzLmNoYXJ0Lm9uKCJjaGFuZ2U6dGl0PQpsZSIsZnVuY3Rpb24oKXtvLl9yZWZyZXNoVGl0bGUo
KX0pfSxzaG93OmZ1bmN0aW9uKCl7dGhpcy4kZWwuc2hvdygpLCQod2luZG89CncpLnRyaWdnZXIo
InJlc2l6ZSIpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy4kZWwuaGlkZSgpfSxfcmVmcmVzaFRpdGxl
OmZ1bmN0aT0Kb24oKXt2YXIgZT0zRHRoaXMuY2hhcnQuZ2V0KCJ0aXRsZSIpO3RoaXMucG9ydGxl
dC50aXRsZShlKX0sX3dhaXQ6ZnVuY3Rpb24oPQplLHQpe3RoaXMuYXBwLmRlZmVycmVkLnJlYWR5
KCk/dCgpOnRoaXMubWVzc2FnZS51cGRhdGUoe21lc3NhZ2U6IllvdXIgY2hhcnQ9CiBpcyBjdXJy
ZW50bHkgYmVpbmcgcHJvY2Vzc2VkLiBQbGVhc2Ugd2FpdCBhbmQgdHJ5IGFnYWluLiJ9KX19KX0p
LGRlZmluZSgibT0KdmMvdWkvdWktdGFicyIsWyJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGUpe3Zh
ciB0PTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wPQp0aW9uc0RlZmF1bHQ6e3RpdGxlX25ldzoi
IixvcGVyYXRpb25zOm51bGwsb25uZXc6bnVsbCxtYXg6bnVsbCxvbmNoYW5nZTpudWw9Cmx9LGlu
aXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy52aXNpYmxlPTNEITEsdGhpcy4kbmF2PTNEbnVsbCx0
aGlzLiRjb250ZW50PQo9M0RudWxsLHRoaXMuZmlyc3RfdGFiPTNEbnVsbCx0aGlzLmN1cnJlbnRf
aWQ9M0RudWxsLHRoaXMub3B0aW9ucz0zRGUubWVyZ2U9Cih0LHRoaXMub3B0aW9uc0RlZmF1bHQp
O3ZhciBuPTNEJCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKTt0aGlzLiRuYXY9Cj0zRG4u
ZmluZCgiLnRhYi1uYXZpZ2F0aW9uIiksdGhpcy4kY29udGVudD0zRG4uZmluZCgiLnRhYi1jb250
ZW50IiksdGhpcy5zZT0KdEVsZW1lbnQobiksdGhpcy5saXN0PTNEe307dmFyIHI9M0R0aGlzO3Ro
aXMub3B0aW9ucy5vcGVyYXRpb25zJiYkLmVhY2godGhpPQpzLm9wdGlvbnMub3BlcmF0aW9ucyxm
dW5jdGlvbihlLHQpe3QuJGVsLnByb3AoImlkIixlKSxyLiRuYXYuZmluZCgiLm9wZXJhdGk9Cm9u
cyIpLmFwcGVuZCh0LiRlbCl9KTtpZih0aGlzLm9wdGlvbnMub25uZXcpe3ZhciBpPTNEJCh0aGlz
Ll90ZW1wbGF0ZV90YWJfbj0KZXcodGhpcy5vcHRpb25zKSk7dGhpcy4kbmF2LmFwcGVuZChpKSxp
LnRvb2x0aXAoe3RpdGxlOiJBZGQgYSBuZXcgdGFiIixwbGFjPQplbWVudDoiYm90dG9tIixjb250
YWluZXI6ci4kZWx9KSxpLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7aS50b29sdGlwKCJoaWRlIik9
CixyLm9wdGlvbnMub25uZXcoKX0pfX0sc2l6ZTpmdW5jdGlvbigpe3JldHVybiBfLnNpemUodGhp
cy5saXN0KX0sY3VycmVudDpmdT0KbmN0aW9uKCl7cmV0dXJuIHRoaXMuJGVsLmZpbmQoIi50YWIt
cGFuZS5hY3RpdmUiKS5hdHRyKCJpZCIpfSxhZGQ6ZnVuY3Rpb24oPQplKXt2YXIgdD0zRHRoaXMs
bj0zRGUuaWQscj0zRCQodGhpcy5fdGVtcGxhdGVfdGFiKGUpKSxpPTNEJCh0aGlzLl90ZW1wbGF0
ZV89CnRhYl9jb250ZW50KGUpKTt0aGlzLmxpc3Rbbl09M0RlLm9uZGVsPyEwOiExLHRoaXMub3B0
aW9ucy5vbm5ldz90aGlzLiRuYXYuZj0KaW5kKCIjbmV3LXRhYiIpLmJlZm9yZShyKTp0aGlzLiRu
YXYuYXBwZW5kKHIpLGkuYXBwZW5kKGUuJGVsKSx0aGlzLiRjb250ZW50PQouYXBwZW5kKGkpLHRo
aXMuc2l6ZSgpPTNEPTNEMSYmKHIuYWRkQ2xhc3MoImFjdGl2ZSIpLGkuYWRkQ2xhc3MoImFjdGl2
ZSIpLHQ9Cmhpcy5maXJzdF90YWI9M0RuKSx0aGlzLm9wdGlvbnMubWF4JiZ0aGlzLnNpemUoKT49
M0R0aGlzLm9wdGlvbnMubWF4JiZ0aGlzLj0KJGVsLmZpbmQoIiNuZXctdGFiIikuaGlkZSgpO2lm
KGUub25kZWwpe3ZhciBzPTNEci5maW5kKCIjZGVsZXRlIik7cy50b29sdGlwPQooe3RpdGxlOiJE
ZWxldGUgdGhpcyB0YWIiLHBsYWNlbWVudDoiYm90dG9tIixjb250YWluZXI6dC4kZWx9KSxzLm9u
KCJjbGljayI9CixmdW5jdGlvbigpe3JldHVybiBzLnRvb2x0aXAoImRlc3Ryb3kiKSx0LiRlbC5m
aW5kKCIudG9vbHRpcCIpLnJlbW92ZSgpLGUubz0KbmRlbCgpLCExfSl9ci5vbigiY2xpY2siLGZ1
bmN0aW9uKHIpe3IucHJldmVudERlZmF1bHQoKSxlLm9uY2xpY2s/ZS5vbmNsaWNrPQooKTp0LnNo
b3cobil9KSx0aGlzLmN1cnJlbnRfaWR8fCh0aGlzLmN1cnJlbnRfaWQ9M0RuKX0sZGVsOmZ1bmN0
aW9uKGUpe3RoaXM9Ci4kZWwuZmluZCgiI3RhYi0iK2UpLnJlbW92ZSgpLHRoaXMuJGVsLmZpbmQo
IiMiK2UpLnJlbW92ZSgpLHRoaXMuZmlyc3RfdGFiPQo9M0Q9M0RlJiYodGhpcy5maXJzdF90YWI9
M0RudWxsKSx0aGlzLmZpcnN0X3RhYiE9M0RudWxsJiZ0aGlzLnNob3codGhpcy5maXI9CnN0X3Rh
YiksdGhpcy5saXN0W2VdJiZkZWxldGUgdGhpcy5saXN0W2VdLHRoaXMuc2l6ZSgpPHRoaXMub3B0
aW9ucy5tYXgmJnRoaT0Kcy4kZWwuZmluZCgiI25ldy10YWIiKS5zaG93KCl9LGRlbFJlbW92YWJs
ZTpmdW5jdGlvbigpe2Zvcih2YXIgZSBpbiB0aGlzLmxpPQpzdCl0aGlzLmRlbChlKX0sc2hvdzpm
dW5jdGlvbihlKXt0aGlzLiRlbC5mYWRlSW4oImZhc3QiKSx0aGlzLnZpc2libGU9M0QhMCw9CmUm
Jih0aGlzLiRlbC5maW5kKCIjdGFiLSIrdGhpcy5jdXJyZW50X2lkKS5yZW1vdmVDbGFzcygiYWN0
aXZlIiksdGhpcy4kZWwuZj0KaW5kKCIjIit0aGlzLmN1cnJlbnRfaWQpLnJlbW92ZUNsYXNzKCJh
Y3RpdmUiKSx0aGlzLiRlbC5maW5kKCIjdGFiLSIrZSkuYWRkPQpDbGFzcygiYWN0aXZlIiksdGhp
cy4kZWwuZmluZCgiIyIrZSkuYWRkQ2xhc3MoImFjdGl2ZSIpLHRoaXMuY3VycmVudF9pZD0zRGU9
CiksdGhpcy5vcHRpb25zLm9uY2hhbmdlJiZ0aGlzLm9wdGlvbnMub25jaGFuZ2UoZSl9LGhpZGU6
ZnVuY3Rpb24oKXt0aGlzLiRlbD0KLmZhZGVPdXQoImZhc3QiKSx0aGlzLnZpc2libGU9M0QhMX0s
aGlkZU9wZXJhdGlvbjpmdW5jdGlvbihlKXt0aGlzLiRuYXYuZmluPQpkKCIjIitlKS5oaWRlKCl9
LHNob3dPcGVyYXRpb246ZnVuY3Rpb24oZSl7dGhpcy4kbmF2LmZpbmQoIiMiK2UpLnNob3coKX0s
c2U9CnRPcGVyYXRpb246ZnVuY3Rpb24oZSx0KXt2YXIgbj0zRHRoaXMuJG5hdi5maW5kKCIjIitl
KTtuLm9mZigiY2xpY2siKSxuLm9uKD0KImNsaWNrIix0KX0sdGl0bGU6ZnVuY3Rpb24oZSx0KXt2
YXIgbj0zRHRoaXMuJGVsLmZpbmQoIiN0YWItdGl0bGUtdGV4dC0iK2UpPQo7cmV0dXJuIHQmJm4u
aHRtbCh0KSxuLmh0bWwoKX0scmV0aXRsZTpmdW5jdGlvbihlKXt2YXIgdD0zRDA7Zm9yKHZhciBu
IGluIHQ9Cmhpcy5saXN0KXRoaXMudGl0bGUobiwrK3QrIjogIitlKX0sX3RlbXBsYXRlOmZ1bmN0
aW9uKGUpe3JldHVybic8ZGl2IGNsYXNzPQo9M0QidWktdGFicyB0YWJiYWJsZSB0YWJzLWxlZnQi
Pjx1bCBpZD0zRCJ0YWItbmF2aWdhdGlvbiIgY2xhc3M9M0QidGFiLW5hdmk9CmdhdGlvbiBuYXYg
bmF2LXRhYnMiPjxkaXYgY2xhc3M9M0Qib3BlcmF0aW9ucyIgc3R5bGU9M0QiZmxvYXQ6IHJpZ2h0
OyBtYXJnaT0Kbi1ib3R0b206IDRweDsiPjwvZGl2PjwvdWw+PGRpdiBpZD0zRCJ0YWItY29udGVu
dCIgY2xhc3M9M0QidGFiLWNvbnRlbnQiLz48PQovZGl2Pid9LF90ZW1wbGF0ZV90YWJfbmV3OmZ1
bmN0aW9uKGUpe3JldHVybic8bGkgaWQ9M0QibmV3LXRhYiI+PGEgaHJlZj0zRCI9CmphdmFzY3Jp
cHQ6dm9pZCgwKTsiPjxpIGNsYXNzPTNEInVpLXRhYnMtYWRkIGZhIGZhLXBsdXMtY2lyY2xlIi8+
JytlLnRpdGxlXz0KbmV3KyI8L2E+IisiPC9saT4ifSxfdGVtcGxhdGVfdGFiOmZ1bmN0aW9uKGUp
e3ZhciB0PTNEJzxsaSBpZD0zRCJ0YWItJytlLmlkPQorJyIgY2xhc3M9M0QidGFiLWVsZW1lbnQi
PicrJzxhIGlkPTNEInRhYi10aXRsZS1saW5rLScrZS5pZCsnIiB0aXRsZT0zRCIiIGg9CnJlZj0z
RCIjJytlLmlkKyciIGRhdGEtb3JpZ2luYWwtdGl0bGU9M0QiIj4nKyc8c3BhbiBpZD0zRCJ0YWIt
dGl0bGUtdGV4dC0nKz0KZS5pZCsnIiBjbGFzcz0zRCJ0YWItdGl0bGUtdGV4dCI+JytlLnRpdGxl
KyI8L3NwYW4+IjtyZXR1cm4gZS5vbmRlbCYmKHQrPTNEPQonPGkgaWQ9M0QiZGVsZXRlIiBjbGFz
cz0zRCJ1aS10YWJzLWRlbGV0ZSBmYSBmYS1taW51cy1jaXJjbGUiLz4nKSx0Kz0zRCI8L2E9Cj48
L2xpPiIsdH0sX3RlbXBsYXRlX3RhYl9jb250ZW50OmZ1bmN0aW9uKGUpe3JldHVybic8ZGl2IGlk
PTNEIicrZS5pZCsnIiBjbD0KYXNzPTNEInRhYi1wYW5lIi8+J319KTtyZXR1cm57Vmlldzp0fX0p
LGRlZmluZSgibXZjL3VpL3VpLXRhYmxlIixbInV0aWxzL3V0PQppbHMiXSxmdW5jdGlvbihlKXt2
YXIgdD0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtyb3c6bnVsbCxyb3dfY291bnQ6MCxvcHRpb249
CnNEZWZhdWx0Ontjb250ZW50OiJObyBjb250ZW50IGF2YWlsYWJsZS4iLG9uY2hhbmdlOm51bGws
b25kYmxjbGljazpudWxsLG9uYz0Kb25maXJtOm51bGwsY2xzOiJ1aS10YWJsZSIsY2xzX3RyOiIi
fSxldmVudHM6e2NsaWNrOiJfb25jbGljayIsZGJsY2xpY2s6Il9vPQpuZGJsY2xpY2sifSxpbml0
aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNE
ZWY9CmF1bHQpO3ZhciBuPTNEJCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKTt0aGlzLiR0
aGVhZD0zRG4uZmluZCgidGhlYWQiKT0KLHRoaXMuJHRib2R5PTNEbi5maW5kKCJ0Ym9keSIpLHRo
aXMuJHRtZXNzYWdlPTNEbi5maW5kKCJ0bWVzc2FnZSIpLHRoaXMuc2V0PQpFbGVtZW50KG4pLHRo
aXMucm93PTNEdGhpcy5fcm93KCl9LGFkZEhlYWRlcjpmdW5jdGlvbihlKXt2YXIgdD0zRCQoIjx0
aD48L3Q9Cmg+Iik7dC5hcHBlbmQoZSksdGhpcy5yb3cuYXBwZW5kKHQpfSxhcHBlbmRIZWFkZXI6
ZnVuY3Rpb24oKXt0aGlzLiR0aGVhZC5hcD0KcGVuZCh0aGlzLnJvdyksdGhpcy5yb3c9M0QkKCI8
dHI+PC90cj4iKX0sYWRkOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0zRCQoIjx0PQpkPjwvdGQ+Iik7
dCYmci5jc3MoIndpZHRoIix0KSxuJiZyLmNzcygidGV4dC1hbGlnbiIsbiksci5hcHBlbmQoZSks
dGhpcy5yb3c9Ci5hcHBlbmQocil9LGFwcGVuZDpmdW5jdGlvbihlLHQpe3RoaXMuX2NvbW1pdChl
LHQsITEpfSxwcmVwZW5kOmZ1bmN0aW9uKGUsdD0KKXt0aGlzLl9jb21taXQoZSx0LCEwKX0sZ2V0
OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLiRlbC5maW5kKCIjIitlKX0sZGVsOmZ1PQpuY3Rpb24o
ZSl7dmFyIHQ9M0R0aGlzLiR0Ym9keS5maW5kKCIjIitlKTt0Lmxlbmd0aD4wJiYodC5yZW1vdmUo
KSx0aGlzLnJvd189CmNvdW50LS0sdGhpcy5fcmVmcmVzaCgpKX0sZGVsQWxsOmZ1bmN0aW9uKCl7
dGhpcy4kdGJvZHkuZW1wdHkoKSx0aGlzLnJvd19jbz0KdW50PTNEMCx0aGlzLl9yZWZyZXNoKCl9
LHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuYmVmb3JlPTNEdGhpcy4kdGJvZHkuZmluZCgiPQouY3Vy
cmVudCIpLmF0dHIoImlkIiksZSE9M0Q9M0R1bmRlZmluZWQmJih0aGlzLiR0Ym9keS5maW5kKCJ0
ciIpLnJlbW92ZUNsYXM9CnMoImN1cnJlbnQiKSxlJiZ0aGlzLiR0Ym9keS5maW5kKCIjIitlKS5h
ZGRDbGFzcygiY3VycmVudCIpKTt2YXIgdD0zRHRoaXMuJD0KdGJvZHkuZmluZCgiLmN1cnJlbnQi
KS5hdHRyKCJpZCIpO3JldHVybiB0PTNEPTNEPTNEdW5kZWZpbmVkP251bGw6KHQhPTNEdGhpPQpz
LmJlZm9yZSYmdGhpcy5vcHRpb25zLm9uY2hhbmdlJiZ0aGlzLm9wdGlvbnMub25jaGFuZ2UoZSks
dCl9LHNpemU6ZnVuY3Rpb249Cigpe3JldHVybiB0aGlzLiR0Ym9keS5maW5kKCJ0ciIpLmxlbmd0
aH0sX2NvbW1pdDpmdW5jdGlvbihlLHQsbil7dGhpcy5kZWwoZT0KKSx0aGlzLnJvdy5hdHRyKCJp
ZCIsZSksbj90aGlzLiR0Ym9keS5wcmVwZW5kKHRoaXMucm93KTp0aGlzLiR0Ym9keS5hcHBlbmQo
PQp0aGlzLnJvdyksdCYmKHRoaXMucm93LmhpZGUoKSx0aGlzLnJvdy5mYWRlSW4oKSksdGhpcy5y
b3c9M0R0aGlzLl9yb3coKSx0aGk9CnMucm93X2NvdW50KyssdGhpcy5fcmVmcmVzaCgpfSxfcm93
OmZ1bmN0aW9uKCl7cmV0dXJuICQoJzx0ciBjbGFzcz0zRCInK3RoaT0Kcy5vcHRpb25zLmNsc190
cisnIj48L3RyPicpfSxfb25jbGljazpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMudmFsdWUoKSxu
PTNEPQokKGUudGFyZ2V0KS5jbG9zZXN0KCJ0ciIpLmF0dHIoImlkIik7biE9M0QiIiYmbiYmdCE9
M0RuJiYodGhpcy5vcHRpb25zLm9uY289Cm5maXJtP3RoaXMub3B0aW9ucy5vbmNvbmZpcm0obik6
dGhpcy52YWx1ZShuKSl9LF9vbmRibGNsaWNrOmZ1bmN0aW9uKGUpe3Zhcj0KIHQ9M0R0aGlzLnZh
bHVlKCk7dCYmdGhpcy5vcHRpb25zLm9uZGJsY2xpY2smJnRoaXMub3B0aW9ucy5vbmRibGNsaWNr
KHQpfSxfPQpyZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5yb3dfY291bnQ9M0Q9M0QwP3RoaXMuJHRt
ZXNzYWdlLnNob3coKTp0aGlzLiR0bWVzc2E9CmdlLmhpZGUoKX0sX3RlbXBsYXRlOmZ1bmN0aW9u
KGUpe3JldHVybic8ZGl2Pjx0YWJsZSBjbGFzcz0zRCInK2UuY2xzKyciPicrIj0KPHRoZWFkPjwv
dGhlYWQ+IisiPHRib2R5PjwvdGJvZHk+IisiPC90YWJsZT4iKyI8dG1lc3NhZ2U+IitlLmNvbnRl
bnQrIjwvdG1lPQpzc2FnZT4iKyI8ZGl2PiJ9fSk7cmV0dXJue1ZpZXc6dH19KSxkZWZpbmUoInBs
dWdpbi92aWV3cy9ncm91cCIsWyJtdmMvdWkvdWk9Ci10YWJsZSIsIm12Yy91aS91aS1taXNjIiwi
dXRpbHMvdXRpbHMiXSxmdW5jdGlvbihlLHQsbil7cmV0dXJuIEJhY2tib25lLlZpZT0Kdy5leHRl
bmQoe2luaXRpYWxpemU6ZnVuY3Rpb24ocixpKXt0aGlzLmFwcD0zRHI7dmFyIHM9M0R0aGlzO3Ro
aXMuY2hhcnQ9M0R0PQpoaXMuYXBwLmNoYXJ0LHRoaXMuZ3JvdXA9M0RpLmdyb3VwLHRoaXMuZ3Jv
dXBfa2V5PTNEbmV3IHQuSW5wdXQoe3BsYWNlaG9sZGU9CnI6IkRhdGEgbGFiZWwiLG9uY2hhbmdl
OmZ1bmN0aW9uKGUpe3MuZ3JvdXAuc2V0KCJrZXkiLGUpfX0pLHRoaXMudGFibGU9M0RuZT0KdyBl
LlZpZXcoe2NvbnRlbnQ6Ik5vIGRhdGEgY29sdW1uLiJ9KTt2YXIgbz0zRCQoIjxkaXYvPiIpO28u
YXBwZW5kKG4ud3JhcCgoPQpuZXcgdC5MYWJlbCh7dGl0bGU6IlByb3ZpZGUgYSBsYWJlbDoifSkp
LiRlbCkpLG8uYXBwZW5kKG4ud3JhcCh0aGlzLmdyb3VwX2s9CmV5LiRlbCkpLG8uYXBwZW5kKG4u
d3JhcCgobmV3IHQuTGFiZWwoe3RpdGxlOiJTZWxlY3QgY29sdW1uczoifSkpLiRlbCkpLG8uYT0K
cHBlbmQobi53cmFwKHRoaXMudGFibGUuJGVsKSksdGhpcy5zZXRFbGVtZW50KG8pO3ZhciBzPTNE
dGhpczt0aGlzLmNoYXJ0Lm9uPQooImNoYW5nZTpkYXRhc2V0X2lkIixmdW5jdGlvbigpe3MuX3Jl
ZnJlc2hUYWJsZSgpfSksdGhpcy5jaGFydC5vbigiY2hhbmdlOnQ9CnlwZSIsZnVuY3Rpb24oKXtz
Ll9yZWZyZXNoVGFibGUoKX0pLHRoaXMuZ3JvdXAub24oImNoYW5nZTprZXkiLGZ1bmN0aW9uKCl7
cz0KLl9yZWZyZXNoR3JvdXBLZXkoKX0pLHRoaXMuZ3JvdXAub24oImNoYW5nZSIsZnVuY3Rpb24o
KXtzLl9yZWZyZXNoR3JvdXAoKX0pPQosdGhpcy5fcmVmcmVzaFRhYmxlKCksdGhpcy5fcmVmcmVz
aEdyb3VwS2V5KCksdGhpcy5fcmVmcmVzaEdyb3VwKCl9LF9yZWZyZXM9CmhUYWJsZTpmdW5jdGlv
bigpe3ZhciBlPTNEdGhpcy5jaGFydC5nZXQoImRhdGFzZXRfaWQiKSxuPTNEdGhpcy5jaGFydC5n
ZXQoIj0KdHlwZSIpO2lmKCFlfHwhbilyZXR1cm47dmFyIHI9M0R0aGlzLGk9M0R0aGlzLmNoYXJ0
LmRlZmluaXRpb247dGhpcy50YWJsZS5kPQplbEFsbCgpO3ZhciBzPTNEe307Zm9yKHZhciBvIGlu
IGkuY29sdW1ucyl7dmFyIHU9M0RpLmNvbHVtbnNbb107aWYoIXUpe2NvbnM9Cm9sZS5kZWJ1Zygi
R3JvdXA6Ol9yZWZyZXNoVGFibGUoKSAtIFNraXBwaW5nIGNvbHVtbiBkZWZpbml0aW9uLiIpO2Nv
bnRpbnVlfT0KdmFyIGE9M0RuZXcgdC5TZWxlY3QuVmlldyh7aWQ6InNlbGVjdF8iK28sd2FpdDoh
MH0pLGY9M0R1LnRpdGxlO3UuaXNfdW5pcXVlPQomJihmKz0zRCImbmJzcDsoYWxsIGRhdGEgbGFi
ZWxzKSIpLHRoaXMudGFibGUuYWRkKGYsIjI1JSIpLHRoaXMudGFibGUuYWRkKGE9Ci4kZWwpLHRo
aXMudGFibGUuYXBwZW5kKG8pLHNbb109M0RhfXRoaXMuY2hhcnQuc3RhdGUoIndhaXQiLCJMb2Fk
aW5nIG1ldGFkYT0KdGEuLi4iKTt2YXIgbD0zRHRoaXMuYXBwLmRlZmVycmVkLnJlZ2lzdGVyKCks
Yz0zRHtpZDplLHN1Y2Nlc3M6ZnVuY3Rpb24oZSl7PQpmb3IodmFyIHQgaW4gcylyLl9hZGRSb3co
dCxlLHMsaS5jb2x1bW5zW3RdKTtyLmNoYXJ0LnN0YXRlKCJvayIsIk1ldGFkYXRhIGk9Cm5pdGlh
bGl6ZWQuLi4iKSxyLmFwcC5kZWZlcnJlZC5kb25lKGwpfX07dGhpcy5hcHAuZGF0YXNldHMucmVx
dWVzdChjKX0sX2FkZD0KUm93OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPTNEdGhpcyxzPTNEci5p
c19sYWJlbCxvPTNEci5pc19hdXRvLHU9M0RyLmlzX251PQptZXJpYyxhPTNEci5pc191bmlxdWUs
Zj0zRHIuaXNfemVybyxsPTNEW10sYz0zRG5bZV07byYmbC5wdXNoKHtsYWJlbDoiQ29sdW09Cm46
IFJvdyBOdW1iZXIiLHZhbHVlOiJhdXRvIn0pLGYmJmwucHVzaCh7bGFiZWw6IkNvbHVtbjogTm9u
ZSIsdmFsdWU6Inplcm8ifT0KKTt2YXIgaD0zRHQubWV0YWRhdGFfY29sdW1uX3R5cGVzO2Zvcih2
YXIgcCBpbiBoKXt2YXIgZD0zRCExO2hbcF09M0Q9M0QiaW50PQoifHxoW3BdPTNEPTNEImZsb2F0
Ij9kPTNEdTpkPTNEcyxkJiZsLnB1c2goe2xhYmVsOiJDb2x1bW46ICIrKHBhcnNlSW50KHApKzE9
CikrIiBbIitoW3BdKyJdIix2YWx1ZTpwfSl9Yy51cGRhdGUobCksYSYmdGhpcy5jaGFydC5ncm91
cHMuZmlyc3QoKSYmdGhpcy5ncj0Kb3VwLnNldChlLHRoaXMuY2hhcnQuZ3JvdXBzLmZpcnN0KCku
Z2V0KGUpKTtpZighYy5leGlzdHModGhpcy5ncm91cC5nZXQoZSkpPQope3ZhciB2PTNEYy5maXJz
dCgpO2NvbnNvbGUuZGVidWcoJ0dyb3VwKCk6Ol9hZGRSb3coKSAtIFN3aXRjaGluZyBtb2RlbCB2
YWw9CnVlIGZyb20gIicrdGhpcy5ncm91cC5nZXQoZSkrJyIgdG8gIicrdisnIi4nKSx0aGlzLmdy
b3VwLnNldChlLHYpfWMudmFsdWUodD0KaGlzLmdyb3VwLmdldChlKSksdGhpcy5ncm91cC5vZmYo
ImNoYW5nZToiK2UpLHRoaXMuZ3JvdXAub24oImNoYW5nZToiK2UsZnVuPQpjdGlvbigpe2MudmFs
dWUoaS5ncm91cC5nZXQoZSkpfSksYy5zZXRPbkNoYW5nZShmdW5jdGlvbih0KXthP2kuY2hhcnQu
Z3JvdXA9CnMuZWFjaChmdW5jdGlvbihuKXtuLnNldChlLHQpfSk6aS5ncm91cC5zZXQoZSx0KSxp
LmNoYXJ0LnNldCgibW9kaWZpZWQiLCEwKT0KfSksYy5zaG93KCl9LF9yZWZyZXNoR3JvdXA6ZnVu
Y3Rpb24oKXt0aGlzLmdyb3VwLnNldCgiZGF0ZSIsbi50aW1lKCkpfSxfcmVmPQpyZXNoR3JvdXBL
ZXk6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMuZ3JvdXAuZ2V0KCJrZXkiKTtlPTNEPTNEPTNEdW5k
ZWZpbmVkJiY9CihlPTNEIiIpLHRoaXMuZ3JvdXBfa2V5LnZhbHVlKGUpfX0pfSksZGVmaW5lKCJw
bHVnaW4vbGlicmFyeS91aS10YWJsZS1mb3JtIj0KLFsibXZjL3VpL3VpLXRhYmxlIiwibXZjL3Vp
L3VpLW1pc2MiLCJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0KPTNEQmFja2Jv
bmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0Ont0aXRsZToiIixjb250ZW50OiIiLG1vZGU6
IiJ9LGxpc3Q6PQpbXSxpbml0aWFsaXplOmZ1bmN0aW9uKHIsaSl7dGhpcy5hcHA9M0RyLHRoaXMu
b3B0aW9ucz0zRG4ubWVyZ2UoaSx0aGlzLm9wdGk9Cm9uc0RlZmF1bHQpLHRoaXMudGFibGVfdGl0
bGU9M0RuZXcgdC5MYWJlbCh7dGl0bGU6dGhpcy5vcHRpb25zLnRpdGxlfSksdGhpcz0KLnRhYmxl
PTNEbmV3IGUuVmlldyh7Y29udGVudDp0aGlzLm9wdGlvbnMuY29udGVudH0pO3ZhciBzPTNEJCgn
PGRpdiBjbGFzcz0KPTNEInVpLXRhYmxlLWZvcm0iLz4nKTt0aGlzLm9wdGlvbnMudGl0bGUmJnMu
YXBwZW5kKG4ud3JhcCh0aGlzLnRhYmxlX3RpdGxlPQouJGVsKSkscy5hcHBlbmQobi53cmFwKHRo
aXMudGFibGUuJGVsKSksdGhpcy5zZXRFbGVtZW50KHMpfSx0aXRsZTpmdW5jdGlvbig9CmUpe3Ro
aXMudGFibGVfdGl0bGUudGl0bGUoZSl9LHVwZGF0ZTpmdW5jdGlvbihlLHQpe3RoaXMudGFibGUu
ZGVsQWxsKCksdGhpcz0KLmxpc3Q9M0RbXTtmb3IodmFyIG4gaW4gZSl0aGlzLl9hZGQoZVtuXS5p
ZHx8bixlW25dLHQpO2Zvcih2YXIgbiBpbiB0aGlzLmxpPQpzdCl0aGlzLmxpc3Rbbl0udHJpZ2dl
cigiY2hhbmdlIil9LF9hZGQ6ZnVuY3Rpb24oZSxuLHIpe3ZhciBpPTNEdGhpcyxzPTNEbnU9Cmxs
LG89M0RuLnR5cGU7c3dpdGNoKG8pe2Nhc2UidGV4dCI6cz0zRG5ldyB0LklucHV0KHtpZDoiZmll
bGQtIitlLHBsYWNlaG9sZD0KZXI6bi5wbGFjZWhvbGRlcix2YWx1ZTpyLmdldChlKSxvbmNoYW5n
ZTpmdW5jdGlvbih0KXtyLnNldChlLHQpfX0pO2JyZWFrO2NhPQpzZSJyYWRpb2J1dHRvbiI6cz0z
RG5ldyB0LlJhZGlvQnV0dG9uLlZpZXcoe2lkOiJmaWVsZC0iK2UsZGF0YTpuLmRhdGEsdmFsdWU9
CjpyLmdldChlKSxvbmNoYW5nZTpmdW5jdGlvbih0KXtyLnNldChlLHQpO3ZhciBzPTNEXy5maW5k
V2hlcmUobi5kYXRhLHt2YWx1ZT0KOnR9KTtpZihzJiZzLm9wZXJhdGlvbnMpe3ZhciBvPTNEcy5v
cGVyYXRpb25zO2Zvcih2YXIgdSBpbiBvLnNob3cpe3ZhciBhPTNEPQpvLnNob3dbdV07aS50YWJs
ZS5nZXQoYSkuc2hvdygpfWZvcih2YXIgdSBpbiBvLmhpZGUpe3ZhciBhPTNEby5oaWRlW3VdO2ku
dGE9CmJsZS5nZXQoYSkuaGlkZSgpfX19fSk7YnJlYWs7Y2FzZSJzZWxlY3QiOnM9M0RuZXcgdC5T
ZWxlY3QuVmlldyh7aWQ6ImZpZWxkLT0KIitlLGRhdGE6bi5kYXRhLHZhbHVlOnIuZ2V0KGUpLG9u
Y2hhbmdlOmZ1bmN0aW9uKHQpe3Iuc2V0KGUsdCk7dmFyIHM9M0RfLmZpPQpuZFdoZXJlKG4uZGF0
YSx7dmFsdWU6dH0pO2lmKHMmJnMub3BlcmF0aW9ucyl7dmFyIG89M0RzLm9wZXJhdGlvbnM7Zm9y
KHZhciA9CnUgaW4gby5zaG93KXt2YXIgYT0zRG8uc2hvd1t1XTtpLnRhYmxlLmdldChhKS5zaG93
KCl9Zm9yKHZhciB1IGluIG8uaGlkZSl7dj0KYXIgYT0zRG8uaGlkZVt1XTtpLnRhYmxlLmdldChh
KS5oaWRlKCl9fX19KTticmVhaztjYXNlImRhdGFzZXQiOnM9M0RuZXcgdC5TPQplbGVjdC5WaWV3
KHtpZDoiZmllbGQtIitlLG9uY2hhbmdlOmZ1bmN0aW9uKHQpe3Iuc2V0KGUsdCl9fSksaS5hcHAu
ZGF0YXNldHM9Ci5vbigiYWxsIixmdW5jdGlvbigpe3ZhciB0PTNEW107aS5hcHAuZGF0YXNldHMu
ZWFjaChmdW5jdGlvbihlKXtlLmdldCgiZGF0YT0KdHlwZV9pZCIpPTNEPTNEbi5kYXRhJiZ0LnB1
c2goe3ZhbHVlOmUuZ2V0KCJpZCIpLGxhYmVsOmUuZ2V0KCJuYW1lIil9KX0pLHMuPQp1cGRhdGUo
dCksci5nZXQoZSl8fHIuc2V0KGUscy5maXJzdCgpKSxzLnZhbHVlKHIuZ2V0KGUpKX0pLGkuYXBw
LmRhdGFzZXRzLnQ9CnJpZ2dlcigiYWxsLmRhdGFzZXRzIik7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6
cz0zRG5ldyB0LlRleHRhcmVhKHtpZDoiZmllbGQtIj0KK2Usb25jaGFuZ2U6ZnVuY3Rpb24oKXty
LnNldChlLHMudmFsdWUoKSl9fSk7YnJlYWs7Y2FzZSJzZXBhcmF0b3IiOnM9M0QkKCI8PQpkaXYv
PiIpO2JyZWFrO2RlZmF1bHQ6cz0zRG5ldyB0LklucHV0KHtpZDoiZmllbGQtIitlLHBsYWNlaG9s
ZGVyOm4ucGxhY2Vob2w9CmRlcix0eXBlOm4udHlwZSxvbmNoYW5nZTpmdW5jdGlvbigpe3Iuc2V0
KGUscy52YWx1ZSgpKX19KX1pZihvIT0zRCJzZXBhcmF0bz0KciIpe3IuZ2V0KGUpfHxyLnNldChl
LG4uaW5pdCkscy52YWx1ZShyLmdldChlKSksdGhpcy5saXN0W2VdPTNEczt2YXIgdT0zRCQoPQoi
PGRpdi8+Iik7dS5hcHBlbmQocy4kZWwpLG4uaW5mbyYmdS5hcHBlbmQoJzxkaXYgY2xhc3M9M0Qi
dWktdGFibGUtZm9ybS1pbmY9Cm8iPicrbi5pbmZvKyI8L2Rpdj4iKSx0aGlzLm9wdGlvbnMuc3R5
bGU9M0Q9M0QiYm9sZCI/KHRoaXMudGFibGUuYWRkKChuZXcgdD0KLkxhYmVsKHt0aXRsZTpuLnRp
dGxlLGNsczoiZm9ybS1sYWJlbCJ9KSkuJGVsKSx0aGlzLnRhYmxlLmFkZCh1KSk6KHRoaXMudGFi
PQpsZS5hZGQoJzxzcGFuIGNsYXNzPTNEInVpLXRhYmxlLWZvcm0tdGl0bGUiPicrbi50aXRsZSsi
PC9zcGFuPiIsIjI1JSIpLHRoaXM9Ci50YWJsZS5hZGQodSkpfWVsc2UgdGhpcy50YWJsZS5hZGQo
JzxkaXYgY2xhc3M9M0QidWktdGFibGUtZm9ybS1zZXBhcmF0b3IiPj0KJytuLnRpdGxlKyI6PGRp
di8+IiksdGhpcy50YWJsZS5hZGQoJCgiPGRpdi8+IikpO3RoaXMudGFibGUuYXBwZW5kKGUpLG4u
aGlkPQplJiZ0aGlzLnRhYmxlLmdldChlKS5oaWRlKCl9fSk7cmV0dXJue1ZpZXc6cn19KSxkZWZp
bmUoInBsdWdpbi92aWV3cy9zZXR0aW49CmdzIixbIm12Yy91aS91aS1taXNjIiwicGx1Z2luL2xp
YnJhcnkvdWktdGFibGUtZm9ybSIsInV0aWxzL3V0aWxzIl0sZnVuY3Rpbz0KbihlLHQsbil7cmV0
dXJuIEJhY2tib25lLlZpZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKGUsbil7dGhpcy5h
cHA9M0RlPQo7dmFyIHI9M0R0aGlzO3RoaXMuY2hhcnQ9M0R0aGlzLmFwcC5jaGFydCx0aGlzLmZv
cm09M0RuZXcgdC5WaWV3KGUse3RpdGxlOiI9CkNvbmZpZ3VyYXRpb24iLGNvbnRlbnQ6IlRoaXMg
Y2hhcnQgdHlwZSBkb2VzIG5vdCBwcm92aWRlIGFueSBvcHRpb25zLiJ9KSx0aD0KaXMuc2V0RWxl
bWVudCh0aGlzLmZvcm0uJGVsKTt2YXIgcj0zRHRoaXM7dGhpcy5jaGFydC5vbigiY2hhbmdlIixm
dW5jdGlvbigpPQp7ci5fcmVmcmVzaCgpfSl9LF9yZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIGU9M0R0
aGlzLmNoYXJ0LmRlZmluaXRpb247aWYoIWUpcmU9CnR1cm47dGhpcy5mb3JtLnRpdGxlKGUuY2F0
ZWdvcnkrIiAtICIrZS50aXRsZSsiOiIpLHRoaXMuZm9ybS51cGRhdGUoZS5zZXR0aT0KbmdzLHRo
aXMuY2hhcnQuc2V0dGluZ3MpfX0pfSksZGVmaW5lKCJwbHVnaW4vdmlld3MvdHlwZXMiLFsidXRp
bHMvdXRpbHMiLCJtPQp2Yy91aS91aS1taXNjIl0sZnVuY3Rpb24oZSx0KXtyZXR1cm4gQmFja2Jv
bmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0Ons9Cm9uY2hhbmdlOm51bGwsb25kYmxjbGlj
azpudWxsfSxldmVudHM6e2NsaWNrOiJfb25jbGljayIsZGJsY2xpY2s6Il9vbmRibGNsaT0KY2si
fSxpbml0aWFsaXplOmZ1bmN0aW9uKG4scil7dmFyIGk9M0R0aGlzO3RoaXMuYXBwPTNEbix0aGlz
Lm9wdGlvbnM9M0RlLm1lPQpyZ2Uocix0aGlzLm9wdGlvbnNEZWZhdWx0KTt2YXIgcz0zRCQoJzxk
aXYgY2xhc3M9M0QiY2hhcnRzLWdyaWQiLz4nKTtzLmFwcGU9Cm5kKGUud3JhcCgobmV3IHQuTGFi
ZWwoe3RpdGxlOiJIb3cgbWFueSBkYXRhIHBvaW50cyB3b3VsZCB5b3UgbGlrZSB0byBhbmFseT0K
emU/In0pKS4kZWwpKSx0aGlzLmxpYnJhcnk9M0RuZXcgdC5SYWRpb0J1dHRvbi5WaWV3KHtkYXRh
Olt7bGFiZWw6IkZldyAoPDUwPQowKSIsdmFsdWU6InNtYWxsIn0se2xhYmVsOiJTb21lICg8MTBr
KSIsdmFsdWU6Im1lZGl1bSJ9LHtsYWJlbDoiTWFueSAoPjEwayk9CiIsdmFsdWU6ImxhcmdlIn1d
LG9uY2hhbmdlOmZ1bmN0aW9uKGUpe2kuX2ZpbHRlcihlKX19KSxzLmFwcGVuZChlLndyYXAodGhp
cz0KLmxpYnJhcnkuJGVsKSksdGhpcy5zZXRFbGVtZW50KHMpLHRoaXMuX3JlbmRlcigpLHRoaXMu
bGlicmFyeS52YWx1ZSgic21hbGwiPQopLHRoaXMubGlicmFyeS50cmlnZ2VyKCJjaGFuZ2UiKX0s
dmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLiRlbC5maW5kKCI9Ci5jdXJyZW50IikuYXR0
cigiaWQiKTtlIT0zRD0zRHVuZGVmaW5lZCYmKHRoaXMuJGVsLmZpbmQoIi5jdXJyZW50IikucmVt
b3ZlQz0KbGFzcygiY3VycmVudCIpLHRoaXMuJGVsLmZpbmQoIiMiK2UpLmFkZENsYXNzKCJjdXJy
ZW50IikpO3ZhciBuPTNEdGhpcy4kZWwuPQpmaW5kKCIuY3VycmVudCIpLmF0dHIoImlkIik7cmV0
dXJuIG49M0Q9M0Q9M0R1bmRlZmluZWQ/bnVsbDoobiE9M0R0JiZ0aGlzLm89CnB0aW9ucy5vbmNo
YW5nZSYmdGhpcy5vcHRpb25zLm9uY2hhbmdlKGUpLG4pfSxfZmlsdGVyOmZ1bmN0aW9uKGUpe3Ro
aXMuJGVsLj0KZmluZCgiLmhlYWRlciIpLmhpZGUoKTt2YXIgdD0zRHRoaXMuYXBwLnR5cGVzLmF0
dHJpYnV0ZXM7Zm9yKHZhciBuIGluIHQpe3ZhPQpyIHI9M0R0W25dLGk9M0R0aGlzLiRlbC5maW5k
KCIjIituKSxzPTNEdGhpcy4kZWwuZmluZCgiI3R5cGVzLWhlYWRlci0iK3RoaXM9Ci5jYXRlZ29y
aWVzX2luZGV4W3IuY2F0ZWdvcnldKSxvPTNEci5rZXl3b3Jkc3x8IiI7by5pbmRleE9mKGUpPj0z
RDA/KGkuc2hvdz0KKCkscy5zaG93KCkpOmkuaGlkZSgpfX0sX3JlbmRlcjpmdW5jdGlvbigpe3Ro
aXMuY2F0ZWdvcmllcz0zRHt9LHRoaXMuY2F0ZWdvPQpyaWVzX2luZGV4PTNEe307dmFyIGU9M0Qw
LHQ9M0R0aGlzLmFwcC50eXBlcy5hdHRyaWJ1dGVzO2Zvcih2YXIgbiBpbiB0KXt2YXI9CiByPTNE
dFtuXSxpPTNEci5jYXRlZ29yeTt0aGlzLmNhdGVnb3JpZXNbaV18fCh0aGlzLmNhdGVnb3JpZXNb
aV09M0R7fSx0aGlzLj0KY2F0ZWdvcmllc19pbmRleFtpXT0zRGUrKyksdGhpcy5jYXRlZ29yaWVz
W2ldW25dPTNEcn1mb3IodmFyIGkgaW4gdGhpcy5jYXRlPQpnb3JpZXMpe3ZhciBzPTNEJCgnPGRp
diBzdHlsZT0zRCJjbGVhcjogYm90aDsiLz4nKTtzLmFwcGVuZCh0aGlzLl90ZW1wbGF0ZV89Cmhl
YWRlcih7aWQ6InR5cGVzLWhlYWRlci0iK3RoaXMuY2F0ZWdvcmllc19pbmRleFtpXSx0aXRsZTpp
fSkpO2Zvcih2YXIgbiBpbj0KIHRoaXMuY2F0ZWdvcmllc1tpXSl7dmFyIHI9M0R0aGlzLmNhdGVn
b3JpZXNbaV1bbl0sbz0zRHIudGl0bGUrIiAoIityLmxpYnJhPQpyeSsiKSI7ci56b29tYWJsZSYm
KG89M0QnPHNwYW4gY2xhc3M9M0QiZmEgZmEtc2VhcmNoLXBsdXMiLz4nK28pLHMuYXBwZW5kKHQ9
Cmhpcy5fdGVtcGxhdGVfaXRlbSh7aWQ6bix0aXRsZTpvLHVybDpjb25maWcuYXBwX3Jvb3QrImNo
YXJ0cy8iK3RoaXMuYXBwLmNoYT0KcnRQYXRoKG4pKyIvbG9nby5wbmcifSkpfXRoaXMuJGVsLmFw
cGVuZChzKX19LF9vbmNsaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PTNEPQp0aGlzLnZhbHVlKCksbj0z
RCQoZS50YXJnZXQpLmNsb3Nlc3QoIi5pdGVtIikuYXR0cigiaWQiKTtuIT0zRCIiJiZuJiZ0IT0z
RG49CiYmdGhpcy52YWx1ZShuKX0sX29uZGJsY2xpY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlz
LnZhbHVlKCk7dCYmdGhpcy5vcHRpbz0KbnMub25kYmxjbGljayYmdGhpcy5vcHRpb25zLm9uZGJs
Y2xpY2sodCl9LF90ZW1wbGF0ZV9oZWFkZXI6ZnVuY3Rpb24oZSl7cmV0PQp1cm4nPGRpdiBpZD0z
RCInK2UuaWQrJyIgY2xhc3M9M0QiaGVhZGVyIj4nKyImYnVsbDsgIitlLnRpdGxlKyI8ZGl2PiJ9
LF90ZW09CnBsYXRlX2l0ZW06ZnVuY3Rpb24oZSl7cmV0dXJuJzxkaXYgaWQ9M0QiJytlLmlkKyci
IGNsYXNzPTNEIml0ZW0iPicrJzxpbWcgYz0KbGFzcz0zRCJpbWFnZSIgc3JjPTNEIicrZS51cmwr
JyI+JysnPGRpdiBjbGFzcz0zRCJ0aXRsZSI+JytlLnRpdGxlKyI8L2Rpdj4iPQorIjxkaXY+In19
KX0pLGRlZmluZSgicGx1Z2luL3ZpZXdzL2VkaXRvciIsWyJtdmMvdWkvdWktdGFicyIsIm12Yy91
aS91aS1taXM9CmMiLCJtdmMvdWkvdWktcG9ydGxldCIsInV0aWxzL3V0aWxzIiwicGx1Z2luL21v
ZGVscy9jaGFydCIsInBsdWdpbi9tb2RlbHMvZz0Kcm91cCIsInBsdWdpbi92aWV3cy9ncm91cCIs
InBsdWdpbi92aWV3cy9zZXR0aW5ncyIsInBsdWdpbi92aWV3cy90eXBlcyJdLGZ1PQpuY3Rpb24o
ZSx0LG4scixpLHMsbyx1LGEpe3JldHVybiBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7aW5pdGlhbGl6
ZTpmdW5jdGlvbig9Cmkscyl7dmFyIG89M0R0aGlzO3RoaXMuYXBwPTNEaSx0aGlzLmNoYXJ0PTNE
dGhpcy5hcHAuY2hhcnQsdGhpcy5tZXNzYWdlPTNEbj0KZXcgdC5NZXNzYWdlLHRoaXMucG9ydGxl
dD0zRG5ldyBuLlZpZXcoe2ljb246ImZhLWJhci1jaGFydC1vIix0aXRsZToiRWRpdG9yPQoiLG9w
ZXJhdGlvbnM6e3NhdmU6bmV3IHQuQnV0dG9uSWNvbih7aWNvbjoiZmEtc2F2ZSIsdG9vbHRpcDoi
RHJhdyBDaGFydCIsdGk9CnRsZToiRHJhdyIsb25jbGljazpmdW5jdGlvbigpe28uX3NhdmVDaGFy
dCgpfX0pLGJhY2s6bmV3IHQuQnV0dG9uSWNvbih7aWNvbj0KOiJmYS1jYXJldC1sZWZ0Iix0b29s
dGlwOiJSZXR1cm4gdG8gVmlld2VyIix0aXRsZToiQ2FuY2VsIixvbmNsaWNrOmZ1bmN0aW9uPQoo
KXtvLmFwcC5nbygidmlld2VyIiksby5hcHAuc3RvcmFnZS5sb2FkKCl9fSl9fSksdGhpcy50eXBl
cz0zRG5ldyBhKGkse29uY2g9CmFuZ2U6ZnVuY3Rpb24oZSl7dmFyIHQ9M0RvLmFwcC50eXBlcy5n
ZXQoZSk7dHx8Y29uc29sZS5kZWJ1ZygiRkFJTEVEIC0gRWRpdD0Kb3I6Om9uY2hhbmdlKCkgLSBD
aGFydCB0eXBlIG5vdCBzdXBwb3J0ZWQuIiksby5jaGFydC5kZWZpbml0aW9uPTNEdCxvLmNoYXJ0
PQouc2V0dGluZ3MuY2xlYXIoKSxvLmNoYXJ0LnNldCh7dHlwZTplfSksby5jaGFydC5zZXQoIm1v
ZGlmaWVkIiwhMCksY29uc29sZS49CmRlYnVnKCJFZGl0b3I6Om9uY2hhbmdlKCkgLSBTd2l0Y2hl
ZCBjaGFydCB0eXBlLiIpfSxvbmRibGNsaWNrOmZ1bmN0aW9uKGUpez0Kby5fc2F2ZUNoYXJ0KCl9
fSksdGhpcy50YWJzPTNEbmV3IGUuVmlldyh7dGl0bGVfbmV3OiJBZGQgRGF0YSIsb25uZXc6ZnVu
Y3RpPQpvbigpe3ZhciBlPTNEby5fYWRkR3JvdXBNb2RlbCgpO28udGFicy5zaG93KGUuaWQpfX0p
LHRoaXMudGl0bGU9M0RuZXcgdC5JbnA9CnV0KHtwbGFjZWhvbGRlcjoiQ2hhcnQgdGl0bGUiLG9u
Y2hhbmdlOmZ1bmN0aW9uKCl7by5jaGFydC5zZXQoInRpdGxlIixvLnRpdD0KbGUudmFsdWUoKSl9
fSk7dmFyIGY9M0QkKCI8ZGl2Lz4iKTtmLmFwcGVuZChyLndyYXAoKG5ldyB0LkxhYmVsKHt0aXRs
ZToiUHJvPQp2aWRlIGEgY2hhcnQgdGl0bGU6In0pKS4kZWwpKSxmLmFwcGVuZChyLndyYXAodGhp
cy50aXRsZS4kZWwpKSxmLmFwcGVuZChyLnc9CnJhcCh0aGlzLnR5cGVzLiRlbCkpLHRoaXMudGFi
cy5hZGQoe2lkOiJtYWluIix0aXRsZToiU3RhcnQiLCRlbDpmfSksdGhpcy5zZT0KdHRpbmdzPTNE
bmV3IHUodGhpcy5hcHApLHRoaXMudGFicy5hZGQoe2lkOiJzZXR0aW5ncyIsdGl0bGU6IkNvbmZp
Z3VyYXRpb24iPQosJGVsOnRoaXMuc2V0dGluZ3MuJGVsfSksdGhpcy5wb3J0bGV0LmFwcGVuZCh0
aGlzLm1lc3NhZ2UuJGVsKSx0aGlzLnBvcnRsZXQ9Ci5hcHBlbmQodGhpcy50YWJzLiRlbCksdGhp
cy5zZXRFbGVtZW50KHRoaXMucG9ydGxldC4kZWwpLHRoaXMudGFicy5oaWRlT3Blcj0KYXRpb24o
ImJhY2siKTt2YXIgbz0zRHRoaXM7dGhpcy5jaGFydC5vbigiY2hhbmdlOnRpdGxlIixmdW5jdGlv
bihlKXtvLl9yZWZyPQplc2hUaXRsZSgpfSksdGhpcy5jaGFydC5vbigiY2hhbmdlOnR5cGUiLGZ1
bmN0aW9uKGUpe28udHlwZXMudmFsdWUoZS5nZXQoInQ9CnlwZSIpKX0pLHRoaXMuY2hhcnQub24o
InJlc2V0IixmdW5jdGlvbihlKXtvLl9yZXNldENoYXJ0KCl9KSx0aGlzLmFwcC5jaGFydD0KLm9u
KCJyZWRyYXciLGZ1bmN0aW9uKGUpe28ucG9ydGxldC5zaG93T3BlcmF0aW9uKCJiYWNrIil9KSx0
aGlzLmFwcC5jaGFydC5nPQpyb3Vwcy5vbigiYWRkIixmdW5jdGlvbihlKXtvLl9hZGRHcm91cChl
KX0pLHRoaXMuYXBwLmNoYXJ0Lmdyb3Vwcy5vbigicmVtb3Y9CmUiLGZ1bmN0aW9uKGUpe28uX3Jl
bW92ZUdyb3VwKGUpfSksdGhpcy5hcHAuY2hhcnQuZ3JvdXBzLm9uKCJyZXNldCIsZnVuY3Rpbz0K
bihlKXtvLl9yZW1vdmVBbGxHcm91cHMoKX0pLHRoaXMuYXBwLmNoYXJ0Lmdyb3Vwcy5vbigiY2hh
bmdlOmtleSIsZnVuY3Rpb24oPQplKXtvLl9yZWZyZXNoR3JvdXBLZXkoKX0pLHRoaXMuX3Jlc2V0
Q2hhcnQoKX0sc2hvdzpmdW5jdGlvbigpe3RoaXMuJGVsLnNob3c9CigpfSxoaWRlOmZ1bmN0aW9u
KCl7dGhpcy4kZWwuaGlkZSgpfSxfcmVmcmVzaFRpdGxlOmZ1bmN0aW9uKCl7dmFyIGU9M0R0aGlz
Lj0KY2hhcnQuZ2V0KCJ0aXRsZSIpO3RoaXMucG9ydGxldC50aXRsZShlKSx0aGlzLnRpdGxlLnZh
bHVlKGUpfSxfcmVmcmVzaEdyb3VwPQpLZXk6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMsdD0zRDA7
dGhpcy5jaGFydC5ncm91cHMuZWFjaChmdW5jdGlvbihuKXt2YXIgcj0KPTNEbi5nZXQoImtleSIs
IiIpO3I9M0Q9M0QiIiYmKHI9M0QiRGF0YSBsYWJlbCIpLGUudGFicy50aXRsZShuLmlkLCsrdCsi
OiAiPQorcil9KX0sX2FkZEdyb3VwTW9kZWw6ZnVuY3Rpb24oKXt2YXIgZT0zRG5ldyBzKHtpZDpy
LnV1aWQoKX0pO3JldHVybiB0aGlzLmM9CmhhcnQuZ3JvdXBzLmFkZChlKSxlfSxfYWRkR3JvdXA6
ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLG49M0RuZXcgbyh0aGlzLmFwcD0KLHtncm91cDplfSk7
dGhpcy50YWJzLmFkZCh7aWQ6ZS5pZCwkZWw6bi4kZWwsb25kZWw6ZnVuY3Rpb24oKXt0LmNoYXJ0
Lmdyb3VwPQpzLnJlbW92ZShlLmlkKX19KSx0aGlzLl9yZWZyZXNoR3JvdXBLZXkoKSx0aGlzLmNo
YXJ0LnNldCgibW9kaWZpZWQiLCEwKX0sX3I9CmVtb3ZlR3JvdXA6ZnVuY3Rpb24oZSl7dGhpcy50
YWJzLmRlbChlLmlkKSx0aGlzLl9yZWZyZXNoR3JvdXBLZXkoKSx0aGlzLmNoYT0KcnQuc2V0KCJt
b2RpZmllZCIsITApfSxfcmVtb3ZlQWxsR3JvdXBzOmZ1bmN0aW9uKGUpe3RoaXMudGFicy5kZWxS
ZW1vdmFibGUoPQopfSxfcmVzZXRDaGFydDpmdW5jdGlvbigpe3RoaXMuY2hhcnQuc2V0KCJpZCIs
ci51dWlkKCkpLHRoaXMuY2hhcnQuc2V0KCJ0eXA9CmUiLCJudmQzX2JhciIpLHRoaXMuY2hhcnQu
c2V0KCJkYXRhc2V0X2lkIix0aGlzLmFwcC5vcHRpb25zLmNvbmZpZy5kYXRhc2V0Xz0KaWQpLHRo
aXMuY2hhcnQuc2V0KCJ0aXRsZSIsIk5ldyBDaGFydCIpLHRoaXMucG9ydGxldC5oaWRlT3BlcmF0
aW9uKCJiYWNrIil9PQosX3NhdmVDaGFydDpmdW5jdGlvbigpe3RoaXMuY2hhcnQuc2V0KHt0eXBl
OnRoaXMudHlwZXMudmFsdWUoKSx0aXRsZTp0aGlzLnQ9Cml0bGUudmFsdWUoKSxkYXRlOnIudGlt
ZSgpfSk7aWYodGhpcy5jaGFydC5ncm91cHMubGVuZ3RoPTNEPTNEMCl7dGhpcy5tZXNzYT0KZ2Uu
dXBkYXRlKHttZXNzYWdlOiJQbGVhc2Ugc2VsZWN0IGRhdGEgY29sdW1ucyBiZWZvcmUgZHJhd2lu
ZyB0aGUgY2hhcnQuIn0pPQo7dmFyIGU9M0R0aGlzLl9hZGRHcm91cE1vZGVsKCk7dGhpcy50YWJz
LnNob3coZS5pZCk7cmV0dXJufXZhciB0PTNEdGhpcyxuPQo9M0QhMCxpPTNEdGhpcy5jaGFydC5k
ZWZpbml0aW9uO3RoaXMuY2hhcnQuZ3JvdXBzLmVhY2goZnVuY3Rpb24oZSl7aWYoIW4pcmU9CnR1
cm47Zm9yKHZhciByIGluIGkuY29sdW1ucylpZihlLmF0dHJpYnV0ZXNbcl09M0Q9M0QibnVsbCIp
e3QubWVzc2FnZS51cGRhdD0KZSh7c3RhdHVzOiJkYW5nZXIiLG1lc3NhZ2U6IlRoaXMgY2hhcnQg
dHlwZSByZXF1aXJlcyBjb2x1bW4gdHlwZXMgbm90IGZvdW5kPQogaW4geW91ciB0YWJ1bGFyIGZp
bGUuIn0pLHQudGFicy5zaG93KGUuaWQpLG49M0QhMTtyZXR1cm59fSk7aWYoIW4pcmV0dXJuO3Q9
Cmhpcy5hcHAuZ28oInZpZXdlciIpO3ZhciB0PTNEdGhpczt0aGlzLmFwcC5kZWZlcnJlZC5leGVj
dXRlKGZ1bmN0aW9uKCl7dC5hcD0KcC5zdG9yYWdlLnNhdmUoKSx0LmNoYXJ0LnRyaWdnZXIoInJl
ZHJhdyIpfSl9fSl9KSxkZWZpbmUoInBsdWdpbi9tb2RlbHMvY29uPQpmaWciLFtdLGZ1bmN0aW9u
KCl7cmV0dXJuIEJhY2tib25lLk1vZGVsLmV4dGVuZCh7ZGVmYXVsdHM6e3F1ZXJ5X2xpbWl0OjFl
NCw9CnF1ZXJ5X3RpbWVvdXQ6MTAwfX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL2Zvcm1zL2Rl
ZmF1bHQiLFtdLGZ1bmN0aW9uKCl7cj0KZXR1cm57dGl0bGU6IiIsY2F0ZWdvcnk6IiIsbGlicmFy
eToiIix0YWc6IiIsa2V5d29yZHM6IiIsc2V0dGluZ3M6e3NlcGFyYXRvPQpyX3g6e3RpdGxlOiJY
IGF4aXMiLHR5cGU6InNlcGFyYXRvciJ9LHhfYXhpc19sYWJlbDp7dGl0bGU6IkF4aXMgbGFiZWwi
LGluZm89CjoiUHJvdmlkZSBhIGxhYmVsIGZvciB0aGUgYXhpcy4iLHR5cGU6InRleHQiLGluaXQ6
IlgtYXhpcyIscGxhY2Vob2xkZXI6IkF4aT0KcyBsYWJlbCJ9LHhfYXhpc190eXBlOnt0aXRsZToi
QXhpcyB2YWx1ZSB0eXBlIixpbmZvOiJTZWxlY3QgdGhlIHZhbHVlIHR5cGUgPQpvZiB0aGUgYXhp
cy4iLHR5cGU6InNlbGVjdCIsaW5pdDoiYXV0byIsZGF0YTpbe2xhYmVsOiItLSBEbyBub3Qgc2hv
dyB2YWx1ZXM9CiAtLSIsdmFsdWU6ImhpZGUiLG9wZXJhdGlvbnM6e2hpZGU6WyJ4X2F4aXNfcHJl
Y2lzaW9uIl19fSx7bGFiZWw6IkF1dG8iLHZhbD0KdWU6ImF1dG8iLG9wZXJhdGlvbnM6e2hpZGU6
WyJ4X2F4aXNfcHJlY2lzaW9uIl19fSx7bGFiZWw6IkZsb2F0Iix2YWx1ZToiZiIsPQpvcGVyYXRp
b25zOntzaG93OlsieF9heGlzX3ByZWNpc2lvbiJdfX0se2xhYmVsOiJFeHBvbmVudCIsdmFsdWU6
ImUiLG9wZXJhdGk9Cm9uczp7c2hvdzpbInhfYXhpc19wcmVjaXNpb24iXX19LHtsYWJlbDoiSW50
ZWdlciIsdmFsdWU6ImQiLG9wZXJhdGlvbnM6e2hpZD0KZTpbInhfYXhpc19wcmVjaXNpb24iXX19
LHtsYWJlbDoiUGVyY2VudGFnZSIsdmFsdWU6InAiLG9wZXJhdGlvbnM6e3Nob3c6WyJ4PQpfYXhp
c19wcmVjaXNpb24iXX19LHtsYWJlbDoiU0ktcHJlZml4Iix2YWx1ZToicyIsb3BlcmF0aW9uczp7
aGlkZTpbInhfYXhpc189CnByZWNpc2lvbiJdfX1dfSx4X2F4aXNfcHJlY2lzaW9uOnt0aXRsZToi
QXhpcyB0aWNrIGZvcm1hdCIsaW5mbzoiU2VsZWN0IHRoZT0KIHRpY2sgZm9ybWF0IGZvciB0aGUg
YXhpcy4iLHR5cGU6InNlbGVjdCIsaW5pdDoiMSIsZGF0YTpbe2xhYmVsOiIwLjAwMDAxIix2PQph
bHVlOiI1In0se2xhYmVsOiIwLjAwMDEiLHZhbHVlOiI0In0se2xhYmVsOiIwLjAwMSIsdmFsdWU6
IjMifSx7bGFiZWw6IjAuMDE9CiIsdmFsdWU6IjIifSx7bGFiZWw6IjAuMSIsdmFsdWU6IjEifSx7
bGFiZWw6IjEiLHZhbHVlOiIwIn1dfSxzZXBhcmF0b3JfeTp7dD0KaXRsZToiWSBheGlzIix0eXBl
OiJzZXBhcmF0b3IifSx5X2F4aXNfbGFiZWw6e3RpdGxlOiJBeGlzIGxhYmVsIixpbmZvOiJQcm92
PQppZGUgYSBsYWJlbCBmb3IgdGhlIGF4aXMuIix0eXBlOiJ0ZXh0Iixpbml0OiJZLWF4aXMiLHBs
YWNlaG9sZGVyOiJBeGlzIGxhYmU9CmwifSx5X2F4aXNfdHlwZTp7dGl0bGU6IkF4aXMgdmFsdWUg
dHlwZSIsaW5mbzoiU2VsZWN0IHRoZSB2YWx1ZSB0eXBlIG9mIHRoZT0KIGF4aXMuIix0eXBlOiJz
ZWxlY3QiLGluaXQ6ImF1dG8iLGRhdGE6W3tsYWJlbDoiLS0gRG8gbm90IHNob3cgdmFsdWVzIC0t
Iix2PQphbHVlOiJoaWRlIixvcGVyYXRpb25zOntoaWRlOlsieV9heGlzX3ByZWNpc2lvbiJdfX0s
e2xhYmVsOiJBdXRvIix2YWx1ZToiYXU9CnRvIixvcGVyYXRpb25zOntoaWRlOlsieV9heGlzX3By
ZWNpc2lvbiJdfX0se2xhYmVsOiJGbG9hdCIsdmFsdWU6ImYiLG9wZXJhdD0KaW9uczp7c2hvdzpb
InlfYXhpc19wcmVjaXNpb24iXX19LHtsYWJlbDoiRXhwb25lbnQiLHZhbHVlOiJlIixvcGVyYXRp
b25zOntzPQpob3c6WyJ5X2F4aXNfcHJlY2lzaW9uIl19fSx7bGFiZWw6IkludGVnZXIiLHZhbHVl
OiJkIixvcGVyYXRpb25zOntoaWRlOlsieV89CmF4aXNfcHJlY2lzaW9uIl19fSx7bGFiZWw6IlBl
cmNlbnRhZ2UiLHZhbHVlOiJwIixvcGVyYXRpb25zOntzaG93OlsieV9heGlzXz0KcHJlY2lzaW9u
Il19fSx7bGFiZWw6IlNJLXByZWZpeCIsdmFsdWU6InMiLG9wZXJhdGlvbnM6e2hpZGU6WyJ5X2F4
aXNfcHJlY2lzPQppb24iXX19XX0seV9heGlzX3ByZWNpc2lvbjp7dGl0bGU6IkF4aXMgdGljayBm
b3JtYXQiLGluZm86IlNlbGVjdCB0aGUgdGljayA9CmZvcm1hdCBmb3IgdGhlIGF4aXMuIix0eXBl
OiJzZWxlY3QiLGluaXQ6IjEiLGRhdGE6W3tsYWJlbDoiMC4wMDAwMSIsdmFsdWU6Ij0KNSJ9LHts
YWJlbDoiMC4wMDAxIix2YWx1ZToiNCJ9LHtsYWJlbDoiMC4wMDEiLHZhbHVlOiIzIn0se2xhYmVs
OiIwLjAxIix2YWx1PQplOiIyIn0se2xhYmVsOiIwLjEiLHZhbHVlOiIxIn0se2xhYmVsOiIxIix2
YWx1ZToiMCJ9XX0sc2VwYXJhdG9yX2xlZ2VuZDp7dGk9CnRsZToiT3RoZXJzIix0eXBlOiJzZXBh
cmF0b3IifSxzaG93X2xlZ2VuZDp7dGl0bGU6IlNob3cgbGVnZW5kIixpbmZvOiJXb3VsZD0KIHlv
dSBsaWtlIHRvIGFkZCBhIGxlZ2VuZD8iLHR5cGU6InJhZGlvYnV0dG9uIixpbml0OiJ0cnVlIixk
YXRhOlt7bGFiZWw6IlllPQpzIix2YWx1ZToidHJ1ZSJ9LHtsYWJlbDoiTm8iLHZhbHVlOiJmYWxz
ZSJ9XX0sdXNlX3BhbmVsczp7dGl0bGU6IlVzZSBtdWx0aS09CnBhbmVscyIsaW5mbzoiV291bGQg
eW91IGxpa2UgdG8gc2VwYXJhdGUgeW91ciBkYXRhIGludG8gaW5kaXZpZHVhbCBwYW5lbHM/Ij0K
LHR5cGU6InJhZGlvYnV0dG9uIixpbml0OiJmYWxzZSIsZGF0YTpbe2xhYmVsOiJZZXMiLHZhbHVl
OiJ0cnVlIn0se2xhYmVsOiJOPQpvIix2YWx1ZToiZmFsc2UifV19fX19KSxmdW5jdGlvbigpe2Z1
bmN0aW9uIHQoZSx0KXtyZXR1cm4obmV3IERhdGUodCxlKzEsMCk9CikuZ2V0RGF0ZSgpfWZ1bmN0
aW9uIG4oZSx0LG4pe3JldHVybiBmdW5jdGlvbihyLGkscyl7dmFyIG89M0RlKHIpLHU9M0RbXTtv
PD0KciYmdChvKTtpZihzPjEpd2hpbGUobzxpKXt2YXIgYT0zRG5ldyBEYXRlKCtvKTtuKGEpJXM9
M0Q9M0Q9M0QwJiZ1LnB1c2goYSksPQp0KG8pfWVsc2Ugd2hpbGUobzxpKXUucHVzaChuZXcgRGF0
ZSgrbykpLHQobyk7cmV0dXJuIHV9fXZhciBlPTNEd2luZG93Lm52fHw9Cnt9O2UudmVyc2lvbj0z
RCIxLjEuMTViIixlLmRldj0zRCEwLHdpbmRvdy5udj0zRGUsZS50b29sdGlwPTNEZS50b29sdGlw
fHx7fT0KLGUudXRpbHM9M0RlLnV0aWxzfHx7fSxlLm1vZGVscz0zRGUubW9kZWxzfHx7fSxlLmNo
YXJ0cz0zRHt9LGUuZ3JhcGhzPTNEW10sPQplLmxvZ3M9M0R7fSxlLmRpc3BhdGNoPTNEZDMuZGlz
cGF0Y2goInJlbmRlcl9zdGFydCIsInJlbmRlcl9lbmQiKSxlLmRldiYmKGU9Ci5kaXNwYXRjaC5v
bigicmVuZGVyX3N0YXJ0IixmdW5jdGlvbih0KXtlLmxvZ3Muc3RhcnRUaW1lPTNEKyhuZXcgRGF0
ZSl9KSxlLj0KZGlzcGF0Y2gub24oInJlbmRlcl9lbmQiLGZ1bmN0aW9uKHQpe2UubG9ncy5lbmRU
aW1lPTNEKyhuZXcgRGF0ZSksZS5sb2dzLnRvPQp0YWxUaW1lPTNEZS5sb2dzLmVuZFRpbWUtZS5s
b2dzLnN0YXJ0VGltZSxlLmxvZygidG90YWwiLGUubG9ncy50b3RhbFRpbWUpfSk9CiksZS5sb2c9
M0RmdW5jdGlvbigpe2lmKGUuZGV2JiZjb25zb2xlLmxvZyYmY29uc29sZS5sb2cuYXBwbHkpY29u
c29sZS5sb2cuYT0KcHBseShjb25zb2xlLGFyZ3VtZW50cyk7ZWxzZSBpZihlLmRldiYmdHlwZW9m
IGNvbnNvbGUubG9nPTNEPTNEImZ1bmN0aW9uIiYmPQpGdW5jdGlvbi5wcm90b3R5cGUuYmluZCl7
dmFyIHQ9M0RGdW5jdGlvbi5wcm90b3R5cGUuYmluZC5jYWxsKGNvbnNvbGUubG9nLGM9Cm9uc29s
ZSk7dC5hcHBseShjb25zb2xlLGFyZ3VtZW50cyl9cmV0dXJuIGFyZ3VtZW50c1thcmd1bWVudHMu
bGVuZ3RoLTFdfSxlLj0KcmVuZGVyPTNEZnVuY3Rpb24obil7bj0zRG58fDEsZS5yZW5kZXIuYWN0
aXZlPTNEITAsZS5kaXNwYXRjaC5yZW5kZXJfc3RhcnQoPQopLHNldFRpbWVvdXQoZnVuY3Rpb24o
KXt2YXIgdCxyO2Zvcih2YXIgaT0zRDA7aTxuJiYocj0zRGUucmVuZGVyLnF1ZXVlW2ldKTs9Cmkr
Kyl0PTNEci5nZW5lcmF0ZSgpLHR5cGVvZiByLmNhbGxiYWNrPTNEPTNEdHlwZW9mIEZ1bmN0aW9u
JiZyLmNhbGxiYWNrKHQpLD0KZS5ncmFwaHMucHVzaCh0KTtlLnJlbmRlci5xdWV1ZS5zcGxpY2Uo
MCxpKSxlLnJlbmRlci5xdWV1ZS5sZW5ndGg/c2V0VGltZW91PQp0KGFyZ3VtZW50cy5jYWxsZWUs
MCk6KGUuZGlzcGF0Y2gucmVuZGVyX2VuZCgpLGUucmVuZGVyLmFjdGl2ZT0zRCExKX0sMCl9LGU9
Ci5yZW5kZXIuYWN0aXZlPTNEITEsZS5yZW5kZXIucXVldWU9M0RbXSxlLmFkZEdyYXBoPTNEZnVu
Y3Rpb24odCl7dHlwZW9mIGFyZz0KdW1lbnRzWzBdPTNEPTNEdHlwZW9mIEZ1bmN0aW9uJiYodD0z
RHtnZW5lcmF0ZTphcmd1bWVudHNbMF0sY2FsbGJhY2s6YXJndW1lPQpudHNbMV19KSxlLnJlbmRl
ci5xdWV1ZS5wdXNoKHQpLGUucmVuZGVyLmFjdGl2ZXx8ZS5yZW5kZXIoKX0sZS5pZGVudGl0eT0z
RGY9CnVuY3Rpb24oZSl7cmV0dXJuIGV9LGUuc3RyaXA9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5y
ZXBsYWNlKC8oXHN8JikvZywiIil9LD0KZDMudGltZS5tb250aEVuZD0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBuZXcgRGF0ZShlLmdldEZ1bGxZZWFyKCksZS5nZXRNb250aCgpPQosMCl9LGQzLnRpbWUu
bW9udGhFbmRzPTNEbihkMy50aW1lLm1vbnRoRW5kLGZ1bmN0aW9uKGUpe2Uuc2V0VVRDRGF0ZShl
LmdldFU9ClRDRGF0ZSgpKzEpLGUuc2V0RGF0ZSh0KGUuZ2V0TW9udGgoKSsxLGUuZ2V0RnVsbFll
YXIoKSkpfSxmdW5jdGlvbihlKXtyZXR1cj0KbiBlLmdldE1vbnRoKCl9KSxlLmludGVyYWN0aXZl
R3VpZGVsaW5lPTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBjKG8pe28uZWFjaChmPQp1bmN0aW9uKG8p
e2Z1bmN0aW9uIGcoKXt2YXIgZT0zRGQzLm1vdXNlKHRoaXMpLG49M0RlWzBdLHI9M0RlWzFdLG89
M0QhMCxhPQo9M0QhMTtsJiYobj0zRGQzLmV2ZW50Lm9mZnNldFgscj0zRGQzLmV2ZW50Lm9mZnNl
dFksZDMuZXZlbnQudGFyZ2V0LnRhZ05hbWU9CiE9M0Q9M0Qic3ZnIiYmKG89M0QhMSksZDMuZXZl
bnQudGFyZ2V0LmNsYXNzTmFtZS5iYXNlVmFsLm1hdGNoKCJudi1sZWdlbmQiKT0KJiYoYT0zRCEw
KSksbyYmKG4tPTNEaS5sZWZ0LHItPTNEaS50b3ApO2lmKG48MHx8cjwwfHxuPnB8fHI+ZHx8ZDMu
ZXZlbnQucmVsPQphdGVkVGFyZ2V0JiZkMy5ldmVudC5yZWxhdGVkVGFyZ2V0Lm93bmVyU1ZHRWxl
bWVudD0zRD0zRD0zRHVuZGVmaW5lZHx8YSl7aWY9CihsJiZkMy5ldmVudC5yZWxhdGVkVGFyZ2V0
JiZkMy5ldmVudC5yZWxhdGVkVGFyZ2V0Lm93bmVyU1ZHRWxlbWVudD0zRD0zRD0zRD0KdW5kZWZp
bmVkJiZkMy5ldmVudC5yZWxhdGVkVGFyZ2V0LmNsYXNzTmFtZS5tYXRjaCh0Lm52UG9pbnRlckV2
ZW50c0NsYXNzKSlyPQpldHVybjt1LmVsZW1lbnRNb3VzZW91dCh7bW91c2VYOm4sbW91c2VZOnJ9
KSxjLnJlbmRlckd1aWRlTGluZShudWxsKTtyZXR1cm49Cn12YXIgZj0zRHMuaW52ZXJ0KG4pO3Uu
ZWxlbWVudE1vdXNlbW92ZSh7bW91c2VYOm4sbW91c2VZOnIscG9pbnRYVmFsdWU6Zn0pLD0KZDMu
ZXZlbnQudHlwZT0zRD0zRD0zRCJkYmxjbGljayImJnUuZWxlbWVudERibGNsaWNrKHttb3VzZVg6
bixtb3VzZVk6cixwb2luPQp0WFZhbHVlOmZ9KX12YXIgaD0zRGQzLnNlbGVjdCh0aGlzKSxwPTNE
bnx8OTYwLGQ9M0RyfHw0MDAsdj0zRGguc2VsZWN0QWxsKCI9CmcubnYtd3JhcC5udi1pbnRlcmFj
dGl2ZUxpbmVMYXllciIpLmRhdGEoW29dKSxtPTNEdi5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dD0K
cigiY2xhc3MiLCIgbnYtd3JhcCBudi1pbnRlcmFjdGl2ZUxpbmVMYXllciIpO20uYXBwZW5kKCJn
IikuYXR0cigiY2xhc3MiLCJuPQp2LWludGVyYWN0aXZlR3VpZGVMaW5lIik7aWYoIWYpcmV0dXJu
O2Yub24oIm1vdXNlbW92ZSIsZywhMCkub24oIm1vdXNlb3V0Iiw9CmcsITApLm9uKCJkYmxjbGlj
ayIsZyksYy5yZW5kZXJHdWlkZUxpbmU9M0RmdW5jdGlvbih0KXtpZighYSlyZXR1cm47dmFyIG49
Cj0zRHYuc2VsZWN0KCIubnYtaW50ZXJhY3RpdmVHdWlkZUxpbmUiKS5zZWxlY3RBbGwoImxpbmUi
KS5kYXRhKHQhPTNEbnVsbD9bZT0KLnV0aWxzLk5hTnRvWmVybyh0KV06W10sU3RyaW5nKTtuLmVu
dGVyKCkuYXBwZW5kKCJsaW5lIikuYXR0cigiY2xhc3MiLCJudi1nPQp1aWRlbGluZSIpLmF0dHIo
IngxIixmdW5jdGlvbihlKXtyZXR1cm4gZX0pLmF0dHIoIngyIixmdW5jdGlvbihlKXtyZXR1cm4g
ZX09CikuYXR0cigieTEiLGQpLmF0dHIoInkyIiwwKSxuLmV4aXQoKS5yZW1vdmUoKX19KX12YXIg
dD0zRGUubW9kZWxzLnRvb2x0aXAoKT0KLG49M0RudWxsLHI9M0RudWxsLGk9M0R7bGVmdDowLHRv
cDowfSxzPTNEZDMuc2NhbGUubGluZWFyKCksbz0zRGQzLnNjYWxlLmxpPQpuZWFyKCksdT0zRGQz
LmRpc3BhdGNoKCJlbGVtZW50TW91c2Vtb3ZlIiwiZWxlbWVudE1vdXNlb3V0IiwiZWxlbWVudERi
bGNsaWM9CmsiKSxhPTNEITAsZj0zRG51bGwsbD0zRG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhP
ZigiTVNJRSIpIT0zRD0zRC0xO3JldHVybj0KIGMuZGlzcGF0Y2g9M0R1LGMudG9vbHRpcD0zRHQs
Yy5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0PQpoPyhpLnRvcD0z
RHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDppLnRvcCxpLmxlZnQ9M0R0eXBlb2Yg
ZS5sZWZ0IT0KPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OmkubGVmdCxjKTppfSxjLndpZHRoPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sPQplbmd0aD8obj0zRGUsYyk6bn0sYy5oZWlnaHQ9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0zRGUsYyk9CjpyfSxjLnhT
Y2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPTNEZSxjKTpzfSxj
LnNob3dHdWlkZT0KTGluZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhh
PTNEZSxjKTphfSxjLnN2Z0NvbnRhaW5lcj0zRGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGY9M0RlLGMpOmZ9LGN9LGUuaW50ZXJhY3RpdmVCaXNlY3Q9M0RmdW49CmN0aW9u
KGUsdCxuKXtpZighZSBpbnN0YW5jZW9mIEFycmF5KXJldHVybiBudWxsO3R5cGVvZiBuIT0zRCJm
dW5jdGlvbiImJihuPQo9M0RmdW5jdGlvbihlLHQpe3JldHVybiBlLnh9KTt2YXIgcj0zRGQzLmJp
c2VjdG9yKG4pLmxlZnQsaT0zRGQzLm1heChbMCxyKGU9Cix0KS0xXSkscz0zRG4oZVtpXSxpKTt0
eXBlb2Ygcz0zRD0zRCJ1bmRlZmluZWQiJiYocz0zRGkpO2lmKHM9M0Q9M0Q9M0R0KXJldD0KdXJu
IGk7dmFyIG89M0RkMy5taW4oW2krMSxlLmxlbmd0aC0xXSksdT0zRG4oZVtvXSxvKTtyZXR1cm4g
dHlwZW9mIHU9M0Q9M0QiPQp1bmRlZmluZWQiJiYodT0zRG8pLE1hdGguYWJzKHUtdCk+PTNETWF0
aC5hYnMocy10KT9pOm99LGUubmVhcmVzdFZhbHVlSW5kZXg9Cj0zRGZ1bmN0aW9uKGUsdCxuKXt2
YXIgcj0zREluZmluaXR5LGk9M0RudWxsO3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24oZSxzKT0K
e3ZhciBvPTNETWF0aC5hYnModC1lKTtvPD0zRHImJm88biYmKHI9M0RvLGk9M0RzKX0pLGl9LGZ1
bmN0aW9uKCl7d2luZG93Lm52PQoudG9vbHRpcD0zRHt9LHdpbmRvdy5udi5tb2RlbHMudG9vbHRp
cD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24geSgpe2lmKGEpe3ZhciA9CmU9M0RkMy5zZWxlY3QoYSk7
ZS5ub2RlKCkudGFnTmFtZSE9M0Q9M0Qic3ZnIiYmKGU9M0RlLnNlbGVjdCgic3ZnIikpO3ZhciB0
PQo9M0RlLm5vZGUoKT9lLmF0dHIoInZpZXdCb3giKTpudWxsO2lmKHQpe3Q9M0R0LnNwbGl0KCIg
Iik7dmFyIG49M0RwYXJzZUludCg9CmUuc3R5bGUoIndpZHRoIikpL3RbMl07bC5sZWZ0PTNEbC5s
ZWZ0Km4sbC50b3A9M0RsLnRvcCpufX19ZnVuY3Rpb24gYihlKXt2YT0KciB0O2E/dD0zRGQzLnNl
bGVjdChhKTp0PTNEZDMuc2VsZWN0KCJib2R5Iik7dmFyIG49M0R0LnNlbGVjdCgiLm52dG9vbHRp
cCIpPQo7cmV0dXJuIG4ubm9kZSgpPTNEPTNEPTNEbnVsbCYmKG49M0R0LmFwcGVuZCgiZGl2Iiku
YXR0cigiY2xhc3MiLCJudnRvb2x0aXA9CiAiKyh1P3U6Inh5LXRvb2x0aXAiKSkuYXR0cigiaWQi
LGgpKSxuLm5vZGUoKS5pbm5lckhUTUw9M0RlLG4uc3R5bGUoInRvcCIsMD0KKS5zdHlsZSgibGVm
dCIsMCkuc3R5bGUoIm9wYWNpdHkiLDApLG4uc2VsZWN0QWxsKCJkaXYsIHRhYmxlLCB0ZCwgdHIi
KS5jbGFzPQpzZWQocCwhMCksbi5jbGFzc2VkKHAsITApLG4ubm9kZSgpfWZ1bmN0aW9uIHcoKXtp
ZighYylyZXR1cm47aWYoIWcobikpcmV0dXI9Cm47eSgpO3ZhciB0PTNEbC5sZWZ0LHU9M0RvIT0z
RG51bGw/bzpsLnRvcCxoPTNEYihtKG4pKTtmPTNEaDtpZihhKXt2YXIgcD0zRD0KYS5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgic3ZnIilbMF0sZD0zRHA/cC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTph
LmdldEJvdW5kPQppbmdDbGllbnRSZWN0KCksdj0zRHtsZWZ0OjAsdG9wOjB9O2lmKHApe3ZhciBF
PTNEcC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSw9ClM9M0RhLmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpLHg9M0RFLnRvcDtpZih4PDApe3ZhciBUPTNEYS5nZXRCb3VuZGluZ0NsaWVudD0KUmVjdCgp
O3g9M0RNYXRoLmFicyh4KT5ULmhlaWdodD8wOnh9di50b3A9M0RNYXRoLmFicyh4LVMudG9wKSx2
LmxlZnQ9M0RNYXRoPQouYWJzKEUubGVmdC1TLmxlZnQpfXQrPTNEYS5vZmZzZXRMZWZ0K3YubGVm
dC0yKmEuc2Nyb2xsTGVmdCx1Kz0zRGEub2Zmc2V0VG89CnArdi50b3AtMiphLnNjcm9sbFRvcH1y
ZXR1cm4gcyYmcz4wJiYodT0zRE1hdGguZmxvb3IodS9zKSpzKSxlLnRvb2x0aXAuY2FsYz0KVG9v
bHRpcFBvc2l0aW9uKFt0LHVdLHIsaSxoKSx3fXZhciB0PTNEbnVsbCxuPTNEbnVsbCxyPTNEInci
LGk9M0Q1MCxzPTNEMjUsPQpvPTNEbnVsbCx1PTNEbnVsbCxhPTNEbnVsbCxmPTNEbnVsbCxsPTNE
e2xlZnQ6bnVsbCx0b3A6bnVsbH0sYz0zRCEwLGg9M0QibnY9CnRvb2x0aXAtIitNYXRoLmZsb29y
KE1hdGgucmFuZG9tKCkqMWU1KSxwPTNEIm52LXBvaW50ZXItZXZlbnRzLW5vbmUiLGQ9M0RmdT0K
bmN0aW9uKGUsdCl7cmV0dXJuIGV9LHY9M0RmdW5jdGlvbihlKXtyZXR1cm4gZX0sbT0zRGZ1bmN0
aW9uKGUpe2lmKHQhPTNEbnVsPQpsKXJldHVybiB0O2lmKGU9M0Q9M0RudWxsKXJldHVybiIiO3Zh
ciBuPTNEZDMuc2VsZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQ9CigidGFibGUiKSkscj0zRG4u
c2VsZWN0QWxsKCJ0aGVhZCIpLmRhdGEoW2VdKS5lbnRlcigpLmFwcGVuZCgidGhlYWQiKTtyLmFw
cD0KZW5kKCJ0ciIpLmFwcGVuZCgidGQiKS5hdHRyKCJjb2xzcGFuIiwzKS5hcHBlbmQoInN0cm9u
ZyIpLmNsYXNzZWQoIngtdmFsdWUiPQosITApLmh0bWwodihlLnZhbHVlKSk7dmFyIGk9M0RuLnNl
bGVjdEFsbCgidGJvZHkiKS5kYXRhKFtlXSkuZW50ZXIoKS5hcHBlbmQ9CigidGJvZHkiKSxzPTNE
aS5zZWxlY3RBbGwoInRyIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZS5zZXJpZXN9KS5lbnRl
cigpLj0KYXBwZW5kKCJ0ciIpLmNsYXNzZWQoImhpZ2hsaWdodCIsZnVuY3Rpb24oZSl7cmV0dXJu
IGUuaGlnaGxpZ2h0fSk7cy5hcHBlbmQoPQoidGQiKS5jbGFzc2VkKCJsZWdlbmQtY29sb3ItZ3Vp
ZGUiLCEwKS5hcHBlbmQoImRpdiIpLnN0eWxlKCJiYWNrZ3JvdW5kLWNvbG89CnIiLGZ1bmN0aW9u
KGUpe3JldHVybiBlLmNvbG9yfSkscy5hcHBlbmQoInRkIikuY2xhc3NlZCgia2V5IiwhMCkuaHRt
bChmdW5jdD0KaW9uKGUpe3JldHVybiBlLmtleX0pLHMuYXBwZW5kKCJ0ZCIpLmNsYXNzZWQoInZh
bHVlIiwhMCkuaHRtbChmdW5jdGlvbihlLHQpPQp7cmV0dXJuIGQoZS52YWx1ZSx0KX0pLHMuc2Vs
ZWN0QWxsKCJ0ZCIpLmVhY2goZnVuY3Rpb24oZSl7aWYoZS5oaWdobGlnaHQpe3Y9CmFyIHQ9M0Rk
My5zY2FsZS5saW5lYXIoKS5kb21haW4oWzAsMV0pLnJhbmdlKFsiI2ZmZiIsZS5jb2xvcl0pLG49
M0QuNjtkMy5zZT0KbGVjdCh0aGlzKS5zdHlsZSgiYm9yZGVyLWJvdHRvbS1jb2xvciIsdChuKSku
c3R5bGUoImJvcmRlci10b3AtY29sb3IiLHQobikpPQp9fSk7dmFyIG89M0RuLm5vZGUoKS5vdXRl
ckhUTUw7cmV0dXJuIGUuZm9vdGVyIT0zRD0zRHVuZGVmaW5lZCYmKG8rPTNEIjxkaXY9CiBjbGFz
cz0zRCdmb290ZXInPiIrZS5mb290ZXIrIjwvZGl2PiIpLG99LGc9M0RmdW5jdGlvbihlKXtyZXR1
cm4gZSYmZS5zZXJpZT0KcyYmZS5zZXJpZXMubGVuZ3RoPjA/ITA6ITF9O3JldHVybiB3Lm52UG9p
bnRlckV2ZW50c0NsYXNzPTNEcCx3LmNvbnRlbnQ9M0RmPQp1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyh0PTNEZSx3KTp0fSx3LnRvb2x0aXBFbGVtPTNEZnVuY3Rpb24oKXs9CnJl
dHVybiBmfSx3LmNvbnRlbnRHZW5lcmF0b3I9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8odHlwZW9mID0KZT0zRD0zRCJmdW5jdGlvbiImJihtPTNEZSksdyk6bX0sdy5kYXRh
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5nPQp0aD8obj0zRGUsdyk6bn0sdy5n
cmF2aXR5PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLHcpOnI9
Cn0sdy5kaXN0YW5jZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPTNE
ZSx3KTppfSx3LnNuYXBEaXN0YT0KbmNlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHM9M0RlLHcpOnN9LHcuY2xhc3Nlcz0zRGZ1bmN0aW9uPQooZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHU9M0RlLHcpOnV9LHcuY2hhcnRDb250YWluZXI9M0RmdW5jdGlvbihlKXty
ZXQ9CnVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZSx3KTphfSx3LnBvc2l0aW9uPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cz0KLmxlbmd0aD8obC5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9
M0QidW5kZWZpbmVkIj9lLmxlZnQ6bC5sZWZ0LGwudG9wPTNEdHlwZW9mPQogZS50b3AhPTNEInVu
ZGVmaW5lZCI/ZS50b3A6bC50b3Asdyk6bH0sdy5maXhlZFRvcD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmc9CnVtZW50cy5sZW5ndGg/KG89M0RlLHcpOm99LHcuZW5hYmxlZD0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPz0KKGM9M0RlLHcpOmN9LHcudmFsdWVGb3JtYXR0ZXI9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odHlwZW9mPQogZT0zRD0zRCJm
dW5jdGlvbiImJihkPTNEZSksdyk6ZH0sdy5oZWFkZXJGb3JtYXR0ZXI9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXI9Cmd1bWVudHMubGVuZ3RoPyh0eXBlb2YgZT0zRD0zRCJmdW5jdGlvbiImJih2PTNE
ZSksdyk6dn0sdy5pZD0zRGZ1bmN0aW9uKCl7cj0KZXR1cm4gaH0sd30sZS50b29sdGlwLnNob3c9
M0RmdW5jdGlvbih0LG4scixpLHMsbyl7dmFyIHU9M0Rkb2N1bWVudC5jcmVhdGVFPQpsZW1lbnQo
ImRpdiIpO3UuY2xhc3NOYW1lPTNEIm52dG9vbHRpcCAiKyhvP286Inh5LXRvb2x0aXAiKTt2YXIg
YT0zRHM7aWYoIXM9Cnx8cy50YWdOYW1lLm1hdGNoKC9nfHN2Zy9pKSlhPTNEZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXTt1Lj0Kc3R5bGUubGVmdD0zRDAsdS5zdHlsZS50
b3A9M0QwLHUuc3R5bGUub3BhY2l0eT0zRDAsdS5pbm5lckhUTUw9M0RuLGEuYXBwZW5kPQpDaGls
ZCh1KSxzJiYodFswXT0zRHRbMF0tcy5zY3JvbGxMZWZ0LHRbMV09M0R0WzFdLXMuc2Nyb2xsVG9w
KSxlLnRvb2x0aXAuY2E9CmxjVG9vbHRpcFBvc2l0aW9uKHQscixpLHUpfSxlLnRvb2x0aXAuZmlu
ZEZpcnN0Tm9uU1ZHUGFyZW50PTNEZnVuY3Rpb24oZSl7dz0KaGlsZShlLnRhZ05hbWUubWF0Y2go
L15nfHN2ZyQvaSkhPTNEPTNEbnVsbCllPTNEZS5wYXJlbnROb2RlO3JldHVybiBlfSxlLnRvPQpv
bHRpcC5maW5kVG90YWxPZmZzZXRUb3A9M0RmdW5jdGlvbihlLHQpe3ZhciBuPTNEdDtkbyBpc05h
TihlLm9mZnNldFRvcCl8fCg9Cm4rPTNEZS5vZmZzZXRUb3ApO3doaWxlKGU9M0RlLm9mZnNldFBh
cmVudCk7cmV0dXJuIG59LGUudG9vbHRpcC5maW5kVG90YWxPZj0KZnNldExlZnQ9M0RmdW5jdGlv
bihlLHQpe3ZhciBuPTNEdDtkbyBpc05hTihlLm9mZnNldExlZnQpfHwobis9M0RlLm9mZnNldExl
PQpmdCk7d2hpbGUoZT0zRGUub2Zmc2V0UGFyZW50KTtyZXR1cm4gbn0sZS50b29sdGlwLmNhbGNU
b29sdGlwUG9zaXRpb249M0RmdW49CmN0aW9uKHQsbixyLGkpe3ZhciBzPTNEcGFyc2VJbnQoaS5v
ZmZzZXRIZWlnaHQpLG89M0RwYXJzZUludChpLm9mZnNldFdpZHRoKT0KLHU9M0RlLnV0aWxzLndp
bmRvd1NpemUoKS53aWR0aCxhPTNEZS51dGlscy53aW5kb3dTaXplKCkuaGVpZ2h0LGY9M0R3aW5k
b3cuPQpwYWdlWU9mZnNldCxsPTNEd2luZG93LnBhZ2VYT2Zmc2V0LGMsaDthPTNEd2luZG93Lmlu
bmVyV2lkdGg+PTNEZG9jdW1lbnQuYm89CmR5LnNjcm9sbFdpZHRoP2E6YS0xNix1PTNEd2luZG93
LmlubmVySGVpZ2h0Pj0zRGRvY3VtZW50LmJvZHkuc2Nyb2xsSGVpZ2h0Pz0KdTp1LTE2LG49M0Ru
fHwicyIscj0zRHJ8fDIwO3ZhciBwPTNEZnVuY3Rpb24odCl7cmV0dXJuIGUudG9vbHRpcC5maW5k
VG90YWxPPQpmZnNldFRvcCh0LGgpfSxkPTNEZnVuY3Rpb24odCl7cmV0dXJuIGUudG9vbHRpcC5m
aW5kVG90YWxPZmZzZXRMZWZ0KHQsYyl9O3M9CndpdGNoKG4pe2Nhc2UiZSI6Yz0zRHRbMF0tby1y
LGg9M0R0WzFdLXMvMjt2YXIgdj0zRGQoaSksbT0zRHAoaSk7djxsJiYoYz0zRD0KdFswXStyPmw/
dFswXStyOmwtditjKSxtPGYmJihoPTNEZi1tK2gpLG0rcz5mK2EmJihoPTNEZithLW0raC1zKTti
cmVhaztjYXNlPQoidyI6Yz0zRHRbMF0rcixoPTNEdFsxXS1zLzI7dmFyIHY9M0RkKGkpLG09M0Rw
KGkpO3Yrbz51JiYoYz0zRHRbMF0tby1yKSxtPGY9CiYmKGg9M0RmKzUpLG0rcz5mK2EmJihoPTNE
ZithLW0raC1zKTticmVhaztjYXNlIm4iOmM9M0R0WzBdLW8vMi01LGg9M0R0WzFdKz0Kcjt2YXIg
dj0zRGQoaSksbT0zRHAoaSk7djxsJiYoYz0zRGwrNSksditvPnUmJihjPTNEYy1vLzIrNSksbStz
PmYrYSYmKGg9M0RmPQorYS1tK2gtcyk7YnJlYWs7Y2FzZSJzIjpjPTNEdFswXS1vLzIsaD0zRHRb
MV0tcy1yO3ZhciB2PTNEZChpKSxtPTNEcChpKTt2PGw9CiYmKGM9M0RsKzUpLHYrbz51JiYoYz0z
RGMtby8yKzUpLGY+bSYmKGg9M0RmKTticmVhaztjYXNlIm5vbmUiOmM9M0R0WzBdLGg9Cj0zRHRb
MV0tcjt2YXIgdj0zRGQoaSksbT0zRHAoaSl9cmV0dXJuIGkuc3R5bGUubGVmdD0zRGMrInB4Iixp
LnN0eWxlLnRvcD0zRD0KaCsicHgiLGkuc3R5bGUub3BhY2l0eT0zRDEsaS5zdHlsZS5wb3NpdGlv
bj0zRCJhYnNvbHV0ZSIsaX0sZS50b29sdGlwLmNsZWFuPQp1cD0zRGZ1bmN0aW9uKCl7dmFyIGU9
M0Rkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJudnRvb2x0aXAiKSx0PTNEW109Cjt3
aGlsZShlLmxlbmd0aCl0LnB1c2goZVswXSksZVswXS5zdHlsZS50cmFuc2l0aW9uRGVsYXk9M0Qi
MCAhaW1wb3J0YW50IixlWz0KMF0uc3R5bGUub3BhY2l0eT0zRDAsZVswXS5jbGFzc05hbWU9M0Qi
bnZ0b29sdGlwLXBlbmRpbmctcmVtb3ZhbCI7c2V0VGltZW91PQp0KGZ1bmN0aW9uKCl7d2hpbGUo
dC5sZW5ndGgpe3ZhciBlPTNEdC5wb3AoKTtlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSl9fSw9
CjUwMCl9fSgpLGUudXRpbHMud2luZG93U2l6ZT0zRGZ1bmN0aW9uKCl7dmFyIGU9M0R7d2lkdGg6
NjQwLGhlaWdodDo0ODB9O3JldD0KdXJuIGRvY3VtZW50LmJvZHkmJmRvY3VtZW50LmJvZHkub2Zm
c2V0V2lkdGgmJihlLndpZHRoPTNEZG9jdW1lbnQuYm9keS5vZmZzPQpldFdpZHRoLGUuaGVpZ2h0
PTNEZG9jdW1lbnQuYm9keS5vZmZzZXRIZWlnaHQpLGRvY3VtZW50LmNvbXBhdE1vZGU9M0Q9M0Qi
Q1M9ClMxQ29tcGF0IiYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiZkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQub2Zmc2V0V2lkdGgmJj0KKGUud2lkdGg9M0Rkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQub2Zmc2V0V2lkdGgsZS5oZWlnaHQ9M0Rkb2N1bWVudC5kb2N1bWVuPQp0RWxlbWVudC5vZmZz
ZXRIZWlnaHQpLHdpbmRvdy5pbm5lcldpZHRoJiZ3aW5kb3cuaW5uZXJIZWlnaHQmJihlLndpZHRo
PTNEd2k9Cm5kb3cuaW5uZXJXaWR0aCxlLmhlaWdodD0zRHdpbmRvdy5pbm5lckhlaWdodCksZX0s
ZS51dGlscy53aW5kb3dSZXNpemU9M0RmdT0KbmN0aW9uKGUpe2lmKGU9M0Q9M0Q9M0R1bmRlZmlu
ZWQpcmV0dXJuO3ZhciB0PTNEd2luZG93Lm9ucmVzaXplO3dpbmRvdy5vbnJlPQpzaXplPTNEZnVu
Y3Rpb24obil7dHlwZW9mIHQ9M0Q9M0QiZnVuY3Rpb24iJiZ0KG4pLGUobil9fSxlLnV0aWxzLmdl
dENvbG9yPQo9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9PYmplY3QucHJv
dG90eXBlLnRvU3RyaW5nLmNhbGwodCk9M0Q9Cj0zRD0zRCJbb2JqZWN0IEFycmF5XSI/ZnVuY3Rp
b24oZSxuKXtyZXR1cm4gZS5jb2xvcnx8dFtuJXQubGVuZ3RoXX06dDplLnV0aT0KbHMuZGVmYXVs
dENvbG9yKCl9LGUudXRpbHMuZGVmYXVsdENvbG9yPTNEZnVuY3Rpb24oKXt2YXIgZT0zRGQzLnNj
YWxlLmNhdGVnPQpvcnkyMCgpLnJhbmdlKCk7cmV0dXJuIGZ1bmN0aW9uKHQsbil7cmV0dXJuIHQu
Y29sb3J8fGVbbiVlLmxlbmd0aF19fSxlLnV0aWw9CnMuY3VzdG9tVGhlbWU9M0RmdW5jdGlvbihl
LHQsbil7dD0zRHR8fGZ1bmN0aW9uKGUpe3JldHVybiBlLmtleX0sbj0zRG58fGQzLj0Kc2NhbGUu
Y2F0ZWdvcnkyMCgpLnJhbmdlKCk7dmFyIHI9M0RuLmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oaSxz
KXt2YXIgbz0zRHQoPQppKTtyZXR1cm4gcnx8KHI9M0RuLmxlbmd0aCksdHlwZW9mIGVbb10hPTNE
InVuZGVmaW5lZCI/dHlwZW9mIGVbb109M0Q9M0QiZnU9Cm5jdGlvbiI/ZVtvXSgpOmVbb106blst
LXJdfX0sZS51dGlscy5wamF4PTNEZnVuY3Rpb24odCxuKXtmdW5jdGlvbiByKHIpe2QzLj0KaHRt
bChyLGZ1bmN0aW9uKHIpe3ZhciBpPTNEZDMuc2VsZWN0KG4pLm5vZGUoKTtpLnBhcmVudE5vZGUu
cmVwbGFjZUNoaWxkKGQzPQouc2VsZWN0KHIpLnNlbGVjdChuKS5ub2RlKCksaSksZS51dGlscy5w
amF4KHQsbil9KX1kMy5zZWxlY3RBbGwodCkub24oImNsaWM9CmsiLGZ1bmN0aW9uKCl7aGlzdG9y
eS5wdXNoU3RhdGUodGhpcy5ocmVmLHRoaXMudGV4dENvbnRlbnQsdGhpcy5ocmVmKSxyKHRoaT0K
cy5ocmVmKSxkMy5ldmVudC5wcmV2ZW50RGVmYXVsdCgpfSksZDMuc2VsZWN0KHdpbmRvdykub24o
InBvcHN0YXRlIixmdW5jdGlvPQpuKCl7ZDMuZXZlbnQuc3RhdGUmJnIoZDMuZXZlbnQuc3RhdGUp
fSl9LGUudXRpbHMuY2FsY0FwcHJveFRleHRXaWR0aD0zRGZ1bmM9CnRpb24oZSl7aWYodHlwZW9m
IGUuc3R5bGU9M0Q9M0QiZnVuY3Rpb24iJiZ0eXBlb2YgZS50ZXh0PTNEPTNEImZ1bmN0aW9uIil7
dj0KYXIgdD0zRHBhcnNlSW50KGUuc3R5bGUoImZvbnQtc2l6ZSIpLnJlcGxhY2UoInB4IiwiIikp
LG49M0RlLnRleHQoKS5sZW5ndGg7PQpyZXR1cm4gbip0Ki41fXJldHVybiAwfSxlLnV0aWxzLk5h
TnRvWmVybz0zRGZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZSE9M0Q9CiJudW1iZXIifHxpc05h
TihlKXx8ZT0zRD0zRD0zRG51bGx8fGU9M0Q9M0Q9M0RJbmZpbml0eT8wOmV9LGUudXRpbHMub3B0
aW9ucz0KRnVuYz0zRGZ1bmN0aW9uKGUpe3JldHVybiBlJiZkMy5tYXAoZSkuZm9yRWFjaChmdW5j
dGlvbihlLHQpe3R5cGVvZiB0aGlzW2VdPQo9M0Q9M0QiZnVuY3Rpb24iJiZ0aGlzW2VdKHQpfS5i
aW5kKHRoaXMpKSx0aGlzfSxlLm1vZGVscy5heGlzPTNEZnVuY3Rpb24oKXs9CmZ1bmN0aW9uIG0o
ZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXt2YXIgaT0zRGQzLnNlbGVjdCh0aGlzKSxtPTNE
aS5zZWxlYz0KdEFsbCgiZy5udi13cmFwLm52LWF4aXMiKS5kYXRhKFtlXSksZz0zRG0uZW50ZXIo
KS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsPQoibnZkMyBudi13cmFwIG52LWF4aXMiKSx5PTNE
Zy5hcHBlbmQoImciKSxiPTNEbS5zZWxlY3QoImciKTtwIT0zRD0zRG51bGw/dC49CnRpY2tzKHAp
Oih0Lm9yaWVudCgpPTNEPTNEInRvcCJ8fHQub3JpZW50KCk9M0Q9M0QiYm90dG9tIikmJnQudGlj
a3MoTWF0aC5hYj0KcyhzLnJhbmdlKClbMV0tcy5yYW5nZSgpWzBdKS8xMDApLGIuY2FsbCh0KSx2
PTNEdnx8dC5zY2FsZSgpO3ZhciB3PTNEdC50aWNrPQpGb3JtYXQoKTt3PTNEPTNEbnVsbCYmKHc9
M0R2LnRpY2tGb3JtYXQoKSk7dmFyIEU9M0RiLnNlbGVjdEFsbCgidGV4dC5udi1heGk9CnNsYWJl
bCIpLmRhdGEoW298fG51bGxdKTtFLmV4aXQoKS5yZW1vdmUoKTtzd2l0Y2godC5vcmllbnQoKSl7
Y2FzZSJ0b3AiOkUuZT0KbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnYtYXhp
c2xhYmVsIik7dmFyIFM9M0RzLnJhbmdlKCkubGVuZ3RoPQo9M0Q9M0QyP3MucmFuZ2UoKVsxXTpz
LnJhbmdlKClbcy5yYW5nZSgpLmxlbmd0aC0xXSsocy5yYW5nZSgpWzFdLXMucmFuZ2UoKVs9CjBd
KTtFLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikuYXR0cigieSIsMCkuYXR0cigieCIsUy8y
KTtpZih1KXt2YXIgeD0zRD0KbS5zZWxlY3RBbGwoImcubnYtYXhpc01heE1pbiIpLmRhdGEocy5k
b21haW4oKSk7eC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoPQoiY2xhc3MiLCJudi1heGlzTWF4
TWluIikuYXBwZW5kKCJ0ZXh0IikseC5leGl0KCkucmVtb3ZlKCkseC5hdHRyKCJ0cmFuc2Zvcm09
CiIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIrcyhlKSsiLDApIn0pLnNlbGVjdCgi
dGV4dCIpLmF0dHIoImR5IiwiLT0KMC41ZW0iKS5hdHRyKCJ5IiwtdC50aWNrUGFkZGluZygpKS5h
dHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLnRleHQoZnVuY3RpPQpvbihlLHQpe3ZhciBuPTNE
dyhlKTtyZXR1cm4oIiIrbikubWF0Y2goIk5hTiIpPyIiOm59KSx4LmF0dHIoInRyYW5zZm9ybSIs
ZnU9Cm5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitzLnJhbmdlKClbdF0rIiwwKSJ9KX1i
cmVhaztjYXNlImJvdHRvbSI6dmFyID0KVD0zRDM2LE49M0QzMCxDPTNEYi5zZWxlY3RBbGwoImci
KS5zZWxlY3QoInRleHQiKTtpZihmJTM2MCl7Qy5lYWNoKGZ1bmN0aW9uPQooZSx0KXt2YXIgbj0z
RHRoaXMuZ2V0QkJveCgpLndpZHRoO24+TiYmKE49M0RuKX0pO3ZhciBrPTNETWF0aC5hYnMoTWF0
aC5zaW49CihmKk1hdGguUEkvMTgwKSksVD0zRChrP2sqTjpOKSszMDtDLmF0dHIoInRyYW5zZm9y
bSIsZnVuY3Rpb24oZSx0LG4pe3JldHVybj0KInJvdGF0ZSgiK2YrIiAwLDApIn0pLnN0eWxlKCJ0
ZXh0LWFuY2hvciIsZiUzNjA+MD8ic3RhcnQiOiJlbmQiKX1FLmVudGVyKCkuPQphcHBlbmQoInRl
eHQiKS5hdHRyKCJjbGFzcyIsIm52LWF4aXNsYWJlbCIpO3ZhciBTPTNEcy5yYW5nZSgpLmxlbmd0
aD0zRD0zRDI9Cj9zLnJhbmdlKClbMV06cy5yYW5nZSgpW3MucmFuZ2UoKS5sZW5ndGgtMV0rKHMu
cmFuZ2UoKVsxXS1zLnJhbmdlKClbMF0pO0UuYT0KdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIp
LmF0dHIoInkiLFQpLmF0dHIoIngiLFMvMik7aWYodSl7dmFyIHg9M0RtLnNlbGVjPQp0QWxsKCJn
Lm52LWF4aXNNYXhNaW4iKS5kYXRhKFtzLmRvbWFpbigpWzBdLHMuZG9tYWluKClbcy5kb21haW4o
KS5sZW5ndGgtMV09Cl0pO3guZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWF4
aXNNYXhNaW4iKS5hcHBlbmQoInRleHQiKSx4LmV4aT0KdCgpLnJlbW92ZSgpLHguYXR0cigidHJh
bnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIisocyhlKSsoaD9zPQoucmFu
Z2VCYW5kKCkvMjowKSkrIiwwKSJ9KS5zZWxlY3QoInRleHQiKS5hdHRyKCJkeSIsIi43MWVtIiku
YXR0cigieSIsdC50aWM9CmtQYWRkaW5nKCkpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0
LG4pe3JldHVybiJyb3RhdGUoIitmKyIgMCwwKSJ9KS5zdD0KeWxlKCJ0ZXh0LWFuY2hvciIsZj9m
JTM2MD4wPyJzdGFydCI6ImVuZCI6Im1pZGRsZSIpLnRleHQoZnVuY3Rpb24oZSx0KXt2YXIgPQpu
PTNEdyhlKTtyZXR1cm4oIiIrbikubWF0Y2goIk5hTiIpPyIiOm59KSx4LmF0dHIoInRyYW5zZm9y
bSIsZnVuY3Rpb24oZSx0KXs9CnJldHVybiJ0cmFuc2xhdGUoIisocyhlKSsoaD9zLnJhbmdlQmFu
ZCgpLzI6MCkpKyIsMCkifSl9YyYmQy5hdHRyKCJ0cmFuc2Zvcj0KbSIsZnVuY3Rpb24oZSx0KXty
ZXR1cm4idHJhbnNsYXRlKDAsIisodCUyPTNEPTNEMD8iMCI6IjEyIikrIikifSk7YnJlYWs7Y2Fz
PQplInJpZ2h0IjpFLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudi1heGlz
bGFiZWwiKSxFLnN0eWxlKCJ0ZXg9CnQtYW5jaG9yIixsPyJtaWRkbGUiOiJiZWdpbiIpLmF0dHIo
InRyYW5zZm9ybSIsbD8icm90YXRlKDkwKSI6IiIpLmF0dHIoInkiLD0KbD8tTWF0aC5tYXgobi5y
aWdodCxyKSsxMjotMTApLmF0dHIoIngiLGw/cy5yYW5nZSgpWzBdLzI6dC50aWNrUGFkZGluZygp
KTtpPQpmKHUpe3ZhciB4PTNEbS5zZWxlY3RBbGwoImcubnYtYXhpc01heE1pbiIpLmRhdGEocy5k
b21haW4oKSk7eC5lbnRlcigpLmFwcGU9Cm5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1heGlzTWF4
TWluIikuYXBwZW5kKCJ0ZXh0Iikuc3R5bGUoIm9wYWNpdHkiLDApLHguZT0KeGl0KCkucmVtb3Zl
KCkseC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgwLCIr
cyhlKSsiPQopIn0pLnNlbGVjdCgidGV4dCIpLmF0dHIoImR5IiwiLjMyZW0iKS5hdHRyKCJ5Iiww
KS5hdHRyKCJ4Iix0LnRpY2tQYWRkaW5nKCk9Cikuc3R5bGUoInRleHQtYW5jaG9yIiwic3RhcnQi
KS50ZXh0KGZ1bmN0aW9uKGUsdCl7dmFyIG49M0R3KGUpO3JldHVybigiIituKT0KLm1hdGNoKCJO
YU4iKT8iIjpufSkseC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5z
bGF0ZSgwLCIrPQpzLnJhbmdlKClbdF0rIikifSkuc2VsZWN0KCJ0ZXh0Iikuc3R5bGUoIm9wYWNp
dHkiLDEpfWJyZWFrO2Nhc2UibGVmdCI6RS5lbnQ9CmVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigi
Y2xhc3MiLCJudi1heGlzbGFiZWwiKSxFLnN0eWxlKCJ0ZXh0LWFuY2hvciIsbD8ibT0KaWRkbGUi
OiJlbmQiKS5hdHRyKCJ0cmFuc2Zvcm0iLGw/InJvdGF0ZSgtOTApIjoiIikuYXR0cigieSIsbD8t
TWF0aC5tYXgobi5sPQplZnQscikrZDotMTApLmF0dHIoIngiLGw/LXMucmFuZ2UoKVswXS8yOi10
LnRpY2tQYWRkaW5nKCkpO2lmKHUpe3ZhciB4PTNEbS49CnNlbGVjdEFsbCgiZy5udi1heGlzTWF4
TWluIikuZGF0YShzLmRvbWFpbigpKTt4LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiYz0KbGFz
cyIsIm52LWF4aXNNYXhNaW4iKS5hcHBlbmQoInRleHQiKS5zdHlsZSgib3BhY2l0eSIsMCkseC5l
eGl0KCkucmVtb3ZlKCksPQp4LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4i
dHJhbnNsYXRlKDAsIit2KGUpKyIpIn0pLnNlbGVjdCgidGU9Cnh0IikuYXR0cigiZHkiLCIuMzJl
bSIpLmF0dHIoInkiLDApLmF0dHIoIngiLC10LnRpY2tQYWRkaW5nKCkpLmF0dHIoInRleHQtYT0K
bmNob3IiLCJlbmQiKS50ZXh0KGZ1bmN0aW9uKGUsdCl7dmFyIG49M0R3KGUpO3JldHVybigiIitu
KS5tYXRjaCgiTmFOIik/IiI6PQpufSkseC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7
cmV0dXJuInRyYW5zbGF0ZSgwLCIrcy5yYW5nZSgpW3RdKyIpIn09Cikuc2VsZWN0KCJ0ZXh0Iiku
c3R5bGUoIm9wYWNpdHkiLDEpfX1FLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSx1JiYodC5v
cj0KaWVudCgpPTNEPTNEPTNEImxlZnQifHx0Lm9yaWVudCgpPTNEPTNEPTNEInJpZ2h0IikmJihi
LnNlbGVjdEFsbCgiZyIpLmVhY2goPQpmdW5jdGlvbihlLHQpe2QzLnNlbGVjdCh0aGlzKS5zZWxl
Y3QoInRleHQiKS5hdHRyKCJvcGFjaXR5IiwxKTtpZihzKGUpPHMucmE9Cm5nZSgpWzFdKzEwfHxz
KGUpPnMucmFuZ2UoKVswXS0xMCkoZT4xZS0xMHx8ZTwtMWUtMTApJiZkMy5zZWxlY3QodGhpcyku
YXR0cj0KKCJvcGFjaXR5IiwwKSxkMy5zZWxlY3QodGhpcykuc2VsZWN0KCJ0ZXh0IikuYXR0cigi
b3BhY2l0eSIsMCl9KSxzLmRvbWFpbigpPQpbMF09M0Q9M0RzLmRvbWFpbigpWzFdJiZzLmRvbWFp
bigpWzBdPTNEPTNEMCYmbS5zZWxlY3RBbGwoImcubnYtYXhpc01heE1pbiI9Cikuc3R5bGUoIm9w
YWNpdHkiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/MDoxfSkpO2lmKHUmJih0Lm9yaWVudCgpPTNE
PTNEPTNEIj0KdG9wInx8dC5vcmllbnQoKT0zRD0zRD0zRCJib3R0b20iKSl7dmFyIEw9M0RbXTtt
LnNlbGVjdEFsbCgiZy5udi1heGlzTWF4TWluPQoiKS5lYWNoKGZ1bmN0aW9uKGUsdCl7dHJ5e3Q/
TC5wdXNoKHMoZSktdGhpcy5nZXRCQm94KCkud2lkdGgtNCk6TC5wdXNoKHMoZSk9Cit0aGlzLmdl
dEJCb3goKS53aWR0aCs0KX1jYXRjaChuKXt0P0wucHVzaChzKGUpLTQpOkwucHVzaChzKGUpKzQp
fX0pLGIuc2VsZT0KY3RBbGwoImciKS5lYWNoKGZ1bmN0aW9uKGUsdCl7aWYocyhlKTxMWzBdfHxz
KGUpPkxbMV0pZT4xZS0xMHx8ZTwtMWUtMTA/ZDMuPQpzZWxlY3QodGhpcykucmVtb3ZlKCk6ZDMu
c2VsZWN0KHRoaXMpLnNlbGVjdCgidGV4dCIpLnJlbW92ZSgpfSl9YSYmYi5zZWxlY3Q9CkFsbCgi
LnRpY2siKS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIXBhcnNlRmxvYXQoTWF0aC5yb3VuZChl
Ll9fZGF0YV9fKjFlNT0KKS8xZTYpJiZlLl9fZGF0YV9fIT0zRD0zRHVuZGVmaW5lZH0pLmNsYXNz
ZWQoInplcm8iLCEwKSx2PTNEcy5jb3B5KCl9KSxtfXZhPQpyIHQ9M0RkMy5zdmcuYXhpcygpLG49
M0R7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9LHI9M0Q3NSxpPTNENjAscz0zRGQ9CjMu
c2NhbGUubGluZWFyKCksbz0zRG51bGwsdT0zRCEwLGE9M0QhMCxmPTNEMCxsPTNEITAsYz0zRCEx
LGg9M0QhMSxwPTNEbnVsbD0KLGQ9M0QxMjt0LnNjYWxlKHMpLm9yaWVudCgiYm90dG9tIikudGlj
a0Zvcm1hdChmdW5jdGlvbihlKXtyZXR1cm4gZX0pO3ZhciB2PQo7cmV0dXJuIG0uYXhpcz0zRHQs
ZDMucmViaW5kKG0sdCwib3JpZW50IiwidGlja1ZhbHVlcyIsInRpY2tTdWJkaXZpZGUiLCJ0aWM9
CmtTaXplIiwidGlja1BhZGRpbmciLCJ0aWNrRm9ybWF0IiksZDMucmViaW5kKG0scywiZG9tYWlu
IiwicmFuZ2UiLCJyYW5nZUJhbj0KZCIsInJhbmdlQmFuZHMiKSxtLm9wdGlvbnM9M0RlLnV0aWxz
Lm9wdGlvbnNGdW5jLmJpbmQobSksbS5tYXJnaW49M0RmdW5jdGlvPQpuKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhuLnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDpu
LnQ9Cm9wLG4ucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0Om4u
cmlnaHQsbi5ib3R0b209M0R0eXBlbz0KZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRv
bTpuLmJvdHRvbSxuLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlPQpmaW5lZCI/ZS5sZWZ0
Om4ubGVmdCxtKTpufSxtLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHI9Cj0zRGUsbSk6cn0sbS50aWNrcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhwPTNEZSxtKTpwfSxtLmhlaT0KZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGk9M0RlLG0pOml9LG0uYXhpc0xhYmVsPTNEZnVuY3RpPQpvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsbSk6b30sbS5zaG93TWF4TWluPTNEZnVuY3Rpb24o
ZSl7cmV0dXI9Cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsbSk6dX0sbS5oaWdobGlnaHRaZXJv
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZT0KbnRzLmxlbmd0aD8oYT0zRGUsbSk6YX0sbS5z
Y2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPTNEPQplLHQuc2Nh
bGUocyksaD0zRHR5cGVvZiBzLnJhbmdlQmFuZHM9M0Q9M0QiZnVuY3Rpb24iLGQzLnJlYmluZCht
LHMsImRvbWFpbiI9CiwicmFuZ2UiLCJyYW5nZUJhbmQiLCJyYW5nZUJhbmRzIiksbSk6c30sbS5y
b3RhdGVZTGFiZWw9M0RmdW5jdGlvbihlKXtyZXR1cj0KbiBhcmd1bWVudHMubGVuZ3RoPyhsPTNE
ZSxtKTpsfSxtLnJvdGF0ZUxhYmVscz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVuPQp0cy5s
ZW5ndGg/KGY9M0RlLG0pOmZ9LG0uc3RhZ2dlckxhYmVscz0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3Q9Cmg/KGM9M0RlLG0pOmN9LG0uYXhpc0xhYmVsRGlzdGFuY2U9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0KPTNEZSxtKTpkfSxtfSxlLm1vZGVs
cy5oaXN0b3JpY2FsQmFyPTNEZnVuY3Rpb24oKXtmdW5jdGlvbiB3KEUpe3JldHVybiBFLmVhPQpj
aChmdW5jdGlvbih3KXt2YXIgRT0zRG4tdC5sZWZ0LXQucmlnaHQsUz0zRHItdC50b3AtdC5ib3R0
b20sVD0zRGQzLnNlbGVjdCg9CnRoaXMpO3MuZG9tYWluKGR8fGQzLmV4dGVudCh3WzBdLnZhbHVl
cy5tYXAodSkuY29uY2F0KGYpKSksYz9zLnJhbmdlKG18fFtFKj0KLjUvd1swXS52YWx1ZXMubGVu
Z3RoLEUqKHdbMF0udmFsdWVzLmxlbmd0aC0uNSkvd1swXS52YWx1ZXMubGVuZ3RoXSk6cy5yYW5n
PQplKG18fFswLEVdKSxvLmRvbWFpbih2fHxkMy5leHRlbnQod1swXS52YWx1ZXMubWFwKGEpLmNv
bmNhdChsKSkpLnJhbmdlKGd8fFs9ClMsMF0pLHMuZG9tYWluKClbMF09M0Q9M0Q9M0RzLmRvbWFp
bigpWzFdJiYocy5kb21haW4oKVswXT9zLmRvbWFpbihbcy5kb21haT0KbigpWzBdLXMuZG9tYWlu
KClbMF0qLjAxLHMuZG9tYWluKClbMV0rcy5kb21haW4oKVsxXSouMDFdKTpzLmRvbWFpbihbLTEs
MV0pPQopLG8uZG9tYWluKClbMF09M0Q9M0Q9M0RvLmRvbWFpbigpWzFdJiYoby5kb21haW4oKVsw
XT9vLmRvbWFpbihbby5kb21haW4oKVs9CjBdK28uZG9tYWluKClbMF0qLjAxLG8uZG9tYWluKClb
MV0tby5kb21haW4oKVsxXSouMDFdKTpvLmRvbWFpbihbLTEsMV0pKTt2YT0KciBOPTNEVC5zZWxl
Y3RBbGwoImcubnYtd3JhcC5udi1oaXN0b3JpY2FsQmFyLSIraSkuZGF0YShbd1swXS52YWx1ZXNd
KSxDPTNEPQpOLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAg
bnYtaGlzdG9yaWNhbEJhci0iK2kpLGs9M0Q9CkMuYXBwZW5kKCJkZWZzIiksTD0zREMuYXBwZW5k
KCJnIiksQT0zRE4uc2VsZWN0KCJnIik7TC5hcHBlbmQoImciKS5hdHRyKCJjbD0KYXNzIiwibnYt
YmFycyIpLE4uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdC5sZWZ0KyIsIit0LnRvcCsi
KSIpLFQub24oPQoiY2xpY2siLGZ1bmN0aW9uKGUsdCl7eS5jaGFydENsaWNrKHtkYXRhOmUsaW5k
ZXg6dCxwb3M6ZDMuZXZlbnQsaWQ6aX0pfSksay49CmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJp
ZCIsIm52LWNoYXJ0LWNsaXAtcGF0aC0iK2kpLmFwcGVuZCgicmVjdCIpLE4uc2VsZT0KY3QoIiNu
di1jaGFydC1jbGlwLXBhdGgtIitpKyIgcmVjdCIpLmF0dHIoIndpZHRoIixFKS5hdHRyKCJoZWln
aHQiLFMpLEEuYXR0PQpyKCJjbGlwLXBhdGgiLGg/InVybCgjbnYtY2hhcnQtY2xpcC1wYXRoLSIr
aSsiKSI6IiIpO3ZhciBPPTNETi5zZWxlY3QoIi5udi09CmJhcnMiKS5zZWxlY3RBbGwoIi5udi1i
YXIiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlfSxmdW5jdGlvbihlLHQpe3JldHVybj0KIHUo
ZSx0KX0pO08uZXhpdCgpLnJlbW92ZSgpO3ZhciBNPTNETy5lbnRlcigpLmFwcGVuZCgicmVjdCIp
LmF0dHIoIngiLDApLmF0PQp0cigieSIsZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50
b1plcm8obyhNYXRoLm1heCgwLGEodCxuKSkpKX0pLmF0dHI9CigiaGVpZ2h0IixmdW5jdGlvbih0
LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhNYXRoLmFicyhvKGEodCxuKSktbygwKSkpfT0K
KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiKyhzKHUo
ZSx0KSktRS93WzBdLnZhbHVlPQpzLmxlbmd0aCouNDUpKyIsMCkifSkub24oIm1vdXNlb3ZlciIs
ZnVuY3Rpb24oZSx0KXtpZighYilyZXR1cm47ZDMuc2VsZWN0KHQ9CmhpcykuY2xhc3NlZCgiaG92
ZXIiLCEwKSx5LmVsZW1lbnRNb3VzZW92ZXIoe3BvaW50OmUsc2VyaWVzOndbMF0scG9zOltzKHUo
ZT0KLHQpKSxvKGEoZSx0KSldLHBvaW50SW5kZXg6dCxzZXJpZXNJbmRleDowLGU6ZDMuZXZlbnR9
KX0pLm9uKCJtb3VzZW91dCIsZnVuPQpjdGlvbihlLHQpe2lmKCFiKXJldHVybjtkMy5zZWxlY3Qo
dGhpcykuY2xhc3NlZCgiaG92ZXIiLCExKSx5LmVsZW1lbnRNb3VzZW89CnV0KHtwb2ludDplLHNl
cmllczp3WzBdLHBvaW50SW5kZXg6dCxzZXJpZXNJbmRleDowLGU6ZDMuZXZlbnR9KX0pLm9uKCJj
bGljaz0KIixmdW5jdGlvbihlLHQpe2lmKCFiKXJldHVybjt5LmVsZW1lbnRDbGljayh7dmFsdWU6
YShlLHQpLGRhdGE6ZSxpbmRleDp0LHBvPQpzOltzKHUoZSx0KSksbyhhKGUsdCkpXSxlOmQzLmV2
ZW50LGlkOml9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0pLm9uKCI9CmRibGNsaWNrIixm
dW5jdGlvbihlLHQpe2lmKCFiKXJldHVybjt5LmVsZW1lbnREYmxDbGljayh7dmFsdWU6YShlLHQp
LGRhdGE6ZT0KLGluZGV4OnQscG9zOltzKHUoZSx0KSksbyhhKGUsdCkpXSxlOmQzLmV2ZW50LGlk
Oml9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpPQpvbigpfSk7Ty5hdHRyKCJmaWxsIixmdW5jdGlv
bihlLHQpe3JldHVybiBwKGUsdCl9KS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSw9CnQsbil7cmV0
dXJuKGEoZSx0KTwwPyJudi1iYXIgbmVnYXRpdmUiOiJudi1iYXIgcG9zaXRpdmUiKSsiIG52LWJh
ci0iK24rIi0iKz0KdH0pLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJh
bnNsYXRlKCIrKHModShlLHQpKS1FL3dbMF0udmFsPQp1ZXMubGVuZ3RoKi40NSkrIiwwKSJ9KS5h
dHRyKCJ3aWR0aCIsRS93WzBdLnZhbHVlcy5sZW5ndGgqLjkpLE8uYXR0cigieSIsZnU9Cm5jdGlv
bih0LG4pe3ZhciByPTNEYSh0LG4pPDA/bygwKTpvKDApLW8oYSh0LG4pKTwxP28oMCktMTpvKGEo
dCxuKSk7cmV0dXJuID0KZS51dGlscy5OYU50b1plcm8ocil9KS5hdHRyKCJoZWlnaHQiLGZ1bmN0
aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvPQooTWF0aC5tYXgoTWF0aC5hYnMobyhh
KHQsbikpLW8oMCkpLDEpKX0pfSksd312YXIgdD0zRHt0b3A6MCxyaWdodDowLGJvdHRvbTo9CjAs
bGVmdDowfSxuPTNEOTYwLHI9M0Q1MDAsaT0zRE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxZTQp
LHM9M0RkMy5zY2FsZS5saT0KbmVhcigpLG89M0RkMy5zY2FsZS5saW5lYXIoKSx1PTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGUueH0sYT0zRGZ1bmN0aW9uKGUpe3JlPQp0dXJuIGUueX0sZj0zRFtdLGw9
M0RbMF0sYz0zRCExLGg9M0QhMCxwPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxkLHYsbSxnLHk9
Cj0zRGQzLmRpc3BhdGNoKCJjaGFydENsaWNrIiwiZWxlbWVudENsaWNrIiwiZWxlbWVudERibENs
aWNrIiwiZWxlbWVudE1vdXNlbz0KdmVyIiwiZWxlbWVudE1vdXNlb3V0IiksYj0zRCEwO3JldHVy
biB3LmhpZ2hsaWdodFBvaW50PTNEZnVuY3Rpb24oZSx0KXtkMy5zPQplbGVjdCgiLm52LWhpc3Rv
cmljYWxCYXItIitpKS5zZWxlY3QoIi5udi1iYXJzIC5udi1iYXItMC0iK2UpLmNsYXNzZWQoImhv
dmU9CnIiLHQpfSx3LmNsZWFySGlnaGxpZ2h0cz0zRGZ1bmN0aW9uKCl7ZDMuc2VsZWN0KCIubnYt
aGlzdG9yaWNhbEJhci0iK2kpLnNlbD0KZWN0KCIubnYtYmFycyAubnYtYmFyLmhvdmVyIikuY2xh
c3NlZCgiaG92ZXIiLCExKX0sdy5kaXNwYXRjaD0zRHksdy5vcHRpb25zPQo9M0RlLnV0aWxzLm9w
dGlvbnNGdW5jLmJpbmQodyksdy54PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHU9Cj0zRGUsdyk6dX0sdy55PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGE9M0RlLHcpOmF9LHcubWFyZ2luPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8odC50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI9Cj9lLnRvcDp0LnRv
cCx0LnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp0LnJpZ2h0
LHQuYm90dD0Kb209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dC5i
b3R0b20sdC5sZWZ0PTNEdHlwZW9mIGUubGVmPQp0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDp0Lmxl
ZnQsdyk6dH0sdy53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHM9Ci5sZW5ndGg/
KG49M0RlLHcpOm59LHcuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHI9M0RlLD0Kdyk6cn0sdy54U2NhbGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8ocz0zRGUsdyk6c30sdy55U2NhbGU9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhvPTNEZSx3KTpvfSx3LnhEb21haW49M0RmdW5jdGlvbihlKT0Ke3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSx3KTpkfSx3LnlEb21haW49M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lPQpudHMubGVuZ3RoPyh2PTNEZSx3KTp2fSx3LnhSYW5nZT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPQo9M0RlLHcpOm19LHcueVJhbmdlPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9M0RlLHcpOmd9LHcuZm89CnJjZVg9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUsdyk6Zn0sdy5mb3Jj
ZVk9M0RmdW5jdGlvbj0KKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZSx3KTpsfSx3
LnBhZERhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJnPQp1bWVudHMubGVuZ3RoPyhjPTNEZSx3
KTpjfSx3LmNsaXBFZGdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9Cj8o
aD0zRGUsdyk6aH0sdy5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhwPTNEZS51dGlscy5nZT0KdENvbG9yKHQpLHcpOnB9LHcuaWQ9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUsdyk6aX0sdy5pPQpudGVyYWN0aXZlPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9M0QhMSx3KTpifSx3fSxlLm1vZGVscy49
CmJ1bGxldD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gbShlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9u
KGUsbil7dmFyIHA9M0RjLXQubD0KZWZ0LXQucmlnaHQsbT0zRGgtdC50b3AtdC5ib3R0b20sZz0z
RGQzLnNlbGVjdCh0aGlzKSx5PTNEaS5jYWxsKHRoaXMsZSxuKS5zPQpsaWNlKCkuc29ydChkMy5k
ZXNjZW5kaW5nKSxiPTNEcy5jYWxsKHRoaXMsZSxuKS5zbGljZSgpLnNvcnQoZDMuZGVzY2VuZGlu
Zyk9Cix3PTNEby5jYWxsKHRoaXMsZSxuKS5zbGljZSgpLnNvcnQoZDMuZGVzY2VuZGluZyksRT0z
RHUuY2FsbCh0aGlzLGUsbikuc2xpYz0KZSgpLFM9M0RhLmNhbGwodGhpcyxlLG4pLnNsaWNlKCks
eD0zRGYuY2FsbCh0aGlzLGUsbikuc2xpY2UoKSxUPTNEZDMuc2NhbGUuPQpsaW5lYXIoKS5kb21h
aW4oZDMuZXh0ZW50KGQzLm1lcmdlKFtsLHldKSkpLnJhbmdlKHI/W3AsMF06WzAscF0pLE49M0R0
aGlzLl89Cl9jaGFydF9ffHxkMy5zY2FsZS5saW5lYXIoKS5kb21haW4oWzAsSW5maW5pdHldKS5y
YW5nZShULnJhbmdlKCkpO3RoaXMuX19jaD0KYXJ0X189M0RUO3ZhciBDPTNEZDMubWluKHkpLGs9
M0RkMy5tYXgoeSksTD0zRHlbMV0sQT0zRGcuc2VsZWN0QWxsKCJnLm52LXdyPQphcC5udi1idWxs
ZXQiKS5kYXRhKFtlXSksTz0zREEuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52
ZDMgbnYtd3I9CmFwIG52LWJ1bGxldCIpLE09M0RPLmFwcGVuZCgiZyIpLF89M0RBLnNlbGVjdCgi
ZyIpO00uYXBwZW5kKCJyZWN0IikuYXR0cigiYz0KbGFzcyIsIm52LXJhbmdlIG52LXJhbmdlTWF4
IiksTS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm52LXJhbmdlIG52LXJhPQpuZ2VBdmci
KSxNLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwibnYtcmFuZ2UgbnYtcmFuZ2VNaW4iKSxN
LmFwcGVuZCgicmU9CmN0IikuYXR0cigiY2xhc3MiLCJudi1tZWFzdXJlIiksTS5hcHBlbmQoInBh
dGgiKS5hdHRyKCJjbGFzcyIsIm52LW1hcmtlclRyaT0KYW5nbGUiKSxBLmF0dHIoInRyYW5zZm9y
bSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50b3ArIikiKTt2YXIgRD0zRGZ1bmN0PQppb24o
ZSl7cmV0dXJuIE1hdGguYWJzKE4oZSktTigwKSl9LFA9M0RmdW5jdGlvbihlKXtyZXR1cm4gTWF0
aC5hYnMoVChlKS1UKDA9CikpfSxIPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGU8MD9OKGUpOk4oMCl9
LEI9M0RmdW5jdGlvbihlKXtyZXR1cm4gZTwwP1QoZSk6VD0KKDApfTtfLnNlbGVjdCgicmVjdC5u
di1yYW5nZU1heCIpLmF0dHIoImhlaWdodCIsbSkuYXR0cigid2lkdGgiLFAoaz4wP2s6QykpPQou
YXR0cigieCIsQihrPjA/azpDKSkuZGF0dW0oaz4wP2s6QyksXy5zZWxlY3QoInJlY3QubnYtcmFu
Z2VBdmciKS5hdHRyKCJoZWk9CmdodCIsbSkuYXR0cigid2lkdGgiLFAoTCkpLmF0dHIoIngiLEIo
TCkpLmRhdHVtKEwpLF8uc2VsZWN0KCJyZWN0Lm52LXJhbmdlTT0KaW4iKS5hdHRyKCJoZWlnaHQi
LG0pLmF0dHIoIndpZHRoIixQKGspKS5hdHRyKCJ4IixCKGspKS5hdHRyKCJ3aWR0aCIsUChrPjA/
PQpDOmspKS5hdHRyKCJ4IixCKGs+MD9DOmspKS5kYXR1bShrPjA/QzprKSxfLnNlbGVjdCgicmVj
dC5udi1tZWFzdXJlIikuc3R5bGU9CigiZmlsbCIsZCkuYXR0cigiaGVpZ2h0IixtLzMpLmF0dHIo
InkiLG0vMykuYXR0cigid2lkdGgiLHc8MD9UKDApLVQod1swXSk6VD0KKHdbMF0pLVQoMCkpLmF0
dHIoIngiLEIodykpLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7di5lbGVtZW50TW91c2VvdmVy
KHt2PQphbHVlOndbMF0sbGFiZWw6eFswXXx8IkN1cnJlbnQiLHBvczpbVCh3WzBdKSxtLzJdfSl9
KS5vbigibW91c2VvdXQiLGZ1bmN0aW89Cm4oKXt2LmVsZW1lbnRNb3VzZW91dCh7dmFsdWU6d1sw
XSxsYWJlbDp4WzBdfHwiQ3VycmVudCJ9KX0pO3ZhciBqPTNEbS82O2JbMD0KXT9fLnNlbGVjdEFs
bCgicGF0aC5udi1tYXJrZXJUcmlhbmdsZSIpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSl7
cmV0dXJuPQoidHJhbnNsYXRlKCIrVChiWzBdKSsiLCIrbS8yKyIpIn0pLmF0dHIoImQiLCJNMCwi
K2orIkwiK2orIiwiKyAtaisiICIrIC1qKyI9CiwiKyAtaisiWiIpLm9uKCJtb3VzZW92ZXIiLGZ1
bmN0aW9uKCl7di5lbGVtZW50TW91c2VvdmVyKHt2YWx1ZTpiWzBdLGxhYmVsOj0KU1swXXx8IlBy
ZXZpb3VzIixwb3M6W1QoYlswXSksbS8yXX0pfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbigpe3Yu
ZWxlbWVudE1vPQp1c2VvdXQoe3ZhbHVlOmJbMF0sbGFiZWw6U1swXXx8IlByZXZpb3VzIn0pfSk6
Xy5zZWxlY3RBbGwoInBhdGgubnYtbWFya2VyVHI9CmlhbmdsZSIpLnJlbW92ZSgpLEEuc2VsZWN0
QWxsKCIubnYtcmFuZ2UiKS5vbigibW91c2VvdmVyIixmdW5jdGlvbihlLHQpe3Zhcj0KIG49M0RF
W3RdfHwodD90PTNEPTNEMT8iTWVhbiI6Ik1pbmltdW0iOiJNYXhpbXVtIik7di5lbGVtZW50TW91
c2VvdmVyKHt2YWx1PQplOmUsbGFiZWw6bixwb3M6W1QoZSksbS8yXX0pfSkub24oIm1vdXNlb3V0
IixmdW5jdGlvbihlLHQpe3ZhciBuPTNERVt0XXx8KHQ9Cj90PTNEPTNEMT8iTWVhbiI6Ik1pbmlt
dW0iOiJNYXhpbXVtIik7di5lbGVtZW50TW91c2VvdXQoe3ZhbHVlOmUsbGFiZWw6bn0pfT0KKX0p
LG19dmFyIHQ9M0R7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9LG49M0QibGVmdCIscj0z
RCExLGk9M0RmdW5jdGlvPQpuKGUpe3JldHVybiBlLnJhbmdlc30scz0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBlLm1hcmtlcnN9LG89M0RmdW5jdGlvbihlKXtyZXQ9CnVybiBlLm1lYXN1cmVzfSx1PTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmFuZ2VMYWJlbHM/ZS5yYW5nZUxhYmVsczpbXX0sYT0zRD0K
ZnVuY3Rpb24oZSl7cmV0dXJuIGUubWFya2VyTGFiZWxzP2UubWFya2VyTGFiZWxzOltdfSxmPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuPQogZS5tZWFzdXJlTGFiZWxzP2UubWVhc3VyZUxhYmVsczpbXX0s
bD0zRFswXSxjPTNEMzgwLGg9M0QzMCxwPTNEbnVsbCxkPTNEZS49CnV0aWxzLmdldENvbG9yKFsi
IzFmNzdiNCJdKSx2PTNEZDMuZGlzcGF0Y2goImVsZW1lbnRNb3VzZW92ZXIiLCJlbGVtZW50TW91
cz0KZW91dCIpO3JldHVybiBtLmRpc3BhdGNoPTNEdixtLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlv
bnNGdW5jLmJpbmQobSksbS5vcmllPQpudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhuPTNEZSxyPTNEbj0zRD0zRCJyaWdodCJ8fG49M0Q9M0Q9CiJib3R0b20iLG0pOm59
LG0ucmFuZ2VzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9M0RlLG0p
Oml9LD0KbS5tYXJrZXJzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9
M0RlLG0pOnN9LG0ubWVhc3VyZXM9M0RmPQp1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhvPTNEZSxtKTpvfSxtLmZvcmNlWD0zRGZ1bmN0aW9uKGUpe3JldHU9CnJuIGFyZ3VtZW50
cy5sZW5ndGg/KGw9M0RlLG0pOmx9LG0ud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbj0KZ3RoPyhjPTNEZSxtKTpjfSxtLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhoPTNEZSxtKTpoPQp9LG0ubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPTNEdHlwZW9mIGUudG9wIT0zRCI9CnVuZGVmaW5l
ZCI/ZS50b3A6dC50b3AsdC5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2Uu
cmlnaHQ6dC5yaT0KZ2h0LHQuYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQi
P2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD0zRHR5PQpwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVk
Ij9lLmxlZnQ6dC5sZWZ0LG0pOnR9LG0udGlja0Zvcm1hdD0zRGZ1bmN0aW9uKGUpe3I9CmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLG0pOnB9LG0uY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1
cm4gYXJndW1lbnRzLj0KbGVuZ3RoPyhkPTNEZS51dGlscy5nZXRDb2xvcih0KSxtKTpkfSxtfSxl
Lm1vZGVscy5idWxsZXRDaGFydD0zRGZ1bmN0aW9uKCl7PQpmdW5jdGlvbiBtKGUpe3JldHVybiBl
LmVhY2goZnVuY3Rpb24obixoKXt2YXIgZz0zRGQzLnNlbGVjdCh0aGlzKSx5PTNEKGF8fHA9CmFy
c2VJbnQoZy5zdHlsZSgid2lkdGgiKSl8fDk2MCktaS5sZWZ0LWkucmlnaHQsYj0zRGYtaS50b3At
aS5ib3R0b20sdz0zRHRoaT0KczttLnVwZGF0ZT0zRGZ1bmN0aW9uKCl7bShlKX0sbS5jb250YWlu
ZXI9M0R0aGlzO2lmKCFufHwhcy5jYWxsKHRoaXMsbixoKSl7PQp2YXIgRT0zRGcuc2VsZWN0QWxs
KCIubnYtbm9EYXRhIikuZGF0YShbcF0pO3JldHVybiBFLmVudGVyKCkuYXBwZW5kKCJ0ZXh0Iik9
Ci5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxl
KCJ0ZXh0LWFuY2hvciIsIm1pZD0KZGxlIiksRS5hdHRyKCJ4IixpLmxlZnQreS8yKS5hdHRyKCJ5
IiwxOCtpLnRvcCtiLzIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuPQogZX0pLG19Zy5zZWxlY3RB
bGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKTt2YXIgUz0zRHMuY2FsbCh0aGlzLG4saCkuc2xpY2Uo
KS49CnNvcnQoZDMuZGVzY2VuZGluZykseD0zRG8uY2FsbCh0aGlzLG4saCkuc2xpY2UoKS5zb3J0
KGQzLmRlc2NlbmRpbmcpLFQ9M0R1Lj0KY2FsbCh0aGlzLG4saCkuc2xpY2UoKS5zb3J0KGQzLmRl
c2NlbmRpbmcpLE49M0RnLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LWJ1PQpsbGV0Q2hhcnQiKS5k
YXRhKFtuXSksQz0zRE4uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYt
d3JhcCA9Cm52LWJ1bGxldENoYXJ0Iiksaz0zREMuYXBwZW5kKCJnIiksTD0zRE4uc2VsZWN0KCJn
Iik7ay5hcHBlbmQoImciKS5hdHRyKCJjbD0KYXNzIiwibnYtYnVsbGV0V3JhcCIpLGsuYXBwZW5k
KCJnIikuYXR0cigiY2xhc3MiLCJudi10aXRsZXMiKSxOLmF0dHIoInRyYW5zPQpmb3JtIiwidHJh
bnNsYXRlKCIraS5sZWZ0KyIsIitpLnRvcCsiKSIpO3ZhciBBPTNEZDMuc2NhbGUubGluZWFyKCku
ZG9tYWluKFs9CjAsTWF0aC5tYXgoU1swXSx4WzBdLFRbMF0pXSkucmFuZ2Uocj9beSwwXTpbMCx5
XSksTz0zRHRoaXMuX19jaGFydF9ffHxkMy5zYz0KYWxlLmxpbmVhcigpLmRvbWFpbihbMCxJbmZp
bml0eV0pLnJhbmdlKEEucmFuZ2UoKSk7dGhpcy5fX2NoYXJ0X189M0RBO3ZhciBNPQo9M0RmdW5j
dGlvbihlKXtyZXR1cm4gTWF0aC5hYnMoTyhlKS1PKDApKX0sXz0zRGZ1bmN0aW9uKGUpe3JldHVy
biBNYXRoLmFicyg9CkEoZSktQSgwKSl9LEQ9M0RrLnNlbGVjdCgiLm52LXRpdGxlcyIpLmFwcGVu
ZCgiZyIpLmF0dHIoInRleHQtYW5jaG9yIiwiZW5kIj0KKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFu
c2xhdGUoLTYsIisoZi1pLnRvcC1pLmJvdHRvbSkvMisiKSIpO0QuYXBwZW5kKCJ0ZXh0PQoiKS5h
dHRyKCJjbGFzcyIsIm52LXRpdGxlIikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZS50aXRsZX0p
LEQuYXBwZW5kKCJ0ZXg9CnQiKS5hdHRyKCJjbGFzcyIsIm52LXN1YnRpdGxlIikuYXR0cigiZHki
LCIxZW0iKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlLj0Kc3VidGl0bGV9KSx0LndpZHRoKHkp
LmhlaWdodChiKTt2YXIgUD0zREwuc2VsZWN0KCIubnYtYnVsbGV0V3JhcCIpO2QzLnRyYW5zPQpp
dGlvbihQKS5jYWxsKHQpO3ZhciBIPTNEbHx8QS50aWNrRm9ybWF0KHkvMTAwKSxCPTNETC5zZWxl
Y3RBbGwoImcubnYtdGljayI9CikuZGF0YShBLnRpY2tzKHkvNTApLGZ1bmN0aW9uKGUpe3JldHVy
biB0aGlzLnRleHRDb250ZW50fHxIKGUpfSksaj0zREIuZW50ZT0KcigpLmFwcGVuZCgiZyIpLmF0
dHIoImNsYXNzIiwibnYtdGljayIpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSl7cmV0dXJu
PQoidHJhbnNsYXRlKCIrTyhlKSsiLDApIn0pLnN0eWxlKCJvcGFjaXR5IiwxZS02KTtqLmFwcGVu
ZCgibGluZSIpLmF0dHIoInkxIiw9CmIpLmF0dHIoInkyIixiKjcvNiksai5hcHBlbmQoInRleHQi
KS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoImR5Ij0KLCIxZW0iKS5hdHRyKCJ5
IixiKjcvNikudGV4dChIKTt2YXIgRj0zRGQzLnRyYW5zaXRpb24oQikuYXR0cigidHJhbnNmb3Jt
IixmPQp1bmN0aW9uKGUpe3JldHVybiJ0cmFuc2xhdGUoIitBKGUpKyIsMCkifSkuc3R5bGUoIm9w
YWNpdHkiLDEpO0Yuc2VsZWN0KCJsaW49CmUiKS5hdHRyKCJ5MSIsYikuYXR0cigieTIiLGIqNy82
KSxGLnNlbGVjdCgidGV4dCIpLmF0dHIoInkiLGIqNy82KSxkMy50cmFucz0KaXRpb24oQi5leGl0
KCkpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSl7cmV0dXJuInRyYW5zbGF0ZSgiK0EoZSkr
IiwwKSJ9PQopLnN0eWxlKCJvcGFjaXR5IiwxZS02KS5yZW1vdmUoKSxkLm9uKCJ0b29sdGlwU2hv
dyIsZnVuY3Rpb24oZSl7ZS5rZXk9M0RuLnQ9Cml0bGUsYyYmdihlLHcucGFyZW50Tm9kZSl9KX0p
LGQzLnRpbWVyLmZsdXNoKCksbX12YXIgdD0zRGUubW9kZWxzLmJ1bGxldCgpLD0Kbj0zRCJsZWZ0
IixyPTNEITEsaT0zRHt0b3A6NSxyaWdodDo0MCxib3R0b206MjAsbGVmdDoxMjB9LHM9M0RmdW5j
dGlvbihlKXtyPQpldHVybiBlLnJhbmdlc30sbz0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLm1hcmtl
cnN9LHU9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS49Cm1lYXN1cmVzfSxhPTNEbnVsbCxmPTNENTUs
bD0zRG51bGwsYz0zRCEwLGg9M0RmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiI8aD0KMz4iK3Qr
IjwvaDM+IisiPHA+IituKyI8L3A+In0scD0zRCJObyBEYXRhIEF2YWlsYWJsZS4iLGQ9M0RkMy5k
aXNwYXRjaCgidG9vPQpsdGlwU2hvdyIsInRvb2x0aXBIaWRlIiksdj0zRGZ1bmN0aW9uKHQsbil7
dmFyIHI9M0R0LnBvc1swXSsobi5vZmZzZXRMZWZ0fHw9CjApK2kubGVmdCxzPTNEdC5wb3NbMV0r
KG4ub2Zmc2V0VG9wfHwwKStpLnRvcCxvPTNEaCh0LmtleSx0LmxhYmVsLHQudmFsdWUsdD0KLG0p
O2UudG9vbHRpcC5zaG93KFtyLHNdLG8sdC52YWx1ZTwwPyJlIjoidyIsbnVsbCxuKX07cmV0dXJu
IHQuZGlzcGF0Y2gub24oPQoiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtk
LnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWw9CmVtZW50TW91c2VvdXQudG9vbHRp
cCIsZnVuY3Rpb24oZSl7ZC50b29sdGlwSGlkZShlKX0pLGQub24oInRvb2x0aXBIaWRlIixmdT0K
bmN0aW9uKCl7YyYmZS50b29sdGlwLmNsZWFudXAoKX0pLG0uZGlzcGF0Y2g9M0RkLG0uYnVsbGV0
PTNEdCxkMy5yZWJpbmQobSx0PQosImNvbG9yIiksbS5vcHRpb25zPTNEZS51dGlscy5vcHRpb25z
RnVuYy5iaW5kKG0pLG0ub3JpZW50PTNEZnVuY3Rpb24oZSl7cmU9CnR1cm4gYXJndW1lbnRzLmxl
bmd0aD8obj0zRGUscj0zRG49M0Q9M0QicmlnaHQifHxuPTNEPTNEImJvdHRvbSIsbSk6bn0sbS5y
YT0Kbmdlcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPTNEZSxtKTpz
fSxtLm1hcmtlcnM9M0RmdW5jdGlvPQpuKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNE
ZSxtKTpvfSxtLm1lYXN1cmVzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGE9CnJndW1lbnRzLmxlbmd0
aD8odT0zRGUsbSk6dX0sbS53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPz0KKGE9M0RlLG0pOmF9LG0uaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGY9M0RlLG0pOmZ9LG0uPQptYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oaS50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGU9CmZpbmVkIj9lLnRv
cDppLnRvcCxpLnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDpp
LnJpZ2h0LD0KaS5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0
b206aS5ib3R0b20saS5sZWZ0PTNEdHlwZW9mPQogZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVm
dDppLmxlZnQsbSk6aX0sbS50aWNrRm9ybWF0PTNEZnVuY3Rpb24oZSl7cmV0dXI9Cm4gYXJndW1l
bnRzLmxlbmd0aD8obD0zRGUsbSk6bH0sbS50b29sdGlwcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubD0KZW5ndGg/KGM9M0RlLG0pOmN9LG0udG9vbHRpcENvbnRlbnQ9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oPQpoPTNEZSxtKTpofSxtLm5vRGF0YT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxtKTpwfSxtfSw9CmUubW9k
ZWxzLmN1bXVsYXRpdmVMaW5lQ2hhcnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIEQoYil7cmV0dXJu
IGIuZWFjaChmdW5jdD0KaW9uKGIpe2Z1bmN0aW9uIEkoZSx0KXtkMy5zZWxlY3QoRC5jb250YWlu
ZXIpLnN0eWxlKCJjdXJzb3IiLCJldy1yZXNpemUiKX1mPQp1bmN0aW9uIHEoZSx0KXtNLng9M0Rk
My5ldmVudC54LE0uaT0zRE1hdGgucm91bmQoTy5pbnZlcnQoTS54KSksbnQoKX1mdW5jdGk9Cm9u
IFIoZSx0KXtkMy5zZWxlY3QoRC5jb250YWluZXIpLnN0eWxlKCJjdXJzb3IiLCJhdXRvIikseC5p
bmRleD0zRE0uaSxrLnN0YT0KdGVDaGFuZ2UoeCl9ZnVuY3Rpb24gbnQoKXt0dC5kYXRhKFtNXSk7
dmFyIGU9M0RELnRyYW5zaXRpb25EdXJhdGlvbigpO0QudHJhPQpuc2l0aW9uRHVyYXRpb24oMCks
RC51cGRhdGUoKSxELnRyYW5zaXRpb25EdXJhdGlvbihlKX12YXIgTD0zRGQzLnNlbGVjdCh0aGk9
CnMpLmNsYXNzZWQoIm52LWNoYXJ0LSIrUywhMCksQT0zRHRoaXMsSD0zRChmfHxwYXJzZUludChM
LnN0eWxlKCJ3aWR0aCIpKXx8OT0KNjApLXUubGVmdC11LnJpZ2h0LEI9M0QobHx8cGFyc2VJbnQo
TC5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXUudG9wLXUuYm90dG9tPQo7RC51cGRhdGU9M0RmdW5j
dGlvbigpe0wuY2FsbChEKX0sRC5jb250YWluZXI9M0R0aGlzLHguZGlzYWJsZWQ9M0RiLm1hcChm
dW49CmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pO2lmKCFUKXt2YXIgajtUPTNEe307Zm9y
KGogaW4geCl4W2pdaW5zdGFuY2VvZj0KIEFycmF5P1Rbal09M0R4W2pdLnNsaWNlKDApOlRbal09
M0R4W2pdfXZhciBGPTNEZDMuYmVoYXZpb3IuZHJhZygpLm9uKCJkcmFnPQpzdGFydCIsSSkub24o
ImRyYWciLHEpLm9uKCJkcmFnZW5kIixSKTtpZighYnx8IWIubGVuZ3RofHwhYi5maWx0ZXIoZnVu
Y3Rpb249CihlKXtyZXR1cm4gZS52YWx1ZXMubGVuZ3RofSkubGVuZ3RoKXt2YXIgVT0zREwuc2Vs
ZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YT0KKFtOXSk7cmV0dXJuIFUuZW50ZXIoKS5hcHBlbmQo
InRleHQiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cigiPQpkeSIsIi0uN2Vt
Iikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiksVS5hdHRyKCJ4Iix1LmxlZnQrSC8yKS5h
dHRyKCJ5Iiw9CnUudG9wK0IvMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLER9TC5zZWxl
Y3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKT0KLHc9M0R0LnhTY2FsZSgpLEU9M0R0LnlTY2Fs
ZSgpO2lmKCF5KXt2YXIgej0zRGIuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlPQouZGlzYWJs
ZWR9KS5tYXAoZnVuY3Rpb24oZSxuKXt2YXIgcj0zRGQzLmV4dGVudChlLnZhbHVlcyx0LnkoKSk7
cmV0dXJuIHJbMF09CjwtMC45NSYmKHJbMF09M0QtMC45NSksWyhyWzBdLXJbMV0pLygxK3JbMV0p
LChyWzFdLXJbMF0pLygxK3JbMF0pXX0pLFc9M0RbZD0KMy5taW4oeixmdW5jdGlvbihlKXtyZXR1
cm4gZVswXX0pLGQzLm1heCh6LGZ1bmN0aW9uKGUpe3JldHVybiBlWzFdfSldO3QueURvPQptYWlu
KFcpfWVsc2UgdC55RG9tYWluKG51bGwpO08uZG9tYWluKFswLGJbMF0udmFsdWVzLmxlbmd0aC0x
XSkucmFuZ2UoWzAsSF09CikuY2xhbXAoITApO3ZhciBiPTNEUChNLmksYiksWD0zRGc/Im5vbmUi
OiJhbGwiLFY9M0RMLnNlbGVjdEFsbCgiZy5udi13cmFwLj0KbnYtY3VtdWxhdGl2ZUxpbmUiKS5k
YXRhKFtiXSksJD0zRFYuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgPQpu
di13cmFwIG52LWN1bXVsYXRpdmVMaW5lIikuYXBwZW5kKCJnIiksSj0zRFYuc2VsZWN0KCJnIik7
JC5hcHBlbmQoImciKS5hdHQ9CnIoImNsYXNzIiwibnYtaW50ZXJhY3RpdmUiKSwkLmFwcGVuZCgi
ZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIikuc3R5bD0KZSgicG9pbnRlci1ldmVudHMi
LCJub25lIiksJC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkgbnYtYXhpcyIpLCQuYXBw
PQplbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWJhY2tncm91bmQiKSwkLmFwcGVuZCgiZyIpLmF0
dHIoImNsYXNzIiwibnYtbGluZXM9CldyYXAiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLFgpLCQu
YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1hdmdMaW5lc1dyYT0KcCIpLnN0eWxlKCJwb2lu
dGVyLWV2ZW50cyIsIm5vbmUiKSwkLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5k
V3JhPQpwIiksJC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWNvbnRyb2xzV3JhcCIpLGMm
JihpLndpZHRoKEgpLEouc2VsZWN0KCI9Ci5udi1sZWdlbmRXcmFwIikuZGF0dW0oYikuY2FsbChp
KSx1LnRvcCE9M0RpLmhlaWdodCgpJiYodS50b3A9M0RpLmhlaWdodCgpLD0KQj0zRChsfHxwYXJz
ZUludChMLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktdS50b3AtdS5ib3R0b20pLEouc2VsZWN0KCIu
bnYtbGVnPQplbmRXcmFwIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIisgLXUudG9w
KyIpIikpO2lmKG0pe3ZhciBLPTNEW3trZXk9CjoiUmUtc2NhbGUgeS1heGlzIixkaXNhYmxlZDoh
eX1dO3Mud2lkdGgoMTQwKS5jb2xvcihbIiM0NDQiLCIjNDQ0IiwiIzQ0NCJdKT0KLnJpZ2h0QWxp
Z24oITEpLm1hcmdpbih7dG9wOjUscmlnaHQ6MCxib3R0b206NSxsZWZ0OjIwfSksSi5zZWxlY3Qo
Ii5udi1jb250PQpyb2xzV3JhcCIpLmRhdHVtKEspLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0
ZSgwLCIrIC11LnRvcCsiKSIpLmNhbGwocyl9Vi49CmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0
ZSgiK3UubGVmdCsiLCIrdS50b3ArIikiKSxkJiZKLnNlbGVjdCgiLm52LXkubnYtYT0KeGlzIiku
YXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrSCsiLDApIik7dmFyIFE9M0RiLmZpbHRlcihm
dW5jdGlvbihlKXtyPQpldHVybiBlLnRlbXBEaXNhYmxlZH0pO1Yuc2VsZWN0KCIudGVtcERpc2Fi
bGVkIikucmVtb3ZlKCksUS5sZW5ndGgmJlYuYXBwZW49CmQoInRleHQiKS5hdHRyKCJjbGFzcyIs
InRlbXBEaXNhYmxlZCIpLmF0dHIoIngiLEgvMikuYXR0cigieSIsIi0uNzFlbSIpLnN0eT0KbGUo
InRleHQtYW5jaG9yIiwiZW5kIikudGV4dChRLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5rZXl9
KS5qb2luKCIsICIpKyIgPQp2YWx1ZXMgY2Fubm90IGJlIGNhbGN1bGF0ZWQgZm9yIHRoaXMgdGlt
ZSBwZXJpb2QuIiksZyYmKG8ud2lkdGgoSCkuaGVpZ2h0KEI9CikubWFyZ2luKHtsZWZ0OnUubGVm
dCx0b3A6dS50b3B9KS5zdmdDb250YWluZXIoTCkueFNjYWxlKHcpLFYuc2VsZWN0KCIubnYtaT0K
bnRlcmFjdGl2ZSIpLmNhbGwobykpLCQuc2VsZWN0KCIubnYtYmFja2dyb3VuZCIpLmFwcGVuZCgi
cmVjdCIpLEouc2VsZWN0KCIuPQpudi1iYWNrZ3JvdW5kIHJlY3QiKS5hdHRyKCJ3aWR0aCIsSCku
YXR0cigiaGVpZ2h0IixCKSx0LnkoZnVuY3Rpb24oZSl7cmV0dXI9Cm4gZS5kaXNwbGF5Lnl9KS53
aWR0aChIKS5oZWlnaHQoQikuY29sb3IoYi5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xv
cj0KfHxhKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4hYlt0XS5kaXNhYmxlZCYm
IWJbdF0udGVtcERpc2FibGVkfSkpPQo7dmFyIEc9M0RKLnNlbGVjdCgiLm52LWxpbmVzV3JhcCIp
LmRhdHVtKGIuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2E9CmJsZWQmJiFlLnRlbXBE
aXNhYmxlZH0pKTtHLmNhbGwodCksYi5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7ZS5zZXJpZXNJbmRl
eD0zRD0KdH0pO3ZhciBZPTNEYi5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQm
JiEhQyhlKX0pLFo9M0RKLnNlbGVjdCgiPQoubnYtYXZnTGluZXNXcmFwIikuc2VsZWN0QWxsKCJs
aW5lIikuZGF0YShZLGZ1bmN0aW9uKGUpe3JldHVybiBlLmtleX0pLGV0PQo9M0RmdW5jdGlvbihl
KXt2YXIgdD0zREUoQyhlKSk7cmV0dXJuIHQ8MD8wOnQ+Qj9COnR9O1ouZW50ZXIoKS5hcHBlbmQo
ImxpbmU9CiIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLDIpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5
IiwiMTAsMTAiKS5zdHlsZSgic3Ryb2tlIj0KLGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQuY29sb3Io
KShlLGUuc2VyaWVzSW5kZXgpfSkuYXR0cigieDEiLDApLmF0dHIoIngyIixIPQopLmF0dHIoInkx
IixldCkuYXR0cigieTIiLGV0KSxaLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsZnVuY3Rpb24oZSl7
dmFyIHQ9M0Q9CkUoQyhlKSk7cmV0dXJuIHQ8MHx8dD5CPzA6MX0pLmF0dHIoIngxIiwwKS5hdHRy
KCJ4MiIsSCkuYXR0cigieTEiLGV0KS5hdHRyKD0KInkyIixldCksWi5leGl0KCkucmVtb3ZlKCk7
dmFyIHR0PTNERy5zZWxlY3RBbGwoIi5udi1pbmRleExpbmUiKS5kYXRhKFtNXSk7PQp0dC5lbnRl
cigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwibnYtaW5kZXhMaW5lIikuYXR0cigid2lk
dGgiLDMpLmF0dHI9CigieCIsLTIpLmF0dHIoImZpbGwiLCJyZWQiKS5hdHRyKCJmaWxsLW9wYWNp
dHkiLC41KS5zdHlsZSgicG9pbnRlci1ldmVudHMiLD0KImFsbCIpLmNhbGwoRiksdHQuYXR0cigi
dHJhbnNmb3JtIixmdW5jdGlvbihlKXtyZXR1cm4idHJhbnNsYXRlKCIrTyhlLmkpKyIsPQowKSJ9
KS5hdHRyKCJoZWlnaHQiLEIpLGgmJihuLnNjYWxlKHcpLnRpY2tzKE1hdGgubWluKGJbMF0udmFs
dWVzLmxlbmd0aCxILzc9CjApKS50aWNrU2l6ZSgtQiwwKSxKLnNlbGVjdCgiLm52LXgubnYtYXhp
cyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLD0KIitFLnJhbmdlKClbMF0rIikiKSxk
My50cmFuc2l0aW9uKEouc2VsZWN0KCIubnYteC5udi1heGlzIikpLmNhbGwobikpLHAmJihyPQou
c2NhbGUoRSkudGlja3MoQi8zNikudGlja1NpemUoLUgsMCksZDMudHJhbnNpdGlvbihKLnNlbGVj
dCgiLm52LXkubnYtYXhpcyI9CikpLmNhbGwocikpLEouc2VsZWN0KCIubnYtYmFja2dyb3VuZCBy
ZWN0Iikub24oImNsaWNrIixmdW5jdGlvbigpe00ueD0zRGQzLj0KbW91c2UodGhpcylbMF0sTS5p
PTNETWF0aC5yb3VuZChPLmludmVydChNLngpKSx4LmluZGV4PTNETS5pLGsuc3RhdGVDaGFuZ2Uo
PQp4KSxudCgpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudENsaWNrIixmdW5jdGlvbihlKXtNLmk9
M0RlLnBvaW50SW5kZXgsTS54PQo9M0RPKE0uaSkseC5pbmRleD0zRE0uaSxrLnN0YXRlQ2hhbmdl
KHgpLG50KCl9KSxzLmRpc3BhdGNoLm9uKCJsZWdlbmRDbGljayI9CixmdW5jdGlvbihlLHQpe2Uu
ZGlzYWJsZWQ9M0QhZS5kaXNhYmxlZCx5PTNEIWUuZGlzYWJsZWQseC5yZXNjYWxlWT0zRHksay5z
dD0KYXRlQ2hhbmdlKHgpLEQudXBkYXRlKCl9KSxpLmRpc3BhdGNoLm9uKCJzdGF0ZUNoYW5nZSIs
ZnVuY3Rpb24oZSl7eC5kaXNhYmxlPQpkPTNEZS5kaXNhYmxlZCxrLnN0YXRlQ2hhbmdlKHgpLEQu
dXBkYXRlKCl9KSxvLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2Vtb3Y9CmUiLGZ1bmN0aW9uKGkp
e3QuY2xlYXJIaWdobGlnaHRzKCk7dmFyIHMsZixsLGM9M0RbXTtiLmZpbHRlcihmdW5jdGlvbihl
LHQpez0KcmV0dXJuIGUuc2VyaWVzSW5kZXg9M0R0LCFlLmRpc2FibGVkfSkuZm9yRWFjaChmdW5j
dGlvbihuLHIpe2Y9M0RlLmludGVyYWN0PQppdmVCaXNlY3Qobi52YWx1ZXMsaS5wb2ludFhWYWx1
ZSxELngoKSksdC5oaWdobGlnaHRQb2ludChyLGYsITApO3ZhciBvPTNEbi49CnZhbHVlc1tmXTtp
Zih0eXBlb2Ygbz0zRD0zRCJ1bmRlZmluZWQiKXJldHVybjt0eXBlb2Ygcz0zRD0zRCJ1bmRlZmlu
ZWQiJiYocz0KPTNEbyksdHlwZW9mIGw9M0Q9M0QidW5kZWZpbmVkIiYmKGw9M0RELnhTY2FsZSgp
KEQueCgpKG8sZikpKSxjLnB1c2goe2tleTpuPQoua2V5LHZhbHVlOkQueSgpKG8sZiksY29sb3I6
YShuLG4uc2VyaWVzSW5kZXgpfSl9KTtpZihjLmxlbmd0aD4yKXt2YXIgaD0zREQ9Ci55U2NhbGUo
KS5pbnZlcnQoaS5tb3VzZVkpLHA9M0RNYXRoLmFicyhELnlTY2FsZSgpLmRvbWFpbigpWzBdLUQu
eVNjYWxlKCkuZD0Kb21haW4oKVsxXSksZD0zRC4wMypwLG09M0RlLm5lYXJlc3RWYWx1ZUluZGV4
KGMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhPQpsdWV9KSxoLGQpO20hPTNEPTNEbnVsbCYm
KGNbbV0uaGlnaGxpZ2h0PTNEITApfXZhciBnPTNEbi50aWNrRm9ybWF0KCkoRC54KCk9CihzLGYp
LGYpO28udG9vbHRpcC5wb3NpdGlvbih7bGVmdDpsK3UubGVmdCx0b3A6aS5tb3VzZVkrdS50b3B9
KS5jaGFydENvbnRhaT0KbmVyKEEucGFyZW50Tm9kZSkuZW5hYmxlZCh2KS52YWx1ZUZvcm1hdHRl
cihmdW5jdGlvbihlLHQpe3JldHVybiByLnRpY2tGb3JtPQphdCgpKGUpfSkuZGF0YSh7dmFsdWU6
ZyxzZXJpZXM6Y30pKCksby5yZW5kZXJHdWlkZUxpbmUobCl9KSxvLmRpc3BhdGNoLm9uKCI9CmVs
ZW1lbnRNb3VzZW91dCIsZnVuY3Rpb24oZSl7ay50b29sdGlwSGlkZSgpLHQuY2xlYXJIaWdobGln
aHRzKCl9KSxrLm9uKCJ0bz0Kb2x0aXBTaG93IixmdW5jdGlvbihlKXt2JiZfKGUsQS5wYXJlbnRO
b2RlKX0pLGsub24oImNoYW5nZVN0YXRlIixmdW5jdGlvbihlPQope3R5cGVvZiBlLmRpc2FibGVk
IT0zRCJ1bmRlZmluZWQiJiYoYi5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7dC5kaXNhYmxlZD0zRGU9
Ci5kaXNhYmxlZFtuXX0pLHguZGlzYWJsZWQ9M0RlLmRpc2FibGVkKSx0eXBlb2YgZS5pbmRleCE9
M0QidW5kZWZpbmVkIiYmKE0uaT0KPTNEZS5pbmRleCxNLng9M0RPKE0uaSkseC5pbmRleD0zRGUu
aW5kZXgsdHQuZGF0YShbTV0pKSx0eXBlb2YgZS5yZXNjYWxlWSE9Cj0zRCJ1bmRlZmluZWQiJiYo
eT0zRGUucmVzY2FsZVkpLEQudXBkYXRlKCl9KX0pLER9ZnVuY3Rpb24gUChlLG4pe3JldHVybiBu
Lj0KbWFwKGZ1bmN0aW9uKG4scil7aWYoIW4udmFsdWVzKXJldHVybiBuO3ZhciBpPTNEbi52YWx1
ZXNbZV07aWYoaT0zRD0zRG51bGwpPQpyZXR1cm4gbjt2YXIgcz0zRHQueSgpKGksZSk7cmV0dXJu
IHM8LTAuOTUmJiFBPyhuLnRlbXBEaXNhYmxlZD0zRCEwLG4pOihuLnQ9CmVtcERpc2FibGVkPTNE
ITEsbi52YWx1ZXM9M0RuLnZhbHVlcy5tYXAoZnVuY3Rpb24oZSxuKXtyZXR1cm4gZS5kaXNwbGF5
PTNEez0KeToodC55KCkoZSxuKS1zKS8oMStzKX0sZX0pLG4pfSl9dmFyIHQ9M0RlLm1vZGVscy5s
aW5lKCksbj0zRGUubW9kZWxzLmF4aXMoPQopLHI9M0RlLm1vZGVscy5heGlzKCksaT0zRGUubW9k
ZWxzLmxlZ2VuZCgpLHM9M0RlLm1vZGVscy5sZWdlbmQoKSxvPTNEZS5pbnQ9CmVyYWN0aXZlR3Vp
ZGVsaW5lKCksdT0zRHt0b3A6MzAscmlnaHQ6MzAsYm90dG9tOjUwLGxlZnQ6NjB9LGE9M0RlLnV0
aWxzLmRlZj0KYXVsdENvbG9yKCksZj0zRG51bGwsbD0zRG51bGwsYz0zRCEwLGg9M0QhMCxwPTNE
ITAsZD0zRCExLHY9M0QhMCxtPTNEITAsZz0KPTNEITEseT0zRCEwLGI9M0RmdW5jdGlvbihlLHQs
bixyLGkpe3JldHVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIrbisiIGF0ICIrPQp0KyI8L3A+In0s
dyxFLFM9M0R0LmlkKCkseD0zRHtpbmRleDowLHJlc2NhbGVZOnl9LFQ9M0RudWxsLE49M0QiTm8g
RGF0YSBBdmE9CmlsYWJsZS4iLEM9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5hdmVyYWdlfSxrPTNE
ZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidD0Kb29sdGlwSGlkZSIsInN0YXRlQ2hhbmdlIiwi
Y2hhbmdlU3RhdGUiKSxMPTNEMCxBPTNEITE7bi5vcmllbnQoImJvdHRvbSIpLnRpPQpja1BhZGRp
bmcoNyksci5vcmllbnQoZD8icmlnaHQiOiJsZWZ0Iikscy51cGRhdGVTdGF0ZSghMSk7dmFyIE89
M0RkMy5zY2FsZS49CmxpbmVhcigpLE09M0R7aTowLHg6MH0sXz0zRGZ1bmN0aW9uKGkscyl7dmFy
IG89M0RpLnBvc1swXSsocy5vZmZzZXRMZWZ0fHwwKT0KLHU9M0RpLnBvc1sxXSsocy5vZmZzZXRU
b3B8fDApLGE9M0RuLnRpY2tGb3JtYXQoKSh0LngoKShpLnBvaW50LGkucG9pbnRJbmRlPQp4KSks
Zj0zRHIudGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksbD0zRGIoaS5z
ZXJpZXMua2V5LGEsZiw9CmksRCk7ZS50b29sdGlwLnNob3coW28sdV0sbCxudWxsLG51bGwscyl9
O3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91cz0KZW92ZXIudG9vbHRpcCIsZnVuY3Rp
b24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rdS5sZWZ0LGUucG9zWzFdK3UudG9wXSxrLnRvb2x0PQpp
cFNob3coZSl9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rp
b24oZSl7ay50b29sdGlwSGk9CmRlKGUpfSksay5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7
diYmZS50b29sdGlwLmNsZWFudXAoKX0pLEQuZGlzcGF0Y2g9Cj0zRGssRC5saW5lcz0zRHQsRC5s
ZWdlbmQ9M0RpLEQueEF4aXM9M0RuLEQueUF4aXM9M0RyLEQuaW50ZXJhY3RpdmVMYXllcj0zRD0K
byxkMy5yZWJpbmQoRCx0LCJkZWZpbmVkIiwiaXNBcmVhIiwieCIsInkiLCJ4U2NhbGUiLCJ5U2Nh
bGUiLCJzaXplIiwieERvbWFpPQpuIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsImZvcmNl
WCIsImZvcmNlWSIsImludGVyYWN0aXZlIiwiY2xpcEVkZ2UiLCI9CmNsaXBWb3Jvbm9pIiwidXNl
Vm9yb25vaSIsImlkIiksRC5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKEQpLEQu
bT0KYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odS50b3A9M0R0
eXBlb2YgZS50b3AhPTNEInVuZGVmPQppbmVkIj9lLnRvcDp1LnRvcCx1LnJpZ2h0PTNEdHlwZW9m
IGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp1LnJpZ2h0LHU9Ci5ib3R0b209M0R0eXBl
b2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dS5ib3R0b20sdS5sZWZ0PTNEdHlw
ZW9mID0KZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDp1LmxlZnQsRCk6dX0sRC53aWR0aD0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1PQptZW50cy5sZW5ndGg/KGY9M0RlLEQpOmZ9LEQuaGVp
Z2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9Cj0zRGUsRCk6bH0s
RC5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZS51dGls
cy5nZXRDbz0KbG9yKHQpLGkuY29sb3IoYSksRCk6YX0sRC5yZXNjYWxlWT0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PQo9M0RlLEQpOnl9LEQuc2hvd0NvbnRyb2xzPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09M0RlLEQpOm09Cn0sRC51c2VJ
bnRlcmFjdGl2ZUd1aWRlbGluZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhnPTNEZSxlPQo9M0Q9M0Q9M0QhMCYmKEQuaW50ZXJhY3RpdmUoITEpLEQudXNlVm9yb25vaSgh
MSkpLEQpOmd9LEQuc2hvd0xlZ2VuZD0zRGZ1bmM9CnRpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGM9M0RlLEQpOmN9LEQuc2hvd1hBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dT0Kcm4gYXJn
dW1lbnRzLmxlbmd0aD8oaD0zRGUsRCk6aH0sRC5zaG93WUF4aXM9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzPQoubGVuZ3RoPyhwPTNEZSxEKTpwfSxELnJpZ2h0QWxpZ25ZQXhpcz0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Q9Cmg/KGQ9M0RlLHIub3JpZW50KGU/InJp
Z2h0IjoibGVmdCIpLEQpOmR9LEQudG9vbHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYT0Kcmd1
bWVudHMubGVuZ3RoPyh2PTNEZSxEKTp2fSxELnRvb2x0aXBDb250ZW50PTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50PQpzLmxlbmd0aD8oYj0zRGUsRCk6Yn0sRC5zdGF0ZT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh4PTNEZSw9CkQpOnh9LEQuZGVmYXVsdFN0YXRl
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFQ9M0RlLEQpOlR9LEQubj0K
b0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTj0zRGUsRCk6Tn0s
RC5hdmVyYWdlPTNEZnVuY3RpPQpvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oQz0zRGUs
RCk6Q30sRC50cmFuc2l0aW9uRHVyYXRpb249M0RmdW5jdGlvbig9CmUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhMPTNEZSxEKTpMfSxELm5vRXJyb3JDaGVjaz0zRGZ1bmN0aW9uKGUpe3JldHVy
bj0KIGFyZ3VtZW50cy5sZW5ndGg/KEE9M0RlLEQpOkF9LER9LGUubW9kZWxzLmRpc2NyZXRlQmFy
PTNEZnVuY3Rpb24oKXtmdW5jdGlvPQpuIEUoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXt2
YXIgaT0zRG4tdC5sZWZ0LXQucmlnaHQsRT0zRHItdC50b3AtdC5ib3Q9CnRvbSxTPTNEZDMuc2Vs
ZWN0KHRoaXMpO2UuZm9yRWFjaChmdW5jdGlvbihlLHQpe2UudmFsdWVzLmZvckVhY2goZnVuY3Rp
b24oZT0KKXtlLnNlcmllcz0zRHR9KX0pO3ZhciBUPTNEcCYmZD9bXTplLm1hcChmdW5jdGlvbihl
KXtyZXR1cm4gZS52YWx1ZXMubWFwKGZ1PQpuY3Rpb24oZSx0KXtyZXR1cm57eDp1KGUsdCkseTph
KGUsdCkseTA6ZS55MH19KX0pO3MuZG9tYWluKHB8fGQzLm1lcmdlKFQpLm09CmFwKGZ1bmN0aW9u
KGUpe3JldHVybiBlLnh9KSkucmFuZ2VCYW5kcyh2fHxbMCxpXSwuMSksby5kb21haW4oZHx8ZDMu
ZXh0ZW50KD0KZDMubWVyZ2UoVCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnl9KS5jb25jYXQo
ZikpKSxjP28ucmFuZ2UobXx8W0UtKG8uZG9tPQphaW4oKVswXTwwPzEyOjApLG8uZG9tYWluKClb
MV0+MD8xMjowXSk6by5yYW5nZShtfHxbRSwwXSksYj0zRGJ8fHMsdz0zRHd8fG89Ci5jb3B5KCku
cmFuZ2UoW28oMCksbygwKV0pO3ZhciBOPTNEUy5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1kaXNj
cmV0ZWJhciIpLj0KZGF0YShbZV0pLEM9M0ROLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xh
c3MiLCJudmQzIG52LXdyYXAgbnYtZGlzY3JldGViPQphciIpLGs9M0RDLmFwcGVuZCgiZyIpLEw9
M0ROLnNlbGVjdCgiZyIpO2suYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1ncm89CnVwcyIp
LE4uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdC5sZWZ0KyIsIit0LnRvcCsiKSIpO3Zh
ciBBPTNETi5zZWxlYz0KdCgiLm52LWdyb3VwcyIpLnNlbGVjdEFsbCgiLm52LWdyb3VwIikuZGF0
YShmdW5jdGlvbihlKXtyZXR1cm4gZX0sZnVuY3Rpb24oPQplKXtyZXR1cm4gZS5rZXl9KTtBLmVu
dGVyKCkuYXBwZW5kKCJnIikuc3R5bGUoInN0cm9rZS1vcGFjaXR5IiwxZS02KS5zdHlsZSg9CiJm
aWxsLW9wYWNpdHkiLDFlLTYpLEEuZXhpdCgpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMWUtNiku
c3R5bGUoImZpbGwtb3BhYz0KaXR5IiwxZS02KS5yZW1vdmUoKSxBLmF0dHIoImNsYXNzIixmdW5j
dGlvbihlLHQpe3JldHVybiJudi1ncm91cCBudi1zZXJpZXMtPQoiK3R9KS5jbGFzc2VkKCJob3Zl
ciIsZnVuY3Rpb24oZSl7cmV0dXJuIGUuaG92ZXJ9KSxBLnN0eWxlKCJzdHJva2Utb3BhY2l0eSI9
CiwxKS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwuNzUpO3ZhciBPPTNEQS5zZWxlY3RBbGwoImcubnYt
YmFyIikuZGF0YShmdW5jdGlvbj0KKGUpe3JldHVybiBlLnZhbHVlc30pO08uZXhpdCgpLnJlbW92
ZSgpO3ZhciBNPTNETy5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoPQoidHJhbnNmb3JtIixmdW5j
dGlvbihlLHQsbil7cmV0dXJuInRyYW5zbGF0ZSgiKyhzKHUoZSx0KSkrcy5yYW5nZUJhbmQoKSou
MDU9CikrIiwgIitvKDApKyIpIn0pLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKHQsbil7ZDMuc2Vs
ZWN0KHRoaXMpLmNsYXNzZWQoImhvdj0KZXIiLCEwKSxnLmVsZW1lbnRNb3VzZW92ZXIoe3ZhbHVl
OmEodCxuKSxwb2ludDp0LHNlcmllczplW3Quc2VyaWVzXSxwb3M6W3MoPQp1KHQsbikpK3MucmFu
Z2VCYW5kKCkqKHQuc2VyaWVzKy41KS9lLmxlbmd0aCxvKGEodCxuKSldLHBvaW50SW5kZXg6bixz
ZXJpZXM9CkluZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnR9KX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rp
b24odCxuKXtkMy5zZWxlY3QodGhpcykuYz0KbGFzc2VkKCJob3ZlciIsITEpLGcuZWxlbWVudE1v
dXNlb3V0KHt2YWx1ZTphKHQsbikscG9pbnQ6dCxzZXJpZXM6ZVt0LnNlcmllPQpzXSxwb2ludElu
ZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpkMy5ldmVudH0pfSkub24oImNsaWNrIixmdW5j
dGlvbih0LG49Cil7Zy5lbGVtZW50Q2xpY2soe3ZhbHVlOmEodCxuKSxwb2ludDp0LHNlcmllczpl
W3Quc2VyaWVzXSxwb3M6W3ModSh0LG4pKStzLj0KcmFuZ2VCYW5kKCkqKHQuc2VyaWVzKy41KS9l
Lmxlbmd0aCxvKGEodCxuKSldLHBvaW50SW5kZXg6bixzZXJpZXNJbmRleDp0LnNlPQpyaWVzLGU6
ZDMuZXZlbnR9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0pLm9uKCJkYmxjbGljayIsZnVu
Y3Rpb24odCxuKXs9CmcuZWxlbWVudERibENsaWNrKHt2YWx1ZTphKHQsbikscG9pbnQ6dCxzZXJp
ZXM6ZVt0LnNlcmllc10scG9zOltzKHUodCxuKSkrcz0KLnJhbmdlQmFuZCgpKih0LnNlcmllcysu
NSkvZS5sZW5ndGgsbyhhKHQsbikpXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zPQplcmll
cyxlOmQzLmV2ZW50fSksZDMuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9KTtNLmFwcGVuZCgicmVj
dCIpLmF0dHIoImhlaWc9Cmh0IiwwKS5hdHRyKCJ3aWR0aCIscy5yYW5nZUJhbmQoKSouOS9lLmxl
bmd0aCksYz8oTS5hcHBlbmQoInRleHQiKS5hdHRyKCJ0ZT0KeHQtYW5jaG9yIiwibWlkZGxlIiks
Ty5zZWxlY3QoInRleHQiKS50ZXh0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGgoYShlLHQpKX0pPQou
YXR0cigieCIscy5yYW5nZUJhbmQoKSouOS8yKS5hdHRyKCJ5IixmdW5jdGlvbihlLHQpe3JldHVy
biBhKGUsdCk8MD9vKGEoZSw9CnQpKS1vKDApKzEyOi00fSkpOk8uc2VsZWN0QWxsKCJ0ZXh0Iiku
cmVtb3ZlKCksTy5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KT0Ke3JldHVybiBhKGUsdCk8MD8i
bnYtYmFyIG5lZ2F0aXZlIjoibnYtYmFyIHBvc2l0aXZlIn0pLnN0eWxlKCJmaWxsIixmdW5jdGlv
PQpuKGUsdCl7cmV0dXJuIGUuY29sb3J8fGwoZSx0KX0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9u
KGUsdCl7cmV0dXJuIGUuY29sb3I9Cnx8bChlLHQpfSkuc2VsZWN0KCJyZWN0IikuYXR0cigiY2xh
c3MiLHkpLmF0dHIoIndpZHRoIixzLnJhbmdlQmFuZCgpKi45L2UubD0KZW5ndGgpLE8uYXR0cigi
dHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3ZhciBuPTNEcyh1KGUsdCkpK3MucmFuZ2VCYW5kKCkq
LjA1PQoscj0zRGEoZSx0KTwwP28oMCk6bygwKS1vKGEoZSx0KSk8MT9vKDApLTE6byhhKGUsdCkp
O3JldHVybiJ0cmFuc2xhdGUoIituKyI9CiwgIityKyIpIn0pLnNlbGVjdCgicmVjdCIpLmF0dHIo
ImhlaWdodCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgoTWF0aD0KLmFicyhvKGEoZSx0
KSktbyhkJiZkWzBdfHwwKSl8fDEpfSksYj0zRHMuY29weSgpLHc9M0RvLmNvcHkoKX0pLEV9dmFy
IHQ9M0R7PQp0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0sbj0zRDk2MCxyPTNENTAwLGk9
M0RNYXRoLmZsb29yKE1hdGgucmFuZG9tKCk9CioxZTQpLHM9M0RkMy5zY2FsZS5vcmRpbmFsKCks
bz0zRGQzLnNjYWxlLmxpbmVhcigpLHU9M0RmdW5jdGlvbihlKXtyZXR1cm4gZT0KLnh9LGE9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gZS55fSxmPTNEWzBdLGw9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigp
LGM9M0QhMSxoPQo9M0RkMy5mb3JtYXQoIiwuMmYiKSxwLGQsdixtLGc9M0RkMy5kaXNwYXRjaCgi
Y2hhcnRDbGljayIsImVsZW1lbnRDbGljayIsImU9CmxlbWVudERibENsaWNrIiwiZWxlbWVudE1v
dXNlb3ZlciIsImVsZW1lbnRNb3VzZW91dCIpLHk9M0QiZGlzY3JldGVCYXIiLGIsdz0KO3JldHVy
biBFLmRpc3BhdGNoPTNEZyxFLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoRSks
RS54PTNEZnVuY3RpPQpvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsRSk6dX0s
RS55PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW49CnRzLmxlbmd0aD8oYT0zRGUsRSk6YX0s
RS5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC50bz0KcD0z
RHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDp0LnRvcCx0LnJpZ2h0PTNEdHlwZW9m
IGUucmlnaHQhPTNEInVuPQpkZWZpbmVkIj9lLnJpZ2h0OnQucmlnaHQsdC5ib3R0b209M0R0eXBl
b2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b209Cjp0LmJvdHRvbSx0LmxlZnQ9M0R0
eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDp0LmxlZnQsRSk6dH0sRS53aWR0aD0K
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49M0RlLEUpOm59LEUuaGVp
Z2h0PTNEZnVuY3Rpb24oZSl7PQpyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0zRGUsRSk6cn0s
RS54U2NhbGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnQ9CnMubGVuZ3RoPyhzPTNEZSxF
KTpzfSxFLnlTY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNE
ZT0KLEUpOm99LEUueERvbWFpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhwPTNEZSxFKTpwfSxFLnlEb21hPQppbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhkPTNEZSxFKTpkfSxFLnhSYW5nZT0zRGZ1bmN0aW9uKGU9Cil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHY9M0RlLEUpOnZ9LEUueVJhbmdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZT0KbnRzLmxlbmd0aD8obT0zRGUsRSk6bX0sRS5mb3JjZVk9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0KPTNEZSxFKTpmfSxFLmNvbG9yPTNEZnVuY3Rpb24odCl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLnV0aWxzLmdldENvPQpsb3IodCksRSk6bH0s
RS5pZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPTNEZSxFKTppfSxF
LnNob3c9ClZhbHVlcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNE
ZSxFKTpjfSxFLnZhbHVlRm9ybWF0PTNEZj0KdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oaD0zRGUsRSk6aH0sRS5yZWN0Q2xhc3M9M0RmdW5jdGlvbihlKXtyPQpldHVybiBhcmd1
bWVudHMubGVuZ3RoPyh5PTNEZSxFKTp5fSxFfSxlLm1vZGVscy5kaXNjcmV0ZUJhckNoYXJ0PTNE
ZnVuY3Rpb249Cigpe2Z1bmN0aW9uIHcoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXt2YXIg
dT0zRGQzLnNlbGVjdCh0aGlzKSxwPTNEdGhpcz0KLHk9M0Qoc3x8cGFyc2VJbnQodS5zdHlsZSgi
d2lkdGgiKSl8fDk2MCktaS5sZWZ0LWkucmlnaHQsRT0zRChvfHxwYXJzZUludCh1PQouc3R5bGUo
ImhlaWdodCIpKXx8NDAwKS1pLnRvcC1pLmJvdHRvbTt3LnVwZGF0ZT0zRGZ1bmN0aW9uKCl7Zy5i
ZWZvcmVVcGRhdGU9CigpLHUuY2FsbCh3KX0sdy5jb250YWluZXI9M0R0aGlzO2lmKCFlfHwhZS5s
ZW5ndGh8fCFlLmZpbHRlcihmdW5jdGlvbihlKXtyZT0KdHVybiBlLnZhbHVlcy5sZW5ndGh9KS5s
ZW5ndGgpe3ZhciBTPTNEdS5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFttXSk7PQpyZXR1
cm4gUy5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0RhdGEi
KS5hdHRyKCJkeSIsIi09Ci43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxTLmF0
dHIoIngiLGkubGVmdCt5LzIpLmF0dHIoInkiLGkudG9wKz0KRS8yKS50ZXh0KGZ1bmN0aW9uKGUp
e3JldHVybiBlfSksd311LnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbW92ZSgpLGQ9M0R0PQou
eFNjYWxlKCksdj0zRHQueVNjYWxlKCkuY2xhbXAoITApO3ZhciBUPTNEdS5zZWxlY3RBbGwoImcu
bnYtd3JhcC5udi1kaXNjcmU9CnRlQmFyV2l0aEF4ZXMiKS5kYXRhKFtlXSksTj0zRFQuZW50ZXIo
KS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtdz0KcmFwIG52LWRpc2NyZXRlQmFy
V2l0aEF4ZXMiKS5hcHBlbmQoImciKSxDPTNETi5hcHBlbmQoImRlZnMiKSxrPTNEVC5zZWxlY3Qo
PQoiZyIpO04uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14IG52LWF4aXMiKSxOLmFwcGVu
ZCgiZyIpLmF0dHIoImNsYXNzIiw9CiJudi15IG52LWF4aXMiKS5hcHBlbmQoImciKS5hdHRyKCJj
bGFzcyIsIm52LXplcm9MaW5lIikuYXBwZW5kKCJsaW5lIiksTi5hcD0KcGVuZCgiZyIpLmF0dHIo
ImNsYXNzIiwibnYtYmFyc1dyYXAiKSxrLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2ku
bGVmPQp0KyIsIitpLnRvcCsiKSIpLGwmJmsuc2VsZWN0KCIubnYteS5udi1heGlzIikuYXR0cigi
dHJhbnNmb3JtIiwidHJhbnNsYXRlKCI9Cit5KyIsMCkiKSx0LndpZHRoKHkpLmhlaWdodChFKTt2
YXIgTD0zRGsuc2VsZWN0KCIubnYtYmFyc1dyYXAiKS5kYXR1bShlLmZpbD0KdGVyKGZ1bmN0aW9u
KGUpe3JldHVybiFlLmRpc2FibGVkfSkpO0wuY2FsbCh0KSxDLmFwcGVuZCgiY2xpcFBhdGgiKS5h
dHRyKCJpPQpkIiwibnYteC1sYWJlbC1jbGlwLSIrdC5pZCgpKS5hcHBlbmQoInJlY3QiKSxrLnNl
bGVjdCgiI252LXgtbGFiZWwtY2xpcC0iK3Q9Ci5pZCgpKyIgcmVjdCIpLmF0dHIoIndpZHRoIixk
LnJhbmdlQmFuZCgpKihjPzI6MSkpLmF0dHIoImhlaWdodCIsMTYpLmF0dHIoIj0KeCIsLWQucmFu
Z2VCYW5kKCkvKGM/MToyKSk7aWYoYSl7bi5zY2FsZShkKS50aWNrcyh5LzEwMCkudGlja1NpemUo
LUUsMCksay5zPQplbGVjdCgiLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5z
bGF0ZSgwLCIrKHYucmFuZ2UoKVswXSsodC5zaG89CndWYWx1ZXMoKSYmdi5kb21haW4oKVswXTww
PzE2OjApKSsiKSIpLGsuc2VsZWN0KCIubnYteC5udi1heGlzIikuY2FsbChuKTt2YT0KciBBPTNE
ay5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5zZWxlY3RBbGwoImciKTtjJiZBLnNlbGVjdEFsbCgi
dGV4dCIpLmF0dHIoPQoidHJhbnNmb3JtIixmdW5jdGlvbihlLHQsbil7cmV0dXJuInRyYW5zbGF0
ZSgwLCIrKG4lMj0zRD0zRDA/IjUiOiIxNyIpKyIpIn09Cil9ZiYmKHIuc2NhbGUodikudGlja3Mo
RS8zNikudGlja1NpemUoLXksMCksay5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5jYWxsKD0Kcikp
LGsuc2VsZWN0KCIubnYtemVyb0xpbmUgbGluZSIpLmF0dHIoIngxIiwwKS5hdHRyKCJ4MiIseSku
YXR0cigieTEiLHYoMCkpPQouYXR0cigieTIiLHYoMCkpLGcub24oInRvb2x0aXBTaG93IixmdW5j
dGlvbihlKXtoJiZiKGUscC5wYXJlbnROb2RlKX0pfSksd309CnZhciB0PTNEZS5tb2RlbHMuZGlz
Y3JldGVCYXIoKSxuPTNEZS5tb2RlbHMuYXhpcygpLHI9M0RlLm1vZGVscy5heGlzKCksaT0zRD0K
e3RvcDoxNSxyaWdodDoxMCxib3R0b206NTAsbGVmdDo2MH0scz0zRG51bGwsbz0zRG51bGwsdT0z
RGUudXRpbHMuZ2V0Q29sb3IoPQopLGE9M0QhMCxmPTNEITAsbD0zRCExLGM9M0QhMSxoPTNEITAs
cD0zRGZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIjxoMz4iK3Q9CisiPC9oMz4iKyI8cD4iK24r
IjwvcD4ifSxkLHYsbT0zRCJObyBEYXRhIEF2YWlsYWJsZS4iLGc9M0RkMy5kaXNwYXRjaCgidG9v
bD0KdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwiYmVmb3JlVXBkYXRlIikseT0zRDA7bi5vcmllbnQo
ImJvdHRvbSIpLmhpZ2hsaWdodFplPQpybyghMSkuc2hvd01heE1pbighMSkudGlja0Zvcm1hdChm
dW5jdGlvbihlKXtyZXR1cm4gZX0pLHIub3JpZW50KGw/InJpZ2h0Ijo9CiJsZWZ0IikudGlja0Zv
cm1hdChkMy5mb3JtYXQoIiwuMWYiKSk7dmFyIGI9M0RmdW5jdGlvbihpLHMpe3ZhciBvPTNEaS5w
b3NbMD0KXSsocy5vZmZzZXRMZWZ0fHwwKSx1PTNEaS5wb3NbMV0rKHMub2Zmc2V0VG9wfHwwKSxh
PTNEbi50aWNrRm9ybWF0KCkodC54KCkoPQppLnBvaW50LGkucG9pbnRJbmRleCkpLGY9M0RyLnRp
Y2tGb3JtYXQoKSh0LnkoKShpLnBvaW50LGkucG9pbnRJbmRleCkpLGw9M0Q9CnAoaS5zZXJpZXMu
a2V5LGEsZixpLHcpO2UudG9vbHRpcC5zaG93KFtvLHVdLGwsaS52YWx1ZTwwPyJuIjoicyIsbnVs
bCxzKX07cj0KZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixm
dW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swPQpdK2kubGVmdCxlLnBvc1sxXStpLnRvcF0sZy50
b29sdGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC49CnRvb2x0aXAi
LGZ1bmN0aW9uKGUpe2cudG9vbHRpcEhpZGUoZSl9KSxnLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rp
b24oKXtoJiZlLj0KdG9vbHRpcC5jbGVhbnVwKCl9KSx3LmRpc3BhdGNoPTNEZyx3LmRpc2NyZXRl
YmFyPTNEdCx3LnhBeGlzPTNEbix3LnlBeGlzPTNEPQpyLGQzLnJlYmluZCh3LHQsIngiLCJ5Iiwi
eERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJmb3JjZVgiLCJmb3I9CmNlWSIs
ImlkIiwic2hvd1ZhbHVlcyIsInZhbHVlRm9ybWF0Iiksdy5vcHRpb25zPTNEZS51dGlscy5vcHRp
b25zRnVuYy5iaW5kKD0Kdyksdy5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oaS50b3A9M0R0eXBlb2YgZS50b3AhPTNEPQoidW5kZWZpbmVkIj9lLnRvcDppLnRv
cCxpLnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDppLnI9Cmln
aHQsaS5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206aS5i
b3R0b20saS5sZWZ0PTNEdD0KeXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDppLmxl
ZnQsdyk6aX0sdy53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVyPQpuIGFyZ3VtZW50cy5sZW5ndGg/
KHM9M0RlLHcpOnN9LHcuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW49
Cmd0aD8obz0zRGUsdyk6b30sdy5jb2xvcj0zRGZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyh1PTNEZS51dGlscz0KLmdldENvbG9yKG4pLHQuY29sb3IodSksdyk6dX0sdy5zaG93
WEF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlPQpuZ3RoPyhhPTNEZSx3KTph
fSx3LnNob3dZQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNE
ZSw9CncpOmZ9LHcucmlnaHRBbGlnbllBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGw9M0RlLHIub3JpZT0KbnQoZT8icmlnaHQiOiJsZWZ0Iiksdyk6bH0sdy5zdGFn
Z2VyTGFiZWxzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sPQplbmd0aD8oYz0zRGUs
dyk6Y30sdy50b29sdGlwcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyho
PTNEZSw9CncpOmh9LHcudG9vbHRpcENvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8ocD0zRGUsdyk6cH0sdz0KLm5vRGF0YT0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhtPTNEZSx3KTptfSx3LnRyYW5zaXRpb25EdXJhPQp0aW9uPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9M0RlLHcpOnl9LHd9LGUubW9kZWxz
LmRpc3RyaWI9CnV0aW9uPTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBsKGUpe3JldHVybiBlLmVhY2go
ZnVuY3Rpb24oZSl7dmFyIGE9M0RuLShpPTNEPQo9M0Q9M0QieCI/dC5sZWZ0K3QucmlnaHQ6dC50
b3ArdC5ib3R0b20pLGw9M0RpPTNEPTNEIngiPyJ5IjoieCIsYz0zRGQzLnNlbGU9CmN0KHRoaXMp
O2Y9M0RmfHx1O3ZhciBoPTNEYy5zZWxlY3RBbGwoImcubnYtZGlzdHJpYnV0aW9uIikuZGF0YShb
ZV0pLHA9M0RoLj0KZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtZGlz
dHJpYnV0aW9uIiksZD0zRHAuYXBwZW5kKCJnIiksPQp2PTNEaC5zZWxlY3QoImciKTtoLmF0dHIo
InRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50b3ArIikiKTt2YXI9CiBtPTNE
di5zZWxlY3RBbGwoImcubnYtZGlzdCIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGZ1bmN0
aW9uKGUpe3JldHVybj0KIGUua2V5fSk7bS5lbnRlcigpLmFwcGVuZCgiZyIpLG0uYXR0cigiY2xh
c3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIm52LWRpc3QgPQpudi1zZXJpZXMtIit0fSkuc3R5bGUo
InN0cm9rZSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gbyhlLHQpfSk7dmFyIGc9M0RtLnNlbGU9CmN0
QWxsKCJsaW5lLm52LWRpc3QiK2kpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzfSk7
Zy5lbnRlcigpLmFwcGVuZD0KKCJsaW5lIikuYXR0cihpKyIxIixmdW5jdGlvbihlLHQpe3JldHVy
biBmKHMoZSx0KSl9KS5hdHRyKGkrIjIiLGZ1bmN0aW9uKGUsPQp0KXtyZXR1cm4gZihzKGUsdCkp
fSksbS5leGl0KCkuc2VsZWN0QWxsKCJsaW5lLm52LWRpc3QiK2kpLmF0dHIoaSsiMSIsZnVuY3Q9
CmlvbihlLHQpe3JldHVybiB1KHMoZSx0KSl9KS5hdHRyKGkrIjIiLGZ1bmN0aW9uKGUsdCl7cmV0
dXJuIHUocyhlLHQpKX0pLnN0eT0KbGUoInN0cm9rZS1vcGFjaXR5IiwwKS5yZW1vdmUoKSxnLmF0
dHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiJudi1kaXN0PQoiK2krIiBudi1kaXN0Iitp
KyItIit0fSkuYXR0cihsKyIxIiwwKS5hdHRyKGwrIjIiLHIpLGcuYXR0cihpKyIxIixmdW5jdGlv
big9CmUsdCl7cmV0dXJuIHUocyhlLHQpKX0pLmF0dHIoaSsiMiIsZnVuY3Rpb24oZSx0KXtyZXR1
cm4gdShzKGUsdCkpfSksZj0zRHUuYz0Kb3B5KCl9KSxsfXZhciB0PTNEe3RvcDowLHJpZ2h0OjAs
Ym90dG9tOjAsbGVmdDowfSxuPTNENDAwLHI9M0Q4LGk9M0QieCIscz0KPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGVbaV19LG89M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLHU9M0RkMy5zY2FsZS5saW5l
YXIoPQopLGEsZjtyZXR1cm4gbC5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKGwp
LGwubWFyZ2luPTNEZnVuY3Rpb24oZSk9CntyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC50b3A9
M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6dC50b3AsdD0KLnJpZ2h0PTNEdHlw
ZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp0LnJpZ2h0LHQuYm90dG9tPTNEdHlw
ZW9mIGUuPQpib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dC5ib3R0b20sdC5sZWZ0PTNE
dHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmU9CmQiP2UubGVmdDp0LmxlZnQsbCk6dH0sbC53aWR0
aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPTNEZT0KLGwpOm59LGwu
YXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPTNEZSxsKTppfSxs
LnNpemU9M0RmPQp1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZSxsKTpy
fSxsLmdldERhdGE9M0RmdW5jdGlvbihlKXtyZXQ9CnVybiBhcmd1bWVudHMubGVuZ3RoPyhzPTNE
ZDMuZnVuY3RvcihlKSxsKTpzfSxsLnNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuID0KYXJndW1l
bnRzLmxlbmd0aD8odT0zRGUsbCk6dX0sbC5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPQo/KG89M0RlLnV0aWxzLmdldENvbG9yKHQpLGwpOm99LGx9LGUubW9kZWxz
Lmhpc3RvcmljYWxCYXJDaGFydD0zRGZ1bmN0aW9uKCk9CntmdW5jdGlvbiB4KGUpe3JldHVybiBl
LmVhY2goZnVuY3Rpb24oZCl7dmFyIEU9M0RkMy5zZWxlY3QodGhpcyksVD0zRHRoaXMsTj0KPTNE
KHV8fHBhcnNlSW50KEUuc3R5bGUoIndpZHRoIikpfHw5NjApLXMubGVmdC1zLnJpZ2h0LEM9M0Qo
YXx8cGFyc2VJbnQoRS5zPQp0eWxlKCJoZWlnaHQiKSl8fDQwMCktcy50b3Atcy5ib3R0b207eC51
cGRhdGU9M0RmdW5jdGlvbigpe0UuY2FsbCh4KX0seC5jb249CnRhaW5lcj0zRHRoaXMsZy5kaXNh
YmxlZD0zRGQubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pO2lmKCF5KXt2YT0K
ciBrO3k9M0R7fTtmb3IoayBpbiBnKWdba11pbnN0YW5jZW9mIEFycmF5P3lba109M0RnW2tdLnNs
aWNlKDApOnlba109M0RnW2tdPQp9aWYoIWR8fCFkLmxlbmd0aHx8IWQuZmlsdGVyKGZ1bmN0aW9u
KGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgpe3Y9CmFyIEw9M0RFLnNlbGVjdEFs
bCgiLm52LW5vRGF0YSIpLmRhdGEoW2JdKTtyZXR1cm4gTC5lbnRlcigpLmFwcGVuZCgidGV4dCIp
Lj0KYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHls
ZSgidGV4dC1hbmNob3IiLCJtaWRkPQpsZSIpLEwuYXR0cigieCIscy5sZWZ0K04vMikuYXR0cigi
eSIscy50b3ArQy8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSk9Cix4fUUuc2VsZWN0QWxs
KCIubnYtbm9EYXRhIikucmVtb3ZlKCksdj0zRHQueFNjYWxlKCksbT0zRHQueVNjYWxlKCk7dmFy
IEE9Cj0zREUuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtaGlzdG9yaWNhbEJhckNoYXJ0IikuZGF0
YShbZF0pLE89M0RBLmVudGVyKCkuYT0KcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYt
d3JhcCBudi1oaXN0b3JpY2FsQmFyQ2hhcnQiKS5hcHBlbmQoImciKSxNPQo9M0RBLnNlbGVjdCgi
ZyIpO08uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14IG52LWF4aXMiKSxPLmFwcGVuZCgi
ZyIpLmE9CnR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKSxPLmFwcGVuZCgiZyIpLmF0dHIoImNs
YXNzIiwibnYtYmFyc1dyYXAiKSxPLmFwcD0KZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1sZWdl
bmRXcmFwIiksZiYmKGkud2lkdGgoTiksTS5zZWxlY3QoIi5udi1sZWdlbmRXPQpyYXAiKS5kYXR1
bShkKS5jYWxsKGkpLHMudG9wIT0zRGkuaGVpZ2h0KCkmJihzLnRvcD0zRGkuaGVpZ2h0KCksQz0z
RChhfHxwYXI9CnNlSW50KEUuc3R5bGUoImhlaWdodCIpKXx8NDAwKS1zLnRvcC1zLmJvdHRvbSks
QS5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuYT0KdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUo
MCwiKyAtcy50b3ArIikiKSksQS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoPQoiK3MubGVm
dCsiLCIrcy50b3ArIikiKSxoJiZNLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmF0dHIoInRyYW5z
Zm9ybSIsInRyYW49CnNsYXRlKCIrTisiLDApIiksdC53aWR0aChOKS5oZWlnaHQoQykuY29sb3Io
ZC5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jbz0KbG9yfHxvKGUsdCl9KS5maWx0ZXIoZnVu
Y3Rpb24oZSx0KXtyZXR1cm4hZFt0XS5kaXNhYmxlZH0pKTt2YXIgXz0zRE0uc2VsZWN0PQooIi5u
di1iYXJzV3JhcCIpLmRhdHVtKGQuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVk
fSkpO18uY2FsbCh0KSw9CmwmJihuLnNjYWxlKHYpLnRpY2tTaXplKC1DLDApLE0uc2VsZWN0KCIu
bnYteC5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidD0KcmFuc2xhdGUoMCwiK20ucmFuZ2Uo
KVswXSsiKSIpLE0uc2VsZWN0KCIubnYteC5udi1heGlzIikuY2FsbChuKSksYyYmKHIuc2NhPQps
ZShtKS50aWNrcyhDLzM2KS50aWNrU2l6ZSgtTiwwKSxNLnNlbGVjdCgiLm52LXkubnYtYXhpcyIp
LmNhbGwocikpLGkuZGlzcGE9CnRjaC5vbigibGVnZW5kQ2xpY2siLGZ1bmN0aW9uKHQsbil7dC5k
aXNhYmxlZD0zRCF0LmRpc2FibGVkLGQuZmlsdGVyKGZ1bmN0aT0Kb24oZSl7cmV0dXJuIWUuZGlz
YWJsZWR9KS5sZW5ndGh8fGQubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVkPTNEITEs
PQpBLnNlbGVjdEFsbCgiLm52LXNlcmllcyIpLmNsYXNzZWQoImRpc2FibGVkIiwhMSksZX0pLGcu
ZGlzYWJsZWQ9M0RkLm1hcChmdW49CmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pLHcuc3Rh
dGVDaGFuZ2UoZyksZS5jYWxsKHgpfSksaS5kaXNwYXRjaC5vbigibD0KZWdlbmREYmxjbGljayIs
ZnVuY3Rpb24oZSl7ZC5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuZGlzYWJsZWQ9M0QhMH0pLGUuZGlz
YWJsPQplZD0zRCExLGcuZGlzYWJsZWQ9M0RkLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlz
YWJsZWR9KSx3LnN0YXRlQ2hhbmdlKGc9CikseC51cGRhdGUoKX0pLHcub24oInRvb2x0aXBTaG93
IixmdW5jdGlvbihlKXtwJiZTKGUsVC5wYXJlbnROb2RlKX0pLHcub24oIj0KY2hhbmdlU3RhdGUi
LGZ1bmN0aW9uKGUpe3R5cGVvZiBlLmRpc2FibGVkIT0zRCJ1bmRlZmluZWQiJiYoZC5mb3JFYWNo
KGZ1bmN0PQppb24odCxuKXt0LmRpc2FibGVkPTNEZS5kaXNhYmxlZFtuXX0pLGcuZGlzYWJsZWQ9
M0RlLmRpc2FibGVkKSx4LnVwZGF0ZSgpfSk9Cn0pLHh9dmFyIHQ9M0RlLm1vZGVscy5oaXN0b3Jp
Y2FsQmFyKCksbj0zRGUubW9kZWxzLmF4aXMoKSxyPTNEZS5tb2RlbHMuYXhpcz0KKCksaT0zRGUu
bW9kZWxzLmxlZ2VuZCgpLHM9M0R7dG9wOjMwLHJpZ2h0OjkwLGJvdHRvbTo1MCxsZWZ0OjkwfSxv
PTNEZS51dGlsPQpzLmRlZmF1bHRDb2xvcigpLHU9M0RudWxsLGE9M0RudWxsLGY9M0QhMSxsPTNE
ITAsYz0zRCEwLGg9M0QhMSxwPTNEITAsZD0zRGY9CnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4i
PGgzPiIrZSsiPC9oMz4iKyI8cD4iK24rIiBhdCAiK3QrIjwvcD4ifSx2LG0sZz0zRD0Ke30seT0z
RG51bGwsYj0zRCJObyBEYXRhIEF2YWlsYWJsZS4iLHc9M0RkMy5kaXNwYXRjaCgidG9vbHRpcFNo
b3ciLCJ0b29sdGlwPQpIaWRlIiwic3RhdGVDaGFuZ2UiLCJjaGFuZ2VTdGF0ZSIpLEU9M0QwO24u
b3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg3KSw9CnIub3JpZW50KGg/InJpZ2h0IjoibGVm
dCIpO3ZhciBTPTNEZnVuY3Rpb24oaSxzKXtpZihzKXt2YXIgbz0zRGQzLnNlbGVjdChzKT0KLnNl
bGVjdCgic3ZnIiksdT0zRG8ubm9kZSgpP28uYXR0cigidmlld0JveCIpOm51bGw7aWYodSl7dT0z
RHUuc3BsaXQoIiAiKTt2PQphciBhPTNEcGFyc2VJbnQoby5zdHlsZSgid2lkdGgiKSkvdVsyXTtp
LnBvc1swXT0zRGkucG9zWzBdKmEsaS5wb3NbMV09M0RpLnA9Cm9zWzFdKmF9fXZhciBmPTNEaS5w
b3NbMF0rKHMub2Zmc2V0TGVmdHx8MCksbD0zRGkucG9zWzFdKyhzLm9mZnNldFRvcHx8MCksYz0K
PTNEbi50aWNrRm9ybWF0KCkodC54KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKSxoPTNEci50aWNr
Rm9ybWF0KCkodC55KCkoaS5wPQpvaW50LGkucG9pbnRJbmRleCkpLHA9M0RkKGkuc2VyaWVzLmtl
eSxjLGgsaSx4KTtlLnRvb2x0aXAuc2hvdyhbZixsXSxwLG51bGw9CixudWxsLHMpfTtyZXR1cm4g
dC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBv
cz0KPTNEW2UucG9zWzBdK3MubGVmdCxlLnBvc1sxXStzLnRvcF0sdy50b29sdGlwU2hvdyhlKX0p
LHQuZGlzcGF0Y2gub24oImVsZW1lPQpudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe3cu
dG9vbHRpcEhpZGUoZSl9KSx3Lm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Q9Cmlvbigpe3AmJmUudG9v
bHRpcC5jbGVhbnVwKCl9KSx4LmRpc3BhdGNoPTNEdyx4LmJhcnM9M0R0LHgubGVnZW5kPTNEaSx4
LnhBeD0KaXM9M0RuLHgueUF4aXM9M0RyLGQzLnJlYmluZCh4LHQsImRlZmluZWQiLCJpc0FyZWEi
LCJ4IiwieSIsInNpemUiLCJ4U2NhbGUiPQosInlTY2FsZSIsInhEb21haW4iLCJ5RG9tYWluIiwi
eFJhbmdlIiwieVJhbmdlIiwiZm9yY2VYIiwiZm9yY2VZIiwiaW50ZXJhY3Q9Cml2ZSIsImNsaXBF
ZGdlIiwiY2xpcFZvcm9ub2kiLCJpZCIsImludGVycG9sYXRlIiwiaGlnaGxpZ2h0UG9pbnQiLCJj
bGVhckhpZz0KaGxpZ2h0cyIsImludGVyYWN0aXZlIikseC5vcHRpb25zPTNEZS51dGlscy5vcHRp
b25zRnVuYy5iaW5kKHgpLHgubWFyZ2luPTNEPQpmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8ocy50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS49CnRvcDpzLnRv
cCxzLnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDpzLnJpZ2h0
LHMuYm90dG9tPQo9M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206cy5i
b3R0b20scy5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9Cj0zRCJ1bmRlZmluZWQiP2UubGVmdDpzLmxl
ZnQseCk6c30seC53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubD0KZW5ndGg/
KHU9M0RlLHgpOnV9LHguaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGE9M0RlLHgpPQo6YX0seC5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhvPTNEZS51dGlscy5nZXRDb2xvcih0KSw9CmkuY29sb3IobykseCk6b30seC5zaG93
TGVnZW5kPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLD0KeCk6
Zn0seC5zaG93WEF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0z
RGUseCk6bH0seC5zaG93PQpZQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhjPTNEZSx4KTpjfSx4LnJpZ2h0QWxpZ25ZQXhpcz0KPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLHIub3JpZW50KGU/InJpZ2h0IjoibGVmdCIpLHgpPQo6
aH0seC50b29sdGlwcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNE
ZSx4KTpwfSx4LnRvb2x0aXA9CkNvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oZD0zRGUseCk6ZH0seC5zdGF0ZT0zRGZ1bmN0aT0Kb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGc9M0RlLHgpOmd9LHguZGVmYXVsdFN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0
PQp1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT0zRGUseCk6eX0seC5ub0RhdGE9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmw9CmVuZ3RoPyhiPTNEZSx4KTpifSx4LnRyYW5zaXRpb25EdXJh
dGlvbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZz0KdGg/KEU9M0RlLHgpOkV9
LHh9LGUubW9kZWxzLmluZGVudGVkVHJlZT0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhlKXtyZXR1
cm4gPQplLmVhY2goZnVuY3Rpb24oZSl7ZnVuY3Rpb24gayhlLHQsbil7ZDMuZXZlbnQuc3RvcFBy
b3BhZ2F0aW9uKCk7aWYoZDMuZXZlbnQ9Ci5zaGlmdEtleSYmIW4pcmV0dXJuIGQzLmV2ZW50LnNo
aWZ0S2V5PTNEITEsZS52YWx1ZXMmJmUudmFsdWVzLmZvckVhY2goZnVuYz0KdGlvbihlKXsoZS52
YWx1ZXN8fGUuX3ZhbHVlcykmJmsoZSwwLCEwKX0pLCEwO2lmKCFPKGUpKXJldHVybiEwO2UudmFs
dWVzPyhlPQouX3ZhbHVlcz0zRGUudmFsdWVzLGUudmFsdWVzPTNEbnVsbCk6KGUudmFsdWVzPTNE
ZS5fdmFsdWVzLGUuX3ZhbHVlcz0zRG51bGw9CiksZy51cGRhdGUoKX1mdW5jdGlvbiBMKGUpe3Jl
dHVybiBlLl92YWx1ZXMmJmUuX3ZhbHVlcy5sZW5ndGg/aDplLnZhbHVlcyYmZT0KLnZhbHVlcy5s
ZW5ndGg/cDoiIn1mdW5jdGlvbiBBKGUpe3JldHVybiBlLl92YWx1ZXMmJmUuX3ZhbHVlcy5sZW5n
dGh9ZnVuY3RpPQpvbiBPKGUpe3ZhciB0PTNEZS52YWx1ZXN8fGUuX3ZhbHVlcztyZXR1cm4gdCYm
dC5sZW5ndGh9dmFyIHQ9M0QxLG49M0RkMy5zZWw9CmVjdCh0aGlzKSxpPTNEZDMubGF5b3V0LnRy
ZWUoKS5jaGlsZHJlbihmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXN9KS5zaXplKD0KW3IsZl0p
O2cudXBkYXRlPTNEZnVuY3Rpb24oKXtuLmNhbGwoZyl9LGVbMF18fChlWzBdPTNEe2tleTphfSk7
dmFyIHM9M0RpLm5vPQpkZXMoZVswXSkseT0zRGQzLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoImRp
diIpLmRhdGEoW1tzXV0pLGI9M0R5LmVudGVyKCkuYXA9CnBlbmQoImRpdiIpLmF0dHIoImNsYXNz
IiwibnZkMyBudi13cmFwIG52LWluZGVudGVkdHJlZSIpLHc9M0RiLmFwcGVuZCgidGFibD0KZSIp
LEU9M0R5LnNlbGVjdCgidGFibGUiKS5hdHRyKCJ3aWR0aCIsIjEwMCUiKS5hdHRyKCJjbGFzcyIs
Yyk7aWYobyl7dmFyIFM9Cj0zRHcuYXBwZW5kKCJ0aGVhZCIpLHg9M0RTLmFwcGVuZCgidHIiKTts
LmZvckVhY2goZnVuY3Rpb24oZSl7eC5hcHBlbmQoInRoIj0KKS5hdHRyKCJ3aWR0aCIsZS53aWR0
aD9lLndpZHRoOiIxMCUiKS5zdHlsZSgidGV4dC1hbGlnbiIsZS50eXBlPTNEPTNEIm51bWVyPQpp
YyI/InJpZ2h0IjoibGVmdCIpLmFwcGVuZCgic3BhbiIpLnRleHQoZS5sYWJlbCl9KX12YXIgVD0z
REUuc2VsZWN0QWxsKCJ0Ym89CmR5IikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZX0pO1QuZW50
ZXIoKS5hcHBlbmQoInRib2R5IiksdD0zRGQzLm1heChzLGZ1bj0KY3Rpb24oZSl7cmV0dXJuIGUu
ZGVwdGh9KSxpLnNpemUoW3IsdCpmXSk7dmFyIE49M0RULnNlbGVjdEFsbCgidHIiKS5kYXRhKGZ1
PQpuY3Rpb24oZSl7cmV0dXJuIGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiB1JiYhZS5jaGls
ZHJlbj91KGUpOiEwfSl9LGZ1bmM9CnRpb24oZSx0KXtyZXR1cm4gZS5pZHx8ZS5pZHx8KyttfSk7
Ti5leGl0KCkucmVtb3ZlKCksTi5zZWxlY3QoImltZy5udi10cmVlaT0KY29uIikuYXR0cigic3Jj
IixMKS5jbGFzc2VkKCJmb2xkZWQiLEEpO3ZhciBDPTNETi5lbnRlcigpLmFwcGVuZCgidHIiKTts
LmZvPQpyRWFjaChmdW5jdGlvbihlLHQpe3ZhciBuPTNEQy5hcHBlbmQoInRkIikuc3R5bGUoInBh
ZGRpbmctbGVmdCIsZnVuY3Rpb24oZSk9CntyZXR1cm4odD8wOmUuZGVwdGgqZisxMisoTChlKT8w
OjE2KSkrInB4In0sImltcG9ydGFudCIpLnN0eWxlKCJ0ZXh0LWFsaWduIj0KLGUudHlwZT0zRD0z
RCJudW1lcmljIj8icmlnaHQiOiJsZWZ0Iik7dD0zRD0zRDAmJm4uYXBwZW5kKCJpbWciKS5jbGFz
c2VkKCJuPQp2LXRyZWVpY29uIiwhMCkuY2xhc3NlZCgibnYtZm9sZGVkIixBKS5hdHRyKCJzcmMi
LEwpLnN0eWxlKCJ3aWR0aCIsIjE0cHgiKS49CnN0eWxlKCJoZWlnaHQiLCIxNHB4Iikuc3R5bGUo
InBhZGRpbmciLCIwIDFweCIpLnN0eWxlKCJkaXNwbGF5IixmdW5jdGlvbihlKT0Ke3JldHVybiBM
KGUpPyJpbmxpbmUtYmxvY2siOiJub25lIn0pLm9uKCJjbGljayIsayksbi5lYWNoKGZ1bmN0aW9u
KG4peyF0JiZ2PQoobik/ZDMuc2VsZWN0KHRoaXMpLmFwcGVuZCgiYSIpLmF0dHIoImhyZWYiLHYp
LmF0dHIoImNsYXNzIixkMy5mdW5jdG9yKGUuY2w9CmFzc2VzKSkuYXBwZW5kKCJzcGFuIik6ZDMu
c2VsZWN0KHRoaXMpLmFwcGVuZCgic3BhbiIpLGQzLnNlbGVjdCh0aGlzKS5zZWxlYz0KdCgic3Bh
biIpLmF0dHIoImNsYXNzIixkMy5mdW5jdG9yKGUuY2xhc3NlcykpLnRleHQoZnVuY3Rpb24odCl7
cmV0dXJuIGUuZm9yPQptYXQ/dFtlLmtleV0/ZS5mb3JtYXQodFtlLmtleV0pOiItIjp0W2Uua2V5
XXx8Ii0ifSl9KSxlLnNob3dDb3VudCYmKG4uYXBwZW49CmQoInNwYW4iKS5hdHRyKCJjbGFzcyIs
Im52LWNoaWxkcmVuQ291bnQiKSxOLnNlbGVjdEFsbCgic3Bhbi5udi1jaGlsZHJlbkNvdT0KbnQi
KS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcyYmZS52YWx1ZXMubGVuZ3RofHxlLl92
YWx1ZXMmJmUuX3ZhbHVlPQpzLmxlbmd0aD8iKCIrKGUudmFsdWVzJiZlLnZhbHVlcy5maWx0ZXIo
ZnVuY3Rpb24oZSl7cmV0dXJuIHU/dShlKTohMH0pLmxlbmc9CnRofHxlLl92YWx1ZXMmJmUuX3Zh
bHVlcy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIHU/dShlKTohMH0pLmxlbmd0aHx8MCkrIj0K
KSI6IiJ9KSl9KSxOLm9yZGVyKCkub24oImNsaWNrIixmdW5jdGlvbihlKXtkLmVsZW1lbnRDbGlj
ayh7cm93OnRoaXMsZGF0YTplPQoscG9zOltlLngsZS55XX0pfSkub24oImRibGNsaWNrIixmdW5j
dGlvbihlKXtkLmVsZW1lbnREYmxjbGljayh7cm93OnRoaXMsZGE9CnRhOmUscG9zOltlLngsZS55
XX0pfSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oZSl7ZC5lbGVtZW50TW91c2VvdmVyKHtyb3c6
dD0KaGlzLGRhdGE6ZSxwb3M6W2UueCxlLnldfSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKGUp
e2QuZWxlbWVudE1vdXNlb3V0KHtyPQpvdzp0aGlzLGRhdGE6ZSxwb3M6W2UueCxlLnldfSl9KX0p
LGd9dmFyIHQ9M0R7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjA9Cn0sbj0zRDk2MCxyPTNE
NTAwLGk9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLHM9M0RNYXRoLmZsb29yKE1hdGgucmFuZG9t
KCkqMT0KZTQpLG89M0QhMCx1PTNEITEsYT0zRCJObyBEYXRhIEF2YWlsYWJsZS4iLGY9M0QyMCxs
PTNEW3trZXk6ImtleSIsbGFiZWw6Ik5hPQptZSIsdHlwZToidGV4dCJ9XSxjPTNEbnVsbCxoPTNE
ImltYWdlcy9ncmV5LXBsdXMucG5nIixwPTNEImltYWdlcy9ncmV5LW1pbnU9CnMucG5nIixkPTNE
ZDMuZGlzcGF0Y2goImVsZW1lbnRDbGljayIsImVsZW1lbnREYmxjbGljayIsImVsZW1lbnRNb3Vz
ZW92ZXIiLD0KImVsZW1lbnRNb3VzZW91dCIpLHY9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS51cmx9
LG09M0QwO3JldHVybiBnLm9wdGlvbnM9M0RlPQoudXRpbHMub3B0aW9uc0Z1bmMuYmluZChnKSxn
Lm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyg9CnQudG9wPTNE
dHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQucmlnaHQ9M0R0eXBlb2Yg
ZS5yaWdodCE9Cj0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT0zRHR5cGVv
ZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLj0KYm90dG9tOnQuYm90dG9tLHQubGVmdD0zRHR5
cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxnKTp0fSxnPQoud2lkdGg9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGUsZyk6bn0sZy5oZWln
aHQ9M0RmdW5jdGk9Cm9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZSxnKTpyfSxn
LmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZz0KdW1lbnRzLmxlbmd0aD8oaT0zRGUudXRp
bHMuZ2V0Q29sb3IodCksc2NhdHRlci5jb2xvcihpKSxnKTppfSxnLmlkPTNEZnVuY3RpPQpvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0zRGUsZyk6c30sZy5oZWFkZXI9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXI9Cmd1bWVudHMubGVuZ3RoPyhvPTNEZSxnKTpvfSxnLm5vRGF0YT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPz0KKGE9M0RlLGcpOmF9LGcuZmlsdGVy
WmVybz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZSxnKTp1PQp9
LGcuY29sdW1ucz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZSxn
KTpsfSxnLnRhYmxlQ2xhc3M9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhjPTNEZSxnKTpjfSxnLmljb25PcGVuPTNEZnVuY3Rpb24oZT0KKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oaD0zRGUsZyk6aH0sZy5pY29uQ2xvc2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
PQp1bWVudHMubGVuZ3RoPyhwPTNEZSxnKTpwfSxnLmdldFVybD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyg9CnY9M0RlLGcpOnZ9LGd9LGUubW9kZWxzLmxlZ2VuZD0zRGZ1
bmN0aW9uKCl7ZnVuY3Rpb24gYyhoKXtyZXR1cm4gaC5lYWNoKGZ1bj0KY3Rpb24oYyl7dmFyIGg9
M0RuLXQubGVmdC10LnJpZ2h0LHA9M0RkMy5zZWxlY3QodGhpcyksZD0zRHAuc2VsZWN0QWxsKCJn
Lm52PQotbGVnZW5kIikuZGF0YShbY10pLHY9M0RkLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudmQzIG52LWxlZ2VuZCI9CikuYXBwZW5kKCJnIiksbT0zRGQuc2VsZWN0KCJnIik7
ZC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0LmxlZnQrIiwiKz0KdC50b3ArIikiKTt2
YXIgZz0zRG0uc2VsZWN0QWxsKCIubnYtc2VyaWVzIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4g
ZX0pLHk9Cj0zRGcuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXNlcmllcyIp
Lm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKD0KZSx0KXtsLmxlZ2VuZE1vdXNlb3ZlcihlLHQpfSku
b24oIm1vdXNlb3V0IixmdW5jdGlvbihlLHQpe2wubGVnZW5kTW91c2VvdXQoPQplLHQpfSkub24o
ImNsaWNrIixmdW5jdGlvbihlLHQpe2wubGVnZW5kQ2xpY2soZSx0KSxhJiYoZj8oYy5mb3JFYWNo
KGZ1bmN0aW89Cm4oZSl7ZS5kaXNhYmxlZD0zRCEwfSksZS5kaXNhYmxlZD0zRCExKTooZS5kaXNh
YmxlZD0zRCFlLmRpc2FibGVkLGMuZXZlcnkoZj0KdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNhYmxl
ZH0pJiZjLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5kaXNhYmxlZD0zRCExfSkpLGwuPQpzdGF0ZUNo
YW5nZSh7ZGlzYWJsZWQ6Yy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSl9KSl9
KS5vbigiZGJsY2w9CmljayIsZnVuY3Rpb24oZSx0KXtsLmxlZ2VuZERibGNsaWNrKGUsdCksYSYm
KGMuZm9yRWFjaChmdW5jdGlvbihlKXtlLmRpc2FibD0KZWQ9M0QhMH0pLGUuZGlzYWJsZWQ9M0Qh
MSxsLnN0YXRlQ2hhbmdlKHtkaXNhYmxlZDpjLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hPQohZS5k
aXNhYmxlZH0pfSkpfSk7eS5hcHBlbmQoImNpcmNsZSIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLDIp
LmF0dHIoImNsYXNzIiw9CiJudi1sZWdlbmQtc3ltYm9sIikuYXR0cigiciIsNSkseS5hcHBlbmQo
InRleHQiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsInN0YXJ0Ij0KKS5hdHRyKCJjbGFzcyIsIm52LWxl
Z2VuZC10ZXh0IikuYXR0cigiZHkiLCIuMzJlbSIpLmF0dHIoImR4IiwiOCIpLGcuY2xhc3NlPQpk
KCJkaXNhYmxlZCIsZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJsZWR9KSxnLmV4aXQoKS5yZW1v
dmUoKSxnLnNlbGVjdCgiY2k9CnJjbGUiKS5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1
cm4gZS5jb2xvcnx8cyhlLHQpfSkuc3R5bGUoInN0cm9rZSIsZj0KdW5jdGlvbihlLHQpe3JldHVy
biBlLmNvbG9yfHxzKGUsdCl9KSxnLnNlbGVjdCgidGV4dCIpLnRleHQoaSk7aWYobyl7dmFyIGI9
Cj0zRFtdO2cuZWFjaChmdW5jdGlvbih0LG4pe3ZhciByPTNEZDMuc2VsZWN0KHRoaXMpLnNlbGVj
dCgidGV4dCIpLGk7dHJ5e2k9Cj0zRHIuZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCk7aWYoaTw9M0Qw
KXRocm93IEVycm9yKCl9Y2F0Y2gocyl7aT0zRGUudXRpbHMuYz0KYWxjQXBwcm94VGV4dFdpZHRo
KHIpfWIucHVzaChpKzI4KX0pO3ZhciB3PTNEMCxFPTNEMCxTPTNEW107d2hpbGUoRTxoJiZ3PGIu
PQpsZW5ndGgpU1t3XT0zRGJbd10sRSs9M0RiW3crK107dz0zRD0zRD0zRDAmJih3PTNEMSk7d2hp
bGUoRT5oJiZ3PjEpe1M9M0RbXSw9CnctLTtmb3IodmFyIHg9M0QwO3g8Yi5sZW5ndGg7eCsrKWJb
eF0+KFNbeCV3XXx8MCkmJihTW3gld109M0RiW3hdKTtFPTNEUy5yZT0KZHVjZShmdW5jdGlvbihl
LHQsbixyKXtyZXR1cm4gZSt0fSl9dmFyIFQ9M0RbXTtmb3IodmFyIE49M0QwLEM9M0QwO048dztO
KyspPQpUW05dPTNEQyxDKz0zRFNbTl07Zy5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7
cmV0dXJuInRyYW5zbGF0ZSgiK1RbdCU9CnddKyIsIisoNStNYXRoLmZsb29yKHQvdykqMjApKyIp
In0pLHU/bS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisobi10Lj0KcmlnaHQtRSkrIiwi
K3QudG9wKyIpIik6bS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK3QudG9wKyIpIiks
cj0zRHQuPQp0b3ArdC5ib3R0b20rTWF0aC5jZWlsKGIubGVuZ3RoL3cpKjIwfWVsc2V7dmFyIGs9
M0Q1LEw9M0Q1LEE9M0QwLE87Zy5hdHRyKCI9CnRyYW5zZm9ybSIsZnVuY3Rpb24oZSxyKXt2YXIg
aT0zRGQzLnNlbGVjdCh0aGlzKS5zZWxlY3QoInRleHQiKS5ub2RlKCkuZ2V0Qz0Kb21wdXRlZFRl
eHRMZW5ndGgoKSsyODtyZXR1cm4gTz0zREwsbjx0LmxlZnQrdC5yaWdodCtPK2kmJihMPTNETz0z
RDUsays9M0QyPQowKSxMKz0zRGksTD5BJiYoQT0zREwpLCJ0cmFuc2xhdGUoIitPKyIsIitrKyIp
In0pLG0uYXR0cigidHJhbnNmb3JtIiwidHJhbnM9CmxhdGUoIisobi10LnJpZ2h0LUEpKyIsIit0
LnRvcCsiKSIpLHI9M0R0LnRvcCt0LmJvdHRvbStrKzE1fX0pLGN9dmFyIHQ9M0R7dD0Kb3A6NSxy
aWdodDowLGJvdHRvbTo1LGxlZnQ6MH0sbj0zRDQwMCxyPTNEMjAsaT0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBlLmtleX0sPQpzPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxvPTNEITAsdT0zRCEwLGE9
M0QhMCxmPTNEITEsbD0zRGQzLmRpc3BhdGNoKCJsZWc9CmVuZENsaWNrIiwibGVnZW5kRGJsY2xp
Y2siLCJsZWdlbmRNb3VzZW92ZXIiLCJsZWdlbmRNb3VzZW91dCIsInN0YXRlQ2hhbmdlIj0KKTty
ZXR1cm4gYy5kaXNwYXRjaD0zRGwsYy5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5k
KGMpLGMubWFyZ2luPTNEPQpmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC50
b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS49CnRvcDp0LnRvcCx0LnJpZ2h0PTNE
dHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp0LnJpZ2h0LHQuYm90dG9tPQo9
M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dC5ib3R0b20sdC5sZWZ0
PTNEdHlwZW9mIGUubGVmdCE9Cj0zRCJ1bmRlZmluZWQiP2UubGVmdDp0LmxlZnQsYyk6dH0sYy53
aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubD0KZW5ndGg/KG49M0RlLGMpOm59
LGMuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLGMp
PQo6cn0sYy5rZXk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUs
Yyk6aX0sYy5jb2xvcj0zRGZ1bmM9CnRpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9
M0RlLnV0aWxzLmdldENvbG9yKHQpLGMpOnN9LGMuYWxpZ249M0RmdT0KbmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZSxjKTpvfSxjLnJpZ2h0QWxpZ249M0RmdW5jdGlvbihl
KXtyPQpldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZSxjKTp1fSxjLnVwZGF0ZVN0YXRlPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3U9Cm1lbnRzLmxlbmd0aD8oYT0zRGUsYyk6YX0sYy5yYWRp
b0J1dHRvbk1vZGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLj0KbGVuZ3RoPyhmPTNE
ZSxjKTpmfSxjfSxlLm1vZGVscy5saW5lPTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBtKGcpe3JldHVy
biBnLmVhPQpjaChmdW5jdGlvbihtKXt2YXIgZz0zRHItbi5sZWZ0LW4ucmlnaHQsYj0zRGktbi50
b3Atbi5ib3R0b20sdz0zRGQzLnNlbGVjdCg9CnRoaXMpO2M9M0R0LnhTY2FsZSgpLGg9M0R0LnlT
Y2FsZSgpLGQ9M0RkfHxjLHY9M0R2fHxoO3ZhciBFPTNEdy5zZWxlY3RBbGwoIj0KZy5udi13cmFw
Lm52LWxpbmUiKS5kYXRhKFttXSksUz0zREUuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFz
cyIsIm52ZDMgPQpudi13cmFwIG52LWxpbmUiKSxUPTNEUy5hcHBlbmQoImRlZnMiKSxOPTNEUy5h
cHBlbmQoImciKSxDPTNERS5zZWxlY3QoImciKTs9Ck4uYXBwZW5kKCJnIikuYXR0cigiY2xhc3Mi
LCJudi1ncm91cHMiKSxOLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtc2NhdD0KdGVyV3Jh
cCIpLEUuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrbi5sZWZ0KyIsIituLnRvcCsiKSIp
LHQud2lkdGgoZykuPQpoZWlnaHQoYik7dmFyIGs9M0RFLnNlbGVjdCgiLm52LXNjYXR0ZXJXcmFw
Iik7ay5jYWxsKHQpLFQuYXBwZW5kKCJjbGlwUGF0aCI9CikuYXR0cigiaWQiLCJudi1lZGdlLWNs
aXAtIit0LmlkKCkpLmFwcGVuZCgicmVjdCIpLEUuc2VsZWN0KCIjbnYtZWRnZS1jbGlwLT0KIit0
LmlkKCkrIiByZWN0IikuYXR0cigid2lkdGgiLGcpLmF0dHIoImhlaWdodCIsYj4wP2I6MCksQy5h
dHRyKCJjbGlwLXBhdGgiPQosbD8idXJsKCNudi1lZGdlLWNsaXAtIit0LmlkKCkrIikiOiIiKSxr
LmF0dHIoImNsaXAtcGF0aCIsbD8idXJsKCNudi1lZGdlLWM9CmxpcC0iK3QuaWQoKSsiKSI6IiIp
O3ZhciBMPTNERS5zZWxlY3QoIi5udi1ncm91cHMiKS5zZWxlY3RBbGwoIi5udi1ncm91cCIpLj0K
ZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZX0sZnVuY3Rpb24oZSl7cmV0dXJuIGUua2V5fSk7TC5l
bnRlcigpLmFwcGVuZCgiZyIpPQouc3R5bGUoInN0cm9rZS1vcGFjaXR5IiwxZS02KS5zdHlsZSgi
ZmlsbC1vcGFjaXR5IiwxZS02KSxMLmV4aXQoKS5yZW1vdmUoKSw9CkwuYXR0cigiY2xhc3MiLGZ1
bmN0aW9uKGUsdCl7cmV0dXJuIm52LWdyb3VwIG52LXNlcmllcy0iK3R9KS5jbGFzc2VkKCJob3Zl
cj0KIixmdW5jdGlvbihlKXtyZXR1cm4gZS5ob3Zlcn0pLnN0eWxlKCJmaWxsIixmdW5jdGlvbihl
LHQpe3JldHVybiBzKGUsdCl9KS5zPQp0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXJu
IHMoZSx0KX0pLEwuc3R5bGUoInN0cm9rZS1vcGFjaXR5IiwxKS5zdHk9CmxlKCJmaWxsLW9wYWNp
dHkiLC41KTt2YXIgQT0zREwuc2VsZWN0QWxsKCJwYXRoLm52LWFyZWEiKS5kYXRhKGZ1bmN0aW9u
KGUpez0KcmV0dXJuIGYoZSk/W2VdOltdfSk7QS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIo
ImNsYXNzIiwibnYtYXJlYSIpLmF0dHIoPQoiZCIsZnVuY3Rpb24odCl7cmV0dXJuIGQzLnN2Zy5h
cmVhKCkuaW50ZXJwb2xhdGUocCkuZGVmaW5lZChhKS54KGZ1bmN0aW9uKHQ9CixuKXtyZXR1cm4g
ZS51dGlscy5OYU50b1plcm8oZChvKHQsbikpKX0pLnkwKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUu
dXRpbHMuTj0KYU50b1plcm8odih1KHQsbikpKX0pLnkxKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHYo
aC5kb21haW4oKVswXTw9M0QwP2guZG9tYWluPQooKVsxXT49M0QwPzA6aC5kb21haW4oKVsxXTpo
LmRvbWFpbigpWzBdKX0pLmFwcGx5KHRoaXMsW3QudmFsdWVzXSl9KSxMLmV4aXQ9CigpLnNlbGVj
dEFsbCgicGF0aC5udi1hcmVhIikucmVtb3ZlKCksQS5hdHRyKCJkIixmdW5jdGlvbih0KXtyZXR1
cm4gZDMuc3ZnLj0KYXJlYSgpLmludGVycG9sYXRlKHApLmRlZmluZWQoYSkueChmdW5jdGlvbih0
LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhjPQoobyh0LG4pKSl9KS55MChmdW5jdGlvbih0
LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhoKHUodCxuKSkpfSkueTEoZnVuY3Q9Cmlvbihl
LHQpe3JldHVybiBoKGguZG9tYWluKClbMF08PTNEMD9oLmRvbWFpbigpWzFdPj0zRDA/MDpoLmRv
bWFpbigpWzFdOmguZD0Kb21haW4oKVswXSl9KS5hcHBseSh0aGlzLFt0LnZhbHVlc10pfSk7dmFy
IE89M0RMLnNlbGVjdEFsbCgicGF0aC5udi1saW5lIikuPQpkYXRhKGZ1bmN0aW9uKGUpe3JldHVy
bltlLnZhbHVlc119KTtPLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCI9Cm52
LWxpbmUiKS5hdHRyKCJkIixkMy5zdmcubGluZSgpLmludGVycG9sYXRlKHApLmRlZmluZWQoYSku
eChmdW5jdGlvbih0LG4pez0KcmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKGQobyh0LG4pKSl9KS55
KGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aPQplcm8odih1KHQsbikpKX0pKSxP
LmF0dHIoImQiLGQzLnN2Zy5saW5lKCkuaW50ZXJwb2xhdGUocCkuZGVmaW5lZChhKS54KGZ1bmM9
CnRpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8oYyhvKHQsbikpKX0pLnkoZnVuY3Rp
b24odCxuKXtyZXR1cm4gZS51dD0KaWxzLk5hTnRvWmVybyhoKHUodCxuKSkpfSkpLGQ9M0RjLmNv
cHkoKSx2PTNEaC5jb3B5KCl9KSxtfXZhciB0PTNEZS5tb2RlbHMuPQpzY2F0dGVyKCksbj0zRHt0
b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0scj0zRDk2MCxpPTNENTAwLHM9M0RlLnV0aWxz
LmQ9CmVmYXVsdENvbG9yKCksbz0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9LHU9M0RmdW5jdGlv
bihlKXtyZXR1cm4gZS55fSxhPTNEZj0KdW5jdGlvbihlLHQpe3JldHVybiFpc05hTih1KGUsdCkp
JiZ1KGUsdCkhPTNEPTNEbnVsbH0sZj0zRGZ1bmN0aW9uKGUpe3JldHVyPQpuIGUuYXJlYX0sbD0z
RCExLGMsaCxwPTNEImxpbmVhciI7dC5zaXplKDE2KS5zaXplRG9tYWluKFsxNiwyNTZdKTt2YXIg
ZCx2O3I9CmV0dXJuIG0uZGlzcGF0Y2g9M0R0LmRpc3BhdGNoLG0uc2NhdHRlcj0zRHQsZDMucmVi
aW5kKG0sdCwiaWQiLCJpbnRlcmFjdGl2ZT0KIiwic2l6ZSIsInhTY2FsZSIsInlTY2FsZSIsInpT
Y2FsZSIsInhEb21haW4iLCJ5RG9tYWluIiwieFJhbmdlIiwieVJhbmdlIiwiPQpzaXplRG9tYWlu
IiwiZm9yY2VYIiwiZm9yY2VZIiwiZm9yY2VTaXplIiwiY2xpcFZvcm9ub2kiLCJ1c2VWb3Jvbm9p
IiwiY2xpcFI9CmFkaXVzIiwicGFkRGF0YSIsImhpZ2hsaWdodFBvaW50IiwiY2xlYXJIaWdobGln
aHRzIiksbS5vcHRpb25zPTNEZS51dGlscy5vcD0KdGlvbnNGdW5jLmJpbmQobSksbS5tYXJnaW49
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obi50b3A9M0R0PQp5cGVvZiBl
LnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDpuLnRvcCxuLnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQh
PTNEInVuZGVmaW49CmVkIj9lLnJpZ2h0Om4ucmlnaHQsbi5ib3R0b209M0R0eXBlb2YgZS5ib3R0
b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206bi5ibz0KdHRvbSxuLmxlZnQ9M0R0eXBlb2YgZS5s
ZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDpuLmxlZnQsbSk6bn0sbS53aWR0aD0zRGZ1PQpuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLG0pOnJ9LG0uaGVpZ2h0PTNEZnVu
Y3Rpb24oZSl7cmV0dXI9Cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUsbSk6aX0sbS54PTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KD0Kbz0zRGUsdC54KGUpLG0pOm99LG0u
eT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZSx0LnkoZSksPQpt
KTp1fSxtLmNsaXBFZGdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9
M0RlLG0pOmx9LG0uY29sb3I9Cj0zRGZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhzPTNEZS51dGlscy5nZXRDb2xvcihuKSx0LmNvbG9yKHMpLD0KbSk6c30sbS5pbnRlcnBvbGF0
ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxtKTpwfSxtLmRl
PQpmaW5lZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZSxtKTph
fSxtLmlzQXJlYT0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0Rk
My5mdW5jdG9yKGUpLG0pOmZ9LG19LGUubW9kZWxzLmxpbmVDaGFydD0KPTNEZnVuY3Rpb24oKXtm
dW5jdGlvbiBOKG0pe3JldHVybiBtLmVhY2goZnVuY3Rpb24obSl7dmFyIHg9M0RkMy5zZWxlY3Qo
dGhpPQpzKSxDPTNEdGhpcyxrPTNEKGF8fHBhcnNlSW50KHguc3R5bGUoIndpZHRoIikpfHw5NjAp
LW8ubGVmdC1vLnJpZ2h0LEw9M0QoZnw9CnxwYXJzZUludCh4LnN0eWxlKCJoZWlnaHQiKSl8fDQw
MCktby50b3Atby5ib3R0b207Ti51cGRhdGU9M0RmdW5jdGlvbigpe3guYz0KYWxsKE4pfSxOLmNv
bnRhaW5lcj0zRHRoaXMsYi5kaXNhYmxlZD0zRG0ubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5k
aXNhYmxlPQpkfSk7aWYoIXcpe3ZhciBBO3c9M0R7fTtmb3IoQSBpbiBiKWJbQV1pbnN0YW5jZW9m
IEFycmF5P3dbQV09M0RiW0FdLnNsaWNlKDA9Cik6d1tBXT0zRGJbQV19aWYoIW18fCFtLmxlbmd0
aHx8IW0uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndD0KaH0pLmxlbmd0
aCl7dmFyIE89M0R4LnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW0VdKTtyZXR1cm4gTy5l
bnRlcigpLmFwPQpwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0
dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC09CmFuY2hvciIsIm1pZGRsZSIpLE8uYXR0cigi
eCIsby5sZWZ0K2svMikuYXR0cigieSIsby50b3ArTC8yKS50ZXh0KGZ1bmN0aW9uKD0KZSl7cmV0
dXJuIGV9KSxOfXguc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtb3ZlKCksZz0zRHQueFNjYWxl
KCkseT0zRHQueVNjPQphbGUoKTt2YXIgTT0zRHguc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtbGlu
ZUNoYXJ0IikuZGF0YShbbV0pLF89M0RNLmVudGVyKCk9Ci5hcHBlbmQoImciKS5hdHRyKCJjbGFz
cyIsIm52ZDMgbnYtd3JhcCBudi1saW5lQ2hhcnQiKS5hcHBlbmQoImciKSxEPTNETS5zZT0KbGVj
dCgiZyIpO18uYXBwZW5kKCJyZWN0Iikuc3R5bGUoIm9wYWNpdHkiLDApLF8uYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJuPQp2LXggbnYtYXhpcyIpLF8uYXBwZW5kKCJnIikuYXR0cigiY2xhc3Mi
LCJudi15IG52LWF4aXMiKSxfLmFwcGVuZCgiZyIpLmF0dHI9CigiY2xhc3MiLCJudi1saW5lc1dy
YXAiKSxfLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpLF8uYXBwZT0K
bmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWludGVyYWN0aXZlIiksRC5zZWxlY3QoInJlY3QiKS5h
dHRyKCJ3aWR0aCIsaykuYXR0PQpyKCJoZWlnaHQiLEw+MD9MOjApLGwmJihpLndpZHRoKGspLEQu
c2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmRhdHVtKG0pLmNhbGw9CihpKSxvLnRvcCE9M0RpLmhl
aWdodCgpJiYoby50b3A9M0RpLmhlaWdodCgpLEw9M0QoZnx8cGFyc2VJbnQoeC5zdHlsZSgiaGVp
Zz0KaHQiKSl8fDQwMCktby50b3Atby5ib3R0b20pLE0uc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIp
LmF0dHIoInRyYW5zZm9ybSIsInRyPQphbnNsYXRlKDAsIisgLW8udG9wKyIpIikpLE0uYXR0cigi
dHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrby5sZWZ0KyIsIitvLnRvcCs9CiIpIikscCYmRC5zZWxl
Y3QoIi5udi15Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitrKyIsMCki
KSxkJj0KJihzLndpZHRoKGspLmhlaWdodChMKS5tYXJnaW4oe2xlZnQ6by5sZWZ0LHRvcDpvLnRv
cH0pLnN2Z0NvbnRhaW5lcih4KS54U2NhPQpsZShnKSxNLnNlbGVjdCgiLm52LWludGVyYWN0aXZl
IikuY2FsbChzKSksdC53aWR0aChrKS5oZWlnaHQoTCkuY29sb3IobS5tYXA9CihmdW5jdGlvbihl
LHQpe3JldHVybiBlLmNvbG9yfHx1KGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4h
bVt0XS5kaT0Kc2FibGVkfSkpO3ZhciBQPTNERC5zZWxlY3QoIi5udi1saW5lc1dyYXAiKS5kYXR1
bShtLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1PQpybiFlLmRpc2FibGVkfSkpO1AuY2FsbCh0KSxj
JiYobi5zY2FsZShnKS50aWNrcyhrLzEwMCkudGlja1NpemUoLUwsMCksRC5zZWw9CmVjdCgiLm52
LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIreS5yYW5nZSgpWzBd
KyIpIiksRC5zZT0KbGVjdCgiLm52LXgubnYtYXhpcyIpLmNhbGwobikpLGgmJihyLnNjYWxlKHkp
LnRpY2tzKEwvMzYpLnRpY2tTaXplKC1rLDApLEQuPQpzZWxlY3QoIi5udi15Lm52LWF4aXMiKS5j
YWxsKHIpKSxpLmRpc3BhdGNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24oZSl7Yj0KPTNEZSxT
LnN0YXRlQ2hhbmdlKGIpLE4udXBkYXRlKCl9KSxzLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2Vt
b3ZlIixmdW5jdGlvPQpuKGkpe3QuY2xlYXJIaWdobGlnaHRzKCk7dmFyIGEsZixsLGM9M0RbXTtt
LmZpbHRlcihmdW5jdGlvbihlLHQpe3JldHVybiBlLnM9CmVyaWVzSW5kZXg9M0R0LCFlLmRpc2Fi
bGVkfSkuZm9yRWFjaChmdW5jdGlvbihuLHIpe2Y9M0RlLmludGVyYWN0aXZlQmlzZWN0KD0Kbi52
YWx1ZXMsaS5wb2ludFhWYWx1ZSxOLngoKSksdC5oaWdobGlnaHRQb2ludChyLGYsITApO3ZhciBz
PTNEbi52YWx1ZXNbZl07PQppZih0eXBlb2Ygcz0zRD0zRCJ1bmRlZmluZWQiKXJldHVybjt0eXBl
b2YgYT0zRD0zRCJ1bmRlZmluZWQiJiYoYT0zRHMpLHR5cGU9Cm9mIGw9M0Q9M0QidW5kZWZpbmVk
IiYmKGw9M0ROLnhTY2FsZSgpKE4ueCgpKHMsZikpKSxjLnB1c2goe2tleTpuLmtleSx2YWx1ZT0K
Ok4ueSgpKHMsZiksY29sb3I6dShuLG4uc2VyaWVzSW5kZXgpfSl9KTtpZihjLmxlbmd0aD4yKXt2
YXIgaD0zRE4ueVNjYWxlKCkuPQppbnZlcnQoaS5tb3VzZVkpLHA9M0RNYXRoLmFicyhOLnlTY2Fs
ZSgpLmRvbWFpbigpWzBdLU4ueVNjYWxlKCkuZG9tYWluKClbMV09CiksZD0zRC4wMypwLGc9M0Rl
Lm5lYXJlc3RWYWx1ZUluZGV4KGMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlfSksaCxk
KT0KO2chPTNEPTNEbnVsbCYmKGNbZ10uaGlnaGxpZ2h0PTNEITApfXZhciB5PTNEbi50aWNrRm9y
bWF0KCkoTi54KCkoYSxmKSk7cy50PQpvb2x0aXAucG9zaXRpb24oe2xlZnQ6bCtvLmxlZnQsdG9w
OmkubW91c2VZK28udG9wfSkuY2hhcnRDb250YWluZXIoQy5wYXJlbnQ9Ck5vZGUpLmVuYWJsZWQo
dikudmFsdWVGb3JtYXR0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gci50aWNrRm9ybWF0KCkoZSl9
KS5kYT0KdGEoe3ZhbHVlOnksc2VyaWVzOmN9KSgpLHMucmVuZGVyR3VpZGVMaW5lKGwpfSkscy5k
aXNwYXRjaC5vbigiZWxlbWVudE1vdXNlPQpvdXQiLGZ1bmN0aW9uKGUpe1MudG9vbHRpcEhpZGUo
KSx0LmNsZWFySGlnaGxpZ2h0cygpfSksUy5vbigidG9vbHRpcFNob3ciLGY9CnVuY3Rpb24oZSl7
diYmVChlLEMucGFyZW50Tm9kZSl9KSxTLm9uKCJjaGFuZ2VTdGF0ZSIsZnVuY3Rpb24oZSl7dHlw
ZW9mIGUuZD0KaXNhYmxlZCE9M0QidW5kZWZpbmVkIiYmbS5sZW5ndGg9M0Q9M0Q9M0RlLmRpc2Fi
bGVkLmxlbmd0aCYmKG0uZm9yRWFjaChmdW5jPQp0aW9uKHQsbil7dC5kaXNhYmxlZD0zRGUuZGlz
YWJsZWRbbl19KSxiLmRpc2FibGVkPTNEZS5kaXNhYmxlZCksTi51cGRhdGUoKX09Cil9KSxOfXZh
ciB0PTNEZS5tb2RlbHMubGluZSgpLG49M0RlLm1vZGVscy5heGlzKCkscj0zRGUubW9kZWxzLmF4
aXMoKSxpPTNEZT0KLm1vZGVscy5sZWdlbmQoKSxzPTNEZS5pbnRlcmFjdGl2ZUd1aWRlbGluZSgp
LG89M0R7dG9wOjMwLHJpZ2h0OjIwLGJvdHRvbTo1PQowLGxlZnQ6NjB9LHU9M0RlLnV0aWxzLmRl
ZmF1bHRDb2xvcigpLGE9M0RudWxsLGY9M0RudWxsLGw9M0QhMCxjPTNEITAsaD0zRCE9CjAscD0z
RCExLGQ9M0QhMSx2PTNEITAsbT0zRGZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIjxoMz4iK2Ur
IjwvaDM+IisiPHA+Ij0KK24rIiBhdCAiK3QrIjwvcD4ifSxnLHksYj0zRHt9LHc9M0RudWxsLEU9
M0QiTm8gRGF0YSBBdmFpbGFibGUuIixTPTNEZDMuZGlzPQpwYXRjaCgidG9vbHRpcFNob3ciLCJ0
b29sdGlwSGlkZSIsInN0YXRlQ2hhbmdlIiwiY2hhbmdlU3RhdGUiKSx4PTNEMDtuLm9yaWU9Cm50
KCJib3R0b20iKS50aWNrUGFkZGluZyg3KSxyLm9yaWVudChwPyJyaWdodCI6ImxlZnQiKTt2YXIg
VD0zRGZ1bmN0aW9uKGkscz0KKXt2YXIgbz0zRGkucG9zWzBdKyhzLm9mZnNldExlZnR8fDApLHU9
M0RpLnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLGE9M0RuLnRpPQpja0Zvcm1hdCgpKHQueCgpKGku
cG9pbnQsaS5wb2ludEluZGV4KSksZj0zRHIudGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbnQsaS49
CnBvaW50SW5kZXgpKSxsPTNEbShpLnNlcmllcy5rZXksYSxmLGksTik7ZS50b29sdGlwLnNob3co
W28sdV0sbCxudWxsLG51bGwscz0KKX07cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3Vz
ZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wPQpvc1swXStvLmxlZnQsZS5w
b3NbMV0rby50b3BdLFMudG9vbHRpcFNob3coZSl9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91
c2U9Cm91dC50b29sdGlwIixmdW5jdGlvbihlKXtTLnRvb2x0aXBIaWRlKGUpfSksUy5vbigidG9v
bHRpcEhpZGUiLGZ1bmN0aW9uKCl7dj0KJiZlLnRvb2x0aXAuY2xlYW51cCgpfSksTi5kaXNwYXRj
aD0zRFMsTi5saW5lcz0zRHQsTi5sZWdlbmQ9M0RpLE4ueEF4aXM9M0RuPQosTi55QXhpcz0zRHIs
Ti5pbnRlcmFjdGl2ZUxheWVyPTNEcyxkMy5yZWJpbmQoTix0LCJkZWZpbmVkIiwiaXNBcmVhIiwi
eCIsInk9CiIsInNpemUiLCJ4U2NhbGUiLCJ5U2NhbGUiLCJ4RG9tYWluIiwieURvbWFpbiIsInhS
YW5nZSIsInlSYW5nZSIsImZvcmNlWCIsIj0KZm9yY2VZIiwiaW50ZXJhY3RpdmUiLCJjbGlwRWRn
ZSIsImNsaXBWb3Jvbm9pIiwidXNlVm9yb25vaSIsImlkIiwiaW50ZXJwb2xhPQp0ZSIpLE4ub3B0
aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChOKSxOLm1hcmdpbj0zRGZ1bmN0aW9uKGUp
e3JldHVybiA9CmFyZ3VtZW50cy5sZW5ndGg/KG8udG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRl
ZmluZWQiP2UudG9wOm8udG9wLG8ucmlnaHQ9Cj0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmlu
ZWQiP2UucmlnaHQ6by5yaWdodCxvLmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbT0KIT0zRCJ1bmRl
ZmluZWQiP2UuYm90dG9tOm8uYm90dG9tLG8ubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVm
aW5lZCI/ZS5sPQplZnQ6by5sZWZ0LE4pOm99LE4ud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oYT0zRGUsTik6YX09CixOLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSxOKTpmfSxOLmNvbG9yPTNEZnVuYz0KdGlvbih0
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUudXRpbHMuZ2V0Q29sb3IodCksaS5jb2xv
cih1KSxOKTp1fSxOPQouc2hvd0xlZ2VuZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhsPTNEZSxOKTpsfSxOLnNob3dYQXhpcz0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGM9M0RlLE4pOmN9LE4uc2hvd1lBeGlzPTNEZnVuY3Rpb24oPQplKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsTik6aH0sTi5yaWdodEFsaWduWUF4aXM9M0Rm
dW5jdGlvbihlKXtyZXQ9CnVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxyLm9yaWVudChlPyJy
aWdodCI6ImxlZnQiKSxOKTpwfSxOLnVzZUludGVyYWN0aT0KdmVHdWlkZWxpbmU9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGUsZT0zRD0zRD0zRCEwJiYoTi5pPQpu
dGVyYWN0aXZlKCExKSxOLnVzZVZvcm9ub2koITEpKSxOKTpkfSxOLnRvb2x0aXBzPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3U9Cm1lbnRzLmxlbmd0aD8odj0zRGUsTik6dn0sTi50b29sdGlwQ29u
dGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubD0KZW5ndGg/KG09M0RlLE4pOm19
LE4uc3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0zRGUsTik6
PQpifSxOLmRlZmF1bHRTdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
Pyh3PTNEZSxOKTp3fSxOLm5vRGE9CnRhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KEU9M0RlLE4pOkV9LE4udHJhbnNpdGlvbkR1cmF0aW9uPQo9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD0zRGUsTik6eH0sTn0sZS5tb2RlbHMubGluZVBsdXNC
YXI9CkNoYXJ0PTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBUKGUpe3JldHVybiBlLmVhY2goZnVuY3Rp
b24oZSl7dmFyIGw9M0RkMy5zZWxlYz0KdCh0aGlzKSxjPTNEdGhpcyx2PTNEKGF8fHBhcnNlSW50
KGwuc3R5bGUoIndpZHRoIikpfHw5NjApLXUubGVmdC11LnJpZ2h0LE49Cj0zRChmfHxwYXJzZUlu
dChsLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktdS50b3AtdS5ib3R0b207VC51cGRhdGU9M0RmdW5j
dGlvbj0KKCl7bC5jYWxsKFQpfSxiLmRpc2FibGVkPTNEZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJu
ISFlLmRpc2FibGVkfSk7aWYoIXcpe3ZhPQpyIEM7dz0zRHt9O2ZvcihDIGluIGIpYltDXWluc3Rh
bmNlb2YgQXJyYXk/d1tDXT0zRGJbQ10uc2xpY2UoMCk6d1tDXT0zRGJbQ109Cn1pZighZXx8IWUu
bGVuZ3RofHwhZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLmxlbmd0aH0pLmxl
bmd0aCl7dj0KYXIgaz0zRGwuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShbRV0pO3JldHVy
biBrLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuPQphdHRyKCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRh
IikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGQ9CmxlIiksay5h
dHRyKCJ4Iix1LmxlZnQrdi8yKS5hdHRyKCJ5Iix1LnRvcCtOLzIpLnRleHQoZnVuY3Rpb24oZSl7
cmV0dXJuIGV9KT0KLFR9bC5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKTt2YXIgTD0z
RGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlPQouZGlzYWJsZWQmJmUuYmFyfSksQT0zRGUu
ZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmJhcn0pO209M0RBLmZpbHRlcihmdW49CmN0aW9u
KGUpe3JldHVybiFlLmRpc2FibGVkfSkubGVuZ3RoJiZBLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1
cm4hZS5kaXNhYmxlZD0KfSlbMF0udmFsdWVzLmxlbmd0aD90LnhTY2FsZSgpOm4ueFNjYWxlKCks
Zz0zRG4ueVNjYWxlKCkseT0zRHQueVNjYWxlKCk7dmFyPQogTz0zRGQzLnNlbGVjdCh0aGlzKS5z
ZWxlY3RBbGwoImcubnYtd3JhcC5udi1saW5lUGx1c0JhciIpLmRhdGEoW2VdKSxNPTNETy49CmVu
dGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbGluZVBsdXNC
YXIiKS5hcHBlbmQoImciKT0KLF89M0RPLnNlbGVjdCgiZyIpO00uYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudi14IG52LWF4aXMiKSxNLmFwcGVuZCgiZyIpPQouYXR0cigiY2xhc3MiLCJudi15
MSBudi1heGlzIiksTS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkyIG52LWF4aXMiKSw9
Ck0uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1iYXJzV3JhcCIpLE0uYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJudi1saT0KbmVzV3JhcCIpLE0uYXBwZW5kKCJnIikuYXR0cigiY2xhc3Mi
LCJudi1sZWdlbmRXcmFwIikscCYmKG8ud2lkdGgodi8yKSxfLnNlPQpsZWN0KCIubnYtbGVnZW5k
V3JhcCIpLmRhdHVtKGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLm9yaWdpbmFsS2V5PTNEZS5v
cmk9CmdpbmFsS2V5PTNEPTNEPTNEdW5kZWZpbmVkP2Uua2V5OmUub3JpZ2luYWxLZXksZS5rZXk9
M0RlLm9yaWdpbmFsS2V5KyhlLmJhcj0KPyIgKGxlZnQgYXhpcykiOiIgKHJpZ2h0IGF4aXMpIiks
ZX0pKS5jYWxsKG8pLHUudG9wIT0zRG8uaGVpZ2h0KCkmJih1LnRvcD0KPTNEby5oZWlnaHQoKSxO
PTNEKGZ8fHBhcnNlSW50KGwuc3R5bGUoImhlaWdodCIpKXx8NDAwKS11LnRvcC11LmJvdHRvbSks
Xy5zPQplbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUo
Iit2LzIrIiwiKyAtdS50b3ArIikiKSk9CixPLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgi
K3UubGVmdCsiLCIrdS50b3ArIikiKSx0LndpZHRoKHYpLmhlaWdodChOKT0KLmNvbG9yKGUubWFw
KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGgoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0
LG4pe3JlPQp0dXJuIWVbbl0uZGlzYWJsZWQmJiFlW25dLmJhcn0pKSxuLndpZHRoKHYpLmhlaWdo
dChOKS5jb2xvcihlLm1hcChmdW5jdGlvbig9CmUsdCl7cmV0dXJuIGUuY29sb3J8fGgoZSx0KX0p
LmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkJiZlWz0Kbl0uYmFyfSkp
O3ZhciBEPTNEXy5zZWxlY3QoIi5udi1iYXJzV3JhcCIpLmRhdHVtKEwubGVuZ3RoP0w6W3t2YWx1
ZXM6W119XSksPQpQPTNEXy5zZWxlY3QoIi5udi1saW5lc1dyYXAiKS5kYXR1bShBWzBdJiYhQVsw
XS5kaXNhYmxlZD9BOlt7dmFsdWVzOltdfV0pO2Q9CjMudHJhbnNpdGlvbihEKS5jYWxsKG4pLGQz
LnRyYW5zaXRpb24oUCkuY2FsbCh0KSxyLnNjYWxlKG0pLnRpY2tzKHYvMTAwKS50aT0KY2tTaXpl
KC1OLDApLF8uc2VsZWN0KCIubnYteC5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNs
YXRlKDAsIitnLnJhPQpuZ2UoKVswXSsiKSIpLGQzLnRyYW5zaXRpb24oXy5zZWxlY3QoIi5udi14
Lm52LWF4aXMiKSkuY2FsbChyKSxpLnNjYWxlKGcpLnQ9Cmlja3MoTi8zNikudGlja1NpemUoLXYs
MCksZDMudHJhbnNpdGlvbihfLnNlbGVjdCgiLm52LXkxLm52LWF4aXMiKSkuc3R5bGUoIj0Kb3Bh
Y2l0eSIsTC5sZW5ndGg/MTowKS5jYWxsKGkpLHMuc2NhbGUoeSkudGlja3MoTi8zNikudGlja1Np
emUoTC5sZW5ndGg/MDotPQp2LDApLF8uc2VsZWN0KCIubnYteTIubnYtYXhpcyIpLnN0eWxlKCJv
cGFjaXR5IixBLmxlbmd0aD8xOjApLmF0dHIoInRyYW5zZm89CnJtIiwidHJhbnNsYXRlKCIrdisi
LDApIiksZDMudHJhbnNpdGlvbihfLnNlbGVjdCgiLm52LXkyLm52LWF4aXMiKSkuY2FsbChzKT0K
LG8uZGlzcGF0Y2gub24oInN0YXRlQ2hhbmdlIixmdW5jdGlvbihlKXtiPTNEZSxTLnN0YXRlQ2hh
bmdlKGIpLFQudXBkYXRlKCl9PQopLFMub24oInRvb2x0aXBTaG93IixmdW5jdGlvbihlKXtkJiZ4
KGUsYy5wYXJlbnROb2RlKX0pLFMub24oImNoYW5nZVN0YXRlIiw9CmZ1bmN0aW9uKHQpe3R5cGVv
ZiB0LmRpc2FibGVkIT0zRCJ1bmRlZmluZWQiJiYoZS5mb3JFYWNoKGZ1bmN0aW9uKGUsbil7ZS5k
aT0Kc2FibGVkPTNEdC5kaXNhYmxlZFtuXX0pLGIuZGlzYWJsZWQ9M0R0LmRpc2FibGVkKSxULnVw
ZGF0ZSgpfSl9KSxUfXZhciB0PTNEPQplLm1vZGVscy5saW5lKCksbj0zRGUubW9kZWxzLmhpc3Rv
cmljYWxCYXIoKSxyPTNEZS5tb2RlbHMuYXhpcygpLGk9M0RlLm1vZGU9CmxzLmF4aXMoKSxzPTNE
ZS5tb2RlbHMuYXhpcygpLG89M0RlLm1vZGVscy5sZWdlbmQoKSx1PTNEe3RvcDozMCxyaWdodDo2
MCxibz0KdHRvbTo1MCxsZWZ0OjYwfSxhPTNEbnVsbCxmPTNEbnVsbCxsPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGUueH0sYz0zRGZ1bmN0aW9uPQooZSl7cmV0dXJuIGUueX0saD0zRGUudXRpbHMuZGVm
YXVsdENvbG9yKCkscD0zRCEwLGQ9M0QhMCx2PTNEZnVuY3Rpb24oZSx0LG49CixyLGkpe3JldHVy
biI8aDM+IitlKyI8L2gzPiIrIjxwPiIrbisiIGF0ICIrdCsiPC9wPiJ9LG0sZyx5LGI9M0R7fSx3
PTNEbnVsbD0KLEU9M0QiTm8gRGF0YSBBdmFpbGFibGUuIixTPTNEZDMuZGlzcGF0Y2goInRvb2x0
aXBTaG93IiwidG9vbHRpcEhpZGUiLCJzdGF0PQplQ2hhbmdlIiwiY2hhbmdlU3RhdGUiKTtuLnBh
ZERhdGEoITApLHQuY2xpcEVkZ2UoITEpLnBhZERhdGEoITApLHIub3JpZW50KCI9CmJvdHRvbSIp
LnRpY2tQYWRkaW5nKDcpLmhpZ2hsaWdodFplcm8oITEpLGkub3JpZW50KCJsZWZ0Iikscy5vcmll
bnQoInJpZ2h0Ij0KKTt2YXIgeD0zRGZ1bmN0aW9uKG4sbyl7dmFyIHU9M0RuLnBvc1swXSsoby5v
ZmZzZXRMZWZ0fHwwKSxhPTNEbi5wb3NbMV0rKG8uPQpvZmZzZXRUb3B8fDApLGY9M0RyLnRpY2tG
b3JtYXQoKSh0LngoKShuLnBvaW50LG4ucG9pbnRJbmRleCkpLGw9M0Qobi5zZXJpZXM9Ci5iYXI/
aTpzKS50aWNrRm9ybWF0KCkodC55KCkobi5wb2ludCxuLnBvaW50SW5kZXgpKSxjPTNEdihuLnNl
cmllcy5rZXksZixsLD0KbixUKTtlLnRvb2x0aXAuc2hvdyhbdSxhXSxjLG4udmFsdWU8MD8ibiI6
InMiLG51bGwsbyl9O3JldHVybiB0LmRpc3BhdGNoLm9uPQooImVsZW1lbnRNb3VzZW92ZXIudG9v
bHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rdS5sZWZ0LGUucG9zWzFdK3U9Ci50
b3BdLFMudG9vbHRpcFNob3coZSl9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9v
bHRpcCIsZnVuY3Rpb24oZT0KKXtTLnRvb2x0aXBIaWRlKGUpfSksbi5kaXNwYXRjaC5vbigiZWxl
bWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtlPQoucG9zPTNEW2UucG9zWzBdK3Uu
bGVmdCxlLnBvc1sxXSt1LnRvcF0sUy50b29sdGlwU2hvdyhlKX0pLG4uZGlzcGF0Y2gub24oImU9
CmxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe1MudG9vbHRpcEhpZGUoZSl9KSxT
Lm9uKCJ0b29sdGlwSGlkZSIsZj0KdW5jdGlvbigpe2QmJmUudG9vbHRpcC5jbGVhbnVwKCl9KSxU
LmRpc3BhdGNoPTNEUyxULmxlZ2VuZD0zRG8sVC5saW5lcz0zRHQsPQpULmJhcnM9M0RuLFQueEF4
aXM9M0RyLFQueTFBeGlzPTNEaSxULnkyQXhpcz0zRHMsZDMucmViaW5kKFQsdCwiZGVmaW5lZCIs
InM9Cml6ZSIsImNsaXBWb3Jvbm9pIiwiaW50ZXJwb2xhdGUiKSxULm9wdGlvbnM9M0RlLnV0aWxz
Lm9wdGlvbnNGdW5jLmJpbmQoVCksVD0KLng9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8obD0zRGUsdC54KGUpLG4ueChlKSxUKTpsfSxULnk9M0RmPQp1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSx0LnkoZSksbi55KGUpLFQpOmN9LFQubWFyZ2lu
PTNEZnU9Cm5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odS50b3A9M0R0eXBlb2Yg
ZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50bz0KcDp1LnRvcCx1LnJpZ2h0PTNEdHlwZW9mIGUucmln
aHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp1LnJpZ2h0LHUuYm90dG9tPTNEPQp0eXBlb2YgZS5i
b3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dS5ib3R0b20sdS5sZWZ0PTNEdHlwZW9mIGUu
bGVmdCE9M0Q9CiJ1bmRlZmluZWQiP2UubGVmdDp1LmxlZnQsVCk6dX0sVC53aWR0aD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZz0KdGg/KGE9M0RlLFQpOmF9LFQuaGVpZ2h0PTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLFQpOmZ9PQosVC5jb2xv
cj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZS51dGlscy5nZXRD
b2xvcih0KSxvLmM9Cm9sb3IoaCksVCk6aH0sVC5zaG93TGVnZW5kPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLFQpOj0KcH0sVC50b29sdGlwcz0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSxUKTpkfSxULnRvb2x0aXBDPQpvbnRl
bnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj0zRGUsVCk6dn0sVC5z
dGF0ZT0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9M0RlLFQpOmJ9
LFQuZGVmYXVsdFN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dT0Kcm4gYXJndW1lbnRzLmxlbmd0aD8o
dz0zRGUsVCk6d30sVC5ub0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlPQpu
Z3RoPyhFPTNEZSxUKTpFfSxUfSxlLm1vZGVscy5saW5lV2l0aEZvY3VzQ2hhcnQ9M0RmdW5jdGlv
bigpe2Z1bmN0aW9uIGsoZSk9CntyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIFIo
ZSl7dmFyIHQ9M0QrKGU9M0Q9M0QiZSIpLG49M0R0PzE6LTEscj0KPTNETy8zO3JldHVybiJNIisu
NSpuKyIsIityKyJBNiw2IDAgMCAiK3QrIiAiKzYuNSpuKyIsIisocis2KSsiViIrKDIqci02KSsi
PQpBNiw2IDAgMCAiK3QrIiAiKy41Km4rIiwiKzIqcisiWiIrIk0iKzIuNSpuKyIsIisocis4KSsi
ViIrKDIqci04KSsiTSIrNC41Km49CisiLCIrKHIrOCkrIlYiKygyKnItOCl9ZnVuY3Rpb24gVSgp
e2EuZW1wdHkoKXx8YS5leHRlbnQodyksRi5kYXRhKFthLmVtcHR5KD0KKT9nLmRvbWFpbigpOndd
KS5lYWNoKGZ1bmN0aW9uKGUsdCl7dmFyIG49M0RnKGVbMF0pLXYucmFuZ2UoKVswXSxyPTNEdi5y
YW5nPQplKClbMV0tZyhlWzFdKTtkMy5zZWxlY3QodGhpcykuc2VsZWN0KCIubGVmdCIpLmF0dHIo
IndpZHRoIixuPDA/MDpuKSxkMy5zZWw9CmVjdCh0aGlzKS5zZWxlY3QoIi5yaWdodCIpLmF0dHIo
IngiLGcoZVsxXSkpLmF0dHIoIndpZHRoIixyPDA/MDpyKX0pfWZ1bmN0aT0Kb24geigpe3c9M0Rh
LmVtcHR5KCk/bnVsbDphLmV4dGVudCgpO3ZhciBuPTNEYS5lbXB0eSgpP2cuZG9tYWluKCk6YS5l
eHRlbnQoPQopO2lmKE1hdGguYWJzKG5bMF0tblsxXSk8PTNEMSlyZXR1cm47VC5icnVzaCh7ZXh0
ZW50Om4sYnJ1c2g6YX0pLFUoKTt2YXIgcz0KPTNEUC5zZWxlY3QoIi5udi1mb2N1cyAubnYtbGlu
ZXNXcmFwIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuPQpkaXNhYmxlZH0p
Lm1hcChmdW5jdGlvbihlLHIpe3JldHVybntrZXk6ZS5rZXksdmFsdWVzOmUudmFsdWVzLmZpbHRl
cihmdW5jdGk9Cm9uKGUscil7cmV0dXJuIHQueCgpKGUscik+PTNEblswXSYmdC54KCkoZSxyKTw9
M0RuWzFdfSl9fSkpO3MuY2FsbCh0KSxQLnNlbD0KZWN0KCIubnYtZm9jdXMgLm52LXgubnYtYXhp
cyIpLmNhbGwociksUC5zZWxlY3QoIi5udi1mb2N1cyAubnYteS5udi1heGlzIikuPQpjYWxsKGkp
fXZhciBTPTNEZDMuc2VsZWN0KHRoaXMpLE49M0R0aGlzLEw9M0QoaHx8cGFyc2VJbnQoUy5zdHls
ZSgid2lkdGgiKSk9Cnx8OTYwKS1mLmxlZnQtZi5yaWdodCxBPTNEKHB8fHBhcnNlSW50KFMuc3R5
bGUoImhlaWdodCIpKXx8NDAwKS1mLnRvcC1mLmJvdD0KdG9tLWQsTz0zRGQtbC50b3AtbC5ib3R0
b207ay51cGRhdGU9M0RmdW5jdGlvbigpe1MuY2FsbChrKX0say5jb250YWluZXI9M0R0PQpoaXM7
aWYoIWV8fCFlLmxlbmd0aHx8IWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5s
ZW5ndGh9KS5sZW5ndGg9Cil7dmFyIE09M0RTLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEo
W3hdKTtyZXR1cm4gTS5lbnRlcigpLmFwcGVuZCgidGV4dD0KIikuYXR0cigiY2xhc3MiLCJudmQz
IG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtPQpp
ZGRsZSIpLE0uYXR0cigieCIsZi5sZWZ0K0wvMikuYXR0cigieSIsZi50b3ArQS8yKS50ZXh0KGZ1
bmN0aW9uKGUpe3JldHVybiA9CmV9KSxrfVMuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtb3Zl
KCksdj0zRHQueFNjYWxlKCksbT0zRHQueVNjYWxlKCksZz0zRD0Kbi54U2NhbGUoKSx5PTNEbi55
U2NhbGUoKTt2YXIgXz0zRFMuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtbGluZVdpdGhGb2N1c0No
PQphcnQiKS5kYXRhKFtlXSksRD0zRF8uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIs
Im52ZDMgbnYtd3JhcCBudi1saW49CmVXaXRoRm9jdXNDaGFydCIpLmFwcGVuZCgiZyIpLFA9M0Rf
LnNlbGVjdCgiZyIpO0QuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLD0KIm52LWxlZ2VuZFdyYXAi
KTt2YXIgSD0zREQuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1mb2N1cyIpO0guYXBwZW5k
KCJnPQoiKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcyIpLEguYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudi15IG52LWF4aXMiKSw9CkguYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1s
aW5lc1dyYXAiKTt2YXIgQj0zREQuYXBwZW5kKCJnIikuYXR0cigiY2xhcz0KcyIsIm52LWNvbnRl
eHQiKTtCLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksQi5hcHBlbmQo
ImciKS5hPQp0dHIoImNsYXNzIiwibnYteSBudi1heGlzIiksQi5hcHBlbmQoImciKS5hdHRyKCJj
bGFzcyIsIm52LWxpbmVzV3JhcCIpLEIuYXA9CnBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWJy
dXNoQmFja2dyb3VuZCIpLEIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudj0KLXggbnYtYnJ1
c2giKSxiJiYodS53aWR0aChMKSxQLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5kYXR1bShlKS5j
YWxsKHUpLGYuPQp0b3AhPTNEdS5oZWlnaHQoKSYmKGYudG9wPTNEdS5oZWlnaHQoKSxBPTNEKHB8
fHBhcnNlSW50KFMuc3R5bGUoImhlaWdodCIpKXw9Cnw0MDApLWYudG9wLWYuYm90dG9tLWQpLFAu
c2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbD0KYXRlKDAs
IisgLWYudG9wKyIpIikpLF8uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrZi5sZWZ0KyIs
IitmLnRvcCsiKSIpPQosdC53aWR0aChMKS5oZWlnaHQoQSkuY29sb3IoZS5tYXAoZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gZS5jb2xvcnx8YyhlLHQpfSkuZmk9Cmx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1
cm4hZVtuXS5kaXNhYmxlZH0pKSxuLmRlZmluZWQodC5kZWZpbmVkKCkpLndpZHRoKEwpLj0KaGVp
Z2h0KE8pLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGMoZSx0KX0p
LmZpbHRlcihmdW5jdGlvPQpuKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWR9KSksUC5zZWxlY3Qo
Ii5udi1jb250ZXh0IikuYXR0cigidHJhbnNmb3JtIiwidHI9CmFuc2xhdGUoMCwiKyhBK2YuYm90
dG9tK2wudG9wKSsiKSIpO3ZhciBqPTNEUC5zZWxlY3QoIi5udi1jb250ZXh0IC5udi1saW5lcz0K
V3JhcCIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkpO2Qz
LnRyYW5zaXRpb24oaikuY2FsPQpsKG4pLHIuc2NhbGUodikudGlja3MoTC8xMDApLnRpY2tTaXpl
KC1BLDApLGkuc2NhbGUobSkudGlja3MoQS8zNikudGlja1NpemU9CigtTCwwKSxQLnNlbGVjdCgi
Lm52LWZvY3VzIC5udi14Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwi
Kz0KQSsiKSIpLGEueChnKS5vbigiYnJ1c2giLGZ1bmN0aW9uKCl7dmFyIGU9M0RrLnRyYW5zaXRp
b25EdXJhdGlvbigpO2sudHJhbnNpPQp0aW9uRHVyYXRpb24oMCkseigpLGsudHJhbnNpdGlvbkR1
cmF0aW9uKGUpfSksdyYmYS5leHRlbnQodyk7dmFyIEY9M0RQLnNlbGU9CmN0KCIubnYtYnJ1c2hC
YWNrZ3JvdW5kIikuc2VsZWN0QWxsKCJnIikuZGF0YShbd3x8YS5leHRlbnQoKV0pLEk9M0RGLmVu
dGVyKD0KKS5hcHBlbmQoImciKTtJLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwibGVmdCIp
LmF0dHIoIngiLDApLmF0dHIoInkiLDApPQouYXR0cigiaGVpZ2h0IixPKSxJLmFwcGVuZCgicmVj
dCIpLmF0dHIoImNsYXNzIiwicmlnaHQiKS5hdHRyKCJ4IiwwKS5hdHRyKCI9CnkiLDApLmF0dHIo
ImhlaWdodCIsTyk7dmFyIHE9M0RQLnNlbGVjdCgiLm52LXgubnYtYnJ1c2giKS5jYWxsKGEpO3Eu
c2VsZWN0QT0KbGwoInJlY3QiKS5hdHRyKCJoZWlnaHQiLE8pLHEuc2VsZWN0QWxsKCIucmVzaXpl
IikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsPQpSKSx6KCkscy5zY2FsZShnKS50aWNrcyhMLzEw
MCkudGlja1NpemUoLU8sMCksUC5zZWxlY3QoIi5udi1jb250ZXh0IC5udi14Lm49CnYtYXhpcyIp
LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIreS5yYW5nZSgpWzBdKyIpIiksZDMudHJh
bnNpdGlvbihQLj0Kc2VsZWN0KCIubnYtY29udGV4dCAubnYteC5udi1heGlzIikpLmNhbGwocyks
by5zY2FsZSh5KS50aWNrcyhPLzM2KS50aWNrU2l6PQplKC1MLDApLGQzLnRyYW5zaXRpb24oUC5z
ZWxlY3QoIi5udi1jb250ZXh0IC5udi15Lm52LWF4aXMiKSkuY2FsbChvKSxQLnNlbGU9CmN0KCIu
bnYtY29udGV4dCAubnYteC5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAs
Iit5LnJhbmdlKClbMD0KXSsiKSIpLHUuZGlzcGF0Y2gub24oInN0YXRlQ2hhbmdlIixmdW5jdGlv
bihlKXtrLnVwZGF0ZSgpfSksVC5vbigidG9vbHRpcFNoPQpvdyIsZnVuY3Rpb24oZSl7RSYmQyhl
LE4ucGFyZW50Tm9kZSl9KX0pLGt9dmFyIHQ9M0RlLm1vZGVscy5saW5lKCksbj0zRGUubW89CmRl
bHMubGluZSgpLHI9M0RlLm1vZGVscy5heGlzKCksaT0zRGUubW9kZWxzLmF4aXMoKSxzPTNEZS5t
b2RlbHMuYXhpcygpLG89Cj0zRGUubW9kZWxzLmF4aXMoKSx1PTNEZS5tb2RlbHMubGVnZW5kKCks
YT0zRGQzLnN2Zy5icnVzaCgpLGY9M0R7dG9wOjMwLHJpZz0KaHQ6MzAsYm90dG9tOjMwLGxlZnQ6
NjB9LGw9M0R7dG9wOjAscmlnaHQ6MzAsYm90dG9tOjIwLGxlZnQ6NjB9LGM9M0RlLnV0aWxzPQou
ZGVmYXVsdENvbG9yKCksaD0zRG51bGwscD0zRG51bGwsZD0zRDEwMCx2LG0sZyx5LGI9M0QhMCx3
PTNEbnVsbCxFPTNEITAsUz0KPTNEZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4iPGgzPiIrZSsi
PC9oMz4iKyI8cD4iK24rIiBhdCAiK3QrIjwvcD4ifSx4PTNEPQoiTm8gRGF0YSBBdmFpbGFibGUu
IixUPTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhpZGUiLCJicnVzaCIpLE49
Cj0zRDA7dC5jbGlwRWRnZSghMCksbi5pbnRlcmFjdGl2ZSghMSksci5vcmllbnQoImJvdHRvbSIp
LnRpY2tQYWRkaW5nKDUpLGkubz0KcmllbnQoImxlZnQiKSxzLm9yaWVudCgiYm90dG9tIikudGlj
a1BhZGRpbmcoNSksby5vcmllbnQoImxlZnQiKTt2YXIgQz0zRGZ1PQpuY3Rpb24obixzKXt2YXIg
bz0zRG4ucG9zWzBdKyhzLm9mZnNldExlZnR8fDApLHU9M0RuLnBvc1sxXSsocy5vZmZzZXRUb3B8
fDA9CiksYT0zRHIudGlja0Zvcm1hdCgpKHQueCgpKG4ucG9pbnQsbi5wb2ludEluZGV4KSksZj0z
RGkudGlja0Zvcm1hdCgpKHQueSgpKD0Kbi5wb2ludCxuLnBvaW50SW5kZXgpKSxsPTNEUyhuLnNl
cmllcy5rZXksYSxmLG4sayk7ZS50b29sdGlwLnNob3coW28sdV0sbCxuPQp1bGwsbnVsbCxzKX07
cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24o
ZSl7ZS49CnBvcz0zRFtlLnBvc1swXStmLmxlZnQsZS5wb3NbMV0rZi50b3BdLFQudG9vbHRpcFNo
b3coZSl9KSx0LmRpc3BhdGNoLm9uKCJlbD0KZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlv
bihlKXtULnRvb2x0aXBIaWRlKGUpfSksVC5vbigidG9vbHRpcEhpZGUiLGZ1PQpuY3Rpb24oKXtF
JiZlLnRvb2x0aXAuY2xlYW51cCgpfSksay5kaXNwYXRjaD0zRFQsay5sZWdlbmQ9M0R1LGsubGlu
ZXM9M0R0LGs9Ci5saW5lczI9M0RuLGsueEF4aXM9M0RyLGsueUF4aXM9M0RpLGsueDJBeGlzPTNE
cyxrLnkyQXhpcz0zRG8sZDMucmViaW5kKGssdD0KLCJkZWZpbmVkIiwiaXNBcmVhIiwic2l6ZSIs
InhEb21haW4iLCJ5RG9tYWluIiwieFJhbmdlIiwieVJhbmdlIiwiZm9yY2VYIiwiPQpmb3JjZVki
LCJpbnRlcmFjdGl2ZSIsImNsaXBFZGdlIiwiY2xpcFZvcm9ub2kiLCJpZCIpLGsub3B0aW9ucz0z
RGUudXRpbHMub3A9CnRpb25zRnVuYy5iaW5kKGspLGsueD0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyh0LngoZSksbi54KGUpLD0Kayk6dC54fSxrLnk9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC55KGUpLG4ueShlKSxrKTp0Lnl9LGsuPQptYXJn
aW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZi50b3A9M0R0eXBlb2Yg
ZS50b3AhPTNEInVuZGU9CmZpbmVkIj9lLnRvcDpmLnRvcCxmLnJpZ2h0PTNEdHlwZW9mIGUucmln
aHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDpmLnJpZ2h0LD0KZi5ib3R0b209M0R0eXBlb2YgZS5i
b3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206Zi5ib3R0b20sZi5sZWZ0PTNEdHlwZW9mPQog
ZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDpmLmxlZnQsayk6Zn0say5tYXJnaW4yPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGE9CnJndW1lbnRzLmxlbmd0aD8obD0zRGUsayk6bH0say53aWR0aD0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPz0KKGg9M0RlLGspOmh9LGsuaGVp
Z2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLGspOnB9LGsu
PQpoZWlnaHQyPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9M0RlLGsp
OmR9LGsuY29sb3I9M0RmdW5jdGk9Cm9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNE
ZS51dGlscy5nZXRDb2xvcih0KSx1LmNvbG9yKGMpLGspOmN9LGsucz0KaG93TGVnZW5kPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9M0RlLGspOmJ9LGsudG9vbHRpcHM9
M0RmPQp1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPTNEZSxrKTpFfSxrLnRv
b2x0aXBDb250ZW50PTNEZnVuY3Rpb249CihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUz0z
RGUsayk6U30say5pbnRlcnBvbGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybj0KIGFyZ3VtZW50cy5s
ZW5ndGg/KHQuaW50ZXJwb2xhdGUoZSksbi5pbnRlcnBvbGF0ZShlKSxrKTp0LmludGVycG9sYXRl
KCl9LGsuPQpub0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD0z
RGUsayk6eH0say54VGlja0Zvcm1hdD0zRGY9CnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHIudGlja0Zvcm1hdChlKSxzLnRpY2tGb3JtYXQoZSksayk6ci50aT0KY2tGb3JtYXQo
KX0say55VGlja0Zvcm1hdD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhp
LnRpY2tGb3JtPQphdChlKSxvLnRpY2tGb3JtYXQoZSksayk6aS50aWNrRm9ybWF0KCl9LGsuYnJ1
c2hFeHRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm49CiBhcmd1bWVudHMubGVuZ3RoPyh3PTNEZSxr
KTp3fSxrLnRyYW5zaXRpb25EdXJhdGlvbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcj0KZ3VtZW50
cy5sZW5ndGg/KE49M0RlLGspOk59LGt9LGUubW9kZWxzLmxpbmVQbHVzQmFyV2l0aEZvY3VzQ2hh
cnQ9M0RmdW5jdGlvPQpuKCl7ZnVuY3Rpb24gQihlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUp
e2Z1bmN0aW9uIHR0KGUpe3ZhciB0PTNEKyhlPTNEPQo9M0QiZSIpLG49M0R0PzE6LTEscj0zREkv
MztyZXR1cm4iTSIrLjUqbisiLCIrcisiQTYsNiAwIDAgIit0KyIgIis2LjUqbisiLCI9Cisocis2
KSsiViIrKDIqci02KSsiQTYsNiAwIDAgIit0KyIgIisuNSpuKyIsIisyKnIrIloiKyJNIisyLjUq
bisiLCIrKHIrOCkrIj0KViIrKDIqci04KSsiTSIrNC41Km4rIiwiKyhyKzgpKyJWIisoMipyLTgp
fWZ1bmN0aW9uIG50KCl7aC5lbXB0eSgpfHxoLmV4dGVuPQp0KHgpLFkuZGF0YShbaC5lbXB0eSgp
P2suZG9tYWluKCk6eF0pLmVhY2goZnVuY3Rpb24oZSx0KXt2YXIgbj0zRGsoZVswXSktay49CnJh
bmdlKClbMF0scj0zRGsucmFuZ2UoKVsxXS1rKGVbMV0pO2QzLnNlbGVjdCh0aGlzKS5zZWxlY3Qo
Ii5sZWZ0IikuYXR0cigidz0KaWR0aCIsbjwwPzA6biksZDMuc2VsZWN0KHRoaXMpLnNlbGVjdCgi
LnJpZ2h0IikuYXR0cigieCIsayhlWzFdKSkuYXR0cigid2lkPQp0aCIscjwwPzA6cil9KX1mdW5j
dGlvbiBydCgpe3g9M0RoLmVtcHR5KCk/bnVsbDpoLmV4dGVudCgpLFM9M0RoLmVtcHR5KCk/ay49
CmRvbWFpbigpOmguZXh0ZW50KCksRC5icnVzaCh7ZXh0ZW50OlMsYnJ1c2g6aH0pLG50KCksci53
aWR0aChqKS5oZWlnaHQoRikuYz0Kb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNv
bG9yfHx3KGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1PQpybiFlW25dLmRpc2FibGVk
JiZlW25dLmJhcn0pKSx0LndpZHRoKGopLmhlaWdodChGKS5jb2xvcihlLm1hcChmdW5jdGlvbihl
LHQ9Cil7cmV0dXJuIGUuY29sb3J8fHcoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVy
biFlW25dLmRpc2FibGVkJiYhZVtuXT0KLmJhcn0pKTt2YXIgbj0zRCQuc2VsZWN0KCIubnYtZm9j
dXMgLm52LWJhcnNXcmFwIikuZGF0dW0oUi5sZW5ndGg/Ui5tYXAoZnVuPQpjdGlvbihlLHQpe3Jl
dHVybntrZXk6ZS5rZXksdmFsdWVzOmUudmFsdWVzLmZpbHRlcihmdW5jdGlvbihlLHQpe3JldHVy
biByLng9CigpKGUsdCk+PTNEU1swXSYmci54KCkoZSx0KTw9M0RTWzFdfSl9fSk6W3t2YWx1ZXM6
W119XSksaT0zRCQuc2VsZWN0KCIubnYtZj0Kb2N1cyAubnYtbGluZXNXcmFwIikuZGF0dW0oVVsw
XS5kaXNhYmxlZD9be3ZhbHVlczpbXX1dOlUubWFwKGZ1bmN0aW9uKGUsbil7PQpyZXR1cm57a2V5
OmUua2V5LHZhbHVlczplLnZhbHVlcy5maWx0ZXIoZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC54KCko
ZSxuKT49M0Q9ClNbMF0mJnQueCgpKGUsbik8PTNEU1sxXX0pfX0pKTtSLmxlbmd0aD9DPTNEci54
U2NhbGUoKTpDPTNEdC54U2NhbGUoKSxzLnNjYT0KbGUoQykudGlja3Moai8xMDApLnRpY2tTaXpl
KC1GLDApLHMuZG9tYWluKFtNYXRoLmNlaWwoU1swXSksTWF0aC5mbG9vcihTWzFdPQopXSksJC5z
ZWxlY3QoIi5udi14Lm52LWF4aXMiKS5jYWxsKHMpLG4uY2FsbChyKSxpLmNhbGwodCksJC5zZWxl
Y3QoIi5udi1mb2M9CnVzIC5udi14Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xh
dGUoMCwiK0wucmFuZ2UoKVswXSsiKSIpLHUuc2NhbD0KZShMKS50aWNrcyhGLzM2KS50aWNrU2l6
ZSgtaiwwKSwkLnNlbGVjdCgiLm52LWZvY3VzIC5udi15MS5udi1heGlzIikuc3R5bGUoPQoib3Bh
Y2l0eSIsUi5sZW5ndGg/MTowKSxhLnNjYWxlKEEpLnRpY2tzKEYvMzYpLnRpY2tTaXplKFIubGVu
Z3RoPzA6LWosMCksJC49CnNlbGVjdCgiLm52LWZvY3VzIC5udi15Mi5udi1heGlzIikuc3R5bGUo
Im9wYWNpdHkiLFUubGVuZ3RoPzE6MCkuYXR0cigidHJhbj0Kc2Zvcm0iLCJ0cmFuc2xhdGUoIitD
LnJhbmdlKClbMV0rIiwwKSIpLCQuc2VsZWN0KCIubnYtZm9jdXMgLm52LXkxLm52LWF4aXMiPQop
LmNhbGwodSksJC5zZWxlY3QoIi5udi1mb2N1cyAubnYteTIubnYtYXhpcyIpLmNhbGwoYSl9dmFy
IE49M0RkMy5zZWxlY3QodGg9CmlzKSxQPTNEdGhpcyxqPTNEKHZ8fHBhcnNlSW50KE4uc3R5bGUo
IndpZHRoIikpfHw5NjApLXAubGVmdC1wLnJpZ2h0LEY9M0QobT0KfHxwYXJzZUludChOLnN0eWxl
KCJoZWlnaHQiKSl8fDQwMCktcC50b3AtcC5ib3R0b20tZyxJPTNEZy1kLnRvcC1kLmJvdHRvbTtC
PQoudXBkYXRlPTNEZnVuY3Rpb24oKXtOLmNhbGwoQil9LEIuY29udGFpbmVyPTNEdGhpcztpZigh
ZXx8IWUubGVuZ3RofHwhZS5maWw9CnRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubGVu
Z3RofSkubGVuZ3RoKXt2YXIgcT0zRE4uc2VsZWN0QWxsKCIubnYtbj0Kb0RhdGEiKS5kYXRhKFtf
XSk7cmV0dXJuIHEuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYt
bm9EPQphdGEiKS5hdHRyKCJkeSIsIi0uN2VtIikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxl
IikscS5hdHRyKCJ4IixwLmxlZnQrai89CjIpLmF0dHIoInkiLHAudG9wK0YvMikudGV4dChmdW5j
dGlvbihlKXtyZXR1cm4gZX0pLEJ9Ti5zZWxlY3RBbGwoIi5udi1ub0RhdD0KYSIpLnJlbW92ZSgp
O3ZhciBSPTNEZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQmJmUuYmFyfSks
VT0zRGUuPQpmaWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuYmFyfSk7Qz0zRHIueFNjYWxlKCks
az0zRG8uc2NhbGUoKSxMPTNEci55U2NhbGU9CigpLEE9M0R0LnlTY2FsZSgpLE89M0RpLnlTY2Fs
ZSgpLE09M0RuLnlTY2FsZSgpO3ZhciB6PTNEZS5maWx0ZXIoZnVuY3Rpb24oZT0KKXtyZXR1cm4h
ZS5kaXNhYmxlZCYmZS5iYXJ9KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLm1hcChm
dW5jdGlvbihlPQosdCl7cmV0dXJue3g6eShlLHQpLHk6YihlLHQpfX0pfSksVz0zRGUuZmlsdGVy
KGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGU9CmQmJiFlLmJhcn0pLm1hcChmdW5jdGlvbihl
KXtyZXR1cm4gZS52YWx1ZXMubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJue3g6eShlLD0KdCkseTpi
KGUsdCl9fSl9KTtDLnJhbmdlKFswLGpdKSxrLmRvbWFpbihkMy5leHRlbnQoZDMubWVyZ2Uoei5j
b25jYXQoVykpLGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGUueH0pKS5yYW5nZShbMCxqXSk7dmFyIFg9
M0ROLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LWxpbmU9ClBsdXNCYXIiKS5kYXRhKFtlXSksVj0z
RFguZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudj0KLWxp
bmVQbHVzQmFyIikuYXBwZW5kKCJnIiksJD0zRFguc2VsZWN0KCJnIik7Vi5hcHBlbmQoImciKS5h
dHRyKCJjbGFzcyIsIm52PQotbGVnZW5kV3JhcCIpO3ZhciBKPTNEVi5hcHBlbmQoImciKS5hdHRy
KCJjbGFzcyIsIm52LWZvY3VzIik7Si5hcHBlbmQoImciKS49CmF0dHIoImNsYXNzIiwibnYteCBu
di1heGlzIiksSi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkxIG52LWF4aXMiKSxKLj0K
YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15MiBudi1heGlzIiksSi5hcHBlbmQoImciKS5h
dHRyKCJjbGFzcyIsIm52LWJhPQpyc1dyYXAiKSxKLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwi
bnYtbGluZXNXcmFwIik7dmFyIEs9M0RWLmFwcGVuZCgiZyIpLmE9CnR0cigiY2xhc3MiLCJudi1j
b250ZXh0Iik7Sy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcyIpLEsuYXBw
ZT0KbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkxIG52LWF4aXMiKSxLLmFwcGVuZCgiZyIpLmF0
dHIoImNsYXNzIiwibnYteTIgbnYtPQpheGlzIiksSy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIs
Im52LWJhcnNXcmFwIiksSy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyI9CiwibnYtbGluZXNXcmFw
IiksSy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWJydXNoQmFja2dyb3VuZCIpLEsuYXBw
ZW5kKD0KImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYnJ1c2giKSxFJiYoYy53aWR0aChqLzIp
LCQuc2VsZWN0KCIubnYtbGVnZW5kV3JhPQpwIikuZGF0dW0oZS5tYXAoZnVuY3Rpb24oZSl7cmV0
dXJuIGUub3JpZ2luYWxLZXk9M0RlLm9yaWdpbmFsS2V5PTNEPTNEPTNEdW49CmRlZmluZWQ/ZS5r
ZXk6ZS5vcmlnaW5hbEtleSxlLmtleT0zRGUub3JpZ2luYWxLZXkrKGUuYmFyPyIgKGxlZnQgYXhp
cykiOiIgKD0KcmlnaHQgYXhpcykiKSxlfSkpLmNhbGwoYykscC50b3AhPTNEYy5oZWlnaHQoKSYm
KHAudG9wPTNEYy5oZWlnaHQoKSxGPTNEKG18PQp8cGFyc2VJbnQoTi5zdHlsZSgiaGVpZ2h0Iikp
fHw0MDApLXAudG9wLXAuYm90dG9tLWcpLCQuc2VsZWN0KCIubnYtbGVnZW5kV3I9CmFwIikuYXR0
cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrai8yKyIsIisgLXAudG9wKyIpIikpLFguYXR0cigi
dHJhbnNmb3JtIj0KLCJ0cmFuc2xhdGUoIitwLmxlZnQrIiwiK3AudG9wKyIpIiksaS53aWR0aChq
KS5oZWlnaHQoSSkuY29sb3IoZS5tYXAoZnVuY3RpPQpvbihlLHQpe3JldHVybiBlLmNvbG9yfHx3
KGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZCY9CiZlW25d
LmJhcn0pKSxuLndpZHRoKGopLmhlaWdodChJKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3Jl
dHVybiBlLmNvbG9yfD0KfHcoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25d
LmRpc2FibGVkJiYhZVtuXS5iYXJ9KSk7dmFyIFE9M0QkPQouc2VsZWN0KCIubnYtY29udGV4dCAu
bnYtYmFyc1dyYXAiKS5kYXR1bShSLmxlbmd0aD9SOlt7dmFsdWVzOltdfV0pLEc9M0QkLnM9CmVs
ZWN0KCIubnYtY29udGV4dCAubnYtbGluZXNXcmFwIikuZGF0dW0oVVswXS5kaXNhYmxlZD9be3Zh
bHVlczpbXX1dOlUpOyQucz0KZWxlY3QoIi5udi1jb250ZXh0IikuYXR0cigidHJhbnNmb3JtIiwi
dHJhbnNsYXRlKDAsIisoRitwLmJvdHRvbStkLnRvcCkrIikiPQopLFEuY2FsbChpKSxHLmNhbGwo
biksaC54KGspLm9uKCJicnVzaCIscnQpLHgmJmguZXh0ZW50KHgpO3ZhciBZPTNEJC5zZWxlY3Q9
CigiLm52LWJydXNoQmFja2dyb3VuZCIpLnNlbGVjdEFsbCgiZyIpLmRhdGEoW3h8fGguZXh0ZW50
KCldKSxaPTNEWS5lbnRlcigpLj0KYXBwZW5kKCJnIik7Wi5hcHBlbmQoInJlY3QiKS5hdHRyKCJj
bGFzcyIsImxlZnQiKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IiwwKS5hPQp0dHIoImhlaWdodCIsSSks
Wi5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsInJpZ2h0IikuYXR0cigieCIsMCkuYXR0cigi
eSI9CiwwKS5hdHRyKCJoZWlnaHQiLEkpO3ZhciBldD0zRCQuc2VsZWN0KCIubnYteC5udi1icnVz
aCIpLmNhbGwoaCk7ZXQuc2VsZWN0QT0KbGwoInJlY3QiKS5hdHRyKCJoZWlnaHQiLEkpLGV0LnNl
bGVjdEFsbCgiLnJlc2l6ZSIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiPQosdHQpLG8udGlja3Mo
ai8xMDApLnRpY2tTaXplKC1JLDApLCQuc2VsZWN0KCIubnYtY29udGV4dCAubnYteC5udi1heGlz
IikuYXQ9CnRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK08ucmFuZ2UoKVswXSsiKSIpLCQu
c2VsZWN0KCIubnYtY29udGV4dCAubnYteD0KLm52LWF4aXMiKS5jYWxsKG8pLGYuc2NhbGUoTyku
dGlja3MoSS8zNikudGlja1NpemUoLWosMCksJC5zZWxlY3QoIi5udi1jb250PQpleHQgLm52LXkx
Lm52LWF4aXMiKS5zdHlsZSgib3BhY2l0eSIsUi5sZW5ndGg/MTowKS5hdHRyKCJ0cmFuc2Zvcm0i
LCJ0cmFuc2w9CmF0ZSgwLCIray5yYW5nZSgpWzBdKyIpIiksJC5zZWxlY3QoIi5udi1jb250ZXh0
IC5udi15MS5udi1heGlzIikuY2FsbChmKSxsLj0Kc2NhbGUoTSkudGlja3MoSS8zNikudGlja1Np
emUoUi5sZW5ndGg/MDotaiwwKSwkLnNlbGVjdCgiLm52LWNvbnRleHQgLm52LXkyPQoubnYtYXhp
cyIpLnN0eWxlKCJvcGFjaXR5IixVLmxlbmd0aD8xOjApLmF0dHIoInRyYW5zZm9ybSIsInRyYW5z
bGF0ZSgiK2sucmE9Cm5nZSgpWzFdKyIsMCkiKSwkLnNlbGVjdCgiLm52LWNvbnRleHQgLm52LXky
Lm52LWF4aXMiKS5jYWxsKGwpLGMuZGlzcGF0Y2gubz0Kbigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9u
KGUpe0IudXBkYXRlKCl9KSxELm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7VCYmPQpIKGUs
UC5wYXJlbnROb2RlKX0pLHJ0KCl9KSxCfXZhciB0PTNEZS5tb2RlbHMubGluZSgpLG49M0RlLm1v
ZGVscy5saW5lKCkscj0KPTNEZS5tb2RlbHMuaGlzdG9yaWNhbEJhcigpLGk9M0RlLm1vZGVscy5o
aXN0b3JpY2FsQmFyKCkscz0zRGUubW9kZWxzLmF4aXMoPQopLG89M0RlLm1vZGVscy5heGlzKCks
dT0zRGUubW9kZWxzLmF4aXMoKSxhPTNEZS5tb2RlbHMuYXhpcygpLGY9M0RlLm1vZGVscy49CmF4
aXMoKSxsPTNEZS5tb2RlbHMuYXhpcygpLGM9M0RlLm1vZGVscy5sZWdlbmQoKSxoPTNEZDMuc3Zn
LmJydXNoKCkscD0zRHt0bz0KcDozMCxyaWdodDozMCxib3R0b206MzAsbGVmdDo2MH0sZD0zRHt0
b3A6MCxyaWdodDozMCxib3R0b206MjAsbGVmdDo2MH0sdj0KPTNEbnVsbCxtPTNEbnVsbCxnPTNE
MTAwLHk9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS54fSxiPTNEZnVuY3Rpb24oZSl7cmV0dXJuPQog
ZS55fSx3PTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxFPTNEITAsUyx4PTNEbnVsbCxUPTNEITAs
Tj0zRGZ1bmN0aW9uKGUsdCw9Cm4scixpKXtyZXR1cm4iPGgzPiIrZSsiPC9oMz4iKyI8cD4iK24r
IiBhdCAiK3QrIjwvcD4ifSxDLGssTCxBLE8sTSxfPTNEIk5vID0KRGF0YSBBdmFpbGFibGUuIixE
PTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhpZGUiLCJicnVzaCIpLFA9M0Qw
PQo7dC5jbGlwRWRnZSghMCksbi5pbnRlcmFjdGl2ZSghMSkscy5vcmllbnQoImJvdHRvbSIpLnRp
Y2tQYWRkaW5nKDUpLHUub3JpZW49CnQoImxlZnQiKSxhLm9yaWVudCgicmlnaHQiKSxvLm9yaWVu
dCgiYm90dG9tIikudGlja1BhZGRpbmcoNSksZi5vcmllbnQoImxlZj0KdCIpLGwub3JpZW50KCJy
aWdodCIpO3ZhciBIPTNEZnVuY3Rpb24obixyKXtTJiYobi5wb2ludEluZGV4Kz0zRE1hdGguY2Vp
bChTPQpbMF0pKTt2YXIgaT0zRG4ucG9zWzBdKyhyLm9mZnNldExlZnR8fDApLG89M0RuLnBvc1sx
XSsoci5vZmZzZXRUb3B8fDApLGY9M0Q9CnMudGlja0Zvcm1hdCgpKHQueCgpKG4ucG9pbnQsbi5w
b2ludEluZGV4KSksbD0zRChuLnNlcmllcy5iYXI/dTphKS50aWNrRm9ybT0KYXQoKSh0LnkoKShu
LnBvaW50LG4ucG9pbnRJbmRleCkpLGM9M0ROKG4uc2VyaWVzLmtleSxmLGwsbixCKTtlLnRvb2x0
aXAuc2hvPQp3KFtpLG9dLGMsbi52YWx1ZTwwPyJuIjoicyIsbnVsbCxyKX07cmV0dXJuIHQuZGlz
cGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXI9Ci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz0z
RFtlLnBvc1swXStwLmxlZnQsZS5wb3NbMV0rcC50b3BdLEQudG9vbHRpcFNobz0KdyhlKX0pLHQu
ZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtELnRvb2x0
aXBIaWRlKGUpPQp9KSxyLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1
bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK3A9Ci5sZWZ0LGUucG9zWzFdK3AudG9wXSxELnRv
b2x0aXBTaG93KGUpfSksci5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvbz0KbHRpcCIs
ZnVuY3Rpb24oZSl7RC50b29sdGlwSGlkZShlKX0pLEQub24oInRvb2x0aXBIaWRlIixmdW5jdGlv
bigpe1QmJmUudG9vPQpsdGlwLmNsZWFudXAoKX0pLEIuZGlzcGF0Y2g9M0RELEIubGVnZW5kPTNE
YyxCLmxpbmVzPTNEdCxCLmxpbmVzMj0zRG4sQi5iYXI9CnM9M0RyLEIuYmFyczI9M0RpLEIueEF4
aXM9M0RzLEIueDJBeGlzPTNEbyxCLnkxQXhpcz0zRHUsQi55MkF4aXM9M0RhLEIueTNBeD0KaXM9
M0RmLEIueTRBeGlzPTNEbCxkMy5yZWJpbmQoQix0LCJkZWZpbmVkIiwic2l6ZSIsImNsaXBWb3Jv
bm9pIiwiaW50ZXJwb2xhPQp0ZSIpLEIub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmlu
ZChCKSxCLng9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW09CmVudHMubGVuZ3RoPyh5PTNEZSx0
LngoZSksci54KGUpLEIpOnl9LEIueT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubD0K
ZW5ndGg/KGI9M0RlLHQueShlKSxyLnkoZSksQik6Yn0sQi5tYXJnaW49M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlPQpuZ3RoPyhwLnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZp
bmVkIj9lLnRvcDpwLnRvcCxwLnJpZ2h0PTNEdHlwZW9mIGUucmk9CmdodCE9M0QidW5kZWZpbmVk
Ij9lLnJpZ2h0OnAucmlnaHQscC5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5l
ZD0KIj9lLmJvdHRvbTpwLmJvdHRvbSxwLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmlu
ZWQiP2UubGVmdDpwLmxlZnQsQik6PQpwfSxCLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHY9M0RlLEIpOnZ9LEIuaGVpZ2h0PTNEZnU9Cm5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8obT0zRGUsQik6bX0sQi5jb2xvcj0zRGZ1bmN0aW9uKHQpe3Jl
dHVybj0KIGFyZ3VtZW50cy5sZW5ndGg/KHc9M0RlLnV0aWxzLmdldENvbG9yKHQpLGMuY29sb3Io
dyksQik6d30sQi5zaG93TGVnZW5kPTNEPQpmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oRT0zRGUsQik6RX0sQi50b29sdGlwcz0zRGZ1bmN0aW9uKGUpe3I9CmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KFQ9M0RlLEIpOlR9LEIudG9vbHRpcENvbnRlbnQ9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYT0Kcmd1bWVudHMubGVuZ3RoPyhOPTNEZSxCKTpOfSxCLm5vRGF0YT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPQo/KF89M0RlLEIpOl99LEIuYnJ1c2hFeHRlbnQ9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD0zRGUsQik9Cjp4fSxCfSxl
Lm1vZGVscy5tdWx0aUJhcj0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gQyhlKXtyZXR1cm4gZS5lYWNo
KGZ1bmN0aW9uKD0KZSl7dmFyIGc9M0RuLXQubGVmdC10LnJpZ2h0LEM9M0RyLXQudG9wLXQuYm90
dG9tLGs9M0RkMy5zZWxlY3QodGhpcyk7ZCYmZS5sPQplbmd0aCYmKGQ9M0Rbe3ZhbHVlczplWzBd
LnZhbHVlcy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJue3g6ZS54LHk6MCxzZXJpZXM6ZS49CnNlcmll
cyxzaXplOi4wMX19KX1dKSxjJiYoZT0zRGQzLmxheW91dC5zdGFjaygpLm9mZnNldChoKS52YWx1
ZXMoZnVuY3Rpb24oZT0KKXtyZXR1cm4gZS52YWx1ZXN9KS55KGEpKCFlLmxlbmd0aCYmZD9kOmUp
KSxlLmZvckVhY2goZnVuY3Rpb24oZSx0KXtlLnZhbHVlPQpzLmZvckVhY2goZnVuY3Rpb24oZSl7
ZS5zZXJpZXM9M0R0fSl9KSxjJiZlWzBdLnZhbHVlcy5tYXAoZnVuY3Rpb24odCxuKXt2YXI9CiBy
PTNEMCxpPTNEMDtlLm1hcChmdW5jdGlvbihlKXt2YXIgdD0zRGUudmFsdWVzW25dO3Quc2l6ZT0z
RE1hdGguYWJzKHQueSksdD0KLnk8MD8odC55MT0zRGksaS09M0R0LnNpemUpOih0LnkxPTNEdC5z
aXplK3Iscis9M0R0LnNpemUpfSl9KTt2YXIgTD0zRHkmJmI/PQpbXTplLm1hcChmdW5jdGlvbihl
KXtyZXR1cm4gZS52YWx1ZXMubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJue3g6dShlLHQpLHk6YSg9
CmUsdCkseTA6ZS55MCx5MTplLnkxfX0pfSk7aS5kb21haW4oeXx8ZDMubWVyZ2UoTCkubWFwKGZ1
bmN0aW9uKGUpe3JldHVybiBlLj0KeH0pKS5yYW5nZUJhbmRzKHd8fFswLGddLFMpLHMuZG9tYWlu
KGJ8fGQzLmV4dGVudChkMy5tZXJnZShMKS5tYXAoZnVuY3Rpb24oPQplKXtyZXR1cm4gYz9lLnk+
MD9lLnkxOmUueTErZS55OmUueX0pLmNvbmNhdChmKSkpLnJhbmdlKEV8fFtDLDBdKSxpLmRvbWFp
big9CilbMF09M0Q9M0Q9M0RpLmRvbWFpbigpWzFdJiYoaS5kb21haW4oKVswXT9pLmRvbWFpbihb
aS5kb21haW4oKVswXS1pLmRvbWFpbj0KKClbMF0qLjAxLGkuZG9tYWluKClbMV0raS5kb21haW4o
KVsxXSouMDFdKTppLmRvbWFpbihbLTEsMV0pKSxzLmRvbWFpbigpWzBdPQo9M0Q9M0Q9M0RzLmRv
bWFpbigpWzFdJiYocy5kb21haW4oKVswXT9zLmRvbWFpbihbcy5kb21haW4oKVswXStzLmRvbWFp
bigpWzA9Cl0qLjAxLHMuZG9tYWluKClbMV0tcy5kb21haW4oKVsxXSouMDFdKTpzLmRvbWFpbihb
LTEsMV0pKSxUPTNEVHx8aSxOPTNETnx8cz0KO3ZhciBBPTNEay5zZWxlY3RBbGwoImcubnYtd3Jh
cC5udi1tdWx0aWJhciIpLmRhdGEoW2VdKSxPPTNEQS5lbnRlcigpLmFwcGVuPQpkKCJnIikuYXR0
cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbXVsdGliYXIiKSxNPTNETy5hcHBlbmQoImRlZnMi
KSxfPTNETy49CmFwcGVuZCgiZyIpLEQ9M0RBLnNlbGVjdCgiZyIpO18uYXBwZW5kKCJnIikuYXR0
cigiY2xhc3MiLCJudi1ncm91cHMiKSxBLmF0dD0KcigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIr
dC5sZWZ0KyIsIit0LnRvcCsiKSIpLE0uYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoPQoiaWQiLCJu
di1lZGdlLWNsaXAtIitvKS5hcHBlbmQoInJlY3QiKSxBLnNlbGVjdCgiI252LWVkZ2UtY2xpcC0i
K28rIiByZWN0Iik9Ci5hdHRyKCJ3aWR0aCIsZykuYXR0cigiaGVpZ2h0IixDKSxELmF0dHIoImNs
aXAtcGF0aCIsbD8idXJsKCNudi1lZGdlLWNsaXAtIj0KK28rIikiOiIiKTt2YXIgUD0zREEuc2Vs
ZWN0KCIubnYtZ3JvdXBzIikuc2VsZWN0QWxsKCIubnYtZ3JvdXAiKS5kYXRhKGZ1bmN0PQppb24o
ZSl7cmV0dXJuIGV9LGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR9KTtQLmVudGVyKCkuYXBwZW5kKCJn
Iikuc3R5bGUoInN0cm89CmtlLW9wYWNpdHkiLDFlLTYpLnN0eWxlKCJmaWxsLW9wYWNpdHkiLDFl
LTYpLFAuZXhpdCgpLnNlbGVjdEFsbCgicmVjdC5udi1iYT0KciIpLmF0dHIoInkiLGZ1bmN0aW9u
KGUpe3JldHVybiBjP04oZS55MCk6TigwKX0pLmF0dHIoImhlaWdodCIsMCkucmVtb3ZlKCksPQpQ
LmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiJudi1ncm91cCBudi1zZXJpZXMtIit0
fSkuY2xhc3NlZCgiaG92ZXI9CiIsZnVuY3Rpb24oZSl7cmV0dXJuIGUuaG92ZXJ9KS5zdHlsZSgi
ZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChlLHQpfSkucz0KdHlsZSgic3Ryb2tlIixmdW5j
dGlvbihlLHQpe3JldHVybiBwKGUsdCl9KSxQLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMSkuc3R5
PQpsZSgiZmlsbC1vcGFjaXR5IiwuNzUpO3ZhciBIPTNEUC5zZWxlY3RBbGwoInJlY3QubnYtYmFy
IikuZGF0YShmdW5jdGlvbih0KXs9CnJldHVybiBkJiYhZS5sZW5ndGg/ZC52YWx1ZXM6dC52YWx1
ZXN9KTtILmV4aXQoKS5yZW1vdmUoKTt2YXIgQj0zREguZW50ZXIoKT0KLmFwcGVuZCgicmVjdCIp
LmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiBhKGUsdCk8MD8ibnYtYmFyIG5lZ2F0
aXZlPQoiOiJudi1iYXIgcG9zaXRpdmUifSkuYXR0cigieCIsZnVuY3Rpb24odCxuLHIpe3JldHVy
biBjPzA6cippLnJhbmdlQmFuZCgpL2U9Ci5sZW5ndGh9KS5hdHRyKCJ5IixmdW5jdGlvbihlKXty
ZXR1cm4gTihjP2UueTA6MCl9KS5hdHRyKCJoZWlnaHQiLDApLmF0dHIoIj0Kd2lkdGgiLGkucmFu
Z2VCYW5kKCkvKGM/MTplLmxlbmd0aCkpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXty
ZXR1cm4iPQp0cmFuc2xhdGUoIitpKHUoZSx0KSkrIiwwKSJ9KTtILnN0eWxlKCJmaWxsIixmdW5j
dGlvbihlLHQsbil7cmV0dXJuIHAoZSxuLHQ9Cil9KS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbihl
LHQsbil7cmV0dXJuIHAoZSxuLHQpfSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpbz0Kbih0LG4pe2Qz
LnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIsITApLHguZWxlbWVudE1vdXNlb3Zlcih7dmFs
dWU6YSh0LG4pPQoscG9pbnQ6dCxzZXJpZXM6ZVt0LnNlcmllc10scG9zOltpKHUodCxuKSkraS5y
YW5nZUJhbmQoKSooYz9lLmxlbmd0aC8yOnQuc2U9CnJpZXMrLjUpL2UubGVuZ3RoLHMoYSh0LG4p
KyhjP3QueTA6MCkpXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZT0KOmQzLmV2
ZW50fSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKHQsbil7ZDMuc2VsZWN0KHRoaXMpLmNsYXNz
ZWQoImhvdmVyIiwhPQoxKSx4LmVsZW1lbnRNb3VzZW91dCh7dmFsdWU6YSh0LG4pLHBvaW50OnQs
c2VyaWVzOmVbdC5zZXJpZXNdLHBvaW50SW5kZXg6biw9CnNlcmllc0luZGV4OnQuc2VyaWVzLGU6
ZDMuZXZlbnR9KX0pLm9uKCJjbGljayIsZnVuY3Rpb24odCxuKXt4LmVsZW1lbnRDbGljaz0KKHt2
YWx1ZTphKHQsbikscG9pbnQ6dCxzZXJpZXM6ZVt0LnNlcmllc10scG9zOltpKHUodCxuKSkraS5y
YW5nZUJhbmQoKSooYz9lPQoubGVuZ3RoLzI6dC5zZXJpZXMrLjUpL2UubGVuZ3RoLHMoYSh0LG4p
KyhjP3QueTA6MCkpXSxwb2ludEluZGV4Om4sc2VyaWVzSW49CmRleDp0LnNlcmllcyxlOmQzLmV2
ZW50fSksZDMuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiZGJsY2xpY2siLGZ1bmN0aT0K
b24odCxuKXt4LmVsZW1lbnREYmxDbGljayh7dmFsdWU6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmVb
dC5zZXJpZXNdLHBvczpbaSh1PQoodCxuKSkraS5yYW5nZUJhbmQoKSooYz9lLmxlbmd0aC8yOnQu
c2VyaWVzKy41KS9lLmxlbmd0aCxzKGEodCxuKSsoYz90LnkwOjA9CikpXSxwb2ludEluZGV4Om4s
c2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpkMy5ldmVudH0pLGQzLmV2ZW50LnN0b3BQcm9wYWdhdGlv
bj0KKCl9KSxILmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiBhKGUsdCk8MD8ibnYt
YmFyIG5lZ2F0aXZlIjoibnYtYmFyPQogcG9zaXRpdmUifSkuYXR0cigidHJhbnNmb3JtIixmdW5j
dGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitpKHUoZSx0KSkrIiw9CjApIn0pLHYmJihtfHwo
bT0zRGUubWFwKGZ1bmN0aW9uKCl7cmV0dXJuITB9KSksSC5zdHlsZSgiZmlsbCIsZnVuY3Rpb24o
ZSx0LD0Kbil7cmV0dXJuIGQzLnJnYih2KGUsdCkpLmRhcmtlcihtLm1hcChmdW5jdGlvbihlLHQp
e3JldHVybiB0fSkuZmlsdGVyKGZ1bmN0PQppb24oZSx0KXtyZXR1cm4hbVt0XX0pW25dKS50b1N0
cmluZygpfSkuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSx0LG4pe3JldHU9CnJuIGQzLnJnYih2
KGUsdCkpLmRhcmtlcihtLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiB0fSkuZmlsdGVyKGZ1bmN0
aW9uKGUsdD0KKXtyZXR1cm4hbVt0XX0pW25dKS50b1N0cmluZygpfSkpLGM/SC5hdHRyKCJ5Iixm
dW5jdGlvbihlLHQpe3JldHVybiBzKGM/ZS55PQoxOjApfSkuYXR0cigiaGVpZ2h0IixmdW5jdGlv
bihlLHQpe3JldHVybiBNYXRoLm1heChNYXRoLmFicyhzKGUueSsoYz9lLnkwOjA9CikpLXMoYz9l
LnkwOjApKSwxKX0pLmF0dHIoIngiLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGM/MDp0LnNlcmllcypp
LnJhbmdlQmFuZD0KKCkvZS5sZW5ndGh9KS5hdHRyKCJ3aWR0aCIsaS5yYW5nZUJhbmQoKS8oYz8x
OmUubGVuZ3RoKSk6SC5hdHRyKCJ4IixmdW5jdGlvPQpuKHQsbil7cmV0dXJuIHQuc2VyaWVzKmku
cmFuZ2VCYW5kKCkvZS5sZW5ndGh9KS5hdHRyKCJ3aWR0aCIsaS5yYW5nZUJhbmQoKS89CmUubGVu
Z3RoKS5hdHRyKCJ5IixmdW5jdGlvbihlLHQpe3JldHVybiBhKGUsdCk8MD9zKDApOnMoMCktcyhh
KGUsdCkpPDE/cygwKT0KLTE6cyhhKGUsdCkpfHwwfSkuYXR0cigiaGVpZ2h0IixmdW5jdGlvbihl
LHQpe3JldHVybiBNYXRoLm1heChNYXRoLmFicyhzKGEoPQplLHQpKS1zKDApKSwxKXx8MH0pLFQ9
M0RpLmNvcHkoKSxOPTNEcy5jb3B5KCl9KSxDfXZhciB0PTNEe3RvcDowLHJpZ2h0OjAsYm89CnR0
b206MCxsZWZ0OjB9LG49M0Q5NjAscj0zRDUwMCxpPTNEZDMuc2NhbGUub3JkaW5hbCgpLHM9M0Rk
My5zY2FsZS5saW5lYXIoKT0KLG89M0RNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMWU0KSx1PTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0sYT0zRGZ1bmN0aW9uPQooZSl7cmV0dXJuIGUueX0sZj0z
RFswXSxsPTNEITAsYz0zRCExLGg9M0QiemVybyIscD0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCk9
CixkPTNEITEsdj0zRG51bGwsbSxnPTNEMTIwMCx5LGIsdyxFLFM9M0QuMSx4PTNEZDMuZGlzcGF0
Y2goImNoYXJ0Q2xpY2siLCJlbD0KZW1lbnRDbGljayIsImVsZW1lbnREYmxDbGljayIsImVsZW1l
bnRNb3VzZW92ZXIiLCJlbGVtZW50TW91c2VvdXQiKSxULE47cmV0PQp1cm4gQy5kaXNwYXRjaD0z
RHgsQy5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKEMpLEMueD0zRGZ1bmN0aW9u
KGU9Cil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RlLEMpOnV9LEMueT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubD0KZW5ndGg/KGE9M0RlLEMpOmF9LEMubWFyZ2luPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPTNEPQp0eXBlb2YgZS50b3Ah
PTNEInVuZGVmaW5lZCI/ZS50b3A6dC50b3AsdC5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1
bmRlZmk9Cm5lZCI/ZS5yaWdodDp0LnJpZ2h0LHQuYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0z
RCJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYj0Kb3R0b20sdC5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9
M0QidW5kZWZpbmVkIj9lLmxlZnQ6dC5sZWZ0LEMpOnR9LEMud2lkdGg9M0RmPQp1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPTNEZSxDKTpufSxDLmhlaWdodD0zRGZ1bmN0aW9u
KGUpe3JldHU9CnJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLEMpOnJ9LEMueFNjYWxlPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZT0Kbmd0aD8oaT0zRGUsQyk6aX0sQy55U2NhbGU9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0zRGUsQyk6PQpzfSxDLnhE
b21haW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT0zRGUsQyk6eX0s
Qy55RG9tYWluPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0zRGUs
Qyk6Yn0sQy54UmFuZ2U9M0RmdW5jdGlvbihlKXs9CnJldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3
PTNEZSxDKTp3fSxDLnlSYW5nZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudD0Kcy5sZW5n
dGg/KEU9M0RlLEMpOkV9LEMuZm9yY2VZPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGY9M0RlPQosQyk6Zn0sQy5zdGFja2VkPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGM9M0RlLEMpOmN9LEMuc3RhY2s9Ck9mZnNldD0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxDKTpofSxDLmNsaXBFZGdlPTNEZnVuYz0KdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGUsQyk6bH0sQy5jb2xvcj0zRGZ1bmN0
aW9uKHQpe3JldHVybiBhPQpyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLnV0aWxzLmdldENvbG9yKHQp
LEMpOnB9LEMuYmFyQ29sb3I9M0RmdW5jdGlvbih0KXtyZXQ9CnVybiBhcmd1bWVudHMubGVuZ3Ro
Pyh2PTNEZS51dGlscy5nZXRDb2xvcih0KSxDKTp2fSxDLmRpc2FibGVkPTNEZnVuY3Rpb24oZT0K
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0zRGUsQyk6bX0sQy5pZD0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMuPQpsZW5ndGg/KG89M0RlLEMpOm99LEMuaGlkZWFibGU9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGU9CixDKTpkfSxDLmRlbGF5PTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9M0RlLEMpOmd9LEMuZ3JvdXBT
cD0KYWNpbmc9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUz0zRGUsQyk6
U30sQ30sZS5tb2RlbHMubXVsdGlCPQphckNoYXJ0PTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBBKGUp
e3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIGI9M0RkMy5zZWw9CmVjdCh0aGlzKSxrPTNE
dGhpcyxPPTNEKHV8fHBhcnNlSW50KGIuc3R5bGUoIndpZHRoIikpfHw5NjApLW8ubGVmdC1vLnJp
Z2h0LD0KTT0zRChhfHxwYXJzZUludChiLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktby50b3Atby5i
b3R0b207QS51cGRhdGU9M0RmdW5jdGlvPQpuKCl7Yi5jYWxsKEEpfSxBLmNvbnRhaW5lcj0zRHRo
aXMsUy5kaXNhYmxlZD0zRGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZS49CmRpc2FibGVkfSk7
aWYoIXgpe3ZhciBfO3g9M0R7fTtmb3IoXyBpbiBTKVNbX11pbnN0YW5jZW9mIEFycmF5P3hbX109
M0RTW19dLj0Kc2xpY2UoMCk6eFtfXT0zRFNbX119aWYoIWV8fCFlLmxlbmd0aHx8IWUuZmlsdGVy
KGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlPQpzLmxlbmd0aH0pLmxlbmd0aCl7dmFyIEQ9M0Ri
LnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW1RdKTtyZXR1cm4gRC5lbnQ9CmVyKCkuYXBw
ZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43
ZW0iKS5zdHlsZT0KKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLEQuYXR0cigieCIsby5sZWZ0K08v
MikuYXR0cigieSIsby50b3ArTS8yKS50ZXh0KGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGV9KSxBfWIu
c2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtb3ZlKCksdz0zRHQueFNjYWxlKCksRT0KPTNEdC55
U2NhbGUoKTt2YXIgUD0zRGIuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtbXVsdGlCYXJXaXRoTGVn
ZW5kIikuZGF0YShbPQplXSksSD0zRFAuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIs
Im52ZDMgbnYtd3JhcCBudi1tdWx0aUJhcldpdGhMZWc9CmVuZCIpLmFwcGVuZCgiZyIpLEI9M0RQ
LnNlbGVjdCgiZyIpO0guYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14IG52LWF4aT0KcyIp
LEguYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKSxILmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwiPQpudi1iYXJzV3JhcCIpLEguYXBwZW5kKCJnIikuYXR0cigiY2xhc3Mi
LCJudi1sZWdlbmRXcmFwIiksSC5hcHBlbmQoImciKS5hdHQ9CnIoImNsYXNzIiwibnYtY29udHJv
bHNXcmFwIiksYyYmKGkud2lkdGgoTy1DKCkpLHQuYmFyQ29sb3IoKSYmZS5mb3JFYWNoKGZ1bj0K
Y3Rpb24oZSx0KXtlLmNvbG9yPTNEZDMucmdiKCIjY2NjIikuZGFya2VyKHQqMS41KS50b1N0cmlu
ZygpfSksQi5zZWxlY3QoIi5uPQp2LWxlZ2VuZFdyYXAiKS5kYXR1bShlKS5jYWxsKGkpLG8udG9w
IT0zRGkuaGVpZ2h0KCkmJihvLnRvcD0zRGkuaGVpZ2h0KCksTT0KPTNEKGF8fHBhcnNlSW50KGIu
c3R5bGUoImhlaWdodCIpKXx8NDAwKS1vLnRvcC1vLmJvdHRvbSksQi5zZWxlY3QoIi5udi1sZWdl
PQpuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitDKCkrIiwiKyAtby50b3Ar
IikiKSk7aWYobCl7dmFyIGo9M0Q9Clt7a2V5OiJHcm91cGVkIixkaXNhYmxlZDp0LnN0YWNrZWQo
KX0se2tleToiU3RhY2tlZCIsZGlzYWJsZWQ6IXQuc3RhY2tlZCgpfT0KXTtzLndpZHRoKEMoKSku
Y29sb3IoWyIjNDQ0IiwiIzQ0NCIsIiM0NDQiXSksQi5zZWxlY3QoIi5udi1jb250cm9sc1dyYXAi
KS5kPQphdHVtKGopLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrIC1vLnRvcCsiKSIp
LmNhbGwocyl9UC5hdHRyKCJ0cmFuc2Y9Cm9ybSIsInRyYW5zbGF0ZSgiK28ubGVmdCsiLCIrby50
b3ArIikiKSxkJiZCLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmF0dHIoIj0KdHJhbnNmb3JtIiwi
dHJhbnNsYXRlKCIrTysiLDApIiksdC5kaXNhYmxlZChlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4g
ZS5kaXNhPQpibGVkfSkpLndpZHRoKE8pLmhlaWdodChNKS5jb2xvcihlLm1hcChmdW5jdGlvbihl
LHQpe3JldHVybiBlLmNvbG9yfHxmKGUsdCk9Cn0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVy
biFlW25dLmRpc2FibGVkfSkpO3ZhciBGPTNEQi5zZWxlY3QoIi5udi1iYXJzVz0KcmFwIikuZGF0
dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSk7Ri5jYWxsKHQpO2lm
KGgpe24uc2NhPQpsZSh3KS50aWNrcyhPLzEwMCkudGlja1NpemUoLU0sMCksQi5zZWxlY3QoIi5u
di14Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm09CiIsInRyYW5zbGF0ZSgwLCIrRS5yYW5nZSgp
WzBdKyIpIiksQi5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5jYWxsKG4pO3ZhciBJPQo9M0RCLnNl
bGVjdCgiLm52LXgubnYtYXhpcyA+IGciKS5zZWxlY3RBbGwoImciKTtJLnNlbGVjdEFsbCgibGlu
ZSwgdGV4dCIpLnM9CnR5bGUoIm9wYWNpdHkiLDEpO2lmKG0pe3ZhciBxPTNEZnVuY3Rpb24oZSx0
KXtyZXR1cm4idHJhbnNsYXRlKCIrZSsiLCIrdCsiKT0KIn0sUj0zRDUsVT0zRDE3O0kuc2VsZWN0
QWxsKCJ0ZXh0IikuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQsbil7cmV0dXJuPQogcSgw
LG4lMj0zRD0zRDA/UjpVKX0pO3ZhciB6PTNEZDMuc2VsZWN0QWxsKCIubnYteC5udi1heGlzIC5u
di13cmFwIGcgZyB0ZXg9CnQiKVswXS5sZW5ndGg7Qi5zZWxlY3RBbGwoIi5udi14Lm52LWF4aXMg
Lm52LWF4aXNNYXhNaW4gdGV4dCIpLmF0dHIoInRyYW5zZj0Kb3JtIixmdW5jdGlvbihlLHQpe3Jl
dHVybiBxKDAsdD0zRD0zRD0zRDB8fHolMiE9M0Q9M0QwP1U6Uil9KX12JiZJLmZpbHRlcihmPQp1
bmN0aW9uKHQsbil7cmV0dXJuIG4lTWF0aC5jZWlsKGVbMF0udmFsdWVzLmxlbmd0aC8oTy8xMDAp
KSE9M0Q9M0QwfSkuc2VsZWM9CnRBbGwoInRleHQsIGxpbmUiKS5zdHlsZSgib3BhY2l0eSIsMCks
ZyYmSS5zZWxlY3RBbGwoIi50aWNrIHRleHQiKS5hdHRyKCJ0cj0KYW5zZm9ybSIsInJvdGF0ZSgi
K2crIiAwLDApIikuc3R5bGUoInRleHQtYW5jaG9yIixnPjA/InN0YXJ0IjoiZW5kIiksQi5zZWxl
PQpjdCgiLm52LXgubnYtYXhpcyIpLnNlbGVjdEFsbCgiZy5udi1heGlzTWF4TWluIHRleHQiKS5z
dHlsZSgib3BhY2l0eSIsMSl9cCY9CiYoci5zY2FsZShFKS50aWNrcyhNLzM2KS50aWNrU2l6ZSgt
TywwKSxCLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmNhbGwocikpLD0KaS5kaXNwYXRjaC5vbigi
c3RhdGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe1M9M0RlLE4uc3RhdGVDaGFuZ2UoUyksQS51cGRhdGUo
KX0pPQoscy5kaXNwYXRjaC5vbigibGVnZW5kQ2xpY2siLGZ1bmN0aW9uKGUsbil7aWYoIWUuZGlz
YWJsZWQpcmV0dXJuO2o9M0RqLm1hcCg9CmZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVkPTNE
ITAsZX0pLGUuZGlzYWJsZWQ9M0QhMTtzd2l0Y2goZS5rZXkpe2Nhc2UiRz0Kcm91cGVkIjp0LnN0
YWNrZWQoITEpO2JyZWFrO2Nhc2UiU3RhY2tlZCI6dC5zdGFja2VkKCEwKX1TLnN0YWNrZWQ9M0R0
LnN0YWNrPQplZCgpLE4uc3RhdGVDaGFuZ2UoUyksQS51cGRhdGUoKX0pLE4ub24oInRvb2x0aXBT
aG93IixmdW5jdGlvbihlKXt5JiZMKGUsay49CnBhcmVudE5vZGUpfSksTi5vbigiY2hhbmdlU3Rh
dGUiLGZ1bmN0aW9uKG4pe3R5cGVvZiBuLmRpc2FibGVkIT0zRCJ1bmRlZmluZT0KZCImJihlLmZv
ckVhY2goZnVuY3Rpb24oZSx0KXtlLmRpc2FibGVkPTNEbi5kaXNhYmxlZFt0XX0pLFMuZGlzYWJs
ZWQ9M0RuLmRpPQpzYWJsZWQpLHR5cGVvZiBuLnN0YWNrZWQhPTNEInVuZGVmaW5lZCImJih0LnN0
YWNrZWQobi5zdGFja2VkKSxTLnN0YWNrZWQ9M0Q9Cm4uc3RhY2tlZCksQS51cGRhdGUoKX0pfSks
QX12YXIgdD0zRGUubW9kZWxzLm11bHRpQmFyKCksbj0zRGUubW9kZWxzLmF4aXMoKT0KLHI9M0Rl
Lm1vZGVscy5heGlzKCksaT0zRGUubW9kZWxzLmxlZ2VuZCgpLHM9M0RlLm1vZGVscy5sZWdlbmQo
KSxvPTNEe3RvcDozPQowLHJpZ2h0OjIwLGJvdHRvbTo1MCxsZWZ0OjYwfSx1PTNEbnVsbCxhPTNE
bnVsbCxmPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSw9Cmw9M0QhMCxjPTNEITAsaD0zRCEwLHA9
M0QhMCxkPTNEITEsdj0zRCEwLG09M0QhMSxnPTNEMCx5PTNEITAsYj0zRGZ1bmN0aW9uKD0KZSx0
LG4scixpKXtyZXR1cm4iPGgzPiIrZSsiPC9oMz4iKyI8cD4iK24rIiBvbiAiK3QrIjwvcD4ifSx3
LEUsUz0zRHtzdGFja2VkPQo6ITF9LHg9M0RudWxsLFQ9M0QiTm8gRGF0YSBBdmFpbGFibGUuIixO
PTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHQ9CmlwSGlkZSIsInN0YXRlQ2hhbmdl
IiwiY2hhbmdlU3RhdGUiKSxDPTNEZnVuY3Rpb24oKXtyZXR1cm4gbD8xODA6MH0saz0zRDA7dD0K
LnN0YWNrZWQoITEpLG4ub3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg3KS5oaWdobGlnaHRa
ZXJvKCEwKS5zaG93TWF4TWluPQooITEpLnRpY2tGb3JtYXQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9
KSxyLm9yaWVudChkPyJyaWdodCI6ImxlZnQiKS50aWNrRm9ybWE9CnQoZDMuZm9ybWF0KCIsLjFm
IikpLHMudXBkYXRlU3RhdGUoITEpO3ZhciBMPTNEZnVuY3Rpb24oaSxzKXt2YXIgbz0zRGkucG9z
Wz0KMF0rKHMub2Zmc2V0TGVmdHx8MCksdT0zRGkucG9zWzFdKyhzLm9mZnNldFRvcHx8MCksYT0z
RG4udGlja0Zvcm1hdCgpKHQueCgpPQooaS5wb2ludCxpLnBvaW50SW5kZXgpKSxmPTNEci50aWNr
Rm9ybWF0KCkodC55KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKSxsPQo9M0RiKGkuc2VyaWVzLmtl
eSxhLGYsaSxBKTtlLnRvb2x0aXAuc2hvdyhbbyx1XSxsLGkudmFsdWU8MD8ibiI6InMiLG51bGws
cyk9Cn07cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVu
Y3Rpb24oZSl7ZS5wb3M9M0RbZS5wbz0Kc1swXStvLmxlZnQsZS5wb3NbMV0rby50b3BdLE4udG9v
bHRpcFNob3coZSl9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvPQp1dC50b29sdGlwIixm
dW5jdGlvbihlKXtOLnRvb2x0aXBIaWRlKGUpfSksTi5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9u
KCl7eSY9CiZlLnRvb2x0aXAuY2xlYW51cCgpfSksQS5kaXNwYXRjaD0zRE4sQS5tdWx0aWJhcj0z
RHQsQS5sZWdlbmQ9M0RpLEEueEF4aXM9Cj0zRG4sQS55QXhpcz0zRHIsZDMucmViaW5kKEEsdCwi
eCIsInkiLCJ4RG9tYWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZT0KIiwiZm9yY2VYIiwi
Zm9yY2VZIiwiY2xpcEVkZ2UiLCJpZCIsInN0YWNrZWQiLCJzdGFja09mZnNldCIsImRlbGF5Iiwi
YmFyQ29sPQpvciIsImdyb3VwU3BhY2luZyIpLEEub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1
bmMuYmluZChBKSxBLm1hcmdpbj0zRGZ1bmM9CnRpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KG8udG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOj0Kby50b3Asby5y
aWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6by5yaWdodCxvLmJv
dHRvbT0zRHR5PQpwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOm8uYm90dG9t
LG8ubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInU9Cm5kZWZpbmVkIj9lLmxlZnQ6by5sZWZ0LEEp
Om99LEEud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD0KPyh1PTNE
ZSxBKTp1fSxBLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhh
PTNEZSxBKTphfSxBPQouY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oZj0zRGUudXRpbHMuZ2V0Q29sb3IodCksaS5jb2w9Cm9yKGYpLEEpOmZ9LEEuc2hvd0NvbnRy
b2xzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLEEpOj0KbH0s
QS5zaG93TGVnZW5kPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0Rl
LEEpOmN9LEEuc2hvd1hBPQp4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oaD0zRGUsQSk6aH0sQS5zaG93WUF4aXM9M0RmdW5jdGk9Cm9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhwPTNEZSxBKTpwfSxBLnJpZ2h0QWxpZ25ZQXhpcz0zRGZ1bmN0aW9uKGUpez0K
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9M0RlLHIub3JpZW50KGU/InJpZ2h0IjoibGVmdCIp
LEEpOmR9LEEucmVkdWNlWFRpPQpja3M9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8odj0zRGUsQSk6dn0sQS5yb3RhdGVMYWJlbHM9M0RmdW49CmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhnPTNEZSxBKTpnfSxBLnN0YWdnZXJMYWJlbHM9M0RmdW5jdGlvbihl
KT0Ke3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNEZSxBKTptfSxBLnRvb2x0aXA9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lPQpudHMubGVuZ3RoPyhiPTNEZSxBKTpifSxBLnRvb2x0aXBz
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9Cj0zRGUsQSk6eX0sQS50
b29sdGlwQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPTNE
ZSxBKT0KOmJ9LEEuc3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
Uz0zRGUsQSk6U30sQS5kZWZhdWx0U3RhPQp0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyh4PTNEZSxBKTp4fSxBLm5vRGF0YT0zRGZ1bmN0aW9uKGU9Cil7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KFQ9M0RlLEEpOlR9LEEudHJhbnNpdGlvbkR1cmF0aW9uPTNEZnVuY3Rp
b24oZSl7cj0KZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaz0zRGUsQSk6a30sQX0sZS5tb2RlbHMu
bXVsdGlCYXJIb3Jpem9udGFsPTNEZnVuY3RpPQpvbigpe2Z1bmN0aW9uIEMoZSl7cmV0dXJuIGUu
ZWFjaChmdW5jdGlvbihlKXt2YXIgaT0zRG4tdC5sZWZ0LXQucmlnaHQseT0zRHI9Ci10LnRvcC10
LmJvdHRvbSxDPTNEZDMuc2VsZWN0KHRoaXMpO3AmJihlPTNEZDMubGF5b3V0LnN0YWNrKCkub2Zm
c2V0KCJ6ZXJvIj0KKS52YWx1ZXMoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzfSkueShhKShl
KSksZS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7ZS52PQphbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKGUp
e2Uuc2VyaWVzPTNEdH0pfSkscCYmZVswXS52YWx1ZXMubWFwKGZ1bmN0aW9uKHQsbik9Cnt2YXIg
cj0zRDAsaT0zRDA7ZS5tYXAoZnVuY3Rpb24oZSl7dmFyIHQ9M0RlLnZhbHVlc1tuXTt0LnNpemU9
M0RNYXRoLmFicyh0Lj0KeSksdC55PDA/KHQueTE9M0RpLXQuc2l6ZSxpLT0zRHQuc2l6ZSk6KHQu
eTE9M0RyLHIrPTNEdC5zaXplKX0pfSk7dmFyIGs9M0RiPQomJnc/W106ZS5tYXAoZnVuY3Rpb24o
ZSl7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlvbihlLHQpe3JldHVybnt4OnUoZSx0KSw9Cnk6
YShlLHQpLHkwOmUueTAseTE6ZS55MX19KX0pO3MuZG9tYWluKGJ8fGQzLm1lcmdlKGspLm1hcChm
dW5jdGlvbihlKXtyZXR1cj0KbiBlLnh9KSkucmFuZ2VCYW5kcyhFfHxbMCx5XSwuMSksby5kb21h
aW4od3x8ZDMuZXh0ZW50KGQzLm1lcmdlKGspLm1hcChmdW5jPQp0aW9uKGUpe3JldHVybiBwP2Uu
eT4wP2UueTErZS55OmUueTE6ZS55fSkuY29uY2F0KGYpKSksZCYmIXA/by5yYW5nZShTfHxbby49
CmRvbWFpbigpWzBdPDA/bTowLGktKG8uZG9tYWluKClbMV0+MD9tOjApXSk6by5yYW5nZShTfHxb
MCxpXSksVD0zRFR8fHMsTj0zRD0KTnx8ZDMuc2NhbGUubGluZWFyKCkuZG9tYWluKG8uZG9tYWlu
KCkpLnJhbmdlKFtvKDApLG8oMCldKTt2YXIgTD0zRGQzLnNlbGVjPQp0KHRoaXMpLnNlbGVjdEFs
bCgiZy5udi13cmFwLm52LW11bHRpYmFySG9yaXpvbnRhbCIpLmRhdGEoW2VdKSxBPTNETC5lbnRl
cig9CikuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbXVsdGliYXJI
b3Jpem9udGFsIiksTz0zREEuYXBwZT0KbmQoImRlZnMiKSxNPTNEQS5hcHBlbmQoImciKSxfPTNE
TC5zZWxlY3QoImciKTtNLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiPQpudi1ncm91cHMiKSxM
LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50b3ArIikiKTt2YXIg
RD0zREw9Ci5zZWxlY3QoIi5udi1ncm91cHMiKS5zZWxlY3RBbGwoIi5udi1ncm91cCIpLmRhdGEo
ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGZ1bj0KY3Rpb24oZSx0KXtyZXR1cm4gdH0pO0QuZW50ZXIo
KS5hcHBlbmQoImciKS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDFlLTYpLnN0PQp5bGUoImZpbGwt
b3BhY2l0eSIsMWUtNiksRC5leGl0KCkuc3R5bGUoInN0cm9rZS1vcGFjaXR5IiwxZS02KS5zdHls
ZSgiZmlsbC09Cm9wYWNpdHkiLDFlLTYpLnJlbW92ZSgpLEQuYXR0cigiY2xhc3MiLGZ1bmN0aW9u
KGUsdCl7cmV0dXJuIm52LWdyb3VwIG52LXNlcj0KaWVzLSIrdH0pLmNsYXNzZWQoImhvdmVyIixm
dW5jdGlvbihlKXtyZXR1cm4gZS5ob3Zlcn0pLnN0eWxlKCJmaWxsIixmdW5jdGlvPQpuKGUsdCl7
cmV0dXJuIGwoZSx0KX0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGwoZSx0
KX0pLEQuc3R5bGU9Cigic3Ryb2tlLW9wYWNpdHkiLDEpLnN0eWxlKCJmaWxsLW9wYWNpdHkiLC43
NSk7dmFyIFA9M0RELnNlbGVjdEFsbCgiZy5udi1iYT0KciIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0
dXJuIGUudmFsdWVzfSk7UC5leGl0KCkucmVtb3ZlKCk7dmFyIEg9M0RQLmVudGVyKCkuPQphcHBl
bmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4idHJhbnNsYXRl
KCIrTihwP3QueTA6MCk9CisiLCIrKHA/MDpyKnMucmFuZ2VCYW5kKCkvZS5sZW5ndGgrcyh1KHQs
bikpKSsiKSJ9KTtILmFwcGVuZCgicmVjdCIpLmF0dHIoIj0Kd2lkdGgiLDApLmF0dHIoImhlaWdo
dCIscy5yYW5nZUJhbmQoKS8ocD8xOmUubGVuZ3RoKSksUC5vbigibW91c2VvdmVyIixmdW5jPQp0
aW9uKHQsbil7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMCkseC5lbGVtZW50TW91
c2VvdmVyKHt2YWx1ZTphKHQ9CixuKSxwb2ludDp0LHNlcmllczplW3Quc2VyaWVzXSxwb3M6W28o
YSh0LG4pKyhwP3QueTA6MCkpLHModSh0LG4pKStzLnJhbmdlQj0KYW5kKCkqKHA/ZS5sZW5ndGgv
Mjp0LnNlcmllcysuNSkvZS5sZW5ndGhdLHBvaW50SW5kZXg6bixzZXJpZXNJbmRleDp0LnNlcmll
PQpzLGU6ZDMuZXZlbnR9KX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24odCxuKXtkMy5zZWxlY3Qo
dGhpcykuY2xhc3NlZCgiaG92ZXI9CiIsITEpLHguZWxlbWVudE1vdXNlb3V0KHt2YWx1ZTphKHQs
bikscG9pbnQ6dCxzZXJpZXM6ZVt0LnNlcmllc10scG9pbnRJbmRleD0KOm4sc2VyaWVzSW5kZXg6
dC5zZXJpZXMsZTpkMy5ldmVudH0pfSkub24oImNsaWNrIixmdW5jdGlvbih0LG4pe3guZWxlbWVu
dENsPQppY2soe3ZhbHVlOmEodCxuKSxwb2ludDp0LHNlcmllczplW3Quc2VyaWVzXSxwb3M6W3Mo
dSh0LG4pKStzLnJhbmdlQmFuZCgpKig9CnA/ZS5sZW5ndGgvMjp0LnNlcmllcysuNSkvZS5sZW5n
dGgsbyhhKHQsbikrKHA/dC55MDowKSldLHBvaW50SW5kZXg6bixzZXJpZT0Kc0luZGV4OnQuc2Vy
aWVzLGU6ZDMuZXZlbnR9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0pLm9uKCJkYmxjbGlj
ayIsZnVuPQpjdGlvbih0LG4pe3guZWxlbWVudERibENsaWNrKHt2YWx1ZTphKHQsbikscG9pbnQ6
dCxzZXJpZXM6ZVt0LnNlcmllc10scG9zOls9CnModSh0LG4pKStzLnJhbmdlQmFuZCgpKihwP2Uu
bGVuZ3RoLzI6dC5zZXJpZXMrLjUpL2UubGVuZ3RoLG8oYSh0LG4pKyhwP3QueT0KMDowKSldLHBv
aW50SW5kZXg6bixzZXJpZXNJbmRleDp0LnNlcmllcyxlOmQzLmV2ZW50fSksZDMuZXZlbnQuc3Rv
cFByb3BhZ2F0PQppb24oKX0pLEguYXBwZW5kKCJ0ZXh0IiksZCYmIXA/KFAuc2VsZWN0KCJ0ZXh0
IikuYXR0cigidGV4dC1hbmNob3IiLGZ1bmN0aW89Cm4oZSx0KXtyZXR1cm4gYShlLHQpPDA/ImVu
ZCI6InN0YXJ0In0pLmF0dHIoInkiLHMucmFuZ2VCYW5kKCkvKGUubGVuZ3RoKjIpKT0KLmF0dHIo
ImR5IiwiLjMyZW0iKS50ZXh0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGcoYShlLHQpKX0pLFAuc2Vs
ZWN0KCJ0ZXh0IikuPQphdHRyKCJ4IixmdW5jdGlvbihlLHQpe3JldHVybiBhKGUsdCk8MD8tNDpv
KGEoZSx0KSktbygwKSs0fSkpOlAuc2VsZWN0QWxsKCI9CnRleHQiKS50ZXh0KCIiKSx2JiYhcD8o
SC5hcHBlbmQoInRleHQiKS5jbGFzc2VkKCJudi1iYXItbGFiZWwiLCEwKSxQLnNlbGVjdD0KKCJ0
ZXh0Lm52LWJhci1sYWJlbCIpLmF0dHIoInRleHQtYW5jaG9yIixmdW5jdGlvbihlLHQpe3JldHVy
biBhKGUsdCk8MD8ic3RhPQpydCI6ImVuZCJ9KS5hdHRyKCJ5IixzLnJhbmdlQmFuZCgpLyhlLmxl
bmd0aCoyKSkuYXR0cigiZHkiLCIuMzJlbSIpLnRleHQoZnU9Cm5jdGlvbihlLHQpe3JldHVybiB1
KGUsdCl9KSxQLnNlbGVjdCgidGV4dC5udi1iYXItbGFiZWwiKS5hdHRyKCJ4IixmdW5jdGlvbj0K
KGUsdCl7cmV0dXJuIGEoZSx0KTwwP28oMCktbyhhKGUsdCkpKzQ6LTR9KSk6UC5zZWxlY3RBbGwo
InRleHQubnYtYmFyLWxhYmVsPQoiKS50ZXh0KCIiKSxQLmF0dHIoImNsYXNzIixmdW5jdGlvbihl
LHQpe3JldHVybiBhKGUsdCk8MD8ibnYtYmFyIG5lZ2F0aXZlIjo9CiJudi1iYXIgcG9zaXRpdmUi
fSksYyYmKGh8fChoPTNEZS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4hMH0pKSxQLnN0eWxlKCJmaWxs
Ij0KLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZDMucmdiKGMoZSx0KSkuZGFya2VyKGgubWFwKGZ1
bmN0aW9uKGUsdCl7cmV0dXJuIHR9PQopLmZpbHRlcihmdW5jdGlvbihlLHQpe3JldHVybiFoW3Rd
fSlbbl0pLnRvU3RyaW5nKCl9KS5zdHlsZSgic3Ryb2tlIixmdW5jdGk9Cm9uKGUsdCxuKXtyZXR1
cm4gZDMucmdiKGMoZSx0KSkuZGFya2VyKGgubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR9KS5m
aWx0ZT0KcihmdW5jdGlvbihlLHQpe3JldHVybiFoW3RdfSlbbl0pLnRvU3RyaW5nKCl9KSkscD9Q
LmF0dHIoInRyYW5zZm9ybSIsZnVuY3RpPQpvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitvKGUu
eTEpKyIsIitzKHUoZSx0KSkrIikifSkuc2VsZWN0KCJyZWN0IikuYXR0cig9CiJ3aWR0aCIsZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5hYnMobyhhKGUsdCkrZS55MCktbyhlLnkwKSl9KS5hdHRy
KCJoZWlnaD0KdCIscy5yYW5nZUJhbmQoKSk6UC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKHQs
bil7cmV0dXJuInRyYW5zbGF0ZSgiKyhhKHQsPQpuKTwwP28oYSh0LG4pKTpvKDApKSsiLCIrKHQu
c2VyaWVzKnMucmFuZ2VCYW5kKCkvZS5sZW5ndGgrcyh1KHQsbikpKSsiKSJ9KS49CnNlbGVjdCgi
cmVjdCIpLmF0dHIoImhlaWdodCIscy5yYW5nZUJhbmQoKS9lLmxlbmd0aCkuYXR0cigid2lkdGgi
LGZ1bmN0aW9uKD0KZSx0KXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5hYnMobyhhKGUsdCkpLW8oMCkp
LDEpfSksVD0zRHMuY29weSgpLE49M0RvLmNvcHkoPQopfSksQ312YXIgdD0zRHt0b3A6MCxyaWdo
dDowLGJvdHRvbTowLGxlZnQ6MH0sbj0zRDk2MCxyPTNENTAwLGk9M0RNYXRoLmZsb289CnIoTWF0
aC5yYW5kb20oKSoxZTQpLHM9M0RkMy5zY2FsZS5vcmRpbmFsKCksbz0zRGQzLnNjYWxlLmxpbmVh
cigpLHU9M0RmdW5jdD0KaW9uKGUpe3JldHVybiBlLnh9LGE9M0RmdW5jdGlvbihlKXtyZXR1cm4g
ZS55fSxmPTNEWzBdLGw9M0RlLnV0aWxzLmRlZmF1bHRDPQpvbG9yKCksYz0zRG51bGwsaCxwPTNE
ITEsZD0zRCExLHY9M0QhMSxtPTNENjAsZz0zRGQzLmZvcm1hdCgiLC4yZiIpLHk9M0QxMjA9CjAs
Yix3LEUsUyx4PTNEZDMuZGlzcGF0Y2goImNoYXJ0Q2xpY2siLCJlbGVtZW50Q2xpY2siLCJlbGVt
ZW50RGJsQ2xpY2siLCJlbD0KZW1lbnRNb3VzZW92ZXIiLCJlbGVtZW50TW91c2VvdXQiKSxULE47
cmV0dXJuIEMuZGlzcGF0Y2g9M0R4LEMub3B0aW9ucz0zRGUuPQp1dGlscy5vcHRpb25zRnVuYy5i
aW5kKEMpLEMueD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZSw9
CkMpOnV9LEMueT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZSxD
KTphfSxDLm1hcmdpbj0zRGZ1bj0KY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQu
dG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wPQo6dC50b3AsdC5yaWdodD0z
RHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT0z
RHQ9CnlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVm
dD0zRHR5cGVvZiBlLmxlZnQhPTNEIj0KdW5kZWZpbmVkIj9lLmxlZnQ6dC5sZWZ0LEMpOnR9LEMu
d2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0PQpoPyhuPTNEZSxDKTpu
fSxDLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZSxD
KTpyfSw9CkMueFNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9
M0RlLEMpOnN9LEMueVNjYWxlPTNEZnVuYz0KdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8obz0zRGUsQyk6b30sQy54RG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuPQogYXJndW1lbnRz
Lmxlbmd0aD8oYj0zRGUsQyk6Yn0sQy55RG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW49Cmd0aD8odz0zRGUsQyk6d30sQy54UmFuZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oRT0zRGUsQyk6RT0KfSxDLnlSYW5nZT0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPTNEZSxDKTpTfSxDLmZvcmNlWT0zRGZ1PQpuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLEMpOmZ9LEMuc3RhY2tlZD0zRGZ1bmN0
aW9uKGUpe3JldHU9CnJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLEMpOnB9LEMuY29sb3I9M0Rm
dW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbj0KZ3RoPyhsPTNEZS51dGlscy5nZXRDb2xv
cih0KSxDKTpsfSxDLmJhckNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50PQpzLmxl
bmd0aD8oYz0zRGUudXRpbHMuZ2V0Q29sb3IodCksQyk6Y30sQy5kaXNhYmxlZD0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmc9CnVtZW50cy5sZW5ndGg/KGg9M0RlLEMpOmh9LEMuaWQ9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRD0KZSxDKTppfSxDLmRlbGF5PTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9M0RlLEMpOnl9LEMuc2hvd1ZhPQps
dWVzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9M0RlLEMpOmR9LEMu
c2hvd0JhckxhYmVscz0zRGY9CnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9
M0RlLEMpOnZ9LEMudmFsdWVGb3JtYXQ9M0RmdW5jdGlvbihlKT0Ke3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhnPTNEZSxDKTpnfSxDLnZhbHVlUGFkZGluZz0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
PQpyZ3VtZW50cy5sZW5ndGg/KG09M0RlLEMpOm19LEN9LGUubW9kZWxzLm11bHRpQmFySG9yaXpv
bnRhbENoYXJ0PTNEZnVuY3Rpb249Cigpe2Z1bmN0aW9uIEMoZSl7cmV0dXJuIGUuZWFjaChmdW5j
dGlvbihlKXt2YXIgZD0zRGQzLnNlbGVjdCh0aGlzKSxtPTNEdGhpcz0KLFQ9M0QodXx8cGFyc2VJ
bnQoZC5zdHlsZSgid2lkdGgiKSl8fDk2MCktby5sZWZ0LW8ucmlnaHQsaz0zRChhfHxwYXJzZUlu
dChkPQouc3R5bGUoImhlaWdodCIpKXx8NDAwKS1vLnRvcC1vLmJvdHRvbTtDLnVwZGF0ZT0zRGZ1
bmN0aW9uKCl7ZC5jYWxsKEMpfSxDLmM9Cm9udGFpbmVyPTNEdGhpcyxiLmRpc2FibGVkPTNEZS5t
YXAoZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSk7aWYoIXcpez0KdmFyIEw7dz0zRHt9
O2ZvcihMIGluIGIpYltMXWluc3RhbmNlb2YgQXJyYXk/d1tMXT0zRGJbTF0uc2xpY2UoMCk6d1tM
XT0zRGJbPQpMXX1pZighZXx8IWUubGVuZ3RofHwhZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJu
IGUudmFsdWVzLmxlbmd0aH0pLmxlbmd0aCk9Cnt2YXIgQT0zRGQuc2VsZWN0QWxsKCIubnYtbm9E
YXRhIikuZGF0YShbRV0pO3JldHVybiBBLmVudGVyKCkuYXBwZW5kKCJ0ZXh0Ij0KKS5hdHRyKCJj
bGFzcyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFu
Y2hvciIsIm1pPQpkZGxlIiksQS5hdHRyKCJ4IixvLmxlZnQrVC8yKS5hdHRyKCJ5IixvLnRvcCtr
LzIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGU9Cn0pLEN9ZC5zZWxlY3RBbGwoIi5udi1ub0Rh
dGEiKS5yZW1vdmUoKSxnPTNEdC54U2NhbGUoKSx5PTNEdC55U2NhbGUoKTt2YXIgTz0KPTNEZC5z
ZWxlY3RBbGwoImcubnYtd3JhcC5udi1tdWx0aUJhckhvcml6b250YWxDaGFydCIpLmRhdGEoW2Vd
KSxNPTNETy5lbnRlPQpyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAg
bnYtbXVsdGlCYXJIb3Jpem9udGFsQ2hhcnQiKS5hcHA9CmVuZCgiZyIpLF89M0RPLnNlbGVjdCgi
ZyIpO00uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14IG52LWF4aXMiKSxNLmFwcD0KZW5k
KCJnIikuYXR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKS5hcHBlbmQoImciKS5hdHRyKCJjbGFz
cyIsIm52LXplcm9MaW5lPQoiKS5hcHBlbmQoImxpbmUiKSxNLmFwcGVuZCgiZyIpLmF0dHIoImNs
YXNzIiwibnYtYmFyc1dyYXAiKSxNLmFwcGVuZCgiZyIpLmE9CnR0cigiY2xhc3MiLCJudi1sZWdl
bmRXcmFwIiksTS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWNvbnRyb2xzV3JhcCIpLD0K
YyYmKGkud2lkdGgoVC14KCkpLHQuYmFyQ29sb3IoKSYmZS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7
ZS5jb2xvcj0zRGQzLnJnYigiPQojY2NjIikuZGFya2VyKHQqMS41KS50b1N0cmluZygpfSksXy5z
ZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuZGF0dW0oZSkuY2FsbCg9CmkpLG8udG9wIT0zRGkuaGVp
Z2h0KCkmJihvLnRvcD0zRGkuaGVpZ2h0KCksaz0zRChhfHxwYXJzZUludChkLnN0eWxlKCJoZWln
aD0KdCIpKXx8NDAwKS1vLnRvcC1vLmJvdHRvbSksXy5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIiku
YXR0cigidHJhbnNmb3JtIiwidHJhPQpuc2xhdGUoIit4KCkrIiwiKyAtby50b3ArIikiKSk7aWYo
bCl7dmFyIEQ9M0Rbe2tleToiR3JvdXBlZCIsZGlzYWJsZWQ6dC5zdGE9CmNrZWQoKX0se2tleToi
U3RhY2tlZCIsZGlzYWJsZWQ6IXQuc3RhY2tlZCgpfV07cy53aWR0aCh4KCkpLmNvbG9yKFsiIzQ0
NCIsIj0KIzQ0NCIsIiM0NDQiXSksXy5zZWxlY3QoIi5udi1jb250cm9sc1dyYXAiKS5kYXR1bShE
KS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuPQpzbGF0ZSgwLCIrIC1vLnRvcCsiKSIpLmNhbGwocyl9
Ty5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitvLmxlZnQrIiwiK289Ci50b3ArIikiKSx0
LmRpc2FibGVkKGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVkfSkpLndpZHRoKFQp
LmhlaWdodD0KKGspLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGYo
ZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pPQp7cmV0dXJuIWVbbl0uZGlzYWJsZWR9KSk7dmFy
IFA9M0RfLnNlbGVjdCgiLm52LWJhcnNXcmFwIikuZGF0dW0oZS5maWx0ZXIoZnU9Cm5jdGlvbihl
KXtyZXR1cm4hZS5kaXNhYmxlZH0pKTtQLmNhbGwodCk7aWYoaCl7bi5zY2FsZShnKS50aWNrcyhr
LzI0KS50aWNrUz0KaXplKC1ULDApLF8uc2VsZWN0KCIubnYteC5udi1heGlzIikuY2FsbChuKTt2
YXIgSD0zRF8uc2VsZWN0KCIubnYteC5udi1heGlzPQoiKS5zZWxlY3RBbGwoImciKTtILnNlbGVj
dEFsbCgibGluZSwgdGV4dCIpfXAmJihyLnNjYWxlKHkpLnRpY2tzKFQvMTAwKS50aWM9CmtTaXpl
KC1rLDApLF8uc2VsZWN0KCIubnYteS5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNs
YXRlKDAsIitrKyIpIj0KKSxfLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmNhbGwocikpLF8uc2Vs
ZWN0KCIubnYtemVyb0xpbmUgbGluZSIpLmF0dHIoIngxPQoiLHkoMCkpLmF0dHIoIngyIix5KDAp
KS5hdHRyKCJ5MSIsMCkuYXR0cigieTIiLC1rKSxpLmRpc3BhdGNoLm9uKCJzdGF0ZUNoYW49Cmdl
IixmdW5jdGlvbihlKXtiPTNEZSxTLnN0YXRlQ2hhbmdlKGIpLEMudXBkYXRlKCl9KSxzLmRpc3Bh
dGNoLm9uKCJsZWdlbmRDbD0KaWNrIixmdW5jdGlvbihlLG4pe2lmKCFlLmRpc2FibGVkKXJldHVy
bjtEPTNERC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzPQphYmxlZD0zRCEwLGV9KSxlLmRp
c2FibGVkPTNEITE7c3dpdGNoKGUua2V5KXtjYXNlIkdyb3VwZWQiOnQuc3RhY2tlZCghMSk7YnI9
CmVhaztjYXNlIlN0YWNrZWQiOnQuc3RhY2tlZCghMCl9Yi5zdGFja2VkPTNEdC5zdGFja2VkKCks
Uy5zdGF0ZUNoYW5nZShiKSxDLj0KdXBkYXRlKCl9KSxTLm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rp
b24oZSl7diYmTihlLG0ucGFyZW50Tm9kZSl9KSxTLm9uKCJjaGFuPQpnZVN0YXRlIixmdW5jdGlv
bihuKXt0eXBlb2Ygbi5kaXNhYmxlZCE9M0QidW5kZWZpbmVkIiYmKGUuZm9yRWFjaChmdW5jdGlv
big9CmUsdCl7ZS5kaXNhYmxlZD0zRG4uZGlzYWJsZWRbdF19KSxiLmRpc2FibGVkPTNEbi5kaXNh
YmxlZCksdHlwZW9mIG4uc3RhY2tlZD0KIT0zRCJ1bmRlZmluZWQiJiYodC5zdGFja2VkKG4uc3Rh
Y2tlZCksYi5zdGFja2VkPTNEbi5zdGFja2VkKSxDLnVwZGF0ZSgpfSl9PQopLEN9dmFyIHQ9M0Rl
Lm1vZGVscy5tdWx0aUJhckhvcml6b250YWwoKSxuPTNEZS5tb2RlbHMuYXhpcygpLHI9M0RlLm1v
ZGVscy49CmF4aXMoKSxpPTNEZS5tb2RlbHMubGVnZW5kKCkuaGVpZ2h0KDMwKSxzPTNEZS5tb2Rl
bHMubGVnZW5kKCkuaGVpZ2h0KDMwKSxvPQo9M0R7dG9wOjMwLHJpZ2h0OjIwLGJvdHRvbTo1MCxs
ZWZ0OjYwfSx1PTNEbnVsbCxhPTNEbnVsbCxmPTNEZS51dGlscy5kZWZhdWw9CnRDb2xvcigpLGw9
M0QhMCxjPTNEITAsaD0zRCEwLHA9M0QhMCxkPTNEITEsdj0zRCEwLG09M0RmdW5jdGlvbihlLHQs
bixyLGkpez0KcmV0dXJuIjxoMz4iK2UrIiAtICIrdCsiPC9oMz4iKyI8cD4iK24rIjwvcD4ifSxn
LHksYj0zRHtzdGFja2VkOmR9LHc9M0RudWxsPQosRT0zRCJObyBEYXRhIEF2YWlsYWJsZS4iLFM9
M0RkMy5kaXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlkZSIsInN0YXQ9CmVDaGFuZ2Ui
LCJjaGFuZ2VTdGF0ZSIpLHg9M0RmdW5jdGlvbigpe3JldHVybiBsPzE4MDowfSxUPTNEMDt0LnN0
YWNrZWQoZCksbj0KLm9yaWVudCgibGVmdCIpLnRpY2tQYWRkaW5nKDUpLmhpZ2hsaWdodFplcm8o
ITEpLnNob3dNYXhNaW4oITEpLnRpY2tGb3JtYXQoPQpmdW5jdGlvbihlKXtyZXR1cm4gZX0pLHIu
b3JpZW50KCJib3R0b20iKS50aWNrRm9ybWF0KGQzLmZvcm1hdCgiLC4xZiIpKSxzLnU9CnBkYXRl
U3RhdGUoITEpO3ZhciBOPTNEZnVuY3Rpb24oaSxzKXt2YXIgbz0zRGkucG9zWzBdKyhzLm9mZnNl
dExlZnR8fDApLHU9Cj0zRGkucG9zWzFdKyhzLm9mZnNldFRvcHx8MCksYT0zRG4udGlja0Zvcm1h
dCgpKHQueCgpKGkucG9pbnQsaS5wb2ludEluZGV4KT0KKSxmPTNEci50aWNrRm9ybWF0KCkodC55
KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKSxsPTNEbShpLnNlcmllcy5rZXksYSxmLGksPQpDKTtl
LnRvb2x0aXAuc2hvdyhbbyx1XSxsLGkudmFsdWU8MD8iZSI6InciLG51bGwscyl9O3JldHVybiB0
LmRpc3BhdGNoLm9uKCI9CmVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5w
b3M9M0RbZS5wb3NbMF0rby5sZWZ0LGUucG9zWzFdK28udD0Kb3BdLFMudG9vbHRpcFNob3coZSl9
KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7PQpT
LnRvb2x0aXBIaWRlKGUpfSksUy5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7diYmZS50b29s
dGlwLmNsZWFudXAoKX0pLEM9Ci5kaXNwYXRjaD0zRFMsQy5tdWx0aWJhcj0zRHQsQy5sZWdlbmQ9
M0RpLEMueEF4aXM9M0RuLEMueUF4aXM9M0RyLGQzLnJlYmluZD0KKEMsdCwieCIsInkiLCJ4RG9t
YWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsImZvcmNlWCIsImZvcmNlWSIsImNsaXBF
PQpkZ2UiLCJpZCIsImRlbGF5Iiwic2hvd1ZhbHVlcyIsInNob3dCYXJMYWJlbHMiLCJ2YWx1ZUZv
cm1hdCIsInN0YWNrZWQiLCJiYXI9CkNvbG9yIiksQy5vcHRpb25zPTNEZS51dGlscy5vcHRpb25z
RnVuYy5iaW5kKEMpLEMubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dT0Kcm4gYXJndW1lbnRzLmxl
bmd0aD8oby50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6by50b3Asby5y
aWdoPQp0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDpvLnJpZ2h0LG8u
Ym90dG9tPTNEdHlwZW9mIGUuYm90dG89Cm0hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206by5ib3R0
b20sby5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLj0KbGVmdDpvLmxlZnQs
Qyk6b30sQy53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNE
ZSxDKTp1PQp9LEMuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGE9M0RlLEMpOmF9LEMuY29sb3I9M0RmdW49CmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhmPTNEZS51dGlscy5nZXRDb2xvcih0KSxpLmNvbG9yKGYpLEMpOmZ9LD0KQy5zaG93Q29u
dHJvbHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGUsQyk6bH0s
Qy5zaG93TGVnPQplbmQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0z
RGUsQyk6Y30sQy5zaG93WEF4aXM9M0RmdW5jdGk9Cm9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhoPTNEZSxDKTpofSxDLnNob3dZQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybj0KIGFyZ3Vt
ZW50cy5sZW5ndGg/KHA9M0RlLEMpOnB9LEMudG9vbHRpcD0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuPQpndGg/KG09M0RlLEMpOm19LEMudG9vbHRpcHM9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj0zRGUsQyk9Cjp2fSxDLnRvb2x0aXBDb250ZW50PTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09M0RlLEMpOm19LEMucz0KdGF0
ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPTNEZSxDKTpifSxDLmRl
ZmF1bHRTdGF0ZT0zRGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9M0Rl
LEMpOnd9LEMubm9EYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXI9Cm4gYXJndW1lbnRzLmxlbmd0aD8o
RT0zRGUsQyk6RX0sQy50cmFuc2l0aW9uRHVyYXRpb249M0RmdW5jdGlvbihlKXtyZXR1cm4gYT0K
cmd1bWVudHMubGVuZ3RoPyhUPTNEZSxDKTpUfSxDfSxlLm1vZGVscy5tdWx0aUNoYXJ0PTNEZnVu
Y3Rpb24oKXtmdW5jdGlvbiBDPQooZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXt2YXIgdT0z
RGQzLnNlbGVjdCh0aGlzKSxmPTNEdGhpcztDLnVwZGF0ZT0zRGY9CnVuY3Rpb24oKXt1LmNhbGwo
Qyl9LEMuY29udGFpbmVyPTNEdGhpczt2YXIgaz0zRChyfHxwYXJzZUludCh1LnN0eWxlKCJ3aWR0
aD0KIikpfHw5NjApLXQubGVmdC10LnJpZ2h0LEw9M0QoaXx8cGFyc2VJbnQodS5zdHlsZSgiaGVp
Z2h0IikpfHw0MDApLXQudG9wLXQuPQpib3R0b20sQT0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3Jl
dHVybiFlLmRpc2FibGVkJiZlLnR5cGU9M0Q9M0QibGluZSImJmUueUE9Cnhpcz0zRD0zRDF9KSxP
PTNEZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQmJmUudHlwZT0zRD0zRCJs
aW5lIj0KJiZlLnlBeGlzPTNEPTNEMn0pLE09M0RlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4h
ZS5kaXNhYmxlZCYmZS50eXBlPTNEPTNEPQoiYmFyIiYmZS55QXhpcz0zRD0zRDF9KSxfPTNEZS5m
aWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQmJmUudHlwZT0KPTNEPTNEImJhciIm
JmUueUF4aXM9M0Q9M0QyfSksRD0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2Fi
bGVkJiZlPQoudHlwZT0zRD0zRCJhcmVhIiYmZS55QXhpcz0zRD0zRDF9KSxQPTNEZS5maWx0ZXIo
ZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWI9CmxlZCYmZS50eXBlPTNEPTNEImFyZWEiJiZlLnlB
eGlzPTNEPTNEMn0pLEg9M0RlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZT0KLmRpc2FibGVk
JiZlLnlBeGlzPTNEPTNEMX0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubWFwKGZ1
bmN0aW9uKGUsPQp0KXtyZXR1cm57eDplLngseTplLnl9fSl9KSxCPTNEZS5maWx0ZXIoZnVuY3Rp
b24oZSl7cmV0dXJuIWUuZGlzYWJsZWQmJmUueUE9Cnhpcz0zRD0zRDJ9KS5tYXAoZnVuY3Rpb24o
ZSl7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlvbihlLHQpe3JldHVybnt4OmUueD0KLHk6ZS55
fX0pfSk7YS5kb21haW4oZDMuZXh0ZW50KGQzLm1lcmdlKEguY29uY2F0KEIpKSxmdW5jdGlvbihl
KXtyZXR1cm4gZS54PQp9KSkucmFuZ2UoWzAsa10pO3ZhciBqPTNEdS5zZWxlY3RBbGwoImcud3Jh
cC5tdWx0aUNoYXJ0IikuZGF0YShbZV0pLEY9M0RqLmU9Cm50ZXIoKS5hcHBlbmQoImciKS5hdHRy
KCJjbGFzcyIsIndyYXAgbnZkMyBtdWx0aUNoYXJ0IikuYXBwZW5kKCJnIik7Ri5hcHBlbj0KZCgi
ZyIpLmF0dHIoImNsYXNzIiwieCBheGlzIiksRi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInkx
IGF4aXMiKSxGLmFwcGVuPQpkKCJnIikuYXR0cigiY2xhc3MiLCJ5MiBheGlzIiksRi5hcHBlbmQo
ImciKS5hdHRyKCJjbGFzcyIsImxpbmVzMVdyYXAiKSxGLmE9CnBwZW5kKCJnIikuYXR0cigiY2xh
c3MiLCJsaW5lczJXcmFwIiksRi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImJhcnMxV3JhcD0K
IiksRi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImJhcnMyV3JhcCIpLEYuYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJzdGFjPQprMVdyYXAiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwi
c3RhY2syV3JhcCIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3M9CiIsImxlZ2VuZFdyYXAiKTt2
YXIgST0zRGouc2VsZWN0KCJnIik7cyYmKHgud2lkdGgoay8yKSxJLnNlbGVjdCgiLmxlZ2VuZFdy
YT0KcCIpLmRhdHVtKGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLm9yaWdpbmFsS2V5PTNEZS5v
cmlnaW5hbEtleT0zRD0zRD0zRHVuPQpkZWZpbmVkP2Uua2V5OmUub3JpZ2luYWxLZXksZS5rZXk9
M0RlLm9yaWdpbmFsS2V5KyhlLnlBeGlzPTNEPTNEMT8iIjoiIChyaWc9Cmh0IGF4aXMpIiksZX0p
KS5jYWxsKHgpLHQudG9wIT0zRHguaGVpZ2h0KCkmJih0LnRvcD0zRHguaGVpZ2h0KCksTD0zRChp
fHxwYT0KcnNlSW50KHUuc3R5bGUoImhlaWdodCIpKXx8NDAwKS10LnRvcC10LmJvdHRvbSksSS5z
ZWxlY3QoIi5sZWdlbmRXcmFwIikuYXR0PQpyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitrLzIr
IiwiKyAtdC50b3ArIikiKSksZC53aWR0aChrKS5oZWlnaHQoTCkuaW50ZXI9CnBvbGF0ZSgibW9u
b3RvbmUiKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxuW3Qlbi5s
ZW5ndGhdfT0KKS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZCYmZVtu
XS55QXhpcz0zRD0zRDEmJmVbbl0udHlwZT0KPTNEPTNEImxpbmUifSkpLHYud2lkdGgoaykuaGVp
Z2h0KEwpLmludGVycG9sYXRlKCJtb25vdG9uZSIpLmNvbG9yKGUubWFwKGZ1PQpuY3Rpb24oZSx0
KXtyZXR1cm4gZS5jb2xvcnx8blt0JW4ubGVuZ3RoXX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3Jl
dHVybiFlW249Cl0uZGlzYWJsZWQmJmVbbl0ueUF4aXM9M0Q9M0QyJiZlW25dLnR5cGU9M0Q9M0Qi
bGluZSJ9KSksbS53aWR0aChrKS5oZWlnaHQoTD0KKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQp
e3JldHVybiBlLmNvbG9yfHxuW3Qlbi5sZW5ndGhdfSkuZmlsdGVyKGZ1bmN0aW9uPQoodCxuKXty
ZXR1cm4hZVtuXS5kaXNhYmxlZCYmZVtuXS55QXhpcz0zRD0zRDEmJmVbbl0udHlwZT0zRD0zRCJi
YXIifSkpLGcud2k9CmR0aChrKS5oZWlnaHQoTCkuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXty
ZXR1cm4gZS5jb2xvcnx8blt0JW4ubGVuZ3RoXX0pLj0KZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0
dXJuIWVbbl0uZGlzYWJsZWQmJmVbbl0ueUF4aXM9M0Q9M0QyJiZlW25dLnR5cGU9M0Q9Cj0zRCJi
YXIifSkpLHkud2lkdGgoaykuaGVpZ2h0KEwpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0
dXJuIGUuY29sb3J8fD0Kblt0JW4ubGVuZ3RoXX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVy
biFlW25dLmRpc2FibGVkJiZlW25dLnlBeGlzPTNEPTNEPQoxJiZlW25dLnR5cGU9M0Q9M0QiYXJl
YSJ9KSksYi53aWR0aChrKS5oZWlnaHQoTCkuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXs9CnJl
dHVybiBlLmNvbG9yfHxuW3Qlbi5sZW5ndGhdfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJu
IWVbbl0uZGlzYWJsZWQmJj0KZVtuXS55QXhpcz0zRD0zRDImJmVbbl0udHlwZT0zRD0zRCJhcmVh
In0pKSxJLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiPQordC5sZWZ0KyIsIit0LnRvcCsi
KSIpO3ZhciBxPTNESS5zZWxlY3QoIi5saW5lczFXcmFwIikuZGF0dW0oQSksUj0zREkuc2VsZWM9
CnQoIi5iYXJzMVdyYXAiKS5kYXR1bShNKSxVPTNESS5zZWxlY3QoIi5zdGFjazFXcmFwIikuZGF0
dW0oRCksej0zREkuc2VsZWN0KD0KIi5saW5lczJXcmFwIikuZGF0dW0oTyksVz0zREkuc2VsZWN0
KCIuYmFyczJXcmFwIikuZGF0dW0oXyksWD0zREkuc2VsZWN0KCIuPQpzdGFjazJXcmFwIikuZGF0
dW0oUCksVj0zREQubGVuZ3RoP0QubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlc30pLnJl
ZHU9CmNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUsbil7cmV0dXJue3g6
ZS54LHk6ZS55K3Rbbl0ueX19KX0pLj0KY29uY2F0KFt7eDowLHk6MH1dKTpbXSwkPTNEUC5sZW5n
dGg/UC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzfSkucmVkPQp1Y2UoZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gZS5tYXAoZnVuY3Rpb24oZSxuKXtyZXR1cm57eDplLngseTplLnkrdFtuXS55
fX0pfSk9Ci5jb25jYXQoW3t4OjAseTowfV0pOltdO2guZG9tYWluKGx8fGQzLmV4dGVudChkMy5t
ZXJnZShIKS5jb25jYXQoViksZnVuY3Rpbz0KbihlKXtyZXR1cm4gZS55fSkpLnJhbmdlKFswLExd
KSxwLmRvbWFpbihjfHxkMy5leHRlbnQoZDMubWVyZ2UoQikuY29uY2F0KCQpPQosZnVuY3Rpb24o
ZSl7cmV0dXJuIGUueX0pKS5yYW5nZShbMCxMXSksZC55RG9tYWluKGguZG9tYWluKCkpLG0ueURv
bWFpbihoLmQ9Cm9tYWluKCkpLHkueURvbWFpbihoLmRvbWFpbigpKSx2LnlEb21haW4ocC5kb21h
aW4oKSksZy55RG9tYWluKHAuZG9tYWluKCkpLD0KYi55RG9tYWluKHAuZG9tYWluKCkpLEQubGVu
Z3RoJiZkMy50cmFuc2l0aW9uKFUpLmNhbGwoeSksUC5sZW5ndGgmJmQzLnRyYW5zPQppdGlvbihY
KS5jYWxsKGIpLE0ubGVuZ3RoJiZkMy50cmFuc2l0aW9uKFIpLmNhbGwobSksXy5sZW5ndGgmJmQz
LnRyYW5zaXRpb249CihXKS5jYWxsKGcpLEEubGVuZ3RoJiZkMy50cmFuc2l0aW9uKHEpLmNhbGwo
ZCksTy5sZW5ndGgmJmQzLnRyYW5zaXRpb24oeikuYz0KYWxsKHYpLHcudGlja3Moay8xMDApLnRp
Y2tTaXplKC1MLDApLEkuc2VsZWN0KCIueC5heGlzIikuYXR0cigidHJhbnNmb3JtIiwiPQp0cmFu
c2xhdGUoMCwiK0wrIikiKSxkMy50cmFuc2l0aW9uKEkuc2VsZWN0KCIueC5heGlzIikpLmNhbGwo
dyksRS50aWNrcyhMLzM9CjYpLnRpY2tTaXplKC1rLDApLGQzLnRyYW5zaXRpb24oSS5zZWxlY3Qo
Ii55MS5heGlzIikpLmNhbGwoRSksUy50aWNrcyhMLzM2KT0KLnRpY2tTaXplKC1rLDApLGQzLnRy
YW5zaXRpb24oSS5zZWxlY3QoIi55Mi5heGlzIikpLmNhbGwoUyksSS5zZWxlY3QoIi55Mi5hPQp4
aXMiKS5zdHlsZSgib3BhY2l0eSIsQi5sZW5ndGg/MTowKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFu
c2xhdGUoIithLnJhbmdlKCk9ClsxXSsiLDApIikseC5kaXNwYXRjaC5vbigic3RhdGVDaGFuZ2Ui
LGZ1bmN0aW9uKGUpe0MudXBkYXRlKCl9KSxULm9uKCJ0b29sdD0KaXBTaG93IixmdW5jdGlvbihl
KXtvJiZOKGUsZi5wYXJlbnROb2RlKX0pfSksQ312YXIgdD0zRHt0b3A6MzAscmlnaHQ6MjAsYm90
PQp0b206NTAsbGVmdDo2MH0sbj0zRGQzLnNjYWxlLmNhdGVnb3J5MjAoKS5yYW5nZSgpLHI9M0Ru
dWxsLGk9M0RudWxsLHM9M0QhMCw9Cm89M0QhMCx1PTNEZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1
cm4iPGgzPiIrZSsiPC9oMz4iKyI8cD4iK24rIiBhdCAiK3QrIjwvcD0KPiJ9LGEsZixsLGMsYT0z
RGQzLnNjYWxlLmxpbmVhcigpLGg9M0RkMy5zY2FsZS5saW5lYXIoKSxwPTNEZDMuc2NhbGUubGlu
ZWFyPQooKSxkPTNEZS5tb2RlbHMubGluZSgpLnlTY2FsZShoKSx2PTNEZS5tb2RlbHMubGluZSgp
LnlTY2FsZShwKSxtPTNEZS5tb2RlbHM9Ci5tdWx0aUJhcigpLnN0YWNrZWQoITEpLnlTY2FsZSho
KSxnPTNEZS5tb2RlbHMubXVsdGlCYXIoKS5zdGFja2VkKCExKS55U2NhbD0KZShwKSx5PTNEZS5t
b2RlbHMuc3RhY2tlZEFyZWEoKS55U2NhbGUoaCksYj0zRGUubW9kZWxzLnN0YWNrZWRBcmVhKCku
eVNjYWxlPQoocCksdz0zRGUubW9kZWxzLmF4aXMoKS5zY2FsZShhKS5vcmllbnQoImJvdHRvbSIp
LnRpY2tQYWRkaW5nKDUpLEU9M0RlLm1vZGU9CmxzLmF4aXMoKS5zY2FsZShoKS5vcmllbnQoImxl
ZnQiKSxTPTNEZS5tb2RlbHMuYXhpcygpLnNjYWxlKHApLm9yaWVudCgicmlnaD0KdCIpLHg9M0Rl
Lm1vZGVscy5sZWdlbmQoKS5oZWlnaHQoMzApLFQ9M0RkMy5kaXNwYXRjaCgidG9vbHRpcFNob3ci
LCJ0b29sdGlwPQpIaWRlIiksTj0zRGZ1bmN0aW9uKHQsbil7dmFyIHI9M0R0LnBvc1swXSsobi5v
ZmZzZXRMZWZ0fHwwKSxpPTNEdC5wb3NbMV0rKG49Ci5vZmZzZXRUb3B8fDApLHM9M0R3LnRpY2tG
b3JtYXQoKShkLngoKSh0LnBvaW50LHQucG9pbnRJbmRleCkpLG89M0QodC5zZXJpZT0Kcy55QXhp
cz0zRD0zRDI/UzpFKS50aWNrRm9ybWF0KCkoZC55KCkodC5wb2ludCx0LnBvaW50SW5kZXgpKSxh
PTNEdSh0LnNlcmllPQpzLmtleSxzLG8sdCxDKTtlLnRvb2x0aXAuc2hvdyhbcixpXSxhLHVuZGVm
aW5lZCx1bmRlZmluZWQsbi5vZmZzZXRQYXJlbnQpfTs9CnJldHVybiBkLmRpc3BhdGNoLm9uKCJl
bGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWz0KMF0r
dC5sZWZ0LGUucG9zWzFdK3QudG9wXSxULnRvb2x0aXBTaG93KGUpfSksZC5kaXNwYXRjaC5vbigi
ZWxlbWVudE1vdXNlb3V0PQoudG9vbHRpcCIsZnVuY3Rpb24oZSl7VC50b29sdGlwSGlkZShlKX0p
LHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG89Cm9sdGlwIixmdW5jdGlvbihlKXtl
LnBvcz0zRFtlLnBvc1swXSt0LmxlZnQsZS5wb3NbMV0rdC50b3BdLFQudG9vbHRpcFNob3coZT0K
KX0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtU
LnRvb2x0aXBIaWRlKGUpfSksPQptLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0
aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK3QubGU9CmZ0LGUucG9zWzFdK3QudG9w
XSxULnRvb2x0aXBTaG93KGUpfSksbS5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0
aT0KcCIsZnVuY3Rpb24oZSl7VC50b29sdGlwSGlkZShlKX0pLGcuZGlzcGF0Y2gub24oImVsZW1l
bnRNb3VzZW92ZXIudG9vbHRpcCIsPQpmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXSt0Lmxl
ZnQsZS5wb3NbMV0rdC50b3BdLFQudG9vbHRpcFNob3coZSl9KSxnLmQ9CmlzcGF0Y2gub24oImVs
ZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtULnRvb2x0aXBIaWRlKGUpfSkseS5k
aXNwYT0KdGNoLm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7aWYoIU1hdGgucm91bmQoeS55
KCkoZS5wb2ludCkqMTAwKSlyZXR1cm4gPQpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZDMuc2VsZWN0
QWxsKCIucG9pbnQuaG92ZXIiKS5jbGFzc2VkKCJob3ZlciIsITEpfSwwKSw9CiExO2UucG9zPTNE
W2UucG9zWzBdK3QubGVmdCxlLnBvc1sxXSt0LnRvcF0sVC50b29sdGlwU2hvdyhlKX0pLHkuZGlz
cGF0Y2gubz0KbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKGUpe1QudG9vbHRpcEhpZGUoZSl9KSxi
LmRpc3BhdGNoLm9uKCJ0b29sdGlwU2hvdyIsPQpmdW5jdGlvbihlKXtpZighTWF0aC5yb3VuZChi
LnkoKShlLnBvaW50KSoxMDApKXJldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCk9CntkMy5zZWxl
Y3RBbGwoIi5wb2ludC5ob3ZlciIpLmNsYXNzZWQoImhvdmVyIiwhMSl9LDApLCExO2UucG9zPTNE
W2UucG9zWzBdKz0KdC5sZWZ0LGUucG9zWzFdK3QudG9wXSxULnRvb2x0aXBTaG93KGUpfSksYi5k
aXNwYXRjaC5vbigidG9vbHRpcEhpZGUiLGZ1bmN0PQppb24oZSl7VC50b29sdGlwSGlkZShlKX0p
LGQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb249CihlKXtl
LnBvcz0zRFtlLnBvc1swXSt0LmxlZnQsZS5wb3NbMV0rdC50b3BdLFQudG9vbHRpcFNob3coZSl9
KSxkLmRpc3BhdGNoLj0Kb24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtU
LnRvb2x0aXBIaWRlKGUpfSksdi5kaXNwYXRjaC5vbigiPQplbGVtZW50TW91c2VvdmVyLnRvb2x0
aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK3QubGVmdCxlLnBvc1sxXSt0LnQ9Cm9w
XSxULnRvb2x0aXBTaG93KGUpfSksdi5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0
aXAiLGZ1bmN0aW9uKGUpez0KVC50b29sdGlwSGlkZShlKX0pLFQub24oInRvb2x0aXBIaWRlIixm
dW5jdGlvbigpe28mJmUudG9vbHRpcC5jbGVhbnVwKCl9KSxDPQouZGlzcGF0Y2g9M0RULEMubGlu
ZXMxPTNEZCxDLmxpbmVzMj0zRHYsQy5iYXJzMT0zRG0sQy5iYXJzMj0zRGcsQy5zdGFjazE9M0Q9
CnksQy5zdGFjazI9M0RiLEMueEF4aXM9M0R3LEMueUF4aXMxPTNERSxDLnlBeGlzMj0zRFMsQy5v
cHRpb25zPTNEZS51dGlscy5vcD0KdGlvbnNGdW5jLmJpbmQoQyksQy54PTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGdldFg9M0RlLGQueChlPQopLG0ueChlKSxDKTpnZXRY
fSxDLnk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZ2V0WT0zRGUsZC55
KGU9CiksbS55KGUpLEMpOmdldFl9LEMueURvbWFpbjE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8obD0zRGUsQz0KKTpsfSxDLnlEb21haW4yPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLEMpOmN9LEMubWFyZ2luPQo9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0zRGUsQyk6dH0sQy53aWR0aD0zRGZ1bmN0aW9u
KGUpe3I9CmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLEMpOnJ9LEMuaGVpZ2h0PTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cz0KLmxlbmd0aD8oaT0zRGUsQyk6aX0sQy5jb2xvcj0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPTNEZSx4PQouY29sb3IoZSks
Qyk6bn0sQy5zaG93TGVnZW5kPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHM9M0RlLEM9Cik6c30sQy50b29sdGlwcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhvPTNEZSxDKTpvfSxDLnRvb2x0aT0KcENvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsQyk6dX0sQ30sZS5tb2RlbHMub2hsPQpjQmFyPTNE
ZnVuY3Rpb24oKXtmdW5jdGlvbiB4KGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIGc9
M0RuLXQubGVmdC09CnQucmlnaHQseD0zRHItdC50b3AtdC5ib3R0b20sVD0zRGQzLnNlbGVjdCh0
aGlzKTtzLmRvbWFpbih5fHxkMy5leHRlbnQoZVswXT0KLnZhbHVlcy5tYXAodSkuY29uY2F0KHAp
KSksdj9zLnJhbmdlKHd8fFtnKi41L2VbMF0udmFsdWVzLmxlbmd0aCxnKihlWzBdLnZhPQpsdWVz
Lmxlbmd0aC0uNSkvZVswXS52YWx1ZXMubGVuZ3RoXSk6cy5yYW5nZSh3fHxbMCxnXSksby5kb21h
aW4oYnx8W2QzLm1pbig9CmVbMF0udmFsdWVzLm1hcChoKS5jb25jYXQoZCkpLGQzLm1heChlWzBd
LnZhbHVlcy5tYXAoYykuY29uY2F0KGQpKV0pLnJhbmdlKD0KRXx8W3gsMF0pLHMuZG9tYWluKClb
MF09M0Q9M0Q9M0RzLmRvbWFpbigpWzFdJiYocy5kb21haW4oKVswXT9zLmRvbWFpbihbcy5kPQpv
bWFpbigpWzBdLXMuZG9tYWluKClbMF0qLjAxLHMuZG9tYWluKClbMV0rcy5kb21haW4oKVsxXSou
MDFdKTpzLmRvbWFpbihbLTE9CiwxXSkpLG8uZG9tYWluKClbMF09M0Q9M0Q9M0RvLmRvbWFpbigp
WzFdJiYoby5kb21haW4oKVswXT9vLmRvbWFpbihbby5kb21haT0KbigpWzBdK28uZG9tYWluKClb
MF0qLjAxLG8uZG9tYWluKClbMV0tby5kb21haW4oKVsxXSouMDFdKTpvLmRvbWFpbihbLTEsMV0p
PQopO3ZhciBOPTNEZDMuc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LW9obGNC
YXIiKS5kYXRhKFtlWzBdLnZhbHU9CmVzXSksQz0zRE4uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRy
KCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1vaGxjQmFyIiksaz0zRD0KQy5hcHBlbmQoImRlZnMi
KSxMPTNEQy5hcHBlbmQoImciKSxBPTNETi5zZWxlY3QoImciKTtMLmFwcGVuZCgiZyIpLmF0dHIo
ImNsPQphc3MiLCJudi10aWNrcyIpLE4uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdC5s
ZWZ0KyIsIit0LnRvcCsiKSIpLFQub249CigiY2xpY2siLGZ1bmN0aW9uKGUsdCl7Uy5jaGFydENs
aWNrKHtkYXRhOmUsaW5kZXg6dCxwb3M6ZDMuZXZlbnQsaWQ6aX0pfSksaz0KLmFwcGVuZCgiY2xp
cFBhdGgiKS5hdHRyKCJpZCIsIm52LWNoYXJ0LWNsaXAtcGF0aC0iK2kpLmFwcGVuZCgicmVjdCIp
LE4uc2VsPQplY3QoIiNudi1jaGFydC1jbGlwLXBhdGgtIitpKyIgcmVjdCIpLmF0dHIoIndpZHRo
IixnKS5hdHRyKCJoZWlnaHQiLHgpLEEuYXQ9CnRyKCJjbGlwLXBhdGgiLG0/InVybCgjbnYtY2hh
cnQtY2xpcC1wYXRoLSIraSsiKSI6IiIpO3ZhciBPPTNETi5zZWxlY3QoIi5udj0KLXRpY2tzIiku
c2VsZWN0QWxsKCIubnYtdGljayIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KTtPLmV4aXQo
KS5yZW1vdmUoPQopO3ZhciBNPTNETy5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNz
IixmdW5jdGlvbihlLHQsbil7cmV0dXJuKGYoZSw9CnQpPmwoZSx0KT8ibnYtdGljayBuZWdhdGl2
ZSI6Im52LXRpY2sgcG9zaXRpdmUiKSsiIG52LXRpY2stIituKyItIit0fSkuYXR0cj0KKCJkIixm
dW5jdGlvbih0LG4pe3ZhciByPTNEZy9lWzBdLnZhbHVlcy5sZW5ndGgqLjk7cmV0dXJuIm0wLDBs
MCwiKyhvKGYodCxuPQopKS1vKGModCxuKSkpKyJsIisgLXIvMisiLDBsIityLzIrIiwwbDAsIiso
byhoKHQsbikpLW8oZih0LG4pKSkrImwwLCIrKG8obCg9CnQsbikpLW8oaCh0LG4pKSkrImwiK3Iv
MisiLDBsIisgLXIvMisiLDB6In0pLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KT0Ke3Jl
dHVybiJ0cmFuc2xhdGUoIitzKHUoZSx0KSkrIiwiK28oYyhlLHQpKSsiKSJ9KS5vbigibW91c2Vv
dmVyIixmdW5jdGlvbih0PQosbil7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMCks
Uy5lbGVtZW50TW91c2VvdmVyKHtwb2ludDp0LHNlcmllczo9CmVbMF0scG9zOltzKHUodCxuKSks
byhhKHQsbikpXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6MCxlOmQzLmV2ZW50fSl9KS5vbj0K
KCJtb3VzZW91dCIsZnVuY3Rpb24odCxuKXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgiaG92ZXIi
LCExKSxTLmVsZW1lbnRNb3VzPQplb3V0KHtwb2ludDp0LHNlcmllczplWzBdLHBvaW50SW5kZXg6
bixzZXJpZXNJbmRleDowLGU6ZDMuZXZlbnR9KX0pLm9uKCJjbGk9CmNrIixmdW5jdGlvbihlLHQp
e1MuZWxlbWVudENsaWNrKHt2YWx1ZTphKGUsdCksZGF0YTplLGluZGV4OnQscG9zOltzKHUoZSx0
KT0KKSxvKGEoZSx0KSldLGU6ZDMuZXZlbnQsaWQ6aX0pLGQzLmV2ZW50LnN0b3BQcm9wYWdhdGlv
bigpfSkub24oImRibGNsaWNrIixmPQp1bmN0aW9uKGUsdCl7Uy5lbGVtZW50RGJsQ2xpY2soe3Zh
bHVlOmEoZSx0KSxkYXRhOmUsaW5kZXg6dCxwb3M6W3ModShlLHQpKSw9Cm8oYShlLHQpKV0sZTpk
My5ldmVudCxpZDppfSksZDMuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9KTtPLmF0dHIoImNsYXNz
IixmdT0KbmN0aW9uKGUsdCxuKXtyZXR1cm4oZihlLHQpPmwoZSx0KT8ibnYtdGljayBuZWdhdGl2
ZSI6Im52LXRpY2sgcG9zaXRpdmUiKSsiPQogbnYtdGljay0iK24rIi0iK3R9KSxkMy50cmFuc2l0
aW9uKE8pLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm49CiJ0cmFuc2xhdGUo
IitzKHUoZSx0KSkrIiwiK28oYyhlLHQpKSsiKSJ9KS5hdHRyKCJkIixmdW5jdGlvbih0LG4pe3Zh
ciByPTNEZz0KL2VbMF0udmFsdWVzLmxlbmd0aCouOTtyZXR1cm4ibTAsMGwwLCIrKG8oZih0LG4p
KS1vKGModCxuKSkpKyJsIisgLXIvMisiLDBsPQoiK3IvMisiLDBsMCwiKyhvKGgodCxuKSktbyhm
KHQsbikpKSsibDAsIisobyhsKHQsbikpLW8oaCh0LG4pKSkrImwiK3IvMisiLDA9CmwiKyAtci8y
KyIsMHoifSl9KSx4fXZhciB0PTNEe3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSxuPTNE
OTYwLHI9M0Q1MD0KMCxpPTNETWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjFlNCkscz0zRGQzLnNj
YWxlLmxpbmVhcigpLG89M0RkMy5zY2FsZS5saW5lPQphcigpLHU9M0RmdW5jdGlvbihlKXtyZXR1
cm4gZS54fSxhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0sZj0zRGZ1bmN0aW9uKGU9Cil7cmV0
dXJuIGUub3Blbn0sbD0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLmNsb3NlfSxjPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGUuaD0KaWdofSxoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUubG93fSxwPTNEW10s
ZD0zRFtdLHY9M0QhMSxtPTNEITAsZz0zRGUudXRpbHMuPQpkZWZhdWx0Q29sb3IoKSx5LGIsdyxF
LFM9M0RkMy5kaXNwYXRjaCgiY2hhcnRDbGljayIsImVsZW1lbnRDbGljayIsImVsZW1lbnQ9CkRi
bENsaWNrIiwiZWxlbWVudE1vdXNlb3ZlciIsImVsZW1lbnRNb3VzZW91dCIpO3JldHVybiB4LmRp
c3BhdGNoPTNEUyx4Lm9wdD0KaW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZCh4KSx4Lng9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0PQpoPyh1PTNEZSx4KTp1fSx4Lnk9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0zRGUseCk6YX0seC5vcGU9
Cm49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUseCk6Zn0seC5j
bG9zZT0zRGZ1bmN0aW9uKGUpez0KcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLHgpOmx9
LHguaGlnaD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMuPQpsZW5ndGg/KGM9M0RlLHgp
OmN9LHgubG93PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLHgp
Omg9Cn0seC5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC50
b3A9M0R0eXBlb2YgZS50b3AhPTNEIj0KdW5kZWZpbmVkIj9lLnRvcDp0LnRvcCx0LnJpZ2h0PTNE
dHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp0LnJpPQpnaHQsdC5ib3R0b209
M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dC5ib3R0b20sdC5sZWZ0
PTNEdHk9CnBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDp0LmxlZnQseCk6dH0seC53
aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybj0KIGFyZ3VtZW50cy5sZW5ndGg/KG49M0RlLHgpOm59
LHguaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5nPQp0aD8ocj0zRGUs
eCk6cn0seC54U2NhbGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0z
RGUseCk6c309Cix4LnlTY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhvPTNEZSx4KTpvfSx4LnhEb21haW49M0RmdT0KbmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyh5PTNEZSx4KTp5fSx4LnlEb21haW49M0RmdW5jdGlvbihlKXtyZXR1PQpybiBhcmd1
bWVudHMubGVuZ3RoPyhiPTNEZSx4KTpifSx4LnhSYW5nZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGU9Cm5ndGg/KHc9M0RlLHgpOnd9LHgueVJhbmdlPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlLHgpOj0KRX0seC5mb3JjZVg9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUseCk6cH0seC5mb3JjZVk9M0RmPQp1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSx4KTpkfSx4LnBhZERhdGE9M0Rm
dW5jdGlvbihlKXtyZXQ9CnVybiBhcmd1bWVudHMubGVuZ3RoPyh2PTNEZSx4KTp2fSx4LmNsaXBF
ZGdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cz0KLmxlbmd0aD8obT0zRGUseCk6bX0s
eC5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPTNEZS51PQp0
aWxzLmdldENvbG9yKHQpLHgpOmd9LHguaWQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oaT0zRGUseCk9CjppfSx4fSxlLm1vZGVscy5waWU9M0RmdW5jdGlvbigpe2Z1bmN0
aW9uIFMoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXtmdT0KbmN0aW9uIHEoZSl7dmFyIHQ9
M0QoZS5zdGFydEFuZ2xlK2UuZW5kQW5nbGUpKjkwL01hdGguUEktOTA7cmV0dXJuIHQ+OTA/dC0x
PQo4MDp0fWZ1bmN0aW9uIFIoZSl7ZS5lbmRBbmdsZT0zRGlzTmFOKGUuZW5kQW5nbGUpPzA6ZS5l
bmRBbmdsZSxlLnN0YXJ0QW5nbGU9Cj0zRGlzTmFOKGUuc3RhcnRBbmdsZSk/MDplLnN0YXJ0QW5n
bGUsbXx8KGUuaW5uZXJSYWRpdXM9M0QwKTt2YXIgdD0zRGQzLmludD0KZXJwb2xhdGUodGhpcy5f
Y3VycmVudCxlKTtyZXR1cm4gdGhpcy5fY3VycmVudD0zRHQoMCksZnVuY3Rpb24oZSl7cmV0dXJu
IEEoPQp0KGUpKX19ZnVuY3Rpb24gVShlKXtlLmlubmVyUmFkaXVzPTNEMDt2YXIgdD0zRGQzLmlu
dGVycG9sYXRlKHtzdGFydEFuZ2xlOjA9CixlbmRBbmdsZTowfSxlKTtyZXR1cm4gZnVuY3Rpb24o
ZSl7cmV0dXJuIEEodChlKSl9fXZhciBvPTNEbi10LmxlZnQtdC5yaWdodD0KLGY9M0RyLXQudG9w
LXQuYm90dG9tLFM9M0RNYXRoLm1pbihvLGYpLzIseD0zRFMtUy81LFQ9M0RkMy5zZWxlY3QodGhp
cyksTj0KPTNEVC5zZWxlY3RBbGwoIi5udi13cmFwLm52LXBpZSIpLmRhdGEoZSksQz0zRE4uZW50
ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjPQpsYXNzIiwibnZkMyBudi13cmFwIG52LXBpZSBudi1j
aGFydC0iK3UpLGs9M0RDLmFwcGVuZCgiZyIpLEw9M0ROLnNlbGVjdCgiZyI9Cik7ay5hcHBlbmQo
ImciKS5hdHRyKCJjbGFzcyIsIm52LXBpZSIpLGsuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJu
di1waWVMYT0KYmVscyIpLE4uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdC5sZWZ0KyIs
Iit0LnRvcCsiKSIpLEwuc2VsZWN0KCIubnYtPQpwaWUiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFu
c2xhdGUoIitvLzIrIiwiK2YvMisiKSIpLEwuc2VsZWN0KCIubnYtcGllTGFiZWw9CnMiKS5hdHRy
KCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitvLzIrIiwiK2YvMisiKSIpLFQub24oImNsaWNrIixm
dW5jdGlvbihlLD0KdCl7RS5jaGFydENsaWNrKHtkYXRhOmUsaW5kZXg6dCxwb3M6ZDMuZXZlbnQs
aWQ6dX0pfSk7dmFyIEE9M0RkMy5zdmcuYXJjKCkuPQpvdXRlclJhZGl1cyh4KTt5JiZBLnN0YXJ0
QW5nbGUoeSksYiYmQS5lbmRBbmdsZShiKSxtJiZBLmlubmVyUmFkaXVzKFMqdyk7dmE9CnIgTz0z
RGQzLmxheW91dC5waWUoKS5zb3J0KG51bGwpLnZhbHVlKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRp
c2FibGVkPzA6cyhlKT0KfSksTT0zRE4uc2VsZWN0KCIubnYtcGllIikuc2VsZWN0QWxsKCIubnYt
c2xpY2UiKS5kYXRhKE8pLF89M0ROLnNlbGVjdCgiLm52PQotcGllTGFiZWxzIikuc2VsZWN0QWxs
KCIubnYtbGFiZWwiKS5kYXRhKE8pO00uZXhpdCgpLnJlbW92ZSgpLF8uZXhpdCgpLnJlbW89CnZl
KCk7dmFyIEQ9M0RNLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1zbGljZSIp
Lm9uKCJtb3VzZW92ZXIiLD0KZnVuY3Rpb24oZSx0KXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgi
aG92ZXIiLCEwKSxFLmVsZW1lbnRNb3VzZW92ZXIoe2xhYmVsPQo6aShlLmRhdGEpLHZhbHVlOnMo
ZS5kYXRhKSxwb2ludDplLmRhdGEscG9pbnRJbmRleDp0LHBvczpbZDMuZXZlbnQucGFnZVgsZDM9
Ci5ldmVudC5wYWdlWV0saWQ6dX0pfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbihlLHQpe2QzLnNl
bGVjdCh0aGlzKS5jbGFzc2VkKD0KImhvdmVyIiwhMSksRS5lbGVtZW50TW91c2VvdXQoe2xhYmVs
OmkoZS5kYXRhKSx2YWx1ZTpzKGUuZGF0YSkscG9pbnQ6ZS5kYXRhPQosaW5kZXg6dCxpZDp1fSl9
KS5vbigiY2xpY2siLGZ1bmN0aW9uKGUsdCl7RS5lbGVtZW50Q2xpY2soe2xhYmVsOmkoZS5kYXRh
KSw9CnZhbHVlOnMoZS5kYXRhKSxwb2ludDplLmRhdGEsaW5kZXg6dCxwb3M6ZDMuZXZlbnQsaWQ6
dX0pLGQzLmV2ZW50LnN0b3BQcm9wYT0KZ2F0aW9uKCl9KS5vbigiZGJsY2xpY2siLGZ1bmN0aW9u
KGUsdCl7RS5lbGVtZW50RGJsQ2xpY2soe2xhYmVsOmkoZS5kYXRhKSx2PQphbHVlOnMoZS5kYXRh
KSxwb2ludDplLmRhdGEsaW5kZXg6dCxwb3M6ZDMuZXZlbnQsaWQ6dX0pLGQzLmV2ZW50LnN0b3BQ
cm9wYWc9CmF0aW9uKCl9KTtNLmF0dHIoImZpbGwiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSx0
KX0pLmF0dHIoInN0cm9rZSIsZnVuY3Rpbz0KbihlLHQpe3JldHVybiBhKGUsdCl9KTt2YXIgUD0z
REQuYXBwZW5kKCJwYXRoIikuZWFjaChmdW5jdGlvbihlKXt0aGlzLl9jdXJyPQplbnQ9M0RlfSk7
TS5zZWxlY3QoInBhdGgiKS5hdHRyKCJkIixBKTtpZihsKXt2YXIgSD0zRGQzLnN2Zy5hcmMoKS5p
bm5lclJhZGk9CnVzKDApO2MmJihIPTNEQSksaCYmKEg9M0RkMy5zdmcuYXJjKCkub3V0ZXJSYWRp
dXMoQS5vdXRlclJhZGl1cygpKSksXy5lbnRlcj0KKCkuYXBwZW5kKCJnIikuY2xhc3NlZCgibnYt
bGFiZWwiLCEwKS5lYWNoKGZ1bmN0aW9uKGUsdCl7dmFyIG49M0RkMy5zZWxlY3QoPQp0aGlzKTtu
LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSl7aWYoZyl7ZS5vdXRlclJhZGl1cz0zRHgrMTAs
ZS5pbm5lclJhZGk9CnVzPTNEeCsxNTt2YXIgdD0zRChlLnN0YXJ0QW5nbGUrZS5lbmRBbmdsZSkv
MiooMTgwL01hdGguUEkpO3JldHVybihlLnN0YXJ0QT0KbmdsZStlLmVuZEFuZ2xlKS8yPE1hdGgu
UEk/dC09M0Q5MDp0Kz0zRDkwLCJ0cmFuc2xhdGUoIitILmNlbnRyb2lkKGUpKyIpIHJvPQp0YXRl
KCIrdCsiKSJ9cmV0dXJuIGUub3V0ZXJSYWRpdXM9M0RTKzEwLGUuaW5uZXJSYWRpdXM9M0RTKzE1
LCJ0cmFuc2xhdGUoIis9CkguY2VudHJvaWQoZSkrIikifSksbi5hcHBlbmQoInJlY3QiKS5zdHls
ZSgic3Ryb2tlIiwiI2ZmZiIpLnN0eWxlKCJmaWxsIiwiIz0KZmZmIikuYXR0cigicngiLDMpLmF0
dHIoInJ5IiwzKSxuLmFwcGVuZCgidGV4dCIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsZz8oZS5zPQp0
YXJ0QW5nbGUrZS5lbmRBbmdsZSkvMjxNYXRoLlBJPyJzdGFydCI6ImVuZCI6Im1pZGRsZSIpLnN0
eWxlKCJmaWxsIiwiIzAwMCI9Cil9KTt2YXIgQj0zRHt9LGo9M0QxNCxGPTNEMTQwLEk9M0RmdW5j
dGlvbihlKXtyZXR1cm4gTWF0aC5mbG9vcihlWzBdL0YpKkYrIj0KLCIrTWF0aC5mbG9vcihlWzFd
L2opKmp9O18uYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlKXtpZihnKXtlLm91dGVyUmFkaXVz
PQo9M0R4KzEwLGUuaW5uZXJSYWRpdXM9M0R4KzE1O3ZhciB0PTNEKGUuc3RhcnRBbmdsZStlLmVu
ZEFuZ2xlKS8yKigxODAvTWF0aC49ClBJKTtyZXR1cm4oZS5zdGFydEFuZ2xlK2UuZW5kQW5nbGUp
LzI8TWF0aC5QST90LT0zRDkwOnQrPTNEOTAsInRyYW5zbGF0ZSgiKz0KSC5jZW50cm9pZChlKSsi
KSByb3RhdGUoIit0KyIpIn1lLm91dGVyUmFkaXVzPTNEUysxMCxlLmlubmVyUmFkaXVzPTNEUysx
NTt2PQphciBuPTNESC5jZW50cm9pZChlKSxyPTNESShuKTtyZXR1cm4gQltyXSYmKG5bMV0tPTNE
aiksQltJKG4pXT0zRCEwLCJ0cmFuc2w9CmF0ZSgiK24rIikifSksXy5zZWxlY3QoIi5udi1sYWJl
bCB0ZXh0Iikuc3R5bGUoInRleHQtYW5jaG9yIixnPyhkLnN0YXJ0QW5nbD0KZStkLmVuZEFuZ2xl
KS8yPE1hdGguUEk/InN0YXJ0IjoiZW5kIjoibWlkZGxlIikudGV4dChmdW5jdGlvbihlLHQpe3Zh
ciBuPTNEPQooZS5lbmRBbmdsZS1lLnN0YXJ0QW5nbGUpLygyKk1hdGguUEkpLHI9M0R7a2V5Omko
ZS5kYXRhKSx2YWx1ZTpzKGUuZGF0YSkscGU9CnJjZW50OmQzLmZvcm1hdCgiJSIpKG4pfTtyZXR1
cm4gZS52YWx1ZSYmbj52P3JbcF06IiJ9KX19KSxTfXZhciB0PTNEe3RvcDowLD0KcmlnaHQ6MCxi
b3R0b206MCxsZWZ0OjB9LG49M0Q1MDAscj0zRDUwMCxpPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUu
eH0scz0zRGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGUueX0sbz0zRGZ1bmN0aW9uKGUpe3JldHVybiBl
LmRlc2NyaXB0aW9ufSx1PTNETWF0aC5mbG9vcig9Ck1hdGgucmFuZG9tKCkqMWU0KSxhPTNEZS51
dGlscy5kZWZhdWx0Q29sb3IoKSxmPTNEZDMuZm9ybWF0KCIsLjJmIiksbD0zRCEwLD0KYz0zRCEw
LGg9M0QhMSxwPTNEImtleSIsdj0zRC4wMixtPTNEITEsZz0zRCExLHk9M0QhMSxiPTNEITEsdz0z
RC41LEU9M0RkMy5kPQppc3BhdGNoKCJjaGFydENsaWNrIiwiZWxlbWVudENsaWNrIiwiZWxlbWVu
dERibENsaWNrIiwiZWxlbWVudE1vdXNlb3ZlciIsImU9CmxlbWVudE1vdXNlb3V0Iik7cmV0dXJu
IFMuZGlzcGF0Y2g9M0RFLFMub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZD0KKFMp
LFMubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPTNE
dHlwZW9mIGUudG9wIT0KPTNEInVuZGVmaW5lZCI/ZS50b3A6dC50b3AsdC5yaWdodD0zRHR5cGVv
ZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6PQp0LnJpZ2h0LHQuYm90dG9tPTNEdHlw
ZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD0KPTNE
dHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6dC5sZWZ0LFMpOnR9LFMud2lkdGg9
M0RmdW5jdGlvbihlKXtyPQpldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPTNEZSxTKTpufSxTLmhl
aWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHM9Ci5sZW5ndGg/KHI9M0RlLFMpOnJ9
LFMudmFsdWVzPTNEZnVuY3Rpb24odCl7cmV0dXJuIGUubG9nKCJwaWUudmFsdWVzKCkgaXMgbj0K
byBsb25nZXIgc3VwcG9ydGVkLiIpLFN9LFMueD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhpPTNEZSxTPQopOml9LFMueT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhzPTNEZDMuZnVuY3RvcihlKSxTKTpzfSxTLmQ9CmVzY3JpcHRpb249M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsUyk6b30sUy5zaG93TGFiZWxz
PQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGUsUyk6bH0sUy5s
YWJlbFN1bmJlYW1MYXlvdXQ9M0Q9CmZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhnPTNEZSxTKTpnfSxTLmRvbnV0TGFiZWxzT3V0c2lkZT0zRGZ1bj0KY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLFMpOmh9LFMucGllTGFiZWxzT3V0c2lkZT0zRGZ1bmN0
aW9uPQooZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLFMpOmN9LFMubGFiZWxUeXBl
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGE9CnJndW1lbnRzLmxlbmd0aD8ocD0zRGUscD0zRHB8fCJr
ZXkiLFMpOnB9LFMuZG9udXQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndT0KbWVudHMubGVuZ3Ro
PyhtPTNEZSxTKTptfSxTLmRvbnV0UmF0aW89M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0PQpoPyh3PTNEZSxTKTp3fSxTLnN0YXJ0QW5nbGU9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oeT0zRGUsUyk9Cjp5fSxTLmVuZEFuZ2xlPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9M0RlLFMpOmJ9LFMuaWQ9M0RmdT0KbmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZSxTKTp1fSxTLmNvbG9yPTNEZnVuY3Rpb24o
dCl7cmV0dXJuPQogYXJndW1lbnRzLmxlbmd0aD8oYT0zRGUudXRpbHMuZ2V0Q29sb3IodCksUyk6
YX0sUy52YWx1ZUZvcm1hdD0zRGZ1bmN0aW9uKGU9Cil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGY9M0RlLFMpOmZ9LFMubGFiZWxUaHJlc2hvbGQ9M0RmdW5jdGlvbihlKXtyZXR1cj0KbiBhcmd1
bWVudHMubGVuZ3RoPyh2PTNEZSxTKTp2fSxTfSxlLm1vZGVscy5waWVDaGFydD0zRGZ1bmN0aW9u
KCl7ZnVuY3Rpb24gPQp2KGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIHU9M0RkMy5z
ZWxlY3QodGhpcyksYT0zRHRoaXMsZj0zRChpfHxwYXI9CnNlSW50KHUuc3R5bGUoIndpZHRoIikp
fHw5NjApLXIubGVmdC1yLnJpZ2h0LGQ9M0Qoc3x8cGFyc2VJbnQodS5zdHlsZSgiaGVpZz0KaHQi
KSl8fDQwMCktci50b3Atci5ib3R0b207di51cGRhdGU9M0RmdW5jdGlvbigpe3UuY2FsbCh2KX0s
di5jb250YWluZXI9M0R0PQpoaXMsbC5kaXNhYmxlZD0zRGUubWFwKGZ1bmN0aW9uKGUpe3JldHVy
biEhZS5kaXNhYmxlZH0pO2lmKCFjKXt2YXIgbTtjPTNEe309Cjtmb3IobSBpbiBsKWxbbV1pbnN0
YW5jZW9mIEFycmF5P2NbbV09M0RsW21dLnNsaWNlKDApOmNbbV09M0RsW21dfWlmKCFlfHwhZT0K
Lmxlbmd0aCl7dmFyIGc9M0R1LnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW2hdKTtyZXR1
cm4gZy5lbnRlcigpLmFwcGVuPQpkKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0
YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmM9CmhvciIsIm1pZGRsZSIpLGcu
YXR0cigieCIsci5sZWZ0K2YvMikuYXR0cigieSIsci50b3ArZC8yKS50ZXh0KGZ1bmN0aW9uKGUp
ez0KcmV0dXJuIGV9KSx2fXUuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtb3ZlKCk7dmFyIHk9
M0R1LnNlbGVjdEFsbCgiZy5udi13PQpyYXAubnYtcGllQ2hhcnQiKS5kYXRhKFtlXSksYj0zRHku
ZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnY9Ci13cmFwIG52LXBpZUNo
YXJ0IikuYXBwZW5kKCJnIiksdz0zRHkuc2VsZWN0KCJnIik7Yi5hcHBlbmQoImciKS5hdHRyKCJj
bGFzcz0KIiwibnYtcGllV3JhcCIpLGIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1sZWdl
bmRXcmFwIiksbyYmKG4ud2lkdGgoZikuPQprZXkodC54KCkpLHkuc2VsZWN0KCIubnYtbGVnZW5k
V3JhcCIpLmRhdHVtKGUpLmNhbGwobiksci50b3AhPTNEbi5oZWlnaHQoKSY9CiYoci50b3A9M0Ru
LmhlaWdodCgpLGQ9M0Qoc3x8cGFyc2VJbnQodS5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXIudG9w
LXIuYm90dD0Kb20pLHkuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIs
InRyYW5zbGF0ZSgwLCIrIC1yLnRvcCsiKSIpPQopLHkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNs
YXRlKCIrci5sZWZ0KyIsIityLnRvcCsiKSIpLHQud2lkdGgoZikuaGVpZ2h0KGQ9Cik7dmFyIEU9
M0R3LnNlbGVjdCgiLm52LXBpZVdyYXAiKS5kYXR1bShbZV0pO2QzLnRyYW5zaXRpb24oRSkuY2Fs
bCh0KSxuLmRpcz0KcGF0Y2gub24oInN0YXRlQ2hhbmdlIixmdW5jdGlvbihlKXtsPTNEZSxwLnN0
YXRlQ2hhbmdlKGwpLHYudXBkYXRlKCl9KSx0LmRpPQpzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91
dC50b29sdGlwIixmdW5jdGlvbihlKXtwLnRvb2x0aXBIaWRlKGUpfSkscC5vbigiY2g9CmFuZ2VT
dGF0ZSIsZnVuY3Rpb24odCl7dHlwZW9mIHQuZGlzYWJsZWQhPTNEInVuZGVmaW5lZCImJihlLmZv
ckVhY2goZnVuY3Rpbz0KbihlLG4pe2UuZGlzYWJsZWQ9M0R0LmRpc2FibGVkW25dfSksbC5kaXNh
YmxlZD0zRHQuZGlzYWJsZWQpLHYudXBkYXRlKCl9KX0pPQosdn12YXIgdD0zRGUubW9kZWxzLnBp
ZSgpLG49M0RlLm1vZGVscy5sZWdlbmQoKSxyPTNEe3RvcDozMCxyaWdodDoyMCxib3R0b209Cjoy
MCxsZWZ0OjIwfSxpPTNEbnVsbCxzPTNEbnVsbCxvPTNEITAsdT0zRGUudXRpbHMuZGVmYXVsdENv
bG9yKCksYT0zRCEwLGY9Cj0zRGZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiI8aDM+IitlKyI8L2gz
PiIrIjxwPiIrdCsiPC9wPiJ9LGw9M0R7fSxjPTNEbnVsbD0KLGg9M0QiTm8gRGF0YSBBdmFpbGFi
bGUuIixwPTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhpZGUiLCJzdGF0PQpl
Q2hhbmdlIiwiY2hhbmdlU3RhdGUiKSxkPTNEZnVuY3Rpb24obixyKXt2YXIgaT0zRHQuZGVzY3Jp
cHRpb24oKShuLnBvaW50KXw9Cnx0LngoKShuLnBvaW50KSxzPTNEbi5wb3NbMF0rKHImJnIub2Zm
c2V0TGVmdHx8MCksbz0zRG4ucG9zWzFdKyhyJiZyLm9mZnNldD0KVG9wfHwwKSx1PTNEdC52YWx1
ZUZvcm1hdCgpKHQueSgpKG4ucG9pbnQpKSxhPTNEZihpLHUsbix2KTtlLnRvb2x0aXAuc2hvdyhb
PQpzLG9dLGEsbi52YWx1ZTwwPyJuIjoicyIsbnVsbCxyKX07cmV0dXJuIHQuZGlzcGF0Y2gub24o
ImVsZW1lbnRNb3VzZW92ZXIudG89Cm9sdGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1sw
XStyLmxlZnQsZS5wb3NbMV0rci50b3BdLHAudG9vbHRpcFNob3coZT0KKX0pLHAub24oInRvb2x0
aXBTaG93IixmdW5jdGlvbihlKXthJiZkKGUpfSkscC5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9u
KCl7PQphJiZlLnRvb2x0aXAuY2xlYW51cCgpfSksdi5sZWdlbmQ9M0RuLHYuZGlzcGF0Y2g9M0Rw
LHYucGllPTNEdCxkMy5yZWJpbmQodiw9CnQsInZhbHVlRm9ybWF0IiwidmFsdWVzIiwieCIsInki
LCJkZXNjcmlwdGlvbiIsImlkIiwic2hvd0xhYmVscyIsImRvbnV0TGFiZT0KbHNPdXRzaWRlIiwi
cGllTGFiZWxzT3V0c2lkZSIsImxhYmVsVHlwZSIsImRvbnV0IiwiZG9udXRSYXRpbyIsImxhYmVs
VGhyZXNoPQpvbGQiKSx2Lm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQodiksdi5t
YXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm49CiBhcmd1bWVudHMubGVuZ3RoPyhyLnRvcD0zRHR5
cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDpyLnRvcCxyLnJpZ2h0PQo9M0R0eXBlb2Yg
ZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OnIucmlnaHQsci5ib3R0b209M0R0eXBlb2Yg
ZS5ib3R0b209CiE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTpyLmJvdHRvbSxyLmxlZnQ9M0R0eXBl
b2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubD0KZWZ0OnIubGVmdCx2KTpyfSx2LndpZHRoPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9M0RlLHYpOml9PQosdi5oZWln
aHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0zRGUsdik6c30sdi5j
b2xvcj0zRGZ1bmM9CnRpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RlLnV0aWxz
LmdldENvbG9yKHIpLG4uY29sb3IodSksdC5jb2xvcj0KKHUpLHYpOnV9LHYuc2hvd0xlZ2VuZD0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZSx2KTpvfSx2PQoudG9v
bHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0zRGUsdik6YX0s
di50b29sdGlwQ29udGU9Cm50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGY9M0RlLHYpOmZ9LHYuc3RhdGU9M0RmdW5jdGlvbihlKT0Ke3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhsPTNEZSx2KTpsfSx2LmRlZmF1bHRTdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhPQpy
Z3VtZW50cy5sZW5ndGg/KGM9M0RlLHYpOmN9LHYubm9EYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg9Cj8oaD0zRGUsdik6aH0sdn0sZS5tb2RlbHMuc2NhdHRlcj0zRGZ1
bmN0aW9uKCl7ZnVuY3Rpb24gSShxKXtyZXR1cm4gcS5lYWNoKD0KZnVuY3Rpb24oSSl7ZnVuY3Rp
b24gUSgpe2lmKCFnKXJldHVybiExO3ZhciBlLGk9M0RkMy5tZXJnZShJLm1hcChmdW5jdGlvbihl
PQosdCl7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlvbihlLG4pe3ZhciByPTNEZihlLG4pLGk9
M0RsKGUsbik7cmV0dXJuW28ocik9Cix1KGkpLHQsbixlXX0pLmZpbHRlcihmdW5jdGlvbihlLHQp
e3JldHVybiBiKGVbNF0sdCl9KX0pKTtpZihEPTNEPTNEPTNEITApez0KaWYoeCl7dmFyIGE9M0RY
LnNlbGVjdCgiZGVmcyIpLnNlbGVjdEFsbCgiLm52LXBvaW50LWNsaXBzIikuZGF0YShbc10pLmVu
dGVyPQooKTthLmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJjbGFzcyIsIm52LXBvaW50LWNsaXBz
IikuYXR0cigiaWQiLCJudi1wb2ludHM9Ci1jbGlwLSIrcyk7dmFyIGM9M0RYLnNlbGVjdCgiI252
LXBvaW50cy1jbGlwLSIrcykuc2VsZWN0QWxsKCJjaXJjbGUiKS5kYXRhKD0KaSk7Yy5lbnRlcigp
LmFwcGVuZCgiY2lyY2xlIikuYXR0cigiciIsVCksYy5leGl0KCkucmVtb3ZlKCksYy5hdHRyKCJj
eCIsZnVuPQpjdGlvbihlKXtyZXR1cm4gZVswXX0pLmF0dHIoImN5IixmdW5jdGlvbihlKXtyZXR1
cm4gZVsxXX0pLFguc2VsZWN0KCIubnYtcG89CmludC1wYXRocyIpLmF0dHIoImNsaXAtcGF0aCIs
InVybCgjbnYtcG9pbnRzLWNsaXAtIitzKyIpIil9aS5sZW5ndGgmJihpLnB1cz0KaChbby5yYW5n
ZSgpWzBdLTIwLHUucmFuZ2UoKVswXS0yMCxudWxsLG51bGxdKSxpLnB1c2goW28ucmFuZ2UoKVsx
XSsyMCx1LnJhPQpuZ2UoKVsxXSsyMCxudWxsLG51bGxdKSxpLnB1c2goW28ucmFuZ2UoKVswXS0y
MCx1LnJhbmdlKClbMF0rMjAsbnVsbCxudWxsXSk9CixpLnB1c2goW28ucmFuZ2UoKVsxXSsyMCx1
LnJhbmdlKClbMV0tMjAsbnVsbCxudWxsXSkpO3ZhciBoPTNEZDMuZ2VvbS5wb2x5Zz0Kb24oW1st
MTAsLTEwXSxbLTEwLHIrMTBdLFtuKzEwLHIrMTBdLFtuKzEwLC0xMF1dKSxwPTNEMWUtNjtpPTNE
aS5zb3J0KGZ1bmN0PQppb24oZSx0KXtyZXR1cm4gZVswXS10WzBdfHxlWzFdLXRbMV19KTtmb3Io
dmFyIGQ9M0QwO2Q8aS5sZW5ndGgtMTspTWF0aC5hYnM9CihpW2RdWzBdLWlbZCsxXVswXSk8cCYm
TWF0aC5hYnMoaVtkXVsxXS1pW2QrMV1bMV0pPHA/aS5zcGxpY2UoZCsxLDEpOmQrKzt2YT0KciB2
PTNEZDMuZ2VvbS52b3Jvbm9pKGkpLm1hcChmdW5jdGlvbihlLHQpe3JldHVybntkYXRhOmguY2xp
cChlKSxzZXJpZXM6aVt0PQpdWzJdLHBvaW50OmlbdF1bM119fSksbT0zRFguc2VsZWN0KCIubnYt
cG9pbnQtcGF0aHMiKS5zZWxlY3RBbGwoInBhdGgiKS5kYXQ9CmEodik7bS5lbnRlcigpLmFwcGVu
ZCgicGF0aCIpLmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiJudi1wYXRoLSIrdD0K
fSksbS5leGl0KCkucmVtb3ZlKCksbS5hdHRyKCJkIixmdW5jdGlvbihlKXtyZXR1cm4hZXx8IWUu
ZGF0YXx8ZS5kYXRhLmxlbmd0PQpoPTNEPTNEPTNEMD8iTSAwIDAiOiJNIitlLmRhdGEuam9pbigi
TCIpKyJaIn0pO3ZhciB5PTNEZnVuY3Rpb24oZSxuKXtpZihGKXI9CmV0dXJuIDA7dmFyIHI9M0RJ
W2Uuc2VyaWVzXTtpZih0eXBlb2Ygcj0zRD0zRCJ1bmRlZmluZWQiKXJldHVybjt2YXIgaT0zRHIu
dj0KYWx1ZXNbZS5wb2ludF07bih7cG9pbnQ6aSxzZXJpZXM6cixwb3M6W28oZihpLGUucG9pbnQp
KSt0LmxlZnQsdShsKGksZS5wb2luPQp0KSkrdC50b3BdLHNlcmllc0luZGV4OmUuc2VyaWVzLHBv
aW50SW5kZXg6ZS5wb2ludH0pfTttLm9uKCJjbGljayIsZnVuY3Rpb249CihlKXt5KGUsXy5lbGVt
ZW50Q2xpY2spfSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oZSl7eShlLF8uZWxlbWVudE1vdXNl
b3Zlcj0KKX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oZSx0KXt5KGUsXy5lbGVtZW50TW91c2Vv
dXQpfSl9ZWxzZSBYLnNlbGVjdCgiLm52PQotZ3JvdXBzIikuc2VsZWN0QWxsKCIubnYtZ3JvdXAi
KS5zZWxlY3RBbGwoIi5udi1wb2ludCIpLm9uKCJjbGljayIsZnVuY3Rpb249CihlLG4pe2lmKEZ8
fCFJW2Uuc2VyaWVzXSlyZXR1cm4gMDt2YXIgcj0zRElbZS5zZXJpZXNdLGk9M0RyLnZhbHVlc1tu
XTtfLmVsZT0KbWVudENsaWNrKHtwb2ludDppLHNlcmllczpyLHBvczpbbyhmKGksbikpK3QubGVm
dCx1KGwoaSxuKSkrdC50b3BdLHNlcmllc0luPQpkZXg6ZS5zZXJpZXMscG9pbnRJbmRleDpufSl9
KS5vbigibW91c2VvdmVyIixmdW5jdGlvbihlLG4pe2lmKEZ8fCFJW2Uuc2VyaWU9CnNdKXJldHVy
biAwO3ZhciByPTNESVtlLnNlcmllc10saT0zRHIudmFsdWVzW25dO18uZWxlbWVudE1vdXNlb3Zl
cih7cG9pbnQ6aT0KLHNlcmllczpyLHBvczpbbyhmKGksbikpK3QubGVmdCx1KGwoaSxuKSkrdC50
b3BdLHNlcmllc0luZGV4OmUuc2VyaWVzLHBvaW50PQpJbmRleDpufSl9KS5vbigibW91c2VvdXQi
LGZ1bmN0aW9uKGUsdCl7aWYoRnx8IUlbZS5zZXJpZXNdKXJldHVybiAwO3ZhciBuPQo9M0RJW2Uu
c2VyaWVzXSxyPTNEbi52YWx1ZXNbdF07Xy5lbGVtZW50TW91c2VvdXQoe3BvaW50OnIsc2VyaWVz
Om4sc2VyaWVzSW49CmRleDplLnNlcmllcyxwb2ludEluZGV4OnR9KX0pO0Y9M0QhMX12YXIgcT0z
RG4tdC5sZWZ0LXQucmlnaHQsUj0zRHItdC50b3AtdD0KLmJvdHRvbSxVPTNEZDMuc2VsZWN0KHRo
aXMpO0kuZm9yRWFjaChmdW5jdGlvbihlLHQpe2UudmFsdWVzLmZvckVhY2goZnVuY3RpPQpvbihl
KXtlLnNlcmllcz0zRHR9KX0pO3ZhciBXPTNETiYmQyYmQT9bXTpkMy5tZXJnZShJLm1hcChmdW5j
dGlvbihlKXtyZXR1cm49CiBlLnZhbHVlcy5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm57eDpmKGUs
dCkseTpsKGUsdCksc2l6ZTpjKGUsdCl9fSl9KSk7by5kbz0KbWFpbihOfHxkMy5leHRlbnQoVy5t
YXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0pLmNvbmNhdChkKSkpLHcmJklbMF0/by5yYW5nPQpl
KGt8fFsocSpFK3EpLygyKklbMF0udmFsdWVzLmxlbmd0aCkscS1xKigxK0UpLygyKklbMF0udmFs
dWVzLmxlbmd0aCldKTpvLnI9CmFuZ2Uoa3x8WzAscV0pLHUuZG9tYWluKEN8fGQzLmV4dGVudChX
Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS55fSkuY29uY2F0KD0KdikpKS5yYW5nZShMfHxbUiww
XSksYS5kb21haW4oQXx8ZDMuZXh0ZW50KFcubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNpemV9
PQopLmNvbmNhdChtKSkpLnJhbmdlKE98fFsxNiwyNTZdKTtpZihvLmRvbWFpbigpWzBdPTNEPTNE
PTNEby5kb21haW4oKVsxXXx8dS49CmRvbWFpbigpWzBdPTNEPTNEPTNEdS5kb21haW4oKVsxXSlN
PTNEITA7by5kb21haW4oKVswXT0zRD0zRD0zRG8uZG9tYWluKClbMT0KXSYmKG8uZG9tYWluKClb
MF0/by5kb21haW4oW28uZG9tYWluKClbMF0tby5kb21haW4oKVswXSouMDEsby5kb21haW4oKVsx
XStvPQouZG9tYWluKClbMV0qLjAxXSk6by5kb21haW4oWy0xLDFdKSksdS5kb21haW4oKVswXT0z
RD0zRD0zRHUuZG9tYWluKClbMV0mJig9CnUuZG9tYWluKClbMF0/dS5kb21haW4oW3UuZG9tYWlu
KClbMF0tdS5kb21haW4oKVswXSouMDEsdS5kb21haW4oKVsxXSt1LmRvbT0KYWluKClbMV0qLjAx
XSk6dS5kb21haW4oWy0xLDFdKSksaXNOYU4oby5kb21haW4oKVswXSkmJm8uZG9tYWluKFstMSwx
XSksaXNOPQphTih1LmRvbWFpbigpWzBdKSYmdS5kb21haW4oWy0xLDFdKSxQPTNEUHx8byxIPTNE
SHx8dSxCPTNEQnx8YTt2YXIgWD0zRFUuc2U9CmxlY3RBbGwoImcubnYtd3JhcC5udi1zY2F0dGVy
IikuZGF0YShbSV0pLFY9M0RYLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiYz0KbGFzcyIsIm52
ZDMgbnYtd3JhcCBudi1zY2F0dGVyIG52LWNoYXJ0LSIrcysoTT8iIG52LXNpbmdsZS1wb2ludCI6
IiIpKSwkPTNEPQpWLmFwcGVuZCgiZGVmcyIpLEo9M0RWLmFwcGVuZCgiZyIpLEs9M0RYLnNlbGVj
dCgiZyIpO0ouYXBwZW5kKCJnIikuYXR0cigiY2w9CmFzcyIsIm52LWdyb3VwcyIpLEouYXBwZW5k
KCJnIikuYXR0cigiY2xhc3MiLCJudi1wb2ludC1wYXRocyIpLFguYXR0cigidHJhbj0Kc2Zvcm0i
LCJ0cmFuc2xhdGUoIit0LmxlZnQrIiwiK3QudG9wKyIpIiksJC5hcHBlbmQoImNsaXBQYXRoIiku
YXR0cigiaWQiLCJuPQp2LWVkZ2UtY2xpcC0iK3MpLmFwcGVuZCgicmVjdCIpLFguc2VsZWN0KCIj
bnYtZWRnZS1jbGlwLSIrcysiIHJlY3QiKS5hdHRyKCI9CndpZHRoIixxKS5hdHRyKCJoZWlnaHQi
LFI+MD9SOjApLEsuYXR0cigiY2xpcC1wYXRoIixTPyJ1cmwoI252LWVkZ2UtY2xpcC0iKz0Kcysi
KSI6IiIpLEY9M0QhMDt2YXIgRz0zRFguc2VsZWN0KCIubnYtZ3JvdXBzIikuc2VsZWN0QWxsKCIu
bnYtZ3JvdXAiKS5kYXRhPQooZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGZ1bmN0aW9uKGUpe3JldHVy
biBlLmtleX0pO0cuZW50ZXIoKS5hcHBlbmQoImciKS5zdHk9CmxlKCJzdHJva2Utb3BhY2l0eSIs
MWUtNikuc3R5bGUoImZpbGwtb3BhY2l0eSIsMWUtNiksRy5leGl0KCkucmVtb3ZlKCksRy5hdD0K
dHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiJudi1ncm91cCBudi1zZXJpZXMtIit0fSku
Y2xhc3NlZCgiaG92ZXIiLGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGUuaG92ZXJ9KSxHLnN0eWxlKCJm
aWxsIixmdW5jdGlvbihlLHQpe3JldHVybiBpKGUsdCl9KS5zdHk9CmxlKCJzdHJva2UiLGZ1bmN0
aW9uKGUsdCl7cmV0dXJuIGkoZSx0KX0pLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMSkuc3R5bGUo
Ij0KZmlsbC1vcGFjaXR5IiwuNSk7aWYocCl7dmFyIFk9M0RHLnNlbGVjdEFsbCgiY2lyY2xlLm52
LXBvaW50IikuZGF0YShmdW5jdGlvPQpuKGUpe3JldHVybiBlLnZhbHVlc30seSk7WS5lbnRlcigp
LmFwcGVuZCgiY2lyY2xlIikuc3R5bGUoImZpbGwiLGZ1bmN0aW9uKGU9Cix0KXtyZXR1cm4gZS5j
b2xvcn0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J9KS5hdHRy
KCJjeD0KIixmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhQKGYodCxuKSkp
fSkuYXR0cigiY3kiLGZ1bmN0aW9uKHQsPQpuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8oSChs
KHQsbikpKX0pLmF0dHIoInIiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGg9Ci5zcXJ0KGEoYyhl
LHQpKS9NYXRoLlBJKX0pLFkuZXhpdCgpLnJlbW92ZSgpLEcuZXhpdCgpLnNlbGVjdEFsbCgicGF0
aC5udi1wbz0KaW50IikuYXR0cigiY3giLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFO
dG9aZXJvKG8oZih0LG4pKSl9KS5hdHRyKCJjPQp5IixmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0
aWxzLk5hTnRvWmVybyh1KGwodCxuKSkpfSkucmVtb3ZlKCksWS5lYWNoKGZ1bmM9CnRpb24oZSx0
KXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgibnYtcG9pbnQiLCEwKS5jbGFzc2VkKCJudi1wb2lu
dC0iK3QsITApLj0KY2xhc3NlZCgiaG92ZXIiLCExKX0pLFkuYXR0cigiY3giLGZ1bmN0aW9uKHQs
bil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKG8oPQpmKHQsbikpKX0pLmF0dHIoImN5IixmdW5j
dGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyh1KGwodCxuKSkpfSkuYXQ9CnRyKCJy
IixmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLnNxcnQoYShjKGUsdCkpL01hdGguUEkpfSl9ZWxz
ZXt2YXIgWT0zREcucz0KZWxlY3RBbGwoInBhdGgubnYtcG9pbnQiKS5kYXRhKGZ1bmN0aW9uKGUp
e3JldHVybiBlLnZhbHVlc30pO1kuZW50ZXIoKS5hcHBlPQpuZCgicGF0aCIpLnN0eWxlKCJmaWxs
IixmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfSkuc3R5bGUoInN0cm9rZSIsZnVuY3Q9Cmlv
bihlLHQpe3JldHVybiBlLmNvbG9yfSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3Jl
dHVybiJ0cmFuc2xhdGUoIj0KK1AoZihlLHQpKSsiLCIrSChsKGUsdCkpKyIpIn0pLmF0dHIoImQi
LGQzLnN2Zy5zeW1ib2woKS50eXBlKGgpLnNpemUoZnVuY3RpPQpvbihlLHQpe3JldHVybiBhKGMo
ZSx0KSl9KSksWS5leGl0KCkucmVtb3ZlKCksRy5leGl0KCkuc2VsZWN0QWxsKCJwYXRoLm52LXA9
Cm9pbnQiKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgi
K28oZihlLHQpKSsiLCIrdShsKD0KZSx0KSkrIikifSkucmVtb3ZlKCksWS5lYWNoKGZ1bmN0aW9u
KGUsdCl7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoIm52LXBvaW50PQoiLCEwKS5jbGFzc2VkKCJu
di1wb2ludC0iK3QsITApLmNsYXNzZWQoImhvdmVyIiwhMSl9KSxZLmF0dHIoInRyYW5zZm9ybSIs
ZnU9Cm5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitvKGYoZSx0KSkrIiwiK3UobChlLHQp
KSsiKSJ9KS5hdHRyKCJkIixkMy5zdj0KZy5zeW1ib2woKS50eXBlKGgpLnNpemUoZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gYShjKGUsdCkpfSkpfWNsZWFyVGltZW91dChqKSxqPQo9M0RzZXRUaW1lb3V0
KFEsMzAwKSxQPTNEby5jb3B5KCksSD0zRHUuY29weSgpLEI9M0RhLmNvcHkoKX0pLEl9dmFyIHQ9
M0R7dG89CnA6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0sbj0zRDk2MCxyPTNENTAwLGk9M0Rl
LnV0aWxzLmRlZmF1bHRDb2xvcigpLHM9Cj0zRE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxZTUp
LG89M0RkMy5zY2FsZS5saW5lYXIoKSx1PTNEZDMuc2NhbGUubGluZWFyKD0KKSxhPTNEZDMuc2Nh
bGUubGluZWFyKCksZj0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9LGw9M0RmdW5jdGlvbihlKXty
ZXR1cm4gPQplLnl9LGM9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5zaXplfHwxfSxoPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGUuc2hhcGV8fCJjaXI9CmNsZSJ9LHA9M0QhMCxkPTNEW10sdj0zRFtdLG09
M0RbXSxnPTNEITAseT0zRG51bGwsYj0zRGZ1bmN0aW9uKGUpe3JldHVybiFlLj0Kbm90QWN0aXZl
fSx3PTNEITEsRT0zRC4xLFM9M0QhMSx4PTNEITAsVD0zRGZ1bmN0aW9uKCl7cmV0dXJuIDI1fSxO
PTNEbnVsbCxDPQo9M0RudWxsLGs9M0RudWxsLEw9M0RudWxsLEE9M0RudWxsLE89M0RudWxsLE09
M0QhMSxfPTNEZDMuZGlzcGF0Y2goImVsZW1lbnQ9CkNsaWNrIiwiZWxlbWVudE1vdXNlb3ZlciIs
ImVsZW1lbnRNb3VzZW91dCIpLEQ9M0QhMCxQLEgsQixqLEY9M0QhMTtyZXR1cm4gST0KLmNsZWFy
SGlnaGxpZ2h0cz0zRGZ1bmN0aW9uKCl7ZDMuc2VsZWN0QWxsKCIubnYtY2hhcnQtIitzKyIgLm52
LXBvaW50LmhvdmVyPQoiKS5jbGFzc2VkKCJob3ZlciIsITEpfSxJLmhpZ2hsaWdodFBvaW50PTNE
ZnVuY3Rpb24oZSx0LG4pe2QzLnNlbGVjdCgiLm52LWM9CmhhcnQtIitzKyIgLm52LXNlcmllcy0i
K2UrIiAubnYtcG9pbnQtIit0KS5jbGFzc2VkKCJob3ZlciIsbil9LF8ub24oImVsZW1lbj0KdE1v
dXNlb3Zlci5wb2ludCIsZnVuY3Rpb24oZSl7ZyYmSS5oaWdobGlnaHRQb2ludChlLnNlcmllc0lu
ZGV4LGUucG9pbnRJbmRlPQp4LCEwKX0pLF8ub24oImVsZW1lbnRNb3VzZW91dC5wb2ludCIsZnVu
Y3Rpb24oZSl7ZyYmSS5oaWdobGlnaHRQb2ludChlLnNlcmk9CmVzSW5kZXgsZS5wb2ludEluZGV4
LCExKX0pLEkuZGlzcGF0Y2g9M0RfLEkub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYj0K
aW5kKEkpLEkueD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZDMu
ZnVuY3RvcihlKSxJKTpmfSxJPQoueT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhsPTNEZDMuZnVuY3RvcihlKSxJKTpsfSxJLnNpemU9M0Q9CmZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZDMuZnVuY3RvcihlKSxJKTpjfSxJLm1hcmdpbj0zRGZ1
bj0KY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPTNEdHlwZW9mIGUudG9w
IT0zRCJ1bmRlZmluZWQiP2UudG9wPQo6dC50b3AsdC5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0z
RCJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT0zRHQ9CnlwZW9mIGUuYm90dG9t
IT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD0zRHR5cGVvZiBlLmxlZnQh
PTNEIj0KdW5kZWZpbmVkIj9lLmxlZnQ6dC5sZWZ0LEkpOnR9LEkud2lkdGg9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0PQpoPyhuPTNEZSxJKTpufSxJLmhlaWdodD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZSxJKTpyfSw9CkkueFNjYWxlPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RlLEkpOm99LEkueVNjYWxl
PTNEZnVuYz0KdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsSSk6dX0sSS56
U2NhbGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gPQphcmd1bWVudHMubGVuZ3RoPyhhPTNEZSxJKTph
fSxJLnhEb21haW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmc9CnRoPyhOPTNE
ZSxJKTpOfSxJLnlEb21haW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
Qz0zRGUsSSk6Qz0KfSxJLnNpemVEb21haW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oQT0zRGUsSSk6QX0sSS54UmFuZ2U9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhrPTNEZSxJKTprfSxJLnlSYW5nZT0zRGZ1bmN0aW9uKGUpez0KcmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KEw9M0RlLEkpOkx9LEkuc2l6ZVJhbmdlPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtPQplbnRzLmxlbmd0aD8oTz0zRGUsSSk6T30sSS5mb3JjZVg9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0KPTNEZSxJKTpkfSxJLmZvcmNlWT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PTNEZSxJKTp2fSxJLmZvPQpyY2VT
aXplPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09M0RlLEkpOm19LEku
aW50ZXJhY3RpdmU9M0Q9CmZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPTNE
ZSxJKTpnfSxJLnBvaW50S2V5PTNEZnVuY3Rpb24oZSl7cj0KZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oeT0zRGUsSSk6eX0sSS5wb2ludEFjdGl2ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1PQpt
ZW50cy5sZW5ndGg/KGI9M0RlLEkpOmJ9LEkucGFkRGF0YT0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyg9Cnc9M0RlLEkpOnd9LEkucGFkRGF0YU91dGVyPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlLEkpOj0KRX0sSS5jbGlwRWRnZT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPTNEZSxJKTpTfSxJLmNsaXBWb3Jv
PQpub2k9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD0zRGUsSSk6eH0s
SS51c2VWb3Jvbm9pPTNEZnVuY3Q9CmlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRD0z
RGUsRD0zRD0zRD0zRCExJiYoeD0zRCExKSxJKTpEfSxJLmNsaXBSYT0KZGl1cz0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhUPTNEZSxJKTpUfSxJLmNvbG9yPTNEZnVuY3Rp
b24oPQp0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUudXRpbHMuZ2V0Q29sb3IodCks
SSk6aX0sSS5zaGFwZT0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9
M0RlLEkpOmh9LEkub25seUNpcmNsZXM9M0RmdW5jdGlvbihlKXtyZXR1cj0KbiBhcmd1bWVudHMu
bGVuZ3RoPyhwPTNEZSxJKTpwfSxJLmlkPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/PQoocz0zRGUsSSk6c30sSS5zaW5nbGVQb2ludD0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhNPTNEZSxJKTo9Ck19LEl9LGUubW9kZWxzLnNjYXR0ZXJDaGFydD0z
RGZ1bmN0aW9uKCl7ZnVuY3Rpb24gRihlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aT0Kb24oZSl7ZnVu
Y3Rpb24gSigpe2lmKFQpcmV0dXJuIFcuc2VsZWN0KCIubnYtcG9pbnQtcGF0aHMiKS5zdHlsZSgi
cG9pbnRlci1lPQp2ZW50cyIsImFsbCIpLCExO1cuc2VsZWN0KCIubnYtcG9pbnQtcGF0aHMiKS5z
dHlsZSgicG9pbnRlci1ldmVudHMiLCJub25lIik9Cjt2YXIgaT0zRGQzLm1vdXNlKHRoaXMpO2gu
ZGlzdG9ydGlvbih4KS5mb2N1cyhpWzBdKSxwLmRpc3RvcnRpb24oeCkuZm9jdXMoaT0KWzFdKSxX
LnNlbGVjdCgiLm52LXNjYXR0ZXJXcmFwIikuY2FsbCh0KSxiJiZXLnNlbGVjdCgiLm52LXgubnYt
YXhpcyIpLmNhbGwoPQpuKSx3JiZXLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmNhbGwociksVy5z
ZWxlY3QoIi5udi1kaXN0cmlidXRpb25YIikuZGF0dW09CihlLmZpbHRlcihmdW5jdGlvbihlKXty
ZXR1cm4hZS5kaXNhYmxlZH0pKS5jYWxsKG8pLFcuc2VsZWN0KCIubnYtZGlzdHJpYnV0aT0Kb25Z
IikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbCh1
KX12YXIgQz0zRGQzLnNlPQpsZWN0KHRoaXMpLGs9M0R0aGlzLEw9M0QoZnx8cGFyc2VJbnQoQy5z
dHlsZSgid2lkdGgiKSl8fDk2MCktYS5sZWZ0LWEucmlnaHQ9CixEPTNEKGx8fHBhcnNlSW50KEMu
c3R5bGUoImhlaWdodCIpKXx8NDAwKS1hLnRvcC1hLmJvdHRvbTtGLnVwZGF0ZT0zRGZ1bmN0aT0K
b24oKXtDLmNhbGwoRil9LEYuY29udGFpbmVyPTNEdGhpcyxBLmRpc2FibGVkPTNEZS5tYXAoZnVu
Y3Rpb24oZSl7cmV0dXJuISFlPQouZGlzYWJsZWR9KTtpZighTyl7dmFyIEk7Tz0zRHt9O2ZvcihJ
IGluIEEpQVtJXWluc3RhbmNlb2YgQXJyYXk/T1tJXT0zREFbSV09Ci5zbGljZSgwKTpPW0ldPTNE
QVtJXX1pZighZXx8IWUubGVuZ3RofHwhZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFs
dT0KZXMubGVuZ3RofSkubGVuZ3RoKXt2YXIgcT0zREMuc2VsZWN0QWxsKCIubnYtbm9EYXRhIiku
ZGF0YShbX10pO3JldHVybiBxLmVuPQp0ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIs
Im52ZDMgbnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWw9CmUoInRleHQtYW5jaG9y
IiwibWlkZGxlIikscS5hdHRyKCJ4IixhLmxlZnQrTC8yKS5hdHRyKCJ5IixhLnRvcCtELzIpLnRl
eHQoZj0KdW5jdGlvbihlKXtyZXR1cm4gZX0pLEZ9Qy5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5y
ZW1vdmUoKSxQPTNEUHx8aCxIPTNESHx8PQpwO3ZhciBSPTNEQy5zZWxlY3RBbGwoImcubnYtd3Jh
cC5udi1zY2F0dGVyQ2hhcnQiKS5kYXRhKFtlXSksVT0zRFIuZW50ZXIoKS49CmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LXNjYXR0ZXJDaGFydCBudi1jaGFydC0iK3Qu
aWQoKSksej0KPTNEVS5hcHBlbmQoImciKSxXPTNEUi5zZWxlY3QoImciKTt6LmFwcGVuZCgicmVj
dCIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1iPQphY2tncm91bmQiKSx6LmFwcGVuZCgiZyIpLmF0
dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksei5hcHBlbmQoImciKS5hdHRyKCI9CmNsYXNzIiwi
bnYteSBudi1heGlzIiksei5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXNjYXR0ZXJXcmFw
Iiksei5hcHBlbj0KZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtZGlzdFdyYXAiKSx6LmFwcGVuZCgi
ZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhPQpwIiksei5hcHBlbmQoImciKS5hdHRyKCJj
bGFzcyIsIm52LWNvbnRyb2xzV3JhcCIpO2lmKHkpe3ZhciBYPTNEUz9MLzI6TDtpLnc9CmlkdGgo
WCksUi5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuZGF0dW0oZSkuY2FsbChpKSxhLnRvcCE9M0Rp
LmhlaWdodCgpJiYoYT0KLnRvcD0zRGkuaGVpZ2h0KCksRD0zRChsfHxwYXJzZUludChDLnN0eWxl
KCJoZWlnaHQiKSl8fDQwMCktYS50b3AtYS5ib3R0b20pPQosUi5zZWxlY3QoIi5udi1sZWdlbmRX
cmFwIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKEwtWCkrIiwiKyAtYS50b3A9Cisi
KSIpfVMmJihzLndpZHRoKDE4MCkuY29sb3IoWyIjNDQ0Il0pLFcuc2VsZWN0KCIubnYtY29udHJv
bHNXcmFwIikuZGF0dW0oaj0KKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiKyAtYS50
b3ArIikiKS5jYWxsKHMpKSxSLmF0dHIoInRyYW5zZm9ybSIsPQoidHJhbnNsYXRlKCIrYS5sZWZ0
KyIsIithLnRvcCsiKSIpLEUmJlcuc2VsZWN0KCIubnYteS5udi1heGlzIikuYXR0cigidHJhbnM9
CmZvcm0iLCJ0cmFuc2xhdGUoIitMKyIsMCkiKSx0LndpZHRoKEwpLmhlaWdodChEKS5jb2xvcihl
Lm1hcChmdW5jdGlvbihlLHQpez0KcmV0dXJuIGUuY29sb3J8fGMoZSx0KX0pLmZpbHRlcihmdW5j
dGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkfSkpLGQhPTNEPQo9M0QwJiZ0LnhEb21haW4o
bnVsbCksdiE9M0Q9M0QwJiZ0LnlEb21haW4obnVsbCksUi5zZWxlY3QoIi5udi1zY2F0dGVyV3Jh
cCI9CikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2Fs
bCh0KTtpZihkIT0zRD0zRDApe3Zhcj0KIFY9M0RoLmRvbWFpbigpWzFdLWguZG9tYWluKClbMF07
dC54RG9tYWluKFtoLmRvbWFpbigpWzBdLWQqVixoLmRvbWFpbigpWzFdPQorZCpWXSl9aWYodiE9
M0Q9M0QwKXt2YXIgJD0zRHAuZG9tYWluKClbMV0tcC5kb21haW4oKVswXTt0LnlEb21haW4oW3Au
ZG9tYWk9Cm4oKVswXS12KiQscC5kb21haW4oKVsxXSt2KiRdKX0odiE9M0Q9M0QwfHxkIT0zRD0z
RDApJiZSLnNlbGVjdCgiLm52LXNjYXR0ZT0KcldyYXAiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlv
bihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKS5jYWxsKHQpLGImJihuLnNjYWxlPQooaCkudGlja3Mo
bi50aWNrcygpJiZuLnRpY2tzKCkubGVuZ3RoP24udGlja3MoKTpMLzEwMCkudGlja1NpemUoLUQs
MCksVy5zZWw9CmVjdCgiLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0
ZSgwLCIrcC5yYW5nZSgpWzBdKyIpIikuY2FsbD0KKG4pKSx3JiYoci5zY2FsZShwKS50aWNrcyhy
LnRpY2tzKCkmJnIudGlja3MoKS5sZW5ndGg/ci50aWNrcygpOkQvMzYpLnRpY2tTPQppemUoLUws
MCksVy5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5jYWxsKHIpKSxtJiYoby5nZXREYXRhKHQueCgp
KS5zY2FsZShoKS49CndpZHRoKEwpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUu
Y29sb3J8fGMoZSx0KX0pLmZpbHRlcihmdW5jdGlvbj0KKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJs
ZWR9KSksei5zZWxlY3QoIi5udi1kaXN0V3JhcCIpLmFwcGVuZCgiZyIpLmF0dHIoImNsPQphc3Mi
LCJudi1kaXN0cmlidXRpb25YIiksVy5zZWxlY3QoIi5udi1kaXN0cmlidXRpb25YIikuYXR0cigi
dHJhbnNmb3JtIiwidHI9CmFuc2xhdGUoMCwiK3AucmFuZ2UoKVswXSsiKSIpLmRhdHVtKGUuZmls
dGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfT0KKSkuY2FsbChvKSksZyYmKHUuZ2V0
RGF0YSh0LnkoKSkuc2NhbGUocCkud2lkdGgoRCkuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0PQop
e3JldHVybiBlLmNvbG9yfHxjKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtu
XS5kaXNhYmxlZH0pKSx6LnM9CmVsZWN0KCIubnYtZGlzdFdyYXAiKS5hcHBlbmQoImciKS5hdHRy
KCJjbGFzcyIsIm52LWRpc3RyaWJ1dGlvblkiKSxXLnNlbGVjdD0KKCIubnYtZGlzdHJpYnV0aW9u
WSIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhFP0w6LXUuc2l6ZSgpKSsiLDApIiku
PQpkYXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKS5jYWxsKHUp
KSxkMy5maXNoZXllJiYoVy5zZWw9CmVjdCgiLm52LWJhY2tncm91bmQiKS5hdHRyKCJ3aWR0aCIs
TCkuYXR0cigiaGVpZ2h0IixEKSxXLnNlbGVjdCgiLm52LWJhY2tncj0Kb3VuZCIpLm9uKCJtb3Vz
ZW1vdmUiLEopLFcuc2VsZWN0KCIubnYtYmFja2dyb3VuZCIpLm9uKCJjbGljayIsZnVuY3Rpb24o
KXtUPQo9M0QhVH0pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRDbGljay5mcmVlemVGaXNoZXllIixm
dW5jdGlvbigpe1Q9M0QhVH0pKSxzLmQ9CmlzcGF0Y2gub24oImxlZ2VuZENsaWNrIixmdW5jdGlv
bihlLGkpe2UuZGlzYWJsZWQ9M0QhZS5kaXNhYmxlZCx4PTNEZS5kaXNhYj0KbGVkPzA6Mi41LFcu
c2VsZWN0KCIubnYtYmFja2dyb3VuZCIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsZS5kaXNhYmxl
ZD8ibm9uPQplIjoiYWxsIiksVy5zZWxlY3QoIi5udi1wb2ludC1wYXRocyIpLnN0eWxlKCJwb2lu
dGVyLWV2ZW50cyIsZS5kaXNhYmxlZD8iYWw9CmwiOiJub25lIiksZS5kaXNhYmxlZD8oaC5kaXN0
b3J0aW9uKHgpLmZvY3VzKDApLHAuZGlzdG9ydGlvbih4KS5mb2N1cygwKSxXLj0Kc2VsZWN0KCIu
bnYtc2NhdHRlcldyYXAiKS5jYWxsKHQpLFcuc2VsZWN0KCIubnYteC5udi1heGlzIikuY2FsbChu
KSxXLnNlbGVjPQp0KCIubnYteS5udi1heGlzIikuY2FsbChyKSk6VD0zRCExLEYudXBkYXRlKCl9
KSxpLmRpc3BhdGNoLm9uKCJzdGF0ZUNoYW5nZSI9CixmdW5jdGlvbihlKXtBLmRpc2FibGVkPTNE
ZS5kaXNhYmxlZCxNLnN0YXRlQ2hhbmdlKEEpLEYudXBkYXRlKCl9KSx0LmRpc3BhdD0KY2gub24o
ImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZDMuc2VsZWN0KCIubnYtY2hh
cnQtIit0LmlkKCkrPQoiIC5udi1zZXJpZXMtIitlLnNlcmllc0luZGV4KyIgLm52LWRpc3R4LSIr
ZS5wb2ludEluZGV4KS5hdHRyKCJ5MSIsZnVuY3Rpb249Cih0LG4pe3JldHVybiBlLnBvc1sxXS1E
fSksZDMuc2VsZWN0KCIubnYtY2hhcnQtIit0LmlkKCkrIiAubnYtc2VyaWVzLSIrZS5zZT0Kcmll
c0luZGV4KyIgLm52LWRpc3R5LSIrZS5wb2ludEluZGV4KS5hdHRyKCJ4MiIsZS5wb3NbMF0rby5z
aXplKCkpLGUucG9zPTNEPQpbZS5wb3NbMF0rYS5sZWZ0LGUucG9zWzFdK2EudG9wXSxNLnRvb2x0
aXBTaG93KGUpfSksTS5vbigidG9vbHRpcFNob3ciLGZ1bmM9CnRpb24oZSl7TiYmQihlLGsucGFy
ZW50Tm9kZSl9KSxNLm9uKCJjaGFuZ2VTdGF0ZSIsZnVuY3Rpb24odCl7dHlwZW9mIHQuZGlzYT0K
YmxlZCE9M0QidW5kZWZpbmVkIiYmKGUuZm9yRWFjaChmdW5jdGlvbihlLG4pe2UuZGlzYWJsZWQ9
M0R0LmRpc2FibGVkW25dfSksPQpBLmRpc2FibGVkPTNEdC5kaXNhYmxlZCksRi51cGRhdGUoKX0p
LFA9M0RoLmNvcHkoKSxIPTNEcC5jb3B5KCl9KSxGfXZhciB0PQo9M0RlLm1vZGVscy5zY2F0dGVy
KCksbj0zRGUubW9kZWxzLmF4aXMoKSxyPTNEZS5tb2RlbHMuYXhpcygpLGk9M0RlLm1vZGVscy49
CmxlZ2VuZCgpLHM9M0RlLm1vZGVscy5sZWdlbmQoKSxvPTNEZS5tb2RlbHMuZGlzdHJpYnV0aW9u
KCksdT0zRGUubW9kZWxzLmRpcz0KdHJpYnV0aW9uKCksYT0zRHt0b3A6MzAscmlnaHQ6MjAsYm90
dG9tOjUwLGxlZnQ6NzV9LGY9M0RudWxsLGw9M0RudWxsLGM9M0RlPQoudXRpbHMuZGVmYXVsdENv
bG9yKCksaD0zRGQzLmZpc2hleWU/ZDMuZmlzaGV5ZS5zY2FsZShkMy5zY2FsZS5saW5lYXIpLmRp
c3Q9Cm9ydGlvbigwKTp0LnhTY2FsZSgpLHA9M0RkMy5maXNoZXllP2QzLmZpc2hleWUuc2NhbGUo
ZDMuc2NhbGUubGluZWFyKS5kaXN0bz0KcnRpb24oMCk6dC55U2NhbGUoKSxkPTNEMCx2PTNEMCxt
PTNEITEsZz0zRCExLHk9M0QhMCxiPTNEITAsdz0zRCEwLEU9M0QhMSxTPQo9M0QhIWQzLmZpc2hl
eWUseD0zRDAsVD0zRCExLE49M0QhMCxDPTNEZnVuY3Rpb24oZSx0LG4pe3JldHVybiI8c3Ryb25n
PiIrdCs9CiI8L3N0cm9uZz4ifSxrPTNEZnVuY3Rpb24oZSx0LG4pe3JldHVybiI8c3Ryb25nPiIr
bisiPC9zdHJvbmc+In0sTD0zRG51bGwsQT0KPTNEe30sTz0zRG51bGwsTT0zRGQzLmRpc3BhdGNo
KCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdGVDaGFuZ2UiLCJjPQpoYW5nZVN0YXRl
IiksXz0zRCJObyBEYXRhIEF2YWlsYWJsZS4iLEQ9M0QwO3QueFNjYWxlKGgpLnlTY2FsZShwKSxu
Lm9yaWVudCg9CiJib3R0b20iKS50aWNrUGFkZGluZygxMCksci5vcmllbnQoRT8icmlnaHQiOiJs
ZWZ0IikudGlja1BhZGRpbmcoMTApLG8uYXhpcz0KKCJ4IiksdS5heGlzKCJ5Iikscy51cGRhdGVT
dGF0ZSghMSk7dmFyIFAsSCxCPTNEZnVuY3Rpb24oaSxzKXt2YXIgbz0zRGkucG9zPQpbMF0rKHMu
b2Zmc2V0TGVmdHx8MCksdT0zRGkucG9zWzFdKyhzLm9mZnNldFRvcHx8MCksZj0zRGkucG9zWzBd
KyhzLm9mZnNldEw9CmVmdHx8MCksbD0zRHAucmFuZ2UoKVswXSthLnRvcCsocy5vZmZzZXRUb3B8
fDApLGM9M0RoLnJhbmdlKClbMF0rYS5sZWZ0KyhzLj0Kb2Zmc2V0TGVmdHx8MCksZD0zRGkucG9z
WzFdKyhzLm9mZnNldFRvcHx8MCksdj0zRG4udGlja0Zvcm1hdCgpKHQueCgpKGkucG9pPQpudCxp
LnBvaW50SW5kZXgpKSxtPTNEci50aWNrRm9ybWF0KCkodC55KCkoaS5wb2ludCxpLnBvaW50SW5k
ZXgpKTtDIT0zRG51bGw9CiYmZS50b29sdGlwLnNob3coW2YsbF0sQyhpLnNlcmllcy5rZXksdixt
LGksRiksIm4iLDEscywieC1udnRvb2x0aXAiKSxrIT0zRD0KbnVsbCYmZS50b29sdGlwLnNob3co
W2MsZF0sayhpLnNlcmllcy5rZXksdixtLGksRiksImUiLDEscywieS1udnRvb2x0aXAiKSxMPQoh
PTNEbnVsbCYmZS50b29sdGlwLnNob3coW28sdV0sTChpLnNlcmllcy5rZXksdixtLGksRiksaS52
YWx1ZTwwPyJuIjoicyIsbnU9CmxsLHMpfSxqPTNEW3trZXk6Ik1hZ25pZnkiLGRpc2FibGVkOiEw
fV07cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZT0Kb3V0LnRvb2x0aXAiLGZ1bmN0
aW9uKGUpe00udG9vbHRpcEhpZGUoZSksZDMuc2VsZWN0KCIubnYtY2hhcnQtIit0LmlkKCkrIiAu
PQpudi1zZXJpZXMtIitlLnNlcmllc0luZGV4KyIgLm52LWRpc3R4LSIrZS5wb2ludEluZGV4KS5h
dHRyKCJ5MSIsMCksZDMuc2VsZWM9CnQoIi5udi1jaGFydC0iK3QuaWQoKSsiIC5udi1zZXJpZXMt
IitlLnNlcmllc0luZGV4KyIgLm52LWRpc3R5LSIrZS5wb2ludEluZD0KZXgpLmF0dHIoIngyIix1
LnNpemUoKSl9KSxNLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXtOJiZlLnRvb2x0aXAuY2xl
YW51PQpwKCl9KSxGLmRpc3BhdGNoPTNETSxGLnNjYXR0ZXI9M0R0LEYubGVnZW5kPTNEaSxGLmNv
bnRyb2xzPTNEcyxGLnhBeGlzPTNEbiw9CkYueUF4aXM9M0RyLEYuZGlzdFg9M0RvLEYuZGlzdFk9
M0R1LGQzLnJlYmluZChGLHQsImlkIiwiaW50ZXJhY3RpdmUiLCJwb2ludD0KQWN0aXZlIiwieCIs
InkiLCJzaGFwZSIsInNpemUiLCJ4U2NhbGUiLCJ5U2NhbGUiLCJ6U2NhbGUiLCJ4RG9tYWluIiwi
eURvbWFpPQpuIiwieFJhbmdlIiwieVJhbmdlIiwic2l6ZURvbWFpbiIsInNpemVSYW5nZSIsImZv
cmNlWCIsImZvcmNlWSIsImZvcmNlU2l6ZSI9CiwiY2xpcFZvcm9ub2kiLCJjbGlwUmFkaXVzIiwi
dXNlVm9yb25vaSIpLEYub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYj0KaW5kKEYpLEYu
bWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGEudG9wPTNEdHlw
ZW9mIGUudG9wPQohPTNEInVuZGVmaW5lZCI/ZS50b3A6YS50b3AsYS5yaWdodD0zRHR5cGVvZiBl
LnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ9CjphLnJpZ2h0LGEuYm90dG9tPTNEdHlwZW9m
IGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOmEuYm90dG9tLGEubGVmdD0KPTNEdHlw
ZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6YS5sZWZ0LEYpOmF9LEYud2lkdGg9M0Rm
dW5jdGlvbihlKXtyPQpldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSxGKTpmfSxGLmhlaWdo
dD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHM9Ci5sZW5ndGg/KGw9M0RlLEYpOmx9LEYu
Y29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUudT0KdGls
cy5nZXRDb2xvcih0KSxpLmNvbG9yKGMpLG8uY29sb3IoYyksdS5jb2xvcihjKSxGKTpjfSxGLnNo
b3dEaXN0WD0zRGZ1bmN0PQppb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09M0RlLEYp
Om19LEYuc2hvd0Rpc3RZPTNEZnVuY3Rpb24oZSl7cmV0dXI9Cm4gYXJndW1lbnRzLmxlbmd0aD8o
Zz0zRGUsRik6Z30sRi5zaG93Q29udHJvbHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbj0K
dHMubGVuZ3RoPyhTPTNEZSxGKTpTfSxGLnNob3dMZWdlbmQ9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oPQp5PTNEZSxGKTp5fSxGLnNob3dYQXhpcz0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPTNEZSxGKTpifSw9CkYuc2hvd1lBeGlzPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9M0RlLEYpOnd9LEYucmlnaHRBbGln
bj0KWUF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT0zRGUsci5v
cmllbnQoZT8icmlnaHQiOiJsZWZ0PQoiKSxGKTpFfSxGLmZpc2hleWU9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD0zRGUsRik6eH0sRi54UGE9CmRkaW5nPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9M0RlLEYpOmR9LEYueVBhZGRpbmc9M0Rm
dW5jdD0KaW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PTNEZSxGKTp2fSxGLnRvb2x0
aXBzPTNEZnVuY3Rpb24oZSl7cmV0dXJuPQogYXJndW1lbnRzLmxlbmd0aD8oTj0zRGUsRik6Tn0s
Ri50b29sdGlwQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWU9Cm50cy5sZW5ndGg/
KEw9M0RlLEYpOkx9LEYudG9vbHRpcFhDb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZT0Kbmd0aD8oQz0zRGUsRik6Q30sRi50b29sdGlwWUNvbnRlbnQ9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oPQprPTNEZSxGKTprfSxGLnN0YXRlPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEE9M0RlLEYpOkF9LEYuZGU9CmZhdWx0U3Rh
dGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTz0zRGUsRik6T30sRi5u
b0RhdGE9M0RmdT0KbmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhfPTNEZSxGKTpf
fSxGLnRyYW5zaXRpb25EdXJhdGlvbj0zRGZ1bmN0PQppb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KEQ9M0RlLEYpOkR9LEZ9LGUubW9kZWxzLnNjYXR0ZXJQbHVzTGluZUNoYXI9CnQ9M0Rm
dW5jdGlvbigpe2Z1bmN0aW9uIEIoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXtmdW5jdGlv
biBWKCl7aWYoUylyZT0KdHVybiBVLnNlbGVjdCgiLm52LXBvaW50LXBhdGhzIikuc3R5bGUoInBv
aW50ZXItZXZlbnRzIiwiYWxsIiksITE7VS5zZWxlY3QoPQoiLm52LXBvaW50LXBhdGhzIikuc3R5
bGUoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpO3ZhciBpPTNEZDMubW91c2UodGhpcyk7aC49CmRp
c3RvcnRpb24oRSkuZm9jdXMoaVswXSkscC5kaXN0b3J0aW9uKEUpLmZvY3VzKGlbMV0pLFUuc2Vs
ZWN0KCIubnYtc2NhdHRlcj0KV3JhcCIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVy
biFlLmRpc2FibGVkfSkpLmNhbGwodCksZyYmVS5zZWxlY3QoPQoiLm52LXgubnYtYXhpcyIpLmNh
bGwobikseSYmVS5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5jYWxsKHIpLFUuc2VsZWN0KCIubnY9
Ci1kaXN0cmlidXRpb25YIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlz
YWJsZWR9KSkuY2FsbChvKSxVLj0Kc2VsZWN0KCIubnYtZGlzdHJpYnV0aW9uWSIpLmRhdHVtKGUu
ZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkpPQouY2FsbCh1KX12YXIgVD0z
RGQzLnNlbGVjdCh0aGlzKSxOPTNEdGhpcyxDPTNEKGZ8fHBhcnNlSW50KFQuc3R5bGUoIndpZHRo
Iik9Cil8fDk2MCktYS5sZWZ0LWEucmlnaHQsTT0zRChsfHxwYXJzZUludChULnN0eWxlKCJoZWln
aHQiKSl8fDQwMCktYS50b3AtYS5ibz0KdHRvbTtCLnVwZGF0ZT0zRGZ1bmN0aW9uKCl7VC5jYWxs
KEIpfSxCLmNvbnRhaW5lcj0zRHRoaXMsay5kaXNhYmxlZD0zRGUubWFwPQooZnVuY3Rpb24oZSl7
cmV0dXJuISFlLmRpc2FibGVkfSk7aWYoIUwpe3ZhciBqO0w9M0R7fTtmb3IoaiBpbiBrKWtbal1p
bnN0YW49CmNlb2YgQXJyYXk/TFtqXT0zRGtbal0uc2xpY2UoMCk6TFtqXT0zRGtbal19aWYoIWV8
fCFlLmxlbmd0aHx8IWUuZmlsdGVyKGZ1bj0KY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLmxlbmd0
aH0pLmxlbmd0aCl7dmFyIEY9M0RULnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpPQouZGF0YShbT10p
O3JldHVybiBGLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5v
RGF0YSIpLmE9CnR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIp
LEYuYXR0cigieCIsYS5sZWZ0K0MvMikuYXR0cj0KKCJ5IixhLnRvcCtNLzIpLnRleHQoZnVuY3Rp
b24oZSl7cmV0dXJuIGV9KSxCfVQuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtPQpvdmUoKSxo
PTNEdC54U2NhbGUoKSxwPTNEdC55U2NhbGUoKSxfPTNEX3x8aCxEPTNERHx8cDt2YXIgST0zRFQu
c2VsZWN0QWxsKCI9CmcubnYtd3JhcC5udi1zY2F0dGVyQ2hhcnQiKS5kYXRhKFtlXSkscT0zREku
ZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcz0KIiwibnZkMyBudi13cmFwIG52LXNjYXR0
ZXJDaGFydCBudi1jaGFydC0iK3QuaWQoKSksUj0zRHEuYXBwZW5kKCJnIiksVT0zREkuPQpzZWxl
Y3QoImciKTtSLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1iYWNrZ3JvdW5k
Iikuc3R5bGUoInBvaW49CnRlci1ldmVudHMiLCJub25lIiksUi5hcHBlbmQoImciKS5hdHRyKCJj
bGFzcyIsIm52LXggbnYtYXhpcyIpLFIuYXBwZW5kKCJnIj0KKS5hdHRyKCJjbGFzcyIsIm52LXkg
bnYtYXhpcyIpLFIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1zY2F0dGVyV3JhcCIpPQos
Ui5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXJlZ3Jlc3Npb25MaW5lc1dyYXAiKSxSLmFw
cGVuZCgiZyIpLmF0dHIoImM9Cmxhc3MiLCJudi1kaXN0V3JhcCIpLFIuYXBwZW5kKCJnIikuYXR0
cigiY2xhc3MiLCJudi1sZWdlbmRXcmFwIiksUi5hcHBlbmQoIj0KZyIpLmF0dHIoImNsYXNzIiwi
bnYtY29udHJvbHNXcmFwIiksSS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIithLmxlZnQr
PQoiLCIrYS50b3ArIikiKSxiJiZVLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmF0dHIoInRyYW5z
Zm9ybSIsInRyYW5zbGF0ZSgiK0M9CisiLDApIiksbSYmKGkud2lkdGgoQy8yKSxJLnNlbGVjdCgi
Lm52LWxlZ2VuZFdyYXAiKS5kYXR1bShlKS5jYWxsKGkpLGEudG9wIT0KPTNEaS5oZWlnaHQoKSYm
KGEudG9wPTNEaS5oZWlnaHQoKSxNPTNEKGx8fHBhcnNlSW50KFQuc3R5bGUoImhlaWdodCIpKXx8
NDAwPQopLWEudG9wLWEuYm90dG9tKSxJLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5hdHRyKCJ0
cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIis9CkMvMisiLCIrIC1hLnRvcCsiKSIpKSx3JiYocy53aWR0
aCgxODApLmNvbG9yKFsiIzQ0NCJdKSxVLnNlbGVjdCgiLm52LWNvbnRybz0KbHNXcmFwIikuZGF0
dW0oSCkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIisgLWEudG9wKyIpIikuY2FsbChz
KSksdC53PQppZHRoKEMpLmhlaWdodChNKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVy
biBlLmNvbG9yfHxjKGUsdCl9KS5maWx0ZXI9CihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRp
c2FibGVkfSkpLEkuc2VsZWN0KCIubnYtc2NhdHRlcldyYXAiKS5kYXR1bShlLj0KZmlsdGVyKGZ1
bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkpLmNhbGwodCksSS5zZWxlY3QoIi5udi1yZWdy
ZXNzaW9uTGluPQplc1dyYXAiKS5hdHRyKCJjbGlwLXBhdGgiLCJ1cmwoI252LWVkZ2UtY2xpcC0i
K3QuaWQoKSsiKSIpO3ZhciB6PTNESS5zZWxlY3Q9CigiLm52LXJlZ3Jlc3Npb25MaW5lc1dyYXAi
KS5zZWxlY3RBbGwoIi5udi1yZWdMaW5lcyIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dT0Kcm4gZX0p
O3ouZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXJlZ0xpbmVzIik7dmFyIFc9
M0R6LnNlbGVjdEFsPQpsKCIubnYtcmVnTGluZSIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuW2Vd
fSksWD0zRFcuZW50ZXIoKS5hcHBlbmQoImxpbmUiKS49CmF0dHIoImNsYXNzIiwibnYtcmVnTGlu
ZSIpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMCk7Vy5hdHRyKCJ4MSIsaC5yYW5nZSgpWz0KMF0p
LmF0dHIoIngyIixoLnJhbmdlKClbMV0pLmF0dHIoInkxIixmdW5jdGlvbihlLHQpe3JldHVybiBw
KGguZG9tYWluKClbMF0qPQplLnNsb3BlK2UuaW50ZXJjZXB0KX0pLmF0dHIoInkyIixmdW5jdGlv
bihlLHQpe3JldHVybiBwKGguZG9tYWluKClbMV0qZS5zbG89CnBlK2UuaW50ZXJjZXB0KX0pLnN0
eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gYyhlLG4pfSkuc3R5bGUoInN0cj0K
b2tlLW9wYWNpdHkiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZGlzYWJsZWR8fHR5cGVvZiBlLnNs
b3BlPTNEPTNEInVuZGVmaW5lPQpkInx8dHlwZW9mIGUuaW50ZXJjZXB0PTNEPTNEInVuZGVmaW5l
ZCI/MDoxfSksZyYmKG4uc2NhbGUoaCkudGlja3Mobi50aWNrcyg9Cik/bi50aWNrcygpOkMvMTAw
KS50aWNrU2l6ZSgtTSwwKSxVLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9y
bT0KIiwidHJhbnNsYXRlKDAsIitwLnJhbmdlKClbMF0rIikiKS5jYWxsKG4pKSx5JiYoci5zY2Fs
ZShwKS50aWNrcyhyLnRpY2tzKCk/PQpyLnRpY2tzKCk6TS8zNikudGlja1NpemUoLUMsMCksVS5z
ZWxlY3QoIi5udi15Lm52LWF4aXMiKS5jYWxsKHIpKSxkJiYoby5nZXQ9CkRhdGEodC54KCkpLnNj
YWxlKGgpLndpZHRoKEMpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8
fGMoZT0KLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWR9KSks
Ui5zZWxlY3QoIi5udi1kaXN0V3JhcCIpPQouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1k
aXN0cmlidXRpb25YIiksVS5zZWxlY3QoIi5udi1kaXN0cmlidXRpb25YIik9Ci5hdHRyKCJ0cmFu
c2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK3AucmFuZ2UoKVswXSsiKSIpLmRhdHVtKGUuZmlsdGVyKGZ1
bmN0aW9uKD0KZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbChvKSksdiYmKHUuZ2V0RGF0YSh0
LnkoKSkuc2NhbGUocCkud2lkdGgoTSkuY29sPQpvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVy
biBlLmNvbG9yfHxjKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm49CiFlW25dLmRp
c2FibGVkfSkpLFIuc2VsZWN0KCIubnYtZGlzdFdyYXAiKS5hcHBlbmQoImciKS5hdHRyKCJjbGFz
cyIsIm52LWRpcz0KdHJpYnV0aW9uWSIpLFUuc2VsZWN0KCIubnYtZGlzdHJpYnV0aW9uWSIpLmF0
dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhiPQo/QzotdS5zaXplKCkpKyIsMCkiKS5kYXR1
bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKS5jYWxsKHU9CikpLGQz
LmZpc2hleWUmJihVLnNlbGVjdCgiLm52LWJhY2tncm91bmQiKS5hdHRyKCJ3aWR0aCIsQykuYXR0
cigiaGVpZ2h0IixNKT0KLFUuc2VsZWN0KCIubnYtYmFja2dyb3VuZCIpLm9uKCJtb3VzZW1vdmUi
LFYpLFUuc2VsZWN0KCIubnYtYmFja2dyb3VuZCIpLm9uPQooImNsaWNrIixmdW5jdGlvbigpe1M9
M0QhU30pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRDbGljay5mcmVlemVGaXNoZXllIixmdW49CmN0
aW9uKCl7Uz0zRCFTfSkpLHMuZGlzcGF0Y2gub24oImxlZ2VuZENsaWNrIixmdW5jdGlvbihlLGkp
e2UuZGlzYWJsZWQ9M0QhZT0KLmRpc2FibGVkLEU9M0RlLmRpc2FibGVkPzA6Mi41LFUuc2VsZWN0
KCIubnYtYmFja2dyb3VuZCIpLnN0eWxlKCJwb2ludGVyLWV2PQplbnRzIixlLmRpc2FibGVkPyJu
b25lIjoiYWxsIiksVS5zZWxlY3QoIi5udi1wb2ludC1wYXRocyIpLnN0eWxlKCJwb2ludGVyLWU9
CnZlbnRzIixlLmRpc2FibGVkPyJhbGwiOiJub25lIiksZS5kaXNhYmxlZD8oaC5kaXN0b3J0aW9u
KEUpLmZvY3VzKDApLHAuZGlzdD0Kb3J0aW9uKEUpLmZvY3VzKDApLFUuc2VsZWN0KCIubnYtc2Nh
dHRlcldyYXAiKS5jYWxsKHQpLFUuc2VsZWN0KCIubnYteC5udi1hPQp4aXMiKS5jYWxsKG4pLFUu
c2VsZWN0KCIubnYteS5udi1heGlzIikuY2FsbChyKSk6Uz0zRCExLEIudXBkYXRlKCl9KSxpLmRp
c3A9CmF0Y2gub24oInN0YXRlQ2hhbmdlIixmdW5jdGlvbihlKXtrPTNEZSxBLnN0YXRlQ2hhbmdl
KGspLEIudXBkYXRlKCl9KSx0LmRpcz0KcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRp
cCIsZnVuY3Rpb24oZSl7ZDMuc2VsZWN0KCIubnYtY2hhcnQtIit0LmlkPQooKSsiIC5udi1zZXJp
ZXMtIitlLnNlcmllc0luZGV4KyIgLm52LWRpc3R4LSIrZS5wb2ludEluZGV4KS5hdHRyKCJ5MSIs
ZS5wb3M9ClsxXS1NKSxkMy5zZWxlY3QoIi5udi1jaGFydC0iK3QuaWQoKSsiIC5udi1zZXJpZXMt
IitlLnNlcmllc0luZGV4KyIgLm52LWRpcz0KdHktIitlLnBvaW50SW5kZXgpLmF0dHIoIngyIixl
LnBvc1swXStvLnNpemUoKSksZS5wb3M9M0RbZS5wb3NbMF0rYS5sZWZ0LGUuPQpwb3NbMV0rYS50
b3BdLEEudG9vbHRpcFNob3coZSl9KSxBLm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7eCYm
UChlLE4ucGE9CnJlbnROb2RlKX0pLEEub24oImNoYW5nZVN0YXRlIixmdW5jdGlvbih0KXt0eXBl
b2YgdC5kaXNhYmxlZCE9M0QidW5kZWZpbmVkIj0KJiYoZS5mb3JFYWNoKGZ1bmN0aW9uKGUsbil7
ZS5kaXNhYmxlZD0zRHQuZGlzYWJsZWRbbl19KSxrLmRpc2FibGVkPTNEdC5kaXNhPQpibGVkKSxC
LnVwZGF0ZSgpfSksXz0zRGguY29weSgpLEQ9M0RwLmNvcHkoKX0pLEJ9dmFyIHQ9M0RlLm1vZGVs
cy5zY2F0dGVyKCk9CixuPTNEZS5tb2RlbHMuYXhpcygpLHI9M0RlLm1vZGVscy5heGlzKCksaT0z
RGUubW9kZWxzLmxlZ2VuZCgpLHM9M0RlLm1vZGVscz0KLmxlZ2VuZCgpLG89M0RlLm1vZGVscy5k
aXN0cmlidXRpb24oKSx1PTNEZS5tb2RlbHMuZGlzdHJpYnV0aW9uKCksYT0zRHt0b3A6PQozMCxy
aWdodDoyMCxib3R0b206NTAsbGVmdDo3NX0sZj0zRG51bGwsbD0zRG51bGwsYz0zRGUudXRpbHMu
ZGVmYXVsdENvbG9yKCk9CixoPTNEZDMuZmlzaGV5ZT9kMy5maXNoZXllLnNjYWxlKGQzLnNjYWxl
LmxpbmVhcikuZGlzdG9ydGlvbigwKTp0LnhTY2FsZSgpLD0KcD0zRGQzLmZpc2hleWU/ZDMuZmlz
aGV5ZS5zY2FsZShkMy5zY2FsZS5saW5lYXIpLmRpc3RvcnRpb24oMCk6dC55U2NhbGUoKSxkPQo9
M0QhMSx2PTNEITEsbT0zRCEwLGc9M0QhMCx5PTNEITAsYj0zRCExLHc9M0QhIWQzLmZpc2hleWUs
RT0zRDAsUz0zRCExLHg9M0Q9CiEwLFQ9M0RmdW5jdGlvbihlLHQsbil7cmV0dXJuIjxzdHJvbmc+
Iit0KyI8L3N0cm9uZz4ifSxOPTNEZnVuY3Rpb24oZSx0LG4pez0KcmV0dXJuIjxzdHJvbmc+Iitu
KyI8L3N0cm9uZz4ifSxDPTNEZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIjxoMz4iK2UrIjwvaDM+
PQoiKyI8cD4iK3IrIjwvcD4ifSxrPTNEe30sTD0zRG51bGwsQT0zRGQzLmRpc3BhdGNoKCJ0b29s
dGlwU2hvdyIsInRvb2x0aXBIaWQ9CmUiLCJzdGF0ZUNoYW5nZSIsImNoYW5nZVN0YXRlIiksTz0z
RCJObyBEYXRhIEF2YWlsYWJsZS4iLE09M0QwO3QueFNjYWxlKGgpLj0KeVNjYWxlKHApLG4ub3Jp
ZW50KCJib3R0b20iKS50aWNrUGFkZGluZygxMCksci5vcmllbnQoYj8icmlnaHQiOiJsZWZ0Iiku
dGljPQprUGFkZGluZygxMCksby5heGlzKCJ4IiksdS5heGlzKCJ5Iikscy51cGRhdGVTdGF0ZSgh
MSk7dmFyIF8sRCxQPTNEZnVuY3Rpb249CihpLHMpe3ZhciBvPTNEaS5wb3NbMF0rKHMub2Zmc2V0
TGVmdHx8MCksdT0zRGkucG9zWzFdKyhzLm9mZnNldFRvcHx8MCksZj0zRD0KaS5wb3NbMF0rKHMu
b2Zmc2V0TGVmdHx8MCksbD0zRHAucmFuZ2UoKVswXSthLnRvcCsocy5vZmZzZXRUb3B8fDApLGM9
M0RoLnJhPQpuZ2UoKVswXSthLmxlZnQrKHMub2Zmc2V0TGVmdHx8MCksZD0zRGkucG9zWzFdKyhz
Lm9mZnNldFRvcHx8MCksdj0zRG4udGlja0Y9Cm9ybWF0KCkodC54KCkoaS5wb2ludCxpLnBvaW50
SW5kZXgpKSxtPTNEci50aWNrRm9ybWF0KCkodC55KCkoaS5wb2ludCxpLnBvaT0KbnRJbmRleCkp
O1QhPTNEbnVsbCYmZS50b29sdGlwLnNob3coW2YsbF0sVChpLnNlcmllcy5rZXksdixtLGksQiks
Im4iLDEscywiPQp4LW52dG9vbHRpcCIpLE4hPTNEbnVsbCYmZS50b29sdGlwLnNob3coW2MsZF0s
TihpLnNlcmllcy5rZXksdixtLGksQiksImUiLDE9CixzLCJ5LW52dG9vbHRpcCIpLEMhPTNEbnVs
bCYmZS50b29sdGlwLnNob3coW28sdV0sQyhpLnNlcmllcy5rZXksdixtLGkucG9pbj0KdC50b29s
dGlwLGksQiksaS52YWx1ZTwwPyJuIjoicyIsbnVsbCxzKX0sSD0zRFt7a2V5OiJNYWduaWZ5Iixk
aXNhYmxlZDohMH1dPQo7cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29s
dGlwIixmdW5jdGlvbihlKXtBLnRvb2x0aXBIaWRlKGU9CiksZDMuc2VsZWN0KCIubnYtY2hhcnQt
Iit0LmlkKCkrIiAubnYtc2VyaWVzLSIrZS5zZXJpZXNJbmRleCsiIC5udi1kaXN0eC0iKz0KZS5w
b2ludEluZGV4KS5hdHRyKCJ5MSIsMCksZDMuc2VsZWN0KCIubnYtY2hhcnQtIit0LmlkKCkrIiAu
bnYtc2VyaWVzLSIrZS5zPQplcmllc0luZGV4KyIgLm52LWRpc3R5LSIrZS5wb2ludEluZGV4KS5h
dHRyKCJ4MiIsdS5zaXplKCkpfSksQS5vbigidG9vbHRpcEg9CmlkZSIsZnVuY3Rpb24oKXt4JiZl
LnRvb2x0aXAuY2xlYW51cCgpfSksQi5kaXNwYXRjaD0zREEsQi5zY2F0dGVyPTNEdCxCLmxlZz0K
ZW5kPTNEaSxCLmNvbnRyb2xzPTNEcyxCLnhBeGlzPTNEbixCLnlBeGlzPTNEcixCLmRpc3RYPTNE
byxCLmRpc3RZPTNEdSxkMy5yPQplYmluZChCLHQsImlkIiwiaW50ZXJhY3RpdmUiLCJwb2ludEFj
dGl2ZSIsIngiLCJ5Iiwic2hhcGUiLCJzaXplIiwieFNjYWxlIiw9CiJ5U2NhbGUiLCJ6U2NhbGUi
LCJ4RG9tYWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsInNpemVEb21haW4iLCJzaXpl
Uj0KYW5nZSIsImZvcmNlWCIsImZvcmNlWSIsImZvcmNlU2l6ZSIsImNsaXBWb3Jvbm9pIiwiY2xp
cFJhZGl1cyIsInVzZVZvcm9ub2kiPQopLEIub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMu
YmluZChCKSxCLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmc9CnVtZW50cy5sZW5ndGg/
KGEudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOmEudG9wLGEucmlnaHQ9
M0R0eT0KcGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6YS5yaWdodCxhLmJvdHRv
bT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QiPQp1bmRlZmluZWQiP2UuYm90dG9tOmEuYm90dG9tLGEu
bGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OmE9Ci5sZWZ0LEIpOmF9
LEIud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUsQik6
Zn0sQi5oZT0KaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNE
ZSxCKTpsfSxCLmNvbG9yPTNEZnVuY3Rpb24oPQp0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
Yz0zRGUudXRpbHMuZ2V0Q29sb3IodCksaS5jb2xvcihjKSxvLmNvbG9yKGMpLHU9Ci5jb2xvcihj
KSxCKTpjfSxCLnNob3dEaXN0WD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhkPTNEZSxCKT0KOmR9LEIuc2hvd0Rpc3RZPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KHY9M0RlLEIpOnZ9LEIuc2hvd0NvPQpudHJvbHM9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8odz0zRGUsQik6d30sQi5zaG93TGVnZW5kPTNEZnU9Cm5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0zRGUsQik6bX0sQi5zaG93WEF4aXM9M0Rm
dW5jdGlvbihlKXtyZT0KdHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPTNEZSxCKTpnfSxCLnNob3dZ
QXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVuPQp0cy5sZW5ndGg/KHk9M0RlLEIpOnl9
LEIucmlnaHRBbGlnbllBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW49Cmd0
aD8oYj0zRGUsci5vcmllbnQoZT8icmlnaHQiOiJsZWZ0IiksQik6Yn0sQi5maXNoZXllPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuID0KYXJndW1lbnRzLmxlbmd0aD8oRT0zRGUsQik6RX0sQi50b29sdGlw
cz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuPQpndGg/KHg9M0RlLEIpOnh9LEIu
dG9vbHRpcENvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oQz0K
PTNEZSxCKTpDfSxCLnRvb2x0aXBYQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhUPTNEZSxCPQopOlR9LEIudG9vbHRpcFlDb250ZW50PTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE49M0RlLEIpOk59LEI9Ci5zdGF0ZT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhrPTNEZSxCKTprfSxCLmRlZmF1bHRTdGF0ZT0z
RD0KZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEw9M0RlLEIpOkx9LEIubm9E
YXRhPTNEZnVuY3Rpb24oZSl7cmV0PQp1cm4gYXJndW1lbnRzLmxlbmd0aD8oTz0zRGUsQik6T30s
Qi50cmFuc2l0aW9uRHVyYXRpb249M0RmdW5jdGlvbihlKXtyZXR1cm49CiBhcmd1bWVudHMubGVu
Z3RoPyhNPTNEZSxCKTpNfSxCfSxlLm1vZGVscy5zcGFya2xpbmU9M0RmdW5jdGlvbigpe2Z1bmN0
aW9uID0KZChlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBpPTNEbi10LmxlZnQtdC5y
aWdodCxkPTNEci10LnRvcC10LmJvdHRvPQptLHY9M0RkMy5zZWxlY3QodGhpcyk7cy5kb21haW4o
bHx8ZDMuZXh0ZW50KGUsdSkpLnJhbmdlKGh8fFswLGldKSxvLmRvbWFpbig9CmN8fGQzLmV4dGVu
dChlLGEpKS5yYW5nZShwfHxbZCwwXSk7dmFyIG09M0R2LnNlbGVjdEFsbCgiZy5udi13cmFwLm52
LXNwYXJrbD0KaW5lIikuZGF0YShbZV0pLGc9M0RtLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudmQzIG52LXdyYXAgbnYtc3BhPQpya2xpbmUiKSxiPTNEZy5hcHBlbmQoImciKSx3
PTNEbS5zZWxlY3QoImciKTttLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSg9CiIrdC5sZWZ0
KyIsIit0LnRvcCsiKSIpO3ZhciBFPTNEbS5zZWxlY3RBbGwoInBhdGgiKS5kYXRhKGZ1bmN0aW9u
KGUpe3JldHVybj0KW2VdfSk7RS5lbnRlcigpLmFwcGVuZCgicGF0aCIpLEUuZXhpdCgpLnJlbW92
ZSgpLEUuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oPQplLHQpe3JldHVybiBlLmNvbG9yfHxmKGUs
dCl9KS5hdHRyKCJkIixkMy5zdmcubGluZSgpLngoZnVuY3Rpb24oZSx0KXtyZXR1cm49CiBzKHUo
ZSx0KSl9KS55KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG8oYShlLHQpKX0pKTt2YXIgUz0zRG0uc2Vs
ZWN0QWxsKCJjaXJjbD0KZS5udi1wb2ludCIpLmRhdGEoZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbih0
KXtpZih0IT0zRC0xKXt2YXIgbj0zRGVbdF07cmV0dXJuPQogbi5wb2ludEluZGV4PTNEdCxufXJl
dHVybiBudWxsfXZhciB0PTNEZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShlLHQpfSk9Cixy
PTNEbih0Lmxhc3RJbmRleE9mKG8uZG9tYWluKClbMV0pKSxpPTNEbih0LmluZGV4T2Yoby5kb21h
aW4oKVswXSkpLHM9M0RuKD0KdC5sZW5ndGgtMSk7cmV0dXJuW2kscixzXS5maWx0ZXIoZnVuY3Rp
b24oZSl7cmV0dXJuIGUhPTNEbnVsbH0pfSk7Uy5lbnRlcigpPQouYXBwZW5kKCJjaXJjbGUiKSxT
LmV4aXQoKS5yZW1vdmUoKSxTLmF0dHIoImN4IixmdW5jdGlvbihlLHQpe3JldHVybiBzKHUoZSw9
CmUucG9pbnRJbmRleCkpfSkuYXR0cigiY3kiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG8oYShlLGUu
cG9pbnRJbmRleCkpfSkuYXR0cj0KKCJyIiwyKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXty
ZXR1cm4gdShlLGUucG9pbnRJbmRleCk9M0Q9M0RzLmRvbWFpbigpPQpbMV0/Im52LXBvaW50IG52
LWN1cnJlbnRWYWx1ZSI6YShlLGUucG9pbnRJbmRleCk9M0Q9M0RvLmRvbWFpbigpWzBdPyJudi1w
b2k9Cm50IG52LW1pblZhbHVlIjoibnYtcG9pbnQgbnYtbWF4VmFsdWUifSl9KSxkfXZhciB0PTNE
e3RvcDoyLHJpZ2h0OjAsYm90dG9tOj0KMixsZWZ0OjB9LG49M0Q0MDAscj0zRDMyLGk9M0QhMCxz
PTNEZDMuc2NhbGUubGluZWFyKCksbz0zRGQzLnNjYWxlLmxpbmVhcigpPQosdT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBlLnh9LGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS55fSxmPTNEZS51dGlscy5n
ZXRDb2w9Cm9yKFsiIzAwMCJdKSxsLGMsaCxwO3JldHVybiBkLm9wdGlvbnM9M0RlLnV0aWxzLm9w
dGlvbnNGdW5jLmJpbmQoZCksZC5tYXJnaT0Kbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyh0LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkPQoiP2UudG9wOnQu
dG9wLHQucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OnQucmln
aHQsdC5ib3Q9CnRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTp0
LmJvdHRvbSx0LmxlZnQ9M0R0eXBlb2YgZS5sZT0KZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnQu
bGVmdCxkKTp0fSxkLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50PQpzLmxlbmd0
aD8obj0zRGUsZCk6bn0sZC5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8ocj0zRGU9CixkKTpyfSxkLng9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8odT0zRGQzLmZ1bmN0b3IoZSksZCk6dX0sZD0KLnk9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oYT0zRGQzLmZ1bmN0b3IoZSksZCk6YX0sZC54U2NhbGU9Cj0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPTNEZSxkKTpzfSxkLnlTY2FsZT0z
RGZ1bmN0aW9uKGUpez0KcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RlLGQpOm99LGQueERv
bWFpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVuPQp0cy5sZW5ndGg/KGw9M0RlLGQpOmx9
LGQueURvbWFpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPQo9M0Rl
LGQpOmN9LGQueFJhbmdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9
M0RlLGQpOmh9LGQueVI9CmFuZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8ocD0zRGUsZCk6cH0sZC5hbmltYXRlPTNEZnVuY3Rpbz0KbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oaT0zRGUsZCk6aX0sZC5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1PQpt
ZW50cy5sZW5ndGg/KGY9M0RlLnV0aWxzLmdldENvbG9yKHQpLGQpOmZ9LGR9LGUubW9kZWxzLnNw
YXJrbGluZVBsdXM9M0RmdW49CmN0aW9uKCl7ZnVuY3Rpb24gdihlKXtyZXR1cm4gZS5lYWNoKGZ1
bmN0aW9uKGMpe2Z1bmN0aW9uIE8oKXtpZihhKXJldHVybjt2YT0KciBlPTNEQy5zZWxlY3RBbGwo
Ii5udi1ob3ZlclZhbHVlIikuZGF0YSh1KSxyPTNEZS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIo
PQoiY2xhc3MiLCJudi1ob3ZlclZhbHVlIikuc3R5bGUoInN0cm9rZS1vcGFjaXR5IiwwKS5zdHls
ZSgiZmlsbC1vcGFjaXR5IiwwKTs9CmUuZXhpdCgpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMCku
c3R5bGUoImZpbGwtb3BhY2l0eSIsMCkucmVtb3ZlKCksZS5hdHRyKD0KInRyYW5zZm9ybSIsZnVu
Y3Rpb24oZSl7cmV0dXJuInRyYW5zbGF0ZSgiK3ModC54KCkoY1tlXSxlKSkrIiwwKSJ9KS5zdHls
ZSgiPQpzdHJva2Utb3BhY2l0eSIsMSkuc3R5bGUoImZpbGwtb3BhY2l0eSIsMSk7aWYoIXUubGVu
Z3RoKXJldHVybjtyLmFwcGVuZCgibGk9Cm5lIikuYXR0cigieDEiLDApLmF0dHIoInkxIiwtbi50
b3ApLmF0dHIoIngyIiwwKS5hdHRyKCJ5MiIsYiksci5hcHBlbmQoInRleD0KdCIpLmF0dHIoImNs
YXNzIiwibnYteFZhbHVlIikuYXR0cigieCIsLTYpLmF0dHIoInkiLC1uLnRvcCkuYXR0cigidGV4
dC1hbmNoPQpvciIsImVuZCIpLmF0dHIoImR5IiwiLjllbSIpLEMuc2VsZWN0KCIubnYtaG92ZXJW
YWx1ZSAubnYteFZhbHVlIikudGV4dChmKHQ9Ci54KCkoY1t1WzBdXSx1WzBdKSkpLHIuYXBwZW5k
KCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudi15VmFsdWUiKS5hdHRyKCJ4Iiw2KT0KLmF0dHIoInki
LC1uLnRvcCkuYXR0cigidGV4dC1hbmNob3IiLCJzdGFydCIpLmF0dHIoImR5IiwiLjllbSIpLEMu
c2VsZWN0KCIuPQpudi1ob3ZlclZhbHVlIC5udi15VmFsdWUiKS50ZXh0KGwodC55KCkoY1t1WzBd
XSx1WzBdKSkpfWZ1bmN0aW9uIE0oKXtmdW5jdGk9Cm9uIHIoZSxuKXt2YXIgcj0zRE1hdGguYWJz
KHQueCgpKGVbMF0sMCktbiksaT0zRDA7Zm9yKHZhciBzPTNEMDtzPGUubGVuZ3RoOz0KcysrKU1h
dGguYWJzKHQueCgpKGVbc10scyktbik8ciYmKHI9M0RNYXRoLmFicyh0LngoKShlW3NdLHMpLW4p
LGk9M0RzKTtyZXR1PQpybiBpfWlmKGEpcmV0dXJuO3ZhciBlPTNEZDMubW91c2UodGhpcylbMF0t
bi5sZWZ0O3U9M0RbcihjLE1hdGgucm91bmQocy5pbnY9CmVydChlKSkpXSxPKCl9dmFyIG09M0Rk
My5zZWxlY3QodGhpcyksZz0zRChyfHxwYXJzZUludChtLnN0eWxlKCJ3aWR0aCIpKXx8OT0KNjAp
LW4ubGVmdC1uLnJpZ2h0LGI9M0QoaXx8cGFyc2VJbnQobS5zdHlsZSgiaGVpZ2h0IikpfHw0MDAp
LW4udG9wLW4uYm90dG9tPQo7di51cGRhdGU9M0RmdW5jdGlvbigpe3YoZSl9LHYuY29udGFpbmVy
PTNEdGhpcztpZighY3x8IWMubGVuZ3RoKXt2YXIgdz0zRG09Ci5zZWxlY3RBbGwoIi5udi1ub0Rh
dGEiKS5kYXRhKFtkXSk7cmV0dXJuIHcuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbD0K
YXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2VtIikuc3R5bGUoInRleHQtYW5j
aG9yIiwibWlkZGxlIiksdy5hPQp0dHIoIngiLG4ubGVmdCtnLzIpLmF0dHIoInkiLG4udG9wK2Iv
MikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLHZ9bS5zZWw9CmVjdEFsbCgiLm52LW5vRGF0
YSIpLnJlbW92ZSgpO3ZhciBFPTNEdC55KCkoY1tjLmxlbmd0aC0xXSxjLmxlbmd0aC0xKTtzPTNE
dD0KLnhTY2FsZSgpLG89M0R0LnlTY2FsZSgpO3ZhciBTPTNEbS5zZWxlY3RBbGwoImcubnYtd3Jh
cC5udi1zcGFya2xpbmVwbHVzIikuPQpkYXRhKFtjXSksVD0zRFMuZW50ZXIoKS5hcHBlbmQoImci
KS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1zcGFya2xpbmU9CnBsdXMiKSxOPTNEVC5h
cHBlbmQoImciKSxDPTNEUy5zZWxlY3QoImciKTtOLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwi
bnYtcz0KcGFya2xpbmVXcmFwIiksTi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXZhbHVl
V3JhcCIpLE4uYXBwZW5kKCJnIikuYXR0PQpyKCJjbGFzcyIsIm52LWhvdmVyQXJlYSIpLFMuYXR0
cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrbi5sZWZ0KyIsIituLnRvcCs9CiIpIik7dmFyIGs9
M0RDLnNlbGVjdCgiLm52LXNwYXJrbGluZVdyYXAiKTt0LndpZHRoKGcpLmhlaWdodChiKSxrLmNh
bGwodCk7dj0KYXIgTD0zREMuc2VsZWN0KCIubnYtdmFsdWVXcmFwIiksQT0zREwuc2VsZWN0QWxs
KCIubnYtY3VycmVudFZhbHVlIikuZGF0YShbPQpFXSk7QS5lbnRlcigpLmFwcGVuZCgidGV4dCIp
LmF0dHIoImNsYXNzIiwibnYtY3VycmVudFZhbHVlIikuYXR0cigiZHgiLHA/LTg9Cjo4KS5hdHRy
KCJkeSIsIi45ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLHA/ImVuZCI6InN0YXJ0IiksQS5hdHRy
KCJ4IixnKyhwPz0Kbi5yaWdodDowKSkuYXR0cigieSIsaD9mdW5jdGlvbihlKXtyZXR1cm4gbyhl
KX06MCkuc3R5bGUoImZpbGwiLHQuY29sb3IoKShjPQpbYy5sZW5ndGgtMV0sYy5sZW5ndGgtMSkp
LnRleHQobChFKSksTi5zZWxlY3QoIi5udi1ob3ZlckFyZWEiKS5hcHBlbmQoInJlY3Q9CiIpLm9u
KCJtb3VzZW1vdmUiLE0pLm9uKCJjbGljayIsZnVuY3Rpb24oKXthPTNEIWF9KS5vbigibW91c2Vv
dXQiLGZ1bmN0aW9uKD0KKXt1PTNEW10sTygpfSksQy5zZWxlY3QoIi5udi1ob3ZlckFyZWEgcmVj
dCIpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSl7PQpyZXR1cm4idHJhbnNsYXRlKCIrIC1u
LmxlZnQrIiwiKyAtbi50b3ArIikifSkuYXR0cigid2lkdGgiLGcrbi5sZWZ0K24ucmlnaHQ9Ciku
YXR0cigiaGVpZ2h0IixiK24udG9wKX0pLHZ9dmFyIHQ9M0RlLm1vZGVscy5zcGFya2xpbmUoKSxu
PTNEe3RvcDoxNSxyaWdodD0KOjEwMCxib3R0b206MTAsbGVmdDo1MH0scj0zRG51bGwsaT0zRG51
bGwscyxvLHU9M0RbXSxhPTNEITEsZj0zRGQzLmZvcm1hdCgiPQosciIpLGw9M0RkMy5mb3JtYXQo
IiwuMmYiKSxjPTNEITAsaD0zRCEwLHA9M0QhMSxkPTNEIk5vIERhdGEgQXZhaWxhYmxlLiI7cmU9
CnR1cm4gdi5zcGFya2xpbmU9M0R0LGQzLnJlYmluZCh2LHQsIngiLCJ5IiwieFNjYWxlIiwieVNj
YWxlIiwiY29sb3IiKSx2Lm9wdD0KaW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZCh2KSx2
Lm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMuPQpsZW5ndGg/KG4udG9wPTNE
dHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOm4udG9wLG4ucmlnaHQ9M0R0eXBlb2Yg
ZS49CnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6bi5yaWdodCxuLmJvdHRvbT0zRHR5cGVv
ZiBlLmJvdHRvbSE9M0QidW5kZWZpbj0KZWQiP2UuYm90dG9tOm4uYm90dG9tLG4ubGVmdD0zRHR5
cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0Om4ubGVmdCx2PQopOm59LHYud2lkdGg9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0zRGUsdik6cn0sdi5oZWln
aHQ9M0Q9CmZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPTNEZSx2KTppfSx2
LnhUaWNrRm9ybWF0PTNEZnVuY3Rpb24oZT0KKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0z
RGUsdik6Zn0sdi55VGlja0Zvcm1hdD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhPQpyZ3VtZW50cy5s
ZW5ndGg/KGw9M0RlLHYpOmx9LHYuc2hvd1ZhbHVlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW49Cmd0aD8oYz0zRGUsdik6Y30sdi5hbGlnblZhbHVlPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLD0Kdik6aH0sdi5yaWdodEFsaWduVmFsdWU9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsdik6cH0sPQp2Lm5vRGF0
YT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSx2KTpkfSx2fSxl
Lm1vZGVscy5zdGE9CmNrZWRBcmVhPTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBnKGUpe3JldHVybiBl
LmVhY2goZnVuY3Rpb24oZSl7dmFyIGE9M0RuLXQubD0KZWZ0LXQucmlnaHQsYj0zRHItdC50b3At
dC5ib3R0b20sdz0zRGQzLnNlbGVjdCh0aGlzKTtwPTNEdi54U2NhbGUoKSxkPTNEdi55PQpTY2Fs
ZSgpO3ZhciBFPTNEZTtlLmZvckVhY2goZnVuY3Rpb24oZSx0KXtlLnNlcmllc0luZGV4PTNEdCxl
LnZhbHVlcz0zRGUudmE9Cmx1ZXMubWFwKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUuaW5kZXg9M0Ru
LGUuc2VyaWVzSW5kZXg9M0R0LGV9KX0pO3ZhciBTPTNEZT0KLmZpbHRlcihmdW5jdGlvbihlKXty
ZXR1cm4hZS5kaXNhYmxlZH0pO2U9M0RkMy5sYXlvdXQuc3RhY2soKS5vcmRlcihsKS5vZmZzPQpl
dChmKS52YWx1ZXMoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzfSkueChvKS55KHUpLm91dChm
dW5jdGlvbihlLHQsbil7dmE9CnIgcj0zRHUoZSk9M0Q9M0Q9M0QwPzA6bjtlLmRpc3BsYXk9M0R7
eTpyLHkwOnR9fSkoUyk7dmFyIFQ9M0R3LnNlbGVjdEFsbCgiZz0KLm52LXdyYXAubnYtc3RhY2tl
ZGFyZWEiKS5kYXRhKFtlXSksTj0zRFQuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIs
PQoibnZkMyBudi13cmFwIG52LXN0YWNrZWRhcmVhIiksQz0zRE4uYXBwZW5kKCJkZWZzIiksaz0z
RE4uYXBwZW5kKCJnIiksTD0zRFQ9Ci5zZWxlY3QoImciKTtrLmFwcGVuZCgiZyIpLmF0dHIoImNs
YXNzIiwibnYtYXJlYVdyYXAiKSxrLmFwcGVuZCgiZyIpLmF0dHIoIj0KY2xhc3MiLCJudi1zY2F0
dGVyV3JhcCIpLFQuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdC5sZWZ0KyIsIit0LnRv
cCsiPQopIiksdi53aWR0aChhKS5oZWlnaHQoYikueChvKS55KGZ1bmN0aW9uKGUpe3JldHVybiBl
LmRpc3BsYXkueStlLmRpc3BsYXkueTA9Cn0pLmZvcmNlWShbMF0pLmNvbG9yKGUubWFwKGZ1bmN0
aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGkoZSxlLnNlcmllc0luZGV4KT0KfSkpO3ZhciBBPTNE
TC5zZWxlY3QoIi5udi1zY2F0dGVyV3JhcCIpLmRhdHVtKGUpO0EuY2FsbCh2KSxDLmFwcGVuZCgi
Y2xpcFBhPQp0aCIpLmF0dHIoImlkIiwibnYtZWRnZS1jbGlwLSIrcykuYXBwZW5kKCJyZWN0Iiks
VC5zZWxlY3QoIiNudi1lZGdlLWNsaXAtIis9CnMrIiByZWN0IikuYXR0cigid2lkdGgiLGEpLmF0
dHIoImhlaWdodCIsYiksTC5hdHRyKCJjbGlwLXBhdGgiLGg/InVybCgjbnYtZT0KZGdlLWNsaXAt
IitzKyIpIjoiIik7dmFyIE89M0RkMy5zdmcuYXJlYSgpLngoZnVuY3Rpb24oZSx0KXtyZXR1cm4g
cChvKGUsdCkpPQp9KS55MChmdW5jdGlvbihlKXtyZXR1cm4gZChlLmRpc3BsYXkueTApfSkueTEo
ZnVuY3Rpb24oZSl7cmV0dXJuIGQoZS5kaXNwbGE9CnkueStlLmRpc3BsYXkueTApfSkuaW50ZXJw
b2xhdGUoYyksTT0zRGQzLnN2Zy5hcmVhKCkueChmdW5jdGlvbihlLHQpe3JldHVybj0KIHAobyhl
LHQpKX0pLnkwKGZ1bmN0aW9uKGUpe3JldHVybiBkKGUuZGlzcGxheS55MCl9KS55MShmdW5jdGlv
bihlKXtyZXR1cm4gPQpkKGUuZGlzcGxheS55MCl9KSxfPTNETC5zZWxlY3QoIi5udi1hcmVhV3Jh
cCIpLnNlbGVjdEFsbCgicGF0aC5udi1hcmVhIikuZGE9CnRhKGZ1bmN0aW9uKGUpe3JldHVybiBl
fSk7Xy5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIixmdW5jdGlvbihlLD0KdCl7
cmV0dXJuIm52LWFyZWEgbnYtYXJlYS0iK3R9KS5hdHRyKCJkIixmdW5jdGlvbihlLHQpe3JldHVy
biBNKGUudmFsdWVzLGUuPQpzZXJpZXNJbmRleCl9KS5vbigibW91c2VvdmVyIixmdW5jdGlvbihl
LHQpe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciI9CiwhMCksbS5hcmVhTW91c2VvdmVy
KHtwb2ludDplLHNlcmllczplLmtleSxwb3M6W2QzLmV2ZW50LnBhZ2VYLGQzLmV2ZW50LnBhZz0K
ZVldLHNlcmllc0luZGV4OmUuc2VyaWVzSW5kZXh9KX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24o
ZSx0KXtkMy5zZWxlY3QodGhpPQpzKS5jbGFzc2VkKCJob3ZlciIsITEpLG0uYXJlYU1vdXNlb3V0
KHtwb2ludDplLHNlcmllczplLmtleSxwb3M6W2QzLmV2ZW50LnA9CmFnZVgsZDMuZXZlbnQucGFn
ZVldLHNlcmllc0luZGV4OmUuc2VyaWVzSW5kZXh9KX0pLm9uKCJjbGljayIsZnVuY3Rpb24oZSx0
KT0Ke2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIsITEpLG0uYXJlYUNsaWNrKHtwb2lu
dDplLHNlcmllczplLmtleSxwb3M6PQpbZDMuZXZlbnQucGFnZVgsZDMuZXZlbnQucGFnZVldLHNl
cmllc0luZGV4OmUuc2VyaWVzSW5kZXh9KX0pLF8uZXhpdCgpLnJlbW89CnZlKCksXy5zdHlsZSgi
ZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8aShlLGUuc2VyaWVzSW5kZXgpfSku
c3R5bD0KZSgic3Ryb2tlIixmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxpKGUsZS5zZXJp
ZXNJbmRleCl9KSxfLmF0dHIoImQiLGZ1PQpuY3Rpb24oZSx0KXtyZXR1cm4gTyhlLnZhbHVlcyx0
KX0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIuYXJlYSIsZnU9Cm5jdGlvbihlKXtM
LnNlbGVjdCgiLm52LWNoYXJ0LSIrcysiIC5udi1hcmVhLSIrZS5zZXJpZXNJbmRleCkuY2xhc3Nl
ZCgiaG92ZT0KciIsITApfSksdi5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LmFyZWEiLGZ1
bmN0aW9uKGUpe0wuc2VsZWN0KCIubnYtY2hhPQpydC0iK3MrIiAubnYtYXJlYS0iK2Uuc2VyaWVz
SW5kZXgpLmNsYXNzZWQoImhvdmVyIiwhMSl9KSxnLmQzX3N0YWNrZWRPZmZzZXQ9Cl9zdGFja1Bl
cmNlbnQ9M0RmdW5jdGlvbihlKXt2YXIgdD0zRGUubGVuZ3RoLG49M0RlWzBdLmxlbmd0aCxyPTNE
MS90LGkscyxvLD0KYT0zRFtdO2ZvcihzPTNEMDtzPG47KytzKXtmb3IoaT0zRDAsbz0zRDA7aTxF
Lmxlbmd0aDtpKyspbys9M0R1KEVbaV0udmFsdWVzPQpbc10pO2lmKG8pZm9yKGk9M0QwO2k8dDtp
KyspZVtpXVtzXVsxXS89M0RvO2Vsc2UgZm9yKGk9M0QwO2k8dDtpKyspZVtpXVtzXVs9CjFdPTNE
cn1mb3Iocz0zRDA7czxuOysrcylhW3NdPTNEMDtyZXR1cm4gYX19KSxnfXZhciB0PTNEe3RvcDow
LHJpZ2h0OjAsYm90dD0Kb206MCxsZWZ0OjB9LG49M0Q5NjAscj0zRDUwMCxpPTNEZS51dGlscy5k
ZWZhdWx0Q29sb3IoKSxzPTNETWF0aC5mbG9vcihNYXRoPQoucmFuZG9tKCkqMWU1KSxvPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGUueH0sdT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnl9LGE9M0Q9CiJz
dGFjayIsZj0zRCJ6ZXJvIixsPTNEImRlZmF1bHQiLGM9M0QibGluZWFyIixoPTNEITEscCxkLHY9
M0RlLm1vZGVscy5zY2F0dD0KZXIoKSxtPTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9v
bHRpcEhpZGUiLCJhcmVhQ2xpY2siLCJhcmVhTW91c2VvdmVyPQoiLCJhcmVhTW91c2VvdXQiKTty
ZXR1cm4gdi5zaXplKDIuMikuc2l6ZURvbWFpbihbMi4yLDIuMl0pLHYuZGlzcGF0Y2gub24oImU9
CmxlbWVudENsaWNrLmFyZWEiLGZ1bmN0aW9uKGUpe20uYXJlYUNsaWNrKGUpfSksdi5kaXNwYXRj
aC5vbigiZWxlbWVudE1vdXNlbz0KdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2Uu
cG9zWzBdK3QubGVmdCxlLnBvc1sxXSt0LnRvcF0sbS50b29sdGlwPQpTaG93KGUpfSksdi5kaXNw
YXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe20udG9vbHRpcEhp
ZGU9CihlKX0pLGcuZGlzcGF0Y2g9M0RtLGcuc2NhdHRlcj0zRHYsZDMucmViaW5kKGcsdiwiaW50
ZXJhY3RpdmUiLCJzaXplIiwieFNjYT0KbGUiLCJ5U2NhbGUiLCJ6U2NhbGUiLCJ4RG9tYWluIiwi
eURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsInNpemVEb21haW4iLCJmPQpvcmNlWCIsImZvcmNl
WSIsImZvcmNlU2l6ZSIsImNsaXBWb3Jvbm9pIiwidXNlVm9yb25vaSIsImNsaXBSYWRpdXMiLCJo
aWdobGk9CmdodFBvaW50IiwiY2xlYXJIaWdobGlnaHRzIiksZy5vcHRpb25zPTNEZS51dGlscy5v
cHRpb25zRnVuYy5iaW5kKGcpLGcueD0zRD0KZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KG89M0RkMy5mdW5jdG9yKGUpLGcpOm99LGcueT0zRGZ1bmN0aW9uPQooZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RkMy5mdW5jdG9yKGUpLGcpOnV9LGcubWFyZ2luPTNEZnVu
Y3Rpb24oZSk9CntyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC50b3A9M0R0eXBlb2YgZS50b3Ah
PTNEInVuZGVmaW5lZCI/ZS50b3A6dC50b3AsdD0KLnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNE
InVuZGVmaW5lZCI/ZS5yaWdodDp0LnJpZ2h0LHQuYm90dG9tPTNEdHlwZW9mIGUuPQpib3R0b20h
PTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dC5ib3R0b20sdC5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9
M0QidW5kZWZpbmU9CmQiP2UubGVmdDp0LmxlZnQsZyk6dH0sZy53aWR0aD0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPTNEZT0KLGcpOm59LGcuaGVpZ2h0PTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLGcpOnJ9LGcuY2xpcEVkPQpnZT0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxnKTpofSxnLmNvbG9y
PTNEZnVuY3Rpb24odCk9CntyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUudXRpbHMuZ2V0
Q29sb3IodCksZyk6aX0sZy5vZmZzZXQ9M0RmdW5jdGlvbj0KKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhmPTNEZSxnKTpmfSxnLm9yZGVyPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtPQpl
bnRzLmxlbmd0aD8obD0zRGUsZyk6bH0sZy5zdHlsZT0zRGZ1bmN0aW9uKGUpe2lmKCFhcmd1bWVu
dHMubGVuZ3RoKXJldHVybiA9CmE7YT0zRGU7c3dpdGNoKGEpe2Nhc2Uic3RhY2siOmcub2Zmc2V0
KCJ6ZXJvIiksZy5vcmRlcigiZGVmYXVsdCIpO2JyZWFrO2Nhcz0KZSJzdHJlYW0iOmcub2Zmc2V0
KCJ3aWdnbGUiKSxnLm9yZGVyKCJpbnNpZGUtb3V0Iik7YnJlYWs7Y2FzZSJzdHJlYW0tY2VudGVy
PQoiOmcub2Zmc2V0KCJzaWxob3VldHRlIiksZy5vcmRlcigiaW5zaWRlLW91dCIpO2JyZWFrO2Nh
c2UiZXhwYW5kIjpnLm9mZnNldCg9CiJleHBhbmQiKSxnLm9yZGVyKCJkZWZhdWx0Iik7YnJlYWs7
Y2FzZSJzdGFja19wZXJjZW50IjpnLm9mZnNldChnLmQzX3N0YWNrZT0KZE9mZnNldF9zdGFja1Bl
cmNlbnQpLGcub3JkZXIoImRlZmF1bHQiKX1yZXR1cm4gZ30sZy5pbnRlcnBvbGF0ZT0zRGZ1bmN0
aW9uPQooZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLGcpOmN9LGd9LGUubW9kZWxz
LnN0YWNrZWRBcmVhQ2hhcnQ9M0RmdW49CmN0aW9uKCl7ZnVuY3Rpb24gTSh5KXtyZXR1cm4geS5l
YWNoKGZ1bmN0aW9uKHkpe3ZhciBBPTNEZDMuc2VsZWN0KHRoaXMpLF89Cj0zRHRoaXMsRD0zRChh
fHxwYXJzZUludChBLnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS11LmxlZnQtdS5yaWdodCxQPTNEKGZ8
fHBhcj0Kc2VJbnQoQS5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXUudG9wLXUuYm90dG9tO00udXBk
YXRlPTNEZnVuY3Rpb24oKXtBLmNhbGwoPQpNKX0sTS5jb250YWluZXI9M0R0aGlzLFMuZGlzYWJs
ZWQ9M0R5Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlzYWJsZWR9KTs9CmlmKCF4KXt2YXIg
SDt4PTNEe307Zm9yKEggaW4gUylTW0hdaW5zdGFuY2VvZiBBcnJheT94W0hdPTNEU1tIXS5zbGlj
ZSgwKTp4Wz0KSF09M0RTW0hdfWlmKCF5fHwheS5sZW5ndGh8fCF5LmZpbHRlcihmdW5jdGlvbihl
KXtyZXR1cm4gZS52YWx1ZXMubGVuZ3RofSkuPQpsZW5ndGgpe3ZhciBCPTNEQS5zZWxlY3RBbGwo
Ii5udi1ub0RhdGEiKS5kYXRhKFtUXSk7cmV0dXJuIEIuZW50ZXIoKS5hcHBlbmQ9CigidGV4dCIp
LmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2VtIikuc3R5bGUo
InRleHQtYW5jaD0Kb3IiLCJtaWRkbGUiKSxCLmF0dHIoIngiLHUubGVmdCtELzIpLmF0dHIoInki
LHUudG9wK1AvMikudGV4dChmdW5jdGlvbihlKXtyPQpldHVybiBlfSksTX1BLnNlbGVjdEFsbCgi
Lm52LW5vRGF0YSIpLnJlbW92ZSgpLGI9M0R0LnhTY2FsZSgpLHc9M0R0LnlTY2FsZSg9Cik7dmFy
IGo9M0RBLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LXN0YWNrZWRBcmVhQ2hhcnQiKS5kYXRhKFt5
XSksRj0zRGouZW50ZT0KcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFw
IG52LXN0YWNrZWRBcmVhQ2hhcnQiKS5hcHBlbmQoImciPQopLEk9M0RqLnNlbGVjdCgiZyIpO0Yu
YXBwZW5kKCJyZWN0Iikuc3R5bGUoIm9wYWNpdHkiLDApLEYuYXBwZW5kKCJnIikuYXR0cig9CiJj
bGFzcyIsIm52LXggbnYtYXhpcyIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15IG52
LWF4aXMiKSxGLmFwcGVuZD0KKCJnIikuYXR0cigiY2xhc3MiLCJudi1zdGFja2VkV3JhcCIpLEYu
YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1sZWdlbmRXPQpyYXAiKSxGLmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnYtY29udHJvbHNXcmFwIiksRi5hcHBlbmQoImciKS5hdHRyKCJjbGE9
CnNzIiwibnYtaW50ZXJhY3RpdmUiKSxJLnNlbGVjdCgicmVjdCIpLmF0dHIoIndpZHRoIixEKS5h
dHRyKCJoZWlnaHQiLFApO2lmKD0KaCl7dmFyIHE9M0RjP0QtQzpEO2kud2lkdGgocSksSS5zZWxl
Y3QoIi5udi1sZWdlbmRXcmFwIikuZGF0dW0oeSkuY2FsbChpKSx1PQoudG9wIT0zRGkuaGVpZ2h0
KCkmJih1LnRvcD0zRGkuaGVpZ2h0KCksUD0zRChmfHxwYXJzZUludChBLnN0eWxlKCJoZWlnaHQi
KSk9Cnx8NDAwKS11LnRvcC11LmJvdHRvbSksSS5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuYXR0
cigidHJhbnNmb3JtIiwidHJhbnNsYT0KdGUoIisoRC1xKSsiLCIrIC11LnRvcCsiKSIpfWlmKGMp
e3ZhciBSPTNEW3trZXk6TC5zdGFja2VkfHwiU3RhY2tlZCIsbWV0YUtlPQp5OiJTdGFja2VkIixk
aXNhYmxlZDp0LnN0eWxlKCkhPTNEInN0YWNrIixzdHlsZToic3RhY2sifSx7a2V5Okwuc3RyZWFt
fHwiU3Q9CnJlYW0iLG1ldGFLZXk6IlN0cmVhbSIsZGlzYWJsZWQ6dC5zdHlsZSgpIT0zRCJzdHJl
YW0iLHN0eWxlOiJzdHJlYW0ifSx7a2V5Oj0KTC5leHBhbmRlZHx8IkV4cGFuZGVkIixtZXRhS2V5
OiJFeHBhbmRlZCIsZGlzYWJsZWQ6dC5zdHlsZSgpIT0zRCJleHBhbmQiLHN0PQp5bGU6ImV4cGFu
ZCJ9LHtrZXk6TC5zdGFja19wZXJjZW50fHwiU3RhY2sgJSIsbWV0YUtleToiU3RhY2tfUGVyY2Vu
dCIsZGlzYWI9CmxlZDp0LnN0eWxlKCkhPTNEInN0YWNrX3BlcmNlbnQiLHN0eWxlOiJzdGFja19w
ZXJjZW50In1dO0M9M0RrLmxlbmd0aC8zKjI2MD0KLFI9M0RSLmZpbHRlcihmdW5jdGlvbihlKXty
ZXR1cm4gay5pbmRleE9mKGUubWV0YUtleSkhPTNEPTNELTF9KSxzLndpZHRoKEMpPQouY29sb3Io
WyIjNDQ0IiwiIzQ0NCIsIiM0NDQiXSksSS5zZWxlY3QoIi5udi1jb250cm9sc1dyYXAiKS5kYXR1
bShSKS5jYWxsKHM9CiksdS50b3AhPTNETWF0aC5tYXgocy5oZWlnaHQoKSxpLmhlaWdodCgpKSYm
KHUudG9wPTNETWF0aC5tYXgocy5oZWlnaHQoKSxpLj0KaGVpZ2h0KCkpLFA9M0QoZnx8cGFyc2VJ
bnQoQS5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXUudG9wLXUuYm90dG9tKSxJLnNlbGVjPQp0KCIu
bnYtY29udHJvbHNXcmFwIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIisgLXUudG9w
KyIpIil9ai5hdHRyKCI9CnRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3UubGVmdCsiLCIrdS50b3Ar
IikiKSx2JiZJLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLj0KYXR0cigidHJhbnNmb3JtIiwidHJh
bnNsYXRlKCIrRCsiLDApIiksbSYmKG8ud2lkdGgoRCkuaGVpZ2h0KFApLm1hcmdpbih7bGVmPQp0
OnUubGVmdCx0b3A6dS50b3B9KS5zdmdDb250YWluZXIoQSkueFNjYWxlKGIpLGouc2VsZWN0KCIu
bnYtaW50ZXJhY3RpdmUiKS49CmNhbGwobykpLHQud2lkdGgoRCkuaGVpZ2h0KFApO3ZhciBVPTNE
SS5zZWxlY3QoIi5udi1zdGFja2VkV3JhcCIpLmRhdHVtKHkpOz0KVS5jYWxsKHQpLHAmJihuLnNj
YWxlKGIpLnRpY2tzKEQvMTAwKS50aWNrU2l6ZSgtUCwwKSxJLnNlbGVjdCgiLm52LXgubnYtYXhp
PQpzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitQKyIpIiksSS5zZWxlY3QoIi5u
di14Lm52LWF4aXMiKS5jYWxsKG49CikpLGQmJihyLnNjYWxlKHcpLnRpY2tzKHQub2Zmc2V0KCk9
M0Q9M0Qid2lnZ2xlIj8wOlAvMzYpLnRpY2tTaXplKC1ELDApLnNldD0KVGlja0Zvcm1hdCh0LnN0
eWxlKCk9M0Q9M0QiZXhwYW5kInx8dC5zdHlsZSgpPTNEPTNEInN0YWNrX3BlcmNlbnQiP2QzLmZv
cm1hPQp0KCIlIik6RSksSS5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5jYWxsKHIpKSx0LmRpc3Bh
dGNoLm9uKCJhcmVhQ2xpY2sudG9nZ2w9CmUiLGZ1bmN0aW9uKGUpe3kuZmlsdGVyKGZ1bmN0aW9u
KGUpe3JldHVybiFlLmRpc2FibGVkfSkubGVuZ3RoPTNEPTNEPTNEMT95Lj0KZm9yRWFjaChmdW5j
dGlvbihlKXtlLmRpc2FibGVkPTNEITF9KTp5LmZvckVhY2goZnVuY3Rpb24odCxuKXt0LmRpc2Fi
bGVkPTNEPQpuIT0zRGUuc2VyaWVzSW5kZXh9KSxTLmRpc2FibGVkPTNEeS5tYXAoZnVuY3Rpb24o
ZSl7cmV0dXJuISFlLmRpc2FibGVkfSksTi49CnN0YXRlQ2hhbmdlKFMpLE0udXBkYXRlKCl9KSxp
LmRpc3BhdGNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24oZSl7Uy5kaXNhYj0KbGVkPTNEZS5k
aXNhYmxlZCxOLnN0YXRlQ2hhbmdlKFMpLE0udXBkYXRlKCl9KSxzLmRpc3BhdGNoLm9uKCJsZWdl
bmRDbGljayIsPQpmdW5jdGlvbihlLG4pe2lmKCFlLmRpc2FibGVkKXJldHVybjtSPTNEUi5tYXAo
ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJsZWQ9Cj0zRCEwLGV9KSxlLmRpc2FibGVkPTNEITEs
dC5zdHlsZShlLnN0eWxlKSxTLnN0eWxlPTNEdC5zdHlsZSgpLE4uc3RhdGVDaGFuZz0KZShTKSxN
LnVwZGF0ZSgpfSksby5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlbW92ZSIsZnVuY3Rpb24oaSl7
dC5jbGVhckhpZ2hsPQppZ2h0cygpO3ZhciBzLGEsZixjPTNEW107eS5maWx0ZXIoZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gZS5zZXJpZXNJbmRleD0zRHQsIWU9Ci5kaXNhYmxlZH0pLmZvckVhY2goZnVu
Y3Rpb24obixyKXthPTNEZS5pbnRlcmFjdGl2ZUJpc2VjdChuLnZhbHVlcyxpLnBvaW50WD0KVmFs
dWUsTS54KCkpLHQuaGlnaGxpZ2h0UG9pbnQocixhLCEwKTt2YXIgbz0zRG4udmFsdWVzW2FdO2lm
KHR5cGVvZiBvPTNEPTNEPQoidW5kZWZpbmVkIilyZXR1cm47dHlwZW9mIHM9M0Q9M0QidW5kZWZp
bmVkIiYmKHM9M0RvKSx0eXBlb2YgZj0zRD0zRCJ1bmRlZmk9Cm5lZCImJihmPTNETS54U2NhbGUo
KShNLngoKShvLGEpKSk7dmFyIHU9M0R0LnN0eWxlKCk9M0Q9M0QiZXhwYW5kIj9vLmRpc3BsYT0K
eS55Ok0ueSgpKG8sYSk7Yy5wdXNoKHtrZXk6bi5rZXksdmFsdWU6dSxjb2xvcjpsKG4sbi5zZXJp
ZXNJbmRleCksc3RhY2tlZFZhPQpsdWU6by5kaXNwbGF5fSl9KSxjLnJldmVyc2UoKTtpZihjLmxl
bmd0aD4yKXt2YXIgaD0zRE0ueVNjYWxlKCkuaW52ZXJ0KGkubW89CnVzZVkpLHA9M0RJbmZpbml0
eSxkPTNEbnVsbDtjLmZvckVhY2goZnVuY3Rpb24oZSx0KXtoPTNETWF0aC5hYnMoaCk7dmFyIG49
Cj0zRE1hdGguYWJzKGUuc3RhY2tlZFZhbHVlLnkwKSxyPTNETWF0aC5hYnMoZS5zdGFja2VkVmFs
dWUueSk7aWYoaD49M0RuJiZoPD0KPTNEcituKXtkPTNEdDtyZXR1cm59fSksZCE9M0RudWxsJiYo
Y1tkXS5oaWdobGlnaHQ9M0QhMCl9dmFyIHY9M0RuLnRpY2tGb3JtPQphdCgpKE0ueCgpKHMsYSkp
LG09M0R0LnN0eWxlKCk9M0Q9M0QiZXhwYW5kIj9mdW5jdGlvbihlLHQpe3JldHVybiBkMy5mb3Jt
YXQ9CigiLjElIikoZSl9OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIudGlja0Zvcm1hdCgpKGUpfTtv
LnRvb2x0aXAucG9zaXRpb24oe2xlZj0KdDpmK3UubGVmdCx0b3A6aS5tb3VzZVkrdS50b3B9KS5j
aGFydENvbnRhaW5lcihfLnBhcmVudE5vZGUpLmVuYWJsZWQoZykudmFsPQp1ZUZvcm1hdHRlciht
KS5kYXRhKHt2YWx1ZTp2LHNlcmllczpjfSkoKSxvLnJlbmRlckd1aWRlTGluZShmKX0pLG8uZGlz
cGF0Y2g9Ci5vbigiZWxlbWVudE1vdXNlb3V0IixmdW5jdGlvbihlKXtOLnRvb2x0aXBIaWRlKCks
dC5jbGVhckhpZ2hsaWdodHMoKX0pLE4ubz0KbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe2cm
Jk8oZSxfLnBhcmVudE5vZGUpfSksTi5vbigiY2hhbmdlU3RhdGUiLGZ1bmN0PQppb24oZSl7dHlw
ZW9mIGUuZGlzYWJsZWQhPTNEInVuZGVmaW5lZCImJnkubGVuZ3RoPTNEPTNEPTNEZS5kaXNhYmxl
ZC5sZW5ndGg9CiYmKHkuZm9yRWFjaChmdW5jdGlvbih0LG4pe3QuZGlzYWJsZWQ9M0RlLmRpc2Fi
bGVkW25dfSksUy5kaXNhYmxlZD0zRGUuZGlzYT0KYmxlZCksdHlwZW9mIGUuc3R5bGUhPTNEInVu
ZGVmaW5lZCImJnQuc3R5bGUoZS5zdHlsZSksTS51cGRhdGUoKX0pfSksTX12YXIgPQp0PTNEZS5t
b2RlbHMuc3RhY2tlZEFyZWEoKSxuPTNEZS5tb2RlbHMuYXhpcygpLHI9M0RlLm1vZGVscy5heGlz
KCksaT0zRGUubW89CmRlbHMubGVnZW5kKCkscz0zRGUubW9kZWxzLmxlZ2VuZCgpLG89M0RlLmlu
dGVyYWN0aXZlR3VpZGVsaW5lKCksdT0zRHt0b3A6Mz0KMCxyaWdodDoyNSxib3R0b206NTAsbGVm
dDo2MH0sYT0zRG51bGwsZj0zRG51bGwsbD0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCksPQpjPTNE
ITAsaD0zRCEwLHA9M0QhMCxkPTNEITAsdj0zRCExLG09M0QhMSxnPTNEITAseT0zRGZ1bmN0aW9u
KGUsdCxuLHIsaSl7cmU9CnR1cm4iPGgzPiIrZSsiPC9oMz4iKyI8cD4iK24rIiBvbiAiK3QrIjwv
cD4ifSxiLHcsRT0zRGQzLmZvcm1hdCgiLC4yZiIpLFM9Cj0zRHtzdHlsZTp0LnN0eWxlKCl9LHg9
M0RudWxsLFQ9M0QiTm8gRGF0YSBBdmFpbGFibGUuIixOPTNEZDMuZGlzcGF0Y2goInRvbz0KbHRp
cFNob3ciLCJ0b29sdGlwSGlkZSIsInN0YXRlQ2hhbmdlIiwiY2hhbmdlU3RhdGUiKSxDPTNEMjUw
LGs9M0RbIlN0YWNrZWQiPQosIlN0cmVhbSIsIkV4cGFuZGVkIl0sTD0zRHt9LEE9M0QwO24ub3Jp
ZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg3KSxyLm9yaWU9Cm50KHY/InJpZ2h0IjoibGVmdCIp
LHMudXBkYXRlU3RhdGUoITEpO3ZhciBPPTNEZnVuY3Rpb24oaSxzKXt2YXIgbz0zRGkucG9zWz0K
MF0rKHMub2Zmc2V0TGVmdHx8MCksdT0zRGkucG9zWzFdKyhzLm9mZnNldFRvcHx8MCksYT0zRG4u
dGlja0Zvcm1hdCgpKHQueCgpPQooaS5wb2ludCxpLnBvaW50SW5kZXgpKSxmPTNEci50aWNrRm9y
bWF0KCkodC55KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKSxsPQo9M0R5KGkuc2VyaWVzLmtleSxh
LGYsaSxNKTtlLnRvb2x0aXAuc2hvdyhbbyx1XSxsLGkudmFsdWU8MD8ibiI6InMiLG51bGwscyk9
Cn07cmV0dXJuIHQuZGlzcGF0Y2gub24oInRvb2x0aXBTaG93IixmdW5jdGlvbihlKXtlLnBvcz0z
RFtlLnBvc1swXSt1LmxlZnQsZT0KLnBvc1sxXSt1LnRvcF0sTi50b29sdGlwU2hvdyhlKX0pLHQu
ZGlzcGF0Y2gub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbihlKXtOPQoudG9vbHRpcEhpZGUoZSl9
KSxOLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXtnJiZlLnRvb2x0aXAuY2xlYW51cCgpfSks
TS49CmRpc3BhdGNoPTNETixNLnN0YWNrZWQ9M0R0LE0ubGVnZW5kPTNEaSxNLmNvbnRyb2xzPTNE
cyxNLnhBeGlzPTNEbixNLnlBeGlzPQo9M0RyLE0uaW50ZXJhY3RpdmVMYXllcj0zRG8sZDMucmVi
aW5kKE0sdCwieCIsInkiLCJzaXplIiwieFNjYWxlIiwieVNjYWxlIiw9CiJ4RG9tYWluIiwieURv
bWFpbiIsInhSYW5nZSIsInlSYW5nZSIsInNpemVEb21haW4iLCJpbnRlcmFjdGl2ZSIsInVzZVZv
cm9ubz0KaSIsIm9mZnNldCIsIm9yZGVyIiwic3R5bGUiLCJjbGlwRWRnZSIsImZvcmNlWCIsImZv
cmNlWSIsImZvcmNlU2l6ZSIsImludGVyPQpwb2xhdGUiKSxNLm9wdGlvbnM9M0RlLnV0aWxzLm9w
dGlvbnNGdW5jLmJpbmQoTSksTS5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXQ9CnVybiBhcmd1bWVu
dHMubGVuZ3RoPyh1LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDp1LnRv
cCx1LnJpZz0KaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OnUucmln
aHQsdS5ib3R0b209M0R0eXBlb2YgZS5ib3R0PQpvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTp1
LmJvdHRvbSx1LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2U9Ci5sZWZ0OnUu
bGVmdCxNKTp1fSxNLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGE9M0RlLE0pOj0KYX0sTS5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oZj0zRGUsTSk6Zn0sTS5jb2xvcj0zRGZ1PQpuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGw9M0RlLnV0aWxzLmdldENvbG9yKG4pLGkuY29sb3IobCksdC5jb2w9Cm9yKGwp
LE0pOmx9LE0uc2hvd0NvbnRyb2xzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGM9M0RlLE0pOj0KY30sTS5zaG93TGVnZW5kPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGg9M0RlLE0pOmh9LE0uc2hvd1hBPQp4aXM9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsTSk6cH0sTS5zaG93WUF4aXM9M0RmdW5jdGk9Cm9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSxNKTpkfSxNLnJpZ2h0QWxpZ25ZQXhp
cz0zRGZ1bmN0aW9uKGUpez0KcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9M0RlLHIub3JpZW50
KGU/InJpZ2h0IjoibGVmdCIpLE0pOnZ9LE0udXNlSW50ZXJhPQpjdGl2ZUd1aWRlbGluZT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNEZSxlPTNEPTNEPTNEITAmJig9
Ck0uaW50ZXJhY3RpdmUoITEpLE0udXNlVm9yb25vaSghMSkpLE0pOm19LE0udG9vbHRpcD0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcj0KZ3VtZW50cy5sZW5ndGg/KHk9M0RlLE0pOnl9LE0udG9vbHRp
cHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0PQpoPyhnPTNEZSxNKTpnfSxN
LnRvb2x0aXBDb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9
M0Q9CmUsTSk6eX0sTS5zdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhTPTNEZSxNKTpTfSxNLmRlZmF1bD0KdFN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHg9M0RlLE0pOnh9LE0ubm9EYXRhPTNEZnVuY3RpPQpvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oVD0zRGUsTSk6VH0sTS50cmFuc2l0aW9uRHVyYXRpb249M0RmdW5j
dGlvbig9CmUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhBPTNEZSxNKTpBfSxNLmNvbnRyb2xz
RGF0YT0zRGZ1bmN0aW9uKGUpe3JldHVybj0KIGFyZ3VtZW50cy5sZW5ndGg/KGs9M0RlLE0pOmt9
LE0uY29udHJvbExhYmVscz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVuPQp0cy5sZW5ndGg/
dHlwZW9mIGUhPTNEIm9iamVjdCI/TDooTD0zRGUsTSk6TH0sci5zZXRUaWNrRm9ybWF0PTNEci50
aWNrRm9ybWE9CnQsci50aWNrRm9ybWF0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KEU9M0RlLHIpOkV9LE19fSgpLGRlZj0KaW5lKCJwbHVnaW4vcGx1Z2lucy9udmQzL252
LmQzIixmdW5jdGlvbigpe30pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9udmQzL2NvPQptbW9uL2Nv
bmZpZyIsWyJwbHVnaW4vY2hhcnRzL2Zvcm1zL2RlZmF1bHQiLCJwbHVnaW4vcGx1Z2lucy9udmQz
L252LmQzIl0sZnU9Cm5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6IiIs
Y2F0ZWdvcnk6IiIsbGlicmFyeToiTlZEMyIsdGFnOj0KInN2ZyIsa2V5d29yZHM6InNtYWxsIn0p
fSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252ZDMvYmFyL2NvbmZpZyIsWyJwbHVnaW4vPQpjaGFy
dHMvbnZkMy9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9
LGUse3RpdGxlOiJSZWc9CnVsYXIiLGNhdGVnb3J5OiJCYXIgZGlhZ3JhbXMiLGNvbHVtbnM6e3g6
e3RpdGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbGFiZT0KbDohMCxpc19hdXRvOiEwLGlzX3Vu
aXF1ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1lcmljOiEwfX19PQop
fSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252ZDMvYmFyX3N0YWNrZWQvY29uZmlnIixbInBsdWdp
bi9jaGFydHMvbnZkMy9jb209Cm1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRl
bmQoITAse30sZSx7dGl0bGU6IlN0YWNrZWQiLGNhdGVnb3J5Oj0KIkJhciBkaWFncmFtcyIsY29s
dW1uczp7eDp7dGl0bGU6IlZhbHVlcyBmb3IgeC1heGlzIixpc19sYWJlbDohMCxpc19hdXRvOiEw
PQosaXNfdW5pcXVlOiEwfSx5Ont0aXRsZToiVmFsdWVzIGZvciB5LWF4aXMiLGlzX251bWVyaWM6
ITB9fX0pfSksZGVmaW5lKCJwbHU9Cmdpbi9jaGFydHMvbnZkMy9iYXJfaG9yaXpvbnRhbC9jb25m
aWciLFsicGx1Z2luL2NoYXJ0cy9udmQzL2NvbW1vbi9jb25maWciXT0KLGZ1bmN0aW9uKGUpe3Jl
dHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiSG9yaXpvbnRhbCIsY2F0ZWdvcnk6IkJhciBk
aWFnPQpyYW1zIixzZXR0aW5nczp7eF9heGlzX3R5cGU6e2luaXQ6ImhpZGUifX0sY29sdW1uczp7
eDp7dGl0bGU6IlZhbHVlcyBmb3IgeC09CmF4aXMiLGlzX2xhYmVsOiEwLGlzX2F1dG86ITAsaXNf
dW5pcXVlOiEwfSx5Ont0aXRsZToiVmFsdWVzIGZvciB5LWF4aXMiLGlzXz0KbnVtZXJpYzohMH19
fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvbnZkMy9iYXJfaG9yaXpvbnRhbF9zdGFja2VkL2Nv
bmZpZyIsPQpbInBsdWdpbi9jaGFydHMvbnZkMy9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7
cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3Q9Cml0bGU6IlN0YWNrZWQgaG9yaXpvbnRhbCIsY2F0
ZWdvcnk6IkJhciBkaWFncmFtcyIsc2V0dGluZ3M6e3hfYXhpc190eXBlOntpbj0KaXQ6ImhpZGUi
fX0sY29sdW1uczp7eDp7dGl0bGU6IlZhbHVlcyBmb3IgeC1heGlzIixpc19sYWJlbDohMCxpc19h
dXRvOiEwLGlzPQpfdW5pcXVlOiEwfSx5Ont0aXRsZToiVmFsdWVzIGZvciB5LWF4aXMiLGlzX251
bWVyaWM6ITB9fX0pfSksZGVmaW5lKCJwbHVnaW49Ci9jaGFydHMvbnZkMy9saW5lX2ZvY3VzL2Nv
bmZpZyIsWyJwbHVnaW4vY2hhcnRzL252ZDMvY29tbW9uL2NvbmZpZyJdLGZ1bmN0aT0Kb24oZSl7
cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJMaW5lIHdpdGggZm9jdXMiLGNhdGVnb3J5
OiJPdGhlcnMiLHpvPQpvbWFibGU6Im5hdGl2ZSIsY29sdW1uczp7eDp7dGl0bGU6IlZhbHVlcyBm
b3IgeC1heGlzIixpc19sYWJlbDohMCxpc19hdXRvOiE9CjAsaXNfdW5pcXVlOiEwfSx5Ont0aXRs
ZToiVmFsdWVzIGZvciB5LWF4aXMiLGlzX251bWVyaWM6ITB9fX0pfSksZGVmaW5lKCJwbD0KdWdp
bi9jaGFydHMvbnZkMy9waWUvY29uZmlnIixbInBsdWdpbi9wbHVnaW5zL252ZDMvbnYuZDMiXSxm
dW5jdGlvbigpe3JldHVyPQpuICQuZXh0ZW5kKCEwLHt9LHt0aXRsZToiUGllIGNoYXJ0IixjYXRl
Z29yeToiQXJlYSBjaGFydHMiLGxpYnJhcnk6Ik5WRDMiLHQ9CmFnOiJzdmciLGtleXdvcmRzOiJz
bWFsbCIsY29sdW1uczp7bGFiZWw6e3RpdGxlOiJMYWJlbHMiLGlzX2xhYmVsOiEwLGlzX2F1dD0K
bzohMH0seTp7dGl0bGU6IlZhbHVlcyIsaXNfbnVtZXJpYzohMH19LHNldHRpbmdzOnttYWluX3Nl
cGFyYXRvcjp7dHlwZToic2VwPQphcmF0b3IiLHRpdGxlOiJQaWUgY2hhcnQgc2V0dGluZ3MifSxk
b251dF9yYXRpbzp7dGl0bGU6IkRvbnV0IHJhdGlvIixpbmZvOiI9CkRldGVybWluZSBob3cgbGFy
Z2UgdGhlIGRvbnV0IGhvbGUgd2lsbCBiZS4iLHR5cGU6InNlbGVjdCIsaW5pdDoiMC41IixkYXRh
Oj0KW3tsYWJlbDoiNTAlIix2YWx1ZToiMC41In0se2xhYmVsOiIyNSUiLHZhbHVlOiIwLjI1In0s
e2xhYmVsOiIxMCUiLHZhbHVlOiIwPQouMTAifSx7bGFiZWw6IjAlIix2YWx1ZToiMCJ9XX0sc2hv
d19sZWdlbmQ6e3RpdGxlOiJTaG93IGxlZ2VuZCIsaW5mbzoiV291bGQ9CiB5b3UgbGlrZSB0byBh
ZGQgYSBsZWdlbmQ/Iix0eXBlOiJyYWRpb2J1dHRvbiIsaW5pdDoiZmFsc2UiLGRhdGE6W3tsYWJl
bDoiWT0KZXMiLHZhbHVlOiJ0cnVlIn0se2xhYmVsOiJObyIsdmFsdWU6ImZhbHNlIn1dfSxsYWJl
bF9zZXBhcmF0b3I6e3R5cGU6InNlcGFyPQphdG9yIix0aXRsZToiTGFiZWwgc2V0dGluZ3MifSxs
YWJlbF90eXBlOnt0aXRsZToiRG9udXQgbGFiZWwiLGluZm86IldoYXQgd289CnVsZCB5b3UgbGlr
ZSB0byBzaG93IGZvciBlYWNoIHNsaWNlPyIsdHlwZToic2VsZWN0Iixpbml0OiJwZXJjZW50Iixk
YXRhOlt7bD0KYWJlbDoiLS0gTm90aGluZyAtLSIsdmFsdWU6ImhpZGUiLGhpZGU6ImxhYmVsX291
dHNpZGUifSx7bGFiZWw6IkxhYmVsIGNvbHVtPQpuIix2YWx1ZToia2V5IixzaG93OiJsYWJlbF9v
dXRzaWRlIn0se2xhYmVsOiJWYWx1ZSBjb2x1bW4iLHZhbHVlOiJ2YWx1ZSIsc2g9Cm93OiJsYWJl
bF9vdXRzaWRlIn0se2xhYmVsOiJQZXJjZW50YWdlIix2YWx1ZToicGVyY2VudCIsc2hvdzoibGFi
ZWxfb3V0c2lkZT0KIn1dfSxsYWJlbF9vdXRzaWRlOnt0aXRsZToiU2hvdyBvdXRzaWRlIixpbmZv
OiJXb3VsZCB5b3UgbGlrZSB0byBzaG93IGxhYmVsPQpzIG91dHNpZGUgdGhlIGRvbnV0PyIsdHlw
ZToicmFkaW9idXR0b24iLGluaXQ6ImZhbHNlIixkYXRhOlt7bGFiZWw6IlllcyIsdmE9Cmx1ZToi
dHJ1ZSJ9LHtsYWJlbDoiTm8iLHZhbHVlOiJmYWxzZSJ9XX0sdXNlX3BhbmVsczp7aW5pdDoidHJ1
ZSIsaGlkZTohMH19fT0KKX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9udmQzL3N0YWNrZWRhcmVh
X2Z1bGwvY29uZmlnIixbInBsdWdpbi9jaGFydHMvbnZkPQozL2NvbW1vbi9jb25maWciXSxmdW5j
dGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6IkV4cGFuZGVkIix6b289Cm1h
YmxlOiEwLGNhdGVnb3J5OiJBcmVhIGNoYXJ0cyIsa2V5d29yZHM6ImRlZmF1bHQgc21hbGwiLGNv
bHVtbnM6e3g6e3RpdGxlOj0KIlZhbHVlcyBmb3IgeC1heGlzIixpc19sYWJlbDohMCxpc19hdXRv
OiEwLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmPQpvciB5LWF4aXMiLGlzX251bWVy
aWM6ITB9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252ZDMvc3RhY2tlZGFyZWFfc3RyZWE9
Cm0vY29uZmlnIixbInBsdWdpbi9jaGFydHMvbnZkMy9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24o
ZSl7cmV0dXJuICQuZXh0ZW5kKD0KITAse30sZSx7dGl0bGU6IlN0cmVhbSIsY2F0ZWdvcnk6IkFy
ZWEgY2hhcnRzIix6b29tYWJsZTohMCxrZXl3b3JkczoiZGVmYXVsPQp0IHNtYWxsIixzaG93bWF4
bWluOiEwLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbGFiZWw6ITAs
aXM9Cl9hdXRvOiEwLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixp
c19udW1lcmljOiEwfX19KX0pLGRlZj0KaW5lKCJwbHVnaW4vY2hhcnRzL252ZDMvaGlzdG9ncmFt
L2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL252ZDMvY29tbW9uL2NvbmZpPQpnIl0sZnVuY3Rpb24o
ZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJIaXN0b2dyYW0iLGNhdGVnb3J5OiJE
YXRhIHA9CnJvY2Vzc2luZyAocmVxdWlyZXMgJ2NoYXJ0cycgdG9vbCBmcm9tIFRvb2xzaGVkKSIs
ZXhlY3V0ZToiaGlzdG9ncmFtIixrZXl3bz0KcmRzOiJzbWFsbCBtZWRpdW0gbGFyZ2UiLGNvbHVt
bnM6e3k6e3RpdGxlOiJPYnNlcnZhdGlvbnMiLGlzX251bWVyaWM6ITB9fSxzPQpldHRpbmdzOnt4
X2F4aXNfbGFiZWw6e2luaXQ6IlZhbHVlcyJ9LHlfYXhpc19sYWJlbDp7aW5pdDoiRGVuc2l0eSJ9
LHlfYXhpc189CnR5cGU6e2luaXQ6ImYifSx5X2F4aXNfcHJlY2lzaW9uOntpbml0OiIuMiJ9fX0p
fSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252ZD0KMy9saW5lL2NvbmZpZyIsWyJwbHVnaW4vY2hh
cnRzL252ZDMvY29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4PQp0ZW5kKCEw
LHt9LGUse3RpdGxlOiJMaW5lIGNoYXJ0IixjYXRlZ29yeToiT3RoZXJzIix6b29tYWJsZTohMCxj
b2x1bW5zOnt4Ons9CnRpdGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbGFiZWw6ITAsaXNfYXV0
bzohMCxpc191bmlxdWU6ITB9LHk6e3RpdGxlOiJWYT0KbHVlcyBmb3IgeS1heGlzIixpc19udW1l
cmljOiEwfX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9udmQzL3NjYXR0ZXIvY29uPQpmaWci
LFsicGx1Z2luL2NoYXJ0cy9udmQzL2NvbW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4g
JC5leHRlbmQoITAse309CixlLHt0aXRsZToiU2NhdHRlciBwbG90IixjYXRlZ29yeToiT3RoZXJz
Iix6b29tYWJsZTohMCxjb2x1bW5zOnt4Ont0aXRsZToiVj0KYWx1ZXMgZm9yIHgtYXhpcyIsaXNf
bnVtZXJpYzohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1lcmljOiEwPQp9
fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252ZDMvc3RhY2tlZGFyZWEvY29uZmlnIixbInBs
dWdpbi9jaGFydHMvbnZkMy89CmNvbW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5l
eHRlbmQoITAse30sZSx7dGl0bGU6IlJlZ3VsYXIiLHpvb21hYj0KbGU6ITAsY2F0ZWdvcnk6IkFy
ZWEgY2hhcnRzIixrZXl3b3JkczoiZGVmYXVsdCBzbWFsbCIsY29sdW1uczp7eDp7dGl0bGU6IlZh
PQpsdWVzIGZvciB4LWF4aXMiLGlzX2xhYmVsOiEwLGlzX2F1dG86ITAsaXNfdW5pcXVlOiEwfSx5
Ont0aXRsZToiVmFsdWVzIGZvciA9CnktYXhpcyIsaXNfbnVtZXJpYzohMH19fSl9KSxkZWZpbmUo
InBsdWdpbi9jaGFydHMvanFwbG90L2NvbW1vbi9jb25maWciLFsicD0KbHVnaW4vY2hhcnRzL2Zv
cm1zL2RlZmF1bHQiXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6
IiIsPQpjYXRlZ29yeToiIixsaWJyYXJ5OiJqcVBsb3QiLHRhZzoiZGl2Iix6b29tYWJsZTohMCxr
ZXl3b3JkczoibWVkaXVtIixzZXR0aW49CmdzOntzZXBhcmF0b3JfZ3JpZDp7dGl0bGU6IkdyaWRz
Iix0eXBlOiJzZXBhcmF0b3IifSx4X2F4aXNfZ3JpZDp7dGl0bGU6IkF4aT0KcyBncmlkIixpbmZv
OiJXb3VsZCB5b3UgbGlrZSB0byBzaG93IGdyaWQgbGluZXMgZm9yIHRoZSBYIGF4aXM/Iix0eXBl
OiJyYWRpPQpvYnV0dG9uIixpbml0OiJmYWxzZSIsZGF0YTpbe2xhYmVsOiJPbiIsdmFsdWU6InRy
dWUifSx7bGFiZWw6Ik9mZiIsdmFsdWU6ImY9CmFsc2UifV19LHlfYXhpc19ncmlkOnt0aXRsZToi
QXhpcyBncmlkIixpbmZvOiJXb3VsZCB5b3UgbGlrZSB0byBzaG93IGdyaWQgbD0KaW5lcyBmb3Ig
dGhlIFkgYXhpcz8iLHR5cGU6InJhZGlvYnV0dG9uIixpbml0OiJ0cnVlIixkYXRhOlt7bGFiZWw6
Ik9uIix2YWx1PQplOiJ0cnVlIn0se2xhYmVsOiJPZmYiLHZhbHVlOiJmYWxzZSJ9XX19fSl9KSxk
ZWZpbmUoInBsdWdpbi9jaGFydHMvanFwbG90L2I9CmFyL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRz
L2pxcGxvdC9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZT0KbmQoITAs
e30sZSx7dGl0bGU6IlJlZ3VsYXIiLGNhdGVnb3J5OiJCYXIgZGlhZ3JhbXMiLGNvbHVtbnM6e3g6
e3RpdGxlOiJWYWx1PQplcyBmb3IgeC1heGlzIixpc19sYWJlbDohMCxpc19hdXRvOiEwLGlzX3Vu
aXF1ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS09CmF4aXMiLGlzX251bWVyaWM6ITB9fX0p
fSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL2pxcGxvdC9saW5lL2NvbmZpZyIsWyJwbHVnaT0Kbi9j
aGFydHMvanFwbG90L2NvbW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQo
ITAse30sZSx7dGl0bGU6PQoiTGluZSBjaGFydCIsY2F0ZWdvcnk6Ik90aGVycyIsY29sdW1uczp7
eDp7dGl0bGU6IlZhbHVlcyBmb3IgeC1heGlzIixpc19sYWI9CmVsOiEwLGlzX2F1dG86ITAsaXNf
dW5pcXVlOiEwfSx5Ont0aXRsZToiVmFsdWVzIGZvciB5LWF4aXMiLGlzX251bWVyaWM6ITB9fT0K
fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvanFwbG90L3NjYXR0ZXIvY29uZmlnIixbInBsdWdp
bi9jaGFydHMvanFwbG90L2NvPQptbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4
dGVuZCghMCx7fSxlLHt0aXRsZToiU2NhdHRlciBwbG90IixjYXQ9CmVnb3J5OiJPdGhlcnMiLGNv
bHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbnVtZXJpYzohMH0seTp7dGl0
bD0KZToiVmFsdWVzIGZvciB5LWF4aXMiLGlzX251bWVyaWM6ITB9fSxzZXR0aW5nczp7eF9heGlz
X2dyaWQ6e2luaXQ6InRydWUifX19PQopfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL2pxcGxvdC9i
b3hwbG90L2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL2pxcGxvdC9jb209Cm1vbi9jb25maWciXSxm
dW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6IkJveCBwbG90IixjYXRl
Z29yeT0KOiJEYXRhIHByb2Nlc3NpbmcgKHJlcXVpcmVzICdjaGFydHMnIHRvb2wgZnJvbSBUb29s
c2hlZCkiLGxpYnJhcnk6ImpxUGxvdCIsPQp0YWc6ImRpdiIsZXhlY3V0ZToiYm94cGxvdCIsa2V5
d29yZHM6InNtYWxsIG1lZGl1bSBsYXJnZSIsY29sdW1uczp7eTp7dGl0bGU9CjoiT2JzZXJ2YXRp
b25zIixpc19udW1lcmljOiEwfX0sc2V0dGluZ3M6e3Nob3dfbGVnZW5kOntpbml0OiJmYWxzZSJ9
fX0pfSksZD0KZWZpbmUoInBsdWdpbi9jaGFydHMvanFwbG90L2hpc3RvZ3JhbV9kaXNjcmV0ZS9j
b25maWciLFsicGx1Z2luL2NoYXJ0cy9qcXBsPQpvdC9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24o
ZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJEaXNjcmV0ZSBIaXM9CnRvZ3JhbSIs
Y2F0ZWdvcnk6IkRhdGEgcHJvY2Vzc2luZyAocmVxdWlyZXMgJ2NoYXJ0cycgdG9vbCBmcm9tIFRv
b2xzaGVkKSIsZT0KeGVjdXRlOiJoaXN0b2dyYW1kaXNjcmV0ZSIsa2V5d29yZHM6InNtYWxsIG1l
ZGl1bSBsYXJnZSIsY29sdW1uczp7eDp7dGl0bGU6PQoiT2JzZXJ2YXRpb25zIixpc19sYWJlbDoh
MH19LHNldHRpbmdzOnt4X2F4aXNfbGFiZWw6e2luaXQ6IkJyZWFrcyJ9LHlfYXhpc189CmxhYmVs
Ontpbml0OiJEZW5zaXR5In19fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvb3RoZXJzL2hlYXRt
YXAvY29uZmlnIixbIj0KcGx1Z2luL2NoYXJ0cy9mb3Jtcy9kZWZhdWx0Il0sZnVuY3Rpb24oZSl7
cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJIPQplYXRtYXAiLGNhdGVnb3J5OiJPdGhl
cnMiLGxpYnJhcnk6IkN1c3RvbSIsdGFnOiJzdmciLGtleXdvcmRzOiJzbWFsbCIsem9vbWE9CmJs
ZTohMCxjb2x1bW5zOnt4Ont0aXRsZToiQ29sdW1uIGxhYmVscyIsaXNfbGFiZWw6ITAsaXNfbnVt
ZXJpYzohMCxpc191bmlxdT0KZTohMH0seTp7dGl0bGU6IlJvdyBsYWJlbHMiLGlzX2xhYmVsOiEw
LGlzX251bWVyaWM6ITAsaXNfdW5pcXVlOiEwfSx6Ont0aXRsPQplOiJPYnNlcnZhdGlvbiIsaXNf
bnVtZXJpYzohMH19LHNldHRpbmdzOnt1c2VfcGFuZWxzOntpbml0OiJ0cnVlIixoaWRlOiEwfSw9
CmNvbG9yX3NldDp7dGl0bGU6IkNvbG9yIHNjaGVtZSIsaW5mbzoiU2VsZWN0IGEgY29sb3Igc2No
ZW1lIGZvciB5b3VyIGhlYXRtYT0KcCIsdHlwZToic2VsZWN0Iixpbml0OiJqZXQiLGRhdGE6W3ts
YWJlbDoiQ29sZC10by1Ib3QiLHZhbHVlOiJob3QifSx7bGFiZWw6PQoiQ29vbCIsdmFsdWU6ImNv
b2wifSx7bGFiZWw6IkNvcHBlciIsdmFsdWU6ImNvcHBlciJ9LHtsYWJlbDoiR3JheSBzY2FsZSIs
dmE9Cmx1ZToiZ3JheSJ9LHtsYWJlbDoiSmV0Iix2YWx1ZToiamV0In0se2xhYmVsOiJOby1HcmVl
biIsdmFsdWU6Im5vX2dyZWVuIn0sez0KbGFiZWw6Ik9jZWFuIix2YWx1ZToib2NlYW4ifSx7bGFi
ZWw6IlBvbGFyIix2YWx1ZToicG9sYXIifSx7bGFiZWw6IlJlZC10by1HPQpyZWVuIix2YWx1ZToi
cmVkZ3JlZW4ifSx7bGFiZWw6IlJlZC10by1ncmVlbiAoc2F0dXJhdGVkKSIsdmFsdWU6InJlZDJn
cmVlbiI9Cn0se2xhYmVsOiJSZWxpZWYiLHZhbHVlOiJyZWxpZWYifSx7bGFiZWw6IlNlaXNtb2dy
YXBoIix2YWx1ZToic2VpcyJ9LHtsYWJlbD0KOiJTZWFsYW5kIix2YWx1ZToic2VhbGFuZCJ9LHts
YWJlbDoiU3BsaXQiLHZhbHVlOiJzcGxpdCJ9LHtsYWJlbDoiV3lzaXd5ZyIsPQp2YWx1ZToid3lz
aXd5ZyJ9XX0sdXJsX3RlbXBsYXRlOnt0aXRsZToiVXJsIHRlbXBsYXRlIixpbmZvOiJFbnRlciBh
IHVybCB0byA9CmxpbmsgdGhlIGxhYmVscyB3aXRoIGV4dGVybmFsIHNvdXJjZXMuIFVzZSBfX0xB
QkVMX18gYXMgcGxhY2Vob2xkZXIuIix0eXBlOj0KInRleHQiLGluaXQ6IiIscGxhY2Vob2xkZXI6
Imh0dHA6Ly9zb21ldXJsLmNvbT9pZD0zRF9fTEFCRUxfXyJ9fX0pfSksZGVmaW5lPQooInBsdWdp
bi9jaGFydHMvb3RoZXJzL2hlYXRtYXBfY2x1c3Rlci9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9v
dGhlcnMvaGVhdG09CmFwL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7
fSxlLHt0aXRsZToiQ2x1c3RlcmVkIEhlYXRtYXAiLD0KY2F0ZWdvcnk6IkRhdGEgcHJvY2Vzc2lu
ZyAocmVxdWlyZXMgJ2NoYXJ0cycgdG9vbCBmcm9tIFRvb2xzaGVkKSIsZXhlY3V0ZToiPQpoZWF0
bWFwIixrZXl3b3Jkczoic21hbGwgbWVkaXVtIGxhcmdlIn0pfSksZGVmaW5lKCJwbHVnaW4vY2hh
cnRzL3R5cGVzIixbInA9Cmx1Z2luL2NoYXJ0cy9udmQzL2Jhci9jb25maWciLCJwbHVnaW4vY2hh
cnRzL252ZDMvYmFyX3N0YWNrZWQvY29uZmlnIiwicGx1Zz0KaW4vY2hhcnRzL252ZDMvYmFyX2hv
cml6b250YWwvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9udmQzL2Jhcl9ob3Jpem9udGFsX3N0PQph
Y2tlZC9jb25maWciLCJwbHVnaW4vY2hhcnRzL252ZDMvbGluZV9mb2N1cy9jb25maWciLCJwbHVn
aW4vY2hhcnRzL252ZDMvcGk9CmUvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9udmQzL3N0YWNrZWRh
cmVhX2Z1bGwvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9udmQzLz0Kc3RhY2tlZGFyZWFfc3RyZWFt
L2NvbmZpZyIsInBsdWdpbi9jaGFydHMvbnZkMy9oaXN0b2dyYW0vY29uZmlnIiwicGx1Z2luL2No
PQphcnRzL252ZDMvbGluZS9jb25maWciLCJwbHVnaW4vY2hhcnRzL252ZDMvc2NhdHRlci9jb25m
aWciLCJwbHVnaW4vY2hhcnRzL249CnZkMy9zdGFja2VkYXJlYS9jb25maWciLCJwbHVnaW4vY2hh
cnRzL2pxcGxvdC9iYXIvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9qcT0KcGxvdC9saW5lL2NvbmZp
ZyIsInBsdWdpbi9jaGFydHMvanFwbG90L3NjYXR0ZXIvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9q
cXBsPQpvdC9ib3hwbG90L2NvbmZpZyIsInBsdWdpbi9jaGFydHMvanFwbG90L2hpc3RvZ3JhbV9k
aXNjcmV0ZS9jb25maWciLCJwbHVnaW49Ci9jaGFydHMvb3RoZXJzL2hlYXRtYXAvY29uZmlnIiwi
cGx1Z2luL2NoYXJ0cy9vdGhlcnMvaGVhdG1hcF9jbHVzdGVyL2NvbmZpZz0KIl0sZnVuY3Rpb24o
ZSx0LG4scixpLHMsbyx1LGEsZixsLGMsaCxwLGQsdixtLGcseSl7cmV0dXJuIEJhY2tib25lLk1v
ZGVsLmV4PQp0ZW5kKHtkZWZhdWx0czp7bnZkM19iYXI6ZSxudmQzX2Jhcl9zdGFja2VkOnQsbnZk
M19iYXJfaG9yaXpvbnRhbDpuLG52ZDNfYmE9CnJfaG9yaXpvbnRhbF9zdGFja2VkOnIsbnZkM19s
aW5lX2ZvY3VzOmksbnZkM19zdGFja2VkYXJlYTpjLG52ZDNfc3RhY2tlZGFyZT0KYV9mdWxsOm8s
bnZkM19zdGFja2VkYXJlYV9zdHJlYW06dSxudmQzX3BpZTpzLG52ZDNfbGluZTpmLG52ZDNfc2Nh
dHRlcjpsLG52PQpkM19oaXN0b2dyYW06YSxqcXBsb3RfYmFyOmgsanFwbG90X2hpc3RvZ3JhbV9k
aXNjcmV0ZTptLGpxcGxvdF9saW5lOnAsanFwbG89CnRfc2NhdHRlcjpkLGpxcGxvdF9ib3hwbG90
OnYsb3RoZXJzX2hlYXRtYXA6ZyxvdGhlcnNfaGVhdG1hcF9jbHVzdGVyOnl9fSl9KT0KLGRlZmlu
ZSgicGx1Z2luL2FwcCIsWyJtdmMvdWkvdWktbW9kYWwiLCJtdmMvdWkvdWktcG9ydGxldCIsIm12
Yy91aS91aS1taXNjPQoiLCJ1dGlscy91dGlscyIsInBsdWdpbi9saWJyYXJ5L2pvYnMiLCJwbHVn
aW4vbGlicmFyeS9kYXRhc2V0cyIsInBsdWdpbi9saWI9CnJhcnkvc3RvcmFnZSIsInV0aWxzL2Rl
ZmVycmVkIiwicGx1Z2luL3ZpZXdzL3ZpZXdlciIsInBsdWdpbi92aWV3cy9lZGl0b3IiLD0KInBs
dWdpbi9tb2RlbHMvY29uZmlnIiwicGx1Z2luL21vZGVscy9jaGFydCIsInBsdWdpbi9jaGFydHMv
dHlwZXMiXSxmdW5jdGlvPQpuKGUsdCxuLHIsaSxzLG8sdSxhLGYsbCxjLGgpe3JldHVybiBCYWNr
Ym9uZS5WaWV3LmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGk9Cm9uKHQpe3RoaXMub3B0aW9ucz0z
RHQsR2FsYXh5JiZHYWxheHkubW9kYWw/dGhpcy5tb2RhbD0zREdhbGF4eS5tb2RhbDp0aGlzLj0K
bW9kYWw9M0RuZXcgZS5WaWV3LHRoaXMuY29uZmlnPTNEbmV3IGwsdGhpcy50eXBlcz0zRG5ldyBo
LHRoaXMuY2hhcnQ9M0RuZXcgPQpjLHRoaXMuam9icz0zRG5ldyBpKHRoaXMpLHRoaXMuZGF0YXNl
dHM9M0RuZXcgcyh0aGlzKSx0aGlzLnN0b3JhZ2U9M0RuZXcgbyg9CnRoaXMpLHRoaXMuZGVmZXJy
ZWQ9M0RuZXcgdSx0aGlzLnZpZXdlcl92aWV3PTNEbmV3IGEodGhpcyksdGhpcy5lZGl0b3Jfdmll
dz0KPTNEbmV3IGYodGhpcyksdGhpcy4kZWwuYXBwZW5kKHRoaXMudmlld2VyX3ZpZXcuJGVsKSx0
aGlzLiRlbC5hcHBlbmQodGhpcy5lPQpkaXRvcl92aWV3LiRlbCk7aWYoIXRoaXMuc3RvcmFnZS5s
b2FkKCkpdGhpcy5nbygiZWRpdG9yIik7ZWxzZXt0aGlzLmdvKCJ2aWU9CndlciIpO3ZhciBuPTNE
dGhpczt0aGlzLmRlZmVycmVkLmV4ZWN1dGUoZnVuY3Rpb24oKXtuLmNoYXJ0LnRyaWdnZXIoInJl
ZHJhdz0KIil9KX19LGdvOmZ1bmN0aW9uKGUpeyQoIi50b29sdGlwIikuaGlkZSgpO3N3aXRjaChl
KXtjYXNlImVkaXRvciI6dGhpcy5lZGl0PQpvcl92aWV3LnNob3coKSx0aGlzLnZpZXdlcl92aWV3
LmhpZGUoKTticmVhaztjYXNlInZpZXdlciI6dGhpcy5lZGl0b3Jfdmlldy49CmhpZGUoKSx0aGlz
LnZpZXdlcl92aWV3LnNob3coKX19LGNoYXJ0UGF0aDpmdW5jdGlvbihlKXt2YXIgdD0zRGUuc3Bs
aXQoL18oLj0KKykvKTtyZXR1cm4gdC5sZW5ndGg+PTNEMj90WzBdKyIvIit0WzFdOihjb25zb2xl
LmRlYnVnKCJGQUlMRUQgQXBwOmNoYXJ0UGF0PQpoKCkgLSBJbnZhbGlkIGZvcm1hdDogIitlKSx1
bmRlZmluZWQpfX0pfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGVmaW5lKCJtdmMv
dWkvdWktbW9kYWwiLFtdLGZ1bmN0aW9uKCl7dmFyIGU9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7
ZWxNYWk9Cm46ImJvZHkiLG9wdGlvbnNEZWZhdWx0Ont0aXRsZToidWktbW9kYWwiLGJvZHk6IiIs
YmFja2Ryb3A6ITAsaGVpZ2h0Om51bGwsdz0KaWR0aDpudWxsLGNsb3NpbmdfZXZlbnRzOiExLGNs
b3NpbmdfY2FsbGJhY2s6bnVsbH0sYnV0dG9uTGlzdDp7fSxpbml0aWFsaXplPQo6ZnVuY3Rpb24o
ZSl7ZSYmdGhpcy5fY3JlYXRlKGUpfSxzaG93OmZ1bmN0aW9uKGUpe3RoaXMuaW5pdGlhbGl6ZShl
KSx0aGlzLm89CnB0aW9ucy5oZWlnaHQ/KHRoaXMuJGJvZHkuY3NzKCJoZWlnaHQiLHRoaXMub3B0
aW9ucy5oZWlnaHQpLHRoaXMuJGJvZHkuY3NzKD0KIm92ZXJmbG93IiwiaGlkZGVuIikpOnRoaXMu
JGJvZHkuY3NzKCJtYXgtaGVpZ2h0IiwkKHdpbmRvdykuaGVpZ2h0KCkvMiksdGhpPQpzLm9wdGlv
bnMud2lkdGgmJnRoaXMuJGRpYWxvZy5jc3MoIndpZHRoIix0aGlzLm9wdGlvbnMud2lkdGgpLHRo
aXMudmlzaWJsZT89CnRoaXMuJGVsLnNob3coKTp0aGlzLiRlbC5mYWRlSW4oImZhc3QiKSx0aGlz
LnZpc2libGU9M0QhMH0saGlkZTpmdW5jdGlvbigpez0KdGhpcy52aXNpYmxlPTNEITEsdGhpcy4k
ZWwuZmFkZU91dCgiZmFzdCIpLHRoaXMub3B0aW9ucy5jbG9zaW5nX2NhbGxiYWNrJiZ0PQpoaXMu
b3B0aW9ucy5jbG9zaW5nX2NhbGxiYWNrKCl9LGVuYWJsZUJ1dHRvbjpmdW5jdGlvbihlKXt2YXIg
dD0zRHRoaXMuYnV0dG89Cm5MaXN0W2VdO3RoaXMuJGJ1dHRvbnMuZmluZCgiIyIrdCkucHJvcCgi
ZGlzYWJsZWQiLCExKX0sZGlzYWJsZUJ1dHRvbjpmdW5jdD0KaW9uKGUpe3ZhciB0PTNEdGhpcy5i
dXR0b25MaXN0W2VdO3RoaXMuJGJ1dHRvbnMuZmluZCgiIyIrdCkucHJvcCgiZGlzYWJsZWQiPQos
ITApfSxzaG93QnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy5idXR0b25MaXN0W2VdO3Ro
aXMuJGJ1dHRvbnMuZmluZCg9CiIjIit0KS5zaG93KCl9LGhpZGVCdXR0b246ZnVuY3Rpb24oZSl7
dmFyIHQ9M0R0aGlzLmJ1dHRvbkxpc3RbZV07dGhpcy4kYnV0dD0Kb25zLmZpbmQoIiMiK3QpLmhp
ZGUoKX0sZ2V0QnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy5idXR0b25MaXN0W2VdO3Jl
PQp0dXJuIHRoaXMuJGJ1dHRvbnMuZmluZCgiIyIrdCl9LHNjcm9sbFRvcDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLiRib2R5LnNjcm89CmxsVG9wKCl9LF9jcmVhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9
M0R0aGlzO3RoaXMub3B0aW9ucz0zRF8uZGVmYXVsdHMoZSx0aGlzLj0Kb3B0aW9uc0RlZmF1bHQp
LHRoaXMub3B0aW9ucy5ib2R5PTNEPTNEInByb2dyZXNzIiYmKHRoaXMub3B0aW9ucy5ib2R5PTNE
JCgnPQo8ZGl2IGNsYXNzPTNEInByb2dyZXNzIHByb2dyZXNzLXN0cmlwZWQgYWN0aXZlIj48ZGl2
IGNsYXNzPTNEInByb2dyZXNzLWJhciA9CnByb2dyZXNzLWJhci1pbmZvIiBzdHlsZT0zRCJ3aWR0
aDoxMDAlIj48L2Rpdj48L2Rpdj4nKSksdGhpcy4kZWwmJih0aGlzLiRlbD0KLnJlbW92ZSgpLCQo
ZG9jdW1lbnQpLm9mZigia2V5dXAudWktbW9kYWwiKSksdGhpcy5zZXRFbGVtZW50KHRoaXMuX3Rl
bXBsYXRlPQoodGhpcy5vcHRpb25zLnRpdGxlKSksdGhpcy4kZGlhbG9nPTNEdGhpcy4kZWwuZmlu
ZCgiLm1vZGFsLWRpYWxvZyIpLHRoaXMuJGI9Cm9keT0zRHRoaXMuJGVsLmZpbmQoIi5tb2RhbC1i
b2R5IiksdGhpcy4kZm9vdGVyPTNEdGhpcy4kZWwuZmluZCgiLm1vZGFsLWZvbz0KdGVyIiksdGhp
cy4kYnV0dG9ucz0zRHRoaXMuJGVsLmZpbmQoIi5idXR0b25zIiksdGhpcy4kYmFja2Ryb3A9M0R0
aGlzLiRlbC5mPQppbmQoIi5tb2RhbC1iYWNrZHJvcCIpLHRoaXMuJGJvZHkuaHRtbCh0aGlzLm9w
dGlvbnMuYm9keSksdGhpcy5vcHRpb25zLmJhY2s9CmRyb3B8fHRoaXMuJGJhY2tkcm9wLnJlbW92
ZUNsYXNzKCJpbiIpO2lmKHRoaXMub3B0aW9ucy5idXR0b25zKXt0aGlzLmJ1dHRvbj0KTGlzdD0z
RHt9O3ZhciBuPTNEMDskLmVhY2godGhpcy5vcHRpb25zLmJ1dHRvbnMsZnVuY3Rpb24oZSxyKXt2
YXIgaT0zRCJidXR0PQpvbi0iK24rKzt0LiRidXR0b25zLmFwcGVuZCgkKCc8YnV0dG9uIGlkPTNE
IicraSsnIj48L2J1dHRvbj4nKS50ZXh0KGUpLmNsaWM9CmsocikpLmFwcGVuZCgiICIpLHQuYnV0
dG9uTGlzdFtlXT0zRGl9KX1lbHNlIHRoaXMuJGZvb3Rlci5oaWRlKCk7JCh0aGlzLmVsTT0KYWlu
KS5hcHBlbmQoJCh0aGlzLmVsKSksdGhpcy5vcHRpb25zLmNsb3NpbmdfZXZlbnRzJiYoJChkb2N1
bWVudCkub24oImtleXVwPQoudWktbW9kYWwiLGZ1bmN0aW9uKGUpe2Uua2V5Q29kZT0zRD0zRDI3
JiZ0LmhpZGUoKX0pLHRoaXMuJGVsLmZpbmQoIi5tb2RhbC09CmJhY2tkcm9wIikub24oImNsaWNr
IixmdW5jdGlvbigpe3QuaGlkZSgpfSkpfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuJz0K
PGRpdiBjbGFzcz0zRCJ1aS1tb2RhbCBtb2RhbCI+PGRpdiBjbGFzcz0zRCJtb2RhbC1iYWNrZHJv
cCBmYWRlIGluIiBzdHlsZT0KPTNEInotaW5kZXg6IC0xOyI+PC9kaXY+PGRpdiBjbGFzcz0zRCJt
b2RhbC1kaWFsb2ciPjxkaXYgY2xhc3M9M0QibW9kYWwtY29uPQp0ZW50Ij48ZGl2IGNsYXNzPTNE
Im1vZGFsLWhlYWRlciI+PGJ1dHRvbiB0eXBlPTNEImJ1dHRvbiIgY2xhc3M9M0QiY2xvc2UiIHM9
CnR5bGU9M0QiZGlzcGxheTogbm9uZTsiPiZ0aW1lczs8L2J1dHRvbj48aDQgY2xhc3M9M0QidGl0
bGUiPicrZSsiPC9oND4iKyI8Lz0KZGl2PiIrJzxkaXYgY2xhc3M9M0QibW9kYWwtYm9keSIgc3R5
bGU9M0QicG9zaXRpb246IHN0YXRpYzsiPjwvZGl2PicrJzxkaXYgPQpjbGFzcz0zRCJtb2RhbC1m
b290ZXIiPicrJzxkaXYgY2xhc3M9M0QiYnV0dG9ucyIgc3R5bGU9M0QiZmxvYXQ6IHJpZ2h0OyI+
PC89CmRpdj4nKyI8L2Rpdj4iKyI8L2RpdiIrIjwvZGl2PiIrIjwvZGl2PiJ9fSk7cmV0dXJue1Zp
ZXc6ZX19KSxmdW5jdGlvbigpe3Zhcj0KIGU9M0R0aGlzLHQ9M0RlLl8sbj0zREFycmF5LnByb3Rv
dHlwZSxyPTNET2JqZWN0LnByb3RvdHlwZSxpPTNERnVuY3Rpb24ucHJvPQp0b3R5cGUscz0zRG4u
cHVzaCxvPTNEbi5zbGljZSx1PTNEbi5jb25jYXQsYT0zRHIudG9TdHJpbmcsZj0zRHIuaGFzT3du
UHJvcGU9CnJ0eSxsPTNEQXJyYXkuaXNBcnJheSxjPTNET2JqZWN0LmtleXMsaD0zRGkuYmluZCxw
PTNEZnVuY3Rpb24oZSl7aWYoZSBpbnN0YT0KbmNlb2YgcClyZXR1cm4gZTtpZighKHRoaXMgaW5z
dGFuY2VvZiBwKSlyZXR1cm4gbmV3IHAoZSk7dGhpcy5fd3JhcHBlZD0zRGV9PQo7dHlwZW9mIGV4
cG9ydHMhPTNEInVuZGVmaW5lZCI/KHR5cGVvZiBtb2R1bGUhPTNEInVuZGVmaW5lZCImJm1vZHVs
ZS5leHBvcnQ9CnMmJihleHBvcnRzPTNEbW9kdWxlLmV4cG9ydHM9M0RwKSxleHBvcnRzLl89M0Rw
KTplLl89M0RwLHAuVkVSU0lPTj0zRCIxLjcuMD0KIjt2YXIgZD0zRGZ1bmN0aW9uKGUsdCxuKXtp
Zih0PTNEPTNEPTNEdm9pZCAwKXJldHVybiBlO3N3aXRjaChuPTNEPTNEbnVsbD8zPQo6bil7Y2Fz
ZSAxOnJldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gZS5jYWxsKHQsbil9O2Nhc2UgMjpyZXR1cm4g
ZnVuY3Rpb24obiw9CnIpe3JldHVybiBlLmNhbGwodCxuLHIpfTtjYXNlIDM6cmV0dXJuIGZ1bmN0
aW9uKG4scixpKXtyZXR1cm4gZS5jYWxsKHQsbixyLD0KaSl9O2Nhc2UgNDpyZXR1cm4gZnVuY3Rp
b24obixyLGkscyl7cmV0dXJuIGUuY2FsbCh0LG4scixpLHMpfX1yZXR1cm4gZnVuY3RpPQpvbigp
e3JldHVybiBlLmFwcGx5KHQsYXJndW1lbnRzKX19O3AuaXRlcmF0ZWU9M0RmdW5jdGlvbihlLHQs
bil7cmV0dXJuIGU9M0Q9Cj0zRG51bGw/cC5pZGVudGl0eTpwLmlzRnVuY3Rpb24oZSk/ZChlLHQs
bik6cC5pc09iamVjdChlKT9wLm1hdGNoZXMoZSk6cC5wcj0Kb3BlcnR5KGUpfSxwLmVhY2g9M0Rw
LmZvckVhY2g9M0RmdW5jdGlvbihlLHQsbil7aWYoZT0zRD0zRG51bGwpcmV0dXJuIGU7dD0KPTNE
ZCh0LG4pO3ZhciByLGk9M0RlLmxlbmd0aDtpZihpPTNEPTNEPTNEK2kpZm9yKHI9M0QwO3I8aTty
KyspdChlW3JdLHIsZSk7PQplbHNle3ZhciBzPTNEcC5rZXlzKGUpO2ZvcihyPTNEMCxpPTNEcy5s
ZW5ndGg7cjxpO3IrKyl0KGVbc1tyXV0sc1tyXSxlKX1yZXQ9CnVybiBlfSxwLm1hcD0zRHAuY29s
bGVjdD0zRGZ1bmN0aW9uKGUsdCxuKXtpZihlPTNEPTNEbnVsbClyZXR1cm5bXTt0PTNEcC5pdD0K
ZXJhdGVlKHQsbik7dmFyIHI9M0RlLmxlbmd0aCE9M0Q9M0QrZS5sZW5ndGgmJnAua2V5cyhlKSxp
PTNEKHJ8fGUpLmxlbmd0aCxzPQo9M0RBcnJheShpKSxvO2Zvcih2YXIgdT0zRDA7dTxpO3UrKylv
PTNEcj9yW3VdOnUsc1t1XT0zRHQoZVtvXSxvLGUpO3JldHVybiA9CnN9O3ZhciB2PTNEIlJlZHVj
ZSBvZiBlbXB0eSBhcnJheSB3aXRoIG5vIGluaXRpYWwgdmFsdWUiO3AucmVkdWNlPTNEcC5mb2xk
bD0KPTNEcC5pbmplY3Q9M0RmdW5jdGlvbihlLHQsbixyKXtlPTNEPTNEbnVsbCYmKGU9M0RbXSks
dD0zRGQodCxyLDQpO3ZhciBpPTNEPQplLmxlbmd0aCE9M0Q9M0QrZS5sZW5ndGgmJnAua2V5cyhl
KSxzPTNEKGl8fGUpLmxlbmd0aCxvPTNEMCx1O2lmKGFyZ3VtZW50cy49Cmxlbmd0aDwzKXtpZigh
cyl0aHJvdyBuZXcgVHlwZUVycm9yKHYpO249M0RlW2k/aVtvKytdOm8rK119Zm9yKDtvPHM7bysr
KXU9Cj0zRGk/aVtvXTpvLG49M0R0KG4sZVt1XSx1LGUpO3JldHVybiBufSxwLnJlZHVjZVJpZ2h0
PTNEcC5mb2xkcj0zRGZ1bmN0aW9uKD0KZSx0LG4scil7ZT0zRD0zRG51bGwmJihlPTNEW10pLHQ9
M0RkKHQsciw0KTt2YXIgaT0zRGUubGVuZ3RoIT0zRD0zRCtlLmxlbmd0PQpoJiZwLmtleXMoZSks
cz0zRChpfHxlKS5sZW5ndGgsbztpZihhcmd1bWVudHMubGVuZ3RoPDMpe2lmKCFzKXRocm93IG5l
dyBUeXA9CmVFcnJvcih2KTtuPTNEZVtpP2lbLS1zXTotLXNdfXdoaWxlKHMtLSlvPTNEaT9pW3Nd
OnMsbj0zRHQobixlW29dLG8sZSk7cmV0dT0Kcm4gbn0scC5maW5kPTNEcC5kZXRlY3Q9M0RmdW5j
dGlvbihlLHQsbil7dmFyIHI7cmV0dXJuIHQ9M0RwLml0ZXJhdGVlKHQsbiksPQpwLnNvbWUoZSxm
dW5jdGlvbihlLG4saSl7aWYodChlLG4saSkpcmV0dXJuIHI9M0RlLCEwfSkscn0scC5maWx0ZXI9
M0RwLnNlbGU9CmN0PTNEZnVuY3Rpb24oZSx0LG4pe3ZhciByPTNEW107cmV0dXJuIGU9M0Q9M0Ru
dWxsP3I6KHQ9M0RwLml0ZXJhdGVlKHQsbikscD0KLmVhY2goZSxmdW5jdGlvbihlLG4saSl7dChl
LG4saSkmJnIucHVzaChlKX0pLHIpfSxwLnJlamVjdD0zRGZ1bmN0aW9uKGUsdCxuPQope3JldHVy
biBwLmZpbHRlcihlLHAubmVnYXRlKHAuaXRlcmF0ZWUodCkpLG4pfSxwLmV2ZXJ5PTNEcC5hbGw9
M0RmdW5jdGlvbig9CmUsdCxuKXtpZihlPTNEPTNEbnVsbClyZXR1cm4hMDt0PTNEcC5pdGVyYXRl
ZSh0LG4pO3ZhciByPTNEZS5sZW5ndGghPTNEPTNEKz0KZS5sZW5ndGgmJnAua2V5cyhlKSxpPTNE
KHJ8fGUpLmxlbmd0aCxzLG87Zm9yKHM9M0QwO3M8aTtzKyspe289M0RyP3Jbc106cztpPQpmKCF0
KGVbb10sbyxlKSlyZXR1cm4hMX1yZXR1cm4hMH0scC5zb21lPTNEcC5hbnk9M0RmdW5jdGlvbihl
LHQsbil7aWYoZT0zRD0KPTNEbnVsbClyZXR1cm4hMTt0PTNEcC5pdGVyYXRlZSh0LG4pO3ZhciBy
PTNEZS5sZW5ndGghPTNEPTNEK2UubGVuZ3RoJiZwLmtlPQp5cyhlKSxpPTNEKHJ8fGUpLmxlbmd0
aCxzLG87Zm9yKHM9M0QwO3M8aTtzKyspe289M0RyP3Jbc106cztpZih0KGVbb10sbyxlKSk9CnJl
dHVybiEwfXJldHVybiExfSxwLmNvbnRhaW5zPTNEcC5pbmNsdWRlPTNEZnVuY3Rpb24oZSx0KXty
ZXR1cm4gZT0zRD0zRG51bD0KbD8hMTooZS5sZW5ndGghPTNEPTNEK2UubGVuZ3RoJiYoZT0zRHAu
dmFsdWVzKGUpKSxwLmluZGV4T2YoZSx0KT49M0QwKX0scC5pPQpudm9rZT0zRGZ1bmN0aW9uKGUs
dCl7dmFyIG49M0RvLmNhbGwoYXJndW1lbnRzLDIpLHI9M0RwLmlzRnVuY3Rpb24odCk7cmV0dXI9
Cm4gcC5tYXAoZSxmdW5jdGlvbihlKXtyZXR1cm4ocj90OmVbdF0pLmFwcGx5KGUsbil9KX0scC5w
bHVjaz0zRGZ1bmN0aW9uKGUsdD0KKXtyZXR1cm4gcC5tYXAoZSxwLnByb3BlcnR5KHQpKX0scC53
aGVyZT0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAuZmlsdGVyKGUsPQpwLm1hdGNoZXModCkpfSxw
LmZpbmRXaGVyZT0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAuZmluZChlLHAubWF0Y2hlcyh0KSl9
LHA9Ci5tYXg9M0RmdW5jdGlvbihlLHQsbil7dmFyIHI9M0QtSW5maW5pdHksaT0zRC1JbmZpbml0
eSxzLG87aWYodD0zRD0zRG51bGwmJj0KZSE9M0RudWxsKXtlPTNEZS5sZW5ndGg9M0Q9M0Q9M0Qr
ZS5sZW5ndGg/ZTpwLnZhbHVlcyhlKTtmb3IodmFyIHU9M0QwLGE9M0RlPQoubGVuZ3RoO3U8YTt1
Kyspcz0zRGVbdV0scz5yJiYocj0zRHMpfWVsc2UgdD0zRHAuaXRlcmF0ZWUodCxuKSxwLmVhY2go
ZSxmdW49CmN0aW9uKGUsbixzKXtvPTNEdChlLG4scyk7aWYobz5pfHxvPTNEPTNEPTNELUluZmlu
aXR5JiZyPTNEPTNEPTNELUluZmluaXR5KT0Kcj0zRGUsaT0zRG99KTtyZXR1cm4gcn0scC5taW49
M0RmdW5jdGlvbihlLHQsbil7dmFyIHI9M0RJbmZpbml0eSxpPTNESW5maW5pPQp0eSxzLG87aWYo
dD0zRD0zRG51bGwmJmUhPTNEbnVsbCl7ZT0zRGUubGVuZ3RoPTNEPTNEPTNEK2UubGVuZ3RoP2U6
cC52YWx1ZXM9CihlKTtmb3IodmFyIHU9M0QwLGE9M0RlLmxlbmd0aDt1PGE7dSsrKXM9M0RlW3Vd
LHM8ciYmKHI9M0RzKX1lbHNlIHQ9M0RwLml0ZT0KcmF0ZWUodCxuKSxwLmVhY2goZSxmdW5jdGlv
bihlLG4scyl7bz0zRHQoZSxuLHMpO2lmKG88aXx8bz0zRD0zRD0zREluZmluaXR5PQomJnI9M0Q9
M0Q9M0RJbmZpbml0eSlyPTNEZSxpPTNEb30pO3JldHVybiByfSxwLnNodWZmbGU9M0RmdW5jdGlv
bihlKXt2YXIgdD0KPTNEZSYmZS5sZW5ndGg9M0Q9M0Q9M0QrZS5sZW5ndGg/ZTpwLnZhbHVlcyhl
KSxuPTNEdC5sZW5ndGgscj0zREFycmF5KG4pO2ZvPQpyKHZhciBpPTNEMCxzO2k8bjtpKyspcz0z
RHAucmFuZG9tKDAsaSkscyE9M0Q9M0RpJiYocltpXT0zRHJbc10pLHJbc109M0R0W2k9Cl07cmV0
dXJuIHJ9LHAuc2FtcGxlPTNEZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PTNEPTNEbnVsbHx8bj8o
ZS5sZW5ndGghPTNEPQo9M0QrZS5sZW5ndGgmJihlPTNEcC52YWx1ZXMoZSkpLGVbcC5yYW5kb20o
ZS5sZW5ndGgtMSldKTpwLnNodWZmbGUoZSkuc2xpY2U9CigwLE1hdGgubWF4KDAsdCkpfSxwLnNv
cnRCeT0zRGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdD0zRHAuaXRlcmF0ZWUodCxuKSxwLj0KcGx1
Y2socC5tYXAoZSxmdW5jdGlvbihlLG4scil7cmV0dXJue3ZhbHVlOmUsaW5kZXg6bixjcml0ZXJp
YTp0KGUsbixyKX19KS5zPQpvcnQoZnVuY3Rpb24oZSx0KXt2YXIgbj0zRGUuY3JpdGVyaWEscj0z
RHQuY3JpdGVyaWE7aWYobiE9M0Q9M0RyKXtpZihuPnJ8fG49Cj0zRD0zRD0zRHZvaWQgMClyZXR1
cm4gMTtpZihuPHJ8fHI9M0Q9M0Q9M0R2b2lkIDApcmV0dXJuLTF9cmV0dXJuIGUuaW5kZXgtdD0K
LmluZGV4fSksInZhbHVlIil9O3ZhciBtPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQs
bixyKXt2YXIgaT0zRHt9O3JlPQp0dXJuIG49M0RwLml0ZXJhdGVlKG4scikscC5lYWNoKHQsZnVu
Y3Rpb24ocixzKXt2YXIgbz0zRG4ocixzLHQpO2UoaSxyLG8pfSk9CixpfX07cC5ncm91cEJ5PTNE
bShmdW5jdGlvbihlLHQsbil7cC5oYXMoZSxuKT9lW25dLnB1c2godCk6ZVtuXT0zRFt0XX0pLHAu
aT0KbmRleEJ5PTNEbShmdW5jdGlvbihlLHQsbil7ZVtuXT0zRHR9KSxwLmNvdW50Qnk9M0RtKGZ1
bmN0aW9uKGUsdCxuKXtwLmhhcyhlPQosbik/ZVtuXSsrOmVbbl09M0QxfSkscC5zb3J0ZWRJbmRl
eD0zRGZ1bmN0aW9uKGUsdCxuLHIpe249M0RwLml0ZXJhdGVlKG4sciw9CjEpO3ZhciBpPTNEbih0
KSxzPTNEMCxvPTNEZS5sZW5ndGg7d2hpbGUoczxvKXt2YXIgdT0zRHMrbz4+PjE7bihlW3VdKTxp
P3M9Cj0zRHUrMTpvPTNEdX1yZXR1cm4gc30scC50b0FycmF5PTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGU/cC5pc0FycmF5KGUpP28uY2FsbD0KKGUpOmUubGVuZ3RoPTNEPTNEPTNEK2UubGVuZ3RoP3Au
bWFwKGUscC5pZGVudGl0eSk6cC52YWx1ZXMoZSk6W119LHAuc2l6ZT0KPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGU9M0Q9M0RudWxsPzA6ZS5sZW5ndGg9M0Q9M0Q9M0QrZS5sZW5ndGg/ZS5sZW5ndGg6
cC5rPQpleXMoZSkubGVuZ3RofSxwLnBhcnRpdGlvbj0zRGZ1bmN0aW9uKGUsdCxuKXt0PTNEcC5p
dGVyYXRlZSh0LG4pO3ZhciByPTNEW109CixpPTNEW107cmV0dXJuIHAuZWFjaChlLGZ1bmN0aW9u
KGUsbixzKXsodChlLG4scyk/cjppKS5wdXNoKGUpfSksW3IsaV19LHAuZj0KaXJzdD0zRHAuaGVh
ZD0zRHAudGFrZT0zRGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0zRD0zRG51bGw/dm9pZCAwOnQ9
M0Q9M0RuPQp1bGx8fG4/ZVswXTp0PDA/W106by5jYWxsKGUsMCx0KX0scC5pbml0aWFsPTNEZnVu
Y3Rpb24oZSx0LG4pe3JldHVybiBvLmNhbGw9CihlLDAsTWF0aC5tYXgoMCxlLmxlbmd0aC0odD0z
RD0zRG51bGx8fG4/MTp0KSkpfSxwLmxhc3Q9M0RmdW5jdGlvbihlLHQsbil7cj0KZXR1cm4gZT0z
RD0zRG51bGw/dm9pZCAwOnQ9M0Q9M0RudWxsfHxuP2VbZS5sZW5ndGgtMV06by5jYWxsKGUsTWF0
aC5tYXgoZS5sPQplbmd0aC10LDApKX0scC5yZXN0PTNEcC50YWlsPTNEcC5kcm9wPTNEZnVuY3Rp
b24oZSx0LG4pe3JldHVybiBvLmNhbGwoZSx0PQo9M0Q9M0RudWxsfHxuPzE6dCl9LHAuY29tcGFj
dD0zRGZ1bmN0aW9uKGUpe3JldHVybiBwLmZpbHRlcihlLHAuaWRlbnRpdHkpfTs9CnZhciBnPTNE
ZnVuY3Rpb24oZSx0LG4scil7aWYodCYmcC5ldmVyeShlLHAuaXNBcnJheSkpcmV0dXJuIHUuYXBw
bHkocixlKTtmbz0Kcih2YXIgaT0zRDAsbz0zRGUubGVuZ3RoO2k8bztpKyspe3ZhciBhPTNEZVtp
XTshcC5pc0FycmF5KGEpJiYhcC5pc0FyZ3VtZW50PQpzKGEpP258fHIucHVzaChhKTp0P3MuYXBw
bHkocixhKTpnKGEsdCxuLHIpfXJldHVybiByfTtwLmZsYXR0ZW49M0RmdW5jdGlvbig9CmUsdCl7
cmV0dXJuIGcoZSx0LCExLFtdKX0scC53aXRob3V0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIHAuZGlm
ZmVyZW5jZShlLG8uYz0KYWxsKGFyZ3VtZW50cywxKSl9LHAudW5pcT0zRHAudW5pcXVlPTNEZnVu
Y3Rpb24oZSx0LG4scil7aWYoZT0zRD0zRG51bGwpcmV0PQp1cm5bXTtwLmlzQm9vbGVhbih0KXx8
KHI9M0RuLG49M0R0LHQ9M0QhMSksbiE9M0RudWxsJiYobj0zRHAuaXRlcmF0ZWUobixyKSk9Cjt2
YXIgaT0zRFtdLHM9M0RbXTtmb3IodmFyIG89M0QwLHU9M0RlLmxlbmd0aDtvPHU7bysrKXt2YXIg
YT0zRGVbb107aWYodCkoIT0Kb3x8cyE9M0Q9M0RhKSYmaS5wdXNoKGEpLHM9M0RhO2Vsc2UgaWYo
bil7dmFyIGY9M0RuKGEsbyxlKTtwLmluZGV4T2YocyxmKTwwPQomJihzLnB1c2goZiksaS5wdXNo
KGEpKX1lbHNlIHAuaW5kZXhPZihpLGEpPDAmJmkucHVzaChhKX1yZXR1cm4gaX0scC51bmlvbj0K
PTNEZnVuY3Rpb24oKXtyZXR1cm4gcC51bmlxKGcoYXJndW1lbnRzLCEwLCEwLFtdKSl9LHAuaW50
ZXJzZWN0aW9uPTNEZnVuY3RpPQpvbihlKXtpZihlPTNEPTNEbnVsbClyZXR1cm5bXTt2YXIgdD0z
RFtdLG49M0Rhcmd1bWVudHMubGVuZ3RoO2Zvcih2YXIgcj0zRDA9CixpPTNEZS5sZW5ndGg7cjxp
O3IrKyl7dmFyIHM9M0RlW3JdO2lmKHAuY29udGFpbnModCxzKSljb250aW51ZTtmb3IodmFyIG89
Cj0zRDE7bzxuO28rKylpZighcC5jb250YWlucyhhcmd1bWVudHNbb10scykpYnJlYWs7bz0zRD0z
RD0zRG4mJnQucHVzaChzKX1yZT0KdHVybiB0fSxwLmRpZmZlcmVuY2U9M0RmdW5jdGlvbihlKXt2
YXIgdD0zRGcoby5jYWxsKGFyZ3VtZW50cywxKSwhMCwhMCxbXSk7PQpyZXR1cm4gcC5maWx0ZXIo
ZSxmdW5jdGlvbihlKXtyZXR1cm4hcC5jb250YWlucyh0LGUpfSl9LHAuemlwPTNEZnVuY3Rpb24o
ZSk9CntpZihlPTNEPTNEbnVsbClyZXR1cm5bXTt2YXIgdD0zRHAubWF4KGFyZ3VtZW50cywibGVu
Z3RoIikubGVuZ3RoLG49M0RBcnJheT0KKHQpO2Zvcih2YXIgcj0zRDA7cjx0O3IrKyluW3JdPTNE
cC5wbHVjayhhcmd1bWVudHMscik7cmV0dXJuIG59LHAub2JqZWN0PTNEPQpmdW5jdGlvbihlLHQp
e2lmKGU9M0Q9M0RudWxsKXJldHVybnt9O3ZhciBuPTNEe307Zm9yKHZhciByPTNEMCxpPTNEZS5s
ZW5ndGg9CjtyPGk7cisrKXQ/bltlW3JdXT0zRHRbcl06bltlW3JdWzBdXT0zRGVbcl1bMV07cmV0
dXJuIG59LHAuaW5kZXhPZj0zRGZ1bmN0aT0Kb24oZSx0LG4pe2lmKGU9M0Q9M0RudWxsKXJldHVy
bi0xO3ZhciByPTNEMCxpPTNEZS5sZW5ndGg7aWYobil7aWYodHlwZW9mIG4hPQo9M0QibnVtYmVy
IilyZXR1cm4gcj0zRHAuc29ydGVkSW5kZXgoZSx0KSxlW3JdPTNEPTNEPTNEdD9yOi0xO3I9M0Ru
PDA/TWF0aC49Cm1heCgwLGkrbik6bn1mb3IoO3I8aTtyKyspaWYoZVtyXT0zRD0zRD0zRHQpcmV0
dXJuIHI7cmV0dXJuLTF9LHAubGFzdEluZGV4Tz0KZj0zRGZ1bmN0aW9uKGUsdCxuKXtpZihlPTNE
PTNEbnVsbClyZXR1cm4tMTt2YXIgcj0zRGUubGVuZ3RoO3R5cGVvZiBuPTNEPTNEPQoibnVtYmVy
IiYmKHI9M0RuPDA/cituKzE6TWF0aC5taW4ocixuKzEpKTt3aGlsZSgtLXI+PTNEMClpZihlW3Jd
PTNEPTNEPTNEdCk9CnJldHVybiByO3JldHVybi0xfSxwLnJhbmdlPTNEZnVuY3Rpb24oZSx0LG4p
e2FyZ3VtZW50cy5sZW5ndGg8PTNEMSYmKHQ9M0RlfD0KfDAsZT0zRDApLG49M0RufHwxO3ZhciBy
PTNETWF0aC5tYXgoTWF0aC5jZWlsKCh0LWUpL24pLDApLGk9M0RBcnJheShyKTtmb3IoPQp2YXIg
cz0zRDA7czxyO3MrKyxlKz0zRG4paVtzXT0zRGU7cmV0dXJuIGl9O3ZhciB5PTNEZnVuY3Rpb24o
KXt9O3AuYmluZD0zRGY9CnVuY3Rpb24oZSx0KXt2YXIgbixyO2lmKGgmJmUuYmluZD0zRD0zRD0z
RGgpcmV0dXJuIGguYXBwbHkoZSxvLmNhbGwoYXJndW1lbj0KdHMsMSkpO2lmKCFwLmlzRnVuY3Rp
b24oZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQmluZCBtdXN0IGJlIGNhbGxlZCBvbiBhIGZ1PQpu
Y3Rpb24iKTtyZXR1cm4gbj0zRG8uY2FsbChhcmd1bWVudHMsMikscj0zRGZ1bmN0aW9uKCl7aWYo
dGhpcyBpbnN0YW5jZW9mIHI9Cil7eS5wcm90b3R5cGU9M0RlLnByb3RvdHlwZTt2YXIgaT0zRG5l
dyB5O3kucHJvdG90eXBlPTNEbnVsbDt2YXIgcz0zRGUuYXBwbD0KeShpLG4uY29uY2F0KG8uY2Fs
bChhcmd1bWVudHMpKSk7cmV0dXJuIHAuaXNPYmplY3Qocyk/czppfXJldHVybiBlLmFwcGx5KHQs
PQpuLmNvbmNhdChvLmNhbGwoYXJndW1lbnRzKSkpfSxyfSxwLnBhcnRpYWw9M0RmdW5jdGlvbihl
KXt2YXIgdD0zRG8uY2FsbChhcmc9CnVtZW50cywxKTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj0z
RDAscj0zRHQuc2xpY2UoKTtmb3IodmFyIGk9M0QwLHM9M0RyLmxlbj0KZ3RoO2k8cztpKyspcltp
XT0zRD0zRD0zRHAmJihyW2ldPTNEYXJndW1lbnRzW24rK10pO3doaWxlKG48YXJndW1lbnRzLmxl
bmd0PQpoKXIucHVzaChhcmd1bWVudHNbbisrXSk7cmV0dXJuIGUuYXBwbHkodGhpcyxyKX19LHAu
YmluZEFsbD0zRGZ1bmN0aW9uKGUpe3Y9CmFyIHQsbj0zRGFyZ3VtZW50cy5sZW5ndGgscjtpZihu
PD0zRDEpdGhyb3cgbmV3IEVycm9yKCJiaW5kQWxsIG11c3QgYmUgcGFzcz0KZWQgZnVuY3Rpb24g
bmFtZXMiKTtmb3IodD0zRDE7dDxuO3QrKylyPTNEYXJndW1lbnRzW3RdLGVbcl09M0RwLmJpbmQo
ZVtyXSxlPQopO3JldHVybiBlfSxwLm1lbW9pemU9M0RmdW5jdGlvbihlLHQpe3ZhciBuPTNEZnVu
Y3Rpb24ocil7dmFyIGk9M0RuLmNhY2hlLHM9Cj0zRHQ/dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk6
cjtyZXR1cm4gcC5oYXMoaSxzKXx8KGlbc109M0RlLmFwcGx5KHRoaXMsYXJndT0KbWVudHMpKSxp
W3NdfTtyZXR1cm4gbi5jYWNoZT0zRHt9LG59LHAuZGVsYXk9M0RmdW5jdGlvbihlLHQpe3ZhciBu
PTNEby5jYWxsPQooYXJndW1lbnRzLDIpO3JldHVybiBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0
dXJuIGUuYXBwbHkobnVsbCxuKX0sdCl9LHAuZGU9CmZlcj0zRGZ1bmN0aW9uKGUpe3JldHVybiBw
LmRlbGF5LmFwcGx5KHAsW2UsMV0uY29uY2F0KG8uY2FsbChhcmd1bWVudHMsMSkpKT0KfSxwLnRo
cm90dGxlPTNEZnVuY3Rpb24oZSx0LG4pe3ZhciByLGkscyxvPTNEbnVsbCx1PTNEMDtufHwobj0z
RHt9KTt2YXIgYT0KPTNEZnVuY3Rpb24oKXt1PTNEbi5sZWFkaW5nPTNEPTNEPTNEITE/MDpwLm5v
dygpLG89M0RudWxsLHM9M0RlLmFwcGx5KHIsaSksPQpvfHwocj0zRGk9M0RudWxsKX07cmV0dXJu
IGZ1bmN0aW9uKCl7dmFyIGY9M0RwLm5vdygpOyF1JiZuLmxlYWRpbmc9M0Q9M0Q9M0Q9CiExJiYo
dT0zRGYpO3ZhciBsPTNEdC0oZi11KTtyZXR1cm4gcj0zRHRoaXMsaT0zRGFyZ3VtZW50cyxsPD0z
RDB8fGw+dD8oY2xlYT0KclRpbWVvdXQobyksbz0zRG51bGwsdT0zRGYscz0zRGUuYXBwbHkocixp
KSxvfHwocj0zRGk9M0RudWxsKSk6IW8mJm4udHJhaWxpPQpuZyE9M0Q9M0QhMSYmKG89M0RzZXRU
aW1lb3V0KGEsbCkpLHN9fSxwLmRlYm91bmNlPTNEZnVuY3Rpb24oZSx0LG4pe3ZhciByLGk9Cixz
LG8sdSxhPTNEZnVuY3Rpb24oKXt2YXIgZj0zRHAubm93KCktbztmPHQmJmY+MD9yPTNEc2V0VGlt
ZW91dChhLHQtZik6KHI9Cj0zRG51bGwsbnx8KHU9M0RlLmFwcGx5KHMsaSkscnx8KHM9M0RpPTNE
bnVsbCkpKX07cmV0dXJuIGZ1bmN0aW9uKCl7cz0zRHRoaT0KcyxpPTNEYXJndW1lbnRzLG89M0Rw
Lm5vdygpO3ZhciBmPTNEbiYmIXI7cmV0dXJuIHJ8fChyPTNEc2V0VGltZW91dChhLHQpKSxmPQom
Jih1PTNEZS5hcHBseShzLGkpLHM9M0RpPTNEbnVsbCksdX19LHAud3JhcD0zRGZ1bmN0aW9uKGUs
dCl7cmV0dXJuIHAucGFydGk9CmFsKHQsZSl9LHAubmVnYXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGZ1bmN0aW9uKCl7cmV0dXJuIWUuYXBwbHkodGhpcyxhcmd1bT0KZW50cyl9fSxwLmNvbXBvc2U9
M0RmdW5jdGlvbigpe3ZhciBlPTNEYXJndW1lbnRzLHQ9M0RlLmxlbmd0aC0xO3JldHVybiBmdW5j
PQp0aW9uKCl7dmFyIG49M0R0LHI9M0RlW3RdLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt3aGlsZShu
LS0pcj0zRGVbbl0uY2FsbCh0aGk9CnMscik7cmV0dXJuIHJ9fSxwLmFmdGVyPTNEZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtpZigtLWU8MSlyZXR1cm4gdD0KLmFwcGx5KHRoaXMsYXJn
dW1lbnRzKX19LHAuYmVmb3JlPTNEZnVuY3Rpb24oZSx0KXt2YXIgbjtyZXR1cm4gZnVuY3Rpb24o
KXtyPQpldHVybi0tZT4wP249M0R0LmFwcGx5KHRoaXMsYXJndW1lbnRzKTp0PTNEbnVsbCxufX0s
cC5vbmNlPTNEcC5wYXJ0aWFsKHAuYmU9CmZvcmUsMikscC5rZXlzPTNEZnVuY3Rpb24oZSl7aWYo
IXAuaXNPYmplY3QoZSkpcmV0dXJuW107aWYoYylyZXR1cm4gYyhlKTt2YT0KciB0PTNEW107Zm9y
KHZhciBuIGluIGUpcC5oYXMoZSxuKSYmdC5wdXNoKG4pO3JldHVybiB0fSxwLnZhbHVlcz0zRGZ1
bmN0aW9uPQooZSl7dmFyIHQ9M0RwLmtleXMoZSksbj0zRHQubGVuZ3RoLHI9M0RBcnJheShuKTtm
b3IodmFyIGk9M0QwO2k8bjtpKyspcltpXT0KPTNEZVt0W2ldXTtyZXR1cm4gcn0scC5wYWlycz0z
RGZ1bmN0aW9uKGUpe3ZhciB0PTNEcC5rZXlzKGUpLG49M0R0Lmxlbmd0aCxyPQo9M0RBcnJheShu
KTtmb3IodmFyIGk9M0QwO2k8bjtpKyspcltpXT0zRFt0W2ldLGVbdFtpXV1dO3JldHVybiByfSxw
LmludmVydD0KPTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0R7fSxuPTNEcC5rZXlzKGUpO2Zvcih2YXIg
cj0zRDAsaT0zRG4ubGVuZ3RoO3I8aTtyKyspPQp0W2VbbltyXV1dPTNEbltyXTtyZXR1cm4gdH0s
cC5mdW5jdGlvbnM9M0RwLm1ldGhvZHM9M0RmdW5jdGlvbihlKXt2YXIgdD0zRFs9Cl07Zm9yKHZh
ciBuIGluIGUpcC5pc0Z1bmN0aW9uKGVbbl0pJiZ0LnB1c2gobik7cmV0dXJuIHQuc29ydCgpfSxw
LmV4dGVuZD0zRD0KZnVuY3Rpb24oZSl7aWYoIXAuaXNPYmplY3QoZSkpcmV0dXJuIGU7dmFyIHQs
bjtmb3IodmFyIHI9M0QxLGk9M0Rhcmd1bWVudHMuPQpsZW5ndGg7cjxpO3IrKyl7dD0zRGFyZ3Vt
ZW50c1tyXTtmb3IobiBpbiB0KWYuY2FsbCh0LG4pJiYoZVtuXT0zRHRbbl0pfXJldHU9CnJuIGV9
LHAucGljaz0zRGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0zRHt9LGk7aWYoZT0zRD0zRG51bGwpcmV0
dXJuIHI7aWYocC5pcz0KRnVuY3Rpb24odCkpe3Q9M0RkKHQsbik7Zm9yKGkgaW4gZSl7dmFyIHM9
M0RlW2ldO3QocyxpLGUpJiYocltpXT0zRHMpfX1lbHNlPQp7dmFyIGE9M0R1LmFwcGx5KFtdLG8u
Y2FsbChhcmd1bWVudHMsMSkpO2U9M0RuZXcgT2JqZWN0KGUpO2Zvcih2YXIgZj0zRDAsbD0KPTNE
YS5sZW5ndGg7ZjxsO2YrKylpPTNEYVtmXSxpIGluIGUmJihyW2ldPTNEZVtpXSl9cmV0dXJuIHJ9
LHAub21pdD0zRGZ1bmN0PQppb24oZSx0LG4pe2lmKHAuaXNGdW5jdGlvbih0KSl0PTNEcC5uZWdh
dGUodCk7ZWxzZXt2YXIgcj0zRHAubWFwKHUuYXBwbHkoW109CixvLmNhbGwoYXJndW1lbnRzLDEp
KSxTdHJpbmcpO3Q9M0RmdW5jdGlvbihlLHQpe3JldHVybiFwLmNvbnRhaW5zKHIsdCl9fXJldD0K
dXJuIHAucGljayhlLHQsbil9LHAuZGVmYXVsdHM9M0RmdW5jdGlvbihlKXtpZighcC5pc09iamVj
dChlKSlyZXR1cm4gZTtmb3IoPQp2YXIgdD0zRDEsbj0zRGFyZ3VtZW50cy5sZW5ndGg7dDxuO3Qr
Kyl7dmFyIHI9M0Rhcmd1bWVudHNbdF07Zm9yKHZhciBpIGluIHI9CillW2ldPTNEPTNEPTNEdm9p
ZCAwJiYoZVtpXT0zRHJbaV0pfXJldHVybiBlfSxwLmNsb25lPTNEZnVuY3Rpb24oZSl7cmV0dXJu
ID0KcC5pc09iamVjdChlKT9wLmlzQXJyYXkoZSk/ZS5zbGljZSgpOnAuZXh0ZW5kKHt9LGUpOmV9
LHAudGFwPTNEZnVuY3Rpb24oZSx0PQope3JldHVybiB0KGUpLGV9O3ZhciBiPTNEZnVuY3Rpb24o
ZSx0LG4scil7aWYoZT0zRD0zRD0zRHQpcmV0dXJuIGUhPTNEPTNEMHw9CnwxL2U9M0Q9M0Q9M0Qx
L3Q7aWYoZT0zRD0zRG51bGx8fHQ9M0Q9M0RudWxsKXJldHVybiBlPTNEPTNEPTNEdDtlIGluc3Rh
bmNlbz0KZiBwJiYoZT0zRGUuX3dyYXBwZWQpLHQgaW5zdGFuY2VvZiBwJiYodD0zRHQuX3dyYXBw
ZWQpO3ZhciBpPTNEYS5jYWxsKGUpO2lmPQooaSE9M0Q9M0RhLmNhbGwodCkpcmV0dXJuITE7c3dp
dGNoKGkpe2Nhc2UiW29iamVjdCBSZWdFeHBdIjpjYXNlIltvYmplY3QgU3Q9CnJpbmddIjpyZXR1
cm4iIitlPTNEPTNEIiIrdDtjYXNlIltvYmplY3QgTnVtYmVyXSI6aWYoK2UhPTNEPTNEK2UpcmV0
dXJuK3QhPQo9M0Q9M0QrdDtyZXR1cm4rZT0zRD0zRD0zRDA/MS8rZT0zRD0zRD0zRDEvdDorZT0z
RD0zRD0zRCt0O2Nhc2UiW29iamVjdCBEYXQ9CmVdIjpjYXNlIltvYmplY3QgQm9vbGVhbl0iOnJl
dHVybitlPTNEPTNEPTNEK3R9aWYodHlwZW9mIGUhPTNEIm9iamVjdCJ8fHR5cD0KZW9mIHQhPTNE
Im9iamVjdCIpcmV0dXJuITE7dmFyIHM9M0RuLmxlbmd0aDt3aGlsZShzLS0paWYobltzXT0zRD0z
RD0zRGUpcmV0PQp1cm4gcltzXT0zRD0zRD0zRHQ7dmFyIG89M0RlLmNvbnN0cnVjdG9yLHU9M0R0
LmNvbnN0cnVjdG9yO2lmKG8hPTNEPTNEdSYmImM9Cm9uc3RydWN0b3IiaW4gZSYmImNvbnN0cnVj
dG9yImluIHQmJiEocC5pc0Z1bmN0aW9uKG8pJiZvIGluc3RhbmNlb2YgbyYmcC5pcz0KRnVuY3Rp
b24odSkmJnUgaW5zdGFuY2VvZiB1KSlyZXR1cm4hMTtuLnB1c2goZSksci5wdXNoKHQpO3ZhciBm
LGw7aWYoaT0zRD0KPTNEPTNEIltvYmplY3QgQXJyYXldIil7Zj0zRGUubGVuZ3RoLGw9M0RmPTNE
PTNEPTNEdC5sZW5ndGg7aWYobCl3aGlsZShmLS0pPQppZighKGw9M0RiKGVbZl0sdFtmXSxuLHIp
KSlicmVha31lbHNle3ZhciBjPTNEcC5rZXlzKGUpLGg7Zj0zRGMubGVuZ3RoLGw9M0Q9CnAua2V5
cyh0KS5sZW5ndGg9M0Q9M0Q9M0RmO2lmKGwpd2hpbGUoZi0tKXtoPTNEY1tmXTtpZighKGw9M0Rw
Lmhhcyh0LGgpJiZiKD0KZVtoXSx0W2hdLG4scikpKWJyZWFrfX1yZXR1cm4gbi5wb3AoKSxyLnBv
cCgpLGx9O3AuaXNFcXVhbD0zRGZ1bmN0aW9uKGUsdCl7PQpyZXR1cm4gYihlLHQsW10sW10pfSxw
LmlzRW1wdHk9M0RmdW5jdGlvbihlKXtpZihlPTNEPTNEbnVsbClyZXR1cm4hMDtpZihwLmk9CnNB
cnJheShlKXx8cC5pc1N0cmluZyhlKXx8cC5pc0FyZ3VtZW50cyhlKSlyZXR1cm4gZS5sZW5ndGg9
M0Q9M0Q9M0QwO2Zvcih2YT0KciB0IGluIGUpaWYocC5oYXMoZSx0KSlyZXR1cm4hMTtyZXR1cm4h
MH0scC5pc0VsZW1lbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4hPQohZSYmZS5ub2RlVHlwZT0zRD0z
RD0zRDF9LHAuaXNBcnJheT0zRGx8fGZ1bmN0aW9uKGUpe3JldHVybiBhLmNhbGwoZSk9M0Q9M0Q9
Cj0zRCJbb2JqZWN0IEFycmF5XSJ9LHAuaXNPYmplY3Q9M0RmdW5jdGlvbihlKXt2YXIgdD0zRHR5
cGVvZiBlO3JldHVybiB0PTNEPQo9M0Q9M0QiZnVuY3Rpb24ifHx0PTNEPTNEPTNEIm9iamVjdCIm
JiEhZX0scC5lYWNoKFsiQXJndW1lbnRzIiwiRnVuY3Rpb24iLCI9ClN0cmluZyIsIk51bWJlciIs
IkRhdGUiLCJSZWdFeHAiXSxmdW5jdGlvbihlKXtwWyJpcyIrZV09M0RmdW5jdGlvbih0KXtyZXR1
cj0KbiBhLmNhbGwodCk9M0Q9M0Q9M0QiW29iamVjdCAiK2UrIl0ifX0pLHAuaXNBcmd1bWVudHMo
YXJndW1lbnRzKXx8KHAuaXNBcmd1PQptZW50cz0zRGZ1bmN0aW9uKGUpe3JldHVybiBwLmhhcyhl
LCJjYWxsZWUiKX0pLHR5cGVvZiAvLi8hPTNEImZ1bmN0aW9uIiYmKHA9Ci5pc0Z1bmN0aW9uPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlPTNEPTNEImZ1bmN0aW9uInx8ITF9KSxwLmlzRmlu
aXRlPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gaXNGaW5pdGUoZSkmJiFpc05hTihwYXJzZUZsb2F0
KGUpKX0scC5pc05hTj0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJuIHAuaXNOdW1iZXIoZSkmJmUhPTNE
PTNEK2V9LHAuaXNCb29sZWFuPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGU9Cj0zRD0zRD0zRCEwfHxl
PTNEPTNEPTNEITF8fGEuY2FsbChlKT0zRD0zRD0zRCJbb2JqZWN0IEJvb2xlYW5dIn0scC5pc051
bGw9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBlPTNEPTNEPTNEbnVsbH0scC5pc1VuZGVmaW5lZD0z
RGZ1bmN0aW9uKGUpe3JldHVybiBlPQo9M0Q9M0Q9M0R2b2lkIDB9LHAuaGFzPTNEZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gZSE9M0RudWxsJiZmLmNhbGwoZSx0KX0scC5ub0M9Cm9uZmxpY3Q9M0RmdW5j
dGlvbigpe3JldHVybiBlLl89M0R0LHRoaXN9LHAuaWRlbnRpdHk9M0RmdW5jdGlvbihlKXtyZXR1
cm4gZT0KfSxwLmNvbnN0YW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJu
IGV9fSxwLm5vb3A9M0RmdW5jdGlvbigpPQp7fSxwLnByb3BlcnR5PTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGZ1bmN0aW9uKHQpe3JldHVybiB0W2VdfX0scC5tYXRjaGVzPTNEZnU9Cm5jdGlvbihlKXt2
YXIgdD0zRHAucGFpcnMoZSksbj0zRHQubGVuZ3RoO3JldHVybiBmdW5jdGlvbihlKXtpZihlPTNE
PTNEbnVsbD0KKXJldHVybiFuO2U9M0RuZXcgT2JqZWN0KGUpO2Zvcih2YXIgcj0zRDA7cjxuO3Ir
Kyl7dmFyIGk9M0R0W3JdLHM9M0RpWzBdO2lmPQooaVsxXSE9M0Q9M0RlW3NdfHwhKHMgaW4gZSkp
cmV0dXJuITF9cmV0dXJuITB9fSxwLnRpbWVzPTNEZnVuY3Rpb24oZSx0LG4pe3Y9CmFyIHI9M0RB
cnJheShNYXRoLm1heCgwLGUpKTt0PTNEZCh0LG4sMSk7Zm9yKHZhciBpPTNEMDtpPGU7aSsrKXJb
aV09M0R0KGkpOz0KcmV0dXJuIHJ9LHAucmFuZG9tPTNEZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD0z
RD0zRG51bGwmJih0PTNEZSxlPTNEMCksZStNYXRoPQouZmxvb3IoTWF0aC5yYW5kb20oKSoodC1l
KzEpKX0scC5ub3c9M0REYXRlLm5vd3x8ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGU9CikuZ2V0
VGltZSgpfTt2YXIgdz0zRHsiJiI6IiZhbXA7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyIsJyInOiIm
cXVvdDsiLCInIjoiJj0KI3gyNzsiLCJgIjoiJiN4NjA7In0sRT0zRHAuaW52ZXJ0KHcpLFM9M0Rm
dW5jdGlvbihlKXt2YXIgdD0zRGZ1bmN0aW9uKHQpe3JlPQp0dXJuIGVbdF19LG49M0QiKD86Iitw
LmtleXMoZSkuam9pbigifCIpKyIpIixyPTNEUmVnRXhwKG4pLGk9M0RSZWdFeHAobiwiZyI9Cik7
cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlPTNEZT0zRD0zRG51bGw/IiI6IiIrZSxyLnRlc3Qo
ZSk/ZS5yZXBsYWNlKGksdD0KKTplfX07cC5lc2NhcGU9M0RTKHcpLHAudW5lc2NhcGU9M0RTKEUp
LHAucmVzdWx0PTNEZnVuY3Rpb24oZSx0KXtpZihlPTNEPTNEPQpudWxsKXJldHVybiB2b2lkIDA7
dmFyIG49M0RlW3RdO3JldHVybiBwLmlzRnVuY3Rpb24obik/ZVt0XSgpOm59O3ZhciB4PTNEMDs9
CnAudW5pcXVlSWQ9M0RmdW5jdGlvbihlKXt2YXIgdD0zRCsreCsiIjtyZXR1cm4gZT9lK3Q6dH0s
cC50ZW1wbGF0ZVNldHRpbmdzPQo9M0R7ZXZhbHVhdGU6LzwlKFtcc1xTXSs/KSU+L2csaW50ZXJw
b2xhdGU6LzwlPTNEKFtcc1xTXSs/KSU+L2csZXNjYXBlOi88JS09CihbXHNcU10rPyklPi9nfTt2
YXIgVD0zRC8oLileLyxOPTNEeyInIjoiJyIsIlxcIjoiXFwiLCJcciI6InIiLCJcbiI6Im4iLCJc
dT0KMjAyOCI6InUyMDI4IiwiXHUyMDI5IjoidTIwMjkifSxDPTNEL1xcfCd8XHJ8XG58XHUyMDI4
fFx1MjAyOS9nLGs9M0RmdW5jdGlvPQpuKGUpe3JldHVybiJcXCIrTltlXX07cC50ZW1wbGF0ZT0z
RGZ1bmN0aW9uKGUsdCxuKXshdCYmbiYmKHQ9M0RuKSx0PTNEcC5kZWY9CmF1bHRzKHt9LHQscC50
ZW1wbGF0ZVNldHRpbmdzKTt2YXIgcj0zRFJlZ0V4cChbKHQuZXNjYXBlfHxUKS5zb3VyY2UsKHQu
aW50ZT0KcnBvbGF0ZXx8VCkuc291cmNlLCh0LmV2YWx1YXRlfHxUKS5zb3VyY2VdLmpvaW4oInwi
KSsifCQiLCJnIiksaT0zRDAscz0zRCJfPQpfcCs9M0QnIjtlLnJlcGxhY2UocixmdW5jdGlvbih0
LG4scixvLHUpe3JldHVybiBzKz0zRGUuc2xpY2UoaSx1KS5yZXBsYWNlKEM9CixrKSxpPTNEdSt0
Lmxlbmd0aCxuP3MrPTNEIicrXG4oKF9fdD0zRCgiK24rIikpPTNEPTNEbnVsbD8nJzpfLmVzY2Fw
ZShfX3QpKT0KK1xuJyI6cj9zKz0zRCInK1xuKChfX3Q9M0QoIityKyIpKT0zRD0zRG51bGw/Jyc6
X190KStcbiciOm8mJihzKz0zRCInO1xuIitvPQorIlxuX19wKz0zRCciKSx0fSkscys9M0QiJztc
biIsdC52YXJpYWJsZXx8KHM9M0Qid2l0aChvYmp8fHt9KXtcbiIrcysifVxuIik9CixzPTNEInZh
ciBfX3QsX19wPTNEJycsX19qPTNEQXJyYXkucHJvdG90eXBlLmpvaW4scHJpbnQ9M0RmdW5jdGlv
bigpe19fcCs9Cj0zRF9fai5jYWxsKGFyZ3VtZW50cywnJyk7fTtcbiIrcysicmV0dXJuIF9fcDtc
biI7dHJ5e3ZhciBvPTNEbmV3IEZ1bmN0aW9uKD0KdC52YXJpYWJsZXx8Im9iaiIsIl8iLHMpfWNh
dGNoKHUpe3Rocm93IHUuc291cmNlPTNEcyx1fXZhciBhPTNEZnVuY3Rpb24oZSl7PQpyZXR1cm4g
by5jYWxsKHRoaXMsZSxwKX0sZj0zRHQudmFyaWFibGV8fCJvYmoiO3JldHVybiBhLnNvdXJjZT0z
RCJmdW5jdGlvbig9CiIrZisiKXtcbiIrcysifSIsYX0scC5jaGFpbj0zRGZ1bmN0aW9uKGUpe3Zh
ciB0PTNEcChlKTtyZXR1cm4gdC5fY2hhaW49M0QhMD0KLHR9O3ZhciBMPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIHRoaXMuX2NoYWluP3AoZSkuY2hhaW4oKTplfTtwLm1peGluPTNEZnVuY3RpPQpvbihl
KXtwLmVhY2gocC5mdW5jdGlvbnMoZSksZnVuY3Rpb24odCl7dmFyIG49M0RwW3RdPTNEZVt0XTtw
LnByb3RvdHlwZVt0XT0KPTNEZnVuY3Rpb24oKXt2YXIgZT0zRFt0aGlzLl93cmFwcGVkXTtyZXR1
cm4gcy5hcHBseShlLGFyZ3VtZW50cyksTC5jYWxsKHRoPQppcyxuLmFwcGx5KHAsZSkpfX0pfSxw
Lm1peGluKHApLHAuZWFjaChbInBvcCIsInB1c2giLCJyZXZlcnNlIiwic2hpZnQiLCJzb3I9CnQi
LCJzcGxpY2UiLCJ1bnNoaWZ0Il0sZnVuY3Rpb24oZSl7dmFyIHQ9M0RuW2VdO3AucHJvdG90eXBl
W2VdPTNEZnVuY3Rpb24oKT0Ke3ZhciBuPTNEdGhpcy5fd3JhcHBlZDtyZXR1cm4gdC5hcHBseShu
LGFyZ3VtZW50cyksKGU9M0Q9M0Q9M0Qic2hpZnQifHxlPTNEPQo9M0Q9M0Qic3BsaWNlIikmJm4u
bGVuZ3RoPTNEPTNEPTNEMCYmZGVsZXRlIG5bMF0sTC5jYWxsKHRoaXMsbil9fSkscC5lYWNoKFs9
CiJjb25jYXQiLCJqb2luIiwic2xpY2UiXSxmdW5jdGlvbihlKXt2YXIgdD0zRG5bZV07cC5wcm90
b3R5cGVbZV09M0RmdW5jdGlvbj0KKCl7cmV0dXJuIEwuY2FsbCh0aGlzLHQuYXBwbHkodGhpcy5f
d3JhcHBlZCxhcmd1bWVudHMpKX19KSxwLnByb3RvdHlwZS52YWx1PQplPTNEZnVuY3Rpb24oKXty
ZXR1cm4gdGhpcy5fd3JhcHBlZH0sdHlwZW9mIGRlZmluZT0zRD0zRCJmdW5jdGlvbiImJmRlZmlu
ZS49CmFtZCYmZGVmaW5lKCJ1bmRlcnNjb3JlIixbXSxmdW5jdGlvbigpe3JldHVybiBwfSl9LmNh
bGwodGhpcyksZGVmaW5lKCJsaWJzLz0KdW5kZXJzY29yZSIsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1
bmN0aW9uKCl7dmFyIHQsbjtyZXR1cm4gdHx8ZS5ffX0odGhpcykpLGRlPQpmaW5lKCJ1dGlscy91
dGlscyIsWyJsaWJzL3VuZGVyc2NvcmUiXSxmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsbil7Zm9y
KHZhciA9CnIgaW4gZSl7dmFyIGk9M0RlW3JdO2kmJnR5cGVvZiBpPTNEPTNEIm9iamVjdCImJihu
KGkpLHQoaSxuKSl9fWZ1bmN0aW9uIG4oZT0KKXtyZXR1cm4gJCgiPGRpdi8+IikudGV4dChlKS5o
dG1sKCl9ZnVuY3Rpb24gcihlKXtlIGluc3RhbmNlb2YgQXJyYXl8fChlPTNEPQpbZV0pO2Zvcih2
YXIgdCBpbiBlKWlmKFsiTm9uZSIsbnVsbCwibnVsbCIsdW5kZWZpbmVkLCJ1bmRlZmluZWQiXS5p
bmRleE9mKGU9Clt0XSk+LTEpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gaShlKXt2YXIgZT0z
RGUudG9TdHJpbmcoKTtpZihlKXtlPTNEZS5yZT0KcGxhY2UoLywvZywiLCAiKTt2YXIgdD0zRGUu
bGFzdEluZGV4T2YoIiwgIik7cmV0dXJuIHQhPTNELTEmJihlPTNEZS5zdWJzdHIoPQowLHQpKyIg
b3IgIitlLnN1YnN0cih0KzEpKSxlfXJldHVybiIifWZ1bmN0aW9uIHMoZSl7dG9wLl9fdXRpbHNf
X2dldF9fPTNEdG89CnAuX191dGlsc19fZ2V0X198fHt9LGUuY2FjaGUmJnRvcC5fX3V0aWxzX19n
ZXRfX1tlLnVybF0/KGUuc3VjY2VzcyYmZS5zdWNjZT0Kc3ModG9wLl9fdXRpbHNfX2dldF9fW2Uu
dXJsXSksY29uc29sZS5kZWJ1ZygidXRpbHMuanM6OmdldCgpIC0gRmV0Y2hpbmcgZnJvPQptIGNh
Y2hlIFsiK2UudXJsKyJdLiIpKTpvKHt1cmw6ZS51cmwsZGF0YTplLmRhdGEsc3VjY2VzczpmdW5j
dGlvbih0KXt0b3AuX189CnV0aWxzX19nZXRfX1tlLnVybF09M0R0LGUuc3VjY2VzcyYmZS5zdWNj
ZXNzKHQpfSxlcnJvcjpmdW5jdGlvbih0KXtlLmVycm9yJj0KJmUuZXJyb3IodCl9fSl9ZnVuY3Rp
b24gbyhlKXt2YXIgdD0zRHtjb250ZW50VHlwZToiYXBwbGljYXRpb24vanNvbiIsdHlwZTplPQou
dHlwZXx8IkdFVCIsZGF0YTplLmRhdGF8fHt9LHVybDplLnVybH07dC50eXBlPTNEPTNEIkdFVCJ8
fHQudHlwZT0zRD0zRCJERUw9CkVURSI/KHQudXJsLmluZGV4T2YoIj8iKT0zRD0zRC0xP3QudXJs
Kz0zRCI/Ijp0LnVybCs9M0QiJiIsdC51cmw9M0R0LnVybCskLj0KcGFyYW0odC5kYXRhKSx0LmRh
dGE9M0RudWxsKToodC5kYXRhVHlwZT0zRCJqc29uIix0LnVybD0zRHQudXJsLHQuZGF0YT0zREpT
PQpPTi5zdHJpbmdpZnkodC5kYXRhKSksJC5hamF4KHQpLmRvbmUoZnVuY3Rpb24odCl7aWYodHlw
ZW9mIHQ9M0Q9M0Qic3RyaW5nIik9CnRyeXt0PTNEdC5yZXBsYWNlKCJJbmZpbml0eSwiLCciSW5m
aW5pdHkiLCcpLHQ9M0RqUXVlcnkucGFyc2VKU09OKHQpfWNhdGNoKD0Kbil7Y29uc29sZS5kZWJ1
ZyhuKX1lLnN1Y2Nlc3MmJmUuc3VjY2Vzcyh0KX0pLmZhaWwoZnVuY3Rpb24odCl7dmFyIG49M0Ru
dWxsPQo7dHJ5e249M0RqUXVlcnkucGFyc2VKU09OKHQucmVzcG9uc2VUZXh0KX1jYXRjaChyKXtu
PTNEdC5yZXNwb25zZVRleHR9ZS5lcnI9Cm9yJiZlLmVycm9yKG4sdCl9KX1mdW5jdGlvbiB1KGUs
dCl7dmFyIG49M0QkKCc8ZGl2IGNsYXNzPTNEIicrZSsnIj48L2Rpdj4nKT0KO24uYXBwZW5kVG8o
IjplcSgwKSIpO3ZhciByPTNEbi5jc3ModCk7cmV0dXJuIG4ucmVtb3ZlKCkscn1mdW5jdGlvbiBh
KGUpeyQoPQonbGlua1tocmVmXj0zRCInK2UrJyJdJykubGVuZ3RofHwkKCc8bGluayBocmVmPTNE
IicrZ2FsYXh5X2NvbmZpZy5yb290K2UrJyI9CiByZWw9M0Qic3R5bGVzaGVldCI+JykuYXBwZW5k
VG8oImhlYWQiKX1mdW5jdGlvbiBmKHQsbil7cmV0dXJuIHQ/ZS5kZWZhdWx0cz0KKHQsbik6bn1m
dW5jdGlvbiBsKGUsdCl7dmFyIG49M0QiIjtpZihlPj0zRDFlMTEpZS89M0QxZTExLG49M0QiVEIi
O2Vsc2UgaWYoPQplPj0zRDFlOCllLz0zRDFlOCxuPTNEIkdCIjtlbHNlIGlmKGU+PTNEMWU1KWUv
PTNEMWU1LG49M0QiTUIiO2Vsc2UgaWYoZT49M0Q9CjEwMCllLz0zRDEwMCxuPTNEIktCIjtlbHNl
e2lmKCEoZT4wKSlyZXR1cm4iPHN0cm9uZz4tPC9zdHJvbmc+IjtlKj0zRDEwLG49Cj0zRCJiIn12
YXIgcj0zRE1hdGgucm91bmQoZSkvMTA7cmV0dXJuIHQ/cisiICIrbjoiPHN0cm9uZz4iK3IrIjwv
c3Ryb25nPiAiKz0Kbn1mdW5jdGlvbiBjKCl7cmV0dXJuIngiK01hdGgucmFuZG9tKCkudG9TdHJp
bmcoMzYpLnN1YnN0cmluZygyLDkpfWZ1bmN0aW9uPQogaChlKXt2YXIgdD0zRCQoIjxwPjwvcD4i
KTtyZXR1cm4gdC5hcHBlbmQoZSksdH1mdW5jdGlvbiBwKCl7dmFyIGU9M0RuZXcgRGE9CnRlLHQ9
M0QoZS5nZXRIb3VycygpPDEwPyIwIjoiIikrZS5nZXRIb3VycygpLG49M0QoZS5nZXRNaW51dGVz
KCk8MTA/IjAiOiIiKT0KK2UuZ2V0TWludXRlcygpLHI9M0RlLmdldERhdGUoKSsiLyIrKGUuZ2V0
TW9udGgoKSsxKSsiLyIrZS5nZXRGdWxsWWVhcigpKyIsPQogIit0KyI6IituO3JldHVybiByfXJl
dHVybntjc3NMb2FkRmlsZTphLGNzc0dldEF0dHJpYnV0ZTp1LGdldDpzLG1lcmdlOmYsYnk9CnRl
c1RvU3RyaW5nOmwsdXVpZDpjLHRpbWU6cCx3cmFwOmgscmVxdWVzdDpvLHNhbml0aXplOm4sdGV4
dGlmeTppLHZhbGlkYXRlOj0KcixkZWVwZWFjaDp0fX0pLGRlZmluZSgibXZjL3VpL3VpLXBvcnRs
ZXQiLFsidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihlKXt2YXIgPQp0PTNEQmFja2JvbmUuVmlldy5l
eHRlbmQoe3Zpc2libGU6ITEsb3B0aW9uc0RlZmF1bHQ6e3RpdGxlOiIiLGljb246IiIsYnV0dG89
Cm5zOm51bGwsYm9keTpudWxsLHNjcm9sbGFibGU6ITAsbm9wYWRkaW5nOiExLG9wZXJhdGlvbnM6
bnVsbCxwbGFjZW1lbnQ6ImJvdD0KdG9tIixjbHM6InVpLXBvcnRsZXQiLG9wZXJhdGlvbnNfZmx0
OiJyaWdodCJ9LCR0aXRsZTpudWxsLCRjb250ZW50Om51bGwsJGJ1PQp0dG9uczpudWxsLCRvcGVy
YXRpb25zOm51bGwsJGhlYWRlcjpudWxsLGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5vcHRp
b249CnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGVtZW50KHRo
aXMuX3RlbXBsYXRlKHRoaXMub3B0aT0Kb25zKSksdGhpcy4kY29udGVudD0zRHRoaXMuJGVsLmZp
bmQoIi5jb250ZW50IiksdGhpcy4kdGl0bGU9M0R0aGlzLiRlbC5maW5kPQooIi5wb3J0bGV0LXRp
dGxlLXRleHQiKSx0aGlzLiRoZWFkZXI9M0R0aGlzLiRlbC5maW5kKCIucG9ydGxldC1oZWFkZXIi
KTt2YXI9CiBuPTNEdGhpcy4kZWwuZmluZCgiLnBvcnRsZXQtY29udGVudCIpO3RoaXMub3B0aW9u
cy5zY3JvbGxhYmxlP24uYWRkQ2xhc3MoIj0Kc2Nyb2xsIik6dGhpcy5vcHRpb25zLnRpdGxlP24u
YWRkQ2xhc3MoIm5vLXNjcm9sbCIpOm4uYWRkQ2xhc3MoIm5vLXNjcm9sbC1uPQpvLXRpdGxlIiks
dGhpcy5vcHRpb25zLm5vcGFkZGluZyYmKG4uY3NzKCJwYWRkaW5nIiwiMHB4IiksdGhpcy4kY29u
dGVudC5jc3M9CigicGFkZGluZyIsIjBweCIpKSx0aGlzLiRidXR0b25zPTNEJCh0aGlzLmVsKS5m
aW5kKCIuYnV0dG9ucyIpO2lmKHRoaXMub3B0aT0Kb25zLmJ1dHRvbnMpe3ZhciByPTNEdGhpczsk
LmVhY2godGhpcy5vcHRpb25zLmJ1dHRvbnMsZnVuY3Rpb24oZSx0KXt0LiRlbC5wPQpyb3AoImlk
IixlKSxyLiRidXR0b25zLmFwcGVuZCh0LiRlbCl9KX1lbHNlIHRoaXMuJGJ1dHRvbnMucmVtb3Zl
KCk7dGhpcy4kb3A9CmVyYXRpb25zPTNEJCh0aGlzLmVsKS5maW5kKCIub3BlcmF0aW9ucyIpO2lm
KHRoaXMub3B0aW9ucy5vcGVyYXRpb25zKXt2YXIgcj0KPTNEdGhpczskLmVhY2godGhpcy5vcHRp
b25zLm9wZXJhdGlvbnMsZnVuY3Rpb24oZSx0KXt0LiRlbC5wcm9wKCJpZCIsZSksci4kPQpvcGVy
YXRpb25zLmFwcGVuZCh0LiRlbCl9KX10aGlzLm9wdGlvbnMuYm9keSYmdGhpcy5hcHBlbmQodGhp
cy5vcHRpb25zLmJvZHk9Cil9LGFwcGVuZDpmdW5jdGlvbih0LG4pe24/dGhpcy4kY29udGVudC5h
cHBlbmQodCk6dGhpcy4kY29udGVudC5hcHBlbmQoZS53cj0KYXAodCkpfSxjb250ZW50OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuJGNvbnRlbnR9LHNob3c6ZnVuY3Rpb24oKXt0aGlzLiRlbC5mPQph
ZGVJbigiZmFzdCIpLHRoaXMudmlzaWJsZT0zRCEwfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy4kZWwu
ZmFkZU91dCgiZmFzdCIpLHQ9Cmhpcy52aXNpYmxlPTNEITF9LGVuYWJsZUJ1dHRvbjpmdW5jdGlv
bihlKXt0aGlzLiRidXR0b25zLmZpbmQoIiMiK2UpLnByb3AoIj0KZGlzYWJsZWQiLCExKX0sZGlz
YWJsZUJ1dHRvbjpmdW5jdGlvbihlKXt0aGlzLiRidXR0b25zLmZpbmQoIiMiK2UpLnByb3AoImRp
PQpzYWJsZWQiLCEwKX0saGlkZU9wZXJhdGlvbjpmdW5jdGlvbihlKXt0aGlzLiRvcGVyYXRpb25z
LmZpbmQoIiMiK2UpLmhpZGUoKX09CixzaG93T3BlcmF0aW9uOmZ1bmN0aW9uKGUpe3RoaXMuJG9w
ZXJhdGlvbnMuZmluZCgiIyIrZSkuc2hvdygpfSxzZXRPcGVyYXRpbz0KbjpmdW5jdGlvbihlLHQp
e3ZhciBuPTNEdGhpcy4kb3BlcmF0aW9ucy5maW5kKCIjIitlKTtuLm9mZigiY2xpY2siKSxuLm9u
KCJjPQpsaWNrIix0KX0sdGl0bGU6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLiR0aXRsZTtyZXR1
cm4gZSYmdC5odG1sKGUpLHQuaHRtbCg9Cil9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXt2YXIgdD0z
RCc8ZGl2IGlkPTNEIicrZS5pZCsnIiBjbGFzcz0zRCInK2UuY2xzKyciPj0KJztyZXR1cm4gZS50
aXRsZSYmKHQrPTNEJzxkaXYgY2xhc3M9M0QicG9ydGxldC1oZWFkZXIiPjxkaXYgY2xhc3M9M0Qi
b3BlcmF0PQppb25zIiBzdHlsZT0zRCJmbG9hdDogJytlLm9wZXJhdGlvbnNfZmx0Kyc7Ij48L2Rp
dj4nKyc8ZGl2IGNsYXNzPTNEInBvcnRsZXQ9Ci10aXRsZSI+JyxlLmljb24mJih0Kz0zRCc8aSBj
bGFzcz0zRCJpY29uIGZhICcrZS5pY29uKyciPiZuYnNwOzwvaT4nKSx0Kz0zRD0KJzxzcGFuIGNs
YXNzPTNEInBvcnRsZXQtdGl0bGUtdGV4dCI+JytlLnRpdGxlKyI8L3NwYW4+IisiPC9kaXY+Iisi
PC9kaXY+IiksPQp0Kz0zRCc8ZGl2IGNsYXNzPTNEInBvcnRsZXQtY29udGVudCI+JyxlLnBsYWNl
bWVudD0zRD0zRCJ0b3AiJiYodCs9M0QnPGRpdiA9CmNsYXNzPTNEImJ1dHRvbnMiPjwvZGl2Picp
LHQrPTNEJzxkaXYgY2xhc3M9M0QiY29udGVudCI+PC9kaXY+JyxlLnBsYWNlbWVudD0KPTNEPTNE
ImJvdHRvbSImJih0Kz0zRCc8ZGl2IGNsYXNzPTNEImJ1dHRvbnMiPjwvZGl2PicpLHQrPTNEIjwv
ZGl2PjwvZGl2PiIsPQp0fX0pO3JldHVybntWaWV3OnR9fSksZGVmaW5lKCJtdmMvdWkvdWktc2Vs
ZWN0LWRlZmF1bHQiLFsidXRpbHMvdXRpbHMiXSxmdW49CmN0aW9uKGUpe3ZhciB0PTNEQmFja2Jv
bmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0OntpZDoiIixjbHM6IiIsZXJyb3JfdD0KZXh0
OiJObyBkYXRhIGF2YWlsYWJsZSIsdmlzaWJsZTohMCx3YWl0OiExLG11bHRpcGxlOiExLHNlYXJj
aGFibGU6ITF9LGluaXRpPQphbGl6ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdl
KHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGU9Cm1lbnQodGhpcy5fdGVtcGxhdGUo
dGhpcy5vcHRpb25zKSksdGhpcy4kc2VsZWN0PTNEdGhpcy4kZWwuZmluZCgiLnNlbGVjdCIpLD0K
dGhpcy4kaWNvbj0zRHRoaXMuJGVsLmZpbmQoIi5pY29uIiksdGhpcy4kYnV0dG9uPTNEdGhpcy4k
ZWwuZmluZCgiLmJ1dHRvbiIpPQosdGhpcy5vcHRpb25zLm11bHRpcGxlPyh0aGlzLiRzZWxlY3Qu
cHJvcCgibXVsdGlwbGUiLCEwKSx0aGlzLiRzZWxlY3QuYWRkQ2w9CmFzcygidWktc2VsZWN0LW11
bHRpcGxlIiksdGhpcy4kaWNvbi5yZW1vdmUoKSk6dGhpcy4kZWwuYWRkQ2xhc3MoInVpLXNlbGVj
dD0KIiksdGhpcy51cGRhdGUodGhpcy5vcHRpb25zLmRhdGEpLHRoaXMub3B0aW9ucy52YWx1ZSE9
M0Q9M0R1bmRlZmluZWQmJnRoaXMuPQp2YWx1ZSh0aGlzLm9wdGlvbnMudmFsdWUpLHRoaXMub3B0
aW9ucy52aXNpYmxlfHx0aGlzLmhpZGUoKSx0aGlzLm9wdGlvbnMud2E9Cml0P3RoaXMud2FpdCgp
OnRoaXMuc2hvdygpO3ZhciBuPTNEdGhpczt0aGlzLiRzZWxlY3Qub24oImNoYW5nZSIsZnVuY3Rp
b24oKT0Ke24uX2NoYW5nZSgpfSksdGhpcy5vbigiY2hhbmdlIixmdW5jdGlvbigpe24uX2NoYW5n
ZSgpfSl9LHZhbHVlOmZ1bmN0aW9uKGUpPQp7cmV0dXJuIGUhPTNEPTNEdW5kZWZpbmVkJiYodGhp
cy4kc2VsZWN0LnZhbChlKSx0aGlzLiRzZWxlY3Quc2VsZWN0MiYmdGhpcy49CiRzZWxlY3Quc2Vs
ZWN0MigidmFsIixlKSksdGhpcy4kc2VsZWN0LnZhbCgpfSxmaXJzdDpmdW5jdGlvbigpe3ZhciBl
PTNEdGhpcz0KLiRzZWxlY3QuZmluZCgib3B0aW9uIik7cmV0dXJuIGUubGVuZ3RoPjA/ZS52YWwo
KTp1bmRlZmluZWR9LHZhbGlkYXRlOmZ1bmN0PQppb24oKXtyZXR1cm4gZS52YWxpZGF0ZSh0aGlz
LnZhbHVlKCkpfSx0ZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHNlbGVjdC49CmZpbmQoIm9w
dGlvbjpzZWxlY3RlZCIpLnRleHQoKX0sc2hvdzpmdW5jdGlvbigpe3RoaXMudW53YWl0KCksdGhp
cy4kc2VsZWN0Lj0Kc2hvdygpLHRoaXMuJGVsLnNob3coKX0saGlkZTpmdW5jdGlvbigpe3RoaXMu
JGVsLmhpZGUoKX0sd2FpdDpmdW5jdGlvbigpe3RoPQppcy4kaWNvbi5yZW1vdmVDbGFzcygpLHRo
aXMuJGljb24uYWRkQ2xhc3MoImZhIGZhLXNwaW5uZXIgZmEtc3BpbiIpfSx1bndhaXQ9CjpmdW5j
dGlvbigpe3RoaXMuJGljb24ucmVtb3ZlQ2xhc3MoKSx0aGlzLiRpY29uLmFkZENsYXNzKCJmYSBm
YS1jYXJldC1kb3duIj0KKX0sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kc2VsZWN0
LmlzKCI6ZGlzYWJsZWQiKX0sZW5hYmxlOmZ1bmN0aW9uPQooKXt0aGlzLiRzZWxlY3QucHJvcCgi
ZGlzYWJsZWQiLCExKX0sZGlzYWJsZTpmdW5jdGlvbigpe3RoaXMuJHNlbGVjdC5wcm9wKCI9CmRp
c2FibGVkIiwhMCl9LGFkZDpmdW5jdGlvbihlKXt0aGlzLiRzZWxlY3QuYXBwZW5kKHRoaXMuX3Rl
bXBsYXRlT3B0aW9uKGUpKT0KLHRoaXMuX3JlZnJlc2goKX0sZGVsOmZ1bmN0aW9uKGUpe3RoaXMu
JHNlbGVjdC5maW5kKCJvcHRpb25bdmFsdWU9M0QiK2UrIl0iPQopLnJlbW92ZSgpLHRoaXMuJHNl
bGVjdC50cmlnZ2VyKCJjaGFuZ2UiKSx0aGlzLl9yZWZyZXNoKCl9LHVwZGF0ZTpmdW5jdGlvbig9
CmUpe3ZhciB0PTNEdGhpcy4kc2VsZWN0LnZhbCgpO3RoaXMuJHNlbGVjdC5maW5kKCJvcHRpb24i
KS5yZW1vdmUoKTtmb3IodmFyID0KbiBpbiBlKXRoaXMuJHNlbGVjdC5hcHBlbmQodGhpcy5fdGVt
cGxhdGVPcHRpb24oZVtuXSkpO3RoaXMuX3JlZnJlc2goKSx0aGlzPQouJHNlbGVjdC52YWwodCks
dGhpcy4kc2VsZWN0LnZhbCgpfHx0aGlzLiRzZWxlY3QudmFsKHRoaXMuZmlyc3QoKSksdGhpcy5v
cHQ9CmlvbnMuc2VhcmNoYWJsZSYmKHRoaXMuJGJ1dHRvbi5oaWRlKCksdGhpcy4kc2VsZWN0LnNl
bGVjdDIoImRlc3Ryb3kiKSx0aGlzLj0KJHNlbGVjdC5zZWxlY3QyKCkpfSxzZXRPbkNoYW5nZTpm
dW5jdGlvbihlKXt0aGlzLm9wdGlvbnMub25jaGFuZ2U9M0RlfSxleGlzPQp0czpmdW5jdGlvbihl
KXtyZXR1cm4gdGhpcy4kc2VsZWN0LmZpbmQoJ29wdGlvblt2YWx1ZT0zRCInK2UrJyJdJykubGVu
Z3RoPjA9Cn0sX2NoYW5nZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5vbmNoYW5nZSYmdGhpcy5v
cHRpb25zLm9uY2hhbmdlKHRoaXMuJHNlbD0KZWN0LnZhbCgpKX0sX3JlZnJlc2g6ZnVuY3Rpb24o
KXt0aGlzLiRzZWxlY3QuZmluZCgib3B0aW9uW3ZhbHVlPTNEbnVsbF0iKS5yPQplbW92ZSgpO3Zh
ciBlPTNEdGhpcy4kc2VsZWN0LmZpbmQoIm9wdGlvbiIpLmxlbmd0aDtlPTNEPTNEMD8odGhpcy5k
aXNhYmxlKCk9Cix0aGlzLiRzZWxlY3QuYXBwZW5kKHRoaXMuX3RlbXBsYXRlT3B0aW9uKHt2YWx1
ZToibnVsbCIsbGFiZWw6dGhpcy5vcHRpb25zLj0KZXJyb3JfdGV4dH0pKSk6dGhpcy5lbmFibGUo
KX0sX3RlbXBsYXRlT3B0aW9uOmZ1bmN0aW9uKGUpe3JldHVybic8b3B0aW9uIHZhPQpsdWU9M0Qi
JytlLnZhbHVlKyciPicrZS5sYWJlbCsiPC9vcHRpb24+In0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUp
e3JldHVybic8ZGk9CnYgaWQ9M0QiJytlLmlkKyciPicrJzxzZWxlY3QgaWQ9M0Qic2VsZWN0IiBj
bGFzcz0zRCJzZWxlY3QgJytlLmNscysiICIrZS5pZD0KKyciPjwvc2VsZWN0PicrJzxkaXYgY2xh
c3M9M0QiYnV0dG9uIj4nKyc8aSBjbGFzcz0zRCJpY29uIi8+JysiPC9kaXY+IisiPC9kPQppdj4i
fX0pO3JldHVybntWaWV3OnR9fSksZGVmaW5lKCJtdmMvdWkvdWktc2xpZGVyIixbInV0aWxzL3V0
aWxzIl0sZnVuY3Rpb249CihlKXt2YXIgdD0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25z
RGVmYXVsdDp7bWluOm51bGwsbWF4Om51bGwsc3RlcDpudT0KbGwscHJlY2lzZTohMSxzcGxpdDox
ZTR9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dmFyIG49M0R0aGlzO3RoaXMub3B0aW9ucz0KPTNE
ZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1w
bGF0ZSh0aGlzLm9wdGlvPQpucykpLHRoaXMudXNlc2xpZGVyPTNEdGhpcy5vcHRpb25zLm1heCE9
M0Q9M0RudWxsJiZ0aGlzLm9wdGlvbnMubWluIT0zRD0zRG49CnVsbCYmdGhpcy5vcHRpb25zLm1h
eD50aGlzLm9wdGlvbnMubWluLHRoaXMub3B0aW9ucy5zdGVwPTNEPTNEPTNEbnVsbCYmKHRoaT0K
cy5vcHRpb25zLnN0ZXA9M0QxLHRoaXMub3B0aW9ucy5wcmVjaXNlJiZ0aGlzLnVzZXNsaWRlciYm
KHRoaXMub3B0aW9ucy5zdGVwPQo9M0QodGhpcy5vcHRpb25zLm1heC10aGlzLm9wdGlvbnMubWlu
KS90aGlzLm9wdGlvbnMuc3BsaXQpKSx0aGlzLnVzZXNsaWRlcj89Cih0aGlzLiRzbGlkZXI9M0R0
aGlzLiRlbC5maW5kKCIjc2xpZGVyIiksdGhpcy4kc2xpZGVyLnNsaWRlcih0aGlzLm9wdGlvbnMp
LD0KdGhpcy4kc2xpZGVyLm9uKCJzbGlkZSIsZnVuY3Rpb24oZSx0KXtuLnZhbHVlKHQudmFsdWUp
fSkpOnRoaXMuJGVsLmZpbmQoIi51PQppLWZvcm0tc2xpZGVyLXRleHQiKS5jc3MoIndpZHRoIiwi
MTAwJSIpLHRoaXMuJHRleHQ9M0R0aGlzLiRlbC5maW5kKCIjdGV4dCI9CiksdGhpcy5vcHRpb25z
LnZhbHVlIT0zRD0zRHVuZGVmaW5lZCYmdGhpcy52YWx1ZSh0aGlzLm9wdGlvbnMudmFsdWUpLHRo
aXMuJD0KdGV4dC5vbigiY2hhbmdlIixmdW5jdGlvbigpe24udmFsdWUoJCh0aGlzKS52YWwoKSl9
KTt2YXIgcj0zRFtdO3RoaXMuJHRleHQuPQpvbigia2V5dXAiLGZ1bmN0aW9uKGUpe3JbZS53aGlj
aF09M0QhMX0pLHRoaXMuJHRleHQub24oImtleWRvd24iLGZ1bmN0aW9uKGU9Cil7dmFyIHQ9M0Rl
LndoaWNoO3JbdF09M0QhMCx0PTNEPTNEOHx8dD0zRD0zRDl8fHQ9M0Q9M0QxM3x8dD0zRD0zRDM3
fHx0PTNEPQo9M0QzOXx8dD49M0Q0OCYmdDw9M0Q1N3x8dD0zRD0zRDE5MCYmJCh0aGlzKS52YWwo
KS5pbmRleE9mKCIuIik9M0Q9M0QtMSYmbi49Cm9wdGlvbnMucHJlY2lzZXx8dD0zRD0zRDE4OSYm
JCh0aGlzKS52YWwoKS5pbmRleE9mKCItIik9M0Q9M0QtMXx8cls5MV18fHJbMT0KN118fGV2ZW50
LnByZXZlbnREZWZhdWx0KCl9KX0sdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPTNEPTNEdW5k
ZWZpbmVkJiYoPQppc05hTihlKSYmKGU9M0QwKSx0aGlzLm9wdGlvbnMubWF4IT0zRD0zRG51bGwm
JihlPTNETWF0aC5taW4oZSx0aGlzLm9wdGlvbnM9Ci5tYXgpKSx0aGlzLm9wdGlvbnMubWluIT0z
RD0zRG51bGwmJihlPTNETWF0aC5tYXgoZSx0aGlzLm9wdGlvbnMubWluKSksdGhpcz0KLm9wdGlv
bnMub25jaGFuZ2UmJnRoaXMub3B0aW9ucy5vbmNoYW5nZShlKSx0aGlzLiRzbGlkZXImJnRoaXMu
JHNsaWRlci5zbGlkPQplcigidmFsdWUiLGUpLHRoaXMuJHRleHQudmFsKGUpKSx0aGlzLiR0ZXh0
LnZhbCgpfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7cmU9CnR1cm4nPGRpdiBpZD0zRCInK2UuaWQr
JyIgY2xhc3M9M0QidWktZm9ybS1zbGlkZXIiPicrJzxpbnB1dCBpZD0zRCJ0ZXh0IiB0eT0KcGU9
M0QidGV4dCIgY2xhc3M9M0QidWktZm9ybS1zbGlkZXItdGV4dCIvPicrJzxkaXYgaWQ9M0Qic2xp
ZGVyIiBjbGFzcz0zRCJ1PQppLWZvcm0tc2xpZGVyLWVsZW1lbnQiLz4nKyI8L2Rpdj4ifX0pO3Jl
dHVybntWaWV3OnR9fSksZGVmaW5lKCJtdmMvdWkvdWktb3A9CnRpb25zIixbInV0aWxzL3V0aWxz
Il0sZnVuY3Rpb24oZSl7dmFyIHQ9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7aW5pdGlhbGl6ZT0K
OmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9uc0RlZmF1bHQ9M0R7dmlzaWJsZTohMCxkYXRhOltdLGlk
OmUudXVpZCgpLGVycm9yX3RlPQp4dDoiTm8gZGF0YSBhdmFpbGFibGUuIix3YWl0X3RleHQ6IlBs
ZWFzZSB3YWl0Li4uIn0sdGhpcy5vcHRpb25zPTNEZS5tZXJnZSg9CnQsdGhpcy5vcHRpb25zRGVm
YXVsdCksdGhpcy5zZXRFbGVtZW50KCI8ZGl2Lz4iKSx0aGlzLiRtZXNzYWdlPTNEJCgiPGRpdi8+
Ij0KKSx0aGlzLiRvcHRpb25zPTNEJCh0aGlzLl90ZW1wbGF0ZSh0KSksdGhpcy4kZWwuYXBwZW5k
KHRoaXMuJG1lc3NhZ2UpLHRoaXMuPQokZWwuYXBwZW5kKHRoaXMuJG9wdGlvbnMpLHRoaXMub3B0
aW9ucy52aXNpYmxlfHx0aGlzLiRlbC5oaWRlKCksdGhpcy51cGRhdGU9Cih0aGlzLm9wdGlvbnMu
ZGF0YSksdGhpcy5vcHRpb25zLnZhbHVlIT0zRD0zRHVuZGVmaW5lZCYmdGhpcy52YWx1ZSh0aGlz
Lm9wdD0KaW9ucy52YWx1ZSk7dmFyIG49M0R0aGlzO3RoaXMub24oImNoYW5nZSIsZnVuY3Rpb24o
KXtuLl9jaGFuZ2UoKX0pfSx1cGRhdGU6PQpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMuX2dldFZh
bHVlKCk7dGhpcy4kb3B0aW9ucy5lbXB0eSgpO2lmKHRoaXMuX3RlbXBsYXQ9CmVPcHRpb25zKXRo
aXMuJG9wdGlvbnMuYXBwZW5kKHRoaXMuX3RlbXBsYXRlT3B0aW9ucyhlKSk7ZWxzZSBmb3IodmFy
IG4gaW4gZT0KKXt2YXIgcj0zRCQodGhpcy5fdGVtcGxhdGVPcHRpb24oZVtuXSkpO3IuYWRkQ2xh
c3MoInVpLW9wdGlvbiIpLHRoaXMuJG9wdGlvPQpucy5hcHBlbmQocil9dmFyIGk9M0R0aGlzO3Ro
aXMuJGVsLmZpbmQoImlucHV0Iikub24oImNoYW5nZSIsZnVuY3Rpb24oKXtpLnY9CmFsdWUoaS5f
Z2V0VmFsdWUoKSksaS5fY2hhbmdlKCl9KSx0aGlzLl9yZWZyZXNoKCksdGhpcy52YWx1ZSh0KX0s
dmFsdWU6ZnVuYz0KdGlvbihlKXtpZihlIT0zRD0zRHVuZGVmaW5lZCl7ZSBpbnN0YW5jZW9mIEFy
cmF5fHwoZT0zRFtlXSksdGhpcy4kZWwuZmluZCgiPQppbnB1dCIpLnByb3AoImNoZWNrZWQiLCEx
KTtmb3IodmFyIHQgaW4gZSl0aGlzLiRlbC5maW5kKCdpbnB1dFt2YWx1ZT0zRCInK2U9Clt0XSsn
Il0nKS5maXJzdCgpLnByb3AoImNoZWNrZWQiLCEwKX1yZXR1cm4gdGhpcy5fZ2V0VmFsdWUoKX0s
ZXhpc3RzOmZ1bmN0aT0Kb24oZSl7aWYoZSE9M0Q9M0R1bmRlZmluZWQpe2UgaW5zdGFuY2VvZiBB
cnJheXx8KGU9M0RbZV0pO2Zvcih2YXIgdCBpbiBlKWlmPQoodGhpcy4kZWwuZmluZCgnaW5wdXRb
dmFsdWU9M0QiJytlW3RdKyciXScpLmxlbmd0aD4wKXJldHVybiEwfXJldHVybiExfSxmaXI9CnN0
OmZ1bmN0aW9uKCl7dmFyIGU9M0R0aGlzLiRlbC5maW5kKCJpbnB1dCIpO3JldHVybiBlLmxlbmd0
aD4wP2UudmFsKCk6dW5kZT0KZmluZWR9LHZhbGlkYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGUudmFs
aWRhdGUodGhpcy52YWx1ZSgpKX0sd2FpdDpmdW5jdGlvbigpPQp7dGhpcy5fc2l6ZSgpPTNEPTNE
MCYmKHRoaXMuX21lc3NhZ2VTaG93KHRoaXMub3B0aW9ucy53YWl0X3RleHQsImluZm8iKSx0aGk9
CnMuJG9wdGlvbnMuaGlkZSgpKX0sdW53YWl0OmZ1bmN0aW9uKCl7dGhpcy5fbWVzc2FnZUhpZGUo
KSx0aGlzLl9yZWZyZXNoKCl9LD0KX2NoYW5nZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5vbmNo
YW5nZSYmdGhpcy5vcHRpb25zLm9uY2hhbmdlKHRoaXMuX2dldFZhPQpsdWUoKSl9LF9yZWZyZXNo
OmZ1bmN0aW9uKCl7dGhpcy5fc2l6ZSgpPTNEPTNEMD8odGhpcy5fbWVzc2FnZVNob3codGhpcy5v
cHQ9CmlvbnMuZXJyb3JfdGV4dCwiZGFuZ2VyIiksdGhpcy4kb3B0aW9ucy5oaWRlKCkpOih0aGlz
Ll9tZXNzYWdlSGlkZSgpLHRoaXMuJD0Kb3B0aW9ucy5jc3MoImRpc3BsYXkiLCJpbmxpbmUtYmxv
Y2siKSl9LF9nZXRWYWx1ZTpmdW5jdGlvbigpe3ZhciBlPTNEdGhpcy4kPQplbC5maW5kKCI6Y2hl
Y2tlZCIpO2lmKGUubGVuZ3RoPTNEPTNEMClyZXR1cm4ibnVsbCI7aWYodGhpcy5vcHRpb25zLm11
bHRpcGw9CmUpe3ZhciB0PTNEW107cmV0dXJuIGUuZWFjaChmdW5jdGlvbigpe3QucHVzaCgkKHRo
aXMpLnZhbCgpKX0pLHR9cmV0dXJuIGUudj0KYWwoKX0sX3NpemU6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy4kZWwuZmluZCgiLnVpLW9wdGlvbiIpLmxlbmd0aH0sX21lc3NhZ2VTPQpob3c6ZnVuY3Rp
b24oZSx0KXt0aGlzLiRtZXNzYWdlLnNob3coKSx0aGlzLiRtZXNzYWdlLnJlbW92ZUNsYXNzKCks
dGhpcy4kbWU9CnNzYWdlLmFkZENsYXNzKCJ1aS1tZXNzYWdlIGFsZXJ0IGFsZXJ0LSIrdCksdGhp
cy4kbWVzc2FnZS5odG1sKGUpfSxfbWVzc2FnZT0KSGlkZTpmdW5jdGlvbigpe3RoaXMuJG1lc3Nh
Z2UuaGlkZSgpfSxfdGVtcGxhdGU6ZnVuY3Rpb24oKXtyZXR1cm4nPGRpdiBjbGFzPQpzPTNEInVp
LW9wdGlvbnMiLz4nfX0pLG49M0R7fTtuLlZpZXc9M0R0LmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5j
dGlvbihlKXt0LnA9CnJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLGUpfSxfdGVtcGxhdGVP
cHRpb246ZnVuY3Rpb24oZSl7cmV0dXJuJzxkaXY+PD0KaW5wdXQgdHlwZT0zRCJyYWRpbyIgbmFt
ZT0zRCInK3RoaXMub3B0aW9ucy5pZCsnIiB2YWx1ZT0zRCInK2UudmFsdWUrJyIvPicrPQplLmxh
YmVsKyI8YnI+IisiPC9kaXY+In19KTt2YXIgcj0zRHt9O3IuVmlldz0zRHQuZXh0ZW5kKHtpbml0
aWFsaXplOmZ1bmN0aW89Cm4oZSl7ZS5tdWx0aXBsZT0zRCEwLHQucHJvdG90eXBlLmluaXRpYWxp
emUuY2FsbCh0aGlzLGUpfSxfdGVtcGxhdGVPcHRpb246Zj0KdW5jdGlvbihlKXtyZXR1cm4nPGRp
dj48aW5wdXQgdHlwZT0zRCJjaGVja2JveCIgbmFtZT0zRCInK3RoaXMub3B0aW9ucy5pZCsnPQoi
IHZhbHVlPTNEIicrZS52YWx1ZSsnIi8+JytlLmxhYmVsKyI8YnI+IisiPC9kaXY+In19KTt2YXIg
aT0zRHt9O3JldHVybiBpLlY9Cmlldz0zRHQuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKGUp
e3QucHJvdG90eXBlLmluaXRpYWxpemUuY2FsbCh0aGlzLGUpfT0KLHZhbHVlOmZ1bmN0aW9uKGUp
e3JldHVybiBlIT0zRD0zRHVuZGVmaW5lZCYmKHRoaXMuJGVsLmZpbmQoImlucHV0IikucHJvcCgi
PQpjaGVja2VkIiwhMSksdGhpcy4kZWwuZmluZCgibGFiZWwiKS5yZW1vdmVDbGFzcygiYWN0aXZl
IiksdGhpcy4kZWwuZmluZCgnW3Y9CmFsdWU9M0QiJytlKyciXScpLnByb3AoImNoZWNrZWQiLCEw
KS5jbG9zZXN0KCJsYWJlbCIpLmFkZENsYXNzKCJhY3RpdmUiKSksdD0KaGlzLl9nZXRWYWx1ZSgp
fSxfdGVtcGxhdGVPcHRpb246ZnVuY3Rpb24oZSl7dmFyIHQ9M0QnPGxhYmVsIGNsYXNzPTNEImJ0
biBiPQp0bi1kZWZhdWx0Ij4nO3JldHVybiBlLmljb24mJih0Kz0zRCc8aSBjbGFzcz0zRCJmYSAn
K2UuaWNvbisnIi8+JyksdCs9M0QnPGk9Cm5wdXQgdHlwZT0zRCJyYWRpbyIgbmFtZT0zRCInK3Ro
aXMub3B0aW9ucy5pZCsnIiB2YWx1ZT0zRCInK2UudmFsdWUrJyI+JytlLj0KbGFiZWwrIjwvbGFi
ZWw+Iix0fSxfdGVtcGxhdGU6ZnVuY3Rpb24oKXtyZXR1cm4nPGRpdiBjbGFzcz0zRCJidG4tZ3Jv
dXAgdWktPQpyYWRpb2J1dHRvbiIgZGF0YS10b2dnbGU9M0QiYnV0dG9ucyIvPid9fSkse0Jhc2U6
dCxSYWRpbzpuLFJhZGlvQnV0dG9uOmksQ2g9CmVja2JveDpyfX0pLGRlZmluZSgibXZjL3VpL3Vp
LWRyaWxsZG93biIsWyJ1dGlscy91dGlscyIsIm12Yy91aS91aS1vcHRpb25zIj0KXSxmdW5jdGlv
bihlLHQpe3ZhciBuPTNEdC5CYXNlLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbihlKXt0aGlz
LmRpc3BsYXk9Cj0zRGUuZGlzcGxheXx8ImNoZWNrYm94IixlLm11bHRpcGxlPTNEdGhpcy5kaXNw
bGF5PTNEPTNEImNoZWNrYm94Iix0LkJhc2UucD0Kcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRo
aXMsZSl9LF90ZW1wbGF0ZU9wdGlvbjpmdW5jdGlvbihlLHQsbil7cmV0dXJuJzxkPQppdj48aW5w
dXQgbmFtZT0zRCInK3RoaXMub3B0aW9ucy5pZCsnIiBjbGFzcz0zRCJ1aS1vcHRpb24iIHR5cGU9
M0QiJyt0aGlzLmQ9CmlzcGxheSsnIiB2YWx1ZT0zRCInK3QrJyI+JytlKyI8ZGl2Lz4ifSxfdGVt
cGxhdGVPcHRpb25zOmZ1bmN0aW9uKGUpe2Z1bmN0aT0Kb24gbihlLHQpe2Z1bmN0aW9uIG4obil7
bj8odC5mYWRlSW4oImZhc3QiKSxlLnJlbW92ZUNsYXNzKCJ0b2dnbGUtZXhwYW5kIiksPQplLmFk
ZENsYXNzKCJ0b2dnbGUiKSxlLmlzX2V4cGFuZGVkPTNEITApOih0LmhpZGUoKSxlLnJlbW92ZUNs
YXNzKCJ0b2dnbGUiKSw9CmUuYWRkQ2xhc3MoInRvZ2dsZS1leHBhbmQiKSxlLmlzX2V4cGFuZGVk
PTNEITEpfWUub24oImNsaWNrIixmdW5jdGlvbigpe24oIT0KZS5pc19leHBhbmRlZCl9KX1mdW5j
dGlvbiByKGUscyl7Zm9yKGkgaW4gcyl7dmFyIG89M0RzW2ldLHU9M0RvLm9wdGlvbnMubGVuPQpn
dGg+MCxhPTNEJCgiPGRpdi8+Iik7aWYodSl7dmFyIGY9M0QkKCc8c3BhbiBjbGFzcz0zRCJ1aS1k
cmlsbGRvd24tYnV0dG9uIGY9Cm9ybS10b2dnbGUgaWNvbi1idXR0b24gdG9nZ2xlLWV4cGFuZCIg
c3R5bGU9M0QicG9zaXRpb246IHJlbGF0aXZlOyB0b3A6IDJweD0KOyIvPicpLGw9M0QkKCI8ZGl2
Lz4iKTtsLmFwcGVuZChmKSxsLmFwcGVuZCh0Ll90ZW1wbGF0ZU9wdGlvbihvLm5hbWUsby52YWx1
PQplKSksYS5hcHBlbmQobCk7dmFyIGM9M0QkKCc8ZGl2IHN0eWxlPTNEImRpc3BsYXk6IG5vbmU7
IG1hcmdpbi1sZWZ0OiAyNXB4OyI9Ci8+Jyk7cihjLG8ub3B0aW9ucyksYS5hcHBlbmQoYyksbihm
LGMpfWVsc2UgYS5hcHBlbmQodC5fdGVtcGxhdGVPcHRpb24oby5uYT0KbWUsby52YWx1ZSkpO2Uu
YXBwZW5kKGEpfX12YXIgdD0zRHRoaXMscz0zRCQoIjxkaXYvPiIpO3JldHVybiByKHMsZSksc30s
X3RlPQptcGxhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuJzxkaXYgY2xhc3M9M0QidWktb3B0aW9ucyBk
cmlsbGRvd24tY29udGFpbmVyIiBpZD0KPTNEIicrZS5pZCsnIi8+J319KTtyZXR1cm57Vmlldzpu
fX0pLGRlZmluZSgibXZjL3VpL3VpLWJ1dHRvbi1tZW51IixbInV0aWxzPQovdXRpbHMiXSxmdW5j
dGlvbihlKXtyZXR1cm4gQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0OntpZDoi
Iix0aXQ9CmxlOiIiLGZsb2F0aW5nOiJyaWdodCIsaWNvbjpudWxsLG9uY2xpY2s6bnVsbCxjbHM6
InVpLWJ1dHRvbi1pY29uIHVpLWJ1dHRvbj0KLW1lbnUiLHRvb2x0aXA6IiIsdGFyZ2V0OiIiLGhy
ZWY6IiIsb251bmxvYWQ6bnVsbCx2aXNpYmxlOiEwLHRhZzoiIn0sJG1lbnU6PQpudWxsLGluaXRp
YWxpemU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0Rl
ZmF1bHQpLHQ9Cmhpcy5zZXRFbGVtZW50KCQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSkp
O3ZhciBuPTNEJCh0aGlzLmVsKS5maW5kKCIucj0Kb290Iikscj0zRHRoaXM7bi5vbigiY2xpY2si
LGZ1bmN0aW9uKGUpeyQoIi50b29sdGlwIikuaGlkZSgpLGUucHJldmVudERlZmF1PQpsdCgpLHIu
b3B0aW9ucy5vbmNsaWNrJiZyLm9wdGlvbnMub25jbGljaygpfSksdGhpcy5vcHRpb25zLnZpc2li
bGV8fHRoaXMuaGk9CmRlKCksbi50b29sdGlwKHt0aXRsZTp0LnRvb2x0aXAscGxhY2VtZW50OiJi
b3R0b20ifSl9LHNob3c6ZnVuY3Rpb24oKXskKHRoaT0Kcy5lbCkuc2hvdygpfSxoaWRlOmZ1bmN0
aW9uKCl7JCh0aGlzLmVsKS5oaWRlKCl9LGFkZE1lbnU6ZnVuY3Rpb24odCl7dmFyIG49Cj0zRHt0
aXRsZToiIix0YXJnZXQ6IiIsaHJlZjoiIixvbmNsaWNrOm51bGwsZGl2aWRlcjohMSxpY29uOm51
bGwsY2xzOiJidXR0bz0Kbi1tZW51IGJ0bi1ncm91cCJ9O249M0RlLm1lcmdlKHQsbiksdGhpcy4k
bWVudXx8KCQodGhpcy5lbCkuYXBwZW5kKHRoaXMuX3RlPQptcGxhdGVNZW51KCkpLHRoaXMuJG1l
bnU9M0QkKHRoaXMuZWwpLmZpbmQoIi5tZW51IikpO3ZhciByPTNEJCh0aGlzLl90ZW1wbGE9CnRl
TWVudUl0ZW0obikpO3Iub24oImNsaWNrIixmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCks
bi5vbmNsaWNrJiZuLm9uYz0KbGljaygpfSksdGhpcy4kbWVudS5hcHBlbmQociksbi5kaXZpZGVy
JiZ0aGlzLiRtZW51LmFwcGVuZCgkKHRoaXMuX3RlbXBsYXRlPQpEaXZpZGVyKCkpKX0sX3RlbXBs
YXRlTWVudUl0ZW06ZnVuY3Rpb24oZSl7dmFyIHQ9M0QnPGxpPjxhIGNsYXNzPTNEImRyb3Bkb3c9
Cm4taXRlbSIgaHJlZj0zRCInK2UuaHJlZisnIiB0YXJnZXQ9M0QiJytlLnRhcmdldCsnIj4nO3Jl
dHVybiBlLmljb24mJih0Kz0zRD0KJzxpIGNsYXNzPTNEImZhICcrZS5pY29uKyciPjwvaT4nKSx0
Kz0zRCIgIitlLnRpdGxlKyI8L2E+IisiPC9saT4iLHR9LF90ZW1wPQpsYXRlTWVudTpmdW5jdGlv
bigpe3JldHVybic8dWwgY2xhc3M9M0QibWVudSBkcm9wZG93bi1tZW51IHB1bGwtcmlnaHQiIHJv
bGU9Cj0zRCJtZW51Ij48L3VsPid9LF90ZW1wbGF0ZURpdmlkZXI6ZnVuY3Rpb24oKXtyZXR1cm4n
PGxpIGNsYXNzPTNEImRpdmlkZXIiPj0KPC9saT4nfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7dmFy
IHQ9M0QiIixuPTNEIiI7ZS50aXRsZT90PTNEIndpZHRoOiBhdXRvOyI6PQpuPTNEIm1hcmdpbjog
MHB4OyI7dmFyIHI9M0QnPGRpdiBpZD0zRCInK2UuaWQrJyIgc3R5bGU9M0QiZmxvYXQ6ICcrZS5m
bG9hdGk9Cm5nKyI7ICIrdCsnIiBjbGFzcz0zRCJkcm9wZG93biAnK2UuY2xzKyciPicrJzxkaXYg
Y2xhc3M9M0Qicm9vdCBidXR0b24gZHJvcD0KZG93bi10b2dnbGUiIGRhdGEtdG9nZ2xlPTNEImRy
b3Bkb3duIiBzdHlsZT0zRCInK24rJyI+JysnPGkgY2xhc3M9M0QiaWNvbiBmPQphICcrZS5pY29u
KyciLz4nO3JldHVybiBlLnRpdGxlJiYocis9M0QnJm5ic3A7PHNwYW4gY2xhc3M9M0QidGl0bGUi
PicrZS50aXQ9CmxlKyI8L3NwYW4+Iikscis9M0QiPC9kaXY+PC9kaXY+IixyfX0pfSksZGVmaW5l
KCJtdmMvdWkvdWktbWlzYyIsWyJ1dGlscy91dD0KaWxzIiwibXZjL3VpL3VpLXNlbGVjdC1kZWZh
dWx0IiwibXZjL3VpL3VpLXNsaWRlciIsIm12Yy91aS91aS1vcHRpb25zIiwibXZjPQovdWkvdWkt
ZHJpbGxkb3duIiwibXZjL3VpL3VpLWJ1dHRvbi1tZW51IiwibXZjL3VpL3VpLW1vZGFsIl0sZnVu
Y3Rpb24oZSx0LG49CixyLGkscyxvKXt2YXIgdT0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRp
b25zRGVmYXVsdDp7dXJsOiIiLGNsczoiIn0saW5pdD0KaWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMu
b3B0aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlzLnNldEVsPQplbWVu
dCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3Jl
dHVybic8aW1nIGNsYXM9CnM9M0QidWktaW1hZ2UgJytlLmNscysnIiBzcmM9M0QiJytlLnVybCsn
Ii8+J319KSxhPTNEQmFja2JvbmUuVmlldy5leHRlbmQoez0Kb3B0aW9uc0RlZmF1bHQ6e3RpdGxl
OiIiLGNsczoiIn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lPQpy
Z2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlzLnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGUo
dGhpcy5vcHRpb25zKSl9LHQ9Cml0bGU6ZnVuY3Rpb24oZSl7dGhpcy4kZWwuaHRtbChlKX0sX3Rl
bXBsYXRlOmZ1bmN0aW9uKGUpe3JldHVybic8bGFiZWwgY2xhcz0Kcz0zRCJ1aS1sYWJlbCAnK2Uu
Y2xzKyciPicrZS50aXRsZSsiPC9sYWJlbD4ifSx2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBvcHRp
PQpvbnMudGl0bGV9fSksZj0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7
ZmxvYXRpbmc6InJpZ2h0IixpY289Cm46IiIsdG9vbHRpcDoiIixwbGFjZW1lbnQ6ImJvdHRvbSIs
dGl0bGU6IiIsY2xzOiIifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpez0KdGhpcy5vcHRpb25zPTNE
ZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1w
bGF0PQplKHRoaXMub3B0aW9ucykpLCQodGhpcy5lbCkudG9vbHRpcCh7dGl0bGU6dC50b29sdGlw
LHBsYWNlbWVudDoiYm90dG9tIn0pfSw9Cl90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGRp
dj48c3BhbiBjbGFzcz0zRCJmYSAnK2UuaWNvbisnIiBjbGFzcz0zRCJ1aT0KLWljb24iLz4mbmJz
cDsnK2UudGl0bGUrIjwvZGl2PiJ9fSksbD0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25z
RGVmYXVsPQp0OntpZDpudWxsLHRpdGxlOiIiLGZsb2F0aW5nOiJyaWdodCIsY2xzOiJ1aS1idXR0
b24gYnRuIGJ0bi1kZWZhdWx0IixpY29uOiI9CiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhp
cy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaT0Kcy5zZXRFbGVt
ZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9ucykpLCQodGhpcy5lbCkub24oImNsaWNrIixm
dW5jdGlvbigpPQp7JCgiLnRvb2x0aXAiKS5oaWRlKCksdC5vbmNsaWNrJiZ0Lm9uY2xpY2soKX0p
LCQodGhpcy5lbCkudG9vbHRpcCh7dGl0bGU6dC49CnRvb2x0aXAscGxhY2VtZW50OiJib3R0b20i
fSl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXt2YXIgdD0zRCc8YnV0dG9uIGlkPTNEIj0KJytlLmlk
KyciIHR5cGU9M0Qic3VibWl0IiBzdHlsZT0zRCJmbG9hdDogJytlLmZsb2F0aW5nKyc7IiB0eXBl
PTNEImJ1dHRvbiIgPQpjbGFzcz0zRCInK2UuY2xzKyciPic7cmV0dXJuIGUuaWNvbiYmKHQrPTNE
JzxpIGNsYXNzPTNEImljb24gZmEgJytlLmljb24rJyI9Cj48L2k+Jm5ic3A7JyksdCs9M0RlLnRp
dGxlKyI8L2J1dHRvbj4iLHR9fSksYz0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpbz0KbnNE
ZWZhdWx0OntpZDpudWxsLHRpdGxlOiIiLGZsb2F0aW5nOiJyaWdodCIsY2xzOiJ1aS1idXR0b24t
aWNvbiIsaWNvbjoiIix0PQpvb2x0aXA6IiIsb25jbGljazpudWxsfSxpbml0aWFsaXplOmZ1bmN0
aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVyZ2UodCx0aGk9CnMub3B0aW9uc0RlZmF1bHQpLHRo
aXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKSx0aGlzLiRidXR0bz0K
bj0zRHRoaXMuJGVsLmZpbmQoIi5idXR0b24iKTt2YXIgbj0zRHRoaXM7JCh0aGlzLmVsKS5vbigi
Y2xpY2siLGZ1bmN0aW9uKCl7PQokKCIudG9vbHRpcCIpLmhpZGUoKSx0Lm9uY2xpY2smJiFuLmRp
c2FibGVkJiZ0Lm9uY2xpY2soKX0pLCQodGhpcy5lbCkudG9vbHQ9CmlwKHt0aXRsZTp0LnRvb2x0
aXAscGxhY2VtZW50OiJib3R0b20ifSl9LGRpc2FibGU6ZnVuY3Rpb24oKXt0aGlzLiRidXR0b24u
YT0KZGRDbGFzcygiZGlzYWJsZWQiKSx0aGlzLmRpc2FibGVkPTNEITB9LGVuYWJsZTpmdW5jdGlv
bigpe3RoaXMuJGJ1dHRvbi5yZW1vPQp2ZUNsYXNzKCJkaXNhYmxlZCIpLHRoaXMuZGlzYWJsZWQ9
M0QhMX0sc2V0SWNvbjpmdW5jdGlvbihlKXt0aGlzLiQoImkiKS5yZW09Cm92ZUNsYXNzKHRoaXMu
b3B0aW9ucy5pY29uKS5hZGRDbGFzcyhlKSx0aGlzLm9wdGlvbnMuaWNvbj0zRGV9LF90ZW1wbGF0
ZTpmdT0KbmN0aW9uKGUpe3ZhciB0PTNEIiI7ZS50aXRsZSYmKHQ9M0Qid2lkdGg6IGF1dG87Iik7
dmFyIG49M0QnPGRpdiBpZD0zRCInK2UuPQppZCsnIiBzdHlsZT0zRCJmbG9hdDogJytlLmZsb2F0
aW5nKyI7ICIrdCsnIiBjbGFzcz0zRCInK2UuY2xzKyciPic7cmV0dXJuIGU9Ci50aXRsZT9uKz0z
RCc8ZGl2IGNsYXNzPTNEImJ1dHRvbiI+PGkgY2xhc3M9M0QiaWNvbiBmYSAnK2UuaWNvbisnIi8+
Jm5ic3A7Jz0KKyc8c3BhbiBjbGFzcz0zRCJ0aXRsZSI+JytlLnRpdGxlKyI8L3NwYW4+IisiPC9k
aXY+IjpuKz0zRCc8aSBjbGFzcz0zRCJpY29uPQogZmEgJytlLmljb24rJyIvPicsbis9M0QiPC9k
aXY+IixufX0pLGg9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmE9CnVsdDp7dGl0
bGU6IiIsY2xzOiIifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVy
Z2UodCx0aGlzLj0Kb3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0
ZSh0aGlzLm9wdGlvbnMpKSwkKHRoaXMuZWwpLm9uPQooImNsaWNrIix0Lm9uY2xpY2spfSxfdGVt
cGxhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuJzxkaXY+PGEgaHJlZj0zRCJqYXZhc2NyaXA9CnQ6dm9p
ZCgwKSIgY2xhc3M9M0QidWktYW5jaG9yICcrZS5jbHMrJyI+JytlLnRpdGxlKyI8L2E+PC9kaXY+
In19KSxwPTNEQmFjaz0KYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e21lc3NhZ2U6
bnVsbCxzdGF0dXM6ImluZm8iLHBlcnNpc3RlbnQ6ITF9PQosaW5pdGlhbGl6ZTpmdW5jdGlvbih0
KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy49CnNl
dEVsZW1lbnQoIjxkaXY+PC9kaXY+IiksdGhpcy5vcHRpb25zLm1lc3NhZ2UmJnRoaXMudXBkYXRl
KHRoaXMub3B0aW9ucyl9LD0KdXBkYXRlOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVy
Z2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0KTtpZih0Lm1lc3NhPQpnZSE9M0QiIil7dGhpcy4kZWwu
aHRtbCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKSx0aGlzLiRlbC5maW5kKCIuYWxlcnQ9
CiIpLmFwcGVuZCh0Lm1lc3NhZ2UpLHRoaXMuJGVsLmZhZGVJbigpLHRoaXMudGltZW91dCYmd2lu
ZG93LmNsZWFyVGltZW91dCh0aD0KaXMudGltZW91dCk7aWYoIXQucGVyc2lzdGVudCl7dmFyIG49
M0R0aGlzO3RoaXMudGltZW91dD0zRHdpbmRvdy5zZXRUaW1lb3V0PQooZnVuY3Rpb24oKXtuLiRl
bC5pcygiOnZpc2libGUiKT9uLiRlbC5mYWRlT3V0KCk6bi4kZWwuaGlkZSgpfSwzZTMpfX1lbHNl
IHQ9Cmhpcy4kZWwuZmFkZU91dCgpfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuJzxkaXYg
Y2xhc3M9M0QidWktbWVzc2FnZSBhbD0KZXJ0IGFsZXJ0LScrZS5zdGF0dXMrJyIvPid9fSksZD0z
REJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7b25jPQpsaWNrOm51bGwsc2Vh
cmNod29yZDoiIn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdl
KHQsdGg9CmlzLm9wdGlvbnNEZWZhdWx0KSx0aGlzLnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGUo
dGhpcy5vcHRpb25zKSk7dmFyIG49M0R0aD0KaXM7dGhpcy5vcHRpb25zLm9uY2xpY2smJnRoaXMu
JGVsLm9uKCJzdWJtaXQiLGZ1bmN0aW9uKGUpe3ZhciB0PTNEbi4kZWwuZmluPQpkKCIjc2VhcmNo
Iik7bi5vcHRpb25zLm9uY2xpY2sodC52YWwoKSl9KX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3Jl
dHVybic8ZGk9CnYgY2xhc3M9M0QidWktc2VhcmNoIj48Zm9ybSBvbnN1Ym1pdD0zRCJyZXR1cm4g
ZmFsc2U7Ij48aW5wdXQgaWQ9M0Qic2VhcmNoIj0KIGNsYXNzPTNEImZvcm0tY29udHJvbCBpbnB1
dC1zbSIgdHlwZT0zRCJ0ZXh0IiBuYW1lPTNEInNlYXJjaCIgcGxhY2Vob2xkZXI9Cj0zRCJTZWFy
Y2guLi4iIHZhbHVlPTNEIicrZS5zZWFyY2h3b3JkKyciPicrJzxidXR0b24gdHlwZT0zRCJzdWJt
aXQiIGNsYXNzPQo9M0QiYnRuIHNlYXJjaC1idG4iPicrJzxpIGNsYXNzPTNEImZhIGZhLXNlYXJj
aCI+PC9pPicrIjwvYnV0dG9uPiIrIjwvZm9ybT49CiIrIjwvZGl2PiJ9fSksdj0zREJhY2tib25l
LlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7dHlwZToidGV4dCIscGxhY2Vobz0KbGRlcjoi
IixkaXNhYmxlZDohMSx2aXNpYmxlOiEwLGNsczoiIixhcmVhOiExfSxpbml0aWFsaXplOmZ1bmN0
aW9uKHQpe3RoaXMuPQpvcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRo
aXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGk9CnMub3B0aW9ucykpLHRoaXMub3B0aW9u
cy52YWx1ZSE9M0Q9M0R1bmRlZmluZWQmJnRoaXMudmFsdWUodGhpcy5vcHRpb25zLnZhbD0KdWUp
LHRoaXMub3B0aW9ucy5kaXNhYmxlZCYmdGhpcy4kZWwucHJvcCgiZGlzYWJsZWQiLCEwKSx0aGlz
Lm9wdGlvbnMudmlzaWJsPQplfHx0aGlzLiRlbC5oaWRlKCk7dmFyIG49M0R0aGlzO3RoaXMuJGVs
Lm9uKCJpbnB1dCIsZnVuY3Rpb24oKXtuLm9wdGlvbnMub249CmNoYW5nZSYmbi5vcHRpb25zLm9u
Y2hhbmdlKG4uJGVsLnZhbCgpKX0pfSx2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZSE9M0Q9Cj0z
RHVuZGVmaW5lZCYmdGhpcy4kZWwudmFsKGUpLHRoaXMuJGVsLnZhbCgpfSxfdGVtcGxhdGU6ZnVu
Y3Rpb24oZSl7cmV0dXJuID0KZS5hcmVhPyc8dGV4dGFyZWEgaWQ9M0QiJytlLmlkKyciIGNsYXNz
PTNEInVpLXRleHRhcmVhICcrZS5jbHMrJyI+PC90ZXh0YXJlPQphPic6JzxpbnB1dCBpZD0zRCIn
K2UuaWQrJyIgdHlwZT0zRCInK2UudHlwZSsnIiB2YWx1ZT0zRCInK2UudmFsdWUrJyIgcGxhY2U9
CmhvbGRlcj0zRCInK2UucGxhY2Vob2xkZXIrJyIgY2xhc3M9M0QidWktaW5wdXQgJytlLmNscysn
Ij4nfX0pLG09M0RCYWNrYm9uZT0KLlZpZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKGUp
e3RoaXMub3B0aW9ucz0zRGUsdGhpcy5zZXRFbGVtZW50KHRoaXMuPQpfdGVtcGxhdGUodGhpcy5v
cHRpb25zKSksdGhpcy5vcHRpb25zLnZhbHVlIT0zRD0zRHVuZGVmaW5lZCYmdGhpcy52YWx1ZSh0
aGk9CnMub3B0aW9ucy52YWx1ZSl9LHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlIT0zRD0zRHVu
ZGVmaW5lZCYmdGhpcy4kKCJoaWRkZT0KbiIpLnZhbChlKSx0aGlzLiQoImhpZGRlbiIpLnZhbCgp
fSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9M0QnPGRpdiBpZD0KPTNEIicrZS5pZCsnIiA+
JztyZXR1cm4gZS5pbmZvJiYodCs9M0QiPGxhYmVsPiIrZS5pbmZvKyI8L2xhYmVsPiIpLHQrPTNE
JzxoPQppZGRlbiB2YWx1ZT0zRCInK2UudmFsdWUrJyIvPicrIjwvZGl2PiIsdH19KTtyZXR1cm57
QW5jaG9yOmgsQnV0dG9uOmwsQnV0dG89Cm5JY29uOmMsQnV0dG9uTWVudTpzLEljb246ZixJbWFn
ZTp1LElucHV0OnYsTGFiZWw6YSxNZXNzYWdlOnAsTW9kYWw6byxSYWRpbz0KQnV0dG9uOnIuUmFk
aW9CdXR0b24sQ2hlY2tib3g6ci5DaGVja2JveCxSYWRpbzpyLlJhZGlvLFNlYXJjaGJveDpkLFNl
bGVjdDp0PQosSGlkZGVuOm0sU2xpZGVyOm4sRHJpbGxkb3duOml9fSksZGVmaW5lKCJwbHVnaW4v
bGlicmFyeS9qb2JzIixbInV0aWxzL3V0aWw9CnMiXSxmdW5jdGlvbihlKXtyZXR1cm4gQmFja2Jv
bmUuTW9kZWwuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKHQsbil7dGhpcz0KLmFwcD0zRHQs
dGhpcy5vcHRpb25zPTNEZS5tZXJnZShuLHRoaXMub3B0aW9uc0RlZmF1bHQpfSxyZXF1ZXN0OmZ1
bmN0aW9uKGUsPQp0LG4scixpKXt2YXIgcz0zRHRoaXM7ZS5zdGF0ZSgid2FpdCIsIlJlcXVlc3Rp
bmcgam9iIHJlc3VsdHMuLi4iKTt2YXIgbz0zRGU9Ci5nZXQoImRhdGFzZXRfaWRfam9iIik7byE9
M0QiIj9zLl93YWl0KGUscixpKTpzLl9zdWJtaXQoZSx0LG4scixpKX0sY2xlYW51cD0KOmZ1bmN0
aW9uKHQpe3ZhciBuPTNEdGhpcyxyPTNEdC5nZXQoImRhdGFzZXRfaWRfam9iIik7ciE9M0QiIiYm
KGUucmVxdWVzdCh7PQp0eXBlOiJQVVQiLHVybDpjb25maWcucm9vdCsiYXBpL2hpc3Rvcmllcy9u
b25lL2NvbnRlbnRzLyIrcixkYXRhOntkZWxldGVkOiE9CjB9LHN1Y2Nlc3M6ZnVuY3Rpb24oKXtu
Ll9yZWZyZXNoSGRhcygpfX0pLHQuc2V0KCJkYXRhc2V0X2lkX2pvYiIsIiIpKX0sX3N1Yj0KbWl0
OmZ1bmN0aW9uKHQsbixyLGkscyl7dmFyIG89M0R0aGlzLHU9M0R0LmlkLGE9M0R0LmdldCgidHlw
ZSIpLGY9M0R0LmRlZmluPQppdGlvbjtkYXRhPTNEe3Rvb2xfaWQ6ImNoYXJ0cyIsaW5wdXRzOntp
bnB1dDp7aWQ6dC5nZXQoImRhdGFzZXRfaWQiKSxzcmM6Img9CmRhIn0sbW9kdWxlOmYuZXhlY3V0
ZSxjb2x1bW5zOnIsc2V0dGluZ3M6bn19LHQuc3RhdGUoIndhaXQiLCJTZW5kaW5nIGpvYiByZT0K
cXVlc3QuLi4iKSxlLnJlcXVlc3Qoe3R5cGU6IlBPU1QiLHVybDpjb25maWcucm9vdCsiYXBpL3Rv
b2xzIixkYXRhOmRhdGEsc3VjPQpjZXNzOmZ1bmN0aW9uKGUpe2lmKCFlLm91dHB1dHN8fGUub3V0
cHV0cy5sZW5ndGg9M0Q9M0QwKXQuc3RhdGUoImZhaWxlZCIsIko9Cm9iIHN1Ym1pc3Npb24gZmFp
bGVkLiBObyByZXNwb25zZS4iKSxzJiZzKCk7ZWxzZXtvLl9yZWZyZXNoSGRhcygpO3ZhciBuPTNE
ZT0KLm91dHB1dHNbMF07dC5zdGF0ZSgid2FpdCIsIllvdXIgam9iIGhhcyBiZWVuIHF1ZXVlZC4g
WW91IG1heSBjbG9zZSB0aGUgYnJvPQp3c2VyIHdpbmRvdy4gVGhlIGpvYiB3aWxsIHJ1biBpbiB0
aGUgYmFja2dyb3VuZC4iKSx0LnNldCgiZGF0YXNldF9pZF9qb2IiLG49Ci5pZCksby5hcHAuc3Rv
cmFnZS5zYXZlKCksby5fd2FpdCh0LGkscyl9fSxlcnJvcjpmdW5jdGlvbihlKXt2YXIgbj0zRCIi
O2UmJj0KZS5tZXNzYWdlJiZlLm1lc3NhZ2UuZGF0YSYmZS5tZXNzYWdlLmRhdGEuaW5wdXQmJihu
PTNEZS5tZXNzYWdlLmRhdGEuaW5wdXQrPQoiLiIpLHQuc3RhdGUoImZhaWxlZCIsIlRoaXMgdmlz
dWFsaXphdGlvbiByZXF1aXJlcyB0aGUgJ2NoYXJ0cycgdG9vbC4gUGxlYXM9CmUgbWFrZSBzdXJl
IGl0IGlzIGluc3RhbGxlZC4gIituKSxzJiZzKCl9fSl9LF93YWl0OmZ1bmN0aW9uKHQsbixyKXt2
YXIgaT0zRD0KdGhpcztlLnJlcXVlc3Qoe3R5cGU6IkdFVCIsdXJsOmNvbmZpZy5yb290KyJhcGkv
ZGF0YXNldHMvIit0LmdldCgiZGF0YXNldF9pPQpkX2pvYiIpLGRhdGE6e30sc3VjY2VzczpmdW5j
dGlvbihlKXt2YXIgcz0zRCExO3N3aXRjaChlLnN0YXRlKXtjYXNlIm9rIjp0LnM9CnRhdGUoIndh
aXQiLCJKb2IgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4uLiIpLG4mJm4oZSkscz0zRCEwO2JyZWFr
O2Nhc2UiZXJybz0KciI6dC5zdGF0ZSgiZmFpbGVkIiwiSm9iIGhhcyBmYWlsZWQuIFBsZWFzZSBj
aGVjayB0aGUgaGlzdG9yeSBmb3IgZGV0YWlscy4iPQopLHImJnIoZSkscz0zRCEwO2JyZWFrO2Nh
c2UicnVubmluZyI6dC5zdGF0ZSgid2FpdCIsIllvdXIgam9iIGlzIHJ1bm5pbmcuIFk9Cm91IG1h
eSBjbG9zZSB0aGUgYnJvd3NlciB3aW5kb3cuIFRoZSBqb2Igd2lsbCBjb250aW51ZSBpbiB0aGUg
YmFja2dyb3VuZC4iKT0KfXN8fHNldFRpbWVvdXQoZnVuY3Rpb24oKXtpLl93YWl0KHQsbixyKX0s
aS5hcHAuY29uZmlnLmdldCgicXVlcnlfdGltZW91dCIpPQopfX0pfSxfcmVmcmVzaEhkYXM6ZnVu
Y3Rpb24oKXtHYWxheHkmJkdhbGF4eS5jdXJySGlzdG9yeVBhbmVsJiZHYWxheHkuY3Vyckg9Cmlz
dG9yeVBhbmVsLnJlZnJlc2hDb250ZW50cygpfX0pfSksZGVmaW5lKCJwbHVnaW4vbGlicmFyeS9k
YXRhc2V0cyIsWyJ1dGlscz0KL3V0aWxzIl0sZnVuY3Rpb24oZSl7cmV0dXJuIEJhY2tib25lLkNv
bGxlY3Rpb24uZXh0ZW5kKHtsaXN0Ont9LGNhY2hlOnt9LGluPQppdGlhbGl6ZTpmdW5jdGlvbih0
LG4pe3RoaXMuYXBwPTNEdCx0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKG4sdGhpcy5vcHRpb25zRGU9
CmZhdWx0KX0scmVxdWVzdDpmdW5jdGlvbihlKXtlLmdyb3Vwcz90aGlzLl9nZXRfYmxvY2tzKGUp
OnRoaXMuX2dldF9kYXRhc2V0KD0KZS5pZCxlLnN1Y2Nlc3MsZS5lcnJvcil9LF9nZXRfYmxvY2tz
OmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGMoaSl7bC5fZ2V0KGksZnVuPQpjdGlvbigpe3ZhciBzPTNE
ITE7Zm9yKHZhciBvIGluIGUuZ3JvdXBzKXtkZXN0aW5hdGlvbl9ncm91cD0zRGUuZ3JvdXBzW29d
LHM9Cm91cmNlX2dyb3VwPTNEaS5ncm91cHNbb10sZGVzdGluYXRpb25fZ3JvdXAudmFsdWVzfHwo
ZGVzdGluYXRpb25fZ3JvdXAudmFsdT0KZXM9M0RbXSksZGVzdGluYXRpb25fZ3JvdXAudmFsdWVz
PTNEZGVzdGluYXRpb25fZ3JvdXAudmFsdWVzLmNvbmNhdChzb3VyY2VfPQpncm91cC52YWx1ZXMp
O2lmKHNvdXJjZV9ncm91cC52YWx1ZXMubGVuZ3RoPTNEPTNEMCl7cz0zRCEwO2JyZWFrfX1pZigr
K2Y8dSY9CiYhcyl7biYmbihwYXJzZUludChmL3UqMTAwKSk7dmFyIGw9M0RpLnN0YXJ0K3I7aT0z
RCQuZXh0ZW5kKCEwLGEse3N0YXJ0Omx9KT0KLGMoaSl9ZWxzZSB0KCl9KX12YXIgdD0zRGUuc3Vj
Y2VzcyxuPTNEZS5wcm9ncmVzcyxyPTNEdGhpcy5hcHAuY29uZmlnLmdldCgiPQpxdWVyeV9saW1p
dCIpLGk9M0RlLnN0YXJ0fHwwLHM9M0RpK2UucXVlcnlfbGltaXR8fGkrdGhpcy5hcHAuY29uZmln
LmdldCgicXU9CmVyeV9saW1pdCIpLG89M0RNYXRoLmFicyhzLWkpO2lmKG88PTNEMCl7Y29uc29s
ZS5kZWJ1ZygiRkFJTEVEIC0gRGF0YXNldHM6Oj0KcmVxdWVzdCgpIC0gSW52YWxpZCBxdWVyeSBy
YW5nZS4iKTtyZXR1cm59dmFyIHU9M0RNYXRoLmNlaWwoby9yKXx8MSxhPTNEJC5lPQp4dGVuZCgh
MCx7fSxlKSxmPTNEMCxsPTNEdGhpcyxoPTNEJC5leHRlbmQoITAsYSx7c3RhcnQ6aX0pO3RoaXMu
X2dldF9kYXRhc2U9CnQoZS5pZCxmdW5jdGlvbigpe2MoaCl9KX0sX2dldF9kYXRhc2V0OmZ1bmN0
aW9uKHQsbixyKXt2YXIgaT0zRHRoaXMubGlzdFt0XT0KO2lmKGkpe24oaSk7cmV0dXJufXZhciBz
PTNEdGhpcztlLnJlcXVlc3Qoe3R5cGU6IkdFVCIsdXJsOmNvbmZpZy5yb290KyJhcGkvPQpkYXRh
c2V0cy8iK3Qsc3VjY2VzczpmdW5jdGlvbihlKXtzd2l0Y2goZS5zdGF0ZSl7Y2FzZSJlcnJvciI6
ciYmcihlKTticmVhazs9CmRlZmF1bHQ6cy5saXN0W3RdPTNEZSxuKGUpfX19KX0sX2Jsb2NrX2lk
OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuaWQrIl8iK2Uucz0KdGFydCsiXyIrZS5zdGFydCt0aGlz
LmFwcC5jb25maWcuZ2V0KCJxdWVyeV9saW1pdCIpKyJfIit0fSxfZ2V0OmZ1bmN0aW9uKGUsPQp0
KXtlLnN0YXJ0PTNEZS5zdGFydHx8MDt2YXIgbj0zRFtdLHI9M0R7fSxpPTNEMDtmb3IodmFyIHMg
aW4gZS5ncm91cHMpe3ZhciA9Cm89M0RlLmdyb3Vwc1tzXTtmb3IodmFyIHUgaW4gby5jb2x1bW5z
KXt2YXIgYT0zRG8uY29sdW1uc1t1XS5pbmRleCxmPTNEdGhpcz0KLl9ibG9ja19pZChlLGEpO2lm
KHRoaXMuY2FjaGVbZl18fGE9M0Q9M0Q9M0QiYXV0byJ8fGE9M0Q9M0Q9M0QiemVybyIpY29udGlu
PQp1ZTshclthXSYmYSE9M0Q9M0R1bmRlZmluZWQmJihyW2FdPTNEaSxuLnB1c2goYSksaSsrKX19
aWYobi5sZW5ndGg9M0Q9M0QwKXs9CnRoaXMuX2ZpbGxfZnJvbV9jYWNoZShlKSx0KGUpO3JldHVy
bn12YXIgbD0zRHtkYXRhc2V0X2lkOmUuaWQsc3RhcnQ6ZS5zdGFydD0KLGNvbHVtbnM6bn0sYz0z
RHRoaXM7dGhpcy5fZmV0Y2gobCxmdW5jdGlvbihyKXtmb3IodmFyIGkgaW4gcil7dmFyIHM9M0Ru
W2ldPQosbz0zRGMuX2Jsb2NrX2lkKGUscyk7Yy5jYWNoZVtvXT0zRHJbaV19Yy5fZmlsbF9mcm9t
X2NhY2hlKGUpLHQoZSl9KX0sX2ZpbGw9Cl9mcm9tX2NhY2hlOmZ1bmN0aW9uKGUpe3ZhciB0PTNE
ZS5zdGFydDtjb25zb2xlLmRlYnVnKCJEYXRhc2V0czo6X2ZpbGxfZnJvbT0KX2NhY2hlKCkgLSBG
aWxsaW5nIHJlcXVlc3QgZnJvbSBjYWNoZSBhdCAiK3QrIi4iKTt2YXIgbj0zRDA7Zm9yKHZhciBy
IGluIGUuPQpncm91cHMpe3ZhciBpPTNEZS5ncm91cHNbcl07Zm9yKHZhciBzIGluIGkuY29sdW1u
cyl7dmFyIG89M0RpLmNvbHVtbnNbc10sdT0KPTNEdGhpcy5fYmxvY2tfaWQoZSxvLmluZGV4KSxh
PTNEdGhpcy5jYWNoZVt1XTthJiYobj0zRE1hdGgubWF4KG4sYS5sZW5ndGgpPQopfX1uPTNEPTNE
MCYmY29uc29sZS5kZWJ1ZygiRGF0YXNldHM6Ol9maWxsX2Zyb21fY2FjaGUoKSAtIFJlYWNoZWQg
ZGF0YSByYW49CmdlIGxpbWl0LiIpO2Zvcih2YXIgciBpbiBlLmdyb3Vwcyl7dmFyIGk9M0RlLmdy
b3Vwc1tyXTtpLnZhbHVlcz0zRFtdO2Zvcih2YT0KciBmPTNEMDtmPG47ZisrKWkudmFsdWVzW2Zd
PTNEe3g6cGFyc2VJbnQoZikrdH19Zm9yKHZhciByIGluIGUuZ3JvdXBzKXt2YXIgPQppPTNEZS5n
cm91cHNbcl07Zm9yKHZhciBzIGluIGkuY29sdW1ucyl7dmFyIG89M0RpLmNvbHVtbnNbc107c3dp
dGNoKG8uaW5kZXg9Cil7Y2FzZSJhdXRvIjpmb3IodmFyIGY9M0QwO2Y8bjtmKyspe3ZhciBsPTNE
aS52YWx1ZXNbZl07bFtzXT0zRHBhcnNlSW50KGYpKz0KdH1icmVhaztjYXNlInplcm8iOmZvcih2
YXIgZj0zRDA7ZjxuO2YrKyl7dmFyIGw9M0RpLnZhbHVlc1tmXTtsW3NdPTNEMH1icmVhPQprO2Rl
ZmF1bHQ6dmFyIHU9M0R0aGlzLl9ibG9ja19pZChlLG8uaW5kZXgpLGE9M0R0aGlzLmNhY2hlW3Vd
O2Zvcih2YXIgZj0zRDA9CjtmPG47ZisrKXt2YXIgbD0zRGkudmFsdWVzW2ZdLGM9M0RhW2ZdO2lz
TmFOKGMpJiYhby5pc19sYWJlbCYmKGM9M0QwKSxsW3NdPQo9M0RjfX19fX0sX2ZldGNoOmZ1bmN0
aW9uKHQsbil7dmFyIHI9M0R0LnN0YXJ0P3Quc3RhcnQ6MCxpPTNEdGhpcy5hcHAuY29uZmk9Cmcu
Z2V0KCJxdWVyeV9saW1pdCIpLHM9M0QwO3QuY29sdW1ucyYmKHM9M0R0LmNvbHVtbnMubGVuZ3Ro
LGNvbnNvbGUuZGVidWcoIj0KRGF0YXNldHM6Ol9mZXRjaCgpIC0gRmV0Y2hpbmcgIitzKyIgY29s
dW1uKHMpIGF0ICIrcisiLiIpKSxzPTNEPTNEMCYmY29uc29sPQplLmRlYnVnKCJEYXRhc2V0czo6
X2ZldGNoKCkgLSBObyBjb2x1bW5zIHJlcXVlc3RlZCIpO3ZhciBvPTNEIiI7Zm9yKHZhciB1IGk9
Cm4gdC5jb2x1bW5zKW8rPTNEdC5jb2x1bW5zW3VdKyIsIjtvPTNEby5zdWJzdHJpbmcoMCxvLmxl
bmd0aC0xKTt2YXIgYT0zRHRoaT0KcztlLnJlcXVlc3Qoe3R5cGU6IkdFVCIsdXJsOmNvbmZpZy5y
b290KyJhcGkvZGF0YXNldHMvIit0LmRhdGFzZXRfaWQsZGF0YTp7PQpkYXRhX3R5cGU6InJhd19k
YXRhIixwcm92aWRlcjoiZGF0YXNldC1jb2x1bW4iLGxpbWl0Omksb2Zmc2V0OnIsaW5kZWNlczpv
fSw9CnN1Y2Nlc3M6ZnVuY3Rpb24oZSl7dmFyIHQ9M0RuZXcgQXJyYXkocyk7Zm9yKHZhciByPTNE
MDtyPHM7cisrKXRbcl09M0RbXTtmbz0Kcih2YXIgciBpbiBlLmRhdGEpe3ZhciBpPTNEZS5kYXRh
W3JdO2Zvcih2YXIgbyBpbiBpKXt2YXIgdT0zRGlbb107dSE9M0Q9M0R1PQpuZGVmaW5lZCYmdSE9
M0QyMTQ3NDgzNjQ3JiZ0W29dLnB1c2godSl9fWNvbnNvbGUuZGVidWcoIkRhdGFzZXRzOjpfZmV0
Y2goKSA9Ci0gRmV0Y2hpbmcgY29tcGxldGUuIiksbih0KX19KX19KX0pLGRlZmluZSgicGx1Z2lu
L21vZGVscy9ncm91cCIsW10sZnVuY3Rpbz0Kbigpe3JldHVybiBCYWNrYm9uZS5Nb2RlbC5leHRl
bmQoe2RlZmF1bHRzOntrZXk6IkRhdGEgbGFiZWwiLGRhdGU6IiJ9LHJlc2V0PQo6ZnVuY3Rpb24o
KXt0aGlzLmNsZWFyKHtzaWxlbnQ6ITB9KS5zZXQodGhpcy5kZWZhdWx0cyksdGhpcy50cmlnZ2Vy
KCJyZXNldCI9Cix0aGlzKX19KX0pLGRlZmluZSgicGx1Z2luL21vZGVscy9ncm91cHMiLFsicGx1
Z2luL21vZGVscy9ncm91cCJdLGZ1bmN0aW9uKD0KZSl7cmV0dXJuIEJhY2tib25lLkNvbGxlY3Rp
b24uZXh0ZW5kKHttb2RlbDplfSl9KSxkZWZpbmUoInBsdWdpbi9tb2RlbHMvY2hhPQpydCIsWyJw
bHVnaW4vbW9kZWxzL2dyb3VwcyJdLGZ1bmN0aW9uKGUpe3JldHVybiBCYWNrYm9uZS5Nb2RlbC5l
eHRlbmQoe2RlZmE9CnVsdHM6e2lkOm51bGwsdGl0bGU6IiIsdHlwZToiIixkYXRlOm51bGwsc3Rh
dGU6IiIsc3RhdGVfaW5mbzoiIixtb2RpZmllZDohMT0KLGRhdGFzZXRfaWQ6IiIsZGF0YXNldF9p
ZF9qb2I6IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5ncm91cHM9M0RuZXcgPQplLHRo
aXMuc2V0dGluZ3M9M0RuZXcgQmFja2JvbmUuTW9kZWx9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5j
bGVhcih7c2lsZW50OiE9CjB9KS5zZXQodGhpcy5kZWZhdWx0cyksdGhpcy5ncm91cHMucmVzZXQo
KSx0aGlzLnNldHRpbmdzLmNsZWFyKCksdGhpcy50cmlnZz0KZXIoInJlc2V0Iix0aGlzKX0sY29w
eTpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXM7dC5jbGVhcih7c2lsZW50OiEwfSkuc2V0KHRoPQpp
cy5kZWZhdWx0cyksdC5zZXQoZS5hdHRyaWJ1dGVzKSx0LnNldHRpbmdzPTNEZS5zZXR0aW5ncy5j
bG9uZSgpLHQuZ3JvdXBzLnI9CmVzZXQoKSxlLmdyb3Vwcy5lYWNoKGZ1bmN0aW9uKGUpe3QuZ3Jv
dXBzLmFkZChlLmNsb25lKCkpfSksdC50cmlnZ2VyKCJjaGFuZz0KZSIsdCl9LHN0YXRlOmZ1bmN0
aW9uKGUsdCl7dGhpcy5zZXQoInN0YXRlIixlKSx0aGlzLnNldCgic3RhdGVfaW5mbyIsdCksdGhp
PQpzLnRyaWdnZXIoInNldDpzdGF0ZSIpLGNvbnNvbGUuZGVidWcoIkNoYXJ0OnN0YXRlKCkgLSAi
K3QrIiAoIitlKyIpIil9fSl9KTs9CnZhciBWaXN1YWxpemF0aW9uPTNEQmFja2JvbmUuTW9kZWwu
ZXh0ZW5kKHtkZWZhdWx0czp7Y29uZmlnOnt9fSx1cmxSb290OmZ1bj0KY3Rpb24oKXt2YXIgZT0z
RCIvYXBpL3Zpc3VhbGl6YXRpb25zIjtyZXR1cm4gd2luZG93LmdhbGF4eV9jb25maWcmJmdhbGF4
eV9jPQpvbmZpZy5yb290P2dhbGF4eV9jb25maWcucm9vdCtlOmV9LGluaXRpYWxpemU6ZnVuY3Rp
b24oZSl7Xy5pc09iamVjdChlLmNvbmY9CmlnKSYmXy5pc09iamVjdCh0aGlzLmRlZmF1bHRzLmNv
bmZpZykmJl8uZGVmYXVsdHMoZS5jb25maWcsdGhpcy5kZWZhdWx0cy5jbz0KbmZpZyksdGhpcy5f
c2V0VXBMaXN0ZW5lcnMoKX0sX3NldFVwTGlzdGVuZXJzOmZ1bmN0aW9uKCl7fSxzZXQ6ZnVuY3Rp
b24oZSx0PQope2lmKGU9M0Q9M0Q9M0QiY29uZmlnIil7dmFyIG49M0R0aGlzLmdldCgiY29uZmln
Iik7Xy5pc09iamVjdChuKSYmKHQ9M0RfLmU9Cnh0ZW5kKF8uY2xvbmUobiksdCkpfXJldHVybiBC
YWNrYm9uZS5Nb2RlbC5wcm90b3R5cGUuc2V0LmNhbGwodGhpcyxlLHQpLHRoaT0Kc30sdG9TdHJp
bmc6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMuZ2V0KCJpZCIpfHwiIjtyZXR1cm4gdGhpcy5nZXQo
InRpdGxlIikmPQomKGUrPTNEIjoiK3RoaXMuZ2V0KCJ0aXRsZSIpKSwiVmlzdWFsaXphdGlvbigi
K2UrIikifX0pLFZpc3VhbGl6YXRpb25Db2xsZWM9CnRpb249M0RCYWNrYm9uZS5Db2xsZWN0aW9u
LmV4dGVuZCh7bW9kZWw6VmlzdWFsaXphdGlvbix1cmw6ZnVuY3Rpb24oKXtyZXR1cj0KbiBnYWxh
eHlfY29uZmlnLnJvb3QrImFwaS92aXN1YWxpemF0aW9ucyJ9LGluaXRpYWxpemU6ZnVuY3Rpb24o
ZSx0KXt0PTNEdHx8PQp7fX0sc2V0OmZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0aGlzO2U9M0RfLm1h
cChlLGZ1bmN0aW9uKGUpe3ZhciB0PTNEbi5nZXQoZS49CmlkKTtpZighdClyZXR1cm4gZTt2YXIg
cj0zRHQudG9KU09OKCk7cmV0dXJuIF8uZXh0ZW5kKHIsZSkscn0pLEJhY2tib25lLkNvbD0KbGVj
dGlvbi5wcm90b3R5cGUuc2V0LmNhbGwodGhpcyxlLHQpfSx0b1N0cmluZzpmdW5jdGlvbigpe3Jl
dHVyblsiVmlzdWFsaXphPQp0aW9uQ29sbGVjdGlvbigiLFt0aGlzLmhpc3RvcnlJZCx0aGlzLmxl
bmd0aF0uam9pbigpLCIpIl0uam9pbigiIil9fSk7ZGVmaW49CmUoIm12Yy92aXN1YWxpemF0aW9u
L3Zpc3VhbGl6YXRpb24tbW9kZWwiLGZ1bmN0aW9uKCl7fSksZGVmaW5lKCJwbHVnaW4vbGlicj0K
YXJ5L3N0b3JhZ2UiLFsidXRpbHMvdXRpbHMiLCJwbHVnaW4vbW9kZWxzL2NoYXJ0IiwicGx1Z2lu
L21vZGVscy9ncm91cCIsIm12PQpjL3Zpc3VhbGl6YXRpb24vdmlzdWFsaXphdGlvbi1tb2RlbCJd
LGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gQmFja2JvbmUuTW9kZWw9Ci5leHRlbmQoe3ZpczpudWxs
LGluaXRpYWxpemU6ZnVuY3Rpb24oZSl7dGhpcy5hcHA9M0RlLHRoaXMuY2hhcnQ9M0R0aGlzLmFw
cD0KLmNoYXJ0LHRoaXMub3B0aW9ucz0zRHRoaXMuYXBwLm9wdGlvbnMsdGhpcy5pZD0zRHRoaXMu
b3B0aW9ucy5pZCx0aGlzLnZpcz0KPTNEbmV3IFZpc3VhbGl6YXRpb24oe3R5cGU6ImNoYXJ0cyIs
Y29uZmlnOntkYXRhc2V0X2lkOnRoaXMub3B0aW9ucy5jb25maWcuPQpkYXRhc2V0X2lkLGNoYXJ0
X2RpY3Q6e319fSksdGhpcy5pZCYmKHRoaXMudmlzLmlkPTNEdGhpcy5pZCk7dmFyIHQ9M0R0aGlz
Lm89CnB0aW9ucy5jb25maWcuY2hhcnRfZGljdDt0JiYodGhpcy52aXMuZ2V0KCJjb25maWciKS5j
aGFydF9kaWN0PTNEdCl9LHNhdmU6Zj0KdW5jdGlvbigpe3ZhciBlPTNEdGhpcy5hcHAuY2hhcnQ7
dGhpcy52aXMuZ2V0KCJjb25maWciKS5jaGFydF9kaWN0PTNEe307dmFyPQogdD0zRGUuZ2V0KCJ0
aXRsZSIpO3QhPTNEIiImJnRoaXMudmlzLnNldCgidGl0bGUiLHQpO3ZhciBuPTNEe2F0dHJpYnV0
ZXM6ZS49CmF0dHJpYnV0ZXMsc2V0dGluZ3M6ZS5zZXR0aW5ncy5hdHRyaWJ1dGVzLGdyb3Vwczpb
XX07ZS5ncm91cHMuZWFjaChmdW5jdGlvbj0KKGUpe24uZ3JvdXBzLnB1c2goZS5hdHRyaWJ1dGVz
KX0pLHRoaXMudmlzLmdldCgiY29uZmlnIikuY2hhcnRfZGljdD0zRG47dmFyPQogcj0zRHRoaXM7
dGhpcy52aXMuc2F2ZSgpLmZhaWwoZnVuY3Rpb24oZSx0LG4pe2NvbnNvbGUuZXJyb3IoZSx0LG4p
fSkudGhlbig9CmZ1bmN0aW9uKGUpe2UmJmUuaWQmJihyLmlkPTNEZS5pZCl9KX0sbG9hZDpmdW5j
dGlvbigpe3ZhciBlPTNEdGhpcy52aXMuZ2V0KD0KImNvbmZpZyIpLmNoYXJ0X2RpY3Q7aWYoIWUu
YXR0cmlidXRlcylyZXR1cm4hMTt2YXIgdD0zRGUuYXR0cmlidXRlcy50eXBlO2lmPQooIXQpcmV0
dXJuIGNvbnNvbGUuZGVidWcoIlN0b3JhZ2U6OmxvYWQoKSAtIENoYXJ0IHR5cGUgbm90IHByb3Zp
ZGVkLiBJbnZhbGk9CmQgZm9ybWF0LiIpLCExO3ZhciByPTNEdGhpcy5hcHAudHlwZXMuZ2V0KHQp
O2lmKCFyKXJldHVybiBjb25zb2xlLmRlYnVnKCJTdD0Kb3JhZ2U6OmxvYWQoKSAtIENoYXJ0IHR5
cGUgbm90IHN1cHBvcnRlZC4gUGxlYXNlIHJlLWNvbmZpZ3VyZSB0aGUgY2hhcnQuIFJlPQpzZXR0
aW5nIGNoYXJ0LiIpLCExO2NvbnNvbGUuZGVidWcoIlN0b3JhZ2U6OmxvYWQoKSAtIExvYWRpbmcg
Y2hhcnQgdHlwZSAiK3Q9CisiLiIpLHRoaXMuY2hhcnQuZGVmaW5pdGlvbj0zRHIsdGhpcy5jaGFy
dC5zZXQoZS5hdHRyaWJ1dGVzKSx0aGlzLmNoYXJ0LnN0YT0KdGUoIm9rIiwiTG9hZGluZyBzYXZl
ZCB2aXN1YWxpemF0aW9uLi4uIiksdGhpcy5jaGFydC5zZXR0aW5ncy5zZXQoZS5zZXR0aW5nPQpz
KTtmb3IodmFyIGkgaW4gZS5ncm91cHMpdGhpcy5jaGFydC5ncm91cHMuYWRkKG5ldyBuKGUuZ3Jv
dXBzW2ldKSk7cmV0dXJuIHQ9Cmhpcy5jaGFydC5zZXQoIm1vZGlmaWVkIiwhMSksITB9fSl9KSxk
ZWZpbmUoInV0aWxzL2RlZmVycmVkIixbInV0aWxzL3V0aWxzIj0KXSxmdW5jdGlvbihlKXtyZXR1
cm4gQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHtxdWV1ZTpbXSxwcm9jZXNzOnt9LGNvdW50ZXI6MCxp
PQpuaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLm9uKCJyZWZyZXNoIixmdW5jdGlvbigpe2lmKHRo
aXMucXVldWUubGVuZ3RoPjAmJnQ9Cmhpcy5yZWFkeSgpKXt2YXIgZT0zRHRoaXMucXVldWVbMF07
dGhpcy5xdWV1ZS5zcGxpY2UoMCwxKSxlJiZlKCl9fSl9LGV4ZWN1dD0KZTpmdW5jdGlvbihlKXt0
aGlzLnF1ZXVlLnB1c2goZSksdGhpcy50cmlnZ2VyKCJyZWZyZXNoIil9LHJlZ2lzdGVyOmZ1bmN0
aW9uPQooKXt2YXIgdD0zRGUudXVpZCgpO3JldHVybiB0aGlzLnByb2Nlc3NbdF09M0QhMCx0aGlz
LmNvdW50ZXIrKyxjb25zb2xlLmRlYnU9CmcoIkRlZmVycmVkOnJlZ2lzdGVyKCkgLSBSZWdpc3Rl
cmluZyAiK3QpLHR9LGRvbmU6ZnVuY3Rpb24oZSl7dGhpcy5wcm9jZXNzWz0KZV0mJihkZWxldGUg
dGhpcy5wcm9jZXNzW2VdLHRoaXMuY291bnRlci0tLGNvbnNvbGUuZGVidWcoIkRlZmVycmVkOmRv
bmUoKSAtPQogVW5yZWdpc3RlcmluZyAiK2UpLHRoaXMudHJpZ2dlcigicmVmcmVzaCIpKX0scmVz
ZXQ6ZnVuY3Rpb24oKXt0aGlzLnF1ZXVlPQo9M0RbXX0scmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5jb3VudGVyPTNEPTNEMH19KX0pLGRlZmluZSgicGx1Z2luL3ZpZXc9CnMvdmlld3BvcnQi
LFsibXZjL3VpL3VpLXBvcnRsZXQiLCJtdmMvdWkvdWktbWlzYyIsInV0aWxzL3V0aWxzIl0sZnVu
Y3Rpb24oZT0KLHQsbil7cmV0dXJuIEJhY2tib25lLlZpZXcuZXh0ZW5kKHtjb250YWluZXJfbGlz
dDpbXSxjYW52YXNfbGlzdDpbXSxpbml0aWFsPQppemU6ZnVuY3Rpb24oZSx0KXt0aGlzLmFwcD0z
RGUsdGhpcy5jaGFydD0zRHRoaXMuYXBwLmNoYXJ0LHRoaXMub3B0aW9ucz0zRG49Ci5tZXJnZSh0
LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCgkKHRoaXMuX3RlbXBsYXRlKCkp
KSx0aGlzLl9mdT0KbGxzY3JlZW4odGhpcy4kZWwsMTAwKSx0aGlzLl9jcmVhdGVDb250YWluZXIo
ImRpdiIpO3ZhciByPTNEdGhpczt0aGlzLmNoYXJ0PQoub24oInJlZHJhdyIsZnVuY3Rpb24oKXty
Ll9kcmF3KHIuY2hhcnQpfSksdGhpcy5jaGFydC5vbigic2V0OnN0YXRlIixmdW5jdGk9Cm9uKCl7
dmFyIGU9M0RyLiRlbC5maW5kKCIjaW5mbyIpLHQ9M0RyLiRlbC5maW5kKCIuY2hhcnRzLXZpZXdw
b3J0LWNvbnRhaW5lcj0KIiksbj0zRGUuZmluZCgiI2ljb24iKTtuLnJlbW92ZUNsYXNzKCksZS5z
aG93KCksZS5maW5kKCIjdGV4dCIpLmh0bWwoci5jaGFyPQp0LmdldCgic3RhdGVfaW5mbyIpKTt2
YXIgaT0zRHIuY2hhcnQuZ2V0KCJzdGF0ZSIpO3N3aXRjaChpKXtjYXNlIm9rIjplLmhpZGU9Cigp
LHQuc2hvdygpO2JyZWFrO2Nhc2UiZmFpbGVkIjpuLmFkZENsYXNzKCJpY29uIGZhIGZhLXdhcm5p
bmciKSx0LmhpZGUoKTticj0KZWFrO2RlZmF1bHQ6bi5hZGRDbGFzcygiaWNvbiBmYSBmYS1zcGlu
bmVyIGZhLXNwaW4iKSx0LnNob3coKX19KX0sc2hvdzpmdW5jPQp0aW9uKCl7dGhpcy4kZWwuc2hv
dygpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy4kZWwuaGlkZSgpfSxfZnVsbHNjcmVlbjpmdW5jdGk9
Cm9uKGUsdCl7ZS5jc3MoImhlaWdodCIsJCh3aW5kb3cpLmhlaWdodCgpLXQpLCQod2luZG93KS5y
ZXNpemUoZnVuY3Rpb24oKXtlLj0KY3NzKCJoZWlnaHQiLCQod2luZG93KS5oZWlnaHQoKS10KX0p
fSxfY3JlYXRlQ29udGFpbmVyOmZ1bmN0aW9uKGUsdCl7dD0zRHR8PQp8MTtmb3IodmFyIG4gaW4g
dGhpcy5jb250YWluZXJfbGlzdCl0aGlzLmNvbnRhaW5lcl9saXN0W25dLnJlbW92ZSgpO3RoaXMu
Y289Cm50YWluZXJfbGlzdD0zRFtdLHRoaXMuY2FudmFzX2xpc3Q9M0RbXTtmb3IodmFyIG49M0Qw
O248dDtuKyspe3ZhciByPTNEJCh0aD0KaXMuX3RlbXBsYXRlQ29udGFpbmVyKGUscGFyc2VJbnQo
MTAwL3QpKSk7dGhpcy4kZWwuYXBwZW5kKHIpLHRoaXMuY29udGFpbmVyPQpfbGlzdFtuXT0zRHIs
dGhpcy5jYW52YXNfbGlzdFtuXT0zRHIuZmluZCgiLmNoYXJ0cy12aWV3cG9ydC1jYW52YXMiKS5h
dHRyKCI9CmlkIil9fSxfZHJhdzpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMsbj0zRHRoaXMuYXBw
LmRlZmVycmVkLnJlZ2lzdGVyKCkscj0zRD0KZS5nZXQoInR5cGUiKTt0aGlzLmNoYXJ0X2RlZmlu
aXRpb249M0RlLmRlZmluaXRpb247dmFyIGk9M0QxO2Uuc2V0dGluZ3MuZ2V0PQooInVzZV9wYW5l
bHMiKT0zRD0zRD0zRCJ0cnVlIiYmKGk9M0RlLmdyb3Vwcy5sZW5ndGgpLHRoaXMuX2NyZWF0ZUNv
bnRhaW5lcig9CnRoaXMuY2hhcnRfZGVmaW5pdGlvbi50YWcsaSksZS5zdGF0ZSgid2FpdCIsIlBs
ZWFzZSB3YWl0Li4uIik7aWYoIXRoaXMuY2hhcj0KdF9kZWZpbml0aW9uLmV4ZWN1dGV8fHRoaXMu
Y2hhcnRfZGVmaW5pdGlvbi5leGVjdXRlJiZlLmdldCgibW9kaWZpZWQiKSl0aGlzPQouYXBwLmpv
YnMuY2xlYW51cChlKSxlLnNldCgibW9kaWZpZWQiLCExKTt2YXIgdD0zRHRoaXM7cmVxdWlyZShb
InBsdWdpbi9jaGE9CnJ0cy8iK3RoaXMuYXBwLmNoYXJ0UGF0aChyKSsiL3dyYXBwZXIiXSxmdW5j
dGlvbihyKXtpZih0LmNoYXJ0X2RlZmluaXRpb24uZT0KeGVjdXRlKXQuYXBwLmpvYnMucmVxdWVz
dChlLHQuX2RlZmF1bHRTZXR0aW5nc1N0cmluZyhlKSx0Ll9kZWZhdWx0UmVxdWVzdFN0PQpyaW5n
KGUpLGZ1bmN0aW9uKCl7dmFyIGk9M0RuZXcgcih0LmFwcCx7cHJvY2Vzc19pZDpuLGNoYXJ0OmUs
cmVxdWVzdF9kaWN0aW89Cm5hcnk6dC5fZGVmYXVsdFJlcXVlc3REaWN0aW9uYXJ5KGUpLGNhbnZh
c19saXN0OnQuY2FudmFzX2xpc3R9KX0sZnVuY3Rpb24oKT0Ke3RoaXMuYXBwLmRlZmVycmVkLmRv
bmUobil9KTtlbHNlIHZhciBpPTNEbmV3IHIodC5hcHAse3Byb2Nlc3NfaWQ6bixjaGFydDplPQos
cmVxdWVzdF9kaWN0aW9uYXJ5OnQuX2RlZmF1bHRSZXF1ZXN0RGljdGlvbmFyeShlKSxjYW52YXNf
bGlzdDp0LmNhbnZhc19saXM9CnR9KX0pfSxfZGVmYXVsdFJlcXVlc3RTdHJpbmc6ZnVuY3Rpb24o
ZSl7dmFyIHQ9M0QiIixuPTNEMCxyPTNEdGhpcztyZXR1cm4gZT0KLmdyb3Vwcy5lYWNoKGZ1bmN0
aW9uKGUpe24rKztmb3IodmFyIGkgaW4gci5jaGFydF9kZWZpbml0aW9uLmNvbHVtbnMpdCs9M0Rp
PQorIl8iK24rIjoiKyhwYXJzZUludChlLmdldChpKSkrMSkrIiwgIn0pLHQuc3Vic3RyaW5nKDAs
dC5sZW5ndGgtMil9LF9kZWZhdWw9CnRTZXR0aW5nc1N0cmluZzpmdW5jdGlvbihlKXt2YXIgdD0z
RCIiO2ZvcihrZXkgaW4gZS5zZXR0aW5ncy5hdHRyaWJ1dGVzKXQrPQo9M0RrZXkrIjoiK2Uuc2V0
dGluZ3MuZ2V0KGtleSkrIiwgIjtyZXR1cm4gdC5zdWJzdHJpbmcoMCx0Lmxlbmd0aC0yKX0sX2Rl
ZmE9CnVsdFJlcXVlc3REaWN0aW9uYXJ5OmZ1bmN0aW9uKGUpe3ZhciB0PTNEe2dyb3VwczpbXX07
dGhpcy5jaGFydF9kZWZpbml0aW9uLj0KZXhlY3V0ZT90LmlkPTNEZS5nZXQoImRhdGFzZXRfaWRf
am9iIik6dC5pZD0zRGUuZ2V0KCJkYXRhc2V0X2lkIik7dmFyIHI9M0QwPQosaT0zRHRoaXM7cmV0
dXJuIGUuZ3JvdXBzLmVhY2goZnVuY3Rpb24oZSl7dmFyIHM9M0R7fTtmb3IodmFyIG8gaW4gaS5j
aGFydF89CmRlZmluaXRpb24uY29sdW1ucyl7dmFyIHU9M0RpLmNoYXJ0X2RlZmluaXRpb24uY29s
dW1uc1tvXTtzW29dPTNEbi5tZXJnZSh7aT0KbmRleDplLmdldChvKX0sdSl9dC5ncm91cHMucHVz
aCh7a2V5OisrcisiOiIrZS5nZXQoImtleSIpLGNvbHVtbnM6c30pfSksdH0sPQpfdGVtcGxhdGU6
ZnVuY3Rpb24oKXtyZXR1cm4nPGRpdiBjbGFzcz0zRCJjaGFydHMtdmlld3BvcnQiPjxkaXYgaWQ9
M0QiaW5mbyI9CiBjbGFzcz0zRCJpbmZvIj48c3BhbiBpZD0zRCJpY29uIiBjbGFzcz0zRCJpY29u
Ii8+PHNwYW4gaWQ9M0QidGV4dCIgY2xhc3M9Cj0zRCJ0ZXh0IiAvPjwvZGl2PjwvZGl2Pid9LF90
ZW1wbGF0ZUNvbnRhaW5lcjpmdW5jdGlvbihlLHQpe3JldHVybic8ZGl2IGNsYT0Kc3M9M0QiY2hh
cnRzLXZpZXdwb3J0LWNvbnRhaW5lciIgc3R5bGU9M0Qid2lkdGg6Jyt0KyclOyI+JysnPGRpdiBp
ZD0zRCJtZW51PQoiLz4nKyI8IitlKycgaWQ9M0QiJytuLnV1aWQoKSsnIiBjbGFzcz0zRCJjaGFy
dHMtdmlld3BvcnQtY2FudmFzIj4nKyI8L2Rpdj49CiJ9fSl9KSxkZWZpbmUoInBsdWdpbi9saWJy
YXJ5L3NjcmVlbnNob3QiLFsibGlicy91bmRlcnNjb3JlIl0sZnVuY3Rpb24oZSl7Zj0KdW5jdGlv
biB0KGUpe2UuJGVsLmZpbmQoInN2ZyIpLmxlbmd0aD4wP3IoZSk6bihlKX1mdW5jdGlvbiBuKGUp
e3RyeXt2YXIgdD0KPTNEZS4kZWwuZmluZCgiLmpxcGxvdC10YXJnZXQiKSxuPTNEdC5qcXBsb3RU
b0ltYWdlU3RyKHt9KTtuJiYod2luZG93LmxvY2F0PQppb24uaHJlZj0zRG4ucmVwbGFjZSgiaW1h
Z2UvcG5nIiwiaW1hZ2Uvb2N0ZXQtc3RyZWFtIikpfWNhdGNoKHIpe2NvbnNvbGUuZGU9CmJ1Zygi
RkFJTEVEIC0gU2NyZWVuc2hvdDo6X2Zyb21DYW52YXMoKSAtICIrciksZS5lcnJvciYmZS5lcnJv
cigiUGxlYXNlIHJlZD0KdWNlIHlvdXIgY2hhcnQgdG8gYSBzaW5nbGUgcGFuZWwgYW5kIHRyeSBh
Z2Fpbi4iKX19ZnVuY3Rpb24gcihlKXt2YXIgdD0zRGUuPQokZWwsbj0zRGUudXJsLHI9M0RlLm5h
bWUscz0zRG5ldyBYTUxTZXJpYWxpemVyLG89M0Rkb2N1bWVudC5jcmVhdGVFbGVtZW50KCI9CmNh
bnZhcyIpLHU9M0QkKG8pLGE9M0R0LmZpbmQoInN2ZyIpLmxlbmd0aCxmPTNEdC5maW5kKCJzdmci
KS5maXJzdCgpLGw9M0RwYT0KcnNlSW50KGYuY3NzKCJoZWlnaHQiKSksYz0zRHBhcnNlSW50KGYu
Y3NzKCJ3aWR0aCIpKTt1LmF0dHIoIndpZHRoIixjKmEpLHUuPQphdHRyKCJoZWlnaHQiLGwpLCgh
by5nZXRDb250ZXh0fHwhby5nZXRDb250ZXh0KCIyZCIpKSYmYWxlcnQoIllvdXIgYnJvd3NlciA9
CmRvZXNuJ3Qgc3VwcG9ydCB0aGlzIGZlYXR1cmUsIHBsZWFzZSB1c2UgYSBtb2Rlcm4gYnJvd3Nl
ciIpO3ZhciBoPTNEby5nZXRDbz0KbnRleHQoIjJkIikscD0zRDA7dC5maW5kKCJzdmciKS5lYWNo
KGZ1bmN0aW9uKCl7dmFyIGU9M0QkKHRoaXMpO2UuYXR0cih7dmVyPQpzaW9uOiIxLjEiLHhtbG5z
OiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6YyxoZWlnaHQ6bH0pO3ZhciB0PTNE
cy49CnNlcmlhbGl6ZVRvU3RyaW5nKHRoaXMpO2guZHJhd1N2Zyh0LHAsMCxjLGwpLHArPTNEY30p
LHdpbmRvdy5sb2NhdGlvbi5ocmVmPQo9M0RpKG8sby5nZXRDb250ZXh0KCIyZCIpLCJ3aGl0ZSIp
LnJlcGxhY2UoImltYWdlL3BuZyIsImltYWdlL29jdGV0LXN0cmVhbSI9Cil9ZnVuY3Rpb24gaShl
LHQsbil7dmFyIHI9M0RlLndpZHRoLGk9M0RlLmhlaWdodCxzO2lmKG4pe3M9M0R0LmdldEltYWdl
RGF0YT0KKDAsMCxyLGkpO3ZhciBvPTNEdC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb247dC5nbG9i
YWxDb21wb3NpdGVPcGVyYXRpb249M0QiPQpkZXN0aW5hdGlvbi1vdmVyIix0LmZpbGxTdHlsZT0z
RG4sdC5maWxsUmVjdCgwLDAscixpKX12YXIgdT0zRGUudG9EYXRhVVJMKCI9CmltYWdlL3BuZyIp
O3JldHVybiBuJiYodC5jbGVhclJlY3QoMCwwLHIsaSksdC5wdXRJbWFnZURhdGEocywwLDApLHQu
Z2xvYmFsQz0Kb21wb3NpdGVPcGVyYXRpb249M0RvKSx1fWZ1bmN0aW9uIHMoZSl7d2luZG93Lmxv
Y2F0aW9uLmhyZWY9M0QiZGF0YTpub25lL25vPQpuZTtiYXNlNjQsIitidG9hKGEoZSkuc3RyaW5n
KX1mdW5jdGlvbiBvKGUpe2Zvcih2YXIgdCBpbiBkb2N1bWVudC5zdHlsZVNoZWU9CnRzKXt2YXIg
bj0zRGRvY3VtZW50LnN0eWxlU2hlZXRzW3RdLHI9M0RuLmNzc1J1bGVzO2lmKHIpZm9yKHZhciBp
PTNEMCxzPTNEcj0KLmxlbmd0aDtpPHM7aSsrKXRyeXtlLmZpbmQocltpXS5zZWxlY3RvclRleHQp
LmVhY2goZnVuY3Rpb24oZSx0KXt0LnN0eWxlLmNzPQpzVGV4dCs9M0RyW2ldLnN0eWxlLmNzc1Rl
eHR9KX1jYXRjaChvKXt9fX1mdW5jdGlvbiB1KGUpe3ZhciB0PTNEYShlKSxuPTNEe2Y9CmlsZW5h
bWU6bmFtZXx8ImNoYXJ0Iix0eXBlOiJhcHBsaWNhdGlvbi9wZGYiLGhlaWdodDp0LmhlaWdodCx3
aWR0aDp0LndpZHRoLD0Kc2NhbGU6Mixzdmc6dC5zdHJpbmd9LHI9M0QkKCJib2R5IiksaT0zRHIu
ZmluZCgiI3ZpZXdwb3J0LWZvcm0iKTtpLmxlbmd0aD0KPTNEPTNEPTNEMCYmKGk9M0QkKCI8Zm9y
bT4iLHtpZDoidmlld3BvcnQtZm9ybSIsbWV0aG9kOiJwb3N0IixhY3Rpb246Imh0dHA6PQovL2V4
cG9ydC5oaWdoY2hhcnRzLmNvbS8iLGRpc3BsYXk6Im5vbmUifSksci5hcHBlbmQoaSkpLGkuZW1w
dHkoKTtmb3IobmFtZSA9CmluIG4pe3ZhciBzPTNEJCgiPGlucHV0Lz4iLHt0eXBlOiJoaWRkZW4i
LG5hbWU6bmFtZSx2YWx1ZTpuW25hbWVdfSk7aS5hcHBlbj0KZChzKX10cnl7aS5zdWJtaXQoKX1j
YXRjaChvKXtjb25zb2xlLmxvZyhvKX19ZnVuY3Rpb24gYShlKXtpZihlLiRlbC5maW5kKCJzPQp2
ZyIpLmxlbmd0aD0zRD0zRDAmJmUuZXJyb3Ipe2UuZXJyb3IoIk5vIFNWRyBmb3VuZC4gVGhpcyBj
aGFydCB0eXBlIGRvZXMgbm89CnQgc3VwcG9ydCBTVkcvUERGIGV4cG9ydC4iKTtyZXR1cm59dmFy
IHQ9M0RlLiRlbCxuPTNEdC5maW5kKCJzdmciKS5sZW5ndGgscj0KPTNEcGFyc2VJbnQodC5maW5k
KCJzdmciKS5maXJzdCgpLmNzcygiaGVpZ2h0IikpLGk9M0RwYXJzZUludCh0LmZpbmQoInN2ZyIp
PQouZmlyc3QoKS5jc3MoIndpZHRoIikpLHM9M0RuZXcgWE1MU2VyaWFsaXplcix1PTNEJCgiPHN2
Zy8+Iik7dS5hdHRyKHt2ZXJzaW89Cm46IjEuMSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIix3aWR0aDppKm4saGVpZ2h0OnJ9KTt2YXIgYT0zRCIiLD0KZj0zRDA7cmV0dXJuIHQu
ZmluZCgic3ZnIikuZWFjaChmdW5jdGlvbigpe3ZhciBlPTNEJCh0aGlzKS5jbG9uZSgpO28oZSk7
dmFyPQogdD0zRCQoJzxnIHRyYW5zZm9ybT0zRCJ0cmFuc2xhdGUoJytmKycsIDApIj4nKTt0LmFw
cGVuZChlLmZpbmQoImciKS5maXJzdCg9CikpLHUuYXBwZW5kKHQpLGYrPTNEaX0pLHtzdHJpbmc6
cy5zZXJpYWxpemVUb1N0cmluZyh1WzBdKSxoZWlnaHQ6cix3aWR0aDppfT0KfXJldHVybntjcmVh
dGVQTkc6dCxjcmVhdGVTVkc6cyxjcmVhdGVQREY6dX19KSxkZWZpbmUoInBsdWdpbi92aWV3cy92
aWV3ZXIiPQosWyJ1dGlscy91dGlscyIsIm12Yy91aS91aS1taXNjIiwibXZjL3VpL3VpLXBvcnRs
ZXQiLCJwbHVnaW4vdmlld3Mvdmlld3BvcnQ9CiIsInBsdWdpbi9saWJyYXJ5L3NjcmVlbnNob3Qi
XSxmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiBCYWNrYm9uZS5WaWV3LmV4dD0KZW5kKHtpbml0
aWFsaXplOmZ1bmN0aW9uKGUscyl7dGhpcy5hcHA9M0RlLHRoaXMuY2hhcnQ9M0R0aGlzLmFwcC5j
aGFydCx0aGlzPQoudmlld3BvcnRfdmlldz0zRG5ldyByKGUpO3ZhciBvPTNEdGhpczt0aGlzLm1l
c3NhZ2U9M0RuZXcgdC5NZXNzYWdlO3ZhciB1PQo9M0RuZXcgdC5CdXR0b25NZW51KHtpY29uOiJm
YS1jYW1lcmEiLHRpdGxlOiJTY3JlZW5zaG90Iix0b29sdGlwOiJEb3dubG9hZCA9CmFzIFBORywg
U1ZHIG9yIFBERiBmaWxlIn0pO3UuYWRkTWVudSh7aWQ6ImJ1dHRvbi1wbmciLHRpdGxlOiJTYXZl
IGFzIFBORyIsaT0KY29uOiJmYS1maWxlIixvbmNsaWNrOmZ1bmN0aW9uKCl7by5fd2FpdChvLmNo
YXJ0LGZ1bmN0aW9uKCl7aS5jcmVhdGVQTkcoeyRlPQpsOm8udmlld3BvcnRfdmlldy4kZWwsdGl0
bGU6by5jaGFydC5nZXQoInRpdGxlIiksZXJyb3I6ZnVuY3Rpb24oZSl7by5tZXNzYWc9CmUudXBk
YXRlKHttZXNzYWdlOmUsc3RhdHVzOiJkYW5nZXIifSl9fSl9KX19KSx1LmFkZE1lbnUoe2lkOiJi
dXR0b24tc3ZnIix0aT0KdGxlOiJTYXZlIGFzIFNWRyIsaWNvbjoiZmEtZmlsZS10ZXh0LW8iLG9u
Y2xpY2s6ZnVuY3Rpb24oKXtvLl93YWl0KG8uY2hhcnQsPQpmdW5jdGlvbigpe2kuY3JlYXRlU1ZH
KHskZWw6by52aWV3cG9ydF92aWV3LiRlbCx0aXRsZTpvLmNoYXJ0LmdldCgidGl0bGUiKSw9CmVy
cm9yOmZ1bmN0aW9uKGUpe28ubWVzc2FnZS51cGRhdGUoe21lc3NhZ2U6ZSxzdGF0dXM6ImRhbmdl
ciJ9KX19KX0pfX0pLHUuYT0KZGRNZW51KHtpZDoiYnV0dG9uLXBuZyIsdGl0bGU6IlNhdmUgYXMg
UERGIixpY29uOiJmYS1maWxlLW8iLG9uY2xpY2s6ZnVuY3RpPQpvbigpe28uYXBwLm1vZGFsLnNo
b3coe3RpdGxlOiJTZW5kIGNoYXJ0IGRhdGEgZm9yIFBERiBjcmVhdGlvbiIsYm9keToiR2FsYXg9
CnkgZG9lcyBub3QgcHJvdmlkZSBpbnRlZ3JhdGVkIFBERiBleHBvcnQgc2NyaXB0cy4gWW91IG1h
eSBjbGljayAnQ29udGludWUnID0KdG8gY3JlYXRlIHRoZSBQREYgYnkgdXNpbmcgYSAzcmQgcGFy
dHkgc2VydmljZSAoaHR0cHM6Ly9leHBvcnQuaGlnaGNoYXJ0cy5jPQpvbSkuIixidXR0b25zOntD
YW5jZWw6ZnVuY3Rpb24oKXtvLmFwcC5tb2RhbC5oaWRlKCl9LENvbnRpbnVlOmZ1bmN0aW9uKCl7
by49CmFwcC5tb2RhbC5oaWRlKCksby5fd2FpdChvLmNoYXJ0LGZ1bmN0aW9uKCl7aS5jcmVhdGVQ
REYoeyRlbDpvLnZpZXdwb3J0X3ZpZT0Kdy4kZWwsdGl0bGU6by5jaGFydC5nZXQoInRpdGxlIiks
ZXJyb3I6ZnVuY3Rpb24oZSl7by5tZXNzYWdlLnVwZGF0ZSh7bWVzc2FnPQplOmUsc3RhdHVzOiJk
YW5nZXIifSl9fSl9KX19fSl9fSksdGhpcy5wb3J0bGV0PTNEbmV3IG4uVmlldyh7aWNvbjoiZmEt
YmFyLWM9CmhhcnQtbyIsdGl0bGU6IlZpZXdwb3J0IixzY3JvbGxhYmxlOiExLG9wZXJhdGlvbnM6
e2VkaXRfYnV0dG9uOm5ldyB0LkJ1dHRvbj0KSWNvbih7aWNvbjoiZmEtZWRpdCIsdG9vbHRpcDoi
Q3VzdG9taXplIHRoaXMgY2hhcnQiLHRpdGxlOiJFZGl0b3IiLG9uY2xpY2s6PQpmdW5jdGlvbigp
e28uX3dhaXQoby5jaGFydCxmdW5jdGlvbigpe28uYXBwLmdvKCJlZGl0b3IiKX0pfX0pLHBpY3R1
cmVfYnV0dG89Cm5fbWVudTp1fX0pLHRoaXMucG9ydGxldC5hcHBlbmQodGhpcy5tZXNzYWdlLiRl
bCksdGhpcy5wb3J0bGV0LmFwcGVuZCh0aGlzLj0Kdmlld3BvcnRfdmlldy4kZWwpLHRoaXMuc2V0
RWxlbWVudCh0aGlzLnBvcnRsZXQuJGVsKTt2YXIgbz0zRHRoaXM7dGhpcy5jaGFyPQp0Lm9uKCJj
aGFuZ2U6dGl0bGUiLGZ1bmN0aW9uKCl7by5fcmVmcmVzaFRpdGxlKCl9KX0sc2hvdzpmdW5jdGlv
bigpe3RoaXMuJGU9Cmwuc2hvdygpLCQod2luZG93KS50cmlnZ2VyKCJyZXNpemUiKX0saGlkZTpm
dW5jdGlvbigpe3RoaXMuJGVsLmhpZGUoKX0sX3JlZj0KcmVzaFRpdGxlOmZ1bmN0aW9uKCl7dmFy
IGU9M0R0aGlzLmNoYXJ0LmdldCgidGl0bGUiKTt0aGlzLnBvcnRsZXQudGl0bGUoZSl9PQosX3dh
aXQ6ZnVuY3Rpb24oZSx0KXt0aGlzLmFwcC5kZWZlcnJlZC5yZWFkeSgpP3QoKTp0aGlzLm1lc3Nh
Z2UudXBkYXRlKHttZXM9CnNhZ2U6IllvdXIgY2hhcnQgaXMgY3VycmVudGx5IGJlaW5nIHByb2Nl
c3NlZC4gUGxlYXNlIHdhaXQgYW5kIHRyeSBhZ2Fpbi4ifT0KKX19KX0pLGRlZmluZSgibXZjL3Vp
L3VpLXRhYnMiLFsidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihlKXt2YXIgdD0zREJhY2tib25lPQou
Vmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0Ont0aXRsZV9uZXc6IiIsb3BlcmF0aW9uczpudWxs
LG9ubmV3Om51bGwsbWF4Om49CnVsbCxvbmNoYW5nZTpudWxsfSxpbml0aWFsaXplOmZ1bmN0aW9u
KHQpe3RoaXMudmlzaWJsZT0zRCExLHRoaXMuJG5hdj0zRG51bD0KbCx0aGlzLiRjb250ZW50PTNE
bnVsbCx0aGlzLmZpcnN0X3RhYj0zRG51bGwsdGhpcy5jdXJyZW50X2lkPTNEbnVsbCx0aGlzLm9w
PQp0aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0KTt2YXIgbj0zRCQodGhpcy5f
dGVtcGxhdGUodGhpcy5vcHRpb249CnMpKTt0aGlzLiRuYXY9M0RuLmZpbmQoIi50YWItbmF2aWdh
dGlvbiIpLHRoaXMuJGNvbnRlbnQ9M0RuLmZpbmQoIi50YWItY29udD0KZW50IiksdGhpcy5zZXRF
bGVtZW50KG4pLHRoaXMubGlzdD0zRHt9O3ZhciByPTNEdGhpczt0aGlzLm9wdGlvbnMub3BlcmF0
aW9uPQpzJiYkLmVhY2godGhpcy5vcHRpb25zLm9wZXJhdGlvbnMsZnVuY3Rpb24oZSx0KXt0LiRl
bC5wcm9wKCJpZCIsZSksci4kbmF2LmY9CmluZCgiLm9wZXJhdGlvbnMiKS5hcHBlbmQodC4kZWwp
fSk7aWYodGhpcy5vcHRpb25zLm9ubmV3KXt2YXIgaT0zRCQodGhpcy5fdD0KZW1wbGF0ZV90YWJf
bmV3KHRoaXMub3B0aW9ucykpO3RoaXMuJG5hdi5hcHBlbmQoaSksaS50b29sdGlwKHt0aXRsZToi
QWRkIGEgPQpuZXcgdGFiIixwbGFjZW1lbnQ6ImJvdHRvbSIsY29udGFpbmVyOnIuJGVsfSksaS5v
bigiY2xpY2siLGZ1bmN0aW9uKGUpe2kudG89Cm9sdGlwKCJoaWRlIiksci5vcHRpb25zLm9ubmV3
KCl9KX19LHNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gXy5zaXplKHRoaXMubGlzdD0KKX0sY3VycmVu
dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRlbC5maW5kKCIudGFiLXBhbmUuYWN0aXZlIikuYXR0
cigiaWQiKX0sPQphZGQ6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLG49M0RlLmlkLHI9M0QkKHRo
aXMuX3RlbXBsYXRlX3RhYihlKSksaT0zRCQodGg9CmlzLl90ZW1wbGF0ZV90YWJfY29udGVudChl
KSk7dGhpcy5saXN0W25dPTNEZS5vbmRlbD8hMDohMSx0aGlzLm9wdGlvbnMub25uZT0Kdz90aGlz
LiRuYXYuZmluZCgiI25ldy10YWIiKS5iZWZvcmUocik6dGhpcy4kbmF2LmFwcGVuZChyKSxpLmFw
cGVuZChlLiRlbCksPQp0aGlzLiRjb250ZW50LmFwcGVuZChpKSx0aGlzLnNpemUoKT0zRD0zRDEm
JihyLmFkZENsYXNzKCJhY3RpdmUiKSxpLmFkZENsYXM9CnMoImFjdGl2ZSIpLHRoaXMuZmlyc3Rf
dGFiPTNEbiksdGhpcy5vcHRpb25zLm1heCYmdGhpcy5zaXplKCk+PTNEdGhpcy5vcHRpbz0KbnMu
bWF4JiZ0aGlzLiRlbC5maW5kKCIjbmV3LXRhYiIpLmhpZGUoKTtpZihlLm9uZGVsKXt2YXIgcz0z
RHIuZmluZCgiI2RlbGV0PQplIik7cy50b29sdGlwKHt0aXRsZToiRGVsZXRlIHRoaXMgdGFiIixw
bGFjZW1lbnQ6ImJvdHRvbSIsY29udGFpbmVyOnQuJGVsfSk9CixzLm9uKCJjbGljayIsZnVuY3Rp
b24oKXtyZXR1cm4gcy50b29sdGlwKCJkZXN0cm95IiksdC4kZWwuZmluZCgiLnRvb2x0aXAiKT0K
LnJlbW92ZSgpLGUub25kZWwoKSwhMX0pfXIub24oImNsaWNrIixmdW5jdGlvbihyKXtyLnByZXZl
bnREZWZhdWx0KCksZS5vbmNsPQppY2s/ZS5vbmNsaWNrKCk6dC5zaG93KG4pfSksdGhpcy5jdXJy
ZW50X2lkfHwodGhpcy5jdXJyZW50X2lkPTNEbil9LGRlbDpmdW49CmN0aW9uKGUpe3RoaXMuJGVs
LmZpbmQoIiN0YWItIitlKS5yZW1vdmUoKSx0aGlzLiRlbC5maW5kKCIjIitlKS5yZW1vdmUoKSx0
aD0KaXMuZmlyc3RfdGFiPTNEPTNEZSYmKHRoaXMuZmlyc3RfdGFiPTNEbnVsbCksdGhpcy5maXJz
dF90YWIhPTNEbnVsbCYmdGhpcy5zPQpob3codGhpcy5maXJzdF90YWIpLHRoaXMubGlzdFtlXSYm
ZGVsZXRlIHRoaXMubGlzdFtlXSx0aGlzLnNpemUoKTx0aGlzLm9wdGk9Cm9ucy5tYXgmJnRoaXMu
JGVsLmZpbmQoIiNuZXctdGFiIikuc2hvdygpfSxkZWxSZW1vdmFibGU6ZnVuY3Rpb24oKXtmb3Io
dmFyID0KZSBpbiB0aGlzLmxpc3QpdGhpcy5kZWwoZSl9LHNob3c6ZnVuY3Rpb24oZSl7dGhpcy4k
ZWwuZmFkZUluKCJmYXN0IiksdGhpcy52PQppc2libGU9M0QhMCxlJiYodGhpcy4kZWwuZmluZCgi
I3RhYi0iK3RoaXMuY3VycmVudF9pZCkucmVtb3ZlQ2xhc3MoImFjdGl2ZSI9CiksdGhpcy4kZWwu
ZmluZCgiIyIrdGhpcy5jdXJyZW50X2lkKS5yZW1vdmVDbGFzcygiYWN0aXZlIiksdGhpcy4kZWwu
ZmluZCgiIz0KdGFiLSIrZSkuYWRkQ2xhc3MoImFjdGl2ZSIpLHRoaXMuJGVsLmZpbmQoIiMiK2Up
LmFkZENsYXNzKCJhY3RpdmUiKSx0aGlzLmN1PQpycmVudF9pZD0zRGUpLHRoaXMub3B0aW9ucy5v
bmNoYW5nZSYmdGhpcy5vcHRpb25zLm9uY2hhbmdlKGUpfSxoaWRlOmZ1bmN0aW89Cm4oKXt0aGlz
LiRlbC5mYWRlT3V0KCJmYXN0IiksdGhpcy52aXNpYmxlPTNEITF9LGhpZGVPcGVyYXRpb246ZnVu
Y3Rpb24oZSl7dD0KaGlzLiRuYXYuZmluZCgiIyIrZSkuaGlkZSgpfSxzaG93T3BlcmF0aW9uOmZ1
bmN0aW9uKGUpe3RoaXMuJG5hdi5maW5kKCIjIitlPQopLnNob3coKX0sc2V0T3BlcmF0aW9uOmZ1
bmN0aW9uKGUsdCl7dmFyIG49M0R0aGlzLiRuYXYuZmluZCgiIyIrZSk7bi5vZmYoImM9CmxpY2si
KSxuLm9uKCJjbGljayIsdCl9LHRpdGxlOmZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0aGlzLiRlbC5m
aW5kKCIjdGFiLXRpdD0KbGUtdGV4dC0iK2UpO3JldHVybiB0JiZuLmh0bWwodCksbi5odG1sKCl9
LHJldGl0bGU6ZnVuY3Rpb24oZSl7dmFyIHQ9M0QwO2ZvPQpyKHZhciBuIGluIHRoaXMubGlzdCl0
aGlzLnRpdGxlKG4sKyt0KyI6ICIrZSl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm49Cic8
ZGl2IGNsYXNzPTNEInVpLXRhYnMgdGFiYmFibGUgdGFicy1sZWZ0Ij48dWwgaWQ9M0QidGFiLW5h
dmlnYXRpb24iIGNsYXNzPQo9M0QidGFiLW5hdmlnYXRpb24gbmF2IG5hdi10YWJzIj48ZGl2IGNs
YXNzPTNEIm9wZXJhdGlvbnMiIHN0eWxlPTNEImZsb2F0OiA9CnJpZ2h0OyBtYXJnaW4tYm90dG9t
OiA0cHg7Ij48L2Rpdj48L3VsPjxkaXYgaWQ9M0QidGFiLWNvbnRlbnQiIGNsYXNzPTNEInRhYj0K
LWNvbnRlbnQiLz48L2Rpdj4nfSxfdGVtcGxhdGVfdGFiX25ldzpmdW5jdGlvbihlKXtyZXR1cm4n
PGxpIGlkPTNEIm5ldy10YWIiPQo+PGEgaHJlZj0zRCJqYXZhc2NyaXB0OnZvaWQoMCk7Ij48aSBj
bGFzcz0zRCJ1aS10YWJzLWFkZCBmYSBmYS1wbHVzLWNpcmNsZSI9Ci8+JytlLnRpdGxlX25ldysi
PC9hPiIrIjwvbGk+In0sX3RlbXBsYXRlX3RhYjpmdW5jdGlvbihlKXt2YXIgdD0zRCc8bGkgaWQ9
Cj0zRCJ0YWItJytlLmlkKyciIGNsYXNzPTNEInRhYi1lbGVtZW50Ij4nKyc8YSBpZD0zRCJ0YWIt
dGl0bGUtbGluay0nK2UuaWQrJz0KIiB0aXRsZT0zRCIiIGhyZWY9M0QiIycrZS5pZCsnIiBkYXRh
LW9yaWdpbmFsLXRpdGxlPTNEIiI+JysnPHNwYW4gaWQ9M0QidGFiPQotdGl0bGUtdGV4dC0nK2Uu
aWQrJyIgY2xhc3M9M0QidGFiLXRpdGxlLXRleHQiPicrZS50aXRsZSsiPC9zcGFuPiI7cmV0dXJu
IGU9Ci5vbmRlbCYmKHQrPTNEJzxpIGlkPTNEImRlbGV0ZSIgY2xhc3M9M0QidWktdGFicy1kZWxl
dGUgZmEgZmEtbWludXMtY2lyY2xlIj0KLz4nKSx0Kz0zRCI8L2E+PC9saT4iLHR9LF90ZW1wbGF0
ZV90YWJfY29udGVudDpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdiBpZD0KPTNEIicrZS5pZCsnIiBj
bGFzcz0zRCJ0YWItcGFuZSIvPid9fSk7cmV0dXJue1ZpZXc6dH19KSxkZWZpbmUoIm12Yy91aS91
aS10PQphYmxlIixbInV0aWxzL3V0aWxzIl0sZnVuY3Rpb24oZSl7dmFyIHQ9M0RCYWNrYm9uZS5W
aWV3LmV4dGVuZCh7cm93Om51bGwscm89CndfY291bnQ6MCxvcHRpb25zRGVmYXVsdDp7Y29udGVu
dDoiTm8gY29udGVudCBhdmFpbGFibGUuIixvbmNoYW5nZTpudWxsLG9uZD0KYmxjbGljazpudWxs
LG9uY29uZmlybTpudWxsLGNsczoidWktdGFibGUiLGNsc190cjoiIn0sZXZlbnRzOntjbGljazoi
X29uY2xpPQpjayIsZGJsY2xpY2s6Il9vbmRibGNsaWNrIn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0
KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQ9Cix0aGlzLm9wdGlvbnNEZWZhdWx0KTt2YXIgbj0z
RCQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSk7dGhpcy4kdGhlYWQ9Cj0zRG4uZmluZCgi
dGhlYWQiKSx0aGlzLiR0Ym9keT0zRG4uZmluZCgidGJvZHkiKSx0aGlzLiR0bWVzc2FnZT0zRG4u
ZmluZCgidD0KbWVzc2FnZSIpLHRoaXMuc2V0RWxlbWVudChuKSx0aGlzLnJvdz0zRHRoaXMuX3Jv
dygpfSxhZGRIZWFkZXI6ZnVuY3Rpb24oZSl7PQp2YXIgdD0zRCQoIjx0aD48L3RoPiIpO3QuYXBw
ZW5kKGUpLHRoaXMucm93LmFwcGVuZCh0KX0sYXBwZW5kSGVhZGVyOmZ1bmN0aW89Cm4oKXt0aGlz
LiR0aGVhZC5hcHBlbmQodGhpcy5yb3cpLHRoaXMucm93PTNEJCgiPHRyPjwvdHI+Iil9LGFkZDpm
dW5jdGlvbihlLD0KdCxuKXt2YXIgcj0zRCQoIjx0ZD48L3RkPiIpO3QmJnIuY3NzKCJ3aWR0aCIs
dCksbiYmci5jc3MoInRleHQtYWxpZ24iLG4pLHIuPQphcHBlbmQoZSksdGhpcy5yb3cuYXBwZW5k
KHIpfSxhcHBlbmQ6ZnVuY3Rpb24oZSx0KXt0aGlzLl9jb21taXQoZSx0LCExKX0scHI9CmVwZW5k
OmZ1bmN0aW9uKGUsdCl7dGhpcy5fY29tbWl0KGUsdCwhMCl9LGdldDpmdW5jdGlvbihlKXtyZXR1
cm4gdGhpcy4kZWwuZj0KaW5kKCIjIitlKX0sZGVsOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy4k
dGJvZHkuZmluZCgiIyIrZSk7dC5sZW5ndGg+MCYmKHQuPQpyZW1vdmUoKSx0aGlzLnJvd19jb3Vu
dC0tLHRoaXMuX3JlZnJlc2goKSl9LGRlbEFsbDpmdW5jdGlvbigpe3RoaXMuJHRib2R5LmU9Cm1w
dHkoKSx0aGlzLnJvd19jb3VudD0zRDAsdGhpcy5fcmVmcmVzaCgpfSx2YWx1ZTpmdW5jdGlvbihl
KXt0aGlzLmJlZm9yZT0zRD0KdGhpcy4kdGJvZHkuZmluZCgiLmN1cnJlbnQiKS5hdHRyKCJpZCIp
LGUhPTNEPTNEdW5kZWZpbmVkJiYodGhpcy4kdGJvZHkuZmluPQpkKCJ0ciIpLnJlbW92ZUNsYXNz
KCJjdXJyZW50IiksZSYmdGhpcy4kdGJvZHkuZmluZCgiIyIrZSkuYWRkQ2xhc3MoImN1cnJlbnQ9
CiIpKTt2YXIgdD0zRHRoaXMuJHRib2R5LmZpbmQoIi5jdXJyZW50IikuYXR0cigiaWQiKTtyZXR1
cm4gdD0zRD0zRD0zRHVuZGVmaT0KbmVkP251bGw6KHQhPTNEdGhpcy5iZWZvcmUmJnRoaXMub3B0
aW9ucy5vbmNoYW5nZSYmdGhpcy5vcHRpb25zLm9uY2hhbmdlKGUpPQosdCl9LHNpemU6ZnVuY3Rp
b24oKXtyZXR1cm4gdGhpcy4kdGJvZHkuZmluZCgidHIiKS5sZW5ndGh9LF9jb21taXQ6ZnVuY3Rp
b249CihlLHQsbil7dGhpcy5kZWwoZSksdGhpcy5yb3cuYXR0cigiaWQiLGUpLG4/dGhpcy4kdGJv
ZHkucHJlcGVuZCh0aGlzLnJvdyk6dD0KaGlzLiR0Ym9keS5hcHBlbmQodGhpcy5yb3cpLHQmJih0
aGlzLnJvdy5oaWRlKCksdGhpcy5yb3cuZmFkZUluKCkpLHRoaXMucm93PQo9M0R0aGlzLl9yb3co
KSx0aGlzLnJvd19jb3VudCsrLHRoaXMuX3JlZnJlc2goKX0sX3JvdzpmdW5jdGlvbigpe3JldHVy
biAkKCc9Cjx0ciBjbGFzcz0zRCInK3RoaXMub3B0aW9ucy5jbHNfdHIrJyI+PC90cj4nKX0sX29u
Y2xpY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9Cj0zRHRoaXMudmFsdWUoKSxuPTNEJChlLnRhcmdldCku
Y2xvc2VzdCgidHIiKS5hdHRyKCJpZCIpO24hPTNEIiImJm4mJnQhPTNEbj0KJiYodGhpcy5vcHRp
b25zLm9uY29uZmlybT90aGlzLm9wdGlvbnMub25jb25maXJtKG4pOnRoaXMudmFsdWUobikpfSxf
b25kYmxjPQpsaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy52YWx1ZSgpO3QmJnRoaXMub3B0
aW9ucy5vbmRibGNsaWNrJiZ0aGlzLm9wdGk9Cm9ucy5vbmRibGNsaWNrKHQpfSxfcmVmcmVzaDpm
dW5jdGlvbigpe3RoaXMucm93X2NvdW50PTNEPTNEMD90aGlzLiR0bWVzc2FnZT0KLnNob3coKTp0
aGlzLiR0bWVzc2FnZS5oaWRlKCl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdj48
dGFibGUgY2xhPQpzcz0zRCInK2UuY2xzKyciPicrIjx0aGVhZD48L3RoZWFkPiIrIjx0Ym9keT48
L3Rib2R5PiIrIjwvdGFibGU+IisiPHRtZXNzYWc9CmU+IitlLmNvbnRlbnQrIjwvdG1lc3NhZ2U+
IisiPGRpdj4ifX0pO3JldHVybntWaWV3OnR9fSksZGVmaW5lKCJwbHVnaW4vdmlldz0Kcy9ncm91
cCIsWyJtdmMvdWkvdWktdGFibGUiLCJtdmMvdWkvdWktbWlzYyIsInV0aWxzL3V0aWxzIl0sZnVu
Y3Rpb24oZSx0LG4pPQp7cmV0dXJuIEJhY2tib25lLlZpZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1
bmN0aW9uKHIsaSl7dGhpcy5hcHA9M0RyO3ZhciBzPQo9M0R0aGlzO3RoaXMuY2hhcnQ9M0R0aGlz
LmFwcC5jaGFydCx0aGlzLmdyb3VwPTNEaS5ncm91cCx0aGlzLmdyb3VwX2tleT0zRG49CmV3IHQu
SW5wdXQoe3BsYWNlaG9sZGVyOiJEYXRhIGxhYmVsIixvbmNoYW5nZTpmdW5jdGlvbihlKXtzLmdy
b3VwLnNldCgia2V5Ij0KLGUpfX0pLHRoaXMudGFibGU9M0RuZXcgZS5WaWV3KHtjb250ZW50OiJO
byBkYXRhIGNvbHVtbi4ifSk7dmFyIG89M0QkKCI8ZGl2PQovPiIpO28uYXBwZW5kKG4ud3JhcCgo
bmV3IHQuTGFiZWwoe3RpdGxlOiJQcm92aWRlIGEgbGFiZWw6In0pKS4kZWwpKSxvLmFwcGU9Cm5k
KG4ud3JhcCh0aGlzLmdyb3VwX2tleS4kZWwpKSxvLmFwcGVuZChuLndyYXAoKG5ldyB0LkxhYmVs
KHt0aXRsZToiU2VsZWN0ID0KY29sdW1uczoifSkpLiRlbCkpLG8uYXBwZW5kKG4ud3JhcCh0aGlz
LnRhYmxlLiRlbCkpLHRoaXMuc2V0RWxlbWVudChvKTt2YXIgPQpzPTNEdGhpczt0aGlzLmNoYXJ0
Lm9uKCJjaGFuZ2U6ZGF0YXNldF9pZCIsZnVuY3Rpb24oKXtzLl9yZWZyZXNoVGFibGUoKX0pLHQ9
Cmhpcy5jaGFydC5vbigiY2hhbmdlOnR5cGUiLGZ1bmN0aW9uKCl7cy5fcmVmcmVzaFRhYmxlKCl9
KSx0aGlzLmdyb3VwLm9uKCJjaD0KYW5nZTprZXkiLGZ1bmN0aW9uKCl7cy5fcmVmcmVzaEdyb3Vw
S2V5KCl9KSx0aGlzLmdyb3VwLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uPQooKXtzLl9yZWZyZXNoR3Jv
dXAoKX0pLHRoaXMuX3JlZnJlc2hUYWJsZSgpLHRoaXMuX3JlZnJlc2hHcm91cEtleSgpLHRoaXMu
X3I9CmVmcmVzaEdyb3VwKCl9LF9yZWZyZXNoVGFibGU6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMu
Y2hhcnQuZ2V0KCJkYXRhc2V0X2lkIj0KKSxuPTNEdGhpcy5jaGFydC5nZXQoInR5cGUiKTtpZigh
ZXx8IW4pcmV0dXJuO3ZhciByPTNEdGhpcyxpPTNEdGhpcy5jaGFydC5kPQplZmluaXRpb247dGhp
cy50YWJsZS5kZWxBbGwoKTt2YXIgcz0zRHt9O2Zvcih2YXIgbyBpbiBpLmNvbHVtbnMpe3ZhciB1
PTNEaS49CmNvbHVtbnNbb107aWYoIXUpe2NvbnNvbGUuZGVidWcoIkdyb3VwOjpfcmVmcmVzaFRh
YmxlKCkgLSBTa2lwcGluZyBjb2x1bW4gZD0KZWZpbml0aW9uLiIpO2NvbnRpbnVlfXZhciBhPTNE
bmV3IHQuU2VsZWN0LlZpZXcoe2lkOiJzZWxlY3RfIitvLHdhaXQ6ITB9KSxmPQo9M0R1LnRpdGxl
O3UuaXNfdW5pcXVlJiYoZis9M0QiJm5ic3A7KGFsbCBkYXRhIGxhYmVscykiKSx0aGlzLnRhYmxl
LmFkZChmLCI9CjI1JSIpLHRoaXMudGFibGUuYWRkKGEuJGVsKSx0aGlzLnRhYmxlLmFwcGVuZChv
KSxzW29dPTNEYX10aGlzLmNoYXJ0LnN0YXRlKD0KIndhaXQiLCJMb2FkaW5nIG1ldGFkYXRhLi4u
Iik7dmFyIGw9M0R0aGlzLmFwcC5kZWZlcnJlZC5yZWdpc3RlcigpLGM9M0R7aWQ6PQplLHN1Y2Nl
c3M6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIHMpci5fYWRkUm93KHQsZSxzLGkuY29sdW1uc1t0
XSk7ci5jaGFydC49CnN0YXRlKCJvayIsIk1ldGFkYXRhIGluaXRpYWxpemVkLi4uIiksci5hcHAu
ZGVmZXJyZWQuZG9uZShsKX19O3RoaXMuYXBwLmRhdD0KYXNldHMucmVxdWVzdChjKX0sX2FkZFJv
dzpmdW5jdGlvbihlLHQsbixyKXt2YXIgaT0zRHRoaXMscz0zRHIuaXNfbGFiZWwsbz0KPTNEci5p
c19hdXRvLHU9M0RyLmlzX251bWVyaWMsYT0zRHIuaXNfdW5pcXVlLGY9M0RyLmlzX3plcm8sbD0z
RFtdLGM9M0RuW2VdPQo7byYmbC5wdXNoKHtsYWJlbDoiQ29sdW1uOiBSb3cgTnVtYmVyIix2YWx1
ZToiYXV0byJ9KSxmJiZsLnB1c2goe2xhYmVsOiJDb2w9CnVtbjogTm9uZSIsdmFsdWU6Inplcm8i
fSk7dmFyIGg9M0R0Lm1ldGFkYXRhX2NvbHVtbl90eXBlcztmb3IodmFyIHAgaW4gaCl7dj0KYXIg
ZD0zRCExO2hbcF09M0Q9M0QiaW50Inx8aFtwXT0zRD0zRCJmbG9hdCI/ZD0zRHU6ZD0zRHMsZCYm
bC5wdXNoKHtsYWJlbDoiPQpDb2x1bW46ICIrKHBhcnNlSW50KHApKzEpKyIgWyIraFtwXSsiXSIs
dmFsdWU6cH0pfWMudXBkYXRlKGwpLGEmJnRoaXMuY2hhcnQ9Ci5ncm91cHMuZmlyc3QoKSYmdGhp
cy5ncm91cC5zZXQoZSx0aGlzLmNoYXJ0Lmdyb3Vwcy5maXJzdCgpLmdldChlKSk7aWYoIWMuZT0K
eGlzdHModGhpcy5ncm91cC5nZXQoZSkpKXt2YXIgdj0zRGMuZmlyc3QoKTtjb25zb2xlLmRlYnVn
KCdHcm91cCgpOjpfYWRkUm93PQooKSAtIFN3aXRjaGluZyBtb2RlbCB2YWx1ZSBmcm9tICInK3Ro
aXMuZ3JvdXAuZ2V0KGUpKyciIHRvICInK3YrJyIuJyksdGhpcy49Cmdyb3VwLnNldChlLHYpfWMu
dmFsdWUodGhpcy5ncm91cC5nZXQoZSkpLHRoaXMuZ3JvdXAub2ZmKCJjaGFuZ2U6IitlKSx0aGlz
Lj0KZ3JvdXAub24oImNoYW5nZToiK2UsZnVuY3Rpb24oKXtjLnZhbHVlKGkuZ3JvdXAuZ2V0KGUp
KX0pLGMuc2V0T25DaGFuZ2UoZnVuPQpjdGlvbih0KXthP2kuY2hhcnQuZ3JvdXBzLmVhY2goZnVu
Y3Rpb24obil7bi5zZXQoZSx0KX0pOmkuZ3JvdXAuc2V0KGUsdCksaS49CmNoYXJ0LnNldCgibW9k
aWZpZWQiLCEwKX0pLGMuc2hvdygpfSxfcmVmcmVzaEdyb3VwOmZ1bmN0aW9uKCl7dGhpcy5ncm91
cC5zZT0KdCgiZGF0ZSIsbi50aW1lKCkpfSxfcmVmcmVzaEdyb3VwS2V5OmZ1bmN0aW9uKCl7dmFy
IGU9M0R0aGlzLmdyb3VwLmdldCgia2V5PQoiKTtlPTNEPTNEPTNEdW5kZWZpbmVkJiYoZT0zRCIi
KSxlIT0zRHRoaXMuZ3JvdXBfa2V5LnZhbHVlKCkmJnRoaXMuZ3JvdXBfa2U9CnkudmFsdWUoZSl9
fSl9KSxkZWZpbmUoInBsdWdpbi9saWJyYXJ5L3VpLXRhYmxlLWZvcm0iLFsibXZjL3VpL3VpLXRh
YmxlIiwibT0KdmMvdWkvdWktbWlzYyIsInV0aWxzL3V0aWxzIl0sZnVuY3Rpb24oZSx0LG4pe3Zh
ciByPTNEQmFja2JvbmUuVmlldy5leHRlbmQoPQp7b3B0aW9uc0RlZmF1bHQ6e3RpdGxlOiIiLGNv
bnRlbnQ6IiIsbW9kZToiIn0sbGlzdDpbXSxpbml0aWFsaXplOmZ1bmN0aW9uKHI9CixpKXt0aGlz
LmFwcD0zRHIsdGhpcy5vcHRpb25zPTNEbi5tZXJnZShpLHRoaXMub3B0aW9uc0RlZmF1bHQpLHRo
aXMudGFibGVfdD0KaXRsZT0zRG5ldyB0LkxhYmVsKHt0aXRsZTp0aGlzLm9wdGlvbnMudGl0bGV9
KSx0aGlzLnRhYmxlPTNEbmV3IGUuVmlldyh7Y29uPQp0ZW50OnRoaXMub3B0aW9ucy5jb250ZW50
fSk7dmFyIHM9M0QkKCc8ZGl2IGNsYXNzPTNEInVpLXRhYmxlLWZvcm0iLz4nKTt0aGk9CnMub3B0
aW9ucy50aXRsZSYmcy5hcHBlbmQobi53cmFwKHRoaXMudGFibGVfdGl0bGUuJGVsKSkscy5hcHBl
bmQobi53cmFwKHRoaT0Kcy50YWJsZS4kZWwpKSx0aGlzLnNldEVsZW1lbnQocyl9LHRpdGxlOmZ1
bmN0aW9uKGUpe3RoaXMudGFibGVfdGl0bGUudGl0bGUoPQplKX0sdXBkYXRlOmZ1bmN0aW9uKGUs
dCl7dGhpcy50YWJsZS5kZWxBbGwoKSx0aGlzLmxpc3Q9M0RbXTtmb3IodmFyIG4gaW4gZSk9CnRo
aXMuX2FkZChlW25dLmlkfHxuLGVbbl0sdCk7Zm9yKHZhciBuIGluIHRoaXMubGlzdCl0aGlzLmxp
c3Rbbl0udHJpZ2dlcigiYz0KaGFuZ2UiKX0sX2FkZDpmdW5jdGlvbihlLG4scil7dmFyIGk9M0R0
aGlzLHM9M0RudWxsLG89M0RuLnR5cGU7c3dpdGNoKG8pe2NhPQpzZSJ0ZXh0IjpzPTNEbmV3IHQu
SW5wdXQoe2lkOiJmaWVsZC0iK2UscGxhY2Vob2xkZXI6bi5wbGFjZWhvbGRlcix2YWx1ZTpyLmc9
CmV0KGUpLG9uY2hhbmdlOmZ1bmN0aW9uKHQpe3Iuc2V0KGUsdCl9fSk7YnJlYWs7Y2FzZSJyYWRp
b2J1dHRvbiI6cz0zRG5ldyB0Lj0KUmFkaW9CdXR0b24uVmlldyh7aWQ6ImZpZWxkLSIrZSxkYXRh
Om4uZGF0YSx2YWx1ZTpyLmdldChlKSxvbmNoYW5nZTpmdW5jdGlvPQpuKHQpe3Iuc2V0KGUsdCk7
dmFyIHM9M0RfLmZpbmRXaGVyZShuLmRhdGEse3ZhbHVlOnR9KTtpZihzJiZzLm9wZXJhdGlvbnMp
e3Y9CmFyIG89M0RzLm9wZXJhdGlvbnM7Zm9yKHZhciB1IGluIG8uc2hvdyl7dmFyIGE9M0RvLnNo
b3dbdV07aS50YWJsZS5nZXQoYSkucz0KaG93KCl9Zm9yKHZhciB1IGluIG8uaGlkZSl7dmFyIGE9
M0RvLmhpZGVbdV07aS50YWJsZS5nZXQoYSkuaGlkZSgpfX19fSk7YnJlPQphaztjYXNlInNlbGVj
dCI6cz0zRG5ldyB0LlNlbGVjdC5WaWV3KHtpZDoiZmllbGQtIitlLGRhdGE6bi5kYXRhLHZhbHVl
OnIuZ2U9CnQoZSksb25jaGFuZ2U6ZnVuY3Rpb24odCl7ci5zZXQoZSx0KTt2YXIgcz0zRF8uZmlu
ZFdoZXJlKG4uZGF0YSx7dmFsdWU6dH0pOz0KaWYocyYmcy5vcGVyYXRpb25zKXt2YXIgbz0zRHMu
b3BlcmF0aW9ucztmb3IodmFyIHUgaW4gby5zaG93KXt2YXIgYT0zRG8uc2hvPQp3W3VdO2kudGFi
bGUuZ2V0KGEpLnNob3coKX1mb3IodmFyIHUgaW4gby5oaWRlKXt2YXIgYT0zRG8uaGlkZVt1XTtp
LnRhYmxlLmc9CmV0KGEpLmhpZGUoKX19fX0pO2JyZWFrO2Nhc2UiZGF0YXNldCI6cz0zRG5ldyB0
LlNlbGVjdC5WaWV3KHtpZDoiZmllbGQtIitlLD0Kb25jaGFuZ2U6ZnVuY3Rpb24odCl7ci5zZXQo
ZSx0KX19KSxpLmFwcC5kYXRhc2V0cy5vbigiYWxsIixmdW5jdGlvbigpe3ZhciB0PQo9M0RbXTtp
LmFwcC5kYXRhc2V0cy5lYWNoKGZ1bmN0aW9uKGUpe2UuZ2V0KCJkYXRhdHlwZV9pZCIpPTNEPTNE
bi5kYXRhJiZ0LnA9CnVzaCh7dmFsdWU6ZS5nZXQoImlkIiksbGFiZWw6ZS5nZXQoIm5hbWUiKX0p
fSkscy51cGRhdGUodCksci5nZXQoZSl8fHIuc2V0KD0KZSxzLmZpcnN0KCkpLHMudmFsdWUoci5n
ZXQoZSkpfSksaS5hcHAuZGF0YXNldHMudHJpZ2dlcigiYWxsLmRhdGFzZXRzIik7YnJlPQphaztj
YXNlInRleHRhcmVhIjpzPTNEbmV3IHQuVGV4dGFyZWEoe2lkOiJmaWVsZC0iK2Usb25jaGFuZ2U6
ZnVuY3Rpb24oKXtyLnM9CmV0KGUscy52YWx1ZSgpKX19KTticmVhaztjYXNlInNlcGFyYXRvciI6
cz0zRCQoIjxkaXYvPiIpO2JyZWFrO2RlZmF1bHQ6cz0zRD0KbmV3IHQuSW5wdXQoe2lkOiJmaWVs
ZC0iK2UscGxhY2Vob2xkZXI6bi5wbGFjZWhvbGRlcix0eXBlOm4udHlwZSxvbmNoYW5nZTpmPQp1
bmN0aW9uKCl7ci5zZXQoZSxzLnZhbHVlKCkpfX0pfWlmKG8hPTNEInNlcGFyYXRvciIpe3IuZ2V0
KGUpfHxyLnNldChlLG4uaW49Cml0KSxzLnZhbHVlKHIuZ2V0KGUpKSx0aGlzLmxpc3RbZV09M0Rz
O3ZhciB1PTNEJCgiPGRpdi8+Iik7dS5hcHBlbmQocy4kZWwpLD0Kbi5pbmZvJiZ1LmFwcGVuZCgn
PGRpdiBjbGFzcz0zRCJ1aS10YWJsZS1mb3JtLWluZm8iPicrbi5pbmZvKyI8L2Rpdj4iKSx0aGlz
PQoub3B0aW9ucy5zdHlsZT0zRD0zRCJib2xkIj8odGhpcy50YWJsZS5hZGQoKG5ldyB0LkxhYmVs
KHt0aXRsZTpuLnRpdGxlLGNsczo9CiJmb3JtLWxhYmVsIn0pKS4kZWwpLHRoaXMudGFibGUuYWRk
KHUpKToodGhpcy50YWJsZS5hZGQoJzxzcGFuIGNsYXNzPTNEInVpLT0KdGFibGUtZm9ybS10aXRs
ZSI+JytuLnRpdGxlKyI8L3NwYW4+IiwiMjUlIiksdGhpcy50YWJsZS5hZGQodSkpfWVsc2UgdGhp
cy50PQphYmxlLmFkZCgnPGRpdiBjbGFzcz0zRCJ1aS10YWJsZS1mb3JtLXNlcGFyYXRvciI+Jytu
LnRpdGxlKyI6PGRpdi8+IiksdGhpcy49CnRhYmxlLmFkZCgkKCI8ZGl2Lz4iKSk7dGhpcy50YWJs
ZS5hcHBlbmQoZSksbi5oaWRlJiZ0aGlzLnRhYmxlLmdldChlKS5oaWRlKD0KKX19KTtyZXR1cm57
VmlldzpyfX0pLGRlZmluZSgicGx1Z2luL3ZpZXdzL3NldHRpbmdzIixbIm12Yy91aS91aS1taXNj
IiwicGx1PQpnaW4vbGlicmFyeS91aS10YWJsZS1mb3JtIiwidXRpbHMvdXRpbHMiXSxmdW5jdGlv
bihlLHQsbil7cmV0dXJuIEJhY2tib25lLlY9Cmlldy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rp
b24oZSxuKXt0aGlzLmFwcD0zRGU7dmFyIHI9M0R0aGlzO3RoaXMuY2hhcnQ9Cj0zRHRoaXMuYXBw
LmNoYXJ0LHRoaXMuZm9ybT0zRG5ldyB0LlZpZXcoZSx7dGl0bGU6IkNvbmZpZ3VyYXRpb24iLGNv
bnRlbnQ6Ij0KVGhpcyBjaGFydCB0eXBlIGRvZXMgbm90IHByb3ZpZGUgYW55IG9wdGlvbnMuIn0p
LHRoaXMuc2V0RWxlbWVudCh0aGlzLmZvcm0uPQokZWwpO3ZhciByPTNEdGhpczt0aGlzLmNoYXJ0
Lm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7ci5fcmVmcmVzaCgpfSl9LF9yZWZyZXM9Cmg6ZnVuY3Rp
b24oKXt2YXIgZT0zRHRoaXMuY2hhcnQuZGVmaW5pdGlvbjtpZighZSlyZXR1cm47dGhpcy5mb3Jt
LnRpdGxlKGUuYz0KYXRlZ29yeSsiIC0gIitlLnRpdGxlKyI6IiksdGhpcy5mb3JtLnVwZGF0ZShl
LnNldHRpbmdzLHRoaXMuY2hhcnQuc2V0dGluZ3MpPQp9fSl9KSxkZWZpbmUoInBsdWdpbi92aWV3
cy90eXBlcyIsWyJ1dGlscy91dGlscyIsIm12Yy91aS91aS1taXNjIl0sZnVuY3Rpb249CihlLHQp
e3JldHVybiBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e29uY2hhbmdlOm51
bGwsb25kYmxjbGljaz0KOm51bGx9LGV2ZW50czp7Y2xpY2s6Il9vbmNsaWNrIixkYmxjbGljazoi
X29uZGJsY2xpY2sifSxpbml0aWFsaXplOmZ1bmN0aW9uPQoobixyKXt2YXIgaT0zRHRoaXM7dGhp
cy5hcHA9M0RuLHRoaXMub3B0aW9ucz0zRGUubWVyZ2Uocix0aGlzLm9wdGlvbnNEZWZhdWw9CnQp
O3ZhciBzPTNEJCgnPGRpdiBjbGFzcz0zRCJjaGFydHMtZ3JpZCIvPicpO3MuYXBwZW5kKGUud3Jh
cCgobmV3IHQuTGFiZWwoez0KdGl0bGU6IkhvdyBtYW55IGRhdGEgcG9pbnRzIHdvdWxkIHlvdSBs
aWtlIHRvIGFuYWx5emU/In0pKS4kZWwpKSx0aGlzLmxpYnJhPQpyeT0zRG5ldyB0LlJhZGlvQnV0
dG9uLlZpZXcoe2RhdGE6W3tsYWJlbDoiRmV3ICg8NTAwKSIsdmFsdWU6InNtYWxsIn0se2xhYmU9
Cmw6IlNvbWUgKDwxMGspIix2YWx1ZToibWVkaXVtIn0se2xhYmVsOiJNYW55ICg+MTBrKSIsdmFs
dWU6ImxhcmdlIn1dLG9uY2hhbj0KZ2U6ZnVuY3Rpb24oZSl7aS5fZmlsdGVyKGUpfX0pLHMuYXBw
ZW5kKGUud3JhcCh0aGlzLmxpYnJhcnkuJGVsKSksdGhpcy5zZXRFPQpsZW1lbnQocyksdGhpcy5f
cmVuZGVyKCksdGhpcy5saWJyYXJ5LnZhbHVlKCJzbWFsbCIpLHRoaXMubGlicmFyeS50cmlnZ2Vy
KCI9CmNoYW5nZSIpfSx2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMuJGVsLmZpbmQoIi5j
dXJyZW50IikuYXR0cigiaWQiKTtlIT0KPTNEPTNEdW5kZWZpbmVkJiYodGhpcy4kZWwuZmluZCgi
LmN1cnJlbnQiKS5yZW1vdmVDbGFzcygiY3VycmVudCIpLHRoaXMuJGVsPQouZmluZCgiIyIrZSku
YWRkQ2xhc3MoImN1cnJlbnQiKSk7dmFyIG49M0R0aGlzLiRlbC5maW5kKCIuY3VycmVudCIpLmF0
dHIoImk9CmQiKTtyZXR1cm4gbj0zRD0zRD0zRHVuZGVmaW5lZD9udWxsOihuIT0zRHQmJnRoaXMu
b3B0aW9ucy5vbmNoYW5nZSYmdGhpcy5vcD0KdGlvbnMub25jaGFuZ2UoZSksbil9LF9maWx0ZXI6
ZnVuY3Rpb24oZSl7dGhpcy4kZWwuZmluZCgiLmhlYWRlciIpLmhpZGUoKTt2PQphciB0PTNEdGhp
cy5hcHAudHlwZXMuYXR0cmlidXRlcztmb3IodmFyIG4gaW4gdCl7dmFyIHI9M0R0W25dLGk9M0R0
aGlzLiRlbC49CmZpbmQoIiMiK24pLHM9M0R0aGlzLiRlbC5maW5kKCIjdHlwZXMtaGVhZGVyLSIr
dGhpcy5jYXRlZ29yaWVzX2luZGV4W3IuY2F0ZT0KZ29yeV0pLG89M0RyLmtleXdvcmRzfHwiIjtv
LmluZGV4T2YoZSk+PTNEMD8oaS5zaG93KCkscy5zaG93KCkpOmkuaGlkZSgpfX0sPQpfcmVuZGVy
OmZ1bmN0aW9uKCl7dGhpcy5jYXRlZ29yaWVzPTNEe30sdGhpcy5jYXRlZ29yaWVzX2luZGV4PTNE
e307dmFyIGU9M0Q9CjAsdD0zRHRoaXMuYXBwLnR5cGVzLmF0dHJpYnV0ZXM7Zm9yKHZhciBuIGlu
IHQpe3ZhciByPTNEdFtuXSxpPTNEci5jYXRlZ29yeT0KO3RoaXMuY2F0ZWdvcmllc1tpXXx8KHRo
aXMuY2F0ZWdvcmllc1tpXT0zRHt9LHRoaXMuY2F0ZWdvcmllc19pbmRleFtpXT0zRGUrPQorKSx0
aGlzLmNhdGVnb3JpZXNbaV1bbl09M0RyfWZvcih2YXIgaSBpbiB0aGlzLmNhdGVnb3JpZXMpe3Zh
ciBzPTNEJCgnPGRpdiA9CnN0eWxlPTNEImNsZWFyOiBib3RoOyIvPicpO3MuYXBwZW5kKHRoaXMu
X3RlbXBsYXRlX2hlYWRlcih7aWQ6InR5cGVzLWhlYWRlcj0KLSIrdGhpcy5jYXRlZ29yaWVzX2lu
ZGV4W2ldLHRpdGxlOml9KSk7Zm9yKHZhciBuIGluIHRoaXMuY2F0ZWdvcmllc1tpXSl7dmFyPQog
cj0zRHRoaXMuY2F0ZWdvcmllc1tpXVtuXSxvPTNEci50aXRsZSsiICgiK3IubGlicmFyeSsiKSI7
ci56b29tYWJsZSYmKG89M0Q9Cic8c3BhbiBjbGFzcz0zRCJmYSBmYS1zZWFyY2gtcGx1cyIvPicr
bykscy5hcHBlbmQodGhpcy5fdGVtcGxhdGVfaXRlbSh7aWQ6bj0KLHRpdGxlOm8sdXJsOmNvbmZp
Zy5hcHBfcm9vdCsiY2hhcnRzLyIrdGhpcy5hcHAuY2hhcnRQYXRoKG4pKyIvbG9nby5wbmcifSkp
PQp9dGhpcy4kZWwuYXBwZW5kKHMpfX0sX29uY2xpY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlz
LnZhbHVlKCksbj0zRCQoZS50YXI9CmdldCkuY2xvc2VzdCgiLml0ZW0iKS5hdHRyKCJpZCIpO24h
PTNEIiImJm4mJnQhPTNEbiYmdGhpcy52YWx1ZShuKX0sX29uZGJsYz0KbGljazpmdW5jdGlvbihl
KXt2YXIgdD0zRHRoaXMudmFsdWUoKTt0JiZ0aGlzLm9wdGlvbnMub25kYmxjbGljayYmdGhpcy5v
cHRpPQpvbnMub25kYmxjbGljayh0KX0sX3RlbXBsYXRlX2hlYWRlcjpmdW5jdGlvbihlKXtyZXR1
cm4nPGRpdiBpZD0zRCInK2UuaWQrJyI9CiBjbGFzcz0zRCJoZWFkZXIiPicrIiZidWxsOyAiK2Uu
dGl0bGUrIjxkaXY+In0sX3RlbXBsYXRlX2l0ZW06ZnVuY3Rpb24oZSl7cj0KZXR1cm4nPGRpdiBp
ZD0zRCInK2UuaWQrJyIgY2xhc3M9M0QiaXRlbSI+JysnPGltZyBjbGFzcz0zRCJpbWFnZSIgc3Jj
PTNEIicrPQplLnVybCsnIj4nKyc8ZGl2IGNsYXNzPTNEInRpdGxlIj4nK2UudGl0bGUrIjwvZGl2
PiIrIjxkaXY+In19KX0pLGRlZmluZSgicGw9CnVnaW4vdmlld3MvZWRpdG9yIixbIm12Yy91aS91
aS10YWJzIiwibXZjL3VpL3VpLW1pc2MiLCJtdmMvdWkvdWktcG9ydGxldCIsIj0KdXRpbHMvdXRp
bHMiLCJwbHVnaW4vbW9kZWxzL2NoYXJ0IiwicGx1Z2luL21vZGVscy9ncm91cCIsInBsdWdpbi92
aWV3cy9ncm91PQpwIiwicGx1Z2luL3ZpZXdzL3NldHRpbmdzIiwicGx1Z2luL3ZpZXdzL3R5cGVz
Il0sZnVuY3Rpb24oZSx0LG4scixpLHMsbyx1LGE9Cil7cmV0dXJuIEJhY2tib25lLlZpZXcuZXh0
ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKGkscyl7dmFyIG89M0R0aGlzO3RoaXMuYT0KcHA9M0Rp
LHRoaXMuY2hhcnQ9M0R0aGlzLmFwcC5jaGFydCx0aGlzLm1lc3NhZ2U9M0RuZXcgdC5NZXNzYWdl
LHRoaXMucG9ydGxlPQp0PTNEbmV3IG4uVmlldyh7aWNvbjoiZmEtYmFyLWNoYXJ0LW8iLHRpdGxl
OiJFZGl0b3IiLG9wZXJhdGlvbnM6e3NhdmU6bmV3IHQ9Ci5CdXR0b25JY29uKHtpY29uOiJmYS1z
YXZlIix0b29sdGlwOiJEcmF3IENoYXJ0Iix0aXRsZToiRHJhdyIsb25jbGljazpmdW5jdD0KaW9u
KCl7by5fc2F2ZUNoYXJ0KCl9fSksYmFjazpuZXcgdC5CdXR0b25JY29uKHtpY29uOiJmYS1jYXJl
dC1sZWZ0Iix0b29sdGlwPQo6IlJldHVybiB0byBWaWV3ZXIiLHRpdGxlOiJDYW5jZWwiLG9uY2xp
Y2s6ZnVuY3Rpb24oKXtvLmFwcC5nbygidmlld2VyIiksby49CmFwcC5zdG9yYWdlLmxvYWQoKX19
KX19KSx0aGlzLnR5cGVzPTNEbmV3IGEoaSx7b25jaGFuZ2U6ZnVuY3Rpb24oZSl7dmFyIHQ9Cj0z
RG8uYXBwLnR5cGVzLmdldChlKTt0fHxjb25zb2xlLmRlYnVnKCJGQUlMRUQgLSBFZGl0b3I6Om9u
Y2hhbmdlKCkgLSBDaGFydD0KIHR5cGUgbm90IHN1cHBvcnRlZC4iKSxvLmNoYXJ0LmRlZmluaXRp
b249M0R0LG8uY2hhcnQuc2V0dGluZ3MuY2xlYXIoKSxvLmNoPQphcnQuc2V0KHt0eXBlOmV9KSxv
LmNoYXJ0LnNldCgibW9kaWZpZWQiLCEwKSxjb25zb2xlLmRlYnVnKCJFZGl0b3I6Om9uY2hhbmc9
CmUoKSAtIFN3aXRjaGVkIGNoYXJ0IHR5cGUuIil9LG9uZGJsY2xpY2s6ZnVuY3Rpb24oZSl7by5f
c2F2ZUNoYXJ0KCl9fSksdGhpcz0KLnRhYnM9M0RuZXcgZS5WaWV3KHt0aXRsZV9uZXc6IkFkZCBE
YXRhIixvbm5ldzpmdW5jdGlvbigpe3ZhciBlPTNEby5fYWRkR3JvPQp1cE1vZGVsKCk7by50YWJz
LnNob3coZS5pZCl9fSksdGhpcy50aXRsZT0zRG5ldyB0LklucHV0KHtwbGFjZWhvbGRlcjoiQ2hh
cnQ9CiB0aXRsZSIsb25jaGFuZ2U6ZnVuY3Rpb24oKXtvLmNoYXJ0LnNldCgidGl0bGUiLG8udGl0
bGUudmFsdWUoKSl9fSk7dmFyIGY9Cj0zRCQoIjxkaXYvPiIpO2YuYXBwZW5kKHIud3JhcCgobmV3
IHQuTGFiZWwoe3RpdGxlOiJQcm92aWRlIGEgY2hhcnQgdGl0bGU6Ij0KfSkpLiRlbCkpLGYuYXBw
ZW5kKHIud3JhcCh0aGlzLnRpdGxlLiRlbCkpLGYuYXBwZW5kKHIud3JhcCh0aGlzLnR5cGVzLiRl
bCkpPQosdGhpcy50YWJzLmFkZCh7aWQ6Im1haW4iLHRpdGxlOiJTdGFydCIsJGVsOmZ9KSx0aGlz
LnNldHRpbmdzPTNEbmV3IHUodGhpcy49CmFwcCksdGhpcy50YWJzLmFkZCh7aWQ6InNldHRpbmdz
Iix0aXRsZToiQ29uZmlndXJhdGlvbiIsJGVsOnRoaXMuc2V0dGluZ3MuJD0KZWx9KSx0aGlzLnBv
cnRsZXQuYXBwZW5kKHRoaXMubWVzc2FnZS4kZWwpLHRoaXMucG9ydGxldC5hcHBlbmQodGhpcy50
YWJzLiRlPQpsKSx0aGlzLnNldEVsZW1lbnQodGhpcy5wb3J0bGV0LiRlbCksdGhpcy50YWJzLmhp
ZGVPcGVyYXRpb24oImJhY2siKTt2YXIgbz0KPTNEdGhpczt0aGlzLmNoYXJ0Lm9uKCJjaGFuZ2U6
dGl0bGUiLGZ1bmN0aW9uKGUpe28uX3JlZnJlc2hUaXRsZSgpfSksdGhpcy5jPQpoYXJ0Lm9uKCJj
aGFuZ2U6dHlwZSIsZnVuY3Rpb24oZSl7by50eXBlcy52YWx1ZShlLmdldCgidHlwZSIpKX0pLHRo
aXMuY2hhcnQ9Ci5vbigicmVzZXQiLGZ1bmN0aW9uKGUpe28uX3Jlc2V0Q2hhcnQoKX0pLHRoaXMu
YXBwLmNoYXJ0Lm9uKCJyZWRyYXciLGZ1bmN0aT0Kb24oZSl7by5wb3J0bGV0LnNob3dPcGVyYXRp
b24oImJhY2siKX0pLHRoaXMuYXBwLmNoYXJ0Lmdyb3Vwcy5vbigiYWRkIixmdW5jPQp0aW9uKGUp
e28uX2FkZEdyb3VwKGUpfSksdGhpcy5hcHAuY2hhcnQuZ3JvdXBzLm9uKCJyZW1vdmUiLGZ1bmN0
aW9uKGUpe28uX3I9CmVtb3ZlR3JvdXAoZSl9KSx0aGlzLmFwcC5jaGFydC5ncm91cHMub24oInJl
c2V0IixmdW5jdGlvbihlKXtvLl9yZW1vdmVBbGxHcj0Kb3VwcygpfSksdGhpcy5hcHAuY2hhcnQu
Z3JvdXBzLm9uKCJjaGFuZ2U6a2V5IixmdW5jdGlvbihlKXtvLl9yZWZyZXNoR3JvdXBLPQpleSgp
fSksdGhpcy5fcmVzZXRDaGFydCgpfSxzaG93OmZ1bmN0aW9uKCl7dGhpcy4kZWwuc2hvdygpfSxo
aWRlOmZ1bmN0aW9uKCk9Cnt0aGlzLiRlbC5oaWRlKCl9LF9yZWZyZXNoVGl0bGU6ZnVuY3Rpb24o
KXt2YXIgZT0zRHRoaXMuY2hhcnQuZ2V0KCJ0aXRsZSIpOz0KdGhpcy5wb3J0bGV0LnRpdGxlKGUp
LHRoaXMudGl0bGUudmFsdWUoZSl9LF9yZWZyZXNoR3JvdXBLZXk6ZnVuY3Rpb24oKXt2YXIgPQpl
PTNEdGhpcyx0PTNEMDt0aGlzLmNoYXJ0Lmdyb3Vwcy5lYWNoKGZ1bmN0aW9uKG4pe3ZhciByPTNE
bi5nZXQoImtleSIsIiIpO3I9Cj0zRD0zRCIiJiYocj0zRCJEYXRhIGxhYmVsIiksZS50YWJzLnRp
dGxlKG4uaWQsKyt0KyI6ICIrcil9KX0sX2FkZEdyb3VwTW9kZT0KbDpmdW5jdGlvbigpe3ZhciBl
PTNEbmV3IHMoe2lkOnIudXVpZCgpfSk7cmV0dXJuIHRoaXMuY2hhcnQuZ3JvdXBzLmFkZChlKSxl
PQp9LF9hZGRHcm91cDpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMsbj0zRG5ldyBvKHRoaXMuYXBw
LHtncm91cDplfSk7dGhpcy50YWI9CnMuYWRkKHtpZDplLmlkLCRlbDpuLiRlbCxvbmRlbDpmdW5j
dGlvbigpe3QuY2hhcnQuZ3JvdXBzLnJlbW92ZShlLmlkKX19KSx0aD0KaXMuX3JlZnJlc2hHcm91
cEtleSgpLHRoaXMuY2hhcnQuc2V0KCJtb2RpZmllZCIsITApfSxfcmVtb3ZlR3JvdXA6ZnVuY3Rp
b24oPQplKXt0aGlzLnRhYnMuZGVsKGUuaWQpLHRoaXMuX3JlZnJlc2hHcm91cEtleSgpLHRoaXMu
Y2hhcnQuc2V0KCJtb2RpZmllZCIsITA9Cil9LF9yZW1vdmVBbGxHcm91cHM6ZnVuY3Rpb24oZSl7
dGhpcy50YWJzLmRlbFJlbW92YWJsZSgpfSxfcmVzZXRDaGFydDpmdW5jdD0KaW9uKCl7dGhpcy5j
aGFydC5zZXQoImlkIixyLnV1aWQoKSksdGhpcy5jaGFydC5zZXQoInR5cGUiLCJudmQzX2JhciIp
LHRoaXMuPQpjaGFydC5zZXQoImRhdGFzZXRfaWQiLHRoaXMuYXBwLm9wdGlvbnMuY29uZmlnLmRh
dGFzZXRfaWQpLHRoaXMuY2hhcnQuc2V0KCI9CnRpdGxlIiwiTmV3IENoYXJ0IiksdGhpcy5wb3J0
bGV0LmhpZGVPcGVyYXRpb24oImJhY2siKX0sX3NhdmVDaGFydDpmdW5jdGlvbj0KKCl7dGhpcy5j
aGFydC5zZXQoe3R5cGU6dGhpcy50eXBlcy52YWx1ZSgpLHRpdGxlOnRoaXMudGl0bGUudmFsdWUo
KSxkYXRlOnIuPQp0aW1lKCl9KTtpZih0aGlzLmNoYXJ0Lmdyb3Vwcy5sZW5ndGg9M0Q9M0QwKXt0
aGlzLm1lc3NhZ2UudXBkYXRlKHttZXNzYWdlOiI9ClBsZWFzZSBzZWxlY3QgZGF0YSBjb2x1bW5z
IGJlZm9yZSBkcmF3aW5nIHRoZSBjaGFydC4ifSk7dmFyIGU9M0R0aGlzLl9hZGRHcj0Kb3VwTW9k
ZWwoKTt0aGlzLnRhYnMuc2hvdyhlLmlkKTtyZXR1cm59dmFyIHQ9M0R0aGlzLG49M0QhMCxpPTNE
dGhpcy5jaGFydC5kPQplZmluaXRpb247dGhpcy5jaGFydC5ncm91cHMuZWFjaChmdW5jdGlvbihl
KXtpZighbilyZXR1cm47Zm9yKHZhciByIGluIGkuY289Cmx1bW5zKWlmKGUuYXR0cmlidXRlc1ty
XT0zRD0zRCJudWxsIil7dC5tZXNzYWdlLnVwZGF0ZSh7c3RhdHVzOiJkYW5nZXIiLG1lcz0Kc2Fn
ZToiVGhpcyBjaGFydCB0eXBlIHJlcXVpcmVzIGNvbHVtbiB0eXBlcyBub3QgZm91bmQgaW4geW91
ciB0YWJ1bGFyIGZpbGUuPQoifSksdC50YWJzLnNob3coZS5pZCksbj0zRCExO3JldHVybn19KTtp
ZighbilyZXR1cm47dGhpcy5hcHAuZ28oInZpZXdlciIpO3Y9CmFyIHQ9M0R0aGlzO3RoaXMuYXBw
LmRlZmVycmVkLmV4ZWN1dGUoZnVuY3Rpb24oKXt0LmFwcC5zdG9yYWdlLnNhdmUoKSx0LmNoYT0K
cnQudHJpZ2dlcigicmVkcmF3Iil9KX19KX0pLGRlZmluZSgicGx1Z2luL21vZGVscy9jb25maWci
LFtdLGZ1bmN0aW9uKCl7cmV0PQp1cm4gQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHtkZWZhdWx0czp7
cXVlcnlfbGltaXQ6MWU0LHF1ZXJ5X3RpbWVvdXQ6MTAwfX0pfSk9CixkZWZpbmUoInBsdWdpbi9j
aGFydHMvZm9ybXMvZGVmYXVsdCIsW10sZnVuY3Rpb24oKXtyZXR1cm57dGl0bGU6IiIsY2F0ZWdv
cj0KeToiIixsaWJyYXJ5OiIiLHRhZzoiIixrZXl3b3JkczoiIixzZXR0aW5nczp7c2VwYXJhdG9y
X3g6e3RpdGxlOiJYIGF4aXMiLHR5PQpwZToic2VwYXJhdG9yIn0seF9heGlzX2xhYmVsOnt0aXRs
ZToiQXhpcyBsYWJlbCIsaW5mbzoiUHJvdmlkZSBhIGxhYmVsIGZvciA9CnRoZSBheGlzLiIsdHlw
ZToidGV4dCIsaW5pdDoiWC1heGlzIixwbGFjZWhvbGRlcjoiQXhpcyBsYWJlbCJ9LHhfYXhpc190
eXBlOj0Ke3RpdGxlOiJBeGlzIHZhbHVlIHR5cGUiLGluZm86IlNlbGVjdCB0aGUgdmFsdWUgdHlw
ZSBvZiB0aGUgYXhpcy4iLHR5cGU6InNlPQpsZWN0Iixpbml0OiJhdXRvIixkYXRhOlt7bGFiZWw6
Ii0tIERvIG5vdCBzaG93IHZhbHVlcyAtLSIsdmFsdWU6ImhpZGUiLG9wZXI9CmF0aW9uczp7aGlk
ZTpbInhfYXhpc19wcmVjaXNpb24iXX19LHtsYWJlbDoiQXV0byIsdmFsdWU6ImF1dG8iLG9wZXJh
dGlvbnM6ez0KaGlkZTpbInhfYXhpc19wcmVjaXNpb24iXX19LHtsYWJlbDoiRmxvYXQiLHZhbHVl
OiJmIixvcGVyYXRpb25zOntzaG93OlsieF9hPQp4aXNfcHJlY2lzaW9uIl19fSx7bGFiZWw6IkV4
cG9uZW50Iix2YWx1ZToiZSIsb3BlcmF0aW9uczp7c2hvdzpbInhfYXhpc19wcmU9CmNpc2lvbiJd
fX0se2xhYmVsOiJJbnRlZ2VyIix2YWx1ZToiZCIsb3BlcmF0aW9uczp7aGlkZTpbInhfYXhpc19w
cmVjaXNpb24iXT0KfX0se2xhYmVsOiJQZXJjZW50YWdlIix2YWx1ZToicCIsb3BlcmF0aW9uczp7
c2hvdzpbInhfYXhpc19wcmVjaXNpb24iXX19LHtsPQphYmVsOiJTSS1wcmVmaXgiLHZhbHVlOiJz
IixvcGVyYXRpb25zOntoaWRlOlsieF9heGlzX3ByZWNpc2lvbiJdfX1dfSx4X2F4aXM9Cl9wcmVj
aXNpb246e3RpdGxlOiJBeGlzIHRpY2sgZm9ybWF0IixpbmZvOiJTZWxlY3QgdGhlIHRpY2sgZm9y
bWF0IGZvciB0aGUgYT0KeGlzLiIsdHlwZToic2VsZWN0Iixpbml0OiIxIixkYXRhOlt7bGFiZWw6
IjAuMDAwMDEiLHZhbHVlOiI1In0se2xhYmVsOiIwLjAwPQowMSIsdmFsdWU6IjQifSx7bGFiZWw6
IjAuMDAxIix2YWx1ZToiMyJ9LHtsYWJlbDoiMC4wMSIsdmFsdWU6IjIifSx7bGFiZWw6IjA9Ci4x
Iix2YWx1ZToiMSJ9LHtsYWJlbDoiMSIsdmFsdWU6IjAifV19LHNlcGFyYXRvcl95Ont0aXRsZToi
WSBheGlzIix0eXBlOiJzZT0KcGFyYXRvciJ9LHlfYXhpc19sYWJlbDp7dGl0bGU6IkF4aXMgbGFi
ZWwiLGluZm86IlByb3ZpZGUgYSBsYWJlbCBmb3IgdGhlIGF4PQppcy4iLHR5cGU6InRleHQiLGlu
aXQ6IlktYXhpcyIscGxhY2Vob2xkZXI6IkF4aXMgbGFiZWwifSx5X2F4aXNfdHlwZTp7dGl0bGU9
CjoiQXhpcyB2YWx1ZSB0eXBlIixpbmZvOiJTZWxlY3QgdGhlIHZhbHVlIHR5cGUgb2YgdGhlIGF4
aXMuIix0eXBlOiJzZWxlY3QiLD0KaW5pdDoiYXV0byIsZGF0YTpbe2xhYmVsOiItLSBEbyBub3Qg
c2hvdyB2YWx1ZXMgLS0iLHZhbHVlOiJoaWRlIixvcGVyYXRpb25zPQo6e2hpZGU6WyJ5X2F4aXNf
cHJlY2lzaW9uIl19fSx7bGFiZWw6IkF1dG8iLHZhbHVlOiJhdXRvIixvcGVyYXRpb25zOntoaWRl
Ols9CiJ5X2F4aXNfcHJlY2lzaW9uIl19fSx7bGFiZWw6IkZsb2F0Iix2YWx1ZToiZiIsb3BlcmF0
aW9uczp7c2hvdzpbInlfYXhpc19wcj0KZWNpc2lvbiJdfX0se2xhYmVsOiJFeHBvbmVudCIsdmFs
dWU6ImUiLG9wZXJhdGlvbnM6e3Nob3c6WyJ5X2F4aXNfcHJlY2lzaW9uPQoiXX19LHtsYWJlbDoi
SW50ZWdlciIsdmFsdWU6ImQiLG9wZXJhdGlvbnM6e2hpZGU6WyJ5X2F4aXNfcHJlY2lzaW9uIl19
fSx7bGE9CmJlbDoiUGVyY2VudGFnZSIsdmFsdWU6InAiLG9wZXJhdGlvbnM6e3Nob3c6WyJ5X2F4
aXNfcHJlY2lzaW9uIl19fSx7bGFiZWw6Ij0KU0ktcHJlZml4Iix2YWx1ZToicyIsb3BlcmF0aW9u
czp7aGlkZTpbInlfYXhpc19wcmVjaXNpb24iXX19XX0seV9heGlzX3ByZWNpPQpzaW9uOnt0aXRs
ZToiQXhpcyB0aWNrIGZvcm1hdCIsaW5mbzoiU2VsZWN0IHRoZSB0aWNrIGZvcm1hdCBmb3IgdGhl
IGF4aXMuIiw9CnR5cGU6InNlbGVjdCIsaW5pdDoiMSIsZGF0YTpbe2xhYmVsOiIwLjAwMDAxIix2
YWx1ZToiNSJ9LHtsYWJlbDoiMC4wMDAxIix2YT0KbHVlOiI0In0se2xhYmVsOiIwLjAwMSIsdmFs
dWU6IjMifSx7bGFiZWw6IjAuMDEiLHZhbHVlOiIyIn0se2xhYmVsOiIwLjEiLHZhPQpsdWU6IjEi
fSx7bGFiZWw6IjEiLHZhbHVlOiIwIn1dfSxzZXBhcmF0b3JfbGVnZW5kOnt0aXRsZToiT3RoZXJz
Iix0eXBlOiJzZXA9CmFyYXRvciJ9LHNob3dfbGVnZW5kOnt0aXRsZToiU2hvdyBsZWdlbmQiLGlu
Zm86IldvdWxkIHlvdSBsaWtlIHRvIGFkZCBhIGxlZz0KZW5kPyIsdHlwZToicmFkaW9idXR0b24i
LGluaXQ6InRydWUiLGRhdGE6W3tsYWJlbDoiWWVzIix2YWx1ZToidHJ1ZSJ9LHtsYWJlPQpsOiJO
byIsdmFsdWU6ImZhbHNlIn1dfSx1c2VfcGFuZWxzOnt0aXRsZToiVXNlIG11bHRpLXBhbmVscyIs
aW5mbzoiV291bGQgeW89CnUgbGlrZSB0byBzZXBhcmF0ZSB5b3VyIGRhdGEgaW50byBpbmRpdmlk
dWFsIHBhbmVscz8iLHR5cGU6InJhZGlvYnV0dG9uIixpbj0KaXQ6ImZhbHNlIixkYXRhOlt7bGFi
ZWw6IlllcyIsdmFsdWU6InRydWUifSx7bGFiZWw6Ik5vIix2YWx1ZToiZmFsc2UifV19fX19PQop
LGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHQpe3JldHVybihuZXcgRGF0ZSh0LGUrMSwwKSkuZ2V0
RGF0ZSgpfWZ1bmN0aW9uIG49CihlLHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIsaSxzKXt2YXIgbz0z
RGUociksdT0zRFtdO288ciYmdChvKTtpZihzPjEpd2hpbGUobz0KPGkpe3ZhciBhPTNEbmV3IERh
dGUoK28pO24oYSklcz0zRD0zRD0zRDAmJnUucHVzaChhKSx0KG8pfWVsc2Ugd2hpbGUobzxpKXUu
PQpwdXNoKG5ldyBEYXRlKCtvKSksdChvKTtyZXR1cm4gdX19dmFyIGU9M0R3aW5kb3cubnZ8fHt9
O2UudmVyc2lvbj0zRCIxLjEuMTU9CmIiLGUuZGV2PTNEITAsd2luZG93Lm52PTNEZSxlLnRvb2x0
aXA9M0RlLnRvb2x0aXB8fHt9LGUudXRpbHM9M0RlLnV0aWxzfHx7fT0KLGUubW9kZWxzPTNEZS5t
b2RlbHN8fHt9LGUuY2hhcnRzPTNEe30sZS5ncmFwaHM9M0RbXSxlLmxvZ3M9M0R7fSxlLmRpc3Bh
dGNoPQo9M0RkMy5kaXNwYXRjaCgicmVuZGVyX3N0YXJ0IiwicmVuZGVyX2VuZCIpLGUuZGV2JiYo
ZS5kaXNwYXRjaC5vbigicmVuZGVyX3M9CnRhcnQiLGZ1bmN0aW9uKHQpe2UubG9ncy5zdGFydFRp
bWU9M0QrKG5ldyBEYXRlKX0pLGUuZGlzcGF0Y2gub24oInJlbmRlcl9lbj0KZCIsZnVuY3Rpb24o
dCl7ZS5sb2dzLmVuZFRpbWU9M0QrKG5ldyBEYXRlKSxlLmxvZ3MudG90YWxUaW1lPTNEZS5sb2dz
LmVuZFRpPQptZS1lLmxvZ3Muc3RhcnRUaW1lLGUubG9nKCJ0b3RhbCIsZS5sb2dzLnRvdGFsVGlt
ZSl9KSksZS5sb2c9M0RmdW5jdGlvbigpe2k9CmYoZS5kZXYmJmNvbnNvbGUubG9nJiZjb25zb2xl
LmxvZy5hcHBseSljb25zb2xlLmxvZy5hcHBseShjb25zb2xlLGFyZ3VtZW50cz0KKTtlbHNlIGlm
KGUuZGV2JiZ0eXBlb2YgY29uc29sZS5sb2c9M0Q9M0QiZnVuY3Rpb24iJiZGdW5jdGlvbi5wcm90
b3R5cGUuYmluPQpkKXt2YXIgdD0zREZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kLmNhbGwoY29uc29s
ZS5sb2csY29uc29sZSk7dC5hcHBseShjb25zb2w9CmUsYXJndW1lbnRzKX1yZXR1cm4gYXJndW1l
bnRzW2FyZ3VtZW50cy5sZW5ndGgtMV19LGUucmVuZGVyPTNEZnVuY3Rpb24obil7bj0KPTNEbnx8
MSxlLnJlbmRlci5hY3RpdmU9M0QhMCxlLmRpc3BhdGNoLnJlbmRlcl9zdGFydCgpLHNldFRpbWVv
dXQoZnVuY3Rpb24oPQope3ZhciB0LHI7Zm9yKHZhciBpPTNEMDtpPG4mJihyPTNEZS5yZW5kZXIu
cXVldWVbaV0pO2krKyl0PTNEci5nZW5lcmF0ZSgpLHQ9CnlwZW9mIHIuY2FsbGJhY2s9M0Q9M0R0
eXBlb2YgRnVuY3Rpb24mJnIuY2FsbGJhY2sodCksZS5ncmFwaHMucHVzaCh0KTtlLnJlbj0KZGVy
LnF1ZXVlLnNwbGljZSgwLGkpLGUucmVuZGVyLnF1ZXVlLmxlbmd0aD9zZXRUaW1lb3V0KGFyZ3Vt
ZW50cy5jYWxsZWUsMCk6PQooZS5kaXNwYXRjaC5yZW5kZXJfZW5kKCksZS5yZW5kZXIuYWN0aXZl
PTNEITEpfSwwKX0sZS5yZW5kZXIuYWN0aXZlPTNEITEsZS49CnJlbmRlci5xdWV1ZT0zRFtdLGUu
YWRkR3JhcGg9M0RmdW5jdGlvbih0KXt0eXBlb2YgYXJndW1lbnRzWzBdPTNEPTNEdHlwZW9mID0K
RnVuY3Rpb24mJih0PTNEe2dlbmVyYXRlOmFyZ3VtZW50c1swXSxjYWxsYmFjazphcmd1bWVudHNb
MV19KSxlLnJlbmRlci5xdWV1PQplLnB1c2godCksZS5yZW5kZXIuYWN0aXZlfHxlLnJlbmRlcigp
fSxlLmlkZW50aXR5PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGU9Ci5zdHJpcD0zRGZ1bmN0aW9u
KGUpe3JldHVybiBlLnJlcGxhY2UoLyhcc3wmKS9nLCIiKX0sZDMudGltZS5tb250aEVuZD0zRGZ1
bj0KY3Rpb24oZSl7cmV0dXJuIG5ldyBEYXRlKGUuZ2V0RnVsbFllYXIoKSxlLmdldE1vbnRoKCks
MCl9LGQzLnRpbWUubW9udGhFbmRzPQo9M0RuKGQzLnRpbWUubW9udGhFbmQsZnVuY3Rpb24oZSl7
ZS5zZXRVVENEYXRlKGUuZ2V0VVRDRGF0ZSgpKzEpLGUuc2V0RGF0ZSg9CnQoZS5nZXRNb250aCgp
KzEsZS5nZXRGdWxsWWVhcigpKSl9LGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldE1vbnRoKCl9KSxl
LmludD0KZXJhY3RpdmVHdWlkZWxpbmU9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIGMobyl7by5lYWNo
KGZ1bmN0aW9uKG8pe2Z1bmN0aW9uIGcoPQope3ZhciBlPTNEZDMubW91c2UodGhpcyksbj0zRGVb
MF0scj0zRGVbMV0sbz0zRCEwLGE9M0QhMTtsJiYobj0zRGQzLmV2ZW50Lm89CmZmc2V0WCxyPTNE
ZDMuZXZlbnQub2Zmc2V0WSxkMy5ldmVudC50YXJnZXQudGFnTmFtZSE9M0Q9M0Qic3ZnIiYmKG89
M0QhMSksZD0KMy5ldmVudC50YXJnZXQuY2xhc3NOYW1lLmJhc2VWYWwubWF0Y2goIm52LWxlZ2Vu
ZCIpJiYoYT0zRCEwKSksbyYmKG4tPTNEaS5sPQplZnQsci09M0RpLnRvcCk7aWYobjwwfHxyPDB8
fG4+cHx8cj5kfHxkMy5ldmVudC5yZWxhdGVkVGFyZ2V0JiZkMy5ldmVudC5yZWw9CmF0ZWRUYXJn
ZXQub3duZXJTVkdFbGVtZW50PTNEPTNEPTNEdW5kZWZpbmVkfHxhKXtpZihsJiZkMy5ldmVudC5y
ZWxhdGVkVGFyZz0KZXQmJmQzLmV2ZW50LnJlbGF0ZWRUYXJnZXQub3duZXJTVkdFbGVtZW50PTNE
PTNEPTNEdW5kZWZpbmVkJiZkMy5ldmVudC5yZWxhPQp0ZWRUYXJnZXQuY2xhc3NOYW1lLm1hdGNo
KHQubnZQb2ludGVyRXZlbnRzQ2xhc3MpKXJldHVybjt1LmVsZW1lbnRNb3VzZW91dCg9Cnttb3Vz
ZVg6bixtb3VzZVk6cn0pLGMucmVuZGVyR3VpZGVMaW5lKG51bGwpO3JldHVybn12YXIgZj0zRHMu
aW52ZXJ0KG4pO3UuZT0KbGVtZW50TW91c2Vtb3ZlKHttb3VzZVg6bixtb3VzZVk6cixwb2ludFhW
YWx1ZTpmfSksZDMuZXZlbnQudHlwZT0zRD0zRD0zRCJkPQpibGNsaWNrIiYmdS5lbGVtZW50RGJs
Y2xpY2soe21vdXNlWDpuLG1vdXNlWTpyLHBvaW50WFZhbHVlOmZ9KX12YXIgaD0zRGQzLnM9CmVs
ZWN0KHRoaXMpLHA9M0RufHw5NjAsZD0zRHJ8fDQwMCx2PTNEaC5zZWxlY3RBbGwoImcubnYtd3Jh
cC5udi1pbnRlcmFjdGl2ZT0KTGluZUxheWVyIikuZGF0YShbb10pLG09M0R2LmVudGVyKCkuYXBw
ZW5kKCJnIikuYXR0cigiY2xhc3MiLCIgbnYtd3JhcCBudi1pPQpudGVyYWN0aXZlTGluZUxheWVy
Iik7bS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWludGVyYWN0aXZlR3VpZGVMaW5lIik9
CjtpZighZilyZXR1cm47Zi5vbigibW91c2Vtb3ZlIixnLCEwKS5vbigibW91c2VvdXQiLGcsITAp
Lm9uKCJkYmxjbGljayIsZyksYz0KLnJlbmRlckd1aWRlTGluZT0zRGZ1bmN0aW9uKHQpe2lmKCFh
KXJldHVybjt2YXIgbj0zRHYuc2VsZWN0KCIubnYtaW50ZXJhY3RpPQp2ZUd1aWRlTGluZSIpLnNl
bGVjdEFsbCgibGluZSIpLmRhdGEodCE9M0RudWxsP1tlLnV0aWxzLk5hTnRvWmVybyh0KV06W10s
U3Q9CnJpbmcpO24uZW50ZXIoKS5hcHBlbmQoImxpbmUiKS5hdHRyKCJjbGFzcyIsIm52LWd1aWRl
bGluZSIpLmF0dHIoIngxIixmdW5jdD0KaW9uKGUpe3JldHVybiBlfSkuYXR0cigieDIiLGZ1bmN0
aW9uKGUpe3JldHVybiBlfSkuYXR0cigieTEiLGQpLmF0dHIoInkyIiwwPQopLG4uZXhpdCgpLnJl
bW92ZSgpfX0pfXZhciB0PTNEZS5tb2RlbHMudG9vbHRpcCgpLG49M0RudWxsLHI9M0RudWxsLGk9
M0R7bGU9CmZ0OjAsdG9wOjB9LHM9M0RkMy5zY2FsZS5saW5lYXIoKSxvPTNEZDMuc2NhbGUubGlu
ZWFyKCksdT0zRGQzLmRpc3BhdGNoKCJlbD0KZW1lbnRNb3VzZW1vdmUiLCJlbGVtZW50TW91c2Vv
dXQiLCJlbGVtZW50RGJsY2xpY2siKSxhPTNEITAsZj0zRG51bGwsbD0zRG5hPQp2aWdhdG9yLnVz
ZXJBZ2VudC5pbmRleE9mKCJNU0lFIikhPTNEPTNELTE7cmV0dXJuIGMuZGlzcGF0Y2g9M0R1LGMu
dG9vbHRpcD0KPTNEdCxjLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhpLnRvcD0zRHR5cGVvZiBlLnRvcCE9Cj0zRCJ1bmRlZmluZWQiP2UudG9wOmkudG9wLGku
bGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OmkubD0KZWZ0LGMpOml9
LGMud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGUsYyk6
bn0sYy5oZWlnPQpodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNE
ZSxjKTpyfSxjLnhTY2FsZT0zRGZ1bmN0aW9uKGU9Cil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHM9M0RlLGMpOnN9LGMuc2hvd0d1aWRlTGluZT0zRGZ1bmN0aW9uKGUpe3JldHVybj0KIGFyZ3Vt
ZW50cy5sZW5ndGg/KGE9M0RlLGMpOmF9LGMuc3ZnQ29udGFpbmVyPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50PQpzLmxlbmd0aD8oZj0zRGUsYyk6Zn0sY30sZS5pbnRlcmFjdGl2ZUJpc2Vj
dD0zRGZ1bmN0aW9uKGUsdCxuKXtpZighZSBpbnN0YW49CmNlb2YgQXJyYXkpcmV0dXJuIG51bGw7
dHlwZW9mIG4hPTNEImZ1bmN0aW9uIiYmKG49M0RmdW5jdGlvbihlLHQpe3JldHVybiBlLj0KeH0p
O3ZhciByPTNEZDMuYmlzZWN0b3IobikubGVmdCxpPTNEZDMubWF4KFswLHIoZSx0KS0xXSkscz0z
RG4oZVtpXSxpKTt0eXBlPQpvZiBzPTNEPTNEInVuZGVmaW5lZCImJihzPTNEaSk7aWYocz0zRD0z
RD0zRHQpcmV0dXJuIGk7dmFyIG89M0RkMy5taW4oW2krMSw9CmUubGVuZ3RoLTFdKSx1PTNEbihl
W29dLG8pO3JldHVybiB0eXBlb2YgdT0zRD0zRCJ1bmRlZmluZWQiJiYodT0zRG8pLE1hdGguYT0K
YnModS10KT49M0RNYXRoLmFicyhzLXQpP2k6b30sZS5uZWFyZXN0VmFsdWVJbmRleD0zRGZ1bmN0
aW9uKGUsdCxuKXt2YXIgcj0KPTNESW5maW5pdHksaT0zRG51bGw7cmV0dXJuIGUuZm9yRWFjaChm
dW5jdGlvbihlLHMpe3ZhciBvPTNETWF0aC5hYnModC1lKTtvPQo8PTNEciYmbzxuJiYocj0zRG8s
aT0zRHMpfSksaX0sZnVuY3Rpb24oKXt3aW5kb3cubnYudG9vbHRpcD0zRHt9LHdpbmRvdy5udi49
Cm1vZGVscy50b29sdGlwPTNEZnVuY3Rpb24oKXtmdW5jdGlvbiB5KCl7aWYoYSl7dmFyIGU9M0Rk
My5zZWxlY3QoYSk7ZS5ub2RlKD0KKS50YWdOYW1lIT0zRD0zRCJzdmciJiYoZT0zRGUuc2VsZWN0
KCJzdmciKSk7dmFyIHQ9M0RlLm5vZGUoKT9lLmF0dHIoInZpZXdCPQpveCIpOm51bGw7aWYodCl7
dD0zRHQuc3BsaXQoIiAiKTt2YXIgbj0zRHBhcnNlSW50KGUuc3R5bGUoIndpZHRoIikpL3RbMl07
bC49CmxlZnQ9M0RsLmxlZnQqbixsLnRvcD0zRGwudG9wKm59fX1mdW5jdGlvbiBiKGUpe3ZhciB0
O2E/dD0zRGQzLnNlbGVjdChhKTp0PQo9M0RkMy5zZWxlY3QoImJvZHkiKTt2YXIgbj0zRHQuc2Vs
ZWN0KCIubnZ0b29sdGlwIik7cmV0dXJuIG4ubm9kZSgpPTNEPTNEPQo9M0RudWxsJiYobj0zRHQu
YXBwZW5kKCJkaXYiKS5hdHRyKCJjbGFzcyIsIm52dG9vbHRpcCAiKyh1P3U6Inh5LXRvb2x0aXAi
KSk9Ci5hdHRyKCJpZCIsaCkpLG4ubm9kZSgpLmlubmVySFRNTD0zRGUsbi5zdHlsZSgidG9wIiww
KS5zdHlsZSgibGVmdCIsMCkuc3R5bD0KZSgib3BhY2l0eSIsMCksbi5zZWxlY3RBbGwoImRpdiwg
dGFibGUsIHRkLCB0ciIpLmNsYXNzZWQocCwhMCksbi5jbGFzc2VkKHAsPQohMCksbi5ub2RlKCl9
ZnVuY3Rpb24gdygpe2lmKCFjKXJldHVybjtpZighZyhuKSlyZXR1cm47eSgpO3ZhciB0PTNEbC5s
ZWZ0LHU9Cj0zRG8hPTNEbnVsbD9vOmwudG9wLGg9M0RiKG0obikpO2Y9M0RoO2lmKGEpe3ZhciBw
PTNEYS5nZXRFbGVtZW50c0J5VGFnTmFtZT0KKCJzdmciKVswXSxkPTNEcD9wLmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpOmEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksdj0zRHtsPQplZnQ6MCx0b3A6
MH07aWYocCl7dmFyIEU9M0RwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFM9M0RhLmdldEJvdW5k
aW5nQ2xpZW49CnRSZWN0KCkseD0zREUudG9wO2lmKHg8MCl7dmFyIFQ9M0RhLmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpO3g9M0RNYXRoLmFicyh4KT0KPlQuaGVpZ2h0PzA6eH12LnRvcD0zRE1hdGgu
YWJzKHgtUy50b3ApLHYubGVmdD0zRE1hdGguYWJzKEUubGVmdC1TLmxlZnQpfXQrPQo9M0RhLm9m
ZnNldExlZnQrdi5sZWZ0LTIqYS5zY3JvbGxMZWZ0LHUrPTNEYS5vZmZzZXRUb3Ardi50b3AtMiph
LnNjcm9sbFRvcH09CnJldHVybiBzJiZzPjAmJih1PTNETWF0aC5mbG9vcih1L3MpKnMpLGUudG9v
bHRpcC5jYWxjVG9vbHRpcFBvc2l0aW9uKFt0LHVdLD0KcixpLGgpLHd9dmFyIHQ9M0RudWxsLG49
M0RudWxsLHI9M0QidyIsaT0zRDUwLHM9M0QyNSxvPTNEbnVsbCx1PTNEbnVsbCxhPTNEPQpudWxs
LGY9M0RudWxsLGw9M0R7bGVmdDpudWxsLHRvcDpudWxsfSxjPTNEITAsaD0zRCJudnRvb2x0aXAt
IitNYXRoLmZsb29yKE09CmF0aC5yYW5kb20oKSoxZTUpLHA9M0QibnYtcG9pbnRlci1ldmVudHMt
bm9uZSIsZD0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGV9LD0Kdj0zRGZ1bmN0aW9uKGUpe3JldHVy
biBlfSxtPTNEZnVuY3Rpb24oZSl7aWYodCE9M0RudWxsKXJldHVybiB0O2lmKGU9M0Q9M0RuPQp1
bGwpcmV0dXJuIiI7dmFyIG49M0RkMy5zZWxlY3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFi
bGUiKSkscj0zRG4uc2VsZWM9CnRBbGwoInRoZWFkIikuZGF0YShbZV0pLmVudGVyKCkuYXBwZW5k
KCJ0aGVhZCIpO3IuYXBwZW5kKCJ0ciIpLmFwcGVuZCgidGQiKT0KLmF0dHIoImNvbHNwYW4iLDMp
LmFwcGVuZCgic3Ryb25nIikuY2xhc3NlZCgieC12YWx1ZSIsITApLmh0bWwodihlLnZhbHVlKSk7
PQp2YXIgaT0zRG4uc2VsZWN0QWxsKCJ0Ym9keSIpLmRhdGEoW2VdKS5lbnRlcigpLmFwcGVuZCgi
dGJvZHkiKSxzPTNEaS5zZWxlY3Q9CkFsbCgidHIiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBl
LnNlcmllc30pLmVudGVyKCkuYXBwZW5kKCJ0ciIpLmNsYXNzZWQoIj0KaGlnaGxpZ2h0IixmdW5j
dGlvbihlKXtyZXR1cm4gZS5oaWdobGlnaHR9KTtzLmFwcGVuZCgidGQiKS5jbGFzc2VkKCJsZWdl
bmQtPQpjb2xvci1ndWlkZSIsITApLmFwcGVuZCgiZGl2Iikuc3R5bGUoImJhY2tncm91bmQtY29s
b3IiLGZ1bmN0aW9uKGUpe3JldHVybiA9CmUuY29sb3J9KSxzLmFwcGVuZCgidGQiKS5jbGFzc2Vk
KCJrZXkiLCEwKS5odG1sKGZ1bmN0aW9uKGUpe3JldHVybiBlLmtleX0pLD0Kcy5hcHBlbmQoInRk
IikuY2xhc3NlZCgidmFsdWUiLCEwKS5odG1sKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGQoZS52YWx1
ZSx0KX0pPQoscy5zZWxlY3RBbGwoInRkIikuZWFjaChmdW5jdGlvbihlKXtpZihlLmhpZ2hsaWdo
dCl7dmFyIHQ9M0RkMy5zY2FsZS5saW5lYXI9CigpLmRvbWFpbihbMCwxXSkucmFuZ2UoWyIjZmZm
IixlLmNvbG9yXSksbj0zRC42O2QzLnNlbGVjdCh0aGlzKS5zdHlsZSgiYm9yZD0KZXItYm90dG9t
LWNvbG9yIix0KG4pKS5zdHlsZSgiYm9yZGVyLXRvcC1jb2xvciIsdChuKSl9fSk7dmFyIG89M0Ru
Lm5vZGUoKS5vPQp1dGVySFRNTDtyZXR1cm4gZS5mb290ZXIhPTNEPTNEdW5kZWZpbmVkJiYobys9
M0QiPGRpdiBjbGFzcz0zRCdmb290ZXInPiIrZS49CmZvb3RlcisiPC9kaXY+Iiksb30sZz0zRGZ1
bmN0aW9uKGUpe3JldHVybiBlJiZlLnNlcmllcyYmZS5zZXJpZXMubGVuZ3RoPjA/IT0KMDohMX07
cmV0dXJuIHcubnZQb2ludGVyRXZlbnRzQ2xhc3M9M0RwLHcuY29udGVudD0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1PQptZW50cy5sZW5ndGg/KHQ9M0RlLHcpOnR9LHcudG9vbHRpcEVsZW09M0Rm
dW5jdGlvbigpe3JldHVybiBmfSx3LmNvbnRlbnRHZW49CmVyYXRvcj0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyh0eXBlb2YgZT0zRD0zRCJmdW5jdGlvbiImJihtPQo9M0Rl
KSx3KTptfSx3LmRhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0z
RGUsdyk6bn0sdy5ncmE9CnZpdHk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8ocj0zRGUsdyk6cn0sdy5kaXN0YW5jZT0zRGZ1bmN0aT0Kb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGk9M0RlLHcpOml9LHcuc25hcERpc3RhbmNlPTNEZnVuY3Rpb24oZSl7cmV0PQp1
cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0zRGUsdyk6c30sdy5jbGFzc2VzPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy49Cmxlbmd0aD8odT0zRGUsdyk6dX0sdy5jaGFydENvbnRhaW5lcj0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPz0KKGE9M0RlLHcpOmF9LHcucG9z
aXRpb249M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obC5sZWZ0PTNEdHlw
PQplb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDpsLmxlZnQsbC50b3A9M0R0eXBlb2Yg
ZS50b3AhPTNEInVuZGVmaW5lZCI9Cj9lLnRvcDpsLnRvcCx3KTpsfSx3LmZpeGVkVG9wPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RlLD0Kdyk6b30sdy5lbmFibGVk
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLHcpOmN9LHcudmFs
dWVGPQpvcm1hdHRlcj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0eXBl
b2YgZT0zRD0zRCJmdW5jdGlvbiImJig9CmQ9M0RlKSx3KTpkfSx3LmhlYWRlckZvcm1hdHRlcj0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0eXBlbz0KZiBlPTNEPTNEImZ1
bmN0aW9uIiYmKHY9M0RlKSx3KTp2fSx3LmlkPTNEZnVuY3Rpb24oKXtyZXR1cm4gaH0sd30sZS50
b29sdGlwPQouc2hvdz0zRGZ1bmN0aW9uKHQsbixyLGkscyxvKXt2YXIgdT0zRGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpO3UuY2xhc3M9Ck5hbWU9M0QibnZ0b29sdGlwICIrKG8/bzoieHkt
dG9vbHRpcCIpO3ZhciBhPTNEcztpZighc3x8cy50YWdOYW1lLm1hdGNoKC9nfD0Kc3ZnL2kpKWE9
M0Rkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdO3Uuc3R5bGUubGVmdD0z
RDAsdS5zdHlsPQplLnRvcD0zRDAsdS5zdHlsZS5vcGFjaXR5PTNEMCx1LmlubmVySFRNTD0zRG4s
YS5hcHBlbmRDaGlsZCh1KSxzJiYodFswXT0zRHQ9ClswXS1zLnNjcm9sbExlZnQsdFsxXT0zRHRb
MV0tcy5zY3JvbGxUb3ApLGUudG9vbHRpcC5jYWxjVG9vbHRpcFBvc2l0aW9uKHQscj0KLGksdSl9
LGUudG9vbHRpcC5maW5kRmlyc3ROb25TVkdQYXJlbnQ9M0RmdW5jdGlvbihlKXt3aGlsZShlLnRh
Z05hbWUubWF0Y2goPQovXmd8c3ZnJC9pKSE9M0Q9M0RudWxsKWU9M0RlLnBhcmVudE5vZGU7cmV0
dXJuIGV9LGUudG9vbHRpcC5maW5kVG90YWxPZmZzZXQ9ClRvcD0zRGZ1bmN0aW9uKGUsdCl7dmFy
IG49M0R0O2RvIGlzTmFOKGUub2Zmc2V0VG9wKXx8KG4rPTNEZS5vZmZzZXRUb3ApO3doaT0KbGUo
ZT0zRGUub2Zmc2V0UGFyZW50KTtyZXR1cm4gbn0sZS50b29sdGlwLmZpbmRUb3RhbE9mZnNldExl
ZnQ9M0RmdW5jdGlvbihlPQosdCl7dmFyIG49M0R0O2RvIGlzTmFOKGUub2Zmc2V0TGVmdCl8fChu
Kz0zRGUub2Zmc2V0TGVmdCk7d2hpbGUoZT0zRGUub2Zmc2U9CnRQYXJlbnQpO3JldHVybiBufSxl
LnRvb2x0aXAuY2FsY1Rvb2x0aXBQb3NpdGlvbj0zRGZ1bmN0aW9uKHQsbixyLGkpe3ZhciBzPQo9
M0RwYXJzZUludChpLm9mZnNldEhlaWdodCksbz0zRHBhcnNlSW50KGkub2Zmc2V0V2lkdGgpLHU9
M0RlLnV0aWxzLndpbmRvd1M9Cml6ZSgpLndpZHRoLGE9M0RlLnV0aWxzLndpbmRvd1NpemUoKS5o
ZWlnaHQsZj0zRHdpbmRvdy5wYWdlWU9mZnNldCxsPTNEd2luZD0Kb3cucGFnZVhPZmZzZXQsYyxo
O2E9M0R3aW5kb3cuaW5uZXJXaWR0aD49M0Rkb2N1bWVudC5ib2R5LnNjcm9sbFdpZHRoP2E6YS0x
PQo2LHU9M0R3aW5kb3cuaW5uZXJIZWlnaHQ+PTNEZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQ/
dTp1LTE2LG49M0RufHwicyIscj0KPTNEcnx8MjA7dmFyIHA9M0RmdW5jdGlvbih0KXtyZXR1cm4g
ZS50b29sdGlwLmZpbmRUb3RhbE9mZnNldFRvcCh0LGgpfSxkPTNEPQpmdW5jdGlvbih0KXtyZXR1
cm4gZS50b29sdGlwLmZpbmRUb3RhbE9mZnNldExlZnQodCxjKX07c3dpdGNoKG4pe2Nhc2UiZSI6
Yz0KPTNEdFswXS1vLXIsaD0zRHRbMV0tcy8yO3ZhciB2PTNEZChpKSxtPTNEcChpKTt2PGwmJihj
PTNEdFswXStyPmw/dFswXStyOmwtPQp2K2MpLG08ZiYmKGg9M0RmLW0raCksbStzPmYrYSYmKGg9
M0RmK2EtbStoLXMpO2JyZWFrO2Nhc2UidyI6Yz0zRHRbMF0rcixoPQo9M0R0WzFdLXMvMjt2YXIg
dj0zRGQoaSksbT0zRHAoaSk7ditvPnUmJihjPTNEdFswXS1vLXIpLG08ZiYmKGg9M0RmKzUpLG0r
cz49CmYrYSYmKGg9M0RmK2EtbStoLXMpO2JyZWFrO2Nhc2UibiI6Yz0zRHRbMF0tby8yLTUsaD0z
RHRbMV0rcjt2YXIgdj0zRGQoaSksbT0KPTNEcChpKTt2PGwmJihjPTNEbCs1KSx2K28+dSYmKGM9
M0RjLW8vMis1KSxtK3M+ZithJiYoaD0zRGYrYS1tK2gtcyk7YnJlYWs7PQpjYXNlInMiOmM9M0R0
WzBdLW8vMixoPTNEdFsxXS1zLXI7dmFyIHY9M0RkKGkpLG09M0RwKGkpO3Y8bCYmKGM9M0RsKzUp
LHYrbz49CnUmJihjPTNEYy1vLzIrNSksZj5tJiYoaD0zRGYpO2JyZWFrO2Nhc2Uibm9uZSI6Yz0z
RHRbMF0saD0zRHRbMV0tcjt2YXIgdj0zRD0KZChpKSxtPTNEcChpKX1yZXR1cm4gaS5zdHlsZS5s
ZWZ0PTNEYysicHgiLGkuc3R5bGUudG9wPTNEaCsicHgiLGkuc3R5bGUub3BhPQpjaXR5PTNEMSxp
LnN0eWxlLnBvc2l0aW9uPTNEImFic29sdXRlIixpfSxlLnRvb2x0aXAuY2xlYW51cD0zRGZ1bmN0
aW9uKCl7dmE9CnIgZT0zRGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm52dG9vbHRp
cCIpLHQ9M0RbXTt3aGlsZShlLmxlbmd0aCl0Lj0KcHVzaChlWzBdKSxlWzBdLnN0eWxlLnRyYW5z
aXRpb25EZWxheT0zRCIwICFpbXBvcnRhbnQiLGVbMF0uc3R5bGUub3BhY2l0eT0KPTNEMCxlWzBd
LmNsYXNzTmFtZT0zRCJudnRvb2x0aXAtcGVuZGluZy1yZW1vdmFsIjtzZXRUaW1lb3V0KGZ1bmN0
aW9uKCl7d2hpPQpsZSh0Lmxlbmd0aCl7dmFyIGU9M0R0LnBvcCgpO2UucGFyZW50Tm9kZS5yZW1v
dmVDaGlsZChlKX19LDUwMCl9fSgpLGUudXRpbHM9Ci53aW5kb3dTaXplPTNEZnVuY3Rpb24oKXt2
YXIgZT0zRHt3aWR0aDo2NDAsaGVpZ2h0OjQ4MH07cmV0dXJuIGRvY3VtZW50LmJvZD0KeSYmZG9j
dW1lbnQuYm9keS5vZmZzZXRXaWR0aCYmKGUud2lkdGg9M0Rkb2N1bWVudC5ib2R5Lm9mZnNldFdp
ZHRoLGUuaGVpZ2h0PQo9M0Rkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCksZG9jdW1lbnQuY29t
cGF0TW9kZT0zRD0zRCJDU1MxQ29tcGF0IiYmZG9jdW09CmVudC5kb2N1bWVudEVsZW1lbnQmJmRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRXaWR0aCYmKGUud2lkdGg9M0Rkb2N1bT0KZW50
LmRvY3VtZW50RWxlbWVudC5vZmZzZXRXaWR0aCxlLmhlaWdodD0zRGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudC5vZmZzZXRIPQplaWdodCksd2luZG93LmlubmVyV2lkdGgmJndpbmRvdy5pbm5lckhl
aWdodCYmKGUud2lkdGg9M0R3aW5kb3cuaW5uZXJXaWR0aCw9CmUuaGVpZ2h0PTNEd2luZG93Lmlu
bmVySGVpZ2h0KSxlfSxlLnV0aWxzLndpbmRvd1Jlc2l6ZT0zRGZ1bmN0aW9uKGUpe2lmKGU9Cj0z
RD0zRD0zRHVuZGVmaW5lZClyZXR1cm47dmFyIHQ9M0R3aW5kb3cub25yZXNpemU7d2luZG93Lm9u
cmVzaXplPTNEZnVuY3Rpbz0KbihuKXt0eXBlb2YgdD0zRD0zRCJmdW5jdGlvbiImJnQobiksZShu
KX19LGUudXRpbHMuZ2V0Q29sb3I9M0RmdW5jdGlvbih0KXtyPQpldHVybiBhcmd1bWVudHMubGVu
Z3RoP09iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KT0zRD0zRD0zRCJbb2JqZWN0IEE9
CnJyYXldIj9mdW5jdGlvbihlLG4pe3JldHVybiBlLmNvbG9yfHx0W24ldC5sZW5ndGhdfTp0OmUu
dXRpbHMuZGVmYXVsdENvbG9yKD0KKX0sZS51dGlscy5kZWZhdWx0Q29sb3I9M0RmdW5jdGlvbigp
e3ZhciBlPTNEZDMuc2NhbGUuY2F0ZWdvcnkyMCgpLnJhbmdlKCk7PQpyZXR1cm4gZnVuY3Rpb24o
dCxuKXtyZXR1cm4gdC5jb2xvcnx8ZVtuJWUubGVuZ3RoXX19LGUudXRpbHMuY3VzdG9tVGhlbWU9
M0Q9CmZ1bmN0aW9uKGUsdCxuKXt0PTNEdHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGUua2V5fSxuPTNE
bnx8ZDMuc2NhbGUuY2F0ZWdvcnkyMD0KKCkucmFuZ2UoKTt2YXIgcj0zRG4ubGVuZ3RoO3JldHVy
biBmdW5jdGlvbihpLHMpe3ZhciBvPTNEdChpKTtyZXR1cm4gcnx8KHI9Cj0zRG4ubGVuZ3RoKSx0
eXBlb2YgZVtvXSE9M0QidW5kZWZpbmVkIj90eXBlb2YgZVtvXT0zRD0zRCJmdW5jdGlvbiI/ZVtv
XSgpOj0KZVtvXTpuWy0tcl19fSxlLnV0aWxzLnBqYXg9M0RmdW5jdGlvbih0LG4pe2Z1bmN0aW9u
IHIocil7ZDMuaHRtbChyLGZ1bmN0aW9uPQoocil7dmFyIGk9M0RkMy5zZWxlY3Qobikubm9kZSgp
O2kucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZDMuc2VsZWN0KHIpLnNlbGU9CmN0KG4pLm5vZGUo
KSxpKSxlLnV0aWxzLnBqYXgodCxuKX0pfWQzLnNlbGVjdEFsbCh0KS5vbigiY2xpY2siLGZ1bmN0
aW9uKCl7aD0KaXN0b3J5LnB1c2hTdGF0ZSh0aGlzLmhyZWYsdGhpcy50ZXh0Q29udGVudCx0aGlz
LmhyZWYpLHIodGhpcy5ocmVmKSxkMy5ldmVuPQp0LnByZXZlbnREZWZhdWx0KCl9KSxkMy5zZWxl
Y3Qod2luZG93KS5vbigicG9wc3RhdGUiLGZ1bmN0aW9uKCl7ZDMuZXZlbnQuc3Q9CmF0ZSYmcihk
My5ldmVudC5zdGF0ZSl9KX0sZS51dGlscy5jYWxjQXBwcm94VGV4dFdpZHRoPTNEZnVuY3Rpb24o
ZSl7aWYodHlwZT0Kb2YgZS5zdHlsZT0zRD0zRCJmdW5jdGlvbiImJnR5cGVvZiBlLnRleHQ9M0Q9
M0QiZnVuY3Rpb24iKXt2YXIgdD0zRHBhcnNlSW50PQooZS5zdHlsZSgiZm9udC1zaXplIikucmVw
bGFjZSgicHgiLCIiKSksbj0zRGUudGV4dCgpLmxlbmd0aDtyZXR1cm4gbip0Ki41fXI9CmV0dXJu
IDB9LGUudXRpbHMuTmFOdG9aZXJvPTNEZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlIT0zRCJu
dW1iZXIifHxpc05hTj0KKGUpfHxlPTNEPTNEPTNEbnVsbHx8ZT0zRD0zRD0zREluZmluaXR5PzA6
ZX0sZS51dGlscy5vcHRpb25zRnVuYz0zRGZ1bmN0aW9uPQooZSl7cmV0dXJuIGUmJmQzLm1hcChl
KS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7dHlwZW9mIHRoaXNbZV09M0Q9M0QiZnVuY3Rpb249CiIm
JnRoaXNbZV0odCl9LmJpbmQodGhpcykpLHRoaXN9LGUubW9kZWxzLmF4aXM9M0RmdW5jdGlvbigp
e2Z1bmN0aW9uIG0oZSl7cj0KZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBpPTNEZDMuc2Vs
ZWN0KHRoaXMpLG09M0RpLnNlbGVjdEFsbCgiZy5udi13cmFwPQoubnYtYXhpcyIpLmRhdGEoW2Vd
KSxnPTNEbS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG49
CnYtYXhpcyIpLHk9M0RnLmFwcGVuZCgiZyIpLGI9M0RtLnNlbGVjdCgiZyIpO3AhPTNEPTNEbnVs
bD90LnRpY2tzKHApOih0Lm9yaT0KZW50KCk9M0Q9M0QidG9wInx8dC5vcmllbnQoKT0zRD0zRCJi
b3R0b20iKSYmdC50aWNrcyhNYXRoLmFicyhzLnJhbmdlKClbMV0tPQpzLnJhbmdlKClbMF0pLzEw
MCksYi5jYWxsKHQpLHY9M0R2fHx0LnNjYWxlKCk7dmFyIHc9M0R0LnRpY2tGb3JtYXQoKTt3PTNE
PQo9M0RudWxsJiYodz0zRHYudGlja0Zvcm1hdCgpKTt2YXIgRT0zRGIuc2VsZWN0QWxsKCJ0ZXh0
Lm52LWF4aXNsYWJlbCIpLmRhdGE9Cihbb3x8bnVsbF0pO0UuZXhpdCgpLnJlbW92ZSgpO3N3aXRj
aCh0Lm9yaWVudCgpKXtjYXNlInRvcCI6RS5lbnRlcigpLmFwcGVuZD0KKCJ0ZXh0IikuYXR0cigi
Y2xhc3MiLCJudi1heGlzbGFiZWwiKTt2YXIgUz0zRHMucmFuZ2UoKS5sZW5ndGg9M0Q9M0QyP3Mu
cmFuPQpnZSgpWzFdOnMucmFuZ2UoKVtzLnJhbmdlKCkubGVuZ3RoLTFdKyhzLnJhbmdlKClbMV0t
cy5yYW5nZSgpWzBdKTtFLmF0dHIoInQ9CmV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJ5Iiww
KS5hdHRyKCJ4IixTLzIpO2lmKHUpe3ZhciB4PTNEbS5zZWxlY3RBbGwoIj0KZy5udi1heGlzTWF4
TWluIikuZGF0YShzLmRvbWFpbigpKTt4LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3Mi
LCJudi1hPQp4aXNNYXhNaW4iKS5hcHBlbmQoInRleHQiKSx4LmV4aXQoKS5yZW1vdmUoKSx4LmF0
dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSw9CnQpe3JldHVybiJ0cmFuc2xhdGUoIitzKGUpKyIs
MCkifSkuc2VsZWN0KCJ0ZXh0IikuYXR0cigiZHkiLCItMC41ZW0iKS5hdHRyKD0KInkiLC10LnRp
Y2tQYWRkaW5nKCkpLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikudGV4dChmdW5jdGlvbihl
LHQpe3ZhciBuPQo9M0R3KGUpO3JldHVybigiIituKS5tYXRjaCgiTmFOIik/IiI6bn0pLHguYXR0
cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3I9CmV0dXJuInRyYW5zbGF0ZSgiK3MucmFuZ2Uo
KVt0XSsiLDApIn0pfWJyZWFrO2Nhc2UiYm90dG9tIjp2YXIgVD0zRDM2LE49M0QzMD0KLEM9M0Ri
LnNlbGVjdEFsbCgiZyIpLnNlbGVjdCgidGV4dCIpO2lmKGYlMzYwKXtDLmVhY2goZnVuY3Rpb24o
ZSx0KXt2YXIgbj0KPTNEdGhpcy5nZXRCQm94KCkud2lkdGg7bj5OJiYoTj0zRG4pfSk7dmFyIGs9
M0RNYXRoLmFicyhNYXRoLnNpbihmKk1hdGguUEkvPQoxODApKSxUPTNEKGs/aypOOk4pKzMwO0Mu
YXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQsbil7cmV0dXJuInJvdGF0ZSgiK2Y9CisiIDAs
MCkifSkuc3R5bGUoInRleHQtYW5jaG9yIixmJTM2MD4wPyJzdGFydCI6ImVuZCIpfUUuZW50ZXIo
KS5hcHBlbmQoInRleD0KdCIpLmF0dHIoImNsYXNzIiwibnYtYXhpc2xhYmVsIik7dmFyIFM9M0Rz
LnJhbmdlKCkubGVuZ3RoPTNEPTNEMj9zLnJhbmdlKClbPQoxXTpzLnJhbmdlKClbcy5yYW5nZSgp
Lmxlbmd0aC0xXSsocy5yYW5nZSgpWzFdLXMucmFuZ2UoKVswXSk7RS5hdHRyKCJ0ZXh0LWE9Cm5j
aG9yIiwibWlkZGxlIikuYXR0cigieSIsVCkuYXR0cigieCIsUy8yKTtpZih1KXt2YXIgeD0zRG0u
c2VsZWN0QWxsKCJnLm52LT0KYXhpc01heE1pbiIpLmRhdGEoW3MuZG9tYWluKClbMF0scy5kb21h
aW4oKVtzLmRvbWFpbigpLmxlbmd0aC0xXV0pO3guZW50ZXIoPQopLmFwcGVuZCgiZyIpLmF0dHIo
ImNsYXNzIiwibnYtYXhpc01heE1pbiIpLmFwcGVuZCgidGV4dCIpLHguZXhpdCgpLnJlbW92ZSg9
CikseC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiKyhz
KGUpKyhoP3MucmFuZ2VCYW5kKD0KKS8yOjApKSsiLDApIn0pLnNlbGVjdCgidGV4dCIpLmF0dHIo
ImR5IiwiLjcxZW0iKS5hdHRyKCJ5Iix0LnRpY2tQYWRkaW5nKCkpPQouYXR0cigidHJhbnNmb3Jt
IixmdW5jdGlvbihlLHQsbil7cmV0dXJuInJvdGF0ZSgiK2YrIiAwLDApIn0pLnN0eWxlKCJ0ZXh0
LWE9Cm5jaG9yIixmP2YlMzYwPjA/InN0YXJ0IjoiZW5kIjoibWlkZGxlIikudGV4dChmdW5jdGlv
bihlLHQpe3ZhciBuPTNEdyhlKTtyZT0KdHVybigiIituKS5tYXRjaCgiTmFOIik/IiI6bn0pLHgu
YXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuPQpzbGF0ZSgiKyhzKGUp
KyhoP3MucmFuZ2VCYW5kKCkvMjowKSkrIiwwKSJ9KX1jJiZDLmF0dHIoInRyYW5zZm9ybSIsZnVu
Y3Rpb249CihlLHQpe3JldHVybiJ0cmFuc2xhdGUoMCwiKyh0JTI9M0Q9M0QwPyIwIjoiMTIiKSsi
KSJ9KTticmVhaztjYXNlInJpZ2h0IjpFLj0KZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJj
bGFzcyIsIm52LWF4aXNsYWJlbCIpLEUuc3R5bGUoInRleHQtYW5jaG9yIixsPQo/Im1pZGRsZSI6
ImJlZ2luIikuYXR0cigidHJhbnNmb3JtIixsPyJyb3RhdGUoOTApIjoiIikuYXR0cigieSIsbD8t
TWF0aC5tYXg9CihuLnJpZ2h0LHIpKzEyOi0xMCkuYXR0cigieCIsbD9zLnJhbmdlKClbMF0vMjp0
LnRpY2tQYWRkaW5nKCkpO2lmKHUpe3ZhciB4PQo9M0RtLnNlbGVjdEFsbCgiZy5udi1heGlzTWF4
TWluIikuZGF0YShzLmRvbWFpbigpKTt4LmVudGVyKCkuYXBwZW5kKCJnIikuYXQ9CnRyKCJjbGFz
cyIsIm52LWF4aXNNYXhNaW4iKS5hcHBlbmQoInRleHQiKS5zdHlsZSgib3BhY2l0eSIsMCkseC5l
eGl0KCkucmVtbz0KdmUoKSx4LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4i
dHJhbnNsYXRlKDAsIitzKGUpKyIpIn0pLnNlbGVjPQp0KCJ0ZXh0IikuYXR0cigiZHkiLCIuMzJl
bSIpLmF0dHIoInkiLDApLmF0dHIoIngiLHQudGlja1BhZGRpbmcoKSkuc3R5bGUoInQ9CmV4dC1h
bmNob3IiLCJzdGFydCIpLnRleHQoZnVuY3Rpb24oZSx0KXt2YXIgbj0zRHcoZSk7cmV0dXJuKCIi
K24pLm1hdGNoKCJOYT0KTiIpPyIiOm59KSx4LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0
KXtyZXR1cm4idHJhbnNsYXRlKDAsIitzLnJhbmdlKClbPQp0XSsiKSJ9KS5zZWxlY3QoInRleHQi
KS5zdHlsZSgib3BhY2l0eSIsMSl9YnJlYWs7Y2FzZSJsZWZ0IjpFLmVudGVyKCkuYXBwZW49CmQo
InRleHQiKS5hdHRyKCJjbGFzcyIsIm52LWF4aXNsYWJlbCIpLEUuc3R5bGUoInRleHQtYW5jaG9y
IixsPyJtaWRkbGUiOiJlbj0KZCIpLmF0dHIoInRyYW5zZm9ybSIsbD8icm90YXRlKC05MCkiOiIi
KS5hdHRyKCJ5IixsPy1NYXRoLm1heChuLmxlZnQscikrZDotPQoxMCkuYXR0cigieCIsbD8tcy5y
YW5nZSgpWzBdLzI6LXQudGlja1BhZGRpbmcoKSk7aWYodSl7dmFyIHg9M0RtLnNlbGVjdEFsbCg9
CiJnLm52LWF4aXNNYXhNaW4iKS5kYXRhKHMuZG9tYWluKCkpO3guZW50ZXIoKS5hcHBlbmQoImci
KS5hdHRyKCJjbGFzcyIsIm52LT0KYXhpc01heE1pbiIpLmFwcGVuZCgidGV4dCIpLnN0eWxlKCJv
cGFjaXR5IiwwKSx4LmV4aXQoKS5yZW1vdmUoKSx4LmF0dHIoInRyPQphbnNmb3JtIixmdW5jdGlv
bihlLHQpe3JldHVybiJ0cmFuc2xhdGUoMCwiK3YoZSkrIikifSkuc2VsZWN0KCJ0ZXh0IikuYXR0
cig9CiJkeSIsIi4zMmVtIikuYXR0cigieSIsMCkuYXR0cigieCIsLXQudGlja1BhZGRpbmcoKSku
YXR0cigidGV4dC1hbmNob3IiLCJlbj0KZCIpLnRleHQoZnVuY3Rpb24oZSx0KXt2YXIgbj0zRHco
ZSk7cmV0dXJuKCIiK24pLm1hdGNoKCJOYU4iKT8iIjpufSkseC5hdHRyPQooInRyYW5zZm9ybSIs
ZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKDAsIitzLnJhbmdlKClbdF0rIikifSkuc2Vs
ZWN0KCI9CnRleHQiKS5zdHlsZSgib3BhY2l0eSIsMSl9fUUudGV4dChmdW5jdGlvbihlKXtyZXR1
cm4gZX0pLHUmJih0Lm9yaWVudCgpPTNEPQo9M0Q9M0QibGVmdCJ8fHQub3JpZW50KCk9M0Q9M0Q9
M0QicmlnaHQiKSYmKGIuc2VsZWN0QWxsKCJnIikuZWFjaChmdW5jdGlvbig9CmUsdCl7ZDMuc2Vs
ZWN0KHRoaXMpLnNlbGVjdCgidGV4dCIpLmF0dHIoIm9wYWNpdHkiLDEpO2lmKHMoZSk8cy5yYW5n
ZSgpWzFdKz0KMTB8fHMoZSk+cy5yYW5nZSgpWzBdLTEwKShlPjFlLTEwfHxlPC0xZS0xMCkmJmQz
LnNlbGVjdCh0aGlzKS5hdHRyKCJvcGFjaXR5PQoiLDApLGQzLnNlbGVjdCh0aGlzKS5zZWxlY3Qo
InRleHQiKS5hdHRyKCJvcGFjaXR5IiwwKX0pLHMuZG9tYWluKClbMF09M0Q9M0Q9CnMuZG9tYWlu
KClbMV0mJnMuZG9tYWluKClbMF09M0Q9M0QwJiZtLnNlbGVjdEFsbCgiZy5udi1heGlzTWF4TWlu
Iikuc3R5bGUoIj0Kb3BhY2l0eSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8wOjF9KSk7aWYodSYm
KHQub3JpZW50KCk9M0Q9M0Q9M0QidG9wInx8dC5vPQpyaWVudCgpPTNEPTNEPTNEImJvdHRvbSIp
KXt2YXIgTD0zRFtdO20uc2VsZWN0QWxsKCJnLm52LWF4aXNNYXhNaW4iKS5lYWNoKGY9CnVuY3Rp
b24oZSx0KXt0cnl7dD9MLnB1c2gocyhlKS10aGlzLmdldEJCb3goKS53aWR0aC00KTpMLnB1c2go
cyhlKSt0aGlzLmdldD0KQkJveCgpLndpZHRoKzQpfWNhdGNoKG4pe3Q/TC5wdXNoKHMoZSktNCk6
TC5wdXNoKHMoZSkrNCl9fSksYi5zZWxlY3RBbGwoImciPQopLmVhY2goZnVuY3Rpb24oZSx0KXtp
ZihzKGUpPExbMF18fHMoZSk+TFsxXSllPjFlLTEwfHxlPC0xZS0xMD9kMy5zZWxlY3QodGg9Cmlz
KS5yZW1vdmUoKTpkMy5zZWxlY3QodGhpcykuc2VsZWN0KCJ0ZXh0IikucmVtb3ZlKCl9KX1hJiZi
LnNlbGVjdEFsbCgiLnRpYz0KayIpLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hcGFyc2VGbG9h
dChNYXRoLnJvdW5kKGUuX19kYXRhX18qMWU1KS8xZTYpJiZlPQouX19kYXRhX18hPTNEPTNEdW5k
ZWZpbmVkfSkuY2xhc3NlZCgiemVybyIsITApLHY9M0RzLmNvcHkoKX0pLG19dmFyIHQ9M0RkMy49
CnN2Zy5heGlzKCksbj0zRHt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0scj0zRDc1LGk9
M0Q2MCxzPTNEZDMuc2NhbGUubD0KaW5lYXIoKSxvPTNEbnVsbCx1PTNEITAsYT0zRCEwLGY9M0Qw
LGw9M0QhMCxjPTNEITEsaD0zRCExLHA9M0RudWxsLGQ9M0QxMjt0PQouc2NhbGUocykub3JpZW50
KCJib3R0b20iKS50aWNrRm9ybWF0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSk7dmFyIHY7cmV0dXJu
IG09Ci5heGlzPTNEdCxkMy5yZWJpbmQobSx0LCJvcmllbnQiLCJ0aWNrVmFsdWVzIiwidGlja1N1
YmRpdmlkZSIsInRpY2tTaXplIiwidD0KaWNrUGFkZGluZyIsInRpY2tGb3JtYXQiKSxkMy5yZWJp
bmQobSxzLCJkb21haW4iLCJyYW5nZSIsInJhbmdlQmFuZCIsInJhbmdlPQpCYW5kcyIpLG0ub3B0
aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChtKSxtLm1hcmdpbj0zRGZ1bmN0aW9uKGUp
e3JldHU9CnJuIGFyZ3VtZW50cy5sZW5ndGg/KG4udG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRl
ZmluZWQiP2UudG9wOm4udG9wLG4ucmlnaD0KdD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmlu
ZWQiP2UucmlnaHQ6bi5yaWdodCxuLmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvPQptIT0zRCJ1bmRl
ZmluZWQiP2UuYm90dG9tOm4uYm90dG9tLG4ubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVm
aW5lZCI/ZS49CmxlZnQ6bi5sZWZ0LG0pOm59LG0ud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8ocj0zRGUsbSk6cj0KfSxtLnRpY2tzPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLG0pOnB9LG0uaGVpZ2h0PTNEZnVuPQpjdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUsbSk6aX0sbS5heGlzTGFiZWw9M0RmdW5j
dGlvbihlKXtyZXQ9CnVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZSxtKTpvfSxtLnNob3dNYXhN
aW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbj0KdHMubGVuZ3RoPyh1PTNEZSxtKTp1fSxt
LmhpZ2hsaWdodFplcm89M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0PQpoPyhh
PTNEZSxtKTphfSxtLnNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHM9M0RlLHQuc2NhbGU9CihzKSxoPTNEdHlwZW9mIHMucmFuZ2VCYW5kcz0zRD0zRCJmdW5jdGlv
biIsZDMucmViaW5kKG0scywiZG9tYWluIiwicmFuZ2UiLD0KInJhbmdlQmFuZCIsInJhbmdlQmFu
ZHMiKSxtKTpzfSxtLnJvdGF0ZVlMYWJlbD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVuPQp0
cy5sZW5ndGg/KGw9M0RlLG0pOmx9LG0ucm90YXRlTGFiZWxzPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg9Cj8oZj0zRGUsbSk6Zn0sbS5zdGFnZ2VyTGFiZWxzPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLD0KbSk6Y30sbS5heGlzTGFiZWxE
aXN0YW5jZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSxtKTpk
PQp9LG19LGUubW9kZWxzLmhpc3RvcmljYWxCYXI9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIHcoRSl7
cmV0dXJuIEUuZWFjaChmdW5jdGk9Cm9uKHcpe3ZhciBFPTNEbi10LmxlZnQtdC5yaWdodCxTPTNE
ci10LnRvcC10LmJvdHRvbSxUPTNEZDMuc2VsZWN0KHRoaXMpO3MuZD0Kb21haW4oZHx8ZDMuZXh0
ZW50KHdbMF0udmFsdWVzLm1hcCh1KS5jb25jYXQoZikpKSxjP3MucmFuZ2UobXx8W0UqLjUvd1sw
XS52PQphbHVlcy5sZW5ndGgsRSood1swXS52YWx1ZXMubGVuZ3RoLS41KS93WzBdLnZhbHVlcy5s
ZW5ndGhdKTpzLnJhbmdlKG18fFswLEU9Cl0pLG8uZG9tYWluKHZ8fGQzLmV4dGVudCh3WzBdLnZh
bHVlcy5tYXAoYSkuY29uY2F0KGwpKSkucmFuZ2UoZ3x8W1MsMF0pLHMuZD0Kb21haW4oKVswXT0z
RD0zRD0zRHMuZG9tYWluKClbMV0mJihzLmRvbWFpbigpWzBdP3MuZG9tYWluKFtzLmRvbWFpbigp
WzBdLXMuPQpkb21haW4oKVswXSouMDEscy5kb21haW4oKVsxXStzLmRvbWFpbigpWzFdKi4wMV0p
OnMuZG9tYWluKFstMSwxXSkpLG8uZG9tYWk9Cm4oKVswXT0zRD0zRD0zRG8uZG9tYWluKClbMV0m
JihvLmRvbWFpbigpWzBdP28uZG9tYWluKFtvLmRvbWFpbigpWzBdK28uZG9tYT0KaW4oKVswXSou
MDEsby5kb21haW4oKVsxXS1vLmRvbWFpbigpWzFdKi4wMV0pOm8uZG9tYWluKFstMSwxXSkpO3Zh
ciBOPTNEVC5zPQplbGVjdEFsbCgiZy5udi13cmFwLm52LWhpc3RvcmljYWxCYXItIitpKS5kYXRh
KFt3WzBdLnZhbHVlc10pLEM9M0ROLmVudGVyKCk9Ci5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIs
Im52ZDMgbnYtd3JhcCBudi1oaXN0b3JpY2FsQmFyLSIraSksaz0zREMuYXBwZW5kKD0KImRlZnMi
KSxMPTNEQy5hcHBlbmQoImciKSxBPTNETi5zZWxlY3QoImciKTtMLmFwcGVuZCgiZyIpLmF0dHIo
ImNsYXNzIiwibnYtPQpiYXJzIiksTi5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0Lmxl
ZnQrIiwiK3QudG9wKyIpIiksVC5vbigiY2xpY2siLGY9CnVuY3Rpb24oZSx0KXt5LmNoYXJ0Q2xp
Y2soe2RhdGE6ZSxpbmRleDp0LHBvczpkMy5ldmVudCxpZDppfSl9KSxrLmFwcGVuZCgiYz0KbGlw
UGF0aCIpLmF0dHIoImlkIiwibnYtY2hhcnQtY2xpcC1wYXRoLSIraSkuYXBwZW5kKCJyZWN0Iiks
Ti5zZWxlY3QoIiNudi1jPQpoYXJ0LWNsaXAtcGF0aC0iK2krIiByZWN0IikuYXR0cigid2lkdGgi
LEUpLmF0dHIoImhlaWdodCIsUyksQS5hdHRyKCJjbGlwLXA9CmF0aCIsaD8idXJsKCNudi1jaGFy
dC1jbGlwLXBhdGgtIitpKyIpIjoiIik7dmFyIE89M0ROLnNlbGVjdCgiLm52LWJhcnMiKS5zZT0K
bGVjdEFsbCgiLm52LWJhciIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGZ1bmN0aW9uKGUs
dCl7cmV0dXJuIHUoZSx0KX0pPQo7Ty5leGl0KCkucmVtb3ZlKCk7dmFyIE09M0RPLmVudGVyKCku
YXBwZW5kKCJyZWN0IikuYXR0cigieCIsMCkuYXR0cigieSIsZnU9Cm5jdGlvbih0LG4pe3JldHVy
biBlLnV0aWxzLk5hTnRvWmVybyhvKE1hdGgubWF4KDAsYSh0LG4pKSkpfSkuYXR0cigiaGVpZ2h0
Ij0KLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKE1hdGguYWJzKG8oYSh0
LG4pKS1vKDApKSl9KS5hdHRyKCJ0PQpyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJh
bnNsYXRlKCIrKHModShlLHQpKS1FL3dbMF0udmFsdWVzLmxlbmd0aCo9Ci40NSkrIiwwKSJ9KS5v
bigibW91c2VvdmVyIixmdW5jdGlvbihlLHQpe2lmKCFiKXJldHVybjtkMy5zZWxlY3QodGhpcyku
Y2xhcz0Kc2VkKCJob3ZlciIsITApLHkuZWxlbWVudE1vdXNlb3Zlcih7cG9pbnQ6ZSxzZXJpZXM6
d1swXSxwb3M6W3ModShlLHQpKSxvKGEoPQplLHQpKV0scG9pbnRJbmRleDp0LHNlcmllc0luZGV4
OjAsZTpkMy5ldmVudH0pfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbihlLHQ9Cil7aWYoIWIpcmV0
dXJuO2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIsITEpLHkuZWxlbWVudE1vdXNlb3V0
KHtwb2ludD0KOmUsc2VyaWVzOndbMF0scG9pbnRJbmRleDp0LHNlcmllc0luZGV4OjAsZTpkMy5l
dmVudH0pfSkub24oImNsaWNrIixmdW5jdGlvPQpuKGUsdCl7aWYoIWIpcmV0dXJuO3kuZWxlbWVu
dENsaWNrKHt2YWx1ZTphKGUsdCksZGF0YTplLGluZGV4OnQscG9zOltzKHUoZSw9CnQpKSxvKGEo
ZSx0KSldLGU6ZDMuZXZlbnQsaWQ6aX0pLGQzLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfSkub24o
ImRibGNsaWNrIj0KLGZ1bmN0aW9uKGUsdCl7aWYoIWIpcmV0dXJuO3kuZWxlbWVudERibENsaWNr
KHt2YWx1ZTphKGUsdCksZGF0YTplLGluZGV4OnQsPQpwb3M6W3ModShlLHQpKSxvKGEoZSx0KSld
LGU6ZDMuZXZlbnQsaWQ6aX0pLGQzLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfSk7Ty49CmF0dHIo
ImZpbGwiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAoZSx0KX0pLmF0dHIoImNsYXNzIixmdW5jdGlv
bihlLHQsbil7cmV0dT0Kcm4oYShlLHQpPDA/Im52LWJhciBuZWdhdGl2ZSI6Im52LWJhciBwb3Np
dGl2ZSIpKyIgbnYtYmFyLSIrbisiLSIrdH0pLmF0dHIoPQoidHJhbnNmb3JtIixmdW5jdGlvbihl
LHQpe3JldHVybiJ0cmFuc2xhdGUoIisocyh1KGUsdCkpLUUvd1swXS52YWx1ZXMubGVuZ3Q9Cmgq
LjQ1KSsiLDApIn0pLmF0dHIoIndpZHRoIixFL3dbMF0udmFsdWVzLmxlbmd0aCouOSksTy5hdHRy
KCJ5IixmdW5jdGlvbih0LD0Kbil7dmFyIHI9M0RhKHQsbik8MD9vKDApOm8oMCktbyhhKHQsbikp
PDE/bygwKS0xOm8oYSh0LG4pKTtyZXR1cm4gZS51dGlscy5OPQphTnRvWmVybyhyKX0pLmF0dHIo
ImhlaWdodCIsZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8oTWF0aC5tYXg9
CihNYXRoLmFicyhvKGEodCxuKSktbygwKSksMSkpfSl9KSx3fXZhciB0PTNEe3RvcDowLHJpZ2h0
OjAsYm90dG9tOjAsbGVmdDowfT0KLG49M0Q5NjAscj0zRDUwMCxpPTNETWF0aC5mbG9vcihNYXRo
LnJhbmRvbSgpKjFlNCkscz0zRGQzLnNjYWxlLmxpbmVhcigpLG89Cj0zRGQzLnNjYWxlLmxpbmVh
cigpLHU9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS54fSxhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUu
eT0KfSxmPTNEW10sbD0zRFswXSxjPTNEITEsaD0zRCEwLHA9M0RlLnV0aWxzLmRlZmF1bHRDb2xv
cigpLGQsdixtLGcseT0zRGQzLmRpPQpzcGF0Y2goImNoYXJ0Q2xpY2siLCJlbGVtZW50Q2xpY2si
LCJlbGVtZW50RGJsQ2xpY2siLCJlbGVtZW50TW91c2VvdmVyIiwiZWw9CmVtZW50TW91c2VvdXQi
KSxiPTNEITA7cmV0dXJuIHcuaGlnaGxpZ2h0UG9pbnQ9M0RmdW5jdGlvbihlLHQpe2QzLnNlbGVj
dCgiLj0KbnYtaGlzdG9yaWNhbEJhci0iK2kpLnNlbGVjdCgiLm52LWJhcnMgLm52LWJhci0wLSIr
ZSkuY2xhc3NlZCgiaG92ZXIiLHQpfSx3PQouY2xlYXJIaWdobGlnaHRzPTNEZnVuY3Rpb24oKXtk
My5zZWxlY3QoIi5udi1oaXN0b3JpY2FsQmFyLSIraSkuc2VsZWN0KCIubnY9Ci1iYXJzIC5udi1i
YXIuaG92ZXIiKS5jbGFzc2VkKCJob3ZlciIsITEpfSx3LmRpc3BhdGNoPTNEeSx3Lm9wdGlvbnM9
M0RlLnV0aT0KbHMub3B0aW9uc0Z1bmMuYmluZCh3KSx3Lng9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8odT0zRGUsdyk6PQp1fSx3Lnk9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oYT0zRGUsdyk6YX0sdy5tYXJnaW49M0RmdW5jdGk9Cm9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVk
Ij9lLnRvcDp0Lj0KdG9wLHQucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9l
LnJpZ2h0OnQucmlnaHQsdC5ib3R0b209M0R0eXBlPQpvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVk
Ij9lLmJvdHRvbTp0LmJvdHRvbSx0LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmQ9CmVmaW5l
ZCI/ZS5sZWZ0OnQubGVmdCx3KTp0fSx3LndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KD0Kbj0zRGUsdyk6bn0sdy5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8ocj0zRGUsdyk6cn0sdy54PQpTY2FsZT0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPTNEZSx3KTpzfSx3LnlTY2FsZT0zRGZ1bmN0aW89Cm4o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RlLHcpOm99LHcueERvbWFpbj0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcj0KZ3VtZW50cy5sZW5ndGg/KGQ9M0RlLHcpOmR9LHcueURvbWFpbj0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPQo/KHY9M0RlLHcpOnZ9LHcueFJh
bmdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09M0RlLHcpOm19LHc9
Ci55UmFuZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0zRGUsdyk6
Z30sdy5mb3JjZVg9M0RmdW5jdD0KaW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNE
ZSx3KTpmfSx3LmZvcmNlWT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhPQpyZ3VtZW50cy5sZW5ndGg/
KGw9M0RlLHcpOmx9LHcucGFkRGF0YT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3Q9Cmg/KGM9M0RlLHcpOmN9LHcuY2xpcEVkZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oaD0zRGUsdyk6aD0KfSx3LmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHA9M0RlLnV0aWxzLmdldENvbG9yKHQpLHcpPQo6cH0sdy5pZD0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPTNEZSx3KTppfSx3LmludGVyYWN0
aXZlPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0zRCExLHcpOmJ9
LHd9LGUubW9kZWxzLmJ1bGxldD0zRGY9CnVuY3Rpb24oKXtmdW5jdGlvbiBtKGUpe3JldHVybiBl
LmVhY2goZnVuY3Rpb24oZSxuKXt2YXIgcD0zRGMtdC5sZWZ0LXQucmlnaD0KdCxtPTNEaC10LnRv
cC10LmJvdHRvbSxnPTNEZDMuc2VsZWN0KHRoaXMpLHk9M0RpLmNhbGwodGhpcyxlLG4pLnNsaWNl
KCkuc29yPQp0KGQzLmRlc2NlbmRpbmcpLGI9M0RzLmNhbGwodGhpcyxlLG4pLnNsaWNlKCkuc29y
dChkMy5kZXNjZW5kaW5nKSx3PTNEby5jYWw9CmwodGhpcyxlLG4pLnNsaWNlKCkuc29ydChkMy5k
ZXNjZW5kaW5nKSxFPTNEdS5jYWxsKHRoaXMsZSxuKS5zbGljZSgpLFM9M0RhLj0KY2FsbCh0aGlz
LGUsbikuc2xpY2UoKSx4PTNEZi5jYWxsKHRoaXMsZSxuKS5zbGljZSgpLFQ9M0RkMy5zY2FsZS5s
aW5lYXIoKS5kPQpvbWFpbihkMy5leHRlbnQoZDMubWVyZ2UoW2wseV0pKSkucmFuZ2Uocj9bcCww
XTpbMCxwXSksTj0zRHRoaXMuX19jaGFydF9ffHw9CmQzLnNjYWxlLmxpbmVhcigpLmRvbWFpbihb
MCxJbmZpbml0eV0pLnJhbmdlKFQucmFuZ2UoKSk7dGhpcy5fX2NoYXJ0X189M0RUOz0KdmFyIEM9
M0RkMy5taW4oeSksaz0zRGQzLm1heCh5KSxMPTNEeVsxXSxBPTNEZy5zZWxlY3RBbGwoImcubnYt
d3JhcC5udi1idWxsPQpldCIpLmRhdGEoW2VdKSxPPTNEQS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0
dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LWJ1bGw9CmV0IiksTT0zRE8uYXBwZW5kKCJnIiks
Xz0zREEuc2VsZWN0KCJnIik7TS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm52LT0KcmFu
Z2UgbnYtcmFuZ2VNYXgiKSxNLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwibnYtcmFuZ2Ug
bnYtcmFuZ2VBdmciKSxNPQouYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJudi1yYW5nZSBu
di1yYW5nZU1pbiIpLE0uYXBwZW5kKCJyZWN0IikuYXR0cig9CiJjbGFzcyIsIm52LW1lYXN1cmUi
KSxNLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwibnYtbWFya2VyVHJpYW5nbGUiKSxBLj0K
YXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdC5sZWZ0KyIsIit0LnRvcCsiKSIpO3ZhciBE
PTNEZnVuY3Rpb24oZSl7cmV0PQp1cm4gTWF0aC5hYnMoTihlKS1OKDApKX0sUD0zRGZ1bmN0aW9u
KGUpe3JldHVybiBNYXRoLmFicyhUKGUpLVQoMCkpfSxIPTNEZnU9Cm5jdGlvbihlKXtyZXR1cm4g
ZTwwP04oZSk6TigwKX0sQj0zRGZ1bmN0aW9uKGUpe3JldHVybiBlPDA/VChlKTpUKDApfTtfLnNl
bD0KZWN0KCJyZWN0Lm52LXJhbmdlTWF4IikuYXR0cigiaGVpZ2h0IixtKS5hdHRyKCJ3aWR0aCIs
UChrPjA/azpDKSkuYXR0cigieCIsPQpCKGs+MD9rOkMpKS5kYXR1bShrPjA/azpDKSxfLnNlbGVj
dCgicmVjdC5udi1yYW5nZUF2ZyIpLmF0dHIoImhlaWdodCIsbSkuYXQ9CnRyKCJ3aWR0aCIsUChM
KSkuYXR0cigieCIsQihMKSkuZGF0dW0oTCksXy5zZWxlY3QoInJlY3QubnYtcmFuZ2VNaW4iKS5h
dHRyKD0KImhlaWdodCIsbSkuYXR0cigid2lkdGgiLFAoaykpLmF0dHIoIngiLEIoaykpLmF0dHIo
IndpZHRoIixQKGs+MD9DOmspKS5hdHRyPQooIngiLEIoaz4wP0M6aykpLmRhdHVtKGs+MD9DOmsp
LF8uc2VsZWN0KCJyZWN0Lm52LW1lYXN1cmUiKS5zdHlsZSgiZmlsbCIsZCk9Ci5hdHRyKCJoZWln
aHQiLG0vMykuYXR0cigieSIsbS8zKS5hdHRyKCJ3aWR0aCIsdzwwP1QoMCktVCh3WzBdKTpUKHdb
MF0pLVQoMD0KKSkuYXR0cigieCIsQih3KSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oKXt2LmVs
ZW1lbnRNb3VzZW92ZXIoe3ZhbHVlOndbMF0sPQpsYWJlbDp4WzBdfHwiQ3VycmVudCIscG9zOltU
KHdbMF0pLG0vMl19KX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oKXt2LmVsZW09CmVudE1vdXNl
b3V0KHt2YWx1ZTp3WzBdLGxhYmVsOnhbMF18fCJDdXJyZW50In0pfSk7dmFyIGo9M0RtLzY7Ylsw
XT9fLnNlbGVjdD0KQWxsKCJwYXRoLm52LW1hcmtlclRyaWFuZ2xlIikuYXR0cigidHJhbnNmb3Jt
IixmdW5jdGlvbihlKXtyZXR1cm4idHJhbnNsYXRlPQooIitUKGJbMF0pKyIsIittLzIrIikifSku
YXR0cigiZCIsIk0wLCIraisiTCIraisiLCIrIC1qKyIgIisgLWorIiwiKyAtaisiWiI9Cikub24o
Im1vdXNlb3ZlciIsZnVuY3Rpb24oKXt2LmVsZW1lbnRNb3VzZW92ZXIoe3ZhbHVlOmJbMF0sbGFi
ZWw6U1swXXx8IlByZT0KdmlvdXMiLHBvczpbVChiWzBdKSxtLzJdfSl9KS5vbigibW91c2VvdXQi
LGZ1bmN0aW9uKCl7di5lbGVtZW50TW91c2VvdXQoe3ZhPQpsdWU6YlswXSxsYWJlbDpTWzBdfHwi
UHJldmlvdXMifSl9KTpfLnNlbGVjdEFsbCgicGF0aC5udi1tYXJrZXJUcmlhbmdsZSIpLnI9CmVt
b3ZlKCksQS5zZWxlY3RBbGwoIi5udi1yYW5nZSIpLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKGUs
dCl7dmFyIG49M0RFW3RdfD0KfCh0P3Q9M0Q9M0QxPyJNZWFuIjoiTWluaW11bSI6Ik1heGltdW0i
KTt2LmVsZW1lbnRNb3VzZW92ZXIoe3ZhbHVlOmUsbGFiZWw6PQpuLHBvczpbVChlKSxtLzJdfSl9
KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKGUsdCl7dmFyIG49M0RFW3RdfHwodD90PTNEPTNEMT89
CiJNZWFuIjoiTWluaW11bSI6Ik1heGltdW0iKTt2LmVsZW1lbnRNb3VzZW91dCh7dmFsdWU6ZSxs
YWJlbDpufSl9KX0pLG19dmFyID0KdD0zRHt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0s
bj0zRCJsZWZ0IixyPTNEITEsaT0zRGZ1bmN0aW9uKGUpe3JldHVyPQpuIGUucmFuZ2VzfSxzPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGUubWFya2Vyc30sbz0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLm1l
YXM9CnVyZXN9LHU9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5yYW5nZUxhYmVscz9lLnJhbmdlTGFi
ZWxzOltdfSxhPTNEZnVuY3Rpb24oZT0KKXtyZXR1cm4gZS5tYXJrZXJMYWJlbHM/ZS5tYXJrZXJM
YWJlbHM6W119LGY9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5tZWFzdXJlPQpMYWJlbHM/ZS5tZWFz
dXJlTGFiZWxzOltdfSxsPTNEWzBdLGM9M0QzODAsaD0zRDMwLHA9M0RudWxsLGQ9M0RlLnV0aWxz
LmdldEM9Cm9sb3IoWyIjMWY3N2I0Il0pLHY9M0RkMy5kaXNwYXRjaCgiZWxlbWVudE1vdXNlb3Zl
ciIsImVsZW1lbnRNb3VzZW91dCIpO3JldD0KdXJuIG0uZGlzcGF0Y2g9M0R2LG0ub3B0aW9ucz0z
RGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChtKSxtLm9yaWVudD0zRGZ1bmN0PQppb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49M0RlLHI9M0RuPTNEPTNEInJpZ2h0Inx8bj0zRD0zRCJi
b3R0b20iLG09Cik6bn0sbS5yYW5nZXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oaT0zRGUsbSk6aX0sbS5tYXJrZXJzPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8ocz0zRGUsbSk6c30sbS5tZWFzdXJlcz0zRGZ1bmN0aW9uKGU9Cil7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KG89M0RlLG0pOm99LG0uZm9yY2VYPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZT0KbnRzLmxlbmd0aD8obD0zRGUsbSk6bH0sbS53aWR0aD0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEPQplLG0pOmN9LG0uaGVpZ2h0PTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLG0pOmh9LG0ubWFyZ2k9Cm49M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC50b3A9M0R0eXBlb2YgZS50b3Ah
PTNEInVuZGVmaW5lZD0KIj9lLnRvcDp0LnRvcCx0LnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNE
InVuZGVmaW5lZCI/ZS5yaWdodDp0LnJpZ2h0LHQuYm90PQp0b209M0R0eXBlb2YgZS5ib3R0b20h
PTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dC5ib3R0b20sdC5sZWZ0PTNEdHlwZW9mIGUubGU9CmZ0
IT0zRCJ1bmRlZmluZWQiP2UubGVmdDp0LmxlZnQsbSk6dH0sbS50aWNrRm9ybWF0PTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZz0KdW1lbnRzLmxlbmd0aD8ocD0zRGUsbSk6cH0sbS5jb2xvcj0zRGZ1
bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPQo9M0RlLnV0aWxzLmdldENvbG9y
KHQpLG0pOmR9LG19LGUubW9kZWxzLmJ1bGxldENoYXJ0PTNEZnVuY3Rpb24oKXtmdW5jdGlvbiA9
Cm0oZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihuLGgpe3ZhciBnPTNEZDMuc2VsZWN0KHRoaXMp
LHk9M0QoYXx8cGFyc2VJbnQoZz0KLnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS1pLmxlZnQtaS5yaWdo
dCxiPTNEZi1pLnRvcC1pLmJvdHRvbSx3PTNEdGhpczttLnVwZGF0PQplPTNEZnVuY3Rpb24oKXtt
KGUpfSxtLmNvbnRhaW5lcj0zRHRoaXM7aWYoIW58fCFzLmNhbGwodGhpcyxuLGgpKXt2YXIgRT0z
RGc9Ci5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFtwXSk7cmV0dXJuIEUuZW50ZXIoKS5h
cHBlbmQoInRleHQiKS5hdHRyKCJjbD0KYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIs
Ii0uN2VtIikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiksRS5hPQp0dHIoIngiLGkubGVm
dCt5LzIpLmF0dHIoInkiLDE4K2kudG9wK2IvMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0p
LG19Zy49CnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbW92ZSgpO3ZhciBTPTNEcy5jYWxsKHRo
aXMsbixoKS5zbGljZSgpLnNvcnQoZDMuZD0KZXNjZW5kaW5nKSx4PTNEby5jYWxsKHRoaXMsbixo
KS5zbGljZSgpLnNvcnQoZDMuZGVzY2VuZGluZyksVD0zRHUuY2FsbCh0aGlzPQosbixoKS5zbGlj
ZSgpLnNvcnQoZDMuZGVzY2VuZGluZyksTj0zRGcuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtYnVs
bGV0Q2hhcnQ9CiIpLmRhdGEoW25dKSxDPTNETi5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNs
YXNzIiwibnZkMyBudi13cmFwIG52LWJ1bGxldD0KQ2hhcnQiKSxrPTNEQy5hcHBlbmQoImciKSxM
PTNETi5zZWxlY3QoImciKTtrLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtPQpidWxsZXRX
cmFwIiksay5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXRpdGxlcyIpLE4uYXR0cigidHJh
bnNmb3JtIiwidHI9CmFuc2xhdGUoIitpLmxlZnQrIiwiK2kudG9wKyIpIik7dmFyIEE9M0RkMy5z
Y2FsZS5saW5lYXIoKS5kb21haW4oWzAsTWF0aC5tYT0KeChTWzBdLHhbMF0sVFswXSldKS5yYW5n
ZShyP1t5LDBdOlswLHldKSxPPTNEdGhpcy5fX2NoYXJ0X198fGQzLnNjYWxlLmxpbmVhPQpyKCku
ZG9tYWluKFswLEluZmluaXR5XSkucmFuZ2UoQS5yYW5nZSgpKTt0aGlzLl9fY2hhcnRfXz0zREE7
dmFyIE09M0RmdW5jdGk9Cm9uKGUpe3JldHVybiBNYXRoLmFicyhPKGUpLU8oMCkpfSxfPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIE1hdGguYWJzKEEoZSktQSgwKT0KKX0sRD0zRGsuc2VsZWN0KCIubnYt
dGl0bGVzIikuYXBwZW5kKCJnIikuYXR0cigidGV4dC1hbmNob3IiLCJlbmQiKS5hdHRyKCJ0PQpy
YW5zZm9ybSIsInRyYW5zbGF0ZSgtNiwiKyhmLWkudG9wLWkuYm90dG9tKS8yKyIpIik7RC5hcHBl
bmQoInRleHQiKS5hdHRyKCI9CmNsYXNzIiwibnYtdGl0bGUiKS50ZXh0KGZ1bmN0aW9uKGUpe3Jl
dHVybiBlLnRpdGxlfSksRC5hcHBlbmQoInRleHQiKS5hdHRyKD0KImNsYXNzIiwibnYtc3VidGl0
bGUiKS5hdHRyKCJkeSIsIjFlbSIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc3VidGl0bGV9
PQopLHQud2lkdGgoeSkuaGVpZ2h0KGIpO3ZhciBQPTNETC5zZWxlY3QoIi5udi1idWxsZXRXcmFw
Iik7ZDMudHJhbnNpdGlvbihQKS49CmNhbGwodCk7dmFyIEg9M0RsfHxBLnRpY2tGb3JtYXQoeS8x
MDApLEI9M0RMLnNlbGVjdEFsbCgiZy5udi10aWNrIikuZGF0YShBLj0KdGlja3MoeS81MCksZnVu
Y3Rpb24oZSl7cmV0dXJuIHRoaXMudGV4dENvbnRlbnR8fEgoZSl9KSxqPTNEQi5lbnRlcigpLmFw
cGVuPQpkKCJnIikuYXR0cigiY2xhc3MiLCJudi10aWNrIikuYXR0cigidHJhbnNmb3JtIixmdW5j
dGlvbihlKXtyZXR1cm4idHJhbnNsYXQ9CmUoIitPKGUpKyIsMCkifSkuc3R5bGUoIm9wYWNpdHki
LDFlLTYpO2ouYXBwZW5kKCJsaW5lIikuYXR0cigieTEiLGIpLmF0dHIoIj0KeTIiLGIqNy82KSxq
LmFwcGVuZCgidGV4dCIpLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikuYXR0cigiZHkiLCIx
ZW0iKS5hPQp0dHIoInkiLGIqNy82KS50ZXh0KEgpO3ZhciBGPTNEZDMudHJhbnNpdGlvbihCKS5h
dHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGU9Cil7cmV0dXJuInRyYW5zbGF0ZSgiK0EoZSkrIiww
KSJ9KS5zdHlsZSgib3BhY2l0eSIsMSk7Ri5zZWxlY3QoImxpbmUiKS5hdHRyKD0KInkxIixiKS5h
dHRyKCJ5MiIsYio3LzYpLEYuc2VsZWN0KCJ0ZXh0IikuYXR0cigieSIsYio3LzYpLGQzLnRyYW5z
aXRpb24oQi5lPQp4aXQoKSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlKXtyZXR1cm4idHJh
bnNsYXRlKCIrQShlKSsiLDApIn0pLnN0eWxlKCI9Cm9wYWNpdHkiLDFlLTYpLnJlbW92ZSgpLGQu
b24oInRvb2x0aXBTaG93IixmdW5jdGlvbihlKXtlLmtleT0zRG4udGl0bGUsYyYmdj0KKGUsdy5w
YXJlbnROb2RlKX0pfSksZDMudGltZXIuZmx1c2goKSxtfXZhciB0PTNEZS5tb2RlbHMuYnVsbGV0
KCksbj0zRCJsZWZ0PQoiLHI9M0QhMSxpPTNEe3RvcDo1LHJpZ2h0OjQwLGJvdHRvbToyMCxsZWZ0
OjEyMH0scz0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnI9CmFuZ2VzfSxvPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGUubWFya2Vyc30sdT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLm1lYXN1cmVzfT0KLGE9
M0RudWxsLGY9M0Q1NSxsPTNEbnVsbCxjPTNEITAsaD0zRGZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0
dXJuIjxoMz4iK3QrIjwvPQpoMz4iKyI8cD4iK24rIjwvcD4ifSxwPTNEIk5vIERhdGEgQXZhaWxh
YmxlLiIsZD0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyI9CiwidG9vbHRpcEhpZGUiKSx2PTNE
ZnVuY3Rpb24odCxuKXt2YXIgcj0zRHQucG9zWzBdKyhuLm9mZnNldExlZnR8fDApK2kubGVmdD0K
LHM9M0R0LnBvc1sxXSsobi5vZmZzZXRUb3B8fDApK2kudG9wLG89M0RoKHQua2V5LHQubGFiZWws
dC52YWx1ZSx0LG0pO2UudG9vPQpsdGlwLnNob3coW3Isc10sbyx0LnZhbHVlPDA/ImUiOiJ3Iixu
dWxsLG4pfTtyZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVudE09Cm91c2VvdmVyLnRvb2x0aXAi
LGZ1bmN0aW9uKGUpe2QudG9vbHRpcFNob3coZSl9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91
cz0KZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtkLnRvb2x0aXBIaWRlKGUpfSksZC5vbigidG9v
bHRpcEhpZGUiLGZ1bmN0aW9uKCl7PQpjJiZlLnRvb2x0aXAuY2xlYW51cCgpfSksbS5kaXNwYXRj
aD0zRGQsbS5idWxsZXQ9M0R0LGQzLnJlYmluZChtLHQsImNvbG9yIik9CixtLm9wdGlvbnM9M0Rl
LnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQobSksbS5vcmllbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndT0KbWVudHMubGVuZ3RoPyhuPTNEZSxyPTNEbj0zRD0zRCJyaWdodCJ8fG49M0Q9M0QiYm90
dG9tIixtKTpufSxtLnJhbmdlcz0zRGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHM9M0RlLG0pOnN9LG0ubWFya2Vycz0zRGZ1bmN0aW9uKGUpe3JldHU9CnJuIGFyZ3VtZW50
cy5sZW5ndGg/KG89M0RlLG0pOm99LG0ubWVhc3VyZXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLj0KbGVuZ3RoPyh1PTNEZSxtKTp1fSxtLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLG0pPQo6YX0sbS5oZWlnaHQ9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUsbSk6Zn0sbS5tYXJnaW49M0Q9CmZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpLnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5k
ZWZpbmVkIj9lLj0KdG9wOmkudG9wLGkucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZp
bmVkIj9lLnJpZ2h0OmkucmlnaHQsaS5ib3R0b209Cj0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5k
ZWZpbmVkIj9lLmJvdHRvbTppLmJvdHRvbSxpLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0KPTNEInVu
ZGVmaW5lZCI/ZS5sZWZ0OmkubGVmdCxtKTppfSxtLnRpY2tGb3JtYXQ9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lPQpudHMubGVuZ3RoPyhsPTNEZSxtKTpsfSxtLnRvb2x0aXBzPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9Cj0zRGUsbSk6Y30sbS50b29sdGlwQ29u
dGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxtKT0KOmh9
LG0ubm9EYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLG0p
OnB9LG19LGUubW9kZWxzPQouY3VtdWxhdGl2ZUxpbmVDaGFydD0zRGZ1bmN0aW9uKCl7ZnVuY3Rp
b24gRChiKXtyZXR1cm4gYi5lYWNoKGZ1bmN0aW9uKGIpe2Y9CnVuY3Rpb24gSShlLHQpe2QzLnNl
bGVjdChELmNvbnRhaW5lcikuc3R5bGUoImN1cnNvciIsImV3LXJlc2l6ZSIpfWZ1bmN0aW9uID0K
cShlLHQpe00ueD0zRGQzLmV2ZW50LngsTS5pPTNETWF0aC5yb3VuZChPLmludmVydChNLngpKSxu
dCgpfWZ1bmN0aW9uIFIoZSx0PQope2QzLnNlbGVjdChELmNvbnRhaW5lcikuc3R5bGUoImN1cnNv
ciIsImF1dG8iKSx4LmluZGV4PTNETS5pLGsuc3RhdGVDaGFuZ2U9Cih4KX1mdW5jdGlvbiBudCgp
e3R0LmRhdGEoW01dKTt2YXIgZT0zREQudHJhbnNpdGlvbkR1cmF0aW9uKCk7RC50cmFuc2l0aW9u
RD0KdXJhdGlvbigwKSxELnVwZGF0ZSgpLEQudHJhbnNpdGlvbkR1cmF0aW9uKGUpfXZhciBMPTNE
ZDMuc2VsZWN0KHRoaXMpLmNsYXNzPQplZCgibnYtY2hhcnQtIitTLCEwKSxBPTNEdGhpcyxIPTNE
KGZ8fHBhcnNlSW50KEwuc3R5bGUoIndpZHRoIikpfHw5NjApLXUubGU9CmZ0LXUucmlnaHQsQj0z
RChsfHxwYXJzZUludChMLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktdS50b3AtdS5ib3R0b207RC51
cGRhdD0KZT0zRGZ1bmN0aW9uKCl7TC5jYWxsKEQpfSxELmNvbnRhaW5lcj0zRHRoaXMseC5kaXNh
YmxlZD0zRGIubWFwKGZ1bmN0aW9uKGUpPQp7cmV0dXJuISFlLmRpc2FibGVkfSk7aWYoIVQpe3Zh
ciBqO1Q9M0R7fTtmb3IoaiBpbiB4KXhbal1pbnN0YW5jZW9mIEFycmF5P1Q9CltqXT0zRHhbal0u
c2xpY2UoMCk6VFtqXT0zRHhbal19dmFyIEY9M0RkMy5iZWhhdmlvci5kcmFnKCkub24oImRyYWdz
dGFydCIsST0KKS5vbigiZHJhZyIscSkub24oImRyYWdlbmQiLFIpO2lmKCFifHwhYi5sZW5ndGh8
fCFiLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1PQpybiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgp
e3ZhciBVPTNETC5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFtOXSk7cmU9CnR1cm4gVS5l
bnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRy
KCJkeSIsIi0uNz0KZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxVLmF0dHIoIngi
LHUubGVmdCtILzIpLmF0dHIoInkiLHUudG9wK0IvPQoyKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVy
biBlfSksRH1MLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbW92ZSgpLHc9M0R0Lng9ClNjYWxl
KCksRT0zRHQueVNjYWxlKCk7aWYoIXkpe3ZhciB6PTNEYi5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0
dXJuIWUuZGlzYWJsZT0KZH0pLm1hcChmdW5jdGlvbihlLG4pe3ZhciByPTNEZDMuZXh0ZW50KGUu
dmFsdWVzLHQueSgpKTtyZXR1cm4gclswXTwtMC45NSYmPQooclswXT0zRC0wLjk1KSxbKHJbMF0t
clsxXSkvKDErclsxXSksKHJbMV0tclswXSkvKDErclswXSldfSksVz0zRFtkMy5taW4oeiw9CmZ1
bmN0aW9uKGUpe3JldHVybiBlWzBdfSksZDMubWF4KHosZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV19
KV07dC55RG9tYWluKFcpfT0KZWxzZSB0LnlEb21haW4obnVsbCk7Ty5kb21haW4oWzAsYlswXS52
YWx1ZXMubGVuZ3RoLTFdKS5yYW5nZShbMCxIXSkuY2xhbXAoPQohMCk7dmFyIGI9M0RQKE0uaSxi
KSxYPTNEZz8ibm9uZSI6ImFsbCIsVj0zREwuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtY3VtdWw9
CmF0aXZlTGluZSIpLmRhdGEoW2JdKSwkPTNEVi5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNs
YXNzIiwibnZkMyBudi13cmFwID0KbnYtY3VtdWxhdGl2ZUxpbmUiKS5hcHBlbmQoImciKSxKPTNE
Vi5zZWxlY3QoImciKTskLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzPQoiLCJudi1pbnRlcmFjdGl2
ZSIpLCQuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14IG52LWF4aXMiKS5zdHlsZSgicG9p
bnQ9CmVyLWV2ZW50cyIsIm5vbmUiKSwkLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteSBu
di1heGlzIiksJC5hcHBlbmQoImciKT0KLmF0dHIoImNsYXNzIiwibnYtYmFja2dyb3VuZCIpLCQu
YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1saW5lc1dyYXAiKS5zPQp0eWxlKCJwb2ludGVy
LWV2ZW50cyIsWCksJC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWF2Z0xpbmVzV3JhcCIp
LnN0eWw9CmUoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpLCQuYXBwZW5kKCJnIikuYXR0cigiY2xh
c3MiLCJudi1sZWdlbmRXcmFwIiksJC5hcD0KcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtY29u
dHJvbHNXcmFwIiksYyYmKGkud2lkdGgoSCksSi5zZWxlY3QoIi5udi1sZWdlPQpuZFdyYXAiKS5k
YXR1bShiKS5jYWxsKGkpLHUudG9wIT0zRGkuaGVpZ2h0KCkmJih1LnRvcD0zRGkuaGVpZ2h0KCks
Qj0zRChsfHw9CnBhcnNlSW50KEwuc3R5bGUoImhlaWdodCIpKXx8NDAwKS11LnRvcC11LmJvdHRv
bSksSi5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIj0KKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xh
dGUoMCwiKyAtdS50b3ArIikiKSk7aWYobSl7dmFyIEs9M0Rbe2tleToiUmUtc2NhPQpsZSB5LWF4
aXMiLGRpc2FibGVkOiF5fV07cy53aWR0aCgxNDApLmNvbG9yKFsiIzQ0NCIsIiM0NDQiLCIjNDQ0
Il0pLnJpZ2h0QWw9CmlnbighMSkubWFyZ2luKHt0b3A6NSxyaWdodDowLGJvdHRvbTo1LGxlZnQ6
MjB9KSxKLnNlbGVjdCgiLm52LWNvbnRyb2xzV3JhcD0KIikuZGF0dW0oSykuYXR0cigidHJhbnNm
b3JtIiwidHJhbnNsYXRlKDAsIisgLXUudG9wKyIpIikuY2FsbChzKX1WLmF0dHIoInRyPQphbnNm
b3JtIiwidHJhbnNsYXRlKCIrdS5sZWZ0KyIsIit1LnRvcCsiKSIpLGQmJkouc2VsZWN0KCIubnYt
eS5udi1heGlzIikuYXQ9CnRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitIKyIsMCkiKTt2YXIg
UT0zRGIuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLj0KdGVtcERpc2FibGVkfSk7Vi5zZWxl
Y3QoIi50ZW1wRGlzYWJsZWQiKS5yZW1vdmUoKSxRLmxlbmd0aCYmVi5hcHBlbmQoInRleHQiPQop
LmF0dHIoImNsYXNzIiwidGVtcERpc2FibGVkIikuYXR0cigieCIsSC8yKS5hdHRyKCJ5IiwiLS43
MWVtIikuc3R5bGUoInRleHQ9Ci1hbmNob3IiLCJlbmQiKS50ZXh0KFEubWFwKGZ1bmN0aW9uKGUp
e3JldHVybiBlLmtleX0pLmpvaW4oIiwgIikrIiB2YWx1ZXMgYz0KYW5ub3QgYmUgY2FsY3VsYXRl
ZCBmb3IgdGhpcyB0aW1lIHBlcmlvZC4iKSxnJiYoby53aWR0aChIKS5oZWlnaHQoQikubWFyZ2lu
PQooe2xlZnQ6dS5sZWZ0LHRvcDp1LnRvcH0pLnN2Z0NvbnRhaW5lcihMKS54U2NhbGUodyksVi5z
ZWxlY3QoIi5udi1pbnRlcmFjdGk9CnZlIikuY2FsbChvKSksJC5zZWxlY3QoIi5udi1iYWNrZ3Jv
dW5kIikuYXBwZW5kKCJyZWN0IiksSi5zZWxlY3QoIi5udi1iYWNrZz0Kcm91bmQgcmVjdCIpLmF0
dHIoIndpZHRoIixIKS5hdHRyKCJoZWlnaHQiLEIpLHQueShmdW5jdGlvbihlKXtyZXR1cm4gZS5k
aXNwPQpsYXkueX0pLndpZHRoKEgpLmhlaWdodChCKS5jb2xvcihiLm1hcChmdW5jdGlvbihlLHQp
e3JldHVybiBlLmNvbG9yfHxhKGUsdCk9Cn0pLmZpbHRlcihmdW5jdGlvbihlLHQpe3JldHVybiFi
W3RdLmRpc2FibGVkJiYhYlt0XS50ZW1wRGlzYWJsZWR9KSk7dmFyIEc9Cj0zREouc2VsZWN0KCIu
bnYtbGluZXNXcmFwIikuZGF0dW0oYi5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJs
ZWQmJj0KIWUudGVtcERpc2FibGVkfSkpO0cuY2FsbCh0KSxiLmZvckVhY2goZnVuY3Rpb24oZSx0
KXtlLnNlcmllc0luZGV4PTNEdH0pO3ZhPQpyIFk9M0RiLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1
cm4hZS5kaXNhYmxlZCYmISFDKGUpfSksWj0zREouc2VsZWN0KCIubnYtYXY9CmdMaW5lc1dyYXAi
KS5zZWxlY3RBbGwoImxpbmUiKS5kYXRhKFksZnVuY3Rpb24oZSl7cmV0dXJuIGUua2V5fSksZXQ9
M0RmdW5jdD0KaW9uKGUpe3ZhciB0PTNERShDKGUpKTtyZXR1cm4gdDwwPzA6dD5CP0I6dH07Wi5l
bnRlcigpLmFwcGVuZCgibGluZSIpLnN0eWxlPQooInN0cm9rZS13aWR0aCIsMikuc3R5bGUoInN0
cm9rZS1kYXNoYXJyYXkiLCIxMCwxMCIpLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW89Cm4oZSxuKXty
ZXR1cm4gdC5jb2xvcigpKGUsZS5zZXJpZXNJbmRleCl9KS5hdHRyKCJ4MSIsMCkuYXR0cigieDIi
LEgpLmF0dHIoIj0KeTEiLGV0KS5hdHRyKCJ5MiIsZXQpLFouc3R5bGUoInN0cm9rZS1vcGFjaXR5
IixmdW5jdGlvbihlKXt2YXIgdD0zREUoQyhlKSk7PQpyZXR1cm4gdDwwfHx0PkI/MDoxfSkuYXR0
cigieDEiLDApLmF0dHIoIngyIixIKS5hdHRyKCJ5MSIsZXQpLmF0dHIoInkyIixldCk9CixaLmV4
aXQoKS5yZW1vdmUoKTt2YXIgdHQ9M0RHLnNlbGVjdEFsbCgiLm52LWluZGV4TGluZSIpLmRhdGEo
W01dKTt0dC5lbnRlcj0KKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJudi1pbmRleExp
bmUiKS5hdHRyKCJ3aWR0aCIsMykuYXR0cigieCIsLTIpPQouYXR0cigiZmlsbCIsInJlZCIpLmF0
dHIoImZpbGwtb3BhY2l0eSIsLjUpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLmM9CmFs
bChGKSx0dC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUpe3JldHVybiJ0cmFuc2xhdGUoIitP
KGUuaSkrIiwwKSJ9KS5hdD0KdHIoImhlaWdodCIsQiksaCYmKG4uc2NhbGUodykudGlja3MoTWF0
aC5taW4oYlswXS52YWx1ZXMubGVuZ3RoLEgvNzApKS50aWNrPQpTaXplKC1CLDApLEouc2VsZWN0
KCIubnYteC5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitFLnJhbmc9
CmUoKVswXSsiKSIpLGQzLnRyYW5zaXRpb24oSi5zZWxlY3QoIi5udi14Lm52LWF4aXMiKSkuY2Fs
bChuKSkscCYmKHIuc2NhbGUoRT0KKS50aWNrcyhCLzM2KS50aWNrU2l6ZSgtSCwwKSxkMy50cmFu
c2l0aW9uKEouc2VsZWN0KCIubnYteS5udi1heGlzIikpLmNhbGwoPQpyKSksSi5zZWxlY3QoIi5u
di1iYWNrZ3JvdW5kIHJlY3QiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7TS54PTNEZDMubW91c2Uo
dGg9CmlzKVswXSxNLmk9M0RNYXRoLnJvdW5kKE8uaW52ZXJ0KE0ueCkpLHguaW5kZXg9M0RNLmks
ay5zdGF0ZUNoYW5nZSh4KSxudCgpfT0KKSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50Q2xpY2siLGZ1
bmN0aW9uKGUpe00uaT0zRGUucG9pbnRJbmRleCxNLng9M0RPKE0uaSksPQp4LmluZGV4PTNETS5p
LGsuc3RhdGVDaGFuZ2UoeCksbnQoKX0pLHMuZGlzcGF0Y2gub24oImxlZ2VuZENsaWNrIixmdW5j
dGlvbig9CmUsdCl7ZS5kaXNhYmxlZD0zRCFlLmRpc2FibGVkLHk9M0QhZS5kaXNhYmxlZCx4LnJl
c2NhbGVZPTNEeSxrLnN0YXRlQ2hhbmdlKD0KeCksRC51cGRhdGUoKX0pLGkuZGlzcGF0Y2gub24o
InN0YXRlQ2hhbmdlIixmdW5jdGlvbihlKXt4LmRpc2FibGVkPTNEZS5kaXNhPQpibGVkLGsuc3Rh
dGVDaGFuZ2UoeCksRC51cGRhdGUoKX0pLG8uZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW1vdmUi
LGZ1bmN0aW89Cm4oaSl7dC5jbGVhckhpZ2hsaWdodHMoKTt2YXIgcyxmLGwsYz0zRFtdO2IuZmls
dGVyKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUucz0KZXJpZXNJbmRleD0zRHQsIWUuZGlzYWJsZWR9
KS5mb3JFYWNoKGZ1bmN0aW9uKG4scil7Zj0zRGUuaW50ZXJhY3RpdmVCaXNlY3QoPQpuLnZhbHVl
cyxpLnBvaW50WFZhbHVlLEQueCgpKSx0LmhpZ2hsaWdodFBvaW50KHIsZiwhMCk7dmFyIG89M0Ru
LnZhbHVlc1tmXTs9CmlmKHR5cGVvZiBvPTNEPTNEInVuZGVmaW5lZCIpcmV0dXJuO3R5cGVvZiBz
PTNEPTNEInVuZGVmaW5lZCImJihzPTNEbyksdHlwZT0Kb2YgbD0zRD0zRCJ1bmRlZmluZWQiJiYo
bD0zREQueFNjYWxlKCkoRC54KCkobyxmKSkpLGMucHVzaCh7a2V5Om4ua2V5LHZhbHVlPQo6RC55
KCkobyxmKSxjb2xvcjphKG4sbi5zZXJpZXNJbmRleCl9KX0pO2lmKGMubGVuZ3RoPjIpe3ZhciBo
PTNERC55U2NhbGUoKS49CmludmVydChpLm1vdXNlWSkscD0zRE1hdGguYWJzKEQueVNjYWxlKCku
ZG9tYWluKClbMF0tRC55U2NhbGUoKS5kb21haW4oKVsxXT0KKSxkPTNELjAzKnAsbT0zRGUubmVh
cmVzdFZhbHVlSW5kZXgoYy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWV9KSxoLGQpPQo7
bSE9M0Q9M0RudWxsJiYoY1ttXS5oaWdobGlnaHQ9M0QhMCl9dmFyIGc9M0RuLnRpY2tGb3JtYXQo
KShELngoKShzLGYpLGYpO289Ci50b29sdGlwLnBvc2l0aW9uKHtsZWZ0OmwrdS5sZWZ0LHRvcDpp
Lm1vdXNlWSt1LnRvcH0pLmNoYXJ0Q29udGFpbmVyKEEucGFyZT0KbnROb2RlKS5lbmFibGVkKHYp
LnZhbHVlRm9ybWF0dGVyKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIudGlja0Zvcm1hdCgpKGUpfSku
PQpkYXRhKHt2YWx1ZTpnLHNlcmllczpjfSkoKSxvLnJlbmRlckd1aWRlTGluZShsKX0pLG8uZGlz
cGF0Y2gub24oImVsZW1lbnRNb3U9CnNlb3V0IixmdW5jdGlvbihlKXtrLnRvb2x0aXBIaWRlKCks
dC5jbGVhckhpZ2hsaWdodHMoKX0pLGsub24oInRvb2x0aXBTaG93Ij0KLGZ1bmN0aW9uKGUpe3Ym
Jl8oZSxBLnBhcmVudE5vZGUpfSksay5vbigiY2hhbmdlU3RhdGUiLGZ1bmN0aW9uKGUpe3R5cGVv
ZiBlPQouZGlzYWJsZWQhPTNEInVuZGVmaW5lZCImJihiLmZvckVhY2goZnVuY3Rpb24odCxuKXt0
LmRpc2FibGVkPTNEZS5kaXNhYmxlZFs9Cm5dfSkseC5kaXNhYmxlZD0zRGUuZGlzYWJsZWQpLHR5
cGVvZiBlLmluZGV4IT0zRCJ1bmRlZmluZWQiJiYoTS5pPTNEZS5pbmRleD0KLE0ueD0zRE8oTS5p
KSx4LmluZGV4PTNEZS5pbmRleCx0dC5kYXRhKFtNXSkpLHR5cGVvZiBlLnJlc2NhbGVZIT0zRCJ1
bmRlZmluPQplZCImJih5PTNEZS5yZXNjYWxlWSksRC51cGRhdGUoKX0pfSksRH1mdW5jdGlvbiBQ
KGUsbil7cmV0dXJuIG4ubWFwKGZ1bmN0aW89Cm4obixyKXtpZighbi52YWx1ZXMpcmV0dXJuIG47
dmFyIGk9M0RuLnZhbHVlc1tlXTtpZihpPTNEPTNEbnVsbClyZXR1cm4gbjt2YT0KciBzPTNEdC55
KCkoaSxlKTtyZXR1cm4gczwtMC45NSYmIUE/KG4udGVtcERpc2FibGVkPTNEITAsbik6KG4udGVt
cERpc2FibGVkPQo9M0QhMSxuLnZhbHVlcz0zRG4udmFsdWVzLm1hcChmdW5jdGlvbihlLG4pe3Jl
dHVybiBlLmRpc3BsYXk9M0R7eToodC55KCkoZSw9Cm4pLXMpLygxK3MpfSxlfSksbil9KX12YXIg
dD0zRGUubW9kZWxzLmxpbmUoKSxuPTNEZS5tb2RlbHMuYXhpcygpLHI9M0RlLm1vZD0KZWxzLmF4
aXMoKSxpPTNEZS5tb2RlbHMubGVnZW5kKCkscz0zRGUubW9kZWxzLmxlZ2VuZCgpLG89M0RlLmlu
dGVyYWN0aXZlR3VpPQpkZWxpbmUoKSx1PTNEe3RvcDozMCxyaWdodDozMCxib3R0b206NTAsbGVm
dDo2MH0sYT0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCk9CixmPTNEbnVsbCxsPTNEbnVsbCxjPTNE
ITAsaD0zRCEwLHA9M0QhMCxkPTNEITEsdj0zRCEwLG09M0QhMCxnPTNEITEseT0zRCEwLD0KYj0z
RGZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIjxoMz4iK2UrIjwvaDM+IisiPHA+IituKyIgYXQg
Iit0KyI8L3A+In0sdyxFPQosUz0zRHQuaWQoKSx4PTNEe2luZGV4OjAscmVzY2FsZVk6eX0sVD0z
RG51bGwsTj0zRCJObyBEYXRhIEF2YWlsYWJsZS4iLEM9M0Q9CmZ1bmN0aW9uKGUpe3JldHVybiBl
LmF2ZXJhZ2V9LGs9M0RkMy5kaXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlkZSIsIj0K
c3RhdGVDaGFuZ2UiLCJjaGFuZ2VTdGF0ZSIpLEw9M0QwLEE9M0QhMTtuLm9yaWVudCgiYm90dG9t
IikudGlja1BhZGRpbmcoNyksPQpyLm9yaWVudChkPyJyaWdodCI6ImxlZnQiKSxzLnVwZGF0ZVN0
YXRlKCExKTt2YXIgTz0zRGQzLnNjYWxlLmxpbmVhcigpLE09M0Q9CntpOjAseDowfSxfPTNEZnVu
Y3Rpb24oaSxzKXt2YXIgbz0zRGkucG9zWzBdKyhzLm9mZnNldExlZnR8fDApLHU9M0RpLnBvc1sx
XT0KKyhzLm9mZnNldFRvcHx8MCksYT0zRG4udGlja0Zvcm1hdCgpKHQueCgpKGkucG9pbnQsaS5w
b2ludEluZGV4KSksZj0zRHIudGljPQprRm9ybWF0KCkodC55KCkoaS5wb2ludCxpLnBvaW50SW5k
ZXgpKSxsPTNEYihpLnNlcmllcy5rZXksYSxmLGksRCk7ZS50b29sdGk9CnAuc2hvdyhbbyx1XSxs
LG51bGwsbnVsbCxzKX07cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9v
bHRpcD0KIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXSt1LmxlZnQsZS5wb3NbMV0rdS50
b3BdLGsudG9vbHRpcFNob3coZSl9KSx0PQouZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50
b29sdGlwIixmdW5jdGlvbihlKXtrLnRvb2x0aXBIaWRlKGUpfSksay5vbig9CiJ0b29sdGlwSGlk
ZSIsZnVuY3Rpb24oKXt2JiZlLnRvb2x0aXAuY2xlYW51cCgpfSksRC5kaXNwYXRjaD0zRGssRC5s
aW5lcz0zRD0KdCxELmxlZ2VuZD0zRGksRC54QXhpcz0zRG4sRC55QXhpcz0zRHIsRC5pbnRlcmFj
dGl2ZUxheWVyPTNEbyxkMy5yZWJpbmQoRCx0PQosImRlZmluZWQiLCJpc0FyZWEiLCJ4IiwieSIs
InhTY2FsZSIsInlTY2FsZSIsInNpemUiLCJ4RG9tYWluIiwieURvbWFpbiIsIng9ClJhbmdlIiwi
eVJhbmdlIiwiZm9yY2VYIiwiZm9yY2VZIiwiaW50ZXJhY3RpdmUiLCJjbGlwRWRnZSIsImNsaXBW
b3Jvbm9pIiwidT0Kc2VWb3Jvbm9pIiwiaWQiKSxELm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNG
dW5jLmJpbmQoRCksRC5tYXJnaW49M0RmdW5jdGlvPQpuKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyh1LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDp1LnQ9Cm9wLHUu
cmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OnUucmlnaHQsdS5i
b3R0b209M0R0eXBlbz0KZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTp1LmJvdHRv
bSx1LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlPQpmaW5lZCI/ZS5sZWZ0OnUubGVmdCxE
KTp1fSxELndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9Cj0z
RGUsRCk6Zn0sRC5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
bD0zRGUsRCk6bH0sRC5jbz0KbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGE9M0RlLnV0aWxzLmdldENvbG9yKHQpLGkuY29sb3IoPQphKSxEKTphfSxELnJlc2NhbGVZ
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9M0RlLEQpOnl9LEQuc2g9
Cm93Q29udHJvbHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0zRGUs
RCk6bX0sRC51c2VJbnRlcmFjdD0KaXZlR3VpZGVsaW5lPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGc9M0RlLGU9M0Q9M0Q9M0QhMCYmKEQuPQppbnRlcmFjdGl2ZSghMSks
RC51c2VWb3Jvbm9pKCExKSksRCk6Z30sRC5zaG93TGVnZW5kPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGE9CnJndW1lbnRzLmxlbmd0aD8oYz0zRGUsRCk6Y30sRC5zaG93WEF4aXM9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbj0KZ3RoPyhoPTNEZSxEKTpofSxELnNob3dZQXhpcz0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxEPQopOnB9LEQucmlnaHRB
bGlnbllBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9M0RlLHIu
b3JpZW49CnQoZT8icmlnaHQiOiJsZWZ0IiksRCk6ZH0sRC50b29sdGlwcz0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPz0KKHY9M0RlLEQpOnZ9LEQudG9vbHRpcENvbnRlbnQ9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0zRGUsPQpEKTpifSxELnN0
YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHg9M0RlLEQpOnh9LEQu
ZGVmYXVsdFM9CnRhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oVD0z
RGUsRCk6VH0sRC5ub0RhdGE9M0RmdW5jdGlvbj0KKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhOPTNEZSxEKTpOfSxELmF2ZXJhZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJnPQp1bWVudHMu
bGVuZ3RoPyhDPTNEZSxEKTpDfSxELnRyYW5zaXRpb25EdXJhdGlvbj0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWU9Cm50cy5sZW5ndGg/KEw9M0RlLEQpOkx9LEQubm9FcnJvckNoZWNrPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndD0KaD8oQT0zRGUsRCk6QX0sRH0sZS5tb2Rl
bHMuZGlzY3JldGVCYXI9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIEUoZSl7cmV0dXJuIGUuPQplYWNo
KGZ1bmN0aW9uKGUpe3ZhciBpPTNEbi10LmxlZnQtdC5yaWdodCxFPTNEci10LnRvcC10LmJvdHRv
bSxTPTNEZDMuc2VsZWM9CnQodGhpcyk7ZS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7ZS52YWx1ZXMu
Zm9yRWFjaChmdW5jdGlvbihlKXtlLnNlcmllcz0zRHR9KT0KfSk7dmFyIFQ9M0RwJiZkP1tdOmUu
bWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1PQpy
bnt4OnUoZSx0KSx5OmEoZSx0KSx5MDplLnkwfX0pfSk7cy5kb21haW4ocHx8ZDMubWVyZ2UoVCku
bWFwKGZ1bmN0aW9uKGUpe3I9CmV0dXJuIGUueH0pKS5yYW5nZUJhbmRzKHZ8fFswLGldLC4xKSxv
LmRvbWFpbihkfHxkMy5leHRlbnQoZDMubWVyZ2UoVCkubWFwKD0KZnVuY3Rpb24oZSl7cmV0dXJu
IGUueX0pLmNvbmNhdChmKSkpLGM/by5yYW5nZShtfHxbRS0oby5kb21haW4oKVswXTwwPzEyOjAp
PQosby5kb21haW4oKVsxXT4wPzEyOjBdKTpvLnJhbmdlKG18fFtFLDBdKSxiPTNEYnx8cyx3PTNE
d3x8by5jb3B5KCkucmFuZ2UoW289CigwKSxvKDApXSk7dmFyIE49M0RTLnNlbGVjdEFsbCgiZy5u
di13cmFwLm52LWRpc2NyZXRlYmFyIikuZGF0YShbZV0pLEM9M0ROLj0KZW50ZXIoKS5hcHBlbmQo
ImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1kaXNjcmV0ZWJhciIpLGs9M0RDLmFw
cGVuPQpkKCJnIiksTD0zRE4uc2VsZWN0KCJnIik7ay5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIs
Im52LWdyb3VwcyIpLE4uYXR0cigidHI9CmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0LmxlZnQrIiwi
K3QudG9wKyIpIik7dmFyIEE9M0ROLnNlbGVjdCgiLm52LWdyb3VwcyIpLj0Kc2VsZWN0QWxsKCIu
bnYtZ3JvdXAiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlfSxmdW5jdGlvbihlKXtyZXR1cm4g
ZS5rZXl9PQopO0EuZW50ZXIoKS5hcHBlbmQoImciKS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDFl
LTYpLnN0eWxlKCJmaWxsLW9wYWNpdHkiLDE9CmUtNiksQS5leGl0KCkuc3R5bGUoInN0cm9rZS1v
cGFjaXR5IiwxZS02KS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwxZS02KS5yZW1vdj0KZSgpLEEuYXR0
cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIm52LWdyb3VwIG52LXNlcmllcy0iK3R9KS5j
bGFzc2VkKCJoPQpvdmVyIixmdW5jdGlvbihlKXtyZXR1cm4gZS5ob3Zlcn0pLEEuc3R5bGUoInN0
cm9rZS1vcGFjaXR5IiwxKS5zdHlsZSgiZmlsbC09Cm9wYWNpdHkiLC43NSk7dmFyIE89M0RBLnNl
bGVjdEFsbCgiZy5udi1iYXIiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbD0KdWVzfSk7
Ty5leGl0KCkucmVtb3ZlKCk7dmFyIE09M0RPLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigidHJh
bnNmb3JtIixmdW5jPQp0aW9uKGUsdCxuKXtyZXR1cm4idHJhbnNsYXRlKCIrKHModShlLHQpKStz
LnJhbmdlQmFuZCgpKi4wNSkrIiwgIitvKDApKyIpIn09Cikub24oIm1vdXNlb3ZlciIsZnVuY3Rp
b24odCxuKXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgiaG92ZXIiLCEwKSxnLmVsZW1lbj0KdE1v
dXNlb3Zlcih7dmFsdWU6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvczpbcyh1
KHQsbikpK3MucmFuZ2VCPQphbmQoKSoodC5zZXJpZXMrLjUpL2UubGVuZ3RoLG8oYSh0LG4pKV0s
cG9pbnRJbmRleDpuLHNlcmllc0luZGV4OnQuc2VyaWVzLGU9CjpkMy5ldmVudH0pfSkub24oIm1v
dXNlb3V0IixmdW5jdGlvbih0LG4pe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIsIT0K
MSksZy5lbGVtZW50TW91c2VvdXQoe3ZhbHVlOmEodCxuKSxwb2ludDp0LHNlcmllczplW3Quc2Vy
aWVzXSxwb2ludEluZGV4Om4sPQpzZXJpZXNJbmRleDp0LnNlcmllcyxlOmQzLmV2ZW50fSl9KS5v
bigiY2xpY2siLGZ1bmN0aW9uKHQsbil7Zy5lbGVtZW50Q2xpY2s9Cih7dmFsdWU6YSh0LG4pLHBv
aW50OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvczpbcyh1KHQsbikpK3MucmFuZ2VCYW5kKCkqKHQu
cz0KZXJpZXMrLjUpL2UubGVuZ3RoLG8oYSh0LG4pKV0scG9pbnRJbmRleDpuLHNlcmllc0luZGV4
OnQuc2VyaWVzLGU6ZDMuZXZlbnR9PQopLGQzLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfSkub24o
ImRibGNsaWNrIixmdW5jdGlvbih0LG4pe2cuZWxlbWVudERibENsaWM9Cmsoe3ZhbHVlOmEodCxu
KSxwb2ludDp0LHNlcmllczplW3Quc2VyaWVzXSxwb3M6W3ModSh0LG4pKStzLnJhbmdlQmFuZCgp
Kih0Lj0Kc2VyaWVzKy41KS9lLmxlbmd0aCxvKGEodCxuKSldLHBvaW50SW5kZXg6bixzZXJpZXNJ
bmRleDp0LnNlcmllcyxlOmQzLmV2ZW50PQp9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0p
O00uYXBwZW5kKCJyZWN0IikuYXR0cigiaGVpZ2h0IiwwKS5hdHRyKCJ3aWQ9CnRoIixzLnJhbmdl
QmFuZCgpKi45L2UubGVuZ3RoKSxjPyhNLmFwcGVuZCgidGV4dCIpLmF0dHIoInRleHQtYW5jaG9y
IiwibWlkZD0KbGUiKSxPLnNlbGVjdCgidGV4dCIpLnRleHQoZnVuY3Rpb24oZSx0KXtyZXR1cm4g
aChhKGUsdCkpfSkuYXR0cigieCIscy5yYW5nPQplQmFuZCgpKi45LzIpLmF0dHIoInkiLGZ1bmN0
aW9uKGUsdCl7cmV0dXJuIGEoZSx0KTwwP28oYShlLHQpKS1vKDApKzEyOi00fSk9Cik6Ty5zZWxl
Y3RBbGwoInRleHQiKS5yZW1vdmUoKSxPLmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVy
biBhKGUsdCk8MD0KPyJudi1iYXIgbmVnYXRpdmUiOiJudi1iYXIgcG9zaXRpdmUifSkuc3R5bGUo
ImZpbGwiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuPQpjb2xvcnx8bChlLHQpfSkuc3R5bGUoInN0
cm9rZSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8bChlLHQpfSkuc2VsZWM9CnQoInJl
Y3QiKS5hdHRyKCJjbGFzcyIseSkuYXR0cigid2lkdGgiLHMucmFuZ2VCYW5kKCkqLjkvZS5sZW5n
dGgpLE8uYXR0cigidD0KcmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7dmFyIG49M0RzKHUoZSx0KSkr
cy5yYW5nZUJhbmQoKSouMDUscj0zRGEoZSx0KTwwP28oPQowKTpvKDApLW8oYShlLHQpKTwxP28o
MCktMTpvKGEoZSx0KSk7cmV0dXJuInRyYW5zbGF0ZSgiK24rIiwgIityKyIpIn0pLnNlbGU9CmN0
KCJyZWN0IikuYXR0cigiaGVpZ2h0IixmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLm1heChNYXRo
LmFicyhvKGEoZSx0KSktbz0KKGQmJmRbMF18fDApKXx8MSl9KSxiPTNEcy5jb3B5KCksdz0zRG8u
Y29weSgpfSksRX12YXIgdD0zRHt0b3A6MCxyaWdodDowLGJvPQp0dG9tOjAsbGVmdDowfSxuPTNE
OTYwLHI9M0Q1MDAsaT0zRE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxZTQpLHM9M0RkMy5zY2E9
CmxlLm9yZGluYWwoKSxvPTNEZDMuc2NhbGUubGluZWFyKCksdT0zRGZ1bmN0aW9uKGUpe3JldHVy
biBlLnh9LGE9M0RmdW5jdGlvbj0KKGUpe3JldHVybiBlLnl9LGY9M0RbMF0sbD0zRGUudXRpbHMu
ZGVmYXVsdENvbG9yKCksYz0zRCExLGg9M0RkMy5mb3JtYXQoIiwuPQoyZiIpLHAsZCx2LG0sZz0z
RGQzLmRpc3BhdGNoKCJjaGFydENsaWNrIiwiZWxlbWVudENsaWNrIiwiZWxlbWVudERibENsaWNr
Iiw9CiJlbGVtZW50TW91c2VvdmVyIiwiZWxlbWVudE1vdXNlb3V0IikseT0zRCJkaXNjcmV0ZUJh
ciIsYix3O3JldHVybiBFLmRpc3BhdD0KY2g9M0RnLEUub3B0aW9ucz0zRGUudXRpbHMub3B0aW9u
c0Z1bmMuYmluZChFKSxFLng9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJnPQp1bWVudHMubGVuZ3Ro
Pyh1PTNEZSxFKTp1fSxFLnk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
YT0zRGU9CixFKTphfSxFLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyh0LnRvcD0zRHR5cGVvZiBlLnRvcD0KIT0zRCJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQu
cmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0PQo6dC5yaWdodCx0
LmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHRv
bSx0LmxlZnQ9Cj0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxF
KTp0fSxFLndpZHRoPTNEZnVuY3Rpb24oZSl7cj0KZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0z
RGUsRSk6bn0sRS5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzPQoubGVuZ3Ro
PyhyPTNEZSxFKTpyfSxFLnhTY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhzPTNEZSw9CkUpOnN9LEUueVNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KG89M0RlLEUpOm99LEUueERvbWFpbj0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHA9M0RlLEUpOnB9LEUueURvbWFpbj0zRGZ1bmN0aW9uKGUpPQp7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9M0RlLEUpOmR9LEUueFJhbmdlPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW49CnRzLmxlbmd0aD8odj0zRGUsRSk6dn0sRS55UmFuZ2U9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0zRD0KZSxFKTptfSxFLmZvcmNlWT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSxFKTpmfSxFLmNvbG9yPQo9
M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGUudXRpbHMuZ2V0Q29s
b3IodCksRSk6bH0sRS5pZD0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGk9M0RlLEUpOml9LEUuc2hvd1ZhbHVlcz0zRGZ1bmN0aW9uPQooZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGM9M0RlLEUpOmN9LEUudmFsdWVGb3JtYXQ9M0RmdW5jdGlvbihlKXtyZXR1cm49
CiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxFKTpofSxFLnJlY3RDbGFzcz0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubD0KZW5ndGg/KHk9M0RlLEUpOnl9LEV9LGUubW9kZWxzLmRpc2Ny
ZXRlQmFyQ2hhcnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIHcoZSl7PQpyZXR1cm4gZS5lYWNoKGZ1
bmN0aW9uKGUpe3ZhciB1PTNEZDMuc2VsZWN0KHRoaXMpLHA9M0R0aGlzLHk9M0Qoc3x8cGFyc2VJ
bnQ9Cih1LnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS1pLmxlZnQtaS5yaWdodCxFPTNEKG98fHBhcnNl
SW50KHUuc3R5bGUoImhlaWdodCIpKT0KfHw0MDApLWkudG9wLWkuYm90dG9tO3cudXBkYXRlPTNE
ZnVuY3Rpb24oKXtnLmJlZm9yZVVwZGF0ZSgpLHUuY2FsbCh3KX0sdy5jPQpvbnRhaW5lcj0zRHRo
aXM7aWYoIWV8fCFlLmxlbmd0aHx8IWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVl
cy5sZW49Cmd0aH0pLmxlbmd0aCl7dmFyIFM9M0R1LnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRh
dGEoW21dKTtyZXR1cm4gUy5lbnRlcigpLj0KYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJu
dmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4PQp0LWFuY2hvciIs
Im1pZGRsZSIpLFMuYXR0cigieCIsaS5sZWZ0K3kvMikuYXR0cigieSIsaS50b3ArRS8yKS50ZXh0
KGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGV9KSx3fXUuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVt
b3ZlKCksZD0zRHQueFNjYWxlKCksdj0zRHQueT0KU2NhbGUoKS5jbGFtcCghMCk7dmFyIFQ9M0R1
LnNlbGVjdEFsbCgiZy5udi13cmFwLm52LWRpc2NyZXRlQmFyV2l0aEF4ZXMiKS5kPQphdGEoW2Vd
KSxOPTNEVC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52
LWRpc2NyZXRlQmE9CnJXaXRoQXhlcyIpLmFwcGVuZCgiZyIpLEM9M0ROLmFwcGVuZCgiZGVmcyIp
LGs9M0RULnNlbGVjdCgiZyIpO04uYXBwZW5kKCJnIj0KKS5hdHRyKCJjbGFzcyIsIm52LXggbnYt
YXhpcyIpLE4uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKS5hPQpwcGVu
ZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtemVyb0xpbmUiKS5hcHBlbmQoImxpbmUiKSxOLmFwcGVu
ZCgiZyIpLmF0dHIoImM9Cmxhc3MiLCJudi1iYXJzV3JhcCIpLGsuYXR0cigidHJhbnNmb3JtIiwi
dHJhbnNsYXRlKCIraS5sZWZ0KyIsIitpLnRvcCsiKSIpLD0KbCYmay5zZWxlY3QoIi5udi15Lm52
LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit5KyIsMCkiKSx0LndpZHRoPQoo
eSkuaGVpZ2h0KEUpO3ZhciBMPTNEay5zZWxlY3QoIi5udi1iYXJzV3JhcCIpLmRhdHVtKGUuZmls
dGVyKGZ1bmN0aW9uKGUpe3I9CmV0dXJuIWUuZGlzYWJsZWR9KSk7TC5jYWxsKHQpLEMuYXBwZW5k
KCJjbGlwUGF0aCIpLmF0dHIoImlkIiwibnYteC1sYWJlbC1jbD0KaXAtIit0LmlkKCkpLmFwcGVu
ZCgicmVjdCIpLGsuc2VsZWN0KCIjbnYteC1sYWJlbC1jbGlwLSIrdC5pZCgpKyIgcmVjdCIpLmF0
PQp0cigid2lkdGgiLGQucmFuZ2VCYW5kKCkqKGM/MjoxKSkuYXR0cigiaGVpZ2h0IiwxNikuYXR0
cigieCIsLWQucmFuZ2VCYW5kKCk9Ci8oYz8xOjIpKTtpZihhKXtuLnNjYWxlKGQpLnRpY2tzKHkv
MTAwKS50aWNrU2l6ZSgtRSwwKSxrLnNlbGVjdCgiLm52LXgubnYtYT0KeGlzIikuYXR0cigidHJh
bnNmb3JtIiwidHJhbnNsYXRlKDAsIisodi5yYW5nZSgpWzBdKyh0LnNob3dWYWx1ZXMoKSYmdi5k
b21hPQppbigpWzBdPDA/MTY6MCkpKyIpIiksay5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5jYWxs
KG4pO3ZhciBBPTNEay5zZWxlY3QoIi49Cm52LXgubnYtYXhpcyIpLnNlbGVjdEFsbCgiZyIpO2Mm
JkEuc2VsZWN0QWxsKCJ0ZXh0IikuYXR0cigidHJhbnNmb3JtIixmdW5jdD0KaW9uKGUsdCxuKXty
ZXR1cm4idHJhbnNsYXRlKDAsIisobiUyPTNEPTNEMD8iNSI6IjE3IikrIikifSl9ZiYmKHIuc2Nh
bGUodikuPQp0aWNrcyhFLzM2KS50aWNrU2l6ZSgteSwwKSxrLnNlbGVjdCgiLm52LXkubnYtYXhp
cyIpLmNhbGwocikpLGsuc2VsZWN0KCIubnY9Ci16ZXJvTGluZSBsaW5lIikuYXR0cigieDEiLDAp
LmF0dHIoIngyIix5KS5hdHRyKCJ5MSIsdigwKSkuYXR0cigieTIiLHYoMCkpLD0KZy5vbigidG9v
bHRpcFNob3ciLGZ1bmN0aW9uKGUpe2gmJmIoZSxwLnBhcmVudE5vZGUpfSl9KSx3fXZhciB0PTNE
ZS5tb2RlbHMuPQpkaXNjcmV0ZUJhcigpLG49M0RlLm1vZGVscy5heGlzKCkscj0zRGUubW9kZWxz
LmF4aXMoKSxpPTNEe3RvcDoxNSxyaWdodDoxMCw9CmJvdHRvbTo1MCxsZWZ0OjYwfSxzPTNEbnVs
bCxvPTNEbnVsbCx1PTNEZS51dGlscy5nZXRDb2xvcigpLGE9M0QhMCxmPTNEITAsbD0KPTNEITEs
Yz0zRCExLGg9M0QhMCxwPTNEZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4iPGgzPiIrdCsiPC9o
Mz4iKyI8cD4iK24rPQoiPC9wPiJ9LGQsdixtPTNEIk5vIERhdGEgQXZhaWxhYmxlLiIsZz0zRGQz
LmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXA9CkhpZGUiLCJiZWZvcmVVcGRhdGUiKSx5
PTNEMDtuLm9yaWVudCgiYm90dG9tIikuaGlnaGxpZ2h0WmVybyghMSkuc2hvd01heE1pbj0KKCEx
KS50aWNrRm9ybWF0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksci5vcmllbnQobD8icmlnaHQiOiJs
ZWZ0IikudGlja0Zvcm1hPQp0KGQzLmZvcm1hdCgiLC4xZiIpKTt2YXIgYj0zRGZ1bmN0aW9uKGks
cyl7dmFyIG89M0RpLnBvc1swXSsocy5vZmZzZXRMZWZ0fHw9CjApLHU9M0RpLnBvc1sxXSsocy5v
ZmZzZXRUb3B8fDApLGE9M0RuLnRpY2tGb3JtYXQoKSh0LngoKShpLnBvaW50LGkucG9pbnRJbj0K
ZGV4KSksZj0zRHIudGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksbD0z
RHAoaS5zZXJpZXMua2V5LGEsPQpmLGksdyk7ZS50b29sdGlwLnNob3coW28sdV0sbCxpLnZhbHVl
PDA/Im4iOiJzIixudWxsLHMpfTtyZXR1cm4gdC5kaXNwYXRjaC49Cm9uKCJlbGVtZW50TW91c2Vv
dmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK2kubGVmdCxlLnBvc1sx
XT0KK2kudG9wXSxnLnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNl
b3V0LnRvb2x0aXAiLGZ1bmN0aW9uPQooZSl7Zy50b29sdGlwSGlkZShlKX0pLGcub24oInRvb2x0
aXBIaWRlIixmdW5jdGlvbigpe2gmJmUudG9vbHRpcC5jbGVhbnVwKCk9Cn0pLHcuZGlzcGF0Y2g9
M0RnLHcuZGlzY3JldGViYXI9M0R0LHcueEF4aXM9M0RuLHcueUF4aXM9M0RyLGQzLnJlYmluZCh3
LHQsIj0KeCIsInkiLCJ4RG9tYWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsImZvcmNl
WCIsImZvcmNlWSIsImlkIiwic2hvd1ZhPQpsdWVzIiwidmFsdWVGb3JtYXQiKSx3Lm9wdGlvbnM9
M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQodyksdy5tYXJnaW49M0RmdW49CmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhpLnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVk
Ij9lLnRvcD0KOmkudG9wLGkucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9l
LnJpZ2h0OmkucmlnaHQsaS5ib3R0b209M0R0PQp5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVk
Ij9lLmJvdHRvbTppLmJvdHRvbSxpLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCI9CnVuZGVmaW5l
ZCI/ZS5sZWZ0OmkubGVmdCx3KTppfSx3LndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndD0KaD8ocz0zRGUsdyk6c30sdy5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8obz0zRGUsdyk6b30sPQp3LmNvbG9yPTNEZnVuY3Rpb24obil7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RlLnV0aWxzLmdldENvbG9yKG4pLHQuY289Cmxvcih1
KSx3KTp1fSx3LnNob3dYQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhhPTNEZSx3KTphfT0KLHcuc2hvd1lBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGY9M0RlLHcpOmZ9LHcucmlnaHRBbGlnPQpuWUF4aXM9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGUsci5vcmllbnQoZT8icmlnaHQiOiJsZWY9CnQi
KSx3KTpsfSx3LnN0YWdnZXJMYWJlbHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oYz0zRGUsdyk6Yz0KfSx3LnRvb2x0aXBzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGg9M0RlLHcpOmh9LHcudG9vbHRpcENvPQpudGVudD0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSx3KTpwfSx3Lm5vRGF0YT0zRGZ1bmN0aW89
Cm4oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09M0RlLHcpOm19LHcudHJhbnNpdGlvbkR1
cmF0aW9uPTNEZnVuY3Rpb24oZT0KKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT0zRGUsdyk6
eX0sd30sZS5tb2RlbHMuZGlzdHJpYnV0aW9uPTNEZnVuY3Rpb24oPQope2Z1bmN0aW9uIGwoZSl7
cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXt2YXIgYT0zRG4tKGk9M0Q9M0Q9M0QieCI/dC5sZWZ0
K3Q9Ci5yaWdodDp0LnRvcCt0LmJvdHRvbSksbD0zRGk9M0Q9M0QieCI/InkiOiJ4IixjPTNEZDMu
c2VsZWN0KHRoaXMpO2Y9M0RmfHx1Oz0KdmFyIGg9M0RjLnNlbGVjdEFsbCgiZy5udi1kaXN0cmli
dXRpb24iKS5kYXRhKFtlXSkscD0zRGguZW50ZXIoKS5hcHBlbmQoImciPQopLmF0dHIoImNsYXNz
IiwibnZkMyBudi1kaXN0cmlidXRpb24iKSxkPTNEcC5hcHBlbmQoImciKSx2PTNEaC5zZWxlY3Qo
ImciKTs9CmguYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdC5sZWZ0KyIsIit0LnRvcCsi
KSIpO3ZhciBtPTNEdi5zZWxlY3RBbGwoIj0KZy5udi1kaXN0IikuZGF0YShmdW5jdGlvbihlKXty
ZXR1cm4gZX0sZnVuY3Rpb24oZSl7cmV0dXJuIGUua2V5fSk7bS5lbnRlcigpPQouYXBwZW5kKCJn
IiksbS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4ibnYtZGlzdCBudi1zZXJpZXMt
Iit0fSkuc3Q9CnlsZSgic3Ryb2tlIixmdW5jdGlvbihlLHQpe3JldHVybiBvKGUsdCl9KTt2YXIg
Zz0zRG0uc2VsZWN0QWxsKCJsaW5lLm52LWRpcz0KdCIraSkuZGF0YShmdW5jdGlvbihlKXtyZXR1
cm4gZS52YWx1ZXN9KTtnLmVudGVyKCkuYXBwZW5kKCJsaW5lIikuYXR0cihpKyIxPQoiLGZ1bmN0
aW9uKGUsdCl7cmV0dXJuIGYocyhlLHQpKX0pLmF0dHIoaSsiMiIsZnVuY3Rpb24oZSx0KXtyZXR1
cm4gZihzKGUsdCk9Cil9KSxtLmV4aXQoKS5zZWxlY3RBbGwoImxpbmUubnYtZGlzdCIraSkuYXR0
cihpKyIxIixmdW5jdGlvbihlLHQpe3JldHVybiB1KD0KcyhlLHQpKX0pLmF0dHIoaSsiMiIsZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gdShzKGUsdCkpfSkuc3R5bGUoInN0cm9rZS1vcGFjaXR5PQoiLDAp
LnJlbW92ZSgpLGcuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIm52LWRpc3QiK2kr
IiBudi1kaXN0IitpKyI9Ci0iK3R9KS5hdHRyKGwrIjEiLDApLmF0dHIobCsiMiIsciksZy5hdHRy
KGkrIjEiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHUocyhlLD0KdCkpfSkuYXR0cihpKyIyIixmdW5j
dGlvbihlLHQpe3JldHVybiB1KHMoZSx0KSl9KSxmPTNEdS5jb3B5KCl9KSxsfXZhciB0PTNEPQp7
dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9LG49M0Q0MDAscj0zRDgsaT0zRCJ4IixzPTNE
ZnVuY3Rpb24oZSl7cmV0dXI9Cm4gZVtpXX0sbz0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCksdT0z
RGQzLnNjYWxlLmxpbmVhcigpLGEsZjtyZXR1cm4gbC5vcHRpbz0KbnM9M0RlLnV0aWxzLm9wdGlv
bnNGdW5jLmJpbmQobCksbC5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
PQpuZ3RoPyh0LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDp0LnRvcCx0
LnJpZ2h0PTNEdHlwZW9mIGUucmk9CmdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OnQucmlnaHQs
dC5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZD0KIj9lLmJvdHRvbTp0LmJv
dHRvbSx0LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDp0LmxlZnQs
bCk6PQp0fSxsLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49
M0RlLGwpOm59LGwuYXhpcz0zRGZ1bmM9CnRpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGk9M0RlLGwpOml9LGwuc2l6ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcj0KZ3VtZW50cy5sZW5n
dGg/KHI9M0RlLGwpOnJ9LGwuZ2V0RGF0YT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPQo/KHM9M0RkMy5mdW5jdG9yKGUpLGwpOnN9LGwuc2NhbGU9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0KPTNEZSxsKTp1fSxsLmNvbG9yPTNEZnVuY3Rpb24o
dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RlLnV0aWxzLmdldENvPQpsb3IodCksbCk6
b30sbH0sZS5tb2RlbHMuaGlzdG9yaWNhbEJhckNoYXJ0PTNEZnVuY3Rpb24oKXtmdW5jdGlvbiB4
KGUpe3JldHU9CnJuIGUuZWFjaChmdW5jdGlvbihkKXt2YXIgRT0zRGQzLnNlbGVjdCh0aGlzKSxU
PTNEdGhpcyxOPTNEKHV8fHBhcnNlSW50KEUucz0KdHlsZSgid2lkdGgiKSl8fDk2MCktcy5sZWZ0
LXMucmlnaHQsQz0zRChhfHxwYXJzZUludChFLnN0eWxlKCJoZWlnaHQiKSl8fDQwPQowKS1zLnRv
cC1zLmJvdHRvbTt4LnVwZGF0ZT0zRGZ1bmN0aW9uKCl7RS5jYWxsKHgpfSx4LmNvbnRhaW5lcj0z
RHRoaXMsZy5kaXM9CmFibGVkPTNEZC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVk
fSk7aWYoIXkpe3ZhciBrO3k9M0R7fTtmb3IoayBpbj0KIGcpZ1trXWluc3RhbmNlb2YgQXJyYXk/
eVtrXT0zRGdba10uc2xpY2UoMCk6eVtrXT0zRGdba119aWYoIWR8fCFkLmxlbmd0aHx8PQohZC5m
aWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLmxlbmd0aH0pLmxlbmd0aCl7dmFyIEw9
M0RFLnNlbGVjdEFsbCg9CiIubnYtbm9EYXRhIikuZGF0YShbYl0pO3JldHVybiBMLmVudGVyKCku
YXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzID0KbnYtbm9EYXRhIikuYXR0cigiZHki
LCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLEwuYXR0cigieCIscy5sPQpl
ZnQrTi8yKS5hdHRyKCJ5IixzLnRvcCtDLzIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSx4
fUUuc2VsZWN0QWxsKCIubnY9Ci1ub0RhdGEiKS5yZW1vdmUoKSx2PTNEdC54U2NhbGUoKSxtPTNE
dC55U2NhbGUoKTt2YXIgQT0zREUuc2VsZWN0QWxsKCJnLm52LT0Kd3JhcC5udi1oaXN0b3JpY2Fs
QmFyQ2hhcnQiKS5kYXRhKFtkXSksTz0zREEuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFz
PQpzIiwibnZkMyBudi13cmFwIG52LWhpc3RvcmljYWxCYXJDaGFydCIpLmFwcGVuZCgiZyIpLE09
M0RBLnNlbGVjdCgiZyIpO08uYXA9CnBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhp
cyIpLE8uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15IG52LT0KYXhpcyIpLE8uYXBwZW5k
KCJnIikuYXR0cigiY2xhc3MiLCJudi1iYXJzV3JhcCIpLE8uYXBwZW5kKCJnIikuYXR0cigiY2xh
c3MiPQosIm52LWxlZ2VuZFdyYXAiKSxmJiYoaS53aWR0aChOKSxNLnNlbGVjdCgiLm52LWxlZ2Vu
ZFdyYXAiKS5kYXR1bShkKS5jYWxsKGk9Cikscy50b3AhPTNEaS5oZWlnaHQoKSYmKHMudG9wPTNE
aS5oZWlnaHQoKSxDPTNEKGF8fHBhcnNlSW50KEUuc3R5bGUoImhlaWdodD0KIikpfHw0MDApLXMu
dG9wLXMuYm90dG9tKSxBLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0i
LCJ0cmFuPQpzbGF0ZSgwLCIrIC1zLnRvcCsiKSIpKSxBLmF0dHIoInRyYW5zZm9ybSIsInRyYW5z
bGF0ZSgiK3MubGVmdCsiLCIrcy50b3ArIik9CiIpLGgmJk0uc2VsZWN0KCIubnYteS5udi1heGlz
IikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrTisiLDApIiksdC53aT0KZHRoKE4pLmhl
aWdodChDKS5jb2xvcihkLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxvKGUsdCl9
KS5maWx0ZXIoPQpmdW5jdGlvbihlLHQpe3JldHVybiFkW3RdLmRpc2FibGVkfSkpO3ZhciBfPTNE
TS5zZWxlY3QoIi5udi1iYXJzV3JhcCIpLmRhdHU9Cm0oZC5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0
dXJuIWUuZGlzYWJsZWR9KSk7Xy5jYWxsKHQpLGwmJihuLnNjYWxlKHYpLnRpY2tTaT0KemUoLUMs
MCksTS5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUo
MCwiK20ucmFuZ2UoPQopWzBdKyIpIiksTS5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5jYWxsKG4p
KSxjJiYoci5zY2FsZShtKS50aWNrcyhDLzM2KS50aWM9CmtTaXplKC1OLDApLE0uc2VsZWN0KCIu
bnYteS5udi1heGlzIikuY2FsbChyKSksaS5kaXNwYXRjaC5vbigibGVnZW5kQ2xpY2siLD0KZnVu
Y3Rpb24odCxuKXt0LmRpc2FibGVkPTNEIXQuZGlzYWJsZWQsZC5maWx0ZXIoZnVuY3Rpb24oZSl7
cmV0dXJuIWUuZGlzYWJsPQplZH0pLmxlbmd0aHx8ZC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUu
ZGlzYWJsZWQ9M0QhMSxBLnNlbGVjdEFsbCgiLm52LXNlcmk9CmVzIikuY2xhc3NlZCgiZGlzYWJs
ZWQiLCExKSxlfSksZy5kaXNhYmxlZD0zRGQubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5kaT0K
c2FibGVkfSksdy5zdGF0ZUNoYW5nZShnKSxlLmNhbGwoeCl9KSxpLmRpc3BhdGNoLm9uKCJsZWdl
bmREYmxjbGljayIsZnVuY3RpPQpvbihlKXtkLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5kaXNhYmxl
ZD0zRCEwfSksZS5kaXNhYmxlZD0zRCExLGcuZGlzYWJsZWQ9M0Q9CmQubWFwKGZ1bmN0aW9uKGUp
e3JldHVybiEhZS5kaXNhYmxlZH0pLHcuc3RhdGVDaGFuZ2UoZykseC51cGRhdGUoKX0pLHcub24o
Ij0KdG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe3AmJlMoZSxULnBhcmVudE5vZGUpfSksdy5vbigi
Y2hhbmdlU3RhdGUiLGZ1bmN0aW9uPQooZSl7dHlwZW9mIGUuZGlzYWJsZWQhPTNEInVuZGVmaW5l
ZCImJihkLmZvckVhY2goZnVuY3Rpb24odCxuKXt0LmRpc2FibGVkPQo9M0RlLmRpc2FibGVkW25d
fSksZy5kaXNhYmxlZD0zRGUuZGlzYWJsZWQpLHgudXBkYXRlKCl9KX0pLHh9dmFyIHQ9M0RlLm1v
ZGU9CmxzLmhpc3RvcmljYWxCYXIoKSxuPTNEZS5tb2RlbHMuYXhpcygpLHI9M0RlLm1vZGVscy5h
eGlzKCksaT0zRGUubW9kZWxzLmxlZz0KZW5kKCkscz0zRHt0b3A6MzAscmlnaHQ6OTAsYm90dG9t
OjUwLGxlZnQ6OTB9LG89M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLHU9Cj0zRG51bGwsYT0zRG51
bGwsZj0zRCExLGw9M0QhMCxjPTNEITAsaD0zRCExLHA9M0QhMCxkPTNEZnVuY3Rpb24oZSx0LG4s
cixpKT0Ke3JldHVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIrbisiIGF0ICIrdCsiPC9wPiJ9LHYs
bSxnPTNEe30seT0zRG51bGwsYj0zRCJOPQpvIERhdGEgQXZhaWxhYmxlLiIsdz0zRGQzLmRpc3Bh
dGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdGVDaGFuZ2U9CiIsImNoYW5nZVN0
YXRlIiksRT0zRDA7bi5vcmllbnQoImJvdHRvbSIpLnRpY2tQYWRkaW5nKDcpLHIub3JpZW50KGg/
InJpZ2h0Ij0KOiJsZWZ0Iik7dmFyIFM9M0RmdW5jdGlvbihpLHMpe2lmKHMpe3ZhciBvPTNEZDMu
c2VsZWN0KHMpLnNlbGVjdCgic3ZnIiksdT0KPTNEby5ub2RlKCk/by5hdHRyKCJ2aWV3Qm94Iik6
bnVsbDtpZih1KXt1PTNEdS5zcGxpdCgiICIpO3ZhciBhPTNEcGFyc2VJbnQoPQpvLnN0eWxlKCJ3
aWR0aCIpKS91WzJdO2kucG9zWzBdPTNEaS5wb3NbMF0qYSxpLnBvc1sxXT0zRGkucG9zWzFdKmF9
fXZhciBmPQo9M0RpLnBvc1swXSsocy5vZmZzZXRMZWZ0fHwwKSxsPTNEaS5wb3NbMV0rKHMub2Zm
c2V0VG9wfHwwKSxjPTNEbi50aWNrRm9ybWE9CnQoKSh0LngoKShpLnBvaW50LGkucG9pbnRJbmRl
eCkpLGg9M0RyLnRpY2tGb3JtYXQoKSh0LnkoKShpLnBvaW50LGkucG9pbnRJbj0KZGV4KSkscD0z
RGQoaS5zZXJpZXMua2V5LGMsaCxpLHgpO2UudG9vbHRpcC5zaG93KFtmLGxdLHAsbnVsbCxudWxs
LHMpfTtyZXR1PQpybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1
bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK3M9Ci5sZWZ0LGUucG9zWzFdK3MudG9wXSx3LnRv
b2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvbz0KbHRpcCIs
ZnVuY3Rpb24oZSl7dy50b29sdGlwSGlkZShlKX0pLHcub24oInRvb2x0aXBIaWRlIixmdW5jdGlv
bigpe3AmJmUudG9vPQpsdGlwLmNsZWFudXAoKX0pLHguZGlzcGF0Y2g9M0R3LHguYmFycz0zRHQs
eC5sZWdlbmQ9M0RpLHgueEF4aXM9M0RuLHgueUF4aXM9Cj0zRHIsZDMucmViaW5kKHgsdCwiZGVm
aW5lZCIsImlzQXJlYSIsIngiLCJ5Iiwic2l6ZSIsInhTY2FsZSIsInlTY2FsZSIsInhEbz0KbWFp
biIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJmb3JjZVgiLCJmb3JjZVkiLCJpbnRlcmFj
dGl2ZSIsImNsaXBFZGdlPQoiLCJjbGlwVm9yb25vaSIsImlkIiwiaW50ZXJwb2xhdGUiLCJoaWdo
bGlnaHRQb2ludCIsImNsZWFySGlnaGxpZ2h0cyIsImludGU9CnJhY3RpdmUiKSx4Lm9wdGlvbnM9
M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoeCkseC5tYXJnaW49M0RmdW5jdGlvbihlKXtyZT0K
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhzLnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVk
Ij9lLnRvcDpzLnRvcCxzLnJpPQpnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9l
LnJpZ2h0OnMucmlnaHQscy5ib3R0b209M0R0eXBlb2YgZS5ib3Q9CnRvbSE9M0QidW5kZWZpbmVk
Ij9lLmJvdHRvbTpzLmJvdHRvbSxzLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQi
Pz0KZS5sZWZ0OnMubGVmdCx4KTpzfSx4LndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHU9M0RlLHgpPQo6dX0seC5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oYT0zRGUseCk6YX0seC5jb2xvcj0zRGY9CnVuY3Rpb24odCl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RlLnV0aWxzLmdldENvbG9yKHQpLGkuY29sb3Iobyks
eCk6bz0KfSx4LnNob3dMZWdlbmQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oZj0zRGUseCk6Zn0seC5zaG93WEF4PQppcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhsPTNEZSx4KTpsfSx4LnNob3dZQXhpcz0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLHgpOmN9LHgucmlnaHRBbGlnbllBeGlzPTNEZnVuY3Rp
b24oZSl7cj0KZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsci5vcmllbnQoZT8icmlnaHQi
OiJsZWZ0IikseCk6aH0seC50b29sdGlwcz0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KHA9M0RlLHgpOnB9LHgudG9vbHRpcENvbnRlbnQ9M0RmdW5jPQp0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSx4KTpkfSx4LnN0YXRlPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGE9CnJndW1lbnRzLmxlbmd0aD8oZz0zRGUseCk6Z30seC5kZWZhdWx0U3RhdGU9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLj0KbGVuZ3RoPyh5PTNEZSx4KTp5fSx4Lm5vRGF0
YT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPTNEZSx4PQopOmJ9LHgu
dHJhbnNpdGlvbkR1cmF0aW9uPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KEU9M0RlLHgpOkU9Cn0seH0sZS5tb2RlbHMuaW5kZW50ZWRUcmVlPTNEZnVuY3Rpb24oKXtmdW5j
dGlvbiBnKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpbz0KbihlKXtmdW5jdGlvbiBrKGUsdCxuKXtk
My5ldmVudC5zdG9wUHJvcGFnYXRpb24oKTtpZihkMy5ldmVudC5zaGlmdEtleSYmIW4pPQpyZXR1
cm4gZDMuZXZlbnQuc2hpZnRLZXk9M0QhMSxlLnZhbHVlcyYmZS52YWx1ZXMuZm9yRWFjaChmdW5j
dGlvbihlKXsoZS52YWw9CnVlc3x8ZS5fdmFsdWVzKSYmayhlLDAsITApfSksITA7aWYoIU8oZSkp
cmV0dXJuITA7ZS52YWx1ZXM/KGUuX3ZhbHVlcz0zRGUudj0KYWx1ZXMsZS52YWx1ZXM9M0RudWxs
KTooZS52YWx1ZXM9M0RlLl92YWx1ZXMsZS5fdmFsdWVzPTNEbnVsbCksZy51cGRhdGUoKX1mPQp1
bmN0aW9uIEwoZSl7cmV0dXJuIGUuX3ZhbHVlcyYmZS5fdmFsdWVzLmxlbmd0aD9oOmUudmFsdWVz
JiZlLnZhbHVlcy5sZW5ndGg9Cj9wOiIifWZ1bmN0aW9uIEEoZSl7cmV0dXJuIGUuX3ZhbHVlcyYm
ZS5fdmFsdWVzLmxlbmd0aH1mdW5jdGlvbiBPKGUpe3ZhciB0PQo9M0RlLnZhbHVlc3x8ZS5fdmFs
dWVzO3JldHVybiB0JiZ0Lmxlbmd0aH12YXIgdD0zRDEsbj0zRGQzLnNlbGVjdCh0aGlzKSxpPQo9
M0RkMy5sYXlvdXQudHJlZSgpLmNoaWxkcmVuKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlc30p
LnNpemUoW3IsZl0pO2cudXA9CmRhdGU9M0RmdW5jdGlvbigpe24uY2FsbChnKX0sZVswXXx8KGVb
MF09M0R7a2V5OmF9KTt2YXIgcz0zRGkubm9kZXMoZVswXSkseT0KPTNEZDMuc2VsZWN0KHRoaXMp
LnNlbGVjdEFsbCgiZGl2IikuZGF0YShbW3NdXSksYj0zRHkuZW50ZXIoKS5hcHBlbmQoImRpdiIp
PQouYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtaW5kZW50ZWR0cmVlIiksdz0zRGIuYXBw
ZW5kKCJ0YWJsZSIpLEU9M0R5LnM9CmVsZWN0KCJ0YWJsZSIpLmF0dHIoIndpZHRoIiwiMTAwJSIp
LmF0dHIoImNsYXNzIixjKTtpZihvKXt2YXIgUz0zRHcuYXBwZW5kKD0KInRoZWFkIikseD0zRFMu
YXBwZW5kKCJ0ciIpO2wuZm9yRWFjaChmdW5jdGlvbihlKXt4LmFwcGVuZCgidGgiKS5hdHRyKCJ3
aWR0PQpoIixlLndpZHRoP2Uud2lkdGg6IjEwJSIpLnN0eWxlKCJ0ZXh0LWFsaWduIixlLnR5cGU9
M0Q9M0QibnVtZXJpYyI/InJpZ2h0Ijo9CiJsZWZ0IikuYXBwZW5kKCJzcGFuIikudGV4dChlLmxh
YmVsKX0pfXZhciBUPTNERS5zZWxlY3RBbGwoInRib2R5IikuZGF0YShmdT0KbmN0aW9uKGUpe3Jl
dHVybiBlfSk7VC5lbnRlcigpLmFwcGVuZCgidGJvZHkiKSx0PTNEZDMubWF4KHMsZnVuY3Rpb24o
ZSl7cmV0PQp1cm4gZS5kZXB0aH0pLGkuc2l6ZShbcix0KmZdKTt2YXIgTj0zRFQuc2VsZWN0QWxs
KCJ0ciIpLmRhdGEoZnVuY3Rpb24oZSl7cmU9CnR1cm4gZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0
dXJuIHUmJiFlLmNoaWxkcmVuP3UoZSk6ITB9KX0sZnVuY3Rpb24oZSx0KXtyZT0KdHVybiBlLmlk
fHxlLmlkfHwrK219KTtOLmV4aXQoKS5yZW1vdmUoKSxOLnNlbGVjdCgiaW1nLm52LXRyZWVpY29u
IikuYXR0cigiPQpzcmMiLEwpLmNsYXNzZWQoImZvbGRlZCIsQSk7dmFyIEM9M0ROLmVudGVyKCku
YXBwZW5kKCJ0ciIpO2wuZm9yRWFjaChmdW5jdGk9Cm9uKGUsdCl7dmFyIG49M0RDLmFwcGVuZCgi
dGQiKS5zdHlsZSgicGFkZGluZy1sZWZ0IixmdW5jdGlvbihlKXtyZXR1cm4odD8wOj0KZS5kZXB0
aCpmKzEyKyhMKGUpPzA6MTYpKSsicHgifSwiaW1wb3J0YW50Iikuc3R5bGUoInRleHQtYWxpZ24i
LGUudHlwZT0zRD0KPTNEIm51bWVyaWMiPyJyaWdodCI6ImxlZnQiKTt0PTNEPTNEMCYmbi5hcHBl
bmQoImltZyIpLmNsYXNzZWQoIm52LXRyZWVpY29uPQoiLCEwKS5jbGFzc2VkKCJudi1mb2xkZWQi
LEEpLmF0dHIoInNyYyIsTCkuc3R5bGUoIndpZHRoIiwiMTRweCIpLnN0eWxlKCJoZWk9CmdodCIs
IjE0cHgiKS5zdHlsZSgicGFkZGluZyIsIjAgMXB4Iikuc3R5bGUoImRpc3BsYXkiLGZ1bmN0aW9u
KGUpe3JldHVybiBMKD0KZSk/ImlubGluZS1ibG9jayI6Im5vbmUifSkub24oImNsaWNrIixrKSxu
LmVhY2goZnVuY3Rpb24obil7IXQmJnYobik/ZDMuc2VsPQplY3QodGhpcykuYXBwZW5kKCJhIiku
YXR0cigiaHJlZiIsdikuYXR0cigiY2xhc3MiLGQzLmZ1bmN0b3IoZS5jbGFzc2VzKSkuYXA9CnBl
bmQoInNwYW4iKTpkMy5zZWxlY3QodGhpcykuYXBwZW5kKCJzcGFuIiksZDMuc2VsZWN0KHRoaXMp
LnNlbGVjdCgic3BhbiIpLj0KYXR0cigiY2xhc3MiLGQzLmZ1bmN0b3IoZS5jbGFzc2VzKSkudGV4
dChmdW5jdGlvbih0KXtyZXR1cm4gZS5mb3JtYXQ/dFtlLmtlPQp5XT9lLmZvcm1hdCh0W2Uua2V5
XSk6Ii0iOnRbZS5rZXldfHwiLSJ9KX0pLGUuc2hvd0NvdW50JiYobi5hcHBlbmQoInNwYW4iKS49
CmF0dHIoImNsYXNzIiwibnYtY2hpbGRyZW5Db3VudCIpLE4uc2VsZWN0QWxsKCJzcGFuLm52LWNo
aWxkcmVuQ291bnQiKS50ZXh0KD0KZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzJiZlLnZhbHVl
cy5sZW5ndGh8fGUuX3ZhbHVlcyYmZS5fdmFsdWVzLmxlbmd0aD8iPQooIisoZS52YWx1ZXMmJmUu
dmFsdWVzLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gdT91KGUpOiEwfSkubGVuZ3RofHxlLl92
YWw9CnVlcyYmZS5fdmFsdWVzLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gdT91KGUpOiEwfSku
bGVuZ3RofHwwKSsiKSI6IiJ9KSl9KT0KLE4ub3JkZXIoKS5vbigiY2xpY2siLGZ1bmN0aW9uKGUp
e2QuZWxlbWVudENsaWNrKHtyb3c6dGhpcyxkYXRhOmUscG9zOltlLngsPQplLnldfSl9KS5vbigi
ZGJsY2xpY2siLGZ1bmN0aW9uKGUpe2QuZWxlbWVudERibGNsaWNrKHtyb3c6dGhpcyxkYXRhOmUs
cG9zOls9CmUueCxlLnldfSl9KS5vbigibW91c2VvdmVyIixmdW5jdGlvbihlKXtkLmVsZW1lbnRN
b3VzZW92ZXIoe3Jvdzp0aGlzLGRhdGE6ZT0KLHBvczpbZS54LGUueV19KX0pLm9uKCJtb3VzZW91
dCIsZnVuY3Rpb24oZSl7ZC5lbGVtZW50TW91c2VvdXQoe3Jvdzp0aGlzLGRhPQp0YTplLHBvczpb
ZS54LGUueV19KX0pfSksZ312YXIgdD0zRHt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0s
bj0zRDk2MCw9CnI9M0Q1MDAsaT0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCkscz0zRE1hdGguZmxv
b3IoTWF0aC5yYW5kb20oKSoxZTQpLG89M0QhMD0KLHU9M0QhMSxhPTNEIk5vIERhdGEgQXZhaWxh
YmxlLiIsZj0zRDIwLGw9M0Rbe2tleToia2V5IixsYWJlbDoiTmFtZSIsdHlwZToiPQp0ZXh0In1d
LGM9M0RudWxsLGg9M0QiaW1hZ2VzL2dyZXktcGx1cy5wbmciLHA9M0QiaW1hZ2VzL2dyZXktbWlu
dXMucG5nIixkPQo9M0RkMy5kaXNwYXRjaCgiZWxlbWVudENsaWNrIiwiZWxlbWVudERibGNsaWNr
IiwiZWxlbWVudE1vdXNlb3ZlciIsImVsZW1lbnQ9Ck1vdXNlb3V0Iiksdj0zRGZ1bmN0aW9uKGUp
e3JldHVybiBlLnVybH0sbT0zRDA7cmV0dXJuIGcub3B0aW9ucz0zRGUudXRpbHMubz0KcHRpb25z
RnVuYy5iaW5kKGcpLGcubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHQudG9wPTNEPQp0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6dC50b3AsdC5y
aWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmk9Cm5lZCI/ZS5yaWdodDp0LnJpZ2h0LHQu
Ym90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYj0Kb3R0
b20sdC5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6dC5sZWZ0LGcp
OnR9LGcud2lkdGg9M0RmPQp1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPTNE
ZSxnKTpufSxnLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHU9CnJuIGFyZ3VtZW50cy5sZW5ndGg/
KHI9M0RlLGcpOnJ9LGcuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbj0K
Z3RoPyhpPTNEZS51dGlscy5nZXRDb2xvcih0KSxzY2F0dGVyLmNvbG9yKGkpLGcpOml9LGcuaWQ9
M0RmdW5jdGlvbihlKXtyZXR1PQpybiBhcmd1bWVudHMubGVuZ3RoPyhzPTNEZSxnKTpzfSxnLmhl
YWRlcj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGU9Cm5ndGg/KG89M0RlLGcpOm99
LGcubm9EYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLGcp
Oj0KYX0sZy5maWx0ZXJaZXJvPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHU9M0RlLGcpOnV9LGcuY29sdW1uPQpzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGw9M0RlLGcpOmx9LGcudGFibGVDbGFzcz0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGM9M0RlLGcpOmN9LGcuaWNvbk9wZW49M0RmdW5jdGlvbihlKXtyZXR1
cm4gYT0Kcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxnKTpofSxnLmljb25DbG9zZT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuPQpndGg/KHA9M0RlLGcpOnB9LGcuZ2V0VXJsPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9M0RlLGcpOnY9Cn0sZ30sZS5tb2Rl
bHMubGVnZW5kPTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBjKGgpe3JldHVybiBoLmVhY2goZnVuY3Rp
b24oYyl7dj0KYXIgaD0zRG4tdC5sZWZ0LXQucmlnaHQscD0zRGQzLnNlbGVjdCh0aGlzKSxkPTNE
cC5zZWxlY3RBbGwoImcubnYtbGVnZW5kIikuPQpkYXRhKFtjXSksdj0zRGQuZW50ZXIoKS5hcHBl
bmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtbGVnZW5kIikuYXBwZW5kKCI9CmciKSxtPTNE
ZC5zZWxlY3QoImciKTtkLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIr
dC50b3ArIikiKT0KO3ZhciBnPTNEbS5zZWxlY3RBbGwoIi5udi1zZXJpZXMiKS5kYXRhKGZ1bmN0
aW9uKGUpe3JldHVybiBlfSkseT0zRGcuZW50ZXIoPQopLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNz
IiwibnYtc2VyaWVzIikub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oZSx0KXtsLmxlZ2U9Cm5kTW91
c2VvdmVyKGUsdCl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKGUsdCl7bC5sZWdlbmRNb3VzZW91
dChlLHQpfSkub24oIj0KY2xpY2siLGZ1bmN0aW9uKGUsdCl7bC5sZWdlbmRDbGljayhlLHQpLGEm
JihmPyhjLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5kaXNhPQpibGVkPTNEITB9KSxlLmRpc2FibGVk
PTNEITEpOihlLmRpc2FibGVkPTNEIWUuZGlzYWJsZWQsYy5ldmVyeShmdW5jdGlvbihlKXs9CnJl
dHVybiBlLmRpc2FibGVkfSkmJmMuZm9yRWFjaChmdW5jdGlvbihlKXtlLmRpc2FibGVkPTNEITF9
KSksbC5zdGF0ZUNoYW5nZT0KKHtkaXNhYmxlZDpjLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWUu
ZGlzYWJsZWR9KX0pKX0pLm9uKCJkYmxjbGljayIsZnVuY3RpPQpvbihlLHQpe2wubGVnZW5kRGJs
Y2xpY2soZSx0KSxhJiYoYy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuZGlzYWJsZWQ9M0QhMH0pLGU9
Ci5kaXNhYmxlZD0zRCExLGwuc3RhdGVDaGFuZ2Uoe2Rpc2FibGVkOmMubWFwKGZ1bmN0aW9uKGUp
e3JldHVybiEhZS5kaXNhYmxlZD0KfSl9KSl9KTt5LmFwcGVuZCgiY2lyY2xlIikuc3R5bGUoInN0
cm9rZS13aWR0aCIsMikuYXR0cigiY2xhc3MiLCJudi1sZWdlbmQtPQpzeW1ib2wiKS5hdHRyKCJy
Iiw1KSx5LmFwcGVuZCgidGV4dCIpLmF0dHIoInRleHQtYW5jaG9yIiwic3RhcnQiKS5hdHRyKCJj
bGE9CnNzIiwibnYtbGVnZW5kLXRleHQiKS5hdHRyKCJkeSIsIi4zMmVtIikuYXR0cigiZHgiLCI4
IiksZy5jbGFzc2VkKCJkaXNhYmxlZD0KIixmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNhYmxlZH0p
LGcuZXhpdCgpLnJlbW92ZSgpLGcuc2VsZWN0KCJjaXJjbGUiKS5zdHlsPQplKCJmaWxsIixmdW5j
dGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxzKGUsdCl9KS5zdHlsZSgic3Ryb2tlIixmdW5jdGlv
bihlLHQ9Cil7cmV0dXJuIGUuY29sb3J8fHMoZSx0KX0pLGcuc2VsZWN0KCJ0ZXh0IikudGV4dChp
KTtpZihvKXt2YXIgYj0zRFtdO2cuZWFjaD0KKGZ1bmN0aW9uKHQsbil7dmFyIHI9M0RkMy5zZWxl
Y3QodGhpcykuc2VsZWN0KCJ0ZXh0IiksaTt0cnl7aT0zRHIuZ2V0Q29tcHV0PQplZFRleHRMZW5n
dGgoKTtpZihpPD0zRDApdGhyb3cgRXJyb3IoKX1jYXRjaChzKXtpPTNEZS51dGlscy5jYWxjQXBw
cm94VGV4dFc9CmlkdGgocil9Yi5wdXNoKGkrMjgpfSk7dmFyIHc9M0QwLEU9M0QwLFM9M0RbXTt3
aGlsZShFPGgmJnc8Yi5sZW5ndGgpU1t3XT0zRD0KYlt3XSxFKz0zRGJbdysrXTt3PTNEPTNEPTNE
MCYmKHc9M0QxKTt3aGlsZShFPmgmJnc+MSl7Uz0zRFtdLHctLTtmb3IodmFyIHg9Cj0zRDA7eDxi
Lmxlbmd0aDt4KyspYlt4XT4oU1t4JXddfHwwKSYmKFNbeCV3XT0zRGJbeF0pO0U9M0RTLnJlZHVj
ZShmdW5jdGlvbj0KKGUsdCxuLHIpe3JldHVybiBlK3R9KX12YXIgVD0zRFtdO2Zvcih2YXIgTj0z
RDAsQz0zRDA7Tjx3O04rKylUW05dPTNEQyxDKz0KPTNEU1tOXTtnLmF0dHIoInRyYW5zZm9ybSIs
ZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIrVFt0JXddKyIsIisoNStNPQphdGguZmxv
b3IodC93KSoyMCkrIikifSksdT9tLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhuLXQu
cmlnaHQtRSkrIiw9CiIrdC50b3ArIikiKTptLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgw
LCIrdC50b3ArIikiKSxyPTNEdC50b3ArdC5ib3R0bz0KbStNYXRoLmNlaWwoYi5sZW5ndGgvdykq
MjB9ZWxzZXt2YXIgaz0zRDUsTD0zRDUsQT0zRDAsTztnLmF0dHIoInRyYW5zZm9ybSIsPQpmdW5j
dGlvbihlLHIpe3ZhciBpPTNEZDMuc2VsZWN0KHRoaXMpLnNlbGVjdCgidGV4dCIpLm5vZGUoKS5n
ZXRDb21wdXRlZFRleHQ9Ckxlbmd0aCgpKzI4O3JldHVybiBPPTNETCxuPHQubGVmdCt0LnJpZ2h0
K08raSYmKEw9M0RPPTNENSxrKz0zRDIwKSxMKz0zRGksTD0KPkEmJihBPTNETCksInRyYW5zbGF0
ZSgiK08rIiwiK2srIikifSksbS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisobi10PQou
cmlnaHQtQSkrIiwiK3QudG9wKyIpIikscj0zRHQudG9wK3QuYm90dG9tK2srMTV9fSksY312YXIg
dD0zRHt0b3A6NSxyaWdodDo9CjAsYm90dG9tOjUsbGVmdDowfSxuPTNENDAwLHI9M0QyMCxpPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGUua2V5fSxzPTNEZS51dGlscz0KLmRlZmF1bHRDb2xvcigpLG89
M0QhMCx1PTNEITAsYT0zRCEwLGY9M0QhMSxsPTNEZDMuZGlzcGF0Y2goImxlZ2VuZENsaWNrIiwi
PQpsZWdlbmREYmxjbGljayIsImxlZ2VuZE1vdXNlb3ZlciIsImxlZ2VuZE1vdXNlb3V0Iiwic3Rh
dGVDaGFuZ2UiKTtyZXR1cm4gYy49CmRpc3BhdGNoPTNEbCxjLm9wdGlvbnM9M0RlLnV0aWxzLm9w
dGlvbnNGdW5jLmJpbmQoYyksYy5tYXJnaW49M0RmdW5jdGlvbihlKT0Ke3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyh0LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDp0LnRv
cCx0PQoucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OnQucmln
aHQsdC5ib3R0b209M0R0eXBlb2YgZS49CmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTp0
LmJvdHRvbSx0LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZT0KZCI/ZS5sZWZ0OnQu
bGVmdCxjKTp0fSxjLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KG49M0RlPQosYyk6bn0sYy5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8ocj0zRGUsYyk6cn0sYy5rZXk9M0Q9CmZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhpPTNEZSxjKTppfSxjLmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dT0Kcm4gYXJndW1l
bnRzLmxlbmd0aD8ocz0zRGUudXRpbHMuZ2V0Q29sb3IodCksYyk6c30sYy5hbGlnbj0zRGZ1bmN0
aW9uKGUpe3JlPQp0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RlLGMpOm99LGMucmlnaHRBbGln
bj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWU9Cm50cy5sZW5ndGg/KHU9M0RlLGMpOnV9LGMu
dXBkYXRlU3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD0KPyhhPTNE
ZSxjKTphfSxjLnJhZGlvQnV0dG9uTW9kZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhmPTNEPQplLGMpOmZ9LGN9LGUubW9kZWxzLmxpbmU9M0RmdW5jdGlvbigpe2Z1bmN0
aW9uIG0oZyl7cmV0dXJuIGcuZWFjaChmdW5jdGlvbig9Cm0pe3ZhciBnPTNEci1uLmxlZnQtbi5y
aWdodCxiPTNEaS1uLnRvcC1uLmJvdHRvbSx3PTNEZDMuc2VsZWN0KHRoaXMpO2M9M0R0Lj0KeFNj
YWxlKCksaD0zRHQueVNjYWxlKCksZD0zRGR8fGMsdj0zRHZ8fGg7dmFyIEU9M0R3LnNlbGVjdEFs
bCgiZy5udi13cmFwLm52PQotbGluZSIpLmRhdGEoW21dKSxTPTNERS5lbnRlcigpLmFwcGVuZCgi
ZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LWw9CmluZSIpLFQ9M0RTLmFwcGVuZCgi
ZGVmcyIpLE49M0RTLmFwcGVuZCgiZyIpLEM9M0RFLnNlbGVjdCgiZyIpO04uYXBwZW5kKCJnIj0K
KS5hdHRyKCJjbGFzcyIsIm52LWdyb3VwcyIpLE4uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJu
di1zY2F0dGVyV3JhcCIpLEUuPQphdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIituLmxlZnQr
IiwiK24udG9wKyIpIiksdC53aWR0aChnKS5oZWlnaHQoYik7dmE9CnIgaz0zREUuc2VsZWN0KCIu
bnYtc2NhdHRlcldyYXAiKTtrLmNhbGwodCksVC5hcHBlbmQoImNsaXBQYXRoIikuYXR0cigiaWQi
LD0KIm52LWVkZ2UtY2xpcC0iK3QuaWQoKSkuYXBwZW5kKCJyZWN0IiksRS5zZWxlY3QoIiNudi1l
ZGdlLWNsaXAtIit0LmlkKCkrIiByPQplY3QiKS5hdHRyKCJ3aWR0aCIsZykuYXR0cigiaGVpZ2h0
IixiPjA/YjowKSxDLmF0dHIoImNsaXAtcGF0aCIsbD8idXJsKCNudi09CmVkZ2UtY2xpcC0iK3Qu
aWQoKSsiKSI6IiIpLGsuYXR0cigiY2xpcC1wYXRoIixsPyJ1cmwoI252LWVkZ2UtY2xpcC0iK3Qu
aWQoKT0KKyIpIjoiIik7dmFyIEw9M0RFLnNlbGVjdCgiLm52LWdyb3VwcyIpLnNlbGVjdEFsbCgi
Lm52LWdyb3VwIikuZGF0YShmdW5jdGlvPQpuKGUpe3JldHVybiBlfSxmdW5jdGlvbihlKXtyZXR1
cm4gZS5rZXl9KTtMLmVudGVyKCkuYXBwZW5kKCJnIikuc3R5bGUoInN0cm89CmtlLW9wYWNpdHki
LDFlLTYpLnN0eWxlKCJmaWxsLW9wYWNpdHkiLDFlLTYpLEwuZXhpdCgpLnJlbW92ZSgpLEwuYXR0
cigiY2xhcz0KcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4ibnYtZ3JvdXAgbnYtc2VyaWVzLSIrdH0p
LmNsYXNzZWQoImhvdmVyIixmdW5jdGlvbihlPQope3JldHVybiBlLmhvdmVyfSkuc3R5bGUoImZp
bGwiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHMoZSx0KX0pLnN0eWxlKCJzdHJva2U9CiIsZnVuY3Rp
b24oZSx0KXtyZXR1cm4gcyhlLHQpfSksTC5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDEpLnN0eWxl
KCJmaWxsLW9wYT0KY2l0eSIsLjUpO3ZhciBBPTNETC5zZWxlY3RBbGwoInBhdGgubnYtYXJlYSIp
LmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuIGYoZSk/PQpbZV06W119KTtBLmVudGVyKCkuYXBwZW5k
KCJwYXRoIikuYXR0cigiY2xhc3MiLCJudi1hcmVhIikuYXR0cigiZCIsZnVuY3Rpb249Cih0KXty
ZXR1cm4gZDMuc3ZnLmFyZWEoKS5pbnRlcnBvbGF0ZShwKS5kZWZpbmVkKGEpLngoZnVuY3Rpb24o
dCxuKXtyZXR1cm4gZT0KLnV0aWxzLk5hTnRvWmVybyhkKG8odCxuKSkpfSkueTAoZnVuY3Rpb24o
dCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8odih1PQoodCxuKSkpfSkueTEoZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gdihoLmRvbWFpbigpWzBdPD0zRDA/aC5kb21haW4oKVsxXT49M0QwPzA9Cjpo
LmRvbWFpbigpWzFdOmguZG9tYWluKClbMF0pfSkuYXBwbHkodGhpcyxbdC52YWx1ZXNdKX0pLEwu
ZXhpdCgpLnNlbGVjdEFsbD0KKCJwYXRoLm52LWFyZWEiKS5yZW1vdmUoKSxBLmF0dHIoImQiLGZ1
bmN0aW9uKHQpe3JldHVybiBkMy5zdmcuYXJlYSgpLmludGVyPQpwb2xhdGUocCkuZGVmaW5lZChh
KS54KGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKGMobyh0LG4pKSl9KS49
CnkwKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKGgodSh0LG4pKSl9KS55
MShmdW5jdGlvbihlLHQpe3JldD0KdXJuIGgoaC5kb21haW4oKVswXTw9M0QwP2guZG9tYWluKClb
MV0+PTNEMD8wOmguZG9tYWluKClbMV06aC5kb21haW4oKVswXSl9PQopLmFwcGx5KHRoaXMsW3Qu
dmFsdWVzXSl9KTt2YXIgTz0zREwuc2VsZWN0QWxsKCJwYXRoLm52LWxpbmUiKS5kYXRhKGZ1bmN0
aW89Cm4oZSl7cmV0dXJuW2UudmFsdWVzXX0pO08uZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRy
KCJjbGFzcyIsIm52LWxpbmUiKS5hdD0KdHIoImQiLGQzLnN2Zy5saW5lKCkuaW50ZXJwb2xhdGUo
cCkuZGVmaW5lZChhKS54KGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpPQpscy5OYU50b1plcm8o
ZChvKHQsbikpKX0pLnkoZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8odih1
KHQsbik9CikpfSkpLE8uYXR0cigiZCIsZDMuc3ZnLmxpbmUoKS5pbnRlcnBvbGF0ZShwKS5kZWZp
bmVkKGEpLngoZnVuY3Rpb24odCxuKXtyZT0KdHVybiBlLnV0aWxzLk5hTnRvWmVybyhjKG8odCxu
KSkpfSkueShmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVyPQpvKGgodSh0LG4p
KSl9KSksZD0zRGMuY29weSgpLHY9M0RoLmNvcHkoKX0pLG19dmFyIHQ9M0RlLm1vZGVscy5zY2F0
dGVyKCksbj0KPTNEe3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSxyPTNEOTYwLGk9M0Q1
MDAscz0zRGUudXRpbHMuZGVmYXVsdENvbG9yPQooKSxvPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUu
eH0sdT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnl9LGE9M0RmdW5jdGlvbihlLHQ9Cil7cmV0dXJu
IWlzTmFOKHUoZSx0KSkmJnUoZSx0KSE9M0Q9M0RudWxsfSxmPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGUuYXJlYX0sbD0KPTNEITEsYyxoLHA9M0QibGluZWFyIjt0LnNpemUoMTYpLnNpemVEb21haW4o
WzE2LDI1Nl0pO3ZhciBkLHY7cmV0dXJuIG0uZGlzPQpwYXRjaD0zRHQuZGlzcGF0Y2gsbS5zY2F0
dGVyPTNEdCxkMy5yZWJpbmQobSx0LCJpZCIsImludGVyYWN0aXZlIiwic2l6ZSIsIng9ClNjYWxl
IiwieVNjYWxlIiwielNjYWxlIiwieERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2Ui
LCJzaXplRG9tYWluIj0KLCJmb3JjZVgiLCJmb3JjZVkiLCJmb3JjZVNpemUiLCJjbGlwVm9yb25v
aSIsInVzZVZvcm9ub2kiLCJjbGlwUmFkaXVzIiwicGFkPQpEYXRhIiwiaGlnaGxpZ2h0UG9pbnQi
LCJjbGVhckhpZ2hsaWdodHMiKSxtLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmI9Cmlu
ZChtKSxtLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuLnRv
cD0zRHR5cGVvZiBlLnRvcD0KIT0zRCJ1bmRlZmluZWQiP2UudG9wOm4udG9wLG4ucmlnaHQ9M0R0
eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0PQo6bi5yaWdodCxuLmJvdHRvbT0z
RHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTpuLmJvdHRvbSxuLmxlZnQ9
Cj0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0Om4ubGVmdCxtKTpufSxtLndp
ZHRoPTNEZnVuY3Rpb24oZSl7cj0KZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0zRGUsbSk6cn0s
bS5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzPQoubGVuZ3RoPyhpPTNEZSxt
KTppfSxtLng9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsdC54
KGU9CiksbSk6b30sbS55PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9
M0RlLHQueShlKSxtKTp1fSxtLmNsaT0KcEVkZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8obD0zRGUsbSk6bH0sbS5jb2xvcj0zRGZ1bmN0aW9uPQoobil7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHM9M0RlLnV0aWxzLmdldENvbG9yKG4pLHQuY29sb3IocyksbSk6c30s
bS5pbnQ9CmVycG9sYXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9
M0RlLG0pOnB9LG0uZGVmaW5lZD0zRGZ1bj0KY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGE9M0RlLG0pOmF9LG0uaXNBcmVhPTNEZnVuY3Rpb24oZSl7cmV0dXJuPQogYXJndW1lbnRz
Lmxlbmd0aD8oZj0zRGQzLmZ1bmN0b3IoZSksbSk6Zn0sbX0sZS5tb2RlbHMubGluZUNoYXJ0PTNE
ZnVuY3Rpb249Cigpe2Z1bmN0aW9uIE4obSl7cmV0dXJuIG0uZWFjaChmdW5jdGlvbihtKXt2YXIg
eD0zRGQzLnNlbGVjdCh0aGlzKSxDPTNEdGhpcz0KLGs9M0QoYXx8cGFyc2VJbnQoeC5zdHlsZSgi
d2lkdGgiKSl8fDk2MCktby5sZWZ0LW8ucmlnaHQsTD0zRChmfHxwYXJzZUludCh4PQouc3R5bGUo
ImhlaWdodCIpKXx8NDAwKS1vLnRvcC1vLmJvdHRvbTtOLnVwZGF0ZT0zRGZ1bmN0aW9uKCl7eC5j
YWxsKE4pfSxOLmM9Cm9udGFpbmVyPTNEdGhpcyxiLmRpc2FibGVkPTNEbS5tYXAoZnVuY3Rpb24o
ZSl7cmV0dXJuISFlLmRpc2FibGVkfSk7aWYoIXcpez0KdmFyIEE7dz0zRHt9O2ZvcihBIGluIGIp
YltBXWluc3RhbmNlb2YgQXJyYXk/d1tBXT0zRGJbQV0uc2xpY2UoMCk6d1tBXT0zRGJbPQpBXX1p
ZighbXx8IW0ubGVuZ3RofHwhbS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLmxl
bmd0aH0pLmxlbmd0aCk9Cnt2YXIgTz0zRHguc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShb
RV0pO3JldHVybiBPLmVudGVyKCkuYXBwZW5kKCJ0ZXh0Ij0KKS5hdHRyKCJjbGFzcyIsIm52ZDMg
bnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pPQpk
ZGxlIiksTy5hdHRyKCJ4IixvLmxlZnQray8yKS5hdHRyKCJ5IixvLnRvcCtMLzIpLnRleHQoZnVu
Y3Rpb24oZSl7cmV0dXJuIGU9Cn0pLE59eC5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUo
KSxnPTNEdC54U2NhbGUoKSx5PTNEdC55U2NhbGUoKTt2YXIgTT0KPTNEeC5zZWxlY3RBbGwoImcu
bnYtd3JhcC5udi1saW5lQ2hhcnQiKS5kYXRhKFttXSksXz0zRE0uZW50ZXIoKS5hcHBlbmQoImci
PQopLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LWxpbmVDaGFydCIpLmFwcGVuZCgiZyIp
LEQ9M0RNLnNlbGVjdCgiZyIpO189Ci5hcHBlbmQoInJlY3QiKS5zdHlsZSgib3BhY2l0eSIsMCks
Xy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcz0KIiksXy5hcHBlbmQoImci
KS5hdHRyKCJjbGFzcyIsIm52LXkgbnYtYXhpcyIpLF8uYXBwZW5kKCJnIikuYXR0cigiY2xhc3Mi
LCJuPQp2LWxpbmVzV3JhcCIpLF8uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1sZWdlbmRX
cmFwIiksXy5hcHBlbmQoImciKS5hdHQ9CnIoImNsYXNzIiwibnYtaW50ZXJhY3RpdmUiKSxELnNl
bGVjdCgicmVjdCIpLmF0dHIoIndpZHRoIixrKS5hdHRyKCJoZWlnaHQiLD0KTD4wP0w6MCksbCYm
KGkud2lkdGgoayksRC5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuZGF0dW0obSkuY2FsbChpKSxv
LnRvcCE9Cj0zRGkuaGVpZ2h0KCkmJihvLnRvcD0zRGkuaGVpZ2h0KCksTD0zRChmfHxwYXJzZUlu
dCh4LnN0eWxlKCJoZWlnaHQiKSl8fDQwMD0KKS1vLnRvcC1vLmJvdHRvbSksTS5zZWxlY3QoIi5u
di1sZWdlbmRXcmFwIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsPQoiKyAtby50b3Ar
IikiKSksTS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitvLmxlZnQrIiwiK28udG9wKyIp
IikscCYmRC49CnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5z
bGF0ZSgiK2srIiwwKSIpLGQmJihzLndpZHRoKD0KaykuaGVpZ2h0KEwpLm1hcmdpbih7bGVmdDpv
LmxlZnQsdG9wOm8udG9wfSkuc3ZnQ29udGFpbmVyKHgpLnhTY2FsZShnKSxNLnNlPQpsZWN0KCIu
bnYtaW50ZXJhY3RpdmUiKS5jYWxsKHMpKSx0LndpZHRoKGspLmhlaWdodChMKS5jb2xvcihtLm1h
cChmdW5jdGlvbig9CmUsdCl7cmV0dXJuIGUuY29sb3J8fHUoZSx0KX0pLmZpbHRlcihmdW5jdGlv
bihlLHQpe3JldHVybiFtW3RdLmRpc2FibGVkfSkpOz0KdmFyIFA9M0RELnNlbGVjdCgiLm52LWxp
bmVzV3JhcCIpLmRhdHVtKG0uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FiPQpsZWR9
KSk7UC5jYWxsKHQpLGMmJihuLnNjYWxlKGcpLnRpY2tzKGsvMTAwKS50aWNrU2l6ZSgtTCwwKSxE
LnNlbGVjdCgiLm52LXg9Ci5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAs
Iit5LnJhbmdlKClbMF0rIikiKSxELnNlbGVjdCgiLm52LT0KeC5udi1heGlzIikuY2FsbChuKSks
aCYmKHIuc2NhbGUoeSkudGlja3MoTC8zNikudGlja1NpemUoLWssMCksRC5zZWxlY3QoIi5uPQp2
LXkubnYtYXhpcyIpLmNhbGwocikpLGkuZGlzcGF0Y2gub24oInN0YXRlQ2hhbmdlIixmdW5jdGlv
bihlKXtiPTNEZSxTLnN0YXQ9CmVDaGFuZ2UoYiksTi51cGRhdGUoKX0pLHMuZGlzcGF0Y2gub24o
ImVsZW1lbnRNb3VzZW1vdmUiLGZ1bmN0aW9uKGkpe3QuY2xlYT0KckhpZ2hsaWdodHMoKTt2YXIg
YSxmLGwsYz0zRFtdO20uZmlsdGVyKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc2VyaWVzSW5kZXg9
Cj0zRHQsIWUuZGlzYWJsZWR9KS5mb3JFYWNoKGZ1bmN0aW9uKG4scil7Zj0zRGUuaW50ZXJhY3Rp
dmVCaXNlY3Qobi52YWx1ZXMsaT0KLnBvaW50WFZhbHVlLE4ueCgpKSx0LmhpZ2hsaWdodFBvaW50
KHIsZiwhMCk7dmFyIHM9M0RuLnZhbHVlc1tmXTtpZih0eXBlb2YgPQpzPTNEPTNEInVuZGVmaW5l
ZCIpcmV0dXJuO3R5cGVvZiBhPTNEPTNEInVuZGVmaW5lZCImJihhPTNEcyksdHlwZW9mIGw9M0Q9
M0Q9CiJ1bmRlZmluZWQiJiYobD0zRE4ueFNjYWxlKCkoTi54KCkocyxmKSkpLGMucHVzaCh7a2V5
Om4ua2V5LHZhbHVlOk4ueSgpKHMsZj0KKSxjb2xvcjp1KG4sbi5zZXJpZXNJbmRleCl9KX0pO2lm
KGMubGVuZ3RoPjIpe3ZhciBoPTNETi55U2NhbGUoKS5pbnZlcnQoaS5tPQpvdXNlWSkscD0zRE1h
dGguYWJzKE4ueVNjYWxlKCkuZG9tYWluKClbMF0tTi55U2NhbGUoKS5kb21haW4oKVsxXSksZD0z
RC4wMyo9CnAsZz0zRGUubmVhcmVzdFZhbHVlSW5kZXgoYy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJu
IGUudmFsdWV9KSxoLGQpO2chPTNEPTNEbj0KdWxsJiYoY1tnXS5oaWdobGlnaHQ9M0QhMCl9dmFy
IHk9M0RuLnRpY2tGb3JtYXQoKShOLngoKShhLGYpKTtzLnRvb2x0aXAucG9zPQppdGlvbih7bGVm
dDpsK28ubGVmdCx0b3A6aS5tb3VzZVkrby50b3B9KS5jaGFydENvbnRhaW5lcihDLnBhcmVudE5v
ZGUpLmVuYWI9CmxlZCh2KS52YWx1ZUZvcm1hdHRlcihmdW5jdGlvbihlLHQpe3JldHVybiByLnRp
Y2tGb3JtYXQoKShlKX0pLmRhdGEoe3ZhbHVlOj0KeSxzZXJpZXM6Y30pKCkscy5yZW5kZXJHdWlk
ZUxpbmUobCl9KSxzLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQiLGZ1bmN0PQppb24oZSl7
Uy50b29sdGlwSGlkZSgpLHQuY2xlYXJIaWdobGlnaHRzKCl9KSxTLm9uKCJ0b29sdGlwU2hvdyIs
ZnVuY3Rpb24oZSk9Cnt2JiZUKGUsQy5wYXJlbnROb2RlKX0pLFMub24oImNoYW5nZVN0YXRlIixm
dW5jdGlvbihlKXt0eXBlb2YgZS5kaXNhYmxlZCE9Cj0zRCJ1bmRlZmluZWQiJiZtLmxlbmd0aD0z
RD0zRD0zRGUuZGlzYWJsZWQubGVuZ3RoJiYobS5mb3JFYWNoKGZ1bmN0aW9uKHQsbj0KKXt0LmRp
c2FibGVkPTNEZS5kaXNhYmxlZFtuXX0pLGIuZGlzYWJsZWQ9M0RlLmRpc2FibGVkKSxOLnVwZGF0
ZSgpfSl9KSxOfXZhPQpyIHQ9M0RlLm1vZGVscy5saW5lKCksbj0zRGUubW9kZWxzLmF4aXMoKSxy
PTNEZS5tb2RlbHMuYXhpcygpLGk9M0RlLm1vZGVscy49CmxlZ2VuZCgpLHM9M0RlLmludGVyYWN0
aXZlR3VpZGVsaW5lKCksbz0zRHt0b3A6MzAscmlnaHQ6MjAsYm90dG9tOjUwLGxlZnQ6Nj0KMH0s
dT0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCksYT0zRG51bGwsZj0zRG51bGwsbD0zRCEwLGM9M0Qh
MCxoPTNEITAscD0zRCExPQosZD0zRCExLHY9M0QhMCxtPTNEZnVuY3Rpb24oZSx0LG4scixpKXty
ZXR1cm4iPGgzPiIrZSsiPC9oMz4iKyI8cD4iK24rIiBhdCA9CiIrdCsiPC9wPiJ9LGcseSxiPTNE
e30sdz0zRG51bGwsRT0zRCJObyBEYXRhIEF2YWlsYWJsZS4iLFM9M0RkMy5kaXNwYXRjaCgidD0K
b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdGVDaGFuZ2UiLCJjaGFuZ2VTdGF0ZSIpLHg9
M0QwO24ub3JpZW50KCJib3R0PQpvbSIpLnRpY2tQYWRkaW5nKDcpLHIub3JpZW50KHA/InJpZ2h0
IjoibGVmdCIpO3ZhciBUPTNEZnVuY3Rpb24oaSxzKXt2YXIgbz0KPTNEaS5wb3NbMF0rKHMub2Zm
c2V0TGVmdHx8MCksdT0zRGkucG9zWzFdKyhzLm9mZnNldFRvcHx8MCksYT0zRG4udGlja0Zvcm1h
PQp0KCkodC54KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKSxmPTNEci50aWNrRm9ybWF0KCkodC55
KCkoaS5wb2ludCxpLnBvaW50SW49CmRleCkpLGw9M0RtKGkuc2VyaWVzLmtleSxhLGYsaSxOKTtl
LnRvb2x0aXAuc2hvdyhbbyx1XSxsLG51bGwsbnVsbCxzKX07cmV0dT0Kcm4gdC5kaXNwYXRjaC5v
bigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1sw
XStvPQoubGVmdCxlLnBvc1sxXStvLnRvcF0sUy50b29sdGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2gu
b24oImVsZW1lbnRNb3VzZW91dC50b289Cmx0aXAiLGZ1bmN0aW9uKGUpe1MudG9vbHRpcEhpZGUo
ZSl9KSxTLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXt2JiZlLnRvbz0KbHRpcC5jbGVhbnVw
KCl9KSxOLmRpc3BhdGNoPTNEUyxOLmxpbmVzPTNEdCxOLmxlZ2VuZD0zRGksTi54QXhpcz0zRG4s
Ti55QXhpPQpzPTNEcixOLmludGVyYWN0aXZlTGF5ZXI9M0RzLGQzLnJlYmluZChOLHQsImRlZmlu
ZWQiLCJpc0FyZWEiLCJ4IiwieSIsInNpemU9CiIsInhTY2FsZSIsInlTY2FsZSIsInhEb21haW4i
LCJ5RG9tYWluIiwieFJhbmdlIiwieVJhbmdlIiwiZm9yY2VYIiwiZm9yY2VZIj0KLCJpbnRlcmFj
dGl2ZSIsImNsaXBFZGdlIiwiY2xpcFZvcm9ub2kiLCJ1c2VWb3Jvbm9pIiwiaWQiLCJpbnRlcnBv
bGF0ZSIpLE4uPQpvcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKE4pLE4ubWFyZ2lu
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW49CnRzLmxlbmd0aD8oby50b3A9M0R0eXBlb2Yg
ZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6by50b3Asby5yaWdodD0zRHR5cGVvZj0KIGUucmln
aHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDpvLnJpZ2h0LG8uYm90dG9tPTNEdHlwZW9mIGUuYm90
dG9tIT0zRCJ1bmRlPQpmaW5lZCI/ZS5ib3R0b206by5ib3R0b20sby5sZWZ0PTNEdHlwZW9mIGUu
bGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6by5sZWY9CnQsTik6b30sTi53aWR0aD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZSxOKTphfSxOLmhlaWdodD0KPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLE4pOmZ9LE4uY29sb3I9
M0RmdW5jdGlvbih0KXtyPQpldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZS51dGlscy5nZXRD
b2xvcih0KSxpLmNvbG9yKHUpLE4pOnV9LE4uc2hvd0xlZ2U9Cm5kPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLE4pOmx9LE4uc2hvd1hBeGlzPTNEZnVuY3Rpbz0K
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUsTik6Y30sTi5zaG93WUF4aXM9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gPQphcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxOKTpofSxOLnJpZ2h0
QWxpZ25ZQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWU9Cm50cy5sZW5ndGg/KHA9M0Rl
LHIub3JpZW50KGU/InJpZ2h0IjoibGVmdCIpLE4pOnB9LE4udXNlSW50ZXJhY3RpdmVHdWlkZWxp
bj0KZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSxlPTNEPTNE
PTNEITAmJihOLmludGVyYWN0aXZlPQooITEpLE4udXNlVm9yb25vaSghMSkpLE4pOmR9LE4udG9v
bHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmc9CnRoPyh2PTNEZSxOKTp2
fSxOLnRvb2x0aXBDb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KG09Cj0zRGUsTik6bX0sTi5zdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhiPTNEZSxOKTpifSxOLmRlZj0KYXVsdFN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHc9M0RlLE4pOnd9LE4ubm9EYXRhPTNEZnVuPQpjdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oRT0zRGUsTik6RX0sTi50cmFuc2l0aW9uRHVyYXRpb249M0Rm
dW5jdGk9Cm9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh4PTNEZSxOKTp4fSxOfSxlLm1v
ZGVscy5saW5lUGx1c0JhckNoYXJ0PTNEZj0KdW5jdGlvbigpe2Z1bmN0aW9uIFQoZSl7cmV0dXJu
IGUuZWFjaChmdW5jdGlvbihlKXt2YXIgbD0zRGQzLnNlbGVjdCh0aGlzKSxjPQo9M0R0aGlzLHY9
M0QoYXx8cGFyc2VJbnQobC5zdHlsZSgid2lkdGgiKSl8fDk2MCktdS5sZWZ0LXUucmlnaHQsTj0z
RChmfHxwYXI9CnNlSW50KGwuc3R5bGUoImhlaWdodCIpKXx8NDAwKS11LnRvcC11LmJvdHRvbTtU
LnVwZGF0ZT0zRGZ1bmN0aW9uKCl7bC5jYWxsKD0KVCl9LGIuZGlzYWJsZWQ9M0RlLm1hcChmdW5j
dGlvbihlKXtyZXR1cm4hIWUuZGlzYWJsZWR9KTtpZighdyl7dmFyIEM7dz0zRHt9PQo7Zm9yKEMg
aW4gYiliW0NdaW5zdGFuY2VvZiBBcnJheT93W0NdPTNEYltDXS5zbGljZSgwKTp3W0NdPTNEYltD
XX1pZighZXx8IWU9Ci5sZW5ndGh8fCFlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1
ZXMubGVuZ3RofSkubGVuZ3RoKXt2YXIgaz0zRGwucz0KZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5k
YXRhKFtFXSk7cmV0dXJuIGsuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzPQpzIiwi
bnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2VtIikuc3R5bGUoInRleHQtYW5jaG9yIiwi
bWlkZGxlIiksay5hdHQ9CnIoIngiLHUubGVmdCt2LzIpLmF0dHIoInkiLHUudG9wK04vMikudGV4
dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLFR9bC5zZWxlYz0KdEFsbCgiLm52LW5vRGF0YSIpLnJl
bW92ZSgpO3ZhciBMPTNEZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQmPQom
ZS5iYXJ9KSxBPTNEZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuYmFyfSk7bT0zREEuZmls
dGVyKGZ1bmN0aW9uKGUpe3I9CmV0dXJuIWUuZGlzYWJsZWR9KS5sZW5ndGgmJkEuZmlsdGVyKGZ1
bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSlbMF0udmFsdT0KZXMubGVuZ3RoP3QueFNjYWxl
KCk6bi54U2NhbGUoKSxnPTNEbi55U2NhbGUoKSx5PTNEdC55U2NhbGUoKTt2YXIgTz0zRGQzLnNl
PQpsZWN0KHRoaXMpLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LWxpbmVQbHVzQmFyIikuZGF0YShb
ZV0pLE09M0RPLmVudGVyKCkuYXA9CnBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3Jh
cCBudi1saW5lUGx1c0JhciIpLmFwcGVuZCgiZyIpLF89M0RPLnNlbD0KZWN0KCJnIik7TS5hcHBl
bmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcyIpLE0uYXBwZW5kKCJnIikuYXR0cigi
Y2xhPQpzcyIsIm52LXkxIG52LWF4aXMiKSxNLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYt
eTIgbnYtYXhpcyIpLE0uYXBwZW5kKCI9CmciKS5hdHRyKCJjbGFzcyIsIm52LWJhcnNXcmFwIiks
TS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxpbmVzV3JhcCIpLD0KTS5hcHBlbmQoImci
KS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZFdyYXAiKSxwJiYoby53aWR0aCh2LzIpLF8uc2VsZWN0
KCIubnYtPQpsZWdlbmRXcmFwIikuZGF0dW0oZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUub3Jp
Z2luYWxLZXk9M0RlLm9yaWdpbmFsS2V5PQo9M0Q9M0Q9M0R1bmRlZmluZWQ/ZS5rZXk6ZS5vcmln
aW5hbEtleSxlLmtleT0zRGUub3JpZ2luYWxLZXkrKGUuYmFyPyIgKGxlZnQ9CiBheGlzKSI6IiAo
cmlnaHQgYXhpcykiKSxlfSkpLmNhbGwobyksdS50b3AhPTNEby5oZWlnaHQoKSYmKHUudG9wPTNE
by5oZWlnaD0KdCgpLE49M0QoZnx8cGFyc2VJbnQobC5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXUu
dG9wLXUuYm90dG9tKSxfLnNlbGVjdCgiLm52PQotbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9y
bSIsInRyYW5zbGF0ZSgiK3YvMisiLCIrIC11LnRvcCsiKSIpKSxPLmF0dHIoInQ9CnJhbnNmb3Jt
IiwidHJhbnNsYXRlKCIrdS5sZWZ0KyIsIit1LnRvcCsiKSIpLHQud2lkdGgodikuaGVpZ2h0KE4p
LmNvbG9yKGUubT0KYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8aChlLHQpfSkuZmls
dGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uPQpkaXNhYmxlZCYmIWVbbl0uYmFyfSkpLG4u
d2lkdGgodikuaGVpZ2h0KE4pLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXI9Cm4gZS5j
b2xvcnx8aChlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWQm
JmVbbl0uYmFyfSkpOz0KdmFyIEQ9M0RfLnNlbGVjdCgiLm52LWJhcnNXcmFwIikuZGF0dW0oTC5s
ZW5ndGg/TDpbe3ZhbHVlczpbXX1dKSxQPTNEXy5zZWxlPQpjdCgiLm52LWxpbmVzV3JhcCIpLmRh
dHVtKEFbMF0mJiFBWzBdLmRpc2FibGVkP0E6W3t2YWx1ZXM6W119XSk7ZDMudHJhbnNpdGk9Cm9u
KEQpLmNhbGwobiksZDMudHJhbnNpdGlvbihQKS5jYWxsKHQpLHIuc2NhbGUobSkudGlja3Modi8x
MDApLnRpY2tTaXplKC1OLD0KMCksXy5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5hdHRyKCJ0cmFu
c2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK2cucmFuZ2UoKVswXSsiPQopIiksZDMudHJhbnNpdGlvbihf
LnNlbGVjdCgiLm52LXgubnYtYXhpcyIpKS5jYWxsKHIpLGkuc2NhbGUoZykudGlja3MoTi8zNik9
Ci50aWNrU2l6ZSgtdiwwKSxkMy50cmFuc2l0aW9uKF8uc2VsZWN0KCIubnYteTEubnYtYXhpcyIp
KS5zdHlsZSgib3BhY2l0eSIsTD0KLmxlbmd0aD8xOjApLmNhbGwoaSkscy5zY2FsZSh5KS50aWNr
cyhOLzM2KS50aWNrU2l6ZShMLmxlbmd0aD8wOi12LDApLF8uc2VsPQplY3QoIi5udi15Mi5udi1h
eGlzIikuc3R5bGUoIm9wYWNpdHkiLEEubGVuZ3RoPzE6MCkuYXR0cigidHJhbnNmb3JtIiwidHJh
bnM9CmxhdGUoIit2KyIsMCkiKSxkMy50cmFuc2l0aW9uKF8uc2VsZWN0KCIubnYteTIubnYtYXhp
cyIpKS5jYWxsKHMpLG8uZGlzcGF0Yz0KaC5vbigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe2I9
M0RlLFMuc3RhdGVDaGFuZ2UoYiksVC51cGRhdGUoKX0pLFMub24oInRvPQpvbHRpcFNob3ciLGZ1
bmN0aW9uKGUpe2QmJngoZSxjLnBhcmVudE5vZGUpfSksUy5vbigiY2hhbmdlU3RhdGUiLGZ1bmN0
aW9uKHQ9Cil7dHlwZW9mIHQuZGlzYWJsZWQhPTNEInVuZGVmaW5lZCImJihlLmZvckVhY2goZnVu
Y3Rpb24oZSxuKXtlLmRpc2FibGVkPTNEdD0KLmRpc2FibGVkW25dfSksYi5kaXNhYmxlZD0zRHQu
ZGlzYWJsZWQpLFQudXBkYXRlKCl9KX0pLFR9dmFyIHQ9M0RlLm1vZGVscy5sPQppbmUoKSxuPTNE
ZS5tb2RlbHMuaGlzdG9yaWNhbEJhcigpLHI9M0RlLm1vZGVscy5heGlzKCksaT0zRGUubW9kZWxz
LmF4aXMoKSw9CnM9M0RlLm1vZGVscy5heGlzKCksbz0zRGUubW9kZWxzLmxlZ2VuZCgpLHU9M0R7
dG9wOjMwLHJpZ2h0OjYwLGJvdHRvbTo1MCxsZT0KZnQ6NjB9LGE9M0RudWxsLGY9M0RudWxsLGw9
M0RmdW5jdGlvbihlKXtyZXR1cm4gZS54fSxjPTNEZnVuY3Rpb24oZSl7cmV0dXJuPQogZS55fSxo
PTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxwPTNEITAsZD0zRCEwLHY9M0RmdW5jdGlvbihlLHQs
bixyLGkpe3JldHU9CnJuIjxoMz4iK2UrIjwvaDM+IisiPHA+IituKyIgYXQgIit0KyI8L3A+In0s
bSxnLHksYj0zRHt9LHc9M0RudWxsLEU9M0QiTm8gRD0KYXRhIEF2YWlsYWJsZS4iLFM9M0RkMy5k
aXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlkZSIsInN0YXRlQ2hhbmdlIiwiPQpjaGFu
Z2VTdGF0ZSIpO24ucGFkRGF0YSghMCksdC5jbGlwRWRnZSghMSkucGFkRGF0YSghMCksci5vcmll
bnQoImJvdHRvbSIpLnQ9Cmlja1BhZGRpbmcoNykuaGlnaGxpZ2h0WmVybyghMSksaS5vcmllbnQo
ImxlZnQiKSxzLm9yaWVudCgicmlnaHQiKTt2YXIgeD0zRD0KZnVuY3Rpb24obixvKXt2YXIgdT0z
RG4ucG9zWzBdKyhvLm9mZnNldExlZnR8fDApLGE9M0RuLnBvc1sxXSsoby5vZmZzZXRUb3B8PQp8
MCksZj0zRHIudGlja0Zvcm1hdCgpKHQueCgpKG4ucG9pbnQsbi5wb2ludEluZGV4KSksbD0zRChu
LnNlcmllcy5iYXI/aTpzKS49CnRpY2tGb3JtYXQoKSh0LnkoKShuLnBvaW50LG4ucG9pbnRJbmRl
eCkpLGM9M0R2KG4uc2VyaWVzLmtleSxmLGwsbixUKTtlLnRvbz0KbHRpcC5zaG93KFt1LGFdLGMs
bi52YWx1ZTwwPyJuIjoicyIsbnVsbCxvKX07cmV0dXJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRN
PQpvdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXSt1LmxlZnQs
ZS5wb3NbMV0rdS50b3BdLFMudG89Cm9sdGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2gub24oImVsZW1l
bnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtTLnRvb2x0aT0KcEhpZGUoZSl9KSxuLmRp
c3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNE
W2UuPQpwb3NbMF0rdS5sZWZ0LGUucG9zWzFdK3UudG9wXSxTLnRvb2x0aXBTaG93KGUpfSksbi5k
aXNwYXRjaC5vbigiZWxlbWVudE1vdXM9CmVvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7Uy50b29s
dGlwSGlkZShlKX0pLFMub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbigpez0KZCYmZS50b29sdGlw
LmNsZWFudXAoKX0pLFQuZGlzcGF0Y2g9M0RTLFQubGVnZW5kPTNEbyxULmxpbmVzPTNEdCxULmJh
cnM9M0RuPQosVC54QXhpcz0zRHIsVC55MUF4aXM9M0RpLFQueTJBeGlzPTNEcyxkMy5yZWJpbmQo
VCx0LCJkZWZpbmVkIiwic2l6ZSIsImNsaXA9ClZvcm9ub2kiLCJpbnRlcnBvbGF0ZSIpLFQub3B0
aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChUKSxULng9M0RmdW5jdD0KaW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZSx0LngoZSksbi54KGUpLFQpOmx9LFQueT0zRGZ1
bmN0aW9uKGUpPQp7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLHQueShlKSxuLnkoZSks
VCk6Y30sVC5tYXJnaW49M0RmdW5jdGlvbihlKXs9CnJldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1
LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDp1LnRvcCx1Lj0KcmlnaHQ9
M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OnUucmlnaHQsdS5ib3R0b209
M0R0eXBlb2YgZS5iPQpvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTp1LmJvdHRvbSx1Lmxl
ZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQ9CiI/ZS5sZWZ0OnUubGVmdCxUKTp1fSxU
LndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLD0KVCk6
YX0sVC5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUs
VCk6Zn0sVC5jb2xvcj0KPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9
M0RlLnV0aWxzLmdldENvbG9yKHQpLG8uY29sb3IoaCksPQpUKTpofSxULnNob3dMZWdlbmQ9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsVCk6cH0sVC50b289Cmx0
aXBzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9M0RlLFQpOmR9LFQu
dG9vbHRpcENvbnRlbnQ9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2
PTNEZSxUKTp2fSxULnN0YXRlPTNEZnVuY3Rpb24oZSl7cj0KZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oYj0zRGUsVCk6Yn0sVC5kZWZhdWx0U3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJnPQp1
bWVudHMubGVuZ3RoPyh3PTNEZSxUKTp3fSxULm5vRGF0YT0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyg9CkU9M0RlLFQpOkV9LFR9LGUubW9kZWxzLmxpbmVXaXRoRm9jdXND
aGFydD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gayhlKXtyZXR1cj0KbiBlLmVhY2goZnVuY3Rpb24o
ZSl7ZnVuY3Rpb24gUihlKXt2YXIgdD0zRCsoZT0zRD0zRCJlIiksbj0zRHQ/MTotMSxyPTNETy8z
PQo7cmV0dXJuIk0iKy41Km4rIiwiK3IrIkE2LDYgMCAwICIrdCsiICIrNi41Km4rIiwiKyhyKzYp
KyJWIisoMipyLTYpKyJBNiw2IDA9CiAwICIrdCsiICIrLjUqbisiLCIrMipyKyJaIisiTSIrMi41
Km4rIiwiKyhyKzgpKyJWIisoMipyLTgpKyJNIis0LjUqbisiLCIrKD0Kcis4KSsiViIrKDIqci04
KX1mdW5jdGlvbiBVKCl7YS5lbXB0eSgpfHxhLmV4dGVudCh3KSxGLmRhdGEoW2EuZW1wdHkoKT9n
LmRvPQptYWluKCk6d10pLmVhY2goZnVuY3Rpb24oZSx0KXt2YXIgbj0zRGcoZVswXSktdi5yYW5n
ZSgpWzBdLHI9M0R2LnJhbmdlKClbMV09Ci1nKGVbMV0pO2QzLnNlbGVjdCh0aGlzKS5zZWxlY3Qo
Ii5sZWZ0IikuYXR0cigid2lkdGgiLG48MD8wOm4pLGQzLnNlbGVjdCh0aD0KaXMpLnNlbGVjdCgi
LnJpZ2h0IikuYXR0cigieCIsZyhlWzFdKSkuYXR0cigid2lkdGgiLHI8MD8wOnIpfSl9ZnVuY3Rp
b24geigpPQp7dz0zRGEuZW1wdHkoKT9udWxsOmEuZXh0ZW50KCk7dmFyIG49M0RhLmVtcHR5KCk/
Zy5kb21haW4oKTphLmV4dGVudCgpO2lmKE09CmF0aC5hYnMoblswXS1uWzFdKTw9M0QxKXJldHVy
bjtULmJydXNoKHtleHRlbnQ6bixicnVzaDphfSksVSgpO3ZhciBzPTNEUC5zZT0KbGVjdCgiLm52
LWZvY3VzIC5udi1saW5lc1dyYXAiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4h
ZS5kaXNhYmxlPQpkfSkubWFwKGZ1bmN0aW9uKGUscil7cmV0dXJue2tleTplLmtleSx2YWx1ZXM6
ZS52YWx1ZXMuZmlsdGVyKGZ1bmN0aW9uKGUscik9CntyZXR1cm4gdC54KCkoZSxyKT49M0RuWzBd
JiZ0LngoKShlLHIpPD0zRG5bMV19KX19KSk7cy5jYWxsKHQpLFAuc2VsZWN0KCIubj0Kdi1mb2N1
cyAubnYteC5udi1heGlzIikuY2FsbChyKSxQLnNlbGVjdCgiLm52LWZvY3VzIC5udi15Lm52LWF4
aXMiKS5jYWxsKGkpPQp9dmFyIFM9M0RkMy5zZWxlY3QodGhpcyksTj0zRHRoaXMsTD0zRChofHxw
YXJzZUludChTLnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS09CmYubGVmdC1mLnJpZ2h0LEE9M0QocHx8
cGFyc2VJbnQoUy5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLWYudG9wLWYuYm90dG9tLWQsTz0KPTNE
ZC1sLnRvcC1sLmJvdHRvbTtrLnVwZGF0ZT0zRGZ1bmN0aW9uKCl7Uy5jYWxsKGspfSxrLmNvbnRh
aW5lcj0zRHRoaXM7aWYoPQohZXx8IWUubGVuZ3RofHwhZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0
dXJuIGUudmFsdWVzLmxlbmd0aH0pLmxlbmd0aCl7dmFyIE09Cj0zRFMuc2VsZWN0QWxsKCIubnYt
bm9EYXRhIikuZGF0YShbeF0pO3JldHVybiBNLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cj0K
KCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0
LWFuY2hvciIsIm1pZGRsZSIpPQosTS5hdHRyKCJ4IixmLmxlZnQrTC8yKS5hdHRyKCJ5IixmLnRv
cCtBLzIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxrfVM9Ci5zZWxlY3RBbGwoIi5udi1u
b0RhdGEiKS5yZW1vdmUoKSx2PTNEdC54U2NhbGUoKSxtPTNEdC55U2NhbGUoKSxnPTNEbi54U2Nh
bD0KZSgpLHk9M0RuLnlTY2FsZSgpO3ZhciBfPTNEUy5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1s
aW5lV2l0aEZvY3VzQ2hhcnQiKS5kPQphdGEoW2VdKSxEPTNEXy5lbnRlcigpLmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LWxpbmVXaXRoRm89CmN1c0NoYXJ0IikuYXBw
ZW5kKCJnIiksUD0zRF8uc2VsZWN0KCJnIik7RC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52
LWxlZz0KZW5kV3JhcCIpO3ZhciBIPTNERC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWZv
Y3VzIik7SC5hcHBlbmQoImciKS5hdHRyPQooImNsYXNzIiwibnYteCBudi1heGlzIiksSC5hcHBl
bmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkgbnYtYXhpcyIpLEguYXBwZW49CmQoImciKS5hdHRy
KCJjbGFzcyIsIm52LWxpbmVzV3JhcCIpO3ZhciBCPTNERC5hcHBlbmQoImciKS5hdHRyKCJjbGFz
cyIsIm52LT0KY29udGV4dCIpO0IuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14IG52LWF4
aXMiKSxCLmFwcGVuZCgiZyIpLmF0dHIoImNsPQphc3MiLCJudi15IG52LWF4aXMiKSxCLmFwcGVu
ZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGluZXNXcmFwIiksQi5hcHBlbmQoImc9CiIpLmF0dHIo
ImNsYXNzIiwibnYtYnJ1c2hCYWNrZ3JvdW5kIiksQi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIs
Im52LXggbnYtYj0KcnVzaCIpLGImJih1LndpZHRoKEwpLFAuc2VsZWN0KCIubnYtbGVnZW5kV3Jh
cCIpLmRhdHVtKGUpLmNhbGwodSksZi50b3AhPTNEPQp1LmhlaWdodCgpJiYoZi50b3A9M0R1Lmhl
aWdodCgpLEE9M0QocHx8cGFyc2VJbnQoUy5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLWY9Ci50b3At
Zi5ib3R0b20tZCksUC5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuYXR0cigidHJhbnNmb3JtIiwi
dHJhbnNsYXRlKDAsIj0KKyAtZi50b3ArIikiKSksXy5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xh
dGUoIitmLmxlZnQrIiwiK2YudG9wKyIpIiksdC53aWR0PQpoKEwpLmhlaWdodChBKS5jb2xvcihl
Lm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxjKGUsdCl9KS5maWx0ZXIoZnU9Cm5j
dGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkfSkpLG4uZGVmaW5lZCh0LmRlZmluZWQoKSku
d2lkdGgoTCkuaGVpZ2h0KD0KTykuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5j
b2xvcnx8YyhlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7PQpyZXR1cm4hZVtuXS5kaXNhYmxl
ZH0pKSxQLnNlbGVjdCgiLm52LWNvbnRleHQiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGU9
CigwLCIrKEErZi5ib3R0b20rbC50b3ApKyIpIik7dmFyIGo9M0RQLnNlbGVjdCgiLm52LWNvbnRl
eHQgLm52LWxpbmVzV3JhcCIpLj0KZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUu
ZGlzYWJsZWR9KSk7ZDMudHJhbnNpdGlvbihqKS5jYWxsKG4pLHIuPQpzY2FsZSh2KS50aWNrcyhM
LzEwMCkudGlja1NpemUoLUEsMCksaS5zY2FsZShtKS50aWNrcyhBLzM2KS50aWNrU2l6ZSgtTCww
KSw9ClAuc2VsZWN0KCIubnYtZm9jdXMgLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIs
InRyYW5zbGF0ZSgwLCIrQSsiKSIpLD0KYS54KGcpLm9uKCJicnVzaCIsZnVuY3Rpb24oKXt2YXIg
ZT0zRGsudHJhbnNpdGlvbkR1cmF0aW9uKCk7ay50cmFuc2l0aW9uRHVyPQphdGlvbigwKSx6KCks
ay50cmFuc2l0aW9uRHVyYXRpb24oZSl9KSx3JiZhLmV4dGVudCh3KTt2YXIgRj0zRFAuc2VsZWN0
KCIubnY9Ci1icnVzaEJhY2tncm91bmQiKS5zZWxlY3RBbGwoImciKS5kYXRhKFt3fHxhLmV4dGVu
dCgpXSksST0zREYuZW50ZXIoKS5hcHBlbj0KZCgiZyIpO0kuYXBwZW5kKCJyZWN0IikuYXR0cigi
Y2xhc3MiLCJsZWZ0IikuYXR0cigieCIsMCkuYXR0cigieSIsMCkuYXR0cigiPQpoZWlnaHQiLE8p
LEkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJyaWdodCIpLmF0dHIoIngiLDApLmF0dHIo
InkiLDApLmE9CnR0cigiaGVpZ2h0IixPKTt2YXIgcT0zRFAuc2VsZWN0KCIubnYteC5udi1icnVz
aCIpLmNhbGwoYSk7cS5zZWxlY3RBbGwoInJlYz0KdCIpLmF0dHIoImhlaWdodCIsTykscS5zZWxl
Y3RBbGwoIi5yZXNpemUiKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIixSKSx6KCksPQpzLnNjYWxl
KGcpLnRpY2tzKEwvMTAwKS50aWNrU2l6ZSgtTywwKSxQLnNlbGVjdCgiLm52LWNvbnRleHQgLm52
LXgubnYtYXhpcyI9CikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIit5LnJhbmdlKClb
MF0rIikiKSxkMy50cmFuc2l0aW9uKFAuc2VsZWN0KD0KIi5udi1jb250ZXh0IC5udi14Lm52LWF4
aXMiKSkuY2FsbChzKSxvLnNjYWxlKHkpLnRpY2tzKE8vMzYpLnRpY2tTaXplKC1MLDApPQosZDMu
dHJhbnNpdGlvbihQLnNlbGVjdCgiLm52LWNvbnRleHQgLm52LXkubnYtYXhpcyIpKS5jYWxsKG8p
LFAuc2VsZWN0KCIubnY9Ci1jb250ZXh0IC5udi14Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0i
LCJ0cmFuc2xhdGUoMCwiK3kucmFuZ2UoKVswXSsiKSIpLD0KdS5kaXNwYXRjaC5vbigic3RhdGVD
aGFuZ2UiLGZ1bmN0aW9uKGUpe2sudXBkYXRlKCl9KSxULm9uKCJ0b29sdGlwU2hvdyIsZnVuPQpj
dGlvbihlKXtFJiZDKGUsTi5wYXJlbnROb2RlKX0pfSksa312YXIgdD0zRGUubW9kZWxzLmxpbmUo
KSxuPTNEZS5tb2RlbHMubGk9Cm5lKCkscj0zRGUubW9kZWxzLmF4aXMoKSxpPTNEZS5tb2RlbHMu
YXhpcygpLHM9M0RlLm1vZGVscy5heGlzKCksbz0zRGUubW9kZT0KbHMuYXhpcygpLHU9M0RlLm1v
ZGVscy5sZWdlbmQoKSxhPTNEZDMuc3ZnLmJydXNoKCksZj0zRHt0b3A6MzAscmlnaHQ6MzAsYm90
PQp0b206MzAsbGVmdDo2MH0sbD0zRHt0b3A6MCxyaWdodDozMCxib3R0b206MjAsbGVmdDo2MH0s
Yz0zRGUudXRpbHMuZGVmYXVsdEM9Cm9sb3IoKSxoPTNEbnVsbCxwPTNEbnVsbCxkPTNEMTAwLHYs
bSxnLHksYj0zRCEwLHc9M0RudWxsLEU9M0QhMCxTPTNEZnVuY3Rpbz0KbihlLHQsbixyLGkpe3Jl
dHVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIrbisiIGF0ICIrdCsiPC9wPiJ9LHg9M0QiTm8gRGF0
YSBBPQp2YWlsYWJsZS4iLFQ9M0RkMy5kaXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlk
ZSIsImJydXNoIiksTj0zRDA7dC5jbGk9CnBFZGdlKCEwKSxuLmludGVyYWN0aXZlKCExKSxyLm9y
aWVudCgiYm90dG9tIikudGlja1BhZGRpbmcoNSksaS5vcmllbnQoImxlZj0KdCIpLHMub3JpZW50
KCJib3R0b20iKS50aWNrUGFkZGluZyg1KSxvLm9yaWVudCgibGVmdCIpO3ZhciBDPTNEZnVuY3Rp
b24obixzPQope3ZhciBvPTNEbi5wb3NbMF0rKHMub2Zmc2V0TGVmdHx8MCksdT0zRG4ucG9zWzFd
KyhzLm9mZnNldFRvcHx8MCksYT0zRHIudGk9CmNrRm9ybWF0KCkodC54KCkobi5wb2ludCxuLnBv
aW50SW5kZXgpKSxmPTNEaS50aWNrRm9ybWF0KCkodC55KCkobi5wb2ludCxuLj0KcG9pbnRJbmRl
eCkpLGw9M0RTKG4uc2VyaWVzLmtleSxhLGYsbixrKTtlLnRvb2x0aXAuc2hvdyhbbyx1XSxsLG51
bGwsbnVsbCxzPQopfTtyZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29s
dGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnA9Cm9zWzBdK2YubGVmdCxlLnBvc1sxXStmLnRv
cF0sVC50b29sdGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZT0Kb3V0LnRv
b2x0aXAiLGZ1bmN0aW9uKGUpe1QudG9vbHRpcEhpZGUoZSl9KSxULm9uKCJ0b29sdGlwSGlkZSIs
ZnVuY3Rpb24oKXtFPQomJmUudG9vbHRpcC5jbGVhbnVwKCl9KSxrLmRpc3BhdGNoPTNEVCxrLmxl
Z2VuZD0zRHUsay5saW5lcz0zRHQsay5saW5lczI9M0Q9Cm4say54QXhpcz0zRHIsay55QXhpcz0z
RGksay54MkF4aXM9M0RzLGsueTJBeGlzPTNEbyxkMy5yZWJpbmQoayx0LCJkZWZpbmVkIj0KLCJp
c0FyZWEiLCJzaXplIiwieERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJmb3Jj
ZVgiLCJmb3JjZVkiLCJpPQpudGVyYWN0aXZlIiwiY2xpcEVkZ2UiLCJjbGlwVm9yb25vaSIsImlk
Iiksay5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy49CmJpbmQoayksay54PTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQueChlKSxuLngoZSksayk6dC54fSxrLj0K
eT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnkoZSksbi55KGUpLGsp
OnQueX0say5tYXJnaW49M0RmPQp1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhm
LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnQ9Cm9wOmYudG9wLGYucmlnaHQ9
M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OmYucmlnaHQsZi5ib3R0b209
Cj0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTpmLmJvdHRvbSxmLmxl
ZnQ9M0R0eXBlb2YgZS5sZWZ0IT0KPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OmYubGVmdCxrKTpmfSxr
Lm1hcmdpbjI9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzPQoubGVuZ3RoPyhsPTNEZSxr
KTpsfSxrLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9M0Rl
LGs9Cik6aH0say5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
cD0zRGUsayk6cH0say5oZWlnaHQyPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oZD0zRGUsayk6ZH0say5jb2xvcj0zRGZ1bmN0aW9uKHQpe3I9CmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGM9M0RlLnV0aWxzLmdldENvbG9yKHQpLHUuY29sb3IoYyksayk6Y30say5zaG93
TGVnZT0KbmQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0zRGUsayk6
Yn0say50b29sdGlwcz0zRGZ1bmN0aW9uPQooZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9
M0RlLGspOkV9LGsudG9vbHRpcENvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXQ9CnVybiBhcmd1bWVu
dHMubGVuZ3RoPyhTPTNEZSxrKTpTfSxrLmludGVycG9sYXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZT0KbnRzLmxlbmd0aD8odC5pbnRlcnBvbGF0ZShlKSxuLmludGVycG9sYXRlKGUpLGsp
OnQuaW50ZXJwb2xhdGUoKX0say5ub0RhdGE9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyh4PTNEZSxrKTp4fSxrLnhUaWNrRm9ybWF0PTNEZnVuY3Rpbz0KbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oci50aWNrRm9ybWF0KGUpLHMudGlja0Zvcm1hdChlKSxrKTpy
LnRpY2tGb3JtPQphdCgpfSxrLnlUaWNrRm9ybWF0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGkudGlja0Zvcm1hdChlKSw9Cm8udGlja0Zvcm1hdChlKSxrKTppLnRpY2tG
b3JtYXQoKX0say5icnVzaEV4dGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bT0KZW50cy5s
ZW5ndGg/KHc9M0RlLGspOnd9LGsudHJhbnNpdGlvbkR1cmF0aW9uPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50PQpzLmxlbmd0aD8oTj0zRGUsayk6Tn0sa30sZS5tb2RlbHMubGluZVBsdXNC
YXJXaXRoRm9jdXNDaGFydD0zRGZ1bmN0aW9uKCl7ZnU9Cm5jdGlvbiBCKGUpe3JldHVybiBlLmVh
Y2goZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdHQoZSl7dmFyIHQ9M0QrKGU9M0Q9M0QiZSIpLD0Kbj0z
RHQ/MTotMSxyPTNESS8zO3JldHVybiJNIisuNSpuKyIsIityKyJBNiw2IDAgMCAiK3QrIiAiKzYu
NSpuKyIsIisocis2KSsiPQpWIisoMipyLTYpKyJBNiw2IDAgMCAiK3QrIiAiKy41Km4rIiwiKzIq
cisiWiIrIk0iKzIuNSpuKyIsIisocis4KSsiViIrKDIqci09CjgpKyJNIis0LjUqbisiLCIrKHIr
OCkrIlYiKygyKnItOCl9ZnVuY3Rpb24gbnQoKXtoLmVtcHR5KCl8fGguZXh0ZW50KHgpLFkuZD0K
YXRhKFtoLmVtcHR5KCk/ay5kb21haW4oKTp4XSkuZWFjaChmdW5jdGlvbihlLHQpe3ZhciBuPTNE
ayhlWzBdKS1rLnJhbmdlKClbPQowXSxyPTNEay5yYW5nZSgpWzFdLWsoZVsxXSk7ZDMuc2VsZWN0
KHRoaXMpLnNlbGVjdCgiLmxlZnQiKS5hdHRyKCJ3aWR0aCIsbjw9CjA/MDpuKSxkMy5zZWxlY3Qo
dGhpcykuc2VsZWN0KCIucmlnaHQiKS5hdHRyKCJ4IixrKGVbMV0pKS5hdHRyKCJ3aWR0aCIscjww
Pz0KMDpyKX0pfWZ1bmN0aW9uIHJ0KCl7eD0zRGguZW1wdHkoKT9udWxsOmguZXh0ZW50KCksUz0z
RGguZW1wdHkoKT9rLmRvbWFpbigpPQo6aC5leHRlbnQoKSxELmJydXNoKHtleHRlbnQ6UyxicnVz
aDpofSksbnQoKSxyLndpZHRoKGopLmhlaWdodChGKS5jb2xvcihlLm09CmFwKGZ1bmN0aW9uKGUs
dCl7cmV0dXJuIGUuY29sb3J8fHcoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFl
W25dLj0KZGlzYWJsZWQmJmVbbl0uYmFyfSkpLHQud2lkdGgoaikuaGVpZ2h0KEYpLmNvbG9yKGUu
bWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuPQogZS5jb2xvcnx8dyhlLHQpfSkuZmlsdGVyKGZ1bmN0
aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWQmJiFlW25dLmJhcn0pKTs9CnZhciBuPTNEJC5z
ZWxlY3QoIi5udi1mb2N1cyAubnYtYmFyc1dyYXAiKS5kYXR1bShSLmxlbmd0aD9SLm1hcChmdW5j
dGlvbihlLD0KdCl7cmV0dXJue2tleTplLmtleSx2YWx1ZXM6ZS52YWx1ZXMuZmlsdGVyKGZ1bmN0
aW9uKGUsdCl7cmV0dXJuIHIueCgpKGUsdCk+PQo9M0RTWzBdJiZyLngoKShlLHQpPD0zRFNbMV19
KX19KTpbe3ZhbHVlczpbXX1dKSxpPTNEJC5zZWxlY3QoIi5udi1mb2N1cyAubnY9Ci1saW5lc1dy
YXAiKS5kYXR1bShVWzBdLmRpc2FibGVkP1t7dmFsdWVzOltdfV06VS5tYXAoZnVuY3Rpb24oZSxu
KXtyZXR1cm57az0KZXk6ZS5rZXksdmFsdWVzOmUudmFsdWVzLmZpbHRlcihmdW5jdGlvbihlLG4p
e3JldHVybiB0LngoKShlLG4pPj0zRFNbMF0mJnQuPQp4KCkoZSxuKTw9M0RTWzFdfSl9fSkpO1Iu
bGVuZ3RoP0M9M0RyLnhTY2FsZSgpOkM9M0R0LnhTY2FsZSgpLHMuc2NhbGUoQykudGk9CmNrcyhq
LzEwMCkudGlja1NpemUoLUYsMCkscy5kb21haW4oW01hdGguY2VpbChTWzBdKSxNYXRoLmZsb29y
KFNbMV0pXSksJC5zZT0KbGVjdCgiLm52LXgubnYtYXhpcyIpLmNhbGwocyksbi5jYWxsKHIpLGku
Y2FsbCh0KSwkLnNlbGVjdCgiLm52LWZvY3VzIC5udi14PQoubnYtYXhpcyIpLmF0dHIoInRyYW5z
Zm9ybSIsInRyYW5zbGF0ZSgwLCIrTC5yYW5nZSgpWzBdKyIpIiksdS5zY2FsZShMKS50aWM9Cmtz
KEYvMzYpLnRpY2tTaXplKC1qLDApLCQuc2VsZWN0KCIubnYtZm9jdXMgLm52LXkxLm52LWF4aXMi
KS5zdHlsZSgib3BhY2l0eT0KIixSLmxlbmd0aD8xOjApLGEuc2NhbGUoQSkudGlja3MoRi8zNiku
dGlja1NpemUoUi5sZW5ndGg/MDotaiwwKSwkLnNlbGVjdCgiPQoubnYtZm9jdXMgLm52LXkyLm52
LWF4aXMiKS5zdHlsZSgib3BhY2l0eSIsVS5sZW5ndGg/MTowKS5hdHRyKCJ0cmFuc2Zvcm0iLCI9
CnRyYW5zbGF0ZSgiK0MucmFuZ2UoKVsxXSsiLDApIiksJC5zZWxlY3QoIi5udi1mb2N1cyAubnYt
eTEubnYtYXhpcyIpLmNhbGwodT0KKSwkLnNlbGVjdCgiLm52LWZvY3VzIC5udi15Mi5udi1heGlz
IikuY2FsbChhKX12YXIgTj0zRGQzLnNlbGVjdCh0aGlzKSxQPTNEPQp0aGlzLGo9M0Qodnx8cGFy
c2VJbnQoTi5zdHlsZSgid2lkdGgiKSl8fDk2MCktcC5sZWZ0LXAucmlnaHQsRj0zRChtfHxwYXJz
ZUk9Cm50KE4uc3R5bGUoImhlaWdodCIpKXx8NDAwKS1wLnRvcC1wLmJvdHRvbS1nLEk9M0RnLWQu
dG9wLWQuYm90dG9tO0IudXBkYXRlPQo9M0RmdW5jdGlvbigpe04uY2FsbChCKX0sQi5jb250YWlu
ZXI9M0R0aGlzO2lmKCFlfHwhZS5sZW5ndGh8fCFlLmZpbHRlcihmdW49CmN0aW9uKGUpe3JldHVy
biBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgpe3ZhciBxPTNETi5zZWxlY3RBbGwoIi5udi1ub0Rh
dGEiKT0KLmRhdGEoW19dKTtyZXR1cm4gcS5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNs
YXNzIiwibnZkMyBudi1ub0RhdGEiKS5hPQp0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1h
bmNob3IiLCJtaWRkbGUiKSxxLmF0dHIoIngiLHAubGVmdCtqLzIpLmF0dHI9CigieSIscC50b3Ar
Ri8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksQn1OLnNlbGVjdEFsbCgiLm52LW5vRGF0
YSIpLnJlbT0Kb3ZlKCk7dmFyIFI9M0RlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNh
YmxlZCYmZS5iYXJ9KSxVPTNEZS5maWx0ZXIoPQpmdW5jdGlvbihlKXtyZXR1cm4hZS5iYXJ9KTtD
PTNEci54U2NhbGUoKSxrPTNEby5zY2FsZSgpLEw9M0RyLnlTY2FsZSgpLEE9M0Q9CnQueVNjYWxl
KCksTz0zRGkueVNjYWxlKCksTT0zRG4ueVNjYWxlKCk7dmFyIHo9M0RlLmZpbHRlcihmdW5jdGlv
bihlKXtyZXR1cj0KbiFlLmRpc2FibGVkJiZlLmJhcn0pLm1hcChmdW5jdGlvbihlKXtyZXR1cm4g
ZS52YWx1ZXMubWFwKGZ1bmN0aW9uKGUsdCl7cmV0PQp1cm57eDp5KGUsdCkseTpiKGUsdCl9fSl9
KSxXPTNEZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQmJiFlLmI9CmFyfSku
bWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm57
eDp5KGUsdCkseTpiKD0KZSx0KX19KX0pO0MucmFuZ2UoWzAsal0pLGsuZG9tYWluKGQzLmV4dGVu
dChkMy5tZXJnZSh6LmNvbmNhdChXKSksZnVuY3Rpb24oPQplKXtyZXR1cm4gZS54fSkpLnJhbmdl
KFswLGpdKTt2YXIgWD0zRE4uc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtbGluZVBsdXNCYXI9CiIp
LmRhdGEoW2VdKSxWPTNEWC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBu
di13cmFwIG52LWxpbmVQbD0KdXNCYXIiKS5hcHBlbmQoImciKSwkPTNEWC5zZWxlY3QoImciKTtW
LmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kPQpXcmFwIik7dmFyIEo9M0RWLmFw
cGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtZm9jdXMiKTtKLmFwcGVuZCgiZyIpLmF0dHIoImM9
Cmxhc3MiLCJudi14IG52LWF4aXMiKSxKLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteTEg
bnYtYXhpcyIpLEouYXBwZW5kKD0KImciKS5hdHRyKCJjbGFzcyIsIm52LXkyIG52LWF4aXMiKSxK
LmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYmFyc1dyYXAiPQopLEouYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJudi1saW5lc1dyYXAiKTt2YXIgSz0zRFYuYXBwZW5kKCJnIikuYXR0cigi
Y2w9CmFzcyIsIm52LWNvbnRleHQiKTtLLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBu
di1heGlzIiksSy5hcHBlbmQoImciKT0KLmF0dHIoImNsYXNzIiwibnYteTEgbnYtYXhpcyIpLEsu
YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15MiBudi1heGlzIiksPQpLLmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnYtYmFyc1dyYXAiKSxLLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwi
bnYtbGk9Cm5lc1dyYXAiKSxLLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYnJ1c2hCYWNr
Z3JvdW5kIiksSy5hcHBlbmQoImciKS5hdD0KdHIoImNsYXNzIiwibnYteCBudi1icnVzaCIpLEUm
JihjLndpZHRoKGovMiksJC5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuZGF0PQp1bShlLm1hcChm
dW5jdGlvbihlKXtyZXR1cm4gZS5vcmlnaW5hbEtleT0zRGUub3JpZ2luYWxLZXk9M0Q9M0Q9M0R1
bmRlZmluZWQ9Cj9lLmtleTplLm9yaWdpbmFsS2V5LGUua2V5PTNEZS5vcmlnaW5hbEtleSsoZS5i
YXI/IiAobGVmdCBheGlzKSI6IiAocmlnaHQgYT0KeGlzKSIpLGV9KSkuY2FsbChjKSxwLnRvcCE9
M0RjLmhlaWdodCgpJiYocC50b3A9M0RjLmhlaWdodCgpLEY9M0QobXx8cGFyc2VJPQpudChOLnN0
eWxlKCJoZWlnaHQiKSl8fDQwMCktcC50b3AtcC5ib3R0b20tZyksJC5zZWxlY3QoIi5udi1sZWdl
bmRXcmFwIikuYXQ9CnRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitqLzIrIiwiKyAtcC50b3Ar
IikiKSksWC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFucz0KbGF0ZSgiK3AubGVmdCsiLCIrcC50b3Ar
IikiKSxpLndpZHRoKGopLmhlaWdodChJKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpPQp7cmV0
dXJuIGUuY29sb3J8fHcoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRp
c2FibGVkJiZlW25dLmI9CmFyfSkpLG4ud2lkdGgoaikuaGVpZ2h0KEkpLmNvbG9yKGUubWFwKGZ1
bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fHcoZSx0KT0KfSkuZmlsdGVyKGZ1bmN0aW9uKHQs
bil7cmV0dXJuIWVbbl0uZGlzYWJsZWQmJiFlW25dLmJhcn0pKTt2YXIgUT0zRCQuc2VsZWN0PQoo
Ii5udi1jb250ZXh0IC5udi1iYXJzV3JhcCIpLmRhdHVtKFIubGVuZ3RoP1I6W3t2YWx1ZXM6W119
XSksRz0zRCQuc2VsZWN0KCI9Ci5udi1jb250ZXh0IC5udi1saW5lc1dyYXAiKS5kYXR1bShVWzBd
LmRpc2FibGVkP1t7dmFsdWVzOltdfV06VSk7JC5zZWxlY3QoIj0KLm52LWNvbnRleHQiKS5hdHRy
KCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiKyhGK3AuYm90dG9tK2QudG9wKSsiKSIpLFEuY2Fs
PQpsKGkpLEcuY2FsbChuKSxoLngoaykub24oImJydXNoIixydCkseCYmaC5leHRlbnQoeCk7dmFy
IFk9M0QkLnNlbGVjdCgiLm52LWI9CnJ1c2hCYWNrZ3JvdW5kIikuc2VsZWN0QWxsKCJnIikuZGF0
YShbeHx8aC5leHRlbnQoKV0pLFo9M0RZLmVudGVyKCkuYXBwZW5kKD0KImciKTtaLmFwcGVuZCgi
cmVjdCIpLmF0dHIoImNsYXNzIiwibGVmdCIpLmF0dHIoIngiLDApLmF0dHIoInkiLDApLmF0dHIo
ImhlPQppZ2h0IixJKSxaLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwicmlnaHQiKS5hdHRy
KCJ4IiwwKS5hdHRyKCJ5IiwwKS5hdHQ9CnIoImhlaWdodCIsSSk7dmFyIGV0PTNEJC5zZWxlY3Qo
Ii5udi14Lm52LWJydXNoIikuY2FsbChoKTtldC5zZWxlY3RBbGwoInJlYz0KdCIpLmF0dHIoImhl
aWdodCIsSSksZXQuc2VsZWN0QWxsKCIucmVzaXplIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIs
dHQpLG8uPQp0aWNrcyhqLzEwMCkudGlja1NpemUoLUksMCksJC5zZWxlY3QoIi5udi1jb250ZXh0
IC5udi14Lm52LWF4aXMiKS5hdHRyKCJ0cmE9Cm5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrTy5yYW5n
ZSgpWzBdKyIpIiksJC5zZWxlY3QoIi5udi1jb250ZXh0IC5udi14Lm52LWF4aT0KcyIpLmNhbGwo
byksZi5zY2FsZShPKS50aWNrcyhJLzM2KS50aWNrU2l6ZSgtaiwwKSwkLnNlbGVjdCgiLm52LWNv
bnRleHQgLm52PQoteTEubnYtYXhpcyIpLnN0eWxlKCJvcGFjaXR5IixSLmxlbmd0aD8xOjApLmF0
dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCI9CitrLnJhbmdlKClbMF0rIikiKSwkLnNlbGVj
dCgiLm52LWNvbnRleHQgLm52LXkxLm52LWF4aXMiKS5jYWxsKGYpLGwuc2NhbGUoTT0KKS50aWNr
cyhJLzM2KS50aWNrU2l6ZShSLmxlbmd0aD8wOi1qLDApLCQuc2VsZWN0KCIubnYtY29udGV4dCAu
bnYteTIubnYtYXhpPQpzIikuc3R5bGUoIm9wYWNpdHkiLFUubGVuZ3RoPzE6MCkuYXR0cigidHJh
bnNmb3JtIiwidHJhbnNsYXRlKCIray5yYW5nZSgpWzE9Cl0rIiwwKSIpLCQuc2VsZWN0KCIubnYt
Y29udGV4dCAubnYteTIubnYtYXhpcyIpLmNhbGwobCksYy5kaXNwYXRjaC5vbigic3RhdD0KZUNo
YW5nZSIsZnVuY3Rpb24oZSl7Qi51cGRhdGUoKX0pLEQub24oInRvb2x0aXBTaG93IixmdW5jdGlv
bihlKXtUJiZIKGUsUC5wPQphcmVudE5vZGUpfSkscnQoKX0pLEJ9dmFyIHQ9M0RlLm1vZGVscy5s
aW5lKCksbj0zRGUubW9kZWxzLmxpbmUoKSxyPTNEZS5tb2Q9CmVscy5oaXN0b3JpY2FsQmFyKCks
aT0zRGUubW9kZWxzLmhpc3RvcmljYWxCYXIoKSxzPTNEZS5tb2RlbHMuYXhpcygpLG89M0RlLj0K
bW9kZWxzLmF4aXMoKSx1PTNEZS5tb2RlbHMuYXhpcygpLGE9M0RlLm1vZGVscy5heGlzKCksZj0z
RGUubW9kZWxzLmF4aXMoKSxsPQo9M0RlLm1vZGVscy5heGlzKCksYz0zRGUubW9kZWxzLmxlZ2Vu
ZCgpLGg9M0RkMy5zdmcuYnJ1c2goKSxwPTNEe3RvcDozMCxyaWc9Cmh0OjMwLGJvdHRvbTozMCxs
ZWZ0OjYwfSxkPTNEe3RvcDowLHJpZ2h0OjMwLGJvdHRvbToyMCxsZWZ0OjYwfSx2PTNEbnVsbCxt
PQo9M0RudWxsLGc9M0QxMDAseT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9LGI9M0RmdW5jdGlv
bihlKXtyZXR1cm4gZS55fSx3PQo9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLEU9M0QhMCxTLHg9
M0RudWxsLFQ9M0QhMCxOPTNEZnVuY3Rpb24oZSx0LG4scixpKXs9CnJldHVybiI8aDM+IitlKyI8
L2gzPiIrIjxwPiIrbisiIGF0ICIrdCsiPC9wPiJ9LEMsayxMLEEsTyxNLF89M0QiTm8gRGF0YSBB
dj0KYWlsYWJsZS4iLEQ9M0RkMy5kaXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlkZSIs
ImJydXNoIiksUD0zRDA7dC5jbGlwPQpFZGdlKCEwKSxuLmludGVyYWN0aXZlKCExKSxzLm9yaWVu
dCgiYm90dG9tIikudGlja1BhZGRpbmcoNSksdS5vcmllbnQoImxlZnQ9CiIpLGEub3JpZW50KCJy
aWdodCIpLG8ub3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg1KSxmLm9yaWVudCgibGVmdCIp
LGwubz0KcmllbnQoInJpZ2h0Iik7dmFyIEg9M0RmdW5jdGlvbihuLHIpe1MmJihuLnBvaW50SW5k
ZXgrPTNETWF0aC5jZWlsKFNbMF0pKTt2PQphciBpPTNEbi5wb3NbMF0rKHIub2Zmc2V0TGVmdHx8
MCksbz0zRG4ucG9zWzFdKyhyLm9mZnNldFRvcHx8MCksZj0zRHMudGlja0Y9Cm9ybWF0KCkodC54
KCkobi5wb2ludCxuLnBvaW50SW5kZXgpKSxsPTNEKG4uc2VyaWVzLmJhcj91OmEpLnRpY2tGb3Jt
YXQoKSh0Lj0KeSgpKG4ucG9pbnQsbi5wb2ludEluZGV4KSksYz0zRE4obi5zZXJpZXMua2V5LGYs
bCxuLEIpO2UudG9vbHRpcC5zaG93KFtpLG9dPQosYyxuLnZhbHVlPDA/Im4iOiJzIixudWxsLHIp
fTtyZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGk9CnAiLGZ1bmN0
aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK3AubGVmdCxlLnBvc1sxXStwLnRvcF0sRC50b29sdGlw
U2hvdyhlKX0pLD0KdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0
aW9uKGUpe0QudG9vbHRpcEhpZGUoZSl9KSxyLmRpPQpzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92
ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rcC5sZWZ0LGU9Ci5wb3Nb
MV0rcC50b3BdLEQudG9vbHRpcFNob3coZSl9KSxyLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2Vv
dXQudG9vbHRpcCIsZj0KdW5jdGlvbihlKXtELnRvb2x0aXBIaWRlKGUpfSksRC5vbigidG9vbHRp
cEhpZGUiLGZ1bmN0aW9uKCl7VCYmZS50b29sdGlwLmNsPQplYW51cCgpfSksQi5kaXNwYXRjaD0z
REQsQi5sZWdlbmQ9M0RjLEIubGluZXM9M0R0LEIubGluZXMyPTNEbixCLmJhcnM9M0RyLEI9Ci5i
YXJzMj0zRGksQi54QXhpcz0zRHMsQi54MkF4aXM9M0RvLEIueTFBeGlzPTNEdSxCLnkyQXhpcz0z
RGEsQi55M0F4aXM9M0RmLD0KQi55NEF4aXM9M0RsLGQzLnJlYmluZChCLHQsImRlZmluZWQiLCJz
aXplIiwiY2xpcFZvcm9ub2kiLCJpbnRlcnBvbGF0ZSIpLEIuPQpvcHRpb25zPTNEZS51dGlscy5v
cHRpb25zRnVuYy5iaW5kKEIpLEIueD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGU9
Cm5ndGg/KHk9M0RlLHQueChlKSxyLngoZSksQik6eX0sQi55PTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KD0KYj0zRGUsdC55KGUpLHIueShlKSxCKTpifSxCLm1hcmdpbj0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPQoudG9wPTNEdHlwZW9mIGUu
dG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnAudG9wLHAucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9
M0Q9CiJ1bmRlZmluZWQiP2UucmlnaHQ6cC5yaWdodCxwLmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRv
bSE9M0QidW5kZWZpbmVkIj9lLmJvdD0KdG9tOnAuYm90dG9tLHAubGVmdD0zRHR5cGVvZiBlLmxl
ZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnAubGVmdCxCKTpwfSxCLndpPQpkdGg9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj0zRGUsQik6dn0sQi5oZWlnaHQ9M0RmdW5j
dGlvbig9CmUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNEZSxCKTptfSxCLmNvbG9yPTNE
ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZT0KbnRzLmxlbmd0aD8odz0zRGUudXRpbHMuZ2V0Q29s
b3IodCksYy5jb2xvcih3KSxCKTp3fSxCLnNob3dMZWdlbmQ9M0RmdW5jdGlvPQpuKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhFPTNEZSxCKTpFfSxCLnRvb2x0aXBzPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGE9CnJndW1lbnRzLmxlbmd0aD8oVD0zRGUsQik6VH0sQi50b29sdGlwQ29udGVudD0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudD0Kcy5sZW5ndGg/KE49M0RlLEIpOk59LEIubm9E
YXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KF89M0RlPQosQik6X30s
Qi5icnVzaEV4dGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh4PTNE
ZSxCKTp4fSxCfSw9CmUubW9kZWxzLm11bHRpQmFyPTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBDKGUp
e3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyID0KZz0zRG4tdC5sZWZ0LXQucmlnaHQsQz0z
RHItdC50b3AtdC5ib3R0b20saz0zRGQzLnNlbGVjdCh0aGlzKTtkJiZlLmxlbmd0aCYmPQooZD0z
RFt7dmFsdWVzOmVbMF0udmFsdWVzLm1hcChmdW5jdGlvbihlKXtyZXR1cm57eDplLngseTowLHNl
cmllczplLnNlcmllcyw9CnNpemU6LjAxfX0pfV0pLGMmJihlPTNEZDMubGF5b3V0LnN0YWNrKCku
b2Zmc2V0KGgpLnZhbHVlcyhmdW5jdGlvbihlKXtyZXR1cj0KbiBlLnZhbHVlc30pLnkoYSkoIWUu
bGVuZ3RoJiZkP2Q6ZSkpLGUuZm9yRWFjaChmdW5jdGlvbihlLHQpe2UudmFsdWVzLmZvckVhPQpj
aChmdW5jdGlvbihlKXtlLnNlcmllcz0zRHR9KX0pLGMmJmVbMF0udmFsdWVzLm1hcChmdW5jdGlv
bih0LG4pe3ZhciByPTNEMCw9Cmk9M0QwO2UubWFwKGZ1bmN0aW9uKGUpe3ZhciB0PTNEZS52YWx1
ZXNbbl07dC5zaXplPTNETWF0aC5hYnModC55KSx0Lnk8MD8odD0KLnkxPTNEaSxpLT0zRHQuc2l6
ZSk6KHQueTE9M0R0LnNpemUrcixyKz0zRHQuc2l6ZSl9KX0pO3ZhciBMPTNEeSYmYj9bXTplLm1h
PQpwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm57
eDp1KGUsdCkseTphKGUsdCkseTA9CjplLnkwLHkxOmUueTF9fSl9KTtpLmRvbWFpbih5fHxkMy5t
ZXJnZShMKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0pKS5yYT0KbmdlQmFuZHMod3x8WzAs
Z10sUykscy5kb21haW4oYnx8ZDMuZXh0ZW50KGQzLm1lcmdlKEwpLm1hcChmdW5jdGlvbihlKXty
ZXR1PQpybiBjP2UueT4wP2UueTE6ZS55MStlLnk6ZS55fSkuY29uY2F0KGYpKSkucmFuZ2UoRXx8
W0MsMF0pLGkuZG9tYWluKClbMF09M0Q9Cj0zRD0zRGkuZG9tYWluKClbMV0mJihpLmRvbWFpbigp
WzBdP2kuZG9tYWluKFtpLmRvbWFpbigpWzBdLWkuZG9tYWluKClbMF0qLj0KMDEsaS5kb21haW4o
KVsxXStpLmRvbWFpbigpWzFdKi4wMV0pOmkuZG9tYWluKFstMSwxXSkpLHMuZG9tYWluKClbMF09
M0Q9M0Q9Cj0zRHMuZG9tYWluKClbMV0mJihzLmRvbWFpbigpWzBdP3MuZG9tYWluKFtzLmRvbWFp
bigpWzBdK3MuZG9tYWluKClbMF0qLjAxLD0Kcy5kb21haW4oKVsxXS1zLmRvbWFpbigpWzFdKi4w
MV0pOnMuZG9tYWluKFstMSwxXSkpLFQ9M0RUfHxpLE49M0ROfHxzO3ZhciBBPQo9M0RrLnNlbGVj
dEFsbCgiZy5udi13cmFwLm52LW11bHRpYmFyIikuZGF0YShbZV0pLE89M0RBLmVudGVyKCkuYXBw
ZW5kKCJnIik9Ci5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1tdWx0aWJhciIpLE09M0RP
LmFwcGVuZCgiZGVmcyIpLF89M0RPLmFwcGVuZD0KKCJnIiksRD0zREEuc2VsZWN0KCJnIik7Xy5h
cHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWdyb3VwcyIpLEEuYXR0cigidHJhPQpuc2Zvcm0i
LCJ0cmFuc2xhdGUoIit0LmxlZnQrIiwiK3QudG9wKyIpIiksTS5hcHBlbmQoImNsaXBQYXRoIiku
YXR0cigiaWQiLCI9Cm52LWVkZ2UtY2xpcC0iK28pLmFwcGVuZCgicmVjdCIpLEEuc2VsZWN0KCIj
bnYtZWRnZS1jbGlwLSIrbysiIHJlY3QiKS5hdHRyKD0KIndpZHRoIixnKS5hdHRyKCJoZWlnaHQi
LEMpLEQuYXR0cigiY2xpcC1wYXRoIixsPyJ1cmwoI252LWVkZ2UtY2xpcC0iK28rIikiPQo6IiIp
O3ZhciBQPTNEQS5zZWxlY3QoIi5udi1ncm91cHMiKS5zZWxlY3RBbGwoIi5udi1ncm91cCIpLmRh
dGEoZnVuY3Rpb24oZSk9CntyZXR1cm4gZX0sZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0pO1AuZW50
ZXIoKS5hcHBlbmQoImciKS5zdHlsZSgic3Ryb2tlLW9wYT0KY2l0eSIsMWUtNikuc3R5bGUoImZp
bGwtb3BhY2l0eSIsMWUtNiksUC5leGl0KCkuc2VsZWN0QWxsKCJyZWN0Lm52LWJhciIpLmF0PQp0
cigieSIsZnVuY3Rpb24oZSl7cmV0dXJuIGM/TihlLnkwKTpOKDApfSkuYXR0cigiaGVpZ2h0Iiww
KS5yZW1vdmUoKSxQLmF0dHI9CigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIm52LWdyb3Vw
IG52LXNlcmllcy0iK3R9KS5jbGFzc2VkKCJob3ZlciIsZnVuYz0KdGlvbihlKXtyZXR1cm4gZS5o
b3Zlcn0pLnN0eWxlKCJmaWxsIixmdW5jdGlvbihlLHQpe3JldHVybiBwKGUsdCl9KS5zdHlsZSgi
PQpzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAoZSx0KX0pLFAuc3R5bGUoInN0cm9rZS1v
cGFjaXR5IiwxKS5zdHlsZSgiZmk9CmxsLW9wYWNpdHkiLC43NSk7dmFyIEg9M0RQLnNlbGVjdEFs
bCgicmVjdC5udi1iYXIiKS5kYXRhKGZ1bmN0aW9uKHQpe3JldHVybj0KIGQmJiFlLmxlbmd0aD9k
LnZhbHVlczp0LnZhbHVlc30pO0guZXhpdCgpLnJlbW92ZSgpO3ZhciBCPTNESC5lbnRlcigpLmFw
cGVuPQpkKCJyZWN0IikuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSx0KTww
PyJudi1iYXIgbmVnYXRpdmUiOiJudi09CmJhciBwb3NpdGl2ZSJ9KS5hdHRyKCJ4IixmdW5jdGlv
bih0LG4scil7cmV0dXJuIGM/MDpyKmkucmFuZ2VCYW5kKCkvZS5sZW5ndD0KaH0pLmF0dHIoInki
LGZ1bmN0aW9uKGUpe3JldHVybiBOKGM/ZS55MDowKX0pLmF0dHIoImhlaWdodCIsMCkuYXR0cigi
d2lkdGgiPQosaS5yYW5nZUJhbmQoKS8oYz8xOmUubGVuZ3RoKSkuYXR0cigidHJhbnNmb3JtIixm
dW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2w9CmF0ZSgiK2kodShlLHQpKSsiLDApIn0pO0guc3R5
bGUoImZpbGwiLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gcChlLG4sdCl9KS5zdD0KeWxlKCJzdHJv
a2UiLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gcChlLG4sdCl9KS5vbigibW91c2VvdmVyIixmdW5j
dGlvbih0LG4pPQp7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMCkseC5lbGVtZW50
TW91c2VvdmVyKHt2YWx1ZTphKHQsbikscG9pbnQ9Cjp0LHNlcmllczplW3Quc2VyaWVzXSxwb3M6
W2kodSh0LG4pKStpLnJhbmdlQmFuZCgpKihjP2UubGVuZ3RoLzI6dC5zZXJpZXMrLj0KNSkvZS5s
ZW5ndGgscyhhKHQsbikrKGM/dC55MDowKSldLHBvaW50SW5kZXg6bixzZXJpZXNJbmRleDp0LnNl
cmllcyxlOmQzLmV2PQplbnR9KX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24odCxuKXtkMy5zZWxl
Y3QodGhpcykuY2xhc3NlZCgiaG92ZXIiLCExKSx4LmU9CmxlbWVudE1vdXNlb3V0KHt2YWx1ZTph
KHQsbikscG9pbnQ6dCxzZXJpZXM6ZVt0LnNlcmllc10scG9pbnRJbmRleDpuLHNlcmllcz0KSW5k
ZXg6dC5zZXJpZXMsZTpkMy5ldmVudH0pfSkub24oImNsaWNrIixmdW5jdGlvbih0LG4pe3guZWxl
bWVudENsaWNrKHt2YWx1PQplOmEodCxuKSxwb2ludDp0LHNlcmllczplW3Quc2VyaWVzXSxwb3M6
W2kodSh0LG4pKStpLnJhbmdlQmFuZCgpKihjP2UubGVuZ3Q9CmgvMjp0LnNlcmllcysuNSkvZS5s
ZW5ndGgscyhhKHQsbikrKGM/dC55MDowKSldLHBvaW50SW5kZXg6bixzZXJpZXNJbmRleDp0Lj0K
c2VyaWVzLGU6ZDMuZXZlbnR9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0pLm9uKCJkYmxj
bGljayIsZnVuY3Rpb24odCxuPQope3guZWxlbWVudERibENsaWNrKHt2YWx1ZTphKHQsbikscG9p
bnQ6dCxzZXJpZXM6ZVt0LnNlcmllc10scG9zOltpKHUodCxuKSk9CitpLnJhbmdlQmFuZCgpKihj
P2UubGVuZ3RoLzI6dC5zZXJpZXMrLjUpL2UubGVuZ3RoLHMoYSh0LG4pKyhjP3QueTA6MCkpXSxw
bz0KaW50SW5kZXg6bixzZXJpZXNJbmRleDp0LnNlcmllcyxlOmQzLmV2ZW50fSksZDMuZXZlbnQu
c3RvcFByb3BhZ2F0aW9uKCl9KSxIPQouYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJu
IGEoZSx0KTwwPyJudi1iYXIgbmVnYXRpdmUiOiJudi1iYXIgcG9zaXQ9Cml2ZSJ9KS5hdHRyKCJ0
cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiK2kodShlLHQpKSsiLDAp
In0pLD0KdiYmKG18fChtPTNEZS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4hMH0pKSxILnN0eWxlKCJm
aWxsIixmdW5jdGlvbihlLHQsbil7cmV0PQp1cm4gZDMucmdiKHYoZSx0KSkuZGFya2VyKG0ubWFw
KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR9KS5maWx0ZXIoZnVuY3Rpb24oZSw9CnQpe3JldHVybiFt
W3RdfSlbbl0pLnRvU3RyaW5nKCl9KS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbihlLHQsbil7cmV0
dXJuIGQzLj0KcmdiKHYoZSx0KSkuZGFya2VyKG0ubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR9
KS5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1PQpybiFtW3RdfSlbbl0pLnRvU3RyaW5nKCl9KSks
Yz9ILmF0dHIoInkiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHMoYz9lLnkxOjApfSk9Ci5hdHRyKCJo
ZWlnaHQiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKHMoZS55KyhjP2Uu
eTA6MCkpLXMoYz0KP2UueTA6MCkpLDEpfSkuYXR0cigieCIsZnVuY3Rpb24odCxuKXtyZXR1cm4g
Yz8wOnQuc2VyaWVzKmkucmFuZ2VCYW5kKCkvZS5sPQplbmd0aH0pLmF0dHIoIndpZHRoIixpLnJh
bmdlQmFuZCgpLyhjPzE6ZS5sZW5ndGgpKTpILmF0dHIoIngiLGZ1bmN0aW9uKHQsbik9CntyZXR1
cm4gdC5zZXJpZXMqaS5yYW5nZUJhbmQoKS9lLmxlbmd0aH0pLmF0dHIoIndpZHRoIixpLnJhbmdl
QmFuZCgpL2UubGVuZz0KdGgpLmF0dHIoInkiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSx0KTww
P3MoMCk6cygwKS1zKGEoZSx0KSk8MT9zKDApLTE6cyhhPQooZSx0KSl8fDB9KS5hdHRyKCJoZWln
aHQiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKHMoYShlLHQpKS09CnMo
MCkpLDEpfHwwfSksVD0zRGkuY29weSgpLE49M0RzLmNvcHkoKX0pLEN9dmFyIHQ9M0R7dG9wOjAs
cmlnaHQ6MCxib3R0b206MD0KLGxlZnQ6MH0sbj0zRDk2MCxyPTNENTAwLGk9M0RkMy5zY2FsZS5v
cmRpbmFsKCkscz0zRGQzLnNjYWxlLmxpbmVhcigpLG89M0RNPQphdGguZmxvb3IoTWF0aC5yYW5k
b20oKSoxZTQpLHU9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS54fSxhPTNEZnVuY3Rpb24oZSl7cmU9
CnR1cm4gZS55fSxmPTNEWzBdLGw9M0QhMCxjPTNEITEsaD0zRCJ6ZXJvIixwPTNEZS51dGlscy5k
ZWZhdWx0Q29sb3IoKSxkPTNEIT0KMSx2PTNEbnVsbCxtLGc9M0QxMjAwLHksYix3LEUsUz0zRC4x
LHg9M0RkMy5kaXNwYXRjaCgiY2hhcnRDbGljayIsImVsZW1lbnRDPQpsaWNrIiwiZWxlbWVudERi
bENsaWNrIiwiZWxlbWVudE1vdXNlb3ZlciIsImVsZW1lbnRNb3VzZW91dCIpLFQsTjtyZXR1cm4g
Qy49CmRpc3BhdGNoPTNEeCxDLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoQyks
Qy54PTNEZnVuY3Rpb24oZSl7cmV0dT0Kcm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsQyk6dX0s
Qy55PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/PQooYT0zRGUsQyk6YX0s
Qy5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC50b3A9M0R0
eXBlb2Y9CiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDp0LnRvcCx0LnJpZ2h0PTNEdHlwZW9m
IGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZT0KLnJpZ2h0OnQucmlnaHQsdC5ib3R0b209M0R0eXBl
b2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dC5ib3R0b20sPQp0LmxlZnQ9M0R0
eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDp0LmxlZnQsQyk6dH0sQy53aWR0aD0z
RGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49M0RlLEMpOm59LEMuaGVp
Z2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZz0KdW1lbnRzLmxlbmd0aD8ocj0zRGUsQyk6cn0s
Qy54U2NhbGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oPQppPTNEZSxD
KTppfSxDLnlTY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPTNE
ZSxDKTpzfSxDLng9CkRvbWFpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
Pyh5PTNEZSxDKTp5fSxDLnlEb21haW49M0RmdW5jdD0KaW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhiPTNEZSxDKTpifSxDLnhSYW5nZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhPQpyZ3Vt
ZW50cy5sZW5ndGg/KHc9M0RlLEMpOnd9LEMueVJhbmdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg9Cj8oRT0zRGUsQyk6RX0sQy5mb3JjZVk9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUsQyk6Zn0sQz0KLnN0YWNrZWQ9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUsQyk6Y30sQy5zdGFja09mZnNldD0KPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLEMpOmh9LEMuY2xpcEVk
Z2U9M0RmdW5jdGlvbihlPQope3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZSxDKTpsfSxD
LmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW49CnRzLmxlbmd0aD8ocD0zRGUudXRp
bHMuZ2V0Q29sb3IodCksQyk6cH0sQy5iYXJDb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcj0K
Z3VtZW50cy5sZW5ndGg/KHY9M0RlLnV0aWxzLmdldENvbG9yKHQpLEMpOnZ9LEMuZGlzYWJsZWQ9
M0RmdW5jdGlvbihlKXtyZXR1PQpybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNEZSxDKTptfSxDLmlk
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9Cj8obz0zRGUsQyk6b30sQy5o
aWRlYWJsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSxDKTpk
fT0KLEMuZGVsYXk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0zRGUs
Qyk6Z30sQy5ncm91cFNwYWNpbmc9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhTPTNEZSxDKTpTfSxDfSxlLm1vZGVscy5tdWx0aUJhckNoYT0KcnQ9M0RmdW5jdGlvbigp
e2Z1bmN0aW9uIEEoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXt2YXIgYj0zRGQzLnNlbGVj
dCh0PQpoaXMpLGs9M0R0aGlzLE89M0QodXx8cGFyc2VJbnQoYi5zdHlsZSgid2lkdGgiKSl8fDk2
MCktby5sZWZ0LW8ucmlnaHQsTT0zRCg9CmF8fHBhcnNlSW50KGIuc3R5bGUoImhlaWdodCIpKXx8
NDAwKS1vLnRvcC1vLmJvdHRvbTtBLnVwZGF0ZT0zRGZ1bmN0aW9uKCl7Yj0KLmNhbGwoQSl9LEEu
Y29udGFpbmVyPTNEdGhpcyxTLmRpc2FibGVkPTNEZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuISFl
LmRpc2FiPQpsZWR9KTtpZigheCl7dmFyIF87eD0zRHt9O2ZvcihfIGluIFMpU1tfXWluc3RhbmNl
b2YgQXJyYXk/eFtfXT0zRFNbX10uc2xpY2U9CigwKTp4W19dPTNEU1tfXX1pZighZXx8IWUubGVu
Z3RofHwhZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLmxlbj0KZ3RofSkubGVu
Z3RoKXt2YXIgRD0zRGIuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShbVF0pO3JldHVybiBE
LmVudGVyKCkuPQphcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRhIiku
YXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXg9CnQtYW5jaG9yIiwibWlkZGxlIiksRC5hdHRy
KCJ4IixvLmxlZnQrTy8yKS5hdHRyKCJ5IixvLnRvcCtNLzIpLnRleHQoZnVuY3Rpbz0KbihlKXty
ZXR1cm4gZX0pLEF9Yi5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKSx3PTNEdC54U2Nh
bGUoKSxFPTNEdC55PQpTY2FsZSgpO3ZhciBQPTNEYi5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1t
dWx0aUJhcldpdGhMZWdlbmQiKS5kYXRhKFtlXSksSD0KPTNEUC5lbnRlcigpLmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LW11bHRpQmFyV2l0aExlZ2VuZCIpPQouYXBw
ZW5kKCJnIiksQj0zRFAuc2VsZWN0KCJnIik7SC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52
LXggbnYtYXhpcyIpLEg9Ci5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkgbnYtYXhpcyIp
LEguYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1iYT0KcnNXcmFwIiksSC5hcHBlbmQoImci
KS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZFdyYXAiKSxILmFwcGVuZCgiZyIpLmF0dHIoImNsPQph
c3MiLCJudi1jb250cm9sc1dyYXAiKSxjJiYoaS53aWR0aChPLUMoKSksdC5iYXJDb2xvcigpJiZl
LmZvckVhY2goZnVuY3Rpb249CihlLHQpe2UuY29sb3I9M0RkMy5yZ2IoIiNjY2MiKS5kYXJrZXIo
dCoxLjUpLnRvU3RyaW5nKCl9KSxCLnNlbGVjdCgiLm52LWxlZz0KZW5kV3JhcCIpLmRhdHVtKGUp
LmNhbGwoaSksby50b3AhPTNEaS5oZWlnaHQoKSYmKG8udG9wPTNEaS5oZWlnaHQoKSxNPTNEKGF8
PQp8cGFyc2VJbnQoYi5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLW8udG9wLW8uYm90dG9tKSxCLnNl
bGVjdCgiLm52LWxlZ2VuZFdyYXA9CiIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK0Mo
KSsiLCIrIC1vLnRvcCsiKSIpKTtpZihsKXt2YXIgaj0zRFt7a2V5Oj0KIkdyb3VwZWQiLGRpc2Fi
bGVkOnQuc3RhY2tlZCgpfSx7a2V5OiJTdGFja2VkIixkaXNhYmxlZDohdC5zdGFja2VkKCl9XTtz
LndpPQpkdGgoQygpKS5jb2xvcihbIiM0NDQiLCIjNDQ0IiwiIzQ0NCJdKSxCLnNlbGVjdCgiLm52
LWNvbnRyb2xzV3JhcCIpLmRhdHVtKGo9CikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAs
IisgLW8udG9wKyIpIikuY2FsbChzKX1QLmF0dHIoInRyYW5zZm9ybSIsIj0KdHJhbnNsYXRlKCIr
by5sZWZ0KyIsIitvLnRvcCsiKSIpLGQmJkIuc2VsZWN0KCIubnYteS5udi1heGlzIikuYXR0cigi
dHJhbnNmPQpvcm0iLCJ0cmFuc2xhdGUoIitPKyIsMCkiKSx0LmRpc2FibGVkKGUubWFwKGZ1bmN0
aW9uKGUpe3JldHVybiBlLmRpc2FibGVkfSk9Cikud2lkdGgoTykuaGVpZ2h0KE0pLmNvbG9yKGUu
bWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGYoZSx0KX0pLmZpbD0KdGVyKGZ1bmN0
aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWR9KSk7dmFyIEY9M0RCLnNlbGVjdCgiLm52LWJh
cnNXcmFwIikuPQpkYXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0p
KTtGLmNhbGwodCk7aWYoaCl7bi5zY2FsZSh3KS49CnRpY2tzKE8vMTAwKS50aWNrU2l6ZSgtTSww
KSxCLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYT0KbnNsYXRl
KDAsIitFLnJhbmdlKClbMF0rIikiKSxCLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmNhbGwobik7
dmFyIEk9M0RCLnNlPQpsZWN0KCIubnYteC5udi1heGlzID4gZyIpLnNlbGVjdEFsbCgiZyIpO0ku
c2VsZWN0QWxsKCJsaW5lLCB0ZXh0Iikuc3R5bGUoIm89CnBhY2l0eSIsMSk7aWYobSl7dmFyIHE9
M0RmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitlKyIsIit0KyIpIn0sUj0zRD0KNSxV
PTNEMTc7SS5zZWxlY3RBbGwoInRleHQiKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCxu
KXtyZXR1cm4gcSgwLG4lPQoyPTNEPTNEMD9SOlUpfSk7dmFyIHo9M0RkMy5zZWxlY3RBbGwoIi5u
di14Lm52LWF4aXMgLm52LXdyYXAgZyBnIHRleHQiKVswXS49Cmxlbmd0aDtCLnNlbGVjdEFsbCgi
Lm52LXgubnYtYXhpcyAubnYtYXhpc01heE1pbiB0ZXh0IikuYXR0cigidHJhbnNmb3JtIixmdT0K
bmN0aW9uKGUsdCl7cmV0dXJuIHEoMCx0PTNEPTNEPTNEMHx8eiUyIT0zRD0zRDA/VTpSKX0pfXYm
JkkuZmlsdGVyKGZ1bmN0aW9uPQoodCxuKXtyZXR1cm4gbiVNYXRoLmNlaWwoZVswXS52YWx1ZXMu
bGVuZ3RoLyhPLzEwMCkpIT0zRD0zRDB9KS5zZWxlY3RBbGwoInQ9CmV4dCwgbGluZSIpLnN0eWxl
KCJvcGFjaXR5IiwwKSxnJiZJLnNlbGVjdEFsbCgiLnRpY2sgdGV4dCIpLmF0dHIoInRyYW5zZm9y
bT0KIiwicm90YXRlKCIrZysiIDAsMCkiKS5zdHlsZSgidGV4dC1hbmNob3IiLGc+MD8ic3RhcnQi
OiJlbmQiKSxCLnNlbGVjdCgiLm52PQoteC5udi1heGlzIikuc2VsZWN0QWxsKCJnLm52LWF4aXNN
YXhNaW4gdGV4dCIpLnN0eWxlKCJvcGFjaXR5IiwxKX1wJiYoci5zY2E9CmxlKEUpLnRpY2tzKE0v
MzYpLnRpY2tTaXplKC1PLDApLEIuc2VsZWN0KCIubnYteS5udi1heGlzIikuY2FsbChyKSksaS5k
aXNwYT0KdGNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24oZSl7Uz0zRGUsTi5zdGF0ZUNoYW5n
ZShTKSxBLnVwZGF0ZSgpfSkscy5kaXNwPQphdGNoLm9uKCJsZWdlbmRDbGljayIsZnVuY3Rpb24o
ZSxuKXtpZighZS5kaXNhYmxlZClyZXR1cm47aj0zRGoubWFwKGZ1bmN0aW89Cm4oZSl7cmV0dXJu
IGUuZGlzYWJsZWQ9M0QhMCxlfSksZS5kaXNhYmxlZD0zRCExO3N3aXRjaChlLmtleSl7Y2FzZSJH
cm91cGVkIj0KOnQuc3RhY2tlZCghMSk7YnJlYWs7Y2FzZSJTdGFja2VkIjp0LnN0YWNrZWQoITAp
fVMuc3RhY2tlZD0zRHQuc3RhY2tlZCgpLE4uPQpzdGF0ZUNoYW5nZShTKSxBLnVwZGF0ZSgpfSks
Ti5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe3kmJkwoZSxrLnBhcmVudE49Cm9kZSl9KSxO
Lm9uKCJjaGFuZ2VTdGF0ZSIsZnVuY3Rpb24obil7dHlwZW9mIG4uZGlzYWJsZWQhPTNEInVuZGVm
aW5lZCImJihlLj0KZm9yRWFjaChmdW5jdGlvbihlLHQpe2UuZGlzYWJsZWQ9M0RuLmRpc2FibGVk
W3RdfSksUy5kaXNhYmxlZD0zRG4uZGlzYWJsZWQpPQosdHlwZW9mIG4uc3RhY2tlZCE9M0QidW5k
ZWZpbmVkIiYmKHQuc3RhY2tlZChuLnN0YWNrZWQpLFMuc3RhY2tlZD0zRG4uc3RhY2s9CmVkKSxB
LnVwZGF0ZSgpfSl9KSxBfXZhciB0PTNEZS5tb2RlbHMubXVsdGlCYXIoKSxuPTNEZS5tb2RlbHMu
YXhpcygpLHI9M0RlLj0KbW9kZWxzLmF4aXMoKSxpPTNEZS5tb2RlbHMubGVnZW5kKCkscz0zRGUu
bW9kZWxzLmxlZ2VuZCgpLG89M0R7dG9wOjMwLHJpZ2h0PQo6MjAsYm90dG9tOjUwLGxlZnQ6NjB9
LHU9M0RudWxsLGE9M0RudWxsLGY9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLGw9M0QhMCw9CmM9
M0QhMCxoPTNEITAscD0zRCEwLGQ9M0QhMSx2PTNEITAsbT0zRCExLGc9M0QwLHk9M0QhMCxiPTNE
ZnVuY3Rpb24oZSx0LG4scj0KLGkpe3JldHVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIrbisiIG9u
ICIrdCsiPC9wPiJ9LHcsRSxTPTNEe3N0YWNrZWQ6ITF9LHg9Cj0zRG51bGwsVD0zRCJObyBEYXRh
IEF2YWlsYWJsZS4iLE49M0RkMy5kaXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlkZT0K
Iiwic3RhdGVDaGFuZ2UiLCJjaGFuZ2VTdGF0ZSIpLEM9M0RmdW5jdGlvbigpe3JldHVybiBsPzE4
MDowfSxrPTNEMDt0LnN0YWNrPQplZCghMSksbi5vcmllbnQoImJvdHRvbSIpLnRpY2tQYWRkaW5n
KDcpLmhpZ2hsaWdodFplcm8oITApLnNob3dNYXhNaW4oITEpLnQ9Cmlja0Zvcm1hdChmdW5jdGlv
bihlKXtyZXR1cm4gZX0pLHIub3JpZW50KGQ/InJpZ2h0IjoibGVmdCIpLnRpY2tGb3JtYXQoZDMu
Zj0Kb3JtYXQoIiwuMWYiKSkscy51cGRhdGVTdGF0ZSghMSk7dmFyIEw9M0RmdW5jdGlvbihpLHMp
e3ZhciBvPTNEaS5wb3NbMF0rKHMuPQpvZmZzZXRMZWZ0fHwwKSx1PTNEaS5wb3NbMV0rKHMub2Zm
c2V0VG9wfHwwKSxhPTNEbi50aWNrRm9ybWF0KCkodC54KCkoaS5wb2k9Cm50LGkucG9pbnRJbmRl
eCkpLGY9M0RyLnRpY2tGb3JtYXQoKSh0LnkoKShpLnBvaW50LGkucG9pbnRJbmRleCkpLGw9M0Ri
KGkucz0KZXJpZXMua2V5LGEsZixpLEEpO2UudG9vbHRpcC5zaG93KFtvLHVdLGwsaS52YWx1ZTww
PyJuIjoicyIsbnVsbCxzKX07cmV0dXJuPQogdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zl
ci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXStvLmw9CmVmdCxlLnBvc1sx
XStvLnRvcF0sTi50b29sdGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91
dC50b29sdD0KaXAiLGZ1bmN0aW9uKGUpe04udG9vbHRpcEhpZGUoZSl9KSxOLm9uKCJ0b29sdGlw
SGlkZSIsZnVuY3Rpb24oKXt5JiZlLnRvb2x0PQppcC5jbGVhbnVwKCl9KSxBLmRpc3BhdGNoPTNE
TixBLm11bHRpYmFyPTNEdCxBLmxlZ2VuZD0zRGksQS54QXhpcz0zRG4sQS55QXg9CmlzPTNEcixk
My5yZWJpbmQoQSx0LCJ4IiwieSIsInhEb21haW4iLCJ5RG9tYWluIiwieFJhbmdlIiwieVJhbmdl
IiwiZm9yY2VYIj0KLCJmb3JjZVkiLCJjbGlwRWRnZSIsImlkIiwic3RhY2tlZCIsInN0YWNrT2Zm
c2V0IiwiZGVsYXkiLCJiYXJDb2xvciIsImdyb3VwPQpTcGFjaW5nIiksQS5vcHRpb25zPTNEZS51
dGlscy5vcHRpb25zRnVuYy5iaW5kKEEpLEEubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmU9CnR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oby50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50
b3A6by50b3Asby5yaT0KZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdo
dDpvLnJpZ2h0LG8uYm90dG9tPTNEdHlwZW9mIGUuYm90PQp0b20hPTNEInVuZGVmaW5lZCI/ZS5i
b3R0b206by5ib3R0b20sby5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj89CmUu
bGVmdDpvLmxlZnQsQSk6b30sQS53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyh1PTNEZSxBKT0KOnV9LEEuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGE9M0RlLEEpOmF9LEEuY29sb3I9M0RmPQp1bmN0aW9uKHQpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhmPTNEZS51dGlscy5nZXRDb2xvcih0KSxpLmNvbG9yKGYpLEEpOmY9
Cn0sQS5zaG93Q29udHJvbHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
bD0zRGUsQSk6bH0sQS5zaG93TD0KZWdlbmQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oYz0zRGUsQSk6Y30sQS5zaG93WEF4aXM9M0RmdW5jPQp0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhoPTNEZSxBKTpofSxBLnNob3dZQXhpcz0zRGZ1bmN0aW9uKGUpe3Jl
dHU9CnJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLEEpOnB9LEEucmlnaHRBbGlnbllBeGlzPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZz0KdW1lbnRzLmxlbmd0aD8oZD0zRGUsci5vcmllbnQoZT8i
cmlnaHQiOiJsZWZ0IiksQSk6ZH0sQS5yZWR1Y2VYVGlja3M9M0RmdW5jPQp0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyh2PTNEZSxBKTp2fSxBLnJvdGF0ZUxhYmVscz0zRGZ1bmN0aW9u
KGUpe3I9CmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9M0RlLEEpOmd9LEEuc3RhZ2dlckxhYmVs
cz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcj0KZ3VtZW50cy5sZW5ndGg/KG09M0RlLEEpOm19LEEu
dG9vbHRpcD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPQo/KGI9M0RlLEEp
OmJ9LEEudG9vbHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT0z
RGUsQSk6eX09CixBLnRvb2x0aXBDb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGI9M0RlLEEpOmJ9LEEuc3RhdD0KZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhTPTNEZSxBKTpTfSxBLmRlZmF1bHRTdGF0ZT0zRGZ1bmN0PQppb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHg9M0RlLEEpOnh9LEEubm9EYXRhPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGE9CnJndW1lbnRzLmxlbmd0aD8oVD0zRGUsQSk6VH0sQS50cmFuc2l0aW9uRHVy
YXRpb249M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndT0KbWVudHMubGVuZ3RoPyhrPTNEZSxBKTpr
fSxBfSxlLm1vZGVscy5tdWx0aUJhckhvcml6b250YWw9M0RmdW5jdGlvbigpe2Z1bmN0PQppb24g
QyhlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBpPTNEbi10LmxlZnQtdC5yaWdodCx5
PTNEci10LnRvcC10LmI9Cm90dG9tLEM9M0RkMy5zZWxlY3QodGhpcyk7cCYmKGU9M0RkMy5sYXlv
dXQuc3RhY2soKS5vZmZzZXQoInplcm8iKS52YWx1ZXMoZj0KdW5jdGlvbihlKXtyZXR1cm4gZS52
YWx1ZXN9KS55KGEpKGUpKSxlLmZvckVhY2goZnVuY3Rpb24oZSx0KXtlLnZhbHVlcy5mb3JFPQph
Y2goZnVuY3Rpb24oZSl7ZS5zZXJpZXM9M0R0fSl9KSxwJiZlWzBdLnZhbHVlcy5tYXAoZnVuY3Rp
b24odCxuKXt2YXIgcj0zRDA9CixpPTNEMDtlLm1hcChmdW5jdGlvbihlKXt2YXIgdD0zRGUudmFs
dWVzW25dO3Quc2l6ZT0zRE1hdGguYWJzKHQueSksdC55PDA/KD0KdC55MT0zRGktdC5zaXplLGkt
PTNEdC5zaXplKToodC55MT0zRHIscis9M0R0LnNpemUpfSl9KTt2YXIgaz0zRGImJnc/W106ZS5t
PQphcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJu
e3g6dShlLHQpLHk6YShlLHQpLHk9CjA6ZS55MCx5MTplLnkxfX0pfSk7cy5kb21haW4oYnx8ZDMu
bWVyZ2UoaykubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9KSkucj0KYW5nZUJhbmRzKEV8fFsw
LHldLC4xKSxvLmRvbWFpbih3fHxkMy5leHRlbnQoZDMubWVyZ2UoaykubWFwKGZ1bmN0aW9uKGUp
e3JlPQp0dXJuIHA/ZS55PjA/ZS55MStlLnk6ZS55MTplLnl9KS5jb25jYXQoZikpKSxkJiYhcD9v
LnJhbmdlKFN8fFtvLmRvbWFpbigpWzA9Cl08MD9tOjAsaS0oby5kb21haW4oKVsxXT4wP206MCld
KTpvLnJhbmdlKFN8fFswLGldKSxUPTNEVHx8cyxOPTNETnx8ZDMuc2NhbD0KZS5saW5lYXIoKS5k
b21haW4oby5kb21haW4oKSkucmFuZ2UoW28oMCksbygwKV0pO3ZhciBMPTNEZDMuc2VsZWN0KHRo
aXMpLnNlPQpsZWN0QWxsKCJnLm52LXdyYXAubnYtbXVsdGliYXJIb3Jpem9udGFsIikuZGF0YShb
ZV0pLEE9M0RMLmVudGVyKCkuYXBwZW5kKCI9CmciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3Jh
cCBudi1tdWx0aWJhckhvcml6b250YWwiKSxPPTNEQS5hcHBlbmQoImRlZnMiKT0KLE09M0RBLmFw
cGVuZCgiZyIpLF89M0RMLnNlbGVjdCgiZyIpO00uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJu
di1ncm91cHMiPQopLEwuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdC5sZWZ0KyIsIit0
LnRvcCsiKSIpO3ZhciBEPTNETC5zZWxlY3QoIi49Cm52LWdyb3VwcyIpLnNlbGVjdEFsbCgiLm52
LWdyb3VwIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZX0sZnVuY3Rpb24oZSx0KT0Ke3JldHVy
biB0fSk7RC5lbnRlcigpLmFwcGVuZCgiZyIpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMWUtNiku
c3R5bGUoImZpbGwtPQpvcGFjaXR5IiwxZS02KSxELmV4aXQoKS5zdHlsZSgic3Ryb2tlLW9wYWNp
dHkiLDFlLTYpLnN0eWxlKCJmaWxsLW9wYWNpdHkiLDE9CmUtNikucmVtb3ZlKCksRC5hdHRyKCJj
bGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4ibnYtZ3JvdXAgbnYtc2VyaWVzLSIrdH0pLj0KY2xh
c3NlZCgiaG92ZXIiLGZ1bmN0aW9uKGUpe3JldHVybiBlLmhvdmVyfSkuc3R5bGUoImZpbGwiLGZ1
bmN0aW9uKGUsdCl7cmV0PQp1cm4gbChlLHQpfSkuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSx0
KXtyZXR1cm4gbChlLHQpfSksRC5zdHlsZSgic3Ryb2tlLW89CnBhY2l0eSIsMSkuc3R5bGUoImZp
bGwtb3BhY2l0eSIsLjc1KTt2YXIgUD0zREQuc2VsZWN0QWxsKCJnLm52LWJhciIpLmRhdGEoZj0K
dW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXN9KTtQLmV4aXQoKS5yZW1vdmUoKTt2YXIgSD0zRFAu
ZW50ZXIoKS5hcHBlbmQoImciPQopLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24odCxuLHIpe3Jl
dHVybiJ0cmFuc2xhdGUoIitOKHA/dC55MDowKSsiLCIrKHA/MDo9CnIqcy5yYW5nZUJhbmQoKS9l
Lmxlbmd0aCtzKHUodCxuKSkpKyIpIn0pO0guYXBwZW5kKCJyZWN0IikuYXR0cigid2lkdGgiLDAp
Lj0KYXR0cigiaGVpZ2h0IixzLnJhbmdlQmFuZCgpLyhwPzE6ZS5sZW5ndGgpKSxQLm9uKCJtb3Vz
ZW92ZXIiLGZ1bmN0aW9uKHQsbil7PQpkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgiaG92ZXIiLCEw
KSx4LmVsZW1lbnRNb3VzZW92ZXIoe3ZhbHVlOmEodCxuKSxwb2ludDo9CnQsc2VyaWVzOmVbdC5z
ZXJpZXNdLHBvczpbbyhhKHQsbikrKHA/dC55MDowKSkscyh1KHQsbikpK3MucmFuZ2VCYW5kKCkq
KHA/ZT0KLmxlbmd0aC8yOnQuc2VyaWVzKy41KS9lLmxlbmd0aF0scG9pbnRJbmRleDpuLHNlcmll
c0luZGV4OnQuc2VyaWVzLGU6ZDMuZXZlPQpudH0pfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbih0
LG4pe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIsITEpLHguZWw9CmVtZW50TW91c2Vv
dXQoe3ZhbHVlOmEodCxuKSxwb2ludDp0LHNlcmllczplW3Quc2VyaWVzXSxwb2ludEluZGV4Om4s
c2VyaWVzST0KbmRleDp0LnNlcmllcyxlOmQzLmV2ZW50fSl9KS5vbigiY2xpY2siLGZ1bmN0aW9u
KHQsbil7eC5lbGVtZW50Q2xpY2soe3ZhbHVlPQo6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmVbdC5z
ZXJpZXNdLHBvczpbcyh1KHQsbikpK3MucmFuZ2VCYW5kKCkqKHA/ZS5sZW5ndGg9Ci8yOnQuc2Vy
aWVzKy41KS9lLmxlbmd0aCxvKGEodCxuKSsocD90LnkwOjApKV0scG9pbnRJbmRleDpuLHNlcmll
c0luZGV4OnQucz0KZXJpZXMsZTpkMy5ldmVudH0pLGQzLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigp
fSkub24oImRibGNsaWNrIixmdW5jdGlvbih0LG4pPQp7eC5lbGVtZW50RGJsQ2xpY2soe3ZhbHVl
OmEodCxuKSxwb2ludDp0LHNlcmllczplW3Quc2VyaWVzXSxwb3M6W3ModSh0LG4pKSs9CnMucmFu
Z2VCYW5kKCkqKHA/ZS5sZW5ndGgvMjp0LnNlcmllcysuNSkvZS5sZW5ndGgsbyhhKHQsbikrKHA/
dC55MDowKSldLHBvaT0KbnRJbmRleDpuLHNlcmllc0luZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnR9
KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0pLEguPQphcHBlbmQoInRleHQiKSxkJiYhcD8o
UC5zZWxlY3QoInRleHQiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsZnVuY3Rpb24oZSx0KXtyZXQ9CnVy
biBhKGUsdCk8MD8iZW5kIjoic3RhcnQifSkuYXR0cigieSIscy5yYW5nZUJhbmQoKS8oZS5sZW5n
dGgqMikpLmF0dHIoImR5Ij0KLCIuMzJlbSIpLnRleHQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZyhh
KGUsdCkpfSksUC5zZWxlY3QoInRleHQiKS5hdHRyKCJ4IixmPQp1bmN0aW9uKGUsdCl7cmV0dXJu
IGEoZSx0KTwwPy00Om8oYShlLHQpKS1vKDApKzR9KSk6UC5zZWxlY3RBbGwoInRleHQiKS50ZXg9
CnQoIiIpLHYmJiFwPyhILmFwcGVuZCgidGV4dCIpLmNsYXNzZWQoIm52LWJhci1sYWJlbCIsITAp
LFAuc2VsZWN0KCJ0ZXh0Lm52LT0KYmFyLWxhYmVsIikuYXR0cigidGV4dC1hbmNob3IiLGZ1bmN0
aW9uKGUsdCl7cmV0dXJuIGEoZSx0KTwwPyJzdGFydCI6ImVuZCJ9PQopLmF0dHIoInkiLHMucmFu
Z2VCYW5kKCkvKGUubGVuZ3RoKjIpKS5hdHRyKCJkeSIsIi4zMmVtIikudGV4dChmdW5jdGlvbihl
LHQ9Cil7cmV0dXJuIHUoZSx0KX0pLFAuc2VsZWN0KCJ0ZXh0Lm52LWJhci1sYWJlbCIpLmF0dHIo
IngiLGZ1bmN0aW9uKGUsdCl7cmV0dT0Kcm4gYShlLHQpPDA/bygwKS1vKGEoZSx0KSkrNDotNH0p
KTpQLnNlbGVjdEFsbCgidGV4dC5udi1iYXItbGFiZWwiKS50ZXh0KCIiPQopLFAuYXR0cigiY2xh
c3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSx0KTwwPyJudi1iYXIgbmVnYXRpdmUiOiJudi1i
YXIgcG89CnNpdGl2ZSJ9KSxjJiYoaHx8KGg9M0RlLm1hcChmdW5jdGlvbigpe3JldHVybiEwfSkp
LFAuc3R5bGUoImZpbGwiLGZ1bmN0aW9uKD0KZSx0LG4pe3JldHVybiBkMy5yZ2IoYyhlLHQpKS5k
YXJrZXIoaC5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0pLmZpbHRlcihmPQp1bmN0aW9uKGUs
dCl7cmV0dXJuIWhbdF19KVtuXSkudG9TdHJpbmcoKX0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9u
KGUsdCxuKXs9CnJldHVybiBkMy5yZ2IoYyhlLHQpKS5kYXJrZXIoaC5tYXAoZnVuY3Rpb24oZSx0
KXtyZXR1cm4gdH0pLmZpbHRlcihmdW5jdGlvbj0KKGUsdCl7cmV0dXJuIWhbdF19KVtuXSkudG9T
dHJpbmcoKX0pKSxwP1AuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JlPQp0dXJuInRy
YW5zbGF0ZSgiK28oZS55MSkrIiwiK3ModShlLHQpKSsiKSJ9KS5zZWxlY3QoInJlY3QiKS5hdHRy
KCJ3aWR0aCIsZnU9Cm5jdGlvbihlLHQpe3JldHVybiBNYXRoLmFicyhvKGEoZSx0KStlLnkwKS1v
KGUueTApKX0pLmF0dHIoImhlaWdodCIscy5yYW5nZT0KQmFuZCgpKTpQLmF0dHIoInRyYW5zZm9y
bSIsZnVuY3Rpb24odCxuKXtyZXR1cm4idHJhbnNsYXRlKCIrKGEodCxuKTwwP28oYSh0PQosbikp
Om8oMCkpKyIsIisodC5zZXJpZXMqcy5yYW5nZUJhbmQoKS9lLmxlbmd0aCtzKHUodCxuKSkpKyIp
In0pLnNlbGVjdCgicmU9CmN0IikuYXR0cigiaGVpZ2h0IixzLnJhbmdlQmFuZCgpL2UubGVuZ3Ro
KS5hdHRyKCJ3aWR0aCIsZnVuY3Rpb24oZSx0KXtyZXR1cj0KbiBNYXRoLm1heChNYXRoLmFicyhv
KGEoZSx0KSktbygwKSksMSl9KSxUPTNEcy5jb3B5KCksTj0zRG8uY29weSgpfSksQ312YXIgPQp0
PTNEe3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSxuPTNEOTYwLHI9M0Q1MDAsaT0zRE1h
dGguZmxvb3IoTWF0aC5yYW49CmRvbSgpKjFlNCkscz0zRGQzLnNjYWxlLm9yZGluYWwoKSxvPTNE
ZDMuc2NhbGUubGluZWFyKCksdT0zRGZ1bmN0aW9uKGUpe3JldD0KdXJuIGUueH0sYT0zRGZ1bmN0
aW9uKGUpe3JldHVybiBlLnl9LGY9M0RbMF0sbD0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCksYz0K
PTNEbnVsbCxoLHA9M0QhMSxkPTNEITEsdj0zRCExLG09M0Q2MCxnPTNEZDMuZm9ybWF0KCIsLjJm
IikseT0zRDEyMDAsYix3LEUsPQpTLHg9M0RkMy5kaXNwYXRjaCgiY2hhcnRDbGljayIsImVsZW1l
bnRDbGljayIsImVsZW1lbnREYmxDbGljayIsImVsZW1lbnRNb3U9CnNlb3ZlciIsImVsZW1lbnRN
b3VzZW91dCIpLFQsTjtyZXR1cm4gQy5kaXNwYXRjaD0zRHgsQy5vcHRpb25zPTNEZS51dGlscy5v
cD0KdGlvbnNGdW5jLmJpbmQoQyksQy54PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHU9M0RlLEMpOnV9LEMuPQp5PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGE9M0RlLEMpOmF9LEMubWFyZ2luPTNEZnVuY3Rpb24oZSk9CntyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8odC50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6dC50
b3AsdD0KLnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp0LnJp
Z2h0LHQuYm90dG9tPTNEdHlwZW9mIGUuPQpib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206
dC5ib3R0b20sdC5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmU9CmQiP2UubGVmdDp0
LmxlZnQsQyk6dH0sQy53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhuPTNEZT0KLEMpOm59LEMuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHI9M0RlLEMpOnJ9LEMueFNjYWxlPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8ocz0zRGUsQyk6c30sQy55U2NhbGU9M0RmdW5jdGlvbihlKXs9CnJldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhvPTNEZSxDKTpvfSxDLnhEb21haW49M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbj0KdHMubGVuZ3RoPyhiPTNEZSxDKTpifSxDLnlEb21haW49M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz0KPTNEZSxDKTp3fSxDLnhSYW5nZT0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPTNEZSxDKTpFfSxDLnlSPQphbmdlPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFM9M0RlLEMpOlN9LEMuZm9yY2VZ
PTNEZnVuY3Rpb249CihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUsQyk6Zn0sQy5z
dGFja2VkPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZz0KdW1lbnRzLmxlbmd0aD8ocD0zRGUsQyk6
cH0sQy5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPQo9M0Rl
LnV0aWxzLmdldENvbG9yKHQpLEMpOmx9LEMuYmFyQ29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4g
YXJndW1lbnRzLmxlbmc9CnRoPyhjPTNEZS51dGlscy5nZXRDb2xvcih0KSxDKTpjfSxDLmRpc2Fi
bGVkPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cz0KLmxlbmd0aD8oaD0zRGUsQyk6aH0s
Qy5pZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPTNEZSxDKTppPQp9
LEMuZGVsYXk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT0zRGUsQyk6
eX0sQy5zaG93VmFsdWVzPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
ZD0zRGUsQyk6ZH0sQy5zaG93QmFyTGFiZWxzPTNEZnVuY3Q9CmlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8odj0zRGUsQyk6dn0sQy52YWx1ZUZvcm1hdD0zRGZ1bmN0aW9uKGUpe3JldD0K
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9M0RlLEMpOmd9LEMudmFsdWVQYWRkaW5nPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtPQplbnRzLmxlbmd0aD8obT0zRGUsQyk6bX0sQ30sZS5tb2RlbHMu
bXVsdGlCYXJIb3Jpem9udGFsQ2hhcnQ9M0RmdW5jdGlvbigpe2Y9CnVuY3Rpb24gQyhlKXtyZXR1
cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBkPTNEZDMuc2VsZWN0KHRoaXMpLG09M0R0aGlzLFQ9
Cj0zRCh1fHxwYXJzZUludChkLnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS1vLmxlZnQtby5yaWdodCxr
PTNEKGF8fHBhcnNlSW50KGQucz0KdHlsZSgiaGVpZ2h0IikpfHw0MDApLW8udG9wLW8uYm90dG9t
O0MudXBkYXRlPTNEZnVuY3Rpb24oKXtkLmNhbGwoQyl9LEMuY29uPQp0YWluZXI9M0R0aGlzLGIu
ZGlzYWJsZWQ9M0RlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlzYWJsZWR9KTtpZighdyl7
dmE9CnIgTDt3PTNEe307Zm9yKEwgaW4gYiliW0xdaW5zdGFuY2VvZiBBcnJheT93W0xdPTNEYltM
XS5zbGljZSgwKTp3W0xdPTNEYltMXT0KfWlmKCFlfHwhZS5sZW5ndGh8fCFlLmZpbHRlcihmdW5j
dGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubGVuZ3RofSkubGVuZ3RoKXt2PQphciBBPTNEZC5zZWxl
Y3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFtFXSk7cmV0dXJuIEEuZW50ZXIoKS5hcHBlbmQoInRl
eHQiKS49CmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2VtIiku
c3R5bGUoInRleHQtYW5jaG9yIiwibWlkZD0KbGUiKSxBLmF0dHIoIngiLG8ubGVmdCtULzIpLmF0
dHIoInkiLG8udG9wK2svMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pPQosQ31kLnNlbGVj
dEFsbCgiLm52LW5vRGF0YSIpLnJlbW92ZSgpLGc9M0R0LnhTY2FsZSgpLHk9M0R0LnlTY2FsZSgp
O3ZhciBPPQo9M0RkLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LW11bHRpQmFySG9yaXpvbnRhbENo
YXJ0IikuZGF0YShbZV0pLE09M0RPLmVudGU9CnIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIs
Im52ZDMgbnYtd3JhcCBudi1tdWx0aUJhckhvcml6b250YWxDaGFydCIpLmFwcD0KZW5kKCJnIiks
Xz0zRE8uc2VsZWN0KCJnIik7TS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhp
cyIpLE0uYXBwPQplbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkgbnYtYXhpcyIpLmFwcGVuZCgi
ZyIpLmF0dHIoImNsYXNzIiwibnYtemVyb0xpbmU9CiIpLmFwcGVuZCgibGluZSIpLE0uYXBwZW5k
KCJnIikuYXR0cigiY2xhc3MiLCJudi1iYXJzV3JhcCIpLE0uYXBwZW5kKCJnIikuYT0KdHRyKCJj
bGFzcyIsIm52LWxlZ2VuZFdyYXAiKSxNLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtY29u
dHJvbHNXcmFwIiksPQpjJiYoaS53aWR0aChULXgoKSksdC5iYXJDb2xvcigpJiZlLmZvckVhY2go
ZnVuY3Rpb24oZSx0KXtlLmNvbG9yPTNEZDMucmdiKCI9CiNjY2MiKS5kYXJrZXIodCoxLjUpLnRv
U3RyaW5nKCl9KSxfLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5kYXR1bShlKS5jYWxsKD0KaSks
by50b3AhPTNEaS5oZWlnaHQoKSYmKG8udG9wPTNEaS5oZWlnaHQoKSxrPTNEKGF8fHBhcnNlSW50
KGQuc3R5bGUoImhlaWdoPQp0IikpfHw0MDApLW8udG9wLW8uYm90dG9tKSxfLnNlbGVjdCgiLm52
LWxlZ2VuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmE9Cm5zbGF0ZSgiK3goKSsiLCIrIC1v
LnRvcCsiKSIpKTtpZihsKXt2YXIgRD0zRFt7a2V5OiJHcm91cGVkIixkaXNhYmxlZDp0LnN0YT0K
Y2tlZCgpfSx7a2V5OiJTdGFja2VkIixkaXNhYmxlZDohdC5zdGFja2VkKCl9XTtzLndpZHRoKHgo
KSkuY29sb3IoWyIjNDQ0IiwiPQojNDQ0IiwiIzQ0NCJdKSxfLnNlbGVjdCgiLm52LWNvbnRyb2xz
V3JhcCIpLmRhdHVtKEQpLmF0dHIoInRyYW5zZm9ybSIsInRyYW49CnNsYXRlKDAsIisgLW8udG9w
KyIpIikuY2FsbChzKX1PLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK28ubGVmdCsiLCIr
bz0KLnRvcCsiKSIpLHQuZGlzYWJsZWQoZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJs
ZWR9KSkud2lkdGgoVCkuaGVpZ2h0PQooaykuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1
cm4gZS5jb2xvcnx8ZihlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbik9CntyZXR1cm4hZVtuXS5k
aXNhYmxlZH0pKTt2YXIgUD0zRF8uc2VsZWN0KCIubnYtYmFyc1dyYXAiKS5kYXR1bShlLmZpbHRl
cihmdT0KbmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkpO1AuY2FsbCh0KTtpZihoKXtuLnNj
YWxlKGcpLnRpY2tzKGsvMjQpLnRpY2tTPQppemUoLVQsMCksXy5zZWxlY3QoIi5udi14Lm52LWF4
aXMiKS5jYWxsKG4pO3ZhciBIPTNEXy5zZWxlY3QoIi5udi14Lm52LWF4aXM9CiIpLnNlbGVjdEFs
bCgiZyIpO0guc2VsZWN0QWxsKCJsaW5lLCB0ZXh0Iil9cCYmKHIuc2NhbGUoeSkudGlja3MoVC8x
MDApLnRpYz0Ka1NpemUoLWssMCksXy5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5hdHRyKCJ0cmFu
c2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK2srIikiPQopLF8uc2VsZWN0KCIubnYteS5udi1heGlzIiku
Y2FsbChyKSksXy5zZWxlY3QoIi5udi16ZXJvTGluZSBsaW5lIikuYXR0cigieDE9CiIseSgwKSku
YXR0cigieDIiLHkoMCkpLmF0dHIoInkxIiwwKS5hdHRyKCJ5MiIsLWspLGkuZGlzcGF0Y2gub24o
InN0YXRlQ2hhbj0KZ2UiLGZ1bmN0aW9uKGUpe2I9M0RlLFMuc3RhdGVDaGFuZ2UoYiksQy51cGRh
dGUoKX0pLHMuZGlzcGF0Y2gub24oImxlZ2VuZENsPQppY2siLGZ1bmN0aW9uKGUsbil7aWYoIWUu
ZGlzYWJsZWQpcmV0dXJuO0Q9M0RELm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXM9CmFibGVk
PTNEITAsZX0pLGUuZGlzYWJsZWQ9M0QhMTtzd2l0Y2goZS5rZXkpe2Nhc2UiR3JvdXBlZCI6dC5z
dGFja2VkKCExKTticj0KZWFrO2Nhc2UiU3RhY2tlZCI6dC5zdGFja2VkKCEwKX1iLnN0YWNrZWQ9
M0R0LnN0YWNrZWQoKSxTLnN0YXRlQ2hhbmdlKGIpLEMuPQp1cGRhdGUoKX0pLFMub24oInRvb2x0
aXBTaG93IixmdW5jdGlvbihlKXt2JiZOKGUsbS5wYXJlbnROb2RlKX0pLFMub24oImNoYW49Cmdl
U3RhdGUiLGZ1bmN0aW9uKG4pe3R5cGVvZiBuLmRpc2FibGVkIT0zRCJ1bmRlZmluZWQiJiYoZS5m
b3JFYWNoKGZ1bmN0aW9uKD0KZSx0KXtlLmRpc2FibGVkPTNEbi5kaXNhYmxlZFt0XX0pLGIuZGlz
YWJsZWQ9M0RuLmRpc2FibGVkKSx0eXBlb2Ygbi5zdGFja2VkPQohPTNEInVuZGVmaW5lZCImJih0
LnN0YWNrZWQobi5zdGFja2VkKSxiLnN0YWNrZWQ9M0RuLnN0YWNrZWQpLEMudXBkYXRlKCl9KX09
CiksQ312YXIgdD0zRGUubW9kZWxzLm11bHRpQmFySG9yaXpvbnRhbCgpLG49M0RlLm1vZGVscy5h
eGlzKCkscj0zRGUubW9kZWxzLj0KYXhpcygpLGk9M0RlLm1vZGVscy5sZWdlbmQoKS5oZWlnaHQo
MzApLHM9M0RlLm1vZGVscy5sZWdlbmQoKS5oZWlnaHQoMzApLG89Cj0zRHt0b3A6MzAscmlnaHQ6
MjAsYm90dG9tOjUwLGxlZnQ6NjB9LHU9M0RudWxsLGE9M0RudWxsLGY9M0RlLnV0aWxzLmRlZmF1
bD0KdENvbG9yKCksbD0zRCEwLGM9M0QhMCxoPTNEITAscD0zRCEwLGQ9M0QhMSx2PTNEITAsbT0z
RGZ1bmN0aW9uKGUsdCxuLHIsaSl7PQpyZXR1cm4iPGgzPiIrZSsiIC0gIit0KyI8L2gzPiIrIjxw
PiIrbisiPC9wPiJ9LGcseSxiPTNEe3N0YWNrZWQ6ZH0sdz0zRG51bGw9CixFPTNEIk5vIERhdGEg
QXZhaWxhYmxlLiIsUz0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwi
c3RhdD0KZUNoYW5nZSIsImNoYW5nZVN0YXRlIikseD0zRGZ1bmN0aW9uKCl7cmV0dXJuIGw/MTgw
OjB9LFQ9M0QwO3Quc3RhY2tlZChkKSxuPQoub3JpZW50KCJsZWZ0IikudGlja1BhZGRpbmcoNSku
aGlnaGxpZ2h0WmVybyghMSkuc2hvd01heE1pbighMSkudGlja0Zvcm1hdCg9CmZ1bmN0aW9uKGUp
e3JldHVybiBlfSksci5vcmllbnQoImJvdHRvbSIpLnRpY2tGb3JtYXQoZDMuZm9ybWF0KCIsLjFm
IikpLHMudT0KcGRhdGVTdGF0ZSghMSk7dmFyIE49M0RmdW5jdGlvbihpLHMpe3ZhciBvPTNEaS5w
b3NbMF0rKHMub2Zmc2V0TGVmdHx8MCksdT0KPTNEaS5wb3NbMV0rKHMub2Zmc2V0VG9wfHwwKSxh
PTNEbi50aWNrRm9ybWF0KCkodC54KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpPQopLGY9M0RyLnRp
Y2tGb3JtYXQoKSh0LnkoKShpLnBvaW50LGkucG9pbnRJbmRleCkpLGw9M0RtKGkuc2VyaWVzLmtl
eSxhLGYsaSw9CkMpO2UudG9vbHRpcC5zaG93KFtvLHVdLGwsaS52YWx1ZTwwPyJlIjoidyIsbnVs
bCxzKX07cmV0dXJuIHQuZGlzcGF0Y2gub24oIj0KZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixm
dW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXStvLmxlZnQsZS5wb3NbMV0rby50PQpvcF0sUy50
b29sdGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixm
dW5jdGlvbihlKXs9ClMudG9vbHRpcEhpZGUoZSl9KSxTLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rp
b24oKXt2JiZlLnRvb2x0aXAuY2xlYW51cCgpfSksQz0KLmRpc3BhdGNoPTNEUyxDLm11bHRpYmFy
PTNEdCxDLmxlZ2VuZD0zRGksQy54QXhpcz0zRG4sQy55QXhpcz0zRHIsZDMucmViaW5kPQooQyx0
LCJ4IiwieSIsInhEb21haW4iLCJ5RG9tYWluIiwieFJhbmdlIiwieVJhbmdlIiwiZm9yY2VYIiwi
Zm9yY2VZIiwiY2xpcEU9CmRnZSIsImlkIiwiZGVsYXkiLCJzaG93VmFsdWVzIiwic2hvd0Jhckxh
YmVscyIsInZhbHVlRm9ybWF0Iiwic3RhY2tlZCIsImJhcj0KQ29sb3IiKSxDLm9wdGlvbnM9M0Rl
LnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoQyksQy5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1PQpy
biBhcmd1bWVudHMubGVuZ3RoPyhvLnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9l
LnRvcDpvLnRvcCxvLnJpZ2g9CnQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJp
Z2h0Om8ucmlnaHQsby5ib3R0b209M0R0eXBlb2YgZS5ib3R0bz0KbSE9M0QidW5kZWZpbmVkIj9l
LmJvdHRvbTpvLmJvdHRvbSxvLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2Uu
PQpsZWZ0Om8ubGVmdCxDKTpvfSxDLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KHU9M0RlLEMpOnU9Cn0sQy5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oYT0zRGUsQyk6YX0sQy5jb2xvcj0zRGZ1bj0KY3Rpb24odCl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLnV0aWxzLmdldENvbG9yKHQpLGkuY29sb3IoZiksQyk6
Zn0sPQpDLnNob3dDb250cm9scz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhsPTNEZSxDKTpsfSxDLnNob3dMZWc9CmVuZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhjPTNEZSxDKTpjfSxDLnNob3dYQXhpcz0zRGZ1bmN0aT0Kb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLEMpOmh9LEMuc2hvd1lBeGlzPTNEZnVuY3Rpb24oZSl7
cmV0dXJuPQogYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsQyk6cH0sQy50b29sdGlwPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW49Cmd0aD8obT0zRGUsQyk6bX0sQy50b29sdGlwcz0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PTNEZSxDKT0KOnZ9LEMudG9v
bHRpcENvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0zRGUs
Qyk6bX0sQy5zPQp0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9
M0RlLEMpOmJ9LEMuZGVmYXVsdFN0YXRlPTNEZnU9Cm5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8odz0zRGUsQyk6d30sQy5ub0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1cj0KbiBhcmd1
bWVudHMubGVuZ3RoPyhFPTNEZSxDKTpFfSxDLnRyYW5zaXRpb25EdXJhdGlvbj0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhPQpyZ3VtZW50cy5sZW5ndGg/KFQ9M0RlLEMpOlR9LEN9LGUubW9kZWxzLm11
bHRpQ2hhcnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIEM9CihlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0
aW9uKGUpe3ZhciB1PTNEZDMuc2VsZWN0KHRoaXMpLGY9M0R0aGlzO0MudXBkYXRlPTNEZj0KdW5j
dGlvbigpe3UuY2FsbChDKX0sQy5jb250YWluZXI9M0R0aGlzO3ZhciBrPTNEKHJ8fHBhcnNlSW50
KHUuc3R5bGUoIndpZHRoPQoiKSl8fDk2MCktdC5sZWZ0LXQucmlnaHQsTD0zRChpfHxwYXJzZUlu
dCh1LnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktdC50b3AtdC49CmJvdHRvbSxBPTNEZS5maWx0ZXIo
ZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQmJmUudHlwZT0zRD0zRCJsaW5lIiYmZS55QT0K
eGlzPTNEPTNEMX0pLE89M0RlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZCYm
ZS50eXBlPTNEPTNEImxpbmUiPQomJmUueUF4aXM9M0Q9M0QyfSksTT0zRGUuZmlsdGVyKGZ1bmN0
aW9uKGUpe3JldHVybiFlLmRpc2FibGVkJiZlLnR5cGU9M0Q9M0Q9CiJiYXIiJiZlLnlBeGlzPTNE
PTNEMX0pLF89M0RlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZCYmZS50eXBl
PQo9M0Q9M0QiYmFyIiYmZS55QXhpcz0zRD0zRDJ9KSxEPTNEZS5maWx0ZXIoZnVuY3Rpb24oZSl7
cmV0dXJuIWUuZGlzYWJsZWQmJmU9Ci50eXBlPTNEPTNEImFyZWEiJiZlLnlBeGlzPTNEPTNEMX0p
LFA9M0RlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYj0KbGVkJiZlLnR5cGU9M0Q9
M0QiYXJlYSImJmUueUF4aXM9M0Q9M0QyfSksSD0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVy
biFlPQouZGlzYWJsZWQmJmUueUF4aXM9M0Q9M0QxfSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBl
LnZhbHVlcy5tYXAoZnVuY3Rpb24oZSw9CnQpe3JldHVybnt4OmUueCx5OmUueX19KX0pLEI9M0Rl
LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZCYmZS55QT0KeGlzPTNEPTNEMn0p
Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJu
e3g6ZS54PQoseTplLnl9fSl9KTthLmRvbWFpbihkMy5leHRlbnQoZDMubWVyZ2UoSC5jb25jYXQo
QikpLGZ1bmN0aW9uKGUpe3JldHVybiBlLng9Cn0pKS5yYW5nZShbMCxrXSk7dmFyIGo9M0R1LnNl
bGVjdEFsbCgiZy53cmFwLm11bHRpQ2hhcnQiKS5kYXRhKFtlXSksRj0zRGouZT0KbnRlcigpLmFw
cGVuZCgiZyIpLmF0dHIoImNsYXNzIiwid3JhcCBudmQzIG11bHRpQ2hhcnQiKS5hcHBlbmQoImci
KTtGLmFwcGVuPQpkKCJnIikuYXR0cigiY2xhc3MiLCJ4IGF4aXMiKSxGLmFwcGVuZCgiZyIpLmF0
dHIoImNsYXNzIiwieTEgYXhpcyIpLEYuYXBwZW49CmQoImciKS5hdHRyKCJjbGFzcyIsInkyIGF4
aXMiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibGluZXMxV3JhcCIpLEYuYT0KcHBlbmQo
ImciKS5hdHRyKCJjbGFzcyIsImxpbmVzMldyYXAiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNz
IiwiYmFyczFXcmFwPQoiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiYmFyczJXcmFwIiks
Ri5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInN0YWM9CmsxV3JhcCIpLEYuYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJzdGFjazJXcmFwIiksRi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcz0KIiwi
bGVnZW5kV3JhcCIpO3ZhciBJPTNEai5zZWxlY3QoImciKTtzJiYoeC53aWR0aChrLzIpLEkuc2Vs
ZWN0KCIubGVnZW5kV3JhPQpwIikuZGF0dW0oZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUub3Jp
Z2luYWxLZXk9M0RlLm9yaWdpbmFsS2V5PTNEPTNEPTNEdW49CmRlZmluZWQ/ZS5rZXk6ZS5vcmln
aW5hbEtleSxlLmtleT0zRGUub3JpZ2luYWxLZXkrKGUueUF4aXM9M0Q9M0QxPyIiOiIgKHJpZz0K
aHQgYXhpcykiKSxlfSkpLmNhbGwoeCksdC50b3AhPTNEeC5oZWlnaHQoKSYmKHQudG9wPTNEeC5o
ZWlnaHQoKSxMPTNEKGl8fHBhPQpyc2VJbnQodS5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXQudG9w
LXQuYm90dG9tKSxJLnNlbGVjdCgiLmxlZ2VuZFdyYXAiKS5hdHQ9CnIoInRyYW5zZm9ybSIsInRy
YW5zbGF0ZSgiK2svMisiLCIrIC10LnRvcCsiKSIpKSxkLndpZHRoKGspLmhlaWdodChMKS5pbnRl
cj0KcG9sYXRlKCJtb25vdG9uZSIpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUu
Y29sb3J8fG5bdCVuLmxlbmd0aF19PQopLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25d
LmRpc2FibGVkJiZlW25dLnlBeGlzPTNEPTNEMSYmZVtuXS50eXBlPQo9M0Q9M0QibGluZSJ9KSks
di53aWR0aChrKS5oZWlnaHQoTCkuaW50ZXJwb2xhdGUoIm1vbm90b25lIikuY29sb3IoZS5tYXAo
ZnU9Cm5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxuW3Qlbi5sZW5ndGhdfSkuZmlsdGVyKGZ1
bmN0aW9uKHQsbil7cmV0dXJuIWVbbj0KXS5kaXNhYmxlZCYmZVtuXS55QXhpcz0zRD0zRDImJmVb
bl0udHlwZT0zRD0zRCJsaW5lIn0pKSxtLndpZHRoKGspLmhlaWdodChMPQopLmNvbG9yKGUubWFw
KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fG5bdCVuLmxlbmd0aF19KS5maWx0ZXIoZnVu
Y3Rpb249Cih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkJiZlW25dLnlBeGlzPTNEPTNEMSYmZVtu
XS50eXBlPTNEPTNEImJhciJ9KSksZy53aT0KZHRoKGspLmhlaWdodChMKS5jb2xvcihlLm1hcChm
dW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxuW3Qlbi5sZW5ndGhdfSkuPQpmaWx0ZXIoZnVu
Y3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZCYmZVtuXS55QXhpcz0zRD0zRDImJmVbbl0u
dHlwZT0zRD0KPTNEImJhciJ9KSkseS53aWR0aChrKS5oZWlnaHQoTCkuY29sb3IoZS5tYXAoZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8PQpuW3Qlbi5sZW5ndGhdfSkuZmlsdGVyKGZ1bmN0
aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWQmJmVbbl0ueUF4aXM9M0Q9M0Q9CjEmJmVbbl0u
dHlwZT0zRD0zRCJhcmVhIn0pKSxiLndpZHRoKGspLmhlaWdodChMKS5jb2xvcihlLm1hcChmdW5j
dGlvbihlLHQpez0KcmV0dXJuIGUuY29sb3J8fG5bdCVuLmxlbmd0aF19KS5maWx0ZXIoZnVuY3Rp
b24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZCYmPQplW25dLnlBeGlzPTNEPTNEMiYmZVtuXS50
eXBlPTNEPTNEImFyZWEifSkpLEkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCI9Cit0Lmxl
ZnQrIiwiK3QudG9wKyIpIik7dmFyIHE9M0RJLnNlbGVjdCgiLmxpbmVzMVdyYXAiKS5kYXR1bShB
KSxSPTNESS5zZWxlYz0KdCgiLmJhcnMxV3JhcCIpLmRhdHVtKE0pLFU9M0RJLnNlbGVjdCgiLnN0
YWNrMVdyYXAiKS5kYXR1bShEKSx6PTNESS5zZWxlY3QoPQoiLmxpbmVzMldyYXAiKS5kYXR1bShP
KSxXPTNESS5zZWxlY3QoIi5iYXJzMldyYXAiKS5kYXR1bShfKSxYPTNESS5zZWxlY3QoIi49CnN0
YWNrMldyYXAiKS5kYXR1bShQKSxWPTNERC5sZW5ndGg/RC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJu
IGUudmFsdWVzfSkucmVkdT0KY2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5tYXAoZnVuY3Rpb24o
ZSxuKXtyZXR1cm57eDplLngseTplLnkrdFtuXS55fX0pfSkuPQpjb25jYXQoW3t4OjAseTowfV0p
OltdLCQ9M0RQLmxlbmd0aD9QLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXN9KS5yZWQ9
CnVjZShmdW5jdGlvbihlLHQpe3JldHVybiBlLm1hcChmdW5jdGlvbihlLG4pe3JldHVybnt4OmUu
eCx5OmUueSt0W25dLnl9fSl9KT0KLmNvbmNhdChbe3g6MCx5OjB9XSk6W107aC5kb21haW4obHx8
ZDMuZXh0ZW50KGQzLm1lcmdlKEgpLmNvbmNhdChWKSxmdW5jdGlvPQpuKGUpe3JldHVybiBlLnl9
KSkucmFuZ2UoWzAsTF0pLHAuZG9tYWluKGN8fGQzLmV4dGVudChkMy5tZXJnZShCKS5jb25jYXQo
JCk9CixmdW5jdGlvbihlKXtyZXR1cm4gZS55fSkpLnJhbmdlKFswLExdKSxkLnlEb21haW4oaC5k
b21haW4oKSksbS55RG9tYWluKGguZD0Kb21haW4oKSkseS55RG9tYWluKGguZG9tYWluKCkpLHYu
eURvbWFpbihwLmRvbWFpbigpKSxnLnlEb21haW4ocC5kb21haW4oKSksPQpiLnlEb21haW4ocC5k
b21haW4oKSksRC5sZW5ndGgmJmQzLnRyYW5zaXRpb24oVSkuY2FsbCh5KSxQLmxlbmd0aCYmZDMu
dHJhbnM9Cml0aW9uKFgpLmNhbGwoYiksTS5sZW5ndGgmJmQzLnRyYW5zaXRpb24oUikuY2FsbCht
KSxfLmxlbmd0aCYmZDMudHJhbnNpdGlvbj0KKFcpLmNhbGwoZyksQS5sZW5ndGgmJmQzLnRyYW5z
aXRpb24ocSkuY2FsbChkKSxPLmxlbmd0aCYmZDMudHJhbnNpdGlvbih6KS5jPQphbGwodiksdy50
aWNrcyhrLzEwMCkudGlja1NpemUoLUwsMCksSS5zZWxlY3QoIi54LmF4aXMiKS5hdHRyKCJ0cmFu
c2Zvcm0iLCI9CnRyYW5zbGF0ZSgwLCIrTCsiKSIpLGQzLnRyYW5zaXRpb24oSS5zZWxlY3QoIi54
LmF4aXMiKSkuY2FsbCh3KSxFLnRpY2tzKEwvMz0KNikudGlja1NpemUoLWssMCksZDMudHJhbnNp
dGlvbihJLnNlbGVjdCgiLnkxLmF4aXMiKSkuY2FsbChFKSxTLnRpY2tzKEwvMzYpPQoudGlja1Np
emUoLWssMCksZDMudHJhbnNpdGlvbihJLnNlbGVjdCgiLnkyLmF4aXMiKSkuY2FsbChTKSxJLnNl
bGVjdCgiLnkyLmE9CnhpcyIpLnN0eWxlKCJvcGFjaXR5IixCLmxlbmd0aD8xOjApLmF0dHIoInRy
YW5zZm9ybSIsInRyYW5zbGF0ZSgiK2EucmFuZ2UoKT0KWzFdKyIsMCkiKSx4LmRpc3BhdGNoLm9u
KCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24oZSl7Qy51cGRhdGUoKX0pLFQub24oInRvb2x0PQppcFNo
b3ciLGZ1bmN0aW9uKGUpe28mJk4oZSxmLnBhcmVudE5vZGUpfSl9KSxDfXZhciB0PTNEe3RvcDoz
MCxyaWdodDoyMCxib3Q9CnRvbTo1MCxsZWZ0OjYwfSxuPTNEZDMuc2NhbGUuY2F0ZWdvcnkyMCgp
LnJhbmdlKCkscj0zRG51bGwsaT0zRG51bGwscz0zRCEwLD0Kbz0zRCEwLHU9M0RmdW5jdGlvbihl
LHQsbixyLGkpe3JldHVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIrbisiIGF0ICIrdCsiPC9wPQo+
In0sYSxmLGwsYyxhPTNEZDMuc2NhbGUubGluZWFyKCksaD0zRGQzLnNjYWxlLmxpbmVhcigpLHA9
M0RkMy5zY2FsZS5saW5lYXI9CigpLGQ9M0RlLm1vZGVscy5saW5lKCkueVNjYWxlKGgpLHY9M0Rl
Lm1vZGVscy5saW5lKCkueVNjYWxlKHApLG09M0RlLm1vZGVscz0KLm11bHRpQmFyKCkuc3RhY2tl
ZCghMSkueVNjYWxlKGgpLGc9M0RlLm1vZGVscy5tdWx0aUJhcigpLnN0YWNrZWQoITEpLnlTY2Fs
PQplKHApLHk9M0RlLm1vZGVscy5zdGFja2VkQXJlYSgpLnlTY2FsZShoKSxiPTNEZS5tb2RlbHMu
c3RhY2tlZEFyZWEoKS55U2NhbGU9CihwKSx3PTNEZS5tb2RlbHMuYXhpcygpLnNjYWxlKGEpLm9y
aWVudCgiYm90dG9tIikudGlja1BhZGRpbmcoNSksRT0zRGUubW9kZT0KbHMuYXhpcygpLnNjYWxl
KGgpLm9yaWVudCgibGVmdCIpLFM9M0RlLm1vZGVscy5heGlzKCkuc2NhbGUocCkub3JpZW50KCJy
aWdoPQp0IikseD0zRGUubW9kZWxzLmxlZ2VuZCgpLmhlaWdodCgzMCksVD0zRGQzLmRpc3BhdGNo
KCJ0b29sdGlwU2hvdyIsInRvb2x0aXA9CkhpZGUiKSxOPTNEZnVuY3Rpb24odCxuKXt2YXIgcj0z
RHQucG9zWzBdKyhuLm9mZnNldExlZnR8fDApLGk9M0R0LnBvc1sxXSsobj0KLm9mZnNldFRvcHx8
MCkscz0zRHcudGlja0Zvcm1hdCgpKGQueCgpKHQucG9pbnQsdC5wb2ludEluZGV4KSksbz0zRCh0
LnNlcmllPQpzLnlBeGlzPTNEPTNEMj9TOkUpLnRpY2tGb3JtYXQoKShkLnkoKSh0LnBvaW50LHQu
cG9pbnRJbmRleCkpLGE9M0R1KHQuc2VyaWU9CnMua2V5LHMsbyx0LEMpO2UudG9vbHRpcC5zaG93
KFtyLGldLGEsdW5kZWZpbmVkLHVuZGVmaW5lZCxuLm9mZnNldFBhcmVudCl9Oz0KcmV0dXJuIGQu
ZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9
M0RbZS5wb3NbPQowXSt0LmxlZnQsZS5wb3NbMV0rdC50b3BdLFQudG9vbHRpcFNob3coZSl9KSxk
LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQ9Ci50b29sdGlwIixmdW5jdGlvbihlKXtULnRv
b2x0aXBIaWRlKGUpfSksdi5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50bz0Kb2x0aXAi
LGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK3QubGVmdCxlLnBvc1sxXSt0LnRvcF0sVC50
b29sdGlwU2hvdyhlPQopfSksdi5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAi
LGZ1bmN0aW9uKGUpe1QudG9vbHRpcEhpZGUoZSl9KSw9Cm0uZGlzcGF0Y2gub24oImVsZW1lbnRN
b3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rdC5sZT0KZnQs
ZS5wb3NbMV0rdC50b3BdLFQudG9vbHRpcFNob3coZSl9KSxtLmRpc3BhdGNoLm9uKCJlbGVtZW50
TW91c2VvdXQudG9vbHRpPQpwIixmdW5jdGlvbihlKXtULnRvb2x0aXBIaWRlKGUpfSksZy5kaXNw
YXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIiw9CmZ1bmN0aW9uKGUpe2UucG9zPTNE
W2UucG9zWzBdK3QubGVmdCxlLnBvc1sxXSt0LnRvcF0sVC50b29sdGlwU2hvdyhlKX0pLGcuZD0K
aXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe1QudG9vbHRp
cEhpZGUoZSl9KSx5LmRpc3BhPQp0Y2gub24oInRvb2x0aXBTaG93IixmdW5jdGlvbihlKXtpZigh
TWF0aC5yb3VuZCh5LnkoKShlLnBvaW50KSoxMDApKXJldHVybiA9CnNldFRpbWVvdXQoZnVuY3Rp
b24oKXtkMy5zZWxlY3RBbGwoIi5wb2ludC5ob3ZlciIpLmNsYXNzZWQoImhvdmVyIiwhMSl9LDAp
LD0KITE7ZS5wb3M9M0RbZS5wb3NbMF0rdC5sZWZ0LGUucG9zWzFdK3QudG9wXSxULnRvb2x0aXBT
aG93KGUpfSkseS5kaXNwYXRjaC5vPQpuKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oZSl7VC50b29s
dGlwSGlkZShlKX0pLGIuZGlzcGF0Y2gub24oInRvb2x0aXBTaG93Iiw9CmZ1bmN0aW9uKGUpe2lm
KCFNYXRoLnJvdW5kKGIueSgpKGUucG9pbnQpKjEwMCkpcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rp
b24oKT0Ke2QzLnNlbGVjdEFsbCgiLnBvaW50LmhvdmVyIikuY2xhc3NlZCgiaG92ZXIiLCExKX0s
MCksITE7ZS5wb3M9M0RbZS5wb3NbMF0rPQp0LmxlZnQsZS5wb3NbMV0rdC50b3BdLFQudG9vbHRp
cFNob3coZSl9KSxiLmRpc3BhdGNoLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Q9CmlvbihlKXtULnRv
b2x0aXBIaWRlKGUpfSksZC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixm
dW5jdGlvbj0KKGUpe2UucG9zPTNEW2UucG9zWzBdK3QubGVmdCxlLnBvc1sxXSt0LnRvcF0sVC50
b29sdGlwU2hvdyhlKX0pLGQuZGlzcGF0Y2guPQpvbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAi
LGZ1bmN0aW9uKGUpe1QudG9vbHRpcEhpZGUoZSl9KSx2LmRpc3BhdGNoLm9uKCI9CmVsZW1lbnRN
b3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rdC5sZWZ0LGUu
cG9zWzFdK3QudD0Kb3BdLFQudG9vbHRpcFNob3coZSl9KSx2LmRpc3BhdGNoLm9uKCJlbGVtZW50
TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7PQpULnRvb2x0aXBIaWRlKGUpfSksVC5vbigi
dG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7byYmZS50b29sdGlwLmNsZWFudXAoKX0pLEM9Ci5kaXNw
YXRjaD0zRFQsQy5saW5lczE9M0RkLEMubGluZXMyPTNEdixDLmJhcnMxPTNEbSxDLmJhcnMyPTNE
ZyxDLnN0YWNrMT0zRD0KeSxDLnN0YWNrMj0zRGIsQy54QXhpcz0zRHcsQy55QXhpczE9M0RFLEMu
eUF4aXMyPTNEUyxDLm9wdGlvbnM9M0RlLnV0aWxzLm9wPQp0aW9uc0Z1bmMuYmluZChDKSxDLng9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZ2V0WD0zRGUsZC54KGU9Ciks
bS54KGUpLEMpOmdldFh9LEMueT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhnZXRZPTNEZSxkLnkoZT0KKSxtLnkoZSksQyk6Z2V0WX0sQy55RG9tYWluMT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZSxDPQopOmx9LEMueURvbWFpbjI9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUsQyk6Y30sQy5tYXJnaW49
Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PTNEZSxDKTp0fSxDLndp
ZHRoPTNEZnVuY3Rpb24oZSl7cj0KZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0zRGUsQyk6cn0s
Qy5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzPQoubGVuZ3RoPyhpPTNEZSxD
KTppfSxDLmNvbG9yPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49M0Rl
LHg9Ci5jb2xvcihlKSxDKTpufSxDLnNob3dMZWdlbmQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8ocz0zRGUsQz0KKTpzfSxDLnRvb2x0aXBzPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RlLEMpOm99LEMudG9vbHRpPQpwQ29udGVudD0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZSxDKTp1fSxDfSxlLm1vZGVs
cy5vaGw9CmNCYXI9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIHgoZSl7cmV0dXJuIGUuZWFjaChmdW5j
dGlvbihlKXt2YXIgZz0zRG4tdC5sZWZ0LT0KdC5yaWdodCx4PTNEci10LnRvcC10LmJvdHRvbSxU
PTNEZDMuc2VsZWN0KHRoaXMpO3MuZG9tYWluKHl8fGQzLmV4dGVudChlWzBdPQoudmFsdWVzLm1h
cCh1KS5jb25jYXQocCkpKSx2P3MucmFuZ2Uod3x8W2cqLjUvZVswXS52YWx1ZXMubGVuZ3RoLGcq
KGVbMF0udmE9Cmx1ZXMubGVuZ3RoLS41KS9lWzBdLnZhbHVlcy5sZW5ndGhdKTpzLnJhbmdlKHd8
fFswLGddKSxvLmRvbWFpbihifHxbZDMubWluKD0KZVswXS52YWx1ZXMubWFwKGgpLmNvbmNhdChk
KSksZDMubWF4KGVbMF0udmFsdWVzLm1hcChjKS5jb25jYXQoZCkpXSkucmFuZ2UoPQpFfHxbeCww
XSkscy5kb21haW4oKVswXT0zRD0zRD0zRHMuZG9tYWluKClbMV0mJihzLmRvbWFpbigpWzBdP3Mu
ZG9tYWluKFtzLmQ9Cm9tYWluKClbMF0tcy5kb21haW4oKVswXSouMDEscy5kb21haW4oKVsxXStz
LmRvbWFpbigpWzFdKi4wMV0pOnMuZG9tYWluKFstMT0KLDFdKSksby5kb21haW4oKVswXT0zRD0z
RD0zRG8uZG9tYWluKClbMV0mJihvLmRvbWFpbigpWzBdP28uZG9tYWluKFtvLmRvbWFpPQpuKClb
MF0rby5kb21haW4oKVswXSouMDEsby5kb21haW4oKVsxXS1vLmRvbWFpbigpWzFdKi4wMV0pOm8u
ZG9tYWluKFstMSwxXSk9Cik7dmFyIE49M0RkMy5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJnLm52
LXdyYXAubnYtb2hsY0JhciIpLmRhdGEoW2VbMF0udmFsdT0KZXNdKSxDPTNETi5lbnRlcigpLmFw
cGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LW9obGNCYXIiKSxrPTNEPQpD
LmFwcGVuZCgiZGVmcyIpLEw9M0RDLmFwcGVuZCgiZyIpLEE9M0ROLnNlbGVjdCgiZyIpO0wuYXBw
ZW5kKCJnIikuYXR0cigiY2w9CmFzcyIsIm52LXRpY2tzIiksTi5hdHRyKCJ0cmFuc2Zvcm0iLCJ0
cmFuc2xhdGUoIit0LmxlZnQrIiwiK3QudG9wKyIpIiksVC5vbj0KKCJjbGljayIsZnVuY3Rpb24o
ZSx0KXtTLmNoYXJ0Q2xpY2soe2RhdGE6ZSxpbmRleDp0LHBvczpkMy5ldmVudCxpZDppfSl9KSxr
PQouYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoImlkIiwibnYtY2hhcnQtY2xpcC1wYXRoLSIraSku
YXBwZW5kKCJyZWN0IiksTi5zZWw9CmVjdCgiI252LWNoYXJ0LWNsaXAtcGF0aC0iK2krIiByZWN0
IikuYXR0cigid2lkdGgiLGcpLmF0dHIoImhlaWdodCIseCksQS5hdD0KdHIoImNsaXAtcGF0aCIs
bT8idXJsKCNudi1jaGFydC1jbGlwLXBhdGgtIitpKyIpIjoiIik7dmFyIE89M0ROLnNlbGVjdCgi
Lm52PQotdGlja3MiKS5zZWxlY3RBbGwoIi5udi10aWNrIikuZGF0YShmdW5jdGlvbihlKXtyZXR1
cm4gZX0pO08uZXhpdCgpLnJlbW92ZSg9Cik7dmFyIE09M0RPLmVudGVyKCkuYXBwZW5kKCJwYXRo
IikuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4oZihlLD0KdCk+bChlLHQpPyJu
di10aWNrIG5lZ2F0aXZlIjoibnYtdGljayBwb3NpdGl2ZSIpKyIgbnYtdGljay0iK24rIi0iK3R9
KS5hdHRyPQooImQiLGZ1bmN0aW9uKHQsbil7dmFyIHI9M0RnL2VbMF0udmFsdWVzLmxlbmd0aCou
OTtyZXR1cm4ibTAsMGwwLCIrKG8oZih0LG49CikpLW8oYyh0LG4pKSkrImwiKyAtci8yKyIsMGwi
K3IvMisiLDBsMCwiKyhvKGgodCxuKSktbyhmKHQsbikpKSsibDAsIisobyhsKD0KdCxuKSktbyho
KHQsbikpKSsibCIrci8yKyIsMGwiKyAtci8yKyIsMHoifSkuYXR0cigidHJhbnNmb3JtIixmdW5j
dGlvbihlLHQpPQp7cmV0dXJuInRyYW5zbGF0ZSgiK3ModShlLHQpKSsiLCIrbyhjKGUsdCkpKyIp
In0pLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKHQ9CixuKXtkMy5zZWxlY3QodGhpcykuY2xhc3Nl
ZCgiaG92ZXIiLCEwKSxTLmVsZW1lbnRNb3VzZW92ZXIoe3BvaW50OnQsc2VyaWVzOj0KZVswXSxw
b3M6W3ModSh0LG4pKSxvKGEodCxuKSldLHBvaW50SW5kZXg6bixzZXJpZXNJbmRleDowLGU6ZDMu
ZXZlbnR9KX0pLm9uPQooIm1vdXNlb3V0IixmdW5jdGlvbih0LG4pe2QzLnNlbGVjdCh0aGlzKS5j
bGFzc2VkKCJob3ZlciIsITEpLFMuZWxlbWVudE1vdXM9CmVvdXQoe3BvaW50OnQsc2VyaWVzOmVb
MF0scG9pbnRJbmRleDpuLHNlcmllc0luZGV4OjAsZTpkMy5ldmVudH0pfSkub24oImNsaT0KY2si
LGZ1bmN0aW9uKGUsdCl7Uy5lbGVtZW50Q2xpY2soe3ZhbHVlOmEoZSx0KSxkYXRhOmUsaW5kZXg6
dCxwb3M6W3ModShlLHQpPQopLG8oYShlLHQpKV0sZTpkMy5ldmVudCxpZDppfSksZDMuZXZlbnQu
c3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiZGJsY2xpY2siLGY9CnVuY3Rpb24oZSx0KXtTLmVsZW1l
bnREYmxDbGljayh7dmFsdWU6YShlLHQpLGRhdGE6ZSxpbmRleDp0LHBvczpbcyh1KGUsdCkpLD0K
byhhKGUsdCkpXSxlOmQzLmV2ZW50LGlkOml9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0p
O08uYXR0cigiY2xhc3MiLGZ1PQpuY3Rpb24oZSx0LG4pe3JldHVybihmKGUsdCk+bChlLHQpPyJu
di10aWNrIG5lZ2F0aXZlIjoibnYtdGljayBwb3NpdGl2ZSIpKyI9CiBudi10aWNrLSIrbisiLSIr
dH0pLGQzLnRyYW5zaXRpb24oTykuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVy
bj0KInRyYW5zbGF0ZSgiK3ModShlLHQpKSsiLCIrbyhjKGUsdCkpKyIpIn0pLmF0dHIoImQiLGZ1
bmN0aW9uKHQsbil7dmFyIHI9M0RnPQovZVswXS52YWx1ZXMubGVuZ3RoKi45O3JldHVybiJtMCww
bDAsIisobyhmKHQsbikpLW8oYyh0LG4pKSkrImwiKyAtci8yKyIsMGw9CiIrci8yKyIsMGwwLCIr
KG8oaCh0LG4pKS1vKGYodCxuKSkpKyJsMCwiKyhvKGwodCxuKSktbyhoKHQsbikpKSsibCIrci8y
KyIsMD0KbCIrIC1yLzIrIiwweiJ9KX0pLHh9dmFyIHQ9M0R7dG9wOjAscmlnaHQ6MCxib3R0b206
MCxsZWZ0OjB9LG49M0Q5NjAscj0zRDUwPQowLGk9M0RNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkq
MWU0KSxzPTNEZDMuc2NhbGUubGluZWFyKCksbz0zRGQzLnNjYWxlLmxpbmU9CmFyKCksdT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBlLnh9LGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS55fSxmPTNEZnVu
Y3Rpb24oZT0KKXtyZXR1cm4gZS5vcGVufSxsPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2xvc2V9
LGM9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5oPQppZ2h9LGg9M0RmdW5jdGlvbihlKXtyZXR1cm4g
ZS5sb3d9LHA9M0RbXSxkPTNEW10sdj0zRCExLG09M0QhMCxnPTNEZS51dGlscy49CmRlZmF1bHRD
b2xvcigpLHksYix3LEUsUz0zRGQzLmRpc3BhdGNoKCJjaGFydENsaWNrIiwiZWxlbWVudENsaWNr
IiwiZWxlbWVudD0KRGJsQ2xpY2siLCJlbGVtZW50TW91c2VvdmVyIiwiZWxlbWVudE1vdXNlb3V0
Iik7cmV0dXJuIHguZGlzcGF0Y2g9M0RTLHgub3B0PQppb25zPTNEZS51dGlscy5vcHRpb25zRnVu
Yy5iaW5kKHgpLHgueD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Q9Cmg/KHU9
M0RlLHgpOnV9LHgueT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNE
ZSx4KTphfSx4Lm9wZT0Kbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhm
PTNEZSx4KTpmfSx4LmNsb3NlPTNEZnVuY3Rpb24oZSl7PQpyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8obD0zRGUseCk6bH0seC5oaWdoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy49Cmxl
bmd0aD8oYz0zRGUseCk6Y30seC5sb3c9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oaD0zRGUseCk6aD0KfSx4Lm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyh0LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QiPQp1bmRlZmluZWQiP2UudG9wOnQu
dG9wLHQucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OnQucmk9
CmdodCx0LmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTp0
LmJvdHRvbSx0LmxlZnQ9M0R0eT0KcGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnQu
bGVmdCx4KTp0fSx4LndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuPQogYXJndW1lbnRzLmxlbmd0
aD8obj0zRGUseCk6bn0seC5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmc9CnRoPyhyPTNEZSx4KTpyfSx4LnhTY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhzPTNEZSx4KTpzfT0KLHgueVNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KG89M0RlLHgpOm99LHgueERvbWFpbj0zRGZ1PQpuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9M0RlLHgpOnl9LHgueURvbWFpbj0zRGZ1bmN0aW9uKGUp
e3JldHU9CnJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9M0RlLHgpOmJ9LHgueFJhbmdlPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZT0Kbmd0aD8odz0zRGUseCk6d30seC55UmFuZ2U9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT0zRGUseCk6PQpFfSx4LmZvcmNl
WD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSx4KTpwfSx4LmZv
cmNlWT0zRGY9CnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9M0RlLHgpOmR9
LHgucGFkRGF0YT0zRGZ1bmN0aW9uKGUpe3JldD0KdXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9M0Rl
LHgpOnZ9LHguY2xpcEVkZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzPQoubGVuZ3Ro
PyhtPTNEZSx4KTptfSx4LmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGc9M0RlLnU9CnRpbHMuZ2V0Q29sb3IodCkseCk6Z30seC5pZD0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPTNEZSx4KT0KOml9LHh9LGUubW9kZWxzLnBpZT0zRGZ1
bmN0aW9uKCl7ZnVuY3Rpb24gUyhlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe2Z1PQpuY3Rp
b24gcShlKXt2YXIgdD0zRChlLnN0YXJ0QW5nbGUrZS5lbmRBbmdsZSkqOTAvTWF0aC5QSS05MDty
ZXR1cm4gdD45MD90LTE9CjgwOnR9ZnVuY3Rpb24gUihlKXtlLmVuZEFuZ2xlPTNEaXNOYU4oZS5l
bmRBbmdsZSk/MDplLmVuZEFuZ2xlLGUuc3RhcnRBbmdsZT0KPTNEaXNOYU4oZS5zdGFydEFuZ2xl
KT8wOmUuc3RhcnRBbmdsZSxtfHwoZS5pbm5lclJhZGl1cz0zRDApO3ZhciB0PTNEZDMuaW50PQpl
cnBvbGF0ZSh0aGlzLl9jdXJyZW50LGUpO3JldHVybiB0aGlzLl9jdXJyZW50PTNEdCgwKSxmdW5j
dGlvbihlKXtyZXR1cm4gQSg9CnQoZSkpfX1mdW5jdGlvbiBVKGUpe2UuaW5uZXJSYWRpdXM9M0Qw
O3ZhciB0PTNEZDMuaW50ZXJwb2xhdGUoe3N0YXJ0QW5nbGU6MD0KLGVuZEFuZ2xlOjB9LGUpO3Jl
dHVybiBmdW5jdGlvbihlKXtyZXR1cm4gQSh0KGUpKX19dmFyIG89M0RuLXQubGVmdC10LnJpZ2h0
PQosZj0zRHItdC50b3AtdC5ib3R0b20sUz0zRE1hdGgubWluKG8sZikvMix4PTNEUy1TLzUsVD0z
RGQzLnNlbGVjdCh0aGlzKSxOPQo9M0RULnNlbGVjdEFsbCgiLm52LXdyYXAubnYtcGllIikuZGF0
YShlKSxDPTNETi5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImM9Cmxhc3MiLCJudmQzIG52LXdy
YXAgbnYtcGllIG52LWNoYXJ0LSIrdSksaz0zREMuYXBwZW5kKCJnIiksTD0zRE4uc2VsZWN0KCJn
Ij0KKTtrLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtcGllIiksay5hcHBlbmQoImciKS5h
dHRyKCJjbGFzcyIsIm52LXBpZUxhPQpiZWxzIiksTi5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xh
dGUoIit0LmxlZnQrIiwiK3QudG9wKyIpIiksTC5zZWxlY3QoIi5udi09CnBpZSIpLmF0dHIoInRy
YW5zZm9ybSIsInRyYW5zbGF0ZSgiK28vMisiLCIrZi8yKyIpIiksTC5zZWxlY3QoIi5udi1waWVM
YWJlbD0KcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK28vMisiLCIrZi8yKyIpIiks
VC5vbigiY2xpY2siLGZ1bmN0aW9uKGUsPQp0KXtFLmNoYXJ0Q2xpY2soe2RhdGE6ZSxpbmRleDp0
LHBvczpkMy5ldmVudCxpZDp1fSl9KTt2YXIgQT0zRGQzLnN2Zy5hcmMoKS49Cm91dGVyUmFkaXVz
KHgpO3kmJkEuc3RhcnRBbmdsZSh5KSxiJiZBLmVuZEFuZ2xlKGIpLG0mJkEuaW5uZXJSYWRpdXMo
Uyp3KTt2YT0KciBPPTNEZDMubGF5b3V0LnBpZSgpLnNvcnQobnVsbCkudmFsdWUoZnVuY3Rpb24o
ZSl7cmV0dXJuIGUuZGlzYWJsZWQ/MDpzKGUpPQp9KSxNPTNETi5zZWxlY3QoIi5udi1waWUiKS5z
ZWxlY3RBbGwoIi5udi1zbGljZSIpLmRhdGEoTyksXz0zRE4uc2VsZWN0KCIubnY9Ci1waWVMYWJl
bHMiKS5zZWxlY3RBbGwoIi5udi1sYWJlbCIpLmRhdGEoTyk7TS5leGl0KCkucmVtb3ZlKCksXy5l
eGl0KCkucmVtbz0KdmUoKTt2YXIgRD0zRE0uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFz
cyIsIm52LXNsaWNlIikub24oIm1vdXNlb3ZlciIsPQpmdW5jdGlvbihlLHQpe2QzLnNlbGVjdCh0
aGlzKS5jbGFzc2VkKCJob3ZlciIsITApLEUuZWxlbWVudE1vdXNlb3Zlcih7bGFiZWw9CjppKGUu
ZGF0YSksdmFsdWU6cyhlLmRhdGEpLHBvaW50OmUuZGF0YSxwb2ludEluZGV4OnQscG9zOltkMy5l
dmVudC5wYWdlWCxkMz0KLmV2ZW50LnBhZ2VZXSxpZDp1fSl9KS5vbigibW91c2VvdXQiLGZ1bmN0
aW9uKGUsdCl7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoPQoiaG92ZXIiLCExKSxFLmVsZW1lbnRN
b3VzZW91dCh7bGFiZWw6aShlLmRhdGEpLHZhbHVlOnMoZS5kYXRhKSxwb2ludDplLmRhdGE9Cixp
bmRleDp0LGlkOnV9KX0pLm9uKCJjbGljayIsZnVuY3Rpb24oZSx0KXtFLmVsZW1lbnRDbGljayh7
bGFiZWw6aShlLmRhdGEpLD0KdmFsdWU6cyhlLmRhdGEpLHBvaW50OmUuZGF0YSxpbmRleDp0LHBv
czpkMy5ldmVudCxpZDp1fSksZDMuZXZlbnQuc3RvcFByb3BhPQpnYXRpb24oKX0pLm9uKCJkYmxj
bGljayIsZnVuY3Rpb24oZSx0KXtFLmVsZW1lbnREYmxDbGljayh7bGFiZWw6aShlLmRhdGEpLHY9
CmFsdWU6cyhlLmRhdGEpLHBvaW50OmUuZGF0YSxpbmRleDp0LHBvczpkMy5ldmVudCxpZDp1fSks
ZDMuZXZlbnQuc3RvcFByb3BhZz0KYXRpb24oKX0pO00uYXR0cigiZmlsbCIsZnVuY3Rpb24oZSx0
KXtyZXR1cm4gYShlLHQpfSkuYXR0cigic3Ryb2tlIixmdW5jdGlvPQpuKGUsdCl7cmV0dXJuIGEo
ZSx0KX0pO3ZhciBQPTNERC5hcHBlbmQoInBhdGgiKS5lYWNoKGZ1bmN0aW9uKGUpe3RoaXMuX2N1
cnI9CmVudD0zRGV9KTtNLnNlbGVjdCgicGF0aCIpLmF0dHIoImQiLEEpO2lmKGwpe3ZhciBIPTNE
ZDMuc3ZnLmFyYygpLmlubmVyUmFkaT0KdXMoMCk7YyYmKEg9M0RBKSxoJiYoSD0zRGQzLnN2Zy5h
cmMoKS5vdXRlclJhZGl1cyhBLm91dGVyUmFkaXVzKCkpKSxfLmVudGVyPQooKS5hcHBlbmQoImci
KS5jbGFzc2VkKCJudi1sYWJlbCIsITApLmVhY2goZnVuY3Rpb24oZSx0KXt2YXIgbj0zRGQzLnNl
bGVjdCg9CnRoaXMpO24uYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlKXtpZihnKXtlLm91dGVy
UmFkaXVzPTNEeCsxMCxlLmlubmVyUmFkaT0KdXM9M0R4KzE1O3ZhciB0PTNEKGUuc3RhcnRBbmds
ZStlLmVuZEFuZ2xlKS8yKigxODAvTWF0aC5QSSk7cmV0dXJuKGUuc3RhcnRBPQpuZ2xlK2UuZW5k
QW5nbGUpLzI8TWF0aC5QST90LT0zRDkwOnQrPTNEOTAsInRyYW5zbGF0ZSgiK0guY2VudHJvaWQo
ZSkrIikgcm89CnRhdGUoIit0KyIpIn1yZXR1cm4gZS5vdXRlclJhZGl1cz0zRFMrMTAsZS5pbm5l
clJhZGl1cz0zRFMrMTUsInRyYW5zbGF0ZSgiKz0KSC5jZW50cm9pZChlKSsiKSJ9KSxuLmFwcGVu
ZCgicmVjdCIpLnN0eWxlKCJzdHJva2UiLCIjZmZmIikuc3R5bGUoImZpbGwiLCIjPQpmZmYiKS5h
dHRyKCJyeCIsMykuYXR0cigicnkiLDMpLG4uYXBwZW5kKCJ0ZXh0Iikuc3R5bGUoInRleHQtYW5j
aG9yIixnPyhlLnM9CnRhcnRBbmdsZStlLmVuZEFuZ2xlKS8yPE1hdGguUEk/InN0YXJ0IjoiZW5k
IjoibWlkZGxlIikuc3R5bGUoImZpbGwiLCIjMDAwIj0KKX0pO3ZhciBCPTNEe30saj0zRDE0LEY9
M0QxNDAsST0zRGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmZsb29yKGVbMF0vRikqRisiPQosIitN
YXRoLmZsb29yKGVbMV0vaikqan07Xy5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUpe2lmKGcp
e2Uub3V0ZXJSYWRpdXM9Cj0zRHgrMTAsZS5pbm5lclJhZGl1cz0zRHgrMTU7dmFyIHQ9M0QoZS5z
dGFydEFuZ2xlK2UuZW5kQW5nbGUpLzIqKDE4MC9NYXRoLj0KUEkpO3JldHVybihlLnN0YXJ0QW5n
bGUrZS5lbmRBbmdsZSkvMjxNYXRoLlBJP3QtPTNEOTA6dCs9M0Q5MCwidHJhbnNsYXRlKCIrPQpI
LmNlbnRyb2lkKGUpKyIpIHJvdGF0ZSgiK3QrIikifWUub3V0ZXJSYWRpdXM9M0RTKzEwLGUuaW5u
ZXJSYWRpdXM9M0RTKzE1O3Y9CmFyIG49M0RILmNlbnRyb2lkKGUpLHI9M0RJKG4pO3JldHVybiBC
W3JdJiYoblsxXS09M0RqKSxCW0kobildPTNEITAsInRyYW5zbD0KYXRlKCIrbisiKSJ9KSxfLnNl
bGVjdCgiLm52LWxhYmVsIHRleHQiKS5zdHlsZSgidGV4dC1hbmNob3IiLGc/KGQuc3RhcnRBbmds
PQplK2QuZW5kQW5nbGUpLzI8TWF0aC5QST8ic3RhcnQiOiJlbmQiOiJtaWRkbGUiKS50ZXh0KGZ1
bmN0aW9uKGUsdCl7dmFyIG49M0Q9CihlLmVuZEFuZ2xlLWUuc3RhcnRBbmdsZSkvKDIqTWF0aC5Q
SSkscj0zRHtrZXk6aShlLmRhdGEpLHZhbHVlOnMoZS5kYXRhKSxwZT0KcmNlbnQ6ZDMuZm9ybWF0
KCIlIikobil9O3JldHVybiBlLnZhbHVlJiZuPnY/cltwXToiIn0pfX0pLFN9dmFyIHQ9M0R7dG9w
OjAsPQpyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0sbj0zRDUwMCxyPTNENTAwLGk9M0RmdW5jdGlv
bihlKXtyZXR1cm4gZS54fSxzPTNEZnU9Cm5jdGlvbihlKXtyZXR1cm4gZS55fSxvPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGUuZGVzY3JpcHRpb259LHU9M0RNYXRoLmZsb29yKD0KTWF0aC5yYW5kb20o
KSoxZTQpLGE9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLGY9M0RkMy5mb3JtYXQoIiwuMmYiKSxs
PTNEITAsPQpjPTNEITAsaD0zRCExLHA9M0Qia2V5Iix2PTNELjAyLG09M0QhMSxnPTNEITEseT0z
RCExLGI9M0QhMSx3PTNELjUsRT0zRGQzLmQ9CmlzcGF0Y2goImNoYXJ0Q2xpY2siLCJlbGVtZW50
Q2xpY2siLCJlbGVtZW50RGJsQ2xpY2siLCJlbGVtZW50TW91c2VvdmVyIiwiZT0KbGVtZW50TW91
c2VvdXQiKTtyZXR1cm4gUy5kaXNwYXRjaD0zREUsUy5vcHRpb25zPTNEZS51dGlscy5vcHRpb25z
RnVuYy5iaW5kPQooUyksUy5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8odC50b3A9M0R0eXBlb2YgZS50b3AhPQo9M0QidW5kZWZpbmVkIj9lLnRvcDp0LnRvcCx0
LnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDo9CnQucmlnaHQs
dC5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dC5ib3R0
b20sdC5sZWZ0PQo9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDp0LmxlZnQs
Uyk6dH0sUy53aWR0aD0zRGZ1bmN0aW9uKGUpe3I9CmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49
M0RlLFMpOm59LFMuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cz0KLmxlbmd0
aD8ocj0zRGUsUyk6cn0sUy52YWx1ZXM9M0RmdW5jdGlvbih0KXtyZXR1cm4gZS5sb2coInBpZS52
YWx1ZXMoKSBpcyBuPQpvIGxvbmdlciBzdXBwb3J0ZWQuIiksU30sUy54PTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9M0RlLFM9Cik6aX0sUy55PTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RkMy5mdW5jdG9yKGUpLFMpOnN9LFMuZD0KZXNj
cmlwdGlvbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZSxTKTpv
fSxTLnNob3dMYWJlbHM9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhs
PTNEZSxTKTpsfSxTLmxhYmVsU3VuYmVhbUxheW91dD0zRD0KZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGc9M0RlLFMpOmd9LFMuZG9udXRMYWJlbHNPdXRzaWRlPTNEZnVuPQpj
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsUyk6aH0sUy5waWVMYWJlbHNP
dXRzaWRlPTNEZnVuY3Rpb249CihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUsUyk6
Y30sUy5sYWJlbFR5cGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYT0Kcmd1bWVudHMubGVuZ3RoPyhw
PTNEZSxwPTNEcHx8ImtleSIsUyk6cH0sUy5kb251dD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
PQptZW50cy5sZW5ndGg/KG09M0RlLFMpOm19LFMuZG9udXRSYXRpbz0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3Q9Cmg/KHc9M0RlLFMpOnd9LFMuc3RhcnRBbmdsZT0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PTNEZSxTKT0KOnl9LFMuZW5kQW5nbGU9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0zRGUsUyk6Yn0sUy5pZD0z
RGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RlLFMpOnV9LFMuY29s
b3I9M0RmdW5jdGlvbih0KXtyZXR1cm49CiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZS51dGlscy5n
ZXRDb2xvcih0KSxTKTphfSxTLnZhbHVlRm9ybWF0PTNEZnVuY3Rpb24oZT0KKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oZj0zRGUsUyk6Zn0sUy5sYWJlbFRocmVzaG9sZD0zRGZ1bmN0aW9uKGUp
e3JldHVyPQpuIGFyZ3VtZW50cy5sZW5ndGg/KHY9M0RlLFMpOnZ9LFN9LGUubW9kZWxzLnBpZUNo
YXJ0PTNEZnVuY3Rpb24oKXtmdW5jdGlvbiA9CnYoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihl
KXt2YXIgdT0zRGQzLnNlbGVjdCh0aGlzKSxhPTNEdGhpcyxmPTNEKGl8fHBhcj0Kc2VJbnQodS5z
dHlsZSgid2lkdGgiKSl8fDk2MCktci5sZWZ0LXIucmlnaHQsZD0zRChzfHxwYXJzZUludCh1LnN0
eWxlKCJoZWlnPQpodCIpKXx8NDAwKS1yLnRvcC1yLmJvdHRvbTt2LnVwZGF0ZT0zRGZ1bmN0aW9u
KCl7dS5jYWxsKHYpfSx2LmNvbnRhaW5lcj0zRHQ9CmhpcyxsLmRpc2FibGVkPTNEZS5tYXAoZnVu
Y3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSk7aWYoIWMpe3ZhciBtO2M9M0R7fT0KO2Zvciht
IGluIGwpbFttXWluc3RhbmNlb2YgQXJyYXk/Y1ttXT0zRGxbbV0uc2xpY2UoMCk6Y1ttXT0zRGxb
bV19aWYoIWV8fCFlPQoubGVuZ3RoKXt2YXIgZz0zRHUuc2VsZWN0QWxsKCIubnYtbm9EYXRhIiku
ZGF0YShbaF0pO3JldHVybiBnLmVudGVyKCkuYXBwZW49CmQoInRleHQiKS5hdHRyKCJjbGFzcyIs
Im52ZDMgbnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFuYz0KaG9y
IiwibWlkZGxlIiksZy5hdHRyKCJ4IixyLmxlZnQrZi8yKS5hdHRyKCJ5IixyLnRvcCtkLzIpLnRl
eHQoZnVuY3Rpb24oZSl7PQpyZXR1cm4gZX0pLHZ9dS5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5y
ZW1vdmUoKTt2YXIgeT0zRHUuc2VsZWN0QWxsKCJnLm52LXc9CnJhcC5udi1waWVDaGFydCIpLmRh
dGEoW2VdKSxiPTNEeS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudj0K
LXdyYXAgbnYtcGllQ2hhcnQiKS5hcHBlbmQoImciKSx3PTNEeS5zZWxlY3QoImciKTtiLmFwcGVu
ZCgiZyIpLmF0dHIoImNsYXNzPQoiLCJudi1waWVXcmFwIiksYi5hcHBlbmQoImciKS5hdHRyKCJj
bGFzcyIsIm52LWxlZ2VuZFdyYXAiKSxvJiYobi53aWR0aChmKS49CmtleSh0LngoKSkseS5zZWxl
Y3QoIi5udi1sZWdlbmRXcmFwIikuZGF0dW0oZSkuY2FsbChuKSxyLnRvcCE9M0RuLmhlaWdodCgp
Jj0KJihyLnRvcD0zRG4uaGVpZ2h0KCksZD0zRChzfHxwYXJzZUludCh1LnN0eWxlKCJoZWlnaHQi
KSl8fDQwMCktci50b3Atci5ib3R0PQpvbSkseS5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuYXR0
cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIisgLXIudG9wKyIpIik9CikseS5hdHRyKCJ0cmFu
c2Zvcm0iLCJ0cmFuc2xhdGUoIityLmxlZnQrIiwiK3IudG9wKyIpIiksdC53aWR0aChmKS5oZWln
aHQoZD0KKTt2YXIgRT0zRHcuc2VsZWN0KCIubnYtcGllV3JhcCIpLmRhdHVtKFtlXSk7ZDMudHJh
bnNpdGlvbihFKS5jYWxsKHQpLG4uZGlzPQpwYXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9u
KGUpe2w9M0RlLHAuc3RhdGVDaGFuZ2UobCksdi51cGRhdGUoKX0pLHQuZGk9CnNwYXRjaC5vbigi
ZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe3AudG9vbHRpcEhpZGUoZSl9KSxw
Lm9uKCJjaD0KYW5nZVN0YXRlIixmdW5jdGlvbih0KXt0eXBlb2YgdC5kaXNhYmxlZCE9M0QidW5k
ZWZpbmVkIiYmKGUuZm9yRWFjaChmdW5jdGlvPQpuKGUsbil7ZS5kaXNhYmxlZD0zRHQuZGlzYWJs
ZWRbbl19KSxsLmRpc2FibGVkPTNEdC5kaXNhYmxlZCksdi51cGRhdGUoKX0pfSk9Cix2fXZhciB0
PTNEZS5tb2RlbHMucGllKCksbj0zRGUubW9kZWxzLmxlZ2VuZCgpLHI9M0R7dG9wOjMwLHJpZ2h0
OjIwLGJvdHRvbT0KOjIwLGxlZnQ6MjB9LGk9M0RudWxsLHM9M0RudWxsLG89M0QhMCx1PTNEZS51
dGlscy5kZWZhdWx0Q29sb3IoKSxhPTNEITAsZj0KPTNEZnVuY3Rpb24oZSx0LG4scil7cmV0dXJu
IjxoMz4iK2UrIjwvaDM+IisiPHA+Iit0KyI8L3A+In0sbD0zRHt9LGM9M0RudWxsPQosaD0zRCJO
byBEYXRhIEF2YWlsYWJsZS4iLHA9M0RkMy5kaXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlw
SGlkZSIsInN0YXQ9CmVDaGFuZ2UiLCJjaGFuZ2VTdGF0ZSIpLGQ9M0RmdW5jdGlvbihuLHIpe3Zh
ciBpPTNEdC5kZXNjcmlwdGlvbigpKG4ucG9pbnQpfD0KfHQueCgpKG4ucG9pbnQpLHM9M0RuLnBv
c1swXSsociYmci5vZmZzZXRMZWZ0fHwwKSxvPTNEbi5wb3NbMV0rKHImJnIub2Zmc2V0PQpUb3B8
fDApLHU9M0R0LnZhbHVlRm9ybWF0KCkodC55KCkobi5wb2ludCkpLGE9M0RmKGksdSxuLHYpO2Uu
dG9vbHRpcC5zaG93KFs9CnMsb10sYSxuLnZhbHVlPDA/Im4iOiJzIixudWxsLHIpfTtyZXR1cm4g
dC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50bz0Kb2x0aXAiLGZ1bmN0aW9uKGUpe2Uu
cG9zPTNEW2UucG9zWzBdK3IubGVmdCxlLnBvc1sxXStyLnRvcF0scC50b29sdGlwU2hvdyhlPQop
fSkscC5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe2EmJmQoZSl9KSxwLm9uKCJ0b29sdGlw
SGlkZSIsZnVuY3Rpb24oKXs9CmEmJmUudG9vbHRpcC5jbGVhbnVwKCl9KSx2LmxlZ2VuZD0zRG4s
di5kaXNwYXRjaD0zRHAsdi5waWU9M0R0LGQzLnJlYmluZCh2LD0KdCwidmFsdWVGb3JtYXQiLCJ2
YWx1ZXMiLCJ4IiwieSIsImRlc2NyaXB0aW9uIiwiaWQiLCJzaG93TGFiZWxzIiwiZG9udXRMYWJl
PQpsc091dHNpZGUiLCJwaWVMYWJlbHNPdXRzaWRlIiwibGFiZWxUeXBlIiwiZG9udXQiLCJkb251
dFJhdGlvIiwibGFiZWxUaHJlc2g9Cm9sZCIpLHYub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1
bmMuYmluZCh2KSx2Lm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybj0KIGFyZ3VtZW50cy5sZW5n
dGg/KHIudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnIudG9wLHIucmln
aHQ9Cj0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6ci5yaWdodCxyLmJv
dHRvbT0zRHR5cGVvZiBlLmJvdHRvbT0KIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnIuYm90dG9t
LHIubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sPQplZnQ6ci5sZWZ0LHYp
OnJ9LHYud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUs
dik6aX09Cix2LmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhz
PTNEZSx2KTpzfSx2LmNvbG9yPTNEZnVuYz0KdGlvbihyKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8odT0zRGUudXRpbHMuZ2V0Q29sb3Iociksbi5jb2xvcih1KSx0LmNvbG9yPQoodSksdik6dX0s
di5zaG93TGVnZW5kPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0Rl
LHYpOm99LHY9Ci50b29sdGlwcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhhPTNEZSx2KTphfSx2LnRvb2x0aXBDb250ZT0KbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oZj0zRGUsdik6Zn0sdi5zdGF0ZT0zRGZ1bmN0aW9uKGUpPQp7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLHYpOmx9LHYuZGVmYXVsdFN0YXRlPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGE9CnJndW1lbnRzLmxlbmd0aD8oYz0zRGUsdik6Y30sdi5ub0RhdGE9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD0KPyhoPTNEZSx2KTpofSx2fSxlLm1vZGVs
cy5zY2F0dGVyPTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBJKHEpe3JldHVybiBxLmVhY2goPQpmdW5j
dGlvbihJKXtmdW5jdGlvbiBRKCl7aWYoIWcpcmV0dXJuITE7dmFyIGUsaT0zRGQzLm1lcmdlKEku
bWFwKGZ1bmN0aW9uKGU9Cix0KXtyZXR1cm4gZS52YWx1ZXMubWFwKGZ1bmN0aW9uKGUsbil7dmFy
IHI9M0RmKGUsbiksaT0zRGwoZSxuKTtyZXR1cm5bbyhyKT0KLHUoaSksdCxuLGVdfSkuZmlsdGVy
KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGIoZVs0XSx0KX0pfSkpO2lmKEQ9M0Q9M0Q9M0QhMCl7PQpp
Zih4KXt2YXIgYT0zRFguc2VsZWN0KCJkZWZzIikuc2VsZWN0QWxsKCIubnYtcG9pbnQtY2xpcHMi
KS5kYXRhKFtzXSkuZW50ZXI9CigpO2EuYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoImNsYXNzIiwi
bnYtcG9pbnQtY2xpcHMiKS5hdHRyKCJpZCIsIm52LXBvaW50cz0KLWNsaXAtIitzKTt2YXIgYz0z
RFguc2VsZWN0KCIjbnYtcG9pbnRzLWNsaXAtIitzKS5zZWxlY3RBbGwoImNpcmNsZSIpLmRhdGEo
PQppKTtjLmVudGVyKCkuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJyIixUKSxjLmV4aXQoKS5yZW1v
dmUoKSxjLmF0dHIoImN4IixmdW49CmN0aW9uKGUpe3JldHVybiBlWzBdfSkuYXR0cigiY3kiLGZ1
bmN0aW9uKGUpe3JldHVybiBlWzFdfSksWC5zZWxlY3QoIi5udi1wbz0KaW50LXBhdGhzIikuYXR0
cigiY2xpcC1wYXRoIiwidXJsKCNudi1wb2ludHMtY2xpcC0iK3MrIikiKX1pLmxlbmd0aCYmKGku
cHVzPQpoKFtvLnJhbmdlKClbMF0tMjAsdS5yYW5nZSgpWzBdLTIwLG51bGwsbnVsbF0pLGkucHVz
aChbby5yYW5nZSgpWzFdKzIwLHUucmE9Cm5nZSgpWzFdKzIwLG51bGwsbnVsbF0pLGkucHVzaChb
by5yYW5nZSgpWzBdLTIwLHUucmFuZ2UoKVswXSsyMCxudWxsLG51bGxdKT0KLGkucHVzaChbby5y
YW5nZSgpWzFdKzIwLHUucmFuZ2UoKVsxXS0yMCxudWxsLG51bGxdKSk7dmFyIGg9M0RkMy5nZW9t
LnBvbHlnPQpvbihbWy0xMCwtMTBdLFstMTAscisxMF0sW24rMTAscisxMF0sW24rMTAsLTEwXV0p
LHA9M0QxZS02O2k9M0RpLnNvcnQoZnVuY3Q9CmlvbihlLHQpe3JldHVybiBlWzBdLXRbMF18fGVb
MV0tdFsxXX0pO2Zvcih2YXIgZD0zRDA7ZDxpLmxlbmd0aC0xOylNYXRoLmFicz0KKGlbZF1bMF0t
aVtkKzFdWzBdKTxwJiZNYXRoLmFicyhpW2RdWzFdLWlbZCsxXVsxXSk8cD9pLnNwbGljZShkKzEs
MSk6ZCsrO3ZhPQpyIHY9M0RkMy5nZW9tLnZvcm9ub2koaSkubWFwKGZ1bmN0aW9uKGUsdCl7cmV0
dXJue2RhdGE6aC5jbGlwKGUpLHNlcmllczppW3Q9Cl1bMl0scG9pbnQ6aVt0XVszXX19KSxtPTNE
WC5zZWxlY3QoIi5udi1wb2ludC1wYXRocyIpLnNlbGVjdEFsbCgicGF0aCIpLmRhdD0KYSh2KTtt
LmVudGVyKCkuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJu
Im52LXBhdGgtIit0PQp9KSxtLmV4aXQoKS5yZW1vdmUoKSxtLmF0dHIoImQiLGZ1bmN0aW9uKGUp
e3JldHVybiFlfHwhZS5kYXRhfHxlLmRhdGEubGVuZ3Q9Cmg9M0Q9M0Q9M0QwPyJNIDAgMCI6Ik0i
K2UuZGF0YS5qb2luKCJMIikrIloifSk7dmFyIHk9M0RmdW5jdGlvbihlLG4pe2lmKEYpcj0KZXR1
cm4gMDt2YXIgcj0zRElbZS5zZXJpZXNdO2lmKHR5cGVvZiByPTNEPTNEInVuZGVmaW5lZCIpcmV0
dXJuO3ZhciBpPTNEci52PQphbHVlc1tlLnBvaW50XTtuKHtwb2ludDppLHNlcmllczpyLHBvczpb
byhmKGksZS5wb2ludCkpK3QubGVmdCx1KGwoaSxlLnBvaW49CnQpKSt0LnRvcF0sc2VyaWVzSW5k
ZXg6ZS5zZXJpZXMscG9pbnRJbmRleDplLnBvaW50fSl9O20ub24oImNsaWNrIixmdW5jdGlvbj0K
KGUpe3koZSxfLmVsZW1lbnRDbGljayl9KS5vbigibW91c2VvdmVyIixmdW5jdGlvbihlKXt5KGUs
Xy5lbGVtZW50TW91c2VvdmVyPQopfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbihlLHQpe3koZSxf
LmVsZW1lbnRNb3VzZW91dCl9KX1lbHNlIFguc2VsZWN0KCIubnY9Ci1ncm91cHMiKS5zZWxlY3RB
bGwoIi5udi1ncm91cCIpLnNlbGVjdEFsbCgiLm52LXBvaW50Iikub24oImNsaWNrIixmdW5jdGlv
bj0KKGUsbil7aWYoRnx8IUlbZS5zZXJpZXNdKXJldHVybiAwO3ZhciByPTNESVtlLnNlcmllc10s
aT0zRHIudmFsdWVzW25dO18uZWxlPQptZW50Q2xpY2soe3BvaW50Omksc2VyaWVzOnIscG9zOltv
KGYoaSxuKSkrdC5sZWZ0LHUobChpLG4pKSt0LnRvcF0sc2VyaWVzSW49CmRleDplLnNlcmllcyxw
b2ludEluZGV4Om59KX0pLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKGUsbil7aWYoRnx8IUlbZS5z
ZXJpZT0Kc10pcmV0dXJuIDA7dmFyIHI9M0RJW2Uuc2VyaWVzXSxpPTNEci52YWx1ZXNbbl07Xy5l
bGVtZW50TW91c2VvdmVyKHtwb2ludDppPQosc2VyaWVzOnIscG9zOltvKGYoaSxuKSkrdC5sZWZ0
LHUobChpLG4pKSt0LnRvcF0sc2VyaWVzSW5kZXg6ZS5zZXJpZXMscG9pbnQ9CkluZGV4Om59KX0p
Lm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oZSx0KXtpZihGfHwhSVtlLnNlcmllc10pcmV0dXJuIDA7
dmFyIG49Cj0zRElbZS5zZXJpZXNdLHI9M0RuLnZhbHVlc1t0XTtfLmVsZW1lbnRNb3VzZW91dCh7
cG9pbnQ6cixzZXJpZXM6bixzZXJpZXNJbj0KZGV4OmUuc2VyaWVzLHBvaW50SW5kZXg6dH0pfSk7
Rj0zRCExfXZhciBxPTNEbi10LmxlZnQtdC5yaWdodCxSPTNEci10LnRvcC10PQouYm90dG9tLFU9
M0RkMy5zZWxlY3QodGhpcyk7SS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7ZS52YWx1ZXMuZm9yRWFj
aChmdW5jdGk9Cm9uKGUpe2Uuc2VyaWVzPTNEdH0pfSk7dmFyIFc9M0ROJiZDJiZBP1tdOmQzLm1l
cmdlKEkubWFwKGZ1bmN0aW9uKGUpe3JldHVybj0KIGUudmFsdWVzLm1hcChmdW5jdGlvbihlLHQp
e3JldHVybnt4OmYoZSx0KSx5OmwoZSx0KSxzaXplOmMoZSx0KX19KX0pKTtvLmRvPQptYWluKE58
fGQzLmV4dGVudChXLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS54fSkuY29uY2F0KGQpKSksdyYm
SVswXT9vLnJhbmc9CmUoa3x8WyhxKkUrcSkvKDIqSVswXS52YWx1ZXMubGVuZ3RoKSxxLXEqKDEr
RSkvKDIqSVswXS52YWx1ZXMubGVuZ3RoKV0pOm8ucj0KYW5nZShrfHxbMCxxXSksdS5kb21haW4o
Q3x8ZDMuZXh0ZW50KFcubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnl9KS5jb25jYXQoPQp2KSkp
LnJhbmdlKEx8fFtSLDBdKSxhLmRvbWFpbihBfHxkMy5leHRlbnQoVy5tYXAoZnVuY3Rpb24oZSl7
cmV0dXJuIGUuc2l6ZX09CikuY29uY2F0KG0pKSkucmFuZ2UoT3x8WzE2LDI1Nl0pO2lmKG8uZG9t
YWluKClbMF09M0Q9M0Q9M0RvLmRvbWFpbigpWzFdfHx1Lj0KZG9tYWluKClbMF09M0Q9M0Q9M0R1
LmRvbWFpbigpWzFdKU09M0QhMDtvLmRvbWFpbigpWzBdPTNEPTNEPTNEby5kb21haW4oKVsxPQpd
JiYoby5kb21haW4oKVswXT9vLmRvbWFpbihbby5kb21haW4oKVswXS1vLmRvbWFpbigpWzBdKi4w
MSxvLmRvbWFpbigpWzFdK289Ci5kb21haW4oKVsxXSouMDFdKTpvLmRvbWFpbihbLTEsMV0pKSx1
LmRvbWFpbigpWzBdPTNEPTNEPTNEdS5kb21haW4oKVsxXSYmKD0KdS5kb21haW4oKVswXT91LmRv
bWFpbihbdS5kb21haW4oKVswXS11LmRvbWFpbigpWzBdKi4wMSx1LmRvbWFpbigpWzFdK3UuZG9t
PQphaW4oKVsxXSouMDFdKTp1LmRvbWFpbihbLTEsMV0pKSxpc05hTihvLmRvbWFpbigpWzBdKSYm
by5kb21haW4oWy0xLDFdKSxpc049CmFOKHUuZG9tYWluKClbMF0pJiZ1LmRvbWFpbihbLTEsMV0p
LFA9M0RQfHxvLEg9M0RIfHx1LEI9M0RCfHxhO3ZhciBYPTNEVS5zZT0KbGVjdEFsbCgiZy5udi13
cmFwLm52LXNjYXR0ZXIiKS5kYXRhKFtJXSksVj0zRFguZW50ZXIoKS5hcHBlbmQoImciKS5hdHRy
KCJjPQpsYXNzIiwibnZkMyBudi13cmFwIG52LXNjYXR0ZXIgbnYtY2hhcnQtIitzKyhNPyIgbnYt
c2luZ2xlLXBvaW50IjoiIikpLCQ9M0Q9ClYuYXBwZW5kKCJkZWZzIiksSj0zRFYuYXBwZW5kKCJn
IiksSz0zRFguc2VsZWN0KCJnIik7Si5hcHBlbmQoImciKS5hdHRyKCJjbD0KYXNzIiwibnYtZ3Jv
dXBzIiksSi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXBvaW50LXBhdGhzIiksWC5hdHRy
KCJ0cmFuPQpzZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50b3ArIikiKSwkLmFwcGVu
ZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIsIm49CnYtZWRnZS1jbGlwLSIrcykuYXBwZW5kKCJyZWN0
IiksWC5zZWxlY3QoIiNudi1lZGdlLWNsaXAtIitzKyIgcmVjdCIpLmF0dHIoIj0Kd2lkdGgiLHEp
LmF0dHIoImhlaWdodCIsUj4wP1I6MCksSy5hdHRyKCJjbGlwLXBhdGgiLFM/InVybCgjbnYtZWRn
ZS1jbGlwLSIrPQpzKyIpIjoiIiksRj0zRCEwO3ZhciBHPTNEWC5zZWxlY3QoIi5udi1ncm91cHMi
KS5zZWxlY3RBbGwoIi5udi1ncm91cCIpLmRhdGE9CihmdW5jdGlvbihlKXtyZXR1cm4gZX0sZnVu
Y3Rpb24oZSl7cmV0dXJuIGUua2V5fSk7Ry5lbnRlcigpLmFwcGVuZCgiZyIpLnN0eT0KbGUoInN0
cm9rZS1vcGFjaXR5IiwxZS02KS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwxZS02KSxHLmV4aXQoKS5y
ZW1vdmUoKSxHLmF0PQp0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIm52LWdyb3VwIG52
LXNlcmllcy0iK3R9KS5jbGFzc2VkKCJob3ZlciIsZnU9Cm5jdGlvbihlKXtyZXR1cm4gZS5ob3Zl
cn0pLEcuc3R5bGUoImZpbGwiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGkoZSx0KX0pLnN0eT0KbGUo
InN0cm9rZSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gaShlLHQpfSkuc3R5bGUoInN0cm9rZS1vcGFj
aXR5IiwxKS5zdHlsZSgiPQpmaWxsLW9wYWNpdHkiLC41KTtpZihwKXt2YXIgWT0zREcuc2VsZWN0
QWxsKCJjaXJjbGUubnYtcG9pbnQiKS5kYXRhKGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGUudmFsdWVz
fSx5KTtZLmVudGVyKCkuYXBwZW5kKCJjaXJjbGUiKS5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oZT0K
LHQpe3JldHVybiBlLmNvbG9yfSkuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4g
ZS5jb2xvcn0pLmF0dHIoImN4PQoiLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9a
ZXJvKFAoZih0LG4pKSl9KS5hdHRyKCJjeSIsZnVuY3Rpb24odCw9Cm4pe3JldHVybiBlLnV0aWxz
Lk5hTnRvWmVybyhIKGwodCxuKSkpfSkuYXR0cigiciIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0
aD0KLnNxcnQoYShjKGUsdCkpL01hdGguUEkpfSksWS5leGl0KCkucmVtb3ZlKCksRy5leGl0KCku
c2VsZWN0QWxsKCJwYXRoLm52LXBvPQppbnQiKS5hdHRyKCJjeCIsZnVuY3Rpb24odCxuKXtyZXR1
cm4gZS51dGlscy5OYU50b1plcm8obyhmKHQsbikpKX0pLmF0dHIoImM9CnkiLGZ1bmN0aW9uKHQs
bil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKHUobCh0LG4pKSl9KS5yZW1vdmUoKSxZLmVhY2go
ZnVuYz0KdGlvbihlLHQpe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJudi1wb2ludCIsITApLmNs
YXNzZWQoIm52LXBvaW50LSIrdCwhMCkuPQpjbGFzc2VkKCJob3ZlciIsITEpfSksWS5hdHRyKCJj
eCIsZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8obyg9CmYodCxuKSkpfSku
YXR0cigiY3kiLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKHUobCh0LG4p
KSl9KS5hdD0KdHIoInIiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGguc3FydChhKGMoZSx0KSkv
TWF0aC5QSSl9KX1lbHNle3ZhciBZPTNERy5zPQplbGVjdEFsbCgicGF0aC5udi1wb2ludCIpLmRh
dGEoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzfSk7WS5lbnRlcigpLmFwcGU9Cm5kKCJwYXRo
Iikuc3R5bGUoImZpbGwiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J9KS5zdHlsZSgic3Ry
b2tlIixmdW5jdD0KaW9uKGUsdCl7cmV0dXJuIGUuY29sb3J9KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1
bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiPQorUChmKGUsdCkpKyIsIitIKGwoZSx0KSkr
IikifSkuYXR0cigiZCIsZDMuc3ZnLnN5bWJvbCgpLnR5cGUoaCkuc2l6ZShmdW5jdGk9Cm9uKGUs
dCl7cmV0dXJuIGEoYyhlLHQpKX0pKSxZLmV4aXQoKS5yZW1vdmUoKSxHLmV4aXQoKS5zZWxlY3RB
bGwoInBhdGgubnYtcD0Kb2ludCIpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1
cm4idHJhbnNsYXRlKCIrbyhmKGUsdCkpKyIsIit1KGwoPQplLHQpKSsiKSJ9KS5yZW1vdmUoKSxZ
LmVhY2goZnVuY3Rpb24oZSx0KXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgibnYtcG9pbnQ9CiIs
ITApLmNsYXNzZWQoIm52LXBvaW50LSIrdCwhMCkuY2xhc3NlZCgiaG92ZXIiLCExKX0pLFkuYXR0
cigidHJhbnNmb3JtIixmdT0KbmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiK28oZihlLHQp
KSsiLCIrdShsKGUsdCkpKyIpIn0pLmF0dHIoImQiLGQzLnN2PQpnLnN5bWJvbCgpLnR5cGUoaCku
c2l6ZShmdW5jdGlvbihlLHQpe3JldHVybiBhKGMoZSx0KSl9KSl9Y2xlYXJUaW1lb3V0KGopLGo9
Cj0zRHNldFRpbWVvdXQoUSwzMDApLFA9M0RvLmNvcHkoKSxIPTNEdS5jb3B5KCksQj0zRGEuY29w
eSgpfSksSX12YXIgdD0zRHt0bz0KcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSxuPTNEOTYw
LHI9M0Q1MDAsaT0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCkscz0KPTNETWF0aC5mbG9vcihNYXRo
LnJhbmRvbSgpKjFlNSksbz0zRGQzLnNjYWxlLmxpbmVhcigpLHU9M0RkMy5zY2FsZS5saW5lYXIo
PQopLGE9M0RkMy5zY2FsZS5saW5lYXIoKSxmPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0sbD0z
RGZ1bmN0aW9uKGUpe3JldHVybiA9CmUueX0sYz0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnNpemV8
fDF9LGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5zaGFwZXx8ImNpcj0KY2xlIn0scD0zRCEwLGQ9
M0RbXSx2PTNEW10sbT0zRFtdLGc9M0QhMCx5PTNEbnVsbCxiPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IWUuPQpub3RBY3RpdmV9LHc9M0QhMSxFPTNELjEsUz0zRCExLHg9M0QhMCxUPTNEZnVuY3Rpb24o
KXtyZXR1cm4gMjV9LE49M0RudWxsLEM9Cj0zRG51bGwsaz0zRG51bGwsTD0zRG51bGwsQT0zRG51
bGwsTz0zRG51bGwsTT0zRCExLF89M0RkMy5kaXNwYXRjaCgiZWxlbWVudD0KQ2xpY2siLCJlbGVt
ZW50TW91c2VvdmVyIiwiZWxlbWVudE1vdXNlb3V0IiksRD0zRCEwLFAsSCxCLGosRj0zRCExO3Jl
dHVybiBJPQouY2xlYXJIaWdobGlnaHRzPTNEZnVuY3Rpb24oKXtkMy5zZWxlY3RBbGwoIi5udi1j
aGFydC0iK3MrIiAubnYtcG9pbnQuaG92ZXI9CiIpLmNsYXNzZWQoImhvdmVyIiwhMSl9LEkuaGln
aGxpZ2h0UG9pbnQ9M0RmdW5jdGlvbihlLHQsbil7ZDMuc2VsZWN0KCIubnYtYz0KaGFydC0iK3Mr
IiAubnYtc2VyaWVzLSIrZSsiIC5udi1wb2ludC0iK3QpLmNsYXNzZWQoImhvdmVyIixuKX0sXy5v
bigiZWxlbWVuPQp0TW91c2VvdmVyLnBvaW50IixmdW5jdGlvbihlKXtnJiZJLmhpZ2hsaWdodFBv
aW50KGUuc2VyaWVzSW5kZXgsZS5wb2ludEluZGU9CngsITApfSksXy5vbigiZWxlbWVudE1vdXNl
b3V0LnBvaW50IixmdW5jdGlvbihlKXtnJiZJLmhpZ2hsaWdodFBvaW50KGUuc2VyaT0KZXNJbmRl
eCxlLnBvaW50SW5kZXgsITEpfSksSS5kaXNwYXRjaD0zRF8sSS5vcHRpb25zPTNEZS51dGlscy5v
cHRpb25zRnVuYy5iPQppbmQoSSksSS54PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGY9M0RkMy5mdW5jdG9yKGUpLEkpOmZ9LEk9Ci55PTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RkMy5mdW5jdG9yKGUpLEkpOmx9LEkuc2l6ZT0zRD0KZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RkMy5mdW5jdG9yKGUpLEkpOmN9
LEkubWFyZ2luPTNEZnVuPQpjdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC50b3A9
M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A9Cjp0LnRvcCx0LnJpZ2h0PTNEdHlw
ZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp0LnJpZ2h0LHQuYm90dG9tPTNEdD0K
eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dC5ib3R0b20sdC5sZWZ0PTNE
dHlwZW9mIGUubGVmdCE9M0QiPQp1bmRlZmluZWQiP2UubGVmdDp0LmxlZnQsSSk6dH0sSS53aWR0
aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Q9Cmg/KG49M0RlLEkpOm59LEku
aGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLEkpOnJ9
LD0KSS54U2NhbGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUs
SSk6b30sSS55U2NhbGU9M0RmdW5jPQp0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1
PTNEZSxJKTp1fSxJLnpTY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiA9CmFyZ3VtZW50cy5sZW5n
dGg/KGE9M0RlLEkpOmF9LEkueERvbWFpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZz0KdGg/KE49M0RlLEkpOk59LEkueURvbWFpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhDPTNEZSxJKTpDPQp9LEkuc2l6ZURvbWFpbj0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhBPTNEZSxJKTpBfSxJLnhSYW5nZT0KPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGs9M0RlLEkpOmt9LEkueVJhbmdlPTNEZnVuY3Rp
b24oZSl7PQpyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTD0zRGUsSSk6TH0sSS5zaXplUmFuZ2U9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW09CmVudHMubGVuZ3RoPyhPPTNEZSxJKTpPfSxJLmZv
cmNlWD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPQo9M0RlLEkpOmR9
LEkuZm9yY2VZPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9M0RlLEkp
OnZ9LEkuZm89CnJjZVNpemU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
bT0zRGUsSSk6bX0sSS5pbnRlcmFjdGl2ZT0zRD0KZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGc9M0RlLEkpOmd9LEkucG9pbnRLZXk9M0RmdW5jdGlvbihlKXtyPQpldHVybiBh
cmd1bWVudHMubGVuZ3RoPyh5PTNEZSxJKTp5fSxJLnBvaW50QWN0aXZlPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3U9Cm1lbnRzLmxlbmd0aD8oYj0zRGUsSSk6Yn0sSS5wYWREYXRhPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KD0Kdz0zRGUsSSk6d30sSS5wYWREYXRhT3V0
ZXI9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT0zRGUsSSk6PQpFfSxJ
LmNsaXBFZGdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFM9M0RlLEkp
OlN9LEkuY2xpcFZvcm89Cm5vaT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
Pyh4PTNEZSxJKTp4fSxJLnVzZVZvcm9ub2k9M0RmdW5jdD0KaW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhEPTNEZSxEPTNEPTNEPTNEITEmJih4PTNEITEpLEkpOkR9LEkuY2xpcFJhPQpk
aXVzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFQ9M0RlLEkpOlR9LEku
Y29sb3I9M0RmdW5jdGlvbig9CnQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPTNEZS51dGls
cy5nZXRDb2xvcih0KSxJKTppfSxJLnNoYXBlPTNEZnVuY3Rpbz0KbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oaD0zRGUsSSk6aH0sSS5vbmx5Q2lyY2xlcz0zRGZ1bmN0aW9uKGUpe3JldHVy
PQpuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLEkpOnB9LEkuaWQ9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD89CihzPTNEZSxJKTpzfSxJLnNpbmdsZVBvaW50PTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE09M0RlLEkpOj0KTX0sSX0sZS5tb2RlbHMu
c2NhdHRlckNoYXJ0PTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBGKGUpe3JldHVybiBlLmVhY2goZnVu
Y3RpPQpvbihlKXtmdW5jdGlvbiBKKCl7aWYoVClyZXR1cm4gVy5zZWxlY3QoIi5udi1wb2ludC1w
YXRocyIpLnN0eWxlKCJwb2ludGVyLWU9CnZlbnRzIiwiYWxsIiksITE7Vy5zZWxlY3QoIi5udi1w
b2ludC1wYXRocyIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKT0KO3ZhciBpPTNEZDMu
bW91c2UodGhpcyk7aC5kaXN0b3J0aW9uKHgpLmZvY3VzKGlbMF0pLHAuZGlzdG9ydGlvbih4KS5m
b2N1cyhpPQpbMV0pLFcuc2VsZWN0KCIubnYtc2NhdHRlcldyYXAiKS5jYWxsKHQpLGImJlcuc2Vs
ZWN0KCIubnYteC5udi1heGlzIikuY2FsbCg9Cm4pLHcmJlcuc2VsZWN0KCIubnYteS5udi1heGlz
IikuY2FsbChyKSxXLnNlbGVjdCgiLm52LWRpc3RyaWJ1dGlvblgiKS5kYXR1bT0KKGUuZmlsdGVy
KGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkpLmNhbGwobyksVy5zZWxlY3QoIi5udi1k
aXN0cmlidXRpPQpvblkiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNh
YmxlZH0pKS5jYWxsKHUpfXZhciBDPTNEZDMuc2U9CmxlY3QodGhpcyksaz0zRHRoaXMsTD0zRChm
fHxwYXJzZUludChDLnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS1hLmxlZnQtYS5yaWdodD0KLEQ9M0Qo
bHx8cGFyc2VJbnQoQy5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLWEudG9wLWEuYm90dG9tO0YudXBk
YXRlPTNEZnVuY3RpPQpvbigpe0MuY2FsbChGKX0sRi5jb250YWluZXI9M0R0aGlzLEEuZGlzYWJs
ZWQ9M0RlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWU9Ci5kaXNhYmxlZH0pO2lmKCFPKXt2YXIg
STtPPTNEe307Zm9yKEkgaW4gQSlBW0ldaW5zdGFuY2VvZiBBcnJheT9PW0ldPTNEQVtJXT0KLnNs
aWNlKDApOk9bSV09M0RBW0ldfWlmKCFlfHwhZS5sZW5ndGh8fCFlLmZpbHRlcihmdW5jdGlvbihl
KXtyZXR1cm4gZS52YWx1PQplcy5sZW5ndGh9KS5sZW5ndGgpe3ZhciBxPTNEQy5zZWxlY3RBbGwo
Ii5udi1ub0RhdGEiKS5kYXRhKFtfXSk7cmV0dXJuIHEuZW49CnRlcigpLmFwcGVuZCgidGV4dCIp
LmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2VtIikuc3R5bD0K
ZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxxLmF0dHIoIngiLGEubGVmdCtMLzIpLmF0dHIoInki
LGEudG9wK0QvMikudGV4dChmPQp1bmN0aW9uKGUpe3JldHVybiBlfSksRn1DLnNlbGVjdEFsbCgi
Lm52LW5vRGF0YSIpLnJlbW92ZSgpLFA9M0RQfHxoLEg9M0RIfHw9CnA7dmFyIFI9M0RDLnNlbGVj
dEFsbCgiZy5udi13cmFwLm52LXNjYXR0ZXJDaGFydCIpLmRhdGEoW2VdKSxVPTNEUi5lbnRlcigp
Lj0KYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtc2NhdHRlckNoYXJ0
IG52LWNoYXJ0LSIrdC5pZCgpKSx6PQo9M0RVLmFwcGVuZCgiZyIpLFc9M0RSLnNlbGVjdCgiZyIp
O3ouYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LWI9CmFja2dyb3VuZCIpLHou
YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14IG52LWF4aXMiKSx6LmFwcGVuZCgiZyIpLmF0
dHIoIj0KY2xhc3MiLCJudi15IG52LWF4aXMiKSx6LmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwi
bnYtc2NhdHRlcldyYXAiKSx6LmFwcGVuPQpkKCJnIikuYXR0cigiY2xhc3MiLCJudi1kaXN0V3Jh
cCIpLHouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1sZWdlbmRXcmE9CnAiKSx6LmFwcGVu
ZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtY29udHJvbHNXcmFwIik7aWYoeSl7dmFyIFg9M0RTP0wv
MjpMO2kudz0KaWR0aChYKSxSLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5kYXR1bShlKS5jYWxs
KGkpLGEudG9wIT0zRGkuaGVpZ2h0KCkmJihhPQoudG9wPTNEaS5oZWlnaHQoKSxEPTNEKGx8fHBh
cnNlSW50KEMuc3R5bGUoImhlaWdodCIpKXx8NDAwKS1hLnRvcC1hLmJvdHRvbSk9CixSLnNlbGVj
dCgiLm52LWxlZ2VuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisoTC1YKSsi
LCIrIC1hLnRvcD0KKyIpIil9UyYmKHMud2lkdGgoMTgwKS5jb2xvcihbIiM0NDQiXSksVy5zZWxl
Y3QoIi5udi1jb250cm9sc1dyYXAiKS5kYXR1bShqPQopLmF0dHIoInRyYW5zZm9ybSIsInRyYW5z
bGF0ZSgwLCIrIC1hLnRvcCsiKSIpLmNhbGwocykpLFIuYXR0cigidHJhbnNmb3JtIiw9CiJ0cmFu
c2xhdGUoIithLmxlZnQrIiwiK2EudG9wKyIpIiksRSYmVy5zZWxlY3QoIi5udi15Lm52LWF4aXMi
KS5hdHRyKCJ0cmFucz0KZm9ybSIsInRyYW5zbGF0ZSgiK0wrIiwwKSIpLHQud2lkdGgoTCkuaGVp
Z2h0KEQpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7PQpyZXR1cm4gZS5jb2xvcnx8YyhlLHQp
fSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWR9KSksZCE9M0Q9Cj0z
RDAmJnQueERvbWFpbihudWxsKSx2IT0zRD0zRDAmJnQueURvbWFpbihudWxsKSxSLnNlbGVjdCgi
Lm52LXNjYXR0ZXJXcmFwIj0KKS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5k
aXNhYmxlZH0pKS5jYWxsKHQpO2lmKGQhPTNEPTNEMCl7dmFyPQogVj0zRGguZG9tYWluKClbMV0t
aC5kb21haW4oKVswXTt0LnhEb21haW4oW2guZG9tYWluKClbMF0tZCpWLGguZG9tYWluKClbMV09
CitkKlZdKX1pZih2IT0zRD0zRDApe3ZhciAkPTNEcC5kb21haW4oKVsxXS1wLmRvbWFpbigpWzBd
O3QueURvbWFpbihbcC5kb21haT0KbigpWzBdLXYqJCxwLmRvbWFpbigpWzFdK3YqJF0pfSh2IT0z
RD0zRDB8fGQhPTNEPTNEMCkmJlIuc2VsZWN0KCIubnYtc2NhdHRlPQpyV3JhcCIpLmRhdHVtKGUu
ZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkpLmNhbGwodCksYiYmKG4uc2Nh
bGU9CihoKS50aWNrcyhuLnRpY2tzKCkmJm4udGlja3MoKS5sZW5ndGg/bi50aWNrcygpOkwvMTAw
KS50aWNrU2l6ZSgtRCwwKSxXLnNlbD0KZWN0KCIubnYteC5udi1heGlzIikuYXR0cigidHJhbnNm
b3JtIiwidHJhbnNsYXRlKDAsIitwLnJhbmdlKClbMF0rIikiKS5jYWxsPQoobikpLHcmJihyLnNj
YWxlKHApLnRpY2tzKHIudGlja3MoKSYmci50aWNrcygpLmxlbmd0aD9yLnRpY2tzKCk6RC8zNiku
dGlja1M9Cml6ZSgtTCwwKSxXLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmNhbGwocikpLG0mJihv
LmdldERhdGEodC54KCkpLnNjYWxlKGgpLj0Kd2lkdGgoTCkuY29sb3IoZS5tYXAoZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gZS5jb2xvcnx8YyhlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uPQoodCxuKXtyZXR1
cm4hZVtuXS5kaXNhYmxlZH0pKSx6LnNlbGVjdCgiLm52LWRpc3RXcmFwIikuYXBwZW5kKCJnIiku
YXR0cigiY2w9CmFzcyIsIm52LWRpc3RyaWJ1dGlvblgiKSxXLnNlbGVjdCgiLm52LWRpc3RyaWJ1
dGlvblgiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cj0KYW5zbGF0ZSgwLCIrcC5yYW5nZSgpWzBdKyIp
IikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9PQopKS5jYWxs
KG8pKSxnJiYodS5nZXREYXRhKHQueSgpKS5zY2FsZShwKS53aWR0aChEKS5jb2xvcihlLm1hcChm
dW5jdGlvbihlLHQ9Cil7cmV0dXJuIGUuY29sb3J8fGMoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0
LG4pe3JldHVybiFlW25dLmRpc2FibGVkfSkpLHoucz0KZWxlY3QoIi5udi1kaXN0V3JhcCIpLmFw
cGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtZGlzdHJpYnV0aW9uWSIpLFcuc2VsZWN0PQooIi5u
di1kaXN0cmlidXRpb25ZIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKEU/TDotdS5z
aXplKCkpKyIsMCkiKS49CmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2Fi
bGVkfSkpLmNhbGwodSkpLGQzLmZpc2hleWUmJihXLnNlbD0KZWN0KCIubnYtYmFja2dyb3VuZCIp
LmF0dHIoIndpZHRoIixMKS5hdHRyKCJoZWlnaHQiLEQpLFcuc2VsZWN0KCIubnYtYmFja2dyPQpv
dW5kIikub24oIm1vdXNlbW92ZSIsSiksVy5zZWxlY3QoIi5udi1iYWNrZ3JvdW5kIikub24oImNs
aWNrIixmdW5jdGlvbigpe1Q9Cj0zRCFUfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudENsaWNrLmZy
ZWV6ZUZpc2hleWUiLGZ1bmN0aW9uKCl7VD0zRCFUfSkpLHMuZD0KaXNwYXRjaC5vbigibGVnZW5k
Q2xpY2siLGZ1bmN0aW9uKGUsaSl7ZS5kaXNhYmxlZD0zRCFlLmRpc2FibGVkLHg9M0RlLmRpc2Fi
PQpsZWQ/MDoyLjUsVy5zZWxlY3QoIi5udi1iYWNrZ3JvdW5kIikuc3R5bGUoInBvaW50ZXItZXZl
bnRzIixlLmRpc2FibGVkPyJub249CmUiOiJhbGwiKSxXLnNlbGVjdCgiLm52LXBvaW50LXBhdGhz
Iikuc3R5bGUoInBvaW50ZXItZXZlbnRzIixlLmRpc2FibGVkPyJhbD0KbCI6Im5vbmUiKSxlLmRp
c2FibGVkPyhoLmRpc3RvcnRpb24oeCkuZm9jdXMoMCkscC5kaXN0b3J0aW9uKHgpLmZvY3VzKDAp
LFcuPQpzZWxlY3QoIi5udi1zY2F0dGVyV3JhcCIpLmNhbGwodCksVy5zZWxlY3QoIi5udi14Lm52
LWF4aXMiKS5jYWxsKG4pLFcuc2VsZWM9CnQoIi5udi15Lm52LWF4aXMiKS5jYWxsKHIpKTpUPTNE
ITEsRi51cGRhdGUoKX0pLGkuZGlzcGF0Y2gub24oInN0YXRlQ2hhbmdlIj0KLGZ1bmN0aW9uKGUp
e0EuZGlzYWJsZWQ9M0RlLmRpc2FibGVkLE0uc3RhdGVDaGFuZ2UoQSksRi51cGRhdGUoKX0pLHQu
ZGlzcGF0PQpjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtkMy5z
ZWxlY3QoIi5udi1jaGFydC0iK3QuaWQoKSs9CiIgLm52LXNlcmllcy0iK2Uuc2VyaWVzSW5kZXgr
IiAubnYtZGlzdHgtIitlLnBvaW50SW5kZXgpLmF0dHIoInkxIixmdW5jdGlvbj0KKHQsbil7cmV0
dXJuIGUucG9zWzFdLUR9KSxkMy5zZWxlY3QoIi5udi1jaGFydC0iK3QuaWQoKSsiIC5udi1zZXJp
ZXMtIitlLnNlPQpyaWVzSW5kZXgrIiAubnYtZGlzdHktIitlLnBvaW50SW5kZXgpLmF0dHIoIngy
IixlLnBvc1swXStvLnNpemUoKSksZS5wb3M9M0Q9CltlLnBvc1swXSthLmxlZnQsZS5wb3NbMV0r
YS50b3BdLE0udG9vbHRpcFNob3coZSl9KSxNLm9uKCJ0b29sdGlwU2hvdyIsZnVuYz0KdGlvbihl
KXtOJiZCKGUsay5wYXJlbnROb2RlKX0pLE0ub24oImNoYW5nZVN0YXRlIixmdW5jdGlvbih0KXt0
eXBlb2YgdC5kaXNhPQpibGVkIT0zRCJ1bmRlZmluZWQiJiYoZS5mb3JFYWNoKGZ1bmN0aW9uKGUs
bil7ZS5kaXNhYmxlZD0zRHQuZGlzYWJsZWRbbl19KSw9CkEuZGlzYWJsZWQ9M0R0LmRpc2FibGVk
KSxGLnVwZGF0ZSgpfSksUD0zRGguY29weSgpLEg9M0RwLmNvcHkoKX0pLEZ9dmFyIHQ9Cj0zRGUu
bW9kZWxzLnNjYXR0ZXIoKSxuPTNEZS5tb2RlbHMuYXhpcygpLHI9M0RlLm1vZGVscy5heGlzKCks
aT0zRGUubW9kZWxzLj0KbGVnZW5kKCkscz0zRGUubW9kZWxzLmxlZ2VuZCgpLG89M0RlLm1vZGVs
cy5kaXN0cmlidXRpb24oKSx1PTNEZS5tb2RlbHMuZGlzPQp0cmlidXRpb24oKSxhPTNEe3RvcDoz
MCxyaWdodDoyMCxib3R0b206NTAsbGVmdDo3NX0sZj0zRG51bGwsbD0zRG51bGwsYz0zRGU9Ci51
dGlscy5kZWZhdWx0Q29sb3IoKSxoPTNEZDMuZmlzaGV5ZT9kMy5maXNoZXllLnNjYWxlKGQzLnNj
YWxlLmxpbmVhcikuZGlzdD0Kb3J0aW9uKDApOnQueFNjYWxlKCkscD0zRGQzLmZpc2hleWU/ZDMu
ZmlzaGV5ZS5zY2FsZShkMy5zY2FsZS5saW5lYXIpLmRpc3RvPQpydGlvbigwKTp0LnlTY2FsZSgp
LGQ9M0QwLHY9M0QwLG09M0QhMSxnPTNEITEseT0zRCEwLGI9M0QhMCx3PTNEITAsRT0zRCExLFM9
Cj0zRCEhZDMuZmlzaGV5ZSx4PTNEMCxUPTNEITEsTj0zRCEwLEM9M0RmdW5jdGlvbihlLHQsbil7
cmV0dXJuIjxzdHJvbmc+Iit0Kz0KIjwvc3Ryb25nPiJ9LGs9M0RmdW5jdGlvbihlLHQsbil7cmV0
dXJuIjxzdHJvbmc+IituKyI8L3N0cm9uZz4ifSxMPTNEbnVsbCxBPQo9M0R7fSxPPTNEbnVsbCxN
PTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhpZGUiLCJzdGF0ZUNoYW5nZSIs
ImM9CmhhbmdlU3RhdGUiKSxfPTNEIk5vIERhdGEgQXZhaWxhYmxlLiIsRD0zRDA7dC54U2NhbGUo
aCkueVNjYWxlKHApLG4ub3JpZW50KD0KImJvdHRvbSIpLnRpY2tQYWRkaW5nKDEwKSxyLm9yaWVu
dChFPyJyaWdodCI6ImxlZnQiKS50aWNrUGFkZGluZygxMCksby5heGlzPQooIngiKSx1LmF4aXMo
InkiKSxzLnVwZGF0ZVN0YXRlKCExKTt2YXIgUCxILEI9M0RmdW5jdGlvbihpLHMpe3ZhciBvPTNE
aS5wb3M9ClswXSsocy5vZmZzZXRMZWZ0fHwwKSx1PTNEaS5wb3NbMV0rKHMub2Zmc2V0VG9wfHww
KSxmPTNEaS5wb3NbMF0rKHMub2Zmc2V0TD0KZWZ0fHwwKSxsPTNEcC5yYW5nZSgpWzBdK2EudG9w
KyhzLm9mZnNldFRvcHx8MCksYz0zRGgucmFuZ2UoKVswXSthLmxlZnQrKHMuPQpvZmZzZXRMZWZ0
fHwwKSxkPTNEaS5wb3NbMV0rKHMub2Zmc2V0VG9wfHwwKSx2PTNEbi50aWNrRm9ybWF0KCkodC54
KCkoaS5wb2k9Cm50LGkucG9pbnRJbmRleCkpLG09M0RyLnRpY2tGb3JtYXQoKSh0LnkoKShpLnBv
aW50LGkucG9pbnRJbmRleCkpO0MhPTNEbnVsbD0KJiZlLnRvb2x0aXAuc2hvdyhbZixsXSxDKGku
c2VyaWVzLmtleSx2LG0saSxGKSwibiIsMSxzLCJ4LW52dG9vbHRpcCIpLGshPTNEPQpudWxsJiZl
LnRvb2x0aXAuc2hvdyhbYyxkXSxrKGkuc2VyaWVzLmtleSx2LG0saSxGKSwiZSIsMSxzLCJ5LW52
dG9vbHRpcCIpLEw9CiE9M0RudWxsJiZlLnRvb2x0aXAuc2hvdyhbbyx1XSxMKGkuc2VyaWVzLmtl
eSx2LG0saSxGKSxpLnZhbHVlPDA/Im4iOiJzIixudT0KbGwscyl9LGo9M0Rbe2tleToiTWFnbmlm
eSIsZGlzYWJsZWQ6ITB9XTtyZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlPQpvdXQu
dG9vbHRpcCIsZnVuY3Rpb24oZSl7TS50b29sdGlwSGlkZShlKSxkMy5zZWxlY3QoIi5udi1jaGFy
dC0iK3QuaWQoKSsiIC49Cm52LXNlcmllcy0iK2Uuc2VyaWVzSW5kZXgrIiAubnYtZGlzdHgtIitl
LnBvaW50SW5kZXgpLmF0dHIoInkxIiwwKSxkMy5zZWxlYz0KdCgiLm52LWNoYXJ0LSIrdC5pZCgp
KyIgLm52LXNlcmllcy0iK2Uuc2VyaWVzSW5kZXgrIiAubnYtZGlzdHktIitlLnBvaW50SW5kPQpl
eCkuYXR0cigieDIiLHUuc2l6ZSgpKX0pLE0ub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbigpe04m
JmUudG9vbHRpcC5jbGVhbnU9CnAoKX0pLEYuZGlzcGF0Y2g9M0RNLEYuc2NhdHRlcj0zRHQsRi5s
ZWdlbmQ9M0RpLEYuY29udHJvbHM9M0RzLEYueEF4aXM9M0RuLD0KRi55QXhpcz0zRHIsRi5kaXN0
WD0zRG8sRi5kaXN0WT0zRHUsZDMucmViaW5kKEYsdCwiaWQiLCJpbnRlcmFjdGl2ZSIsInBvaW50
PQpBY3RpdmUiLCJ4IiwieSIsInNoYXBlIiwic2l6ZSIsInhTY2FsZSIsInlTY2FsZSIsInpTY2Fs
ZSIsInhEb21haW4iLCJ5RG9tYWk9Cm4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJzaXplRG9tYWluIiwi
c2l6ZVJhbmdlIiwiZm9yY2VYIiwiZm9yY2VZIiwiZm9yY2VTaXplIj0KLCJjbGlwVm9yb25vaSIs
ImNsaXBSYWRpdXMiLCJ1c2VWb3Jvbm9pIiksRi5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVu
Yy5iPQppbmQoRiksRi5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oYS50b3A9M0R0eXBlb2YgZS50b3A9CiE9M0QidW5kZWZpbmVkIj9lLnRvcDphLnRvcCxhLnJp
Z2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodD0KOmEucmlnaHQsYS5i
b3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206YS5ib3R0b20s
YS5sZWZ0PQo9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDphLmxlZnQsRik6
YX0sRi53aWR0aD0zRGZ1bmN0aW9uKGUpe3I9CmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0Rl
LEYpOmZ9LEYuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cz0KLmxlbmd0aD8o
bD0zRGUsRik6bH0sRi5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhjPTNEZS51PQp0aWxzLmdldENvbG9yKHQpLGkuY29sb3IoYyksby5jb2xvcihjKSx1LmNvbG9y
KGMpLEYpOmN9LEYuc2hvd0Rpc3RYPTNEZnVuY3Q9CmlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8obT0zRGUsRik6bX0sRi5zaG93RGlzdFk9M0RmdW5jdGlvbihlKXtyZXR1cj0KbiBhcmd1
bWVudHMubGVuZ3RoPyhnPTNEZSxGKTpnfSxGLnNob3dDb250cm9scz0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVuPQp0cy5sZW5ndGg/KFM9M0RlLEYpOlN9LEYuc2hvd0xlZ2VuZD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyg9Cnk9M0RlLEYpOnl9LEYuc2hvd1hBeGlz
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9M0RlLEYpOmJ9LD0KRi5z
aG93WUF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz0zRGUsRik6
d30sRi5yaWdodEFsaWduPQpZQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhFPTNEZSxyLm9yaWVudChlPyJyaWdodCI6ImxlZnQ9CiIpLEYpOkV9LEYuZmlzaGV5ZT0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh4PTNEZSxGKTp4fSxGLnhQYT0K
ZGRpbmc9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGUsRik6ZH0s
Ri55UGFkZGluZz0zRGZ1bmN0PQppb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9M0Rl
LEYpOnZ9LEYudG9vbHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1cm49CiBhcmd1bWVudHMubGVuZ3Ro
PyhOPTNEZSxGKTpOfSxGLnRvb2x0aXBDb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZT0KbnRzLmxlbmd0aD8oTD0zRGUsRik6TH0sRi50b29sdGlwWENvbnRlbnQ9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlPQpuZ3RoPyhDPTNEZSxGKTpDfSxGLnRvb2x0aXBZQ29udGVu
dD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyg9Cms9M0RlLEYpOmt9LEYu
c3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oQT0zRGUsRik6QX0s
Ri5kZT0KZmF1bHRTdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhP
PTNEZSxGKTpPfSxGLm5vRGF0YT0zRGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KF89M0RlLEYpOl99LEYudHJhbnNpdGlvbkR1cmF0aW9uPTNEZnVuY3Q9CmlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oRD0zRGUsRik6RH0sRn0sZS5tb2RlbHMuc2NhdHRlclBsdXNM
aW5lQ2hhcj0KdD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gQihlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0
aW9uKGUpe2Z1bmN0aW9uIFYoKXtpZihTKXJlPQp0dXJuIFUuc2VsZWN0KCIubnYtcG9pbnQtcGF0
aHMiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJhbGwiKSwhMTtVLnNlbGVjdCg9CiIubnYtcG9p
bnQtcGF0aHMiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLCJub25lIik7dmFyIGk9M0RkMy5tb3Vz
ZSh0aGlzKTtoLj0KZGlzdG9ydGlvbihFKS5mb2N1cyhpWzBdKSxwLmRpc3RvcnRpb24oRSkuZm9j
dXMoaVsxXSksVS5zZWxlY3QoIi5udi1zY2F0dGVyPQpXcmFwIikuZGF0dW0oZS5maWx0ZXIoZnVu
Y3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbCh0KSxnJiZVLnNlbGVjdCg9CiIubnYt
eC5udi1heGlzIikuY2FsbChuKSx5JiZVLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmNhbGwociks
VS5zZWxlY3QoIi5udj0KLWRpc3RyaWJ1dGlvblgiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbihl
KXtyZXR1cm4hZS5kaXNhYmxlZH0pKS5jYWxsKG8pLFUuPQpzZWxlY3QoIi5udi1kaXN0cmlidXRp
b25ZIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSk9Ci5j
YWxsKHUpfXZhciBUPTNEZDMuc2VsZWN0KHRoaXMpLE49M0R0aGlzLEM9M0QoZnx8cGFyc2VJbnQo
VC5zdHlsZSgid2lkdGgiKT0KKXx8OTYwKS1hLmxlZnQtYS5yaWdodCxNPTNEKGx8fHBhcnNlSW50
KFQuc3R5bGUoImhlaWdodCIpKXx8NDAwKS1hLnRvcC1hLmJvPQp0dG9tO0IudXBkYXRlPTNEZnVu
Y3Rpb24oKXtULmNhbGwoQil9LEIuY29udGFpbmVyPTNEdGhpcyxrLmRpc2FibGVkPTNEZS5tYXA9
CihmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlzYWJsZWR9KTtpZighTCl7dmFyIGo7TD0zRHt9O2Zv
cihqIGluIGspa1tqXWluc3Rhbj0KY2VvZiBBcnJheT9MW2pdPTNEa1tqXS5zbGljZSgwKTpMW2pd
PTNEa1tqXX1pZighZXx8IWUubGVuZ3RofHwhZS5maWx0ZXIoZnVuPQpjdGlvbihlKXtyZXR1cm4g
ZS52YWx1ZXMubGVuZ3RofSkubGVuZ3RoKXt2YXIgRj0zRFQuc2VsZWN0QWxsKCIubnYtbm9EYXRh
Iik9Ci5kYXRhKFtPXSk7cmV0dXJuIEYuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFz
cyIsIm52ZDMgbnYtbm9EYXRhIikuYT0KdHRyKCJkeSIsIi0uN2VtIikuc3R5bGUoInRleHQtYW5j
aG9yIiwibWlkZGxlIiksRi5hdHRyKCJ4IixhLmxlZnQrQy8yKS5hdHRyPQooInkiLGEudG9wK00v
MikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLEJ9VC5zZWxlY3RBbGwoIi5udi1ub0RhdGEi
KS5yZW09Cm92ZSgpLGg9M0R0LnhTY2FsZSgpLHA9M0R0LnlTY2FsZSgpLF89M0RffHxoLEQ9M0RE
fHxwO3ZhciBJPTNEVC5zZWxlY3RBbGwoIj0KZy5udi13cmFwLm52LXNjYXR0ZXJDaGFydCIpLmRh
dGEoW2VdKSxxPTNESS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzPQoiLCJudmQzIG52
LXdyYXAgbnYtc2NhdHRlckNoYXJ0IG52LWNoYXJ0LSIrdC5pZCgpKSxSPTNEcS5hcHBlbmQoImci
KSxVPTNESS49CnNlbGVjdCgiZyIpO1IuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJudmQz
IG52LWJhY2tncm91bmQiKS5zdHlsZSgicG9pbj0KdGVyLWV2ZW50cyIsIm5vbmUiKSxSLmFwcGVu
ZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksUi5hcHBlbmQoImciPQopLmF0dHIo
ImNsYXNzIiwibnYteSBudi1heGlzIiksUi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXNj
YXR0ZXJXcmFwIik9CixSLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtcmVncmVzc2lvbkxp
bmVzV3JhcCIpLFIuYXBwZW5kKCJnIikuYXR0cigiYz0KbGFzcyIsIm52LWRpc3RXcmFwIiksUi5h
cHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZFdyYXAiKSxSLmFwcGVuZCgiPQpnIiku
YXR0cigiY2xhc3MiLCJudi1jb250cm9sc1dyYXAiKSxJLmF0dHIoInRyYW5zZm9ybSIsInRyYW5z
bGF0ZSgiK2EubGVmdCs9CiIsIithLnRvcCsiKSIpLGImJlUuc2VsZWN0KCIubnYteS5udi1heGlz
IikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrQz0KKyIsMCkiKSxtJiYoaS53aWR0aChD
LzIpLEkuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmRhdHVtKGUpLmNhbGwoaSksYS50b3AhPQo9
M0RpLmhlaWdodCgpJiYoYS50b3A9M0RpLmhlaWdodCgpLE09M0QobHx8cGFyc2VJbnQoVC5zdHls
ZSgiaGVpZ2h0IikpfHw0MDA9CiktYS50b3AtYS5ib3R0b20pLEkuc2VsZWN0KCIubnYtbGVnZW5k
V3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKz0KQy8yKyIsIisgLWEudG9wKyIp
IikpLHcmJihzLndpZHRoKDE4MCkuY29sb3IoWyIjNDQ0Il0pLFUuc2VsZWN0KCIubnYtY29udHJv
PQpsc1dyYXAiKS5kYXR1bShIKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiKyAtYS50
b3ArIikiKS5jYWxsKHMpKSx0Lnc9CmlkdGgoQykuaGVpZ2h0KE0pLmNvbG9yKGUubWFwKGZ1bmN0
aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGMoZSx0KX0pLmZpbHRlcj0KKGZ1bmN0aW9uKHQsbil7
cmV0dXJuIWVbbl0uZGlzYWJsZWR9KSksSS5zZWxlY3QoIi5udi1zY2F0dGVyV3JhcCIpLmRhdHVt
KGUuPQpmaWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbCh0KSxJLnNl
bGVjdCgiLm52LXJlZ3Jlc3Npb25MaW49CmVzV3JhcCIpLmF0dHIoImNsaXAtcGF0aCIsInVybCgj
bnYtZWRnZS1jbGlwLSIrdC5pZCgpKyIpIik7dmFyIHo9M0RJLnNlbGVjdD0KKCIubnYtcmVncmVz
c2lvbkxpbmVzV3JhcCIpLnNlbGVjdEFsbCgiLm52LXJlZ0xpbmVzIikuZGF0YShmdW5jdGlvbihl
KXtyZXR1PQpybiBlfSk7ei5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtcmVn
TGluZXMiKTt2YXIgVz0zRHouc2VsZWN0QWw9CmwoIi5udi1yZWdMaW5lIikuZGF0YShmdW5jdGlv
bihlKXtyZXR1cm5bZV19KSxYPTNEVy5lbnRlcigpLmFwcGVuZCgibGluZSIpLj0KYXR0cigiY2xh
c3MiLCJudi1yZWdMaW5lIikuc3R5bGUoInN0cm9rZS1vcGFjaXR5IiwwKTtXLmF0dHIoIngxIixo
LnJhbmdlKClbPQowXSkuYXR0cigieDIiLGgucmFuZ2UoKVsxXSkuYXR0cigieTEiLGZ1bmN0aW9u
KGUsdCl7cmV0dXJuIHAoaC5kb21haW4oKVswXSo9CmUuc2xvcGUrZS5pbnRlcmNlcHQpfSkuYXR0
cigieTIiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAoaC5kb21haW4oKVsxXSplLnNsbz0KcGUrZS5p
bnRlcmNlcHQpfSkuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSx0LG4pe3JldHVybiBjKGUsbil9
KS5zdHlsZSgic3RyPQpva2Utb3BhY2l0eSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5kaXNhYmxl
ZHx8dHlwZW9mIGUuc2xvcGU9M0Q9M0QidW5kZWZpbmU9CmQifHx0eXBlb2YgZS5pbnRlcmNlcHQ9
M0Q9M0QidW5kZWZpbmVkIj8wOjF9KSxnJiYobi5zY2FsZShoKS50aWNrcyhuLnRpY2tzKD0KKT9u
LnRpY2tzKCk6Qy8xMDApLnRpY2tTaXplKC1NLDApLFUuc2VsZWN0KCIubnYteC5udi1heGlzIiku
YXR0cigidHJhbnNmb3JtPQoiLCJ0cmFuc2xhdGUoMCwiK3AucmFuZ2UoKVswXSsiKSIpLmNhbGwo
bikpLHkmJihyLnNjYWxlKHApLnRpY2tzKHIudGlja3MoKT89CnIudGlja3MoKTpNLzM2KS50aWNr
U2l6ZSgtQywwKSxVLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmNhbGwocikpLGQmJihvLmdldD0K
RGF0YSh0LngoKSkuc2NhbGUoaCkud2lkdGgoQykuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXty
ZXR1cm4gZS5jb2xvcnx8YyhlPQosdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtu
XS5kaXNhYmxlZH0pKSxSLnNlbGVjdCgiLm52LWRpc3RXcmFwIik9Ci5hcHBlbmQoImciKS5hdHRy
KCJjbGFzcyIsIm52LWRpc3RyaWJ1dGlvblgiKSxVLnNlbGVjdCgiLm52LWRpc3RyaWJ1dGlvblgi
KT0KLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrcC5yYW5nZSgpWzBdKyIpIikuZGF0
dW0oZS5maWx0ZXIoZnVuY3Rpb24oPQplKXtyZXR1cm4hZS5kaXNhYmxlZH0pKS5jYWxsKG8pKSx2
JiYodS5nZXREYXRhKHQueSgpKS5zY2FsZShwKS53aWR0aChNKS5jb2w9Cm9yKGUubWFwKGZ1bmN0
aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGMoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3Jl
dHVybj0KIWVbbl0uZGlzYWJsZWR9KSksUi5zZWxlY3QoIi5udi1kaXN0V3JhcCIpLmFwcGVuZCgi
ZyIpLmF0dHIoImNsYXNzIiwibnYtZGlzPQp0cmlidXRpb25ZIiksVS5zZWxlY3QoIi5udi1kaXN0
cmlidXRpb25ZIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKGI9Cj9DOi11LnNpemUo
KSkrIiwwKSIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkp
LmNhbGwodT0KKSksZDMuZmlzaGV5ZSYmKFUuc2VsZWN0KCIubnYtYmFja2dyb3VuZCIpLmF0dHIo
IndpZHRoIixDKS5hdHRyKCJoZWlnaHQiLE0pPQosVS5zZWxlY3QoIi5udi1iYWNrZ3JvdW5kIiku
b24oIm1vdXNlbW92ZSIsViksVS5zZWxlY3QoIi5udi1iYWNrZ3JvdW5kIikub249CigiY2xpY2si
LGZ1bmN0aW9uKCl7Uz0zRCFTfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudENsaWNrLmZyZWV6ZUZp
c2hleWUiLGZ1bj0KY3Rpb24oKXtTPTNEIVN9KSkscy5kaXNwYXRjaC5vbigibGVnZW5kQ2xpY2si
LGZ1bmN0aW9uKGUsaSl7ZS5kaXNhYmxlZD0zRCFlPQouZGlzYWJsZWQsRT0zRGUuZGlzYWJsZWQ/
MDoyLjUsVS5zZWxlY3QoIi5udi1iYWNrZ3JvdW5kIikuc3R5bGUoInBvaW50ZXItZXY9CmVudHMi
LGUuZGlzYWJsZWQ/Im5vbmUiOiJhbGwiKSxVLnNlbGVjdCgiLm52LXBvaW50LXBhdGhzIikuc3R5
bGUoInBvaW50ZXItZT0KdmVudHMiLGUuZGlzYWJsZWQ/ImFsbCI6Im5vbmUiKSxlLmRpc2FibGVk
PyhoLmRpc3RvcnRpb24oRSkuZm9jdXMoMCkscC5kaXN0PQpvcnRpb24oRSkuZm9jdXMoMCksVS5z
ZWxlY3QoIi5udi1zY2F0dGVyV3JhcCIpLmNhbGwodCksVS5zZWxlY3QoIi5udi14Lm52LWE9Cnhp
cyIpLmNhbGwobiksVS5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5jYWxsKHIpKTpTPTNEITEsQi51
cGRhdGUoKX0pLGkuZGlzcD0KYXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe2s9M0Rl
LEEuc3RhdGVDaGFuZ2UoayksQi51cGRhdGUoKX0pLHQuZGlzPQpwYXRjaC5vbigiZWxlbWVudE1v
dXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtkMy5zZWxlY3QoIi5udi1jaGFydC0iK3QuaWQ9
CigpKyIgLm52LXNlcmllcy0iK2Uuc2VyaWVzSW5kZXgrIiAubnYtZGlzdHgtIitlLnBvaW50SW5k
ZXgpLmF0dHIoInkxIixlLnBvcz0KWzFdLU0pLGQzLnNlbGVjdCgiLm52LWNoYXJ0LSIrdC5pZCgp
KyIgLm52LXNlcmllcy0iK2Uuc2VyaWVzSW5kZXgrIiAubnYtZGlzPQp0eS0iK2UucG9pbnRJbmRl
eCkuYXR0cigieDIiLGUucG9zWzBdK28uc2l6ZSgpKSxlLnBvcz0zRFtlLnBvc1swXSthLmxlZnQs
ZS49CnBvc1sxXSthLnRvcF0sQS50b29sdGlwU2hvdyhlKX0pLEEub24oInRvb2x0aXBTaG93Iixm
dW5jdGlvbihlKXt4JiZQKGUsTi5wYT0KcmVudE5vZGUpfSksQS5vbigiY2hhbmdlU3RhdGUiLGZ1
bmN0aW9uKHQpe3R5cGVvZiB0LmRpc2FibGVkIT0zRCJ1bmRlZmluZWQiPQomJihlLmZvckVhY2go
ZnVuY3Rpb24oZSxuKXtlLmRpc2FibGVkPTNEdC5kaXNhYmxlZFtuXX0pLGsuZGlzYWJsZWQ9M0R0
LmRpc2E9CmJsZWQpLEIudXBkYXRlKCl9KSxfPTNEaC5jb3B5KCksRD0zRHAuY29weSgpfSksQn12
YXIgdD0zRGUubW9kZWxzLnNjYXR0ZXIoKT0KLG49M0RlLm1vZGVscy5heGlzKCkscj0zRGUubW9k
ZWxzLmF4aXMoKSxpPTNEZS5tb2RlbHMubGVnZW5kKCkscz0zRGUubW9kZWxzPQoubGVnZW5kKCks
bz0zRGUubW9kZWxzLmRpc3RyaWJ1dGlvbigpLHU9M0RlLm1vZGVscy5kaXN0cmlidXRpb24oKSxh
PTNEe3RvcDo9CjMwLHJpZ2h0OjIwLGJvdHRvbTo1MCxsZWZ0Ojc1fSxmPTNEbnVsbCxsPTNEbnVs
bCxjPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKT0KLGg9M0RkMy5maXNoZXllP2QzLmZpc2hleWUu
c2NhbGUoZDMuc2NhbGUubGluZWFyKS5kaXN0b3J0aW9uKDApOnQueFNjYWxlKCksPQpwPTNEZDMu
ZmlzaGV5ZT9kMy5maXNoZXllLnNjYWxlKGQzLnNjYWxlLmxpbmVhcikuZGlzdG9ydGlvbigwKTp0
LnlTY2FsZSgpLGQ9Cj0zRCExLHY9M0QhMSxtPTNEITAsZz0zRCEwLHk9M0QhMCxiPTNEITEsdz0z
RCEhZDMuZmlzaGV5ZSxFPTNEMCxTPTNEITEseD0zRD0KITAsVD0zRGZ1bmN0aW9uKGUsdCxuKXty
ZXR1cm4iPHN0cm9uZz4iK3QrIjwvc3Ryb25nPiJ9LE49M0RmdW5jdGlvbihlLHQsbil7PQpyZXR1
cm4iPHN0cm9uZz4iK24rIjwvc3Ryb25nPiJ9LEM9M0RmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4i
PGgzPiIrZSsiPC9oMz49CiIrIjxwPiIrcisiPC9wPiJ9LGs9M0R7fSxMPTNEbnVsbCxBPTNEZDMu
ZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhpZD0KZSIsInN0YXRlQ2hhbmdlIiwiY2hh
bmdlU3RhdGUiKSxPPTNEIk5vIERhdGEgQXZhaWxhYmxlLiIsTT0zRDA7dC54U2NhbGUoaCkuPQp5
U2NhbGUocCksbi5vcmllbnQoImJvdHRvbSIpLnRpY2tQYWRkaW5nKDEwKSxyLm9yaWVudChiPyJy
aWdodCI6ImxlZnQiKS50aWM9CmtQYWRkaW5nKDEwKSxvLmF4aXMoIngiKSx1LmF4aXMoInkiKSxz
LnVwZGF0ZVN0YXRlKCExKTt2YXIgXyxELFA9M0RmdW5jdGlvbj0KKGkscyl7dmFyIG89M0RpLnBv
c1swXSsocy5vZmZzZXRMZWZ0fHwwKSx1PTNEaS5wb3NbMV0rKHMub2Zmc2V0VG9wfHwwKSxmPTNE
PQppLnBvc1swXSsocy5vZmZzZXRMZWZ0fHwwKSxsPTNEcC5yYW5nZSgpWzBdK2EudG9wKyhzLm9m
ZnNldFRvcHx8MCksYz0zRGgucmE9Cm5nZSgpWzBdK2EubGVmdCsocy5vZmZzZXRMZWZ0fHwwKSxk
PTNEaS5wb3NbMV0rKHMub2Zmc2V0VG9wfHwwKSx2PTNEbi50aWNrRj0Kb3JtYXQoKSh0LngoKShp
LnBvaW50LGkucG9pbnRJbmRleCkpLG09M0RyLnRpY2tGb3JtYXQoKSh0LnkoKShpLnBvaW50LGku
cG9pPQpudEluZGV4KSk7VCE9M0RudWxsJiZlLnRvb2x0aXAuc2hvdyhbZixsXSxUKGkuc2VyaWVz
LmtleSx2LG0saSxCKSwibiIsMSxzLCI9CngtbnZ0b29sdGlwIiksTiE9M0RudWxsJiZlLnRvb2x0
aXAuc2hvdyhbYyxkXSxOKGkuc2VyaWVzLmtleSx2LG0saSxCKSwiZSIsMT0KLHMsInktbnZ0b29s
dGlwIiksQyE9M0RudWxsJiZlLnRvb2x0aXAuc2hvdyhbbyx1XSxDKGkuc2VyaWVzLmtleSx2LG0s
aS5wb2luPQp0LnRvb2x0aXAsaSxCKSxpLnZhbHVlPDA/Im4iOiJzIixudWxsLHMpfSxIPTNEW3tr
ZXk6Ik1hZ25pZnkiLGRpc2FibGVkOiEwfV09CjtyZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVu
dE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe0EudG9vbHRpcEhpZGUoZT0KKSxkMy5zZWxl
Y3QoIi5udi1jaGFydC0iK3QuaWQoKSsiIC5udi1zZXJpZXMtIitlLnNlcmllc0luZGV4KyIgLm52
LWRpc3R4LSIrPQplLnBvaW50SW5kZXgpLmF0dHIoInkxIiwwKSxkMy5zZWxlY3QoIi5udi1jaGFy
dC0iK3QuaWQoKSsiIC5udi1zZXJpZXMtIitlLnM9CmVyaWVzSW5kZXgrIiAubnYtZGlzdHktIitl
LnBvaW50SW5kZXgpLmF0dHIoIngyIix1LnNpemUoKSl9KSxBLm9uKCJ0b29sdGlwSD0KaWRlIixm
dW5jdGlvbigpe3gmJmUudG9vbHRpcC5jbGVhbnVwKCl9KSxCLmRpc3BhdGNoPTNEQSxCLnNjYXR0
ZXI9M0R0LEIubGVnPQplbmQ9M0RpLEIuY29udHJvbHM9M0RzLEIueEF4aXM9M0RuLEIueUF4aXM9
M0RyLEIuZGlzdFg9M0RvLEIuZGlzdFk9M0R1LGQzLnI9CmViaW5kKEIsdCwiaWQiLCJpbnRlcmFj
dGl2ZSIsInBvaW50QWN0aXZlIiwieCIsInkiLCJzaGFwZSIsInNpemUiLCJ4U2NhbGUiLD0KInlT
Y2FsZSIsInpTY2FsZSIsInhEb21haW4iLCJ5RG9tYWluIiwieFJhbmdlIiwieVJhbmdlIiwic2l6
ZURvbWFpbiIsInNpemVSPQphbmdlIiwiZm9yY2VYIiwiZm9yY2VZIiwiZm9yY2VTaXplIiwiY2xp
cFZvcm9ub2kiLCJjbGlwUmFkaXVzIiwidXNlVm9yb25vaSI9CiksQi5vcHRpb25zPTNEZS51dGls
cy5vcHRpb25zRnVuYy5iaW5kKEIpLEIubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZz0K
dW1lbnRzLmxlbmd0aD8oYS50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6
YS50b3AsYS5yaWdodD0zRHR5PQpwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDph
LnJpZ2h0LGEuYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCI9CnVuZGVmaW5lZCI/ZS5ib3R0
b206YS5ib3R0b20sYS5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6
YT0KLmxlZnQsQik6YX0sQi53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhmPTNEZSxCKTpmfSxCLmhlPQppZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGw9M0RlLEIpOmx9LEIuY29sb3I9M0RmdW5jdGlvbig9CnQpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhjPTNEZS51dGlscy5nZXRDb2xvcih0KSxpLmNvbG9yKGMpLG8uY29sb3Io
YyksdT0KLmNvbG9yKGMpLEIpOmN9LEIuc2hvd0Rpc3RYPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGQ9M0RlLEIpPQo6ZH0sQi5zaG93RGlzdFk9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj0zRGUsQik6dn0sQi5zaG93Q289Cm50cm9scz0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3PTNEZSxCKTp3fSxCLnNob3dMZWdl
bmQ9M0RmdT0KbmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNEZSxCKTptfSxC
LnNob3dYQXhpcz0zRGZ1bmN0aW9uKGUpe3JlPQp0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9M0Rl
LEIpOmd9LEIuc2hvd1lBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW49CnRzLmxlbmd0
aD8oeT0zRGUsQik6eX0sQi5yaWdodEFsaWduWUF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbj0KZ3RoPyhiPTNEZSxyLm9yaWVudChlPyJyaWdodCI6ImxlZnQiKSxCKTpifSxC
LmZpc2hleWU9M0RmdW5jdGlvbihlKXtyZXR1cm4gPQphcmd1bWVudHMubGVuZ3RoPyhFPTNEZSxC
KTpFfSxCLnRvb2x0aXBzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW49Cmd0aD8o
eD0zRGUsQik6eH0sQi50b29sdGlwQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhDPQo9M0RlLEIpOkN9LEIudG9vbHRpcFhDb250ZW50PTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFQ9M0RlLEI9Cik6VH0sQi50b29sdGlwWUNvbnRlbnQ9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTj0zRGUsQik6Tn0sQj0KLnN0
YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGs9M0RlLEIpOmt9LEIu
ZGVmYXVsdFN0YXRlPTNEPQpmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTD0z
RGUsQik6TH0sQi5ub0RhdGE9M0RmdW5jdGlvbihlKXtyZXQ9CnVybiBhcmd1bWVudHMubGVuZ3Ro
PyhPPTNEZSxCKTpPfSxCLnRyYW5zaXRpb25EdXJhdGlvbj0zRGZ1bmN0aW9uKGUpe3JldHVybj0K
IGFyZ3VtZW50cy5sZW5ndGg/KE09M0RlLEIpOk19LEJ9LGUubW9kZWxzLnNwYXJrbGluZT0zRGZ1
bmN0aW9uKCl7ZnVuY3Rpb24gPQpkKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIGk9
M0RuLXQubGVmdC10LnJpZ2h0LGQ9M0RyLXQudG9wLXQuYm90dG89Cm0sdj0zRGQzLnNlbGVjdCh0
aGlzKTtzLmRvbWFpbihsfHxkMy5leHRlbnQoZSx1KSkucmFuZ2UoaHx8WzAsaV0pLG8uZG9tYWlu
KD0KY3x8ZDMuZXh0ZW50KGUsYSkpLnJhbmdlKHB8fFtkLDBdKTt2YXIgbT0zRHYuc2VsZWN0QWxs
KCJnLm52LXdyYXAubnYtc3BhcmtsPQppbmUiKS5kYXRhKFtlXSksZz0zRG0uZW50ZXIoKS5hcHBl
bmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1zcGE9CnJrbGluZSIpLGI9M0Rn
LmFwcGVuZCgiZyIpLHc9M0RtLnNlbGVjdCgiZyIpO20uYXR0cigidHJhbnNmb3JtIiwidHJhbnNs
YXRlKD0KIit0LmxlZnQrIiwiK3QudG9wKyIpIik7dmFyIEU9M0RtLnNlbGVjdEFsbCgicGF0aCIp
LmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuPQpbZV19KTtFLmVudGVyKCkuYXBwZW5kKCJwYXRoIiks
RS5leGl0KCkucmVtb3ZlKCksRS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbig9CmUsdCl7cmV0dXJu
IGUuY29sb3J8fGYoZSx0KX0pLmF0dHIoImQiLGQzLnN2Zy5saW5lKCkueChmdW5jdGlvbihlLHQp
e3JldHVybj0KIHModShlLHQpKX0pLnkoZnVuY3Rpb24oZSx0KXtyZXR1cm4gbyhhKGUsdCkpfSkp
O3ZhciBTPTNEbS5zZWxlY3RBbGwoImNpcmNsPQplLm52LXBvaW50IikuZGF0YShmdW5jdGlvbihl
KXtmdW5jdGlvbiBuKHQpe2lmKHQhPTNELTEpe3ZhciBuPTNEZVt0XTtyZXR1cm49CiBuLnBvaW50
SW5kZXg9M0R0LG59cmV0dXJuIG51bGx9dmFyIHQ9M0RlLm1hcChmdW5jdGlvbihlLHQpe3JldHVy
biBhKGUsdCl9KT0KLHI9M0RuKHQubGFzdEluZGV4T2Yoby5kb21haW4oKVsxXSkpLGk9M0RuKHQu
aW5kZXhPZihvLmRvbWFpbigpWzBdKSkscz0zRG4oPQp0Lmxlbmd0aC0xKTtyZXR1cm5baSxyLHNd
LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZSE9M0RudWxsfSl9KTtTLmVudGVyKCk9Ci5hcHBl
bmQoImNpcmNsZSIpLFMuZXhpdCgpLnJlbW92ZSgpLFMuYXR0cigiY3giLGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIHModShlLD0KZS5wb2ludEluZGV4KSl9KS5hdHRyKCJjeSIsZnVuY3Rpb24oZSx0KXty
ZXR1cm4gbyhhKGUsZS5wb2ludEluZGV4KSl9KS5hdHRyPQooInIiLDIpLmF0dHIoImNsYXNzIixm
dW5jdGlvbihlLHQpe3JldHVybiB1KGUsZS5wb2ludEluZGV4KT0zRD0zRHMuZG9tYWluKCk9Clsx
XT8ibnYtcG9pbnQgbnYtY3VycmVudFZhbHVlIjphKGUsZS5wb2ludEluZGV4KT0zRD0zRG8uZG9t
YWluKClbMF0/Im52LXBvaT0KbnQgbnYtbWluVmFsdWUiOiJudi1wb2ludCBudi1tYXhWYWx1ZSJ9
KX0pLGR9dmFyIHQ9M0R7dG9wOjIscmlnaHQ6MCxib3R0b206PQoyLGxlZnQ6MH0sbj0zRDQwMCxy
PTNEMzIsaT0zRCEwLHM9M0RkMy5zY2FsZS5saW5lYXIoKSxvPTNEZDMuc2NhbGUubGluZWFyKCk9
Cix1PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0sYT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnl9
LGY9M0RlLnV0aWxzLmdldENvbD0Kb3IoWyIjMDAwIl0pLGwsYyxoLHA7cmV0dXJuIGQub3B0aW9u
cz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChkKSxkLm1hcmdpPQpuPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmlu
ZWQ9CiI/ZS50b3A6dC50b3AsdC5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQi
P2UucmlnaHQ6dC5yaWdodCx0LmJvdD0KdG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmlu
ZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD0zRHR5cGVvZiBlLmxlPQpmdCE9M0QidW5kZWZp
bmVkIj9lLmxlZnQ6dC5sZWZ0LGQpOnR9LGQud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnQ9CnMubGVuZ3RoPyhuPTNEZSxkKTpufSxkLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZT0KLGQpOnJ9LGQueD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZDMuZnVuY3RvcihlKSxkKTp1fSxkPQoueT0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZDMuZnVuY3RvcihlKSxkKTphfSxk
LnhTY2FsZT0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLGQp
OnN9LGQueVNjYWxlPTNEZnVuY3Rpb24oZSl7PQpyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0z
RGUsZCk6b30sZC54RG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW49CnRzLmxlbmd0
aD8obD0zRGUsZCk6bH0sZC55RG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGM9Cj0zRGUsZCk6Y30sZC54UmFuZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oaD0zRGUsZCk6aH0sZC55Uj0KYW5nZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhwPTNEZSxkKTpwfSxkLmFuaW1hdGU9M0RmdW5jdGlvPQpuKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPTNEZSxkKTppfSxkLmNvbG9yPTNEZnVuY3Rpb24odCl7
cmV0dXJuIGFyZ3U9Cm1lbnRzLmxlbmd0aD8oZj0zRGUudXRpbHMuZ2V0Q29sb3IodCksZCk6Zn0s
ZH0sZS5tb2RlbHMuc3BhcmtsaW5lUGx1cz0zRGZ1bj0KY3Rpb24oKXtmdW5jdGlvbiB2KGUpe3Jl
dHVybiBlLmVhY2goZnVuY3Rpb24oYyl7ZnVuY3Rpb24gTygpe2lmKGEpcmV0dXJuO3ZhPQpyIGU9
M0RDLnNlbGVjdEFsbCgiLm52LWhvdmVyVmFsdWUiKS5kYXRhKHUpLHI9M0RlLmVudGVyKCkuYXBw
ZW5kKCJnIikuYXR0cig9CiJjbGFzcyIsIm52LWhvdmVyVmFsdWUiKS5zdHlsZSgic3Ryb2tlLW9w
YWNpdHkiLDApLnN0eWxlKCJmaWxsLW9wYWNpdHkiLDApOz0KZS5leGl0KCkuc3R5bGUoInN0cm9r
ZS1vcGFjaXR5IiwwKS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwwKS5yZW1vdmUoKSxlLmF0dHIoPQoi
dHJhbnNmb3JtIixmdW5jdGlvbihlKXtyZXR1cm4idHJhbnNsYXRlKCIrcyh0LngoKShjW2VdLGUp
KSsiLDApIn0pLnN0eWxlKCI9CnN0cm9rZS1vcGFjaXR5IiwxKS5zdHlsZSgiZmlsbC1vcGFjaXR5
IiwxKTtpZighdS5sZW5ndGgpcmV0dXJuO3IuYXBwZW5kKCJsaT0KbmUiKS5hdHRyKCJ4MSIsMCku
YXR0cigieTEiLC1uLnRvcCkuYXR0cigieDIiLDApLmF0dHIoInkyIixiKSxyLmFwcGVuZCgidGV4
PQp0IikuYXR0cigiY2xhc3MiLCJudi14VmFsdWUiKS5hdHRyKCJ4IiwtNikuYXR0cigieSIsLW4u
dG9wKS5hdHRyKCJ0ZXh0LWFuY2g9Cm9yIiwiZW5kIikuYXR0cigiZHkiLCIuOWVtIiksQy5zZWxl
Y3QoIi5udi1ob3ZlclZhbHVlIC5udi14VmFsdWUiKS50ZXh0KGYodD0KLngoKShjW3VbMF1dLHVb
MF0pKSksci5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52LXlWYWx1ZSIpLmF0dHIoIngi
LDYpPQouYXR0cigieSIsLW4udG9wKS5hdHRyKCJ0ZXh0LWFuY2hvciIsInN0YXJ0IikuYXR0cigi
ZHkiLCIuOWVtIiksQy5zZWxlY3QoIi49Cm52LWhvdmVyVmFsdWUgLm52LXlWYWx1ZSIpLnRleHQo
bCh0LnkoKShjW3VbMF1dLHVbMF0pKSl9ZnVuY3Rpb24gTSgpe2Z1bmN0aT0Kb24gcihlLG4pe3Zh
ciByPTNETWF0aC5hYnModC54KCkoZVswXSwwKS1uKSxpPTNEMDtmb3IodmFyIHM9M0QwO3M8ZS5s
ZW5ndGg7PQpzKyspTWF0aC5hYnModC54KCkoZVtzXSxzKS1uKTxyJiYocj0zRE1hdGguYWJzKHQu
eCgpKGVbc10scyktbiksaT0zRHMpO3JldHU9CnJuIGl9aWYoYSlyZXR1cm47dmFyIGU9M0RkMy5t
b3VzZSh0aGlzKVswXS1uLmxlZnQ7dT0zRFtyKGMsTWF0aC5yb3VuZChzLmludj0KZXJ0KGUpKSld
LE8oKX12YXIgbT0zRGQzLnNlbGVjdCh0aGlzKSxnPTNEKHJ8fHBhcnNlSW50KG0uc3R5bGUoIndp
ZHRoIikpfHw5PQo2MCktbi5sZWZ0LW4ucmlnaHQsYj0zRChpfHxwYXJzZUludChtLnN0eWxlKCJo
ZWlnaHQiKSl8fDQwMCktbi50b3Atbi5ib3R0b209Cjt2LnVwZGF0ZT0zRGZ1bmN0aW9uKCl7dihl
KX0sdi5jb250YWluZXI9M0R0aGlzO2lmKCFjfHwhYy5sZW5ndGgpe3ZhciB3PTNEbT0KLnNlbGVj
dEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW2RdKTtyZXR1cm4gdy5lbnRlcigpLmFwcGVuZCgidGV4
dCIpLmF0dHIoImNsPQphc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5z
dHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSx3LmE9CnR0cigieCIsbi5sZWZ0K2cvMikuYXR0
cigieSIsbi50b3ArYi8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksdn1tLnNlbD0KZWN0
QWxsKCIubnYtbm9EYXRhIikucmVtb3ZlKCk7dmFyIEU9M0R0LnkoKShjW2MubGVuZ3RoLTFdLGMu
bGVuZ3RoLTEpO3M9M0R0PQoueFNjYWxlKCksbz0zRHQueVNjYWxlKCk7dmFyIFM9M0RtLnNlbGVj
dEFsbCgiZy5udi13cmFwLm52LXNwYXJrbGluZXBsdXMiKS49CmRhdGEoW2NdKSxUPTNEUy5lbnRl
cigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LXNwYXJrbGluZT0K
cGx1cyIpLE49M0RULmFwcGVuZCgiZyIpLEM9M0RTLnNlbGVjdCgiZyIpO04uYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJudi1zPQpwYXJrbGluZVdyYXAiKSxOLmFwcGVuZCgiZyIpLmF0dHIoImNs
YXNzIiwibnYtdmFsdWVXcmFwIiksTi5hcHBlbmQoImciKS5hdHQ9CnIoImNsYXNzIiwibnYtaG92
ZXJBcmVhIiksUy5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIituLmxlZnQrIiwiK24udG9w
Kz0KIikiKTt2YXIgaz0zREMuc2VsZWN0KCIubnYtc3BhcmtsaW5lV3JhcCIpO3Qud2lkdGgoZyku
aGVpZ2h0KGIpLGsuY2FsbCh0KTt2PQphciBMPTNEQy5zZWxlY3QoIi5udi12YWx1ZVdyYXAiKSxB
PTNETC5zZWxlY3RBbGwoIi5udi1jdXJyZW50VmFsdWUiKS5kYXRhKFs9CkVdKTtBLmVudGVyKCku
YXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudi1jdXJyZW50VmFsdWUiKS5hdHRyKCJkeCIs
cD8tOD0KOjgpLmF0dHIoImR5IiwiLjllbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIscD8iZW5kIjoi
c3RhcnQiKSxBLmF0dHIoIngiLGcrKHA/PQpuLnJpZ2h0OjApKS5hdHRyKCJ5IixoP2Z1bmN0aW9u
KGUpe3JldHVybiBvKGUpfTowKS5zdHlsZSgiZmlsbCIsdC5jb2xvcigpKGM9CltjLmxlbmd0aC0x
XSxjLmxlbmd0aC0xKSkudGV4dChsKEUpKSxOLnNlbGVjdCgiLm52LWhvdmVyQXJlYSIpLmFwcGVu
ZCgicmVjdD0KIikub24oIm1vdXNlbW92ZSIsTSkub24oImNsaWNrIixmdW5jdGlvbigpe2E9M0Qh
YX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oPQope3U9M0RbXSxPKCl9KSxDLnNlbGVjdCgiLm52
LWhvdmVyQXJlYSByZWN0IikuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlKXs9CnJldHVybiJ0
cmFuc2xhdGUoIisgLW4ubGVmdCsiLCIrIC1uLnRvcCsiKSJ9KS5hdHRyKCJ3aWR0aCIsZytuLmxl
ZnQrbi5yaWdodD0KKS5hdHRyKCJoZWlnaHQiLGIrbi50b3ApfSksdn12YXIgdD0zRGUubW9kZWxz
LnNwYXJrbGluZSgpLG49M0R7dG9wOjE1LHJpZ2h0PQo6MTAwLGJvdHRvbToxMCxsZWZ0OjUwfSxy
PTNEbnVsbCxpPTNEbnVsbCxzLG8sdT0zRFtdLGE9M0QhMSxmPTNEZDMuZm9ybWF0KCI9CixyIiks
bD0zRGQzLmZvcm1hdCgiLC4yZiIpLGM9M0QhMCxoPTNEITAscD0zRCExLGQ9M0QiTm8gRGF0YSBB
dmFpbGFibGUuIjtyZT0KdHVybiB2LnNwYXJrbGluZT0zRHQsZDMucmViaW5kKHYsdCwieCIsInki
LCJ4U2NhbGUiLCJ5U2NhbGUiLCJjb2xvciIpLHYub3B0PQppb25zPTNEZS51dGlscy5vcHRpb25z
RnVuYy5iaW5kKHYpLHYubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy49Cmxl
bmd0aD8obi50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6bi50b3Asbi5y
aWdodD0zRHR5cGVvZiBlLj0KcmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDpuLnJpZ2h0LG4u
Ym90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluPQplZCI/ZS5ib3R0b206bi5ib3R0
b20sbi5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6bi5sZWZ0LHY9
Cik6bn0sdi53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNE
ZSx2KTpyfSx2LmhlaWdodD0zRD0KZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGk9M0RlLHYpOml9LHYueFRpY2tGb3JtYXQ9M0RmdW5jdGlvbihlPQope3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhmPTNEZSx2KTpmfSx2LnlUaWNrRm9ybWF0PTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGE9CnJndW1lbnRzLmxlbmd0aD8obD0zRGUsdik6bH0sdi5zaG93VmFsdWU9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbj0KZ3RoPyhjPTNEZSx2KTpjfSx2LmFsaWduVmFsdWU9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsPQp2KTpofSx2LnJpZ2h0
QWxpZ25WYWx1ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSx2
KTpwfSw9CnYubm9EYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9
M0RlLHYpOmR9LHZ9LGUubW9kZWxzLnN0YT0KY2tlZEFyZWE9M0RmdW5jdGlvbigpe2Z1bmN0aW9u
IGcoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXt2YXIgYT0zRG4tdC5sPQplZnQtdC5yaWdo
dCxiPTNEci10LnRvcC10LmJvdHRvbSx3PTNEZDMuc2VsZWN0KHRoaXMpO3A9M0R2LnhTY2FsZSgp
LGQ9M0R2Lnk9ClNjYWxlKCk7dmFyIEU9M0RlO2UuZm9yRWFjaChmdW5jdGlvbihlLHQpe2Uuc2Vy
aWVzSW5kZXg9M0R0LGUudmFsdWVzPTNEZS52YT0KbHVlcy5tYXAoZnVuY3Rpb24oZSxuKXtyZXR1
cm4gZS5pbmRleD0zRG4sZS5zZXJpZXNJbmRleD0zRHQsZX0pfSk7dmFyIFM9M0RlPQouZmlsdGVy
KGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSk7ZT0zRGQzLmxheW91dC5zdGFjaygpLm9y
ZGVyKGwpLm9mZnM9CmV0KGYpLnZhbHVlcyhmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXN9KS54
KG8pLnkodSkub3V0KGZ1bmN0aW9uKGUsdCxuKXt2YT0KciByPTNEdShlKT0zRD0zRD0zRDA/MDpu
O2UuZGlzcGxheT0zRHt5OnIseTA6dH19KShTKTt2YXIgVD0zRHcuc2VsZWN0QWxsKCJnPQoubnYt
d3JhcC5udi1zdGFja2VkYXJlYSIpLmRhdGEoW2VdKSxOPTNEVC5lbnRlcigpLmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiw9CiJudmQzIG52LXdyYXAgbnYtc3RhY2tlZGFyZWEiKSxDPTNETi5hcHBl
bmQoImRlZnMiKSxrPTNETi5hcHBlbmQoImciKSxMPTNEVD0KLnNlbGVjdCgiZyIpO2suYXBwZW5k
KCJnIikuYXR0cigiY2xhc3MiLCJudi1hcmVhV3JhcCIpLGsuYXBwZW5kKCJnIikuYXR0cigiPQpj
bGFzcyIsIm52LXNjYXR0ZXJXcmFwIiksVC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0
LmxlZnQrIiwiK3QudG9wKyI9CikiKSx2LndpZHRoKGEpLmhlaWdodChiKS54KG8pLnkoZnVuY3Rp
b24oZSl7cmV0dXJuIGUuZGlzcGxheS55K2UuZGlzcGxheS55MD0KfSkuZm9yY2VZKFswXSkuY29s
b3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8aShlLGUuc2VyaWVzSW5kZXgp
PQp9KSk7dmFyIEE9M0RMLnNlbGVjdCgiLm52LXNjYXR0ZXJXcmFwIikuZGF0dW0oZSk7QS5jYWxs
KHYpLEMuYXBwZW5kKCJjbGlwUGE9CnRoIikuYXR0cigiaWQiLCJudi1lZGdlLWNsaXAtIitzKS5h
cHBlbmQoInJlY3QiKSxULnNlbGVjdCgiI252LWVkZ2UtY2xpcC0iKz0KcysiIHJlY3QiKS5hdHRy
KCJ3aWR0aCIsYSkuYXR0cigiaGVpZ2h0IixiKSxMLmF0dHIoImNsaXAtcGF0aCIsaD8idXJsKCNu
di1lPQpkZ2UtY2xpcC0iK3MrIikiOiIiKTt2YXIgTz0zRGQzLnN2Zy5hcmVhKCkueChmdW5jdGlv
bihlLHQpe3JldHVybiBwKG8oZSx0KSk9Cn0pLnkwKGZ1bmN0aW9uKGUpe3JldHVybiBkKGUuZGlz
cGxheS55MCl9KS55MShmdW5jdGlvbihlKXtyZXR1cm4gZChlLmRpc3BsYT0KeS55K2UuZGlzcGxh
eS55MCl9KS5pbnRlcnBvbGF0ZShjKSxNPTNEZDMuc3ZnLmFyZWEoKS54KGZ1bmN0aW9uKGUsdCl7
cmV0dXJuPQogcChvKGUsdCkpfSkueTAoZnVuY3Rpb24oZSl7cmV0dXJuIGQoZS5kaXNwbGF5Lnkw
KX0pLnkxKGZ1bmN0aW9uKGUpe3JldHVybiA9CmQoZS5kaXNwbGF5LnkwKX0pLF89M0RMLnNlbGVj
dCgiLm52LWFyZWFXcmFwIikuc2VsZWN0QWxsKCJwYXRoLm52LWFyZWEiKS5kYT0KdGEoZnVuY3Rp
b24oZSl7cmV0dXJuIGV9KTtfLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLGZ1
bmN0aW9uKGUsPQp0KXtyZXR1cm4ibnYtYXJlYSBudi1hcmVhLSIrdH0pLmF0dHIoImQiLGZ1bmN0
aW9uKGUsdCl7cmV0dXJuIE0oZS52YWx1ZXMsZS49CnNlcmllc0luZGV4KX0pLm9uKCJtb3VzZW92
ZXIiLGZ1bmN0aW9uKGUsdCl7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIj0KLCEwKSxt
LmFyZWFNb3VzZW92ZXIoe3BvaW50OmUsc2VyaWVzOmUua2V5LHBvczpbZDMuZXZlbnQucGFnZVgs
ZDMuZXZlbnQucGFnPQplWV0sc2VyaWVzSW5kZXg6ZS5zZXJpZXNJbmRleH0pfSkub24oIm1vdXNl
b3V0IixmdW5jdGlvbihlLHQpe2QzLnNlbGVjdCh0aGk9CnMpLmNsYXNzZWQoImhvdmVyIiwhMSks
bS5hcmVhTW91c2VvdXQoe3BvaW50OmUsc2VyaWVzOmUua2V5LHBvczpbZDMuZXZlbnQucD0KYWdl
WCxkMy5ldmVudC5wYWdlWV0sc2VyaWVzSW5kZXg6ZS5zZXJpZXNJbmRleH0pfSkub24oImNsaWNr
IixmdW5jdGlvbihlLHQpPQp7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMSksbS5h
cmVhQ2xpY2soe3BvaW50OmUsc2VyaWVzOmUua2V5LHBvczo9CltkMy5ldmVudC5wYWdlWCxkMy5l
dmVudC5wYWdlWV0sc2VyaWVzSW5kZXg6ZS5zZXJpZXNJbmRleH0pfSksXy5leGl0KCkucmVtbz0K
dmUoKSxfLnN0eWxlKCJmaWxsIixmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxpKGUsZS5z
ZXJpZXNJbmRleCl9KS5zdHlsPQplKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29s
b3J8fGkoZSxlLnNlcmllc0luZGV4KX0pLF8uYXR0cigiZCIsZnU9Cm5jdGlvbihlLHQpe3JldHVy
biBPKGUudmFsdWVzLHQpfSksdi5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci5hcmVhIixm
dT0KbmN0aW9uKGUpe0wuc2VsZWN0KCIubnYtY2hhcnQtIitzKyIgLm52LWFyZWEtIitlLnNlcmll
c0luZGV4KS5jbGFzc2VkKCJob3ZlPQpyIiwhMCl9KSx2LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91
c2VvdXQuYXJlYSIsZnVuY3Rpb24oZSl7TC5zZWxlY3QoIi5udi1jaGE9CnJ0LSIrcysiIC5udi1h
cmVhLSIrZS5zZXJpZXNJbmRleCkuY2xhc3NlZCgiaG92ZXIiLCExKX0pLGcuZDNfc3RhY2tlZE9m
ZnNldD0KX3N0YWNrUGVyY2VudD0zRGZ1bmN0aW9uKGUpe3ZhciB0PTNEZS5sZW5ndGgsbj0zRGVb
MF0ubGVuZ3RoLHI9M0QxL3QsaSxzLG8sPQphPTNEW107Zm9yKHM9M0QwO3M8bjsrK3Mpe2Zvcihp
PTNEMCxvPTNEMDtpPEUubGVuZ3RoO2krKylvKz0zRHUoRVtpXS52YWx1ZXM9CltzXSk7aWYobylm
b3IoaT0zRDA7aTx0O2krKyllW2ldW3NdWzFdLz0zRG87ZWxzZSBmb3IoaT0zRDA7aTx0O2krKyll
W2ldW3NdWz0KMV09M0RyfWZvcihzPTNEMDtzPG47KytzKWFbc109M0QwO3JldHVybiBhfX0pLGd9
dmFyIHQ9M0R7dG9wOjAscmlnaHQ6MCxib3R0PQpvbTowLGxlZnQ6MH0sbj0zRDk2MCxyPTNENTAw
LGk9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLHM9M0RNYXRoLmZsb29yKE1hdGg9Ci5yYW5kb20o
KSoxZTUpLG89M0RmdW5jdGlvbihlKXtyZXR1cm4gZS54fSx1PTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGUueX0sYT0zRD0KInN0YWNrIixmPTNEInplcm8iLGw9M0QiZGVmYXVsdCIsYz0zRCJsaW5lYXIi
LGg9M0QhMSxwLGQsdj0zRGUubW9kZWxzLnNjYXR0PQplcigpLG09M0RkMy5kaXNwYXRjaCgidG9v
bHRpcFNob3ciLCJ0b29sdGlwSGlkZSIsImFyZWFDbGljayIsImFyZWFNb3VzZW92ZXI9CiIsImFy
ZWFNb3VzZW91dCIpO3JldHVybiB2LnNpemUoMi4yKS5zaXplRG9tYWluKFsyLjIsMi4yXSksdi5k
aXNwYXRjaC5vbigiZT0KbGVtZW50Q2xpY2suYXJlYSIsZnVuY3Rpb24oZSl7bS5hcmVhQ2xpY2so
ZSl9KSx2LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvPQp2ZXIudG9vbHRpcCIsZnVuY3Rpb24o
ZSl7ZS5wb3M9M0RbZS5wb3NbMF0rdC5sZWZ0LGUucG9zWzFdK3QudG9wXSxtLnRvb2x0aXA9ClNo
b3coZSl9KSx2LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24o
ZSl7bS50b29sdGlwSGlkZT0KKGUpfSksZy5kaXNwYXRjaD0zRG0sZy5zY2F0dGVyPTNEdixkMy5y
ZWJpbmQoZyx2LCJpbnRlcmFjdGl2ZSIsInNpemUiLCJ4U2NhPQpsZSIsInlTY2FsZSIsInpTY2Fs
ZSIsInhEb21haW4iLCJ5RG9tYWluIiwieFJhbmdlIiwieVJhbmdlIiwic2l6ZURvbWFpbiIsImY9
Cm9yY2VYIiwiZm9yY2VZIiwiZm9yY2VTaXplIiwiY2xpcFZvcm9ub2kiLCJ1c2VWb3Jvbm9pIiwi
Y2xpcFJhZGl1cyIsImhpZ2hsaT0KZ2h0UG9pbnQiLCJjbGVhckhpZ2hsaWdodHMiKSxnLm9wdGlv
bnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoZyksZy54PTNEPQpmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGQzLmZ1bmN0b3IoZSksZyk6b30sZy55PTNEZnVuY3Rp
b249CihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGQzLmZ1bmN0b3IoZSksZyk6dX0s
Zy5tYXJnaW49M0RmdW5jdGlvbihlKT0Ke3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD0z
RHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDp0LnRvcCx0PQoucmlnaHQ9M0R0eXBl
b2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OnQucmlnaHQsdC5ib3R0b209M0R0eXBl
b2YgZS49CmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHRvbSx0LmxlZnQ9M0R0
eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZT0KZCI/ZS5sZWZ0OnQubGVmdCxnKTp0fSxnLndpZHRo
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49M0RlPQosZyk6bn0sZy5o
ZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0zRGUsZyk6cn0s
Zy5jbGlwRWQ9CmdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9M0Rl
LGcpOmh9LGcuY29sb3I9M0RmdW5jdGlvbih0KT0Ke3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhp
PTNEZS51dGlscy5nZXRDb2xvcih0KSxnKTppfSxnLm9mZnNldD0zRGZ1bmN0aW9uPQooZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLGcpOmZ9LGcub3JkZXI9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW09CmVudHMubGVuZ3RoPyhsPTNEZSxnKTpsfSxnLnN0eWxlPTNEZnVuY3Rpb24o
ZSl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuID0KYTthPTNEZTtzd2l0Y2goYSl7Y2FzZSJz
dGFjayI6Zy5vZmZzZXQoInplcm8iKSxnLm9yZGVyKCJkZWZhdWx0Iik7YnJlYWs7Y2FzPQplInN0
cmVhbSI6Zy5vZmZzZXQoIndpZ2dsZSIpLGcub3JkZXIoImluc2lkZS1vdXQiKTticmVhaztjYXNl
InN0cmVhbS1jZW50ZXI9CiI6Zy5vZmZzZXQoInNpbGhvdWV0dGUiKSxnLm9yZGVyKCJpbnNpZGUt
b3V0Iik7YnJlYWs7Y2FzZSJleHBhbmQiOmcub2Zmc2V0KD0KImV4cGFuZCIpLGcub3JkZXIoImRl
ZmF1bHQiKTticmVhaztjYXNlInN0YWNrX3BlcmNlbnQiOmcub2Zmc2V0KGcuZDNfc3RhY2tlPQpk
T2Zmc2V0X3N0YWNrUGVyY2VudCksZy5vcmRlcigiZGVmYXVsdCIpfXJldHVybiBnfSxnLmludGVy
cG9sYXRlPTNEZnVuY3Rpb249CihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUsZyk6
Y30sZ30sZS5tb2RlbHMuc3RhY2tlZEFyZWFDaGFydD0zRGZ1bj0KY3Rpb24oKXtmdW5jdGlvbiBN
KHkpe3JldHVybiB5LmVhY2goZnVuY3Rpb24oeSl7dmFyIEE9M0RkMy5zZWxlY3QodGhpcyksXz0K
PTNEdGhpcyxEPTNEKGF8fHBhcnNlSW50KEEuc3R5bGUoIndpZHRoIikpfHw5NjApLXUubGVmdC11
LnJpZ2h0LFA9M0QoZnx8cGFyPQpzZUludChBLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktdS50b3At
dS5ib3R0b207TS51cGRhdGU9M0RmdW5jdGlvbigpe0EuY2FsbCg9Ck0pfSxNLmNvbnRhaW5lcj0z
RHRoaXMsUy5kaXNhYmxlZD0zRHkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0p
Oz0KaWYoIXgpe3ZhciBIO3g9M0R7fTtmb3IoSCBpbiBTKVNbSF1pbnN0YW5jZW9mIEFycmF5P3hb
SF09M0RTW0hdLnNsaWNlKDApOnhbPQpIXT0zRFNbSF19aWYoIXl8fCF5Lmxlbmd0aHx8IXkuZmls
dGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS49Cmxlbmd0aCl7dmFyIEI9
M0RBLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW1RdKTtyZXR1cm4gQi5lbnRlcigpLmFw
cGVuZD0KKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5Iiwi
LS43ZW0iKS5zdHlsZSgidGV4dC1hbmNoPQpvciIsIm1pZGRsZSIpLEIuYXR0cigieCIsdS5sZWZ0
K0QvMikuYXR0cigieSIsdS50b3ArUC8yKS50ZXh0KGZ1bmN0aW9uKGUpe3I9CmV0dXJuIGV9KSxN
fUEuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtb3ZlKCksYj0zRHQueFNjYWxlKCksdz0zRHQu
eVNjYWxlKD0KKTt2YXIgaj0zREEuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtc3RhY2tlZEFyZWFD
aGFydCIpLmRhdGEoW3ldKSxGPTNEai5lbnRlPQpyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3Mi
LCJudmQzIG52LXdyYXAgbnYtc3RhY2tlZEFyZWFDaGFydCIpLmFwcGVuZCgiZyI9CiksST0zRGou
c2VsZWN0KCJnIik7Ri5hcHBlbmQoInJlY3QiKS5zdHlsZSgib3BhY2l0eSIsMCksRi5hcHBlbmQo
ImciKS5hdHRyKD0KImNsYXNzIiwibnYteCBudi1heGlzIiksRi5hcHBlbmQoImciKS5hdHRyKCJj
bGFzcyIsIm52LXkgbnYtYXhpcyIpLEYuYXBwZW5kPQooImciKS5hdHRyKCJjbGFzcyIsIm52LXN0
YWNrZWRXcmFwIiksRi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZFc9CnJhcCIp
LEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1jb250cm9sc1dyYXAiKSxGLmFwcGVuZCgi
ZyIpLmF0dHIoImNsYT0Kc3MiLCJudi1pbnRlcmFjdGl2ZSIpLEkuc2VsZWN0KCJyZWN0IikuYXR0
cigid2lkdGgiLEQpLmF0dHIoImhlaWdodCIsUCk7aWYoPQpoKXt2YXIgcT0zRGM/RC1DOkQ7aS53
aWR0aChxKSxJLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5kYXR1bSh5KS5jYWxsKGkpLHU9Ci50
b3AhPTNEaS5oZWlnaHQoKSYmKHUudG9wPTNEaS5oZWlnaHQoKSxQPTNEKGZ8fHBhcnNlSW50KEEu
c3R5bGUoImhlaWdodCIpKT0KfHw0MDApLXUudG9wLXUuYm90dG9tKSxJLnNlbGVjdCgiLm52LWxl
Z2VuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhPQp0ZSgiKyhELXEpKyIsIisgLXUu
dG9wKyIpIil9aWYoYyl7dmFyIFI9M0Rbe2tleTpMLnN0YWNrZWR8fCJTdGFja2VkIixtZXRhS2U9
Cnk6IlN0YWNrZWQiLGRpc2FibGVkOnQuc3R5bGUoKSE9M0Qic3RhY2siLHN0eWxlOiJzdGFjayJ9
LHtrZXk6TC5zdHJlYW18fCJTdD0KcmVhbSIsbWV0YUtleToiU3RyZWFtIixkaXNhYmxlZDp0LnN0
eWxlKCkhPTNEInN0cmVhbSIsc3R5bGU6InN0cmVhbSJ9LHtrZXk6PQpMLmV4cGFuZGVkfHwiRXhw
YW5kZWQiLG1ldGFLZXk6IkV4cGFuZGVkIixkaXNhYmxlZDp0LnN0eWxlKCkhPTNEImV4cGFuZCIs
c3Q9CnlsZToiZXhwYW5kIn0se2tleTpMLnN0YWNrX3BlcmNlbnR8fCJTdGFjayAlIixtZXRhS2V5
OiJTdGFja19QZXJjZW50IixkaXNhYj0KbGVkOnQuc3R5bGUoKSE9M0Qic3RhY2tfcGVyY2VudCIs
c3R5bGU6InN0YWNrX3BlcmNlbnQifV07Qz0zRGsubGVuZ3RoLzMqMjYwPQosUj0zRFIuZmlsdGVy
KGZ1bmN0aW9uKGUpe3JldHVybiBrLmluZGV4T2YoZS5tZXRhS2V5KSE9M0Q9M0QtMX0pLHMud2lk
dGgoQyk9Ci5jb2xvcihbIiM0NDQiLCIjNDQ0IiwiIzQ0NCJdKSxJLnNlbGVjdCgiLm52LWNvbnRy
b2xzV3JhcCIpLmRhdHVtKFIpLmNhbGwocz0KKSx1LnRvcCE9M0RNYXRoLm1heChzLmhlaWdodCgp
LGkuaGVpZ2h0KCkpJiYodS50b3A9M0RNYXRoLm1heChzLmhlaWdodCgpLGkuPQpoZWlnaHQoKSks
UD0zRChmfHxwYXJzZUludChBLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktdS50b3AtdS5ib3R0b20p
LEkuc2VsZWM9CnQoIi5udi1jb250cm9sc1dyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xh
dGUoMCwiKyAtdS50b3ArIikiKX1qLmF0dHIoIj0KdHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdS5s
ZWZ0KyIsIit1LnRvcCsiKSIpLHYmJkkuc2VsZWN0KCIubnYteS5udi1heGlzIikuPQphdHRyKCJ0
cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitEKyIsMCkiKSxtJiYoby53aWR0aChEKS5oZWlnaHQoUCku
bWFyZ2luKHtsZWY9CnQ6dS5sZWZ0LHRvcDp1LnRvcH0pLnN2Z0NvbnRhaW5lcihBKS54U2NhbGUo
Yiksai5zZWxlY3QoIi5udi1pbnRlcmFjdGl2ZSIpLj0KY2FsbChvKSksdC53aWR0aChEKS5oZWln
aHQoUCk7dmFyIFU9M0RJLnNlbGVjdCgiLm52LXN0YWNrZWRXcmFwIikuZGF0dW0oeSk7PQpVLmNh
bGwodCkscCYmKG4uc2NhbGUoYikudGlja3MoRC8xMDApLnRpY2tTaXplKC1QLDApLEkuc2VsZWN0
KCIubnYteC5udi1heGk9CnMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK1ArIiki
KSxJLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmNhbGwobj0KKSksZCYmKHIuc2NhbGUodykudGlj
a3ModC5vZmZzZXQoKT0zRD0zRCJ3aWdnbGUiPzA6UC8zNikudGlja1NpemUoLUQsMCkuc2V0PQpU
aWNrRm9ybWF0KHQuc3R5bGUoKT0zRD0zRCJleHBhbmQifHx0LnN0eWxlKCk9M0Q9M0Qic3RhY2tf
cGVyY2VudCI/ZDMuZm9ybWE9CnQoIiUiKTpFKSxJLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmNh
bGwocikpLHQuZGlzcGF0Y2gub24oImFyZWFDbGljay50b2dnbD0KZSIsZnVuY3Rpb24oZSl7eS5m
aWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KS5sZW5ndGg9M0Q9M0Q9M0QxP3ku
PQpmb3JFYWNoKGZ1bmN0aW9uKGUpe2UuZGlzYWJsZWQ9M0QhMX0pOnkuZm9yRWFjaChmdW5jdGlv
bih0LG4pe3QuZGlzYWJsZWQ9M0Q9Cm4hPTNEZS5zZXJpZXNJbmRleH0pLFMuZGlzYWJsZWQ9M0R5
Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlzYWJsZWR9KSxOLj0Kc3RhdGVDaGFuZ2UoUyks
TS51cGRhdGUoKX0pLGkuZGlzcGF0Y2gub24oInN0YXRlQ2hhbmdlIixmdW5jdGlvbihlKXtTLmRp
c2FiPQpsZWQ9M0RlLmRpc2FibGVkLE4uc3RhdGVDaGFuZ2UoUyksTS51cGRhdGUoKX0pLHMuZGlz
cGF0Y2gub24oImxlZ2VuZENsaWNrIiw9CmZ1bmN0aW9uKGUsbil7aWYoIWUuZGlzYWJsZWQpcmV0
dXJuO1I9M0RSLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNhYmxlZD0KPTNEITAsZX0pLGUu
ZGlzYWJsZWQ9M0QhMSx0LnN0eWxlKGUuc3R5bGUpLFMuc3R5bGU9M0R0LnN0eWxlKCksTi5zdGF0
ZUNoYW5nPQplKFMpLE0udXBkYXRlKCl9KSxvLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2Vtb3Zl
IixmdW5jdGlvbihpKXt0LmNsZWFySGlnaGw9CmlnaHRzKCk7dmFyIHMsYSxmLGM9M0RbXTt5LmZp
bHRlcihmdW5jdGlvbihlLHQpe3JldHVybiBlLnNlcmllc0luZGV4PTNEdCwhZT0KLmRpc2FibGVk
fSkuZm9yRWFjaChmdW5jdGlvbihuLHIpe2E9M0RlLmludGVyYWN0aXZlQmlzZWN0KG4udmFsdWVz
LGkucG9pbnRYPQpWYWx1ZSxNLngoKSksdC5oaWdobGlnaHRQb2ludChyLGEsITApO3ZhciBvPTNE
bi52YWx1ZXNbYV07aWYodHlwZW9mIG89M0Q9M0Q9CiJ1bmRlZmluZWQiKXJldHVybjt0eXBlb2Yg
cz0zRD0zRCJ1bmRlZmluZWQiJiYocz0zRG8pLHR5cGVvZiBmPTNEPTNEInVuZGVmaT0KbmVkIiYm
KGY9M0RNLnhTY2FsZSgpKE0ueCgpKG8sYSkpKTt2YXIgdT0zRHQuc3R5bGUoKT0zRD0zRCJleHBh
bmQiP28uZGlzcGxhPQp5Lnk6TS55KCkobyxhKTtjLnB1c2goe2tleTpuLmtleSx2YWx1ZTp1LGNv
bG9yOmwobixuLnNlcmllc0luZGV4KSxzdGFja2VkVmE9Cmx1ZTpvLmRpc3BsYXl9KX0pLGMucmV2
ZXJzZSgpO2lmKGMubGVuZ3RoPjIpe3ZhciBoPTNETS55U2NhbGUoKS5pbnZlcnQoaS5tbz0KdXNl
WSkscD0zREluZmluaXR5LGQ9M0RudWxsO2MuZm9yRWFjaChmdW5jdGlvbihlLHQpe2g9M0RNYXRo
LmFicyhoKTt2YXIgbj0KPTNETWF0aC5hYnMoZS5zdGFja2VkVmFsdWUueTApLHI9M0RNYXRoLmFi
cyhlLnN0YWNrZWRWYWx1ZS55KTtpZihoPj0zRG4mJmg8PQo9M0RyK24pe2Q9M0R0O3JldHVybn19
KSxkIT0zRG51bGwmJihjW2RdLmhpZ2hsaWdodD0zRCEwKX12YXIgdj0zRG4udGlja0Zvcm09CmF0
KCkoTS54KCkocyxhKSksbT0zRHQuc3R5bGUoKT0zRD0zRCJleHBhbmQiP2Z1bmN0aW9uKGUsdCl7
cmV0dXJuIGQzLmZvcm1hdD0KKCIuMSUiKShlKX06ZnVuY3Rpb24oZSx0KXtyZXR1cm4gci50aWNr
Rm9ybWF0KCkoZSl9O28udG9vbHRpcC5wb3NpdGlvbih7bGVmPQp0OmYrdS5sZWZ0LHRvcDppLm1v
dXNlWSt1LnRvcH0pLmNoYXJ0Q29udGFpbmVyKF8ucGFyZW50Tm9kZSkuZW5hYmxlZChnKS52YWw9
CnVlRm9ybWF0dGVyKG0pLmRhdGEoe3ZhbHVlOnYsc2VyaWVzOmN9KSgpLG8ucmVuZGVyR3VpZGVM
aW5lKGYpfSksby5kaXNwYXRjaD0KLm9uKCJlbGVtZW50TW91c2VvdXQiLGZ1bmN0aW9uKGUpe04u
dG9vbHRpcEhpZGUoKSx0LmNsZWFySGlnaGxpZ2h0cygpfSksTi5vPQpuKCJ0b29sdGlwU2hvdyIs
ZnVuY3Rpb24oZSl7ZyYmTyhlLF8ucGFyZW50Tm9kZSl9KSxOLm9uKCJjaGFuZ2VTdGF0ZSIsZnVu
Y3Q9CmlvbihlKXt0eXBlb2YgZS5kaXNhYmxlZCE9M0QidW5kZWZpbmVkIiYmeS5sZW5ndGg9M0Q9
M0Q9M0RlLmRpc2FibGVkLmxlbmd0aD0KJiYoeS5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7dC5kaXNh
YmxlZD0zRGUuZGlzYWJsZWRbbl19KSxTLmRpc2FibGVkPTNEZS5kaXNhPQpibGVkKSx0eXBlb2Yg
ZS5zdHlsZSE9M0QidW5kZWZpbmVkIiYmdC5zdHlsZShlLnN0eWxlKSxNLnVwZGF0ZSgpfSl9KSxN
fXZhciA9CnQ9M0RlLm1vZGVscy5zdGFja2VkQXJlYSgpLG49M0RlLm1vZGVscy5heGlzKCkscj0z
RGUubW9kZWxzLmF4aXMoKSxpPTNEZS5tbz0KZGVscy5sZWdlbmQoKSxzPTNEZS5tb2RlbHMubGVn
ZW5kKCksbz0zRGUuaW50ZXJhY3RpdmVHdWlkZWxpbmUoKSx1PTNEe3RvcDozPQowLHJpZ2h0OjI1
LGJvdHRvbTo1MCxsZWZ0OjYwfSxhPTNEbnVsbCxmPTNEbnVsbCxsPTNEZS51dGlscy5kZWZhdWx0
Q29sb3IoKSw9CmM9M0QhMCxoPTNEITAscD0zRCEwLGQ9M0QhMCx2PTNEITEsbT0zRCExLGc9M0Qh
MCx5PTNEZnVuY3Rpb24oZSx0LG4scixpKXtyZT0KdHVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIr
bisiIG9uICIrdCsiPC9wPiJ9LGIsdyxFPTNEZDMuZm9ybWF0KCIsLjJmIiksUz0KPTNEe3N0eWxl
OnQuc3R5bGUoKX0seD0zRG51bGwsVD0zRCJObyBEYXRhIEF2YWlsYWJsZS4iLE49M0RkMy5kaXNw
YXRjaCgidG9vPQpsdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdGVDaGFuZ2UiLCJjaGFuZ2VT
dGF0ZSIpLEM9M0QyNTAsaz0zRFsiU3RhY2tlZCI9CiwiU3RyZWFtIiwiRXhwYW5kZWQiXSxMPTNE
e30sQT0zRDA7bi5vcmllbnQoImJvdHRvbSIpLnRpY2tQYWRkaW5nKDcpLHIub3JpZT0KbnQodj8i
cmlnaHQiOiJsZWZ0Iikscy51cGRhdGVTdGF0ZSghMSk7dmFyIE89M0RmdW5jdGlvbihpLHMpe3Zh
ciBvPTNEaS5wb3NbPQowXSsocy5vZmZzZXRMZWZ0fHwwKSx1PTNEaS5wb3NbMV0rKHMub2Zmc2V0
VG9wfHwwKSxhPTNEbi50aWNrRm9ybWF0KCkodC54KCk9CihpLnBvaW50LGkucG9pbnRJbmRleCkp
LGY9M0RyLnRpY2tGb3JtYXQoKSh0LnkoKShpLnBvaW50LGkucG9pbnRJbmRleCkpLGw9Cj0zRHko
aS5zZXJpZXMua2V5LGEsZixpLE0pO2UudG9vbHRpcC5zaG93KFtvLHVdLGwsaS52YWx1ZTwwPyJu
IjoicyIsbnVsbCxzKT0KfTtyZXR1cm4gdC5kaXNwYXRjaC5vbigidG9vbHRpcFNob3ciLGZ1bmN0
aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK3UubGVmdCxlPQoucG9zWzFdK3UudG9wXSxOLnRvb2x0
aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKGUpe049Ci50
b29sdGlwSGlkZShlKX0pLE4ub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbigpe2cmJmUudG9vbHRp
cC5jbGVhbnVwKCl9KSxNLj0KZGlzcGF0Y2g9M0ROLE0uc3RhY2tlZD0zRHQsTS5sZWdlbmQ9M0Rp
LE0uY29udHJvbHM9M0RzLE0ueEF4aXM9M0RuLE0ueUF4aXM9Cj0zRHIsTS5pbnRlcmFjdGl2ZUxh
eWVyPTNEbyxkMy5yZWJpbmQoTSx0LCJ4IiwieSIsInNpemUiLCJ4U2NhbGUiLCJ5U2NhbGUiLD0K
InhEb21haW4iLCJ5RG9tYWluIiwieFJhbmdlIiwieVJhbmdlIiwic2l6ZURvbWFpbiIsImludGVy
YWN0aXZlIiwidXNlVm9yb25vPQppIiwib2Zmc2V0Iiwib3JkZXIiLCJzdHlsZSIsImNsaXBFZGdl
IiwiZm9yY2VYIiwiZm9yY2VZIiwiZm9yY2VTaXplIiwiaW50ZXI9CnBvbGF0ZSIpLE0ub3B0aW9u
cz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChNKSxNLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3Jl
dD0KdXJuIGFyZ3VtZW50cy5sZW5ndGg/KHUudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmlu
ZWQiP2UudG9wOnUudG9wLHUucmlnPQpodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQi
P2UucmlnaHQ6dS5yaWdodCx1LmJvdHRvbT0zRHR5cGVvZiBlLmJvdHQ9Cm9tIT0zRCJ1bmRlZmlu
ZWQiP2UuYm90dG9tOnUuYm90dG9tLHUubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5l
ZCI/ZT0KLmxlZnQ6dS5sZWZ0LE0pOnV9LE0ud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oYT0zRGUsTSk6PQphfSxNLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSxNKTpmfSxNLmNvbG9yPTNEZnU9Cm5jdGlvbihuKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGUudXRpbHMuZ2V0Q29sb3IobiksaS5jb2xvcihs
KSx0LmNvbD0Kb3IobCksTSk6bH0sTS5zaG93Q29udHJvbHM9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oYz0zRGUsTSk6PQpjfSxNLnNob3dMZWdlbmQ9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsTSk6aH0sTS5zaG93WEE9Cnhpcz0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxNKTpwfSxNLnNob3dZQXhp
cz0zRGZ1bmN0aT0Kb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9M0RlLE0pOmR9LE0u
cmlnaHRBbGlnbllBeGlzPTNEZnVuY3Rpb24oZSl7PQpyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
dj0zRGUsci5vcmllbnQoZT8icmlnaHQiOiJsZWZ0IiksTSk6dn0sTS51c2VJbnRlcmE9CmN0aXZl
R3VpZGVsaW5lPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09M0RlLGU9
M0Q9M0Q9M0QhMCYmKD0KTS5pbnRlcmFjdGl2ZSghMSksTS51c2VWb3Jvbm9pKCExKSksTSk6bX0s
TS50b29sdGlwPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyPQpndW1lbnRzLmxlbmd0aD8oeT0zRGUs
TSk6eX0sTS50b29sdGlwcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Q9Cmg/
KGc9M0RlLE0pOmd9LE0udG9vbHRpcENvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oeT0zRD0KZSxNKTp5fSxNLnN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KFM9M0RlLE0pOlN9LE0uZGVmYXVsPQp0U3RhdGU9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD0zRGUsTSk6eH0sTS5ub0RhdGE9M0RmdW5jdGk9
Cm9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhUPTNEZSxNKTpUfSxNLnRyYW5zaXRpb25E
dXJhdGlvbj0zRGZ1bmN0aW9uKD0KZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEE9M0RlLE0p
OkF9LE0uY29udHJvbHNEYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJuPQogYXJndW1lbnRzLmxlbmd0
aD8oaz0zRGUsTSk6a30sTS5jb250cm9sTGFiZWxzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW49CnRzLmxlbmd0aD90eXBlb2YgZSE9M0Qib2JqZWN0Ij9MOihMPTNEZSxNKTpMfSxyLnNldFRp
Y2tGb3JtYXQ9M0RyLnRpY2tGb3JtYT0KdCxyLnRpY2tGb3JtYXQ9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oRT0zRGUscik6RX0sTX19KCksZGVmPQppbmUoInBsdWdpbi9w
bHVnaW5zL252ZDMvbnYuZDMiLGZ1bmN0aW9uKCl7fSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252
ZDMvY289Cm1tb24vY29uZmlnIixbInBsdWdpbi9jaGFydHMvZm9ybXMvZGVmYXVsdCIsInBsdWdp
bi9wbHVnaW5zL252ZDMvbnYuZDMiXSxmdT0KbmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7
fSxlLHt0aXRsZToiIixjYXRlZ29yeToiIixsaWJyYXJ5OiJOVkQzIix0YWc6PQoic3ZnIixrZXl3
b3Jkczoic21hbGwifSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvbnZkMy9iYXIvY29uZmlnIixb
InBsdWdpbi89CmNoYXJ0cy9udmQzL2NvbW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4g
JC5leHRlbmQoITAse30sZSx7dGl0bGU6IlJlZz0KdWxhciIsY2F0ZWdvcnk6IkJhciBkaWFncmFt
cyIsY29sdW1uczp7eDp7dGl0bGU6IlZhbHVlcyBmb3IgeC1heGlzIixpc19sYWJlPQpsOiEwLGlz
X2F1dG86ITAsaXNfdW5pcXVlOiEwfSx5Ont0aXRsZToiVmFsdWVzIGZvciB5LWF4aXMiLGlzX251
bWVyaWM6ITB9fX09Cil9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvbnZkMy9iYXJfc3RhY2tlZC9j
b25maWciLFsicGx1Z2luL2NoYXJ0cy9udmQzL2NvbT0KbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUp
e3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiU3RhY2tlZCIsY2F0ZWdvcnk6PQoiQmFy
IGRpYWdyYW1zIixjb2x1bW5zOnt4Ont0aXRsZToiVmFsdWVzIGZvciB4LWF4aXMiLGlzX2xhYmVs
OiEwLGlzX2F1dG86ITA9Cixpc191bmlxdWU6ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhp
cyIsaXNfbnVtZXJpYzohMH19fSl9KSxkZWZpbmUoInBsdT0KZ2luL2NoYXJ0cy9udmQzL2Jhcl9o
b3Jpem9udGFsL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL252ZDMvY29tbW9uL2NvbmZpZyJdPQos
ZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJIb3Jpem9udGFsIixj
YXRlZ29yeToiQmFyIGRpYWc9CnJhbXMiLHNldHRpbmdzOnt4X2F4aXNfdHlwZTp7aW5pdDoiaGlk
ZSJ9fSxjb2x1bW5zOnt4Ont0aXRsZToiVmFsdWVzIGZvciB4LT0KYXhpcyIsaXNfbGFiZWw6ITAs
aXNfYXV0bzohMCxpc191bmlxdWU6ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhpcyIsaXNf
PQpudW1lcmljOiEwfX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9udmQzL2Jhcl9ob3Jpem9u
dGFsX3N0YWNrZWQvY29uZmlnIiw9ClsicGx1Z2luL2NoYXJ0cy9udmQzL2NvbW1vbi9jb25maWci
XSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dD0KaXRsZToiU3RhY2tlZCBo
b3Jpem9udGFsIixjYXRlZ29yeToiQmFyIGRpYWdyYW1zIixzZXR0aW5nczp7eF9heGlzX3R5cGU6
e2luPQppdDoiaGlkZSJ9fSxjb2x1bW5zOnt4Ont0aXRsZToiVmFsdWVzIGZvciB4LWF4aXMiLGlz
X2xhYmVsOiEwLGlzX2F1dG86ITAsaXM9Cl91bmlxdWU6ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9y
IHktYXhpcyIsaXNfbnVtZXJpYzohMH19fSl9KSxkZWZpbmUoInBsdWdpbj0KL2NoYXJ0cy9udmQz
L2xpbmVfZm9jdXMvY29uZmlnIixbInBsdWdpbi9jaGFydHMvbnZkMy9jb21tb24vY29uZmlnIl0s
ZnVuY3RpPQpvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6IkxpbmUgd2l0aCBm
b2N1cyIsY2F0ZWdvcnk6Ik90aGVycyIsem89Cm9tYWJsZToibmF0aXZlIixjb2x1bW5zOnt4Ont0
aXRsZToiVmFsdWVzIGZvciB4LWF4aXMiLGlzX2xhYmVsOiEwLGlzX2F1dG86IT0KMCxpc191bmlx
dWU6ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhpcyIsaXNfbnVtZXJpYzohMH19fSl9KSxk
ZWZpbmUoInBsPQp1Z2luL2NoYXJ0cy9udmQzL3BpZS9jb25maWciLFsicGx1Z2luL3BsdWdpbnMv
bnZkMy9udi5kMyJdLGZ1bmN0aW9uKCl7cmV0dXI9Cm4gJC5leHRlbmQoITAse30se3RpdGxlOiJQ
aWUgY2hhcnQiLGNhdGVnb3J5OiJBcmVhIGNoYXJ0cyIsbGlicmFyeToiTlZEMyIsdD0KYWc6InN2
ZyIsa2V5d29yZHM6InNtYWxsIixjb2x1bW5zOntsYWJlbDp7dGl0bGU6IkxhYmVscyIsaXNfbGFi
ZWw6ITAsaXNfYXV0PQpvOiEwfSx5Ont0aXRsZToiVmFsdWVzIixpc19udW1lcmljOiEwfX0sc2V0
dGluZ3M6e21haW5fc2VwYXJhdG9yOnt0eXBlOiJzZXA9CmFyYXRvciIsdGl0bGU6IlBpZSBjaGFy
dCBzZXR0aW5ncyJ9LGRvbnV0X3JhdGlvOnt0aXRsZToiRG9udXQgcmF0aW8iLGluZm86Ij0KRGV0
ZXJtaW5lIGhvdyBsYXJnZSB0aGUgZG9udXQgaG9sZSB3aWxsIGJlLiIsdHlwZToic2VsZWN0Iixp
bml0OiIwLjUiLGRhdGE6PQpbe2xhYmVsOiI1MCUiLHZhbHVlOiIwLjUifSx7bGFiZWw6IjI1JSIs
dmFsdWU6IjAuMjUifSx7bGFiZWw6IjEwJSIsdmFsdWU6IjA9Ci4xMCJ9LHtsYWJlbDoiMCUiLHZh
bHVlOiIwIn1dfSxzaG93X2xlZ2VuZDp7dGl0bGU6IlNob3cgbGVnZW5kIixpbmZvOiJXb3VsZD0K
IHlvdSBsaWtlIHRvIGFkZCBhIGxlZ2VuZD8iLHR5cGU6InJhZGlvYnV0dG9uIixpbml0OiJmYWxz
ZSIsZGF0YTpbe2xhYmVsOiJZPQplcyIsdmFsdWU6InRydWUifSx7bGFiZWw6Ik5vIix2YWx1ZToi
ZmFsc2UifV19LGxhYmVsX3NlcGFyYXRvcjp7dHlwZToic2VwYXI9CmF0b3IiLHRpdGxlOiJMYWJl
bCBzZXR0aW5ncyJ9LGxhYmVsX3R5cGU6e3RpdGxlOiJEb251dCBsYWJlbCIsaW5mbzoiV2hhdCB3
bz0KdWxkIHlvdSBsaWtlIHRvIHNob3cgZm9yIGVhY2ggc2xpY2U/Iix0eXBlOiJzZWxlY3QiLGlu
aXQ6InBlcmNlbnQiLGRhdGE6W3tsPQphYmVsOiItLSBOb3RoaW5nIC0tIix2YWx1ZToiaGlkZSIs
aGlkZToibGFiZWxfb3V0c2lkZSJ9LHtsYWJlbDoiTGFiZWwgY29sdW09Cm4iLHZhbHVlOiJrZXki
LHNob3c6ImxhYmVsX291dHNpZGUifSx7bGFiZWw6IlZhbHVlIGNvbHVtbiIsdmFsdWU6InZhbHVl
IixzaD0Kb3c6ImxhYmVsX291dHNpZGUifSx7bGFiZWw6IlBlcmNlbnRhZ2UiLHZhbHVlOiJwZXJj
ZW50IixzaG93OiJsYWJlbF9vdXRzaWRlPQoifV19LGxhYmVsX291dHNpZGU6e3RpdGxlOiJTaG93
IG91dHNpZGUiLGluZm86IldvdWxkIHlvdSBsaWtlIHRvIHNob3cgbGFiZWw9CnMgb3V0c2lkZSB0
aGUgZG9udXQ/Iix0eXBlOiJyYWRpb2J1dHRvbiIsaW5pdDoiZmFsc2UiLGRhdGE6W3tsYWJlbDoi
WWVzIix2YT0KbHVlOiJ0cnVlIn0se2xhYmVsOiJObyIsdmFsdWU6ImZhbHNlIn1dfSx1c2VfcGFu
ZWxzOntpbml0OiJ0cnVlIixoaWRlOiEwfX19PQopfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252
ZDMvc3RhY2tlZGFyZWFfZnVsbC9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9udmQ9CjMvY29tbW9u
L2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiRXhw
YW5kZWQiLHpvbz0KbWFibGU6ITAsY2F0ZWdvcnk6IkFyZWEgY2hhcnRzIixrZXl3b3JkczoiZGVm
YXVsdCBzbWFsbCIsY29sdW1uczp7eDp7dGl0bGU6PQoiVmFsdWVzIGZvciB4LWF4aXMiLGlzX2xh
YmVsOiEwLGlzX2F1dG86ITAsaXNfdW5pcXVlOiEwfSx5Ont0aXRsZToiVmFsdWVzIGY9Cm9yIHkt
YXhpcyIsaXNfbnVtZXJpYzohMH19fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvbnZkMy9zdGFj
a2VkYXJlYV9zdHJlYT0KbS9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9udmQzL2NvbW1vbi9jb25m
aWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoPQohMCx7fSxlLHt0aXRsZToiU3RyZWFt
IixjYXRlZ29yeToiQXJlYSBjaGFydHMiLHpvb21hYmxlOiEwLGtleXdvcmRzOiJkZWZhdWw9CnQg
c21hbGwiLHNob3dtYXhtaW46ITAsY29sdW1uczp7eDp7dGl0bGU6IlZhbHVlcyBmb3IgeC1heGlz
Iixpc19sYWJlbDohMCxpcz0KX2F1dG86ITAsaXNfdW5pcXVlOiEwfSx5Ont0aXRsZToiVmFsdWVz
IGZvciB5LWF4aXMiLGlzX251bWVyaWM6ITB9fX0pfSksZGVmPQppbmUoInBsdWdpbi9jaGFydHMv
bnZkMy9oaXN0b2dyYW0vY29uZmlnIixbInBsdWdpbi9jaGFydHMvbnZkMy9jb21tb24vY29uZmk9
CmciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6Ikhpc3RvZ3Jh
bSIsY2F0ZWdvcnk6IkRhdGEgcD0Kcm9jZXNzaW5nIChyZXF1aXJlcyAnY2hhcnRzJyB0b29sIGZy
b20gVG9vbHNoZWQpIixleGVjdXRlOiJoaXN0b2dyYW0iLGtleXdvPQpyZHM6InNtYWxsIG1lZGl1
bSBsYXJnZSIsY29sdW1uczp7eTp7dGl0bGU6Ik9ic2VydmF0aW9ucyIsaXNfbnVtZXJpYzohMH19
LHM9CmV0dGluZ3M6e3hfYXhpc19sYWJlbDp7aW5pdDoiVmFsdWVzIn0seV9heGlzX2xhYmVsOntp
bml0OiJEZW5zaXR5In0seV9heGlzXz0KdHlwZTp7aW5pdDoiZiJ9LHlfYXhpc19wcmVjaXNpb246
e2luaXQ6Ii4yIn19fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvbnZkPQozL2xpbmUvY29uZmln
IixbInBsdWdpbi9jaGFydHMvbnZkMy9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJu
ICQuZXg9CnRlbmQoITAse30sZSx7dGl0bGU6IkxpbmUgY2hhcnQiLGNhdGVnb3J5OiJPdGhlcnMi
LHpvb21hYmxlOiEwLGNvbHVtbnM6e3g6ez0KdGl0bGU6IlZhbHVlcyBmb3IgeC1heGlzIixpc19s
YWJlbDohMCxpc19hdXRvOiEwLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6IlZhPQpsdWVzIGZvciB5
LWF4aXMiLGlzX251bWVyaWM6ITB9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252ZDMvc2Nh
dHRlci9jb249CmZpZyIsWyJwbHVnaW4vY2hhcnRzL252ZDMvY29tbW9uL2NvbmZpZyJdLGZ1bmN0
aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fT0KLGUse3RpdGxlOiJTY2F0dGVyIHBsb3QiLGNh
dGVnb3J5OiJPdGhlcnMiLHpvb21hYmxlOiEwLGNvbHVtbnM6e3g6e3RpdGxlOiJWPQphbHVlcyBm
b3IgeC1heGlzIixpc19udW1lcmljOiEwfSx5Ont0aXRsZToiVmFsdWVzIGZvciB5LWF4aXMiLGlz
X251bWVyaWM6ITA9Cn19fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvbnZkMy9zdGFja2VkYXJl
YS9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9udmQzLz0KY29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9u
KGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiUmVndWxhciIsem9vbWFiPQpsZToh
MCxjYXRlZ29yeToiQXJlYSBjaGFydHMiLGtleXdvcmRzOiJkZWZhdWx0IHNtYWxsIixjb2x1bW5z
Ont4Ont0aXRsZToiVmE9Cmx1ZXMgZm9yIHgtYXhpcyIsaXNfbGFiZWw6ITAsaXNfYXV0bzohMCxp
c191bmlxdWU6ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yID0KeS1heGlzIixpc19udW1lcmljOiEw
fX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9qcXBsb3QvY29tbW9uL2NvbmZpZyIsWyJwPQps
dWdpbi9jaGFydHMvZm9ybXMvZGVmYXVsdCJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCgh
MCx7fSxlLHt0aXRsZToiIiw9CmNhdGVnb3J5OiIiLGxpYnJhcnk6ImpxUGxvdCIsdGFnOiJkaXYi
LHpvb21hYmxlOiEwLGtleXdvcmRzOiJtZWRpdW0iLHNldHRpbj0KZ3M6e3NlcGFyYXRvcl9ncmlk
Ont0aXRsZToiR3JpZHMiLHR5cGU6InNlcGFyYXRvciJ9LHhfYXhpc19ncmlkOnt0aXRsZToiQXhp
PQpzIGdyaWQiLGluZm86IldvdWxkIHlvdSBsaWtlIHRvIHNob3cgZ3JpZCBsaW5lcyBmb3IgdGhl
IFggYXhpcz8iLHR5cGU6InJhZGk9Cm9idXR0b24iLGluaXQ6ImZhbHNlIixkYXRhOlt7bGFiZWw6
Ik9uIix2YWx1ZToidHJ1ZSJ9LHtsYWJlbDoiT2ZmIix2YWx1ZToiZj0KYWxzZSJ9XX0seV9heGlz
X2dyaWQ6e3RpdGxlOiJBeGlzIGdyaWQiLGluZm86IldvdWxkIHlvdSBsaWtlIHRvIHNob3cgZ3Jp
ZCBsPQppbmVzIGZvciB0aGUgWSBheGlzPyIsdHlwZToicmFkaW9idXR0b24iLGluaXQ6InRydWUi
LGRhdGE6W3tsYWJlbDoiT24iLHZhbHU9CmU6InRydWUifSx7bGFiZWw6Ik9mZiIsdmFsdWU6ImZh
bHNlIn1dfX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9qcXBsb3QvYj0KYXIvY29uZmlnIixb
InBsdWdpbi9jaGFydHMvanFwbG90L2NvbW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4g
JC5leHRlPQpuZCghMCx7fSxlLHt0aXRsZToiUmVndWxhciIsY2F0ZWdvcnk6IkJhciBkaWFncmFt
cyIsY29sdW1uczp7eDp7dGl0bGU6IlZhbHU9CmVzIGZvciB4LWF4aXMiLGlzX2xhYmVsOiEwLGlz
X2F1dG86ITAsaXNfdW5pcXVlOiEwfSx5Ont0aXRsZToiVmFsdWVzIGZvciB5LT0KYXhpcyIsaXNf
bnVtZXJpYzohMH19fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvanFwbG90L2xpbmUvY29uZmln
IixbInBsdWdpPQpuL2NoYXJ0cy9qcXBsb3QvY29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3Jl
dHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZTo9CiJMaW5lIGNoYXJ0IixjYXRlZ29yeToiT3Ro
ZXJzIixjb2x1bW5zOnt4Ont0aXRsZToiVmFsdWVzIGZvciB4LWF4aXMiLGlzX2xhYj0KZWw6ITAs
aXNfYXV0bzohMCxpc191bmlxdWU6ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhpcyIsaXNf
bnVtZXJpYzohMH19PQp9KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9qcXBsb3Qvc2NhdHRlci9j
b25maWciLFsicGx1Z2luL2NoYXJ0cy9qcXBsb3QvY289Cm1tb24vY29uZmlnIl0sZnVuY3Rpb24o
ZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJTY2F0dGVyIHBsb3QiLGNhdD0KZWdv
cnk6Ik90aGVycyIsY29sdW1uczp7eDp7dGl0bGU6IlZhbHVlcyBmb3IgeC1heGlzIixpc19udW1l
cmljOiEwfSx5Ont0aXRsPQplOiJWYWx1ZXMgZm9yIHktYXhpcyIsaXNfbnVtZXJpYzohMH19LHNl
dHRpbmdzOnt4X2F4aXNfZ3JpZDp7aW5pdDoidHJ1ZSJ9fX09Cil9KSxkZWZpbmUoInBsdWdpbi9j
aGFydHMvanFwbG90L2JveHBsb3QvY29uZmlnIixbInBsdWdpbi9jaGFydHMvanFwbG90L2NvbT0K
bW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToi
Qm94IHBsb3QiLGNhdGVnb3J5PQo6IkRhdGEgcHJvY2Vzc2luZyAocmVxdWlyZXMgJ2NoYXJ0cycg
dG9vbCBmcm9tIFRvb2xzaGVkKSIsbGlicmFyeToianFQbG90Iiw9CnRhZzoiZGl2IixleGVjdXRl
OiJib3hwbG90IixrZXl3b3Jkczoic21hbGwgbWVkaXVtIGxhcmdlIixjb2x1bW5zOnt5Ont0aXRs
ZT0KOiJPYnNlcnZhdGlvbnMiLGlzX251bWVyaWM6ITB9fSxzZXR0aW5nczp7c2hvd19sZWdlbmQ6
e2luaXQ6ImZhbHNlIn19fSl9KSxkPQplZmluZSgicGx1Z2luL2NoYXJ0cy9qcXBsb3QvaGlzdG9n
cmFtX2Rpc2NyZXRlL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL2pxcGw9Cm90L2NvbW1vbi9jb25m
aWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6IkRpc2NyZXRl
IEhpcz0KdG9ncmFtIixjYXRlZ29yeToiRGF0YSBwcm9jZXNzaW5nIChyZXF1aXJlcyAnY2hhcnRz
JyB0b29sIGZyb20gVG9vbHNoZWQpIixlPQp4ZWN1dGU6Imhpc3RvZ3JhbWRpc2NyZXRlIixrZXl3
b3Jkczoic21hbGwgbWVkaXVtIGxhcmdlIixjb2x1bW5zOnt4Ont0aXRsZTo9CiJPYnNlcnZhdGlv
bnMiLGlzX2xhYmVsOiEwfX0sc2V0dGluZ3M6e3hfYXhpc19sYWJlbDp7aW5pdDoiQnJlYWtzIn0s
eV9heGlzXz0KbGFiZWw6e2luaXQ6IkRlbnNpdHkifX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0
cy9vdGhlcnMvaGVhdG1hcC9jb25maWciLFsiPQpwbHVnaW4vY2hhcnRzL2Zvcm1zL2RlZmF1bHQi
XSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6Ikg9CmVhdG1hcCIs
Y2F0ZWdvcnk6Ik90aGVycyIsbGlicmFyeToiQ3VzdG9tIix0YWc6InN2ZyIsa2V5d29yZHM6InNt
YWxsIix6b29tYT0KYmxlOiEwLGNvbHVtbnM6e3g6e3RpdGxlOiJDb2x1bW4gbGFiZWxzIixpc19s
YWJlbDohMCxpc19udW1lcmljOiEwLGlzX3VuaXF1PQplOiEwfSx5Ont0aXRsZToiUm93IGxhYmVs
cyIsaXNfbGFiZWw6ITAsaXNfbnVtZXJpYzohMCxpc191bmlxdWU6ITB9LHo6e3RpdGw9CmU6Ik9i
c2VydmF0aW9uIixpc19udW1lcmljOiEwfX0sc2V0dGluZ3M6e3VzZV9wYW5lbHM6e2luaXQ6InRy
dWUiLGhpZGU6ITB9LD0KY29sb3Jfc2V0Ont0aXRsZToiQ29sb3Igc2NoZW1lIixpbmZvOiJTZWxl
Y3QgYSBjb2xvciBzY2hlbWUgZm9yIHlvdXIgaGVhdG1hPQpwIix0eXBlOiJzZWxlY3QiLGluaXQ6
ImpldCIsZGF0YTpbe2xhYmVsOiJDb2xkLXRvLUhvdCIsdmFsdWU6ImhvdCJ9LHtsYWJlbDo9CiJD
b29sIix2YWx1ZToiY29vbCJ9LHtsYWJlbDoiQ29wcGVyIix2YWx1ZToiY29wcGVyIn0se2xhYmVs
OiJHcmF5IHNjYWxlIix2YT0KbHVlOiJncmF5In0se2xhYmVsOiJKZXQiLHZhbHVlOiJqZXQifSx7
bGFiZWw6Ik5vLUdyZWVuIix2YWx1ZToibm9fZ3JlZW4ifSx7PQpsYWJlbDoiT2NlYW4iLHZhbHVl
OiJvY2VhbiJ9LHtsYWJlbDoiUG9sYXIiLHZhbHVlOiJwb2xhciJ9LHtsYWJlbDoiUmVkLXRvLUc9
CnJlZW4iLHZhbHVlOiJyZWRncmVlbiJ9LHtsYWJlbDoiUmVkLXRvLWdyZWVuIChzYXR1cmF0ZWQp
Iix2YWx1ZToicmVkMmdyZWVuIj0KfSx7bGFiZWw6IlJlbGllZiIsdmFsdWU6InJlbGllZiJ9LHts
YWJlbDoiU2Vpc21vZ3JhcGgiLHZhbHVlOiJzZWlzIn0se2xhYmVsPQo6IlNlYWxhbmQiLHZhbHVl
OiJzZWFsYW5kIn0se2xhYmVsOiJTcGxpdCIsdmFsdWU6InNwbGl0In0se2xhYmVsOiJXeXNpd3ln
Iiw9CnZhbHVlOiJ3eXNpd3lnIn1dfSx1cmxfdGVtcGxhdGU6e3RpdGxlOiJVcmwgdGVtcGxhdGUi
LGluZm86IkVudGVyIGEgdXJsIHRvID0KbGluayB0aGUgbGFiZWxzIHdpdGggZXh0ZXJuYWwgc291
cmNlcy4gVXNlIF9fTEFCRUxfXyBhcyBwbGFjZWhvbGRlci4iLHR5cGU6PQoidGV4dCIsaW5pdDoi
IixwbGFjZWhvbGRlcjoiaHR0cDovL3NvbWV1cmwuY29tP2lkPTNEX19MQUJFTF9fIn19fSl9KSxk
ZWZpbmU9CigicGx1Z2luL2NoYXJ0cy9vdGhlcnMvaGVhdG1hcF9jbHVzdGVyL2NvbmZpZyIsWyJw
bHVnaW4vY2hhcnRzL290aGVycy9oZWF0bT0KYXAvY29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJu
ICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJDbHVzdGVyZWQgSGVhdG1hcCIsPQpjYXRlZ29yeToi
RGF0YSBwcm9jZXNzaW5nIChyZXF1aXJlcyAnY2hhcnRzJyB0b29sIGZyb20gVG9vbHNoZWQpIixl
eGVjdXRlOiI9CmhlYXRtYXAiLGtleXdvcmRzOiJzbWFsbCBtZWRpdW0gbGFyZ2UifSl9KSxkZWZp
bmUoInBsdWdpbi9jaGFydHMvdHlwZXMiLFsicD0KbHVnaW4vY2hhcnRzL252ZDMvYmFyL2NvbmZp
ZyIsInBsdWdpbi9jaGFydHMvbnZkMy9iYXJfc3RhY2tlZC9jb25maWciLCJwbHVnPQppbi9jaGFy
dHMvbnZkMy9iYXJfaG9yaXpvbnRhbC9jb25maWciLCJwbHVnaW4vY2hhcnRzL252ZDMvYmFyX2hv
cml6b250YWxfc3Q9CmFja2VkL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvbnZkMy9saW5lX2ZvY3Vz
L2NvbmZpZyIsInBsdWdpbi9jaGFydHMvbnZkMy9waT0KZS9jb25maWciLCJwbHVnaW4vY2hhcnRz
L252ZDMvc3RhY2tlZGFyZWFfZnVsbC9jb25maWciLCJwbHVnaW4vY2hhcnRzL252ZDMvPQpzdGFj
a2VkYXJlYV9zdHJlYW0vY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9udmQzL2hpc3RvZ3JhbS9jb25m
aWciLCJwbHVnaW4vY2g9CmFydHMvbnZkMy9saW5lL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvbnZk
My9zY2F0dGVyL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvbj0KdmQzL3N0YWNrZWRhcmVhL2NvbmZp
ZyIsInBsdWdpbi9jaGFydHMvanFwbG90L2Jhci9jb25maWciLCJwbHVnaW4vY2hhcnRzL2pxPQpw
bG90L2xpbmUvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9qcXBsb3Qvc2NhdHRlci9jb25maWciLCJw
bHVnaW4vY2hhcnRzL2pxcGw9Cm90L2JveHBsb3QvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9qcXBs
b3QvaGlzdG9ncmFtX2Rpc2NyZXRlL2NvbmZpZyIsInBsdWdpbj0KL2NoYXJ0cy9vdGhlcnMvaGVh
dG1hcC9jb25maWciLCJwbHVnaW4vY2hhcnRzL290aGVycy9oZWF0bWFwX2NsdXN0ZXIvY29uZmln
PQoiXSxmdW5jdGlvbihlLHQsbixyLGkscyxvLHUsYSxmLGwsYyxoLHAsZCx2LG0sZyx5KXtyZXR1
cm4gQmFja2JvbmUuTW9kZWwuZXg9CnRlbmQoe2RlZmF1bHRzOntudmQzX2JhcjplLG52ZDNfYmFy
X3N0YWNrZWQ6dCxudmQzX2Jhcl9ob3Jpem9udGFsOm4sbnZkM19iYT0Kcl9ob3Jpem9udGFsX3N0
YWNrZWQ6cixudmQzX2xpbmVfZm9jdXM6aSxudmQzX3N0YWNrZWRhcmVhOmMsbnZkM19zdGFja2Vk
YXJlPQphX2Z1bGw6byxudmQzX3N0YWNrZWRhcmVhX3N0cmVhbTp1LG52ZDNfcGllOnMsbnZkM19s
aW5lOmYsbnZkM19zY2F0dGVyOmwsbnY9CmQzX2hpc3RvZ3JhbTphLGpxcGxvdF9iYXI6aCxqcXBs
b3RfaGlzdG9ncmFtX2Rpc2NyZXRlOm0sanFwbG90X2xpbmU6cCxqcXBsbz0KdF9zY2F0dGVyOmQs
anFwbG90X2JveHBsb3Q6dixvdGhlcnNfaGVhdG1hcDpnLG90aGVyc19oZWF0bWFwX2NsdXN0ZXI6
eX19KX0pPQosZGVmaW5lKCJwbHVnaW4vYXBwIixbIm12Yy91aS91aS1tb2RhbCIsIm12Yy91aS91
aS1wb3J0bGV0IiwibXZjL3VpL3VpLW1pc2M9CiIsInV0aWxzL3V0aWxzIiwicGx1Z2luL2xpYnJh
cnkvam9icyIsInBsdWdpbi9saWJyYXJ5L2RhdGFzZXRzIiwicGx1Z2luL2xpYj0KcmFyeS9zdG9y
YWdlIiwidXRpbHMvZGVmZXJyZWQiLCJwbHVnaW4vdmlld3Mvdmlld2VyIiwicGx1Z2luL3ZpZXdz
L2VkaXRvciIsPQoicGx1Z2luL21vZGVscy9jb25maWciLCJwbHVnaW4vbW9kZWxzL2NoYXJ0Iiwi
cGx1Z2luL2NoYXJ0cy90eXBlcyJdLGZ1bmN0aW89Cm4oZSx0LG4scixpLHMsbyx1LGEsZixsLGMs
aCl7cmV0dXJuIEJhY2tib25lLlZpZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aT0Kb24odCl7
dGhpcy5vcHRpb25zPTNEdCxHYWxheHkmJkdhbGF4eS5tb2RhbD90aGlzLm1vZGFsPTNER2FsYXh5
Lm1vZGFsOnRoaXMuPQptb2RhbD0zRG5ldyBlLlZpZXcsdGhpcy5jb25maWc9M0RuZXcgbCx0aGlz
LnR5cGVzPTNEbmV3IGgsdGhpcy5jaGFydD0zRG5ldyA9CmMsdGhpcy5qb2JzPTNEbmV3IGkodGhp
cyksdGhpcy5kYXRhc2V0cz0zRG5ldyBzKHRoaXMpLHRoaXMuc3RvcmFnZT0zRG5ldyBvKD0KdGhp
cyksdGhpcy5kZWZlcnJlZD0zRG5ldyB1LHRoaXMudmlld2VyX3ZpZXc9M0RuZXcgYSh0aGlzKSx0
aGlzLmVkaXRvcl92aWV3PQo9M0RuZXcgZih0aGlzKSx0aGlzLiRlbC5hcHBlbmQodGhpcy52aWV3
ZXJfdmlldy4kZWwpLHRoaXMuJGVsLmFwcGVuZCh0aGlzLmU9CmRpdG9yX3ZpZXcuJGVsKTtpZigh
dGhpcy5zdG9yYWdlLmxvYWQoKSl0aGlzLmdvKCJlZGl0b3IiKTtlbHNle3RoaXMuZ28oInZpZT0K
d2VyIik7dmFyIG49M0R0aGlzO3RoaXMuZGVmZXJyZWQuZXhlY3V0ZShmdW5jdGlvbigpe24uY2hh
cnQudHJpZ2dlcigicmVkcmF3PQoiKX0pfX0sZ286ZnVuY3Rpb24oZSl7JCgiLnRvb2x0aXAiKS5o
aWRlKCk7c3dpdGNoKGUpe2Nhc2UiZWRpdG9yIjp0aGlzLmVkaXQ9Cm9yX3ZpZXcuc2hvdygpLHRo
aXMudmlld2VyX3ZpZXcuaGlkZSgpO2JyZWFrO2Nhc2Uidmlld2VyIjp0aGlzLmVkaXRvcl92aWV3
Lj0KaGlkZSgpLHRoaXMudmlld2VyX3ZpZXcuc2hvdygpfX0sY2hhcnRQYXRoOmZ1bmN0aW9uKGUp
e3ZhciB0PTNEZS5zcGxpdCgvXyguPQorKS8pO3JldHVybiB0Lmxlbmd0aD49M0QyP3RbMF0rIi8i
K3RbMV06KGNvbnNvbGUuZGVidWcoIkZBSUxFRCBBcHA6Y2hhcnRQYXQ9CmgoKSAtIEludmFsaWQg
Zm9ybWF0OiAiK2UpLHVuZGVmaW5lZCl9fSl9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CgpkaWZmIC1yIDNiYmVhNGZmZjlmMjJhZjA1NjVlMTM2ZGJhNjU5OTI0MDNjMGE5YTUgLXIgMzEz
NTdlZGYyNjBlYTZiMjU5ZGM2ODI9CjMwZjMwODNiM2YwZmFmY2EwIGNvbmZpZy9wbHVnaW5zL3Zp
c3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvdmlld3MvZ3JvdXAuanMKLS0tIGEvY29uZmlnL3Bs
dWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy92aWV3cy9ncm91cC5qcworKysgYi9j
b25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL3ZpZXdzL2dyb3VwLmpz
CkBAIC0yNTQsNyArMjU0LDkgQEAKICAgICAgICAgaWYgKGtleV90ZXh0ID0zRD0zRD0zRCB1bmRl
ZmluZWQpIHsKICAgICAgICAgICAgIGtleV90ZXh0ID0zRCAnJzsKICAgICAgICAgfQotICAgICAg
ICB0aGlzLmdyb3VwX2tleS52YWx1ZShrZXlfdGV4dCk7CisgICAgICAgIGlmIChrZXlfdGV4dCAh
PTNEIHRoaXMuZ3JvdXBfa2V5LnZhbHVlKCkpIHsKKyAgICAgICAgICAgIHRoaXMuZ3JvdXBfa2V5
LnZhbHVlKGtleV90ZXh0KTsKKyAgICAgICAgfQogICAgIH0KIH0pOwo9MjAKCmRpZmYgLXIgM2Ji
ZWE0ZmZmOWYyMmFmMDU2NWUxMzZkYmE2NTk5MjQwM2MwYTlhNSAtciAzMTM1N2VkZjI2MGVhNmIy
NTlkYzY4Mj0KMzBmMzA4M2IzZjBmYWZjYTAgbGliL2dhbGF4eS90b29scy93cmFwcGVycy5weQot
LS0gYS9saWIvZ2FsYXh5L3Rvb2xzL3dyYXBwZXJzLnB5CisrKyBiL2xpYi9nYWxheHkvdG9vbHMv
d3JhcHBlcnMucHkKQEAgLTI2Miw3ICsyNjIsNyBAQAogICAgICAgICByZXR1cm4gRGF0YXNldEZp
bGVuYW1lV3JhcHBlciggZGF0YXNldCwgKip3cmFwcGVyX2t3ZHMgKQo9MjAKPTIwCi1jbGFzcyBE
YXRhc2V0TGlzdFdyYXBwZXIoIGxpc3QsIEhhc0RhdGFzZXRzICk6CitjbGFzcyBEYXRhc2V0TGlz
dFdyYXBwZXIoIGxpc3QsIFRvb2xQYXJhbWV0ZXJWYWx1ZVdyYXBwZXIsIEhhc0RhdGFzZXRzICk6
CiAgICAgIiIiCiAgICAgIiIiCiAgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBkYXRhc2V0cywgZGF0
YXNldF9wYXRocz0zRFtdLCAqKmt3YXJncyApOgpAQCAtMjc3LDcgKzI3Nyw3IEBACiAgICAgICAg
IHJldHVybiAnLCcuam9pbiggbWFwKCBzdHIsIHNlbGYgKSApCj0yMAo9MjAKLWNsYXNzIERhdGFz
ZXRDb2xsZWN0aW9uV3JhcHBlciggb2JqZWN0LCBIYXNEYXRhc2V0cyApOgorY2xhc3MgRGF0YXNl
dENvbGxlY3Rpb25XcmFwcGVyKCBUb29sUGFyYW1ldGVyVmFsdWVXcmFwcGVyLCBIYXNEYXRhc2V0
cyApOgo9MjAKICAgICBkZWYgX19pbml0X18oIHNlbGYsIGhhc19jb2xsZWN0aW9uLCBkYXRhc2V0
X3BhdGhzPTNEW10sICoqa3dhcmdzICk6CiAgICAgICAgIHN1cGVyKERhdGFzZXRDb2xsZWN0aW9u
V3JhcHBlciwgc2VsZikuX19pbml0X18oKQoKZGlmZiAtciAzYmJlYTRmZmY5ZjIyYWYwNTY1ZTEz
NmRiYTY1OTkyNDAzYzBhOWE1IC1yIDMxMzU3ZWRmMjYwZWE2YjI1OWRjNjgyPQozMGYzMDgzYjNm
MGZhZmNhMCBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2NvbnRyb2xsZXJzL3VzZXIucHkKLS0t
IGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9sbGVycy91c2VyLnB5CisrKyBiL2xp
Yi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMvdXNlci5weQpAQCAtMTE2Nyw4ICsx
MTY3LDYgQEAKICAgICAgICAgICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCiAg
ICAgICAgICAgICAgICAgICAgIHRyYW5zLmxvZ19ldmVudCggIlVzZXIgcmVzZXQgcGFzc3dvcmQ6
ICVzIiAlIGVtYWlsICkKICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAg
ICAgICAgICAgICAgICAgICBzdGF0dXMgPTNEICdlcnJvcicKLSAgICAgICAgICAgICAgICAgICAg
bWVzc2FnZSA9M0QgJ0ZhaWxlZCB0byByZXNldCBwYXNzd29yZDogJXMnICUgc3RyKCBlICkKICAg
ICAgICAgICAgICAgICAgICAgbG9nLmV4Y2VwdGlvbiggJ1VuYWJsZSB0byByZXNldCBwYXNzd29y
ZC4nICkKICAgICAgICAgcmV0dXJuIHRyYW5zLmZpbGxfdGVtcGxhdGUoICcvdXNlci9yZXNldF9w
YXNzd29yZC5tYWtvJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3Nh
Z2U9M0RtZXNzYWdlLAoKZGlmZiAtciAzYmJlYTRmZmY5ZjIyYWYwNTY1ZTEzNmRiYTY1OTkyNDAz
YzBhOWE1IC1yIDMxMzU3ZWRmMjYwZWE2YjI1OWRjNjgyPQozMGYzMDgzYjNmMGZhZmNhMCB0ZW1w
bGF0ZXMvdXNlci9jaGFuZ2VfcGFzc3dvcmQubWFrbwotLS0gYS90ZW1wbGF0ZXMvdXNlci9jaGFu
Z2VfcGFzc3dvcmQubWFrbworKysgYi90ZW1wbGF0ZXMvdXNlci9jaGFuZ2VfcGFzc3dvcmQubWFr
bwpAQCAtMTAsNyArMTAsNyBAQAogICAgICAgICA8ZGl2IGNsYXNzPTNEInRvb2xGb3JtVGl0bGUi
PkNoYW5nZSBQYXNzd29yZDwvZGl2PgogICAgICAgICAlaWYgdG9rZW46CiAgICAgICAgICAgICA8
aW5wdXQgdHlwZT0zRCJoaWRkZW4iIG5hbWU9M0QidG9rZW4iIHZhbHVlPTNEIiR7dG9rZW58aH0i
Lz4KLSAgICAgICAgJWVsaWYgbm90IGlzX2FkbWluOgorICAgICAgICAlZWxzZToKICAgICAgICAg
ICAgIDxkaXYgY2xhc3M9M0QiZm9ybS1yb3ciPjxsYWJlbD5DdXJyZW50IHBhc3N3b3JkOjwvbGFi
ZWw+PGlucHV0PQogdHlwZT0zRCJwYXNzd29yZCIgbmFtZT0zRCJjdXJyZW50IiB2YWx1ZT0zRCIi
IHNpemU9M0QiNDAiLz4KCgpodHRwczovL2JpdGJ1Y2tldC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50
cmFsL2NvbW1pdHMvMTQ3OTZhYzg2N2ViLwpDaGFuZ2VzZXQ6ICAgMTQ3OTZhYzg2N2ViClVzZXI6
ICAgICAgICBjYXJsZmViZXJoYXJkCkRhdGU6ICAgICAgICAyMDE1LTAxLTE0IDIyOjI2OjQxKzAw
OjAwClN1bW1hcnk6ICAgICBSZW1vdmUgcmVsYXRpdmUgaW1wb3J0cyBpbiBtYW5hZ2VyczsgZmFj
dG9yIG91dCBjaXJjdWxhciByZWYgaT0KbiBIREFNYW5hZ2VyIHVzaW5nIHNsaWdodCBjb2RlIGR1
cDsgRmlsbCBvdXQgZGVzZXJpYWxpemVycyBhbmQgcHJvdmRlIGdlbmVyPQppYyBtYW5hZ2VyIGZv
ciBkZXNlcmlhbGl6ZXIgc3VwZXJjbGFzc2VzIGFuZCBtaXhpbnM7IEJ1ZyBodW50IHdpdGggZnVu
Y3Rpb249CmFsL2Jyb3dzZXIgdGVzdHMKQWZmZWN0ZWQgIzogIDI1IGZpbGVzCgpkaWZmIC1yIDMx
MzU3ZWRmMjYwZWE2YjI1OWRjNjgyMzBmMzA4M2IzZjBmYWZjYTAgLXIgMTQ3OTZhYzg2N2ViMGM3
ZGM1MTdlZWQ9CmExZWM4MjUwYzliODY4YmI3IGxpYi9nYWxheHkvbWFuYWdlcnMvYW5ub3RhdGFi
bGUucHkKLS0tIGEvbGliL2dhbGF4eS9tYW5hZ2Vycy9hbm5vdGF0YWJsZS5weQorKysgYi9saWIv
Z2FsYXh5L21hbmFnZXJzL2Fubm90YXRhYmxlLnB5CkBAIC0zNyw3ICszNyw3IEBACiBjbGFzcyBB
bm5vdGF0YWJsZURlc2VyaWFsaXplciggb2JqZWN0ICk6Cj0yMAogICAgIGRlZiBhZGRfZGVzZXJp
YWxpemVycyggc2VsZiApOgotICAgICAgICBzZWxmLmRlc2VyaWFsaXplcnNbICd0YWdzJyBdID0z
RCBzZWxmLmRlc2VyaWFsaXplX2Fubm90YXRpb24KKyAgICAgICAgc2VsZi5kZXNlcmlhbGl6ZXJz
WyAnYW5ub3RhdGlvbicgXSA9M0Qgc2VsZi5kZXNlcmlhbGl6ZV9hbm5vdGF0aW9uCj0yMAogICAg
IGRlZiBkZXNlcmlhbGl6ZV9hbm5vdGF0aW9uKCBzZWxmLCB0cmFucywgaXRlbSwga2V5LCB2YWwg
KToKICAgICAgICAgIiIiCgpkaWZmIC1yIDMxMzU3ZWRmMjYwZWE2YjI1OWRjNjgyMzBmMzA4M2Iz
ZjBmYWZjYTAgLXIgMTQ3OTZhYzg2N2ViMGM3ZGM1MTdlZWQ9CmExZWM4MjUwYzliODY4YmI3IGxp
Yi9nYWxheHkvbWFuYWdlcnMvYmFzZS5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL2Jhc2Uu
cHkKKysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vycy9iYXNlLnB5CkBAIC01MjksMTQgKzUyOSwxMiBA
QAogICAgICAgID0yMAogICAgICAgICAjIGEgbWFwIG9mIGRpY3Rpb25hcnkga2V5cyB0byB0aGUg
ZnVuY3Rpb25zIChvZnRlbiBsYW1iZGFzKSB0aGF0IGM9CnJlYXRlIHRoZSB2YWx1ZXMgZm9yIHRo
b3NlIGtleXMKICAgICAgICAgc2VsZi5zZXJpYWxpemVycyA9M0Qge30KLSAgICAgICAgIyBhZGQg
c3ViY2xhc3Mgc2VyaWFsaXplcnMgZGVmaW5lZCB0aGVyZQotICAgICAgICBzZWxmLmFkZF9zZXJp
YWxpemVycygpCiAgICAgICAgICMgYSBsaXN0IG9mIHZhbGlkIHNlcmlhbGl6YWJsZSBrZXlzIHRo
YXQgY2FuIHVzZSB0aGUgZGVmYXVsdCAoc3RyaT0KbmcpIHNlcmlhbGl6ZXIKICAgICAgICAgIyAg
IHRoaXMgYWxsb3dzIHVzIHRvOiAnbWVudGlvbicgdGhlIGtleSB3aXRob3V0IGFkZGluZyB0aGUg
ZGVmYXVsPQp0IHNlcmlhbGl6ZXIKICAgICAgICAgI05PVEU6IGlmIGEga2V5IGlzIHJlcXVlc3Rl
ZCB0aGF0IGlzIGluIG5laXRoZXIgc2VyaWFsaXphYmxlX2tleXMgPQpvciBzZXJpYWxpemVycywg
aXQgaXMgbm90IHJldHVybmVkCi0gICAgICAgICNUT0RPOiByZW5hbWUgdG8gJ2tleXNfdXNpbmdf
ZGVmYXVsdF9zZXJpYWxpemVyJwotICAgICAgICAjVE9ETzogb3IgKGFsdCkgYWxsb3cga2V5IGlu
IHNlcmlhbGl6ZXJzIHdpdGggTm9uZSBhcyB2YWx1ZSAoaW5kaWM9CmF0aW5nIHVzZSBkZWZhdWx0
X3NlcmlhbGl6ZXIpCiAgICAgICAgIHNlbGYuc2VyaWFsaXphYmxlX2tleXMgPTNEIFtdCisgICAg
ICAgICMgYWRkIHN1YmNsYXNzIHNlcmlhbGl6ZXJzIGRlZmluZWQgdGhlcmUKKyAgICAgICAgc2Vs
Zi5hZGRfc2VyaWFsaXplcnMoKQo9MjAKICAgICAgICAgIyB2aWV3cyBhcmUgY29sbGVjdGlvbnMg
b2Ygc2VyaWFsaXphYmxlIGF0dHJpYnV0ZXMgKGEgbmFtZWQgYXJyYXkgPQpvZiBrZXlzKQogICAg
ICAgICAjICAgaW5zcGlyZWQgYnkgbW9kZWwuZGljdF97dmlld31fdmlzaWJsZV9rZXlzCkBAIC02
MzMsMTIgKzYzMSw3IEBACiAgICAgICAgICAgICB2aWV3ID0zRCBzZWxmLmRlZmF1bHRfdmlldwog
ICAgICAgICBpZiB2aWV3IG5vdCBpbiBzZWxmLnZpZXdzOgogICAgICAgICAgICAgcmFpc2UgTW9k
ZWxTZXJpYWxpemluZ0Vycm9yKCAndW5rbm93biB2aWV3Jywgdmlldz0zRHZpZXcsIGF2YWk9Cmxh
YmxlX3ZpZXdzPTNEc2VsZi52aWV3cyApCi0gICAgICAgIHJldHVybiBzZWxmLnZpZXdzWyB2aWV3
IF0KLQotICAgICMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi49Ci4uLi4uIGFsaWFzZXMKLSAgICAjZGVmIHRvX2RpY3Qo
IHNlbGYsIHRyYW5zLCBpdGVtLCB2aWV3PTNETm9uZSwgdmlld19rZXlzPTNETm9uZSApOgotICAg
ICMgICAgdmlld19rZXlzID0zRCB2aWV3X2tleXMgb3Igc2VsZi52aWV3X3RvX2xpc3QoIHZpZXcg
KQotICAgICMgICAgcmV0dXJuIHNlbGYuc2VyaWFsaXplKCB0cmFucywgaXRlbSwgdmlld19rZXlz
ICkKKyAgICAgICAgcmV0dXJuIHNlbGYudmlld3NbIHZpZXcgXVs6XQo9MjAKPTIwCiAjIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLT0KLS0tLS0KQEAgLTY0Nyw3ICs2NDAsOCBAQAogICAgIEFuIG9iamVjdCB0aGF0
IGNvbnZlcnRzIGFuIGluY29taW5nIHNlcmlhbGl6ZWQgZGljdCBpbnRvIHZhbHVlcyB0aGF0IGM9
CmFuIGJlCiAgICAgZGlyZWN0bHkgYXNzaWduZWQgdG8gYW4gaXRlbSdzIGF0dHJpYnV0ZXMgYW5k
IGFzc2lnbnMgdGhlbS4KICAgICAiIiIKLSAgICAjVE9ETzo/PyBJJ20gbm90IGNvbnZpbmNlcyB0
aGUgZm9sbG93aW5nIHR3byBuZWVkIHRvIGV4aXN0Li4uCisgICAgIzogdGhlIGNsYXNzIHVzZWQg
dG8gY3JlYXRlIHRoaXMgZGVzZXJpYWxpemVyJ3MgZ2VuZXJpY2FsbHkgYWNjZXNzaWJsZT0KIG1v
ZGVsX21hbmFnZXIKKyAgICBtb2RlbF9tYW5hZ2VyX2NsYXNzID0zRCBOb25lCj0yMAogICAgIGRl
ZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CiAgICAgICAgICIiIgpAQCAtNjU2LDEyICs2NTAsMTYg
QEAKICAgICAgICAgc2VsZi5hcHAgPTNEIGFwcAo9MjAKICAgICAgICAgc2VsZi5kZXNlcmlhbGl6
ZXJzID0zRCB7fQorICAgICAgICBzZWxmLmRlc2VyaWFsaXphYmxlX2tleXMgPTNEIFtdCiAgICAg
ICAgIHNlbGYuYWRkX2Rlc2VyaWFsaXplcnMoKQotICAgICAgICBzZWxmLmRlc2VyaWFsaXphYmxl
X2tleXMgPTNEIFtdCiAgICAgICAgICMgYSBzdWIgb2JqZWN0IHRoYXQgY2FuIHZhbGlkYXRlIGlu
Y29taW5nIHZhbHVlcwogICAgICAgICBzZWxmLnZhbGlkYXRlID0zRCBNb2RlbFZhbGlkYXRvcigg
c2VsZi5hcHAgKQo9MjAKLSAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBkZXNlcmlhbGl6aW5nCisg
ICAgICAgICMgY3JlYXRlIGEgZ2VuZXJpY2FsbHkgYWNjZXNzaWJsZSBtYW5hZ2VyIGZvciB0aGUg
bW9kZWwgdGhpcyBkZXNlcj0KaWFsaXplciB3b3JrcyB3aXRoL2ZvcgorICAgICAgICBzZWxmLm1h
bmFnZXIgPTNEIE5vbmUKKyAgICAgICAgaWYgc2VsZi5tb2RlbF9tYW5hZ2VyX2NsYXNzOgorICAg
ICAgICAgICBzZWxmLm1hbmFnZXIgPTNEIHNlbGYubW9kZWxfbWFuYWdlcl9jbGFzcyggc2VsZi5h
cHAgKQorCiAgICAgZGVmIGFkZF9kZXNlcmlhbGl6ZXJzKCBzZWxmICk6CiAgICAgICAgICIiIgog
ICAgICAgICBSZWdpc3RlciBhIG1hcCBvZiBhdHRyaWJ1dGUga2V5cyAtPiBmdW5jdGlvbnMgdGhh
dCB3aWxsIGRlc2VyaWFsaXo9CmUgZGF0YQpAQCAtNzIyLDEwICs3MjAsNiBAQAogICAgICAgICB2
YWwgPTNEIHNlbGYudmFsaWRhdGUuZ2Vub21lX2J1aWxkKCB0cmFucywga2V5LCB2YWwgKQogICAg
ICAgICByZXR1cm4gc2VsZi5kZWZhdWx0X2Rlc2VyaWFsaXplciggdHJhbnMsIGl0ZW0sIGtleSwg
dmFsICkKPTIwCi0gICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLj0KLi4uLi4gYWxpYXNlcwotICAgICNkZWYgZnJv
bV9kaWN0KCBzZWxmLCB0cmFucywgaXRlbSwgZGF0YSApOgotICAgICMgICAgc2VsZi5kZXNlcmlh
bGl6ZSggdHJhbnMsIGl0ZW0sIGRhdGEgKQotCj0yMAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0t
CiAjVE9ETzo/PyBhIGxhcmdlciBxdWVzdGlvbiBpczogd2hpY2ggc2hvdWxkIGJlIGZpcnN0PyBE
ZXNlcmlhbGl6ZSB0aGVuIHZhbD0KaWRhdGUgLSBvciAtIHZhbGlkYXRlIHRoZW4gZGVzZXJpYWxp
emU/CkBAIC04MzcsMjcgKzgzMSwzMSBAQAogICAgICAgICByZXR1cm4gaXRlbQo9MjAKPTIwCitj
bGFzcyBEZWxldGFibGVNb2RlbFNlcmlhbGl6ZXIoIG9iamVjdCApOgorCisgICAgZGVmIGFkZF9z
ZXJpYWxpemVycyggc2VsZiApOgorICAgICAgICBwYXNzCisKKwogI1RPRE86IHRoZXNlIGFyZSBv
ZiBxdWVzdGlvbmFibGUgdmFsdWUgaWYgd2UgZG9uJ3Qgd2FudCB0byBlbmFibGUgdXNlcnMgdG89
CiBkZWxldGUvcHVyZ2UgdmlhIHVwZGF0ZQogY2xhc3MgRGVsZXRhYmxlTW9kZWxEZXNlcmlhbGl6
ZXIoIG9iamVjdCApOgotICAgIHBhc3MKPTIwCi0gICAgI2RlZiBhZGRfZGVzZXJpYWxpemVycygg
c2VsZiApOgotICAgICMgICAgIiIiCi0gICAgIyAgICAiIiIKLSAgICAjICAgIHNlbGYuZGVzZXJp
YWxpemVyc1sgJ2RlbGV0ZWQnIF0gPTNEIHNlbGYuZGVzZXJpYWxpemVfZGVsZXRlZAotICAgICMK
LSAgICAjZGVmIGRlc2VyaWFsaXplX2RlbGV0ZWQoIHNlbGYsIHRyYW5zLCBpdGVtLCBrZXksIHZh
bCApOgotICAgICMgICAgIiIiCi0gICAgIyAgICAiIiIKLSAgICAjICAgIG5ld19kZWxldGVkID0z
RCBzZWxmLnZhbGlkYXRlLmJvb2woIGtleSwgdmFsICkKLSAgICAjICAgIGlmIG5ld19kZWxldGVk
ID0zRD0zRCBpdGVtLmRlbGV0ZWQ6Ci0gICAgIyAgICAgICAgcmV0dXJuIGl0ZW0uZGVsZXRlZAot
ICAgICMgICAgI1RPRE86Pz8gZmx1c2g9M0RGYWxzZT8KLSAgICAjICAgIGlmIG5ld19kZWxldGVk
OgotICAgICMgICAgICAgIHNlbGYubWdyLmRlbGV0ZSggdHJhbnMsIGl0ZW0gKQotICAgICMgICAg
ZWxzZToKLSAgICAjICAgICAgICBzZWxmLm1nci51bmRlbGV0ZSggdHJhbnMsIGl0ZW0gKQotICAg
ICMgICAgcmV0dXJuIGl0ZW0uZGVsZXRlZAorICAgIGRlZiBhZGRfZGVzZXJpYWxpemVycyggc2Vs
ZiApOgorICAgICAgICBzZWxmLmRlc2VyaWFsaXplcnNbICdkZWxldGVkJyBdID0zRCBzZWxmLmRl
c2VyaWFsaXplX2RlbGV0ZWQKKworICAgIGRlZiBkZXNlcmlhbGl6ZV9kZWxldGVkKCBzZWxmLCB0
cmFucywgaXRlbSwga2V5LCB2YWwgKToKKyAgICAgICAgIiIiCisgICAgICAgIERlbGV0ZSBvciB1
bmRlbGV0ZSBgaXRlbWAgYmFzZWQgb24gYHZhbGAgdGhlbiByZXR1cm4gYGl0ZW0uZGVsZXRlZD0K
YC4KKyAgICAgICAgIiIiCisgICAgICAgIG5ld19kZWxldGVkID0zRCBzZWxmLnZhbGlkYXRlLmJv
b2woIGtleSwgdmFsICkKKyAgICAgICAgaWYgbmV3X2RlbGV0ZWQgPTNEPTNEIGl0ZW0uZGVsZXRl
ZDoKKyAgICAgICAgICAgIHJldHVybiBpdGVtLmRlbGV0ZWQKKyAgICAgICAgI1RPRE86Pz8gZmx1
c2g9M0RGYWxzZT8KKyAgICAgICAgaWYgbmV3X2RlbGV0ZWQ6CisgICAgICAgICAgICBzZWxmLm1h
bmFnZXIuZGVsZXRlKCB0cmFucywgaXRlbSwgZmx1c2g9M0RGYWxzZSApCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBzZWxmLm1hbmFnZXIudW5kZWxldGUoIHRyYW5zLCBpdGVtLCBmbHVzaD0z
REZhbHNlICkKKyAgICAgICAgcmV0dXJuIGl0ZW0uZGVsZXRlZAo9MjAKPTIwCiAjIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLT0KLS0tLS0KQEAgLTg4MSwyMCArODc5LDIzIEBACiAgICAgICAgIHJldHVybiBpdGVt
Cj0yMAo9MjAKLWNsYXNzIFB1cmdhYmxlTW9kZWxEZXNlcmlhbGl6ZXIoIERlbGV0YWJsZU1vZGVs
RGVzZXJpYWxpemVyICk6CitjbGFzcyBQdXJnYWJsZU1vZGVsU2VyaWFsaXplciggRGVsZXRhYmxl
TW9kZWxTZXJpYWxpemVyICk6CiAgICAgcGFzcwo9MjAKLSAgICAjZGVmIGFkZF9kZXNlcmlhbGl6
ZXJzKCBzZWxmICk6Ci0gICAgIyAgICAiIiIKLSAgICAjICAgICIiIgotICAgICMgICAgc2VsZi5k
ZXNlcmlhbGl6ZXJzWyAncHVyZ2VkJyBdID0zRCBzZWxmLmRlc2VyaWFsaXplX3B1cmdlZAotICAg
ICMKLSAgICAjZGVmIGRlc2VyaWFsaXplX3B1cmdlZCggc2VsZiwgdHJhbnMsIGl0ZW0sIGtleSwg
dmFsICk6Ci0gICAgIyAgICAiIiIKLSAgICAjICAgICIiIgotICAgICMgICAgbmV3X3B1cmdlZCA9
M0Qgc2VsZi52YWxpZGF0ZS5ib29sKCBrZXksIHZhbCApCi0gICAgIyAgICBpZiBuZXdfcHVyZ2Vk
ID0zRD0zRCBpdGVtLnB1cmdlZDoKLSAgICAjICAgICAgICByZXR1cm4gaXRlbS5wdXJnZWQKLSAg
ICAjICAgIGlmIG5ld19wdXJnZWQ6Ci0gICAgIyAgICAgICAgc2VsZi5tZ3IucHVyZ2UoIHRyYW5z
LCBpdGVtICkKLSAgICAjICAgIHJldHVybiBzZWxmLnB1cmdlZAorCitjbGFzcyBQdXJnYWJsZU1v
ZGVsRGVzZXJpYWxpemVyKCBEZWxldGFibGVNb2RlbERlc2VyaWFsaXplciApOgorCisgICAgZGVm
IGFkZF9kZXNlcmlhbGl6ZXJzKCBzZWxmICk6CisgICAgICAgIERlbGV0YWJsZU1vZGVsRGVzZXJp
YWxpemVyLmFkZF9kZXNlcmlhbGl6ZXJzKCBzZWxmICkKKyAgICAgICAgc2VsZi5kZXNlcmlhbGl6
ZXJzWyAncHVyZ2VkJyBdID0zRCBzZWxmLmRlc2VyaWFsaXplX3B1cmdlZAorCisgICAgZGVmIGRl
c2VyaWFsaXplX3B1cmdlZCggc2VsZiwgdHJhbnMsIGl0ZW0sIGtleSwgdmFsICk6CisgICAgICAg
ICIiIgorICAgICAgICBJZiBgdmFsYCBpcyBUcnVlLCBwdXJnZSBgaXRlbWAgYW5kIHJldHVybiBg
aXRlbS5wdXJnZWRgLgorICAgICAgICAiIiIKKyAgICAgICAgbmV3X3B1cmdlZCA9M0Qgc2VsZi52
YWxpZGF0ZS5ib29sKCBrZXksIHZhbCApCisgICAgICAgIGlmIG5ld19wdXJnZWQgPTNEPTNEIGl0
ZW0ucHVyZ2VkOgorICAgICAgICAgICAgcmV0dXJuIGl0ZW0ucHVyZ2VkCisgICAgICAgIGlmIG5l
d19wdXJnZWQ6CisgICAgICAgICAgICBzZWxmLm1hbmFnZXIucHVyZ2UoIHRyYW5zLCBpdGVtLCBm
bHVzaD0zREZhbHNlICkKKyAgICAgICAgcmV0dXJuIHNlbGYucHVyZ2VkCgpkaWZmIC1yIDMxMzU3
ZWRmMjYwZWE2YjI1OWRjNjgyMzBmMzA4M2IzZjBmYWZjYTAgLXIgMTQ3OTZhYzg2N2ViMGM3ZGM1
MTdlZWQ9CmExZWM4MjUwYzliODY4YmI3IGxpYi9nYWxheHkvbWFuYWdlcnMvZGF0YXNldHMucHkK
LS0tIGEvbGliL2dhbGF4eS9tYW5hZ2Vycy9kYXRhc2V0cy5weQorKysgYi9saWIvZ2FsYXh5L21h
bmFnZXJzL2RhdGFzZXRzLnB5CkBAIC00LDggKzQsOCBAQAogZnJvbSBnYWxheHkgaW1wb3J0IG1v
ZGVsCiBmcm9tIGdhbGF4eSBpbXBvcnQgZXhjZXB0aW9ucwo9MjAKLWltcG9ydCBiYXNlCi1pbXBv
cnQgdXNlcnMKK2Zyb20gZ2FsYXh5Lm1hbmFnZXJzIGltcG9ydCBiYXNlCitmcm9tIGdhbGF4eS5t
YW5hZ2VycyBpbXBvcnQgdXNlcnMKPTIwCiBpbXBvcnQgbG9nZ2luZwogbG9nID0zRCBsb2dnaW5n
LmdldExvZ2dlciggX19uYW1lX18gKQpAQCAtMTkxLDcgKzE5MSw3IEBACiAgICAgIyAuLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLj0KLi4uLi4gZGF0YSwgb2JqZWN0X3N0b3JlCj0yMAo9MjAKLSMgPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECisjIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLT0KLS0tLS0KIGNsYXNzIERhdGFzZXRTZXJpYWxpemVyKCBiYXNlLk1vZGVs
U2VyaWFsaXplciApOgo9MjAKICAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgpAQCAtMjI3
LDkgKzIyNywxMyBAQAogICAgICAgICB9KQo9MjAKPTIwCi1jbGFzcyBEYXRhc2V0RGVzZXJpYWxp
emVyKCBiYXNlLk1vZGVsRGVzZXJpYWxpemVyICk6Ci0gICAgcGFzcworIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS09Ci0tLS0tCitjbGFzcyBEYXRhc2V0RGVzZXJpYWxpemVyKCBiYXNlLk1vZGVsRGVzZXJpYWxp
emVyLCBiYXNlLlB1cmdhYmxlTW9kZWxEZXNlcj0KaWFsaXplciApOgorICAgIG1vZGVsX21hbmFn
ZXJfY2xhc3MgPTNEIERhdGFzZXRNYW5hZ2VyCj0yMAorICAgIGRlZiBhZGRfZGVzZXJpYWxpemVy
cyggc2VsZiApOgorICAgICAgICBzdXBlciggRGF0YXNldERlc2VyaWFsaXplciwgc2VsZiApLmFk
ZF9kZXNlcmlhbGl6ZXJzKCkKKyAgICAgICAgYmFzZS5QdXJnYWJsZU1vZGVsRGVzZXJpYWxpemVy
LmFkZF9kZXNlcmlhbGl6ZXJzKCBzZWxmICkKPTIwCiAjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRAogY2xhc3MgRGF0YXNl
dEFzc29jaWF0aW9uTWFuYWdlciggYmFzZS5Nb2RlbE1hbmFnZXIsIGJhc2UuQWNjZXNzaWJsZU1v
ZGVsSW49CnRlcmZhY2UsIGJhc2UuUHVyZ2FibGVNb2RlbEludGVyZmFjZSApOgpAQCAtMjM4LDcg
KzI0Miw2IEBACiAgICAgIyBEQSdzIHdlcmUgbWVhbnQgdG8gYmUgcHJveGllcyAtIGJ1dCB3ZXJl
IG5ldmVyIGZ1bGx5IGltcGxlbWVudGVkIGFzID0KdGhlbQogICAgICMgSW5zdGVhZCwgYSBkYXRh
c2V0IGFzc29jaWF0aW9uIEhBUyBhIGRhdGFzZXQgYnV0IGNvbnRhaW5zIG1ldGFkYXRhIHM9CnBl
Y2lmaWMgdG8gYSBsaWJyYXJ5IChsZGEpIG9yIHVzZXIgKGhkYSkKICAgICBtb2RlbF9jbGFzcyA9
M0QgbW9kZWwuRGF0YXNldEluc3RhbmNlCi0gICAgZGVmYXVsdF9vcmRlcl9ieSA9M0QgKCBtb2Rl
bC5EYXRhc2V0LmNyZWF0ZV90aW1lLCApCj0yMAogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBw
ICk6CiAgICAgICAgIHN1cGVyKCBEYXRhc2V0QXNzb2NpYXRpb25NYW5hZ2VyLCBzZWxmICkuX19p
bml0X18oIGFwcCApCkBAIC0yNjMsMyArMjY2LDIxIEBACiAgICAgIyAgICAiIiIKICAgICAjICAg
ICNUT0RPOiBjaGVjayBoaXN0b3J5X2Fzc29jaWF0aW9ucywgbGlicmFyeV9hc3NvY2lhdGlvbnMK
ICAgICAjICAgIHBhc3MKKworCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0tLS0KK2NsYXNzIERhdGFz
ZXRBc3NvY2lhdGlvblNlcmlhbGl6ZXIoIGJhc2UuTW9kZWxTZXJpYWxpemVyICk6CisKKyAgICBk
ZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgorICAgICAgICBzdXBlciggRGF0YXNldEFzc29jaWF0
aW9uU2VyaWFsaXplciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQorCisgICAgZGVmIGFkZF9zZXJp
YWxpemVycyggc2VsZiApOgorICAgICAgICBzdXBlciggRGF0YXNldEFzc29jaWF0aW9uU2VyaWFs
aXplciwgc2VsZiApLmFkZF9zZXJpYWxpemVycygpCisKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0t
LS0tCitjbGFzcyBEYXRhc2V0QXNzb2NpYXRpb25EZXNlcmlhbGl6ZXIoIGJhc2UuTW9kZWxEZXNl
cmlhbGl6ZXIsIGJhc2UuUHVyZ2FibD0KZU1vZGVsRGVzZXJpYWxpemVyICk6CisKKyAgICBkZWYg
YWRkX2Rlc2VyaWFsaXplcnMoIHNlbGYgKToKKyAgICAgICAgc3VwZXIoIERhdGFzZXRBc3NvY2lh
dGlvbkRlc2VyaWFsaXplciwgc2VsZiApLmFkZF9kZXNlcmlhbGl6ZXJzKCkKKyAgICAgICAgYmFz
ZS5QdXJnYWJsZU1vZGVsRGVzZXJpYWxpemVyLmFkZF9kZXNlcmlhbGl6ZXJzKCBzZWxmICkKCmRp
ZmYgLXIgMzEzNTdlZGYyNjBlYTZiMjU5ZGM2ODIzMGYzMDgzYjNmMGZhZmNhMCAtciAxNDc5NmFj
ODY3ZWIwYzdkYzUxN2VlZD0KYTFlYzgyNTBjOWI4NjhiYjcgbGliL2dhbGF4eS9tYW5hZ2Vycy9o
ZGFzLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvaGRhcy5weQorKysgYi9saWIvZ2FsYXh5
L21hbmFnZXJzL2hkYXMucHkKQEAgLTExLDE3ICsxMSwxNSBAQAogZnJvbSBnYWxheHkgaW1wb3J0
IG1vZGVsCiBmcm9tIGdhbGF4eSBpbXBvcnQgZXhjZXB0aW9ucwogZnJvbSBnYWxheHkgaW1wb3J0
IGRhdGF0eXBlcwotCi1pbXBvcnQgYmFzZQotaW1wb3J0IHRhZ2dhYmxlCi1pbXBvcnQgYW5ub3Rh
dGFibGUKLWltcG9ydCBoaXN0b3JpZXMKLWltcG9ydCBkYXRhc2V0cwotCiBpbXBvcnQgZ2FsYXh5
LndlYgogaW1wb3J0IGdhbGF4eS5kYXRhdHlwZXMubWV0YWRhdGEKIGZyb20gZ2FsYXh5IGltcG9y
dCBvYmplY3RzdG9yZQo9MjAKK2Zyb20gZ2FsYXh5Lm1hbmFnZXJzIGltcG9ydCBkYXRhc2V0cwor
ZnJvbSBnYWxheHkubWFuYWdlcnMgaW1wb3J0IGJhc2UKK2Zyb20gZ2FsYXh5Lm1hbmFnZXJzIGlt
cG9ydCB0YWdnYWJsZQorZnJvbSBnYWxheHkubWFuYWdlcnMgaW1wb3J0IGFubm90YXRhYmxlCitm
cm9tIGdhbGF4eS5tYW5hZ2VycyBpbXBvcnQgdXNlcnMKPTIwCiAjID0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0K
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRAogY2xhc3Mg
SERBTWFuYWdlciggZGF0YXNldHMuRGF0YXNldEFzc29jaWF0aW9uTWFuYWdlciwgYmFzZS5Pd25h
YmxlTW9kZWxJbnQ9CmVyZmFjZSwKQEAgLTQ0LDYgKzQyLDcgQEAKICAgICAgICAgU2V0IHVwIGFu
ZCBpbml0aWFsaXplIG90aGVyIG1hbmFnZXJzIG5lZWRlZCBieSBoZGFzLgogICAgICAgICAiIiIK
ICAgICAgICAgc3VwZXIoIEhEQU1hbmFnZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwICkKKyAgICAg
ICAgc2VsZi51c2VyX21hbmFnZXIgPTNEIHVzZXJzLlVzZXJNYW5hZ2VyKCBhcHAgKQo9MjAKICAg
ICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uPQouLi4uLiBzZWN1cml0eSBhbmQgcGVybWlzc2lvbnMKICAgICBkZWYg
aXNfYWNjZXNzaWJsZSggc2VsZiwgdHJhbnMsIGhkYSwgdXNlciApOgpAQCAtNTgsOCArNTcsMTMg
QEAKICAgICAgICAgIiIiCiAgICAgICAgIFVzZSBoaXN0b3J5IHRvIHNlZSBpZiBjdXJyZW50IHVz
ZXIgb3ducyBIREEuCiAgICAgICAgICIiIgotICAgICAgICAjVE9ETzogdGhpcyBtYXkgYmUgc2xv
dyBkdWUgdG8gSGlzdG9yeU1hbmFnZXIgaW5zdGFudGlhdGlvbiBhbmQgcG89CnNzaWJsZSAybmQg
dHJhbnNhY3Rpb24gdG8gZ2V0IHRoZSBoZGEuaGlzdG9yeQotICAgICAgICByZXR1cm4gaGlzdG9y
aWVzLkhpc3RvcnlNYW5hZ2VyKCBzZWxmLmFwcCApLmlzX293bmVyKCB0cmFucywgaGRhLmg9Cmlz
dG9yeSwgdXNlciApCisgICAgICAgIGhpc3RvcnkgPTNEIGhkYS5oaXN0b3J5CisgICAgICAgICNU
T0RPOiBzb21lIGR1cCBoZXJlIHdpdGggaGlzdG9yeU1hbmFnZXIuaXNfb3duZXIgYnV0IHByZXZl
bnRzIGNpcj0KYyBpbXBvcnQKKyAgICAgICAgaWYgc2VsZi51c2VyX21hbmFnZXIuaXNfYWRtaW4o
IHRyYW5zLCB1c2VyICk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBzZWxm
LnVzZXJfbWFuYWdlci5pc19hbm9ueW1vdXMoIHVzZXIgKSBhbmQgaGlzdG9yeSA9M0Q9M0QgdHJh
bnM9Ci5nZXRfaGlzdG9yeSgpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0
dXJuIGhpc3RvcnkudXNlciA9M0Q9M0QgdXNlcgo9MjAKICAgICAjIC4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4u
LiBjcmVhdGUgYW5kIGNvcHkKICAgICBkZWYgY3JlYXRlKCBzZWxmLCB0cmFucywgaGlzdG9yeT0z
RE5vbmUsIGRhdGFzZXQ9M0ROb25lLCBmbHVzaD0zRFRydWUsPQogKiprd2FyZ3MgKToKQEAgLTMw
Miw3ICszMDYsNyBAQAo9MjAKPTIwCiAjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRAotY2xhc3MgSERBU2VyaWFsaXplcigg
YmFzZS5Nb2RlbFNlcmlhbGl6ZXIsCitjbGFzcyBIREFTZXJpYWxpemVyKCBkYXRhc2V0cy5EYXRh
c2V0QXNzb2NpYXRpb25TZXJpYWxpemVyLAogICAgICAgICB0YWdnYWJsZS5UYWdnYWJsZVNlcmlh
bGl6ZXIsIGFubm90YXRhYmxlLkFubm90YXRhYmxlU2VyaWFsaXplciApOgogICAgICNUT0RPOiBp
bmhlcml0IGZyb20gZGF0YXNldHMuRGF0YXNldEFzc29jaWF0aW9uU2VyaWFsaXplcgogICAgICNU
T0RPOiBtb3ZlIHdoYXQgbWFrZXMgc2Vuc2UgaW50byBEYXRhc2V0U2VyaWFsaXplcgpAQCAtMzE0
LDggKzMxOCwxMCBAQAogICAgICAgICAjIG1vc3Qgb2YgdGhlc2Ugdmlld3MgYnVpbGQvYWRkIHRv
IHRoZSBwcmV2aW91cyB2aWV3CiAgICAgICAgIHN1bW1hcnlfdmlldyA9M0QgWwogICAgICAgICAg
ICAgJ2lkJywgJ25hbWUnLAotICAgICAgICAgICAgJ2hpc3RvcnlfaWQnLCAnaGlkJywgJ2hpc3Rv
cnlfY29udGVudF90eXBlJywKLSAgICAgICAgICAgICMnZGF0YXNldF9pZCcsCisgICAgICAgICAg
ICAnaGlzdG9yeV9pZCcsICdoaWQnLAorICAgICAgICAgICAgIyB3aHkgaW5jbHVkZSBpZiBtb2Rl
bF9jbGFzcyBpcyB0aGVyZT8KKyAgICAgICAgICAgICdoaXN0b3J5X2NvbnRlbnRfdHlwZScsCisg
ICAgICAgICAgICAnZGF0YXNldF9pZCcsCiAgICAgICAgICAgICAnc3RhdGUnLCAnZXh0ZW5zaW9u
JywKICAgICAgICAgICAgICdkZWxldGVkJywgJ3B1cmdlZCcsICd2aXNpYmxlJywgJ3Jlc3VibWl0
dGVkJywKICAgICAgICAgICAgICd0eXBlJywgJ3VybCcKQEAgLTMyNCwxNSArMzMwLDEzIEBACiAg
ICAgICAgICAgICAnaWQnLCAnbmFtZScsICdoaXN0b3J5X2lkJywgJ2hpZCcsICdoaXN0b3J5X2Nv
bnRlbnRfdHlwZScsCiAgICAgICAgICAgICAnc3RhdGUnLCAnZGVsZXRlZCcsICd2aXNpYmxlJwog
ICAgICAgICBdCi0gICAgICAgIGRldGFpbGVkX3ZpZXcgPTNEIFsKLSAgICAgICAgICAgICdpZCcs
ICduYW1lJywgJ21vZGVsX2NsYXNzJywKKyAgICAgICAgZGV0YWlsZWRfdmlldyA9M0Qgc3VtbWFy
eV92aWV3ICsgWworICAgICAgICAgICAgJ21vZGVsX2NsYXNzJywKICAgICAgICAgICAgICdoaXN0
b3J5X2lkJywgJ2hpZCcsCiAgICAgICAgICAgICAjIHdoeSBpbmNsdWRlIGlmIG1vZGVsX2NsYXNz
IGlzIHRoZXJlPwotICAgICAgICAgICAgJ2hkYV9sZGRhJywgJ2hpc3RvcnlfY29udGVudF90eXBl
JywKLSAgICAgICAgICAgICdzdGF0ZScsCisgICAgICAgICAgICAnaGRhX2xkZGEnLAogICAgICAg
ICAgICAgI1RPRE86IGFjY2Vzc2libGUgbmVlZHMgdG8gZ28gYXdheQogICAgICAgICAgICAgJ2Fj
Y2Vzc2libGUnLAotICAgICAgICAgICAgJ2RlbGV0ZWQnLCAncHVyZ2VkJywgJ3Zpc2libGUnLCAn
cmVzdWJtaXR0ZWQnLAo9MjAKICAgICAgICAgICAgICMgcmVtYXBwZWQKICAgICAgICAgICAgICdn
ZW5vbWVfYnVpbGQnLCAnbWlzY19pbmZvJywgJ21pc2NfYmx1cmInLApAQCAtMzU1LDE1ICszNTks
MTEgQEAKICAgICAgICAgICAgICMndXJsJywKICAgICAgICAgICAgICdkb3dubG9hZF91cmwnLAo9
MjAKLSAgICAgICAgICAgICNtaXhpbjogYW5ub3RhdGFibGUKLSAgICAgICAgICAgICdhbm5vdGF0
aW9uJywKLSAgICAgICAgICAgICNtaXhpbjogdGFnZ2FibGUKLSAgICAgICAgICAgICd0YWdzJywK
KyAgICAgICAgICAgICdhbm5vdGF0aW9uJywgJ3RhZ3MnLAo9MjAKICAgICAgICAgICAgICdhcGlf
dHlwZScKICAgICAgICAgXQogICAgICAgICBleHRlbmRlZF92aWV3ID0zRCBkZXRhaWxlZF92aWV3
ICsgWwotICAgICAgICAgICAgI05PVEU6IHNlbmRpbmcgcmF3ICdwZWVrJyAobm90IGdldF9kaXNw
bGF5X3BlZWspCiAgICAgICAgICAgICAndG9vbF92ZXJzaW9uJywgJ3BhcmVudF9pZCcsICdkZXNp
Z25hdGlvbicsCiAgICAgICAgIF0KPTIwCkBAIC00NTIsMTQgKzQ1MiwxNSBAQAogICAgICAgICBP
dmVycmlkZSB0byBhZGQgbWV0YWRhdGEgYXMgZmxhdHRlbmVkIGtleXMgb24gdGhlIHNlcmlhbGl6
ZWQgSERBLgogICAgICAgICAiIiIKICAgICAgICAgIyBpZiAnbWV0YWRhdGEnIGlzbid0IHJlbW92
ZWQgZnJvbSBrZXlzIGhlcmUgc2VyaWFsaXplIHdpbGwgcmV0cmllPQp2ZSB0aGUgdW4tc2VyaWFs
aXphYmxlIE1ldGFkYXRhQ29sbGVjdGlvbgotICAgICAgICAjVE9ETzogcmVtb3ZlIHRoZXNlIHdo
ZW4gbWV0YWRhdGEgaXMgc3ViLW9iamVjdAorI1RPRE86IHJlbW92ZSB0aGVzZSB3aGVuIG1ldGFk
YXRhIGlzIHN1Yi1vYmplY3QKICAgICAgICAgS0VZU19IQU5ETEVEX1NFUEFSQVRFTFkgPTNEICgg
J21ldGFkYXRhJywgKQogICAgICAgICBsZWZ0X3RvX2hhbmRsZSA9M0Qgc2VsZi5wbHVja19mcm9t
X2xpc3QoIGtleXMsIEtFWVNfSEFORExFRF9TRVBBUkE9ClRFTFkgKQogICAgICAgICBzZXJpYWxp
emVkID0zRCBzdXBlciggSERBU2VyaWFsaXplciwgc2VsZiApLnNlcmlhbGl6ZSggdHJhbnMsIGhk
YSw9CiBrZXlzICkKPTIwCiAgICAgICAgIGlmICdtZXRhZGF0YScgaW4gbGVmdF90b19oYW5kbGU6
CiAgICAgICAgICAgICAjIHdlIGN1cnJlbnRseSBhZGQgbWV0YWRhdGEgZGlyZWN0bHkgdG8gdGhl
IGRpY3QgaW5zdGVhZCBvZiBhcz0KIGEgc3ViLW9iamVjdAotICAgICAgICAgICAgc2VyaWFsaXpl
ZC51cGRhdGUoIHNlbGYucHJlZml4ZWRfbWV0YWRhdGEoIHRyYW5zLCBoZGEgKSApCisgICAgICAg
ICAgICBtZXRhZGF0YSA9M0Qgc2VsZi5wcmVmaXhlZF9tZXRhZGF0YSggdHJhbnMsIGhkYSApCisg
ICAgICAgICAgICBzZXJpYWxpemVkLnVwZGF0ZSggbWV0YWRhdGEgKQogICAgICAgICByZXR1cm4g
c2VyaWFsaXplZAo9MjAKICAgICAjVE9ETzogdGhpcyBpcyBtb3JlIHV0aWwvZ2VuLiB1c2UKQEAg
LTU2NiwxNSArNTY3LDE2IEBACj0yMAo9MjAKICMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECi1jbGFzcyBIREFEZXNlcmlh
bGl6ZXIoIGJhc2UuTW9kZWxEZXNlcmlhbGl6ZXIsCitjbGFzcyBIREFEZXNlcmlhbGl6ZXIoIGRh
dGFzZXRzLkRhdGFzZXRBc3NvY2lhdGlvbkRlc2VyaWFsaXplciwKICAgICAgICAgdGFnZ2FibGUu
VGFnZ2FibGVEZXNlcmlhbGl6ZXIsIGFubm90YXRhYmxlLkFubm90YXRhYmxlRGVzZXJpYWxpemVy
PQogKToKICAgICAiIiIKICAgICBJbnRlcmZhY2Uvc2VydmljZSBvYmplY3QgZm9yIHZhbGlkYXRp
bmcgYW5kIGRlc2VyaWFsaXppbmcgZGljdGlvbmFyaWVzPQogaW50byBoaXN0b3JpZXMuCiAgICAg
IiIiCisgICAgbW9kZWxfbWFuYWdlcl9jbGFzcyA9M0QgSERBTWFuYWdlcgo9MjAKICAgICBkZWYg
X19pbml0X18oIHNlbGYsIGFwcCApOgogICAgICAgICBzdXBlciggSERBRGVzZXJpYWxpemVyLCBz
ZWxmICkuX19pbml0X18oIGFwcCApCi0gICAgICAgIHNlbGYuaGRhX21hbmFnZXIgPTNEIEhEQU1h
bmFnZXIoIGFwcCApCisgICAgICAgIHNlbGYuaGRhX21hbmFnZXIgPTNEIHNlbGYubWFuYWdlcgo9
MjAKICAgICAjYXNzdW1lczogaW5jb21pbmcgZnJvbSBqc29uLmxvYWRzIGFuZCBzYW5pdGl6ZWQK
ICAgICBkZWYgYWRkX2Rlc2VyaWFsaXplcnMoIHNlbGYgKToKCmRpZmYgLXIgMzEzNTdlZGYyNjBl
YTZiMjU5ZGM2ODIzMGYzMDgzYjNmMGZhZmNhMCAtciAxNDc5NmFjODY3ZWIwYzdkYzUxN2VlZD0K
YTFlYzgyNTBjOWI4NjhiYjcgbGliL2dhbGF4eS9tYW5hZ2Vycy9oaXN0b3JpZXMucHkKLS0tIGEv
bGliL2dhbGF4eS9tYW5hZ2Vycy9oaXN0b3JpZXMucHkKKysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vy
cy9oaXN0b3JpZXMucHkKQEAgLTgsMTIgKzgsMTEgQEAKIGZyb20gZ2FsYXh5IGltcG9ydCBleGNl
cHRpb25zCiBmcm9tIGdhbGF4eSBpbXBvcnQgbW9kZWwKPTIwCi1pbXBvcnQgYmFzZQotaW1wb3J0
IHNoYXJhYmxlCi1pbXBvcnQgaGRhcwotaW1wb3J0IGNvbGxlY3Rpb25zX3V0aWwKK2ltcG9ydCBn
YWxheHkud2ViCj0yMAotaW1wb3J0IGdhbGF4eS53ZWIKK2Zyb20gZ2FsYXh5Lm1hbmFnZXJzIGlt
cG9ydCBiYXNlCitmcm9tIGdhbGF4eS5tYW5hZ2VycyBpbXBvcnQgc2hhcmFibGUKK2Zyb20gZ2Fs
YXh5Lm1hbmFnZXJzIGltcG9ydCBoZGFzCj0yMAogaW1wb3J0IGxvZ2dpbmcKIGxvZyA9M0QgbG9n
Z2luZy5nZXRMb2dnZXIoIF9fbmFtZV9fICkKQEAgLTM1LDYgKzM0LDcgQEAKPTIwCiAgICAgZGVm
IF9faW5pdF9fKCBzZWxmLCBhcHAsICphcmdzLCAqKmt3YXJncyApOgogICAgICAgICBzdXBlcigg
SGlzdG9yeU1hbmFnZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwLCAqYXJncywgKiprd2FyZ3MgKQor
CiAgICAgICAgIHNlbGYuaGRhX21hbmFnZXIgPTNEIGhkYXMuSERBTWFuYWdlciggYXBwICkKPTIw
CiAgICAgZGVmIGNvcHkoIHNlbGYsIHRyYW5zLCBoaXN0b3J5LCB1c2VyLCAqKmt3YXJncyApOgpA
QCAtNTEsNyArNTEsNyBAQAogICAgICAgICBpZiBub3QgdXNlcjoKICAgICAgICAgICAgIHJldHVy
biBOb25lIGlmIHRyYW5zLmhpc3RvcnkuZGVsZXRlZCBlbHNlIHRyYW5zLmhpc3RvcnkKICAgICAg
ICAgZGVzY191cGRhdGVfdGltZSA9M0Qgc2VsZi5tb2RlbF9jbGFzcy50YWJsZS5jLnVwZGF0ZV90
aW1lCi0gICAgICAgIHJldHVybiBzZWxmLmJ5X3VzZXIoIHRyYW5zLCB1c2VyLCBvcmRlcl9ieT0z
RGRlc2NfdXBkYXRlX3RpbWUsIGxpbT0KaXQ9M0QxLCAqKmt3YXJncyApCisgICAgICAgIHJldHVy
biBzZWxmLl9xdWVyeV9ieV91c2VyKCB0cmFucywgdXNlciwgb3JkZXJfYnk9M0RkZXNjX3VwZGF0
ZV90aT0KbWUsIGxpbWl0PTNEMSwgKiprd2FyZ3MgKS5maXJzdCgpCj0yMAogICAgICMgLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi49Ci4uLi4uIHNoYXJhYmxlCiAgICAgIyBvdmVycmlkaW5nIHRvIGhhbmRsZSBhbm9ueW1v
dXMgdXNlcnMnIGN1cnJlbnQgaGlzdG9yaWVzIGluIGJvdGggY2FzZXMKQEAgLTEyNCw3ICsxMjQs
NyBAQAogICAgICAgICAjVE9ETzogaW5zdGFudGlhdGUgaGVyZT8gcmVhbGx5PwogICAgICAgICBo
aXN0b3J5X3NlcmlhbGl6ZXIgPTNEIEhpc3RvcnlTZXJpYWxpemVyKCBzZWxmLmFwcCApCiAgICAg
ICAgIGhkYV9zZXJpYWxpemVyID0zRCBoZGFzLkhEQVNlcmlhbGl6ZXIoIHNlbGYuYXBwICkKLSAg
ICAgICAgY29sbGVjdGlvbl9kaWN0aWZpZXIgPTNEIGNvbGxlY3Rpb25zX3V0aWwuZGljdGlmeV9k
YXRhc2V0X2NvbGxlY3RpPQpvbl9pbnN0YW5jZQorICAgICAgICBjb2xsZWN0aW9uX2RpY3RpZmll
ciA9M0QgbWFuYWdlcnMuY29sbGVjdGlvbnNfdXRpbC5kaWN0aWZ5X2RhdGFzZXQ9Cl9jb2xsZWN0
aW9uX2luc3RhbmNlCj0yMAogICAgICAgICBoaXN0b3J5X2RpY3Rpb25hcnkgPTNEIHt9CiAgICAg
ICAgIGNvbnRlbnRzX2RpY3Rpb25hcmllcyA9M0QgW10KQEAgLTI0MiwxNCArMjQyLDE3IEBACj0y
MAo9MjAKICMjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9Cj0zRD0zRD0zRD0zRAotY2xhc3MgSGlzdG9yeVNlcmlhbGl6ZXIoIHNoYXJhYmxlLlNo
YXJhYmxlTW9kZWxTZXJpYWxpemVyICk6CitjbGFzcyBIaXN0b3J5U2VyaWFsaXplciggc2hhcmFi
bGUuU2hhcmFibGVNb2RlbFNlcmlhbGl6ZXIsIGJhc2UuUHVyZ2FibGVNbz0KZGVsU2VyaWFsaXpl
ciApOgogICAgICIiIgogICAgIEludGVyZmFjZS9zZXJ2aWNlIG9iamVjdCBmb3Igc2VyaWFsaXpp
bmcgaGlzdG9yaWVzIGludG8gZGljdGlvbmFyaWVzLgogICAgICIiIgorICAgIFNJTkdMRV9DSEFS
X0FCQlIgPTNEICdoJwo9MjAKICAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgogICAgICAg
ICBzdXBlciggSGlzdG9yeVNlcmlhbGl6ZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwICkKICAgICAg
ICAgc2VsZi5oaXN0b3J5X21hbmFnZXIgPTNEIEhpc3RvcnlNYW5hZ2VyKCBhcHAgKQorCisgICAg
ICAgIGZyb20gZ2FsYXh5Lm1hbmFnZXJzIGltcG9ydCBoZGFzCiAgICAgICAgIHNlbGYuaGRhX21h
bmFnZXIgPTNEIGhkYXMuSERBTWFuYWdlciggYXBwICkKICAgICAgICAgc2VsZi5oZGFfc2VyaWFs
aXplciA9M0QgaGRhcy5IREFTZXJpYWxpemVyKCBhcHAgKQo9MjAKQEAgLTI1NywxMiArMjYwLDE0
IEBACiAgICAgICAgICAgICAnaWQnLAogICAgICAgICAgICAgJ21vZGVsX2NsYXNzJywKICAgICAg
ICAgICAgICduYW1lJywKLSAgICAgICAgICAgICdkZWxldGVkJywgJ3B1cmdlZCcsCisgICAgICAg
ICAgICAnZGVsZXRlZCcsCisgICAgICAgICAgICAjJ3B1cmdlZCcsCisgICAgICAgICAgICAjJ2Nv
dW50JworICAgICAgICAgICAgJ3VybCcsCisgICAgICAgICAgICAjVE9ETzogd2h5IHRoZXNlPwog
ICAgICAgICAgICAgJ3B1Ymxpc2hlZCcsCi0gICAgICAgICAgICAjJ2NvdW50JwogICAgICAgICAg
ICAgJ2Fubm90YXRpb24nLAogICAgICAgICAgICAgJ3RhZ3MnLAotICAgICAgICAgICAgJ3VybCcK
ICAgICAgICAgXQogICAgICAgICAjIGluIHRoZSBIaXN0b3J5cycgY2FzZSwgZWFjaCBvZiB0aGVz
ZSB2aWV3cyBpbmNsdWRlcyB0aGUga2V5cyBmcm89Cm0gdGhlIHByZXZpb3VzCiAgICAgICAgIGRl
dGFpbGVkX3ZpZXcgPTNEIHN1bW1hcnlfdmlldyArIFsKQEAgLTI3Miw5ICsyNzcsOCBAQAogICAg
ICAgICAgICAgJ3NpemUnLCAnbmljZV9zaXplJywKICAgICAgICAgICAgICd1c2VyX2lkJywKICAg
ICAgICAgICAgICdjcmVhdGVfdGltZScsICd1cGRhdGVfdGltZScsCi0gICAgICAgICAgICAnaW1w
b3J0YWJsZScsICdzbHVnJywKKyAgICAgICAgICAgICdpbXBvcnRhYmxlJywgJ3NsdWcnLCAndXNl
cm5hbWVfYW5kX3NsdWcnLAogICAgICAgICAgICAgJ2dlbm9tZV9idWlsZCcsCi0gICAgICAgICAg
ICAjdXNlcm5hbWVfYW5kX3NsdWcgPTNEICggJy8nICkuam9pbigoICd1JywgaGlzdG9yeS51c2Vy
LnVzZXJuYT0KbWUsICdoJywgaGlzdG9yeV9kaWN0WyAnc2x1ZycgXSApKQogICAgICAgICAgICAg
I1RPRE86IHJlbW92ZSB0aGUgbmV4dCB0aHJlZSAtIGluc3RlYWQgZ2V0dGluZyB0aGUgc2FtZSBp
bmZvIGY9CnJvbSB0aGUgJ2hkYXMnIGxpc3QKICAgICAgICAgICAgICdzdGF0ZScsCiAgICAgICAg
ICAgICAnc3RhdGVfZGV0YWlscycsCkBAIC0yOTMsMTMgKzI5NywxNCBAQAogICAgICNhc3N1bWVz
OiBvdXRnb2luZyB0byBqc29uLmR1bXBzIGFuZCBzYW5pdGl6ZWQKICAgICBkZWYgYWRkX3Nlcmlh
bGl6ZXJzKCBzZWxmICk6CiAgICAgICAgIHN1cGVyKCBIaXN0b3J5U2VyaWFsaXplciwgc2VsZiAp
LmFkZF9zZXJpYWxpemVycygpCisgICAgICAgIGJhc2UuUHVyZ2FibGVNb2RlbFNlcmlhbGl6ZXIu
YWRkX3NlcmlhbGl6ZXJzKCBzZWxmICkKKwogICAgICAgICBzZWxmLnNlcmlhbGl6ZXJzLnVwZGF0
ZSh7CiAgICAgICAgICAgICAnbW9kZWxfY2xhc3MnICAgOiBsYW1iZGEgKmE6ICdIaXN0b3J5JywK
ICAgICAgICAgICAgICdpZCcgICAgICAgICAgICA6IHNlbGYuc2VyaWFsaXplX2lkLAogICAgICAg
ICAgICAgJ2NvdW50JyAgICAgICAgIDogbGFtYmRhIHRyYW5zLCBpdGVtLCBrZXk6IGxlbiggaXRl
bS5kYXRhc2V0cyA9CiksCiAgICAgICAgICAgICAnY3JlYXRlX3RpbWUnICAgOiBzZWxmLnNlcmlh
bGl6ZV9kYXRlLAogICAgICAgICAgICAgJ3VwZGF0ZV90aW1lJyAgIDogc2VsZi5zZXJpYWxpemVf
ZGF0ZSwKLSAgICAgICAgICAgICd1c2VyX2lkJyAgICAgICA6IHNlbGYuc2VyaWFsaXplX2lkLAog
ICAgICAgICAgICAgJ3NpemUnICAgICAgICAgIDogbGFtYmRhIHQsIGksIGs6IGludCggaS5nZXRf
ZGlza19zaXplKCkgKSwKICAgICAgICAgICAgICduaWNlX3NpemUnICAgICA6IGxhbWJkYSB0LCBp
LCBrOiBpLmdldF9kaXNrX3NpemUoIG5pY2Vfc2l6ZT0KPTNEVHJ1ZSApLAo9MjAKQEAgLTMzNiwy
NiArMzQxLDIyIEBACj0yMAo9MjAKICMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECi1jbGFzcyBIaXN0b3J5RGVzZXJpYWxp
emVyKCBzaGFyYWJsZS5TaGFyYWJsZU1vZGVsRGVzZXJpYWxpemVyICk6CitjbGFzcyBIaXN0b3J5
RGVzZXJpYWxpemVyKCBzaGFyYWJsZS5TaGFyYWJsZU1vZGVsRGVzZXJpYWxpemVyLCBiYXNlLlB1
cmdhYj0KbGVNb2RlbERlc2VyaWFsaXplciApOgogICAgICIiIgogICAgIEludGVyZmFjZS9zZXJ2
aWNlIG9iamVjdCBmb3IgdmFsaWRhdGluZyBhbmQgZGVzZXJpYWxpemluZyBkaWN0aW9uYXJpZXM9
CiBpbnRvIGhpc3Rvcmllcy4KICAgICAiIiIKKyAgICBtb2RlbF9tYW5hZ2VyX2NsYXNzID0zRCBI
aXN0b3J5TWFuYWdlcgo9MjAKICAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgogICAgICAg
ICBzdXBlciggSGlzdG9yeURlc2VyaWFsaXplciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQotICAg
ICAgICBzZWxmLmhpc3RvcnlfbWFuYWdlciA9M0QgSGlzdG9yeU1hbmFnZXIoIGFwcCApCisgICAg
ICAgIHNlbGYuaGlzdG9yeV9tYW5hZ2VyID0zRCBzZWxmLm1hbmFnZXIKPTIwCiAgICAgI2Fzc3Vt
ZXM6IGluY29taW5nIGZyb20ganNvbi5sb2FkcyBhbmQgc2FuaXRpemVkCiAgICAgZGVmIGFkZF9k
ZXNlcmlhbGl6ZXJzKCBzZWxmICk6CiAgICAgICAgIHN1cGVyKCBIaXN0b3J5RGVzZXJpYWxpemVy
LCBzZWxmICkuYWRkX2Rlc2VyaWFsaXplcnMoKQorICAgICAgICBiYXNlLlB1cmdhYmxlTW9kZWxE
ZXNlcmlhbGl6ZXIuYWRkX2Rlc2VyaWFsaXplcnMoIHNlbGYgKQorCiAgICAgICAgIHNlbGYuZGVz
ZXJpYWxpemVycy51cGRhdGUoewogICAgICAgICAgICAgJ25hbWUnICAgICAgICAgIDogc2VsZi5k
ZXNlcmlhbGl6ZV9iYXNlc3RyaW5nLAogICAgICAgICAgICAgJ2dlbm9tZV9idWlsZCcgIDogc2Vs
Zi5kZXNlcmlhbGl6ZV9nZW5vbWVfYnVpbGQsCi0KLSAgICAgICAgICAgICMgbWl4aW46IGRlbGV0
YWJsZQotICAgICAgICAgICAgJ2RlbGV0ZWQnICAgICAgIDogc2VsZi5kZXNlcmlhbGl6ZV9ib29s
LAotICAgICAgICAgICAgIyBzaGFyYWJsZQotICAgICAgICAgICAgJ3B1Ymxpc2hlZCcgICAgIDog
c2VsZi5kZXNlcmlhbGl6ZV9ib29sLAotICAgICAgICAgICAgJ2ltcG9ydGFibGUnICAgIDogc2Vs
Zi5kZXNlcmlhbGl6ZV9ib29sLAogICAgICAgICB9KQotICAgICAgICBzZWxmLmRlc2VyaWFsaXph
YmxlX2tleXMgPTNEIHNlbGYuZGVzZXJpYWxpemVycy5rZXlzKCkKCmRpZmYgLXIgMzEzNTdlZGYy
NjBlYTZiMjU5ZGM2ODIzMGYzMDgzYjNmMGZhZmNhMCAtciAxNDc5NmFjODY3ZWIwYzdkYzUxN2Vl
ZD0KYTFlYzgyNTBjOWI4NjhiYjcgbGliL2dhbGF4eS9tYW5hZ2Vycy9sZGRhcy5weQotLS0gYS9s
aWIvZ2FsYXh5L21hbmFnZXJzL2xkZGFzLnB5CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvbGRk
YXMucHkKQEAgLTEsOCArMSw5IEBACi1mcm9tIGdhbGF4eS5tYW5hZ2VycyBpbXBvcnQgYmFzZSBh
cyBtYW5hZ2VyX2Jhc2UKKyNmcm9tIGdhbGF4eS5tYW5hZ2VycyBpbXBvcnQgYmFzZSBhcyBtYW5h
Z2VyX2Jhc2UKPTIwCj0yMAotY2xhc3MgTEREQU1hbmFnZXIoIG1hbmFnZXJfYmFzZS5Nb2RlbE1h
bmFnZXIgKToKLSAgICAiIiIgQSBmYWlybHkgc3BhcnNlIG1hbmFnZXIgZm9yIExEREFzLgorY2xh
c3MgTEREQU1hbmFnZXIoIG9iamVjdCApOgorICAgICIiIgorICAgIEEgZmFpcmx5IHNwYXJzZSBt
YW5hZ2VyIGZvciBMRERBcy4KICAgICAiIiIKPTIwCiAgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBh
cHAgKToKCmRpZmYgLXIgMzEzNTdlZGYyNjBlYTZiMjU5ZGM2ODIzMGYzMDgzYjNmMGZhZmNhMCAt
ciAxNDc5NmFjODY3ZWIwYzdkYzUxN2VlZD0KYTFlYzgyNTBjOWI4NjhiYjcgbGliL2dhbGF4eS9t
YW5hZ2Vycy9wYWdlcy5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL3BhZ2VzLnB5CisrKyBi
L2xpYi9nYWxheHkvbWFuYWdlcnMvcGFnZXMucHkKQEAgLTgsMTEgKzgsMTAgQEAKPTIwCiBmcm9t
IGdhbGF4eSBpbXBvcnQgZXhjZXB0aW9ucwogZnJvbSBnYWxheHkgaW1wb3J0IG1vZGVsCitpbXBv
cnQgZ2FsYXh5LndlYgo9MjAKLWltcG9ydCBiYXNlCi1pbXBvcnQgc2hhcmFibGUKLQotaW1wb3J0
IGdhbGF4eS53ZWIKK2Zyb20gZ2FsYXh5Lm1hbmFnZXJzIGltcG9ydCBiYXNlCitmcm9tIGdhbGF4
eS5tYW5hZ2VycyBpbXBvcnQgc2hhcmFibGUKPTIwCiBpbXBvcnQgbG9nZ2luZwogbG9nID0zRCBs
b2dnaW5nLmdldExvZ2dlciggX19uYW1lX18gKQpAQCAtNzcsMTAgKzc2LDExIEBACiAgICAgSW50
ZXJmYWNlL3NlcnZpY2Ugb2JqZWN0IGZvciB2YWxpZGF0aW5nIGFuZCBkZXNlcmlhbGl6aW5nIGRp
Y3Rpb25hcmllcwogICAgIGludG8gcGFnZXMuCiAgICAgIiIiCisgICAgbW9kZWxfbWFuYWdlcl9j
bGFzcyA9M0QgUGFnZU1hbmFnZXIKPTIwCiAgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToK
ICAgICAgICAgc3VwZXIoIFBhZ2VEZXNlcmlhbGl6ZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwICkK
LSAgICAgICAgc2VsZi5wYWdlX21hbmFnZXIgPTNEIFBhZ2VNYW5hZ2VyKCBhcHAgKQorICAgICAg
ICBzZWxmLnBhZ2VfbWFuYWdlciA9M0Qgc2VsZi5tYW5hZ2VyCj0yMAogICAgIGRlZiBhZGRfZGVz
ZXJpYWxpemVycyggc2VsZiApOgogICAgICAgICBzdXBlciggUGFnZURlc2VyaWFsaXplciwgc2Vs
ZiApLmFkZF9kZXNlcmlhbGl6ZXJzKCkKCmRpZmYgLXIgMzEzNTdlZGYyNjBlYTZiMjU5ZGM2ODIz
MGYzMDgzYjNmMGZhZmNhMCAtciAxNDc5NmFjODY3ZWIwYzdkYzUxN2VlZD0KYTFlYzgyNTBjOWI4
NjhiYjcgbGliL2dhbGF4eS9tYW5hZ2Vycy9zaGFyYWJsZS5weQotLS0gYS9saWIvZ2FsYXh5L21h
bmFnZXJzL3NoYXJhYmxlLnB5CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvc2hhcmFibGUucHkK
QEAgLTE0LDExICsxNCwxMSBAQAo9MjAKIGZyb20gZ2FsYXh5IGltcG9ydCBleGNlcHRpb25zCj0y
MAotaW1wb3J0IGJhc2UKLWltcG9ydCB0YWdnYWJsZQotaW1wb3J0IGFubm90YXRhYmxlCi1pbXBv
cnQgcmF0YWJsZQotaW1wb3J0IHVzZXJzCitmcm9tIGdhbGF4eS5tYW5hZ2VycyBpbXBvcnQgYmFz
ZQorZnJvbSBnYWxheHkubWFuYWdlcnMgaW1wb3J0IHRhZ2dhYmxlCitmcm9tIGdhbGF4eS5tYW5h
Z2VycyBpbXBvcnQgYW5ub3RhdGFibGUKK2Zyb20gZ2FsYXh5Lm1hbmFnZXJzIGltcG9ydCByYXRh
YmxlCitmcm9tIGdhbGF4eS5tYW5hZ2VycyBpbXBvcnQgdXNlcnMKPTIwCiBpbXBvcnQgbG9nZ2lu
ZwogbG9nID0zRCBsb2dnaW5nLmdldExvZ2dlciggX19uYW1lX18gKQpAQCAtMjgsMTAgKzI4LDE0
IEBACiBjbGFzcyBTaGFyYWJsZU1vZGVsTWFuYWdlciggYmFzZS5Nb2RlbE1hbmFnZXIsIGJhc2Uu
T3duYWJsZU1vZGVsSW50ZXJmYWNlLD0KIGJhc2UuQWNjZXNzaWJsZU1vZGVsSW50ZXJmYWNlLAog
ICAgICAgICB0YWdnYWJsZS5UYWdnYWJsZU1hbmFnZXJJbnRlcmZhY2UsIGFubm90YXRhYmxlLkFu
bm90YXRhYmxlTWFuYWdlckk9Cm50ZXJmYWNlLCByYXRhYmxlLlJhdGFibGVNYW5hZ2VySW50ZXJm
YWNlICk6CiAgICAgIyBlLmcuIGhpc3RvcmllcywgcGFnZXMsIHN0b3JlZCB3b3JrZmxvd3MsIHZp
c3VhbGl6YXRpb25zCisgICAgIyBiYXNlLkRlbGV0ZWFibGVNb2RlbEludGVyZmFjZT8KPTIwCiAg
ICAgIyB0aGUgbW9kZWwgdXNlZCBmb3IgVXNlclNoYXJlQXNzb2NpYXRpb25zIHdpdGggdGhpcyBt
b2RlbAogICAgIHVzZXJfc2hhcmVfbW9kZWwgPTNEIE5vbmUKPTIwCisgICAgIzogdGhlIHNpbmds
ZSBjaGFyYWN0ZXIgYWJicmV2aWF0aW9uIHVzZWQgaW4gdXNlcm5hbWVfYW5kX3NsdWc6IGUuZy4g
Jz0KaCcgZm9yIGhpc3RvcmllczogdS91c2VyL2gvc2x1ZworICAgIFNJTkdMRV9DSEFSX0FCQlIg
PTNEIE5vbmUKKwogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CiAgICAgICAgIHN1cGVy
KCBTaGFyYWJsZU1vZGVsTWFuYWdlciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQogICAgICAgICAj
IHVzZXIgbWFuYWdlciBpcyBuZWVkZWQgdG8gY2hlY2sgYWNjZXNzL293bmVyc2hpcC9hZG1pbgpA
QCAtODYsOCArOTAsNiBAQAogICAgICAgICByZXR1cm4gRmFsc2UKPTIwCiAgICAgIyAuLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLj0KLi4uLi4gaW1wb3J0YWJsZQotI1RPRE86IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBp
bXBvcnRhYmxlIGFuZCBwdWJsaXNoZWQgaXMgaWxsIGRlZmluZWQKLSM/PzogY2FuIGEgcHVibGlz
aGVkIGl0ZW0gYmUgbm9uLWltcG9ydGFibGU/CiAgICAgZGVmIG1ha2VfaW1wb3J0YWJsZSggc2Vs
ZiwgdHJhbnMsIGl0ZW0sIGZsdXNoPTNEVHJ1ZSApOgogICAgICAgICAiIiIKICAgICAgICAgTWFr
ZXMgaXRlbSBhY2Nlc3NpYmxlLS12aWV3YWJsZSBhbmQgaW1wb3J0YWJsZS0tYW5kIHNldHMgaXRl
bSdzIHNsPQp1Zy4KQEAgLTEwNywxMiArMTA5LDEwIEBACiAgICAgICAgIERvZXMgbm90IGZsdXNo
L2NvbW1pdCBjaGFuZ2VzLCBob3dldmVyLiBJdGVtIG11c3QgaGF2ZSBuYW1lLCB1c2VyLAogICAg
ICAgICBpbXBvcnRhYmxlLCBhbmQgc2x1ZyBhdHRyaWJ1dGVzLgogICAgICAgICAiIiIKLSAgICAg
ICAgI2lmIGl0ZW0ucHVibGlzaGVkOgotICAgICAgICAjICAgIGlmIHVucHVibGlzaDoKLSAgICAg
ICAgIyAgICAgICAgc2VsZi51bnB1Ymxpc2goIHRyYW5zLCBpdGVtLCBmbHVzaD0zREZhbHNlICkK
LSAgICAgICAgIyAgICBlbHNlOgotICAgICAgICAjICAgICAgICByYWlzZSBleGNlcHRpb25zLkJh
ZFJlcXVlc3QoICdJdGVtIG11c3QgYmUgbm9uLXB1Ymxpc2hlZCA9CnRvIGJlIGluYWNjZXNzaWJs
ZScsIGl0ZW09M0RpdGVtICkKKyAgICAgICAgIyBpdGVtIG11c3QgYmUgdW5wdWJsaXNoZWQgaWYg
bm9uLWltcG9ydGFibGUKICAgICAgICAgc2VsZi5hcHAubW9kZWwuY29udGV4dC5hZGQoIGl0ZW0g
KQorICAgICAgICBpZiBpdGVtLnB1Ymxpc2hlZDoKKyAgICAgICAgICAgIHNlbGYudW5wdWJsaXNo
KCB0cmFucywgaXRlbSwgZmx1c2g9M0RGYWxzZSApCiAgICAgICAgIGl0ZW0uaW1wb3J0YWJsZSA9
M0QgRmFsc2UKICAgICAgICAgaWYgZmx1c2g6CiAgICAgICAgICAgICBzZWxmLmFwcC5tb2RlbC5j
b250ZXh0LmZsdXNoKCkKQEAgLTEzMiwxOSArMTMyLDExIEBACiAgICAgIyAgICByZXR1cm4gc2Vs
Zi5saXN0KCB0cmFucywgcXVlcnk9M0RxdWVyeSwgKiprd2FyZ3MgKQo9MjAKICAgICAjIC4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uPQouLi4uLiBwdWJsaXNoZWQKLSNUT0RPOiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4g
aW1wb3J0YWJsZSBhbmQgcHVibGlzaGVkIGlzIGlsbCBkZWZpbmVkCi0gICAgI2RlZiBwdWJsaXNo
KCBzZWxmLCB0cmFucywgaXRlbSwgbWFrZV9hY2Nlc3NpYmxlPTNEVHJ1ZSwgZmx1c2g9M0RUcnVl
ID0KKToKLSAgICAjICAgIGlmIG5vdCBpdGVtLmltcG9ydGFibGU6Ci0gICAgIyAgICAgICAgaWYg
bWFrZV9hY2Nlc3NpYmxlOgotICAgICMgICAgICAgICAgICBzZWxmLm1ha2VfYWNjZXNzaWJsZSgg
dHJhbnMsIGl0ZW0sIGZsdXNoPTNERmFsc2UgKQotICAgICMgICAgICAgIGVsc2U6Ci0gICAgIyAg
ICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuUmVxdWVzdFBhcmFtZXRlckludmFsaWRFeGNlcHRp
b24oICdJdGVtID0KbXVzdCBiZSBpbXBvcnRhYmxlIHRvIGJlIHB1Ymxpc2hlZCcsCi0gICAgIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGl0ZW09Cj0zRHN0ciggaXRlbSApICkKLSAgICAjIGEgcHVibGlzaGVkIGl0ZW0gaXMgYWxz
by9hbHJlYWR5IGltcG9ydGFibGUoPTNEVHJ1ZSkgaW1wbGljaXRseQogICAgIGRlZiBwdWJsaXNo
KCBzZWxmLCB0cmFucywgaXRlbSwgZmx1c2g9M0RUcnVlICk6CiAgICAgICAgICIiIgogICAgICAg
ICBTZXQgYm90aCB0aGUgaW1wb3J0YWJsZSBhbmQgcHVibGlzaGVkIGZsYWdzIG9uIGBpdGVtYCB0
byBUcnVlLgogICAgICAgICAiIiIKKyAgICAgICAgIyBpdGVtIG11c3QgYmUgaW1wb3J0YWJsZSB0
byBiZSBwdWJsaXNoZWQKICAgICAgICAgaWYgbm90IGl0ZW0uaW1wb3J0YWJsZToKICAgICAgICAg
ICAgIHNlbGYubWFrZV9pbXBvcnRhYmxlKCB0cmFucywgaXRlbSwgZmx1c2g9M0RGYWxzZSApCiAg
ICAgICAgIHNlbGYuYXBwLm1vZGVsLmNvbnRleHQuYWRkKCBpdGVtICkKQEAgLTI0Niw2ICsyMzgs
MjMgQEAKICAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBzbHVncwogICAgICMgc2x1Z3MgYXJlIGh1
bWFuIHJlYWRhYmxlIHN0cmluZ3Mgb2Z0ZW4gdXNlZCB0byBsaW5rIHRvIHNoYXJhYmxlIHJlc289
CnVyY2VzIChyZXBsYWNpbmcgaWRzKQogICAgICNUT0RPOiBhcyB2YWxpZGF0b3IsIGRlc2VyaWFs
aXplciwgZXRjLiAobWF5YmUgYW5vdGhlciBvYmplY3QgZW50aXJlbHk9Cj8pCisgICAgZGVmIHNl
dF9zbHVnKCBzZWxmLCB0cmFucywgaXRlbSwgbmV3X3NsdWcsIGZsdXNoPTNEVHJ1ZSApOgorICAg
ICAgICAiIiIKKyAgICAgICAgVmFsaWRhdGUgYW5kIHNldCB0aGUgbmV3IHNsdWcgZm9yIGBpdGVt
YC4KKyAgICAgICAgIiIiCisgICAgICAgICMgcHJlY29uZGl0aW9uOiBoYXMgYmVlbiB2YWxpZGF0
ZWQKKyAgICAgICAgaWYgbm90IHNlbGYuaXNfdmFsaWRfc2x1ZyggbmV3X3NsdWcgKToKKyAgICAg
ICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuUmVxdWVzdFBhcmFtZXRlckludmFsaWRFeGNlcHRpb24o
ICJJbnZhbGlkIHNsPQp1ZyIsIHNsdWc9M0RuZXdfc2x1ZyApCisKKyAgICAgICAgIyBlcnJvciBp
ZiBzbHVnIGlzIGFscmVhZHkgaW4gdXNlCisgICAgICAgIGlmIHNlbGYuX3NsdWdfZXhpc3RzKCB0
cmFucywgdXNlciwgc2x1ZyApOgorICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5Db25mbGlj
dCggIlNsdWcgYWxyZWFkeSBleGlzdHMiLCBzbHVnPTNEbmV3X3M9Cmx1ZyApCisKKyAgICAgICAg
aXRlbS5zbHVnID0zRCBuZXdfc2x1ZworICAgICAgICBpZiBmbHVzaDoKKyAgICAgICAgICAgIHNl
bGYuYXBwLm1vZGVsLmNvbnRleHQuZmx1c2goKQorICAgICAgICByZXR1cm4gaXRlbQorCiAgICAg
ZGVmIGlzX3ZhbGlkX3NsdWcoIHNlbGYsIHNsdWcgKToKICAgICAgICAgIiIiCiAgICAgICAgIFJl
dHVybnMgdHJ1ZSBpZiBgc2x1Z2AgaXMgdmFsaWQuCkBAIC0yNTMsMjMgKzI2MiwzMSBAQAogICAg
ICAgICBWQUxJRF9TTFVHX1JFID0zRCByZS5jb21waWxlKCAiXlthLXowLTlcLV0rJCIgKQogICAg
ICAgICByZXR1cm4gVkFMSURfU0xVR19SRS5tYXRjaCggc2x1ZyApCj0yMAotICAgIGRlZiBzZXRf
c2x1Zyggc2VsZiwgdHJhbnMsIGl0ZW0sIG5ld19zbHVnLCBmbHVzaD0zRFRydWUgKToKLSAgICAg
ICAgIiIiCi0gICAgICAgIFZhbGlkYXRlIGFuZCBzZXQgdGhlIG5ldyBzbHVnIGZvciBgaXRlbWAu
Ci0gICAgICAgICIiIgotICAgICAgICBpZiBub3Qgc2VsZi5pc192YWxpZF9zbHVnKCBuZXdfc2x1
ZyApOgotICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5SZXF1ZXN0UGFyYW1ldGVySW52YWxp
ZEV4Y2VwdGlvbiggIkludmFsaWQgc2w9CnVnIiwgc2x1Zz0zRG5ld19zbHVnICkKKyAgICBkZWYg
X2V4aXN0aW5nX3NldF9vZl9zbHVncyggc2VsZiwgdHJhbnMsIHVzZXIgKToKKyAgICAgICAgcXVl
cnkgPTNEICggc2VsZi5hcHAubW9kZWwuY29udGV4dC5xdWVyeSggc2VsZi5tb2RlbF9jbGFzcy5z
bHVnICkKKyAgICAgICAgICAgICAgICAgICAgLmZpbHRlcl9ieSggdXNlcj0zRHVzZXIgKSApCisg
ICAgICAgIHJldHVybiBzZXQoIHF1ZXJ5LmFsbCgpICkKPTIwCi0gICAgICAgICMgZXJyb3IgaWYg
c2x1ZyBpcyBhbHJlYWR5IGluIHVzZQotICAgICAgICBleGlzdGluZ19tYXRjaCA9M0QgKCBzZWxm
LmFwcC5tb2RlbC5jb250ZXh0LnF1ZXJ5KCBzZWxmLm1vZGVsX2NsYXM9CnMgKQotICAgICAgICAg
ICAgLmZpbHRlcl9ieSggdXNlcj0zRGl0ZW0udXNlciwgc2x1Zz0zRG5ld19zbHVnLCBpbXBvcnRh
YmxlPTNEVHI9CnVlICkgKQotICAgICAgICBpZiggZXhpc3RpbmdfbWF0Y2guY291bnQoKSAhPTNE
IDAgKToKLSAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuQmFkUmVxdWVzdCggIlNsdWcgYWxy
ZWFkeSBleGlzdHMiLCBzbHVnPTNEbmV3PQpfc2x1ZyApCisgICAgZGVmIF9zbHVnX2V4aXN0cygg
c2VsZiwgdHJhbnMsIHVzZXIsIHNsdWcgKToKKyAgICAgICAgcXVlcnkgPTNEICggc2VsZi5hcHAu
bW9kZWwuY29udGV4dC5xdWVyeSggc2VsZi5tb2RlbF9jbGFzcy5zbHVnICkKKyAgICAgICAgICAg
ICAgICAgICAgLmZpbHRlcl9ieSggdXNlcj0zRHVzZXIsIHNsdWc9M0RzbHVnICkgKQorICAgICAg
ICByZXR1cm4gcXVlcnkuY291bnQoKSAhPTNEIDAKPTIwCi0gICAgICAgIGl0ZW0uc2x1ZyA9M0Qg
bmV3X3NsdWcKLSAgICAgICAgaWYgZmx1c2g6Ci0gICAgICAgICAgICBzZWxmLmFwcC5tb2RlbC5j
b250ZXh0LmZsdXNoKCkKLSAgICAgICAgcmV0dXJuIGl0ZW0KKyAgICBkZWYgX3NsdWdpZnkoIHNl
bGYsIHN0YXJ0X3dpdGggKToKKyAgICAgICAgIyBSZXBsYWNlIHdoaXRlc3BhY2Ugd2l0aCAnLScK
KyAgICAgICAgc2x1Z19iYXNlID0zRCByZS5zdWIoICJccysiLCAiLSIsIHN0YXJ0X3dpdGggKQor
ICAgICAgICAjIFJlbW92ZSBhbGwgbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLgorICAgICAg
ICBzbHVnX2Jhc2UgPTNEIHJlLnN1YiggIlteYS16QS1aMC05XC1dIiwgIiIsIHNsdWdfYmFzZSAp
CisgICAgICAgICMgUmVtb3ZlIHRyYWlsaW5nICctJy4KKyAgICAgICAgaWYgc2x1Z19iYXNlLmVu
ZHN3aXRoKCctJyk6CisgICAgICAgICAgICBzbHVnX2Jhc2UgPTNEIHNsdWdfYmFzZVs6LTFdCisg
ICAgICAgIHJldHVybiBzbHVnX2Jhc2UKKworICAgIGRlZiBfZGVmYXVsdF9zbHVnX2Jhc2UoIHNl
bGYsIHRyYW5zLCBpdGVtICk6CisgICAgICAgICMgb3ZlcnJpZGUgaW4gc3ViY2xhc3NlcworICAg
ICAgICBpZiBoYXNhdHRyKCBpdGVtLCAndGl0bGUnICk6CisgICAgICAgICAgICByZXR1cm4gaXRl
bS50aXRsZS5sb3dlcigpCisgICAgICAgIHJldHVybiBpdGVtLm5hbWUubG93ZXIoKQo9MjAKICAg
ICBkZWYgZ2V0X3VuaXF1ZV9zbHVnKCBzZWxmLCB0cmFucywgaXRlbSApOgogICAgICAgICAiIiIK
QEAgLTI4MCwxOSArMjk3LDcgQEAKPTIwCiAgICAgICAgICMgU2V0dXAgc2x1ZyBiYXNlLgogICAg
ICAgICBpZiBjdXJfc2x1ZyBpcyBOb25lIG9yIGN1cl9zbHVnID0zRD0zRCAiIjoKLSAgICAgICAg
ICAgICMgSXRlbSBjYW4gaGF2ZSBlaXRoZXIgYSBuYW1lIG9yIGEgdGl0bGUuCi0jVE9ETzogdGhp
cyBkZXBlbmRzIG9uIHRoZSBtb2RlbCBoYXZpbmcgbmFtZSBvciB0aXRsZQotICAgICAgICAgICAg
aWYgaGFzYXR0ciggaXRlbSwgJ25hbWUnICk6Ci0gICAgICAgICAgICAgICAgaXRlbV9uYW1lID0z
RCBpdGVtLm5hbWUKLSAgICAgICAgICAgIGVsaWYgaGFzYXR0ciggaXRlbSwgJ3RpdGxlJyApOgot
ICAgICAgICAgICAgICAgIGl0ZW1fbmFtZSA9M0QgaXRlbS50aXRsZQotICAgICAgICAgICAgIyBS
ZXBsYWNlIHdoaXRlc3BhY2Ugd2l0aCAnLScKLSAgICAgICAgICAgIHNsdWdfYmFzZSA9M0QgcmUu
c3ViKCAiXHMrIiwgIi0iLCBpdGVtX25hbWUubG93ZXIoKSApCi0gICAgICAgICAgICAjIFJlbW92
ZSBhbGwgbm9uLWFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLgotICAgICAgICAgICAgc2x1Z19iYXNl
ID0zRCByZS5zdWIoICJbXmEtekEtWjAtOVwtXSIsICIiLCBzbHVnX2Jhc2UgKQotICAgICAgICAg
ICAgIyBSZW1vdmUgdHJhaWxpbmcgJy0nLgotICAgICAgICAgICAgaWYgc2x1Z19iYXNlLmVuZHN3
aXRoKCctJyk6Ci0gICAgICAgICAgICAgICAgc2x1Z19iYXNlID0zRCBzbHVnX2Jhc2VbOi0xXQor
ICAgICAgICAgICAgc2x1Z19iYXNlID0zRCBzZWxmLl9zbHVnaWZ5KCBzZWxmLl9kZWZhdWx0X3Ns
dWdfYmFzZSggdHJhbnMsIGk9CnRlbSApICkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNs
dWdfYmFzZSA9M0QgY3VyX3NsdWcKPTIwCkBAIC0zNDEsNiArMzQ2LDcgQEAKIGNsYXNzIFNoYXJh
YmxlTW9kZWxTZXJpYWxpemVyKCBiYXNlLk1vZGVsU2VyaWFsaXplciwKICAgICAgICAgdGFnZ2Fi
bGUuVGFnZ2FibGVTZXJpYWxpemVyLCBhbm5vdGF0YWJsZS5Bbm5vdGF0YWJsZVNlcmlhbGl6ZXIs
IHJhPQp0YWJsZS5SYXRhYmxlU2VyaWFsaXplciApOgogI1RPRE86IHN0dWIKKyAgICBTSU5HTEVf
Q0hBUl9BQkJSID0zRCBOb25lCj0yMAogICAgIGRlZiBhZGRfc2VyaWFsaXplcnMoIHNlbGYgKToK
ICAgICAgICAgc3VwZXIoIFNoYXJhYmxlTW9kZWxTZXJpYWxpemVyLCBzZWxmICkuYWRkX3Nlcmlh
bGl6ZXJzKCkKQEAgLTM0OCw2ICszNTQsMTkgQEAKICAgICAgICAgYW5ub3RhdGFibGUuQW5ub3Rh
dGFibGVTZXJpYWxpemVyLmFkZF9zZXJpYWxpemVycyggc2VsZiApCiAgICAgICAgIHJhdGFibGUu
UmF0YWJsZVNlcmlhbGl6ZXIuYWRkX3NlcmlhbGl6ZXJzKCBzZWxmICkKPTIwCisgICAgICAgIHNl
bGYuc2VyaWFsaXplcnMudXBkYXRlKHsKKyAgICAgICAgICAgICd1c2VyX2lkJyAgICAgICAgICAg
OiBzZWxmLnNlcmlhbGl6ZV9pZCwKKyAgICAgICAgICAgICd1c2VybmFtZV9hbmRfc2x1ZycgOiBz
ZWxmLnNlcmlhbGl6ZV91c2VybmFtZV9hbmRfc2x1ZworICAgICAgICB9KQorICAgICAgICBzZWxm
LnNlcmlhbGl6YWJsZV9rZXlzLmV4dGVuZChbCisgICAgICAgICAgICAnaW1wb3J0YWJsZScsICdw
dWJsaXNoZWQnLCAnc2x1ZycKKyAgICAgICAgXSkKKworICAgIGRlZiBzZXJpYWxpemVfdXNlcm5h
bWVfYW5kX3NsdWcoIHNlbGYsIHRyYW5zLCBpdGVtLCBrZXkgKToKKyAgICAgICAgaWYgbm90ICgg
aXRlbS51c2VyIGFuZCBpdGVtLnNsdWcgYW5kIHNlbGYuU0lOR0xFX0NIQVJfQUJCUiApOgorICAg
ICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuICggJy8nICkuam9pbigoICd1Jywg
aXRlbS51c2VyLnVzZXJuYW1lLCBzZWxmLlNJTkdMRV9DSEFSX0FCPQpCUiwgaXRlbS5zbHVnICkg
KQorCiAgICAgIyB0aGUgb25seSBvbmVzIHRoYXQgbmVlZHMgYW55IGZuczoKICAgICAjICAgdXNl
ci91c2VyX2lkCiAgICAgIyAgIHVzZXJfc2hhcmVzPwpAQCAtMzcyLDE4ICszOTEsMzcgQEAKICAg
ICAgICAgYW5ub3RhdGFibGUuQW5ub3RhdGFibGVEZXNlcmlhbGl6ZXIuYWRkX2Rlc2VyaWFsaXpl
cnMoIHNlbGYgKQogICAgICAgICByYXRhYmxlLlJhdGFibGVEZXNlcmlhbGl6ZXIuYWRkX2Rlc2Vy
aWFsaXplcnMoIHNlbGYgKQo9MjAKLSAgICAjZGVmIGRlc2VyaWFsaXplX3B1Ymxpc2hlZCggc2Vs
ZiwgdHJhbnMsIGl0ZW0sIHZhbCApOgotICAgICMgICAgIiIiCi0gICAgIyAgICAiIiIKLSAgICAj
ICAgICNUT0RPOiBjYWxsIG1hbmFnZXIucHVibGlzaC91bnB1Ymxpc2gKLSAgICAjICAgIHBhc3MK
LSAgICAjCi0gICAgI2RlZiBkZXNlcmlhbGl6ZV9pbXBvcnRhYmxlKCBzZWxmLCB0cmFucywgaXRl
bSwgdmFsICk6Ci0gICAgIyAgICAiIiIKLSAgICAjICAgICIiIgotICAgICMgICAgI1RPRE86IGNh
bGwgbWFuYWdlci5tYWtlX2ltcG9ydGFibGUvbm9uX2ltcG9ydGFibGUKLSAgICAjICAgIHBhc3MK
LSAgICAjCisgICAgICAgIHNlbGYuZGVzZXJpYWxpemVycy51cGRhdGUoeworICAgICAgICAgICAg
J3B1Ymxpc2hlZCcgICAgIDogc2VsZi5kZXNlcmlhbGl6ZV9wdWJsaXNoZWQsCisgICAgICAgICAg
ICAnaW1wb3J0YWJsZScgICAgOiBzZWxmLmRlc2VyaWFsaXplX2ltcG9ydGFibGUsCisgICAgICAg
IH0pCisKKyAgICBkZWYgZGVzZXJpYWxpemVfcHVibGlzaGVkKCBzZWxmLCB0cmFucywgaXRlbSwg
a2V5LCB2YWwgKToKKyAgICAgICAgIiIiCisgICAgICAgICIiIgorICAgICAgICB2YWwgPTNEIHNl
bGYudmFsaWRhdGUuYm9vbCgga2V5LCB2YWwgKQorICAgICAgICBpZiBpdGVtLnB1Ymxpc2hlZCA9
M0Q9M0QgdmFsOgorICAgICAgICAgICAgcmV0dXJuIHZhbAorCisgICAgICAgIGlmIHZhbDoKKyAg
ICAgICAgICAgIHNlbGYubWFuYWdlci5wdWJsaXNoKCB0cmFucywgaXRlbSwgZmx1c2g9M0RGYWxz
ZSApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLm1hbmFnZXIudW5wdWJsaXNoKCB0
cmFucywgaXRlbSwgZmx1c2g9M0RGYWxzZSApCisgICAgICAgIHJldHVybiBpdGVtLnB1Ymxpc2hl
ZAorCisgICAgZGVmIGRlc2VyaWFsaXplX2ltcG9ydGFibGUoIHNlbGYsIHRyYW5zLCBpdGVtLCBr
ZXksIHZhbCApOgorICAgICAgICAiIiIKKyAgICAgICAgIiIiCisgICAgICAgIHZhbCA9M0Qgc2Vs
Zi52YWxpZGF0ZS5ib29sKCBrZXksIHZhbCApCisgICAgICAgIGlmIGl0ZW0uaW1wb3J0YWJsZSA9
M0Q9M0QgdmFsOgorICAgICAgICAgICAgcmV0dXJuIHZhbAorCisgICAgICAgIGlmIHZhbDoKKyAg
ICAgICAgICAgIHNlbGYubWFuYWdlci5tYWtlX2ltcG9ydGFibGUoIHRyYW5zLCBpdGVtLCBmbHVz
aD0zREZhbHNlICkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYubWFuYWdlci5tYWtl
X25vbl9pbXBvcnRhYmxlKCB0cmFucywgaXRlbSwgZmx1c2g9M0RGYWxzZSApCisgICAgICAgIHJl
dHVybiBpdGVtLnB1Ymxpc2hlZAorCiAgICAgI2RlZiBkZXNlcmlhbGl6ZV9zbHVnKCBzZWxmLCB0
cmFucywgaXRlbSwgdmFsICk6CiAgICAgIyAgICAiIiIKICAgICAjICAgICIiIgoKZGlmZiAtciAz
MTM1N2VkZjI2MGVhNmIyNTlkYzY4MjMwZjMwODNiM2YwZmFmY2EwIC1yIDE0Nzk2YWM4NjdlYjBj
N2RjNTE3ZWVkPQphMWVjODI1MGM5Yjg2OGJiNyBsaWIvZ2FsYXh5L21hbmFnZXJzL3VzZXJzLnB5
Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvdXNlcnMucHkKKysrIGIvbGliL2dhbGF4eS9tYW5h
Z2Vycy91c2Vycy5weQpAQCAtOCw5ICs4LDEwIEBACj0yMAogZnJvbSBnYWxheHkgaW1wb3J0IG1v
ZGVsCiBmcm9tIGdhbGF4eSBpbXBvcnQgZXhjZXB0aW9ucwotaW1wb3J0IGFwaV9rZXlzCj0yMAot
aW1wb3J0IGJhc2UKK2Zyb20gZ2FsYXh5Lm1hbmFnZXJzIGltcG9ydCBiYXNlCitmcm9tIGdhbGF4
eS5tYW5hZ2VycyBpbXBvcnQgYXBpX2tleXMKKwo9MjAKIGltcG9ydCBsb2dnaW5nCiBsb2cgPTNE
IGxvZ2dpbmcuZ2V0TG9nZ2VyKCBfX25hbWVfXyApCgpkaWZmIC1yIDMxMzU3ZWRmMjYwZWE2YjI1
OWRjNjgyMzBmMzA4M2IzZjBmYWZjYTAgLXIgMTQ3OTZhYzg2N2ViMGM3ZGM1MTdlZWQ9CmExZWM4
MjUwYzliODY4YmI3IGxpYi9nYWxheHkvbWFuYWdlcnMvdmlzdWFsaXphdGlvbnMucHkKLS0tIGEv
bGliL2dhbGF4eS9tYW5hZ2Vycy92aXN1YWxpemF0aW9ucy5weQorKysgYi9saWIvZ2FsYXh5L21h
bmFnZXJzL3Zpc3VhbGl6YXRpb25zLnB5CkBAIC03LDExICs3LDEwIEBACj0yMAogZnJvbSBnYWxh
eHkgaW1wb3J0IGV4Y2VwdGlvbnMKIGZyb20gZ2FsYXh5IGltcG9ydCBtb2RlbAoraW1wb3J0IGdh
bGF4eS53ZWIKPTIwCi1pbXBvcnQgYmFzZQotaW1wb3J0IHNoYXJhYmxlCi0KLWltcG9ydCBnYWxh
eHkud2ViCitmcm9tIGdhbGF4eS5tYW5hZ2VycyBpbXBvcnQgYmFzZQorZnJvbSBnYWxheHkubWFu
YWdlcnMgaW1wb3J0IHNoYXJhYmxlCj0yMAogaW1wb3J0IGxvZ2dpbmcKIGxvZyA9M0QgbG9nZ2lu
Zy5nZXRMb2dnZXIoIF9fbmFtZV9fICkKQEAgLTc4LDEwICs3NywxMSBAQAogICAgIEludGVyZmFj
ZS9zZXJ2aWNlIG9iamVjdCBmb3IgdmFsaWRhdGluZyBhbmQgZGVzZXJpYWxpemluZwogICAgIGRp
Y3Rpb25hcmllcyBpbnRvIHZpc3VhbGl6YXRpb25zLgogICAgICIiIgorICAgIG1vZGVsX21hbmFn
ZXJfY2xhc3MgPTNEIFZpc3VhbGl6YXRpb25NYW5hZ2VyCj0yMAogICAgIGRlZiBfX2luaXRfXygg
c2VsZiwgYXBwICk6CiAgICAgICAgIHN1cGVyKCBWaXN1YWxpemF0aW9uRGVzZXJpYWxpemVyLCBz
ZWxmICkuX19pbml0X18oIGFwcCApCi0gICAgICAgIHNlbGYudmlzdWFsaXphdGlvbl9tYW5hZ2Vy
ID0zRCBWaXN1YWxpemF0aW9uTWFuYWdlciggYXBwICkKKyAgICAgICAgc2VsZi52aXN1YWxpemF0
aW9uX21hbmFnZXIgPTNEIHNlbGYubWFuYWdlcgo9MjAKICAgICBkZWYgYWRkX2Rlc2VyaWFsaXpl
cnMoIHNlbGYgKToKICAgICAgICAgc3VwZXIoIFZpc3VhbGl6YXRpb25EZXNlcmlhbGl6ZXIsIHNl
bGYgKS5hZGRfZGVzZXJpYWxpemVycygpCgpkaWZmIC1yIDMxMzU3ZWRmMjYwZWE2YjI1OWRjNjgy
MzBmMzA4M2IzZjBmYWZjYTAgLXIgMTQ3OTZhYzg2N2ViMGM3ZGM1MTdlZWQ9CmExZWM4MjUwYzli
ODY4YmI3IGxpYi9nYWxheHkvd2ViL2Jhc2UvY29udHJvbGxlci5weQotLS0gYS9saWIvZ2FsYXh5
L3dlYi9iYXNlL2NvbnRyb2xsZXIucHkKKysrIGIvbGliL2dhbGF4eS93ZWIvYmFzZS9jb250cm9s
bGVyLnB5CkBAIC0xNSw2ICsxNSw3IEBACiBmcm9tIHBhc3RlLmh0dHBleGNlcHRpb25zIGltcG9y
dCBIVFRQTm90SW1wbGVtZW50ZWQsIEhUVFBSZXF1ZXN0UmFuZ2VOb3RTYT0KdGlzZmlhYmxlCiBm
cm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBJdGVtQWNjZXNzaWJpbGl0eUV4Y2VwdGlvbiwg
SXRlbURlbGV0aW9uRXhjZT0KcHRpb24sIEl0ZW1Pd25lcnNoaXBFeGNlcHRpb24KIGZyb20gZ2Fs
YXh5LmV4Y2VwdGlvbnMgaW1wb3J0IE1lc3NhZ2VFeGNlcHRpb24KK2Zyb20gZ2FsYXh5IGltcG9y
dCBleGNlcHRpb25zCj0yMAogZnJvbSBnYWxheHkgaW1wb3J0IHdlYgogZnJvbSBnYWxheHkgaW1w
b3J0IG1vZGVsCgpkaWZmIC1yIDMxMzU3ZWRmMjYwZWE2YjI1OWRjNjgyMzBmMzA4M2IzZjBmYWZj
YTAgLXIgMTQ3OTZhYzg2N2ViMGM3ZGM1MTdlZWQ9CmExZWM4MjUwYzliODY4YmI3IGxpYi9nYWxh
eHkvd2ViYXBwcy9nYWxheHkvYXBpL2hpc3Rvcmllcy5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFw
cHMvZ2FsYXh5L2FwaS9oaXN0b3JpZXMucHkKKysrIGIvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4
eS9hcGkvaGlzdG9yaWVzLnB5CkBAIC03LDYgKzcsOSBAQAogaW1wb3J0IHBrZ19yZXNvdXJjZXMK
IHBrZ19yZXNvdXJjZXMucmVxdWlyZSggIlBhc3RlIiApCj0yMAorcGtnX3Jlc291cmNlcy5yZXF1
aXJlKCAiU1FMQWxjaGVteSA+PTNEIDAuNCIgKQoraW1wb3J0IHNxbGFsY2hlbXkKKwogZnJvbSBn
YWxheHkgaW1wb3J0IGV4Y2VwdGlvbnMKIGZyb20gZ2FsYXh5LndlYiBpbXBvcnQgX2Z1dHVyZV9l
eHBvc2VfYXBpIGFzIGV4cG9zZV9hcGkKIGZyb20gZ2FsYXh5LndlYiBpbXBvcnQgX2Z1dHVyZV9l
eHBvc2VfYXBpX2Fub255bW91cyBhcyBleHBvc2VfYXBpX2Fub255bW91cwpAQCAtNTksNyArNjIs
OSBAQAogICAgICAgICBpZiBzdHJpbmdfYXNfYm9vbCggZGVsZXRlZCApOgogICAgICAgICAgICAg
ZGVsZXRlZF9maWx0ZXIgPTNEICggc2VsZi5hcHAubW9kZWwuSGlzdG9yeS5kZWxldGVkID0zRD0z
RCBUcnU9CmUgKQo9MjAKLSAgICAgICAgaGlzdG9yaWVzID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdl
ci5ieV91c2VyKCB0cmFucywgdXNlcj0zRHRyYW5zLnVzPQplciwgZmlsdGVycz0zRGRlbGV0ZWRf
ZmlsdGVyICkKKyAgICAgICAgI1RPRE86IGNyZWF0ZSB0aW1lPyBpcyB0aGlzIHJpZ2h0PworICAg
ICAgICBvcmRlcl9ieSA9M0Qgc3FsYWxjaGVteS5kZXNjKCBzZWxmLmFwcC5tb2RlbC5IaXN0b3J5
LmNyZWF0ZV90aW1lICkKKyAgICAgICAgaGlzdG9yaWVzID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdl
ci5ieV91c2VyKCB0cmFucywgdXNlcj0zRHRyYW5zLnVzPQplciwgZmlsdGVycz0zRGRlbGV0ZWRf
ZmlsdGVyLCBvcmRlcl9ieT0zRG9yZGVyX2J5ICkKICAgICAgICAgZm9yIGhpc3RvcnkgaW4gaGlz
dG9yaWVzOgogICAgICAgICAgICAgaGlzdG9yeV9kaWN0ID0zRCBzZWxmLmhpc3Rvcnlfc2VyaWFs
aXplci5zZXJpYWxpemVfdG9fdmlldyggdHI9CmFucywgaGlzdG9yeSwgKipzZXJpYWxpemF0aW9u
X3BhcmFtcyApCiAgICAgICAgICAgICBydmFsLmFwcGVuZCggaGlzdG9yeV9kaWN0ICkKQEAgLTE1
Miw3ICsxNTcsNyBAQAo9MjAKICAgICAgICAgIyBvdGhlcndpc2UsIGNyZWF0ZSBhIG5ldyBlbXB0
eSBoaXN0b3J5CiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuZXdfaGlzdG9yeSA9M0QgdHJh
bnMuYXBwLm1vZGVsLkhpc3RvcnkoIHVzZXI9M0R0cmFucy51c2VyLCBuYT0KbWU9M0RoaXN0X25h
bWUgKQorICAgICAgICAgICAgbmV3X2hpc3RvcnkgPTNEIHNlbGYuaGlzdG9yeV9tYW5hZ2VyLmNy
ZWF0ZSggdHJhbnMsIHVzZXI9M0R0cmE9Cm5zLnVzZXIsIG5hbWU9M0RoaXN0X25hbWUgKQo9MjAK
ICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIG5ld19oaXN0b3J5ICkKICAgICAgICAgdHJh
bnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCkBAIC0xOTMsNyArMTk4LDcgQEAKICAgICAgICAgaWYgcHVy
Z2U6CiAgICAgICAgICAgICBzZWxmLmhpc3RvcnlfbWFuYWdlci5wdXJnZSggdHJhbnMsIGhpc3Rv
cnkgKQo9MjAKLSAgICAgICAgcmV0dXJuIHNlbGYuaGlzdG9yeV9zZXJpYWxpemVyLnNlcmlhbGl6
ZV90b192aWV3KCB0cmFucywgbmV3X2hpc3RvPQpyeSwKKyAgICAgICAgcmV0dXJuIHNlbGYuaGlz
dG9yeV9zZXJpYWxpemVyLnNlcmlhbGl6ZV90b192aWV3KCB0cmFucywgaGlzdG9yeSwKICAgICAg
ICAgICAgICoqc2VsZi5fcGFyc2Vfc2VyaWFsaXphdGlvbl9wYXJhbXMoIGt3ZCwgJ2RldGFpbGVk
JyApICkKPTIwCiAgICAgQGV4cG9zZV9hcGkKQEAgLTIzOCw3ICsyNDMsNiBAQAogICAgICAgICAj
VE9ETzogUFVUIC9hcGkvaGlzdG9yaWVzL3tlbmNvZGVkX2hpc3RvcnlfaWR9IHBheWxvYWQgPTNE
IHsgcmF0aW49Cmc6IHJhdGluZyB9ICh3LyBubyBzZWN1cml0eSBjaGVja3MpCiAgICAgICAgIGhp
c3RvcnkgPTNEIHNlbGYuaGlzdG9yeV9tYW5hZ2VyLmdldF9vd25lZCggdHJhbnMsIHNlbGYuZGVj
b2RlX2lkKD0KIGlkICksIHRyYW5zLnVzZXIgKQo9MjAKLSAgICAgICAgI1RPRE86IGZsdXNoaW5n
IGluIGRlc2VyaWFsaXplIGlzIGFuIGlmZnkgcGF0dGVybi4uLgogICAgICAgICBzZWxmLmhpc3Rv
cnlfZGVzZXJpYWxpemVyLmRlc2VyaWFsaXplKCB0cmFucywgaGlzdG9yeSwgcGF5bG9hZCApCiAg
ICAgICAgIHJldHVybiBzZWxmLmhpc3Rvcnlfc2VyaWFsaXplci5zZXJpYWxpemVfdG9fdmlldygg
dHJhbnMsIGhpc3RvcnksCiAgICAgICAgICAgICAqKnNlbGYuX3BhcnNlX3NlcmlhbGl6YXRpb25f
cGFyYW1zKCBrd2QsICdkZXRhaWxlZCcgKSApCgpkaWZmIC1yIDMxMzU3ZWRmMjYwZWE2YjI1OWRj
NjgyMzBmMzA4M2IzZjBmYWZjYTAgLXIgMTQ3OTZhYzg2N2ViMGM3ZGM1MTdlZWQ9CmExZWM4MjUw
YzliODY4YmI3IGxpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2hpc3RvcnlfY29udGVudHMu
cHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9hcGkvaGlzdG9yeV9jb250ZW50cy5w
eQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9oaXN0b3J5X2NvbnRlbnRzLnB5
CkBAIC0xMzIsNiArMTMyLDggQEAKICAgICAgICAgOnJ0eXBlOiAgICAgZGljdAogICAgICAgICA6
cmV0dXJuczogICBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgZGV0YWlsZWQgSERBIGluZm9ybWF0aW9u
CiAgICAgICAgICIiIgorICAgICAgICBoaXN0b3J5ID0zRCBzZWxmLmhpc3RvcnlfbWFuYWdlci5n
ZXRfYWNjZXNzaWJsZSggdHJhbnMsIHNlbGYuZGVjb2Q9CmVfaWQoIGhpc3RvcnlfaWQgKSwgdHJh
bnMudXNlciApCisKICAgICAgICAgY29udGVudHNfdHlwZSA9M0Qga3dkLmdldCgndHlwZScsICdk
YXRhc2V0JykKICAgICAgICAgaWYgY29udGVudHNfdHlwZSA9M0Q9M0QgJ2RhdGFzZXQnOgogICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuX19zaG93X2RhdGFzZXQoIHRyYW5zLCBpZCwgKiprd2QgKQpA
QCAtMjQ2LDYgKzI0OCw4IEBACiAgICAgICAgIGVsaWYgc291cmNlID0zRD0zRCAnaGRhJzoKICAg
ICAgICAgICAgIHVuZW5jb2RlZF9oZGFfaWQgPTNEIHNlbGYuZGVjb2RlX2lkKCBjb250ZW50ICkK
ICAgICAgICAgICAgIG9yaWdpbmFsID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmdldF9hY2Nlc3NpYmxl
KCB0cmFucywgdW5lbmNvZGVkPQpfaGRhX2lkLCB0cmFucy51c2VyICkKKyAgICAgICAgICAgICMg
Y2hlY2sgZm9yIGFjY2VzcyBvbiBoaXN0b3J5IHRoYXQgY29udGFpbnMgdGhlIG9yaWdpbmFsIGhk
YSBhPQpzIHdlbGwKKyAgICAgICAgICAgIHNlbGYuaGlzdG9yeV9tYW5hZ2VyLmVycm9yX3VubGVz
c19hY2Nlc3NpYmxlKCB0cmFucywgb3JpZ2luYWwuPQpoaXN0b3J5LCB0cmFucy51c2VyICkKICAg
ICAgICAgICAgIGRhdGFfY29weSA9M0Qgb3JpZ2luYWwuY29weSggY29weV9jaGlsZHJlbj0zRFRy
dWUgKQogICAgICAgICAgICAgaGRhID0zRCBoaXN0b3J5LmFkZF9kYXRhc2V0KCBkYXRhX2NvcHkg
KQo9MjAKQEAgLTMxNyw3ICszMjEsNyBAQAogICAgICAgICBpZiB0cmFucy51c2VyID0zRD0zRCBO
b25lOgogICAgICAgICAgICAgaGRhID0zRCBzZWxmLmhkYV9tYW5hZ2VyLmJ5X2lkKCB0cmFucywg
c2VsZi5kZWNvZGVfaWQoIGlkICkgKQogICAgICAgICAgICAgaWYgaGRhLmhpc3RvcnkgIT0zRCB0
cmFucy5oaXN0b3J5OgotICAgICAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuQXV0aGVudGlj
YXRpb25SZXF1aXJlZCggJ1lvdSBtdXN0IGJlIGxvZ2c9CmVkIGluIHRvIHVwZGF0ZSB0aGlzIGRh
dGFzZXQnICkKKyAgICAgICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLkF1dGhlbnRpY2F0aW9u
UmVxdWlyZWQoICdBUEkgYXV0aGVudGljYXRpPQpvbiByZXF1aXJlZCBmb3IgdGhpcyByZXF1ZXN0
JyApCiAgICAgICAgICAgICBoZGEgPTNEIHNlbGYuaGRhX21hbmFnZXIuZXJyb3JfaWZfdXBsb2Fk
aW5nKCB0cmFucywgaGRhICkKPTIwCiAgICAgICAgICAgICBhbm9uX2FsbG93ZWRfcGF5bG9hZCA9
M0Qge30KQEAgLTMyOSw4ICszMzMsNyBAQAo9MjAKICAgICAgICAgIyBsb2dnZWQgaW4gdXNlcjog
dXNlIGZ1bGwgcGF5bG9hZCwgY2hlY2sgc3RhdGUgaWYgZGVsZXRpbmcsIGFuZCBtPQpha2Ugc3Vy
ZSB0aGUgaGlzdG9yeSBpcyB0aGVpcnMKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGhkYSA9
M0Qgc2VsZi5oZGFfbWFuYWdlci5nZXRfYWNjZXNzaWJsZSggdHJhbnMsIHNlbGYuZGVjb2RlX2lk
PQooIGlkICksIHRyYW5zLnVzZXIgKQotICAgICAgICAgICAgc2VsZi5oaXN0b3J5X21hbmFnZXIu
ZXJyb3JfdW5sZXNzX293bmVyKCB0cmFucywgaGRhLmhpc3RvcnksIHQ9CnJhbnMudXNlciApCisg
ICAgICAgICAgICBoZGEgPTNEIHNlbGYuaGRhX21hbmFnZXIuZ2V0X293bmVkKCB0cmFucywgc2Vs
Zi5kZWNvZGVfaWQoIGlkID0KKSwgdHJhbnMudXNlciApCj0yMAogICAgICAgICAgICAgIyBvbmx5
IGNoZWNrX3N0YXRlIGlmIG5vdCBkZWxldGluZywgb3RoZXJ3aXNlIGNhbm5vdCBkZWxldGUgdXA9
CmxvYWRpbmcgZmlsZXMKICAgICAgICAgICAgIGNoZWNrX3N0YXRlID0zRCBub3QgcGF5bG9hZC5n
ZXQoICdkZWxldGVkJywgRmFsc2UgKQpAQCAtMzk2LDggKzM5OSw3IEBACiAgICAgICAgICAgICAj
IHBheWxvYWQgdGFrZXMgcHJpb3JpdHkKICAgICAgICAgICAgIHB1cmdlID0zRCB1dGlsLnN0cmlu
Z19hc19ib29sKCBrd2RbJ3BheWxvYWQnXS5nZXQoICdwdXJnZScsIHB1PQpyZ2UgKSApCj0yMAot
ICAgICAgICBoZGEgPTNEIHNlbGYuaGRhX21hbmFnZXIuYnlfaWQoIHRyYW5zLCBzZWxmLmRlY29k
ZV9pZCggaWQgKSwgdHJhbnM9Ci51c2VyICkKLSAgICAgICAgc2VsZi5oaXN0b3J5X21hbmFnZXIu
ZXJyb3JfdW5sZXNzX293bmVyc2hpcCggdHJhbnMsIGhkYS5oaXN0b3J5LCB0PQpyYW5zLnVzZXIg
KQorICAgICAgICBoZGEgPTNEIHNlbGYuaGRhX21hbmFnZXIuZ2V0X293bmVkKCB0cmFucywgc2Vs
Zi5kZWNvZGVfaWQoIGlkICksIHQ9CnJhbnMudXNlciApCiAgICAgICAgIHNlbGYuaGRhX21hbmFn
ZXIuZXJyb3JfaWZfdXBsb2FkaW5nKCB0cmFucywgaGRhICkKPTIwCiAgICAgICAgIGlmIHB1cmdl
OgoKZGlmZiAtciAzMTM1N2VkZjI2MGVhNmIyNTlkYzY4MjMwZjMwODNiM2YwZmFmY2EwIC1yIDE0
Nzk2YWM4NjdlYjBjN2RjNTE3ZWVkPQphMWVjODI1MGM5Yjg2OGJiNyBsaWIvZ2FsYXh5L3dlYmFw
cHMvZ2FsYXh5L2FwaS92aXN1YWxpemF0aW9ucy5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMv
Z2FsYXh5L2FwaS92aXN1YWxpemF0aW9ucy5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2Fs
YXh5L2FwaS92aXN1YWxpemF0aW9ucy5weQpAQCAtMTIyLDcgKzEyMiwxMSBAQAo9MjAKICAgICAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcGF5bG9hZCA9M0Qgc2VsZi5fdmFsaWRhdGVf
YW5kX3BhcnNlX3BheWxvYWQoIHBheWxvYWQgKQorICAgICAgICAgICAgICAgICMgbXVzdCBoYXZl
IGEgdHlwZSAoSSd2ZSB0YWtlbiB0aGlzIHRvIGJlIHRoZSB2aXN1YWxpemF0aW89Cm4gbmFtZSkK
KyAgICAgICAgICAgICAgICBpZiAndHlwZScgbm90IGluIHBheWxvYWQ6CisgICAgICAgICAgICAg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoICJrZXkvdmFsdWUgJ3R5cGUnIGlzIHJlcXVpcmVkIiAp
CiAgICAgICAgICAgICAgICAgdmlzX3R5cGUgPTNEIHBheWxvYWQucG9wKCAndHlwZScsIEZhbHNl
ICkKKwogICAgICAgICAgICAgICAgIHBheWxvYWRbICdzYXZlJyBdID0zRCBUcnVlCiAgICAgICAg
ICAgICAgICAgIyBnZW5lcmF0ZSBkZWZhdWx0cyAtIHRoaXMgd2lsbCBlcnIgaWYgZ2l2ZW4gYSB3
ZWlyZCBrZXk/CiAgICAgICAgICAgICAgICAgdmlzdWFsaXphdGlvbiA9M0Qgc2VsZi5jcmVhdGVf
dmlzdWFsaXphdGlvbiggdHJhbnMsIHZpc190eT0KcGUsICoqcGF5bG9hZCApCkBAIC0yMjEsMTAg
KzIyNSw2IEBACiAgICAgICAgICNUT0RPOiBkZWxldGVkCiAgICAgICAgICNUT0RPOiBpbXBvcnRh
YmxlCj0yMAotICAgICAgICAjIG11c3QgaGF2ZSBhIHR5cGUgKEkndmUgdGFrZW4gdGhpcyB0byBi
ZSB0aGUgdmlzdWFsaXphdGlvbiBuYW1lKQotICAgICAgICBpZiAndHlwZScgbm90IGluIHBheWxv
YWQ6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCAia2V5L3ZhbHVlICd0eXBlJyBpcyBy
ZXF1aXJlZCIgKQotCiAgICAgICAgIHZhbGlkYXRlZF9wYXlsb2FkID0zRCB7fQogICAgICAgICBm
b3Iga2V5LCB2YWwgaW4gcGF5bG9hZC5pdGVtcygpOgogICAgICAgICAgICAgI1RPRE86IHZhbGlk
YXRlIHR5cGVzIGluIFZBTElEX1RZUEVTL3JlZ2lzdHJ5IG5hbWVzIGF0IHRoZSBtaXg9CmluL21v
ZGVsIGxldmVsPwpAQCAtMjU2LDggKzI1Niw5IEBACiAgICAgICAgICAgICAgICAgICAgIHJhaXNl
IFZhbHVlRXJyb3IoICclcyBtdXN0IGJlIGEgc3RyaW5nIG9yIHVuaWNvZGU6ICVzJz0KICUoIGtl
eSwgc3RyKCB0eXBlKCB2YWwgKSApICkgKQogICAgICAgICAgICAgICAgIHZhbCA9M0QgdXRpbC5z
YW5pdGl6ZV9odG1sLnNhbml0aXplX2h0bWwoIHZhbCwgJ3V0Zi04JyApCj0yMAotICAgICAgICAg
ICAgI2VsaWYga2V5IG5vdCBpbiB2YWxpZF9idXRfdW5lZGl0YWJsZV9rZXlzOgotICAgICAgICAg
ICAgIyAgICByYWlzZSBBdHRyaWJ1dGVFcnJvciggJ3Vua25vd24ga2V5OiAlcycgJSggc3RyKCBr
ZXkgKSApICkKKyAgICAgICAgICAgIGVsaWYga2V5IG5vdCBpbiB2YWxpZF9idXRfdW5lZGl0YWJs
ZV9rZXlzOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgI3JhaXNl
IEF0dHJpYnV0ZUVycm9yKCAndW5rbm93biBrZXk6ICVzJyAlKCBzdHIoIGtleSApICkgKQo9MjAK
ICAgICAgICAgICAgIHZhbGlkYXRlZF9wYXlsb2FkWyBrZXkgXSA9M0QgdmFsCiAgICAgICAgIHJl
dHVybiB2YWxpZGF0ZWRfcGF5bG9hZAoKZGlmZiAtciAzMTM1N2VkZjI2MGVhNmIyNTlkYzY4MjMw
ZjMwODNiM2YwZmFmY2EwIC1yIDE0Nzk2YWM4NjdlYjBjN2RjNTE3ZWVkPQphMWVjODI1MGM5Yjg2
OGJiNyBsaWIvZ2FsYXh5L3dvcmtmbG93L3J1bl9yZXF1ZXN0LnB5Ci0tLSBhL2xpYi9nYWxheHkv
d29ya2Zsb3cvcnVuX3JlcXVlc3QucHkKKysrIGIvbGliL2dhbGF4eS93b3JrZmxvdy9ydW5fcmVx
dWVzdC5weQpAQCAtMTk2LDcgKzE5Niw3IEBACiAgICAgICAgICMgUGFzc2luZyBhbiBleGlzdGlu
ZyBoaXN0b3J5IHRvIHVzZS4KICAgICAgICAgZW5jb2RlZF9oaXN0b3J5X2lkID0zRCBoaXN0b3J5
X3BhcmFtWyA4OiBdCiAgICAgICAgIGhpc3RvcnlfaWQgPTNEIF9fZGVjb2RlX2lkKCB0cmFucywg
ZW5jb2RlZF9oaXN0b3J5X2lkLCBtb2RlbF90eXBlPQo9M0QiaGlzdG9yeSIgKQotICAgICAgICBo
aXN0b3J5ID0zRCBoaXN0b3J5X21hbmFnZXIub3duZWRfYnlfaWQoIHRyYW5zLCBoaXN0b3J5X2lk
LCB0cmFucy49CnVzZXIgKQorICAgICAgICBoaXN0b3J5ID0zRCBoaXN0b3J5X21hbmFnZXIuZ2V0
X293bmVkKCB0cmFucywgaGlzdG9yeV9pZCwgdHJhbnMudXM9CmVyICkKICAgICBlbHNlOgogICAg
ICAgICAjIFNlbmQgd29ya2Zsb3cgb3V0cHV0cyB0byBuZXcgaGlzdG9yeS4KICAgICAgICAgaGlz
dG9yeSA9M0QgYXBwLm1vZGVsLkhpc3RvcnkobmFtZT0zRGhpc3RvcnlfcGFyYW0sIHVzZXI9M0R0
cmFucy51PQpzZXIpCgpkaWZmIC1yIDMxMzU3ZWRmMjYwZWE2YjI1OWRjNjgyMzBmMzA4M2IzZjBm
YWZjYTAgLXIgMTQ3OTZhYzg2N2ViMGM3ZGM1MTdlZWQ9CmExZWM4MjUwYzliODY4YmI3IHRlc3Qv
Y2FzcGVyanMvYXBpLWFub24taGlzdG9yeS1wZXJtaXNzaW9uLXRlc3RzLmpzCi0tLSBhL3Rlc3Qv
Y2FzcGVyanMvYXBpLWFub24taGlzdG9yeS1wZXJtaXNzaW9uLXRlc3RzLmpzCisrKyBiL3Rlc3Qv
Y2FzcGVyanMvYXBpLWFub24taGlzdG9yeS1wZXJtaXNzaW9uLXRlc3RzLmpzCkBAIC05NSw3ICs5
NSw3IEBACiAgICAgICAgIHRoaXMudGVzdC5jb21tZW50KCAnc2hvdyBzaG91bGQgZmFpbCBmb3Ig
aGlzdG9yeTogJyArIGhpc3RvcnkubmFtZT0KICk7CiAgICAgICAgIHRoaXMuYXBpLmFzc2VydFJh
aXNlcyggZnVuY3Rpb24oKXsKICAgICAgICAgICAgIHRoaXMuYXBpLmhpc3Rvcmllcy5zaG93KCBo
aXN0b3J5LmlkICk7Ci0gICAgICAgIH0sIDQwMywgJ0hpc3RvcnkgaXMgbm90IGFjY2Vzc2libGUg
dG8gdGhlIGN1cnJlbnQgdXNlcicsICdzaG93IGZhaT0KbGVkIHdpdGggZXJyb3InICk7CisgICAg
ICAgIH0sIDQwMywgJ0hpc3RvcnkgaXMgbm90IGFjY2Vzc2libGUgYnkgdXNlcicsICdzaG93IGZh
aWxlZCB3aXRoIGVycj0Kb3InICk7CiAgICAgICAgIHRoaXMudGVzdC5jb21tZW50KCAnY29weWlu
ZyBzaG91bGQgZmFpbCBmb3IgaGlzdG9yeSAoaW1wbGljaXQgbXVsdD0KaXBsZSBoaXN0b3JpZXMp
OiAnICsgaGlzdG9yeS5uYW1lICk7CiAgICAgICAgIHRoaXMuYXBpLmFzc2VydFJhaXNlcyggZnVu
Y3Rpb24oKXsKICAgICAgICAgICAgIHRoaXMuYXBpLmhpc3Rvcmllcy5jcmVhdGUoeyBoaXN0b3J5
X2lkIDogaGlzdG9yeS5pZCB9KTsKQEAgLTEwNSwxMCArMTA1LDEwIEBACiAgICAgICAgIHRoaXMu
dGVzdC5jb21tZW50KCAnaW5kZXggYW5kIHNob3cgb2YgaGlzdG9yeSBjb250ZW50cyBzaG91bGQg
ZmFpbD0KIGZvciBoaXN0b3J5OiAnICsgaGlzdG9yeS5uYW1lICk7CiAgICAgICAgIHRoaXMuYXBp
LmFzc2VydFJhaXNlcyggZnVuY3Rpb24oKXsKICAgICAgICAgICAgIHRoaXMuYXBpLmhkYXMuaW5k
ZXgoIGhpc3RvcnkuaWQgKTsKLSAgICAgICAgfSwgNDAzLCAnSGlzdG9yeSBpcyBub3QgYWNjZXNz
aWJsZSB0byB0aGUgY3VycmVudCB1c2VyJywgJ2hkYSBpbmRlPQp4IGZhaWxlZCB3aXRoIGVycm9y
JyApOworICAgICAgICB9LCA0MDMsICdIaXN0b3J5IGlzIG5vdCBhY2Nlc3NpYmxlIGJ5IHVzZXIn
LCAnaGRhIGluZGV4IGZhaWxlZCB3aXQ9CmggZXJyb3InICk7CiAgICAgICAgIHRoaXMuYXBpLmFz
c2VydFJhaXNlcyggZnVuY3Rpb24oKXsKICAgICAgICAgICAgIHRoaXMuYXBpLmhkYXMuc2hvdygg
aGlzdG9yeS5pZCwgaGRhc1swXS5pZCApOwotICAgICAgICB9LCA0MDMsICdIaXN0b3J5IGlzIG5v
dCBhY2Nlc3NpYmxlIHRvIHRoZSBjdXJyZW50IHVzZXInLCAnaGRhIHNob3c9CiBmYWlsZWQgd2l0
aCBlcnJvcicgKTsKKyAgICAgICAgfSwgNDAzLCAnSGlzdG9yeSBpcyBub3QgYWNjZXNzaWJsZSBi
eSB1c2VyJywgJ2hkYSBzaG93IGZhaWxlZCB3aXRoPQogZXJyb3InICk7Cj0yMAogICAgICAgICB0
aGlzLnRlc3QuY29tbWVudCggJ0F0dGVtcHRpbmcgdG8gY29weSBhbiBhY2Nlc3NpYmxlIGhkYSAo
ZGVmYXVsdCA9CmlzIGFjY2Vzc2libGUpJwogICAgICAgICAgICAgICAgICAgICAgICAgICsgJyBm
cm9tIGFuIGluYWNjZXNzaWJsZSBoaXN0b3J5IHNob3VsZCBmYWlsIGZvcjo9CiAnICsgaGlzdG9y
eS5uYW1lICk7CkBAIC0xMTgsNyArMTE4LDcgQEAKICAgICAgICAgICAgICAgICBjb250ZW50IDog
aGRhc1swXS5pZAogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB0aGlzLmRlYnVnKCB0aGlz
Lmpzb25TdHIoIHJldHVybmVkICkgKTsKLSAgICAgICAgfSwgNDAzLCAnSGlzdG9yeSBpcyBub3Qg
YWNjZXNzaWJsZSB0byB0aGUgY3VycmVudCB1c2VyJywgJ2hkYSBjb3B5PQogZnJvbSBmYWlsZWQg
d2l0aCBlcnJvcicgKTsKKyAgICAgICAgfSwgNDAzLCAnSGlzdG9yeSBpcyBub3QgYWNjZXNzaWJs
ZSBieSB1c2VyJywgJ2hkYSBjb3B5IGZyb20gZmFpbGVkPQogd2l0aCBlcnJvcicgKTsKPTIwCiAg
ICAgfQo9MjAKQEAgLTEzOCw3ICsxMzgsNyBAQAogICAgICAgICB0aGlzLmFwaS5hc3NlcnRSYWlz
ZXMoIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICB0aGlzLmFwaS5oZGFzLnVwZGF0ZSggaGlzdG9y
eS5pZCwgaGRhc1swXS5pZCwgeyBkZWxldGVkOiB0cnVlID0KfSk7CiAgICAgICAgIC8vIGFub24g
aGRhIHVwZGF0ZSBmYWlscyB3LyB0aGlzIG1zZyBpZiB0cnlpbmcgdG8gdXBkYXRlIG5vbi1jdXJy
ZT0KbnQgaGlzdG9yeSBoZGEKLSAgICAgICAgfSwgNDAzLCAnWW91IG11c3QgYmUgbG9nZ2VkIGlu
IHRvIHVwZGF0ZSB0aGlzIGhpc3RvcnknLCAnaGRhIHVwZGF0PQplIGZhaWxlZCB3aXRoIGVycm9y
JyApOworICAgICAgICB9LCA0MDMsICdBUEkgYXV0aGVudGljYXRpb24gcmVxdWlyZWQgZm9yIHRo
aXMgcmVxdWVzdCcsICdoZGEgdXBkYXQ9CmUgZmFpbGVkIHdpdGggZXJyb3InICk7CiAgICAgICAg
IHRoaXMudGVzdC5jb21tZW50KCAnaGRhIGRlbGV0aW9uIHNob3VsZCBmYWlsIGZvciBoaXN0b3J5
OiAnICsgaGlzdD0Kb3J5Lm5hbWUgKTsKICAgICAgICAgdGhpcy5hcGkuYXNzZXJ0UmFpc2VzKCBm
dW5jdGlvbigpewogICAgICAgICAgICAgdGhpcy5hcGkuaGRhcy5kZWxldGVfKCBoaXN0b3J5Lmlk
LCBoZGFzWzBdLmlkICk7CkBAIC0xNTEsNyArMTUxLDcgQEAKICAgICAgICAgICAgICAgICAvLyBz
aG91bGQgZXJyb3IgYmVmb3JlIGl0IGNoZWNrcyB0aGUgaWQKICAgICAgICAgICAgICAgICBjb250
ZW50IDogJ2JsZXInCiAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSwgNDAzLCAnTXVzdCBiZSBs
b2dnZWQgaW4gdG8gbWFuYWdlIEdhbGF4eSBoaXN0b3JpZXMnLCAnaGRhIGNvcHkgPQp0byBmYWls
ZWQnICk7CisgICAgICAgIH0sIDQwMywgJ0hpc3RvcnkgaXMgbm90IG93bmVkIGJ5IHVzZXInLCAn
aGRhIGNvcHkgdG8gZmFpbGVkJyApOwogICAgIH0KPTIwCiAgICAgZnVuY3Rpb24gdGVzdEFub25J
bmFjY2Vzc2libGUoIGhpc3RvcnksIGhkYXMgKXsKCmRpZmYgLXIgMzEzNTdlZGYyNjBlYTZiMjU5
ZGM2ODIzMGYzMDgzYjNmMGZhZmNhMCAtciAxNDc5NmFjODY3ZWIwYzdkYzUxN2VlZD0KYTFlYzgy
NTBjOWI4NjhiYjcgdGVzdC9jYXNwZXJqcy9hcGktYW5vbi1oaXN0b3J5LXRlc3RzLmpzCi0tLSBh
L3Rlc3QvY2FzcGVyanMvYXBpLWFub24taGlzdG9yeS10ZXN0cy5qcworKysgYi90ZXN0L2Nhc3Bl
cmpzL2FwaS1hbm9uLWhpc3RvcnktdGVzdHMuanMKQEAgLTI2LDkgKzI2LDkgQEAKPTIwCiAgICAg
ICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLT0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBhbm9uIGZvcmJpZGRl
bgogICAgICAgICAvL1RPRE86IHdoeSBub3QgcmV0dXJuIHRoZSBjdXJyZW50IGhpc3Rvcnk/Ci0g
ICAgICAgIHRoaXMudGVzdC5jb21tZW50KCAnY2FsbGluZyBzaG93IHdpdGggIm1vc3RfcmVjZW50
bHlfdXNlZCIgc2hvdWxkID0KcmV0dXJuIE5vbmUgZm9yIGFuIGFub24gdXNlcicgKTsKKyAgICAg
ICAgdGhpcy50ZXN0LmNvbW1lbnQoICdjYWxsaW5nIHNob3cgd2l0aCAibW9zdF9yZWNlbnRseV91
c2VkIiBzaG91bGQgPQpyZXR1cm4gY3VycmVudCBoaXN0b3J5IGZvciBhbiBhbm9uIHVzZXInICk7
CiAgICAgICAgIHZhciByZWNlbnQgPTNEIHRoaXMuYXBpLmhpc3Rvcmllcy5zaG93KCAnbW9zdF9y
ZWNlbnRseV91c2VkJyApOwotICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0KCByZWNlbnQgPTNEPTNE
PTNEIG51bGwsICdtb3N0X3JlY2VudGx5X3VzZWQgcmV0dXI9Cm5lZCBOb25lJyApOworICAgICAg
ICB0aGlzLnRlc3QuYXNzZXJ0KCByZWNlbnQuaWQgPTNEPTNEPTNEIGhpc3RvcnlTaG93LmlkLCAn
bW9zdF9yZWNlbnQ9Cmx5X3VzZWQgcmV0dXJuZWQgY3VycmVudCcgKTsKPTIwCiAgICAgICAgIHRo
aXMudGVzdC5jb21tZW50KCAnQ2FsbGluZyBjcmVhdGUgc2hvdWxkIGZhaWwgZm9yIGFuIGFub255
bW91cyB1cz0KZXInICk7CiAgICAgICAgIHRoaXMuYXBpLmFzc2VydFJhaXNlcyggZnVuY3Rpb24o
KXsKCmRpZmYgLXIgMzEzNTdlZGYyNjBlYTZiMjU5ZGM2ODIzMGYzMDgzYjNmMGZhZmNhMCAtciAx
NDc5NmFjODY3ZWIwYzdkYzUxN2VlZD0KYTFlYzgyNTBjOWI4NjhiYjcgdGVzdC9jYXNwZXJqcy9h
cGktaGRhLXRlc3RzLmpzCi0tLSBhL3Rlc3QvY2FzcGVyanMvYXBpLWhkYS10ZXN0cy5qcworKysg
Yi90ZXN0L2Nhc3BlcmpzL2FwaS1oZGEtdGVzdHMuanMKQEAgLTk3LDE4ICs5NywxMSBAQAo9MjAK
ICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tPQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFVQREFURQog
ICAgICAgICAvLyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi49Ci4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gaWRpb3QgcHJv
b2ZpbmcKLSAgICAgICAgdGhpcy50ZXN0LmNvbW1lbnQoICd1cGRhdGluZyB0byB0aGUgY3VycmVu
dCB2YWx1ZSBzaG91bGQgcmV0dXJuIG5vPQogdmFsdWUgKG5vIGNoYW5nZSknICk7Ci0gICAgICAg
IGhkYVNob3cgPTNEIHRoaXMuYXBpLmhkYXMuc2hvdyggbGFzdEhpc3RvcnkuaWQsIGZpcnN0SGRh
LmlkICk7Ci0gICAgICAgIHZhciByZXR1cm5lZCA9M0QgdGhpcy5hcGkuaGRhcy51cGRhdGUoIGxh
c3RIaXN0b3J5LmlkLCBmaXJzdEhkYS5pZD0KLCB7Ci0gICAgICAgICAgICBuYW1lIDogaGRhU2hv
dy5uYW1lCi0gICAgICAgIH0pOwotICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0KCB0aGlzLmNvdW50
S2V5cyggcmV0dXJuZWQgKSA9M0Q9M0Q9M0QgMCwgIk5vIGNoYW49CmdlZCByZXR1cm5lZDogIiAr
IHRoaXMuanNvblN0ciggcmV0dXJuZWQgKSApOwotCiAgICAgICAgIHRoaXMudGVzdC5jb21tZW50
KCAndXBkYXRpbmcgdXNpbmcgYSBub25zZW5zZSBrZXkgc2hvdWxkIE5PVCBmYWlsID0Kd2l0aCBh
biBlcnJvcicgKTsKICAgICAgICAgcmV0dXJuZWQgPTNEIHRoaXMuYXBpLmhkYXMudXBkYXRlKCBs
YXN0SGlzdG9yeS5pZCwgZmlyc3RIZGEuaWQsIHsKICAgICAgICAgICAgIGtvbmFtaUNvZGUgOiAn
dXVkZGxybHJiYScKICAgICAgICAgfSk7Ci0gICAgICAgIHRoaXMudGVzdC5hc3NlcnQoIHRoaXMu
Y291bnRLZXlzKCByZXR1cm5lZCApID0zRD0zRD0zRCAwLCAiTm8gY2hhbj0KZ2VkIHJldHVybmVk
OiAiICsgdGhpcy5qc29uU3RyKCByZXR1cm5lZCApICk7CisgICAgICAgIHRoaXMudGVzdC5hc3Nl
cnQoIHJldHVybmVkLmlkID0zRD0zRD0zRCBmaXJzdEhkYS5pZCApOwo9MjAKICAgICAgICAgdGhp
cy50ZXN0LmNvbW1lbnQoICd1cGRhdGluZyBieSBhdHRlbXB0aW5nIHRvIGNoYW5nZSB0eXBlIHNo
b3VsZCBjPQphdXNlIGFuIGVycm9yJyApOwogICAgICAgICB0aGlzLmFwaS5hc3NlcnRSYWlzZXMo
IGZ1bmN0aW9uKCl7CkBAIC0xMTYsNyArMTA5LDcgQEAKICAgICAgICAgICAgICAgICAvL25hbWUg
OiBmYWxzZQogICAgICAgICAgICAgICAgIGRlbGV0ZWQgOiAnc3VyZSB3aHkgbm90JwogICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0sIDQwMCwgJ2RlbGV0ZWQgbXVzdCBiZSBhIGJvb2xlYW4nLCAn
Y2hhbmdpbmcgZGVsZXRlZCB0eXBlIGZhaWxlZD0KJyApOworICAgICAgICB9LCA0MDAsICJtdXN0
IGJlIGEgdHlwZTogPHR5cGUgJ2Jvb2wnPiIsICdjaGFuZ2luZyBkZWxldGVkIHR5cGUgZmE9Cmls
ZWQnICk7Cj0yMAogICAgICAgICAvLyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi49Ci4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4gbmFtZQogICAgICAgICB0aGlzLnRlc3QuY29tbWVudCggJ3VwZGF0ZSBzaG91bGQgYWxsb3cg
Y2hhbmdpbmcgdGhlIG5hbWUnICk7CkBAIC0xMjcsMTMgKzEyMCw4IEBACiAgICAgICAgIGhkYVNo
b3cgPTNEIHRoaXMuYXBpLmhkYXMuc2hvdyggbGFzdEhpc3RvcnkuaWQsIGZpcnN0SGRhLmlkICk7
CiAgICAgICAgIHRoaXMudGVzdC5hc3NlcnQoIGhkYVNob3cubmFtZSA9M0Q9M0Q9M0QgJ05ldyBu
YW1lJywgIk5hbWUgc3VjY2Vzcz0KZnVsbHkgc2V0IHZpYSB1cGRhdGU6ICIgKyBoZGFTaG93Lm5h
bWUgKTsKPTIwCi0gICAgICAgIHRoaXMudGVzdC5jb21tZW50KCAndXBkYXRlIHNob3VsZCBzYW5p
dGl6ZSBhbnkgbmV3IG5hbWUnICk7Ci0gICAgICAgIHJldHVybmVkID0zRCB0aGlzLmFwaS5oZGFz
LnVwZGF0ZSggbGFzdEhpc3RvcnkuaWQsIGZpcnN0SGRhLmlkLCB7Ci0gICAgICAgICAgICBuYW1l
IDogJ05ldyBuYW1lPHNjcmlwdCB0eXBlPTNEInRleHQvamF2YXNjcmlwdCIgc3JjPTNEImJsZXIi
Pj0KYWxlcnQoImJsYWgiKTs8L3NjcmlwdD4nCi0gICAgICAgIH0pOwotICAgICAgICAvL3RoaXMu
ZGVidWcoICdyZXR1cm5lZDpcbicgKyB0aGlzLmpzb25TdHIoIHJldHVybmVkICkgKTsKLSAgICAg
ICAgaGRhU2hvdyA9M0QgdGhpcy5hcGkuaGRhcy5zaG93KCBsYXN0SGlzdG9yeS5pZCwgZmlyc3RI
ZGEuaWQgKTsKLSAgICAgICAgdGhpcy50ZXN0LmFzc2VydCggaGRhU2hvdy5uYW1lID0zRD0zRD0z
RCAnTmV3IG5hbWUnLCAiVXBkYXRlIHNhbml0PQppemVkIG5hbWU6ICIgKyBoZGFTaG93Lm5hbWUg
KTsKKyAgICAgICAgLy8gbm8gc2FuaXRpemluZyBpbnB1dAorICAgICAgICAvL3RoaXMudGVzdC5j
b21tZW50KCAndXBkYXRlIHNob3VsZCBzYW5pdGl6ZSBhbnkgbmV3IG5hbWUnICk7Cj0yMAogICAg
ICAgICB0aGlzLnRlc3QuY29tbWVudCggJ3VwZGF0ZSBzaG91bGQgYWxsb3cgdW5pY29kZSBpbiBu
YW1lcycgKTsKICAgICAgICAgdmFyIHVuaWNvZGVOYW1lID0zRCAnPUQwPUEwPUQwPUI2PUQwPUI1
PUQwPUIyPUQxPTgxPUQwPUJBPUQwPUI4PUQwPQo9QjkgPUQxPTgxPUQwPUIwPUQwPUJGPUQwPUJF
PUQwPUIzPUQwPUI4JzsKQEAgLTE5NSwyNyArMTgzLDIxIEBACiAgICAgICAgICAgICAiZ2Vub21l
X2J1aWxkIHN1Y2Nlc3NmdWxseSBzZXQgdmlhIHVwZGF0ZTogIiArIGhkYVNob3cuZ2Vub21lXz0K
YnVpbGQgKTsKICAgICAgICAgdGhpcy50ZXN0LmFzc2VydCggaGRhU2hvdy5tZXRhZGF0YV9kYmtl
eSA9M0Q9M0Q9M0QgJ2hnMTgnLAogICAgICAgICAgICAgIm1ldGFkYXRhX2Ria2V5IHN1Y2Nlc3Nm
dWxseSBzZXQgdmlhIHRoZSBzYW1lIHVwZGF0ZTogIiArIGhkYVM9Cmhvdy5tZXRhZGF0YV9kYmtl
eSApOwotICAgICAgICB0aGlzLnRlc3QuY29tbWVudCggJ3VwZGF0ZSBzaG91bGQgc2FuaXRpemUg
YW55IGdlbm9tZV9idWlsZCcgKTsKLSAgICAgICAgcmV0dXJuZWQgPTNEIHRoaXMuYXBpLmhkYXMu
dXBkYXRlKCBsYXN0SGlzdG9yeS5pZCwgZmlyc3RIZGEuaWQsIHsKLSAgICAgICAgICAgIGdlbm9t
ZV9idWlsZCA6ICdoZzE4PHNjcmlwdCB0eXBlPTNEInRleHQvamF2YXNjcmlwdCIgc3JjPTNEImJs
PQplciI+YWxlcnQoImJsYWgiKTs8L3NjcmlwdD4nCi0gICAgICAgIH0pOworCisgICAgICAgIC8v
IG5vIHNhbml0aXppbmcgaW5wdXQKKyAgICAgICAgLy90aGlzLnRlc3QuY29tbWVudCggJ3VwZGF0
ZSBzaG91bGQgc2FuaXRpemUgYW55IGdlbm9tZV9idWlsZCcgKTsKKworICAgICAgICAvL1RPRE86
IHRoaXMgYWN0dWFsbHkgdGhyb3dzIGFuICdpbnZhbGlkIGdlbm9tZV9idWlsZCcgZXJyb3IKKyAg
ICAgICAgLy90aGlzLnRlc3QuY29tbWVudCggJ3VwZGF0ZSBzaG91bGQgYWxsb3cgdW5pY29kZSBp
biBnZW5vbWUgYnVpbGRzPQonICk7CisgICAgICAgIC8vdmFyIHVuaWNvZGVCdWlsZCA9M0QgJz1E
MD1BMD1EMD1CNj1EMD1CNT1EMD1CMj1EMT04MT1EMD1CQT1EMD1COD0KPUQwPUI5MTgnOworICAg
ICAgICAvL3JldHVybmVkID0zRCB0aGlzLmFwaS5oZGFzLnVwZGF0ZSggbGFzdEhpc3RvcnkuaWQs
IGZpcnN0SGRhLmlkLCB7CisgICAgICAgIC8vICAgIGdlbm9tZV9idWlsZCA6IHVuaWNvZGVCdWls
ZAorICAgICAgICAvL30pOwogICAgICAgICAvL3RoaXMuZGVidWcoICdyZXR1cm5lZDpcbicgKyB0
aGlzLmpzb25TdHIoIHJldHVybmVkICkgKTsKLSAgICAgICAgaGRhU2hvdyA9M0QgdGhpcy5hcGku
aGRhcy5zaG93KCBsYXN0SGlzdG9yeS5pZCwgZmlyc3RIZGEuaWQgKTsKLSAgICAgICAgdGhpcy50
ZXN0LmFzc2VydCggaGRhU2hvdy5nZW5vbWVfYnVpbGQgPTNEPTNEPTNEICdoZzE4JywKLSAgICAg
ICAgICAgICJVcGRhdGUgc2FuaXRpemVkIGdlbm9tZV9idWlsZDogIiArIGhkYVNob3cuZ2Vub21l
X2J1aWxkICk7Ci0gICAgICAgIHRoaXMudGVzdC5hc3NlcnQoIGhkYVNob3cubWV0YWRhdGFfZGJr
ZXkgPTNEPTNEPTNEICdoZzE4JywKLSAgICAgICAgICAgICJtZXRhZGF0YV9kYmtleSBzdWNjZXNz
ZnVsbHkgc2V0IHZpYSB0aGUgc2FtZSB1cGRhdGU6ICIgKyBoZGFTPQpob3cubWV0YWRhdGFfZGJr
ZXkgKTsKLQotICAgICAgICB0aGlzLnRlc3QuY29tbWVudCggJ3VwZGF0ZSBzaG91bGQgYWxsb3cg
dW5pY29kZSBpbiBnZW5vbWUgYnVpbGRzJyA9Cik7Ci0gICAgICAgIHZhciB1bmljb2RlQnVpbGQg
PTNEICc9RDA9QTA9RDA9QjY9RDA9QjU9RDA9QjI9RDE9ODE9RDA9QkE9RDA9Qjg9Cj1EMD1COTE4
JzsKLSAgICAgICAgcmV0dXJuZWQgPTNEIHRoaXMuYXBpLmhkYXMudXBkYXRlKCBsYXN0SGlzdG9y
eS5pZCwgZmlyc3RIZGEuaWQsIHsKLSAgICAgICAgICAgIGdlbm9tZV9idWlsZCA6IHVuaWNvZGVC
dWlsZAotICAgICAgICB9KTsKLSAgICAgICAgdGhpcy5kZWJ1ZyggJ3JldHVybmVkOlxuJyArIHRo
aXMuanNvblN0ciggcmV0dXJuZWQgKSApOwotICAgICAgICBoZGFTaG93ID0zRCB0aGlzLmFwaS5o
ZGFzLnNob3coIGxhc3RIaXN0b3J5LmlkLCBmaXJzdEhkYS5pZCApOwotICAgICAgICB0aGlzLmRl
YnVnKCAnaGRhU2hvdzpcbicgKyB0aGlzLmpzb25TdHIoIGhkYVNob3cgKSApOwotICAgICAgICB0
aGlzLnRlc3QuYXNzZXJ0KCBoZGFTaG93Lmdlbm9tZV9idWlsZCA9M0Q9M0Q9M0QgdW5pY29kZUJ1
aWxkLAotICAgICAgICAgICAgIlVwZGF0ZSBhY2NlcHRlZCB1bmljb2RlIGdlbm9tZV9idWlsZDog
IiArIGhkYVNob3cuZ2Vub21lX2J1aWw9CmQgKTsKKyAgICAgICAgLy9oZGFTaG93ID0zRCB0aGlz
LmFwaS5oZGFzLnNob3coIGxhc3RIaXN0b3J5LmlkLCBmaXJzdEhkYS5pZCApOworICAgICAgICAv
L3RoaXMuZGVidWcoICdoZGFTaG93OlxuJyArIHRoaXMuanNvblN0ciggaGRhU2hvdyApICk7Cisg
ICAgICAgIC8vdGhpcy50ZXN0LmFzc2VydCggaGRhU2hvdy5nZW5vbWVfYnVpbGQgPTNEPTNEPTNE
IHVuaWNvZGVCdWlsZCwKKyAgICAgICAgLy8gICAgIlVwZGF0ZSBhY2NlcHRlZCB1bmljb2RlIGdl
bm9tZV9idWlsZDogIiArIGhkYVNob3cuZ2Vub21lX2J1PQppbGQgKTsKPTIwCiAgICAgICAgIC8v
IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLj0KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiBtaXNjX2luZm8vaW5mbwogICAg
ICAgICB0aGlzLnRlc3QuY29tbWVudCggJ3VwZGF0ZSBzaG91bGQgYWxsb3cgY2hhbmdpbmcgdGhl
IG1pc2NfaW5mbycgKTsKQEAgLTIyOCwxNSArMjEwLDggQEAKICAgICAgICAgdGhpcy50ZXN0LmFz
c2VydCggaGRhU2hvdy5taXNjX2luZm8gPTNEPTNEPTNEIG5ld0luZm8sCiAgICAgICAgICAgICAi
bWlzY19pbmZvIHN1Y2Nlc3NmdWxseSBzZXQgdmlhIHVwZGF0ZTogIiArIGhkYVNob3cubWlzY19p
bmZvID0KKTsKPTIwCi0gICAgICAgIHRoaXMudGVzdC5jb21tZW50KCAndXBkYXRlIHNob3VsZCBz
YW5pdGl6ZSBhbnkgbWlzY19pbmZvJyApOwotICAgICAgICB2YXIgbmV3SW5mbyA9M0QgJ1lvdVwn
cmUgZ29pbmcgdG8gZ2V0IGhvcC1vbnMuJzsKLSAgICAgICAgcmV0dXJuZWQgPTNEIHRoaXMuYXBp
LmhkYXMudXBkYXRlKCBsYXN0SGlzdG9yeS5pZCwgZmlyc3RIZGEuaWQsIHsKLSAgICAgICAgICAg
IG1pc2NfaW5mbyA6IG5ld0luZm8gKyAnPHNjcmlwdCB0eXBlPTNEInRleHQvamF2YXNjcmlwdCIg
c3JjPTNEPQoiYmxlciI+YWxlcnQoImJsYWgiKTs8L3NjcmlwdD4nCi0gICAgICAgIH0pOwotICAg
ICAgICAvL3RoaXMuZGVidWcoICdyZXR1cm5lZDpcbicgKyB0aGlzLmpzb25TdHIoIHJldHVybmVk
ICkgKTsKLSAgICAgICAgaGRhU2hvdyA9M0QgdGhpcy5hcGkuaGRhcy5zaG93KCBsYXN0SGlzdG9y
eS5pZCwgZmlyc3RIZGEuaWQgKTsKLSAgICAgICAgdGhpcy50ZXN0LmFzc2VydCggaGRhU2hvdy5t
aXNjX2luZm8gPTNEPTNEPTNEIG5ld0luZm8sCi0gICAgICAgICAgICAiVXBkYXRlIHNhbml0aXpl
ZCBtaXNjX2luZm86ICIgKyBoZGFTaG93Lm1pc2NfaW5mbyApOworICAgICAgICAvLyBubyBzYW5p
dGl6aW5nIGlucHV0CisgICAgICAgIC8vdGhpcy50ZXN0LmNvbW1lbnQoICd1cGRhdGUgc2hvdWxk
IHNhbml0aXplIGFueSBtaXNjX2luZm8nICk7Cj0yMAogICAgICAgICB0aGlzLnRlc3QuY29tbWVu
dCggJ3VwZGF0ZSBzaG91bGQgYWxsb3cgdW5pY29kZSBpbiBtaXNjX2luZm8nICk7CiAgICAgICAg
IHZhciB1bmljb2RlSW5mbyA9M0QgJz1FQz05Nz1BQz1FQj1CMz1CNCEnOwpAQCAtMjYwLDE0ICsy
MzUsOCBAQAogICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0KCBoZGFTaG93LmFubm90YXRpb24gPTNE
PTNEPTNEIG5ld0Fubm90YXRpb24sCiAgICAgICAgICAgICAiQW5ub3RhdGlvbiBzdWNjZXNzZnVs
bHkgc2V0IHZpYSB1cGRhdGU6ICIgKyBoZGFTaG93LmFubm90YXRpbz0KbiApOwo9MjAKLSAgICAg
ICAgdGhpcy50ZXN0LmNvbW1lbnQoICd1cGRhdGUgc2hvdWxkIHNhbml0aXplIGFueSBuZXcgYW5u
b3RhdGlvbicgKTsKLSAgICAgICAgcmV0dXJuZWQgPTNEIHRoaXMuYXBpLmhkYXMudXBkYXRlKCBs
YXN0SGlzdG9yeS5pZCwgZmlyc3RIZGEuaWQsIHsKLSAgICAgICAgICAgIGFubm90YXRpb24gOiAn
TmV3IGFubm90YXRpb248c2NyaXB0IHR5cGU9M0QidGV4dC9qYXZhc2NyaXB0IiBzPQpyYz0zRCJi
bGVyIj5hbGVydCgiYmxhaCIpOzwvc2NyaXB0PicKLSAgICAgICAgfSk7Ci0gICAgICAgIC8vdGhp
cy5kZWJ1ZyggJ3JldHVybmVkOlxuJyArIHRoaXMuanNvblN0ciggcmV0dXJuZWQgKSApOwotICAg
ICAgICBoZGFTaG93ID0zRCB0aGlzLmFwaS5oZGFzLnNob3coIGxhc3RIaXN0b3J5LmlkLCBmaXJz
dEhkYS5pZCApOwotICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0KCBoZGFTaG93LmFubm90YXRpb24g
PTNEPTNEPTNEICdOZXcgYW5ub3RhdGlvbicsCi0gICAgICAgICAgICAiVXBkYXRlIHNhbml0aXpl
ZCBhbm5vdGF0aW9uOiAiICsgaGRhU2hvdy5hbm5vdGF0aW9uICk7CisgICAgICAgIC8vIG5vIHNh
bml0aXppbmcgaW5wdXQKKyAgICAgICAgLy90aGlzLnRlc3QuY29tbWVudCggJ3VwZGF0ZSBzaG91
bGQgc2FuaXRpemUgYW55IG5ldyBhbm5vdGF0aW9uJyApOwo9MjAKICAgICAgICAgdGhpcy50ZXN0
LmNvbW1lbnQoICd1cGRhdGUgc2hvdWxkIGFsbG93IHVuaWNvZGUgaW4gYW5ub3RhdGlvbnMnICk7
CiAgICAgICAgIHZhciB1bmljb2RlQW5ub3RhdGlvbiA9M0QgJz1FMz04MT04QT1FOT1BMT05OD1F
Mz04MT04ND1FMz04MT1BRj1FMz0KPTgwPTgxPUUzPTgxPTlEPUUzPTgyPThDPUUzPTgxPThDPUU4
PTkwPUJEPUU0PUI4PThCPUUzPTgxPTk1PUUzPTgxPTlCPUUzPTgxPQo9QUE9RTM9ODE9ODQnOwpA
QCAtMzE2LDI1ICsyODUsMzIgQEAKICAgICAgICAgc3BhY2VnaG9zdC50ZXN0LmNvbW1lbnQoICdB
IGJhZCBpZCBzaG91bGQgdGhyb3cgYW4gZXJyb3Igd2hlbiB1c2luPQpnIHVuZGVsZXRlJyApOwo9
MjAKICAgICAgICAgdGhpcy50ZXN0LmNvbW1lbnQoICd1cGRhdGluZyBieSBhdHRlbXB0aW5nIHRv
IGNoYW5nZSB0eXBlIHNob3VsZCBjPQphdXNlIGFuIGVycm9yJyApOwotICAgICAgICBbICduYW1l
JywgJ2Fubm90YXRpb24nLCAnZ2Vub21lX2J1aWxkJywgJ21pc2NfaW5mbycgXS5mb3JFYWNoKCBm
dW49CmN0aW9uKCBrZXkgKXsKKyAgICAgICAgWyAnbmFtZScsICdtaXNjX2luZm8nIF0uZm9yRWFj
aCggZnVuY3Rpb24oIGtleSApewogICAgICAgICAgICAgdmFyIHVwZGF0ZWRBdHRycyA9M0Qge307
CiAgICAgICAgICAgICB1cGRhdGVkQXR0cnNbIGtleSBdID0zRCBmYWxzZTsKICAgICAgICAgICAg
IHNwYWNlZ2hvc3QuYXBpLmFzc2VydFJhaXNlcyggZnVuY3Rpb24oKXsKICAgICAgICAgICAgICAg
ICByZXR1cm5lZCA9M0Qgc3BhY2VnaG9zdC5hcGkuaGRhcy51cGRhdGUoIGhkYVNob3cuaGlzdG9y
eV9pPQpkLCBoZGFTaG93LmlkLCB1cGRhdGVkQXR0cnMgKTsKLSAgICAgICAgICAgIH0sIDQwMCwg
a2V5ICsgJyBtdXN0IGJlIGEgc3RyaW5nIG9yIHVuaWNvZGUnLCAndHlwZSB2YWxpZGF0aW9uPQog
ZXJyb3InICk7CisgICAgICAgICAgICB9LCA0MDAsICJtdXN0IGJlIGEgdHlwZTogPHR5cGUgJ2Jh
c2VzdHJpbmcnPiIsICd0eXBlIHZhbGlkYXRpbz0KbiBlcnJvcicgKTsKICAgICAgICAgfSk7Cisg
ICAgICAgIHNwYWNlZ2hvc3QuYXBpLmFzc2VydFJhaXNlcyggZnVuY3Rpb24oKXsKKyAgICAgICAg
ICAgIHJldHVybmVkID0zRCBzcGFjZWdob3N0LmFwaS5oZGFzLnVwZGF0ZSggaGRhU2hvdy5oaXN0
b3J5X2lkLCBoPQpkYVNob3cuaWQsIHsgYW5ub3RhdGlvbjogZmFsc2UgfSApOworICAgICAgICB9
LCA0MDAsICJtdXN0IGJlIGEgdHlwZTogKDx0eXBlICdiYXNlc3RyaW5nJz4sIDx0eXBlICdOb25l
VHlwZSc+KSI9CiwgJ3R5cGUgdmFsaWRhdGlvbiBlcnJvcicgKTsKKyAgICAgICAgc3BhY2VnaG9z
dC5hcGkuYXNzZXJ0UmFpc2VzKCBmdW5jdGlvbigpeworICAgICAgICAgICAgcmV0dXJuZWQgPTNE
IHNwYWNlZ2hvc3QuYXBpLmhkYXMudXBkYXRlKCBoZGFTaG93Lmhpc3RvcnlfaWQsIGg9CmRhU2hv
dy5pZCwgeyBnZW5vbWVfYnVpbGQ6IGZhbHNlIH0gKTsKKyAgICAgICAgfSwgNDAwLCAiaW52YWxp
ZCByZWZlcmVuY2UiLCAndHlwZSB2YWxpZGF0aW9uIGVycm9yJyApOwogICAgICAgICBbICdkZWxl
dGVkJywgJ3Zpc2libGUnIF0uZm9yRWFjaCggZnVuY3Rpb24oIGtleSApewogICAgICAgICAgICAg
dmFyIHVwZGF0ZWRBdHRycyA9M0Qge307CiAgICAgICAgICAgICB1cGRhdGVkQXR0cnNbIGtleSBd
ID0zRCAnc3RyYWFhbmcnOwogICAgICAgICAgICAgc3BhY2VnaG9zdC5hcGkuYXNzZXJ0UmFpc2Vz
KCBmdW5jdGlvbigpewogICAgICAgICAgICAgICAgIHJldHVybmVkID0zRCBzcGFjZWdob3N0LmFw
aS5oZGFzLnVwZGF0ZSggaGRhU2hvdy5oaXN0b3J5X2k9CmQsIGhkYVNob3cuaWQsIHVwZGF0ZWRB
dHRycyApOwotICAgICAgICAgICAgfSwgNDAwLCBrZXkgKyAnIG11c3QgYmUgYSBib29sZWFuJywg
J3R5cGUgdmFsaWRhdGlvbiBlcnJvcicgKTsKKyAgICAgICAgICAgIH0sIDQwMCwgIm11c3QgYmUg
YSB0eXBlOiA8dHlwZSAnYm9vbCc+IiwgJ3R5cGUgdmFsaWRhdGlvbiBlcnJvPQpyJyApOwogICAg
ICAgICB9KTsKLSAgICAgICAgWyAneW91XCdyZSBpdCcsIFsgdHJ1ZSBdIF0uZm9yRWFjaCggZnVu
Y3Rpb24oIGJhZFZhbCApewotICAgICAgICAgICAgc3BhY2VnaG9zdC5hcGkuYXNzZXJ0UmFpc2Vz
KCBmdW5jdGlvbigpewotICAgICAgICAgICAgICAgIHJldHVybmVkID0zRCBzcGFjZWdob3N0LmFw
aS5oZGFzLnVwZGF0ZSggaGRhU2hvdy5oaXN0b3J5X2k9CmQsIGhkYVNob3cuaWQsIHsgdGFnczog
YmFkVmFsIH0pOwotICAgICAgICAgICAgfSwgNDAwLCAndGFncyBtdXN0IGJlIGEgbGlzdCcsICd0
eXBlIHZhbGlkYXRpb24gZXJyb3InICk7Ci0gICAgICAgIH0pOworICAgICAgICBzcGFjZWdob3N0
LmFwaS5hc3NlcnRSYWlzZXMoIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICByZXR1cm5lZCA9M0Qg
c3BhY2VnaG9zdC5hcGkuaGRhcy51cGRhdGUoIGhkYVNob3cuaGlzdG9yeV9pZCwgaD0KZGFTaG93
LmlkLCB7IHRhZ3M6ICd5b3VcJ3JlIGl0JyB9KTsKKyAgICAgICAgfSwgNDAwLCAibXVzdCBiZSBh
IHR5cGU6IDx0eXBlICdsaXN0Jz4iLCAndHlwZSB2YWxpZGF0aW9uIGVycm9yJyApOworICAgICAg
ICBzcGFjZWdob3N0LmFwaS5hc3NlcnRSYWlzZXMoIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICBy
ZXR1cm5lZCA9M0Qgc3BhY2VnaG9zdC5hcGkuaGRhcy51cGRhdGUoIGhkYVNob3cuaGlzdG9yeV9p
ZCwgaD0KZGFTaG93LmlkLCB7IHRhZ3M6IFsgdHJ1ZSBdIH0pOworICAgICAgICB9LCA0MDAsICJt
dXN0IGJlIGEgdHlwZTogPHR5cGUgJ2Jhc2VzdHJpbmcnPiIsICd0eXBlIHZhbGlkYXRpb24gZXI9
CnJvcicgKTsKPTIwCiAgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBERUxFVEUKICAgICAgICAgdGhpcy50ZXN0LmNvbW1lbnQoICdjYWxsaW5nIGRlbGV0ZSBv
biBhbiBoZGEgc2hvdWxkIG1hcmsgaXQgYXMgZGVsPQpldGVkIGJ1dCBub3QgY2hhbmdlIHRoZSBo
aXN0b3J5IHNpemUnICk7CgpkaWZmIC1yIDMxMzU3ZWRmMjYwZWE2YjI1OWRjNjgyMzBmMzA4M2Iz
ZjBmYWZjYTAgLXIgMTQ3OTZhYzg2N2ViMGM3ZGM1MTdlZWQ9CmExZWM4MjUwYzliODY4YmI3IHRl
c3QvY2FzcGVyanMvYXBpLWhpc3RvcnktcGVybWlzc2lvbi10ZXN0cy5qcwotLS0gYS90ZXN0L2Nh
c3BlcmpzL2FwaS1oaXN0b3J5LXBlcm1pc3Npb24tdGVzdHMuanMKKysrIGIvdGVzdC9jYXNwZXJq
cy9hcGktaGlzdG9yeS1wZXJtaXNzaW9uLXRlc3RzLmpzCkBAIC01Niw3ICs1Niw3IEBACiAgICAg
ICAgIHRoaXMuZGVidWcoIHRoaXMuanNvblN0ciggcmV0dXJuZWQgKSApOwogICAgICAgICBhY2Nl
c3NpYmxlSGlzdG9yeSA9M0QgdGhpcy5hcGkuaGlzdG9yaWVzLnNob3coIGFjY2Vzc2libGVIaXN0
b3J5Lmk9CmQgKTsKICAgICAgICAgdGhpcy50ZXN0LmFzc2VydCggdGhpcy5oYXNLZXlzKCBhY2Nl
c3NpYmxlSGlzdG9yeSwgWyAndXNlcm5hbWVfYW5kPQpfc2x1ZycgXSApLAotICAgICAgICAgICAg
J0hhcyB0aGUgcHJvcGVyIGtleXMnICk7CisgICAgICAgICAgICAnSGFzIHVzZXJuYW1lX2FuZF9z
bHVnJyApOwogICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0KCBhY2Nlc3NpYmxlSGlzdG9yeS5zbHVn
ID0zRD0zRD0zRCAnYWNjZXNzaWJsZScsCiAgICAgICAgICAgICAnc2x1ZyBpcyBub3QgbnVsbDog
JyArIGFjY2Vzc2libGVIaXN0b3J5LnNsdWcgKTsKICAgICAgICAgdGhpcy50ZXN0LmFzc2VydCgg
YWNjZXNzaWJsZUhpc3RvcnkuaW1wb3J0YWJsZSwKQEAgLTg2LDcgKzg2LDcgQEAKPTIwCiAgICAg
fSk7Cj0yMAotICAgIC8vLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIHVw
bG9hZCBzb21lIGZpbGVzCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIHVwbG9hZCBzb21lIGZpbGVzCiAgICAgc3BhY2VnaG9zdC50aGVuKCBmdW5jdGlvbigpewog
ICAgICAgICB0aGlzLmFwaS50b29scy50aGVuVXBsb2FkKCBpbmFjY2Vzc2libGVIaXN0b3J5Lmlk
LCB7IGZpbGVwYXRoOiAnLi49Ci8uLi90ZXN0LWRhdGEvMS5iZWQnIH0pOwogICAgICAgICB0aGlz
LmFwaS50b29scy50aGVuVXBsb2FkKCAgIGFjY2Vzc2libGVIaXN0b3J5LmlkLCB7IGZpbGVwYXRo
OiAnLi49Ci8uLi90ZXN0LWRhdGEvMS5iZWQnIH0pOwpAQCAtMTQ0LDIwICsxNDQsMjAgQEAKICAg
ICAgICAgdGhpcy50ZXN0LmNvbW1lbnQoICdzaG93IHNob3VsZCBmYWlsIGZvciBoaXN0b3J5OiAn
ICsgaGlzdG9yeS5uYW1lPQogKTsKICAgICAgICAgdGhpcy5hcGkuYXNzZXJ0UmFpc2VzKCBmdW5j
dGlvbigpewogICAgICAgICAgICAgdGhpcy5hcGkuaGlzdG9yaWVzLnNob3coIGhpc3RvcnkuaWQg
KTsKLSAgICAgICAgfSwgNDAzLCAnSGlzdG9yeSBpcyBub3QgYWNjZXNzaWJsZSB0byB0aGUgY3Vy
cmVudCB1c2VyJywgJ3Nob3cgZmFpPQpsZWQgd2l0aCBlcnJvcicgKTsKKyAgICAgICAgfSwgNDAz
LCAnSGlzdG9yeSBpcyBub3QgYWNjZXNzaWJsZSBieSB1c2VyJywgJ3Nob3cgZmFpbGVkIHdpdGgg
ZXJyPQpvcicgKTsKICAgICAgICAgdGhpcy50ZXN0LmNvbW1lbnQoICdjb3B5aW5nIHNob3VsZCBm
YWlsIGZvciBoaXN0b3J5OiAnICsgaGlzdG9yeS5uPQphbWUgKTsKICAgICAgICAgdGhpcy5hcGku
YXNzZXJ0UmFpc2VzKCBmdW5jdGlvbigpewogICAgICAgICAgICAgdGhpcy5hcGkuaGlzdG9yaWVz
LmNyZWF0ZSh7IGhpc3RvcnlfaWQgOiBoaXN0b3J5LmlkIH0pOwotICAgICAgICB9LCA0MDMsICdI
aXN0b3J5IGlzIG5vdCBhY2Nlc3NpYmxlIHRvIHRoZSBjdXJyZW50IHVzZXInLCAnY29weSBmYWk9
CmxlZCB3aXRoIGVycm9yJyApOworICAgICAgICB9LCA0MDMsICdIaXN0b3J5IGlzIG5vdCBhY2Nl
c3NpYmxlIGJ5IHVzZXInLCAnY29weSBmYWlsZWQgd2l0aCBlcnI9Cm9yJyApOwo9MjAKICAgICAg
ICAgLy8gcmVhZCBmdW5jdGlvbnMgZm9yIGhpc3RvcnkgY29udGVudHMKICAgICAgICAgdGhpcy50
ZXN0LmNvbW1lbnQoICdpbmRleCBhbmQgc2hvdyBvZiBoaXN0b3J5IGNvbnRlbnRzIHNob3VsZCBm
YWlsPQogZm9yIGhpc3Rvcnk6ICcgKyBoaXN0b3J5Lm5hbWUgKTsKICAgICAgICAgdGhpcy5hcGku
YXNzZXJ0UmFpc2VzKCBmdW5jdGlvbigpewogICAgICAgICAgICAgdGhpcy5hcGkuaGRhcy5pbmRl
eCggaGlzdG9yeS5pZCApOwotICAgICAgICB9LCA0MDMsICdIaXN0b3J5IGlzIG5vdCBhY2Nlc3Np
YmxlIHRvIHRoZSBjdXJyZW50IHVzZXInLCAnaGRhIGluZGU9CnggZmFpbGVkIHdpdGggZXJyb3In
ICk7CisgICAgICAgIH0sIDQwMywgJ0hpc3RvcnkgaXMgbm90IGFjY2Vzc2libGUgYnkgdXNlcics
ICdoZGEgaW5kZXggZmFpbGVkIHdpdD0KaCBlcnJvcicgKTsKICAgICAgICAgdGhpcy5hcGkuYXNz
ZXJ0UmFpc2VzKCBmdW5jdGlvbigpewogICAgICAgICAgICAgdGhpcy5hcGkuaGRhcy5zaG93KCBo
aXN0b3J5LmlkLCBoZGFzWzBdLmlkICk7Ci0gICAgICAgIH0sIDQwMywgJ0hpc3RvcnkgaXMgbm90
IGFjY2Vzc2libGUgdG8gdGhlIGN1cnJlbnQgdXNlcicsICdoZGEgc2hvdz0KIGZhaWxlZCB3aXRo
IGVycm9yJyApOworICAgICAgICB9LCA0MDMsICdIaXN0b3J5IGlzIG5vdCBhY2Nlc3NpYmxlIGJ5
IHVzZXInLCAnaGRhIHNob3cgZmFpbGVkIHdpdGg9CiBlcnJvcicgKTsKPTIwCiAgICAgICAgIHRo
aXMudGVzdC5jb21tZW50KCAnQXR0ZW1wdGluZyB0byBjb3B5IGFuIGFjY2Vzc2libGUgaGRhIChk
ZWZhdWx0ID0KaXMgYWNjZXNzaWJsZSknCiAgICAgICAgICAgICAgICAgICAgICAgICAgKyAnIGZy
b20gYW4gaW5hY2Nlc3NpYmxlIGhpc3Rvcnkgc2hvdWxkIGZhaWwgZm9yOj0KICcgKyBoaXN0b3J5
Lm5hbWUgKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQAogICAgICAgICAgICAgICAgIGNvbnRlbnQgOiBo
ZGFzWzBdLmlkCiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHRoaXMuZGVidWcoIHRoaXMu
anNvblN0ciggcmV0dXJuZWQgKSApOwotICAgICAgICB9LCA0MDMsICdIaXN0b3J5IGlzIG5vdCBh
Y2Nlc3NpYmxlIHRvIHRoZSBjdXJyZW50IHVzZXInLCAnaGRhIGNvcHk9CiBmcm9tIGZhaWxlZCB3
aXRoIGVycm9yJyApOworICAgICAgICB9LCA0MDMsICdIaXN0b3J5IGlzIG5vdCBhY2Nlc3NpYmxl
IGJ5IHVzZXInLCAnaGRhIGNvcHkgZnJvbSBmYWlsZWQ9CiB3aXRoIGVycm9yJyApOwo9MjAKICAg
ICB9Cj0yMApAQCAtMTc3LDIwICsxNzcsMjAgQEAKICAgICAgICAgdGhpcy50ZXN0LmNvbW1lbnQo
ICd1cGRhdGUgc2hvdWxkIGZhaWwgZm9yIGhpc3Rvcnk6ICcgKyBoaXN0b3J5Lm5hPQptZSApOwog
ICAgICAgICB0aGlzLmFwaS5hc3NlcnRSYWlzZXMoIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICB0
aGlzLmFwaS5oaXN0b3JpZXMudXBkYXRlKCBoaXN0b3J5LmlkLCB7IGRlbGV0ZWQ6IHRydWUgfSk7
Ci0gICAgICAgIH0sIDQwMywgJ0hpc3RvcnkgaXMgbm90IG93bmVkIGJ5IHRoZSBjdXJyZW50IHVz
ZXInLCAndXBkYXRlIGZhaWxlZD0KIHdpdGggZXJyb3InICk7CisgICAgICAgIH0sIDQwMywgJ0hp
c3RvcnkgaXMgbm90IG93bmVkIGJ5IHVzZXInLCAndXBkYXRlIGZhaWxlZCB3aXRoIGVycm9yJz0K
ICk7CiAgICAgICAgIHRoaXMudGVzdC5jb21tZW50KCAnZGVsZXRlIHNob3VsZCBmYWlsIGZvciBo
aXN0b3J5OiAnICsgaGlzdG9yeS5uYT0KbWUgKTsKICAgICAgICAgdGhpcy5hcGkuYXNzZXJ0UmFp
c2VzKCBmdW5jdGlvbigpewogICAgICAgICAgICAgdGhpcy5hcGkuaGlzdG9yaWVzLmRlbGV0ZV8o
IGhpc3RvcnkuaWQgKTsKLSAgICAgICAgfSwgNDAzLCAnSGlzdG9yeSBpcyBub3Qgb3duZWQgYnkg
dGhlIGN1cnJlbnQgdXNlcicsICdkZWxldGUgZmFpbGVkPQogd2l0aCBlcnJvcicgKTsKKyAgICAg
ICAgfSwgNDAzLCAnSGlzdG9yeSBpcyBub3Qgb3duZWQgYnkgdXNlcicsICdkZWxldGUgZmFpbGVk
IHdpdGggZXJyb3InPQogKTsKPTIwCiAgICAgICAgIHRoaXMudGVzdC5jb21tZW50KCAnaGRhIHVw
ZGF0aW5nIHNob3VsZCBmYWlsIGZvciBoaXN0b3J5OiAnICsgaGlzdD0Kb3J5Lm5hbWUgKTsKICAg
ICAgICAgdGhpcy5hcGkuYXNzZXJ0UmFpc2VzKCBmdW5jdGlvbigpewogICAgICAgICAgICAgdGhp
cy5hcGkuaGRhcy51cGRhdGUoIGhpc3RvcnkuaWQsIGhkYXNbMF0uaWQsIHsgZGVsZXRlZDogdHJ1
ZSA9Cn0pOwotICAgICAgICB9LCA0MDMsICdIaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uIGlzIG5v
dCBvd25lZCBieSB0aGUgY3VycmVudCB1c2U9CnInLCAnaGRhIHVwZGF0ZSBmYWlsZWQgd2l0aCBl
cnJvcicgKTsKKyAgICAgICAgfSwgNDAzLCAnSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbiBpcyBu
b3Qgb3duZWQgYnkgdXNlcicsICdoZGEgdXBkPQphdGUgZmFpbGVkIHdpdGggZXJyb3InICk7CiAg
ICAgICAgIHRoaXMudGVzdC5jb21tZW50KCAnaGRhIGRlbGV0aW9uIHNob3VsZCBmYWlsIGZvciBo
aXN0b3J5OiAnICsgaGlzdD0Kb3J5Lm5hbWUgKTsKICAgICAgICAgdGhpcy5hcGkuYXNzZXJ0UmFp
c2VzKCBmdW5jdGlvbigpewogICAgICAgICAgICAgdGhpcy5hcGkuaGRhcy5kZWxldGVfKCBoaXN0
b3J5LmlkLCBoZGFzWzBdLmlkICk7Ci0gICAgICAgIH0sIDQwMywgJ0hpc3RvcnlEYXRhc2V0QXNz
b2NpYXRpb24gaXMgbm90IG93bmVkIGJ5IHRoZSBjdXJyZW50IHVzZT0KcicsICdoZGEgZGVsZXRl
IGZhaWxlZCB3aXRoIGVycm9yJyApOworICAgICAgICB9LCA0MDMsICdIaXN0b3J5RGF0YXNldEFz
c29jaWF0aW9uIGlzIG5vdCBvd25lZCBieSB1c2VyJywgJ2hkYSBkZWw9CmV0ZSBmYWlsZWQgd2l0
aCBlcnJvcicgKTsKPTIwCiAgICAgICAgIHRoaXMudGVzdC5jb21tZW50KCAnY29weWluZyBoZGEg
aW50byBoaXN0b3J5IHNob3VsZCBmYWlsIGZvciBoaXN0bz0Kcnk6ICcgKyBoaXN0b3J5Lm5hbWUg
KTsKICAgICAgICAgdGhpcy5hcGkuYXNzZXJ0UmFpc2VzKCBmdW5jdGlvbigpewpAQCAtMTk5LDcg
KzE5OSw3IEBACiAgICAgICAgICAgICAgICAgLy8gc2hvdWxkIGVycm9yIGJlZm9yZSBpdCBjaGVj
a3MgdGhlIGlkCiAgICAgICAgICAgICAgICAgY29udGVudCA6ICdibGVyJwogICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0sIDQwMywgJ0hpc3RvcnkgaXMgbm90IG93bmVkIGJ5IHRoZSBjdXJyZW50
IHVzZXInLCAnaGRhIGNvcHkgdG8gZj0KYWlsZWQnICk7CisgICAgICAgIH0sIDQwMywgJ0hpc3Rv
cnkgaXMgbm90IG93bmVkIGJ5IHVzZXInLCAnaGRhIGNvcHkgdG8gZmFpbGVkJyApOwogICAgIH0K
PTIwCiAgICAgZnVuY3Rpb24gdGVzdEluYWNjZXNzaWJsZSggaGlzdG9yeSwgaGRhcyApewoKZGlm
ZiAtciAzMTM1N2VkZjI2MGVhNmIyNTlkYzY4MjMwZjMwODNiM2YwZmFmY2EwIC1yIDE0Nzk2YWM4
NjdlYjBjN2RjNTE3ZWVkPQphMWVjODI1MGM5Yjg2OGJiNyB0ZXN0L2Nhc3BlcmpzL2FwaS1oaXN0
b3J5LXRlc3RzLmpzCi0tLSBhL3Rlc3QvY2FzcGVyanMvYXBpLWhpc3RvcnktdGVzdHMuanMKKysr
IGIvdGVzdC9jYXNwZXJqcy9hcGktaGlzdG9yeS10ZXN0cy5qcwpAQCAtMTA4LDkgKzEwOCw5IEBA
CiAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFVOREVMRVRFCiAg
ICAgdGhpcy50ZXN0LmNvbW1lbnQoICdjYWxsaW5nIHVuZGVsZXRlIHNob3VsZCB1bmRlbGV0ZSB0
aGUgZ2l2ZW4gaGlzdG9yeT0KIGFuZCByZS1pbmNsdWRlIGl0IGluIGluZGV4JyApOwogICAgIHZh
ciB1bmRlbGV0ZWRIaXN0b3J5ID0zRCB0aGlzLmFwaS5oaXN0b3JpZXMudW5kZWxldGUoIGNyZWF0
ZWRIaXN0b3J5Lmk9CmQgKTsKLSAgICAvL3RoaXMuZGVidWcoICdyZXR1cm5lZCBmcm9tIHVuZGVs
ZXRlOlxuJyArIHRoaXMuanNvblN0ciggdW5kZWxldGVkSGlzPQp0b3J5ICkgKTsKLSAgICB0aGlz
LnRlc3QuYXNzZXJ0KCB1bmRlbGV0ZWRIaXN0b3J5ID0zRD0zRD0zRCAnT0snLAotICAgICAgICAi
VW5kZWxldGlvbiByZXR1cm5lZCAnT0snIC0gZXZlbiB0aG91Z2ggdGhhdCdzIG5vdCBhIGdyZWF0
LCBpbmZvcm09CmF0aXZlIHJlc3BvbnNlOiAiICsgdW5kZWxldGVkSGlzdG9yeSApOworICAgIHRo
aXMuZGVidWcoICdyZXR1cm5lZCBmcm9tIHVuZGVsZXRlOlxuJyArIHRoaXMuanNvblN0ciggdW5k
ZWxldGVkSGlzdG89CnJ5ICkgKTsKKyAgICB0aGlzLnRlc3QuYXNzZXJ0KCAoIHVuZGVsZXRlZEhp
c3RvcnkuaWQgPTNEPTNEPTNEIGNyZWF0ZWRIaXN0b3J5LmlkICkgPQomJiAoICF1bmRlbGV0ZWRI
aXN0b3J5LmRlbGV0ZWQgKSwKKyAgICAgICAgIlVuZGVsZXRpb24gbmV3LCB1cGRhdGVkIEpTT04g
Zm9yIHRoZSBoaXN0b3J5IiApOwo9MjAKICAgICBuZXdGaXJzdEhpc3RvcnkgPTNEIHRoaXMuYXBp
Lmhpc3Rvcmllcy5pbmRleCgpWzBdOwogICAgIC8vdGhpcy5kZWJ1ZyggJ25ld0ZpcnN0SGlzdG9y
eTpcbicgKyB0aGlzLmpzb25TdHIoIG5ld0ZpcnN0SGlzdG9yeSApICk7CkBAIC0xMzAsMTMgKzEz
MCw4IEBACiAgICAgaGlzdG9yeVNob3cgPTNEIHRoaXMuYXBpLmhpc3Rvcmllcy5zaG93KCBuZXdG
aXJzdEhpc3RvcnkuaWQgKTsKICAgICB0aGlzLnRlc3QuYXNzZXJ0KCBoaXN0b3J5U2hvdy5uYW1l
ID0zRD0zRD0zRCAnTmV3IG5hbWUnLCAiTmFtZSBzdWNjZXNzPQpmdWxseSBzZXQgdmlhIHVwZGF0
ZTogIiArIGhpc3RvcnlTaG93Lm5hbWUgKTsKPTIwCi0gICAgdGhpcy50ZXN0LmNvbW1lbnQoICd1
cGRhdGUgc2hvdWxkIHNhbml0aXplIGFueSBuZXcgbmFtZScgKTsKLSAgICByZXR1cm5lZCA9M0Qg
dGhpcy5hcGkuaGlzdG9yaWVzLnVwZGF0ZSggbmV3Rmlyc3RIaXN0b3J5LmlkLCB7Ci0gICAgICAg
IG5hbWUgOiAnTmV3IG5hbWU8c2NyaXB0IHR5cGU9M0QidGV4dC9qYXZhc2NyaXB0IiBzcmM9M0Qi
YmxlciI+YWxlcj0KdCgiYmxhaCIpOzwvc2NyaXB0PicKLSAgICB9KTsKLSAgICAvL3RoaXMuZGVi
dWcoICdyZXR1cm5lZDpcbicgKyB0aGlzLmpzb25TdHIoIHJldHVybmVkICkgKTsKLSAgICBoaXN0
b3J5U2hvdyA9M0QgdGhpcy5hcGkuaGlzdG9yaWVzLnNob3coIG5ld0ZpcnN0SGlzdG9yeS5pZCAp
OwotICAgIHRoaXMudGVzdC5hc3NlcnQoIGhpc3RvcnlTaG93Lm5hbWUgPTNEPTNEPTNEICdOZXcg
bmFtZScsICJVcGRhdGUgc2FuaXQ9Cml6ZWQgbmFtZTogIiArIGhpc3RvcnlTaG93Lm5hbWUgKTsK
KyAgICAvLyBubyBzYW5pdGl6aW5nIGlucHV0CisgICAgLy90aGlzLnRlc3QuY29tbWVudCggJ3Vw
ZGF0ZSBzaG91bGQgc2FuaXRpemUgYW55IG5ldyBuYW1lJyApOwo9MjAKICAgICAvL05PVEUhOiB0
aGlzIGZhaWxzIG9uIHNxbGl0ZTMgKHdpdGggZGVmYXVsdCBzZXR1cCkKICAgICB0aGlzLnRlc3Qu
Y29tbWVudCggJ3VwZGF0ZSBzaG91bGQgYWxsb3cgdW5pY29kZSBpbiBuYW1lcycgKTsKQEAgLTE5
NywyNSArMTkyLDE4IEBACiAgICAgdGhpcy50ZXN0LmFzc2VydCggaGlzdG9yeVNob3cuZ2Vub21l
X2J1aWxkID0zRD0zRD0zRCAnaGcxOCcsCiAgICAgICAgICJnZW5vbWVfYnVpbGQgc3VjY2Vzc2Z1
bGx5IHNldCB2aWEgdXBkYXRlOiAiICsgaGlzdG9yeVNob3cuZ2Vub21lXz0KYnVpbGQgKTsKPTIw
Ci0gICAgdGhpcy50ZXN0LmNvbW1lbnQoICd1cGRhdGUgc2hvdWxkIHNhbml0aXplIGFueSBnZW5v
bWVfYnVpbGQnICk7Ci0gICAgcmV0dXJuZWQgPTNEIHRoaXMuYXBpLmhpc3Rvcmllcy51cGRhdGUo
IG5ld0ZpcnN0SGlzdG9yeS5pZCwgewotICAgICAgICBnZW5vbWVfYnVpbGQgOiAnaGcxODxzY3Jp
cHQgdHlwZT0zRCJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0zRCJibGVyIj49CmFsZXJ0KCJibGFoIik7
PC9zY3JpcHQ+JwotICAgIH0pOwotICAgIC8vdGhpcy5kZWJ1ZyggJ3JldHVybmVkOlxuJyArIHRo
aXMuanNvblN0ciggcmV0dXJuZWQgKSApOwotICAgIGhpc3RvcnlTaG93ID0zRCB0aGlzLmFwaS5o
aXN0b3JpZXMuc2hvdyggbmV3Rmlyc3RIaXN0b3J5LmlkICk7Ci0gICAgdGhpcy50ZXN0LmFzc2Vy
dCggaGlzdG9yeVNob3cuZ2Vub21lX2J1aWxkID0zRD0zRD0zRCAnaGcxOCcsCi0gICAgICAgICJV
cGRhdGUgc2FuaXRpemVkIGdlbm9tZV9idWlsZDogIiArIGhpc3RvcnlTaG93Lmdlbm9tZV9idWls
ZCApOworICAgIC8vIG5vIHNhbml0aXppbmcgaW5wdXQKKyAgICAvL3RoaXMudGVzdC5jb21tZW50
KCAndXBkYXRlIHNob3VsZCBzYW5pdGl6ZSBhbnkgZ2Vub21lX2J1aWxkJyApOwo9MjAKLSAgICAv
LyByZW1vdmluZyBmb3Igbm93IHVudGlsIEkgY2FuIGRldGVybWluZSB0aGUgcmVsYXRpb25zaGlw
IGJldHdlZW4gdW5pPQpjb2RlIGFuZCBnZW5vbWVfYnVpbGRzCi0gICAgdGhpcy50ZXN0LmNvbW1l
bnQoICd1cGRhdGUgc2hvdWxkIGFsbG93IHVuaWNvZGUgaW4gZ2Vub21lIGJ1aWxkcycgKTsKLSAg
ICB2YXIgdW5pY29kZUJ1aWxkID0zRCAnPUU2PUExPTlDMTInOwotICAgIHJldHVybmVkID0zRCB0
aGlzLmFwaS5oaXN0b3JpZXMudXBkYXRlKCBuZXdGaXJzdEhpc3RvcnkuaWQsIHsKLSAgICAgICAg
Z2Vub21lX2J1aWxkIDogdW5pY29kZUJ1aWxkCi0gICAgfSk7Ci0gICAgLy90aGlzLmRlYnVnKCAn
cmV0dXJuZWQ6XG4nICsgdGhpcy5qc29uU3RyKCByZXR1cm5lZCApICk7Ci0gICAgaGlzdG9yeVNo
b3cgPTNEIHRoaXMuYXBpLmhpc3Rvcmllcy5zaG93KCBuZXdGaXJzdEhpc3RvcnkuaWQgKTsKLSAg
ICB0aGlzLnRlc3QuYXNzZXJ0KCBoaXN0b3J5U2hvdy5nZW5vbWVfYnVpbGQgPTNEPTNEPTNEIHVu
aWNvZGVCdWlsZCwKLSAgICAgICAgIlVwZGF0ZSBhY2NlcHRlZCB1bmljb2RlIGdlbm9tZV9idWls
ZDogIiArIGhpc3RvcnlTaG93Lmdlbm9tZV9idWlsPQpkICk7CisgICAgLy8gcmVtb3ZlZCBzaW5j
ZSB3ZSBoYXZlIG5vIHByZS1pbnN0YWxsZWQgdW5pY29kZSBidWlsZHMKKyAgICAvL3RoaXMudGVz
dC5jb21tZW50KCAndXBkYXRlIHNob3VsZCBhbGxvdyB1bmljb2RlIGluIGdlbm9tZSBidWlsZHMn
ICk7CisKKyAgICBzcGFjZWdob3N0LnRlc3QuY29tbWVudCggJ0FuIHVua25vd24gcmVmZXJlbmNl
L2dlbm9tZV9idWlsZCBzaG91bGQgcmV0PQp1cm4gYSA0MDAnICk7CisgICAgdGhpcy5hcGkuYXNz
ZXJ0UmFpc2VzKCBmdW5jdGlvbigpeworICAgICAgICByZXR1cm5lZCA9M0QgdGhpcy5hcGkuaGlz
dG9yaWVzLnVwZGF0ZSggbmV3Rmlyc3RIaXN0b3J5LmlkLCB7CisgICAgICAgICAgICBnZW5vbWVf
YnVpbGQgOiAnd29va2llZTEyJworICAgICAgICB9KTsKKyAgICB9LCA0MDAsICdpbnZhbGlkIHJl
ZmVyZW5jZScsICdCYWQgUmVxdWVzdCB3aXRoIGludmFsaWQgaWQ6IHNob3cnICk7Cj0yMAo9MjAK
ICAgICAvLyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gYW5ub3RhdGlvbgpA
QCAtMjI0LDE5ICsyMTIsMTMgQEAKICAgICByZXR1cm5lZCA9M0QgdGhpcy5hcGkuaGlzdG9yaWVz
LnVwZGF0ZSggbmV3Rmlyc3RIaXN0b3J5LmlkLCB7CiAgICAgICAgIGFubm90YXRpb24gOiBuZXdB
bm5vdGF0aW9uCiAgICAgfSk7Ci0gICAgLy90aGlzLmRlYnVnKCAncmV0dXJuZWQ6XG4nICsgdGhp
cy5qc29uU3RyKCByZXR1cm5lZCApICk7CisgICAgdGhpcy5kZWJ1ZyggJ3JldHVybmVkOlxuJyAr
IHRoaXMuanNvblN0ciggcmV0dXJuZWQgKSApOwogICAgIGhpc3RvcnlTaG93ID0zRCB0aGlzLmFw
aS5oaXN0b3JpZXMuc2hvdyggbmV3Rmlyc3RIaXN0b3J5LmlkICk7CiAgICAgdGhpcy50ZXN0LmFz
c2VydCggaGlzdG9yeVNob3cuYW5ub3RhdGlvbiA9M0Q9M0Q9M0QgbmV3QW5ub3RhdGlvbiwKICAg
ICAgICAgIkFubm90YXRpb24gc3VjY2Vzc2Z1bGx5IHNldCB2aWEgdXBkYXRlOiAiICsgaGlzdG9y
eVNob3cuYW5ub3RhdGlvPQpuICk7Cj0yMAotICAgIHRoaXMudGVzdC5jb21tZW50KCAndXBkYXRl
IHNob3VsZCBzYW5pdGl6ZSBhbnkgbmV3IGFubm90YXRpb24nICk7Ci0gICAgcmV0dXJuZWQgPTNE
IHRoaXMuYXBpLmhpc3Rvcmllcy51cGRhdGUoIG5ld0ZpcnN0SGlzdG9yeS5pZCwgewotICAgICAg
ICBhbm5vdGF0aW9uIDogJ05ldyBhbm5vdGF0aW9uPHNjcmlwdCB0eXBlPTNEInRleHQvamF2YXNj
cmlwdCIgc3JjPQo9M0QiYmxlciI+YWxlcnQoImJsYWgiKTs8L3NjcmlwdD4nCi0gICAgfSk7Ci0g
ICAgLy90aGlzLmRlYnVnKCAncmV0dXJuZWQ6XG4nICsgdGhpcy5qc29uU3RyKCByZXR1cm5lZCAp
ICk7Ci0gICAgaGlzdG9yeVNob3cgPTNEIHRoaXMuYXBpLmhpc3Rvcmllcy5zaG93KCBuZXdGaXJz
dEhpc3RvcnkuaWQgKTsKLSAgICB0aGlzLnRlc3QuYXNzZXJ0KCBoaXN0b3J5U2hvdy5hbm5vdGF0
aW9uID0zRD0zRD0zRCAnTmV3IGFubm90YXRpb24nLAotICAgICAgICAiVXBkYXRlIHNhbml0aXpl
ZCBhbm5vdGF0aW9uOiAiICsgaGlzdG9yeVNob3cuYW5ub3RhdGlvbiApOworICAgIC8vIG5vIHNh
bml0aXppbmcgaW5wdXQKKyAgICAvL3RoaXMudGVzdC5jb21tZW50KCAndXBkYXRlIHNob3VsZCBz
YW5pdGl6ZSBhbnkgbmV3IGFubm90YXRpb24nICk7Cj0yMAogICAgIHRoaXMudGVzdC5jb21tZW50
KCAndXBkYXRlIHNob3VsZCBhbGxvdyB1bmljb2RlIGluIGFubm90YXRpb25zJyApOwogICAgIHZh
ciB1bmljb2RlQW5ub3RhdGlvbiA9M0QgJz1FMz04MT04QT1FOT1BMT05OD1FMz04MT04ND1FMz04
MT1BRj1FMz04MD0KPTgxPUUzPTgxPTlEPUUzPTgyPThDPUUzPTgxPThDPUU4PTkwPUJEPUU0PUI4
PThCPUUzPTgxPTk1PUUzPTgxPTlCPUUzPTgxPUFBPQo9RTM9ODE9ODQnOwpAQCAtMjYxLDEzICsy
NDMsNiBAQAo9MjAKICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
RVJST1JTCiAgICAgLy8gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLj0KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uIGlkaW90
IHByb29maW5nCi0gICAgdGhpcy50ZXN0LmNvbW1lbnQoICd1cGRhdGluZyB0byB0aGUgY3VycmVu
dCB2YWx1ZSBzaG91bGQgcmV0dXJuIG5vIHZhbD0KdWUgKG5vIGNoYW5nZSknICk7Ci0gICAgaGlz
dG9yeVNob3cgPTNEIHRoaXMuYXBpLmhpc3Rvcmllcy5zaG93KCBuZXdGaXJzdEhpc3RvcnkuaWQg
KTsKLSAgICByZXR1cm5lZCA9M0QgdGhpcy5hcGkuaGlzdG9yaWVzLnVwZGF0ZSggbmV3Rmlyc3RI
aXN0b3J5LmlkLCB7Ci0gICAgICAgIG5hbWUgOiBoaXN0b3J5U2hvdy5uYW1lCi0gICAgfSk7Ci0g
ICAgdGhpcy50ZXN0LmFzc2VydCggdGhpcy5jb3VudEtleXMoIHJldHVybmVkICkgPTNEPTNEPTNE
IDAsICJObyBjaGFuZ2VkID0KcmV0dXJuZWQ6ICIgKyB0aGlzLmpzb25TdHIoIHJldHVybmVkICkg
KTsKLQogICAgIHRoaXMudGVzdC5jb21tZW50KCAndXBkYXRpbmcgdXNpbmcgYSBub25zZW5zZSBr
ZXkgc2hvdWxkIGZhaWwgc2lsZW50bHk9CicgKTsKICAgICByZXR1cm5lZCA9M0QgdGhpcy5hcGku
aGlzdG9yaWVzLnVwZGF0ZSggbmV3Rmlyc3RIaXN0b3J5LmlkLCB7CiAgICAgICAgIGtvbmFtaUNv
ZGUgOiAndXVkZGxybHJiYScKQEAgLTI5OCwyNSArMjczLDI1IEBACiAgICAgICAgIHVwZGF0ZWRB
dHRyc1sga2V5IF0gPTNEIGZhbHNlOwogICAgICAgICBzcGFjZWdob3N0LmFwaS5hc3NlcnRSYWlz
ZXMoIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICByZXR1cm5lZCA9M0Qgc3BhY2VnaG9zdC5hcGku
aGlzdG9yaWVzLnVwZGF0ZSggbmV3Rmlyc3RIaXN0b3J5Lj0KaWQsIHVwZGF0ZWRBdHRycyApOwot
ICAgICAgICB9LCA0MDAsIGtleSArICcgbXVzdCBiZSBhIHN0cmluZyBvciB1bmljb2RlJywgJ3R5
cGUgdmFsaWRhdGlvbiBlcnI9Cm9yJyApOworICAgICAgICAvLyBub3RlOiBhbm5vdGF0aW9uIGNh
biBiZSBiYXNlc3RyaW5nIG9yIG51bGwgKGEgdHVwbGUpIHNvIGp1c3QgdXM9CmUgdGhlIHBhcnRp
YWwgZXJyb3Igc3RyaW5nCisgICAgICAgIH0sIDQwMCwgJ211c3QgYmUgYSB0eXBlJywgJ3R5cGUg
dmFsaWRhdGlvbiBlcnJvcicgKTsKICAgICB9KTsKICAgICBbICdkZWxldGVkJywgJ2ltcG9ydGFi
bGUnLCAncHVibGlzaGVkJyBdLmZvckVhY2goIGZ1bmN0aW9uKCBrZXkgKXsKICAgICAgICAgdmFy
IHVwZGF0ZWRBdHRycyA9M0Qge307CiAgICAgICAgIHVwZGF0ZWRBdHRyc1sga2V5IF0gPTNEICdz
dHJhYWFuZyc7CiAgICAgICAgIHNwYWNlZ2hvc3QuYXBpLmFzc2VydFJhaXNlcyggZnVuY3Rpb24o
KXsKICAgICAgICAgICAgIHJldHVybmVkID0zRCBzcGFjZWdob3N0LmFwaS5oaXN0b3JpZXMudXBk
YXRlKCBuZXdGaXJzdEhpc3RvcnkuPQppZCwgdXBkYXRlZEF0dHJzICk7Ci0gICAgICAgIH0sIDQw
MCwga2V5ICsgJyBtdXN0IGJlIGEgYm9vbGVhbicsICd0eXBlIHZhbGlkYXRpb24gZXJyb3InICk7
CisgICAgICAgIH0sIDQwMCwgIm11c3QgYmUgYSB0eXBlOiA8dHlwZSAnYm9vbCc+IiwgJ3R5cGUg
dmFsaWRhdGlvbiBlcnJvcicgKTsKICAgICB9KTsKLSAgICBbICd5b3VcJ3JlIGl0JywgWyB0cnVl
IF0gXS5mb3JFYWNoKCBmdW5jdGlvbiggYmFkVmFsICl7Ci0gICAgICAgIHNwYWNlZ2hvc3QuYXBp
LmFzc2VydFJhaXNlcyggZnVuY3Rpb24oKXsKLSAgICAgICAgICAgIHJldHVybmVkID0zRCBzcGFj
ZWdob3N0LmFwaS5oaXN0b3JpZXMudXBkYXRlKCBuZXdGaXJzdEhpc3RvcnkuPQppZCwgeyB0YWdz
OiBiYWRWYWwgfSk7Ci0gICAgICAgIH0sIDQwMCwgJ3RhZ3MgbXVzdCBiZSBhIGxpc3QnLCAndHlw
ZSB2YWxpZGF0aW9uIGVycm9yJyApOwotICAgIH0pOworICAgIHNwYWNlZ2hvc3QuYXBpLmFzc2Vy
dFJhaXNlcyggZnVuY3Rpb24oKXsKKyAgICAgICAgcmV0dXJuZWQgPTNEIHNwYWNlZ2hvc3QuYXBp
Lmhpc3Rvcmllcy51cGRhdGUoIG5ld0ZpcnN0SGlzdG9yeS5pZCwgPQp7IHRhZ3M6ICd5b3VcJ3Jl
IGl0JyB9KTsKKyAgICB9LCA0MDAsICJtdXN0IGJlIGEgdHlwZTogPHR5cGUgJ2xpc3QnPiIsICd0
eXBlIHZhbGlkYXRpb24gZXJyb3InICk7CisgICAgc3BhY2VnaG9zdC5hcGkuYXNzZXJ0UmFpc2Vz
KCBmdW5jdGlvbigpeworICAgICAgICByZXR1cm5lZCA9M0Qgc3BhY2VnaG9zdC5hcGkuaGlzdG9y
aWVzLnVwZGF0ZSggbmV3Rmlyc3RIaXN0b3J5LmlkLCA9CnsgdGFnczogWyB0cnVlIF0gfSk7Cisg
ICAgfSwgNDAwLCAibXVzdCBiZSBhIHR5cGU6IDx0eXBlICdiYXNlc3RyaW5nJz4iLCAndHlwZSB2
YWxpZGF0aW9uIGVycm9yJz0KICk7Cj0yMAotICAgIHRoaXMudGVzdC5jb21tZW50KCAnY2FsbGlu
ZyBzaG93IHdpdGggL2RlbGV0ZWQgc2hvdWxkIHJhaXNlIGEgYmFkIHJlcXU9CmVzdCcgKTsKLSAg
ICB0aGlzLmFwaS5hc3NlcnRSYWlzZXMoIGZ1bmN0aW9uKCl7Ci0gICAgICAgIHRoaXMuYXBpLmhp
c3Rvcmllcy5zaG93KCBuZXdGaXJzdEhpc3RvcnkuaWQsIHRydWUgKTsKLSAgICB9LCA0MDAsICdp
cyBub3QgZGVsZXRlZCcsICdCYWQgUmVxdWVzdCByZXR1cm5lZCBmb3Igbm9uLWRlbGV0ZWQnICk7
CisgICAgLy8gbm8gbG9uZ2VyIHRocm93cyBpZiBzaG93aW5nIGRlbGV0ZWQuLi4KKyAgICAvL3Ro
aXMudGVzdC5jb21tZW50KCAnY2FsbGluZyBzaG93IHdpdGggL2RlbGV0ZWQgc2hvdWxkIHJhaXNl
IGEgYmFkIHJlPQpxdWVzdCcgKTsKIC8qCiAqLwogICAgIC8vdGhpcy5kZWJ1ZyggdGhpcy5qc29u
U3RyKCBoaXN0b3J5U2hvdyApICk7CgpkaWZmIC1yIDMxMzU3ZWRmMjYwZWE2YjI1OWRjNjgyMzBm
MzA4M2IzZjBmYWZjYTAgLXIgMTQ3OTZhYzg2N2ViMGM3ZGM1MTdlZWQ9CmExZWM4MjUwYzliODY4
YmI3IHRlc3QvY2FzcGVyanMvYXBpLXZpc3VhbGl6YXRpb25zLXRlc3RzLmpzCi0tLSBhL3Rlc3Qv
Y2FzcGVyanMvYXBpLXZpc3VhbGl6YXRpb25zLXRlc3RzLmpzCisrKyBiL3Rlc3QvY2FzcGVyanMv
YXBpLXZpc3VhbGl6YXRpb25zLXRlc3RzLmpzCkBAIC0xNDksMjUgKzE0OSwyOSBAQAogICAgICAg
ICB9LCA0MDAsICJ2aXN1YWxpemF0aW9uIGlkZW50aWZpZXIgbXVzdCBjb25zaXN0IG9mIG9ubHkg
bG93ZXJjYXNlIGw9CmV0dGVycywgbnVtYmVycywgYW5kIHRoZSAnLScgY2hhcmFjdGVyIiApOwog
ICAgICAgICB2aXN1YWxpemF0aW9uRGF0YS5zbHVnID0zRCBvbGRTbHVnOwo9MjAKLSAgICAgICAg
dGhpcy50ZXN0LmNvbW1lbnQoICdDYWxsaW5nIGNyZWF0ZSB3aXRoIGFuIHVucmVjb2duaXplZCBr
ZXkgd2lsbCBjPQphdXNlIGFuIEFQSSBlcnJvcicgKTsKKyAgICAgICAgdGhpcy50ZXN0LmNvbW1l
bnQoICdDYWxsaW5nIGNyZWF0ZSB3aXRoIGFuIHVucmVjb2duaXplZCBrZXkgd2lsbCBiPQplIGln
bm9yZWQnICk7CisgICAgICAgIHZpc3VhbGl6YXRpb25EYXRhLnRpdGxlID0zRCAnVW5yZWNvZ25p
emVkIGtleSc7CisgICAgICAgIHZpc3VhbGl6YXRpb25EYXRhLnNsdWcgPTNEICd1bnJlY29nbml6
ZWQta2V5JzsKICAgICAgICAgdmlzdWFsaXphdGlvbkRhdGEuYmxlciA9M0QgJ2JsYWgnOwotICAg
ICAgICB0aGlzLmFwaS5hc3NlcnRSYWlzZXMoIGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICBjcmVh
dGVkID0zRCB0aGlzLmFwaS52aXN1YWxpemF0aW9ucy5jcmVhdGUoIHZpc3VhbGl6YXRpb25EYXRh
ID0KKTsKLSAgICAgICAgfSwgNDAwLCAndW5rbm93biBrZXk6IGJsZXInICk7CisgICAgICAgIGNy
ZWF0ZWQgPTNEIHRoaXMuYXBpLnZpc3VhbGl6YXRpb25zLmNyZWF0ZSggdmlzdWFsaXphdGlvbkRh
dGEgKTsKKyAgICAgICAgdGhpcy50ZXN0LmFzc2VydCggY3JlYXRlZC5ibGVyID0zRD0zRD0zRCB1
bmRlZmluZWQgKTsKICAgICAgICAgZGVsZXRlIHZpc3VhbGl6YXRpb25EYXRhLmJsZXI7Cj0yMAog
ICAgICAgICB0aGlzLnRlc3QuY29tbWVudCggJ0NhbGxpbmcgY3JlYXRlIHdpdGggYW4gdW5wYXJz
YWJsZSBKU09OIGNvbmZpZyA9CndpbGwgY2F1c2UgYW4gQVBJIGVycm9yJyApOworICAgICAgICB2
aXN1YWxpemF0aW9uRGF0YS50aXRsZSA9M0QgJ1VucGFyc2FibGUnOworICAgICAgICB2aXN1YWxp
emF0aW9uRGF0YS5zbHVnID0zRCAndW5wYXJzYWJsZSc7CiAgICAgICAgIHZpc3VhbGl6YXRpb25E
YXRhLmNvbmZpZyA9M0QgJzMgPTNEIG5pbWUnOwogICAgICAgICB0aGlzLmFwaS5hc3NlcnRSYWlz
ZXMoIGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICBjcmVhdGVkID0zRCB0aGlzLmFwaS52aXN1YWxp
emF0aW9ucy5jcmVhdGUoIHZpc3VhbGl6YXRpb25EYXRhID0KKTsKLSAgICAgICAgfSwgNDAwLCAn
Y29uZmlnIG11c3QgYmUgYSBkaWN0aW9uYXJ5IChKU09OKScgKTsKKyAgICAgICAgfSwgNDAwLCAi
Y29uZmlnIG11c3QgYmUgYSBkaWN0aW9uYXJ5OiA8dHlwZSAndW5pY29kZSc+IiApOwo9MjAKICAg
ICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tPQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVVBEQVRFCiAgICAg
ICAgIC8vIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLj0KLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiBpZGlvdCBwcm9vZmlu
ZwotICAgICAgICB0aGlzLnRlc3QuY29tbWVudCggJ3VwZGF0aW5nIHVzaW5nIGEgbm9uc2Vuc2Ug
a2V5IHNob3VsZCBmYWlsIHdpdGg9CiBhbiBlcnJvcicgKTsKLSAgICAgICAgdGhpcy5hcGkuYXNz
ZXJ0UmFpc2VzKCBmdW5jdGlvbigpewotICAgICAgICAgICAgcmV0dXJuZWQgPTNEIHRoaXMuYXBp
LnZpc3VhbGl6YXRpb25zLnVwZGF0ZSggY3JlYXRlZC5pZCwgeyBibGU9CnIgOiAnYmxhaCcgfSk7
Ci0gICAgICAgIH0sIDQwMCwgJ3Vua25vd24ga2V5OiBibGVyJyApOworICAgICAgICAvL3RoaXMu
dGVzdC5jb21tZW50KCAndXBkYXRpbmcgdXNpbmcgYSBub25zZW5zZSBrZXkgc2hvdWxkIGZhaWwg
d2k9CnRoIGFuIGVycm9yJyApOworICAgICAgICAvL3JldHVybmVkID0zRCB0aGlzLmFwaS52aXN1
YWxpemF0aW9ucy51cGRhdGUoIGNyZWF0ZWQuaWQsIHsgYmxlciA9CjogJ2JsYWgnIH0pOworICAg
ICAgICAvLy8vVE9ETzogdGhpcyBpc24ndCByZXR1cm5pbmcgYW4gb2JqZWN0Li4uCisgICAgICAg
IC8vdGhpcy5kZWJ1ZyggJ3JldHVybmVkOicgKyB0aGlzLmpzb25TdHIoIHJldHVybmVkICkgKTsK
KyAgICAgICAgLy90aGlzLnRlc3QuYXNzZXJ0KCByZXR1cm5lZC5ibGVyID0zRD0zRD0zRCB1bmRl
ZmluZWQgKTsKPTIwCiAgICAgICAgIHRoaXMudGVzdC5jb21tZW50KCAndXBkYXRpbmcgYnkgYXR0
ZW1wdGluZyB0byBjaGFuZ2UgdHlwZSBzaG91bGQgYz0KYXVzZSBhbiBlcnJvcicgKTsKICAgICAg
ICAgdGhpcy5hcGkuYXNzZXJ0UmFpc2VzKCBmdW5jdGlvbigpewoKZGlmZiAtciAzMTM1N2VkZjI2
MGVhNmIyNTlkYzY4MjMwZjMwODNiM2YwZmFmY2EwIC1yIDE0Nzk2YWM4NjdlYjBjN2RjNTE3ZWVk
PQphMWVjODI1MGM5Yjg2OGJiNyB0ZXN0L2Nhc3BlcmpzL2Nhc3BlcmpzX3J1bm5lci5weQotLS0g
YS90ZXN0L2Nhc3BlcmpzL2Nhc3BlcmpzX3J1bm5lci5weQorKysgYi90ZXN0L2Nhc3BlcmpzL2Nh
c3BlcmpzX3J1bm5lci5weQpAQCAtNDMwLDYgKzQzMCwzMSBAQAogICAgICAgICAiIiIKICAgICAg
ICAgc2VsZi5ydW5fanNfc2NyaXB0KCAnYXBpLWFub24taGlzdG9yeS1wZXJtaXNzaW9uLXRlc3Rz
LmpzJyApCj0yMAorICAgIGRlZiB0ZXN0XzA1X3dvcmtmbG93X2FwaSggc2VsZiApOgorICAgICAg
ICAiIiJUZXN0IEFQSSBmb3Igd29ya2Zsb3dzLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5y
dW5fanNfc2NyaXB0KCAnYXBpLXdvcmtmbG93LXRlc3RzLmpzJyApCisKKyAgICBkZWYgdGVzdF8w
Nl92aXN1YWxpemF0aW9uX2FwaSggc2VsZiApOgorICAgICAgICAiIiJUZXN0IEFQSSBmb3Igdmlz
dWFsaXphdGlvbnMuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnJ1bl9qc19zY3JpcHQoICdh
cGktdmlzdWFsaXphdGlvbnMtdGVzdHMuanMnICkKKworICAgIGRlZiB0ZXN0XzA3X3Rvb2xzX2Fw
aSggc2VsZiApOgorICAgICAgICAiIiJUZXN0IEFQSSBmb3IgdG9vbHMuCisgICAgICAgICIiIgor
ICAgICAgICBzZWxmLnJ1bl9qc19zY3JpcHQoICdhcGktdG9vbC10ZXN0cy5qcycgKQorCisgICAg
ZGVmIHRlc3RfMDhfY29uZmlndXJhdGlvbl9hcGkoIHNlbGYgKToKKyAgICAgICAgIiIiVGVzdCBB
UEkgZm9yIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICIiIgorICAgICAgICBzZWxmLnJ1bl9qc19z
Y3JpcHQoICdhcGktY29uZmlndXJhdGlvbi10ZXN0cy5qcycgKQorCisgICAgZGVmIHRlc3RfMDlf
dXNlcl9hcGkoIHNlbGYgKToKKyAgICAgICAgIiIiVGVzdCBBUEkgZm9yIHVzZXJzLgorICAgICAg
ICAiIiIKKyAgICAgICAgc2VsZi5ydW5fanNfc2NyaXB0KCAnYXBpLXVzZXItdGVzdHMuanMnICkK
Kwo9MjAKICMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRCBNQUlOCiBpZiBf
X25hbWVfXyA9M0Q9M0QgJ19fbWFpbl9fJzoKCmRpZmYgLXIgMzEzNTdlZGYyNjBlYTZiMjU5ZGM2
ODIzMGYzMDgzYjNmMGZhZmNhMCAtciAxNDc5NmFjODY3ZWIwYzdkYzUxN2VlZD0KYTFlYzgyNTBj
OWI4NjhiYjcgdGVzdC9jYXNwZXJqcy9oaXN0b3J5LXBhbmVsLXRlc3RzLmpzCi0tLSBhL3Rlc3Qv
Y2FzcGVyanMvaGlzdG9yeS1wYW5lbC10ZXN0cy5qcworKysgYi90ZXN0L2Nhc3BlcmpzL2hpc3Rv
cnktcGFuZWwtdGVzdHMuanMKQEAgLTk5LDYgKzk5LDcgQEAKICAgICAgICAgdGhpcy5wYWdlLnNl
bmRFdmVudCggJ2tleXByZXNzJywgdGhpcy5wYWdlLmV2ZW50LmtleS5FbnRlciApOwogICAgICAg
ICAvLyB3YWl0IGZvciBzZW5kIGFuZCByZS1yZW5kZXIgbmFtZQogICAgICAgICB0aGlzLndhaXQo
IDEwMDAsIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICB0aGlzLmNhcHR1cmUoICduYW1lLnBuZycg
KTsKICAgICAgICAgICAgIHRoaXMudGVzdC5hc3NlcnRTZWxlY3Rvckhhc1RleHQoIG5hbWVTZWxl
Y3RvciwgbmV3SGlzdG9yeU5hbWUsPQogJ0hpc3RvcnkgbmFtZSBpcyAnICsgbmV3SGlzdG9yeU5h
bWUgKTsKICAgICAgICAgICAgIHRoaXMudGVzdC5hc3NlcnREb2VzbnRFeGlzdCggZWRpdGFibGVU
ZXh0SW5wdXQsICJJbnB1dCBkaXNhcHBlPQphcnMgYWZ0ZXIgcHJlc3NpbmcgZW50ZXIiICk7CiAg
ICAgICAgIH0pOwpAQCAtMTEyLDE1NyArMTEzLDE1OCBAQAo9MjAKICAgICAgICAgdGhpcy5wYWdl
LnNlbmRFdmVudCggJ21vdXNlZG93bicsIC0xLCAtMSApOwogICAgICAgICB0aGlzLndhaXQoIDEw
MDAsIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICB0aGlzLmRlYnVnKCAnd2FhYWFhYWFhYWFhYWFh
YWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYT0KYXQnICk7CiAgICAgICAgICAgICB0
aGlzLnRlc3QuYXNzZXJ0U2VsZWN0b3JIYXNUZXh0KCBuYW1lU2VsZWN0b3IsIG5ld0hpc3RvcnlO
YW1lLD0KICdIaXN0b3J5IG5hbWUgaXMgU1RJTEwgJyArIG5ld0hpc3RvcnlOYW1lICk7CiAgICAg
ICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0RG9lc250RXhpc3QoIGVkaXRhYmxlVGV4dElucHV0LCAi
SW5wdXQgZGlzYXBwZT0KYXJzIGFmdGVyIGNsaWNraW5nIGF3YXkiICk7CiAgICAgICAgIH0pOwog
ICAgIH0pOwo9MjAKLSAgICBzcGFjZWdob3N0LnRoZW4oIGZ1bmN0aW9uKCl7Ci0gICAgICAgIHRo
aXMudGVzdC5jb21tZW50KCAnbmFtZSBzaG91bGQgcmV2ZXJ0IGlmIHVzZXIgaGl0cyBFU0Mgd2hp
bGUgZWRpdD0KaW5nJyApOwotCi0gICAgICAgIHRoaXMuY2xpY2soIG5hbWVTZWxlY3RvciApOwot
ICAgICAgICB0aGlzLnBhZ2Uuc2VuZEV2ZW50KCAna2V5cHJlc3MnLCAiQXJzZW5pYyBCYWN0ZXJp
YSIgKTsKLQotICAgICAgICB0aGlzLnBhZ2Uuc2VuZEV2ZW50KCAna2V5cHJlc3MnLCB0aGlzLnBh
Z2UuZXZlbnQua2V5LkVzY2FwZSApOwotICAgICAgICB0aGlzLndhaXQoIDEwMDAsIGZ1bmN0aW9u
KCl7Ci0gICAgICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0U2VsZWN0b3JIYXNUZXh0KCBuYW1lU2Vs
ZWN0b3IsIG5ld0hpc3RvcnlOYW1lLD0KICdIaXN0b3J5IG5hbWUgaXMgU1RJTEwgJyArIG5ld0hp
c3RvcnlOYW1lICk7Ci0gICAgICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0RG9lc250RXhpc3QoIGVk
aXRhYmxlVGV4dElucHV0LCAiSW5wdXQgZGlzYXBwZT0KYXJzIGFmdGVyIGhpdHRpbmcgRVNDIiAp
OwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09CiBjaGVjayBzdHJ1
Y3R1cmUgb2YgTk9OIGVtcHR5IGhpc3RvcnkKLSAgICAvLyB1cGxvYWQgZmlsZTogMS50eHQKLSAg
ICBzcGFjZWdob3N0LmFwaS50b29scy50aGVuVXBsb2FkVG9DdXJyZW50KHsgZmlsZXBhdGg6IGZp
bGVwYXRoVG9VcGxvYWQgPQp9LCBmdW5jdGlvbiB1cGxvYWRDYWxsYmFjayggaWQsIGpzb24gKXsK
LSAgICAgICAgdXBsb2FkSWQgPTNEIGlkOwotICAgIH0pOwotCi0gICAgc3BhY2VnaG9zdC5vcGVu
SG9tZVBhZ2UoKS50aGVuKCBmdW5jdGlvbiBjaGVja1BhbmVsU3RydWN0dXJlKCl7Ci0gICAgICAg
IHRoaXMudGVzdC5jb21tZW50KCAnY2hlY2tpbmcgc3RydWN0dXJlIG9mIG5vbi1lbXB0eSBwYW5l
bCcgKTsKLQotICAgICAgICB0aGlzLnRlc3QuY29tbWVudCggImhpc3RvcnkgbmFtZSBzaG91bGQg
ZXhpc3QsIGJlIHZpc2libGUsIGFuZCBoYXY9CmUgdGV4dCAiICsgdW5uYW1lZE5hbWUgKTsKLSAg
ICAgICAgdGhpcy50ZXN0LmFzc2VydEV4aXN0cyggbmFtZVNlbGVjdG9yLCBuYW1lU2VsZWN0b3Ig
KyAnIGV4aXN0cycgKTsKLSAgICAgICAgdGhpcy50ZXN0LmFzc2VydFZpc2libGUoIG5hbWVTZWxl
Y3RvciwgJ0hpc3RvcnkgbmFtZSBpcyB2aXNpYmxlJyApOwotICAgICAgICB0aGlzLnRlc3QuYXNz
ZXJ0U2VsZWN0b3JIYXNUZXh0KCBuYW1lU2VsZWN0b3IsIG5ld0hpc3RvcnlOYW1lLCAnSGk9CnN0
b3J5IG5hbWUgaXMgJyArIG5ld0hpc3RvcnlOYW1lICk7Ci0KLSAgICAgICAgdmFyIG9uZXR4dEZp
bGVzaXplID0zRCByZXF1aXJlKCAnZnMnICkuc2l6ZSggZmlsZXBhdGhUb1VwbG9hZCApLAotICAg
ICAgICAgICAgZXhwZWN0ZWRTaXplID0zRCBvbmV0eHRGaWxlc2l6ZSArICcgYnl0ZXMnOwotICAg
ICAgICB0aGlzLnRlc3QuY29tbWVudCggImhpc3Rvcnkgc2hvdWxkIGRpc3BsYXkgc2l6ZSBhbmQg
c2l6ZSBzaG91bGQgYmU9CiAiICsgb25ldHh0RmlsZXNpemUgKyAiIGJ5dGVzIiApOwotICAgICAg
ICB0aGlzLnRlc3QuYXNzZXJ0RXhpc3RzKCBzaXplU2VsZWN0b3IsICdGb3VuZCAnICsgc2l6ZVNl
bGVjdG9yICk7Ci0gICAgICAgIHRoaXMudGVzdC5hc3NlcnRWaXNpYmxlKCBzaXplU2VsZWN0b3Is
ICdIaXN0b3J5IHNpemUgaXMgdmlzaWJsZScgKTsKLSAgICAgICAgdGhpcy50ZXN0LmFzc2VydFNl
bGVjdG9ySGFzVGV4dCggc2l6ZVNlbGVjdG9yLCBleHBlY3RlZFNpemUsCi0gICAgICAgICAgICAn
SGlzdG9yeSBzaXplIGhhcyAiJyArIGV4cGVjdGVkU2l6ZSArICciOiAnICsgdGhpcy5mZXRjaFRl
eHQoID0Kc2l6ZVNlbGVjdG9yICkudHJpbSgpICk7Ci0KLSAgICAgICAgdGhpcy50ZXN0LmNvbW1l
bnQoICJ0YWdzIGFuZCBhbm5vdGF0aW9uIGljb25zIHNob3VsZCBiZSBhdmFpbGFibGUiPQogKTsK
LSAgICAgICAgdGhpcy50ZXN0LmFzc2VydEV4aXN0cyggdGFnSWNvblNlbGVjdG9yLCAgJ1RhZyBp
Y29uIGJ1dHRvbiBmb3VuZCcgPQopOwotICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0RXhpc3RzKCBh
bm5vSWNvblNlbGVjdG9yLCAnQW5ub3RhdGlvbiBpY29uIGJ1dHRvbiA9CmZvdW5kJyApOwotCi0g
ICAgICAgIHRoaXMudGVzdC5jb21tZW50KCAiQSBtZXNzYWdlIGFib3V0IHRoZSBjdXJyZW50IGhp
c3RvcnkgYmVpbmcgZW1wdD0KeSBzaG91bGQgTk9UIGJlIGRpc3BsYXllZCIgKTsKLSAgICAgICAg
dGhpcy50ZXN0LmFzc2VydEV4aXN0cyggZW1wdHlNc2dTZWxlY3RvciwgZW1wdHlNc2dTZWxlY3Rv
ciArICcgZXhpPQpzdHMnICk7Ci0gICAgICAgIHRoaXMudGVzdC5hc3NlcnROb3RWaXNpYmxlKCBl
bXB0eU1zZ1NlbGVjdG9yLCAnRW1wdHkgaGlzdG9yeSBtZXNzYT0KZ2UgaXMgTk9UIHZpc2libGUn
ICk7Ci0gICAgfSk7Ci0KLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPQogdGFncwotICAgIC8vIGtlZXBpbmcg
dGhpcyBsaWdodCBoZXJlIC0gYmV0dGVyIGZvciBpdHMgb3duIHRlc3QgZmlsZQotICAgIC8vVE9E
TzogY2hlY2sgdG9vbHRpcHMKLSAgICBzcGFjZWdob3N0LnRoZW4oIGZ1bmN0aW9uIG9wZW5UYWdz
KCl7Ci0gICAgICAgIHRoaXMudGVzdC5jb21tZW50KCAndGFnIGFyZWEgc2hvdWxkIG9wZW4gd2hl
biB0aGUgaGlzdG9yeSBwYW5lbCB0YT0KZyBpY29uIGlzIGNsaWNrZWQnICk7Ci0KLSAgICAgICAg
dGhpcy5jbGljayggdGFnSWNvblNlbGVjdG9yICk7Ci0gICAgICAgIHRoaXMud2FpdCggMTAwMCwg
ZnVuY3Rpb24oKXsKLSAgICAgICAgICAgIHRoaXMudGVzdC5hc3NlcnRWaXNpYmxlKCB0YWdBcmVh
U2VsZWN0b3IsICdUYWcgYXJlYSBpcyBub3cgZGlzPQpwbGF5ZWQnICk7Ci0gICAgICAgIH0pOwot
ICAgIH0pOwotICAgIHNwYWNlZ2hvc3QudGhlbiggZnVuY3Rpb24gY2xvc2VBbm5vdGF0aW9uKCl7
Ci0gICAgICAgIHRoaXMudGVzdC5jb21tZW50KCAnYW5ub3RhdGlvbiBhcmVhIHNob3VsZCBjbG9z
ZSB3aGVuIHRoZSBoaXN0b3J5ID0KcGFuZWwgdGFnIGljb24gaXMgY2xpY2tlZCBhZ2FpbicgKTsK
LQotICAgICAgICB0aGlzLmNsaWNrKCB0YWdJY29uU2VsZWN0b3IgKTsKLSAgICAgICAgdGhpcy53
YWl0KCAxMDAwLCBmdW5jdGlvbigpewotICAgICAgICAgICAgdGhpcy50ZXN0LmFzc2VydE5vdFZp
c2libGUoIHRhZ0FyZWFTZWxlY3RvciwgJ1RhZyBhcmVhIGlzIG5vdyA9CmhpZGRlbicgKTsKLSAg
ICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPQogYW5ub3RhdGlvbgotICAg
IC8vIGtlZXBpbmcgdGhpcyBsaWdodCBoZXJlIC0gYmV0dGVyIGZvciBpdHMgb3duIHRlc3QgZmls
ZQotICAgIC8vVE9ETzogY2hlY2sgdG9vbHRpcHMKLSAgICBzcGFjZWdob3N0LnRoZW4oIGZ1bmN0
aW9uIG9wZW5Bbm5vdGF0aW9uKCl7Ci0gICAgICAgIHRoaXMudGVzdC5jb21tZW50KCAnYW5ub3Rh
dGlvbiBhcmVhIHNob3VsZCBvcGVuIHdoZW4gdGhlIGhpc3RvcnkgcD0KYW5lbCBhbm5vdGF0aW9u
IGljb24gaXMgY2xpY2tlZCcgKTsKLQotICAgICAgICB0aGlzLmNsaWNrKCBhbm5vSWNvblNlbGVj
dG9yICk7Ci0gICAgICAgIHRoaXMud2FpdCggMTAwMCwgZnVuY3Rpb24oKXsKLSAgICAgICAgICAg
IHRoaXMudGVzdC5hc3NlcnRWaXNpYmxlKCBhbm5vQXJlYVNlbGVjdG9yLCAnQW5ub3RhdGlvbiBh
cmVhIGlzPQogbm93IGRpc3BsYXllZCcgKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci0gICAgc3Bh
Y2VnaG9zdC50aGVuKCBmdW5jdGlvbiBjbG9zZUFubm90YXRpb24oKXsKLSAgICAgICAgdGhpcy50
ZXN0LmNvbW1lbnQoICdhbm5vdGF0aW9uIGFyZWEgc2hvdWxkIGNsb3NlIHdoZW4gdGhlIGhpc3Rv
cnkgPQpwYW5lbCB0YWcgaWNvbiBpcyBjbGlja2VkIGFnYWluJyApOwotCi0gICAgICAgIHRoaXMu
Y2xpY2soIGFubm9JY29uU2VsZWN0b3IgKTsKLSAgICAgICAgdGhpcy53YWl0KCAxMDAwLCBmdW5j
dGlvbigpewotICAgICAgICAgICAgdGhpcy50ZXN0LmFzc2VydE5vdFZpc2libGUoIGFubm9BcmVh
U2VsZWN0b3IsICdBbm5vdGF0aW9uIGFyZWE9CiBpcyBub3cgaGlkZGVuJyApOwotICAgICAgICB9
KTsKLSAgICB9KTsKLQotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09CiByZWZyZXNoIGJ1dHRvbgotICAgIHNw
YWNlZ2hvc3QudGhlbiggZnVuY3Rpb24gcmVmcmVzaEJ1dHRvbigpewotICAgICAgICB0aGlzLnRl
c3QuY29tbWVudCggJ0hpc3RvcnkgcGFuZWwgc2hvdWxkIHJlZnJlc2ggd2hlbiB0aGUgaGlzdG9y
eSA9CnJlZnJlc2ggaWNvbiBpcyBjbGlja2VkJyApOwotCi0gICAgICAgIHRoaXMudGVzdC5hc3Nl
cnRFeGlzdHMoICByZWZyZXNoQnV0dG9uU2VsZWN0b3IsICJGb3VuZCByZWZyZXNoIGJ1dD0KdG9u
IiApOwotICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0VmlzaWJsZSggcmVmcmVzaEJ1dHRvblNlbGVj
dG9yLCAiUmVmcmVzaCBidXR0b24gaXM9CiB2aXNpYmxlIiApOwotICAgICAgICB0aGlzLnRlc3Qu
YXNzZXJ0VmlzaWJsZSggcmVmcmVzaEJ1dHRvblNlbGVjdG9yICsgJyAnICsgcmVmcmVzaEJ1dHQ9
Cm9uSWNvblNlbGVjdG9yLCAiUmVmcmVzaCBpY29uIGlzIHZpc2libGUiICk7Ci0KLSAgICAgICAg
Ly90aGlzLmFzc2VydE5hdmlnYXRpb25SZXF1ZXN0ZWQoIHJlZnJlc2hCdXR0b25IcmVmLCAiSGlz
dG9yeSByZWZyPQplc2hlZCB3aGVuIGNsaWNraW5nIHJlZnJlc2ggaWNvbiIsIGZ1bmN0aW9uKCl7
Ci0gICAgICAgIC8vICAgIHRoaXMuY2xpY2soIHJlZnJlc2hCdXR0b25TZWxlY3RvciApOwotICAg
ICAgICAvL30pOwotICAgIH0pOwotCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KIGhkYXMgY2FuIGJlIGV4
cGFuZGVkIGJ5IGNsaWNraW5nIG9uIHRoZSBoZGEKLSAgICAvLyBicm9rZW4gaW4gd2Via2l0IHcv
IGpxIDEuNwotICAgIHNwYWNlZ2hvc3QuaGlzdG9yeXBhbmVsLndhaXRGb3JIZGFzKCBmdW5jdGlv
bigpewotICAgICAgICB0aGlzLnRlc3QuY29tbWVudCggJ0hEQXMgY2FuIGJlIGV4cGFuZGVkIGJ5
IGNsaWNraW5nIG9uIHRoZSBuYW1lJyA9Cik7Ci0gICAgICAgIHZhciB1cGxvYWRlZFNlbGVjdG9y
ID0zRCAnI2RhdGFzZXQtJyArIHVwbG9hZElkOwotCi0gICAgICAgIHRoaXMuY2xpY2soIHVwbG9h
ZGVkU2VsZWN0b3IgKyAnICcgKyB0aGlzLmhpc3RvcnlwYW5lbC5kYXRhLnNlbGVjdD0Kb3JzLmhk
YS50aXRsZSApOwotICAgICAgICB0aGlzLndhaXQoIDEwMDAsIGZ1bmN0aW9uKCl7Ci0gICAgICAg
ICAgICB0aGlzLnRlc3QuYXNzZXJ0VmlzaWJsZSggdXBsb2FkZWRTZWxlY3RvciArICcgJyArIHRo
aXMuaGlzdG9yeT0KcGFuZWwuZGF0YS5zZWxlY3RvcnMuaGRhLmJvZHksCi0gICAgICAgICAgICAg
ICAgIkJvZHkgZm9yIHVwbG9hZGVkIGZpbGUgaXMgdmlzaWJsZSIgKTsKLSAgICAgICAgfSk7Ci0g
ICAgfSk7Ci0KLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPQogZXhwYW5kZWQgaGRhcyBzdGlsbCBleHBhbmRl
ZCBhZnRlciByZWZyZXNoCi0gICAgc3BhY2VnaG9zdC50aGVuKCBmdW5jdGlvbigpewotICAgICAg
ICB0aGlzLnRlc3QuY29tbWVudCggJ0V4cGFuZGVkIGhkYXMgYXJlIHN0aWxsIGV4cGFuZGVkIGFm
dGVyIGEgcmVmcmU9CnNoJyApOwotICAgICAgICB2YXIgdXBsb2FkZWRTZWxlY3RvciA9M0QgJyNk
YXRhc2V0LScgKyB1cGxvYWRJZDsKLQotICAgICAgICB0aGlzLmNsaWNrKCByZWZyZXNoQnV0dG9u
U2VsZWN0b3IgKTsKLSAgICAgICAgdGhpcy5oaXN0b3J5cGFuZWwud2FpdEZvckhkYXMoIGZ1bmN0
aW9uKCl7Ci0gICAgICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0VmlzaWJsZSggdXBsb2FkZWRTZWxl
Y3RvciArICcgJyArIHRoaXMuaGlzdG9yeT0KcGFuZWwuZGF0YS5zZWxlY3RvcnMuaGRhLmJvZHks
Ci0gICAgICAgICAgICAgICAgIkJvZHkgZm9yIHVwbG9hZGVkIGZpbGUgaXMgdmlzaWJsZSIgKTsK
LSAgICAgICAgfSk7Ci0gICAgICAgIC8vIHRoaXMgd2lsbCBicmVhazogd2Via2l0ICsganEgMS43
Ci0gICAgfSk7Ci0KLSAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPQogZXhwYW5kZWQgaGRhcyBjb2xsYXBzZSBi
eSBjbGlja2luZyBuYW1lIGFnYWluCi0gICAgc3BhY2VnaG9zdC50aGVuKCBmdW5jdGlvbigpewot
ICAgICAgICB0aGlzLnRlc3QuY29tbWVudCggJ0V4cGFuZGVkIGhkYXMgY29sbGFwc2UgYnkgY2xp
Y2tpbmcgbmFtZSBhZ2Fpbic9CiApOwotICAgICAgICB2YXIgdXBsb2FkZWRTZWxlY3RvciA9M0Qg
JyNkYXRhc2V0LScgKyB1cGxvYWRJZDsKLQotICAgICAgICB0aGlzLmNsaWNrKCB1cGxvYWRlZFNl
bGVjdG9yICsgJyAnICsgdGhpcy5oaXN0b3J5cGFuZWwuZGF0YS5zZWxlY3Q9Cm9ycy5oZGEudGl0
bGUgKTsKLSAgICAgICAgdGhpcy53YWl0KCA1MDAsIGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICB0
aGlzLnRlc3QuYXNzZXJ0Tm90VmlzaWJsZSggdXBsb2FkZWRTZWxlY3RvciArICcgJyArIHRoaXMu
aGlzdD0Kb3J5cGFuZWwuZGF0YS5zZWxlY3RvcnMuaGRhLmJvZHksCi0gICAgICAgICAgICAgICAg
IkJvZHkgZm9yIHVwbG9hZGVkIGZpbGUgaXMgbm90IHZpc2libGUiICk7Ci0gICAgICAgIH0pOwot
ICAgIH0pOwotCi0gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KIGNvbGxhcHNlZCBoZGFzIHN0aWxsIGNvbGxh
cHNlZCBhZnRlciByZWZyZXNoCi0gICAgc3BhY2VnaG9zdC50aGVuKCBmdW5jdGlvbigpewotICAg
ICAgICB0aGlzLnRlc3QuY29tbWVudCggJ2NvbGxhcHNlZCBoZGFzIHN0aWxsIGNvbGxhcHNlZCBh
ZnRlciBhIHJlZnJlc2g9CicgKTsKLSAgICAgICAgdmFyIHVwbG9hZGVkU2VsZWN0b3IgPTNEICcj
ZGF0YXNldC0nICsgdXBsb2FkSWQ7Ci0KLSAgICAgICAgdGhpcy5jbGljayggcmVmcmVzaEJ1dHRv
blNlbGVjdG9yICk7Ci0gICAgICAgIHRoaXMuaGlzdG9yeXBhbmVsLndhaXRGb3JIZGFzKCBmdW5j
dGlvbigpewotICAgICAgICAgICAgdGhpcy50ZXN0LmFzc2VydE5vdFZpc2libGUoIHVwbG9hZGVk
U2VsZWN0b3IgKyAnICcgKyB0aGlzLmhpc3Q9Cm9yeXBhbmVsLmRhdGEuc2VsZWN0b3JzLmhkYS5i
b2R5LAotICAgICAgICAgICAgICAgICJCb2R5IGZvciB1cGxvYWRlZCBmaWxlIGlzIG5vdCB2aXNp
YmxlIiApOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICAvL3NwYWNlZ2hvc3QudGhlbiggZnVu
Y3Rpb24oKXsKKyAgICAvLyAgICB0aGlzLnRlc3QuY29tbWVudCggJ25hbWUgc2hvdWxkIHJldmVy
dCBpZiB1c2VyIGhpdHMgRVNDIHdoaWxlIGVkPQppdGluZycgKTsKKyAgICAvLworICAgIC8vICAg
IHRoaXMuY2xpY2soIG5hbWVTZWxlY3RvciApOworICAgIC8vICAgIHRoaXMucGFnZS5zZW5kRXZl
bnQoICdrZXlwcmVzcycsICJBcnNlbmljIEJhY3RlcmlhIiApOworICAgIC8vCisgICAgLy8gICAg
dGhpcy5wYWdlLnNlbmRFdmVudCggJ2tleXByZXNzJywgdGhpcy5wYWdlLmV2ZW50LmtleS5Fc2Nh
cGUgKTsKKyAgICAvLyAgICB0aGlzLndhaXQoIDEwMDAsIGZ1bmN0aW9uKCl7CisgICAgLy8gICAg
ICAgIHRoaXMudGVzdC5hc3NlcnRTZWxlY3Rvckhhc1RleHQoIG5hbWVTZWxlY3RvciwgbmV3SGlz
dG9yeU5hbT0KZSwgJ0hpc3RvcnkgbmFtZSBpcyBTVElMTCAnICsgbmV3SGlzdG9yeU5hbWUgKTsK
KyAgICAvLyAgICAgICAgdGhpcy50ZXN0LmFzc2VydERvZXNudEV4aXN0KCBlZGl0YWJsZVRleHRJ
bnB1dCwgIklucHV0IGRpc2FwPQpwZWFycyBhZnRlciBoaXR0aW5nIEVTQyIgKTsKKyAgICAvLyAg
ICB9KTsKKyAgICAvL30pOworICAgIC8vCisgICAgLy8vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0gY2hlY2sgc3Ry
dWN0dXJlIG9mIE5PTiBlbXB0eSBoaXN0b3J5CisgICAgLy8vLyB1cGxvYWQgZmlsZTogMS50eHQK
KyAgICAvL3NwYWNlZ2hvc3QuYXBpLnRvb2xzLnRoZW5VcGxvYWRUb0N1cnJlbnQoeyBmaWxlcGF0
aDogZmlsZXBhdGhUb1VwbG9hPQpkIH0sIGZ1bmN0aW9uIHVwbG9hZENhbGxiYWNrKCBpZCwganNv
biApeworICAgIC8vICAgIHVwbG9hZElkID0zRCBpZDsKKyAgICAvL30pOworICAgIC8vCisgICAg
Ly9zcGFjZWdob3N0Lm9wZW5Ib21lUGFnZSgpLnRoZW4oIGZ1bmN0aW9uIGNoZWNrUGFuZWxTdHJ1
Y3R1cmUoKXsKKyAgICAvLyAgICB0aGlzLnRlc3QuY29tbWVudCggJ2NoZWNraW5nIHN0cnVjdHVy
ZSBvZiBub24tZW1wdHkgcGFuZWwnICk7CisgICAgLy8KKyAgICAvLyAgICB0aGlzLnRlc3QuY29t
bWVudCggImhpc3RvcnkgbmFtZSBzaG91bGQgZXhpc3QsIGJlIHZpc2libGUsIGFuZCBoPQphdmUg
dGV4dCAiICsgdW5uYW1lZE5hbWUgKTsKKyAgICAvLyAgICB0aGlzLnRlc3QuYXNzZXJ0RXhpc3Rz
KCBuYW1lU2VsZWN0b3IsIG5hbWVTZWxlY3RvciArICcgZXhpc3RzJyApOworICAgIC8vICAgIHRo
aXMudGVzdC5hc3NlcnRWaXNpYmxlKCBuYW1lU2VsZWN0b3IsICdIaXN0b3J5IG5hbWUgaXMgdmlz
aWJsZSc9CiApOworICAgIC8vICAgIHRoaXMudGVzdC5hc3NlcnRTZWxlY3Rvckhhc1RleHQoIG5h
bWVTZWxlY3RvciwgbmV3SGlzdG9yeU5hbWUsICc9Ckhpc3RvcnkgbmFtZSBpcyAnICsgbmV3SGlz
dG9yeU5hbWUgKTsKKyAgICAvLworICAgIC8vICAgIHZhciBvbmV0eHRGaWxlc2l6ZSA9M0QgcmVx
dWlyZSggJ2ZzJyApLnNpemUoIGZpbGVwYXRoVG9VcGxvYWQgKSwKKyAgICAvLyAgICAgICAgZXhw
ZWN0ZWRTaXplID0zRCBvbmV0eHRGaWxlc2l6ZSArICcgYnl0ZXMnOworICAgIC8vICAgIHRoaXMu
dGVzdC5jb21tZW50KCAiaGlzdG9yeSBzaG91bGQgZGlzcGxheSBzaXplIGFuZCBzaXplIHNob3Vs
ZCA9CmJlICIgKyBvbmV0eHRGaWxlc2l6ZSArICIgYnl0ZXMiICk7CisgICAgLy8gICAgdGhpcy50
ZXN0LmFzc2VydEV4aXN0cyggc2l6ZVNlbGVjdG9yLCAnRm91bmQgJyArIHNpemVTZWxlY3RvciAp
OworICAgIC8vICAgIHRoaXMudGVzdC5hc3NlcnRWaXNpYmxlKCBzaXplU2VsZWN0b3IsICdIaXN0
b3J5IHNpemUgaXMgdmlzaWJsZSc9CiApOworICAgIC8vICAgIHRoaXMudGVzdC5hc3NlcnRTZWxl
Y3Rvckhhc1RleHQoIHNpemVTZWxlY3RvciwgZXhwZWN0ZWRTaXplLAorICAgIC8vICAgICAgICAn
SGlzdG9yeSBzaXplIGhhcyAiJyArIGV4cGVjdGVkU2l6ZSArICciOiAnICsgdGhpcy5mZXRjaFRl
eHQ9Ciggc2l6ZVNlbGVjdG9yICkudHJpbSgpICk7CisgICAgLy8KKyAgICAvLyAgICB0aGlzLnRl
c3QuY29tbWVudCggInRhZ3MgYW5kIGFubm90YXRpb24gaWNvbnMgc2hvdWxkIGJlIGF2YWlsYWJs
PQplIiApOworICAgIC8vICAgIHRoaXMudGVzdC5hc3NlcnRFeGlzdHMoIHRhZ0ljb25TZWxlY3Rv
ciwgICdUYWcgaWNvbiBidXR0b24gZm91bmQ9CicgKTsKKyAgICAvLyAgICB0aGlzLnRlc3QuYXNz
ZXJ0RXhpc3RzKCBhbm5vSWNvblNlbGVjdG9yLCAnQW5ub3RhdGlvbiBpY29uIGJ1dHRvPQpuIGZv
dW5kJyApOworICAgIC8vCisgICAgLy8gICAgdGhpcy50ZXN0LmNvbW1lbnQoICJBIG1lc3NhZ2Ug
YWJvdXQgdGhlIGN1cnJlbnQgaGlzdG9yeSBiZWluZyBlbT0KcHR5IHNob3VsZCBOT1QgYmUgZGlz
cGxheWVkIiApOworICAgIC8vICAgIHRoaXMudGVzdC5hc3NlcnRFeGlzdHMoIGVtcHR5TXNnU2Vs
ZWN0b3IsIGVtcHR5TXNnU2VsZWN0b3IgKyAnIGU9Cnhpc3RzJyApOworICAgIC8vICAgIHRoaXMu
dGVzdC5hc3NlcnROb3RWaXNpYmxlKCBlbXB0eU1zZ1NlbGVjdG9yLCAnRW1wdHkgaGlzdG9yeSBt
ZXM9CnNhZ2UgaXMgTk9UIHZpc2libGUnICk7CisgICAgLy99KTsKKyAgICAvLworICAgIC8vLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS09Ci0tIHRhZ3MKKyAgICAvLy8vIGtlZXBpbmcgdGhpcyBsaWdodCBoZXJlIC0gYmV0
dGVyIGZvciBpdHMgb3duIHRlc3QgZmlsZQorICAgIC8vLy9UT0RPOiBjaGVjayB0b29sdGlwcwor
ICAgIC8vc3BhY2VnaG9zdC50aGVuKCBmdW5jdGlvbiBvcGVuVGFncygpeworICAgIC8vICAgIHRo
aXMudGVzdC5jb21tZW50KCAndGFnIGFyZWEgc2hvdWxkIG9wZW4gd2hlbiB0aGUgaGlzdG9yeSBw
YW5lbCA9CnRhZyBpY29uIGlzIGNsaWNrZWQnICk7CisgICAgLy8KKyAgICAvLyAgICB0aGlzLmNs
aWNrKCB0YWdJY29uU2VsZWN0b3IgKTsKKyAgICAvLyAgICB0aGlzLndhaXQoIDEwMDAsIGZ1bmN0
aW9uKCl7CisgICAgLy8gICAgICAgIHRoaXMudGVzdC5hc3NlcnRWaXNpYmxlKCB0YWdBcmVhU2Vs
ZWN0b3IsICdUYWcgYXJlYSBpcyBub3cgZD0KaXNwbGF5ZWQnICk7CisgICAgLy8gICAgfSk7Cisg
ICAgLy99KTsKKyAgICAvL3NwYWNlZ2hvc3QudGhlbiggZnVuY3Rpb24gY2xvc2VBbm5vdGF0aW9u
KCl7CisgICAgLy8gICAgdGhpcy50ZXN0LmNvbW1lbnQoICdhbm5vdGF0aW9uIGFyZWEgc2hvdWxk
IGNsb3NlIHdoZW4gdGhlIGhpc3Rvcj0KeSBwYW5lbCB0YWcgaWNvbiBpcyBjbGlja2VkIGFnYWlu
JyApOworICAgIC8vCisgICAgLy8gICAgdGhpcy5jbGljayggdGFnSWNvblNlbGVjdG9yICk7Cisg
ICAgLy8gICAgdGhpcy53YWl0KCAxMDAwLCBmdW5jdGlvbigpeworICAgIC8vICAgICAgICB0aGlz
LnRlc3QuYXNzZXJ0Tm90VmlzaWJsZSggdGFnQXJlYVNlbGVjdG9yLCAnVGFnIGFyZWEgaXMgbm89
CncgaGlkZGVuJyApOworICAgIC8vICAgIH0pOworICAgIC8vfSk7CisgICAgLy8KKyAgICAvLy8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tPQotLSBhbm5vdGF0aW9uCisgICAgLy8vLyBrZWVwaW5nIHRoaXMgbGlnaHQgaGVy
ZSAtIGJldHRlciBmb3IgaXRzIG93biB0ZXN0IGZpbGUKKyAgICAvLy8vVE9ETzogY2hlY2sgdG9v
bHRpcHMKKyAgICAvL3NwYWNlZ2hvc3QudGhlbiggZnVuY3Rpb24gb3BlbkFubm90YXRpb24oKXsK
KyAgICAvLyAgICB0aGlzLnRlc3QuY29tbWVudCggJ2Fubm90YXRpb24gYXJlYSBzaG91bGQgb3Bl
biB3aGVuIHRoZSBoaXN0b3J5PQogcGFuZWwgYW5ub3RhdGlvbiBpY29uIGlzIGNsaWNrZWQnICk7
CisgICAgLy8KKyAgICAvLyAgICB0aGlzLmNsaWNrKCBhbm5vSWNvblNlbGVjdG9yICk7CisgICAg
Ly8gICAgdGhpcy53YWl0KCAxMDAwLCBmdW5jdGlvbigpeworICAgIC8vICAgICAgICB0aGlzLnRl
c3QuYXNzZXJ0VmlzaWJsZSggYW5ub0FyZWFTZWxlY3RvciwgJ0Fubm90YXRpb24gYXJlYSA9Cmlz
IG5vdyBkaXNwbGF5ZWQnICk7CisgICAgLy8gICAgfSk7CisgICAgLy99KTsKKyAgICAvL3NwYWNl
Z2hvc3QudGhlbiggZnVuY3Rpb24gY2xvc2VBbm5vdGF0aW9uKCl7CisgICAgLy8gICAgdGhpcy50
ZXN0LmNvbW1lbnQoICdhbm5vdGF0aW9uIGFyZWEgc2hvdWxkIGNsb3NlIHdoZW4gdGhlIGhpc3Rv
cj0KeSBwYW5lbCB0YWcgaWNvbiBpcyBjbGlja2VkIGFnYWluJyApOworICAgIC8vCisgICAgLy8g
ICAgdGhpcy5jbGljayggYW5ub0ljb25TZWxlY3RvciApOworICAgIC8vICAgIHRoaXMud2FpdCgg
MTAwMCwgZnVuY3Rpb24oKXsKKyAgICAvLyAgICAgICAgdGhpcy50ZXN0LmFzc2VydE5vdFZpc2li
bGUoIGFubm9BcmVhU2VsZWN0b3IsICdBbm5vdGF0aW9uIGFyPQplYSBpcyBub3cgaGlkZGVuJyAp
OworICAgIC8vICAgIH0pOworICAgIC8vfSk7CisgICAgLy8KKyAgICAvLy8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPQot
LSByZWZyZXNoIGJ1dHRvbgorICAgIC8vc3BhY2VnaG9zdC50aGVuKCBmdW5jdGlvbiByZWZyZXNo
QnV0dG9uKCl7CisgICAgLy8gICAgdGhpcy50ZXN0LmNvbW1lbnQoICdIaXN0b3J5IHBhbmVsIHNo
b3VsZCByZWZyZXNoIHdoZW4gdGhlIGhpc3Rvcj0KeSByZWZyZXNoIGljb24gaXMgY2xpY2tlZCcg
KTsKKyAgICAvLworICAgIC8vICAgIHRoaXMudGVzdC5hc3NlcnRFeGlzdHMoICByZWZyZXNoQnV0
dG9uU2VsZWN0b3IsICJGb3VuZCByZWZyZXNoIGI9CnV0dG9uIiApOworICAgIC8vICAgIHRoaXMu
dGVzdC5hc3NlcnRWaXNpYmxlKCByZWZyZXNoQnV0dG9uU2VsZWN0b3IsICJSZWZyZXNoIGJ1dHRv
biA9CmlzIHZpc2libGUiICk7CisgICAgLy8gICAgdGhpcy50ZXN0LmFzc2VydFZpc2libGUoIHJl
ZnJlc2hCdXR0b25TZWxlY3RvciArICcgJyArIHJlZnJlc2hCdT0KdHRvbkljb25TZWxlY3Rvciwg
IlJlZnJlc2ggaWNvbiBpcyB2aXNpYmxlIiApOworICAgIC8vCisgICAgLy8gICAgLy90aGlzLmFz
c2VydE5hdmlnYXRpb25SZXF1ZXN0ZWQoIHJlZnJlc2hCdXR0b25IcmVmLCAiSGlzdG9yeSByZT0K
ZnJlc2hlZCB3aGVuIGNsaWNraW5nIHJlZnJlc2ggaWNvbiIsIGZ1bmN0aW9uKCl7CisgICAgLy8g
ICAgLy8gICAgdGhpcy5jbGljayggcmVmcmVzaEJ1dHRvblNlbGVjdG9yICk7CisgICAgLy8gICAg
Ly99KTsKKyAgICAvL30pOworICAgIC8vCisgICAgLy8vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0gaGRhcyBjYW4g
YmUgZXhwYW5kZWQgYnkgY2xpY2tpbmcgb24gdGhlIGhkYQorICAgIC8vLy8gYnJva2VuIGluIHdl
YmtpdCB3LyBqcSAxLjcKKyAgICAvL3NwYWNlZ2hvc3QuaGlzdG9yeXBhbmVsLndhaXRGb3JIZGFz
KCBmdW5jdGlvbigpeworICAgIC8vICAgIHRoaXMudGVzdC5jb21tZW50KCAnSERBcyBjYW4gYmUg
ZXhwYW5kZWQgYnkgY2xpY2tpbmcgb24gdGhlIG5hbWU9CicgKTsKKyAgICAvLyAgICB2YXIgdXBs
b2FkZWRTZWxlY3RvciA9M0QgJyNkYXRhc2V0LScgKyB1cGxvYWRJZDsKKyAgICAvLworICAgIC8v
ICAgIHRoaXMuY2xpY2soIHVwbG9hZGVkU2VsZWN0b3IgKyAnICcgKyB0aGlzLmhpc3RvcnlwYW5l
bC5kYXRhLnNlbGU9CmN0b3JzLmhkYS50aXRsZSApOworICAgIC8vICAgIHRoaXMud2FpdCggMTAw
MCwgZnVuY3Rpb24oKXsKKyAgICAvLyAgICAgICAgdGhpcy50ZXN0LmFzc2VydFZpc2libGUoIHVw
bG9hZGVkU2VsZWN0b3IgKyAnICcgKyB0aGlzLmhpc3RvPQpyeXBhbmVsLmRhdGEuc2VsZWN0b3Jz
LmhkYS5ib2R5LAorICAgIC8vICAgICAgICAgICAgIkJvZHkgZm9yIHVwbG9hZGVkIGZpbGUgaXMg
dmlzaWJsZSIgKTsKKyAgICAvLyAgICB9KTsKKyAgICAvL30pOworICAgIC8vCisgICAgLy8vLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLT0KLS0gZXhwYW5kZWQgaGRhcyBzdGlsbCBleHBhbmRlZCBhZnRlciByZWZyZXNoCisg
ICAgLy9zcGFjZWdob3N0LnRoZW4oIGZ1bmN0aW9uKCl7CisgICAgLy8gICAgdGhpcy50ZXN0LmNv
bW1lbnQoICdFeHBhbmRlZCBoZGFzIGFyZSBzdGlsbCBleHBhbmRlZCBhZnRlciBhIHJlZj0KcmVz
aCcgKTsKKyAgICAvLyAgICB2YXIgdXBsb2FkZWRTZWxlY3RvciA9M0QgJyNkYXRhc2V0LScgKyB1
cGxvYWRJZDsKKyAgICAvLworICAgIC8vICAgIHRoaXMuY2xpY2soIHJlZnJlc2hCdXR0b25TZWxl
Y3RvciApOworICAgIC8vICAgIHRoaXMuaGlzdG9yeXBhbmVsLndhaXRGb3JIZGFzKCBmdW5jdGlv
bigpeworICAgIC8vICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0VmlzaWJsZSggdXBsb2FkZWRTZWxl
Y3RvciArICcgJyArIHRoaXMuaGlzdG89CnJ5cGFuZWwuZGF0YS5zZWxlY3RvcnMuaGRhLmJvZHks
CisgICAgLy8gICAgICAgICAgICAiQm9keSBmb3IgdXBsb2FkZWQgZmlsZSBpcyB2aXNpYmxlIiAp
OworICAgIC8vICAgIH0pOworICAgIC8vICAgIC8vIHRoaXMgd2lsbCBicmVhazogd2Via2l0ICsg
anEgMS43CisgICAgLy99KTsKKyAgICAvLworICAgIC8vLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0tIGV4cGFuZGVk
IGhkYXMgY29sbGFwc2UgYnkgY2xpY2tpbmcgbmFtZSBhZ2FpbgorICAgIC8vc3BhY2VnaG9zdC50
aGVuKCBmdW5jdGlvbigpeworICAgIC8vICAgIHRoaXMudGVzdC5jb21tZW50KCAnRXhwYW5kZWQg
aGRhcyBjb2xsYXBzZSBieSBjbGlja2luZyBuYW1lIGFnYWk9Cm4nICk7CisgICAgLy8gICAgdmFy
IHVwbG9hZGVkU2VsZWN0b3IgPTNEICcjZGF0YXNldC0nICsgdXBsb2FkSWQ7CisgICAgLy8KKyAg
ICAvLyAgICB0aGlzLmNsaWNrKCB1cGxvYWRlZFNlbGVjdG9yICsgJyAnICsgdGhpcy5oaXN0b3J5
cGFuZWwuZGF0YS5zZWxlPQpjdG9ycy5oZGEudGl0bGUgKTsKKyAgICAvLyAgICB0aGlzLndhaXQo
IDUwMCwgZnVuY3Rpb24oKXsKKyAgICAvLyAgICAgICAgdGhpcy50ZXN0LmFzc2VydE5vdFZpc2li
bGUoIHVwbG9hZGVkU2VsZWN0b3IgKyAnICcgKyB0aGlzLmhpPQpzdG9yeXBhbmVsLmRhdGEuc2Vs
ZWN0b3JzLmhkYS5ib2R5LAorICAgIC8vICAgICAgICAgICAgIkJvZHkgZm9yIHVwbG9hZGVkIGZp
bGUgaXMgbm90IHZpc2libGUiICk7CisgICAgLy8gICAgfSk7CisgICAgLy99KTsKKyAgICAvLwor
ICAgIC8vLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS09Ci0tIGNvbGxhcHNlZCBoZGFzIHN0aWxsIGNvbGxhcHNlZCBhZnRl
ciByZWZyZXNoCisgICAgLy9zcGFjZWdob3N0LnRoZW4oIGZ1bmN0aW9uKCl7CisgICAgLy8gICAg
dGhpcy50ZXN0LmNvbW1lbnQoICdjb2xsYXBzZWQgaGRhcyBzdGlsbCBjb2xsYXBzZWQgYWZ0ZXIg
YSByZWZyZT0Kc2gnICk7CisgICAgLy8gICAgdmFyIHVwbG9hZGVkU2VsZWN0b3IgPTNEICcjZGF0
YXNldC0nICsgdXBsb2FkSWQ7CisgICAgLy8KKyAgICAvLyAgICB0aGlzLmNsaWNrKCByZWZyZXNo
QnV0dG9uU2VsZWN0b3IgKTsKKyAgICAvLyAgICB0aGlzLmhpc3RvcnlwYW5lbC53YWl0Rm9ySGRh
cyggZnVuY3Rpb24oKXsKKyAgICAvLyAgICAgICAgdGhpcy50ZXN0LmFzc2VydE5vdFZpc2libGUo
IHVwbG9hZGVkU2VsZWN0b3IgKyAnICcgKyB0aGlzLmhpPQpzdG9yeXBhbmVsLmRhdGEuc2VsZWN0
b3JzLmhkYS5ib2R5LAorICAgIC8vICAgICAgICAgICAgIkJvZHkgZm9yIHVwbG9hZGVkIGZpbGUg
aXMgbm90IHZpc2libGUiICk7CisgICAgLy8gICAgfSk7CisgICAgLy99KTsKICAgICAvKgogICAg
ICovCiAgICAgLy8gPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRAoKZGlmZiAtciAz
MTM1N2VkZjI2MGVhNmIyNTlkYzY4MjMwZjMwODNiM2YwZmFmY2EwIC1yIDE0Nzk2YWM4NjdlYjBj
N2RjNTE3ZWVkPQphMWVjODI1MGM5Yjg2OGJiNyB0ZXN0L2Nhc3BlcmpzL3NwYWNlZ2hvc3QuanMK
LS0tIGEvdGVzdC9jYXNwZXJqcy9zcGFjZWdob3N0LmpzCisrKyBiL3Rlc3QvY2FzcGVyanMvc3Bh
Y2VnaG9zdC5qcwpAQCAtOTExLDYgKzkxMSw3IEBACiAgICAgaWYoICF1dGlscy5pc09iamVjdCgg
b2JqZWN0ICkgKXsgcmV0dXJuIGZhbHNlOyB9CiAgICAgZm9yKCB2YXIgaT0zRDA7IGk8a2V5c0Fy
cmF5Lmxlbmd0aDsgaSArPTNEIDEgKXsKICAgICAgICAgaWYoICFvYmplY3QuaGFzT3duUHJvcGVy
dHkoIGtleXNBcnJheVtpXSApICl7CisgICAgICAgICAgICB0aGlzLmRlYnVnKCAnbWlzc2luZyBr
ZXk6ICcgKyBrZXlzQXJyYXlbaV0gKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogICAgIH0KCmRpZmYgLXIgMzEzNTdlZGYyNjBlYTZiMjU5ZGM2ODIzMGYzMDgzYjNmMGZh
ZmNhMCAtciAxNDc5NmFjODY3ZWIwYzdkYzUxN2VlZD0KYTFlYzgyNTBjOWI4NjhiYjcgdGVzdC91
bml0L21hbmFnZXJzL3Rlc3RfSGlzdG9yeU1hbmFnZXIucHkKLS0tIGEvdGVzdC91bml0L21hbmFn
ZXJzL3Rlc3RfSGlzdG9yeU1hbmFnZXIucHkKKysrIGIvdGVzdC91bml0L21hbmFnZXJzL3Rlc3Rf
SGlzdG9yeU1hbmFnZXIucHkKQEAgLTQzLDYgKzQzLDggQEAKICAgICAgICAgc2VsZi5sb2coICJz
aG91bGQgYmUgYWJsZSB0byBjcmVhdGUgYSBuZXcgaGlzdG9yeSIgKQogICAgICAgICBoaXN0b3J5
MSA9M0Qgc2VsZi5oaXN0b3J5X21nci5jcmVhdGUoIHNlbGYudHJhbnMsIG5hbWU9M0QnaGlzdG9y
eTE9CicsIHVzZXI9M0R1c2VyMiApCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSggaGlz
dG9yeTEsIG1vZGVsLkhpc3RvcnkgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCBoaXN0b3J5
MS5uYW1lLCAnaGlzdG9yeTEnICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCggaGlzdG9yeTEu
dXNlciwgdXNlcjIgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCBoaXN0b3J5MSwgc2VsZi50
cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCBtb2RlbC5IaXM9CnRvcnkgKS5nZXQoIGhpc3RvcnkxLmlk
ICkgKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCBoaXN0b3J5MSwKICAgICAgICAgICAgIHNl
bGYudHJhbnMuc2Ffc2Vzc2lvbi5xdWVyeSggbW9kZWwuSGlzdG9yeSApLmZpbHRlciggbW9kZWwu
SGlzPQp0b3J5Lm5hbWUgPTNEPTNEICdoaXN0b3J5MScgKS5vbmUoKSApCgoKaHR0cHM6Ly9iaXRi
dWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzJhNjYzNTEwMzUzYi8KQ2hh
bmdlc2V0OiAgIDJhNjYzNTEwMzUzYgpVc2VyOiAgICAgICAgY2FybGZlYmVyaGFyZApEYXRlOiAg
ICAgICAgMjAxNS0wMS0xNCAyMjozMTowNSswMDowMApTdW1tYXJ5OiAgICAgRml4IHRvIDE0Nzk2
YWM6IGZvciBoaXN0b3J5LXBhbmVsLXRlc3RzLmpzCkFmZmVjdGVkICM6ICAxIGZpbGUKCmRpZmYg
LXIgMTQ3OTZhYzg2N2ViMGM3ZGM1MTdlZWRhMWVjODI1MGM5Yjg2OGJiNyAtciAyYTY2MzUxMDM1
M2JhODI2OGRlZmYwNj0KM2JhNTBkMjdkZTE4MGI4ODkgdGVzdC9jYXNwZXJqcy9oaXN0b3J5LXBh
bmVsLXRlc3RzLmpzCi0tLSBhL3Rlc3QvY2FzcGVyanMvaGlzdG9yeS1wYW5lbC10ZXN0cy5qcwor
KysgYi90ZXN0L2Nhc3BlcmpzL2hpc3RvcnktcGFuZWwtdGVzdHMuanMKQEAgLTk5LDcgKzk5LDYg
QEAKICAgICAgICAgdGhpcy5wYWdlLnNlbmRFdmVudCggJ2tleXByZXNzJywgdGhpcy5wYWdlLmV2
ZW50LmtleS5FbnRlciApOwogICAgICAgICAvLyB3YWl0IGZvciBzZW5kIGFuZCByZS1yZW5kZXIg
bmFtZQogICAgICAgICB0aGlzLndhaXQoIDEwMDAsIGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICB0
aGlzLmNhcHR1cmUoICduYW1lLnBuZycgKTsKICAgICAgICAgICAgIHRoaXMudGVzdC5hc3NlcnRT
ZWxlY3Rvckhhc1RleHQoIG5hbWVTZWxlY3RvciwgbmV3SGlzdG9yeU5hbWUsPQogJ0hpc3Rvcnkg
bmFtZSBpcyAnICsgbmV3SGlzdG9yeU5hbWUgKTsKICAgICAgICAgICAgIHRoaXMudGVzdC5hc3Nl
cnREb2VzbnRFeGlzdCggZWRpdGFibGVUZXh0SW5wdXQsICJJbnB1dCBkaXNhcHBlPQphcnMgYWZ0
ZXIgcHJlc3NpbmcgZW50ZXIiICk7CiAgICAgICAgIH0pOwpAQCAtMTEzLDE1OCArMTEyLDE1NyBA
QAo9MjAKICAgICAgICAgdGhpcy5wYWdlLnNlbmRFdmVudCggJ21vdXNlZG93bicsIC0xLCAtMSAp
OwogICAgICAgICB0aGlzLndhaXQoIDEwMDAsIGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICB0aGlz
LmRlYnVnKCAnd2FhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFh
YT0KYXQnICk7CiAgICAgICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0U2VsZWN0b3JIYXNUZXh0KCBu
YW1lU2VsZWN0b3IsIG5ld0hpc3RvcnlOYW1lLD0KICdIaXN0b3J5IG5hbWUgaXMgU1RJTEwgJyAr
IG5ld0hpc3RvcnlOYW1lICk7CiAgICAgICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0RG9lc250RXhp
c3QoIGVkaXRhYmxlVGV4dElucHV0LCAiSW5wdXQgZGlzYXBwZT0KYXJzIGFmdGVyIGNsaWNraW5n
IGF3YXkiICk7CiAgICAgICAgIH0pOwogICAgIH0pOwo9MjAKLSAgICAvL3NwYWNlZ2hvc3QudGhl
biggZnVuY3Rpb24oKXsKLSAgICAvLyAgICB0aGlzLnRlc3QuY29tbWVudCggJ25hbWUgc2hvdWxk
IHJldmVydCBpZiB1c2VyIGhpdHMgRVNDIHdoaWxlIGVkPQppdGluZycgKTsKLSAgICAvLwotICAg
IC8vICAgIHRoaXMuY2xpY2soIG5hbWVTZWxlY3RvciApOwotICAgIC8vICAgIHRoaXMucGFnZS5z
ZW5kRXZlbnQoICdrZXlwcmVzcycsICJBcnNlbmljIEJhY3RlcmlhIiApOwotICAgIC8vCi0gICAg
Ly8gICAgdGhpcy5wYWdlLnNlbmRFdmVudCggJ2tleXByZXNzJywgdGhpcy5wYWdlLmV2ZW50Lmtl
eS5Fc2NhcGUgKTsKLSAgICAvLyAgICB0aGlzLndhaXQoIDEwMDAsIGZ1bmN0aW9uKCl7Ci0gICAg
Ly8gICAgICAgIHRoaXMudGVzdC5hc3NlcnRTZWxlY3Rvckhhc1RleHQoIG5hbWVTZWxlY3Rvciwg
bmV3SGlzdG9yeU5hbT0KZSwgJ0hpc3RvcnkgbmFtZSBpcyBTVElMTCAnICsgbmV3SGlzdG9yeU5h
bWUgKTsKLSAgICAvLyAgICAgICAgdGhpcy50ZXN0LmFzc2VydERvZXNudEV4aXN0KCBlZGl0YWJs
ZVRleHRJbnB1dCwgIklucHV0IGRpc2FwPQpwZWFycyBhZnRlciBoaXR0aW5nIEVTQyIgKTsKLSAg
ICAvLyAgICB9KTsKLSAgICAvL30pOwotICAgIC8vCi0gICAgLy8vLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0gY2hl
Y2sgc3RydWN0dXJlIG9mIE5PTiBlbXB0eSBoaXN0b3J5Ci0gICAgLy8vLyB1cGxvYWQgZmlsZTog
MS50eHQKLSAgICAvL3NwYWNlZ2hvc3QuYXBpLnRvb2xzLnRoZW5VcGxvYWRUb0N1cnJlbnQoeyBm
aWxlcGF0aDogZmlsZXBhdGhUb1VwbG9hPQpkIH0sIGZ1bmN0aW9uIHVwbG9hZENhbGxiYWNrKCBp
ZCwganNvbiApewotICAgIC8vICAgIHVwbG9hZElkID0zRCBpZDsKLSAgICAvL30pOwotICAgIC8v
Ci0gICAgLy9zcGFjZWdob3N0Lm9wZW5Ib21lUGFnZSgpLnRoZW4oIGZ1bmN0aW9uIGNoZWNrUGFu
ZWxTdHJ1Y3R1cmUoKXsKLSAgICAvLyAgICB0aGlzLnRlc3QuY29tbWVudCggJ2NoZWNraW5nIHN0
cnVjdHVyZSBvZiBub24tZW1wdHkgcGFuZWwnICk7Ci0gICAgLy8KLSAgICAvLyAgICB0aGlzLnRl
c3QuY29tbWVudCggImhpc3RvcnkgbmFtZSBzaG91bGQgZXhpc3QsIGJlIHZpc2libGUsIGFuZCBo
PQphdmUgdGV4dCAiICsgdW5uYW1lZE5hbWUgKTsKLSAgICAvLyAgICB0aGlzLnRlc3QuYXNzZXJ0
RXhpc3RzKCBuYW1lU2VsZWN0b3IsIG5hbWVTZWxlY3RvciArICcgZXhpc3RzJyApOwotICAgIC8v
ICAgIHRoaXMudGVzdC5hc3NlcnRWaXNpYmxlKCBuYW1lU2VsZWN0b3IsICdIaXN0b3J5IG5hbWUg
aXMgdmlzaWJsZSc9CiApOwotICAgIC8vICAgIHRoaXMudGVzdC5hc3NlcnRTZWxlY3Rvckhhc1Rl
eHQoIG5hbWVTZWxlY3RvciwgbmV3SGlzdG9yeU5hbWUsICc9Ckhpc3RvcnkgbmFtZSBpcyAnICsg
bmV3SGlzdG9yeU5hbWUgKTsKLSAgICAvLwotICAgIC8vICAgIHZhciBvbmV0eHRGaWxlc2l6ZSA9
M0QgcmVxdWlyZSggJ2ZzJyApLnNpemUoIGZpbGVwYXRoVG9VcGxvYWQgKSwKLSAgICAvLyAgICAg
ICAgZXhwZWN0ZWRTaXplID0zRCBvbmV0eHRGaWxlc2l6ZSArICcgYnl0ZXMnOwotICAgIC8vICAg
IHRoaXMudGVzdC5jb21tZW50KCAiaGlzdG9yeSBzaG91bGQgZGlzcGxheSBzaXplIGFuZCBzaXpl
IHNob3VsZCA9CmJlICIgKyBvbmV0eHRGaWxlc2l6ZSArICIgYnl0ZXMiICk7Ci0gICAgLy8gICAg
dGhpcy50ZXN0LmFzc2VydEV4aXN0cyggc2l6ZVNlbGVjdG9yLCAnRm91bmQgJyArIHNpemVTZWxl
Y3RvciApOwotICAgIC8vICAgIHRoaXMudGVzdC5hc3NlcnRWaXNpYmxlKCBzaXplU2VsZWN0b3Is
ICdIaXN0b3J5IHNpemUgaXMgdmlzaWJsZSc9CiApOwotICAgIC8vICAgIHRoaXMudGVzdC5hc3Nl
cnRTZWxlY3Rvckhhc1RleHQoIHNpemVTZWxlY3RvciwgZXhwZWN0ZWRTaXplLAotICAgIC8vICAg
ICAgICAnSGlzdG9yeSBzaXplIGhhcyAiJyArIGV4cGVjdGVkU2l6ZSArICciOiAnICsgdGhpcy5m
ZXRjaFRleHQ9Ciggc2l6ZVNlbGVjdG9yICkudHJpbSgpICk7Ci0gICAgLy8KLSAgICAvLyAgICB0
aGlzLnRlc3QuY29tbWVudCggInRhZ3MgYW5kIGFubm90YXRpb24gaWNvbnMgc2hvdWxkIGJlIGF2
YWlsYWJsPQplIiApOwotICAgIC8vICAgIHRoaXMudGVzdC5hc3NlcnRFeGlzdHMoIHRhZ0ljb25T
ZWxlY3RvciwgICdUYWcgaWNvbiBidXR0b24gZm91bmQ9CicgKTsKLSAgICAvLyAgICB0aGlzLnRl
c3QuYXNzZXJ0RXhpc3RzKCBhbm5vSWNvblNlbGVjdG9yLCAnQW5ub3RhdGlvbiBpY29uIGJ1dHRv
PQpuIGZvdW5kJyApOwotICAgIC8vCi0gICAgLy8gICAgdGhpcy50ZXN0LmNvbW1lbnQoICJBIG1l
c3NhZ2UgYWJvdXQgdGhlIGN1cnJlbnQgaGlzdG9yeSBiZWluZyBlbT0KcHR5IHNob3VsZCBOT1Qg
YmUgZGlzcGxheWVkIiApOwotICAgIC8vICAgIHRoaXMudGVzdC5hc3NlcnRFeGlzdHMoIGVtcHR5
TXNnU2VsZWN0b3IsIGVtcHR5TXNnU2VsZWN0b3IgKyAnIGU9Cnhpc3RzJyApOwotICAgIC8vICAg
IHRoaXMudGVzdC5hc3NlcnROb3RWaXNpYmxlKCBlbXB0eU1zZ1NlbGVjdG9yLCAnRW1wdHkgaGlz
dG9yeSBtZXM9CnNhZ2UgaXMgTk9UIHZpc2libGUnICk7Ci0gICAgLy99KTsKLSAgICAvLwotICAg
IC8vLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS09Ci0tIHRhZ3MKLSAgICAvLy8vIGtlZXBpbmcgdGhpcyBsaWdodCBoZXJl
IC0gYmV0dGVyIGZvciBpdHMgb3duIHRlc3QgZmlsZQotICAgIC8vLy9UT0RPOiBjaGVjayB0b29s
dGlwcwotICAgIC8vc3BhY2VnaG9zdC50aGVuKCBmdW5jdGlvbiBvcGVuVGFncygpewotICAgIC8v
ICAgIHRoaXMudGVzdC5jb21tZW50KCAndGFnIGFyZWEgc2hvdWxkIG9wZW4gd2hlbiB0aGUgaGlz
dG9yeSBwYW5lbCA9CnRhZyBpY29uIGlzIGNsaWNrZWQnICk7Ci0gICAgLy8KLSAgICAvLyAgICB0
aGlzLmNsaWNrKCB0YWdJY29uU2VsZWN0b3IgKTsKLSAgICAvLyAgICB0aGlzLndhaXQoIDEwMDAs
IGZ1bmN0aW9uKCl7Ci0gICAgLy8gICAgICAgIHRoaXMudGVzdC5hc3NlcnRWaXNpYmxlKCB0YWdB
cmVhU2VsZWN0b3IsICdUYWcgYXJlYSBpcyBub3cgZD0KaXNwbGF5ZWQnICk7Ci0gICAgLy8gICAg
fSk7Ci0gICAgLy99KTsKLSAgICAvL3NwYWNlZ2hvc3QudGhlbiggZnVuY3Rpb24gY2xvc2VBbm5v
dGF0aW9uKCl7Ci0gICAgLy8gICAgdGhpcy50ZXN0LmNvbW1lbnQoICdhbm5vdGF0aW9uIGFyZWEg
c2hvdWxkIGNsb3NlIHdoZW4gdGhlIGhpc3Rvcj0KeSBwYW5lbCB0YWcgaWNvbiBpcyBjbGlja2Vk
IGFnYWluJyApOwotICAgIC8vCi0gICAgLy8gICAgdGhpcy5jbGljayggdGFnSWNvblNlbGVjdG9y
ICk7Ci0gICAgLy8gICAgdGhpcy53YWl0KCAxMDAwLCBmdW5jdGlvbigpewotICAgIC8vICAgICAg
ICB0aGlzLnRlc3QuYXNzZXJ0Tm90VmlzaWJsZSggdGFnQXJlYVNlbGVjdG9yLCAnVGFnIGFyZWEg
aXMgbm89CncgaGlkZGVuJyApOwotICAgIC8vICAgIH0pOwotICAgIC8vfSk7Ci0gICAgLy8KLSAg
ICAvLy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tPQotLSBhbm5vdGF0aW9uCi0gICAgLy8vLyBrZWVwaW5nIHRoaXMgbGln
aHQgaGVyZSAtIGJldHRlciBmb3IgaXRzIG93biB0ZXN0IGZpbGUKLSAgICAvLy8vVE9ETzogY2hl
Y2sgdG9vbHRpcHMKLSAgICAvL3NwYWNlZ2hvc3QudGhlbiggZnVuY3Rpb24gb3BlbkFubm90YXRp
b24oKXsKLSAgICAvLyAgICB0aGlzLnRlc3QuY29tbWVudCggJ2Fubm90YXRpb24gYXJlYSBzaG91
bGQgb3BlbiB3aGVuIHRoZSBoaXN0b3J5PQogcGFuZWwgYW5ub3RhdGlvbiBpY29uIGlzIGNsaWNr
ZWQnICk7Ci0gICAgLy8KLSAgICAvLyAgICB0aGlzLmNsaWNrKCBhbm5vSWNvblNlbGVjdG9yICk7
Ci0gICAgLy8gICAgdGhpcy53YWl0KCAxMDAwLCBmdW5jdGlvbigpewotICAgIC8vICAgICAgICB0
aGlzLnRlc3QuYXNzZXJ0VmlzaWJsZSggYW5ub0FyZWFTZWxlY3RvciwgJ0Fubm90YXRpb24gYXJl
YSA9CmlzIG5vdyBkaXNwbGF5ZWQnICk7Ci0gICAgLy8gICAgfSk7Ci0gICAgLy99KTsKLSAgICAv
L3NwYWNlZ2hvc3QudGhlbiggZnVuY3Rpb24gY2xvc2VBbm5vdGF0aW9uKCl7Ci0gICAgLy8gICAg
dGhpcy50ZXN0LmNvbW1lbnQoICdhbm5vdGF0aW9uIGFyZWEgc2hvdWxkIGNsb3NlIHdoZW4gdGhl
IGhpc3Rvcj0KeSBwYW5lbCB0YWcgaWNvbiBpcyBjbGlja2VkIGFnYWluJyApOwotICAgIC8vCi0g
ICAgLy8gICAgdGhpcy5jbGljayggYW5ub0ljb25TZWxlY3RvciApOwotICAgIC8vICAgIHRoaXMu
d2FpdCggMTAwMCwgZnVuY3Rpb24oKXsKLSAgICAvLyAgICAgICAgdGhpcy50ZXN0LmFzc2VydE5v
dFZpc2libGUoIGFubm9BcmVhU2VsZWN0b3IsICdBbm5vdGF0aW9uIGFyPQplYSBpcyBub3cgaGlk
ZGVuJyApOwotICAgIC8vICAgIH0pOwotICAgIC8vfSk7Ci0gICAgLy8KLSAgICAvLy8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tPQotLSByZWZyZXNoIGJ1dHRvbgotICAgIC8vc3BhY2VnaG9zdC50aGVuKCBmdW5jdGlvbiBy
ZWZyZXNoQnV0dG9uKCl7Ci0gICAgLy8gICAgdGhpcy50ZXN0LmNvbW1lbnQoICdIaXN0b3J5IHBh
bmVsIHNob3VsZCByZWZyZXNoIHdoZW4gdGhlIGhpc3Rvcj0KeSByZWZyZXNoIGljb24gaXMgY2xp
Y2tlZCcgKTsKLSAgICAvLwotICAgIC8vICAgIHRoaXMudGVzdC5hc3NlcnRFeGlzdHMoICByZWZy
ZXNoQnV0dG9uU2VsZWN0b3IsICJGb3VuZCByZWZyZXNoIGI9CnV0dG9uIiApOwotICAgIC8vICAg
IHRoaXMudGVzdC5hc3NlcnRWaXNpYmxlKCByZWZyZXNoQnV0dG9uU2VsZWN0b3IsICJSZWZyZXNo
IGJ1dHRvbiA9CmlzIHZpc2libGUiICk7Ci0gICAgLy8gICAgdGhpcy50ZXN0LmFzc2VydFZpc2li
bGUoIHJlZnJlc2hCdXR0b25TZWxlY3RvciArICcgJyArIHJlZnJlc2hCdT0KdHRvbkljb25TZWxl
Y3RvciwgIlJlZnJlc2ggaWNvbiBpcyB2aXNpYmxlIiApOwotICAgIC8vCi0gICAgLy8gICAgLy90
aGlzLmFzc2VydE5hdmlnYXRpb25SZXF1ZXN0ZWQoIHJlZnJlc2hCdXR0b25IcmVmLCAiSGlzdG9y
eSByZT0KZnJlc2hlZCB3aGVuIGNsaWNraW5nIHJlZnJlc2ggaWNvbiIsIGZ1bmN0aW9uKCl7Ci0g
ICAgLy8gICAgLy8gICAgdGhpcy5jbGljayggcmVmcmVzaEJ1dHRvblNlbGVjdG9yICk7Ci0gICAg
Ly8gICAgLy99KTsKLSAgICAvL30pOwotICAgIC8vCi0gICAgLy8vLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0gaGRh
cyBjYW4gYmUgZXhwYW5kZWQgYnkgY2xpY2tpbmcgb24gdGhlIGhkYQotICAgIC8vLy8gYnJva2Vu
IGluIHdlYmtpdCB3LyBqcSAxLjcKLSAgICAvL3NwYWNlZ2hvc3QuaGlzdG9yeXBhbmVsLndhaXRG
b3JIZGFzKCBmdW5jdGlvbigpewotICAgIC8vICAgIHRoaXMudGVzdC5jb21tZW50KCAnSERBcyBj
YW4gYmUgZXhwYW5kZWQgYnkgY2xpY2tpbmcgb24gdGhlIG5hbWU9CicgKTsKLSAgICAvLyAgICB2
YXIgdXBsb2FkZWRTZWxlY3RvciA9M0QgJyNkYXRhc2V0LScgKyB1cGxvYWRJZDsKLSAgICAvLwot
ICAgIC8vICAgIHRoaXMuY2xpY2soIHVwbG9hZGVkU2VsZWN0b3IgKyAnICcgKyB0aGlzLmhpc3Rv
cnlwYW5lbC5kYXRhLnNlbGU9CmN0b3JzLmhkYS50aXRsZSApOwotICAgIC8vICAgIHRoaXMud2Fp
dCggMTAwMCwgZnVuY3Rpb24oKXsKLSAgICAvLyAgICAgICAgdGhpcy50ZXN0LmFzc2VydFZpc2li
bGUoIHVwbG9hZGVkU2VsZWN0b3IgKyAnICcgKyB0aGlzLmhpc3RvPQpyeXBhbmVsLmRhdGEuc2Vs
ZWN0b3JzLmhkYS5ib2R5LAotICAgIC8vICAgICAgICAgICAgIkJvZHkgZm9yIHVwbG9hZGVkIGZp
bGUgaXMgdmlzaWJsZSIgKTsKLSAgICAvLyAgICB9KTsKLSAgICAvL30pOwotICAgIC8vCi0gICAg
Ly8vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLT0KLS0gZXhwYW5kZWQgaGRhcyBzdGlsbCBleHBhbmRlZCBhZnRlciByZWZy
ZXNoCi0gICAgLy9zcGFjZWdob3N0LnRoZW4oIGZ1bmN0aW9uKCl7Ci0gICAgLy8gICAgdGhpcy50
ZXN0LmNvbW1lbnQoICdFeHBhbmRlZCBoZGFzIGFyZSBzdGlsbCBleHBhbmRlZCBhZnRlciBhIHJl
Zj0KcmVzaCcgKTsKLSAgICAvLyAgICB2YXIgdXBsb2FkZWRTZWxlY3RvciA9M0QgJyNkYXRhc2V0
LScgKyB1cGxvYWRJZDsKLSAgICAvLwotICAgIC8vICAgIHRoaXMuY2xpY2soIHJlZnJlc2hCdXR0
b25TZWxlY3RvciApOwotICAgIC8vICAgIHRoaXMuaGlzdG9yeXBhbmVsLndhaXRGb3JIZGFzKCBm
dW5jdGlvbigpewotICAgIC8vICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0VmlzaWJsZSggdXBsb2Fk
ZWRTZWxlY3RvciArICcgJyArIHRoaXMuaGlzdG89CnJ5cGFuZWwuZGF0YS5zZWxlY3RvcnMuaGRh
LmJvZHksCi0gICAgLy8gICAgICAgICAgICAiQm9keSBmb3IgdXBsb2FkZWQgZmlsZSBpcyB2aXNp
YmxlIiApOwotICAgIC8vICAgIH0pOwotICAgIC8vICAgIC8vIHRoaXMgd2lsbCBicmVhazogd2Vi
a2l0ICsganEgMS43Ci0gICAgLy99KTsKLSAgICAvLwotICAgIC8vLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0tIGV4
cGFuZGVkIGhkYXMgY29sbGFwc2UgYnkgY2xpY2tpbmcgbmFtZSBhZ2FpbgotICAgIC8vc3BhY2Vn
aG9zdC50aGVuKCBmdW5jdGlvbigpewotICAgIC8vICAgIHRoaXMudGVzdC5jb21tZW50KCAnRXhw
YW5kZWQgaGRhcyBjb2xsYXBzZSBieSBjbGlja2luZyBuYW1lIGFnYWk9Cm4nICk7Ci0gICAgLy8g
ICAgdmFyIHVwbG9hZGVkU2VsZWN0b3IgPTNEICcjZGF0YXNldC0nICsgdXBsb2FkSWQ7Ci0gICAg
Ly8KLSAgICAvLyAgICB0aGlzLmNsaWNrKCB1cGxvYWRlZFNlbGVjdG9yICsgJyAnICsgdGhpcy5o
aXN0b3J5cGFuZWwuZGF0YS5zZWxlPQpjdG9ycy5oZGEudGl0bGUgKTsKLSAgICAvLyAgICB0aGlz
LndhaXQoIDUwMCwgZnVuY3Rpb24oKXsKLSAgICAvLyAgICAgICAgdGhpcy50ZXN0LmFzc2VydE5v
dFZpc2libGUoIHVwbG9hZGVkU2VsZWN0b3IgKyAnICcgKyB0aGlzLmhpPQpzdG9yeXBhbmVsLmRh
dGEuc2VsZWN0b3JzLmhkYS5ib2R5LAotICAgIC8vICAgICAgICAgICAgIkJvZHkgZm9yIHVwbG9h
ZGVkIGZpbGUgaXMgbm90IHZpc2libGUiICk7Ci0gICAgLy8gICAgfSk7Ci0gICAgLy99KTsKLSAg
ICAvLwotICAgIC8vLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0tIGNvbGxhcHNlZCBoZGFzIHN0aWxsIGNvbGxhcHNl
ZCBhZnRlciByZWZyZXNoCi0gICAgLy9zcGFjZWdob3N0LnRoZW4oIGZ1bmN0aW9uKCl7Ci0gICAg
Ly8gICAgdGhpcy50ZXN0LmNvbW1lbnQoICdjb2xsYXBzZWQgaGRhcyBzdGlsbCBjb2xsYXBzZWQg
YWZ0ZXIgYSByZWZyZT0Kc2gnICk7Ci0gICAgLy8gICAgdmFyIHVwbG9hZGVkU2VsZWN0b3IgPTNE
ICcjZGF0YXNldC0nICsgdXBsb2FkSWQ7Ci0gICAgLy8KLSAgICAvLyAgICB0aGlzLmNsaWNrKCBy
ZWZyZXNoQnV0dG9uU2VsZWN0b3IgKTsKLSAgICAvLyAgICB0aGlzLmhpc3RvcnlwYW5lbC53YWl0
Rm9ySGRhcyggZnVuY3Rpb24oKXsKLSAgICAvLyAgICAgICAgdGhpcy50ZXN0LmFzc2VydE5vdFZp
c2libGUoIHVwbG9hZGVkU2VsZWN0b3IgKyAnICcgKyB0aGlzLmhpPQpzdG9yeXBhbmVsLmRhdGEu
c2VsZWN0b3JzLmhkYS5ib2R5LAotICAgIC8vICAgICAgICAgICAgIkJvZHkgZm9yIHVwbG9hZGVk
IGZpbGUgaXMgbm90IHZpc2libGUiICk7Ci0gICAgLy8gICAgfSk7Ci0gICAgLy99KTsKKyAgICBz
cGFjZWdob3N0LnRoZW4oIGZ1bmN0aW9uKCl7CisgICAgICAgIHRoaXMudGVzdC5jb21tZW50KCAn
bmFtZSBzaG91bGQgcmV2ZXJ0IGlmIHVzZXIgaGl0cyBFU0Mgd2hpbGUgZWRpdD0KaW5nJyApOwor
CisgICAgICAgIHRoaXMuY2xpY2soIG5hbWVTZWxlY3RvciApOworICAgICAgICB0aGlzLnBhZ2Uu
c2VuZEV2ZW50KCAna2V5cHJlc3MnLCAiQXJzZW5pYyBCYWN0ZXJpYSIgKTsKKworICAgICAgICB0
aGlzLnBhZ2Uuc2VuZEV2ZW50KCAna2V5cHJlc3MnLCB0aGlzLnBhZ2UuZXZlbnQua2V5LkVzY2Fw
ZSApOworICAgICAgICB0aGlzLndhaXQoIDEwMDAsIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICB0
aGlzLnRlc3QuYXNzZXJ0U2VsZWN0b3JIYXNUZXh0KCBuYW1lU2VsZWN0b3IsIG5ld0hpc3RvcnlO
YW1lLD0KICdIaXN0b3J5IG5hbWUgaXMgU1RJTEwgJyArIG5ld0hpc3RvcnlOYW1lICk7CisgICAg
ICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0RG9lc250RXhpc3QoIGVkaXRhYmxlVGV4dElucHV0LCAi
SW5wdXQgZGlzYXBwZT0KYXJzIGFmdGVyIGhpdHRpbmcgRVNDIiApOworICAgICAgICB9KTsKKyAg
ICB9KTsKKworICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09CiBjaGVjayBzdHJ1Y3R1cmUgb2YgTk9OIGVtcHR5
IGhpc3RvcnkKKyAgICAvLyB1cGxvYWQgZmlsZTogMS50eHQKKyAgICBzcGFjZWdob3N0LmFwaS50
b29scy50aGVuVXBsb2FkVG9DdXJyZW50KHsgZmlsZXBhdGg6IGZpbGVwYXRoVG9VcGxvYWQgPQp9
LCBmdW5jdGlvbiB1cGxvYWRDYWxsYmFjayggaWQsIGpzb24gKXsKKyAgICAgICAgdXBsb2FkSWQg
PTNEIGlkOworICAgIH0pOworCisgICAgc3BhY2VnaG9zdC5vcGVuSG9tZVBhZ2UoKS50aGVuKCBm
dW5jdGlvbiBjaGVja1BhbmVsU3RydWN0dXJlKCl7CisgICAgICAgIHRoaXMudGVzdC5jb21tZW50
KCAnY2hlY2tpbmcgc3RydWN0dXJlIG9mIG5vbi1lbXB0eSBwYW5lbCcgKTsKKworICAgICAgICB0
aGlzLnRlc3QuY29tbWVudCggImhpc3RvcnkgbmFtZSBzaG91bGQgZXhpc3QsIGJlIHZpc2libGUs
IGFuZCBoYXY9CmUgdGV4dCAiICsgdW5uYW1lZE5hbWUgKTsKKyAgICAgICAgdGhpcy50ZXN0LmFz
c2VydEV4aXN0cyggbmFtZVNlbGVjdG9yLCBuYW1lU2VsZWN0b3IgKyAnIGV4aXN0cycgKTsKKyAg
ICAgICAgdGhpcy50ZXN0LmFzc2VydFZpc2libGUoIG5hbWVTZWxlY3RvciwgJ0hpc3RvcnkgbmFt
ZSBpcyB2aXNpYmxlJyApOworICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0U2VsZWN0b3JIYXNUZXh0
KCBuYW1lU2VsZWN0b3IsIG5ld0hpc3RvcnlOYW1lLCAnSGk9CnN0b3J5IG5hbWUgaXMgJyArIG5l
d0hpc3RvcnlOYW1lICk7CisKKyAgICAgICAgdmFyIG9uZXR4dEZpbGVzaXplID0zRCByZXF1aXJl
KCAnZnMnICkuc2l6ZSggZmlsZXBhdGhUb1VwbG9hZCApLAorICAgICAgICAgICAgZXhwZWN0ZWRT
aXplID0zRCBvbmV0eHRGaWxlc2l6ZSArICcgYnl0ZXMnOworICAgICAgICB0aGlzLnRlc3QuY29t
bWVudCggImhpc3Rvcnkgc2hvdWxkIGRpc3BsYXkgc2l6ZSBhbmQgc2l6ZSBzaG91bGQgYmU9CiAi
ICsgb25ldHh0RmlsZXNpemUgKyAiIGJ5dGVzIiApOworICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0
RXhpc3RzKCBzaXplU2VsZWN0b3IsICdGb3VuZCAnICsgc2l6ZVNlbGVjdG9yICk7CisgICAgICAg
IHRoaXMudGVzdC5hc3NlcnRWaXNpYmxlKCBzaXplU2VsZWN0b3IsICdIaXN0b3J5IHNpemUgaXMg
dmlzaWJsZScgKTsKKyAgICAgICAgdGhpcy50ZXN0LmFzc2VydFNlbGVjdG9ySGFzVGV4dCggc2l6
ZVNlbGVjdG9yLCBleHBlY3RlZFNpemUsCisgICAgICAgICAgICAnSGlzdG9yeSBzaXplIGhhcyAi
JyArIGV4cGVjdGVkU2l6ZSArICciOiAnICsgdGhpcy5mZXRjaFRleHQoID0Kc2l6ZVNlbGVjdG9y
ICkudHJpbSgpICk7CisKKyAgICAgICAgdGhpcy50ZXN0LmNvbW1lbnQoICJ0YWdzIGFuZCBhbm5v
dGF0aW9uIGljb25zIHNob3VsZCBiZSBhdmFpbGFibGUiPQogKTsKKyAgICAgICAgdGhpcy50ZXN0
LmFzc2VydEV4aXN0cyggdGFnSWNvblNlbGVjdG9yLCAgJ1RhZyBpY29uIGJ1dHRvbiBmb3VuZCcg
PQopOworICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0RXhpc3RzKCBhbm5vSWNvblNlbGVjdG9yLCAn
QW5ub3RhdGlvbiBpY29uIGJ1dHRvbiA9CmZvdW5kJyApOworCisgICAgICAgIHRoaXMudGVzdC5j
b21tZW50KCAiQSBtZXNzYWdlIGFib3V0IHRoZSBjdXJyZW50IGhpc3RvcnkgYmVpbmcgZW1wdD0K
eSBzaG91bGQgTk9UIGJlIGRpc3BsYXllZCIgKTsKKyAgICAgICAgdGhpcy50ZXN0LmFzc2VydEV4
aXN0cyggZW1wdHlNc2dTZWxlY3RvciwgZW1wdHlNc2dTZWxlY3RvciArICcgZXhpPQpzdHMnICk7
CisgICAgICAgIHRoaXMudGVzdC5hc3NlcnROb3RWaXNpYmxlKCBlbXB0eU1zZ1NlbGVjdG9yLCAn
RW1wdHkgaGlzdG9yeSBtZXNzYT0KZ2UgaXMgTk9UIHZpc2libGUnICk7CisgICAgfSk7CisKKyAg
ICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tPQogdGFncworICAgIC8vIGtlZXBpbmcgdGhpcyBsaWdodCBoZXJlIC0g
YmV0dGVyIGZvciBpdHMgb3duIHRlc3QgZmlsZQorICAgIC8vVE9ETzogY2hlY2sgdG9vbHRpcHMK
KyAgICBzcGFjZWdob3N0LnRoZW4oIGZ1bmN0aW9uIG9wZW5UYWdzKCl7CisgICAgICAgIHRoaXMu
dGVzdC5jb21tZW50KCAndGFnIGFyZWEgc2hvdWxkIG9wZW4gd2hlbiB0aGUgaGlzdG9yeSBwYW5l
bCB0YT0KZyBpY29uIGlzIGNsaWNrZWQnICk7CisKKyAgICAgICAgdGhpcy5jbGljayggdGFnSWNv
blNlbGVjdG9yICk7CisgICAgICAgIHRoaXMud2FpdCggMTAwMCwgZnVuY3Rpb24oKXsKKyAgICAg
ICAgICAgIHRoaXMudGVzdC5hc3NlcnRWaXNpYmxlKCB0YWdBcmVhU2VsZWN0b3IsICdUYWcgYXJl
YSBpcyBub3cgZGlzPQpwbGF5ZWQnICk7CisgICAgICAgIH0pOworICAgIH0pOworICAgIHNwYWNl
Z2hvc3QudGhlbiggZnVuY3Rpb24gY2xvc2VBbm5vdGF0aW9uKCl7CisgICAgICAgIHRoaXMudGVz
dC5jb21tZW50KCAnYW5ub3RhdGlvbiBhcmVhIHNob3VsZCBjbG9zZSB3aGVuIHRoZSBoaXN0b3J5
ID0KcGFuZWwgdGFnIGljb24gaXMgY2xpY2tlZCBhZ2FpbicgKTsKKworICAgICAgICB0aGlzLmNs
aWNrKCB0YWdJY29uU2VsZWN0b3IgKTsKKyAgICAgICAgdGhpcy53YWl0KCAxMDAwLCBmdW5jdGlv
bigpeworICAgICAgICAgICAgdGhpcy50ZXN0LmFzc2VydE5vdFZpc2libGUoIHRhZ0FyZWFTZWxl
Y3RvciwgJ1RhZyBhcmVhIGlzIG5vdyA9CmhpZGRlbicgKTsKKyAgICAgICAgfSk7CisgICAgfSk7
CisKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tPQogYW5ub3RhdGlvbgorICAgIC8vIGtlZXBpbmcgdGhpcyBs
aWdodCBoZXJlIC0gYmV0dGVyIGZvciBpdHMgb3duIHRlc3QgZmlsZQorICAgIC8vVE9ETzogY2hl
Y2sgdG9vbHRpcHMKKyAgICBzcGFjZWdob3N0LnRoZW4oIGZ1bmN0aW9uIG9wZW5Bbm5vdGF0aW9u
KCl7CisgICAgICAgIHRoaXMudGVzdC5jb21tZW50KCAnYW5ub3RhdGlvbiBhcmVhIHNob3VsZCBv
cGVuIHdoZW4gdGhlIGhpc3RvcnkgcD0KYW5lbCBhbm5vdGF0aW9uIGljb24gaXMgY2xpY2tlZCcg
KTsKKworICAgICAgICB0aGlzLmNsaWNrKCBhbm5vSWNvblNlbGVjdG9yICk7CisgICAgICAgIHRo
aXMud2FpdCggMTAwMCwgZnVuY3Rpb24oKXsKKyAgICAgICAgICAgIHRoaXMudGVzdC5hc3NlcnRW
aXNpYmxlKCBhbm5vQXJlYVNlbGVjdG9yLCAnQW5ub3RhdGlvbiBhcmVhIGlzPQogbm93IGRpc3Bs
YXllZCcgKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisgICAgc3BhY2VnaG9zdC50aGVuKCBmdW5j
dGlvbiBjbG9zZUFubm90YXRpb24oKXsKKyAgICAgICAgdGhpcy50ZXN0LmNvbW1lbnQoICdhbm5v
dGF0aW9uIGFyZWEgc2hvdWxkIGNsb3NlIHdoZW4gdGhlIGhpc3RvcnkgPQpwYW5lbCB0YWcgaWNv
biBpcyBjbGlja2VkIGFnYWluJyApOworCisgICAgICAgIHRoaXMuY2xpY2soIGFubm9JY29uU2Vs
ZWN0b3IgKTsKKyAgICAgICAgdGhpcy53YWl0KCAxMDAwLCBmdW5jdGlvbigpeworICAgICAgICAg
ICAgdGhpcy50ZXN0LmFzc2VydE5vdFZpc2libGUoIGFubm9BcmVhU2VsZWN0b3IsICdBbm5vdGF0
aW9uIGFyZWE9CiBpcyBub3cgaGlkZGVuJyApOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAg
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS09CiByZWZyZXNoIGJ1dHRvbgorICAgIHNwYWNlZ2hvc3QudGhlbiggZnVu
Y3Rpb24gcmVmcmVzaEJ1dHRvbigpeworICAgICAgICB0aGlzLnRlc3QuY29tbWVudCggJ0hpc3Rv
cnkgcGFuZWwgc2hvdWxkIHJlZnJlc2ggd2hlbiB0aGUgaGlzdG9yeSA9CnJlZnJlc2ggaWNvbiBp
cyBjbGlja2VkJyApOworCisgICAgICAgIHRoaXMudGVzdC5hc3NlcnRFeGlzdHMoICByZWZyZXNo
QnV0dG9uU2VsZWN0b3IsICJGb3VuZCByZWZyZXNoIGJ1dD0KdG9uIiApOworICAgICAgICB0aGlz
LnRlc3QuYXNzZXJ0VmlzaWJsZSggcmVmcmVzaEJ1dHRvblNlbGVjdG9yLCAiUmVmcmVzaCBidXR0
b24gaXM9CiB2aXNpYmxlIiApOworICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0VmlzaWJsZSggcmVm
cmVzaEJ1dHRvblNlbGVjdG9yICsgJyAnICsgcmVmcmVzaEJ1dHQ9Cm9uSWNvblNlbGVjdG9yLCAi
UmVmcmVzaCBpY29uIGlzIHZpc2libGUiICk7CisKKyAgICAgICAgLy90aGlzLmFzc2VydE5hdmln
YXRpb25SZXF1ZXN0ZWQoIHJlZnJlc2hCdXR0b25IcmVmLCAiSGlzdG9yeSByZWZyPQplc2hlZCB3
aGVuIGNsaWNraW5nIHJlZnJlc2ggaWNvbiIsIGZ1bmN0aW9uKCl7CisgICAgICAgIC8vICAgIHRo
aXMuY2xpY2soIHJlZnJlc2hCdXR0b25TZWxlY3RvciApOworICAgICAgICAvL30pOworICAgIH0p
OworCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KIGhkYXMgY2FuIGJlIGV4cGFuZGVkIGJ5IGNsaWNraW5n
IG9uIHRoZSBoZGEKKyAgICAvLyBicm9rZW4gaW4gd2Via2l0IHcvIGpxIDEuNworICAgIHNwYWNl
Z2hvc3QuaGlzdG9yeXBhbmVsLndhaXRGb3JIZGFzKCBmdW5jdGlvbigpeworICAgICAgICB0aGlz
LnRlc3QuY29tbWVudCggJ0hEQXMgY2FuIGJlIGV4cGFuZGVkIGJ5IGNsaWNraW5nIG9uIHRoZSBu
YW1lJyA9Cik7CisgICAgICAgIHZhciB1cGxvYWRlZFNlbGVjdG9yID0zRCAnI2RhdGFzZXQtJyAr
IHVwbG9hZElkOworCisgICAgICAgIHRoaXMuY2xpY2soIHVwbG9hZGVkU2VsZWN0b3IgKyAnICcg
KyB0aGlzLmhpc3RvcnlwYW5lbC5kYXRhLnNlbGVjdD0Kb3JzLmhkYS50aXRsZSApOworICAgICAg
ICB0aGlzLndhaXQoIDEwMDAsIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICB0aGlzLnRlc3QuYXNz
ZXJ0VmlzaWJsZSggdXBsb2FkZWRTZWxlY3RvciArICcgJyArIHRoaXMuaGlzdG9yeT0KcGFuZWwu
ZGF0YS5zZWxlY3RvcnMuaGRhLmJvZHksCisgICAgICAgICAgICAgICAgIkJvZHkgZm9yIHVwbG9h
ZGVkIGZpbGUgaXMgdmlzaWJsZSIgKTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tPQogZXhwYW5kZWQgaGRhcyBzdGlsbCBleHBhbmRlZCBhZnRlciByZWZyZXNoCisg
ICAgc3BhY2VnaG9zdC50aGVuKCBmdW5jdGlvbigpeworICAgICAgICB0aGlzLnRlc3QuY29tbWVu
dCggJ0V4cGFuZGVkIGhkYXMgYXJlIHN0aWxsIGV4cGFuZGVkIGFmdGVyIGEgcmVmcmU9CnNoJyAp
OworICAgICAgICB2YXIgdXBsb2FkZWRTZWxlY3RvciA9M0QgJyNkYXRhc2V0LScgKyB1cGxvYWRJ
ZDsKKworICAgICAgICB0aGlzLmNsaWNrKCByZWZyZXNoQnV0dG9uU2VsZWN0b3IgKTsKKyAgICAg
ICAgdGhpcy5oaXN0b3J5cGFuZWwud2FpdEZvckhkYXMoIGZ1bmN0aW9uKCl7CisgICAgICAgICAg
ICB0aGlzLnRlc3QuYXNzZXJ0VmlzaWJsZSggdXBsb2FkZWRTZWxlY3RvciArICcgJyArIHRoaXMu
aGlzdG9yeT0KcGFuZWwuZGF0YS5zZWxlY3RvcnMuaGRhLmJvZHksCisgICAgICAgICAgICAgICAg
IkJvZHkgZm9yIHVwbG9hZGVkIGZpbGUgaXMgdmlzaWJsZSIgKTsKKyAgICAgICAgfSk7CisgICAg
ICAgIC8vIHRoaXMgd2lsbCBicmVhazogd2Via2l0ICsganEgMS43CisgICAgfSk7CisKKyAgICAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tPQogZXhwYW5kZWQgaGRhcyBjb2xsYXBzZSBieSBjbGlja2luZyBuYW1lIGFn
YWluCisgICAgc3BhY2VnaG9zdC50aGVuKCBmdW5jdGlvbigpeworICAgICAgICB0aGlzLnRlc3Qu
Y29tbWVudCggJ0V4cGFuZGVkIGhkYXMgY29sbGFwc2UgYnkgY2xpY2tpbmcgbmFtZSBhZ2Fpbic9
CiApOworICAgICAgICB2YXIgdXBsb2FkZWRTZWxlY3RvciA9M0QgJyNkYXRhc2V0LScgKyB1cGxv
YWRJZDsKKworICAgICAgICB0aGlzLmNsaWNrKCB1cGxvYWRlZFNlbGVjdG9yICsgJyAnICsgdGhp
cy5oaXN0b3J5cGFuZWwuZGF0YS5zZWxlY3Q9Cm9ycy5oZGEudGl0bGUgKTsKKyAgICAgICAgdGhp
cy53YWl0KCA1MDAsIGZ1bmN0aW9uKCl7CisgICAgICAgICAgICB0aGlzLnRlc3QuYXNzZXJ0Tm90
VmlzaWJsZSggdXBsb2FkZWRTZWxlY3RvciArICcgJyArIHRoaXMuaGlzdD0Kb3J5cGFuZWwuZGF0
YS5zZWxlY3RvcnMuaGRhLmJvZHksCisgICAgICAgICAgICAgICAgIkJvZHkgZm9yIHVwbG9hZGVk
IGZpbGUgaXMgbm90IHZpc2libGUiICk7CisgICAgICAgIH0pOworICAgIH0pOworCisgICAgLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLT0KIGNvbGxhcHNlZCBoZGFzIHN0aWxsIGNvbGxhcHNlZCBhZnRlciByZWZyZXNo
CisgICAgc3BhY2VnaG9zdC50aGVuKCBmdW5jdGlvbigpeworICAgICAgICB0aGlzLnRlc3QuY29t
bWVudCggJ2NvbGxhcHNlZCBoZGFzIHN0aWxsIGNvbGxhcHNlZCBhZnRlciBhIHJlZnJlc2g9Cicg
KTsKKyAgICAgICAgdmFyIHVwbG9hZGVkU2VsZWN0b3IgPTNEICcjZGF0YXNldC0nICsgdXBsb2Fk
SWQ7CisKKyAgICAgICAgdGhpcy5jbGljayggcmVmcmVzaEJ1dHRvblNlbGVjdG9yICk7CisgICAg
ICAgIHRoaXMuaGlzdG9yeXBhbmVsLndhaXRGb3JIZGFzKCBmdW5jdGlvbigpeworICAgICAgICAg
ICAgdGhpcy50ZXN0LmFzc2VydE5vdFZpc2libGUoIHVwbG9hZGVkU2VsZWN0b3IgKyAnICcgKyB0
aGlzLmhpc3Q9Cm9yeXBhbmVsLmRhdGEuc2VsZWN0b3JzLmhkYS5ib2R5LAorICAgICAgICAgICAg
ICAgICJCb2R5IGZvciB1cGxvYWRlZCBmaWxlIGlzIG5vdCB2aXNpYmxlIiApOworICAgICAgICB9
KTsKKyAgICB9KTsKICAgICAvKgogICAgICovCiAgICAgLy8gPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRAoKCmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRy
YWwvY29tbWl0cy9kODM2ODcxOTRjY2YvCkNoYW5nZXNldDogICBkODM2ODcxOTRjY2YKVXNlcjog
ICAgICAgIGNhcmxmZWJlcmhhcmQKRGF0ZTogICAgICAgIDIwMTUtMDEtMTUgMTU6MTY6MzMrMDA6
MDAKU3VtbWFyeTogICAgIChNYW51YWxseSkgbWVyZ2UgY2VudHJhbApBZmZlY3RlZCAjOiAgNTYg
ZmlsZXMKCmRpZmYgLXIgMmE2NjM1MTAzNTNiYTgyNjhkZWZmMDYzYmE1MGQyN2RlMTgwYjg4OSAt
ciBkODM2ODcxOTRjY2Y4NDlmMDNjMTY2ND0KNzkwNzFiZDMzYTFiNDQ3ZjQgLmhndGFncwotLS0g
YS8uaGd0YWdzCisrKyBiLy5oZ3RhZ3MKQEAgLTgsNyArOCw3IEBACiA1ZTYwNWVkNjA2OWZlNGM1
Y2E5ODc1ZTk1ZTkxYjI3MTM0OTllOGNhIHJlbGVhc2VfMjAxNC4wMi4xMAogOWU1MzI1MWIwYjdl
OTNiOTU2MzAwOGEyYjExMmYyZTgxNWEwNGJiYyByZWxlYXNlXzIwMTQuMDQuMTQKIDdlMjU3Yzdi
MTBiYWRiNjU3NzJiMTUyOGNiNjFkNTgxNzVhNDJlNDcgcmVsZWFzZV8yMDE0LjA2LjAyCi00MTQ1
NDE3YTZlMWMxM2Y4MmEzZGUzNjVhYWRlZjBmYjNlZDdhYjE0IGxhdGVzdF8yMDE0LjA2LjAyCis5
YmNlM2Y0MjY4NjNmOGJhODgwNjJmNjdjN2VmYzE4MzZlODJlZTdjIGxhdGVzdF8yMDE0LjA2LjAy
CiA4ZjlkY2FjMDMzNjk0ZTRjYWJjZjVkYWFlNWNjYTFjZmVmYmU5NjdmIGxhdGVzdF8yMDE0LjA0
LjE0CiA5YzMyM2FhZDRmZmRkNjVhM2RlYjA2YTRhMzZmNmIyYzUxMTVhNjBmIGxhdGVzdF8yMDEz
LjAxLjEzCiBiOTg2YzE4NGJlODg5NDdiNWQxZDkwYmU3ZjM2Y2ZkMjYyN2RkOTM4IGxhdGVzdF8y
MDEzLjAyLjA4CkBAIC0xOCw4ICsxOCw4IEBACiA3ZDVhYTE5YTE2NmNiYTkwMzllMTVmMzM4YTFl
M2ZjOTI0YzQzZDNhIGxhdGVzdF8yMDEzLjExLjA0CiAwYzAwMGNjMmY5YzA1YmY0YzFjMmJjM2Ex
MDIxNTAxNGZkNjRlNjk2IGxhdGVzdF8yMDE0LjAyLjEwCiBjYTQ1Yjc4YWRiNDE1MmZjNmU3Mzk1
NTE0ZDQ2ZWJhNmI3ZDBiODM4IHJlbGVhc2VfMjAxNC4wOC4xMQotODE1MDAyNGMwZTZmYzVhZWYz
MDMzY2Y4YWFhNTc0ODk2ZjZiNWQwZCBsYXRlc3RfMjAxNC4wOC4xMQorZjNmYzQ2MDJlMjJiMzk0
NjhkNzgwYjk1NWExYTA1Y2FmODY3YTdlOSBsYXRlc3RfMjAxNC4wOC4xMQogMjA5Mjk0ODkzN2Fj
MzBlZjgyZjcxNDYzYTIzNWM2NmQzNDk4NzA4OCByZWxlYXNlXzIwMTQuMTAuMDYKLWM0MzdiMjgz
NDhhOTM0NWRiODQzM2U1YjRmMGUwNWVjOGZiNmMzOGEgbGF0ZXN0XzIwMTQuMTAuMDYKKzliZDZm
OGI1YjgxNTNkYjc1MmY0ZTYxZWQ2MmYyYjZjMDFhZTRhMTEgbGF0ZXN0XzIwMTQuMTAuMDYKIDJl
OGRkMjk0OWRkM2VlZTBmNTZmOWEzYTVlYmYxYjJiYWNhMjRhZWUgcmVsZWFzZV8yMDE1LjAxLjEz
CiAyZThkZDI5NDlkZDNlZWUwZjU2ZjlhM2E1ZWJmMWIyYmFjYTI0YWVlIGxhdGVzdF8yMDE1LjAx
LjEzCgpkaWZmIC1yIDJhNjYzNTEwMzUzYmE4MjY4ZGVmZjA2M2JhNTBkMjdkZTE4MGI4ODkgLXIg
ZDgzNjg3MTk0Y2NmODQ5ZjAzYzE2NjQ9Cjc5MDcxYmQzM2ExYjQ0N2Y0IGNsaWVudC9nYWxheHkv
c2NyaXB0cy9tdmMvdWkvdWktcG9ydGxldC5qcwotLS0gYS9jbGllbnQvZ2FsYXh5L3NjcmlwdHMv
bXZjL3VpL3VpLXBvcnRsZXQuanMKKysrIGIvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy91aS91
aS1wb3J0bGV0LmpzCkBAIC00NCwxNyArNDQsOCBAQAogICAgICAgICAvLyBsaW5rIGhlYWRlcgog
ICAgICAgICB0aGlzLiRoZWFkZXIgPTNEIHRoaXMuJGVsLmZpbmQoJy5wb3J0bGV0LWhlYWRlcicp
OwogICAgICAgID0yMAotICAgICAgICAvLyBzZXQgY29udGVudCBmb3JtYXQKKyAgICAgICAgLy8g
bGluayBwb3J0bGV0IGNvbnRlbnQgKHdyYXBzICdjb250ZW50JykKICAgICAgICAgdmFyICRwb3J0
bGV0X2NvbnRlbnQgPTNEIHRoaXMuJGVsLmZpbmQoJy5wb3J0bGV0LWNvbnRlbnQnKTsKLSAgICAg
ICAgaWYgKCF0aGlzLm9wdGlvbnMuc2Nyb2xsYWJsZSkgewotICAgICAgICAgICAgaWYgKHRoaXMu
b3B0aW9ucy50aXRsZSkgewotICAgICAgICAgICAgICAgICRwb3J0bGV0X2NvbnRlbnQuYWRkQ2xh
c3MoJ25vLXNjcm9sbCcpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAk
cG9ydGxldF9jb250ZW50LmFkZENsYXNzKCduby1zY3JvbGwtbm8tdGl0bGUnKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICRwb3J0bGV0X2NvbnRlbnQuYWRk
Q2xhc3MoJ3Njcm9sbCcpOwotICAgICAgICB9CiAgICAgICAgPTIwCiAgICAgICAgIC8vIHNldCBj
b250ZW50IHBhZGRpbmcKICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ub3BhZGRpbmcpIHsKCmRp
ZmYgLXIgMmE2NjM1MTAzNTNiYTgyNjhkZWZmMDYzYmE1MGQyN2RlMTgwYjg4OSAtciBkODM2ODcx
OTRjY2Y4NDlmMDNjMTY2ND0KNzkwNzFiZDMzYTFiNDQ3ZjQgY29uZmlnL3BsdWdpbnMvdmlzdWFs
aXphdGlvbnMvY2hhcnRzL3N0YXRpYy9idWlsZC1hcHAuanMKLS0tIGEvY29uZmlnL3BsdWdpbnMv
dmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9idWlsZC1hcHAuanMKKysrIGIvY29uZmlnL3Bs
dWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9idWlsZC1hcHAuanMKQEAgLTMsNCAr
Myw0IEBACiAvLyAgICAgKGMpIDIwMDktMjAxNCBKZXJlbXkgQXNoa2VuYXMsIERvY3VtZW50Q2xv
dWQgYW5kIEludmVzdGlnYXRpdmUgUmVwbz0KcnRlcnMgJiBFZGl0b3JzCiAvLyAgICAgVW5kZXJz
Y29yZSBtYXkgYmUgZnJlZWx5IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KPTIw
Ci1kZWZpbmUoIm12Yy91aS91aS1tb2RhbCIsW10sZnVuY3Rpb24oKXt2YXIgZT0zREJhY2tib25l
LlZpZXcuZXh0ZW5kKHtlbE1haT0KbjoiYm9keSIsb3B0aW9uc0RlZmF1bHQ6e3RpdGxlOiJ1aS1t
b2RhbCIsYm9keToiIixiYWNrZHJvcDohMCxoZWlnaHQ6bnVsbCx3PQppZHRoOm51bGwsY2xvc2lu
Z19ldmVudHM6ITEsY2xvc2luZ19jYWxsYmFjazpudWxsfSxidXR0b25MaXN0Ont9LGluaXRpYWxp
emU9CjpmdW5jdGlvbihlKXtlJiZ0aGlzLl9jcmVhdGUoZSl9LHNob3c6ZnVuY3Rpb24oZSl7dGhp
cy5pbml0aWFsaXplKGUpLHRoaXMubz0KcHRpb25zLmhlaWdodD8odGhpcy4kYm9keS5jc3MoImhl
aWdodCIsdGhpcy5vcHRpb25zLmhlaWdodCksdGhpcy4kYm9keS5jc3MoPQoib3ZlcmZsb3ciLCJo
aWRkZW4iKSk6dGhpcy4kYm9keS5jc3MoIm1heC1oZWlnaHQiLCQod2luZG93KS5oZWlnaHQoKS8y
KSx0aGk9CnMub3B0aW9ucy53aWR0aCYmdGhpcy4kZGlhbG9nLmNzcygid2lkdGgiLHRoaXMub3B0
aW9ucy53aWR0aCksdGhpcy52aXNpYmxlPz0KdGhpcy4kZWwuc2hvdygpOnRoaXMuJGVsLmZhZGVJ
bigiZmFzdCIpLHRoaXMudmlzaWJsZT0zRCEwfSxoaWRlOmZ1bmN0aW9uKCl7PQp0aGlzLnZpc2li
bGU9M0QhMSx0aGlzLiRlbC5mYWRlT3V0KCJmYXN0IiksdGhpcy5vcHRpb25zLmNsb3NpbmdfY2Fs
bGJhY2smJnQ9Cmhpcy5vcHRpb25zLmNsb3NpbmdfY2FsbGJhY2soKX0sZW5hYmxlQnV0dG9uOmZ1
bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy5idXR0bz0Kbkxpc3RbZV07dGhpcy4kYnV0dG9ucy5maW5k
KCIjIit0KS5wcm9wKCJkaXNhYmxlZCIsITEpfSxkaXNhYmxlQnV0dG9uOmZ1bmN0PQppb24oZSl7
dmFyIHQ9M0R0aGlzLmJ1dHRvbkxpc3RbZV07dGhpcy4kYnV0dG9ucy5maW5kKCIjIit0KS5wcm9w
KCJkaXNhYmxlZCI9CiwhMCl9LHNob3dCdXR0b246ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLmJ1
dHRvbkxpc3RbZV07dGhpcy4kYnV0dG9ucy5maW5kKD0KIiMiK3QpLnNob3coKX0saGlkZUJ1dHRv
bjpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMuYnV0dG9uTGlzdFtlXTt0aGlzLiRidXR0PQpvbnMu
ZmluZCgiIyIrdCkuaGlkZSgpfSxnZXRCdXR0b246ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLmJ1
dHRvbkxpc3RbZV07cmU9CnR1cm4gdGhpcy4kYnV0dG9ucy5maW5kKCIjIit0KX0sc2Nyb2xsVG9w
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGJvZHkuc2Nybz0KbGxUb3AoKX0sX2NyZWF0ZTpmdW5j
dGlvbihlKXt2YXIgdD0zRHRoaXM7dGhpcy5vcHRpb25zPTNEXy5kZWZhdWx0cyhlLHRoaXMuPQpv
cHRpb25zRGVmYXVsdCksdGhpcy5vcHRpb25zLmJvZHk9M0Q9M0QicHJvZ3Jlc3MiJiYodGhpcy5v
cHRpb25zLmJvZHk9M0QkKCc9CjxkaXYgY2xhc3M9M0QicHJvZ3Jlc3MgcHJvZ3Jlc3Mtc3RyaXBl
ZCBhY3RpdmUiPjxkaXYgY2xhc3M9M0QicHJvZ3Jlc3MtYmFyID0KcHJvZ3Jlc3MtYmFyLWluZm8i
IHN0eWxlPTNEIndpZHRoOjEwMCUiPjwvZGl2PjwvZGl2PicpKSx0aGlzLiRlbCYmKHRoaXMuJGVs
PQoucmVtb3ZlKCksJChkb2N1bWVudCkub2ZmKCJrZXl1cC51aS1tb2RhbCIpKSx0aGlzLnNldEVs
ZW1lbnQodGhpcy5fdGVtcGxhdGU9Cih0aGlzLm9wdGlvbnMudGl0bGUpKSx0aGlzLiRkaWFsb2c9
M0R0aGlzLiRlbC5maW5kKCIubW9kYWwtZGlhbG9nIiksdGhpcy4kYj0Kb2R5PTNEdGhpcy4kZWwu
ZmluZCgiLm1vZGFsLWJvZHkiKSx0aGlzLiRmb290ZXI9M0R0aGlzLiRlbC5maW5kKCIubW9kYWwt
Zm9vPQp0ZXIiKSx0aGlzLiRidXR0b25zPTNEdGhpcy4kZWwuZmluZCgiLmJ1dHRvbnMiKSx0aGlz
LiRiYWNrZHJvcD0zRHRoaXMuJGVsLmY9CmluZCgiLm1vZGFsLWJhY2tkcm9wIiksdGhpcy4kYm9k
eS5odG1sKHRoaXMub3B0aW9ucy5ib2R5KSx0aGlzLm9wdGlvbnMuYmFjaz0KZHJvcHx8dGhpcy4k
YmFja2Ryb3AucmVtb3ZlQ2xhc3MoImluIik7aWYodGhpcy5vcHRpb25zLmJ1dHRvbnMpe3RoaXMu
YnV0dG9uPQpMaXN0PTNEe307dmFyIG49M0QwOyQuZWFjaCh0aGlzLm9wdGlvbnMuYnV0dG9ucyxm
dW5jdGlvbihlLHIpe3ZhciBpPTNEImJ1dHQ9Cm9uLSIrbisrO3QuJGJ1dHRvbnMuYXBwZW5kKCQo
JzxidXR0b24gaWQ9M0QiJytpKyciPjwvYnV0dG9uPicpLnRleHQoZSkuY2xpYz0KayhyKSkuYXBw
ZW5kKCIgIiksdC5idXR0b25MaXN0W2VdPTNEaX0pfWVsc2UgdGhpcy4kZm9vdGVyLmhpZGUoKTsk
KHRoaXMuZWxNPQphaW4pLmFwcGVuZCgkKHRoaXMuZWwpKSx0aGlzLm9wdGlvbnMuY2xvc2luZ19l
dmVudHMmJigkKGRvY3VtZW50KS5vbigia2V5dXA9Ci51aS1tb2RhbCIsZnVuY3Rpb24oZSl7ZS5r
ZXlDb2RlPTNEPTNEMjcmJnQuaGlkZSgpfSksdGhpcy4kZWwuZmluZCgiLm1vZGFsLT0KYmFja2Ry
b3AiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7dC5oaWRlKCl9KSl9LF90ZW1wbGF0ZTpmdW5jdGlv
bihlKXtyZXR1cm4nPQo8ZGl2IGNsYXNzPTNEInVpLW1vZGFsIG1vZGFsIj48ZGl2IGNsYXNzPTNE
Im1vZGFsLWJhY2tkcm9wIGZhZGUgaW4iIHN0eWxlPQo9M0Qiei1pbmRleDogLTE7Ij48L2Rpdj48
ZGl2IGNsYXNzPTNEIm1vZGFsLWRpYWxvZyI+PGRpdiBjbGFzcz0zRCJtb2RhbC1jb249CnRlbnQi
PjxkaXYgY2xhc3M9M0QibW9kYWwtaGVhZGVyIj48YnV0dG9uIHR5cGU9M0QiYnV0dG9uIiBjbGFz
cz0zRCJjbG9zZSIgcz0KdHlsZT0zRCJkaXNwbGF5OiBub25lOyI+JnRpbWVzOzwvYnV0dG9uPjxo
NCBjbGFzcz0zRCJ0aXRsZSI+JytlKyI8L2g0PiIrIjwvPQpkaXY+IisnPGRpdiBjbGFzcz0zRCJt
b2RhbC1ib2R5IiBzdHlsZT0zRCJwb3NpdGlvbjogc3RhdGljOyI+PC9kaXY+JysnPGRpdiA9CmNs
YXNzPTNEIm1vZGFsLWZvb3RlciI+JysnPGRpdiBjbGFzcz0zRCJidXR0b25zIiBzdHlsZT0zRCJm
bG9hdDogcmlnaHQ7Ij48Lz0KZGl2PicrIjwvZGl2PiIrIjwvZGl2IisiPC9kaXY+IisiPC9kaXY+
In19KTtyZXR1cm57VmlldzplfX0pLGZ1bmN0aW9uKCl7dmFyPQogZT0zRHRoaXMsdD0zRGUuXyxu
PTNEQXJyYXkucHJvdG90eXBlLHI9M0RPYmplY3QucHJvdG90eXBlLGk9M0RGdW5jdGlvbi5wcm89
CnRvdHlwZSxzPTNEbi5wdXNoLG89M0RuLnNsaWNlLHU9M0RuLmNvbmNhdCxhPTNEci50b1N0cmlu
ZyxmPTNEci5oYXNPd25Qcm9wZT0KcnR5LGw9M0RBcnJheS5pc0FycmF5LGM9M0RPYmplY3Qua2V5
cyxoPTNEaS5iaW5kLHA9M0RmdW5jdGlvbihlKXtpZihlIGluc3RhPQpuY2VvZiBwKXJldHVybiBl
O2lmKCEodGhpcyBpbnN0YW5jZW9mIHApKXJldHVybiBuZXcgcChlKTt0aGlzLl93cmFwcGVkPTNE
ZX09Cjt0eXBlb2YgZXhwb3J0cyE9M0QidW5kZWZpbmVkIj8odHlwZW9mIG1vZHVsZSE9M0QidW5k
ZWZpbmVkIiYmbW9kdWxlLmV4cG9ydD0KcyYmKGV4cG9ydHM9M0Rtb2R1bGUuZXhwb3J0cz0zRHAp
LGV4cG9ydHMuXz0zRHApOmUuXz0zRHAscC5WRVJTSU9OPTNEIjEuNy4wPQoiO3ZhciBkPTNEZnVu
Y3Rpb24oZSx0LG4pe2lmKHQ9M0Q9M0Q9M0R2b2lkIDApcmV0dXJuIGU7c3dpdGNoKG49M0Q9M0Ru
dWxsPzM9CjpuKXtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBlLmNhbGwodCxuKX07
Y2FzZSAyOnJldHVybiBmdW5jdGlvbihuLD0Kcil7cmV0dXJuIGUuY2FsbCh0LG4scil9O2Nhc2Ug
MzpyZXR1cm4gZnVuY3Rpb24obixyLGkpe3JldHVybiBlLmNhbGwodCxuLHIsPQppKX07Y2FzZSA0
OnJldHVybiBmdW5jdGlvbihuLHIsaSxzKXtyZXR1cm4gZS5jYWxsKHQsbixyLGkscyl9fXJldHVy
biBmdW5jdGk9Cm9uKCl7cmV0dXJuIGUuYXBwbHkodCxhcmd1bWVudHMpfX07cC5pdGVyYXRlZT0z
RGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZT0zRD0KPTNEbnVsbD9wLmlkZW50aXR5OnAuaXNGdW5j
dGlvbihlKT9kKGUsdCxuKTpwLmlzT2JqZWN0KGUpP3AubWF0Y2hlcyhlKTpwLnByPQpvcGVydHko
ZSl9LHAuZWFjaD0zRHAuZm9yRWFjaD0zRGZ1bmN0aW9uKGUsdCxuKXtpZihlPTNEPTNEbnVsbCly
ZXR1cm4gZTt0PQo9M0RkKHQsbik7dmFyIHIsaT0zRGUubGVuZ3RoO2lmKGk9M0Q9M0Q9M0QraSlm
b3Iocj0zRDA7cjxpO3IrKyl0KGVbcl0scixlKTs9CmVsc2V7dmFyIHM9M0RwLmtleXMoZSk7Zm9y
KHI9M0QwLGk9M0RzLmxlbmd0aDtyPGk7cisrKXQoZVtzW3JdXSxzW3JdLGUpfXJldD0KdXJuIGV9
LHAubWFwPTNEcC5jb2xsZWN0PTNEZnVuY3Rpb24oZSx0LG4pe2lmKGU9M0Q9M0RudWxsKXJldHVy
bltdO3Q9M0RwLml0PQplcmF0ZWUodCxuKTt2YXIgcj0zRGUubGVuZ3RoIT0zRD0zRCtlLmxlbmd0
aCYmcC5rZXlzKGUpLGk9M0Qocnx8ZSkubGVuZ3RoLHM9Cj0zREFycmF5KGkpLG87Zm9yKHZhciB1
PTNEMDt1PGk7dSsrKW89M0RyP3JbdV06dSxzW3VdPTNEdChlW29dLG8sZSk7cmV0dXJuID0Kc307
dmFyIHY9M0QiUmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZSI7cC5y
ZWR1Y2U9M0RwLmZvbGRsPQo9M0RwLmluamVjdD0zRGZ1bmN0aW9uKGUsdCxuLHIpe2U9M0Q9M0Ru
dWxsJiYoZT0zRFtdKSx0PTNEZCh0LHIsNCk7dmFyIGk9M0Q9CmUubGVuZ3RoIT0zRD0zRCtlLmxl
bmd0aCYmcC5rZXlzKGUpLHM9M0QoaXx8ZSkubGVuZ3RoLG89M0QwLHU7aWYoYXJndW1lbnRzLj0K
bGVuZ3RoPDMpe2lmKCFzKXRocm93IG5ldyBUeXBlRXJyb3Iodik7bj0zRGVbaT9pW28rK106bysr
XX1mb3IoO288cztvKyspdT0KPTNEaT9pW29dOm8sbj0zRHQobixlW3VdLHUsZSk7cmV0dXJuIG59
LHAucmVkdWNlUmlnaHQ9M0RwLmZvbGRyPTNEZnVuY3Rpb24oPQplLHQsbixyKXtlPTNEPTNEbnVs
bCYmKGU9M0RbXSksdD0zRGQodCxyLDQpO3ZhciBpPTNEZS5sZW5ndGghPTNEPTNEK2UubGVuZ3Q9
CmgmJnAua2V5cyhlKSxzPTNEKGl8fGUpLmxlbmd0aCxvO2lmKGFyZ3VtZW50cy5sZW5ndGg8Myl7
aWYoIXMpdGhyb3cgbmV3IFR5cD0KZUVycm9yKHYpO249M0RlW2k/aVstLXNdOi0tc119d2hpbGUo
cy0tKW89M0RpP2lbc106cyxuPTNEdChuLGVbb10sbyxlKTtyZXR1PQpybiBufSxwLmZpbmQ9M0Rw
LmRldGVjdD0zRGZ1bmN0aW9uKGUsdCxuKXt2YXIgcjtyZXR1cm4gdD0zRHAuaXRlcmF0ZWUodCxu
KSw9CnAuc29tZShlLGZ1bmN0aW9uKGUsbixpKXtpZih0KGUsbixpKSlyZXR1cm4gcj0zRGUsITB9
KSxyfSxwLmZpbHRlcj0zRHAuc2VsZT0KY3Q9M0RmdW5jdGlvbihlLHQsbil7dmFyIHI9M0RbXTty
ZXR1cm4gZT0zRD0zRG51bGw/cjoodD0zRHAuaXRlcmF0ZWUodCxuKSxwPQouZWFjaChlLGZ1bmN0
aW9uKGUsbixpKXt0KGUsbixpKSYmci5wdXNoKGUpfSkscil9LHAucmVqZWN0PTNEZnVuY3Rpb24o
ZSx0LG49Cil7cmV0dXJuIHAuZmlsdGVyKGUscC5uZWdhdGUocC5pdGVyYXRlZSh0KSksbil9LHAu
ZXZlcnk9M0RwLmFsbD0zRGZ1bmN0aW9uKD0KZSx0LG4pe2lmKGU9M0Q9M0RudWxsKXJldHVybiEw
O3Q9M0RwLml0ZXJhdGVlKHQsbik7dmFyIHI9M0RlLmxlbmd0aCE9M0Q9M0QrPQplLmxlbmd0aCYm
cC5rZXlzKGUpLGk9M0Qocnx8ZSkubGVuZ3RoLHMsbztmb3Iocz0zRDA7czxpO3MrKyl7bz0zRHI/
cltzXTpzO2k9CmYoIXQoZVtvXSxvLGUpKXJldHVybiExfXJldHVybiEwfSxwLnNvbWU9M0RwLmFu
eT0zRGZ1bmN0aW9uKGUsdCxuKXtpZihlPTNEPQo9M0RudWxsKXJldHVybiExO3Q9M0RwLml0ZXJh
dGVlKHQsbik7dmFyIHI9M0RlLmxlbmd0aCE9M0Q9M0QrZS5sZW5ndGgmJnAua2U9CnlzKGUpLGk9
M0Qocnx8ZSkubGVuZ3RoLHMsbztmb3Iocz0zRDA7czxpO3MrKyl7bz0zRHI/cltzXTpzO2lmKHQo
ZVtvXSxvLGUpKT0KcmV0dXJuITB9cmV0dXJuITF9LHAuY29udGFpbnM9M0RwLmluY2x1ZGU9M0Rm
dW5jdGlvbihlLHQpe3JldHVybiBlPTNEPTNEbnVsPQpsPyExOihlLmxlbmd0aCE9M0Q9M0QrZS5s
ZW5ndGgmJihlPTNEcC52YWx1ZXMoZSkpLHAuaW5kZXhPZihlLHQpPj0zRDApfSxwLmk9Cm52b2tl
PTNEZnVuY3Rpb24oZSx0KXt2YXIgbj0zRG8uY2FsbChhcmd1bWVudHMsMikscj0zRHAuaXNGdW5j
dGlvbih0KTtyZXR1cj0KbiBwLm1hcChlLGZ1bmN0aW9uKGUpe3JldHVybihyP3Q6ZVt0XSkuYXBw
bHkoZSxuKX0pfSxwLnBsdWNrPTNEZnVuY3Rpb24oZSx0PQope3JldHVybiBwLm1hcChlLHAucHJv
cGVydHkodCkpfSxwLndoZXJlPTNEZnVuY3Rpb24oZSx0KXtyZXR1cm4gcC5maWx0ZXIoZSw9CnAu
bWF0Y2hlcyh0KSl9LHAuZmluZFdoZXJlPTNEZnVuY3Rpb24oZSx0KXtyZXR1cm4gcC5maW5kKGUs
cC5tYXRjaGVzKHQpKX0scD0KLm1heD0zRGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0zRC1JbmZpbml0
eSxpPTNELUluZmluaXR5LHMsbztpZih0PTNEPTNEbnVsbCYmPQplIT0zRG51bGwpe2U9M0RlLmxl
bmd0aD0zRD0zRD0zRCtlLmxlbmd0aD9lOnAudmFsdWVzKGUpO2Zvcih2YXIgdT0zRDAsYT0zRGU9
Ci5sZW5ndGg7dTxhO3UrKylzPTNEZVt1XSxzPnImJihyPTNEcyl9ZWxzZSB0PTNEcC5pdGVyYXRl
ZSh0LG4pLHAuZWFjaChlLGZ1bj0KY3Rpb24oZSxuLHMpe289M0R0KGUsbixzKTtpZihvPml8fG89
M0Q9M0Q9M0QtSW5maW5pdHkmJnI9M0Q9M0Q9M0QtSW5maW5pdHkpPQpyPTNEZSxpPTNEb30pO3Jl
dHVybiByfSxwLm1pbj0zRGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0zREluZmluaXR5LGk9M0RJbmZp
bmk9CnR5LHMsbztpZih0PTNEPTNEbnVsbCYmZSE9M0RudWxsKXtlPTNEZS5sZW5ndGg9M0Q9M0Q9
M0QrZS5sZW5ndGg/ZTpwLnZhbHVlcz0KKGUpO2Zvcih2YXIgdT0zRDAsYT0zRGUubGVuZ3RoO3U8
YTt1Kyspcz0zRGVbdV0sczxyJiYocj0zRHMpfWVsc2UgdD0zRHAuaXRlPQpyYXRlZSh0LG4pLHAu
ZWFjaChlLGZ1bmN0aW9uKGUsbixzKXtvPTNEdChlLG4scyk7aWYobzxpfHxvPTNEPTNEPTNESW5m
aW5pdHk9CiYmcj0zRD0zRD0zREluZmluaXR5KXI9M0RlLGk9M0RvfSk7cmV0dXJuIHJ9LHAuc2h1
ZmZsZT0zRGZ1bmN0aW9uKGUpe3ZhciB0PQo9M0RlJiZlLmxlbmd0aD0zRD0zRD0zRCtlLmxlbmd0
aD9lOnAudmFsdWVzKGUpLG49M0R0Lmxlbmd0aCxyPTNEQXJyYXkobik7Zm89CnIodmFyIGk9M0Qw
LHM7aTxuO2krKylzPTNEcC5yYW5kb20oMCxpKSxzIT0zRD0zRGkmJihyW2ldPTNEcltzXSkscltz
XT0zRHRbaT0KXTtyZXR1cm4gcn0scC5zYW1wbGU9M0RmdW5jdGlvbihlLHQsbil7cmV0dXJuIHQ9
M0Q9M0RudWxsfHxuPyhlLmxlbmd0aCE9M0Q9Cj0zRCtlLmxlbmd0aCYmKGU9M0RwLnZhbHVlcyhl
KSksZVtwLnJhbmRvbShlLmxlbmd0aC0xKV0pOnAuc2h1ZmZsZShlKS5zbGljZT0KKDAsTWF0aC5t
YXgoMCx0KSl9LHAuc29ydEJ5PTNEZnVuY3Rpb24oZSx0LG4pe3JldHVybiB0PTNEcC5pdGVyYXRl
ZSh0LG4pLHAuPQpwbHVjayhwLm1hcChlLGZ1bmN0aW9uKGUsbixyKXtyZXR1cm57dmFsdWU6ZSxp
bmRleDpuLGNyaXRlcmlhOnQoZSxuLHIpfX0pLnM9Cm9ydChmdW5jdGlvbihlLHQpe3ZhciBuPTNE
ZS5jcml0ZXJpYSxyPTNEdC5jcml0ZXJpYTtpZihuIT0zRD0zRHIpe2lmKG4+cnx8bj0KPTNEPTNE
PTNEdm9pZCAwKXJldHVybiAxO2lmKG48cnx8cj0zRD0zRD0zRHZvaWQgMClyZXR1cm4tMX1yZXR1
cm4gZS5pbmRleC10PQouaW5kZXh9KSwidmFsdWUiKX07dmFyIG09M0RmdW5jdGlvbihlKXtyZXR1
cm4gZnVuY3Rpb24odCxuLHIpe3ZhciBpPTNEe307cmU9CnR1cm4gbj0zRHAuaXRlcmF0ZWUobixy
KSxwLmVhY2godCxmdW5jdGlvbihyLHMpe3ZhciBvPTNEbihyLHMsdCk7ZShpLHIsbyl9KT0KLGl9
fTtwLmdyb3VwQnk9M0RtKGZ1bmN0aW9uKGUsdCxuKXtwLmhhcyhlLG4pP2Vbbl0ucHVzaCh0KTpl
W25dPTNEW3RdfSkscC5pPQpuZGV4Qnk9M0RtKGZ1bmN0aW9uKGUsdCxuKXtlW25dPTNEdH0pLHAu
Y291bnRCeT0zRG0oZnVuY3Rpb24oZSx0LG4pe3AuaGFzKGU9CixuKT9lW25dKys6ZVtuXT0zRDF9
KSxwLnNvcnRlZEluZGV4PTNEZnVuY3Rpb24oZSx0LG4scil7bj0zRHAuaXRlcmF0ZWUobixyLD0K
MSk7dmFyIGk9M0RuKHQpLHM9M0QwLG89M0RlLmxlbmd0aDt3aGlsZShzPG8pe3ZhciB1PTNEcytv
Pj4+MTtuKGVbdV0pPGk/cz0KPTNEdSsxOm89M0R1fXJldHVybiBzfSxwLnRvQXJyYXk9M0RmdW5j
dGlvbihlKXtyZXR1cm4gZT9wLmlzQXJyYXkoZSk/by5jYWxsPQooZSk6ZS5sZW5ndGg9M0Q9M0Q9
M0QrZS5sZW5ndGg/cC5tYXAoZSxwLmlkZW50aXR5KTpwLnZhbHVlcyhlKTpbXX0scC5zaXplPQo9
M0RmdW5jdGlvbihlKXtyZXR1cm4gZT0zRD0zRG51bGw/MDplLmxlbmd0aD0zRD0zRD0zRCtlLmxl
bmd0aD9lLmxlbmd0aDpwLms9CmV5cyhlKS5sZW5ndGh9LHAucGFydGl0aW9uPTNEZnVuY3Rpb24o
ZSx0LG4pe3Q9M0RwLml0ZXJhdGVlKHQsbik7dmFyIHI9M0RbXT0KLGk9M0RbXTtyZXR1cm4gcC5l
YWNoKGUsZnVuY3Rpb24oZSxuLHMpeyh0KGUsbixzKT9yOmkpLnB1c2goZSl9KSxbcixpXX0scC5m
PQppcnN0PTNEcC5oZWFkPTNEcC50YWtlPTNEZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPTNEPTNE
bnVsbD92b2lkIDA6dD0zRD0zRG49CnVsbHx8bj9lWzBdOnQ8MD9bXTpvLmNhbGwoZSwwLHQpfSxw
LmluaXRpYWw9M0RmdW5jdGlvbihlLHQsbil7cmV0dXJuIG8uY2FsbD0KKGUsMCxNYXRoLm1heCgw
LGUubGVuZ3RoLSh0PTNEPTNEbnVsbHx8bj8xOnQpKSl9LHAubGFzdD0zRGZ1bmN0aW9uKGUsdCxu
KXtyPQpldHVybiBlPTNEPTNEbnVsbD92b2lkIDA6dD0zRD0zRG51bGx8fG4/ZVtlLmxlbmd0aC0x
XTpvLmNhbGwoZSxNYXRoLm1heChlLmw9CmVuZ3RoLXQsMCkpfSxwLnJlc3Q9M0RwLnRhaWw9M0Rw
LmRyb3A9M0RmdW5jdGlvbihlLHQsbil7cmV0dXJuIG8uY2FsbChlLHQ9Cj0zRD0zRG51bGx8fG4/
MTp0KX0scC5jb21wYWN0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIHAuZmlsdGVyKGUscC5pZGVudGl0
eSl9Oz0KdmFyIGc9M0RmdW5jdGlvbihlLHQsbixyKXtpZih0JiZwLmV2ZXJ5KGUscC5pc0FycmF5
KSlyZXR1cm4gdS5hcHBseShyLGUpO2ZvPQpyKHZhciBpPTNEMCxvPTNEZS5sZW5ndGg7aTxvO2kr
Kyl7dmFyIGE9M0RlW2ldOyFwLmlzQXJyYXkoYSkmJiFwLmlzQXJndW1lbnQ9CnMoYSk/bnx8ci5w
dXNoKGEpOnQ/cy5hcHBseShyLGEpOmcoYSx0LG4scil9cmV0dXJuIHJ9O3AuZmxhdHRlbj0zRGZ1
bmN0aW9uKD0KZSx0KXtyZXR1cm4gZyhlLHQsITEsW10pfSxwLndpdGhvdXQ9M0RmdW5jdGlvbihl
KXtyZXR1cm4gcC5kaWZmZXJlbmNlKGUsby5jPQphbGwoYXJndW1lbnRzLDEpKX0scC51bmlxPTNE
cC51bmlxdWU9M0RmdW5jdGlvbihlLHQsbixyKXtpZihlPTNEPTNEbnVsbClyZXQ9CnVybltdO3Au
aXNCb29sZWFuKHQpfHwocj0zRG4sbj0zRHQsdD0zRCExKSxuIT0zRG51bGwmJihuPTNEcC5pdGVy
YXRlZShuLHIpKT0KO3ZhciBpPTNEW10scz0zRFtdO2Zvcih2YXIgbz0zRDAsdT0zRGUubGVuZ3Ro
O288dTtvKyspe3ZhciBhPTNEZVtvXTtpZih0KSghPQpvfHxzIT0zRD0zRGEpJiZpLnB1c2goYSks
cz0zRGE7ZWxzZSBpZihuKXt2YXIgZj0zRG4oYSxvLGUpO3AuaW5kZXhPZihzLGYpPDA9CiYmKHMu
cHVzaChmKSxpLnB1c2goYSkpfWVsc2UgcC5pbmRleE9mKGksYSk8MCYmaS5wdXNoKGEpfXJldHVy
biBpfSxwLnVuaW9uPQo9M0RmdW5jdGlvbigpe3JldHVybiBwLnVuaXEoZyhhcmd1bWVudHMsITAs
ITAsW10pKX0scC5pbnRlcnNlY3Rpb249M0RmdW5jdGk9Cm9uKGUpe2lmKGU9M0Q9M0RudWxsKXJl
dHVybltdO3ZhciB0PTNEW10sbj0zRGFyZ3VtZW50cy5sZW5ndGg7Zm9yKHZhciByPTNEMD0KLGk9
M0RlLmxlbmd0aDtyPGk7cisrKXt2YXIgcz0zRGVbcl07aWYocC5jb250YWlucyh0LHMpKWNvbnRp
bnVlO2Zvcih2YXIgbz0KPTNEMTtvPG47bysrKWlmKCFwLmNvbnRhaW5zKGFyZ3VtZW50c1tvXSxz
KSlicmVhaztvPTNEPTNEPTNEbiYmdC5wdXNoKHMpfXJlPQp0dXJuIHR9LHAuZGlmZmVyZW5jZT0z
RGZ1bmN0aW9uKGUpe3ZhciB0PTNEZyhvLmNhbGwoYXJndW1lbnRzLDEpLCEwLCEwLFtdKTs9CnJl
dHVybiBwLmZpbHRlcihlLGZ1bmN0aW9uKGUpe3JldHVybiFwLmNvbnRhaW5zKHQsZSl9KX0scC56
aXA9M0RmdW5jdGlvbihlKT0Ke2lmKGU9M0Q9M0RudWxsKXJldHVybltdO3ZhciB0PTNEcC5tYXgo
YXJndW1lbnRzLCJsZW5ndGgiKS5sZW5ndGgsbj0zREFycmF5PQoodCk7Zm9yKHZhciByPTNEMDty
PHQ7cisrKW5bcl09M0RwLnBsdWNrKGFyZ3VtZW50cyxyKTtyZXR1cm4gbn0scC5vYmplY3Q9M0Q9
CmZ1bmN0aW9uKGUsdCl7aWYoZT0zRD0zRG51bGwpcmV0dXJue307dmFyIG49M0R7fTtmb3IodmFy
IHI9M0QwLGk9M0RlLmxlbmd0aD0KO3I8aTtyKyspdD9uW2Vbcl1dPTNEdFtyXTpuW2Vbcl1bMF1d
PTNEZVtyXVsxXTtyZXR1cm4gbn0scC5pbmRleE9mPTNEZnVuY3RpPQpvbihlLHQsbil7aWYoZT0z
RD0zRG51bGwpcmV0dXJuLTE7dmFyIHI9M0QwLGk9M0RlLmxlbmd0aDtpZihuKXtpZih0eXBlb2Yg
biE9Cj0zRCJudW1iZXIiKXJldHVybiByPTNEcC5zb3J0ZWRJbmRleChlLHQpLGVbcl09M0Q9M0Q9
M0R0P3I6LTE7cj0zRG48MD9NYXRoLj0KbWF4KDAsaStuKTpufWZvcig7cjxpO3IrKylpZihlW3Jd
PTNEPTNEPTNEdClyZXR1cm4gcjtyZXR1cm4tMX0scC5sYXN0SW5kZXhPPQpmPTNEZnVuY3Rpb24o
ZSx0LG4pe2lmKGU9M0Q9M0RudWxsKXJldHVybi0xO3ZhciByPTNEZS5sZW5ndGg7dHlwZW9mIG49
M0Q9M0Q9CiJudW1iZXIiJiYocj0zRG48MD9yK24rMTpNYXRoLm1pbihyLG4rMSkpO3doaWxlKC0t
cj49M0QwKWlmKGVbcl09M0Q9M0Q9M0R0KT0KcmV0dXJuIHI7cmV0dXJuLTF9LHAucmFuZ2U9M0Rm
dW5jdGlvbihlLHQsbil7YXJndW1lbnRzLmxlbmd0aDw9M0QxJiYodD0zRGV8PQp8MCxlPTNEMCks
bj0zRG58fDE7dmFyIHI9M0RNYXRoLm1heChNYXRoLmNlaWwoKHQtZSkvbiksMCksaT0zREFycmF5
KHIpO2Zvcig9CnZhciBzPTNEMDtzPHI7cysrLGUrPTNEbilpW3NdPTNEZTtyZXR1cm4gaX07dmFy
IHk9M0RmdW5jdGlvbigpe307cC5iaW5kPTNEZj0KdW5jdGlvbihlLHQpe3ZhciBuLHI7aWYoaCYm
ZS5iaW5kPTNEPTNEPTNEaClyZXR1cm4gaC5hcHBseShlLG8uY2FsbChhcmd1bWVuPQp0cywxKSk7
aWYoIXAuaXNGdW5jdGlvbihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJCaW5kIG11c3QgYmUgY2Fs
bGVkIG9uIGEgZnU9Cm5jdGlvbiIpO3JldHVybiBuPTNEby5jYWxsKGFyZ3VtZW50cywyKSxyPTNE
ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2Ygcj0KKXt5LnByb3RvdHlwZT0zRGUucHJvdG90
eXBlO3ZhciBpPTNEbmV3IHk7eS5wcm90b3R5cGU9M0RudWxsO3ZhciBzPTNEZS5hcHBsPQp5KGks
bi5jb25jYXQoby5jYWxsKGFyZ3VtZW50cykpKTtyZXR1cm4gcC5pc09iamVjdChzKT9zOml9cmV0
dXJuIGUuYXBwbHkodCw9Cm4uY29uY2F0KG8uY2FsbChhcmd1bWVudHMpKSl9LHJ9LHAucGFydGlh
bD0zRGZ1bmN0aW9uKGUpe3ZhciB0PTNEby5jYWxsKGFyZz0KdW1lbnRzLDEpO3JldHVybiBmdW5j
dGlvbigpe3ZhciBuPTNEMCxyPTNEdC5zbGljZSgpO2Zvcih2YXIgaT0zRDAscz0zRHIubGVuPQpn
dGg7aTxzO2krKylyW2ldPTNEPTNEPTNEcCYmKHJbaV09M0Rhcmd1bWVudHNbbisrXSk7d2hpbGUo
bjxhcmd1bWVudHMubGVuZ3Q9Cmgpci5wdXNoKGFyZ3VtZW50c1tuKytdKTtyZXR1cm4gZS5hcHBs
eSh0aGlzLHIpfX0scC5iaW5kQWxsPTNEZnVuY3Rpb24oZSl7dj0KYXIgdCxuPTNEYXJndW1lbnRz
Lmxlbmd0aCxyO2lmKG48PTNEMSl0aHJvdyBuZXcgRXJyb3IoImJpbmRBbGwgbXVzdCBiZSBwYXNz
PQplZCBmdW5jdGlvbiBuYW1lcyIpO2Zvcih0PTNEMTt0PG47dCsrKXI9M0Rhcmd1bWVudHNbdF0s
ZVtyXT0zRHAuYmluZChlW3JdLGU9Cik7cmV0dXJuIGV9LHAubWVtb2l6ZT0zRGZ1bmN0aW9uKGUs
dCl7dmFyIG49M0RmdW5jdGlvbihyKXt2YXIgaT0zRG4uY2FjaGUscz0KPTNEdD90LmFwcGx5KHRo
aXMsYXJndW1lbnRzKTpyO3JldHVybiBwLmhhcyhpLHMpfHwoaVtzXT0zRGUuYXBwbHkodGhpcyxh
cmd1PQptZW50cykpLGlbc119O3JldHVybiBuLmNhY2hlPTNEe30sbn0scC5kZWxheT0zRGZ1bmN0
aW9uKGUsdCl7dmFyIG49M0RvLmNhbGw9Cihhcmd1bWVudHMsMik7cmV0dXJuIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseShudWxsLG4pfSx0KX0scC5kZT0KZmVyPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIHAuZGVsYXkuYXBwbHkocCxbZSwxXS5jb25jYXQoby5jYWxsKGFyZ3VtZW50
cywxKSkpPQp9LHAudGhyb3R0bGU9M0RmdW5jdGlvbihlLHQsbil7dmFyIHIsaSxzLG89M0RudWxs
LHU9M0QwO258fChuPTNEe30pO3ZhciBhPQo9M0RmdW5jdGlvbigpe3U9M0RuLmxlYWRpbmc9M0Q9
M0Q9M0QhMT8wOnAubm93KCksbz0zRG51bGwscz0zRGUuYXBwbHkocixpKSw9Cm98fChyPTNEaT0z
RG51bGwpfTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZj0zRHAubm93KCk7IXUmJm4ubGVhZGluZz0z
RD0zRD0zRD0KITEmJih1PTNEZik7dmFyIGw9M0R0LShmLXUpO3JldHVybiByPTNEdGhpcyxpPTNE
YXJndW1lbnRzLGw8PTNEMHx8bD50PyhjbGVhPQpyVGltZW91dChvKSxvPTNEbnVsbCx1PTNEZixz
PTNEZS5hcHBseShyLGkpLG98fChyPTNEaT0zRG51bGwpKTohbyYmbi50cmFpbGk9Cm5nIT0zRD0z
RCExJiYobz0zRHNldFRpbWVvdXQoYSxsKSksc319LHAuZGVib3VuY2U9M0RmdW5jdGlvbihlLHQs
bil7dmFyIHIsaT0KLHMsbyx1LGE9M0RmdW5jdGlvbigpe3ZhciBmPTNEcC5ub3coKS1vO2Y8dCYm
Zj4wP3I9M0RzZXRUaW1lb3V0KGEsdC1mKToocj0KPTNEbnVsbCxufHwodT0zRGUuYXBwbHkocyxp
KSxyfHwocz0zRGk9M0RudWxsKSkpfTtyZXR1cm4gZnVuY3Rpb24oKXtzPTNEdGhpPQpzLGk9M0Rh
cmd1bWVudHMsbz0zRHAubm93KCk7dmFyIGY9M0RuJiYhcjtyZXR1cm4gcnx8KHI9M0RzZXRUaW1l
b3V0KGEsdCkpLGY9CiYmKHU9M0RlLmFwcGx5KHMsaSkscz0zRGk9M0RudWxsKSx1fX0scC53cmFw
PTNEZnVuY3Rpb24oZSx0KXtyZXR1cm4gcC5wYXJ0aT0KYWwodCxlKX0scC5uZWdhdGU9M0RmdW5j
dGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4hZS5hcHBseSh0aGlzLGFyZ3VtPQplbnRz
KX19LHAuY29tcG9zZT0zRGZ1bmN0aW9uKCl7dmFyIGU9M0Rhcmd1bWVudHMsdD0zRGUubGVuZ3Ro
LTE7cmV0dXJuIGZ1bmM9CnRpb24oKXt2YXIgbj0zRHQscj0zRGVbdF0uYXBwbHkodGhpcyxhcmd1
bWVudHMpO3doaWxlKG4tLSlyPTNEZVtuXS5jYWxsKHRoaT0KcyxyKTtyZXR1cm4gcn19LHAuYWZ0
ZXI9M0RmdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbigpe2lmKC0tZTwxKXJldHVybiB0PQou
YXBwbHkodGhpcyxhcmd1bWVudHMpfX0scC5iZWZvcmU9M0RmdW5jdGlvbihlLHQpe3ZhciBuO3Jl
dHVybiBmdW5jdGlvbigpe3I9CmV0dXJuLS1lPjA/bj0zRHQuYXBwbHkodGhpcyxhcmd1bWVudHMp
OnQ9M0RudWxsLG59fSxwLm9uY2U9M0RwLnBhcnRpYWwocC5iZT0KZm9yZSwyKSxwLmtleXM9M0Rm
dW5jdGlvbihlKXtpZighcC5pc09iamVjdChlKSlyZXR1cm5bXTtpZihjKXJldHVybiBjKGUpO3Zh
PQpyIHQ9M0RbXTtmb3IodmFyIG4gaW4gZSlwLmhhcyhlLG4pJiZ0LnB1c2gobik7cmV0dXJuIHR9
LHAudmFsdWVzPTNEZnVuY3Rpb249CihlKXt2YXIgdD0zRHAua2V5cyhlKSxuPTNEdC5sZW5ndGgs
cj0zREFycmF5KG4pO2Zvcih2YXIgaT0zRDA7aTxuO2krKylyW2ldPQo9M0RlW3RbaV1dO3JldHVy
biByfSxwLnBhaXJzPTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0RwLmtleXMoZSksbj0zRHQubGVuZ3Ro
LHI9Cj0zREFycmF5KG4pO2Zvcih2YXIgaT0zRDA7aTxuO2krKylyW2ldPTNEW3RbaV0sZVt0W2ld
XV07cmV0dXJuIHJ9LHAuaW52ZXJ0PQo9M0RmdW5jdGlvbihlKXt2YXIgdD0zRHt9LG49M0RwLmtl
eXMoZSk7Zm9yKHZhciByPTNEMCxpPTNEbi5sZW5ndGg7cjxpO3IrKyk9CnRbZVtuW3JdXV09M0Ru
W3JdO3JldHVybiB0fSxwLmZ1bmN0aW9ucz0zRHAubWV0aG9kcz0zRGZ1bmN0aW9uKGUpe3ZhciB0
PTNEWz0KXTtmb3IodmFyIG4gaW4gZSlwLmlzRnVuY3Rpb24oZVtuXSkmJnQucHVzaChuKTtyZXR1
cm4gdC5zb3J0KCl9LHAuZXh0ZW5kPTNEPQpmdW5jdGlvbihlKXtpZighcC5pc09iamVjdChlKSly
ZXR1cm4gZTt2YXIgdCxuO2Zvcih2YXIgcj0zRDEsaT0zRGFyZ3VtZW50cy49Cmxlbmd0aDtyPGk7
cisrKXt0PTNEYXJndW1lbnRzW3JdO2ZvcihuIGluIHQpZi5jYWxsKHQsbikmJihlW25dPTNEdFtu
XSl9cmV0dT0Kcm4gZX0scC5waWNrPTNEZnVuY3Rpb24oZSx0LG4pe3ZhciByPTNEe30saTtpZihl
PTNEPTNEbnVsbClyZXR1cm4gcjtpZihwLmlzPQpGdW5jdGlvbih0KSl7dD0zRGQodCxuKTtmb3Io
aSBpbiBlKXt2YXIgcz0zRGVbaV07dChzLGksZSkmJihyW2ldPTNEcyl9fWVsc2U9Cnt2YXIgYT0z
RHUuYXBwbHkoW10sby5jYWxsKGFyZ3VtZW50cywxKSk7ZT0zRG5ldyBPYmplY3QoZSk7Zm9yKHZh
ciBmPTNEMCxsPQo9M0RhLmxlbmd0aDtmPGw7ZisrKWk9M0RhW2ZdLGkgaW4gZSYmKHJbaV09M0Rl
W2ldKX1yZXR1cm4gcn0scC5vbWl0PTNEZnVuY3Q9CmlvbihlLHQsbil7aWYocC5pc0Z1bmN0aW9u
KHQpKXQ9M0RwLm5lZ2F0ZSh0KTtlbHNle3ZhciByPTNEcC5tYXAodS5hcHBseShbXT0KLG8uY2Fs
bChhcmd1bWVudHMsMSkpLFN0cmluZyk7dD0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIXAuY29udGFp
bnMocix0KX19cmV0PQp1cm4gcC5waWNrKGUsdCxuKX0scC5kZWZhdWx0cz0zRGZ1bmN0aW9uKGUp
e2lmKCFwLmlzT2JqZWN0KGUpKXJldHVybiBlO2Zvcig9CnZhciB0PTNEMSxuPTNEYXJndW1lbnRz
Lmxlbmd0aDt0PG47dCsrKXt2YXIgcj0zRGFyZ3VtZW50c1t0XTtmb3IodmFyIGkgaW4gcj0KKWVb
aV09M0Q9M0Q9M0R2b2lkIDAmJihlW2ldPTNEcltpXSl9cmV0dXJuIGV9LHAuY2xvbmU9M0RmdW5j
dGlvbihlKXtyZXR1cm4gPQpwLmlzT2JqZWN0KGUpP3AuaXNBcnJheShlKT9lLnNsaWNlKCk6cC5l
eHRlbmQoe30sZSk6ZX0scC50YXA9M0RmdW5jdGlvbihlLHQ9Cil7cmV0dXJuIHQoZSksZX07dmFy
IGI9M0RmdW5jdGlvbihlLHQsbixyKXtpZihlPTNEPTNEPTNEdClyZXR1cm4gZSE9M0Q9M0QwfD0K
fDEvZT0zRD0zRD0zRDEvdDtpZihlPTNEPTNEbnVsbHx8dD0zRD0zRG51bGwpcmV0dXJuIGU9M0Q9
M0Q9M0R0O2UgaW5zdGFuY2VvPQpmIHAmJihlPTNEZS5fd3JhcHBlZCksdCBpbnN0YW5jZW9mIHAm
Jih0PTNEdC5fd3JhcHBlZCk7dmFyIGk9M0RhLmNhbGwoZSk7aWY9CihpIT0zRD0zRGEuY2FsbCh0
KSlyZXR1cm4hMTtzd2l0Y2goaSl7Y2FzZSJbb2JqZWN0IFJlZ0V4cF0iOmNhc2UiW29iamVjdCBT
dD0KcmluZ10iOnJldHVybiIiK2U9M0Q9M0QiIit0O2Nhc2UiW29iamVjdCBOdW1iZXJdIjppZigr
ZSE9M0Q9M0QrZSlyZXR1cm4rdCE9Cj0zRD0zRCt0O3JldHVybitlPTNEPTNEPTNEMD8xLytlPTNE
PTNEPTNEMS90OitlPTNEPTNEPTNEK3Q7Y2FzZSJbb2JqZWN0IERhdD0KZV0iOmNhc2UiW29iamVj
dCBCb29sZWFuXSI6cmV0dXJuK2U9M0Q9M0Q9M0QrdH1pZih0eXBlb2YgZSE9M0Qib2JqZWN0Inx8
dHlwPQplb2YgdCE9M0Qib2JqZWN0IilyZXR1cm4hMTt2YXIgcz0zRG4ubGVuZ3RoO3doaWxlKHMt
LSlpZihuW3NdPTNEPTNEPTNEZSlyZXQ9CnVybiByW3NdPTNEPTNEPTNEdDt2YXIgbz0zRGUuY29u
c3RydWN0b3IsdT0zRHQuY29uc3RydWN0b3I7aWYobyE9M0Q9M0R1JiYiYz0Kb25zdHJ1Y3RvciJp
biBlJiYiY29uc3RydWN0b3IiaW4gdCYmIShwLmlzRnVuY3Rpb24obykmJm8gaW5zdGFuY2VvZiBv
JiZwLmlzPQpGdW5jdGlvbih1KSYmdSBpbnN0YW5jZW9mIHUpKXJldHVybiExO24ucHVzaChlKSxy
LnB1c2godCk7dmFyIGYsbDtpZihpPTNEPQo9M0Q9M0QiW29iamVjdCBBcnJheV0iKXtmPTNEZS5s
ZW5ndGgsbD0zRGY9M0Q9M0Q9M0R0Lmxlbmd0aDtpZihsKXdoaWxlKGYtLSk9CmlmKCEobD0zRGIo
ZVtmXSx0W2ZdLG4scikpKWJyZWFrfWVsc2V7dmFyIGM9M0RwLmtleXMoZSksaDtmPTNEYy5sZW5n
dGgsbD0zRD0KcC5rZXlzKHQpLmxlbmd0aD0zRD0zRD0zRGY7aWYobCl3aGlsZShmLS0pe2g9M0Rj
W2ZdO2lmKCEobD0zRHAuaGFzKHQsaCkmJmIoPQplW2hdLHRbaF0sbixyKSkpYnJlYWt9fXJldHVy
biBuLnBvcCgpLHIucG9wKCksbH07cC5pc0VxdWFsPTNEZnVuY3Rpb24oZSx0KXs9CnJldHVybiBi
KGUsdCxbXSxbXSl9LHAuaXNFbXB0eT0zRGZ1bmN0aW9uKGUpe2lmKGU9M0Q9M0RudWxsKXJldHVy
biEwO2lmKHAuaT0Kc0FycmF5KGUpfHxwLmlzU3RyaW5nKGUpfHxwLmlzQXJndW1lbnRzKGUpKXJl
dHVybiBlLmxlbmd0aD0zRD0zRD0zRDA7Zm9yKHZhPQpyIHQgaW4gZSlpZihwLmhhcyhlLHQpKXJl
dHVybiExO3JldHVybiEwfSxwLmlzRWxlbWVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiE9CiFlJiZl
Lm5vZGVUeXBlPTNEPTNEPTNEMX0scC5pc0FycmF5PTNEbHx8ZnVuY3Rpb24oZSl7cmV0dXJuIGEu
Y2FsbChlKT0zRD0zRD0KPTNEIltvYmplY3QgQXJyYXldIn0scC5pc09iamVjdD0zRGZ1bmN0aW9u
KGUpe3ZhciB0PTNEdHlwZW9mIGU7cmV0dXJuIHQ9M0Q9Cj0zRD0zRCJmdW5jdGlvbiJ8fHQ9M0Q9
M0Q9M0Qib2JqZWN0IiYmISFlfSxwLmVhY2goWyJBcmd1bWVudHMiLCJGdW5jdGlvbiIsIj0KU3Ry
aW5nIiwiTnVtYmVyIiwiRGF0ZSIsIlJlZ0V4cCJdLGZ1bmN0aW9uKGUpe3BbImlzIitlXT0zRGZ1
bmN0aW9uKHQpe3JldHVyPQpuIGEuY2FsbCh0KT0zRD0zRD0zRCJbb2JqZWN0ICIrZSsiXSJ9fSks
cC5pc0FyZ3VtZW50cyhhcmd1bWVudHMpfHwocC5pc0FyZ3U9Cm1lbnRzPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIHAuaGFzKGUsImNhbGxlZSIpfSksdHlwZW9mIC8uLyE9M0QiZnVuY3Rpb24iJiYocD0K
LmlzRnVuY3Rpb249M0RmdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9M0Q9M0QiZnVuY3Rpb24i
fHwhMX0pLHAuaXNGaW5pdGU9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBpc0Zpbml0ZShlKSYmIWlz
TmFOKHBhcnNlRmxvYXQoZSkpfSxwLmlzTmFOPTNEZnVuY3Rpbz0KbihlKXtyZXR1cm4gcC5pc051
bWJlcihlKSYmZSE9M0Q9M0QrZX0scC5pc0Jvb2xlYW49M0RmdW5jdGlvbihlKXtyZXR1cm4gZT0K
PTNEPTNEPTNEITB8fGU9M0Q9M0Q9M0QhMXx8YS5jYWxsKGUpPTNEPTNEPTNEIltvYmplY3QgQm9v
bGVhbl0ifSxwLmlzTnVsbD0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGU9M0Q9M0Q9M0RudWxsfSxw
LmlzVW5kZWZpbmVkPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGU9Cj0zRD0zRD0zRHZvaWQgMH0scC5o
YXM9M0RmdW5jdGlvbihlLHQpe3JldHVybiBlIT0zRG51bGwmJmYuY2FsbChlLHQpfSxwLm5vQz0K
b25mbGljdD0zRGZ1bmN0aW9uKCl7cmV0dXJuIGUuXz0zRHQsdGhpc30scC5pZGVudGl0eT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBlPQp9LHAuY29uc3RhbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gZnVu
Y3Rpb24oKXtyZXR1cm4gZX19LHAubm9vcD0zRGZ1bmN0aW9uKCk9Cnt9LHAucHJvcGVydHk9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHRbZV19fSxwLm1hdGNoZXM9M0Rm
dT0KbmN0aW9uKGUpe3ZhciB0PTNEcC5wYWlycyhlKSxuPTNEdC5sZW5ndGg7cmV0dXJuIGZ1bmN0
aW9uKGUpe2lmKGU9M0Q9M0RudWxsPQopcmV0dXJuIW47ZT0zRG5ldyBPYmplY3QoZSk7Zm9yKHZh
ciByPTNEMDtyPG47cisrKXt2YXIgaT0zRHRbcl0scz0zRGlbMF07aWY9CihpWzFdIT0zRD0zRGVb
c118fCEocyBpbiBlKSlyZXR1cm4hMX1yZXR1cm4hMH19LHAudGltZXM9M0RmdW5jdGlvbihlLHQs
bil7dj0KYXIgcj0zREFycmF5KE1hdGgubWF4KDAsZSkpO3Q9M0RkKHQsbiwxKTtmb3IodmFyIGk9
M0QwO2k8ZTtpKyspcltpXT0zRHQoaSk7PQpyZXR1cm4gcn0scC5yYW5kb209M0RmdW5jdGlvbihl
LHQpe3JldHVybiB0PTNEPTNEbnVsbCYmKHQ9M0RlLGU9M0QwKSxlK01hdGg9Ci5mbG9vcihNYXRo
LnJhbmRvbSgpKih0LWUrMSkpfSxwLm5vdz0zRERhdGUubm93fHxmdW5jdGlvbigpe3JldHVybihu
ZXcgRGF0ZT0KKS5nZXRUaW1lKCl9O3ZhciB3PTNEeyImIjoiJmFtcDsiLCI8IjoiJmx0OyIsIj4i
OiImZ3Q7IiwnIic6IiZxdW90OyIsIiciOiImPQojeDI3OyIsImAiOiImI3g2MDsifSxFPTNEcC5p
bnZlcnQodyksUz0zRGZ1bmN0aW9uKGUpe3ZhciB0PTNEZnVuY3Rpb24odCl7cmU9CnR1cm4gZVt0
XX0sbj0zRCIoPzoiK3Aua2V5cyhlKS5qb2luKCJ8IikrIikiLHI9M0RSZWdFeHAobiksaT0zRFJl
Z0V4cChuLCJnIj0KKTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGU9M0RlPTNEPTNEbnVsbD8i
IjoiIitlLHIudGVzdChlKT9lLnJlcGxhY2UoaSx0PQopOmV9fTtwLmVzY2FwZT0zRFModykscC51
bmVzY2FwZT0zRFMoRSkscC5yZXN1bHQ9M0RmdW5jdGlvbihlLHQpe2lmKGU9M0Q9M0Q9Cm51bGwp
cmV0dXJuIHZvaWQgMDt2YXIgbj0zRGVbdF07cmV0dXJuIHAuaXNGdW5jdGlvbihuKT9lW3RdKCk6
bn07dmFyIHg9M0QwOz0KcC51bmlxdWVJZD0zRGZ1bmN0aW9uKGUpe3ZhciB0PTNEKyt4KyIiO3Jl
dHVybiBlP2UrdDp0fSxwLnRlbXBsYXRlU2V0dGluZ3M9Cj0zRHtldmFsdWF0ZTovPCUoW1xzXFNd
Kz8pJT4vZyxpbnRlcnBvbGF0ZTovPCU9M0QoW1xzXFNdKz8pJT4vZyxlc2NhcGU6LzwlLT0KKFtc
c1xTXSs/KSU+L2d9O3ZhciBUPTNELyguKV4vLE49M0R7IiciOiInIiwiXFwiOiJcXCIsIlxyIjoi
ciIsIlxuIjoibiIsIlx1PQoyMDI4IjoidTIwMjgiLCJcdTIwMjkiOiJ1MjAyOSJ9LEM9M0QvXFx8
J3xccnxcbnxcdTIwMjh8XHUyMDI5L2csaz0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJuIlxcIitOW2Vd
fTtwLnRlbXBsYXRlPTNEZnVuY3Rpb24oZSx0LG4peyF0JiZuJiYodD0zRG4pLHQ9M0RwLmRlZj0K
YXVsdHMoe30sdCxwLnRlbXBsYXRlU2V0dGluZ3MpO3ZhciByPTNEUmVnRXhwKFsodC5lc2NhcGV8
fFQpLnNvdXJjZSwodC5pbnRlPQpycG9sYXRlfHxUKS5zb3VyY2UsKHQuZXZhbHVhdGV8fFQpLnNv
dXJjZV0uam9pbigifCIpKyJ8JCIsImciKSxpPTNEMCxzPTNEIl89Cl9wKz0zRCciO2UucmVwbGFj
ZShyLGZ1bmN0aW9uKHQsbixyLG8sdSl7cmV0dXJuIHMrPTNEZS5zbGljZShpLHUpLnJlcGxhY2Uo
Qz0KLGspLGk9M0R1K3QubGVuZ3RoLG4/cys9M0QiJytcbigoX190PTNEKCIrbisiKSk9M0Q9M0Ru
dWxsPycnOl8uZXNjYXBlKF9fdCkpPQorXG4nIjpyP3MrPTNEIicrXG4oKF9fdD0zRCgiK3IrIikp
PTNEPTNEbnVsbD8nJzpfX3QpK1xuJyI6byYmKHMrPTNEIic7XG4iK289CisiXG5fX3ArPTNEJyIp
LHR9KSxzKz0zRCInO1xuIix0LnZhcmlhYmxlfHwocz0zRCJ3aXRoKG9ianx8e30pe1xuIitzKyJ9
XG4iKT0KLHM9M0QidmFyIF9fdCxfX3A9M0QnJyxfX2o9M0RBcnJheS5wcm90b3R5cGUuam9pbixw
cmludD0zRGZ1bmN0aW9uKCl7X19wKz0KPTNEX19qLmNhbGwoYXJndW1lbnRzLCcnKTt9O1xuIitz
KyJyZXR1cm4gX19wO1xuIjt0cnl7dmFyIG89M0RuZXcgRnVuY3Rpb24oPQp0LnZhcmlhYmxlfHwi
b2JqIiwiXyIscyl9Y2F0Y2godSl7dGhyb3cgdS5zb3VyY2U9M0RzLHV9dmFyIGE9M0RmdW5jdGlv
bihlKXs9CnJldHVybiBvLmNhbGwodGhpcyxlLHApfSxmPTNEdC52YXJpYWJsZXx8Im9iaiI7cmV0
dXJuIGEuc291cmNlPTNEImZ1bmN0aW9uKD0KIitmKyIpe1xuIitzKyJ9IixhfSxwLmNoYWluPTNE
ZnVuY3Rpb24oZSl7dmFyIHQ9M0RwKGUpO3JldHVybiB0Ll9jaGFpbj0zRCEwPQosdH07dmFyIEw9
M0RmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fY2hhaW4/cChlKS5jaGFpbigpOmV9O3AubWl4aW49
M0RmdW5jdGk9Cm9uKGUpe3AuZWFjaChwLmZ1bmN0aW9ucyhlKSxmdW5jdGlvbih0KXt2YXIgbj0z
RHBbdF09M0RlW3RdO3AucHJvdG90eXBlW3RdPQo9M0RmdW5jdGlvbigpe3ZhciBlPTNEW3RoaXMu
X3dyYXBwZWRdO3JldHVybiBzLmFwcGx5KGUsYXJndW1lbnRzKSxMLmNhbGwodGg9CmlzLG4uYXBw
bHkocCxlKSl9fSl9LHAubWl4aW4ocCkscC5lYWNoKFsicG9wIiwicHVzaCIsInJldmVyc2UiLCJz
aGlmdCIsInNvcj0KdCIsInNwbGljZSIsInVuc2hpZnQiXSxmdW5jdGlvbihlKXt2YXIgdD0zRG5b
ZV07cC5wcm90b3R5cGVbZV09M0RmdW5jdGlvbigpPQp7dmFyIG49M0R0aGlzLl93cmFwcGVkO3Jl
dHVybiB0LmFwcGx5KG4sYXJndW1lbnRzKSwoZT0zRD0zRD0zRCJzaGlmdCJ8fGU9M0Q9Cj0zRD0z
RCJzcGxpY2UiKSYmbi5sZW5ndGg9M0Q9M0Q9M0QwJiZkZWxldGUgblswXSxMLmNhbGwodGhpcyxu
KX19KSxwLmVhY2goWz0KImNvbmNhdCIsImpvaW4iLCJzbGljZSJdLGZ1bmN0aW9uKGUpe3ZhciB0
PTNEbltlXTtwLnByb3RvdHlwZVtlXT0zRGZ1bmN0aW9uPQooKXtyZXR1cm4gTC5jYWxsKHRoaXMs
dC5hcHBseSh0aGlzLl93cmFwcGVkLGFyZ3VtZW50cykpfX0pLHAucHJvdG90eXBlLnZhbHU9CmU9
M0RmdW5jdGlvbigpe3JldHVybiB0aGlzLl93cmFwcGVkfSx0eXBlb2YgZGVmaW5lPTNEPTNEImZ1
bmN0aW9uIiYmZGVmaW5lLj0KYW1kJiZkZWZpbmUoInVuZGVyc2NvcmUiLFtdLGZ1bmN0aW9uKCl7
cmV0dXJuIHB9KX0uY2FsbCh0aGlzKSxkZWZpbmUoImxpYnMvPQp1bmRlcnNjb3JlIixmdW5jdGlv
bihlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgdCxuO3JldHVybiB0fHxlLl99fSh0aGlzKSksZGU9
CmZpbmUoInV0aWxzL3V0aWxzIixbImxpYnMvdW5kZXJzY29yZSJdLGZ1bmN0aW9uKGUpe2Z1bmN0
aW9uIHQoZSxuKXtmb3IodmFyID0KciBpbiBlKXt2YXIgaT0zRGVbcl07aSYmdHlwZW9mIGk9M0Q9
M0Qib2JqZWN0IiYmKG4oaSksdChpLG4pKX19ZnVuY3Rpb24gbihlPQope3JldHVybiAkKCI8ZGl2
Lz4iKS50ZXh0KGUpLmh0bWwoKX1mdW5jdGlvbiByKGUpe2UgaW5zdGFuY2VvZiBBcnJheXx8KGU9
M0Q9CltlXSk7Zm9yKHZhciB0IGluIGUpaWYoWyJOb25lIixudWxsLCJudWxsIix1bmRlZmluZWQs
InVuZGVmaW5lZCJdLmluZGV4T2YoZT0KW3RdKT4tMSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlv
biBpKGUpe3ZhciBlPTNEZS50b1N0cmluZygpO2lmKGUpe2U9M0RlLnJlPQpwbGFjZSgvLC9nLCIs
ICIpO3ZhciB0PTNEZS5sYXN0SW5kZXhPZigiLCAiKTtyZXR1cm4gdCE9M0QtMSYmKGU9M0RlLnN1
YnN0cig9CjAsdCkrIiBvciAiK2Uuc3Vic3RyKHQrMSkpLGV9cmV0dXJuIiJ9ZnVuY3Rpb24gcyhl
KXt0b3AuX191dGlsc19fZ2V0X189M0R0bz0KcC5fX3V0aWxzX19nZXRfX3x8e30sZS5jYWNoZSYm
dG9wLl9fdXRpbHNfX2dldF9fW2UudXJsXT8oZS5zdWNjZXNzJiZlLnN1Y2NlPQpzcyh0b3AuX191
dGlsc19fZ2V0X19bZS51cmxdKSxjb25zb2xlLmRlYnVnKCJ1dGlscy5qczo6Z2V0KCkgLSBGZXRj
aGluZyBmcm89Cm0gY2FjaGUgWyIrZS51cmwrIl0uIikpOm8oe3VybDplLnVybCxkYXRhOmUuZGF0
YSxzdWNjZXNzOmZ1bmN0aW9uKHQpe3RvcC5fXz0KdXRpbHNfX2dldF9fW2UudXJsXT0zRHQsZS5z
dWNjZXNzJiZlLnN1Y2Nlc3ModCl9LGVycm9yOmZ1bmN0aW9uKHQpe2UuZXJyb3ImPQomZS5lcnJv
cih0KX19KX1mdW5jdGlvbiBvKGUpe3ZhciB0PTNEe2NvbnRlbnRUeXBlOiJhcHBsaWNhdGlvbi9q
c29uIix0eXBlOmU9Ci50eXBlfHwiR0VUIixkYXRhOmUuZGF0YXx8e30sdXJsOmUudXJsfTt0LnR5
cGU9M0Q9M0QiR0VUInx8dC50eXBlPTNEPTNEIkRFTD0KRVRFIj8odC51cmwuaW5kZXhPZigiPyIp
PTNEPTNELTE/dC51cmwrPTNEIj8iOnQudXJsKz0zRCImIix0LnVybD0zRHQudXJsKyQuPQpwYXJh
bSh0LmRhdGEpLHQuZGF0YT0zRG51bGwpOih0LmRhdGFUeXBlPTNEImpzb24iLHQudXJsPTNEdC51
cmwsdC5kYXRhPTNESlM9Ck9OLnN0cmluZ2lmeSh0LmRhdGEpKSwkLmFqYXgodCkuZG9uZShmdW5j
dGlvbih0KXtpZih0eXBlb2YgdD0zRD0zRCJzdHJpbmciKT0KdHJ5e3Q9M0R0LnJlcGxhY2UoIklu
ZmluaXR5LCIsJyJJbmZpbml0eSIsJyksdD0zRGpRdWVyeS5wYXJzZUpTT04odCl9Y2F0Y2goPQpu
KXtjb25zb2xlLmRlYnVnKG4pfWUuc3VjY2VzcyYmZS5zdWNjZXNzKHQpfSkuZmFpbChmdW5jdGlv
bih0KXt2YXIgbj0zRG51bGw9Cjt0cnl7bj0zRGpRdWVyeS5wYXJzZUpTT04odC5yZXNwb25zZVRl
eHQpfWNhdGNoKHIpe249M0R0LnJlc3BvbnNlVGV4dH1lLmVycj0Kb3ImJmUuZXJyb3Iobix0KX0p
fWZ1bmN0aW9uIHUoZSx0KXt2YXIgbj0zRCQoJzxkaXYgY2xhc3M9M0QiJytlKyciPjwvZGl2Picp
PQo7bi5hcHBlbmRUbygiOmVxKDApIik7dmFyIHI9M0RuLmNzcyh0KTtyZXR1cm4gbi5yZW1vdmUo
KSxyfWZ1bmN0aW9uIGEoZSl7JCg9CidsaW5rW2hyZWZePTNEIicrZSsnIl0nKS5sZW5ndGh8fCQo
JzxsaW5rIGhyZWY9M0QiJytnYWxheHlfY29uZmlnLnJvb3QrZSsnIj0KIHJlbD0zRCJzdHlsZXNo
ZWV0Ij4nKS5hcHBlbmRUbygiaGVhZCIpfWZ1bmN0aW9uIGYodCxuKXtyZXR1cm4gdD9lLmRlZmF1
bHRzPQoodCxuKTpufWZ1bmN0aW9uIGwoZSx0KXt2YXIgbj0zRCIiO2lmKGU+PTNEMWUxMSllLz0z
RDFlMTEsbj0zRCJUQiI7ZWxzZSBpZig9CmU+PTNEMWU4KWUvPTNEMWU4LG49M0QiR0IiO2Vsc2Ug
aWYoZT49M0QxZTUpZS89M0QxZTUsbj0zRCJNQiI7ZWxzZSBpZihlPj0zRD0KMTAwKWUvPTNEMTAw
LG49M0QiS0IiO2Vsc2V7aWYoIShlPjApKXJldHVybiI8c3Ryb25nPi08L3N0cm9uZz4iO2UqPTNE
MTAsbj0KPTNEImIifXZhciByPTNETWF0aC5yb3VuZChlKS8xMDtyZXR1cm4gdD9yKyIgIituOiI8
c3Ryb25nPiIrcisiPC9zdHJvbmc+ICIrPQpufWZ1bmN0aW9uIGMoKXtyZXR1cm4ieCIrTWF0aC5y
YW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsOSl9ZnVuY3Rpb249CiBoKGUpe3ZhciB0
PTNEJCgiPHA+PC9wPiIpO3JldHVybiB0LmFwcGVuZChlKSx0fWZ1bmN0aW9uIHAoKXt2YXIgZT0z
RG5ldyBEYT0KdGUsdD0zRChlLmdldEhvdXJzKCk8MTA/IjAiOiIiKStlLmdldEhvdXJzKCksbj0z
RChlLmdldE1pbnV0ZXMoKTwxMD8iMCI6IiIpPQorZS5nZXRNaW51dGVzKCkscj0zRGUuZ2V0RGF0
ZSgpKyIvIisoZS5nZXRNb250aCgpKzEpKyIvIitlLmdldEZ1bGxZZWFyKCkrIiw9CiAiK3QrIjoi
K247cmV0dXJuIHJ9cmV0dXJue2Nzc0xvYWRGaWxlOmEsY3NzR2V0QXR0cmlidXRlOnUsZ2V0OnMs
bWVyZ2U6ZixieT0KdGVzVG9TdHJpbmc6bCx1dWlkOmMsdGltZTpwLHdyYXA6aCxyZXF1ZXN0Om8s
c2FuaXRpemU6bix0ZXh0aWZ5OmksdmFsaWRhdGU6PQpyLGRlZXBlYWNoOnR9fSksZGVmaW5lKCJt
dmMvdWkvdWktcG9ydGxldCIsWyJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGUpe3ZhciA9CnQ9M0RC
YWNrYm9uZS5WaWV3LmV4dGVuZCh7dmlzaWJsZTohMSxvcHRpb25zRGVmYXVsdDp7dGl0bGU6IiIs
aWNvbjoiIixidXR0bz0KbnM6bnVsbCxib2R5Om51bGwsc2Nyb2xsYWJsZTohMCxub3BhZGRpbmc6
ITEsb3BlcmF0aW9uczpudWxsLHBsYWNlbWVudDoiYm90PQp0b20iLGNsczoidWktcG9ydGxldCIs
b3BlcmF0aW9uc19mbHQ6InJpZ2h0In0sJHRpdGxlOm51bGwsJGNvbnRlbnQ6bnVsbCwkYnU9CnR0
b25zOm51bGwsJG9wZXJhdGlvbnM6bnVsbCwkaGVhZGVyOm51bGwsaW5pdGlhbGl6ZTpmdW5jdGlv
bih0KXt0aGlzLm9wdGlvbj0Kcz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlz
LnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpPQpvbnMpKSx0aGlzLiRjb250ZW50
PTNEdGhpcy4kZWwuZmluZCgiLmNvbnRlbnQiKSx0aGlzLiR0aXRsZT0zRHRoaXMuJGVsLmZpbmQ9
CigiLnBvcnRsZXQtdGl0bGUtdGV4dCIpLHRoaXMuJGhlYWRlcj0zRHRoaXMuJGVsLmZpbmQoIi5w
b3J0bGV0LWhlYWRlciIpO3Zhcj0KIG49M0R0aGlzLiRlbC5maW5kKCIucG9ydGxldC1jb250ZW50
Iik7dGhpcy5vcHRpb25zLnNjcm9sbGFibGU/bi5hZGRDbGFzcygiPQpzY3JvbGwiKTp0aGlzLm9w
dGlvbnMudGl0bGU/bi5hZGRDbGFzcygibm8tc2Nyb2xsIik6bi5hZGRDbGFzcygibm8tc2Nyb2xs
LW49Cm8tdGl0bGUiKSx0aGlzLm9wdGlvbnMubm9wYWRkaW5nJiYobi5jc3MoInBhZGRpbmciLCIw
cHgiKSx0aGlzLiRjb250ZW50LmNzcz0KKCJwYWRkaW5nIiwiMHB4IikpLHRoaXMuJGJ1dHRvbnM9
M0QkKHRoaXMuZWwpLmZpbmQoIi5idXR0b25zIik7aWYodGhpcy5vcHRpPQpvbnMuYnV0dG9ucyl7
dmFyIHI9M0R0aGlzOyQuZWFjaCh0aGlzLm9wdGlvbnMuYnV0dG9ucyxmdW5jdGlvbihlLHQpe3Qu
JGVsLnA9CnJvcCgiaWQiLGUpLHIuJGJ1dHRvbnMuYXBwZW5kKHQuJGVsKX0pfWVsc2UgdGhpcy4k
YnV0dG9ucy5yZW1vdmUoKTt0aGlzLiRvcD0KZXJhdGlvbnM9M0QkKHRoaXMuZWwpLmZpbmQoIi5v
cGVyYXRpb25zIik7aWYodGhpcy5vcHRpb25zLm9wZXJhdGlvbnMpe3ZhciByPQo9M0R0aGlzOyQu
ZWFjaCh0aGlzLm9wdGlvbnMub3BlcmF0aW9ucyxmdW5jdGlvbihlLHQpe3QuJGVsLnByb3AoImlk
IixlKSxyLiQ9Cm9wZXJhdGlvbnMuYXBwZW5kKHQuJGVsKX0pfXRoaXMub3B0aW9ucy5ib2R5JiZ0
aGlzLmFwcGVuZCh0aGlzLm9wdGlvbnMuYm9keT0KKX0sYXBwZW5kOmZ1bmN0aW9uKHQsbil7bj90
aGlzLiRjb250ZW50LmFwcGVuZCh0KTp0aGlzLiRjb250ZW50LmFwcGVuZChlLndyPQphcCh0KSl9
LGNvbnRlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kY29udGVudH0sc2hvdzpmdW5jdGlvbigp
e3RoaXMuJGVsLmY9CmFkZUluKCJmYXN0IiksdGhpcy52aXNpYmxlPTNEITB9LGhpZGU6ZnVuY3Rp
b24oKXt0aGlzLiRlbC5mYWRlT3V0KCJmYXN0IiksdD0KaGlzLnZpc2libGU9M0QhMX0sZW5hYmxl
QnV0dG9uOmZ1bmN0aW9uKGUpe3RoaXMuJGJ1dHRvbnMuZmluZCgiIyIrZSkucHJvcCgiPQpkaXNh
YmxlZCIsITEpfSxkaXNhYmxlQnV0dG9uOmZ1bmN0aW9uKGUpe3RoaXMuJGJ1dHRvbnMuZmluZCgi
IyIrZSkucHJvcCgiZGk9CnNhYmxlZCIsITApfSxoaWRlT3BlcmF0aW9uOmZ1bmN0aW9uKGUpe3Ro
aXMuJG9wZXJhdGlvbnMuZmluZCgiIyIrZSkuaGlkZSgpfT0KLHNob3dPcGVyYXRpb246ZnVuY3Rp
b24oZSl7dGhpcy4kb3BlcmF0aW9ucy5maW5kKCIjIitlKS5zaG93KCl9LHNldE9wZXJhdGlvPQpu
OmZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0aGlzLiRvcGVyYXRpb25zLmZpbmQoIiMiK2UpO24ub2Zm
KCJjbGljayIpLG4ub24oImM9CmxpY2siLHQpfSx0aXRsZTpmdW5jdGlvbihlKXt2YXIgdD0zRHRo
aXMuJHRpdGxlO3JldHVybiBlJiZ0Lmh0bWwoZSksdC5odG1sKD0KKX0sX3RlbXBsYXRlOmZ1bmN0
aW9uKGUpe3ZhciB0PTNEJzxkaXYgaWQ9M0QiJytlLmlkKyciIGNsYXNzPTNEIicrZS5jbHMrJyI+
PQonO3JldHVybiBlLnRpdGxlJiYodCs9M0QnPGRpdiBjbGFzcz0zRCJwb3J0bGV0LWhlYWRlciI+
PGRpdiBjbGFzcz0zRCJvcGVyYXQ9CmlvbnMiIHN0eWxlPTNEImZsb2F0OiAnK2Uub3BlcmF0aW9u
c19mbHQrJzsiPjwvZGl2PicrJzxkaXYgY2xhc3M9M0QicG9ydGxldD0KLXRpdGxlIj4nLGUuaWNv
biYmKHQrPTNEJzxpIGNsYXNzPTNEImljb24gZmEgJytlLmljb24rJyI+Jm5ic3A7PC9pPicpLHQr
PTNEPQonPHNwYW4gY2xhc3M9M0QicG9ydGxldC10aXRsZS10ZXh0Ij4nK2UudGl0bGUrIjwvc3Bh
bj4iKyI8L2Rpdj4iKyI8L2Rpdj4iKSw9CnQrPTNEJzxkaXYgY2xhc3M9M0QicG9ydGxldC1jb250
ZW50Ij4nLGUucGxhY2VtZW50PTNEPTNEInRvcCImJih0Kz0zRCc8ZGl2ID0KY2xhc3M9M0QiYnV0
dG9ucyI+PC9kaXY+JyksdCs9M0QnPGRpdiBjbGFzcz0zRCJjb250ZW50Ij48L2Rpdj4nLGUucGxh
Y2VtZW50PQo9M0Q9M0QiYm90dG9tIiYmKHQrPTNEJzxkaXYgY2xhc3M9M0QiYnV0dG9ucyI+PC9k
aXY+JyksdCs9M0QiPC9kaXY+PC9kaXY+Iiw9CnR9fSk7cmV0dXJue1ZpZXc6dH19KSxkZWZpbmUo
Im12Yy91aS91aS1zZWxlY3QtZGVmYXVsdCIsWyJ1dGlscy91dGlscyJdLGZ1bj0KY3Rpb24oZSl7
dmFyIHQ9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e2lkOiIiLGNsczoi
IixlcnJvcl90PQpleHQ6Ik5vIGRhdGEgYXZhaWxhYmxlIix2aXNpYmxlOiEwLHdhaXQ6ITEsbXVs
dGlwbGU6ITEsc2VhcmNoYWJsZTohMX0saW5pdGk9CmFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0
aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlzLnNldEVsZT0KbWVudCh0
aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKSx0aGlzLiRzZWxlY3Q9M0R0aGlzLiRlbC5maW5k
KCIuc2VsZWN0IiksPQp0aGlzLiRpY29uPTNEdGhpcy4kZWwuZmluZCgiLmljb24iKSx0aGlzLiRi
dXR0b249M0R0aGlzLiRlbC5maW5kKCIuYnV0dG9uIik9Cix0aGlzLm9wdGlvbnMubXVsdGlwbGU/
KHRoaXMuJHNlbGVjdC5wcm9wKCJtdWx0aXBsZSIsITApLHRoaXMuJHNlbGVjdC5hZGRDbD0KYXNz
KCJ1aS1zZWxlY3QtbXVsdGlwbGUiKSx0aGlzLiRpY29uLnJlbW92ZSgpKTp0aGlzLiRlbC5hZGRD
bGFzcygidWktc2VsZWN0PQoiKSx0aGlzLnVwZGF0ZSh0aGlzLm9wdGlvbnMuZGF0YSksdGhpcy5v
cHRpb25zLnZhbHVlIT0zRD0zRHVuZGVmaW5lZCYmdGhpcy49CnZhbHVlKHRoaXMub3B0aW9ucy52
YWx1ZSksdGhpcy5vcHRpb25zLnZpc2libGV8fHRoaXMuaGlkZSgpLHRoaXMub3B0aW9ucy53YT0K
aXQ/dGhpcy53YWl0KCk6dGhpcy5zaG93KCk7dmFyIG49M0R0aGlzO3RoaXMuJHNlbGVjdC5vbigi
Y2hhbmdlIixmdW5jdGlvbigpPQp7bi5fY2hhbmdlKCl9KSx0aGlzLm9uKCJjaGFuZ2UiLGZ1bmN0
aW9uKCl7bi5fY2hhbmdlKCl9KX0sdmFsdWU6ZnVuY3Rpb24oZSk9CntyZXR1cm4gZSE9M0Q9M0R1
bmRlZmluZWQmJih0aGlzLiRzZWxlY3QudmFsKGUpLHRoaXMuJHNlbGVjdC5zZWxlY3QyJiZ0aGlz
Lj0KJHNlbGVjdC5zZWxlY3QyKCJ2YWwiLGUpKSx0aGlzLiRzZWxlY3QudmFsKCl9LGZpcnN0OmZ1
bmN0aW9uKCl7dmFyIGU9M0R0aGlzPQouJHNlbGVjdC5maW5kKCJvcHRpb24iKTtyZXR1cm4gZS5s
ZW5ndGg+MD9lLnZhbCgpOnVuZGVmaW5lZH0sdmFsaWRhdGU6ZnVuY3Q9Cmlvbigpe3JldHVybiBl
LnZhbGlkYXRlKHRoaXMudmFsdWUoKSl9LHRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kc2Vs
ZWN0Lj0KZmluZCgib3B0aW9uOnNlbGVjdGVkIikudGV4dCgpfSxzaG93OmZ1bmN0aW9uKCl7dGhp
cy51bndhaXQoKSx0aGlzLiRzZWxlY3QuPQpzaG93KCksdGhpcy4kZWwuc2hvdygpfSxoaWRlOmZ1
bmN0aW9uKCl7dGhpcy4kZWwuaGlkZSgpfSx3YWl0OmZ1bmN0aW9uKCl7dGg9CmlzLiRpY29uLnJl
bW92ZUNsYXNzKCksdGhpcy4kaWNvbi5hZGRDbGFzcygiZmEgZmEtc3Bpbm5lciBmYS1zcGluIil9
LHVud2FpdD0KOmZ1bmN0aW9uKCl7dGhpcy4kaWNvbi5yZW1vdmVDbGFzcygpLHRoaXMuJGljb24u
YWRkQ2xhc3MoImZhIGZhLWNhcmV0LWRvd24iPQopfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLiRzZWxlY3QuaXMoIjpkaXNhYmxlZCIpfSxlbmFibGU6ZnVuY3Rpb249Cigpe3RoaXMu
JHNlbGVjdC5wcm9wKCJkaXNhYmxlZCIsITEpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy4kc2Vs
ZWN0LnByb3AoIj0KZGlzYWJsZWQiLCEwKX0sYWRkOmZ1bmN0aW9uKGUpe3RoaXMuJHNlbGVjdC5h
cHBlbmQodGhpcy5fdGVtcGxhdGVPcHRpb24oZSkpPQosdGhpcy5fcmVmcmVzaCgpfSxkZWw6ZnVu
Y3Rpb24oZSl7dGhpcy4kc2VsZWN0LmZpbmQoIm9wdGlvblt2YWx1ZT0zRCIrZSsiXSI9CikucmVt
b3ZlKCksdGhpcy4kc2VsZWN0LnRyaWdnZXIoImNoYW5nZSIpLHRoaXMuX3JlZnJlc2goKX0sdXBk
YXRlOmZ1bmN0aW9uKD0KZSl7dmFyIHQ9M0R0aGlzLiRzZWxlY3QudmFsKCk7dGhpcy4kc2VsZWN0
LmZpbmQoIm9wdGlvbiIpLnJlbW92ZSgpO2Zvcih2YXIgPQpuIGluIGUpdGhpcy4kc2VsZWN0LmFw
cGVuZCh0aGlzLl90ZW1wbGF0ZU9wdGlvbihlW25dKSk7dGhpcy5fcmVmcmVzaCgpLHRoaXM9Ci4k
c2VsZWN0LnZhbCh0KSx0aGlzLiRzZWxlY3QudmFsKCl8fHRoaXMuJHNlbGVjdC52YWwodGhpcy5m
aXJzdCgpKSx0aGlzLm9wdD0KaW9ucy5zZWFyY2hhYmxlJiYodGhpcy4kYnV0dG9uLmhpZGUoKSx0
aGlzLiRzZWxlY3Quc2VsZWN0MigiZGVzdHJveSIpLHRoaXMuPQokc2VsZWN0LnNlbGVjdDIoKSl9
LHNldE9uQ2hhbmdlOmZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucy5vbmNoYW5nZT0zRGV9LGV4aXM9
CnRzOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLiRzZWxlY3QuZmluZCgnb3B0aW9uW3ZhbHVlPTNE
IicrZSsnIl0nKS5sZW5ndGg+MD0KfSxfY2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9u
Y2hhbmdlJiZ0aGlzLm9wdGlvbnMub25jaGFuZ2UodGhpcy4kc2VsPQplY3QudmFsKCkpfSxfcmVm
cmVzaDpmdW5jdGlvbigpe3RoaXMuJHNlbGVjdC5maW5kKCJvcHRpb25bdmFsdWU9M0RudWxsXSIp
LnI9CmVtb3ZlKCk7dmFyIGU9M0R0aGlzLiRzZWxlY3QuZmluZCgib3B0aW9uIikubGVuZ3RoO2U9
M0Q9M0QwPyh0aGlzLmRpc2FibGUoKT0KLHRoaXMuJHNlbGVjdC5hcHBlbmQodGhpcy5fdGVtcGxh
dGVPcHRpb24oe3ZhbHVlOiJudWxsIixsYWJlbDp0aGlzLm9wdGlvbnMuPQplcnJvcl90ZXh0fSkp
KTp0aGlzLmVuYWJsZSgpfSxfdGVtcGxhdGVPcHRpb246ZnVuY3Rpb24oZSl7cmV0dXJuJzxvcHRp
b24gdmE9Cmx1ZT0zRCInK2UudmFsdWUrJyI+JytlLmxhYmVsKyI8L29wdGlvbj4ifSxfdGVtcGxh
dGU6ZnVuY3Rpb24oZSl7cmV0dXJuJzxkaT0KdiBpZD0zRCInK2UuaWQrJyI+JysnPHNlbGVjdCBp
ZD0zRCJzZWxlY3QiIGNsYXNzPTNEInNlbGVjdCAnK2UuY2xzKyIgIitlLmlkPQorJyI+PC9zZWxl
Y3Q+JysnPGRpdiBjbGFzcz0zRCJidXR0b24iPicrJzxpIGNsYXNzPTNEImljb24iLz4nKyI8L2Rp
dj4iKyI8L2Q9Cml2PiJ9fSk7cmV0dXJue1ZpZXc6dH19KSxkZWZpbmUoIm12Yy91aS91aS1zbGlk
ZXIiLFsidXRpbHMvdXRpbHMiXSxmdW5jdGlvbj0KKGUpe3ZhciB0PTNEQmFja2JvbmUuVmlldy5l
eHRlbmQoe29wdGlvbnNEZWZhdWx0OnttaW46bnVsbCxtYXg6bnVsbCxzdGVwOm51PQpsbCxwcmVj
aXNlOiExLHNwbGl0OjFlNH0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt2YXIgbj0zRHRoaXM7dGhp
cy5vcHRpb25zPQo9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGVt
ZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW89Cm5zKSksdGhpcy51c2VzbGlkZXI9M0R0aGlz
Lm9wdGlvbnMubWF4IT0zRD0zRG51bGwmJnRoaXMub3B0aW9ucy5taW4hPTNEPTNEbj0KdWxsJiZ0
aGlzLm9wdGlvbnMubWF4PnRoaXMub3B0aW9ucy5taW4sdGhpcy5vcHRpb25zLnN0ZXA9M0Q9M0Q9
M0RudWxsJiYodGhpPQpzLm9wdGlvbnMuc3RlcD0zRDEsdGhpcy5vcHRpb25zLnByZWNpc2UmJnRo
aXMudXNlc2xpZGVyJiYodGhpcy5vcHRpb25zLnN0ZXA9Cj0zRCh0aGlzLm9wdGlvbnMubWF4LXRo
aXMub3B0aW9ucy5taW4pL3RoaXMub3B0aW9ucy5zcGxpdCkpLHRoaXMudXNlc2xpZGVyPz0KKHRo
aXMuJHNsaWRlcj0zRHRoaXMuJGVsLmZpbmQoIiNzbGlkZXIiKSx0aGlzLiRzbGlkZXIuc2xpZGVy
KHRoaXMub3B0aW9ucyksPQp0aGlzLiRzbGlkZXIub24oInNsaWRlIixmdW5jdGlvbihlLHQpe24u
dmFsdWUodC52YWx1ZSl9KSk6dGhpcy4kZWwuZmluZCgiLnU9CmktZm9ybS1zbGlkZXItdGV4dCIp
LmNzcygid2lkdGgiLCIxMDAlIiksdGhpcy4kdGV4dD0zRHRoaXMuJGVsLmZpbmQoIiN0ZXh0Ij0K
KSx0aGlzLm9wdGlvbnMudmFsdWUhPTNEPTNEdW5kZWZpbmVkJiZ0aGlzLnZhbHVlKHRoaXMub3B0
aW9ucy52YWx1ZSksdGhpcy4kPQp0ZXh0Lm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7bi52YWx1ZSgk
KHRoaXMpLnZhbCgpKX0pO3ZhciByPTNEW107dGhpcy4kdGV4dC49Cm9uKCJrZXl1cCIsZnVuY3Rp
b24oZSl7cltlLndoaWNoXT0zRCExfSksdGhpcy4kdGV4dC5vbigia2V5ZG93biIsZnVuY3Rpb24o
ZT0KKXt2YXIgdD0zRGUud2hpY2g7clt0XT0zRCEwLHQ9M0Q9M0Q4fHx0PTNEPTNEOXx8dD0zRD0z
RDEzfHx0PTNEPTNEMzd8fHQ9M0Q9Cj0zRDM5fHx0Pj0zRDQ4JiZ0PD0zRDU3fHx0PTNEPTNEMTkw
JiYkKHRoaXMpLnZhbCgpLmluZGV4T2YoIi4iKT0zRD0zRC0xJiZuLj0Kb3B0aW9ucy5wcmVjaXNl
fHx0PTNEPTNEMTg5JiYkKHRoaXMpLnZhbCgpLmluZGV4T2YoIi0iKT0zRD0zRC0xfHxyWzkxXXx8
clsxPQo3XXx8ZXZlbnQucHJldmVudERlZmF1bHQoKX0pfSx2YWx1ZTpmdW5jdGlvbihlKXtyZXR1
cm4gZSE9M0Q9M0R1bmRlZmluZWQmJig9CmlzTmFOKGUpJiYoZT0zRDApLHRoaXMub3B0aW9ucy5t
YXghPTNEPTNEbnVsbCYmKGU9M0RNYXRoLm1pbihlLHRoaXMub3B0aW9ucz0KLm1heCkpLHRoaXMu
b3B0aW9ucy5taW4hPTNEPTNEbnVsbCYmKGU9M0RNYXRoLm1heChlLHRoaXMub3B0aW9ucy5taW4p
KSx0aGlzPQoub3B0aW9ucy5vbmNoYW5nZSYmdGhpcy5vcHRpb25zLm9uY2hhbmdlKGUpLHRoaXMu
JHNsaWRlciYmdGhpcy4kc2xpZGVyLnNsaWQ9CmVyKCJ2YWx1ZSIsZSksdGhpcy4kdGV4dC52YWwo
ZSkpLHRoaXMuJHRleHQudmFsKCl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZT0KdHVybic8ZGl2
IGlkPTNEIicrZS5pZCsnIiBjbGFzcz0zRCJ1aS1mb3JtLXNsaWRlciI+JysnPGlucHV0IGlkPTNE
InRleHQiIHR5PQpwZT0zRCJ0ZXh0IiBjbGFzcz0zRCJ1aS1mb3JtLXNsaWRlci10ZXh0Ii8+Jysn
PGRpdiBpZD0zRCJzbGlkZXIiIGNsYXNzPTNEInU9CmktZm9ybS1zbGlkZXItZWxlbWVudCIvPicr
IjwvZGl2PiJ9fSk7cmV0dXJue1ZpZXc6dH19KSxkZWZpbmUoIm12Yy91aS91aS1vcD0KdGlvbnMi
LFsidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihlKXt2YXIgdD0zREJhY2tib25lLlZpZXcuZXh0ZW5k
KHtpbml0aWFsaXplPQo6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zRGVmYXVsdD0zRHt2aXNpYmxl
OiEwLGRhdGE6W10saWQ6ZS51dWlkKCksZXJyb3JfdGU9Cnh0OiJObyBkYXRhIGF2YWlsYWJsZS4i
LHdhaXRfdGV4dDoiUGxlYXNlIHdhaXQuLi4ifSx0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKD0KdCx0
aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlzLnNldEVsZW1lbnQoIjxkaXYvPiIpLHRoaXMuJG1lc3Nh
Z2U9M0QkKCI8ZGl2Lz4iPQopLHRoaXMuJG9wdGlvbnM9M0QkKHRoaXMuX3RlbXBsYXRlKHQpKSx0
aGlzLiRlbC5hcHBlbmQodGhpcy4kbWVzc2FnZSksdGhpcy49CiRlbC5hcHBlbmQodGhpcy4kb3B0
aW9ucyksdGhpcy5vcHRpb25zLnZpc2libGV8fHRoaXMuJGVsLmhpZGUoKSx0aGlzLnVwZGF0ZT0K
KHRoaXMub3B0aW9ucy5kYXRhKSx0aGlzLm9wdGlvbnMudmFsdWUhPTNEPTNEdW5kZWZpbmVkJiZ0
aGlzLnZhbHVlKHRoaXMub3B0PQppb25zLnZhbHVlKTt2YXIgbj0zRHRoaXM7dGhpcy5vbigiY2hh
bmdlIixmdW5jdGlvbigpe24uX2NoYW5nZSgpfSl9LHVwZGF0ZTo9CmZ1bmN0aW9uKGUpe3ZhciB0
PTNEdGhpcy5fZ2V0VmFsdWUoKTt0aGlzLiRvcHRpb25zLmVtcHR5KCk7aWYodGhpcy5fdGVtcGxh
dD0KZU9wdGlvbnMpdGhpcy4kb3B0aW9ucy5hcHBlbmQodGhpcy5fdGVtcGxhdGVPcHRpb25zKGUp
KTtlbHNlIGZvcih2YXIgbiBpbiBlPQope3ZhciByPTNEJCh0aGlzLl90ZW1wbGF0ZU9wdGlvbihl
W25dKSk7ci5hZGRDbGFzcygidWktb3B0aW9uIiksdGhpcy4kb3B0aW89Cm5zLmFwcGVuZChyKX12
YXIgaT0zRHRoaXM7dGhpcy4kZWwuZmluZCgiaW5wdXQiKS5vbigiY2hhbmdlIixmdW5jdGlvbigp
e2kudj0KYWx1ZShpLl9nZXRWYWx1ZSgpKSxpLl9jaGFuZ2UoKX0pLHRoaXMuX3JlZnJlc2goKSx0
aGlzLnZhbHVlKHQpfSx2YWx1ZTpmdW5jPQp0aW9uKGUpe2lmKGUhPTNEPTNEdW5kZWZpbmVkKXtl
IGluc3RhbmNlb2YgQXJyYXl8fChlPTNEW2VdKSx0aGlzLiRlbC5maW5kKCI9CmlucHV0IikucHJv
cCgiY2hlY2tlZCIsITEpO2Zvcih2YXIgdCBpbiBlKXRoaXMuJGVsLmZpbmQoJ2lucHV0W3ZhbHVl
PTNEIicrZT0KW3RdKyciXScpLmZpcnN0KCkucHJvcCgiY2hlY2tlZCIsITApfXJldHVybiB0aGlz
Ll9nZXRWYWx1ZSgpfSxleGlzdHM6ZnVuY3RpPQpvbihlKXtpZihlIT0zRD0zRHVuZGVmaW5lZCl7
ZSBpbnN0YW5jZW9mIEFycmF5fHwoZT0zRFtlXSk7Zm9yKHZhciB0IGluIGUpaWY9Cih0aGlzLiRl
bC5maW5kKCdpbnB1dFt2YWx1ZT0zRCInK2VbdF0rJyJdJykubGVuZ3RoPjApcmV0dXJuITB9cmV0
dXJuITF9LGZpcj0Kc3Q6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMuJGVsLmZpbmQoImlucHV0Iik7
cmV0dXJuIGUubGVuZ3RoPjA/ZS52YWwoKTp1bmRlPQpmaW5lZH0sdmFsaWRhdGU6ZnVuY3Rpb24o
KXtyZXR1cm4gZS52YWxpZGF0ZSh0aGlzLnZhbHVlKCkpfSx3YWl0OmZ1bmN0aW9uKCk9Cnt0aGlz
Ll9zaXplKCk9M0Q9M0QwJiYodGhpcy5fbWVzc2FnZVNob3codGhpcy5vcHRpb25zLndhaXRfdGV4
dCwiaW5mbyIpLHRoaT0Kcy4kb3B0aW9ucy5oaWRlKCkpfSx1bndhaXQ6ZnVuY3Rpb24oKXt0aGlz
Ll9tZXNzYWdlSGlkZSgpLHRoaXMuX3JlZnJlc2goKX0sPQpfY2hhbmdlOmZ1bmN0aW9uKCl7dGhp
cy5vcHRpb25zLm9uY2hhbmdlJiZ0aGlzLm9wdGlvbnMub25jaGFuZ2UodGhpcy5fZ2V0VmE9Cmx1
ZSgpKX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt0aGlzLl9zaXplKCk9M0Q9M0QwPyh0aGlzLl9tZXNz
YWdlU2hvdyh0aGlzLm9wdD0KaW9ucy5lcnJvcl90ZXh0LCJkYW5nZXIiKSx0aGlzLiRvcHRpb25z
LmhpZGUoKSk6KHRoaXMuX21lc3NhZ2VIaWRlKCksdGhpcy4kPQpvcHRpb25zLmNzcygiZGlzcGxh
eSIsImlubGluZS1ibG9jayIpKX0sX2dldFZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9M0R0aGlzLiQ9
CmVsLmZpbmQoIjpjaGVja2VkIik7aWYoZS5sZW5ndGg9M0Q9M0QwKXJldHVybiJudWxsIjtpZih0
aGlzLm9wdGlvbnMubXVsdGlwbD0KZSl7dmFyIHQ9M0RbXTtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9u
KCl7dC5wdXNoKCQodGhpcykudmFsKCkpfSksdH1yZXR1cm4gZS52PQphbCgpfSxfc2l6ZTpmdW5j
dGlvbigpe3JldHVybiB0aGlzLiRlbC5maW5kKCIudWktb3B0aW9uIikubGVuZ3RofSxfbWVzc2Fn
ZVM9CmhvdzpmdW5jdGlvbihlLHQpe3RoaXMuJG1lc3NhZ2Uuc2hvdygpLHRoaXMuJG1lc3NhZ2Uu
cmVtb3ZlQ2xhc3MoKSx0aGlzLiRtZT0Kc3NhZ2UuYWRkQ2xhc3MoInVpLW1lc3NhZ2UgYWxlcnQg
YWxlcnQtIit0KSx0aGlzLiRtZXNzYWdlLmh0bWwoZSl9LF9tZXNzYWdlPQpIaWRlOmZ1bmN0aW9u
KCl7dGhpcy4kbWVzc2FnZS5oaWRlKCl9LF90ZW1wbGF0ZTpmdW5jdGlvbigpe3JldHVybic8ZGl2
IGNsYXM9CnM9M0QidWktb3B0aW9ucyIvPid9fSksbj0zRHt9O24uVmlldz0zRHQuZXh0ZW5kKHtp
bml0aWFsaXplOmZ1bmN0aW9uKGUpe3QucD0Kcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMs
ZSl9LF90ZW1wbGF0ZU9wdGlvbjpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdj48PQppbnB1dCB0eXBl
PTNEInJhZGlvIiBuYW1lPTNEIicrdGhpcy5vcHRpb25zLmlkKyciIHZhbHVlPTNEIicrZS52YWx1
ZSsnIi8+Jys9CmUubGFiZWwrIjxicj4iKyI8L2Rpdj4ifX0pO3ZhciByPTNEe307ci5WaWV3PTNE
dC5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpbz0KbihlKXtlLm11bHRpcGxlPTNEITAsdC5wcm90
b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsZSl9LF90ZW1wbGF0ZU9wdGlvbjpmPQp1bmN0aW9u
KGUpe3JldHVybic8ZGl2PjxpbnB1dCB0eXBlPTNEImNoZWNrYm94IiBuYW1lPTNEIicrdGhpcy5v
cHRpb25zLmlkKyc9CiIgdmFsdWU9M0QiJytlLnZhbHVlKyciLz4nK2UubGFiZWwrIjxicj4iKyI8
L2Rpdj4ifX0pO3ZhciBpPTNEe307cmV0dXJuIGkuVj0KaWV3PTNEdC5leHRlbmQoe2luaXRpYWxp
emU6ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsZSl9PQosdmFs
dWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPTNEPTNEdW5kZWZpbmVkJiYodGhpcy4kZWwuZmluZCgi
aW5wdXQiKS5wcm9wKCI9CmNoZWNrZWQiLCExKSx0aGlzLiRlbC5maW5kKCJsYWJlbCIpLnJlbW92
ZUNsYXNzKCJhY3RpdmUiKSx0aGlzLiRlbC5maW5kKCdbdj0KYWx1ZT0zRCInK2UrJyJdJykucHJv
cCgiY2hlY2tlZCIsITApLmNsb3Nlc3QoImxhYmVsIikuYWRkQ2xhc3MoImFjdGl2ZSIpKSx0PQpo
aXMuX2dldFZhbHVlKCl9LF90ZW1wbGF0ZU9wdGlvbjpmdW5jdGlvbihlKXt2YXIgdD0zRCc8bGFi
ZWwgY2xhc3M9M0QiYnRuIGI9CnRuLWRlZmF1bHQiPic7cmV0dXJuIGUuaWNvbiYmKHQrPTNEJzxp
IGNsYXNzPTNEImZhICcrZS5pY29uKyciLz4nKSx0Kz0zRCc8aT0KbnB1dCB0eXBlPTNEInJhZGlv
IiBuYW1lPTNEIicrdGhpcy5vcHRpb25zLmlkKyciIHZhbHVlPTNEIicrZS52YWx1ZSsnIj4nK2Uu
PQpsYWJlbCsiPC9sYWJlbD4iLHR9LF90ZW1wbGF0ZTpmdW5jdGlvbigpe3JldHVybic8ZGl2IGNs
YXNzPTNEImJ0bi1ncm91cCB1aS09CnJhZGlvYnV0dG9uIiBkYXRhLXRvZ2dsZT0zRCJidXR0b25z
Ii8+J319KSx7QmFzZTp0LFJhZGlvOm4sUmFkaW9CdXR0b246aSxDaD0KZWNrYm94OnJ9fSksZGVm
aW5lKCJtdmMvdWkvdWktZHJpbGxkb3duIixbInV0aWxzL3V0aWxzIiwibXZjL3VpL3VpLW9wdGlv
bnMiPQpdLGZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0LkJhc2UuZXh0ZW5kKHtpbml0aWFsaXplOmZ1
bmN0aW9uKGUpe3RoaXMuZGlzcGxheT0KPTNEZS5kaXNwbGF5fHwiY2hlY2tib3giLGUubXVsdGlw
bGU9M0R0aGlzLmRpc3BsYXk9M0Q9M0QiY2hlY2tib3giLHQuQmFzZS5wPQpyb3RvdHlwZS5pbml0
aWFsaXplLmNhbGwodGhpcyxlKX0sX3RlbXBsYXRlT3B0aW9uOmZ1bmN0aW9uKGUsdCxuKXtyZXR1
cm4nPGQ9Cml2PjxpbnB1dCBuYW1lPTNEIicrdGhpcy5vcHRpb25zLmlkKyciIGNsYXNzPTNEInVp
LW9wdGlvbiIgdHlwZT0zRCInK3RoaXMuZD0KaXNwbGF5KyciIHZhbHVlPTNEIicrdCsnIj4nK2Ur
IjxkaXYvPiJ9LF90ZW1wbGF0ZU9wdGlvbnM6ZnVuY3Rpb24oZSl7ZnVuY3RpPQpvbiBuKGUsdCl7
ZnVuY3Rpb24gbihuKXtuPyh0LmZhZGVJbigiZmFzdCIpLGUucmVtb3ZlQ2xhc3MoInRvZ2dsZS1l
eHBhbmQiKSw9CmUuYWRkQ2xhc3MoInRvZ2dsZSIpLGUuaXNfZXhwYW5kZWQ9M0QhMCk6KHQuaGlk
ZSgpLGUucmVtb3ZlQ2xhc3MoInRvZ2dsZSIpLD0KZS5hZGRDbGFzcygidG9nZ2xlLWV4cGFuZCIp
LGUuaXNfZXhwYW5kZWQ9M0QhMSl9ZS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7bighPQplLmlzX2V4
cGFuZGVkKX0pfWZ1bmN0aW9uIHIoZSxzKXtmb3IoaSBpbiBzKXt2YXIgbz0zRHNbaV0sdT0zRG8u
b3B0aW9ucy5sZW49Cmd0aD4wLGE9M0QkKCI8ZGl2Lz4iKTtpZih1KXt2YXIgZj0zRCQoJzxzcGFu
IGNsYXNzPTNEInVpLWRyaWxsZG93bi1idXR0b24gZj0Kb3JtLXRvZ2dsZSBpY29uLWJ1dHRvbiB0
b2dnbGUtZXhwYW5kIiBzdHlsZT0zRCJwb3NpdGlvbjogcmVsYXRpdmU7IHRvcDogMnB4PQo7Ii8+
JyksbD0zRCQoIjxkaXYvPiIpO2wuYXBwZW5kKGYpLGwuYXBwZW5kKHQuX3RlbXBsYXRlT3B0aW9u
KG8ubmFtZSxvLnZhbHU9CmUpKSxhLmFwcGVuZChsKTt2YXIgYz0zRCQoJzxkaXYgc3R5bGU9M0Qi
ZGlzcGxheTogbm9uZTsgbWFyZ2luLWxlZnQ6IDI1cHg7Ij0KLz4nKTtyKGMsby5vcHRpb25zKSxh
LmFwcGVuZChjKSxuKGYsYyl9ZWxzZSBhLmFwcGVuZCh0Ll90ZW1wbGF0ZU9wdGlvbihvLm5hPQpt
ZSxvLnZhbHVlKSk7ZS5hcHBlbmQoYSl9fXZhciB0PTNEdGhpcyxzPTNEJCgiPGRpdi8+Iik7cmV0
dXJuIHIocyxlKSxzfSxfdGU9Cm1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdiBjbGFzcz0z
RCJ1aS1vcHRpb25zIGRyaWxsZG93bi1jb250YWluZXIiIGlkPQo9M0QiJytlLmlkKyciLz4nfX0p
O3JldHVybntWaWV3Om59fSksZGVmaW5lKCJtdmMvdWkvdWktYnV0dG9uLW1lbnUiLFsidXRpbHM9
Ci91dGlscyJdLGZ1bmN0aW9uKGUpe3JldHVybiBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9u
c0RlZmF1bHQ6e2lkOiIiLHRpdD0KbGU6IiIsZmxvYXRpbmc6InJpZ2h0IixpY29uOm51bGwsb25j
bGljazpudWxsLGNsczoidWktYnV0dG9uLWljb24gdWktYnV0dG9uPQotbWVudSIsdG9vbHRpcDoi
Iix0YXJnZXQ6IiIsaHJlZjoiIixvbnVubG9hZDpudWxsLHZpc2libGU6ITAsdGFnOiIifSwkbWVu
dTo9Cm51bGwsaW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQs
dGhpcy5vcHRpb25zRGVmYXVsdCksdD0KaGlzLnNldEVsZW1lbnQoJCh0aGlzLl90ZW1wbGF0ZSh0
aGlzLm9wdGlvbnMpKSk7dmFyIG49M0QkKHRoaXMuZWwpLmZpbmQoIi5yPQpvb3QiKSxyPTNEdGhp
cztuLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7JCgiLnRvb2x0aXAiKS5oaWRlKCksZS5wcmV2ZW50
RGVmYXU9Cmx0KCksci5vcHRpb25zLm9uY2xpY2smJnIub3B0aW9ucy5vbmNsaWNrKCl9KSx0aGlz
Lm9wdGlvbnMudmlzaWJsZXx8dGhpcy5oaT0KZGUoKSxuLnRvb2x0aXAoe3RpdGxlOnQudG9vbHRp
cCxwbGFjZW1lbnQ6ImJvdHRvbSJ9KX0sc2hvdzpmdW5jdGlvbigpeyQodGhpPQpzLmVsKS5zaG93
KCl9LGhpZGU6ZnVuY3Rpb24oKXskKHRoaXMuZWwpLmhpZGUoKX0sYWRkTWVudTpmdW5jdGlvbih0
KXt2YXIgbj0KPTNEe3RpdGxlOiIiLHRhcmdldDoiIixocmVmOiIiLG9uY2xpY2s6bnVsbCxkaXZp
ZGVyOiExLGljb246bnVsbCxjbHM6ImJ1dHRvPQpuLW1lbnUgYnRuLWdyb3VwIn07bj0zRGUubWVy
Z2UodCxuKSx0aGlzLiRtZW51fHwoJCh0aGlzLmVsKS5hcHBlbmQodGhpcy5fdGU9Cm1wbGF0ZU1l
bnUoKSksdGhpcy4kbWVudT0zRCQodGhpcy5lbCkuZmluZCgiLm1lbnUiKSk7dmFyIHI9M0QkKHRo
aXMuX3RlbXBsYT0KdGVNZW51SXRlbShuKSk7ci5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe2UucHJl
dmVudERlZmF1bHQoKSxuLm9uY2xpY2smJm4ub25jPQpsaWNrKCl9KSx0aGlzLiRtZW51LmFwcGVu
ZChyKSxuLmRpdmlkZXImJnRoaXMuJG1lbnUuYXBwZW5kKCQodGhpcy5fdGVtcGxhdGU9CkRpdmlk
ZXIoKSkpfSxfdGVtcGxhdGVNZW51SXRlbTpmdW5jdGlvbihlKXt2YXIgdD0zRCc8bGk+PGEgY2xh
c3M9M0QiZHJvcGRvdz0Kbi1pdGVtIiBocmVmPTNEIicrZS5ocmVmKyciIHRhcmdldD0zRCInK2Uu
dGFyZ2V0KyciPic7cmV0dXJuIGUuaWNvbiYmKHQrPTNEPQonPGkgY2xhc3M9M0QiZmEgJytlLmlj
b24rJyI+PC9pPicpLHQrPTNEIiAiK2UudGl0bGUrIjwvYT4iKyI8L2xpPiIsdH0sX3RlbXA9Cmxh
dGVNZW51OmZ1bmN0aW9uKCl7cmV0dXJuJzx1bCBjbGFzcz0zRCJtZW51IGRyb3Bkb3duLW1lbnUg
cHVsbC1yaWdodCIgcm9sZT0KPTNEIm1lbnUiPjwvdWw+J30sX3RlbXBsYXRlRGl2aWRlcjpmdW5j
dGlvbigpe3JldHVybic8bGkgY2xhc3M9M0QiZGl2aWRlciI+PQo8L2xpPid9LF90ZW1wbGF0ZTpm
dW5jdGlvbihlKXt2YXIgdD0zRCIiLG49M0QiIjtlLnRpdGxlP3Q9M0Qid2lkdGg6IGF1dG87Ijo9
Cm49M0QibWFyZ2luOiAwcHg7Ijt2YXIgcj0zRCc8ZGl2IGlkPTNEIicrZS5pZCsnIiBzdHlsZT0z
RCJmbG9hdDogJytlLmZsb2F0aT0KbmcrIjsgIit0KyciIGNsYXNzPTNEImRyb3Bkb3duICcrZS5j
bHMrJyI+JysnPGRpdiBjbGFzcz0zRCJyb290IGJ1dHRvbiBkcm9wPQpkb3duLXRvZ2dsZSIgZGF0
YS10b2dnbGU9M0QiZHJvcGRvd24iIHN0eWxlPTNEIicrbisnIj4nKyc8aSBjbGFzcz0zRCJpY29u
IGY9CmEgJytlLmljb24rJyIvPic7cmV0dXJuIGUudGl0bGUmJihyKz0zRCcmbmJzcDs8c3BhbiBj
bGFzcz0zRCJ0aXRsZSI+JytlLnRpdD0KbGUrIjwvc3Bhbj4iKSxyKz0zRCI8L2Rpdj48L2Rpdj4i
LHJ9fSl9KSxkZWZpbmUoIm12Yy91aS91aS1taXNjIixbInV0aWxzL3V0PQppbHMiLCJtdmMvdWkv
dWktc2VsZWN0LWRlZmF1bHQiLCJtdmMvdWkvdWktc2xpZGVyIiwibXZjL3VpL3VpLW9wdGlvbnMi
LCJtdmM9Ci91aS91aS1kcmlsbGRvd24iLCJtdmMvdWkvdWktYnV0dG9uLW1lbnUiLCJtdmMvdWkv
dWktbW9kYWwiXSxmdW5jdGlvbihlLHQsbj0KLHIsaSxzLG8pe3ZhciB1PTNEQmFja2JvbmUuVmll
dy5leHRlbmQoe29wdGlvbnNEZWZhdWx0Ont1cmw6IiIsY2xzOiIifSxpbml0PQppYWxpemU6ZnVu
Y3Rpb24odCl7dGhpcy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRo
aXMuc2V0RWw9CmVtZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9ucykpfSxfdGVtcGxhdGU6
ZnVuY3Rpb24oZSl7cmV0dXJuJzxpbWcgY2xhcz0Kcz0zRCJ1aS1pbWFnZSAnK2UuY2xzKyciIHNy
Yz0zRCInK2UudXJsKyciLz4nfX0pLGE9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7PQpvcHRpb25z
RGVmYXVsdDp7dGl0bGU6IiIsY2xzOiIifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0
aW9ucz0zRGUubWU9CnJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCh0
aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKX0sdD0KaXRsZTpmdW5jdGlvbihlKXt0aGlzLiRl
bC5odG1sKGUpfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuJzxsYWJlbCBjbGFzPQpzPTNE
InVpLWxhYmVsICcrZS5jbHMrJyI+JytlLnRpdGxlKyI8L2xhYmVsPiJ9LHZhbHVlOmZ1bmN0aW9u
KCl7cmV0dXJuIG9wdGk9Cm9ucy50aXRsZX19KSxmPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29w
dGlvbnNEZWZhdWx0OntmbG9hdGluZzoicmlnaHQiLGljbz0KbjoiIix0b29sdGlwOiIiLHBsYWNl
bWVudDoiYm90dG9tIix0aXRsZToiIixjbHM6IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7PQp0
aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGVt
ZW50KHRoaXMuX3RlbXBsYXQ9CmUodGhpcy5vcHRpb25zKSksJCh0aGlzLmVsKS50b29sdGlwKHt0
aXRsZTp0LnRvb2x0aXAscGxhY2VtZW50OiJib3R0b20ifSl9LD0KX3RlbXBsYXRlOmZ1bmN0aW9u
KGUpe3JldHVybic8ZGl2PjxzcGFuIGNsYXNzPTNEImZhICcrZS5pY29uKyciIGNsYXNzPTNEInVp
PQotaWNvbiIvPiZuYnNwOycrZS50aXRsZSsiPC9kaXY+In19KSxsPTNEQmFja2JvbmUuVmlldy5l
eHRlbmQoe29wdGlvbnNEZWZhdWw9CnQ6e2lkOm51bGwsdGl0bGU6IiIsZmxvYXRpbmc6InJpZ2h0
IixjbHM6InVpLWJ1dHRvbiBidG4gYnRuLWRlZmF1bHQiLGljb246Ij0KIn0saW5pdGlhbGl6ZTpm
dW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCks
dGhpPQpzLnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSksJCh0aGlzLmVs
KS5vbigiY2xpY2siLGZ1bmN0aW9uKCk9CnskKCIudG9vbHRpcCIpLmhpZGUoKSx0Lm9uY2xpY2sm
JnQub25jbGljaygpfSksJCh0aGlzLmVsKS50b29sdGlwKHt0aXRsZTp0Lj0KdG9vbHRpcCxwbGFj
ZW1lbnQ6ImJvdHRvbSJ9KX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PTNEJzxidXR0b24g
aWQ9M0QiPQonK2UuaWQrJyIgdHlwZT0zRCJzdWJtaXQiIHN0eWxlPTNEImZsb2F0OiAnK2UuZmxv
YXRpbmcrJzsiIHR5cGU9M0QiYnV0dG9uIiA9CmNsYXNzPTNEIicrZS5jbHMrJyI+JztyZXR1cm4g
ZS5pY29uJiYodCs9M0QnPGkgY2xhc3M9M0QiaWNvbiBmYSAnK2UuaWNvbisnIj0KPjwvaT4mbmJz
cDsnKSx0Kz0zRGUudGl0bGUrIjwvYnV0dG9uPiIsdH19KSxjPTNEQmFja2JvbmUuVmlldy5leHRl
bmQoe29wdGlvPQpuc0RlZmF1bHQ6e2lkOm51bGwsdGl0bGU6IiIsZmxvYXRpbmc6InJpZ2h0Iixj
bHM6InVpLWJ1dHRvbi1pY29uIixpY29uOiIiLHQ9Cm9vbHRpcDoiIixvbmNsaWNrOm51bGx9LGlu
aXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaT0Kcy5vcHRp
b25zRGVmYXVsdCksdGhpcy5zZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9ucykp
LHRoaXMuJGJ1dHRvPQpuPTNEdGhpcy4kZWwuZmluZCgiLmJ1dHRvbiIpO3ZhciBuPTNEdGhpczsk
KHRoaXMuZWwpLm9uKCJjbGljayIsZnVuY3Rpb24oKXs9CiQoIi50b29sdGlwIikuaGlkZSgpLHQu
b25jbGljayYmIW4uZGlzYWJsZWQmJnQub25jbGljaygpfSksJCh0aGlzLmVsKS50b29sdD0KaXAo
e3RpdGxlOnQudG9vbHRpcCxwbGFjZW1lbnQ6ImJvdHRvbSJ9KX0sZGlzYWJsZTpmdW5jdGlvbigp
e3RoaXMuJGJ1dHRvbi5hPQpkZENsYXNzKCJkaXNhYmxlZCIpLHRoaXMuZGlzYWJsZWQ9M0QhMH0s
ZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy4kYnV0dG9uLnJlbW89CnZlQ2xhc3MoImRpc2FibGVkIiks
dGhpcy5kaXNhYmxlZD0zRCExfSxzZXRJY29uOmZ1bmN0aW9uKGUpe3RoaXMuJCgiaSIpLnJlbT0K
b3ZlQ2xhc3ModGhpcy5vcHRpb25zLmljb24pLmFkZENsYXNzKGUpLHRoaXMub3B0aW9ucy5pY29u
PTNEZX0sX3RlbXBsYXRlOmZ1PQpuY3Rpb24oZSl7dmFyIHQ9M0QiIjtlLnRpdGxlJiYodD0zRCJ3
aWR0aDogYXV0bzsiKTt2YXIgbj0zRCc8ZGl2IGlkPTNEIicrZS49CmlkKyciIHN0eWxlPTNEImZs
b2F0OiAnK2UuZmxvYXRpbmcrIjsgIit0KyciIGNsYXNzPTNEIicrZS5jbHMrJyI+JztyZXR1cm4g
ZT0KLnRpdGxlP24rPTNEJzxkaXYgY2xhc3M9M0QiYnV0dG9uIj48aSBjbGFzcz0zRCJpY29uIGZh
ICcrZS5pY29uKyciLz4mbmJzcDsnPQorJzxzcGFuIGNsYXNzPTNEInRpdGxlIj4nK2UudGl0bGUr
Ijwvc3Bhbj4iKyI8L2Rpdj4iOm4rPTNEJzxpIGNsYXNzPTNEImljb249CiBmYSAnK2UuaWNvbisn
Ii8+JyxuKz0zRCI8L2Rpdj4iLG59fSksaD0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25z
RGVmYT0KdWx0Ont0aXRsZToiIixjbHM6IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5v
cHRpb25zPTNEZS5tZXJnZSh0LHRoaXMuPQpvcHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGVtZW50
KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9ucykpLCQodGhpcy5lbCkub249CigiY2xpY2siLHQu
b25jbGljayl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdj48YSBocmVmPTNEImph
dmFzY3JpcD0KdDp2b2lkKDApIiBjbGFzcz0zRCJ1aS1hbmNob3IgJytlLmNscysnIj4nK2UudGl0
bGUrIjwvYT48L2Rpdj4ifX0pLHA9M0RCYWNrPQpib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVm
YXVsdDp7bWVzc2FnZTpudWxsLHN0YXR1czoiaW5mbyIscGVyc2lzdGVudDohMX09Cixpbml0aWFs
aXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNEZWZh
dWx0KSx0aGlzLj0Kc2V0RWxlbWVudCgiPGRpdj48L2Rpdj4iKSx0aGlzLm9wdGlvbnMubWVzc2Fn
ZSYmdGhpcy51cGRhdGUodGhpcy5vcHRpb25zKX0sPQp1cGRhdGU6ZnVuY3Rpb24odCl7dGhpcy5v
cHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpO2lmKHQubWVzc2E9CmdlIT0z
RCIiKXt0aGlzLiRlbC5odG1sKHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9ucykpLHRoaXMuJGVs
LmZpbmQoIi5hbGVydD0KIikuYXBwZW5kKHQubWVzc2FnZSksdGhpcy4kZWwuZmFkZUluKCksdGhp
cy50aW1lb3V0JiZ3aW5kb3cuY2xlYXJUaW1lb3V0KHRoPQppcy50aW1lb3V0KTtpZighdC5wZXJz
aXN0ZW50KXt2YXIgbj0zRHRoaXM7dGhpcy50aW1lb3V0PTNEd2luZG93LnNldFRpbWVvdXQ9Cihm
dW5jdGlvbigpe24uJGVsLmlzKCI6dmlzaWJsZSIpP24uJGVsLmZhZGVPdXQoKTpuLiRlbC5oaWRl
KCl9LDNlMyl9fWVsc2UgdD0KaGlzLiRlbC5mYWRlT3V0KCl9LF90ZW1wbGF0ZTpmdW5jdGlvbihl
KXtyZXR1cm4nPGRpdiBjbGFzcz0zRCJ1aS1tZXNzYWdlIGFsPQplcnQgYWxlcnQtJytlLnN0YXR1
cysnIi8+J319KSxkPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0OntvbmM9
CmxpY2s6bnVsbCxzZWFyY2h3b3JkOiIifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0
aW9ucz0zRGUubWVyZ2UodCx0aD0KaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCh0
aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKTt2YXIgbj0zRHRoPQppczt0aGlzLm9wdGlvbnMu
b25jbGljayYmdGhpcy4kZWwub24oInN1Ym1pdCIsZnVuY3Rpb24oZSl7dmFyIHQ9M0RuLiRlbC5m
aW49CmQoIiNzZWFyY2giKTtuLm9wdGlvbnMub25jbGljayh0LnZhbCgpKX0pfSxfdGVtcGxhdGU6
ZnVuY3Rpb24oZSl7cmV0dXJuJzxkaT0KdiBjbGFzcz0zRCJ1aS1zZWFyY2giPjxmb3JtIG9uc3Vi
bWl0PTNEInJldHVybiBmYWxzZTsiPjxpbnB1dCBpZD0zRCJzZWFyY2giPQogY2xhc3M9M0QiZm9y
bS1jb250cm9sIGlucHV0LXNtIiB0eXBlPTNEInRleHQiIG5hbWU9M0Qic2VhcmNoIiBwbGFjZWhv
bGRlcj0KPTNEIlNlYXJjaC4uLiIgdmFsdWU9M0QiJytlLnNlYXJjaHdvcmQrJyI+JysnPGJ1dHRv
biB0eXBlPTNEInN1Ym1pdCIgY2xhc3M9Cj0zRCJidG4gc2VhcmNoLWJ0biI+JysnPGkgY2xhc3M9
M0QiZmEgZmEtc2VhcmNoIj48L2k+JysiPC9idXR0b24+IisiPC9mb3JtPj0KIisiPC9kaXY+In19
KSx2PTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0Ont0eXBlOiJ0ZXh0Iixw
bGFjZWhvPQpsZGVyOiIiLGRpc2FibGVkOiExLHZpc2libGU6ITAsY2xzOiIiLGFyZWE6ITF9LGlu
aXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy49Cm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRp
b25zRGVmYXVsdCksdGhpcy5zZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRlKHRoaT0Kcy5vcHRpb25z
KSksdGhpcy5vcHRpb25zLnZhbHVlIT0zRD0zRHVuZGVmaW5lZCYmdGhpcy52YWx1ZSh0aGlzLm9w
dGlvbnMudmFsPQp1ZSksdGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLiRlbC5wcm9wKCJkaXNh
YmxlZCIsITApLHRoaXMub3B0aW9ucy52aXNpYmw9CmV8fHRoaXMuJGVsLmhpZGUoKTt2YXIgbj0z
RHRoaXM7dGhpcy4kZWwub24oImlucHV0IixmdW5jdGlvbigpe24ub3B0aW9ucy5vbj0KY2hhbmdl
JiZuLm9wdGlvbnMub25jaGFuZ2Uobi4kZWwudmFsKCkpfSl9LHZhbHVlOmZ1bmN0aW9uKGUpe3Jl
dHVybiBlIT0zRD0KPTNEdW5kZWZpbmVkJiZ0aGlzLiRlbC52YWwoZSksdGhpcy4kZWwudmFsKCl9
LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gPQplLmFyZWE/Jzx0ZXh0YXJlYSBpZD0zRCIn
K2UuaWQrJyIgY2xhc3M9M0QidWktdGV4dGFyZWEgJytlLmNscysnIj48L3RleHRhcmU9CmE+Jzon
PGlucHV0IGlkPTNEIicrZS5pZCsnIiB0eXBlPTNEIicrZS50eXBlKyciIHZhbHVlPTNEIicrZS52
YWx1ZSsnIiBwbGFjZT0KaG9sZGVyPTNEIicrZS5wbGFjZWhvbGRlcisnIiBjbGFzcz0zRCJ1aS1p
bnB1dCAnK2UuY2xzKyciPid9fSksbT0zREJhY2tib25lPQouVmlldy5leHRlbmQoe2luaXRpYWxp
emU6ZnVuY3Rpb24oZSl7dGhpcy5vcHRpb25zPTNEZSx0aGlzLnNldEVsZW1lbnQodGhpcy49Cl90
ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKSx0aGlzLm9wdGlvbnMudmFsdWUhPTNEPTNEdW5kZWZpbmVk
JiZ0aGlzLnZhbHVlKHRoaT0Kcy5vcHRpb25zLnZhbHVlKX0sdmFsdWU6ZnVuY3Rpb24oZSl7cmV0
dXJuIGUhPTNEPTNEdW5kZWZpbmVkJiZ0aGlzLiQoImhpZGRlPQpuIikudmFsKGUpLHRoaXMuJCgi
aGlkZGVuIikudmFsKCl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXt2YXIgdD0zRCc8ZGl2IGlkPQo9
M0QiJytlLmlkKyciID4nO3JldHVybiBlLmluZm8mJih0Kz0zRCI8bGFiZWw+IitlLmluZm8rIjwv
bGFiZWw+IiksdCs9M0QnPGg9CmlkZGVuIHZhbHVlPTNEIicrZS52YWx1ZSsnIi8+JysiPC9kaXY+
Iix0fX0pO3JldHVybntBbmNob3I6aCxCdXR0b246bCxCdXR0bz0Kbkljb246YyxCdXR0b25NZW51
OnMsSWNvbjpmLEltYWdlOnUsSW5wdXQ6dixMYWJlbDphLE1lc3NhZ2U6cCxNb2RhbDpvLFJhZGlv
PQpCdXR0b246ci5SYWRpb0J1dHRvbixDaGVja2JveDpyLkNoZWNrYm94LFJhZGlvOnIuUmFkaW8s
U2VhcmNoYm94OmQsU2VsZWN0OnQ9CixIaWRkZW46bSxTbGlkZXI6bixEcmlsbGRvd246aX19KSxk
ZWZpbmUoInBsdWdpbi9saWJyYXJ5L2pvYnMiLFsidXRpbHMvdXRpbD0KcyJdLGZ1bmN0aW9uKGUp
e3JldHVybiBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCxuKXt0
aGlzPQouYXBwPTNEdCx0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKG4sdGhpcy5vcHRpb25zRGVmYXVs
dCl9LHJlcXVlc3Q6ZnVuY3Rpb24oZSw9CnQsbixyLGkpe3ZhciBzPTNEdGhpcztlLnN0YXRlKCJ3
YWl0IiwiUmVxdWVzdGluZyBqb2IgcmVzdWx0cy4uLiIpO3ZhciBvPTNEZT0KLmdldCgiZGF0YXNl
dF9pZF9qb2IiKTtvIT0zRCIiP3MuX3dhaXQoZSxyLGkpOnMuX3N1Ym1pdChlLHQsbixyLGkpfSxj
bGVhbnVwPQo6ZnVuY3Rpb24odCl7dmFyIG49M0R0aGlzLHI9M0R0LmdldCgiZGF0YXNldF9pZF9q
b2IiKTtyIT0zRCIiJiYoZS5yZXF1ZXN0KHs9CnR5cGU6IlBVVCIsdXJsOmNvbmZpZy5yb290KyJh
cGkvaGlzdG9yaWVzL25vbmUvY29udGVudHMvIityLGRhdGE6e2RlbGV0ZWQ6IT0KMH0sc3VjY2Vz
czpmdW5jdGlvbigpe24uX3JlZnJlc2hIZGFzKCl9fSksdC5zZXQoImRhdGFzZXRfaWRfam9iIiwi
IikpfSxfc3ViPQptaXQ6ZnVuY3Rpb24odCxuLHIsaSxzKXt2YXIgbz0zRHRoaXMsdT0zRHQuaWQs
YT0zRHQuZ2V0KCJ0eXBlIiksZj0zRHQuZGVmaW49Cml0aW9uO2RhdGE9M0R7dG9vbF9pZDoiY2hh
cnRzIixpbnB1dHM6e2lucHV0OntpZDp0LmdldCgiZGF0YXNldF9pZCIpLHNyYzoiaD0KZGEifSxt
b2R1bGU6Zi5leGVjdXRlLGNvbHVtbnM6cixzZXR0aW5nczpufX0sdC5zdGF0ZSgid2FpdCIsIlNl
bmRpbmcgam9iIHJlPQpxdWVzdC4uLiIpLGUucmVxdWVzdCh7dHlwZToiUE9TVCIsdXJsOmNvbmZp
Zy5yb290KyJhcGkvdG9vbHMiLGRhdGE6ZGF0YSxzdWM9CmNlc3M6ZnVuY3Rpb24oZSl7aWYoIWUu
b3V0cHV0c3x8ZS5vdXRwdXRzLmxlbmd0aD0zRD0zRDApdC5zdGF0ZSgiZmFpbGVkIiwiSj0Kb2Ig
c3VibWlzc2lvbiBmYWlsZWQuIE5vIHJlc3BvbnNlLiIpLHMmJnMoKTtlbHNle28uX3JlZnJlc2hI
ZGFzKCk7dmFyIG49M0RlPQoub3V0cHV0c1swXTt0LnN0YXRlKCJ3YWl0IiwiWW91ciBqb2IgaGFz
IGJlZW4gcXVldWVkLiBZb3UgbWF5IGNsb3NlIHRoZSBicm89CndzZXIgd2luZG93LiBUaGUgam9i
IHdpbGwgcnVuIGluIHRoZSBiYWNrZ3JvdW5kLiIpLHQuc2V0KCJkYXRhc2V0X2lkX2pvYiIsbj0K
LmlkKSxvLmFwcC5zdG9yYWdlLnNhdmUoKSxvLl93YWl0KHQsaSxzKX19LGVycm9yOmZ1bmN0aW9u
KGUpe3ZhciBuPTNEIiI7ZSYmPQplLm1lc3NhZ2UmJmUubWVzc2FnZS5kYXRhJiZlLm1lc3NhZ2Uu
ZGF0YS5pbnB1dCYmKG49M0RlLm1lc3NhZ2UuZGF0YS5pbnB1dCs9CiIuIiksdC5zdGF0ZSgiZmFp
bGVkIiwiVGhpcyB2aXN1YWxpemF0aW9uIHJlcXVpcmVzIHRoZSAnY2hhcnRzJyB0b29sLiBQbGVh
cz0KZSBtYWtlIHN1cmUgaXQgaXMgaW5zdGFsbGVkLiAiK24pLHMmJnMoKX19KX0sX3dhaXQ6ZnVu
Y3Rpb24odCxuLHIpe3ZhciBpPTNEPQp0aGlzO2UucmVxdWVzdCh7dHlwZToiR0VUIix1cmw6Y29u
ZmlnLnJvb3QrImFwaS9kYXRhc2V0cy8iK3QuZ2V0KCJkYXRhc2V0X2k9CmRfam9iIiksZGF0YTp7
fSxzdWNjZXNzOmZ1bmN0aW9uKGUpe3ZhciBzPTNEITE7c3dpdGNoKGUuc3RhdGUpe2Nhc2Uib2si
OnQucz0KdGF0ZSgid2FpdCIsIkpvYiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Li4uIiksbiYmbihl
KSxzPTNEITA7YnJlYWs7Y2FzZSJlcnJvPQpyIjp0LnN0YXRlKCJmYWlsZWQiLCJKb2IgaGFzIGZh
aWxlZC4gUGxlYXNlIGNoZWNrIHRoZSBoaXN0b3J5IGZvciBkZXRhaWxzLiI9CiksciYmcihlKSxz
PTNEITA7YnJlYWs7Y2FzZSJydW5uaW5nIjp0LnN0YXRlKCJ3YWl0IiwiWW91ciBqb2IgaXMgcnVu
bmluZy4gWT0Kb3UgbWF5IGNsb3NlIHRoZSBicm93c2VyIHdpbmRvdy4gVGhlIGpvYiB3aWxsIGNv
bnRpbnVlIGluIHRoZSBiYWNrZ3JvdW5kLiIpPQp9c3x8c2V0VGltZW91dChmdW5jdGlvbigpe2ku
X3dhaXQodCxuLHIpfSxpLmFwcC5jb25maWcuZ2V0KCJxdWVyeV90aW1lb3V0Iik9Cil9fSl9LF9y
ZWZyZXNoSGRhczpmdW5jdGlvbigpe0dhbGF4eSYmR2FsYXh5LmN1cnJIaXN0b3J5UGFuZWwmJkdh
bGF4eS5jdXJySD0KaXN0b3J5UGFuZWwucmVmcmVzaENvbnRlbnRzKCl9fSl9KSxkZWZpbmUoInBs
dWdpbi9saWJyYXJ5L2RhdGFzZXRzIixbInV0aWxzPQovdXRpbHMiXSxmdW5jdGlvbihlKXtyZXR1
cm4gQmFja2JvbmUuQ29sbGVjdGlvbi5leHRlbmQoe2xpc3Q6e30sY2FjaGU6e30saW49Cml0aWFs
aXplOmZ1bmN0aW9uKHQsbil7dGhpcy5hcHA9M0R0LHRoaXMub3B0aW9ucz0zRGUubWVyZ2Uobix0
aGlzLm9wdGlvbnNEZT0KZmF1bHQpfSxyZXF1ZXN0OmZ1bmN0aW9uKGUpe2UuZ3JvdXBzP3RoaXMu
X2dldF9ibG9ja3MoZSk6dGhpcy5fZ2V0X2RhdGFzZXQoPQplLmlkLGUuc3VjY2VzcyxlLmVycm9y
KX0sX2dldF9ibG9ja3M6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gYyhpKXtsLl9nZXQoaSxmdW49CmN0
aW9uKCl7dmFyIHM9M0QhMTtmb3IodmFyIG8gaW4gZS5ncm91cHMpe2Rlc3RpbmF0aW9uX2dyb3Vw
PTNEZS5ncm91cHNbb10scz0Kb3VyY2VfZ3JvdXA9M0RpLmdyb3Vwc1tvXSxkZXN0aW5hdGlvbl9n
cm91cC52YWx1ZXN8fChkZXN0aW5hdGlvbl9ncm91cC52YWx1PQplcz0zRFtdKSxkZXN0aW5hdGlv
bl9ncm91cC52YWx1ZXM9M0RkZXN0aW5hdGlvbl9ncm91cC52YWx1ZXMuY29uY2F0KHNvdXJjZV89
Cmdyb3VwLnZhbHVlcyk7aWYoc291cmNlX2dyb3VwLnZhbHVlcy5sZW5ndGg9M0Q9M0QwKXtzPTNE
ITA7YnJlYWt9fWlmKCsrZjx1Jj0KJiFzKXtuJiZuKHBhcnNlSW50KGYvdSoxMDApKTt2YXIgbD0z
RGkuc3RhcnQrcjtpPTNEJC5leHRlbmQoITAsYSx7c3RhcnQ6bH0pPQosYyhpKX1lbHNlIHQoKX0p
fXZhciB0PTNEZS5zdWNjZXNzLG49M0RlLnByb2dyZXNzLHI9M0R0aGlzLmFwcC5jb25maWcuZ2V0
KCI9CnF1ZXJ5X2xpbWl0IiksaT0zRGUuc3RhcnR8fDAscz0zRGkrZS5xdWVyeV9saW1pdHx8aSt0
aGlzLmFwcC5jb25maWcuZ2V0KCJxdT0KZXJ5X2xpbWl0Iiksbz0zRE1hdGguYWJzKHMtaSk7aWYo
bzw9M0QwKXtjb25zb2xlLmRlYnVnKCJGQUlMRUQgLSBEYXRhc2V0czo6PQpyZXF1ZXN0KCkgLSBJ
bnZhbGlkIHF1ZXJ5IHJhbmdlLiIpO3JldHVybn12YXIgdT0zRE1hdGguY2VpbChvL3IpfHwxLGE9
M0QkLmU9Cnh0ZW5kKCEwLHt9LGUpLGY9M0QwLGw9M0R0aGlzLGg9M0QkLmV4dGVuZCghMCxhLHtz
dGFydDppfSk7dGhpcy5fZ2V0X2RhdGFzZT0KdChlLmlkLGZ1bmN0aW9uKCl7YyhoKX0pfSxfZ2V0
X2RhdGFzZXQ6ZnVuY3Rpb24odCxuLHIpe3ZhciBpPTNEdGhpcy5saXN0W3RdPQo7aWYoaSl7bihp
KTtyZXR1cm59dmFyIHM9M0R0aGlzO2UucmVxdWVzdCh7dHlwZToiR0VUIix1cmw6Y29uZmlnLnJv
b3QrImFwaS89CmRhdGFzZXRzLyIrdCxzdWNjZXNzOmZ1bmN0aW9uKGUpe3N3aXRjaChlLnN0YXRl
KXtjYXNlImVycm9yIjpyJiZyKGUpO2JyZWFrOz0KZGVmYXVsdDpzLmxpc3RbdF09M0RlLG4oZSl9
fX0pfSxfYmxvY2tfaWQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5pZCsiXyIrZS5zPQp0YXJ0KyJf
IitlLnN0YXJ0K3RoaXMuYXBwLmNvbmZpZy5nZXQoInF1ZXJ5X2xpbWl0IikrIl8iK3R9LF9nZXQ6
ZnVuY3Rpb24oZSw9CnQpe2Uuc3RhcnQ9M0RlLnN0YXJ0fHwwO3ZhciBuPTNEW10scj0zRHt9LGk9
M0QwO2Zvcih2YXIgcyBpbiBlLmdyb3Vwcyl7dmFyID0Kbz0zRGUuZ3JvdXBzW3NdO2Zvcih2YXIg
dSBpbiBvLmNvbHVtbnMpe3ZhciBhPTNEby5jb2x1bW5zW3VdLmluZGV4LGY9M0R0aGlzPQouX2Js
b2NrX2lkKGUsYSk7aWYodGhpcy5jYWNoZVtmXXx8YT0zRD0zRD0zRCJhdXRvInx8YT0zRD0zRD0z
RCJ6ZXJvIiljb250aW49CnVlOyFyW2FdJiZhIT0zRD0zRHVuZGVmaW5lZCYmKHJbYV09M0RpLG4u
cHVzaChhKSxpKyspfX1pZihuLmxlbmd0aD0zRD0zRDApez0KdGhpcy5fZmlsbF9mcm9tX2NhY2hl
KGUpLHQoZSk7cmV0dXJufXZhciBsPTNEe2RhdGFzZXRfaWQ6ZS5pZCxzdGFydDplLnN0YXJ0PQos
Y29sdW1uczpufSxjPTNEdGhpczt0aGlzLl9mZXRjaChsLGZ1bmN0aW9uKHIpe2Zvcih2YXIgaSBp
biByKXt2YXIgcz0zRG5baV09CixvPTNEYy5fYmxvY2tfaWQoZSxzKTtjLmNhY2hlW29dPTNEcltp
XX1jLl9maWxsX2Zyb21fY2FjaGUoZSksdChlKX0pfSxfZmlsbD0KX2Zyb21fY2FjaGU6ZnVuY3Rp
b24oZSl7dmFyIHQ9M0RlLnN0YXJ0O2NvbnNvbGUuZGVidWcoIkRhdGFzZXRzOjpfZmlsbF9mcm9t
PQpfY2FjaGUoKSAtIEZpbGxpbmcgcmVxdWVzdCBmcm9tIGNhY2hlIGF0ICIrdCsiLiIpO3ZhciBu
PTNEMDtmb3IodmFyIHIgaW4gZS49Cmdyb3Vwcyl7dmFyIGk9M0RlLmdyb3Vwc1tyXTtmb3IodmFy
IHMgaW4gaS5jb2x1bW5zKXt2YXIgbz0zRGkuY29sdW1uc1tzXSx1PQo9M0R0aGlzLl9ibG9ja19p
ZChlLG8uaW5kZXgpLGE9M0R0aGlzLmNhY2hlW3VdO2EmJihuPTNETWF0aC5tYXgobixhLmxlbmd0
aCk9Cil9fW49M0Q9M0QwJiZjb25zb2xlLmRlYnVnKCJEYXRhc2V0czo6X2ZpbGxfZnJvbV9jYWNo
ZSgpIC0gUmVhY2hlZCBkYXRhIHJhbj0KZ2UgbGltaXQuIik7Zm9yKHZhciByIGluIGUuZ3JvdXBz
KXt2YXIgaT0zRGUuZ3JvdXBzW3JdO2kudmFsdWVzPTNEW107Zm9yKHZhPQpyIGY9M0QwO2Y8bjtm
KyspaS52YWx1ZXNbZl09M0R7eDpwYXJzZUludChmKSt0fX1mb3IodmFyIHIgaW4gZS5ncm91cHMp
e3ZhciA9Cmk9M0RlLmdyb3Vwc1tyXTtmb3IodmFyIHMgaW4gaS5jb2x1bW5zKXt2YXIgbz0zRGku
Y29sdW1uc1tzXTtzd2l0Y2goby5pbmRleD0KKXtjYXNlImF1dG8iOmZvcih2YXIgZj0zRDA7Zjxu
O2YrKyl7dmFyIGw9M0RpLnZhbHVlc1tmXTtsW3NdPTNEcGFyc2VJbnQoZikrPQp0fWJyZWFrO2Nh
c2UiemVybyI6Zm9yKHZhciBmPTNEMDtmPG47ZisrKXt2YXIgbD0zRGkudmFsdWVzW2ZdO2xbc109
M0QwfWJyZWE9Cms7ZGVmYXVsdDp2YXIgdT0zRHRoaXMuX2Jsb2NrX2lkKGUsby5pbmRleCksYT0z
RHRoaXMuY2FjaGVbdV07Zm9yKHZhciBmPTNEMD0KO2Y8bjtmKyspe3ZhciBsPTNEaS52YWx1ZXNb
Zl0sYz0zRGFbZl07aXNOYU4oYykmJiFvLmlzX2xhYmVsJiYoYz0zRDApLGxbc109Cj0zRGN9fX19
fSxfZmV0Y2g6ZnVuY3Rpb24odCxuKXt2YXIgcj0zRHQuc3RhcnQ/dC5zdGFydDowLGk9M0R0aGlz
LmFwcC5jb25maT0KZy5nZXQoInF1ZXJ5X2xpbWl0Iikscz0zRDA7dC5jb2x1bW5zJiYocz0zRHQu
Y29sdW1ucy5sZW5ndGgsY29uc29sZS5kZWJ1ZygiPQpEYXRhc2V0czo6X2ZldGNoKCkgLSBGZXRj
aGluZyAiK3MrIiBjb2x1bW4ocykgYXQgIityKyIuIikpLHM9M0Q9M0QwJiZjb25zb2w9CmUuZGVi
dWcoIkRhdGFzZXRzOjpfZmV0Y2goKSAtIE5vIGNvbHVtbnMgcmVxdWVzdGVkIik7dmFyIG89M0Qi
Ijtmb3IodmFyIHUgaT0KbiB0LmNvbHVtbnMpbys9M0R0LmNvbHVtbnNbdV0rIiwiO289M0RvLnN1
YnN0cmluZygwLG8ubGVuZ3RoLTEpO3ZhciBhPTNEdGhpPQpzO2UucmVxdWVzdCh7dHlwZToiR0VU
Iix1cmw6Y29uZmlnLnJvb3QrImFwaS9kYXRhc2V0cy8iK3QuZGF0YXNldF9pZCxkYXRhOns9CmRh
dGFfdHlwZToicmF3X2RhdGEiLHByb3ZpZGVyOiJkYXRhc2V0LWNvbHVtbiIsbGltaXQ6aSxvZmZz
ZXQ6cixpbmRlY2VzOm99LD0Kc3VjY2VzczpmdW5jdGlvbihlKXt2YXIgdD0zRG5ldyBBcnJheShz
KTtmb3IodmFyIHI9M0QwO3I8cztyKyspdFtyXT0zRFtdO2ZvPQpyKHZhciByIGluIGUuZGF0YSl7
dmFyIGk9M0RlLmRhdGFbcl07Zm9yKHZhciBvIGluIGkpe3ZhciB1PTNEaVtvXTt1IT0zRD0zRHU9
Cm5kZWZpbmVkJiZ1IT0zRDIxNDc0ODM2NDcmJnRbb10ucHVzaCh1KX19Y29uc29sZS5kZWJ1Zygi
RGF0YXNldHM6Ol9mZXRjaCgpID0KLSBGZXRjaGluZyBjb21wbGV0ZS4iKSxuKHQpfX0pfX0pfSks
ZGVmaW5lKCJwbHVnaW4vbW9kZWxzL2dyb3VwIixbXSxmdW5jdGlvPQpuKCl7cmV0dXJuIEJhY2ti
b25lLk1vZGVsLmV4dGVuZCh7ZGVmYXVsdHM6e2tleToiRGF0YSBsYWJlbCIsZGF0ZToiIn0scmVz
ZXQ9CjpmdW5jdGlvbigpe3RoaXMuY2xlYXIoe3NpbGVudDohMH0pLnNldCh0aGlzLmRlZmF1bHRz
KSx0aGlzLnRyaWdnZXIoInJlc2V0Ij0KLHRoaXMpfX0pfSksZGVmaW5lKCJwbHVnaW4vbW9kZWxz
L2dyb3VwcyIsWyJwbHVnaW4vbW9kZWxzL2dyb3VwIl0sZnVuY3Rpb24oPQplKXtyZXR1cm4gQmFj
a2JvbmUuQ29sbGVjdGlvbi5leHRlbmQoe21vZGVsOmV9KX0pLGRlZmluZSgicGx1Z2luL21vZGVs
cy9jaGE9CnJ0IixbInBsdWdpbi9tb2RlbHMvZ3JvdXBzIl0sZnVuY3Rpb24oZSl7cmV0dXJuIEJh
Y2tib25lLk1vZGVsLmV4dGVuZCh7ZGVmYT0KdWx0czp7aWQ6bnVsbCx0aXRsZToiIix0eXBlOiIi
LGRhdGU6bnVsbCxzdGF0ZToiIixzdGF0ZV9pbmZvOiIiLG1vZGlmaWVkOiExPQosZGF0YXNldF9p
ZDoiIixkYXRhc2V0X2lkX2pvYjoiIn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLmdyb3Vw
cz0zRG5ldyA9CmUsdGhpcy5zZXR0aW5ncz0zRG5ldyBCYWNrYm9uZS5Nb2RlbH0scmVzZXQ6ZnVu
Y3Rpb24oKXt0aGlzLmNsZWFyKHtzaWxlbnQ6IT0KMH0pLnNldCh0aGlzLmRlZmF1bHRzKSx0aGlz
Lmdyb3Vwcy5yZXNldCgpLHRoaXMuc2V0dGluZ3MuY2xlYXIoKSx0aGlzLnRyaWdnPQplcigicmVz
ZXQiLHRoaXMpfSxjb3B5OmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpczt0LmNsZWFyKHtzaWxlbnQ6
ITB9KS5zZXQodGg9CmlzLmRlZmF1bHRzKSx0LnNldChlLmF0dHJpYnV0ZXMpLHQuc2V0dGluZ3M9
M0RlLnNldHRpbmdzLmNsb25lKCksdC5ncm91cHMucj0KZXNldCgpLGUuZ3JvdXBzLmVhY2goZnVu
Y3Rpb24oZSl7dC5ncm91cHMuYWRkKGUuY2xvbmUoKSl9KSx0LnRyaWdnZXIoImNoYW5nPQplIix0
KX0sc3RhdGU6ZnVuY3Rpb24oZSx0KXt0aGlzLnNldCgic3RhdGUiLGUpLHRoaXMuc2V0KCJzdGF0
ZV9pbmZvIix0KSx0aGk9CnMudHJpZ2dlcigic2V0OnN0YXRlIiksY29uc29sZS5kZWJ1ZygiQ2hh
cnQ6c3RhdGUoKSAtICIrdCsiICgiK2UrIikiKX19KX0pOz0KdmFyIFZpc3VhbGl6YXRpb249M0RC
YWNrYm9uZS5Nb2RlbC5leHRlbmQoe2RlZmF1bHRzOntjb25maWc6e319LHVybFJvb3Q6ZnVuPQpj
dGlvbigpe3ZhciBlPTNEIi9hcGkvdmlzdWFsaXphdGlvbnMiO3JldHVybiB3aW5kb3cuZ2FsYXh5
X2NvbmZpZyYmZ2FsYXh5X2M9Cm9uZmlnLnJvb3Q/Z2FsYXh5X2NvbmZpZy5yb290K2U6ZX0saW5p
dGlhbGl6ZTpmdW5jdGlvbihlKXtfLmlzT2JqZWN0KGUuY29uZj0KaWcpJiZfLmlzT2JqZWN0KHRo
aXMuZGVmYXVsdHMuY29uZmlnKSYmXy5kZWZhdWx0cyhlLmNvbmZpZyx0aGlzLmRlZmF1bHRzLmNv
PQpuZmlnKSx0aGlzLl9zZXRVcExpc3RlbmVycygpfSxfc2V0VXBMaXN0ZW5lcnM6ZnVuY3Rpb24o
KXt9LHNldDpmdW5jdGlvbihlLHQ9Cil7aWYoZT0zRD0zRD0zRCJjb25maWciKXt2YXIgbj0zRHRo
aXMuZ2V0KCJjb25maWciKTtfLmlzT2JqZWN0KG4pJiYodD0zRF8uZT0KeHRlbmQoXy5jbG9uZShu
KSx0KSl9cmV0dXJuIEJhY2tib25lLk1vZGVsLnByb3RvdHlwZS5zZXQuY2FsbCh0aGlzLGUsdCks
dGhpPQpzfSx0b1N0cmluZzpmdW5jdGlvbigpe3ZhciBlPTNEdGhpcy5nZXQoImlkIil8fCIiO3Jl
dHVybiB0aGlzLmdldCgidGl0bGUiKSY9CiYoZSs9M0QiOiIrdGhpcy5nZXQoInRpdGxlIikpLCJW
aXN1YWxpemF0aW9uKCIrZSsiKSJ9fSksVmlzdWFsaXphdGlvbkNvbGxlYz0KdGlvbj0zREJhY2ti
b25lLkNvbGxlY3Rpb24uZXh0ZW5kKHttb2RlbDpWaXN1YWxpemF0aW9uLHVybDpmdW5jdGlvbigp
e3JldHVyPQpuIGdhbGF4eV9jb25maWcucm9vdCsiYXBpL3Zpc3VhbGl6YXRpb25zIn0saW5pdGlh
bGl6ZTpmdW5jdGlvbihlLHQpe3Q9M0R0fHw9Cnt9fSxzZXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj0z
RHRoaXM7ZT0zRF8ubWFwKGUsZnVuY3Rpb24oZSl7dmFyIHQ9M0RuLmdldChlLj0KaWQpO2lmKCF0
KXJldHVybiBlO3ZhciByPTNEdC50b0pTT04oKTtyZXR1cm4gXy5leHRlbmQocixlKSxyfSksQmFj
a2JvbmUuQ29sPQpsZWN0aW9uLnByb3RvdHlwZS5zZXQuY2FsbCh0aGlzLGUsdCl9LHRvU3RyaW5n
OmZ1bmN0aW9uKCl7cmV0dXJuWyJWaXN1YWxpemE9CnRpb25Db2xsZWN0aW9uKCIsW3RoaXMuaGlz
dG9yeUlkLHRoaXMubGVuZ3RoXS5qb2luKCksIikiXS5qb2luKCIiKX19KTtkZWZpbj0KZSgibXZj
L3Zpc3VhbGl6YXRpb24vdmlzdWFsaXphdGlvbi1tb2RlbCIsZnVuY3Rpb24oKXt9KSxkZWZpbmUo
InBsdWdpbi9saWJyPQphcnkvc3RvcmFnZSIsWyJ1dGlscy91dGlscyIsInBsdWdpbi9tb2RlbHMv
Y2hhcnQiLCJwbHVnaW4vbW9kZWxzL2dyb3VwIiwibXY9CmMvdmlzdWFsaXphdGlvbi92aXN1YWxp
emF0aW9uLW1vZGVsIl0sZnVuY3Rpb24oZSx0LG4pe3JldHVybiBCYWNrYm9uZS5Nb2RlbD0KLmV4
dGVuZCh7dmlzOm51bGwsaW5pdGlhbGl6ZTpmdW5jdGlvbihlKXt0aGlzLmFwcD0zRGUsdGhpcy5j
aGFydD0zRHRoaXMuYXBwPQouY2hhcnQsdGhpcy5vcHRpb25zPTNEdGhpcy5hcHAub3B0aW9ucyx0
aGlzLmlkPTNEdGhpcy5vcHRpb25zLmlkLHRoaXMudmlzPQo9M0RuZXcgVmlzdWFsaXphdGlvbih7
dHlwZToiY2hhcnRzIixjb25maWc6e2RhdGFzZXRfaWQ6dGhpcy5vcHRpb25zLmNvbmZpZy49CmRh
dGFzZXRfaWQsY2hhcnRfZGljdDp7fX19KSx0aGlzLmlkJiYodGhpcy52aXMuaWQ9M0R0aGlzLmlk
KTt2YXIgdD0zRHRoaXMubz0KcHRpb25zLmNvbmZpZy5jaGFydF9kaWN0O3QmJih0aGlzLnZpcy5n
ZXQoImNvbmZpZyIpLmNoYXJ0X2RpY3Q9M0R0KX0sc2F2ZTpmPQp1bmN0aW9uKCl7dmFyIGU9M0R0
aGlzLmFwcC5jaGFydDt0aGlzLnZpcy5nZXQoImNvbmZpZyIpLmNoYXJ0X2RpY3Q9M0R7fTt2YXI9
CiB0PTNEZS5nZXQoInRpdGxlIik7dCE9M0QiIiYmdGhpcy52aXMuc2V0KCJ0aXRsZSIsdCk7dmFy
IG49M0R7YXR0cmlidXRlczplLj0KYXR0cmlidXRlcyxzZXR0aW5nczplLnNldHRpbmdzLmF0dHJp
YnV0ZXMsZ3JvdXBzOltdfTtlLmdyb3Vwcy5lYWNoKGZ1bmN0aW9uPQooZSl7bi5ncm91cHMucHVz
aChlLmF0dHJpYnV0ZXMpfSksdGhpcy52aXMuZ2V0KCJjb25maWciKS5jaGFydF9kaWN0PTNEbjt2
YXI9CiByPTNEdGhpczt0aGlzLnZpcy5zYXZlKCkuZmFpbChmdW5jdGlvbihlLHQsbil7Y29uc29s
ZS5lcnJvcihlLHQsbil9KS50aGVuKD0KZnVuY3Rpb24oZSl7ZSYmZS5pZCYmKHIuaWQ9M0RlLmlk
KX0pfSxsb2FkOmZ1bmN0aW9uKCl7dmFyIGU9M0R0aGlzLnZpcy5nZXQoPQoiY29uZmlnIikuY2hh
cnRfZGljdDtpZighZS5hdHRyaWJ1dGVzKXJldHVybiExO3ZhciB0PTNEZS5hdHRyaWJ1dGVzLnR5
cGU7aWY9CighdClyZXR1cm4gY29uc29sZS5kZWJ1ZygiU3RvcmFnZTo6bG9hZCgpIC0gQ2hhcnQg
dHlwZSBub3QgcHJvdmlkZWQuIEludmFsaT0KZCBmb3JtYXQuIiksITE7dmFyIHI9M0R0aGlzLmFw
cC50eXBlcy5nZXQodCk7aWYoIXIpcmV0dXJuIGNvbnNvbGUuZGVidWcoIlN0PQpvcmFnZTo6bG9h
ZCgpIC0gQ2hhcnQgdHlwZSBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgcmUtY29uZmlndXJlIHRoZSBj
aGFydC4gUmU9CnNldHRpbmcgY2hhcnQuIiksITE7Y29uc29sZS5kZWJ1ZygiU3RvcmFnZTo6bG9h
ZCgpIC0gTG9hZGluZyBjaGFydCB0eXBlICIrdD0KKyIuIiksdGhpcy5jaGFydC5kZWZpbml0aW9u
PTNEcix0aGlzLmNoYXJ0LnNldChlLmF0dHJpYnV0ZXMpLHRoaXMuY2hhcnQuc3RhPQp0ZSgib2si
LCJMb2FkaW5nIHNhdmVkIHZpc3VhbGl6YXRpb24uLi4iKSx0aGlzLmNoYXJ0LnNldHRpbmdzLnNl
dChlLnNldHRpbmc9CnMpO2Zvcih2YXIgaSBpbiBlLmdyb3Vwcyl0aGlzLmNoYXJ0Lmdyb3Vwcy5h
ZGQobmV3IG4oZS5ncm91cHNbaV0pKTtyZXR1cm4gdD0KaGlzLmNoYXJ0LnNldCgibW9kaWZpZWQi
LCExKSwhMH19KX0pLGRlZmluZSgidXRpbHMvZGVmZXJyZWQiLFsidXRpbHMvdXRpbHMiPQpdLGZ1
bmN0aW9uKGUpe3JldHVybiBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe3F1ZXVlOltdLHByb2Nlc3M6
e30sY291bnRlcjowLGk9Cm5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMub24oInJlZnJlc2giLGZ1
bmN0aW9uKCl7aWYodGhpcy5xdWV1ZS5sZW5ndGg+MCYmdD0KaGlzLnJlYWR5KCkpe3ZhciBlPTNE
dGhpcy5xdWV1ZVswXTt0aGlzLnF1ZXVlLnNwbGljZSgwLDEpLGUmJmUoKX19KX0sZXhlY3V0PQpl
OmZ1bmN0aW9uKGUpe3RoaXMucXVldWUucHVzaChlKSx0aGlzLnRyaWdnZXIoInJlZnJlc2giKX0s
cmVnaXN0ZXI6ZnVuY3Rpb249Cigpe3ZhciB0PTNEZS51dWlkKCk7cmV0dXJuIHRoaXMucHJvY2Vz
c1t0XT0zRCEwLHRoaXMuY291bnRlcisrLGNvbnNvbGUuZGVidT0KZygiRGVmZXJyZWQ6cmVnaXN0
ZXIoKSAtIFJlZ2lzdGVyaW5nICIrdCksdH0sZG9uZTpmdW5jdGlvbihlKXt0aGlzLnByb2Nlc3Nb
PQplXSYmKGRlbGV0ZSB0aGlzLnByb2Nlc3NbZV0sdGhpcy5jb3VudGVyLS0sY29uc29sZS5kZWJ1
ZygiRGVmZXJyZWQ6ZG9uZSgpIC09CiBVbnJlZ2lzdGVyaW5nICIrZSksdGhpcy50cmlnZ2VyKCJy
ZWZyZXNoIikpfSxyZXNldDpmdW5jdGlvbigpe3RoaXMucXVldWU9Cj0zRFtdfSxyZWFkeTpmdW5j
dGlvbigpe3JldHVybiB0aGlzLmNvdW50ZXI9M0Q9M0QwfX0pfSksZGVmaW5lKCJwbHVnaW4vdmll
dz0Kcy92aWV3cG9ydCIsWyJtdmMvdWkvdWktcG9ydGxldCIsIm12Yy91aS91aS1taXNjIiwidXRp
bHMvdXRpbHMiXSxmdW5jdGlvbihlPQosdCxuKXtyZXR1cm4gQmFja2JvbmUuVmlldy5leHRlbmQo
e2NvbnRhaW5lcl9saXN0OltdLGNhbnZhc19saXN0OltdLGluaXRpYWw9Cml6ZTpmdW5jdGlvbihl
LHQpe3RoaXMuYXBwPTNEZSx0aGlzLmNoYXJ0PTNEdGhpcy5hcHAuY2hhcnQsdGhpcy5vcHRpb25z
PTNEbj0KLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGVtZW50KCQodGhp
cy5fdGVtcGxhdGUoKSkpLHRoaXMuX2Z1PQpsbHNjcmVlbih0aGlzLiRlbCwxMDApLHRoaXMuX2Ny
ZWF0ZUNvbnRhaW5lcigiZGl2Iik7dmFyIHI9M0R0aGlzO3RoaXMuY2hhcnQ9Ci5vbigicmVkcmF3
IixmdW5jdGlvbigpe3IuX2RyYXcoci5jaGFydCl9KSx0aGlzLmNoYXJ0Lm9uKCJzZXQ6c3RhdGUi
LGZ1bmN0aT0Kb24oKXt2YXIgZT0zRHIuJGVsLmZpbmQoIiNpbmZvIiksdD0zRHIuJGVsLmZpbmQo
Ii5jaGFydHMtdmlld3BvcnQtY29udGFpbmVyPQoiKSxuPTNEZS5maW5kKCIjaWNvbiIpO24ucmVt
b3ZlQ2xhc3MoKSxlLnNob3coKSxlLmZpbmQoIiN0ZXh0IikuaHRtbChyLmNoYXI9CnQuZ2V0KCJz
dGF0ZV9pbmZvIikpO3ZhciBpPTNEci5jaGFydC5nZXQoInN0YXRlIik7c3dpdGNoKGkpe2Nhc2Ui
b2siOmUuaGlkZT0KKCksdC5zaG93KCk7YnJlYWs7Y2FzZSJmYWlsZWQiOm4uYWRkQ2xhc3MoImlj
b24gZmEgZmEtd2FybmluZyIpLHQuaGlkZSgpO2JyPQplYWs7ZGVmYXVsdDpuLmFkZENsYXNzKCJp
Y29uIGZhIGZhLXNwaW5uZXIgZmEtc3BpbiIpLHQuc2hvdygpfX0pfSxzaG93OmZ1bmM9CnRpb24o
KXt0aGlzLiRlbC5zaG93KCl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLiRlbC5oaWRlKCl9LF9mdWxs
c2NyZWVuOmZ1bmN0aT0Kb24oZSx0KXtlLmNzcygiaGVpZ2h0IiwkKHdpbmRvdykuaGVpZ2h0KCkt
dCksJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbigpe2UuPQpjc3MoImhlaWdodCIsJCh3aW5kb3cp
LmhlaWdodCgpLXQpfSl9LF9jcmVhdGVDb250YWluZXI6ZnVuY3Rpb24oZSx0KXt0PTNEdHw9Cnwx
O2Zvcih2YXIgbiBpbiB0aGlzLmNvbnRhaW5lcl9saXN0KXRoaXMuY29udGFpbmVyX2xpc3Rbbl0u
cmVtb3ZlKCk7dGhpcy5jbz0KbnRhaW5lcl9saXN0PTNEW10sdGhpcy5jYW52YXNfbGlzdD0zRFtd
O2Zvcih2YXIgbj0zRDA7bjx0O24rKyl7dmFyIHI9M0QkKHRoPQppcy5fdGVtcGxhdGVDb250YWlu
ZXIoZSxwYXJzZUludCgxMDAvdCkpKTt0aGlzLiRlbC5hcHBlbmQociksdGhpcy5jb250YWluZXI9
Cl9saXN0W25dPTNEcix0aGlzLmNhbnZhc19saXN0W25dPTNEci5maW5kKCIuY2hhcnRzLXZpZXdw
b3J0LWNhbnZhcyIpLmF0dHIoIj0KaWQiKX19LF9kcmF3OmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhp
cyxuPTNEdGhpcy5hcHAuZGVmZXJyZWQucmVnaXN0ZXIoKSxyPTNEPQplLmdldCgidHlwZSIpO3Ro
aXMuY2hhcnRfZGVmaW5pdGlvbj0zRGUuZGVmaW5pdGlvbjt2YXIgaT0zRDE7ZS5zZXR0aW5ncy5n
ZXQ9CigidXNlX3BhbmVscyIpPTNEPTNEPTNEInRydWUiJiYoaT0zRGUuZ3JvdXBzLmxlbmd0aCks
dGhpcy5fY3JlYXRlQ29udGFpbmVyKD0KdGhpcy5jaGFydF9kZWZpbml0aW9uLnRhZyxpKSxlLnN0
YXRlKCJ3YWl0IiwiUGxlYXNlIHdhaXQuLi4iKTtpZighdGhpcy5jaGFyPQp0X2RlZmluaXRpb24u
ZXhlY3V0ZXx8dGhpcy5jaGFydF9kZWZpbml0aW9uLmV4ZWN1dGUmJmUuZ2V0KCJtb2RpZmllZCIp
KXRoaXM9Ci5hcHAuam9icy5jbGVhbnVwKGUpLGUuc2V0KCJtb2RpZmllZCIsITEpO3ZhciB0PTNE
dGhpcztyZXF1aXJlKFsicGx1Z2luL2NoYT0KcnRzLyIrdGhpcy5hcHAuY2hhcnRQYXRoKHIpKyIv
d3JhcHBlciJdLGZ1bmN0aW9uKHIpe2lmKHQuY2hhcnRfZGVmaW5pdGlvbi5lPQp4ZWN1dGUpdC5h
cHAuam9icy5yZXF1ZXN0KGUsdC5fZGVmYXVsdFNldHRpbmdzU3RyaW5nKGUpLHQuX2RlZmF1bHRS
ZXF1ZXN0U3Q9CnJpbmcoZSksZnVuY3Rpb24oKXt2YXIgaT0zRG5ldyByKHQuYXBwLHtwcm9jZXNz
X2lkOm4sY2hhcnQ6ZSxyZXF1ZXN0X2RpY3Rpbz0KbmFyeTp0Ll9kZWZhdWx0UmVxdWVzdERpY3Rp
b25hcnkoZSksY2FudmFzX2xpc3Q6dC5jYW52YXNfbGlzdH0pfSxmdW5jdGlvbigpPQp7dGhpcy5h
cHAuZGVmZXJyZWQuZG9uZShuKX0pO2Vsc2UgdmFyIGk9M0RuZXcgcih0LmFwcCx7cHJvY2Vzc19p
ZDpuLGNoYXJ0OmU9CixyZXF1ZXN0X2RpY3Rpb25hcnk6dC5fZGVmYXVsdFJlcXVlc3REaWN0aW9u
YXJ5KGUpLGNhbnZhc19saXN0OnQuY2FudmFzX2xpcz0KdH0pfSl9LF9kZWZhdWx0UmVxdWVzdFN0
cmluZzpmdW5jdGlvbihlKXt2YXIgdD0zRCIiLG49M0QwLHI9M0R0aGlzO3JldHVybiBlPQouZ3Jv
dXBzLmVhY2goZnVuY3Rpb24oZSl7bisrO2Zvcih2YXIgaSBpbiByLmNoYXJ0X2RlZmluaXRpb24u
Y29sdW1ucyl0Kz0zRGk9CisiXyIrbisiOiIrKHBhcnNlSW50KGUuZ2V0KGkpKSsxKSsiLCAifSks
dC5zdWJzdHJpbmcoMCx0Lmxlbmd0aC0yKX0sX2RlZmF1bD0KdFNldHRpbmdzU3RyaW5nOmZ1bmN0
aW9uKGUpe3ZhciB0PTNEIiI7Zm9yKGtleSBpbiBlLnNldHRpbmdzLmF0dHJpYnV0ZXMpdCs9Cj0z
RGtleSsiOiIrZS5zZXR0aW5ncy5nZXQoa2V5KSsiLCAiO3JldHVybiB0LnN1YnN0cmluZygwLHQu
bGVuZ3RoLTIpfSxfZGVmYT0KdWx0UmVxdWVzdERpY3Rpb25hcnk6ZnVuY3Rpb24oZSl7dmFyIHQ9
M0R7Z3JvdXBzOltdfTt0aGlzLmNoYXJ0X2RlZmluaXRpb24uPQpleGVjdXRlP3QuaWQ9M0RlLmdl
dCgiZGF0YXNldF9pZF9qb2IiKTp0LmlkPTNEZS5nZXQoImRhdGFzZXRfaWQiKTt2YXIgcj0zRDA9
CixpPTNEdGhpcztyZXR1cm4gZS5ncm91cHMuZWFjaChmdW5jdGlvbihlKXt2YXIgcz0zRHt9O2Zv
cih2YXIgbyBpbiBpLmNoYXJ0Xz0KZGVmaW5pdGlvbi5jb2x1bW5zKXt2YXIgdT0zRGkuY2hhcnRf
ZGVmaW5pdGlvbi5jb2x1bW5zW29dO3Nbb109M0RuLm1lcmdlKHtpPQpuZGV4OmUuZ2V0KG8pfSx1
KX10Lmdyb3Vwcy5wdXNoKHtrZXk6KytyKyI6IitlLmdldCgia2V5IiksY29sdW1uczpzfSl9KSx0
fSw9Cl90ZW1wbGF0ZTpmdW5jdGlvbigpe3JldHVybic8ZGl2IGNsYXNzPTNEImNoYXJ0cy12aWV3
cG9ydCI+PGRpdiBpZD0zRCJpbmZvIj0KIGNsYXNzPTNEImluZm8iPjxzcGFuIGlkPTNEImljb24i
IGNsYXNzPTNEImljb24iLz48c3BhbiBpZD0zRCJ0ZXh0IiBjbGFzcz0KPTNEInRleHQiIC8+PC9k
aXY+PC9kaXY+J30sX3RlbXBsYXRlQ29udGFpbmVyOmZ1bmN0aW9uKGUsdCl7cmV0dXJuJzxkaXYg
Y2xhPQpzcz0zRCJjaGFydHMtdmlld3BvcnQtY29udGFpbmVyIiBzdHlsZT0zRCJ3aWR0aDonK3Qr
JyU7Ij4nKyc8ZGl2IGlkPTNEIm1lbnU9CiIvPicrIjwiK2UrJyBpZD0zRCInK24udXVpZCgpKyci
IGNsYXNzPTNEImNoYXJ0cy12aWV3cG9ydC1jYW52YXMiPicrIjwvZGl2Pj0KIn19KX0pLGRlZmlu
ZSgicGx1Z2luL2xpYnJhcnkvc2NyZWVuc2hvdCIsWyJsaWJzL3VuZGVyc2NvcmUiXSxmdW5jdGlv
bihlKXtmPQp1bmN0aW9uIHQoZSl7ZS4kZWwuZmluZCgic3ZnIikubGVuZ3RoPjA/cihlKTpuKGUp
fWZ1bmN0aW9uIG4oZSl7dHJ5e3ZhciB0PQo9M0RlLiRlbC5maW5kKCIuanFwbG90LXRhcmdldCIp
LG49M0R0LmpxcGxvdFRvSW1hZ2VTdHIoe30pO24mJih3aW5kb3cubG9jYXQ9Cmlvbi5ocmVmPTNE
bi5yZXBsYWNlKCJpbWFnZS9wbmciLCJpbWFnZS9vY3RldC1zdHJlYW0iKSl9Y2F0Y2gocil7Y29u
c29sZS5kZT0KYnVnKCJGQUlMRUQgLSBTY3JlZW5zaG90OjpfZnJvbUNhbnZhcygpIC0gIityKSxl
LmVycm9yJiZlLmVycm9yKCJQbGVhc2UgcmVkPQp1Y2UgeW91ciBjaGFydCB0byBhIHNpbmdsZSBw
YW5lbCBhbmQgdHJ5IGFnYWluLiIpfX1mdW5jdGlvbiByKGUpe3ZhciB0PTNEZS49CiRlbCxuPTNE
ZS51cmwscj0zRGUubmFtZSxzPTNEbmV3IFhNTFNlcmlhbGl6ZXIsbz0zRGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoIj0KY2FudmFzIiksdT0zRCQobyksYT0zRHQuZmluZCgic3ZnIikubGVuZ3RoLGY9
M0R0LmZpbmQoInN2ZyIpLmZpcnN0KCksbD0zRHBhPQpyc2VJbnQoZi5jc3MoImhlaWdodCIpKSxj
PTNEcGFyc2VJbnQoZi5jc3MoIndpZHRoIikpO3UuYXR0cigid2lkdGgiLGMqYSksdS49CmF0dHIo
ImhlaWdodCIsbCksKCFvLmdldENvbnRleHR8fCFvLmdldENvbnRleHQoIjJkIikpJiZhbGVydCgi
WW91ciBicm93c2VyID0KZG9lc24ndCBzdXBwb3J0IHRoaXMgZmVhdHVyZSwgcGxlYXNlIHVzZSBh
IG1vZGVybiBicm93c2VyIik7dmFyIGg9M0RvLmdldENvPQpudGV4dCgiMmQiKSxwPTNEMDt0LmZp
bmQoInN2ZyIpLmVhY2goZnVuY3Rpb24oKXt2YXIgZT0zRCQodGhpcyk7ZS5hdHRyKHt2ZXI9CnNp
b246IjEuMSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDpjLGhlaWdo
dDpsfSk7dmFyIHQ9M0RzLj0Kc2VyaWFsaXplVG9TdHJpbmcodGhpcyk7aC5kcmF3U3ZnKHQscCww
LGMsbCkscCs9M0RjfSksd2luZG93LmxvY2F0aW9uLmhyZWY9Cj0zRGkobyxvLmdldENvbnRleHQo
IjJkIiksIndoaXRlIikucmVwbGFjZSgiaW1hZ2UvcG5nIiwiaW1hZ2Uvb2N0ZXQtc3RyZWFtIj0K
KX1mdW5jdGlvbiBpKGUsdCxuKXt2YXIgcj0zRGUud2lkdGgsaT0zRGUuaGVpZ2h0LHM7aWYobil7
cz0zRHQuZ2V0SW1hZ2VEYXRhPQooMCwwLHIsaSk7dmFyIG89M0R0Lmdsb2JhbENvbXBvc2l0ZU9w
ZXJhdGlvbjt0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0zRCI9CmRlc3RpbmF0aW9uLW92ZXIi
LHQuZmlsbFN0eWxlPTNEbix0LmZpbGxSZWN0KDAsMCxyLGkpfXZhciB1PTNEZS50b0RhdGFVUkwo
Ij0KaW1hZ2UvcG5nIik7cmV0dXJuIG4mJih0LmNsZWFyUmVjdCgwLDAscixpKSx0LnB1dEltYWdl
RGF0YShzLDAsMCksdC5nbG9iYWxDPQpvbXBvc2l0ZU9wZXJhdGlvbj0zRG8pLHV9ZnVuY3Rpb24g
cyhlKXt3aW5kb3cubG9jYXRpb24uaHJlZj0zRCJkYXRhOm5vbmUvbm89Cm5lO2Jhc2U2NCwiK2J0
b2EoYShlKS5zdHJpbmcpfWZ1bmN0aW9uIG8oZSl7Zm9yKHZhciB0IGluIGRvY3VtZW50LnN0eWxl
U2hlZT0KdHMpe3ZhciBuPTNEZG9jdW1lbnQuc3R5bGVTaGVldHNbdF0scj0zRG4uY3NzUnVsZXM7
aWYocilmb3IodmFyIGk9M0QwLHM9M0RyPQoubGVuZ3RoO2k8cztpKyspdHJ5e2UuZmluZChyW2ld
LnNlbGVjdG9yVGV4dCkuZWFjaChmdW5jdGlvbihlLHQpe3Quc3R5bGUuY3M9CnNUZXh0Kz0zRHJb
aV0uc3R5bGUuY3NzVGV4dH0pfWNhdGNoKG8pe319fWZ1bmN0aW9uIHUoZSl7dmFyIHQ9M0RhKGUp
LG49M0R7Zj0KaWxlbmFtZTpuYW1lfHwiY2hhcnQiLHR5cGU6ImFwcGxpY2F0aW9uL3BkZiIsaGVp
Z2h0OnQuaGVpZ2h0LHdpZHRoOnQud2lkdGgsPQpzY2FsZToyLHN2Zzp0LnN0cmluZ30scj0zRCQo
ImJvZHkiKSxpPTNEci5maW5kKCIjdmlld3BvcnQtZm9ybSIpO2kubGVuZ3RoPQo9M0Q9M0Q9M0Qw
JiYoaT0zRCQoIjxmb3JtPiIse2lkOiJ2aWV3cG9ydC1mb3JtIixtZXRob2Q6InBvc3QiLGFjdGlv
bjoiaHR0cDo9Ci8vZXhwb3J0LmhpZ2hjaGFydHMuY29tLyIsZGlzcGxheToibm9uZSJ9KSxyLmFw
cGVuZChpKSksaS5lbXB0eSgpO2ZvcihuYW1lID0KaW4gbil7dmFyIHM9M0QkKCI8aW5wdXQvPiIs
e3R5cGU6ImhpZGRlbiIsbmFtZTpuYW1lLHZhbHVlOm5bbmFtZV19KTtpLmFwcGVuPQpkKHMpfXRy
eXtpLnN1Ym1pdCgpfWNhdGNoKG8pe2NvbnNvbGUubG9nKG8pfX1mdW5jdGlvbiBhKGUpe2lmKGUu
JGVsLmZpbmQoInM9CnZnIikubGVuZ3RoPTNEPTNEMCYmZS5lcnJvcil7ZS5lcnJvcigiTm8gU1ZH
IGZvdW5kLiBUaGlzIGNoYXJ0IHR5cGUgZG9lcyBubz0KdCBzdXBwb3J0IFNWRy9QREYgZXhwb3J0
LiIpO3JldHVybn12YXIgdD0zRGUuJGVsLG49M0R0LmZpbmQoInN2ZyIpLmxlbmd0aCxyPQo9M0Rw
YXJzZUludCh0LmZpbmQoInN2ZyIpLmZpcnN0KCkuY3NzKCJoZWlnaHQiKSksaT0zRHBhcnNlSW50
KHQuZmluZCgic3ZnIik9Ci5maXJzdCgpLmNzcygid2lkdGgiKSkscz0zRG5ldyBYTUxTZXJpYWxp
emVyLHU9M0QkKCI8c3ZnLz4iKTt1LmF0dHIoe3ZlcnNpbz0KbjoiMS4xIix4bWxuczoiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOmkqbixoZWlnaHQ6cn0pO3ZhciBhPTNEIiIsPQpm
PTNEMDtyZXR1cm4gdC5maW5kKCJzdmciKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9M0QkKHRoaXMp
LmNsb25lKCk7byhlKTt2YXI9CiB0PTNEJCgnPGcgdHJhbnNmb3JtPTNEInRyYW5zbGF0ZSgnK2Yr
JywgMCkiPicpO3QuYXBwZW5kKGUuZmluZCgiZyIpLmZpcnN0KD0KKSksdS5hcHBlbmQodCksZis9
M0RpfSkse3N0cmluZzpzLnNlcmlhbGl6ZVRvU3RyaW5nKHVbMF0pLGhlaWdodDpyLHdpZHRoOml9
PQp9cmV0dXJue2NyZWF0ZVBORzp0LGNyZWF0ZVNWRzpzLGNyZWF0ZVBERjp1fX0pLGRlZmluZSgi
cGx1Z2luL3ZpZXdzL3ZpZXdlciI9CixbInV0aWxzL3V0aWxzIiwibXZjL3VpL3VpLW1pc2MiLCJt
dmMvdWkvdWktcG9ydGxldCIsInBsdWdpbi92aWV3cy92aWV3cG9ydD0KIiwicGx1Z2luL2xpYnJh
cnkvc2NyZWVuc2hvdCJdLGZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIEJhY2tib25lLlZpZXcu
ZXh0PQplbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oZSxzKXt0aGlzLmFwcD0zRGUsdGhpcy5jaGFy
dD0zRHRoaXMuYXBwLmNoYXJ0LHRoaXM9Ci52aWV3cG9ydF92aWV3PTNEbmV3IHIoZSk7dmFyIG89
M0R0aGlzO3RoaXMubWVzc2FnZT0zRG5ldyB0Lk1lc3NhZ2U7dmFyIHU9Cj0zRG5ldyB0LkJ1dHRv
bk1lbnUoe2ljb246ImZhLWNhbWVyYSIsdGl0bGU6IlNjcmVlbnNob3QiLHRvb2x0aXA6IkRvd25s
b2FkID0KYXMgUE5HLCBTVkcgb3IgUERGIGZpbGUifSk7dS5hZGRNZW51KHtpZDoiYnV0dG9uLXBu
ZyIsdGl0bGU6IlNhdmUgYXMgUE5HIixpPQpjb246ImZhLWZpbGUiLG9uY2xpY2s6ZnVuY3Rpb24o
KXtvLl93YWl0KG8uY2hhcnQsZnVuY3Rpb24oKXtpLmNyZWF0ZVBORyh7JGU9Cmw6by52aWV3cG9y
dF92aWV3LiRlbCx0aXRsZTpvLmNoYXJ0LmdldCgidGl0bGUiKSxlcnJvcjpmdW5jdGlvbihlKXtv
Lm1lc3NhZz0KZS51cGRhdGUoe21lc3NhZ2U6ZSxzdGF0dXM6ImRhbmdlciJ9KX19KX0pfX0pLHUu
YWRkTWVudSh7aWQ6ImJ1dHRvbi1zdmciLHRpPQp0bGU6IlNhdmUgYXMgU1ZHIixpY29uOiJmYS1m
aWxlLXRleHQtbyIsb25jbGljazpmdW5jdGlvbigpe28uX3dhaXQoby5jaGFydCw9CmZ1bmN0aW9u
KCl7aS5jcmVhdGVTVkcoeyRlbDpvLnZpZXdwb3J0X3ZpZXcuJGVsLHRpdGxlOm8uY2hhcnQuZ2V0
KCJ0aXRsZSIpLD0KZXJyb3I6ZnVuY3Rpb24oZSl7by5tZXNzYWdlLnVwZGF0ZSh7bWVzc2FnZTpl
LHN0YXR1czoiZGFuZ2VyIn0pfX0pfSl9fSksdS5hPQpkZE1lbnUoe2lkOiJidXR0b24tcG5nIix0
aXRsZToiU2F2ZSBhcyBQREYiLGljb246ImZhLWZpbGUtbyIsb25jbGljazpmdW5jdGk9Cm9uKCl7
by5hcHAubW9kYWwuc2hvdyh7dGl0bGU6IlNlbmQgY2hhcnQgZGF0YSBmb3IgUERGIGNyZWF0aW9u
Iixib2R5OiJHYWxheD0KeSBkb2VzIG5vdCBwcm92aWRlIGludGVncmF0ZWQgUERGIGV4cG9ydCBz
Y3JpcHRzLiBZb3UgbWF5IGNsaWNrICdDb250aW51ZScgPQp0byBjcmVhdGUgdGhlIFBERiBieSB1
c2luZyBhIDNyZCBwYXJ0eSBzZXJ2aWNlIChodHRwczovL2V4cG9ydC5oaWdoY2hhcnRzLmM9Cm9t
KS4iLGJ1dHRvbnM6e0NhbmNlbDpmdW5jdGlvbigpe28uYXBwLm1vZGFsLmhpZGUoKX0sQ29udGlu
dWU6ZnVuY3Rpb24oKXtvLj0KYXBwLm1vZGFsLmhpZGUoKSxvLl93YWl0KG8uY2hhcnQsZnVuY3Rp
b24oKXtpLmNyZWF0ZVBERih7JGVsOm8udmlld3BvcnRfdmllPQp3LiRlbCx0aXRsZTpvLmNoYXJ0
LmdldCgidGl0bGUiKSxlcnJvcjpmdW5jdGlvbihlKXtvLm1lc3NhZ2UudXBkYXRlKHttZXNzYWc9
CmU6ZSxzdGF0dXM6ImRhbmdlciJ9KX19KX0pfX19KX19KSx0aGlzLnBvcnRsZXQ9M0RuZXcgbi5W
aWV3KHtpY29uOiJmYS1iYXItYz0KaGFydC1vIix0aXRsZToiVmlld3BvcnQiLHNjcm9sbGFibGU6
ITEsb3BlcmF0aW9uczp7ZWRpdF9idXR0b246bmV3IHQuQnV0dG9uPQpJY29uKHtpY29uOiJmYS1l
ZGl0Iix0b29sdGlwOiJDdXN0b21pemUgdGhpcyBjaGFydCIsdGl0bGU6IkVkaXRvciIsb25jbGlj
azo9CmZ1bmN0aW9uKCl7by5fd2FpdChvLmNoYXJ0LGZ1bmN0aW9uKCl7by5hcHAuZ28oImVkaXRv
ciIpfSl9fSkscGljdHVyZV9idXR0bz0Kbl9tZW51OnV9fSksdGhpcy5wb3J0bGV0LmFwcGVuZCh0
aGlzLm1lc3NhZ2UuJGVsKSx0aGlzLnBvcnRsZXQuYXBwZW5kKHRoaXMuPQp2aWV3cG9ydF92aWV3
LiRlbCksdGhpcy5zZXRFbGVtZW50KHRoaXMucG9ydGxldC4kZWwpO3ZhciBvPTNEdGhpczt0aGlz
LmNoYXI9CnQub24oImNoYW5nZTp0aXRsZSIsZnVuY3Rpb24oKXtvLl9yZWZyZXNoVGl0bGUoKX0p
fSxzaG93OmZ1bmN0aW9uKCl7dGhpcy4kZT0KbC5zaG93KCksJCh3aW5kb3cpLnRyaWdnZXIoInJl
c2l6ZSIpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy4kZWwuaGlkZSgpfSxfcmVmPQpyZXNoVGl0bGU6
ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMuY2hhcnQuZ2V0KCJ0aXRsZSIpO3RoaXMucG9ydGxldC50
aXRsZShlKX09Cixfd2FpdDpmdW5jdGlvbihlLHQpe3RoaXMuYXBwLmRlZmVycmVkLnJlYWR5KCk/
dCgpOnRoaXMubWVzc2FnZS51cGRhdGUoe21lcz0Kc2FnZToiWW91ciBjaGFydCBpcyBjdXJyZW50
bHkgYmVpbmcgcHJvY2Vzc2VkLiBQbGVhc2Ugd2FpdCBhbmQgdHJ5IGFnYWluLiJ9PQopfX0pfSks
ZGVmaW5lKCJtdmMvdWkvdWktdGFicyIsWyJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGUpe3ZhciB0
PTNEQmFja2JvbmU9Ci5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e3RpdGxlX25ldzoiIixv
cGVyYXRpb25zOm51bGwsb25uZXc6bnVsbCxtYXg6bj0KdWxsLG9uY2hhbmdlOm51bGx9LGluaXRp
YWxpemU6ZnVuY3Rpb24odCl7dGhpcy52aXNpYmxlPTNEITEsdGhpcy4kbmF2PTNEbnVsPQpsLHRo
aXMuJGNvbnRlbnQ9M0RudWxsLHRoaXMuZmlyc3RfdGFiPTNEbnVsbCx0aGlzLmN1cnJlbnRfaWQ9
M0RudWxsLHRoaXMub3A9CnRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpO3Zh
ciBuPTNEJCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbj0KcykpO3RoaXMuJG5hdj0zRG4uZmlu
ZCgiLnRhYi1uYXZpZ2F0aW9uIiksdGhpcy4kY29udGVudD0zRG4uZmluZCgiLnRhYi1jb250PQpl
bnQiKSx0aGlzLnNldEVsZW1lbnQobiksdGhpcy5saXN0PTNEe307dmFyIHI9M0R0aGlzO3RoaXMu
b3B0aW9ucy5vcGVyYXRpb249CnMmJiQuZWFjaCh0aGlzLm9wdGlvbnMub3BlcmF0aW9ucyxmdW5j
dGlvbihlLHQpe3QuJGVsLnByb3AoImlkIixlKSxyLiRuYXYuZj0KaW5kKCIub3BlcmF0aW9ucyIp
LmFwcGVuZCh0LiRlbCl9KTtpZih0aGlzLm9wdGlvbnMub25uZXcpe3ZhciBpPTNEJCh0aGlzLl90
PQplbXBsYXRlX3RhYl9uZXcodGhpcy5vcHRpb25zKSk7dGhpcy4kbmF2LmFwcGVuZChpKSxpLnRv
b2x0aXAoe3RpdGxlOiJBZGQgYSA9Cm5ldyB0YWIiLHBsYWNlbWVudDoiYm90dG9tIixjb250YWlu
ZXI6ci4kZWx9KSxpLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7aS50bz0Kb2x0aXAoImhpZGUiKSxy
Lm9wdGlvbnMub25uZXcoKX0pfX0sc2l6ZTpmdW5jdGlvbigpe3JldHVybiBfLnNpemUodGhpcy5s
aXN0PQopfSxjdXJyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGVsLmZpbmQoIi50YWItcGFu
ZS5hY3RpdmUiKS5hdHRyKCJpZCIpfSw9CmFkZDpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMsbj0z
RGUuaWQscj0zRCQodGhpcy5fdGVtcGxhdGVfdGFiKGUpKSxpPTNEJCh0aD0KaXMuX3RlbXBsYXRl
X3RhYl9jb250ZW50KGUpKTt0aGlzLmxpc3Rbbl09M0RlLm9uZGVsPyEwOiExLHRoaXMub3B0aW9u
cy5vbm5lPQp3P3RoaXMuJG5hdi5maW5kKCIjbmV3LXRhYiIpLmJlZm9yZShyKTp0aGlzLiRuYXYu
YXBwZW5kKHIpLGkuYXBwZW5kKGUuJGVsKSw9CnRoaXMuJGNvbnRlbnQuYXBwZW5kKGkpLHRoaXMu
c2l6ZSgpPTNEPTNEMSYmKHIuYWRkQ2xhc3MoImFjdGl2ZSIpLGkuYWRkQ2xhcz0KcygiYWN0aXZl
IiksdGhpcy5maXJzdF90YWI9M0RuKSx0aGlzLm9wdGlvbnMubWF4JiZ0aGlzLnNpemUoKT49M0R0
aGlzLm9wdGlvPQpucy5tYXgmJnRoaXMuJGVsLmZpbmQoIiNuZXctdGFiIikuaGlkZSgpO2lmKGUu
b25kZWwpe3ZhciBzPTNEci5maW5kKCIjZGVsZXQ9CmUiKTtzLnRvb2x0aXAoe3RpdGxlOiJEZWxl
dGUgdGhpcyB0YWIiLHBsYWNlbWVudDoiYm90dG9tIixjb250YWluZXI6dC4kZWx9KT0KLHMub24o
ImNsaWNrIixmdW5jdGlvbigpe3JldHVybiBzLnRvb2x0aXAoImRlc3Ryb3kiKSx0LiRlbC5maW5k
KCIudG9vbHRpcCIpPQoucmVtb3ZlKCksZS5vbmRlbCgpLCExfSl9ci5vbigiY2xpY2siLGZ1bmN0
aW9uKHIpe3IucHJldmVudERlZmF1bHQoKSxlLm9uY2w9Cmljaz9lLm9uY2xpY2soKTp0LnNob3co
bil9KSx0aGlzLmN1cnJlbnRfaWR8fCh0aGlzLmN1cnJlbnRfaWQ9M0RuKX0sZGVsOmZ1bj0KY3Rp
b24oZSl7dGhpcy4kZWwuZmluZCgiI3RhYi0iK2UpLnJlbW92ZSgpLHRoaXMuJGVsLmZpbmQoIiMi
K2UpLnJlbW92ZSgpLHRoPQppcy5maXJzdF90YWI9M0Q9M0RlJiYodGhpcy5maXJzdF90YWI9M0Ru
dWxsKSx0aGlzLmZpcnN0X3RhYiE9M0RudWxsJiZ0aGlzLnM9Cmhvdyh0aGlzLmZpcnN0X3RhYiks
dGhpcy5saXN0W2VdJiZkZWxldGUgdGhpcy5saXN0W2VdLHRoaXMuc2l6ZSgpPHRoaXMub3B0aT0K
b25zLm1heCYmdGhpcy4kZWwuZmluZCgiI25ldy10YWIiKS5zaG93KCl9LGRlbFJlbW92YWJsZTpm
dW5jdGlvbigpe2Zvcih2YXIgPQplIGluIHRoaXMubGlzdCl0aGlzLmRlbChlKX0sc2hvdzpmdW5j
dGlvbihlKXt0aGlzLiRlbC5mYWRlSW4oImZhc3QiKSx0aGlzLnY9CmlzaWJsZT0zRCEwLGUmJih0
aGlzLiRlbC5maW5kKCIjdGFiLSIrdGhpcy5jdXJyZW50X2lkKS5yZW1vdmVDbGFzcygiYWN0aXZl
Ij0KKSx0aGlzLiRlbC5maW5kKCIjIit0aGlzLmN1cnJlbnRfaWQpLnJlbW92ZUNsYXNzKCJhY3Rp
dmUiKSx0aGlzLiRlbC5maW5kKCIjPQp0YWItIitlKS5hZGRDbGFzcygiYWN0aXZlIiksdGhpcy4k
ZWwuZmluZCgiIyIrZSkuYWRkQ2xhc3MoImFjdGl2ZSIpLHRoaXMuY3U9CnJyZW50X2lkPTNEZSks
dGhpcy5vcHRpb25zLm9uY2hhbmdlJiZ0aGlzLm9wdGlvbnMub25jaGFuZ2UoZSl9LGhpZGU6ZnVu
Y3Rpbz0Kbigpe3RoaXMuJGVsLmZhZGVPdXQoImZhc3QiKSx0aGlzLnZpc2libGU9M0QhMX0saGlk
ZU9wZXJhdGlvbjpmdW5jdGlvbihlKXt0PQpoaXMuJG5hdi5maW5kKCIjIitlKS5oaWRlKCl9LHNo
b3dPcGVyYXRpb246ZnVuY3Rpb24oZSl7dGhpcy4kbmF2LmZpbmQoIiMiK2U9Cikuc2hvdygpfSxz
ZXRPcGVyYXRpb246ZnVuY3Rpb24oZSx0KXt2YXIgbj0zRHRoaXMuJG5hdi5maW5kKCIjIitlKTtu
Lm9mZigiYz0KbGljayIpLG4ub24oImNsaWNrIix0KX0sdGl0bGU6ZnVuY3Rpb24oZSx0KXt2YXIg
bj0zRHRoaXMuJGVsLmZpbmQoIiN0YWItdGl0PQpsZS10ZXh0LSIrZSk7cmV0dXJuIHQmJm4uaHRt
bCh0KSxuLmh0bWwoKX0scmV0aXRsZTpmdW5jdGlvbihlKXt2YXIgdD0zRDA7Zm89CnIodmFyIG4g
aW4gdGhpcy5saXN0KXRoaXMudGl0bGUobiwrK3QrIjogIitlKX0sX3RlbXBsYXRlOmZ1bmN0aW9u
KGUpe3JldHVybj0KJzxkaXYgY2xhc3M9M0QidWktdGFicyB0YWJiYWJsZSB0YWJzLWxlZnQiPjx1
bCBpZD0zRCJ0YWItbmF2aWdhdGlvbiIgY2xhc3M9Cj0zRCJ0YWItbmF2aWdhdGlvbiBuYXYgbmF2
LXRhYnMiPjxkaXYgY2xhc3M9M0Qib3BlcmF0aW9ucyIgc3R5bGU9M0QiZmxvYXQ6ID0KcmlnaHQ7
IG1hcmdpbi1ib3R0b206IDRweDsiPjwvZGl2PjwvdWw+PGRpdiBpZD0zRCJ0YWItY29udGVudCIg
Y2xhc3M9M0QidGFiPQotY29udGVudCIvPjwvZGl2Pid9LF90ZW1wbGF0ZV90YWJfbmV3OmZ1bmN0
aW9uKGUpe3JldHVybic8bGkgaWQ9M0QibmV3LXRhYiI9Cj48YSBocmVmPTNEImphdmFzY3JpcHQ6
dm9pZCgwKTsiPjxpIGNsYXNzPTNEInVpLXRhYnMtYWRkIGZhIGZhLXBsdXMtY2lyY2xlIj0KLz4n
K2UudGl0bGVfbmV3KyI8L2E+IisiPC9saT4ifSxfdGVtcGxhdGVfdGFiOmZ1bmN0aW9uKGUpe3Zh
ciB0PTNEJzxsaSBpZD0KPTNEInRhYi0nK2UuaWQrJyIgY2xhc3M9M0QidGFiLWVsZW1lbnQiPicr
JzxhIGlkPTNEInRhYi10aXRsZS1saW5rLScrZS5pZCsnPQoiIHRpdGxlPTNEIiIgaHJlZj0zRCIj
JytlLmlkKyciIGRhdGEtb3JpZ2luYWwtdGl0bGU9M0QiIj4nKyc8c3BhbiBpZD0zRCJ0YWI9Ci10
aXRsZS10ZXh0LScrZS5pZCsnIiBjbGFzcz0zRCJ0YWItdGl0bGUtdGV4dCI+JytlLnRpdGxlKyI8
L3NwYW4+IjtyZXR1cm4gZT0KLm9uZGVsJiYodCs9M0QnPGkgaWQ9M0QiZGVsZXRlIiBjbGFzcz0z
RCJ1aS10YWJzLWRlbGV0ZSBmYSBmYS1taW51cy1jaXJjbGUiPQovPicpLHQrPTNEIjwvYT48L2xp
PiIsdH0sX3RlbXBsYXRlX3RhYl9jb250ZW50OmZ1bmN0aW9uKGUpe3JldHVybic8ZGl2IGlkPQo9
M0QiJytlLmlkKyciIGNsYXNzPTNEInRhYi1wYW5lIi8+J319KTtyZXR1cm57Vmlldzp0fX0pLGRl
ZmluZSgibXZjL3VpL3VpLXQ9CmFibGUiLFsidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihlKXt2YXIg
dD0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtyb3c6bnVsbCxybz0Kd19jb3VudDowLG9wdGlvbnNE
ZWZhdWx0Ontjb250ZW50OiJObyBjb250ZW50IGF2YWlsYWJsZS4iLG9uY2hhbmdlOm51bGwsb25k
PQpibGNsaWNrOm51bGwsb25jb25maXJtOm51bGwsY2xzOiJ1aS10YWJsZSIsY2xzX3RyOiIifSxl
dmVudHM6e2NsaWNrOiJfb25jbGk9CmNrIixkYmxjbGljazoiX29uZGJsY2xpY2sifSxpbml0aWFs
aXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVyZ2UodD0KLHRoaXMub3B0aW9uc0Rl
ZmF1bHQpO3ZhciBuPTNEJCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKTt0aGlzLiR0aGVh
ZD0KPTNEbi5maW5kKCJ0aGVhZCIpLHRoaXMuJHRib2R5PTNEbi5maW5kKCJ0Ym9keSIpLHRoaXMu
JHRtZXNzYWdlPTNEbi5maW5kKCJ0PQptZXNzYWdlIiksdGhpcy5zZXRFbGVtZW50KG4pLHRoaXMu
cm93PTNEdGhpcy5fcm93KCl9LGFkZEhlYWRlcjpmdW5jdGlvbihlKXs9CnZhciB0PTNEJCgiPHRo
PjwvdGg+Iik7dC5hcHBlbmQoZSksdGhpcy5yb3cuYXBwZW5kKHQpfSxhcHBlbmRIZWFkZXI6ZnVu
Y3Rpbz0Kbigpe3RoaXMuJHRoZWFkLmFwcGVuZCh0aGlzLnJvdyksdGhpcy5yb3c9M0QkKCI8dHI+
PC90cj4iKX0sYWRkOmZ1bmN0aW9uKGUsPQp0LG4pe3ZhciByPTNEJCgiPHRkPjwvdGQ+Iik7dCYm
ci5jc3MoIndpZHRoIix0KSxuJiZyLmNzcygidGV4dC1hbGlnbiIsbiksci49CmFwcGVuZChlKSx0
aGlzLnJvdy5hcHBlbmQocil9LGFwcGVuZDpmdW5jdGlvbihlLHQpe3RoaXMuX2NvbW1pdChlLHQs
ITEpfSxwcj0KZXBlbmQ6ZnVuY3Rpb24oZSx0KXt0aGlzLl9jb21taXQoZSx0LCEwKX0sZ2V0OmZ1
bmN0aW9uKGUpe3JldHVybiB0aGlzLiRlbC5mPQppbmQoIiMiK2UpfSxkZWw6ZnVuY3Rpb24oZSl7
dmFyIHQ9M0R0aGlzLiR0Ym9keS5maW5kKCIjIitlKTt0Lmxlbmd0aD4wJiYodC49CnJlbW92ZSgp
LHRoaXMucm93X2NvdW50LS0sdGhpcy5fcmVmcmVzaCgpKX0sZGVsQWxsOmZ1bmN0aW9uKCl7dGhp
cy4kdGJvZHkuZT0KbXB0eSgpLHRoaXMucm93X2NvdW50PTNEMCx0aGlzLl9yZWZyZXNoKCl9LHZh
bHVlOmZ1bmN0aW9uKGUpe3RoaXMuYmVmb3JlPTNEPQp0aGlzLiR0Ym9keS5maW5kKCIuY3VycmVu
dCIpLmF0dHIoImlkIiksZSE9M0Q9M0R1bmRlZmluZWQmJih0aGlzLiR0Ym9keS5maW49CmQoInRy
IikucmVtb3ZlQ2xhc3MoImN1cnJlbnQiKSxlJiZ0aGlzLiR0Ym9keS5maW5kKCIjIitlKS5hZGRD
bGFzcygiY3VycmVudD0KIikpO3ZhciB0PTNEdGhpcy4kdGJvZHkuZmluZCgiLmN1cnJlbnQiKS5h
dHRyKCJpZCIpO3JldHVybiB0PTNEPTNEPTNEdW5kZWZpPQpuZWQ/bnVsbDoodCE9M0R0aGlzLmJl
Zm9yZSYmdGhpcy5vcHRpb25zLm9uY2hhbmdlJiZ0aGlzLm9wdGlvbnMub25jaGFuZ2UoZSk9Cix0
KX0sc2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLiR0Ym9keS5maW5kKCJ0ciIpLmxlbmd0aH0s
X2NvbW1pdDpmdW5jdGlvbj0KKGUsdCxuKXt0aGlzLmRlbChlKSx0aGlzLnJvdy5hdHRyKCJpZCIs
ZSksbj90aGlzLiR0Ym9keS5wcmVwZW5kKHRoaXMucm93KTp0PQpoaXMuJHRib2R5LmFwcGVuZCh0
aGlzLnJvdyksdCYmKHRoaXMucm93LmhpZGUoKSx0aGlzLnJvdy5mYWRlSW4oKSksdGhpcy5yb3c9
Cj0zRHRoaXMuX3JvdygpLHRoaXMucm93X2NvdW50KyssdGhpcy5fcmVmcmVzaCgpfSxfcm93OmZ1
bmN0aW9uKCl7cmV0dXJuICQoJz0KPHRyIGNsYXNzPTNEIicrdGhpcy5vcHRpb25zLmNsc190cisn
Ij48L3RyPicpfSxfb25jbGljazpmdW5jdGlvbihlKXt2YXIgdD0KPTNEdGhpcy52YWx1ZSgpLG49
M0QkKGUudGFyZ2V0KS5jbG9zZXN0KCJ0ciIpLmF0dHIoImlkIik7biE9M0QiIiYmbiYmdCE9M0Ru
PQomJih0aGlzLm9wdGlvbnMub25jb25maXJtP3RoaXMub3B0aW9ucy5vbmNvbmZpcm0obik6dGhp
cy52YWx1ZShuKSl9LF9vbmRibGM9CmxpY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLnZhbHVl
KCk7dCYmdGhpcy5vcHRpb25zLm9uZGJsY2xpY2smJnRoaXMub3B0aT0Kb25zLm9uZGJsY2xpY2so
dCl9LF9yZWZyZXNoOmZ1bmN0aW9uKCl7dGhpcy5yb3dfY291bnQ9M0Q9M0QwP3RoaXMuJHRtZXNz
YWdlPQouc2hvdygpOnRoaXMuJHRtZXNzYWdlLmhpZGUoKX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUp
e3JldHVybic8ZGl2Pjx0YWJsZSBjbGE9CnNzPTNEIicrZS5jbHMrJyI+JysiPHRoZWFkPjwvdGhl
YWQ+IisiPHRib2R5PjwvdGJvZHk+IisiPC90YWJsZT4iKyI8dG1lc3NhZz0KZT4iK2UuY29udGVu
dCsiPC90bWVzc2FnZT4iKyI8ZGl2PiJ9fSk7cmV0dXJue1ZpZXc6dH19KSxkZWZpbmUoInBsdWdp
bi92aWV3PQpzL2dyb3VwIixbIm12Yy91aS91aS10YWJsZSIsIm12Yy91aS91aS1taXNjIiwidXRp
bHMvdXRpbHMiXSxmdW5jdGlvbihlLHQsbik9CntyZXR1cm4gQmFja2JvbmUuVmlldy5leHRlbmQo
e2luaXRpYWxpemU6ZnVuY3Rpb24ocixpKXt0aGlzLmFwcD0zRHI7dmFyIHM9Cj0zRHRoaXM7dGhp
cy5jaGFydD0zRHRoaXMuYXBwLmNoYXJ0LHRoaXMuZ3JvdXA9M0RpLmdyb3VwLHRoaXMuZ3JvdXBf
a2V5PTNEbj0KZXcgdC5JbnB1dCh7cGxhY2Vob2xkZXI6IkRhdGEgbGFiZWwiLG9uY2hhbmdlOmZ1
bmN0aW9uKGUpe3MuZ3JvdXAuc2V0KCJrZXkiPQosZSl9fSksdGhpcy50YWJsZT0zRG5ldyBlLlZp
ZXcoe2NvbnRlbnQ6Ik5vIGRhdGEgY29sdW1uLiJ9KTt2YXIgbz0zRCQoIjxkaXY9Ci8+Iik7by5h
cHBlbmQobi53cmFwKChuZXcgdC5MYWJlbCh7dGl0bGU6IlByb3ZpZGUgYSBsYWJlbDoifSkpLiRl
bCkpLG8uYXBwZT0KbmQobi53cmFwKHRoaXMuZ3JvdXBfa2V5LiRlbCkpLG8uYXBwZW5kKG4ud3Jh
cCgobmV3IHQuTGFiZWwoe3RpdGxlOiJTZWxlY3QgPQpjb2x1bW5zOiJ9KSkuJGVsKSksby5hcHBl
bmQobi53cmFwKHRoaXMudGFibGUuJGVsKSksdGhpcy5zZXRFbGVtZW50KG8pO3ZhciA9CnM9M0R0
aGlzO3RoaXMuY2hhcnQub24oImNoYW5nZTpkYXRhc2V0X2lkIixmdW5jdGlvbigpe3MuX3JlZnJl
c2hUYWJsZSgpfSksdD0KaGlzLmNoYXJ0Lm9uKCJjaGFuZ2U6dHlwZSIsZnVuY3Rpb24oKXtzLl9y
ZWZyZXNoVGFibGUoKX0pLHRoaXMuZ3JvdXAub24oImNoPQphbmdlOmtleSIsZnVuY3Rpb24oKXtz
Ll9yZWZyZXNoR3JvdXBLZXkoKX0pLHRoaXMuZ3JvdXAub24oImNoYW5nZSIsZnVuY3Rpb249Cigp
e3MuX3JlZnJlc2hHcm91cCgpfSksdGhpcy5fcmVmcmVzaFRhYmxlKCksdGhpcy5fcmVmcmVzaEdy
b3VwS2V5KCksdGhpcy5fcj0KZWZyZXNoR3JvdXAoKX0sX3JlZnJlc2hUYWJsZTpmdW5jdGlvbigp
e3ZhciBlPTNEdGhpcy5jaGFydC5nZXQoImRhdGFzZXRfaWQiPQopLG49M0R0aGlzLmNoYXJ0Lmdl
dCgidHlwZSIpO2lmKCFlfHwhbilyZXR1cm47dmFyIHI9M0R0aGlzLGk9M0R0aGlzLmNoYXJ0LmQ9
CmVmaW5pdGlvbjt0aGlzLnRhYmxlLmRlbEFsbCgpO3ZhciBzPTNEe307Zm9yKHZhciBvIGluIGku
Y29sdW1ucyl7dmFyIHU9M0RpLj0KY29sdW1uc1tvXTtpZighdSl7Y29uc29sZS5kZWJ1ZygiR3Jv
dXA6Ol9yZWZyZXNoVGFibGUoKSAtIFNraXBwaW5nIGNvbHVtbiBkPQplZmluaXRpb24uIik7Y29u
dGludWV9dmFyIGE9M0RuZXcgdC5TZWxlY3QuVmlldyh7aWQ6InNlbGVjdF8iK28sd2FpdDohMH0p
LGY9Cj0zRHUudGl0bGU7dS5pc191bmlxdWUmJihmKz0zRCImbmJzcDsoYWxsIGRhdGEgbGFiZWxz
KSIpLHRoaXMudGFibGUuYWRkKGYsIj0KMjUlIiksdGhpcy50YWJsZS5hZGQoYS4kZWwpLHRoaXMu
dGFibGUuYXBwZW5kKG8pLHNbb109M0RhfXRoaXMuY2hhcnQuc3RhdGUoPQoid2FpdCIsIkxvYWRp
bmcgbWV0YWRhdGEuLi4iKTt2YXIgbD0zRHRoaXMuYXBwLmRlZmVycmVkLnJlZ2lzdGVyKCksYz0z
RHtpZDo9CmUsc3VjY2VzczpmdW5jdGlvbihlKXtmb3IodmFyIHQgaW4gcylyLl9hZGRSb3codCxl
LHMsaS5jb2x1bW5zW3RdKTtyLmNoYXJ0Lj0Kc3RhdGUoIm9rIiwiTWV0YWRhdGEgaW5pdGlhbGl6
ZWQuLi4iKSxyLmFwcC5kZWZlcnJlZC5kb25lKGwpfX07dGhpcy5hcHAuZGF0PQphc2V0cy5yZXF1
ZXN0KGMpfSxfYWRkUm93OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPTNEdGhpcyxzPTNEci5pc19s
YWJlbCxvPQo9M0RyLmlzX2F1dG8sdT0zRHIuaXNfbnVtZXJpYyxhPTNEci5pc191bmlxdWUsZj0z
RHIuaXNfemVybyxsPTNEW10sYz0zRG5bZV09CjtvJiZsLnB1c2goe2xhYmVsOiJDb2x1bW46IFJv
dyBOdW1iZXIiLHZhbHVlOiJhdXRvIn0pLGYmJmwucHVzaCh7bGFiZWw6IkNvbD0KdW1uOiBOb25l
Iix2YWx1ZToiemVybyJ9KTt2YXIgaD0zRHQubWV0YWRhdGFfY29sdW1uX3R5cGVzO2Zvcih2YXIg
cCBpbiBoKXt2PQphciBkPTNEITE7aFtwXT0zRD0zRCJpbnQifHxoW3BdPTNEPTNEImZsb2F0Ij9k
PTNEdTpkPTNEcyxkJiZsLnB1c2goe2xhYmVsOiI9CkNvbHVtbjogIisocGFyc2VJbnQocCkrMSkr
IiBbIitoW3BdKyJdIix2YWx1ZTpwfSl9Yy51cGRhdGUobCksYSYmdGhpcy5jaGFydD0KLmdyb3Vw
cy5maXJzdCgpJiZ0aGlzLmdyb3VwLnNldChlLHRoaXMuY2hhcnQuZ3JvdXBzLmZpcnN0KCkuZ2V0
KGUpKTtpZighYy5lPQp4aXN0cyh0aGlzLmdyb3VwLmdldChlKSkpe3ZhciB2PTNEYy5maXJzdCgp
O2NvbnNvbGUuZGVidWcoJ0dyb3VwKCk6Ol9hZGRSb3c9CigpIC0gU3dpdGNoaW5nIG1vZGVsIHZh
bHVlIGZyb20gIicrdGhpcy5ncm91cC5nZXQoZSkrJyIgdG8gIicrdisnIi4nKSx0aGlzLj0KZ3Jv
dXAuc2V0KGUsdil9Yy52YWx1ZSh0aGlzLmdyb3VwLmdldChlKSksdGhpcy5ncm91cC5vZmYoImNo
YW5nZToiK2UpLHRoaXMuPQpncm91cC5vbigiY2hhbmdlOiIrZSxmdW5jdGlvbigpe2MudmFsdWUo
aS5ncm91cC5nZXQoZSkpfSksYy5zZXRPbkNoYW5nZShmdW49CmN0aW9uKHQpe2E/aS5jaGFydC5n
cm91cHMuZWFjaChmdW5jdGlvbihuKXtuLnNldChlLHQpfSk6aS5ncm91cC5zZXQoZSx0KSxpLj0K
Y2hhcnQuc2V0KCJtb2RpZmllZCIsITApfSksYy5zaG93KCl9LF9yZWZyZXNoR3JvdXA6ZnVuY3Rp
b24oKXt0aGlzLmdyb3VwLnNlPQp0KCJkYXRlIixuLnRpbWUoKSl9LF9yZWZyZXNoR3JvdXBLZXk6
ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMuZ3JvdXAuZ2V0KCJrZXk9CiIpO2U9M0Q9M0Q9M0R1bmRl
ZmluZWQmJihlPTNEIiIpLGUhPTNEdGhpcy5ncm91cF9rZXkudmFsdWUoKSYmdGhpcy5ncm91cF9r
ZT0KeS52YWx1ZShlKX19KX0pLGRlZmluZSgicGx1Z2luL2xpYnJhcnkvdWktdGFibGUtZm9ybSIs
WyJtdmMvdWkvdWktdGFibGUiLCJtPQp2Yy91aS91aS1taXNjIiwidXRpbHMvdXRpbHMiXSxmdW5j
dGlvbihlLHQsbil7dmFyIHI9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCg9CntvcHRpb25zRGVmYXVs
dDp7dGl0bGU6IiIsY29udGVudDoiIixtb2RlOiIifSxsaXN0OltdLGluaXRpYWxpemU6ZnVuY3Rp
b24ocj0KLGkpe3RoaXMuYXBwPTNEcix0aGlzLm9wdGlvbnM9M0RuLm1lcmdlKGksdGhpcy5vcHRp
b25zRGVmYXVsdCksdGhpcy50YWJsZV90PQppdGxlPTNEbmV3IHQuTGFiZWwoe3RpdGxlOnRoaXMu
b3B0aW9ucy50aXRsZX0pLHRoaXMudGFibGU9M0RuZXcgZS5WaWV3KHtjb249CnRlbnQ6dGhpcy5v
cHRpb25zLmNvbnRlbnR9KTt2YXIgcz0zRCQoJzxkaXYgY2xhc3M9M0QidWktdGFibGUtZm9ybSIv
PicpO3RoaT0Kcy5vcHRpb25zLnRpdGxlJiZzLmFwcGVuZChuLndyYXAodGhpcy50YWJsZV90aXRs
ZS4kZWwpKSxzLmFwcGVuZChuLndyYXAodGhpPQpzLnRhYmxlLiRlbCkpLHRoaXMuc2V0RWxlbWVu
dChzKX0sdGl0bGU6ZnVuY3Rpb24oZSl7dGhpcy50YWJsZV90aXRsZS50aXRsZSg9CmUpfSx1cGRh
dGU6ZnVuY3Rpb24oZSx0KXt0aGlzLnRhYmxlLmRlbEFsbCgpLHRoaXMubGlzdD0zRFtdO2Zvcih2
YXIgbiBpbiBlKT0KdGhpcy5fYWRkKGVbbl0uaWR8fG4sZVtuXSx0KTtmb3IodmFyIG4gaW4gdGhp
cy5saXN0KXRoaXMubGlzdFtuXS50cmlnZ2VyKCJjPQpoYW5nZSIpfSxfYWRkOmZ1bmN0aW9uKGUs
bixyKXt2YXIgaT0zRHRoaXMscz0zRG51bGwsbz0zRG4udHlwZTtzd2l0Y2gobyl7Y2E9CnNlInRl
eHQiOnM9M0RuZXcgdC5JbnB1dCh7aWQ6ImZpZWxkLSIrZSxwbGFjZWhvbGRlcjpuLnBsYWNlaG9s
ZGVyLHZhbHVlOnIuZz0KZXQoZSksb25jaGFuZ2U6ZnVuY3Rpb24odCl7ci5zZXQoZSx0KX19KTti
cmVhaztjYXNlInJhZGlvYnV0dG9uIjpzPTNEbmV3IHQuPQpSYWRpb0J1dHRvbi5WaWV3KHtpZDoi
ZmllbGQtIitlLGRhdGE6bi5kYXRhLHZhbHVlOnIuZ2V0KGUpLG9uY2hhbmdlOmZ1bmN0aW89Cm4o
dCl7ci5zZXQoZSx0KTt2YXIgcz0zRF8uZmluZFdoZXJlKG4uZGF0YSx7dmFsdWU6dH0pO2lmKHMm
JnMub3BlcmF0aW9ucyl7dj0KYXIgbz0zRHMub3BlcmF0aW9ucztmb3IodmFyIHUgaW4gby5zaG93
KXt2YXIgYT0zRG8uc2hvd1t1XTtpLnRhYmxlLmdldChhKS5zPQpob3coKX1mb3IodmFyIHUgaW4g
by5oaWRlKXt2YXIgYT0zRG8uaGlkZVt1XTtpLnRhYmxlLmdldChhKS5oaWRlKCl9fX19KTticmU9
CmFrO2Nhc2Uic2VsZWN0IjpzPTNEbmV3IHQuU2VsZWN0LlZpZXcoe2lkOiJmaWVsZC0iK2UsZGF0
YTpuLmRhdGEsdmFsdWU6ci5nZT0KdChlKSxvbmNoYW5nZTpmdW5jdGlvbih0KXtyLnNldChlLHQp
O3ZhciBzPTNEXy5maW5kV2hlcmUobi5kYXRhLHt2YWx1ZTp0fSk7PQppZihzJiZzLm9wZXJhdGlv
bnMpe3ZhciBvPTNEcy5vcGVyYXRpb25zO2Zvcih2YXIgdSBpbiBvLnNob3cpe3ZhciBhPTNEby5z
aG89CndbdV07aS50YWJsZS5nZXQoYSkuc2hvdygpfWZvcih2YXIgdSBpbiBvLmhpZGUpe3ZhciBh
PTNEby5oaWRlW3VdO2kudGFibGUuZz0KZXQoYSkuaGlkZSgpfX19fSk7YnJlYWs7Y2FzZSJkYXRh
c2V0IjpzPTNEbmV3IHQuU2VsZWN0LlZpZXcoe2lkOiJmaWVsZC0iK2UsPQpvbmNoYW5nZTpmdW5j
dGlvbih0KXtyLnNldChlLHQpfX0pLGkuYXBwLmRhdGFzZXRzLm9uKCJhbGwiLGZ1bmN0aW9uKCl7
dmFyIHQ9Cj0zRFtdO2kuYXBwLmRhdGFzZXRzLmVhY2goZnVuY3Rpb24oZSl7ZS5nZXQoImRhdGF0
eXBlX2lkIik9M0Q9M0RuLmRhdGEmJnQucD0KdXNoKHt2YWx1ZTplLmdldCgiaWQiKSxsYWJlbDpl
LmdldCgibmFtZSIpfSl9KSxzLnVwZGF0ZSh0KSxyLmdldChlKXx8ci5zZXQoPQplLHMuZmlyc3Qo
KSkscy52YWx1ZShyLmdldChlKSl9KSxpLmFwcC5kYXRhc2V0cy50cmlnZ2VyKCJhbGwuZGF0YXNl
dHMiKTticmU9CmFrO2Nhc2UidGV4dGFyZWEiOnM9M0RuZXcgdC5UZXh0YXJlYSh7aWQ6ImZpZWxk
LSIrZSxvbmNoYW5nZTpmdW5jdGlvbigpe3Iucz0KZXQoZSxzLnZhbHVlKCkpfX0pO2JyZWFrO2Nh
c2Uic2VwYXJhdG9yIjpzPTNEJCgiPGRpdi8+Iik7YnJlYWs7ZGVmYXVsdDpzPTNEPQpuZXcgdC5J
bnB1dCh7aWQ6ImZpZWxkLSIrZSxwbGFjZWhvbGRlcjpuLnBsYWNlaG9sZGVyLHR5cGU6bi50eXBl
LG9uY2hhbmdlOmY9CnVuY3Rpb24oKXtyLnNldChlLHMudmFsdWUoKSl9fSl9aWYobyE9M0Qic2Vw
YXJhdG9yIil7ci5nZXQoZSl8fHIuc2V0KGUsbi5pbj0KaXQpLHMudmFsdWUoci5nZXQoZSkpLHRo
aXMubGlzdFtlXT0zRHM7dmFyIHU9M0QkKCI8ZGl2Lz4iKTt1LmFwcGVuZChzLiRlbCksPQpuLmlu
Zm8mJnUuYXBwZW5kKCc8ZGl2IGNsYXNzPTNEInVpLXRhYmxlLWZvcm0taW5mbyI+JytuLmluZm8r
IjwvZGl2PiIpLHRoaXM9Ci5vcHRpb25zLnN0eWxlPTNEPTNEImJvbGQiPyh0aGlzLnRhYmxlLmFk
ZCgobmV3IHQuTGFiZWwoe3RpdGxlOm4udGl0bGUsY2xzOj0KImZvcm0tbGFiZWwifSkpLiRlbCks
dGhpcy50YWJsZS5hZGQodSkpOih0aGlzLnRhYmxlLmFkZCgnPHNwYW4gY2xhc3M9M0QidWktPQp0
YWJsZS1mb3JtLXRpdGxlIj4nK24udGl0bGUrIjwvc3Bhbj4iLCIyNSUiKSx0aGlzLnRhYmxlLmFk
ZCh1KSl9ZWxzZSB0aGlzLnQ9CmFibGUuYWRkKCc8ZGl2IGNsYXNzPTNEInVpLXRhYmxlLWZvcm0t
c2VwYXJhdG9yIj4nK24udGl0bGUrIjo8ZGl2Lz4iKSx0aGlzLj0KdGFibGUuYWRkKCQoIjxkaXYv
PiIpKTt0aGlzLnRhYmxlLmFwcGVuZChlKSxuLmhpZGUmJnRoaXMudGFibGUuZ2V0KGUpLmhpZGUo
PQopfX0pO3JldHVybntWaWV3OnJ9fSksZGVmaW5lKCJwbHVnaW4vdmlld3Mvc2V0dGluZ3MiLFsi
bXZjL3VpL3VpLW1pc2MiLCJwbHU9Cmdpbi9saWJyYXJ5L3VpLXRhYmxlLWZvcm0iLCJ1dGlscy91
dGlscyJdLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gQmFja2JvbmUuVj0KaWV3LmV4dGVuZCh7aW5p
dGlhbGl6ZTpmdW5jdGlvbihlLG4pe3RoaXMuYXBwPTNEZTt2YXIgcj0zRHRoaXM7dGhpcy5jaGFy
dD0KPTNEdGhpcy5hcHAuY2hhcnQsdGhpcy5mb3JtPTNEbmV3IHQuVmlldyhlLHt0aXRsZToiQ29u
ZmlndXJhdGlvbiIsY29udGVudDoiPQpUaGlzIGNoYXJ0IHR5cGUgZG9lcyBub3QgcHJvdmlkZSBh
bnkgb3B0aW9ucy4ifSksdGhpcy5zZXRFbGVtZW50KHRoaXMuZm9ybS49CiRlbCk7dmFyIHI9M0R0
aGlzO3RoaXMuY2hhcnQub24oImNoYW5nZSIsZnVuY3Rpb24oKXtyLl9yZWZyZXNoKCl9KX0sX3Jl
ZnJlcz0KaDpmdW5jdGlvbigpe3ZhciBlPTNEdGhpcy5jaGFydC5kZWZpbml0aW9uO2lmKCFlKXJl
dHVybjt0aGlzLmZvcm0udGl0bGUoZS5jPQphdGVnb3J5KyIgLSAiK2UudGl0bGUrIjoiKSx0aGlz
LmZvcm0udXBkYXRlKGUuc2V0dGluZ3MsdGhpcy5jaGFydC5zZXR0aW5ncyk9Cn19KX0pLGRlZmlu
ZSgicGx1Z2luL3ZpZXdzL3R5cGVzIixbInV0aWxzL3V0aWxzIiwibXZjL3VpL3VpLW1pc2MiXSxm
dW5jdGlvbj0KKGUsdCl7cmV0dXJuIEJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVs
dDp7b25jaGFuZ2U6bnVsbCxvbmRibGNsaWNrPQo6bnVsbH0sZXZlbnRzOntjbGljazoiX29uY2xp
Y2siLGRibGNsaWNrOiJfb25kYmxjbGljayJ9LGluaXRpYWxpemU6ZnVuY3Rpb249CihuLHIpe3Zh
ciBpPTNEdGhpczt0aGlzLmFwcD0zRG4sdGhpcy5vcHRpb25zPTNEZS5tZXJnZShyLHRoaXMub3B0
aW9uc0RlZmF1bD0KdCk7dmFyIHM9M0QkKCc8ZGl2IGNsYXNzPTNEImNoYXJ0cy1ncmlkIi8+Jyk7
cy5hcHBlbmQoZS53cmFwKChuZXcgdC5MYWJlbCh7PQp0aXRsZToiSG93IG1hbnkgZGF0YSBwb2lu
dHMgd291bGQgeW91IGxpa2UgdG8gYW5hbHl6ZT8ifSkpLiRlbCkpLHRoaXMubGlicmE9CnJ5PTNE
bmV3IHQuUmFkaW9CdXR0b24uVmlldyh7ZGF0YTpbe2xhYmVsOiJGZXcgKDw1MDApIix2YWx1ZToi
c21hbGwifSx7bGFiZT0KbDoiU29tZSAoPDEwaykiLHZhbHVlOiJtZWRpdW0ifSx7bGFiZWw6Ik1h
bnkgKD4xMGspIix2YWx1ZToibGFyZ2UifV0sb25jaGFuPQpnZTpmdW5jdGlvbihlKXtpLl9maWx0
ZXIoZSl9fSkscy5hcHBlbmQoZS53cmFwKHRoaXMubGlicmFyeS4kZWwpKSx0aGlzLnNldEU9Cmxl
bWVudChzKSx0aGlzLl9yZW5kZXIoKSx0aGlzLmxpYnJhcnkudmFsdWUoInNtYWxsIiksdGhpcy5s
aWJyYXJ5LnRyaWdnZXIoIj0KY2hhbmdlIil9LHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhp
cy4kZWwuZmluZCgiLmN1cnJlbnQiKS5hdHRyKCJpZCIpO2UhPQo9M0Q9M0R1bmRlZmluZWQmJih0
aGlzLiRlbC5maW5kKCIuY3VycmVudCIpLnJlbW92ZUNsYXNzKCJjdXJyZW50IiksdGhpcy4kZWw9
Ci5maW5kKCIjIitlKS5hZGRDbGFzcygiY3VycmVudCIpKTt2YXIgbj0zRHRoaXMuJGVsLmZpbmQo
Ii5jdXJyZW50IikuYXR0cigiaT0KZCIpO3JldHVybiBuPTNEPTNEPTNEdW5kZWZpbmVkP251bGw6
KG4hPTNEdCYmdGhpcy5vcHRpb25zLm9uY2hhbmdlJiZ0aGlzLm9wPQp0aW9ucy5vbmNoYW5nZShl
KSxuKX0sX2ZpbHRlcjpmdW5jdGlvbihlKXt0aGlzLiRlbC5maW5kKCIuaGVhZGVyIikuaGlkZSgp
O3Y9CmFyIHQ9M0R0aGlzLmFwcC50eXBlcy5hdHRyaWJ1dGVzO2Zvcih2YXIgbiBpbiB0KXt2YXIg
cj0zRHRbbl0saT0zRHRoaXMuJGVsLj0KZmluZCgiIyIrbikscz0zRHRoaXMuJGVsLmZpbmQoIiN0
eXBlcy1oZWFkZXItIit0aGlzLmNhdGVnb3JpZXNfaW5kZXhbci5jYXRlPQpnb3J5XSksbz0zRHIu
a2V5d29yZHN8fCIiO28uaW5kZXhPZihlKT49M0QwPyhpLnNob3coKSxzLnNob3coKSk6aS5oaWRl
KCl9fSw9Cl9yZW5kZXI6ZnVuY3Rpb24oKXt0aGlzLmNhdGVnb3JpZXM9M0R7fSx0aGlzLmNhdGVn
b3JpZXNfaW5kZXg9M0R7fTt2YXIgZT0zRD0KMCx0PTNEdGhpcy5hcHAudHlwZXMuYXR0cmlidXRl
cztmb3IodmFyIG4gaW4gdCl7dmFyIHI9M0R0W25dLGk9M0RyLmNhdGVnb3J5PQo7dGhpcy5jYXRl
Z29yaWVzW2ldfHwodGhpcy5jYXRlZ29yaWVzW2ldPTNEe30sdGhpcy5jYXRlZ29yaWVzX2luZGV4
W2ldPTNEZSs9CispLHRoaXMuY2F0ZWdvcmllc1tpXVtuXT0zRHJ9Zm9yKHZhciBpIGluIHRoaXMu
Y2F0ZWdvcmllcyl7dmFyIHM9M0QkKCc8ZGl2ID0Kc3R5bGU9M0QiY2xlYXI6IGJvdGg7Ii8+Jyk7
cy5hcHBlbmQodGhpcy5fdGVtcGxhdGVfaGVhZGVyKHtpZDoidHlwZXMtaGVhZGVyPQotIit0aGlz
LmNhdGVnb3JpZXNfaW5kZXhbaV0sdGl0bGU6aX0pKTtmb3IodmFyIG4gaW4gdGhpcy5jYXRlZ29y
aWVzW2ldKXt2YXI9CiByPTNEdGhpcy5jYXRlZ29yaWVzW2ldW25dLG89M0RyLnRpdGxlKyIgKCIr
ci5saWJyYXJ5KyIpIjtyLnpvb21hYmxlJiYobz0zRD0KJzxzcGFuIGNsYXNzPTNEImZhIGZhLXNl
YXJjaC1wbHVzIi8+JytvKSxzLmFwcGVuZCh0aGlzLl90ZW1wbGF0ZV9pdGVtKHtpZDpuPQosdGl0
bGU6byx1cmw6Y29uZmlnLmFwcF9yb290KyJjaGFydHMvIit0aGlzLmFwcC5jaGFydFBhdGgobikr
Ii9sb2dvLnBuZyJ9KSk9Cn10aGlzLiRlbC5hcHBlbmQocyl9fSxfb25jbGljazpmdW5jdGlvbihl
KXt2YXIgdD0zRHRoaXMudmFsdWUoKSxuPTNEJChlLnRhcj0KZ2V0KS5jbG9zZXN0KCIuaXRlbSIp
LmF0dHIoImlkIik7biE9M0QiIiYmbiYmdCE9M0RuJiZ0aGlzLnZhbHVlKG4pfSxfb25kYmxjPQps
aWNrOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy52YWx1ZSgpO3QmJnRoaXMub3B0aW9ucy5vbmRi
bGNsaWNrJiZ0aGlzLm9wdGk9Cm9ucy5vbmRibGNsaWNrKHQpfSxfdGVtcGxhdGVfaGVhZGVyOmZ1
bmN0aW9uKGUpe3JldHVybic8ZGl2IGlkPTNEIicrZS5pZCsnIj0KIGNsYXNzPTNEImhlYWRlciI+
JysiJmJ1bGw7ICIrZS50aXRsZSsiPGRpdj4ifSxfdGVtcGxhdGVfaXRlbTpmdW5jdGlvbihlKXty
PQpldHVybic8ZGl2IGlkPTNEIicrZS5pZCsnIiBjbGFzcz0zRCJpdGVtIj4nKyc8aW1nIGNsYXNz
PTNEImltYWdlIiBzcmM9M0QiJys9CmUudXJsKyciPicrJzxkaXYgY2xhc3M9M0QidGl0bGUiPicr
ZS50aXRsZSsiPC9kaXY+IisiPGRpdj4ifX0pfSksZGVmaW5lKCJwbD0KdWdpbi92aWV3cy9lZGl0
b3IiLFsibXZjL3VpL3VpLXRhYnMiLCJtdmMvdWkvdWktbWlzYyIsIm12Yy91aS91aS1wb3J0bGV0
IiwiPQp1dGlscy91dGlscyIsInBsdWdpbi9tb2RlbHMvY2hhcnQiLCJwbHVnaW4vbW9kZWxzL2dy
b3VwIiwicGx1Z2luL3ZpZXdzL2dyb3U9CnAiLCJwbHVnaW4vdmlld3Mvc2V0dGluZ3MiLCJwbHVn
aW4vdmlld3MvdHlwZXMiXSxmdW5jdGlvbihlLHQsbixyLGkscyxvLHUsYT0KKXtyZXR1cm4gQmFj
a2JvbmUuVmlldy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oaSxzKXt2YXIgbz0zRHRoaXM7
dGhpcy5hPQpwcD0zRGksdGhpcy5jaGFydD0zRHRoaXMuYXBwLmNoYXJ0LHRoaXMubWVzc2FnZT0z
RG5ldyB0Lk1lc3NhZ2UsdGhpcy5wb3J0bGU9CnQ9M0RuZXcgbi5WaWV3KHtpY29uOiJmYS1iYXIt
Y2hhcnQtbyIsdGl0bGU6IkVkaXRvciIsb3BlcmF0aW9uczp7c2F2ZTpuZXcgdD0KLkJ1dHRvbklj
b24oe2ljb246ImZhLXNhdmUiLHRvb2x0aXA6IkRyYXcgQ2hhcnQiLHRpdGxlOiJEcmF3IixvbmNs
aWNrOmZ1bmN0PQppb24oKXtvLl9zYXZlQ2hhcnQoKX19KSxiYWNrOm5ldyB0LkJ1dHRvbkljb24o
e2ljb246ImZhLWNhcmV0LWxlZnQiLHRvb2x0aXA9CjoiUmV0dXJuIHRvIFZpZXdlciIsdGl0bGU6
IkNhbmNlbCIsb25jbGljazpmdW5jdGlvbigpe28uYXBwLmdvKCJ2aWV3ZXIiKSxvLj0KYXBwLnN0
b3JhZ2UubG9hZCgpfX0pfX0pLHRoaXMudHlwZXM9M0RuZXcgYShpLHtvbmNoYW5nZTpmdW5jdGlv
bihlKXt2YXIgdD0KPTNEby5hcHAudHlwZXMuZ2V0KGUpO3R8fGNvbnNvbGUuZGVidWcoIkZBSUxF
RCAtIEVkaXRvcjo6b25jaGFuZ2UoKSAtIENoYXJ0PQogdHlwZSBub3Qgc3VwcG9ydGVkLiIpLG8u
Y2hhcnQuZGVmaW5pdGlvbj0zRHQsby5jaGFydC5zZXR0aW5ncy5jbGVhcigpLG8uY2g9CmFydC5z
ZXQoe3R5cGU6ZX0pLG8uY2hhcnQuc2V0KCJtb2RpZmllZCIsITApLGNvbnNvbGUuZGVidWcoIkVk
aXRvcjo6b25jaGFuZz0KZSgpIC0gU3dpdGNoZWQgY2hhcnQgdHlwZS4iKX0sb25kYmxjbGljazpm
dW5jdGlvbihlKXtvLl9zYXZlQ2hhcnQoKX19KSx0aGlzPQoudGFicz0zRG5ldyBlLlZpZXcoe3Rp
dGxlX25ldzoiQWRkIERhdGEiLG9ubmV3OmZ1bmN0aW9uKCl7dmFyIGU9M0RvLl9hZGRHcm89CnVw
TW9kZWwoKTtvLnRhYnMuc2hvdyhlLmlkKX19KSx0aGlzLnRpdGxlPTNEbmV3IHQuSW5wdXQoe3Bs
YWNlaG9sZGVyOiJDaGFydD0KIHRpdGxlIixvbmNoYW5nZTpmdW5jdGlvbigpe28uY2hhcnQuc2V0
KCJ0aXRsZSIsby50aXRsZS52YWx1ZSgpKX19KTt2YXIgZj0KPTNEJCgiPGRpdi8+Iik7Zi5hcHBl
bmQoci53cmFwKChuZXcgdC5MYWJlbCh7dGl0bGU6IlByb3ZpZGUgYSBjaGFydCB0aXRsZToiPQp9
KSkuJGVsKSksZi5hcHBlbmQoci53cmFwKHRoaXMudGl0bGUuJGVsKSksZi5hcHBlbmQoci53cmFw
KHRoaXMudHlwZXMuJGVsKSk9Cix0aGlzLnRhYnMuYWRkKHtpZDoibWFpbiIsdGl0bGU6IlN0YXJ0
IiwkZWw6Zn0pLHRoaXMuc2V0dGluZ3M9M0RuZXcgdSh0aGlzLj0KYXBwKSx0aGlzLnRhYnMuYWRk
KHtpZDoic2V0dGluZ3MiLHRpdGxlOiJDb25maWd1cmF0aW9uIiwkZWw6dGhpcy5zZXR0aW5ncy4k
PQplbH0pLHRoaXMucG9ydGxldC5hcHBlbmQodGhpcy5tZXNzYWdlLiRlbCksdGhpcy5wb3J0bGV0
LmFwcGVuZCh0aGlzLnRhYnMuJGU9CmwpLHRoaXMuc2V0RWxlbWVudCh0aGlzLnBvcnRsZXQuJGVs
KSx0aGlzLnRhYnMuaGlkZU9wZXJhdGlvbigiYmFjayIpO3ZhciBvPQo9M0R0aGlzO3RoaXMuY2hh
cnQub24oImNoYW5nZTp0aXRsZSIsZnVuY3Rpb24oZSl7by5fcmVmcmVzaFRpdGxlKCl9KSx0aGlz
LmM9CmhhcnQub24oImNoYW5nZTp0eXBlIixmdW5jdGlvbihlKXtvLnR5cGVzLnZhbHVlKGUuZ2V0
KCJ0eXBlIikpfSksdGhpcy5jaGFydD0KLm9uKCJyZXNldCIsZnVuY3Rpb24oZSl7by5fcmVzZXRD
aGFydCgpfSksdGhpcy5hcHAuY2hhcnQub24oInJlZHJhdyIsZnVuY3RpPQpvbihlKXtvLnBvcnRs
ZXQuc2hvd09wZXJhdGlvbigiYmFjayIpfSksdGhpcy5hcHAuY2hhcnQuZ3JvdXBzLm9uKCJhZGQi
LGZ1bmM9CnRpb24oZSl7by5fYWRkR3JvdXAoZSl9KSx0aGlzLmFwcC5jaGFydC5ncm91cHMub24o
InJlbW92ZSIsZnVuY3Rpb24oZSl7by5fcj0KZW1vdmVHcm91cChlKX0pLHRoaXMuYXBwLmNoYXJ0
Lmdyb3Vwcy5vbigicmVzZXQiLGZ1bmN0aW9uKGUpe28uX3JlbW92ZUFsbEdyPQpvdXBzKCl9KSx0
aGlzLmFwcC5jaGFydC5ncm91cHMub24oImNoYW5nZTprZXkiLGZ1bmN0aW9uKGUpe28uX3JlZnJl
c2hHcm91cEs9CmV5KCl9KSx0aGlzLl9yZXNldENoYXJ0KCl9LHNob3c6ZnVuY3Rpb24oKXt0aGlz
LiRlbC5zaG93KCl9LGhpZGU6ZnVuY3Rpb24oKT0Ke3RoaXMuJGVsLmhpZGUoKX0sX3JlZnJlc2hU
aXRsZTpmdW5jdGlvbigpe3ZhciBlPTNEdGhpcy5jaGFydC5nZXQoInRpdGxlIik7PQp0aGlzLnBv
cnRsZXQudGl0bGUoZSksdGhpcy50aXRsZS52YWx1ZShlKX0sX3JlZnJlc2hHcm91cEtleTpmdW5j
dGlvbigpe3ZhciA9CmU9M0R0aGlzLHQ9M0QwO3RoaXMuY2hhcnQuZ3JvdXBzLmVhY2goZnVuY3Rp
b24obil7dmFyIHI9M0RuLmdldCgia2V5IiwiIik7cj0KPTNEPTNEIiImJihyPTNEIkRhdGEgbGFi
ZWwiKSxlLnRhYnMudGl0bGUobi5pZCwrK3QrIjogIityKX0pfSxfYWRkR3JvdXBNb2RlPQpsOmZ1
bmN0aW9uKCl7dmFyIGU9M0RuZXcgcyh7aWQ6ci51dWlkKCl9KTtyZXR1cm4gdGhpcy5jaGFydC5n
cm91cHMuYWRkKGUpLGU9Cn0sX2FkZEdyb3VwOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcyxuPTNE
bmV3IG8odGhpcy5hcHAse2dyb3VwOmV9KTt0aGlzLnRhYj0Kcy5hZGQoe2lkOmUuaWQsJGVsOm4u
JGVsLG9uZGVsOmZ1bmN0aW9uKCl7dC5jaGFydC5ncm91cHMucmVtb3ZlKGUuaWQpfX0pLHRoPQpp
cy5fcmVmcmVzaEdyb3VwS2V5KCksdGhpcy5jaGFydC5zZXQoIm1vZGlmaWVkIiwhMCl9LF9yZW1v
dmVHcm91cDpmdW5jdGlvbig9CmUpe3RoaXMudGFicy5kZWwoZS5pZCksdGhpcy5fcmVmcmVzaEdy
b3VwS2V5KCksdGhpcy5jaGFydC5zZXQoIm1vZGlmaWVkIiwhMD0KKX0sX3JlbW92ZUFsbEdyb3Vw
czpmdW5jdGlvbihlKXt0aGlzLnRhYnMuZGVsUmVtb3ZhYmxlKCl9LF9yZXNldENoYXJ0OmZ1bmN0
PQppb24oKXt0aGlzLmNoYXJ0LnNldCgiaWQiLHIudXVpZCgpKSx0aGlzLmNoYXJ0LnNldCgidHlw
ZSIsIm52ZDNfYmFyIiksdGhpcy49CmNoYXJ0LnNldCgiZGF0YXNldF9pZCIsdGhpcy5hcHAub3B0
aW9ucy5jb25maWcuZGF0YXNldF9pZCksdGhpcy5jaGFydC5zZXQoIj0KdGl0bGUiLCJOZXcgQ2hh
cnQiKSx0aGlzLnBvcnRsZXQuaGlkZU9wZXJhdGlvbigiYmFjayIpfSxfc2F2ZUNoYXJ0OmZ1bmN0
aW9uPQooKXt0aGlzLmNoYXJ0LnNldCh7dHlwZTp0aGlzLnR5cGVzLnZhbHVlKCksdGl0bGU6dGhp
cy50aXRsZS52YWx1ZSgpLGRhdGU6ci49CnRpbWUoKX0pO2lmKHRoaXMuY2hhcnQuZ3JvdXBzLmxl
bmd0aD0zRD0zRDApe3RoaXMubWVzc2FnZS51cGRhdGUoe21lc3NhZ2U6Ij0KUGxlYXNlIHNlbGVj
dCBkYXRhIGNvbHVtbnMgYmVmb3JlIGRyYXdpbmcgdGhlIGNoYXJ0LiJ9KTt2YXIgZT0zRHRoaXMu
X2FkZEdyPQpvdXBNb2RlbCgpO3RoaXMudGFicy5zaG93KGUuaWQpO3JldHVybn12YXIgdD0zRHRo
aXMsbj0zRCEwLGk9M0R0aGlzLmNoYXJ0LmQ9CmVmaW5pdGlvbjt0aGlzLmNoYXJ0Lmdyb3Vwcy5l
YWNoKGZ1bmN0aW9uKGUpe2lmKCFuKXJldHVybjtmb3IodmFyIHIgaW4gaS5jbz0KbHVtbnMpaWYo
ZS5hdHRyaWJ1dGVzW3JdPTNEPTNEIm51bGwiKXt0Lm1lc3NhZ2UudXBkYXRlKHtzdGF0dXM6ImRh
bmdlciIsbWVzPQpzYWdlOiJUaGlzIGNoYXJ0IHR5cGUgcmVxdWlyZXMgY29sdW1uIHR5cGVzIG5v
dCBmb3VuZCBpbiB5b3VyIHRhYnVsYXIgZmlsZS49CiJ9KSx0LnRhYnMuc2hvdyhlLmlkKSxuPTNE
ITE7cmV0dXJufX0pO2lmKCFuKXJldHVybjt0aGlzLmFwcC5nbygidmlld2VyIik7dj0KYXIgdD0z
RHRoaXM7dGhpcy5hcHAuZGVmZXJyZWQuZXhlY3V0ZShmdW5jdGlvbigpe3QuYXBwLnN0b3JhZ2Uu
c2F2ZSgpLHQuY2hhPQpydC50cmlnZ2VyKCJyZWRyYXciKX0pfX0pfSksZGVmaW5lKCJwbHVnaW4v
bW9kZWxzL2NvbmZpZyIsW10sZnVuY3Rpb24oKXtyZXQ9CnVybiBCYWNrYm9uZS5Nb2RlbC5leHRl
bmQoe2RlZmF1bHRzOntxdWVyeV9saW1pdDoxZTQscXVlcnlfdGltZW91dDoxMDB9fSl9KT0KLGRl
ZmluZSgicGx1Z2luL2NoYXJ0cy9mb3Jtcy9kZWZhdWx0IixbXSxmdW5jdGlvbigpe3JldHVybnt0
aXRsZToiIixjYXRlZ29yPQp5OiIiLGxpYnJhcnk6IiIsdGFnOiIiLGtleXdvcmRzOiIiLHNldHRp
bmdzOntzZXBhcmF0b3JfeDp7dGl0bGU6IlggYXhpcyIsdHk9CnBlOiJzZXBhcmF0b3IifSx4X2F4
aXNfbGFiZWw6e3RpdGxlOiJBeGlzIGxhYmVsIixpbmZvOiJQcm92aWRlIGEgbGFiZWwgZm9yID0K
dGhlIGF4aXMuIix0eXBlOiJ0ZXh0Iixpbml0OiJYLWF4aXMiLHBsYWNlaG9sZGVyOiJBeGlzIGxh
YmVsIn0seF9heGlzX3R5cGU6PQp7dGl0bGU6IkF4aXMgdmFsdWUgdHlwZSIsaW5mbzoiU2VsZWN0
IHRoZSB2YWx1ZSB0eXBlIG9mIHRoZSBheGlzLiIsdHlwZToic2U9CmxlY3QiLGluaXQ6ImF1dG8i
LGRhdGE6W3tsYWJlbDoiLS0gRG8gbm90IHNob3cgdmFsdWVzIC0tIix2YWx1ZToiaGlkZSIsb3Bl
cj0KYXRpb25zOntoaWRlOlsieF9heGlzX3ByZWNpc2lvbiJdfX0se2xhYmVsOiJBdXRvIix2YWx1
ZToiYXV0byIsb3BlcmF0aW9uczp7PQpoaWRlOlsieF9heGlzX3ByZWNpc2lvbiJdfX0se2xhYmVs
OiJGbG9hdCIsdmFsdWU6ImYiLG9wZXJhdGlvbnM6e3Nob3c6WyJ4X2E9Cnhpc19wcmVjaXNpb24i
XX19LHtsYWJlbDoiRXhwb25lbnQiLHZhbHVlOiJlIixvcGVyYXRpb25zOntzaG93OlsieF9heGlz
X3ByZT0KY2lzaW9uIl19fSx7bGFiZWw6IkludGVnZXIiLHZhbHVlOiJkIixvcGVyYXRpb25zOnto
aWRlOlsieF9heGlzX3ByZWNpc2lvbiJdPQp9fSx7bGFiZWw6IlBlcmNlbnRhZ2UiLHZhbHVlOiJw
IixvcGVyYXRpb25zOntzaG93OlsieF9heGlzX3ByZWNpc2lvbiJdfX0se2w9CmFiZWw6IlNJLXBy
ZWZpeCIsdmFsdWU6InMiLG9wZXJhdGlvbnM6e2hpZGU6WyJ4X2F4aXNfcHJlY2lzaW9uIl19fV19
LHhfYXhpcz0KX3ByZWNpc2lvbjp7dGl0bGU6IkF4aXMgdGljayBmb3JtYXQiLGluZm86IlNlbGVj
dCB0aGUgdGljayBmb3JtYXQgZm9yIHRoZSBhPQp4aXMuIix0eXBlOiJzZWxlY3QiLGluaXQ6IjEi
LGRhdGE6W3tsYWJlbDoiMC4wMDAwMSIsdmFsdWU6IjUifSx7bGFiZWw6IjAuMDA9CjAxIix2YWx1
ZToiNCJ9LHtsYWJlbDoiMC4wMDEiLHZhbHVlOiIzIn0se2xhYmVsOiIwLjAxIix2YWx1ZToiMiJ9
LHtsYWJlbDoiMD0KLjEiLHZhbHVlOiIxIn0se2xhYmVsOiIxIix2YWx1ZToiMCJ9XX0sc2VwYXJh
dG9yX3k6e3RpdGxlOiJZIGF4aXMiLHR5cGU6InNlPQpwYXJhdG9yIn0seV9heGlzX2xhYmVsOnt0
aXRsZToiQXhpcyBsYWJlbCIsaW5mbzoiUHJvdmlkZSBhIGxhYmVsIGZvciB0aGUgYXg9CmlzLiIs
dHlwZToidGV4dCIsaW5pdDoiWS1heGlzIixwbGFjZWhvbGRlcjoiQXhpcyBsYWJlbCJ9LHlfYXhp
c190eXBlOnt0aXRsZT0KOiJBeGlzIHZhbHVlIHR5cGUiLGluZm86IlNlbGVjdCB0aGUgdmFsdWUg
dHlwZSBvZiB0aGUgYXhpcy4iLHR5cGU6InNlbGVjdCIsPQppbml0OiJhdXRvIixkYXRhOlt7bGFi
ZWw6Ii0tIERvIG5vdCBzaG93IHZhbHVlcyAtLSIsdmFsdWU6ImhpZGUiLG9wZXJhdGlvbnM9Cjp7
aGlkZTpbInlfYXhpc19wcmVjaXNpb24iXX19LHtsYWJlbDoiQXV0byIsdmFsdWU6ImF1dG8iLG9w
ZXJhdGlvbnM6e2hpZGU6Wz0KInlfYXhpc19wcmVjaXNpb24iXX19LHtsYWJlbDoiRmxvYXQiLHZh
bHVlOiJmIixvcGVyYXRpb25zOntzaG93OlsieV9heGlzX3ByPQplY2lzaW9uIl19fSx7bGFiZWw6
IkV4cG9uZW50Iix2YWx1ZToiZSIsb3BlcmF0aW9uczp7c2hvdzpbInlfYXhpc19wcmVjaXNpb249
CiJdfX0se2xhYmVsOiJJbnRlZ2VyIix2YWx1ZToiZCIsb3BlcmF0aW9uczp7aGlkZTpbInlfYXhp
c19wcmVjaXNpb24iXX19LHtsYT0KYmVsOiJQZXJjZW50YWdlIix2YWx1ZToicCIsb3BlcmF0aW9u
czp7c2hvdzpbInlfYXhpc19wcmVjaXNpb24iXX19LHtsYWJlbDoiPQpTSS1wcmVmaXgiLHZhbHVl
OiJzIixvcGVyYXRpb25zOntoaWRlOlsieV9heGlzX3ByZWNpc2lvbiJdfX1dfSx5X2F4aXNfcHJl
Y2k9CnNpb246e3RpdGxlOiJBeGlzIHRpY2sgZm9ybWF0IixpbmZvOiJTZWxlY3QgdGhlIHRpY2sg
Zm9ybWF0IGZvciB0aGUgYXhpcy4iLD0KdHlwZToic2VsZWN0Iixpbml0OiIxIixkYXRhOlt7bGFi
ZWw6IjAuMDAwMDEiLHZhbHVlOiI1In0se2xhYmVsOiIwLjAwMDEiLHZhPQpsdWU6IjQifSx7bGFi
ZWw6IjAuMDAxIix2YWx1ZToiMyJ9LHtsYWJlbDoiMC4wMSIsdmFsdWU6IjIifSx7bGFiZWw6IjAu
MSIsdmE9Cmx1ZToiMSJ9LHtsYWJlbDoiMSIsdmFsdWU6IjAifV19LHNlcGFyYXRvcl9sZWdlbmQ6
e3RpdGxlOiJPdGhlcnMiLHR5cGU6InNlcD0KYXJhdG9yIn0sc2hvd19sZWdlbmQ6e3RpdGxlOiJT
aG93IGxlZ2VuZCIsaW5mbzoiV291bGQgeW91IGxpa2UgdG8gYWRkIGEgbGVnPQplbmQ/Iix0eXBl
OiJyYWRpb2J1dHRvbiIsaW5pdDoidHJ1ZSIsZGF0YTpbe2xhYmVsOiJZZXMiLHZhbHVlOiJ0cnVl
In0se2xhYmU9Cmw6Ik5vIix2YWx1ZToiZmFsc2UifV19LHVzZV9wYW5lbHM6e3RpdGxlOiJVc2Ug
bXVsdGktcGFuZWxzIixpbmZvOiJXb3VsZCB5bz0KdSBsaWtlIHRvIHNlcGFyYXRlIHlvdXIgZGF0
YSBpbnRvIGluZGl2aWR1YWwgcGFuZWxzPyIsdHlwZToicmFkaW9idXR0b24iLGluPQppdDoiZmFs
c2UiLGRhdGE6W3tsYWJlbDoiWWVzIix2YWx1ZToidHJ1ZSJ9LHtsYWJlbDoiTm8iLHZhbHVlOiJm
YWxzZSJ9XX19fX09CiksZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUsdCl7cmV0dXJuKG5ldyBEYXRl
KHQsZSsxLDApKS5nZXREYXRlKCl9ZnVuY3Rpb24gbj0KKGUsdCxuKXtyZXR1cm4gZnVuY3Rpb24o
cixpLHMpe3ZhciBvPTNEZShyKSx1PTNEW107bzxyJiZ0KG8pO2lmKHM+MSl3aGlsZShvPQo8aSl7
dmFyIGE9M0RuZXcgRGF0ZSgrbyk7bihhKSVzPTNEPTNEPTNEMCYmdS5wdXNoKGEpLHQobyl9ZWxz
ZSB3aGlsZShvPGkpdS49CnB1c2gobmV3IERhdGUoK28pKSx0KG8pO3JldHVybiB1fX12YXIgZT0z
RHdpbmRvdy5udnx8e307ZS52ZXJzaW9uPTNEIjEuMS4xNT0KYiIsZS5kZXY9M0QhMCx3aW5kb3cu
bnY9M0RlLGUudG9vbHRpcD0zRGUudG9vbHRpcHx8e30sZS51dGlscz0zRGUudXRpbHN8fHt9PQos
ZS5tb2RlbHM9M0RlLm1vZGVsc3x8e30sZS5jaGFydHM9M0R7fSxlLmdyYXBocz0zRFtdLGUubG9n
cz0zRHt9LGUuZGlzcGF0Y2g9Cj0zRGQzLmRpc3BhdGNoKCJyZW5kZXJfc3RhcnQiLCJyZW5kZXJf
ZW5kIiksZS5kZXYmJihlLmRpc3BhdGNoLm9uKCJyZW5kZXJfcz0KdGFydCIsZnVuY3Rpb24odCl7
ZS5sb2dzLnN0YXJ0VGltZT0zRCsobmV3IERhdGUpfSksZS5kaXNwYXRjaC5vbigicmVuZGVyX2Vu
PQpkIixmdW5jdGlvbih0KXtlLmxvZ3MuZW5kVGltZT0zRCsobmV3IERhdGUpLGUubG9ncy50b3Rh
bFRpbWU9M0RlLmxvZ3MuZW5kVGk9Cm1lLWUubG9ncy5zdGFydFRpbWUsZS5sb2coInRvdGFsIixl
LmxvZ3MudG90YWxUaW1lKX0pKSxlLmxvZz0zRGZ1bmN0aW9uKCl7aT0KZihlLmRldiYmY29uc29s
ZS5sb2cmJmNvbnNvbGUubG9nLmFwcGx5KWNvbnNvbGUubG9nLmFwcGx5KGNvbnNvbGUsYXJndW1l
bnRzPQopO2Vsc2UgaWYoZS5kZXYmJnR5cGVvZiBjb25zb2xlLmxvZz0zRD0zRCJmdW5jdGlvbiIm
JkZ1bmN0aW9uLnByb3RvdHlwZS5iaW49CmQpe3ZhciB0PTNERnVuY3Rpb24ucHJvdG90eXBlLmJp
bmQuY2FsbChjb25zb2xlLmxvZyxjb25zb2xlKTt0LmFwcGx5KGNvbnNvbD0KZSxhcmd1bWVudHMp
fXJldHVybiBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aC0xXX0sZS5yZW5kZXI9M0RmdW5jdGlv
bihuKXtuPQo9M0RufHwxLGUucmVuZGVyLmFjdGl2ZT0zRCEwLGUuZGlzcGF0Y2gucmVuZGVyX3N0
YXJ0KCksc2V0VGltZW91dChmdW5jdGlvbig9Cil7dmFyIHQscjtmb3IodmFyIGk9M0QwO2k8biYm
KHI9M0RlLnJlbmRlci5xdWV1ZVtpXSk7aSsrKXQ9M0RyLmdlbmVyYXRlKCksdD0KeXBlb2Ygci5j
YWxsYmFjaz0zRD0zRHR5cGVvZiBGdW5jdGlvbiYmci5jYWxsYmFjayh0KSxlLmdyYXBocy5wdXNo
KHQpO2UucmVuPQpkZXIucXVldWUuc3BsaWNlKDAsaSksZS5yZW5kZXIucXVldWUubGVuZ3RoP3Nl
dFRpbWVvdXQoYXJndW1lbnRzLmNhbGxlZSwwKTo9CihlLmRpc3BhdGNoLnJlbmRlcl9lbmQoKSxl
LnJlbmRlci5hY3RpdmU9M0QhMSl9LDApfSxlLnJlbmRlci5hY3RpdmU9M0QhMSxlLj0KcmVuZGVy
LnF1ZXVlPTNEW10sZS5hZGRHcmFwaD0zRGZ1bmN0aW9uKHQpe3R5cGVvZiBhcmd1bWVudHNbMF09
M0Q9M0R0eXBlb2YgPQpGdW5jdGlvbiYmKHQ9M0R7Z2VuZXJhdGU6YXJndW1lbnRzWzBdLGNhbGxi
YWNrOmFyZ3VtZW50c1sxXX0pLGUucmVuZGVyLnF1ZXU9CmUucHVzaCh0KSxlLnJlbmRlci5hY3Rp
dmV8fGUucmVuZGVyKCl9LGUuaWRlbnRpdHk9M0RmdW5jdGlvbihlKXtyZXR1cm4gZX0sZT0KLnN0
cmlwPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvKFxzfCYpL2csIiIpfSxkMy50aW1l
Lm1vbnRoRW5kPTNEZnVuPQpjdGlvbihlKXtyZXR1cm4gbmV3IERhdGUoZS5nZXRGdWxsWWVhcigp
LGUuZ2V0TW9udGgoKSwwKX0sZDMudGltZS5tb250aEVuZHM9Cj0zRG4oZDMudGltZS5tb250aEVu
ZCxmdW5jdGlvbihlKXtlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCkrMSksZS5zZXREYXRlKD0K
dChlLmdldE1vbnRoKCkrMSxlLmdldEZ1bGxZZWFyKCkpKX0sZnVuY3Rpb24oZSl7cmV0dXJuIGUu
Z2V0TW9udGgoKX0pLGUuaW50PQplcmFjdGl2ZUd1aWRlbGluZT0zRGZ1bmN0aW9uKCl7ZnVuY3Rp
b24gYyhvKXtvLmVhY2goZnVuY3Rpb24obyl7ZnVuY3Rpb24gZyg9Cil7dmFyIGU9M0RkMy5tb3Vz
ZSh0aGlzKSxuPTNEZVswXSxyPTNEZVsxXSxvPTNEITAsYT0zRCExO2wmJihuPTNEZDMuZXZlbnQu
bz0KZmZzZXRYLHI9M0RkMy5ldmVudC5vZmZzZXRZLGQzLmV2ZW50LnRhcmdldC50YWdOYW1lIT0z
RD0zRCJzdmciJiYobz0zRCExKSxkPQozLmV2ZW50LnRhcmdldC5jbGFzc05hbWUuYmFzZVZhbC5t
YXRjaCgibnYtbGVnZW5kIikmJihhPTNEITApKSxvJiYobi09M0RpLmw9CmVmdCxyLT0zRGkudG9w
KTtpZihuPDB8fHI8MHx8bj5wfHxyPmR8fGQzLmV2ZW50LnJlbGF0ZWRUYXJnZXQmJmQzLmV2ZW50
LnJlbD0KYXRlZFRhcmdldC5vd25lclNWR0VsZW1lbnQ9M0Q9M0Q9M0R1bmRlZmluZWR8fGEpe2lm
KGwmJmQzLmV2ZW50LnJlbGF0ZWRUYXJnPQpldCYmZDMuZXZlbnQucmVsYXRlZFRhcmdldC5vd25l
clNWR0VsZW1lbnQ9M0Q9M0Q9M0R1bmRlZmluZWQmJmQzLmV2ZW50LnJlbGE9CnRlZFRhcmdldC5j
bGFzc05hbWUubWF0Y2godC5udlBvaW50ZXJFdmVudHNDbGFzcykpcmV0dXJuO3UuZWxlbWVudE1v
dXNlb3V0KD0Ke21vdXNlWDpuLG1vdXNlWTpyfSksYy5yZW5kZXJHdWlkZUxpbmUobnVsbCk7cmV0
dXJufXZhciBmPTNEcy5pbnZlcnQobik7dS5lPQpsZW1lbnRNb3VzZW1vdmUoe21vdXNlWDpuLG1v
dXNlWTpyLHBvaW50WFZhbHVlOmZ9KSxkMy5ldmVudC50eXBlPTNEPTNEPTNEImQ9CmJsY2xpY2si
JiZ1LmVsZW1lbnREYmxjbGljayh7bW91c2VYOm4sbW91c2VZOnIscG9pbnRYVmFsdWU6Zn0pfXZh
ciBoPTNEZDMucz0KZWxlY3QodGhpcykscD0zRG58fDk2MCxkPTNEcnx8NDAwLHY9M0RoLnNlbGVj
dEFsbCgiZy5udi13cmFwLm52LWludGVyYWN0aXZlPQpMaW5lTGF5ZXIiKS5kYXRhKFtvXSksbT0z
RHYuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIiBudi13cmFwIG52LWk9Cm50ZXJh
Y3RpdmVMaW5lTGF5ZXIiKTttLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtaW50ZXJhY3Rp
dmVHdWlkZUxpbmUiKT0KO2lmKCFmKXJldHVybjtmLm9uKCJtb3VzZW1vdmUiLGcsITApLm9uKCJt
b3VzZW91dCIsZywhMCkub24oImRibGNsaWNrIixnKSxjPQoucmVuZGVyR3VpZGVMaW5lPTNEZnVu
Y3Rpb24odCl7aWYoIWEpcmV0dXJuO3ZhciBuPTNEdi5zZWxlY3QoIi5udi1pbnRlcmFjdGk9CnZl
R3VpZGVMaW5lIikuc2VsZWN0QWxsKCJsaW5lIikuZGF0YSh0IT0zRG51bGw/W2UudXRpbHMuTmFO
dG9aZXJvKHQpXTpbXSxTdD0KcmluZyk7bi5lbnRlcigpLmFwcGVuZCgibGluZSIpLmF0dHIoImNs
YXNzIiwibnYtZ3VpZGVsaW5lIikuYXR0cigieDEiLGZ1bmN0PQppb24oZSl7cmV0dXJuIGV9KS5h
dHRyKCJ4MiIsZnVuY3Rpb24oZSl7cmV0dXJuIGV9KS5hdHRyKCJ5MSIsZCkuYXR0cigieTIiLDA9
Ciksbi5leGl0KCkucmVtb3ZlKCl9fSl9dmFyIHQ9M0RlLm1vZGVscy50b29sdGlwKCksbj0zRG51
bGwscj0zRG51bGwsaT0zRHtsZT0KZnQ6MCx0b3A6MH0scz0zRGQzLnNjYWxlLmxpbmVhcigpLG89
M0RkMy5zY2FsZS5saW5lYXIoKSx1PTNEZDMuZGlzcGF0Y2goImVsPQplbWVudE1vdXNlbW92ZSIs
ImVsZW1lbnRNb3VzZW91dCIsImVsZW1lbnREYmxjbGljayIpLGE9M0QhMCxmPTNEbnVsbCxsPTNE
bmE9CnZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoIk1TSUUiKSE9M0Q9M0QtMTtyZXR1cm4gYy5k
aXNwYXRjaD0zRHUsYy50b29sdGlwPQo9M0R0LGMubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGkudG9wPTNEdHlwZW9mIGUudG9wIT0KPTNEInVuZGVmaW5lZCI/
ZS50b3A6aS50b3AsaS5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6
aS5sPQplZnQsYyk6aX0sYy53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhuPTNEZSxjKTpufSxjLmhlaWc9Cmh0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KHI9M0RlLGMpOnJ9LGMueFNjYWxlPTNEZnVuY3Rpb24oZT0KKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8ocz0zRGUsYyk6c30sYy5zaG93R3VpZGVMaW5lPTNEZnVuY3Rpb24oZSl7
cmV0dXJuPQogYXJndW1lbnRzLmxlbmd0aD8oYT0zRGUsYyk6YX0sYy5zdmdDb250YWluZXI9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnQ9CnMubGVuZ3RoPyhmPTNEZSxjKTpmfSxjfSxlLmlu
dGVyYWN0aXZlQmlzZWN0PTNEZnVuY3Rpb24oZSx0LG4pe2lmKCFlIGluc3Rhbj0KY2VvZiBBcnJh
eSlyZXR1cm4gbnVsbDt0eXBlb2YgbiE9M0QiZnVuY3Rpb24iJiYobj0zRGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIGUuPQp4fSk7dmFyIHI9M0RkMy5iaXNlY3RvcihuKS5sZWZ0LGk9M0RkMy5tYXgoWzAs
cihlLHQpLTFdKSxzPTNEbihlW2ldLGkpO3R5cGU9Cm9mIHM9M0Q9M0QidW5kZWZpbmVkIiYmKHM9
M0RpKTtpZihzPTNEPTNEPTNEdClyZXR1cm4gaTt2YXIgbz0zRGQzLm1pbihbaSsxLD0KZS5sZW5n
dGgtMV0pLHU9M0RuKGVbb10sbyk7cmV0dXJuIHR5cGVvZiB1PTNEPTNEInVuZGVmaW5lZCImJih1
PTNEbyksTWF0aC5hPQpicyh1LXQpPj0zRE1hdGguYWJzKHMtdCk/aTpvfSxlLm5lYXJlc3RWYWx1
ZUluZGV4PTNEZnVuY3Rpb24oZSx0LG4pe3ZhciByPQo9M0RJbmZpbml0eSxpPTNEbnVsbDtyZXR1
cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKGUscyl7dmFyIG89M0RNYXRoLmFicyh0LWUpO289Cjw9M0Ry
JiZvPG4mJihyPTNEbyxpPTNEcyl9KSxpfSxmdW5jdGlvbigpe3dpbmRvdy5udi50b29sdGlwPTNE
e30sd2luZG93Lm52Lj0KbW9kZWxzLnRvb2x0aXA9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIHkoKXtp
ZihhKXt2YXIgZT0zRGQzLnNlbGVjdChhKTtlLm5vZGUoPQopLnRhZ05hbWUhPTNEPTNEInN2ZyIm
JihlPTNEZS5zZWxlY3QoInN2ZyIpKTt2YXIgdD0zRGUubm9kZSgpP2UuYXR0cigidmlld0I9Cm94
Iik6bnVsbDtpZih0KXt0PTNEdC5zcGxpdCgiICIpO3ZhciBuPTNEcGFyc2VJbnQoZS5zdHlsZSgi
d2lkdGgiKSkvdFsyXTtsLj0KbGVmdD0zRGwubGVmdCpuLGwudG9wPTNEbC50b3Aqbn19fWZ1bmN0
aW9uIGIoZSl7dmFyIHQ7YT90PTNEZDMuc2VsZWN0KGEpOnQ9Cj0zRGQzLnNlbGVjdCgiYm9keSIp
O3ZhciBuPTNEdC5zZWxlY3QoIi5udnRvb2x0aXAiKTtyZXR1cm4gbi5ub2RlKCk9M0Q9M0Q9Cj0z
RG51bGwmJihuPTNEdC5hcHBlbmQoImRpdiIpLmF0dHIoImNsYXNzIiwibnZ0b29sdGlwICIrKHU/
dToieHktdG9vbHRpcCIpKT0KLmF0dHIoImlkIixoKSksbi5ub2RlKCkuaW5uZXJIVE1MPTNEZSxu
LnN0eWxlKCJ0b3AiLDApLnN0eWxlKCJsZWZ0IiwwKS5zdHlsPQplKCJvcGFjaXR5IiwwKSxuLnNl
bGVjdEFsbCgiZGl2LCB0YWJsZSwgdGQsIHRyIikuY2xhc3NlZChwLCEwKSxuLmNsYXNzZWQocCw9
CiEwKSxuLm5vZGUoKX1mdW5jdGlvbiB3KCl7aWYoIWMpcmV0dXJuO2lmKCFnKG4pKXJldHVybjt5
KCk7dmFyIHQ9M0RsLmxlZnQsdT0KPTNEbyE9M0RudWxsP286bC50b3AsaD0zRGIobShuKSk7Zj0z
RGg7aWYoYSl7dmFyIHA9M0RhLmdldEVsZW1lbnRzQnlUYWdOYW1lPQooInN2ZyIpWzBdLGQ9M0Rw
P3AuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk6YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx2PTNE
e2w9CmVmdDowLHRvcDowfTtpZihwKXt2YXIgRT0zRHAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCks
Uz0zRGEuZ2V0Qm91bmRpbmdDbGllbj0KdFJlY3QoKSx4PTNERS50b3A7aWYoeDwwKXt2YXIgVD0z
RGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7eD0zRE1hdGguYWJzKHgpPQo+VC5oZWlnaHQ/MDp4
fXYudG9wPTNETWF0aC5hYnMoeC1TLnRvcCksdi5sZWZ0PTNETWF0aC5hYnMoRS5sZWZ0LVMubGVm
dCl9dCs9Cj0zRGEub2Zmc2V0TGVmdCt2LmxlZnQtMiphLnNjcm9sbExlZnQsdSs9M0RhLm9mZnNl
dFRvcCt2LnRvcC0yKmEuc2Nyb2xsVG9wfT0KcmV0dXJuIHMmJnM+MCYmKHU9M0RNYXRoLmZsb29y
KHUvcykqcyksZS50b29sdGlwLmNhbGNUb29sdGlwUG9zaXRpb24oW3QsdV0sPQpyLGksaCksd312
YXIgdD0zRG51bGwsbj0zRG51bGwscj0zRCJ3IixpPTNENTAscz0zRDI1LG89M0RudWxsLHU9M0Ru
dWxsLGE9M0Q9Cm51bGwsZj0zRG51bGwsbD0zRHtsZWZ0Om51bGwsdG9wOm51bGx9LGM9M0QhMCxo
PTNEIm52dG9vbHRpcC0iK01hdGguZmxvb3IoTT0KYXRoLnJhbmRvbSgpKjFlNSkscD0zRCJudi1w
b2ludGVyLWV2ZW50cy1ub25lIixkPTNEZnVuY3Rpb24oZSx0KXtyZXR1cm4gZX0sPQp2PTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGV9LG09M0RmdW5jdGlvbihlKXtpZih0IT0zRG51bGwpcmV0dXJuIHQ7
aWYoZT0zRD0zRG49CnVsbClyZXR1cm4iIjt2YXIgbj0zRGQzLnNlbGVjdChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJ0YWJsZSIpKSxyPTNEbi5zZWxlYz0KdEFsbCgidGhlYWQiKS5kYXRhKFtlXSku
ZW50ZXIoKS5hcHBlbmQoInRoZWFkIik7ci5hcHBlbmQoInRyIikuYXBwZW5kKCJ0ZCIpPQouYXR0
cigiY29sc3BhbiIsMykuYXBwZW5kKCJzdHJvbmciKS5jbGFzc2VkKCJ4LXZhbHVlIiwhMCkuaHRt
bCh2KGUudmFsdWUpKTs9CnZhciBpPTNEbi5zZWxlY3RBbGwoInRib2R5IikuZGF0YShbZV0pLmVu
dGVyKCkuYXBwZW5kKCJ0Ym9keSIpLHM9M0RpLnNlbGVjdD0KQWxsKCJ0ciIpLmRhdGEoZnVuY3Rp
b24oZSl7cmV0dXJuIGUuc2VyaWVzfSkuZW50ZXIoKS5hcHBlbmQoInRyIikuY2xhc3NlZCgiPQpo
aWdobGlnaHQiLGZ1bmN0aW9uKGUpe3JldHVybiBlLmhpZ2hsaWdodH0pO3MuYXBwZW5kKCJ0ZCIp
LmNsYXNzZWQoImxlZ2VuZC09CmNvbG9yLWd1aWRlIiwhMCkuYXBwZW5kKCJkaXYiKS5zdHlsZSgi
YmFja2dyb3VuZC1jb2xvciIsZnVuY3Rpb24oZSl7cmV0dXJuID0KZS5jb2xvcn0pLHMuYXBwZW5k
KCJ0ZCIpLmNsYXNzZWQoImtleSIsITApLmh0bWwoZnVuY3Rpb24oZSl7cmV0dXJuIGUua2V5fSks
PQpzLmFwcGVuZCgidGQiKS5jbGFzc2VkKCJ2YWx1ZSIsITApLmh0bWwoZnVuY3Rpb24oZSx0KXty
ZXR1cm4gZChlLnZhbHVlLHQpfSk9CixzLnNlbGVjdEFsbCgidGQiKS5lYWNoKGZ1bmN0aW9uKGUp
e2lmKGUuaGlnaGxpZ2h0KXt2YXIgdD0zRGQzLnNjYWxlLmxpbmVhcj0KKCkuZG9tYWluKFswLDFd
KS5yYW5nZShbIiNmZmYiLGUuY29sb3JdKSxuPTNELjY7ZDMuc2VsZWN0KHRoaXMpLnN0eWxlKCJi
b3JkPQplci1ib3R0b20tY29sb3IiLHQobikpLnN0eWxlKCJib3JkZXItdG9wLWNvbG9yIix0KG4p
KX19KTt2YXIgbz0zRG4ubm9kZSgpLm89CnV0ZXJIVE1MO3JldHVybiBlLmZvb3RlciE9M0Q9M0R1
bmRlZmluZWQmJihvKz0zRCI8ZGl2IGNsYXNzPTNEJ2Zvb3Rlcic+IitlLj0KZm9vdGVyKyI8L2Rp
dj4iKSxvfSxnPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuc2VyaWVzJiZlLnNlcmllcy5sZW5n
dGg+MD8hPQowOiExfTtyZXR1cm4gdy5udlBvaW50ZXJFdmVudHNDbGFzcz0zRHAsdy5jb250ZW50
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3U9Cm1lbnRzLmxlbmd0aD8odD0zRGUsdyk6dH0sdy50
b29sdGlwRWxlbT0zRGZ1bmN0aW9uKCl7cmV0dXJuIGZ9LHcuY29udGVudEdlbj0KZXJhdG9yPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHR5cGVvZiBlPTNEPTNEImZ1bmN0
aW9uIiYmKG09Cj0zRGUpLHcpOm19LHcuZGF0YT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhuPTNEZSx3KTpufSx3LmdyYT0Kdml0eT0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhyPTNEZSx3KTpyfSx3LmRpc3RhbmNlPTNEZnVuY3RpPQpvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUsdyk6aX0sdy5zbmFwRGlzdGFuY2U9M0RmdW5j
dGlvbihlKXtyZXQ9CnVybiBhcmd1bWVudHMubGVuZ3RoPyhzPTNEZSx3KTpzfSx3LmNsYXNzZXM9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLj0KbGVuZ3RoPyh1PTNEZSx3KTp1fSx3LmNo
YXJ0Q29udGFpbmVyPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/PQooYT0z
RGUsdyk6YX0sdy5wb3NpdGlvbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhsLmxlZnQ9M0R0eXA9CmVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OmwubGVmdCxs
LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj0KP2UudG9wOmwudG9wLHcpOmx9LHcu
Zml4ZWRUb3A9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsPQp3
KTpvfSx3LmVuYWJsZWQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0z
RGUsdyk6Y30sdy52YWx1ZUY9Cm9ybWF0dGVyPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KHR5cGVvZiBlPTNEPTNEImZ1bmN0aW9uIiYmKD0KZD0zRGUpLHcpOmR9LHcuaGVh
ZGVyRm9ybWF0dGVyPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHR5cGVv
PQpmIGU9M0Q9M0QiZnVuY3Rpb24iJiYodj0zRGUpLHcpOnZ9LHcuaWQ9M0RmdW5jdGlvbigpe3Jl
dHVybiBofSx3fSxlLnRvb2x0aXA9Ci5zaG93PTNEZnVuY3Rpb24odCxuLHIsaSxzLG8pe3ZhciB1
PTNEZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dS5jbGFzcz0KTmFtZT0zRCJudnRvb2x0
aXAgIisobz9vOiJ4eS10b29sdGlwIik7dmFyIGE9M0RzO2lmKCFzfHxzLnRhZ05hbWUubWF0Y2go
L2d8PQpzdmcvaSkpYT0zRGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07
dS5zdHlsZS5sZWZ0PTNEMCx1LnN0eWw9CmUudG9wPTNEMCx1LnN0eWxlLm9wYWNpdHk9M0QwLHUu
aW5uZXJIVE1MPTNEbixhLmFwcGVuZENoaWxkKHUpLHMmJih0WzBdPTNEdD0KWzBdLXMuc2Nyb2xs
TGVmdCx0WzFdPTNEdFsxXS1zLnNjcm9sbFRvcCksZS50b29sdGlwLmNhbGNUb29sdGlwUG9zaXRp
b24odCxyPQosaSx1KX0sZS50b29sdGlwLmZpbmRGaXJzdE5vblNWR1BhcmVudD0zRGZ1bmN0aW9u
KGUpe3doaWxlKGUudGFnTmFtZS5tYXRjaCg9Ci9eZ3xzdmckL2kpIT0zRD0zRG51bGwpZT0zRGUu
cGFyZW50Tm9kZTtyZXR1cm4gZX0sZS50b29sdGlwLmZpbmRUb3RhbE9mZnNldD0KVG9wPTNEZnVu
Y3Rpb24oZSx0KXt2YXIgbj0zRHQ7ZG8gaXNOYU4oZS5vZmZzZXRUb3ApfHwobis9M0RlLm9mZnNl
dFRvcCk7d2hpPQpsZShlPTNEZS5vZmZzZXRQYXJlbnQpO3JldHVybiBufSxlLnRvb2x0aXAuZmlu
ZFRvdGFsT2Zmc2V0TGVmdD0zRGZ1bmN0aW9uKGU9Cix0KXt2YXIgbj0zRHQ7ZG8gaXNOYU4oZS5v
ZmZzZXRMZWZ0KXx8KG4rPTNEZS5vZmZzZXRMZWZ0KTt3aGlsZShlPTNEZS5vZmZzZT0KdFBhcmVu
dCk7cmV0dXJuIG59LGUudG9vbHRpcC5jYWxjVG9vbHRpcFBvc2l0aW9uPTNEZnVuY3Rpb24odCxu
LHIsaSl7dmFyIHM9Cj0zRHBhcnNlSW50KGkub2Zmc2V0SGVpZ2h0KSxvPTNEcGFyc2VJbnQoaS5v
ZmZzZXRXaWR0aCksdT0zRGUudXRpbHMud2luZG93Uz0KaXplKCkud2lkdGgsYT0zRGUudXRpbHMu
d2luZG93U2l6ZSgpLmhlaWdodCxmPTNEd2luZG93LnBhZ2VZT2Zmc2V0LGw9M0R3aW5kPQpvdy5w
YWdlWE9mZnNldCxjLGg7YT0zRHdpbmRvdy5pbm5lcldpZHRoPj0zRGRvY3VtZW50LmJvZHkuc2Ny
b2xsV2lkdGg/YTphLTE9CjYsdT0zRHdpbmRvdy5pbm5lckhlaWdodD49M0Rkb2N1bWVudC5ib2R5
LnNjcm9sbEhlaWdodD91OnUtMTYsbj0zRG58fCJzIixyPQo9M0RyfHwyMDt2YXIgcD0zRGZ1bmN0
aW9uKHQpe3JldHVybiBlLnRvb2x0aXAuZmluZFRvdGFsT2Zmc2V0VG9wKHQsaCl9LGQ9M0Q9CmZ1
bmN0aW9uKHQpe3JldHVybiBlLnRvb2x0aXAuZmluZFRvdGFsT2Zmc2V0TGVmdCh0LGMpfTtzd2l0
Y2gobil7Y2FzZSJlIjpjPQo9M0R0WzBdLW8tcixoPTNEdFsxXS1zLzI7dmFyIHY9M0RkKGkpLG09
M0RwKGkpO3Y8bCYmKGM9M0R0WzBdK3I+bD90WzBdK3I6bC09CnYrYyksbTxmJiYoaD0zRGYtbSto
KSxtK3M+ZithJiYoaD0zRGYrYS1tK2gtcyk7YnJlYWs7Y2FzZSJ3IjpjPTNEdFswXStyLGg9Cj0z
RHRbMV0tcy8yO3ZhciB2PTNEZChpKSxtPTNEcChpKTt2K28+dSYmKGM9M0R0WzBdLW8tciksbTxm
JiYoaD0zRGYrNSksbStzPj0KZithJiYoaD0zRGYrYS1tK2gtcyk7YnJlYWs7Y2FzZSJuIjpjPTNE
dFswXS1vLzItNSxoPTNEdFsxXStyO3ZhciB2PTNEZChpKSxtPQo9M0RwKGkpO3Y8bCYmKGM9M0Rs
KzUpLHYrbz51JiYoYz0zRGMtby8yKzUpLG0rcz5mK2EmJihoPTNEZithLW0raC1zKTticmVhazs9
CmNhc2UicyI6Yz0zRHRbMF0tby8yLGg9M0R0WzFdLXMtcjt2YXIgdj0zRGQoaSksbT0zRHAoaSk7
djxsJiYoYz0zRGwrNSksditvPj0KdSYmKGM9M0RjLW8vMis1KSxmPm0mJihoPTNEZik7YnJlYWs7
Y2FzZSJub25lIjpjPTNEdFswXSxoPTNEdFsxXS1yO3ZhciB2PTNEPQpkKGkpLG09M0RwKGkpfXJl
dHVybiBpLnN0eWxlLmxlZnQ9M0RjKyJweCIsaS5zdHlsZS50b3A9M0RoKyJweCIsaS5zdHlsZS5v
cGE9CmNpdHk9M0QxLGkuc3R5bGUucG9zaXRpb249M0QiYWJzb2x1dGUiLGl9LGUudG9vbHRpcC5j
bGVhbnVwPTNEZnVuY3Rpb24oKXt2YT0KciBlPTNEZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZSgibnZ0b29sdGlwIiksdD0zRFtdO3doaWxlKGUubGVuZ3RoKXQuPQpwdXNoKGVbMF0pLGVb
MF0uc3R5bGUudHJhbnNpdGlvbkRlbGF5PTNEIjAgIWltcG9ydGFudCIsZVswXS5zdHlsZS5vcGFj
aXR5PQo9M0QwLGVbMF0uY2xhc3NOYW1lPTNEIm52dG9vbHRpcC1wZW5kaW5nLXJlbW92YWwiO3Nl
dFRpbWVvdXQoZnVuY3Rpb24oKXt3aGk9CmxlKHQubGVuZ3RoKXt2YXIgZT0zRHQucG9wKCk7ZS5w
YXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpfX0sNTAwKX19KCksZS51dGlscz0KLndpbmRvd1NpemU9
M0RmdW5jdGlvbigpe3ZhciBlPTNEe3dpZHRoOjY0MCxoZWlnaHQ6NDgwfTtyZXR1cm4gZG9jdW1l
bnQuYm9kPQp5JiZkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoJiYoZS53aWR0aD0zRGRvY3VtZW50
LmJvZHkub2Zmc2V0V2lkdGgsZS5oZWlnaHQ9Cj0zRGRvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0
KSxkb2N1bWVudC5jb21wYXRNb2RlPTNEPTNEIkNTUzFDb21wYXQiJiZkb2N1bT0KZW50LmRvY3Vt
ZW50RWxlbWVudCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldFdpZHRoJiYoZS53aWR0
aD0zRGRvY3VtPQplbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldFdpZHRoLGUuaGVpZ2h0PTNEZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldEg9CmVpZ2h0KSx3aW5kb3cuaW5uZXJXaWR0aCYm
d2luZG93LmlubmVySGVpZ2h0JiYoZS53aWR0aD0zRHdpbmRvdy5pbm5lcldpZHRoLD0KZS5oZWln
aHQ9M0R3aW5kb3cuaW5uZXJIZWlnaHQpLGV9LGUudXRpbHMud2luZG93UmVzaXplPTNEZnVuY3Rp
b24oZSl7aWYoZT0KPTNEPTNEPTNEdW5kZWZpbmVkKXJldHVybjt2YXIgdD0zRHdpbmRvdy5vbnJl
c2l6ZTt3aW5kb3cub25yZXNpemU9M0RmdW5jdGlvPQpuKG4pe3R5cGVvZiB0PTNEPTNEImZ1bmN0
aW9uIiYmdChuKSxlKG4pfX0sZS51dGlscy5nZXRDb2xvcj0zRGZ1bmN0aW9uKHQpe3I9CmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpPTNEPTNE
PTNEIltvYmplY3QgQT0KcnJheV0iP2Z1bmN0aW9uKGUsbil7cmV0dXJuIGUuY29sb3J8fHRbbiV0
Lmxlbmd0aF19OnQ6ZS51dGlscy5kZWZhdWx0Q29sb3IoPQopfSxlLnV0aWxzLmRlZmF1bHRDb2xv
cj0zRGZ1bmN0aW9uKCl7dmFyIGU9M0RkMy5zY2FsZS5jYXRlZ29yeTIwKCkucmFuZ2UoKTs9CnJl
dHVybiBmdW5jdGlvbih0LG4pe3JldHVybiB0LmNvbG9yfHxlW24lZS5sZW5ndGhdfX0sZS51dGls
cy5jdXN0b21UaGVtZT0zRD0KZnVuY3Rpb24oZSx0LG4pe3Q9M0R0fHxmdW5jdGlvbihlKXtyZXR1
cm4gZS5rZXl9LG49M0RufHxkMy5zY2FsZS5jYXRlZ29yeTIwPQooKS5yYW5nZSgpO3ZhciByPTNE
bi5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKGkscyl7dmFyIG89M0R0KGkpO3JldHVybiByfHwocj0K
PTNEbi5sZW5ndGgpLHR5cGVvZiBlW29dIT0zRCJ1bmRlZmluZWQiP3R5cGVvZiBlW29dPTNEPTNE
ImZ1bmN0aW9uIj9lW29dKCk6PQplW29dOm5bLS1yXX19LGUudXRpbHMucGpheD0zRGZ1bmN0aW9u
KHQsbil7ZnVuY3Rpb24gcihyKXtkMy5odG1sKHIsZnVuY3Rpb249CihyKXt2YXIgaT0zRGQzLnNl
bGVjdChuKS5ub2RlKCk7aS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChkMy5zZWxlY3Qocikuc2Vs
ZT0KY3Qobikubm9kZSgpLGkpLGUudXRpbHMucGpheCh0LG4pfSl9ZDMuc2VsZWN0QWxsKHQpLm9u
KCJjbGljayIsZnVuY3Rpb24oKXtoPQppc3RvcnkucHVzaFN0YXRlKHRoaXMuaHJlZix0aGlzLnRl
eHRDb250ZW50LHRoaXMuaHJlZikscih0aGlzLmhyZWYpLGQzLmV2ZW49CnQucHJldmVudERlZmF1
bHQoKX0pLGQzLnNlbGVjdCh3aW5kb3cpLm9uKCJwb3BzdGF0ZSIsZnVuY3Rpb24oKXtkMy5ldmVu
dC5zdD0KYXRlJiZyKGQzLmV2ZW50LnN0YXRlKX0pfSxlLnV0aWxzLmNhbGNBcHByb3hUZXh0V2lk
dGg9M0RmdW5jdGlvbihlKXtpZih0eXBlPQpvZiBlLnN0eWxlPTNEPTNEImZ1bmN0aW9uIiYmdHlw
ZW9mIGUudGV4dD0zRD0zRCJmdW5jdGlvbiIpe3ZhciB0PTNEcGFyc2VJbnQ9CihlLnN0eWxlKCJm
b250LXNpemUiKS5yZXBsYWNlKCJweCIsIiIpKSxuPTNEZS50ZXh0KCkubGVuZ3RoO3JldHVybiBu
KnQqLjV9cj0KZXR1cm4gMH0sZS51dGlscy5OYU50b1plcm89M0RmdW5jdGlvbihlKXtyZXR1cm4g
dHlwZW9mIGUhPTNEIm51bWJlciJ8fGlzTmFOPQooZSl8fGU9M0Q9M0Q9M0RudWxsfHxlPTNEPTNE
PTNESW5maW5pdHk/MDplfSxlLnV0aWxzLm9wdGlvbnNGdW5jPTNEZnVuY3Rpb249CihlKXtyZXR1
cm4gZSYmZDMubWFwKGUpLmZvckVhY2goZnVuY3Rpb24oZSx0KXt0eXBlb2YgdGhpc1tlXT0zRD0z
RCJmdW5jdGlvbj0KIiYmdGhpc1tlXSh0KX0uYmluZCh0aGlzKSksdGhpc30sZS5tb2RlbHMuYXhp
cz0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gbShlKXtyPQpldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7
dmFyIGk9M0RkMy5zZWxlY3QodGhpcyksbT0zRGkuc2VsZWN0QWxsKCJnLm52LXdyYXA9Ci5udi1h
eGlzIikuZGF0YShbZV0pLGc9M0RtLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJu
dmQzIG52LXdyYXAgbj0Kdi1heGlzIikseT0zRGcuYXBwZW5kKCJnIiksYj0zRG0uc2VsZWN0KCJn
Iik7cCE9M0Q9M0RudWxsP3QudGlja3MocCk6KHQub3JpPQplbnQoKT0zRD0zRCJ0b3AifHx0Lm9y
aWVudCgpPTNEPTNEImJvdHRvbSIpJiZ0LnRpY2tzKE1hdGguYWJzKHMucmFuZ2UoKVsxXS09CnMu
cmFuZ2UoKVswXSkvMTAwKSxiLmNhbGwodCksdj0zRHZ8fHQuc2NhbGUoKTt2YXIgdz0zRHQudGlj
a0Zvcm1hdCgpO3c9M0Q9Cj0zRG51bGwmJih3PTNEdi50aWNrRm9ybWF0KCkpO3ZhciBFPTNEYi5z
ZWxlY3RBbGwoInRleHQubnYtYXhpc2xhYmVsIikuZGF0YT0KKFtvfHxudWxsXSk7RS5leGl0KCku
cmVtb3ZlKCk7c3dpdGNoKHQub3JpZW50KCkpe2Nhc2UidG9wIjpFLmVudGVyKCkuYXBwZW5kPQoo
InRleHQiKS5hdHRyKCJjbGFzcyIsIm52LWF4aXNsYWJlbCIpO3ZhciBTPTNEcy5yYW5nZSgpLmxl
bmd0aD0zRD0zRDI/cy5yYW49CmdlKClbMV06cy5yYW5nZSgpW3MucmFuZ2UoKS5sZW5ndGgtMV0r
KHMucmFuZ2UoKVsxXS1zLnJhbmdlKClbMF0pO0UuYXR0cigidD0KZXh0LWFuY2hvciIsIm1pZGRs
ZSIpLmF0dHIoInkiLDApLmF0dHIoIngiLFMvMik7aWYodSl7dmFyIHg9M0RtLnNlbGVjdEFsbCgi
PQpnLm52LWF4aXNNYXhNaW4iKS5kYXRhKHMuZG9tYWluKCkpO3guZW50ZXIoKS5hcHBlbmQoImci
KS5hdHRyKCJjbGFzcyIsIm52LWE9Cnhpc01heE1pbiIpLmFwcGVuZCgidGV4dCIpLHguZXhpdCgp
LnJlbW92ZSgpLHguYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLD0KdCl7cmV0dXJuInRyYW5z
bGF0ZSgiK3MoZSkrIiwwKSJ9KS5zZWxlY3QoInRleHQiKS5hdHRyKCJkeSIsIi0wLjVlbSIpLmF0
dHIoPQoieSIsLXQudGlja1BhZGRpbmcoKSkuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS50
ZXh0KGZ1bmN0aW9uKGUsdCl7dmFyIG49Cj0zRHcoZSk7cmV0dXJuKCIiK24pLm1hdGNoKCJOYU4i
KT8iIjpufSkseC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cj0KZXR1cm4idHJhbnNs
YXRlKCIrcy5yYW5nZSgpW3RdKyIsMCkifSl9YnJlYWs7Y2FzZSJib3R0b20iOnZhciBUPTNEMzYs
Tj0zRDMwPQosQz0zRGIuc2VsZWN0QWxsKCJnIikuc2VsZWN0KCJ0ZXh0Iik7aWYoZiUzNjApe0Mu
ZWFjaChmdW5jdGlvbihlLHQpe3ZhciBuPQo9M0R0aGlzLmdldEJCb3goKS53aWR0aDtuPk4mJihO
PTNEbil9KTt2YXIgaz0zRE1hdGguYWJzKE1hdGguc2luKGYqTWF0aC5QSS89CjE4MCkpLFQ9M0Qo
az9rKk46TikrMzA7Qy5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4icm90
YXRlKCIrZj0KKyIgMCwwKSJ9KS5zdHlsZSgidGV4dC1hbmNob3IiLGYlMzYwPjA/InN0YXJ0Ijoi
ZW5kIil9RS5lbnRlcigpLmFwcGVuZCgidGV4PQp0IikuYXR0cigiY2xhc3MiLCJudi1heGlzbGFi
ZWwiKTt2YXIgUz0zRHMucmFuZ2UoKS5sZW5ndGg9M0Q9M0QyP3MucmFuZ2UoKVs9CjFdOnMucmFu
Z2UoKVtzLnJhbmdlKCkubGVuZ3RoLTFdKyhzLnJhbmdlKClbMV0tcy5yYW5nZSgpWzBdKTtFLmF0
dHIoInRleHQtYT0KbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJ5IixUKS5hdHRyKCJ4IixTLzIpO2lm
KHUpe3ZhciB4PTNEbS5zZWxlY3RBbGwoImcubnYtPQpheGlzTWF4TWluIikuZGF0YShbcy5kb21h
aW4oKVswXSxzLmRvbWFpbigpW3MuZG9tYWluKCkubGVuZ3RoLTFdXSk7eC5lbnRlcig9CikuYXBw
ZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1heGlzTWF4TWluIikuYXBwZW5kKCJ0ZXh0IikseC5l
eGl0KCkucmVtb3ZlKD0KKSx4LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4i
dHJhbnNsYXRlKCIrKHMoZSkrKGg/cy5yYW5nZUJhbmQoPQopLzI6MCkpKyIsMCkifSkuc2VsZWN0
KCJ0ZXh0IikuYXR0cigiZHkiLCIuNzFlbSIpLmF0dHIoInkiLHQudGlja1BhZGRpbmcoKSk9Ci5h
dHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4icm90YXRlKCIrZisiIDAsMCki
fSkuc3R5bGUoInRleHQtYT0KbmNob3IiLGY/ZiUzNjA+MD8ic3RhcnQiOiJlbmQiOiJtaWRkbGUi
KS50ZXh0KGZ1bmN0aW9uKGUsdCl7dmFyIG49M0R3KGUpO3JlPQp0dXJuKCIiK24pLm1hdGNoKCJO
YU4iKT8iIjpufSkseC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW49
CnNsYXRlKCIrKHMoZSkrKGg/cy5yYW5nZUJhbmQoKS8yOjApKSsiLDApIn0pfWMmJkMuYXR0cigi
dHJhbnNmb3JtIixmdW5jdGlvbj0KKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgwLCIrKHQlMj0zRD0z
RDA/IjAiOiIxMiIpKyIpIn0pO2JyZWFrO2Nhc2UicmlnaHQiOkUuPQplbnRlcigpLmFwcGVuZCgi
dGV4dCIpLmF0dHIoImNsYXNzIiwibnYtYXhpc2xhYmVsIiksRS5zdHlsZSgidGV4dC1hbmNob3Ii
LGw9Cj8ibWlkZGxlIjoiYmVnaW4iKS5hdHRyKCJ0cmFuc2Zvcm0iLGw/InJvdGF0ZSg5MCkiOiIi
KS5hdHRyKCJ5IixsPy1NYXRoLm1heD0KKG4ucmlnaHQscikrMTI6LTEwKS5hdHRyKCJ4IixsP3Mu
cmFuZ2UoKVswXS8yOnQudGlja1BhZGRpbmcoKSk7aWYodSl7dmFyIHg9Cj0zRG0uc2VsZWN0QWxs
KCJnLm52LWF4aXNNYXhNaW4iKS5kYXRhKHMuZG9tYWluKCkpO3guZW50ZXIoKS5hcHBlbmQoImci
KS5hdD0KdHIoImNsYXNzIiwibnYtYXhpc01heE1pbiIpLmFwcGVuZCgidGV4dCIpLnN0eWxlKCJv
cGFjaXR5IiwwKSx4LmV4aXQoKS5yZW1vPQp2ZSgpLHguYXR0cigidHJhbnNmb3JtIixmdW5jdGlv
bihlLHQpe3JldHVybiJ0cmFuc2xhdGUoMCwiK3MoZSkrIikifSkuc2VsZWM9CnQoInRleHQiKS5h
dHRyKCJkeSIsIi4zMmVtIikuYXR0cigieSIsMCkuYXR0cigieCIsdC50aWNrUGFkZGluZygpKS5z
dHlsZSgidD0KZXh0LWFuY2hvciIsInN0YXJ0IikudGV4dChmdW5jdGlvbihlLHQpe3ZhciBuPTNE
dyhlKTtyZXR1cm4oIiIrbikubWF0Y2goIk5hPQpOIik/IiI6bn0pLHguYXR0cigidHJhbnNmb3Jt
IixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoMCwiK3MucmFuZ2UoKVs9CnRdKyIpIn0p
LnNlbGVjdCgidGV4dCIpLnN0eWxlKCJvcGFjaXR5IiwxKX1icmVhaztjYXNlImxlZnQiOkUuZW50
ZXIoKS5hcHBlbj0KZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnYtYXhpc2xhYmVsIiksRS5zdHls
ZSgidGV4dC1hbmNob3IiLGw/Im1pZGRsZSI6ImVuPQpkIikuYXR0cigidHJhbnNmb3JtIixsPyJy
b3RhdGUoLTkwKSI6IiIpLmF0dHIoInkiLGw/LU1hdGgubWF4KG4ubGVmdCxyKStkOi09CjEwKS5h
dHRyKCJ4IixsPy1zLnJhbmdlKClbMF0vMjotdC50aWNrUGFkZGluZygpKTtpZih1KXt2YXIgeD0z
RG0uc2VsZWN0QWxsKD0KImcubnYtYXhpc01heE1pbiIpLmRhdGEocy5kb21haW4oKSk7eC5lbnRl
cigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtPQpheGlzTWF4TWluIikuYXBwZW5kKCJ0
ZXh0Iikuc3R5bGUoIm9wYWNpdHkiLDApLHguZXhpdCgpLnJlbW92ZSgpLHguYXR0cigidHI9CmFu
c2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgwLCIrdihlKSsiKSJ9KS5zZWxl
Y3QoInRleHQiKS5hdHRyKD0KImR5IiwiLjMyZW0iKS5hdHRyKCJ5IiwwKS5hdHRyKCJ4IiwtdC50
aWNrUGFkZGluZygpKS5hdHRyKCJ0ZXh0LWFuY2hvciIsImVuPQpkIikudGV4dChmdW5jdGlvbihl
LHQpe3ZhciBuPTNEdyhlKTtyZXR1cm4oIiIrbikubWF0Y2goIk5hTiIpPyIiOm59KSx4LmF0dHI9
CigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoMCwiK3MucmFuZ2Uo
KVt0XSsiKSJ9KS5zZWxlY3QoIj0KdGV4dCIpLnN0eWxlKCJvcGFjaXR5IiwxKX19RS50ZXh0KGZ1
bmN0aW9uKGUpe3JldHVybiBlfSksdSYmKHQub3JpZW50KCk9M0Q9Cj0zRD0zRCJsZWZ0Inx8dC5v
cmllbnQoKT0zRD0zRD0zRCJyaWdodCIpJiYoYi5zZWxlY3RBbGwoImciKS5lYWNoKGZ1bmN0aW9u
KD0KZSx0KXtkMy5zZWxlY3QodGhpcykuc2VsZWN0KCJ0ZXh0IikuYXR0cigib3BhY2l0eSIsMSk7
aWYocyhlKTxzLnJhbmdlKClbMV0rPQoxMHx8cyhlKT5zLnJhbmdlKClbMF0tMTApKGU+MWUtMTB8
fGU8LTFlLTEwKSYmZDMuc2VsZWN0KHRoaXMpLmF0dHIoIm9wYWNpdHk9CiIsMCksZDMuc2VsZWN0
KHRoaXMpLnNlbGVjdCgidGV4dCIpLmF0dHIoIm9wYWNpdHkiLDApfSkscy5kb21haW4oKVswXT0z
RD0zRD0Kcy5kb21haW4oKVsxXSYmcy5kb21haW4oKVswXT0zRD0zRDAmJm0uc2VsZWN0QWxsKCJn
Lm52LWF4aXNNYXhNaW4iKS5zdHlsZSgiPQpvcGFjaXR5IixmdW5jdGlvbihlLHQpe3JldHVybiB0
PzA6MX0pKTtpZih1JiYodC5vcmllbnQoKT0zRD0zRD0zRCJ0b3AifHx0Lm89CnJpZW50KCk9M0Q9
M0Q9M0QiYm90dG9tIikpe3ZhciBMPTNEW107bS5zZWxlY3RBbGwoImcubnYtYXhpc01heE1pbiIp
LmVhY2goZj0KdW5jdGlvbihlLHQpe3RyeXt0P0wucHVzaChzKGUpLXRoaXMuZ2V0QkJveCgpLndp
ZHRoLTQpOkwucHVzaChzKGUpK3RoaXMuZ2V0PQpCQm94KCkud2lkdGgrNCl9Y2F0Y2gobil7dD9M
LnB1c2gocyhlKS00KTpMLnB1c2gocyhlKSs0KX19KSxiLnNlbGVjdEFsbCgiZyI9CikuZWFjaChm
dW5jdGlvbihlLHQpe2lmKHMoZSk8TFswXXx8cyhlKT5MWzFdKWU+MWUtMTB8fGU8LTFlLTEwP2Qz
LnNlbGVjdCh0aD0KaXMpLnJlbW92ZSgpOmQzLnNlbGVjdCh0aGlzKS5zZWxlY3QoInRleHQiKS5y
ZW1vdmUoKX0pfWEmJmIuc2VsZWN0QWxsKCIudGljPQprIikuZmlsdGVyKGZ1bmN0aW9uKGUpe3Jl
dHVybiFwYXJzZUZsb2F0KE1hdGgucm91bmQoZS5fX2RhdGFfXyoxZTUpLzFlNikmJmU9Ci5fX2Rh
dGFfXyE9M0Q9M0R1bmRlZmluZWR9KS5jbGFzc2VkKCJ6ZXJvIiwhMCksdj0zRHMuY29weSgpfSks
bX12YXIgdD0zRGQzLj0Kc3ZnLmF4aXMoKSxuPTNEe3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVm
dDowfSxyPTNENzUsaT0zRDYwLHM9M0RkMy5zY2FsZS5sPQppbmVhcigpLG89M0RudWxsLHU9M0Qh
MCxhPTNEITAsZj0zRDAsbD0zRCEwLGM9M0QhMSxoPTNEITEscD0zRG51bGwsZD0zRDEyO3Q9Ci5z
Y2FsZShzKS5vcmllbnQoImJvdHRvbSIpLnRpY2tGb3JtYXQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9
KTt2YXIgdjtyZXR1cm4gbT0KLmF4aXM9M0R0LGQzLnJlYmluZChtLHQsIm9yaWVudCIsInRpY2tW
YWx1ZXMiLCJ0aWNrU3ViZGl2aWRlIiwidGlja1NpemUiLCJ0PQppY2tQYWRkaW5nIiwidGlja0Zv
cm1hdCIpLGQzLnJlYmluZChtLHMsImRvbWFpbiIsInJhbmdlIiwicmFuZ2VCYW5kIiwicmFuZ2U9
CkJhbmRzIiksbS5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKG0pLG0ubWFyZ2lu
PTNEZnVuY3Rpb24oZSl7cmV0dT0Kcm4gYXJndW1lbnRzLmxlbmd0aD8obi50b3A9M0R0eXBlb2Yg
ZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6bi50b3Asbi5yaWdoPQp0PTNEdHlwZW9mIGUucmln
aHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDpuLnJpZ2h0LG4uYm90dG9tPTNEdHlwZW9mIGUuYm90
dG89Cm0hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206bi5ib3R0b20sbi5sZWZ0PTNEdHlwZW9mIGUu
bGVmdCE9M0QidW5kZWZpbmVkIj9lLj0KbGVmdDpuLmxlZnQsbSk6bn0sbS53aWR0aD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZSxtKTpyPQp9LG0udGlja3M9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsbSk6cH0sbS5oZWlnaHQ9
M0RmdW49CmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPTNEZSxtKTppfSxtLmF4
aXNMYWJlbD0zRGZ1bmN0aW9uKGUpe3JldD0KdXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RlLG0p
Om99LG0uc2hvd01heE1pbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVuPQp0cy5sZW5ndGg/
KHU9M0RlLG0pOnV9LG0uaGlnaGxpZ2h0WmVybz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3Q9Cmg/KGE9M0RlLG0pOmF9LG0uc2NhbGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8ocz0zRGUsdC5zY2FsZT0KKHMpLGg9M0R0eXBlb2Ygcy5yYW5nZUJhbmRz
PTNEPTNEImZ1bmN0aW9uIixkMy5yZWJpbmQobSxzLCJkb21haW4iLCJyYW5nZSIsPQoicmFuZ2VC
YW5kIiwicmFuZ2VCYW5kcyIpLG0pOnN9LG0ucm90YXRlWUxhYmVsPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW49CnRzLmxlbmd0aD8obD0zRGUsbSk6bH0sbS5yb3RhdGVMYWJlbHM9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD0KPyhmPTNEZSxtKTpmfSxtLnN0YWdnZXJM
YWJlbHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUsPQptKTpj
fSxtLmF4aXNMYWJlbERpc3RhbmNlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGQ9M0RlLG0pOmQ9Cn0sbX0sZS5tb2RlbHMuaGlzdG9yaWNhbEJhcj0zRGZ1bmN0aW9uKCl7
ZnVuY3Rpb24gdyhFKXtyZXR1cm4gRS5lYWNoKGZ1bmN0aT0Kb24odyl7dmFyIEU9M0RuLXQubGVm
dC10LnJpZ2h0LFM9M0RyLXQudG9wLXQuYm90dG9tLFQ9M0RkMy5zZWxlY3QodGhpcyk7cy5kPQpv
bWFpbihkfHxkMy5leHRlbnQod1swXS52YWx1ZXMubWFwKHUpLmNvbmNhdChmKSkpLGM/cy5yYW5n
ZShtfHxbRSouNS93WzBdLnY9CmFsdWVzLmxlbmd0aCxFKih3WzBdLnZhbHVlcy5sZW5ndGgtLjUp
L3dbMF0udmFsdWVzLmxlbmd0aF0pOnMucmFuZ2UobXx8WzAsRT0KXSksby5kb21haW4odnx8ZDMu
ZXh0ZW50KHdbMF0udmFsdWVzLm1hcChhKS5jb25jYXQobCkpKS5yYW5nZShnfHxbUywwXSkscy5k
PQpvbWFpbigpWzBdPTNEPTNEPTNEcy5kb21haW4oKVsxXSYmKHMuZG9tYWluKClbMF0/cy5kb21h
aW4oW3MuZG9tYWluKClbMF0tcy49CmRvbWFpbigpWzBdKi4wMSxzLmRvbWFpbigpWzFdK3MuZG9t
YWluKClbMV0qLjAxXSk6cy5kb21haW4oWy0xLDFdKSksby5kb21haT0KbigpWzBdPTNEPTNEPTNE
by5kb21haW4oKVsxXSYmKG8uZG9tYWluKClbMF0/by5kb21haW4oW28uZG9tYWluKClbMF0rby5k
b21hPQppbigpWzBdKi4wMSxvLmRvbWFpbigpWzFdLW8uZG9tYWluKClbMV0qLjAxXSk6by5kb21h
aW4oWy0xLDFdKSk7dmFyIE49M0RULnM9CmVsZWN0QWxsKCJnLm52LXdyYXAubnYtaGlzdG9yaWNh
bEJhci0iK2kpLmRhdGEoW3dbMF0udmFsdWVzXSksQz0zRE4uZW50ZXIoKT0KLmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LWhpc3RvcmljYWxCYXItIitpKSxrPTNEQy5h
cHBlbmQoPQoiZGVmcyIpLEw9M0RDLmFwcGVuZCgiZyIpLEE9M0ROLnNlbGVjdCgiZyIpO0wuYXBw
ZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi09CmJhcnMiKSxOLmF0dHIoInRyYW5zZm9ybSIsInRy
YW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50b3ArIikiKSxULm9uKCJjbGljayIsZj0KdW5jdGlvbihl
LHQpe3kuY2hhcnRDbGljayh7ZGF0YTplLGluZGV4OnQscG9zOmQzLmV2ZW50LGlkOml9KX0pLGsu
YXBwZW5kKCJjPQpsaXBQYXRoIikuYXR0cigiaWQiLCJudi1jaGFydC1jbGlwLXBhdGgtIitpKS5h
cHBlbmQoInJlY3QiKSxOLnNlbGVjdCgiI252LWM9CmhhcnQtY2xpcC1wYXRoLSIraSsiIHJlY3Qi
KS5hdHRyKCJ3aWR0aCIsRSkuYXR0cigiaGVpZ2h0IixTKSxBLmF0dHIoImNsaXAtcD0KYXRoIixo
PyJ1cmwoI252LWNoYXJ0LWNsaXAtcGF0aC0iK2krIikiOiIiKTt2YXIgTz0zRE4uc2VsZWN0KCIu
bnYtYmFycyIpLnNlPQpsZWN0QWxsKCIubnYtYmFyIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4g
ZX0sZnVuY3Rpb24oZSx0KXtyZXR1cm4gdShlLHQpfSk9CjtPLmV4aXQoKS5yZW1vdmUoKTt2YXIg
TT0zRE8uZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IixmdT0KbmN0
aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKG8oTWF0aC5tYXgoMCxhKHQsbikpKSl9
KS5hdHRyKCJoZWlnaHQiPQosZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8o
TWF0aC5hYnMobyhhKHQsbikpLW8oMCkpKX0pLmF0dHIoInQ9CnJhbnNmb3JtIixmdW5jdGlvbihl
LHQpe3JldHVybiJ0cmFuc2xhdGUoIisocyh1KGUsdCkpLUUvd1swXS52YWx1ZXMubGVuZ3RoKj0K
LjQ1KSsiLDApIn0pLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKGUsdCl7aWYoIWIpcmV0dXJuO2Qz
LnNlbGVjdCh0aGlzKS5jbGFzPQpzZWQoImhvdmVyIiwhMCkseS5lbGVtZW50TW91c2VvdmVyKHtw
b2ludDplLHNlcmllczp3WzBdLHBvczpbcyh1KGUsdCkpLG8oYSg9CmUsdCkpXSxwb2ludEluZGV4
OnQsc2VyaWVzSW5kZXg6MCxlOmQzLmV2ZW50fSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKGUs
dD0KKXtpZighYilyZXR1cm47ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMSkseS5l
bGVtZW50TW91c2VvdXQoe3BvaW50PQo6ZSxzZXJpZXM6d1swXSxwb2ludEluZGV4OnQsc2VyaWVz
SW5kZXg6MCxlOmQzLmV2ZW50fSl9KS5vbigiY2xpY2siLGZ1bmN0aW89Cm4oZSx0KXtpZighYily
ZXR1cm47eS5lbGVtZW50Q2xpY2soe3ZhbHVlOmEoZSx0KSxkYXRhOmUsaW5kZXg6dCxwb3M6W3Mo
dShlLD0KdCkpLG8oYShlLHQpKV0sZTpkMy5ldmVudCxpZDppfSksZDMuZXZlbnQuc3RvcFByb3Bh
Z2F0aW9uKCl9KS5vbigiZGJsY2xpY2siPQosZnVuY3Rpb24oZSx0KXtpZighYilyZXR1cm47eS5l
bGVtZW50RGJsQ2xpY2soe3ZhbHVlOmEoZSx0KSxkYXRhOmUsaW5kZXg6dCw9CnBvczpbcyh1KGUs
dCkpLG8oYShlLHQpKV0sZTpkMy5ldmVudCxpZDppfSksZDMuZXZlbnQuc3RvcFByb3BhZ2F0aW9u
KCl9KTtPLj0KYXR0cigiZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChlLHQpfSkuYXR0cigi
Y2xhc3MiLGZ1bmN0aW9uKGUsdCxuKXtyZXR1PQpybihhKGUsdCk8MD8ibnYtYmFyIG5lZ2F0aXZl
IjoibnYtYmFyIHBvc2l0aXZlIikrIiBudi1iYXItIituKyItIit0fSkuYXR0cig9CiJ0cmFuc2Zv
cm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiKyhzKHUoZSx0KSktRS93WzBdLnZh
bHVlcy5sZW5ndD0KaCouNDUpKyIsMCkifSkuYXR0cigid2lkdGgiLEUvd1swXS52YWx1ZXMubGVu
Z3RoKi45KSxPLmF0dHIoInkiLGZ1bmN0aW9uKHQsPQpuKXt2YXIgcj0zRGEodCxuKTwwP28oMCk6
bygwKS1vKGEodCxuKSk8MT9vKDApLTE6byhhKHQsbikpO3JldHVybiBlLnV0aWxzLk49CmFOdG9a
ZXJvKHIpfSkuYXR0cigiaGVpZ2h0IixmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRv
WmVybyhNYXRoLm1heD0KKE1hdGguYWJzKG8oYSh0LG4pKS1vKDApKSwxKSl9KX0pLHd9dmFyIHQ9
M0R7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9PQosbj0zRDk2MCxyPTNENTAwLGk9M0RN
YXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMWU0KSxzPTNEZDMuc2NhbGUubGluZWFyKCksbz0KPTNE
ZDMuc2NhbGUubGluZWFyKCksdT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9LGE9M0RmdW5jdGlv
bihlKXtyZXR1cm4gZS55PQp9LGY9M0RbXSxsPTNEWzBdLGM9M0QhMSxoPTNEITAscD0zRGUudXRp
bHMuZGVmYXVsdENvbG9yKCksZCx2LG0sZyx5PTNEZDMuZGk9CnNwYXRjaCgiY2hhcnRDbGljayIs
ImVsZW1lbnRDbGljayIsImVsZW1lbnREYmxDbGljayIsImVsZW1lbnRNb3VzZW92ZXIiLCJlbD0K
ZW1lbnRNb3VzZW91dCIpLGI9M0QhMDtyZXR1cm4gdy5oaWdobGlnaHRQb2ludD0zRGZ1bmN0aW9u
KGUsdCl7ZDMuc2VsZWN0KCIuPQpudi1oaXN0b3JpY2FsQmFyLSIraSkuc2VsZWN0KCIubnYtYmFy
cyAubnYtYmFyLTAtIitlKS5jbGFzc2VkKCJob3ZlciIsdCl9LHc9Ci5jbGVhckhpZ2hsaWdodHM9
M0RmdW5jdGlvbigpe2QzLnNlbGVjdCgiLm52LWhpc3RvcmljYWxCYXItIitpKS5zZWxlY3QoIi5u
dj0KLWJhcnMgLm52LWJhci5ob3ZlciIpLmNsYXNzZWQoImhvdmVyIiwhMSl9LHcuZGlzcGF0Y2g9
M0R5LHcub3B0aW9ucz0zRGUudXRpPQpscy5vcHRpb25zRnVuYy5iaW5kKHcpLHcueD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZSx3KTo9CnV9LHcueT0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZSx3KTphfSx3Lm1hcmdpbj0zRGZ1
bmN0aT0Kb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPTNEdHlwZW9mIGUudG9w
IT0zRCJ1bmRlZmluZWQiP2UudG9wOnQuPQp0b3AsdC5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0z
RCJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT0zRHR5cGU9Cm9mIGUuYm90dG9t
IT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD0zRHR5cGVvZiBlLmxlZnQh
PTNEInVuZD0KZWZpbmVkIj9lLmxlZnQ6dC5sZWZ0LHcpOnR9LHcud2lkdGg9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oPQpuPTNEZSx3KTpufSx3LmhlaWdodD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZSx3KTpyfSx3Lng9ClNjYWxlPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLHcpOnN9LHcueVNjYWxl
PTNEZnVuY3Rpbz0KbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsdyk6b30sdy54
RG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyPQpndW1lbnRzLmxlbmd0aD8oZD0zRGUsdyk6
ZH0sdy55RG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9Cj8odj0z
RGUsdyk6dn0sdy54UmFuZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
bT0zRGUsdyk6bX0sdz0KLnlSYW5nZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhnPTNEZSx3KTpnfSx3LmZvcmNlWD0zRGZ1bmN0PQppb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGY9M0RlLHcpOmZ9LHcuZm9yY2VZPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGE9CnJn
dW1lbnRzLmxlbmd0aD8obD0zRGUsdyk6bH0sdy5wYWREYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndD0KaD8oYz0zRGUsdyk6Y30sdy5jbGlwRWRnZT0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSx3KTpoPQp9LHcuY29sb3I9M0RmdW5jdGlv
bih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUudXRpbHMuZ2V0Q29sb3IodCksdyk9
CjpwfSx3LmlkPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9M0RlLHcp
Oml9LHcuaW50ZXJhY3RpdmU9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhiPTNEITEsdyk6Yn0sd30sZS5tb2RlbHMuYnVsbGV0PTNEZj0KdW5jdGlvbigpe2Z1bmN0aW9u
IG0oZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlLG4pe3ZhciBwPTNEYy10LmxlZnQtdC5yaWdo
PQp0LG09M0RoLXQudG9wLXQuYm90dG9tLGc9M0RkMy5zZWxlY3QodGhpcykseT0zRGkuY2FsbCh0
aGlzLGUsbikuc2xpY2UoKS5zb3I9CnQoZDMuZGVzY2VuZGluZyksYj0zRHMuY2FsbCh0aGlzLGUs
bikuc2xpY2UoKS5zb3J0KGQzLmRlc2NlbmRpbmcpLHc9M0RvLmNhbD0KbCh0aGlzLGUsbikuc2xp
Y2UoKS5zb3J0KGQzLmRlc2NlbmRpbmcpLEU9M0R1LmNhbGwodGhpcyxlLG4pLnNsaWNlKCksUz0z
RGEuPQpjYWxsKHRoaXMsZSxuKS5zbGljZSgpLHg9M0RmLmNhbGwodGhpcyxlLG4pLnNsaWNlKCks
VD0zRGQzLnNjYWxlLmxpbmVhcigpLmQ9Cm9tYWluKGQzLmV4dGVudChkMy5tZXJnZShbbCx5XSkp
KS5yYW5nZShyP1twLDBdOlswLHBdKSxOPTNEdGhpcy5fX2NoYXJ0X198fD0KZDMuc2NhbGUubGlu
ZWFyKCkuZG9tYWluKFswLEluZmluaXR5XSkucmFuZ2UoVC5yYW5nZSgpKTt0aGlzLl9fY2hhcnRf
Xz0zRFQ7PQp2YXIgQz0zRGQzLm1pbih5KSxrPTNEZDMubWF4KHkpLEw9M0R5WzFdLEE9M0RnLnNl
bGVjdEFsbCgiZy5udi13cmFwLm52LWJ1bGw9CmV0IikuZGF0YShbZV0pLE89M0RBLmVudGVyKCku
YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtYnVsbD0KZXQiKSxNPTNE
Ty5hcHBlbmQoImciKSxfPTNEQS5zZWxlY3QoImciKTtNLmFwcGVuZCgicmVjdCIpLmF0dHIoImNs
YXNzIiwibnYtPQpyYW5nZSBudi1yYW5nZU1heCIpLE0uYXBwZW5kKCJyZWN0IikuYXR0cigiY2xh
c3MiLCJudi1yYW5nZSBudi1yYW5nZUF2ZyIpLE09Ci5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFz
cyIsIm52LXJhbmdlIG52LXJhbmdlTWluIiksTS5hcHBlbmQoInJlY3QiKS5hdHRyKD0KImNsYXNz
IiwibnYtbWVhc3VyZSIpLE0uYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJudi1tYXJrZXJU
cmlhbmdsZSIpLEEuPQphdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0LmxlZnQrIiwiK3Qu
dG9wKyIpIik7dmFyIEQ9M0RmdW5jdGlvbihlKXtyZXQ9CnVybiBNYXRoLmFicyhOKGUpLU4oMCkp
fSxQPTNEZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguYWJzKFQoZSktVCgwKSl9LEg9M0RmdT0KbmN0
aW9uKGUpe3JldHVybiBlPDA/TihlKTpOKDApfSxCPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGU8MD9U
KGUpOlQoMCl9O18uc2VsPQplY3QoInJlY3QubnYtcmFuZ2VNYXgiKS5hdHRyKCJoZWlnaHQiLG0p
LmF0dHIoIndpZHRoIixQKGs+MD9rOkMpKS5hdHRyKCJ4Iiw9CkIoaz4wP2s6QykpLmRhdHVtKGs+
MD9rOkMpLF8uc2VsZWN0KCJyZWN0Lm52LXJhbmdlQXZnIikuYXR0cigiaGVpZ2h0IixtKS5hdD0K
dHIoIndpZHRoIixQKEwpKS5hdHRyKCJ4IixCKEwpKS5kYXR1bShMKSxfLnNlbGVjdCgicmVjdC5u
di1yYW5nZU1pbiIpLmF0dHIoPQoiaGVpZ2h0IixtKS5hdHRyKCJ3aWR0aCIsUChrKSkuYXR0cigi
eCIsQihrKSkuYXR0cigid2lkdGgiLFAoaz4wP0M6aykpLmF0dHI9CigieCIsQihrPjA/QzprKSku
ZGF0dW0oaz4wP0M6ayksXy5zZWxlY3QoInJlY3QubnYtbWVhc3VyZSIpLnN0eWxlKCJmaWxsIixk
KT0KLmF0dHIoImhlaWdodCIsbS8zKS5hdHRyKCJ5IixtLzMpLmF0dHIoIndpZHRoIix3PDA/VCgw
KS1UKHdbMF0pOlQod1swXSktVCgwPQopKS5hdHRyKCJ4IixCKHcpKS5vbigibW91c2VvdmVyIixm
dW5jdGlvbigpe3YuZWxlbWVudE1vdXNlb3Zlcih7dmFsdWU6d1swXSw9CmxhYmVsOnhbMF18fCJD
dXJyZW50Iixwb3M6W1Qod1swXSksbS8yXX0pfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbigpe3Yu
ZWxlbT0KZW50TW91c2VvdXQoe3ZhbHVlOndbMF0sbGFiZWw6eFswXXx8IkN1cnJlbnQifSl9KTt2
YXIgaj0zRG0vNjtiWzBdP18uc2VsZWN0PQpBbGwoInBhdGgubnYtbWFya2VyVHJpYW5nbGUiKS5h
dHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUpe3JldHVybiJ0cmFuc2xhdGU9CigiK1QoYlswXSkr
IiwiK20vMisiKSJ9KS5hdHRyKCJkIiwiTTAsIitqKyJMIitqKyIsIisgLWorIiAiKyAtaisiLCIr
IC1qKyJaIj0KKS5vbigibW91c2VvdmVyIixmdW5jdGlvbigpe3YuZWxlbWVudE1vdXNlb3Zlcih7
dmFsdWU6YlswXSxsYWJlbDpTWzBdfHwiUHJlPQp2aW91cyIscG9zOltUKGJbMF0pLG0vMl19KX0p
Lm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oKXt2LmVsZW1lbnRNb3VzZW91dCh7dmE9Cmx1ZTpiWzBd
LGxhYmVsOlNbMF18fCJQcmV2aW91cyJ9KX0pOl8uc2VsZWN0QWxsKCJwYXRoLm52LW1hcmtlclRy
aWFuZ2xlIikucj0KZW1vdmUoKSxBLnNlbGVjdEFsbCgiLm52LXJhbmdlIikub24oIm1vdXNlb3Zl
ciIsZnVuY3Rpb24oZSx0KXt2YXIgbj0zREVbdF18PQp8KHQ/dD0zRD0zRDE/Ik1lYW4iOiJNaW5p
bXVtIjoiTWF4aW11bSIpO3YuZWxlbWVudE1vdXNlb3Zlcih7dmFsdWU6ZSxsYWJlbDo9Cm4scG9z
OltUKGUpLG0vMl19KX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oZSx0KXt2YXIgbj0zREVbdF18
fCh0P3Q9M0Q9M0QxPz0KIk1lYW4iOiJNaW5pbXVtIjoiTWF4aW11bSIpO3YuZWxlbWVudE1vdXNl
b3V0KHt2YWx1ZTplLGxhYmVsOm59KX0pfSksbX12YXIgPQp0PTNEe3RvcDowLHJpZ2h0OjAsYm90
dG9tOjAsbGVmdDowfSxuPTNEImxlZnQiLHI9M0QhMSxpPTNEZnVuY3Rpb24oZSl7cmV0dXI9Cm4g
ZS5yYW5nZXN9LHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5tYXJrZXJzfSxvPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGUubWVhcz0KdXJlc30sdT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnJhbmdlTGFi
ZWxzP2UucmFuZ2VMYWJlbHM6W119LGE9M0RmdW5jdGlvbihlPQope3JldHVybiBlLm1hcmtlckxh
YmVscz9lLm1hcmtlckxhYmVsczpbXX0sZj0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLm1lYXN1cmU9
CkxhYmVscz9lLm1lYXN1cmVMYWJlbHM6W119LGw9M0RbMF0sYz0zRDM4MCxoPTNEMzAscD0zRG51
bGwsZD0zRGUudXRpbHMuZ2V0Qz0Kb2xvcihbIiMxZjc3YjQiXSksdj0zRGQzLmRpc3BhdGNoKCJl
bGVtZW50TW91c2VvdmVyIiwiZWxlbWVudE1vdXNlb3V0Iik7cmV0PQp1cm4gbS5kaXNwYXRjaD0z
RHYsbS5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKG0pLG0ub3JpZW50PTNEZnVu
Y3Q9CmlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGUscj0zRG49M0Q9M0Qicmln
aHQifHxuPTNEPTNEImJvdHRvbSIsbT0KKTpufSxtLnJhbmdlcz0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhpPTNEZSxtKTppfSxtLm1hcmtlcnM9Cj0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPTNEZSxtKTpzfSxtLm1lYXN1cmVzPTNEZnVuY3Rp
b24oZT0KKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsbSk6b30sbS5mb3JjZVg9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lPQpudHMubGVuZ3RoPyhsPTNEZSxtKTpsfSxtLndpZHRo
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0Q9CmUsbSk6Y30sbS5o
ZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsbSk6aH0s
bS5tYXJnaT0Kbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD0z
RHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkPQoiP2UudG9wOnQudG9wLHQucmlnaHQ9M0R0eXBl
b2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OnQucmlnaHQsdC5ib3Q9CnRvbT0zRHR5
cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHRvbSx0LmxlZnQ9M0R0
eXBlb2YgZS5sZT0KZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxtKTp0fSxtLnRpY2tG
b3JtYXQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJnPQp1bWVudHMubGVuZ3RoPyhwPTNEZSxtKTpw
fSxtLmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9Cj0zRGUu
dXRpbHMuZ2V0Q29sb3IodCksbSk6ZH0sbX0sZS5tb2RlbHMuYnVsbGV0Q2hhcnQ9M0RmdW5jdGlv
bigpe2Z1bmN0aW9uID0KbShlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKG4saCl7dmFyIGc9M0Rk
My5zZWxlY3QodGhpcykseT0zRChhfHxwYXJzZUludChnPQouc3R5bGUoIndpZHRoIikpfHw5NjAp
LWkubGVmdC1pLnJpZ2h0LGI9M0RmLWkudG9wLWkuYm90dG9tLHc9M0R0aGlzO20udXBkYXQ9CmU9
M0RmdW5jdGlvbigpe20oZSl9LG0uY29udGFpbmVyPTNEdGhpcztpZighbnx8IXMuY2FsbCh0aGlz
LG4saCkpe3ZhciBFPTNEZz0KLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW3BdKTtyZXR1
cm4gRS5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsPQphc3MiLCJudmQzIG52LW5vRGF0
YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxFLmE9
CnR0cigieCIsaS5sZWZ0K3kvMikuYXR0cigieSIsMTgraS50b3ArYi8yKS50ZXh0KGZ1bmN0aW9u
KGUpe3JldHVybiBlfSksbX1nLj0Kc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtb3ZlKCk7dmFy
IFM9M0RzLmNhbGwodGhpcyxuLGgpLnNsaWNlKCkuc29ydChkMy5kPQplc2NlbmRpbmcpLHg9M0Rv
LmNhbGwodGhpcyxuLGgpLnNsaWNlKCkuc29ydChkMy5kZXNjZW5kaW5nKSxUPTNEdS5jYWxsKHRo
aXM9CixuLGgpLnNsaWNlKCkuc29ydChkMy5kZXNjZW5kaW5nKSxOPTNEZy5zZWxlY3RBbGwoImcu
bnYtd3JhcC5udi1idWxsZXRDaGFydD0KIikuZGF0YShbbl0pLEM9M0ROLmVudGVyKCkuYXBwZW5k
KCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtYnVsbGV0PQpDaGFydCIpLGs9M0RD
LmFwcGVuZCgiZyIpLEw9M0ROLnNlbGVjdCgiZyIpO2suYXBwZW5kKCJnIikuYXR0cigiY2xhc3Mi
LCJudi09CmJ1bGxldFdyYXAiKSxrLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtdGl0bGVz
IiksTi5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cj0KYW5zbGF0ZSgiK2kubGVmdCsiLCIraS50b3ArIiki
KTt2YXIgQT0zRGQzLnNjYWxlLmxpbmVhcigpLmRvbWFpbihbMCxNYXRoLm1hPQp4KFNbMF0seFsw
XSxUWzBdKV0pLnJhbmdlKHI/W3ksMF06WzAseV0pLE89M0R0aGlzLl9fY2hhcnRfX3x8ZDMuc2Nh
bGUubGluZWE9CnIoKS5kb21haW4oWzAsSW5maW5pdHldKS5yYW5nZShBLnJhbmdlKCkpO3RoaXMu
X19jaGFydF9fPTNEQTt2YXIgTT0zRGZ1bmN0aT0Kb24oZSl7cmV0dXJuIE1hdGguYWJzKE8oZSkt
TygwKSl9LF89M0RmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5hYnMoQShlKS1BKDApPQopfSxEPTNE
ay5zZWxlY3QoIi5udi10aXRsZXMiKS5hcHBlbmQoImciKS5hdHRyKCJ0ZXh0LWFuY2hvciIsImVu
ZCIpLmF0dHIoInQ9CnJhbnNmb3JtIiwidHJhbnNsYXRlKC02LCIrKGYtaS50b3AtaS5ib3R0b20p
LzIrIikiKTtELmFwcGVuZCgidGV4dCIpLmF0dHIoIj0KY2xhc3MiLCJudi10aXRsZSIpLnRleHQo
ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGl0bGV9KSxELmFwcGVuZCgidGV4dCIpLmF0dHIoPQoiY2xh
c3MiLCJudi1zdWJ0aXRsZSIpLmF0dHIoImR5IiwiMWVtIikudGV4dChmdW5jdGlvbihlKXtyZXR1
cm4gZS5zdWJ0aXRsZX09CiksdC53aWR0aCh5KS5oZWlnaHQoYik7dmFyIFA9M0RMLnNlbGVjdCgi
Lm52LWJ1bGxldFdyYXAiKTtkMy50cmFuc2l0aW9uKFApLj0KY2FsbCh0KTt2YXIgSD0zRGx8fEEu
dGlja0Zvcm1hdCh5LzEwMCksQj0zREwuc2VsZWN0QWxsKCJnLm52LXRpY2siKS5kYXRhKEEuPQp0
aWNrcyh5LzUwKSxmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50ZXh0Q29udGVudHx8SChlKX0pLGo9
M0RCLmVudGVyKCkuYXBwZW49CmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXRpY2siKS5hdHRyKCJ0
cmFuc2Zvcm0iLGZ1bmN0aW9uKGUpe3JldHVybiJ0cmFuc2xhdD0KZSgiK08oZSkrIiwwKSJ9KS5z
dHlsZSgib3BhY2l0eSIsMWUtNik7ai5hcHBlbmQoImxpbmUiKS5hdHRyKCJ5MSIsYikuYXR0cigi
PQp5MiIsYio3LzYpLGouYXBwZW5kKCJ0ZXh0IikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUi
KS5hdHRyKCJkeSIsIjFlbSIpLmE9CnR0cigieSIsYio3LzYpLnRleHQoSCk7dmFyIEY9M0RkMy50
cmFuc2l0aW9uKEIpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZT0KKXtyZXR1cm4idHJhbnNs
YXRlKCIrQShlKSsiLDApIn0pLnN0eWxlKCJvcGFjaXR5IiwxKTtGLnNlbGVjdCgibGluZSIpLmF0
dHIoPQoieTEiLGIpLmF0dHIoInkyIixiKjcvNiksRi5zZWxlY3QoInRleHQiKS5hdHRyKCJ5Iixi
KjcvNiksZDMudHJhbnNpdGlvbihCLmU9CnhpdCgpKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9u
KGUpe3JldHVybiJ0cmFuc2xhdGUoIitBKGUpKyIsMCkifSkuc3R5bGUoIj0Kb3BhY2l0eSIsMWUt
NikucmVtb3ZlKCksZC5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe2Uua2V5PTNEbi50aXRs
ZSxjJiZ2PQooZSx3LnBhcmVudE5vZGUpfSl9KSxkMy50aW1lci5mbHVzaCgpLG19dmFyIHQ9M0Rl
Lm1vZGVscy5idWxsZXQoKSxuPTNEImxlZnQ9CiIscj0zRCExLGk9M0R7dG9wOjUscmlnaHQ6NDAs
Ym90dG9tOjIwLGxlZnQ6MTIwfSxzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUucj0KYW5nZXN9LG89
M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5tYXJrZXJzfSx1PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUu
bWVhc3VyZXN9PQosYT0zRG51bGwsZj0zRDU1LGw9M0RudWxsLGM9M0QhMCxoPTNEZnVuY3Rpb24o
ZSx0LG4scixpKXtyZXR1cm4iPGgzPiIrdCsiPC89CmgzPiIrIjxwPiIrbisiPC9wPiJ9LHA9M0Qi
Tm8gRGF0YSBBdmFpbGFibGUuIixkPTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93Ij0KLCJ0b29s
dGlwSGlkZSIpLHY9M0RmdW5jdGlvbih0LG4pe3ZhciByPTNEdC5wb3NbMF0rKG4ub2Zmc2V0TGVm
dHx8MCkraS5sZWZ0PQoscz0zRHQucG9zWzFdKyhuLm9mZnNldFRvcHx8MCkraS50b3Asbz0zRGgo
dC5rZXksdC5sYWJlbCx0LnZhbHVlLHQsbSk7ZS50b289Cmx0aXAuc2hvdyhbcixzXSxvLHQudmFs
dWU8MD8iZSI6InciLG51bGwsbil9O3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TT0Kb3Vz
ZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZC50b29sdGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2gu
b24oImVsZW1lbnRNb3VzPQplb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2QudG9vbHRpcEhpZGUo
ZSl9KSxkLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXs9CmMmJmUudG9vbHRpcC5jbGVhbnVw
KCl9KSxtLmRpc3BhdGNoPTNEZCxtLmJ1bGxldD0zRHQsZDMucmViaW5kKG0sdCwiY29sb3IiKT0K
LG0ub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChtKSxtLm9yaWVudD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1PQptZW50cy5sZW5ndGg/KG49M0RlLHI9M0RuPTNEPTNEInJpZ2h0
Inx8bj0zRD0zRCJib3R0b20iLG0pOm59LG0ucmFuZ2VzPTNEZnU9Cm5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8ocz0zRGUsbSk6c30sbS5tYXJrZXJzPTNEZnVuY3Rpb24oZSl7cmV0
dT0Kcm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsbSk6b30sbS5tZWFzdXJlcz0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMuPQpsZW5ndGg/KHU9M0RlLG0pOnV9LG0ud2lkdGg9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0zRGUsbSk9CjphfSxtLmhlaWdodD0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSxtKTpmfSxtLm1hcmdp
bj0zRD0KZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkudG9wPTNEdHlwZW9m
IGUudG9wIT0zRCJ1bmRlZmluZWQiP2UuPQp0b3A6aS50b3AsaS5yaWdodD0zRHR5cGVvZiBlLnJp
Z2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6aS5yaWdodCxpLmJvdHRvbT0KPTNEdHlwZW9mIGUu
Ym90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOmkuYm90dG9tLGkubGVmdD0zRHR5cGVvZiBl
LmxlZnQhPQo9M0QidW5kZWZpbmVkIj9lLmxlZnQ6aS5sZWZ0LG0pOml9LG0udGlja0Zvcm1hdD0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWU9Cm50cy5sZW5ndGg/KGw9M0RlLG0pOmx9LG0udG9v
bHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0KPTNEZSxtKTpj
fSxtLnRvb2x0aXBDb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGg9M0RlLG0pPQo6aH0sbS5ub0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8ocD0zRGUsbSk6cH0sbX0sZS5tb2RlbHM9Ci5jdW11bGF0aXZlTGluZUNoYXJ0PTNEZnVu
Y3Rpb24oKXtmdW5jdGlvbiBEKGIpe3JldHVybiBiLmVhY2goZnVuY3Rpb24oYil7Zj0KdW5jdGlv
biBJKGUsdCl7ZDMuc2VsZWN0KEQuY29udGFpbmVyKS5zdHlsZSgiY3Vyc29yIiwiZXctcmVzaXpl
Iil9ZnVuY3Rpb24gPQpxKGUsdCl7TS54PTNEZDMuZXZlbnQueCxNLmk9M0RNYXRoLnJvdW5kKE8u
aW52ZXJ0KE0ueCkpLG50KCl9ZnVuY3Rpb24gUihlLHQ9Cil7ZDMuc2VsZWN0KEQuY29udGFpbmVy
KS5zdHlsZSgiY3Vyc29yIiwiYXV0byIpLHguaW5kZXg9M0RNLmksay5zdGF0ZUNoYW5nZT0KKHgp
fWZ1bmN0aW9uIG50KCl7dHQuZGF0YShbTV0pO3ZhciBlPTNERC50cmFuc2l0aW9uRHVyYXRpb24o
KTtELnRyYW5zaXRpb25EPQp1cmF0aW9uKDApLEQudXBkYXRlKCksRC50cmFuc2l0aW9uRHVyYXRp
b24oZSl9dmFyIEw9M0RkMy5zZWxlY3QodGhpcykuY2xhc3M9CmVkKCJudi1jaGFydC0iK1MsITAp
LEE9M0R0aGlzLEg9M0QoZnx8cGFyc2VJbnQoTC5zdHlsZSgid2lkdGgiKSl8fDk2MCktdS5sZT0K
ZnQtdS5yaWdodCxCPTNEKGx8fHBhcnNlSW50KEwuc3R5bGUoImhlaWdodCIpKXx8NDAwKS11LnRv
cC11LmJvdHRvbTtELnVwZGF0PQplPTNEZnVuY3Rpb24oKXtMLmNhbGwoRCl9LEQuY29udGFpbmVy
PTNEdGhpcyx4LmRpc2FibGVkPTNEYi5tYXAoZnVuY3Rpb24oZSk9CntyZXR1cm4hIWUuZGlzYWJs
ZWR9KTtpZighVCl7dmFyIGo7VD0zRHt9O2ZvcihqIGluIHgpeFtqXWluc3RhbmNlb2YgQXJyYXk/
VD0KW2pdPTNEeFtqXS5zbGljZSgwKTpUW2pdPTNEeFtqXX12YXIgRj0zRGQzLmJlaGF2aW9yLmRy
YWcoKS5vbigiZHJhZ3N0YXJ0IixJPQopLm9uKCJkcmFnIixxKS5vbigiZHJhZ2VuZCIsUik7aWYo
IWJ8fCFiLmxlbmd0aHx8IWIuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHU9CnJuIGUudmFsdWVzLmxl
bmd0aH0pLmxlbmd0aCl7dmFyIFU9M0RMLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW05d
KTtyZT0KdHVybiBVLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52
LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43PQplbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRs
ZSIpLFUuYXR0cigieCIsdS5sZWZ0K0gvMikuYXR0cigieSIsdS50b3ArQi89CjIpLnRleHQoZnVu
Y3Rpb24oZSl7cmV0dXJuIGV9KSxEfUwuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtb3ZlKCks
dz0zRHQueD0KU2NhbGUoKSxFPTNEdC55U2NhbGUoKTtpZigheSl7dmFyIHo9M0RiLmZpbHRlcihm
dW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlPQpkfSkubWFwKGZ1bmN0aW9uKGUsbil7dmFyIHI9
M0RkMy5leHRlbnQoZS52YWx1ZXMsdC55KCkpO3JldHVybiByWzBdPC0wLjk1JiY9CihyWzBdPTNE
LTAuOTUpLFsoclswXS1yWzFdKS8oMStyWzFdKSwoclsxXS1yWzBdKS8oMStyWzBdKV19KSxXPTNE
W2QzLm1pbih6LD0KZnVuY3Rpb24oZSl7cmV0dXJuIGVbMF19KSxkMy5tYXgoeixmdW5jdGlvbihl
KXtyZXR1cm4gZVsxXX0pXTt0LnlEb21haW4oVyl9PQplbHNlIHQueURvbWFpbihudWxsKTtPLmRv
bWFpbihbMCxiWzBdLnZhbHVlcy5sZW5ndGgtMV0pLnJhbmdlKFswLEhdKS5jbGFtcCg9CiEwKTt2
YXIgYj0zRFAoTS5pLGIpLFg9M0RnPyJub25lIjoiYWxsIixWPTNETC5zZWxlY3RBbGwoImcubnYt
d3JhcC5udi1jdW11bD0KYXRpdmVMaW5lIikuZGF0YShbYl0pLCQ9M0RWLmVudGVyKCkuYXBwZW5k
KCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgPQpudi1jdW11bGF0aXZlTGluZSIpLmFw
cGVuZCgiZyIpLEo9M0RWLnNlbGVjdCgiZyIpOyQuYXBwZW5kKCJnIikuYXR0cigiY2xhc3M9CiIs
Im52LWludGVyYWN0aXZlIiksJC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhp
cyIpLnN0eWxlKCJwb2ludD0KZXItZXZlbnRzIiwibm9uZSIpLCQuYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudi15IG52LWF4aXMiKSwkLmFwcGVuZCgiZyIpPQouYXR0cigiY2xhc3MiLCJudi1i
YWNrZ3JvdW5kIiksJC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxpbmVzV3JhcCIpLnM9
CnR5bGUoInBvaW50ZXItZXZlbnRzIixYKSwkLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYt
YXZnTGluZXNXcmFwIikuc3R5bD0KZSgicG9pbnRlci1ldmVudHMiLCJub25lIiksJC5hcHBlbmQo
ImciKS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZFdyYXAiKSwkLmFwPQpwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudi1jb250cm9sc1dyYXAiKSxjJiYoaS53aWR0aChIKSxKLnNlbGVjdCgiLm52LWxl
Z2U9Cm5kV3JhcCIpLmRhdHVtKGIpLmNhbGwoaSksdS50b3AhPTNEaS5oZWlnaHQoKSYmKHUudG9w
PTNEaS5oZWlnaHQoKSxCPTNEKGx8fD0KcGFyc2VJbnQoTC5zdHlsZSgiaGVpZ2h0IikpfHw0MDAp
LXUudG9wLXUuYm90dG9tKSxKLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiPQopLmF0dHIoInRyYW5z
Zm9ybSIsInRyYW5zbGF0ZSgwLCIrIC11LnRvcCsiKSIpKTtpZihtKXt2YXIgSz0zRFt7a2V5OiJS
ZS1zY2E9CmxlIHktYXhpcyIsZGlzYWJsZWQ6IXl9XTtzLndpZHRoKDE0MCkuY29sb3IoWyIjNDQ0
IiwiIzQ0NCIsIiM0NDQiXSkucmlnaHRBbD0KaWduKCExKS5tYXJnaW4oe3RvcDo1LHJpZ2h0OjAs
Ym90dG9tOjUsbGVmdDoyMH0pLEouc2VsZWN0KCIubnYtY29udHJvbHNXcmFwPQoiKS5kYXR1bShL
KS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiKyAtdS50b3ArIikiKS5jYWxsKHMpfVYu
YXR0cigidHI9CmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit1LmxlZnQrIiwiK3UudG9wKyIpIiksZCYm
Si5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5hdD0KdHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgi
K0grIiwwKSIpO3ZhciBRPTNEYi5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuPQp0ZW1wRGlz
YWJsZWR9KTtWLnNlbGVjdCgiLnRlbXBEaXNhYmxlZCIpLnJlbW92ZSgpLFEubGVuZ3RoJiZWLmFw
cGVuZCgidGV4dCI9CikuYXR0cigiY2xhc3MiLCJ0ZW1wRGlzYWJsZWQiKS5hdHRyKCJ4IixILzIp
LmF0dHIoInkiLCItLjcxZW0iKS5zdHlsZSgidGV4dD0KLWFuY2hvciIsImVuZCIpLnRleHQoUS5t
YXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUua2V5fSkuam9pbigiLCAiKSsiIHZhbHVlcyBjPQphbm5v
dCBiZSBjYWxjdWxhdGVkIGZvciB0aGlzIHRpbWUgcGVyaW9kLiIpLGcmJihvLndpZHRoKEgpLmhl
aWdodChCKS5tYXJnaW49Cih7bGVmdDp1LmxlZnQsdG9wOnUudG9wfSkuc3ZnQ29udGFpbmVyKEwp
LnhTY2FsZSh3KSxWLnNlbGVjdCgiLm52LWludGVyYWN0aT0KdmUiKS5jYWxsKG8pKSwkLnNlbGVj
dCgiLm52LWJhY2tncm91bmQiKS5hcHBlbmQoInJlY3QiKSxKLnNlbGVjdCgiLm52LWJhY2tnPQpy
b3VuZCByZWN0IikuYXR0cigid2lkdGgiLEgpLmF0dHIoImhlaWdodCIsQiksdC55KGZ1bmN0aW9u
KGUpe3JldHVybiBlLmRpc3A9CmxheS55fSkud2lkdGgoSCkuaGVpZ2h0KEIpLmNvbG9yKGIubWFw
KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGEoZSx0KT0KfSkuZmlsdGVyKGZ1bmN0aW9u
KGUsdCl7cmV0dXJuIWJbdF0uZGlzYWJsZWQmJiFiW3RdLnRlbXBEaXNhYmxlZH0pKTt2YXIgRz0K
PTNESi5zZWxlY3QoIi5udi1saW5lc1dyYXAiKS5kYXR1bShiLmZpbHRlcihmdW5jdGlvbihlKXty
ZXR1cm4hZS5kaXNhYmxlZCYmPQohZS50ZW1wRGlzYWJsZWR9KSk7Ry5jYWxsKHQpLGIuZm9yRWFj
aChmdW5jdGlvbihlLHQpe2Uuc2VyaWVzSW5kZXg9M0R0fSk7dmE9CnIgWT0zRGIuZmlsdGVyKGZ1
bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkJiYhIUMoZSl9KSxaPTNESi5zZWxlY3QoIi5udi1h
dj0KZ0xpbmVzV3JhcCIpLnNlbGVjdEFsbCgibGluZSIpLmRhdGEoWSxmdW5jdGlvbihlKXtyZXR1
cm4gZS5rZXl9KSxldD0zRGZ1bmN0PQppb24oZSl7dmFyIHQ9M0RFKEMoZSkpO3JldHVybiB0PDA/
MDp0PkI/Qjp0fTtaLmVudGVyKCkuYXBwZW5kKCJsaW5lIikuc3R5bGU9Cigic3Ryb2tlLXdpZHRo
IiwyKS5zdHlsZSgic3Ryb2tlLWRhc2hhcnJheSIsIjEwLDEwIikuc3R5bGUoInN0cm9rZSIsZnVu
Y3Rpbz0KbihlLG4pe3JldHVybiB0LmNvbG9yKCkoZSxlLnNlcmllc0luZGV4KX0pLmF0dHIoIngx
IiwwKS5hdHRyKCJ4MiIsSCkuYXR0cigiPQp5MSIsZXQpLmF0dHIoInkyIixldCksWi5zdHlsZSgi
c3Ryb2tlLW9wYWNpdHkiLGZ1bmN0aW9uKGUpe3ZhciB0PTNERShDKGUpKTs9CnJldHVybiB0PDB8
fHQ+Qj8wOjF9KS5hdHRyKCJ4MSIsMCkuYXR0cigieDIiLEgpLmF0dHIoInkxIixldCkuYXR0cigi
eTIiLGV0KT0KLFouZXhpdCgpLnJlbW92ZSgpO3ZhciB0dD0zREcuc2VsZWN0QWxsKCIubnYtaW5k
ZXhMaW5lIikuZGF0YShbTV0pO3R0LmVudGVyPQooKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFz
cyIsIm52LWluZGV4TGluZSIpLmF0dHIoIndpZHRoIiwzKS5hdHRyKCJ4IiwtMik9Ci5hdHRyKCJm
aWxsIiwicmVkIikuYXR0cigiZmlsbC1vcGFjaXR5IiwuNSkuc3R5bGUoInBvaW50ZXItZXZlbnRz
IiwiYWxsIikuYz0KYWxsKEYpLHR0LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSl7cmV0dXJu
InRyYW5zbGF0ZSgiK08oZS5pKSsiLDApIn0pLmF0PQp0cigiaGVpZ2h0IixCKSxoJiYobi5zY2Fs
ZSh3KS50aWNrcyhNYXRoLm1pbihiWzBdLnZhbHVlcy5sZW5ndGgsSC83MCkpLnRpY2s9ClNpemUo
LUIsMCksSi5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xh
dGUoMCwiK0UucmFuZz0KZSgpWzBdKyIpIiksZDMudHJhbnNpdGlvbihKLnNlbGVjdCgiLm52LXgu
bnYtYXhpcyIpKS5jYWxsKG4pKSxwJiYoci5zY2FsZShFPQopLnRpY2tzKEIvMzYpLnRpY2tTaXpl
KC1ILDApLGQzLnRyYW5zaXRpb24oSi5zZWxlY3QoIi5udi15Lm52LWF4aXMiKSkuY2FsbCg9CnIp
KSxKLnNlbGVjdCgiLm52LWJhY2tncm91bmQgcmVjdCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtN
Lng9M0RkMy5tb3VzZSh0aD0KaXMpWzBdLE0uaT0zRE1hdGgucm91bmQoTy5pbnZlcnQoTS54KSks
eC5pbmRleD0zRE0uaSxrLnN0YXRlQ2hhbmdlKHgpLG50KCl9PQopLHQuZGlzcGF0Y2gub24oImVs
ZW1lbnRDbGljayIsZnVuY3Rpb24oZSl7TS5pPTNEZS5wb2ludEluZGV4LE0ueD0zRE8oTS5pKSw9
CnguaW5kZXg9M0RNLmksay5zdGF0ZUNoYW5nZSh4KSxudCgpfSkscy5kaXNwYXRjaC5vbigibGVn
ZW5kQ2xpY2siLGZ1bmN0aW9uKD0KZSx0KXtlLmRpc2FibGVkPTNEIWUuZGlzYWJsZWQseT0zRCFl
LmRpc2FibGVkLHgucmVzY2FsZVk9M0R5LGsuc3RhdGVDaGFuZ2UoPQp4KSxELnVwZGF0ZSgpfSks
aS5kaXNwYXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe3guZGlzYWJsZWQ9M0RlLmRp
c2E9CmJsZWQsay5zdGF0ZUNoYW5nZSh4KSxELnVwZGF0ZSgpfSksby5kaXNwYXRjaC5vbigiZWxl
bWVudE1vdXNlbW92ZSIsZnVuY3Rpbz0KbihpKXt0LmNsZWFySGlnaGxpZ2h0cygpO3ZhciBzLGYs
bCxjPTNEW107Yi5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zPQplcmllc0luZGV4PTNE
dCwhZS5kaXNhYmxlZH0pLmZvckVhY2goZnVuY3Rpb24obixyKXtmPTNEZS5pbnRlcmFjdGl2ZUJp
c2VjdCg9Cm4udmFsdWVzLGkucG9pbnRYVmFsdWUsRC54KCkpLHQuaGlnaGxpZ2h0UG9pbnQocixm
LCEwKTt2YXIgbz0zRG4udmFsdWVzW2ZdOz0KaWYodHlwZW9mIG89M0Q9M0QidW5kZWZpbmVkIily
ZXR1cm47dHlwZW9mIHM9M0Q9M0QidW5kZWZpbmVkIiYmKHM9M0RvKSx0eXBlPQpvZiBsPTNEPTNE
InVuZGVmaW5lZCImJihsPTNERC54U2NhbGUoKShELngoKShvLGYpKSksYy5wdXNoKHtrZXk6bi5r
ZXksdmFsdWU9CjpELnkoKShvLGYpLGNvbG9yOmEobixuLnNlcmllc0luZGV4KX0pfSk7aWYoYy5s
ZW5ndGg+Mil7dmFyIGg9M0RELnlTY2FsZSgpLj0KaW52ZXJ0KGkubW91c2VZKSxwPTNETWF0aC5h
YnMoRC55U2NhbGUoKS5kb21haW4oKVswXS1ELnlTY2FsZSgpLmRvbWFpbigpWzFdPQopLGQ9M0Qu
MDMqcCxtPTNEZS5uZWFyZXN0VmFsdWVJbmRleChjLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS52
YWx1ZX0pLGgsZCk9CjttIT0zRD0zRG51bGwmJihjW21dLmhpZ2hsaWdodD0zRCEwKX12YXIgZz0z
RG4udGlja0Zvcm1hdCgpKEQueCgpKHMsZiksZik7bz0KLnRvb2x0aXAucG9zaXRpb24oe2xlZnQ6
bCt1LmxlZnQsdG9wOmkubW91c2VZK3UudG9wfSkuY2hhcnRDb250YWluZXIoQS5wYXJlPQpudE5v
ZGUpLmVuYWJsZWQodikudmFsdWVGb3JtYXR0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gci50aWNr
Rm9ybWF0KCkoZSl9KS49CmRhdGEoe3ZhbHVlOmcsc2VyaWVzOmN9KSgpLG8ucmVuZGVyR3VpZGVM
aW5lKGwpfSksby5kaXNwYXRjaC5vbigiZWxlbWVudE1vdT0Kc2VvdXQiLGZ1bmN0aW9uKGUpe2su
dG9vbHRpcEhpZGUoKSx0LmNsZWFySGlnaGxpZ2h0cygpfSksay5vbigidG9vbHRpcFNob3ciPQos
ZnVuY3Rpb24oZSl7diYmXyhlLEEucGFyZW50Tm9kZSl9KSxrLm9uKCJjaGFuZ2VTdGF0ZSIsZnVu
Y3Rpb24oZSl7dHlwZW9mIGU9Ci5kaXNhYmxlZCE9M0QidW5kZWZpbmVkIiYmKGIuZm9yRWFjaChm
dW5jdGlvbih0LG4pe3QuZGlzYWJsZWQ9M0RlLmRpc2FibGVkWz0Kbl19KSx4LmRpc2FibGVkPTNE
ZS5kaXNhYmxlZCksdHlwZW9mIGUuaW5kZXghPTNEInVuZGVmaW5lZCImJihNLmk9M0RlLmluZGV4
PQosTS54PTNETyhNLmkpLHguaW5kZXg9M0RlLmluZGV4LHR0LmRhdGEoW01dKSksdHlwZW9mIGUu
cmVzY2FsZVkhPTNEInVuZGVmaW49CmVkIiYmKHk9M0RlLnJlc2NhbGVZKSxELnVwZGF0ZSgpfSl9
KSxEfWZ1bmN0aW9uIFAoZSxuKXtyZXR1cm4gbi5tYXAoZnVuY3Rpbz0KbihuLHIpe2lmKCFuLnZh
bHVlcylyZXR1cm4gbjt2YXIgaT0zRG4udmFsdWVzW2VdO2lmKGk9M0Q9M0RudWxsKXJldHVybiBu
O3ZhPQpyIHM9M0R0LnkoKShpLGUpO3JldHVybiBzPC0wLjk1JiYhQT8obi50ZW1wRGlzYWJsZWQ9
M0QhMCxuKToobi50ZW1wRGlzYWJsZWQ9Cj0zRCExLG4udmFsdWVzPTNEbi52YWx1ZXMubWFwKGZ1
bmN0aW9uKGUsbil7cmV0dXJuIGUuZGlzcGxheT0zRHt5Oih0LnkoKShlLD0KbiktcykvKDErcyl9
LGV9KSxuKX0pfXZhciB0PTNEZS5tb2RlbHMubGluZSgpLG49M0RlLm1vZGVscy5heGlzKCkscj0z
RGUubW9kPQplbHMuYXhpcygpLGk9M0RlLm1vZGVscy5sZWdlbmQoKSxzPTNEZS5tb2RlbHMubGVn
ZW5kKCksbz0zRGUuaW50ZXJhY3RpdmVHdWk9CmRlbGluZSgpLHU9M0R7dG9wOjMwLHJpZ2h0OjMw
LGJvdHRvbTo1MCxsZWZ0OjYwfSxhPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKT0KLGY9M0RudWxs
LGw9M0RudWxsLGM9M0QhMCxoPTNEITAscD0zRCEwLGQ9M0QhMSx2PTNEITAsbT0zRCEwLGc9M0Qh
MSx5PTNEITAsPQpiPTNEZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4iPGgzPiIrZSsiPC9oMz4i
KyI8cD4iK24rIiBhdCAiK3QrIjwvcD4ifSx3LEU9CixTPTNEdC5pZCgpLHg9M0R7aW5kZXg6MCxy
ZXNjYWxlWTp5fSxUPTNEbnVsbCxOPTNEIk5vIERhdGEgQXZhaWxhYmxlLiIsQz0zRD0KZnVuY3Rp
b24oZSl7cmV0dXJuIGUuYXZlcmFnZX0saz0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRv
b2x0aXBIaWRlIiwiPQpzdGF0ZUNoYW5nZSIsImNoYW5nZVN0YXRlIiksTD0zRDAsQT0zRCExO24u
b3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg3KSw9CnIub3JpZW50KGQ/InJpZ2h0IjoibGVm
dCIpLHMudXBkYXRlU3RhdGUoITEpO3ZhciBPPTNEZDMuc2NhbGUubGluZWFyKCksTT0zRD0Ke2k6
MCx4OjB9LF89M0RmdW5jdGlvbihpLHMpe3ZhciBvPTNEaS5wb3NbMF0rKHMub2Zmc2V0TGVmdHx8
MCksdT0zRGkucG9zWzFdPQorKHMub2Zmc2V0VG9wfHwwKSxhPTNEbi50aWNrRm9ybWF0KCkodC54
KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKSxmPTNEci50aWM9CmtGb3JtYXQoKSh0LnkoKShpLnBv
aW50LGkucG9pbnRJbmRleCkpLGw9M0RiKGkuc2VyaWVzLmtleSxhLGYsaSxEKTtlLnRvb2x0aT0K
cC5zaG93KFtvLHVdLGwsbnVsbCxudWxsLHMpfTtyZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVu
dE1vdXNlb3Zlci50b29sdGlwPQoiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK3UubGVm
dCxlLnBvc1sxXSt1LnRvcF0say50b29sdGlwU2hvdyhlKX0pLHQ9Ci5kaXNwYXRjaC5vbigiZWxl
bWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2sudG9vbHRpcEhpZGUoZSl9KSxrLm9u
KD0KInRvb2x0aXBIaWRlIixmdW5jdGlvbigpe3YmJmUudG9vbHRpcC5jbGVhbnVwKCl9KSxELmRp
c3BhdGNoPTNEayxELmxpbmVzPTNEPQp0LEQubGVnZW5kPTNEaSxELnhBeGlzPTNEbixELnlBeGlz
PTNEcixELmludGVyYWN0aXZlTGF5ZXI9M0RvLGQzLnJlYmluZChELHQ9CiwiZGVmaW5lZCIsImlz
QXJlYSIsIngiLCJ5IiwieFNjYWxlIiwieVNjYWxlIiwic2l6ZSIsInhEb21haW4iLCJ5RG9tYWlu
IiwieD0KUmFuZ2UiLCJ5UmFuZ2UiLCJmb3JjZVgiLCJmb3JjZVkiLCJpbnRlcmFjdGl2ZSIsImNs
aXBFZGdlIiwiY2xpcFZvcm9ub2kiLCJ1PQpzZVZvcm9ub2kiLCJpZCIpLEQub3B0aW9ucz0zRGUu
dXRpbHMub3B0aW9uc0Z1bmMuYmluZChEKSxELm1hcmdpbj0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHUudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2Uu
dG9wOnUudD0Kb3AsdS5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2Uucmln
aHQ6dS5yaWdodCx1LmJvdHRvbT0zRHR5cGVvPQpmIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2Uu
Ym90dG9tOnUuYm90dG9tLHUubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGU9CmZpbmVkIj9l
LmxlZnQ6dS5sZWZ0LEQpOnV9LEQud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oZj0KPTNEZSxEKTpmfSxELmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhsPTNEZSxEKTpsfSxELmNvPQpsb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oYT0zRGUudXRpbHMuZ2V0Q29sb3IodCksaS5jb2xvcig9CmEpLEQp
OmF9LEQucmVzY2FsZVk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT0z
RGUsRCk6eX0sRC5zaD0Kb3dDb250cm9scz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhtPTNEZSxEKTptfSxELnVzZUludGVyYWN0PQppdmVHdWlkZWxpbmU9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0zRGUsZT0zRD0zRD0zRCEwJiYoRC49Cmlu
dGVyYWN0aXZlKCExKSxELnVzZVZvcm9ub2koITEpKSxEKTpnfSxELnNob3dMZWdlbmQ9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYT0Kcmd1bWVudHMubGVuZ3RoPyhjPTNEZSxEKTpjfSxELnNob3dYQXhp
cz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuPQpndGg/KGg9M0RlLEQpOmh9LEQu
c2hvd1lBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLEQ9
Cik6cH0sRC5yaWdodEFsaWduWUF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oZD0zRGUsci5vcmllbj0KdChlPyJyaWdodCI6ImxlZnQiKSxEKTpkfSxELnRvb2x0aXBz
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/PQoodj0zRGUsRCk6dn0sRC50
b29sdGlwQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPTNE
ZSw9CkQpOmJ9LEQuc3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
eD0zRGUsRCk6eH0sRC5kZWZhdWx0Uz0KdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhUPTNEZSxEKTpUfSxELm5vRGF0YT0zRGZ1bmN0aW9uPQooZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KE49M0RlLEQpOk59LEQuYXZlcmFnZT0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmc9CnVtZW50cy5sZW5ndGg/KEM9M0RlLEQpOkN9LEQudHJhbnNpdGlvbkR1cmF0aW9uPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZT0KbnRzLmxlbmd0aD8oTD0zRGUsRCk6TH0sRC5ub0Vy
cm9yQ2hlY2s9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0PQpoPyhBPTNEZSxE
KTpBfSxEfSxlLm1vZGVscy5kaXNjcmV0ZUJhcj0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gRShlKXty
ZXR1cm4gZS49CmVhY2goZnVuY3Rpb24oZSl7dmFyIGk9M0RuLXQubGVmdC10LnJpZ2h0LEU9M0Ry
LXQudG9wLXQuYm90dG9tLFM9M0RkMy5zZWxlYz0KdCh0aGlzKTtlLmZvckVhY2goZnVuY3Rpb24o
ZSx0KXtlLnZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2Uuc2VyaWVzPTNEdH0pPQp9KTt2YXIg
VD0zRHAmJmQ/W106ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlv
bihlLHQpe3JldHU9CnJue3g6dShlLHQpLHk6YShlLHQpLHkwOmUueTB9fSl9KTtzLmRvbWFpbihw
fHxkMy5tZXJnZShUKS5tYXAoZnVuY3Rpb24oZSl7cj0KZXR1cm4gZS54fSkpLnJhbmdlQmFuZHMo
dnx8WzAsaV0sLjEpLG8uZG9tYWluKGR8fGQzLmV4dGVudChkMy5tZXJnZShUKS5tYXAoPQpmdW5j
dGlvbihlKXtyZXR1cm4gZS55fSkuY29uY2F0KGYpKSksYz9vLnJhbmdlKG18fFtFLShvLmRvbWFp
bigpWzBdPDA/MTI6MCk9CixvLmRvbWFpbigpWzFdPjA/MTI6MF0pOm8ucmFuZ2UobXx8W0UsMF0p
LGI9M0RifHxzLHc9M0R3fHxvLmNvcHkoKS5yYW5nZShbbz0KKDApLG8oMCldKTt2YXIgTj0zRFMu
c2VsZWN0QWxsKCJnLm52LXdyYXAubnYtZGlzY3JldGViYXIiKS5kYXRhKFtlXSksQz0zRE4uPQpl
bnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LWRpc2NyZXRl
YmFyIiksaz0zREMuYXBwZW49CmQoImciKSxMPTNETi5zZWxlY3QoImciKTtrLmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnYtZ3JvdXBzIiksTi5hdHRyKCJ0cj0KYW5zZm9ybSIsInRyYW5zbGF0
ZSgiK3QubGVmdCsiLCIrdC50b3ArIikiKTt2YXIgQT0zRE4uc2VsZWN0KCIubnYtZ3JvdXBzIiku
PQpzZWxlY3RBbGwoIi5udi1ncm91cCIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGZ1bmN0
aW9uKGUpe3JldHVybiBlLmtleX09Cik7QS5lbnRlcigpLmFwcGVuZCgiZyIpLnN0eWxlKCJzdHJv
a2Utb3BhY2l0eSIsMWUtNikuc3R5bGUoImZpbGwtb3BhY2l0eSIsMT0KZS02KSxBLmV4aXQoKS5z
dHlsZSgic3Ryb2tlLW9wYWNpdHkiLDFlLTYpLnN0eWxlKCJmaWxsLW9wYWNpdHkiLDFlLTYpLnJl
bW92PQplKCksQS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4ibnYtZ3JvdXAgbnYt
c2VyaWVzLSIrdH0pLmNsYXNzZWQoImg9Cm92ZXIiLGZ1bmN0aW9uKGUpe3JldHVybiBlLmhvdmVy
fSksQS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDEpLnN0eWxlKCJmaWxsLT0Kb3BhY2l0eSIsLjc1
KTt2YXIgTz0zREEuc2VsZWN0QWxsKCJnLm52LWJhciIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJu
IGUudmFsPQp1ZXN9KTtPLmV4aXQoKS5yZW1vdmUoKTt2YXIgTT0zRE8uZW50ZXIoKS5hcHBlbmQo
ImciKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmM9CnRpb24oZSx0LG4pe3JldHVybiJ0cmFuc2xhdGUo
Iisocyh1KGUsdCkpK3MucmFuZ2VCYW5kKCkqLjA1KSsiLCAiK28oMCkrIikifT0KKS5vbigibW91
c2VvdmVyIixmdW5jdGlvbih0LG4pe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIsITAp
LGcuZWxlbWVuPQp0TW91c2VvdmVyKHt2YWx1ZTphKHQsbikscG9pbnQ6dCxzZXJpZXM6ZVt0LnNl
cmllc10scG9zOltzKHUodCxuKSkrcy5yYW5nZUI9CmFuZCgpKih0LnNlcmllcysuNSkvZS5sZW5n
dGgsbyhhKHQsbikpXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZT0KOmQzLmV2
ZW50fSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKHQsbil7ZDMuc2VsZWN0KHRoaXMpLmNsYXNz
ZWQoImhvdmVyIiwhPQoxKSxnLmVsZW1lbnRNb3VzZW91dCh7dmFsdWU6YSh0LG4pLHBvaW50OnQs
c2VyaWVzOmVbdC5zZXJpZXNdLHBvaW50SW5kZXg6biw9CnNlcmllc0luZGV4OnQuc2VyaWVzLGU6
ZDMuZXZlbnR9KX0pLm9uKCJjbGljayIsZnVuY3Rpb24odCxuKXtnLmVsZW1lbnRDbGljaz0KKHt2
YWx1ZTphKHQsbikscG9pbnQ6dCxzZXJpZXM6ZVt0LnNlcmllc10scG9zOltzKHUodCxuKSkrcy5y
YW5nZUJhbmQoKSoodC5zPQplcmllcysuNSkvZS5sZW5ndGgsbyhhKHQsbikpXSxwb2ludEluZGV4
Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpkMy5ldmVudH09CiksZDMuZXZlbnQuc3RvcFByb3Bh
Z2F0aW9uKCl9KS5vbigiZGJsY2xpY2siLGZ1bmN0aW9uKHQsbil7Zy5lbGVtZW50RGJsQ2xpYz0K
ayh7dmFsdWU6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvczpbcyh1KHQsbikp
K3MucmFuZ2VCYW5kKCkqKHQuPQpzZXJpZXMrLjUpL2UubGVuZ3RoLG8oYSh0LG4pKV0scG9pbnRJ
bmRleDpuLHNlcmllc0luZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnQ9Cn0pLGQzLmV2ZW50LnN0b3BQ
cm9wYWdhdGlvbigpfSk7TS5hcHBlbmQoInJlY3QiKS5hdHRyKCJoZWlnaHQiLDApLmF0dHIoIndp
ZD0KdGgiLHMucmFuZ2VCYW5kKCkqLjkvZS5sZW5ndGgpLGM/KE0uYXBwZW5kKCJ0ZXh0IikuYXR0
cigidGV4dC1hbmNob3IiLCJtaWRkPQpsZSIpLE8uc2VsZWN0KCJ0ZXh0IikudGV4dChmdW5jdGlv
bihlLHQpe3JldHVybiBoKGEoZSx0KSl9KS5hdHRyKCJ4IixzLnJhbmc9CmVCYW5kKCkqLjkvMiku
YXR0cigieSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShlLHQpPDA/byhhKGUsdCkpLW8oMCkrMTI6
LTR9KT0KKTpPLnNlbGVjdEFsbCgidGV4dCIpLnJlbW92ZSgpLE8uYXR0cigiY2xhc3MiLGZ1bmN0
aW9uKGUsdCl7cmV0dXJuIGEoZSx0KTwwPQo/Im52LWJhciBuZWdhdGl2ZSI6Im52LWJhciBwb3Np
dGl2ZSJ9KS5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS49CmNvbG9yfHxsKGUs
dCl9KS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxsKGUsdCl9
KS5zZWxlYz0KdCgicmVjdCIpLmF0dHIoImNsYXNzIix5KS5hdHRyKCJ3aWR0aCIscy5yYW5nZUJh
bmQoKSouOS9lLmxlbmd0aCksTy5hdHRyKCJ0PQpyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXt2YXIg
bj0zRHModShlLHQpKStzLnJhbmdlQmFuZCgpKi4wNSxyPTNEYShlLHQpPDA/byg9CjApOm8oMCkt
byhhKGUsdCkpPDE/bygwKS0xOm8oYShlLHQpKTtyZXR1cm4idHJhbnNsYXRlKCIrbisiLCAiK3Ir
IikifSkuc2VsZT0KY3QoInJlY3QiKS5hdHRyKCJoZWlnaHQiLGZ1bmN0aW9uKGUsdCl7cmV0dXJu
IE1hdGgubWF4KE1hdGguYWJzKG8oYShlLHQpKS1vPQooZCYmZFswXXx8MCkpfHwxKX0pLGI9M0Rz
LmNvcHkoKSx3PTNEby5jb3B5KCl9KSxFfXZhciB0PTNEe3RvcDowLHJpZ2h0OjAsYm89CnR0b206
MCxsZWZ0OjB9LG49M0Q5NjAscj0zRDUwMCxpPTNETWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjFl
NCkscz0zRGQzLnNjYT0KbGUub3JkaW5hbCgpLG89M0RkMy5zY2FsZS5saW5lYXIoKSx1PTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGUueH0sYT0zRGZ1bmN0aW9uPQooZSl7cmV0dXJuIGUueX0sZj0zRFsw
XSxsPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxjPTNEITEsaD0zRGQzLmZvcm1hdCgiLC49CjJm
IikscCxkLHYsbSxnPTNEZDMuZGlzcGF0Y2goImNoYXJ0Q2xpY2siLCJlbGVtZW50Q2xpY2siLCJl
bGVtZW50RGJsQ2xpY2siLD0KImVsZW1lbnRNb3VzZW92ZXIiLCJlbGVtZW50TW91c2VvdXQiKSx5
PTNEImRpc2NyZXRlQmFyIixiLHc7cmV0dXJuIEUuZGlzcGF0PQpjaD0zRGcsRS5vcHRpb25zPTNE
ZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKEUpLEUueD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmc9
CnVtZW50cy5sZW5ndGg/KHU9M0RlLEUpOnV9LEUueT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhhPTNEZT0KLEUpOmF9LEUubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPTNEdHlwZW9mIGUudG9wPQohPTNEInVuZGVmaW5lZCI/
ZS50b3A6dC50b3AsdC5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2Uucmln
aHQ9Cjp0LnJpZ2h0LHQuYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2Uu
Ym90dG9tOnQuYm90dG9tLHQubGVmdD0KPTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9l
LmxlZnQ6dC5sZWZ0LEUpOnR9LEUud2lkdGg9M0RmdW5jdGlvbihlKXtyPQpldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhuPTNEZSxFKTpufSxFLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHM9Ci5sZW5ndGg/KHI9M0RlLEUpOnJ9LEUueFNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLD0KRSk6c30sRS55U2NhbGU9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsRSk6b30sRS54RG9tYWluPQo9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsRSk6cH0sRS55RG9tYWluPTNEZnVu
Y3Rpb24oZSk9CntyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGUsRSk6ZH0sRS54UmFuZ2U9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbj0KdHMubGVuZ3RoPyh2PTNEZSxFKTp2fSxFLnlS
YW5nZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNEPQplLEUpOm19
LEUuZm9yY2VZPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLEUp
OmZ9LEUuY29sb3I9Cj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNE
ZS51dGlscy5nZXRDb2xvcih0KSxFKTpsfSxFLmlkPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oaT0zRGUsRSk6aX0sRS5zaG93VmFsdWVzPTNEZnVuY3Rpb249CihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUsRSk6Y30sRS52YWx1ZUZvcm1hdD0zRGZ1bmN0
aW9uKGUpe3JldHVybj0KIGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLEUpOmh9LEUucmVjdENsYXNz
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sPQplbmd0aD8oeT0zRGUsRSk6eX0sRX0s
ZS5tb2RlbHMuZGlzY3JldGVCYXJDaGFydD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdyhlKXs9CnJl
dHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIHU9M0RkMy5zZWxlY3QodGhpcykscD0zRHRoaXMs
eT0zRChzfHxwYXJzZUludD0KKHUuc3R5bGUoIndpZHRoIikpfHw5NjApLWkubGVmdC1pLnJpZ2h0
LEU9M0Qob3x8cGFyc2VJbnQodS5zdHlsZSgiaGVpZ2h0IikpPQp8fDQwMCktaS50b3AtaS5ib3R0
b207dy51cGRhdGU9M0RmdW5jdGlvbigpe2cuYmVmb3JlVXBkYXRlKCksdS5jYWxsKHcpfSx3LmM9
Cm9udGFpbmVyPTNEdGhpcztpZighZXx8IWUubGVuZ3RofHwhZS5maWx0ZXIoZnVuY3Rpb24oZSl7
cmV0dXJuIGUudmFsdWVzLmxlbj0KZ3RofSkubGVuZ3RoKXt2YXIgUz0zRHUuc2VsZWN0QWxsKCIu
bnYtbm9EYXRhIikuZGF0YShbbV0pO3JldHVybiBTLmVudGVyKCkuPQphcHBlbmQoInRleHQiKS5h
dHRyKCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0
ZXg9CnQtYW5jaG9yIiwibWlkZGxlIiksUy5hdHRyKCJ4IixpLmxlZnQreS8yKS5hdHRyKCJ5Iixp
LnRvcCtFLzIpLnRleHQoZnVuY3Rpbz0KbihlKXtyZXR1cm4gZX0pLHd9dS5zZWxlY3RBbGwoIi5u
di1ub0RhdGEiKS5yZW1vdmUoKSxkPTNEdC54U2NhbGUoKSx2PTNEdC55PQpTY2FsZSgpLmNsYW1w
KCEwKTt2YXIgVD0zRHUuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtZGlzY3JldGVCYXJXaXRoQXhl
cyIpLmQ9CmF0YShbZV0pLE49M0RULmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJu
dmQzIG52LXdyYXAgbnYtZGlzY3JldGVCYT0KcldpdGhBeGVzIikuYXBwZW5kKCJnIiksQz0zRE4u
YXBwZW5kKCJkZWZzIiksaz0zRFQuc2VsZWN0KCJnIik7Ti5hcHBlbmQoImciPQopLmF0dHIoImNs
YXNzIiwibnYteCBudi1heGlzIiksTi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkgbnYt
YXhpcyIpLmE9CnBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi16ZXJvTGluZSIpLmFwcGVuZCgi
bGluZSIpLE4uYXBwZW5kKCJnIikuYXR0cigiYz0KbGFzcyIsIm52LWJhcnNXcmFwIiksay5hdHRy
KCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitpLmxlZnQrIiwiK2kudG9wKyIpIiksPQpsJiZrLnNl
bGVjdCgiLm52LXkubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3krIiww
KSIpLHQud2lkdGg9Cih5KS5oZWlnaHQoRSk7dmFyIEw9M0RrLnNlbGVjdCgiLm52LWJhcnNXcmFw
IikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cj0KZXR1cm4hZS5kaXNhYmxlZH0pKTtMLmNh
bGwodCksQy5hcHBlbmQoImNsaXBQYXRoIikuYXR0cigiaWQiLCJudi14LWxhYmVsLWNsPQppcC0i
K3QuaWQoKSkuYXBwZW5kKCJyZWN0Iiksay5zZWxlY3QoIiNudi14LWxhYmVsLWNsaXAtIit0Lmlk
KCkrIiByZWN0IikuYXQ9CnRyKCJ3aWR0aCIsZC5yYW5nZUJhbmQoKSooYz8yOjEpKS5hdHRyKCJo
ZWlnaHQiLDE2KS5hdHRyKCJ4IiwtZC5yYW5nZUJhbmQoKT0KLyhjPzE6MikpO2lmKGEpe24uc2Nh
bGUoZCkudGlja3MoeS8xMDApLnRpY2tTaXplKC1FLDApLGsuc2VsZWN0KCIubnYteC5udi1hPQp4
aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiKyh2LnJhbmdlKClbMF0rKHQuc2hv
d1ZhbHVlcygpJiZ2LmRvbWE9CmluKClbMF08MD8xNjowKSkrIikiKSxrLnNlbGVjdCgiLm52LXgu
bnYtYXhpcyIpLmNhbGwobik7dmFyIEE9M0RrLnNlbGVjdCgiLj0KbnYteC5udi1heGlzIikuc2Vs
ZWN0QWxsKCJnIik7YyYmQS5zZWxlY3RBbGwoInRleHQiKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0
PQppb24oZSx0LG4pe3JldHVybiJ0cmFuc2xhdGUoMCwiKyhuJTI9M0Q9M0QwPyI1IjoiMTciKSsi
KSJ9KX1mJiYoci5zY2FsZSh2KS49CnRpY2tzKEUvMzYpLnRpY2tTaXplKC15LDApLGsuc2VsZWN0
KCIubnYteS5udi1heGlzIikuY2FsbChyKSksay5zZWxlY3QoIi5udj0KLXplcm9MaW5lIGxpbmUi
KS5hdHRyKCJ4MSIsMCkuYXR0cigieDIiLHkpLmF0dHIoInkxIix2KDApKS5hdHRyKCJ5MiIsdigw
KSksPQpnLm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7aCYmYihlLHAucGFyZW50Tm9kZSl9
KX0pLHd9dmFyIHQ9M0RlLm1vZGVscy49CmRpc2NyZXRlQmFyKCksbj0zRGUubW9kZWxzLmF4aXMo
KSxyPTNEZS5tb2RlbHMuYXhpcygpLGk9M0R7dG9wOjE1LHJpZ2h0OjEwLD0KYm90dG9tOjUwLGxl
ZnQ6NjB9LHM9M0RudWxsLG89M0RudWxsLHU9M0RlLnV0aWxzLmdldENvbG9yKCksYT0zRCEwLGY9
M0QhMCxsPQo9M0QhMSxjPTNEITEsaD0zRCEwLHA9M0RmdW5jdGlvbihlLHQsbixyLGkpe3JldHVy
biI8aDM+Iit0KyI8L2gzPiIrIjxwPiIrbis9CiI8L3A+In0sZCx2LG09M0QiTm8gRGF0YSBBdmFp
bGFibGUuIixnPTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcD0KSGlkZSIsImJl
Zm9yZVVwZGF0ZSIpLHk9M0QwO24ub3JpZW50KCJib3R0b20iKS5oaWdobGlnaHRaZXJvKCExKS5z
aG93TWF4TWluPQooITEpLnRpY2tGb3JtYXQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxyLm9yaWVu
dChsPyJyaWdodCI6ImxlZnQiKS50aWNrRm9ybWE9CnQoZDMuZm9ybWF0KCIsLjFmIikpO3ZhciBi
PTNEZnVuY3Rpb24oaSxzKXt2YXIgbz0zRGkucG9zWzBdKyhzLm9mZnNldExlZnR8fD0KMCksdT0z
RGkucG9zWzFdKyhzLm9mZnNldFRvcHx8MCksYT0zRG4udGlja0Zvcm1hdCgpKHQueCgpKGkucG9p
bnQsaS5wb2ludEluPQpkZXgpKSxmPTNEci50aWNrRm9ybWF0KCkodC55KCkoaS5wb2ludCxpLnBv
aW50SW5kZXgpKSxsPTNEcChpLnNlcmllcy5rZXksYSw9CmYsaSx3KTtlLnRvb2x0aXAuc2hvdyhb
byx1XSxsLGkudmFsdWU8MD8ibiI6InMiLG51bGwscyl9O3JldHVybiB0LmRpc3BhdGNoLj0Kb24o
ImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0r
aS5sZWZ0LGUucG9zWzFdPQoraS50b3BdLGcudG9vbHRpcFNob3coZSl9KSx0LmRpc3BhdGNoLm9u
KCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb249CihlKXtnLnRvb2x0aXBIaWRlKGUp
fSksZy5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7aCYmZS50b29sdGlwLmNsZWFudXAoKT0K
fSksdy5kaXNwYXRjaD0zRGcsdy5kaXNjcmV0ZWJhcj0zRHQsdy54QXhpcz0zRG4sdy55QXhpcz0z
RHIsZDMucmViaW5kKHcsdCwiPQp4IiwieSIsInhEb21haW4iLCJ5RG9tYWluIiwieFJhbmdlIiwi
eVJhbmdlIiwiZm9yY2VYIiwiZm9yY2VZIiwiaWQiLCJzaG93VmE9Cmx1ZXMiLCJ2YWx1ZUZvcm1h
dCIpLHcub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZCh3KSx3Lm1hcmdpbj0zRGZ1
bj0KY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkudG9wPTNEdHlwZW9mIGUudG9w
IT0zRCJ1bmRlZmluZWQiP2UudG9wPQo6aS50b3AsaS5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0z
RCJ1bmRlZmluZWQiP2UucmlnaHQ6aS5yaWdodCxpLmJvdHRvbT0zRHQ9CnlwZW9mIGUuYm90dG9t
IT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOmkuYm90dG9tLGkubGVmdD0zRHR5cGVvZiBlLmxlZnQh
PTNEIj0KdW5kZWZpbmVkIj9lLmxlZnQ6aS5sZWZ0LHcpOml9LHcud2lkdGg9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0PQpoPyhzPTNEZSx3KTpzfSx3LmhlaWdodD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZSx3KTpvfSw9CncuY29sb3I9M0Rm
dW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUudXRpbHMuZ2V0Q29sb3Io
biksdC5jbz0KbG9yKHUpLHcpOnV9LHcuc2hvd1hBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGE9M0RlLHcpOmF9PQosdy5zaG93WUF4aXM9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUsdyk6Zn0sdy5yaWdodEFsaWc9Cm5ZQXhpcz0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZSxyLm9yaWVudChlPyJy
aWdodCI6ImxlZj0KdCIpLHcpOmx9LHcuc3RhZ2dlckxhYmVscz0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSx3KTpjPQp9LHcudG9vbHRpcHM9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsdyk6aH0sdy50b29sdGlwQ289Cm50ZW50
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLHcpOnB9LHcubm9E
YXRhPTNEZnVuY3Rpbz0KbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0zRGUsdyk6bX0s
dy50cmFuc2l0aW9uRHVyYXRpb249M0RmdW5jdGlvbihlPQope3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyh5PTNEZSx3KTp5fSx3fSxlLm1vZGVscy5kaXN0cmlidXRpb249M0RmdW5jdGlvbig9Cil7
ZnVuY3Rpb24gbChlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBhPTNEbi0oaT0zRD0z
RD0zRCJ4Ij90LmxlZnQrdD0KLnJpZ2h0OnQudG9wK3QuYm90dG9tKSxsPTNEaT0zRD0zRCJ4Ij8i
eSI6IngiLGM9M0RkMy5zZWxlY3QodGhpcyk7Zj0zRGZ8fHU7PQp2YXIgaD0zRGMuc2VsZWN0QWxs
KCJnLm52LWRpc3RyaWJ1dGlvbiIpLmRhdGEoW2VdKSxwPTNEaC5lbnRlcigpLmFwcGVuZCgiZyI9
CikuYXR0cigiY2xhc3MiLCJudmQzIG52LWRpc3RyaWJ1dGlvbiIpLGQ9M0RwLmFwcGVuZCgiZyIp
LHY9M0RoLnNlbGVjdCgiZyIpOz0KaC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0Lmxl
ZnQrIiwiK3QudG9wKyIpIik7dmFyIG09M0R2LnNlbGVjdEFsbCgiPQpnLm52LWRpc3QiKS5kYXRh
KGZ1bmN0aW9uKGUpe3JldHVybiBlfSxmdW5jdGlvbihlKXtyZXR1cm4gZS5rZXl9KTttLmVudGVy
KCk9Ci5hcHBlbmQoImciKSxtLmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiJudi1k
aXN0IG52LXNlcmllcy0iK3R9KS5zdD0KeWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXJu
IG8oZSx0KX0pO3ZhciBnPTNEbS5zZWxlY3RBbGwoImxpbmUubnYtZGlzPQp0IitpKS5kYXRhKGZ1
bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlc30pO2cuZW50ZXIoKS5hcHBlbmQoImxpbmUiKS5hdHRy
KGkrIjE9CiIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZihzKGUsdCkpfSkuYXR0cihpKyIyIixmdW5j
dGlvbihlLHQpe3JldHVybiBmKHMoZSx0KT0KKX0pLG0uZXhpdCgpLnNlbGVjdEFsbCgibGluZS5u
di1kaXN0IitpKS5hdHRyKGkrIjEiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHUoPQpzKGUsdCkpfSku
YXR0cihpKyIyIixmdW5jdGlvbihlLHQpe3JldHVybiB1KHMoZSx0KSl9KS5zdHlsZSgic3Ryb2tl
LW9wYWNpdHk9CiIsMCkucmVtb3ZlKCksZy5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1
cm4ibnYtZGlzdCIraSsiIG52LWRpc3QiK2krIj0KLSIrdH0pLmF0dHIobCsiMSIsMCkuYXR0cihs
KyIyIixyKSxnLmF0dHIoaSsiMSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdShzKGUsPQp0KSl9KS5h
dHRyKGkrIjIiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHUocyhlLHQpKX0pLGY9M0R1LmNvcHkoKX0p
LGx9dmFyIHQ9M0Q9Cnt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0sbj0zRDQwMCxyPTNE
OCxpPTNEIngiLHM9M0RmdW5jdGlvbihlKXtyZXR1cj0KbiBlW2ldfSxvPTNEZS51dGlscy5kZWZh
dWx0Q29sb3IoKSx1PTNEZDMuc2NhbGUubGluZWFyKCksYSxmO3JldHVybiBsLm9wdGlvPQpucz0z
RGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChsKSxsLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGU9Cm5ndGg/KHQudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQi
P2UudG9wOnQudG9wLHQucmlnaHQ9M0R0eXBlb2YgZS5yaT0KZ2h0IT0zRCJ1bmRlZmluZWQiP2Uu
cmlnaHQ6dC5yaWdodCx0LmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkPQoi
P2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/
ZS5sZWZ0OnQubGVmdCxsKTo9CnR9LGwud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8obj0zRGUsbCk6bn0sbC5heGlzPTNEZnVuYz0KdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oaT0zRGUsbCk6aX0sbC5zaXplPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
PQpndW1lbnRzLmxlbmd0aD8ocj0zRGUsbCk6cn0sbC5nZXREYXRhPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg9Cj8ocz0zRGQzLmZ1bmN0b3IoZSksbCk6c30sbC5zY2FsZT0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PQo9M0RlLGwpOnV9LGwuY29s
b3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUudXRpbHMuZ2V0
Q289Cmxvcih0KSxsKTpvfSxsfSxlLm1vZGVscy5oaXN0b3JpY2FsQmFyQ2hhcnQ9M0RmdW5jdGlv
bigpe2Z1bmN0aW9uIHgoZSl7cmV0dT0Kcm4gZS5lYWNoKGZ1bmN0aW9uKGQpe3ZhciBFPTNEZDMu
c2VsZWN0KHRoaXMpLFQ9M0R0aGlzLE49M0QodXx8cGFyc2VJbnQoRS5zPQp0eWxlKCJ3aWR0aCIp
KXx8OTYwKS1zLmxlZnQtcy5yaWdodCxDPTNEKGF8fHBhcnNlSW50KEUuc3R5bGUoImhlaWdodCIp
KXx8NDA9CjApLXMudG9wLXMuYm90dG9tO3gudXBkYXRlPTNEZnVuY3Rpb24oKXtFLmNhbGwoeCl9
LHguY29udGFpbmVyPTNEdGhpcyxnLmRpcz0KYWJsZWQ9M0RkLm1hcChmdW5jdGlvbihlKXtyZXR1
cm4hIWUuZGlzYWJsZWR9KTtpZigheSl7dmFyIGs7eT0zRHt9O2ZvcihrIGluPQogZylnW2tdaW5z
dGFuY2VvZiBBcnJheT95W2tdPTNEZ1trXS5zbGljZSgwKTp5W2tdPTNEZ1trXX1pZighZHx8IWQu
bGVuZ3RofHw9CiFkLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubGVuZ3RofSku
bGVuZ3RoKXt2YXIgTD0zREUuc2VsZWN0QWxsKD0KIi5udi1ub0RhdGEiKS5kYXRhKFtiXSk7cmV0
dXJuIEwuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52ZDMgPQpudi1ub0Rh
dGEiKS5hdHRyKCJkeSIsIi0uN2VtIikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiksTC5h
dHRyKCJ4IixzLmw9CmVmdCtOLzIpLmF0dHIoInkiLHMudG9wK0MvMikudGV4dChmdW5jdGlvbihl
KXtyZXR1cm4gZX0pLHh9RS5zZWxlY3RBbGwoIi5udj0KLW5vRGF0YSIpLnJlbW92ZSgpLHY9M0R0
LnhTY2FsZSgpLG09M0R0LnlTY2FsZSgpO3ZhciBBPTNERS5zZWxlY3RBbGwoImcubnYtPQp3cmFw
Lm52LWhpc3RvcmljYWxCYXJDaGFydCIpLmRhdGEoW2RdKSxPPTNEQS5lbnRlcigpLmFwcGVuZCgi
ZyIpLmF0dHIoImNsYXM9CnMiLCJudmQzIG52LXdyYXAgbnYtaGlzdG9yaWNhbEJhckNoYXJ0Iiku
YXBwZW5kKCJnIiksTT0zREEuc2VsZWN0KCJnIik7Ty5hcD0KcGVuZCgiZyIpLmF0dHIoImNsYXNz
IiwibnYteCBudi1heGlzIiksTy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkgbnYtPQph
eGlzIiksTy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWJhcnNXcmFwIiksTy5hcHBlbmQo
ImciKS5hdHRyKCJjbGFzcyI9CiwibnYtbGVnZW5kV3JhcCIpLGYmJihpLndpZHRoKE4pLE0uc2Vs
ZWN0KCIubnYtbGVnZW5kV3JhcCIpLmRhdHVtKGQpLmNhbGwoaT0KKSxzLnRvcCE9M0RpLmhlaWdo
dCgpJiYocy50b3A9M0RpLmhlaWdodCgpLEM9M0QoYXx8cGFyc2VJbnQoRS5zdHlsZSgiaGVpZ2h0
PQoiKSl8fDQwMCktcy50b3Atcy5ib3R0b20pLEEuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0
dHIoInRyYW5zZm9ybSIsInRyYW49CnNsYXRlKDAsIisgLXMudG9wKyIpIikpLEEuYXR0cigidHJh
bnNmb3JtIiwidHJhbnNsYXRlKCIrcy5sZWZ0KyIsIitzLnRvcCsiKT0KIiksaCYmTS5zZWxlY3Qo
Ii5udi15Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitOKyIsMCkiKSx0
LndpPQpkdGgoTikuaGVpZ2h0KEMpLmNvbG9yKGQubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUu
Y29sb3J8fG8oZSx0KX0pLmZpbHRlcig9CmZ1bmN0aW9uKGUsdCl7cmV0dXJuIWRbdF0uZGlzYWJs
ZWR9KSk7dmFyIF89M0RNLnNlbGVjdCgiLm52LWJhcnNXcmFwIikuZGF0dT0KbShkLmZpbHRlcihm
dW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKTtfLmNhbGwodCksbCYmKG4uc2NhbGUodiku
dGlja1NpPQp6ZSgtQywwKSxNLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9y
bSIsInRyYW5zbGF0ZSgwLCIrbS5yYW5nZSg9CilbMF0rIikiKSxNLnNlbGVjdCgiLm52LXgubnYt
YXhpcyIpLmNhbGwobikpLGMmJihyLnNjYWxlKG0pLnRpY2tzKEMvMzYpLnRpYz0Ka1NpemUoLU4s
MCksTS5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5jYWxsKHIpKSxpLmRpc3BhdGNoLm9uKCJsZWdl
bmRDbGljayIsPQpmdW5jdGlvbih0LG4pe3QuZGlzYWJsZWQ9M0QhdC5kaXNhYmxlZCxkLmZpbHRl
cihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmw9CmVkfSkubGVuZ3RofHxkLm1hcChmdW5jdGlv
bihlKXtyZXR1cm4gZS5kaXNhYmxlZD0zRCExLEEuc2VsZWN0QWxsKCIubnYtc2VyaT0KZXMiKS5j
bGFzc2VkKCJkaXNhYmxlZCIsITEpLGV9KSxnLmRpc2FibGVkPTNEZC5tYXAoZnVuY3Rpb24oZSl7
cmV0dXJuISFlLmRpPQpzYWJsZWR9KSx3LnN0YXRlQ2hhbmdlKGcpLGUuY2FsbCh4KX0pLGkuZGlz
cGF0Y2gub24oImxlZ2VuZERibGNsaWNrIixmdW5jdGk9Cm9uKGUpe2QuZm9yRWFjaChmdW5jdGlv
bihlKXtlLmRpc2FibGVkPTNEITB9KSxlLmRpc2FibGVkPTNEITEsZy5kaXNhYmxlZD0zRD0KZC5t
YXAoZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSksdy5zdGF0ZUNoYW5nZShnKSx4LnVw
ZGF0ZSgpfSksdy5vbigiPQp0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7cCYmUyhlLFQucGFyZW50
Tm9kZSl9KSx3Lm9uKCJjaGFuZ2VTdGF0ZSIsZnVuY3Rpb249CihlKXt0eXBlb2YgZS5kaXNhYmxl
ZCE9M0QidW5kZWZpbmVkIiYmKGQuZm9yRWFjaChmdW5jdGlvbih0LG4pe3QuZGlzYWJsZWQ9Cj0z
RGUuZGlzYWJsZWRbbl19KSxnLmRpc2FibGVkPTNEZS5kaXNhYmxlZCkseC51cGRhdGUoKX0pfSks
eH12YXIgdD0zRGUubW9kZT0KbHMuaGlzdG9yaWNhbEJhcigpLG49M0RlLm1vZGVscy5heGlzKCks
cj0zRGUubW9kZWxzLmF4aXMoKSxpPTNEZS5tb2RlbHMubGVnPQplbmQoKSxzPTNEe3RvcDozMCxy
aWdodDo5MCxib3R0b206NTAsbGVmdDo5MH0sbz0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCksdT0K
PTNEbnVsbCxhPTNEbnVsbCxmPTNEITEsbD0zRCEwLGM9M0QhMCxoPTNEITEscD0zRCEwLGQ9M0Rm
dW5jdGlvbihlLHQsbixyLGkpPQp7cmV0dXJuIjxoMz4iK2UrIjwvaDM+IisiPHA+IituKyIgYXQg
Iit0KyI8L3A+In0sdixtLGc9M0R7fSx5PTNEbnVsbCxiPTNEIk49Cm8gRGF0YSBBdmFpbGFibGUu
Iix3PTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhpZGUiLCJzdGF0ZUNoYW5n
ZT0KIiwiY2hhbmdlU3RhdGUiKSxFPTNEMDtuLm9yaWVudCgiYm90dG9tIikudGlja1BhZGRpbmco
Nyksci5vcmllbnQoaD8icmlnaHQiPQo6ImxlZnQiKTt2YXIgUz0zRGZ1bmN0aW9uKGkscyl7aWYo
cyl7dmFyIG89M0RkMy5zZWxlY3Qocykuc2VsZWN0KCJzdmciKSx1PQo9M0RvLm5vZGUoKT9vLmF0
dHIoInZpZXdCb3giKTpudWxsO2lmKHUpe3U9M0R1LnNwbGl0KCIgIik7dmFyIGE9M0RwYXJzZUlu
dCg9Cm8uc3R5bGUoIndpZHRoIikpL3VbMl07aS5wb3NbMF09M0RpLnBvc1swXSphLGkucG9zWzFd
PTNEaS5wb3NbMV0qYX19dmFyIGY9Cj0zRGkucG9zWzBdKyhzLm9mZnNldExlZnR8fDApLGw9M0Rp
LnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLGM9M0RuLnRpY2tGb3JtYT0KdCgpKHQueCgpKGkucG9p
bnQsaS5wb2ludEluZGV4KSksaD0zRHIudGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbnQsaS5wb2lu
dEluPQpkZXgpKSxwPTNEZChpLnNlcmllcy5rZXksYyxoLGkseCk7ZS50b29sdGlwLnNob3coW2Ys
bF0scCxudWxsLG51bGwscyl9O3JldHU9CnJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92
ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rcz0KLmxlZnQsZS5wb3Nb
MV0rcy50b3BdLHcudG9vbHRpcFNob3coZSl9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2Vv
dXQudG9vPQpsdGlwIixmdW5jdGlvbihlKXt3LnRvb2x0aXBIaWRlKGUpfSksdy5vbigidG9vbHRp
cEhpZGUiLGZ1bmN0aW9uKCl7cCYmZS50b289Cmx0aXAuY2xlYW51cCgpfSkseC5kaXNwYXRjaD0z
RHcseC5iYXJzPTNEdCx4LmxlZ2VuZD0zRGkseC54QXhpcz0zRG4seC55QXhpcz0KPTNEcixkMy5y
ZWJpbmQoeCx0LCJkZWZpbmVkIiwiaXNBcmVhIiwieCIsInkiLCJzaXplIiwieFNjYWxlIiwieVNj
YWxlIiwieERvPQptYWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsImZvcmNlWCIsImZv
cmNlWSIsImludGVyYWN0aXZlIiwiY2xpcEVkZ2U9CiIsImNsaXBWb3Jvbm9pIiwiaWQiLCJpbnRl
cnBvbGF0ZSIsImhpZ2hsaWdodFBvaW50IiwiY2xlYXJIaWdobGlnaHRzIiwiaW50ZT0KcmFjdGl2
ZSIpLHgub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZCh4KSx4Lm1hcmdpbj0zRGZ1
bmN0aW9uKGUpe3JlPQp0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHMudG9wPTNEdHlwZW9mIGUudG9w
IT0zRCJ1bmRlZmluZWQiP2UudG9wOnMudG9wLHMucmk9CmdodD0zRHR5cGVvZiBlLnJpZ2h0IT0z
RCJ1bmRlZmluZWQiP2UucmlnaHQ6cy5yaWdodCxzLmJvdHRvbT0zRHR5cGVvZiBlLmJvdD0KdG9t
IT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnMuYm90dG9tLHMubGVmdD0zRHR5cGVvZiBlLmxlZnQh
PTNEInVuZGVmaW5lZCI/PQplLmxlZnQ6cy5sZWZ0LHgpOnN9LHgud2lkdGg9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUseCk9Cjp1fSx4LmhlaWdodD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZSx4KTphfSx4LmNvbG9yPTNEZj0K
dW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUudXRpbHMuZ2V0Q29sb3Io
dCksaS5jb2xvcihvKSx4KTpvPQp9LHguc2hvd0xlZ2VuZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhmPTNEZSx4KTpmfSx4LnNob3dYQXg9CmlzPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLHgpOmx9LHguc2hvd1lBeGlzPTNEZnVuY3Rp
bz0KbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUseCk6Y30seC5yaWdodEFsaWdu
WUF4aXM9M0RmdW5jdGlvbihlKXtyPQpldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxyLm9y
aWVudChlPyJyaWdodCI6ImxlZnQiKSx4KTpofSx4LnRvb2x0aXBzPQo9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUseCk6cH0seC50b29sdGlwQ29udGVudD0zRGZ1
bmM9CnRpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9M0RlLHgpOmR9LHguc3RhdGU9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYT0Kcmd1bWVudHMubGVuZ3RoPyhnPTNEZSx4KTpnfSx4LmRl
ZmF1bHRTdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMuPQpsZW5ndGg/KHk9M0Rl
LHgpOnl9LHgubm9EYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9
M0RlLHg9Cik6Yn0seC50cmFuc2l0aW9uRHVyYXRpb249M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oRT0zRGUseCk6RT0KfSx4fSxlLm1vZGVscy5pbmRlbnRlZFRyZWU9M0Rm
dW5jdGlvbigpe2Z1bmN0aW9uIGcoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvPQpuKGUpe2Z1bmN0
aW9uIGsoZSx0LG4pe2QzLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO2lmKGQzLmV2ZW50LnNoaWZ0
S2V5JiYhbik9CnJldHVybiBkMy5ldmVudC5zaGlmdEtleT0zRCExLGUudmFsdWVzJiZlLnZhbHVl
cy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyhlLnZhbD0KdWVzfHxlLl92YWx1ZXMpJiZrKGUsMCwhMCl9
KSwhMDtpZighTyhlKSlyZXR1cm4hMDtlLnZhbHVlcz8oZS5fdmFsdWVzPTNEZS52PQphbHVlcyxl
LnZhbHVlcz0zRG51bGwpOihlLnZhbHVlcz0zRGUuX3ZhbHVlcyxlLl92YWx1ZXM9M0RudWxsKSxn
LnVwZGF0ZSgpfWY9CnVuY3Rpb24gTChlKXtyZXR1cm4gZS5fdmFsdWVzJiZlLl92YWx1ZXMubGVu
Z3RoP2g6ZS52YWx1ZXMmJmUudmFsdWVzLmxlbmd0aD0KP3A6IiJ9ZnVuY3Rpb24gQShlKXtyZXR1
cm4gZS5fdmFsdWVzJiZlLl92YWx1ZXMubGVuZ3RofWZ1bmN0aW9uIE8oZSl7dmFyIHQ9Cj0zRGUu
dmFsdWVzfHxlLl92YWx1ZXM7cmV0dXJuIHQmJnQubGVuZ3RofXZhciB0PTNEMSxuPTNEZDMuc2Vs
ZWN0KHRoaXMpLGk9Cj0zRGQzLmxheW91dC50cmVlKCkuY2hpbGRyZW4oZnVuY3Rpb24oZSl7cmV0
dXJuIGUudmFsdWVzfSkuc2l6ZShbcixmXSk7Zy51cD0KZGF0ZT0zRGZ1bmN0aW9uKCl7bi5jYWxs
KGcpfSxlWzBdfHwoZVswXT0zRHtrZXk6YX0pO3ZhciBzPTNEaS5ub2RlcyhlWzBdKSx5PQo9M0Rk
My5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJkaXYiKS5kYXRhKFtbc11dKSxiPTNEeS5lbnRlcigp
LmFwcGVuZCgiZGl2Iik9Ci5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1pbmRlbnRlZHRy
ZWUiKSx3PTNEYi5hcHBlbmQoInRhYmxlIiksRT0zRHkucz0KZWxlY3QoInRhYmxlIikuYXR0cigi
d2lkdGgiLCIxMDAlIikuYXR0cigiY2xhc3MiLGMpO2lmKG8pe3ZhciBTPTNEdy5hcHBlbmQoPQoi
dGhlYWQiKSx4PTNEUy5hcHBlbmQoInRyIik7bC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3guYXBwZW5k
KCJ0aCIpLmF0dHIoIndpZHQ9CmgiLGUud2lkdGg/ZS53aWR0aDoiMTAlIikuc3R5bGUoInRleHQt
YWxpZ24iLGUudHlwZT0zRD0zRCJudW1lcmljIj8icmlnaHQiOj0KImxlZnQiKS5hcHBlbmQoInNw
YW4iKS50ZXh0KGUubGFiZWwpfSl9dmFyIFQ9M0RFLnNlbGVjdEFsbCgidGJvZHkiKS5kYXRhKGZ1
PQpuY3Rpb24oZSl7cmV0dXJuIGV9KTtULmVudGVyKCkuYXBwZW5kKCJ0Ym9keSIpLHQ9M0RkMy5t
YXgocyxmdW5jdGlvbihlKXtyZXQ9CnVybiBlLmRlcHRofSksaS5zaXplKFtyLHQqZl0pO3ZhciBO
PTNEVC5zZWxlY3RBbGwoInRyIikuZGF0YShmdW5jdGlvbihlKXtyZT0KdHVybiBlLmZpbHRlcihm
dW5jdGlvbihlKXtyZXR1cm4gdSYmIWUuY2hpbGRyZW4/dShlKTohMH0pfSxmdW5jdGlvbihlLHQp
e3JlPQp0dXJuIGUuaWR8fGUuaWR8fCsrbX0pO04uZXhpdCgpLnJlbW92ZSgpLE4uc2VsZWN0KCJp
bWcubnYtdHJlZWljb24iKS5hdHRyKCI9CnNyYyIsTCkuY2xhc3NlZCgiZm9sZGVkIixBKTt2YXIg
Qz0zRE4uZW50ZXIoKS5hcHBlbmQoInRyIik7bC5mb3JFYWNoKGZ1bmN0aT0Kb24oZSx0KXt2YXIg
bj0zREMuYXBwZW5kKCJ0ZCIpLnN0eWxlKCJwYWRkaW5nLWxlZnQiLGZ1bmN0aW9uKGUpe3JldHVy
bih0PzA6PQplLmRlcHRoKmYrMTIrKEwoZSk/MDoxNikpKyJweCJ9LCJpbXBvcnRhbnQiKS5zdHls
ZSgidGV4dC1hbGlnbiIsZS50eXBlPTNEPQo9M0QibnVtZXJpYyI/InJpZ2h0IjoibGVmdCIpO3Q9
M0Q9M0QwJiZuLmFwcGVuZCgiaW1nIikuY2xhc3NlZCgibnYtdHJlZWljb249CiIsITApLmNsYXNz
ZWQoIm52LWZvbGRlZCIsQSkuYXR0cigic3JjIixMKS5zdHlsZSgid2lkdGgiLCIxNHB4Iikuc3R5
bGUoImhlaT0KZ2h0IiwiMTRweCIpLnN0eWxlKCJwYWRkaW5nIiwiMCAxcHgiKS5zdHlsZSgiZGlz
cGxheSIsZnVuY3Rpb24oZSl7cmV0dXJuIEwoPQplKT8iaW5saW5lLWJsb2NrIjoibm9uZSJ9KS5v
bigiY2xpY2siLGspLG4uZWFjaChmdW5jdGlvbihuKXshdCYmdihuKT9kMy5zZWw9CmVjdCh0aGlz
KS5hcHBlbmQoImEiKS5hdHRyKCJocmVmIix2KS5hdHRyKCJjbGFzcyIsZDMuZnVuY3RvcihlLmNs
YXNzZXMpKS5hcD0KcGVuZCgic3BhbiIpOmQzLnNlbGVjdCh0aGlzKS5hcHBlbmQoInNwYW4iKSxk
My5zZWxlY3QodGhpcykuc2VsZWN0KCJzcGFuIikuPQphdHRyKCJjbGFzcyIsZDMuZnVuY3Rvcihl
LmNsYXNzZXMpKS50ZXh0KGZ1bmN0aW9uKHQpe3JldHVybiBlLmZvcm1hdD90W2Uua2U9CnldP2Uu
Zm9ybWF0KHRbZS5rZXldKToiLSI6dFtlLmtleV18fCItIn0pfSksZS5zaG93Q291bnQmJihuLmFw
cGVuZCgic3BhbiIpLj0KYXR0cigiY2xhc3MiLCJudi1jaGlsZHJlbkNvdW50IiksTi5zZWxlY3RB
bGwoInNwYW4ubnYtY2hpbGRyZW5Db3VudCIpLnRleHQoPQpmdW5jdGlvbihlKXtyZXR1cm4gZS52
YWx1ZXMmJmUudmFsdWVzLmxlbmd0aHx8ZS5fdmFsdWVzJiZlLl92YWx1ZXMubGVuZ3RoPyI9Cigi
KyhlLnZhbHVlcyYmZS52YWx1ZXMuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiB1P3UoZSk6ITB9
KS5sZW5ndGh8fGUuX3ZhbD0KdWVzJiZlLl92YWx1ZXMuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVy
biB1P3UoZSk6ITB9KS5sZW5ndGh8fDApKyIpIjoiIn0pKX0pPQosTi5vcmRlcigpLm9uKCJjbGlj
ayIsZnVuY3Rpb24oZSl7ZC5lbGVtZW50Q2xpY2soe3Jvdzp0aGlzLGRhdGE6ZSxwb3M6W2UueCw9
CmUueV19KX0pLm9uKCJkYmxjbGljayIsZnVuY3Rpb24oZSl7ZC5lbGVtZW50RGJsY2xpY2soe3Jv
dzp0aGlzLGRhdGE6ZSxwb3M6Wz0KZS54LGUueV19KX0pLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9u
KGUpe2QuZWxlbWVudE1vdXNlb3Zlcih7cm93OnRoaXMsZGF0YTplPQoscG9zOltlLngsZS55XX0p
fSkub24oIm1vdXNlb3V0IixmdW5jdGlvbihlKXtkLmVsZW1lbnRNb3VzZW91dCh7cm93OnRoaXMs
ZGE9CnRhOmUscG9zOltlLngsZS55XX0pfSl9KSxnfXZhciB0PTNEe3RvcDowLHJpZ2h0OjAsYm90
dG9tOjAsbGVmdDowfSxuPTNEOTYwLD0Kcj0zRDUwMCxpPTNEZS51dGlscy5kZWZhdWx0Q29sb3Io
KSxzPTNETWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjFlNCksbz0zRCEwPQosdT0zRCExLGE9M0Qi
Tm8gRGF0YSBBdmFpbGFibGUuIixmPTNEMjAsbD0zRFt7a2V5OiJrZXkiLGxhYmVsOiJOYW1lIix0
eXBlOiI9CnRleHQifV0sYz0zRG51bGwsaD0zRCJpbWFnZXMvZ3JleS1wbHVzLnBuZyIscD0zRCJp
bWFnZXMvZ3JleS1taW51cy5wbmciLGQ9Cj0zRGQzLmRpc3BhdGNoKCJlbGVtZW50Q2xpY2siLCJl
bGVtZW50RGJsY2xpY2siLCJlbGVtZW50TW91c2VvdmVyIiwiZWxlbWVudD0KTW91c2VvdXQiKSx2
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUudXJsfSxtPTNEMDtyZXR1cm4gZy5vcHRpb25zPTNEZS51
dGlscy5vPQpwdGlvbnNGdW5jLmJpbmQoZyksZy5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8odC50b3A9M0Q9CnR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9l
LnRvcDp0LnRvcCx0LnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaT0KbmVkIj9lLnJp
Z2h0OnQucmlnaHQsdC5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5i
b3R0b206dC5iPQpvdHRvbSx0LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2Uu
bGVmdDp0LmxlZnQsZyk6dH0sZy53aWR0aD0zRGY9CnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KG49M0RlLGcpOm59LGcuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dT0Kcm4gYXJn
dW1lbnRzLmxlbmd0aD8ocj0zRGUsZyk6cn0sZy5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBh
cmd1bWVudHMubGVuPQpndGg/KGk9M0RlLnV0aWxzLmdldENvbG9yKHQpLHNjYXR0ZXIuY29sb3Io
aSksZyk6aX0sZy5pZD0zRGZ1bmN0aW9uKGUpe3JldHU9CnJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9
M0RlLGcpOnN9LGcuaGVhZGVyPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZT0Kbmd0
aD8obz0zRGUsZyk6b30sZy5ub0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oYT0zRGUsZyk6PQphfSxnLmZpbHRlclplcm89M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8odT0zRGUsZyk6dX0sZy5jb2x1bW49CnM9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGUsZyk6bH0sZy50YWJsZUNsYXNzPTNEZnVuY3Rpbz0K
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUsZyk6Y30sZy5pY29uT3Blbj0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhPQpyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLGcpOmh9LGcuaWNvbkNs
b3NlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW49Cmd0aD8ocD0zRGUsZyk6cH0s
Zy5nZXRVcmw9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj0zRGUsZyk6
dj0KfSxnfSxlLm1vZGVscy5sZWdlbmQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIGMoaCl7cmV0dXJu
IGguZWFjaChmdW5jdGlvbihjKXt2PQphciBoPTNEbi10LmxlZnQtdC5yaWdodCxwPTNEZDMuc2Vs
ZWN0KHRoaXMpLGQ9M0RwLnNlbGVjdEFsbCgiZy5udi1sZWdlbmQiKS49CmRhdGEoW2NdKSx2PTNE
ZC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1sZWdlbmQiKS5hcHBl
bmQoIj0KZyIpLG09M0RkLnNlbGVjdCgiZyIpO2QuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRl
KCIrdC5sZWZ0KyIsIit0LnRvcCsiKSIpPQo7dmFyIGc9M0RtLnNlbGVjdEFsbCgiLm52LXNlcmll
cyIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSx5PTNEZy5lbnRlcig9CikuYXBwZW5kKCJn
IikuYXR0cigiY2xhc3MiLCJudi1zZXJpZXMiKS5vbigibW91c2VvdmVyIixmdW5jdGlvbihlLHQp
e2wubGVnZT0KbmRNb3VzZW92ZXIoZSx0KX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oZSx0KXts
LmxlZ2VuZE1vdXNlb3V0KGUsdCl9KS5vbigiPQpjbGljayIsZnVuY3Rpb24oZSx0KXtsLmxlZ2Vu
ZENsaWNrKGUsdCksYSYmKGY/KGMuZm9yRWFjaChmdW5jdGlvbihlKXtlLmRpc2E9CmJsZWQ9M0Qh
MH0pLGUuZGlzYWJsZWQ9M0QhMSk6KGUuZGlzYWJsZWQ9M0QhZS5kaXNhYmxlZCxjLmV2ZXJ5KGZ1
bmN0aW9uKGUpez0KcmV0dXJuIGUuZGlzYWJsZWR9KSYmYy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2Uu
ZGlzYWJsZWQ9M0QhMX0pKSxsLnN0YXRlQ2hhbmdlPQooe2Rpc2FibGVkOmMubWFwKGZ1bmN0aW9u
KGUpe3JldHVybiEhZS5kaXNhYmxlZH0pfSkpfSkub24oImRibGNsaWNrIixmdW5jdGk9Cm9uKGUs
dCl7bC5sZWdlbmREYmxjbGljayhlLHQpLGEmJihjLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5kaXNh
YmxlZD0zRCEwfSksZT0KLmRpc2FibGVkPTNEITEsbC5zdGF0ZUNoYW5nZSh7ZGlzYWJsZWQ6Yy5t
YXAoZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkPQp9KX0pKX0pO3kuYXBwZW5kKCJjaXJj
bGUiKS5zdHlsZSgic3Ryb2tlLXdpZHRoIiwyKS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZC09CnN5
bWJvbCIpLmF0dHIoInIiLDUpLHkuYXBwZW5kKCJ0ZXh0IikuYXR0cigidGV4dC1hbmNob3IiLCJz
dGFydCIpLmF0dHIoImNsYT0Kc3MiLCJudi1sZWdlbmQtdGV4dCIpLmF0dHIoImR5IiwiLjMyZW0i
KS5hdHRyKCJkeCIsIjgiKSxnLmNsYXNzZWQoImRpc2FibGVkPQoiLGZ1bmN0aW9uKGUpe3JldHVy
biBlLmRpc2FibGVkfSksZy5leGl0KCkucmVtb3ZlKCksZy5zZWxlY3QoImNpcmNsZSIpLnN0eWw9
CmUoImZpbGwiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fHMoZSx0KX0pLnN0eWxlKCJz
dHJva2UiLGZ1bmN0aW9uKGUsdD0KKXtyZXR1cm4gZS5jb2xvcnx8cyhlLHQpfSksZy5zZWxlY3Qo
InRleHQiKS50ZXh0KGkpO2lmKG8pe3ZhciBiPTNEW107Zy5lYWNoPQooZnVuY3Rpb24odCxuKXt2
YXIgcj0zRGQzLnNlbGVjdCh0aGlzKS5zZWxlY3QoInRleHQiKSxpO3RyeXtpPTNEci5nZXRDb21w
dXQ9CmVkVGV4dExlbmd0aCgpO2lmKGk8PTNEMCl0aHJvdyBFcnJvcigpfWNhdGNoKHMpe2k9M0Rl
LnV0aWxzLmNhbGNBcHByb3hUZXh0Vz0KaWR0aChyKX1iLnB1c2goaSsyOCl9KTt2YXIgdz0zRDAs
RT0zRDAsUz0zRFtdO3doaWxlKEU8aCYmdzxiLmxlbmd0aClTW3ddPTNEPQpiW3ddLEUrPTNEYlt3
KytdO3c9M0Q9M0Q9M0QwJiYodz0zRDEpO3doaWxlKEU+aCYmdz4xKXtTPTNEW10sdy0tO2Zvcih2
YXIgeD0KPTNEMDt4PGIubGVuZ3RoO3grKyliW3hdPihTW3gld118fDApJiYoU1t4JXddPTNEYlt4
XSk7RT0zRFMucmVkdWNlKGZ1bmN0aW9uPQooZSx0LG4scil7cmV0dXJuIGUrdH0pfXZhciBUPTNE
W107Zm9yKHZhciBOPTNEMCxDPTNEMDtOPHc7TisrKVRbTl09M0RDLEMrPQo9M0RTW05dO2cuYXR0
cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitUW3Qld10rIiwi
Kyg1K009CmF0aC5mbG9vcih0L3cpKjIwKSsiKSJ9KSx1P20uYXR0cigidHJhbnNmb3JtIiwidHJh
bnNsYXRlKCIrKG4tdC5yaWdodC1FKSsiLD0KIit0LnRvcCsiKSIpOm0uYXR0cigidHJhbnNmb3Jt
IiwidHJhbnNsYXRlKDAsIit0LnRvcCsiKSIpLHI9M0R0LnRvcCt0LmJvdHRvPQptK01hdGguY2Vp
bChiLmxlbmd0aC93KSoyMH1lbHNle3ZhciBrPTNENSxMPTNENSxBPTNEMCxPO2cuYXR0cigidHJh
bnNmb3JtIiw9CmZ1bmN0aW9uKGUscil7dmFyIGk9M0RkMy5zZWxlY3QodGhpcykuc2VsZWN0KCJ0
ZXh0Iikubm9kZSgpLmdldENvbXB1dGVkVGV4dD0KTGVuZ3RoKCkrMjg7cmV0dXJuIE89M0RMLG48
dC5sZWZ0K3QucmlnaHQrTytpJiYoTD0zRE89M0Q1LGsrPTNEMjApLEwrPTNEaSxMPQo+QSYmKEE9
M0RMKSwidHJhbnNsYXRlKCIrTysiLCIraysiKSJ9KSxtLmF0dHIoInRyYW5zZm9ybSIsInRyYW5z
bGF0ZSgiKyhuLXQ9Ci5yaWdodC1BKSsiLCIrdC50b3ArIikiKSxyPTNEdC50b3ArdC5ib3R0b20r
aysxNX19KSxjfXZhciB0PTNEe3RvcDo1LHJpZ2h0Oj0KMCxib3R0b206NSxsZWZ0OjB9LG49M0Q0
MDAscj0zRDIwLGk9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5rZXl9LHM9M0RlLnV0aWxzPQouZGVm
YXVsdENvbG9yKCksbz0zRCEwLHU9M0QhMCxhPTNEITAsZj0zRCExLGw9M0RkMy5kaXNwYXRjaCgi
bGVnZW5kQ2xpY2siLCI9CmxlZ2VuZERibGNsaWNrIiwibGVnZW5kTW91c2VvdmVyIiwibGVnZW5k
TW91c2VvdXQiLCJzdGF0ZUNoYW5nZSIpO3JldHVybiBjLj0KZGlzcGF0Y2g9M0RsLGMub3B0aW9u
cz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChjKSxjLm1hcmdpbj0zRGZ1bmN0aW9uKGUpPQp7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmlu
ZWQiP2UudG9wOnQudG9wLHQ9Ci5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQi
P2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT0zRHR5cGVvZiBlLj0KYm90dG9tIT0zRCJ1bmRlZmlu
ZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5l
PQpkIj9lLmxlZnQ6dC5sZWZ0LGMpOnR9LGMud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8obj0zRGU9CixjKTpufSxjLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZSxjKTpyfSxjLmtleT0zRD0KZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9M0RlLGMpOml9LGMuY29sb3I9M0RmdW5jdGlvbih0KXty
ZXR1PQpybiBhcmd1bWVudHMubGVuZ3RoPyhzPTNEZS51dGlscy5nZXRDb2xvcih0KSxjKTpzfSxj
LmFsaWduPTNEZnVuY3Rpb24oZSl7cmU9CnR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsYyk6
b30sYy5yaWdodEFsaWduPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZT0KbnRzLmxlbmd0aD8o
dT0zRGUsYyk6dX0sYy51cGRhdGVTdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPQo/KGE9M0RlLGMpOmF9LGMucmFkaW9CdXR0b25Nb2RlPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0Q9CmUsYyk6Zn0sY30sZS5tb2RlbHMubGluZT0zRGZ1
bmN0aW9uKCl7ZnVuY3Rpb24gbShnKXtyZXR1cm4gZy5lYWNoKGZ1bmN0aW9uKD0KbSl7dmFyIGc9
M0RyLW4ubGVmdC1uLnJpZ2h0LGI9M0RpLW4udG9wLW4uYm90dG9tLHc9M0RkMy5zZWxlY3QodGhp
cyk7Yz0zRHQuPQp4U2NhbGUoKSxoPTNEdC55U2NhbGUoKSxkPTNEZHx8Yyx2PTNEdnx8aDt2YXIg
RT0zRHcuc2VsZWN0QWxsKCJnLm52LXdyYXAubnY9Ci1saW5lIikuZGF0YShbbV0pLFM9M0RFLmVu
dGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbD0KaW5lIiks
VD0zRFMuYXBwZW5kKCJkZWZzIiksTj0zRFMuYXBwZW5kKCJnIiksQz0zREUuc2VsZWN0KCJnIik7
Ti5hcHBlbmQoImciPQopLmF0dHIoImNsYXNzIiwibnYtZ3JvdXBzIiksTi5hcHBlbmQoImciKS5h
dHRyKCJjbGFzcyIsIm52LXNjYXR0ZXJXcmFwIiksRS49CmF0dHIoInRyYW5zZm9ybSIsInRyYW5z
bGF0ZSgiK24ubGVmdCsiLCIrbi50b3ArIikiKSx0LndpZHRoKGcpLmhlaWdodChiKTt2YT0KciBr
PTNERS5zZWxlY3QoIi5udi1zY2F0dGVyV3JhcCIpO2suY2FsbCh0KSxULmFwcGVuZCgiY2xpcFBh
dGgiKS5hdHRyKCJpZCIsPQoibnYtZWRnZS1jbGlwLSIrdC5pZCgpKS5hcHBlbmQoInJlY3QiKSxF
LnNlbGVjdCgiI252LWVkZ2UtY2xpcC0iK3QuaWQoKSsiIHI9CmVjdCIpLmF0dHIoIndpZHRoIixn
KS5hdHRyKCJoZWlnaHQiLGI+MD9iOjApLEMuYXR0cigiY2xpcC1wYXRoIixsPyJ1cmwoI252LT0K
ZWRnZS1jbGlwLSIrdC5pZCgpKyIpIjoiIiksay5hdHRyKCJjbGlwLXBhdGgiLGw/InVybCgjbnYt
ZWRnZS1jbGlwLSIrdC5pZCgpPQorIikiOiIiKTt2YXIgTD0zREUuc2VsZWN0KCIubnYtZ3JvdXBz
Iikuc2VsZWN0QWxsKCIubnYtZ3JvdXAiKS5kYXRhKGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGV9LGZ1
bmN0aW9uKGUpe3JldHVybiBlLmtleX0pO0wuZW50ZXIoKS5hcHBlbmQoImciKS5zdHlsZSgic3Ry
bz0Ka2Utb3BhY2l0eSIsMWUtNikuc3R5bGUoImZpbGwtb3BhY2l0eSIsMWUtNiksTC5leGl0KCku
cmVtb3ZlKCksTC5hdHRyKCJjbGFzPQpzIixmdW5jdGlvbihlLHQpe3JldHVybiJudi1ncm91cCBu
di1zZXJpZXMtIit0fSkuY2xhc3NlZCgiaG92ZXIiLGZ1bmN0aW9uKGU9Cil7cmV0dXJuIGUuaG92
ZXJ9KS5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcyhlLHQpfSkuc3R5bGUoInN0
cm9rZT0KIixmdW5jdGlvbihlLHQpe3JldHVybiBzKGUsdCl9KSxMLnN0eWxlKCJzdHJva2Utb3Bh
Y2l0eSIsMSkuc3R5bGUoImZpbGwtb3BhPQpjaXR5IiwuNSk7dmFyIEE9M0RMLnNlbGVjdEFsbCgi
cGF0aC5udi1hcmVhIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZihlKT89CltlXTpbXX0pO0Eu
ZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsIm52LWFyZWEiKS5hdHRyKCJkIixm
dW5jdGlvbj0KKHQpe3JldHVybiBkMy5zdmcuYXJlYSgpLmludGVycG9sYXRlKHApLmRlZmluZWQo
YSkueChmdW5jdGlvbih0LG4pe3JldHVybiBlPQoudXRpbHMuTmFOdG9aZXJvKGQobyh0LG4pKSl9
KS55MChmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyh2KHU9Cih0LG4pKSl9
KS55MShmdW5jdGlvbihlLHQpe3JldHVybiB2KGguZG9tYWluKClbMF08PTNEMD9oLmRvbWFpbigp
WzFdPj0zRDA/MD0KOmguZG9tYWluKClbMV06aC5kb21haW4oKVswXSl9KS5hcHBseSh0aGlzLFt0
LnZhbHVlc10pfSksTC5leGl0KCkuc2VsZWN0QWxsPQooInBhdGgubnYtYXJlYSIpLnJlbW92ZSgp
LEEuYXR0cigiZCIsZnVuY3Rpb24odCl7cmV0dXJuIGQzLnN2Zy5hcmVhKCkuaW50ZXI9CnBvbGF0
ZShwKS5kZWZpbmVkKGEpLngoZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8o
YyhvKHQsbikpKX0pLj0KeTAoZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8o
aCh1KHQsbikpKX0pLnkxKGZ1bmN0aW9uKGUsdCl7cmV0PQp1cm4gaChoLmRvbWFpbigpWzBdPD0z
RDA/aC5kb21haW4oKVsxXT49M0QwPzA6aC5kb21haW4oKVsxXTpoLmRvbWFpbigpWzBdKX09Ciku
YXBwbHkodGhpcyxbdC52YWx1ZXNdKX0pO3ZhciBPPTNETC5zZWxlY3RBbGwoInBhdGgubnYtbGlu
ZSIpLmRhdGEoZnVuY3Rpbz0KbihlKXtyZXR1cm5bZS52YWx1ZXNdfSk7Ty5lbnRlcigpLmFwcGVu
ZCgicGF0aCIpLmF0dHIoImNsYXNzIiwibnYtbGluZSIpLmF0PQp0cigiZCIsZDMuc3ZnLmxpbmUo
KS5pbnRlcnBvbGF0ZShwKS5kZWZpbmVkKGEpLngoZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGk9
CmxzLk5hTnRvWmVybyhkKG8odCxuKSkpfSkueShmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxz
Lk5hTnRvWmVybyh2KHUodCxuKT0KKSl9KSksTy5hdHRyKCJkIixkMy5zdmcubGluZSgpLmludGVy
cG9sYXRlKHApLmRlZmluZWQoYSkueChmdW5jdGlvbih0LG4pe3JlPQp0dXJuIGUudXRpbHMuTmFO
dG9aZXJvKGMobyh0LG4pKSl9KS55KGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9a
ZXI9Cm8oaCh1KHQsbikpKX0pKSxkPTNEYy5jb3B5KCksdj0zRGguY29weSgpfSksbX12YXIgdD0z
RGUubW9kZWxzLnNjYXR0ZXIoKSxuPQo9M0R7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9
LHI9M0Q5NjAsaT0zRDUwMCxzPTNEZS51dGlscy5kZWZhdWx0Q29sb3I9CigpLG89M0RmdW5jdGlv
bihlKXtyZXR1cm4gZS54fSx1PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0sYT0zRGZ1bmN0aW9u
KGUsdD0KKXtyZXR1cm4haXNOYU4odShlLHQpKSYmdShlLHQpIT0zRD0zRG51bGx9LGY9M0RmdW5j
dGlvbihlKXtyZXR1cm4gZS5hcmVhfSxsPQo9M0QhMSxjLGgscD0zRCJsaW5lYXIiO3Quc2l6ZSgx
Nikuc2l6ZURvbWFpbihbMTYsMjU2XSk7dmFyIGQsdjtyZXR1cm4gbS5kaXM9CnBhdGNoPTNEdC5k
aXNwYXRjaCxtLnNjYXR0ZXI9M0R0LGQzLnJlYmluZChtLHQsImlkIiwiaW50ZXJhY3RpdmUiLCJz
aXplIiwieD0KU2NhbGUiLCJ5U2NhbGUiLCJ6U2NhbGUiLCJ4RG9tYWluIiwieURvbWFpbiIsInhS
YW5nZSIsInlSYW5nZSIsInNpemVEb21haW4iPQosImZvcmNlWCIsImZvcmNlWSIsImZvcmNlU2l6
ZSIsImNsaXBWb3Jvbm9pIiwidXNlVm9yb25vaSIsImNsaXBSYWRpdXMiLCJwYWQ9CkRhdGEiLCJo
aWdobGlnaHRQb2ludCIsImNsZWFySGlnaGxpZ2h0cyIpLG0ub3B0aW9ucz0zRGUudXRpbHMub3B0
aW9uc0Z1bmMuYj0KaW5kKG0pLG0ubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KG4udG9wPTNEdHlwZW9mIGUudG9wPQohPTNEInVuZGVmaW5lZCI/ZS50b3A6bi50
b3Asbi5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ9CjpuLnJp
Z2h0LG4uYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOm4u
Ym90dG9tLG4ubGVmdD0KPTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6bi5s
ZWZ0LG0pOm59LG0ud2lkdGg9M0RmdW5jdGlvbihlKXtyPQpldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhyPTNEZSxtKTpyfSxtLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHM9Ci5s
ZW5ndGg/KGk9M0RlLG0pOml9LG0ueD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhvPTNEZSx0LngoZT0KKSxtKTpvfSxtLnk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8odT0zRGUsdC55KGUpLG0pOnV9LG0uY2xpPQpwRWRnZT0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZSxtKTpsfSxtLmNvbG9yPTNEZnVuY3Rpb249
CihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0zRGUudXRpbHMuZ2V0Q29sb3IobiksdC5j
b2xvcihzKSxtKTpzfSxtLmludD0KZXJwb2xhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8ocD0zRGUsbSk6cH0sbS5kZWZpbmVkPTNEZnVuPQpjdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oYT0zRGUsbSk6YX0sbS5pc0FyZWE9M0RmdW5jdGlvbihlKXtyZXR1
cm49CiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZDMuZnVuY3RvcihlKSxtKTpmfSxtfSxlLm1vZGVs
cy5saW5lQ2hhcnQ9M0RmdW5jdGlvbj0KKCl7ZnVuY3Rpb24gTihtKXtyZXR1cm4gbS5lYWNoKGZ1
bmN0aW9uKG0pe3ZhciB4PTNEZDMuc2VsZWN0KHRoaXMpLEM9M0R0aGlzPQosaz0zRChhfHxwYXJz
ZUludCh4LnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS1vLmxlZnQtby5yaWdodCxMPTNEKGZ8fHBhcnNl
SW50KHg9Ci5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLW8udG9wLW8uYm90dG9tO04udXBkYXRlPTNE
ZnVuY3Rpb24oKXt4LmNhbGwoTil9LE4uYz0Kb250YWluZXI9M0R0aGlzLGIuZGlzYWJsZWQ9M0Rt
Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlzYWJsZWR9KTtpZighdyl7PQp2YXIgQTt3PTNE
e307Zm9yKEEgaW4gYiliW0FdaW5zdGFuY2VvZiBBcnJheT93W0FdPTNEYltBXS5zbGljZSgwKTp3
W0FdPTNEYls9CkFdfWlmKCFtfHwhbS5sZW5ndGh8fCFtLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1
cm4gZS52YWx1ZXMubGVuZ3RofSkubGVuZ3RoKT0Ke3ZhciBPPTNEeC5zZWxlY3RBbGwoIi5udi1u
b0RhdGEiKS5kYXRhKFtFXSk7cmV0dXJuIE8uZW50ZXIoKS5hcHBlbmQoInRleHQiPQopLmF0dHIo
ImNsYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2VtIikuc3R5bGUoInRleHQt
YW5jaG9yIiwibWk9CmRkbGUiKSxPLmF0dHIoIngiLG8ubGVmdCtrLzIpLmF0dHIoInkiLG8udG9w
K0wvMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZT0KfSksTn14LnNlbGVjdEFsbCgiLm52LW5v
RGF0YSIpLnJlbW92ZSgpLGc9M0R0LnhTY2FsZSgpLHk9M0R0LnlTY2FsZSgpO3ZhciBNPQo9M0R4
LnNlbGVjdEFsbCgiZy5udi13cmFwLm52LWxpbmVDaGFydCIpLmRhdGEoW21dKSxfPTNETS5lbnRl
cigpLmFwcGVuZCgiZyI9CikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbGluZUNoYXJ0
IikuYXBwZW5kKCJnIiksRD0zRE0uc2VsZWN0KCJnIik7Xz0KLmFwcGVuZCgicmVjdCIpLnN0eWxl
KCJvcGFjaXR5IiwwKSxfLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzPQoi
KSxfLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteSBudi1heGlzIiksXy5hcHBlbmQoImci
KS5hdHRyKCJjbGFzcyIsIm49CnYtbGluZXNXcmFwIiksXy5hcHBlbmQoImciKS5hdHRyKCJjbGFz
cyIsIm52LWxlZ2VuZFdyYXAiKSxfLmFwcGVuZCgiZyIpLmF0dD0KcigiY2xhc3MiLCJudi1pbnRl
cmFjdGl2ZSIpLEQuc2VsZWN0KCJyZWN0IikuYXR0cigid2lkdGgiLGspLmF0dHIoImhlaWdodCIs
PQpMPjA/TDowKSxsJiYoaS53aWR0aChrKSxELnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5kYXR1
bShtKS5jYWxsKGkpLG8udG9wIT0KPTNEaS5oZWlnaHQoKSYmKG8udG9wPTNEaS5oZWlnaHQoKSxM
PTNEKGZ8fHBhcnNlSW50KHguc3R5bGUoImhlaWdodCIpKXx8NDAwPQopLW8udG9wLW8uYm90dG9t
KSxNLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUo
MCw9CiIrIC1vLnRvcCsiKSIpKSxNLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK28ubGVm
dCsiLCIrby50b3ArIikiKSxwJiZELj0Kc2VsZWN0KCIubnYteS5udi1heGlzIikuYXR0cigidHJh
bnNmb3JtIiwidHJhbnNsYXRlKCIraysiLDApIiksZCYmKHMud2lkdGgoPQprKS5oZWlnaHQoTCku
bWFyZ2luKHtsZWZ0Om8ubGVmdCx0b3A6by50b3B9KS5zdmdDb250YWluZXIoeCkueFNjYWxlKGcp
LE0uc2U9CmxlY3QoIi5udi1pbnRlcmFjdGl2ZSIpLmNhbGwocykpLHQud2lkdGgoaykuaGVpZ2h0
KEwpLmNvbG9yKG0ubWFwKGZ1bmN0aW9uKD0KZSx0KXtyZXR1cm4gZS5jb2xvcnx8dShlLHQpfSku
ZmlsdGVyKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIW1bdF0uZGlzYWJsZWR9KSk7PQp2YXIgUD0zREQu
c2VsZWN0KCIubnYtbGluZXNXcmFwIikuZGF0dW0obS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJu
IWUuZGlzYWI9CmxlZH0pKTtQLmNhbGwodCksYyYmKG4uc2NhbGUoZykudGlja3Moay8xMDApLnRp
Y2tTaXplKC1MLDApLEQuc2VsZWN0KCIubnYteD0KLm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0i
LCJ0cmFuc2xhdGUoMCwiK3kucmFuZ2UoKVswXSsiKSIpLEQuc2VsZWN0KCIubnYtPQp4Lm52LWF4
aXMiKS5jYWxsKG4pKSxoJiYoci5zY2FsZSh5KS50aWNrcyhMLzM2KS50aWNrU2l6ZSgtaywwKSxE
LnNlbGVjdCgiLm49CnYteS5udi1heGlzIikuY2FsbChyKSksaS5kaXNwYXRjaC5vbigic3RhdGVD
aGFuZ2UiLGZ1bmN0aW9uKGUpe2I9M0RlLFMuc3RhdD0KZUNoYW5nZShiKSxOLnVwZGF0ZSgpfSks
cy5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlbW92ZSIsZnVuY3Rpb24oaSl7dC5jbGVhPQpySGln
aGxpZ2h0cygpO3ZhciBhLGYsbCxjPTNEW107bS5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4g
ZS5zZXJpZXNJbmRleD0KPTNEdCwhZS5kaXNhYmxlZH0pLmZvckVhY2goZnVuY3Rpb24obixyKXtm
PTNEZS5pbnRlcmFjdGl2ZUJpc2VjdChuLnZhbHVlcyxpPQoucG9pbnRYVmFsdWUsTi54KCkpLHQu
aGlnaGxpZ2h0UG9pbnQocixmLCEwKTt2YXIgcz0zRG4udmFsdWVzW2ZdO2lmKHR5cGVvZiA9CnM9
M0Q9M0QidW5kZWZpbmVkIilyZXR1cm47dHlwZW9mIGE9M0Q9M0QidW5kZWZpbmVkIiYmKGE9M0Rz
KSx0eXBlb2YgbD0zRD0zRD0KInVuZGVmaW5lZCImJihsPTNETi54U2NhbGUoKShOLngoKShzLGYp
KSksYy5wdXNoKHtrZXk6bi5rZXksdmFsdWU6Ti55KCkocyxmPQopLGNvbG9yOnUobixuLnNlcmll
c0luZGV4KX0pfSk7aWYoYy5sZW5ndGg+Mil7dmFyIGg9M0ROLnlTY2FsZSgpLmludmVydChpLm09
Cm91c2VZKSxwPTNETWF0aC5hYnMoTi55U2NhbGUoKS5kb21haW4oKVswXS1OLnlTY2FsZSgpLmRv
bWFpbigpWzFdKSxkPTNELjAzKj0KcCxnPTNEZS5uZWFyZXN0VmFsdWVJbmRleChjLm1hcChmdW5j
dGlvbihlKXtyZXR1cm4gZS52YWx1ZX0pLGgsZCk7ZyE9M0Q9M0RuPQp1bGwmJihjW2ddLmhpZ2hs
aWdodD0zRCEwKX12YXIgeT0zRG4udGlja0Zvcm1hdCgpKE4ueCgpKGEsZikpO3MudG9vbHRpcC5w
b3M9Cml0aW9uKHtsZWZ0Omwrby5sZWZ0LHRvcDppLm1vdXNlWStvLnRvcH0pLmNoYXJ0Q29udGFp
bmVyKEMucGFyZW50Tm9kZSkuZW5hYj0KbGVkKHYpLnZhbHVlRm9ybWF0dGVyKGZ1bmN0aW9uKGUs
dCl7cmV0dXJuIHIudGlja0Zvcm1hdCgpKGUpfSkuZGF0YSh7dmFsdWU6PQp5LHNlcmllczpjfSko
KSxzLnJlbmRlckd1aWRlTGluZShsKX0pLHMuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dCIs
ZnVuY3Q9CmlvbihlKXtTLnRvb2x0aXBIaWRlKCksdC5jbGVhckhpZ2hsaWdodHMoKX0pLFMub24o
InRvb2x0aXBTaG93IixmdW5jdGlvbihlKT0Ke3YmJlQoZSxDLnBhcmVudE5vZGUpfSksUy5vbigi
Y2hhbmdlU3RhdGUiLGZ1bmN0aW9uKGUpe3R5cGVvZiBlLmRpc2FibGVkIT0KPTNEInVuZGVmaW5l
ZCImJm0ubGVuZ3RoPTNEPTNEPTNEZS5kaXNhYmxlZC5sZW5ndGgmJihtLmZvckVhY2goZnVuY3Rp
b24odCxuPQope3QuZGlzYWJsZWQ9M0RlLmRpc2FibGVkW25dfSksYi5kaXNhYmxlZD0zRGUuZGlz
YWJsZWQpLE4udXBkYXRlKCl9KX0pLE59dmE9CnIgdD0zRGUubW9kZWxzLmxpbmUoKSxuPTNEZS5t
b2RlbHMuYXhpcygpLHI9M0RlLm1vZGVscy5heGlzKCksaT0zRGUubW9kZWxzLj0KbGVnZW5kKCks
cz0zRGUuaW50ZXJhY3RpdmVHdWlkZWxpbmUoKSxvPTNEe3RvcDozMCxyaWdodDoyMCxib3R0b206
NTAsbGVmdDo2PQowfSx1PTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxhPTNEbnVsbCxmPTNEbnVs
bCxsPTNEITAsYz0zRCEwLGg9M0QhMCxwPTNEITE9CixkPTNEITEsdj0zRCEwLG09M0RmdW5jdGlv
bihlLHQsbixyLGkpe3JldHVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIrbisiIGF0ID0KIit0KyI8
L3A+In0sZyx5LGI9M0R7fSx3PTNEbnVsbCxFPTNEIk5vIERhdGEgQXZhaWxhYmxlLiIsUz0zRGQz
LmRpc3BhdGNoKCJ0PQpvb2x0aXBTaG93IiwidG9vbHRpcEhpZGUiLCJzdGF0ZUNoYW5nZSIsImNo
YW5nZVN0YXRlIikseD0zRDA7bi5vcmllbnQoImJvdHQ9Cm9tIikudGlja1BhZGRpbmcoNyksci5v
cmllbnQocD8icmlnaHQiOiJsZWZ0Iik7dmFyIFQ9M0RmdW5jdGlvbihpLHMpe3ZhciBvPQo9M0Rp
LnBvc1swXSsocy5vZmZzZXRMZWZ0fHwwKSx1PTNEaS5wb3NbMV0rKHMub2Zmc2V0VG9wfHwwKSxh
PTNEbi50aWNrRm9ybWE9CnQoKSh0LngoKShpLnBvaW50LGkucG9pbnRJbmRleCkpLGY9M0RyLnRp
Y2tGb3JtYXQoKSh0LnkoKShpLnBvaW50LGkucG9pbnRJbj0KZGV4KSksbD0zRG0oaS5zZXJpZXMu
a2V5LGEsZixpLE4pO2UudG9vbHRpcC5zaG93KFtvLHVdLGwsbnVsbCxudWxsLHMpfTtyZXR1PQpy
biB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2Uu
cG9zPTNEW2UucG9zWzBdK289Ci5sZWZ0LGUucG9zWzFdK28udG9wXSxTLnRvb2x0aXBTaG93KGUp
fSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvbz0KbHRpcCIsZnVuY3Rpb24oZSl7
Uy50b29sdGlwSGlkZShlKX0pLFMub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbigpe3YmJmUudG9v
PQpsdGlwLmNsZWFudXAoKX0pLE4uZGlzcGF0Y2g9M0RTLE4ubGluZXM9M0R0LE4ubGVnZW5kPTNE
aSxOLnhBeGlzPTNEbixOLnlBeGk9CnM9M0RyLE4uaW50ZXJhY3RpdmVMYXllcj0zRHMsZDMucmVi
aW5kKE4sdCwiZGVmaW5lZCIsImlzQXJlYSIsIngiLCJ5Iiwic2l6ZT0KIiwieFNjYWxlIiwieVNj
YWxlIiwieERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJmb3JjZVgiLCJmb3Jj
ZVkiPQosImludGVyYWN0aXZlIiwiY2xpcEVkZ2UiLCJjbGlwVm9yb25vaSIsInVzZVZvcm9ub2ki
LCJpZCIsImludGVycG9sYXRlIiksTi49Cm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJp
bmQoTiksTi5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbj0KdHMubGVuZ3RoPyhv
LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDpvLnRvcCxvLnJpZ2h0PTNE
dHlwZW9mPQogZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0Om8ucmlnaHQsby5ib3R0b209
M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGU9CmZpbmVkIj9lLmJvdHRvbTpvLmJvdHRvbSxvLmxl
ZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDpvLmxlZj0KdCxOKTpvfSxO
LndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLE4pOmF9
LE4uaGVpZ2h0PQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUs
Tik6Zn0sTi5jb2xvcj0zRGZ1bmN0aW9uKHQpe3I9CmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9
M0RlLnV0aWxzLmdldENvbG9yKHQpLGkuY29sb3IodSksTik6dX0sTi5zaG93TGVnZT0KbmQ9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGUsTik6bH0sTi5zaG93WEF4
aXM9M0RmdW5jdGlvPQpuKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSxOKTpjfSxO
LnNob3dZQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiA9CmFyZ3VtZW50cy5sZW5ndGg/KGg9M0Rl
LE4pOmh9LE4ucmlnaHRBbGlnbllBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZT0KbnRz
Lmxlbmd0aD8ocD0zRGUsci5vcmllbnQoZT8icmlnaHQiOiJsZWZ0IiksTik6cH0sTi51c2VJbnRl
cmFjdGl2ZUd1aWRlbGluPQplPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGQ9M0RlLGU9M0Q9M0Q9M0QhMCYmKE4uaW50ZXJhY3RpdmU9CighMSksTi51c2VWb3Jvbm9pKCEx
KSksTik6ZH0sTi50b29sdGlwcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZz0K
dGg/KHY9M0RlLE4pOnZ9LE4udG9vbHRpcENvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8obT0KPTNEZSxOKTptfSxOLnN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGI9M0RlLE4pOmJ9LE4uZGVmPQphdWx0U3RhdGU9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz0zRGUsTik6d30sTi5ub0RhdGE9M0RmdW49
CmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPTNEZSxOKTpFfSxOLnRyYW5zaXRp
b25EdXJhdGlvbj0zRGZ1bmN0aT0Kb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHg9M0Rl
LE4pOnh9LE59LGUubW9kZWxzLmxpbmVQbHVzQmFyQ2hhcnQ9M0RmPQp1bmN0aW9uKCl7ZnVuY3Rp
b24gVChlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBsPTNEZDMuc2VsZWN0KHRoaXMp
LGM9Cj0zRHRoaXMsdj0zRChhfHxwYXJzZUludChsLnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS11Lmxl
ZnQtdS5yaWdodCxOPTNEKGZ8fHBhcj0Kc2VJbnQobC5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXUu
dG9wLXUuYm90dG9tO1QudXBkYXRlPTNEZnVuY3Rpb24oKXtsLmNhbGwoPQpUKX0sYi5kaXNhYmxl
ZD0zRGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pO2lmKCF3KXt2YXIgQzt3
PTNEe309Cjtmb3IoQyBpbiBiKWJbQ11pbnN0YW5jZW9mIEFycmF5P3dbQ109M0RiW0NdLnNsaWNl
KDApOndbQ109M0RiW0NdfWlmKCFlfHwhZT0KLmxlbmd0aHx8IWUuZmlsdGVyKGZ1bmN0aW9uKGUp
e3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgpe3ZhciBrPTNEbC5zPQplbGVjdEFsbCgi
Lm52LW5vRGF0YSIpLmRhdGEoW0VdKTtyZXR1cm4gay5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0
dHIoImNsYXM9CnMiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgi
dGV4dC1hbmNob3IiLCJtaWRkbGUiKSxrLmF0dD0KcigieCIsdS5sZWZ0K3YvMikuYXR0cigieSIs
dS50b3ArTi8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksVH1sLnNlbGVjPQp0QWxsKCIu
bnYtbm9EYXRhIikucmVtb3ZlKCk7dmFyIEw9M0RlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4h
ZS5kaXNhYmxlZCY9CiZlLmJhcn0pLEE9M0RlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5i
YXJ9KTttPTNEQS5maWx0ZXIoZnVuY3Rpb24oZSl7cj0KZXR1cm4hZS5kaXNhYmxlZH0pLmxlbmd0
aCYmQS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KVswXS52YWx1PQplcy5s
ZW5ndGg/dC54U2NhbGUoKTpuLnhTY2FsZSgpLGc9M0RuLnlTY2FsZSgpLHk9M0R0LnlTY2FsZSgp
O3ZhciBPPTNEZDMuc2U9CmxlY3QodGhpcykuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtbGluZVBs
dXNCYXIiKS5kYXRhKFtlXSksTT0zRE8uZW50ZXIoKS5hcD0KcGVuZCgiZyIpLmF0dHIoImNsYXNz
IiwibnZkMyBudi13cmFwIG52LWxpbmVQbHVzQmFyIikuYXBwZW5kKCJnIiksXz0zRE8uc2VsPQpl
Y3QoImciKTtNLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksTS5hcHBl
bmQoImciKS5hdHRyKCJjbGE9CnNzIiwibnYteTEgbnYtYXhpcyIpLE0uYXBwZW5kKCJnIikuYXR0
cigiY2xhc3MiLCJudi15MiBudi1heGlzIiksTS5hcHBlbmQoIj0KZyIpLmF0dHIoImNsYXNzIiwi
bnYtYmFyc1dyYXAiKSxNLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGluZXNXcmFwIiks
PQpNLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpLHAmJihvLndpZHRo
KHYvMiksXy5zZWxlY3QoIi5udi09CmxlZ2VuZFdyYXAiKS5kYXR1bShlLm1hcChmdW5jdGlvbihl
KXtyZXR1cm4gZS5vcmlnaW5hbEtleT0zRGUub3JpZ2luYWxLZXk9Cj0zRD0zRD0zRHVuZGVmaW5l
ZD9lLmtleTplLm9yaWdpbmFsS2V5LGUua2V5PTNEZS5vcmlnaW5hbEtleSsoZS5iYXI/IiAobGVm
dD0KIGF4aXMpIjoiIChyaWdodCBheGlzKSIpLGV9KSkuY2FsbChvKSx1LnRvcCE9M0RvLmhlaWdo
dCgpJiYodS50b3A9M0RvLmhlaWdoPQp0KCksTj0zRChmfHxwYXJzZUludChsLnN0eWxlKCJoZWln
aHQiKSl8fDQwMCktdS50b3AtdS5ib3R0b20pLF8uc2VsZWN0KCIubnY9Ci1sZWdlbmRXcmFwIiku
YXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdi8yKyIsIisgLXUudG9wKyIpIikpLE8uYXR0
cigidD0KcmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit1LmxlZnQrIiwiK3UudG9wKyIpIiksdC53aWR0
aCh2KS5oZWlnaHQoTikuY29sb3IoZS5tPQphcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9y
fHxoKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS49CmRpc2FibGVkJiYh
ZVtuXS5iYXJ9KSksbi53aWR0aCh2KS5oZWlnaHQoTikuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0
KXtyZXR1cj0KbiBlLmNvbG9yfHxoKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4h
ZVtuXS5kaXNhYmxlZCYmZVtuXS5iYXJ9KSk7PQp2YXIgRD0zRF8uc2VsZWN0KCIubnYtYmFyc1dy
YXAiKS5kYXR1bShMLmxlbmd0aD9MOlt7dmFsdWVzOltdfV0pLFA9M0RfLnNlbGU9CmN0KCIubnYt
bGluZXNXcmFwIikuZGF0dW0oQVswXSYmIUFbMF0uZGlzYWJsZWQ/QTpbe3ZhbHVlczpbXX1dKTtk
My50cmFuc2l0aT0Kb24oRCkuY2FsbChuKSxkMy50cmFuc2l0aW9uKFApLmNhbGwodCksci5zY2Fs
ZShtKS50aWNrcyh2LzEwMCkudGlja1NpemUoLU4sPQowKSxfLnNlbGVjdCgiLm52LXgubnYtYXhp
cyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrZy5yYW5nZSgpWzBdKyI9CikiKSxk
My50cmFuc2l0aW9uKF8uc2VsZWN0KCIubnYteC5udi1heGlzIikpLmNhbGwociksaS5zY2FsZShn
KS50aWNrcyhOLzM2KT0KLnRpY2tTaXplKC12LDApLGQzLnRyYW5zaXRpb24oXy5zZWxlY3QoIi5u
di15MS5udi1heGlzIikpLnN0eWxlKCJvcGFjaXR5IixMPQoubGVuZ3RoPzE6MCkuY2FsbChpKSxz
LnNjYWxlKHkpLnRpY2tzKE4vMzYpLnRpY2tTaXplKEwubGVuZ3RoPzA6LXYsMCksXy5zZWw9CmVj
dCgiLm52LXkyLm52LWF4aXMiKS5zdHlsZSgib3BhY2l0eSIsQS5sZW5ndGg/MTowKS5hdHRyKCJ0
cmFuc2Zvcm0iLCJ0cmFucz0KbGF0ZSgiK3YrIiwwKSIpLGQzLnRyYW5zaXRpb24oXy5zZWxlY3Qo
Ii5udi15Mi5udi1heGlzIikpLmNhbGwocyksby5kaXNwYXRjPQpoLm9uKCJzdGF0ZUNoYW5nZSIs
ZnVuY3Rpb24oZSl7Yj0zRGUsUy5zdGF0ZUNoYW5nZShiKSxULnVwZGF0ZSgpfSksUy5vbigidG89
Cm9sdGlwU2hvdyIsZnVuY3Rpb24oZSl7ZCYmeChlLGMucGFyZW50Tm9kZSl9KSxTLm9uKCJjaGFu
Z2VTdGF0ZSIsZnVuY3Rpb24odD0KKXt0eXBlb2YgdC5kaXNhYmxlZCE9M0QidW5kZWZpbmVkIiYm
KGUuZm9yRWFjaChmdW5jdGlvbihlLG4pe2UuZGlzYWJsZWQ9M0R0PQouZGlzYWJsZWRbbl19KSxi
LmRpc2FibGVkPTNEdC5kaXNhYmxlZCksVC51cGRhdGUoKX0pfSksVH12YXIgdD0zRGUubW9kZWxz
Lmw9CmluZSgpLG49M0RlLm1vZGVscy5oaXN0b3JpY2FsQmFyKCkscj0zRGUubW9kZWxzLmF4aXMo
KSxpPTNEZS5tb2RlbHMuYXhpcygpLD0Kcz0zRGUubW9kZWxzLmF4aXMoKSxvPTNEZS5tb2RlbHMu
bGVnZW5kKCksdT0zRHt0b3A6MzAscmlnaHQ6NjAsYm90dG9tOjUwLGxlPQpmdDo2MH0sYT0zRG51
bGwsZj0zRG51bGwsbD0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9LGM9M0RmdW5jdGlvbihlKXty
ZXR1cm49CiBlLnl9LGg9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLHA9M0QhMCxkPTNEITAsdj0z
RGZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dT0Kcm4iPGgzPiIrZSsiPC9oMz4iKyI8cD4iK24rIiBh
dCAiK3QrIjwvcD4ifSxtLGcseSxiPTNEe30sdz0zRG51bGwsRT0zRCJObyBEPQphdGEgQXZhaWxh
YmxlLiIsUz0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdGVD
aGFuZ2UiLCI9CmNoYW5nZVN0YXRlIik7bi5wYWREYXRhKCEwKSx0LmNsaXBFZGdlKCExKS5wYWRE
YXRhKCEwKSxyLm9yaWVudCgiYm90dG9tIikudD0KaWNrUGFkZGluZyg3KS5oaWdobGlnaHRaZXJv
KCExKSxpLm9yaWVudCgibGVmdCIpLHMub3JpZW50KCJyaWdodCIpO3ZhciB4PTNEPQpmdW5jdGlv
bihuLG8pe3ZhciB1PTNEbi5wb3NbMF0rKG8ub2Zmc2V0TGVmdHx8MCksYT0zRG4ucG9zWzFdKyhv
Lm9mZnNldFRvcHw9CnwwKSxmPTNEci50aWNrRm9ybWF0KCkodC54KCkobi5wb2ludCxuLnBvaW50
SW5kZXgpKSxsPTNEKG4uc2VyaWVzLmJhcj9pOnMpLj0KdGlja0Zvcm1hdCgpKHQueSgpKG4ucG9p
bnQsbi5wb2ludEluZGV4KSksYz0zRHYobi5zZXJpZXMua2V5LGYsbCxuLFQpO2UudG9vPQpsdGlw
LnNob3coW3UsYV0sYyxuLnZhbHVlPDA/Im4iOiJzIixudWxsLG8pfTtyZXR1cm4gdC5kaXNwYXRj
aC5vbigiZWxlbWVudE09Cm91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2Uu
cG9zWzBdK3UubGVmdCxlLnBvc1sxXSt1LnRvcF0sUy50bz0Kb2x0aXBTaG93KGUpfSksdC5kaXNw
YXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe1MudG9vbHRpPQpw
SGlkZShlKX0pLG4uZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rp
b24oZSl7ZS5wb3M9M0RbZS49CnBvc1swXSt1LmxlZnQsZS5wb3NbMV0rdS50b3BdLFMudG9vbHRp
cFNob3coZSl9KSxuLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91cz0KZW91dC50b29sdGlwIixmdW5j
dGlvbihlKXtTLnRvb2x0aXBIaWRlKGUpfSksUy5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7
PQpkJiZlLnRvb2x0aXAuY2xlYW51cCgpfSksVC5kaXNwYXRjaD0zRFMsVC5sZWdlbmQ9M0RvLFQu
bGluZXM9M0R0LFQuYmFycz0zRG49CixULnhBeGlzPTNEcixULnkxQXhpcz0zRGksVC55MkF4aXM9
M0RzLGQzLnJlYmluZChULHQsImRlZmluZWQiLCJzaXplIiwiY2xpcD0KVm9yb25vaSIsImludGVy
cG9sYXRlIiksVC5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKFQpLFQueD0zRGZ1
bmN0PQppb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLHQueChlKSxuLngoZSks
VCk6bH0sVC55PTNEZnVuY3Rpb24oZSk9CntyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUs
dC55KGUpLG4ueShlKSxUKTpjfSxULm1hcmdpbj0zRGZ1bmN0aW9uKGUpez0KcmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHUudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnUu
dG9wLHUuPQpyaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6dS5y
aWdodCx1LmJvdHRvbT0zRHR5cGVvZiBlLmI9Cm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9t
OnUuYm90dG9tLHUubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZD0KIj9lLmxlZnQ6
dS5sZWZ0LFQpOnV9LFQud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oYT0zRGUsPQpUKTphfSxULmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhmPTNEZSxUKTpmfSxULmNvbG9yPQo9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oaD0zRGUudXRpbHMuZ2V0Q29sb3IodCksby5jb2xvcihoKSw9ClQpOmh9LFQu
c2hvd0xlZ2VuZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxU
KTpwfSxULnRvbz0KbHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
ZD0zRGUsVCk6ZH0sVC50b29sdGlwQ29udGVudD0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHY9M0RlLFQpOnZ9LFQuc3RhdGU9M0RmdW5jdGlvbihlKXtyPQpldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhiPTNEZSxUKTpifSxULmRlZmF1bHRTdGF0ZT0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmc9CnVtZW50cy5sZW5ndGg/KHc9M0RlLFQpOnd9LFQubm9EYXRhPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KD0KRT0zRGUsVCk6RX0sVH0sZS5tb2RlbHMu
bGluZVdpdGhGb2N1c0NoYXJ0PTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBrKGUpe3JldHVyPQpuIGUu
ZWFjaChmdW5jdGlvbihlKXtmdW5jdGlvbiBSKGUpe3ZhciB0PTNEKyhlPTNEPTNEImUiKSxuPTNE
dD8xOi0xLHI9M0RPLzM9CjtyZXR1cm4iTSIrLjUqbisiLCIrcisiQTYsNiAwIDAgIit0KyIgIis2
LjUqbisiLCIrKHIrNikrIlYiKygyKnItNikrIkE2LDYgMD0KIDAgIit0KyIgIisuNSpuKyIsIisy
KnIrIloiKyJNIisyLjUqbisiLCIrKHIrOCkrIlYiKygyKnItOCkrIk0iKzQuNSpuKyIsIisoPQpy
KzgpKyJWIisoMipyLTgpfWZ1bmN0aW9uIFUoKXthLmVtcHR5KCl8fGEuZXh0ZW50KHcpLEYuZGF0
YShbYS5lbXB0eSgpP2cuZG89Cm1haW4oKTp3XSkuZWFjaChmdW5jdGlvbihlLHQpe3ZhciBuPTNE
ZyhlWzBdKS12LnJhbmdlKClbMF0scj0zRHYucmFuZ2UoKVsxXT0KLWcoZVsxXSk7ZDMuc2VsZWN0
KHRoaXMpLnNlbGVjdCgiLmxlZnQiKS5hdHRyKCJ3aWR0aCIsbjwwPzA6biksZDMuc2VsZWN0KHRo
PQppcykuc2VsZWN0KCIucmlnaHQiKS5hdHRyKCJ4IixnKGVbMV0pKS5hdHRyKCJ3aWR0aCIscjww
PzA6cil9KX1mdW5jdGlvbiB6KCk9Cnt3PTNEYS5lbXB0eSgpP251bGw6YS5leHRlbnQoKTt2YXIg
bj0zRGEuZW1wdHkoKT9nLmRvbWFpbigpOmEuZXh0ZW50KCk7aWYoTT0KYXRoLmFicyhuWzBdLW5b
MV0pPD0zRDEpcmV0dXJuO1QuYnJ1c2goe2V4dGVudDpuLGJydXNoOmF9KSxVKCk7dmFyIHM9M0RQ
LnNlPQpsZWN0KCIubnYtZm9jdXMgLm52LWxpbmVzV3JhcCIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0
aW9uKGUpe3JldHVybiFlLmRpc2FibGU9CmR9KS5tYXAoZnVuY3Rpb24oZSxyKXtyZXR1cm57a2V5
OmUua2V5LHZhbHVlczplLnZhbHVlcy5maWx0ZXIoZnVuY3Rpb24oZSxyKT0Ke3JldHVybiB0Lngo
KShlLHIpPj0zRG5bMF0mJnQueCgpKGUscik8PTNEblsxXX0pfX0pKTtzLmNhbGwodCksUC5zZWxl
Y3QoIi5uPQp2LWZvY3VzIC5udi14Lm52LWF4aXMiKS5jYWxsKHIpLFAuc2VsZWN0KCIubnYtZm9j
dXMgLm52LXkubnYtYXhpcyIpLmNhbGwoaSk9Cn12YXIgUz0zRGQzLnNlbGVjdCh0aGlzKSxOPTNE
dGhpcyxMPTNEKGh8fHBhcnNlSW50KFMuc3R5bGUoIndpZHRoIikpfHw5NjApLT0KZi5sZWZ0LWYu
cmlnaHQsQT0zRChwfHxwYXJzZUludChTLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktZi50b3AtZi5i
b3R0b20tZCxPPQo9M0RkLWwudG9wLWwuYm90dG9tO2sudXBkYXRlPTNEZnVuY3Rpb24oKXtTLmNh
bGwoayl9LGsuY29udGFpbmVyPTNEdGhpcztpZig9CiFlfHwhZS5sZW5ndGh8fCFlLmZpbHRlcihm
dW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubGVuZ3RofSkubGVuZ3RoKXt2YXIgTT0KPTNEUy5z
ZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFt4XSk7cmV0dXJuIE0uZW50ZXIoKS5hcHBlbmQo
InRleHQiKS5hdHRyPQooImNsYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2Vt
Iikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIik9CixNLmF0dHIoIngiLGYubGVmdCtMLzIp
LmF0dHIoInkiLGYudG9wK0EvMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLGt9Uz0KLnNl
bGVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbW92ZSgpLHY9M0R0LnhTY2FsZSgpLG09M0R0LnlTY2Fs
ZSgpLGc9M0RuLnhTY2FsPQplKCkseT0zRG4ueVNjYWxlKCk7dmFyIF89M0RTLnNlbGVjdEFsbCgi
Zy5udi13cmFwLm52LWxpbmVXaXRoRm9jdXNDaGFydCIpLmQ9CmF0YShbZV0pLEQ9M0RfLmVudGVy
KCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbGluZVdpdGhGbz0K
Y3VzQ2hhcnQiKS5hcHBlbmQoImciKSxQPTNEXy5zZWxlY3QoImciKTtELmFwcGVuZCgiZyIpLmF0
dHIoImNsYXNzIiwibnYtbGVnPQplbmRXcmFwIik7dmFyIEg9M0RELmFwcGVuZCgiZyIpLmF0dHIo
ImNsYXNzIiwibnYtZm9jdXMiKTtILmFwcGVuZCgiZyIpLmF0dHI9CigiY2xhc3MiLCJudi14IG52
LWF4aXMiKSxILmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteSBudi1heGlzIiksSC5hcHBl
bj0KZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGluZXNXcmFwIik7dmFyIEI9M0RELmFwcGVuZCgi
ZyIpLmF0dHIoImNsYXNzIiwibnYtPQpjb250ZXh0Iik7Qi5hcHBlbmQoImciKS5hdHRyKCJjbGFz
cyIsIm52LXggbnYtYXhpcyIpLEIuYXBwZW5kKCJnIikuYXR0cigiY2w9CmFzcyIsIm52LXkgbnYt
YXhpcyIpLEIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1saW5lc1dyYXAiKSxCLmFwcGVu
ZCgiZz0KIikuYXR0cigiY2xhc3MiLCJudi1icnVzaEJhY2tncm91bmQiKSxCLmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnYteCBudi1iPQpydXNoIiksYiYmKHUud2lkdGgoTCksUC5zZWxlY3Qo
Ii5udi1sZWdlbmRXcmFwIikuZGF0dW0oZSkuY2FsbCh1KSxmLnRvcCE9M0Q9CnUuaGVpZ2h0KCkm
JihmLnRvcD0zRHUuaGVpZ2h0KCksQT0zRChwfHxwYXJzZUludChTLnN0eWxlKCJoZWlnaHQiKSl8
fDQwMCktZj0KLnRvcC1mLmJvdHRvbS1kKSxQLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5hdHRy
KCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiPQorIC1mLnRvcCsiKSIpKSxfLmF0dHIoInRyYW5z
Zm9ybSIsInRyYW5zbGF0ZSgiK2YubGVmdCsiLCIrZi50b3ArIikiKSx0LndpZHQ9CmgoTCkuaGVp
Z2h0KEEpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGMoZSx0KX0p
LmZpbHRlcihmdT0KbmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWR9KSksbi5kZWZpbmVk
KHQuZGVmaW5lZCgpKS53aWR0aChMKS5oZWlnaHQoPQpPKS5jb2xvcihlLm1hcChmdW5jdGlvbihl
LHQpe3JldHVybiBlLmNvbG9yfHxjKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXs9CnJldHVy
biFlW25dLmRpc2FibGVkfSkpLFAuc2VsZWN0KCIubnYtY29udGV4dCIpLmF0dHIoInRyYW5zZm9y
bSIsInRyYW5zbGF0ZT0KKDAsIisoQStmLmJvdHRvbStsLnRvcCkrIikiKTt2YXIgaj0zRFAuc2Vs
ZWN0KCIubnYtY29udGV4dCAubnYtbGluZXNXcmFwIikuPQpkYXR1bShlLmZpbHRlcihmdW5jdGlv
bihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKTtkMy50cmFuc2l0aW9uKGopLmNhbGwobiksci49CnNj
YWxlKHYpLnRpY2tzKEwvMTAwKS50aWNrU2l6ZSgtQSwwKSxpLnNjYWxlKG0pLnRpY2tzKEEvMzYp
LnRpY2tTaXplKC1MLDApLD0KUC5zZWxlY3QoIi5udi1mb2N1cyAubnYteC5udi1heGlzIikuYXR0
cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitBKyIpIiksPQphLngoZykub24oImJydXNoIixm
dW5jdGlvbigpe3ZhciBlPTNEay50cmFuc2l0aW9uRHVyYXRpb24oKTtrLnRyYW5zaXRpb25EdXI9
CmF0aW9uKDApLHooKSxrLnRyYW5zaXRpb25EdXJhdGlvbihlKX0pLHcmJmEuZXh0ZW50KHcpO3Zh
ciBGPTNEUC5zZWxlY3QoIi5udj0KLWJydXNoQmFja2dyb3VuZCIpLnNlbGVjdEFsbCgiZyIpLmRh
dGEoW3d8fGEuZXh0ZW50KCldKSxJPTNERi5lbnRlcigpLmFwcGVuPQpkKCJnIik7SS5hcHBlbmQo
InJlY3QiKS5hdHRyKCJjbGFzcyIsImxlZnQiKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IiwwKS5hdHRy
KCI9CmhlaWdodCIsTyksSS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsInJpZ2h0IikuYXR0
cigieCIsMCkuYXR0cigieSIsMCkuYT0KdHRyKCJoZWlnaHQiLE8pO3ZhciBxPTNEUC5zZWxlY3Qo
Ii5udi14Lm52LWJydXNoIikuY2FsbChhKTtxLnNlbGVjdEFsbCgicmVjPQp0IikuYXR0cigiaGVp
Z2h0IixPKSxxLnNlbGVjdEFsbCgiLnJlc2l6ZSIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLFIp
LHooKSw9CnMuc2NhbGUoZykudGlja3MoTC8xMDApLnRpY2tTaXplKC1PLDApLFAuc2VsZWN0KCIu
bnYtY29udGV4dCAubnYteC5udi1heGlzIj0KKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUo
MCwiK3kucmFuZ2UoKVswXSsiKSIpLGQzLnRyYW5zaXRpb24oUC5zZWxlY3QoPQoiLm52LWNvbnRl
eHQgLm52LXgubnYtYXhpcyIpKS5jYWxsKHMpLG8uc2NhbGUoeSkudGlja3MoTy8zNikudGlja1Np
emUoLUwsMCk9CixkMy50cmFuc2l0aW9uKFAuc2VsZWN0KCIubnYtY29udGV4dCAubnYteS5udi1h
eGlzIikpLmNhbGwobyksUC5zZWxlY3QoIi5udj0KLWNvbnRleHQgLm52LXgubnYtYXhpcyIpLmF0
dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIreS5yYW5nZSgpWzBdKyIpIiksPQp1LmRpc3Bh
dGNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24oZSl7ay51cGRhdGUoKX0pLFQub24oInRvb2x0
aXBTaG93IixmdW49CmN0aW9uKGUpe0UmJkMoZSxOLnBhcmVudE5vZGUpfSl9KSxrfXZhciB0PTNE
ZS5tb2RlbHMubGluZSgpLG49M0RlLm1vZGVscy5saT0KbmUoKSxyPTNEZS5tb2RlbHMuYXhpcygp
LGk9M0RlLm1vZGVscy5heGlzKCkscz0zRGUubW9kZWxzLmF4aXMoKSxvPTNEZS5tb2RlPQpscy5h
eGlzKCksdT0zRGUubW9kZWxzLmxlZ2VuZCgpLGE9M0RkMy5zdmcuYnJ1c2goKSxmPTNEe3RvcDoz
MCxyaWdodDozMCxib3Q9CnRvbTozMCxsZWZ0OjYwfSxsPTNEe3RvcDowLHJpZ2h0OjMwLGJvdHRv
bToyMCxsZWZ0OjYwfSxjPTNEZS51dGlscy5kZWZhdWx0Qz0Kb2xvcigpLGg9M0RudWxsLHA9M0Ru
dWxsLGQ9M0QxMDAsdixtLGcseSxiPTNEITAsdz0zRG51bGwsRT0zRCEwLFM9M0RmdW5jdGlvPQpu
KGUsdCxuLHIsaSl7cmV0dXJuIjxoMz4iK2UrIjwvaDM+IisiPHA+IituKyIgYXQgIit0KyI8L3A+
In0seD0zRCJObyBEYXRhIEE9CnZhaWxhYmxlLiIsVD0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hv
dyIsInRvb2x0aXBIaWRlIiwiYnJ1c2giKSxOPTNEMDt0LmNsaT0KcEVkZ2UoITApLG4uaW50ZXJh
Y3RpdmUoITEpLHIub3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg1KSxpLm9yaWVudCgibGVm
PQp0Iikscy5vcmllbnQoImJvdHRvbSIpLnRpY2tQYWRkaW5nKDUpLG8ub3JpZW50KCJsZWZ0Iik7
dmFyIEM9M0RmdW5jdGlvbihuLHM9Cil7dmFyIG89M0RuLnBvc1swXSsocy5vZmZzZXRMZWZ0fHww
KSx1PTNEbi5wb3NbMV0rKHMub2Zmc2V0VG9wfHwwKSxhPTNEci50aT0KY2tGb3JtYXQoKSh0Lngo
KShuLnBvaW50LG4ucG9pbnRJbmRleCkpLGY9M0RpLnRpY2tGb3JtYXQoKSh0LnkoKShuLnBvaW50
LG4uPQpwb2ludEluZGV4KSksbD0zRFMobi5zZXJpZXMua2V5LGEsZixuLGspO2UudG9vbHRpcC5z
aG93KFtvLHVdLGwsbnVsbCxudWxsLHM9Cil9O3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50
TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucD0Kb3NbMF0rZi5sZWZ0
LGUucG9zWzFdK2YudG9wXSxULnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVu
dE1vdXNlPQpvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7VC50b29sdGlwSGlkZShlKX0pLFQub24o
InRvb2x0aXBIaWRlIixmdW5jdGlvbigpe0U9CiYmZS50b29sdGlwLmNsZWFudXAoKX0pLGsuZGlz
cGF0Y2g9M0RULGsubGVnZW5kPTNEdSxrLmxpbmVzPTNEdCxrLmxpbmVzMj0zRD0KbixrLnhBeGlz
PTNEcixrLnlBeGlzPTNEaSxrLngyQXhpcz0zRHMsay55MkF4aXM9M0RvLGQzLnJlYmluZChrLHQs
ImRlZmluZWQiPQosImlzQXJlYSIsInNpemUiLCJ4RG9tYWluIiwieURvbWFpbiIsInhSYW5nZSIs
InlSYW5nZSIsImZvcmNlWCIsImZvcmNlWSIsImk9Cm50ZXJhY3RpdmUiLCJjbGlwRWRnZSIsImNs
aXBWb3Jvbm9pIiwiaWQiKSxrLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLj0KYmluZChr
KSxrLng9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC54KGUpLG4ueChl
KSxrKTp0Lnh9LGsuPQp5PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQu
eShlKSxuLnkoZSksayk6dC55fSxrLm1hcmdpbj0zRGY9CnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGYudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudD0Kb3A6
Zi50b3AsZi5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6Zi5y
aWdodCxmLmJvdHRvbT0KPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9t
OmYuYm90dG9tLGYubGVmdD0zRHR5cGVvZiBlLmxlZnQhPQo9M0QidW5kZWZpbmVkIj9lLmxlZnQ6
Zi5sZWZ0LGspOmZ9LGsubWFyZ2luMj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHM9Ci5s
ZW5ndGg/KGw9M0RlLGspOmx9LGsud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oaD0zRGUsaz0KKTpofSxrLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhwPTNEZSxrKTpwfSxrLmhlaWdodDI9Cj0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSxrKTpkfSxrLmNvbG9yPTNEZnVuY3Rpb24odCl7cj0K
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUudXRpbHMuZ2V0Q29sb3IodCksdS5jb2xvcihj
KSxrKTpjfSxrLnNob3dMZWdlPQpuZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhiPTNEZSxrKTpifSxrLnRvb2x0aXBzPTNEZnVuY3Rpb249CihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oRT0zRGUsayk6RX0say50b29sdGlwQ29udGVudD0zRGZ1bmN0aW9uKGUpe3Jl
dD0KdXJuIGFyZ3VtZW50cy5sZW5ndGg/KFM9M0RlLGspOlN9LGsuaW50ZXJwb2xhdGU9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lPQpudHMubGVuZ3RoPyh0LmludGVycG9sYXRlKGUpLG4uaW50
ZXJwb2xhdGUoZSksayk6dC5pbnRlcnBvbGF0ZSgpfSxrLm5vRGF0YT0KPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHg9M0RlLGspOnh9LGsueFRpY2tGb3JtYXQ9M0RmdW5j
dGlvPQpuKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyLnRpY2tGb3JtYXQoZSkscy50aWNr
Rm9ybWF0KGUpLGspOnIudGlja0Zvcm09CmF0KCl9LGsueVRpY2tGb3JtYXQ9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaS50aWNrRm9ybWF0KGUpLD0Kby50aWNrRm9ybWF0
KGUpLGspOmkudGlja0Zvcm1hdCgpfSxrLmJydXNoRXh0ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtPQplbnRzLmxlbmd0aD8odz0zRGUsayk6d30say50cmFuc2l0aW9uRHVyYXRpb249M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnQ9CnMubGVuZ3RoPyhOPTNEZSxrKTpOfSxrfSxlLm1v
ZGVscy5saW5lUGx1c0JhcldpdGhGb2N1c0NoYXJ0PTNEZnVuY3Rpb24oKXtmdT0KbmN0aW9uIEIo
ZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXtmdW5jdGlvbiB0dChlKXt2YXIgdD0zRCsoZT0z
RD0zRCJlIiksPQpuPTNEdD8xOi0xLHI9M0RJLzM7cmV0dXJuIk0iKy41Km4rIiwiK3IrIkE2LDYg
MCAwICIrdCsiICIrNi41Km4rIiwiKyhyKzYpKyI9ClYiKygyKnItNikrIkE2LDYgMCAwICIrdCsi
ICIrLjUqbisiLCIrMipyKyJaIisiTSIrMi41Km4rIiwiKyhyKzgpKyJWIisoMipyLT0KOCkrIk0i
KzQuNSpuKyIsIisocis4KSsiViIrKDIqci04KX1mdW5jdGlvbiBudCgpe2guZW1wdHkoKXx8aC5l
eHRlbnQoeCksWS5kPQphdGEoW2guZW1wdHkoKT9rLmRvbWFpbigpOnhdKS5lYWNoKGZ1bmN0aW9u
KGUsdCl7dmFyIG49M0RrKGVbMF0pLWsucmFuZ2UoKVs9CjBdLHI9M0RrLnJhbmdlKClbMV0tayhl
WzFdKTtkMy5zZWxlY3QodGhpcykuc2VsZWN0KCIubGVmdCIpLmF0dHIoIndpZHRoIixuPD0KMD8w
Om4pLGQzLnNlbGVjdCh0aGlzKS5zZWxlY3QoIi5yaWdodCIpLmF0dHIoIngiLGsoZVsxXSkpLmF0
dHIoIndpZHRoIixyPDA/PQowOnIpfSl9ZnVuY3Rpb24gcnQoKXt4PTNEaC5lbXB0eSgpP251bGw6
aC5leHRlbnQoKSxTPTNEaC5lbXB0eSgpP2suZG9tYWluKCk9CjpoLmV4dGVudCgpLEQuYnJ1c2go
e2V4dGVudDpTLGJydXNoOmh9KSxudCgpLHIud2lkdGgoaikuaGVpZ2h0KEYpLmNvbG9yKGUubT0K
YXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8dyhlLHQpfSkuZmlsdGVyKGZ1bmN0aW9u
KHQsbil7cmV0dXJuIWVbbl0uPQpkaXNhYmxlZCYmZVtuXS5iYXJ9KSksdC53aWR0aChqKS5oZWln
aHQoRikuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm49CiBlLmNvbG9yfHx3KGUsdCl9
KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZCYmIWVbbl0uYmFyfSkp
Oz0KdmFyIG49M0QkLnNlbGVjdCgiLm52LWZvY3VzIC5udi1iYXJzV3JhcCIpLmRhdHVtKFIubGVu
Z3RoP1IubWFwKGZ1bmN0aW9uKGUsPQp0KXtyZXR1cm57a2V5OmUua2V5LHZhbHVlczplLnZhbHVl
cy5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gci54KCkoZSx0KT49Cj0zRFNbMF0mJnIueCgp
KGUsdCk8PTNEU1sxXX0pfX0pOlt7dmFsdWVzOltdfV0pLGk9M0QkLnNlbGVjdCgiLm52LWZvY3Vz
IC5udj0KLWxpbmVzV3JhcCIpLmRhdHVtKFVbMF0uZGlzYWJsZWQ/W3t2YWx1ZXM6W119XTpVLm1h
cChmdW5jdGlvbihlLG4pe3JldHVybntrPQpleTplLmtleSx2YWx1ZXM6ZS52YWx1ZXMuZmlsdGVy
KGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQueCgpKGUsbik+PTNEU1swXSYmdC49CngoKShlLG4pPD0z
RFNbMV19KX19KSk7Ui5sZW5ndGg/Qz0zRHIueFNjYWxlKCk6Qz0zRHQueFNjYWxlKCkscy5zY2Fs
ZShDKS50aT0KY2tzKGovMTAwKS50aWNrU2l6ZSgtRiwwKSxzLmRvbWFpbihbTWF0aC5jZWlsKFNb
MF0pLE1hdGguZmxvb3IoU1sxXSldKSwkLnNlPQpsZWN0KCIubnYteC5udi1heGlzIikuY2FsbChz
KSxuLmNhbGwociksaS5jYWxsKHQpLCQuc2VsZWN0KCIubnYtZm9jdXMgLm52LXg9Ci5udi1heGlz
IikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitMLnJhbmdlKClbMF0rIikiKSx1LnNj
YWxlKEwpLnRpYz0Ka3MoRi8zNikudGlja1NpemUoLWosMCksJC5zZWxlY3QoIi5udi1mb2N1cyAu
bnYteTEubnYtYXhpcyIpLnN0eWxlKCJvcGFjaXR5PQoiLFIubGVuZ3RoPzE6MCksYS5zY2FsZShB
KS50aWNrcyhGLzM2KS50aWNrU2l6ZShSLmxlbmd0aD8wOi1qLDApLCQuc2VsZWN0KCI9Ci5udi1m
b2N1cyAubnYteTIubnYtYXhpcyIpLnN0eWxlKCJvcGFjaXR5IixVLmxlbmd0aD8xOjApLmF0dHIo
InRyYW5zZm9ybSIsIj0KdHJhbnNsYXRlKCIrQy5yYW5nZSgpWzFdKyIsMCkiKSwkLnNlbGVjdCgi
Lm52LWZvY3VzIC5udi15MS5udi1heGlzIikuY2FsbCh1PQopLCQuc2VsZWN0KCIubnYtZm9jdXMg
Lm52LXkyLm52LWF4aXMiKS5jYWxsKGEpfXZhciBOPTNEZDMuc2VsZWN0KHRoaXMpLFA9M0Q9CnRo
aXMsaj0zRCh2fHxwYXJzZUludChOLnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS1wLmxlZnQtcC5yaWdo
dCxGPTNEKG18fHBhcnNlST0KbnQoTi5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXAudG9wLXAuYm90
dG9tLWcsST0zRGctZC50b3AtZC5ib3R0b207Qi51cGRhdGU9Cj0zRGZ1bmN0aW9uKCl7Ti5jYWxs
KEIpfSxCLmNvbnRhaW5lcj0zRHRoaXM7aWYoIWV8fCFlLmxlbmd0aHx8IWUuZmlsdGVyKGZ1bj0K
Y3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLmxlbmd0aH0pLmxlbmd0aCl7dmFyIHE9M0ROLnNlbGVj
dEFsbCgiLm52LW5vRGF0YSIpPQouZGF0YShbX10pO3JldHVybiBxLmVudGVyKCkuYXBwZW5kKCJ0
ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmE9CnR0cigiZHkiLCItLjdlbSIp
LnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLHEuYXR0cigieCIscC5sZWZ0K2ovMikuYXR0
cj0KKCJ5IixwLnRvcCtGLzIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxCfU4uc2VsZWN0
QWxsKCIubnYtbm9EYXRhIikucmVtPQpvdmUoKTt2YXIgUj0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUp
e3JldHVybiFlLmRpc2FibGVkJiZlLmJhcn0pLFU9M0RlLmZpbHRlcig9CmZ1bmN0aW9uKGUpe3Jl
dHVybiFlLmJhcn0pO0M9M0RyLnhTY2FsZSgpLGs9M0RvLnNjYWxlKCksTD0zRHIueVNjYWxlKCks
QT0zRD0KdC55U2NhbGUoKSxPPTNEaS55U2NhbGUoKSxNPTNEbi55U2NhbGUoKTt2YXIgej0zRGUu
ZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVyPQpuIWUuZGlzYWJsZWQmJmUuYmFyfSkubWFwKGZ1bmN0
aW9uKGUpe3JldHVybiBlLnZhbHVlcy5tYXAoZnVuY3Rpb24oZSx0KXtyZXQ9CnVybnt4OnkoZSx0
KSx5OmIoZSx0KX19KX0pLFc9M0RlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxl
ZCYmIWUuYj0KYXJ9KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlv
bihlLHQpe3JldHVybnt4OnkoZSx0KSx5OmIoPQplLHQpfX0pfSk7Qy5yYW5nZShbMCxqXSksay5k
b21haW4oZDMuZXh0ZW50KGQzLm1lcmdlKHouY29uY2F0KFcpKSxmdW5jdGlvbig9CmUpe3JldHVy
biBlLnh9KSkucmFuZ2UoWzAsal0pO3ZhciBYPTNETi5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1s
aW5lUGx1c0Jhcj0KIikuZGF0YShbZV0pLFY9M0RYLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbGluZVBsPQp1c0JhciIpLmFwcGVuZCgiZyIpLCQ9M0RY
LnNlbGVjdCgiZyIpO1YuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1sZWdlbmQ9CldyYXAi
KTt2YXIgSj0zRFYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1mb2N1cyIpO0ouYXBwZW5k
KCJnIikuYXR0cigiYz0KbGFzcyIsIm52LXggbnYtYXhpcyIpLEouYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudi15MSBudi1heGlzIiksSi5hcHBlbmQoPQoiZyIpLmF0dHIoImNsYXNzIiwibnYt
eTIgbnYtYXhpcyIpLEouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1iYXJzV3JhcCI9Ciks
Si5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxpbmVzV3JhcCIpO3ZhciBLPTNEVi5hcHBl
bmQoImciKS5hdHRyKCJjbD0KYXNzIiwibnYtY29udGV4dCIpO0suYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudi14IG52LWF4aXMiKSxLLmFwcGVuZCgiZyIpPQouYXR0cigiY2xhc3MiLCJudi15
MSBudi1heGlzIiksSy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkyIG52LWF4aXMiKSw9
CksuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1iYXJzV3JhcCIpLEsuYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJudi1saT0KbmVzV3JhcCIpLEsuYXBwZW5kKCJnIikuYXR0cigiY2xhc3Mi
LCJudi1icnVzaEJhY2tncm91bmQiKSxLLmFwcGVuZCgiZyIpLmF0PQp0cigiY2xhc3MiLCJudi14
IG52LWJydXNoIiksRSYmKGMud2lkdGgoai8yKSwkLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5k
YXQ9CnVtKGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLm9yaWdpbmFsS2V5PTNEZS5vcmlnaW5h
bEtleT0zRD0zRD0zRHVuZGVmaW5lZD0KP2Uua2V5OmUub3JpZ2luYWxLZXksZS5rZXk9M0RlLm9y
aWdpbmFsS2V5KyhlLmJhcj8iIChsZWZ0IGF4aXMpIjoiIChyaWdodCBhPQp4aXMpIiksZX0pKS5j
YWxsKGMpLHAudG9wIT0zRGMuaGVpZ2h0KCkmJihwLnRvcD0zRGMuaGVpZ2h0KCksRj0zRChtfHxw
YXJzZUk9Cm50KE4uc3R5bGUoImhlaWdodCIpKXx8NDAwKS1wLnRvcC1wLmJvdHRvbS1nKSwkLnNl
bGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5hdD0KdHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2ov
MisiLCIrIC1wLnRvcCsiKSIpKSxYLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zPQpsYXRlKCIrcC5s
ZWZ0KyIsIitwLnRvcCsiKSIpLGkud2lkdGgoaikuaGVpZ2h0KEkpLmNvbG9yKGUubWFwKGZ1bmN0
aW9uKGUsdCk9CntyZXR1cm4gZS5jb2xvcnx8dyhlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7
cmV0dXJuIWVbbl0uZGlzYWJsZWQmJmVbbl0uYj0KYXJ9KSksbi53aWR0aChqKS5oZWlnaHQoSSku
Y29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8dyhlLHQpPQp9KS5maWx0
ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZCYmIWVbbl0uYmFyfSkpO3ZhciBR
PTNEJC5zZWxlY3Q9CigiLm52LWNvbnRleHQgLm52LWJhcnNXcmFwIikuZGF0dW0oUi5sZW5ndGg/
Ujpbe3ZhbHVlczpbXX1dKSxHPTNEJC5zZWxlY3QoIj0KLm52LWNvbnRleHQgLm52LWxpbmVzV3Jh
cCIpLmRhdHVtKFVbMF0uZGlzYWJsZWQ/W3t2YWx1ZXM6W119XTpVKTskLnNlbGVjdCgiPQoubnYt
Y29udGV4dCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrKEYrcC5ib3R0b20rZC50
b3ApKyIpIiksUS5jYWw9CmwoaSksRy5jYWxsKG4pLGgueChrKS5vbigiYnJ1c2giLHJ0KSx4JiZo
LmV4dGVudCh4KTt2YXIgWT0zRCQuc2VsZWN0KCIubnYtYj0KcnVzaEJhY2tncm91bmQiKS5zZWxl
Y3RBbGwoImciKS5kYXRhKFt4fHxoLmV4dGVudCgpXSksWj0zRFkuZW50ZXIoKS5hcHBlbmQoPQoi
ZyIpO1ouYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJsZWZ0IikuYXR0cigieCIsMCkuYXR0
cigieSIsMCkuYXR0cigiaGU9CmlnaHQiLEkpLFouYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3Mi
LCJyaWdodCIpLmF0dHIoIngiLDApLmF0dHIoInkiLDApLmF0dD0KcigiaGVpZ2h0IixJKTt2YXIg
ZXQ9M0QkLnNlbGVjdCgiLm52LXgubnYtYnJ1c2giKS5jYWxsKGgpO2V0LnNlbGVjdEFsbCgicmVj
PQp0IikuYXR0cigiaGVpZ2h0IixJKSxldC5zZWxlY3RBbGwoIi5yZXNpemUiKS5hcHBlbmQoInBh
dGgiKS5hdHRyKCJkIix0dCksby49CnRpY2tzKGovMTAwKS50aWNrU2l6ZSgtSSwwKSwkLnNlbGVj
dCgiLm52LWNvbnRleHQgLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYT0KbnNmb3JtIiwidHJhbnNs
YXRlKDAsIitPLnJhbmdlKClbMF0rIikiKSwkLnNlbGVjdCgiLm52LWNvbnRleHQgLm52LXgubnYt
YXhpPQpzIikuY2FsbChvKSxmLnNjYWxlKE8pLnRpY2tzKEkvMzYpLnRpY2tTaXplKC1qLDApLCQu
c2VsZWN0KCIubnYtY29udGV4dCAubnY9Ci15MS5udi1heGlzIikuc3R5bGUoIm9wYWNpdHkiLFIu
bGVuZ3RoPzE6MCkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIj0KK2sucmFuZ2UoKVsw
XSsiKSIpLCQuc2VsZWN0KCIubnYtY29udGV4dCAubnYteTEubnYtYXhpcyIpLmNhbGwoZiksbC5z
Y2FsZShNPQopLnRpY2tzKEkvMzYpLnRpY2tTaXplKFIubGVuZ3RoPzA6LWosMCksJC5zZWxlY3Qo
Ii5udi1jb250ZXh0IC5udi15Mi5udi1heGk9CnMiKS5zdHlsZSgib3BhY2l0eSIsVS5sZW5ndGg/
MTowKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitrLnJhbmdlKClbMT0KXSsiLDApIiks
JC5zZWxlY3QoIi5udi1jb250ZXh0IC5udi15Mi5udi1heGlzIikuY2FsbChsKSxjLmRpc3BhdGNo
Lm9uKCJzdGF0PQplQ2hhbmdlIixmdW5jdGlvbihlKXtCLnVwZGF0ZSgpfSksRC5vbigidG9vbHRp
cFNob3ciLGZ1bmN0aW9uKGUpe1QmJkgoZSxQLnA9CmFyZW50Tm9kZSl9KSxydCgpfSksQn12YXIg
dD0zRGUubW9kZWxzLmxpbmUoKSxuPTNEZS5tb2RlbHMubGluZSgpLHI9M0RlLm1vZD0KZWxzLmhp
c3RvcmljYWxCYXIoKSxpPTNEZS5tb2RlbHMuaGlzdG9yaWNhbEJhcigpLHM9M0RlLm1vZGVscy5h
eGlzKCksbz0zRGUuPQptb2RlbHMuYXhpcygpLHU9M0RlLm1vZGVscy5heGlzKCksYT0zRGUubW9k
ZWxzLmF4aXMoKSxmPTNEZS5tb2RlbHMuYXhpcygpLGw9Cj0zRGUubW9kZWxzLmF4aXMoKSxjPTNE
ZS5tb2RlbHMubGVnZW5kKCksaD0zRGQzLnN2Zy5icnVzaCgpLHA9M0R7dG9wOjMwLHJpZz0KaHQ6
MzAsYm90dG9tOjMwLGxlZnQ6NjB9LGQ9M0R7dG9wOjAscmlnaHQ6MzAsYm90dG9tOjIwLGxlZnQ6
NjB9LHY9M0RudWxsLG09Cj0zRG51bGwsZz0zRDEwMCx5PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUu
eH0sYj0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnl9LHc9Cj0zRGUudXRpbHMuZGVmYXVsdENvbG9y
KCksRT0zRCEwLFMseD0zRG51bGwsVD0zRCEwLE49M0RmdW5jdGlvbihlLHQsbixyLGkpez0KcmV0
dXJuIjxoMz4iK2UrIjwvaDM+IisiPHA+IituKyIgYXQgIit0KyI8L3A+In0sQyxrLEwsQSxPLE0s
Xz0zRCJObyBEYXRhIEF2PQphaWxhYmxlLiIsRD0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIs
InRvb2x0aXBIaWRlIiwiYnJ1c2giKSxQPTNEMDt0LmNsaXA9CkVkZ2UoITApLG4uaW50ZXJhY3Rp
dmUoITEpLHMub3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg1KSx1Lm9yaWVudCgibGVmdD0K
IiksYS5vcmllbnQoInJpZ2h0Iiksby5vcmllbnQoImJvdHRvbSIpLnRpY2tQYWRkaW5nKDUpLGYu
b3JpZW50KCJsZWZ0IiksbC5vPQpyaWVudCgicmlnaHQiKTt2YXIgSD0zRGZ1bmN0aW9uKG4scil7
UyYmKG4ucG9pbnRJbmRleCs9M0RNYXRoLmNlaWwoU1swXSkpO3Y9CmFyIGk9M0RuLnBvc1swXSso
ci5vZmZzZXRMZWZ0fHwwKSxvPTNEbi5wb3NbMV0rKHIub2Zmc2V0VG9wfHwwKSxmPTNEcy50aWNr
Rj0Kb3JtYXQoKSh0LngoKShuLnBvaW50LG4ucG9pbnRJbmRleCkpLGw9M0Qobi5zZXJpZXMuYmFy
P3U6YSkudGlja0Zvcm1hdCgpKHQuPQp5KCkobi5wb2ludCxuLnBvaW50SW5kZXgpKSxjPTNETihu
LnNlcmllcy5rZXksZixsLG4sQik7ZS50b29sdGlwLnNob3coW2ksb109CixjLG4udmFsdWU8MD8i
biI6InMiLG51bGwscil9O3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRv
b2x0aT0KcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rcC5sZWZ0LGUucG9zWzFdK3Au
dG9wXSxELnRvb2x0aXBTaG93KGUpfSksPQp0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQu
dG9vbHRpcCIsZnVuY3Rpb24oZSl7RC50b29sdGlwSGlkZShlKX0pLHIuZGk9CnNwYXRjaC5vbigi
ZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXStw
LmxlZnQsZT0KLnBvc1sxXStwLnRvcF0sRC50b29sdGlwU2hvdyhlKX0pLHIuZGlzcGF0Y2gub24o
ImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmPQp1bmN0aW9uKGUpe0QudG9vbHRpcEhpZGUoZSl9
KSxELm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXtUJiZlLnRvb2x0aXAuY2w9CmVhbnVwKCl9
KSxCLmRpc3BhdGNoPTNERCxCLmxlZ2VuZD0zRGMsQi5saW5lcz0zRHQsQi5saW5lczI9M0RuLEIu
YmFycz0zRHIsQj0KLmJhcnMyPTNEaSxCLnhBeGlzPTNEcyxCLngyQXhpcz0zRG8sQi55MUF4aXM9
M0R1LEIueTJBeGlzPTNEYSxCLnkzQXhpcz0zRGYsPQpCLnk0QXhpcz0zRGwsZDMucmViaW5kKEIs
dCwiZGVmaW5lZCIsInNpemUiLCJjbGlwVm9yb25vaSIsImludGVycG9sYXRlIiksQi49Cm9wdGlv
bnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoQiksQi54PTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZT0Kbmd0aD8oeT0zRGUsdC54KGUpLHIueChlKSxCKTp5fSxCLnk9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oPQpiPTNEZSx0LnkoZSksci55KGUpLEIp
OmJ9LEIubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9Ci50
b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6cC50b3AscC5yaWdodD0zRHR5
cGVvZiBlLnJpZ2h0IT0zRD0KInVuZGVmaW5lZCI/ZS5yaWdodDpwLnJpZ2h0LHAuYm90dG9tPTNE
dHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90PQp0b206cC5ib3R0b20scC5sZWZ0
PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6cC5sZWZ0LEIpOnB9LEIud2k9
CmR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PTNEZSxCKTp2fSxC
LmhlaWdodD0zRGZ1bmN0aW9uKD0KZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09M0RlLEIp
Om19LEIuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lPQpudHMubGVuZ3RoPyh3PTNE
ZS51dGlscy5nZXRDb2xvcih0KSxjLmNvbG9yKHcpLEIpOnd9LEIuc2hvd0xlZ2VuZD0zRGZ1bmN0
aW89Cm4oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlLEIpOkV9LEIudG9vbHRpcHM9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYT0Kcmd1bWVudHMubGVuZ3RoPyhUPTNEZSxCKTpUfSxCLnRv
b2x0aXBDb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50PQpzLmxlbmd0aD8oTj0z
RGUsQik6Tn0sQi5ub0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
Xz0zRGU9CixCKTpffSxCLmJydXNoRXh0ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KHg9M0RlLEIpOnh9LEJ9LD0KZS5tb2RlbHMubXVsdGlCYXI9M0RmdW5jdGlvbigp
e2Z1bmN0aW9uIEMoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXt2YXIgPQpnPTNEbi10Lmxl
ZnQtdC5yaWdodCxDPTNEci10LnRvcC10LmJvdHRvbSxrPTNEZDMuc2VsZWN0KHRoaXMpO2QmJmUu
bGVuZ3RoJiY9CihkPTNEW3t2YWx1ZXM6ZVswXS52YWx1ZXMubWFwKGZ1bmN0aW9uKGUpe3JldHVy
bnt4OmUueCx5OjAsc2VyaWVzOmUuc2VyaWVzLD0Kc2l6ZTouMDF9fSl9XSksYyYmKGU9M0RkMy5s
YXlvdXQuc3RhY2soKS5vZmZzZXQoaCkudmFsdWVzKGZ1bmN0aW9uKGUpe3JldHVyPQpuIGUudmFs
dWVzfSkueShhKSghZS5sZW5ndGgmJmQ/ZDplKSksZS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7ZS52
YWx1ZXMuZm9yRWE9CmNoKGZ1bmN0aW9uKGUpe2Uuc2VyaWVzPTNEdH0pfSksYyYmZVswXS52YWx1
ZXMubWFwKGZ1bmN0aW9uKHQsbil7dmFyIHI9M0QwLD0KaT0zRDA7ZS5tYXAoZnVuY3Rpb24oZSl7
dmFyIHQ9M0RlLnZhbHVlc1tuXTt0LnNpemU9M0RNYXRoLmFicyh0LnkpLHQueTwwPyh0PQoueTE9
M0RpLGktPTNEdC5zaXplKToodC55MT0zRHQuc2l6ZStyLHIrPTNEdC5zaXplKX0pfSk7dmFyIEw9
M0R5JiZiP1tdOmUubWE9CnAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlv
bihlLHQpe3JldHVybnt4OnUoZSx0KSx5OmEoZSx0KSx5MD0KOmUueTAseTE6ZS55MX19KX0pO2ku
ZG9tYWluKHl8fGQzLm1lcmdlKEwpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS54fSkpLnJhPQpu
Z2VCYW5kcyh3fHxbMCxnXSxTKSxzLmRvbWFpbihifHxkMy5leHRlbnQoZDMubWVyZ2UoTCkubWFw
KGZ1bmN0aW9uKGUpe3JldHU9CnJuIGM/ZS55PjA/ZS55MTplLnkxK2UueTplLnl9KS5jb25jYXQo
ZikpKS5yYW5nZShFfHxbQywwXSksaS5kb21haW4oKVswXT0zRD0KPTNEPTNEaS5kb21haW4oKVsx
XSYmKGkuZG9tYWluKClbMF0/aS5kb21haW4oW2kuZG9tYWluKClbMF0taS5kb21haW4oKVswXSou
PQowMSxpLmRvbWFpbigpWzFdK2kuZG9tYWluKClbMV0qLjAxXSk6aS5kb21haW4oWy0xLDFdKSks
cy5kb21haW4oKVswXT0zRD0zRD0KPTNEcy5kb21haW4oKVsxXSYmKHMuZG9tYWluKClbMF0/cy5k
b21haW4oW3MuZG9tYWluKClbMF0rcy5kb21haW4oKVswXSouMDEsPQpzLmRvbWFpbigpWzFdLXMu
ZG9tYWluKClbMV0qLjAxXSk6cy5kb21haW4oWy0xLDFdKSksVD0zRFR8fGksTj0zRE58fHM7dmFy
IEE9Cj0zRGsuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtbXVsdGliYXIiKS5kYXRhKFtlXSksTz0z
REEuZW50ZXIoKS5hcHBlbmQoImciKT0KLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LW11
bHRpYmFyIiksTT0zRE8uYXBwZW5kKCJkZWZzIiksXz0zRE8uYXBwZW5kPQooImciKSxEPTNEQS5z
ZWxlY3QoImciKTtfLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtZ3JvdXBzIiksQS5hdHRy
KCJ0cmE9Cm5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50b3ArIikiKSxNLmFwcGVu
ZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIsIj0KbnYtZWRnZS1jbGlwLSIrbykuYXBwZW5kKCJyZWN0
IiksQS5zZWxlY3QoIiNudi1lZGdlLWNsaXAtIitvKyIgcmVjdCIpLmF0dHIoPQoid2lkdGgiLGcp
LmF0dHIoImhlaWdodCIsQyksRC5hdHRyKCJjbGlwLXBhdGgiLGw/InVybCgjbnYtZWRnZS1jbGlw
LSIrbysiKSI9CjoiIik7dmFyIFA9M0RBLnNlbGVjdCgiLm52LWdyb3VwcyIpLnNlbGVjdEFsbCgi
Lm52LWdyb3VwIikuZGF0YShmdW5jdGlvbihlKT0Ke3JldHVybiBlfSxmdW5jdGlvbihlLHQpe3Jl
dHVybiB0fSk7UC5lbnRlcigpLmFwcGVuZCgiZyIpLnN0eWxlKCJzdHJva2Utb3BhPQpjaXR5Iiwx
ZS02KS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwxZS02KSxQLmV4aXQoKS5zZWxlY3RBbGwoInJlY3Qu
bnYtYmFyIikuYXQ9CnRyKCJ5IixmdW5jdGlvbihlKXtyZXR1cm4gYz9OKGUueTApOk4oMCl9KS5h
dHRyKCJoZWlnaHQiLDApLnJlbW92ZSgpLFAuYXR0cj0KKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXty
ZXR1cm4ibnYtZ3JvdXAgbnYtc2VyaWVzLSIrdH0pLmNsYXNzZWQoImhvdmVyIixmdW5jPQp0aW9u
KGUpe3JldHVybiBlLmhvdmVyfSkuc3R5bGUoImZpbGwiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAo
ZSx0KX0pLnN0eWxlKCI9CnN0cm9rZSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChlLHQpfSksUC5z
dHlsZSgic3Ryb2tlLW9wYWNpdHkiLDEpLnN0eWxlKCJmaT0KbGwtb3BhY2l0eSIsLjc1KTt2YXIg
SD0zRFAuc2VsZWN0QWxsKCJyZWN0Lm52LWJhciIpLmRhdGEoZnVuY3Rpb24odCl7cmV0dXJuPQog
ZCYmIWUubGVuZ3RoP2QudmFsdWVzOnQudmFsdWVzfSk7SC5leGl0KCkucmVtb3ZlKCk7dmFyIEI9
M0RILmVudGVyKCkuYXBwZW49CmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXty
ZXR1cm4gYShlLHQpPDA/Im52LWJhciBuZWdhdGl2ZSI6Im52LT0KYmFyIHBvc2l0aXZlIn0pLmF0
dHIoIngiLGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gYz8wOnIqaS5yYW5nZUJhbmQoKS9lLmxlbmd0
PQpofSkuYXR0cigieSIsZnVuY3Rpb24oZSl7cmV0dXJuIE4oYz9lLnkwOjApfSkuYXR0cigiaGVp
Z2h0IiwwKS5hdHRyKCJ3aWR0aCI9CixpLnJhbmdlQmFuZCgpLyhjPzE6ZS5sZW5ndGgpKS5hdHRy
KCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbD0KYXRlKCIraSh1KGUsdCkp
KyIsMCkifSk7SC5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0LG4pe3JldHVybiBwKGUsbix0KX0p
LnN0PQp5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSx0LG4pe3JldHVybiBwKGUsbix0KX0pLm9uKCJt
b3VzZW92ZXIiLGZ1bmN0aW9uKHQsbik9CntkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgiaG92ZXIi
LCEwKSx4LmVsZW1lbnRNb3VzZW92ZXIoe3ZhbHVlOmEodCxuKSxwb2ludD0KOnQsc2VyaWVzOmVb
dC5zZXJpZXNdLHBvczpbaSh1KHQsbikpK2kucmFuZ2VCYW5kKCkqKGM/ZS5sZW5ndGgvMjp0LnNl
cmllcysuPQo1KS9lLmxlbmd0aCxzKGEodCxuKSsoYz90LnkwOjApKV0scG9pbnRJbmRleDpuLHNl
cmllc0luZGV4OnQuc2VyaWVzLGU6ZDMuZXY9CmVudH0pfSkub24oIm1vdXNlb3V0IixmdW5jdGlv
bih0LG4pe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIsITEpLHguZT0KbGVtZW50TW91
c2VvdXQoe3ZhbHVlOmEodCxuKSxwb2ludDp0LHNlcmllczplW3Quc2VyaWVzXSxwb2ludEluZGV4
Om4sc2VyaWVzPQpJbmRleDp0LnNlcmllcyxlOmQzLmV2ZW50fSl9KS5vbigiY2xpY2siLGZ1bmN0
aW9uKHQsbil7eC5lbGVtZW50Q2xpY2soe3ZhbHU9CmU6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmVb
dC5zZXJpZXNdLHBvczpbaSh1KHQsbikpK2kucmFuZ2VCYW5kKCkqKGM/ZS5sZW5ndD0KaC8yOnQu
c2VyaWVzKy41KS9lLmxlbmd0aCxzKGEodCxuKSsoYz90LnkwOjApKV0scG9pbnRJbmRleDpuLHNl
cmllc0luZGV4OnQuPQpzZXJpZXMsZTpkMy5ldmVudH0pLGQzLmV2ZW50LnN0b3BQcm9wYWdhdGlv
bigpfSkub24oImRibGNsaWNrIixmdW5jdGlvbih0LG49Cil7eC5lbGVtZW50RGJsQ2xpY2soe3Zh
bHVlOmEodCxuKSxwb2ludDp0LHNlcmllczplW3Quc2VyaWVzXSxwb3M6W2kodSh0LG4pKT0KK2ku
cmFuZ2VCYW5kKCkqKGM/ZS5sZW5ndGgvMjp0LnNlcmllcysuNSkvZS5sZW5ndGgscyhhKHQsbikr
KGM/dC55MDowKSldLHBvPQppbnRJbmRleDpuLHNlcmllc0luZGV4OnQuc2VyaWVzLGU6ZDMuZXZl
bnR9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0pLEg9Ci5hdHRyKCJjbGFzcyIsZnVuY3Rp
b24oZSx0KXtyZXR1cm4gYShlLHQpPDA/Im52LWJhciBuZWdhdGl2ZSI6Im52LWJhciBwb3NpdD0K
aXZlIn0pLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIr
aSh1KGUsdCkpKyIsMCkifSksPQp2JiYobXx8KG09M0RlLm1hcChmdW5jdGlvbigpe3JldHVybiEw
fSkpLEguc3R5bGUoImZpbGwiLGZ1bmN0aW9uKGUsdCxuKXtyZXQ9CnVybiBkMy5yZ2IodihlLHQp
KS5kYXJrZXIobS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0pLmZpbHRlcihmdW5jdGlvbihl
LD0KdCl7cmV0dXJuIW1bdF19KVtuXSkudG9TdHJpbmcoKX0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0
aW9uKGUsdCxuKXtyZXR1cm4gZDMuPQpyZ2IodihlLHQpKS5kYXJrZXIobS5tYXAoZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gdH0pLmZpbHRlcihmdW5jdGlvbihlLHQpe3JldHU9CnJuIW1bdF19KVtuXSku
dG9TdHJpbmcoKX0pKSxjP0guYXR0cigieSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcyhjP2UueTE6
MCl9KT0KLmF0dHIoImhlaWdodCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5h
YnMocyhlLnkrKGM/ZS55MDowKSktcyhjPQo/ZS55MDowKSksMSl9KS5hdHRyKCJ4IixmdW5jdGlv
bih0LG4pe3JldHVybiBjPzA6dC5zZXJpZXMqaS5yYW5nZUJhbmQoKS9lLmw9CmVuZ3RofSkuYXR0
cigid2lkdGgiLGkucmFuZ2VCYW5kKCkvKGM/MTplLmxlbmd0aCkpOkguYXR0cigieCIsZnVuY3Rp
b24odCxuKT0Ke3JldHVybiB0LnNlcmllcyppLnJhbmdlQmFuZCgpL2UubGVuZ3RofSkuYXR0cigi
d2lkdGgiLGkucmFuZ2VCYW5kKCkvZS5sZW5nPQp0aCkuYXR0cigieSIsZnVuY3Rpb24oZSx0KXty
ZXR1cm4gYShlLHQpPDA/cygwKTpzKDApLXMoYShlLHQpKTwxP3MoMCktMTpzKGE9CihlLHQpKXx8
MH0pLmF0dHIoImhlaWdodCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5hYnMo
cyhhKGUsdCkpLT0KcygwKSksMSl8fDB9KSxUPTNEaS5jb3B5KCksTj0zRHMuY29weSgpfSksQ312
YXIgdD0zRHt0b3A6MCxyaWdodDowLGJvdHRvbTowPQosbGVmdDowfSxuPTNEOTYwLHI9M0Q1MDAs
aT0zRGQzLnNjYWxlLm9yZGluYWwoKSxzPTNEZDMuc2NhbGUubGluZWFyKCksbz0zRE09CmF0aC5m
bG9vcihNYXRoLnJhbmRvbSgpKjFlNCksdT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9LGE9M0Rm
dW5jdGlvbihlKXtyZT0KdHVybiBlLnl9LGY9M0RbMF0sbD0zRCEwLGM9M0QhMSxoPTNEInplcm8i
LHA9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLGQ9M0QhPQoxLHY9M0RudWxsLG0sZz0zRDEyMDAs
eSxiLHcsRSxTPTNELjEseD0zRGQzLmRpc3BhdGNoKCJjaGFydENsaWNrIiwiZWxlbWVudEM9Cmxp
Y2siLCJlbGVtZW50RGJsQ2xpY2siLCJlbGVtZW50TW91c2VvdmVyIiwiZWxlbWVudE1vdXNlb3V0
IiksVCxOO3JldHVybiBDLj0KZGlzcGF0Y2g9M0R4LEMub3B0aW9ucz0zRGUudXRpbHMub3B0aW9u
c0Z1bmMuYmluZChDKSxDLng9M0RmdW5jdGlvbihlKXtyZXR1PQpybiBhcmd1bWVudHMubGVuZ3Ro
Pyh1PTNEZSxDKTp1fSxDLnk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD89
CihhPTNEZSxDKTphfSxDLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyh0LnRvcD0zRHR5cGVvZj0KIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQu
cmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lPQoucmlnaHQ6dC5yaWdodCx0
LmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHRv
bSw9CnQubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxD
KTp0fSxDLndpZHRoPTNEZnVuY3Rpbz0KbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0z
RGUsQyk6bn0sQy5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJnPQp1bWVudHMubGVuZ3Ro
PyhyPTNEZSxDKTpyfSxDLnhTY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyg9Cmk9M0RlLEMpOml9LEMueVNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KHM9M0RlLEMpOnN9LEMueD0KRG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHk9M0RlLEMpOnl9LEMueURvbWFpbj0zRGZ1bmN0PQppb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9M0RlLEMpOmJ9LEMueFJhbmdlPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGE9CnJndW1lbnRzLmxlbmd0aD8odz0zRGUsQyk6d30sQy55UmFuZ2U9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD0KPyhFPTNEZSxDKTpFfSxDLmZvcmNlWT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSxDKTpmfSxDPQouc3RhY2tl
ZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSxDKTpjfSxDLnN0
YWNrT2Zmc2V0PQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUs
Qyk6aH0sQy5jbGlwRWRnZT0zRGZ1bmN0aW9uKGU9Cil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGw9M0RlLEMpOmx9LEMuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbj0KdHMubGVu
Z3RoPyhwPTNEZS51dGlscy5nZXRDb2xvcih0KSxDKTpwfSxDLmJhckNvbG9yPTNEZnVuY3Rpb24o
dCl7cmV0dXJuIGFyPQpndW1lbnRzLmxlbmd0aD8odj0zRGUudXRpbHMuZ2V0Q29sb3IodCksQyk6
dn0sQy5kaXNhYmxlZD0zRGZ1bmN0aW9uKGUpe3JldHU9CnJuIGFyZ3VtZW50cy5sZW5ndGg/KG09
M0RlLEMpOm19LEMuaWQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD0KPyhv
PTNEZSxDKTpvfSxDLmhpZGVhYmxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGQ9M0RlLEMpOmR9PQosQy5kZWxheT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhnPTNEZSxDKTpnfSxDLmdyb3VwU3BhY2luZz0KPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KFM9M0RlLEMpOlN9LEN9LGUubW9kZWxzLm11bHRpQmFyQ2hhPQpy
dD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gQShlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3Zh
ciBiPTNEZDMuc2VsZWN0KHQ9Cmhpcyksaz0zRHRoaXMsTz0zRCh1fHxwYXJzZUludChiLnN0eWxl
KCJ3aWR0aCIpKXx8OTYwKS1vLmxlZnQtby5yaWdodCxNPTNEKD0KYXx8cGFyc2VJbnQoYi5zdHls
ZSgiaGVpZ2h0IikpfHw0MDApLW8udG9wLW8uYm90dG9tO0EudXBkYXRlPTNEZnVuY3Rpb24oKXti
PQouY2FsbChBKX0sQS5jb250YWluZXI9M0R0aGlzLFMuZGlzYWJsZWQ9M0RlLm1hcChmdW5jdGlv
bihlKXtyZXR1cm4hIWUuZGlzYWI9CmxlZH0pO2lmKCF4KXt2YXIgXzt4PTNEe307Zm9yKF8gaW4g
UylTW19daW5zdGFuY2VvZiBBcnJheT94W19dPTNEU1tfXS5zbGljZT0KKDApOnhbX109M0RTW19d
fWlmKCFlfHwhZS5sZW5ndGh8fCFlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMu
bGVuPQpndGh9KS5sZW5ndGgpe3ZhciBEPTNEYi5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5kYXRh
KFtUXSk7cmV0dXJuIEQuZW50ZXIoKS49CmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnZk
MyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2VtIikuc3R5bGUoInRleD0KdC1hbmNob3IiLCJt
aWRkbGUiKSxELmF0dHIoIngiLG8ubGVmdCtPLzIpLmF0dHIoInkiLG8udG9wK00vMikudGV4dChm
dW5jdGlvPQpuKGUpe3JldHVybiBlfSksQX1iLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbW92
ZSgpLHc9M0R0LnhTY2FsZSgpLEU9M0R0Lnk9ClNjYWxlKCk7dmFyIFA9M0RiLnNlbGVjdEFsbCgi
Zy5udi13cmFwLm52LW11bHRpQmFyV2l0aExlZ2VuZCIpLmRhdGEoW2VdKSxIPQo9M0RQLmVudGVy
KCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbXVsdGlCYXJXaXRo
TGVnZW5kIik9Ci5hcHBlbmQoImciKSxCPTNEUC5zZWxlY3QoImciKTtILmFwcGVuZCgiZyIpLmF0
dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksSD0KLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwi
bnYteSBudi1heGlzIiksSC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWJhPQpyc1dyYXAi
KSxILmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpLEguYXBwZW5kKCJn
IikuYXR0cigiY2w9CmFzcyIsIm52LWNvbnRyb2xzV3JhcCIpLGMmJihpLndpZHRoKE8tQygpKSx0
LmJhckNvbG9yKCkmJmUuZm9yRWFjaChmdW5jdGlvbj0KKGUsdCl7ZS5jb2xvcj0zRGQzLnJnYigi
I2NjYyIpLmRhcmtlcih0KjEuNSkudG9TdHJpbmcoKX0pLEIuc2VsZWN0KCIubnYtbGVnPQplbmRX
cmFwIikuZGF0dW0oZSkuY2FsbChpKSxvLnRvcCE9M0RpLmhlaWdodCgpJiYoby50b3A9M0RpLmhl
aWdodCgpLE09M0QoYXw9CnxwYXJzZUludChiLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktby50b3At
by5ib3R0b20pLEIuc2VsZWN0KCIubnYtbGVnZW5kV3JhcD0KIikuYXR0cigidHJhbnNmb3JtIiwi
dHJhbnNsYXRlKCIrQygpKyIsIisgLW8udG9wKyIpIikpO2lmKGwpe3ZhciBqPTNEW3trZXk6PQoi
R3JvdXBlZCIsZGlzYWJsZWQ6dC5zdGFja2VkKCl9LHtrZXk6IlN0YWNrZWQiLGRpc2FibGVkOiF0
LnN0YWNrZWQoKX1dO3Mud2k9CmR0aChDKCkpLmNvbG9yKFsiIzQ0NCIsIiM0NDQiLCIjNDQ0Il0p
LEIuc2VsZWN0KCIubnYtY29udHJvbHNXcmFwIikuZGF0dW0oaj0KKS5hdHRyKCJ0cmFuc2Zvcm0i
LCJ0cmFuc2xhdGUoMCwiKyAtby50b3ArIikiKS5jYWxsKHMpfVAuYXR0cigidHJhbnNmb3JtIiwi
PQp0cmFuc2xhdGUoIitvLmxlZnQrIiwiK28udG9wKyIpIiksZCYmQi5zZWxlY3QoIi5udi15Lm52
LWF4aXMiKS5hdHRyKCJ0cmFuc2Y9Cm9ybSIsInRyYW5zbGF0ZSgiK08rIiwwKSIpLHQuZGlzYWJs
ZWQoZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJsZWR9KT0KKS53aWR0aChPKS5oZWln
aHQoTSkuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8ZihlLHQpfSku
ZmlsPQp0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZH0pKTt2YXIgRj0zREIu
c2VsZWN0KCIubnYtYmFyc1dyYXAiKS49CmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVy
biFlLmRpc2FibGVkfSkpO0YuY2FsbCh0KTtpZihoKXtuLnNjYWxlKHcpLj0KdGlja3MoTy8xMDAp
LnRpY2tTaXplKC1NLDApLEIuc2VsZWN0KCIubnYteC5udi1heGlzIikuYXR0cigidHJhbnNmb3Jt
IiwidHJhPQpuc2xhdGUoMCwiK0UucmFuZ2UoKVswXSsiKSIpLEIuc2VsZWN0KCIubnYteC5udi1h
eGlzIikuY2FsbChuKTt2YXIgST0zREIuc2U9CmxlY3QoIi5udi14Lm52LWF4aXMgPiBnIikuc2Vs
ZWN0QWxsKCJnIik7SS5zZWxlY3RBbGwoImxpbmUsIHRleHQiKS5zdHlsZSgibz0KcGFjaXR5Iiwx
KTtpZihtKXt2YXIgcT0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiK2UrIiwiK3Qr
IikifSxSPTNEPQo1LFU9M0QxNztJLnNlbGVjdEFsbCgidGV4dCIpLmF0dHIoInRyYW5zZm9ybSIs
ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBxKDAsbiU9CjI9M0Q9M0QwP1I6VSl9KTt2YXIgej0zRGQz
LnNlbGVjdEFsbCgiLm52LXgubnYtYXhpcyAubnYtd3JhcCBnIGcgdGV4dCIpWzBdLj0KbGVuZ3Ro
O0Iuc2VsZWN0QWxsKCIubnYteC5udi1heGlzIC5udi1heGlzTWF4TWluIHRleHQiKS5hdHRyKCJ0
cmFuc2Zvcm0iLGZ1PQpuY3Rpb24oZSx0KXtyZXR1cm4gcSgwLHQ9M0Q9M0Q9M0QwfHx6JTIhPTNE
PTNEMD9VOlIpfSl9diYmSS5maWx0ZXIoZnVuY3Rpb249Cih0LG4pe3JldHVybiBuJU1hdGguY2Vp
bChlWzBdLnZhbHVlcy5sZW5ndGgvKE8vMTAwKSkhPTNEPTNEMH0pLnNlbGVjdEFsbCgidD0KZXh0
LCBsaW5lIikuc3R5bGUoIm9wYWNpdHkiLDApLGcmJkkuc2VsZWN0QWxsKCIudGljayB0ZXh0Iiku
YXR0cigidHJhbnNmb3JtPQoiLCJyb3RhdGUoIitnKyIgMCwwKSIpLnN0eWxlKCJ0ZXh0LWFuY2hv
ciIsZz4wPyJzdGFydCI6ImVuZCIpLEIuc2VsZWN0KCIubnY9Ci14Lm52LWF4aXMiKS5zZWxlY3RB
bGwoImcubnYtYXhpc01heE1pbiB0ZXh0Iikuc3R5bGUoIm9wYWNpdHkiLDEpfXAmJihyLnNjYT0K
bGUoRSkudGlja3MoTS8zNikudGlja1NpemUoLU8sMCksQi5zZWxlY3QoIi5udi15Lm52LWF4aXMi
KS5jYWxsKHIpKSxpLmRpc3BhPQp0Y2gub24oInN0YXRlQ2hhbmdlIixmdW5jdGlvbihlKXtTPTNE
ZSxOLnN0YXRlQ2hhbmdlKFMpLEEudXBkYXRlKCl9KSxzLmRpc3A9CmF0Y2gub24oImxlZ2VuZENs
aWNrIixmdW5jdGlvbihlLG4pe2lmKCFlLmRpc2FibGVkKXJldHVybjtqPTNEai5tYXAoZnVuY3Rp
bz0KbihlKXtyZXR1cm4gZS5kaXNhYmxlZD0zRCEwLGV9KSxlLmRpc2FibGVkPTNEITE7c3dpdGNo
KGUua2V5KXtjYXNlIkdyb3VwZWQiPQo6dC5zdGFja2VkKCExKTticmVhaztjYXNlIlN0YWNrZWQi
OnQuc3RhY2tlZCghMCl9Uy5zdGFja2VkPTNEdC5zdGFja2VkKCksTi49CnN0YXRlQ2hhbmdlKFMp
LEEudXBkYXRlKCl9KSxOLm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7eSYmTChlLGsucGFy
ZW50Tj0Kb2RlKX0pLE4ub24oImNoYW5nZVN0YXRlIixmdW5jdGlvbihuKXt0eXBlb2Ygbi5kaXNh
YmxlZCE9M0QidW5kZWZpbmVkIiYmKGUuPQpmb3JFYWNoKGZ1bmN0aW9uKGUsdCl7ZS5kaXNhYmxl
ZD0zRG4uZGlzYWJsZWRbdF19KSxTLmRpc2FibGVkPTNEbi5kaXNhYmxlZCk9Cix0eXBlb2Ygbi5z
dGFja2VkIT0zRCJ1bmRlZmluZWQiJiYodC5zdGFja2VkKG4uc3RhY2tlZCksUy5zdGFja2VkPTNE
bi5zdGFjaz0KZWQpLEEudXBkYXRlKCl9KX0pLEF9dmFyIHQ9M0RlLm1vZGVscy5tdWx0aUJhcigp
LG49M0RlLm1vZGVscy5heGlzKCkscj0zRGUuPQptb2RlbHMuYXhpcygpLGk9M0RlLm1vZGVscy5s
ZWdlbmQoKSxzPTNEZS5tb2RlbHMubGVnZW5kKCksbz0zRHt0b3A6MzAscmlnaHQ9CjoyMCxib3R0
b206NTAsbGVmdDo2MH0sdT0zRG51bGwsYT0zRG51bGwsZj0zRGUudXRpbHMuZGVmYXVsdENvbG9y
KCksbD0zRCEwLD0KYz0zRCEwLGg9M0QhMCxwPTNEITAsZD0zRCExLHY9M0QhMCxtPTNEITEsZz0z
RDAseT0zRCEwLGI9M0RmdW5jdGlvbihlLHQsbixyPQosaSl7cmV0dXJuIjxoMz4iK2UrIjwvaDM+
IisiPHA+IituKyIgb24gIit0KyI8L3A+In0sdyxFLFM9M0R7c3RhY2tlZDohMX0seD0KPTNEbnVs
bCxUPTNEIk5vIERhdGEgQXZhaWxhYmxlLiIsTj0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIs
InRvb2x0aXBIaWRlPQoiLCJzdGF0ZUNoYW5nZSIsImNoYW5nZVN0YXRlIiksQz0zRGZ1bmN0aW9u
KCl7cmV0dXJuIGw/MTgwOjB9LGs9M0QwO3Quc3RhY2s9CmVkKCExKSxuLm9yaWVudCgiYm90dG9t
IikudGlja1BhZGRpbmcoNykuaGlnaGxpZ2h0WmVybyghMCkuc2hvd01heE1pbighMSkudD0KaWNr
Rm9ybWF0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksci5vcmllbnQoZD8icmlnaHQiOiJsZWZ0Iiku
dGlja0Zvcm1hdChkMy5mPQpvcm1hdCgiLC4xZiIpKSxzLnVwZGF0ZVN0YXRlKCExKTt2YXIgTD0z
RGZ1bmN0aW9uKGkscyl7dmFyIG89M0RpLnBvc1swXSsocy49Cm9mZnNldExlZnR8fDApLHU9M0Rp
LnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLGE9M0RuLnRpY2tGb3JtYXQoKSh0LngoKShpLnBvaT0K
bnQsaS5wb2ludEluZGV4KSksZj0zRHIudGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbnQsaS5wb2lu
dEluZGV4KSksbD0zRGIoaS5zPQplcmllcy5rZXksYSxmLGksQSk7ZS50b29sdGlwLnNob3coW28s
dV0sbCxpLnZhbHVlPDA/Im4iOiJzIixudWxsLHMpfTtyZXR1cm49CiB0LmRpc3BhdGNoLm9uKCJl
bGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK28u
bD0KZWZ0LGUucG9zWzFdK28udG9wXSxOLnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigi
ZWxlbWVudE1vdXNlb3V0LnRvb2x0PQppcCIsZnVuY3Rpb24oZSl7Ti50b29sdGlwSGlkZShlKX0p
LE4ub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbigpe3kmJmUudG9vbHQ9CmlwLmNsZWFudXAoKX0p
LEEuZGlzcGF0Y2g9M0ROLEEubXVsdGliYXI9M0R0LEEubGVnZW5kPTNEaSxBLnhBeGlzPTNEbixB
LnlBeD0KaXM9M0RyLGQzLnJlYmluZChBLHQsIngiLCJ5IiwieERvbWFpbiIsInlEb21haW4iLCJ4
UmFuZ2UiLCJ5UmFuZ2UiLCJmb3JjZVgiPQosImZvcmNlWSIsImNsaXBFZGdlIiwiaWQiLCJzdGFj
a2VkIiwic3RhY2tPZmZzZXQiLCJkZWxheSIsImJhckNvbG9yIiwiZ3JvdXA9ClNwYWNpbmciKSxB
Lm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoQSksQS5tYXJnaW49M0RmdW5jdGlv
bihlKXtyZT0KdHVybiBhcmd1bWVudHMubGVuZ3RoPyhvLnRvcD0zRHR5cGVvZiBlLnRvcCE9M0Qi
dW5kZWZpbmVkIj9lLnRvcDpvLnRvcCxvLnJpPQpnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5k
ZWZpbmVkIj9lLnJpZ2h0Om8ucmlnaHQsby5ib3R0b209M0R0eXBlb2YgZS5ib3Q9CnRvbSE9M0Qi
dW5kZWZpbmVkIj9lLmJvdHRvbTpvLmJvdHRvbSxvLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1
bmRlZmluZWQiPz0KZS5sZWZ0Om8ubGVmdCxBKTpvfSxBLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RlLEEpPQo6dX0sQS5oZWlnaHQ9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0zRGUsQSk6YX0sQS5jb2xvcj0zRGY9CnVuY3Rp
b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLnV0aWxzLmdldENvbG9yKHQpLGku
Y29sb3IoZiksQSk6Zj0KfSxBLnNob3dDb250cm9scz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhsPTNEZSxBKTpsfSxBLnNob3dMPQplZ2VuZD0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSxBKTpjfSxBLnNob3dYQXhpcz0zRGZ1bmM9CnRp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLEEpOmh9LEEuc2hvd1lBeGlzPTNE
ZnVuY3Rpb24oZSl7cmV0dT0Kcm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsQSk6cH0sQS5yaWdo
dEFsaWduWUF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJnPQp1bWVudHMubGVuZ3RoPyhkPTNE
ZSxyLm9yaWVudChlPyJyaWdodCI6ImxlZnQiKSxBKTpkfSxBLnJlZHVjZVhUaWNrcz0zRGZ1bmM9
CnRpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9M0RlLEEpOnZ9LEEucm90YXRlTGFi
ZWxzPTNEZnVuY3Rpb24oZSl7cj0KZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0zRGUsQSk6Z30s
QS5zdGFnZ2VyTGFiZWxzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyPQpndW1lbnRzLmxlbmd0aD8o
bT0zRGUsQSk6bX0sQS50b29sdGlwPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg9Cj8oYj0zRGUsQSk6Yn0sQS50b29sdGlwcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyh5PTNEZSxBKTp5fT0KLEEudG9vbHRpcENvbnRlbnQ9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0zRGUsQSk6Yn0sQS5zdGF0PQplPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFM9M0RlLEEpOlN9LEEuZGVmYXVsdFN0YXRlPTNE
ZnVuY3Q9CmlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD0zRGUsQSk6eH0sQS5ub0Rh
dGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYT0Kcmd1bWVudHMubGVuZ3RoPyhUPTNEZSxBKTpUfSxB
LnRyYW5zaXRpb25EdXJhdGlvbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1PQptZW50cy5sZW5n
dGg/KGs9M0RlLEEpOmt9LEF9LGUubW9kZWxzLm11bHRpQmFySG9yaXpvbnRhbD0zRGZ1bmN0aW9u
KCl7ZnVuY3Q9CmlvbiBDKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIGk9M0RuLXQu
bGVmdC10LnJpZ2h0LHk9M0RyLXQudG9wLXQuYj0Kb3R0b20sQz0zRGQzLnNlbGVjdCh0aGlzKTtw
JiYoZT0zRGQzLmxheW91dC5zdGFjaygpLm9mZnNldCgiemVybyIpLnZhbHVlcyhmPQp1bmN0aW9u
KGUpe3JldHVybiBlLnZhbHVlc30pLnkoYSkoZSkpLGUuZm9yRWFjaChmdW5jdGlvbihlLHQpe2Uu
dmFsdWVzLmZvckU9CmFjaChmdW5jdGlvbihlKXtlLnNlcmllcz0zRHR9KX0pLHAmJmVbMF0udmFs
dWVzLm1hcChmdW5jdGlvbih0LG4pe3ZhciByPTNEMD0KLGk9M0QwO2UubWFwKGZ1bmN0aW9uKGUp
e3ZhciB0PTNEZS52YWx1ZXNbbl07dC5zaXplPTNETWF0aC5hYnModC55KSx0Lnk8MD8oPQp0Lnkx
PTNEaS10LnNpemUsaS09M0R0LnNpemUpOih0LnkxPTNEcixyKz0zRHQuc2l6ZSl9KX0pO3ZhciBr
PTNEYiYmdz9bXTplLm09CmFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5tYXAoZnVuY3Rp
b24oZSx0KXtyZXR1cm57eDp1KGUsdCkseTphKGUsdCkseT0KMDplLnkwLHkxOmUueTF9fSl9KTtz
LmRvbWFpbihifHxkMy5tZXJnZShrKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0pKS5yPQph
bmdlQmFuZHMoRXx8WzAseV0sLjEpLG8uZG9tYWluKHd8fGQzLmV4dGVudChkMy5tZXJnZShrKS5t
YXAoZnVuY3Rpb24oZSl7cmU9CnR1cm4gcD9lLnk+MD9lLnkxK2UueTplLnkxOmUueX0pLmNvbmNh
dChmKSkpLGQmJiFwP28ucmFuZ2UoU3x8W28uZG9tYWluKClbMD0KXTwwP206MCxpLShvLmRvbWFp
bigpWzFdPjA/bTowKV0pOm8ucmFuZ2UoU3x8WzAsaV0pLFQ9M0RUfHxzLE49M0ROfHxkMy5zY2Fs
PQplLmxpbmVhcigpLmRvbWFpbihvLmRvbWFpbigpKS5yYW5nZShbbygwKSxvKDApXSk7dmFyIEw9
M0RkMy5zZWxlY3QodGhpcykuc2U9CmxlY3RBbGwoImcubnYtd3JhcC5udi1tdWx0aWJhckhvcml6
b250YWwiKS5kYXRhKFtlXSksQT0zREwuZW50ZXIoKS5hcHBlbmQoIj0KZyIpLmF0dHIoImNsYXNz
IiwibnZkMyBudi13cmFwIG52LW11bHRpYmFySG9yaXpvbnRhbCIpLE89M0RBLmFwcGVuZCgiZGVm
cyIpPQosTT0zREEuYXBwZW5kKCJnIiksXz0zREwuc2VsZWN0KCJnIik7TS5hcHBlbmQoImciKS5h
dHRyKCJjbGFzcyIsIm52LWdyb3VwcyI9CiksTC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUo
Iit0LmxlZnQrIiwiK3QudG9wKyIpIik7dmFyIEQ9M0RMLnNlbGVjdCgiLj0KbnYtZ3JvdXBzIiku
c2VsZWN0QWxsKCIubnYtZ3JvdXAiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlfSxmdW5jdGlv
bihlLHQpPQp7cmV0dXJuIHR9KTtELmVudGVyKCkuYXBwZW5kKCJnIikuc3R5bGUoInN0cm9rZS1v
cGFjaXR5IiwxZS02KS5zdHlsZSgiZmlsbC09Cm9wYWNpdHkiLDFlLTYpLEQuZXhpdCgpLnN0eWxl
KCJzdHJva2Utb3BhY2l0eSIsMWUtNikuc3R5bGUoImZpbGwtb3BhY2l0eSIsMT0KZS02KS5yZW1v
dmUoKSxELmF0dHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiJudi1ncm91cCBudi1zZXJp
ZXMtIit0fSkuPQpjbGFzc2VkKCJob3ZlciIsZnVuY3Rpb24oZSl7cmV0dXJuIGUuaG92ZXJ9KS5z
dHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXQ9CnVybiBsKGUsdCl9KS5zdHlsZSgic3Ryb2tl
IixmdW5jdGlvbihlLHQpe3JldHVybiBsKGUsdCl9KSxELnN0eWxlKCJzdHJva2Utbz0KcGFjaXR5
IiwxKS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwuNzUpO3ZhciBQPTNERC5zZWxlY3RBbGwoImcubnYt
YmFyIikuZGF0YShmPQp1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlc30pO1AuZXhpdCgpLnJlbW92
ZSgpO3ZhciBIPTNEUC5lbnRlcigpLmFwcGVuZCgiZyI9CikuYXR0cigidHJhbnNmb3JtIixmdW5j
dGlvbih0LG4scil7cmV0dXJuInRyYW5zbGF0ZSgiK04ocD90LnkwOjApKyIsIisocD8wOj0Kcipz
LnJhbmdlQmFuZCgpL2UubGVuZ3RoK3ModSh0LG4pKSkrIikifSk7SC5hcHBlbmQoInJlY3QiKS5h
dHRyKCJ3aWR0aCIsMCkuPQphdHRyKCJoZWlnaHQiLHMucmFuZ2VCYW5kKCkvKHA/MTplLmxlbmd0
aCkpLFAub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24odCxuKXs9CmQzLnNlbGVjdCh0aGlzKS5jbGFz
c2VkKCJob3ZlciIsITApLHguZWxlbWVudE1vdXNlb3Zlcih7dmFsdWU6YSh0LG4pLHBvaW50Oj0K
dCxzZXJpZXM6ZVt0LnNlcmllc10scG9zOltvKGEodCxuKSsocD90LnkwOjApKSxzKHUodCxuKSkr
cy5yYW5nZUJhbmQoKSoocD9lPQoubGVuZ3RoLzI6dC5zZXJpZXMrLjUpL2UubGVuZ3RoXSxwb2lu
dEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpkMy5ldmU9Cm50fSl9KS5vbigibW91c2Vv
dXQiLGZ1bmN0aW9uKHQsbil7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMSkseC5l
bD0KZW1lbnRNb3VzZW91dCh7dmFsdWU6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNd
LHBvaW50SW5kZXg6bixzZXJpZXNJPQpuZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnR9KX0pLm9uKCJj
bGljayIsZnVuY3Rpb24odCxuKXt4LmVsZW1lbnRDbGljayh7dmFsdWU9CjphKHQsbikscG9pbnQ6
dCxzZXJpZXM6ZVt0LnNlcmllc10scG9zOltzKHUodCxuKSkrcy5yYW5nZUJhbmQoKSoocD9lLmxl
bmd0aD0KLzI6dC5zZXJpZXMrLjUpL2UubGVuZ3RoLG8oYSh0LG4pKyhwP3QueTA6MCkpXSxwb2lu
dEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zPQplcmllcyxlOmQzLmV2ZW50fSksZDMuZXZlbnQuc3Rv
cFByb3BhZ2F0aW9uKCl9KS5vbigiZGJsY2xpY2siLGZ1bmN0aW9uKHQsbik9Cnt4LmVsZW1lbnRE
YmxDbGljayh7dmFsdWU6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvczpbcyh1
KHQsbikpKz0Kcy5yYW5nZUJhbmQoKSoocD9lLmxlbmd0aC8yOnQuc2VyaWVzKy41KS9lLmxlbmd0
aCxvKGEodCxuKSsocD90LnkwOjApKV0scG9pPQpudEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJp
ZXMsZTpkMy5ldmVudH0pLGQzLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfSksSC49CmFwcGVuZCgi
dGV4dCIpLGQmJiFwPyhQLnNlbGVjdCgidGV4dCIpLmF0dHIoInRleHQtYW5jaG9yIixmdW5jdGlv
bihlLHQpe3JldD0KdXJuIGEoZSx0KTwwPyJlbmQiOiJzdGFydCJ9KS5hdHRyKCJ5IixzLnJhbmdl
QmFuZCgpLyhlLmxlbmd0aCoyKSkuYXR0cigiZHkiPQosIi4zMmVtIikudGV4dChmdW5jdGlvbihl
LHQpe3JldHVybiBnKGEoZSx0KSl9KSxQLnNlbGVjdCgidGV4dCIpLmF0dHIoIngiLGY9CnVuY3Rp
b24oZSx0KXtyZXR1cm4gYShlLHQpPDA/LTQ6byhhKGUsdCkpLW8oMCkrNH0pKTpQLnNlbGVjdEFs
bCgidGV4dCIpLnRleD0KdCgiIiksdiYmIXA/KEguYXBwZW5kKCJ0ZXh0IikuY2xhc3NlZCgibnYt
YmFyLWxhYmVsIiwhMCksUC5zZWxlY3QoInRleHQubnYtPQpiYXItbGFiZWwiKS5hdHRyKCJ0ZXh0
LWFuY2hvciIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShlLHQpPDA/InN0YXJ0IjoiZW5kIn09Ciku
YXR0cigieSIscy5yYW5nZUJhbmQoKS8oZS5sZW5ndGgqMikpLmF0dHIoImR5IiwiLjMyZW0iKS50
ZXh0KGZ1bmN0aW9uKGUsdD0KKXtyZXR1cm4gdShlLHQpfSksUC5zZWxlY3QoInRleHQubnYtYmFy
LWxhYmVsIikuYXR0cigieCIsZnVuY3Rpb24oZSx0KXtyZXR1PQpybiBhKGUsdCk8MD9vKDApLW8o
YShlLHQpKSs0Oi00fSkpOlAuc2VsZWN0QWxsKCJ0ZXh0Lm52LWJhci1sYWJlbCIpLnRleHQoIiI9
CiksUC5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShlLHQpPDA/Im52LWJhciBu
ZWdhdGl2ZSI6Im52LWJhciBwbz0Kc2l0aXZlIn0pLGMmJihofHwoaD0zRGUubWFwKGZ1bmN0aW9u
KCl7cmV0dXJuITB9KSksUC5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oPQplLHQsbil7cmV0dXJuIGQz
LnJnYihjKGUsdCkpLmRhcmtlcihoLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiB0fSkuZmlsdGVy
KGY9CnVuY3Rpb24oZSx0KXtyZXR1cm4haFt0XX0pW25dKS50b1N0cmluZygpfSkuc3R5bGUoInN0
cm9rZSIsZnVuY3Rpb24oZSx0LG4pez0KcmV0dXJuIGQzLnJnYihjKGUsdCkpLmRhcmtlcihoLm1h
cChmdW5jdGlvbihlLHQpe3JldHVybiB0fSkuZmlsdGVyKGZ1bmN0aW9uPQooZSx0KXtyZXR1cm4h
aFt0XX0pW25dKS50b1N0cmluZygpfSkpLHA/UC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUs
dCl7cmU9CnR1cm4idHJhbnNsYXRlKCIrbyhlLnkxKSsiLCIrcyh1KGUsdCkpKyIpIn0pLnNlbGVj
dCgicmVjdCIpLmF0dHIoIndpZHRoIixmdT0KbmN0aW9uKGUsdCl7cmV0dXJuIE1hdGguYWJzKG8o
YShlLHQpK2UueTApLW8oZS55MCkpfSkuYXR0cigiaGVpZ2h0IixzLnJhbmdlPQpCYW5kKCkpOlAu
YXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0LG4pe3JldHVybiJ0cmFuc2xhdGUoIisoYSh0LG4p
PDA/byhhKHQ9CixuKSk6bygwKSkrIiwiKyh0LnNlcmllcypzLnJhbmdlQmFuZCgpL2UubGVuZ3Ro
K3ModSh0LG4pKSkrIikifSkuc2VsZWN0KCJyZT0KY3QiKS5hdHRyKCJoZWlnaHQiLHMucmFuZ2VC
YW5kKCkvZS5sZW5ndGgpLmF0dHIoIndpZHRoIixmdW5jdGlvbihlLHQpe3JldHVyPQpuIE1hdGgu
bWF4KE1hdGguYWJzKG8oYShlLHQpKS1vKDApKSwxKX0pLFQ9M0RzLmNvcHkoKSxOPTNEby5jb3B5
KCl9KSxDfXZhciA9CnQ9M0R7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9LG49M0Q5NjAs
cj0zRDUwMCxpPTNETWF0aC5mbG9vcihNYXRoLnJhbj0KZG9tKCkqMWU0KSxzPTNEZDMuc2NhbGUu
b3JkaW5hbCgpLG89M0RkMy5zY2FsZS5saW5lYXIoKSx1PTNEZnVuY3Rpb24oZSl7cmV0PQp1cm4g
ZS54fSxhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0sZj0zRFswXSxsPTNEZS51dGlscy5kZWZh
dWx0Q29sb3IoKSxjPQo9M0RudWxsLGgscD0zRCExLGQ9M0QhMSx2PTNEITEsbT0zRDYwLGc9M0Rk
My5mb3JtYXQoIiwuMmYiKSx5PTNEMTIwMCxiLHcsRSw9ClMseD0zRGQzLmRpc3BhdGNoKCJjaGFy
dENsaWNrIiwiZWxlbWVudENsaWNrIiwiZWxlbWVudERibENsaWNrIiwiZWxlbWVudE1vdT0Kc2Vv
dmVyIiwiZWxlbWVudE1vdXNlb3V0IiksVCxOO3JldHVybiBDLmRpc3BhdGNoPTNEeCxDLm9wdGlv
bnM9M0RlLnV0aWxzLm9wPQp0aW9uc0Z1bmMuYmluZChDKSxDLng9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsQyk6dX0sQy49Cnk9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0zRGUsQyk6YX0sQy5tYXJnaW49M0RmdW5jdGlvbihlKT0K
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZp
bmVkIj9lLnRvcDp0LnRvcCx0PQoucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVk
Ij9lLnJpZ2h0OnQucmlnaHQsdC5ib3R0b209M0R0eXBlb2YgZS49CmJvdHRvbSE9M0QidW5kZWZp
bmVkIj9lLmJvdHRvbTp0LmJvdHRvbSx0LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmlu
ZT0KZCI/ZS5sZWZ0OnQubGVmdCxDKTp0fSxDLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KG49M0RlPQosQyk6bn0sQy5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0zRGUsQyk6cn0sQy54U2NhbGU9Cj0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPTNEZSxDKTpzfSxDLnlTY2FsZT0zRGZ1bmN0aW9u
KGUpez0KcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RlLEMpOm99LEMueERvbWFpbj0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVuPQp0cy5sZW5ndGg/KGI9M0RlLEMpOmJ9LEMueURvbWFp
bj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3PQo9M0RlLEMpOnd9LEMu
eFJhbmdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlLEMpOkV9
LEMueVI9CmFuZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUz0zRGUs
Qyk6U30sQy5mb3JjZVk9M0RmdW5jdGlvbj0KKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhm
PTNEZSxDKTpmfSxDLnN0YWNrZWQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJnPQp1bWVudHMubGVu
Z3RoPyhwPTNEZSxDKTpwfSxDLmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGw9Cj0zRGUudXRpbHMuZ2V0Q29sb3IodCksQyk6bH0sQy5iYXJDb2xvcj0zRGZ1bmN0
aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZz0KdGg/KGM9M0RlLnV0aWxzLmdldENvbG9yKHQp
LEMpOmN9LEMuZGlzYWJsZWQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzPQoubGVuZ3Ro
PyhoPTNEZSxDKTpofSxDLmlkPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGk9M0RlLEMpOmk9Cn0sQy5kZWxheT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyh5PTNEZSxDKTp5fSxDLnNob3dWYWx1ZXM9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhkPTNEZSxDKTpkfSxDLnNob3dCYXJMYWJlbHM9M0RmdW5jdD0KaW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PTNEZSxDKTp2fSxDLnZhbHVlRm9ybWF0PTNEZnVu
Y3Rpb24oZSl7cmV0PQp1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0zRGUsQyk6Z30sQy52YWx1ZVBh
ZGRpbmc9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW09CmVudHMubGVuZ3RoPyhtPTNEZSxDKTpt
fSxDfSxlLm1vZGVscy5tdWx0aUJhckhvcml6b250YWxDaGFydD0zRGZ1bmN0aW9uKCl7Zj0KdW5j
dGlvbiBDKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIGQ9M0RkMy5zZWxlY3QodGhp
cyksbT0zRHRoaXMsVD0KPTNEKHV8fHBhcnNlSW50KGQuc3R5bGUoIndpZHRoIikpfHw5NjApLW8u
bGVmdC1vLnJpZ2h0LGs9M0QoYXx8cGFyc2VJbnQoZC5zPQp0eWxlKCJoZWlnaHQiKSl8fDQwMCkt
by50b3Atby5ib3R0b207Qy51cGRhdGU9M0RmdW5jdGlvbigpe2QuY2FsbChDKX0sQy5jb249CnRh
aW5lcj0zRHRoaXMsYi5kaXNhYmxlZD0zRGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5kaXNh
YmxlZH0pO2lmKCF3KXt2YT0KciBMO3c9M0R7fTtmb3IoTCBpbiBiKWJbTF1pbnN0YW5jZW9mIEFy
cmF5P3dbTF09M0RiW0xdLnNsaWNlKDApOndbTF09M0RiW0xdPQp9aWYoIWV8fCFlLmxlbmd0aHx8
IWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgpe3Y9
CmFyIEE9M0RkLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW0VdKTtyZXR1cm4gQS5lbnRl
cigpLmFwcGVuZCgidGV4dCIpLj0KYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIo
ImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkPQpsZSIpLEEuYXR0cigieCIs
by5sZWZ0K1QvMikuYXR0cigieSIsby50b3Aray8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBl
fSk9CixDfWQuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtb3ZlKCksZz0zRHQueFNjYWxlKCks
eT0zRHQueVNjYWxlKCk7dmFyIE89Cj0zRGQuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtbXVsdGlC
YXJIb3Jpem9udGFsQ2hhcnQiKS5kYXRhKFtlXSksTT0zRE8uZW50ZT0KcigpLmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LW11bHRpQmFySG9yaXpvbnRhbENoYXJ0Iiku
YXBwPQplbmQoImciKSxfPTNETy5zZWxlY3QoImciKTtNLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNz
IiwibnYteCBudi1heGlzIiksTS5hcHA9CmVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteSBudi1h
eGlzIikuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi16ZXJvTGluZT0KIikuYXBwZW5kKCJs
aW5lIiksTS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWJhcnNXcmFwIiksTS5hcHBlbmQo
ImciKS5hPQp0dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpLE0uYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudi1jb250cm9sc1dyYXAiKSw9CmMmJihpLndpZHRoKFQteCgpKSx0LmJhckNvbG9y
KCkmJmUuZm9yRWFjaChmdW5jdGlvbihlLHQpe2UuY29sb3I9M0RkMy5yZ2IoIj0KI2NjYyIpLmRh
cmtlcih0KjEuNSkudG9TdHJpbmcoKX0pLF8uc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmRhdHVt
KGUpLmNhbGwoPQppKSxvLnRvcCE9M0RpLmhlaWdodCgpJiYoby50b3A9M0RpLmhlaWdodCgpLGs9
M0QoYXx8cGFyc2VJbnQoZC5zdHlsZSgiaGVpZ2g9CnQiKSl8fDQwMCktby50b3Atby5ib3R0b20p
LF8uc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYT0KbnNsYXRl
KCIreCgpKyIsIisgLW8udG9wKyIpIikpO2lmKGwpe3ZhciBEPTNEW3trZXk6Ikdyb3VwZWQiLGRp
c2FibGVkOnQuc3RhPQpja2VkKCl9LHtrZXk6IlN0YWNrZWQiLGRpc2FibGVkOiF0LnN0YWNrZWQo
KX1dO3Mud2lkdGgoeCgpKS5jb2xvcihbIiM0NDQiLCI9CiM0NDQiLCIjNDQ0Il0pLF8uc2VsZWN0
KCIubnYtY29udHJvbHNXcmFwIikuZGF0dW0oRCkuYXR0cigidHJhbnNmb3JtIiwidHJhbj0Kc2xh
dGUoMCwiKyAtby50b3ArIikiKS5jYWxsKHMpfU8uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRl
KCIrby5sZWZ0KyIsIitvPQoudG9wKyIpIiksdC5kaXNhYmxlZChlLm1hcChmdW5jdGlvbihlKXty
ZXR1cm4gZS5kaXNhYmxlZH0pKS53aWR0aChUKS5oZWlnaHQ9CihrKS5jb2xvcihlLm1hcChmdW5j
dGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxmKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKT0K
e3JldHVybiFlW25dLmRpc2FibGVkfSkpO3ZhciBQPTNEXy5zZWxlY3QoIi5udi1iYXJzV3JhcCIp
LmRhdHVtKGUuZmlsdGVyKGZ1PQpuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSk7UC5jYWxs
KHQpO2lmKGgpe24uc2NhbGUoZykudGlja3Moay8yNCkudGlja1M9Cml6ZSgtVCwwKSxfLnNlbGVj
dCgiLm52LXgubnYtYXhpcyIpLmNhbGwobik7dmFyIEg9M0RfLnNlbGVjdCgiLm52LXgubnYtYXhp
cz0KIikuc2VsZWN0QWxsKCJnIik7SC5zZWxlY3RBbGwoImxpbmUsIHRleHQiKX1wJiYoci5zY2Fs
ZSh5KS50aWNrcyhULzEwMCkudGljPQprU2l6ZSgtaywwKSxfLnNlbGVjdCgiLm52LXkubnYtYXhp
cyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIraysiKSI9CiksXy5zZWxlY3QoIi5u
di15Lm52LWF4aXMiKS5jYWxsKHIpKSxfLnNlbGVjdCgiLm52LXplcm9MaW5lIGxpbmUiKS5hdHRy
KCJ4MT0KIix5KDApKS5hdHRyKCJ4MiIseSgwKSkuYXR0cigieTEiLDApLmF0dHIoInkyIiwtayks
aS5kaXNwYXRjaC5vbigic3RhdGVDaGFuPQpnZSIsZnVuY3Rpb24oZSl7Yj0zRGUsUy5zdGF0ZUNo
YW5nZShiKSxDLnVwZGF0ZSgpfSkscy5kaXNwYXRjaC5vbigibGVnZW5kQ2w9CmljayIsZnVuY3Rp
b24oZSxuKXtpZighZS5kaXNhYmxlZClyZXR1cm47RD0zREQubWFwKGZ1bmN0aW9uKGUpe3JldHVy
biBlLmRpcz0KYWJsZWQ9M0QhMCxlfSksZS5kaXNhYmxlZD0zRCExO3N3aXRjaChlLmtleSl7Y2Fz
ZSJHcm91cGVkIjp0LnN0YWNrZWQoITEpO2JyPQplYWs7Y2FzZSJTdGFja2VkIjp0LnN0YWNrZWQo
ITApfWIuc3RhY2tlZD0zRHQuc3RhY2tlZCgpLFMuc3RhdGVDaGFuZ2UoYiksQy49CnVwZGF0ZSgp
fSksUy5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe3YmJk4oZSxtLnBhcmVudE5vZGUpfSks
Uy5vbigiY2hhbj0KZ2VTdGF0ZSIsZnVuY3Rpb24obil7dHlwZW9mIG4uZGlzYWJsZWQhPTNEInVu
ZGVmaW5lZCImJihlLmZvckVhY2goZnVuY3Rpb24oPQplLHQpe2UuZGlzYWJsZWQ9M0RuLmRpc2Fi
bGVkW3RdfSksYi5kaXNhYmxlZD0zRG4uZGlzYWJsZWQpLHR5cGVvZiBuLnN0YWNrZWQ9CiE9M0Qi
dW5kZWZpbmVkIiYmKHQuc3RhY2tlZChuLnN0YWNrZWQpLGIuc3RhY2tlZD0zRG4uc3RhY2tlZCks
Qy51cGRhdGUoKX0pfT0KKSxDfXZhciB0PTNEZS5tb2RlbHMubXVsdGlCYXJIb3Jpem9udGFsKCks
bj0zRGUubW9kZWxzLmF4aXMoKSxyPTNEZS5tb2RlbHMuPQpheGlzKCksaT0zRGUubW9kZWxzLmxl
Z2VuZCgpLmhlaWdodCgzMCkscz0zRGUubW9kZWxzLmxlZ2VuZCgpLmhlaWdodCgzMCksbz0KPTNE
e3RvcDozMCxyaWdodDoyMCxib3R0b206NTAsbGVmdDo2MH0sdT0zRG51bGwsYT0zRG51bGwsZj0z
RGUudXRpbHMuZGVmYXVsPQp0Q29sb3IoKSxsPTNEITAsYz0zRCEwLGg9M0QhMCxwPTNEITAsZD0z
RCExLHY9M0QhMCxtPTNEZnVuY3Rpb24oZSx0LG4scixpKXs9CnJldHVybiI8aDM+IitlKyIgLSAi
K3QrIjwvaDM+IisiPHA+IituKyI8L3A+In0sZyx5LGI9M0R7c3RhY2tlZDpkfSx3PTNEbnVsbD0K
LEU9M0QiTm8gRGF0YSBBdmFpbGFibGUuIixTPTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93Iiwi
dG9vbHRpcEhpZGUiLCJzdGF0PQplQ2hhbmdlIiwiY2hhbmdlU3RhdGUiKSx4PTNEZnVuY3Rpb24o
KXtyZXR1cm4gbD8xODA6MH0sVD0zRDA7dC5zdGFja2VkKGQpLG49Ci5vcmllbnQoImxlZnQiKS50
aWNrUGFkZGluZyg1KS5oaWdobGlnaHRaZXJvKCExKS5zaG93TWF4TWluKCExKS50aWNrRm9ybWF0
KD0KZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxyLm9yaWVudCgiYm90dG9tIikudGlja0Zvcm1hdChk
My5mb3JtYXQoIiwuMWYiKSkscy51PQpwZGF0ZVN0YXRlKCExKTt2YXIgTj0zRGZ1bmN0aW9uKGks
cyl7dmFyIG89M0RpLnBvc1swXSsocy5vZmZzZXRMZWZ0fHwwKSx1PQo9M0RpLnBvc1sxXSsocy5v
ZmZzZXRUb3B8fDApLGE9M0RuLnRpY2tGb3JtYXQoKSh0LngoKShpLnBvaW50LGkucG9pbnRJbmRl
eCk9CiksZj0zRHIudGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksbD0z
RG0oaS5zZXJpZXMua2V5LGEsZixpLD0KQyk7ZS50b29sdGlwLnNob3coW28sdV0sbCxpLnZhbHVl
PDA/ImUiOiJ3IixudWxsLHMpfTtyZXR1cm4gdC5kaXNwYXRjaC5vbigiPQplbGVtZW50TW91c2Vv
dmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK28ubGVmdCxlLnBvc1sx
XStvLnQ9Cm9wXSxTLnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNl
b3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpez0KUy50b29sdGlwSGlkZShlKX0pLFMub24oInRvb2x0
aXBIaWRlIixmdW5jdGlvbigpe3YmJmUudG9vbHRpcC5jbGVhbnVwKCl9KSxDPQouZGlzcGF0Y2g9
M0RTLEMubXVsdGliYXI9M0R0LEMubGVnZW5kPTNEaSxDLnhBeGlzPTNEbixDLnlBeGlzPTNEcixk
My5yZWJpbmQ9CihDLHQsIngiLCJ5IiwieERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFu
Z2UiLCJmb3JjZVgiLCJmb3JjZVkiLCJjbGlwRT0KZGdlIiwiaWQiLCJkZWxheSIsInNob3dWYWx1
ZXMiLCJzaG93QmFyTGFiZWxzIiwidmFsdWVGb3JtYXQiLCJzdGFja2VkIiwiYmFyPQpDb2xvciIp
LEMub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChDKSxDLm1hcmdpbj0zRGZ1bmN0
aW9uKGUpe3JldHU9CnJuIGFyZ3VtZW50cy5sZW5ndGg/KG8udG9wPTNEdHlwZW9mIGUudG9wIT0z
RCJ1bmRlZmluZWQiP2UudG9wOm8udG9wLG8ucmlnaD0KdD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1
bmRlZmluZWQiP2UucmlnaHQ6by5yaWdodCxvLmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvPQptIT0z
RCJ1bmRlZmluZWQiP2UuYm90dG9tOm8uYm90dG9tLG8ubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNE
InVuZGVmaW5lZCI/ZS49CmxlZnQ6by5sZWZ0LEMpOm99LEMud2lkdGg9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsQyk6dT0KfSxDLmhlaWdodD0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZSxDKTphfSxDLmNvbG9yPTNEZnVuPQpj
dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUudXRpbHMuZ2V0Q29sb3IodCks
aS5jb2xvcihmKSxDKTpmfSw9CkMuc2hvd0NvbnRyb2xzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGw9M0RlLEMpOmx9LEMuc2hvd0xlZz0KZW5kPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLEMpOmN9LEMuc2hvd1hBeGlzPTNEZnVuY3Rp
PQpvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsQyk6aH0sQy5zaG93WUF4aXM9
M0RmdW5jdGlvbihlKXtyZXR1cm49CiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxDKTpwfSxDLnRv
b2x0aXA9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbj0KZ3RoPyhtPTNEZSxDKTpt
fSxDLnRvb2x0aXBzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9M0Rl
LEMpPQo6dn0sQy50b29sdGlwQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhtPTNEZSxDKTptfSxDLnM9CnRhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oYj0zRGUsQyk6Yn0sQy5kZWZhdWx0U3RhdGU9M0RmdT0KbmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyh3PTNEZSxDKTp3fSxDLm5vRGF0YT0zRGZ1bmN0aW9uKGUp
e3JldHVyPQpuIGFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlLEMpOkV9LEMudHJhbnNpdGlvbkR1cmF0
aW9uPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGE9CnJndW1lbnRzLmxlbmd0aD8oVD0zRGUsQyk6VH0s
Q30sZS5tb2RlbHMubXVsdGlDaGFydD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gQz0KKGUpe3JldHVy
biBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIHU9M0RkMy5zZWxlY3QodGhpcyksZj0zRHRoaXM7Qy51
cGRhdGU9M0RmPQp1bmN0aW9uKCl7dS5jYWxsKEMpfSxDLmNvbnRhaW5lcj0zRHRoaXM7dmFyIGs9
M0Qocnx8cGFyc2VJbnQodS5zdHlsZSgid2lkdGg9CiIpKXx8OTYwKS10LmxlZnQtdC5yaWdodCxM
PTNEKGl8fHBhcnNlSW50KHUuc3R5bGUoImhlaWdodCIpKXx8NDAwKS10LnRvcC10Lj0KYm90dG9t
LEE9M0RlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZCYmZS50eXBlPTNEPTNE
ImxpbmUiJiZlLnlBPQp4aXM9M0Q9M0QxfSksTz0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVy
biFlLmRpc2FibGVkJiZlLnR5cGU9M0Q9M0QibGluZSI9CiYmZS55QXhpcz0zRD0zRDJ9KSxNPTNE
ZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQmJmUudHlwZT0zRD0zRD0KImJh
ciImJmUueUF4aXM9M0Q9M0QxfSksXz0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRp
c2FibGVkJiZlLnR5cGU9Cj0zRD0zRCJiYXIiJiZlLnlBeGlzPTNEPTNEMn0pLEQ9M0RlLmZpbHRl
cihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZCYmZT0KLnR5cGU9M0Q9M0QiYXJlYSImJmUu
eUF4aXM9M0Q9M0QxfSksUD0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FiPQps
ZWQmJmUudHlwZT0zRD0zRCJhcmVhIiYmZS55QXhpcz0zRD0zRDJ9KSxIPTNEZS5maWx0ZXIoZnVu
Y3Rpb24oZSl7cmV0dXJuIWU9Ci5kaXNhYmxlZCYmZS55QXhpcz0zRD0zRDF9KS5tYXAoZnVuY3Rp
b24oZSl7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlvbihlLD0KdCl7cmV0dXJue3g6ZS54LHk6
ZS55fX0pfSksQj0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkJiZlLnlB
PQp4aXM9M0Q9M0QyfSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5tYXAoZnVuY3Rp
b24oZSx0KXtyZXR1cm57eDplLng9Cix5OmUueX19KX0pO2EuZG9tYWluKGQzLmV4dGVudChkMy5t
ZXJnZShILmNvbmNhdChCKSksZnVuY3Rpb24oZSl7cmV0dXJuIGUueD0KfSkpLnJhbmdlKFswLGtd
KTt2YXIgaj0zRHUuc2VsZWN0QWxsKCJnLndyYXAubXVsdGlDaGFydCIpLmRhdGEoW2VdKSxGPTNE
ai5lPQpudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJ3cmFwIG52ZDMgbXVsdGlDaGFy
dCIpLmFwcGVuZCgiZyIpO0YuYXBwZW49CmQoImciKS5hdHRyKCJjbGFzcyIsInggYXhpcyIpLEYu
YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJ5MSBheGlzIiksRi5hcHBlbj0KZCgiZyIpLmF0dHIo
ImNsYXNzIiwieTIgYXhpcyIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsaW5lczFXcmFw
IiksRi5hPQpwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibGluZXMyV3JhcCIpLEYuYXBwZW5kKCJn
IikuYXR0cigiY2xhc3MiLCJiYXJzMVdyYXA9CiIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3Mi
LCJiYXJzMldyYXAiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwic3RhYz0KazFXcmFwIiks
Ri5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInN0YWNrMldyYXAiKSxGLmFwcGVuZCgiZyIpLmF0
dHIoImNsYXNzPQoiLCJsZWdlbmRXcmFwIik7dmFyIEk9M0RqLnNlbGVjdCgiZyIpO3MmJih4Lndp
ZHRoKGsvMiksSS5zZWxlY3QoIi5sZWdlbmRXcmE9CnAiKS5kYXR1bShlLm1hcChmdW5jdGlvbihl
KXtyZXR1cm4gZS5vcmlnaW5hbEtleT0zRGUub3JpZ2luYWxLZXk9M0Q9M0Q9M0R1bj0KZGVmaW5l
ZD9lLmtleTplLm9yaWdpbmFsS2V5LGUua2V5PTNEZS5vcmlnaW5hbEtleSsoZS55QXhpcz0zRD0z
RDE/IiI6IiAocmlnPQpodCBheGlzKSIpLGV9KSkuY2FsbCh4KSx0LnRvcCE9M0R4LmhlaWdodCgp
JiYodC50b3A9M0R4LmhlaWdodCgpLEw9M0QoaXx8cGE9CnJzZUludCh1LnN0eWxlKCJoZWlnaHQi
KSl8fDQwMCktdC50b3AtdC5ib3R0b20pLEkuc2VsZWN0KCIubGVnZW5kV3JhcCIpLmF0dD0Kcigi
dHJhbnNmb3JtIiwidHJhbnNsYXRlKCIray8yKyIsIisgLXQudG9wKyIpIikpLGQud2lkdGgoayku
aGVpZ2h0KEwpLmludGVyPQpwb2xhdGUoIm1vbm90b25lIikuY29sb3IoZS5tYXAoZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gZS5jb2xvcnx8blt0JW4ubGVuZ3RoXX09CikuZmlsdGVyKGZ1bmN0aW9uKHQs
bil7cmV0dXJuIWVbbl0uZGlzYWJsZWQmJmVbbl0ueUF4aXM9M0Q9M0QxJiZlW25dLnR5cGU9Cj0z
RD0zRCJsaW5lIn0pKSx2LndpZHRoKGspLmhlaWdodChMKS5pbnRlcnBvbGF0ZSgibW9ub3RvbmUi
KS5jb2xvcihlLm1hcChmdT0KbmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fG5bdCVuLmxlbmd0
aF19KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuPQpdLmRpc2FibGVkJiZlW25dLnlB
eGlzPTNEPTNEMiYmZVtuXS50eXBlPTNEPTNEImxpbmUifSkpLG0ud2lkdGgoaykuaGVpZ2h0KEw9
CikuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8blt0JW4ubGVuZ3Ro
XX0pLmZpbHRlcihmdW5jdGlvbj0KKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWQmJmVbbl0ueUF4
aXM9M0Q9M0QxJiZlW25dLnR5cGU9M0Q9M0QiYmFyIn0pKSxnLndpPQpkdGgoaykuaGVpZ2h0KEwp
LmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fG5bdCVuLmxlbmd0aF19
KS49CmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkJiZlW25dLnlBeGlz
PTNEPTNEMiYmZVtuXS50eXBlPTNEPQo9M0QiYmFyIn0pKSx5LndpZHRoKGspLmhlaWdodChMKS5j
b2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHw9Cm5bdCVuLmxlbmd0aF19
KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZCYmZVtuXS55QXhpcz0z
RD0zRD0KMSYmZVtuXS50eXBlPTNEPTNEImFyZWEifSkpLGIud2lkdGgoaykuaGVpZ2h0KEwpLmNv
bG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7PQpyZXR1cm4gZS5jb2xvcnx8blt0JW4ubGVuZ3RoXX0p
LmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkJiY9CmVbbl0ueUF4aXM9
M0Q9M0QyJiZlW25dLnR5cGU9M0Q9M0QiYXJlYSJ9KSksSS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFu
c2xhdGUoIj0KK3QubGVmdCsiLCIrdC50b3ArIikiKTt2YXIgcT0zREkuc2VsZWN0KCIubGluZXMx
V3JhcCIpLmRhdHVtKEEpLFI9M0RJLnNlbGVjPQp0KCIuYmFyczFXcmFwIikuZGF0dW0oTSksVT0z
REkuc2VsZWN0KCIuc3RhY2sxV3JhcCIpLmRhdHVtKEQpLHo9M0RJLnNlbGVjdCg9CiIubGluZXMy
V3JhcCIpLmRhdHVtKE8pLFc9M0RJLnNlbGVjdCgiLmJhcnMyV3JhcCIpLmRhdHVtKF8pLFg9M0RJ
LnNlbGVjdCgiLj0Kc3RhY2syV3JhcCIpLmRhdHVtKFApLFY9M0RELmxlbmd0aD9ELm1hcChmdW5j
dGlvbihlKXtyZXR1cm4gZS52YWx1ZXN9KS5yZWR1PQpjZShmdW5jdGlvbihlLHQpe3JldHVybiBl
Lm1hcChmdW5jdGlvbihlLG4pe3JldHVybnt4OmUueCx5OmUueSt0W25dLnl9fSl9KS49CmNvbmNh
dChbe3g6MCx5OjB9XSk6W10sJD0zRFAubGVuZ3RoP1AubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBl
LnZhbHVlc30pLnJlZD0KdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUs
bil7cmV0dXJue3g6ZS54LHk6ZS55K3Rbbl0ueX19KX0pPQouY29uY2F0KFt7eDowLHk6MH1dKTpb
XTtoLmRvbWFpbihsfHxkMy5leHRlbnQoZDMubWVyZ2UoSCkuY29uY2F0KFYpLGZ1bmN0aW89Cm4o
ZSl7cmV0dXJuIGUueX0pKS5yYW5nZShbMCxMXSkscC5kb21haW4oY3x8ZDMuZXh0ZW50KGQzLm1l
cmdlKEIpLmNvbmNhdCgkKT0KLGZ1bmN0aW9uKGUpe3JldHVybiBlLnl9KSkucmFuZ2UoWzAsTF0p
LGQueURvbWFpbihoLmRvbWFpbigpKSxtLnlEb21haW4oaC5kPQpvbWFpbigpKSx5LnlEb21haW4o
aC5kb21haW4oKSksdi55RG9tYWluKHAuZG9tYWluKCkpLGcueURvbWFpbihwLmRvbWFpbigpKSw9
CmIueURvbWFpbihwLmRvbWFpbigpKSxELmxlbmd0aCYmZDMudHJhbnNpdGlvbihVKS5jYWxsKHkp
LFAubGVuZ3RoJiZkMy50cmFucz0KaXRpb24oWCkuY2FsbChiKSxNLmxlbmd0aCYmZDMudHJhbnNp
dGlvbihSKS5jYWxsKG0pLF8ubGVuZ3RoJiZkMy50cmFuc2l0aW9uPQooVykuY2FsbChnKSxBLmxl
bmd0aCYmZDMudHJhbnNpdGlvbihxKS5jYWxsKGQpLE8ubGVuZ3RoJiZkMy50cmFuc2l0aW9uKHop
LmM9CmFsbCh2KSx3LnRpY2tzKGsvMTAwKS50aWNrU2l6ZSgtTCwwKSxJLnNlbGVjdCgiLnguYXhp
cyIpLmF0dHIoInRyYW5zZm9ybSIsIj0KdHJhbnNsYXRlKDAsIitMKyIpIiksZDMudHJhbnNpdGlv
bihJLnNlbGVjdCgiLnguYXhpcyIpKS5jYWxsKHcpLEUudGlja3MoTC8zPQo2KS50aWNrU2l6ZSgt
aywwKSxkMy50cmFuc2l0aW9uKEkuc2VsZWN0KCIueTEuYXhpcyIpKS5jYWxsKEUpLFMudGlja3Mo
TC8zNik9Ci50aWNrU2l6ZSgtaywwKSxkMy50cmFuc2l0aW9uKEkuc2VsZWN0KCIueTIuYXhpcyIp
KS5jYWxsKFMpLEkuc2VsZWN0KCIueTIuYT0KeGlzIikuc3R5bGUoIm9wYWNpdHkiLEIubGVuZ3Ro
PzE6MCkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrYS5yYW5nZSgpPQpbMV0rIiwwKSIp
LHguZGlzcGF0Y2gub24oInN0YXRlQ2hhbmdlIixmdW5jdGlvbihlKXtDLnVwZGF0ZSgpfSksVC5v
bigidG9vbHQ9CmlwU2hvdyIsZnVuY3Rpb24oZSl7byYmTihlLGYucGFyZW50Tm9kZSl9KX0pLEN9
dmFyIHQ9M0R7dG9wOjMwLHJpZ2h0OjIwLGJvdD0KdG9tOjUwLGxlZnQ6NjB9LG49M0RkMy5zY2Fs
ZS5jYXRlZ29yeTIwKCkucmFuZ2UoKSxyPTNEbnVsbCxpPTNEbnVsbCxzPTNEITAsPQpvPTNEITAs
dT0zRGZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIjxoMz4iK2UrIjwvaDM+IisiPHA+IituKyIg
YXQgIit0KyI8L3A9Cj4ifSxhLGYsbCxjLGE9M0RkMy5zY2FsZS5saW5lYXIoKSxoPTNEZDMuc2Nh
bGUubGluZWFyKCkscD0zRGQzLnNjYWxlLmxpbmVhcj0KKCksZD0zRGUubW9kZWxzLmxpbmUoKS55
U2NhbGUoaCksdj0zRGUubW9kZWxzLmxpbmUoKS55U2NhbGUocCksbT0zRGUubW9kZWxzPQoubXVs
dGlCYXIoKS5zdGFja2VkKCExKS55U2NhbGUoaCksZz0zRGUubW9kZWxzLm11bHRpQmFyKCkuc3Rh
Y2tlZCghMSkueVNjYWw9CmUocCkseT0zRGUubW9kZWxzLnN0YWNrZWRBcmVhKCkueVNjYWxlKGgp
LGI9M0RlLm1vZGVscy5zdGFja2VkQXJlYSgpLnlTY2FsZT0KKHApLHc9M0RlLm1vZGVscy5heGlz
KCkuc2NhbGUoYSkub3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg1KSxFPTNEZS5tb2RlPQps
cy5heGlzKCkuc2NhbGUoaCkub3JpZW50KCJsZWZ0IiksUz0zRGUubW9kZWxzLmF4aXMoKS5zY2Fs
ZShwKS5vcmllbnQoInJpZ2g9CnQiKSx4PTNEZS5tb2RlbHMubGVnZW5kKCkuaGVpZ2h0KDMwKSxU
PTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcD0KSGlkZSIpLE49M0RmdW5jdGlv
bih0LG4pe3ZhciByPTNEdC5wb3NbMF0rKG4ub2Zmc2V0TGVmdHx8MCksaT0zRHQucG9zWzFdKyhu
PQoub2Zmc2V0VG9wfHwwKSxzPTNEdy50aWNrRm9ybWF0KCkoZC54KCkodC5wb2ludCx0LnBvaW50
SW5kZXgpKSxvPTNEKHQuc2VyaWU9CnMueUF4aXM9M0Q9M0QyP1M6RSkudGlja0Zvcm1hdCgpKGQu
eSgpKHQucG9pbnQsdC5wb2ludEluZGV4KSksYT0zRHUodC5zZXJpZT0Kcy5rZXkscyxvLHQsQyk7
ZS50b29sdGlwLnNob3coW3IsaV0sYSx1bmRlZmluZWQsdW5kZWZpbmVkLG4ub2Zmc2V0UGFyZW50
KX07PQpyZXR1cm4gZC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5j
dGlvbihlKXtlLnBvcz0zRFtlLnBvc1s9CjBdK3QubGVmdCxlLnBvc1sxXSt0LnRvcF0sVC50b29s
dGlwU2hvdyhlKX0pLGQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dD0KLnRvb2x0aXAiLGZ1
bmN0aW9uKGUpe1QudG9vbHRpcEhpZGUoZSl9KSx2LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2Vv
dmVyLnRvPQpvbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rdC5sZWZ0LGUucG9z
WzFdK3QudG9wXSxULnRvb2x0aXBTaG93KGU9Cil9KSx2LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91
c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7VC50b29sdGlwSGlkZShlKX0pLD0KbS5kaXNwYXRj
aC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBv
c1swXSt0LmxlPQpmdCxlLnBvc1sxXSt0LnRvcF0sVC50b29sdGlwU2hvdyhlKX0pLG0uZGlzcGF0
Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGk9CnAiLGZ1bmN0aW9uKGUpe1QudG9vbHRpcEhp
ZGUoZSl9KSxnLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLD0KZnVuY3Rp
b24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rdC5sZWZ0LGUucG9zWzFdK3QudG9wXSxULnRvb2x0aXBT
aG93KGUpfSksZy5kPQppc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rp
b24oZSl7VC50b29sdGlwSGlkZShlKX0pLHkuZGlzcGE9CnRjaC5vbigidG9vbHRpcFNob3ciLGZ1
bmN0aW9uKGUpe2lmKCFNYXRoLnJvdW5kKHkueSgpKGUucG9pbnQpKjEwMCkpcmV0dXJuID0Kc2V0
VGltZW91dChmdW5jdGlvbigpe2QzLnNlbGVjdEFsbCgiLnBvaW50LmhvdmVyIikuY2xhc3NlZCgi
aG92ZXIiLCExKX0sMCksPQohMTtlLnBvcz0zRFtlLnBvc1swXSt0LmxlZnQsZS5wb3NbMV0rdC50
b3BdLFQudG9vbHRpcFNob3coZSl9KSx5LmRpc3BhdGNoLm89Cm4oInRvb2x0aXBIaWRlIixmdW5j
dGlvbihlKXtULnRvb2x0aXBIaWRlKGUpfSksYi5kaXNwYXRjaC5vbigidG9vbHRpcFNob3ciLD0K
ZnVuY3Rpb24oZSl7aWYoIU1hdGgucm91bmQoYi55KCkoZS5wb2ludCkqMTAwKSlyZXR1cm4gc2V0
VGltZW91dChmdW5jdGlvbigpPQp7ZDMuc2VsZWN0QWxsKCIucG9pbnQuaG92ZXIiKS5jbGFzc2Vk
KCJob3ZlciIsITEpfSwwKSwhMTtlLnBvcz0zRFtlLnBvc1swXSs9CnQubGVmdCxlLnBvc1sxXSt0
LnRvcF0sVC50b29sdGlwU2hvdyhlKX0pLGIuZGlzcGF0Y2gub24oInRvb2x0aXBIaWRlIixmdW5j
dD0KaW9uKGUpe1QudG9vbHRpcEhpZGUoZSl9KSxkLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2Vv
dmVyLnRvb2x0aXAiLGZ1bmN0aW9uPQooZSl7ZS5wb3M9M0RbZS5wb3NbMF0rdC5sZWZ0LGUucG9z
WzFdK3QudG9wXSxULnRvb2x0aXBTaG93KGUpfSksZC5kaXNwYXRjaC49Cm9uKCJlbGVtZW50TW91
c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7VC50b29sdGlwSGlkZShlKX0pLHYuZGlzcGF0Y2gu
b24oIj0KZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBv
c1swXSt0LmxlZnQsZS5wb3NbMV0rdC50PQpvcF0sVC50b29sdGlwU2hvdyhlKX0pLHYuZGlzcGF0
Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXs9ClQudG9vbHRpcEhp
ZGUoZSl9KSxULm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXtvJiZlLnRvb2x0aXAuY2xlYW51
cCgpfSksQz0KLmRpc3BhdGNoPTNEVCxDLmxpbmVzMT0zRGQsQy5saW5lczI9M0R2LEMuYmFyczE9
M0RtLEMuYmFyczI9M0RnLEMuc3RhY2sxPTNEPQp5LEMuc3RhY2syPTNEYixDLnhBeGlzPTNEdyxD
LnlBeGlzMT0zREUsQy55QXhpczI9M0RTLEMub3B0aW9ucz0zRGUudXRpbHMub3A9CnRpb25zRnVu
Yy5iaW5kKEMpLEMueD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnZXRY
PTNEZSxkLngoZT0KKSxtLngoZSksQyk6Z2V0WH0sQy55PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGdldFk9M0RlLGQueShlPQopLG0ueShlKSxDKTpnZXRZfSxDLnlEb21h
aW4xPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLEM9Cik6bH0s
Qy55RG9tYWluMj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSxD
KTpjfSxDLm1hcmdpbj0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9
M0RlLEMpOnR9LEMud2lkdGg9M0RmdW5jdGlvbihlKXtyPQpldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhyPTNEZSxDKTpyfSxDLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHM9Ci5s
ZW5ndGg/KGk9M0RlLEMpOml9LEMuY29sb3I9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8obj0zRGUseD0KLmNvbG9yKGUpLEMpOm59LEMuc2hvd0xlZ2VuZD0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPTNEZSxDPQopOnN9LEMudG9vbHRpcHM9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsQyk6b30sQy50b29sdGk9
CnBDb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RlLEMp
OnV9LEN9LGUubW9kZWxzLm9obD0KY0Jhcj0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24geChlKXtyZXR1
cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBnPTNEbi10LmxlZnQtPQp0LnJpZ2h0LHg9M0RyLXQu
dG9wLXQuYm90dG9tLFQ9M0RkMy5zZWxlY3QodGhpcyk7cy5kb21haW4oeXx8ZDMuZXh0ZW50KGVb
MF09Ci52YWx1ZXMubWFwKHUpLmNvbmNhdChwKSkpLHY/cy5yYW5nZSh3fHxbZyouNS9lWzBdLnZh
bHVlcy5sZW5ndGgsZyooZVswXS52YT0KbHVlcy5sZW5ndGgtLjUpL2VbMF0udmFsdWVzLmxlbmd0
aF0pOnMucmFuZ2Uod3x8WzAsZ10pLG8uZG9tYWluKGJ8fFtkMy5taW4oPQplWzBdLnZhbHVlcy5t
YXAoaCkuY29uY2F0KGQpKSxkMy5tYXgoZVswXS52YWx1ZXMubWFwKGMpLmNvbmNhdChkKSldKS5y
YW5nZSg9CkV8fFt4LDBdKSxzLmRvbWFpbigpWzBdPTNEPTNEPTNEcy5kb21haW4oKVsxXSYmKHMu
ZG9tYWluKClbMF0/cy5kb21haW4oW3MuZD0Kb21haW4oKVswXS1zLmRvbWFpbigpWzBdKi4wMSxz
LmRvbWFpbigpWzFdK3MuZG9tYWluKClbMV0qLjAxXSk6cy5kb21haW4oWy0xPQosMV0pKSxvLmRv
bWFpbigpWzBdPTNEPTNEPTNEby5kb21haW4oKVsxXSYmKG8uZG9tYWluKClbMF0/by5kb21haW4o
W28uZG9tYWk9Cm4oKVswXStvLmRvbWFpbigpWzBdKi4wMSxvLmRvbWFpbigpWzFdLW8uZG9tYWlu
KClbMV0qLjAxXSk6by5kb21haW4oWy0xLDFdKT0KKTt2YXIgTj0zRGQzLnNlbGVjdCh0aGlzKS5z
ZWxlY3RBbGwoImcubnYtd3JhcC5udi1vaGxjQmFyIikuZGF0YShbZVswXS52YWx1PQplc10pLEM9
M0ROLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtb2hs
Y0JhciIpLGs9M0Q9CkMuYXBwZW5kKCJkZWZzIiksTD0zREMuYXBwZW5kKCJnIiksQT0zRE4uc2Vs
ZWN0KCJnIik7TC5hcHBlbmQoImciKS5hdHRyKCJjbD0KYXNzIiwibnYtdGlja3MiKSxOLmF0dHIo
InRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50b3ArIikiKSxULm9uPQooImNs
aWNrIixmdW5jdGlvbihlLHQpe1MuY2hhcnRDbGljayh7ZGF0YTplLGluZGV4OnQscG9zOmQzLmV2
ZW50LGlkOml9KX0pLGs9Ci5hcHBlbmQoImNsaXBQYXRoIikuYXR0cigiaWQiLCJudi1jaGFydC1j
bGlwLXBhdGgtIitpKS5hcHBlbmQoInJlY3QiKSxOLnNlbD0KZWN0KCIjbnYtY2hhcnQtY2xpcC1w
YXRoLSIraSsiIHJlY3QiKS5hdHRyKCJ3aWR0aCIsZykuYXR0cigiaGVpZ2h0Iix4KSxBLmF0PQp0
cigiY2xpcC1wYXRoIixtPyJ1cmwoI252LWNoYXJ0LWNsaXAtcGF0aC0iK2krIikiOiIiKTt2YXIg
Tz0zRE4uc2VsZWN0KCIubnY9Ci10aWNrcyIpLnNlbGVjdEFsbCgiLm52LXRpY2siKS5kYXRhKGZ1
bmN0aW9uKGUpe3JldHVybiBlfSk7Ty5leGl0KCkucmVtb3ZlKD0KKTt2YXIgTT0zRE8uZW50ZXIo
KS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0LG4pe3JldHVybihmKGUs
PQp0KT5sKGUsdCk/Im52LXRpY2sgbmVnYXRpdmUiOiJudi10aWNrIHBvc2l0aXZlIikrIiBudi10
aWNrLSIrbisiLSIrdH0pLmF0dHI9CigiZCIsZnVuY3Rpb24odCxuKXt2YXIgcj0zRGcvZVswXS52
YWx1ZXMubGVuZ3RoKi45O3JldHVybiJtMCwwbDAsIisobyhmKHQsbj0KKSktbyhjKHQsbikpKSsi
bCIrIC1yLzIrIiwwbCIrci8yKyIsMGwwLCIrKG8oaCh0LG4pKS1vKGYodCxuKSkpKyJsMCwiKyhv
KGwoPQp0LG4pKS1vKGgodCxuKSkpKyJsIityLzIrIiwwbCIrIC1yLzIrIiwweiJ9KS5hdHRyKCJ0
cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCk9CntyZXR1cm4idHJhbnNsYXRlKCIrcyh1KGUsdCkpKyIs
IitvKGMoZSx0KSkrIikifSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24odD0KLG4pe2QzLnNlbGVj
dCh0aGlzKS5jbGFzc2VkKCJob3ZlciIsITApLFMuZWxlbWVudE1vdXNlb3Zlcih7cG9pbnQ6dCxz
ZXJpZXM6PQplWzBdLHBvczpbcyh1KHQsbikpLG8oYSh0LG4pKV0scG9pbnRJbmRleDpuLHNlcmll
c0luZGV4OjAsZTpkMy5ldmVudH0pfSkub249CigibW91c2VvdXQiLGZ1bmN0aW9uKHQsbil7ZDMu
c2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMSksUy5lbGVtZW50TW91cz0KZW91dCh7cG9p
bnQ6dCxzZXJpZXM6ZVswXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6MCxlOmQzLmV2ZW50fSl9
KS5vbigiY2xpPQpjayIsZnVuY3Rpb24oZSx0KXtTLmVsZW1lbnRDbGljayh7dmFsdWU6YShlLHQp
LGRhdGE6ZSxpbmRleDp0LHBvczpbcyh1KGUsdCk9CiksbyhhKGUsdCkpXSxlOmQzLmV2ZW50LGlk
Oml9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0pLm9uKCJkYmxjbGljayIsZj0KdW5jdGlv
bihlLHQpe1MuZWxlbWVudERibENsaWNrKHt2YWx1ZTphKGUsdCksZGF0YTplLGluZGV4OnQscG9z
OltzKHUoZSx0KSksPQpvKGEoZSx0KSldLGU6ZDMuZXZlbnQsaWQ6aX0pLGQzLmV2ZW50LnN0b3BQ
cm9wYWdhdGlvbigpfSk7Ty5hdHRyKCJjbGFzcyIsZnU9Cm5jdGlvbihlLHQsbil7cmV0dXJuKGYo
ZSx0KT5sKGUsdCk/Im52LXRpY2sgbmVnYXRpdmUiOiJudi10aWNrIHBvc2l0aXZlIikrIj0KIG52
LXRpY2stIituKyItIit0fSksZDMudHJhbnNpdGlvbihPKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0
aW9uKGUsdCl7cmV0dXJuPQoidHJhbnNsYXRlKCIrcyh1KGUsdCkpKyIsIitvKGMoZSx0KSkrIiki
fSkuYXR0cigiZCIsZnVuY3Rpb24odCxuKXt2YXIgcj0zRGc9Ci9lWzBdLnZhbHVlcy5sZW5ndGgq
Ljk7cmV0dXJuIm0wLDBsMCwiKyhvKGYodCxuKSktbyhjKHQsbikpKSsibCIrIC1yLzIrIiwwbD0K
IityLzIrIiwwbDAsIisobyhoKHQsbikpLW8oZih0LG4pKSkrImwwLCIrKG8obCh0LG4pKS1vKGgo
dCxuKSkpKyJsIityLzIrIiwwPQpsIisgLXIvMisiLDB6In0pfSkseH12YXIgdD0zRHt0b3A6MCxy
aWdodDowLGJvdHRvbTowLGxlZnQ6MH0sbj0zRDk2MCxyPTNENTA9CjAsaT0zRE1hdGguZmxvb3Io
TWF0aC5yYW5kb20oKSoxZTQpLHM9M0RkMy5zY2FsZS5saW5lYXIoKSxvPTNEZDMuc2NhbGUubGlu
ZT0KYXIoKSx1PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0sYT0zRGZ1bmN0aW9uKGUpe3JldHVy
biBlLnl9LGY9M0RmdW5jdGlvbihlPQope3JldHVybiBlLm9wZW59LGw9M0RmdW5jdGlvbihlKXty
ZXR1cm4gZS5jbG9zZX0sYz0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLmg9CmlnaH0saD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBlLmxvd30scD0zRFtdLGQ9M0RbXSx2PTNEITEsbT0zRCEwLGc9M0RlLnV0
aWxzLj0KZGVmYXVsdENvbG9yKCkseSxiLHcsRSxTPTNEZDMuZGlzcGF0Y2goImNoYXJ0Q2xpY2si
LCJlbGVtZW50Q2xpY2siLCJlbGVtZW50PQpEYmxDbGljayIsImVsZW1lbnRNb3VzZW92ZXIiLCJl
bGVtZW50TW91c2VvdXQiKTtyZXR1cm4geC5kaXNwYXRjaD0zRFMseC5vcHQ9CmlvbnM9M0RlLnV0
aWxzLm9wdGlvbnNGdW5jLmJpbmQoeCkseC54PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndD0KaD8odT0zRGUseCk6dX0seC55PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGE9M0RlLHgpOmF9LHgub3BlPQpuPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGY9M0RlLHgpOmZ9LHguY2xvc2U9M0RmdW5jdGlvbihlKXs9CnJldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhsPTNEZSx4KTpsfSx4LmhpZ2g9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLj0KbGVuZ3RoPyhjPTNEZSx4KTpjfSx4Lmxvdz0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSx4KTpoPQp9LHgubWFyZ2luPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPTNEdHlwZW9mIGUudG9wIT0zRCI9CnVuZGVm
aW5lZCI/ZS50b3A6dC50b3AsdC5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQi
P2UucmlnaHQ6dC5yaT0KZ2h0LHQuYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmlu
ZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD0zRHR5PQpwZW9mIGUubGVmdCE9M0QidW5kZWZp
bmVkIj9lLmxlZnQ6dC5sZWZ0LHgpOnR9LHgud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm49CiBh
cmd1bWVudHMubGVuZ3RoPyhuPTNEZSx4KTpufSx4LmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZz0KdGg/KHI9M0RlLHgpOnJ9LHgueFNjYWxlPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLHgpOnN9PQoseC55U2NhbGU9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUseCk6b30seC54RG9tYWluPTNEZnU9
Cm5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT0zRGUseCk6eX0seC55RG9tYWlu
PTNEZnVuY3Rpb24oZSl7cmV0dT0Kcm4gYXJndW1lbnRzLmxlbmd0aD8oYj0zRGUseCk6Yn0seC54
UmFuZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlPQpuZ3RoPyh3PTNEZSx4KTp3
fSx4LnlSYW5nZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPTNEZSx4
KTo9CkV9LHguZm9yY2VYPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9
M0RlLHgpOnB9LHguZm9yY2VZPTNEZj0KdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oZD0zRGUseCk6ZH0seC5wYWREYXRhPTNEZnVuY3Rpb24oZSl7cmV0PQp1cm4gYXJndW1lbnRz
Lmxlbmd0aD8odj0zRGUseCk6dn0seC5jbGlwRWRnZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHM9Ci5sZW5ndGg/KG09M0RlLHgpOm19LHguY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oZz0zRGUudT0KdGlscy5nZXRDb2xvcih0KSx4KTpnfSx4LmlkPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9M0RlLHgpPQo6aX0seH0sZS5t
b2RlbHMucGllPTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBTKGUpe3JldHVybiBlLmVhY2goZnVuY3Rp
b24oZSl7ZnU9Cm5jdGlvbiBxKGUpe3ZhciB0PTNEKGUuc3RhcnRBbmdsZStlLmVuZEFuZ2xlKSo5
MC9NYXRoLlBJLTkwO3JldHVybiB0PjkwP3QtMT0KODA6dH1mdW5jdGlvbiBSKGUpe2UuZW5kQW5n
bGU9M0Rpc05hTihlLmVuZEFuZ2xlKT8wOmUuZW5kQW5nbGUsZS5zdGFydEFuZ2xlPQo9M0Rpc05h
TihlLnN0YXJ0QW5nbGUpPzA6ZS5zdGFydEFuZ2xlLG18fChlLmlubmVyUmFkaXVzPTNEMCk7dmFy
IHQ9M0RkMy5pbnQ9CmVycG9sYXRlKHRoaXMuX2N1cnJlbnQsZSk7cmV0dXJuIHRoaXMuX2N1cnJl
bnQ9M0R0KDApLGZ1bmN0aW9uKGUpe3JldHVybiBBKD0KdChlKSl9fWZ1bmN0aW9uIFUoZSl7ZS5p
bm5lclJhZGl1cz0zRDA7dmFyIHQ9M0RkMy5pbnRlcnBvbGF0ZSh7c3RhcnRBbmdsZTowPQosZW5k
QW5nbGU6MH0sZSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBBKHQoZSkpfX12YXIgbz0zRG4t
dC5sZWZ0LXQucmlnaHQ9CixmPTNEci10LnRvcC10LmJvdHRvbSxTPTNETWF0aC5taW4obyxmKS8y
LHg9M0RTLVMvNSxUPTNEZDMuc2VsZWN0KHRoaXMpLE49Cj0zRFQuc2VsZWN0QWxsKCIubnYtd3Jh
cC5udi1waWUiKS5kYXRhKGUpLEM9M0ROLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiYz0KbGFz
cyIsIm52ZDMgbnYtd3JhcCBudi1waWUgbnYtY2hhcnQtIit1KSxrPTNEQy5hcHBlbmQoImciKSxM
PTNETi5zZWxlY3QoImciPQopO2suYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1waWUiKSxr
LmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtcGllTGE9CmJlbHMiKSxOLmF0dHIoInRyYW5z
Zm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50b3ArIikiKSxMLnNlbGVjdCgiLm52LT0K
cGllIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrby8yKyIsIitmLzIrIikiKSxMLnNl
bGVjdCgiLm52LXBpZUxhYmVsPQpzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrby8y
KyIsIitmLzIrIikiKSxULm9uKCJjbGljayIsZnVuY3Rpb24oZSw9CnQpe0UuY2hhcnRDbGljayh7
ZGF0YTplLGluZGV4OnQscG9zOmQzLmV2ZW50LGlkOnV9KX0pO3ZhciBBPTNEZDMuc3ZnLmFyYygp
Lj0Kb3V0ZXJSYWRpdXMoeCk7eSYmQS5zdGFydEFuZ2xlKHkpLGImJkEuZW5kQW5nbGUoYiksbSYm
QS5pbm5lclJhZGl1cyhTKncpO3ZhPQpyIE89M0RkMy5sYXlvdXQucGllKCkuc29ydChudWxsKS52
YWx1ZShmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNhYmxlZD8wOnMoZSk9Cn0pLE09M0ROLnNlbGVj
dCgiLm52LXBpZSIpLnNlbGVjdEFsbCgiLm52LXNsaWNlIikuZGF0YShPKSxfPTNETi5zZWxlY3Qo
Ii5udj0KLXBpZUxhYmVscyIpLnNlbGVjdEFsbCgiLm52LWxhYmVsIikuZGF0YShPKTtNLmV4aXQo
KS5yZW1vdmUoKSxfLmV4aXQoKS5yZW1vPQp2ZSgpO3ZhciBEPTNETS5lbnRlcigpLmFwcGVuZCgi
ZyIpLmF0dHIoImNsYXNzIiwibnYtc2xpY2UiKS5vbigibW91c2VvdmVyIiw9CmZ1bmN0aW9uKGUs
dCl7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMCksRS5lbGVtZW50TW91c2VvdmVy
KHtsYWJlbD0KOmkoZS5kYXRhKSx2YWx1ZTpzKGUuZGF0YSkscG9pbnQ6ZS5kYXRhLHBvaW50SW5k
ZXg6dCxwb3M6W2QzLmV2ZW50LnBhZ2VYLGQzPQouZXZlbnQucGFnZVldLGlkOnV9KX0pLm9uKCJt
b3VzZW91dCIsZnVuY3Rpb24oZSx0KXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCg9CiJob3ZlciIs
ITEpLEUuZWxlbWVudE1vdXNlb3V0KHtsYWJlbDppKGUuZGF0YSksdmFsdWU6cyhlLmRhdGEpLHBv
aW50OmUuZGF0YT0KLGluZGV4OnQsaWQ6dX0pfSkub24oImNsaWNrIixmdW5jdGlvbihlLHQpe0Uu
ZWxlbWVudENsaWNrKHtsYWJlbDppKGUuZGF0YSksPQp2YWx1ZTpzKGUuZGF0YSkscG9pbnQ6ZS5k
YXRhLGluZGV4OnQscG9zOmQzLmV2ZW50LGlkOnV9KSxkMy5ldmVudC5zdG9wUHJvcGE9CmdhdGlv
bigpfSkub24oImRibGNsaWNrIixmdW5jdGlvbihlLHQpe0UuZWxlbWVudERibENsaWNrKHtsYWJl
bDppKGUuZGF0YSksdj0KYWx1ZTpzKGUuZGF0YSkscG9pbnQ6ZS5kYXRhLGluZGV4OnQscG9zOmQz
LmV2ZW50LGlkOnV9KSxkMy5ldmVudC5zdG9wUHJvcGFnPQphdGlvbigpfSk7TS5hdHRyKCJmaWxs
IixmdW5jdGlvbihlLHQpe3JldHVybiBhKGUsdCl9KS5hdHRyKCJzdHJva2UiLGZ1bmN0aW89Cm4o
ZSx0KXtyZXR1cm4gYShlLHQpfSk7dmFyIFA9M0RELmFwcGVuZCgicGF0aCIpLmVhY2goZnVuY3Rp
b24oZSl7dGhpcy5fY3Vycj0KZW50PTNEZX0pO00uc2VsZWN0KCJwYXRoIikuYXR0cigiZCIsQSk7
aWYobCl7dmFyIEg9M0RkMy5zdmcuYXJjKCkuaW5uZXJSYWRpPQp1cygwKTtjJiYoSD0zREEpLGgm
JihIPTNEZDMuc3ZnLmFyYygpLm91dGVyUmFkaXVzKEEub3V0ZXJSYWRpdXMoKSkpLF8uZW50ZXI9
CigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoIm52LWxhYmVsIiwhMCkuZWFjaChmdW5jdGlvbihlLHQp
e3ZhciBuPTNEZDMuc2VsZWN0KD0KdGhpcyk7bi5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUp
e2lmKGcpe2Uub3V0ZXJSYWRpdXM9M0R4KzEwLGUuaW5uZXJSYWRpPQp1cz0zRHgrMTU7dmFyIHQ9
M0QoZS5zdGFydEFuZ2xlK2UuZW5kQW5nbGUpLzIqKDE4MC9NYXRoLlBJKTtyZXR1cm4oZS5zdGFy
dEE9Cm5nbGUrZS5lbmRBbmdsZSkvMjxNYXRoLlBJP3QtPTNEOTA6dCs9M0Q5MCwidHJhbnNsYXRl
KCIrSC5jZW50cm9pZChlKSsiKSBybz0KdGF0ZSgiK3QrIikifXJldHVybiBlLm91dGVyUmFkaXVz
PTNEUysxMCxlLmlubmVyUmFkaXVzPTNEUysxNSwidHJhbnNsYXRlKCIrPQpILmNlbnRyb2lkKGUp
KyIpIn0pLG4uYXBwZW5kKCJyZWN0Iikuc3R5bGUoInN0cm9rZSIsIiNmZmYiKS5zdHlsZSgiZmls
bCIsIiM9CmZmZiIpLmF0dHIoInJ4IiwzKS5hdHRyKCJyeSIsMyksbi5hcHBlbmQoInRleHQiKS5z
dHlsZSgidGV4dC1hbmNob3IiLGc/KGUucz0KdGFydEFuZ2xlK2UuZW5kQW5nbGUpLzI8TWF0aC5Q
ST8ic3RhcnQiOiJlbmQiOiJtaWRkbGUiKS5zdHlsZSgiZmlsbCIsIiMwMDAiPQopfSk7dmFyIEI9
M0R7fSxqPTNEMTQsRj0zRDE0MCxJPTNEZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguZmxvb3IoZVsw
XS9GKSpGKyI9CiwiK01hdGguZmxvb3IoZVsxXS9qKSpqfTtfLmF0dHIoInRyYW5zZm9ybSIsZnVu
Y3Rpb24oZSl7aWYoZyl7ZS5vdXRlclJhZGl1cz0KPTNEeCsxMCxlLmlubmVyUmFkaXVzPTNEeCsx
NTt2YXIgdD0zRChlLnN0YXJ0QW5nbGUrZS5lbmRBbmdsZSkvMiooMTgwL01hdGguPQpQSSk7cmV0
dXJuKGUuc3RhcnRBbmdsZStlLmVuZEFuZ2xlKS8yPE1hdGguUEk/dC09M0Q5MDp0Kz0zRDkwLCJ0
cmFuc2xhdGUoIis9CkguY2VudHJvaWQoZSkrIikgcm90YXRlKCIrdCsiKSJ9ZS5vdXRlclJhZGl1
cz0zRFMrMTAsZS5pbm5lclJhZGl1cz0zRFMrMTU7dj0KYXIgbj0zREguY2VudHJvaWQoZSkscj0z
REkobik7cmV0dXJuIEJbcl0mJihuWzFdLT0zRGopLEJbSShuKV09M0QhMCwidHJhbnNsPQphdGUo
IituKyIpIn0pLF8uc2VsZWN0KCIubnYtbGFiZWwgdGV4dCIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIs
Zz8oZC5zdGFydEFuZ2w9CmUrZC5lbmRBbmdsZSkvMjxNYXRoLlBJPyJzdGFydCI6ImVuZCI6Im1p
ZGRsZSIpLnRleHQoZnVuY3Rpb24oZSx0KXt2YXIgbj0zRD0KKGUuZW5kQW5nbGUtZS5zdGFydEFu
Z2xlKS8oMipNYXRoLlBJKSxyPTNEe2tleTppKGUuZGF0YSksdmFsdWU6cyhlLmRhdGEpLHBlPQpy
Y2VudDpkMy5mb3JtYXQoIiUiKShuKX07cmV0dXJuIGUudmFsdWUmJm4+dj9yW3BdOiIifSl9fSks
U312YXIgdD0zRHt0b3A6MCw9CnJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSxuPTNENTAwLHI9M0Q1
MDAsaT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9LHM9M0RmdT0KbmN0aW9uKGUpe3JldHVybiBl
Lnl9LG89M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5kZXNjcmlwdGlvbn0sdT0zRE1hdGguZmxvb3Io
PQpNYXRoLnJhbmRvbSgpKjFlNCksYT0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCksZj0zRGQzLmZv
cm1hdCgiLC4yZiIpLGw9M0QhMCw9CmM9M0QhMCxoPTNEITEscD0zRCJrZXkiLHY9M0QuMDIsbT0z
RCExLGc9M0QhMSx5PTNEITEsYj0zRCExLHc9M0QuNSxFPTNEZDMuZD0KaXNwYXRjaCgiY2hhcnRD
bGljayIsImVsZW1lbnRDbGljayIsImVsZW1lbnREYmxDbGljayIsImVsZW1lbnRNb3VzZW92ZXIi
LCJlPQpsZW1lbnRNb3VzZW91dCIpO3JldHVybiBTLmRpc3BhdGNoPTNERSxTLm9wdGlvbnM9M0Rl
LnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQ9CihTKSxTLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD0zRHR5cGVvZiBlLnRvcCE9Cj0zRCJ1bmRlZmluZWQi
P2UudG9wOnQudG9wLHQucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJp
Z2h0Oj0KdC5yaWdodCx0LmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9l
LmJvdHRvbTp0LmJvdHRvbSx0LmxlZnQ9Cj0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/
ZS5sZWZ0OnQubGVmdCxTKTp0fSxTLndpZHRoPTNEZnVuY3Rpb24oZSl7cj0KZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8obj0zRGUsUyk6bn0sUy5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzPQoubGVuZ3RoPyhyPTNEZSxTKTpyfSxTLnZhbHVlcz0zRGZ1bmN0aW9uKHQpe3JldHVy
biBlLmxvZygicGllLnZhbHVlcygpIGlzIG49Cm8gbG9uZ2VyIHN1cHBvcnRlZC4iKSxTfSxTLng9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUsUz0KKTppfSxTLnk9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0zRGQzLmZ1bmN0b3IoZSks
Uyk6c30sUy5kPQplc2NyaXB0aW9uPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KG89M0RlLFMpOm99LFMuc2hvd0xhYmVscz0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGw9M0RlLFMpOmx9LFMubGFiZWxTdW5iZWFtTGF5b3V0PTNEPQpmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0zRGUsUyk6Z30sUy5kb251dExhYmVsc091
dHNpZGU9M0RmdW49CmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxTKTpo
fSxTLnBpZUxhYmVsc091dHNpZGU9M0RmdW5jdGlvbj0KKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhjPTNEZSxTKTpjfSxTLmxhYmVsVHlwZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhPQpyZ3Vt
ZW50cy5sZW5ndGg/KHA9M0RlLHA9M0RwfHwia2V5IixTKTpwfSxTLmRvbnV0PTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3U9Cm1lbnRzLmxlbmd0aD8obT0zRGUsUyk6bX0sUy5kb251dFJhdGlvPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndD0KaD8odz0zRGUsUyk6d30sUy5zdGFy
dEFuZ2xlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9M0RlLFMpPQo6
eX0sUy5lbmRBbmdsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPTNE
ZSxTKTpifSxTLmlkPTNEZnU9Cm5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0z
RGUsUyk6dX0sUy5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybj0KIGFyZ3VtZW50cy5sZW5ndGg/
KGE9M0RlLnV0aWxzLmdldENvbG9yKHQpLFMpOmF9LFMudmFsdWVGb3JtYXQ9M0RmdW5jdGlvbihl
PQope3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSxTKTpmfSxTLmxhYmVsVGhyZXNob2xk
PTNEZnVuY3Rpb24oZSl7cmV0dXI9Cm4gYXJndW1lbnRzLmxlbmd0aD8odj0zRGUsUyk6dn0sU30s
ZS5tb2RlbHMucGllQ2hhcnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uID0KdihlKXtyZXR1cm4gZS5l
YWNoKGZ1bmN0aW9uKGUpe3ZhciB1PTNEZDMuc2VsZWN0KHRoaXMpLGE9M0R0aGlzLGY9M0QoaXx8
cGFyPQpzZUludCh1LnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS1yLmxlZnQtci5yaWdodCxkPTNEKHN8
fHBhcnNlSW50KHUuc3R5bGUoImhlaWc9Cmh0IikpfHw0MDApLXIudG9wLXIuYm90dG9tO3YudXBk
YXRlPTNEZnVuY3Rpb24oKXt1LmNhbGwodil9LHYuY29udGFpbmVyPTNEdD0KaGlzLGwuZGlzYWJs
ZWQ9M0RlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlzYWJsZWR9KTtpZighYyl7dmFyIG07
Yz0zRHt9PQo7Zm9yKG0gaW4gbClsW21daW5zdGFuY2VvZiBBcnJheT9jW21dPTNEbFttXS5zbGlj
ZSgwKTpjW21dPTNEbFttXX1pZighZXx8IWU9Ci5sZW5ndGgpe3ZhciBnPTNEdS5zZWxlY3RBbGwo
Ii5udi1ub0RhdGEiKS5kYXRhKFtoXSk7cmV0dXJuIGcuZW50ZXIoKS5hcHBlbj0KZCgidGV4dCIp
LmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2VtIikuc3R5bGUo
InRleHQtYW5jPQpob3IiLCJtaWRkbGUiKSxnLmF0dHIoIngiLHIubGVmdCtmLzIpLmF0dHIoInki
LHIudG9wK2QvMikudGV4dChmdW5jdGlvbihlKXs9CnJldHVybiBlfSksdn11LnNlbGVjdEFsbCgi
Lm52LW5vRGF0YSIpLnJlbW92ZSgpO3ZhciB5PTNEdS5zZWxlY3RBbGwoImcubnYtdz0KcmFwLm52
LXBpZUNoYXJ0IikuZGF0YShbZV0pLGI9M0R5LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xh
c3MiLCJudmQzIG52PQotd3JhcCBudi1waWVDaGFydCIpLmFwcGVuZCgiZyIpLHc9M0R5LnNlbGVj
dCgiZyIpO2IuYXBwZW5kKCJnIikuYXR0cigiY2xhc3M9CiIsIm52LXBpZVdyYXAiKSxiLmFwcGVu
ZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpLG8mJihuLndpZHRoKGYpLj0Ka2V5
KHQueCgpKSx5LnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5kYXR1bShlKS5jYWxsKG4pLHIudG9w
IT0zRG4uaGVpZ2h0KCkmPQomKHIudG9wPTNEbi5oZWlnaHQoKSxkPTNEKHN8fHBhcnNlSW50KHUu
c3R5bGUoImhlaWdodCIpKXx8NDAwKS1yLnRvcC1yLmJvdHQ9Cm9tKSx5LnNlbGVjdCgiLm52LWxl
Z2VuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiKyAtci50b3ArIikiKT0K
KSx5LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3IubGVmdCsiLCIrci50b3ArIikiKSx0
LndpZHRoKGYpLmhlaWdodChkPQopO3ZhciBFPTNEdy5zZWxlY3QoIi5udi1waWVXcmFwIikuZGF0
dW0oW2VdKTtkMy50cmFuc2l0aW9uKEUpLmNhbGwodCksbi5kaXM9CnBhdGNoLm9uKCJzdGF0ZUNo
YW5nZSIsZnVuY3Rpb24oZSl7bD0zRGUscC5zdGF0ZUNoYW5nZShsKSx2LnVwZGF0ZSgpfSksdC5k
aT0Kc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7cC50b29s
dGlwSGlkZShlKX0pLHAub24oImNoPQphbmdlU3RhdGUiLGZ1bmN0aW9uKHQpe3R5cGVvZiB0LmRp
c2FibGVkIT0zRCJ1bmRlZmluZWQiJiYoZS5mb3JFYWNoKGZ1bmN0aW89Cm4oZSxuKXtlLmRpc2Fi
bGVkPTNEdC5kaXNhYmxlZFtuXX0pLGwuZGlzYWJsZWQ9M0R0LmRpc2FibGVkKSx2LnVwZGF0ZSgp
fSl9KT0KLHZ9dmFyIHQ9M0RlLm1vZGVscy5waWUoKSxuPTNEZS5tb2RlbHMubGVnZW5kKCkscj0z
RHt0b3A6MzAscmlnaHQ6MjAsYm90dG9tPQo6MjAsbGVmdDoyMH0saT0zRG51bGwscz0zRG51bGws
bz0zRCEwLHU9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLGE9M0QhMCxmPQo9M0RmdW5jdGlvbihl
LHQsbixyKXtyZXR1cm4iPGgzPiIrZSsiPC9oMz4iKyI8cD4iK3QrIjwvcD4ifSxsPTNEe30sYz0z
RG51bGw9CixoPTNEIk5vIERhdGEgQXZhaWxhYmxlLiIscD0zRGQzLmRpc3BhdGNoKCJ0b29sdGlw
U2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdD0KZUNoYW5nZSIsImNoYW5nZVN0YXRlIiksZD0zRGZ1
bmN0aW9uKG4scil7dmFyIGk9M0R0LmRlc2NyaXB0aW9uKCkobi5wb2ludCl8PQp8dC54KCkobi5w
b2ludCkscz0zRG4ucG9zWzBdKyhyJiZyLm9mZnNldExlZnR8fDApLG89M0RuLnBvc1sxXSsociYm
ci5vZmZzZXQ9ClRvcHx8MCksdT0zRHQudmFsdWVGb3JtYXQoKSh0LnkoKShuLnBvaW50KSksYT0z
RGYoaSx1LG4sdik7ZS50b29sdGlwLnNob3coWz0KcyxvXSxhLG4udmFsdWU8MD8ibiI6InMiLG51
bGwscil9O3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvPQpvbHRpcCIs
ZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rci5sZWZ0LGUucG9zWzFdK3IudG9wXSxwLnRv
b2x0aXBTaG93KGU9Cil9KSxwLm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7YSYmZChlKX0p
LHAub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbigpez0KYSYmZS50b29sdGlwLmNsZWFudXAoKX0p
LHYubGVnZW5kPTNEbix2LmRpc3BhdGNoPTNEcCx2LnBpZT0zRHQsZDMucmViaW5kKHYsPQp0LCJ2
YWx1ZUZvcm1hdCIsInZhbHVlcyIsIngiLCJ5IiwiZGVzY3JpcHRpb24iLCJpZCIsInNob3dMYWJl
bHMiLCJkb251dExhYmU9CmxzT3V0c2lkZSIsInBpZUxhYmVsc091dHNpZGUiLCJsYWJlbFR5cGUi
LCJkb251dCIsImRvbnV0UmF0aW8iLCJsYWJlbFRocmVzaD0Kb2xkIiksdi5vcHRpb25zPTNEZS51
dGlscy5vcHRpb25zRnVuYy5iaW5kKHYpLHYubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuPQog
YXJndW1lbnRzLmxlbmd0aD8oci50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50
b3A6ci50b3Asci5yaWdodD0KPTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdo
dDpyLnJpZ2h0LHIuYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tPQohPTNEInVuZGVmaW5lZCI/ZS5i
b3R0b206ci5ib3R0b20sci5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmw9
CmVmdDpyLmxlZnQsdik6cn0sdi53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhpPTNEZSx2KTppfT0KLHYuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHM9M0RlLHYpOnN9LHYuY29sb3I9M0RmdW5jPQp0aW9uKHIpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyh1PTNEZS51dGlscy5nZXRDb2xvcihyKSxuLmNvbG9yKHUpLHQuY29s
b3I9Cih1KSx2KTp1fSx2LnNob3dMZWdlbmQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8obz0zRGUsdik6b30sdj0KLnRvb2x0aXBzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGE9M0RlLHYpOmF9LHYudG9vbHRpcENvbnRlPQpudD0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSx2KTpmfSx2LnN0YXRlPTNEZnVuY3Rp
b24oZSk9CntyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGUsdik6bH0sdi5kZWZhdWx0U3Rh
dGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYT0Kcmd1bWVudHMubGVuZ3RoPyhjPTNEZSx2KTpjfSx2
Lm5vRGF0YT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPQo/KGg9M0RlLHYp
Omh9LHZ9LGUubW9kZWxzLnNjYXR0ZXI9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIEkocSl7cmV0dXJu
IHEuZWFjaCg9CmZ1bmN0aW9uKEkpe2Z1bmN0aW9uIFEoKXtpZighZylyZXR1cm4hMTt2YXIgZSxp
PTNEZDMubWVyZ2UoSS5tYXAoZnVuY3Rpb24oZT0KLHQpe3JldHVybiBlLnZhbHVlcy5tYXAoZnVu
Y3Rpb24oZSxuKXt2YXIgcj0zRGYoZSxuKSxpPTNEbChlLG4pO3JldHVybltvKHIpPQosdShpKSx0
LG4sZV19KS5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gYihlWzRdLHQpfSl9KSk7aWYoRD0z
RD0zRD0zRCEwKXs9CmlmKHgpe3ZhciBhPTNEWC5zZWxlY3QoImRlZnMiKS5zZWxlY3RBbGwoIi5u
di1wb2ludC1jbGlwcyIpLmRhdGEoW3NdKS5lbnRlcj0KKCk7YS5hcHBlbmQoImNsaXBQYXRoIiku
YXR0cigiY2xhc3MiLCJudi1wb2ludC1jbGlwcyIpLmF0dHIoImlkIiwibnYtcG9pbnRzPQotY2xp
cC0iK3MpO3ZhciBjPTNEWC5zZWxlY3QoIiNudi1wb2ludHMtY2xpcC0iK3MpLnNlbGVjdEFsbCgi
Y2lyY2xlIikuZGF0YSg9CmkpO2MuZW50ZXIoKS5hcHBlbmQoImNpcmNsZSIpLmF0dHIoInIiLFQp
LGMuZXhpdCgpLnJlbW92ZSgpLGMuYXR0cigiY3giLGZ1bj0KY3Rpb24oZSl7cmV0dXJuIGVbMF19
KS5hdHRyKCJjeSIsZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV19KSxYLnNlbGVjdCgiLm52LXBvPQpp
bnQtcGF0aHMiKS5hdHRyKCJjbGlwLXBhdGgiLCJ1cmwoI252LXBvaW50cy1jbGlwLSIrcysiKSIp
fWkubGVuZ3RoJiYoaS5wdXM9CmgoW28ucmFuZ2UoKVswXS0yMCx1LnJhbmdlKClbMF0tMjAsbnVs
bCxudWxsXSksaS5wdXNoKFtvLnJhbmdlKClbMV0rMjAsdS5yYT0KbmdlKClbMV0rMjAsbnVsbCxu
dWxsXSksaS5wdXNoKFtvLnJhbmdlKClbMF0tMjAsdS5yYW5nZSgpWzBdKzIwLG51bGwsbnVsbF0p
PQosaS5wdXNoKFtvLnJhbmdlKClbMV0rMjAsdS5yYW5nZSgpWzFdLTIwLG51bGwsbnVsbF0pKTt2
YXIgaD0zRGQzLmdlb20ucG9seWc9Cm9uKFtbLTEwLC0xMF0sWy0xMCxyKzEwXSxbbisxMCxyKzEw
XSxbbisxMCwtMTBdXSkscD0zRDFlLTY7aT0zRGkuc29ydChmdW5jdD0KaW9uKGUsdCl7cmV0dXJu
IGVbMF0tdFswXXx8ZVsxXS10WzFdfSk7Zm9yKHZhciBkPTNEMDtkPGkubGVuZ3RoLTE7KU1hdGgu
YWJzPQooaVtkXVswXS1pW2QrMV1bMF0pPHAmJk1hdGguYWJzKGlbZF1bMV0taVtkKzFdWzFdKTxw
P2kuc3BsaWNlKGQrMSwxKTpkKys7dmE9CnIgdj0zRGQzLmdlb20udm9yb25vaShpKS5tYXAoZnVu
Y3Rpb24oZSx0KXtyZXR1cm57ZGF0YTpoLmNsaXAoZSksc2VyaWVzOmlbdD0KXVsyXSxwb2ludDpp
W3RdWzNdfX0pLG09M0RYLnNlbGVjdCgiLm52LXBvaW50LXBhdGhzIikuc2VsZWN0QWxsKCJwYXRo
IikuZGF0PQphKHYpO20uZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsZnVuY3Rp
b24oZSx0KXtyZXR1cm4ibnYtcGF0aC0iK3Q9Cn0pLG0uZXhpdCgpLnJlbW92ZSgpLG0uYXR0cigi
ZCIsZnVuY3Rpb24oZSl7cmV0dXJuIWV8fCFlLmRhdGF8fGUuZGF0YS5sZW5ndD0KaD0zRD0zRD0z
RDA/Ik0gMCAwIjoiTSIrZS5kYXRhLmpvaW4oIkwiKSsiWiJ9KTt2YXIgeT0zRGZ1bmN0aW9uKGUs
bil7aWYoRilyPQpldHVybiAwO3ZhciByPTNESVtlLnNlcmllc107aWYodHlwZW9mIHI9M0Q9M0Qi
dW5kZWZpbmVkIilyZXR1cm47dmFyIGk9M0RyLnY9CmFsdWVzW2UucG9pbnRdO24oe3BvaW50Omks
c2VyaWVzOnIscG9zOltvKGYoaSxlLnBvaW50KSkrdC5sZWZ0LHUobChpLGUucG9pbj0KdCkpK3Qu
dG9wXSxzZXJpZXNJbmRleDplLnNlcmllcyxwb2ludEluZGV4OmUucG9pbnR9KX07bS5vbigiY2xp
Y2siLGZ1bmN0aW9uPQooZSl7eShlLF8uZWxlbWVudENsaWNrKX0pLm9uKCJtb3VzZW92ZXIiLGZ1
bmN0aW9uKGUpe3koZSxfLmVsZW1lbnRNb3VzZW92ZXI9Cil9KS5vbigibW91c2VvdXQiLGZ1bmN0
aW9uKGUsdCl7eShlLF8uZWxlbWVudE1vdXNlb3V0KX0pfWVsc2UgWC5zZWxlY3QoIi5udj0KLWdy
b3VwcyIpLnNlbGVjdEFsbCgiLm52LWdyb3VwIikuc2VsZWN0QWxsKCIubnYtcG9pbnQiKS5vbigi
Y2xpY2siLGZ1bmN0aW9uPQooZSxuKXtpZihGfHwhSVtlLnNlcmllc10pcmV0dXJuIDA7dmFyIHI9
M0RJW2Uuc2VyaWVzXSxpPTNEci52YWx1ZXNbbl07Xy5lbGU9Cm1lbnRDbGljayh7cG9pbnQ6aSxz
ZXJpZXM6cixwb3M6W28oZihpLG4pKSt0LmxlZnQsdShsKGksbikpK3QudG9wXSxzZXJpZXNJbj0K
ZGV4OmUuc2VyaWVzLHBvaW50SW5kZXg6bn0pfSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oZSxu
KXtpZihGfHwhSVtlLnNlcmllPQpzXSlyZXR1cm4gMDt2YXIgcj0zRElbZS5zZXJpZXNdLGk9M0Ry
LnZhbHVlc1tuXTtfLmVsZW1lbnRNb3VzZW92ZXIoe3BvaW50Omk9CixzZXJpZXM6cixwb3M6W28o
ZihpLG4pKSt0LmxlZnQsdShsKGksbikpK3QudG9wXSxzZXJpZXNJbmRleDplLnNlcmllcyxwb2lu
dD0KSW5kZXg6bn0pfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbihlLHQpe2lmKEZ8fCFJW2Uuc2Vy
aWVzXSlyZXR1cm4gMDt2YXIgbj0KPTNESVtlLnNlcmllc10scj0zRG4udmFsdWVzW3RdO18uZWxl
bWVudE1vdXNlb3V0KHtwb2ludDpyLHNlcmllczpuLHNlcmllc0luPQpkZXg6ZS5zZXJpZXMscG9p
bnRJbmRleDp0fSl9KTtGPTNEITF9dmFyIHE9M0RuLXQubGVmdC10LnJpZ2h0LFI9M0RyLXQudG9w
LXQ9Ci5ib3R0b20sVT0zRGQzLnNlbGVjdCh0aGlzKTtJLmZvckVhY2goZnVuY3Rpb24oZSx0KXtl
LnZhbHVlcy5mb3JFYWNoKGZ1bmN0aT0Kb24oZSl7ZS5zZXJpZXM9M0R0fSl9KTt2YXIgVz0zRE4m
JkMmJkE/W106ZDMubWVyZ2UoSS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuPQogZS52YWx1ZXMubWFw
KGZ1bmN0aW9uKGUsdCl7cmV0dXJue3g6ZihlLHQpLHk6bChlLHQpLHNpemU6YyhlLHQpfX0pfSkp
O28uZG89Cm1haW4oTnx8ZDMuZXh0ZW50KFcubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9KS5j
b25jYXQoZCkpKSx3JiZJWzBdP28ucmFuZz0KZShrfHxbKHEqRStxKS8oMipJWzBdLnZhbHVlcy5s
ZW5ndGgpLHEtcSooMStFKS8oMipJWzBdLnZhbHVlcy5sZW5ndGgpXSk6by5yPQphbmdlKGt8fFsw
LHFdKSx1LmRvbWFpbihDfHxkMy5leHRlbnQoVy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0p
LmNvbmNhdCg9CnYpKSkucmFuZ2UoTHx8W1IsMF0pLGEuZG9tYWluKEF8fGQzLmV4dGVudChXLm1h
cChmdW5jdGlvbihlKXtyZXR1cm4gZS5zaXplfT0KKS5jb25jYXQobSkpKS5yYW5nZShPfHxbMTYs
MjU2XSk7aWYoby5kb21haW4oKVswXT0zRD0zRD0zRG8uZG9tYWluKClbMV18fHUuPQpkb21haW4o
KVswXT0zRD0zRD0zRHUuZG9tYWluKClbMV0pTT0zRCEwO28uZG9tYWluKClbMF09M0Q9M0Q9M0Rv
LmRvbWFpbigpWzE9Cl0mJihvLmRvbWFpbigpWzBdP28uZG9tYWluKFtvLmRvbWFpbigpWzBdLW8u
ZG9tYWluKClbMF0qLjAxLG8uZG9tYWluKClbMV0rbz0KLmRvbWFpbigpWzFdKi4wMV0pOm8uZG9t
YWluKFstMSwxXSkpLHUuZG9tYWluKClbMF09M0Q9M0Q9M0R1LmRvbWFpbigpWzFdJiYoPQp1LmRv
bWFpbigpWzBdP3UuZG9tYWluKFt1LmRvbWFpbigpWzBdLXUuZG9tYWluKClbMF0qLjAxLHUuZG9t
YWluKClbMV0rdS5kb209CmFpbigpWzFdKi4wMV0pOnUuZG9tYWluKFstMSwxXSkpLGlzTmFOKG8u
ZG9tYWluKClbMF0pJiZvLmRvbWFpbihbLTEsMV0pLGlzTj0KYU4odS5kb21haW4oKVswXSkmJnUu
ZG9tYWluKFstMSwxXSksUD0zRFB8fG8sSD0zREh8fHUsQj0zREJ8fGE7dmFyIFg9M0RVLnNlPQps
ZWN0QWxsKCJnLm52LXdyYXAubnYtc2NhdHRlciIpLmRhdGEoW0ldKSxWPTNEWC5lbnRlcigpLmFw
cGVuZCgiZyIpLmF0dHIoImM9Cmxhc3MiLCJudmQzIG52LXdyYXAgbnYtc2NhdHRlciBudi1jaGFy
dC0iK3MrKE0/IiBudi1zaW5nbGUtcG9pbnQiOiIiKSksJD0zRD0KVi5hcHBlbmQoImRlZnMiKSxK
PTNEVi5hcHBlbmQoImciKSxLPTNEWC5zZWxlY3QoImciKTtKLmFwcGVuZCgiZyIpLmF0dHIoImNs
PQphc3MiLCJudi1ncm91cHMiKSxKLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtcG9pbnQt
cGF0aHMiKSxYLmF0dHIoInRyYW49CnNmb3JtIiwidHJhbnNsYXRlKCIrdC5sZWZ0KyIsIit0LnRv
cCsiKSIpLCQuYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoImlkIiwibj0Kdi1lZGdlLWNsaXAtIitz
KS5hcHBlbmQoInJlY3QiKSxYLnNlbGVjdCgiI252LWVkZ2UtY2xpcC0iK3MrIiByZWN0IikuYXR0
cigiPQp3aWR0aCIscSkuYXR0cigiaGVpZ2h0IixSPjA/UjowKSxLLmF0dHIoImNsaXAtcGF0aCIs
Uz8idXJsKCNudi1lZGdlLWNsaXAtIis9CnMrIikiOiIiKSxGPTNEITA7dmFyIEc9M0RYLnNlbGVj
dCgiLm52LWdyb3VwcyIpLnNlbGVjdEFsbCgiLm52LWdyb3VwIikuZGF0YT0KKGZ1bmN0aW9uKGUp
e3JldHVybiBlfSxmdW5jdGlvbihlKXtyZXR1cm4gZS5rZXl9KTtHLmVudGVyKCkuYXBwZW5kKCJn
Iikuc3R5PQpsZSgic3Ryb2tlLW9wYWNpdHkiLDFlLTYpLnN0eWxlKCJmaWxsLW9wYWNpdHkiLDFl
LTYpLEcuZXhpdCgpLnJlbW92ZSgpLEcuYXQ9CnRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1
cm4ibnYtZ3JvdXAgbnYtc2VyaWVzLSIrdH0pLmNsYXNzZWQoImhvdmVyIixmdT0KbmN0aW9uKGUp
e3JldHVybiBlLmhvdmVyfSksRy5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gaShl
LHQpfSkuc3R5PQpsZSgic3Ryb2tlIixmdW5jdGlvbihlLHQpe3JldHVybiBpKGUsdCl9KS5zdHls
ZSgic3Ryb2tlLW9wYWNpdHkiLDEpLnN0eWxlKCI9CmZpbGwtb3BhY2l0eSIsLjUpO2lmKHApe3Zh
ciBZPTNERy5zZWxlY3RBbGwoImNpcmNsZS5udi1wb2ludCIpLmRhdGEoZnVuY3Rpbz0KbihlKXty
ZXR1cm4gZS52YWx1ZXN9LHkpO1kuZW50ZXIoKS5hcHBlbmQoImNpcmNsZSIpLnN0eWxlKCJmaWxs
IixmdW5jdGlvbihlPQosdCl7cmV0dXJuIGUuY29sb3J9KS5zdHlsZSgic3Ryb2tlIixmdW5jdGlv
bihlLHQpe3JldHVybiBlLmNvbG9yfSkuYXR0cigiY3g9CiIsZnVuY3Rpb24odCxuKXtyZXR1cm4g
ZS51dGlscy5OYU50b1plcm8oUChmKHQsbikpKX0pLmF0dHIoImN5IixmdW5jdGlvbih0LD0Kbil7
cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKEgobCh0LG4pKSl9KS5hdHRyKCJyIixmdW5jdGlvbihl
LHQpe3JldHVybiBNYXRoPQouc3FydChhKGMoZSx0KSkvTWF0aC5QSSl9KSxZLmV4aXQoKS5yZW1v
dmUoKSxHLmV4aXQoKS5zZWxlY3RBbGwoInBhdGgubnYtcG89CmludCIpLmF0dHIoImN4IixmdW5j
dGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhvKGYodCxuKSkpfSkuYXR0cigiYz0K
eSIsZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8odShsKHQsbikpKX0pLnJl
bW92ZSgpLFkuZWFjaChmdW5jPQp0aW9uKGUsdCl7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoIm52
LXBvaW50IiwhMCkuY2xhc3NlZCgibnYtcG9pbnQtIit0LCEwKS49CmNsYXNzZWQoImhvdmVyIiwh
MSl9KSxZLmF0dHIoImN4IixmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhv
KD0KZih0LG4pKSl9KS5hdHRyKCJjeSIsZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50
b1plcm8odShsKHQsbikpKX0pLmF0PQp0cigiciIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5z
cXJ0KGEoYyhlLHQpKS9NYXRoLlBJKX0pfWVsc2V7dmFyIFk9M0RHLnM9CmVsZWN0QWxsKCJwYXRo
Lm52LXBvaW50IikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXN9KTtZLmVudGVyKCku
YXBwZT0KbmQoInBhdGgiKS5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xv
cn0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0PQppb24oZSx0KXtyZXR1cm4gZS5jb2xvcn0pLmF0dHIo
InRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCI9CitQKGYoZSx0KSkr
IiwiK0gobChlLHQpKSsiKSJ9KS5hdHRyKCJkIixkMy5zdmcuc3ltYm9sKCkudHlwZShoKS5zaXpl
KGZ1bmN0aT0Kb24oZSx0KXtyZXR1cm4gYShjKGUsdCkpfSkpLFkuZXhpdCgpLnJlbW92ZSgpLEcu
ZXhpdCgpLnNlbGVjdEFsbCgicGF0aC5udi1wPQpvaW50IikuYXR0cigidHJhbnNmb3JtIixmdW5j
dGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitvKGYoZSx0KSkrIiwiK3UobCg9CmUsdCkpKyIp
In0pLnJlbW92ZSgpLFkuZWFjaChmdW5jdGlvbihlLHQpe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2Vk
KCJudi1wb2ludD0KIiwhMCkuY2xhc3NlZCgibnYtcG9pbnQtIit0LCEwKS5jbGFzc2VkKCJob3Zl
ciIsITEpfSksWS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1PQpuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNs
YXRlKCIrbyhmKGUsdCkpKyIsIit1KGwoZSx0KSkrIikifSkuYXR0cigiZCIsZDMuc3Y9Cmcuc3lt
Ym9sKCkudHlwZShoKS5zaXplKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoYyhlLHQpKX0pKX1jbGVh
clRpbWVvdXQoaiksaj0KPTNEc2V0VGltZW91dChRLDMwMCksUD0zRG8uY29weSgpLEg9M0R1LmNv
cHkoKSxCPTNEYS5jb3B5KCl9KSxJfXZhciB0PTNEe3RvPQpwOjAscmlnaHQ6MCxib3R0b206MCxs
ZWZ0OjB9LG49M0Q5NjAscj0zRDUwMCxpPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxzPQo9M0RN
YXRoLmZsb29yKE1hdGgucmFuZG9tKCkqMWU1KSxvPTNEZDMuc2NhbGUubGluZWFyKCksdT0zRGQz
LnNjYWxlLmxpbmVhcig9CiksYT0zRGQzLnNjYWxlLmxpbmVhcigpLGY9M0RmdW5jdGlvbihlKXty
ZXR1cm4gZS54fSxsPTNEZnVuY3Rpb24oZSl7cmV0dXJuID0KZS55fSxjPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGUuc2l6ZXx8MX0saD0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnNoYXBlfHwiY2lyPQpj
bGUifSxwPTNEITAsZD0zRFtdLHY9M0RbXSxtPTNEW10sZz0zRCEwLHk9M0RudWxsLGI9M0RmdW5j
dGlvbihlKXtyZXR1cm4hZS49Cm5vdEFjdGl2ZX0sdz0zRCExLEU9M0QuMSxTPTNEITEseD0zRCEw
LFQ9M0RmdW5jdGlvbigpe3JldHVybiAyNX0sTj0zRG51bGwsQz0KPTNEbnVsbCxrPTNEbnVsbCxM
PTNEbnVsbCxBPTNEbnVsbCxPPTNEbnVsbCxNPTNEITEsXz0zRGQzLmRpc3BhdGNoKCJlbGVtZW50
PQpDbGljayIsImVsZW1lbnRNb3VzZW92ZXIiLCJlbGVtZW50TW91c2VvdXQiKSxEPTNEITAsUCxI
LEIsaixGPTNEITE7cmV0dXJuIEk9Ci5jbGVhckhpZ2hsaWdodHM9M0RmdW5jdGlvbigpe2QzLnNl
bGVjdEFsbCgiLm52LWNoYXJ0LSIrcysiIC5udi1wb2ludC5ob3Zlcj0KIikuY2xhc3NlZCgiaG92
ZXIiLCExKX0sSS5oaWdobGlnaHRQb2ludD0zRGZ1bmN0aW9uKGUsdCxuKXtkMy5zZWxlY3QoIi5u
di1jPQpoYXJ0LSIrcysiIC5udi1zZXJpZXMtIitlKyIgLm52LXBvaW50LSIrdCkuY2xhc3NlZCgi
aG92ZXIiLG4pfSxfLm9uKCJlbGVtZW49CnRNb3VzZW92ZXIucG9pbnQiLGZ1bmN0aW9uKGUpe2cm
JkkuaGlnaGxpZ2h0UG9pbnQoZS5zZXJpZXNJbmRleCxlLnBvaW50SW5kZT0KeCwhMCl9KSxfLm9u
KCJlbGVtZW50TW91c2VvdXQucG9pbnQiLGZ1bmN0aW9uKGUpe2cmJkkuaGlnaGxpZ2h0UG9pbnQo
ZS5zZXJpPQplc0luZGV4LGUucG9pbnRJbmRleCwhMSl9KSxJLmRpc3BhdGNoPTNEXyxJLm9wdGlv
bnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmI9CmluZChJKSxJLng9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGQzLmZ1bmN0b3IoZSksSSk6Zn0sST0KLnk9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGQzLmZ1bmN0b3IoZSksSSk6bH0s
SS5zaXplPTNEPQpmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGQzLmZ1
bmN0b3IoZSksSSk6Y30sSS5tYXJnaW49M0RmdW49CmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyh0LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcD0KOnQudG9w
LHQucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OnQucmlnaHQs
dC5ib3R0b209M0R0PQp5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTp0LmJv
dHRvbSx0LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCI9CnVuZGVmaW5lZCI/ZS5sZWZ0OnQubGVm
dCxJKTp0fSxJLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndD0KaD8o
bj0zRGUsSSk6bn0sSS5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8ocj0zRGUsSSk6cn0sPQpJLnhTY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhvPTNEZSxJKTpvfSxJLnlTY2FsZT0zRGZ1bmM9CnRpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHU9M0RlLEkpOnV9LEkuelNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuID0K
YXJndW1lbnRzLmxlbmd0aD8oYT0zRGUsSSk6YX0sSS54RG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5nPQp0aD8oTj0zRGUsSSk6Tn0sSS55RG9tYWluPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEM9M0RlLEkpOkM9Cn0sSS5zaXplRG9tYWluPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEE9M0RlLEkpOkF9LEkueFJhbmdl
PQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaz0zRGUsSSk6a30sSS55
UmFuZ2U9M0RmdW5jdGlvbihlKXs9CnJldHVybiBhcmd1bWVudHMubGVuZ3RoPyhMPTNEZSxJKTpM
fSxJLnNpemVSYW5nZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bT0KZW50cy5sZW5ndGg/KE89
M0RlLEkpOk99LEkuZm9yY2VYPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGQ9Cj0zRGUsSSk6ZH0sSS5mb3JjZVk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8odj0zRGUsSSk6dn0sSS5mbz0KcmNlU2l6ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhtPTNEZSxJKTptfSxJLmludGVyYWN0aXZlPTNEPQpmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0zRGUsSSk6Z30sSS5wb2ludEtleT0zRGZ1bmN0aW9u
KGUpe3I9CmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9M0RlLEkpOnl9LEkucG9pbnRBY3RpdmU9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndT0KbWVudHMubGVuZ3RoPyhiPTNEZSxJKTpifSxJLnBh
ZERhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oPQp3PTNEZSxJKTp3
fSxJLnBhZERhdGFPdXRlcj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhF
PTNEZSxJKTo9CkV9LEkuY2xpcEVkZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oUz0zRGUsSSk6U30sSS5jbGlwVm9ybz0Kbm9pPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHg9M0RlLEkpOnh9LEkudXNlVm9yb25vaT0zRGZ1bmN0PQppb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEQ9M0RlLEQ9M0Q9M0Q9M0QhMSYmKHg9M0QhMSksSSk6
RH0sSS5jbGlwUmE9CmRpdXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
VD0zRGUsSSk6VH0sSS5jb2xvcj0zRGZ1bmN0aW9uKD0KdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGk9M0RlLnV0aWxzLmdldENvbG9yKHQpLEkpOml9LEkuc2hhcGU9M0RmdW5jdGlvPQpuKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxJKTpofSxJLm9ubHlDaXJjbGVzPTNEZnVu
Y3Rpb24oZSl7cmV0dXI9Cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsSSk6cH0sSS5pZD0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPz0KKHM9M0RlLEkpOnN9LEkuc2luZ2xl
UG9pbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTT0zRGUsSSk6PQpN
fSxJfSxlLm1vZGVscy5zY2F0dGVyQ2hhcnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIEYoZSl7cmV0
dXJuIGUuZWFjaChmdW5jdGk9Cm9uKGUpe2Z1bmN0aW9uIEooKXtpZihUKXJldHVybiBXLnNlbGVj
dCgiLm52LXBvaW50LXBhdGhzIikuc3R5bGUoInBvaW50ZXItZT0KdmVudHMiLCJhbGwiKSwhMTtX
LnNlbGVjdCgiLm52LXBvaW50LXBhdGhzIikuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwibm9uZSIp
PQo7dmFyIGk9M0RkMy5tb3VzZSh0aGlzKTtoLmRpc3RvcnRpb24oeCkuZm9jdXMoaVswXSkscC5k
aXN0b3J0aW9uKHgpLmZvY3VzKGk9ClsxXSksVy5zZWxlY3QoIi5udi1zY2F0dGVyV3JhcCIpLmNh
bGwodCksYiYmVy5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5jYWxsKD0KbiksdyYmVy5zZWxlY3Qo
Ii5udi15Lm52LWF4aXMiKS5jYWxsKHIpLFcuc2VsZWN0KCIubnYtZGlzdHJpYnV0aW9uWCIpLmRh
dHVtPQooZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbChvKSxX
LnNlbGVjdCgiLm52LWRpc3RyaWJ1dGk9Cm9uWSIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUp
e3JldHVybiFlLmRpc2FibGVkfSkpLmNhbGwodSl9dmFyIEM9M0RkMy5zZT0KbGVjdCh0aGlzKSxr
PTNEdGhpcyxMPTNEKGZ8fHBhcnNlSW50KEMuc3R5bGUoIndpZHRoIikpfHw5NjApLWEubGVmdC1h
LnJpZ2h0PQosRD0zRChsfHxwYXJzZUludChDLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktYS50b3At
YS5ib3R0b207Ri51cGRhdGU9M0RmdW5jdGk9Cm9uKCl7Qy5jYWxsKEYpfSxGLmNvbnRhaW5lcj0z
RHRoaXMsQS5kaXNhYmxlZD0zRGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZT0KLmRpc2FibGVk
fSk7aWYoIU8pe3ZhciBJO089M0R7fTtmb3IoSSBpbiBBKUFbSV1pbnN0YW5jZW9mIEFycmF5P09b
SV09M0RBW0ldPQouc2xpY2UoMCk6T1tJXT0zREFbSV19aWYoIWV8fCFlLmxlbmd0aHx8IWUuZmls
dGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHU9CmVzLmxlbmd0aH0pLmxlbmd0aCl7dmFyIHE9
M0RDLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW19dKTtyZXR1cm4gcS5lbj0KdGVyKCku
YXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5Iiwi
LS43ZW0iKS5zdHlsPQplKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLHEuYXR0cigieCIsYS5sZWZ0
K0wvMikuYXR0cigieSIsYS50b3ArRC8yKS50ZXh0KGY9CnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxG
fUMuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtb3ZlKCksUD0zRFB8fGgsSD0zREh8fD0KcDt2
YXIgUj0zREMuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtc2NhdHRlckNoYXJ0IikuZGF0YShbZV0p
LFU9M0RSLmVudGVyKCkuPQphcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBu
di1zY2F0dGVyQ2hhcnQgbnYtY2hhcnQtIit0LmlkKCkpLHo9Cj0zRFUuYXBwZW5kKCJnIiksVz0z
RFIuc2VsZWN0KCJnIik7ei5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtYj0K
YWNrZ3JvdW5kIiksei5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcyIpLHou
YXBwZW5kKCJnIikuYXR0cigiPQpjbGFzcyIsIm52LXkgbnYtYXhpcyIpLHouYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJudi1zY2F0dGVyV3JhcCIpLHouYXBwZW49CmQoImciKS5hdHRyKCJjbGFz
cyIsIm52LWRpc3RXcmFwIiksei5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZFdy
YT0KcCIpLHouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1jb250cm9sc1dyYXAiKTtpZih5
KXt2YXIgWD0zRFM/TC8yOkw7aS53PQppZHRoKFgpLFIuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIp
LmRhdHVtKGUpLmNhbGwoaSksYS50b3AhPTNEaS5oZWlnaHQoKSYmKGE9Ci50b3A9M0RpLmhlaWdo
dCgpLEQ9M0QobHx8cGFyc2VJbnQoQy5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLWEudG9wLWEuYm90
dG9tKT0KLFIuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5z
bGF0ZSgiKyhMLVgpKyIsIisgLWEudG9wPQorIikiKX1TJiYocy53aWR0aCgxODApLmNvbG9yKFsi
IzQ0NCJdKSxXLnNlbGVjdCgiLm52LWNvbnRyb2xzV3JhcCIpLmRhdHVtKGo9CikuYXR0cigidHJh
bnNmb3JtIiwidHJhbnNsYXRlKDAsIisgLWEudG9wKyIpIikuY2FsbChzKSksUi5hdHRyKCJ0cmFu
c2Zvcm0iLD0KInRyYW5zbGF0ZSgiK2EubGVmdCsiLCIrYS50b3ArIikiKSxFJiZXLnNlbGVjdCgi
Lm52LXkubnYtYXhpcyIpLmF0dHIoInRyYW5zPQpmb3JtIiwidHJhbnNsYXRlKCIrTCsiLDApIiks
dC53aWR0aChMKS5oZWlnaHQoRCkuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXs9CnJldHVybiBl
LmNvbG9yfHxjKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxl
ZH0pKSxkIT0zRD0KPTNEMCYmdC54RG9tYWluKG51bGwpLHYhPTNEPTNEMCYmdC55RG9tYWluKG51
bGwpLFIuc2VsZWN0KCIubnYtc2NhdHRlcldyYXAiPQopLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9u
KGUpe3JldHVybiFlLmRpc2FibGVkfSkpLmNhbGwodCk7aWYoZCE9M0Q9M0QwKXt2YXI9CiBWPTNE
aC5kb21haW4oKVsxXS1oLmRvbWFpbigpWzBdO3QueERvbWFpbihbaC5kb21haW4oKVswXS1kKlYs
aC5kb21haW4oKVsxXT0KK2QqVl0pfWlmKHYhPTNEPTNEMCl7dmFyICQ9M0RwLmRvbWFpbigpWzFd
LXAuZG9tYWluKClbMF07dC55RG9tYWluKFtwLmRvbWFpPQpuKClbMF0tdiokLHAuZG9tYWluKClb
MV0rdiokXSl9KHYhPTNEPTNEMHx8ZCE9M0Q9M0QwKSYmUi5zZWxlY3QoIi5udi1zY2F0dGU9CnJX
cmFwIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2Fs
bCh0KSxiJiYobi5zY2FsZT0KKGgpLnRpY2tzKG4udGlja3MoKSYmbi50aWNrcygpLmxlbmd0aD9u
LnRpY2tzKCk6TC8xMDApLnRpY2tTaXplKC1ELDApLFcuc2VsPQplY3QoIi5udi14Lm52LWF4aXMi
KS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK3AucmFuZ2UoKVswXSsiKSIpLmNhbGw9
CihuKSksdyYmKHIuc2NhbGUocCkudGlja3Moci50aWNrcygpJiZyLnRpY2tzKCkubGVuZ3RoP3Iu
dGlja3MoKTpELzM2KS50aWNrUz0KaXplKC1MLDApLFcuc2VsZWN0KCIubnYteS5udi1heGlzIiku
Y2FsbChyKSksbSYmKG8uZ2V0RGF0YSh0LngoKSkuc2NhbGUoaCkuPQp3aWR0aChMKS5jb2xvcihl
Lm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxjKGUsdCl9KS5maWx0ZXIoZnVuY3Rp
b249Cih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkfSkpLHouc2VsZWN0KCIubnYtZGlzdFdyYXAi
KS5hcHBlbmQoImciKS5hdHRyKCJjbD0KYXNzIiwibnYtZGlzdHJpYnV0aW9uWCIpLFcuc2VsZWN0
KCIubnYtZGlzdHJpYnV0aW9uWCIpLmF0dHIoInRyYW5zZm9ybSIsInRyPQphbnNsYXRlKDAsIitw
LnJhbmdlKClbMF0rIikiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNh
YmxlZH09CikpLmNhbGwobykpLGcmJih1LmdldERhdGEodC55KCkpLnNjYWxlKHApLndpZHRoKEQp
LmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdD0KKXtyZXR1cm4gZS5jb2xvcnx8YyhlLHQpfSkuZmls
dGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWR9KSksei5zPQplbGVjdCgiLm52
LWRpc3RXcmFwIikuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1kaXN0cmlidXRpb25ZIiks
Vy5zZWxlY3Q9CigiLm52LWRpc3RyaWJ1dGlvblkiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xh
dGUoIisoRT9MOi11LnNpemUoKSkrIiwwKSIpLj0KZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7
cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbCh1KSksZDMuZmlzaGV5ZSYmKFcuc2VsPQplY3QoIi5u
di1iYWNrZ3JvdW5kIikuYXR0cigid2lkdGgiLEwpLmF0dHIoImhlaWdodCIsRCksVy5zZWxlY3Qo
Ii5udi1iYWNrZ3I9Cm91bmQiKS5vbigibW91c2Vtb3ZlIixKKSxXLnNlbGVjdCgiLm52LWJhY2tn
cm91bmQiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7VD0KPTNEIVR9KSx0LmRpc3BhdGNoLm9uKCJl
bGVtZW50Q2xpY2suZnJlZXplRmlzaGV5ZSIsZnVuY3Rpb24oKXtUPTNEIVR9KSkscy5kPQppc3Bh
dGNoLm9uKCJsZWdlbmRDbGljayIsZnVuY3Rpb24oZSxpKXtlLmRpc2FibGVkPTNEIWUuZGlzYWJs
ZWQseD0zRGUuZGlzYWI9CmxlZD8wOjIuNSxXLnNlbGVjdCgiLm52LWJhY2tncm91bmQiKS5zdHls
ZSgicG9pbnRlci1ldmVudHMiLGUuZGlzYWJsZWQ/Im5vbj0KZSI6ImFsbCIpLFcuc2VsZWN0KCIu
bnYtcG9pbnQtcGF0aHMiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLGUuZGlzYWJsZWQ/ImFsPQps
Ijoibm9uZSIpLGUuZGlzYWJsZWQ/KGguZGlzdG9ydGlvbih4KS5mb2N1cygwKSxwLmRpc3RvcnRp
b24oeCkuZm9jdXMoMCksVy49CnNlbGVjdCgiLm52LXNjYXR0ZXJXcmFwIikuY2FsbCh0KSxXLnNl
bGVjdCgiLm52LXgubnYtYXhpcyIpLmNhbGwobiksVy5zZWxlYz0KdCgiLm52LXkubnYtYXhpcyIp
LmNhbGwocikpOlQ9M0QhMSxGLnVwZGF0ZSgpfSksaS5kaXNwYXRjaC5vbigic3RhdGVDaGFuZ2Ui
PQosZnVuY3Rpb24oZSl7QS5kaXNhYmxlZD0zRGUuZGlzYWJsZWQsTS5zdGF0ZUNoYW5nZShBKSxG
LnVwZGF0ZSgpfSksdC5kaXNwYXQ9CmNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1
bmN0aW9uKGUpe2QzLnNlbGVjdCgiLm52LWNoYXJ0LSIrdC5pZCgpKz0KIiAubnYtc2VyaWVzLSIr
ZS5zZXJpZXNJbmRleCsiIC5udi1kaXN0eC0iK2UucG9pbnRJbmRleCkuYXR0cigieTEiLGZ1bmN0
aW9uPQoodCxuKXtyZXR1cm4gZS5wb3NbMV0tRH0pLGQzLnNlbGVjdCgiLm52LWNoYXJ0LSIrdC5p
ZCgpKyIgLm52LXNlcmllcy0iK2Uuc2U9CnJpZXNJbmRleCsiIC5udi1kaXN0eS0iK2UucG9pbnRJ
bmRleCkuYXR0cigieDIiLGUucG9zWzBdK28uc2l6ZSgpKSxlLnBvcz0zRD0KW2UucG9zWzBdK2Eu
bGVmdCxlLnBvc1sxXSthLnRvcF0sTS50b29sdGlwU2hvdyhlKX0pLE0ub24oInRvb2x0aXBTaG93
IixmdW5jPQp0aW9uKGUpe04mJkIoZSxrLnBhcmVudE5vZGUpfSksTS5vbigiY2hhbmdlU3RhdGUi
LGZ1bmN0aW9uKHQpe3R5cGVvZiB0LmRpc2E9CmJsZWQhPTNEInVuZGVmaW5lZCImJihlLmZvckVh
Y2goZnVuY3Rpb24oZSxuKXtlLmRpc2FibGVkPTNEdC5kaXNhYmxlZFtuXX0pLD0KQS5kaXNhYmxl
ZD0zRHQuZGlzYWJsZWQpLEYudXBkYXRlKCl9KSxQPTNEaC5jb3B5KCksSD0zRHAuY29weSgpfSks
Rn12YXIgdD0KPTNEZS5tb2RlbHMuc2NhdHRlcigpLG49M0RlLm1vZGVscy5heGlzKCkscj0zRGUu
bW9kZWxzLmF4aXMoKSxpPTNEZS5tb2RlbHMuPQpsZWdlbmQoKSxzPTNEZS5tb2RlbHMubGVnZW5k
KCksbz0zRGUubW9kZWxzLmRpc3RyaWJ1dGlvbigpLHU9M0RlLm1vZGVscy5kaXM9CnRyaWJ1dGlv
bigpLGE9M0R7dG9wOjMwLHJpZ2h0OjIwLGJvdHRvbTo1MCxsZWZ0Ojc1fSxmPTNEbnVsbCxsPTNE
bnVsbCxjPTNEZT0KLnV0aWxzLmRlZmF1bHRDb2xvcigpLGg9M0RkMy5maXNoZXllP2QzLmZpc2hl
eWUuc2NhbGUoZDMuc2NhbGUubGluZWFyKS5kaXN0PQpvcnRpb24oMCk6dC54U2NhbGUoKSxwPTNE
ZDMuZmlzaGV5ZT9kMy5maXNoZXllLnNjYWxlKGQzLnNjYWxlLmxpbmVhcikuZGlzdG89CnJ0aW9u
KDApOnQueVNjYWxlKCksZD0zRDAsdj0zRDAsbT0zRCExLGc9M0QhMSx5PTNEITAsYj0zRCEwLHc9
M0QhMCxFPTNEITEsUz0KPTNEISFkMy5maXNoZXllLHg9M0QwLFQ9M0QhMSxOPTNEITAsQz0zRGZ1
bmN0aW9uKGUsdCxuKXtyZXR1cm4iPHN0cm9uZz4iK3QrPQoiPC9zdHJvbmc+In0saz0zRGZ1bmN0
aW9uKGUsdCxuKXtyZXR1cm4iPHN0cm9uZz4iK24rIjwvc3Ryb25nPiJ9LEw9M0RudWxsLEE9Cj0z
RHt9LE89M0RudWxsLE09M0RkMy5kaXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlkZSIs
InN0YXRlQ2hhbmdlIiwiYz0KaGFuZ2VTdGF0ZSIpLF89M0QiTm8gRGF0YSBBdmFpbGFibGUuIixE
PTNEMDt0LnhTY2FsZShoKS55U2NhbGUocCksbi5vcmllbnQoPQoiYm90dG9tIikudGlja1BhZGRp
bmcoMTApLHIub3JpZW50KEU/InJpZ2h0IjoibGVmdCIpLnRpY2tQYWRkaW5nKDEwKSxvLmF4aXM9
CigieCIpLHUuYXhpcygieSIpLHMudXBkYXRlU3RhdGUoITEpO3ZhciBQLEgsQj0zRGZ1bmN0aW9u
KGkscyl7dmFyIG89M0RpLnBvcz0KWzBdKyhzLm9mZnNldExlZnR8fDApLHU9M0RpLnBvc1sxXSso
cy5vZmZzZXRUb3B8fDApLGY9M0RpLnBvc1swXSsocy5vZmZzZXRMPQplZnR8fDApLGw9M0RwLnJh
bmdlKClbMF0rYS50b3ArKHMub2Zmc2V0VG9wfHwwKSxjPTNEaC5yYW5nZSgpWzBdK2EubGVmdCso
cy49Cm9mZnNldExlZnR8fDApLGQ9M0RpLnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLHY9M0RuLnRp
Y2tGb3JtYXQoKSh0LngoKShpLnBvaT0KbnQsaS5wb2ludEluZGV4KSksbT0zRHIudGlja0Zvcm1h
dCgpKHQueSgpKGkucG9pbnQsaS5wb2ludEluZGV4KSk7QyE9M0RudWxsPQomJmUudG9vbHRpcC5z
aG93KFtmLGxdLEMoaS5zZXJpZXMua2V5LHYsbSxpLEYpLCJuIiwxLHMsIngtbnZ0b29sdGlwIiks
ayE9M0Q9Cm51bGwmJmUudG9vbHRpcC5zaG93KFtjLGRdLGsoaS5zZXJpZXMua2V5LHYsbSxpLEYp
LCJlIiwxLHMsInktbnZ0b29sdGlwIiksTD0KIT0zRG51bGwmJmUudG9vbHRpcC5zaG93KFtvLHVd
LEwoaS5zZXJpZXMua2V5LHYsbSxpLEYpLGkudmFsdWU8MD8ibiI6InMiLG51PQpsbCxzKX0saj0z
RFt7a2V5OiJNYWduaWZ5IixkaXNhYmxlZDohMH1dO3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVt
ZW50TW91c2U9Cm91dC50b29sdGlwIixmdW5jdGlvbihlKXtNLnRvb2x0aXBIaWRlKGUpLGQzLnNl
bGVjdCgiLm52LWNoYXJ0LSIrdC5pZCgpKyIgLj0KbnYtc2VyaWVzLSIrZS5zZXJpZXNJbmRleCsi
IC5udi1kaXN0eC0iK2UucG9pbnRJbmRleCkuYXR0cigieTEiLDApLGQzLnNlbGVjPQp0KCIubnYt
Y2hhcnQtIit0LmlkKCkrIiAubnYtc2VyaWVzLSIrZS5zZXJpZXNJbmRleCsiIC5udi1kaXN0eS0i
K2UucG9pbnRJbmQ9CmV4KS5hdHRyKCJ4MiIsdS5zaXplKCkpfSksTS5vbigidG9vbHRpcEhpZGUi
LGZ1bmN0aW9uKCl7TiYmZS50b29sdGlwLmNsZWFudT0KcCgpfSksRi5kaXNwYXRjaD0zRE0sRi5z
Y2F0dGVyPTNEdCxGLmxlZ2VuZD0zRGksRi5jb250cm9scz0zRHMsRi54QXhpcz0zRG4sPQpGLnlB
eGlzPTNEcixGLmRpc3RYPTNEbyxGLmRpc3RZPTNEdSxkMy5yZWJpbmQoRix0LCJpZCIsImludGVy
YWN0aXZlIiwicG9pbnQ9CkFjdGl2ZSIsIngiLCJ5Iiwic2hhcGUiLCJzaXplIiwieFNjYWxlIiwi
eVNjYWxlIiwielNjYWxlIiwieERvbWFpbiIsInlEb21haT0KbiIsInhSYW5nZSIsInlSYW5nZSIs
InNpemVEb21haW4iLCJzaXplUmFuZ2UiLCJmb3JjZVgiLCJmb3JjZVkiLCJmb3JjZVNpemUiPQos
ImNsaXBWb3Jvbm9pIiwiY2xpcFJhZGl1cyIsInVzZVZvcm9ub2kiKSxGLm9wdGlvbnM9M0RlLnV0
aWxzLm9wdGlvbnNGdW5jLmI9CmluZChGKSxGLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhhLnRvcD0zRHR5cGVvZiBlLnRvcD0KIT0zRCJ1bmRlZmluZWQiP2Uu
dG9wOmEudG9wLGEucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0
PQo6YS5yaWdodCxhLmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJv
dHRvbTphLmJvdHRvbSxhLmxlZnQ9Cj0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5s
ZWZ0OmEubGVmdCxGKTphfSxGLndpZHRoPTNEZnVuY3Rpb24oZSl7cj0KZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oZj0zRGUsRik6Zn0sRi5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzPQoubGVuZ3RoPyhsPTNEZSxGKTpsfSxGLmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGM9M0RlLnU9CnRpbHMuZ2V0Q29sb3IodCksaS5jb2xvcihjKSxvLmNv
bG9yKGMpLHUuY29sb3IoYyksRik6Y30sRi5zaG93RGlzdFg9M0RmdW5jdD0KaW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhtPTNEZSxGKTptfSxGLnNob3dEaXN0WT0zRGZ1bmN0aW9uKGUp
e3JldHVyPQpuIGFyZ3VtZW50cy5sZW5ndGg/KGc9M0RlLEYpOmd9LEYuc2hvd0NvbnRyb2xzPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW49CnRzLmxlbmd0aD8oUz0zRGUsRik6U30sRi5zaG93
TGVnZW5kPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KD0KeT0zRGUsRik6
eX0sRi5zaG93WEF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0z
RGUsRik6Yn0sPQpGLnNob3dZQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyh3PTNEZSxGKTp3fSxGLnJpZ2h0QWxpZ249CllBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlLHIub3JpZW50KGU/InJpZ2h0IjoibGVmdD0KIiksRik6
RX0sRi5maXNoZXllPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHg9M0Rl
LEYpOnh9LEYueFBhPQpkZGluZz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhkPTNEZSxGKTpkfSxGLnlQYWRkaW5nPTNEZnVuY3Q9CmlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8odj0zRGUsRik6dn0sRi50b29sdGlwcz0zRGZ1bmN0aW9uKGUpe3JldHVybj0KIGFy
Z3VtZW50cy5sZW5ndGg/KE49M0RlLEYpOk59LEYudG9vbHRpcENvbnRlbnQ9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lPQpudHMubGVuZ3RoPyhMPTNEZSxGKTpMfSxGLnRvb2x0aXBYQ29udGVu
dD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGU9Cm5ndGg/KEM9M0RlLEYpOkN9LEYu
dG9vbHRpcFlDb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KD0K
az0zRGUsRik6a30sRi5zdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhBPTNEZSxGKTpBfSxGLmRlPQpmYXVsdFN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KE89M0RlLEYpOk99LEYubm9EYXRhPTNEZnU9Cm5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oXz0zRGUsRik6X30sRi50cmFuc2l0aW9uRHVyYXRpb249M0RmdW5j
dD0KaW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhEPTNEZSxGKTpEfSxGfSxlLm1vZGVs
cy5zY2F0dGVyUGx1c0xpbmVDaGFyPQp0PTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBCKGUpe3JldHVy
biBlLmVhY2goZnVuY3Rpb24oZSl7ZnVuY3Rpb24gVigpe2lmKFMpcmU9CnR1cm4gVS5zZWxlY3Qo
Ii5udi1wb2ludC1wYXRocyIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLCExO1Uuc2Vs
ZWN0KD0KIi5udi1wb2ludC1wYXRocyIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKTt2
YXIgaT0zRGQzLm1vdXNlKHRoaXMpO2guPQpkaXN0b3J0aW9uKEUpLmZvY3VzKGlbMF0pLHAuZGlz
dG9ydGlvbihFKS5mb2N1cyhpWzFdKSxVLnNlbGVjdCgiLm52LXNjYXR0ZXI9CldyYXAiKS5kYXR1
bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKS5jYWxsKHQpLGcmJlUu
c2VsZWN0KD0KIi5udi14Lm52LWF4aXMiKS5jYWxsKG4pLHkmJlUuc2VsZWN0KCIubnYteS5udi1h
eGlzIikuY2FsbChyKSxVLnNlbGVjdCgiLm52PQotZGlzdHJpYnV0aW9uWCIpLmRhdHVtKGUuZmls
dGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkpLmNhbGwobyksVS49CnNlbGVjdCgi
Lm52LWRpc3RyaWJ1dGlvblkiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5k
aXNhYmxlZH0pKT0KLmNhbGwodSl9dmFyIFQ9M0RkMy5zZWxlY3QodGhpcyksTj0zRHRoaXMsQz0z
RChmfHxwYXJzZUludChULnN0eWxlKCJ3aWR0aCIpPQopfHw5NjApLWEubGVmdC1hLnJpZ2h0LE09
M0QobHx8cGFyc2VJbnQoVC5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLWEudG9wLWEuYm89CnR0b207
Qi51cGRhdGU9M0RmdW5jdGlvbigpe1QuY2FsbChCKX0sQi5jb250YWluZXI9M0R0aGlzLGsuZGlz
YWJsZWQ9M0RlLm1hcD0KKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pO2lmKCFMKXt2
YXIgajtMPTNEe307Zm9yKGogaW4gaylrW2pdaW5zdGFuPQpjZW9mIEFycmF5P0xbal09M0RrW2pd
LnNsaWNlKDApOkxbal09M0RrW2pdfWlmKCFlfHwhZS5sZW5ndGh8fCFlLmZpbHRlcihmdW49CmN0
aW9uKGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgpe3ZhciBGPTNEVC5zZWxlY3RB
bGwoIi5udi1ub0RhdGEiKT0KLmRhdGEoW09dKTtyZXR1cm4gRi5lbnRlcigpLmFwcGVuZCgidGV4
dCIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hPQp0dHIoImR5IiwiLS43ZW0iKS5z
dHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxGLmF0dHIoIngiLGEubGVmdCtDLzIpLmF0dHI9
CigieSIsYS50b3ArTS8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksQn1ULnNlbGVjdEFs
bCgiLm52LW5vRGF0YSIpLnJlbT0Kb3ZlKCksaD0zRHQueFNjYWxlKCkscD0zRHQueVNjYWxlKCks
Xz0zRF98fGgsRD0zRER8fHA7dmFyIEk9M0RULnNlbGVjdEFsbCgiPQpnLm52LXdyYXAubnYtc2Nh
dHRlckNoYXJ0IikuZGF0YShbZV0pLHE9M0RJLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xh
c3M9CiIsIm52ZDMgbnYtd3JhcCBudi1zY2F0dGVyQ2hhcnQgbnYtY2hhcnQtIit0LmlkKCkpLFI9
M0RxLmFwcGVuZCgiZyIpLFU9M0RJLj0Kc2VsZWN0KCJnIik7Ui5hcHBlbmQoInJlY3QiKS5hdHRy
KCJjbGFzcyIsIm52ZDMgbnYtYmFja2dyb3VuZCIpLnN0eWxlKCJwb2luPQp0ZXItZXZlbnRzIiwi
bm9uZSIpLFIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14IG52LWF4aXMiKSxSLmFwcGVu
ZCgiZyI9CikuYXR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKSxSLmFwcGVuZCgiZyIpLmF0dHIo
ImNsYXNzIiwibnYtc2NhdHRlcldyYXAiKT0KLFIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJu
di1yZWdyZXNzaW9uTGluZXNXcmFwIiksUi5hcHBlbmQoImciKS5hdHRyKCJjPQpsYXNzIiwibnYt
ZGlzdFdyYXAiKSxSLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpLFIu
YXBwZW5kKCI9CmciKS5hdHRyKCJjbGFzcyIsIm52LWNvbnRyb2xzV3JhcCIpLEkuYXR0cigidHJh
bnNmb3JtIiwidHJhbnNsYXRlKCIrYS5sZWZ0Kz0KIiwiK2EudG9wKyIpIiksYiYmVS5zZWxlY3Qo
Ii5udi15Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitDPQorIiwwKSIp
LG0mJihpLndpZHRoKEMvMiksSS5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuZGF0dW0oZSkuY2Fs
bChpKSxhLnRvcCE9Cj0zRGkuaGVpZ2h0KCkmJihhLnRvcD0zRGkuaGVpZ2h0KCksTT0zRChsfHxw
YXJzZUludChULnN0eWxlKCJoZWlnaHQiKSl8fDQwMD0KKS1hLnRvcC1hLmJvdHRvbSksSS5zZWxl
Y3QoIi5udi1sZWdlbmRXcmFwIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrPQpDLzIr
IiwiKyAtYS50b3ArIikiKSksdyYmKHMud2lkdGgoMTgwKS5jb2xvcihbIiM0NDQiXSksVS5zZWxl
Y3QoIi5udi1jb250cm89CmxzV3JhcCIpLmRhdHVtKEgpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5z
bGF0ZSgwLCIrIC1hLnRvcCsiKSIpLmNhbGwocykpLHQudz0KaWR0aChDKS5oZWlnaHQoTSkuY29s
b3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8YyhlLHQpfSkuZmlsdGVyPQoo
ZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZH0pKSxJLnNlbGVjdCgiLm52LXNjYXR0
ZXJXcmFwIikuZGF0dW0oZS49CmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0p
KS5jYWxsKHQpLEkuc2VsZWN0KCIubnYtcmVncmVzc2lvbkxpbj0KZXNXcmFwIikuYXR0cigiY2xp
cC1wYXRoIiwidXJsKCNudi1lZGdlLWNsaXAtIit0LmlkKCkrIikiKTt2YXIgej0zREkuc2VsZWN0
PQooIi5udi1yZWdyZXNzaW9uTGluZXNXcmFwIikuc2VsZWN0QWxsKCIubnYtcmVnTGluZXMiKS5k
YXRhKGZ1bmN0aW9uKGUpe3JldHU9CnJuIGV9KTt6LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudi1yZWdMaW5lcyIpO3ZhciBXPTNEei5zZWxlY3RBbD0KbCgiLm52LXJlZ0xpbmUi
KS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybltlXX0pLFg9M0RXLmVudGVyKCkuYXBwZW5kKCJsaW5l
IikuPQphdHRyKCJjbGFzcyIsIm52LXJlZ0xpbmUiKS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDAp
O1cuYXR0cigieDEiLGgucmFuZ2UoKVs9CjBdKS5hdHRyKCJ4MiIsaC5yYW5nZSgpWzFdKS5hdHRy
KCJ5MSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChoLmRvbWFpbigpWzBdKj0KZS5zbG9wZStlLmlu
dGVyY2VwdCl9KS5hdHRyKCJ5MiIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChoLmRvbWFpbigpWzFd
KmUuc2xvPQpwZStlLmludGVyY2VwdCl9KS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbihlLHQsbil7
cmV0dXJuIGMoZSxuKX0pLnN0eWxlKCJzdHI9Cm9rZS1vcGFjaXR5IixmdW5jdGlvbihlLHQpe3Jl
dHVybiBlLmRpc2FibGVkfHx0eXBlb2YgZS5zbG9wZT0zRD0zRCJ1bmRlZmluZT0KZCJ8fHR5cGVv
ZiBlLmludGVyY2VwdD0zRD0zRCJ1bmRlZmluZWQiPzA6MX0pLGcmJihuLnNjYWxlKGgpLnRpY2tz
KG4udGlja3MoPQopP24udGlja3MoKTpDLzEwMCkudGlja1NpemUoLU0sMCksVS5zZWxlY3QoIi5u
di14Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm09CiIsInRyYW5zbGF0ZSgwLCIrcC5yYW5nZSgp
WzBdKyIpIikuY2FsbChuKSkseSYmKHIuc2NhbGUocCkudGlja3Moci50aWNrcygpPz0Kci50aWNr
cygpOk0vMzYpLnRpY2tTaXplKC1DLDApLFUuc2VsZWN0KCIubnYteS5udi1heGlzIikuY2FsbChy
KSksZCYmKG8uZ2V0PQpEYXRhKHQueCgpKS5zY2FsZShoKS53aWR0aChDKS5jb2xvcihlLm1hcChm
dW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxjKGU9Cix0KX0pLmZpbHRlcihmdW5jdGlvbih0
LG4pe3JldHVybiFlW25dLmRpc2FibGVkfSkpLFIuc2VsZWN0KCIubnYtZGlzdFdyYXAiKT0KLmFw
cGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtZGlzdHJpYnV0aW9uWCIpLFUuc2VsZWN0KCIubnYt
ZGlzdHJpYnV0aW9uWCIpPQouYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitwLnJhbmdl
KClbMF0rIikiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbig9CmUpe3JldHVybiFlLmRpc2FibGVk
fSkpLmNhbGwobykpLHYmJih1LmdldERhdGEodC55KCkpLnNjYWxlKHApLndpZHRoKE0pLmNvbD0K
b3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8YyhlLHQpfSkuZmlsdGVyKGZ1
bmN0aW9uKHQsbil7cmV0dXJuPQohZVtuXS5kaXNhYmxlZH0pKSxSLnNlbGVjdCgiLm52LWRpc3RX
cmFwIikuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1kaXM9CnRyaWJ1dGlvblkiKSxVLnNl
bGVjdCgiLm52LWRpc3RyaWJ1dGlvblkiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIiso
Yj0KP0M6LXUuc2l6ZSgpKSsiLDApIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJu
IWUuZGlzYWJsZWR9KSkuY2FsbCh1PQopKSxkMy5maXNoZXllJiYoVS5zZWxlY3QoIi5udi1iYWNr
Z3JvdW5kIikuYXR0cigid2lkdGgiLEMpLmF0dHIoImhlaWdodCIsTSk9CixVLnNlbGVjdCgiLm52
LWJhY2tncm91bmQiKS5vbigibW91c2Vtb3ZlIixWKSxVLnNlbGVjdCgiLm52LWJhY2tncm91bmQi
KS5vbj0KKCJjbGljayIsZnVuY3Rpb24oKXtTPTNEIVN9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50
Q2xpY2suZnJlZXplRmlzaGV5ZSIsZnVuPQpjdGlvbigpe1M9M0QhU30pKSxzLmRpc3BhdGNoLm9u
KCJsZWdlbmRDbGljayIsZnVuY3Rpb24oZSxpKXtlLmRpc2FibGVkPTNEIWU9Ci5kaXNhYmxlZCxF
PTNEZS5kaXNhYmxlZD8wOjIuNSxVLnNlbGVjdCgiLm52LWJhY2tncm91bmQiKS5zdHlsZSgicG9p
bnRlci1ldj0KZW50cyIsZS5kaXNhYmxlZD8ibm9uZSI6ImFsbCIpLFUuc2VsZWN0KCIubnYtcG9p
bnQtcGF0aHMiKS5zdHlsZSgicG9pbnRlci1lPQp2ZW50cyIsZS5kaXNhYmxlZD8iYWxsIjoibm9u
ZSIpLGUuZGlzYWJsZWQ/KGguZGlzdG9ydGlvbihFKS5mb2N1cygwKSxwLmRpc3Q9Cm9ydGlvbihF
KS5mb2N1cygwKSxVLnNlbGVjdCgiLm52LXNjYXR0ZXJXcmFwIikuY2FsbCh0KSxVLnNlbGVjdCgi
Lm52LXgubnYtYT0KeGlzIikuY2FsbChuKSxVLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmNhbGwo
cikpOlM9M0QhMSxCLnVwZGF0ZSgpfSksaS5kaXNwPQphdGNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVu
Y3Rpb24oZSl7az0zRGUsQS5zdGF0ZUNoYW5nZShrKSxCLnVwZGF0ZSgpfSksdC5kaXM9CnBhdGNo
Lm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2QzLnNlbGVjdCgiLm52
LWNoYXJ0LSIrdC5pZD0KKCkrIiAubnYtc2VyaWVzLSIrZS5zZXJpZXNJbmRleCsiIC5udi1kaXN0
eC0iK2UucG9pbnRJbmRleCkuYXR0cigieTEiLGUucG9zPQpbMV0tTSksZDMuc2VsZWN0KCIubnYt
Y2hhcnQtIit0LmlkKCkrIiAubnYtc2VyaWVzLSIrZS5zZXJpZXNJbmRleCsiIC5udi1kaXM9CnR5
LSIrZS5wb2ludEluZGV4KS5hdHRyKCJ4MiIsZS5wb3NbMF0rby5zaXplKCkpLGUucG9zPTNEW2Uu
cG9zWzBdK2EubGVmdCxlLj0KcG9zWzFdK2EudG9wXSxBLnRvb2x0aXBTaG93KGUpfSksQS5vbigi
dG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe3gmJlAoZSxOLnBhPQpyZW50Tm9kZSl9KSxBLm9uKCJj
aGFuZ2VTdGF0ZSIsZnVuY3Rpb24odCl7dHlwZW9mIHQuZGlzYWJsZWQhPTNEInVuZGVmaW5lZCI9
CiYmKGUuZm9yRWFjaChmdW5jdGlvbihlLG4pe2UuZGlzYWJsZWQ9M0R0LmRpc2FibGVkW25dfSks
ay5kaXNhYmxlZD0zRHQuZGlzYT0KYmxlZCksQi51cGRhdGUoKX0pLF89M0RoLmNvcHkoKSxEPTNE
cC5jb3B5KCl9KSxCfXZhciB0PTNEZS5tb2RlbHMuc2NhdHRlcigpPQosbj0zRGUubW9kZWxzLmF4
aXMoKSxyPTNEZS5tb2RlbHMuYXhpcygpLGk9M0RlLm1vZGVscy5sZWdlbmQoKSxzPTNEZS5tb2Rl
bHM9Ci5sZWdlbmQoKSxvPTNEZS5tb2RlbHMuZGlzdHJpYnV0aW9uKCksdT0zRGUubW9kZWxzLmRp
c3RyaWJ1dGlvbigpLGE9M0R7dG9wOj0KMzAscmlnaHQ6MjAsYm90dG9tOjUwLGxlZnQ6NzV9LGY9
M0RudWxsLGw9M0RudWxsLGM9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpPQosaD0zRGQzLmZpc2hl
eWU/ZDMuZmlzaGV5ZS5zY2FsZShkMy5zY2FsZS5saW5lYXIpLmRpc3RvcnRpb24oMCk6dC54U2Nh
bGUoKSw9CnA9M0RkMy5maXNoZXllP2QzLmZpc2hleWUuc2NhbGUoZDMuc2NhbGUubGluZWFyKS5k
aXN0b3J0aW9uKDApOnQueVNjYWxlKCksZD0KPTNEITEsdj0zRCExLG09M0QhMCxnPTNEITAseT0z
RCEwLGI9M0QhMSx3PTNEISFkMy5maXNoZXllLEU9M0QwLFM9M0QhMSx4PTNEPQohMCxUPTNEZnVu
Y3Rpb24oZSx0LG4pe3JldHVybiI8c3Ryb25nPiIrdCsiPC9zdHJvbmc+In0sTj0zRGZ1bmN0aW9u
KGUsdCxuKXs9CnJldHVybiI8c3Ryb25nPiIrbisiPC9zdHJvbmc+In0sQz0zRGZ1bmN0aW9uKGUs
dCxuLHIpe3JldHVybiI8aDM+IitlKyI8L2gzPj0KIisiPHA+IityKyI8L3A+In0saz0zRHt9LEw9
M0RudWxsLEE9M0RkMy5kaXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlkPQplIiwic3Rh
dGVDaGFuZ2UiLCJjaGFuZ2VTdGF0ZSIpLE89M0QiTm8gRGF0YSBBdmFpbGFibGUuIixNPTNEMDt0
LnhTY2FsZShoKS49CnlTY2FsZShwKSxuLm9yaWVudCgiYm90dG9tIikudGlja1BhZGRpbmcoMTAp
LHIub3JpZW50KGI/InJpZ2h0IjoibGVmdCIpLnRpYz0Ka1BhZGRpbmcoMTApLG8uYXhpcygieCIp
LHUuYXhpcygieSIpLHMudXBkYXRlU3RhdGUoITEpO3ZhciBfLEQsUD0zRGZ1bmN0aW9uPQooaSxz
KXt2YXIgbz0zRGkucG9zWzBdKyhzLm9mZnNldExlZnR8fDApLHU9M0RpLnBvc1sxXSsocy5vZmZz
ZXRUb3B8fDApLGY9M0Q9CmkucG9zWzBdKyhzLm9mZnNldExlZnR8fDApLGw9M0RwLnJhbmdlKClb
MF0rYS50b3ArKHMub2Zmc2V0VG9wfHwwKSxjPTNEaC5yYT0KbmdlKClbMF0rYS5sZWZ0KyhzLm9m
ZnNldExlZnR8fDApLGQ9M0RpLnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLHY9M0RuLnRpY2tGPQpv
cm1hdCgpKHQueCgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksbT0zRHIudGlja0Zvcm1hdCgpKHQu
eSgpKGkucG9pbnQsaS5wb2k9Cm50SW5kZXgpKTtUIT0zRG51bGwmJmUudG9vbHRpcC5zaG93KFtm
LGxdLFQoaS5zZXJpZXMua2V5LHYsbSxpLEIpLCJuIiwxLHMsIj0KeC1udnRvb2x0aXAiKSxOIT0z
RG51bGwmJmUudG9vbHRpcC5zaG93KFtjLGRdLE4oaS5zZXJpZXMua2V5LHYsbSxpLEIpLCJlIiwx
PQoscywieS1udnRvb2x0aXAiKSxDIT0zRG51bGwmJmUudG9vbHRpcC5zaG93KFtvLHVdLEMoaS5z
ZXJpZXMua2V5LHYsbSxpLnBvaW49CnQudG9vbHRpcCxpLEIpLGkudmFsdWU8MD8ibiI6InMiLG51
bGwscyl9LEg9M0Rbe2tleToiTWFnbmlmeSIsZGlzYWJsZWQ6ITB9XT0KO3JldHVybiB0LmRpc3Bh
dGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7QS50b29sdGlwSGlk
ZShlPQopLGQzLnNlbGVjdCgiLm52LWNoYXJ0LSIrdC5pZCgpKyIgLm52LXNlcmllcy0iK2Uuc2Vy
aWVzSW5kZXgrIiAubnYtZGlzdHgtIis9CmUucG9pbnRJbmRleCkuYXR0cigieTEiLDApLGQzLnNl
bGVjdCgiLm52LWNoYXJ0LSIrdC5pZCgpKyIgLm52LXNlcmllcy0iK2Uucz0KZXJpZXNJbmRleCsi
IC5udi1kaXN0eS0iK2UucG9pbnRJbmRleCkuYXR0cigieDIiLHUuc2l6ZSgpKX0pLEEub24oInRv
b2x0aXBIPQppZGUiLGZ1bmN0aW9uKCl7eCYmZS50b29sdGlwLmNsZWFudXAoKX0pLEIuZGlzcGF0
Y2g9M0RBLEIuc2NhdHRlcj0zRHQsQi5sZWc9CmVuZD0zRGksQi5jb250cm9scz0zRHMsQi54QXhp
cz0zRG4sQi55QXhpcz0zRHIsQi5kaXN0WD0zRG8sQi5kaXN0WT0zRHUsZDMucj0KZWJpbmQoQix0
LCJpZCIsImludGVyYWN0aXZlIiwicG9pbnRBY3RpdmUiLCJ4IiwieSIsInNoYXBlIiwic2l6ZSIs
InhTY2FsZSIsPQoieVNjYWxlIiwielNjYWxlIiwieERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2Ui
LCJ5UmFuZ2UiLCJzaXplRG9tYWluIiwic2l6ZVI9CmFuZ2UiLCJmb3JjZVgiLCJmb3JjZVkiLCJm
b3JjZVNpemUiLCJjbGlwVm9yb25vaSIsImNsaXBSYWRpdXMiLCJ1c2VWb3Jvbm9pIj0KKSxCLm9w
dGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoQiksQi5tYXJnaW49M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJnPQp1bWVudHMubGVuZ3RoPyhhLnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5k
ZWZpbmVkIj9lLnRvcDphLnRvcCxhLnJpZ2h0PTNEdHk9CnBlb2YgZS5yaWdodCE9M0QidW5kZWZp
bmVkIj9lLnJpZ2h0OmEucmlnaHQsYS5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEIj0KdW5k
ZWZpbmVkIj9lLmJvdHRvbTphLmJvdHRvbSxhLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRl
ZmluZWQiP2UubGVmdDphPQoubGVmdCxCKTphfSxCLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLEIpOmZ9LEIuaGU9CmlnaHQ9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGUsQik6bH0sQi5jb2xvcj0zRGZ1bmN0aW9uKD0K
dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLnV0aWxzLmdldENvbG9yKHQpLGkuY29s
b3IoYyksby5jb2xvcihjKSx1PQouY29sb3IoYyksQik6Y30sQi5zaG93RGlzdFg9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGUsQik9CjpkfSxCLnNob3dEaXN0WT0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PTNEZSxCKTp2fSxCLnNob3dD
bz0KbnRyb2xzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9M0RlLEIp
Ond9LEIuc2hvd0xlZ2VuZD0zRGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KG09M0RlLEIpOm19LEIuc2hvd1hBeGlzPTNEZnVuY3Rpb24oZSl7cmU9CnR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oZz0zRGUsQik6Z30sQi5zaG93WUF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbj0KdHMubGVuZ3RoPyh5PTNEZSxCKTp5fSxCLnJpZ2h0QWxpZ25ZQXhpcz0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuPQpndGg/KGI9M0RlLHIub3JpZW50KGU/InJpZ2h0Ijoi
bGVmdCIpLEIpOmJ9LEIuZmlzaGV5ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiA9CmFyZ3VtZW50cy5s
ZW5ndGg/KEU9M0RlLEIpOkV9LEIudG9vbHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbj0KZ3RoPyh4PTNEZSxCKTp4fSxCLnRvb2x0aXBDb250ZW50PTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEM9Cj0zRGUsQik6Q30sQi50b29sdGlwWENvbnRlbnQ9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oVD0zRGUsQj0KKTpUfSxCLnRv
b2x0aXBZQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhOPTNE
ZSxCKTpOfSxCPQouc3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
az0zRGUsQik6a30sQi5kZWZhdWx0U3RhdGU9M0Q9CmZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhMPTNEZSxCKTpMfSxCLm5vRGF0YT0zRGZ1bmN0aW9uKGUpe3JldD0KdXJuIGFy
Z3VtZW50cy5sZW5ndGg/KE89M0RlLEIpOk99LEIudHJhbnNpdGlvbkR1cmF0aW9uPTNEZnVuY3Rp
b24oZSl7cmV0dXJuPQogYXJndW1lbnRzLmxlbmd0aD8oTT0zRGUsQik6TX0sQn0sZS5tb2RlbHMu
c3BhcmtsaW5lPTNEZnVuY3Rpb24oKXtmdW5jdGlvbiA9CmQoZSl7cmV0dXJuIGUuZWFjaChmdW5j
dGlvbihlKXt2YXIgaT0zRG4tdC5sZWZ0LXQucmlnaHQsZD0zRHItdC50b3AtdC5ib3R0bz0KbSx2
PTNEZDMuc2VsZWN0KHRoaXMpO3MuZG9tYWluKGx8fGQzLmV4dGVudChlLHUpKS5yYW5nZShofHxb
MCxpXSksby5kb21haW4oPQpjfHxkMy5leHRlbnQoZSxhKSkucmFuZ2UocHx8W2QsMF0pO3ZhciBt
PTNEdi5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1zcGFya2w9CmluZSIpLmRhdGEoW2VdKSxnPTNE
bS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LXNwYT0K
cmtsaW5lIiksYj0zRGcuYXBwZW5kKCJnIiksdz0zRG0uc2VsZWN0KCJnIik7bS5hdHRyKCJ0cmFu
c2Zvcm0iLCJ0cmFuc2xhdGUoPQoiK3QubGVmdCsiLCIrdC50b3ArIikiKTt2YXIgRT0zRG0uc2Vs
ZWN0QWxsKCJwYXRoIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm49CltlXX0pO0UuZW50ZXIoKS5h
cHBlbmQoInBhdGgiKSxFLmV4aXQoKS5yZW1vdmUoKSxFLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9u
KD0KZSx0KXtyZXR1cm4gZS5jb2xvcnx8ZihlLHQpfSkuYXR0cigiZCIsZDMuc3ZnLmxpbmUoKS54
KGZ1bmN0aW9uKGUsdCl7cmV0dXJuPQogcyh1KGUsdCkpfSkueShmdW5jdGlvbihlLHQpe3JldHVy
biBvKGEoZSx0KSl9KSk7dmFyIFM9M0RtLnNlbGVjdEFsbCgiY2lyY2w9CmUubnYtcG9pbnQiKS5k
YXRhKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCl7aWYodCE9M0QtMSl7dmFyIG49M0RlW3RdO3Jl
dHVybj0KIG4ucG9pbnRJbmRleD0zRHQsbn1yZXR1cm4gbnVsbH12YXIgdD0zRGUubWFwKGZ1bmN0
aW9uKGUsdCl7cmV0dXJuIGEoZSx0KX0pPQoscj0zRG4odC5sYXN0SW5kZXhPZihvLmRvbWFpbigp
WzFdKSksaT0zRG4odC5pbmRleE9mKG8uZG9tYWluKClbMF0pKSxzPTNEbig9CnQubGVuZ3RoLTEp
O3JldHVybltpLHIsc10uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlIT0zRG51bGx9KX0pO1Mu
ZW50ZXIoKT0KLmFwcGVuZCgiY2lyY2xlIiksUy5leGl0KCkucmVtb3ZlKCksUy5hdHRyKCJjeCIs
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcyh1KGUsPQplLnBvaW50SW5kZXgpKX0pLmF0dHIoImN5Iixm
dW5jdGlvbihlLHQpe3JldHVybiBvKGEoZSxlLnBvaW50SW5kZXgpKX0pLmF0dHI9CigiciIsMiku
YXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHUoZSxlLnBvaW50SW5kZXgpPTNEPTNE
cy5kb21haW4oKT0KWzFdPyJudi1wb2ludCBudi1jdXJyZW50VmFsdWUiOmEoZSxlLnBvaW50SW5k
ZXgpPTNEPTNEby5kb21haW4oKVswXT8ibnYtcG9pPQpudCBudi1taW5WYWx1ZSI6Im52LXBvaW50
IG52LW1heFZhbHVlIn0pfSksZH12YXIgdD0zRHt0b3A6MixyaWdodDowLGJvdHRvbTo9CjIsbGVm
dDowfSxuPTNENDAwLHI9M0QzMixpPTNEITAscz0zRGQzLnNjYWxlLmxpbmVhcigpLG89M0RkMy5z
Y2FsZS5saW5lYXIoKT0KLHU9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS54fSxhPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGUueX0sZj0zRGUudXRpbHMuZ2V0Q29sPQpvcihbIiMwMDAiXSksbCxjLGgscDty
ZXR1cm4gZC5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKGQpLGQubWFyZ2k9Cm49
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC50b3A9M0R0eXBlb2YgZS50
b3AhPTNEInVuZGVmaW5lZD0KIj9lLnRvcDp0LnRvcCx0LnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQh
PTNEInVuZGVmaW5lZCI/ZS5yaWdodDp0LnJpZ2h0LHQuYm90PQp0b209M0R0eXBlb2YgZS5ib3R0
b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dC5ib3R0b20sdC5sZWZ0PTNEdHlwZW9mIGUubGU9
CmZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDp0LmxlZnQsZCk6dH0sZC53aWR0aD0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudD0Kcy5sZW5ndGg/KG49M0RlLGQpOm59LGQuaGVpZ2h0PTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlPQosZCk6cn0sZC54PTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RkMy5mdW5jdG9yKGUpLGQpOnV9
LGQ9Ci55PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RkMy5mdW5j
dG9yKGUpLGQpOmF9LGQueFNjYWxlPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8ocz0zRGUsZCk6c30sZC55U2NhbGU9M0RmdW5jdGlvbihlKXs9CnJldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhvPTNEZSxkKTpvfSxkLnhEb21haW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbj0KdHMubGVuZ3RoPyhsPTNEZSxkKTpsfSxkLnlEb21haW49M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0KPTNEZSxkKTpjfSxkLnhSYW5nZT0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxkKTpofSxkLnlSPQphbmdlPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLGQpOnB9LGQuYW5pbWF0ZT0zRGZ1
bmN0aW89Cm4oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9M0RlLGQpOml9LGQuY29sb3I9
M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndT0KbWVudHMubGVuZ3RoPyhmPTNEZS51dGlscy5nZXRD
b2xvcih0KSxkKTpmfSxkfSxlLm1vZGVscy5zcGFya2xpbmVQbHVzPTNEZnVuPQpjdGlvbigpe2Z1
bmN0aW9uIHYoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihjKXtmdW5jdGlvbiBPKCl7aWYoYSly
ZXR1cm47dmE9CnIgZT0zREMuc2VsZWN0QWxsKCIubnYtaG92ZXJWYWx1ZSIpLmRhdGEodSkscj0z
RGUuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKD0KImNsYXNzIiwibnYtaG92ZXJWYWx1ZSIpLnN0
eWxlKCJzdHJva2Utb3BhY2l0eSIsMCkuc3R5bGUoImZpbGwtb3BhY2l0eSIsMCk7PQplLmV4aXQo
KS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDApLnN0eWxlKCJmaWxsLW9wYWNpdHkiLDApLnJlbW92
ZSgpLGUuYXR0cig9CiJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUpe3JldHVybiJ0cmFuc2xhdGUoIitz
KHQueCgpKGNbZV0sZSkpKyIsMCkifSkuc3R5bGUoIj0Kc3Ryb2tlLW9wYWNpdHkiLDEpLnN0eWxl
KCJmaWxsLW9wYWNpdHkiLDEpO2lmKCF1Lmxlbmd0aClyZXR1cm47ci5hcHBlbmQoImxpPQpuZSIp
LmF0dHIoIngxIiwwKS5hdHRyKCJ5MSIsLW4udG9wKS5hdHRyKCJ4MiIsMCkuYXR0cigieTIiLGIp
LHIuYXBwZW5kKCJ0ZXg9CnQiKS5hdHRyKCJjbGFzcyIsIm52LXhWYWx1ZSIpLmF0dHIoIngiLC02
KS5hdHRyKCJ5Iiwtbi50b3ApLmF0dHIoInRleHQtYW5jaD0Kb3IiLCJlbmQiKS5hdHRyKCJkeSIs
Ii45ZW0iKSxDLnNlbGVjdCgiLm52LWhvdmVyVmFsdWUgLm52LXhWYWx1ZSIpLnRleHQoZih0PQou
eCgpKGNbdVswXV0sdVswXSkpKSxyLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnYteVZh
bHVlIikuYXR0cigieCIsNik9Ci5hdHRyKCJ5Iiwtbi50b3ApLmF0dHIoInRleHQtYW5jaG9yIiwi
c3RhcnQiKS5hdHRyKCJkeSIsIi45ZW0iKSxDLnNlbGVjdCgiLj0KbnYtaG92ZXJWYWx1ZSAubnYt
eVZhbHVlIikudGV4dChsKHQueSgpKGNbdVswXV0sdVswXSkpKX1mdW5jdGlvbiBNKCl7ZnVuY3Rp
PQpvbiByKGUsbil7dmFyIHI9M0RNYXRoLmFicyh0LngoKShlWzBdLDApLW4pLGk9M0QwO2Zvcih2
YXIgcz0zRDA7czxlLmxlbmd0aDs9CnMrKylNYXRoLmFicyh0LngoKShlW3NdLHMpLW4pPHImJihy
PTNETWF0aC5hYnModC54KCkoZVtzXSxzKS1uKSxpPTNEcyk7cmV0dT0Kcm4gaX1pZihhKXJldHVy
bjt2YXIgZT0zRGQzLm1vdXNlKHRoaXMpWzBdLW4ubGVmdDt1PTNEW3IoYyxNYXRoLnJvdW5kKHMu
aW52PQplcnQoZSkpKV0sTygpfXZhciBtPTNEZDMuc2VsZWN0KHRoaXMpLGc9M0Qocnx8cGFyc2VJ
bnQobS5zdHlsZSgid2lkdGgiKSl8fDk9CjYwKS1uLmxlZnQtbi5yaWdodCxiPTNEKGl8fHBhcnNl
SW50KG0uc3R5bGUoImhlaWdodCIpKXx8NDAwKS1uLnRvcC1uLmJvdHRvbT0KO3YudXBkYXRlPTNE
ZnVuY3Rpb24oKXt2KGUpfSx2LmNvbnRhaW5lcj0zRHRoaXM7aWYoIWN8fCFjLmxlbmd0aCl7dmFy
IHc9M0RtPQouc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShbZF0pO3JldHVybiB3LmVudGVy
KCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2w9CmFzcyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cigi
ZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLHcuYT0KdHRyKCJ4Iixu
LmxlZnQrZy8yKS5hdHRyKCJ5IixuLnRvcCtiLzIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9
KSx2fW0uc2VsPQplY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKTt2YXIgRT0zRHQueSgpKGNb
Yy5sZW5ndGgtMV0sYy5sZW5ndGgtMSk7cz0zRHQ9Ci54U2NhbGUoKSxvPTNEdC55U2NhbGUoKTt2
YXIgUz0zRG0uc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtc3BhcmtsaW5lcGx1cyIpLj0KZGF0YShb
Y10pLFQ9M0RTLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAg
bnYtc3BhcmtsaW5lPQpwbHVzIiksTj0zRFQuYXBwZW5kKCJnIiksQz0zRFMuc2VsZWN0KCJnIik7
Ti5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXM9CnBhcmtsaW5lV3JhcCIpLE4uYXBwZW5k
KCJnIikuYXR0cigiY2xhc3MiLCJudi12YWx1ZVdyYXAiKSxOLmFwcGVuZCgiZyIpLmF0dD0Kcigi
Y2xhc3MiLCJudi1ob3ZlckFyZWEiKSxTLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK24u
bGVmdCsiLCIrbi50b3ArPQoiKSIpO3ZhciBrPTNEQy5zZWxlY3QoIi5udi1zcGFya2xpbmVXcmFw
Iik7dC53aWR0aChnKS5oZWlnaHQoYiksay5jYWxsKHQpO3Y9CmFyIEw9M0RDLnNlbGVjdCgiLm52
LXZhbHVlV3JhcCIpLEE9M0RMLnNlbGVjdEFsbCgiLm52LWN1cnJlbnRWYWx1ZSIpLmRhdGEoWz0K
RV0pO0EuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52LWN1cnJlbnRWYWx1
ZSIpLmF0dHIoImR4IixwPy04PQo6OCkuYXR0cigiZHkiLCIuOWVtIikuc3R5bGUoInRleHQtYW5j
aG9yIixwPyJlbmQiOiJzdGFydCIpLEEuYXR0cigieCIsZysocD89Cm4ucmlnaHQ6MCkpLmF0dHIo
InkiLGg/ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSl9OjApLnN0eWxlKCJmaWxsIix0LmNvbG9yKCko
Yz0KW2MubGVuZ3RoLTFdLGMubGVuZ3RoLTEpKS50ZXh0KGwoRSkpLE4uc2VsZWN0KCIubnYtaG92
ZXJBcmVhIikuYXBwZW5kKCJyZWN0PQoiKS5vbigibW91c2Vtb3ZlIixNKS5vbigiY2xpY2siLGZ1
bmN0aW9uKCl7YT0zRCFhfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbig9Cil7dT0zRFtdLE8oKX0p
LEMuc2VsZWN0KCIubnYtaG92ZXJBcmVhIHJlY3QiKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9u
KGUpez0KcmV0dXJuInRyYW5zbGF0ZSgiKyAtbi5sZWZ0KyIsIisgLW4udG9wKyIpIn0pLmF0dHIo
IndpZHRoIixnK24ubGVmdCtuLnJpZ2h0PQopLmF0dHIoImhlaWdodCIsYituLnRvcCl9KSx2fXZh
ciB0PTNEZS5tb2RlbHMuc3BhcmtsaW5lKCksbj0zRHt0b3A6MTUscmlnaHQ9CjoxMDAsYm90dG9t
OjEwLGxlZnQ6NTB9LHI9M0RudWxsLGk9M0RudWxsLHMsbyx1PTNEW10sYT0zRCExLGY9M0RkMy5m
b3JtYXQoIj0KLHIiKSxsPTNEZDMuZm9ybWF0KCIsLjJmIiksYz0zRCEwLGg9M0QhMCxwPTNEITEs
ZD0zRCJObyBEYXRhIEF2YWlsYWJsZS4iO3JlPQp0dXJuIHYuc3BhcmtsaW5lPTNEdCxkMy5yZWJp
bmQodix0LCJ4IiwieSIsInhTY2FsZSIsInlTY2FsZSIsImNvbG9yIiksdi5vcHQ9CmlvbnM9M0Rl
LnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQodiksdi5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLj0KbGVuZ3RoPyhuLnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9l
LnRvcDpuLnRvcCxuLnJpZ2h0PTNEdHlwZW9mIGUuPQpyaWdodCE9M0QidW5kZWZpbmVkIj9lLnJp
Z2h0Om4ucmlnaHQsbi5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW49CmVkIj9l
LmJvdHRvbTpuLmJvdHRvbSxuLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2Uu
bGVmdDpuLmxlZnQsdj0KKTpufSx2LndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KHI9M0RlLHYpOnJ9LHYuaGVpZ2h0PTNEPQpmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oaT0zRGUsdik6aX0sdi54VGlja0Zvcm1hdD0zRGZ1bmN0aW9uKGU9Cil7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLHYpOmZ9LHYueVRpY2tGb3JtYXQ9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYT0Kcmd1bWVudHMubGVuZ3RoPyhsPTNEZSx2KTpsfSx2LnNob3dWYWx1
ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuPQpndGg/KGM9M0RlLHYpOmN9LHYu
YWxpZ25WYWx1ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSw9
CnYpOmh9LHYucmlnaHRBbGlnblZhbHVlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHA9M0RlLHYpOnB9LD0Kdi5ub0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oZD0zRGUsdik6ZH0sdn0sZS5tb2RlbHMuc3RhPQpja2VkQXJlYT0zRGZ1bmN0
aW9uKCl7ZnVuY3Rpb24gZyhlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBhPTNEbi10
Lmw9CmVmdC10LnJpZ2h0LGI9M0RyLXQudG9wLXQuYm90dG9tLHc9M0RkMy5zZWxlY3QodGhpcyk7
cD0zRHYueFNjYWxlKCksZD0zRHYueT0KU2NhbGUoKTt2YXIgRT0zRGU7ZS5mb3JFYWNoKGZ1bmN0
aW9uKGUsdCl7ZS5zZXJpZXNJbmRleD0zRHQsZS52YWx1ZXM9M0RlLnZhPQpsdWVzLm1hcChmdW5j
dGlvbihlLG4pe3JldHVybiBlLmluZGV4PTNEbixlLnNlcmllc0luZGV4PTNEdCxlfSl9KTt2YXIg
Uz0zRGU9Ci5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KTtlPTNEZDMubGF5
b3V0LnN0YWNrKCkub3JkZXIobCkub2Zmcz0KZXQoZikudmFsdWVzKGZ1bmN0aW9uKGUpe3JldHVy
biBlLnZhbHVlc30pLngobykueSh1KS5vdXQoZnVuY3Rpb24oZSx0LG4pe3ZhPQpyIHI9M0R1KGUp
PTNEPTNEPTNEMD8wOm47ZS5kaXNwbGF5PTNEe3k6cix5MDp0fX0pKFMpO3ZhciBUPTNEdy5zZWxl
Y3RBbGwoImc9Ci5udi13cmFwLm52LXN0YWNrZWRhcmVhIikuZGF0YShbZV0pLE49M0RULmVudGVy
KCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLD0KIm52ZDMgbnYtd3JhcCBudi1zdGFja2VkYXJl
YSIpLEM9M0ROLmFwcGVuZCgiZGVmcyIpLGs9M0ROLmFwcGVuZCgiZyIpLEw9M0RUPQouc2VsZWN0
KCJnIik7ay5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWFyZWFXcmFwIiksay5hcHBlbmQo
ImciKS5hdHRyKCI9CmNsYXNzIiwibnYtc2NhdHRlcldyYXAiKSxULmF0dHIoInRyYW5zZm9ybSIs
InRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50b3ArIj0KKSIpLHYud2lkdGgoYSkuaGVpZ2h0KGIp
LngobykueShmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNwbGF5LnkrZS5kaXNwbGF5LnkwPQp9KS5m
b3JjZVkoWzBdKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxpKGUs
ZS5zZXJpZXNJbmRleCk9Cn0pKTt2YXIgQT0zREwuc2VsZWN0KCIubnYtc2NhdHRlcldyYXAiKS5k
YXR1bShlKTtBLmNhbGwodiksQy5hcHBlbmQoImNsaXBQYT0KdGgiKS5hdHRyKCJpZCIsIm52LWVk
Z2UtY2xpcC0iK3MpLmFwcGVuZCgicmVjdCIpLFQuc2VsZWN0KCIjbnYtZWRnZS1jbGlwLSIrPQpz
KyIgcmVjdCIpLmF0dHIoIndpZHRoIixhKS5hdHRyKCJoZWlnaHQiLGIpLEwuYXR0cigiY2xpcC1w
YXRoIixoPyJ1cmwoI252LWU9CmRnZS1jbGlwLSIrcysiKSI6IiIpO3ZhciBPPTNEZDMuc3ZnLmFy
ZWEoKS54KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAobyhlLHQpKT0KfSkueTAoZnVuY3Rpb24oZSl7
cmV0dXJuIGQoZS5kaXNwbGF5LnkwKX0pLnkxKGZ1bmN0aW9uKGUpe3JldHVybiBkKGUuZGlzcGxh
PQp5LnkrZS5kaXNwbGF5LnkwKX0pLmludGVycG9sYXRlKGMpLE09M0RkMy5zdmcuYXJlYSgpLngo
ZnVuY3Rpb24oZSx0KXtyZXR1cm49CiBwKG8oZSx0KSl9KS55MChmdW5jdGlvbihlKXtyZXR1cm4g
ZChlLmRpc3BsYXkueTApfSkueTEoZnVuY3Rpb24oZSl7cmV0dXJuID0KZChlLmRpc3BsYXkueTAp
fSksXz0zREwuc2VsZWN0KCIubnYtYXJlYVdyYXAiKS5zZWxlY3RBbGwoInBhdGgubnYtYXJlYSIp
LmRhPQp0YShmdW5jdGlvbihlKXtyZXR1cm4gZX0pO18uZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5h
dHRyKCJjbGFzcyIsZnVuY3Rpb24oZSw9CnQpe3JldHVybiJudi1hcmVhIG52LWFyZWEtIit0fSku
YXR0cigiZCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTShlLnZhbHVlcyxlLj0Kc2VyaWVzSW5kZXgp
fSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oZSx0KXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgi
aG92ZXIiPQosITApLG0uYXJlYU1vdXNlb3Zlcih7cG9pbnQ6ZSxzZXJpZXM6ZS5rZXkscG9zOltk
My5ldmVudC5wYWdlWCxkMy5ldmVudC5wYWc9CmVZXSxzZXJpZXNJbmRleDplLnNlcmllc0luZGV4
fSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKGUsdCl7ZDMuc2VsZWN0KHRoaT0KcykuY2xhc3Nl
ZCgiaG92ZXIiLCExKSxtLmFyZWFNb3VzZW91dCh7cG9pbnQ6ZSxzZXJpZXM6ZS5rZXkscG9zOltk
My5ldmVudC5wPQphZ2VYLGQzLmV2ZW50LnBhZ2VZXSxzZXJpZXNJbmRleDplLnNlcmllc0luZGV4
fSl9KS5vbigiY2xpY2siLGZ1bmN0aW9uKGUsdCk9CntkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgi
aG92ZXIiLCExKSxtLmFyZWFDbGljayh7cG9pbnQ6ZSxzZXJpZXM6ZS5rZXkscG9zOj0KW2QzLmV2
ZW50LnBhZ2VYLGQzLmV2ZW50LnBhZ2VZXSxzZXJpZXNJbmRleDplLnNlcmllc0luZGV4fSl9KSxf
LmV4aXQoKS5yZW1vPQp2ZSgpLF8uc3R5bGUoImZpbGwiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUu
Y29sb3J8fGkoZSxlLnNlcmllc0luZGV4KX0pLnN0eWw9CmUoInN0cm9rZSIsZnVuY3Rpb24oZSx0
KXtyZXR1cm4gZS5jb2xvcnx8aShlLGUuc2VyaWVzSW5kZXgpfSksXy5hdHRyKCJkIixmdT0KbmN0
aW9uKGUsdCl7cmV0dXJuIE8oZS52YWx1ZXMsdCl9KSx2LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91
c2VvdmVyLmFyZWEiLGZ1PQpuY3Rpb24oZSl7TC5zZWxlY3QoIi5udi1jaGFydC0iK3MrIiAubnYt
YXJlYS0iK2Uuc2VyaWVzSW5kZXgpLmNsYXNzZWQoImhvdmU9CnIiLCEwKX0pLHYuZGlzcGF0Y2gu
b24oImVsZW1lbnRNb3VzZW91dC5hcmVhIixmdW5jdGlvbihlKXtMLnNlbGVjdCgiLm52LWNoYT0K
cnQtIitzKyIgLm52LWFyZWEtIitlLnNlcmllc0luZGV4KS5jbGFzc2VkKCJob3ZlciIsITEpfSks
Zy5kM19zdGFja2VkT2Zmc2V0PQpfc3RhY2tQZXJjZW50PTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0Rl
Lmxlbmd0aCxuPTNEZVswXS5sZW5ndGgscj0zRDEvdCxpLHMsbyw9CmE9M0RbXTtmb3Iocz0zRDA7
czxuOysrcyl7Zm9yKGk9M0QwLG89M0QwO2k8RS5sZW5ndGg7aSsrKW8rPTNEdShFW2ldLnZhbHVl
cz0KW3NdKTtpZihvKWZvcihpPTNEMDtpPHQ7aSsrKWVbaV1bc11bMV0vPTNEbztlbHNlIGZvcihp
PTNEMDtpPHQ7aSsrKWVbaV1bc11bPQoxXT0zRHJ9Zm9yKHM9M0QwO3M8bjsrK3MpYVtzXT0zRDA7
cmV0dXJuIGF9fSksZ312YXIgdD0zRHt0b3A6MCxyaWdodDowLGJvdHQ9Cm9tOjAsbGVmdDowfSxu
PTNEOTYwLHI9M0Q1MDAsaT0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCkscz0zRE1hdGguZmxvb3Io
TWF0aD0KLnJhbmRvbSgpKjFlNSksbz0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9LHU9M0RmdW5j
dGlvbihlKXtyZXR1cm4gZS55fSxhPTNEPQoic3RhY2siLGY9M0QiemVybyIsbD0zRCJkZWZhdWx0
IixjPTNEImxpbmVhciIsaD0zRCExLHAsZCx2PTNEZS5tb2RlbHMuc2NhdHQ9CmVyKCksbT0zRGQz
LmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwiYXJlYUNsaWNrIiwiYXJlYU1v
dXNlb3Zlcj0KIiwiYXJlYU1vdXNlb3V0Iik7cmV0dXJuIHYuc2l6ZSgyLjIpLnNpemVEb21haW4o
WzIuMiwyLjJdKSx2LmRpc3BhdGNoLm9uKCJlPQpsZW1lbnRDbGljay5hcmVhIixmdW5jdGlvbihl
KXttLmFyZWFDbGljayhlKX0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW89CnZlci50b29s
dGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXSt0LmxlZnQsZS5wb3NbMV0rdC50b3Bd
LG0udG9vbHRpcD0KU2hvdyhlKX0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29s
dGlwIixmdW5jdGlvbihlKXttLnRvb2x0aXBIaWRlPQooZSl9KSxnLmRpc3BhdGNoPTNEbSxnLnNj
YXR0ZXI9M0R2LGQzLnJlYmluZChnLHYsImludGVyYWN0aXZlIiwic2l6ZSIsInhTY2E9CmxlIiwi
eVNjYWxlIiwielNjYWxlIiwieERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJz
aXplRG9tYWluIiwiZj0Kb3JjZVgiLCJmb3JjZVkiLCJmb3JjZVNpemUiLCJjbGlwVm9yb25vaSIs
InVzZVZvcm9ub2kiLCJjbGlwUmFkaXVzIiwiaGlnaGxpPQpnaHRQb2ludCIsImNsZWFySGlnaGxp
Z2h0cyIpLGcub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChnKSxnLng9M0Q9CmZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZDMuZnVuY3RvcihlKSxnKTpv
fSxnLnk9M0RmdW5jdGlvbj0KKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZDMuZnVu
Y3RvcihlKSxnKTp1fSxnLm1hcmdpbj0zRGZ1bmN0aW9uKGUpPQp7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHQudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQ9
Ci5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0
LmJvdHRvbT0zRHR5cGVvZiBlLj0KYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYm90
dG9tLHQubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lPQpkIj9lLmxlZnQ6dC5sZWZ0
LGcpOnR9LGcud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0z
RGU9CixnKTpufSxnLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhyPTNEZSxnKTpyfSxnLmNsaXBFZD0KZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oaD0zRGUsZyk6aH0sZy5jb2xvcj0zRGZ1bmN0aW9uKHQpPQp7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGk9M0RlLnV0aWxzLmdldENvbG9yKHQpLGcpOml9LGcub2Zmc2V0PTNEZnVu
Y3Rpb249CihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUsZyk6Zn0sZy5vcmRlcj0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bT0KZW50cy5sZW5ndGg/KGw9M0RlLGcpOmx9LGcuc3R5
bGU9M0RmdW5jdGlvbihlKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gPQphO2E9M0RlO3N3
aXRjaChhKXtjYXNlInN0YWNrIjpnLm9mZnNldCgiemVybyIpLGcub3JkZXIoImRlZmF1bHQiKTti
cmVhaztjYXM9CmUic3RyZWFtIjpnLm9mZnNldCgid2lnZ2xlIiksZy5vcmRlcigiaW5zaWRlLW91
dCIpO2JyZWFrO2Nhc2Uic3RyZWFtLWNlbnRlcj0KIjpnLm9mZnNldCgic2lsaG91ZXR0ZSIpLGcu
b3JkZXIoImluc2lkZS1vdXQiKTticmVhaztjYXNlImV4cGFuZCI6Zy5vZmZzZXQoPQoiZXhwYW5k
IiksZy5vcmRlcigiZGVmYXVsdCIpO2JyZWFrO2Nhc2Uic3RhY2tfcGVyY2VudCI6Zy5vZmZzZXQo
Zy5kM19zdGFja2U9CmRPZmZzZXRfc3RhY2tQZXJjZW50KSxnLm9yZGVyKCJkZWZhdWx0Iil9cmV0
dXJuIGd9LGcuaW50ZXJwb2xhdGU9M0RmdW5jdGlvbj0KKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhjPTNEZSxnKTpjfSxnfSxlLm1vZGVscy5zdGFja2VkQXJlYUNoYXJ0PTNEZnVuPQpjdGlv
bigpe2Z1bmN0aW9uIE0oeSl7cmV0dXJuIHkuZWFjaChmdW5jdGlvbih5KXt2YXIgQT0zRGQzLnNl
bGVjdCh0aGlzKSxfPQo9M0R0aGlzLEQ9M0QoYXx8cGFyc2VJbnQoQS5zdHlsZSgid2lkdGgiKSl8
fDk2MCktdS5sZWZ0LXUucmlnaHQsUD0zRChmfHxwYXI9CnNlSW50KEEuc3R5bGUoImhlaWdodCIp
KXx8NDAwKS11LnRvcC11LmJvdHRvbTtNLnVwZGF0ZT0zRGZ1bmN0aW9uKCl7QS5jYWxsKD0KTSl9
LE0uY29udGFpbmVyPTNEdGhpcyxTLmRpc2FibGVkPTNEeS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJu
ISFlLmRpc2FibGVkfSk7PQppZigheCl7dmFyIEg7eD0zRHt9O2ZvcihIIGluIFMpU1tIXWluc3Rh
bmNlb2YgQXJyYXk/eFtIXT0zRFNbSF0uc2xpY2UoMCk6eFs9CkhdPTNEU1tIXX1pZigheXx8IXku
bGVuZ3RofHwheS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLmxlbmd0aH0pLj0K
bGVuZ3RoKXt2YXIgQj0zREEuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShbVF0pO3JldHVy
biBCLmVudGVyKCkuYXBwZW5kPQooInRleHQiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRh
IikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFuY2g9Cm9yIiwibWlkZGxlIiksQi5h
dHRyKCJ4Iix1LmxlZnQrRC8yKS5hdHRyKCJ5Iix1LnRvcCtQLzIpLnRleHQoZnVuY3Rpb24oZSl7
cj0KZXR1cm4gZX0pLE19QS5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKSxiPTNEdC54
U2NhbGUoKSx3PTNEdC55U2NhbGUoPQopO3ZhciBqPTNEQS5zZWxlY3RBbGwoImcubnYtd3JhcC5u
di1zdGFja2VkQXJlYUNoYXJ0IikuZGF0YShbeV0pLEY9M0RqLmVudGU9CnIoKS5hcHBlbmQoImci
KS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1zdGFja2VkQXJlYUNoYXJ0IikuYXBwZW5k
KCJnIj0KKSxJPTNEai5zZWxlY3QoImciKTtGLmFwcGVuZCgicmVjdCIpLnN0eWxlKCJvcGFjaXR5
IiwwKSxGLmFwcGVuZCgiZyIpLmF0dHIoPQoiY2xhc3MiLCJudi14IG52LWF4aXMiKSxGLmFwcGVu
ZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteSBudi1heGlzIiksRi5hcHBlbmQ9CigiZyIpLmF0dHIo
ImNsYXNzIiwibnYtc3RhY2tlZFdyYXAiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYt
bGVnZW5kVz0KcmFwIiksRi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWNvbnRyb2xzV3Jh
cCIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhPQpzcyIsIm52LWludGVyYWN0aXZlIiksSS5zZWxl
Y3QoInJlY3QiKS5hdHRyKCJ3aWR0aCIsRCkuYXR0cigiaGVpZ2h0IixQKTtpZig9Cmgpe3ZhciBx
PTNEYz9ELUM6RDtpLndpZHRoKHEpLEkuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmRhdHVtKHkp
LmNhbGwoaSksdT0KLnRvcCE9M0RpLmhlaWdodCgpJiYodS50b3A9M0RpLmhlaWdodCgpLFA9M0Qo
Znx8cGFyc2VJbnQoQS5zdHlsZSgiaGVpZ2h0IikpPQp8fDQwMCktdS50b3AtdS5ib3R0b20pLEku
c2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGE9CnRlKCIr
KEQtcSkrIiwiKyAtdS50b3ArIikiKX1pZihjKXt2YXIgUj0zRFt7a2V5Okwuc3RhY2tlZHx8IlN0
YWNrZWQiLG1ldGFLZT0KeToiU3RhY2tlZCIsZGlzYWJsZWQ6dC5zdHlsZSgpIT0zRCJzdGFjayIs
c3R5bGU6InN0YWNrIn0se2tleTpMLnN0cmVhbXx8IlN0PQpyZWFtIixtZXRhS2V5OiJTdHJlYW0i
LGRpc2FibGVkOnQuc3R5bGUoKSE9M0Qic3RyZWFtIixzdHlsZToic3RyZWFtIn0se2tleTo9Ckwu
ZXhwYW5kZWR8fCJFeHBhbmRlZCIsbWV0YUtleToiRXhwYW5kZWQiLGRpc2FibGVkOnQuc3R5bGUo
KSE9M0QiZXhwYW5kIixzdD0KeWxlOiJleHBhbmQifSx7a2V5Okwuc3RhY2tfcGVyY2VudHx8IlN0
YWNrICUiLG1ldGFLZXk6IlN0YWNrX1BlcmNlbnQiLGRpc2FiPQpsZWQ6dC5zdHlsZSgpIT0zRCJz
dGFja19wZXJjZW50IixzdHlsZToic3RhY2tfcGVyY2VudCJ9XTtDPTNEay5sZW5ndGgvMyoyNjA9
CixSPTNEUi5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGsuaW5kZXhPZihlLm1ldGFLZXkpIT0z
RD0zRC0xfSkscy53aWR0aChDKT0KLmNvbG9yKFsiIzQ0NCIsIiM0NDQiLCIjNDQ0Il0pLEkuc2Vs
ZWN0KCIubnYtY29udHJvbHNXcmFwIikuZGF0dW0oUikuY2FsbChzPQopLHUudG9wIT0zRE1hdGgu
bWF4KHMuaGVpZ2h0KCksaS5oZWlnaHQoKSkmJih1LnRvcD0zRE1hdGgubWF4KHMuaGVpZ2h0KCks
aS49CmhlaWdodCgpKSxQPTNEKGZ8fHBhcnNlSW50KEEuc3R5bGUoImhlaWdodCIpKXx8NDAwKS11
LnRvcC11LmJvdHRvbSksSS5zZWxlYz0KdCgiLm52LWNvbnRyb2xzV3JhcCIpLmF0dHIoInRyYW5z
Zm9ybSIsInRyYW5zbGF0ZSgwLCIrIC11LnRvcCsiKSIpfWouYXR0cigiPQp0cmFuc2Zvcm0iLCJ0
cmFuc2xhdGUoIit1LmxlZnQrIiwiK3UudG9wKyIpIiksdiYmSS5zZWxlY3QoIi5udi15Lm52LWF4
aXMiKS49CmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK0QrIiwwKSIpLG0mJihvLndpZHRo
KEQpLmhlaWdodChQKS5tYXJnaW4oe2xlZj0KdDp1LmxlZnQsdG9wOnUudG9wfSkuc3ZnQ29udGFp
bmVyKEEpLnhTY2FsZShiKSxqLnNlbGVjdCgiLm52LWludGVyYWN0aXZlIikuPQpjYWxsKG8pKSx0
LndpZHRoKEQpLmhlaWdodChQKTt2YXIgVT0zREkuc2VsZWN0KCIubnYtc3RhY2tlZFdyYXAiKS5k
YXR1bSh5KTs9ClUuY2FsbCh0KSxwJiYobi5zY2FsZShiKS50aWNrcyhELzEwMCkudGlja1NpemUo
LVAsMCksSS5zZWxlY3QoIi5udi14Lm52LWF4aT0KcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5z
bGF0ZSgwLCIrUCsiKSIpLEkuc2VsZWN0KCIubnYteC5udi1heGlzIikuY2FsbChuPQopKSxkJiYo
ci5zY2FsZSh3KS50aWNrcyh0Lm9mZnNldCgpPTNEPTNEIndpZ2dsZSI/MDpQLzM2KS50aWNrU2l6
ZSgtRCwwKS5zZXQ9ClRpY2tGb3JtYXQodC5zdHlsZSgpPTNEPTNEImV4cGFuZCJ8fHQuc3R5bGUo
KT0zRD0zRCJzdGFja19wZXJjZW50Ij9kMy5mb3JtYT0KdCgiJSIpOkUpLEkuc2VsZWN0KCIubnYt
eS5udi1heGlzIikuY2FsbChyKSksdC5kaXNwYXRjaC5vbigiYXJlYUNsaWNrLnRvZ2dsPQplIixm
dW5jdGlvbihlKXt5LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pLmxlbmd0
aD0zRD0zRD0zRDE/eS49CmZvckVhY2goZnVuY3Rpb24oZSl7ZS5kaXNhYmxlZD0zRCExfSk6eS5m
b3JFYWNoKGZ1bmN0aW9uKHQsbil7dC5kaXNhYmxlZD0zRD0KbiE9M0RlLnNlcmllc0luZGV4fSks
Uy5kaXNhYmxlZD0zRHkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pLE4uPQpz
dGF0ZUNoYW5nZShTKSxNLnVwZGF0ZSgpfSksaS5kaXNwYXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1
bmN0aW9uKGUpe1MuZGlzYWI9CmxlZD0zRGUuZGlzYWJsZWQsTi5zdGF0ZUNoYW5nZShTKSxNLnVw
ZGF0ZSgpfSkscy5kaXNwYXRjaC5vbigibGVnZW5kQ2xpY2siLD0KZnVuY3Rpb24oZSxuKXtpZigh
ZS5kaXNhYmxlZClyZXR1cm47Uj0zRFIubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVk
PQo9M0QhMCxlfSksZS5kaXNhYmxlZD0zRCExLHQuc3R5bGUoZS5zdHlsZSksUy5zdHlsZT0zRHQu
c3R5bGUoKSxOLnN0YXRlQ2hhbmc9CmUoUyksTS51cGRhdGUoKX0pLG8uZGlzcGF0Y2gub24oImVs
ZW1lbnRNb3VzZW1vdmUiLGZ1bmN0aW9uKGkpe3QuY2xlYXJIaWdobD0KaWdodHMoKTt2YXIgcyxh
LGYsYz0zRFtdO3kuZmlsdGVyKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc2VyaWVzSW5kZXg9M0R0
LCFlPQouZGlzYWJsZWR9KS5mb3JFYWNoKGZ1bmN0aW9uKG4scil7YT0zRGUuaW50ZXJhY3RpdmVC
aXNlY3Qobi52YWx1ZXMsaS5wb2ludFg9ClZhbHVlLE0ueCgpKSx0LmhpZ2hsaWdodFBvaW50KHIs
YSwhMCk7dmFyIG89M0RuLnZhbHVlc1thXTtpZih0eXBlb2Ygbz0zRD0zRD0KInVuZGVmaW5lZCIp
cmV0dXJuO3R5cGVvZiBzPTNEPTNEInVuZGVmaW5lZCImJihzPTNEbyksdHlwZW9mIGY9M0Q9M0Qi
dW5kZWZpPQpuZWQiJiYoZj0zRE0ueFNjYWxlKCkoTS54KCkobyxhKSkpO3ZhciB1PTNEdC5zdHls
ZSgpPTNEPTNEImV4cGFuZCI/by5kaXNwbGE9CnkueTpNLnkoKShvLGEpO2MucHVzaCh7a2V5Om4u
a2V5LHZhbHVlOnUsY29sb3I6bChuLG4uc2VyaWVzSW5kZXgpLHN0YWNrZWRWYT0KbHVlOm8uZGlz
cGxheX0pfSksYy5yZXZlcnNlKCk7aWYoYy5sZW5ndGg+Mil7dmFyIGg9M0RNLnlTY2FsZSgpLmlu
dmVydChpLm1vPQp1c2VZKSxwPTNESW5maW5pdHksZD0zRG51bGw7Yy5mb3JFYWNoKGZ1bmN0aW9u
KGUsdCl7aD0zRE1hdGguYWJzKGgpO3ZhciBuPQo9M0RNYXRoLmFicyhlLnN0YWNrZWRWYWx1ZS55
MCkscj0zRE1hdGguYWJzKGUuc3RhY2tlZFZhbHVlLnkpO2lmKGg+PTNEbiYmaDw9Cj0zRHIrbil7
ZD0zRHQ7cmV0dXJufX0pLGQhPTNEbnVsbCYmKGNbZF0uaGlnaGxpZ2h0PTNEITApfXZhciB2PTNE
bi50aWNrRm9ybT0KYXQoKShNLngoKShzLGEpKSxtPTNEdC5zdHlsZSgpPTNEPTNEImV4cGFuZCI/
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZDMuZm9ybWF0PQooIi4xJSIpKGUpfTpmdW5jdGlvbihlLHQp
e3JldHVybiByLnRpY2tGb3JtYXQoKShlKX07by50b29sdGlwLnBvc2l0aW9uKHtsZWY9CnQ6Zit1
LmxlZnQsdG9wOmkubW91c2VZK3UudG9wfSkuY2hhcnRDb250YWluZXIoXy5wYXJlbnROb2RlKS5l
bmFibGVkKGcpLnZhbD0KdWVGb3JtYXR0ZXIobSkuZGF0YSh7dmFsdWU6dixzZXJpZXM6Y30pKCks
by5yZW5kZXJHdWlkZUxpbmUoZil9KSxvLmRpc3BhdGNoPQoub24oImVsZW1lbnRNb3VzZW91dCIs
ZnVuY3Rpb24oZSl7Ti50b29sdGlwSGlkZSgpLHQuY2xlYXJIaWdobGlnaHRzKCl9KSxOLm89Cm4o
InRvb2x0aXBTaG93IixmdW5jdGlvbihlKXtnJiZPKGUsXy5wYXJlbnROb2RlKX0pLE4ub24oImNo
YW5nZVN0YXRlIixmdW5jdD0KaW9uKGUpe3R5cGVvZiBlLmRpc2FibGVkIT0zRCJ1bmRlZmluZWQi
JiZ5Lmxlbmd0aD0zRD0zRD0zRGUuZGlzYWJsZWQubGVuZ3RoPQomJih5LmZvckVhY2goZnVuY3Rp
b24odCxuKXt0LmRpc2FibGVkPTNEZS5kaXNhYmxlZFtuXX0pLFMuZGlzYWJsZWQ9M0RlLmRpc2E9
CmJsZWQpLHR5cGVvZiBlLnN0eWxlIT0zRCJ1bmRlZmluZWQiJiZ0LnN0eWxlKGUuc3R5bGUpLE0u
dXBkYXRlKCl9KX0pLE19dmFyID0KdD0zRGUubW9kZWxzLnN0YWNrZWRBcmVhKCksbj0zRGUubW9k
ZWxzLmF4aXMoKSxyPTNEZS5tb2RlbHMuYXhpcygpLGk9M0RlLm1vPQpkZWxzLmxlZ2VuZCgpLHM9
M0RlLm1vZGVscy5sZWdlbmQoKSxvPTNEZS5pbnRlcmFjdGl2ZUd1aWRlbGluZSgpLHU9M0R7dG9w
OjM9CjAscmlnaHQ6MjUsYm90dG9tOjUwLGxlZnQ6NjB9LGE9M0RudWxsLGY9M0RudWxsLGw9M0Rl
LnV0aWxzLmRlZmF1bHRDb2xvcigpLD0KYz0zRCEwLGg9M0QhMCxwPTNEITAsZD0zRCEwLHY9M0Qh
MSxtPTNEITEsZz0zRCEwLHk9M0RmdW5jdGlvbihlLHQsbixyLGkpe3JlPQp0dXJuIjxoMz4iK2Ur
IjwvaDM+IisiPHA+IituKyIgb24gIit0KyI8L3A+In0sYix3LEU9M0RkMy5mb3JtYXQoIiwuMmYi
KSxTPQo9M0R7c3R5bGU6dC5zdHlsZSgpfSx4PTNEbnVsbCxUPTNEIk5vIERhdGEgQXZhaWxhYmxl
LiIsTj0zRGQzLmRpc3BhdGNoKCJ0b289Cmx0aXBTaG93IiwidG9vbHRpcEhpZGUiLCJzdGF0ZUNo
YW5nZSIsImNoYW5nZVN0YXRlIiksQz0zRDI1MCxrPTNEWyJTdGFja2VkIj0KLCJTdHJlYW0iLCJF
eHBhbmRlZCJdLEw9M0R7fSxBPTNEMDtuLm9yaWVudCgiYm90dG9tIikudGlja1BhZGRpbmcoNyks
ci5vcmllPQpudCh2PyJyaWdodCI6ImxlZnQiKSxzLnVwZGF0ZVN0YXRlKCExKTt2YXIgTz0zRGZ1
bmN0aW9uKGkscyl7dmFyIG89M0RpLnBvc1s9CjBdKyhzLm9mZnNldExlZnR8fDApLHU9M0RpLnBv
c1sxXSsocy5vZmZzZXRUb3B8fDApLGE9M0RuLnRpY2tGb3JtYXQoKSh0LngoKT0KKGkucG9pbnQs
aS5wb2ludEluZGV4KSksZj0zRHIudGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbnQsaS5wb2ludElu
ZGV4KSksbD0KPTNEeShpLnNlcmllcy5rZXksYSxmLGksTSk7ZS50b29sdGlwLnNob3coW28sdV0s
bCxpLnZhbHVlPDA/Im4iOiJzIixudWxsLHMpPQp9O3JldHVybiB0LmRpc3BhdGNoLm9uKCJ0b29s
dGlwU2hvdyIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rdS5sZWZ0LGU9Ci5wb3NbMV0r
dS50b3BdLE4udG9vbHRpcFNob3coZSl9KSx0LmRpc3BhdGNoLm9uKCJ0b29sdGlwSGlkZSIsZnVu
Y3Rpb24oZSl7Tj0KLnRvb2x0aXBIaWRlKGUpfSksTi5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9u
KCl7ZyYmZS50b29sdGlwLmNsZWFudXAoKX0pLE0uPQpkaXNwYXRjaD0zRE4sTS5zdGFja2VkPTNE
dCxNLmxlZ2VuZD0zRGksTS5jb250cm9scz0zRHMsTS54QXhpcz0zRG4sTS55QXhpcz0KPTNEcixN
LmludGVyYWN0aXZlTGF5ZXI9M0RvLGQzLnJlYmluZChNLHQsIngiLCJ5Iiwic2l6ZSIsInhTY2Fs
ZSIsInlTY2FsZSIsPQoieERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJzaXpl
RG9tYWluIiwiaW50ZXJhY3RpdmUiLCJ1c2VWb3Jvbm89CmkiLCJvZmZzZXQiLCJvcmRlciIsInN0
eWxlIiwiY2xpcEVkZ2UiLCJmb3JjZVgiLCJmb3JjZVkiLCJmb3JjZVNpemUiLCJpbnRlcj0KcG9s
YXRlIiksTS5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKE0pLE0ubWFyZ2luPTNE
ZnVuY3Rpb24oZSl7cmV0PQp1cm4gYXJndW1lbnRzLmxlbmd0aD8odS50b3A9M0R0eXBlb2YgZS50
b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6dS50b3AsdS5yaWc9Cmh0PTNEdHlwZW9mIGUucmlnaHQh
PTNEInVuZGVmaW5lZCI/ZS5yaWdodDp1LnJpZ2h0LHUuYm90dG9tPTNEdHlwZW9mIGUuYm90dD0K
b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dS5ib3R0b20sdS5sZWZ0PTNEdHlwZW9mIGUubGVm
dCE9M0QidW5kZWZpbmVkIj9lPQoubGVmdDp1LmxlZnQsTSk6dX0sTS53aWR0aD0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZSxNKTo9CmF9LE0uaGVpZ2h0PTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLE0pOmZ9LE0uY29sb3I9M0Rm
dT0KbmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZS51dGlscy5nZXRDb2xv
cihuKSxpLmNvbG9yKGwpLHQuY29sPQpvcihsKSxNKTpsfSxNLnNob3dDb250cm9scz0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSxNKTo9CmN9LE0uc2hvd0xlZ2Vu
ZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxNKTpofSxNLnNo
b3dYQT0KeGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLE0p
OnB9LE0uc2hvd1lBeGlzPTNEZnVuY3RpPQpvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
ZD0zRGUsTSk6ZH0sTS5yaWdodEFsaWduWUF4aXM9M0RmdW5jdGlvbihlKXs9CnJldHVybiBhcmd1
bWVudHMubGVuZ3RoPyh2PTNEZSxyLm9yaWVudChlPyJyaWdodCI6ImxlZnQiKSxNKTp2fSxNLnVz
ZUludGVyYT0KY3RpdmVHdWlkZWxpbmU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8obT0zRGUsZT0zRD0zRD0zRCEwJiYoPQpNLmludGVyYWN0aXZlKCExKSxNLnVzZVZvcm9u
b2koITEpKSxNKTptfSxNLnRvb2x0aXA9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXI9Cmd1bWVudHMu
bGVuZ3RoPyh5PTNEZSxNKTp5fSxNLnRvb2x0aXBzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndD0KaD8oZz0zRGUsTSk6Z30sTS50b29sdGlwQ29udGVudD0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PTNEPQplLE0pOnl9LE0uc3RhdGU9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUz0zRGUsTSk6U30sTS5kZWZhdWw9CnRTdGF0
ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh4PTNEZSxNKTp4fSxNLm5v
RGF0YT0zRGZ1bmN0aT0Kb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFQ9M0RlLE0pOlR9
LE0udHJhbnNpdGlvbkR1cmF0aW9uPTNEZnVuY3Rpb24oPQplKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oQT0zRGUsTSk6QX0sTS5jb250cm9sc0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm49CiBh
cmd1bWVudHMubGVuZ3RoPyhrPTNEZSxNKTprfSxNLmNvbnRyb2xMYWJlbHM9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbj0KdHMubGVuZ3RoP3R5cGVvZiBlIT0zRCJvYmplY3QiP0w6KEw9M0Rl
LE0pOkx9LHIuc2V0VGlja0Zvcm1hdD0zRHIudGlja0Zvcm1hPQp0LHIudGlja0Zvcm1hdD0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPTNEZSxyKTpFfSxNfX0oKSxkZWY9
CmluZSgicGx1Z2luL3BsdWdpbnMvbnZkMy9udi5kMyIsZnVuY3Rpb24oKXt9KSxkZWZpbmUoInBs
dWdpbi9jaGFydHMvbnZkMy9jbz0KbW1vbi9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9mb3Jtcy9k
ZWZhdWx0IiwicGx1Z2luL3BsdWdpbnMvbnZkMy9udi5kMyJdLGZ1PQpuY3Rpb24oZSl7cmV0dXJu
ICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiIiLGNhdGVnb3J5OiIiLGxpYnJhcnk6Ik5WRDMiLHRh
Zzo9CiJzdmciLGtleXdvcmRzOiJzbWFsbCJ9KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9udmQz
L2Jhci9jb25maWciLFsicGx1Z2luLz0KY2hhcnRzL252ZDMvY29tbW9uL2NvbmZpZyJdLGZ1bmN0
aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiUmVnPQp1bGFyIixjYXRlZ29y
eToiQmFyIGRpYWdyYW1zIixjb2x1bW5zOnt4Ont0aXRsZToiVmFsdWVzIGZvciB4LWF4aXMiLGlz
X2xhYmU9Cmw6ITAsaXNfYXV0bzohMCxpc191bmlxdWU6ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9y
IHktYXhpcyIsaXNfbnVtZXJpYzohMH19fT0KKX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9udmQz
L2Jhcl9zdGFja2VkL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL252ZDMvY29tPQptb24vY29uZmln
Il0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJTdGFja2VkIixj
YXRlZ29yeTo9CiJCYXIgZGlhZ3JhbXMiLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgt
YXhpcyIsaXNfbGFiZWw6ITAsaXNfYXV0bzohMD0KLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6IlZh
bHVlcyBmb3IgeS1heGlzIixpc19udW1lcmljOiEwfX19KX0pLGRlZmluZSgicGx1PQpnaW4vY2hh
cnRzL252ZDMvYmFyX2hvcml6b250YWwvY29uZmlnIixbInBsdWdpbi9jaGFydHMvbnZkMy9jb21t
b24vY29uZmlnIl09CixmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6
Ikhvcml6b250YWwiLGNhdGVnb3J5OiJCYXIgZGlhZz0KcmFtcyIsc2V0dGluZ3M6e3hfYXhpc190
eXBlOntpbml0OiJoaWRlIn19LGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgtPQpheGlz
Iixpc19sYWJlbDohMCxpc19hdXRvOiEwLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBm
b3IgeS1heGlzIixpc189Cm51bWVyaWM6ITB9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252
ZDMvYmFyX2hvcml6b250YWxfc3RhY2tlZC9jb25maWciLD0KWyJwbHVnaW4vY2hhcnRzL252ZDMv
Y29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0PQpp
dGxlOiJTdGFja2VkIGhvcml6b250YWwiLGNhdGVnb3J5OiJCYXIgZGlhZ3JhbXMiLHNldHRpbmdz
Ont4X2F4aXNfdHlwZTp7aW49Cml0OiJoaWRlIn19LGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMg
Zm9yIHgtYXhpcyIsaXNfbGFiZWw6ITAsaXNfYXV0bzohMCxpcz0KX3VuaXF1ZTohMH0seTp7dGl0
bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1lcmljOiEwfX19KX0pLGRlZmluZSgicGx1Z2lu
PQovY2hhcnRzL252ZDMvbGluZV9mb2N1cy9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9udmQzL2Nv
bW1vbi9jb25maWciXSxmdW5jdGk9Cm9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRs
ZToiTGluZSB3aXRoIGZvY3VzIixjYXRlZ29yeToiT3RoZXJzIix6bz0Kb21hYmxlOiJuYXRpdmUi
LGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbGFiZWw6ITAsaXNfYXV0
bzohPQowLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1l
cmljOiEwfX19KX0pLGRlZmluZSgicGw9CnVnaW4vY2hhcnRzL252ZDMvcGllL2NvbmZpZyIsWyJw
bHVnaW4vcGx1Z2lucy9udmQzL252LmQzIl0sZnVuY3Rpb24oKXtyZXR1cj0KbiAkLmV4dGVuZCgh
MCx7fSx7dGl0bGU6IlBpZSBjaGFydCIsY2F0ZWdvcnk6IkFyZWEgY2hhcnRzIixsaWJyYXJ5OiJO
VkQzIix0PQphZzoic3ZnIixrZXl3b3Jkczoic21hbGwiLGNvbHVtbnM6e2xhYmVsOnt0aXRsZToi
TGFiZWxzIixpc19sYWJlbDohMCxpc19hdXQ9Cm86ITB9LHk6e3RpdGxlOiJWYWx1ZXMiLGlzX251
bWVyaWM6ITB9fSxzZXR0aW5nczp7bWFpbl9zZXBhcmF0b3I6e3R5cGU6InNlcD0KYXJhdG9yIix0
aXRsZToiUGllIGNoYXJ0IHNldHRpbmdzIn0sZG9udXRfcmF0aW86e3RpdGxlOiJEb251dCByYXRp
byIsaW5mbzoiPQpEZXRlcm1pbmUgaG93IGxhcmdlIHRoZSBkb251dCBob2xlIHdpbGwgYmUuIix0
eXBlOiJzZWxlY3QiLGluaXQ6IjAuNSIsZGF0YTo9Clt7bGFiZWw6IjUwJSIsdmFsdWU6IjAuNSJ9
LHtsYWJlbDoiMjUlIix2YWx1ZToiMC4yNSJ9LHtsYWJlbDoiMTAlIix2YWx1ZToiMD0KLjEwIn0s
e2xhYmVsOiIwJSIsdmFsdWU6IjAifV19LHNob3dfbGVnZW5kOnt0aXRsZToiU2hvdyBsZWdlbmQi
LGluZm86IldvdWxkPQogeW91IGxpa2UgdG8gYWRkIGEgbGVnZW5kPyIsdHlwZToicmFkaW9idXR0
b24iLGluaXQ6ImZhbHNlIixkYXRhOlt7bGFiZWw6Ilk9CmVzIix2YWx1ZToidHJ1ZSJ9LHtsYWJl
bDoiTm8iLHZhbHVlOiJmYWxzZSJ9XX0sbGFiZWxfc2VwYXJhdG9yOnt0eXBlOiJzZXBhcj0KYXRv
ciIsdGl0bGU6IkxhYmVsIHNldHRpbmdzIn0sbGFiZWxfdHlwZTp7dGl0bGU6IkRvbnV0IGxhYmVs
IixpbmZvOiJXaGF0IHdvPQp1bGQgeW91IGxpa2UgdG8gc2hvdyBmb3IgZWFjaCBzbGljZT8iLHR5
cGU6InNlbGVjdCIsaW5pdDoicGVyY2VudCIsZGF0YTpbe2w9CmFiZWw6Ii0tIE5vdGhpbmcgLS0i
LHZhbHVlOiJoaWRlIixoaWRlOiJsYWJlbF9vdXRzaWRlIn0se2xhYmVsOiJMYWJlbCBjb2x1bT0K
biIsdmFsdWU6ImtleSIsc2hvdzoibGFiZWxfb3V0c2lkZSJ9LHtsYWJlbDoiVmFsdWUgY29sdW1u
Iix2YWx1ZToidmFsdWUiLHNoPQpvdzoibGFiZWxfb3V0c2lkZSJ9LHtsYWJlbDoiUGVyY2VudGFn
ZSIsdmFsdWU6InBlcmNlbnQiLHNob3c6ImxhYmVsX291dHNpZGU9CiJ9XX0sbGFiZWxfb3V0c2lk
ZTp7dGl0bGU6IlNob3cgb3V0c2lkZSIsaW5mbzoiV291bGQgeW91IGxpa2UgdG8gc2hvdyBsYWJl
bD0KcyBvdXRzaWRlIHRoZSBkb251dD8iLHR5cGU6InJhZGlvYnV0dG9uIixpbml0OiJmYWxzZSIs
ZGF0YTpbe2xhYmVsOiJZZXMiLHZhPQpsdWU6InRydWUifSx7bGFiZWw6Ik5vIix2YWx1ZToiZmFs
c2UifV19LHVzZV9wYW5lbHM6e2luaXQ6InRydWUiLGhpZGU6ITB9fX09Cil9KSxkZWZpbmUoInBs
dWdpbi9jaGFydHMvbnZkMy9zdGFja2VkYXJlYV9mdWxsL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRz
L252ZD0KMy9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9
LGUse3RpdGxlOiJFeHBhbmRlZCIsem9vPQptYWJsZTohMCxjYXRlZ29yeToiQXJlYSBjaGFydHMi
LGtleXdvcmRzOiJkZWZhdWx0IHNtYWxsIixjb2x1bW5zOnt4Ont0aXRsZTo9CiJWYWx1ZXMgZm9y
IHgtYXhpcyIsaXNfbGFiZWw6ITAsaXNfYXV0bzohMCxpc191bmlxdWU6ITB9LHk6e3RpdGxlOiJW
YWx1ZXMgZj0Kb3IgeS1heGlzIixpc19udW1lcmljOiEwfX19KX0pLGRlZmluZSgicGx1Z2luL2No
YXJ0cy9udmQzL3N0YWNrZWRhcmVhX3N0cmVhPQptL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL252
ZDMvY29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCg9CiEwLHt9LGUs
e3RpdGxlOiJTdHJlYW0iLGNhdGVnb3J5OiJBcmVhIGNoYXJ0cyIsem9vbWFibGU6ITAsa2V5d29y
ZHM6ImRlZmF1bD0KdCBzbWFsbCIsc2hvd21heG1pbjohMCxjb2x1bW5zOnt4Ont0aXRsZToiVmFs
dWVzIGZvciB4LWF4aXMiLGlzX2xhYmVsOiEwLGlzPQpfYXV0bzohMCxpc191bmlxdWU6ITB9LHk6
e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhpcyIsaXNfbnVtZXJpYzohMH19fSl9KSxkZWY9CmluZSgi
cGx1Z2luL2NoYXJ0cy9udmQzL2hpc3RvZ3JhbS9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9udmQz
L2NvbW1vbi9jb25maT0KZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0
aXRsZToiSGlzdG9ncmFtIixjYXRlZ29yeToiRGF0YSBwPQpyb2Nlc3NpbmcgKHJlcXVpcmVzICdj
aGFydHMnIHRvb2wgZnJvbSBUb29sc2hlZCkiLGV4ZWN1dGU6Imhpc3RvZ3JhbSIsa2V5d289CnJk
czoic21hbGwgbWVkaXVtIGxhcmdlIixjb2x1bW5zOnt5Ont0aXRsZToiT2JzZXJ2YXRpb25zIixp
c19udW1lcmljOiEwfX0scz0KZXR0aW5nczp7eF9heGlzX2xhYmVsOntpbml0OiJWYWx1ZXMifSx5
X2F4aXNfbGFiZWw6e2luaXQ6IkRlbnNpdHkifSx5X2F4aXNfPQp0eXBlOntpbml0OiJmIn0seV9h
eGlzX3ByZWNpc2lvbjp7aW5pdDoiLjIifX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9udmQ9
CjMvbGluZS9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9udmQzL2NvbW1vbi9jb25maWciXSxmdW5j
dGlvbihlKXtyZXR1cm4gJC5leD0KdGVuZCghMCx7fSxlLHt0aXRsZToiTGluZSBjaGFydCIsY2F0
ZWdvcnk6Ik90aGVycyIsem9vbWFibGU6ITAsY29sdW1uczp7eDp7PQp0aXRsZToiVmFsdWVzIGZv
ciB4LWF4aXMiLGlzX2xhYmVsOiEwLGlzX2F1dG86ITAsaXNfdW5pcXVlOiEwfSx5Ont0aXRsZToi
VmE9Cmx1ZXMgZm9yIHktYXhpcyIsaXNfbnVtZXJpYzohMH19fSl9KSxkZWZpbmUoInBsdWdpbi9j
aGFydHMvbnZkMy9zY2F0dGVyL2Nvbj0KZmlnIixbInBsdWdpbi9jaGFydHMvbnZkMy9jb21tb24v
Y29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9PQosZSx7dGl0bGU6IlNj
YXR0ZXIgcGxvdCIsY2F0ZWdvcnk6Ik90aGVycyIsem9vbWFibGU6ITAsY29sdW1uczp7eDp7dGl0
bGU6IlY9CmFsdWVzIGZvciB4LWF4aXMiLGlzX251bWVyaWM6ITB9LHk6e3RpdGxlOiJWYWx1ZXMg
Zm9yIHktYXhpcyIsaXNfbnVtZXJpYzohMD0KfX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9u
dmQzL3N0YWNrZWRhcmVhL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL252ZDMvPQpjb21tb24vY29u
ZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJSZWd1bGFy
Iix6b29tYWI9CmxlOiEwLGNhdGVnb3J5OiJBcmVhIGNoYXJ0cyIsa2V5d29yZHM6ImRlZmF1bHQg
c21hbGwiLGNvbHVtbnM6e3g6e3RpdGxlOiJWYT0KbHVlcyBmb3IgeC1heGlzIixpc19sYWJlbDoh
MCxpc19hdXRvOiEwLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgPQp5LWF4aXMi
LGlzX251bWVyaWM6ITB9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL2pxcGxvdC9jb21tb24v
Y29uZmlnIixbInA9Cmx1Z2luL2NoYXJ0cy9mb3Jtcy9kZWZhdWx0Il0sZnVuY3Rpb24oZSl7cmV0
dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiIiLD0KY2F0ZWdvcnk6IiIsbGlicmFyeToianFQ
bG90Iix0YWc6ImRpdiIsem9vbWFibGU6ITAsa2V5d29yZHM6Im1lZGl1bSIsc2V0dGluPQpnczp7
c2VwYXJhdG9yX2dyaWQ6e3RpdGxlOiJHcmlkcyIsdHlwZToic2VwYXJhdG9yIn0seF9heGlzX2dy
aWQ6e3RpdGxlOiJBeGk9CnMgZ3JpZCIsaW5mbzoiV291bGQgeW91IGxpa2UgdG8gc2hvdyBncmlk
IGxpbmVzIGZvciB0aGUgWCBheGlzPyIsdHlwZToicmFkaT0Kb2J1dHRvbiIsaW5pdDoiZmFsc2Ui
LGRhdGE6W3tsYWJlbDoiT24iLHZhbHVlOiJ0cnVlIn0se2xhYmVsOiJPZmYiLHZhbHVlOiJmPQph
bHNlIn1dfSx5X2F4aXNfZ3JpZDp7dGl0bGU6IkF4aXMgZ3JpZCIsaW5mbzoiV291bGQgeW91IGxp
a2UgdG8gc2hvdyBncmlkIGw9CmluZXMgZm9yIHRoZSBZIGF4aXM/Iix0eXBlOiJyYWRpb2J1dHRv
biIsaW5pdDoidHJ1ZSIsZGF0YTpbe2xhYmVsOiJPbiIsdmFsdT0KZToidHJ1ZSJ9LHtsYWJlbDoi
T2ZmIix2YWx1ZToiZmFsc2UifV19fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL2pxcGxvdC9i
PQphci9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9qcXBsb3QvY29tbW9uL2NvbmZpZyJdLGZ1bmN0
aW9uKGUpe3JldHVybiAkLmV4dGU9Cm5kKCEwLHt9LGUse3RpdGxlOiJSZWd1bGFyIixjYXRlZ29y
eToiQmFyIGRpYWdyYW1zIixjb2x1bW5zOnt4Ont0aXRsZToiVmFsdT0KZXMgZm9yIHgtYXhpcyIs
aXNfbGFiZWw6ITAsaXNfYXV0bzohMCxpc191bmlxdWU6ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9y
IHktPQpheGlzIixpc19udW1lcmljOiEwfX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9qcXBs
b3QvbGluZS9jb25maWciLFsicGx1Z2k9Cm4vY2hhcnRzL2pxcGxvdC9jb21tb24vY29uZmlnIl0s
ZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOj0KIkxpbmUgY2hhcnQi
LGNhdGVnb3J5OiJPdGhlcnMiLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIs
aXNfbGFiPQplbDohMCxpc19hdXRvOiEwLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBm
b3IgeS1heGlzIixpc19udW1lcmljOiEwfX09Cn0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL2px
cGxvdC9zY2F0dGVyL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL2pxcGxvdC9jbz0KbW1vbi9jb25m
aWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6IlNjYXR0ZXIg
cGxvdCIsY2F0PQplZ29yeToiT3RoZXJzIixjb2x1bW5zOnt4Ont0aXRsZToiVmFsdWVzIGZvciB4
LWF4aXMiLGlzX251bWVyaWM6ITB9LHk6e3RpdGw9CmU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19u
dW1lcmljOiEwfX0sc2V0dGluZ3M6e3hfYXhpc19ncmlkOntpbml0OiJ0cnVlIn19fT0KKX0pLGRl
ZmluZSgicGx1Z2luL2NoYXJ0cy9qcXBsb3QvYm94cGxvdC9jb25maWciLFsicGx1Z2luL2NoYXJ0
cy9qcXBsb3QvY29tPQptb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEw
LHt9LGUse3RpdGxlOiJCb3ggcGxvdCIsY2F0ZWdvcnk9CjoiRGF0YSBwcm9jZXNzaW5nIChyZXF1
aXJlcyAnY2hhcnRzJyB0b29sIGZyb20gVG9vbHNoZWQpIixsaWJyYXJ5OiJqcVBsb3QiLD0KdGFn
OiJkaXYiLGV4ZWN1dGU6ImJveHBsb3QiLGtleXdvcmRzOiJzbWFsbCBtZWRpdW0gbGFyZ2UiLGNv
bHVtbnM6e3k6e3RpdGxlPQo6Ik9ic2VydmF0aW9ucyIsaXNfbnVtZXJpYzohMH19LHNldHRpbmdz
OntzaG93X2xlZ2VuZDp7aW5pdDoiZmFsc2UifX19KX0pLGQ9CmVmaW5lKCJwbHVnaW4vY2hhcnRz
L2pxcGxvdC9oaXN0b2dyYW1fZGlzY3JldGUvY29uZmlnIixbInBsdWdpbi9jaGFydHMvanFwbD0K
b3QvY29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0
aXRsZToiRGlzY3JldGUgSGlzPQp0b2dyYW0iLGNhdGVnb3J5OiJEYXRhIHByb2Nlc3NpbmcgKHJl
cXVpcmVzICdjaGFydHMnIHRvb2wgZnJvbSBUb29sc2hlZCkiLGU9CnhlY3V0ZToiaGlzdG9ncmFt
ZGlzY3JldGUiLGtleXdvcmRzOiJzbWFsbCBtZWRpdW0gbGFyZ2UiLGNvbHVtbnM6e3g6e3RpdGxl
Oj0KIk9ic2VydmF0aW9ucyIsaXNfbGFiZWw6ITB9fSxzZXR0aW5nczp7eF9heGlzX2xhYmVsOntp
bml0OiJCcmVha3MifSx5X2F4aXNfPQpsYWJlbDp7aW5pdDoiRGVuc2l0eSJ9fX0pfSksZGVmaW5l
KCJwbHVnaW4vY2hhcnRzL290aGVycy9oZWF0bWFwL2NvbmZpZyIsWyI9CnBsdWdpbi9jaGFydHMv
Zm9ybXMvZGVmYXVsdCJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRs
ZToiSD0KZWF0bWFwIixjYXRlZ29yeToiT3RoZXJzIixsaWJyYXJ5OiJDdXN0b20iLHRhZzoic3Zn
IixrZXl3b3Jkczoic21hbGwiLHpvb21hPQpibGU6ITAsY29sdW1uczp7eDp7dGl0bGU6IkNvbHVt
biBsYWJlbHMiLGlzX2xhYmVsOiEwLGlzX251bWVyaWM6ITAsaXNfdW5pcXU9CmU6ITB9LHk6e3Rp
dGxlOiJSb3cgbGFiZWxzIixpc19sYWJlbDohMCxpc19udW1lcmljOiEwLGlzX3VuaXF1ZTohMH0s
ejp7dGl0bD0KZToiT2JzZXJ2YXRpb24iLGlzX251bWVyaWM6ITB9fSxzZXR0aW5nczp7dXNlX3Bh
bmVsczp7aW5pdDoidHJ1ZSIsaGlkZTohMH0sPQpjb2xvcl9zZXQ6e3RpdGxlOiJDb2xvciBzY2hl
bWUiLGluZm86IlNlbGVjdCBhIGNvbG9yIHNjaGVtZSBmb3IgeW91ciBoZWF0bWE9CnAiLHR5cGU6
InNlbGVjdCIsaW5pdDoiamV0IixkYXRhOlt7bGFiZWw6IkNvbGQtdG8tSG90Iix2YWx1ZToiaG90
In0se2xhYmVsOj0KIkNvb2wiLHZhbHVlOiJjb29sIn0se2xhYmVsOiJDb3BwZXIiLHZhbHVlOiJj
b3BwZXIifSx7bGFiZWw6IkdyYXkgc2NhbGUiLHZhPQpsdWU6ImdyYXkifSx7bGFiZWw6IkpldCIs
dmFsdWU6ImpldCJ9LHtsYWJlbDoiTm8tR3JlZW4iLHZhbHVlOiJub19ncmVlbiJ9LHs9CmxhYmVs
OiJPY2VhbiIsdmFsdWU6Im9jZWFuIn0se2xhYmVsOiJQb2xhciIsdmFsdWU6InBvbGFyIn0se2xh
YmVsOiJSZWQtdG8tRz0KcmVlbiIsdmFsdWU6InJlZGdyZWVuIn0se2xhYmVsOiJSZWQtdG8tZ3Jl
ZW4gKHNhdHVyYXRlZCkiLHZhbHVlOiJyZWQyZ3JlZW4iPQp9LHtsYWJlbDoiUmVsaWVmIix2YWx1
ZToicmVsaWVmIn0se2xhYmVsOiJTZWlzbW9ncmFwaCIsdmFsdWU6InNlaXMifSx7bGFiZWw9Cjoi
U2VhbGFuZCIsdmFsdWU6InNlYWxhbmQifSx7bGFiZWw6IlNwbGl0Iix2YWx1ZToic3BsaXQifSx7
bGFiZWw6Ild5c2l3eWciLD0KdmFsdWU6Ind5c2l3eWcifV19LHVybF90ZW1wbGF0ZTp7dGl0bGU6
IlVybCB0ZW1wbGF0ZSIsaW5mbzoiRW50ZXIgYSB1cmwgdG8gPQpsaW5rIHRoZSBsYWJlbHMgd2l0
aCBleHRlcm5hbCBzb3VyY2VzLiBVc2UgX19MQUJFTF9fIGFzIHBsYWNlaG9sZGVyLiIsdHlwZTo9
CiJ0ZXh0Iixpbml0OiIiLHBsYWNlaG9sZGVyOiJodHRwOi8vc29tZXVybC5jb20/aWQ9M0RfX0xB
QkVMX18ifX19KX0pLGRlZmluZT0KKCJwbHVnaW4vY2hhcnRzL290aGVycy9oZWF0bWFwX2NsdXN0
ZXIvY29uZmlnIixbInBsdWdpbi9jaGFydHMvb3RoZXJzL2hlYXRtPQphcC9jb25maWciXSxmdW5j
dGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6IkNsdXN0ZXJlZCBIZWF0bWFw
Iiw9CmNhdGVnb3J5OiJEYXRhIHByb2Nlc3NpbmcgKHJlcXVpcmVzICdjaGFydHMnIHRvb2wgZnJv
bSBUb29sc2hlZCkiLGV4ZWN1dGU6Ij0KaGVhdG1hcCIsa2V5d29yZHM6InNtYWxsIG1lZGl1bSBs
YXJnZSJ9KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy90eXBlcyIsWyJwPQpsdWdpbi9jaGFydHMv
bnZkMy9iYXIvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9udmQzL2Jhcl9zdGFja2VkL2NvbmZpZyIs
InBsdWc9CmluL2NoYXJ0cy9udmQzL2Jhcl9ob3Jpem9udGFsL2NvbmZpZyIsInBsdWdpbi9jaGFy
dHMvbnZkMy9iYXJfaG9yaXpvbnRhbF9zdD0KYWNrZWQvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9u
dmQzL2xpbmVfZm9jdXMvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9udmQzL3BpPQplL2NvbmZpZyIs
InBsdWdpbi9jaGFydHMvbnZkMy9zdGFja2VkYXJlYV9mdWxsL2NvbmZpZyIsInBsdWdpbi9jaGFy
dHMvbnZkMy89CnN0YWNrZWRhcmVhX3N0cmVhbS9jb25maWciLCJwbHVnaW4vY2hhcnRzL252ZDMv
aGlzdG9ncmFtL2NvbmZpZyIsInBsdWdpbi9jaD0KYXJ0cy9udmQzL2xpbmUvY29uZmlnIiwicGx1
Z2luL2NoYXJ0cy9udmQzL3NjYXR0ZXIvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9uPQp2ZDMvc3Rh
Y2tlZGFyZWEvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9qcXBsb3QvYmFyL2NvbmZpZyIsInBsdWdp
bi9jaGFydHMvanE9CnBsb3QvbGluZS9jb25maWciLCJwbHVnaW4vY2hhcnRzL2pxcGxvdC9zY2F0
dGVyL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvanFwbD0Kb3QvYm94cGxvdC9jb25maWciLCJwbHVn
aW4vY2hhcnRzL2pxcGxvdC9oaXN0b2dyYW1fZGlzY3JldGUvY29uZmlnIiwicGx1Z2luPQovY2hh
cnRzL290aGVycy9oZWF0bWFwL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvb3RoZXJzL2hlYXRtYXBf
Y2x1c3Rlci9jb25maWc9CiJdLGZ1bmN0aW9uKGUsdCxuLHIsaSxzLG8sdSxhLGYsbCxjLGgscCxk
LHYsbSxnLHkpe3JldHVybiBCYWNrYm9uZS5Nb2RlbC5leD0KdGVuZCh7ZGVmYXVsdHM6e252ZDNf
YmFyOmUsbnZkM19iYXJfc3RhY2tlZDp0LG52ZDNfYmFyX2hvcml6b250YWw6bixudmQzX2JhPQpy
X2hvcml6b250YWxfc3RhY2tlZDpyLG52ZDNfbGluZV9mb2N1czppLG52ZDNfc3RhY2tlZGFyZWE6
YyxudmQzX3N0YWNrZWRhcmU9CmFfZnVsbDpvLG52ZDNfc3RhY2tlZGFyZWFfc3RyZWFtOnUsbnZk
M19waWU6cyxudmQzX2xpbmU6ZixudmQzX3NjYXR0ZXI6bCxudj0KZDNfaGlzdG9ncmFtOmEsanFw
bG90X2JhcjpoLGpxcGxvdF9oaXN0b2dyYW1fZGlzY3JldGU6bSxqcXBsb3RfbGluZTpwLGpxcGxv
PQp0X3NjYXR0ZXI6ZCxqcXBsb3RfYm94cGxvdDp2LG90aGVyc19oZWF0bWFwOmcsb3RoZXJzX2hl
YXRtYXBfY2x1c3Rlcjp5fX0pfSk9CixkZWZpbmUoInBsdWdpbi9hcHAiLFsibXZjL3VpL3VpLW1v
ZGFsIiwibXZjL3VpL3VpLXBvcnRsZXQiLCJtdmMvdWkvdWktbWlzYz0KIiwidXRpbHMvdXRpbHMi
LCJwbHVnaW4vbGlicmFyeS9qb2JzIiwicGx1Z2luL2xpYnJhcnkvZGF0YXNldHMiLCJwbHVnaW4v
bGliPQpyYXJ5L3N0b3JhZ2UiLCJ1dGlscy9kZWZlcnJlZCIsInBsdWdpbi92aWV3cy92aWV3ZXIi
LCJwbHVnaW4vdmlld3MvZWRpdG9yIiw9CiJwbHVnaW4vbW9kZWxzL2NvbmZpZyIsInBsdWdpbi9t
b2RlbHMvY2hhcnQiLCJwbHVnaW4vY2hhcnRzL3R5cGVzIl0sZnVuY3Rpbz0KbihlLHQsbixyLGks
cyxvLHUsYSxmLGwsYyxoKXtyZXR1cm4gQmFja2JvbmUuVmlldy5leHRlbmQoe2luaXRpYWxpemU6
ZnVuY3RpPQpvbih0KXt0aGlzLm9wdGlvbnM9M0R0LEdhbGF4eSYmR2FsYXh5Lm1vZGFsP3RoaXMu
bW9kYWw9M0RHYWxheHkubW9kYWw6dGhpcy49Cm1vZGFsPTNEbmV3IGUuVmlldyx0aGlzLmNvbmZp
Zz0zRG5ldyBsLHRoaXMudHlwZXM9M0RuZXcgaCx0aGlzLmNoYXJ0PTNEbmV3ID0KYyx0aGlzLmpv
YnM9M0RuZXcgaSh0aGlzKSx0aGlzLmRhdGFzZXRzPTNEbmV3IHModGhpcyksdGhpcy5zdG9yYWdl
PTNEbmV3IG8oPQp0aGlzKSx0aGlzLmRlZmVycmVkPTNEbmV3IHUsdGhpcy52aWV3ZXJfdmlldz0z
RG5ldyBhKHRoaXMpLHRoaXMuZWRpdG9yX3ZpZXc9Cj0zRG5ldyBmKHRoaXMpLHRoaXMuJGVsLmFw
cGVuZCh0aGlzLnZpZXdlcl92aWV3LiRlbCksdGhpcy4kZWwuYXBwZW5kKHRoaXMuZT0KZGl0b3Jf
dmlldy4kZWwpO2lmKCF0aGlzLnN0b3JhZ2UubG9hZCgpKXRoaXMuZ28oImVkaXRvciIpO2Vsc2V7
dGhpcy5nbygidmllPQp3ZXIiKTt2YXIgbj0zRHRoaXM7dGhpcy5kZWZlcnJlZC5leGVjdXRlKGZ1
bmN0aW9uKCl7bi5jaGFydC50cmlnZ2VyKCJyZWRyYXc9CiIpfSl9fSxnbzpmdW5jdGlvbihlKXsk
KCIudG9vbHRpcCIpLmhpZGUoKTtzd2l0Y2goZSl7Y2FzZSJlZGl0b3IiOnRoaXMuZWRpdD0Kb3Jf
dmlldy5zaG93KCksdGhpcy52aWV3ZXJfdmlldy5oaWRlKCk7YnJlYWs7Y2FzZSJ2aWV3ZXIiOnRo
aXMuZWRpdG9yX3ZpZXcuPQpoaWRlKCksdGhpcy52aWV3ZXJfdmlldy5zaG93KCl9fSxjaGFydFBh
dGg6ZnVuY3Rpb24oZSl7dmFyIHQ9M0RlLnNwbGl0KC9fKC49CispLyk7cmV0dXJuIHQubGVuZ3Ro
Pj0zRDI/dFswXSsiLyIrdFsxXTooY29uc29sZS5kZWJ1ZygiRkFJTEVEIEFwcDpjaGFydFBhdD0K
aCgpIC0gSW52YWxpZCBmb3JtYXQ6ICIrZSksdW5kZWZpbmVkKX19KX0pOwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKK2RlZmluZSgibXZjL3VpL3VpLW1vZGFsIixbXSxmdW5jdGlvbigpe3Zh
ciBlPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe2VsTWFpPQpuOiJib2R5IixvcHRpb25zRGVmYXVs
dDp7dGl0bGU6InVpLW1vZGFsIixib2R5OiIiLGJhY2tkcm9wOiEwLGhlaWdodDpudWxsLHc9Cmlk
dGg6bnVsbCxjbG9zaW5nX2V2ZW50czohMSxjbG9zaW5nX2NhbGxiYWNrOm51bGx9LGJ1dHRvbkxp
c3Q6e30saW5pdGlhbGl6ZT0KOmZ1bmN0aW9uKGUpe2UmJnRoaXMuX2NyZWF0ZShlKX0sc2hvdzpm
dW5jdGlvbihlKXt0aGlzLmluaXRpYWxpemUoZSksdGhpcy5vPQpwdGlvbnMuaGVpZ2h0Pyh0aGlz
LiRib2R5LmNzcygiaGVpZ2h0Iix0aGlzLm9wdGlvbnMuaGVpZ2h0KSx0aGlzLiRib2R5LmNzcyg9
CiJvdmVyZmxvdyIsImhpZGRlbiIpKTp0aGlzLiRib2R5LmNzcygibWF4LWhlaWdodCIsJCh3aW5k
b3cpLmhlaWdodCgpLzIpLHRoaT0Kcy5vcHRpb25zLndpZHRoJiZ0aGlzLiRkaWFsb2cuY3NzKCJ3
aWR0aCIsdGhpcy5vcHRpb25zLndpZHRoKSx0aGlzLnZpc2libGU/PQp0aGlzLiRlbC5zaG93KCk6
dGhpcy4kZWwuZmFkZUluKCJmYXN0IiksdGhpcy52aXNpYmxlPTNEITB9LGhpZGU6ZnVuY3Rpb24o
KXs9CnRoaXMudmlzaWJsZT0zRCExLHRoaXMuJGVsLmZhZGVPdXQoImZhc3QiKSx0aGlzLm9wdGlv
bnMuY2xvc2luZ19jYWxsYmFjayYmdD0KaGlzLm9wdGlvbnMuY2xvc2luZ19jYWxsYmFjaygpfSxl
bmFibGVCdXR0b246ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLmJ1dHRvPQpuTGlzdFtlXTt0aGlz
LiRidXR0b25zLmZpbmQoIiMiK3QpLnByb3AoImRpc2FibGVkIiwhMSl9LGRpc2FibGVCdXR0b246
ZnVuY3Q9CmlvbihlKXt2YXIgdD0zRHRoaXMuYnV0dG9uTGlzdFtlXTt0aGlzLiRidXR0b25zLmZp
bmQoIiMiK3QpLnByb3AoImRpc2FibGVkIj0KLCEwKX0sc2hvd0J1dHRvbjpmdW5jdGlvbihlKXt2
YXIgdD0zRHRoaXMuYnV0dG9uTGlzdFtlXTt0aGlzLiRidXR0b25zLmZpbmQoPQoiIyIrdCkuc2hv
dygpfSxoaWRlQnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy5idXR0b25MaXN0W2VdO3Ro
aXMuJGJ1dHQ9Cm9ucy5maW5kKCIjIit0KS5oaWRlKCl9LGdldEJ1dHRvbjpmdW5jdGlvbihlKXt2
YXIgdD0zRHRoaXMuYnV0dG9uTGlzdFtlXTtyZT0KdHVybiB0aGlzLiRidXR0b25zLmZpbmQoIiMi
K3QpfSxzY3JvbGxUb3A6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kYm9keS5zY3JvPQpsbFRvcCgp
fSxfY3JlYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpczt0aGlzLm9wdGlvbnM9M0RfLmRlZmF1
bHRzKGUsdGhpcy49Cm9wdGlvbnNEZWZhdWx0KSx0aGlzLm9wdGlvbnMuYm9keT0zRD0zRCJwcm9n
cmVzcyImJih0aGlzLm9wdGlvbnMuYm9keT0zRCQoJz0KPGRpdiBjbGFzcz0zRCJwcm9ncmVzcyBw
cm9ncmVzcy1zdHJpcGVkIGFjdGl2ZSI+PGRpdiBjbGFzcz0zRCJwcm9ncmVzcy1iYXIgPQpwcm9n
cmVzcy1iYXItaW5mbyIgc3R5bGU9M0Qid2lkdGg6MTAwJSI+PC9kaXY+PC9kaXY+JykpLHRoaXMu
JGVsJiYodGhpcy4kZWw9Ci5yZW1vdmUoKSwkKGRvY3VtZW50KS5vZmYoImtleXVwLnVpLW1vZGFs
IikpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZT0KKHRoaXMub3B0aW9ucy50aXRsZSkp
LHRoaXMuJGRpYWxvZz0zRHRoaXMuJGVsLmZpbmQoIi5tb2RhbC1kaWFsb2ciKSx0aGlzLiRiPQpv
ZHk9M0R0aGlzLiRlbC5maW5kKCIubW9kYWwtYm9keSIpLHRoaXMuJGZvb3Rlcj0zRHRoaXMuJGVs
LmZpbmQoIi5tb2RhbC1mb289CnRlciIpLHRoaXMuJGJ1dHRvbnM9M0R0aGlzLiRlbC5maW5kKCIu
YnV0dG9ucyIpLHRoaXMuJGJhY2tkcm9wPTNEdGhpcy4kZWwuZj0KaW5kKCIubW9kYWwtYmFja2Ry
b3AiKSx0aGlzLiRib2R5Lmh0bWwodGhpcy5vcHRpb25zLmJvZHkpLHRoaXMub3B0aW9ucy5iYWNr
PQpkcm9wfHx0aGlzLiRiYWNrZHJvcC5yZW1vdmVDbGFzcygiaW4iKTtpZih0aGlzLm9wdGlvbnMu
YnV0dG9ucyl7dGhpcy5idXR0b249Ckxpc3Q9M0R7fTt2YXIgbj0zRDA7JC5lYWNoKHRoaXMub3B0
aW9ucy5idXR0b25zLGZ1bmN0aW9uKGUscil7dmFyIGk9M0QiYnV0dD0Kb24tIituKys7dC4kYnV0
dG9ucy5hcHBlbmQoJCgnPGJ1dHRvbiBpZD0zRCInK2krJyI+PC9idXR0b24+JykudGV4dChlKS5j
bGljPQprKHIpKS5hcHBlbmQoIiAiKSx0LmJ1dHRvbkxpc3RbZV09M0RpfSl9ZWxzZSB0aGlzLiRm
b290ZXIuaGlkZSgpOyQodGhpcy5lbE09CmFpbikuYXBwZW5kKCQodGhpcy5lbCkpLHRoaXMub3B0
aW9ucy5jbG9zaW5nX2V2ZW50cyYmKCQoZG9jdW1lbnQpLm9uKCJrZXl1cD0KLnVpLW1vZGFsIixm
dW5jdGlvbihlKXtlLmtleUNvZGU9M0Q9M0QyNyYmdC5oaWRlKCl9KSx0aGlzLiRlbC5maW5kKCIu
bW9kYWwtPQpiYWNrZHJvcCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXt0LmhpZGUoKX0pKX0sX3Rl
bXBsYXRlOmZ1bmN0aW9uKGUpe3JldHVybic9CjxkaXYgY2xhc3M9M0QidWktbW9kYWwgbW9kYWwi
PjxkaXYgY2xhc3M9M0QibW9kYWwtYmFja2Ryb3AgZmFkZSBpbiIgc3R5bGU9Cj0zRCJ6LWluZGV4
OiAtMTsiPjwvZGl2PjxkaXYgY2xhc3M9M0QibW9kYWwtZGlhbG9nIj48ZGl2IGNsYXNzPTNEIm1v
ZGFsLWNvbj0KdGVudCI+PGRpdiBjbGFzcz0zRCJtb2RhbC1oZWFkZXIiPjxidXR0b24gdHlwZT0z
RCJidXR0b24iIGNsYXNzPTNEImNsb3NlIiBzPQp0eWxlPTNEImRpc3BsYXk6IG5vbmU7Ij4mdGlt
ZXM7PC9idXR0b24+PGg0IGNsYXNzPTNEInRpdGxlIj4nK2UrIjwvaDQ+IisiPC89CmRpdj4iKyc8
ZGl2IGNsYXNzPTNEIm1vZGFsLWJvZHkiIHN0eWxlPTNEInBvc2l0aW9uOiBzdGF0aWM7Ij48L2Rp
dj4nKyc8ZGl2ID0KY2xhc3M9M0QibW9kYWwtZm9vdGVyIj4nKyc8ZGl2IGNsYXNzPTNEImJ1dHRv
bnMiIHN0eWxlPTNEImZsb2F0OiByaWdodDsiPjwvPQpkaXY+JysiPC9kaXY+IisiPC9kaXYiKyI8
L2Rpdj4iKyI8L2Rpdj4ifX0pO3JldHVybntWaWV3OmV9fSksZnVuY3Rpb24oKXt2YXI9CiBlPTNE
dGhpcyx0PTNEZS5fLG49M0RBcnJheS5wcm90b3R5cGUscj0zRE9iamVjdC5wcm90b3R5cGUsaT0z
REZ1bmN0aW9uLnBybz0KdG90eXBlLHM9M0RuLnB1c2gsbz0zRG4uc2xpY2UsdT0zRG4uY29uY2F0
LGE9M0RyLnRvU3RyaW5nLGY9M0RyLmhhc093blByb3BlPQpydHksbD0zREFycmF5LmlzQXJyYXks
Yz0zRE9iamVjdC5rZXlzLGg9M0RpLmJpbmQscD0zRGZ1bmN0aW9uKGUpe2lmKGUgaW5zdGE9Cm5j
ZW9mIHApcmV0dXJuIGU7aWYoISh0aGlzIGluc3RhbmNlb2YgcCkpcmV0dXJuIG5ldyBwKGUpO3Ro
aXMuX3dyYXBwZWQ9M0RlfT0KO3R5cGVvZiBleHBvcnRzIT0zRCJ1bmRlZmluZWQiPyh0eXBlb2Yg
bW9kdWxlIT0zRCJ1bmRlZmluZWQiJiZtb2R1bGUuZXhwb3J0PQpzJiYoZXhwb3J0cz0zRG1vZHVs
ZS5leHBvcnRzPTNEcCksZXhwb3J0cy5fPTNEcCk6ZS5fPTNEcCxwLlZFUlNJT049M0QiMS43LjA9
CiI7dmFyIGQ9M0RmdW5jdGlvbihlLHQsbil7aWYodD0zRD0zRD0zRHZvaWQgMClyZXR1cm4gZTtz
d2l0Y2gobj0zRD0zRG51bGw/Mz0KOm4pe2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJu
IGUuY2FsbCh0LG4pfTtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKG4sPQpyKXtyZXR1cm4gZS5jYWxs
KHQsbixyKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihuLHIsaSl7cmV0dXJuIGUuY2FsbCh0LG4s
ciw9CmkpfTtjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKG4scixpLHMpe3JldHVybiBlLmNhbGwodCxu
LHIsaSxzKX19cmV0dXJuIGZ1bmN0aT0Kb24oKXtyZXR1cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9
fTtwLml0ZXJhdGVlPTNEZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPTNEPQo9M0RudWxsP3AuaWRl
bnRpdHk6cC5pc0Z1bmN0aW9uKGUpP2QoZSx0LG4pOnAuaXNPYmplY3QoZSk/cC5tYXRjaGVzKGUp
OnAucHI9Cm9wZXJ0eShlKX0scC5lYWNoPTNEcC5mb3JFYWNoPTNEZnVuY3Rpb24oZSx0LG4pe2lm
KGU9M0Q9M0RudWxsKXJldHVybiBlO3Q9Cj0zRGQodCxuKTt2YXIgcixpPTNEZS5sZW5ndGg7aWYo
aT0zRD0zRD0zRCtpKWZvcihyPTNEMDtyPGk7cisrKXQoZVtyXSxyLGUpOz0KZWxzZXt2YXIgcz0z
RHAua2V5cyhlKTtmb3Iocj0zRDAsaT0zRHMubGVuZ3RoO3I8aTtyKyspdChlW3Nbcl1dLHNbcl0s
ZSl9cmV0PQp1cm4gZX0scC5tYXA9M0RwLmNvbGxlY3Q9M0RmdW5jdGlvbihlLHQsbil7aWYoZT0z
RD0zRG51bGwpcmV0dXJuW107dD0zRHAuaXQ9CmVyYXRlZSh0LG4pO3ZhciByPTNEZS5sZW5ndGgh
PTNEPTNEK2UubGVuZ3RoJiZwLmtleXMoZSksaT0zRChyfHxlKS5sZW5ndGgscz0KPTNEQXJyYXko
aSksbztmb3IodmFyIHU9M0QwO3U8aTt1Kyspbz0zRHI/clt1XTp1LHNbdV09M0R0KGVbb10sbyxl
KTtyZXR1cm4gPQpzfTt2YXIgdj0zRCJSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0
aWFsIHZhbHVlIjtwLnJlZHVjZT0zRHAuZm9sZGw9Cj0zRHAuaW5qZWN0PTNEZnVuY3Rpb24oZSx0
LG4scil7ZT0zRD0zRG51bGwmJihlPTNEW10pLHQ9M0RkKHQsciw0KTt2YXIgaT0zRD0KZS5sZW5n
dGghPTNEPTNEK2UubGVuZ3RoJiZwLmtleXMoZSkscz0zRChpfHxlKS5sZW5ndGgsbz0zRDAsdTtp
Zihhcmd1bWVudHMuPQpsZW5ndGg8Myl7aWYoIXMpdGhyb3cgbmV3IFR5cGVFcnJvcih2KTtuPTNE
ZVtpP2lbbysrXTpvKytdfWZvcig7bzxzO28rKyl1PQo9M0RpP2lbb106byxuPTNEdChuLGVbdV0s
dSxlKTtyZXR1cm4gbn0scC5yZWR1Y2VSaWdodD0zRHAuZm9sZHI9M0RmdW5jdGlvbig9CmUsdCxu
LHIpe2U9M0Q9M0RudWxsJiYoZT0zRFtdKSx0PTNEZCh0LHIsNCk7dmFyIGk9M0RlLmxlbmd0aCE9
M0Q9M0QrZS5sZW5ndD0KaCYmcC5rZXlzKGUpLHM9M0QoaXx8ZSkubGVuZ3RoLG87aWYoYXJndW1l
bnRzLmxlbmd0aDwzKXtpZighcyl0aHJvdyBuZXcgVHlwPQplRXJyb3Iodik7bj0zRGVbaT9pWy0t
c106LS1zXX13aGlsZShzLS0pbz0zRGk/aVtzXTpzLG49M0R0KG4sZVtvXSxvLGUpO3JldHU9CnJu
IG59LHAuZmluZD0zRHAuZGV0ZWN0PTNEZnVuY3Rpb24oZSx0LG4pe3ZhciByO3JldHVybiB0PTNE
cC5pdGVyYXRlZSh0LG4pLD0KcC5zb21lKGUsZnVuY3Rpb24oZSxuLGkpe2lmKHQoZSxuLGkpKXJl
dHVybiByPTNEZSwhMH0pLHJ9LHAuZmlsdGVyPTNEcC5zZWxlPQpjdD0zRGZ1bmN0aW9uKGUsdCxu
KXt2YXIgcj0zRFtdO3JldHVybiBlPTNEPTNEbnVsbD9yOih0PTNEcC5pdGVyYXRlZSh0LG4pLHA9
Ci5lYWNoKGUsZnVuY3Rpb24oZSxuLGkpe3QoZSxuLGkpJiZyLnB1c2goZSl9KSxyKX0scC5yZWpl
Y3Q9M0RmdW5jdGlvbihlLHQsbj0KKXtyZXR1cm4gcC5maWx0ZXIoZSxwLm5lZ2F0ZShwLml0ZXJh
dGVlKHQpKSxuKX0scC5ldmVyeT0zRHAuYWxsPTNEZnVuY3Rpb24oPQplLHQsbil7aWYoZT0zRD0z
RG51bGwpcmV0dXJuITA7dD0zRHAuaXRlcmF0ZWUodCxuKTt2YXIgcj0zRGUubGVuZ3RoIT0zRD0z
RCs9CmUubGVuZ3RoJiZwLmtleXMoZSksaT0zRChyfHxlKS5sZW5ndGgscyxvO2ZvcihzPTNEMDtz
PGk7cysrKXtvPTNEcj9yW3NdOnM7aT0KZighdChlW29dLG8sZSkpcmV0dXJuITF9cmV0dXJuITB9
LHAuc29tZT0zRHAuYW55PTNEZnVuY3Rpb24oZSx0LG4pe2lmKGU9M0Q9Cj0zRG51bGwpcmV0dXJu
ITE7dD0zRHAuaXRlcmF0ZWUodCxuKTt2YXIgcj0zRGUubGVuZ3RoIT0zRD0zRCtlLmxlbmd0aCYm
cC5rZT0KeXMoZSksaT0zRChyfHxlKS5sZW5ndGgscyxvO2ZvcihzPTNEMDtzPGk7cysrKXtvPTNE
cj9yW3NdOnM7aWYodChlW29dLG8sZSkpPQpyZXR1cm4hMH1yZXR1cm4hMX0scC5jb250YWlucz0z
RHAuaW5jbHVkZT0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9M0Q9M0RudWw9Cmw/ITE6KGUubGVu
Z3RoIT0zRD0zRCtlLmxlbmd0aCYmKGU9M0RwLnZhbHVlcyhlKSkscC5pbmRleE9mKGUsdCk+PTNE
MCl9LHAuaT0KbnZva2U9M0RmdW5jdGlvbihlLHQpe3ZhciBuPTNEby5jYWxsKGFyZ3VtZW50cywy
KSxyPTNEcC5pc0Z1bmN0aW9uKHQpO3JldHVyPQpuIHAubWFwKGUsZnVuY3Rpb24oZSl7cmV0dXJu
KHI/dDplW3RdKS5hcHBseShlLG4pfSl9LHAucGx1Y2s9M0RmdW5jdGlvbihlLHQ9Cil7cmV0dXJu
IHAubWFwKGUscC5wcm9wZXJ0eSh0KSl9LHAud2hlcmU9M0RmdW5jdGlvbihlLHQpe3JldHVybiBw
LmZpbHRlcihlLD0KcC5tYXRjaGVzKHQpKX0scC5maW5kV2hlcmU9M0RmdW5jdGlvbihlLHQpe3Jl
dHVybiBwLmZpbmQoZSxwLm1hdGNoZXModCkpfSxwPQoubWF4PTNEZnVuY3Rpb24oZSx0LG4pe3Zh
ciByPTNELUluZmluaXR5LGk9M0QtSW5maW5pdHkscyxvO2lmKHQ9M0Q9M0RudWxsJiY9CmUhPTNE
bnVsbCl7ZT0zRGUubGVuZ3RoPTNEPTNEPTNEK2UubGVuZ3RoP2U6cC52YWx1ZXMoZSk7Zm9yKHZh
ciB1PTNEMCxhPTNEZT0KLmxlbmd0aDt1PGE7dSsrKXM9M0RlW3VdLHM+ciYmKHI9M0RzKX1lbHNl
IHQ9M0RwLml0ZXJhdGVlKHQsbikscC5lYWNoKGUsZnVuPQpjdGlvbihlLG4scyl7bz0zRHQoZSxu
LHMpO2lmKG8+aXx8bz0zRD0zRD0zRC1JbmZpbml0eSYmcj0zRD0zRD0zRC1JbmZpbml0eSk9CnI9
M0RlLGk9M0RvfSk7cmV0dXJuIHJ9LHAubWluPTNEZnVuY3Rpb24oZSx0LG4pe3ZhciByPTNESW5m
aW5pdHksaT0zREluZmluaT0KdHkscyxvO2lmKHQ9M0Q9M0RudWxsJiZlIT0zRG51bGwpe2U9M0Rl
Lmxlbmd0aD0zRD0zRD0zRCtlLmxlbmd0aD9lOnAudmFsdWVzPQooZSk7Zm9yKHZhciB1PTNEMCxh
PTNEZS5sZW5ndGg7dTxhO3UrKylzPTNEZVt1XSxzPHImJihyPTNEcyl9ZWxzZSB0PTNEcC5pdGU9
CnJhdGVlKHQsbikscC5lYWNoKGUsZnVuY3Rpb24oZSxuLHMpe289M0R0KGUsbixzKTtpZihvPGl8
fG89M0Q9M0Q9M0RJbmZpbml0eT0KJiZyPTNEPTNEPTNESW5maW5pdHkpcj0zRGUsaT0zRG99KTty
ZXR1cm4gcn0scC5zaHVmZmxlPTNEZnVuY3Rpb24oZSl7dmFyIHQ9Cj0zRGUmJmUubGVuZ3RoPTNE
PTNEPTNEK2UubGVuZ3RoP2U6cC52YWx1ZXMoZSksbj0zRHQubGVuZ3RoLHI9M0RBcnJheShuKTtm
bz0Kcih2YXIgaT0zRDAscztpPG47aSsrKXM9M0RwLnJhbmRvbSgwLGkpLHMhPTNEPTNEaSYmKHJb
aV09M0RyW3NdKSxyW3NdPTNEdFtpPQpdO3JldHVybiByfSxwLnNhbXBsZT0zRGZ1bmN0aW9uKGUs
dCxuKXtyZXR1cm4gdD0zRD0zRG51bGx8fG4/KGUubGVuZ3RoIT0zRD0KPTNEK2UubGVuZ3RoJiYo
ZT0zRHAudmFsdWVzKGUpKSxlW3AucmFuZG9tKGUubGVuZ3RoLTEpXSk6cC5zaHVmZmxlKGUpLnNs
aWNlPQooMCxNYXRoLm1heCgwLHQpKX0scC5zb3J0Qnk9M0RmdW5jdGlvbihlLHQsbil7cmV0dXJu
IHQ9M0RwLml0ZXJhdGVlKHQsbikscC49CnBsdWNrKHAubWFwKGUsZnVuY3Rpb24oZSxuLHIpe3Jl
dHVybnt2YWx1ZTplLGluZGV4Om4sY3JpdGVyaWE6dChlLG4scil9fSkucz0Kb3J0KGZ1bmN0aW9u
KGUsdCl7dmFyIG49M0RlLmNyaXRlcmlhLHI9M0R0LmNyaXRlcmlhO2lmKG4hPTNEPTNEcil7aWYo
bj5yfHxuPQo9M0Q9M0Q9M0R2b2lkIDApcmV0dXJuIDE7aWYobjxyfHxyPTNEPTNEPTNEdm9pZCAw
KXJldHVybi0xfXJldHVybiBlLmluZGV4LXQ9Ci5pbmRleH0pLCJ2YWx1ZSIpfTt2YXIgbT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LG4scil7dmFyIGk9M0R7fTtyZT0KdHVybiBuPTNE
cC5pdGVyYXRlZShuLHIpLHAuZWFjaCh0LGZ1bmN0aW9uKHIscyl7dmFyIG89M0RuKHIscyx0KTtl
KGkscixvKX0pPQosaX19O3AuZ3JvdXBCeT0zRG0oZnVuY3Rpb24oZSx0LG4pe3AuaGFzKGUsbik/
ZVtuXS5wdXNoKHQpOmVbbl09M0RbdF19KSxwLmk9Cm5kZXhCeT0zRG0oZnVuY3Rpb24oZSx0LG4p
e2Vbbl09M0R0fSkscC5jb3VudEJ5PTNEbShmdW5jdGlvbihlLHQsbil7cC5oYXMoZT0KLG4pP2Vb
bl0rKzplW25dPTNEMX0pLHAuc29ydGVkSW5kZXg9M0RmdW5jdGlvbihlLHQsbixyKXtuPTNEcC5p
dGVyYXRlZShuLHIsPQoxKTt2YXIgaT0zRG4odCkscz0zRDAsbz0zRGUubGVuZ3RoO3doaWxlKHM8
byl7dmFyIHU9M0RzK28+Pj4xO24oZVt1XSk8aT9zPQo9M0R1KzE6bz0zRHV9cmV0dXJuIHN9LHAu
dG9BcnJheT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlP3AuaXNBcnJheShlKT9vLmNhbGw9CihlKTpl
Lmxlbmd0aD0zRD0zRD0zRCtlLmxlbmd0aD9wLm1hcChlLHAuaWRlbnRpdHkpOnAudmFsdWVzKGUp
OltdfSxwLnNpemU9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBlPTNEPTNEbnVsbD8wOmUubGVuZ3Ro
PTNEPTNEPTNEK2UubGVuZ3RoP2UubGVuZ3RoOnAuaz0KZXlzKGUpLmxlbmd0aH0scC5wYXJ0aXRp
b249M0RmdW5jdGlvbihlLHQsbil7dD0zRHAuaXRlcmF0ZWUodCxuKTt2YXIgcj0zRFtdPQosaT0z
RFtdO3JldHVybiBwLmVhY2goZSxmdW5jdGlvbihlLG4scyl7KHQoZSxuLHMpP3I6aSkucHVzaChl
KX0pLFtyLGldfSxwLmY9Cmlyc3Q9M0RwLmhlYWQ9M0RwLnRha2U9M0RmdW5jdGlvbihlLHQsbil7
cmV0dXJuIGU9M0Q9M0RudWxsP3ZvaWQgMDp0PTNEPTNEbj0KdWxsfHxuP2VbMF06dDwwP1tdOm8u
Y2FsbChlLDAsdCl9LHAuaW5pdGlhbD0zRGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gby5jYWxsPQoo
ZSwwLE1hdGgubWF4KDAsZS5sZW5ndGgtKHQ9M0Q9M0RudWxsfHxuPzE6dCkpKX0scC5sYXN0PTNE
ZnVuY3Rpb24oZSx0LG4pe3I9CmV0dXJuIGU9M0Q9M0RudWxsP3ZvaWQgMDp0PTNEPTNEbnVsbHx8
bj9lW2UubGVuZ3RoLTFdOm8uY2FsbChlLE1hdGgubWF4KGUubD0KZW5ndGgtdCwwKSl9LHAucmVz
dD0zRHAudGFpbD0zRHAuZHJvcD0zRGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gby5jYWxsKGUsdD0K
PTNEPTNEbnVsbHx8bj8xOnQpfSxwLmNvbXBhY3Q9M0RmdW5jdGlvbihlKXtyZXR1cm4gcC5maWx0
ZXIoZSxwLmlkZW50aXR5KX07PQp2YXIgZz0zRGZ1bmN0aW9uKGUsdCxuLHIpe2lmKHQmJnAuZXZl
cnkoZSxwLmlzQXJyYXkpKXJldHVybiB1LmFwcGx5KHIsZSk7Zm89CnIodmFyIGk9M0QwLG89M0Rl
Lmxlbmd0aDtpPG87aSsrKXt2YXIgYT0zRGVbaV07IXAuaXNBcnJheShhKSYmIXAuaXNBcmd1bWVu
dD0KcyhhKT9ufHxyLnB1c2goYSk6dD9zLmFwcGx5KHIsYSk6ZyhhLHQsbixyKX1yZXR1cm4gcn07
cC5mbGF0dGVuPTNEZnVuY3Rpb24oPQplLHQpe3JldHVybiBnKGUsdCwhMSxbXSl9LHAud2l0aG91
dD0zRGZ1bmN0aW9uKGUpe3JldHVybiBwLmRpZmZlcmVuY2UoZSxvLmM9CmFsbChhcmd1bWVudHMs
MSkpfSxwLnVuaXE9M0RwLnVuaXF1ZT0zRGZ1bmN0aW9uKGUsdCxuLHIpe2lmKGU9M0Q9M0RudWxs
KXJldD0KdXJuW107cC5pc0Jvb2xlYW4odCl8fChyPTNEbixuPTNEdCx0PTNEITEpLG4hPTNEbnVs
bCYmKG49M0RwLml0ZXJhdGVlKG4scikpPQo7dmFyIGk9M0RbXSxzPTNEW107Zm9yKHZhciBvPTNE
MCx1PTNEZS5sZW5ndGg7bzx1O28rKyl7dmFyIGE9M0RlW29dO2lmKHQpKCE9Cm98fHMhPTNEPTNE
YSkmJmkucHVzaChhKSxzPTNEYTtlbHNlIGlmKG4pe3ZhciBmPTNEbihhLG8sZSk7cC5pbmRleE9m
KHMsZik8MD0KJiYocy5wdXNoKGYpLGkucHVzaChhKSl9ZWxzZSBwLmluZGV4T2YoaSxhKTwwJiZp
LnB1c2goYSl9cmV0dXJuIGl9LHAudW5pb249Cj0zRGZ1bmN0aW9uKCl7cmV0dXJuIHAudW5pcShn
KGFyZ3VtZW50cywhMCwhMCxbXSkpfSxwLmludGVyc2VjdGlvbj0zRGZ1bmN0aT0Kb24oZSl7aWYo
ZT0zRD0zRG51bGwpcmV0dXJuW107dmFyIHQ9M0RbXSxuPTNEYXJndW1lbnRzLmxlbmd0aDtmb3Io
dmFyIHI9M0QwPQosaT0zRGUubGVuZ3RoO3I8aTtyKyspe3ZhciBzPTNEZVtyXTtpZihwLmNvbnRh
aW5zKHQscykpY29udGludWU7Zm9yKHZhciBvPQo9M0QxO288bjtvKyspaWYoIXAuY29udGFpbnMo
YXJndW1lbnRzW29dLHMpKWJyZWFrO289M0Q9M0Q9M0RuJiZ0LnB1c2gocyl9cmU9CnR1cm4gdH0s
cC5kaWZmZXJlbmNlPTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0RnKG8uY2FsbChhcmd1bWVudHMsMSks
ITAsITAsW10pOz0KcmV0dXJuIHAuZmlsdGVyKGUsZnVuY3Rpb24oZSl7cmV0dXJuIXAuY29udGFp
bnModCxlKX0pfSxwLnppcD0zRGZ1bmN0aW9uKGUpPQp7aWYoZT0zRD0zRG51bGwpcmV0dXJuW107
dmFyIHQ9M0RwLm1heChhcmd1bWVudHMsImxlbmd0aCIpLmxlbmd0aCxuPTNEQXJyYXk9Cih0KTtm
b3IodmFyIHI9M0QwO3I8dDtyKyspbltyXT0zRHAucGx1Y2soYXJndW1lbnRzLHIpO3JldHVybiBu
fSxwLm9iamVjdD0zRD0KZnVuY3Rpb24oZSx0KXtpZihlPTNEPTNEbnVsbClyZXR1cm57fTt2YXIg
bj0zRHt9O2Zvcih2YXIgcj0zRDAsaT0zRGUubGVuZ3RoPQo7cjxpO3IrKyl0P25bZVtyXV09M0R0
W3JdOm5bZVtyXVswXV09M0RlW3JdWzFdO3JldHVybiBufSxwLmluZGV4T2Y9M0RmdW5jdGk9Cm9u
KGUsdCxuKXtpZihlPTNEPTNEbnVsbClyZXR1cm4tMTt2YXIgcj0zRDAsaT0zRGUubGVuZ3RoO2lm
KG4pe2lmKHR5cGVvZiBuIT0KPTNEIm51bWJlciIpcmV0dXJuIHI9M0RwLnNvcnRlZEluZGV4KGUs
dCksZVtyXT0zRD0zRD0zRHQ/cjotMTtyPTNEbjwwP01hdGguPQptYXgoMCxpK24pOm59Zm9yKDty
PGk7cisrKWlmKGVbcl09M0Q9M0Q9M0R0KXJldHVybiByO3JldHVybi0xfSxwLmxhc3RJbmRleE89
CmY9M0RmdW5jdGlvbihlLHQsbil7aWYoZT0zRD0zRG51bGwpcmV0dXJuLTE7dmFyIHI9M0RlLmxl
bmd0aDt0eXBlb2Ygbj0zRD0zRD0KIm51bWJlciImJihyPTNEbjwwP3IrbisxOk1hdGgubWluKHIs
bisxKSk7d2hpbGUoLS1yPj0zRDApaWYoZVtyXT0zRD0zRD0zRHQpPQpyZXR1cm4gcjtyZXR1cm4t
MX0scC5yYW5nZT0zRGZ1bmN0aW9uKGUsdCxuKXthcmd1bWVudHMubGVuZ3RoPD0zRDEmJih0PTNE
ZXw9CnwwLGU9M0QwKSxuPTNEbnx8MTt2YXIgcj0zRE1hdGgubWF4KE1hdGguY2VpbCgodC1lKS9u
KSwwKSxpPTNEQXJyYXkocik7Zm9yKD0KdmFyIHM9M0QwO3M8cjtzKyssZSs9M0RuKWlbc109M0Rl
O3JldHVybiBpfTt2YXIgeT0zRGZ1bmN0aW9uKCl7fTtwLmJpbmQ9M0RmPQp1bmN0aW9uKGUsdCl7
dmFyIG4scjtpZihoJiZlLmJpbmQ9M0Q9M0Q9M0RoKXJldHVybiBoLmFwcGx5KGUsby5jYWxsKGFy
Z3VtZW49CnRzLDEpKTtpZighcC5pc0Z1bmN0aW9uKGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkJp
bmQgbXVzdCBiZSBjYWxsZWQgb24gYSBmdT0KbmN0aW9uIik7cmV0dXJuIG49M0RvLmNhbGwoYXJn
dW1lbnRzLDIpLHI9M0RmdW5jdGlvbigpe2lmKHRoaXMgaW5zdGFuY2VvZiByPQope3kucHJvdG90
eXBlPTNEZS5wcm90b3R5cGU7dmFyIGk9M0RuZXcgeTt5LnByb3RvdHlwZT0zRG51bGw7dmFyIHM9
M0RlLmFwcGw9CnkoaSxuLmNvbmNhdChvLmNhbGwoYXJndW1lbnRzKSkpO3JldHVybiBwLmlzT2Jq
ZWN0KHMpP3M6aX1yZXR1cm4gZS5hcHBseSh0LD0Kbi5jb25jYXQoby5jYWxsKGFyZ3VtZW50cykp
KX0scn0scC5wYXJ0aWFsPTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0RvLmNhbGwoYXJnPQp1bWVudHMs
MSk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49M0QwLHI9M0R0LnNsaWNlKCk7Zm9yKHZhciBpPTNE
MCxzPTNEci5sZW49Cmd0aDtpPHM7aSsrKXJbaV09M0Q9M0Q9M0RwJiYocltpXT0zRGFyZ3VtZW50
c1tuKytdKTt3aGlsZShuPGFyZ3VtZW50cy5sZW5ndD0KaClyLnB1c2goYXJndW1lbnRzW24rK10p
O3JldHVybiBlLmFwcGx5KHRoaXMscil9fSxwLmJpbmRBbGw9M0RmdW5jdGlvbihlKXt2PQphciB0
LG49M0Rhcmd1bWVudHMubGVuZ3RoLHI7aWYobjw9M0QxKXRocm93IG5ldyBFcnJvcigiYmluZEFs
bCBtdXN0IGJlIHBhc3M9CmVkIGZ1bmN0aW9uIG5hbWVzIik7Zm9yKHQ9M0QxO3Q8bjt0Kyspcj0z
RGFyZ3VtZW50c1t0XSxlW3JdPTNEcC5iaW5kKGVbcl0sZT0KKTtyZXR1cm4gZX0scC5tZW1vaXpl
PTNEZnVuY3Rpb24oZSx0KXt2YXIgbj0zRGZ1bmN0aW9uKHIpe3ZhciBpPTNEbi5jYWNoZSxzPQo9
M0R0P3QuYXBwbHkodGhpcyxhcmd1bWVudHMpOnI7cmV0dXJuIHAuaGFzKGkscyl8fChpW3NdPTNE
ZS5hcHBseSh0aGlzLGFyZ3U9Cm1lbnRzKSksaVtzXX07cmV0dXJuIG4uY2FjaGU9M0R7fSxufSxw
LmRlbGF5PTNEZnVuY3Rpb24oZSx0KXt2YXIgbj0zRG8uY2FsbD0KKGFyZ3VtZW50cywyKTtyZXR1
cm4gc2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KG51bGwsbil9LHQpfSxwLmRl
PQpmZXI9M0RmdW5jdGlvbihlKXtyZXR1cm4gcC5kZWxheS5hcHBseShwLFtlLDFdLmNvbmNhdChv
LmNhbGwoYXJndW1lbnRzLDEpKSk9Cn0scC50aHJvdHRsZT0zRGZ1bmN0aW9uKGUsdCxuKXt2YXIg
cixpLHMsbz0zRG51bGwsdT0zRDA7bnx8KG49M0R7fSk7dmFyIGE9Cj0zRGZ1bmN0aW9uKCl7dT0z
RG4ubGVhZGluZz0zRD0zRD0zRCExPzA6cC5ub3coKSxvPTNEbnVsbCxzPTNEZS5hcHBseShyLGkp
LD0Kb3x8KHI9M0RpPTNEbnVsbCl9O3JldHVybiBmdW5jdGlvbigpe3ZhciBmPTNEcC5ub3coKTsh
dSYmbi5sZWFkaW5nPTNEPTNEPTNEPQohMSYmKHU9M0RmKTt2YXIgbD0zRHQtKGYtdSk7cmV0dXJu
IHI9M0R0aGlzLGk9M0Rhcmd1bWVudHMsbDw9M0QwfHxsPnQ/KGNsZWE9CnJUaW1lb3V0KG8pLG89
M0RudWxsLHU9M0RmLHM9M0RlLmFwcGx5KHIsaSksb3x8KHI9M0RpPTNEbnVsbCkpOiFvJiZuLnRy
YWlsaT0KbmchPTNEPTNEITEmJihvPTNEc2V0VGltZW91dChhLGwpKSxzfX0scC5kZWJvdW5jZT0z
RGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPQoscyxvLHUsYT0zRGZ1bmN0aW9uKCl7dmFyIGY9M0Rw
Lm5vdygpLW87Zjx0JiZmPjA/cj0zRHNldFRpbWVvdXQoYSx0LWYpOihyPQo9M0RudWxsLG58fCh1
PTNEZS5hcHBseShzLGkpLHJ8fChzPTNEaT0zRG51bGwpKSl9O3JldHVybiBmdW5jdGlvbigpe3M9
M0R0aGk9CnMsaT0zRGFyZ3VtZW50cyxvPTNEcC5ub3coKTt2YXIgZj0zRG4mJiFyO3JldHVybiBy
fHwocj0zRHNldFRpbWVvdXQoYSx0KSksZj0KJiYodT0zRGUuYXBwbHkocyxpKSxzPTNEaT0zRG51
bGwpLHV9fSxwLndyYXA9M0RmdW5jdGlvbihlLHQpe3JldHVybiBwLnBhcnRpPQphbCh0LGUpfSxw
Lm5lZ2F0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiFlLmFwcGx5KHRo
aXMsYXJndW09CmVudHMpfX0scC5jb21wb3NlPTNEZnVuY3Rpb24oKXt2YXIgZT0zRGFyZ3VtZW50
cyx0PTNEZS5sZW5ndGgtMTtyZXR1cm4gZnVuYz0KdGlvbigpe3ZhciBuPTNEdCxyPTNEZVt0XS5h
cHBseSh0aGlzLGFyZ3VtZW50cyk7d2hpbGUobi0tKXI9M0RlW25dLmNhbGwodGhpPQpzLHIpO3Jl
dHVybiByfX0scC5hZnRlcj0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7aWYoLS1l
PDEpcmV0dXJuIHQ9Ci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSxwLmJlZm9yZT0zRGZ1bmN0aW9u
KGUsdCl7dmFyIG47cmV0dXJuIGZ1bmN0aW9uKCl7cj0KZXR1cm4tLWU+MD9uPTNEdC5hcHBseSh0
aGlzLGFyZ3VtZW50cyk6dD0zRG51bGwsbn19LHAub25jZT0zRHAucGFydGlhbChwLmJlPQpmb3Jl
LDIpLHAua2V5cz0zRGZ1bmN0aW9uKGUpe2lmKCFwLmlzT2JqZWN0KGUpKXJldHVybltdO2lmKGMp
cmV0dXJuIGMoZSk7dmE9CnIgdD0zRFtdO2Zvcih2YXIgbiBpbiBlKXAuaGFzKGUsbikmJnQucHVz
aChuKTtyZXR1cm4gdH0scC52YWx1ZXM9M0RmdW5jdGlvbj0KKGUpe3ZhciB0PTNEcC5rZXlzKGUp
LG49M0R0Lmxlbmd0aCxyPTNEQXJyYXkobik7Zm9yKHZhciBpPTNEMDtpPG47aSsrKXJbaV09Cj0z
RGVbdFtpXV07cmV0dXJuIHJ9LHAucGFpcnM9M0RmdW5jdGlvbihlKXt2YXIgdD0zRHAua2V5cyhl
KSxuPTNEdC5sZW5ndGgscj0KPTNEQXJyYXkobik7Zm9yKHZhciBpPTNEMDtpPG47aSsrKXJbaV09
M0RbdFtpXSxlW3RbaV1dXTtyZXR1cm4gcn0scC5pbnZlcnQ9Cj0zRGZ1bmN0aW9uKGUpe3ZhciB0
PTNEe30sbj0zRHAua2V5cyhlKTtmb3IodmFyIHI9M0QwLGk9M0RuLmxlbmd0aDtyPGk7cisrKT0K
dFtlW25bcl1dXT0zRG5bcl07cmV0dXJuIHR9LHAuZnVuY3Rpb25zPTNEcC5tZXRob2RzPTNEZnVu
Y3Rpb24oZSl7dmFyIHQ9M0RbPQpdO2Zvcih2YXIgbiBpbiBlKXAuaXNGdW5jdGlvbihlW25dKSYm
dC5wdXNoKG4pO3JldHVybiB0LnNvcnQoKX0scC5leHRlbmQ9M0Q9CmZ1bmN0aW9uKGUpe2lmKCFw
LmlzT2JqZWN0KGUpKXJldHVybiBlO3ZhciB0LG47Zm9yKHZhciByPTNEMSxpPTNEYXJndW1lbnRz
Lj0KbGVuZ3RoO3I8aTtyKyspe3Q9M0Rhcmd1bWVudHNbcl07Zm9yKG4gaW4gdClmLmNhbGwodCxu
KSYmKGVbbl09M0R0W25dKX1yZXR1PQpybiBlfSxwLnBpY2s9M0RmdW5jdGlvbihlLHQsbil7dmFy
IHI9M0R7fSxpO2lmKGU9M0Q9M0RudWxsKXJldHVybiByO2lmKHAuaXM9CkZ1bmN0aW9uKHQpKXt0
PTNEZCh0LG4pO2ZvcihpIGluIGUpe3ZhciBzPTNEZVtpXTt0KHMsaSxlKSYmKHJbaV09M0RzKX19
ZWxzZT0Ke3ZhciBhPTNEdS5hcHBseShbXSxvLmNhbGwoYXJndW1lbnRzLDEpKTtlPTNEbmV3IE9i
amVjdChlKTtmb3IodmFyIGY9M0QwLGw9Cj0zRGEubGVuZ3RoO2Y8bDtmKyspaT0zRGFbZl0saSBp
biBlJiYocltpXT0zRGVbaV0pfXJldHVybiByfSxwLm9taXQ9M0RmdW5jdD0KaW9uKGUsdCxuKXtp
ZihwLmlzRnVuY3Rpb24odCkpdD0zRHAubmVnYXRlKHQpO2Vsc2V7dmFyIHI9M0RwLm1hcCh1LmFw
cGx5KFtdPQosby5jYWxsKGFyZ3VtZW50cywxKSksU3RyaW5nKTt0PTNEZnVuY3Rpb24oZSx0KXty
ZXR1cm4hcC5jb250YWlucyhyLHQpfX1yZXQ9CnVybiBwLnBpY2soZSx0LG4pfSxwLmRlZmF1bHRz
PTNEZnVuY3Rpb24oZSl7aWYoIXAuaXNPYmplY3QoZSkpcmV0dXJuIGU7Zm9yKD0KdmFyIHQ9M0Qx
LG49M0Rhcmd1bWVudHMubGVuZ3RoO3Q8bjt0Kyspe3ZhciByPTNEYXJndW1lbnRzW3RdO2Zvcih2
YXIgaSBpbiByPQopZVtpXT0zRD0zRD0zRHZvaWQgMCYmKGVbaV09M0RyW2ldKX1yZXR1cm4gZX0s
cC5jbG9uZT0zRGZ1bmN0aW9uKGUpe3JldHVybiA9CnAuaXNPYmplY3QoZSk/cC5pc0FycmF5KGUp
P2Uuc2xpY2UoKTpwLmV4dGVuZCh7fSxlKTplfSxwLnRhcD0zRGZ1bmN0aW9uKGUsdD0KKXtyZXR1
cm4gdChlKSxlfTt2YXIgYj0zRGZ1bmN0aW9uKGUsdCxuLHIpe2lmKGU9M0Q9M0Q9M0R0KXJldHVy
biBlIT0zRD0zRDB8PQp8MS9lPTNEPTNEPTNEMS90O2lmKGU9M0Q9M0RudWxsfHx0PTNEPTNEbnVs
bClyZXR1cm4gZT0zRD0zRD0zRHQ7ZSBpbnN0YW5jZW89CmYgcCYmKGU9M0RlLl93cmFwcGVkKSx0
IGluc3RhbmNlb2YgcCYmKHQ9M0R0Ll93cmFwcGVkKTt2YXIgaT0zRGEuY2FsbChlKTtpZj0KKGkh
PTNEPTNEYS5jYWxsKHQpKXJldHVybiExO3N3aXRjaChpKXtjYXNlIltvYmplY3QgUmVnRXhwXSI6
Y2FzZSJbb2JqZWN0IFN0PQpyaW5nXSI6cmV0dXJuIiIrZT0zRD0zRCIiK3Q7Y2FzZSJbb2JqZWN0
IE51bWJlcl0iOmlmKCtlIT0zRD0zRCtlKXJldHVybit0IT0KPTNEPTNEK3Q7cmV0dXJuK2U9M0Q9
M0Q9M0QwPzEvK2U9M0Q9M0Q9M0QxL3Q6K2U9M0Q9M0Q9M0QrdDtjYXNlIltvYmplY3QgRGF0PQpl
XSI6Y2FzZSJbb2JqZWN0IEJvb2xlYW5dIjpyZXR1cm4rZT0zRD0zRD0zRCt0fWlmKHR5cGVvZiBl
IT0zRCJvYmplY3QifHx0eXA9CmVvZiB0IT0zRCJvYmplY3QiKXJldHVybiExO3ZhciBzPTNEbi5s
ZW5ndGg7d2hpbGUocy0tKWlmKG5bc109M0Q9M0Q9M0RlKXJldD0KdXJuIHJbc109M0Q9M0Q9M0R0
O3ZhciBvPTNEZS5jb25zdHJ1Y3Rvcix1PTNEdC5jb25zdHJ1Y3RvcjtpZihvIT0zRD0zRHUmJiJj
PQpvbnN0cnVjdG9yImluIGUmJiJjb25zdHJ1Y3RvciJpbiB0JiYhKHAuaXNGdW5jdGlvbihvKSYm
byBpbnN0YW5jZW9mIG8mJnAuaXM9CkZ1bmN0aW9uKHUpJiZ1IGluc3RhbmNlb2YgdSkpcmV0dXJu
ITE7bi5wdXNoKGUpLHIucHVzaCh0KTt2YXIgZixsO2lmKGk9M0Q9Cj0zRD0zRCJbb2JqZWN0IEFy
cmF5XSIpe2Y9M0RlLmxlbmd0aCxsPTNEZj0zRD0zRD0zRHQubGVuZ3RoO2lmKGwpd2hpbGUoZi0t
KT0KaWYoIShsPTNEYihlW2ZdLHRbZl0sbixyKSkpYnJlYWt9ZWxzZXt2YXIgYz0zRHAua2V5cyhl
KSxoO2Y9M0RjLmxlbmd0aCxsPTNEPQpwLmtleXModCkubGVuZ3RoPTNEPTNEPTNEZjtpZihsKXdo
aWxlKGYtLSl7aD0zRGNbZl07aWYoIShsPTNEcC5oYXModCxoKSYmYig9CmVbaF0sdFtoXSxuLHIp
KSlicmVha319cmV0dXJuIG4ucG9wKCksci5wb3AoKSxsfTtwLmlzRXF1YWw9M0RmdW5jdGlvbihl
LHQpez0KcmV0dXJuIGIoZSx0LFtdLFtdKX0scC5pc0VtcHR5PTNEZnVuY3Rpb24oZSl7aWYoZT0z
RD0zRG51bGwpcmV0dXJuITA7aWYocC5pPQpzQXJyYXkoZSl8fHAuaXNTdHJpbmcoZSl8fHAuaXNB
cmd1bWVudHMoZSkpcmV0dXJuIGUubGVuZ3RoPTNEPTNEPTNEMDtmb3IodmE9CnIgdCBpbiBlKWlm
KHAuaGFzKGUsdCkpcmV0dXJuITE7cmV0dXJuITB9LHAuaXNFbGVtZW50PTNEZnVuY3Rpb24oZSl7
cmV0dXJuIT0KIWUmJmUubm9kZVR5cGU9M0Q9M0Q9M0QxfSxwLmlzQXJyYXk9M0RsfHxmdW5jdGlv
bihlKXtyZXR1cm4gYS5jYWxsKGUpPTNEPTNEPQo9M0QiW29iamVjdCBBcnJheV0ifSxwLmlzT2Jq
ZWN0PTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0R0eXBlb2YgZTtyZXR1cm4gdD0zRD0KPTNEPTNEImZ1
bmN0aW9uInx8dD0zRD0zRD0zRCJvYmplY3QiJiYhIWV9LHAuZWFjaChbIkFyZ3VtZW50cyIsIkZ1
bmN0aW9uIiwiPQpTdHJpbmciLCJOdW1iZXIiLCJEYXRlIiwiUmVnRXhwIl0sZnVuY3Rpb24oZSl7
cFsiaXMiK2VdPTNEZnVuY3Rpb24odCl7cmV0dXI9Cm4gYS5jYWxsKHQpPTNEPTNEPTNEIltvYmpl
Y3QgIitlKyJdIn19KSxwLmlzQXJndW1lbnRzKGFyZ3VtZW50cyl8fChwLmlzQXJndT0KbWVudHM9
M0RmdW5jdGlvbihlKXtyZXR1cm4gcC5oYXMoZSwiY2FsbGVlIil9KSx0eXBlb2YgLy4vIT0zRCJm
dW5jdGlvbiImJihwPQouaXNGdW5jdGlvbj0zRGZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT0z
RD0zRCJmdW5jdGlvbiJ8fCExfSkscC5pc0Zpbml0ZT0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGlz
RmluaXRlKGUpJiYhaXNOYU4ocGFyc2VGbG9hdChlKSl9LHAuaXNOYU49M0RmdW5jdGlvPQpuKGUp
e3JldHVybiBwLmlzTnVtYmVyKGUpJiZlIT0zRD0zRCtlfSxwLmlzQm9vbGVhbj0zRGZ1bmN0aW9u
KGUpe3JldHVybiBlPQo9M0Q9M0Q9M0QhMHx8ZT0zRD0zRD0zRCExfHxhLmNhbGwoZSk9M0Q9M0Q9
M0QiW29iamVjdCBCb29sZWFuXSJ9LHAuaXNOdWxsPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gZT0z
RD0zRD0zRG51bGx9LHAuaXNVbmRlZmluZWQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gZT0KPTNEPTNE
PTNEdm9pZCAwfSxwLmhhcz0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUhPTNEbnVsbCYmZi5jYWxs
KGUsdCl9LHAubm9DPQpvbmZsaWN0PTNEZnVuY3Rpb24oKXtyZXR1cm4gZS5fPTNEdCx0aGlzfSxw
LmlkZW50aXR5PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGU9Cn0scC5jb25zdGFudD0zRGZ1bmN0aW9u
KGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX0scC5ub29wPTNEZnVuY3Rpb24oKT0Ke30s
cC5wcm9wZXJ0eT0zRGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gdFtlXX19
LHAubWF0Y2hlcz0zRGZ1PQpuY3Rpb24oZSl7dmFyIHQ9M0RwLnBhaXJzKGUpLG49M0R0Lmxlbmd0
aDtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoZT0zRD0zRG51bGw9CilyZXR1cm4hbjtlPTNEbmV3IE9i
amVjdChlKTtmb3IodmFyIHI9M0QwO3I8bjtyKyspe3ZhciBpPTNEdFtyXSxzPTNEaVswXTtpZj0K
KGlbMV0hPTNEPTNEZVtzXXx8IShzIGluIGUpKXJldHVybiExfXJldHVybiEwfX0scC50aW1lcz0z
RGZ1bmN0aW9uKGUsdCxuKXt2PQphciByPTNEQXJyYXkoTWF0aC5tYXgoMCxlKSk7dD0zRGQodCxu
LDEpO2Zvcih2YXIgaT0zRDA7aTxlO2krKylyW2ldPTNEdChpKTs9CnJldHVybiByfSxwLnJhbmRv
bT0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9M0Q9M0RudWxsJiYodD0zRGUsZT0zRDApLGUrTWF0
aD0KLmZsb29yKE1hdGgucmFuZG9tKCkqKHQtZSsxKSl9LHAubm93PTNERGF0ZS5ub3d8fGZ1bmN0
aW9uKCl7cmV0dXJuKG5ldyBEYXRlPQopLmdldFRpbWUoKX07dmFyIHc9M0R7IiYiOiImYW1wOyIs
IjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiY9CiN4Mjc7IiwiYCI6IiYj
eDYwOyJ9LEU9M0RwLmludmVydCh3KSxTPTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0RmdW5jdGlvbih0
KXtyZT0KdHVybiBlW3RdfSxuPTNEIig/OiIrcC5rZXlzKGUpLmpvaW4oInwiKSsiKSIscj0zRFJl
Z0V4cChuKSxpPTNEUmVnRXhwKG4sImciPQopO3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZT0z
RGU9M0Q9M0RudWxsPyIiOiIiK2Usci50ZXN0KGUpP2UucmVwbGFjZShpLHQ9Cik6ZX19O3AuZXNj
YXBlPTNEUyh3KSxwLnVuZXNjYXBlPTNEUyhFKSxwLnJlc3VsdD0zRGZ1bmN0aW9uKGUsdCl7aWYo
ZT0zRD0zRD0KbnVsbClyZXR1cm4gdm9pZCAwO3ZhciBuPTNEZVt0XTtyZXR1cm4gcC5pc0Z1bmN0
aW9uKG4pP2VbdF0oKTpufTt2YXIgeD0zRDA7PQpwLnVuaXF1ZUlkPTNEZnVuY3Rpb24oZSl7dmFy
IHQ9M0QrK3grIiI7cmV0dXJuIGU/ZSt0OnR9LHAudGVtcGxhdGVTZXR0aW5ncz0KPTNEe2V2YWx1
YXRlOi88JShbXHNcU10rPyklPi9nLGludGVycG9sYXRlOi88JT0zRChbXHNcU10rPyklPi9nLGVz
Y2FwZTovPCUtPQooW1xzXFNdKz8pJT4vZ307dmFyIFQ9M0QvKC4pXi8sTj0zRHsiJyI6IiciLCJc
XCI6IlxcIiwiXHIiOiJyIiwiXG4iOiJuIiwiXHU9CjIwMjgiOiJ1MjAyOCIsIlx1MjAyOSI6InUy
MDI5In0sQz0zRC9cXHwnfFxyfFxufFx1MjAyOHxcdTIwMjkvZyxrPTNEZnVuY3Rpbz0KbihlKXty
ZXR1cm4iXFwiK05bZV19O3AudGVtcGxhdGU9M0RmdW5jdGlvbihlLHQsbil7IXQmJm4mJih0PTNE
biksdD0zRHAuZGVmPQphdWx0cyh7fSx0LHAudGVtcGxhdGVTZXR0aW5ncyk7dmFyIHI9M0RSZWdF
eHAoWyh0LmVzY2FwZXx8VCkuc291cmNlLCh0LmludGU9CnJwb2xhdGV8fFQpLnNvdXJjZSwodC5l
dmFsdWF0ZXx8VCkuc291cmNlXS5qb2luKCJ8IikrInwkIiwiZyIpLGk9M0QwLHM9M0QiXz0KX3Ar
PTNEJyI7ZS5yZXBsYWNlKHIsZnVuY3Rpb24odCxuLHIsbyx1KXtyZXR1cm4gcys9M0RlLnNsaWNl
KGksdSkucmVwbGFjZShDPQosayksaT0zRHUrdC5sZW5ndGgsbj9zKz0zRCInK1xuKChfX3Q9M0Qo
IituKyIpKT0zRD0zRG51bGw/Jyc6Xy5lc2NhcGUoX190KSk9CitcbiciOnI/cys9M0QiJytcbigo
X190PTNEKCIrcisiKSk9M0Q9M0RudWxsPycnOl9fdCkrXG4nIjpvJiYocys9M0QiJztcbiIrbz0K
KyJcbl9fcCs9M0QnIiksdH0pLHMrPTNEIic7XG4iLHQudmFyaWFibGV8fChzPTNEIndpdGgob2Jq
fHx7fSl7XG4iK3MrIn1cbiIpPQoscz0zRCJ2YXIgX190LF9fcD0zRCcnLF9faj0zREFycmF5LnBy
b3RvdHlwZS5qb2luLHByaW50PTNEZnVuY3Rpb24oKXtfX3ArPQo9M0RfX2ouY2FsbChhcmd1bWVu
dHMsJycpO307XG4iK3MrInJldHVybiBfX3A7XG4iO3RyeXt2YXIgbz0zRG5ldyBGdW5jdGlvbig9
CnQudmFyaWFibGV8fCJvYmoiLCJfIixzKX1jYXRjaCh1KXt0aHJvdyB1LnNvdXJjZT0zRHMsdX12
YXIgYT0zRGZ1bmN0aW9uKGUpez0KcmV0dXJuIG8uY2FsbCh0aGlzLGUscCl9LGY9M0R0LnZhcmlh
YmxlfHwib2JqIjtyZXR1cm4gYS5zb3VyY2U9M0QiZnVuY3Rpb24oPQoiK2YrIil7XG4iK3MrIn0i
LGF9LHAuY2hhaW49M0RmdW5jdGlvbihlKXt2YXIgdD0zRHAoZSk7cmV0dXJuIHQuX2NoYWluPTNE
ITA9Cix0fTt2YXIgTD0zRGZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9jaGFpbj9wKGUpLmNoYWlu
KCk6ZX07cC5taXhpbj0zRGZ1bmN0aT0Kb24oZSl7cC5lYWNoKHAuZnVuY3Rpb25zKGUpLGZ1bmN0
aW9uKHQpe3ZhciBuPTNEcFt0XT0zRGVbdF07cC5wcm90b3R5cGVbdF09Cj0zRGZ1bmN0aW9uKCl7
dmFyIGU9M0RbdGhpcy5fd3JhcHBlZF07cmV0dXJuIHMuYXBwbHkoZSxhcmd1bWVudHMpLEwuY2Fs
bCh0aD0KaXMsbi5hcHBseShwLGUpKX19KX0scC5taXhpbihwKSxwLmVhY2goWyJwb3AiLCJwdXNo
IiwicmV2ZXJzZSIsInNoaWZ0Iiwic29yPQp0Iiwic3BsaWNlIiwidW5zaGlmdCJdLGZ1bmN0aW9u
KGUpe3ZhciB0PTNEbltlXTtwLnByb3RvdHlwZVtlXT0zRGZ1bmN0aW9uKCk9Cnt2YXIgbj0zRHRo
aXMuX3dyYXBwZWQ7cmV0dXJuIHQuYXBwbHkobixhcmd1bWVudHMpLChlPTNEPTNEPTNEInNoaWZ0
Inx8ZT0zRD0KPTNEPTNEInNwbGljZSIpJiZuLmxlbmd0aD0zRD0zRD0zRDAmJmRlbGV0ZSBuWzBd
LEwuY2FsbCh0aGlzLG4pfX0pLHAuZWFjaChbPQoiY29uY2F0Iiwiam9pbiIsInNsaWNlIl0sZnVu
Y3Rpb24oZSl7dmFyIHQ9M0RuW2VdO3AucHJvdG90eXBlW2VdPTNEZnVuY3Rpb249Cigpe3JldHVy
biBMLmNhbGwodGhpcyx0LmFwcGx5KHRoaXMuX3dyYXBwZWQsYXJndW1lbnRzKSl9fSkscC5wcm90
b3R5cGUudmFsdT0KZT0zRGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dyYXBwZWR9LHR5cGVvZiBk
ZWZpbmU9M0Q9M0QiZnVuY3Rpb24iJiZkZWZpbmUuPQphbWQmJmRlZmluZSgidW5kZXJzY29yZSIs
W10sZnVuY3Rpb24oKXtyZXR1cm4gcH0pfS5jYWxsKHRoaXMpLGRlZmluZSgibGlicy89CnVuZGVy
c2NvcmUiLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0LG47cmV0dXJuIHR8fGUu
X319KHRoaXMpKSxkZT0KZmluZSgidXRpbHMvdXRpbHMiLFsibGlicy91bmRlcnNjb3JlIl0sZnVu
Y3Rpb24oZSl7ZnVuY3Rpb24gdChlLG4pe2Zvcih2YXIgPQpyIGluIGUpe3ZhciBpPTNEZVtyXTtp
JiZ0eXBlb2YgaT0zRD0zRCJvYmplY3QiJiYobihpKSx0KGksbikpfX1mdW5jdGlvbiBuKGU9Cil7
cmV0dXJuICQoIjxkaXYvPiIpLnRleHQoZSkuaHRtbCgpfWZ1bmN0aW9uIHIoZSl7ZSBpbnN0YW5j
ZW9mIEFycmF5fHwoZT0zRD0KW2VdKTtmb3IodmFyIHQgaW4gZSlpZihbIk5vbmUiLG51bGwsIm51
bGwiLHVuZGVmaW5lZCwidW5kZWZpbmVkIl0uaW5kZXhPZihlPQpbdF0pPi0xKXJldHVybiExO3Jl
dHVybiEwfWZ1bmN0aW9uIGkoZSl7dmFyIGU9M0RlLnRvU3RyaW5nKCk7aWYoZSl7ZT0zRGUucmU9
CnBsYWNlKC8sL2csIiwgIik7dmFyIHQ9M0RlLmxhc3RJbmRleE9mKCIsICIpO3JldHVybiB0IT0z
RC0xJiYoZT0zRGUuc3Vic3RyKD0KMCx0KSsiIG9yICIrZS5zdWJzdHIodCsxKSksZX1yZXR1cm4i
In1mdW5jdGlvbiBzKGUpe3RvcC5fX3V0aWxzX19nZXRfXz0zRHRvPQpwLl9fdXRpbHNfX2dldF9f
fHx7fSxlLmNhY2hlJiZ0b3AuX191dGlsc19fZ2V0X19bZS51cmxdPyhlLnN1Y2Nlc3MmJmUuc3Vj
Y2U9CnNzKHRvcC5fX3V0aWxzX19nZXRfX1tlLnVybF0pLGNvbnNvbGUuZGVidWcoInV0aWxzLmpz
OjpnZXQoKSAtIEZldGNoaW5nIGZybz0KbSBjYWNoZSBbIitlLnVybCsiXS4iKSk6byh7dXJsOmUu
dXJsLGRhdGE6ZS5kYXRhLHN1Y2Nlc3M6ZnVuY3Rpb24odCl7dG9wLl9fPQp1dGlsc19fZ2V0X19b
ZS51cmxdPTNEdCxlLnN1Y2Nlc3MmJmUuc3VjY2Vzcyh0KX0sZXJyb3I6ZnVuY3Rpb24odCl7ZS5l
cnJvciY9CiZlLmVycm9yKHQpfX0pfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9M0R7Y29udGVudFR5cGU6
ImFwcGxpY2F0aW9uL2pzb24iLHR5cGU6ZT0KLnR5cGV8fCJHRVQiLGRhdGE6ZS5kYXRhfHx7fSx1
cmw6ZS51cmx9O3QudHlwZT0zRD0zRCJHRVQifHx0LnR5cGU9M0Q9M0QiREVMPQpFVEUiPyh0LnVy
bC5pbmRleE9mKCI/Iik9M0Q9M0QtMT90LnVybCs9M0QiPyI6dC51cmwrPTNEIiYiLHQudXJsPTNE
dC51cmwrJC49CnBhcmFtKHQuZGF0YSksdC5kYXRhPTNEbnVsbCk6KHQuZGF0YVR5cGU9M0QianNv
biIsdC51cmw9M0R0LnVybCx0LmRhdGE9M0RKUz0KT04uc3RyaW5naWZ5KHQuZGF0YSkpLCQuYWph
eCh0KS5kb25lKGZ1bmN0aW9uKHQpe2lmKHR5cGVvZiB0PTNEPTNEInN0cmluZyIpPQp0cnl7dD0z
RHQucmVwbGFjZSgiSW5maW5pdHksIiwnIkluZmluaXR5IiwnKSx0PTNEalF1ZXJ5LnBhcnNlSlNP
Tih0KX1jYXRjaCg9Cm4pe2NvbnNvbGUuZGVidWcobil9ZS5zdWNjZXNzJiZlLnN1Y2Nlc3ModCl9
KS5mYWlsKGZ1bmN0aW9uKHQpe3ZhciBuPTNEbnVsbD0KO3RyeXtuPTNEalF1ZXJ5LnBhcnNlSlNP
Tih0LnJlc3BvbnNlVGV4dCl9Y2F0Y2gocil7bj0zRHQucmVzcG9uc2VUZXh0fWUuZXJyPQpvciYm
ZS5lcnJvcihuLHQpfSl9ZnVuY3Rpb24gdShlLHQpe3ZhciBuPTNEJCgnPGRpdiBjbGFzcz0zRCIn
K2UrJyI+PC9kaXY+Jyk9CjtuLmFwcGVuZFRvKCI6ZXEoMCkiKTt2YXIgcj0zRG4uY3NzKHQpO3Jl
dHVybiBuLnJlbW92ZSgpLHJ9ZnVuY3Rpb24gYShlKXskKD0KJ2xpbmtbaHJlZl49M0QiJytlKyci
XScpLmxlbmd0aHx8JCgnPGxpbmsgaHJlZj0zRCInK2dhbGF4eV9jb25maWcucm9vdCtlKyciPQog
cmVsPTNEInN0eWxlc2hlZXQiPicpLmFwcGVuZFRvKCJoZWFkIil9ZnVuY3Rpb24gZih0LG4pe3Jl
dHVybiB0P2UuZGVmYXVsdHM9Cih0LG4pOm59ZnVuY3Rpb24gbChlLHQpe3ZhciBuPTNEIiI7aWYo
ZT49M0QxZTExKWUvPTNEMWUxMSxuPTNEIlRCIjtlbHNlIGlmKD0KZT49M0QxZTgpZS89M0QxZTgs
bj0zRCJHQiI7ZWxzZSBpZihlPj0zRDFlNSllLz0zRDFlNSxuPTNEIk1CIjtlbHNlIGlmKGU+PTNE
PQoxMDApZS89M0QxMDAsbj0zRCJLQiI7ZWxzZXtpZighKGU+MCkpcmV0dXJuIjxzdHJvbmc+LTwv
c3Ryb25nPiI7ZSo9M0QxMCxuPQo9M0QiYiJ9dmFyIHI9M0RNYXRoLnJvdW5kKGUpLzEwO3JldHVy
biB0P3IrIiAiK246IjxzdHJvbmc+IityKyI8L3N0cm9uZz4gIis9Cm59ZnVuY3Rpb24gYygpe3Jl
dHVybiJ4IitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiw5KX1mdW5jdGlv
bj0KIGgoZSl7dmFyIHQ9M0QkKCI8cD48L3A+Iik7cmV0dXJuIHQuYXBwZW5kKGUpLHR9ZnVuY3Rp
b24gcCgpe3ZhciBlPTNEbmV3IERhPQp0ZSx0PTNEKGUuZ2V0SG91cnMoKTwxMD8iMCI6IiIpK2Uu
Z2V0SG91cnMoKSxuPTNEKGUuZ2V0TWludXRlcygpPDEwPyIwIjoiIik9CitlLmdldE1pbnV0ZXMo
KSxyPTNEZS5nZXREYXRlKCkrIi8iKyhlLmdldE1vbnRoKCkrMSkrIi8iK2UuZ2V0RnVsbFllYXIo
KSsiLD0KICIrdCsiOiIrbjtyZXR1cm4gcn1yZXR1cm57Y3NzTG9hZEZpbGU6YSxjc3NHZXRBdHRy
aWJ1dGU6dSxnZXQ6cyxtZXJnZTpmLGJ5PQp0ZXNUb1N0cmluZzpsLHV1aWQ6Yyx0aW1lOnAsd3Jh
cDpoLHJlcXVlc3Q6byxzYW5pdGl6ZTpuLHRleHRpZnk6aSx2YWxpZGF0ZTo9CnIsZGVlcGVhY2g6
dH19KSxkZWZpbmUoIm12Yy91aS91aS1wb3J0bGV0IixbInV0aWxzL3V0aWxzIl0sZnVuY3Rpb24o
ZSl7dmFyID0KdD0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHt2aXNpYmxlOiExLG9wdGlvbnNEZWZh
dWx0Ont0aXRsZToiIixpY29uOiIiLGJ1dHRvPQpuczpudWxsLGJvZHk6bnVsbCxzY3JvbGxhYmxl
OiEwLG5vcGFkZGluZzohMSxvcGVyYXRpb25zOm51bGwscGxhY2VtZW50OiJib3Q9CnRvbSIsY2xz
OiJ1aS1wb3J0bGV0IixvcGVyYXRpb25zX2ZsdDoicmlnaHQifSwkdGl0bGU6bnVsbCwkY29udGVu
dDpudWxsLCRidT0KdHRvbnM6bnVsbCwkb3BlcmF0aW9uczpudWxsLCRoZWFkZXI6bnVsbCxpbml0
aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9uPQpzPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9u
c0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGk9Cm9ucykp
LHRoaXMuJGNvbnRlbnQ9M0R0aGlzLiRlbC5maW5kKCIuY29udGVudCIpLHRoaXMuJHRpdGxlPTNE
dGhpcy4kZWwuZmluZD0KKCIucG9ydGxldC10aXRsZS10ZXh0IiksdGhpcy4kaGVhZGVyPTNEdGhp
cy4kZWwuZmluZCgiLnBvcnRsZXQtaGVhZGVyIik7dmFyPQogbj0zRHRoaXMuJGVsLmZpbmQoIi5w
b3J0bGV0LWNvbnRlbnQiKTt0aGlzLm9wdGlvbnMubm9wYWRkaW5nJiYobi5jc3MoInBhZGQ9Cmlu
ZyIsIjBweCIpLHRoaXMuJGNvbnRlbnQuY3NzKCJwYWRkaW5nIiwiMHB4IikpLHRoaXMuJGJ1dHRv
bnM9M0QkKHRoaXMuZWwpLj0KZmluZCgiLmJ1dHRvbnMiKTtpZih0aGlzLm9wdGlvbnMuYnV0dG9u
cyl7dmFyIHI9M0R0aGlzOyQuZWFjaCh0aGlzLm9wdGlvbnMuPQpidXR0b25zLGZ1bmN0aW9uKGUs
dCl7dC4kZWwucHJvcCgiaWQiLGUpLHIuJGJ1dHRvbnMuYXBwZW5kKHQuJGVsKX0pfWVsc2UgdGg9
CmlzLiRidXR0b25zLnJlbW92ZSgpO3RoaXMuJG9wZXJhdGlvbnM9M0QkKHRoaXMuZWwpLmZpbmQo
Ii5vcGVyYXRpb25zIik7aWYodD0KaGlzLm9wdGlvbnMub3BlcmF0aW9ucyl7dmFyIHI9M0R0aGlz
OyQuZWFjaCh0aGlzLm9wdGlvbnMub3BlcmF0aW9ucyxmdW5jdGlvPQpuKGUsdCl7dC4kZWwucHJv
cCgiaWQiLGUpLHIuJG9wZXJhdGlvbnMuYXBwZW5kKHQuJGVsKX0pfXRoaXMub3B0aW9ucy5ib2R5
JiY9CnRoaXMuYXBwZW5kKHRoaXMub3B0aW9ucy5ib2R5KX0sYXBwZW5kOmZ1bmN0aW9uKHQsbil7
bj90aGlzLiRjb250ZW50LmFwcGVuZD0KKHQpOnRoaXMuJGNvbnRlbnQuYXBwZW5kKGUud3JhcCh0
KSl9LGNvbnRlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kY29udGVuPQp0fSxzaG93OmZ1bmN0
aW9uKCl7dGhpcy4kZWwuZmFkZUluKCJmYXN0IiksdGhpcy52aXNpYmxlPTNEITB9LGhpZGU6ZnVu
Y3Rpb249Cigpe3RoaXMuJGVsLmZhZGVPdXQoImZhc3QiKSx0aGlzLnZpc2libGU9M0QhMX0sZW5h
YmxlQnV0dG9uOmZ1bmN0aW9uKGUpe3RoaT0Kcy4kYnV0dG9ucy5maW5kKCIjIitlKS5wcm9wKCJk
aXNhYmxlZCIsITEpfSxkaXNhYmxlQnV0dG9uOmZ1bmN0aW9uKGUpe3RoaXMuPQokYnV0dG9ucy5m
aW5kKCIjIitlKS5wcm9wKCJkaXNhYmxlZCIsITApfSxoaWRlT3BlcmF0aW9uOmZ1bmN0aW9uKGUp
e3RoaXMuJG89CnBlcmF0aW9ucy5maW5kKCIjIitlKS5oaWRlKCl9LHNob3dPcGVyYXRpb246ZnVu
Y3Rpb24oZSl7dGhpcy4kb3BlcmF0aW9ucy5maT0KbmQoIiMiK2UpLnNob3coKX0sc2V0T3BlcmF0
aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0aGlzLiRvcGVyYXRpb25zLmZpbmQoPQoiIyIrZSk7
bi5vZmYoImNsaWNrIiksbi5vbigiY2xpY2siLHQpfSx0aXRsZTpmdW5jdGlvbihlKXt2YXIgdD0z
RHRoaXMuJHRpdGw9CmU7cmV0dXJuIGUmJnQuaHRtbChlKSx0Lmh0bWwoKX0sX3RlbXBsYXRlOmZ1
bmN0aW9uKGUpe3ZhciB0PTNEJzxkaXYgaWQ9M0QiJz0KK2UuaWQrJyIgY2xhc3M9M0QiJytlLmNs
cysnIj4nO3JldHVybiBlLnRpdGxlJiYodCs9M0QnPGRpdiBjbGFzcz0zRCJwb3J0bGV0PQotaGVh
ZGVyIj48ZGl2IGNsYXNzPTNEIm9wZXJhdGlvbnMiIHN0eWxlPTNEImZsb2F0OiAnK2Uub3BlcmF0
aW9uc19mbHQrJzsiPjw9Ci9kaXY+JysnPGRpdiBjbGFzcz0zRCJwb3J0bGV0LXRpdGxlIj4nLGUu
aWNvbiYmKHQrPTNEJzxpIGNsYXNzPTNEImljb24gZmEgJz0KK2UuaWNvbisnIj4mbmJzcDs8L2k+
JyksdCs9M0QnPHNwYW4gY2xhc3M9M0QicG9ydGxldC10aXRsZS10ZXh0Ij4nK2UudGl0bGUrPQoi
PC9zcGFuPiIrIjwvZGl2PiIrIjwvZGl2PiIpLHQrPTNEJzxkaXYgY2xhc3M9M0QicG9ydGxldC1j
b250ZW50Ij4nLGUucGxhY2U9Cm1lbnQ9M0Q9M0QidG9wIiYmKHQrPTNEJzxkaXYgY2xhc3M9M0Qi
YnV0dG9ucyI+PC9kaXY+JyksdCs9M0QnPGRpdiBjbGFzcz0zRD0KImNvbnRlbnQiPjwvZGl2Pics
ZS5wbGFjZW1lbnQ9M0Q9M0QiYm90dG9tIiYmKHQrPTNEJzxkaXYgY2xhc3M9M0QiYnV0dG9ucyI+
PQo8L2Rpdj4nKSx0Kz0zRCI8L2Rpdj48L2Rpdj4iLHR9fSk7cmV0dXJue1ZpZXc6dH19KSxkZWZp
bmUoIm12Yy91aS91aS1zZWxlY3Q9Ci1kZWZhdWx0IixbInV0aWxzL3V0aWxzIl0sZnVuY3Rpb24o
ZSl7dmFyIHQ9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9ucz0KRGVmYXVsdDp7aWQ6IiIs
Y2xzOiIiLGVycm9yX3RleHQ6Ik5vIGRhdGEgYXZhaWxhYmxlIix2aXNpYmxlOiEwLHdhaXQ6ITEs
bXVsPQp0aXBsZTohMSxzZWFyY2hhYmxlOiExfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMu
b3B0aW9ucz0zRGUubWVyZ2UodCx0aGk9CnMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVu
dCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKSx0aGlzLiRzZWxlYz0KdD0zRHRoaXMuJGVs
LmZpbmQoIi5zZWxlY3QiKSx0aGlzLiRpY29uPTNEdGhpcy4kZWwuZmluZCgiLmljb24iKSx0aGlz
LiRidXR0PQpvbj0zRHRoaXMuJGVsLmZpbmQoIi5idXR0b24iKSx0aGlzLm9wdGlvbnMubXVsdGlw
bGU/KHRoaXMuJHNlbGVjdC5wcm9wKCJtdWw9CnRpcGxlIiwhMCksdGhpcy4kc2VsZWN0LmFkZENs
YXNzKCJ1aS1zZWxlY3QtbXVsdGlwbGUiKSx0aGlzLiRpY29uLnJlbW92ZSgpKT0KOnRoaXMuJGVs
LmFkZENsYXNzKCJ1aS1zZWxlY3QiKSx0aGlzLnVwZGF0ZSh0aGlzLm9wdGlvbnMuZGF0YSksdGhp
cy5vcHRpb25zPQoudmFsdWUhPTNEPTNEdW5kZWZpbmVkJiZ0aGlzLnZhbHVlKHRoaXMub3B0aW9u
cy52YWx1ZSksdGhpcy5vcHRpb25zLnZpc2libGU9Cnx8dGhpcy5oaWRlKCksdGhpcy5vcHRpb25z
LndhaXQ/dGhpcy53YWl0KCk6dGhpcy5zaG93KCk7dmFyIG49M0R0aGlzO3RoaXMuJD0Kc2VsZWN0
Lm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7bi5fY2hhbmdlKCl9KSx0aGlzLm9uKCJjaGFuZ2UiLGZ1
bmN0aW9uKCl7bi5fPQpjaGFuZ2UoKX0pfSx2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gZSE9M0Q9
M0R1bmRlZmluZWQmJih0aGlzLiRzZWxlY3QudmFsKGU9CiksdGhpcy4kc2VsZWN0LnNlbGVjdDIm
JnRoaXMuJHNlbGVjdC5zZWxlY3QyKCJ2YWwiLGUpKSx0aGlzLiRzZWxlY3QudmFsKCl9LD0KZmly
c3Q6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMuJHNlbGVjdC5maW5kKCJvcHRpb24iKTtyZXR1cm4g
ZS5sZW5ndGg+MD9lLnZhPQpsKCk6dW5kZWZpbmVkfSx2YWxpZGF0ZTpmdW5jdGlvbigpe3JldHVy
biBlLnZhbGlkYXRlKHRoaXMudmFsdWUoKSl9LHRleHQ6ZnU9Cm5jdGlvbigpe3JldHVybiB0aGlz
LiRzZWxlY3QuZmluZCgib3B0aW9uOnNlbGVjdGVkIikudGV4dCgpfSxzaG93OmZ1bmN0aW9uKD0K
KXt0aGlzLnVud2FpdCgpLHRoaXMuJHNlbGVjdC5zaG93KCksdGhpcy4kZWwuc2hvdygpfSxoaWRl
OmZ1bmN0aW9uKCl7dGhpcy4kPQplbC5oaWRlKCl9LHdhaXQ6ZnVuY3Rpb24oKXt0aGlzLiRpY29u
LnJlbW92ZUNsYXNzKCksdGhpcy4kaWNvbi5hZGRDbGFzcygiZmE9CiBmYS1zcGlubmVyIGZhLXNw
aW4iKX0sdW53YWl0OmZ1bmN0aW9uKCl7dGhpcy4kaWNvbi5yZW1vdmVDbGFzcygpLHRoaXMuJGlj
bz0Kbi5hZGRDbGFzcygiZmEgZmEtY2FyZXQtZG93biIpfSxkaXNhYmxlZDpmdW5jdGlvbigpe3Jl
dHVybiB0aGlzLiRzZWxlY3QuaXMoPQoiOmRpc2FibGVkIil9LGVuYWJsZTpmdW5jdGlvbigpe3Ro
aXMuJHNlbGVjdC5wcm9wKCJkaXNhYmxlZCIsITEpfSxkaXNhYmxlOmY9CnVuY3Rpb24oKXt0aGlz
LiRzZWxlY3QucHJvcCgiZGlzYWJsZWQiLCEwKX0sYWRkOmZ1bmN0aW9uKGUpe3RoaXMuJHNlbGVj
dC5hcD0KcGVuZCh0aGlzLl90ZW1wbGF0ZU9wdGlvbihlKSksdGhpcy5fcmVmcmVzaCgpfSxkZWw6
ZnVuY3Rpb24oZSl7dGhpcy4kc2VsZWN0PQouZmluZCgib3B0aW9uW3ZhbHVlPTNEIitlKyJdIiku
cmVtb3ZlKCksdGhpcy4kc2VsZWN0LnRyaWdnZXIoImNoYW5nZSIpLHRoaXM9Ci5fcmVmcmVzaCgp
fSx1cGRhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLiRzZWxlY3QudmFsKCk7dGhpcy4kc2Vs
ZWN0LmZpbj0KZCgib3B0aW9uIikucmVtb3ZlKCk7Zm9yKHZhciBuIGluIGUpdGhpcy4kc2VsZWN0
LmFwcGVuZCh0aGlzLl90ZW1wbGF0ZU9wdGlvPQpuKGVbbl0pKTt0aGlzLl9yZWZyZXNoKCksdGhp
cy4kc2VsZWN0LnZhbCh0KSx0aGlzLiRzZWxlY3QudmFsKCl8fHRoaXMuJHNlbGU9CmN0LnZhbCh0
aGlzLmZpcnN0KCkpLHRoaXMub3B0aW9ucy5zZWFyY2hhYmxlJiYodGhpcy4kYnV0dG9uLmhpZGUo
KSx0aGlzLiRzZT0KbGVjdC5zZWxlY3QyKCJkZXN0cm95IiksdGhpcy4kc2VsZWN0LnNlbGVjdDIo
KSl9LHNldE9uQ2hhbmdlOmZ1bmN0aW9uKGUpe3RoPQppcy5vcHRpb25zLm9uY2hhbmdlPTNEZX0s
ZXhpc3RzOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLiRzZWxlY3QuZmluZCgnb3B0aW89Cm5bdmFs
dWU9M0QiJytlKyciXScpLmxlbmd0aD4wfSxfY2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25z
Lm9uY2hhbmdlJiZ0aD0KaXMub3B0aW9ucy5vbmNoYW5nZSh0aGlzLiRzZWxlY3QudmFsKCkpfSxf
cmVmcmVzaDpmdW5jdGlvbigpe3RoaXMuJHNlbGVjdC5mPQppbmQoIm9wdGlvblt2YWx1ZT0zRG51
bGxdIikucmVtb3ZlKCk7dmFyIGU9M0R0aGlzLiRzZWxlY3QuZmluZCgib3B0aW9uIikubGU9Cm5n
dGg7ZT0zRD0zRDA/KHRoaXMuZGlzYWJsZSgpLHRoaXMuJHNlbGVjdC5hcHBlbmQodGhpcy5fdGVt
cGxhdGVPcHRpb24oe3ZhbD0KdWU6Im51bGwiLGxhYmVsOnRoaXMub3B0aW9ucy5lcnJvcl90ZXh0
fSkpKTp0aGlzLmVuYWJsZSgpfSxfdGVtcGxhdGVPcHRpb246PQpmdW5jdGlvbihlKXtyZXR1cm4n
PG9wdGlvbiB2YWx1ZT0zRCInK2UudmFsdWUrJyI+JytlLmxhYmVsKyI8L29wdGlvbj4ifSxfdGU9
Cm1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdiBpZD0zRCInK2UuaWQrJyI+JysnPHNlbGVj
dCBpZD0zRCJzZWxlY3QiIGNsYT0Kc3M9M0Qic2VsZWN0ICcrZS5jbHMrIiAiK2UuaWQrJyI+PC9z
ZWxlY3Q+JysnPGRpdiBjbGFzcz0zRCJidXR0b24iPicrJzxpIGNsPQphc3M9M0QiaWNvbiIvPicr
IjwvZGl2PiIrIjwvZGl2PiJ9fSk7cmV0dXJue1ZpZXc6dH19KSxkZWZpbmUoIm12Yy91aS91aS1z
bGk9CmRlciIsWyJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGUpe3ZhciB0PTNEQmFja2JvbmUuVmll
dy5leHRlbmQoe29wdGlvbnNEZWZhdT0KbHQ6e21pbjpudWxsLG1heDpudWxsLHN0ZXA6bnVsbCxw
cmVjaXNlOiExLHNwbGl0OjFlNH0saW5pdGlhbGl6ZTpmdW5jdGlvbih0PQope3ZhciBuPTNEdGhp
czt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRF
bGVtZW49CnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSksdGhpcy51c2VzbGlkZXI9M0R0
aGlzLm9wdGlvbnMubWF4IT0zRD0zRG51bD0KbCYmdGhpcy5vcHRpb25zLm1pbiE9M0Q9M0RudWxs
JiZ0aGlzLm9wdGlvbnMubWF4PnRoaXMub3B0aW9ucy5taW4sdGhpcy5vcHRpPQpvbnMuc3RlcD0z
RD0zRD0zRG51bGwmJih0aGlzLm9wdGlvbnMuc3RlcD0zRDEsdGhpcy5vcHRpb25zLnByZWNpc2Um
JnRoaXMudXM9CmVzbGlkZXImJih0aGlzLm9wdGlvbnMuc3RlcD0zRCh0aGlzLm9wdGlvbnMubWF4
LXRoaXMub3B0aW9ucy5taW4pL3RoaXMub3B0aT0Kb25zLnNwbGl0KSksdGhpcy51c2VzbGlkZXI/
KHRoaXMuJHNsaWRlcj0zRHRoaXMuJGVsLmZpbmQoIiNzbGlkZXIiKSx0aGlzLiRzPQpsaWRlci5z
bGlkZXIodGhpcy5vcHRpb25zKSx0aGlzLiRzbGlkZXIub24oInNsaWRlIixmdW5jdGlvbihlLHQp
e24udmFsdWUodC49CnZhbHVlKX0pKTp0aGlzLiRlbC5maW5kKCIudWktZm9ybS1zbGlkZXItdGV4
dCIpLmNzcygid2lkdGgiLCIxMDAlIiksdGhpcy4kdD0KZXh0PTNEdGhpcy4kZWwuZmluZCgiI3Rl
eHQiKSx0aGlzLm9wdGlvbnMudmFsdWUhPTNEPTNEdW5kZWZpbmVkJiZ0aGlzLnZhbHVlPQoodGhp
cy5vcHRpb25zLnZhbHVlKSx0aGlzLiR0ZXh0Lm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7bi52YWx1
ZSgkKHRoaXMpLnZhbCg9CikpfSk7dmFyIHI9M0RbXTt0aGlzLiR0ZXh0Lm9uKCJrZXl1cCIsZnVu
Y3Rpb24oZSl7cltlLndoaWNoXT0zRCExfSksdGhpcy4kdD0KZXh0Lm9uKCJrZXlkb3duIixmdW5j
dGlvbihlKXt2YXIgdD0zRGUud2hpY2g7clt0XT0zRCEwLHQ9M0Q9M0Q4fHx0PTNEPTNEOXx8PQp0
PTNEPTNEMTN8fHQ9M0Q9M0QzN3x8dD0zRD0zRDM5fHx0Pj0zRDQ4JiZ0PD0zRDU3fHx0PTNEPTNE
MTkwJiYkKHRoaXMpLnZhbCg9CikuaW5kZXhPZigiLiIpPTNEPTNELTEmJm4ub3B0aW9ucy5wcmVj
aXNlfHx0PTNEPTNEMTg5JiYkKHRoaXMpLnZhbCgpLmluZGV4Tz0KZigiLSIpPTNEPTNELTF8fHJb
OTFdfHxyWzE3XXx8ZXZlbnQucHJldmVudERlZmF1bHQoKX0pfSx2YWx1ZTpmdW5jdGlvbihlKXty
PQpldHVybiBlIT0zRD0zRHVuZGVmaW5lZCYmKGlzTmFOKGUpJiYoZT0zRDApLHRoaXMub3B0aW9u
cy5tYXghPTNEPTNEbnVsbCYmKGU9Cj0zRE1hdGgubWluKGUsdGhpcy5vcHRpb25zLm1heCkpLHRo
aXMub3B0aW9ucy5taW4hPTNEPTNEbnVsbCYmKGU9M0RNYXRoLm1heD0KKGUsdGhpcy5vcHRpb25z
Lm1pbikpLHRoaXMub3B0aW9ucy5vbmNoYW5nZSYmdGhpcy5vcHRpb25zLm9uY2hhbmdlKGUpLHRo
aXMuPQokc2xpZGVyJiZ0aGlzLiRzbGlkZXIuc2xpZGVyKCJ2YWx1ZSIsZSksdGhpcy4kdGV4dC52
YWwoZSkpLHRoaXMuJHRleHQudmFsKCk9Cn0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3JldHVybic8
ZGl2IGlkPTNEIicrZS5pZCsnIiBjbGFzcz0zRCJ1aS1mb3JtLXNsaWRlcj0KIj4nKyc8aW5wdXQg
aWQ9M0QidGV4dCIgdHlwZT0zRCJ0ZXh0IiBjbGFzcz0zRCJ1aS1mb3JtLXNsaWRlci10ZXh0Ii8+
JysnPGRpPQp2IGlkPTNEInNsaWRlciIgY2xhc3M9M0QidWktZm9ybS1zbGlkZXItZWxlbWVudCIv
PicrIjwvZGl2PiJ9fSk7cmV0dXJue1ZpZXc9Cjp0fX0pLGRlZmluZSgibXZjL3VpL3VpLW9wdGlv
bnMiLFsidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihlKXt2YXIgdD0zREJhY2tibz0KbmUuVmlldy5l
eHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zRGVmYXVsdD0zRHt2aXNp
YmxlOiEwLGRhPQp0YTpbXSxpZDplLnV1aWQoKSxlcnJvcl90ZXh0OiJObyBkYXRhIGF2YWlsYWJs
ZS4iLHdhaXRfdGV4dDoiUGxlYXNlIHdhaXQuLi49CiJ9LHRoaXMub3B0aW9ucz0zRGUubWVyZ2Uo
dCx0aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlzLnNldEVsZW1lbnQoIjxkaXYvPiIpLD0KdGhpcy4k
bWVzc2FnZT0zRCQoIjxkaXYvPiIpLHRoaXMuJG9wdGlvbnM9M0QkKHRoaXMuX3RlbXBsYXRlKHQp
KSx0aGlzLiRlbC5hPQpwcGVuZCh0aGlzLiRtZXNzYWdlKSx0aGlzLiRlbC5hcHBlbmQodGhpcy4k
b3B0aW9ucyksdGhpcy5vcHRpb25zLnZpc2libGV8fHQ9Cmhpcy4kZWwuaGlkZSgpLHRoaXMudXBk
YXRlKHRoaXMub3B0aW9ucy5kYXRhKSx0aGlzLm9wdGlvbnMudmFsdWUhPTNEPTNEdW5kZT0KZmlu
ZWQmJnRoaXMudmFsdWUodGhpcy5vcHRpb25zLnZhbHVlKTt2YXIgbj0zRHRoaXM7dGhpcy5vbigi
Y2hhbmdlIixmdW5jdGlvPQpuKCl7bi5fY2hhbmdlKCl9KX0sdXBkYXRlOmZ1bmN0aW9uKGUpe3Zh
ciB0PTNEdGhpcy5fZ2V0VmFsdWUoKTt0aGlzLiRvcHRpb249CnMuZW1wdHkoKTtpZih0aGlzLl90
ZW1wbGF0ZU9wdGlvbnMpdGhpcy4kb3B0aW9ucy5hcHBlbmQodGhpcy5fdGVtcGxhdGVPcHRpbz0K
bnMoZSkpO2Vsc2UgZm9yKHZhciBuIGluIGUpe3ZhciByPTNEJCh0aGlzLl90ZW1wbGF0ZU9wdGlv
bihlW25dKSk7ci5hZGRDbGFzPQpzKCJ1aS1vcHRpb24iKSx0aGlzLiRvcHRpb25zLmFwcGVuZChy
KX12YXIgaT0zRHRoaXM7dGhpcy4kZWwuZmluZCgiaW5wdXQiKS49Cm9uKCJjaGFuZ2UiLGZ1bmN0
aW9uKCl7aS52YWx1ZShpLl9nZXRWYWx1ZSgpKSxpLl9jaGFuZ2UoKX0pLHRoaXMuX3JlZnJlc2go
KT0KLHRoaXMudmFsdWUodCl9LHZhbHVlOmZ1bmN0aW9uKGUpe2lmKGUhPTNEPTNEdW5kZWZpbmVk
KXtlIGluc3RhbmNlb2YgQXJyYXl8PQp8KGU9M0RbZV0pLHRoaXMuJGVsLmZpbmQoImlucHV0Iiku
cHJvcCgiY2hlY2tlZCIsITEpO2Zvcih2YXIgdCBpbiBlKXRoaXMuJGU9CmwuZmluZCgnaW5wdXRb
dmFsdWU9M0QiJytlW3RdKyciXScpLmZpcnN0KCkucHJvcCgiY2hlY2tlZCIsITApfXJldHVybiB0
aGlzLj0KX2dldFZhbHVlKCl9LGV4aXN0czpmdW5jdGlvbihlKXtpZihlIT0zRD0zRHVuZGVmaW5l
ZCl7ZSBpbnN0YW5jZW9mIEFycmF5fHwoPQplPTNEW2VdKTtmb3IodmFyIHQgaW4gZSlpZih0aGlz
LiRlbC5maW5kKCdpbnB1dFt2YWx1ZT0zRCInK2VbdF0rJyJdJykubGVuZ3Q9Cmg+MClyZXR1cm4h
MH1yZXR1cm4hMX0sZmlyc3Q6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMuJGVsLmZpbmQoImlucHV0
Iik7cmV0dT0Kcm4gZS5sZW5ndGg+MD9lLnZhbCgpOnVuZGVmaW5lZH0sdmFsaWRhdGU6ZnVuY3Rp
b24oKXtyZXR1cm4gZS52YWxpZGF0ZSh0aGlzPQoudmFsdWUoKSl9LHdhaXQ6ZnVuY3Rpb24oKXt0
aGlzLl9zaXplKCk9M0Q9M0QwJiYodGhpcy5fbWVzc2FnZVNob3codGhpcy5vcHQ9CmlvbnMud2Fp
dF90ZXh0LCJpbmZvIiksdGhpcy4kb3B0aW9ucy5oaWRlKCkpfSx1bndhaXQ6ZnVuY3Rpb24oKXt0
aGlzLl9tZXNzYT0KZ2VIaWRlKCksdGhpcy5fcmVmcmVzaCgpfSxfY2hhbmdlOmZ1bmN0aW9uKCl7
dGhpcy5vcHRpb25zLm9uY2hhbmdlJiZ0aGlzLm9wPQp0aW9ucy5vbmNoYW5nZSh0aGlzLl9nZXRW
YWx1ZSgpKX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt0aGlzLl9zaXplKCk9M0Q9M0QwPyg9CnRoaXMu
X21lc3NhZ2VTaG93KHRoaXMub3B0aW9ucy5lcnJvcl90ZXh0LCJkYW5nZXIiKSx0aGlzLiRvcHRp
b25zLmhpZGUoKSk6KD0KdGhpcy5fbWVzc2FnZUhpZGUoKSx0aGlzLiRvcHRpb25zLmNzcygiZGlz
cGxheSIsImlubGluZS1ibG9jayIpKX0sX2dldFZhbHVlPQo6ZnVuY3Rpb24oKXt2YXIgZT0zRHRo
aXMuJGVsLmZpbmQoIjpjaGVja2VkIik7aWYoZS5sZW5ndGg9M0Q9M0QwKXJldHVybiJudWw9Cmwi
O2lmKHRoaXMub3B0aW9ucy5tdWx0aXBsZSl7dmFyIHQ9M0RbXTtyZXR1cm4gZS5lYWNoKGZ1bmN0
aW9uKCl7dC5wdXNoKCQodD0KaGlzKS52YWwoKSl9KSx0fXJldHVybiBlLnZhbCgpfSxfc2l6ZTpm
dW5jdGlvbigpe3JldHVybiB0aGlzLiRlbC5maW5kKCIudWktPQpvcHRpb24iKS5sZW5ndGh9LF9t
ZXNzYWdlU2hvdzpmdW5jdGlvbihlLHQpe3RoaXMuJG1lc3NhZ2Uuc2hvdygpLHRoaXMuJG1lc3M9
CmFnZS5yZW1vdmVDbGFzcygpLHRoaXMuJG1lc3NhZ2UuYWRkQ2xhc3MoInVpLW1lc3NhZ2UgYWxl
cnQgYWxlcnQtIit0KSx0aGlzLj0KJG1lc3NhZ2UuaHRtbChlKX0sX21lc3NhZ2VIaWRlOmZ1bmN0
aW9uKCl7dGhpcy4kbWVzc2FnZS5oaWRlKCl9LF90ZW1wbGF0ZTpmPQp1bmN0aW9uKCl7cmV0dXJu
JzxkaXYgY2xhc3M9M0QidWktb3B0aW9ucyIvPid9fSksbj0zRHt9O24uVmlldz0zRHQuZXh0ZW5k
KHs9CmluaXRpYWxpemU6ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRo
aXMsZSl9LF90ZW1wbGF0ZU9wdGlvbj0KOmZ1bmN0aW9uKGUpe3JldHVybic8ZGl2PjxpbnB1dCB0
eXBlPTNEInJhZGlvIiBuYW1lPTNEIicrdGhpcy5vcHRpb25zLmlkKyciPQogdmFsdWU9M0QiJytl
LnZhbHVlKyciLz4nK2UubGFiZWwrIjxicj4iKyI8L2Rpdj4ifX0pO3ZhciByPTNEe307ci5WaWV3
PTNEdC49CmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbihlKXtlLm11bHRpcGxlPTNEITAsdC5w
cm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKD0KdGhpcyxlKX0sX3RlbXBsYXRlT3B0aW9uOmZ1bmN0
aW9uKGUpe3JldHVybic8ZGl2PjxpbnB1dCB0eXBlPTNEImNoZWNrYm94IiBuPQphbWU9M0QiJyt0
aGlzLm9wdGlvbnMuaWQrJyIgdmFsdWU9M0QiJytlLnZhbHVlKyciLz4nK2UubGFiZWwrIjxicj4i
KyI8L2Rpdj49CiJ9fSk7dmFyIGk9M0R7fTtyZXR1cm4gaS5WaWV3PTNEdC5leHRlbmQoe2luaXRp
YWxpemU6ZnVuY3Rpb24oZSl7dC5wcm90b3R5cD0KZS5pbml0aWFsaXplLmNhbGwodGhpcyxlKX0s
dmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPTNEPTNEdW5kZWZpbmVkJiYodGhpPQpzLiRlbC5m
aW5kKCJpbnB1dCIpLnByb3AoImNoZWNrZWQiLCExKSx0aGlzLiRlbC5maW5kKCJsYWJlbCIpLnJl
bW92ZUNsYXNzKCI9CmFjdGl2ZSIpLHRoaXMuJGVsLmZpbmQoJ1t2YWx1ZT0zRCInK2UrJyJdJyku
cHJvcCgiY2hlY2tlZCIsITApLmNsb3Nlc3QoImxhYj0KZWwiKS5hZGRDbGFzcygiYWN0aXZlIikp
LHRoaXMuX2dldFZhbHVlKCl9LF90ZW1wbGF0ZU9wdGlvbjpmdW5jdGlvbihlKXt2YXIgPQp0PTNE
JzxsYWJlbCBjbGFzcz0zRCJidG4gYnRuLWRlZmF1bHQiPic7cmV0dXJuIGUuaWNvbiYmKHQrPTNE
JzxpIGNsYXNzPTNEImY9CmEgJytlLmljb24rJyIvPicpLHQrPTNEJzxpbnB1dCB0eXBlPTNEInJh
ZGlvIiBuYW1lPTNEIicrdGhpcy5vcHRpb25zLmlkKyciID0KdmFsdWU9M0QiJytlLnZhbHVlKyci
PicrZS5sYWJlbCsiPC9sYWJlbD4iLHR9LF90ZW1wbGF0ZTpmdW5jdGlvbigpe3JldHVybic8PQpk
aXYgY2xhc3M9M0QiYnRuLWdyb3VwIHVpLXJhZGlvYnV0dG9uIiBkYXRhLXRvZ2dsZT0zRCJidXR0
b25zIi8+J319KSx7QmFzZTo9CnQsUmFkaW86bixSYWRpb0J1dHRvbjppLENoZWNrYm94OnJ9fSks
ZGVmaW5lKCJtdmMvdWkvdWktZHJpbGxkb3duIixbInV0aWxzLz0KdXRpbHMiLCJtdmMvdWkvdWkt
b3B0aW9ucyJdLGZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0LkJhc2UuZXh0ZW5kKHtpbml0aWFsaXpl
PQo6ZnVuY3Rpb24oZSl7dGhpcy5kaXNwbGF5PTNEZS5kaXNwbGF5fHwiY2hlY2tib3giLGUubXVs
dGlwbGU9M0R0aGlzLmRpc3BsYXk9Cj0zRD0zRCJjaGVja2JveCIsdC5CYXNlLnByb3RvdHlwZS5p
bml0aWFsaXplLmNhbGwodGhpcyxlKX0sX3RlbXBsYXRlT3B0aW9uOj0KZnVuY3Rpb24oZSx0LG4p
e3JldHVybic8ZGl2PjxpbnB1dCBuYW1lPTNEIicrdGhpcy5vcHRpb25zLmlkKyciIGNsYXNzPTNE
InVpPQotb3B0aW9uIiB0eXBlPTNEIicrdGhpcy5kaXNwbGF5KyciIHZhbHVlPTNEIicrdCsnIj4n
K2UrIjxkaXYvPiJ9LF90ZW1wbGF0ZU89CnB0aW9uczpmdW5jdGlvbihlKXtmdW5jdGlvbiBuKGUs
dCl7ZnVuY3Rpb24gbihuKXtuPyh0LmZhZGVJbigiZmFzdCIpLGUucmVtbz0KdmVDbGFzcygidG9n
Z2xlLWV4cGFuZCIpLGUuYWRkQ2xhc3MoInRvZ2dsZSIpLGUuaXNfZXhwYW5kZWQ9M0QhMCk6KHQu
aGlkZSgpPQosZS5yZW1vdmVDbGFzcygidG9nZ2xlIiksZS5hZGRDbGFzcygidG9nZ2xlLWV4cGFu
ZCIpLGUuaXNfZXhwYW5kZWQ9M0QhMSl9ZS49Cm9uKCJjbGljayIsZnVuY3Rpb24oKXtuKCFlLmlz
X2V4cGFuZGVkKX0pfWZ1bmN0aW9uIHIoZSxzKXtmb3IoaSBpbiBzKXt2YXIgbz0KPTNEc1tpXSx1
PTNEby5vcHRpb25zLmxlbmd0aD4wLGE9M0QkKCI8ZGl2Lz4iKTtpZih1KXt2YXIgZj0zRCQoJzxz
cGFuIGNsYXNzPQo9M0QidWktZHJpbGxkb3duLWJ1dHRvbiBmb3JtLXRvZ2dsZSBpY29uLWJ1dHRv
biB0b2dnbGUtZXhwYW5kIiBzdHlsZT0zRCJwb3M9Cml0aW9uOiByZWxhdGl2ZTsgdG9wOiAycHg7
Ii8+JyksbD0zRCQoIjxkaXYvPiIpO2wuYXBwZW5kKGYpLGwuYXBwZW5kKHQuX3RlbT0KcGxhdGVP
cHRpb24oby5uYW1lLG8udmFsdWUpKSxhLmFwcGVuZChsKTt2YXIgYz0zRCQoJzxkaXYgc3R5bGU9
M0QiZGlzcGxheTogPQpub25lOyBtYXJnaW4tbGVmdDogMjVweDsiLz4nKTtyKGMsby5vcHRpb25z
KSxhLmFwcGVuZChjKSxuKGYsYyl9ZWxzZSBhLmFwcGU9Cm5kKHQuX3RlbXBsYXRlT3B0aW9uKG8u
bmFtZSxvLnZhbHVlKSk7ZS5hcHBlbmQoYSl9fXZhciB0PTNEdGhpcyxzPTNEJCgiPGRpdj0KLz4i
KTtyZXR1cm4gcihzLGUpLHN9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdiBjbGFz
cz0zRCJ1aS1vcHRpb25zPQogZHJpbGxkb3duLWNvbnRhaW5lciIgaWQ9M0QiJytlLmlkKyciLz4n
fX0pO3JldHVybntWaWV3Om59fSksZGVmaW5lKCJtdmMvdWk9Ci91aS1idXR0b24tbWVudSIsWyJ1
dGlscy91dGlscyJdLGZ1bmN0aW9uKGUpe3JldHVybiBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7bz0K
cHRpb25zRGVmYXVsdDp7aWQ6IiIsdGl0bGU6IiIsZmxvYXRpbmc6InJpZ2h0IixpY29uOm51bGws
b25jbGljazpudWxsLGNsczoiPQp1aS1idXR0b24taWNvbiB1aS1idXR0b24tbWVudSIsdG9vbHRp
cDoiIix0YXJnZXQ6IiIsaHJlZjoiIixvbnVubG9hZDpudWxsLHY9CmlzaWJsZTohMCx0YWc6IiJ9
LCRtZW51Om51bGwsaW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdl
KD0KdCx0aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlzLnNldEVsZW1lbnQoJCh0aGlzLl90ZW1wbGF0
ZSh0aGlzLm9wdGlvbnMpKSk7dmFyPQogbj0zRCQodGhpcy5lbCkuZmluZCgiLnJvb3QiKSxyPTNE
dGhpcztuLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7JCgiLnRvb2x0aXA9CiIpLmhpZGUoKSxlLnBy
ZXZlbnREZWZhdWx0KCksci5vcHRpb25zLm9uY2xpY2smJnIub3B0aW9ucy5vbmNsaWNrKCl9KSx0
aGlzLj0Kb3B0aW9ucy52aXNpYmxlfHx0aGlzLmhpZGUoKSxuLnRvb2x0aXAoe3RpdGxlOnQudG9v
bHRpcCxwbGFjZW1lbnQ6ImJvdHRvbSJ9PQopfSxzaG93OmZ1bmN0aW9uKCl7JCh0aGlzLmVsKS5z
aG93KCl9LGhpZGU6ZnVuY3Rpb24oKXskKHRoaXMuZWwpLmhpZGUoKX0sYWQ9CmRNZW51OmZ1bmN0
aW9uKHQpe3ZhciBuPTNEe3RpdGxlOiIiLHRhcmdldDoiIixocmVmOiIiLG9uY2xpY2s6bnVsbCxk
aXZpZGVyOj0KITEsaWNvbjpudWxsLGNsczoiYnV0dG9uLW1lbnUgYnRuLWdyb3VwIn07bj0zRGUu
bWVyZ2UodCxuKSx0aGlzLiRtZW51fHwoJCh0PQpoaXMuZWwpLmFwcGVuZCh0aGlzLl90ZW1wbGF0
ZU1lbnUoKSksdGhpcy4kbWVudT0zRCQodGhpcy5lbCkuZmluZCgiLm1lbnUiKSk9Cjt2YXIgcj0z
RCQodGhpcy5fdGVtcGxhdGVNZW51SXRlbShuKSk7ci5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe2Uu
cHJldmVudERlZj0KYXVsdCgpLG4ub25jbGljayYmbi5vbmNsaWNrKCl9KSx0aGlzLiRtZW51LmFw
cGVuZChyKSxuLmRpdmlkZXImJnRoaXMuJG1lbnUuPQphcHBlbmQoJCh0aGlzLl90ZW1wbGF0ZURp
dmlkZXIoKSkpfSxfdGVtcGxhdGVNZW51SXRlbTpmdW5jdGlvbihlKXt2YXIgdD0zRCc9CjxsaT48
YSBjbGFzcz0zRCJkcm9wZG93bi1pdGVtIiBocmVmPTNEIicrZS5ocmVmKyciIHRhcmdldD0zRCIn
K2UudGFyZ2V0KyciPj0KJztyZXR1cm4gZS5pY29uJiYodCs9M0QnPGkgY2xhc3M9M0QiZmEgJytl
Lmljb24rJyI+PC9pPicpLHQrPTNEIiAiK2UudGl0bGUrPQoiPC9hPiIrIjwvbGk+Iix0fSxfdGVt
cGxhdGVNZW51OmZ1bmN0aW9uKCl7cmV0dXJuJzx1bCBjbGFzcz0zRCJtZW51IGRyb3Bkb3c9Cm4t
bWVudSBwdWxsLXJpZ2h0IiByb2xlPTNEIm1lbnUiPjwvdWw+J30sX3RlbXBsYXRlRGl2aWRlcjpm
dW5jdGlvbigpe3JldHVybj0KJzxsaSBjbGFzcz0zRCJkaXZpZGVyIj48L2xpPid9LF90ZW1wbGF0
ZTpmdW5jdGlvbihlKXt2YXIgdD0zRCIiLG49M0QiIjtlLnRpPQp0bGU/dD0zRCJ3aWR0aDogYXV0
bzsiOm49M0QibWFyZ2luOiAwcHg7Ijt2YXIgcj0zRCc8ZGl2IGlkPTNEIicrZS5pZCsnIiBzdHk9
CmxlPTNEImZsb2F0OiAnK2UuZmxvYXRpbmcrIjsgIit0KyciIGNsYXNzPTNEImRyb3Bkb3duICcr
ZS5jbHMrJyI+JysnPGRpdiBjbD0KYXNzPTNEInJvb3QgYnV0dG9uIGRyb3Bkb3duLXRvZ2dsZSIg
ZGF0YS10b2dnbGU9M0QiZHJvcGRvd24iIHN0eWxlPTNEIicrbisnPQoiPicrJzxpIGNsYXNzPTNE
Imljb24gZmEgJytlLmljb24rJyIvPic7cmV0dXJuIGUudGl0bGUmJihyKz0zRCcmbmJzcDs8c3Bh
biA9CmNsYXNzPTNEInRpdGxlIj4nK2UudGl0bGUrIjwvc3Bhbj4iKSxyKz0zRCI8L2Rpdj48L2Rp
dj4iLHJ9fSl9KSxkZWZpbmUoIm12Yz0KL3VpL3VpLW1pc2MiLFsidXRpbHMvdXRpbHMiLCJtdmMv
dWkvdWktc2VsZWN0LWRlZmF1bHQiLCJtdmMvdWkvdWktc2xpZGVyIiwiPQptdmMvdWkvdWktb3B0
aW9ucyIsIm12Yy91aS91aS1kcmlsbGRvd24iLCJtdmMvdWkvdWktYnV0dG9uLW1lbnUiLCJtdmMv
dWkvdWk9Ci1tb2RhbCJdLGZ1bmN0aW9uKGUsdCxuLHIsaSxzLG8pe3ZhciB1PTNEQmFja2JvbmUu
Vmlldy5leHRlbmQoe29wdGlvbnNEZWZhdT0KbHQ6e3VybDoiIixjbHM6IiJ9LGluaXRpYWxpemU6
ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0PQppb25zRGVmYXVs
dCksdGhpcy5zZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9ucykpfSxfdGVtcGxh
dGU6ZnVuY3Q9CmlvbihlKXtyZXR1cm4nPGltZyBjbGFzcz0zRCJ1aS1pbWFnZSAnK2UuY2xzKyci
IHNyYz0zRCInK2UudXJsKyciLz4nfX0pLGE9Cj0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRp
b25zRGVmYXVsdDp7dGl0bGU6IiIsY2xzOiIifSxpbml0aWFsaXplOmZ1bmN0aT0Kb24odCl7dGhp
cy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVu
dCh0aGlzLl90PQplbXBsYXRlKHRoaXMub3B0aW9ucykpfSx0aXRsZTpmdW5jdGlvbihlKXt0aGlz
LiRlbC5odG1sKGUpfSxfdGVtcGxhdGU6ZnVuY3Q9CmlvbihlKXtyZXR1cm4nPGxhYmVsIGNsYXNz
PTNEInVpLWxhYmVsICcrZS5jbHMrJyI+JytlLnRpdGxlKyI8L2xhYmVsPiJ9LHZhbD0KdWU6ZnVu
Y3Rpb24oKXtyZXR1cm4gb3B0aW9ucy50aXRsZX19KSxmPTNEQmFja2JvbmUuVmlldy5leHRlbmQo
e29wdGlvbnNEZWZhPQp1bHQ6e2Zsb2F0aW5nOiJyaWdodCIsaWNvbjoiIix0b29sdGlwOiIiLHBs
YWNlbWVudDoiYm90dG9tIix0aXRsZToiIixjbHM6IiI9Cn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0
KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcz0KLnNl
dEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSksJCh0aGlzLmVsKS50b29sdGlw
KHt0aXRsZTp0LnRvb2x0PQppcCxwbGFjZW1lbnQ6ImJvdHRvbSJ9KX0sX3RlbXBsYXRlOmZ1bmN0
aW9uKGUpe3JldHVybic8ZGl2PjxzcGFuIGNsYXNzPTNEImY9CmEgJytlLmljb24rJyIgY2xhc3M9
M0QidWktaWNvbiIvPiZuYnNwOycrZS50aXRsZSsiPC9kaXY+In19KSxsPTNEQmFja2JvbmUuVj0K
aWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e2lkOm51bGwsdGl0bGU6IiIsZmxvYXRpbmc6InJp
Z2h0IixjbHM6InVpLWJ1dHRvPQpuIGJ0biBidG4tZGVmYXVsdCIsaWNvbjoiIn0saW5pdGlhbGl6
ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQ9Cix0aGlzLm9wdGlvbnNEZWZh
dWx0KSx0aGlzLnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSksJCh0aGlz
Lj0KZWwpLm9uKCJjbGljayIsZnVuY3Rpb24oKXskKCIudG9vbHRpcCIpLmhpZGUoKSx0Lm9uY2xp
Y2smJnQub25jbGljaygpfSksJCh0PQpoaXMuZWwpLnRvb2x0aXAoe3RpdGxlOnQudG9vbHRpcCxw
bGFjZW1lbnQ6ImJvdHRvbSJ9KX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGU9Cil7dmFyIHQ9M0QnPGJ1
dHRvbiBpZD0zRCInK2UuaWQrJyIgdHlwZT0zRCJzdWJtaXQiIHN0eWxlPTNEImZsb2F0OiAnK2Uu
ZmxvYT0KdGluZysnOyIgdHlwZT0zRCJidXR0b24iIGNsYXNzPTNEIicrZS5jbHMrJyI+JztyZXR1
cm4gZS5pY29uJiYodCs9M0QnPGkgY2xhPQpzcz0zRCJpY29uIGZhICcrZS5pY29uKyciPjwvaT4m
bmJzcDsnKSx0Kz0zRGUudGl0bGUrIjwvYnV0dG9uPiIsdH19KSxjPTNEQmE9CmNrYm9uZS5WaWV3
LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e2lkOm51bGwsdGl0bGU6IiIsZmxvYXRpbmc6InJpZ2h0
IixjbHM6Ij0KdWktYnV0dG9uLWljb24iLGljb246IiIsdG9vbHRpcDoiIixvbmNsaWNrOm51bGx9
LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpPQpzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5v
cHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRlKHQ9Cmhpcy5vcHRp
b25zKSksdGhpcy4kYnV0dG9uPTNEdGhpcy4kZWwuZmluZCgiLmJ1dHRvbiIpO3ZhciBuPTNEdGhp
czskKHRoaXMuZT0KbCkub24oImNsaWNrIixmdW5jdGlvbigpeyQoIi50b29sdGlwIikuaGlkZSgp
LHQub25jbGljayYmIW4uZGlzYWJsZWQmJnQub25jPQpsaWNrKCl9KSwkKHRoaXMuZWwpLnRvb2x0
aXAoe3RpdGxlOnQudG9vbHRpcCxwbGFjZW1lbnQ6ImJvdHRvbSJ9KX0sZGlzYWJsZTo9CmZ1bmN0
aW9uKCl7dGhpcy4kYnV0dG9uLmFkZENsYXNzKCJkaXNhYmxlZCIpLHRoaXMuZGlzYWJsZWQ9M0Qh
MH0sZW5hYmxlOmZ1bj0KY3Rpb24oKXt0aGlzLiRidXR0b24ucmVtb3ZlQ2xhc3MoImRpc2FibGVk
IiksdGhpcy5kaXNhYmxlZD0zRCExfSxzZXRJY29uOmZ1PQpuY3Rpb24oZSl7dGhpcy4kKCJpIiku
cmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmljb24pLmFkZENsYXNzKGUpLHRoaXMub3B0aW89Cm5z
Lmljb249M0RlfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9M0QiIjtlLnRpdGxlJiYodD0z
RCJ3aWR0aDogYXV0bzsiKT0KO3ZhciBuPTNEJzxkaXYgaWQ9M0QiJytlLmlkKyciIHN0eWxlPTNE
ImZsb2F0OiAnK2UuZmxvYXRpbmcrIjsgIit0KyciIGNsYXNzPQo9M0QiJytlLmNscysnIj4nO3Jl
dHVybiBlLnRpdGxlP24rPTNEJzxkaXYgY2xhc3M9M0QiYnV0dG9uIj48aSBjbGFzcz0zRCJpY289
Cm4gZmEgJytlLmljb24rJyIvPiZuYnNwOycrJzxzcGFuIGNsYXNzPTNEInRpdGxlIj4nK2UudGl0
bGUrIjwvc3Bhbj4iKyI8L2Rpdj0KPiI6bis9M0QnPGkgY2xhc3M9M0QiaWNvbiBmYSAnK2UuaWNv
bisnIi8+JyxuKz0zRCI8L2Rpdj4iLG59fSksaD0zREJhY2tib25lPQouVmlldy5leHRlbmQoe29w
dGlvbnNEZWZhdWx0Ont0aXRsZToiIixjbHM6IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhp
cy49Cm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGVt
ZW50KHRoaXMuX3RlbXBsYXRlKHRoaT0Kcy5vcHRpb25zKSksJCh0aGlzLmVsKS5vbigiY2xpY2si
LHQub25jbGljayl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPQo8ZGl2PjxhIGhyZWY9
M0QiamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0zRCJ1aS1hbmNob3IgJytlLmNscysnIj4nK2Uu
dGl0bGU9CisiPC9hPjwvZGl2PiJ9fSkscD0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25z
RGVmYXVsdDp7bWVzc2FnZTpudWxsLHN0YT0KdHVzOiJpbmZvIixwZXJzaXN0ZW50OiExfSxpbml0
aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVyZ2UodCx0PQpoaXMub3B0aW9u
c0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCgiPGRpdj48L2Rpdj4iKSx0aGlzLm9wdGlvbnMubWVz
c2FnZSYmdGg9CmlzLnVwZGF0ZSh0aGlzLm9wdGlvbnMpfSx1cGRhdGU6ZnVuY3Rpb24odCl7dGhp
cy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMubz0KcHRpb25zRGVmYXVsdCk7aWYodC5tZXNzYWdl
IT0zRCIiKXt0aGlzLiRlbC5odG1sKHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9uPQpzKSksdGhp
cy4kZWwuZmluZCgiLmFsZXJ0IikuYXBwZW5kKHQubWVzc2FnZSksdGhpcy4kZWwuZmFkZUluKCks
dGhpcy50aW1lb3U9CnQmJndpbmRvdy5jbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KTtpZighdC5w
ZXJzaXN0ZW50KXt2YXIgbj0zRHRoaXM7dGhpcy50aT0KbWVvdXQ9M0R3aW5kb3cuc2V0VGltZW91
dChmdW5jdGlvbigpe24uJGVsLmlzKCI6dmlzaWJsZSIpP24uJGVsLmZhZGVPdXQoKTpuPQouJGVs
LmhpZGUoKX0sM2UzKX19ZWxzZSB0aGlzLiRlbC5mYWRlT3V0KCl9LF90ZW1wbGF0ZTpmdW5jdGlv
bihlKXtyZXR1cm4nPGQ9Cml2IGNsYXNzPTNEInVpLW1lc3NhZ2UgYWxlcnQgYWxlcnQtJytlLnN0
YXR1cysnIi8+J319KSxkPTNEQmFja2JvbmUuVmlldy5leD0KdGVuZCh7b3B0aW9uc0RlZmF1bHQ6
e29uY2xpY2s6bnVsbCxzZWFyY2h3b3JkOiIifSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoPQpp
cy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVu
dCh0aGlzLl90ZW1wbGF0ZSg9CnRoaXMub3B0aW9ucykpO3ZhciBuPTNEdGhpczt0aGlzLm9wdGlv
bnMub25jbGljayYmdGhpcy4kZWwub24oInN1Ym1pdCIsZnVuYz0KdGlvbihlKXt2YXIgdD0zRG4u
JGVsLmZpbmQoIiNzZWFyY2giKTtuLm9wdGlvbnMub25jbGljayh0LnZhbCgpKX0pfSxfdGVtcGxh
PQp0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdiBjbGFzcz0zRCJ1aS1zZWFyY2giPjxmb3JtIG9u
c3VibWl0PTNEInJldHVybiBmYWw9CnNlOyI+PGlucHV0IGlkPTNEInNlYXJjaCIgY2xhc3M9M0Qi
Zm9ybS1jb250cm9sIGlucHV0LXNtIiB0eXBlPTNEInRleHQiIG5hbT0KZT0zRCJzZWFyY2giIHBs
YWNlaG9sZGVyPTNEIlNlYXJjaC4uLiIgdmFsdWU9M0QiJytlLnNlYXJjaHdvcmQrJyI+JysnPGJ1
dHRvPQpuIHR5cGU9M0Qic3VibWl0IiBjbGFzcz0zRCJidG4gc2VhcmNoLWJ0biI+JysnPGkgY2xh
c3M9M0QiZmEgZmEtc2VhcmNoIj48L2k9Cj4nKyI8L2J1dHRvbj4iKyI8L2Zvcm0+IisiPC9kaXY+
In19KSx2PTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdT0KbHQ6e3R5cGU6InRl
eHQiLHBsYWNlaG9sZGVyOiIiLGRpc2FibGVkOiExLHZpc2libGU6ITAsY2xzOiIiLGFyZWE6ITF9
LGluaXRpPQphbGl6ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5v
cHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGU9Cm1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRp
b25zKSksdGhpcy5vcHRpb25zLnZhbHVlIT0zRD0zRHVuZGVmaW5lZCYmdGhpcz0KLnZhbHVlKHRo
aXMub3B0aW9ucy52YWx1ZSksdGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLiRlbC5wcm9wKCJk
aXNhYmxlZCIsPQohMCksdGhpcy5vcHRpb25zLnZpc2libGV8fHRoaXMuJGVsLmhpZGUoKTt2YXIg
bj0zRHRoaXM7dGhpcy4kZWwub24oImlucHV0Iiw9CmZ1bmN0aW9uKCl7bi5vcHRpb25zLm9uY2hh
bmdlJiZuLm9wdGlvbnMub25jaGFuZ2Uobi4kZWwudmFsKCkpfSl9LHZhbHVlOmZ1bj0KY3Rpb24o
ZSl7cmV0dXJuIGUhPTNEPTNEdW5kZWZpbmVkJiZ0aGlzLiRlbC52YWwoZSksdGhpcy4kZWwudmFs
KCl9LF90ZW1wbGF0PQplOmZ1bmN0aW9uKGUpe3JldHVybiBlLmFyZWE/Jzx0ZXh0YXJlYSBpZD0z
RCInK2UuaWQrJyIgY2xhc3M9M0QidWktdGV4dGFyZWE9CiAnK2UuY2xzKyciPjwvdGV4dGFyZWE+
JzonPGlucHV0IGlkPTNEIicrZS5pZCsnIiB0eXBlPTNEIicrZS50eXBlKyciIHZhbHVlPQo9M0Qi
JytlLnZhbHVlKyciIHBsYWNlaG9sZGVyPTNEIicrZS5wbGFjZWhvbGRlcisnIiBjbGFzcz0zRCJ1
aS1pbnB1dCAnK2UuY2w9CnMrJyI+J319KSxtPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe2luaXRp
YWxpemU6ZnVuY3Rpb24oZSl7dGhpcy5vcHRpb25zPTNEZT0KLHRoaXMuc2V0RWxlbWVudCh0aGlz
Ll90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKSx0aGlzLm9wdGlvbnMudmFsdWUhPTNEPTNEdW5kPQpl
ZmluZWQmJnRoaXMudmFsdWUodGhpcy5vcHRpb25zLnZhbHVlKX0sdmFsdWU6ZnVuY3Rpb24oZSl7
cmV0dXJuIGUhPTNEPTNEdW49CmRlZmluZWQmJnRoaXMuJCgiaGlkZGVuIikudmFsKGUpLHRoaXMu
JCgiaGlkZGVuIikudmFsKCl9LF90ZW1wbGF0ZTpmdW5jdGlvbj0KKGUpe3ZhciB0PTNEJzxkaXYg
aWQ9M0QiJytlLmlkKyciID4nO3JldHVybiBlLmluZm8mJih0Kz0zRCI8bGFiZWw+IitlLmluZm8r
PQoiPC9sYWJlbD4iKSx0Kz0zRCc8aGlkZGVuIHZhbHVlPTNEIicrZS52YWx1ZSsnIi8+JysiPC9k
aXY+Iix0fX0pO3JldHVybntBbmM9CmhvcjpoLEJ1dHRvbjpsLEJ1dHRvbkljb246YyxCdXR0b25N
ZW51OnMsSWNvbjpmLEltYWdlOnUsSW5wdXQ6dixMYWJlbDphLE1lcz0Kc2FnZTpwLE1vZGFsOm8s
UmFkaW9CdXR0b246ci5SYWRpb0J1dHRvbixDaGVja2JveDpyLkNoZWNrYm94LFJhZGlvOnIuUmFk
aW8sPQpTZWFyY2hib3g6ZCxTZWxlY3Q6dCxIaWRkZW46bSxTbGlkZXI6bixEcmlsbGRvd246aX19
KSxkZWZpbmUoInBsdWdpbi9saWJyYXI9Cnkvam9icyIsWyJ1dGlscy91dGlscyJdLGZ1bmN0aW9u
KGUpe3JldHVybiBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe2luaXRpYWxpej0KZTpmdW5jdGlvbih0
LG4pe3RoaXMuYXBwPTNEdCx0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKG4sdGhpcy5vcHRpb25zRGVm
YXVsdCl9PQoscmVxdWVzdDpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPTNEdGhpcztlLnN0YXRl
KCJ3YWl0IiwiUmVxdWVzdGluZyBqb2IgcmU9CnN1bHRzLi4uIik7dmFyIG89M0RlLmdldCgiZGF0
YXNldF9pZF9qb2IiKTtvIT0zRCIiP3MuX3dhaXQoZSxyLGkpOnMuX3N1Ym1pdD0KKGUsdCxuLHIs
aSl9LGNsZWFudXA6ZnVuY3Rpb24odCl7dmFyIG49M0R0aGlzLHI9M0R0LmdldCgiZGF0YXNldF9p
ZF9qb2IiKTtyPQohPTNEIiImJihlLnJlcXVlc3Qoe3R5cGU6IlBVVCIsdXJsOmNvbmZpZy5yb290
KyJhcGkvaGlzdG9yaWVzL25vbmUvY29udGVudHM9Ci8iK3IsZGF0YTp7ZGVsZXRlZDohMH0sc3Vj
Y2VzczpmdW5jdGlvbigpe24uX3JlZnJlc2hIZGFzKCl9fSksdC5zZXQoImRhdGFzZT0KdF9pZF9q
b2IiLCIiKSl9LF9zdWJtaXQ6ZnVuY3Rpb24odCxuLHIsaSxzKXt2YXIgbz0zRHRoaXMsdT0zRHQu
aWQsYT0zRHQuZ2V0PQooInR5cGUiKSxmPTNEdC5kZWZpbml0aW9uO2RhdGE9M0R7dG9vbF9pZDoi
Y2hhcnRzIixpbnB1dHM6e2lucHV0OntpZDp0LmdldCg9CiJkYXRhc2V0X2lkIiksc3JjOiJoZGEi
fSxtb2R1bGU6Zi5leGVjdXRlLGNvbHVtbnM6cixzZXR0aW5nczpufX0sdC5zdGF0ZSgidz0KYWl0
IiwiU2VuZGluZyBqb2IgcmVxdWVzdC4uLiIpLGUucmVxdWVzdCh7dHlwZToiUE9TVCIsdXJsOmNv
bmZpZy5yb290KyJhcGkvPQp0b29scyIsZGF0YTpkYXRhLHN1Y2Nlc3M6ZnVuY3Rpb24oZSl7aWYo
IWUub3V0cHV0c3x8ZS5vdXRwdXRzLmxlbmd0aD0zRD0zRDA9Cil0LnN0YXRlKCJmYWlsZWQiLCJK
b2Igc3VibWlzc2lvbiBmYWlsZWQuIE5vIHJlc3BvbnNlLiIpLHMmJnMoKTtlbHNle28uX3JlZj0K
cmVzaEhkYXMoKTt2YXIgbj0zRGUub3V0cHV0c1swXTt0LnN0YXRlKCJ3YWl0IiwiWW91ciBqb2Ig
aGFzIGJlZW4gcXVldWVkLiBZPQpvdSBtYXkgY2xvc2UgdGhlIGJyb3dzZXIgd2luZG93LiBUaGUg
am9iIHdpbGwgcnVuIGluIHRoZSBiYWNrZ3JvdW5kLiIpLHQuc2U9CnQoImRhdGFzZXRfaWRfam9i
IixuLmlkKSxvLmFwcC5zdG9yYWdlLnNhdmUoKSxvLl93YWl0KHQsaSxzKX19LGVycm9yOmZ1bmN0
aT0Kb24oZSl7dmFyIG49M0QiIjtlJiZlLm1lc3NhZ2UmJmUubWVzc2FnZS5kYXRhJiZlLm1lc3Nh
Z2UuZGF0YS5pbnB1dCYmKG49M0RlPQoubWVzc2FnZS5kYXRhLmlucHV0KyIuIiksdC5zdGF0ZSgi
ZmFpbGVkIiwiVGhpcyB2aXN1YWxpemF0aW9uIHJlcXVpcmVzIHRoZSA9CidjaGFydHMnIHRvb2wu
IFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgaW5zdGFsbGVkLiAiK24pLHMmJnMoKX19KX0sX3dhaXQ6
ZnVuYz0KdGlvbih0LG4scil7dmFyIGk9M0R0aGlzO2UucmVxdWVzdCh7dHlwZToiR0VUIix1cmw6
Y29uZmlnLnJvb3QrImFwaS9kYXRhc2V0PQpzLyIrdC5nZXQoImRhdGFzZXRfaWRfam9iIiksZGF0
YTp7fSxzdWNjZXNzOmZ1bmN0aW9uKGUpe3ZhciBzPTNEITE7c3dpdGNoKGU9Ci5zdGF0ZSl7Y2Fz
ZSJvayI6dC5zdGF0ZSgid2FpdCIsIkpvYiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Li4uIiksbiYm
bihlKSxzPQo9M0QhMDticmVhaztjYXNlImVycm9yIjp0LnN0YXRlKCJmYWlsZWQiLCJKb2IgaGFz
IGZhaWxlZC4gUGxlYXNlIGNoZWNrIHRoZSA9Cmhpc3RvcnkgZm9yIGRldGFpbHMuIiksciYmcihl
KSxzPTNEITA7YnJlYWs7Y2FzZSJydW5uaW5nIjp0LnN0YXRlKCJ3YWl0IiwiWT0Kb3VyIGpvYiBp
cyBydW5uaW5nLiBZb3UgbWF5IGNsb3NlIHRoZSBicm93c2VyIHdpbmRvdy4gVGhlIGpvYiB3aWxs
IGNvbnRpbnVlPQogaW4gdGhlIGJhY2tncm91bmQuIil9c3x8c2V0VGltZW91dChmdW5jdGlvbigp
e2kuX3dhaXQodCxuLHIpfSxpLmFwcC5jb25maWc9Ci5nZXQoInF1ZXJ5X3RpbWVvdXQiKSl9fSl9
LF9yZWZyZXNoSGRhczpmdW5jdGlvbigpe0dhbGF4eSYmR2FsYXh5LmN1cnJIaXN0bz0KcnlQYW5l
bCYmR2FsYXh5LmN1cnJIaXN0b3J5UGFuZWwucmVmcmVzaENvbnRlbnRzKCl9fSl9KSxkZWZpbmUo
InBsdWdpbi9saWJyPQphcnkvZGF0YXNldHMiLFsidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihlKXty
ZXR1cm4gQmFja2JvbmUuQ29sbGVjdGlvbi5leHRlbmQ9Cih7bGlzdDp7fSxjYWNoZTp7fSxpbml0
aWFsaXplOmZ1bmN0aW9uKHQsbil7dGhpcy5hcHA9M0R0LHRoaXMub3B0aW9ucz0zRGUubT0KZXJn
ZShuLHRoaXMub3B0aW9uc0RlZmF1bHQpfSxyZXF1ZXN0OmZ1bmN0aW9uKGUpe2UuZ3JvdXBzP3Ro
aXMuX2dldF9ibG9ja3MoPQplKTp0aGlzLl9nZXRfZGF0YXNldChlLmlkLGUuc3VjY2VzcyxlLmVy
cm9yKX0sX2dldF9ibG9ja3M6ZnVuY3Rpb24oZSl7ZnVuY3Q9CmlvbiBjKGkpe2wuX2dldChpLGZ1
bmN0aW9uKCl7dmFyIHM9M0QhMTtmb3IodmFyIG8gaW4gZS5ncm91cHMpe2Rlc3RpbmF0aW9uXz0K
Z3JvdXA9M0RlLmdyb3Vwc1tvXSxzb3VyY2VfZ3JvdXA9M0RpLmdyb3Vwc1tvXSxkZXN0aW5hdGlv
bl9ncm91cC52YWx1ZXN8fChkPQplc3RpbmF0aW9uX2dyb3VwLnZhbHVlcz0zRFtdKSxkZXN0aW5h
dGlvbl9ncm91cC52YWx1ZXM9M0RkZXN0aW5hdGlvbl9ncm91cC49CnZhbHVlcy5jb25jYXQoc291
cmNlX2dyb3VwLnZhbHVlcyk7aWYoc291cmNlX2dyb3VwLnZhbHVlcy5sZW5ndGg9M0Q9M0QwKXtz
PQo9M0QhMDticmVha319aWYoKytmPHUmJiFzKXtuJiZuKHBhcnNlSW50KGYvdSoxMDApKTt2YXIg
bD0zRGkuc3RhcnQrcjtpPTNEJC49CmV4dGVuZCghMCxhLHtzdGFydDpsfSksYyhpKX1lbHNlIHQo
KX0pfXZhciB0PTNEZS5zdWNjZXNzLG49M0RlLnByb2dyZXNzLHI9Cj0zRHRoaXMuYXBwLmNvbmZp
Zy5nZXQoInF1ZXJ5X2xpbWl0IiksaT0zRGUuc3RhcnR8fDAscz0zRGkrZS5xdWVyeV9saW1pdHx8
aT0KK3RoaXMuYXBwLmNvbmZpZy5nZXQoInF1ZXJ5X2xpbWl0Iiksbz0zRE1hdGguYWJzKHMtaSk7
aWYobzw9M0QwKXtjb25zb2xlLmRlPQpidWcoIkZBSUxFRCAtIERhdGFzZXRzOjpyZXF1ZXN0KCkg
LSBJbnZhbGlkIHF1ZXJ5IHJhbmdlLiIpO3JldHVybn12YXIgdT0zRE09CmF0aC5jZWlsKG8vcil8
fDEsYT0zRCQuZXh0ZW5kKCEwLHt9LGUpLGY9M0QwLGw9M0R0aGlzLGg9M0QkLmV4dGVuZCghMCxh
LHtzdD0KYXJ0Oml9KTt0aGlzLl9nZXRfZGF0YXNldChlLmlkLGZ1bmN0aW9uKCl7YyhoKX0pfSxf
Z2V0X2RhdGFzZXQ6ZnVuY3Rpb24odCxuPQoscil7dmFyIGk9M0R0aGlzLmxpc3RbdF07aWYoaSl7
bihpKTtyZXR1cm59dmFyIHM9M0R0aGlzO2UucmVxdWVzdCh7dHlwZToiR0U9ClQiLHVybDpjb25m
aWcucm9vdCsiYXBpL2RhdGFzZXRzLyIrdCxzdWNjZXNzOmZ1bmN0aW9uKGUpe3N3aXRjaChlLnN0
YXRlKXtjYT0Kc2UiZXJyb3IiOnImJnIoZSk7YnJlYWs7ZGVmYXVsdDpzLmxpc3RbdF09M0RlLG4o
ZSl9fX0pfSxfYmxvY2tfaWQ6ZnVuY3Rpb24oPQplLHQpe3JldHVybiBlLmlkKyJfIitlLnN0YXJ0
KyJfIitlLnN0YXJ0K3RoaXMuYXBwLmNvbmZpZy5nZXQoInF1ZXJ5X2xpbWl0Iik9CisiXyIrdH0s
X2dldDpmdW5jdGlvbihlLHQpe2Uuc3RhcnQ9M0RlLnN0YXJ0fHwwO3ZhciBuPTNEW10scj0zRHt9
LGk9M0QwO2Zvcj0KKHZhciBzIGluIGUuZ3JvdXBzKXt2YXIgbz0zRGUuZ3JvdXBzW3NdO2Zvcih2
YXIgdSBpbiBvLmNvbHVtbnMpe3ZhciBhPTNEby5jPQpvbHVtbnNbdV0uaW5kZXgsZj0zRHRoaXMu
X2Jsb2NrX2lkKGUsYSk7aWYodGhpcy5jYWNoZVtmXXx8YT0zRD0zRD0zRCJhdXRvInw9CnxhPTNE
PTNEPTNEInplcm8iKWNvbnRpbnVlOyFyW2FdJiZhIT0zRD0zRHVuZGVmaW5lZCYmKHJbYV09M0Rp
LG4ucHVzaChhKSxpKz0KKyl9fWlmKG4ubGVuZ3RoPTNEPTNEMCl7dGhpcy5fZmlsbF9mcm9tX2Nh
Y2hlKGUpLHQoZSk7cmV0dXJufXZhciBsPTNEe2RhdGFzPQpldF9pZDplLmlkLHN0YXJ0OmUuc3Rh
cnQsY29sdW1uczpufSxjPTNEdGhpczt0aGlzLl9mZXRjaChsLGZ1bmN0aW9uKHIpe2Zvcig9CnZh
ciBpIGluIHIpe3ZhciBzPTNEbltpXSxvPTNEYy5fYmxvY2tfaWQoZSxzKTtjLmNhY2hlW29dPTNE
cltpXX1jLl9maWxsX2Zybz0KbV9jYWNoZShlKSx0KGUpfSl9LF9maWxsX2Zyb21fY2FjaGU6ZnVu
Y3Rpb24oZSl7dmFyIHQ9M0RlLnN0YXJ0O2NvbnNvbGUuZGViPQp1ZygiRGF0YXNldHM6Ol9maWxs
X2Zyb21fY2FjaGUoKSAtIEZpbGxpbmcgcmVxdWVzdCBmcm9tIGNhY2hlIGF0ICIrdCsiLiIpO3Y9
CmFyIG49M0QwO2Zvcih2YXIgciBpbiBlLmdyb3Vwcyl7dmFyIGk9M0RlLmdyb3Vwc1tyXTtmb3Io
dmFyIHMgaW4gaS5jb2x1bW5zKT0Ke3ZhciBvPTNEaS5jb2x1bW5zW3NdLHU9M0R0aGlzLl9ibG9j
a19pZChlLG8uaW5kZXgpLGE9M0R0aGlzLmNhY2hlW3VdO2EmJihuPQo9M0RNYXRoLm1heChuLGEu
bGVuZ3RoKSl9fW49M0Q9M0QwJiZjb25zb2xlLmRlYnVnKCJEYXRhc2V0czo6X2ZpbGxfZnJvbV9j
YWM9CmhlKCkgLSBSZWFjaGVkIGRhdGEgcmFuZ2UgbGltaXQuIik7Zm9yKHZhciByIGluIGUuZ3Jv
dXBzKXt2YXIgaT0zRGUuZ3JvdXBzWz0Kcl07aS52YWx1ZXM9M0RbXTtmb3IodmFyIGY9M0QwO2Y8
bjtmKyspaS52YWx1ZXNbZl09M0R7eDpwYXJzZUludChmKSt0fX1mb3IoPQp2YXIgciBpbiBlLmdy
b3Vwcyl7dmFyIGk9M0RlLmdyb3Vwc1tyXTtmb3IodmFyIHMgaW4gaS5jb2x1bW5zKXt2YXIgbz0z
RGkuY289Cmx1bW5zW3NdO3N3aXRjaChvLmluZGV4KXtjYXNlImF1dG8iOmZvcih2YXIgZj0zRDA7
ZjxuO2YrKyl7dmFyIGw9M0RpLnZhbHVlcz0KW2ZdO2xbc109M0RwYXJzZUludChmKSt0fWJyZWFr
O2Nhc2UiemVybyI6Zm9yKHZhciBmPTNEMDtmPG47ZisrKXt2YXIgbD0zRGkuPQp2YWx1ZXNbZl07
bFtzXT0zRDB9YnJlYWs7ZGVmYXVsdDp2YXIgdT0zRHRoaXMuX2Jsb2NrX2lkKGUsby5pbmRleCks
YT0zRHRoaXM9Ci5jYWNoZVt1XTtmb3IodmFyIGY9M0QwO2Y8bjtmKyspe3ZhciBsPTNEaS52YWx1
ZXNbZl0sYz0zRGFbZl07aXNOYU4oYykmJiFvLj0KaXNfbGFiZWwmJihjPTNEMCksbFtzXT0zRGN9
fX19fSxfZmV0Y2g6ZnVuY3Rpb24odCxuKXt2YXIgcj0zRHQuc3RhcnQ/dC5zdGFyPQp0OjAsaT0z
RHRoaXMuYXBwLmNvbmZpZy5nZXQoInF1ZXJ5X2xpbWl0Iikscz0zRDA7dC5jb2x1bW5zJiYocz0z
RHQuY29sdW1ucy49Cmxlbmd0aCxjb25zb2xlLmRlYnVnKCJEYXRhc2V0czo6X2ZldGNoKCkgLSBG
ZXRjaGluZyAiK3MrIiBjb2x1bW4ocykgYXQgIityKz0KIi4iKSkscz0zRD0zRDAmJmNvbnNvbGUu
ZGVidWcoIkRhdGFzZXRzOjpfZmV0Y2goKSAtIE5vIGNvbHVtbnMgcmVxdWVzdGVkIik7PQp2YXIg
bz0zRCIiO2Zvcih2YXIgdSBpbiB0LmNvbHVtbnMpbys9M0R0LmNvbHVtbnNbdV0rIiwiO289M0Rv
LnN1YnN0cmluZygwLG89Ci5sZW5ndGgtMSk7dmFyIGE9M0R0aGlzO2UucmVxdWVzdCh7dHlwZToi
R0VUIix1cmw6Y29uZmlnLnJvb3QrImFwaS9kYXRhc2V0cz0KLyIrdC5kYXRhc2V0X2lkLGRhdGE6
e2RhdGFfdHlwZToicmF3X2RhdGEiLHByb3ZpZGVyOiJkYXRhc2V0LWNvbHVtbiIsbGltaXQ6PQpp
LG9mZnNldDpyLGluZGVjZXM6b30sc3VjY2VzczpmdW5jdGlvbihlKXt2YXIgdD0zRG5ldyBBcnJh
eShzKTtmb3IodmFyIHI9M0Q9CjA7cjxzO3IrKyl0W3JdPTNEW107Zm9yKHZhciByIGluIGUuZGF0
YSl7dmFyIGk9M0RlLmRhdGFbcl07Zm9yKHZhciBvIGluIGkpez0KdmFyIHU9M0RpW29dO3UhPTNE
PTNEdW5kZWZpbmVkJiZ1IT0zRDIxNDc0ODM2NDcmJnRbb10ucHVzaCh1KX19Y29uc29sZS5kZWJ1
PQpnKCJEYXRhc2V0czo6X2ZldGNoKCkgLSBGZXRjaGluZyBjb21wbGV0ZS4iKSxuKHQpfX0pfX0p
fSksZGVmaW5lKCJwbHVnaW4vbW89CmRlbHMvZ3JvdXAiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIEJh
Y2tib25lLk1vZGVsLmV4dGVuZCh7ZGVmYXVsdHM6e2tleToiRGF0YT0KIGxhYmVsIixkYXRlOiIi
fSxyZXNldDpmdW5jdGlvbigpe3RoaXMuY2xlYXIoe3NpbGVudDohMH0pLnNldCh0aGlzLmRlZmF1
bHRzPQopLHRoaXMudHJpZ2dlcigicmVzZXQiLHRoaXMpfX0pfSksZGVmaW5lKCJwbHVnaW4vbW9k
ZWxzL2dyb3VwcyIsWyJwbHVnaW4vbW89CmRlbHMvZ3JvdXAiXSxmdW5jdGlvbihlKXtyZXR1cm4g
QmFja2JvbmUuQ29sbGVjdGlvbi5leHRlbmQoe21vZGVsOmV9KX0pLGRlZj0KaW5lKCJwbHVnaW4v
bW9kZWxzL2NoYXJ0IixbInBsdWdpbi9tb2RlbHMvZ3JvdXBzIl0sZnVuY3Rpb24oZSl7cmV0dXJu
IEJhY2tiPQpvbmUuTW9kZWwuZXh0ZW5kKHtkZWZhdWx0czp7aWQ6bnVsbCx0aXRsZToiIix0eXBl
OiIiLGRhdGU6bnVsbCxzdGF0ZToiIixzdGE9CnRlX2luZm86IiIsbW9kaWZpZWQ6ITEsZGF0YXNl
dF9pZDoiIixkYXRhc2V0X2lkX2pvYjoiIn0saW5pdGlhbGl6ZTpmdW5jdGlvbj0KKHQpe3RoaXMu
Z3JvdXBzPTNEbmV3IGUsdGhpcy5zZXR0aW5ncz0zRG5ldyBCYWNrYm9uZS5Nb2RlbH0scmVzZXQ6
ZnVuY3Rpb24oPQope3RoaXMuY2xlYXIoe3NpbGVudDohMH0pLnNldCh0aGlzLmRlZmF1bHRzKSx0
aGlzLmdyb3Vwcy5yZXNldCgpLHRoaXMuc2V0dGk9Cm5ncy5jbGVhcigpLHRoaXMudHJpZ2dlcigi
cmVzZXQiLHRoaXMpfSxjb3B5OmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpczt0LmNsZT0KYXIoe3Np
bGVudDohMH0pLnNldCh0aGlzLmRlZmF1bHRzKSx0LnNldChlLmF0dHJpYnV0ZXMpLHQuc2V0dGlu
Z3M9M0RlLnNldHRpPQpuZ3MuY2xvbmUoKSx0Lmdyb3Vwcy5yZXNldCgpLGUuZ3JvdXBzLmVhY2go
ZnVuY3Rpb24oZSl7dC5ncm91cHMuYWRkKGUuY2xvbmU9CigpKX0pLHQudHJpZ2dlcigiY2hhbmdl
Iix0KX0sc3RhdGU6ZnVuY3Rpb24oZSx0KXt0aGlzLnNldCgic3RhdGUiLGUpLHRoaXMucz0KZXQo
InN0YXRlX2luZm8iLHQpLHRoaXMudHJpZ2dlcigic2V0OnN0YXRlIiksY29uc29sZS5kZWJ1Zygi
Q2hhcnQ6c3RhdGUoKSAtPQogIit0KyIgKCIrZSsiKSIpfX0pfSk7dmFyIFZpc3VhbGl6YXRpb249
M0RCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe2RlZmF1bHRzOns9CmNvbmZpZzp7fX0sdXJsUm9vdDpm
dW5jdGlvbigpe3ZhciBlPTNEIi9hcGkvdmlzdWFsaXphdGlvbnMiO3JldHVybiB3aW5kb3cuZz0K
YWxheHlfY29uZmlnJiZnYWxheHlfY29uZmlnLnJvb3Q/Z2FsYXh5X2NvbmZpZy5yb290K2U6ZX0s
aW5pdGlhbGl6ZTpmdW5jdGlvPQpuKGUpe18uaXNPYmplY3QoZS5jb25maWcpJiZfLmlzT2JqZWN0
KHRoaXMuZGVmYXVsdHMuY29uZmlnKSYmXy5kZWZhdWx0cyhlLmM9Cm9uZmlnLHRoaXMuZGVmYXVs
dHMuY29uZmlnKSx0aGlzLl9zZXRVcExpc3RlbmVycygpfSxfc2V0VXBMaXN0ZW5lcnM6ZnVuY3Rp
bz0Kbigpe30sc2V0OmZ1bmN0aW9uKGUsdCl7aWYoZT0zRD0zRD0zRCJjb25maWciKXt2YXIgbj0z
RHRoaXMuZ2V0KCJjb25maWciKTtfPQouaXNPYmplY3QobikmJih0PTNEXy5leHRlbmQoXy5jbG9u
ZShuKSx0KSl9cmV0dXJuIEJhY2tib25lLk1vZGVsLnByb3RvdHlwZS49CnNldC5jYWxsKHRoaXMs
ZSx0KSx0aGlzfSx0b1N0cmluZzpmdW5jdGlvbigpe3ZhciBlPTNEdGhpcy5nZXQoImlkIil8fCIi
O3JldD0KdXJuIHRoaXMuZ2V0KCJ0aXRsZSIpJiYoZSs9M0QiOiIrdGhpcy5nZXQoInRpdGxlIikp
LCJWaXN1YWxpemF0aW9uKCIrZSsiKSJ9PQp9KSxWaXN1YWxpemF0aW9uQ29sbGVjdGlvbj0zREJh
Y2tib25lLkNvbGxlY3Rpb24uZXh0ZW5kKHttb2RlbDpWaXN1YWxpemF0aW89Cm4sdXJsOmZ1bmN0
aW9uKCl7cmV0dXJuIGdhbGF4eV9jb25maWcucm9vdCsiYXBpL3Zpc3VhbGl6YXRpb25zIn0saW5p
dGlhbGl6ZT0KOmZ1bmN0aW9uKGUsdCl7dD0zRHR8fHt9fSxzZXQ6ZnVuY3Rpb24oZSx0KXt2YXIg
bj0zRHRoaXM7ZT0zRF8ubWFwKGUsZnVuY3RpPQpvbihlKXt2YXIgdD0zRG4uZ2V0KGUuaWQpO2lm
KCF0KXJldHVybiBlO3ZhciByPTNEdC50b0pTT04oKTtyZXR1cm4gXy5leHRlbmQ9CihyLGUpLHJ9
KSxCYWNrYm9uZS5Db2xsZWN0aW9uLnByb3RvdHlwZS5zZXQuY2FsbCh0aGlzLGUsdCl9LHRvU3Ry
aW5nOmZ1bmN0aT0Kb24oKXtyZXR1cm5bIlZpc3VhbGl6YXRpb25Db2xsZWN0aW9uKCIsW3RoaXMu
aGlzdG9yeUlkLHRoaXMubGVuZ3RoXS5qb2luKCksPQoiKSJdLmpvaW4oIiIpfX0pO2RlZmluZSgi
bXZjL3Zpc3VhbGl6YXRpb24vdmlzdWFsaXphdGlvbi1tb2RlbCIsZnVuY3Rpb24oKXs9Cn0pLGRl
ZmluZSgicGx1Z2luL2xpYnJhcnkvc3RvcmFnZSIsWyJ1dGlscy91dGlscyIsInBsdWdpbi9tb2Rl
bHMvY2hhcnQiLCJwbD0KdWdpbi9tb2RlbHMvZ3JvdXAiLCJtdmMvdmlzdWFsaXphdGlvbi92aXN1
YWxpemF0aW9uLW1vZGVsIl0sZnVuY3Rpb24oZSx0LG4pPQp7cmV0dXJuIEJhY2tib25lLk1vZGVs
LmV4dGVuZCh7dmlzOm51bGwsaW5pdGlhbGl6ZTpmdW5jdGlvbihlKXt0aGlzLmFwcD0zRGU9Cix0
aGlzLmNoYXJ0PTNEdGhpcy5hcHAuY2hhcnQsdGhpcy5vcHRpb25zPTNEdGhpcy5hcHAub3B0aW9u
cyx0aGlzLmlkPTNEdGhpcz0KLm9wdGlvbnMuaWQsdGhpcy52aXM9M0RuZXcgVmlzdWFsaXphdGlv
bih7dHlwZToiY2hhcnRzIixjb25maWc6e2RhdGFzZXRfaWQ6PQp0aGlzLm9wdGlvbnMuY29uZmln
LmRhdGFzZXRfaWQsY2hhcnRfZGljdDp7fX19KSx0aGlzLmlkJiYodGhpcy52aXMuaWQ9M0R0aGk9
CnMuaWQpO3ZhciB0PTNEdGhpcy5vcHRpb25zLmNvbmZpZy5jaGFydF9kaWN0O3QmJih0aGlzLnZp
cy5nZXQoImNvbmZpZyIpLmNoYT0KcnRfZGljdD0zRHQpfSxzYXZlOmZ1bmN0aW9uKCl7dmFyIGU9
M0R0aGlzLmFwcC5jaGFydDt0aGlzLnZpcy5nZXQoImNvbmZpZyIpPQouY2hhcnRfZGljdD0zRHt9
O3ZhciB0PTNEZS5nZXQoInRpdGxlIik7dCE9M0QiIiYmdGhpcy52aXMuc2V0KCJ0aXRsZSIsdCk7
dmE9CnIgbj0zRHthdHRyaWJ1dGVzOmUuYXR0cmlidXRlcyxzZXR0aW5nczplLnNldHRpbmdzLmF0
dHJpYnV0ZXMsZ3JvdXBzOltdfTtlLj0KZ3JvdXBzLmVhY2goZnVuY3Rpb24oZSl7bi5ncm91cHMu
cHVzaChlLmF0dHJpYnV0ZXMpfSksdGhpcy52aXMuZ2V0KCJjb25maWciPQopLmNoYXJ0X2RpY3Q9
M0RuO3ZhciByPTNEdGhpczt0aGlzLnZpcy5zYXZlKCkuZmFpbChmdW5jdGlvbihlLHQsbil7Y29u
c29sZS49CmVycm9yKGUsdCxuKX0pLnRoZW4oZnVuY3Rpb24oZSl7ZSYmZS5pZCYmKHIuaWQ9M0Rl
LmlkKX0pfSxsb2FkOmZ1bmN0aW9uKCl7dj0KYXIgZT0zRHRoaXMudmlzLmdldCgiY29uZmlnIiku
Y2hhcnRfZGljdDtpZighZS5hdHRyaWJ1dGVzKXJldHVybiExO3ZhciB0PTNEPQplLmF0dHJpYnV0
ZXMudHlwZTtpZighdClyZXR1cm4gY29uc29sZS5kZWJ1ZygiU3RvcmFnZTo6bG9hZCgpIC0gQ2hh
cnQgdHlwZSA9Cm5vdCBwcm92aWRlZC4gSW52YWxpZCBmb3JtYXQuIiksITE7dmFyIHI9M0R0aGlz
LmFwcC50eXBlcy5nZXQodCk7aWYoIXIpcmV0dT0Kcm4gY29uc29sZS5kZWJ1ZygiU3RvcmFnZTo6
bG9hZCgpIC0gQ2hhcnQgdHlwZSBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgcmUtY29uPQpmaWd1cmUg
dGhlIGNoYXJ0LiBSZXNldHRpbmcgY2hhcnQuIiksITE7Y29uc29sZS5kZWJ1ZygiU3RvcmFnZTo6
bG9hZCgpIC0gTG89CmFkaW5nIGNoYXJ0IHR5cGUgIit0KyIuIiksdGhpcy5jaGFydC5kZWZpbml0
aW9uPTNEcix0aGlzLmNoYXJ0LnNldChlLmF0dHJpYj0KdXRlcyksdGhpcy5jaGFydC5zdGF0ZSgi
b2siLCJMb2FkaW5nIHNhdmVkIHZpc3VhbGl6YXRpb24uLi4iKSx0aGlzLmNoYXJ0LnNlPQp0dGlu
Z3Muc2V0KGUuc2V0dGluZ3MpO2Zvcih2YXIgaSBpbiBlLmdyb3Vwcyl0aGlzLmNoYXJ0Lmdyb3Vw
cy5hZGQobmV3IG4oZS49Cmdyb3Vwc1tpXSkpO3JldHVybiB0aGlzLmNoYXJ0LnNldCgibW9kaWZp
ZWQiLCExKSwhMH19KX0pLGRlZmluZSgidXRpbHMvZGVmZT0KcnJlZCIsWyJ1dGlscy91dGlscyJd
LGZ1bmN0aW9uKGUpe3JldHVybiBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe3F1ZXVlOltdLHByPQpv
Y2Vzczp7fSxjb3VudGVyOjAsaW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMub24oInJlZnJlc2gi
LGZ1bmN0aW9uKCl7aWYodGg9CmlzLnF1ZXVlLmxlbmd0aD4wJiZ0aGlzLnJlYWR5KCkpe3ZhciBl
PTNEdGhpcy5xdWV1ZVswXTt0aGlzLnF1ZXVlLnNwbGljZSgwLD0KMSksZSYmZSgpfX0pfSxleGVj
dXRlOmZ1bmN0aW9uKGUpe3RoaXMucXVldWUucHVzaChlKSx0aGlzLnRyaWdnZXIoInJlZnJlc2gi
PQopfSxyZWdpc3RlcjpmdW5jdGlvbigpe3ZhciB0PTNEZS51dWlkKCk7cmV0dXJuIHRoaXMucHJv
Y2Vzc1t0XT0zRCEwLHRoaXMuY289CnVudGVyKyssY29uc29sZS5kZWJ1ZygiRGVmZXJyZWQ6cmVn
aXN0ZXIoKSAtIFJlZ2lzdGVyaW5nICIrdCksdH0sZG9uZTpmdW5jdD0KaW9uKGUpe3RoaXMucHJv
Y2Vzc1tlXSYmKGRlbGV0ZSB0aGlzLnByb2Nlc3NbZV0sdGhpcy5jb3VudGVyLS0sY29uc29sZS5k
ZWJ1PQpnKCJEZWZlcnJlZDpkb25lKCkgLSBVbnJlZ2lzdGVyaW5nICIrZSksdGhpcy50cmlnZ2Vy
KCJyZWZyZXNoIikpfSxyZXNldDpmdW49CmN0aW9uKCl7dGhpcy5xdWV1ZT0zRFtdfSxyZWFkeTpm
dW5jdGlvbigpe3JldHVybiB0aGlzLmNvdW50ZXI9M0Q9M0QwfX0pfSksZD0KZWZpbmUoInBsdWdp
bi92aWV3cy92aWV3cG9ydCIsWyJtdmMvdWkvdWktcG9ydGxldCIsIm12Yy91aS91aS1taXNjIiwi
dXRpbHMvPQp1dGlscyJdLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gQmFja2JvbmUuVmlldy5leHRl
bmQoe2NvbnRhaW5lcl9saXN0OltdLGNhbnY9CmFzX2xpc3Q6W10saW5pdGlhbGl6ZTpmdW5jdGlv
bihlLHQpe3RoaXMuYXBwPTNEZSx0aGlzLmNoYXJ0PTNEdGhpcy5hcHAuY2hhcj0KdCx0aGlzLm9w
dGlvbnM9M0RuLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGVtZW50KCQo
dGhpcy5fdGVtPQpwbGF0ZSgpKSksdGhpcy5fZnVsbHNjcmVlbih0aGlzLiRlbCwxMDApO3ZhciBy
PTNEJCgiYm9keSIpLmNzcygib3ZlcmZsb3ciKTs9CnRoaXMuJGVsLm9uKCJtb3VzZW92ZXIiLGZ1
bmN0aW9uKCl7JCgiYm9keSIpLmNzcygib3ZlcmZsb3ciLCJoaWRkZW4iKX0pLm9uKD0KIm1vdXNl
b3V0IixmdW5jdGlvbigpeyQoImJvZHkiKS5jc3MoIm92ZXJmbG93IixyKX0pLHRoaXMuX2NyZWF0
ZUNvbnRhaW5lcigiPQpkaXYiKTt2YXIgaT0zRHRoaXM7dGhpcy5jaGFydC5vbigicmVkcmF3Iixm
dW5jdGlvbigpe2kuX2RyYXcoaS5jaGFydCl9KSx0aGk9CnMuY2hhcnQub24oInNldDpzdGF0ZSIs
ZnVuY3Rpb24oKXt2YXIgZT0zRGkuJGVsLmZpbmQoIiNpbmZvIiksdD0zRGkuJGVsLmZpbj0KZCgi
LmNoYXJ0cy12aWV3cG9ydC1jb250YWluZXIiKSxuPTNEZS5maW5kKCIjaWNvbiIpO24ucmVtb3Zl
Q2xhc3MoKSxlLnNob3coPQopLGUuZmluZCgiI3RleHQiKS5odG1sKGkuY2hhcnQuZ2V0KCJzdGF0
ZV9pbmZvIikpO3ZhciByPTNEaS5jaGFydC5nZXQoInN0YXQ9CmUiKTtzd2l0Y2gocil7Y2FzZSJv
ayI6ZS5oaWRlKCksdC5zaG93KCk7YnJlYWs7Y2FzZSJmYWlsZWQiOm4uYWRkQ2xhc3MoImljbz0K
biBmYSBmYS13YXJuaW5nIiksdC5oaWRlKCk7YnJlYWs7ZGVmYXVsdDpuLmFkZENsYXNzKCJpY29u
IGZhIGZhLXNwaW5uZXIgZmEtPQpzcGluIiksdC5zaG93KCl9fSl9LHNob3c6ZnVuY3Rpb24oKXt0
aGlzLiRlbC5zaG93KCl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLiQ9CmVsLmhpZGUoKX0sX2Z1bGxz
Y3JlZW46ZnVuY3Rpb24oZSx0KXtlLmNzcygiaGVpZ2h0IiwkKHdpbmRvdykuaGVpZ2h0KCktdCks
JD0KKHdpbmRvdykucmVzaXplKGZ1bmN0aW9uKCl7ZS5jc3MoImhlaWdodCIsJCh3aW5kb3cpLmhl
aWdodCgpLXQpfSl9LF9jcmVhdGVDPQpvbnRhaW5lcjpmdW5jdGlvbihlLHQpe3Q9M0R0fHwxO2Zv
cih2YXIgbiBpbiB0aGlzLmNvbnRhaW5lcl9saXN0KXRoaXMuY29udGE9CmluZXJfbGlzdFtuXS5y
ZW1vdmUoKTt0aGlzLmNvbnRhaW5lcl9saXN0PTNEW10sdGhpcy5jYW52YXNfbGlzdD0zRFtdO2Zv
cih2YT0KciBuPTNEMDtuPHQ7bisrKXt2YXIgcj0zRCQodGhpcy5fdGVtcGxhdGVDb250YWluZXIo
ZSxwYXJzZUludCgxMDAvdCkpKTt0aGlzPQouJGVsLmFwcGVuZChyKSx0aGlzLmNvbnRhaW5lcl9s
aXN0W25dPTNEcix0aGlzLmNhbnZhc19saXN0W25dPTNEci5maW5kKCIuY2g9CmFydHMtdmlld3Bv
cnQtY2FudmFzIikuYXR0cigiaWQiKX19LF9kcmF3OmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcyxu
PTNEdGhpcz0KLmFwcC5kZWZlcnJlZC5yZWdpc3RlcigpLHI9M0RlLmdldCgidHlwZSIpO3RoaXMu
Y2hhcnRfZGVmaW5pdGlvbj0zRGUuZGVmaW5pPQp0aW9uO3ZhciBpPTNEMTtlLnNldHRpbmdzLmdl
dCgidXNlX3BhbmVscyIpPTNEPTNEPTNEInRydWUiJiYoaT0zRGUuZ3JvdXBzLmw9CmVuZ3RoKSx0
aGlzLl9jcmVhdGVDb250YWluZXIodGhpcy5jaGFydF9kZWZpbml0aW9uLnRhZyxpKSxlLnN0YXRl
KCJ3YWl0IiwiUD0KbGVhc2Ugd2FpdC4uLiIpO2lmKCF0aGlzLmNoYXJ0X2RlZmluaXRpb24uZXhl
Y3V0ZXx8dGhpcy5jaGFydF9kZWZpbml0aW9uLmV4PQplY3V0ZSYmZS5nZXQoIm1vZGlmaWVkIikp
dGhpcy5hcHAuam9icy5jbGVhbnVwKGUpLGUuc2V0KCJtb2RpZmllZCIsITEpO3ZhciA9CnQ9M0R0
aGlzO3JlcXVpcmUoWyJwbHVnaW4vY2hhcnRzLyIrdGhpcy5hcHAuY2hhcnRQYXRoKHIpKyIvd3Jh
cHBlciJdLGZ1bmN0aT0Kb24ocil7aWYodC5jaGFydF9kZWZpbml0aW9uLmV4ZWN1dGUpdC5hcHAu
am9icy5yZXF1ZXN0KGUsdC5fZGVmYXVsdFNldHRpbmdzPQpTdHJpbmcoZSksdC5fZGVmYXVsdFJl
cXVlc3RTdHJpbmcoZSksZnVuY3Rpb24oKXt2YXIgaT0zRG5ldyByKHQuYXBwLHtwcm9jZXM9CnNf
aWQ6bixjaGFydDplLHJlcXVlc3RfZGljdGlvbmFyeTp0Ll9kZWZhdWx0UmVxdWVzdERpY3Rpb25h
cnkoZSksY2FudmFzX2xpcz0KdDp0LmNhbnZhc19saXN0fSl9LGZ1bmN0aW9uKCl7dGhpcy5hcHAu
ZGVmZXJyZWQuZG9uZShuKX0pO2Vsc2UgdmFyIGk9M0RuZXcgPQpyKHQuYXBwLHtwcm9jZXNzX2lk
Om4sY2hhcnQ6ZSxyZXF1ZXN0X2RpY3Rpb25hcnk6dC5fZGVmYXVsdFJlcXVlc3REaWN0aW9uYXI9
CnkoZSksY2FudmFzX2xpc3Q6dC5jYW52YXNfbGlzdH0pfSl9LF9kZWZhdWx0UmVxdWVzdFN0cmlu
ZzpmdW5jdGlvbihlKXt2YXIgdD0KPTNEIiIsbj0zRDAscj0zRHRoaXM7cmV0dXJuIGUuZ3JvdXBz
LmVhY2goZnVuY3Rpb24oZSl7bisrO2Zvcih2YXIgaSBpbiByLmNoPQphcnRfZGVmaW5pdGlvbi5j
b2x1bW5zKXQrPTNEaSsiXyIrbisiOiIrKHBhcnNlSW50KGUuZ2V0KGkpKSsxKSsiLCAifSksdC5z
dWI9CnN0cmluZygwLHQubGVuZ3RoLTIpfSxfZGVmYXVsdFNldHRpbmdzU3RyaW5nOmZ1bmN0aW9u
KGUpe3ZhciB0PTNEIiI7Zm9yKGtleT0KIGluIGUuc2V0dGluZ3MuYXR0cmlidXRlcyl0Kz0zRGtl
eSsiOiIrZS5zZXR0aW5ncy5nZXQoa2V5KSsiLCAiO3JldHVybiB0LnN1PQpic3RyaW5nKDAsdC5s
ZW5ndGgtMil9LF9kZWZhdWx0UmVxdWVzdERpY3Rpb25hcnk6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R7
Z3JvdXA9CnM6W119O3RoaXMuY2hhcnRfZGVmaW5pdGlvbi5leGVjdXRlP3QuaWQ9M0RlLmdldCgi
ZGF0YXNldF9pZF9qb2IiKTp0LmlkPTNEZT0KLmdldCgiZGF0YXNldF9pZCIpO3ZhciByPTNEMCxp
PTNEdGhpcztyZXR1cm4gZS5ncm91cHMuZWFjaChmdW5jdGlvbihlKXt2YXIgPQpzPTNEe307Zm9y
KHZhciBvIGluIGkuY2hhcnRfZGVmaW5pdGlvbi5jb2x1bW5zKXt2YXIgdT0zRGkuY2hhcnRfZGVm
aW5pdGlvbi49CmNvbHVtbnNbb107c1tvXT0zRG4ubWVyZ2Uoe2luZGV4OmUuZ2V0KG8pfSx1KX10
Lmdyb3Vwcy5wdXNoKHtrZXk6KytyKyI6IitlLj0KZ2V0KCJrZXkiKSxjb2x1bW5zOnN9KX0pLHR9
LF90ZW1wbGF0ZTpmdW5jdGlvbigpe3JldHVybic8ZGl2IGNsYXNzPTNEImNoYXJ0PQpzLXZpZXdw
b3J0Ij48ZGl2IGlkPTNEImluZm8iIGNsYXNzPTNEImluZm8iPjxzcGFuIGlkPTNEImljb24iIGNs
YXNzPTNEImljb249CiIvPjxzcGFuIGlkPTNEInRleHQiIGNsYXNzPTNEInRleHQiIC8+PC9kaXY+
PC9kaXY+J30sX3RlbXBsYXRlQ29udGFpbmVyOmZ1bj0KY3Rpb24oZSx0KXtyZXR1cm4nPGRpdiBj
bGFzcz0zRCJjaGFydHMtdmlld3BvcnQtY29udGFpbmVyIiBzdHlsZT0zRCJ3aWR0aDonPQordCsn
JTsiPicrJzxkaXYgaWQ9M0QibWVudSIvPicrIjwiK2UrJyBpZD0zRCInK24udXVpZCgpKyciIGNs
YXNzPTNEImNoYXJ0cy09CnZpZXdwb3J0LWNhbnZhcyI+JysiPC9kaXY+In19KX0pLGRlZmluZSgi
cGx1Z2luL2xpYnJhcnkvc2NyZWVuc2hvdCIsWyJsaWJzLz0KdW5kZXJzY29yZSJdLGZ1bmN0aW9u
KGUpe2Z1bmN0aW9uIHQoZSl7ZS4kZWwuZmluZCgic3ZnIikubGVuZ3RoPjA/cihlKTpuKGUpPQp9
ZnVuY3Rpb24gbihlKXt0cnl7dmFyIHQ9M0RlLiRlbC5maW5kKCIuanFwbG90LXRhcmdldCIpLG49
M0R0LmpxcGxvdFRvSW1hZ2U9ClN0cih7fSk7biYmKHdpbmRvdy5sb2NhdGlvbi5ocmVmPTNEbi5y
ZXBsYWNlKCJpbWFnZS9wbmciLCJpbWFnZS9vY3RldC1zdHJlYT0KbSIpKX1jYXRjaChyKXtjb25z
b2xlLmRlYnVnKCJGQUlMRUQgLSBTY3JlZW5zaG90OjpfZnJvbUNhbnZhcygpIC0gIityKSxlLmVy
PQpyb3ImJmUuZXJyb3IoIlBsZWFzZSByZWR1Y2UgeW91ciBjaGFydCB0byBhIHNpbmdsZSBwYW5l
bCBhbmQgdHJ5IGFnYWluLiIpfX09CmZ1bmN0aW9uIHIoZSl7dmFyIHQ9M0RlLiRlbCxuPTNEZS51
cmwscj0zRGUubmFtZSxzPTNEbmV3IFhNTFNlcmlhbGl6ZXIsbz0zRD0KZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiY2FudmFzIiksdT0zRCQobyksYT0zRHQuZmluZCgic3ZnIikubGVuZ3RoLGY9M0R0
LmZpPQpuZCgic3ZnIikuZmlyc3QoKSxsPTNEcGFyc2VJbnQoZi5jc3MoImhlaWdodCIpKSxjPTNE
cGFyc2VJbnQoZi5jc3MoIndpZHRoIik9Cik7dS5hdHRyKCJ3aWR0aCIsYyphKSx1LmF0dHIoImhl
aWdodCIsbCksKCFvLmdldENvbnRleHR8fCFvLmdldENvbnRleHQoIjJkIj0KKSkmJmFsZXJ0KCJZ
b3VyIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IHRoaXMgZmVhdHVyZSwgcGxlYXNlIHVzZSBhIG1v
ZGVybiBiPQpyb3dzZXIiKTt2YXIgaD0zRG8uZ2V0Q29udGV4dCgiMmQiKSxwPTNEMDt0LmZpbmQo
InN2ZyIpLmVhY2goZnVuY3Rpb24oKXt2YXI9CiBlPTNEJCh0aGlzKTtlLmF0dHIoe3ZlcnNpb246
IjEuMSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aD0KOmMsaGVpZ2h0
Omx9KTt2YXIgdD0zRHMuc2VyaWFsaXplVG9TdHJpbmcodGhpcyk7aC5kcmF3U3ZnKHQscCwwLGMs
bCkscCs9M0RjPQp9KSx3aW5kb3cubG9jYXRpb24uaHJlZj0zRGkobyxvLmdldENvbnRleHQoIjJk
IiksIndoaXRlIikucmVwbGFjZSgiaW1hZ2UvcG49CmciLCJpbWFnZS9vY3RldC1zdHJlYW0iKX1m
dW5jdGlvbiBpKGUsdCxuKXt2YXIgcj0zRGUud2lkdGgsaT0zRGUuaGVpZ2h0LHM7aT0KZihuKXtz
PTNEdC5nZXRJbWFnZURhdGEoMCwwLHIsaSk7dmFyIG89M0R0Lmdsb2JhbENvbXBvc2l0ZU9wZXJh
dGlvbjt0Lmdsb2JhPQpsQ29tcG9zaXRlT3BlcmF0aW9uPTNEImRlc3RpbmF0aW9uLW92ZXIiLHQu
ZmlsbFN0eWxlPTNEbix0LmZpbGxSZWN0KDAsMCxyLGk9Cil9dmFyIHU9M0RlLnRvRGF0YVVSTCgi
aW1hZ2UvcG5nIik7cmV0dXJuIG4mJih0LmNsZWFyUmVjdCgwLDAscixpKSx0LnB1dEltYT0KZ2VE
YXRhKHMsMCwwKSx0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0zRG8pLHV9ZnVuY3Rpb24gcyhl
KXt3aW5kb3cubG9jYXRpPQpvbi5ocmVmPTNEImRhdGE6bm9uZS9ub25lO2Jhc2U2NCwiK2J0b2Eo
YShlKS5zdHJpbmcpfWZ1bmN0aW9uIG8oZSl7Zm9yKHZhciA9CnQgaW4gZG9jdW1lbnQuc3R5bGVT
aGVldHMpe3ZhciBuPTNEZG9jdW1lbnQuc3R5bGVTaGVldHNbdF0scj0zRG4uY3NzUnVsZXM7aT0K
ZihyKWZvcih2YXIgaT0zRDAscz0zRHIubGVuZ3RoO2k8cztpKyspdHJ5e2UuZmluZChyW2ldLnNl
bGVjdG9yVGV4dCkuZWFjaChmPQp1bmN0aW9uKGUsdCl7dC5zdHlsZS5jc3NUZXh0Kz0zRHJbaV0u
c3R5bGUuY3NzVGV4dH0pfWNhdGNoKG8pe319fWZ1bmN0aW9uIHU9CihlKXt2YXIgdD0zRGEoZSks
bj0zRHtmaWxlbmFtZTpuYW1lfHwiY2hhcnQiLHR5cGU6ImFwcGxpY2F0aW9uL3BkZiIsaGVpZ2h0
Oj0KdC5oZWlnaHQsd2lkdGg6dC53aWR0aCxzY2FsZToyLHN2Zzp0LnN0cmluZ30scj0zRCQoImJv
ZHkiKSxpPTNEci5maW5kKCIjdmllPQp3cG9ydC1mb3JtIik7aS5sZW5ndGg9M0Q9M0Q9M0QwJiYo
aT0zRCQoIjxmb3JtPiIse2lkOiJ2aWV3cG9ydC1mb3JtIixtZXRob2Q9CjoicG9zdCIsYWN0aW9u
OiJodHRwOi8vZXhwb3J0LmhpZ2hjaGFydHMuY29tLyIsZGlzcGxheToibm9uZSJ9KSxyLmFwcGVu
ZChpKT0KKSxpLmVtcHR5KCk7Zm9yKG5hbWUgaW4gbil7dmFyIHM9M0QkKCI8aW5wdXQvPiIse3R5
cGU6ImhpZGRlbiIsbmFtZTpuYW1lLHZhPQpsdWU6bltuYW1lXX0pO2kuYXBwZW5kKHMpfXRyeXtp
LnN1Ym1pdCgpfWNhdGNoKG8pe2NvbnNvbGUubG9nKG8pfX1mdW5jdGlvbiA9CmEoZSl7aWYoZS4k
ZWwuZmluZCgic3ZnIikubGVuZ3RoPTNEPTNEMCYmZS5lcnJvcil7ZS5lcnJvcigiTm8gU1ZHIGZv
dW5kLiBUaD0KaXMgY2hhcnQgdHlwZSBkb2VzIG5vdCBzdXBwb3J0IFNWRy9QREYgZXhwb3J0LiIp
O3JldHVybn12YXIgdD0zRGUuJGVsLG49M0R0PQouZmluZCgic3ZnIikubGVuZ3RoLHI9M0RwYXJz
ZUludCh0LmZpbmQoInN2ZyIpLmZpcnN0KCkuY3NzKCJoZWlnaHQiKSksaT0zRHA9CmFyc2VJbnQo
dC5maW5kKCJzdmciKS5maXJzdCgpLmNzcygid2lkdGgiKSkscz0zRG5ldyBYTUxTZXJpYWxpemVy
LHU9M0QkKCI8cz0KdmcvPiIpO3UuYXR0cih7dmVyc2lvbjoiMS4xIix4bWxuczoiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOmkqbixoPQplaWdodDpyfSk7dmFyIGE9M0QiIixmPTNE
MDtyZXR1cm4gdC5maW5kKCJzdmciKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGU9M0QkKHQ9Cmhpcyku
Y2xvbmUoKTtvKGUpO3ZhciB0PTNEJCgnPGcgdHJhbnNmb3JtPTNEInRyYW5zbGF0ZSgnK2YrJywg
MCkiPicpO3QuYXBwZT0KbmQoZS5maW5kKCJnIikuZmlyc3QoKSksdS5hcHBlbmQodCksZis9M0Rp
fSkse3N0cmluZzpzLnNlcmlhbGl6ZVRvU3RyaW5nKHVbPQowXSksaGVpZ2h0OnIsd2lkdGg6aX19
cmV0dXJue2NyZWF0ZVBORzp0LGNyZWF0ZVNWRzpzLGNyZWF0ZVBERjp1fX0pLGRlZmluZSg9CiJw
bHVnaW4vdmlld3Mvdmlld2VyIixbInV0aWxzL3V0aWxzIiwibXZjL3VpL3VpLW1pc2MiLCJtdmMv
dWkvdWktcG9ydGxldCIsIj0KcGx1Z2luL3ZpZXdzL3ZpZXdwb3J0IiwicGx1Z2luL2xpYnJhcnkv
c2NyZWVuc2hvdCJdLGZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0PQp1cm4gQmFja2JvbmUuVmlldy5l
eHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oZSxzKXt0aGlzLmFwcD0zRGUsdGhpcy5jaGFydD0K
PTNEdGhpcy5hcHAuY2hhcnQsdGhpcy52aWV3cG9ydF92aWV3PTNEbmV3IHIoZSk7dmFyIG89M0R0
aGlzO3RoaXMubWVzc2FnZT0KPTNEbmV3IHQuTWVzc2FnZTt2YXIgdT0zRG5ldyB0LkJ1dHRvbk1l
bnUoe2ljb246ImZhLWNhbWVyYSIsdGl0bGU6IlNjcmVlbnNoPQpvdCIsdG9vbHRpcDoiRG93bmxv
YWQgYXMgUE5HLCBTVkcgb3IgUERGIGZpbGUifSk7dS5hZGRNZW51KHtpZDoiYnV0dG9uLXBuZyI9
Cix0aXRsZToiU2F2ZSBhcyBQTkciLGljb246ImZhLWZpbGUiLG9uY2xpY2s6ZnVuY3Rpb24oKXtv
Ll93YWl0KG8uY2hhcnQsZnVuYz0KdGlvbigpe2kuY3JlYXRlUE5HKHskZWw6by52aWV3cG9ydF92
aWV3LiRlbCx0aXRsZTpvLmNoYXJ0LmdldCgidGl0bGUiKSxlcnJvPQpyOmZ1bmN0aW9uKGUpe28u
bWVzc2FnZS51cGRhdGUoe21lc3NhZ2U6ZSxzdGF0dXM6ImRhbmdlciJ9KX19KX0pfX0pLHUuYWRk
TWU9Cm51KHtpZDoiYnV0dG9uLXN2ZyIsdGl0bGU6IlNhdmUgYXMgU1ZHIixpY29uOiJmYS1maWxl
LXRleHQtbyIsb25jbGljazpmdW5jdD0KaW9uKCl7by5fd2FpdChvLmNoYXJ0LGZ1bmN0aW9uKCl7
aS5jcmVhdGVTVkcoeyRlbDpvLnZpZXdwb3J0X3ZpZXcuJGVsLHRpdGxlPQo6by5jaGFydC5nZXQo
InRpdGxlIiksZXJyb3I6ZnVuY3Rpb24oZSl7by5tZXNzYWdlLnVwZGF0ZSh7bWVzc2FnZTplLHN0
YXR1czo9CiJkYW5nZXIifSl9fSl9KX19KSx1LmFkZE1lbnUoe2lkOiJidXR0b24tcG5nIix0aXRs
ZToiU2F2ZSBhcyBQREYiLGljb246ImZhLT0KZmlsZS1vIixvbmNsaWNrOmZ1bmN0aW9uKCl7by5h
cHAubW9kYWwuc2hvdyh7dGl0bGU6IlNlbmQgY2hhcnQgZGF0YSBmb3IgUERGPQogY3JlYXRpb24i
LGJvZHk6IkdhbGF4eSBkb2VzIG5vdCBwcm92aWRlIGludGVncmF0ZWQgUERGIGV4cG9ydCBzY3Jp
cHRzLiBZb3U9CiBtYXkgY2xpY2sgJ0NvbnRpbnVlJyB0byBjcmVhdGUgdGhlIFBERiBieSB1c2lu
ZyBhIDNyZCBwYXJ0eSBzZXJ2aWNlIChodHRwcz0KOi8vZXhwb3J0LmhpZ2hjaGFydHMuY29tKS4i
LGJ1dHRvbnM6e0NhbmNlbDpmdW5jdGlvbigpe28uYXBwLm1vZGFsLmhpZGUoKX0sPQpDb250aW51
ZTpmdW5jdGlvbigpe28uYXBwLm1vZGFsLmhpZGUoKSxvLl93YWl0KG8uY2hhcnQsZnVuY3Rpb24o
KXtpLmNyZWF0ZVA9CkRGKHskZWw6by52aWV3cG9ydF92aWV3LiRlbCx0aXRsZTpvLmNoYXJ0Lmdl
dCgidGl0bGUiKSxlcnJvcjpmdW5jdGlvbihlKXtvLj0KbWVzc2FnZS51cGRhdGUoe21lc3NhZ2U6
ZSxzdGF0dXM6ImRhbmdlciJ9KX19KX0pfX19KX19KSx0aGlzLnBvcnRsZXQ9M0RuZXcgPQpuLlZp
ZXcoe2ljb246ImZhLWJhci1jaGFydC1vIix0aXRsZToiVmlld3BvcnQiLG9wZXJhdGlvbnM6e2Vk
aXRfYnV0dG9uOm5ldyA9CnQuQnV0dG9uSWNvbih7aWNvbjoiZmEtZWRpdCIsdG9vbHRpcDoiQ3Vz
dG9taXplIHRoaXMgY2hhcnQiLHRpdGxlOiJFZGl0b3IiLD0Kb25jbGljazpmdW5jdGlvbigpe28u
X3dhaXQoby5jaGFydCxmdW5jdGlvbigpe28uYXBwLmdvKCJlZGl0b3IiKX0pfX0pLHBpY3R1PQpy
ZV9idXR0b25fbWVudTp1fX0pLHRoaXMucG9ydGxldC5hcHBlbmQodGhpcy5tZXNzYWdlLiRlbCks
dGhpcy5wb3J0bGV0LmFwcGU9Cm5kKHRoaXMudmlld3BvcnRfdmlldy4kZWwpLHRoaXMuc2V0RWxl
bWVudCh0aGlzLnBvcnRsZXQuJGVsKTt2YXIgbz0zRHRoaXM7dD0KaGlzLmNoYXJ0Lm9uKCJjaGFu
Z2U6dGl0bGUiLGZ1bmN0aW9uKCl7by5fcmVmcmVzaFRpdGxlKCl9KX0sc2hvdzpmdW5jdGlvbigp
PQp7dGhpcy4kZWwuc2hvdygpLCQod2luZG93KS50cmlnZ2VyKCJyZXNpemUiKX0saGlkZTpmdW5j
dGlvbigpe3RoaXMuJGVsLmhpZGU9CigpfSxfcmVmcmVzaFRpdGxlOmZ1bmN0aW9uKCl7dmFyIGU9
M0R0aGlzLmNoYXJ0LmdldCgidGl0bGUiKTt0aGlzLnBvcnRsZXQudD0KaXRsZShlKX0sX3dhaXQ6
ZnVuY3Rpb24oZSx0KXt0aGlzLmFwcC5kZWZlcnJlZC5yZWFkeSgpP3QoKTp0aGlzLm1lc3NhZ2Uu
dXBkPQphdGUoe21lc3NhZ2U6IllvdXIgY2hhcnQgaXMgY3VycmVudGx5IGJlaW5nIHByb2Nlc3Nl
ZC4gUGxlYXNlIHdhaXQgYW5kIHRyeSA9CmFnYWluLiJ9KX19KX0pLGRlZmluZSgibXZjL3VpL3Vp
LXRhYnMiLFsidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihlKXt2YXIgdD0zRD0KQmFja2JvbmUuVmll
dy5leHRlbmQoe29wdGlvbnNEZWZhdWx0Ont0aXRsZV9uZXc6IiIsb3BlcmF0aW9uczpudWxsLG9u
bmV3Om51PQpsbCxtYXg6bnVsbCxvbmNoYW5nZTpudWxsfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQp
e3RoaXMudmlzaWJsZT0zRCExLHRoaXMuJG49CmF2PTNEbnVsbCx0aGlzLiRjb250ZW50PTNEbnVs
bCx0aGlzLmZpcnN0X3RhYj0zRG51bGwsdGhpcy5jdXJyZW50X2lkPTNEbnVsbD0KLHRoaXMub3B0
aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0KTt2YXIgbj0zRCQodGhpcy5fdGVt
cGxhdGUodGhpPQpzLm9wdGlvbnMpKTt0aGlzLiRuYXY9M0RuLmZpbmQoIi50YWItbmF2aWdhdGlv
biIpLHRoaXMuJGNvbnRlbnQ9M0RuLmZpbmQoIi49CnRhYi1jb250ZW50IiksdGhpcy5zZXRFbGVt
ZW50KG4pLHRoaXMubGlzdD0zRHt9O3ZhciByPTNEdGhpczt0aGlzLm9wdGlvbnMubz0KcGVyYXRp
b25zJiYkLmVhY2godGhpcy5vcHRpb25zLm9wZXJhdGlvbnMsZnVuY3Rpb24oZSx0KXt0LiRlbC5w
cm9wKCJpZCIsZSksPQpyLiRuYXYuZmluZCgiLm9wZXJhdGlvbnMiKS5hcHBlbmQodC4kZWwpfSk7
aWYodGhpcy5vcHRpb25zLm9ubmV3KXt2YXIgaT0zRCQ9Cih0aGlzLl90ZW1wbGF0ZV90YWJfbmV3
KHRoaXMub3B0aW9ucykpO3RoaXMuJG5hdi5hcHBlbmQoaSksaS50b29sdGlwKHt0aXRsZT0KOiJB
ZGQgYSBuZXcgdGFiIixwbGFjZW1lbnQ6ImJvdHRvbSIsY29udGFpbmVyOnIuJGVsfSksaS5vbigi
Y2xpY2siLGZ1bmN0aW9uPQooZSl7aS50b29sdGlwKCJoaWRlIiksci5vcHRpb25zLm9ubmV3KCl9
KX19LHNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gXy5zaXplKHQ9Cmhpcy5saXN0KX0sY3VycmVudDpm
dW5jdGlvbigpe3JldHVybiB0aGlzLiRlbC5maW5kKCIudGFiLXBhbmUuYWN0aXZlIikuYXR0cj0K
KCJpZCIpfSxhZGQ6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLG49M0RlLmlkLHI9M0QkKHRoaXMu
X3RlbXBsYXRlX3RhYihlKSksPQppPTNEJCh0aGlzLl90ZW1wbGF0ZV90YWJfY29udGVudChlKSk7
dGhpcy5saXN0W25dPTNEZS5vbmRlbD8hMDohMSx0aGlzLm9wdGk9Cm9ucy5vbm5ldz90aGlzLiRu
YXYuZmluZCgiI25ldy10YWIiKS5iZWZvcmUocik6dGhpcy4kbmF2LmFwcGVuZChyKSxpLmFwcGVu
ZD0KKGUuJGVsKSx0aGlzLiRjb250ZW50LmFwcGVuZChpKSx0aGlzLnNpemUoKT0zRD0zRDEmJihy
LmFkZENsYXNzKCJhY3RpdmUiKSxpPQouYWRkQ2xhc3MoImFjdGl2ZSIpLHRoaXMuZmlyc3RfdGFi
PTNEbiksdGhpcy5vcHRpb25zLm1heCYmdGhpcy5zaXplKCk+PTNEdGg9CmlzLm9wdGlvbnMubWF4
JiZ0aGlzLiRlbC5maW5kKCIjbmV3LXRhYiIpLmhpZGUoKTtpZihlLm9uZGVsKXt2YXIgcz0zRHIu
ZmluZD0KKCIjZGVsZXRlIik7cy50b29sdGlwKHt0aXRsZToiRGVsZXRlIHRoaXMgdGFiIixwbGFj
ZW1lbnQ6ImJvdHRvbSIsY29udGFpbmVyPQo6dC4kZWx9KSxzLm9uKCJjbGljayIsZnVuY3Rpb24o
KXtyZXR1cm4gcy50b29sdGlwKCJkZXN0cm95IiksdC4kZWwuZmluZCgiLnQ9Cm9vbHRpcCIpLnJl
bW92ZSgpLGUub25kZWwoKSwhMX0pfXIub24oImNsaWNrIixmdW5jdGlvbihyKXtyLnByZXZlbnRE
ZWZhdWx0KD0KKSxlLm9uY2xpY2s/ZS5vbmNsaWNrKCk6dC5zaG93KG4pfSksdGhpcy5jdXJyZW50
X2lkfHwodGhpcy5jdXJyZW50X2lkPTNEbil9PQosZGVsOmZ1bmN0aW9uKGUpe3RoaXMuJGVsLmZp
bmQoIiN0YWItIitlKS5yZW1vdmUoKSx0aGlzLiRlbC5maW5kKCIjIitlKS5yZW09Cm92ZSgpLHRo
aXMuZmlyc3RfdGFiPTNEPTNEZSYmKHRoaXMuZmlyc3RfdGFiPTNEbnVsbCksdGhpcy5maXJzdF90
YWIhPTNEbnVsbD0KJiZ0aGlzLnNob3codGhpcy5maXJzdF90YWIpLHRoaXMubGlzdFtlXSYmZGVs
ZXRlIHRoaXMubGlzdFtlXSx0aGlzLnNpemUoKTx0PQpoaXMub3B0aW9ucy5tYXgmJnRoaXMuJGVs
LmZpbmQoIiNuZXctdGFiIikuc2hvdygpfSxkZWxSZW1vdmFibGU6ZnVuY3Rpb24oKXs9CmZvcih2
YXIgZSBpbiB0aGlzLmxpc3QpdGhpcy5kZWwoZSl9LHNob3c6ZnVuY3Rpb24oZSl7dGhpcy4kZWwu
ZmFkZUluKCJmYXN0Ij0KKSx0aGlzLnZpc2libGU9M0QhMCxlJiYodGhpcy4kZWwuZmluZCgiI3Rh
Yi0iK3RoaXMuY3VycmVudF9pZCkucmVtb3ZlQ2xhc3MoPQoiYWN0aXZlIiksdGhpcy4kZWwuZmlu
ZCgiIyIrdGhpcy5jdXJyZW50X2lkKS5yZW1vdmVDbGFzcygiYWN0aXZlIiksdGhpcy4kZWw9Ci5m
aW5kKCIjdGFiLSIrZSkuYWRkQ2xhc3MoImFjdGl2ZSIpLHRoaXMuJGVsLmZpbmQoIiMiK2UpLmFk
ZENsYXNzKCJhY3RpdmUiKT0KLHRoaXMuY3VycmVudF9pZD0zRGUpLHRoaXMub3B0aW9ucy5vbmNo
YW5nZSYmdGhpcy5vcHRpb25zLm9uY2hhbmdlKGUpfSxoaWRlPQo6ZnVuY3Rpb24oKXt0aGlzLiRl
bC5mYWRlT3V0KCJmYXN0IiksdGhpcy52aXNpYmxlPTNEITF9LGhpZGVPcGVyYXRpb246ZnVuY3Q9
CmlvbihlKXt0aGlzLiRuYXYuZmluZCgiIyIrZSkuaGlkZSgpfSxzaG93T3BlcmF0aW9uOmZ1bmN0
aW9uKGUpe3RoaXMuJG5hdi5maT0KbmQoIiMiK2UpLnNob3coKX0sc2V0T3BlcmF0aW9uOmZ1bmN0
aW9uKGUsdCl7dmFyIG49M0R0aGlzLiRuYXYuZmluZCgiIyIrZSk7PQpuLm9mZigiY2xpY2siKSxu
Lm9uKCJjbGljayIsdCl9LHRpdGxlOmZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0aGlzLiRlbC5maW5k
KCI9CiN0YWItdGl0bGUtdGV4dC0iK2UpO3JldHVybiB0JiZuLmh0bWwodCksbi5odG1sKCl9LHJl
dGl0bGU6ZnVuY3Rpb24oZSl7dmFyID0KdD0zRDA7Zm9yKHZhciBuIGluIHRoaXMubGlzdCl0aGlz
LnRpdGxlKG4sKyt0KyI6ICIrZSl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlPQope3JldHVybic8ZGl2
IGNsYXNzPTNEInVpLXRhYnMgdGFiYmFibGUgdGFicy1sZWZ0Ij48dWwgaWQ9M0QidGFiLW5hdmln
YXRpb249CiIgY2xhc3M9M0QidGFiLW5hdmlnYXRpb24gbmF2IG5hdi10YWJzIj48ZGl2IGNsYXNz
PTNEIm9wZXJhdGlvbnMiIHN0eWxlPTNEIj0KZmxvYXQ6IHJpZ2h0OyBtYXJnaW4tYm90dG9tOiA0
cHg7Ij48L2Rpdj48L3VsPjxkaXYgaWQ9M0QidGFiLWNvbnRlbnQiIGNsYXNzPQo9M0QidGFiLWNv
bnRlbnQiLz48L2Rpdj4nfSxfdGVtcGxhdGVfdGFiX25ldzpmdW5jdGlvbihlKXtyZXR1cm4nPGxp
IGlkPTNEIm49CmV3LXRhYiI+PGEgaHJlZj0zRCJqYXZhc2NyaXB0OnZvaWQoMCk7Ij48aSBjbGFz
cz0zRCJ1aS10YWJzLWFkZCBmYSBmYS1wbHVzLT0KY2lyY2xlIi8+JytlLnRpdGxlX25ldysiPC9h
PiIrIjwvbGk+In0sX3RlbXBsYXRlX3RhYjpmdW5jdGlvbihlKXt2YXIgdD0zRCc8PQpsaSBpZD0z
RCJ0YWItJytlLmlkKyciIGNsYXNzPTNEInRhYi1lbGVtZW50Ij4nKyc8YSBpZD0zRCJ0YWItdGl0
bGUtbGluay0nK2U9Ci5pZCsnIiB0aXRsZT0zRCIiIGhyZWY9M0QiIycrZS5pZCsnIiBkYXRhLW9y
aWdpbmFsLXRpdGxlPTNEIiI+JysnPHNwYW4gaWQ9Cj0zRCJ0YWItdGl0bGUtdGV4dC0nK2UuaWQr
JyIgY2xhc3M9M0QidGFiLXRpdGxlLXRleHQiPicrZS50aXRsZSsiPC9zcGFuPiI7cj0KZXR1cm4g
ZS5vbmRlbCYmKHQrPTNEJzxpIGlkPTNEImRlbGV0ZSIgY2xhc3M9M0QidWktdGFicy1kZWxldGUg
ZmEgZmEtbWludXMtPQpjaXJjbGUiLz4nKSx0Kz0zRCI8L2E+PC9saT4iLHR9LF90ZW1wbGF0ZV90
YWJfY29udGVudDpmdW5jdGlvbihlKXtyZXR1cm4nPGQ9Cml2IGlkPTNEIicrZS5pZCsnIiBjbGFz
cz0zRCJ0YWItcGFuZSIvPid9fSk7cmV0dXJue1ZpZXc6dH19KSxkZWZpbmUoIm12Yy91aT0KL3Vp
LXRhYmxlIixbInV0aWxzL3V0aWxzIl0sZnVuY3Rpb24oZSl7dmFyIHQ9M0RCYWNrYm9uZS5WaWV3
LmV4dGVuZCh7cm93Om51PQpsbCxyb3dfY291bnQ6MCxvcHRpb25zRGVmYXVsdDp7Y29udGVudDoi
Tm8gY29udGVudCBhdmFpbGFibGUuIixvbmNoYW5nZTpudWw9Cmwsb25kYmxjbGljazpudWxsLG9u
Y29uZmlybTpudWxsLGNsczoidWktdGFibGUiLGNsc190cjoiIn0sZXZlbnRzOntjbGljazoiXz0K
b25jbGljayIsZGJsY2xpY2s6Il9vbmRibGNsaWNrIn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0
aGlzLm9wdGlvbnM9M0RlLm1lPQpyZ2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0KTt2YXIgbj0zRCQo
dGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSk7dGhpcy4kdGg9CmVhZD0zRG4uZmluZCgidGhl
YWQiKSx0aGlzLiR0Ym9keT0zRG4uZmluZCgidGJvZHkiKSx0aGlzLiR0bWVzc2FnZT0zRG4uZmlu
ZD0KKCJ0bWVzc2FnZSIpLHRoaXMuc2V0RWxlbWVudChuKSx0aGlzLnJvdz0zRHRoaXMuX3Jvdygp
fSxhZGRIZWFkZXI6ZnVuY3Rpb24oPQplKXt2YXIgdD0zRCQoIjx0aD48L3RoPiIpO3QuYXBwZW5k
KGUpLHRoaXMucm93LmFwcGVuZCh0KX0sYXBwZW5kSGVhZGVyOmZ1bmM9CnRpb24oKXt0aGlzLiR0
aGVhZC5hcHBlbmQodGhpcy5yb3cpLHRoaXMucm93PTNEJCgiPHRyPjwvdHI+Iil9LGFkZDpmdW5j
dGlvbj0KKGUsdCxuKXt2YXIgcj0zRCQoIjx0ZD48L3RkPiIpO3QmJnIuY3NzKCJ3aWR0aCIsdCks
biYmci5jc3MoInRleHQtYWxpZ24iLG4pPQosci5hcHBlbmQoZSksdGhpcy5yb3cuYXBwZW5kKHIp
fSxhcHBlbmQ6ZnVuY3Rpb24oZSx0KXt0aGlzLl9jb21taXQoZSx0LCExKX09CixwcmVwZW5kOmZ1
bmN0aW9uKGUsdCl7dGhpcy5fY29tbWl0KGUsdCwhMCl9LGdldDpmdW5jdGlvbihlKXtyZXR1cm4g
dGhpcy4kZT0KbC5maW5kKCIjIitlKX0sZGVsOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy4kdGJv
ZHkuZmluZCgiIyIrZSk7dC5sZW5ndGg+MCYmPQoodC5yZW1vdmUoKSx0aGlzLnJvd19jb3VudC0t
LHRoaXMuX3JlZnJlc2goKSl9LGRlbEFsbDpmdW5jdGlvbigpe3RoaXMuJHRib2Q9CnkuZW1wdHko
KSx0aGlzLnJvd19jb3VudD0zRDAsdGhpcy5fcmVmcmVzaCgpfSx2YWx1ZTpmdW5jdGlvbihlKXt0
aGlzLmJlZm9yZT0KPTNEdGhpcy4kdGJvZHkuZmluZCgiLmN1cnJlbnQiKS5hdHRyKCJpZCIpLGUh
PTNEPTNEdW5kZWZpbmVkJiYodGhpcy4kdGJvZHkuPQpmaW5kKCJ0ciIpLnJlbW92ZUNsYXNzKCJj
dXJyZW50IiksZSYmdGhpcy4kdGJvZHkuZmluZCgiIyIrZSkuYWRkQ2xhc3MoImN1cnI9CmVudCIp
KTt2YXIgdD0zRHRoaXMuJHRib2R5LmZpbmQoIi5jdXJyZW50IikuYXR0cigiaWQiKTtyZXR1cm4g
dD0zRD0zRD0zRHVuZD0KZWZpbmVkP251bGw6KHQhPTNEdGhpcy5iZWZvcmUmJnRoaXMub3B0aW9u
cy5vbmNoYW5nZSYmdGhpcy5vcHRpb25zLm9uY2hhbmdlPQooZSksdCl9LHNpemU6ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy4kdGJvZHkuZmluZCgidHIiKS5sZW5ndGh9LF9jb21taXQ6ZnVuY3Q9Cmlv
bihlLHQsbil7dGhpcy5kZWwoZSksdGhpcy5yb3cuYXR0cigiaWQiLGUpLG4/dGhpcy4kdGJvZHku
cHJlcGVuZCh0aGlzLnJvdz0KKTp0aGlzLiR0Ym9keS5hcHBlbmQodGhpcy5yb3cpLHQmJih0aGlz
LnJvdy5oaWRlKCksdGhpcy5yb3cuZmFkZUluKCkpLHRoaXMuPQpyb3c9M0R0aGlzLl9yb3coKSx0
aGlzLnJvd19jb3VudCsrLHRoaXMuX3JlZnJlc2goKX0sX3JvdzpmdW5jdGlvbigpe3JldHVybiA9
CiQoJzx0ciBjbGFzcz0zRCInK3RoaXMub3B0aW9ucy5jbHNfdHIrJyI+PC90cj4nKX0sX29uY2xp
Y2s6ZnVuY3Rpb24oZSl7dmFyID0KdD0zRHRoaXMudmFsdWUoKSxuPTNEJChlLnRhcmdldCkuY2xv
c2VzdCgidHIiKS5hdHRyKCJpZCIpO24hPTNEIiImJm4mJnQhPTNEPQpuJiYodGhpcy5vcHRpb25z
Lm9uY29uZmlybT90aGlzLm9wdGlvbnMub25jb25maXJtKG4pOnRoaXMudmFsdWUobikpfSxfb25k
Ymw9CmNsaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy52YWx1ZSgpO3QmJnRoaXMub3B0aW9u
cy5vbmRibGNsaWNrJiZ0aGlzLm9wdD0KaW9ucy5vbmRibGNsaWNrKHQpfSxfcmVmcmVzaDpmdW5j
dGlvbigpe3RoaXMucm93X2NvdW50PTNEPTNEMD90aGlzLiR0bWVzc2FnPQplLnNob3coKTp0aGlz
LiR0bWVzc2FnZS5oaWRlKCl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdj48dGFi
bGUgY2w9CmFzcz0zRCInK2UuY2xzKyciPicrIjx0aGVhZD48L3RoZWFkPiIrIjx0Ym9keT48L3Ri
b2R5PiIrIjwvdGFibGU+IisiPHRtZXNzYT0KZ2U+IitlLmNvbnRlbnQrIjwvdG1lc3NhZ2U+Iisi
PGRpdj4ifX0pO3JldHVybntWaWV3OnR9fSksZGVmaW5lKCJwbHVnaW4vdmllPQp3cy9ncm91cCIs
WyJtdmMvdWkvdWktdGFibGUiLCJtdmMvdWkvdWktbWlzYyIsInV0aWxzL3V0aWxzIl0sZnVuY3Rp
b24oZSx0LG49Cil7cmV0dXJuIEJhY2tib25lLlZpZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0
aW9uKHIsaSl7dGhpcy5hcHA9M0RyO3ZhciBzPQo9M0R0aGlzO3RoaXMuY2hhcnQ9M0R0aGlzLmFw
cC5jaGFydCx0aGlzLmdyb3VwPTNEaS5ncm91cCx0aGlzLmdyb3VwX2tleT0zRG49CmV3IHQuSW5w
dXQoe3BsYWNlaG9sZGVyOiJEYXRhIGxhYmVsIixvbmNoYW5nZTpmdW5jdGlvbihlKXtzLmdyb3Vw
LnNldCgia2V5Ij0KLGUpfX0pLHRoaXMudGFibGU9M0RuZXcgZS5WaWV3KHtjb250ZW50OiJObyBk
YXRhIGNvbHVtbi4ifSk7dmFyIG89M0QkKCI8ZGl2PQovPiIpO28uYXBwZW5kKG4ud3JhcCgobmV3
IHQuTGFiZWwoe3RpdGxlOiJQcm92aWRlIGEgbGFiZWw6In0pKS4kZWwpKSxvLmFwcGU9Cm5kKG4u
d3JhcCh0aGlzLmdyb3VwX2tleS4kZWwpKSxvLmFwcGVuZChuLndyYXAoKG5ldyB0LkxhYmVsKHt0
aXRsZToiU2VsZWN0ID0KY29sdW1uczoifSkpLiRlbCkpLG8uYXBwZW5kKG4ud3JhcCh0aGlzLnRh
YmxlLiRlbCkpLHRoaXMuc2V0RWxlbWVudChvKTt2YXIgPQpzPTNEdGhpczt0aGlzLmNoYXJ0Lm9u
KCJjaGFuZ2U6ZGF0YXNldF9pZCIsZnVuY3Rpb24oKXtzLl9yZWZyZXNoVGFibGUoKX0pLHQ9Cmhp
cy5jaGFydC5vbigiY2hhbmdlOnR5cGUiLGZ1bmN0aW9uKCl7cy5fcmVmcmVzaFRhYmxlKCl9KSx0
aGlzLmdyb3VwLm9uKCJjaD0KYW5nZTprZXkiLGZ1bmN0aW9uKCl7cy5fcmVmcmVzaEdyb3VwS2V5
KCl9KSx0aGlzLmdyb3VwLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uPQooKXtzLl9yZWZyZXNoR3JvdXAo
KX0pLHRoaXMuX3JlZnJlc2hUYWJsZSgpLHRoaXMuX3JlZnJlc2hHcm91cEtleSgpLHRoaXMuX3I9
CmVmcmVzaEdyb3VwKCl9LF9yZWZyZXNoVGFibGU6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMuY2hh
cnQuZ2V0KCJkYXRhc2V0X2lkIj0KKSxuPTNEdGhpcy5jaGFydC5nZXQoInR5cGUiKTtpZighZXx8
IW4pcmV0dXJuO3ZhciByPTNEdGhpcyxpPTNEdGhpcy5jaGFydC5kPQplZmluaXRpb247dGhpcy50
YWJsZS5kZWxBbGwoKTt2YXIgcz0zRHt9O2Zvcih2YXIgbyBpbiBpLmNvbHVtbnMpe3ZhciB1PTNE
aS49CmNvbHVtbnNbb107aWYoIXUpe2NvbnNvbGUuZGVidWcoIkdyb3VwOjpfcmVmcmVzaFRhYmxl
KCkgLSBTa2lwcGluZyBjb2x1bW4gZD0KZWZpbml0aW9uLiIpO2NvbnRpbnVlfXZhciBhPTNEbmV3
IHQuU2VsZWN0LlZpZXcoe2lkOiJzZWxlY3RfIitvLHdhaXQ6ITB9KSxmPQo9M0R1LnRpdGxlO3Uu
aXNfdW5pcXVlJiYoZis9M0QiJm5ic3A7KGFsbCBkYXRhIGxhYmVscykiKSx0aGlzLnRhYmxlLmFk
ZChmLCI9CjI1JSIpLHRoaXMudGFibGUuYWRkKGEuJGVsKSx0aGlzLnRhYmxlLmFwcGVuZChvKSxz
W29dPTNEYX10aGlzLmNoYXJ0LnN0YXRlKD0KIndhaXQiLCJMb2FkaW5nIG1ldGFkYXRhLi4uIik7
dmFyIGw9M0R0aGlzLmFwcC5kZWZlcnJlZC5yZWdpc3RlcigpLGM9M0R7aWQ6PQplLHN1Y2Nlc3M6
ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIHMpci5fYWRkUm93KHQsZSxzLGkuY29sdW1uc1t0XSk7
ci5jaGFydC49CnN0YXRlKCJvayIsIk1ldGFkYXRhIGluaXRpYWxpemVkLi4uIiksci5hcHAuZGVm
ZXJyZWQuZG9uZShsKX19O3RoaXMuYXBwLmRhdD0KYXNldHMucmVxdWVzdChjKX0sX2FkZFJvdzpm
dW5jdGlvbihlLHQsbixyKXt2YXIgaT0zRHRoaXMscz0zRHIuaXNfbGFiZWwsbz0KPTNEci5pc19h
dXRvLHU9M0RyLmlzX251bWVyaWMsYT0zRHIuaXNfdW5pcXVlLGY9M0RyLmlzX3plcm8sbD0zRFtd
LGM9M0RuW2VdPQo7byYmbC5wdXNoKHtsYWJlbDoiQ29sdW1uOiBSb3cgTnVtYmVyIix2YWx1ZToi
YXV0byJ9KSxmJiZsLnB1c2goe2xhYmVsOiJDb2w9CnVtbjogTm9uZSIsdmFsdWU6Inplcm8ifSk7
dmFyIGg9M0R0Lm1ldGFkYXRhX2NvbHVtbl90eXBlcztmb3IodmFyIHAgaW4gaCl7dj0KYXIgZD0z
RCExO2hbcF09M0Q9M0QiaW50Inx8aFtwXT0zRD0zRCJmbG9hdCI/ZD0zRHU6ZD0zRHMsZCYmbC5w
dXNoKHtsYWJlbDoiPQpDb2x1bW46ICIrKHBhcnNlSW50KHApKzEpKyIgWyIraFtwXSsiXSIsdmFs
dWU6cH0pfWMudXBkYXRlKGwpLGEmJnRoaXMuY2hhcnQ9Ci5ncm91cHMuZmlyc3QoKSYmdGhpcy5n
cm91cC5zZXQoZSx0aGlzLmNoYXJ0Lmdyb3Vwcy5maXJzdCgpLmdldChlKSk7aWYoIWMuZT0KeGlz
dHModGhpcy5ncm91cC5nZXQoZSkpKXt2YXIgdj0zRGMuZmlyc3QoKTtjb25zb2xlLmRlYnVnKCdH
cm91cCgpOjpfYWRkUm93PQooKSAtIFN3aXRjaGluZyBtb2RlbCB2YWx1ZSBmcm9tICInK3RoaXMu
Z3JvdXAuZ2V0KGUpKyciIHRvICInK3YrJyIuJyksdGhpcy49Cmdyb3VwLnNldChlLHYpfWMudmFs
dWUodGhpcy5ncm91cC5nZXQoZSkpLHRoaXMuZ3JvdXAub2ZmKCJjaGFuZ2U6IitlKSx0aGlzLj0K
Z3JvdXAub24oImNoYW5nZToiK2UsZnVuY3Rpb24oKXtjLnZhbHVlKGkuZ3JvdXAuZ2V0KGUpKX0p
LGMuc2V0T25DaGFuZ2UoZnVuPQpjdGlvbih0KXthP2kuY2hhcnQuZ3JvdXBzLmVhY2goZnVuY3Rp
b24obil7bi5zZXQoZSx0KX0pOmkuZ3JvdXAuc2V0KGUsdCksaS49CmNoYXJ0LnNldCgibW9kaWZp
ZWQiLCEwKX0pLGMuc2hvdygpfSxfcmVmcmVzaEdyb3VwOmZ1bmN0aW9uKCl7dGhpcy5ncm91cC5z
ZT0KdCgiZGF0ZSIsbi50aW1lKCkpfSxfcmVmcmVzaEdyb3VwS2V5OmZ1bmN0aW9uKCl7dmFyIGU9
M0R0aGlzLmdyb3VwLmdldCgia2V5PQoiKTtlPTNEPTNEPTNEdW5kZWZpbmVkJiYoZT0zRCIiKSxl
IT0zRHRoaXMuZ3JvdXBfa2V5LnZhbHVlKCkmJnRoaXMuZ3JvdXBfa2U9CnkudmFsdWUoZSl9fSl9
KSxkZWZpbmUoInBsdWdpbi9saWJyYXJ5L3VpLXRhYmxlLWZvcm0iLFsibXZjL3VpL3VpLXRhYmxl
IiwibT0KdmMvdWkvdWktbWlzYyIsInV0aWxzL3V0aWxzIl0sZnVuY3Rpb24oZSx0LG4pe3ZhciBy
PTNEQmFja2JvbmUuVmlldy5leHRlbmQoPQp7b3B0aW9uc0RlZmF1bHQ6e3RpdGxlOiIiLGNvbnRl
bnQ6IiIsbW9kZToiIn0sbGlzdDpbXSxpbml0aWFsaXplOmZ1bmN0aW9uKHI9CixpKXt0aGlzLmFw
cD0zRHIsdGhpcy5vcHRpb25zPTNEbi5tZXJnZShpLHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMu
dGFibGVfdD0KaXRsZT0zRG5ldyB0LkxhYmVsKHt0aXRsZTp0aGlzLm9wdGlvbnMudGl0bGV9KSx0
aGlzLnRhYmxlPTNEbmV3IGUuVmlldyh7Y29uPQp0ZW50OnRoaXMub3B0aW9ucy5jb250ZW50fSk7
dmFyIHM9M0QkKCc8ZGl2IGNsYXNzPTNEInVpLXRhYmxlLWZvcm0iLz4nKTt0aGk9CnMub3B0aW9u
cy50aXRsZSYmcy5hcHBlbmQobi53cmFwKHRoaXMudGFibGVfdGl0bGUuJGVsKSkscy5hcHBlbmQo
bi53cmFwKHRoaT0Kcy50YWJsZS4kZWwpKSx0aGlzLnNldEVsZW1lbnQocyl9LHRpdGxlOmZ1bmN0
aW9uKGUpe3RoaXMudGFibGVfdGl0bGUudGl0bGUoPQplKX0sdXBkYXRlOmZ1bmN0aW9uKGUsdCl7
dGhpcy50YWJsZS5kZWxBbGwoKSx0aGlzLmxpc3Q9M0RbXTtmb3IodmFyIG4gaW4gZSk9CnRoaXMu
X2FkZChlW25dLmlkfHxuLGVbbl0sdCk7Zm9yKHZhciBuIGluIHRoaXMubGlzdCl0aGlzLmxpc3Rb
bl0udHJpZ2dlcigiYz0KaGFuZ2UiKX0sX2FkZDpmdW5jdGlvbihlLG4scil7dmFyIGk9M0R0aGlz
LHM9M0RudWxsLG89M0RuLnR5cGU7c3dpdGNoKG8pe2NhPQpzZSJ0ZXh0IjpzPTNEbmV3IHQuSW5w
dXQoe2lkOiJmaWVsZC0iK2UscGxhY2Vob2xkZXI6bi5wbGFjZWhvbGRlcix2YWx1ZTpyLmc9CmV0
KGUpLG9uY2hhbmdlOmZ1bmN0aW9uKHQpe3Iuc2V0KGUsdCl9fSk7YnJlYWs7Y2FzZSJyYWRpb2J1
dHRvbiI6cz0zRG5ldyB0Lj0KUmFkaW9CdXR0b24uVmlldyh7aWQ6ImZpZWxkLSIrZSxkYXRhOm4u
ZGF0YSx2YWx1ZTpyLmdldChlKSxvbmNoYW5nZTpmdW5jdGlvPQpuKHQpe3Iuc2V0KGUsdCk7dmFy
IHM9M0RfLmZpbmRXaGVyZShuLmRhdGEse3ZhbHVlOnR9KTtpZihzJiZzLm9wZXJhdGlvbnMpe3Y9
CmFyIG89M0RzLm9wZXJhdGlvbnM7Zm9yKHZhciB1IGluIG8uc2hvdyl7dmFyIGE9M0RvLnNob3db
dV07aS50YWJsZS5nZXQoYSkucz0KaG93KCl9Zm9yKHZhciB1IGluIG8uaGlkZSl7dmFyIGE9M0Rv
LmhpZGVbdV07aS50YWJsZS5nZXQoYSkuaGlkZSgpfX19fSk7YnJlPQphaztjYXNlInNlbGVjdCI6
cz0zRG5ldyB0LlNlbGVjdC5WaWV3KHtpZDoiZmllbGQtIitlLGRhdGE6bi5kYXRhLHZhbHVlOnIu
Z2U9CnQoZSksb25jaGFuZ2U6ZnVuY3Rpb24odCl7ci5zZXQoZSx0KTt2YXIgcz0zRF8uZmluZFdo
ZXJlKG4uZGF0YSx7dmFsdWU6dH0pOz0KaWYocyYmcy5vcGVyYXRpb25zKXt2YXIgbz0zRHMub3Bl
cmF0aW9ucztmb3IodmFyIHUgaW4gby5zaG93KXt2YXIgYT0zRG8uc2hvPQp3W3VdO2kudGFibGUu
Z2V0KGEpLnNob3coKX1mb3IodmFyIHUgaW4gby5oaWRlKXt2YXIgYT0zRG8uaGlkZVt1XTtpLnRh
YmxlLmc9CmV0KGEpLmhpZGUoKX19fX0pO2JyZWFrO2Nhc2UiZGF0YXNldCI6cz0zRG5ldyB0LlNl
bGVjdC5WaWV3KHtpZDoiZmllbGQtIitlLD0Kb25jaGFuZ2U6ZnVuY3Rpb24odCl7ci5zZXQoZSx0
KX19KSxpLmFwcC5kYXRhc2V0cy5vbigiYWxsIixmdW5jdGlvbigpe3ZhciB0PQo9M0RbXTtpLmFw
cC5kYXRhc2V0cy5lYWNoKGZ1bmN0aW9uKGUpe2UuZ2V0KCJkYXRhdHlwZV9pZCIpPTNEPTNEbi5k
YXRhJiZ0LnA9CnVzaCh7dmFsdWU6ZS5nZXQoImlkIiksbGFiZWw6ZS5nZXQoIm5hbWUiKX0pfSks
cy51cGRhdGUodCksci5nZXQoZSl8fHIuc2V0KD0KZSxzLmZpcnN0KCkpLHMudmFsdWUoci5nZXQo
ZSkpfSksaS5hcHAuZGF0YXNldHMudHJpZ2dlcigiYWxsLmRhdGFzZXRzIik7YnJlPQphaztjYXNl
InRleHRhcmVhIjpzPTNEbmV3IHQuVGV4dGFyZWEoe2lkOiJmaWVsZC0iK2Usb25jaGFuZ2U6ZnVu
Y3Rpb24oKXtyLnM9CmV0KGUscy52YWx1ZSgpKX19KTticmVhaztjYXNlInNlcGFyYXRvciI6cz0z
RCQoIjxkaXYvPiIpO2JyZWFrO2RlZmF1bHQ6cz0zRD0KbmV3IHQuSW5wdXQoe2lkOiJmaWVsZC0i
K2UscGxhY2Vob2xkZXI6bi5wbGFjZWhvbGRlcix0eXBlOm4udHlwZSxvbmNoYW5nZTpmPQp1bmN0
aW9uKCl7ci5zZXQoZSxzLnZhbHVlKCkpfX0pfWlmKG8hPTNEInNlcGFyYXRvciIpe3IuZ2V0KGUp
fHxyLnNldChlLG4uaW49Cml0KSxzLnZhbHVlKHIuZ2V0KGUpKSx0aGlzLmxpc3RbZV09M0RzO3Zh
ciB1PTNEJCgiPGRpdi8+Iik7dS5hcHBlbmQocy4kZWwpLD0Kbi5pbmZvJiZ1LmFwcGVuZCgnPGRp
diBjbGFzcz0zRCJ1aS10YWJsZS1mb3JtLWluZm8iPicrbi5pbmZvKyI8L2Rpdj4iKSx0aGlzPQou
b3B0aW9ucy5zdHlsZT0zRD0zRCJib2xkIj8odGhpcy50YWJsZS5hZGQoKG5ldyB0LkxhYmVsKHt0
aXRsZTpuLnRpdGxlLGNsczo9CiJmb3JtLWxhYmVsIn0pKS4kZWwpLHRoaXMudGFibGUuYWRkKHUp
KToodGhpcy50YWJsZS5hZGQoJzxzcGFuIGNsYXNzPTNEInVpLT0KdGFibGUtZm9ybS10aXRsZSI+
JytuLnRpdGxlKyI8L3NwYW4+IiwiMjUlIiksdGhpcy50YWJsZS5hZGQodSkpfWVsc2UgdGhpcy50
PQphYmxlLmFkZCgnPGRpdiBjbGFzcz0zRCJ1aS10YWJsZS1mb3JtLXNlcGFyYXRvciI+JytuLnRp
dGxlKyI6PGRpdi8+IiksdGhpcy49CnRhYmxlLmFkZCgkKCI8ZGl2Lz4iKSk7dGhpcy50YWJsZS5h
cHBlbmQoZSksbi5oaWRlJiZ0aGlzLnRhYmxlLmdldChlKS5oaWRlKD0KKX19KTtyZXR1cm57Vmll
dzpyfX0pLGRlZmluZSgicGx1Z2luL3ZpZXdzL3NldHRpbmdzIixbIm12Yy91aS91aS1taXNjIiwi
cGx1PQpnaW4vbGlicmFyeS91aS10YWJsZS1mb3JtIiwidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihl
LHQsbil7cmV0dXJuIEJhY2tib25lLlY9Cmlldy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24o
ZSxuKXt0aGlzLmFwcD0zRGU7dmFyIHI9M0R0aGlzO3RoaXMuY2hhcnQ9Cj0zRHRoaXMuYXBwLmNo
YXJ0LHRoaXMuZm9ybT0zRG5ldyB0LlZpZXcoZSx7dGl0bGU6IkNvbmZpZ3VyYXRpb24iLGNvbnRl
bnQ6Ij0KVGhpcyBjaGFydCB0eXBlIGRvZXMgbm90IHByb3ZpZGUgYW55IG9wdGlvbnMuIn0pLHRo
aXMuc2V0RWxlbWVudCh0aGlzLmZvcm0uPQokZWwpO3ZhciByPTNEdGhpczt0aGlzLmNoYXJ0Lm9u
KCJjaGFuZ2UiLGZ1bmN0aW9uKCl7ci5fcmVmcmVzaCgpfSl9LF9yZWZyZXM9Cmg6ZnVuY3Rpb24o
KXt2YXIgZT0zRHRoaXMuY2hhcnQuZGVmaW5pdGlvbjtpZighZSlyZXR1cm47dGhpcy5mb3JtLnRp
dGxlKGUuYz0KYXRlZ29yeSsiIC0gIitlLnRpdGxlKyI6IiksdGhpcy5mb3JtLnVwZGF0ZShlLnNl
dHRpbmdzLHRoaXMuY2hhcnQuc2V0dGluZ3MpPQp9fSl9KSxkZWZpbmUoInBsdWdpbi92aWV3cy90
eXBlcyIsWyJ1dGlscy91dGlscyIsIm12Yy91aS91aS1taXNjIl0sZnVuY3Rpb249CihlLHQpe3Jl
dHVybiBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e29uY2hhbmdlOm51bGws
b25kYmxjbGljaz0KOm51bGx9LGV2ZW50czp7Y2xpY2s6Il9vbmNsaWNrIixkYmxjbGljazoiX29u
ZGJsY2xpY2sifSxpbml0aWFsaXplOmZ1bmN0aW9uPQoobixyKXt2YXIgaT0zRHRoaXM7dGhpcy5h
cHA9M0RuLHRoaXMub3B0aW9ucz0zRGUubWVyZ2Uocix0aGlzLm9wdGlvbnNEZWZhdWw9CnQpO3Zh
ciBzPTNEJCgnPGRpdiBjbGFzcz0zRCJjaGFydHMtZ3JpZCIvPicpO3MuYXBwZW5kKGUud3JhcCgo
bmV3IHQuTGFiZWwoez0KdGl0bGU6IkhvdyBtYW55IGRhdGEgcG9pbnRzIHdvdWxkIHlvdSBsaWtl
IHRvIGFuYWx5emU/In0pKS4kZWwpKSx0aGlzLmxpYnJhPQpyeT0zRG5ldyB0LlJhZGlvQnV0dG9u
LlZpZXcoe2RhdGE6W3tsYWJlbDoiRmV3ICg8NTAwKSIsdmFsdWU6InNtYWxsIn0se2xhYmU9Cmw6
IlNvbWUgKDwxMGspIix2YWx1ZToibWVkaXVtIn0se2xhYmVsOiJNYW55ICg+MTBrKSIsdmFsdWU6
ImxhcmdlIn1dLG9uY2hhbj0KZ2U6ZnVuY3Rpb24oZSl7aS5fZmlsdGVyKGUpfX0pLHMuYXBwZW5k
KGUud3JhcCh0aGlzLmxpYnJhcnkuJGVsKSksdGhpcy5zZXRFPQpsZW1lbnQocyksdGhpcy5fcmVu
ZGVyKCksdGhpcy5saWJyYXJ5LnZhbHVlKCJzbWFsbCIpLHRoaXMubGlicmFyeS50cmlnZ2VyKCI9
CmNoYW5nZSIpfSx2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMuJGVsLmZpbmQoIi5jdXJy
ZW50IikuYXR0cigiaWQiKTtlIT0KPTNEPTNEdW5kZWZpbmVkJiYodGhpcy4kZWwuZmluZCgiLmN1
cnJlbnQiKS5yZW1vdmVDbGFzcygiY3VycmVudCIpLHRoaXMuJGVsPQouZmluZCgiIyIrZSkuYWRk
Q2xhc3MoImN1cnJlbnQiKSk7dmFyIG49M0R0aGlzLiRlbC5maW5kKCIuY3VycmVudCIpLmF0dHIo
Imk9CmQiKTtyZXR1cm4gbj0zRD0zRD0zRHVuZGVmaW5lZD9udWxsOihuIT0zRHQmJnRoaXMub3B0
aW9ucy5vbmNoYW5nZSYmdGhpcy5vcD0KdGlvbnMub25jaGFuZ2UoZSksbil9LF9maWx0ZXI6ZnVu
Y3Rpb24oZSl7dGhpcy4kZWwuZmluZCgiLmhlYWRlciIpLmhpZGUoKTt2PQphciB0PTNEdGhpcy5h
cHAudHlwZXMuYXR0cmlidXRlcztmb3IodmFyIG4gaW4gdCl7dmFyIHI9M0R0W25dLGk9M0R0aGlz
LiRlbC49CmZpbmQoIiMiK24pLHM9M0R0aGlzLiRlbC5maW5kKCIjdHlwZXMtaGVhZGVyLSIrdGhp
cy5jYXRlZ29yaWVzX2luZGV4W3IuY2F0ZT0KZ29yeV0pLG89M0RyLmtleXdvcmRzfHwiIjtvLmlu
ZGV4T2YoZSk+PTNEMD8oaS5zaG93KCkscy5zaG93KCkpOmkuaGlkZSgpfX0sPQpfcmVuZGVyOmZ1
bmN0aW9uKCl7dGhpcy5jYXRlZ29yaWVzPTNEe30sdGhpcy5jYXRlZ29yaWVzX2luZGV4PTNEe307
dmFyIGU9M0Q9CjAsdD0zRHRoaXMuYXBwLnR5cGVzLmF0dHJpYnV0ZXM7Zm9yKHZhciBuIGluIHQp
e3ZhciByPTNEdFtuXSxpPTNEci5jYXRlZ29yeT0KO3RoaXMuY2F0ZWdvcmllc1tpXXx8KHRoaXMu
Y2F0ZWdvcmllc1tpXT0zRHt9LHRoaXMuY2F0ZWdvcmllc19pbmRleFtpXT0zRGUrPQorKSx0aGlz
LmNhdGVnb3JpZXNbaV1bbl09M0RyfWZvcih2YXIgaSBpbiB0aGlzLmNhdGVnb3JpZXMpe3ZhciBz
PTNEJCgnPGRpdiA9CnN0eWxlPTNEImNsZWFyOiBib3RoOyIvPicpO3MuYXBwZW5kKHRoaXMuX3Rl
bXBsYXRlX2hlYWRlcih7aWQ6InR5cGVzLWhlYWRlcj0KLSIrdGhpcy5jYXRlZ29yaWVzX2luZGV4
W2ldLHRpdGxlOml9KSk7Zm9yKHZhciBuIGluIHRoaXMuY2F0ZWdvcmllc1tpXSl7dmFyPQogcj0z
RHRoaXMuY2F0ZWdvcmllc1tpXVtuXSxvPTNEci50aXRsZSsiICgiK3IubGlicmFyeSsiKSI7ci56
b29tYWJsZSYmKG89M0Q9Cic8c3BhbiBjbGFzcz0zRCJmYSBmYS1zZWFyY2gtcGx1cyIvPicrbyks
cy5hcHBlbmQodGhpcy5fdGVtcGxhdGVfaXRlbSh7aWQ6bj0KLHRpdGxlOm8sdXJsOmNvbmZpZy5h
cHBfcm9vdCsiY2hhcnRzLyIrdGhpcy5hcHAuY2hhcnRQYXRoKG4pKyIvbG9nby5wbmcifSkpPQp9
dGhpcy4kZWwuYXBwZW5kKHMpfX0sX29uY2xpY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLnZh
bHVlKCksbj0zRCQoZS50YXI9CmdldCkuY2xvc2VzdCgiLml0ZW0iKS5hdHRyKCJpZCIpO24hPTNE
IiImJm4mJnQhPTNEbiYmdGhpcy52YWx1ZShuKX0sX29uZGJsYz0KbGljazpmdW5jdGlvbihlKXt2
YXIgdD0zRHRoaXMudmFsdWUoKTt0JiZ0aGlzLm9wdGlvbnMub25kYmxjbGljayYmdGhpcy5vcHRp
PQpvbnMub25kYmxjbGljayh0KX0sX3RlbXBsYXRlX2hlYWRlcjpmdW5jdGlvbihlKXtyZXR1cm4n
PGRpdiBpZD0zRCInK2UuaWQrJyI9CiBjbGFzcz0zRCJoZWFkZXIiPicrIiZidWxsOyAiK2UudGl0
bGUrIjxkaXY+In0sX3RlbXBsYXRlX2l0ZW06ZnVuY3Rpb24oZSl7cj0KZXR1cm4nPGRpdiBpZD0z
RCInK2UuaWQrJyIgY2xhc3M9M0QiaXRlbSI+JysnPGltZyBjbGFzcz0zRCJpbWFnZSIgc3JjPTNE
IicrPQplLnVybCsnIj4nKyc8ZGl2IGNsYXNzPTNEInRpdGxlIj4nK2UudGl0bGUrIjwvZGl2PiIr
IjxkaXY+In19KX0pLGRlZmluZSgicGw9CnVnaW4vdmlld3MvZWRpdG9yIixbIm12Yy91aS91aS10
YWJzIiwibXZjL3VpL3VpLW1pc2MiLCJtdmMvdWkvdWktcG9ydGxldCIsIj0KdXRpbHMvdXRpbHMi
LCJwbHVnaW4vbW9kZWxzL2NoYXJ0IiwicGx1Z2luL21vZGVscy9ncm91cCIsInBsdWdpbi92aWV3
cy9ncm91PQpwIiwicGx1Z2luL3ZpZXdzL3NldHRpbmdzIiwicGx1Z2luL3ZpZXdzL3R5cGVzIl0s
ZnVuY3Rpb24oZSx0LG4scixpLHMsbyx1LGE9Cil7cmV0dXJuIEJhY2tib25lLlZpZXcuZXh0ZW5k
KHtpbml0aWFsaXplOmZ1bmN0aW9uKGkscyl7dmFyIG89M0R0aGlzO3RoaXMuYT0KcHA9M0RpLHRo
aXMuY2hhcnQ9M0R0aGlzLmFwcC5jaGFydCx0aGlzLm1lc3NhZ2U9M0RuZXcgdC5NZXNzYWdlLHRo
aXMucG9ydGxlPQp0PTNEbmV3IG4uVmlldyh7aWNvbjoiZmEtYmFyLWNoYXJ0LW8iLHRpdGxlOiJF
ZGl0b3IiLG9wZXJhdGlvbnM6e3NhdmU6bmV3IHQ9Ci5CdXR0b25JY29uKHtpY29uOiJmYS1zYXZl
Iix0b29sdGlwOiJEcmF3IENoYXJ0Iix0aXRsZToiRHJhdyIsb25jbGljazpmdW5jdD0KaW9uKCl7
by5fc2F2ZUNoYXJ0KCl9fSksYmFjazpuZXcgdC5CdXR0b25JY29uKHtpY29uOiJmYS1jYXJldC1s
ZWZ0Iix0b29sdGlwPQo6IlJldHVybiB0byBWaWV3ZXIiLHRpdGxlOiJDYW5jZWwiLG9uY2xpY2s6
ZnVuY3Rpb24oKXtvLmFwcC5nbygidmlld2VyIiksby49CmFwcC5zdG9yYWdlLmxvYWQoKX19KX19
KSx0aGlzLnR5cGVzPTNEbmV3IGEoaSx7b25jaGFuZ2U6ZnVuY3Rpb24oZSl7dmFyIHQ9Cj0zRG8u
YXBwLnR5cGVzLmdldChlKTt0fHxjb25zb2xlLmRlYnVnKCJGQUlMRUQgLSBFZGl0b3I6Om9uY2hh
bmdlKCkgLSBDaGFydD0KIHR5cGUgbm90IHN1cHBvcnRlZC4iKSxvLmNoYXJ0LmRlZmluaXRpb249
M0R0LG8uY2hhcnQuc2V0dGluZ3MuY2xlYXIoKSxvLmNoPQphcnQuc2V0KHt0eXBlOmV9KSxvLmNo
YXJ0LnNldCgibW9kaWZpZWQiLCEwKSxjb25zb2xlLmRlYnVnKCJFZGl0b3I6Om9uY2hhbmc9CmUo
KSAtIFN3aXRjaGVkIGNoYXJ0IHR5cGUuIil9LG9uZGJsY2xpY2s6ZnVuY3Rpb24oZSl7by5fc2F2
ZUNoYXJ0KCl9fSksdGhpcz0KLnRhYnM9M0RuZXcgZS5WaWV3KHt0aXRsZV9uZXc6IkFkZCBEYXRh
Iixvbm5ldzpmdW5jdGlvbigpe3ZhciBlPTNEby5fYWRkR3JvPQp1cE1vZGVsKCk7by50YWJzLnNo
b3coZS5pZCl9fSksdGhpcy50aXRsZT0zRG5ldyB0LklucHV0KHtwbGFjZWhvbGRlcjoiQ2hhcnQ9
CiB0aXRsZSIsb25jaGFuZ2U6ZnVuY3Rpb24oKXtvLmNoYXJ0LnNldCgidGl0bGUiLG8udGl0bGUu
dmFsdWUoKSl9fSk7dmFyIGY9Cj0zRCQoIjxkaXYvPiIpO2YuYXBwZW5kKHIud3JhcCgobmV3IHQu
TGFiZWwoe3RpdGxlOiJQcm92aWRlIGEgY2hhcnQgdGl0bGU6Ij0KfSkpLiRlbCkpLGYuYXBwZW5k
KHRoaXMudGl0bGUuJGVsKSxmLmFwcGVuZCgkKCI8ZGl2Lz4iKS5hZGRDbGFzcygidWktdGFibGUt
PQpmb3JtLWluZm8iKS5odG1sKCJUaGlzIHRpdGxlIHdpbGwgYXBwZWFyIGluIHRoZSBsaXN0IG9m
ICdTYXZlZCBWaXN1YWxpemF0aW89Cm5zJy4gQ2hhcnRzIGFyZSBzYXZlZCB1cG9uIGNyZWF0aW9u
LiIpKSxmLmFwcGVuZChyLndyYXAoKSksZi5hcHBlbmQoci53cmFwKD0KdGhpcy50eXBlcy4kZWwp
KSx0aGlzLnRhYnMuYWRkKHtpZDoibWFpbiIsdGl0bGU6IlN0YXJ0IiwkZWw6Zn0pLHRoaXMuc2V0
dGluPQpncz0zRG5ldyB1KHRoaXMuYXBwKSx0aGlzLnRhYnMuYWRkKHtpZDoic2V0dGluZ3MiLHRp
dGxlOiJDb25maWd1cmF0aW9uIiwkZWw9Cjp0aGlzLnNldHRpbmdzLiRlbH0pLHRoaXMucG9ydGxl
dC5hcHBlbmQodGhpcy5tZXNzYWdlLiRlbCksdGhpcy5wb3J0bGV0LmFwcD0KZW5kKHRoaXMudGFi
cy4kZWwpLHRoaXMuc2V0RWxlbWVudCh0aGlzLnBvcnRsZXQuJGVsKSx0aGlzLnRhYnMuaGlkZU9w
ZXJhdGlvPQpuKCJiYWNrIik7dmFyIG89M0R0aGlzO3RoaXMuY2hhcnQub24oImNoYW5nZTp0aXRs
ZSIsZnVuY3Rpb24oZSl7by5fcmVmcmVzaFQ9Cml0bGUoKX0pLHRoaXMuY2hhcnQub24oImNoYW5n
ZTp0eXBlIixmdW5jdGlvbihlKXtvLnR5cGVzLnZhbHVlKGUuZ2V0KCJ0eXBlIj0KKSl9KSx0aGlz
LmNoYXJ0Lm9uKCJyZXNldCIsZnVuY3Rpb24oZSl7by5fcmVzZXRDaGFydCgpfSksdGhpcy5hcHAu
Y2hhcnQub24oPQoicmVkcmF3IixmdW5jdGlvbihlKXtvLnBvcnRsZXQuc2hvd09wZXJhdGlvbigi
YmFjayIpfSksdGhpcy5hcHAuY2hhcnQuZ3JvdXA9CnMub24oImFkZCIsZnVuY3Rpb24oZSl7by5f
YWRkR3JvdXAoZSl9KSx0aGlzLmFwcC5jaGFydC5ncm91cHMub24oInJlbW92ZSIsZj0KdW5jdGlv
bihlKXtvLl9yZW1vdmVHcm91cChlKX0pLHRoaXMuYXBwLmNoYXJ0Lmdyb3Vwcy5vbigicmVzZXQi
LGZ1bmN0aW9uKGUpPQp7by5fcmVtb3ZlQWxsR3JvdXBzKCl9KSx0aGlzLmFwcC5jaGFydC5ncm91
cHMub24oImNoYW5nZTprZXkiLGZ1bmN0aW9uKGUpe289Ci5fcmVmcmVzaEdyb3VwS2V5KCl9KSx0
aGlzLl9yZXNldENoYXJ0KCl9LHNob3c6ZnVuY3Rpb24oKXt0aGlzLiRlbC5zaG93KCl9LD0KaGlk
ZTpmdW5jdGlvbigpe3RoaXMuJGVsLmhpZGUoKX0sX3JlZnJlc2hUaXRsZTpmdW5jdGlvbigpe3Zh
ciBlPTNEdGhpcy5jaGFyPQp0LmdldCgidGl0bGUiKTt0aGlzLnBvcnRsZXQudGl0bGUoZSksdGhp
cy50aXRsZS52YWx1ZSgpIT0zRGUmJnRoaXMudGl0bGUudmE9Cmx1ZShlKX0sX3JlZnJlc2hHcm91
cEtleTpmdW5jdGlvbigpe3ZhciBlPTNEdGhpcyx0PTNEMDt0aGlzLmNoYXJ0Lmdyb3Vwcy5lYT0K
Y2goZnVuY3Rpb24obil7dmFyIHI9M0RuLmdldCgia2V5IiwiIik7cj0zRD0zRCIiJiYocj0zRCJE
YXRhIGxhYmVsIiksZS50YWJzPQoudGl0bGUobi5pZCwrK3QrIjogIityKX0pfSxfYWRkR3JvdXBN
b2RlbDpmdW5jdGlvbigpe3ZhciBlPTNEbmV3IHMoe2lkOnIudXU9CmlkKCl9KTtyZXR1cm4gdGhp
cy5jaGFydC5ncm91cHMuYWRkKGUpLGV9LF9hZGRHcm91cDpmdW5jdGlvbihlKXt2YXIgdD0zRHRo
aT0KcyxuPTNEbmV3IG8odGhpcy5hcHAse2dyb3VwOmV9KTt0aGlzLnRhYnMuYWRkKHtpZDplLmlk
LCRlbDpuLiRlbCxvbmRlbDpmdW5jPQp0aW9uKCl7dC5jaGFydC5ncm91cHMucmVtb3ZlKGUuaWQp
fX0pLHRoaXMuX3JlZnJlc2hHcm91cEtleSgpLHRoaXMuY2hhcnQuc2U9CnQoIm1vZGlmaWVkIiwh
MCl9LF9yZW1vdmVHcm91cDpmdW5jdGlvbihlKXt0aGlzLnRhYnMuZGVsKGUuaWQpLHRoaXMuX3Jl
ZnJlcz0KaEdyb3VwS2V5KCksdGhpcy5jaGFydC5zZXQoIm1vZGlmaWVkIiwhMCl9LF9yZW1vdmVB
bGxHcm91cHM6ZnVuY3Rpb24oZSl7dGhpPQpzLnRhYnMuZGVsUmVtb3ZhYmxlKCl9LF9yZXNldENo
YXJ0OmZ1bmN0aW9uKCl7dGhpcy5jaGFydC5zZXQoImlkIixyLnV1aWQoKSk9Cix0aGlzLmNoYXJ0
LnNldCgidHlwZSIsIm52ZDNfYmFyIiksdGhpcy5jaGFydC5zZXQoImRhdGFzZXRfaWQiLHRoaXMu
YXBwLm9wdD0KaW9ucy5jb25maWcuZGF0YXNldF9pZCksdGhpcy5jaGFydC5zZXQoInRpdGxlIiwi
TmV3IENoYXJ0IiksdGhpcy5wb3J0bGV0LmhpPQpkZU9wZXJhdGlvbigiYmFjayIpfSxfc2F2ZUNo
YXJ0OmZ1bmN0aW9uKCl7dGhpcy5jaGFydC5zZXQoe3R5cGU6dGhpcy50eXBlcy49CnZhbHVlKCks
dGl0bGU6dGhpcy50aXRsZS52YWx1ZSgpLGRhdGU6ci50aW1lKCl9KTtpZih0aGlzLmNoYXJ0Lmdy
b3Vwcy5sZW5ndD0KaD0zRD0zRDApe3RoaXMubWVzc2FnZS51cGRhdGUoe21lc3NhZ2U6IlBsZWFz
ZSBzZWxlY3QgZGF0YSBjb2x1bW5zIGJlZm9yZSBkPQpyYXdpbmcgdGhlIGNoYXJ0LiJ9KTt2YXIg
ZT0zRHRoaXMuX2FkZEdyb3VwTW9kZWwoKTt0aGlzLnRhYnMuc2hvdyhlLmlkKTtyZXQ9CnVybn12
YXIgdD0zRHRoaXMsbj0zRCEwLGk9M0R0aGlzLmNoYXJ0LmRlZmluaXRpb247dGhpcy5jaGFydC5n
cm91cHMuZWFjaChmdT0KbmN0aW9uKGUpe2lmKCFuKXJldHVybjtmb3IodmFyIHIgaW4gaS5jb2x1
bW5zKWlmKGUuYXR0cmlidXRlc1tyXT0zRD0zRCJudWxsPQoiKXt0Lm1lc3NhZ2UudXBkYXRlKHtz
dGF0dXM6ImRhbmdlciIsbWVzc2FnZToiVGhpcyBjaGFydCB0eXBlIHJlcXVpcmVzIGNvbHU9Cm1u
IHR5cGVzIG5vdCBmb3VuZCBpbiB5b3VyIHRhYnVsYXIgZmlsZS4ifSksdC50YWJzLnNob3coZS5p
ZCksbj0zRCExO3JldHVybj0KfX0pO2lmKCFuKXJldHVybjt0aGlzLmFwcC5nbygidmlld2VyIik7
dmFyIHQ9M0R0aGlzO3RoaXMuYXBwLmRlZmVycmVkLmV4ZWN1PQp0ZShmdW5jdGlvbigpe3QuYXBw
LnN0b3JhZ2Uuc2F2ZSgpLHQuY2hhcnQudHJpZ2dlcigicmVkcmF3Iil9KX19KX0pLGRlZmluZSg9
CiJwbHVnaW4vbW9kZWxzL2NvbmZpZyIsW10sZnVuY3Rpb24oKXtyZXR1cm4gQmFja2JvbmUuTW9k
ZWwuZXh0ZW5kKHtkZWZhdWx0cz0KOntxdWVyeV9saW1pdDoxZTQscXVlcnlfdGltZW91dDoxMDB9
fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvZm9ybXMvZGVmYXVsPQp0IixbXSxmdW5jdGlvbigp
e3JldHVybnt0aXRsZToiIixjYXRlZ29yeToiIixsaWJyYXJ5OiIiLHRhZzoiIixrZXl3b3Jkczoi
Iiw9CnNldHRpbmdzOntzZXBhcmF0b3JfeDp7dGl0bGU6IlggYXhpcyIsdHlwZToic2VwYXJhdG9y
In0seF9heGlzX2xhYmVsOnt0aXRsZT0KOiJBeGlzIGxhYmVsIixpbmZvOiJQcm92aWRlIGEgbGFi
ZWwgZm9yIHRoZSBheGlzLiIsdHlwZToidGV4dCIsaW5pdDoiWC1heGlzPQoiLHBsYWNlaG9sZGVy
OiJBeGlzIGxhYmVsIn0seF9heGlzX3R5cGU6e3RpdGxlOiJBeGlzIHZhbHVlIHR5cGUiLGluZm86
IlNlbGU9CmN0IHRoZSB2YWx1ZSB0eXBlIG9mIHRoZSBheGlzLiIsdHlwZToic2VsZWN0Iixpbml0
OiJhdXRvIixkYXRhOlt7bGFiZWw6Ii0tID0KRG8gbm90IHNob3cgdmFsdWVzIC0tIix2YWx1ZToi
aGlkZSIsb3BlcmF0aW9uczp7aGlkZTpbInhfYXhpc19wcmVjaXNpb24iXX19PQose2xhYmVsOiJB
dXRvIix2YWx1ZToiYXV0byIsb3BlcmF0aW9uczp7aGlkZTpbInhfYXhpc19wcmVjaXNpb24iXX19
LHtsYWJlbDo9CiJGbG9hdCIsdmFsdWU6ImYiLG9wZXJhdGlvbnM6e3Nob3c6WyJ4X2F4aXNfcHJl
Y2lzaW9uIl19fSx7bGFiZWw6IkV4cG9uZW50Ij0KLHZhbHVlOiJlIixvcGVyYXRpb25zOntzaG93
OlsieF9heGlzX3ByZWNpc2lvbiJdfX0se2xhYmVsOiJJbnRlZ2VyIix2YWx1ZToiPQpkIixvcGVy
YXRpb25zOntoaWRlOlsieF9heGlzX3ByZWNpc2lvbiJdfX0se2xhYmVsOiJQZXJjZW50YWdlIix2
YWx1ZToicCIsb3A9CmVyYXRpb25zOntzaG93OlsieF9heGlzX3ByZWNpc2lvbiJdfX0se2xhYmVs
OiJTSS1wcmVmaXgiLHZhbHVlOiJzIixvcGVyYXRpbz0KbnM6e2hpZGU6WyJ4X2F4aXNfcHJlY2lz
aW9uIl19fV19LHhfYXhpc19wcmVjaXNpb246e3RpdGxlOiJBeGlzIHRpY2sgZm9ybWF0PQoiLGlu
Zm86IlNlbGVjdCB0aGUgdGljayBmb3JtYXQgZm9yIHRoZSBheGlzLiIsdHlwZToic2VsZWN0Iixp
bml0OiIxIixkYXRhOls9CntsYWJlbDoiMC4wMDAwMSIsdmFsdWU6IjUifSx7bGFiZWw6IjAuMDAw
MSIsdmFsdWU6IjQifSx7bGFiZWw6IjAuMDAxIix2YWx1ZT0KOiIzIn0se2xhYmVsOiIwLjAxIix2
YWx1ZToiMiJ9LHtsYWJlbDoiMC4xIix2YWx1ZToiMSJ9LHtsYWJlbDoiMSIsdmFsdWU6IjAiPQp9
XX0sc2VwYXJhdG9yX3k6e3RpdGxlOiJZIGF4aXMiLHR5cGU6InNlcGFyYXRvciJ9LHlfYXhpc19s
YWJlbDp7dGl0bGU6IkF4aXM9CiBsYWJlbCIsaW5mbzoiUHJvdmlkZSBhIGxhYmVsIGZvciB0aGUg
YXhpcy4iLHR5cGU6InRleHQiLGluaXQ6IlktYXhpcyIscGxhYz0KZWhvbGRlcjoiQXhpcyBsYWJl
bCJ9LHlfYXhpc190eXBlOnt0aXRsZToiQXhpcyB2YWx1ZSB0eXBlIixpbmZvOiJTZWxlY3QgdGhl
PQogdmFsdWUgdHlwZSBvZiB0aGUgYXhpcy4iLHR5cGU6InNlbGVjdCIsaW5pdDoiYXV0byIsZGF0
YTpbe2xhYmVsOiItLSBEbyBub3Q9CiBzaG93IHZhbHVlcyAtLSIsdmFsdWU6ImhpZGUiLG9wZXJh
dGlvbnM6e2hpZGU6WyJ5X2F4aXNfcHJlY2lzaW9uIl19fSx7bGFiZT0KbDoiQXV0byIsdmFsdWU6
ImF1dG8iLG9wZXJhdGlvbnM6e2hpZGU6WyJ5X2F4aXNfcHJlY2lzaW9uIl19fSx7bGFiZWw6IkZs
b2F0PQoiLHZhbHVlOiJmIixvcGVyYXRpb25zOntzaG93OlsieV9heGlzX3ByZWNpc2lvbiJdfX0s
e2xhYmVsOiJFeHBvbmVudCIsdmFsdWU9CjoiZSIsb3BlcmF0aW9uczp7c2hvdzpbInlfYXhpc19w
cmVjaXNpb24iXX19LHtsYWJlbDoiSW50ZWdlciIsdmFsdWU6ImQiLG9wZT0KcmF0aW9uczp7aGlk
ZTpbInlfYXhpc19wcmVjaXNpb24iXX19LHtsYWJlbDoiUGVyY2VudGFnZSIsdmFsdWU6InAiLG9w
ZXJhdGlvPQpuczp7c2hvdzpbInlfYXhpc19wcmVjaXNpb24iXX19LHtsYWJlbDoiU0ktcHJlZml4
Iix2YWx1ZToicyIsb3BlcmF0aW9uczp7aGk9CmRlOlsieV9heGlzX3ByZWNpc2lvbiJdfX1dfSx5
X2F4aXNfcHJlY2lzaW9uOnt0aXRsZToiQXhpcyB0aWNrIGZvcm1hdCIsaW5mbz0KOiJTZWxlY3Qg
dGhlIHRpY2sgZm9ybWF0IGZvciB0aGUgYXhpcy4iLHR5cGU6InNlbGVjdCIsaW5pdDoiMSIsZGF0
YTpbe2xhYmVsPQo6IjAuMDAwMDEiLHZhbHVlOiI1In0se2xhYmVsOiIwLjAwMDEiLHZhbHVlOiI0
In0se2xhYmVsOiIwLjAwMSIsdmFsdWU6IjMifSw9CntsYWJlbDoiMC4wMSIsdmFsdWU6IjIifSx7
bGFiZWw6IjAuMSIsdmFsdWU6IjEifSx7bGFiZWw6IjEiLHZhbHVlOiIwIn1dfSxzZT0KcGFyYXRv
cl9sZWdlbmQ6e3RpdGxlOiJPdGhlcnMiLHR5cGU6InNlcGFyYXRvciJ9LHNob3dfbGVnZW5kOnt0
aXRsZToiU2hvdyBsPQplZ2VuZCIsaW5mbzoiV291bGQgeW91IGxpa2UgdG8gYWRkIGEgbGVnZW5k
PyIsdHlwZToicmFkaW9idXR0b24iLGluaXQ6InRydWU9CiIsZGF0YTpbe2xhYmVsOiJZZXMiLHZh
bHVlOiJ0cnVlIn0se2xhYmVsOiJObyIsdmFsdWU6ImZhbHNlIn1dfSx1c2VfcGFuZWxzOj0Ke3Rp
dGxlOiJVc2UgbXVsdGktcGFuZWxzIixpbmZvOiJXb3VsZCB5b3UgbGlrZSB0byBzZXBhcmF0ZSB5
b3VyIGRhdGEgaW50byBpPQpuZGl2aWR1YWwgcGFuZWxzPyIsdHlwZToicmFkaW9idXR0b24iLGlu
aXQ6ImZhbHNlIixkYXRhOlt7bGFiZWw6IlllcyIsdmFsdWU9CjoidHJ1ZSJ9LHtsYWJlbDoiTm8i
LHZhbHVlOiJmYWxzZSJ9XX19fX0pLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChlLHQpe3JldHVybj0K
KG5ldyBEYXRlKHQsZSsxLDApKS5nZXREYXRlKCl9ZnVuY3Rpb24gbihlLHQsbil7cmV0dXJuIGZ1
bmN0aW9uKHIsaSxzKXt2YXIgPQpvPTNEZShyKSx1PTNEW107bzxyJiZ0KG8pO2lmKHM+MSl3aGls
ZShvPGkpe3ZhciBhPTNEbmV3IERhdGUoK28pO24oYSklcz0zRD0KPTNEPTNEMCYmdS5wdXNoKGEp
LHQobyl9ZWxzZSB3aGlsZShvPGkpdS5wdXNoKG5ldyBEYXRlKCtvKSksdChvKTtyZXR1cm4gdX19
PQp2YXIgZT0zRHdpbmRvdy5udnx8e307ZS52ZXJzaW9uPTNEIjEuMS4xNWIiLGUuZGV2PTNEITAs
d2luZG93Lm52PTNEZSxlLnRvb2w9CnRpcD0zRGUudG9vbHRpcHx8e30sZS51dGlscz0zRGUudXRp
bHN8fHt9LGUubW9kZWxzPTNEZS5tb2RlbHN8fHt9LGUuY2hhcnRzPQo9M0R7fSxlLmdyYXBocz0z
RFtdLGUubG9ncz0zRHt9LGUuZGlzcGF0Y2g9M0RkMy5kaXNwYXRjaCgicmVuZGVyX3N0YXJ0Iiwi
cmU9Cm5kZXJfZW5kIiksZS5kZXYmJihlLmRpc3BhdGNoLm9uKCJyZW5kZXJfc3RhcnQiLGZ1bmN0
aW9uKHQpe2UubG9ncy5zdGFydFRpbT0KZT0zRCsobmV3IERhdGUpfSksZS5kaXNwYXRjaC5vbigi
cmVuZGVyX2VuZCIsZnVuY3Rpb24odCl7ZS5sb2dzLmVuZFRpbWU9M0QrPQoobmV3IERhdGUpLGUu
bG9ncy50b3RhbFRpbWU9M0RlLmxvZ3MuZW5kVGltZS1lLmxvZ3Muc3RhcnRUaW1lLGUubG9nKCJ0
b3RhbCI9CixlLmxvZ3MudG90YWxUaW1lKX0pKSxlLmxvZz0zRGZ1bmN0aW9uKCl7aWYoZS5kZXYm
JmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZz0KLmFwcGx5KWNvbnNvbGUubG9nLmFwcGx5KGNvbnNv
bGUsYXJndW1lbnRzKTtlbHNlIGlmKGUuZGV2JiZ0eXBlb2YgY29uc29sZS5sPQpvZz0zRD0zRCJm
dW5jdGlvbiImJkZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kKXt2YXIgdD0zREZ1bmN0aW9uLnByb3Rv
dHlwZS5iaW49CmQuY2FsbChjb25zb2xlLmxvZyxjb25zb2xlKTt0LmFwcGx5KGNvbnNvbGUsYXJn
dW1lbnRzKX1yZXR1cm4gYXJndW1lbnRzW2FyZz0KdW1lbnRzLmxlbmd0aC0xXX0sZS5yZW5kZXI9
M0RmdW5jdGlvbihuKXtuPTNEbnx8MSxlLnJlbmRlci5hY3RpdmU9M0QhMCxlLmRpPQpzcGF0Y2gu
cmVuZGVyX3N0YXJ0KCksc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciB0LHI7Zm9yKHZhciBpPTNE
MDtpPG4mJihyPQo9M0RlLnJlbmRlci5xdWV1ZVtpXSk7aSsrKXQ9M0RyLmdlbmVyYXRlKCksdHlw
ZW9mIHIuY2FsbGJhY2s9M0Q9M0R0eXBlb2YgRnU9Cm5jdGlvbiYmci5jYWxsYmFjayh0KSxlLmdy
YXBocy5wdXNoKHQpO2UucmVuZGVyLnF1ZXVlLnNwbGljZSgwLGkpLGUucmVuZGVyLj0KcXVldWUu
bGVuZ3RoP3NldFRpbWVvdXQoYXJndW1lbnRzLmNhbGxlZSwwKTooZS5kaXNwYXRjaC5yZW5kZXJf
ZW5kKCksZS5yZW5kPQplci5hY3RpdmU9M0QhMSl9LDApfSxlLnJlbmRlci5hY3RpdmU9M0QhMSxl
LnJlbmRlci5xdWV1ZT0zRFtdLGUuYWRkR3JhcGg9M0Q9CmZ1bmN0aW9uKHQpe3R5cGVvZiBhcmd1
bWVudHNbMF09M0Q9M0R0eXBlb2YgRnVuY3Rpb24mJih0PTNEe2dlbmVyYXRlOmFyZ3VtZT0KbnRz
WzBdLGNhbGxiYWNrOmFyZ3VtZW50c1sxXX0pLGUucmVuZGVyLnF1ZXVlLnB1c2godCksZS5yZW5k
ZXIuYWN0aXZlfHxlLnJlPQpuZGVyKCl9LGUuaWRlbnRpdHk9M0RmdW5jdGlvbihlKXtyZXR1cm4g
ZX0sZS5zdHJpcD0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnI9CmVwbGFjZSgvKFxzfCYpL2csIiIp
fSxkMy50aW1lLm1vbnRoRW5kPTNEZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBEYXRlKGUuZ2V0Rj0K
dWxsWWVhcigpLGUuZ2V0TW9udGgoKSwwKX0sZDMudGltZS5tb250aEVuZHM9M0RuKGQzLnRpbWUu
bW9udGhFbmQsZnVuY3Rpb24oPQplKXtlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCkrMSksZS5z
ZXREYXRlKHQoZS5nZXRNb250aCgpKzEsZS5nZXRGdWxsWWVhcig9CikpKX0sZnVuY3Rpb24oZSl7
cmV0dXJuIGUuZ2V0TW9udGgoKX0pLGUuaW50ZXJhY3RpdmVHdWlkZWxpbmU9M0RmdW5jdGlvbigp
ez0KZnVuY3Rpb24gYyhvKXtvLmVhY2goZnVuY3Rpb24obyl7ZnVuY3Rpb24gZygpe3ZhciBlPTNE
ZDMubW91c2UodGhpcyksbj0zRGVbPQowXSxyPTNEZVsxXSxvPTNEITAsYT0zRCExO2wmJihuPTNE
ZDMuZXZlbnQub2Zmc2V0WCxyPTNEZDMuZXZlbnQub2Zmc2V0WSxkMy49CmV2ZW50LnRhcmdldC50
YWdOYW1lIT0zRD0zRCJzdmciJiYobz0zRCExKSxkMy5ldmVudC50YXJnZXQuY2xhc3NOYW1lLmJh
c2VWYT0KbC5tYXRjaCgibnYtbGVnZW5kIikmJihhPTNEITApKSxvJiYobi09M0RpLmxlZnQsci09
M0RpLnRvcCk7aWYobjwwfHxyPDB8fG4+PQpwfHxyPmR8fGQzLmV2ZW50LnJlbGF0ZWRUYXJnZXQm
JmQzLmV2ZW50LnJlbGF0ZWRUYXJnZXQub3duZXJTVkdFbGVtZW50PTNEPQo9M0Q9M0R1bmRlZmlu
ZWR8fGEpe2lmKGwmJmQzLmV2ZW50LnJlbGF0ZWRUYXJnZXQmJmQzLmV2ZW50LnJlbGF0ZWRUYXJn
ZXQub3c9Cm5lclNWR0VsZW1lbnQ9M0Q9M0Q9M0R1bmRlZmluZWQmJmQzLmV2ZW50LnJlbGF0ZWRU
YXJnZXQuY2xhc3NOYW1lLm1hdGNoKHQubj0KdlBvaW50ZXJFdmVudHNDbGFzcykpcmV0dXJuO3Uu
ZWxlbWVudE1vdXNlb3V0KHttb3VzZVg6bixtb3VzZVk6cn0pLGMucmVuZGVyPQpHdWlkZUxpbmUo
bnVsbCk7cmV0dXJufXZhciBmPTNEcy5pbnZlcnQobik7dS5lbGVtZW50TW91c2Vtb3ZlKHttb3Vz
ZVg6bixtb3U9CnNlWTpyLHBvaW50WFZhbHVlOmZ9KSxkMy5ldmVudC50eXBlPTNEPTNEPTNEImRi
bGNsaWNrIiYmdS5lbGVtZW50RGJsY2xpY2soez0KbW91c2VYOm4sbW91c2VZOnIscG9pbnRYVmFs
dWU6Zn0pfXZhciBoPTNEZDMuc2VsZWN0KHRoaXMpLHA9M0RufHw5NjAsZD0zRHJ8PQp8NDAwLHY9
M0RoLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LWludGVyYWN0aXZlTGluZUxheWVyIikuZGF0YShb
b10pLG09M0R2LmU9Cm50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIiBudi13cmFwIG52
LWludGVyYWN0aXZlTGluZUxheWVyIik7bS5hcHBlbj0KZCgiZyIpLmF0dHIoImNsYXNzIiwibnYt
aW50ZXJhY3RpdmVHdWlkZUxpbmUiKTtpZighZilyZXR1cm47Zi5vbigibW91c2Vtb3ZlPQoiLGcs
ITApLm9uKCJtb3VzZW91dCIsZywhMCkub24oImRibGNsaWNrIixnKSxjLnJlbmRlckd1aWRlTGlu
ZT0zRGZ1bmN0aW9uKHQ9Cil7aWYoIWEpcmV0dXJuO3ZhciBuPTNEdi5zZWxlY3QoIi5udi1pbnRl
cmFjdGl2ZUd1aWRlTGluZSIpLnNlbGVjdEFsbCgibGluZT0KIikuZGF0YSh0IT0zRG51bGw/W2Uu
dXRpbHMuTmFOdG9aZXJvKHQpXTpbXSxTdHJpbmcpO24uZW50ZXIoKS5hcHBlbmQoImxpbmUiPQop
LmF0dHIoImNsYXNzIiwibnYtZ3VpZGVsaW5lIikuYXR0cigieDEiLGZ1bmN0aW9uKGUpe3JldHVy
biBlfSkuYXR0cigieDIiLGY9CnVuY3Rpb24oZSl7cmV0dXJuIGV9KS5hdHRyKCJ5MSIsZCkuYXR0
cigieTIiLDApLG4uZXhpdCgpLnJlbW92ZSgpfX0pfXZhciB0PQo9M0RlLm1vZGVscy50b29sdGlw
KCksbj0zRG51bGwscj0zRG51bGwsaT0zRHtsZWZ0OjAsdG9wOjB9LHM9M0RkMy5zY2FsZS5saW49
CmVhcigpLG89M0RkMy5zY2FsZS5saW5lYXIoKSx1PTNEZDMuZGlzcGF0Y2goImVsZW1lbnRNb3Vz
ZW1vdmUiLCJlbGVtZW50TW91cz0KZW91dCIsImVsZW1lbnREYmxjbGljayIpLGE9M0QhMCxmPTNE
bnVsbCxsPTNEbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNPQpTSUUiKSE9M0Q9M0QtMTty
ZXR1cm4gYy5kaXNwYXRjaD0zRHUsYy50b29sdGlwPTNEdCxjLm1hcmdpbj0zRGZ1bmN0aW9uKGUp
e3I9CmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRl
ZmluZWQiP2UudG9wOmkudG9wLGkubD0KZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVk
Ij9lLmxlZnQ6aS5sZWZ0LGMpOml9LGMud2lkdGg9M0RmdW5jdGlvbihlPQope3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhuPTNEZSxjKTpufSxjLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWU9Cm50cy5sZW5ndGg/KHI9M0RlLGMpOnJ9LGMueFNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9Cj0zRGUsYyk6c30sYy5zaG93R3VpZGVMaW5lPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLGMpOj0KYX0sYy5zdmdDb250
YWluZXI9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUsYyk6Zn0s
Y30sZS5pPQpudGVyYWN0aXZlQmlzZWN0PTNEZnVuY3Rpb24oZSx0LG4pe2lmKCFlIGluc3RhbmNl
b2YgQXJyYXkpcmV0dXJuIG51bGw7dHlwZW89CmYgbiE9M0QiZnVuY3Rpb24iJiYobj0zRGZ1bmN0
aW9uKGUsdCl7cmV0dXJuIGUueH0pO3ZhciByPTNEZDMuYmlzZWN0b3IobikubD0KZWZ0LGk9M0Rk
My5tYXgoWzAscihlLHQpLTFdKSxzPTNEbihlW2ldLGkpO3R5cGVvZiBzPTNEPTNEInVuZGVmaW5l
ZCImJihzPTNEPQppKTtpZihzPTNEPTNEPTNEdClyZXR1cm4gaTt2YXIgbz0zRGQzLm1pbihbaSsx
LGUubGVuZ3RoLTFdKSx1PTNEbihlW29dLG8pO3I9CmV0dXJuIHR5cGVvZiB1PTNEPTNEInVuZGVm
aW5lZCImJih1PTNEbyksTWF0aC5hYnModS10KT49M0RNYXRoLmFicyhzLXQpP2k6bz0KfSxlLm5l
YXJlc3RWYWx1ZUluZGV4PTNEZnVuY3Rpb24oZSx0LG4pe3ZhciByPTNESW5maW5pdHksaT0zRG51
bGw7cmV0dXJuIGUuPQpmb3JFYWNoKGZ1bmN0aW9uKGUscyl7dmFyIG89M0RNYXRoLmFicyh0LWUp
O288PTNEciYmbzxuJiYocj0zRG8saT0zRHMpfSksaX09CixmdW5jdGlvbigpe3dpbmRvdy5udi50
b29sdGlwPTNEe30sd2luZG93Lm52Lm1vZGVscy50b29sdGlwPTNEZnVuY3Rpb24oKXtmdT0KbmN0
aW9uIHkoKXtpZihhKXt2YXIgZT0zRGQzLnNlbGVjdChhKTtlLm5vZGUoKS50YWdOYW1lIT0zRD0z
RCJzdmciJiYoZT0zRGUuPQpzZWxlY3QoInN2ZyIpKTt2YXIgdD0zRGUubm9kZSgpP2UuYXR0cigi
dmlld0JveCIpOm51bGw7aWYodCl7dD0zRHQuc3BsaXQoIiA9CiIpO3ZhciBuPTNEcGFyc2VJbnQo
ZS5zdHlsZSgid2lkdGgiKSkvdFsyXTtsLmxlZnQ9M0RsLmxlZnQqbixsLnRvcD0zRGwudG9wKj0K
bn19fWZ1bmN0aW9uIGIoZSl7dmFyIHQ7YT90PTNEZDMuc2VsZWN0KGEpOnQ9M0RkMy5zZWxlY3Qo
ImJvZHkiKTt2YXIgbj0zRHQuPQpzZWxlY3QoIi5udnRvb2x0aXAiKTtyZXR1cm4gbi5ub2RlKCk9
M0Q9M0Q9M0RudWxsJiYobj0zRHQuYXBwZW5kKCJkaXYiKS5hdHQ9CnIoImNsYXNzIiwibnZ0b29s
dGlwICIrKHU/dToieHktdG9vbHRpcCIpKS5hdHRyKCJpZCIsaCkpLG4ubm9kZSgpLmlubmVySFRN
TD0KPTNEZSxuLnN0eWxlKCJ0b3AiLDApLnN0eWxlKCJsZWZ0IiwwKS5zdHlsZSgib3BhY2l0eSIs
MCksbi5zZWxlY3RBbGwoImRpdiwgPQp0YWJsZSwgdGQsIHRyIikuY2xhc3NlZChwLCEwKSxuLmNs
YXNzZWQocCwhMCksbi5ub2RlKCl9ZnVuY3Rpb24gdygpe2lmKCFjKXI9CmV0dXJuO2lmKCFnKG4p
KXJldHVybjt5KCk7dmFyIHQ9M0RsLmxlZnQsdT0zRG8hPTNEbnVsbD9vOmwudG9wLGg9M0RiKG0o
bikpOz0KZj0zRGg7aWYoYSl7dmFyIHA9M0RhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzdmciKVsw
XSxkPTNEcD9wLmdldEJvdW5kaW5nQ2xpPQplbnRSZWN0KCk6YS5nZXRCb3VuZGluZ0NsaWVudFJl
Y3QoKSx2PTNEe2xlZnQ6MCx0b3A6MH07aWYocCl7dmFyIEU9M0RwLmdldEI9Cm91bmRpbmdDbGll
bnRSZWN0KCksUz0zRGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkseD0zREUudG9wO2lmKHg8MCl7
dmFyIFQ9Cj0zRGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7eD0zRE1hdGguYWJzKHgpPlQuaGVp
Z2h0PzA6eH12LnRvcD0zRE1hdGguYWJzKD0KeC1TLnRvcCksdi5sZWZ0PTNETWF0aC5hYnMoRS5s
ZWZ0LVMubGVmdCl9dCs9M0RhLm9mZnNldExlZnQrdi5sZWZ0LTIqYS5zY3JvPQpsbExlZnQsdSs9
M0RhLm9mZnNldFRvcCt2LnRvcC0yKmEuc2Nyb2xsVG9wfXJldHVybiBzJiZzPjAmJih1PTNETWF0
aC5mbG9vcig9CnUvcykqcyksZS50b29sdGlwLmNhbGNUb29sdGlwUG9zaXRpb24oW3QsdV0scixp
LGgpLHd9dmFyIHQ9M0RudWxsLG49M0RudWxsLD0Kcj0zRCJ3IixpPTNENTAscz0zRDI1LG89M0Ru
dWxsLHU9M0RudWxsLGE9M0RudWxsLGY9M0RudWxsLGw9M0R7bGVmdDpudWxsLHRvPQpwOm51bGx9
LGM9M0QhMCxoPTNEIm52dG9vbHRpcC0iK01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxZTUpLHA9
M0QibnYtcG9pbnQ9CmVyLWV2ZW50cy1ub25lIixkPTNEZnVuY3Rpb24oZSx0KXtyZXR1cm4gZX0s
dj0zRGZ1bmN0aW9uKGUpe3JldHVybiBlfSxtPTNEZj0KdW5jdGlvbihlKXtpZih0IT0zRG51bGwp
cmV0dXJuIHQ7aWYoZT0zRD0zRG51bGwpcmV0dXJuIiI7dmFyIG49M0RkMy5zZWxlY3QoPQpkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpKSxyPTNEbi5zZWxlY3RBbGwoInRoZWFkIikuZGF0
YShbZV0pLmVudGVyKCk9Ci5hcHBlbmQoInRoZWFkIik7ci5hcHBlbmQoInRyIikuYXBwZW5kKCJ0
ZCIpLmF0dHIoImNvbHNwYW4iLDMpLmFwcGVuZCgic3Rybz0KbmciKS5jbGFzc2VkKCJ4LXZhbHVl
IiwhMCkuaHRtbCh2KGUudmFsdWUpKTt2YXIgaT0zRG4uc2VsZWN0QWxsKCJ0Ym9keSIpLmRhPQp0
YShbZV0pLmVudGVyKCkuYXBwZW5kKCJ0Ym9keSIpLHM9M0RpLnNlbGVjdEFsbCgidHIiKS5kYXRh
KGZ1bmN0aW9uKGUpe3JldHU9CnJuIGUuc2VyaWVzfSkuZW50ZXIoKS5hcHBlbmQoInRyIikuY2xh
c3NlZCgiaGlnaGxpZ2h0IixmdW5jdGlvbihlKXtyZXR1cm4gZT0KLmhpZ2hsaWdodH0pO3MuYXBw
ZW5kKCJ0ZCIpLmNsYXNzZWQoImxlZ2VuZC1jb2xvci1ndWlkZSIsITApLmFwcGVuZCgiZGl2Iiku
PQpzdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29sb3J9KSxz
LmFwcGVuZCgidGQiKS5jbGFzc2U9CmQoImtleSIsITApLmh0bWwoZnVuY3Rpb24oZSl7cmV0dXJu
IGUua2V5fSkscy5hcHBlbmQoInRkIikuY2xhc3NlZCgidmFsdWUiLD0KITApLmh0bWwoZnVuY3Rp
b24oZSx0KXtyZXR1cm4gZChlLnZhbHVlLHQpfSkscy5zZWxlY3RBbGwoInRkIikuZWFjaChmdW5j
dGlvPQpuKGUpe2lmKGUuaGlnaGxpZ2h0KXt2YXIgdD0zRGQzLnNjYWxlLmxpbmVhcigpLmRvbWFp
bihbMCwxXSkucmFuZ2UoWyIjZmZmIiw9CmUuY29sb3JdKSxuPTNELjY7ZDMuc2VsZWN0KHRoaXMp
LnN0eWxlKCJib3JkZXItYm90dG9tLWNvbG9yIix0KG4pKS5zdHlsZSgiYj0Kb3JkZXItdG9wLWNv
bG9yIix0KG4pKX19KTt2YXIgbz0zRG4ubm9kZSgpLm91dGVySFRNTDtyZXR1cm4gZS5mb290ZXIh
PTNEPTNEPQp1bmRlZmluZWQmJihvKz0zRCI8ZGl2IGNsYXNzPTNEJ2Zvb3Rlcic+IitlLmZvb3Rl
cisiPC9kaXY+Iiksb30sZz0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGUmJmUuc2VyaWVzJiZlLnNl
cmllcy5sZW5ndGg+MD8hMDohMX07cmV0dXJuIHcubnZQb2ludGVyRXZlbnRzQz0KbGFzcz0zRHAs
dy5jb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9M0RlLHcp
OnR9LHcudG9vPQpsdGlwRWxlbT0zRGZ1bmN0aW9uKCl7cmV0dXJuIGZ9LHcuY29udGVudEdlbmVy
YXRvcj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmc9CnVtZW50cy5sZW5ndGg/KHR5cGVvZiBlPTNE
PTNEImZ1bmN0aW9uIiYmKG09M0RlKSx3KTptfSx3LmRhdGE9M0RmdW5jdGlvbihlKT0Ke3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhuPTNEZSx3KTpufSx3LmdyYXZpdHk9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lPQpudHMubGVuZ3RoPyhyPTNEZSx3KTpyfSx3LmRpc3RhbmNlPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9Cj0zRGUsdyk6aX0sdy5zbmFwRGlzdGFu
Y2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0zRGUsdyk6cz0KfSx3
LmNsYXNzZXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsdyk6
dX0sdy5jaGFydENvbnRhPQppbmVyPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGE9M0RlLHcpOmF9LHcucG9zaXRpb249M0RmdW5jdGk9Cm9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhsLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdD0K
OmwubGVmdCxsLnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDpsLnRvcCx3
KTpsfSx3LmZpeGVkVG9wPTNEPQpmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
bz0zRGUsdyk6b30sdy5lbmFibGVkPTNEZnVuY3Rpb24oZSl7cmU9CnR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oYz0zRGUsdyk6Y30sdy52YWx1ZUZvcm1hdHRlcj0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cj0KZ3VtZW50cy5sZW5ndGg/KHR5cGVvZiBlPTNEPTNEImZ1bmN0aW9uIiYmKGQ9M0RlKSx3KTpk
fSx3LmhlYWRlckZvcm1hdHRlcj0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHR5cGVvZiBlPTNEPTNEImZ1bmN0aW9uIiYmKHY9M0RlKSx3PQopOnZ9LHcuaWQ9M0RmdW5j
dGlvbigpe3JldHVybiBofSx3fSxlLnRvb2x0aXAuc2hvdz0zRGZ1bmN0aW9uKHQsbixyLGkscyxv
KXs9CnZhciB1PTNEZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dS5jbGFzc05hbWU9M0Qi
bnZ0b29sdGlwICIrKG8/bzoieHktdD0Kb29sdGlwIik7dmFyIGE9M0RzO2lmKCFzfHxzLnRhZ05h
bWUubWF0Y2goL2d8c3ZnL2kpKWE9M0Rkb2N1bWVudC5nZXRFbGVtZW50PQpzQnlUYWdOYW1lKCJi
b2R5IilbMF07dS5zdHlsZS5sZWZ0PTNEMCx1LnN0eWxlLnRvcD0zRDAsdS5zdHlsZS5vcGFjaXR5
PTNEMCw9CnUuaW5uZXJIVE1MPTNEbixhLmFwcGVuZENoaWxkKHUpLHMmJih0WzBdPTNEdFswXS1z
LnNjcm9sbExlZnQsdFsxXT0zRHRbMV0tcz0KLnNjcm9sbFRvcCksZS50b29sdGlwLmNhbGNUb29s
dGlwUG9zaXRpb24odCxyLGksdSl9LGUudG9vbHRpcC5maW5kRmlyc3ROb25TPQpWR1BhcmVudD0z
RGZ1bmN0aW9uKGUpe3doaWxlKGUudGFnTmFtZS5tYXRjaCgvXmd8c3ZnJC9pKSE9M0Q9M0RudWxs
KWU9M0RlLnA9CmFyZW50Tm9kZTtyZXR1cm4gZX0sZS50b29sdGlwLmZpbmRUb3RhbE9mZnNldFRv
cD0zRGZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0Oz0KZG8gaXNOYU4oZS5vZmZzZXRUb3ApfHwobis9
M0RlLm9mZnNldFRvcCk7d2hpbGUoZT0zRGUub2Zmc2V0UGFyZW50KTtyZXR1cm4gPQpufSxlLnRv
b2x0aXAuZmluZFRvdGFsT2Zmc2V0TGVmdD0zRGZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0O2RvIGlz
TmFOKGUub2Zmc2U9CnRMZWZ0KXx8KG4rPTNEZS5vZmZzZXRMZWZ0KTt3aGlsZShlPTNEZS5vZmZz
ZXRQYXJlbnQpO3JldHVybiBufSxlLnRvb2x0aXAuYz0KYWxjVG9vbHRpcFBvc2l0aW9uPTNEZnVu
Y3Rpb24odCxuLHIsaSl7dmFyIHM9M0RwYXJzZUludChpLm9mZnNldEhlaWdodCksbz0KPTNEcGFy
c2VJbnQoaS5vZmZzZXRXaWR0aCksdT0zRGUudXRpbHMud2luZG93U2l6ZSgpLndpZHRoLGE9M0Rl
LnV0aWxzLndpbmRvPQp3U2l6ZSgpLmhlaWdodCxmPTNEd2luZG93LnBhZ2VZT2Zmc2V0LGw9M0R3
aW5kb3cucGFnZVhPZmZzZXQsYyxoO2E9M0R3aW5kb3c9Ci5pbm5lcldpZHRoPj0zRGRvY3VtZW50
LmJvZHkuc2Nyb2xsV2lkdGg/YTphLTE2LHU9M0R3aW5kb3cuaW5uZXJIZWlnaHQ+PTNEZD0Kb2N1
bWVudC5ib2R5LnNjcm9sbEhlaWdodD91OnUtMTYsbj0zRG58fCJzIixyPTNEcnx8MjA7dmFyIHA9
M0RmdW5jdGlvbih0KXtyPQpldHVybiBlLnRvb2x0aXAuZmluZFRvdGFsT2Zmc2V0VG9wKHQsaCl9
LGQ9M0RmdW5jdGlvbih0KXtyZXR1cm4gZS50b29sdGlwLmY9CmluZFRvdGFsT2Zmc2V0TGVmdCh0
LGMpfTtzd2l0Y2gobil7Y2FzZSJlIjpjPTNEdFswXS1vLXIsaD0zRHRbMV0tcy8yO3ZhciB2PQo9
M0RkKGkpLG09M0RwKGkpO3Y8bCYmKGM9M0R0WzBdK3I+bD90WzBdK3I6bC12K2MpLG08ZiYmKGg9
M0RmLW0raCksbStzPmYrYSY9CiYoaD0zRGYrYS1tK2gtcyk7YnJlYWs7Y2FzZSJ3IjpjPTNEdFsw
XStyLGg9M0R0WzFdLXMvMjt2YXIgdj0zRGQoaSksbT0zRHAoaT0KKTt2K28+dSYmKGM9M0R0WzBd
LW8tciksbTxmJiYoaD0zRGYrNSksbStzPmYrYSYmKGg9M0RmK2EtbStoLXMpO2JyZWFrO2Nhc2Ui
PQpuIjpjPTNEdFswXS1vLzItNSxoPTNEdFsxXStyO3ZhciB2PTNEZChpKSxtPTNEcChpKTt2PGwm
JihjPTNEbCs1KSx2K28+dSYmKGM9Cj0zRGMtby8yKzUpLG0rcz5mK2EmJihoPTNEZithLW0raC1z
KTticmVhaztjYXNlInMiOmM9M0R0WzBdLW8vMixoPTNEdFsxXS1zLT0Kcjt2YXIgdj0zRGQoaSks
bT0zRHAoaSk7djxsJiYoYz0zRGwrNSksditvPnUmJihjPTNEYy1vLzIrNSksZj5tJiYoaD0zRGYp
O2JyPQplYWs7Y2FzZSJub25lIjpjPTNEdFswXSxoPTNEdFsxXS1yO3ZhciB2PTNEZChpKSxtPTNE
cChpKX1yZXR1cm4gaS5zdHlsZS5sZWY9CnQ9M0RjKyJweCIsaS5zdHlsZS50b3A9M0RoKyJweCIs
aS5zdHlsZS5vcGFjaXR5PTNEMSxpLnN0eWxlLnBvc2l0aW9uPTNEImFicz0Kb2x1dGUiLGl9LGUu
dG9vbHRpcC5jbGVhbnVwPTNEZnVuY3Rpb24oKXt2YXIgZT0zRGRvY3VtZW50LmdldEVsZW1lbnRz
QnlDbGFzPQpzTmFtZSgibnZ0b29sdGlwIiksdD0zRFtdO3doaWxlKGUubGVuZ3RoKXQucHVzaChl
WzBdKSxlWzBdLnN0eWxlLnRyYW5zaXRpb249CkRlbGF5PTNEIjAgIWltcG9ydGFudCIsZVswXS5z
dHlsZS5vcGFjaXR5PTNEMCxlWzBdLmNsYXNzTmFtZT0zRCJudnRvb2x0aXAtcD0KZW5kaW5nLXJl
bW92YWwiO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt3aGlsZSh0Lmxlbmd0aCl7dmFyIGU9M0R0LnBv
cCgpO2UucGFyPQplbnROb2RlLnJlbW92ZUNoaWxkKGUpfX0sNTAwKX19KCksZS51dGlscy53aW5k
b3dTaXplPTNEZnVuY3Rpb24oKXt2YXIgZT0zRHs9CndpZHRoOjY0MCxoZWlnaHQ6NDgwfTtyZXR1
cm4gZG9jdW1lbnQuYm9keSYmZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCYmKGUudz0KaWR0aD0z
RGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgsZS5oZWlnaHQ9M0Rkb2N1bWVudC5ib2R5Lm9mZnNl
dEhlaWdodCksZG9jPQp1bWVudC5jb21wYXRNb2RlPTNEPTNEIkNTUzFDb21wYXQiJiZkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQmJmRvY3VtZW50LmRvY3U9Cm1lbnRFbGVtZW50Lm9mZnNldFdpZHRo
JiYoZS53aWR0aD0zRGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZzZXRXaWR0aCxlLj0KaGVp
Z2h0PTNEZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldEhlaWdodCksd2luZG93LmlubmVy
V2lkdGgmJndpbmRvdy5pPQpubmVySGVpZ2h0JiYoZS53aWR0aD0zRHdpbmRvdy5pbm5lcldpZHRo
LGUuaGVpZ2h0PTNEd2luZG93LmlubmVySGVpZ2h0KSxlfSw9CmUudXRpbHMud2luZG93UmVzaXpl
PTNEZnVuY3Rpb24oZSl7aWYoZT0zRD0zRD0zRHVuZGVmaW5lZClyZXR1cm47dmFyIHQ9M0R3aT0K
bmRvdy5vbnJlc2l6ZTt3aW5kb3cub25yZXNpemU9M0RmdW5jdGlvbihuKXt0eXBlb2YgdD0zRD0z
RCJmdW5jdGlvbiImJnQobiksPQplKG4pfX0sZS51dGlscy5nZXRDb2xvcj0zRGZ1bmN0aW9uKHQp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoP09iamVjdC5wcm90b3Q9CnlwZS50b1N0cmluZy5jYWxs
KHQpPTNEPTNEPTNEIltvYmplY3QgQXJyYXldIj9mdW5jdGlvbihlLG4pe3JldHVybiBlLmNvbG9y
fD0KfHRbbiV0Lmxlbmd0aF19OnQ6ZS51dGlscy5kZWZhdWx0Q29sb3IoKX0sZS51dGlscy5kZWZh
dWx0Q29sb3I9M0RmdW5jdGlvbigpPQp7dmFyIGU9M0RkMy5zY2FsZS5jYXRlZ29yeTIwKCkucmFu
Z2UoKTtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5jb2xvcnw9CnxlW24lZS5sZW5ndGhd
fX0sZS51dGlscy5jdXN0b21UaGVtZT0zRGZ1bmN0aW9uKGUsdCxuKXt0PTNEdHx8ZnVuY3Rpb24o
ZSl7cj0KZXR1cm4gZS5rZXl9LG49M0RufHxkMy5zY2FsZS5jYXRlZ29yeTIwKCkucmFuZ2UoKTt2
YXIgcj0zRG4ubGVuZ3RoO3JldHVybiBmPQp1bmN0aW9uKGkscyl7dmFyIG89M0R0KGkpO3JldHVy
biByfHwocj0zRG4ubGVuZ3RoKSx0eXBlb2YgZVtvXSE9M0QidW5kZWZpbmU9CmQiP3R5cGVvZiBl
W29dPTNEPTNEImZ1bmN0aW9uIj9lW29dKCk6ZVtvXTpuWy0tcl19fSxlLnV0aWxzLnBqYXg9M0Rm
dW5jdGlvbj0KKHQsbil7ZnVuY3Rpb24gcihyKXtkMy5odG1sKHIsZnVuY3Rpb24ocil7dmFyIGk9
M0RkMy5zZWxlY3Qobikubm9kZSgpO2kucGFyPQplbnROb2RlLnJlcGxhY2VDaGlsZChkMy5zZWxl
Y3Qocikuc2VsZWN0KG4pLm5vZGUoKSxpKSxlLnV0aWxzLnBqYXgodCxuKX0pfWQ9CjMuc2VsZWN0
QWxsKHQpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtoaXN0b3J5LnB1c2hTdGF0ZSh0aGlzLmhyZWYs
dGhpcy50ZXh0Qz0Kb250ZW50LHRoaXMuaHJlZikscih0aGlzLmhyZWYpLGQzLmV2ZW50LnByZXZl
bnREZWZhdWx0KCl9KSxkMy5zZWxlY3Qod2luZG93PQopLm9uKCJwb3BzdGF0ZSIsZnVuY3Rpb24o
KXtkMy5ldmVudC5zdGF0ZSYmcihkMy5ldmVudC5zdGF0ZSl9KX0sZS51dGlscy5jYWw9CmNBcHBy
b3hUZXh0V2lkdGg9M0RmdW5jdGlvbihlKXtpZih0eXBlb2YgZS5zdHlsZT0zRD0zRCJmdW5jdGlv
biImJnR5cGVvZiBlLj0KdGV4dD0zRD0zRCJmdW5jdGlvbiIpe3ZhciB0PTNEcGFyc2VJbnQoZS5z
dHlsZSgiZm9udC1zaXplIikucmVwbGFjZSgicHgiLCIiPQopKSxuPTNEZS50ZXh0KCkubGVuZ3Ro
O3JldHVybiBuKnQqLjV9cmV0dXJuIDB9LGUudXRpbHMuTmFOdG9aZXJvPTNEZnVuY3Rpb249Cihl
KXtyZXR1cm4gdHlwZW9mIGUhPTNEIm51bWJlciJ8fGlzTmFOKGUpfHxlPTNEPTNEPTNEbnVsbHx8
ZT0zRD0zRD0zREluZmluaT0KdHk/MDplfSxlLnV0aWxzLm9wdGlvbnNGdW5jPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGUmJmQzLm1hcChlKS5mb3JFYWNoKGZ1bmN0PQppb24oZSx0KXt0eXBlb2YgdGhp
c1tlXT0zRD0zRCJmdW5jdGlvbiImJnRoaXNbZV0odCl9LmJpbmQodGhpcykpLHRoaXN9LGUubW89
CmRlbHMuYXhpcz0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gbShlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0
aW9uKGUpe3ZhciBpPTNEZDMucz0KZWxlY3QodGhpcyksbT0zRGkuc2VsZWN0QWxsKCJnLm52LXdy
YXAubnYtYXhpcyIpLmRhdGEoW2VdKSxnPTNEbS5lbnRlcigpLmFwPQpwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudmQzIG52LXdyYXAgbnYtYXhpcyIpLHk9M0RnLmFwcGVuZCgiZyIpLGI9M0RtLnNl
bGU9CmN0KCJnIik7cCE9M0Q9M0RudWxsP3QudGlja3MocCk6KHQub3JpZW50KCk9M0Q9M0QidG9w
Inx8dC5vcmllbnQoKT0zRD0zRCJibz0KdHRvbSIpJiZ0LnRpY2tzKE1hdGguYWJzKHMucmFuZ2Uo
KVsxXS1zLnJhbmdlKClbMF0pLzEwMCksYi5jYWxsKHQpLHY9M0R2fHx0PQouc2NhbGUoKTt2YXIg
dz0zRHQudGlja0Zvcm1hdCgpO3c9M0Q9M0RudWxsJiYodz0zRHYudGlja0Zvcm1hdCgpKTt2YXIg
RT0zRGI9Ci5zZWxlY3RBbGwoInRleHQubnYtYXhpc2xhYmVsIikuZGF0YShbb3x8bnVsbF0pO0Uu
ZXhpdCgpLnJlbW92ZSgpO3N3aXRjaCh0Lj0Kb3JpZW50KCkpe2Nhc2UidG9wIjpFLmVudGVyKCku
YXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudi1heGlzbGFiZWwiKTt2PQphciBTPTNEcy5y
YW5nZSgpLmxlbmd0aD0zRD0zRDI/cy5yYW5nZSgpWzFdOnMucmFuZ2UoKVtzLnJhbmdlKCkubGVu
Z3RoLTFdKyg9CnMucmFuZ2UoKVsxXS1zLnJhbmdlKClbMF0pO0UuYXR0cigidGV4dC1hbmNob3Ii
LCJtaWRkbGUiKS5hdHRyKCJ5IiwwKS5hdHRyKD0KIngiLFMvMik7aWYodSl7dmFyIHg9M0RtLnNl
bGVjdEFsbCgiZy5udi1heGlzTWF4TWluIikuZGF0YShzLmRvbWFpbigpKTt4LmVuPQp0ZXIoKS5h
cHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWF4aXNNYXhNaW4iKS5hcHBlbmQoInRleHQiKSx4
LmV4aXQoKS5yZW09Cm92ZSgpLHguYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVy
biJ0cmFuc2xhdGUoIitzKGUpKyIsMCkifSkuc2VsZT0KY3QoInRleHQiKS5hdHRyKCJkeSIsIi0w
LjVlbSIpLmF0dHIoInkiLC10LnRpY2tQYWRkaW5nKCkpLmF0dHIoInRleHQtYW5jaG9yPQoiLCJt
aWRkbGUiKS50ZXh0KGZ1bmN0aW9uKGUsdCl7dmFyIG49M0R3KGUpO3JldHVybigiIituKS5tYXRj
aCgiTmFOIik/IiI6bn09CikseC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJu
InRyYW5zbGF0ZSgiK3MucmFuZ2UoKVt0XSsiLDApIn0pfT0KYnJlYWs7Y2FzZSJib3R0b20iOnZh
ciBUPTNEMzYsTj0zRDMwLEM9M0RiLnNlbGVjdEFsbCgiZyIpLnNlbGVjdCgidGV4dCIpO2lmPQoo
ZiUzNjApe0MuZWFjaChmdW5jdGlvbihlLHQpe3ZhciBuPTNEdGhpcy5nZXRCQm94KCkud2lkdGg7
bj5OJiYoTj0zRG4pfSk7dmE9CnIgaz0zRE1hdGguYWJzKE1hdGguc2luKGYqTWF0aC5QSS8xODAp
KSxUPTNEKGs/aypOOk4pKzMwO0MuYXR0cigidHJhbnNmb3JtIj0KLGZ1bmN0aW9uKGUsdCxuKXty
ZXR1cm4icm90YXRlKCIrZisiIDAsMCkifSkuc3R5bGUoInRleHQtYW5jaG9yIixmJTM2MD4wPyJz
PQp0YXJ0IjoiZW5kIil9RS5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnYt
YXhpc2xhYmVsIik7dmFyIFM9M0Q9CnMucmFuZ2UoKS5sZW5ndGg9M0Q9M0QyP3MucmFuZ2UoKVsx
XTpzLnJhbmdlKClbcy5yYW5nZSgpLmxlbmd0aC0xXSsocy5yYW5nZT0KKClbMV0tcy5yYW5nZSgp
WzBdKTtFLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikuYXR0cigieSIsVCkuYXR0cigieCIs
Uy8yPQopO2lmKHUpe3ZhciB4PTNEbS5zZWxlY3RBbGwoImcubnYtYXhpc01heE1pbiIpLmRhdGEo
W3MuZG9tYWluKClbMF0scy5kb21haW49CigpW3MuZG9tYWluKCkubGVuZ3RoLTFdXSk7eC5lbnRl
cigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYXhpc01heE1pbj0KIikuYXBwZW5kKCJ0
ZXh0IikseC5leGl0KCkucmVtb3ZlKCkseC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7
cmV0dXJuPQoidHJhbnNsYXRlKCIrKHMoZSkrKGg/cy5yYW5nZUJhbmQoKS8yOjApKSsiLDApIn0p
LnNlbGVjdCgidGV4dCIpLmF0dHIoImR5Iiw9CiIuNzFlbSIpLmF0dHIoInkiLHQudGlja1BhZGRp
bmcoKSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQsbil7cmV0dXJuIj0Kcm90YXRlKCIr
ZisiIDAsMCkifSkuc3R5bGUoInRleHQtYW5jaG9yIixmP2YlMzYwPjA/InN0YXJ0IjoiZW5kIjoi
bWlkZGxlIikuPQp0ZXh0KGZ1bmN0aW9uKGUsdCl7dmFyIG49M0R3KGUpO3JldHVybigiIituKS5t
YXRjaCgiTmFOIik/IiI6bn0pLHguYXR0cigidHI9CmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0
dXJuInRyYW5zbGF0ZSgiKyhzKGUpKyhoP3MucmFuZ2VCYW5kKCkvMjowKSkrIiwwKT0KIn0pfWMm
JkMuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoMCwiKyh0
JTI9M0Q9M0QwPyIwPQoiOiIxMiIpKyIpIn0pO2JyZWFrO2Nhc2UicmlnaHQiOkUuZW50ZXIoKS5h
cHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52LWE9Cnhpc2xhYmVsIiksRS5zdHlsZSgidGV4
dC1hbmNob3IiLGw/Im1pZGRsZSI6ImJlZ2luIikuYXR0cigidHJhbnNmb3JtIixsPyJybz0KdGF0
ZSg5MCkiOiIiKS5hdHRyKCJ5IixsPy1NYXRoLm1heChuLnJpZ2h0LHIpKzEyOi0xMCkuYXR0cigi
eCIsbD9zLnJhbmdlKClbPQowXS8yOnQudGlja1BhZGRpbmcoKSk7aWYodSl7dmFyIHg9M0RtLnNl
bGVjdEFsbCgiZy5udi1heGlzTWF4TWluIikuZGF0YShzLmQ9Cm9tYWluKCkpO3guZW50ZXIoKS5h
cHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWF4aXNNYXhNaW4iKS5hcHBlbmQoInRleHQiKT0K
LnN0eWxlKCJvcGFjaXR5IiwwKSx4LmV4aXQoKS5yZW1vdmUoKSx4LmF0dHIoInRyYW5zZm9ybSIs
ZnVuY3Rpb24oZSx0KXtyZXR1PQpybiJ0cmFuc2xhdGUoMCwiK3MoZSkrIikifSkuc2VsZWN0KCJ0
ZXh0IikuYXR0cigiZHkiLCIuMzJlbSIpLmF0dHIoInkiLDApLmE9CnR0cigieCIsdC50aWNrUGFk
ZGluZygpKS5zdHlsZSgidGV4dC1hbmNob3IiLCJzdGFydCIpLnRleHQoZnVuY3Rpb24oZSx0KXt2
YT0KciBuPTNEdyhlKTtyZXR1cm4oIiIrbikubWF0Y2goIk5hTiIpPyIiOm59KSx4LmF0dHIoInRy
YW5zZm9ybSIsZnVuY3Rpb24oZSx0PQope3JldHVybiJ0cmFuc2xhdGUoMCwiK3MucmFuZ2UoKVt0
XSsiKSJ9KS5zZWxlY3QoInRleHQiKS5zdHlsZSgib3BhY2l0eSIsMSk9Cn1icmVhaztjYXNlImxl
ZnQiOkUuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52LWF4aXNsYWJlbCIp
LEUucz0KdHlsZSgidGV4dC1hbmNob3IiLGw/Im1pZGRsZSI6ImVuZCIpLmF0dHIoInRyYW5zZm9y
bSIsbD8icm90YXRlKC05MCkiOiIiKS5hPQp0dHIoInkiLGw/LU1hdGgubWF4KG4ubGVmdCxyKStk
Oi0xMCkuYXR0cigieCIsbD8tcy5yYW5nZSgpWzBdLzI6LXQudGlja1BhZGQ9CmluZygpKTtpZih1
KXt2YXIgeD0zRG0uc2VsZWN0QWxsKCJnLm52LWF4aXNNYXhNaW4iKS5kYXRhKHMuZG9tYWluKCkp
O3guZW50ZT0KcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYXhpc01heE1pbiIpLmFw
cGVuZCgidGV4dCIpLnN0eWxlKCJvcGFjaXR5PQoiLDApLHguZXhpdCgpLnJlbW92ZSgpLHguYXR0
cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoMCw9CiIrdihlKSsi
KSJ9KS5zZWxlY3QoInRleHQiKS5hdHRyKCJkeSIsIi4zMmVtIikuYXR0cigieSIsMCkuYXR0cigi
eCIsLXQudGljaz0KUGFkZGluZygpKS5hdHRyKCJ0ZXh0LWFuY2hvciIsImVuZCIpLnRleHQoZnVu
Y3Rpb24oZSx0KXt2YXIgbj0zRHcoZSk7cmV0dXJuPQooIiIrbikubWF0Y2goIk5hTiIpPyIiOm59
KSx4LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXQ9CmUoMCwi
K3MucmFuZ2UoKVt0XSsiKSJ9KS5zZWxlY3QoInRleHQiKS5zdHlsZSgib3BhY2l0eSIsMSl9fUUu
dGV4dChmdW5jdGlvbj0KKGUpe3JldHVybiBlfSksdSYmKHQub3JpZW50KCk9M0Q9M0Q9M0QibGVm
dCJ8fHQub3JpZW50KCk9M0Q9M0Q9M0QicmlnaHQiKSYmPQooYi5zZWxlY3RBbGwoImciKS5lYWNo
KGZ1bmN0aW9uKGUsdCl7ZDMuc2VsZWN0KHRoaXMpLnNlbGVjdCgidGV4dCIpLmF0dHIoIm89CnBh
Y2l0eSIsMSk7aWYocyhlKTxzLnJhbmdlKClbMV0rMTB8fHMoZSk+cy5yYW5nZSgpWzBdLTEwKShl
PjFlLTEwfHxlPC0xZS0xMD0KKSYmZDMuc2VsZWN0KHRoaXMpLmF0dHIoIm9wYWNpdHkiLDApLGQz
LnNlbGVjdCh0aGlzKS5zZWxlY3QoInRleHQiKS5hdHRyKCJvPQpwYWNpdHkiLDApfSkscy5kb21h
aW4oKVswXT0zRD0zRHMuZG9tYWluKClbMV0mJnMuZG9tYWluKClbMF09M0Q9M0QwJiZtLnNlbGU9
CmN0QWxsKCJnLm52LWF4aXNNYXhNaW4iKS5zdHlsZSgib3BhY2l0eSIsZnVuY3Rpb24oZSx0KXty
ZXR1cm4gdD8wOjF9KSk7aWYodT0KJiYodC5vcmllbnQoKT0zRD0zRD0zRCJ0b3AifHx0Lm9yaWVu
dCgpPTNEPTNEPTNEImJvdHRvbSIpKXt2YXIgTD0zRFtdO20uc2VsPQplY3RBbGwoImcubnYtYXhp
c01heE1pbiIpLmVhY2goZnVuY3Rpb24oZSx0KXt0cnl7dD9MLnB1c2gocyhlKS10aGlzLmdldEJC
b3g9CigpLndpZHRoLTQpOkwucHVzaChzKGUpK3RoaXMuZ2V0QkJveCgpLndpZHRoKzQpfWNhdGNo
KG4pe3Q/TC5wdXNoKHMoZSktNCk6TD0KLnB1c2gocyhlKSs0KX19KSxiLnNlbGVjdEFsbCgiZyIp
LmVhY2goZnVuY3Rpb24oZSx0KXtpZihzKGUpPExbMF18fHMoZSk+TFsxPQpdKWU+MWUtMTB8fGU8
LTFlLTEwP2QzLnNlbGVjdCh0aGlzKS5yZW1vdmUoKTpkMy5zZWxlY3QodGhpcykuc2VsZWN0KCJ0
ZXh0Iik9Ci5yZW1vdmUoKX0pfWEmJmIuc2VsZWN0QWxsKCIudGljayIpLmZpbHRlcihmdW5jdGlv
bihlKXtyZXR1cm4hcGFyc2VGbG9hdChNYT0KdGgucm91bmQoZS5fX2RhdGFfXyoxZTUpLzFlNikm
JmUuX19kYXRhX18hPTNEPTNEdW5kZWZpbmVkfSkuY2xhc3NlZCgiemVybyIsPQohMCksdj0zRHMu
Y29weSgpfSksbX12YXIgdD0zRGQzLnN2Zy5heGlzKCksbj0zRHt0b3A6MCxyaWdodDowLGJvdHRv
bTowLGxlZnQ9CjowfSxyPTNENzUsaT0zRDYwLHM9M0RkMy5zY2FsZS5saW5lYXIoKSxvPTNEbnVs
bCx1PTNEITAsYT0zRCEwLGY9M0QwLGw9M0QhMD0KLGM9M0QhMSxoPTNEITEscD0zRG51bGwsZD0z
RDEyO3Quc2NhbGUocykub3JpZW50KCJib3R0b20iKS50aWNrRm9ybWF0KGZ1bmN0PQppb24oZSl7
cmV0dXJuIGV9KTt2YXIgdjtyZXR1cm4gbS5heGlzPTNEdCxkMy5yZWJpbmQobSx0LCJvcmllbnQi
LCJ0aWNrVmFsdWU9CnMiLCJ0aWNrU3ViZGl2aWRlIiwidGlja1NpemUiLCJ0aWNrUGFkZGluZyIs
InRpY2tGb3JtYXQiKSxkMy5yZWJpbmQobSxzLCJkbz0KbWFpbiIsInJhbmdlIiwicmFuZ2VCYW5k
IiwicmFuZ2VCYW5kcyIpLG0ub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluPQpkKG0p
LG0ubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4udG9wPTNE
dHlwZW9mIGUudG9wIT0KPTNEInVuZGVmaW5lZCI/ZS50b3A6bi50b3Asbi5yaWdodD0zRHR5cGVv
ZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6PQpuLnJpZ2h0LG4uYm90dG9tPTNEdHlw
ZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOm4uYm90dG9tLG4ubGVmdD0KPTNE
dHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6bi5sZWZ0LG0pOm59LG0ud2lkdGg9
M0RmdW5jdGlvbihlKXtyPQpldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZSxtKTpyfSxtLnRp
Y2tzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy49Cmxlbmd0aD8ocD0zRGUsbSk6cH0s
bS5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUsbT0K
KTppfSxtLmF4aXNMYWJlbD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhv
PTNEZSxtKTpvfSxtLnNob3dNPQpheE1pbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyh1PTNEZSxtKTp1fSxtLmhpZ2hsaWdodFplcm89M0Q9CmZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZSxtKTphfSxtLnNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0
dT0Kcm4gYXJndW1lbnRzLmxlbmd0aD8ocz0zRGUsdC5zY2FsZShzKSxoPTNEdHlwZW9mIHMucmFu
Z2VCYW5kcz0zRD0zRCJmdW5jdGlvPQpuIixkMy5yZWJpbmQobSxzLCJkb21haW4iLCJyYW5nZSIs
InJhbmdlQmFuZCIsInJhbmdlQmFuZHMiKSxtKTpzfSxtLnJvdGF0ZVk9CkxhYmVsPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLG0pOmx9LG0ucm90YXRlTGFiZWxz
PTNEZj0KdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUsbSk6Zn0sbS5z
dGFnZ2VyTGFiZWxzPTNEZnVuY3Rpb24oPQplKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0z
RGUsbSk6Y30sbS5heGlzTGFiZWxEaXN0YW5jZT0zRGZ1bmN0aW9uKGUpe3I9CmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGQ9M0RlLG0pOmR9LG19LGUubW9kZWxzLmhpc3RvcmljYWxCYXI9M0RmdW5j
dGlvbigpez0KZnVuY3Rpb24gdyhFKXtyZXR1cm4gRS5lYWNoKGZ1bmN0aW9uKHcpe3ZhciBFPTNE
bi10LmxlZnQtdC5yaWdodCxTPTNEci10LnRvPQpwLXQuYm90dG9tLFQ9M0RkMy5zZWxlY3QodGhp
cyk7cy5kb21haW4oZHx8ZDMuZXh0ZW50KHdbMF0udmFsdWVzLm1hcCh1KS5jb249CmNhdChmKSkp
LGM/cy5yYW5nZShtfHxbRSouNS93WzBdLnZhbHVlcy5sZW5ndGgsRSood1swXS52YWx1ZXMubGVu
Z3RoLS41KS93Wz0KMF0udmFsdWVzLmxlbmd0aF0pOnMucmFuZ2UobXx8WzAsRV0pLG8uZG9tYWlu
KHZ8fGQzLmV4dGVudCh3WzBdLnZhbHVlcy5tYXAoPQphKS5jb25jYXQobCkpKS5yYW5nZShnfHxb
UywwXSkscy5kb21haW4oKVswXT0zRD0zRD0zRHMuZG9tYWluKClbMV0mJihzLmRvbWE9CmluKClb
MF0/cy5kb21haW4oW3MuZG9tYWluKClbMF0tcy5kb21haW4oKVswXSouMDEscy5kb21haW4oKVsx
XStzLmRvbWFpbigpWz0KMV0qLjAxXSk6cy5kb21haW4oWy0xLDFdKSksby5kb21haW4oKVswXT0z
RD0zRD0zRG8uZG9tYWluKClbMV0mJihvLmRvbWFpbigpPQpbMF0/by5kb21haW4oW28uZG9tYWlu
KClbMF0rby5kb21haW4oKVswXSouMDEsby5kb21haW4oKVsxXS1vLmRvbWFpbigpWzFdKi49CjAx
XSk6by5kb21haW4oWy0xLDFdKSk7dmFyIE49M0RULnNlbGVjdEFsbCgiZy5udi13cmFwLm52LWhp
c3RvcmljYWxCYXItIitpKT0KLmRhdGEoW3dbMF0udmFsdWVzXSksQz0zRE4uZW50ZXIoKS5hcHBl
bmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBuPQp2LWhpc3RvcmljYWxCYXItIitp
KSxrPTNEQy5hcHBlbmQoImRlZnMiKSxMPTNEQy5hcHBlbmQoImciKSxBPTNETi5zZWxlY3QoImc9
CiIpO0wuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1iYXJzIiksTi5hdHRyKCJ0cmFuc2Zv
cm0iLCJ0cmFuc2xhdGUoIit0Lj0KbGVmdCsiLCIrdC50b3ArIikiKSxULm9uKCJjbGljayIsZnVu
Y3Rpb24oZSx0KXt5LmNoYXJ0Q2xpY2soe2RhdGE6ZSxpbmRleDp0PQoscG9zOmQzLmV2ZW50LGlk
Oml9KX0pLGsuYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoImlkIiwibnYtY2hhcnQtY2xpcC1wYXRo
LSI9CitpKS5hcHBlbmQoInJlY3QiKSxOLnNlbGVjdCgiI252LWNoYXJ0LWNsaXAtcGF0aC0iK2kr
IiByZWN0IikuYXR0cigid2lkdGgiLD0KRSkuYXR0cigiaGVpZ2h0IixTKSxBLmF0dHIoImNsaXAt
cGF0aCIsaD8idXJsKCNudi1jaGFydC1jbGlwLXBhdGgtIitpKyIpIjoiPQoiKTt2YXIgTz0zRE4u
c2VsZWN0KCIubnYtYmFycyIpLnNlbGVjdEFsbCgiLm52LWJhciIpLmRhdGEoZnVuY3Rpb24oZSl7
cmV0dXI9Cm4gZX0sZnVuY3Rpb24oZSx0KXtyZXR1cm4gdShlLHQpfSk7Ty5leGl0KCkucmVtb3Zl
KCk7dmFyIE09M0RPLmVudGVyKCkuYXBwZT0KbmQoInJlY3QiKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5
IixmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhvKE1hPQp0aC5tYXgoMCxh
KHQsbikpKSl9KS5hdHRyKCJoZWlnaHQiLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFO
dG9aZXJvKE09CmF0aC5hYnMobyhhKHQsbikpLW8oMCkpKX0pLmF0dHIoInRyYW5zZm9ybSIsZnVu
Y3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKD0KIisocyh1KGUsdCkpLUUvd1swXS52YWx1ZXMu
bGVuZ3RoKi40NSkrIiwwKSJ9KS5vbigibW91c2VvdmVyIixmdW5jdGlvbihlLHQpPQp7aWYoIWIp
cmV0dXJuO2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIsITApLHkuZWxlbWVudE1vdXNl
b3Zlcih7cG9pbnQ9CjplLHNlcmllczp3WzBdLHBvczpbcyh1KGUsdCkpLG8oYShlLHQpKV0scG9p
bnRJbmRleDp0LHNlcmllc0luZGV4OjAsZTpkMy5ldj0KZW50fSl9KS5vbigibW91c2VvdXQiLGZ1
bmN0aW9uKGUsdCl7aWYoIWIpcmV0dXJuO2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJoPQpvdmVy
IiwhMSkseS5lbGVtZW50TW91c2VvdXQoe3BvaW50OmUsc2VyaWVzOndbMF0scG9pbnRJbmRleDp0
LHNlcmllc0luZGV4OjA9CixlOmQzLmV2ZW50fSl9KS5vbigiY2xpY2siLGZ1bmN0aW9uKGUsdCl7
aWYoIWIpcmV0dXJuO3kuZWxlbWVudENsaWNrKHt2YWx1ZT0KOmEoZSx0KSxkYXRhOmUsaW5kZXg6
dCxwb3M6W3ModShlLHQpKSxvKGEoZSx0KSldLGU6ZDMuZXZlbnQsaWQ6aX0pLGQzLmV2ZW50PQou
c3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiZGJsY2xpY2siLGZ1bmN0aW9uKGUsdCl7aWYoIWIpcmV0
dXJuO3kuZWxlbWVudERibEM9CmxpY2soe3ZhbHVlOmEoZSx0KSxkYXRhOmUsaW5kZXg6dCxwb3M6
W3ModShlLHQpKSxvKGEoZSx0KSldLGU6ZDMuZXZlbnQsaWQ6aT0KfSksZDMuZXZlbnQuc3RvcFBy
b3BhZ2F0aW9uKCl9KTtPLmF0dHIoImZpbGwiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAoZSx0KX0p
PQouYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4oYShlLHQpPDA/Im52LWJhciBu
ZWdhdGl2ZSI6Im52LWJhciBwb3M9Cml0aXZlIikrIiBudi1iYXItIituKyItIit0fSkuYXR0cigi
dHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdD0KZSgiKyhzKHUoZSx0KSkt
RS93WzBdLnZhbHVlcy5sZW5ndGgqLjQ1KSsiLDApIn0pLmF0dHIoIndpZHRoIixFL3dbMF0udmFs
dWVzPQoubGVuZ3RoKi45KSxPLmF0dHIoInkiLGZ1bmN0aW9uKHQsbil7dmFyIHI9M0RhKHQsbik8
MD9vKDApOm8oMCktbyhhKHQsbikpPDE9Cj9vKDApLTE6byhhKHQsbikpO3JldHVybiBlLnV0aWxz
Lk5hTnRvWmVybyhyKX0pLmF0dHIoImhlaWdodCIsZnVuY3Rpb24odCxuKT0Ke3JldHVybiBlLnV0
aWxzLk5hTnRvWmVybyhNYXRoLm1heChNYXRoLmFicyhvKGEodCxuKSktbygwKSksMSkpfSl9KSx3
fXZhciB0PQo9M0R7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9LG49M0Q5NjAscj0zRDUw
MCxpPTNETWF0aC5mbG9vcihNYXRoLnJhbmQ9Cm9tKCkqMWU0KSxzPTNEZDMuc2NhbGUubGluZWFy
KCksbz0zRGQzLnNjYWxlLmxpbmVhcigpLHU9M0RmdW5jdGlvbihlKXtyZXR1cj0KbiBlLnh9LGE9
M0RmdW5jdGlvbihlKXtyZXR1cm4gZS55fSxmPTNEW10sbD0zRFswXSxjPTNEITEsaD0zRCEwLHA9
M0RlLnV0aWxzPQouZGVmYXVsdENvbG9yKCksZCx2LG0sZyx5PTNEZDMuZGlzcGF0Y2goImNoYXJ0
Q2xpY2siLCJlbGVtZW50Q2xpY2siLCJlbGVtZW49CnREYmxDbGljayIsImVsZW1lbnRNb3VzZW92
ZXIiLCJlbGVtZW50TW91c2VvdXQiKSxiPTNEITA7cmV0dXJuIHcuaGlnaGxpZ2h0UD0Kb2ludD0z
RGZ1bmN0aW9uKGUsdCl7ZDMuc2VsZWN0KCIubnYtaGlzdG9yaWNhbEJhci0iK2kpLnNlbGVjdCgi
Lm52LWJhcnMgLm52PQotYmFyLTAtIitlKS5jbGFzc2VkKCJob3ZlciIsdCl9LHcuY2xlYXJIaWdo
bGlnaHRzPTNEZnVuY3Rpb24oKXtkMy5zZWxlY3QoIi49Cm52LWhpc3RvcmljYWxCYXItIitpKS5z
ZWxlY3QoIi5udi1iYXJzIC5udi1iYXIuaG92ZXIiKS5jbGFzc2VkKCJob3ZlciIsITEpfT0KLHcu
ZGlzcGF0Y2g9M0R5LHcub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZCh3KSx3Lng9
M0RmdW5jdGlvbihlKXtyPQpldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZSx3KTp1fSx3Lnk9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmc9CnRoPyhhPTNEZSx3KTphfSx3Lm1h
cmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD0zRHR5cD0K
ZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQucmlnaHQ9M0R0eXBlb2YgZS5y
aWdodCE9M0QidW5kZWZpbmVkPQoiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT0zRHR5cGVvZiBl
LmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHQ9Cm9tLHQubGVmdD0zRHR5cGVv
ZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCx3KTp0fSx3LndpZHRoPTNEZnVu
Yz0KdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGUsdyk6bn0sdy5oZWlnaHQ9
M0RmdW5jdGlvbihlKXtyZXR1cm4gPQphcmd1bWVudHMubGVuZ3RoPyhyPTNEZSx3KTpyfSx3LnhT
Y2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Q9Cmg/KHM9M0RlLHcpOnN9
LHcueVNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RlLHcp
Om99LD0Kdy54RG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9
M0RlLHcpOmR9LHcueURvbWFpbj0zRGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHY9M0RlLHcpOnZ9LHcueFJhbmdlPTNEZnVuY3Rpb24oZSl7cmV0dXI9Cm4gYXJndW1lbnRz
Lmxlbmd0aD8obT0zRGUsdyk6bX0sdy55UmFuZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbj0KZ3RoPyhnPTNEZSx3KTpnfSx3LmZvcmNlWD0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhmPTNEZSx3KTpmPQp9LHcuZm9yY2VZPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLHcpOmx9LHcucGFkRGF0YT0zRGY9CnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLHcpOmN9LHcuY2xpcEVkZ2U9M0RmdW5j
dGlvbihlKXtyZT0KdHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSx3KTpofSx3LmNvbG9yPTNE
ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sPQplbmd0aD8ocD0zRGUudXRpbHMuZ2V0Q29s
b3IodCksdyk6cH0sdy5pZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGU9Cm5ndGg/
KGk9M0RlLHcpOml9LHcuaW50ZXJhY3RpdmU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oYj0zRD0KITEsdyk6Yn0sd30sZS5tb2RlbHMuYnVsbGV0PTNEZnVuY3Rpb24oKXtm
dW5jdGlvbiBtKGUpe3JldHVybiBlLmVhY2goZnVuY3RpPQpvbihlLG4pe3ZhciBwPTNEYy10Lmxl
ZnQtdC5yaWdodCxtPTNEaC10LnRvcC10LmJvdHRvbSxnPTNEZDMuc2VsZWN0KHRoaXMpLHk9Cj0z
RGkuY2FsbCh0aGlzLGUsbikuc2xpY2UoKS5zb3J0KGQzLmRlc2NlbmRpbmcpLGI9M0RzLmNhbGwo
dGhpcyxlLG4pLnNsaWNlKD0KKS5zb3J0KGQzLmRlc2NlbmRpbmcpLHc9M0RvLmNhbGwodGhpcyxl
LG4pLnNsaWNlKCkuc29ydChkMy5kZXNjZW5kaW5nKSxFPTNEPQp1LmNhbGwodGhpcyxlLG4pLnNs
aWNlKCksUz0zRGEuY2FsbCh0aGlzLGUsbikuc2xpY2UoKSx4PTNEZi5jYWxsKHRoaXMsZSxuKS49
CnNsaWNlKCksVD0zRGQzLnNjYWxlLmxpbmVhcigpLmRvbWFpbihkMy5leHRlbnQoZDMubWVyZ2Uo
W2wseV0pKSkucmFuZ2Uocj9bcD0KLDBdOlswLHBdKSxOPTNEdGhpcy5fX2NoYXJ0X198fGQzLnNj
YWxlLmxpbmVhcigpLmRvbWFpbihbMCxJbmZpbml0eV0pLnJhbmdlPQooVC5yYW5nZSgpKTt0aGlz
Ll9fY2hhcnRfXz0zRFQ7dmFyIEM9M0RkMy5taW4oeSksaz0zRGQzLm1heCh5KSxMPTNEeVsxXSxB
PQo9M0RnLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LWJ1bGxldCIpLmRhdGEoW2VdKSxPPTNEQS5l
bnRlcigpLmFwcGVuZCgiZyIpLmE9CnR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtYnVsbGV0
IiksTT0zRE8uYXBwZW5kKCJnIiksXz0zREEuc2VsZWN0KCJnIik7TT0KLmFwcGVuZCgicmVjdCIp
LmF0dHIoImNsYXNzIiwibnYtcmFuZ2UgbnYtcmFuZ2VNYXgiKSxNLmFwcGVuZCgicmVjdCIpLmF0
dHIoPQoiY2xhc3MiLCJudi1yYW5nZSBudi1yYW5nZUF2ZyIpLE0uYXBwZW5kKCJyZWN0IikuYXR0
cigiY2xhc3MiLCJudi1yYW5nZSBudi09CnJhbmdlTWluIiksTS5hcHBlbmQoInJlY3QiKS5hdHRy
KCJjbGFzcyIsIm52LW1lYXN1cmUiKSxNLmFwcGVuZCgicGF0aCIpLmF0dD0KcigiY2xhc3MiLCJu
di1tYXJrZXJUcmlhbmdsZSIpLEEuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdC5sZWZ0
KyIsIit0PQoudG9wKyIpIik7dmFyIEQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5hYnMoTihl
KS1OKDApKX0sUD0zRGZ1bmN0aW9uKGUpe3I9CmV0dXJuIE1hdGguYWJzKFQoZSktVCgwKSl9LEg9
M0RmdW5jdGlvbihlKXtyZXR1cm4gZTwwP04oZSk6TigwKX0sQj0zRGZ1bmN0aT0Kb24oZSl7cmV0
dXJuIGU8MD9UKGUpOlQoMCl9O18uc2VsZWN0KCJyZWN0Lm52LXJhbmdlTWF4IikuYXR0cigiaGVp
Z2h0IixtKS5hPQp0dHIoIndpZHRoIixQKGs+MD9rOkMpKS5hdHRyKCJ4IixCKGs+MD9rOkMpKS5k
YXR1bShrPjA/azpDKSxfLnNlbGVjdCgicmVjdC49Cm52LXJhbmdlQXZnIikuYXR0cigiaGVpZ2h0
IixtKS5hdHRyKCJ3aWR0aCIsUChMKSkuYXR0cigieCIsQihMKSkuZGF0dW0oTCksXz0KLnNlbGVj
dCgicmVjdC5udi1yYW5nZU1pbiIpLmF0dHIoImhlaWdodCIsbSkuYXR0cigid2lkdGgiLFAoaykp
LmF0dHIoIngiLEIoPQprKSkuYXR0cigid2lkdGgiLFAoaz4wP0M6aykpLmF0dHIoIngiLEIoaz4w
P0M6aykpLmRhdHVtKGs+MD9DOmspLF8uc2VsZWN0KCI9CnJlY3QubnYtbWVhc3VyZSIpLnN0eWxl
KCJmaWxsIixkKS5hdHRyKCJoZWlnaHQiLG0vMykuYXR0cigieSIsbS8zKS5hdHRyKCJ3aT0KZHRo
Iix3PDA/VCgwKS1UKHdbMF0pOlQod1swXSktVCgwKSkuYXR0cigieCIsQih3KSkub24oIm1vdXNl
b3ZlciIsZnVuY3Rpb24oPQope3YuZWxlbWVudE1vdXNlb3Zlcih7dmFsdWU6d1swXSxsYWJlbDp4
WzBdfHwiQ3VycmVudCIscG9zOltUKHdbMF0pLG0vMl19KX09Cikub24oIm1vdXNlb3V0IixmdW5j
dGlvbigpe3YuZWxlbWVudE1vdXNlb3V0KHt2YWx1ZTp3WzBdLGxhYmVsOnhbMF18fCJDdXJyZT0K
bnQifSl9KTt2YXIgaj0zRG0vNjtiWzBdP18uc2VsZWN0QWxsKCJwYXRoLm52LW1hcmtlclRyaWFu
Z2xlIikuYXR0cigidHJhbnNmPQpvcm0iLGZ1bmN0aW9uKGUpe3JldHVybiJ0cmFuc2xhdGUoIitU
KGJbMF0pKyIsIittLzIrIikifSkuYXR0cigiZCIsIk0wLCIrais9CiJMIitqKyIsIisgLWorIiAi
KyAtaisiLCIrIC1qKyJaIikub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oKXt2LmVsZW1lbnRNb3Vz
ZT0Kb3Zlcih7dmFsdWU6YlswXSxsYWJlbDpTWzBdfHwiUHJldmlvdXMiLHBvczpbVChiWzBdKSxt
LzJdfSl9KS5vbigibW91c2VvdXQiPQosZnVuY3Rpb24oKXt2LmVsZW1lbnRNb3VzZW91dCh7dmFs
dWU6YlswXSxsYWJlbDpTWzBdfHwiUHJldmlvdXMifSl9KTpfLnNlbGU9CmN0QWxsKCJwYXRoLm52
LW1hcmtlclRyaWFuZ2xlIikucmVtb3ZlKCksQS5zZWxlY3RBbGwoIi5udi1yYW5nZSIpLm9uKCJt
b3VzZT0Kb3ZlciIsZnVuY3Rpb24oZSx0KXt2YXIgbj0zREVbdF18fCh0P3Q9M0Q9M0QxPyJNZWFu
IjoiTWluaW11bSI6Ik1heGltdW0iKTt2PQouZWxlbWVudE1vdXNlb3Zlcih7dmFsdWU6ZSxsYWJl
bDpuLHBvczpbVChlKSxtLzJdfSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW89Cm4oZSx0KXt2YXIg
bj0zREVbdF18fCh0P3Q9M0Q9M0QxPyJNZWFuIjoiTWluaW11bSI6Ik1heGltdW0iKTt2LmVsZW1l
bnRNb3VzZT0Kb3V0KHt2YWx1ZTplLGxhYmVsOm59KX0pfSksbX12YXIgdD0zRHt0b3A6MCxyaWdo
dDowLGJvdHRvbTowLGxlZnQ6MH0sbj0zRCJsPQplZnQiLHI9M0QhMSxpPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGUucmFuZ2VzfSxzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUubWFya2U9CnJzfSxvPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGUubWVhc3VyZXN9LHU9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5y
YW5nZUxhYmVscz0KP2UucmFuZ2VMYWJlbHM6W119LGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5t
YXJrZXJMYWJlbHM/ZS5tYXJrZXJMYWJlbHM6W119PQosZj0zRGZ1bmN0aW9uKGUpe3JldHVybiBl
Lm1lYXN1cmVMYWJlbHM/ZS5tZWFzdXJlTGFiZWxzOltdfSxsPTNEWzBdLGM9M0QzODA9CixoPTNE
MzAscD0zRG51bGwsZD0zRGUudXRpbHMuZ2V0Q29sb3IoWyIjMWY3N2I0Il0pLHY9M0RkMy5kaXNw
YXRjaCgiZWxlbWVudD0KTW91c2VvdmVyIiwiZWxlbWVudE1vdXNlb3V0Iik7cmV0dXJuIG0uZGlz
cGF0Y2g9M0R2LG0ub3B0aW9ucz0zRGUudXRpbHMub3B0PQppb25zRnVuYy5iaW5kKG0pLG0ub3Jp
ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49M0RlLHI9M0Q9Cm49
M0Q9M0QicmlnaHQifHxuPTNEPTNEImJvdHRvbSIsbSk6bn0sbS5yYW5nZXM9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbj0KdHMubGVuZ3RoPyhpPTNEZSxtKTppfSxtLm1hcmtlcnM9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0KPTNEZSxtKTpzfSxtLm1lYXN1cmVz
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RlLG0pOm99LG0uPQpm
b3JjZVg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGUsbSk6bH0s
bS53aWR0aD0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLG0p
OmN9LG0uaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZz0KdW1lbnRzLmxlbmd0aD8oaD0z
RGUsbSk6aH0sbS5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
PQp0LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDp0LnRvcCx0LnJpZ2h0
PTNEdHlwZW9mIGUucmlnaHQhPQo9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OnQucmlnaHQsdC5ib3R0
b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS49CmJvdHRvbTp0LmJvdHRvbSx0
LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDp0LmxlZnQsbSk6dH0s
bT0KLnRpY2tGb3JtYXQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0z
RGUsbSk6cH0sbS5jb2xvcj0zRGZ1PQpuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGQ9M0RlLnV0aWxzLmdldENvbG9yKHQpLG0pOmR9LG19LGUubW9kZWw9CnMuYnVsbGV0Q2hhcnQ9
M0RmdW5jdGlvbigpe2Z1bmN0aW9uIG0oZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihuLGgpe3Zh
ciBnPQo9M0RkMy5zZWxlY3QodGhpcykseT0zRChhfHxwYXJzZUludChnLnN0eWxlKCJ3aWR0aCIp
KXx8OTYwKS1pLmxlZnQtaS5yaWdodCw9CmI9M0RmLWkudG9wLWkuYm90dG9tLHc9M0R0aGlzO20u
dXBkYXRlPTNEZnVuY3Rpb24oKXttKGUpfSxtLmNvbnRhaW5lcj0zRHRoaT0KcztpZighbnx8IXMu
Y2FsbCh0aGlzLG4saCkpe3ZhciBFPTNEZy5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFtw
XSk7cmV0PQp1cm4gRS5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnZkMyBu
di1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2U9Cm0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRk
bGUiKSxFLmF0dHIoIngiLGkubGVmdCt5LzIpLmF0dHIoInkiLDE4K2kudG9wKz0KYi8yKS50ZXh0
KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksbX1nLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbW92
ZSgpO3ZhciBTPQo9M0RzLmNhbGwodGhpcyxuLGgpLnNsaWNlKCkuc29ydChkMy5kZXNjZW5kaW5n
KSx4PTNEby5jYWxsKHRoaXMsbixoKS5zbGljZSg9Cikuc29ydChkMy5kZXNjZW5kaW5nKSxUPTNE
dS5jYWxsKHRoaXMsbixoKS5zbGljZSgpLnNvcnQoZDMuZGVzY2VuZGluZyksTj0zRD0KZy5zZWxl
Y3RBbGwoImcubnYtd3JhcC5udi1idWxsZXRDaGFydCIpLmRhdGEoW25dKSxDPTNETi5lbnRlcigp
LmFwcGVuZCgiZyIpPQouYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtYnVsbGV0Q2hhcnQi
KSxrPTNEQy5hcHBlbmQoImciKSxMPTNETi5zZWxlY3Q9CigiZyIpO2suYXBwZW5kKCJnIikuYXR0
cigiY2xhc3MiLCJudi1idWxsZXRXcmFwIiksay5hcHBlbmQoImciKS5hdHRyKCJjbGFzcz0KIiwi
bnYtdGl0bGVzIiksTi5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitpLmxlZnQrIiwiK2ku
dG9wKyIpIik7dmFyIEE9Cj0zRGQzLnNjYWxlLmxpbmVhcigpLmRvbWFpbihbMCxNYXRoLm1heChT
WzBdLHhbMF0sVFswXSldKS5yYW5nZShyP1t5LDBdOlswLD0KeV0pLE89M0R0aGlzLl9fY2hhcnRf
X3x8ZDMuc2NhbGUubGluZWFyKCkuZG9tYWluKFswLEluZmluaXR5XSkucmFuZ2UoQS5yYW5nPQpl
KCkpO3RoaXMuX19jaGFydF9fPTNEQTt2YXIgTT0zRGZ1bmN0aW9uKGUpe3JldHVybiBNYXRoLmFi
cyhPKGUpLU8oMCkpfSxfPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5hYnMoQShlKS1BKDAp
KX0sRD0zRGsuc2VsZWN0KCIubnYtdGl0bGVzIikuYXBwZW49CmQoImciKS5hdHRyKCJ0ZXh0LWFu
Y2hvciIsImVuZCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgtNiwiKyhmLWkudG9wLT0K
aS5ib3R0b20pLzIrIikiKTtELmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnYtdGl0bGUi
KS50ZXh0KGZ1bmN0aW9uKGUpPQp7cmV0dXJuIGUudGl0bGV9KSxELmFwcGVuZCgidGV4dCIpLmF0
dHIoImNsYXNzIiwibnYtc3VidGl0bGUiKS5hdHRyKCJkeSIsIjE9CmVtIikudGV4dChmdW5jdGlv
bihlKXtyZXR1cm4gZS5zdWJ0aXRsZX0pLHQud2lkdGgoeSkuaGVpZ2h0KGIpO3ZhciBQPTNETC5z
ZT0KbGVjdCgiLm52LWJ1bGxldFdyYXAiKTtkMy50cmFuc2l0aW9uKFApLmNhbGwodCk7dmFyIEg9
M0RsfHxBLnRpY2tGb3JtYXQoeS8xPQowMCksQj0zREwuc2VsZWN0QWxsKCJnLm52LXRpY2siKS5k
YXRhKEEudGlja3MoeS81MCksZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXM9Ci50ZXh0Q29udGVudHx8
SChlKX0pLGo9M0RCLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi10aWNrIiku
YXR0cj0KKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUpe3JldHVybiJ0cmFuc2xhdGUoIitPKGUpKyIs
MCkifSkuc3R5bGUoIm9wYWNpdHkiLDFlPQotNik7ai5hcHBlbmQoImxpbmUiKS5hdHRyKCJ5MSIs
YikuYXR0cigieTIiLGIqNy82KSxqLmFwcGVuZCgidGV4dCIpLmF0dHIoInQ9CmV4dC1hbmNob3Ii
LCJtaWRkbGUiKS5hdHRyKCJkeSIsIjFlbSIpLmF0dHIoInkiLGIqNy82KS50ZXh0KEgpO3ZhciBG
PTNEZDMudD0KcmFuc2l0aW9uKEIpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSl7cmV0dXJu
InRyYW5zbGF0ZSgiK0EoZSkrIiwwKSJ9KS5zPQp0eWxlKCJvcGFjaXR5IiwxKTtGLnNlbGVjdCgi
bGluZSIpLmF0dHIoInkxIixiKS5hdHRyKCJ5MiIsYio3LzYpLEYuc2VsZWN0KCI9CnRleHQiKS5h
dHRyKCJ5IixiKjcvNiksZDMudHJhbnNpdGlvbihCLmV4aXQoKSkuYXR0cigidHJhbnNmb3JtIixm
dW5jdGlvbihlKT0Ke3JldHVybiJ0cmFuc2xhdGUoIitBKGUpKyIsMCkifSkuc3R5bGUoIm9wYWNp
dHkiLDFlLTYpLnJlbW92ZSgpLGQub24oInRvb2x0PQppcFNob3ciLGZ1bmN0aW9uKGUpe2Uua2V5
PTNEbi50aXRsZSxjJiZ2KGUsdy5wYXJlbnROb2RlKX0pfSksZDMudGltZXIuZmx1c2g9CigpLG19
dmFyIHQ9M0RlLm1vZGVscy5idWxsZXQoKSxuPTNEImxlZnQiLHI9M0QhMSxpPTNEe3RvcDo1LHJp
Z2h0OjQwLGJvdHRvbT0KOjIwLGxlZnQ6MTIwfSxzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUucmFu
Z2VzfSxvPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUubWFyPQprZXJzfSx1PTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGUubWVhc3VyZXN9LGE9M0RudWxsLGY9M0Q1NSxsPTNEbnVsbCxjPTNEITAsaD0KPTNE
ZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4iPGgzPiIrdCsiPC9oMz4iKyI8cD4iK24rIjwvcD4i
fSxwPTNEIk5vIERhdGEgPQpBdmFpbGFibGUuIixkPTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93
IiwidG9vbHRpcEhpZGUiKSx2PTNEZnVuY3Rpb24odCxuKXs9CnZhciByPTNEdC5wb3NbMF0rKG4u
b2Zmc2V0TGVmdHx8MCkraS5sZWZ0LHM9M0R0LnBvc1sxXSsobi5vZmZzZXRUb3B8fDApK2kudD0K
b3Asbz0zRGgodC5rZXksdC5sYWJlbCx0LnZhbHVlLHQsbSk7ZS50b29sdGlwLnNob3coW3Isc10s
byx0LnZhbHVlPDA/ImUiOiJ3PQoiLG51bGwsbil9O3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVt
ZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2QudG89Cm9sdGlwU2hvdyhlKX0pLHQu
ZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtkLnRvb2x0
aT0KcEhpZGUoZSl9KSxkLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXtjJiZlLnRvb2x0aXAu
Y2xlYW51cCgpfSksbS5kaXNwYXRjPQpoPTNEZCxtLmJ1bGxldD0zRHQsZDMucmViaW5kKG0sdCwi
Y29sb3IiKSxtLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmI9CmluZChtKSxtLm9yaWVu
dD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPTNEZSxyPTNEbj0zRD0z
RCJyaT0KZ2h0Inx8bj0zRD0zRCJib3R0b20iLG0pOm59LG0ucmFuZ2VzPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/PQoocz0zRGUsbSk6c30sbS5tYXJrZXJzPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RlLG0pOm99LG09Ci5tZWFzdXJlcz0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZSxtKTp1fSxtLndpZHRo
PTNEZnVuYz0KdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0zRGUsbSk6YX0sbS5o
ZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gPQphcmd1bWVudHMubGVuZ3RoPyhmPTNEZSxtKTpm
fSxtLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Q9Cmg/KGkudG9w
PTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOmkudG9wLGkucmlnaHQ9M0R0eXBl
b2YgZS5yaWdodD0KIT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6aS5yaWdodCxpLmJvdHRvbT0zRHR5
cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lPQouYm90dG9tOmkuYm90dG9tLGkubGVmdD0z
RHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OmkubGVmdCxtKTppfSw9Cm0udGlj
a0Zvcm1hdD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZSxtKTps
fSxtLnRvb2x0aXBzPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0z
RGUsbSk6Y30sbS50b29sdGlwQ29udGVudD0zRGZ1bmM9CnRpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGg9M0RlLG0pOmh9LG0ubm9EYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJuID0KYXJn
dW1lbnRzLmxlbmd0aD8ocD0zRGUsbSk6cH0sbX0sZS5tb2RlbHMuY3VtdWxhdGl2ZUxpbmVDaGFy
dD0zRGZ1bmN0aW9uKCl7PQpmdW5jdGlvbiBEKGIpe3JldHVybiBiLmVhY2goZnVuY3Rpb24oYil7
ZnVuY3Rpb24gSShlLHQpe2QzLnNlbGVjdChELmNvbnRhaW49CmVyKS5zdHlsZSgiY3Vyc29yIiwi
ZXctcmVzaXplIil9ZnVuY3Rpb24gcShlLHQpe00ueD0zRGQzLmV2ZW50LngsTS5pPTNETWF0aD0K
LnJvdW5kKE8uaW52ZXJ0KE0ueCkpLG50KCl9ZnVuY3Rpb24gUihlLHQpe2QzLnNlbGVjdChELmNv
bnRhaW5lcikuc3R5bGUoImN1PQpyc29yIiwiYXV0byIpLHguaW5kZXg9M0RNLmksay5zdGF0ZUNo
YW5nZSh4KX1mdW5jdGlvbiBudCgpe3R0LmRhdGEoW01dKTt2YXI9CiBlPTNERC50cmFuc2l0aW9u
RHVyYXRpb24oKTtELnRyYW5zaXRpb25EdXJhdGlvbigwKSxELnVwZGF0ZSgpLEQudHJhbnNpdGlv
bj0KRHVyYXRpb24oZSl9dmFyIEw9M0RkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgibnYtY2hhcnQt
IitTLCEwKSxBPTNEdGhpcyxIPTNEPQooZnx8cGFyc2VJbnQoTC5zdHlsZSgid2lkdGgiKSl8fDk2
MCktdS5sZWZ0LXUucmlnaHQsQj0zRChsfHxwYXJzZUludChMLnN0eWw9CmUoImhlaWdodCIpKXx8
NDAwKS11LnRvcC11LmJvdHRvbTtELnVwZGF0ZT0zRGZ1bmN0aW9uKCl7TC5jYWxsKEQpfSxELmNv
bnRhaT0KbmVyPTNEdGhpcyx4LmRpc2FibGVkPTNEYi5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuISFl
LmRpc2FibGVkfSk7aWYoIVQpe3ZhciBqPQo7VD0zRHt9O2ZvcihqIGluIHgpeFtqXWluc3RhbmNl
b2YgQXJyYXk/VFtqXT0zRHhbal0uc2xpY2UoMCk6VFtqXT0zRHhbal19dmE9CnIgRj0zRGQzLmJl
aGF2aW9yLmRyYWcoKS5vbigiZHJhZ3N0YXJ0IixJKS5vbigiZHJhZyIscSkub24oImRyYWdlbmQi
LFIpO2lmKD0KIWJ8fCFiLmxlbmd0aHx8IWIuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZh
bHVlcy5sZW5ndGh9KS5sZW5ndGgpe3ZhciBVPQo9M0RMLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIp
LmRhdGEoW05dKTtyZXR1cm4gVS5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHI9CigiY2xhc3Mi
LCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3Ii
LCJtaWRkbGUiKT0KLFUuYXR0cigieCIsdS5sZWZ0K0gvMikuYXR0cigieSIsdS50b3ArQi8yKS50
ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksRH1MPQouc2VsZWN0QWxsKCIubnYtbm9EYXRhIiku
cmVtb3ZlKCksdz0zRHQueFNjYWxlKCksRT0zRHQueVNjYWxlKCk7aWYoIXkpe3ZhciA9Cno9M0Ri
LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pLm1hcChmdW5jdGlvbihlLG4p
e3ZhciByPTNEZDMuZT0KeHRlbnQoZS52YWx1ZXMsdC55KCkpO3JldHVybiByWzBdPC0wLjk1JiYo
clswXT0zRC0wLjk1KSxbKHJbMF0tclsxXSkvKDErclsxPQpdKSwoclsxXS1yWzBdKS8oMStyWzBd
KV19KSxXPTNEW2QzLm1pbih6LGZ1bmN0aW9uKGUpe3JldHVybiBlWzBdfSksZDMubWF4KHo9Cixm
dW5jdGlvbihlKXtyZXR1cm4gZVsxXX0pXTt0LnlEb21haW4oVyl9ZWxzZSB0LnlEb21haW4obnVs
bCk7Ty5kb21haW4oWzAsYj0KWzBdLnZhbHVlcy5sZW5ndGgtMV0pLnJhbmdlKFswLEhdKS5jbGFt
cCghMCk7dmFyIGI9M0RQKE0uaSxiKSxYPTNEZz8ibm9uZSI6PQoiYWxsIixWPTNETC5zZWxlY3RB
bGwoImcubnYtd3JhcC5udi1jdW11bGF0aXZlTGluZSIpLmRhdGEoW2JdKSwkPTNEVi5lbnRlcig9
CikuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtY3VtdWxhdGl2ZUxp
bmUiKS5hcHBlbmQoImciKSxKPQo9M0RWLnNlbGVjdCgiZyIpOyQuYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudi1pbnRlcmFjdGl2ZSIpLCQuYXBwZW5kKCJnIik9Ci5hdHRyKCJjbGFzcyIsIm52
LXggbnYtYXhpcyIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKSwkLmFwcGVuZCgiZyIp
Lj0KYXR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKSwkLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNz
IiwibnYtYmFja2dyb3VuZCIpLCQuPQphcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxpbmVz
V3JhcCIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsWCksJC5hcHBlbmQ9CigiZyIpLmF0dHIoImNs
YXNzIiwibnYtYXZnTGluZXNXcmFwIikuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpLCQu
YXBwZT0KbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZFdyYXAiKSwkLmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnYtY29udHJvPQpsc1dyYXAiKSxjJiYoaS53aWR0aChIKSxKLnNlbGVj
dCgiLm52LWxlZ2VuZFdyYXAiKS5kYXR1bShiKS5jYWxsKGkpLHUudG9wIT0KPTNEaS5oZWlnaHQo
KSYmKHUudG9wPTNEaS5oZWlnaHQoKSxCPTNEKGx8fHBhcnNlSW50KEwuc3R5bGUoImhlaWdodCIp
KXx8NDAwPQopLXUudG9wLXUuYm90dG9tKSxKLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5hdHRy
KCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCw9CiIrIC11LnRvcCsiKSIpKTtpZihtKXt2YXIgSz0z
RFt7a2V5OiJSZS1zY2FsZSB5LWF4aXMiLGRpc2FibGVkOiF5fV07cy53aWR0aD0KKDE0MCkuY29s
b3IoWyIjNDQ0IiwiIzQ0NCIsIiM0NDQiXSkucmlnaHRBbGlnbighMSkubWFyZ2luKHt0b3A6NSxy
aWdodDowLGJvPQp0dG9tOjUsbGVmdDoyMH0pLEouc2VsZWN0KCIubnYtY29udHJvbHNXcmFwIiku
ZGF0dW0oSykuYXR0cigidHJhbnNmb3JtIiwidHI9CmFuc2xhdGUoMCwiKyAtdS50b3ArIikiKS5j
YWxsKHMpfVYuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdS5sZWZ0KyIsIj0KK3UudG9w
KyIpIiksZCYmSi5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFu
c2xhdGUoIitIKyIsPQowKSIpO3ZhciBRPTNEYi5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUu
dGVtcERpc2FibGVkfSk7Vi5zZWxlY3QoIi50ZW1wRGk9CnNhYmxlZCIpLnJlbW92ZSgpLFEubGVu
Z3RoJiZWLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwidGVtcERpc2FibGVkIikuYT0KdHRy
KCJ4IixILzIpLmF0dHIoInkiLCItLjcxZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJlbmQiKS50
ZXh0KFEubWFwKGZ1bmN0PQppb24oZSl7cmV0dXJuIGUua2V5fSkuam9pbigiLCAiKSsiIHZhbHVl
cyBjYW5ub3QgYmUgY2FsY3VsYXRlZCBmb3IgdGhpcyB0aW09CmUgcGVyaW9kLiIpLGcmJihvLndp
ZHRoKEgpLmhlaWdodChCKS5tYXJnaW4oe2xlZnQ6dS5sZWZ0LHRvcDp1LnRvcH0pLnN2Z0Nvbj0K
dGFpbmVyKEwpLnhTY2FsZSh3KSxWLnNlbGVjdCgiLm52LWludGVyYWN0aXZlIikuY2FsbChvKSks
JC5zZWxlY3QoIi5udi1iYWNrPQpncm91bmQiKS5hcHBlbmQoInJlY3QiKSxKLnNlbGVjdCgiLm52
LWJhY2tncm91bmQgcmVjdCIpLmF0dHIoIndpZHRoIixIKS5hdHQ9CnIoImhlaWdodCIsQiksdC55
KGZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc3BsYXkueX0pLndpZHRoKEgpLmhlaWdodChCKS5jb2xv
cj0KKGIubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGEoZSx0KX0pLmZpbHRlcihm
dW5jdGlvbihlLHQpe3JldHVybiFiPQpbdF0uZGlzYWJsZWQmJiFiW3RdLnRlbXBEaXNhYmxlZH0p
KTt2YXIgRz0zREouc2VsZWN0KCIubnYtbGluZXNXcmFwIikuZGF0dW09CihiLmZpbHRlcihmdW5j
dGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZCYmIWUudGVtcERpc2FibGVkfSkpO0cuY2FsbCh0KSxi
LmZvcj0KRWFjaChmdW5jdGlvbihlLHQpe2Uuc2VyaWVzSW5kZXg9M0R0fSk7dmFyIFk9M0RiLmZp
bHRlcihmdW5jdGlvbihlKXtyZXR1cm4hPQplLmRpc2FibGVkJiYhIUMoZSl9KSxaPTNESi5zZWxl
Y3QoIi5udi1hdmdMaW5lc1dyYXAiKS5zZWxlY3RBbGwoImxpbmUiKS5kYXQ9CmEoWSxmdW5jdGlv
bihlKXtyZXR1cm4gZS5rZXl9KSxldD0zRGZ1bmN0aW9uKGUpe3ZhciB0PTNERShDKGUpKTtyZXR1
cm4gdDwwPz0KMDp0PkI/Qjp0fTtaLmVudGVyKCkuYXBwZW5kKCJsaW5lIikuc3R5bGUoInN0cm9r
ZS13aWR0aCIsMikuc3R5bGUoInN0cm9rZS1kPQphc2hhcnJheSIsIjEwLDEwIikuc3R5bGUoInN0
cm9rZSIsZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC5jb2xvcigpKGUsZS5zZXJpZXM9CkluZGV4KX0p
LmF0dHIoIngxIiwwKS5hdHRyKCJ4MiIsSCkuYXR0cigieTEiLGV0KS5hdHRyKCJ5MiIsZXQpLFou
c3R5bGUoInN0cj0Kb2tlLW9wYWNpdHkiLGZ1bmN0aW9uKGUpe3ZhciB0PTNERShDKGUpKTtyZXR1
cm4gdDwwfHx0PkI/MDoxfSkuYXR0cigieDEiLDApPQouYXR0cigieDIiLEgpLmF0dHIoInkxIixl
dCkuYXR0cigieTIiLGV0KSxaLmV4aXQoKS5yZW1vdmUoKTt2YXIgdHQ9M0RHLnNlbGU9CmN0QWxs
KCIubnYtaW5kZXhMaW5lIikuZGF0YShbTV0pO3R0LmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0
cigiY2xhc3MiLCJudj0KLWluZGV4TGluZSIpLmF0dHIoIndpZHRoIiwzKS5hdHRyKCJ4IiwtMiku
YXR0cigiZmlsbCIsInJlZCIpLmF0dHIoImZpbGwtb3BhPQpjaXR5IiwuNSkuc3R5bGUoInBvaW50
ZXItZXZlbnRzIiwiYWxsIikuY2FsbChGKSx0dC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW89Cm4o
ZSl7cmV0dXJuInRyYW5zbGF0ZSgiK08oZS5pKSsiLDApIn0pLmF0dHIoImhlaWdodCIsQiksaCYm
KG4uc2NhbGUodykudGljaz0KcyhNYXRoLm1pbihiWzBdLnZhbHVlcy5sZW5ndGgsSC83MCkpLnRp
Y2tTaXplKC1CLDApLEouc2VsZWN0KCIubnYteC5udi1heGlzPQoiKS5hdHRyKCJ0cmFuc2Zvcm0i
LCJ0cmFuc2xhdGUoMCwiK0UucmFuZ2UoKVswXSsiKSIpLGQzLnRyYW5zaXRpb24oSi5zZWxlY3Q9
CigiLm52LXgubnYtYXhpcyIpKS5jYWxsKG4pKSxwJiYoci5zY2FsZShFKS50aWNrcyhCLzM2KS50
aWNrU2l6ZSgtSCwwKSxkMy50cj0KYW5zaXRpb24oSi5zZWxlY3QoIi5udi15Lm52LWF4aXMiKSku
Y2FsbChyKSksSi5zZWxlY3QoIi5udi1iYWNrZ3JvdW5kIHJlY3QiPQopLm9uKCJjbGljayIsZnVu
Y3Rpb24oKXtNLng9M0RkMy5tb3VzZSh0aGlzKVswXSxNLmk9M0RNYXRoLnJvdW5kKE8uaW52ZXJ0
KE09Ci54KSkseC5pbmRleD0zRE0uaSxrLnN0YXRlQ2hhbmdlKHgpLG50KCl9KSx0LmRpc3BhdGNo
Lm9uKCJlbGVtZW50Q2xpY2siLGZ1bj0KY3Rpb24oZSl7TS5pPTNEZS5wb2ludEluZGV4LE0ueD0z
RE8oTS5pKSx4LmluZGV4PTNETS5pLGsuc3RhdGVDaGFuZ2UoeCksbnQoPQopfSkscy5kaXNwYXRj
aC5vbigibGVnZW5kQ2xpY2siLGZ1bmN0aW9uKGUsdCl7ZS5kaXNhYmxlZD0zRCFlLmRpc2FibGVk
LHk9M0Q9CiFlLmRpc2FibGVkLHgucmVzY2FsZVk9M0R5LGsuc3RhdGVDaGFuZ2UoeCksRC51cGRh
dGUoKX0pLGkuZGlzcGF0Y2gub24oInN0YT0KdGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe3guZGlzYWJs
ZWQ9M0RlLmRpc2FibGVkLGsuc3RhdGVDaGFuZ2UoeCksRC51cGRhdGUoKX0pPQosby5kaXNwYXRj
aC5vbigiZWxlbWVudE1vdXNlbW92ZSIsZnVuY3Rpb24oaSl7dC5jbGVhckhpZ2hsaWdodHMoKTt2
YXIgcyxmLGw9CixjPTNEW107Yi5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zZXJpZXNJ
bmRleD0zRHQsIWUuZGlzYWJsZWR9KS5mb3JFYT0KY2goZnVuY3Rpb24obixyKXtmPTNEZS5pbnRl
cmFjdGl2ZUJpc2VjdChuLnZhbHVlcyxpLnBvaW50WFZhbHVlLEQueCgpKSx0LmhpPQpnaGxpZ2h0
UG9pbnQocixmLCEwKTt2YXIgbz0zRG4udmFsdWVzW2ZdO2lmKHR5cGVvZiBvPTNEPTNEInVuZGVm
aW5lZCIpcmV0dXI9Cm47dHlwZW9mIHM9M0Q9M0QidW5kZWZpbmVkIiYmKHM9M0RvKSx0eXBlb2Yg
bD0zRD0zRCJ1bmRlZmluZWQiJiYobD0zREQueFNjYT0KbGUoKShELngoKShvLGYpKSksYy5wdXNo
KHtrZXk6bi5rZXksdmFsdWU6RC55KCkobyxmKSxjb2xvcjphKG4sbi5zZXJpZXNJbmRlPQp4KX0p
fSk7aWYoYy5sZW5ndGg+Mil7dmFyIGg9M0RELnlTY2FsZSgpLmludmVydChpLm1vdXNlWSkscD0z
RE1hdGguYWJzKEQueVM9CmNhbGUoKS5kb21haW4oKVswXS1ELnlTY2FsZSgpLmRvbWFpbigpWzFd
KSxkPTNELjAzKnAsbT0zRGUubmVhcmVzdFZhbHVlSW5kZT0KeChjLm1hcChmdW5jdGlvbihlKXty
ZXR1cm4gZS52YWx1ZX0pLGgsZCk7bSE9M0Q9M0RudWxsJiYoY1ttXS5oaWdobGlnaHQ9M0QhPQow
KX12YXIgZz0zRG4udGlja0Zvcm1hdCgpKEQueCgpKHMsZiksZik7by50b29sdGlwLnBvc2l0aW9u
KHtsZWZ0OmwrdS5sZWZ0LHQ9Cm9wOmkubW91c2VZK3UudG9wfSkuY2hhcnRDb250YWluZXIoQS5w
YXJlbnROb2RlKS5lbmFibGVkKHYpLnZhbHVlRm9ybWF0dGVyKD0KZnVuY3Rpb24oZSx0KXtyZXR1
cm4gci50aWNrRm9ybWF0KCkoZSl9KS5kYXRhKHt2YWx1ZTpnLHNlcmllczpjfSkoKSxvLnJlbmRl
PQpyR3VpZGVMaW5lKGwpfSksby5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0IixmdW5jdGlv
bihlKXtrLnRvb2x0aXBIaWRlKCk9Cix0LmNsZWFySGlnaGxpZ2h0cygpfSksay5vbigidG9vbHRp
cFNob3ciLGZ1bmN0aW9uKGUpe3YmJl8oZSxBLnBhcmVudE5vZGUpfT0KKSxrLm9uKCJjaGFuZ2VT
dGF0ZSIsZnVuY3Rpb24oZSl7dHlwZW9mIGUuZGlzYWJsZWQhPTNEInVuZGVmaW5lZCImJihiLmZv
ckVhPQpjaChmdW5jdGlvbih0LG4pe3QuZGlzYWJsZWQ9M0RlLmRpc2FibGVkW25dfSkseC5kaXNh
YmxlZD0zRGUuZGlzYWJsZWQpLHR5cGU9Cm9mIGUuaW5kZXghPTNEInVuZGVmaW5lZCImJihNLmk9
M0RlLmluZGV4LE0ueD0zRE8oTS5pKSx4LmluZGV4PTNEZS5pbmRleCx0dD0KLmRhdGEoW01dKSks
dHlwZW9mIGUucmVzY2FsZVkhPTNEInVuZGVmaW5lZCImJih5PTNEZS5yZXNjYWxlWSksRC51cGRh
dGUoKX0pPQp9KSxEfWZ1bmN0aW9uIFAoZSxuKXtyZXR1cm4gbi5tYXAoZnVuY3Rpb24obixyKXtp
Zighbi52YWx1ZXMpcmV0dXJuIG47dmFyIGk9Cj0zRG4udmFsdWVzW2VdO2lmKGk9M0Q9M0RudWxs
KXJldHVybiBuO3ZhciBzPTNEdC55KCkoaSxlKTtyZXR1cm4gczwtMC45NSYmIT0KQT8obi50ZW1w
RGlzYWJsZWQ9M0QhMCxuKToobi50ZW1wRGlzYWJsZWQ9M0QhMSxuLnZhbHVlcz0zRG4udmFsdWVz
Lm1hcChmdW5jPQp0aW9uKGUsbil7cmV0dXJuIGUuZGlzcGxheT0zRHt5Oih0LnkoKShlLG4pLXMp
LygxK3MpfSxlfSksbil9KX12YXIgdD0zRGUubW89CmRlbHMubGluZSgpLG49M0RlLm1vZGVscy5h
eGlzKCkscj0zRGUubW9kZWxzLmF4aXMoKSxpPTNEZS5tb2RlbHMubGVnZW5kKCkscz0KPTNEZS5t
b2RlbHMubGVnZW5kKCksbz0zRGUuaW50ZXJhY3RpdmVHdWlkZWxpbmUoKSx1PTNEe3RvcDozMCxy
aWdodDozMCxib3R0PQpvbTo1MCxsZWZ0OjYwfSxhPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxm
PTNEbnVsbCxsPTNEbnVsbCxjPTNEITAsaD0zRCEwLHA9Cj0zRCEwLGQ9M0QhMSx2PTNEITAsbT0z
RCEwLGc9M0QhMSx5PTNEITAsYj0zRGZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIjxoMz0KPiIr
ZSsiPC9oMz4iKyI8cD4iK24rIiBhdCAiK3QrIjwvcD4ifSx3LEUsUz0zRHQuaWQoKSx4PTNEe2lu
ZGV4OjAscmVzY2FsZVk6PQp5fSxUPTNEbnVsbCxOPTNEIk5vIERhdGEgQXZhaWxhYmxlLiIsQz0z
RGZ1bmN0aW9uKGUpe3JldHVybiBlLmF2ZXJhZ2V9LGs9M0Q9CmQzLmRpc3BhdGNoKCJ0b29sdGlw
U2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdGVDaGFuZ2UiLCJjaGFuZ2VTdGF0ZSIpLEw9M0QwLD0K
QT0zRCExO24ub3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg3KSxyLm9yaWVudChkPyJyaWdo
dCI6ImxlZnQiKSxzLnVwZGF0PQplU3RhdGUoITEpO3ZhciBPPTNEZDMuc2NhbGUubGluZWFyKCks
TT0zRHtpOjAseDowfSxfPTNEZnVuY3Rpb24oaSxzKXt2YXIgbz0KPTNEaS5wb3NbMF0rKHMub2Zm
c2V0TGVmdHx8MCksdT0zRGkucG9zWzFdKyhzLm9mZnNldFRvcHx8MCksYT0zRG4udGlja0Zvcm1h
PQp0KCkodC54KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKSxmPTNEci50aWNrRm9ybWF0KCkodC55
KCkoaS5wb2ludCxpLnBvaW50SW49CmRleCkpLGw9M0RiKGkuc2VyaWVzLmtleSxhLGYsaSxEKTtl
LnRvb2x0aXAuc2hvdyhbbyx1XSxsLG51bGwsbnVsbCxzKX07cmV0dT0Kcm4gdC5kaXNwYXRjaC5v
bigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1sw
XSt1PQoubGVmdCxlLnBvc1sxXSt1LnRvcF0say50b29sdGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2gu
b24oImVsZW1lbnRNb3VzZW91dC50b289Cmx0aXAiLGZ1bmN0aW9uKGUpe2sudG9vbHRpcEhpZGUo
ZSl9KSxrLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXt2JiZlLnRvbz0KbHRpcC5jbGVhbnVw
KCl9KSxELmRpc3BhdGNoPTNEayxELmxpbmVzPTNEdCxELmxlZ2VuZD0zRGksRC54QXhpcz0zRG4s
RC55QXhpPQpzPTNEcixELmludGVyYWN0aXZlTGF5ZXI9M0RvLGQzLnJlYmluZChELHQsImRlZmlu
ZWQiLCJpc0FyZWEiLCJ4IiwieSIsInhTY2E9CmxlIiwieVNjYWxlIiwic2l6ZSIsInhEb21haW4i
LCJ5RG9tYWluIiwieFJhbmdlIiwieVJhbmdlIiwiZm9yY2VYIiwiZm9yY2VZIj0KLCJpbnRlcmFj
dGl2ZSIsImNsaXBFZGdlIiwiY2xpcFZvcm9ub2kiLCJ1c2VWb3Jvbm9pIiwiaWQiKSxELm9wdGlv
bnM9M0RlLnV0PQppbHMub3B0aW9uc0Z1bmMuYmluZChEKSxELm1hcmdpbj0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1LnQ9Cm9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRl
ZmluZWQiP2UudG9wOnUudG9wLHUucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidT0KbmRlZmlu
ZWQiP2UucmlnaHQ6dS5yaWdodCx1LmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZp
bmVkIj9lLmJvdHRvPQptOnUuYm90dG9tLHUubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVm
aW5lZCI/ZS5sZWZ0OnUubGVmdCxEKTp1fSxELndpZHQ9Cmg9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oZj0zRGUsRCk6Zn0sRC5oZWlnaHQ9M0RmdW5jdGlvbihlKT0Ke3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZSxEKTpsfSxELmNvbG9yPTNEZnVuY3Rpb24odCl7
cmV0dXJuIGFyZ3VtZW50PQpzLmxlbmd0aD8oYT0zRGUudXRpbHMuZ2V0Q29sb3IodCksaS5jb2xv
cihhKSxEKTphfSxELnJlc2NhbGVZPTNEZnVuY3Rpb24oZSk9CntyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oeT0zRGUsRCk6eX0sRC5zaG93Q29udHJvbHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYT0K
cmd1bWVudHMubGVuZ3RoPyhtPTNEZSxEKTptfSxELnVzZUludGVyYWN0aXZlR3VpZGVsaW5lPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuPQogYXJndW1lbnRzLmxlbmd0aD8oZz0zRGUsZT0zRD0zRD0zRCEw
JiYoRC5pbnRlcmFjdGl2ZSghMSksRC51c2VWb3Jvbm9pKCExKSk9CixEKTpnfSxELnNob3dMZWdl
bmQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUsRCk6Y30sRC5z
aD0Kb3dYQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxE
KTpofSxELnNob3dZQXhpcz0zRGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHA9M0RlLEQpOnB9LEQucmlnaHRBbGlnbllBeGlzPTNEZnVuY3Rpb249CihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oZD0zRGUsci5vcmllbnQoZT8icmlnaHQiOiJsZWZ0IiksRCk6ZH0sRC50
b29sdD0KaXBzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9M0RlLEQp
OnZ9LEQudG9vbHRpcENvbnRlbnQ9M0RmPQp1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhiPTNEZSxEKTpifSxELnN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXI9Cm4gYXJndW1lbnRz
Lmxlbmd0aD8oeD0zRGUsRCk6eH0sRC5kZWZhdWx0U3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbj0KdHMubGVuZ3RoPyhUPTNEZSxEKTpUfSxELm5vRGF0YT0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhOPTNEPQplLEQpOk59LEQuYXZlcmFnZT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhDPTNEZSxEKTpDfSxELnRyYW49CnNpdGlvbkR1
cmF0aW9uPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEw9M0RlLEQpOkx9
LEQubm9FcnJvcj0KQ2hlY2s9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
QT0zRGUsRCk6QX0sRH0sZS5tb2RlbHMuZGlzY3JlPQp0ZUJhcj0zRGZ1bmN0aW9uKCl7ZnVuY3Rp
b24gRShlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBpPTNEbi10LmxlZnQ9Ci10LnJp
Z2h0LEU9M0RyLXQudG9wLXQuYm90dG9tLFM9M0RkMy5zZWxlY3QodGhpcyk7ZS5mb3JFYWNoKGZ1
bmN0aW9uKGUsdCl7ZT0KLnZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2Uuc2VyaWVzPTNEdH0p
fSk7dmFyIFQ9M0RwJiZkP1tdOmUubWFwKGZ1bmN0aW9uPQooZSl7cmV0dXJuIGUudmFsdWVzLm1h
cChmdW5jdGlvbihlLHQpe3JldHVybnt4OnUoZSx0KSx5OmEoZSx0KSx5MDplLnkwfX0pfSk9Cjtz
LmRvbWFpbihwfHxkMy5tZXJnZShUKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0pKS5yYW5n
ZUJhbmRzKHZ8fFswLGldLD0KLjEpLG8uZG9tYWluKGR8fGQzLmV4dGVudChkMy5tZXJnZShUKS5t
YXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0pLmNvbmNhdChmPQopKSksYz9vLnJhbmdlKG18fFtF
LShvLmRvbWFpbigpWzBdPDA/MTI6MCksby5kb21haW4oKVsxXT4wPzEyOjBdKTpvLnJhbmdlKG09
Cnx8W0UsMF0pLGI9M0RifHxzLHc9M0R3fHxvLmNvcHkoKS5yYW5nZShbbygwKSxvKDApXSk7dmFy
IE49M0RTLnNlbGVjdEFsbCgiZz0KLm52LXdyYXAubnYtZGlzY3JldGViYXIiKS5kYXRhKFtlXSks
Qz0zRE4uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsPQoibnZkMyBudi13cmFwIG52
LWRpc2NyZXRlYmFyIiksaz0zREMuYXBwZW5kKCJnIiksTD0zRE4uc2VsZWN0KCJnIik7ay5hcHBl
bmQ9CigiZyIpLmF0dHIoImNsYXNzIiwibnYtZ3JvdXBzIiksTi5hdHRyKCJ0cmFuc2Zvcm0iLCJ0
cmFuc2xhdGUoIit0LmxlZnQrIiwiKz0KdC50b3ArIikiKTt2YXIgQT0zRE4uc2VsZWN0KCIubnYt
Z3JvdXBzIikuc2VsZWN0QWxsKCIubnYtZ3JvdXAiKS5kYXRhKGZ1bmN0PQppb24oZSl7cmV0dXJu
IGV9LGZ1bmN0aW9uKGUpe3JldHVybiBlLmtleX0pO0EuZW50ZXIoKS5hcHBlbmQoImciKS5zdHls
ZSgic3Q9CnJva2Utb3BhY2l0eSIsMWUtNikuc3R5bGUoImZpbGwtb3BhY2l0eSIsMWUtNiksQS5l
eGl0KCkuc3R5bGUoInN0cm9rZS1vcGFjaT0KdHkiLDFlLTYpLnN0eWxlKCJmaWxsLW9wYWNpdHki
LDFlLTYpLnJlbW92ZSgpLEEuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7PQpyZXR1cm4ibnYt
Z3JvdXAgbnYtc2VyaWVzLSIrdH0pLmNsYXNzZWQoImhvdmVyIixmdW5jdGlvbihlKXtyZXR1cm4g
ZS5ob3Zlcn09CiksQS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDEpLnN0eWxlKCJmaWxsLW9wYWNp
dHkiLC43NSk7dmFyIE89M0RBLnNlbGVjdEFsbD0KKCJnLm52LWJhciIpLmRhdGEoZnVuY3Rpb24o
ZSl7cmV0dXJuIGUudmFsdWVzfSk7Ty5leGl0KCkucmVtb3ZlKCk7dmFyIE09M0RPPQouZW50ZXIo
KS5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4idHJh
bnNsYXRlKCIrKHM9Cih1KGUsdCkpK3MucmFuZ2VCYW5kKCkqLjA1KSsiLCAiK28oMCkrIikifSku
b24oIm1vdXNlb3ZlciIsZnVuY3Rpb24odCxuKXtkMz0KLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJo
b3ZlciIsITApLGcuZWxlbWVudE1vdXNlb3Zlcih7dmFsdWU6YSh0LG4pLHBvaW50OnQsPQpzZXJp
ZXM6ZVt0LnNlcmllc10scG9zOltzKHUodCxuKSkrcy5yYW5nZUJhbmQoKSoodC5zZXJpZXMrLjUp
L2UubGVuZ3RoLG8oYSg9CnQsbikpXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMs
ZTpkMy5ldmVudH0pfSkub24oIm1vdXNlb3V0IixmdW5jdD0KaW9uKHQsbil7ZDMuc2VsZWN0KHRo
aXMpLmNsYXNzZWQoImhvdmVyIiwhMSksZy5lbGVtZW50TW91c2VvdXQoe3ZhbHVlOmEodCxuPQop
LHBvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvaW50SW5kZXg6bixzZXJpZXNJbmRleDp0LnNl
cmllcyxlOmQzLmV2ZW50fSk9Cn0pLm9uKCJjbGljayIsZnVuY3Rpb24odCxuKXtnLmVsZW1lbnRD
bGljayh7dmFsdWU6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmVbdD0KLnNlcmllc10scG9zOltzKHUo
dCxuKSkrcy5yYW5nZUJhbmQoKSoodC5zZXJpZXMrLjUpL2UubGVuZ3RoLG8oYSh0LG4pKV0scG9p
PQpudEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpkMy5ldmVudH0pLGQzLmV2ZW50LnN0
b3BQcm9wYWdhdGlvbigpfSkub249CigiZGJsY2xpY2siLGZ1bmN0aW9uKHQsbil7Zy5lbGVtZW50
RGJsQ2xpY2soe3ZhbHVlOmEodCxuKSxwb2ludDp0LHNlcmllczplWz0KdC5zZXJpZXNdLHBvczpb
cyh1KHQsbikpK3MucmFuZ2VCYW5kKCkqKHQuc2VyaWVzKy41KS9lLmxlbmd0aCxvKGEodCxuKSld
LHBvPQppbnRJbmRleDpuLHNlcmllc0luZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnR9KSxkMy5ldmVu
dC5zdG9wUHJvcGFnYXRpb24oKX0pO009Ci5hcHBlbmQoInJlY3QiKS5hdHRyKCJoZWlnaHQiLDAp
LmF0dHIoIndpZHRoIixzLnJhbmdlQmFuZCgpKi45L2UubGVuZ3RoKSxjPz0KKE0uYXBwZW5kKCJ0
ZXh0IikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxPLnNlbGVjdCgidGV4dCIpLnRleHQo
ZnVuY3RpPQpvbihlLHQpe3JldHVybiBoKGEoZSx0KSl9KS5hdHRyKCJ4IixzLnJhbmdlQmFuZCgp
Ki45LzIpLmF0dHIoInkiLGZ1bmN0aW9uKGU9Cix0KXtyZXR1cm4gYShlLHQpPDA/byhhKGUsdCkp
LW8oMCkrMTI6LTR9KSk6Ty5zZWxlY3RBbGwoInRleHQiKS5yZW1vdmUoKSxPLj0KYXR0cigiY2xh
c3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSx0KTwwPyJudi1iYXIgbmVnYXRpdmUiOiJudi1i
YXIgcG9zaXRpPQp2ZSJ9KS5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xv
cnx8bChlLHQpfSkuc3R5bGUoInN0cm9rZSIsZnU9Cm5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9y
fHxsKGUsdCl9KS5zZWxlY3QoInJlY3QiKS5hdHRyKCJjbGFzcyIseSkuYXR0cigidz0KaWR0aCIs
cy5yYW5nZUJhbmQoKSouOS9lLmxlbmd0aCksTy5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUs
dCl7dmFyIG49M0RzPQoodShlLHQpKStzLnJhbmdlQmFuZCgpKi4wNSxyPTNEYShlLHQpPDA/bygw
KTpvKDApLW8oYShlLHQpKTwxP28oMCktMTpvKGEoZSw9CnQpKTtyZXR1cm4idHJhbnNsYXRlKCIr
bisiLCAiK3IrIikifSkuc2VsZWN0KCJyZWN0IikuYXR0cigiaGVpZ2h0IixmdW5jdGlvbj0KKGUs
dCl7cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKG8oYShlLHQpKS1vKGQmJmRbMF18fDApKXx8MSl9
KSxiPTNEcy5jb3B5KCksPQp3PTNEby5jb3B5KCl9KSxFfXZhciB0PTNEe3RvcDowLHJpZ2h0OjAs
Ym90dG9tOjAsbGVmdDowfSxuPTNEOTYwLHI9M0Q1MDAsaT0KPTNETWF0aC5mbG9vcihNYXRoLnJh
bmRvbSgpKjFlNCkscz0zRGQzLnNjYWxlLm9yZGluYWwoKSxvPTNEZDMuc2NhbGUubGluZWFyPQoo
KSx1PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0sYT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnl9
LGY9M0RbMF0sbD0zRGUudXQ9Cmlscy5kZWZhdWx0Q29sb3IoKSxjPTNEITEsaD0zRGQzLmZvcm1h
dCgiLC4yZiIpLHAsZCx2LG0sZz0zRGQzLmRpc3BhdGNoKCJjaD0KYXJ0Q2xpY2siLCJlbGVtZW50
Q2xpY2siLCJlbGVtZW50RGJsQ2xpY2siLCJlbGVtZW50TW91c2VvdmVyIiwiZWxlbWVudE1vdXNl
PQpvdXQiKSx5PTNEImRpc2NyZXRlQmFyIixiLHc7cmV0dXJuIEUuZGlzcGF0Y2g9M0RnLEUub3B0
aW9ucz0zRGUudXRpbHMub3B0aW89Cm5zRnVuYy5iaW5kKEUpLEUueD0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZSxFKTp1fSxFLnk9Cj0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZSxFKTphfSxFLm1hcmdpbj0zRGZ1bmN0aW9uKGUp
ez0KcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRl
ZmluZWQiP2UudG9wOnQudG9wLHQuPQpyaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmlu
ZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT0zRHR5cGVvZiBlLmI9Cm90dG9tIT0zRCJ1bmRl
ZmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVm
aW5lZD0KIj9lLmxlZnQ6dC5sZWZ0LEUpOnR9LEUud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8obj0zRGUsPQpFKTpufSxFLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZSxFKTpyfSxFLnhTY2FsZT0KPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLEUpOnN9LEUueVNjYWxlPTNEZnVuY3Rp
b24oZSl7PQpyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsRSk6b30sRS54RG9tYWluPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW49CnRzLmxlbmd0aD8ocD0zRGUsRSk6cH0sRS55RG9t
YWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9Cj0zRGUsRSk6ZH0s
RS54UmFuZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj0zRGUsRSk6
dn0sRS55Uj0KYW5nZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNE
ZSxFKTptfSxFLmZvcmNlWT0zRGZ1bmN0aW9uPQooZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGY9M0RlLEUpOmZ9LEUuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW09CmVudHMubGVu
Z3RoPyhsPTNEZS51dGlscy5nZXRDb2xvcih0KSxFKTpsfSxFLmlkPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZT0KbnRzLmxlbmd0aD8oaT0zRGUsRSk6aX0sRS5zaG93VmFsdWVzPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/PQooYz0zRGUsRSk6Y30sRS52YWx1ZUZvcm1h
dD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxFKTo9Cmh9LEUu
cmVjdENsYXNzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9M0RlLEUp
Onl9LEV9LGUubW9kZT0KbHMuZGlzY3JldGVCYXJDaGFydD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dyhlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhPQpyIHU9M0RkMy5zZWxlY3QodGhpcyks
cD0zRHRoaXMseT0zRChzfHxwYXJzZUludCh1LnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS1pLmw9CmVm
dC1pLnJpZ2h0LEU9M0Qob3x8cGFyc2VJbnQodS5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLWkudG9w
LWkuYm90dG9tO3cudXBkYT0KdGU9M0RmdW5jdGlvbigpe2cuYmVmb3JlVXBkYXRlKCksdS5jYWxs
KHcpfSx3LmNvbnRhaW5lcj0zRHRoaXM7aWYoIWV8fCFlLmxlPQpuZ3RofHwhZS5maWx0ZXIoZnVu
Y3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLmxlbmd0aH0pLmxlbmd0aCl7dmFyIFM9M0R1LnNlbGU9
CmN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShbbV0pO3JldHVybiBTLmVudGVyKCkuYXBwZW5kKCJ0
ZXh0IikuYXR0cigiY2xhc3MiLD0KIm52ZDMgbnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIp
LnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLFMuYXR0cigiPQp4IixpLmxlZnQreS8yKS5h
dHRyKCJ5IixpLnRvcCtFLzIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSx3fXUuc2VsZWN0
QWw9CmwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKSxkPTNEdC54U2NhbGUoKSx2PTNEdC55U2NhbGUo
KS5jbGFtcCghMCk7dmFyIFQ9M0R1Lj0Kc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtZGlzY3JldGVC
YXJXaXRoQXhlcyIpLmRhdGEoW2VdKSxOPTNEVC5lbnRlcigpLmFwcGVuPQpkKCJnIikuYXR0cigi
Y2xhc3MiLCJudmQzIG52LXdyYXAgbnYtZGlzY3JldGVCYXJXaXRoQXhlcyIpLmFwcGVuZCgiZyIp
LEM9M0Q9Ck4uYXBwZW5kKCJkZWZzIiksaz0zRFQuc2VsZWN0KCJnIik7Ti5hcHBlbmQoImciKS5h
dHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcz0KIiksTi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIs
Im52LXkgbnYtYXhpcyIpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtPQp6ZXJvTGluZSIp
LmFwcGVuZCgibGluZSIpLE4uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1iYXJzV3JhcCIp
LGsuYXR0cig9CiJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitpLmxlZnQrIiwiK2kudG9wKyIpIiks
bCYmay5zZWxlY3QoIi5udi15Lm52LWF4aXMiKT0KLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0
ZSgiK3krIiwwKSIpLHQud2lkdGgoeSkuaGVpZ2h0KEUpO3ZhciBMPTNEay5zZWxlPQpjdCgiLm52
LWJhcnNXcmFwIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9
KSk7TC5jYWxsKHQ9CiksQy5hcHBlbmQoImNsaXBQYXRoIikuYXR0cigiaWQiLCJudi14LWxhYmVs
LWNsaXAtIit0LmlkKCkpLmFwcGVuZCgicmVjdCIpLD0Kay5zZWxlY3QoIiNudi14LWxhYmVsLWNs
aXAtIit0LmlkKCkrIiByZWN0IikuYXR0cigid2lkdGgiLGQucmFuZ2VCYW5kKCkqKGM/PQoyOjEp
KS5hdHRyKCJoZWlnaHQiLDE2KS5hdHRyKCJ4IiwtZC5yYW5nZUJhbmQoKS8oYz8xOjIpKTtpZihh
KXtuLnNjYWxlKGQpLnQ9Cmlja3MoeS8xMDApLnRpY2tTaXplKC1FLDApLGsuc2VsZWN0KCIubnYt
eC5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbj0Kc2xhdGUoMCwiKyh2LnJhbmdlKClb
MF0rKHQuc2hvd1ZhbHVlcygpJiZ2LmRvbWFpbigpWzBdPDA/MTY6MCkpKyIpIiksay5zZWxlPQpj
dCgiLm52LXgubnYtYXhpcyIpLmNhbGwobik7dmFyIEE9M0RrLnNlbGVjdCgiLm52LXgubnYtYXhp
cyIpLnNlbGVjdEFsbCgiZyI9Cik7YyYmQS5zZWxlY3RBbGwoInRleHQiKS5hdHRyKCJ0cmFuc2Zv
cm0iLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4idHJhbnNsYXRlKD0KMCwiKyhuJTI9M0Q9M0QwPyI1
IjoiMTciKSsiKSJ9KX1mJiYoci5zY2FsZSh2KS50aWNrcyhFLzM2KS50aWNrU2l6ZSgteSwwKSxr
PQouc2VsZWN0KCIubnYteS5udi1heGlzIikuY2FsbChyKSksay5zZWxlY3QoIi5udi16ZXJvTGlu
ZSBsaW5lIikuYXR0cigieDEiLDA9CikuYXR0cigieDIiLHkpLmF0dHIoInkxIix2KDApKS5hdHRy
KCJ5MiIsdigwKSksZy5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKD0KZSl7aCYmYihlLHAucGFy
ZW50Tm9kZSl9KX0pLHd9dmFyIHQ9M0RlLm1vZGVscy5kaXNjcmV0ZUJhcigpLG49M0RlLm1vZGVs
cy5hPQp4aXMoKSxyPTNEZS5tb2RlbHMuYXhpcygpLGk9M0R7dG9wOjE1LHJpZ2h0OjEwLGJvdHRv
bTo1MCxsZWZ0OjYwfSxzPTNEbnVsbCw9Cm89M0RudWxsLHU9M0RlLnV0aWxzLmdldENvbG9yKCks
YT0zRCEwLGY9M0QhMCxsPTNEITEsYz0zRCExLGg9M0QhMCxwPTNEZnVuYz0KdGlvbihlLHQsbixy
LGkpe3JldHVybiI8aDM+Iit0KyI8L2gzPiIrIjxwPiIrbisiPC9wPiJ9LGQsdixtPTNEIk5vIERh
dGEgQXZhPQppbGFibGUuIixnPTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhp
ZGUiLCJiZWZvcmVVcGRhdGUiKSx5PTNEMDs9Cm4ub3JpZW50KCJib3R0b20iKS5oaWdobGlnaHRa
ZXJvKCExKS5zaG93TWF4TWluKCExKS50aWNrRm9ybWF0KGZ1bmN0aW9uKGUpez0KcmV0dXJuIGV9
KSxyLm9yaWVudChsPyJyaWdodCI6ImxlZnQiKS50aWNrRm9ybWF0KGQzLmZvcm1hdCgiLC4xZiIp
KTt2YXIgYj0KPTNEZnVuY3Rpb24oaSxzKXt2YXIgbz0zRGkucG9zWzBdKyhzLm9mZnNldExlZnR8
fDApLHU9M0RpLnBvc1sxXSsocy5vZmZzZXRUPQpvcHx8MCksYT0zRG4udGlja0Zvcm1hdCgpKHQu
eCgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksZj0zRHIudGlja0Zvcm1hdCgpKHQ9Ci55KCkoaS5w
b2ludCxpLnBvaW50SW5kZXgpKSxsPTNEcChpLnNlcmllcy5rZXksYSxmLGksdyk7ZS50b29sdGlw
LnNob3coW28sdT0KXSxsLGkudmFsdWU8MD8ibiI6InMiLG51bGwscyl9O3JldHVybiB0LmRpc3Bh
dGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0PQppcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0Rb
ZS5wb3NbMF0raS5sZWZ0LGUucG9zWzFdK2kudG9wXSxnLnRvb2x0aXBTaG93KGUpfSk9Cix0LmRp
c3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7Zy50b29sdGlw
SGlkZShlKX0pLGcubz0KbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7aCYmZS50b29sdGlwLmNs
ZWFudXAoKX0pLHcuZGlzcGF0Y2g9M0RnLHcuZGlzY3JlPQp0ZWJhcj0zRHQsdy54QXhpcz0zRG4s
dy55QXhpcz0zRHIsZDMucmViaW5kKHcsdCwieCIsInkiLCJ4RG9tYWluIiwieURvbWFpbiI9Ciwi
eFJhbmdlIiwieVJhbmdlIiwiZm9yY2VYIiwiZm9yY2VZIiwiaWQiLCJzaG93VmFsdWVzIiwidmFs
dWVGb3JtYXQiKSx3Lm9wdD0KaW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZCh3KSx3Lm1h
cmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMuPQpsZW5ndGg/KGkudG9wPTNEdHlw
ZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOmkudG9wLGkucmlnaHQ9M0R0eXBlb2YgZS49
CnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6aS5yaWdodCxpLmJvdHRvbT0zRHR5cGVvZiBl
LmJvdHRvbSE9M0QidW5kZWZpbj0KZWQiP2UuYm90dG9tOmkuYm90dG9tLGkubGVmdD0zRHR5cGVv
ZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OmkubGVmdCx3PQopOml9LHcud2lkdGg9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0zRGUsdyk6c30sdy5oZWlnaHQ9
M0Q9CmZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZSx3KTpvfSx3LmNv
bG9yPTNEZnVuY3Rpb24obil7cmV0dT0Kcm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUudXRpbHMu
Z2V0Q29sb3IobiksdC5jb2xvcih1KSx3KTp1fSx3LnNob3dYQXhpcz0KPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLHcpOmF9LHcuc2hvd1lBeGlzPTNEZnVuY3Rp
b24oPQplKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUsdyk6Zn0sdy5yaWdodEFsaWdu
WUF4aXM9M0RmdW5jdGlvbihlKXtyZXQ9CnVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZSxyLm9y
aWVudChlPyJyaWdodCI6ImxlZnQiKSx3KTpsfSx3LnN0YWdnZXJMYWJlbD0Kcz0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSx3KTpjfSx3LnRvb2x0aXBzPTNEZnVu
Y3Rpb24oPQplKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsdyk6aH0sdy50b29sdGlw
Q29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHU9CnJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLHcp
OnB9LHcubm9EYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZT0Kbmd0aD8obT0z
RGUsdyk6bX0sdy50cmFuc2l0aW9uRHVyYXRpb249M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0PQpoPyh5PTNEZSx3KTp5fSx3fSxlLm1vZGVscy5kaXN0cmlidXRpb249M0RmdW5j
dGlvbigpe2Z1bmN0aW9uIGwoZSl7cmV0dXJuIGU9Ci5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBhPTNE
bi0oaT0zRD0zRD0zRCJ4Ij90LmxlZnQrdC5yaWdodDp0LnRvcCt0LmJvdHRvbSksbD0KPTNEaT0z
RD0zRCJ4Ij8ieSI6IngiLGM9M0RkMy5zZWxlY3QodGhpcyk7Zj0zRGZ8fHU7dmFyIGg9M0RjLnNl
bGVjdEFsbCgiZy5uPQp2LWRpc3RyaWJ1dGlvbiIpLmRhdGEoW2VdKSxwPTNEaC5lbnRlcigpLmFw
cGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi09CmRpc3RyaWJ1dGlvbiIpLGQ9M0RwLmFw
cGVuZCgiZyIpLHY9M0RoLnNlbGVjdCgiZyIpO2guYXR0cigidHJhbnNmb3JtIiwidHJhbj0Kc2xh
dGUoIit0LmxlZnQrIiwiK3QudG9wKyIpIik7dmFyIG09M0R2LnNlbGVjdEFsbCgiZy5udi1kaXN0
IikuZGF0YShmdW5jdGlvPQpuKGUpe3JldHVybiBlfSxmdW5jdGlvbihlKXtyZXR1cm4gZS5rZXl9
KTttLmVudGVyKCkuYXBwZW5kKCJnIiksbS5hdHRyKCJjbGE9CnNzIixmdW5jdGlvbihlLHQpe3Jl
dHVybiJudi1kaXN0IG52LXNlcmllcy0iK3R9KS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbihlLD0K
dCl7cmV0dXJuIG8oZSx0KX0pO3ZhciBnPTNEbS5zZWxlY3RBbGwoImxpbmUubnYtZGlzdCIraSku
ZGF0YShmdW5jdGlvbihlKXtyPQpldHVybiBlLnZhbHVlc30pO2cuZW50ZXIoKS5hcHBlbmQoImxp
bmUiKS5hdHRyKGkrIjEiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGY9CihzKGUsdCkpfSkuYXR0cihp
KyIyIixmdW5jdGlvbihlLHQpe3JldHVybiBmKHMoZSx0KSl9KSxtLmV4aXQoKS5zZWxlY3RBbGwo
Ij0KbGluZS5udi1kaXN0IitpKS5hdHRyKGkrIjEiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHUocyhl
LHQpKX0pLmF0dHIoaSsiMiIsZnVuPQpjdGlvbihlLHQpe3JldHVybiB1KHMoZSx0KSl9KS5zdHls
ZSgic3Ryb2tlLW9wYWNpdHkiLDApLnJlbW92ZSgpLGcuYXR0cigiY2w9CmFzcyIsZnVuY3Rpb24o
ZSx0KXtyZXR1cm4ibnYtZGlzdCIraSsiIG52LWRpc3QiK2krIi0iK3R9KS5hdHRyKGwrIjEiLDAp
LmF0dD0KcihsKyIyIixyKSxnLmF0dHIoaSsiMSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdShzKGUs
dCkpfSkuYXR0cihpKyIyIixmdW5jdGlvPQpuKGUsdCl7cmV0dXJuIHUocyhlLHQpKX0pLGY9M0R1
LmNvcHkoKX0pLGx9dmFyIHQ9M0R7dG9wOjAscmlnaHQ6MCxib3R0b206MCw9CmxlZnQ6MH0sbj0z
RDQwMCxyPTNEOCxpPTNEIngiLHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gZVtpXX0sbz0zRGUudXRp
bHMuZGVmYT0KdWx0Q29sb3IoKSx1PTNEZDMuc2NhbGUubGluZWFyKCksYSxmO3JldHVybiBsLm9w
dGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jPQouYmluZChsKSxsLm1hcmdpbj0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD0zRHR5cGVvZiBlLnQ9Cm9wIT0zRCJ1
bmRlZmluZWQiP2UudG9wOnQudG9wLHQucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZp
bmVkIj9lLnJpZz0KaHQ6dC5yaWdodCx0LmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5k
ZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHRvbSx0LmxlPQpmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVu
ZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxsKTp0fSxsLndpZHRoPTNEZnVuY3Rpb24oZSk9CntyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGUsbCk6bn0sbC5heGlzPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cz0KLmxlbmd0aD8oaT0zRGUsbCk6aX0sbC5zaXplPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLGwpPQo6cn0sbC5nZXREYXRhPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RkMy5mdW5jdG9yKGUpLGwpOnM9Cn0s
bC5zY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZSxsKTp1
fSxsLmNvbG9yPTNEZnVuYz0KdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUu
dXRpbHMuZ2V0Q29sb3IodCksbCk6b30sbH0sZS5tb2RlbHMuPQpoaXN0b3JpY2FsQmFyQ2hhcnQ9
M0RmdW5jdGlvbigpe2Z1bmN0aW9uIHgoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihkKXt2YXI9
CiBFPTNEZDMuc2VsZWN0KHRoaXMpLFQ9M0R0aGlzLE49M0QodXx8cGFyc2VJbnQoRS5zdHlsZSgi
d2lkdGgiKSl8fDk2MCktcy5sZT0KZnQtcy5yaWdodCxDPTNEKGF8fHBhcnNlSW50KEUuc3R5bGUo
ImhlaWdodCIpKXx8NDAwKS1zLnRvcC1zLmJvdHRvbTt4LnVwZGF0PQplPTNEZnVuY3Rpb24oKXtF
LmNhbGwoeCl9LHguY29udGFpbmVyPTNEdGhpcyxnLmRpc2FibGVkPTNEZC5tYXAoZnVuY3Rpb24o
ZSk9CntyZXR1cm4hIWUuZGlzYWJsZWR9KTtpZigheSl7dmFyIGs7eT0zRHt9O2ZvcihrIGluIGcp
Z1trXWluc3RhbmNlb2YgQXJyYXk/eT0KW2tdPTNEZ1trXS5zbGljZSgwKTp5W2tdPTNEZ1trXX1p
ZighZHx8IWQubGVuZ3RofHwhZC5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0PQp1cm4gZS52YWx1ZXMu
bGVuZ3RofSkubGVuZ3RoKXt2YXIgTD0zREUuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShb
Yl0pO3I9CmV0dXJuIEwuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52ZDMg
bnYtbm9EYXRhIikuYXR0cigiZHkiLCItLj0KN2VtIikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlk
ZGxlIiksTC5hdHRyKCJ4IixzLmxlZnQrTi8yKS5hdHRyKCJ5IixzLnRvcCtDPQovMikudGV4dChm
dW5jdGlvbihlKXtyZXR1cm4gZX0pLHh9RS5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUo
KSx2PTNEdC49CnhTY2FsZSgpLG09M0R0LnlTY2FsZSgpO3ZhciBBPTNERS5zZWxlY3RBbGwoImcu
bnYtd3JhcC5udi1oaXN0b3JpY2FsQmFyQ2hhcj0KdCIpLmRhdGEoW2RdKSxPPTNEQS5lbnRlcigp
LmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LWhpc3RvPQpyaWNhbEJh
ckNoYXJ0IikuYXBwZW5kKCJnIiksTT0zREEuc2VsZWN0KCJnIik7Ty5hcHBlbmQoImciKS5hdHRy
KCJjbGFzcyIsIm49CnYteCBudi1heGlzIiksTy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52
LXkgbnYtYXhpcyIpLE8uYXBwZW5kKCJnIikuYXR0cj0KKCJjbGFzcyIsIm52LWJhcnNXcmFwIiks
Ty5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZFdyYXAiKSxmJiYoaS53PQppZHRo
KE4pLE0uc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmRhdHVtKGQpLmNhbGwoaSkscy50b3AhPTNE
aS5oZWlnaHQoKSYmKHM9Ci50b3A9M0RpLmhlaWdodCgpLEM9M0QoYXx8cGFyc2VJbnQoRS5zdHls
ZSgiaGVpZ2h0IikpfHw0MDApLXMudG9wLXMuYm90dG9tKT0KLEEuc2VsZWN0KCIubnYtbGVnZW5k
V3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrIC1zLnRvcCsiKSIpKSxBPQou
YXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrcy5sZWZ0KyIsIitzLnRvcCsiKSIpLGgmJk0u
c2VsZWN0KCIubnYteS5udi09CmF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitO
KyIsMCkiKSx0LndpZHRoKE4pLmhlaWdodChDKS5jb2xvcihkLj0KbWFwKGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIGUuY29sb3J8fG8oZSx0KX0pLmZpbHRlcihmdW5jdGlvbihlLHQpe3JldHVybiFkW3Rd
PQouZGlzYWJsZWR9KSk7dmFyIF89M0RNLnNlbGVjdCgiLm52LWJhcnNXcmFwIikuZGF0dW0oZC5m
aWx0ZXIoZnVuY3Rpb24oZSl7cmU9CnR1cm4hZS5kaXNhYmxlZH0pKTtfLmNhbGwodCksbCYmKG4u
c2NhbGUodikudGlja1NpemUoLUMsMCksTS5zZWxlY3QoIi5udi14Lj0KbnYtYXhpcyIpLmF0dHIo
InRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrbS5yYW5nZSgpWzBdKyIpIiksTS5zZWxlY3QoIi5u
di14PQoubnYtYXhpcyIpLmNhbGwobikpLGMmJihyLnNjYWxlKG0pLnRpY2tzKEMvMzYpLnRpY2tT
aXplKC1OLDApLE0uc2VsZWN0KCIubnY9Ci15Lm52LWF4aXMiKS5jYWxsKHIpKSxpLmRpc3BhdGNo
Lm9uKCJsZWdlbmRDbGljayIsZnVuY3Rpb24odCxuKXt0LmRpc2FibGVkPQo9M0QhdC5kaXNhYmxl
ZCxkLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pLmxlbmd0aHx8ZC5tYXAo
ZnVuY3Q9CmlvbihlKXtyZXR1cm4gZS5kaXNhYmxlZD0zRCExLEEuc2VsZWN0QWxsKCIubnYtc2Vy
aWVzIikuY2xhc3NlZCgiZGlzYWJsZWQiLD0KITEpLGV9KSxnLmRpc2FibGVkPTNEZC5tYXAoZnVu
Y3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSksdy5zdGF0ZUNoYW5nZShnPQopLGUuY2FsbCh4
KX0pLGkuZGlzcGF0Y2gub24oImxlZ2VuZERibGNsaWNrIixmdW5jdGlvbihlKXtkLmZvckVhY2go
ZnVuY3Rpb249CihlKXtlLmRpc2FibGVkPTNEITB9KSxlLmRpc2FibGVkPTNEITEsZy5kaXNhYmxl
ZD0zRGQubWFwKGZ1bmN0aW9uKGUpe3JldHVybj0KISFlLmRpc2FibGVkfSksdy5zdGF0ZUNoYW5n
ZShnKSx4LnVwZGF0ZSgpfSksdy5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpPQp7cCYmUyhl
LFQucGFyZW50Tm9kZSl9KSx3Lm9uKCJjaGFuZ2VTdGF0ZSIsZnVuY3Rpb24oZSl7dHlwZW9mIGUu
ZGlzYWJsZWQhPQo9M0QidW5kZWZpbmVkIiYmKGQuZm9yRWFjaChmdW5jdGlvbih0LG4pe3QuZGlz
YWJsZWQ9M0RlLmRpc2FibGVkW25dfSksZy5kaXM9CmFibGVkPTNEZS5kaXNhYmxlZCkseC51cGRh
dGUoKX0pfSkseH12YXIgdD0zRGUubW9kZWxzLmhpc3RvcmljYWxCYXIoKSxuPTNEZT0KLm1vZGVs
cy5heGlzKCkscj0zRGUubW9kZWxzLmF4aXMoKSxpPTNEZS5tb2RlbHMubGVnZW5kKCkscz0zRHt0
b3A6MzAscmlnaHQ6PQo5MCxib3R0b206NTAsbGVmdDo5MH0sbz0zRGUudXRpbHMuZGVmYXVsdENv
bG9yKCksdT0zRG51bGwsYT0zRG51bGwsZj0zRCExLGw9Cj0zRCEwLGM9M0QhMCxoPTNEITEscD0z
RCEwLGQ9M0RmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiI8aDM+IitlKyI8L2gzPiIrIj0KPHA+
IituKyIgYXQgIit0KyI8L3A+In0sdixtLGc9M0R7fSx5PTNEbnVsbCxiPTNEIk5vIERhdGEgQXZh
aWxhYmxlLiIsdz0zRGQzPQouZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhpZGUiLCJz
dGF0ZUNoYW5nZSIsImNoYW5nZVN0YXRlIiksRT0zRDA7bi49Cm9yaWVudCgiYm90dG9tIikudGlj
a1BhZGRpbmcoNyksci5vcmllbnQoaD8icmlnaHQiOiJsZWZ0Iik7dmFyIFM9M0RmdW5jdGlvbj0K
KGkscyl7aWYocyl7dmFyIG89M0RkMy5zZWxlY3Qocykuc2VsZWN0KCJzdmciKSx1PTNEby5ub2Rl
KCk/by5hdHRyKCJ2aWV3Qm94PQoiKTpudWxsO2lmKHUpe3U9M0R1LnNwbGl0KCIgIik7dmFyIGE9
M0RwYXJzZUludChvLnN0eWxlKCJ3aWR0aCIpKS91WzJdO2kucG89CnNbMF09M0RpLnBvc1swXSph
LGkucG9zWzFdPTNEaS5wb3NbMV0qYX19dmFyIGY9M0RpLnBvc1swXSsocy5vZmZzZXRMZWZ0fHww
KT0KLGw9M0RpLnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLGM9M0RuLnRpY2tGb3JtYXQoKSh0Lngo
KShpLnBvaW50LGkucG9pbnRJbmRlPQp4KSksaD0zRHIudGlja0Zvcm1hdCgpKHQueSgpKGkucG9p
bnQsaS5wb2ludEluZGV4KSkscD0zRGQoaS5zZXJpZXMua2V5LGMsaCw9CmkseCk7ZS50b29sdGlw
LnNob3coW2YsbF0scCxudWxsLG51bGwscyl9O3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50
TW91cz0KZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rcy5sZWZ0
LGUucG9zWzFdK3MudG9wXSx3LnRvb2x0PQppcFNob3coZSl9KSx0LmRpc3BhdGNoLm9uKCJlbGVt
ZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7dy50b29sdGlwSGk9CmRlKGUpfSksdy5v
bigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7cCYmZS50b29sdGlwLmNsZWFudXAoKX0pLHguZGlz
cGF0Y2g9Cj0zRHcseC5iYXJzPTNEdCx4LmxlZ2VuZD0zRGkseC54QXhpcz0zRG4seC55QXhpcz0z
RHIsZDMucmViaW5kKHgsdCwiZGVmaW5lZD0KIiwiaXNBcmVhIiwieCIsInkiLCJzaXplIiwieFNj
YWxlIiwieVNjYWxlIiwieERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5PQpSYW5nZSIsImZv
cmNlWCIsImZvcmNlWSIsImludGVyYWN0aXZlIiwiY2xpcEVkZ2UiLCJjbGlwVm9yb25vaSIsImlk
IiwiaW50ZXI9CnBvbGF0ZSIsImhpZ2hsaWdodFBvaW50IiwiY2xlYXJIaWdobGlnaHRzIiwiaW50
ZXJhY3RpdmUiKSx4Lm9wdGlvbnM9M0RlLnV0aT0KbHMub3B0aW9uc0Z1bmMuYmluZCh4KSx4Lm1h
cmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzLnRvPQpwPTNEdHlw
ZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnMudG9wLHMucmlnaHQ9M0R0eXBlb2YgZS5y
aWdodCE9M0QidW49CmRlZmluZWQiP2UucmlnaHQ6cy5yaWdodCxzLmJvdHRvbT0zRHR5cGVvZiBl
LmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbT0KOnMuYm90dG9tLHMubGVmdD0zRHR5cGVv
ZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnMubGVmdCx4KTpzfSx4LndpZHRoPQo9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUseCk6dX0seC5oZWlnaHQ9
M0RmdW5jdGlvbihlKXs9CnJldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZSx4KTphfSx4LmNv
bG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cz0KLmxlbmd0aD8obz0zRGUudXRpbHMu
Z2V0Q29sb3IodCksaS5jb2xvcihvKSx4KTpvfSx4LnNob3dMZWdlbmQ9M0RmdW5jdGlvbihlPQop
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSx4KTpmfSx4LnNob3dYQXhpcz0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmc9CnVtZW50cy5sZW5ndGg/KGw9M0RlLHgpOmx9LHguc2hvd1lBeGlz
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndD0KaD8oYz0zRGUseCk6Y30seC5y
aWdodEFsaWduWUF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0K
PTNEZSxyLm9yaWVudChlPyJyaWdodCI6ImxlZnQiKSx4KTpofSx4LnRvb2x0aXBzPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtPQplbnRzLmxlbmd0aD8ocD0zRGUseCk6cH0seC50b29sdGlwQ29u
dGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGU9Cm5ndGg/KGQ9M0RlLHgpOmR9
LHguc3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0zRGUseCk6
Zz0KfSx4LmRlZmF1bHRTdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
Pyh5PTNEZSx4KTp5fSx4Lm5vRGF0PQphPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGI9M0RlLHgpOmJ9LHgudHJhbnNpdGlvbkR1cmF0aW9uPQo9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT0zRGUseCk6RX0seH0sZS5tb2RlbHMuaW5kZW50ZWRU
cmU9CmU9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIGcoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihl
KXtmdW5jdGlvbiBrKGUsdCxuKXtkMz0KLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO2lmKGQzLmV2
ZW50LnNoaWZ0S2V5JiYhbilyZXR1cm4gZDMuZXZlbnQuc2hpZnRLZXk9Cj0zRCExLGUudmFsdWVz
JiZlLnZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyhlLnZhbHVlc3x8ZS5fdmFsdWVzKSYmayhl
LDAsIT0KMCl9KSwhMDtpZighTyhlKSlyZXR1cm4hMDtlLnZhbHVlcz8oZS5fdmFsdWVzPTNEZS52
YWx1ZXMsZS52YWx1ZXM9M0RudWxsKTooPQplLnZhbHVlcz0zRGUuX3ZhbHVlcyxlLl92YWx1ZXM9
M0RudWxsKSxnLnVwZGF0ZSgpfWZ1bmN0aW9uIEwoZSl7cmV0dXJuIGUuX3Y9CmFsdWVzJiZlLl92
YWx1ZXMubGVuZ3RoP2g6ZS52YWx1ZXMmJmUudmFsdWVzLmxlbmd0aD9wOiIifWZ1bmN0aW9uIEEo
ZSl7cmV0dT0Kcm4gZS5fdmFsdWVzJiZlLl92YWx1ZXMubGVuZ3RofWZ1bmN0aW9uIE8oZSl7dmFy
IHQ9M0RlLnZhbHVlc3x8ZS5fdmFsdWVzO3JlPQp0dXJuIHQmJnQubGVuZ3RofXZhciB0PTNEMSxu
PTNEZDMuc2VsZWN0KHRoaXMpLGk9M0RkMy5sYXlvdXQudHJlZSgpLmNoaWxkcmU9Cm4oZnVuY3Rp
b24oZSl7cmV0dXJuIGUudmFsdWVzfSkuc2l6ZShbcixmXSk7Zy51cGRhdGU9M0RmdW5jdGlvbigp
e24uY2FsbChnKT0KfSxlWzBdfHwoZVswXT0zRHtrZXk6YX0pO3ZhciBzPTNEaS5ub2RlcyhlWzBd
KSx5PTNEZDMuc2VsZWN0KHRoaXMpLnNlbGVjdEFsPQpsKCJkaXYiKS5kYXRhKFtbc11dKSxiPTNE
eS5lbnRlcigpLmFwcGVuZCgiZGl2IikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXA9CiBudi1p
bmRlbnRlZHRyZWUiKSx3PTNEYi5hcHBlbmQoInRhYmxlIiksRT0zRHkuc2VsZWN0KCJ0YWJsZSIp
LmF0dHIoIndpZHRoIj0KLCIxMDAlIikuYXR0cigiY2xhc3MiLGMpO2lmKG8pe3ZhciBTPTNEdy5h
cHBlbmQoInRoZWFkIikseD0zRFMuYXBwZW5kKCJ0ciIpPQo7bC5mb3JFYWNoKGZ1bmN0aW9uKGUp
e3guYXBwZW5kKCJ0aCIpLmF0dHIoIndpZHRoIixlLndpZHRoP2Uud2lkdGg6IjEwJSIpLnM9CnR5
bGUoInRleHQtYWxpZ24iLGUudHlwZT0zRD0zRCJudW1lcmljIj8icmlnaHQiOiJsZWZ0IikuYXBw
ZW5kKCJzcGFuIikudGV4dD0KKGUubGFiZWwpfSl9dmFyIFQ9M0RFLnNlbGVjdEFsbCgidGJvZHki
KS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlfSk7VC5lbnRlPQpyKCkuYXBwZW5kKCJ0Ym9keSIp
LHQ9M0RkMy5tYXgocyxmdW5jdGlvbihlKXtyZXR1cm4gZS5kZXB0aH0pLGkuc2l6ZShbcix0KmY9
Cl0pO3ZhciBOPTNEVC5zZWxlY3RBbGwoInRyIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZS5m
aWx0ZXIoZnVuY3Rpb24oZSl7cj0KZXR1cm4gdSYmIWUuY2hpbGRyZW4/dShlKTohMH0pfSxmdW5j
dGlvbihlLHQpe3JldHVybiBlLmlkfHxlLmlkfHwrK219KTtOLmV4PQppdCgpLnJlbW92ZSgpLE4u
c2VsZWN0KCJpbWcubnYtdHJlZWljb24iKS5hdHRyKCJzcmMiLEwpLmNsYXNzZWQoImZvbGRlZCIs
QSk9Cjt2YXIgQz0zRE4uZW50ZXIoKS5hcHBlbmQoInRyIik7bC5mb3JFYWNoKGZ1bmN0aW9uKGUs
dCl7dmFyIG49M0RDLmFwcGVuZCgidD0KZCIpLnN0eWxlKCJwYWRkaW5nLWxlZnQiLGZ1bmN0aW9u
KGUpe3JldHVybih0PzA6ZS5kZXB0aCpmKzEyKyhMKGUpPzA6MTYpKSsiPQpweCJ9LCJpbXBvcnRh
bnQiKS5zdHlsZSgidGV4dC1hbGlnbiIsZS50eXBlPTNEPTNEIm51bWVyaWMiPyJyaWdodCI6Imxl
ZnQiKTs9CnQ9M0Q9M0QwJiZuLmFwcGVuZCgiaW1nIikuY2xhc3NlZCgibnYtdHJlZWljb24iLCEw
KS5jbGFzc2VkKCJudi1mb2xkZWQiLEEpLj0KYXR0cigic3JjIixMKS5zdHlsZSgid2lkdGgiLCIx
NHB4Iikuc3R5bGUoImhlaWdodCIsIjE0cHgiKS5zdHlsZSgicGFkZGluZyIsPQoiMCAxcHgiKS5z
dHlsZSgiZGlzcGxheSIsZnVuY3Rpb24oZSl7cmV0dXJuIEwoZSk/ImlubGluZS1ibG9jayI6Im5v
bmUifSkub249CigiY2xpY2siLGspLG4uZWFjaChmdW5jdGlvbihuKXshdCYmdihuKT9kMy5zZWxl
Y3QodGhpcykuYXBwZW5kKCJhIikuYXR0cigiaD0KcmVmIix2KS5hdHRyKCJjbGFzcyIsZDMuZnVu
Y3RvcihlLmNsYXNzZXMpKS5hcHBlbmQoInNwYW4iKTpkMy5zZWxlY3QodGhpcykuPQphcHBlbmQo
InNwYW4iKSxkMy5zZWxlY3QodGhpcykuc2VsZWN0KCJzcGFuIikuYXR0cigiY2xhc3MiLGQzLmZ1
bmN0b3IoZS5jbGE9CnNzZXMpKS50ZXh0KGZ1bmN0aW9uKHQpe3JldHVybiBlLmZvcm1hdD90W2Uu
a2V5XT9lLmZvcm1hdCh0W2Uua2V5XSk6Ii0iOnRbZT0KLmtleV18fCItIn0pfSksZS5zaG93Q291
bnQmJihuLmFwcGVuZCgic3BhbiIpLmF0dHIoImNsYXNzIiwibnYtY2hpbGRyZW5Db3VuPQp0Iiks
Ti5zZWxlY3RBbGwoInNwYW4ubnYtY2hpbGRyZW5Db3VudCIpLnRleHQoZnVuY3Rpb24oZSl7cmV0
dXJuIGUudmFsdWVzJiY9CmUudmFsdWVzLmxlbmd0aHx8ZS5fdmFsdWVzJiZlLl92YWx1ZXMubGVu
Z3RoPyIoIisoZS52YWx1ZXMmJmUudmFsdWVzLmZpbHRlcj0KKGZ1bmN0aW9uKGUpe3JldHVybiB1
P3UoZSk6ITB9KS5sZW5ndGh8fGUuX3ZhbHVlcyYmZS5fdmFsdWVzLmZpbHRlcihmdW5jdGlvPQpu
KGUpe3JldHVybiB1P3UoZSk6ITB9KS5sZW5ndGh8fDApKyIpIjoiIn0pKX0pLE4ub3JkZXIoKS5v
bigiY2xpY2siLGZ1bmN0aW89Cm4oZSl7ZC5lbGVtZW50Q2xpY2soe3Jvdzp0aGlzLGRhdGE6ZSxw
b3M6W2UueCxlLnldfSl9KS5vbigiZGJsY2xpY2siLGZ1bmN0aT0Kb24oZSl7ZC5lbGVtZW50RGJs
Y2xpY2soe3Jvdzp0aGlzLGRhdGE6ZSxwb3M6W2UueCxlLnldfSl9KS5vbigibW91c2VvdmVyIixm
PQp1bmN0aW9uKGUpe2QuZWxlbWVudE1vdXNlb3Zlcih7cm93OnRoaXMsZGF0YTplLHBvczpbZS54
LGUueV19KX0pLm9uKCJtb3VzZW89CnV0IixmdW5jdGlvbihlKXtkLmVsZW1lbnRNb3VzZW91dCh7
cm93OnRoaXMsZGF0YTplLHBvczpbZS54LGUueV19KX0pfSksZ312YT0KciB0PTNEe3RvcDowLHJp
Z2h0OjAsYm90dG9tOjAsbGVmdDowfSxuPTNEOTYwLHI9M0Q1MDAsaT0zRGUudXRpbHMuZGVmYXVs
dENvPQpsb3IoKSxzPTNETWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjFlNCksbz0zRCEwLHU9M0Qh
MSxhPTNEIk5vIERhdGEgQXZhaWxhYmw9CmUuIixmPTNEMjAsbD0zRFt7a2V5OiJrZXkiLGxhYmVs
OiJOYW1lIix0eXBlOiJ0ZXh0In1dLGM9M0RudWxsLGg9M0QiaW1hZ2VzLz0KZ3JleS1wbHVzLnBu
ZyIscD0zRCJpbWFnZXMvZ3JleS1taW51cy5wbmciLGQ9M0RkMy5kaXNwYXRjaCgiZWxlbWVudENs
aWNrIiwiPQplbGVtZW50RGJsY2xpY2siLCJlbGVtZW50TW91c2VvdmVyIiwiZWxlbWVudE1vdXNl
b3V0Iiksdj0zRGZ1bmN0aW9uKGUpe3JldHU9CnJuIGUudXJsfSxtPTNEMDtyZXR1cm4gZy5vcHRp
b25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKGcpLGcubWFyZ2luPTNEZj0KdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVm
aW5lZCI/ZS50PQpvcDp0LnRvcCx0LnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5l
ZCI/ZS5yaWdodDp0LnJpZ2h0LHQuYm90dG9tPQo9M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVm
aW5lZCI/ZS5ib3R0b206dC5ib3R0b20sdC5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9Cj0zRCJ1bmRl
ZmluZWQiP2UubGVmdDp0LmxlZnQsZyk6dH0sZy53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubD0KZW5ndGg/KG49M0RlLGcpOm59LGcuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLGcpPQo6cn0sZy5jb2xvcj0zRGZ1bmN0aW9uKHQp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPTNEZS51dGlscy5nZXRDb2xvcih0KSw9CnNjYXR0
ZXIuY29sb3IoaSksZyk6aX0sZy5pZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhzPTNEZSxnKT0KOnN9LGcuaGVhZGVyPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KG89M0RlLGcpOm99LGcubm9EYXRhPTNEPQpmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oYT0zRGUsZyk6YX0sZy5maWx0ZXJaZXJvPTNEZnVuY3Rpb24oZSk9Cnty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsZyk6dX0sZy5jb2x1bW5zPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZT0KbnRzLmxlbmd0aD8obD0zRGUsZyk6bH0sZy50YWJsZUNsYXNzPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/PQooYz0zRGUsZyk6Y30sZy5pY29u
T3Blbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxnKTpofSw9
CmcuaWNvbkNsb3NlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0Rl
LGcpOnB9LGcuZ2V0VXJsPTNEZj0KdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
dj0zRGUsZyk6dn0sZ30sZS5tb2RlbHMubGVnZW5kPTNEZnVuY3RpPQpvbigpe2Z1bmN0aW9uIGMo
aCl7cmV0dXJuIGguZWFjaChmdW5jdGlvbihjKXt2YXIgaD0zRG4tdC5sZWZ0LXQucmlnaHQscD0z
RGQ9CjMuc2VsZWN0KHRoaXMpLGQ9M0RwLnNlbGVjdEFsbCgiZy5udi1sZWdlbmQiKS5kYXRhKFtj
XSksdj0zRGQuZW50ZXIoKS5hcHBlbj0KZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1sZWdl
bmQiKS5hcHBlbmQoImciKSxtPTNEZC5zZWxlY3QoImciKTtkLmF0dHIoPQoidHJhbnNmb3JtIiwi
dHJhbnNsYXRlKCIrdC5sZWZ0KyIsIit0LnRvcCsiKSIpO3ZhciBnPTNEbS5zZWxlY3RBbGwoIi5u
di1zZXI9CmllcyIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSx5PTNEZy5lbnRlcigpLmFw
cGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibj0Kdi1zZXJpZXMiKS5vbigibW91c2VvdmVyIixmdW5j
dGlvbihlLHQpe2wubGVnZW5kTW91c2VvdmVyKGUsdCl9KS5vbigibW91c2VvPQp1dCIsZnVuY3Rp
b24oZSx0KXtsLmxlZ2VuZE1vdXNlb3V0KGUsdCl9KS5vbigiY2xpY2siLGZ1bmN0aW9uKGUsdCl7
bC5sZWdlbmQ9CkNsaWNrKGUsdCksYSYmKGY/KGMuZm9yRWFjaChmdW5jdGlvbihlKXtlLmRpc2Fi
bGVkPTNEITB9KSxlLmRpc2FibGVkPTNEITEpOj0KKGUuZGlzYWJsZWQ9M0QhZS5kaXNhYmxlZCxj
LmV2ZXJ5KGZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVkfSkmJmMuZm9yRWFjPQpoKGZ1bmN0
aW9uKGUpe2UuZGlzYWJsZWQ9M0QhMX0pKSxsLnN0YXRlQ2hhbmdlKHtkaXNhYmxlZDpjLm1hcChm
dW5jdGlvbihlKXs9CnJldHVybiEhZS5kaXNhYmxlZH0pfSkpfSkub24oImRibGNsaWNrIixmdW5j
dGlvbihlLHQpe2wubGVnZW5kRGJsY2xpY2soZSx0KT0KLGEmJihjLmZvckVhY2goZnVuY3Rpb24o
ZSl7ZS5kaXNhYmxlZD0zRCEwfSksZS5kaXNhYmxlZD0zRCExLGwuc3RhdGVDaGFuZ2UoPQp7ZGlz
YWJsZWQ6Yy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSl9KSl9KTt5LmFwcGVu
ZCgiY2lyY2xlIikuc3Q9CnlsZSgic3Ryb2tlLXdpZHRoIiwyKS5hdHRyKCJjbGFzcyIsIm52LWxl
Z2VuZC1zeW1ib2wiKS5hdHRyKCJyIiw1KSx5LmFwcGVuZD0KKCJ0ZXh0IikuYXR0cigidGV4dC1h
bmNob3IiLCJzdGFydCIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kLXRleHQiKS5hdHRyKCJkPQp5
IiwiLjMyZW0iKS5hdHRyKCJkeCIsIjgiKSxnLmNsYXNzZWQoImRpc2FibGVkIixmdW5jdGlvbihl
KXtyZXR1cm4gZS5kaXNhYmw9CmVkfSksZy5leGl0KCkucmVtb3ZlKCksZy5zZWxlY3QoImNpcmNs
ZSIpLnN0eWxlKCJmaWxsIixmdW5jdGlvbihlLHQpe3JldHVybj0KIGUuY29sb3J8fHMoZSx0KX0p
LnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fHMoZSx0KX0pLGcu
PQpzZWxlY3QoInRleHQiKS50ZXh0KGkpO2lmKG8pe3ZhciBiPTNEW107Zy5lYWNoKGZ1bmN0aW9u
KHQsbil7dmFyIHI9M0RkMy5zZWw9CmVjdCh0aGlzKS5zZWxlY3QoInRleHQiKSxpO3RyeXtpPTNE
ci5nZXRDb21wdXRlZFRleHRMZW5ndGgoKTtpZihpPD0zRDApdGhybz0KdyBFcnJvcigpfWNhdGNo
KHMpe2k9M0RlLnV0aWxzLmNhbGNBcHByb3hUZXh0V2lkdGgocil9Yi5wdXNoKGkrMjgpfSk7dmFy
IHc9Cj0zRDAsRT0zRDAsUz0zRFtdO3doaWxlKEU8aCYmdzxiLmxlbmd0aClTW3ddPTNEYlt3XSxF
Kz0zRGJbdysrXTt3PTNEPTNEPTNEMD0KJiYodz0zRDEpO3doaWxlKEU+aCYmdz4xKXtTPTNEW10s
dy0tO2Zvcih2YXIgeD0zRDA7eDxiLmxlbmd0aDt4KyspYlt4XT4oU1t4PQold118fDApJiYoU1t4
JXddPTNEYlt4XSk7RT0zRFMucmVkdWNlKGZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBlK3R9KX12
YXIgVD0KPTNEW107Zm9yKHZhciBOPTNEMCxDPTNEMDtOPHc7TisrKVRbTl09M0RDLEMrPTNEU1tO
XTtnLmF0dHIoInRyYW5zZm9ybSIsZnVuPQpjdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitU
W3Qld10rIiwiKyg1K01hdGguZmxvb3IodC93KSoyMCkrIikifSksdT9tLmE9CnR0cigidHJhbnNm
b3JtIiwidHJhbnNsYXRlKCIrKG4tdC5yaWdodC1FKSsiLCIrdC50b3ArIikiKTptLmF0dHIoInRy
YW5zZm9ybT0KIiwidHJhbnNsYXRlKDAsIit0LnRvcCsiKSIpLHI9M0R0LnRvcCt0LmJvdHRvbStN
YXRoLmNlaWwoYi5sZW5ndGgvdykqMjB9ZWxzPQple3ZhciBrPTNENSxMPTNENSxBPTNEMCxPO2cu
YXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHIpe3ZhciBpPTNEZDMuc2VsZWM9CnQodGhpcyku
c2VsZWN0KCJ0ZXh0Iikubm9kZSgpLmdldENvbXB1dGVkVGV4dExlbmd0aCgpKzI4O3JldHVybiBP
PTNETCxuPHQubD0KZWZ0K3QucmlnaHQrTytpJiYoTD0zRE89M0Q1LGsrPTNEMjApLEwrPTNEaSxM
PkEmJihBPTNETCksInRyYW5zbGF0ZSgiK08rIiwiPQoraysiKSJ9KSxtLmF0dHIoInRyYW5zZm9y
bSIsInRyYW5zbGF0ZSgiKyhuLXQucmlnaHQtQSkrIiwiK3QudG9wKyIpIikscj0zRHQ9Ci50b3Ar
dC5ib3R0b20raysxNX19KSxjfXZhciB0PTNEe3RvcDo1LHJpZ2h0OjAsYm90dG9tOjUsbGVmdDow
fSxuPTNENDAwLHI9Cj0zRDIwLGk9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5rZXl9LHM9M0RlLnV0
aWxzLmRlZmF1bHRDb2xvcigpLG89M0QhMCx1PTNEIT0KMCxhPTNEITAsZj0zRCExLGw9M0RkMy5k
aXNwYXRjaCgibGVnZW5kQ2xpY2siLCJsZWdlbmREYmxjbGljayIsImxlZ2VuZE1vdXNlPQpvdmVy
IiwibGVnZW5kTW91c2VvdXQiLCJzdGF0ZUNoYW5nZSIpO3JldHVybiBjLmRpc3BhdGNoPTNEbCxj
Lm9wdGlvbnM9M0RlLnU9CnRpbHMub3B0aW9uc0Z1bmMuYmluZChjKSxjLm1hcmdpbj0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0Lj0KdG9wPTNEdHlwZW9mIGUudG9wIT0z
RCJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QiPQp1
bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0Qi
dW5kZWZpbmVkIj9lLmJvdHQ9Cm9tOnQuYm90dG9tLHQubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNE
InVuZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxjKTp0fSxjLndpZD0KdGg9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGUsYyk6bn0sYy5oZWlnaHQ9M0RmdW5jdGlvbihl
PQope3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZSxjKTpyfSxjLmtleT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHM9Ci5sZW5ndGg/KGk9M0RlLGMpOml9LGMuY29sb3I9M0RmdW5j
dGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0zRGUudT0KdGlscy5nZXRDb2xvcih0
KSxjKTpzfSxjLmFsaWduPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89
M0RlPQosYyk6b30sYy5yaWdodEFsaWduPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHU9M0RlLGMpOnV9LGMudXA9CmRhdGVTdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhhPTNEZSxjKTphfSxjLnJhZGlvQnV0dG9uTT0Kb2RlPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLGMpOmZ9LGN9LGUubW9kZWxzLmxp
bmU9M0RmPQp1bmN0aW9uKCl7ZnVuY3Rpb24gbShnKXtyZXR1cm4gZy5lYWNoKGZ1bmN0aW9uKG0p
e3ZhciBnPTNEci1uLmxlZnQtbi5yaWdodCw9CmI9M0RpLW4udG9wLW4uYm90dG9tLHc9M0RkMy5z
ZWxlY3QodGhpcyk7Yz0zRHQueFNjYWxlKCksaD0zRHQueVNjYWxlKCksZD0zRD0KZHx8Yyx2PTNE
dnx8aDt2YXIgRT0zRHcuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtbGluZSIpLmRhdGEoW21dKSxT
PTNERS5lbnRlPQpyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYt
bGluZSIpLFQ9M0RTLmFwcGVuZCgiZGVmcyIpLE49Cj0zRFMuYXBwZW5kKCJnIiksQz0zREUuc2Vs
ZWN0KCJnIik7Ti5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWdyb3VwcyIpLD0KTi5hcHBl
bmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXNjYXR0ZXJXcmFwIiksRS5hdHRyKCJ0cmFuc2Zvcm0i
LCJ0cmFuc2xhdGUoPQoiK24ubGVmdCsiLCIrbi50b3ArIikiKSx0LndpZHRoKGcpLmhlaWdodChi
KTt2YXIgaz0zREUuc2VsZWN0KCIubnYtc2NhdHRlclc9CnJhcCIpO2suY2FsbCh0KSxULmFwcGVu
ZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIsIm52LWVkZ2UtY2xpcC0iK3QuaWQoKSkuYXBwZT0KbmQo
InJlY3QiKSxFLnNlbGVjdCgiI252LWVkZ2UtY2xpcC0iK3QuaWQoKSsiIHJlY3QiKS5hdHRyKCJ3
aWR0aCIsZykuYXR0cigiPQpoZWlnaHQiLGI+MD9iOjApLEMuYXR0cigiY2xpcC1wYXRoIixsPyJ1
cmwoI252LWVkZ2UtY2xpcC0iK3QuaWQoKSsiKSI6IiIpLGs9Ci5hdHRyKCJjbGlwLXBhdGgiLGw/
InVybCgjbnYtZWRnZS1jbGlwLSIrdC5pZCgpKyIpIjoiIik7dmFyIEw9M0RFLnNlbGVjdCgiLj0K
bnYtZ3JvdXBzIikuc2VsZWN0QWxsKCIubnYtZ3JvdXAiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVy
biBlfSxmdW5jdGlvbihlKXtyPQpldHVybiBlLmtleX0pO0wuZW50ZXIoKS5hcHBlbmQoImciKS5z
dHlsZSgic3Ryb2tlLW9wYWNpdHkiLDFlLTYpLnN0eWxlKCJmaWw9Cmwtb3BhY2l0eSIsMWUtNiks
TC5leGl0KCkucmVtb3ZlKCksTC5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4ibnYt
Zz0Kcm91cCBudi1zZXJpZXMtIit0fSkuY2xhc3NlZCgiaG92ZXIiLGZ1bmN0aW9uKGUpe3JldHVy
biBlLmhvdmVyfSkuc3R5bGUoImZpPQpsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcyhlLHQpfSku
c3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcyhlLHQ9Cil9KSxMLnN0eWxlKCJz
dHJva2Utb3BhY2l0eSIsMSkuc3R5bGUoImZpbGwtb3BhY2l0eSIsLjUpO3ZhciBBPTNETC5zZWxl
Y3RBbD0KbCgicGF0aC5udi1hcmVhIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZihlKT9bZV06
W119KTtBLmVudGVyKCkuYXBwZW5kKCJwPQphdGgiKS5hdHRyKCJjbGFzcyIsIm52LWFyZWEiKS5h
dHRyKCJkIixmdW5jdGlvbih0KXtyZXR1cm4gZDMuc3ZnLmFyZWEoKS5pbnQ9CmVycG9sYXRlKHAp
LmRlZmluZWQoYSkueChmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhkKG8o
dCxuKSkpfT0KKS55MChmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyh2KHUo
dCxuKSkpfSkueTEoZnVuY3Rpb24oZSx0KXtyPQpldHVybiB2KGguZG9tYWluKClbMF08PTNEMD9o
LmRvbWFpbigpWzFdPj0zRDA/MDpoLmRvbWFpbigpWzFdOmguZG9tYWluKClbMF09Cil9KS5hcHBs
eSh0aGlzLFt0LnZhbHVlc10pfSksTC5leGl0KCkuc2VsZWN0QWxsKCJwYXRoLm52LWFyZWEiKS5y
ZW1vdmUoKSxBLj0KYXR0cigiZCIsZnVuY3Rpb24odCl7cmV0dXJuIGQzLnN2Zy5hcmVhKCkuaW50
ZXJwb2xhdGUocCkuZGVmaW5lZChhKS54KGZ1bmN0PQppb24odCxuKXtyZXR1cm4gZS51dGlscy5O
YU50b1plcm8oYyhvKHQsbikpKX0pLnkwKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXQ9Cmlscy5O
YU50b1plcm8oaCh1KHQsbikpKX0pLnkxKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGgoaC5kb21haW4o
KVswXTw9M0QwP2guZD0Kb21haW4oKVsxXT49M0QwPzA6aC5kb21haW4oKVsxXTpoLmRvbWFpbigp
WzBdKX0pLmFwcGx5KHRoaXMsW3QudmFsdWVzXSl9KTt2PQphciBPPTNETC5zZWxlY3RBbGwoInBh
dGgubnYtbGluZSIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuW2UudmFsdWVzXX0pO08uZW49CnRl
cigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwibnYtbGluZSIpLmF0dHIoImQiLGQzLnN2
Zy5saW5lKCkuaW50ZXJwbz0KbGF0ZShwKS5kZWZpbmVkKGEpLngoZnVuY3Rpb24odCxuKXtyZXR1
cm4gZS51dGlscy5OYU50b1plcm8oZChvKHQsbikpKX0pLnkoPQpmdW5jdGlvbih0LG4pe3JldHVy
biBlLnV0aWxzLk5hTnRvWmVybyh2KHUodCxuKSkpfSkpLE8uYXR0cigiZCIsZDMuc3ZnLmxpbmU9
CigpLmludGVycG9sYXRlKHApLmRlZmluZWQoYSkueChmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0
aWxzLk5hTnRvWmVybyhjKG8odD0KLG4pKSl9KS55KGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRp
bHMuTmFOdG9aZXJvKGgodSh0LG4pKSl9KSksZD0zRGMuY29weSgpPQosdj0zRGguY29weSgpfSks
bX12YXIgdD0zRGUubW9kZWxzLnNjYXR0ZXIoKSxuPTNEe3RvcDowLHJpZ2h0OjAsYm90dG9tOjAs
bGU9CmZ0OjB9LHI9M0Q5NjAsaT0zRDUwMCxzPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxvPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGUueD0KfSx1PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0sYT0z
RGZ1bmN0aW9uKGUsdCl7cmV0dXJuIWlzTmFOKHUoZSx0KSkmJnUoZSx0PQopIT0zRD0zRG51bGx9
LGY9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5hcmVhfSxsPTNEITEsYyxoLHA9M0QibGluZWFyIjt0
LnNpemU9CigxNikuc2l6ZURvbWFpbihbMTYsMjU2XSk7dmFyIGQsdjtyZXR1cm4gbS5kaXNwYXRj
aD0zRHQuZGlzcGF0Y2gsbS5zY2F0dGVyPQo9M0R0LGQzLnJlYmluZChtLHQsImlkIiwiaW50ZXJh
Y3RpdmUiLCJzaXplIiwieFNjYWxlIiwieVNjYWxlIiwielNjYWxlIiwieEQ9Cm9tYWluIiwieURv
bWFpbiIsInhSYW5nZSIsInlSYW5nZSIsInNpemVEb21haW4iLCJmb3JjZVgiLCJmb3JjZVkiLCJm
b3JjZVNpej0KZSIsImNsaXBWb3Jvbm9pIiwidXNlVm9yb25vaSIsImNsaXBSYWRpdXMiLCJwYWRE
YXRhIiwiaGlnaGxpZ2h0UG9pbnQiLCJjbGVhPQpySGlnaGxpZ2h0cyIpLG0ub3B0aW9ucz0zRGUu
dXRpbHMub3B0aW9uc0Z1bmMuYmluZChtKSxtLm1hcmdpbj0zRGZ1bmN0aW9uKGU9Cil7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KG4udG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2Uu
dG9wOm4udG9wLD0Kbi5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2Uucmln
aHQ6bi5yaWdodCxuLmJvdHRvbT0zRHR5cGVvZiBlPQouYm90dG9tIT0zRCJ1bmRlZmluZWQiP2Uu
Ym90dG9tOm4uYm90dG9tLG4ubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW49CmVkIj9l
LmxlZnQ6bi5sZWZ0LG0pOm59LG0ud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8ocj0zRD0KZSxtKTpyfSxtLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhpPTNEZSxtKTppfSxtLng9M0RmPQp1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhvPTNEZSx0LngoZSksbSk6b30sbS55PTNEZnVuY3Rpb24oZSl7cmU9CnR1
cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsdC55KGUpLG0pOnV9LG0uY2xpcEVkZ2U9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYT0Kcmd1bWVudHMubGVuZ3RoPyhsPTNEZSxtKTpsfSxtLmNvbG9yPTNE
ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/PQoocz0zRGUudXRpbHMuZ2V0Q29s
b3IobiksdC5jb2xvcihzKSxtKTpzfSxtLmludGVycG9sYXRlPTNEZnVuY3Rpb24oZSl7cmV0dXI9
Cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsbSk6cH0sbS5kZWZpbmVkPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZT0Kbmd0aD8oYT0zRGUsbSk6YX0sbS5pc0FyZWE9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGQzLmZ1PQpuY3RvcihlKSxtKTpmfSxt
fSxlLm1vZGVscy5saW5lQ2hhcnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIE4obSl7cmV0dXJuIG0u
ZWE9CmNoKGZ1bmN0aW9uKG0pe3ZhciB4PTNEZDMuc2VsZWN0KHRoaXMpLEM9M0R0aGlzLGs9M0Qo
YXx8cGFyc2VJbnQoeC5zdHlsZSgidz0KaWR0aCIpKXx8OTYwKS1vLmxlZnQtby5yaWdodCxMPTNE
KGZ8fHBhcnNlSW50KHguc3R5bGUoImhlaWdodCIpKXx8NDAwKS1vLnRvPQpwLW8uYm90dG9tO04u
dXBkYXRlPTNEZnVuY3Rpb24oKXt4LmNhbGwoTil9LE4uY29udGFpbmVyPTNEdGhpcyxiLmRpc2Fi
bGVkPQo9M0RtLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlzYWJsZWR9KTtpZighdyl7dmFy
IEE7dz0zRHt9O2ZvcihBIGluIGIpYls9CkFdaW5zdGFuY2VvZiBBcnJheT93W0FdPTNEYltBXS5z
bGljZSgwKTp3W0FdPTNEYltBXX1pZighbXx8IW0ubGVuZ3RofHwhbS5maT0KbHRlcihmdW5jdGlv
bihlKXtyZXR1cm4gZS52YWx1ZXMubGVuZ3RofSkubGVuZ3RoKXt2YXIgTz0zRHguc2VsZWN0QWxs
KCIubnYtPQpub0RhdGEiKS5kYXRhKFtFXSk7cmV0dXJuIE8uZW50ZXIoKS5hcHBlbmQoInRleHQi
KS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtbm89CkRhdGEiKS5hdHRyKCJkeSIsIi0uN2VtIikuc3R5
bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiksTy5hdHRyKCJ4IixvLmxlZnQraz0KLzIpLmF0dHIo
InkiLG8udG9wK0wvMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLE59eC5zZWxlY3RBbGwo
Ii5udi1ub0RhPQp0YSIpLnJlbW92ZSgpLGc9M0R0LnhTY2FsZSgpLHk9M0R0LnlTY2FsZSgpO3Zh
ciBNPTNEeC5zZWxlY3RBbGwoImcubnYtd3JhcC49Cm52LWxpbmVDaGFydCIpLmRhdGEoW21dKSxf
PTNETS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cj0KYXAgbnYt
bGluZUNoYXJ0IikuYXBwZW5kKCJnIiksRD0zRE0uc2VsZWN0KCJnIik7Xy5hcHBlbmQoInJlY3Qi
KS5zdHlsZSgib3BhPQpjaXR5IiwwKSxfLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBu
di1heGlzIiksXy5hcHBlbmQoImciKS5hdHRyKCJjbGE9CnNzIiwibnYteSBudi1heGlzIiksXy5h
cHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxpbmVzV3JhcCIpLF8uYXBwZW5kKCJnIj0KKS5h
dHRyKCJjbGFzcyIsIm52LWxlZ2VuZFdyYXAiKSxfLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwi
bnYtaW50ZXJhY3RpdmUiPQopLEQuc2VsZWN0KCJyZWN0IikuYXR0cigid2lkdGgiLGspLmF0dHIo
ImhlaWdodCIsTD4wP0w6MCksbCYmKGkud2lkdGgoayksRC49CnNlbGVjdCgiLm52LWxlZ2VuZFdy
YXAiKS5kYXR1bShtKS5jYWxsKGkpLG8udG9wIT0zRGkuaGVpZ2h0KCkmJihvLnRvcD0zRGkuaD0K
ZWlnaHQoKSxMPTNEKGZ8fHBhcnNlSW50KHguc3R5bGUoImhlaWdodCIpKXx8NDAwKS1vLnRvcC1v
LmJvdHRvbSksTS5zZWxlY3QoPQoiLm52LWxlZ2VuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0
cmFuc2xhdGUoMCwiKyAtby50b3ArIikiKSksTS5hdHRyKCJ0cmE9Cm5zZm9ybSIsInRyYW5zbGF0
ZSgiK28ubGVmdCsiLCIrby50b3ArIikiKSxwJiZELnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmF0
dD0KcigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIraysiLDApIiksZCYmKHMud2lkdGgoaykuaGVp
Z2h0KEwpLm1hcmdpbih7bGVmdDpvPQoubGVmdCx0b3A6by50b3B9KS5zdmdDb250YWluZXIoeCku
eFNjYWxlKGcpLE0uc2VsZWN0KCIubnYtaW50ZXJhY3RpdmUiKS5jYWw9CmwocykpLHQud2lkdGgo
aykuaGVpZ2h0KEwpLmNvbG9yKG0ubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fHUo
ZSx0KT0KfSkuZmlsdGVyKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIW1bdF0uZGlzYWJsZWR9KSk7dmFy
IFA9M0RELnNlbGVjdCgiLm52LWxpbmVzPQpXcmFwIikuZGF0dW0obS5maWx0ZXIoZnVuY3Rpb24o
ZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSk7UC5jYWxsKHQpLGMmJihuLnNjYWw9CmUoZykudGlja3Mo
ay8xMDApLnRpY2tTaXplKC1MLDApLEQuc2VsZWN0KCIubnYteC5udi1heGlzIikuYXR0cigidHJh
bnNmb3JtIj0KLCJ0cmFuc2xhdGUoMCwiK3kucmFuZ2UoKVswXSsiKSIpLEQuc2VsZWN0KCIubnYt
eC5udi1heGlzIikuY2FsbChuKSksaCYmKHIuPQpzY2FsZSh5KS50aWNrcyhMLzM2KS50aWNrU2l6
ZSgtaywwKSxELnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmNhbGwocikpLGkuZGk9CnNwYXRjaC5v
bigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe2I9M0RlLFMuc3RhdGVDaGFuZ2UoYiksTi51cGRh
dGUoKX0pLHMuZD0KaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlbW92ZSIsZnVuY3Rpb24oaSl7dC5j
bGVhckhpZ2hsaWdodHMoKTt2YXIgYSxmLGwsYz0KPTNEW107bS5maWx0ZXIoZnVuY3Rpb24oZSx0
KXtyZXR1cm4gZS5zZXJpZXNJbmRleD0zRHQsIWUuZGlzYWJsZWR9KS5mb3JFYWNoPQooZnVuY3Rp
b24obixyKXtmPTNEZS5pbnRlcmFjdGl2ZUJpc2VjdChuLnZhbHVlcyxpLnBvaW50WFZhbHVlLE4u
eCgpKSx0LmhpZ2g9CmxpZ2h0UG9pbnQocixmLCEwKTt2YXIgcz0zRG4udmFsdWVzW2ZdO2lmKHR5
cGVvZiBzPTNEPTNEInVuZGVmaW5lZCIpcmV0dXJuOz0KdHlwZW9mIGE9M0Q9M0QidW5kZWZpbmVk
IiYmKGE9M0RzKSx0eXBlb2YgbD0zRD0zRCJ1bmRlZmluZWQiJiYobD0zRE4ueFNjYWxlPQooKShO
LngoKShzLGYpKSksYy5wdXNoKHtrZXk6bi5rZXksdmFsdWU6Ti55KCkocyxmKSxjb2xvcjp1KG4s
bi5zZXJpZXNJbmRleCk9Cn0pfSk7aWYoYy5sZW5ndGg+Mil7dmFyIGg9M0ROLnlTY2FsZSgpLmlu
dmVydChpLm1vdXNlWSkscD0zRE1hdGguYWJzKE4ueVNjYT0KbGUoKS5kb21haW4oKVswXS1OLnlT
Y2FsZSgpLmRvbWFpbigpWzFdKSxkPTNELjAzKnAsZz0zRGUubmVhcmVzdFZhbHVlSW5kZXgoPQpj
Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZX0pLGgsZCk7ZyE9M0Q9M0RudWxsJiYoY1tn
XS5oaWdobGlnaHQ9M0QhMCk9Cn12YXIgeT0zRG4udGlja0Zvcm1hdCgpKE4ueCgpKGEsZikpO3Mu
dG9vbHRpcC5wb3NpdGlvbih7bGVmdDpsK28ubGVmdCx0b3A6aT0KLm1vdXNlWStvLnRvcH0pLmNo
YXJ0Q29udGFpbmVyKEMucGFyZW50Tm9kZSkuZW5hYmxlZCh2KS52YWx1ZUZvcm1hdHRlcihmdW5j
PQp0aW9uKGUsdCl7cmV0dXJuIHIudGlja0Zvcm1hdCgpKGUpfSkuZGF0YSh7dmFsdWU6eSxzZXJp
ZXM6Y30pKCkscy5yZW5kZXJHdWk9CmRlTGluZShsKX0pLHMuZGlzcGF0Y2gub24oImVsZW1lbnRN
b3VzZW91dCIsZnVuY3Rpb24oZSl7Uy50b29sdGlwSGlkZSgpLHQuYz0KbGVhckhpZ2hsaWdodHMo
KX0pLFMub24oInRvb2x0aXBTaG93IixmdW5jdGlvbihlKXt2JiZUKGUsQy5wYXJlbnROb2RlKX0p
LFMuPQpvbigiY2hhbmdlU3RhdGUiLGZ1bmN0aW9uKGUpe3R5cGVvZiBlLmRpc2FibGVkIT0zRCJ1
bmRlZmluZWQiJiZtLmxlbmd0aD0zRD0KPTNEPTNEZS5kaXNhYmxlZC5sZW5ndGgmJihtLmZvckVh
Y2goZnVuY3Rpb24odCxuKXt0LmRpc2FibGVkPTNEZS5kaXNhYmxlZFtuPQpdfSksYi5kaXNhYmxl
ZD0zRGUuZGlzYWJsZWQpLE4udXBkYXRlKCl9KX0pLE59dmFyIHQ9M0RlLm1vZGVscy5saW5lKCks
bj0zRGU9Ci5tb2RlbHMuYXhpcygpLHI9M0RlLm1vZGVscy5heGlzKCksaT0zRGUubW9kZWxzLmxl
Z2VuZCgpLHM9M0RlLmludGVyYWN0aXZlRz0KdWlkZWxpbmUoKSxvPTNEe3RvcDozMCxyaWdodDoy
MCxib3R0b206NTAsbGVmdDo2MH0sdT0zRGUudXRpbHMuZGVmYXVsdENvbG9yPQooKSxhPTNEbnVs
bCxmPTNEbnVsbCxsPTNEITAsYz0zRCEwLGg9M0QhMCxwPTNEITEsZD0zRCExLHY9M0QhMCxtPTNE
ZnVuY3Rpb249CihlLHQsbixyLGkpe3JldHVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIrbisiIGF0
ICIrdCsiPC9wPiJ9LGcseSxiPTNEe30sdz0zRD0KbnVsbCxFPTNEIk5vIERhdGEgQXZhaWxhYmxl
LiIsUz0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwiPQpzdGF0ZUNo
YW5nZSIsImNoYW5nZVN0YXRlIikseD0zRDA7bi5vcmllbnQoImJvdHRvbSIpLnRpY2tQYWRkaW5n
KDcpLHIub3JpZW49CnQocD8icmlnaHQiOiJsZWZ0Iik7dmFyIFQ9M0RmdW5jdGlvbihpLHMpe3Zh
ciBvPTNEaS5wb3NbMF0rKHMub2Zmc2V0TGVmdHx8MD0KKSx1PTNEaS5wb3NbMV0rKHMub2Zmc2V0
VG9wfHwwKSxhPTNEbi50aWNrRm9ybWF0KCkodC54KCkoaS5wb2ludCxpLnBvaW50SW5kPQpleCkp
LGY9M0RyLnRpY2tGb3JtYXQoKSh0LnkoKShpLnBvaW50LGkucG9pbnRJbmRleCkpLGw9M0RtKGku
c2VyaWVzLmtleSxhLGY9CixpLE4pO2UudG9vbHRpcC5zaG93KFtvLHVdLGwsbnVsbCxudWxsLHMp
fTtyZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdT0Kc2VvdmVyLnRvb2x0aXAiLGZ1bmN0
aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK28ubGVmdCxlLnBvc1sxXStvLnRvcF0sUy50b29sPQp0
aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0
aW9uKGUpe1MudG9vbHRpcEg9CmlkZShlKX0pLFMub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbigp
e3YmJmUudG9vbHRpcC5jbGVhbnVwKCl9KSxOLmRpc3BhdGNoPQo9M0RTLE4ubGluZXM9M0R0LE4u
bGVnZW5kPTNEaSxOLnhBeGlzPTNEbixOLnlBeGlzPTNEcixOLmludGVyYWN0aXZlTGF5ZXI9M0Q9
CnMsZDMucmViaW5kKE4sdCwiZGVmaW5lZCIsImlzQXJlYSIsIngiLCJ5Iiwic2l6ZSIsInhTY2Fs
ZSIsInlTY2FsZSIsInhEb21haT0KbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJmb3Jj
ZVgiLCJmb3JjZVkiLCJpbnRlcmFjdGl2ZSIsImNsaXBFZGdlIiwiPQpjbGlwVm9yb25vaSIsInVz
ZVZvcm9ub2kiLCJpZCIsImludGVycG9sYXRlIiksTi5vcHRpb25zPTNEZS51dGlscy5vcHRpb25z
RnU9Cm5jLmJpbmQoTiksTi5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oby50b3A9M0R0eXBlb2YgZT0KLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDpvLnRvcCxv
LnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yPQppZ2h0Om8ucmlnaHQs
by5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206by5ib3R0
b20sby49CmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDpvLmxlZnQs
Tik6b30sTi53aWR0aD0zRGZ1bmN0aW9uKD0KZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9
M0RlLE4pOmF9LE4uaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtPQplbnRzLmxlbmd0
aD8oZj0zRGUsTik6Zn0sTi5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyh1PQo9M0RlLnV0aWxzLmdldENvbG9yKHQpLGkuY29sb3IodSksTik6dX0sTi5zaG93TGVn
ZW5kPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGE9CnJndW1lbnRzLmxlbmd0aD8obD0zRGUsTik6bH0s
Ti5zaG93WEF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbj0KZ3RoPyhjPTNE
ZSxOKTpjfSxOLnNob3dZQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhoPTNEZSxOPQopOmh9LE4ucmlnaHRBbGlnbllBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHA9M0RlLHIub3JpZW49CnQoZT8icmlnaHQiOiJsZWZ0IiksTik6cH0s
Ti51c2VJbnRlcmFjdGl2ZUd1aWRlbGluZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcj0KZ3VtZW50
cy5sZW5ndGg/KGQ9M0RlLGU9M0Q9M0Q9M0QhMCYmKE4uaW50ZXJhY3RpdmUoITEpLE4udXNlVm9y
b25vaSghMSkpLE4pPQo6ZH0sTi50b29sdGlwcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyh2PTNEZSxOKTp2fSxOLnRvb2x0aXA9CkNvbnRlbnQ9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0zRGUsTik6bX0sTi5zdGF0ZT0zRGZ1bmN0aT0Kb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9M0RlLE4pOmJ9LE4uZGVmYXVsdFN0YXRlPTNE
ZnVuY3Rpb24oZSl7cmV0PQp1cm4gYXJndW1lbnRzLmxlbmd0aD8odz0zRGUsTik6d30sTi5ub0Rh
dGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmw9CmVuZ3RoPyhFPTNEZSxOKTpFfSxO
LnRyYW5zaXRpb25EdXJhdGlvbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZz0K
dGg/KHg9M0RlLE4pOnh9LE59LGUubW9kZWxzLmxpbmVQbHVzQmFyQ2hhcnQ9M0RmdW5jdGlvbigp
e2Z1bmN0aW9uIFQoZSl7cmV0PQp1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBsPTNEZDMuc2Vs
ZWN0KHRoaXMpLGM9M0R0aGlzLHY9M0QoYXx8cGFyc2VJbnQobC49CnN0eWxlKCJ3aWR0aCIpKXx8
OTYwKS11LmxlZnQtdS5yaWdodCxOPTNEKGZ8fHBhcnNlSW50KGwuc3R5bGUoImhlaWdodCIpKXx8
ND0KMDApLXUudG9wLXUuYm90dG9tO1QudXBkYXRlPTNEZnVuY3Rpb24oKXtsLmNhbGwoVCl9LGIu
ZGlzYWJsZWQ9M0RlLm1hcChmdW5jPQp0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pO2lmKCF3
KXt2YXIgQzt3PTNEe307Zm9yKEMgaW4gYiliW0NdaW5zdGFuY2VvZiA9CkFycmF5P3dbQ109M0Ri
W0NdLnNsaWNlKDApOndbQ109M0RiW0NdfWlmKCFlfHwhZS5sZW5ndGh8fCFlLmZpbHRlcihmdW5j
dGlvbj0KKGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgpe3ZhciBrPTNEbC5zZWxl
Y3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhPQooW0VdKTtyZXR1cm4gay5lbnRlcigpLmFwcGVuZCgi
dGV4dCIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRyKCI9CmR5IiwiLS43ZW0i
KS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxrLmF0dHIoIngiLHUubGVmdCt2LzIpLmF0
dHIoInkiLD0KdS50b3ArTi8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksVH1sLnNlbGVj
dEFsbCgiLm52LW5vRGF0YSIpLnJlbW92ZSgpPQo7dmFyIEw9M0RlLmZpbHRlcihmdW5jdGlvbihl
KXtyZXR1cm4hZS5kaXNhYmxlZCYmZS5iYXJ9KSxBPTNEZS5maWx0ZXIoZnVuY3Q9CmlvbihlKXty
ZXR1cm4hZS5iYXJ9KTttPTNEQS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9
KS5sZW5ndGgmJj0KQS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KVswXS52
YWx1ZXMubGVuZ3RoP3QueFNjYWxlKCk6bi54U2NhPQpsZSgpLGc9M0RuLnlTY2FsZSgpLHk9M0R0
LnlTY2FsZSgpO3ZhciBPPTNEZDMuc2VsZWN0KHRoaXMpLnNlbGVjdEFsbCgiZy5udi09CndyYXAu
bnYtbGluZVBsdXNCYXIiKS5kYXRhKFtlXSksTT0zRE8uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRy
KCJjbGFzcyIsIm52ZD0KMyBudi13cmFwIG52LWxpbmVQbHVzQmFyIikuYXBwZW5kKCJnIiksXz0z
RE8uc2VsZWN0KCJnIik7TS5hcHBlbmQoImciKS5hdHRyPQooImNsYXNzIiwibnYteCBudi1heGlz
IiksTS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkxIG52LWF4aXMiKSxNLmFwcGU9Cm5k
KCJnIikuYXR0cigiY2xhc3MiLCJudi15MiBudi1heGlzIiksTS5hcHBlbmQoImciKS5hdHRyKCJj
bGFzcyIsIm52LWJhcnNXcj0KYXAiKSxNLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGlu
ZXNXcmFwIiksTS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsPQoibnYtbGVnZW5kV3JhcCIpLHAm
JihvLndpZHRoKHYvMiksXy5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuZGF0dW0oZS5tYXAoZnU9
Cm5jdGlvbihlKXtyZXR1cm4gZS5vcmlnaW5hbEtleT0zRGUub3JpZ2luYWxLZXk9M0Q9M0Q9M0R1
bmRlZmluZWQ/ZS5rZXk6ZS5vcj0KaWdpbmFsS2V5LGUua2V5PTNEZS5vcmlnaW5hbEtleSsoZS5i
YXI/IiAobGVmdCBheGlzKSI6IiAocmlnaHQgYXhpcykiKSxlfSkpPQouY2FsbChvKSx1LnRvcCE9
M0RvLmhlaWdodCgpJiYodS50b3A9M0RvLmhlaWdodCgpLE49M0QoZnx8cGFyc2VJbnQobC5zdHls
ZSg9CiJoZWlnaHQiKSl8fDQwMCktdS50b3AtdS5ib3R0b20pLF8uc2VsZWN0KCIubnYtbGVnZW5k
V3JhcCIpLmF0dHIoInRyYW5zZm9ybT0KIiwidHJhbnNsYXRlKCIrdi8yKyIsIisgLXUudG9wKyIp
IikpLE8uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdS5sZWZ0PQorIiwiK3UudG9wKyIp
IiksdC53aWR0aCh2KS5oZWlnaHQoTikuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4g
ZS5jb2w9Cm9yfHxoKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNh
YmxlZCYmIWVbbl0uYmFyfSkpLG4ud2lkdD0KaCh2KS5oZWlnaHQoTikuY29sb3IoZS5tYXAoZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8aChlLHQpfSkuZmlsdGVyKGZ1PQpuY3Rpb24odCxu
KXtyZXR1cm4hZVtuXS5kaXNhYmxlZCYmZVtuXS5iYXJ9KSk7dmFyIEQ9M0RfLnNlbGVjdCgiLm52
LWJhcnNXcmE9CnAiKS5kYXR1bShMLmxlbmd0aD9MOlt7dmFsdWVzOltdfV0pLFA9M0RfLnNlbGVj
dCgiLm52LWxpbmVzV3JhcCIpLmRhdHVtKEFbMD0KXSYmIUFbMF0uZGlzYWJsZWQ/QTpbe3ZhbHVl
czpbXX1dKTtkMy50cmFuc2l0aW9uKEQpLmNhbGwobiksZDMudHJhbnNpdGlvbihQPQopLmNhbGwo
dCksci5zY2FsZShtKS50aWNrcyh2LzEwMCkudGlja1NpemUoLU4sMCksXy5zZWxlY3QoIi5udi14
Lm52LWF4aXMiKS49CmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrZy5yYW5nZSgpWzBd
KyIpIiksZDMudHJhbnNpdGlvbihfLnNlbGVjdCgiLj0KbnYteC5udi1heGlzIikpLmNhbGwociks
aS5zY2FsZShnKS50aWNrcyhOLzM2KS50aWNrU2l6ZSgtdiwwKSxkMy50cmFuc2l0aW9uPQooXy5z
ZWxlY3QoIi5udi15MS5udi1heGlzIikpLnN0eWxlKCJvcGFjaXR5IixMLmxlbmd0aD8xOjApLmNh
bGwoaSkscy5zY2FsZSg9CnkpLnRpY2tzKE4vMzYpLnRpY2tTaXplKEwubGVuZ3RoPzA6LXYsMCks
Xy5zZWxlY3QoIi5udi15Mi5udi1heGlzIikuc3R5bGUoIj0Kb3BhY2l0eSIsQS5sZW5ndGg/MTow
KS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit2KyIsMCkiKSxkMy50cmFuc2l0aW9uPQoo
Xy5zZWxlY3QoIi5udi15Mi5udi1heGlzIikpLmNhbGwocyksby5kaXNwYXRjaC5vbigic3RhdGVD
aGFuZ2UiLGZ1bmN0aW9uKGU9Cil7Yj0zRGUsUy5zdGF0ZUNoYW5nZShiKSxULnVwZGF0ZSgpfSks
Uy5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe2QmJngoZT0KLGMucGFyZW50Tm9kZSl9KSxT
Lm9uKCJjaGFuZ2VTdGF0ZSIsZnVuY3Rpb24odCl7dHlwZW9mIHQuZGlzYWJsZWQhPTNEInVuZGVm
PQppbmVkIiYmKGUuZm9yRWFjaChmdW5jdGlvbihlLG4pe2UuZGlzYWJsZWQ9M0R0LmRpc2FibGVk
W25dfSksYi5kaXNhYmxlZD0zRHQ9Ci5kaXNhYmxlZCksVC51cGRhdGUoKX0pfSksVH12YXIgdD0z
RGUubW9kZWxzLmxpbmUoKSxuPTNEZS5tb2RlbHMuaGlzdG9yaWNhbD0KQmFyKCkscj0zRGUubW9k
ZWxzLmF4aXMoKSxpPTNEZS5tb2RlbHMuYXhpcygpLHM9M0RlLm1vZGVscy5heGlzKCksbz0zRGUu
bW9kPQplbHMubGVnZW5kKCksdT0zRHt0b3A6MzAscmlnaHQ6NjAsYm90dG9tOjUwLGxlZnQ6NjB9
LGE9M0RudWxsLGY9M0RudWxsLGw9M0Q9CmZ1bmN0aW9uKGUpe3JldHVybiBlLnh9LGM9M0RmdW5j
dGlvbihlKXtyZXR1cm4gZS55fSxoPTNEZS51dGlscy5kZWZhdWx0Q29sbz0KcigpLHA9M0QhMCxk
PTNEITAsdj0zRGZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIjxoMz4iK2UrIjwvaDM+IisiPHA+
IituKyIgPQphdCAiK3QrIjwvcD4ifSxtLGcseSxiPTNEe30sdz0zRG51bGwsRT0zRCJObyBEYXRh
IEF2YWlsYWJsZS4iLFM9M0RkMy5kaXNwYXQ9CmNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRl
Iiwic3RhdGVDaGFuZ2UiLCJjaGFuZ2VTdGF0ZSIpO24ucGFkRGF0YSghMCksdD0KLmNsaXBFZGdl
KCExKS5wYWREYXRhKCEwKSxyLm9yaWVudCgiYm90dG9tIikudGlja1BhZGRpbmcoNykuaGlnaGxp
Z2h0WmVybyghPQoxKSxpLm9yaWVudCgibGVmdCIpLHMub3JpZW50KCJyaWdodCIpO3ZhciB4PTNE
ZnVuY3Rpb24obixvKXt2YXIgdT0zRG4ucG9zWzA9Cl0rKG8ub2Zmc2V0TGVmdHx8MCksYT0zRG4u
cG9zWzFdKyhvLm9mZnNldFRvcHx8MCksZj0zRHIudGlja0Zvcm1hdCgpKHQueCgpKD0Kbi5wb2lu
dCxuLnBvaW50SW5kZXgpKSxsPTNEKG4uc2VyaWVzLmJhcj9pOnMpLnRpY2tGb3JtYXQoKSh0Lnko
KShuLnBvaW50LG4uPQpwb2ludEluZGV4KSksYz0zRHYobi5zZXJpZXMua2V5LGYsbCxuLFQpO2Uu
dG9vbHRpcC5zaG93KFt1LGFdLGMsbi52YWx1ZTwwPyI9Cm4iOiJzIixudWxsLG8pfTtyZXR1cm4g
dC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKT0Ke2Uu
cG9zPTNEW2UucG9zWzBdK3UubGVmdCxlLnBvc1sxXSt1LnRvcF0sUy50b29sdGlwU2hvdyhlKX0p
LHQuZGlzcGF0Y2gub24oPQoiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe1Mu
dG9vbHRpcEhpZGUoZSl9KSxuLmRpc3BhdGNoLm9uKCJlbGU9Cm1lbnRNb3VzZW92ZXIudG9vbHRp
cCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rdS5sZWZ0LGUucG9zWzFdK3UudG9wXT0K
LFMudG9vbHRpcFNob3coZSl9KSxuLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRp
cCIsZnVuY3Rpb24oZSl7Uy50PQpvb2x0aXBIaWRlKGUpfSksUy5vbigidG9vbHRpcEhpZGUiLGZ1
bmN0aW9uKCl7ZCYmZS50b29sdGlwLmNsZWFudXAoKX0pLFQuZGk9CnNwYXRjaD0zRFMsVC5sZWdl
bmQ9M0RvLFQubGluZXM9M0R0LFQuYmFycz0zRG4sVC54QXhpcz0zRHIsVC55MUF4aXM9M0RpLFQu
eT0KMkF4aXM9M0RzLGQzLnJlYmluZChULHQsImRlZmluZWQiLCJzaXplIiwiY2xpcFZvcm9ub2ki
LCJpbnRlcnBvbGF0ZSIpLFQub3B0PQppb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKFQp
LFQueD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Q9Cmg/KGw9M0RlLHQueChl
KSxuLngoZSksVCk6bH0sVC55PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGM9Cj0zRGUsdC55KGUpLG4ueShlKSxUKTpjfSxULm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyh1Lj0KdG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQi
P2UudG9wOnUudG9wLHUucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QiPQp1bmRlZmluZWQiP2Uu
cmlnaHQ6dS5yaWdodCx1LmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9l
LmJvdHQ9Cm9tOnUuYm90dG9tLHUubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/
ZS5sZWZ0OnUubGVmdCxUKTp1fSxULndpZD0KdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oYT0zRGUsVCk6YX0sVC5oZWlnaHQ9M0RmdW5jdGlvbihlPQope3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhmPTNEZSxUKTpmfSxULmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJu
IGFyZ3VtZW49CnRzLmxlbmd0aD8oaD0zRGUudXRpbHMuZ2V0Q29sb3IodCksby5jb2xvcihoKSxU
KTpofSxULnNob3dMZWdlbmQ9M0RmdW5jdGlvbj0KKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhwPTNEZSxUKTpwfSxULnRvb2x0aXBzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyPQpndW1lbnRz
Lmxlbmd0aD8oZD0zRGUsVCk6ZH0sVC50b29sdGlwQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHM9Ci5sZW5ndGg/KHY9M0RlLFQpOnZ9LFQuc3RhdGU9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0zRGUsVD0KKTpifSxULmRlZmF1bHRTdGF0ZT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3PTNEZSxUKTp3fSxULm5vPQpEYXRh
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlLFQpOkV9LFR9LGUu
bW9kZWxzLmxpbmVXaXQ9CmhGb2N1c0NoYXJ0PTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBrKGUpe3Jl
dHVybiBlLmVhY2goZnVuY3Rpb24oZSl7ZnVuY3Rpb24gUj0KKGUpe3ZhciB0PTNEKyhlPTNEPTNE
ImUiKSxuPTNEdD8xOi0xLHI9M0RPLzM7cmV0dXJuIk0iKy41Km4rIiwiK3IrIkE2LDYgMCAwPQog
Iit0KyIgIis2LjUqbisiLCIrKHIrNikrIlYiKygyKnItNikrIkE2LDYgMCAwICIrdCsiICIrLjUq
bisiLCIrMipyKyJaIisiTSI9CisyLjUqbisiLCIrKHIrOCkrIlYiKygyKnItOCkrIk0iKzQuNSpu
KyIsIisocis4KSsiViIrKDIqci04KX1mdW5jdGlvbiBVKCl7YT0KLmVtcHR5KCl8fGEuZXh0ZW50
KHcpLEYuZGF0YShbYS5lbXB0eSgpP2cuZG9tYWluKCk6d10pLmVhY2goZnVuY3Rpb24oZSx0KXt2
PQphciBuPTNEZyhlWzBdKS12LnJhbmdlKClbMF0scj0zRHYucmFuZ2UoKVsxXS1nKGVbMV0pO2Qz
LnNlbGVjdCh0aGlzKS5zZWxlY3Q9CigiLmxlZnQiKS5hdHRyKCJ3aWR0aCIsbjwwPzA6biksZDMu
c2VsZWN0KHRoaXMpLnNlbGVjdCgiLnJpZ2h0IikuYXR0cigieCIsZz0KKGVbMV0pKS5hdHRyKCJ3
aWR0aCIscjwwPzA6cil9KX1mdW5jdGlvbiB6KCl7dz0zRGEuZW1wdHkoKT9udWxsOmEuZXh0ZW50
KCk7PQp2YXIgbj0zRGEuZW1wdHkoKT9nLmRvbWFpbigpOmEuZXh0ZW50KCk7aWYoTWF0aC5hYnMo
blswXS1uWzFdKTw9M0QxKXJldHVybjs9ClQuYnJ1c2goe2V4dGVudDpuLGJydXNoOmF9KSxVKCk7
dmFyIHM9M0RQLnNlbGVjdCgiLm52LWZvY3VzIC5udi1saW5lc1dyYXAiKT0KLmRhdHVtKGUuZmls
dGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkubWFwKGZ1bmN0aW9uKGUscil7cmV0
dXJue2tlPQp5OmUua2V5LHZhbHVlczplLnZhbHVlcy5maWx0ZXIoZnVuY3Rpb24oZSxyKXtyZXR1
cm4gdC54KCkoZSxyKT49M0RuWzBdJiZ0Lng9CigpKGUscik8PTNEblsxXX0pfX0pKTtzLmNhbGwo
dCksUC5zZWxlY3QoIi5udi1mb2N1cyAubnYteC5udi1heGlzIikuY2FsbChyKT0KLFAuc2VsZWN0
KCIubnYtZm9jdXMgLm52LXkubnYtYXhpcyIpLmNhbGwoaSl9dmFyIFM9M0RkMy5zZWxlY3QodGhp
cyksTj0zRHRoPQppcyxMPTNEKGh8fHBhcnNlSW50KFMuc3R5bGUoIndpZHRoIikpfHw5NjApLWYu
bGVmdC1mLnJpZ2h0LEE9M0QocHx8cGFyc2VJbnQ9CihTLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCkt
Zi50b3AtZi5ib3R0b20tZCxPPTNEZC1sLnRvcC1sLmJvdHRvbTtrLnVwZGF0ZT0zRD0KZnVuY3Rp
b24oKXtTLmNhbGwoayl9LGsuY29udGFpbmVyPTNEdGhpcztpZighZXx8IWUubGVuZ3RofHwhZS5m
aWx0ZXIoZnVuY3RpPQpvbihlKXtyZXR1cm4gZS52YWx1ZXMubGVuZ3RofSkubGVuZ3RoKXt2YXIg
TT0zRFMuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGE9CnRhKFt4XSk7cmV0dXJuIE0uZW50ZXIo
KS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cj0KKCJk
eSIsIi0uN2VtIikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiksTS5hdHRyKCJ4IixmLmxl
ZnQrTC8yKS5hdHRyKCJ5PQoiLGYudG9wK0EvMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0p
LGt9Uy5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmU9CigpLHY9M0R0LnhTY2FsZSgpLG09
M0R0LnlTY2FsZSgpLGc9M0RuLnhTY2FsZSgpLHk9M0RuLnlTY2FsZSgpO3ZhciBfPTNEUy5zZT0K
bGVjdEFsbCgiZy5udi13cmFwLm52LWxpbmVXaXRoRm9jdXNDaGFydCIpLmRhdGEoW2VdKSxEPTNE
Xy5lbnRlcigpLmFwcGVuZCgiPQpnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbGlu
ZVdpdGhGb2N1c0NoYXJ0IikuYXBwZW5kKCJnIiksUD0zRF8uc2U9CmxlY3QoImciKTtELmFwcGVu
ZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpO3ZhciBIPTNERC5hcHBlbmQoImci
KT0KLmF0dHIoImNsYXNzIiwibnYtZm9jdXMiKTtILmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwi
bnYteCBudi1heGlzIiksSC5hcHBlPQpuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteSBudi1heGlz
IiksSC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxpbmVzV3I9CmFwIik7dmFyIEI9M0RE
LmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtY29udGV4dCIpO0IuYXBwZW5kKCJnIikuYXR0
cigiYz0KbGFzcyIsIm52LXggbnYtYXhpcyIpLEIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJu
di15IG52LWF4aXMiKSxCLmFwcGVuZCgiPQpnIikuYXR0cigiY2xhc3MiLCJudi1saW5lc1dyYXAi
KSxCLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYnJ1c2hCYWNrZ3I9Cm91bmQiKSxCLmFw
cGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1icnVzaCIpLGImJih1LndpZHRoKEwpLFAu
c2VsZWN0KD0KIi5udi1sZWdlbmRXcmFwIikuZGF0dW0oZSkuY2FsbCh1KSxmLnRvcCE9M0R1Lmhl
aWdodCgpJiYoZi50b3A9M0R1LmhlaWdodCgpPQosQT0zRChwfHxwYXJzZUludChTLnN0eWxlKCJo
ZWlnaHQiKSl8fDQwMCktZi50b3AtZi5ib3R0b20tZCksUC5zZWxlY3QoIi5udi09CmxlZ2VuZFdy
YXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiKyAtZi50b3ArIikiKSksXy5hdHRy
KCJ0cmFuc2Zvcj0KbSIsInRyYW5zbGF0ZSgiK2YubGVmdCsiLCIrZi50b3ArIikiKSx0LndpZHRo
KEwpLmhlaWdodChBKS5jb2xvcihlLm1hcChmdW5jPQp0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8
fGMoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGU9CmR9KSks
bi5kZWZpbmVkKHQuZGVmaW5lZCgpKS53aWR0aChMKS5oZWlnaHQoTykuY29sb3IoZS5tYXAoZnVu
Y3Rpb24oZSx0KXtyZT0KdHVybiBlLmNvbG9yfHxjKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxu
KXtyZXR1cm4hZVtuXS5kaXNhYmxlZH0pKSxQLnNlbGVjPQp0KCIubnYtY29udGV4dCIpLmF0dHIo
InRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrKEErZi5ib3R0b20rbC50b3ApKyIpIik7dmE9CnIg
aj0zRFAuc2VsZWN0KCIubnYtY29udGV4dCAubnYtbGluZXNXcmFwIikuZGF0dW0oZS5maWx0ZXIo
ZnVuY3Rpb24oZSl7cmV0dT0Kcm4hZS5kaXNhYmxlZH0pKTtkMy50cmFuc2l0aW9uKGopLmNhbGwo
biksci5zY2FsZSh2KS50aWNrcyhMLzEwMCkudGlja1NpemUoPQotQSwwKSxpLnNjYWxlKG0pLnRp
Y2tzKEEvMzYpLnRpY2tTaXplKC1MLDApLFAuc2VsZWN0KCIubnYtZm9jdXMgLm52LXgubnYtYXg9
CmlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitBKyIpIiksYS54KGcpLm9uKCJi
cnVzaCIsZnVuY3Rpb24oKXt2YT0KciBlPTNEay50cmFuc2l0aW9uRHVyYXRpb24oKTtrLnRyYW5z
aXRpb25EdXJhdGlvbigwKSx6KCksay50cmFuc2l0aW9uRHVyYXRpPQpvbihlKX0pLHcmJmEuZXh0
ZW50KHcpO3ZhciBGPTNEUC5zZWxlY3QoIi5udi1icnVzaEJhY2tncm91bmQiKS5zZWxlY3RBbGwo
Imc9CiIpLmRhdGEoW3d8fGEuZXh0ZW50KCldKSxJPTNERi5lbnRlcigpLmFwcGVuZCgiZyIpO0ku
YXBwZW5kKCJyZWN0IikuYXR0cigiYz0KbGFzcyIsImxlZnQiKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5
IiwwKS5hdHRyKCJoZWlnaHQiLE8pLEkuYXBwZW5kKCJyZWN0IikuYXR0PQpyKCJjbGFzcyIsInJp
Z2h0IikuYXR0cigieCIsMCkuYXR0cigieSIsMCkuYXR0cigiaGVpZ2h0IixPKTt2YXIgcT0zRFAu
c2VsZWM9CnQoIi5udi14Lm52LWJydXNoIikuY2FsbChhKTtxLnNlbGVjdEFsbCgicmVjdCIpLmF0
dHIoImhlaWdodCIsTykscS5zZWxlY3RBbD0KbCgiLnJlc2l6ZSIpLmFwcGVuZCgicGF0aCIpLmF0
dHIoImQiLFIpLHooKSxzLnNjYWxlKGcpLnRpY2tzKEwvMTAwKS50aWNrU2l6PQplKC1PLDApLFAu
c2VsZWN0KCIubnYtY29udGV4dCAubnYteC5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJh
bnNsYXRlKDA9CiwiK3kucmFuZ2UoKVswXSsiKSIpLGQzLnRyYW5zaXRpb24oUC5zZWxlY3QoIi5u
di1jb250ZXh0IC5udi14Lm52LWF4aXMiKSkuYz0KYWxsKHMpLG8uc2NhbGUoeSkudGlja3MoTy8z
NikudGlja1NpemUoLUwsMCksZDMudHJhbnNpdGlvbihQLnNlbGVjdCgiLm52LWNvPQpudGV4dCAu
bnYteS5udi1heGlzIikpLmNhbGwobyksUC5zZWxlY3QoIi5udi1jb250ZXh0IC5udi14Lm52LWF4
aXMiKS5hdHRyKCI9CnRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIreS5yYW5nZSgpWzBdKyIpIiks
dS5kaXNwYXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1bj0KY3Rpb24oZSl7ay51cGRhdGUoKX0pLFQu
b24oInRvb2x0aXBTaG93IixmdW5jdGlvbihlKXtFJiZDKGUsTi5wYXJlbnROb2RlKX0pPQp9KSxr
fXZhciB0PTNEZS5tb2RlbHMubGluZSgpLG49M0RlLm1vZGVscy5saW5lKCkscj0zRGUubW9kZWxz
LmF4aXMoKSxpPTNEZS49Cm1vZGVscy5heGlzKCkscz0zRGUubW9kZWxzLmF4aXMoKSxvPTNEZS5t
b2RlbHMuYXhpcygpLHU9M0RlLm1vZGVscy5sZWdlbmQoKT0KLGE9M0RkMy5zdmcuYnJ1c2goKSxm
PTNEe3RvcDozMCxyaWdodDozMCxib3R0b206MzAsbGVmdDo2MH0sbD0zRHt0b3A6MCxyaWdoPQp0
OjMwLGJvdHRvbToyMCxsZWZ0OjYwfSxjPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxoPTNEbnVs
bCxwPTNEbnVsbCxkPTNEMTA9CjAsdixtLGcseSxiPTNEITAsdz0zRG51bGwsRT0zRCEwLFM9M0Rm
dW5jdGlvbihlLHQsbixyLGkpe3JldHVybiI8aDM+IitlKyI8Lz0KaDM+IisiPHA+IituKyIgYXQg
Iit0KyI8L3A+In0seD0zRCJObyBEYXRhIEF2YWlsYWJsZS4iLFQ9M0RkMy5kaXNwYXRjaCgidG9v
PQpsdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwiYnJ1c2giKSxOPTNEMDt0LmNsaXBFZGdlKCEwKSxu
LmludGVyYWN0aXZlKCExKSxyLm89CnJpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg1KSxpLm9y
aWVudCgibGVmdCIpLHMub3JpZW50KCJib3R0b20iKS50aWNrUGFkZD0KaW5nKDUpLG8ub3JpZW50
KCJsZWZ0Iik7dmFyIEM9M0RmdW5jdGlvbihuLHMpe3ZhciBvPTNEbi5wb3NbMF0rKHMub2Zmc2V0
TGVmPQp0fHwwKSx1PTNEbi5wb3NbMV0rKHMub2Zmc2V0VG9wfHwwKSxhPTNEci50aWNrRm9ybWF0
KCkodC54KCkobi5wb2ludCxuLnBvaW49CnRJbmRleCkpLGY9M0RpLnRpY2tGb3JtYXQoKSh0Lnko
KShuLnBvaW50LG4ucG9pbnRJbmRleCkpLGw9M0RTKG4uc2VyaWVzLmtleT0KLGEsZixuLGspO2Uu
dG9vbHRpcC5zaG93KFtvLHVdLGwsbnVsbCxudWxsLHMpfTtyZXR1cm4gdC5kaXNwYXRjaC5vbigi
ZWxlbWVuPQp0TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBd
K2YubGVmdCxlLnBvc1sxXStmLnRvcF0sVC49CnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5v
bigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe1QudG9vbD0KdGlwSGlkZShl
KX0pLFQub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbigpe0UmJmUudG9vbHRpcC5jbGVhbnVwKCl9
KSxrLmRpc3BhPQp0Y2g9M0RULGsubGVnZW5kPTNEdSxrLmxpbmVzPTNEdCxrLmxpbmVzMj0zRG4s
ay54QXhpcz0zRHIsay55QXhpcz0zRGksay54MkE9Cnhpcz0zRHMsay55MkF4aXM9M0RvLGQzLnJl
YmluZChrLHQsImRlZmluZWQiLCJpc0FyZWEiLCJzaXplIiwieERvbWFpbiIsInlEbz0KbWFpbiIs
InhSYW5nZSIsInlSYW5nZSIsImZvcmNlWCIsImZvcmNlWSIsImludGVyYWN0aXZlIiwiY2xpcEVk
Z2UiLCJjbGlwVm9yPQpvbm9pIiwiaWQiKSxrLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5j
LmJpbmQoayksay54PTNEZnVuY3Rpb24oZSl7cmV0dXI9Cm4gYXJndW1lbnRzLmxlbmd0aD8odC54
KGUpLG4ueChlKSxrKTp0Lnh9LGsueT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudD0Kcy5s
ZW5ndGg/KHQueShlKSxuLnkoZSksayk6dC55fSxrLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuPQpndGg/KGYudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQi
P2UudG9wOmYudG9wLGYucmlnaHQ9M0R0eXBlb2YgZS5yaWc9Cmh0IT0zRCJ1bmRlZmluZWQiP2Uu
cmlnaHQ6Zi5yaWdodCxmLmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj0K
P2UuYm90dG9tOmYuYm90dG9tLGYubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/
ZS5sZWZ0OmYubGVmdCxrKTpmPQp9LGsubWFyZ2luMj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhsPTNEZSxrKTpsfSxrLndpZHRoPTNEZnU9Cm5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsayk6aH0say5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1
cj0KbiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxrKTpwfSxrLmhlaWdodDI9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlPQpuZ3RoPyhkPTNEZSxrKTpkfSxrLmNvbG9yPTNEZnVuY3Rp
b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLnV0aWw9CnMuZ2V0Q29sb3IodCks
dS5jb2xvcihjKSxrKTpjfSxrLnNob3dMZWdlbmQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLj0KbGVuZ3RoPyhiPTNEZSxrKTpifSxrLnRvb2x0aXBzPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlPQosayk6RX0say50b29sdGlwQ29udGVudD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPTNEZSxrKTpTfSw9CmsuaW50ZXJwb2xh
dGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC5pbnRlcnBvbGF0ZShl
KSxuLmludD0KZXJwb2xhdGUoZSksayk6dC5pbnRlcnBvbGF0ZSgpfSxrLm5vRGF0YT0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuPQpndGg/KHg9M0RlLGspOnh9LGsueFRpY2tGb3Jt
YXQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oci50aWM9CmtGb3JtYXQo
ZSkscy50aWNrRm9ybWF0KGUpLGspOnIudGlja0Zvcm1hdCgpfSxrLnlUaWNrRm9ybWF0PTNEZnVu
Y3Rpb24oZSl7cj0KZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaS50aWNrRm9ybWF0KGUpLG8udGlj
a0Zvcm1hdChlKSxrKTppLnRpY2tGb3JtYXQoKX0sPQprLmJydXNoRXh0ZW50PTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9M0RlLGspOnd9LGsudHJhbnNpdGk9Cm9uRHVy
YXRpb249M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTj0zRGUsayk6Tn0s
a30sZS5tb2RlbHMubD0KaW5lUGx1c0JhcldpdGhGb2N1c0NoYXJ0PTNEZnVuY3Rpb24oKXtmdW5j
dGlvbiBCKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oPQplKXtmdW5jdGlvbiB0dChlKXt2YXIg
dD0zRCsoZT0zRD0zRCJlIiksbj0zRHQ/MTotMSxyPTNESS8zO3JldHVybiJNIisuNSpuKyI9Ciwi
K3IrIkE2LDYgMCAwICIrdCsiICIrNi41Km4rIiwiKyhyKzYpKyJWIisoMipyLTYpKyJBNiw2IDAg
MCAiK3QrIiAiKy41Km4rIj0KLCIrMipyKyJaIisiTSIrMi41Km4rIiwiKyhyKzgpKyJWIisoMipy
LTgpKyJNIis0LjUqbisiLCIrKHIrOCkrIlYiKygyKnItOCl9PQpmdW5jdGlvbiBudCgpe2guZW1w
dHkoKXx8aC5leHRlbnQoeCksWS5kYXRhKFtoLmVtcHR5KCk/ay5kb21haW4oKTp4XSkuZWFjaCg9
CmZ1bmN0aW9uKGUsdCl7dmFyIG49M0RrKGVbMF0pLWsucmFuZ2UoKVswXSxyPTNEay5yYW5nZSgp
WzFdLWsoZVsxXSk7ZDMuc2VsZT0KY3QodGhpcykuc2VsZWN0KCIubGVmdCIpLmF0dHIoIndpZHRo
IixuPDA/MDpuKSxkMy5zZWxlY3QodGhpcykuc2VsZWN0KCIucmlnPQpodCIpLmF0dHIoIngiLGso
ZVsxXSkpLmF0dHIoIndpZHRoIixyPDA/MDpyKX0pfWZ1bmN0aW9uIHJ0KCl7eD0zRGguZW1wdHko
KT89Cm51bGw6aC5leHRlbnQoKSxTPTNEaC5lbXB0eSgpP2suZG9tYWluKCk6aC5leHRlbnQoKSxE
LmJydXNoKHtleHRlbnQ6UyxicnVzaD0KOmh9KSxudCgpLHIud2lkdGgoaikuaGVpZ2h0KEYpLmNv
bG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fHcoPQplLHQpfSkuZmlsdGVy
KGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWQmJmVbbl0uYmFyfSkpLHQud2lkdGgo
aikuaGU9CmlnaHQoRikuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8
dyhlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKD0KdCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZCYmIWVb
bl0uYmFyfSkpO3ZhciBuPTNEJC5zZWxlY3QoIi5udi1mb2N1cyAubnYtYmFyPQpzV3JhcCIpLmRh
dHVtKFIubGVuZ3RoP1IubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJue2tleTplLmtleSx2YWx1ZXM6
ZS52YWx1ZXM9Ci5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gci54KCkoZSx0KT49M0RTWzBd
JiZyLngoKShlLHQpPD0zRFNbMV19KX19KTpbez0KdmFsdWVzOltdfV0pLGk9M0QkLnNlbGVjdCgi
Lm52LWZvY3VzIC5udi1saW5lc1dyYXAiKS5kYXR1bShVWzBdLmRpc2FibGVkP1t7PQp2YWx1ZXM6
W119XTpVLm1hcChmdW5jdGlvbihlLG4pe3JldHVybntrZXk6ZS5rZXksdmFsdWVzOmUudmFsdWVz
LmZpbHRlcihmdW49CmN0aW9uKGUsbil7cmV0dXJuIHQueCgpKGUsbik+PTNEU1swXSYmdC54KCko
ZSxuKTw9M0RTWzFdfSl9fSkpO1IubGVuZ3RoP0M9Cj0zRHIueFNjYWxlKCk6Qz0zRHQueFNjYWxl
KCkscy5zY2FsZShDKS50aWNrcyhqLzEwMCkudGlja1NpemUoLUYsMCkscy5kb21haT0KbihbTWF0
aC5jZWlsKFNbMF0pLE1hdGguZmxvb3IoU1sxXSldKSwkLnNlbGVjdCgiLm52LXgubnYtYXhpcyIp
LmNhbGwocyksbi5jPQphbGwociksaS5jYWxsKHQpLCQuc2VsZWN0KCIubnYtZm9jdXMgLm52LXgu
bnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW49CnNsYXRlKDAsIitMLnJhbmdlKClbMF0r
IikiKSx1LnNjYWxlKEwpLnRpY2tzKEYvMzYpLnRpY2tTaXplKC1qLDApLCQuc2VsZWN0KD0KIi5u
di1mb2N1cyAubnYteTEubnYtYXhpcyIpLnN0eWxlKCJvcGFjaXR5IixSLmxlbmd0aD8xOjApLGEu
c2NhbGUoQSkudGlja3MoPQpGLzM2KS50aWNrU2l6ZShSLmxlbmd0aD8wOi1qLDApLCQuc2VsZWN0
KCIubnYtZm9jdXMgLm52LXkyLm52LWF4aXMiKS5zdHlsZSg9CiJvcGFjaXR5IixVLmxlbmd0aD8x
OjApLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK0MucmFuZ2UoKVsxXSsiLDApIiksJD0K
LnNlbGVjdCgiLm52LWZvY3VzIC5udi15MS5udi1heGlzIikuY2FsbCh1KSwkLnNlbGVjdCgiLm52
LWZvY3VzIC5udi15Mi5udi1hPQp4aXMiKS5jYWxsKGEpfXZhciBOPTNEZDMuc2VsZWN0KHRoaXMp
LFA9M0R0aGlzLGo9M0Qodnx8cGFyc2VJbnQoTi5zdHlsZSgid2k9CmR0aCIpKXx8OTYwKS1wLmxl
ZnQtcC5yaWdodCxGPTNEKG18fHBhcnNlSW50KE4uc3R5bGUoImhlaWdodCIpKXx8NDAwKS1wLnRv
cD0KLXAuYm90dG9tLWcsST0zRGctZC50b3AtZC5ib3R0b207Qi51cGRhdGU9M0RmdW5jdGlvbigp
e04uY2FsbChCKX0sQi5jb250YWluPQplcj0zRHRoaXM7aWYoIWV8fCFlLmxlbmd0aHx8IWUuZmls
dGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS49Cmxlbmd0aCl7dmFyIHE9
M0ROLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW19dKTtyZXR1cm4gcS5lbnRlcigpLmFw
cGVuZD0KKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5Iiwi
LS43ZW0iKS5zdHlsZSgidGV4dC1hbmNoPQpvciIsIm1pZGRsZSIpLHEuYXR0cigieCIscC5sZWZ0
K2ovMikuYXR0cigieSIscC50b3ArRi8yKS50ZXh0KGZ1bmN0aW9uKGUpe3I9CmV0dXJuIGV9KSxC
fU4uc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtb3ZlKCk7dmFyIFI9M0RlLmZpbHRlcihmdW5j
dGlvbihlKT0Ke3JldHVybiFlLmRpc2FibGVkJiZlLmJhcn0pLFU9M0RlLmZpbHRlcihmdW5jdGlv
bihlKXtyZXR1cm4hZS5iYXJ9KTtDPTNEci54PQpTY2FsZSgpLGs9M0RvLnNjYWxlKCksTD0zRHIu
eVNjYWxlKCksQT0zRHQueVNjYWxlKCksTz0zRGkueVNjYWxlKCksTT0zRG4ueVM9CmNhbGUoKTt2
YXIgej0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkJiZlLmJhcn0pLm1h
cChmdW5jdGlvbj0KKGUpe3JldHVybiBlLnZhbHVlcy5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm57
eDp5KGUsdCkseTpiKGUsdCl9fSl9KSxXPTNEZS5mPQppbHRlcihmdW5jdGlvbihlKXtyZXR1cm4h
ZS5kaXNhYmxlZCYmIWUuYmFyfSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHU9CmVzLm1h
cChmdW5jdGlvbihlLHQpe3JldHVybnt4OnkoZSx0KSx5OmIoZSx0KX19KX0pO0MucmFuZ2UoWzAs
al0pLGsuZG9tYWluKD0KZDMuZXh0ZW50KGQzLm1lcmdlKHouY29uY2F0KFcpKSxmdW5jdGlvbihl
KXtyZXR1cm4gZS54fSkpLnJhbmdlKFswLGpdKTt2YXIgPQpYPTNETi5zZWxlY3RBbGwoImcubnYt
d3JhcC5udi1saW5lUGx1c0JhciIpLmRhdGEoW2VdKSxWPTNEWC5lbnRlcigpLmFwcGVuZCg9CiJn
IikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbGluZVBsdXNCYXIiKS5hcHBlbmQoImci
KSwkPTNEWC5zZWxlY3QoIj0KZyIpO1YuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1sZWdl
bmRXcmFwIik7dmFyIEo9M0RWLmFwcGVuZCgiZyIpLmF0dHIoPQoiY2xhc3MiLCJudi1mb2N1cyIp
O0ouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14IG52LWF4aXMiKSxKLmFwcGVuZCgiZyI9
CikuYXR0cigiY2xhc3MiLCJudi15MSBudi1heGlzIiksSi5hcHBlbmQoImciKS5hdHRyKCJjbGFz
cyIsIm52LXkyIG52LWF4aXMiKT0KLEouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1iYXJz
V3JhcCIpLEouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1sPQppbmVzV3JhcCIpO3ZhciBL
PTNEVi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWNvbnRleHQiKTtLLmFwcGVuZCgiZyIp
LmE9CnR0cigiY2xhc3MiLCJudi14IG52LWF4aXMiKSxLLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNz
IiwibnYteTEgbnYtYXhpcyIpLEsuYT0KcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkyIG52
LWF4aXMiKSxLLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYmFyPQpzV3JhcCIpLEsuYXBw
ZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1saW5lc1dyYXAiKSxLLmFwcGVuZCgiZyIpLmF0dHIo
ImNsYXM9CnMiLCJudi1icnVzaEJhY2tncm91bmQiKSxLLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNz
IiwibnYteCBudi1icnVzaCIpLEUmJihjLj0Kd2lkdGgoai8yKSwkLnNlbGVjdCgiLm52LWxlZ2Vu
ZFdyYXAiKS5kYXR1bShlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5vcmlnPQppbmFsS2V5PTNE
ZS5vcmlnaW5hbEtleT0zRD0zRD0zRHVuZGVmaW5lZD9lLmtleTplLm9yaWdpbmFsS2V5LGUua2V5
PTNEZS5vcmk9CmdpbmFsS2V5KyhlLmJhcj8iIChsZWZ0IGF4aXMpIjoiIChyaWdodCBheGlzKSIp
LGV9KSkuY2FsbChjKSxwLnRvcCE9M0RjLmhlaT0KZ2h0KCkmJihwLnRvcD0zRGMuaGVpZ2h0KCks
Rj0zRChtfHxwYXJzZUludChOLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktcC50b3AtPQpwLmJvdHRv
bS1nKSwkLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xh
dGUoIitqLzIrIiw9CiIrIC1wLnRvcCsiKSIpKSxYLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0
ZSgiK3AubGVmdCsiLCIrcC50b3ArIikiKSxpLndpZD0KdGgoaikuaGVpZ2h0KEkpLmNvbG9yKGUu
bWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fHcoZSx0KX0pLmZpbHRlcihmPQp1bmN0
aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWQmJmVbbl0uYmFyfSkpLG4ud2lkdGgoaikuaGVp
Z2h0KEkpLmNvbG9yKGU9Ci5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8dyhlLHQp
fSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbj0KXS5kaXNhYmxlZCYmIWVbbl0uYmFy
fSkpO3ZhciBRPTNEJC5zZWxlY3QoIi5udi1jb250ZXh0IC5udi1iYXJzV3JhcCIpLmRhdHVtPQoo
Ui5sZW5ndGg/Ujpbe3ZhbHVlczpbXX1dKSxHPTNEJC5zZWxlY3QoIi5udi1jb250ZXh0IC5udi1s
aW5lc1dyYXAiKS5kYXR1bSg9ClVbMF0uZGlzYWJsZWQ/W3t2YWx1ZXM6W119XTpVKTskLnNlbGVj
dCgiLm52LWNvbnRleHQiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cj0KYW5zbGF0ZSgwLCIrKEYrcC5i
b3R0b20rZC50b3ApKyIpIiksUS5jYWxsKGkpLEcuY2FsbChuKSxoLngoaykub24oImJydXNoIixy
PQp0KSx4JiZoLmV4dGVudCh4KTt2YXIgWT0zRCQuc2VsZWN0KCIubnYtYnJ1c2hCYWNrZ3JvdW5k
Iikuc2VsZWN0QWxsKCJnIikuZGE9CnRhKFt4fHxoLmV4dGVudCgpXSksWj0zRFkuZW50ZXIoKS5h
cHBlbmQoImciKTtaLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIj0KLCJsZWZ0IikuYXR0cigi
eCIsMCkuYXR0cigieSIsMCkuYXR0cigiaGVpZ2h0IixJKSxaLmFwcGVuZCgicmVjdCIpLmF0dHIo
ImNsPQphc3MiLCJyaWdodCIpLmF0dHIoIngiLDApLmF0dHIoInkiLDApLmF0dHIoImhlaWdodCIs
SSk7dmFyIGV0PTNEJC5zZWxlY3QoIi49Cm52LXgubnYtYnJ1c2giKS5jYWxsKGgpO2V0LnNlbGVj
dEFsbCgicmVjdCIpLmF0dHIoImhlaWdodCIsSSksZXQuc2VsZWN0QWxsKD0KIi5yZXNpemUiKS5h
cHBlbmQoInBhdGgiKS5hdHRyKCJkIix0dCksby50aWNrcyhqLzEwMCkudGlja1NpemUoLUksMCks
JC5zZWxlPQpjdCgiLm52LWNvbnRleHQgLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIs
InRyYW5zbGF0ZSgwLCIrTy5yYW5nZSgpWzA9Cl0rIikiKSwkLnNlbGVjdCgiLm52LWNvbnRleHQg
Lm52LXgubnYtYXhpcyIpLmNhbGwobyksZi5zY2FsZShPKS50aWNrcyhJLzM2KT0KLnRpY2tTaXpl
KC1qLDApLCQuc2VsZWN0KCIubnYtY29udGV4dCAubnYteTEubnYtYXhpcyIpLnN0eWxlKCJvcGFj
aXR5IixSLmxlPQpuZ3RoPzE6MCkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitrLnJh
bmdlKClbMF0rIikiKSwkLnNlbGVjdCgiLm52LWM9Cm9udGV4dCAubnYteTEubnYtYXhpcyIpLmNh
bGwoZiksbC5zY2FsZShNKS50aWNrcyhJLzM2KS50aWNrU2l6ZShSLmxlbmd0aD8wOj0KLWosMCks
JC5zZWxlY3QoIi5udi1jb250ZXh0IC5udi15Mi5udi1heGlzIikuc3R5bGUoIm9wYWNpdHkiLFUu
bGVuZ3RoPzE6MCkuPQphdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitrLnJhbmdlKClbMV0r
IiwwKSIpLCQuc2VsZWN0KCIubnYtY29udGV4dCAubnY9Ci15Mi5udi1heGlzIikuY2FsbChsKSxj
LmRpc3BhdGNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24oZSl7Qi51cGRhdGUoKX0pLD0KRC5v
bigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe1QmJkgoZSxQLnBhcmVudE5vZGUpfSkscnQoKX0p
LEJ9dmFyIHQ9M0RlLm1vPQpkZWxzLmxpbmUoKSxuPTNEZS5tb2RlbHMubGluZSgpLHI9M0RlLm1v
ZGVscy5oaXN0b3JpY2FsQmFyKCksaT0zRGUubW9kZWxzLmg9CmlzdG9yaWNhbEJhcigpLHM9M0Rl
Lm1vZGVscy5heGlzKCksbz0zRGUubW9kZWxzLmF4aXMoKSx1PTNEZS5tb2RlbHMuYXhpcygpLD0K
YT0zRGUubW9kZWxzLmF4aXMoKSxmPTNEZS5tb2RlbHMuYXhpcygpLGw9M0RlLm1vZGVscy5heGlz
KCksYz0zRGUubW9kZWxzLmxlPQpnZW5kKCksaD0zRGQzLnN2Zy5icnVzaCgpLHA9M0R7dG9wOjMw
LHJpZ2h0OjMwLGJvdHRvbTozMCxsZWZ0OjYwfSxkPTNEe3RvcDo9CjAscmlnaHQ6MzAsYm90dG9t
OjIwLGxlZnQ6NjB9LHY9M0RudWxsLG09M0RudWxsLGc9M0QxMDAseT0zRGZ1bmN0aW9uKGUpe3Jl
dD0KdXJuIGUueH0sYj0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnl9LHc9M0RlLnV0aWxzLmRlZmF1
bHRDb2xvcigpLEU9M0QhMCxTLHg9Cj0zRG51bGwsVD0zRCEwLE49M0RmdW5jdGlvbihlLHQsbixy
LGkpe3JldHVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIrbisiIGF0ID0KIit0KyI8L3A+In0sQyxr
LEwsQSxPLE0sXz0zRCJObyBEYXRhIEF2YWlsYWJsZS4iLEQ9M0RkMy5kaXNwYXRjaCgidG9vbHRp
cFNoPQpvdyIsInRvb2x0aXBIaWRlIiwiYnJ1c2giKSxQPTNEMDt0LmNsaXBFZGdlKCEwKSxuLmlu
dGVyYWN0aXZlKCExKSxzLm9yaWVudCg9CiJib3R0b20iKS50aWNrUGFkZGluZyg1KSx1Lm9yaWVu
dCgibGVmdCIpLGEub3JpZW50KCJyaWdodCIpLG8ub3JpZW50KCJib3R0bz0KbSIpLnRpY2tQYWRk
aW5nKDUpLGYub3JpZW50KCJsZWZ0IiksbC5vcmllbnQoInJpZ2h0Iik7dmFyIEg9M0RmdW5jdGlv
bihuLHIpPQp7UyYmKG4ucG9pbnRJbmRleCs9M0RNYXRoLmNlaWwoU1swXSkpO3ZhciBpPTNEbi5w
b3NbMF0rKHIub2Zmc2V0TGVmdHx8MCksbz0KPTNEbi5wb3NbMV0rKHIub2Zmc2V0VG9wfHwwKSxm
PTNEcy50aWNrRm9ybWF0KCkodC54KCkobi5wb2ludCxuLnBvaW50SW5kZXgpPQopLGw9M0Qobi5z
ZXJpZXMuYmFyP3U6YSkudGlja0Zvcm1hdCgpKHQueSgpKG4ucG9pbnQsbi5wb2ludEluZGV4KSks
Yz0zRE4obi49CnNlcmllcy5rZXksZixsLG4sQik7ZS50b29sdGlwLnNob3coW2ksb10sYyxuLnZh
bHVlPDA/Im4iOiJzIixudWxsLHIpfTtyZXR1cj0KbiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91
c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK3AuPQpsZWZ0LGUu
cG9zWzFdK3AudG9wXSxELnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1v
dXNlb3V0LnRvb2w9CnRpcCIsZnVuY3Rpb24oZSl7RC50b29sdGlwSGlkZShlKX0pLHIuZGlzcGF0
Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcD0KIixmdW5jdGlvbihlKXtlLnBvcz0zRFtl
LnBvc1swXStwLmxlZnQsZS5wb3NbMV0rcC50b3BdLEQudG9vbHRpcFNob3coZSl9KSxyPQouZGlz
cGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtELnRvb2x0aXBI
aWRlKGUpfSksRC5vbig9CiJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXtUJiZlLnRvb2x0aXAuY2xl
YW51cCgpfSksQi5kaXNwYXRjaD0zREQsQi5sZWdlbmQ9Cj0zRGMsQi5saW5lcz0zRHQsQi5saW5l
czI9M0RuLEIuYmFycz0zRHIsQi5iYXJzMj0zRGksQi54QXhpcz0zRHMsQi54MkF4aXM9Cj0zRG8s
Qi55MUF4aXM9M0R1LEIueTJBeGlzPTNEYSxCLnkzQXhpcz0zRGYsQi55NEF4aXM9M0RsLGQzLnJl
YmluZChCLHQsImRlZj0KaW5lZCIsInNpemUiLCJjbGlwVm9yb25vaSIsImludGVycG9sYXRlIiks
Qi5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iPQppbmQoQiksQi54PTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9M0RlLHQueChlKSxyLngoZSksQik6eX09CixC
Lnk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0zRGUsdC55KGUpLHIu
eShlKSxCKTpifSxCLm1hcj0KZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHAudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluPQplZCI/ZS50b3A6cC50b3AscC5y
aWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6cC5yaWdodCxwLmI9
Cm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnAuYm90dG9t
LHAubGVmdD0zRHR5cGVvZiBlLj0KbGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6cC5sZWZ0LEIp
OnB9LEIud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lPQpudHMubGVuZ3RoPyh2PTNE
ZSxCKTp2fSxCLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyht
PQo9M0RlLEIpOm19LEIuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8odz0zRGUudXRpbHMuZ2V0Q289Cmxvcih0KSxjLmNvbG9yKHcpLEIpOnd9LEIuc2hvd0xlZ2Vu
ZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPz0KKEU9M0RlLEIpOkV9LEIu
dG9vbHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oVD0zRGUsQik6
VH0sPQpCLnRvb2x0aXBDb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KE49M0RlLEIpOk59LEIubm9EYXQ9CmE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oXz0zRGUsQik6X30sQi5icnVzaEV4dGVudD0zRGZ1bmN0aT0Kb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHg9M0RlLEIpOnh9LEJ9LGUubW9kZWxzLm11bHRpQmFyPTNEZnVu
Y3Rpb24oPQope2Z1bmN0aW9uIEMoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXt2YXIgZz0z
RG4tdC5sZWZ0LXQucmlnaHQsQz0zRHItdC49CnRvcC10LmJvdHRvbSxrPTNEZDMuc2VsZWN0KHRo
aXMpO2QmJmUubGVuZ3RoJiYoZD0zRFt7dmFsdWVzOmVbMF0udmFsdWVzLm1hcD0KKGZ1bmN0aW9u
KGUpe3JldHVybnt4OmUueCx5OjAsc2VyaWVzOmUuc2VyaWVzLHNpemU6LjAxfX0pfV0pLGMmJihl
PTNEZDMubGF5PQpvdXQuc3RhY2soKS5vZmZzZXQoaCkudmFsdWVzKGZ1bmN0aW9uKGUpe3JldHVy
biBlLnZhbHVlc30pLnkoYSkoIWUubGVuZ3RoJiY9CmQ/ZDplKSksZS5mb3JFYWNoKGZ1bmN0aW9u
KGUsdCl7ZS52YWx1ZXMuZm9yRWFjaChmdW5jdGlvbihlKXtlLnNlcmllcz0zRHR9KT0KfSksYyYm
ZVswXS52YWx1ZXMubWFwKGZ1bmN0aW9uKHQsbil7dmFyIHI9M0QwLGk9M0QwO2UubWFwKGZ1bmN0
aW9uKGUpe3ZhciB0PQo9M0RlLnZhbHVlc1tuXTt0LnNpemU9M0RNYXRoLmFicyh0LnkpLHQueTww
Pyh0LnkxPTNEaSxpLT0zRHQuc2l6ZSk6KHQueTE9M0Q9CnQuc2l6ZStyLHIrPTNEdC5zaXplKX0p
fSk7dmFyIEw9M0R5JiZiP1tdOmUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcz0KLm1h
cChmdW5jdGlvbihlLHQpe3JldHVybnt4OnUoZSx0KSx5OmEoZSx0KSx5MDplLnkwLHkxOmUueTF9
fSl9KTtpLmRvbWFpbih5PQp8fGQzLm1lcmdlKEwpLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS54
fSkpLnJhbmdlQmFuZHMod3x8WzAsZ10sUykscy5kb21haW49CihifHxkMy5leHRlbnQoZDMubWVy
Z2UoTCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBjP2UueT4wP2UueTE6ZS55MStlLnk6ZS55fT0K
KS5jb25jYXQoZikpKS5yYW5nZShFfHxbQywwXSksaS5kb21haW4oKVswXT0zRD0zRD0zRGkuZG9t
YWluKClbMV0mJihpLmRvbWFpPQpuKClbMF0/aS5kb21haW4oW2kuZG9tYWluKClbMF0taS5kb21h
aW4oKVswXSouMDEsaS5kb21haW4oKVsxXStpLmRvbWFpbigpWzE9Cl0qLjAxXSk6aS5kb21haW4o
Wy0xLDFdKSkscy5kb21haW4oKVswXT0zRD0zRD0zRHMuZG9tYWluKClbMV0mJihzLmRvbWFpbigp
Wz0KMF0/cy5kb21haW4oW3MuZG9tYWluKClbMF0rcy5kb21haW4oKVswXSouMDEscy5kb21haW4o
KVsxXS1zLmRvbWFpbigpWzFdKi4wPQoxXSk6cy5kb21haW4oWy0xLDFdKSksVD0zRFR8fGksTj0z
RE58fHM7dmFyIEE9M0RrLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LW09CnVsdGliYXIiKS5kYXRh
KFtlXSksTz0zREEuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3Jh
cCBudj0KLW11bHRpYmFyIiksTT0zRE8uYXBwZW5kKCJkZWZzIiksXz0zRE8uYXBwZW5kKCJnIiks
RD0zREEuc2VsZWN0KCJnIik7Xy5hcHBlPQpuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtZ3JvdXBz
IiksQS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0LmxlZnQrIiw9CiIrdC50b3ArIiki
KSxNLmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIsIm52LWVkZ2UtY2xpcC0iK28pLmFwcGVu
ZCgicmVjdD0KIiksQS5zZWxlY3QoIiNudi1lZGdlLWNsaXAtIitvKyIgcmVjdCIpLmF0dHIoIndp
ZHRoIixnKS5hdHRyKCJoZWlnaHQiLEMpLEQuPQphdHRyKCJjbGlwLXBhdGgiLGw/InVybCgjbnYt
ZWRnZS1jbGlwLSIrbysiKSI6IiIpO3ZhciBQPTNEQS5zZWxlY3QoIi5udi1ncm89CnVwcyIpLnNl
bGVjdEFsbCgiLm52LWdyb3VwIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZX0sZnVuY3Rpb24o
ZSx0KXtyZXR1cj0KbiB0fSk7UC5lbnRlcigpLmFwcGVuZCgiZyIpLnN0eWxlKCJzdHJva2Utb3Bh
Y2l0eSIsMWUtNikuc3R5bGUoImZpbGwtb3BhY2l0PQp5IiwxZS02KSxQLmV4aXQoKS5zZWxlY3RB
bGwoInJlY3QubnYtYmFyIikuYXR0cigieSIsZnVuY3Rpb24oZSl7cmV0dXJuIGM/Tig9CmUueTAp
Ok4oMCl9KS5hdHRyKCJoZWlnaHQiLDApLnJlbW92ZSgpLFAuYXR0cigiY2xhc3MiLGZ1bmN0aW9u
KGUsdCl7cmV0dXJuIj0KbnYtZ3JvdXAgbnYtc2VyaWVzLSIrdH0pLmNsYXNzZWQoImhvdmVyIixm
dW5jdGlvbihlKXtyZXR1cm4gZS5ob3Zlcn0pLnN0eWxlPQooImZpbGwiLGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIHAoZSx0KX0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHA9Cihl
LHQpfSksUC5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDEpLnN0eWxlKCJmaWxsLW9wYWNpdHkiLC43
NSk7dmFyIEg9M0RQLnNlbD0KZWN0QWxsKCJyZWN0Lm52LWJhciIpLmRhdGEoZnVuY3Rpb24odCl7
cmV0dXJuIGQmJiFlLmxlbmd0aD9kLnZhbHVlczp0LnZhbHVlPQpzfSk7SC5leGl0KCkucmVtb3Zl
KCk7dmFyIEI9M0RILmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLGZ1bmN0aW89
Cm4oZSx0KXtyZXR1cm4gYShlLHQpPDA/Im52LWJhciBuZWdhdGl2ZSI6Im52LWJhciBwb3NpdGl2
ZSJ9KS5hdHRyKCJ4IixmdW5jdD0KaW9uKHQsbixyKXtyZXR1cm4gYz8wOnIqaS5yYW5nZUJhbmQo
KS9lLmxlbmd0aH0pLmF0dHIoInkiLGZ1bmN0aW9uKGUpe3JldHVyPQpuIE4oYz9lLnkwOjApfSku
YXR0cigiaGVpZ2h0IiwwKS5hdHRyKCJ3aWR0aCIsaS5yYW5nZUJhbmQoKS8oYz8xOmUubGVuZ3Ro
KSk9Ci5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiK2ko
dShlLHQpKSsiLDApIn0pO0guc3R5bD0KZSgiZmlsbCIsZnVuY3Rpb24oZSx0LG4pe3JldHVybiBw
KGUsbix0KX0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCxuKXtyPQpldHVybiBwKGUsbix0
KX0pLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKHQsbil7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQo
ImhvdmU9CnIiLCEwKSx4LmVsZW1lbnRNb3VzZW92ZXIoe3ZhbHVlOmEodCxuKSxwb2ludDp0LHNl
cmllczplW3Quc2VyaWVzXSxwb3M6W2kodT0KKHQsbikpK2kucmFuZ2VCYW5kKCkqKGM/ZS5sZW5n
dGgvMjp0LnNlcmllcysuNSkvZS5sZW5ndGgscyhhKHQsbikrKGM/dC55MDowPQopKV0scG9pbnRJ
bmRleDpuLHNlcmllc0luZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnR9KX0pLm9uKCJtb3VzZW91dCIs
ZnVuY3Rpb249Cih0LG4pe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIsITEpLHguZWxl
bWVudE1vdXNlb3V0KHt2YWx1ZTphKHQsbikscD0Kb2ludDp0LHNlcmllczplW3Quc2VyaWVzXSxw
b2ludEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpkMy5ldmVudH0pfSkuPQpvbigiY2xp
Y2siLGZ1bmN0aW9uKHQsbil7eC5lbGVtZW50Q2xpY2soe3ZhbHVlOmEodCxuKSxwb2ludDp0LHNl
cmllczplW3Quc2U9CnJpZXNdLHBvczpbaSh1KHQsbikpK2kucmFuZ2VCYW5kKCkqKGM/ZS5sZW5n
dGgvMjp0LnNlcmllcysuNSkvZS5sZW5ndGgscyhhKD0KdCxuKSsoYz90LnkwOjApKV0scG9pbnRJ
bmRleDpuLHNlcmllc0luZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnR9KSxkMy5ldmVudC5zPQp0b3BQ
cm9wYWdhdGlvbigpfSkub24oImRibGNsaWNrIixmdW5jdGlvbih0LG4pe3guZWxlbWVudERibENs
aWNrKHt2YWx1ZTphKHQ9CixuKSxwb2ludDp0LHNlcmllczplW3Quc2VyaWVzXSxwb3M6W2kodSh0
LG4pKStpLnJhbmdlQmFuZCgpKihjP2UubGVuZ3RoLzI6dD0KLnNlcmllcysuNSkvZS5sZW5ndGgs
cyhhKHQsbikrKGM/dC55MDowKSldLHBvaW50SW5kZXg6bixzZXJpZXNJbmRleDp0LnNlcmllPQpz
LGU6ZDMuZXZlbnR9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0pLEguYXR0cigiY2xhc3Mi
LGZ1bmN0aW9uKGUsdCl7cmU9CnR1cm4gYShlLHQpPDA/Im52LWJhciBuZWdhdGl2ZSI6Im52LWJh
ciBwb3NpdGl2ZSJ9KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aT0Kb24oZSx0KXtyZXR1cm4idHJh
bnNsYXRlKCIraSh1KGUsdCkpKyIsMCkifSksdiYmKG18fChtPTNEZS5tYXAoZnVuY3Rpb24oKXty
PQpldHVybiEwfSkpLEguc3R5bGUoImZpbGwiLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZDMucmdi
KHYoZSx0KSkuZGFya2VyKG0ubWE9CnAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0pLmZpbHRlcihm
dW5jdGlvbihlLHQpe3JldHVybiFtW3RdfSlbbl0pLnRvU3RyaW5nKD0KKX0pLnN0eWxlKCJzdHJv
a2UiLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZDMucmdiKHYoZSx0KSkuZGFya2VyKG0ubWFwKGZ1
bmN0PQppb24oZSx0KXtyZXR1cm4gdH0pLmZpbHRlcihmdW5jdGlvbihlLHQpe3JldHVybiFtW3Rd
fSlbbl0pLnRvU3RyaW5nKCl9KSksYz89CkguYXR0cigieSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4g
cyhjP2UueTE6MCl9KS5hdHRyKCJoZWlnaHQiLGZ1bmN0aW9uKGUsdCl7cj0KZXR1cm4gTWF0aC5t
YXgoTWF0aC5hYnMocyhlLnkrKGM/ZS55MDowKSktcyhjP2UueTA6MCkpLDEpfSkuYXR0cigieCIs
ZnVuY3RpPQpvbih0LG4pe3JldHVybiBjPzA6dC5zZXJpZXMqaS5yYW5nZUJhbmQoKS9lLmxlbmd0
aH0pLmF0dHIoIndpZHRoIixpLnJhbmdlQmE9Cm5kKCkvKGM/MTplLmxlbmd0aCkpOkguYXR0cigi
eCIsZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5zZXJpZXMqaS5yYW5nZUJhbmQoKT0KL2UubGVuZ3Ro
fSkuYXR0cigid2lkdGgiLGkucmFuZ2VCYW5kKCkvZS5sZW5ndGgpLmF0dHIoInkiLGZ1bmN0aW9u
KGUsdCl7cmV0PQp1cm4gYShlLHQpPDA/cygwKTpzKDApLXMoYShlLHQpKTwxP3MoMCktMTpzKGEo
ZSx0KSl8fDB9KS5hdHRyKCJoZWlnaHQiLGZ1bmM9CnRpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgo
TWF0aC5hYnMocyhhKGUsdCkpLXMoMCkpLDEpfHwwfSksVD0zRGkuY29weSgpLE49Cj0zRHMuY29w
eSgpfSksQ312YXIgdD0zRHt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0sbj0zRDk2MCxy
PTNENTAwLGk9Cj0zRGQzLnNjYWxlLm9yZGluYWwoKSxzPTNEZDMuc2NhbGUubGluZWFyKCksbz0z
RE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxZT0KNCksdT0zRGZ1bmN0aW9uKGUpe3JldHVybiBl
Lnh9LGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS55fSxmPTNEWzBdLGw9M0QhMCxjPQo9M0QhMSxo
PTNEInplcm8iLHA9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLGQ9M0QhMSx2PTNEbnVsbCxtLGc9
M0QxMjAwLHksYiw9CncsRSxTPTNELjEseD0zRGQzLmRpc3BhdGNoKCJjaGFydENsaWNrIiwiZWxl
bWVudENsaWNrIiwiZWxlbWVudERibENsaWNrIiwiZT0KbGVtZW50TW91c2VvdmVyIiwiZWxlbWVu
dE1vdXNlb3V0IiksVCxOO3JldHVybiBDLmRpc3BhdGNoPTNEeCxDLm9wdGlvbnM9M0RlPQoudXRp
bHMub3B0aW9uc0Z1bmMuYmluZChDKSxDLng9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8odT0zRGU9CixDKTp1fSxDLnk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oYT0zRGUsQyk6YX0sQy5tYXJnaW49M0RmdT0KbmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyh0LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvPQpw
OnQudG9wLHQucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OnQu
cmlnaHQsdC5ib3R0b209M0Q9CnR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRv
bTp0LmJvdHRvbSx0LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRD0KInVuZGVmaW5lZCI/ZS5sZWZ0
OnQubGVmdCxDKTp0fSxDLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
PQp0aD8obj0zRGUsQyk6bn0sQy5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8ocj0zRGUsQyk6cn09CixDLnhTY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhpPTNEZSxDKTppfSxDLnlTY2FsZT0zRGZ1bj0KY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLEMpOnN9LEMueERvbWFpbj0zRGZ1bmN0aW9uKGUpe3Jl
dHVyPQpuIGFyZ3VtZW50cy5sZW5ndGg/KHk9M0RlLEMpOnl9LEMueURvbWFpbj0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGU9Cm5ndGg/KGI9M0RlLEMpOmJ9LEMueFJhbmdlPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9M0RlLEMpOj0Kd30sQy55UmFuZ2U9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT0zRGUsQyk6RX0sQy5mb3Jj
ZVk9M0RmPQp1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSxDKTpmfSxD
LnN0YWNrZWQ9M0RmdW5jdGlvbihlKXtyZXQ9CnVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSxD
KTpjfSxDLnN0YWNrT2Zmc2V0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZT0KbnRzLmxlbmd0
aD8oaD0zRGUsQyk6aH0sQy5jbGlwRWRnZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhsPQo9M0RlLEMpOmx9LEMuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8ocD0zRGUudXRpbHMuZ2V0Q289Cmxvcih0KSxDKTpwfSxDLmJhckNvbG9yPTNE
ZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9M0RlLnV0aWxzLj0KZ2V0Q29s
b3IodCksQyk6dn0sQy5kaXNhYmxlZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhtPTNEZSxDPQopOm19LEMuaWQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8obz0zRGUsQyk6b30sQy5oaWRlYWJsZT0zRGY9CnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGQ9M0RlLEMpOmR9LEMuZGVsYXk9M0RmdW5jdGlvbihlKXtyZXR1cj0KbiBh
cmd1bWVudHMubGVuZ3RoPyhnPTNEZSxDKTpnfSxDLmdyb3VwU3BhY2luZz0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVuPQp0cy5sZW5ndGg/KFM9M0RlLEMpOlN9LEN9LGUubW9kZWxzLm11bHRp
QmFyQ2hhcnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIEEoZSk9CntyZXR1cm4gZS5lYWNoKGZ1bmN0
aW9uKGUpe3ZhciBiPTNEZDMuc2VsZWN0KHRoaXMpLGs9M0R0aGlzLE89M0QodXx8cGFyc2VJbj0K
dChiLnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS1vLmxlZnQtby5yaWdodCxNPTNEKGF8fHBhcnNlSW50
KGIuc3R5bGUoImhlaWdodCIpPQopfHw0MDApLW8udG9wLW8uYm90dG9tO0EudXBkYXRlPTNEZnVu
Y3Rpb24oKXtiLmNhbGwoQSl9LEEuY29udGFpbmVyPTNEdGhpcyw9ClMuZGlzYWJsZWQ9M0RlLm1h
cChmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlzYWJsZWR9KTtpZigheCl7dmFyIF87eD0zRHt9O2Zv
cj0KKF8gaW4gUylTW19daW5zdGFuY2VvZiBBcnJheT94W19dPTNEU1tfXS5zbGljZSgwKTp4W19d
PTNEU1tfXX1pZighZXx8IWUubGVuPQpndGh8fCFlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4g
ZS52YWx1ZXMubGVuZ3RofSkubGVuZ3RoKXt2YXIgRD0zRGIuc2VsZWM9CnRBbGwoIi5udi1ub0Rh
dGEiKS5kYXRhKFtUXSk7cmV0dXJuIEQuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFz
cyIsIj0KbnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2VtIikuc3R5bGUoInRleHQtYW5j
aG9yIiwibWlkZGxlIiksRC5hdHRyKCJ4PQoiLG8ubGVmdCtPLzIpLmF0dHIoInkiLG8udG9wK00v
MikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLEF9Yi5zZWxlY3RBbGw9CigiLm52LW5vRGF0
YSIpLnJlbW92ZSgpLHc9M0R0LnhTY2FsZSgpLEU9M0R0LnlTY2FsZSgpO3ZhciBQPTNEYi5zZWxl
Y3RBbGwoIj0KZy5udi13cmFwLm52LW11bHRpQmFyV2l0aExlZ2VuZCIpLmRhdGEoW2VdKSxIPTNE
UC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoPQoiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbXVs
dGlCYXJXaXRoTGVnZW5kIikuYXBwZW5kKCJnIiksQj0zRFAuc2VsZWN0KCJnIik9CjtILmFwcGVu
ZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksSC5hcHBlbmQoImciKS5hdHRyKCJj
bGFzcyIsIm52LT0KeSBudi1heGlzIiksSC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWJh
cnNXcmFwIiksSC5hcHBlbmQoImciKS5hdHRyKCJjPQpsYXNzIiwibnYtbGVnZW5kV3JhcCIpLEgu
YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1jb250cm9sc1dyYXAiKSxjJiYoaS49CndpZHRo
KE8tQygpKSx0LmJhckNvbG9yKCkmJmUuZm9yRWFjaChmdW5jdGlvbihlLHQpe2UuY29sb3I9M0Rk
My5yZ2IoIiNjY2MiKT0KLmRhcmtlcih0KjEuNSkudG9TdHJpbmcoKX0pLEIuc2VsZWN0KCIubnYt
bGVnZW5kV3JhcCIpLmRhdHVtKGUpLmNhbGwoaSksby50PQpvcCE9M0RpLmhlaWdodCgpJiYoby50
b3A9M0RpLmhlaWdodCgpLE09M0QoYXx8cGFyc2VJbnQoYi5zdHlsZSgiaGVpZ2h0IikpfHw9CjQw
MCktby50b3Atby5ib3R0b20pLEIuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5z
Zm9ybSIsInRyYW5zbGF0ZT0KKCIrQygpKyIsIisgLW8udG9wKyIpIikpO2lmKGwpe3ZhciBqPTNE
W3trZXk6Ikdyb3VwZWQiLGRpc2FibGVkOnQuc3RhY2tlZCgpPQp9LHtrZXk6IlN0YWNrZWQiLGRp
c2FibGVkOiF0LnN0YWNrZWQoKX1dO3Mud2lkdGgoQygpKS5jb2xvcihbIiM0NDQiLCIjNDQ0Iiw9
CiIjNDQ0Il0pLEIuc2VsZWN0KCIubnYtY29udHJvbHNXcmFwIikuZGF0dW0oaikuYXR0cigidHJh
bnNmb3JtIiwidHJhbnNsYXRlKD0KMCwiKyAtby50b3ArIikiKS5jYWxsKHMpfVAuYXR0cigidHJh
bnNmb3JtIiwidHJhbnNsYXRlKCIrby5sZWZ0KyIsIitvLnRvcCsiPQopIiksZCYmQi5zZWxlY3Qo
Ii5udi15Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitPKyIsMCkiKSx0
LmQ9CmlzYWJsZWQoZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJsZWR9KSkud2lkdGgo
TykuaGVpZ2h0KE0pLmNvbG9yKGUubT0KYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8
ZihlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uPQpkaXNhYmxlZH0pKTt2
YXIgRj0zREIuc2VsZWN0KCIubnYtYmFyc1dyYXAiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbihl
KXtyZXQ9CnVybiFlLmRpc2FibGVkfSkpO0YuY2FsbCh0KTtpZihoKXtuLnNjYWxlKHcpLnRpY2tz
KE8vMTAwKS50aWNrU2l6ZSgtTSwwKSxCLj0Kc2VsZWN0KCIubnYteC5udi1heGlzIikuYXR0cigi
dHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitFLnJhbmdlKClbMF0rIikiKSxCPQouc2VsZWN0KCIu
bnYteC5udi1heGlzIikuY2FsbChuKTt2YXIgST0zREIuc2VsZWN0KCIubnYteC5udi1heGlzID4g
ZyIpLnNlbGU9CmN0QWxsKCJnIik7SS5zZWxlY3RBbGwoImxpbmUsIHRleHQiKS5zdHlsZSgib3Bh
Y2l0eSIsMSk7aWYobSl7dmFyIHE9M0RmdW5jdD0KaW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgi
K2UrIiwiK3QrIikifSxSPTNENSxVPTNEMTc7SS5zZWxlY3RBbGwoInRleHQiKS5hPQp0dHIoInRy
YW5zZm9ybSIsZnVuY3Rpb24oZSx0LG4pe3JldHVybiBxKDAsbiUyPTNEPTNEMD9SOlUpfSk7dmFy
IHo9M0RkMy5zZWw9CmVjdEFsbCgiLm52LXgubnYtYXhpcyAubnYtd3JhcCBnIGcgdGV4dCIpWzBd
Lmxlbmd0aDtCLnNlbGVjdEFsbCgiLm52LXgubnYtYT0KeGlzIC5udi1heGlzTWF4TWluIHRleHQi
KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHEoMCx0PTNEPTNEPQo9M0Qw
fHx6JTIhPTNEPTNEMD9VOlIpfSl9diYmSS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4gbiVN
YXRoLmNlaWwoZVswXS49CnZhbHVlcy5sZW5ndGgvKE8vMTAwKSkhPTNEPTNEMH0pLnNlbGVjdEFs
bCgidGV4dCwgbGluZSIpLnN0eWxlKCJvcGFjaXR5IiwwKT0KLGcmJkkuc2VsZWN0QWxsKCIudGlj
ayB0ZXh0IikuYXR0cigidHJhbnNmb3JtIiwicm90YXRlKCIrZysiIDAsMCkiKS5zdHlsZSgiPQp0
ZXh0LWFuY2hvciIsZz4wPyJzdGFydCI6ImVuZCIpLEIuc2VsZWN0KCIubnYteC5udi1heGlzIiku
c2VsZWN0QWxsKCJnLm52LWE9Cnhpc01heE1pbiB0ZXh0Iikuc3R5bGUoIm9wYWNpdHkiLDEpfXAm
JihyLnNjYWxlKEUpLnRpY2tzKE0vMzYpLnRpY2tTaXplKC1PLD0KMCksQi5zZWxlY3QoIi5udi15
Lm52LWF4aXMiKS5jYWxsKHIpKSxpLmRpc3BhdGNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24o
PQplKXtTPTNEZSxOLnN0YXRlQ2hhbmdlKFMpLEEudXBkYXRlKCl9KSxzLmRpc3BhdGNoLm9uKCJs
ZWdlbmRDbGljayIsZnVuY3Rpb249CihlLG4pe2lmKCFlLmRpc2FibGVkKXJldHVybjtqPTNEai5t
YXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJsZWQ9M0QhMCxlfT0KKSxlLmRpc2FibGVkPTNE
ITE7c3dpdGNoKGUua2V5KXtjYXNlIkdyb3VwZWQiOnQuc3RhY2tlZCghMSk7YnJlYWs7Y2FzZSJT
dGFjPQprZWQiOnQuc3RhY2tlZCghMCl9Uy5zdGFja2VkPTNEdC5zdGFja2VkKCksTi5zdGF0ZUNo
YW5nZShTKSxBLnVwZGF0ZSgpfSksTi49Cm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7eSYm
TChlLGsucGFyZW50Tm9kZSl9KSxOLm9uKCJjaGFuZ2VTdGF0ZSIsZnVuYz0KdGlvbihuKXt0eXBl
b2Ygbi5kaXNhYmxlZCE9M0QidW5kZWZpbmVkIiYmKGUuZm9yRWFjaChmdW5jdGlvbihlLHQpe2Uu
ZGlzYWJsPQplZD0zRG4uZGlzYWJsZWRbdF19KSxTLmRpc2FibGVkPTNEbi5kaXNhYmxlZCksdHlw
ZW9mIG4uc3RhY2tlZCE9M0QidW5kZWZpbmU9CmQiJiYodC5zdGFja2VkKG4uc3RhY2tlZCksUy5z
dGFja2VkPTNEbi5zdGFja2VkKSxBLnVwZGF0ZSgpfSl9KSxBfXZhciB0PTNEZT0KLm1vZGVscy5t
dWx0aUJhcigpLG49M0RlLm1vZGVscy5heGlzKCkscj0zRGUubW9kZWxzLmF4aXMoKSxpPTNEZS5t
b2RlbHMubGVnPQplbmQoKSxzPTNEZS5tb2RlbHMubGVnZW5kKCksbz0zRHt0b3A6MzAscmlnaHQ6
MjAsYm90dG9tOjUwLGxlZnQ6NjB9LHU9M0RudWw9CmwsYT0zRG51bGwsZj0zRGUudXRpbHMuZGVm
YXVsdENvbG9yKCksbD0zRCEwLGM9M0QhMCxoPTNEITAscD0zRCEwLGQ9M0QhMSx2PQo9M0QhMCxt
PTNEITEsZz0zRDAseT0zRCEwLGI9M0RmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiI8aDM+Iitl
KyI8L2gzPiIrIjw9CnA+IituKyIgb24gIit0KyI8L3A+In0sdyxFLFM9M0R7c3RhY2tlZDohMX0s
eD0zRG51bGwsVD0zRCJObyBEYXRhIEF2YWlsYWJsZT0KLiIsTj0zRGQzLmRpc3BhdGNoKCJ0b29s
dGlwU2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdGVDaGFuZ2UiLCJjaGFuZ2VTdGF0ZSIpPQosQz0z
RGZ1bmN0aW9uKCl7cmV0dXJuIGw/MTgwOjB9LGs9M0QwO3Quc3RhY2tlZCghMSksbi5vcmllbnQo
ImJvdHRvbSIpLnRpY2s9ClBhZGRpbmcoNykuaGlnaGxpZ2h0WmVybyghMCkuc2hvd01heE1pbigh
MSkudGlja0Zvcm1hdChmdW5jdGlvbihlKXtyZXR1cm4gZT0KfSksci5vcmllbnQoZD8icmlnaHQi
OiJsZWZ0IikudGlja0Zvcm1hdChkMy5mb3JtYXQoIiwuMWYiKSkscy51cGRhdGVTdGF0ZSghPQox
KTt2YXIgTD0zRGZ1bmN0aW9uKGkscyl7dmFyIG89M0RpLnBvc1swXSsocy5vZmZzZXRMZWZ0fHww
KSx1PTNEaS5wb3NbMV0rKHM9Ci5vZmZzZXRUb3B8fDApLGE9M0RuLnRpY2tGb3JtYXQoKSh0Lngo
KShpLnBvaW50LGkucG9pbnRJbmRleCkpLGY9M0RyLnRpY2tGbz0Kcm1hdCgpKHQueSgpKGkucG9p
bnQsaS5wb2ludEluZGV4KSksbD0zRGIoaS5zZXJpZXMua2V5LGEsZixpLEEpO2UudG9vbHRpcC5z
PQpob3coW28sdV0sbCxpLnZhbHVlPDA/Im4iOiJzIixudWxsLHMpfTtyZXR1cm4gdC5kaXNwYXRj
aC5vbigiZWxlbWVudE1vdXNlb3Y9CmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2Uu
cG9zWzBdK28ubGVmdCxlLnBvc1sxXStvLnRvcF0sTi50b29sdGlwUz0KaG93KGUpfSksdC5kaXNw
YXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe04udG9vbHRpcEhp
ZGUoPQplKX0pLE4ub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbigpe3kmJmUudG9vbHRpcC5jbGVh
bnVwKCl9KSxBLmRpc3BhdGNoPTNETiw9CkEubXVsdGliYXI9M0R0LEEubGVnZW5kPTNEaSxBLnhB
eGlzPTNEbixBLnlBeGlzPTNEcixkMy5yZWJpbmQoQSx0LCJ4IiwieSIsIj0KeERvbWFpbiIsInlE
b21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJmb3JjZVgiLCJmb3JjZVkiLCJjbGlwRWRnZSIsImlk
Iiwic3RhPQpja2VkIiwic3RhY2tPZmZzZXQiLCJkZWxheSIsImJhckNvbG9yIiwiZ3JvdXBTcGFj
aW5nIiksQS5vcHRpb25zPTNEZS51dGlscy49Cm9wdGlvbnNGdW5jLmJpbmQoQSksQS5tYXJnaW49
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oby50b3A9Cj0zRHR5cGVvZiBl
LnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDpvLnRvcCxvLnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQh
PTNEInVuZD0KZWZpbmVkIj9lLnJpZ2h0Om8ucmlnaHQsby5ib3R0b209M0R0eXBlb2YgZS5ib3R0
b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206PQpvLmJvdHRvbSxvLmxlZnQ9M0R0eXBlb2YgZS5s
ZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDpvLmxlZnQsQSk6b30sQS53aWR0aD0KPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RlLEEpOnV9LEEuaGVpZ2h0PTNEZnVu
Y3Rpb24oZSl7PQpyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0zRGUsQSk6YX0sQS5jb2xvcj0z
RGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHM9Ci5sZW5ndGg/KGY9M0RlLnV0aWxzLmdldENv
bG9yKHQpLGkuY29sb3IoZiksQSk6Zn0sQS5zaG93Q29udHJvbHM9M0RmdW5jdGlvbj0KKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZSxBKTpsfSxBLnNob3dMZWdlbmQ9M0RmdW5jdGlv
bihlKXtyZXR1cm4gPQphcmd1bWVudHMubGVuZ3RoPyhjPTNEZSxBKTpjfSxBLnNob3dYQXhpcz0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGU9Cm5ndGg/KGg9M0RlLEEpOmh9LEEuc2hv
d1lBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLD0KQSk6
cH0sQS5yaWdodEFsaWduWUF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oZD0zRGUsci5vcmllPQpudChlPyJyaWdodCI6ImxlZnQiKSxBKTpkfSxBLnJlZHVjZVhUaWNr
cz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGU9Cm5ndGg/KHY9M0RlLEEpOnZ9LEEu
cm90YXRlTGFiZWxzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9Cj0z
RGUsQSk6Z30sQS5zdGFnZ2VyTGFiZWxzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KG09M0RlLEEpOj0KbX0sQS50b29sdGlwPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGI9M0RlLEEpOmJ9LEEudG9vbHRpcHM9Cj0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyh5PTNEZSxBKTp5fSxBLnRvb2x0aXBDb250ZW50PTNEZnVuYz0K
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0zRGUsQSk6Yn0sQS5zdGF0ZT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhPQpyZ3VtZW50cy5sZW5ndGg/KFM9M0RlLEEpOlN9LEEuZGVmYXVs
dFN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy49Cmxlbmd0aD8oeD0zRGUsQSk6
eH0sQS5ub0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oVD0zRGUs
QT0KKTpUfSxBLnRyYW5zaXRpb25EdXJhdGlvbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhrPTNEZSxBKTprPQp9LEF9LGUubW9kZWxzLm11bHRpQmFySG9yaXpvbnRhbD0z
RGZ1bmN0aW9uKCl7ZnVuY3Rpb24gQyhlKXtyZXR1cm4gZS5lYWNoKGY9CnVuY3Rpb24oZSl7dmFy
IGk9M0RuLXQubGVmdC10LnJpZ2h0LHk9M0RyLXQudG9wLXQuYm90dG9tLEM9M0RkMy5zZWxlY3Qo
dGhpcz0KKTtwJiYoZT0zRGQzLmxheW91dC5zdGFjaygpLm9mZnNldCgiemVybyIpLnZhbHVlcyhm
dW5jdGlvbihlKXtyZXR1cm4gZS52YWx1PQplc30pLnkoYSkoZSkpLGUuZm9yRWFjaChmdW5jdGlv
bihlLHQpe2UudmFsdWVzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5zZXJpZXM9Cj0zRHR9KX0pLHAm
JmVbMF0udmFsdWVzLm1hcChmdW5jdGlvbih0LG4pe3ZhciByPTNEMCxpPTNEMDtlLm1hcChmdW5j
dGlvbihlKT0Ke3ZhciB0PTNEZS52YWx1ZXNbbl07dC5zaXplPTNETWF0aC5hYnModC55KSx0Lnk8
MD8odC55MT0zRGktdC5zaXplLGktPTNEdC5zPQppemUpOih0LnkxPTNEcixyKz0zRHQuc2l6ZSl9
KX0pO3ZhciBrPTNEYiYmdz9bXTplLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS49CnZhbHVlcy5t
YXAoZnVuY3Rpb24oZSx0KXtyZXR1cm57eDp1KGUsdCkseTphKGUsdCkseTA6ZS55MCx5MTplLnkx
fX0pfSk7cy5kbz0KbWFpbihifHxkMy5tZXJnZShrKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUu
eH0pKS5yYW5nZUJhbmRzKEV8fFswLHldLC4xKSxvPQouZG9tYWluKHd8fGQzLmV4dGVudChkMy5t
ZXJnZShrKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHA/ZS55PjA/ZS55MStlLnk6ZS49CnkxOmUu
eX0pLmNvbmNhdChmKSkpLGQmJiFwP28ucmFuZ2UoU3x8W28uZG9tYWluKClbMF08MD9tOjAsaS0o
by5kb21haW4oKVsxXT0KPjA/bTowKV0pOm8ucmFuZ2UoU3x8WzAsaV0pLFQ9M0RUfHxzLE49M0RO
fHxkMy5zY2FsZS5saW5lYXIoKS5kb21haW4oby5kb21hPQppbigpKS5yYW5nZShbbygwKSxvKDAp
XSk7dmFyIEw9M0RkMy5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtbXU9Cmx0
aWJhckhvcml6b250YWwiKS5kYXRhKFtlXSksQT0zREwuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRy
KCJjbGFzcyIsIm52ZDMgbj0Kdi13cmFwIG52LW11bHRpYmFySG9yaXpvbnRhbCIpLE89M0RBLmFw
cGVuZCgiZGVmcyIpLE09M0RBLmFwcGVuZCgiZyIpLF89M0RMPQouc2VsZWN0KCJnIik7TS5hcHBl
bmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWdyb3VwcyIpLEwuYXR0cigidHJhbnNmb3JtIiwidHI9
CmFuc2xhdGUoIit0LmxlZnQrIiwiK3QudG9wKyIpIik7dmFyIEQ9M0RMLnNlbGVjdCgiLm52LWdy
b3VwcyIpLnNlbGVjdEFsbCgiLj0KbnYtZ3JvdXAiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBl
fSxmdW5jdGlvbihlLHQpe3JldHVybiB0fSk7RC5lbnRlcigpLmFwPQpwZW5kKCJnIikuc3R5bGUo
InN0cm9rZS1vcGFjaXR5IiwxZS02KS5zdHlsZSgiZmlsbC1vcGFjaXR5IiwxZS02KSxELmV4aXQo
KS49CnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMWUtNikuc3R5bGUoImZpbGwtb3BhY2l0eSIsMWUt
NikucmVtb3ZlKCksRC5hdHRyKCJjbD0KYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiJudi1ncm91
cCBudi1zZXJpZXMtIit0fSkuY2xhc3NlZCgiaG92ZXIiLGZ1bmN0aW9uPQooZSl7cmV0dXJuIGUu
aG92ZXJ9KS5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gbChlLHQpfSkuc3R5bGUo
InN0cm89CmtlIixmdW5jdGlvbihlLHQpe3JldHVybiBsKGUsdCl9KSxELnN0eWxlKCJzdHJva2Ut
b3BhY2l0eSIsMSkuc3R5bGUoImZpbGwtbz0KcGFjaXR5IiwuNzUpO3ZhciBQPTNERC5zZWxlY3RB
bGwoImcubnYtYmFyIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1PQplc30pO1AuZXhp
dCgpLnJlbW92ZSgpO3ZhciBIPTNEUC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoInRyYW5zZm9y
bSIsZnVuY3Q9Cmlvbih0LG4scil7cmV0dXJuInRyYW5zbGF0ZSgiK04ocD90LnkwOjApKyIsIiso
cD8wOnIqcy5yYW5nZUJhbmQoKS9lLmxlbmd0aD0KK3ModSh0LG4pKSkrIikifSk7SC5hcHBlbmQo
InJlY3QiKS5hdHRyKCJ3aWR0aCIsMCkuYXR0cigiaGVpZ2h0IixzLnJhbmdlQmFuPQpkKCkvKHA/
MTplLmxlbmd0aCkpLFAub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24odCxuKXtkMy5zZWxlY3QodGhp
cykuY2xhc3NlZCg9CiJob3ZlciIsITApLHguZWxlbWVudE1vdXNlb3Zlcih7dmFsdWU6YSh0LG4p
LHBvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvcz0KOltvKGEodCxuKSsocD90LnkwOjApKSxz
KHUodCxuKSkrcy5yYW5nZUJhbmQoKSoocD9lLmxlbmd0aC8yOnQuc2VyaWVzKy41KS9lPQoubGVu
Z3RoXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpkMy5ldmVudH0pfSkub24o
Im1vdXNlb3V0IixmdW49CmN0aW9uKHQsbil7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVy
IiwhMSkseC5lbGVtZW50TW91c2VvdXQoe3ZhbHVlOmEodD0KLG4pLHBvaW50OnQsc2VyaWVzOmVb
dC5zZXJpZXNdLHBvaW50SW5kZXg6bixzZXJpZXNJbmRleDp0LnNlcmllcyxlOmQzLmV2ZW50PQp9
KX0pLm9uKCJjbGljayIsZnVuY3Rpb24odCxuKXt4LmVsZW1lbnRDbGljayh7dmFsdWU6YSh0LG4p
LHBvaW50OnQsc2VyaWVzOmU9Clt0LnNlcmllc10scG9zOltzKHUodCxuKSkrcy5yYW5nZUJhbmQo
KSoocD9lLmxlbmd0aC8yOnQuc2VyaWVzKy41KS9lLmxlbmd0aD0KLG8oYSh0LG4pKyhwP3QueTA6
MCkpXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpkMy5ldmVudH0pLGQzLmV2
PQplbnQuc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiZGJsY2xpY2siLGZ1bmN0aW9uKHQsbil7eC5l
bGVtZW50RGJsQ2xpY2soe3ZhbHU9CmU6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNd
LHBvczpbcyh1KHQsbikpK3MucmFuZ2VCYW5kKCkqKHA/ZS5sZW5ndD0KaC8yOnQuc2VyaWVzKy41
KS9lLmxlbmd0aCxvKGEodCxuKSsocD90LnkwOjApKV0scG9pbnRJbmRleDpuLHNlcmllc0luZGV4
OnQuPQpzZXJpZXMsZTpkMy5ldmVudH0pLGQzLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfSksSC5h
cHBlbmQoInRleHQiKSxkJiYhcD8oUC49CnNlbGVjdCgidGV4dCIpLmF0dHIoInRleHQtYW5jaG9y
IixmdW5jdGlvbihlLHQpe3JldHVybiBhKGUsdCk8MD8iZW5kIjoic3Rhcj0KdCJ9KS5hdHRyKCJ5
IixzLnJhbmdlQmFuZCgpLyhlLmxlbmd0aCoyKSkuYXR0cigiZHkiLCIuMzJlbSIpLnRleHQoZnVu
Y3Rpb24oPQplLHQpe3JldHVybiBnKGEoZSx0KSl9KSxQLnNlbGVjdCgidGV4dCIpLmF0dHIoIngi
LGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSw9CnQpPDA/LTQ6byhhKGUsdCkpLW8oMCkrNH0pKTpQ
LnNlbGVjdEFsbCgidGV4dCIpLnRleHQoIiIpLHYmJiFwPyhILmFwcGVuZCgidD0KZXh0IikuY2xh
c3NlZCgibnYtYmFyLWxhYmVsIiwhMCksUC5zZWxlY3QoInRleHQubnYtYmFyLWxhYmVsIikuYXR0
cigidGV4dC1hPQpuY2hvciIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShlLHQpPDA/InN0YXJ0Ijoi
ZW5kIn0pLmF0dHIoInkiLHMucmFuZ2VCYW5kKCk9Ci8oZS5sZW5ndGgqMikpLmF0dHIoImR5Iiwi
LjMyZW0iKS50ZXh0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHUoZSx0KX0pLFAuc2VsZT0KY3QoInRl
eHQubnYtYmFyLWxhYmVsIikuYXR0cigieCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShlLHQpPDA/
bygwKS1vKGEoZSx0PQopKSs0Oi00fSkpOlAuc2VsZWN0QWxsKCJ0ZXh0Lm52LWJhci1sYWJlbCIp
LnRleHQoIiIpLFAuYXR0cigiY2xhc3MiLGZ1bmN0aW89Cm4oZSx0KXtyZXR1cm4gYShlLHQpPDA/
Im52LWJhciBuZWdhdGl2ZSI6Im52LWJhciBwb3NpdGl2ZSJ9KSxjJiYoaHx8KGg9M0RlLj0KbWFw
KGZ1bmN0aW9uKCl7cmV0dXJuITB9KSksUC5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0LG4pe3Jl
dHVybiBkMy5yZ2IoYyhlPQosdCkpLmRhcmtlcihoLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiB0
fSkuZmlsdGVyKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIWhbdF09Cn0pW25dKS50b1N0cmluZygpfSku
c3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSx0LG4pe3JldHVybiBkMy5yZ2IoYyhlLHQpKS5kYT0K
cmtlcihoLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiB0fSkuZmlsdGVyKGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIWhbdF19KVtuXSkuPQp0b1N0cmluZygpfSkpLHA/UC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1
bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiK28oZS55MSk9CisiLCIrcyh1KGUsdCkpKyIp
In0pLnNlbGVjdCgicmVjdCIpLmF0dHIoIndpZHRoIixmdW5jdGlvbihlLHQpe3JldHVybiBNYXRo
Lj0KYWJzKG8oYShlLHQpK2UueTApLW8oZS55MCkpfSkuYXR0cigiaGVpZ2h0IixzLnJhbmdlQmFu
ZCgpKTpQLmF0dHIoInRyYW5zZm9yPQptIixmdW5jdGlvbih0LG4pe3JldHVybiJ0cmFuc2xhdGUo
IisoYSh0LG4pPDA/byhhKHQsbikpOm8oMCkpKyIsIisodC5zZXJpZXM9CipzLnJhbmdlQmFuZCgp
L2UubGVuZ3RoK3ModSh0LG4pKSkrIikifSkuc2VsZWN0KCJyZWN0IikuYXR0cigiaGVpZ2h0Iixz
LnJhbj0KZ2VCYW5kKCkvZS5sZW5ndGgpLmF0dHIoIndpZHRoIixmdW5jdGlvbihlLHQpe3JldHVy
biBNYXRoLm1heChNYXRoLmFicyhvKGEoPQplLHQpKS1vKDApKSwxKX0pLFQ9M0RzLmNvcHkoKSxO
PTNEby5jb3B5KCl9KSxDfXZhciB0PTNEe3RvcDowLHJpZ2h0OjAsYm90dG89Cm06MCxsZWZ0OjB9
LG49M0Q5NjAscj0zRDUwMCxpPTNETWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjFlNCkscz0zRGQz
LnNjYWxlLj0Kb3JkaW5hbCgpLG89M0RkMy5zY2FsZS5saW5lYXIoKSx1PTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGUueH0sYT0zRGZ1bmN0aW9uKGUpPQp7cmV0dXJuIGUueX0sZj0zRFswXSxsPTNEZS51
dGlscy5kZWZhdWx0Q29sb3IoKSxjPTNEbnVsbCxoLHA9M0QhMSxkPTNEITEsdj0KPTNEITEsbT0z
RDYwLGc9M0RkMy5mb3JtYXQoIiwuMmYiKSx5PTNEMTIwMCxiLHcsRSxTLHg9M0RkMy5kaXNwYXRj
aCgiY2hhcnRDPQpsaWNrIiwiZWxlbWVudENsaWNrIiwiZWxlbWVudERibENsaWNrIiwiZWxlbWVu
dE1vdXNlb3ZlciIsImVsZW1lbnRNb3VzZW91dCI9CiksVCxOO3JldHVybiBDLmRpc3BhdGNoPTNE
eCxDLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoQyksQy54PTNEZj0KdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsQyk6dX0sQy55PTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyPQpndW1lbnRzLmxlbmd0aD8oYT0zRGUsQyk6YX0sQy5tYXJnaW49M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD89Cih0LnRvcD0zRHR5cGVvZiBlLnRvcCE9
M0QidW5kZWZpbmVkIj9lLnRvcDp0LnRvcCx0LnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPQo9M0Qi
dW5kZWZpbmVkIj9lLnJpZ2h0OnQucmlnaHQsdC5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNE
InVuZGVmaW5lZCI/ZS49CmJvdHRvbTp0LmJvdHRvbSx0LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0z
RCJ1bmRlZmluZWQiP2UubGVmdDp0LmxlZnQsQyk6dH0sQz0KLndpZHRoPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49M0RlLEMpOm59LEMuaGVpZ2h0PTNEZnVuY3RpPQpv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0zRGUsQyk6cn0sQy54U2NhbGU9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXI9Cmd1bWVudHMubGVuZ3RoPyhzPTNEZSxDKTpzfSxDLnlTY2FsZT0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPz0KKG89M0RlLEMpOm99LEMueERv
bWFpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPTNEZSxDKTpifSxD
PQoueURvbWFpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3PTNEZSxD
KTp3fSxDLnhSYW5nZT0zRGZ1bmM9CnRpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9
M0RlLEMpOkV9LEMueVJhbmdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuID0KYXJndW1lbnRzLmxlbmd0
aD8oUz0zRGUsQyk6U30sQy5mb3JjZVk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0PQpoPyhmPTNEZSxDKTpmfSxDLnN0YWNrZWQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8ocD0zRGUsQyk6cH09CixDLmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGw9M0RlLnV0aWxzLmdldENvbG9yKHQpLEMpOj0KbH0sQy5iYXJDb2xv
cj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZS51dGlscy5nZXRD
b2xvcih0PQopLEMpOmN9LEMuZGlzYWJsZWQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oaD0zRGUsQyk6aH0sQy5pZD0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGk9M0RlLEMpOml9LEMuZGVsYXk9M0RmdW5jdGlvbihlKXtyPQpldHVybiBhcmd1
bWVudHMubGVuZ3RoPyh5PTNEZSxDKTp5fSxDLnNob3dWYWx1ZXM9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW09CmVudHMubGVuZ3RoPyhkPTNEZSxDKTpkfSxDLnNob3dCYXJMYWJlbHM9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbj0KZ3RoPyh2PTNEZSxDKTp2fSxDLnZhbHVlRm9y
bWF0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9M0RlPQosQyk6Z30s
Qy52YWx1ZVBhZGRpbmc9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0z
RGUsQyk6bX0sQ309CixlLm1vZGVscy5tdWx0aUJhckhvcml6b250YWxDaGFydD0zRGZ1bmN0aW9u
KCl7ZnVuY3Rpb24gQyhlKXtyZXR1cm4gZS5lYWNoKD0KZnVuY3Rpb24oZSl7dmFyIGQ9M0RkMy5z
ZWxlY3QodGhpcyksbT0zRHRoaXMsVD0zRCh1fHxwYXJzZUludChkLnN0eWxlKCJ3aWR0PQpoIikp
fHw5NjApLW8ubGVmdC1vLnJpZ2h0LGs9M0QoYXx8cGFyc2VJbnQoZC5zdHlsZSgiaGVpZ2h0Iikp
fHw0MDApLW8udG9wLW89Ci5ib3R0b207Qy51cGRhdGU9M0RmdW5jdGlvbigpe2QuY2FsbChDKX0s
Qy5jb250YWluZXI9M0R0aGlzLGIuZGlzYWJsZWQ9M0RlLj0KbWFwKGZ1bmN0aW9uKGUpe3JldHVy
biEhZS5kaXNhYmxlZH0pO2lmKCF3KXt2YXIgTDt3PTNEe307Zm9yKEwgaW4gYiliW0xdaW5zPQp0
YW5jZW9mIEFycmF5P3dbTF09M0RiW0xdLnNsaWNlKDApOndbTF09M0RiW0xdfWlmKCFlfHwhZS5s
ZW5ndGh8fCFlLmZpbHRlcig9CmZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS5s
ZW5ndGgpe3ZhciBBPTNEZC5zZWxlY3RBbGwoIi5udi1ub0RhdD0KYSIpLmRhdGEoW0VdKTtyZXR1
cm4gQS5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0RhdGEi
PQopLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxBLmF0
dHIoIngiLG8ubGVmdCtULzIpLmE9CnR0cigieSIsby50b3Aray8yKS50ZXh0KGZ1bmN0aW9uKGUp
e3JldHVybiBlfSksQ31kLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLj0KcmVtb3ZlKCksZz0zRHQu
eFNjYWxlKCkseT0zRHQueVNjYWxlKCk7dmFyIE89M0RkLnNlbGVjdEFsbCgiZy5udi13cmFwLm52
LW11PQpsdGlCYXJIb3Jpem9udGFsQ2hhcnQiKS5kYXRhKFtlXSksTT0zRE8uZW50ZXIoKS5hcHBl
bmQoImciKS5hdHRyKCJjbGFzcyIsIm49CnZkMyBudi13cmFwIG52LW11bHRpQmFySG9yaXpvbnRh
bENoYXJ0IikuYXBwZW5kKCJnIiksXz0zRE8uc2VsZWN0KCJnIik7TS5hcD0KcGVuZCgiZyIpLmF0
dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksTS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52
LXkgbnYtPQpheGlzIikuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi16ZXJvTGluZSIpLmFw
cGVuZCgibGluZSIpLE0uYXBwZW5kKCJnIik9Ci5hdHRyKCJjbGFzcyIsIm52LWJhcnNXcmFwIiks
TS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZFdyYXAiKSxNLj0KYXBwZW5kKCJn
IikuYXR0cigiY2xhc3MiLCJudi1jb250cm9sc1dyYXAiKSxjJiYoaS53aWR0aChULXgoKSksdC5i
YXJDb2xvcigpPQomJmUuZm9yRWFjaChmdW5jdGlvbihlLHQpe2UuY29sb3I9M0RkMy5yZ2IoIiNj
Y2MiKS5kYXJrZXIodCoxLjUpLnRvU3RyaW5nKCk9Cn0pLF8uc2VsZWN0KCIubnYtbGVnZW5kV3Jh
cCIpLmRhdHVtKGUpLmNhbGwoaSksby50b3AhPTNEaS5oZWlnaHQoKSYmKG8udG9wPQo9M0RpLmhl
aWdodCgpLGs9M0QoYXx8cGFyc2VJbnQoZC5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLW8udG9wLW8u
Ym90dG9tKSxfLnM9CmVsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRy
YW5zbGF0ZSgiK3goKSsiLCIrIC1vLnRvcCsiKSIpKT0KO2lmKGwpe3ZhciBEPTNEW3trZXk6Ikdy
b3VwZWQiLGRpc2FibGVkOnQuc3RhY2tlZCgpfSx7a2V5OiJTdGFja2VkIixkaXNhYmxlPQpkOiF0
LnN0YWNrZWQoKX1dO3Mud2lkdGgoeCgpKS5jb2xvcihbIiM0NDQiLCIjNDQ0IiwiIzQ0NCJdKSxf
LnNlbGVjdCgiLm52LWM9Cm9udHJvbHNXcmFwIikuZGF0dW0oRCkuYXR0cigidHJhbnNmb3JtIiwi
dHJhbnNsYXRlKDAsIisgLW8udG9wKyIpIikuY2FsbChzKT0KfU8uYXR0cigidHJhbnNmb3JtIiwi
dHJhbnNsYXRlKCIrby5sZWZ0KyIsIitvLnRvcCsiKSIpLHQuZGlzYWJsZWQoZS5tYXAoZnVuPQpj
dGlvbihlKXtyZXR1cm4gZS5kaXNhYmxlZH0pKS53aWR0aChUKS5oZWlnaHQoaykuY29sb3IoZS5t
YXAoZnVuY3Rpb24oZSx0KXs9CnJldHVybiBlLmNvbG9yfHxmKGUsdCl9KS5maWx0ZXIoZnVuY3Rp
b24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZH0pKTt2YXIgUD0KPTNEXy5zZWxlY3QoIi5udi1i
YXJzV3JhcCIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkp
PQo7UC5jYWxsKHQpO2lmKGgpe24uc2NhbGUoZykudGlja3Moay8yNCkudGlja1NpemUoLVQsMCks
Xy5zZWxlY3QoIi5udi14Lm52LWE9CnhpcyIpLmNhbGwobik7dmFyIEg9M0RfLnNlbGVjdCgiLm52
LXgubnYtYXhpcyIpLnNlbGVjdEFsbCgiZyIpO0guc2VsZWN0QWxsKD0KImxpbmUsIHRleHQiKX1w
JiYoci5zY2FsZSh5KS50aWNrcyhULzEwMCkudGlja1NpemUoLWssMCksXy5zZWxlY3QoIi5udi15
Lm52PQotYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIraysiKSIpLF8uc2Vs
ZWN0KCIubnYteS5udi1heGlzIikuY2E9CmxsKHIpKSxfLnNlbGVjdCgiLm52LXplcm9MaW5lIGxp
bmUiKS5hdHRyKCJ4MSIseSgwKSkuYXR0cigieDIiLHkoMCkpLmF0dHIoIj0KeTEiLDApLmF0dHIo
InkyIiwtayksaS5kaXNwYXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe2I9M0RlLFMu
c3RhdGVDPQpoYW5nZShiKSxDLnVwZGF0ZSgpfSkscy5kaXNwYXRjaC5vbigibGVnZW5kQ2xpY2si
LGZ1bmN0aW9uKGUsbil7aWYoIWUuZGlzYWI9CmxlZClyZXR1cm47RD0zREQubWFwKGZ1bmN0aW9u
KGUpe3JldHVybiBlLmRpc2FibGVkPTNEITAsZX0pLGUuZGlzYWJsZWQ9M0QhMT0KO3N3aXRjaChl
LmtleSl7Y2FzZSJHcm91cGVkIjp0LnN0YWNrZWQoITEpO2JyZWFrO2Nhc2UiU3RhY2tlZCI6dC5z
dGFja2VkKCEwPQopfWIuc3RhY2tlZD0zRHQuc3RhY2tlZCgpLFMuc3RhdGVDaGFuZ2UoYiksQy51
cGRhdGUoKX0pLFMub24oInRvb2x0aXBTaG93Iiw9CmZ1bmN0aW9uKGUpe3YmJk4oZSxtLnBhcmVu
dE5vZGUpfSksUy5vbigiY2hhbmdlU3RhdGUiLGZ1bmN0aW9uKG4pe3R5cGVvZiBuLj0KZGlzYWJs
ZWQhPTNEInVuZGVmaW5lZCImJihlLmZvckVhY2goZnVuY3Rpb24oZSx0KXtlLmRpc2FibGVkPTNE
bi5kaXNhYmxlZFt0PQpdfSksYi5kaXNhYmxlZD0zRG4uZGlzYWJsZWQpLHR5cGVvZiBuLnN0YWNr
ZWQhPTNEInVuZGVmaW5lZCImJih0LnN0YWNrZWQobi49CnN0YWNrZWQpLGIuc3RhY2tlZD0zRG4u
c3RhY2tlZCksQy51cGRhdGUoKX0pfSksQ312YXIgdD0zRGUubW9kZWxzLm11bHRpQmFySD0Kb3Jp
em9udGFsKCksbj0zRGUubW9kZWxzLmF4aXMoKSxyPTNEZS5tb2RlbHMuYXhpcygpLGk9M0RlLm1v
ZGVscy5sZWdlbmQoKS5oPQplaWdodCgzMCkscz0zRGUubW9kZWxzLmxlZ2VuZCgpLmhlaWdodCgz
MCksbz0zRHt0b3A6MzAscmlnaHQ6MjAsYm90dG9tOjUwLGw9CmVmdDo2MH0sdT0zRG51bGwsYT0z
RG51bGwsZj0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCksbD0zRCEwLGM9M0QhMCxoPTNEITAscD0K
PTNEITAsZD0zRCExLHY9M0QhMCxtPTNEZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4iPGgzPiIr
ZSsiIC0gIit0KyI8L2gzPiIrPQoiPHA+IituKyI8L3A+In0sZyx5LGI9M0R7c3RhY2tlZDpkfSx3
PTNEbnVsbCxFPTNEIk5vIERhdGEgQXZhaWxhYmxlLiIsUz0zRGQ9CjMuZGlzcGF0Y2goInRvb2x0
aXBTaG93IiwidG9vbHRpcEhpZGUiLCJzdGF0ZUNoYW5nZSIsImNoYW5nZVN0YXRlIikseD0zRGZ1
bj0KY3Rpb24oKXtyZXR1cm4gbD8xODA6MH0sVD0zRDA7dC5zdGFja2VkKGQpLG4ub3JpZW50KCJs
ZWZ0IikudGlja1BhZGRpbmcoNSkuPQpoaWdobGlnaHRaZXJvKCExKS5zaG93TWF4TWluKCExKS50
aWNrRm9ybWF0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksci5vcmllbnQ9CigiYm90dG9tIikudGlj
a0Zvcm1hdChkMy5mb3JtYXQoIiwuMWYiKSkscy51cGRhdGVTdGF0ZSghMSk7dmFyIE49M0RmdW5j
dGlvbj0KKGkscyl7dmFyIG89M0RpLnBvc1swXSsocy5vZmZzZXRMZWZ0fHwwKSx1PTNEaS5wb3Nb
MV0rKHMub2Zmc2V0VG9wfHwwKSxhPTNEPQpuLnRpY2tGb3JtYXQoKSh0LngoKShpLnBvaW50LGku
cG9pbnRJbmRleCkpLGY9M0RyLnRpY2tGb3JtYXQoKSh0LnkoKShpLnBvaW49CnQsaS5wb2ludElu
ZGV4KSksbD0zRG0oaS5zZXJpZXMua2V5LGEsZixpLEMpO2UudG9vbHRpcC5zaG93KFtvLHVdLGws
aS52YWx1ZT0KPDA/ImUiOiJ3IixudWxsLHMpfTtyZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVu
dE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvPQpuKGUpe2UucG9zPTNEW2UucG9zWzBdK28ubGVm
dCxlLnBvc1sxXStvLnRvcF0sUy50b29sdGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2g9Ci5vbigiZWxl
bWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe1MudG9vbHRpcEhpZGUoZSl9KSxTLm9u
KCJ0b29sdGlwSD0KaWRlIixmdW5jdGlvbigpe3YmJmUudG9vbHRpcC5jbGVhbnVwKCl9KSxDLmRp
c3BhdGNoPTNEUyxDLm11bHRpYmFyPTNEdCxDLmxlPQpnZW5kPTNEaSxDLnhBeGlzPTNEbixDLnlB
eGlzPTNEcixkMy5yZWJpbmQoQyx0LCJ4IiwieSIsInhEb21haW4iLCJ5RG9tYWluIiw9CiJ4UmFu
Z2UiLCJ5UmFuZ2UiLCJmb3JjZVgiLCJmb3JjZVkiLCJjbGlwRWRnZSIsImlkIiwiZGVsYXkiLCJz
aG93VmFsdWVzIiwicz0KaG93QmFyTGFiZWxzIiwidmFsdWVGb3JtYXQiLCJzdGFja2VkIiwiYmFy
Q29sb3IiKSxDLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvPQpuc0Z1bmMuYmluZChDKSxDLm1hcmdp
bj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvLnRvcD0zRHR5cGU9Cm9m
IGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOm8udG9wLG8ucmlnaHQ9M0R0eXBlb2YgZS5yaWdo
dCE9M0QidW5kZWZpbmVkIj0KP2UucmlnaHQ6by5yaWdodCxvLmJvdHRvbT0zRHR5cGVvZiBlLmJv
dHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTpvLmJvdHRvPQptLG8ubGVmdD0zRHR5cGVvZiBl
LmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0Om8ubGVmdCxDKTpvfSxDLndpZHRoPTNEZnVuY3Q9
CmlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsQyk6dX0sQy5oZWlnaHQ9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYT0Kcmd1bWVudHMubGVuZ3RoPyhhPTNEZSxDKTphfSxDLmNvbG9y
PTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/PQooZj0zRGUudXRpbHMuZ2V0
Q29sb3IodCksaS5jb2xvcihmKSxDKTpmfSxDLnNob3dDb250cm9scz0zRGZ1bmN0aW9uKGUpe3Jl
dHU9CnJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLEMpOmx9LEMuc2hvd0xlZ2VuZD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudD0Kcy5sZW5ndGg/KGM9M0RlLEMpOmN9LEMuc2hvd1hBeGlz
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9Cj0zRGUsQyk6aH0sQy5z
aG93WUF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsQyk6
cH0sQz0KLnRvb2x0aXA9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0z
RGUsQyk6bX0sQy50b29sdGlwcz0zRGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHY9M0RlLEMpOnZ9LEMudG9vbHRpcENvbnRlbnQ9M0RmdW5jdGlvbig9CmUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhtPTNEZSxDKTptfSxDLnN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZT0KbnRzLmxlbmd0aD8oYj0zRGUsQyk6Yn0sQy5kZWZhdWx0U3RhdGU9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0PQpoPyh3PTNEZSxDKTp3fSxDLm5vRGF0YT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPTNEZSxDKTpFfSw9CkMudHJhbnNp
dGlvbkR1cmF0aW9uPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFQ9M0Rl
LEMpOlR9LEN9LD0KZS5tb2RlbHMubXVsdGlDaGFydD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gQyhl
KXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhPQpyIHU9M0RkMy5zZWxlY3QodGhpcyksZj0z
RHRoaXM7Qy51cGRhdGU9M0RmdW5jdGlvbigpe3UuY2FsbChDKX0sQy5jb250YWluZXI9Cj0zRHRo
aXM7dmFyIGs9M0Qocnx8cGFyc2VJbnQodS5zdHlsZSgid2lkdGgiKSl8fDk2MCktdC5sZWZ0LXQu
cmlnaHQsTD0zRChpfD0KfHBhcnNlSW50KHUuc3R5bGUoImhlaWdodCIpKXx8NDAwKS10LnRvcC10
LmJvdHRvbSxBPTNEZS5maWx0ZXIoZnVuY3Rpb24oZSl7PQpyZXR1cm4hZS5kaXNhYmxlZCYmZS50
eXBlPTNEPTNEImxpbmUiJiZlLnlBeGlzPTNEPTNEMX0pLE89M0RlLmZpbHRlcihmdW5jdGk9Cm9u
KGUpe3JldHVybiFlLmRpc2FibGVkJiZlLnR5cGU9M0Q9M0QibGluZSImJmUueUF4aXM9M0Q9M0Qy
fSksTT0zRGUuZmlsdGVyKD0KZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQmJmUudHlwZT0z
RD0zRCJiYXIiJiZlLnlBeGlzPTNEPTNEMX0pLF89M0RlLmZpPQpsdGVyKGZ1bmN0aW9uKGUpe3Jl
dHVybiFlLmRpc2FibGVkJiZlLnR5cGU9M0Q9M0QiYmFyIiYmZS55QXhpcz0zRD0zRDJ9KSxEPQo9
M0RlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZCYmZS50eXBlPTNEPTNEImFy
ZWEiJiZlLnlBeGlzPTNEPQo9M0QxfSksUD0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFl
LmRpc2FibGVkJiZlLnR5cGU9M0Q9M0QiYXJlYSImJmUueUE9Cnhpcz0zRD0zRDJ9KSxIPTNEZS5m
aWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQmJmUueUF4aXM9M0Q9M0QxfSkubT0K
YXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlvbihlLHQpe3JldHVybnt4
OmUueCx5OmUueX19KX0pLEI9Cj0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2Fi
bGVkJiZlLnlBeGlzPTNEPTNEMn0pLm1hcChmdW5jdGlvbihlKT0Ke3JldHVybiBlLnZhbHVlcy5t
YXAoZnVuY3Rpb24oZSx0KXtyZXR1cm57eDplLngseTplLnl9fSl9KTthLmRvbWFpbihkMy5leHRl
PQpudChkMy5tZXJnZShILmNvbmNhdChCKSksZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0pKS5yYW5n
ZShbMCxrXSk7dmFyIGo9M0R1LnM9CmVsZWN0QWxsKCJnLndyYXAubXVsdGlDaGFydCIpLmRhdGEo
W2VdKSxGPTNEai5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYT0Kc3MiLCJ3cmFwIG52ZDMg
bXVsdGlDaGFydCIpLmFwcGVuZCgiZyIpO0YuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJ4IGF4
aXMiPQopLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJ5MSBheGlzIiksRi5hcHBlbmQoImci
KS5hdHRyKCJjbGFzcyIsInkyIGF4aXM9CiIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJs
aW5lczFXcmFwIiksRi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImxpbj0KZXMyV3JhcCIpLEYu
YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJiYXJzMVdyYXAiKSxGLmFwcGVuZCgiZyIpLmF0dHIo
ImNsYXNzPQoiLCJiYXJzMldyYXAiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwic3RhY2sx
V3JhcCIpLEYuYXBwZW5kKCJnIikuYXR0cig9CiJjbGFzcyIsInN0YWNrMldyYXAiKSxGLmFwcGVu
ZCgiZyIpLmF0dHIoImNsYXNzIiwibGVnZW5kV3JhcCIpO3ZhciBJPTNEai5zZT0KbGVjdCgiZyIp
O3MmJih4LndpZHRoKGsvMiksSS5zZWxlY3QoIi5sZWdlbmRXcmFwIikuZGF0dW0oZS5tYXAoZnVu
Y3Rpb24oZSl7PQpyZXR1cm4gZS5vcmlnaW5hbEtleT0zRGUub3JpZ2luYWxLZXk9M0Q9M0Q9M0R1
bmRlZmluZWQ/ZS5rZXk6ZS5vcmlnaW5hbEtleSw9CmUua2V5PTNEZS5vcmlnaW5hbEtleSsoZS55
QXhpcz0zRD0zRDE/IiI6IiAocmlnaHQgYXhpcykiKSxlfSkpLmNhbGwoeCksdC50bz0KcCE9M0R4
LmhlaWdodCgpJiYodC50b3A9M0R4LmhlaWdodCgpLEw9M0QoaXx8cGFyc2VJbnQodS5zdHlsZSgi
aGVpZ2h0IikpfHw0PQowMCktdC50b3AtdC5ib3R0b20pLEkuc2VsZWN0KCIubGVnZW5kV3JhcCIp
LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2s9Ci8yKyIsIisgLXQudG9wKyIpIikpLGQu
d2lkdGgoaykuaGVpZ2h0KEwpLmludGVycG9sYXRlKCJtb25vdG9uZSIpLmNvbG9yKGUubT0KYXAo
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8blt0JW4ubGVuZ3RoXX0pLmZpbHRlcihmdW5j
dGlvbih0LG4pe3JldHVyPQpuIWVbbl0uZGlzYWJsZWQmJmVbbl0ueUF4aXM9M0Q9M0QxJiZlW25d
LnR5cGU9M0Q9M0QibGluZSJ9KSksdi53aWR0aChrKS5oZWk9CmdodChMKS5pbnRlcnBvbGF0ZSgi
bW9ub3RvbmUiKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxuWz0K
dCVuLmxlbmd0aF19KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZCYm
ZVtuXS55QXhpcz0zRD0zRDImPQomZVtuXS50eXBlPTNEPTNEImxpbmUifSkpLG0ud2lkdGgoayku
aGVpZ2h0KEwpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmU9CnR1cm4gZS5jb2xvcnx8blt0
JW4ubGVuZ3RoXX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkJiZl
Wz0Kbl0ueUF4aXM9M0Q9M0QxJiZlW25dLnR5cGU9M0Q9M0QiYmFyIn0pKSxnLndpZHRoKGspLmhl
aWdodChMKS5jb2xvcihlLm1hcChmPQp1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fG5bdCVu
Lmxlbmd0aF19KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVs9Cm5dLmRpc2FibGVkJiZl
W25dLnlBeGlzPTNEPTNEMiYmZVtuXS50eXBlPTNEPTNEImJhciJ9KSkseS53aWR0aChrKS5oZWln
aHQoTD0KKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxuW3Qlbi5s
ZW5ndGhdfSkuZmlsdGVyKGZ1bmN0aW9uPQoodCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZCYmZVtu
XS55QXhpcz0zRD0zRDEmJmVbbl0udHlwZT0zRD0zRCJhcmVhIn0pKSxiLnc9CmlkdGgoaykuaGVp
Z2h0KEwpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fG5bdCVuLmxl
bmd0aF19KT0KLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkJiZlW25d
LnlBeGlzPTNEPTNEMiYmZVtuXS50eXBlPTNEPQo9M0QiYXJlYSJ9KSksSS5hdHRyKCJ0cmFuc2Zv
cm0iLCJ0cmFuc2xhdGUoIit0LmxlZnQrIiwiK3QudG9wKyIpIik7dmFyIHE9M0Q9Ckkuc2VsZWN0
KCIubGluZXMxV3JhcCIpLmRhdHVtKEEpLFI9M0RJLnNlbGVjdCgiLmJhcnMxV3JhcCIpLmRhdHVt
KE0pLFU9M0RJLj0Kc2VsZWN0KCIuc3RhY2sxV3JhcCIpLmRhdHVtKEQpLHo9M0RJLnNlbGVjdCgi
LmxpbmVzMldyYXAiKS5kYXR1bShPKSxXPTNESS5zPQplbGVjdCgiLmJhcnMyV3JhcCIpLmRhdHVt
KF8pLFg9M0RJLnNlbGVjdCgiLnN0YWNrMldyYXAiKS5kYXR1bShQKSxWPTNERC5sZW49Cmd0aD9E
Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXN9KS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXty
ZXR1cm4gZS5tYXAoZj0KdW5jdGlvbihlLG4pe3JldHVybnt4OmUueCx5OmUueSt0W25dLnl9fSl9
KS5jb25jYXQoW3t4OjAseTowfV0pOltdLCQ9M0RQLmxlPQpuZ3RoP1AubWFwKGZ1bmN0aW9uKGUp
e3JldHVybiBlLnZhbHVlc30pLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBlLm1hcCg9CmZ1
bmN0aW9uKGUsbil7cmV0dXJue3g6ZS54LHk6ZS55K3Rbbl0ueX19KX0pLmNvbmNhdChbe3g6MCx5
OjB9XSk6W107aC5kb21haT0KbihsfHxkMy5leHRlbnQoZDMubWVyZ2UoSCkuY29uY2F0KFYpLGZ1
bmN0aW9uKGUpe3JldHVybiBlLnl9KSkucmFuZ2UoWzAsTF0pPQoscC5kb21haW4oY3x8ZDMuZXh0
ZW50KGQzLm1lcmdlKEIpLmNvbmNhdCgkKSxmdW5jdGlvbihlKXtyZXR1cm4gZS55fSkpLnJhbmc9
CmUoWzAsTF0pLGQueURvbWFpbihoLmRvbWFpbigpKSxtLnlEb21haW4oaC5kb21haW4oKSkseS55
RG9tYWluKGguZG9tYWluKCkpLD0Kdi55RG9tYWluKHAuZG9tYWluKCkpLGcueURvbWFpbihwLmRv
bWFpbigpKSxiLnlEb21haW4ocC5kb21haW4oKSksRC5sZW5ndGgmPQomZDMudHJhbnNpdGlvbihV
KS5jYWxsKHkpLFAubGVuZ3RoJiZkMy50cmFuc2l0aW9uKFgpLmNhbGwoYiksTS5sZW5ndGgmJmQz
LnQ9CnJhbnNpdGlvbihSKS5jYWxsKG0pLF8ubGVuZ3RoJiZkMy50cmFuc2l0aW9uKFcpLmNhbGwo
ZyksQS5sZW5ndGgmJmQzLnRyYW5zaT0KdGlvbihxKS5jYWxsKGQpLE8ubGVuZ3RoJiZkMy50cmFu
c2l0aW9uKHopLmNhbGwodiksdy50aWNrcyhrLzEwMCkudGlja1NpemUoPQotTCwwKSxJLnNlbGVj
dCgiLnguYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrTCsiKSIpLGQzLnRy
YW5zaXQ9CmlvbihJLnNlbGVjdCgiLnguYXhpcyIpKS5jYWxsKHcpLEUudGlja3MoTC8zNikudGlj
a1NpemUoLWssMCksZDMudHJhbnNpdGlvbj0KKEkuc2VsZWN0KCIueTEuYXhpcyIpKS5jYWxsKEUp
LFMudGlja3MoTC8zNikudGlja1NpemUoLWssMCksZDMudHJhbnNpdGlvbihJPQouc2VsZWN0KCIu
eTIuYXhpcyIpKS5jYWxsKFMpLEkuc2VsZWN0KCIueTIuYXhpcyIpLnN0eWxlKCJvcGFjaXR5IixC
Lmxlbmd0aD89CjE6MCkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrYS5yYW5nZSgpWzFd
KyIsMCkiKSx4LmRpc3BhdGNoLm9uKCJzdGF0ZT0KQ2hhbmdlIixmdW5jdGlvbihlKXtDLnVwZGF0
ZSgpfSksVC5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe28mJk4oZSxmLnBhPQpyZW50Tm9k
ZSl9KX0pLEN9dmFyIHQ9M0R7dG9wOjMwLHJpZ2h0OjIwLGJvdHRvbTo1MCxsZWZ0OjYwfSxuPTNE
ZDMuc2NhbGUuY2E9CnRlZ29yeTIwKCkucmFuZ2UoKSxyPTNEbnVsbCxpPTNEbnVsbCxzPTNEITAs
bz0zRCEwLHU9M0RmdW5jdGlvbihlLHQsbixyLGkpez0KcmV0dXJuIjxoMz4iK2UrIjwvaDM+Iisi
PHA+IituKyIgYXQgIit0KyI8L3A+In0sYSxmLGwsYyxhPTNEZDMuc2NhbGUubGluZWFyPQooKSxo
PTNEZDMuc2NhbGUubGluZWFyKCkscD0zRGQzLnNjYWxlLmxpbmVhcigpLGQ9M0RlLm1vZGVscy5s
aW5lKCkueVNjYWxlKGg9Ciksdj0zRGUubW9kZWxzLmxpbmUoKS55U2NhbGUocCksbT0zRGUubW9k
ZWxzLm11bHRpQmFyKCkuc3RhY2tlZCghMSkueVNjYWxlKD0KaCksZz0zRGUubW9kZWxzLm11bHRp
QmFyKCkuc3RhY2tlZCghMSkueVNjYWxlKHApLHk9M0RlLm1vZGVscy5zdGFja2VkQXJlYSgpPQou
eVNjYWxlKGgpLGI9M0RlLm1vZGVscy5zdGFja2VkQXJlYSgpLnlTY2FsZShwKSx3PTNEZS5tb2Rl
bHMuYXhpcygpLnNjYWxlKGE9Cikub3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg1KSxFPTNE
ZS5tb2RlbHMuYXhpcygpLnNjYWxlKGgpLm9yaWVudCgibGVmdD0KIiksUz0zRGUubW9kZWxzLmF4
aXMoKS5zY2FsZShwKS5vcmllbnQoInJpZ2h0IikseD0zRGUubW9kZWxzLmxlZ2VuZCgpLmhlaWdo
PQp0KDMwKSxUPTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhpZGUiKSxOPTNE
ZnVuY3Rpb24odCxuKXt2YXIgcj0KPTNEdC5wb3NbMF0rKG4ub2Zmc2V0TGVmdHx8MCksaT0zRHQu
cG9zWzFdKyhuLm9mZnNldFRvcHx8MCkscz0zRHcudGlja0Zvcm1hPQp0KCkoZC54KCkodC5wb2lu
dCx0LnBvaW50SW5kZXgpKSxvPTNEKHQuc2VyaWVzLnlBeGlzPTNEPTNEMj9TOkUpLnRpY2tGb3Jt
YXQ9CigpKGQueSgpKHQucG9pbnQsdC5wb2ludEluZGV4KSksYT0zRHUodC5zZXJpZXMua2V5LHMs
byx0LEMpO2UudG9vbHRpcC5zaG93KD0KW3IsaV0sYSx1bmRlZmluZWQsdW5kZWZpbmVkLG4ub2Zm
c2V0UGFyZW50KX07cmV0dXJuIGQuZGlzcGF0Y2gub24oImVsZW1lbnRNPQpvdXNlb3Zlci50b29s
dGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXSt0LmxlZnQsZS5wb3NbMV0rdC50b3Bd
LFQudG89Cm9sdGlwU2hvdyhlKX0pLGQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29s
dGlwIixmdW5jdGlvbihlKXtULnRvb2x0aT0KcEhpZGUoZSl9KSx2LmRpc3BhdGNoLm9uKCJlbGVt
ZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UuPQpwb3NbMF0rdC5s
ZWZ0LGUucG9zWzFdK3QudG9wXSxULnRvb2x0aXBTaG93KGUpfSksdi5kaXNwYXRjaC5vbigiZWxl
bWVudE1vdXM9CmVvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7VC50b29sdGlwSGlkZShlKX0pLG0u
ZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZT0Kci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBv
cz0zRFtlLnBvc1swXSt0LmxlZnQsZS5wb3NbMV0rdC50b3BdLFQudG9vbHRpcFNoPQpvdyhlKX0p
LG0uZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtULnRv
b2x0aXBIaWRlKGU9Cil9KSxnLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAi
LGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdKz0KdC5sZWZ0LGUucG9zWzFdK3QudG9wXSxU
LnRvb2x0aXBTaG93KGUpfSksZy5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvPQpvbHRp
cCIsZnVuY3Rpb24oZSl7VC50b29sdGlwSGlkZShlKX0pLHkuZGlzcGF0Y2gub24oInRvb2x0aXBT
aG93IixmdW5jdGlvbig9CmUpe2lmKCFNYXRoLnJvdW5kKHkueSgpKGUucG9pbnQpKjEwMCkpcmV0
dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtkMy5zZWxlYz0KdEFsbCgiLnBvaW50LmhvdmVyIiku
Y2xhc3NlZCgiaG92ZXIiLCExKX0sMCksITE7ZS5wb3M9M0RbZS5wb3NbMF0rdC5sZWZ0LGUuPQpw
b3NbMV0rdC50b3BdLFQudG9vbHRpcFNob3coZSl9KSx5LmRpc3BhdGNoLm9uKCJ0b29sdGlwSGlk
ZSIsZnVuY3Rpb24oZSl7VC49CnRvb2x0aXBIaWRlKGUpfSksYi5kaXNwYXRjaC5vbigidG9vbHRp
cFNob3ciLGZ1bmN0aW9uKGUpe2lmKCFNYXRoLnJvdW5kKGIueT0KKCkoZS5wb2ludCkqMTAwKSly
ZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe2QzLnNlbGVjdEFsbCgiLnBvaW50LmhvdmVyIiku
PQpjbGFzc2VkKCJob3ZlciIsITEpfSwwKSwhMTtlLnBvcz0zRFtlLnBvc1swXSt0LmxlZnQsZS5w
b3NbMV0rdC50b3BdLFQudG9vbHQ9CmlwU2hvdyhlKX0pLGIuZGlzcGF0Y2gub24oInRvb2x0aXBI
aWRlIixmdW5jdGlvbihlKXtULnRvb2x0aXBIaWRlKGUpfSksZC5kaT0Kc3BhdGNoLm9uKCJlbGVt
ZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK3QubGVm
dCxlPQoucG9zWzFdK3QudG9wXSxULnRvb2x0aXBTaG93KGUpfSksZC5kaXNwYXRjaC5vbigiZWxl
bWVudE1vdXNlb3V0LnRvb2x0aXAiLGY9CnVuY3Rpb24oZSl7VC50b29sdGlwSGlkZShlKX0pLHYu
ZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuYz0KdGlvbihlKXtlLnBv
cz0zRFtlLnBvc1swXSt0LmxlZnQsZS5wb3NbMV0rdC50b3BdLFQudG9vbHRpcFNob3coZSl9KSx2
LmRpc3BhPQp0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtULnRv
b2x0aXBIaWRlKGUpfSksVC5vbigidG9vbHQ9CmlwSGlkZSIsZnVuY3Rpb24oKXtvJiZlLnRvb2x0
aXAuY2xlYW51cCgpfSksQy5kaXNwYXRjaD0zRFQsQy5saW5lczE9M0RkLEMubD0KaW5lczI9M0R2
LEMuYmFyczE9M0RtLEMuYmFyczI9M0RnLEMuc3RhY2sxPTNEeSxDLnN0YWNrMj0zRGIsQy54QXhp
cz0zRHcsQy55PQpBeGlzMT0zREUsQy55QXhpczI9M0RTLEMub3B0aW9ucz0zRGUudXRpbHMub3B0
aW9uc0Z1bmMuYmluZChDKSxDLng9M0RmdW5jdGk9Cm9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhnZXRYPTNEZSxkLngoZSksbS54KGUpLEMpOmdldFh9LEMueT0zRGZ1bmN0aT0Kb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGdldFk9M0RlLGQueShlKSxtLnkoZSksQyk6Z2V0WX0s
Qy55RG9tYWluMT0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0Rl
LEMpOmx9LEMueURvbWFpbjI9M0RmdW5jdGlvbihlPQope3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhjPTNEZSxDKTpjfSxDLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWU9Cm50cy5s
ZW5ndGg/KHQ9M0RlLEMpOnR9LEMud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8ocj0zRD0KZSxDKTpyfSxDLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhpPTNEZSxDKTppfSxDLmNvbG9yPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8obj0zRGUseC5jb2xvcihlKSxDKTpufSxDLnNob3dMZWdlbmQ9Cj0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPTNEZSxDKTpzfSxDLnRvb2x0
aXBzPTNEZnVuY3Rpb24oZT0KKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsQyk6b30s
Qy50b29sdGlwQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVyPQpuIGFyZ3VtZW50cy5sZW5ndGg/
KHU9M0RlLEMpOnV9LEN9LGUubW9kZWxzLm9obGNCYXI9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIHg9
CihlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBnPTNEbi10LmxlZnQtdC5yaWdodCx4
PTNEci10LnRvcC10LmJvdHRvbT0KLFQ9M0RkMy5zZWxlY3QodGhpcyk7cy5kb21haW4oeXx8ZDMu
ZXh0ZW50KGVbMF0udmFsdWVzLm1hcCh1KS5jb25jYXQocCkpKSx2PQo/cy5yYW5nZSh3fHxbZyou
NS9lWzBdLnZhbHVlcy5sZW5ndGgsZyooZVswXS52YWx1ZXMubGVuZ3RoLS41KS9lWzBdLnZhbHVl
cy49Cmxlbmd0aF0pOnMucmFuZ2Uod3x8WzAsZ10pLG8uZG9tYWluKGJ8fFtkMy5taW4oZVswXS52
YWx1ZXMubWFwKGgpLmNvbmNhdChkKT0KKSxkMy5tYXgoZVswXS52YWx1ZXMubWFwKGMpLmNvbmNh
dChkKSldKS5yYW5nZShFfHxbeCwwXSkscy5kb21haW4oKVswXT0zRD0KPTNEPTNEcy5kb21haW4o
KVsxXSYmKHMuZG9tYWluKClbMF0/cy5kb21haW4oW3MuZG9tYWluKClbMF0tcy5kb21haW4oKVsw
XSouPQowMSxzLmRvbWFpbigpWzFdK3MuZG9tYWluKClbMV0qLjAxXSk6cy5kb21haW4oWy0xLDFd
KSksby5kb21haW4oKVswXT0zRD0zRD0KPTNEby5kb21haW4oKVsxXSYmKG8uZG9tYWluKClbMF0/
by5kb21haW4oW28uZG9tYWluKClbMF0rby5kb21haW4oKVswXSouMDEsPQpvLmRvbWFpbigpWzFd
LW8uZG9tYWluKClbMV0qLjAxXSk6by5kb21haW4oWy0xLDFdKSk7dmFyIE49M0RkMy5zZWxlY3Qo
dGhpcyk9Ci5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1vaGxjQmFyIikuZGF0YShbZVswXS52YWx1
ZXNdKSxDPTNETi5lbnRlcigpLmFwcGVuZD0KKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdy
YXAgbnYtb2hsY0JhciIpLGs9M0RDLmFwcGVuZCgiZGVmcyIpLEw9M0RDLmFwPQpwZW5kKCJnIiks
QT0zRE4uc2VsZWN0KCJnIik7TC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXRpY2tzIiks
Ti5hdHRyKCI9CnRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50b3ArIikiKSxU
Lm9uKCJjbGljayIsZnVuY3Rpb24oZSx0KXtTLj0KY2hhcnRDbGljayh7ZGF0YTplLGluZGV4OnQs
cG9zOmQzLmV2ZW50LGlkOml9KX0pLGsuYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoPQoiaWQiLCJu
di1jaGFydC1jbGlwLXBhdGgtIitpKS5hcHBlbmQoInJlY3QiKSxOLnNlbGVjdCgiI252LWNoYXJ0
LWNsaXAtcGF0aC09CiIraSsiIHJlY3QiKS5hdHRyKCJ3aWR0aCIsZykuYXR0cigiaGVpZ2h0Iix4
KSxBLmF0dHIoImNsaXAtcGF0aCIsbT8idXJsKCNudj0KLWNoYXJ0LWNsaXAtcGF0aC0iK2krIiki
OiIiKTt2YXIgTz0zRE4uc2VsZWN0KCIubnYtdGlja3MiKS5zZWxlY3RBbGwoIi5udi10PQppY2si
KS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlfSk7Ty5leGl0KCkucmVtb3ZlKCk7dmFyIE09M0RP
LmVudGVyKCkuYXBwZW49CmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0LG4pe3Jl
dHVybihmKGUsdCk+bChlLHQpPyJudi10aWNrIG5lZ2F0aT0KdmUiOiJudi10aWNrIHBvc2l0aXZl
IikrIiBudi10aWNrLSIrbisiLSIrdH0pLmF0dHIoImQiLGZ1bmN0aW9uKHQsbil7dmFyIHI9Cj0z
RGcvZVswXS52YWx1ZXMubGVuZ3RoKi45O3JldHVybiJtMCwwbDAsIisobyhmKHQsbikpLW8oYyh0
LG4pKSkrImwiKyAtci8yKz0KIiwwbCIrci8yKyIsMGwwLCIrKG8oaCh0LG4pKS1vKGYodCxuKSkp
KyJsMCwiKyhvKGwodCxuKSktbyhoKHQsbikpKSsibCIrci8yPQorIiwwbCIrIC1yLzIrIiwweiJ9
KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiK3ModSg9
CmUsdCkpKyIsIitvKGMoZSx0KSkrIikifSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24odCxuKXtk
My5zZWxlY3QodGhpcykuY2xhcz0Kc2VkKCJob3ZlciIsITApLFMuZWxlbWVudE1vdXNlb3Zlcih7
cG9pbnQ6dCxzZXJpZXM6ZVswXSxwb3M6W3ModSh0LG4pKSxvKGEoPQp0LG4pKV0scG9pbnRJbmRl
eDpuLHNlcmllc0luZGV4OjAsZTpkMy5ldmVudH0pfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbih0
LG49Cil7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMSksUy5lbGVtZW50TW91c2Vv
dXQoe3BvaW50OnQsc2VyaWVzOmVbMD0KXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6MCxlOmQz
LmV2ZW50fSl9KS5vbigiY2xpY2siLGZ1bmN0aW9uKGUsdCl7Uy5lbGVtPQplbnRDbGljayh7dmFs
dWU6YShlLHQpLGRhdGE6ZSxpbmRleDp0LHBvczpbcyh1KGUsdCkpLG8oYShlLHQpKV0sZTpkMy5l
dmVudCw9CmlkOml9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0pLm9uKCJkYmxjbGljayIs
ZnVuY3Rpb24oZSx0KXtTLmVsZW1lbnREYj0KbENsaWNrKHt2YWx1ZTphKGUsdCksZGF0YTplLGlu
ZGV4OnQscG9zOltzKHUoZSx0KSksbyhhKGUsdCkpXSxlOmQzLmV2ZW50LGlkPQo6aX0pLGQzLmV2
ZW50LnN0b3BQcm9wYWdhdGlvbigpfSk7Ty5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0LG4pe3Jl
dHVybihmKGU9Cix0KT5sKGUsdCk/Im52LXRpY2sgbmVnYXRpdmUiOiJudi10aWNrIHBvc2l0aXZl
IikrIiBudi10aWNrLSIrbisiLSIrdH0pLGQzLj0KdHJhbnNpdGlvbihPKS5hdHRyKCJ0cmFuc2Zv
cm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiK3ModShlLHQpKSsiPQosIitvKGMo
ZSx0KSkrIikifSkuYXR0cigiZCIsZnVuY3Rpb24odCxuKXt2YXIgcj0zRGcvZVswXS52YWx1ZXMu
bGVuZ3RoKi45O3I9CmV0dXJuIm0wLDBsMCwiKyhvKGYodCxuKSktbyhjKHQsbikpKSsibCIrIC1y
LzIrIiwwbCIrci8yKyIsMGwwLCIrKG8oaCh0LG4pKT0KLW8oZih0LG4pKSkrImwwLCIrKG8obCh0
LG4pKS1vKGgodCxuKSkpKyJsIityLzIrIiwwbCIrIC1yLzIrIiwweiJ9KX0pLHh9dmFyPQogdD0z
RHt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0sbj0zRDk2MCxyPTNENTAwLGk9M0RNYXRo
LmZsb29yKE1hdGgucmE9Cm5kb20oKSoxZTQpLHM9M0RkMy5zY2FsZS5saW5lYXIoKSxvPTNEZDMu
c2NhbGUubGluZWFyKCksdT0zRGZ1bmN0aW9uKGUpe3JldD0KdXJuIGUueH0sYT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBlLnl9LGY9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5vcGVufSxsPTNEZnVuPQpj
dGlvbihlKXtyZXR1cm4gZS5jbG9zZX0sYz0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLmhpZ2h9LGg9
M0RmdW5jdGlvbihlKXtyZXQ9CnVybiBlLmxvd30scD0zRFtdLGQ9M0RbXSx2PTNEITEsbT0zRCEw
LGc9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLHksYix3LEUsUz0KPTNEZDMuZGlzcGF0Y2goImNo
YXJ0Q2xpY2siLCJlbGVtZW50Q2xpY2siLCJlbGVtZW50RGJsQ2xpY2siLCJlbGVtZW50TW91c2Vv
PQp2ZXIiLCJlbGVtZW50TW91c2VvdXQiKTtyZXR1cm4geC5kaXNwYXRjaD0zRFMseC5vcHRpb25z
PTNEZS51dGlscy5vcHRpb25zRnU9Cm5jLmJpbmQoeCkseC54PTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RlLHgpOnV9LHgueT0zRGZ1bj0KY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLHgpOmF9LHgub3Blbj0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhPQpyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLHgpOmZ9LHguY2xvc2U9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD89CihsPTNEZSx4KTpsfSx4LmhpZ2g9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUseCk6Y30seC5sbz0Kdz0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSx4KTpofSx4Lm1hcmdpbj0zRGZ1bmN0
aW9uKGUpPQp7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPTNEdHlwZW9mIGUudG9wIT0z
RCJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQ9Ci5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1
bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT0zRHR5cGVvZiBlLj0KYm90dG9tIT0z
RCJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNE
InVuZGVmaW5lPQpkIj9lLmxlZnQ6dC5sZWZ0LHgpOnR9LHgud2lkdGg9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGU9Cix4KTpufSx4LmhlaWdodD0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZSx4KTpyfSx4LnhTY2FsZT0KPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLHgpOnN9LHgueVNjYWxlPTNE
ZnVuY3Rpb24oZSl7PQpyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUseCk6b30seC54RG9t
YWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW49CnRzLmxlbmd0aD8oeT0zRGUseCk6eX0s
eC55RG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9Cj0zRGUs
eCk6Yn0seC54UmFuZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz0z
RGUseCk6d30seC55Uj0KYW5nZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhFPTNEZSx4KTpFfSx4LmZvcmNlWD0zRGZ1bmN0aW9uPQooZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHA9M0RlLHgpOnB9LHguZm9yY2VZPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3U9Cm1l
bnRzLmxlbmd0aD8oZD0zRGUseCk6ZH0seC5wYWREYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KD0Kdj0zRGUseCk6dn0seC5jbGlwRWRnZT0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNEZSx4KTptfSx4PQouY29sb3I9M0RmdW5jdGlvbih0
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0zRGUudXRpbHMuZ2V0Q29sb3IodCkseCk6Z309
Cix4LmlkPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9M0RlLHgpOml9
LHh9LGUubW9kZWxzLnBpZT0zRD0KZnVuY3Rpb24oKXtmdW5jdGlvbiBTKGUpe3JldHVybiBlLmVh
Y2goZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcShlKXt2YXIgdD0zRChlPQouc3RhcnRBbmdsZStlLmVu
ZEFuZ2xlKSo5MC9NYXRoLlBJLTkwO3JldHVybiB0PjkwP3QtMTgwOnR9ZnVuY3Rpb24gUihlKXtl
LmU9Cm5kQW5nbGU9M0Rpc05hTihlLmVuZEFuZ2xlKT8wOmUuZW5kQW5nbGUsZS5zdGFydEFuZ2xl
PTNEaXNOYU4oZS5zdGFydEFuZ2xlKT0KPzA6ZS5zdGFydEFuZ2xlLG18fChlLmlubmVyUmFkaXVz
PTNEMCk7dmFyIHQ9M0RkMy5pbnRlcnBvbGF0ZSh0aGlzLl9jdXJyZW50PQosZSk7cmV0dXJuIHRo
aXMuX2N1cnJlbnQ9M0R0KDApLGZ1bmN0aW9uKGUpe3JldHVybiBBKHQoZSkpfX1mdW5jdGlvbiBV
KGUpe2U9Ci5pbm5lclJhZGl1cz0zRDA7dmFyIHQ9M0RkMy5pbnRlcnBvbGF0ZSh7c3RhcnRBbmds
ZTowLGVuZEFuZ2xlOjB9LGUpO3JldHVybj0KIGZ1bmN0aW9uKGUpe3JldHVybiBBKHQoZSkpfX12
YXIgbz0zRG4tdC5sZWZ0LXQucmlnaHQsZj0zRHItdC50b3AtdC5ib3R0b20sPQpTPTNETWF0aC5t
aW4obyxmKS8yLHg9M0RTLVMvNSxUPTNEZDMuc2VsZWN0KHRoaXMpLE49M0RULnNlbGVjdEFsbCgi
Lm52LXdyYXA9Ci5udi1waWUiKS5kYXRhKGUpLEM9M0ROLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0
cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtcD0KaWUgbnYtY2hhcnQtIit1KSxrPTNEQy5hcHBl
bmQoImciKSxMPTNETi5zZWxlY3QoImciKTtrLmFwcGVuZCgiZyIpLmF0dHIoImNsPQphc3MiLCJu
di1waWUiKSxrLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtcGllTGFiZWxzIiksTi5hdHRy
KCJ0cmFuc2Zvcm09CiIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50b3ArIikiKSxMLnNlbGVj
dCgiLm52LXBpZSIpLmF0dHIoInRyYW5zZm9ybSIsIj0KdHJhbnNsYXRlKCIrby8yKyIsIitmLzIr
IikiKSxMLnNlbGVjdCgiLm52LXBpZUxhYmVscyIpLmF0dHIoInRyYW5zZm9ybSIsInRyPQphbnNs
YXRlKCIrby8yKyIsIitmLzIrIikiKSxULm9uKCJjbGljayIsZnVuY3Rpb24oZSx0KXtFLmNoYXJ0
Q2xpY2soe2RhdGE6ZSw9CmluZGV4OnQscG9zOmQzLmV2ZW50LGlkOnV9KX0pO3ZhciBBPTNEZDMu
c3ZnLmFyYygpLm91dGVyUmFkaXVzKHgpO3kmJkEuc3Rhcj0KdEFuZ2xlKHkpLGImJkEuZW5kQW5n
bGUoYiksbSYmQS5pbm5lclJhZGl1cyhTKncpO3ZhciBPPTNEZDMubGF5b3V0LnBpZSgpLnNvPQpy
dChudWxsKS52YWx1ZShmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNhYmxlZD8wOnMoZSl9KSxNPTNE
Ti5zZWxlY3QoIi5udi1waWU9CiIpLnNlbGVjdEFsbCgiLm52LXNsaWNlIikuZGF0YShPKSxfPTNE
Ti5zZWxlY3QoIi5udi1waWVMYWJlbHMiKS5zZWxlY3RBbGwoIj0KLm52LWxhYmVsIikuZGF0YShP
KTtNLmV4aXQoKS5yZW1vdmUoKSxfLmV4aXQoKS5yZW1vdmUoKTt2YXIgRD0zRE0uZW50ZXIoKS5h
PQpwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtc2xpY2UiKS5vbigibW91c2VvdmVyIixmdW5j
dGlvbihlLHQpe2QzLnNlbGVjdCg9CnRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMCksRS5lbGVtZW50
TW91c2VvdmVyKHtsYWJlbDppKGUuZGF0YSksdmFsdWU6cyhlLmRhdD0KYSkscG9pbnQ6ZS5kYXRh
LHBvaW50SW5kZXg6dCxwb3M6W2QzLmV2ZW50LnBhZ2VYLGQzLmV2ZW50LnBhZ2VZXSxpZDp1fSl9
KS5vPQpuKCJtb3VzZW91dCIsZnVuY3Rpb24oZSx0KXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgi
aG92ZXIiLCExKSxFLmVsZW1lbnRNb3U9CnNlb3V0KHtsYWJlbDppKGUuZGF0YSksdmFsdWU6cyhl
LmRhdGEpLHBvaW50OmUuZGF0YSxpbmRleDp0LGlkOnV9KX0pLm9uKCJjbD0KaWNrIixmdW5jdGlv
bihlLHQpe0UuZWxlbWVudENsaWNrKHtsYWJlbDppKGUuZGF0YSksdmFsdWU6cyhlLmRhdGEpLHBv
aW50OmUuPQpkYXRhLGluZGV4OnQscG9zOmQzLmV2ZW50LGlkOnV9KSxkMy5ldmVudC5zdG9wUHJv
cGFnYXRpb24oKX0pLm9uKCJkYmxjbGljayI9CixmdW5jdGlvbihlLHQpe0UuZWxlbWVudERibENs
aWNrKHtsYWJlbDppKGUuZGF0YSksdmFsdWU6cyhlLmRhdGEpLHBvaW50OmUuZD0KYXRhLGluZGV4
OnQscG9zOmQzLmV2ZW50LGlkOnV9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0pO00uYXR0
cigiZmlsbCIsPQpmdW5jdGlvbihlLHQpe3JldHVybiBhKGUsdCl9KS5hdHRyKCJzdHJva2UiLGZ1
bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSx0KX0pO3Y9CmFyIFA9M0RELmFwcGVuZCgicGF0aCIpLmVh
Y2goZnVuY3Rpb24oZSl7dGhpcy5fY3VycmVudD0zRGV9KTtNLnNlbGVjdCgicGF0aD0KIikuYXR0
cigiZCIsQSk7aWYobCl7dmFyIEg9M0RkMy5zdmcuYXJjKCkuaW5uZXJSYWRpdXMoMCk7YyYmKEg9
M0RBKSxoJiYoSD0KPTNEZDMuc3ZnLmFyYygpLm91dGVyUmFkaXVzKEEub3V0ZXJSYWRpdXMoKSkp
LF8uZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkPQooIm52LWxhYmVsIiwhMCkuZWFjaChmdW5j
dGlvbihlLHQpe3ZhciBuPTNEZDMuc2VsZWN0KHRoaXMpO24uYXR0cigidHJhbnNmb3I9Cm0iLGZ1
bmN0aW9uKGUpe2lmKGcpe2Uub3V0ZXJSYWRpdXM9M0R4KzEwLGUuaW5uZXJSYWRpdXM9M0R4KzE1
O3ZhciB0PTNEKGUucz0KdGFydEFuZ2xlK2UuZW5kQW5nbGUpLzIqKDE4MC9NYXRoLlBJKTtyZXR1
cm4oZS5zdGFydEFuZ2xlK2UuZW5kQW5nbGUpLzI8TWF0PQpoLlBJP3QtPTNEOTA6dCs9M0Q5MCwi
dHJhbnNsYXRlKCIrSC5jZW50cm9pZChlKSsiKSByb3RhdGUoIit0KyIpIn1yZXR1cm4gZS49Cm91
dGVyUmFkaXVzPTNEUysxMCxlLmlubmVyUmFkaXVzPTNEUysxNSwidHJhbnNsYXRlKCIrSC5jZW50
cm9pZChlKSsiKSJ9KSxuLj0KYXBwZW5kKCJyZWN0Iikuc3R5bGUoInN0cm9rZSIsIiNmZmYiKS5z
dHlsZSgiZmlsbCIsIiNmZmYiKS5hdHRyKCJyeCIsMykuYXR0PQpyKCJyeSIsMyksbi5hcHBlbmQo
InRleHQiKS5zdHlsZSgidGV4dC1hbmNob3IiLGc/KGUuc3RhcnRBbmdsZStlLmVuZEFuZ2xlKS89
CjI8TWF0aC5QST8ic3RhcnQiOiJlbmQiOiJtaWRkbGUiKS5zdHlsZSgiZmlsbCIsIiMwMDAiKX0p
O3ZhciBCPTNEe30saj0zRDE0LD0KRj0zRDE0MCxJPTNEZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgu
Zmxvb3IoZVswXS9GKSpGKyIsIitNYXRoLmZsb29yKGVbMV0vaikqPQpqfTtfLmF0dHIoInRyYW5z
Zm9ybSIsZnVuY3Rpb24oZSl7aWYoZyl7ZS5vdXRlclJhZGl1cz0zRHgrMTAsZS5pbm5lclJhZGl1
cz0KPTNEeCsxNTt2YXIgdD0zRChlLnN0YXJ0QW5nbGUrZS5lbmRBbmdsZSkvMiooMTgwL01hdGgu
UEkpO3JldHVybihlLnN0YXJ0QW5nPQpsZStlLmVuZEFuZ2xlKS8yPE1hdGguUEk/dC09M0Q5MDp0
Kz0zRDkwLCJ0cmFuc2xhdGUoIitILmNlbnRyb2lkKGUpKyIpIHJvdGE9CnRlKCIrdCsiKSJ9ZS5v
dXRlclJhZGl1cz0zRFMrMTAsZS5pbm5lclJhZGl1cz0zRFMrMTU7dmFyIG49M0RILmNlbnRyb2lk
KGUpLD0Kcj0zREkobik7cmV0dXJuIEJbcl0mJihuWzFdLT0zRGopLEJbSShuKV09M0QhMCwidHJh
bnNsYXRlKCIrbisiKSJ9KSxfLnNlbGVjPQp0KCIubnYtbGFiZWwgdGV4dCIpLnN0eWxlKCJ0ZXh0
LWFuY2hvciIsZz8oZC5zdGFydEFuZ2xlK2QuZW5kQW5nbGUpLzI8TWF0aC49ClBJPyJzdGFydCI6
ImVuZCI6Im1pZGRsZSIpLnRleHQoZnVuY3Rpb24oZSx0KXt2YXIgbj0zRChlLmVuZEFuZ2xlLWUu
c3RhcnRBbj0KZ2xlKS8oMipNYXRoLlBJKSxyPTNEe2tleTppKGUuZGF0YSksdmFsdWU6cyhlLmRh
dGEpLHBlcmNlbnQ6ZDMuZm9ybWF0KCIlIikoPQpuKX07cmV0dXJuIGUudmFsdWUmJm4+dj9yW3Bd
OiIifSl9fSksU312YXIgdD0zRHt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ9CjowfSxuPTNE
NTAwLHI9M0Q1MDAsaT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9LHM9M0RmdW5jdGlvbihlKXty
ZXR1cm4gZS55fT0KLG89M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5kZXNjcmlwdGlvbn0sdT0zRE1h
dGguZmxvb3IoTWF0aC5yYW5kb20oKSoxZTQpLGE9Cj0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCks
Zj0zRGQzLmZvcm1hdCgiLC4yZiIpLGw9M0QhMCxjPTNEITAsaD0zRCExLHA9M0Qiaz0KZXkiLHY9
M0QuMDIsbT0zRCExLGc9M0QhMSx5PTNEITEsYj0zRCExLHc9M0QuNSxFPTNEZDMuZGlzcGF0Y2go
ImNoYXJ0Q2xpY2siPQosImVsZW1lbnRDbGljayIsImVsZW1lbnREYmxDbGljayIsImVsZW1lbnRN
b3VzZW92ZXIiLCJlbGVtZW50TW91c2VvdXQiKTtyZXQ9CnVybiBTLmRpc3BhdGNoPTNERSxTLm9w
dGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoUyksUy5tYXJnaW49M0RmdW5jdD0KaW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5k
ZWZpbmVkIj9lLnRvcDp0PQoudG9wLHQucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZp
bmVkIj9lLnJpZ2h0OnQucmlnaHQsdC5ib3R0b209M0R0eXA9CmVvZiBlLmJvdHRvbSE9M0QidW5k
ZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHRvbSx0LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bj0K
ZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxTKTp0fSxTLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/PQoobj0zRGUsUyk6bn0sUy5oZWlnaHQ9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0zRGUsUyk6cn0sUy49CnZhbHVlcz0zRGZ1bmN0aW9u
KHQpe3JldHVybiBlLmxvZygicGllLnZhbHVlcygpIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQuIiks
Uz0KfSxTLng9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUsUyk6
aX0sUy55PTNEZnVuY3Rpb24oZSl7PQpyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0zRGQzLmZ1
bmN0b3IoZSksUyk6c30sUy5kZXNjcmlwdGlvbj0zRGZ1bmN0aW9uKGU9Cil7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KG89M0RlLFMpOm99LFMuc2hvd0xhYmVscz0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcj0KZ3VtZW50cy5sZW5ndGg/KGw9M0RlLFMpOmx9LFMubGFiZWxTdW5iZWFtTGF5b3V0PTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtPQplbnRzLmxlbmd0aD8oZz0zRGUsUyk6Z30sUy5kb251
dExhYmVsc091dHNpZGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnQ9CnMubGVuZ3RoPyho
PTNEZSxTKTpofSxTLnBpZUxhYmVsc091dHNpZGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbj0KZ3RoPyhjPTNEZSxTKTpjfSxTLmxhYmVsVHlwZT0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxwPQo9M0RwfHwia2V5IixTKTpwfSxTLmRvbnV0PTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09M0RlLFMpOm09Cn0sUy5kb251
dFJhdGlvPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9M0RlLFMpOnd9
LFMuc3RhcnRBbj0KZ2xlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9
M0RlLFMpOnl9LFMuZW5kQW5nbGU9M0RmdW5jdGlvPQpuKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhiPTNEZSxTKTpifSxTLmlkPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW49CnRzLmxl
bmd0aD8odT0zRGUsUyk6dX0sUy5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhhPTNEZT0KLnV0aWxzLmdldENvbG9yKHQpLFMpOmF9LFMudmFsdWVGb3JtYXQ9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0PQpoPyhmPTNEZSxTKTpmfSxTLmxhYmVs
VGhyZXNob2xkPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9M0Q9CmUs
Uyk6dn0sU30sZS5tb2RlbHMucGllQ2hhcnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIHYoZSl7cmV0
dXJuIGUuZWFjaChmdW5jdD0KaW9uKGUpe3ZhciB1PTNEZDMuc2VsZWN0KHRoaXMpLGE9M0R0aGlz
LGY9M0QoaXx8cGFyc2VJbnQodS5zdHlsZSgid2lkdGgiKSl8PQp8OTYwKS1yLmxlZnQtci5yaWdo
dCxkPTNEKHN8fHBhcnNlSW50KHUuc3R5bGUoImhlaWdodCIpKXx8NDAwKS1yLnRvcC1yLmJvdHQ9
Cm9tO3YudXBkYXRlPTNEZnVuY3Rpb24oKXt1LmNhbGwodil9LHYuY29udGFpbmVyPTNEdGhpcyxs
LmRpc2FibGVkPTNEZS5tYXAoZj0KdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlzYWJsZWR9KTtpZigh
Yyl7dmFyIG07Yz0zRHt9O2ZvcihtIGluIGwpbFttXWluc3RhbmNlPQpvZiBBcnJheT9jW21dPTNE
bFttXS5zbGljZSgwKTpjW21dPTNEbFttXX1pZighZXx8IWUubGVuZ3RoKXt2YXIgZz0zRHUuc2Vs
ZWM9CnRBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFtoXSk7cmV0dXJuIGcuZW50ZXIoKS5hcHBlbmQo
InRleHQiKS5hdHRyKCJjbGFzcyIsIj0KbnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2Vt
Iikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiksZy5hdHRyKCJ4PQoiLHIubGVmdCtmLzIp
LmF0dHIoInkiLHIudG9wK2QvMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLHZ9dS5zZWxl
Y3RBbGw9CigiLm52LW5vRGF0YSIpLnJlbW92ZSgpO3ZhciB5PTNEdS5zZWxlY3RBbGwoImcubnYt
d3JhcC5udi1waWVDaGFydCIpLmRhdGEoWz0KZV0pLGI9M0R5LmVudGVyKCkuYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtcGllQ2hhcnQiKS5hcHBlPQpuZCgiZyIpLHc9
M0R5LnNlbGVjdCgiZyIpO2IuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1waWVXcmFwIiks
Yi5hcHBlbmQ9CigiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpLG8mJihuLndpZHRo
KGYpLmtleSh0LngoKSkseS5zZWxlY3QoIi5udj0KLWxlZ2VuZFdyYXAiKS5kYXR1bShlKS5jYWxs
KG4pLHIudG9wIT0zRG4uaGVpZ2h0KCkmJihyLnRvcD0zRG4uaGVpZ2h0KCksZD0KPTNEKHN8fHBh
cnNlSW50KHUuc3R5bGUoImhlaWdodCIpKXx8NDAwKS1yLnRvcC1yLmJvdHRvbSkseS5zZWxlY3Qo
Ii5udi1sZWdlPQpuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiKyAtci50
b3ArIikiKSkseS5hdHRyKCJ0cmFuc2Zvcm0iLCI9CnRyYW5zbGF0ZSgiK3IubGVmdCsiLCIrci50
b3ArIikiKSx0LndpZHRoKGYpLmhlaWdodChkKTt2YXIgRT0zRHcuc2VsZWN0KCIubj0Kdi1waWVX
cmFwIikuZGF0dW0oW2VdKTtkMy50cmFuc2l0aW9uKEUpLmNhbGwodCksbi5kaXNwYXRjaC5vbigi
c3RhdGVDaGFuZ2UiPQosZnVuY3Rpb24oZSl7bD0zRGUscC5zdGF0ZUNoYW5nZShsKSx2LnVwZGF0
ZSgpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXM9CmVvdXQudG9vbHRpcCIsZnVuY3Rpb24o
ZSl7cC50b29sdGlwSGlkZShlKX0pLHAub24oImNoYW5nZVN0YXRlIixmdW5jdGlvbih0KT0Ke3R5
cGVvZiB0LmRpc2FibGVkIT0zRCJ1bmRlZmluZWQiJiYoZS5mb3JFYWNoKGZ1bmN0aW9uKGUsbil7
ZS5kaXNhYmxlZD0zRHQuPQpkaXNhYmxlZFtuXX0pLGwuZGlzYWJsZWQ9M0R0LmRpc2FibGVkKSx2
LnVwZGF0ZSgpfSl9KSx2fXZhciB0PTNEZS5tb2RlbHMucGk9CmUoKSxuPTNEZS5tb2RlbHMubGVn
ZW5kKCkscj0zRHt0b3A6MzAscmlnaHQ6MjAsYm90dG9tOjIwLGxlZnQ6MjB9LGk9M0RudWxsLD0K
cz0zRG51bGwsbz0zRCEwLHU9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLGE9M0QhMCxmPTNEZnVu
Y3Rpb24oZSx0LG4scil7cmV0PQp1cm4iPGgzPiIrZSsiPC9oMz4iKyI8cD4iK3QrIjwvcD4ifSxs
PTNEe30sYz0zRG51bGwsaD0zRCJObyBEYXRhIEF2YWlsYWJsZS49CiIscD0zRGQzLmRpc3BhdGNo
KCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdGVDaGFuZ2UiLCJjaGFuZ2VTdGF0ZSIp
LD0KZD0zRGZ1bmN0aW9uKG4scil7dmFyIGk9M0R0LmRlc2NyaXB0aW9uKCkobi5wb2ludCl8fHQu
eCgpKG4ucG9pbnQpLHM9M0RuLnBvPQpzWzBdKyhyJiZyLm9mZnNldExlZnR8fDApLG89M0RuLnBv
c1sxXSsociYmci5vZmZzZXRUb3B8fDApLHU9M0R0LnZhbHVlRm9ybWE9CnQoKSh0LnkoKShuLnBv
aW50KSksYT0zRGYoaSx1LG4sdik7ZS50b29sdGlwLnNob3coW3Msb10sYSxuLnZhbHVlPDA/Im4i
OiJzIj0KLG51bGwscil9O3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRv
b2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPQo9M0RbZS5wb3NbMF0rci5sZWZ0LGUucG9zWzFdK3Iu
dG9wXSxwLnRvb2x0aXBTaG93KGUpfSkscC5vbigidG9vbHRpcFNob3ciLGY9CnVuY3Rpb24oZSl7
YSYmZChlKX0pLHAub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbigpe2EmJmUudG9vbHRpcC5jbGVh
bnVwKCl9KT0KLHYubGVnZW5kPTNEbix2LmRpc3BhdGNoPTNEcCx2LnBpZT0zRHQsZDMucmViaW5k
KHYsdCwidmFsdWVGb3JtYXQiLCJ2YWx1ZXMiPQosIngiLCJ5IiwiZGVzY3JpcHRpb24iLCJpZCIs
InNob3dMYWJlbHMiLCJkb251dExhYmVsc091dHNpZGUiLCJwaWVMYWJlbHNPdXQ9CnNpZGUiLCJs
YWJlbFR5cGUiLCJkb251dCIsImRvbnV0UmF0aW8iLCJsYWJlbFRocmVzaG9sZCIpLHYub3B0aW9u
cz0zRGUudXRpbD0Kcy5vcHRpb25zRnVuYy5iaW5kKHYpLHYubWFyZ2luPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHIudG9wPQo9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVm
aW5lZCI/ZS50b3A6ci50b3Asci5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmQ9CmVmaW5l
ZCI/ZS5yaWdodDpyLnJpZ2h0LHIuYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmlu
ZWQiP2UuYm90dG9tOj0Kci5ib3R0b20sci5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZp
bmVkIj9lLmxlZnQ6ci5sZWZ0LHYpOnJ9LHYud2lkdGg9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhpPTNEZSx2KTppfSx2LmhlaWdodD0zRGZ1bmN0aW9uKGUpez0KcmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLHYpOnN9LHYuY29sb3I9M0RmdW5jdGlvbihyKXty
ZXR1cm4gYXJndW1lbnRzPQoubGVuZ3RoPyh1PTNEZS51dGlscy5nZXRDb2xvcihyKSxuLmNvbG9y
KHUpLHQuY29sb3IodSksdik6dX0sdi5zaG93TGVnZW5kPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8obz0zRGUsdik6b30sdi50b29sdGlwcz0zRGZ1bmN0aW9uKGU9Cil7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLHYpOmF9LHYudG9vbHRpcENvbnRlbnQ9M0Rm
dW5jdGlvbihlKXtyZXR1cj0KbiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSx2KTpmfSx2LnN0YXRl
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5nPQp0aD8obD0zRGUsdik6bH0sdi5k
ZWZhdWx0U3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGU9
Cix2KTpjfSx2Lm5vRGF0YT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyho
PTNEZSx2KTpofSx2fSxlLm1vZD0KZWxzLnNjYXR0ZXI9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIEko
cSl7cmV0dXJuIHEuZWFjaChmdW5jdGlvbihJKXtmdW5jdGlvbiBRPQooKXtpZighZylyZXR1cm4h
MTt2YXIgZSxpPTNEZDMubWVyZ2UoSS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS52YWx1ZXMu
bWE9CnAoZnVuY3Rpb24oZSxuKXt2YXIgcj0zRGYoZSxuKSxpPTNEbChlLG4pO3JldHVybltvKHIp
LHUoaSksdCxuLGVdfSkuZmlsdGVyKD0KZnVuY3Rpb24oZSx0KXtyZXR1cm4gYihlWzRdLHQpfSl9
KSk7aWYoRD0zRD0zRD0zRCEwKXtpZih4KXt2YXIgYT0zRFguc2VsZWN0PQooImRlZnMiKS5zZWxl
Y3RBbGwoIi5udi1wb2ludC1jbGlwcyIpLmRhdGEoW3NdKS5lbnRlcigpO2EuYXBwZW5kKCJjbGlw
UGF0aCI9CikuYXR0cigiY2xhc3MiLCJudi1wb2ludC1jbGlwcyIpLmF0dHIoImlkIiwibnYtcG9p
bnRzLWNsaXAtIitzKTt2YXIgYz0zRFgucz0KZWxlY3QoIiNudi1wb2ludHMtY2xpcC0iK3MpLnNl
bGVjdEFsbCgiY2lyY2xlIikuZGF0YShpKTtjLmVudGVyKCkuYXBwZW5kKCJjPQppcmNsZSIpLmF0
dHIoInIiLFQpLGMuZXhpdCgpLnJlbW92ZSgpLGMuYXR0cigiY3giLGZ1bmN0aW9uKGUpe3JldHVy
biBlWzBdfSk9Ci5hdHRyKCJjeSIsZnVuY3Rpb24oZSl7cmV0dXJuIGVbMV19KSxYLnNlbGVjdCgi
Lm52LXBvaW50LXBhdGhzIikuYXR0cigiY2xpcD0KLXBhdGgiLCJ1cmwoI252LXBvaW50cy1jbGlw
LSIrcysiKSIpfWkubGVuZ3RoJiYoaS5wdXNoKFtvLnJhbmdlKClbMF0tMjAsdS5yPQphbmdlKClb
MF0tMjAsbnVsbCxudWxsXSksaS5wdXNoKFtvLnJhbmdlKClbMV0rMjAsdS5yYW5nZSgpWzFdKzIw
LG51bGwsbnVsbF09CiksaS5wdXNoKFtvLnJhbmdlKClbMF0tMjAsdS5yYW5nZSgpWzBdKzIwLG51
bGwsbnVsbF0pLGkucHVzaChbby5yYW5nZSgpWzFdKz0KMjAsdS5yYW5nZSgpWzFdLTIwLG51bGws
bnVsbF0pKTt2YXIgaD0zRGQzLmdlb20ucG9seWdvbihbWy0xMCwtMTBdLFstMTAscisxPQowXSxb
bisxMCxyKzEwXSxbbisxMCwtMTBdXSkscD0zRDFlLTY7aT0zRGkuc29ydChmdW5jdGlvbihlLHQp
e3JldHVybiBlWzBdLXQ9ClswXXx8ZVsxXS10WzFdfSk7Zm9yKHZhciBkPTNEMDtkPGkubGVuZ3Ro
LTE7KU1hdGguYWJzKGlbZF1bMF0taVtkKzFdWzBdKTxwJj0KJk1hdGguYWJzKGlbZF1bMV0taVtk
KzFdWzFdKTxwP2kuc3BsaWNlKGQrMSwxKTpkKys7dmFyIHY9M0RkMy5nZW9tLnZvcm9ub2koPQpp
KS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm57ZGF0YTpoLmNsaXAoZSksc2VyaWVzOmlbdF1bMl0s
cG9pbnQ6aVt0XVszXX19KSw9Cm09M0RYLnNlbGVjdCgiLm52LXBvaW50LXBhdGhzIikuc2VsZWN0
QWxsKCJwYXRoIikuZGF0YSh2KTttLmVudGVyKCkuYXBwZW5kKD0KInBhdGgiKS5hdHRyKCJjbGFz
cyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4ibnYtcGF0aC0iK3R9KSxtLmV4aXQoKS5yZW1vdmUoKSxt
PQouYXR0cigiZCIsZnVuY3Rpb24oZSl7cmV0dXJuIWV8fCFlLmRhdGF8fGUuZGF0YS5sZW5ndGg9
M0Q9M0Q9M0QwPyJNIDAgMCI6Ik09CiIrZS5kYXRhLmpvaW4oIkwiKSsiWiJ9KTt2YXIgeT0zRGZ1
bmN0aW9uKGUsbil7aWYoRilyZXR1cm4gMDt2YXIgcj0zRElbZS5zZT0Kcmllc107aWYodHlwZW9m
IHI9M0Q9M0QidW5kZWZpbmVkIilyZXR1cm47dmFyIGk9M0RyLnZhbHVlc1tlLnBvaW50XTtuKHtw
b2luPQp0Omksc2VyaWVzOnIscG9zOltvKGYoaSxlLnBvaW50KSkrdC5sZWZ0LHUobChpLGUucG9p
bnQpKSt0LnRvcF0sc2VyaWVzSW5kZXg9CjplLnNlcmllcyxwb2ludEluZGV4OmUucG9pbnR9KX07
bS5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe3koZSxfLmVsZW1lbnRDbGljaz0KKX0pLm9uKCJtb3Vz
ZW92ZXIiLGZ1bmN0aW9uKGUpe3koZSxfLmVsZW1lbnRNb3VzZW92ZXIpfSkub24oIm1vdXNlb3V0
IixmdW5jPQp0aW9uKGUsdCl7eShlLF8uZWxlbWVudE1vdXNlb3V0KX0pfWVsc2UgWC5zZWxlY3Qo
Ii5udi1ncm91cHMiKS5zZWxlY3RBbGwoIi49Cm52LWdyb3VwIikuc2VsZWN0QWxsKCIubnYtcG9p
bnQiKS5vbigiY2xpY2siLGZ1bmN0aW9uKGUsbil7aWYoRnx8IUlbZS5zZXJpZT0Kc10pcmV0dXJu
IDA7dmFyIHI9M0RJW2Uuc2VyaWVzXSxpPTNEci52YWx1ZXNbbl07Xy5lbGVtZW50Q2xpY2soe3Bv
aW50Omksc2VyPQppZXM6cixwb3M6W28oZihpLG4pKSt0LmxlZnQsdShsKGksbikpK3QudG9wXSxz
ZXJpZXNJbmRleDplLnNlcmllcyxwb2ludEluZGU9Cng6bn0pfSkub24oIm1vdXNlb3ZlciIsZnVu
Y3Rpb24oZSxuKXtpZihGfHwhSVtlLnNlcmllc10pcmV0dXJuIDA7dmFyIHI9M0RJWz0KZS5zZXJp
ZXNdLGk9M0RyLnZhbHVlc1tuXTtfLmVsZW1lbnRNb3VzZW92ZXIoe3BvaW50Omksc2VyaWVzOnIs
cG9zOltvKGYoaSxuPQopKSt0LmxlZnQsdShsKGksbikpK3QudG9wXSxzZXJpZXNJbmRleDplLnNl
cmllcyxwb2ludEluZGV4Om59KX0pLm9uKCJtb3VzZW89CnV0IixmdW5jdGlvbihlLHQpe2lmKEZ8
fCFJW2Uuc2VyaWVzXSlyZXR1cm4gMDt2YXIgbj0zRElbZS5zZXJpZXNdLHI9M0RuLnZhbD0KdWVz
W3RdO18uZWxlbWVudE1vdXNlb3V0KHtwb2ludDpyLHNlcmllczpuLHNlcmllc0luZGV4OmUuc2Vy
aWVzLHBvaW50SW5kZXg6PQp0fSl9KTtGPTNEITF9dmFyIHE9M0RuLXQubGVmdC10LnJpZ2h0LFI9
M0RyLXQudG9wLXQuYm90dG9tLFU9M0RkMy5zZWxlY3QodGg9CmlzKTtJLmZvckVhY2goZnVuY3Rp
b24oZSx0KXtlLnZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2Uuc2VyaWVzPTNEdH0pfSk7dj0K
YXIgVz0zRE4mJkMmJkE/W106ZDMubWVyZ2UoSS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFs
dWVzLm1hcChmdW5jdGlvbihlPQosdCl7cmV0dXJue3g6ZihlLHQpLHk6bChlLHQpLHNpemU6Yyhl
LHQpfX0pfSkpO28uZG9tYWluKE58fGQzLmV4dGVudChXLm1hcCg9CmZ1bmN0aW9uKGUpe3JldHVy
biBlLnh9KS5jb25jYXQoZCkpKSx3JiZJWzBdP28ucmFuZ2Uoa3x8WyhxKkUrcSkvKDIqSVswXS52
YT0KbHVlcy5sZW5ndGgpLHEtcSooMStFKS8oMipJWzBdLnZhbHVlcy5sZW5ndGgpXSk6by5yYW5n
ZShrfHxbMCxxXSksdS5kb21haW4oPQpDfHxkMy5leHRlbnQoVy5tYXAoZnVuY3Rpb24oZSl7cmV0
dXJuIGUueX0pLmNvbmNhdCh2KSkpLnJhbmdlKEx8fFtSLDBdKSxhLmQ9Cm9tYWluKEF8fGQzLmV4
dGVudChXLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5zaXplfSkuY29uY2F0KG0pKSkucmFuZ2Uo
T3x8Wz0KMTYsMjU2XSk7aWYoby5kb21haW4oKVswXT0zRD0zRD0zRG8uZG9tYWluKClbMV18fHUu
ZG9tYWluKClbMF09M0Q9M0Q9M0R1LmRvPQptYWluKClbMV0pTT0zRCEwO28uZG9tYWluKClbMF09
M0Q9M0Q9M0RvLmRvbWFpbigpWzFdJiYoby5kb21haW4oKVswXT9vLmRvbWE9CmluKFtvLmRvbWFp
bigpWzBdLW8uZG9tYWluKClbMF0qLjAxLG8uZG9tYWluKClbMV0rby5kb21haW4oKVsxXSouMDFd
KTpvLmRvbT0KYWluKFstMSwxXSkpLHUuZG9tYWluKClbMF09M0Q9M0Q9M0R1LmRvbWFpbigpWzFd
JiYodS5kb21haW4oKVswXT91LmRvbWFpbihbPQp1LmRvbWFpbigpWzBdLXUuZG9tYWluKClbMF0q
LjAxLHUuZG9tYWluKClbMV0rdS5kb21haW4oKVsxXSouMDFdKTp1LmRvbWFpbig9ClstMSwxXSkp
LGlzTmFOKG8uZG9tYWluKClbMF0pJiZvLmRvbWFpbihbLTEsMV0pLGlzTmFOKHUuZG9tYWluKClb
MF0pJiZ1LmRvbT0KYWluKFstMSwxXSksUD0zRFB8fG8sSD0zREh8fHUsQj0zREJ8fGE7dmFyIFg9
M0RVLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LXNjPQphdHRlciIpLmRhdGEoW0ldKSxWPTNEWC5l
bnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LXM9CmNhdHRl
ciBudi1jaGFydC0iK3MrKE0/IiBudi1zaW5nbGUtcG9pbnQiOiIiKSksJD0zRFYuYXBwZW5kKCJk
ZWZzIiksSj0zRFYuYT0KcHBlbmQoImciKSxLPTNEWC5zZWxlY3QoImciKTtKLmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnYtZ3JvdXBzIiksSi5hcHBlPQpuZCgiZyIpLmF0dHIoImNsYXNzIiwi
bnYtcG9pbnQtcGF0aHMiKSxYLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGU9CmZ0
KyIsIit0LnRvcCsiKSIpLCQuYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoImlkIiwibnYtZWRnZS1j
bGlwLSIrcykuYXBwZW5kKD0KInJlY3QiKSxYLnNlbGVjdCgiI252LWVkZ2UtY2xpcC0iK3MrIiBy
ZWN0IikuYXR0cigid2lkdGgiLHEpLmF0dHIoImhlaWdodCIsPQpSPjA/UjowKSxLLmF0dHIoImNs
aXAtcGF0aCIsUz8idXJsKCNudi1lZGdlLWNsaXAtIitzKyIpIjoiIiksRj0zRCEwO3ZhciBHPQo9
M0RYLnNlbGVjdCgiLm52LWdyb3VwcyIpLnNlbGVjdEFsbCgiLm52LWdyb3VwIikuZGF0YShmdW5j
dGlvbihlKXtyZXR1cm4gZX09CixmdW5jdGlvbihlKXtyZXR1cm4gZS5rZXl9KTtHLmVudGVyKCku
YXBwZW5kKCJnIikuc3R5bGUoInN0cm9rZS1vcGFjaXR5IiwxZT0KLTYpLnN0eWxlKCJmaWxsLW9w
YWNpdHkiLDFlLTYpLEcuZXhpdCgpLnJlbW92ZSgpLEcuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUs
PQp0KXtyZXR1cm4ibnYtZ3JvdXAgbnYtc2VyaWVzLSIrdH0pLmNsYXNzZWQoImhvdmVyIixmdW5j
dGlvbihlKXtyZXR1cm4gZS5ob3Y9CmVyfSksRy5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0KXty
ZXR1cm4gaShlLHQpfSkuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZT0KLHQpe3JldHVybiBpKGUs
dCl9KS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDEpLnN0eWxlKCJmaWxsLW9wYWNpdHkiLC41KTtp
ZihwPQope3ZhciBZPTNERy5zZWxlY3RBbGwoImNpcmNsZS5udi1wb2ludCIpLmRhdGEoZnVuY3Rp
b24oZSl7cmV0dXJuIGUudmFsdWVzfSw9CnkpO1kuZW50ZXIoKS5hcHBlbmQoImNpcmNsZSIpLnN0
eWxlKCJmaWxsIixmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfSkucz0KdHlsZSgic3Ryb2tl
IixmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfSkuYXR0cigiY3giLGZ1bmN0aW9uKHQsbil7
cmV0dXJuPQogZS51dGlscy5OYU50b1plcm8oUChmKHQsbikpKX0pLmF0dHIoImN5IixmdW5jdGlv
bih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnQ9Cm9aZXJvKEgobCh0LG4pKSl9KS5hdHRyKCJyIixm
dW5jdGlvbihlLHQpe3JldHVybiBNYXRoLnNxcnQoYShjKGUsdCkpL01hdGguUD0KSSl9KSxZLmV4
aXQoKS5yZW1vdmUoKSxHLmV4aXQoKS5zZWxlY3RBbGwoInBhdGgubnYtcG9pbnQiKS5hdHRyKCJj
eCIsZnVuY3RpPQpvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhvKGYodCxuKSkpfSku
YXR0cigiY3kiLGZ1bmN0aW9uKHQsbil7cmV0dXI9Cm4gZS51dGlscy5OYU50b1plcm8odShsKHQs
bikpKX0pLnJlbW92ZSgpLFkuZWFjaChmdW5jdGlvbihlLHQpe2QzLnNlbGVjdCh0aD0KaXMpLmNs
YXNzZWQoIm52LXBvaW50IiwhMCkuY2xhc3NlZCgibnYtcG9pbnQtIit0LCEwKS5jbGFzc2VkKCJo
b3ZlciIsITEpfSksPQpZLmF0dHIoImN4IixmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5h
TnRvWmVybyhvKGYodCxuKSkpfSkuYXR0cigiY3kiLGY9CnVuY3Rpb24odCxuKXtyZXR1cm4gZS51
dGlscy5OYU50b1plcm8odShsKHQsbikpKX0pLmF0dHIoInIiLGZ1bmN0aW9uKGUsdCl7cj0KZXR1
cm4gTWF0aC5zcXJ0KGEoYyhlLHQpKS9NYXRoLlBJKX0pfWVsc2V7dmFyIFk9M0RHLnNlbGVjdEFs
bCgicGF0aC5udi1wb2luPQp0IikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXN9KTtZ
LmVudGVyKCkuYXBwZW5kKCJwYXRoIikuc3R5bGUoImZpbGw9CiIsZnVuY3Rpb24oZSx0KXtyZXR1
cm4gZS5jb2xvcn0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sbz0K
cn0pLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIrUChm
KGUsdCkpKyIsIitIKGwoZSx0PQopKSsiKSJ9KS5hdHRyKCJkIixkMy5zdmcuc3ltYm9sKCkudHlw
ZShoKS5zaXplKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoYyhlLHQ9CikpfSkpLFkuZXhpdCgpLnJl
bW92ZSgpLEcuZXhpdCgpLnNlbGVjdEFsbCgicGF0aC5udi1wb2ludCIpLmF0dHIoInRyYW5zZm9y
bT0KIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitvKGYoZSx0KSkrIiwiK3UobChl
LHQpKSsiKSJ9KS5yZW1vdmUoKSxZPQouZWFjaChmdW5jdGlvbihlLHQpe2QzLnNlbGVjdCh0aGlz
KS5jbGFzc2VkKCJudi1wb2ludCIsITApLmNsYXNzZWQoIm52LXBvaW49CnQtIit0LCEwKS5jbGFz
c2VkKCJob3ZlciIsITEpfSksWS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJu
InRyYT0KbnNsYXRlKCIrbyhmKGUsdCkpKyIsIit1KGwoZSx0KSkrIikifSkuYXR0cigiZCIsZDMu
c3ZnLnN5bWJvbCgpLnR5cGUoaCkuc2l6PQplKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoYyhlLHQp
KX0pKX1jbGVhclRpbWVvdXQoaiksaj0zRHNldFRpbWVvdXQoUSwzMDApLFA9Cj0zRG8uY29weSgp
LEg9M0R1LmNvcHkoKSxCPTNEYS5jb3B5KCl9KSxJfXZhciB0PTNEe3RvcDowLHJpZ2h0OjAsYm90
dG9tOjAsbD0KZWZ0OjB9LG49M0Q5NjAscj0zRDUwMCxpPTNEZS51dGlscy5kZWZhdWx0Q29sb3Io
KSxzPTNETWF0aC5mbG9vcihNYXRoLnJhbmRvPQptKCkqMWU1KSxvPTNEZDMuc2NhbGUubGluZWFy
KCksdT0zRGQzLnNjYWxlLmxpbmVhcigpLGE9M0RkMy5zY2FsZS5saW5lYXIoKSw9CmY9M0RmdW5j
dGlvbihlKXtyZXR1cm4gZS54fSxsPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0sYz0zRGZ1bmN0
aW9uKGUpe3JldD0KdXJuIGUuc2l6ZXx8MX0saD0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnNoYXBl
fHwiY2lyY2xlIn0scD0zRCEwLGQ9M0RbXSx2PTNEPQpbXSxtPTNEW10sZz0zRCEwLHk9M0RudWxs
LGI9M0RmdW5jdGlvbihlKXtyZXR1cm4hZS5ub3RBY3RpdmV9LHc9M0QhMSxFPTNELjE9CixTPTNE
ITEseD0zRCEwLFQ9M0RmdW5jdGlvbigpe3JldHVybiAyNX0sTj0zRG51bGwsQz0zRG51bGwsaz0z
RG51bGwsTD0zRG51bD0KbCxBPTNEbnVsbCxPPTNEbnVsbCxNPTNEITEsXz0zRGQzLmRpc3BhdGNo
KCJlbGVtZW50Q2xpY2siLCJlbGVtZW50TW91c2VvdmVyPQoiLCJlbGVtZW50TW91c2VvdXQiKSxE
PTNEITAsUCxILEIsaixGPTNEITE7cmV0dXJuIEkuY2xlYXJIaWdobGlnaHRzPTNEZnVuY3Q9Cmlv
bigpe2QzLnNlbGVjdEFsbCgiLm52LWNoYXJ0LSIrcysiIC5udi1wb2ludC5ob3ZlciIpLmNsYXNz
ZWQoImhvdmVyIiwhMSl9LD0KSS5oaWdobGlnaHRQb2ludD0zRGZ1bmN0aW9uKGUsdCxuKXtkMy5z
ZWxlY3QoIi5udi1jaGFydC0iK3MrIiAubnYtc2VyaWVzLSIrPQplKyIgLm52LXBvaW50LSIrdCku
Y2xhc3NlZCgiaG92ZXIiLG4pfSxfLm9uKCJlbGVtZW50TW91c2VvdmVyLnBvaW50IixmdW5jdGk9
Cm9uKGUpe2cmJkkuaGlnaGxpZ2h0UG9pbnQoZS5zZXJpZXNJbmRleCxlLnBvaW50SW5kZXgsITAp
fSksXy5vbigiZWxlbWVudE1vdT0Kc2VvdXQucG9pbnQiLGZ1bmN0aW9uKGUpe2cmJkkuaGlnaGxp
Z2h0UG9pbnQoZS5zZXJpZXNJbmRleCxlLnBvaW50SW5kZXgsITEpPQp9KSxJLmRpc3BhdGNoPTNE
XyxJLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoSSksSS54PTNEZnVuY3Rpb24o
ZSk9CntyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGQzLmZ1bmN0b3IoZSksSSk6Zn0sSS55
PTNEZnVuY3Rpb24oZSl7cmV0dXJuID0KYXJndW1lbnRzLmxlbmd0aD8obD0zRGQzLmZ1bmN0b3Io
ZSksSSk6bH0sSS5zaXplPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtPQplbnRzLmxlbmd0aD8o
Yz0zRGQzLmZ1bmN0b3IoZSksSSk6Y30sSS5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnQ9CnMubGVuZ3RoPyh0LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRv
cDp0LnRvcCx0LnJpZ2h0PTNEdHlwZW9mID0KZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0
OnQucmlnaHQsdC5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmPQppbmVkIj9lLmJv
dHRvbTp0LmJvdHRvbSx0LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVm
dDp0LmxlZnQ9CixJKTp0fSxJLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KG49M0RlLEkpOm59LEkuaGVpZ2h0PQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8ocj0zRGUsSSk6cn0sSS54U2NhbGU9M0RmdW5jdGlvbihlKXs9CnJldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhvPTNEZSxJKTpvfSxJLnlTY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudD0Kcy5sZW5ndGg/KHU9M0RlLEkpOnV9LEkuelNjYWxlPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlPQosSSk6YX0sSS54RG9tYWluPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE49M0RlLEkpOk59LEkueURvbWE9CmluPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEM9M0RlLEkpOkN9LEkuc2l6ZURv
bWFpbj0zRGZ1bmN0aT0Kb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEE9M0RlLEkpOkF9
LEkueFJhbmdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyPQpndW1lbnRzLmxlbmd0aD8oaz0zRGUs
SSk6a30sSS55UmFuZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD89CihM
PTNEZSxJKTpMfSxJLnNpemVSYW5nZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhPPTNEZSxJKTpPfT0KLEkuZm9yY2VYPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGQ9M0RlLEkpOmR9LEkuZm9yY2VZPTNEZnVuPQpjdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8odj0zRGUsSSk6dn0sSS5mb3JjZVNpemU9M0RmdW5jdGlvbihlKXtyZXQ9
CnVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNEZSxJKTptfSxJLmludGVyYWN0aXZlPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZT0KbnRzLmxlbmd0aD8oZz0zRGUsSSk6Z30sSS5wb2ludEtleT0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PQo9M0RlLEkpOnl9LEkucG9p
bnRBY3RpdmU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0zRGUsSSk6
Yn09CixJLnBhZERhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odz0z
RGUsSSk6d30sSS5wYWREYXRhT3V0ZT0Kcj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhFPTNEZSxJKTpFfSxJLmNsaXBFZGdlPTNEZnVuY3Rpb24oPQplKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oUz0zRGUsSSk6U30sSS5jbGlwVm9yb25vaT0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiA9CmFyZ3VtZW50cy5sZW5ndGg/KHg9M0RlLEkpOnh9LEkudXNlVm9yb25vaT0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubD0KZW5ndGg/KEQ9M0RlLEQ9M0Q9M0Q9M0QhMSYmKHg9
M0QhMSksSSk6RH0sSS5jbGlwUmFkaXVzPTNEZnVuY3Rpb24oZSl7cmV0dXJuPQogYXJndW1lbnRz
Lmxlbmd0aD8oVD0zRGUsSSk6VH0sSS5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3Q9Cmg/KGk9M0RlLnV0aWxzLmdldENvbG9yKHQpLEkpOml9LEkuc2hhcGU9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbj0KZ3RoPyhoPTNEZSxJKTpofSxJLm9ubHlDaXJj
bGVzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlPQosSSk6cH0s
SS5pZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPTNEZSxJKTpzfSxJ
LnNpbmdsZVBvaW49CnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTT0z
RGUsSSk6TX0sSX0sZS5tb2RlbHMuc2NhdHRlckNoYT0KcnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9u
IEYoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXtmdW5jdGlvbiBKKCl7aWYoVClyPQpldHVy
biBXLnNlbGVjdCgiLm52LXBvaW50LXBhdGhzIikuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxs
IiksITE7Vy5zZWxlY3Q9CigiLm52LXBvaW50LXBhdGhzIikuc3R5bGUoInBvaW50ZXItZXZlbnRz
Iiwibm9uZSIpO3ZhciBpPTNEZDMubW91c2UodGhpcyk7aD0KLmRpc3RvcnRpb24oeCkuZm9jdXMo
aVswXSkscC5kaXN0b3J0aW9uKHgpLmZvY3VzKGlbMV0pLFcuc2VsZWN0KCIubnYtc2NhdHRlPQpy
V3JhcCIpLmNhbGwodCksYiYmVy5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5jYWxsKG4pLHcmJlcu
c2VsZWN0KCIubnYteS5udi09CmF4aXMiKS5jYWxsKHIpLFcuc2VsZWN0KCIubnYtZGlzdHJpYnV0
aW9uWCIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldD0KdXJuIWUuZGlzYWJsZWR9KSku
Y2FsbChvKSxXLnNlbGVjdCgiLm52LWRpc3RyaWJ1dGlvblkiKS5kYXR1bShlLmZpbHRlcihmdW5j
PQp0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkpLmNhbGwodSl9dmFyIEM9M0RkMy5zZWxlY3Qo
dGhpcyksaz0zRHRoaXMsTD0zRCg9CmZ8fHBhcnNlSW50KEMuc3R5bGUoIndpZHRoIikpfHw5NjAp
LWEubGVmdC1hLnJpZ2h0LEQ9M0QobHx8cGFyc2VJbnQoQy5zdHlsZT0KKCJoZWlnaHQiKSl8fDQw
MCktYS50b3AtYS5ib3R0b207Ri51cGRhdGU9M0RmdW5jdGlvbigpe0MuY2FsbChGKX0sRi5jb250
YWluPQplcj0zRHRoaXMsQS5kaXNhYmxlZD0zRGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5k
aXNhYmxlZH0pO2lmKCFPKXt2YXIgSTs9Ck89M0R7fTtmb3IoSSBpbiBBKUFbSV1pbnN0YW5jZW9m
IEFycmF5P09bSV09M0RBW0ldLnNsaWNlKDApOk9bSV09M0RBW0ldfWlmKD0KIWV8fCFlLmxlbmd0
aHx8IWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgp
e3ZhciBxPQo9M0RDLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW19dKTtyZXR1cm4gcS5l
bnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHI9CigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0
dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKT0KLHEuYXR0cigi
eCIsYS5sZWZ0K0wvMikuYXR0cigieSIsYS50b3ArRC8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVy
biBlfSksRn1DPQouc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtb3ZlKCksUD0zRFB8fGgsSD0z
REh8fHA7dmFyIFI9M0RDLnNlbGVjdEFsbCgiZy49Cm52LXdyYXAubnYtc2NhdHRlckNoYXJ0Iiku
ZGF0YShbZV0pLFU9M0RSLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLD0KIm52ZDMg
bnYtd3JhcCBudi1zY2F0dGVyQ2hhcnQgbnYtY2hhcnQtIit0LmlkKCkpLHo9M0RVLmFwcGVuZCgi
ZyIpLFc9M0RSLnNlPQpsZWN0KCJnIik7ei5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm52
ZDMgbnYtYmFja2dyb3VuZCIpLHouYXBwZW5kKCJnIik9Ci5hdHRyKCJjbGFzcyIsIm52LXggbnYt
YXhpcyIpLHouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKSx6Lj0KYXBw
ZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1zY2F0dGVyV3JhcCIpLHouYXBwZW5kKCJnIikuYXR0
cigiY2xhc3MiLCJudi1kPQppc3RXcmFwIiksei5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52
LWxlZ2VuZFdyYXAiKSx6LmFwcGVuZCgiZyIpLmF0dHIoImM9Cmxhc3MiLCJudi1jb250cm9sc1dy
YXAiKTtpZih5KXt2YXIgWD0zRFM/TC8yOkw7aS53aWR0aChYKSxSLnNlbGVjdCgiLm52LWxlZz0K
ZW5kV3JhcCIpLmRhdHVtKGUpLmNhbGwoaSksYS50b3AhPTNEaS5oZWlnaHQoKSYmKGEudG9wPTNE
aS5oZWlnaHQoKSxEPTNEKGx8PQp8cGFyc2VJbnQoQy5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLWEu
dG9wLWEuYm90dG9tKSxSLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXA9CiIpLmF0dHIoInRyYW5zZm9y
bSIsInRyYW5zbGF0ZSgiKyhMLVgpKyIsIisgLWEudG9wKyIpIil9UyYmKHMud2lkdGgoMTgwKS5j
bz0KbG9yKFsiIzQ0NCJdKSxXLnNlbGVjdCgiLm52LWNvbnRyb2xzV3JhcCIpLmRhdHVtKGopLmF0
dHIoInRyYW5zZm9ybSIsInRyYW5zPQpsYXRlKDAsIisgLWEudG9wKyIpIikuY2FsbChzKSksUi5h
dHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIithLmxlZnQrIiwiK2E9Ci50b3ArIikiKSxFJiZX
LnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK0wr
IiwwKT0KIiksdC53aWR0aChMKS5oZWlnaHQoRCkuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXty
ZXR1cm4gZS5jb2xvcnx8YyhlLHQpfSkuPQpmaWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtu
XS5kaXNhYmxlZH0pKSxkIT0zRD0zRDAmJnQueERvbWFpbihudWxsKSx2IT0KPTNEPTNEMCYmdC55
RG9tYWluKG51bGwpLFIuc2VsZWN0KCIubnYtc2NhdHRlcldyYXAiKS5kYXR1bShlLmZpbHRlcihm
dW5jdGlvPQpuKGUpe3JldHVybiFlLmRpc2FibGVkfSkpLmNhbGwodCk7aWYoZCE9M0Q9M0QwKXt2
YXIgVj0zRGguZG9tYWluKClbMV0taC5kb209CmFpbigpWzBdO3QueERvbWFpbihbaC5kb21haW4o
KVswXS1kKlYsaC5kb21haW4oKVsxXStkKlZdKX1pZih2IT0zRD0zRDApe3Zhcj0KICQ9M0RwLmRv
bWFpbigpWzFdLXAuZG9tYWluKClbMF07dC55RG9tYWluKFtwLmRvbWFpbigpWzBdLXYqJCxwLmRv
bWFpbigpWzFdPQordiokXSl9KHYhPTNEPTNEMHx8ZCE9M0Q9M0QwKSYmUi5zZWxlY3QoIi5udi1z
Y2F0dGVyV3JhcCIpLmRhdHVtKGUuZmlsdGVyKGY9CnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJs
ZWR9KSkuY2FsbCh0KSxiJiYobi5zY2FsZShoKS50aWNrcyhuLnRpY2tzKCkmJm4udD0KaWNrcygp
Lmxlbmd0aD9uLnRpY2tzKCk6TC8xMDApLnRpY2tTaXplKC1ELDApLFcuc2VsZWN0KCIubnYteC5u
di1heGlzIikuYXR0PQpyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK3AucmFuZ2UoKVswXSsi
KSIpLmNhbGwobikpLHcmJihyLnNjYWxlKHApLnRpY2s9CnMoci50aWNrcygpJiZyLnRpY2tzKCku
bGVuZ3RoP3IudGlja3MoKTpELzM2KS50aWNrU2l6ZSgtTCwwKSxXLnNlbGVjdCgiLm52LT0KeS5u
di1heGlzIikuY2FsbChyKSksbSYmKG8uZ2V0RGF0YSh0LngoKSkuc2NhbGUoaCkud2lkdGgoTCku
Y29sb3IoZS5tYXAoZnVuPQpjdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxjKGUsdCl9KS5maWx0
ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmw9CmVkfSkpLHouc2VsZWN0KCIubnYt
ZGlzdFdyYXAiKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWRpc3RyaWJ1dGlvblgiKT0K
LFcuc2VsZWN0KCIubnYtZGlzdHJpYnV0aW9uWCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0
ZSgwLCIrcC5yYW5nZSgpWzBdPQorIikiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1
cm4hZS5kaXNhYmxlZH0pKS5jYWxsKG8pKSxnJiYodS5nZXREYXQ9CmEodC55KCkpLnNjYWxlKHAp
LndpZHRoKEQpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGMoZSx0
KT0KfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWR9KSksei5zZWxl
Y3QoIi5udi1kaXN0V3JhcCIpLmFwPQpwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1kaXN0cmli
dXRpb25ZIiksVy5zZWxlY3QoIi5udi1kaXN0cmlidXRpb25ZIikuYXQ9CnRyKCJ0cmFuc2Zvcm0i
LCJ0cmFuc2xhdGUoIisoRT9MOi11LnNpemUoKSkrIiwwKSIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0
aW9uKD0KZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbCh1KSksZDMuZmlzaGV5ZSYmKFcuc2Vs
ZWN0KCIubnYtYmFja2dyb3VuZCIpLmF0PQp0cigid2lkdGgiLEwpLmF0dHIoImhlaWdodCIsRCks
Vy5zZWxlY3QoIi5udi1iYWNrZ3JvdW5kIikub24oIm1vdXNlbW92ZSIsSik9CixXLnNlbGVjdCgi
Lm52LWJhY2tncm91bmQiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7VD0zRCFUfSksdC5kaXNwYXRj
aC5vbigiZT0KbGVtZW50Q2xpY2suZnJlZXplRmlzaGV5ZSIsZnVuY3Rpb24oKXtUPTNEIVR9KSks
cy5kaXNwYXRjaC5vbigibGVnZW5kQ2xpY2siPQosZnVuY3Rpb24oZSxpKXtlLmRpc2FibGVkPTNE
IWUuZGlzYWJsZWQseD0zRGUuZGlzYWJsZWQ/MDoyLjUsVy5zZWxlY3QoIi5udi09CmJhY2tncm91
bmQiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLGUuZGlzYWJsZWQ/Im5vbmUiOiJhbGwiKSxXLnNl
bGVjdCgiLm52LT0KcG9pbnQtcGF0aHMiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLGUuZGlzYWJs
ZWQ/ImFsbCI6Im5vbmUiKSxlLmRpc2FibGVkPyhoPQouZGlzdG9ydGlvbih4KS5mb2N1cygwKSxw
LmRpc3RvcnRpb24oeCkuZm9jdXMoMCksVy5zZWxlY3QoIi5udi1zY2F0dGVyV3JhcCI9CikuY2Fs
bCh0KSxXLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmNhbGwobiksVy5zZWxlY3QoIi5udi15Lm52
LWF4aXMiKS5jYWxsKD0KcikpOlQ9M0QhMSxGLnVwZGF0ZSgpfSksaS5kaXNwYXRjaC5vbigic3Rh
dGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe0EuZGlzYWJsZWQ9Cj0zRGUuZGlzYWJsZWQsTS5zdGF0ZUNo
YW5nZShBKSxGLnVwZGF0ZSgpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlcj0KLnRv
b2x0aXAiLGZ1bmN0aW9uKGUpe2QzLnNlbGVjdCgiLm52LWNoYXJ0LSIrdC5pZCgpKyIgLm52LXNl
cmllcy0iK2Uuc2VyaWVzPQpJbmRleCsiIC5udi1kaXN0eC0iK2UucG9pbnRJbmRleCkuYXR0cigi
eTEiLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUucG9zWzFdLUQ9Cn0pLGQzLnNlbGVjdCgiLm52LWNo
YXJ0LSIrdC5pZCgpKyIgLm52LXNlcmllcy0iK2Uuc2VyaWVzSW5kZXgrIiAubnYtZGlzdHktIj0K
K2UucG9pbnRJbmRleCkuYXR0cigieDIiLGUucG9zWzBdK28uc2l6ZSgpKSxlLnBvcz0zRFtlLnBv
c1swXSthLmxlZnQsZS5wb3NbPQoxXSthLnRvcF0sTS50b29sdGlwU2hvdyhlKX0pLE0ub24oInRv
b2x0aXBTaG93IixmdW5jdGlvbihlKXtOJiZCKGUsay5wYXJlbnQ9Ck5vZGUpfSksTS5vbigiY2hh
bmdlU3RhdGUiLGZ1bmN0aW9uKHQpe3R5cGVvZiB0LmRpc2FibGVkIT0zRCJ1bmRlZmluZWQiJiYo
ZT0KLmZvckVhY2goZnVuY3Rpb24oZSxuKXtlLmRpc2FibGVkPTNEdC5kaXNhYmxlZFtuXX0pLEEu
ZGlzYWJsZWQ9M0R0LmRpc2FibGVkPQopLEYudXBkYXRlKCl9KSxQPTNEaC5jb3B5KCksSD0zRHAu
Y29weSgpfSksRn12YXIgdD0zRGUubW9kZWxzLnNjYXR0ZXIoKSxuPQo9M0RlLm1vZGVscy5heGlz
KCkscj0zRGUubW9kZWxzLmF4aXMoKSxpPTNEZS5tb2RlbHMubGVnZW5kKCkscz0zRGUubW9kZWxz
Lmw9CmVnZW5kKCksbz0zRGUubW9kZWxzLmRpc3RyaWJ1dGlvbigpLHU9M0RlLm1vZGVscy5kaXN0
cmlidXRpb24oKSxhPTNEe3RvcDozMD0KLHJpZ2h0OjIwLGJvdHRvbTo1MCxsZWZ0Ojc1fSxmPTNE
bnVsbCxsPTNEbnVsbCxjPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxoPQo9M0RkMy5maXNoZXll
P2QzLmZpc2hleWUuc2NhbGUoZDMuc2NhbGUubGluZWFyKS5kaXN0b3J0aW9uKDApOnQueFNjYWxl
KCkscD0KPTNEZDMuZmlzaGV5ZT9kMy5maXNoZXllLnNjYWxlKGQzLnNjYWxlLmxpbmVhcikuZGlz
dG9ydGlvbigwKTp0LnlTY2FsZSgpLGQ9Cj0zRDAsdj0zRDAsbT0zRCExLGc9M0QhMSx5PTNEITAs
Yj0zRCEwLHc9M0QhMCxFPTNEITEsUz0zRCEhZDMuZmlzaGV5ZSx4PTNEMD0KLFQ9M0QhMSxOPTNE
ITAsQz0zRGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4iPHN0cm9uZz4iK3QrIjwvc3Ryb25nPiJ9LGs9
M0RmdW5jPQp0aW9uKGUsdCxuKXtyZXR1cm4iPHN0cm9uZz4iK24rIjwvc3Ryb25nPiJ9LEw9M0Ru
dWxsLEE9M0R7fSxPPTNEbnVsbCxNPTNEZDM9Ci5kaXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29s
dGlwSGlkZSIsInN0YXRlQ2hhbmdlIiwiY2hhbmdlU3RhdGUiKSxfPTNEIk5vID0KRGF0YSBBdmFp
bGFibGUuIixEPTNEMDt0LnhTY2FsZShoKS55U2NhbGUocCksbi5vcmllbnQoImJvdHRvbSIpLnRp
Y2tQYWRkaW5nPQooMTApLHIub3JpZW50KEU/InJpZ2h0IjoibGVmdCIpLnRpY2tQYWRkaW5nKDEw
KSxvLmF4aXMoIngiKSx1LmF4aXMoInkiKSxzLnU9CnBkYXRlU3RhdGUoITEpO3ZhciBQLEgsQj0z
RGZ1bmN0aW9uKGkscyl7dmFyIG89M0RpLnBvc1swXSsocy5vZmZzZXRMZWZ0fHwwKT0KLHU9M0Rp
LnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLGY9M0RpLnBvc1swXSsocy5vZmZzZXRMZWZ0fHwwKSxs
PTNEcC5yYW5nZSgpPQpbMF0rYS50b3ArKHMub2Zmc2V0VG9wfHwwKSxjPTNEaC5yYW5nZSgpWzBd
K2EubGVmdCsocy5vZmZzZXRMZWZ0fHwwKSxkPTNEaS49CnBvc1sxXSsocy5vZmZzZXRUb3B8fDAp
LHY9M0RuLnRpY2tGb3JtYXQoKSh0LngoKShpLnBvaW50LGkucG9pbnRJbmRleCkpLG09Cj0zRHIu
dGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbnQsaS5wb2ludEluZGV4KSk7QyE9M0RudWxsJiZlLnRv
b2x0aXAuc2hvdyhbZj0KLGxdLEMoaS5zZXJpZXMua2V5LHYsbSxpLEYpLCJuIiwxLHMsIngtbnZ0
b29sdGlwIiksayE9M0RudWxsJiZlLnRvb2x0aXAuc2hvPQp3KFtjLGRdLGsoaS5zZXJpZXMua2V5
LHYsbSxpLEYpLCJlIiwxLHMsInktbnZ0b29sdGlwIiksTCE9M0RudWxsJiZlLnRvb2x0aXA9Ci5z
aG93KFtvLHVdLEwoaS5zZXJpZXMua2V5LHYsbSxpLEYpLGkudmFsdWU8MD8ibiI6InMiLG51bGws
cyl9LGo9M0Rbe2tleToiTT0KYWduaWZ5IixkaXNhYmxlZDohMH1dO3JldHVybiB0LmRpc3BhdGNo
Lm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3RpPQpvbihlKXtNLnRvb2x0aXBIaWRl
KGUpLGQzLnNlbGVjdCgiLm52LWNoYXJ0LSIrdC5pZCgpKyIgLm52LXNlcmllcy0iK2Uuc2VyaWU9
CnNJbmRleCsiIC5udi1kaXN0eC0iK2UucG9pbnRJbmRleCkuYXR0cigieTEiLDApLGQzLnNlbGVj
dCgiLm52LWNoYXJ0LSIrdC5pZD0KKCkrIiAubnYtc2VyaWVzLSIrZS5zZXJpZXNJbmRleCsiIC5u
di1kaXN0eS0iK2UucG9pbnRJbmRleCkuYXR0cigieDIiLHUuc2l6PQplKCkpfSksTS5vbigidG9v
bHRpcEhpZGUiLGZ1bmN0aW9uKCl7TiYmZS50b29sdGlwLmNsZWFudXAoKX0pLEYuZGlzcGF0Y2g9
M0Q9Ck0sRi5zY2F0dGVyPTNEdCxGLmxlZ2VuZD0zRGksRi5jb250cm9scz0zRHMsRi54QXhpcz0z
RG4sRi55QXhpcz0zRHIsRi5kaXN0WD0KPTNEbyxGLmRpc3RZPTNEdSxkMy5yZWJpbmQoRix0LCJp
ZCIsImludGVyYWN0aXZlIiwicG9pbnRBY3RpdmUiLCJ4IiwieSIsInNoPQphcGUiLCJzaXplIiwi
eFNjYWxlIiwieVNjYWxlIiwielNjYWxlIiwieERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5
UmFuZ2U9CiIsInNpemVEb21haW4iLCJzaXplUmFuZ2UiLCJmb3JjZVgiLCJmb3JjZVkiLCJmb3Jj
ZVNpemUiLCJjbGlwVm9yb25vaSIsImNsaT0KcFJhZGl1cyIsInVzZVZvcm9ub2kiKSxGLm9wdGlv
bnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoRiksRi5tYXJnaW49M0RmPQp1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhLnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZp
bmVkIj9lLnQ9Cm9wOmEudG9wLGEucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVk
Ij9lLnJpZ2h0OmEucmlnaHQsYS5ib3R0b209Cj0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZp
bmVkIj9lLmJvdHRvbTphLmJvdHRvbSxhLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0KPTNEInVuZGVm
aW5lZCI/ZS5sZWZ0OmEubGVmdCxGKTphfSxGLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sPQplbmd0aD8oZj0zRGUsRik6Zn0sRi5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGUsRik9CjpsfSxGLmNvbG9yPTNEZnVuY3Rpb24odCl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLnV0aWxzLmdldENvbG9yKHQpLD0KaS5jb2xv
cihjKSxvLmNvbG9yKGMpLHUuY29sb3IoYyksRik6Y30sRi5zaG93RGlzdFg9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJnPQp1bWVudHMubGVuZ3RoPyhtPTNEZSxGKTptfSxGLnNob3dEaXN0WT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Q9Cmg/KGc9M0RlLEYpOmd9LEYuc2hvd0Nv
bnRyb2xzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFM9M0RlLD0KRik6
U30sRi5zaG93TGVnZW5kPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9
M0RlLEYpOnl9LEYuc2hvPQp3WEF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oYj0zRGUsRik6Yn0sRi5zaG93WUF4aXM9M0RmdW49CmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyh3PTNEZSxGKTp3fSxGLnJpZ2h0QWxpZ25ZQXhpcz0zRGZ1bmN0aW9uKD0K
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlLHIub3JpZW50KGU/InJpZ2h0IjoibGVm
dCIpLEYpOkV9LEYuZmlzaGV5PQplPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHg9M0RlLEYpOnh9LEYueFBhZGRpbmc9M0RmdW5jdGlvbig9CmUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhkPTNEZSxGKTpkfSxGLnlQYWRkaW5nPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Zz0KdW1lbnRzLmxlbmd0aD8odj0zRGUsRik6dn0sRi50b29sdGlwcz0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPQo/KE49M0RlLEYpOk59LEYudG9vbHRpcENvbnRlbnQ9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTD0zRGU9CixGKTpMfSxGLnRvb2x0
aXBYQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhDPTNEZSxG
KTpDfT0KLEYudG9vbHRpcFlDb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGs9M0RlLEYpOmt9LEYuc3RhPQp0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhBPTNEZSxGKTpBfSxGLmRlZmF1bHRTdGF0ZT0zRGZ1bmM9CnRpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE89M0RlLEYpOk99LEYubm9EYXRhPTNEZnVuY3Rpb24oZSl7
cmV0dXJuID0KYXJndW1lbnRzLmxlbmd0aD8oXz0zRGUsRik6X30sRi50cmFuc2l0aW9uRHVyYXRp
b249M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJnPQp1bWVudHMubGVuZ3RoPyhEPTNEZSxGKTpEfSxG
fSxlLm1vZGVscy5zY2F0dGVyUGx1c0xpbmVDaGFydD0zRGZ1bmN0aW9uKCl7ZnU9Cm5jdGlvbiBC
KGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7ZnVuY3Rpb24gVigpe2lmKFMpcmV0dXJuIFUu
c2VsZWN0KCIubj0Kdi1wb2ludC1wYXRocyIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsImFsbCIp
LCExO1Uuc2VsZWN0KCIubnYtcG9pbnQtcGF0aHMiPQopLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIs
Im5vbmUiKTt2YXIgaT0zRGQzLm1vdXNlKHRoaXMpO2guZGlzdG9ydGlvbihFKS5mb2M9CnVzKGlb
MF0pLHAuZGlzdG9ydGlvbihFKS5mb2N1cyhpWzFdKSxVLnNlbGVjdCgiLm52LXNjYXR0ZXJXcmFw
IikuZGF0dW0oZS5maT0KbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKS5jYWxs
KHQpLGcmJlUuc2VsZWN0KCIubnYteC5udi1heGlzIikuPQpjYWxsKG4pLHkmJlUuc2VsZWN0KCIu
bnYteS5udi1heGlzIikuY2FsbChyKSxVLnNlbGVjdCgiLm52LWRpc3RyaWJ1dGlvblgiKS49CmRh
dHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkpLmNhbGwobyksVS5z
ZWxlY3QoIi5udi1kaXN0cj0KaWJ1dGlvblkiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXty
ZXR1cm4hZS5kaXNhYmxlZH0pKS5jYWxsKHUpfXZhciBUPTNEPQpkMy5zZWxlY3QodGhpcyksTj0z
RHRoaXMsQz0zRChmfHxwYXJzZUludChULnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS1hLmxlZnQtYS49
CnJpZ2h0LE09M0QobHx8cGFyc2VJbnQoVC5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLWEudG9wLWEu
Ym90dG9tO0IudXBkYXRlPTNEZj0KdW5jdGlvbigpe1QuY2FsbChCKX0sQi5jb250YWluZXI9M0R0
aGlzLGsuZGlzYWJsZWQ9M0RlLm1hcChmdW5jdGlvbihlKXtyZXR1PQpybiEhZS5kaXNhYmxlZH0p
O2lmKCFMKXt2YXIgajtMPTNEe307Zm9yKGogaW4gaylrW2pdaW5zdGFuY2VvZiBBcnJheT9MW2pd
PQo9M0RrW2pdLnNsaWNlKDApOkxbal09M0RrW2pdfWlmKCFlfHwhZS5sZW5ndGh8fCFlLmZpbHRl
cihmdW5jdGlvbihlKXtyZXR1cm49CiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgpe3ZhciBGPTNE
VC5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFtPXSk7cmV0dT0Kcm4gRi5lbnRlcigpLmFw
cGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0u
N2VtPQoiKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxGLmF0dHIoIngiLGEubGVmdCtD
LzIpLmF0dHIoInkiLGEudG9wK00vMik9Ci50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksQn1U
LnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbW92ZSgpLGg9M0R0LnhTYz0KYWxlKCkscD0zRHQu
eVNjYWxlKCksXz0zRF98fGgsRD0zRER8fHA7dmFyIEk9M0RULnNlbGVjdEFsbCgiZy5udi13cmFw
Lm52LXNjPQphdHRlckNoYXJ0IikuZGF0YShbZV0pLHE9M0RJLmVudGVyKCkuYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXA9CiBudi1zY2F0dGVyQ2hhcnQgbnYtY2hhcnQtIit0
LmlkKCkpLFI9M0RxLmFwcGVuZCgiZyIpLFU9M0RJLnNlbGVjdCgiZyIpO1IuYT0KcHBlbmQoInJl
Y3QiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtYmFja2dyb3VuZCIpLnN0eWxlKCJwb2ludGVyLWV2
ZW50cyIsIm5vPQpuZSIpLFIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14IG52LWF4aXMi
KSxSLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiw9CiJudi15IG52LWF4aXMiKSxSLmFwcGVuZCgi
ZyIpLmF0dHIoImNsYXNzIiwibnYtc2NhdHRlcldyYXAiKSxSLmFwcGVuZCgiZyIpLj0KYXR0cigi
Y2xhc3MiLCJudi1yZWdyZXNzaW9uTGluZXNXcmFwIiksUi5hcHBlbmQoImciKS5hdHRyKCJjbGFz
cyIsIm52LWRpc3RXPQpyYXAiKSxSLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5k
V3JhcCIpLFIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3M9CiIsIm52LWNvbnRyb2xzV3JhcCIpLEku
YXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrYS5sZWZ0KyIsIithLnRvcCsiKSIpLD0KYiYm
VS5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitD
KyIsMCkiKSxtJiYoaS53PQppZHRoKEMvMiksSS5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuZGF0
dW0oZSkuY2FsbChpKSxhLnRvcCE9M0RpLmhlaWdodCgpJiY9CihhLnRvcD0zRGkuaGVpZ2h0KCks
TT0zRChsfHxwYXJzZUludChULnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktYS50b3AtYS5ib3R0bz0K
bSksSS5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRl
KCIrQy8yKyIsIisgLWEudG9wPQorIikiKSksdyYmKHMud2lkdGgoMTgwKS5jb2xvcihbIiM0NDQi
XSksVS5zZWxlY3QoIi5udi1jb250cm9sc1dyYXAiKS5kYXR1bSg9CkgpLmF0dHIoInRyYW5zZm9y
bSIsInRyYW5zbGF0ZSgwLCIrIC1hLnRvcCsiKSIpLmNhbGwocykpLHQud2lkdGgoQykuaGVpZ2h0
KD0KTSkuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8YyhlLHQpfSku
ZmlsdGVyKGZ1bmN0aW9uKHQsbil7PQpyZXR1cm4hZVtuXS5kaXNhYmxlZH0pKSxJLnNlbGVjdCgi
Lm52LXNjYXR0ZXJXcmFwIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb249CihlKXtyZXR1cm4hZS5k
aXNhYmxlZH0pKS5jYWxsKHQpLEkuc2VsZWN0KCIubnYtcmVncmVzc2lvbkxpbmVzV3JhcCIpLmF0
dHIoIj0KY2xpcC1wYXRoIiwidXJsKCNudi1lZGdlLWNsaXAtIit0LmlkKCkrIikiKTt2YXIgej0z
REkuc2VsZWN0KCIubnYtcmVncmVzc2lvPQpuTGluZXNXcmFwIikuc2VsZWN0QWxsKCIubnYtcmVn
TGluZXMiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlfSk7ei5lbnRlcig9CikuYXBwZW5kKCJn
IikuYXR0cigiY2xhc3MiLCJudi1yZWdMaW5lcyIpO3ZhciBXPTNEei5zZWxlY3RBbGwoIi5udi1y
ZWdMaW5lIj0KKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybltlXX0pLFg9M0RXLmVudGVyKCkuYXBw
ZW5kKCJsaW5lIikuYXR0cigiY2xhc3MiLCJuPQp2LXJlZ0xpbmUiKS5zdHlsZSgic3Ryb2tlLW9w
YWNpdHkiLDApO1cuYXR0cigieDEiLGgucmFuZ2UoKVswXSkuYXR0cigieDIiLGg9Ci5yYW5nZSgp
WzFdKS5hdHRyKCJ5MSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChoLmRvbWFpbigpWzBdKmUuc2xv
cGUrZS5pbnRlcj0KY2VwdCl9KS5hdHRyKCJ5MiIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChoLmRv
bWFpbigpWzFdKmUuc2xvcGUrZS5pbnRlcmNlcHQpPQp9KS5zdHlsZSgic3Ryb2tlIixmdW5jdGlv
bihlLHQsbil7cmV0dXJuIGMoZSxuKX0pLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsZnU9Cm5jdGlv
bihlLHQpe3JldHVybiBlLmRpc2FibGVkfHx0eXBlb2YgZS5zbG9wZT0zRD0zRCJ1bmRlZmluZWQi
fHx0eXBlb2YgZS5pbj0KdGVyY2VwdD0zRD0zRCJ1bmRlZmluZWQiPzA6MX0pLGcmJihuLnNjYWxl
KGgpLnRpY2tzKG4udGlja3MoKT9uLnRpY2tzKCk6Qy8xPQowMCkudGlja1NpemUoLU0sMCksVS5z
ZWxlY3QoIi5udi14Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCw9CiIr
cC5yYW5nZSgpWzBdKyIpIikuY2FsbChuKSkseSYmKHIuc2NhbGUocCkudGlja3Moci50aWNrcygp
P3IudGlja3MoKTpNLzM2KT0KLnRpY2tTaXplKC1DLDApLFUuc2VsZWN0KCIubnYteS5udi1heGlz
IikuY2FsbChyKSksZCYmKG8uZ2V0RGF0YSh0LngoKSkuc2NhPQpsZShoKS53aWR0aChDKS5jb2xv
cihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxjKGUsdCl9KS5maWx0ZXIoZnU9
Cm5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkfSkpLFIuc2VsZWN0KCIubnYtZGlzdFdy
YXAiKS5hcHBlbmQoImciKS5hdD0KdHIoImNsYXNzIiwibnYtZGlzdHJpYnV0aW9uWCIpLFUuc2Vs
ZWN0KCIubnYtZGlzdHJpYnV0aW9uWCIpLmF0dHIoInRyYW5zZm9yPQptIiwidHJhbnNsYXRlKDAs
IitwLnJhbmdlKClbMF0rIikiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5k
aXM9CmFibGVkfSkpLmNhbGwobykpLHYmJih1LmdldERhdGEodC55KCkpLnNjYWxlKHApLndpZHRo
KE0pLmNvbG9yKGUubWFwKGZ1bmN0aT0Kb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8YyhlLHQpfSku
ZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWR9PQopKSxSLnNlbGVjdCgi
Lm52LWRpc3RXcmFwIikuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1kaXN0cmlidXRpb25Z
IiksVS49CnNlbGVjdCgiLm52LWRpc3RyaWJ1dGlvblkiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFu
c2xhdGUoIisoYj9DOi11LnNpemUoKSkrIj0KLDApIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24o
ZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbCh1KSksZDMuZmlzaGV5ZSYmPQooVS5zZWxlY3Qo
Ii5udi1iYWNrZ3JvdW5kIikuYXR0cigid2lkdGgiLEMpLmF0dHIoImhlaWdodCIsTSksVS5zZWxl
Y3QoIi5udi09CmJhY2tncm91bmQiKS5vbigibW91c2Vtb3ZlIixWKSxVLnNlbGVjdCgiLm52LWJh
Y2tncm91bmQiKS5vbigiY2xpY2siLGZ1bmN0aT0Kb24oKXtTPTNEIVN9KSx0LmRpc3BhdGNoLm9u
KCJlbGVtZW50Q2xpY2suZnJlZXplRmlzaGV5ZSIsZnVuY3Rpb24oKXtTPTNEIVN9PQopKSxzLmRp
c3BhdGNoLm9uKCJsZWdlbmRDbGljayIsZnVuY3Rpb24oZSxpKXtlLmRpc2FibGVkPTNEIWUuZGlz
YWJsZWQsRT0zRGU9Ci5kaXNhYmxlZD8wOjIuNSxVLnNlbGVjdCgiLm52LWJhY2tncm91bmQiKS5z
dHlsZSgicG9pbnRlci1ldmVudHMiLGUuZGlzYWJsZT0KZD8ibm9uZSI6ImFsbCIpLFUuc2VsZWN0
KCIubnYtcG9pbnQtcGF0aHMiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLGUuZGlzYWJsPQplZD8i
YWxsIjoibm9uZSIpLGUuZGlzYWJsZWQ/KGguZGlzdG9ydGlvbihFKS5mb2N1cygwKSxwLmRpc3Rv
cnRpb24oRSkuZm9jdXM9CigwKSxVLnNlbGVjdCgiLm52LXNjYXR0ZXJXcmFwIikuY2FsbCh0KSxV
LnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmNhbGwobiksVT0KLnNlbGVjdCgiLm52LXkubnYtYXhp
cyIpLmNhbGwocikpOlM9M0QhMSxCLnVwZGF0ZSgpfSksaS5kaXNwYXRjaC5vbigic3RhdGVDPQpo
YW5nZSIsZnVuY3Rpb24oZSl7az0zRGUsQS5zdGF0ZUNoYW5nZShrKSxCLnVwZGF0ZSgpfSksdC5k
aXNwYXRjaC5vbigiZWxlbWU9Cm50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2QzLnNl
bGVjdCgiLm52LWNoYXJ0LSIrdC5pZCgpKyIgLm52LXNlcmllcz0KLSIrZS5zZXJpZXNJbmRleCsi
IC5udi1kaXN0eC0iK2UucG9pbnRJbmRleCkuYXR0cigieTEiLGUucG9zWzFdLU0pLGQzLnNlbGVj
PQp0KCIubnYtY2hhcnQtIit0LmlkKCkrIiAubnYtc2VyaWVzLSIrZS5zZXJpZXNJbmRleCsiIC5u
di1kaXN0eS0iK2UucG9pbnRJbmQ9CmV4KS5hdHRyKCJ4MiIsZS5wb3NbMF0rby5zaXplKCkpLGUu
cG9zPTNEW2UucG9zWzBdK2EubGVmdCxlLnBvc1sxXSthLnRvcF0sQT0KLnRvb2x0aXBTaG93KGUp
fSksQS5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe3gmJlAoZSxOLnBhcmVudE5vZGUpfSks
QS5vPQpuKCJjaGFuZ2VTdGF0ZSIsZnVuY3Rpb24odCl7dHlwZW9mIHQuZGlzYWJsZWQhPTNEInVu
ZGVmaW5lZCImJihlLmZvckVhY2goZnU9Cm5jdGlvbihlLG4pe2UuZGlzYWJsZWQ9M0R0LmRpc2Fi
bGVkW25dfSksay5kaXNhYmxlZD0zRHQuZGlzYWJsZWQpLEIudXBkYXRlKD0KKX0pLF89M0RoLmNv
cHkoKSxEPTNEcC5jb3B5KCl9KSxCfXZhciB0PTNEZS5tb2RlbHMuc2NhdHRlcigpLG49M0RlLm1v
ZGVscy5hPQp4aXMoKSxyPTNEZS5tb2RlbHMuYXhpcygpLGk9M0RlLm1vZGVscy5sZWdlbmQoKSxz
PTNEZS5tb2RlbHMubGVnZW5kKCksbz0zRGU9Ci5tb2RlbHMuZGlzdHJpYnV0aW9uKCksdT0zRGUu
bW9kZWxzLmRpc3RyaWJ1dGlvbigpLGE9M0R7dG9wOjMwLHJpZ2h0OjIwLGJvdD0KdG9tOjUwLGxl
ZnQ6NzV9LGY9M0RudWxsLGw9M0RudWxsLGM9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLGg9M0Rk
My5maXNoZXllPQo/ZDMuZmlzaGV5ZS5zY2FsZShkMy5zY2FsZS5saW5lYXIpLmRpc3RvcnRpb24o
MCk6dC54U2NhbGUoKSxwPTNEZDMuZmlzaGV5ZT89CmQzLmZpc2hleWUuc2NhbGUoZDMuc2NhbGUu
bGluZWFyKS5kaXN0b3J0aW9uKDApOnQueVNjYWxlKCksZD0zRCExLHY9M0QhMSxtPQo9M0QhMCxn
PTNEITAseT0zRCEwLGI9M0QhMSx3PTNEISFkMy5maXNoZXllLEU9M0QwLFM9M0QhMSx4PTNEITAs
VD0zRGZ1bmN0aW89Cm4oZSx0LG4pe3JldHVybiI8c3Ryb25nPiIrdCsiPC9zdHJvbmc+In0sTj0z
RGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4iPHN0cm9uZz0KPiIrbisiPC9zdHJvbmc+In0sQz0zRGZ1
bmN0aW9uKGUsdCxuLHIpe3JldHVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIrcisiPC9wPQo+In0s
az0zRHt9LEw9M0RudWxsLEE9M0RkMy5kaXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlk
ZSIsInN0YXRlQ2hhbmc9CmUiLCJjaGFuZ2VTdGF0ZSIpLE89M0QiTm8gRGF0YSBBdmFpbGFibGUu
IixNPTNEMDt0LnhTY2FsZShoKS55U2NhbGUocCksbi5vcj0KaWVudCgiYm90dG9tIikudGlja1Bh
ZGRpbmcoMTApLHIub3JpZW50KGI/InJpZ2h0IjoibGVmdCIpLnRpY2tQYWRkaW5nKDEwKSxvPQou
YXhpcygieCIpLHUuYXhpcygieSIpLHMudXBkYXRlU3RhdGUoITEpO3ZhciBfLEQsUD0zRGZ1bmN0
aW9uKGkscyl7dmFyIG89M0Q9CmkucG9zWzBdKyhzLm9mZnNldExlZnR8fDApLHU9M0RpLnBvc1sx
XSsocy5vZmZzZXRUb3B8fDApLGY9M0RpLnBvc1swXSsocy5vZj0KZnNldExlZnR8fDApLGw9M0Rw
LnJhbmdlKClbMF0rYS50b3ArKHMub2Zmc2V0VG9wfHwwKSxjPTNEaC5yYW5nZSgpWzBdK2EubGVm
PQp0KyhzLm9mZnNldExlZnR8fDApLGQ9M0RpLnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLHY9M0Ru
LnRpY2tGb3JtYXQoKSh0LngoKSg9CmkucG9pbnQsaS5wb2ludEluZGV4KSksbT0zRHIudGlja0Zv
cm1hdCgpKHQueSgpKGkucG9pbnQsaS5wb2ludEluZGV4KSk7VCE9Cj0zRG51bGwmJmUudG9vbHRp
cC5zaG93KFtmLGxdLFQoaS5zZXJpZXMua2V5LHYsbSxpLEIpLCJuIiwxLHMsIngtbnZ0b29sdGlw
Ij0KKSxOIT0zRG51bGwmJmUudG9vbHRpcC5zaG93KFtjLGRdLE4oaS5zZXJpZXMua2V5LHYsbSxp
LEIpLCJlIiwxLHMsInktbnZ0b29sPQp0aXAiKSxDIT0zRG51bGwmJmUudG9vbHRpcC5zaG93KFtv
LHVdLEMoaS5zZXJpZXMua2V5LHYsbSxpLnBvaW50LnRvb2x0aXAsaSw9CkIpLGkudmFsdWU8MD8i
biI6InMiLG51bGwscyl9LEg9M0Rbe2tleToiTWFnbmlmeSIsZGlzYWJsZWQ6ITB9XTtyZXR1cm4g
dC5kaT0Kc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7QS50
b29sdGlwSGlkZShlKSxkMy5zZWxlY3QoPQoiLm52LWNoYXJ0LSIrdC5pZCgpKyIgLm52LXNlcmll
cy0iK2Uuc2VyaWVzSW5kZXgrIiAubnYtZGlzdHgtIitlLnBvaW50SW5kZXg9CikuYXR0cigieTEi
LDApLGQzLnNlbGVjdCgiLm52LWNoYXJ0LSIrdC5pZCgpKyIgLm52LXNlcmllcy0iK2Uuc2VyaWVz
SW5kZXgrIj0KIC5udi1kaXN0eS0iK2UucG9pbnRJbmRleCkuYXR0cigieDIiLHUuc2l6ZSgpKX0p
LEEub24oInRvb2x0aXBIaWRlIixmdW5jdGlvPQpuKCl7eCYmZS50b29sdGlwLmNsZWFudXAoKX0p
LEIuZGlzcGF0Y2g9M0RBLEIuc2NhdHRlcj0zRHQsQi5sZWdlbmQ9M0RpLEIuY289Cm50cm9scz0z
RHMsQi54QXhpcz0zRG4sQi55QXhpcz0zRHIsQi5kaXN0WD0zRG8sQi5kaXN0WT0zRHUsZDMucmVi
aW5kKEIsdCwiaT0KZCIsImludGVyYWN0aXZlIiwicG9pbnRBY3RpdmUiLCJ4IiwieSIsInNoYXBl
Iiwic2l6ZSIsInhTY2FsZSIsInlTY2FsZSIsInpTPQpjYWxlIiwieERvbWFpbiIsInlEb21haW4i
LCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJzaXplRG9tYWluIiwic2l6ZVJhbmdlIiwiZm9yY2U9ClgiLCJm
b3JjZVkiLCJmb3JjZVNpemUiLCJjbGlwVm9yb25vaSIsImNsaXBSYWRpdXMiLCJ1c2VWb3Jvbm9p
IiksQi5vcHRpb25zPQo9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoQiksQi5tYXJnaW49M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmc9CnRoPyhhLnRvcD0zRHR5cGVvZiBlLnRv
cCE9M0QidW5kZWZpbmVkIj9lLnRvcDphLnRvcCxhLnJpZ2h0PTNEdHlwZW9mIGUucmlnaD0KdCE9
M0QidW5kZWZpbmVkIj9lLnJpZ2h0OmEucmlnaHQsYS5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20h
PTNEInVuZGVmaW5lZCI/PQplLmJvdHRvbTphLmJvdHRvbSxhLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0
IT0zRCJ1bmRlZmluZWQiP2UubGVmdDphLmxlZnQsQik6YX09CixCLndpZHRoPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLEIpOmZ9LEIuaGVpZ2h0PTNEZnVuYz0K
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGUsQik6bH0sQi5jb2xvcj0zRGZ1
bmN0aW9uKHQpe3JldHVybiBhPQpyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLnV0aWxzLmdldENvbG9y
KHQpLGkuY29sb3IoYyksby5jb2xvcihjKSx1LmNvbG9yKGMpLEI9Cik6Y30sQi5zaG93RGlzdFg9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGUsQik6ZH0sQi5zaG93
RD0KaXN0WT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PTNEZSxCKTp2
fSxCLnNob3dDb250cm9scz0zRGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHc9M0RlLEIpOnd9LEIuc2hvd0xlZ2VuZD0zRGZ1bmN0aW9uKGUpe3I9CmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KG09M0RlLEIpOm19LEIuc2hvd1hBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZT0KbnRzLmxlbmd0aD8oZz0zRGUsQik6Z30sQi5zaG93WUF4aXM9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oPQp5PTNEZSxCKTp5fSxCLnJpZ2h0QWxpZ25ZQXhpcz0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPTNEZSw9CnIub3JpZW50KGU/
InJpZ2h0IjoibGVmdCIpLEIpOmJ9LEIuZmlzaGV5ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubD0KZW5ndGg/KEU9M0RlLEIpOkV9LEIudG9vbHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oeD0zRGUsPQpCKTp4fSxCLnRvb2x0aXBDb250ZW50PTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEM9M0RlLEIpOkN9LEI9Ci50b29sdGlw
WENvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oVD0zRGUsQik6
VH0sQi50b29sdD0KaXBZQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhOPTNEZSxCKTpOfSxCLnN0YXRlPTNEZnVuPQpjdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oaz0zRGUsQik6a30sQi5kZWZhdWx0U3RhdGU9M0RmdW5jdGlvbihlKXs9CnJldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhMPTNEZSxCKTpMfSxCLm5vRGF0YT0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudD0Kcy5sZW5ndGg/KE89M0RlLEIpOk99LEIudHJhbnNpdGlvbkR1cmF0aW9u
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sPQplbmd0aD8oTT0zRGUsQik6TX0sQn0s
ZS5tb2RlbHMuc3BhcmtsaW5lPTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGUpe3JldHVybiA9CmUu
ZWFjaChmdW5jdGlvbihlKXt2YXIgaT0zRG4tdC5sZWZ0LXQucmlnaHQsZD0zRHItdC50b3AtdC5i
b3R0b20sdj0zRGQzLnNlbD0KZWN0KHRoaXMpO3MuZG9tYWluKGx8fGQzLmV4dGVudChlLHUpKS5y
YW5nZShofHxbMCxpXSksby5kb21haW4oY3x8ZDMuZXh0ZW50PQooZSxhKSkucmFuZ2UocHx8W2Qs
MF0pO3ZhciBtPTNEdi5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1zcGFya2xpbmUiKS5kYXRhKFs9
CmVdKSxnPTNEbS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFw
IG52LXNwYXJrbGluZSIpLGI9Cj0zRGcuYXBwZW5kKCJnIiksdz0zRG0uc2VsZWN0KCJnIik7bS5h
dHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0LmxlZnQrIj0KLCIrdC50b3ArIikiKTt2YXIg
RT0zRG0uc2VsZWN0QWxsKCJwYXRoIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm5bZV19KTtFLmVu
PQp0ZXIoKS5hcHBlbmQoInBhdGgiKSxFLmV4aXQoKS5yZW1vdmUoKSxFLnN0eWxlKCJzdHJva2Ui
LGZ1bmN0aW9uKGUsdCl7cmV0dXI9Cm4gZS5jb2xvcnx8ZihlLHQpfSkuYXR0cigiZCIsZDMuc3Zn
LmxpbmUoKS54KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHModShlLHQpKT0KfSkueShmdW5jdGlvbihl
LHQpe3JldHVybiBvKGEoZSx0KSl9KSk7dmFyIFM9M0RtLnNlbGVjdEFsbCgiY2lyY2xlLm52LXBv
aW50PQoiKS5kYXRhKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCl7aWYodCE9M0QtMSl7dmFyIG49
M0RlW3RdO3JldHVybiBuLnBvaW50SW49CmRleD0zRHQsbn1yZXR1cm4gbnVsbH12YXIgdD0zRGUu
bWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSx0KX0pLHI9M0RuKHQubD0KYXN0SW5kZXhPZihv
LmRvbWFpbigpWzFdKSksaT0zRG4odC5pbmRleE9mKG8uZG9tYWluKClbMF0pKSxzPTNEbih0Lmxl
bmd0aC0xPQopO3JldHVybltpLHIsc10uZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlIT0zRG51
bGx9KX0pO1MuZW50ZXIoKS5hcHBlbmQoImM9CmlyY2xlIiksUy5leGl0KCkucmVtb3ZlKCksUy5h
dHRyKCJjeCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcyh1KGUsZS5wb2ludEluZD0KZXgpKX0pLmF0
dHIoImN5IixmdW5jdGlvbihlLHQpe3JldHVybiBvKGEoZSxlLnBvaW50SW5kZXgpKX0pLmF0dHIo
InIiLDIpLmF0PQp0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHUoZSxlLnBvaW50SW5k
ZXgpPTNEPTNEcy5kb21haW4oKVsxXT8ibnYtcG89CmludCBudi1jdXJyZW50VmFsdWUiOmEoZSxl
LnBvaW50SW5kZXgpPTNEPTNEby5kb21haW4oKVswXT8ibnYtcG9pbnQgbnYtbWluVj0KYWx1ZSI6
Im52LXBvaW50IG52LW1heFZhbHVlIn0pfSksZH12YXIgdD0zRHt0b3A6MixyaWdodDowLGJvdHRv
bToyLGxlZnQ6MH0sPQpuPTNENDAwLHI9M0QzMixpPTNEITAscz0zRGQzLnNjYWxlLmxpbmVhcigp
LG89M0RkMy5zY2FsZS5saW5lYXIoKSx1PTNEZnVuY3Q9CmlvbihlKXtyZXR1cm4gZS54fSxhPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0sZj0zRGUudXRpbHMuZ2V0Q29sb3IoWyIjMDAwIj0KXSks
bCxjLGgscDtyZXR1cm4gZC5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKGQpLGQu
bWFyZ2luPTNEZnVuY3RpPQpvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC50b3A9M0R0
eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6dC49CnRvcCx0LnJpZ2h0PTNEdHlwZW9m
IGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp0LnJpZ2h0LHQuYm90dG9tPTNEdHlwZT0K
b2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dC5ib3R0b20sdC5sZWZ0PTNEdHlw
ZW9mIGUubGVmdCE9M0QidW5kPQplZmluZWQiP2UubGVmdDp0LmxlZnQsZCk6dH0sZC53aWR0aD0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyg9Cm49M0RlLGQpOm59LGQuaGVp
Z2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLGQpOnJ9LGQu
eD0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RkMy5mdW5jdG9y
KGUpLGQpOnV9LGQueT0zRGZ1bmN0PQppb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9
M0RkMy5mdW5jdG9yKGUpLGQpOmF9LGQueFNjYWxlPTNEZnVuY3Rpb249CihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8ocz0zRGUsZCk6c30sZC55U2NhbGU9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndT0KbWVudHMubGVuZ3RoPyhvPTNEZSxkKTpvfSxkLnhEb21haW49M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oPQpsPTNEZSxkKTpsfSxkLnlEb21haW49M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUsZCk6Y30sZC49CnhSYW5nZT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxkKTpofSxkLnlSYW5nZT0z
RGZ1bmN0aT0Kb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLGQpOnB9LGQuYW5p
bWF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhPQpyZ3VtZW50cy5sZW5ndGg/KGk9M0RlLGQpOml9
LGQuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD89CihmPTNEZS51
dGlscy5nZXRDb2xvcih0KSxkKTpmfSxkfSxlLm1vZGVscy5zcGFya2xpbmVQbHVzPTNEZnVuY3Rp
b24oKXtmdW5jdD0KaW9uIHYoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihjKXtmdW5jdGlvbiBP
KCl7aWYoYSlyZXR1cm47dmFyIGU9M0RDLnNlbGVjPQp0QWxsKCIubnYtaG92ZXJWYWx1ZSIpLmRh
dGEodSkscj0zRGUuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWg9Cm92ZXJW
YWx1ZSIpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMCkuc3R5bGUoImZpbGwtb3BhY2l0eSIsMCk7
ZS5leGl0KCkuc3R5bD0KZSgic3Ryb2tlLW9wYWNpdHkiLDApLnN0eWxlKCJmaWxsLW9wYWNpdHki
LDApLnJlbW92ZSgpLGUuYXR0cigidHJhbnNmb3JtIixmPQp1bmN0aW9uKGUpe3JldHVybiJ0cmFu
c2xhdGUoIitzKHQueCgpKGNbZV0sZSkpKyIsMCkifSkuc3R5bGUoInN0cm9rZS1vcGFjaXQ9Cnki
LDEpLnN0eWxlKCJmaWxsLW9wYWNpdHkiLDEpO2lmKCF1Lmxlbmd0aClyZXR1cm47ci5hcHBlbmQo
ImxpbmUiKS5hdHRyKCJ4MT0KIiwwKS5hdHRyKCJ5MSIsLW4udG9wKS5hdHRyKCJ4MiIsMCkuYXR0
cigieTIiLGIpLHIuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhPQpzcyIsIm52LXhWYWx1ZSIpLmF0
dHIoIngiLC02KS5hdHRyKCJ5Iiwtbi50b3ApLmF0dHIoInRleHQtYW5jaG9yIiwiZW5kIikuYXQ9
CnRyKCJkeSIsIi45ZW0iKSxDLnNlbGVjdCgiLm52LWhvdmVyVmFsdWUgLm52LXhWYWx1ZSIpLnRl
eHQoZih0LngoKShjW3VbMF1dLD0KdVswXSkpKSxyLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNz
IiwibnYteVZhbHVlIikuYXR0cigieCIsNikuYXR0cigieSIsLW4uPQp0b3ApLmF0dHIoInRleHQt
YW5jaG9yIiwic3RhcnQiKS5hdHRyKCJkeSIsIi45ZW0iKSxDLnNlbGVjdCgiLm52LWhvdmVyVmFs
dWU9CiAubnYteVZhbHVlIikudGV4dChsKHQueSgpKGNbdVswXV0sdVswXSkpKX1mdW5jdGlvbiBN
KCl7ZnVuY3Rpb24gcihlLG4pe3Zhcj0KIHI9M0RNYXRoLmFicyh0LngoKShlWzBdLDApLW4pLGk9
M0QwO2Zvcih2YXIgcz0zRDA7czxlLmxlbmd0aDtzKyspTWF0aC5hYnMoPQp0LngoKShlW3NdLHMp
LW4pPHImJihyPTNETWF0aC5hYnModC54KCkoZVtzXSxzKS1uKSxpPTNEcyk7cmV0dXJuIGl9aWYo
YSlyZXQ9CnVybjt2YXIgZT0zRGQzLm1vdXNlKHRoaXMpWzBdLW4ubGVmdDt1PTNEW3IoYyxNYXRo
LnJvdW5kKHMuaW52ZXJ0KGUpKSldLE8oKT0KfXZhciBtPTNEZDMuc2VsZWN0KHRoaXMpLGc9M0Qo
cnx8cGFyc2VJbnQobS5zdHlsZSgid2lkdGgiKSl8fDk2MCktbi5sZWZ0LW4uPQpyaWdodCxiPTNE
KGl8fHBhcnNlSW50KG0uc3R5bGUoImhlaWdodCIpKXx8NDAwKS1uLnRvcC1uLmJvdHRvbTt2LnVw
ZGF0ZT0zRGY9CnVuY3Rpb24oKXt2KGUpfSx2LmNvbnRhaW5lcj0zRHRoaXM7aWYoIWN8fCFjLmxl
bmd0aCl7dmFyIHc9M0RtLnNlbGVjdEFsbCgiLj0KbnYtbm9EYXRhIikuZGF0YShbZF0pO3JldHVy
biB3LmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52PQotbm9EYXRh
IikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLHcuYXR0
cigieCIsbi5sZWY9CnQrZy8yKS5hdHRyKCJ5IixuLnRvcCtiLzIpLnRleHQoZnVuY3Rpb24oZSl7
cmV0dXJuIGV9KSx2fW0uc2VsZWN0QWxsKCIubnYtbj0Kb0RhdGEiKS5yZW1vdmUoKTt2YXIgRT0z
RHQueSgpKGNbYy5sZW5ndGgtMV0sYy5sZW5ndGgtMSk7cz0zRHQueFNjYWxlKCksbz0KPTNEdC55
U2NhbGUoKTt2YXIgUz0zRG0uc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtc3BhcmtsaW5lcGx1cyIp
LmRhdGEoW2NdKSxUPQo9M0RTLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQz
IG52LXdyYXAgbnYtc3BhcmtsaW5lcGx1cyIpLE49M0Q9ClQuYXBwZW5kKCJnIiksQz0zRFMuc2Vs
ZWN0KCJnIik7Ti5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXNwYXJrbGluZVdyYT0KcCIp
LE4uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi12YWx1ZVdyYXAiKSxOLmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwiPQpudi1ob3ZlckFyZWEiKSxTLmF0dHIoInRyYW5zZm9ybSIsInRyYW5z
bGF0ZSgiK24ubGVmdCsiLCIrbi50b3ArIikiKTt2YXIgaz0KPTNEQy5zZWxlY3QoIi5udi1zcGFy
a2xpbmVXcmFwIik7dC53aWR0aChnKS5oZWlnaHQoYiksay5jYWxsKHQpO3ZhciBMPTNEQy5zPQpl
bGVjdCgiLm52LXZhbHVlV3JhcCIpLEE9M0RMLnNlbGVjdEFsbCgiLm52LWN1cnJlbnRWYWx1ZSIp
LmRhdGEoW0VdKTtBLmVudGU9CnIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52LWN1
cnJlbnRWYWx1ZSIpLmF0dHIoImR4IixwPy04OjgpLmF0dHIoIj0KZHkiLCIuOWVtIikuc3R5bGUo
InRleHQtYW5jaG9yIixwPyJlbmQiOiJzdGFydCIpLEEuYXR0cigieCIsZysocD9uLnJpZ2h0OjAp
PQopLmF0dHIoInkiLGg/ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSl9OjApLnN0eWxlKCJmaWxsIix0
LmNvbG9yKCkoY1tjLmxlbmd0aC09CjFdLGMubGVuZ3RoLTEpKS50ZXh0KGwoRSkpLE4uc2VsZWN0
KCIubnYtaG92ZXJBcmVhIikuYXBwZW5kKCJyZWN0Iikub24oIm1vdT0Kc2Vtb3ZlIixNKS5vbigi
Y2xpY2siLGZ1bmN0aW9uKCl7YT0zRCFhfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbigpe3U9M0Rb
XSxPPQooKX0pLEMuc2VsZWN0KCIubnYtaG92ZXJBcmVhIHJlY3QiKS5hdHRyKCJ0cmFuc2Zvcm0i
LGZ1bmN0aW9uKGUpe3JldHVybiJ0cmE9Cm5zbGF0ZSgiKyAtbi5sZWZ0KyIsIisgLW4udG9wKyIp
In0pLmF0dHIoIndpZHRoIixnK24ubGVmdCtuLnJpZ2h0KS5hdHRyKCJoZT0KaWdodCIsYituLnRv
cCl9KSx2fXZhciB0PTNEZS5tb2RlbHMuc3BhcmtsaW5lKCksbj0zRHt0b3A6MTUscmlnaHQ6MTAw
LGJvdHRvPQptOjEwLGxlZnQ6NTB9LHI9M0RudWxsLGk9M0RudWxsLHMsbyx1PTNEW10sYT0zRCEx
LGY9M0RkMy5mb3JtYXQoIixyIiksbD0zRGQ9CjMuZm9ybWF0KCIsLjJmIiksYz0zRCEwLGg9M0Qh
MCxwPTNEITEsZD0zRCJObyBEYXRhIEF2YWlsYWJsZS4iO3JldHVybiB2LnNwYT0KcmtsaW5lPTNE
dCxkMy5yZWJpbmQodix0LCJ4IiwieSIsInhTY2FsZSIsInlTY2FsZSIsImNvbG9yIiksdi5vcHRp
b25zPTNEZS51PQp0aWxzLm9wdGlvbnNGdW5jLmJpbmQodiksdi5tYXJnaW49M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obi49CnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5k
ZWZpbmVkIj9lLnRvcDpuLnRvcCxuLnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEIj0KdW5kZWZp
bmVkIj9lLnJpZ2h0Om4ucmlnaHQsbi5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVm
aW5lZCI/ZS5ib3R0PQpvbTpuLmJvdHRvbSxuLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRl
ZmluZWQiP2UubGVmdDpuLmxlZnQsdik6bn0sdi53aWQ9CnRoPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLHYpOnJ9LHYuaGVpZ2h0PTNEZnVuY3Rpb24oZT0KKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUsdik6aX0sdi54VGlja0Zvcm1hdD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhPQpyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLHYpOmZ9LHYueVRpY2tGb3Jt
YXQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmw9CmVuZ3RoPyhsPTNEZSx2KTpsfSx2
LnNob3dWYWx1ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZT0K
LHYpOmN9LHYuYWxpZ25WYWx1ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhoPTNEZSx2KTpofSx2LnJpPQpnaHRBbGlnblZhbHVlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHA9M0RlLHYpOnB9LHYubm9EYXRhPQo9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGUsdik6ZH0sdn0sZS5tb2RlbHMuc3RhY2tlZEFyZWE9
Cj0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3Zh
ciBhPTNEbi10LmxlZnQtdC5yaT0KZ2h0LGI9M0RyLXQudG9wLXQuYm90dG9tLHc9M0RkMy5zZWxl
Y3QodGhpcyk7cD0zRHYueFNjYWxlKCksZD0zRHYueVNjYWxlKCk7PQp2YXIgRT0zRGU7ZS5mb3JF
YWNoKGZ1bmN0aW9uKGUsdCl7ZS5zZXJpZXNJbmRleD0zRHQsZS52YWx1ZXM9M0RlLnZhbHVlcy5t
YXA9CihmdW5jdGlvbihlLG4pe3JldHVybiBlLmluZGV4PTNEbixlLnNlcmllc0luZGV4PTNEdCxl
fSl9KTt2YXIgUz0zRGUuZmlsdGVyKD0KZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KTtl
PTNEZDMubGF5b3V0LnN0YWNrKCkub3JkZXIobCkub2Zmc2V0KGYpLnZhPQpsdWVzKGZ1bmN0aW9u
KGUpe3JldHVybiBlLnZhbHVlc30pLngobykueSh1KS5vdXQoZnVuY3Rpb24oZSx0LG4pe3ZhciBy
PTNEdSg9CmUpPTNEPTNEPTNEMD8wOm47ZS5kaXNwbGF5PTNEe3k6cix5MDp0fX0pKFMpO3ZhciBU
PTNEdy5zZWxlY3RBbGwoImcubnYtd3JhcD0KLm52LXN0YWNrZWRhcmVhIikuZGF0YShbZV0pLE49
M0RULmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52PQotd3JhcCBudi1z
dGFja2VkYXJlYSIpLEM9M0ROLmFwcGVuZCgiZGVmcyIpLGs9M0ROLmFwcGVuZCgiZyIpLEw9M0RU
LnNlbGVjdCg9CiJnIik7ay5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWFyZWFXcmFwIiks
ay5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIj0KbnYtc2NhdHRlcldyYXAiKSxULmF0dHIoInRy
YW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50b3ArIikiKSx2LndpPQpkdGgoYSku
aGVpZ2h0KGIpLngobykueShmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNwbGF5LnkrZS5kaXNwbGF5
LnkwfSkuZm9yY2U9ClkoWzBdKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNv
bG9yfHxpKGUsZS5zZXJpZXNJbmRleCl9KSk7dmFyID0KQT0zREwuc2VsZWN0KCIubnYtc2NhdHRl
cldyYXAiKS5kYXR1bShlKTtBLmNhbGwodiksQy5hcHBlbmQoImNsaXBQYXRoIikuYXR0PQpyKCJp
ZCIsIm52LWVkZ2UtY2xpcC0iK3MpLmFwcGVuZCgicmVjdCIpLFQuc2VsZWN0KCIjbnYtZWRnZS1j
bGlwLSIrcysiIHJlY3Q9CiIpLmF0dHIoIndpZHRoIixhKS5hdHRyKCJoZWlnaHQiLGIpLEwuYXR0
cigiY2xpcC1wYXRoIixoPyJ1cmwoI252LWVkZ2UtY2xpcD0KLSIrcysiKSI6IiIpO3ZhciBPPTNE
ZDMuc3ZnLmFyZWEoKS54KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAobyhlLHQpKX0pLnkwKGZ1PQpu
Y3Rpb24oZSl7cmV0dXJuIGQoZS5kaXNwbGF5LnkwKX0pLnkxKGZ1bmN0aW9uKGUpe3JldHVybiBk
KGUuZGlzcGxheS55K2UuZGk9CnNwbGF5LnkwKX0pLmludGVycG9sYXRlKGMpLE09M0RkMy5zdmcu
YXJlYSgpLngoZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChvKGUsdD0KKSl9KS55MChmdW5jdGlvbihl
KXtyZXR1cm4gZChlLmRpc3BsYXkueTApfSkueTEoZnVuY3Rpb24oZSl7cmV0dXJuIGQoZS5kaXNw
PQpsYXkueTApfSksXz0zREwuc2VsZWN0KCIubnYtYXJlYVdyYXAiKS5zZWxlY3RBbGwoInBhdGgu
bnYtYXJlYSIpLmRhdGEoZnVuY3Q9CmlvbihlKXtyZXR1cm4gZX0pO18uZW50ZXIoKS5hcHBlbmQo
InBhdGgiKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cj0KbiJudi1hcmVhIG52LWFy
ZWEtIit0fSkuYXR0cigiZCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTShlLnZhbHVlcyxlLnNlcmll
c0luPQpkZXgpfSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oZSx0KXtkMy5zZWxlY3QodGhpcyku
Y2xhc3NlZCgiaG92ZXIiLCEwKSxtLmE9CnJlYU1vdXNlb3Zlcih7cG9pbnQ6ZSxzZXJpZXM6ZS5r
ZXkscG9zOltkMy5ldmVudC5wYWdlWCxkMy5ldmVudC5wYWdlWV0sc2VyaT0KZXNJbmRleDplLnNl
cmllc0luZGV4fSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKGUsdCl7ZDMuc2VsZWN0KHRoaXMp
LmNsYXNzPQplZCgiaG92ZXIiLCExKSxtLmFyZWFNb3VzZW91dCh7cG9pbnQ6ZSxzZXJpZXM6ZS5r
ZXkscG9zOltkMy5ldmVudC5wYWdlWCxkMy49CmV2ZW50LnBhZ2VZXSxzZXJpZXNJbmRleDplLnNl
cmllc0luZGV4fSl9KS5vbigiY2xpY2siLGZ1bmN0aW9uKGUsdCl7ZDMuc2VsZT0KY3QodGhpcyku
Y2xhc3NlZCgiaG92ZXIiLCExKSxtLmFyZWFDbGljayh7cG9pbnQ6ZSxzZXJpZXM6ZS5rZXkscG9z
OltkMy5ldmVuPQp0LnBhZ2VYLGQzLmV2ZW50LnBhZ2VZXSxzZXJpZXNJbmRleDplLnNlcmllc0lu
ZGV4fSl9KSxfLmV4aXQoKS5yZW1vdmUoKSxfLnM9CnR5bGUoImZpbGwiLGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIGUuY29sb3J8fGkoZSxlLnNlcmllc0luZGV4KX0pLnN0eWxlKCJzdHJvaz0KZSIsZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8aShlLGUuc2VyaWVzSW5kZXgpfSksXy5hdHRyKCJk
IixmdW5jdGlvbihlPQosdCl7cmV0dXJuIE8oZS52YWx1ZXMsdCl9KSx2LmRpc3BhdGNoLm9uKCJl
bGVtZW50TW91c2VvdmVyLmFyZWEiLGZ1bmN0aW9uKGU9Cil7TC5zZWxlY3QoIi5udi1jaGFydC0i
K3MrIiAubnYtYXJlYS0iK2Uuc2VyaWVzSW5kZXgpLmNsYXNzZWQoImhvdmVyIiwhMCl9KT0KLHYu
ZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC5hcmVhIixmdW5jdGlvbihlKXtMLnNlbGVjdCgi
Lm52LWNoYXJ0LSIrcysiPQogLm52LWFyZWEtIitlLnNlcmllc0luZGV4KS5jbGFzc2VkKCJob3Zl
ciIsITEpfSksZy5kM19zdGFja2VkT2Zmc2V0X3N0YWNrUGU9CnJjZW50PTNEZnVuY3Rpb24oZSl7
dmFyIHQ9M0RlLmxlbmd0aCxuPTNEZVswXS5sZW5ndGgscj0zRDEvdCxpLHMsbyxhPTNEW107Zj0K
b3Iocz0zRDA7czxuOysrcyl7Zm9yKGk9M0QwLG89M0QwO2k8RS5sZW5ndGg7aSsrKW8rPTNEdShF
W2ldLnZhbHVlc1tzXSk7aWYoPQpvKWZvcihpPTNEMDtpPHQ7aSsrKWVbaV1bc11bMV0vPTNEbztl
bHNlIGZvcihpPTNEMDtpPHQ7aSsrKWVbaV1bc11bMV09M0RyfWY9Cm9yKHM9M0QwO3M8bjsrK3Mp
YVtzXT0zRDA7cmV0dXJuIGF9fSksZ312YXIgdD0zRHt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxl
Zj0KdDowfSxuPTNEOTYwLHI9M0Q1MDAsaT0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCkscz0zRE1h
dGguZmxvb3IoTWF0aC5yYW5kb20oPQopKjFlNSksbz0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9
LHU9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS55fSxhPTNEInN0YWNrIiw9CmY9M0QiemVybyIsbD0z
RCJkZWZhdWx0IixjPTNEImxpbmVhciIsaD0zRCExLHAsZCx2PTNEZS5tb2RlbHMuc2NhdHRlcigp
LG09Cj0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwiYXJlYUNsaWNr
IiwiYXJlYU1vdXNlb3ZlciIsImFyZT0KYU1vdXNlb3V0Iik7cmV0dXJuIHYuc2l6ZSgyLjIpLnNp
emVEb21haW4oWzIuMiwyLjJdKSx2LmRpc3BhdGNoLm9uKCJlbGVtZW50PQpDbGljay5hcmVhIixm
dW5jdGlvbihlKXttLmFyZWFDbGljayhlKX0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92
ZXIudG89Cm9sdGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXSt0LmxlZnQsZS5wb3Nb
MV0rdC50b3BdLG0udG9vbHRpcFNob3coZT0KKX0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3Vz
ZW91dC50b29sdGlwIixmdW5jdGlvbihlKXttLnRvb2x0aXBIaWRlKGUpfSksPQpnLmRpc3BhdGNo
PTNEbSxnLnNjYXR0ZXI9M0R2LGQzLnJlYmluZChnLHYsImludGVyYWN0aXZlIiwic2l6ZSIsInhT
Y2FsZSIsInk9ClNjYWxlIiwielNjYWxlIiwieERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5
UmFuZ2UiLCJzaXplRG9tYWluIiwiZm9yY2VYIj0KLCJmb3JjZVkiLCJmb3JjZVNpemUiLCJjbGlw
Vm9yb25vaSIsInVzZVZvcm9ub2kiLCJjbGlwUmFkaXVzIiwiaGlnaGxpZ2h0UG9pPQpudCIsImNs
ZWFySGlnaGxpZ2h0cyIpLGcub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChnKSxn
Lng9M0RmdW5jdGk9Cm9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZDMuZnVuY3Rv
cihlKSxnKTpvfSxnLnk9M0RmdW5jdGlvbihlKXtyZT0KdHVybiBhcmd1bWVudHMubGVuZ3RoPyh1
PTNEZDMuZnVuY3RvcihlKSxnKTp1fSxnLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVyPQpuIGFy
Z3VtZW50cy5sZW5ndGg/KHQudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9w
OnQudG9wLHQucmlnaHQ9Cj0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6
dC5yaWdodCx0LmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbT0KIT0zRCJ1bmRlZmluZWQiP2UuYm90
dG9tOnQuYm90dG9tLHQubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sPQpl
ZnQ6dC5sZWZ0LGcpOnR9LGcud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8obj0zRGUsZyk6bn09CixnLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhyPTNEZSxnKTpyfSxnLmNsaXBFZGdlPTNEZj0KdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsZyk6aH0sZy5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVy
PQpuIGFyZ3VtZW50cy5sZW5ndGg/KGk9M0RlLnV0aWxzLmdldENvbG9yKHQpLGcpOml9LGcub2Zm
c2V0PTNEZnVuY3Rpb24oZSl7cmU9CnR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUsZyk6Zn0s
Zy5vcmRlcj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubD0KZW5ndGg/KGw9M0RlLGcp
Omx9LGcuc3R5bGU9M0RmdW5jdGlvbihlKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gYTth
PTNEPQplO3N3aXRjaChhKXtjYXNlInN0YWNrIjpnLm9mZnNldCgiemVybyIpLGcub3JkZXIoImRl
ZmF1bHQiKTticmVhaztjYXNlInN0cmU9CmFtIjpnLm9mZnNldCgid2lnZ2xlIiksZy5vcmRlcigi
aW5zaWRlLW91dCIpO2JyZWFrO2Nhc2Uic3RyZWFtLWNlbnRlciI6Zy5vZj0KZnNldCgic2lsaG91
ZXR0ZSIpLGcub3JkZXIoImluc2lkZS1vdXQiKTticmVhaztjYXNlImV4cGFuZCI6Zy5vZmZzZXQo
ImV4cGFuPQpkIiksZy5vcmRlcigiZGVmYXVsdCIpO2JyZWFrO2Nhc2Uic3RhY2tfcGVyY2VudCI6
Zy5vZmZzZXQoZy5kM19zdGFja2VkT2Zmc2U9CnRfc3RhY2tQZXJjZW50KSxnLm9yZGVyKCJkZWZh
dWx0Iil9cmV0dXJuIGd9LGcuaW50ZXJwb2xhdGU9M0RmdW5jdGlvbihlKXtyZT0KdHVybiBhcmd1
bWVudHMubGVuZ3RoPyhjPTNEZSxnKTpjfSxnfSxlLm1vZGVscy5zdGFja2VkQXJlYUNoYXJ0PTNE
ZnVuY3Rpb24oPQope2Z1bmN0aW9uIE0oeSl7cmV0dXJuIHkuZWFjaChmdW5jdGlvbih5KXt2YXIg
QT0zRGQzLnNlbGVjdCh0aGlzKSxfPTNEdGhpcyw9CkQ9M0QoYXx8cGFyc2VJbnQoQS5zdHlsZSgi
d2lkdGgiKSl8fDk2MCktdS5sZWZ0LXUucmlnaHQsUD0zRChmfHxwYXJzZUludChBLj0Kc3R5bGUo
ImhlaWdodCIpKXx8NDAwKS11LnRvcC11LmJvdHRvbTtNLnVwZGF0ZT0zRGZ1bmN0aW9uKCl7QS5j
YWxsKE0pfSxNLmNvPQpudGFpbmVyPTNEdGhpcyxTLmRpc2FibGVkPTNEeS5tYXAoZnVuY3Rpb24o
ZSl7cmV0dXJuISFlLmRpc2FibGVkfSk7aWYoIXgpe3Y9CmFyIEg7eD0zRHt9O2ZvcihIIGluIFMp
U1tIXWluc3RhbmNlb2YgQXJyYXk/eFtIXT0zRFNbSF0uc2xpY2UoMCk6eFtIXT0zRFNbSD0KXX1p
ZigheXx8IXkubGVuZ3RofHwheS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLmxl
bmd0aH0pLmxlbmd0aCl7PQp2YXIgQj0zREEuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShb
VF0pO3JldHVybiBCLmVudGVyKCkuYXBwZW5kKCJ0ZXh0Iik9Ci5hdHRyKCJjbGFzcyIsIm52ZDMg
bnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZD0K
ZGxlIiksQi5hdHRyKCJ4Iix1LmxlZnQrRC8yKS5hdHRyKCJ5Iix1LnRvcCtQLzIpLnRleHQoZnVu
Y3Rpb24oZSl7cmV0dXJuIGV9PQopLE19QS5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUo
KSxiPTNEdC54U2NhbGUoKSx3PTNEdC55U2NhbGUoKTt2YXIgaj0KPTNEQS5zZWxlY3RBbGwoImcu
bnYtd3JhcC5udi1zdGFja2VkQXJlYUNoYXJ0IikuZGF0YShbeV0pLEY9M0RqLmVudGVyKCkuYXBw
PQplbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1zdGFja2VkQXJlYUNoYXJ0
IikuYXBwZW5kKCJnIiksST0zRGo9Ci5zZWxlY3QoImciKTtGLmFwcGVuZCgicmVjdCIpLnN0eWxl
KCJvcGFjaXR5IiwwKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIj0KLCJudi14IG52LWF4aXMi
KSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteSBudi1heGlzIiksRi5hcHBlbmQoImci
KS5hPQp0dHIoImNsYXNzIiwibnYtc3RhY2tlZFdyYXAiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNs
YXNzIiwibnYtbGVnZW5kV3JhcCIpLEY9Ci5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWNv
bnRyb2xzV3JhcCIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudj0KLWludGVyYWN0aXZl
IiksSS5zZWxlY3QoInJlY3QiKS5hdHRyKCJ3aWR0aCIsRCkuYXR0cigiaGVpZ2h0IixQKTtpZiho
KXt2YXIgPQpxPTNEYz9ELUM6RDtpLndpZHRoKHEpLEkuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIp
LmRhdHVtKHkpLmNhbGwoaSksdS50b3AhPQo9M0RpLmhlaWdodCgpJiYodS50b3A9M0RpLmhlaWdo
dCgpLFA9M0QoZnx8cGFyc2VJbnQoQS5zdHlsZSgiaGVpZ2h0IikpfHw0MDA9CiktdS50b3AtdS5i
b3R0b20pLEkuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5z
bGF0ZSgiKz0KKEQtcSkrIiwiKyAtdS50b3ArIikiKX1pZihjKXt2YXIgUj0zRFt7a2V5Okwuc3Rh
Y2tlZHx8IlN0YWNrZWQiLG1ldGFLZXk6IlN0PQphY2tlZCIsZGlzYWJsZWQ6dC5zdHlsZSgpIT0z
RCJzdGFjayIsc3R5bGU6InN0YWNrIn0se2tleTpMLnN0cmVhbXx8IlN0cmVhbSI9CixtZXRhS2V5
OiJTdHJlYW0iLGRpc2FibGVkOnQuc3R5bGUoKSE9M0Qic3RyZWFtIixzdHlsZToic3RyZWFtIn0s
e2tleTpMLmV4cD0KYW5kZWR8fCJFeHBhbmRlZCIsbWV0YUtleToiRXhwYW5kZWQiLGRpc2FibGVk
OnQuc3R5bGUoKSE9M0QiZXhwYW5kIixzdHlsZToiPQpleHBhbmQifSx7a2V5Okwuc3RhY2tfcGVy
Y2VudHx8IlN0YWNrICUiLG1ldGFLZXk6IlN0YWNrX1BlcmNlbnQiLGRpc2FibGVkOnQ9Ci5zdHls
ZSgpIT0zRCJzdGFja19wZXJjZW50IixzdHlsZToic3RhY2tfcGVyY2VudCJ9XTtDPTNEay5sZW5n
dGgvMyoyNjAsUj0zRD0KUi5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGsuaW5kZXhPZihlLm1l
dGFLZXkpIT0zRD0zRC0xfSkscy53aWR0aChDKS5jb2xvPQpyKFsiIzQ0NCIsIiM0NDQiLCIjNDQ0
Il0pLEkuc2VsZWN0KCIubnYtY29udHJvbHNXcmFwIikuZGF0dW0oUikuY2FsbChzKSx1LnQ9Cm9w
IT0zRE1hdGgubWF4KHMuaGVpZ2h0KCksaS5oZWlnaHQoKSkmJih1LnRvcD0zRE1hdGgubWF4KHMu
aGVpZ2h0KCksaS5oZWlnaD0KdCgpKSxQPTNEKGZ8fHBhcnNlSW50KEEuc3R5bGUoImhlaWdodCIp
KXx8NDAwKS11LnRvcC11LmJvdHRvbSksSS5zZWxlY3QoIi5uPQp2LWNvbnRyb2xzV3JhcCIpLmF0
dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrIC11LnRvcCsiKSIpfWouYXR0cigidHJhbnM9
CmZvcm0iLCJ0cmFuc2xhdGUoIit1LmxlZnQrIiwiK3UudG9wKyIpIiksdiYmSS5zZWxlY3QoIi5u
di15Lm52LWF4aXMiKS5hdHRyKD0KInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK0QrIiwwKSIpLG0m
JihvLndpZHRoKEQpLmhlaWdodChQKS5tYXJnaW4oe2xlZnQ6dS5sPQplZnQsdG9wOnUudG9wfSku
c3ZnQ29udGFpbmVyKEEpLnhTY2FsZShiKSxqLnNlbGVjdCgiLm52LWludGVyYWN0aXZlIikuY2Fs
bCg9Cm8pKSx0LndpZHRoKEQpLmhlaWdodChQKTt2YXIgVT0zREkuc2VsZWN0KCIubnYtc3RhY2tl
ZFdyYXAiKS5kYXR1bSh5KTtVLmNhbD0KbCh0KSxwJiYobi5zY2FsZShiKS50aWNrcyhELzEwMCku
dGlja1NpemUoLVAsMCksSS5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5hPQp0dHIoInRyYW5zZm9y
bSIsInRyYW5zbGF0ZSgwLCIrUCsiKSIpLEkuc2VsZWN0KCIubnYteC5udi1heGlzIikuY2FsbChu
KSksZCY9CiYoci5zY2FsZSh3KS50aWNrcyh0Lm9mZnNldCgpPTNEPTNEIndpZ2dsZSI/MDpQLzM2
KS50aWNrU2l6ZSgtRCwwKS5zZXRUaWNrRj0Kb3JtYXQodC5zdHlsZSgpPTNEPTNEImV4cGFuZCJ8
fHQuc3R5bGUoKT0zRD0zRCJzdGFja19wZXJjZW50Ij9kMy5mb3JtYXQoIiUiPQopOkUpLEkuc2Vs
ZWN0KCIubnYteS5udi1heGlzIikuY2FsbChyKSksdC5kaXNwYXRjaC5vbigiYXJlYUNsaWNrLnRv
Z2dsZSIsZnU9Cm5jdGlvbihlKXt5LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxl
ZH0pLmxlbmd0aD0zRD0zRD0zRDE/eS5mb3JFYT0KY2goZnVuY3Rpb24oZSl7ZS5kaXNhYmxlZD0z
RCExfSk6eS5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7dC5kaXNhYmxlZD0zRG4hPTNEPQplLnNlcmll
c0luZGV4fSksUy5kaXNhYmxlZD0zRHkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxl
ZH0pLE4uc3RhdGU9CkNoYW5nZShTKSxNLnVwZGF0ZSgpfSksaS5kaXNwYXRjaC5vbigic3RhdGVD
aGFuZ2UiLGZ1bmN0aW9uKGUpe1MuZGlzYWJsZWQ9Cj0zRGUuZGlzYWJsZWQsTi5zdGF0ZUNoYW5n
ZShTKSxNLnVwZGF0ZSgpfSkscy5kaXNwYXRjaC5vbigibGVnZW5kQ2xpY2siLGZ1bj0KY3Rpb24o
ZSxuKXtpZighZS5kaXNhYmxlZClyZXR1cm47Uj0zRFIubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBl
LmRpc2FibGVkPTNEPQohMCxlfSksZS5kaXNhYmxlZD0zRCExLHQuc3R5bGUoZS5zdHlsZSksUy5z
dHlsZT0zRHQuc3R5bGUoKSxOLnN0YXRlQ2hhbmdlKFM9CiksTS51cGRhdGUoKX0pLG8uZGlzcGF0
Y2gub24oImVsZW1lbnRNb3VzZW1vdmUiLGZ1bmN0aW9uKGkpe3QuY2xlYXJIaWdobGlnaD0KdHMo
KTt2YXIgcyxhLGYsYz0zRFtdO3kuZmlsdGVyKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc2VyaWVz
SW5kZXg9M0R0LCFlLmRpPQpzYWJsZWR9KS5mb3JFYWNoKGZ1bmN0aW9uKG4scil7YT0zRGUuaW50
ZXJhY3RpdmVCaXNlY3Qobi52YWx1ZXMsaS5wb2ludFhWYWw9CnVlLE0ueCgpKSx0LmhpZ2hsaWdo
dFBvaW50KHIsYSwhMCk7dmFyIG89M0RuLnZhbHVlc1thXTtpZih0eXBlb2Ygbz0zRD0zRCJ1bj0K
ZGVmaW5lZCIpcmV0dXJuO3R5cGVvZiBzPTNEPTNEInVuZGVmaW5lZCImJihzPTNEbyksdHlwZW9m
IGY9M0Q9M0QidW5kZWZpbmVkPQoiJiYoZj0zRE0ueFNjYWxlKCkoTS54KCkobyxhKSkpO3ZhciB1
PTNEdC5zdHlsZSgpPTNEPTNEImV4cGFuZCI/by5kaXNwbGF5Lnk9CjpNLnkoKShvLGEpO2MucHVz
aCh7a2V5Om4ua2V5LHZhbHVlOnUsY29sb3I6bChuLG4uc2VyaWVzSW5kZXgpLHN0YWNrZWRWYWx1
ZT0KOm8uZGlzcGxheX0pfSksYy5yZXZlcnNlKCk7aWYoYy5sZW5ndGg+Mil7dmFyIGg9M0RNLnlT
Y2FsZSgpLmludmVydChpLm1vdXNlPQpZKSxwPTNESW5maW5pdHksZD0zRG51bGw7Yy5mb3JFYWNo
KGZ1bmN0aW9uKGUsdCl7aD0zRE1hdGguYWJzKGgpO3ZhciBuPTNETWE9CnRoLmFicyhlLnN0YWNr
ZWRWYWx1ZS55MCkscj0zRE1hdGguYWJzKGUuc3RhY2tlZFZhbHVlLnkpO2lmKGg+PTNEbiYmaDw9
M0RyKz0Kbil7ZD0zRHQ7cmV0dXJufX0pLGQhPTNEbnVsbCYmKGNbZF0uaGlnaGxpZ2h0PTNEITAp
fXZhciB2PTNEbi50aWNrRm9ybWF0KCkoPQpNLngoKShzLGEpKSxtPTNEdC5zdHlsZSgpPTNEPTNE
ImV4cGFuZCI/ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZDMuZm9ybWF0KCIuMSU9CiIpKGUpfTpmdW5j
dGlvbihlLHQpe3JldHVybiByLnRpY2tGb3JtYXQoKShlKX07by50b29sdGlwLnBvc2l0aW9uKHts
ZWZ0OmYrdT0KLmxlZnQsdG9wOmkubW91c2VZK3UudG9wfSkuY2hhcnRDb250YWluZXIoXy5wYXJl
bnROb2RlKS5lbmFibGVkKGcpLnZhbHVlRm9yPQptYXR0ZXIobSkuZGF0YSh7dmFsdWU6dixzZXJp
ZXM6Y30pKCksby5yZW5kZXJHdWlkZUxpbmUoZil9KSxvLmRpc3BhdGNoLm9uKCI9CmVsZW1lbnRN
b3VzZW91dCIsZnVuY3Rpb24oZSl7Ti50b29sdGlwSGlkZSgpLHQuY2xlYXJIaWdobGlnaHRzKCl9
KSxOLm9uKCJ0bz0Kb2x0aXBTaG93IixmdW5jdGlvbihlKXtnJiZPKGUsXy5wYXJlbnROb2RlKX0p
LE4ub24oImNoYW5nZVN0YXRlIixmdW5jdGlvbihlPQope3R5cGVvZiBlLmRpc2FibGVkIT0zRCJ1
bmRlZmluZWQiJiZ5Lmxlbmd0aD0zRD0zRD0zRGUuZGlzYWJsZWQubGVuZ3RoJiYoeS49CmZvckVh
Y2goZnVuY3Rpb24odCxuKXt0LmRpc2FibGVkPTNEZS5kaXNhYmxlZFtuXX0pLFMuZGlzYWJsZWQ9
M0RlLmRpc2FibGVkKT0KLHR5cGVvZiBlLnN0eWxlIT0zRCJ1bmRlZmluZWQiJiZ0LnN0eWxlKGUu
c3R5bGUpLE0udXBkYXRlKCl9KX0pLE19dmFyIHQ9M0RlPQoubW9kZWxzLnN0YWNrZWRBcmVhKCks
bj0zRGUubW9kZWxzLmF4aXMoKSxyPTNEZS5tb2RlbHMuYXhpcygpLGk9M0RlLm1vZGVscy49Cmxl
Z2VuZCgpLHM9M0RlLm1vZGVscy5sZWdlbmQoKSxvPTNEZS5pbnRlcmFjdGl2ZUd1aWRlbGluZSgp
LHU9M0R7dG9wOjMwLHJpZz0KaHQ6MjUsYm90dG9tOjUwLGxlZnQ6NjB9LGE9M0RudWxsLGY9M0Ru
dWxsLGw9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLGM9M0QhPQowLGg9M0QhMCxwPTNEITAsZD0z
RCEwLHY9M0QhMSxtPTNEITEsZz0zRCEwLHk9M0RmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiI9
CjxoMz4iK2UrIjwvaDM+IisiPHA+IituKyIgb24gIit0KyI8L3A+In0sYix3LEU9M0RkMy5mb3Jt
YXQoIiwuMmYiKSxTPTNEe3N0eT0KbGU6dC5zdHlsZSgpfSx4PTNEbnVsbCxUPTNEIk5vIERhdGEg
QXZhaWxhYmxlLiIsTj0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvPQp3IiwidG9vbHRpcEhpZGUi
LCJzdGF0ZUNoYW5nZSIsImNoYW5nZVN0YXRlIiksQz0zRDI1MCxrPTNEWyJTdGFja2VkIiwiU3Ry
ZWE9Cm0iLCJFeHBhbmRlZCJdLEw9M0R7fSxBPTNEMDtuLm9yaWVudCgiYm90dG9tIikudGlja1Bh
ZGRpbmcoNyksci5vcmllbnQodj8icj0KaWdodCI6ImxlZnQiKSxzLnVwZGF0ZVN0YXRlKCExKTt2
YXIgTz0zRGZ1bmN0aW9uKGkscyl7dmFyIG89M0RpLnBvc1swXSsocy5vPQpmZnNldExlZnR8fDAp
LHU9M0RpLnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLGE9M0RuLnRpY2tGb3JtYXQoKSh0LngoKShp
LnBvaW49CnQsaS5wb2ludEluZGV4KSksZj0zRHIudGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbnQs
aS5wb2ludEluZGV4KSksbD0zRHkoaS5zZT0Kcmllcy5rZXksYSxmLGksTSk7ZS50b29sdGlwLnNo
b3coW28sdV0sbCxpLnZhbHVlPDA/Im4iOiJzIixudWxsLHMpfTtyZXR1cm4gPQp0LmRpc3BhdGNo
Lm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rdS5sZWZ0LGUu
cG9zWzFdK3U9Ci50b3BdLE4udG9vbHRpcFNob3coZSl9KSx0LmRpc3BhdGNoLm9uKCJ0b29sdGlw
SGlkZSIsZnVuY3Rpb24oZSl7Ti50b29sdGlwSD0KaWRlKGUpfSksTi5vbigidG9vbHRpcEhpZGUi
LGZ1bmN0aW9uKCl7ZyYmZS50b29sdGlwLmNsZWFudXAoKX0pLE0uZGlzcGF0Y2g9Cj0zRE4sTS5z
dGFja2VkPTNEdCxNLmxlZ2VuZD0zRGksTS5jb250cm9scz0zRHMsTS54QXhpcz0zRG4sTS55QXhp
cz0zRHIsTS5pbj0KdGVyYWN0aXZlTGF5ZXI9M0RvLGQzLnJlYmluZChNLHQsIngiLCJ5Iiwic2l6
ZSIsInhTY2FsZSIsInlTY2FsZSIsInhEb21haW4iPQosInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFu
Z2UiLCJzaXplRG9tYWluIiwiaW50ZXJhY3RpdmUiLCJ1c2VWb3Jvbm9pIiwib2Zmc2U9CnQiLCJv
cmRlciIsInN0eWxlIiwiY2xpcEVkZ2UiLCJmb3JjZVgiLCJmb3JjZVkiLCJmb3JjZVNpemUiLCJp
bnRlcnBvbGF0ZSIpLD0KTS5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKE0pLE0u
bWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtPQplbnRzLmxlbmd0aD8odS50b3A9M0R0
eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6dS50b3AsdS5yaWdodD0zRHR5cGU9Cm9m
IGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp1LnJpZ2h0LHUuYm90dG9tPTNEdHlwZW9m
IGUuYm90dG9tIT0zRCJ1bj0KZGVmaW5lZCI/ZS5ib3R0b206dS5ib3R0b20sdS5sZWZ0PTNEdHlw
ZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6dS5sPQplZnQsTSk6dX0sTS53aWR0aD0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZSxNKTphfSxNLmhlaWc9
Cmh0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLE0pOmZ9LE0u
Y29sb3I9M0RmdW5jdGlvbihuKT0Ke3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZS51dGls
cy5nZXRDb2xvcihuKSxpLmNvbG9yKGwpLHQuY29sb3IobCksTSk6PQpsfSxNLnNob3dDb250cm9s
cz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSxNKTpjfSxNLnNo
b3c9CkxlZ2VuZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxN
KTpofSxNLnNob3dYQXhpcz0zRGZ1bj0KY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHA9M0RlLE0pOnB9LE0uc2hvd1lBeGlzPTNEZnVuY3Rpb24oZSl7cmV0PQp1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oZD0zRGUsTSk6ZH0sTS5yaWdodEFsaWduWUF4aXM9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXI9Cmd1bWVudHMubGVuZ3RoPyh2PTNEZSxyLm9yaWVudChlPyJyaWdodCI6ImxlZnQiKSxN
KTp2fSxNLnVzZUludGVyYWN0aXZlR3VpZD0KZWxpbmU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8obT0zRGUsZT0zRD0zRD0zRCEwJiYoTS5pbnRlcmFjPQp0aXZlKCExKSxN
LnVzZVZvcm9ub2koITEpKSxNKTptfSxNLnRvb2x0aXA9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmw9CmVuZ3RoPyh5PTNEZSxNKTp5fSxNLnRvb2x0aXBzPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9M0RlLD0KTSk6Z30sTS50b29sdGlwQ29udGVudD0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PTNEZSxNKTp5fSxNPQouc3RhdGU9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUz0zRGUsTSk6U30sTS5kZWZh
dWx0U3RhdGU9M0Q9CmZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh4PTNEZSxN
KTp4fSxNLm5vRGF0YT0zRGZ1bmN0aW9uKGUpe3JldD0KdXJuIGFyZ3VtZW50cy5sZW5ndGg/KFQ9
M0RlLE0pOlR9LE0udHJhbnNpdGlvbkR1cmF0aW9uPTNEZnVuY3Rpb24oZSl7cmV0dXJuPQogYXJn
dW1lbnRzLmxlbmd0aD8oQT0zRGUsTSk6QX0sTS5jb250cm9sc0RhdGE9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnQ9CnMubGVuZ3RoPyhrPTNEZSxNKTprfSxNLmNvbnRyb2xMYWJlbHM9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD0KP3R5cGVvZiBlIT0zRCJvYmplY3Qi
P0w6KEw9M0RlLE0pOkx9LHIuc2V0VGlja0Zvcm1hdD0zRHIudGlja0Zvcm1hdCxyLnRpY2tGPQpv
cm1hdD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPTNEZSxyKTpFfSxN
fX0oKSxkZWZpbmUoInBsdWc9CmluL3BsdWdpbnMvbnZkMy9udi5kMyIsZnVuY3Rpb24oKXt9KSxk
ZWZpbmUoInBsdWdpbi9jaGFydHMvbnZkMy9jb21tb24vY29uZj0KaWciLFsicGx1Z2luL2NoYXJ0
cy9mb3Jtcy9kZWZhdWx0IiwicGx1Z2luL3BsdWdpbnMvbnZkMy9udi5kMyJdLGZ1bmN0aW9uKGUp
PQp7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiIiLGNhdGVnb3J5OiIiLGxpYnJhcnk6
Ik5WRDMiLHRhZzoic3ZnIixrZXk9CndvcmRzOiJzbWFsbCJ9KX0pLGRlZmluZSgicGx1Z2luL2No
YXJ0cy9udmQzL2Jhci9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9udj0KZDMvY29tbW9uL2NvbmZp
ZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiUmVndWxhciIs
Y2F0PQplZ29yeToiQmFyIGRpYWdyYW1zIixjb2x1bW5zOnt4Ont0aXRsZToiVmFsdWVzIGZvciB4
LWF4aXMiLGlzX2xhYmVsOiEwLGlzX2E9CnV0bzohMCxpc191bmlxdWU6ITB9LHk6e3RpdGxlOiJW
YWx1ZXMgZm9yIHktYXhpcyIsaXNfbnVtZXJpYzohMH19fSl9KSxkZWZpbj0KZSgicGx1Z2luL2No
YXJ0cy9udmQzL2Jhcl9zdGFja2VkL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL252ZDMvY29tbW9u
L2NvbmZpPQpnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJT
dGFja2VkIixjYXRlZ29yeToiQmFyIGRpYWc9CnJhbXMiLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1
ZXMgZm9yIHgtYXhpcyIsaXNfbGFiZWw6ITAsaXNfYXV0bzohMCxpc191bmlxdT0KZTohMH0seTp7
dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1lcmljOiEwfX19KX0pLGRlZmluZSgicGx1
Z2luL2NoYXJ0PQpzL252ZDMvYmFyX2hvcml6b250YWwvY29uZmlnIixbInBsdWdpbi9jaGFydHMv
bnZkMy9jb21tb24vY29uZmlnIl0sZnVuY3Rpb249CihlKXtyZXR1cm4gJC5leHRlbmQoITAse30s
ZSx7dGl0bGU6Ikhvcml6b250YWwiLGNhdGVnb3J5OiJCYXIgZGlhZ3JhbXMiLHNldD0KdGluZ3M6
e3hfYXhpc190eXBlOntpbml0OiJoaWRlIn19LGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9y
IHgtYXhpcyIsaXNfPQpsYWJlbDohMCxpc19hdXRvOiEwLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6
IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1lcmljOiE9CjB9fX0pfSksZGVmaW5lKCJwbHVnaW4v
Y2hhcnRzL252ZDMvYmFyX2hvcml6b250YWxfc3RhY2tlZC9jb25maWciLFsicGx1Z2luLz0KY2hh
cnRzL252ZDMvY29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7
fSxlLHt0aXRsZToiU3RhPQpja2VkIGhvcml6b250YWwiLGNhdGVnb3J5OiJCYXIgZGlhZ3JhbXMi
LHNldHRpbmdzOnt4X2F4aXNfdHlwZTp7aW5pdDoiaGlkZSI9Cn19LGNvbHVtbnM6e3g6e3RpdGxl
OiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbGFiZWw6ITAsaXNfYXV0bzohMCxpc191bmlxdWU6IT0K
MH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1lcmljOiEwfX19KX0pLGRlZmlu
ZSgicGx1Z2luL2NoYXJ0cy9uPQp2ZDMvbGluZV9mb2N1cy9jb25maWciLFsicGx1Z2luL2NoYXJ0
cy9udmQzL2NvbW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXQ9CnVybiAkLmV4dGVuZCghMCx7
fSxlLHt0aXRsZToiTGluZSB3aXRoIGZvY3VzIixjYXRlZ29yeToiT3RoZXJzIix6b29tYWJsZToi
bj0KYXRpdmUiLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbGFiZWw6
ITAsaXNfYXV0bzohMCxpc191bmlxPQp1ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlz
Iixpc19udW1lcmljOiEwfX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXI9CnRzL252ZDMvcGllL2Nv
bmZpZyIsWyJwbHVnaW4vcGx1Z2lucy9udmQzL252LmQzIl0sZnVuY3Rpb24oKXtyZXR1cm4gJC5l
eHRlbj0KZCghMCx7fSx7dGl0bGU6IlBpZSBjaGFydCIsY2F0ZWdvcnk6IkFyZWEgY2hhcnRzIixs
aWJyYXJ5OiJOVkQzIix0YWc6InN2ZyIsPQprZXl3b3Jkczoic21hbGwiLGNvbHVtbnM6e2xhYmVs
Ont0aXRsZToiTGFiZWxzIixpc19sYWJlbDohMCxpc19hdXRvOiEwfSx5Ons9CnRpdGxlOiJWYWx1
ZXMiLGlzX251bWVyaWM6ITB9fSxzZXR0aW5nczp7bWFpbl9zZXBhcmF0b3I6e3R5cGU6InNlcGFy
YXRvciIsdD0KaXRsZToiUGllIGNoYXJ0IHNldHRpbmdzIn0sZG9udXRfcmF0aW86e3RpdGxlOiJE
b251dCByYXRpbyIsaW5mbzoiRGV0ZXJtaW5lPQogaG93IGxhcmdlIHRoZSBkb251dCBob2xlIHdp
bGwgYmUuIix0eXBlOiJzZWxlY3QiLGluaXQ6IjAuNSIsZGF0YTpbe2xhYmVsOiI9CjUwJSIsdmFs
dWU6IjAuNSJ9LHtsYWJlbDoiMjUlIix2YWx1ZToiMC4yNSJ9LHtsYWJlbDoiMTAlIix2YWx1ZToi
MC4xMCJ9LHtsYT0KYmVsOiIwJSIsdmFsdWU6IjAifV19LHNob3dfbGVnZW5kOnt0aXRsZToiU2hv
dyBsZWdlbmQiLGluZm86IldvdWxkIHlvdSBsaWtlPQogdG8gYWRkIGEgbGVnZW5kPyIsdHlwZToi
cmFkaW9idXR0b24iLGluaXQ6ImZhbHNlIixkYXRhOlt7bGFiZWw6IlllcyIsdmFsdWU9CjoidHJ1
ZSJ9LHtsYWJlbDoiTm8iLHZhbHVlOiJmYWxzZSJ9XX0sbGFiZWxfc2VwYXJhdG9yOnt0eXBlOiJz
ZXBhcmF0b3IiLHRpdD0KbGU6IkxhYmVsIHNldHRpbmdzIn0sbGFiZWxfdHlwZTp7dGl0bGU6IkRv
bnV0IGxhYmVsIixpbmZvOiJXaGF0IHdvdWxkIHlvdSBsPQppa2UgdG8gc2hvdyBmb3IgZWFjaCBz
bGljZT8iLHR5cGU6InNlbGVjdCIsaW5pdDoicGVyY2VudCIsZGF0YTpbe2xhYmVsOiItLSA9Ck5v
dGhpbmcgLS0iLHZhbHVlOiJoaWRlIixoaWRlOiJsYWJlbF9vdXRzaWRlIn0se2xhYmVsOiJMYWJl
bCBjb2x1bW4iLHZhbHVlOj0KImtleSIsc2hvdzoibGFiZWxfb3V0c2lkZSJ9LHtsYWJlbDoiVmFs
dWUgY29sdW1uIix2YWx1ZToidmFsdWUiLHNob3c6ImxhYmVsPQpfb3V0c2lkZSJ9LHtsYWJlbDoi
UGVyY2VudGFnZSIsdmFsdWU6InBlcmNlbnQiLHNob3c6ImxhYmVsX291dHNpZGUifV19LGxhYmU9
Cmxfb3V0c2lkZTp7dGl0bGU6IlNob3cgb3V0c2lkZSIsaW5mbzoiV291bGQgeW91IGxpa2UgdG8g
c2hvdyBsYWJlbHMgb3V0c2lkZT0KIHRoZSBkb251dD8iLHR5cGU6InJhZGlvYnV0dG9uIixpbml0
OiJmYWxzZSIsZGF0YTpbe2xhYmVsOiJZZXMiLHZhbHVlOiJ0cnVlPQoifSx7bGFiZWw6Ik5vIix2
YWx1ZToiZmFsc2UifV19LHVzZV9wYW5lbHM6e2luaXQ6InRydWUiLGhpZGU6ITB9fX0pfSksZGVm
aW49CmUoInBsdWdpbi9jaGFydHMvbnZkMy9zdGFja2VkYXJlYV9mdWxsL2NvbmZpZyIsWyJwbHVn
aW4vY2hhcnRzL252ZDMvY29tbW9uLz0KY29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0
ZW5kKCEwLHt9LGUse3RpdGxlOiJFeHBhbmRlZCIsem9vbWFibGU6ITAsPQpjYXRlZ29yeToiQXJl
YSBjaGFydHMiLGtleXdvcmRzOiJkZWZhdWx0IHNtYWxsIixjb2x1bW5zOnt4Ont0aXRsZToiVmFs
dWVzIGY9Cm9yIHgtYXhpcyIsaXNfbGFiZWw6ITAsaXNfYXV0bzohMCxpc191bmlxdWU6ITB9LHk6
e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhpcz0KIixpc19udW1lcmljOiEwfX19KX0pLGRlZmluZSgi
cGx1Z2luL2NoYXJ0cy9udmQzL3N0YWNrZWRhcmVhX3N0cmVhbS9jb25maWciPQosWyJwbHVnaW4v
Y2hhcnRzL252ZDMvY29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCgh
MCx7fSxlLHs9CnRpdGxlOiJTdHJlYW0iLGNhdGVnb3J5OiJBcmVhIGNoYXJ0cyIsem9vbWFibGU6
ITAsa2V5d29yZHM6ImRlZmF1bHQgc21hbGwiLD0Kc2hvd21heG1pbjohMCxjb2x1bW5zOnt4Ont0
aXRsZToiVmFsdWVzIGZvciB4LWF4aXMiLGlzX2xhYmVsOiEwLGlzX2F1dG86ITAsPQppc191bmlx
dWU6ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhpcyIsaXNfbnVtZXJpYzohMH19fSl9KSxk
ZWZpbmUoInBsdWc9CmluL2NoYXJ0cy9udmQzL2hpc3RvZ3JhbS9jb25maWciLFsicGx1Z2luL2No
YXJ0cy9udmQzL2NvbW1vbi9jb25maWciXSxmdW5jdD0KaW9uKGUpe3JldHVybiAkLmV4dGVuZCgh
MCx7fSxlLHt0aXRsZToiSGlzdG9ncmFtIixjYXRlZ29yeToiRGF0YSBwcm9jZXNzaW5nPQogKHJl
cXVpcmVzICdjaGFydHMnIHRvb2wgZnJvbSBUb29sc2hlZCkiLGV4ZWN1dGU6Imhpc3RvZ3JhbSIs
a2V5d29yZHM6InNtYWw9CmwgbWVkaXVtIGxhcmdlIixjb2x1bW5zOnt5Ont0aXRsZToiT2JzZXJ2
YXRpb25zIixpc19udW1lcmljOiEwfX0sc2V0dGluZ3M6ez0KeF9heGlzX2xhYmVsOntpbml0OiJW
YWx1ZXMifSx5X2F4aXNfbGFiZWw6e2luaXQ6IkRlbnNpdHkifSx5X2F4aXNfdHlwZTp7aW5pPQp0
OiJmIn0seV9heGlzX3ByZWNpc2lvbjp7aW5pdDoiLjIifX19KX0pLGRlZmluZSgicGx1Z2luL2No
YXJ0cy9udmQzL2xpbmUvY289Cm5maWciLFsicGx1Z2luL2NoYXJ0cy9udmQzL2NvbW1vbi9jb25m
aWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAsez0KfSxlLHt0aXRsZToiTGluZSBj
aGFydCIsY2F0ZWdvcnk6Ik90aGVycyIsem9vbWFibGU6ITAsY29sdW1uczp7eDp7dGl0bGU6IlZh
PQpsdWVzIGZvciB4LWF4aXMiLGlzX2xhYmVsOiEwLGlzX2F1dG86ITAsaXNfdW5pcXVlOiEwfSx5
Ont0aXRsZToiVmFsdWVzIGZvciA9CnktYXhpcyIsaXNfbnVtZXJpYzohMH19fSl9KSxkZWZpbmUo
InBsdWdpbi9jaGFydHMvbnZkMy9zY2F0dGVyL2NvbmZpZyIsWyJwbD0KdWdpbi9jaGFydHMvbnZk
My9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3Rp
dGxlPQo6IlNjYXR0ZXIgcGxvdCIsY2F0ZWdvcnk6Ik90aGVycyIsem9vbWFibGU6ITAsY29sdW1u
czp7eDp7dGl0bGU6IlZhbHVlcyBmb3I9CiB4LWF4aXMiLGlzX251bWVyaWM6ITB9LHk6e3RpdGxl
OiJWYWx1ZXMgZm9yIHktYXhpcyIsaXNfbnVtZXJpYzohMH19fSl9KSxkZT0KZmluZSgicGx1Z2lu
L2NoYXJ0cy9udmQzL3N0YWNrZWRhcmVhL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL252ZDMvY29t
bW9uL2NvPQpuZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxl
OiJSZWd1bGFyIix6b29tYWJsZTohMCxjYXQ9CmVnb3J5OiJBcmVhIGNoYXJ0cyIsa2V5d29yZHM6
ImRlZmF1bHQgc21hbGwiLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yID0KeC1heGlzIixp
c19sYWJlbDohMCxpc19hdXRvOiEwLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3Ig
eS1heGlzIixpPQpzX251bWVyaWM6ITB9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL2pxcGxv
dC9jb21tb24vY29uZmlnIixbInBsdWdpbi9jaGE9CnJ0cy9mb3Jtcy9kZWZhdWx0Il0sZnVuY3Rp
b24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiIiLGNhdGVnb3J5Oj0KIiIsbGli
cmFyeToianFQbG90Iix0YWc6ImRpdiIsem9vbWFibGU6ITAsa2V5d29yZHM6Im1lZGl1bSIsc2V0
dGluZ3M6e3NlcGFyPQphdG9yX2dyaWQ6e3RpdGxlOiJHcmlkcyIsdHlwZToic2VwYXJhdG9yIn0s
eF9heGlzX2dyaWQ6e3RpdGxlOiJBeGlzIGdyaWQiLGk9Cm5mbzoiV291bGQgeW91IGxpa2UgdG8g
c2hvdyBncmlkIGxpbmVzIGZvciB0aGUgWCBheGlzPyIsdHlwZToicmFkaW9idXR0b24iLD0KaW5p
dDoiZmFsc2UiLGRhdGE6W3tsYWJlbDoiT24iLHZhbHVlOiJ0cnVlIn0se2xhYmVsOiJPZmYiLHZh
bHVlOiJmYWxzZSJ9XX0sPQp5X2F4aXNfZ3JpZDp7dGl0bGU6IkF4aXMgZ3JpZCIsaW5mbzoiV291
bGQgeW91IGxpa2UgdG8gc2hvdyBncmlkIGxpbmVzIGZvciA9CnRoZSBZIGF4aXM/Iix0eXBlOiJy
YWRpb2J1dHRvbiIsaW5pdDoidHJ1ZSIsZGF0YTpbe2xhYmVsOiJPbiIsdmFsdWU6InRydWUifT0K
LHtsYWJlbDoiT2ZmIix2YWx1ZToiZmFsc2UifV19fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRz
L2pxcGxvdC9iYXIvY29uZmlnPQoiLFsicGx1Z2luL2NoYXJ0cy9qcXBsb3QvY29tbW9uL2NvbmZp
ZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSw9CmUse3RpdGxlOiJSZWd1bGFy
IixjYXRlZ29yeToiQmFyIGRpYWdyYW1zIixjb2x1bW5zOnt4Ont0aXRsZToiVmFsdWVzIGZvciB4
LT0KYXhpcyIsaXNfbGFiZWw6ITAsaXNfYXV0bzohMCxpc191bmlxdWU6ITB9LHk6e3RpdGxlOiJW
YWx1ZXMgZm9yIHktYXhpcyIsaXNfPQpudW1lcmljOiEwfX19KX0pLGRlZmluZSgicGx1Z2luL2No
YXJ0cy9qcXBsb3QvbGluZS9jb25maWciLFsicGx1Z2luL2NoYXJ0cy89CmpxcGxvdC9jb21tb24v
Y29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJMaW5l
IGNoYT0KcnQiLGNhdGVnb3J5OiJPdGhlcnMiLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9y
IHgtYXhpcyIsaXNfbGFiZWw6ITAsaXNfPQphdXRvOiEwLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6
IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1lcmljOiEwfX19KX0pLGRlZmk9Cm5lKCJwbHVnaW4v
Y2hhcnRzL2pxcGxvdC9zY2F0dGVyL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL2pxcGxvdC9jb21t
b24vY29uZj0KaWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6
IlNjYXR0ZXIgcGxvdCIsY2F0ZWdvcnk6Ik90PQpoZXJzIixjb2x1bW5zOnt4Ont0aXRsZToiVmFs
dWVzIGZvciB4LWF4aXMiLGlzX251bWVyaWM6ITB9LHk6e3RpdGxlOiJWYWx1ZXM9CiBmb3IgeS1h
eGlzIixpc19udW1lcmljOiEwfX0sc2V0dGluZ3M6e3hfYXhpc19ncmlkOntpbml0OiJ0cnVlIn19
fSl9KSxkZWZpbj0KZSgicGx1Z2luL2NoYXJ0cy9qcXBsb3QvYm94cGxvdC9jb25maWciLFsicGx1
Z2luL2NoYXJ0cy9qcXBsb3QvY29tbW9uL2NvbmZpPQpnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQu
ZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJCb3ggcGxvdCIsY2F0ZWdvcnk6IkRhdGEgcHI9Cm9jZXNz
aW5nIChyZXF1aXJlcyAnY2hhcnRzJyB0b29sIGZyb20gVG9vbHNoZWQpIixsaWJyYXJ5OiJqcVBs
b3QiLHRhZzoiZGl2Ij0KLGV4ZWN1dGU6ImJveHBsb3QiLGtleXdvcmRzOiJzbWFsbCBtZWRpdW0g
bGFyZ2UiLGNvbHVtbnM6e3k6e3RpdGxlOiJPYnNlcnZhPQp0aW9ucyIsaXNfbnVtZXJpYzohMH19
LHNldHRpbmdzOntzaG93X2xlZ2VuZDp7aW5pdDoiZmFsc2UifX19KX0pLGRlZmluZSgicGw9CnVn
aW4vY2hhcnRzL2pxcGxvdC9oaXN0b2dyYW1fZGlzY3JldGUvY29uZmlnIixbInBsdWdpbi9jaGFy
dHMvanFwbG90L2NvbW1vbj0KL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCgh
MCx7fSxlLHt0aXRsZToiRGlzY3JldGUgSGlzdG9ncmFtIixjPQphdGVnb3J5OiJEYXRhIHByb2Nl
c3NpbmcgKHJlcXVpcmVzICdjaGFydHMnIHRvb2wgZnJvbSBUb29sc2hlZCkiLGV4ZWN1dGU6Img9
CmlzdG9ncmFtZGlzY3JldGUiLGtleXdvcmRzOiJzbWFsbCBtZWRpdW0gbGFyZ2UiLGNvbHVtbnM6
e3g6e3RpdGxlOiJPYnNlcnZhdD0KaW9ucyIsaXNfbGFiZWw6ITB9fSxzZXR0aW5nczp7eF9heGlz
X2xhYmVsOntpbml0OiJCcmVha3MifSx5X2F4aXNfbGFiZWw6e2luPQppdDoiRGVuc2l0eSJ9fX0p
fSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL290aGVycy9oZWF0bWFwL2NvbmZpZyIsWyJwbHVnaW4v
Y2g9CmFydHMvZm9ybXMvZGVmYXVsdCJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7
fSxlLHt0aXRsZToiSGVhdG1hcCIsYz0KYXRlZ29yeToiT3RoZXJzIixsaWJyYXJ5OiJDdXN0b20i
LHRhZzoic3ZnIixrZXl3b3Jkczoic21hbGwiLHpvb21hYmxlOiEwLGNvPQpsdW1uczp7eDp7dGl0
bGU6IkNvbHVtbiBsYWJlbHMiLGlzX2xhYmVsOiEwLGlzX251bWVyaWM6ITAsaXNfdW5pcXVlOiEw
fSx5Ons9CnRpdGxlOiJSb3cgbGFiZWxzIixpc19sYWJlbDohMCxpc19udW1lcmljOiEwLGlzX3Vu
aXF1ZTohMH0sejp7dGl0bGU6Ik9ic2Vydj0KYXRpb24iLGlzX251bWVyaWM6ITB9fSxzZXR0aW5n
czp7dXNlX3BhbmVsczp7aW5pdDoidHJ1ZSIsaGlkZTohMH0sY29sb3Jfc2V0PQo6e3RpdGxlOiJD
b2xvciBzY2hlbWUiLGluZm86IlNlbGVjdCBhIGNvbG9yIHNjaGVtZSBmb3IgeW91ciBoZWF0bWFw
Iix0eXBlOiI9CnNlbGVjdCIsaW5pdDoiamV0IixkYXRhOlt7bGFiZWw6IkNvbGQtdG8tSG90Iix2
YWx1ZToiaG90In0se2xhYmVsOiJDb29sIix2YT0KbHVlOiJjb29sIn0se2xhYmVsOiJDb3BwZXIi
LHZhbHVlOiJjb3BwZXIifSx7bGFiZWw6IkdyYXkgc2NhbGUiLHZhbHVlOiJncmF5PQoifSx7bGFi
ZWw6IkpldCIsdmFsdWU6ImpldCJ9LHtsYWJlbDoiTm8tR3JlZW4iLHZhbHVlOiJub19ncmVlbiJ9
LHtsYWJlbDoiT2M9CmVhbiIsdmFsdWU6Im9jZWFuIn0se2xhYmVsOiJQb2xhciIsdmFsdWU6InBv
bGFyIn0se2xhYmVsOiJSZWQtdG8tR3JlZW4iLHZhbD0KdWU6InJlZGdyZWVuIn0se2xhYmVsOiJS
ZWQtdG8tZ3JlZW4gKHNhdHVyYXRlZCkiLHZhbHVlOiJyZWQyZ3JlZW4ifSx7bGFiZWw6PQoiUmVs
aWVmIix2YWx1ZToicmVsaWVmIn0se2xhYmVsOiJTZWlzbW9ncmFwaCIsdmFsdWU6InNlaXMifSx7
bGFiZWw6IlNlYWxhbmQ9CiIsdmFsdWU6InNlYWxhbmQifSx7bGFiZWw6IlNwbGl0Iix2YWx1ZToi
c3BsaXQifSx7bGFiZWw6Ild5c2l3eWciLHZhbHVlOiJ3eT0Kc2l3eWcifV19LHVybF90ZW1wbGF0
ZTp7dGl0bGU6IlVybCB0ZW1wbGF0ZSIsaW5mbzoiRW50ZXIgYSB1cmwgdG8gbGluayB0aGUgPQps
YWJlbHMgd2l0aCBleHRlcm5hbCBzb3VyY2VzLiBVc2UgX19MQUJFTF9fIGFzIHBsYWNlaG9sZGVy
LiIsdHlwZToidGV4dCIsaW49Cml0OiIiLHBsYWNlaG9sZGVyOiJodHRwOi8vc29tZXVybC5jb20/
aWQ9M0RfX0xBQkVMX18ifX19KX0pLGRlZmluZSgicGx1Z2luLz0KY2hhcnRzL290aGVycy9oZWF0
bWFwX2NsdXN0ZXIvY29uZmlnIixbInBsdWdpbi9jaGFydHMvb3RoZXJzL2hlYXRtYXAvY29uZmln
PQoiXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6IkNsdXN0ZXJl
ZCBIZWF0bWFwIixjYXRlZ29yeTo9CiJEYXRhIHByb2Nlc3NpbmcgKHJlcXVpcmVzICdjaGFydHMn
IHRvb2wgZnJvbSBUb29sc2hlZCkiLGV4ZWN1dGU6ImhlYXRtYXAiLD0Ka2V5d29yZHM6InNtYWxs
IG1lZGl1bSBsYXJnZSJ9KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy90eXBlcyIsWyJwbHVnaW4v
Y2hhPQpydHMvbnZkMy9iYXIvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9udmQzL2Jhcl9zdGFja2Vk
L2NvbmZpZyIsInBsdWdpbi9jaGFydHM9Ci9udmQzL2Jhcl9ob3Jpem9udGFsL2NvbmZpZyIsInBs
dWdpbi9jaGFydHMvbnZkMy9iYXJfaG9yaXpvbnRhbF9zdGFja2VkL2Nvbj0KZmlnIiwicGx1Z2lu
L2NoYXJ0cy9udmQzL2xpbmVfZm9jdXMvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9udmQzL3BpZS9j
b25maWciPQosInBsdWdpbi9jaGFydHMvbnZkMy9zdGFja2VkYXJlYV9mdWxsL2NvbmZpZyIsInBs
dWdpbi9jaGFydHMvbnZkMy9zdGFja2VkYXI9CmVhX3N0cmVhbS9jb25maWciLCJwbHVnaW4vY2hh
cnRzL252ZDMvaGlzdG9ncmFtL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvbnZkMz0KL2xpbmUvY29u
ZmlnIiwicGx1Z2luL2NoYXJ0cy9udmQzL3NjYXR0ZXIvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9u
dmQzL3N0YWNrPQplZGFyZWEvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9qcXBsb3QvYmFyL2NvbmZp
ZyIsInBsdWdpbi9jaGFydHMvanFwbG90L2xpbmU9Ci9jb25maWciLCJwbHVnaW4vY2hhcnRzL2px
cGxvdC9zY2F0dGVyL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvanFwbG90L2JveHBsbz0KdC9jb25m
aWciLCJwbHVnaW4vY2hhcnRzL2pxcGxvdC9oaXN0b2dyYW1fZGlzY3JldGUvY29uZmlnIiwicGx1
Z2luL2NoYXJ0cy9vPQp0aGVycy9oZWF0bWFwL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvb3RoZXJz
L2hlYXRtYXBfY2x1c3Rlci9jb25maWciXSxmdW5jdGk9Cm9uKGUsdCxuLHIsaSxzLG8sdSxhLGYs
bCxjLGgscCxkLHYsbSxnLHkpe3JldHVybiBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe2RlZj0KYXVs
dHM6e252ZDNfYmFyOmUsbnZkM19iYXJfc3RhY2tlZDp0LG52ZDNfYmFyX2hvcml6b250YWw6bixu
dmQzX2Jhcl9ob3Jpem9uPQp0YWxfc3RhY2tlZDpyLG52ZDNfbGluZV9mb2N1czppLG52ZDNfc3Rh
Y2tlZGFyZWE6YyxudmQzX3N0YWNrZWRhcmVhX2Z1bGw6byw9Cm52ZDNfc3RhY2tlZGFyZWFfc3Ry
ZWFtOnUsbnZkM19waWU6cyxudmQzX2xpbmU6ZixudmQzX3NjYXR0ZXI6bCxudmQzX2hpc3RvZz0K
cmFtOmEsanFwbG90X2JhcjpoLGpxcGxvdF9oaXN0b2dyYW1fZGlzY3JldGU6bSxqcXBsb3RfbGlu
ZTpwLGpxcGxvdF9zY2F0dGVyPQo6ZCxqcXBsb3RfYm94cGxvdDp2LG90aGVyc19oZWF0bWFwOmcs
b3RoZXJzX2hlYXRtYXBfY2x1c3Rlcjp5fX0pfSksZGVmaW5lKCI9CnBsdWdpbi9hcHAiLFsibXZj
L3VpL3VpLW1vZGFsIiwibXZjL3VpL3VpLXBvcnRsZXQiLCJtdmMvdWkvdWktbWlzYyIsInV0aWxz
Lz0KdXRpbHMiLCJwbHVnaW4vbGlicmFyeS9qb2JzIiwicGx1Z2luL2xpYnJhcnkvZGF0YXNldHMi
LCJwbHVnaW4vbGlicmFyeS9zdG9yPQphZ2UiLCJ1dGlscy9kZWZlcnJlZCIsInBsdWdpbi92aWV3
cy92aWV3ZXIiLCJwbHVnaW4vdmlld3MvZWRpdG9yIiwicGx1Z2luL209Cm9kZWxzL2NvbmZpZyIs
InBsdWdpbi9tb2RlbHMvY2hhcnQiLCJwbHVnaW4vY2hhcnRzL3R5cGVzIl0sZnVuY3Rpb24oZSx0
LG4scj0KLGkscyxvLHUsYSxmLGwsYyxoKXtyZXR1cm4gQmFja2JvbmUuVmlldy5leHRlbmQoe2lu
aXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpPQpzLm9wdGlvbnM9M0R0LEdhbGF4eSYmR2FsYXh5Lm1v
ZGFsP3RoaXMubW9kYWw9M0RHYWxheHkubW9kYWw6dGhpcy5tb2RhbD0zRG49CmV3IGUuVmlldyx0
aGlzLmNvbmZpZz0zRG5ldyBsLHRoaXMudHlwZXM9M0RuZXcgaCx0aGlzLmNoYXJ0PTNEbmV3IGMs
dGhpcy5qbz0KYnM9M0RuZXcgaSh0aGlzKSx0aGlzLmRhdGFzZXRzPTNEbmV3IHModGhpcyksdGhp
cy5zdG9yYWdlPTNEbmV3IG8odGhpcyksdGhpPQpzLmRlZmVycmVkPTNEbmV3IHUsdGhpcy52aWV3
ZXJfdmlldz0zRG5ldyBhKHRoaXMpLHRoaXMuZWRpdG9yX3ZpZXc9M0RuZXcgZig9CnRoaXMpLHRo
aXMuJGVsLmFwcGVuZCh0aGlzLnZpZXdlcl92aWV3LiRlbCksdGhpcy4kZWwuYXBwZW5kKHRoaXMu
ZWRpdG9yX3ZpZT0Kdy4kZWwpO2lmKCF0aGlzLnN0b3JhZ2UubG9hZCgpKXRoaXMuZ28oImVkaXRv
ciIpO2Vsc2V7dGhpcy5nbygidmlld2VyIik7dmFyPQogbj0zRHRoaXM7dGhpcy5kZWZlcnJlZC5l
eGVjdXRlKGZ1bmN0aW9uKCl7bi5jaGFydC50cmlnZ2VyKCJyZWRyYXciKX0pfX0sZ289CjpmdW5j
dGlvbihlKXskKCIudG9vbHRpcCIpLmhpZGUoKTtzd2l0Y2goZSl7Y2FzZSJlZGl0b3IiOnRoaXMu
ZWRpdG9yX3ZpZXcucz0KaG93KCksdGhpcy52aWV3ZXJfdmlldy5oaWRlKCk7YnJlYWs7Y2FzZSJ2
aWV3ZXIiOnRoaXMuZWRpdG9yX3ZpZXcuaGlkZSgpLHRoPQppcy52aWV3ZXJfdmlldy5zaG93KCl9
fSxjaGFydFBhdGg6ZnVuY3Rpb24oZSl7dmFyIHQ9M0RlLnNwbGl0KC9fKC4rKS8pO3JldHU9CnJu
IHQubGVuZ3RoPj0zRDI/dFswXSsiLyIrdFsxXTooY29uc29sZS5kZWJ1ZygiRkFJTEVEIEFwcDpj
aGFydFBhdGgoKSAtIEludj0KYWxpZCBmb3JtYXQ6ICIrZSksdW5kZWZpbmVkKX19KX0pOwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCmRpZmYgLXIgMmE2NjM1MTAzNTNiYTgyNjhkZWZmMDYz
YmE1MGQyN2RlMTgwYjg4OSAtciBkODM2ODcxOTRjY2Y4NDlmMDNjMTY2ND0KNzkwNzFiZDMzYTFi
NDQ3ZjQgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy9jaGFydHMv
b3RoZXJzPQovaGVhdG1hcC9oZWF0bWFwLXBsdWdpbi5qcwotLS0gYS9jb25maWcvcGx1Z2lucy92
aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2NoYXJ0cy9vdGhlcnMvaGVhdG1hcC9oZWE9CnRt
YXAtcGx1Z2luLmpzCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9z
dGF0aWMvY2hhcnRzL290aGVycy9oZWF0bWFwL2hlYT0KdG1hcC1wbHVnaW4uanMKQEAgLTgzLDcg
KzgzLDcgQEAKICAgICAgICAgVG9vbHMuYWRkWm9vbSh7CiAgICAgICAgICAgICB4QXhpcyAgICAg
ICA6IHRoaXMueEF4aXMsCiAgICAgICAgICAgICB5QXhpcyAgICAgICA6IHRoaXMueUF4aXMsCi0g
ICAgICAgICAgICByZWRyYXcgICAgICA6IGZ1bmN0aW9uKCkgeyBzZWxmLnJlZHJhdygpIH0sCisg
ICAgICAgICAgICByZWRyYXcgICAgICA6IGZ1bmN0aW9uKCkgeyBzZWxmLnJlZHJhdygpOyB9LAog
ICAgICAgICAgICAgc3ZnICAgICAgICAgOiBkMy5zZWxlY3QoJyMnICsgdGhpcy5jYW52YXNfaWQp
CiAgICAgICAgIH0pOwogICAgIH0sCgpkaWZmIC1yIDJhNjYzNTEwMzUzYmE4MjY4ZGVmZjA2M2Jh
NTBkMjdkZTE4MGI4ODkgLXIgZDgzNjg3MTk0Y2NmODQ5ZjAzYzE2NjQ9Cjc5MDcxYmQzM2ExYjQ0
N2Y0IGNvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvdmlld3MvZWRp
dG9yLj0KanMKLS0tIGEvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRp
Yy92aWV3cy9lZGl0b3IuanMKKysrIGIvY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hh
cnRzL3N0YXRpYy92aWV3cy9lZGl0b3IuanMKQEAgLTEwOCw3ICsxMDgsOSBAQAogICAgICAgICAv
LyBhcHBlbmQgZWxlbWVudAogICAgICAgICB2YXIgJG1haW4gPTNEICQoJzxkaXYvPicpOwogICAg
ICAgICAkbWFpbi5hcHBlbmQoVXRpbHMud3JhcCgobmV3IFVpLkxhYmVsKHsgdGl0bGUgOiAnUHJv
dmlkZSBhIGNoYXJ0IHQ9Cml0bGU6J30pKS4kZWwpKTsKLSAgICAgICAgJG1haW4uYXBwZW5kKFV0
aWxzLndyYXAodGhpcy50aXRsZS4kZWwpKTsKKyAgICAgICAgJG1haW4uYXBwZW5kKHRoaXMudGl0
bGUuJGVsKTsKKyAgICAgICAgJG1haW4uYXBwZW5kKCQoJzxkaXYvPicpLmFkZENsYXNzKCd1aS10
YWJsZS1mb3JtLWluZm8nKS5odG1sKCdUaGlzPQogdGl0bGUgd2lsbCBhcHBlYXIgaW4gdGhlIGxp
c3Qgb2YgXCdTYXZlZCBWaXN1YWxpemF0aW9uc1wnLiBDaGFydHMgYXJlIHNhdmU9CmQgdXBvbiBj
cmVhdGlvbi4nKSk7CisgICAgICAgICRtYWluLmFwcGVuZChVdGlscy53cmFwKCkpOwogICAgICAg
ICAkbWFpbi5hcHBlbmQoVXRpbHMud3JhcCh0aGlzLnR5cGVzLiRlbCkpOwogICAgICAgID0yMAog
ICAgICAgICAvLyBhZGQgdGFiCkBAIC0xODksNyArMTkxLDkgQEAKICAgICBfcmVmcmVzaFRpdGxl
OiBmdW5jdGlvbigpIHsKICAgICAgICAgdmFyIHRpdGxlID0zRCB0aGlzLmNoYXJ0LmdldCgndGl0
bGUnKTsKICAgICAgICAgdGhpcy5wb3J0bGV0LnRpdGxlKHRpdGxlKTsKLSAgICAgICAgdGhpcy50
aXRsZS52YWx1ZSh0aXRsZSk7CisgICAgICAgIGlmICh0aGlzLnRpdGxlLnZhbHVlKCkgIT0zRCB0
aXRsZSkgeworICAgICAgICAgICAgdGhpcy50aXRsZS52YWx1ZSh0aXRsZSk7CisgICAgICAgIH0K
ICAgICB9LAogICAgPTIwCiAgICAgLy8gcmVmcmVzaCBncm91cAoKZGlmZiAtciAyYTY2MzUxMDM1
M2JhODI2OGRlZmYwNjNiYTUwZDI3ZGUxODBiODg5IC1yIGQ4MzY4NzE5NGNjZjg0OWYwM2MxNjY0
PQo3OTA3MWJkMzNhMWI0NDdmNCBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMv
c3RhdGljL3ZpZXdzL3ZpZXdlci49CmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3VhbGl6YXRp
b25zL2NoYXJ0cy9zdGF0aWMvdmlld3Mvdmlld2VyLmpzCisrKyBiL2NvbmZpZy9wbHVnaW5zL3Zp
c3VhbGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvdmlld3Mvdmlld2VyLmpzCkBAIC05OSw3ICs5OSw2
IEBACiAgICAgICAgIHRoaXMucG9ydGxldCA9M0QgbmV3IFBvcnRsZXQuVmlldyh7CiAgICAgICAg
ICAgICBpY29uIDogJ2ZhLWJhci1jaGFydC1vJywKICAgICAgICAgICAgIHRpdGxlOiAnVmlld3Bv
cnQnLAotICAgICAgICAgICAgc2Nyb2xsYWJsZTogZmFsc2UsCiAgICAgICAgICAgICBvcGVyYXRp
b25zOiB7CiAgICAgICAgICAgICAgICAgZWRpdF9idXR0b246IG5ldyBVaS5CdXR0b25JY29uKHsK
ICAgICAgICAgICAgICAgICAgICAgaWNvbiAgICA6ICdmYS1lZGl0JywKCmRpZmYgLXIgMmE2NjM1
MTAzNTNiYTgyNjhkZWZmMDYzYmE1MGQyN2RlMTgwYjg4OSAtciBkODM2ODcxOTRjY2Y4NDlmMDNj
MTY2ND0KNzkwNzFiZDMzYTFiNDQ3ZjQgY29uZmlnL3BsdWdpbnMvdmlzdWFsaXphdGlvbnMvY2hh
cnRzL3N0YXRpYy92aWV3cy92aWV3cG9yPQp0LmpzCi0tLSBhL2NvbmZpZy9wbHVnaW5zL3Zpc3Vh
bGl6YXRpb25zL2NoYXJ0cy9zdGF0aWMvdmlld3Mvdmlld3BvcnQuanMKKysrIGIvY29uZmlnL3Bs
dWdpbnMvdmlzdWFsaXphdGlvbnMvY2hhcnRzL3N0YXRpYy92aWV3cy92aWV3cG9ydC5qcwpAQCAt
MzAsNiArMzAsMTQgQEAKICAgICAgICAgLy8gdXNlIGZ1bGwgc2NyZWVuIGZvciB2aWV3ZXIKICAg
ICAgICAgdGhpcy5fZnVsbHNjcmVlbih0aGlzLiRlbCwgMTAwKTsKICAgICAgICA9MjAKKyAgICAg
ICAgLy8gcHJldmVudCB3aW5kb3cgc2Nyb2xsaW5nCisgICAgICAgIHZhciBpbml0aWFsX292ZXJm
bG93ID0zRCAkKCdib2R5JykuY3NzKCdvdmVyZmxvdycpOworICAgICAgICB0aGlzLiRlbC5vbign
bW91c2VvdmVyJywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAkKCdib2R5JykuY3NzKCdvdmVy
ZmxvdycsICdoaWRkZW4nKTsKKyAgICAgICAgfSkub24oJ21vdXNlb3V0JywgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAkKCdib2R5JykuY3NzKCdvdmVyZmxvdycsIGluaXRpYWxfb3ZlcmZsb3cp
OworICAgICAgICB9KTsKKyAgICAgICA9MjAKICAgICAgICAgLy8gY3JlYXRlIGNvbnRhaW5lciBl
bGVtZW50CiAgICAgICAgIHRoaXMuX2NyZWF0ZUNvbnRhaW5lcignZGl2Jyk7CiAgICAgICAgPTIw
CgpkaWZmIC1yIDJhNjYzNTEwMzUzYmE4MjY4ZGVmZjA2M2JhNTBkMjdkZTE4MGI4ODkgLXIgZDgz
Njg3MTk0Y2NmODQ5ZjAzYzE2NjQ9Cjc5MDcxYmQzM2ExYjQ0N2Y0IGxpYi9nYWxheHkvZGF0YXNl
dF9jb2xsZWN0aW9ucy9yZWdpc3RyeS5weQotLS0gYS9saWIvZ2FsYXh5L2RhdGFzZXRfY29sbGVj
dGlvbnMvcmVnaXN0cnkucHkKKysrIGIvbGliL2dhbGF4eS9kYXRhc2V0X2NvbGxlY3Rpb25zL3Jl
Z2lzdHJ5LnB5CkBAIC0xLDYgKzEsNiBAQAogZnJvbSAudHlwZXMgaW1wb3J0IGxpc3QKIGZyb20g
LnR5cGVzIGltcG9ydCBwYWlyZWQKLQorZnJvbSBnYWxheHkgaW1wb3J0IG1vZGVsCj0yMAogUExV
R0lOX0NMQVNTRVMgPTNEIFtsaXN0Lkxpc3REYXRhc2V0Q29sbGVjdGlvblR5cGUsIHBhaXJlZC5Q
YWlyZWREYXRhc2V0Q289CmxsZWN0aW9uVHlwZV0KPTIwCkBAIC0xMiwzICsxMiwxMyBAQAo9MjAK
ICAgICBkZWYgZ2V0KCBzZWxmLCBwbHVnaW5fdHlwZSApOgogICAgICAgICByZXR1cm4gc2VsZi5f
X3BsdWdpbnNbIHBsdWdpbl90eXBlIF0KKworICAgIGRlZiBwcm90b3R5cGUoIHNlbGYsIHBsdWdp
bl90eXBlICk6CisgICAgICAgIHBsdWdpbl90eXBlX29iamVjdCA9M0Qgc2VsZi5nZXQoIHBsdWdp
bl90eXBlICkKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoIHBsdWdpbl90eXBlX29iamVjdCwgJ3By
b3RvdHlwZV9lbGVtZW50cycgKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbiggIkNhbm5v
dCBwcmUtZGV0ZXJtaW5lIHN0cnVjdHVyZSBmb3IgY29sbGVjdGlvPQpuIG9mIHR5cGUgJXMiICUg
cGx1Z2luX3R5cGUgKQorCisgICAgICAgIGRhdGFzZXRfY29sbGVjdGlvbiA9M0QgbW9kZWwuRGF0
YXNldENvbGxlY3Rpb24oKQorICAgICAgICBlbGVtZW50cyA9M0QgWyBlIGZvciBlIGluIHBsdWdp
bl90eXBlX29iamVjdC5wcm90b3R5cGVfZWxlbWVudHMoKSBdCisgICAgICAgIGRhdGFzZXRfY29s
bGVjdGlvbi5lbGVtZW50cyA9M0QgZWxlbWVudHMKKyAgICAgICAgcmV0dXJuIGRhdGFzZXRfY29s
bGVjdGlvbgoKZGlmZiAtciAyYTY2MzUxMDM1M2JhODI2OGRlZmYwNjNiYTUwZDI3ZGUxODBiODg5
IC1yIGQ4MzY4NzE5NGNjZjg0OWYwM2MxNjY0PQo3OTA3MWJkMzNhMWI0NDdmNCBsaWIvZ2FsYXh5
L2RhdGFzZXRfY29sbGVjdGlvbnMvdHlwZXMvcGFpcmVkLnB5Ci0tLSBhL2xpYi9nYWxheHkvZGF0
YXNldF9jb2xsZWN0aW9ucy90eXBlcy9wYWlyZWQucHkKKysrIGIvbGliL2dhbGF4eS9kYXRhc2V0
X2NvbGxlY3Rpb25zL3R5cGVzL3BhaXJlZC5weQpAQCAtMSw2ICsxLDYgQEAKIGZyb20gLi50eXBl
cyBpbXBvcnQgQmFzZURhdGFzZXRDb2xsZWN0aW9uVHlwZQo9MjAKLWZyb20gZ2FsYXh5Lm1vZGVs
IGltcG9ydCBEYXRhc2V0Q29sbGVjdGlvbkVsZW1lbnQKK2Zyb20gZ2FsYXh5Lm1vZGVsIGltcG9y
dCBEYXRhc2V0Q29sbGVjdGlvbkVsZW1lbnQsIEhpc3RvcnlEYXRhc2V0QXNzb2NpYXRpPQpvbgo9
MjAKIEZPUldBUkRfSURFTlRJRklFUiA9M0QgImZvcndhcmQiCiBSRVZFUlNFX0lERU5USUZJRVIg
PTNEICJyZXZlcnNlIgpAQCAtMzIsMyArMzIsMTUgQEAKICAgICAgICAgKQogICAgICAgICB5aWVs
ZCBsZWZ0X2Fzc29jaWF0aW9uCiAgICAgICAgIHlpZWxkIHJpZ2h0X2Fzc29jaWF0aW9uCisKKyAg
ICBkZWYgcHJvdG90eXBlX2VsZW1lbnRzKCBzZWxmICk6CisgICAgICAgIGxlZnRfYXNzb2NpYXRp
b24gPTNEIERhdGFzZXRDb2xsZWN0aW9uRWxlbWVudCgKKyAgICAgICAgICAgIGVsZW1lbnQ9M0RI
aXN0b3J5RGF0YXNldEFzc29jaWF0aW9uKCksCisgICAgICAgICAgICBlbGVtZW50X2lkZW50aWZp
ZXI9M0RGT1JXQVJEX0lERU5USUZJRVIsCisgICAgICAgICkKKyAgICAgICAgcmlnaHRfYXNzb2Np
YXRpb24gPTNEIERhdGFzZXRDb2xsZWN0aW9uRWxlbWVudCgKKyAgICAgICAgICAgIGVsZW1lbnQ9
M0RIaXN0b3J5RGF0YXNldEFzc29jaWF0aW9uKCksCisgICAgICAgICAgICBlbGVtZW50X2lkZW50
aWZpZXI9M0RSRVZFUlNFX0lERU5USUZJRVIsCisgICAgICAgICkKKyAgICAgICAgeWllbGQgbGVm
dF9hc3NvY2lhdGlvbgorICAgICAgICB5aWVsZCByaWdodF9hc3NvY2lhdGlvbgoKZGlmZiAtciAy
YTY2MzUxMDM1M2JhODI2OGRlZmYwNjNiYTUwZDI3ZGUxODBiODg5IC1yIGQ4MzY4NzE5NGNjZjg0
OWYwM2MxNjY0PQo3OTA3MWJkMzNhMWI0NDdmNCBsaWIvZ2FsYXh5L2pvYnMvX19pbml0X18ucHkK
LS0tIGEvbGliL2dhbGF4eS9qb2JzL19faW5pdF9fLnB5CisrKyBiL2xpYi9nYWxheHkvam9icy9f
X2luaXRfXy5weQpAQCAtMTIwMiw2ICsxMjAyLDExIEBACiAgICAgICAgIG91dF9kYXRhID0zRCBk
aWN0KCBbICggZGEubmFtZSwgZGEuZGF0YXNldCApIGZvciBkYSBpbiBqb2Iub3V0cHV0Xz0KZGF0
YXNldHMgXSApCiAgICAgICAgIGlucF9kYXRhLnVwZGF0ZSggWyAoIGRhLm5hbWUsIGRhLmRhdGFz
ZXQgKSBmb3IgZGEgaW4gam9iLmlucHV0X2xpYj0KcmFyeV9kYXRhc2V0cyBdICkKICAgICAgICAg
b3V0X2RhdGEudXBkYXRlKCBbICggZGEubmFtZSwgZGEuZGF0YXNldCApIGZvciBkYSBpbiBqb2Iu
b3V0cHV0X2xpPQpicmFyeV9kYXRhc2V0cyBdICkKKworICAgICAgICAjIFRPRE86IGVsaW1pbmF0
ZSBvdmVybGFwIHdpdGggdG9vbHMvZXZhbHVhdGlvbi5weQorICAgICAgICBvdXRfY29sbGVjdGlv
bnMgPTNEIGRpY3QoIFsgKCBvYmoubmFtZSwgb2JqLmRhdGFzZXRfY29sbGVjdGlvbl9pbnM9CnRh
bmNlICkgZm9yIG9iaiBpbiBqb2Iub3V0cHV0X2RhdGFzZXRfY29sbGVjdGlvbl9pbnN0YW5jZXMg
XSApCisgICAgICAgIG91dF9jb2xsZWN0aW9ucy51cGRhdGUoIFsgKCBvYmoubmFtZSwgb2JqLmRh
dGFzZXRfY29sbGVjdGlvbiApIGZvcj0KIG9iaiBpbiBqb2Iub3V0cHV0X2RhdGFzZXRfY29sbGVj
dGlvbnMgXSApCisKICAgICAgICAgaW5wdXRfZXh0ID0zRCAnZGF0YScKICAgICAgICAgZm9yIF8s
IGRhdGEgaW4gaW5wX2RhdGEuaXRlbXMoKToKICAgICAgICAgICAgICMgRm9yIGxvb3Agb2RkLCBi
dXQgc29ydCBzaW11bGF0aW5nIGJlaGF2aW9yIGluIGdhbGF4eS50b29scy5hPQpjdGlvbnMKQEAg
LTEyMTgsNiArMTIyMywxMiBAQAogICAgICAgICAgICAgJ2NoaWxkcmVuJzogc2VsZi50b29sLmNv
bGxlY3RfY2hpbGRfZGF0YXNldHMob3V0X2RhdGEsIHNlbGYud289CnJraW5nX2RpcmVjdG9yeSks
CiAgICAgICAgICAgICAncHJpbWFyeSc6IHNlbGYudG9vbC5jb2xsZWN0X3ByaW1hcnlfZGF0YXNl
dHMob3V0X2RhdGEsIHNlbGYudz0Kb3JraW5nX2RpcmVjdG9yeSwgaW5wdXRfZXh0KQogICAgICAg
ICB9CisgICAgICAgIHNlbGYudG9vbC5jb2xsZWN0X2R5bmFtaWNfY29sbGVjdGlvbnMoCisgICAg
ICAgICAgICBvdXRfY29sbGVjdGlvbnMsCisgICAgICAgICAgICBqb2Jfd29ya2luZ19kaXJlY3Rv
cnk9M0RzZWxmLndvcmtpbmdfZGlyZWN0b3J5LAorICAgICAgICAgICAgaW5wX2RhdGE9M0RpbnBf
ZGF0YSwKKyAgICAgICAgICAgIGpvYj0zRGpvYiwKKyAgICAgICAgKQogICAgICAgICBwYXJhbV9k
aWN0LnVwZGF0ZSh7J19fY29sbGVjdGVkX2RhdGFzZXRzX18nOiBjb2xsZWN0ZWRfZGF0YXNldHN9
KQogICAgICAgICAjIENlcnRhaW4gdG9vbHMgcmVxdWlyZSB0YXNrcyB0byBiZSBjb21wbGV0ZWQg
YWZ0ZXIgam9iIGV4ZWN1dGlvbgogICAgICAgICAjICggdGhpcyB1c2VkIHRvIGJlIHBlcmZvcm1l
ZCBpbiB0aGUgImV4ZWNfYWZ0ZXJfcHJvY2VzcyIgaG9vaywgYnU9CnQgaG9va3MgYXJlIGRlcHJl
Y2F0ZWQgKS4KCmRpZmYgLXIgMmE2NjM1MTAzNTNiYTgyNjhkZWZmMDYzYmE1MGQyN2RlMTgwYjg4
OSAtciBkODM2ODcxOTRjY2Y4NDlmMDNjMTY2ND0KNzkwNzFiZDMzYTFiNDQ3ZjQgbGliL2dhbGF4
eS9qb2JzL3J1bm5lcnMvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS9qb2JzL3J1bm5lcnMv
X19pbml0X18ucHkKKysrIGIvbGliL2dhbGF4eS9qb2JzL3J1bm5lcnMvX19pbml0X18ucHkKQEAg
LTIxNiw3ICsyMTYsNyBAQAogICAgICAgICBqb2JfdG9vbCA9M0Qgam9iX3dyYXBwZXIudG9vbAog
ICAgICAgICBmb3IgKGpvZGEsIGRhdGFzZXQpIGluIHNlbGYuX3dhbGtfZGF0YXNldF9vdXRwdXRz
KCBqb2IgKToKICAgICAgICAgICAgIGlmIGpvZGEgYW5kIGpvYl90b29sOgotICAgICAgICAgICAg
ICAgIGhkYV90b29sX291dHB1dCA9M0Qgam9iX3Rvb2wub3V0cHV0cy5nZXQoIGpvZGEubmFtZSwg
Tm9uZSApCisgICAgICAgICAgICAgICAgaGRhX3Rvb2xfb3V0cHV0ID0zRCBqb2JfdG9vbC5maW5k
X291dHB1dF9kZWYoIGpvZGEubmFtZSApCiAgICAgICAgICAgICAgICAgaWYgaGRhX3Rvb2xfb3V0
cHV0IGFuZCBoZGFfdG9vbF9vdXRwdXQuZnJvbV93b3JrX2RpcjoKICAgICAgICAgICAgICAgICAg
ICAgIyBDb3B5IGZyb20gd29ya2luZyBkaXIgdG8gSERBLgogICAgICAgICAgICAgICAgICAgICAj
IFRPRE86IG1vdmUgaW5zdGVhZCBvZiBjb3B5IHRvIHNhdmUgdGltZT8KCmRpZmYgLXIgMmE2NjM1
MTAzNTNiYTgyNjhkZWZmMDYzYmE1MGQyN2RlMTgwYjg4OSAtciBkODM2ODcxOTRjY2Y4NDlmMDNj
MTY2ND0KNzkwNzFiZDMzYTFiNDQ3ZjQgbGliL2dhbGF4eS9tYW5hZ2Vycy9jb2xsZWN0aW9ucy5w
eQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL2NvbGxlY3Rpb25zLnB5CisrKyBiL2xpYi9nYWxh
eHkvbWFuYWdlcnMvY29sbGVjdGlvbnMucHkKQEAgLTI5LDYgKzI5LDcgQEAKICAgICBBYnN0cmFj
dGlvbiBmb3IgaW50ZXJmYWNpbmcgd2l0aCBkYXRhc2V0IGNvbGxlY3Rpb25zIGluc3RhbmNlIC0g
aWRlYWxsPQp5IGFic3RhcmN0cwogICAgIG91dCBtb2RlbCBhbmQgcGx1Z2luIGRldGFpbHMuCiAg
ICAgIiIiCisgICAgRUxFTUVOVFNfVU5JTklUSUFMSVpFRCA9M0Qgb2JqZWN0KCkKPTIwCiAgICAg
ZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToKICAgICAgICAgc2VsZi50eXBlX3JlZ2lzdHJ5ID0z
RCBEYXRhc2V0Q29sbGVjdGlvblR5cGVzUmVnaXN0cnkoIGFwcCApCkBAIC03NSw3ICs3NiwxMSBA
QAogICAgICAgICAgICAgICAgIGZvciBpbnB1dF9uYW1lLCBpbnB1dF9jb2xsZWN0aW9uIGluIGlt
cGxpY2l0X2NvbGxlY3Rpb25faW49CmZvWyAiaW1wbGljaXRfaW5wdXRzIiBdOgogICAgICAgICAg
ICAgICAgICAgICBkYXRhc2V0X2NvbGxlY3Rpb25faW5zdGFuY2UuYWRkX2ltcGxpY2l0X2lucHV0
X2NvbGxlY3Q9CmlvbiggaW5wdXRfbmFtZSwgaW5wdXRfY29sbGVjdGlvbiApCiAgICAgICAgICAg
ICAgICAgZm9yIG91dHB1dF9kYXRhc2V0IGluIGltcGxpY2l0X2NvbGxlY3Rpb25faW5mby5nZXQo
ICJvdXRwdT0KdHMiICk6Ci0gICAgICAgICAgICAgICAgICAgIG91dHB1dF9kYXRhc2V0LmhpZGRl
bl9iZW5lYXRoX2NvbGxlY3Rpb25faW5zdGFuY2UgPTNEID0KZGF0YXNldF9jb2xsZWN0aW9uX2lu
c3RhbmNlCisgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoIG91dHB1dF9kYXRhc2V0
LCBtb2RlbC5IaXN0b3J5RGF0YXNldENvbD0KbGVjdGlvbkFzc29jaWF0aW9uICk6CisgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhc2V0X2NvbGxlY3Rpb25faW5zdGFuY2UuYWRkX2ltcGxpY2l0
X2lucHV0X2NvbD0KbGVjdGlvbiggaW5wdXRfbmFtZSwgaW5wdXRfY29sbGVjdGlvbiApCisgICAg
ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAjIGRhdGFzZXQg
Y29sbGVjdGlvbiwgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZy4uLgorICAgICAgICAgICAgICAg
ICAgICAgICAgcGFzcwogICAgICAgICAgICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmFkZCgg
b3V0cHV0X2RhdGFzZXQgKQo9MjAKICAgICAgICAgICAgICAgICBkYXRhc2V0X2NvbGxlY3Rpb25f
aW5zdGFuY2UuaW1wbGljaXRfb3V0cHV0X25hbWUgPTNEIGltcGxpPQpjaXRfY29sbGVjdGlvbl9p
bmZvWyAiaW1wbGljaXRfb3V0cHV0X25hbWUiIF0KQEAgLTk4LDYgKzEwMywxOCBAQAo9MjAKICAg
ICAgICAgcmV0dXJuIHNlbGYuX19wZXJzaXN0KCBkYXRhc2V0X2NvbGxlY3Rpb25faW5zdGFuY2Ug
KQo9MjAKKyAgICBkZWYgY3JlYXRlX2RhdGFzZXRfY29sbGVjdGlvbigKKyAgICAgICAgc2VsZiwK
KyAgICAgICAgdHJhbnMsCisgICAgICAgIGNvbGxlY3Rpb25fdHlwZSwKKyAgICAgICAgZWxlbWVu
dHM9M0ROb25lLAorICAgICk6CisgICAgICAgIHJldHVybiBzZWxmLl9fY3JlYXRlX2RhdGFzZXRf
Y29sbGVjdGlvbigKKyAgICAgICAgICAgIHRyYW5zPTNEdHJhbnMsCisgICAgICAgICAgICBjb2xs
ZWN0aW9uX3R5cGU9M0Rjb2xsZWN0aW9uX3R5cGUsCisgICAgICAgICAgICBlbGVtZW50cz0zRGVs
ZW1lbnRzLAorICAgICAgICApCisKICAgICBkZWYgX19jcmVhdGVfZGF0YXNldF9jb2xsZWN0aW9u
KAogICAgICAgICBzZWxmLAogICAgICAgICB0cmFucywKQEAgLTExOSw5ICsxMzYsMjQgQEAKICAg
ICAgICAgICAgIGVsZW1lbnRzID0zRCBzZWxmLl9fbG9hZF9lbGVtZW50cyggdHJhbnMsIGVsZW1l
bnRfaWRlbnRpZmllcnMgKQogICAgICAgICAjIGVsc2UgaWYgZWxlbWVudHMgaXMgc2V0LCBpdCBi
ZXR0ZXIgYmUgYW4gb3JkZXJlZCBkaWN0IQo9MjAKKyAgICAgICAgaWYgZWxlbWVudHMgaXMgbm90
IHNlbGYuRUxFTUVOVFNfVU5JTklUSUFMSVpFRDoKKyAgICAgICAgICAgIHR5cGVfcGx1Z2luID0z
RCBjb2xsZWN0aW9uX3R5cGVfZGVzY3JpcHRpb24ucmFua190eXBlX3BsdWdpbigpCisgICAgICAg
ICAgICBkYXRhc2V0X2NvbGxlY3Rpb24gPTNEIGJ1aWxkZXIuYnVpbGRfY29sbGVjdGlvbiggdHlw
ZV9wbHVnaW4sID0KZWxlbWVudHMgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGF0YXNl
dF9jb2xsZWN0aW9uID0zRCBtb2RlbC5EYXRhc2V0Q29sbGVjdGlvbiggcG9wdWxhdGVkPTNERmE9
CmxzZSApCisgICAgICAgIGRhdGFzZXRfY29sbGVjdGlvbi5jb2xsZWN0aW9uX3R5cGUgPTNEIGNv
bGxlY3Rpb25fdHlwZQorICAgICAgICByZXR1cm4gZGF0YXNldF9jb2xsZWN0aW9uCisKKyAgICBk
ZWYgc2V0X2NvbGxlY3Rpb25fZWxlbWVudHMoIHNlbGYsIGRhdGFzZXRfY29sbGVjdGlvbiwgZGF0
YXNldF9pbnN0YW5jPQplcyApOgorICAgICAgICBpZiBkYXRhc2V0X2NvbGxlY3Rpb24ucG9wdWxh
dGVkOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJDYW5ub3QgcmVzZXQgZWxlbWVudHMg
b2YgYW4gYWxyZWFkeSBwb3B1bGF0ZWQ9CiBkYXRhc2V0IGNvbGxlY3Rpb24uIikKKworICAgICAg
ICBjb2xsZWN0aW9uX3R5cGUgPTNEIGRhdGFzZXRfY29sbGVjdGlvbi5jb2xsZWN0aW9uX3R5cGUK
KyAgICAgICAgY29sbGVjdGlvbl90eXBlX2Rlc2NyaXB0aW9uID0zRCBzZWxmLmNvbGxlY3Rpb25f
dHlwZV9kZXNjcmlwdGlvbnMuPQpmb3JfY29sbGVjdGlvbl90eXBlKCBjb2xsZWN0aW9uX3R5cGUg
KQogICAgICAgICB0eXBlX3BsdWdpbiA9M0QgY29sbGVjdGlvbl90eXBlX2Rlc2NyaXB0aW9uLnJh
bmtfdHlwZV9wbHVnaW4oKQotICAgICAgICBkYXRhc2V0X2NvbGxlY3Rpb24gPTNEIGJ1aWxkZXIu
YnVpbGRfY29sbGVjdGlvbiggdHlwZV9wbHVnaW4sIGVsZW09CmVudHMgKQotICAgICAgICBkYXRh
c2V0X2NvbGxlY3Rpb24uY29sbGVjdGlvbl90eXBlID0zRCBjb2xsZWN0aW9uX3R5cGUKKyAgICAg
ICAgYnVpbGRlci5zZXRfY29sbGVjdGlvbl9lbGVtZW50cyggZGF0YXNldF9jb2xsZWN0aW9uLCB0
eXBlX3BsdWdpbiwgPQpkYXRhc2V0X2luc3RhbmNlcyApCisgICAgICAgIGRhdGFzZXRfY29sbGVj
dGlvbi5tYXJrX2FzX3BvcHVsYXRlZCgpCisKICAgICAgICAgcmV0dXJuIGRhdGFzZXRfY29sbGVj
dGlvbgo9MjAKICAgICBkZWYgZGVsZXRlKCBzZWxmLCB0cmFucywgaW5zdGFuY2VfdHlwZSwgaWQg
KToKCmRpZmYgLXIgMmE2NjM1MTAzNTNiYTgyNjhkZWZmMDYzYmE1MGQyN2RlMTgwYjg4OSAtciBk
ODM2ODcxOTRjY2Y4NDlmMDNjMTY2ND0KNzkwNzFiZDMzYTFiNDQ3ZjQgbGliL2dhbGF4eS9tYW5h
Z2Vycy9jb2xsZWN0aW9uc191dGlsLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvY29sbGVj
dGlvbnNfdXRpbC5weQorKysgYi9saWIvZ2FsYXh5L21hbmFnZXJzL2NvbGxlY3Rpb25zX3V0aWwu
cHkKQEAgLTc2LDcgKzc2LDkgQEAKICAgICAgICAgIyBUT0RPOiBXb3JrIGluIHByb2dyZXNzIC0g
dGhpcyBlbmQtcG9pbnQgaXMgbm90IHJpZ2h0IHlldC4uLgogICAgICAgICBkaWN0X3ZhbHVlWyAn
dXJsJyBdID0zRCB3ZWIudXJsX2ZvciggJ2xpYnJhcnlfY29udGVudCcsIGxpYnJhcnlfaWQ9Cj0z
RGVuY29kZWRfbGlicmFyeV9pZCwgaWQ9M0RlbmNvZGVkX2lkLCBmb2xkZXJfaWQ9M0RlbmNvZGVk
X2ZvbGRlcl9pZCApCiAgICAgaWYgdmlldyA9M0Q9M0QgImVsZW1lbnQiOgotICAgICAgICBkaWN0
X3ZhbHVlWyAnZWxlbWVudHMnIF0gPTNEIG1hcCggZGljdGlmeV9lbGVtZW50LCBkYXRhc2V0X2Nv
bGxlY3Q9Cmlvbl9pbnN0YW5jZS5jb2xsZWN0aW9uLmVsZW1lbnRzICkKKyAgICAgICAgY29sbGVj
dGlvbiA9M0QgZGF0YXNldF9jb2xsZWNpdG9uX2luc3RhbmNlLmNvbGxlY3Rpb24KKyAgICAgICAg
ZGljdF92YWx1ZVsgJ2VsZW1lbnRzJyBdID0zRCBtYXAoIGRpY3RpZnlfZWxlbWVudCwgY29sbGVj
dGlvbi5lbGVtPQplbnRzICkKKyAgICAgICAgZGljdF92YWx1ZVsgJ3BvcHVsYXRlZCcgXSA9M0Qg
Y29sbGVjdGlvbi5wb3B1bGF0ZWQKICAgICBzZWN1cml0eS5lbmNvZGVfYWxsX2lkcyggZGljdF92
YWx1ZSwgcmVjdXJzaXZlPTNEVHJ1ZSApICAjIFRPRE86IFVzZSBLPQp5bGUncyByZWN1c3JpdmUg
Zm9ybXVsYXRpb24gb2YgdGhpcy4KICAgICByZXR1cm4gZGljdF92YWx1ZQo9MjAKQEAgLTg2LDcg
Kzg4LDkgQEAKICAgICBvYmplY3RfZGV0aWFscyA9M0QgZWxlbWVudC5lbGVtZW50X29iamVjdC50
b19kaWN0KCkKICAgICBpZiBlbGVtZW50LmNoaWxkX2NvbGxlY3Rpb246CiAgICAgICAgICMgUmVj
dXJzaXZlbHkgeWllbGQgZWxlbWVudHMgZm9yIGVhY2ggbmVzdGVkIGNvbGxlY3Rpb24uLi4KLSAg
ICAgICAgb2JqZWN0X2RldGlhbHNbICJlbGVtZW50cyIgXSA9M0QgbWFwKCBkaWN0aWZ5X2VsZW1l
bnQsIGVsZW1lbnQuY2hpPQpsZF9jb2xsZWN0aW9uLmVsZW1lbnRzICkKKyAgICAgICAgY2hpbGRf
Y29sbGVjdGlvbiA9M0QgZWxlbWVudC5jaGlsZF9jb2xsZWN0aW9uCisgICAgICAgIG9iamVjdF9k
ZXRpYWxzWyAiZWxlbWVudHMiIF0gPTNEIG1hcCggZGljdGlmeV9lbGVtZW50LCBjaGlsZF9jb2xs
ZT0KY3Rpb24uZWxlbWVudHMgKQorICAgICAgICBvYmplY3RfZGV0aWFsc1sgInBvcHVsYXRlZCIg
XSA9M0QgY2hpbGRfY29sbGVjdGlvbi5wb3B1bGF0ZWQKPTIwCiAgICAgZGljdGlmaWVkWyAib2Jq
ZWN0IiBdID0zRCBvYmplY3RfZGV0aWFscwogICAgIHJldHVybiBkaWN0aWZpZWQKCmRpZmYgLXIg
MmE2NjM1MTAzNTNiYTgyNjhkZWZmMDYzYmE1MGQyN2RlMTgwYjg4OSAtciBkODM2ODcxOTRjY2Y4
NDlmMDNjMTY2ND0KNzkwNzFiZDMzYTFiNDQ3ZjQgbGliL2dhbGF4eS9tb2RlbC9fX2luaXRfXy5w
eQotLS0gYS9saWIvZ2FsYXh5L21vZGVsL19faW5pdF9fLnB5CisrKyBiL2xpYi9nYWxheHkvbW9k
ZWwvX19pbml0X18ucHkKQEAgLTMyOSw2ICszMjksNyBAQAogICAgICAgICBzZWxmLmlucHV0X2Rh
dGFzZXRzID0zRCBbXQogICAgICAgICBzZWxmLm91dHB1dF9kYXRhc2V0cyA9M0QgW10KICAgICAg
ICAgc2VsZi5pbnB1dF9kYXRhc2V0X2NvbGxlY3Rpb25zID0zRCBbXQorICAgICAgICBzZWxmLm91
dHB1dF9kYXRhc2V0X2NvbGxlY3Rpb25faW5zdGFuY2VzID0zRCBbXQogICAgICAgICBzZWxmLm91
dHB1dF9kYXRhc2V0X2NvbGxlY3Rpb25zID0zRCBbXQogICAgICAgICBzZWxmLmlucHV0X2xpYnJh
cnlfZGF0YXNldHMgPTNEIFtdCiAgICAgICAgIHNlbGYub3V0cHV0X2xpYnJhcnlfZGF0YXNldHMg
PTNEIFtdCkBAIC00NzIsOCArNDczLDEwIEBACiAgICAgICAgIHNlbGYub3V0cHV0X2RhdGFzZXRz
LmFwcGVuZCggSm9iVG9PdXRwdXREYXRhc2V0QXNzb2NpYXRpb24oIG5hbWUsID0KZGF0YXNldCAp
ICkKICAgICBkZWYgYWRkX2lucHV0X2RhdGFzZXRfY29sbGVjdGlvbiggc2VsZiwgbmFtZSwgZGF0
YXNldCApOgogICAgICAgICBzZWxmLmlucHV0X2RhdGFzZXRfY29sbGVjdGlvbnMuYXBwZW5kKCBK
b2JUb0lucHV0RGF0YXNldENvbGxlY3Rpb249CkFzc29jaWF0aW9uKCBuYW1lLCBkYXRhc2V0ICkg
KQotICAgIGRlZiBhZGRfb3V0cHV0X2RhdGFzZXRfY29sbGVjdGlvbiggc2VsZiwgbmFtZSwgZGF0
YXNldCApOgotICAgICAgICBzZWxmLm91dHB1dF9kYXRhc2V0X2NvbGxlY3Rpb25zLmFwcGVuZCgg
Sm9iVG9PdXRwdXREYXRhc2V0Q29sbGVjdGk9Cm9uQXNzb2NpYXRpb24oIG5hbWUsIGRhdGFzZXQg
KSApCisgICAgZGVmIGFkZF9vdXRwdXRfZGF0YXNldF9jb2xsZWN0aW9uKCBzZWxmLCBuYW1lLCBk
YXRhc2V0X2NvbGxlY3Rpb25faW5zdD0KYW5jZSApOgorICAgICAgICBzZWxmLm91dHB1dF9kYXRh
c2V0X2NvbGxlY3Rpb25faW5zdGFuY2VzLmFwcGVuZCggSm9iVG9PdXRwdXREYXRhc2U9CnRDb2xs
ZWN0aW9uQXNzb2NpYXRpb24oIG5hbWUsIGRhdGFzZXRfY29sbGVjdGlvbl9pbnN0YW5jZSApICkK
KyAgICBkZWYgYWRkX2ltcGxpY2l0X291dHB1dF9kYXRhc2V0X2NvbGxlY3Rpb24oIHNlbGYsIG5h
bWUsIGRhdGFzZXRfY29sbGVjPQp0aW9uICk6CisgICAgICAgIHNlbGYub3V0cHV0X2RhdGFzZXRf
Y29sbGVjdGlvbnMuYXBwZW5kKCBKb2JUb0ltcGxpY2l0T3V0cHV0RGF0YXNldD0KQ29sbGVjdGlv
bkFzc29jaWF0aW9uKCBuYW1lLCBkYXRhc2V0X2NvbGxlY3Rpb24gKSApCiAgICAgZGVmIGFkZF9p
bnB1dF9saWJyYXJ5X2RhdGFzZXQoIHNlbGYsIG5hbWUsIGRhdGFzZXQgKToKICAgICAgICAgc2Vs
Zi5pbnB1dF9saWJyYXJ5X2RhdGFzZXRzLmFwcGVuZCggSm9iVG9JbnB1dExpYnJhcnlEYXRhc2V0
QXNzb2NpPQphdGlvbiggbmFtZSwgZGF0YXNldCApICkKICAgICBkZWYgYWRkX291dHB1dF9saWJy
YXJ5X2RhdGFzZXQoIHNlbGYsIG5hbWUsIGRhdGFzZXQgKToKQEAgLTczNCw3ICs3MzcsMTggQEAK
ICAgICAgICAgc2VsZi5kYXRhc2V0ID0zRCBkYXRhc2V0Cj0yMAo9MjAKKyMgTWFueSBqb2JzIG1h
eSBtYXAgdG8gb25lIEhpc3RvcnlEYXRhc2V0Q29sbGVjdGlvbiB1c2luZyB0aGVzZSBmb3IgYSBn
aXZlbgorIyB0b29sIG91dHB1dCAoaWYgbWFwcGluZyBvdmVyIGFuIGlucHV0IGNvbGxlY3Rpb24p
LgogY2xhc3MgSm9iVG9PdXRwdXREYXRhc2V0Q29sbGVjdGlvbkFzc29jaWF0aW9uKCBvYmplY3Qg
KToKKyAgICBkZWYgX19pbml0X18oIHNlbGYsIG5hbWUsIGRhdGFzZXRfY29sbGVjdGlvbl9pbnN0
YW5jZSApOgorICAgICAgICBzZWxmLm5hbWUgPTNEIG5hbWUKKyAgICAgICAgc2VsZi5kYXRhc2V0
X2NvbGxlY3Rpb25faW5zdGFuY2UgPTNEIGRhdGFzZXRfY29sbGVjdGlvbl9pbnN0YW5jZQorCisK
KyMgQSBEYXRhc2V0Q29sbGVjdGlvbiB3aWxsIGJlIG1hcHBlZCB0byBhdCBtb3N0IG9uZSBqb2Ig
cGVyIHRvb2wgb3V0cHV0CisjIHVzaW5nIHRoZXNlLiAoWW91IGNhbiB0aGluayBvZiBtYW55IG9m
IHRoZXNlIG1vZGVscyBhcyBnb2luZyBpbnRvIHRoZQorIyBjcmVhdGlvbiBvZiBhIEpvYlRvT3V0
cHV0RGF0YXNldENvbGxlY3Rpb25Bc3NvY2lhdGlvbi4pCitjbGFzcyBKb2JUb0ltcGxpY2l0T3V0
cHV0RGF0YXNldENvbGxlY3Rpb25Bc3NvY2lhdGlvbiggb2JqZWN0ICk6CiAgICAgZGVmIF9faW5p
dF9fKCBzZWxmLCBuYW1lLCBkYXRhc2V0X2NvbGxlY3Rpb24gKToKICAgICAgICAgc2VsZi5uYW1l
ID0zRCBuYW1lCiAgICAgICAgIHNlbGYuZGF0YXNldF9jb2xsZWN0aW9uID0zRCBkYXRhc2V0X2Nv
bGxlY3Rpb24KQEAgLTI2NzksMTQgKzI2OTMsMzcgQEAKICAgICAiIiIKICAgICBkaWN0X2NvbGxl
Y3Rpb25fdmlzaWJsZV9rZXlzID0zRCAoICdpZCcsICdjb2xsZWN0aW9uX3R5cGUnICkKICAgICBk
aWN0X2VsZW1lbnRfdmlzaWJsZV9rZXlzID0zRCAoICdpZCcsICdjb2xsZWN0aW9uX3R5cGUnICkK
KyAgICBwb3B1bGF0ZWRfc3RhdGVzID0zRCBCdW5jaCgKKyAgICAgICAgTkVXPTNEJ25ldycsICAj
IE5ldyBkYXRhc2V0IGNvbGxlY3Rpb24sIHVucG9wdWxhdGVkIGVsZW1lbnRzCisgICAgICAgIE9L
PTNEJ29rJywgICMgQ29sbGVjdGlvbiBlbGVtZW50cyBwb3B1bGF0ZWQgKEhEQXMgbWF5IG9yIG1h
eSBub3QgaD0KYXZlIGVycm9ycykKKyAgICAgICAgRkFJTEVEPTNEJ2ZhaWxlZCcsICAjIHNvbWUg
cHJvYmxlbSBwb3B1bGF0aW5nIHN0YXRlLCB3b24ndCBiZSBwb3B1PQpsYXRlZAorICAgICkKPTIw
CiAgICAgZGVmIF9faW5pdF9fKAogICAgICAgICBzZWxmLAogICAgICAgICBpZD0zRE5vbmUsCiAg
ICAgICAgIGNvbGxlY3Rpb25fdHlwZT0zRE5vbmUsCisgICAgICAgIHBvcHVsYXRlZD0zRFRydWUs
CiAgICAgKToKICAgICAgICAgc2VsZi5pZCA9M0QgaWQKICAgICAgICAgc2VsZi5jb2xsZWN0aW9u
X3R5cGUgPTNEIGNvbGxlY3Rpb25fdHlwZQorICAgICAgICBpZiBub3QgcG9wdWxhdGVkOgorICAg
ICAgICAgICAgc2VsZi5wb3B1bGF0ZWRfc3RhdGUgPTNEIERhdGFzZXRDb2xsZWN0aW9uLnBvcHVs
YXRlZF9zdGF0ZXMuTkVXCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcG9wdWxhdGVkKCBzZWxm
ICk6CisgICAgICAgIHJldHVybiBzZWxmLnBvcHVsYXRlZF9zdGF0ZSA9M0Q9M0QgRGF0YXNldENv
bGxlY3Rpb24ucG9wdWxhdGVkX3N0YT0KdGVzLk9LCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYg
d2FpdGluZ19mb3JfZWxlbWVudHMoIHNlbGYgKToKKyAgICAgICAgcmV0dXJuIHNlbGYucG9wdWxh
dGVkX3N0YXRlID0zRD0zRCBEYXRhc2V0Q29sbGVjdGlvbi5wb3B1bGF0ZWRfc3RhPQp0ZXMuTkVX
CisKKyAgICBkZWYgbWFya19hc19wb3B1bGF0ZWQoIHNlbGYgKToKKyAgICAgICAgc2VsZi5wb3B1
bGF0ZWRfc3RhdGUgPTNEIERhdGFzZXRDb2xsZWN0aW9uLnBvcHVsYXRlZF9zdGF0ZXMuT0sKKwor
ICAgIGRlZiBoYW5kbGVfcG9wdWxhdGlvbl9mYWlsZWQoIHNlbGYsIG1lc3NhZ2UgKToKKyAgICAg
ICAgc2VsZi5wb3B1bGF0ZWRfc3RhdGUgPTNEIERhdGFzZXRDb2xsZWN0aW9uLnBvcHVsYXRlZF9z
dGF0ZXMuRkFJTEVECisgICAgICAgIHNlbGYucG9wdWxhdGVkX3N0YXRlX21lc3NhZ2UgPTNEIG1l
c3NhZ2UKPTIwCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGRhdGFzZXRfaW5zdGFuY2VzKCBzZWxm
ICk6CgpkaWZmIC1yIDJhNjYzNTEwMzUzYmE4MjY4ZGVmZjA2M2JhNTBkMjdkZTE4MGI4ODkgLXIg
ZDgzNjg3MTk0Y2NmODQ5ZjAzYzE2NjQ9Cjc5MDcxYmQzM2ExYjQ0N2Y0IGxpYi9nYWxheHkvbW9k
ZWwvbWFwcGluZy5weQotLS0gYS9saWIvZ2FsYXh5L21vZGVsL21hcHBpbmcucHkKKysrIGIvbGli
L2dhbGF4eS9tb2RlbC9tYXBwaW5nLnB5CkBAIC00NDksNiArNDQ5LDEyIEBACiAgICAgQ29sdW1u
KCAiZGF0YXNldF9jb2xsZWN0aW9uX2lkIiwgSW50ZWdlciwgRm9yZWlnbktleSggImhpc3Rvcnlf
ZGF0YXNldD0KX2NvbGxlY3Rpb25fYXNzb2NpYXRpb24uaWQiICksIGluZGV4PTNEVHJ1ZSApLAog
ICAgIENvbHVtbiggIm5hbWUiLCBVbmljb2RlKDI1NSkgKSApCj0yMAorbW9kZWwuSm9iVG9JbXBs
aWNpdE91dHB1dERhdGFzZXRDb2xsZWN0aW9uQXNzb2NpYXRpb24udGFibGUgPTNEIFRhYmxlKCAi
am89CmJfdG9faW1wbGljaXRfb3V0cHV0X2RhdGFzZXRfY29sbGVjdGlvbiIsIG1ldGFkYXRhLAor
ICAgIENvbHVtbiggImlkIiwgSW50ZWdlciwgcHJpbWFyeV9rZXk9M0RUcnVlICksCisgICAgQ29s
dW1uKCAiam9iX2lkIiwgSW50ZWdlciwgRm9yZWlnbktleSggImpvYi5pZCIgKSwgaW5kZXg9M0RU
cnVlICksCisgICAgQ29sdW1uKCAiZGF0YXNldF9jb2xsZWN0aW9uX2lkIiwgSW50ZWdlciwgRm9y
ZWlnbktleSggImRhdGFzZXRfY29sbGVjdD0KaW9uLmlkIiApLCBpbmRleD0zRFRydWUgKSwKKyAg
ICBDb2x1bW4oICJuYW1lIiwgVW5pY29kZSgyNTUpICkgKQorCiBtb2RlbC5Kb2JUb091dHB1dERh
dGFzZXRDb2xsZWN0aW9uQXNzb2NpYXRpb24udGFibGUgPTNEIFRhYmxlKCAiam9iX3RvX291dD0K
cHV0X2RhdGFzZXRfY29sbGVjdGlvbiIsIG1ldGFkYXRhLAogICAgIENvbHVtbiggImlkIiwgSW50
ZWdlciwgcHJpbWFyeV9rZXk9M0RUcnVlICksCiAgICAgQ29sdW1uKCAiam9iX2lkIiwgSW50ZWdl
ciwgRm9yZWlnbktleSggImpvYi5pZCIgKSwgaW5kZXg9M0RUcnVlICksCkBAIC02MTYsNiArNjIy
LDggQEAKIG1vZGVsLkRhdGFzZXRDb2xsZWN0aW9uLnRhYmxlID0zRCBUYWJsZSggImRhdGFzZXRf
Y29sbGVjdGlvbiIsIG1ldGFkYXRhLAogICAgIENvbHVtbiggImlkIiwgSW50ZWdlciwgcHJpbWFy
eV9rZXk9M0RUcnVlICksCiAgICAgQ29sdW1uKCAiY29sbGVjdGlvbl90eXBlIiwgVW5pY29kZSgy
NTUpLCBudWxsYWJsZT0zREZhbHNlICksCisgICAgQ29sdW1uKCAicG9wdWxhdGVkX3N0YXRlIiwg
VHJpbW1lZFN0cmluZyggNjQgKSwgZGVmYXVsdD0zRCdvaycsIG51bGxhYj0KbGU9M0RGYWxzZSAp
LAorICAgIENvbHVtbiggInBvcHVsYXRlZF9zdGF0ZV9tZXNzYWdlIiwgVEVYVCApLAogICAgIENv
bHVtbiggImNyZWF0ZV90aW1lIiwgRGF0ZVRpbWUsIGRlZmF1bHQ9M0Rub3cgKSwKICAgICBDb2x1
bW4oICJ1cGRhdGVfdGltZSIsIERhdGVUaW1lLCBkZWZhdWx0PTNEbm93LCBvbnVwZGF0ZT0zRG5v
dyApLAogKQpAQCAtMTgxMCw4ICsxODE4LDEzIEBACj0yMAogbWFwcGVyKCBtb2RlbC5Kb2JUb091
dHB1dERhdGFzZXRDb2xsZWN0aW9uQXNzb2NpYXRpb24sCiAgICAgICAgIG1vZGVsLkpvYlRvT3V0
cHV0RGF0YXNldENvbGxlY3Rpb25Bc3NvY2lhdGlvbi50YWJsZSwgcHJvcGVydGllcz0zRD0KZGlj
dCgKKyAgICAgICAgICAgIGpvYj0zRHJlbGF0aW9uKCBtb2RlbC5Kb2IgKSwgZGF0YXNldF9jb2xs
ZWN0aW9uX2luc3RhbmNlPTNEcmVsPQphdGlvbigKKyAgICAgICAgICAgICAgICBtb2RlbC5IaXN0
b3J5RGF0YXNldENvbGxlY3Rpb25Bc3NvY2lhdGlvbiwgbGF6eT0zREZhbHNlLCBiPQphY2tyZWY9
M0Qib3V0cHV0X2RhdGFzZXRfY29sbGVjdGlvbl9pbnN0YW5jZXMiICkgKSApCisKK21hcHBlcigg
bW9kZWwuSm9iVG9JbXBsaWNpdE91dHB1dERhdGFzZXRDb2xsZWN0aW9uQXNzb2NpYXRpb24sCisg
ICAgICAgIG1vZGVsLkpvYlRvSW1wbGljaXRPdXRwdXREYXRhc2V0Q29sbGVjdGlvbkFzc29jaWF0
aW9uLnRhYmxlLCBwcm9wZT0KcnRpZXM9M0RkaWN0KAogICAgICAgICAgICAgam9iPTNEcmVsYXRp
b24oIG1vZGVsLkpvYiApLCBkYXRhc2V0X2NvbGxlY3Rpb249M0RyZWxhdGlvbigKLSAgICAgICAg
ICAgICAgICBtb2RlbC5IaXN0b3J5RGF0YXNldENvbGxlY3Rpb25Bc3NvY2lhdGlvbiwgbGF6eT0z
REZhbHNlICkgPQopICkKKyAgICAgICAgICAgICAgICBtb2RlbC5EYXRhc2V0Q29sbGVjdGlvbiwg
YmFja3JlZj0zRCJvdXRwdXRfZGF0YXNldF9jb2xsZWN0PQppb25zIiApICkgKQo9MjAKIG1hcHBl
ciggbW9kZWwuSm9iVG9JbnB1dExpYnJhcnlEYXRhc2V0QXNzb2NpYXRpb24sCiAgICAgICAgIG1v
ZGVsLkpvYlRvSW5wdXRMaWJyYXJ5RGF0YXNldEFzc29jaWF0aW9uLnRhYmxlLCBwcm9wZXJ0aWVz
PTNEZGljdCgKQEAgLTE4OTYsNiArMTkwOSw4IEBACiAgICAgICAgICAgICAgICAgICAgICBwYXJh
bWV0ZXJzPTNEcmVsYXRpb24oIG1vZGVsLkpvYlBhcmFtZXRlciwgbGF6eT0zREZhbD0Kc2UgKSwK
ICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2RhdGFzZXRzPTNEcmVsYXRpb24oIG1vZGVsLkpv
YlRvSW5wdXREYXRhc2V0QXNzPQpvY2lhdGlvbiApLAogICAgICAgICAgICAgICAgICAgICAgb3V0
cHV0X2RhdGFzZXRzPTNEcmVsYXRpb24oIG1vZGVsLkpvYlRvT3V0cHV0RGF0YXNldEE9CnNzb2Np
YXRpb24gKSwKKyAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9kYXRhc2V0X2NvbGxlY3Rpb25f
aW5zdGFuY2VzPTNEcmVsYXRpb24oIG1vZGVsPQouSm9iVG9PdXRwdXREYXRhc2V0Q29sbGVjdGlv
bkFzc29jaWF0aW9uICksCisgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZGF0YXNldF9jb2xs
ZWN0aW9ucz0zRHJlbGF0aW9uKCBtb2RlbC5Kb2JUb0ltcD0KbGljaXRPdXRwdXREYXRhc2V0Q29s
bGVjdGlvbkFzc29jaWF0aW9uICksCiAgICAgICAgICAgICAgICAgICAgICBwb3N0X2pvYl9hY3Rp
b25zPTNEcmVsYXRpb24oIG1vZGVsLlBvc3RKb2JBY3Rpb25Bc3NvYz0KaWF0aW9uLCBsYXp5PTNE
RmFsc2UgKSwKICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2xpYnJhcnlfZGF0YXNldHM9M0Ry
ZWxhdGlvbiggbW9kZWwuSm9iVG9JbnB1dExpPQpicmFyeURhdGFzZXRBc3NvY2lhdGlvbiApLAog
ICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2xpYnJhcnlfZGF0YXNldHM9M0RyZWxhdGlvbigg
bW9kZWwuSm9iVG9PdXRwdXQ9CkxpYnJhcnlEYXRhc2V0QXNzb2NpYXRpb24gKSwKCmRpZmYgLXIg
MmE2NjM1MTAzNTNiYTgyNjhkZWZmMDYzYmE1MGQyN2RlMTgwYjg4OSAtciBkODM2ODcxOTRjY2Y4
NDlmMDNjMTY2ND0KNzkwNzFiZDMzYTFiNDQ3ZjQgbGliL2dhbGF4eS9tb2RlbC9taWdyYXRlL3Zl
cnNpb25zLzAxMjdfb3V0cHV0X2NvbGxlY3Rpb25fPQphZGp1c3RtZW50cy5weQotLS0gL2Rldi9u
dWxsCisrKyBiL2xpYi9nYWxheHkvbW9kZWwvbWlncmF0ZS92ZXJzaW9ucy8wMTI3X291dHB1dF9j
b2xsZWN0aW9uX2FkanVzdG1lbnRzLj0KcHkKQEAgLTAsMCArMSw4NSBAQAorIiIiCitNaWdyYXRp
b24gc2NyaXB0IHVwZGF0aW5nIGNvbGxlY3Rpb25zIHRhYmxlcyBmb3Igb3V0cHV0IGNvbGxlY3Rp
b25zLgorIiIiCisKK2Zyb20gc3FsYWxjaGVteSBpbXBvcnQgKgorZnJvbSBzcWxhbGNoZW15Lm9y
bSBpbXBvcnQgKgorZnJvbSBtaWdyYXRlIGltcG9ydCAqCitmcm9tIG1pZ3JhdGUuY2hhbmdlc2V0
IGltcG9ydCAqCitmcm9tIGdhbGF4eS5tb2RlbC5jdXN0b21fdHlwZXMgaW1wb3J0ICoKKworaW1w
b3J0IGRhdGV0aW1lCitub3cgPTNEIGRhdGV0aW1lLmRhdGV0aW1lLnV0Y25vdworCitpbXBvcnQg
bG9nZ2luZworbG9nID0zRCBsb2dnaW5nLmdldExvZ2dlciggX19uYW1lX18gKQorCittZXRhZGF0
YSA9M0QgTWV0YURhdGEoKQorCitKb2JUb0ltcGxpY2l0T3V0cHV0RGF0YXNldENvbGxlY3Rpb25B
c3NvY2lhdGlvbl90YWJsZSA9M0QgVGFibGUoCisgICAgImpvYl90b19pbXBsaWNpdF9vdXRwdXRf
ZGF0YXNldF9jb2xsZWN0aW9uIiwgbWV0YWRhdGEsCisgICAgQ29sdW1uKCAiaWQiLCBJbnRlZ2Vy
LCBwcmltYXJ5X2tleT0zRFRydWUgKSwKKyAgICBDb2x1bW4oICJqb2JfaWQiLCBJbnRlZ2VyLCBG
b3JlaWduS2V5KCAiam9iLmlkIiApLCBpbmRleD0zRFRydWUgKSwKKyAgICBDb2x1bW4oICJkYXRh
c2V0X2NvbGxlY3Rpb25faWQiLCBJbnRlZ2VyLCBGb3JlaWduS2V5KCAiZGF0YXNldF9jb2xsZWN0
PQppb24uaWQiICksIGluZGV4PTNEVHJ1ZSApLAorICAgIENvbHVtbiggIm5hbWUiLCBVbmljb2Rl
KDI1NSkgKQorKQorCisKK1RBQkxFUyA9M0QgWworICAgIEpvYlRvSW1wbGljaXRPdXRwdXREYXRh
c2V0Q29sbGVjdGlvbkFzc29jaWF0aW9uX3RhYmxlLAorXQorCisKK2RlZiB1cGdyYWRlKG1pZ3Jh
dGVfZW5naW5lKToKKyAgICBtZXRhZGF0YS5iaW5kID0zRCBtaWdyYXRlX2VuZ2luZQorICAgIHBy
aW50IF9fZG9jX18KKyAgICBtZXRhZGF0YS5yZWZsZWN0KCkKKworICAgIGZvciB0YWJsZSBpbiBU
QUJMRVM6CisgICAgICAgIF9fY3JlYXRlKHRhYmxlKQorCisgICAgdHJ5OgorICAgICAgICBkYXRh
c2V0X2NvbGxlY3Rpb25fdGFibGUgPTNEIFRhYmxlKCAiZGF0YXNldF9jb2xsZWN0aW9uIiwgbWV0
YWRhdGE9CiwgYXV0b2xvYWQ9M0RUcnVlICkKKyAgICAgICAgIyBuZWVkIHNlcnZlcl9kZWZhdWx0
IGJlY2F1c2UgY29sdW1uIGluIG5vbi1udWxsCisgICAgICAgIHBvcHVsYXRlZF9zdGF0ZV9jb2x1
bW4gPTNEIENvbHVtbiggJ3BvcHVsYXRlZF9zdGF0ZScsIFRyaW1tZWRTdHJpbj0KZyggNjQgKSwg
ZGVmYXVsdD0zRCdvaycsIHNlcnZlcl9kZWZhdWx0PTNEIm9rIiwgbnVsbGFibGU9M0RGYWxzZSAp
CisgICAgICAgIHBvcHVsYXRlZF9zdGF0ZV9jb2x1bW4uY3JlYXRlKCBkYXRhc2V0X2NvbGxlY3Rp
b25fdGFibGUgKQorCisgICAgICAgIHBvcHVsYXRlZF9tZXNzYWdlX2NvbHVtbiA9M0QgQ29sdW1u
KCAncG9wdWxhdGVkX3N0YXRlX21lc3NhZ2UnLCBURT0KWFQsIG51bGxhYmxlPTNEVHJ1ZSApCisg
ICAgICAgIHBvcHVsYXRlZF9tZXNzYWdlX2NvbHVtbi5jcmVhdGUoIGRhdGFzZXRfY29sbGVjdGlv
bl90YWJsZSApCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBwcmludCBzdHIo
ZSkKKyAgICAgICAgbG9nLmV4Y2VwdGlvbiggIkNyZWF0aW5nIGRhdGFzZXQgY29sbGVjdGlvbiBw
b3B1bGF0ZWQgY29sdW1uIGZhaWxlPQpkLiIgKQorCisKK2RlZiBkb3duZ3JhZGUobWlncmF0ZV9l
bmdpbmUpOgorICAgIG1ldGFkYXRhLmJpbmQgPTNEIG1pZ3JhdGVfZW5naW5lCisgICAgbWV0YWRh
dGEucmVmbGVjdCgpCisKKyAgICBmb3IgdGFibGUgaW4gVEFCTEVTOgorICAgICAgICBfX2Ryb3Ao
dGFibGUpCisKKyAgICB0cnk6CisgICAgICAgIGRhdGFzZXRfY29sbGVjdGlvbl90YWJsZSA9M0Qg
VGFibGUoICJkYXRhc2V0X2NvbGxlY3Rpb24iLCBtZXRhZGF0YT0KLCBhdXRvbG9hZD0zRFRydWUg
KQorICAgICAgICBwb3B1bGF0ZWRfc3RhdGVfY29sdW1uID0zRCBkYXRhc2V0X2NvbGxlY3Rpb25f
dGFibGUuYy5wb3B1bGF0ZWRfc3Q9CmF0ZQorICAgICAgICBwb3B1bGF0ZWRfc3RhdGVfY29sdW1u
LmRyb3AoKQorICAgICAgICBwb3B1bGF0ZWRfbWVzc2FnZV9jb2x1bW4gPTNEIGRhdGFzZXRfY29s
bGVjdGlvbl90YWJsZS5jLnBvcHVsYXRlZF89CnN0YXRlX21lc3NhZ2UKKyAgICAgICAgcG9wdWxh
dGVkX21lc3NhZ2VfY29sdW1uLmRyb3AoKQorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAg
ICAgICAgcHJpbnQgc3RyKGUpCisgICAgICAgIGxvZy5leGNlcHRpb24oICJEcm9wcGluZyBkYXRh
c2V0IGNvbGxlY3Rpb24gcG9wdWxhdGVkX3N0YXRlLyBjb2x1bT0KbiBmYWlsZWQuIiApCisKKwor
ZGVmIF9fY3JlYXRlKHRhYmxlKToKKyAgICB0cnk6CisgICAgICAgIHRhYmxlLmNyZWF0ZSgpCisg
ICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBwcmludCBzdHIoZSkKKyAgICAgICAg
bG9nLmV4Y2VwdGlvbigiQ3JlYXRpbmcgJXMgdGFibGUgZmFpbGVkOiAlcyIgJSAodGFibGUubmFt
ZSwgc3RyKCBlPQogKSApICkKKworCitkZWYgX19kcm9wKHRhYmxlKToKKyAgICB0cnk6CisgICAg
ICAgIHRhYmxlLmRyb3AoKQorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgcHJp
bnQgc3RyKGUpCisgICAgICAgIGxvZy5leGNlcHRpb24oIkRyb3BwaW5nICVzIHRhYmxlIGZhaWxl
ZDogJXMiICUgKHRhYmxlLm5hbWUsIHN0ciggZT0KICkgKSApCgpkaWZmIC1yIDJhNjYzNTEwMzUz
YmE4MjY4ZGVmZjA2M2JhNTBkMjdkZTE4MGI4ODkgLXIgZDgzNjg3MTk0Y2NmODQ5ZjAzYzE2NjQ9
Cjc5MDcxYmQzM2ExYjQ0N2Y0IGxpYi9nYWxheHkvdG9vbHMvX19pbml0X18ucHkKLS0tIGEvbGli
L2dhbGF4eS90b29scy9fX2luaXRfXy5weQorKysgYi9saWIvZ2FsYXh5L3Rvb2xzL19faW5pdF9f
LnB5CkBAIC0yMjIsNyArMjIyLDE4IEBACiAgICAgICAgIHJldHVybiBuZXdfc3RhdGUKPTIwCj0y
MAotY2xhc3MgVG9vbE91dHB1dCggb2JqZWN0LCBEaWN0aWZpYWJsZSApOgorY2xhc3MgVG9vbE91
dHB1dEJhc2UoIG9iamVjdCwgRGljdGlmaWFibGUgKToKKworICAgIGRlZiBfX2luaXRfXyggc2Vs
ZiwgbmFtZSwgbGFiZWw9M0ROb25lLCBmaWx0ZXJzPTNETm9uZSwgaGlkZGVuPTNERmFsc2U9CiAp
OgorICAgICAgICBzdXBlciggVG9vbE91dHB1dEJhc2UsIHNlbGYgKS5fX2luaXRfXygpCisgICAg
ICAgIHNlbGYubmFtZSA9M0QgbmFtZQorICAgICAgICBzZWxmLmxhYmVsID0zRCBsYWJlbAorICAg
ICAgICBzZWxmLmZpbHRlcnMgPTNEIGZpbHRlcnMgb3IgW10KKyAgICAgICAgc2VsZi5oaWRkZW4g
PTNEIGhpZGRlbgorICAgICAgICBzZWxmLmNvbGxlY3Rpb24gPTNEIEZhbHNlCisKKworY2xhc3Mg
VG9vbE91dHB1dCggVG9vbE91dHB1dEJhc2UgKToKICAgICAiIiIKICAgICBSZXByZXNlbnRzIGFu
IG91dHB1dCBkYXRhc2V0cyBwcm9kdWNlZCBieSBhIHRvb2wuIEZvciBiYWNrd2FyZAogICAgIGNv
bXBhdGliaWxpdHkgdGhpcyBiZWhhdmVzIGFzIGlmIGl0IHdlcmUgdGhlIHR1cGxlOjoKQEAgLTIz
MywxNiArMjQ0LDE4IEBACiAgICAgZGljdF9jb2xsZWN0aW9uX3Zpc2libGVfa2V5cyA9M0QgKCAn
bmFtZScsICdmb3JtYXQnLCAnbGFiZWwnLCAnaGlkZGVuJz0KICkKPTIwCiAgICAgZGVmIF9faW5p
dF9fKCBzZWxmLCBuYW1lLCBmb3JtYXQ9M0ROb25lLCBmb3JtYXRfc291cmNlPTNETm9uZSwgbWV0
YWRhdD0KYV9zb3VyY2U9M0ROb25lLAotICAgICAgICAgICAgICAgICAgcGFyZW50PTNETm9uZSwg
bGFiZWw9M0ROb25lLCBmaWx0ZXJzPTNETm9uZSwgYWN0aW9ucz0zRE49Cm9uZSwgaGlkZGVuPTNE
RmFsc2UgKToKLSAgICAgICAgc2VsZi5uYW1lID0zRCBuYW1lCisgICAgICAgICAgICAgICAgICBw
YXJlbnQ9M0ROb25lLCBsYWJlbD0zRE5vbmUsIGZpbHRlcnM9M0ROb25lLCBhY3Rpb25zPTNETj0K
b25lLCBoaWRkZW49M0RGYWxzZSwKKyAgICAgICAgICAgICAgICAgIGltcGxpY2l0PTNERmFsc2Ug
KToKKyAgICAgICAgc3VwZXIoIFRvb2xPdXRwdXQsIHNlbGYgKS5fX2luaXRfXyggbmFtZSwgbGFi
ZWw9M0RsYWJlbCwgZmlsdGVycz0KPTNEZmlsdGVycywgaGlkZGVuPTNEaGlkZGVuICkKICAgICAg
ICAgc2VsZi5mb3JtYXQgPTNEIGZvcm1hdAogICAgICAgICBzZWxmLmZvcm1hdF9zb3VyY2UgPTNE
IGZvcm1hdF9zb3VyY2UKICAgICAgICAgc2VsZi5tZXRhZGF0YV9zb3VyY2UgPTNEIG1ldGFkYXRh
X3NvdXJjZQogICAgICAgICBzZWxmLnBhcmVudCA9M0QgcGFyZW50Ci0gICAgICAgIHNlbGYubGFi
ZWwgPTNEIGxhYmVsCi0gICAgICAgIHNlbGYuZmlsdGVycyA9M0QgZmlsdGVycyBvciBbXQogICAg
ICAgICBzZWxmLmFjdGlvbnMgPTNEIGFjdGlvbnMKLSAgICAgICAgc2VsZi5oaWRkZW4gPTNEIGhp
ZGRlbgorCisgICAgICAgICMgSW5pdGlhbGl6ZSBkZWZhdWx0IHZhbHVlcworICAgICAgICBzZWxm
LmNoYW5nZV9mb3JtYXQgPTNEIFtdCisgICAgICAgIHNlbGYuaW1wbGljaXQgPTNEIGltcGxpY2l0
Cj0yMAogICAgICMgVHVwbGUgZW11bGF0aW9uCj0yMApAQCAtMjYzLDYgKzI3NiwxMzcgQEAKICAg
ICAgICAgcmV0dXJuIGl0ZXIoICggc2VsZi5mb3JtYXQsIHNlbGYubWV0YWRhdGFfc291cmNlLCBz
ZWxmLnBhcmVudCApICkKPTIwCj0yMAorY2xhc3MgVG9vbE91dHB1dENvbGxlY3Rpb24oIFRvb2xP
dXRwdXRCYXNlICk6CisgICAgIiIiCisgICAgUmVwcmVzZW50cyBhIEhpc3RvcnlEYXRhc2V0Q29s
bGVjdGlvbkFzc29jaWF0aW9uIG9mICBvdXRwdXQgZGF0YXNldHMgcD0Kcm9kdWNlZCBieSBhIHRv
b2wuCisgICAgPG91dHB1dHM+CisgICAgICA8ZGF0YXNldF9jb2xsZWN0aW9uIHR5cGU9M0QibGlz
dCIgbGFiZWw9M0QiJHt0b29sLm5hbWV9IG9uICR7b25fc3RyaT0Kbmd9IGZhc3RhIj4KKyAgICAg
ICAgPGRpc2NvdmVyX2RhdGFzZXRzIHBhdHRlcm49M0QiX19uYW1lX18iIGV4dD0zRCJmYXN0YSIg
dmlzaWJsZT0zRCJUPQpydWUiIGRpcmVjdG9yeT0zRCJvdXRwdXRGaWxlcyIgLz4KKyAgICAgIDwv
ZGF0YXNldF9jb2xsZWN0aW9uPgorICAgICAgPGRhdGFzZXRfY29sbGVjdGlvbiB0eXBlPTNEInBh
aXJlZCIgbGFiZWw9M0QiJHt0b29sLm5hbWV9IG9uICR7b25fc3Q9CnJpbmd9IHBhaXJlZCByZWFk
cyI+CisgICAgICAgIDxkYXRhIG5hbWU9M0QiZm9yd2FyZCIgZm9ybWF0PTNEImZhc3Rxc2FuZ2Vy
IiAvPgorICAgICAgICA8ZGF0YSBuYW1lPTNEInJldmVyc2UiIGZvcm1hdD0zRCJmYXN0cXNhbmdl
ciIvPgorICAgICAgPC9kYXRhc2V0X2NvbGxlY3Rpb24+CisgICAgPG91dHB1dHM+CisgICAgIiIi
CisKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgIG5hbWUsCisgICAg
ICAgIHN0cnVjdHVyZSwKKyAgICAgICAgbGFiZWw9M0ROb25lLAorICAgICAgICBmaWx0ZXJzPTNE
Tm9uZSwKKyAgICAgICAgaGlkZGVuPTNERmFsc2UsCisgICAgICAgIGRlZmF1bHRfZm9ybWF0PTNE
ImRhdGEiLAorICAgICAgICBkZWZhdWx0X2Zvcm1hdF9zb3VyY2U9M0ROb25lLAorICAgICAgICBk
ZWZhdWx0X21ldGFkYXRhX3NvdXJjZT0zRE5vbmUsCisgICAgICAgIGluaGVyaXRfZm9ybWF0PTNE
RmFsc2UsCisgICAgICAgIGluaGVyaXRfbWV0YWRhdGE9M0RGYWxzZQorICAgICk6CisgICAgICAg
IHN1cGVyKCBUb29sT3V0cHV0Q29sbGVjdGlvbiwgc2VsZiApLl9faW5pdF9fKCBuYW1lLCBsYWJl
bD0zRGxhYmVsLD0KIGZpbHRlcnM9M0RmaWx0ZXJzLCBoaWRkZW49M0RoaWRkZW4gKQorICAgICAg
ICBzZWxmLmNvbGxlY3Rpb24gPTNEIFRydWUKKyAgICAgICAgc2VsZi5kZWZhdWx0X2Zvcm1hdCA9
M0QgZGVmYXVsdF9mb3JtYXQKKyAgICAgICAgc2VsZi5zdHJ1Y3R1cmUgPTNEIHN0cnVjdHVyZQor
ICAgICAgICBzZWxmLm91dHB1dHMgPTNEIG9kaWN0KCkKKworICAgICAgICBzZWxmLmluaGVyaXRf
Zm9ybWF0ID0zRCBpbmhlcml0X2Zvcm1hdAorICAgICAgICBzZWxmLmluaGVyaXRfbWV0YWRhdGEg
PTNEIGluaGVyaXRfbWV0YWRhdGEKKworICAgICAgICBzZWxmLm1ldGFkYXRhX3NvdXJjZSA9M0Qg
ZGVmYXVsdF9tZXRhZGF0YV9zb3VyY2UKKyAgICAgICAgc2VsZi5mb3JtYXRfc291cmNlID0zRCBk
ZWZhdWx0X2Zvcm1hdF9zb3VyY2UKKyAgICAgICAgc2VsZi5jaGFuZ2VfZm9ybWF0ID0zRCBbXSAg
IyBUT0RPCisKKyAgICBkZWYga25vd25fb3V0cHV0cyggc2VsZiwgaW5wdXRzLCB0eXBlX3JlZ2lz
dHJ5ICk6CisgICAgICAgIGlmIHNlbGYuZHluYW1pY19zdHJ1Y3R1cmU6CisgICAgICAgICAgICBy
ZXR1cm4gW10KKworICAgICAgICBkZWYgdG9fcGFydCggKCBlbGVtZW50X2lkZW50aWZpZXIsIG91
dHB1dCApICk6CisgICAgICAgICAgICByZXR1cm4gVG9vbE91dHB1dENvbGxlY3Rpb25QYXJ0KCBz
ZWxmLCBlbGVtZW50X2lkZW50aWZpZXIsIG91dD0KcHV0ICkKKworICAgICAgICAjIFRoaXMgbGlu
ZSBpcyBwcm9iYWJseSBub3QgcmlnaHQgLSBzaG91bGQgdmVyaWZ5IHN0cnVjdHVyZWRfbGlrZQor
ICAgICAgICAjIG9yIGhhdmUgb3V0cHV0cyBhbmQgYWxsIG91dHB1dHMgaGF2ZSBuYW1lLgorICAg
ICAgICBpZiBsZW4oIHNlbGYub3V0cHV0cyApID4gMToKKyAgICAgICAgICAgIG91dHB1dHMgPTNE
IHNlbGYub3V0cHV0cworICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBlaXRoZXIgbXVzdCBo
YXZlIHNwZWNpZmllZCBzdHJ1Y3R1cmVkX2xpa2Ugb3Igc29tZXRoaW5nIHdvcnNlCisgICAgICAg
ICAgICBpZiBzZWxmLnN0cnVjdHVyZS5zdHJ1Y3R1cmVkX2xpa2U6CisgICAgICAgICAgICAgICAg
Y29sbGVjdGlvbl9wcm90b3R5cGUgPTNEIGlucHV0c1sgc2VsZi5zdHJ1Y3R1cmUuc3RydWN0dXJl
ZD0KX2xpa2UgXS5jb2xsZWN0aW9uCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
IGNvbGxlY3Rpb25fcHJvdG90eXBlID0zRCB0eXBlX3JlZ2lzdHJ5LnByb3RvdHlwZSggc2VsZi5z
dHI9CnVjdHVyZS5jb2xsZWN0aW9uX3R5cGUgKQorICAgICAgICAgICAgIyBUT0RPOiBIYW5kbGUg
bmVzdGVkIHN0cnVjdHVyZXMuCisgICAgICAgICAgICBvdXRwdXRzID0zRCBvZGljdCgpCisgICAg
ICAgICAgICBmb3IgZWxlbWVudCBpbiBjb2xsZWN0aW9uX3Byb3RvdHlwZS5lbGVtZW50czoKKyAg
ICAgICAgICAgICAgICBuYW1lID0zRCBlbGVtZW50LmVsZW1lbnRfaWRlbnRpZmllcgorICAgICAg
ICAgICAgICAgIGZvcm1hdCA9M0Qgc2VsZi5kZWZhdWx0X2Zvcm1hdAorICAgICAgICAgICAgICAg
IGlmIHNlbGYuaW5oZXJpdF9mb3JtYXQ6CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9M0Qg
ZWxlbWVudC5kYXRhc2V0X2luc3RhbmNlLmV4dAorICAgICAgICAgICAgICAgIG91dHB1dCA9M0Qg
VG9vbE91dHB1dCgKKyAgICAgICAgICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgZm9ybWF0PTNEZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc291cmNlPTNE
c2VsZi5mb3JtYXRfc291cmNlLAorICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YV9zb3VyY2U9
M0RzZWxmLm1ldGFkYXRhX3NvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgaW1wbGljaXQ9M0RU
cnVlLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmluaGVyaXRf
bWV0YWRhdGE6CisgICAgICAgICAgICAgICAgICAgIG91dHB1dC5tZXRhZGF0YV9zb3VyY2UgPTNE
IGVsZW1lbnQuZGF0YXNldF9pbnN0YW5jZQorCisgICAgICAgICAgICAgICAgb3V0cHV0c1sgZWxl
bWVudC5lbGVtZW50X2lkZW50aWZpZXIgXSA9M0Qgb3V0cHV0CisKKyAgICAgICAgcmV0dXJuIG1h
cCggdG9fcGFydCwgb3V0cHV0cy5pdGVtcygpICkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBk
eW5hbWljX3N0cnVjdHVyZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuc3RydWN0dXJlLmR5
bmFtaWMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkYXRhc2V0X2NvbGxlY3RvcnMoc2VsZik6
CisgICAgICAgIGlmIG5vdCBzZWxmLmR5bmFtaWNfc3RydWN0dXJlOgorICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKCJkYXRhc2V0X2NvbGxlY3RvcnMgY2FsbGVkIGZvciBvdXRwdXQgY29sbGVj
dGk9Cm9uIHdpdGggc3RhdGljIHN0cnVjdHVyZSIpCisgICAgICAgIHJldHVybiBzZWxmLnN0cnVj
dHVyZS5kYXRhc2V0X2NvbGxlY3RvcnMKKworCitjbGFzcyBUb29sT3V0cHV0Q29sbGVjdGlvblN0
cnVjdHVyZSggb2JqZWN0ICk6CisKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNlbGYsCisg
ICAgICAgIGNvbGxlY3Rpb25fdHlwZSwKKyAgICAgICAgc3RydWN0dXJlZF9saWtlLAorICAgICAg
ICBkYXRhc2V0X2NvbGxlY3RvcnMsCisgICAgKToKKyAgICAgICAgc2VsZi5jb2xsZWN0aW9uX3R5
cGUgPTNEIGNvbGxlY3Rpb25fdHlwZQorICAgICAgICBzZWxmLnN0cnVjdHVyZWRfbGlrZSA9M0Qg
c3RydWN0dXJlZF9saWtlCisgICAgICAgIHNlbGYuZGF0YXNldF9jb2xsZWN0b3JzID0zRCBkYXRh
c2V0X2NvbGxlY3RvcnMKKyAgICAgICAgaWYgY29sbGVjdGlvbl90eXBlIGlzIE5vbmUgYW5kIHN0
cnVjdHVyZWRfbGlrZSBpcyBOb25lIGFuZCBkYXRhc2V0PQpfY29sbGVjdG9ycyBpcyBOb25lOgor
ICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvciggIk91dHB1dCBjb2xsZWN0aW9uIHR5cGVzIG11
c3QgYmUgc3BlY2lmeSB0eXA9CmUgb2Ygc3RydWN0dXJlZF9saWtlIiApCisgICAgICAgIGlmIGRh
dGFzZXRfY29sbGVjdG9ycyBhbmQgc3RydWN0dXJlZF9saWtlOgorICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvciggIkNhbm5vdCBzcGVjaWZ5IGR5bmFtaWMgc3RydWN0dXJlIChkaXNjb3ZlcmU9
CmRfZGF0YXNldHMpIGFuZCBzdHJ1Y3R1cmVkX2xpa2UgYXR0cmlidXRlLiIgKQorICAgICAgICBz
ZWxmLmR5bmFtaWMgPTNEIGRhdGFzZXRfY29sbGVjdG9ycyBpcyBub3QgTm9uZQorCisKK2NsYXNz
IFRvb2xPdXRwdXRDb2xsZWN0aW9uUGFydCggb2JqZWN0ICk6CisKKyAgICBkZWYgX19pbml0X18o
IHNlbGYsIG91dHB1dF9jb2xsZWN0aW9uX2RlZiwgZWxlbWVudF9pZGVudGlmaWVyLCBvdXRwdXRf
PQpkZWYgKToKKyAgICAgICAgc2VsZi5vdXRwdXRfY29sbGVjdGlvbl9kZWYgPTNEIG91dHB1dF9j
b2xsZWN0aW9uX2RlZgorICAgICAgICBzZWxmLmVsZW1lbnRfaWRlbnRpZmllciA9M0QgZWxlbWVu
dF9pZGVudGlmaWVyCisgICAgICAgIHNlbGYub3V0cHV0X2RlZiA9M0Qgb3V0cHV0X2RlZgorCisg
ICAgQHByb3BlcnR5CisgICAgZGVmIGVmZmVjdGl2ZV9vdXRwdXRfbmFtZSggc2VsZiApOgorICAg
ICAgICBuYW1lID0zRCBzZWxmLm91dHB1dF9jb2xsZWN0aW9uX2RlZi5uYW1lCisgICAgICAgIHBh
cnRfbmFtZSA9M0Qgc2VsZi5lbGVtZW50X2lkZW50aWZpZXIKKyAgICAgICAgZWZmZWN0aXZlX291
dHB1dF9uYW1lID0zRCAiJXN8X19wYXJ0X198JXMiICUgKCBuYW1lLCBwYXJ0X25hbWUgKQorICAg
ICAgICByZXR1cm4gZWZmZWN0aXZlX291dHB1dF9uYW1lCisKKyAgICBAc3RhdGljbWV0aG9kCisg
ICAgZGVmIGlzX25hbWVkX2NvbGxlY3Rpb25fcGFydF9uYW1lKCBuYW1lICk6CisgICAgICAgIHJl
dHVybiAifF9fcGFydF9ffCIgaW4gbmFtZQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBz
cGxpdF9vdXRwdXRfbmFtZSggbmFtZSApOgorICAgICAgICBhc3NlcnQgVG9vbE91dHB1dENvbGxl
Y3Rpb25QYXJ0LmlzX25hbWVkX2NvbGxlY3Rpb25fcGFydF9uYW1lKCBuYW09CmUgKQorICAgICAg
ICByZXR1cm4gbmFtZS5zcGxpdCgifF9fcGFydF9ffCIpCisKKwogY2xhc3MgVG9vbCggb2JqZWN0
LCBEaWN0aWZpYWJsZSApOgogICAgICIiIgogICAgIFJlcHJlc2VudHMgYSBjb21wdXRhdGlvbmFs
IHRvb2wgdGhhdCBjYW4gYmUgZXhlY3V0ZWQgdGhyb3VnaCBHYWxheHkuCkBAIC0zNTIsNiArNDk2
LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgID0KICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmlu
c3RhbGxlZF9jaGFuZ2VzZXRfcmV2aXNpb24gKQogICAgICAgICByZXR1cm4gTm9uZQo9MjAKKyAg
ICBAcHJvcGVydHkKKyAgICBkZWYgcHJvZHVjZXNfY29sbGVjdGlvbnMoIHNlbGYgKToKKyAgICAg
ICAgcmV0dXJuIGFueSggby5jb2xsZWN0aW9uIGZvciBvIGluIHNlbGYub3V0cHV0cy52YWx1ZXMo
KSApCisKICAgICBkZWYgX19nZXRfam9iX3Rvb2xfY29uZmlndXJhdGlvbihzZWxmLCBqb2JfcGFy
YW1zPTNETm9uZSk6CiAgICAgICAgICIiIkdlbmVyYWxpemVkIG1ldGhvZCBmb3IgZ2V0dGluZyB0
aGlzIHRvb2wncyBqb2IgY29uZmlndXJhdGlvbi4KPTIwCkBAIC03MDAsOSArODQ4LDcgQEAKICAg
ICAgICAgIiIiCiAgICAgICAgIFBhcnNlIDxvdXRwdXRzPiBlbGVtZW50cyBhbmQgZmlsbCBpbiBz
ZWxmLm91dHB1dHMgKGtleWVkIGJ5IG5hbWUpCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLm91
dHB1dHMgPTNEIG9kaWN0KCkKLSAgICAgICAgZm9yIG91dHB1dCBpbiB0b29sX3NvdXJjZS5wYXJz
ZV9vdXRwdXRzKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5vdXRwdXRzWyBvdXRwdXQubmFtZSBd
ID0zRCBvdXRwdXQKKyAgICAgICAgc2VsZi5vdXRwdXRzLCBzZWxmLm91dHB1dF9jb2xsZWN0aW9u
cyA9M0QgdG9vbF9zb3VyY2UucGFyc2Vfb3V0cHV0PQpzKHNlbGYpCj0yMAogICAgICMgVE9ETzog
SW5jbHVkZSB0aGUgdG9vbCdzIG5hbWUgaW4gYW55IHBhcnNpbmcgd2FybmluZ3MuCiAgICAgZGVm
IHBhcnNlX3N0ZGlvKCBzZWxmLCB0b29sX3NvdXJjZSApOgpAQCAtOTMwLDYgKzEwNzYsMTkgQEAK
ICAgICAgICAgd2hpbGUgbGVuKCBzZWxmLl9faGVscF9ieV9wYWdlICkgPCBzZWxmLm5wYWdlczoK
ICAgICAgICAgICAgIHNlbGYuX19oZWxwX2J5X3BhZ2UuYXBwZW5kKCBzZWxmLl9faGVscCApCj0y
MAorICAgIGRlZiBmaW5kX291dHB1dF9kZWYoIHNlbGYsIG5hbWUgKToKKyAgICAgICAgIyBuYW1l
IGlzIEpvYlRvT3V0cHV0RGF0YXNldEFzc29jaWF0aW9uIG5hbWUuCisgICAgICAgICMgVE9ETzog
dG8gZGVmZW5zaXZlLCBqdXN0IHRocm93IEluZGV4RXJyb3IgYW5kIGNhdGNoIHNvbWV3aGVyZQor
ICAgICAgICAjIHVwIHRoYXQgc3RhY2suCisgICAgICAgIGlmIFRvb2xPdXRwdXRDb2xsZWN0aW9u
UGFydC5pc19uYW1lZF9jb2xsZWN0aW9uX3BhcnRfbmFtZSggbmFtZSApOgorICAgICAgICAgICAg
Y29sbGVjdGlvbl9uYW1lLCBwYXJ0ID0zRCBUb29sT3V0cHV0Q29sbGVjdGlvblBhcnQuc3BsaXRf
b3V0cHU9CnRfbmFtZSggbmFtZSApCisgICAgICAgICAgICBjb2xsZWN0aW9uX2RlZiA9M0Qgc2Vs
Zi5vdXRwdXRfY29sbGVjdGlvbnMuZ2V0KCBjb2xsZWN0aW9uX25hbT0KZSwgTm9uZSApCisgICAg
ICAgICAgICBpZiBub3QgY29sbGVjdGlvbl9kZWY6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKyAgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uX2RlZi5vdXRwdXRzLmdldCggcGFydCwg
Tm9uZSApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5vdXRwdXRzLmdl
dCggbmFtZSwgTm9uZSApCisKICAgICBkZWYgY2hlY2tfd29ya2Zsb3dfY29tcGF0aWJsZSggc2Vs
ZiwgdG9vbF9zb3VyY2UgKToKICAgICAgICAgIiIiCiAgICAgICAgIERldGVybWluZSBpZiBhIHRv
b2wgY2FuIGJlIHVzZWQgaW4gd29ya2Zsb3dzLiBFeHRlcm5hbCB0b29scyBhbmQgdD0KaGUKQEAg
LTk0NCwxMCArMTEwMywxNSBAQAogICAgICAgICBpZiBzZWxmLnRvb2xfdHlwZS5zdGFydHN3aXRo
KCAnZGF0YV9zb3VyY2UnICk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKPTIwCisgICAgICAg
IGlmIHNlbGYucHJvZHVjZXNfY29sbGVjdGlvbnM6CisgICAgICAgICAgICAjIFNvbWVkYXkgd2Ug
d2lsbCBnZXQgdGhlcmUhCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgICAgICBpZiBo
YXNhdHRyKCB0b29sX3NvdXJjZSwgInJvb3QiKToKICAgICAgICAgICAgIHJvb3QgPTNEIHRvb2xf
c291cmNlLnJvb3QKICAgICAgICAgICAgIGlmIG5vdCBzdHJpbmdfYXNfYm9vbCggcm9vdC5nZXQo
ICJ3b3JrZmxvd19jb21wYXRpYmxlIiwgIlRydWUiPQogKSApOgogICAgICAgICAgICAgICAgIHJl
dHVybiBGYWxzZQorCiAgICAgICAgICMgVE9ETzogQW55d2F5IHRvIGNhcHR1cmUgdG9vbHMgdGhh
dCBkeW5hbWljYWxseSBjaGFuZ2UgdGhlaXIgb3duCiAgICAgICAgICMgICAgICAgb3V0cHV0cz8K
ICAgICAgICAgcmV0dXJuIFRydWUKQEAgLTExMDksNiArMTI3Myw3IEBACiAgICAgICAgICAgICAg
ICAgICAgICAgICBudW1fam9icz0zRGxlbiggZXhlY3V0aW9uX3RyYWNrZXIuc3VjY2Vzc2Z1bF9q
b2JzID0KKSwKICAgICAgICAgICAgICAgICAgICAgICAgIGpvYl9lcnJvcnM9M0RleGVjdXRpb25f
dHJhY2tlci5leGVjdXRpb25fZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgam9icz0z
RGV4ZWN1dGlvbl90cmFja2VyLnN1Y2Nlc3NmdWxfam9icywKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG91dHB1dF9jb2xsZWN0aW9ucz0zRGV4ZWN1dGlvbl90cmFja2VyLm91dHB1dF9jb2xsPQpl
Y3Rpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGljaXRfY29sbGVjdGlvbnM9M0Rl
eGVjdXRpb25fdHJhY2tlci5pbXBsaWNpdF89CmNvbGxlY3Rpb25zLAogICAgICAgICAgICAgICAg
ICAgICApCiAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTExMjIsMTQgKzEyODcsMTQgQEAKICAg
ICBkZWYgX19zaG91bGRfcmVmcmVzaF9zdGF0ZSggc2VsZiwgaW5jb21pbmcgKToKICAgICAgICAg
cmV0dXJuIG5vdCggJ3J1bnRvb2xfYnRuJyBpbiBpbmNvbWluZyBvciAnVVJMJyBpbiBpbmNvbWlu
ZyBvciAnYWphPQp4X3VwbG9hZCcgaW4gaW5jb21pbmcgKQo9MjAKLSAgICBkZWYgaGFuZGxlX3Np
bmdsZV9leGVjdXRpb24oIHNlbGYsIHRyYW5zLCByZXJ1bl9yZW1hcF9qb2JfaWQsIHBhcmFtcywg
PQpoaXN0b3J5ICk6CisgICAgZGVmIGhhbmRsZV9zaW5nbGVfZXhlY3V0aW9uKCBzZWxmLCB0cmFu
cywgcmVydW5fcmVtYXBfam9iX2lkLCBwYXJhbXMsID0KaGlzdG9yeSwgbWFwcGluZ19vdmVyX2Nv
bGxlY3Rpb24gKToKICAgICAgICAgIiIiCiAgICAgICAgIFJldHVybiBhIHBhaXIgd2l0aCB3aGV0
aGVyIGV4ZWN1dGlvbiBpcyBzdWNjZXNzZnVsIGFzIHdlbGwgYXMgZWl0aD0KZXIKICAgICAgICAg
cmVzdWx0aW5nIG91dHB1dCBkYXRhIG9yIGFuIGVycm9yIG1lc3NhZ2UgaW5kaWNhdGluZyB0aGUg
cHJvYmxlbS4KICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHBhcmFtcyA9
M0Qgc2VsZi5fX3JlbW92ZV9tZXRhX3Byb3BlcnRpZXMoIHBhcmFtcyApCi0gICAgICAgICAgICBq
b2IsIG91dF9kYXRhID0zRCBzZWxmLmV4ZWN1dGUoIHRyYW5zLCBpbmNvbWluZz0zRHBhcmFtcywg
aGlzdD0Kb3J5PTNEaGlzdG9yeSwgcmVydW5fcmVtYXBfam9iX2lkPTNEcmVydW5fcmVtYXBfam9i
X2lkICkKKyAgICAgICAgICAgIGpvYiwgb3V0X2RhdGEgPTNEIHNlbGYuZXhlY3V0ZSggdHJhbnMs
IGluY29taW5nPTNEcGFyYW1zLCBoaXN0PQpvcnk9M0RoaXN0b3J5LCByZXJ1bl9yZW1hcF9qb2Jf
aWQ9M0RyZXJ1bl9yZW1hcF9qb2JfaWQsIG1hcHBpbmdfb3Zlcl9jb2xsZWM9CnRpb249M0RtYXBw
aW5nX292ZXJfY29sbGVjdGlvbiApCiAgICAgICAgIGV4Y2VwdCBodHRwZXhjZXB0aW9ucy5IVFRQ
Rm91bmQsIGU6CiAgICAgICAgICAgICAjaWYgaXQncyBhIHBhc3RlIHJlZGlyZWN0IGV4Y2VwdGlv
biwgcGFzcyBpdCB1cCB0aGUgc3RhY2sKICAgICAgICAgICAgIHJhaXNlIGUKQEAgLTIwNDcsNiAr
MjIxMiwxMSBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIG91dHB1dF9jb2xsZWN0LmNv
bGxlY3RfcHJpbWFyeV9kYXRhc2V0cyggc2VsZiwgb3V0cHV0LCBqb2JfPQp3b3JraW5nX2RpcmVj
dG9yeSwgaW5wdXRfZXh0ICkKPTIwCisgICAgZGVmIGNvbGxlY3RfZHluYW1pY19jb2xsZWN0aW9u
cyggc2VsZiwgb3V0cHV0LCAqKmt3ZHMgKToKKyAgICAgICAgIiIiIEZpbmQgZmlsZXMgY29ycmVz
cG9uZGluZyB0byBkeW5hbWljYWxseSBzdHJ1Y3R1cmVkIGNvbGxlY3Rpb25zLgorICAgICAgICAi
IiIKKyAgICAgICAgcmV0dXJuIG91dHB1dF9jb2xsZWN0LmNvbGxlY3RfZHluYW1pY19jb2xsZWN0
aW9ucyggc2VsZiwgb3V0cHV0LCAqPQoqa3dkcyApCisKICAgICBkZWYgdG9fZGljdCggc2VsZiwg
dHJhbnMsIGxpbmtfZGV0YWlscz0zREZhbHNlLCBpb19kZXRhaWxzPTNERmFsc2UgKToKICAgICAg
ICAgIiIiIFJldHVybnMgZGljdCBvZiB0b29sLiAiIiIKPTIwCkBAIC0yNzU2LDYgKzI5MjYsMTUg
QEAKICAgICAgICAgcmV0dXJuIGlucHV0cwo9MjAKPTIwCitjbGFzcyBUZXN0Q29sbGVjdGlvbk91
dHB1dERlZiggb2JqZWN0ICk6CisKKyAgICBkZWYgX19pbml0X18oIHNlbGYsIG5hbWUsIGF0dHJp
YiwgZWxlbWVudF90ZXN0cyApOgorICAgICAgICBzZWxmLm5hbWUgPTNEIG5hbWUKKyAgICAgICAg
c2VsZi5jb2xsZWN0aW9uX3R5cGUgPTNEIGF0dHJpYi5nZXQoICJ0eXBlIiwgTm9uZSApCisgICAg
ICAgIHNlbGYuYXR0cmliID0zRCBhdHRyaWIKKyAgICAgICAgc2VsZi5lbGVtZW50X3Rlc3RzID0z
RCBlbGVtZW50X3Rlc3RzCisKKwogZGVmIGpzb25fZml4KCB2YWwgKToKICAgICBpZiBpc2luc3Rh
bmNlKCB2YWwsIGxpc3QgKToKICAgICAgICAgcmV0dXJuIFsganNvbl9maXgoIHYgKSBmb3IgdiBp
biB2YWwgXQoKZGlmZiAtciAyYTY2MzUxMDM1M2JhODI2OGRlZmYwNjNiYTUwZDI3ZGUxODBiODg5
IC1yIGQ4MzY4NzE5NGNjZjg0OWYwM2MxNjY0PQo3OTA3MWJkMzNhMWI0NDdmNCBsaWIvZ2FsYXh5
L3Rvb2xzL2FjdGlvbnMvX19pbml0X18ucHkKLS0tIGEvbGliL2dhbGF4eS90b29scy9hY3Rpb25z
L19faW5pdF9fLnB5CisrKyBiL2xpYi9nYWxheHkvdG9vbHMvYWN0aW9ucy9fX2luaXRfXy5weQpA
QCAtMTQ5LDcgKzE0OSw3IEBACiAgICAgICAgIHRvb2wudmlzaXRfaW5wdXRzKCBwYXJhbV92YWx1
ZXMsIHZpc2l0b3IgKQogICAgICAgICByZXR1cm4gaW5wdXRfZGF0YXNldF9jb2xsZWN0aW9ucwo9
MjAKLSAgICBkZWYgZXhlY3V0ZShzZWxmLCB0b29sLCB0cmFucywgaW5jb21pbmc9M0R7fSwgcmV0
dXJuX2pvYj0zREZhbHNlLCBzZXRfPQpvdXRwdXRfaGlkPTNEVHJ1ZSwgc2V0X291dHB1dF9oaXN0
b3J5PTNEVHJ1ZSwgaGlzdG9yeT0zRE5vbmUsIGpvYl9wYXJhbXM9M0Q9Ck5vbmUsIHJlcnVuX3Jl
bWFwX2pvYl9pZD0zRE5vbmUpOgorICAgIGRlZiBleGVjdXRlKHNlbGYsIHRvb2wsIHRyYW5zLCBp
bmNvbWluZz0zRHt9LCByZXR1cm5fam9iPTNERmFsc2UsIHNldF89Cm91dHB1dF9oaWQ9M0RUcnVl
LCBzZXRfb3V0cHV0X2hpc3Rvcnk9M0RUcnVlLCBoaXN0b3J5PTNETm9uZSwgam9iX3BhcmFtcz0z
RD0KTm9uZSwgcmVydW5fcmVtYXBfam9iX2lkPTNETm9uZSwgbWFwcGluZ19vdmVyX2NvbGxlY3Rp
b249M0RGYWxzZSk6CiAgICAgICAgICIiIgogICAgICAgICBFeGVjdXRlcyBhIHRvb2wsIGNyZWF0
aW5nIGpvYiBhbmQgdG9vbCBvdXRwdXRzLCBhc3NvY2lhdGluZyB0aGVtLCA9CmFuZAogICAgICAg
ICBzdWJtaXR0aW5nIHRoZSBqb2IgdG8gdGhlIGpvYiBxdWV1ZS4gSWYgaGlzdG9yeSBpcyBub3Qg
c3BlY2lmaWVkLCA9CnVzZQpAQCAtMTYwLDYgKzE2MCw4IEBACiAgICAgICAgICAgICBoaXN0b3J5
ID0zRCB0b29sLmdldF9kZWZhdWx0X2hpc3RvcnlfYnlfdHJhbnMoIHRyYW5zLCBjcmVhdGU9Cj0z
RFRydWUgKQo9MjAKICAgICAgICAgb3V0X2RhdGEgPTNEIG9kaWN0KCkKKyAgICAgICAgb3V0X2Nv
bGxlY3Rpb25zID0zRCB7fQorICAgICAgICBvdXRfY29sbGVjdGlvbl9pbnN0YW5jZXMgPTNEIHt9
CiAgICAgICAgICMgVHJhY2sgaW5wdXQgZGF0YXNldCBjb2xsZWN0aW9ucyAtIGJ1dCByZXBsYWNl
IHdpdGggc2ltcGx5IGxpc3RzID0Kc28gY29sbGVjdAogICAgICAgICAjIGlucHV0IGRhdGFzZXRz
IGNhbiBwcm9jZXNzIHRoZXNlIG5vcm1hbGx5LgogICAgICAgICBpbnBfZGF0YXNldF9jb2xsZWN0
aW9ucyA9M0Qgc2VsZi5jb2xsZWN0X2lucHV0X2RhdGFzZXRfY29sbGVjdGlvbnM9CiggdG9vbCwg
aW5jb21pbmcgKQpAQCAtMjQzLDggKzI0NSwxNiBAQAogICAgICAgICAgICAgIyBUaGlzIG1heSBu
b3QgYmUgbmVjY2VzYXJ5IHdpdGggdGhlIG5ldyBwYXJlbnQvY2hpbGQgYXNzb2NpYXQ9CmlvbnMK
ICAgICAgICAgICAgIGRhdGEuZGVzaWduYXRpb24gPTNEIG5hbWUKICAgICAgICAgICAgICMgQ29w
eSBtZXRhZGF0YSBmcm9tIG9uZSBvZiB0aGUgaW5wdXRzIGlmIHJlcXVlc3RlZC4KLSAgICAgICAg
ICAgIGlmIG91dHB1dC5tZXRhZGF0YV9zb3VyY2U6Ci0gICAgICAgICAgICAgICAgZGF0YS5pbml0
X21ldGEoIGNvcHlfZnJvbT0zRGlucF9kYXRhW291dHB1dC5tZXRhZGF0YV9zb3VyYz0KZV0gKQor
CisgICAgICAgICAgICAjIG1ldGFkYXRhIHNvdXJjZSBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIHJl
ZmVyZW5jaW5nIGFuIGlucHV0CisgICAgICAgICAgICAjIG9yIGFuIGFjdHVhbCBvYmplY3QgdG8g
Y29weS4KKyAgICAgICAgICAgIG1ldGFkYXRhX3NvdXJjZSA9M0Qgb3V0cHV0Lm1ldGFkYXRhX3Nv
dXJjZQorICAgICAgICAgICAgaWYgbWV0YWRhdGFfc291cmNlOgorICAgICAgICAgICAgICAgIGlm
IGlzaW5zdGFuY2UoIG1ldGFkYXRhX3NvdXJjZSwgYmFzZXN0cmluZyApOgorICAgICAgICAgICAg
ICAgICAgICBtZXRhZGF0YV9zb3VyY2UgPTNEIGlucF9kYXRhW21ldGFkYXRhX3NvdXJjZV0KKwor
ICAgICAgICAgICAgaWYgbWV0YWRhdGFfc291cmNlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
ICAgIGRhdGEuaW5pdF9tZXRhKCBjb3B5X2Zyb209M0RtZXRhZGF0YV9zb3VyY2UgKQogICAgICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBkYXRhLmluaXRfbWV0YSgpCiAgICAgICAgICAg
ICAjIFRha2UgZGJrZXkgZnJvbSBMQVNUIGlucHV0CkBAIC0yNjQsMTAgKzI3NCw1OSBAQAogICAg
ICAgICAgICAgICAgIG91dHB1dC5hY3Rpb25zLmFwcGx5X2FjdGlvbiggZGF0YSwgb3V0cHV0X2Fj
dGlvbl9wYXJhbXMgKQogICAgICAgICAgICAgIyBTdG9yZSBhbGwgY2hhbmdlcyB0byBkYXRhYmFz
ZQogICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCisgICAgICAgICAgICByZXR1
cm4gZGF0YQo9MjAKICAgICAgICAgZm9yIG5hbWUsIG91dHB1dCBpbiB0b29sLm91dHB1dHMuaXRl
bXMoKToKICAgICAgICAgICAgIGlmIG5vdCBmaWx0ZXJfb3V0cHV0KG91dHB1dCwgaW5jb21pbmcp
OgotICAgICAgICAgICAgICAgIGhhbmRsZV9vdXRwdXQoIG5hbWUsIG91dHB1dCApCisgICAgICAg
ICAgICAgICAgaWYgb3V0cHV0LmNvbGxlY3Rpb246CisgICAgICAgICAgICAgICAgICAgIGNvbGxl
Y3Rpb25zX21hbmFnZXIgPTNEIHRyYW5zLmFwcC5kYXRhc2V0X2NvbGxlY3Rpb25zXz0Kc2Vydmlj
ZQorCisgICAgICAgICAgICAgICAgICAgICMgQXMgZmFyIGFzIEkgY2FuIHRlbGwgLSB0aGlzIGlz
IGFsd2F5cyB0cnVlIC0gYnV0IGp1cz0KdCB2ZXJpZnkKKyAgICAgICAgICAgICAgICAgICAgYXNz
ZXJ0IHNldF9vdXRwdXRfaGlzdG9yeSwgIkNhbm5vdCBjcmVhdGUgZGF0YXNldCBjb2xsPQplY3Rp
b24gZm9yIHRoaXMga2luZCBvZiB0b29sLiIKKworICAgICAgICAgICAgICAgICAgICBlbGVtZW50
cyA9M0Qgb2RpY3QoKQorICAgICAgICAgICAgICAgICAgICBpbnB1dF9jb2xsZWN0aW9ucyA9M0Qg
ZGljdCggWyAoaywgdlswXSkgZm9yIGssIHYgaW4gaW49CnBfZGF0YXNldF9jb2xsZWN0aW9ucy5p
dGVyaXRlbXMoKSBdICkKKyAgICAgICAgICAgICAgICAgICAga25vd25fb3V0cHV0cyA9M0Qgb3V0
cHV0Lmtub3duX291dHB1dHMoIGlucHV0X2NvbGxlY3RpPQpvbnMsIGNvbGxlY3Rpb25zX21hbmFn
ZXIudHlwZV9yZWdpc3RyeSApCisgICAgICAgICAgICAgICAgICAgICMgSnVzdCB0byBlY2hvIFRP
RE8gZWxzZXdoZXJlIC0gdGhpcyBzaG91bGQgYmUgcmVzdHJ1Yz0KdHVyZWQgdG8gYWxsb3cKKyAg
ICAgICAgICAgICAgICAgICAgIyBuZXN0ZWQgY29sbGVjdGlvbnMuCisgICAgICAgICAgICAgICAg
ICAgIGZvciBvdXRwdXRfcGFydF9kZWYgaW4ga25vd25fb3V0cHV0czoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGVmZmVjdGl2ZV9vdXRwdXRfbmFtZSA9M0Qgb3V0cHV0X3BhcnRfZGVmLmVmZmVj
dGl2PQplX291dHB1dF9uYW1lCisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50ID0zRCBo
YW5kbGVfb3V0cHV0KCBlZmZlY3RpdmVfb3V0cHV0X25hbWUsID0Kb3V0cHV0X3BhcnRfZGVmLm91
dHB1dF9kZWYgKQorICAgICAgICAgICAgICAgICAgICAgICAgIyBGb2xsb3dpbmcgaGFjayBjYXVz
ZXMgZGF0YXNldCB0byBubyBiZSBhZGRlZCB0byA9Cmhpc3RvcnkuLi4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNoaWxkX2RhdGFzZXRfbmFtZXMuYWRkKCBlZmZlY3RpdmVfb3V0cHV0X25hbWUg
KQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZXRfb3V0cHV0X2hpc3Rvcnk6CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGlzdG9yeS5hZGRfZGF0YXNldCggZWxlbWVudCwgc2V0
X2hpZD0zRHNldF9vdT0KdHB1dF9oaWQgKQorICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnMu
c2Ffc2Vzc2lvbi5hZGQoIGVsZW1lbnQgKQorICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnMu
c2Ffc2Vzc2lvbi5mbHVzaCgpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzWyBv
dXRwdXRfcGFydF9kZWYuZWxlbWVudF9pZGVudGlmaWVyIF0gPTNEPQogZWxlbWVudAorCisgICAg
ICAgICAgICAgICAgICAgIGlmIG91dHB1dC5keW5hbWljX3N0cnVjdHVyZToKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFzc2VydCBub3QgZWxlbWVudHMgICMga25vd25fb3V0cHV0cyBtdXN0IGhh
dmUgYmVlPQpuIGVtcHR5CisgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cyA9M0QgY29s
bGVjdGlvbnNfbWFuYWdlci5FTEVNRU5UU19VTklOSVRJQT0KTElaRUQKKworICAgICAgICAgICAg
ICAgICAgICBpZiBtYXBwaW5nX292ZXJfY29sbGVjdGlvbjoKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRjID0zRCBjb2xsZWN0aW9uc19tYW5hZ2VyLmNyZWF0ZV9kYXRhc2V0X2NvbGxlY3RpPQpv
bigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFucywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb2xsZWN0aW9uX3R5cGU9M0RvdXRwdXQuc3RydWN0dXJlLmNvbGxlY3Rpb25f
PQp0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzPTNEZWxlbWVudHMs
CisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRf
Y29sbGVjdGlvbnNbIG5hbWUgXSA9M0QgZGMKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGhkY2FfbmFtZSA9M0Qgc2VsZi5nZXRfb3V0cHV0X25hbWUo
IG91dHB1dCwgTm9uZSwgPQp0b29sLCBvbl90ZXh0LCB0cmFucywgaW5jb21pbmcsIGhpc3Rvcnks
IHdyYXBwZWRfcGFyYW1zLnBhcmFtcywgam9iX3BhcmFtcyApCisgICAgICAgICAgICAgICAgICAg
ICAgICBoZGNhID0zRCBjb2xsZWN0aW9uc19tYW5hZ2VyLmNyZWF0ZSgKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0cmFucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaXN0b3J5
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9M0RoZGNhX25hbWUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbl90eXBlPTNEb3V0cHV0LnN0cnVjdHVyZS5j
b2xsZWN0aW9uXz0KdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50cz0z
RGVsZW1lbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAg
ICAgICAgIyBuYW1lIGhlcmUgaXMgbmFtZSBvZiB0aGUgb3V0cHV0IGVsZW1lbnQgLSBub3QgbmE9
Cm1lCisgICAgICAgICAgICAgICAgICAgICAgICAjIG9mIHRoZSBoZGNhLgorICAgICAgICAgICAg
ICAgICAgICAgICAgb3V0X2NvbGxlY3Rpb25faW5zdGFuY2VzWyBuYW1lIF0gPTNEIGhkY2EKKyAg
ICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBoYW5kbGVfb3V0cHV0KCBu
YW1lLCBvdXRwdXQgKQogICAgICAgICAjIEFkZCBhbGwgdGhlIHRvcC1sZXZlbCAobm9uLWNoaWxk
KSBkYXRhc2V0cyB0byB0aGUgaGlzdG9yeSB1bmxlc3M9CiBvdGhlcndpc2Ugc3BlY2lmaWVkCiAg
ICAgICAgIGZvciBuYW1lIGluIG91dF9kYXRhLmtleXMoKToKICAgICAgICAgICAgIGlmIG5hbWUg
bm90IGluIGNoaWxkX2RhdGFzZXRfbmFtZXMgYW5kIG5hbWUgbm90IGluIGluY29taW5nOiAgPQoj
IGRvbid0IGFkZCBjaGlsZHJlbjsgb3IgYWxyZWFkeSBleGlzdGluZyBkYXRhc2V0cywgaS5lLiBh
c3luYyBjcmVhdGVkCkBAIC0zMjIsNiArMzgxLDEwIEBACiAgICAgICAgICAgICAgICAgam9iLmFk
ZF9pbnB1dF9kYXRhc2V0KCBuYW1lLCBOb25lICkKICAgICAgICAgZm9yIG5hbWUsIGRhdGFzZXQg
aW4gb3V0X2RhdGEuaXRlcml0ZW1zKCk6CiAgICAgICAgICAgICBqb2IuYWRkX291dHB1dF9kYXRh
c2V0KCBuYW1lLCBkYXRhc2V0ICkKKyAgICAgICAgZm9yIG5hbWUsIGRhdGFzZXRfY29sbGVjdGlv
biBpbiBvdXRfY29sbGVjdGlvbnMuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBqb2IuYWRkX2lt
cGxpY2l0X291dHB1dF9kYXRhc2V0X2NvbGxlY3Rpb24oIG5hbWUsIGRhdGFzZXRfY29sbD0KZWN0
aW9uICkKKyAgICAgICAgZm9yIG5hbWUsIGRhdGFzZXRfY29sbGVjdGlvbl9pbnN0YW5jZSBpbiBv
dXRfY29sbGVjdGlvbl9pbnN0YW5jZXMuPQppdGVyaXRlbXMoKToKKyAgICAgICAgICAgIGpvYi5h
ZGRfb3V0cHV0X2RhdGFzZXRfY29sbGVjdGlvbiggbmFtZSwgZGF0YXNldF9jb2xsZWN0aW9uX2lu
PQpzdGFuY2UgKQogICAgICAgICBqb2Iub2JqZWN0X3N0b3JlX2lkID0zRCBvYmplY3Rfc3RvcmVf
cG9wdWxhdG9yLm9iamVjdF9zdG9yZV9pZAogICAgICAgICBpZiBqb2JfcGFyYW1zOgogICAgICAg
ICAgICAgam9iLnBhcmFtcyA9M0QgZHVtcHMoIGpvYl9wYXJhbXMgKQoKZGlmZiAtciAyYTY2MzUx
MDM1M2JhODI2OGRlZmYwNjNiYTUwZDI3ZGUxODBiODg5IC1yIGQ4MzY4NzE5NGNjZjg0OWYwM2Mx
NjY0PQo3OTA3MWJkMzNhMWI0NDdmNCBsaWIvZ2FsYXh5L3Rvb2xzL2V2YWx1YXRpb24ucHkKLS0t
IGEvbGliL2dhbGF4eS90b29scy9ldmFsdWF0aW9uLnB5CisrKyBiL2xpYi9nYWxheHkvdG9vbHMv
ZXZhbHVhdGlvbi5weQpAQCAtNTksNiArNTksOSBAQAogICAgICAgICBpbnBfZGF0YS51cGRhdGUo
IFsgKCBkYS5uYW1lLCBkYS5kYXRhc2V0ICkgZm9yIGRhIGluIGpvYi5pbnB1dF9saWI9CnJhcnlf
ZGF0YXNldHMgXSApCiAgICAgICAgIG91dF9kYXRhLnVwZGF0ZSggWyAoIGRhLm5hbWUsIGRhLmRh
dGFzZXQgKSBmb3IgZGEgaW4gam9iLm91dHB1dF9saT0KYnJhcnlfZGF0YXNldHMgXSApCj0yMAor
ICAgICAgICBvdXRfY29sbGVjdGlvbnMgPTNEIGRpY3QoIFsgKCBvYmoubmFtZSwgb2JqLmRhdGFz
ZXRfY29sbGVjdGlvbl9pbnM9CnRhbmNlICkgZm9yIG9iaiBpbiBqb2Iub3V0cHV0X2RhdGFzZXRf
Y29sbGVjdGlvbl9pbnN0YW5jZXMgXSApCisgICAgICAgIG91dF9jb2xsZWN0aW9ucy51cGRhdGUo
IFsgKCBvYmoubmFtZSwgb2JqLmRhdGFzZXRfY29sbGVjdGlvbiApIGZvcj0KIG9iaiBpbiBqb2Iu
b3V0cHV0X2RhdGFzZXRfY29sbGVjdGlvbnMgXSApCisKICAgICAgICAgaWYgZ2V0X3NwZWNpYWw6
Cj0yMAogICAgICAgICAgICAgIyBTZXQgdXAgb3V0cHV0IGRhdGFzZXQgYXNzb2NpYXRpb24gZm9y
IGV4cG9ydCBoaXN0b3J5IGpvYnMuIEI9CmVjYXVzZSBqb2IKQEAgLTg0LDYgKzg3LDcgQEAKICAg
ICAgICAgICAgIGluY29taW5nLAogICAgICAgICAgICAgaW5wX2RhdGEsCiAgICAgICAgICAgICBv
dXRfZGF0YSwKKyAgICAgICAgICAgIG91dHB1dF9jb2xsZWN0aW9ucz0zRG91dF9jb2xsZWN0aW9u
cywKICAgICAgICAgICAgIG91dHB1dF9wYXRocz0zRGNvbXB1dGVfZW52aXJvbm1lbnQub3V0cHV0
X3BhdGhzKCksCiAgICAgICAgICAgICBqb2Jfd29ya2luZ19kaXJlY3Rvcnk9M0Rjb21wdXRlX2Vu
dmlyb25tZW50LndvcmtpbmdfZGlyZWN0b3J5KD0KKSwKICAgICAgICAgICAgIGlucHV0X3BhdGhz
PTNEY29tcHV0ZV9lbnZpcm9ubWVudC5pbnB1dF9wYXRocygpCkBAIC05OCw3ICsxMDIsNyBAQAo9
MjAKICAgICAgICAgc2VsZi5wYXJhbV9kaWN0ID0zRCBwYXJhbV9kaWN0Cj0yMAotICAgIGRlZiBi
dWlsZF9wYXJhbV9kaWN0KCBzZWxmLCBpbmNvbWluZywgaW5wdXRfZGF0YXNldHMsIG91dHB1dF9k
YXRhc2V0cyw9CiBvdXRwdXRfcGF0aHMsIGpvYl93b3JraW5nX2RpcmVjdG9yeSwgaW5wdXRfcGF0
aHM9M0RbXSApOgorICAgIGRlZiBidWlsZF9wYXJhbV9kaWN0KCBzZWxmLCBpbmNvbWluZywgaW5w
dXRfZGF0YXNldHMsIG91dHB1dF9kYXRhc2V0cyw9CiBvdXRwdXRfY29sbGVjdGlvbnMsIG91dHB1
dF9wYXRocywgam9iX3dvcmtpbmdfZGlyZWN0b3J5LCBpbnB1dF9wYXRocz0zRFtdID0KKToKICAg
ICAgICAgIiIiCiAgICAgICAgIEJ1aWxkIHRoZSBkaWN0aW9uYXJ5IG9mIHBhcmFtZXRlcnMgZm9y
IHN1YnN0aXR1dGluZyBpbnRvIHRoZSBjb21tYT0KbmQKICAgICAgICAgbGluZS4gRWFjaCB2YWx1
ZSBpcyB3cmFwcGVkIGluIGEgYElucHV0VmFsdWVXcmFwcGVyYCwgd2hpY2ggYWxsb3dzCkBAIC0x
MTUsNiArMTE5LDcgQEAKICAgICAgICAgc2VsZi5fX3BvcHVsYXRlX3dyYXBwZXJzKHBhcmFtX2Rp
Y3QsIGlucHV0X2RhdGFzZXRfcGF0aHMpCiAgICAgICAgIHNlbGYuX19wb3B1bGF0ZV9pbnB1dF9k
YXRhc2V0X3dyYXBwZXJzKHBhcmFtX2RpY3QsIGlucHV0X2RhdGFzZXRzLD0KIGlucHV0X2RhdGFz
ZXRfcGF0aHMpCiAgICAgICAgIHNlbGYuX19wb3B1bGF0ZV9vdXRwdXRfZGF0YXNldF93cmFwcGVy
cyhwYXJhbV9kaWN0LCBvdXRwdXRfZGF0YXNldD0Kcywgb3V0cHV0X3BhdGhzLCBqb2Jfd29ya2lu
Z19kaXJlY3RvcnkpCisgICAgICAgIHNlbGYuX19wb3B1bGF0ZV9vdXRwdXRfY29sbGVjdGlvbl93
cmFwcGVycyhwYXJhbV9kaWN0LCBvdXRwdXRfY29sbD0KZWN0aW9ucywgb3V0cHV0X3BhdGhzLCBq
b2Jfd29ya2luZ19kaXJlY3RvcnkpCiAgICAgICAgIHNlbGYuX19wb3B1bGF0ZV91bnN0cnVjdHVy
ZWRfcGF0aF9yZXdyaXRlcyhwYXJhbV9kaWN0KQogICAgICAgICAjIENhbGwgcGFyYW0gZGljdCBz
YW5pdGl6ZXIsIGJlZm9yZSBub24tam9iIHBhcmFtcyBhcmUgYWRkZWQsIGFzIHc9CmUgZG9uJ3Qg
d2FudCB0byBzYW5pdGl6ZSBmaWxlbmFtZXMuCiAgICAgICAgIHNlbGYuX19zYW5pdGl6ZV9wYXJh
bV9kaWN0KCBwYXJhbV9kaWN0ICkKQEAgLTI2OSw2ICsyNzQsMzUgQEAKICAgICAgICAgICAgICAg
ICBmb3IgY2hpbGQgaW4gZGF0YS5jaGlsZHJlbjoKICAgICAgICAgICAgICAgICAgICAgcGFyYW1f
ZGljdFsgIl9DSElMRF9fXyVzX19fJXMiICUgKCBuYW1lLCBjaGlsZC5kZXNpZ25hPQp0aW9uICkg
XSA9M0QgRGF0YXNldEZpbGVuYW1lV3JhcHBlciggY2hpbGQgKQo9MjAKKyAgICBkZWYgX19wb3B1
bGF0ZV9vdXRwdXRfY29sbGVjdGlvbl93cmFwcGVycyhzZWxmLCBwYXJhbV9kaWN0LCBvdXRwdXRf
Y29sPQpsZWN0aW9ucywgb3V0cHV0X3BhdGhzLCBqb2Jfd29ya2luZ19kaXJlY3RvcnkpOgorICAg
ICAgICBvdXRwdXRfZGF0YXNldF9wYXRocyA9M0QgZGF0YXNldF9wYXRoX3Jld3JpdGVzKCBvdXRw
dXRfcGF0aHMgKQorICAgICAgICB0b29sID0zRCBzZWxmLnRvb2wKKyAgICAgICAgZm9yIG5hbWUs
IG91dF9jb2xsZWN0aW9uIGluIG91dHB1dF9jb2xsZWN0aW9ucy5pdGVtcygpOgorICAgICAgICAg
ICAgaWYgbmFtZSBub3QgaW4gdG9vbC5vdXRwdXRfY29sbGVjdGlvbnM6CisgICAgICAgICAgICAg
ICAgY29udGludWUKKyAgICAgICAgICAgICAgICAjbWVzc2FnZV90ZW1wbGF0ZSA9M0QgIk5hbWUg
WyVzXSBub3QgZm91bmQgaW4gdG9vbC5vdXRwdXRfPQpjb2xsZWN0aW9ucyAlcyIKKyAgICAgICAg
ICAgICAgICAjbWVzc2FnZSA9M0QgbWVzc2FnZV90ZW1wbGF0ZSAlICggbmFtZSwgdG9vbC5vdXRw
dXRfY29sbGVjPQp0aW9ucyApCisgICAgICAgICAgICAgICAgI3JhaXNlIEFzc2VydGlvbkVycm9y
KCBtZXNzYWdlICkKKworICAgICAgICAgICAgd3JhcHBlcl9rd2RzID0zRCBkaWN0KAorICAgICAg
ICAgICAgICAgIGRhdGF0eXBlc19yZWdpc3RyeT0zRHNlbGYuYXBwLmRhdGF0eXBlc19yZWdpc3Ry
eSwKKyAgICAgICAgICAgICAgICBkYXRhc2V0X3BhdGhzPTNEb3V0cHV0X2RhdGFzZXRfcGF0aHMs
CisgICAgICAgICAgICAgICAgdG9vbD0zRHRvb2wsCisgICAgICAgICAgICAgICAgbmFtZT0zRG5h
bWUKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHdyYXBwZXIgPTNEIERhdGFzZXRDb2xsZWN0
aW9uV3JhcHBlcigKKyAgICAgICAgICAgICAgICBvdXRfY29sbGVjdGlvbiwKKyAgICAgICAgICAg
ICAgICAqKndyYXBwZXJfa3dkcworICAgICAgICAgICAgKQorICAgICAgICAgICAgcGFyYW1fZGlj
dFsgbmFtZSBdID0zRCB3cmFwcGVyCisgICAgICAgICAgICAjIFRPRE86IEhhbmRsZSBuZXN0ZWQg
Y29sbGVjdGlvbnMuLi4KKyAgICAgICAgICAgIG91dHB1dF9kZWYgPTNEIHRvb2wub3V0cHV0X2Nv
bGxlY3Rpb25zWyBuYW1lIF0KKyAgICAgICAgICAgIGZvciBlbGVtZW50X2lkZW50aWZpZXIsIG91
dHB1dF9kZWYgaW4gb3V0cHV0X2RlZi5vdXRwdXRzLml0ZW1zPQooKToKKyAgICAgICAgICAgICAg
ICBpZiBub3Qgb3V0cHV0X2RlZi5pbXBsaWNpdDoKKyAgICAgICAgICAgICAgICAgICAgZGF0YXNl
dF93cmFwcGVyID0zRCB3cmFwcGVyWyBlbGVtZW50X2lkZW50aWZpZXIgXQorICAgICAgICAgICAg
ICAgICAgICBwYXJhbV9kaWN0WyBvdXRwdXRfZGVmLm5hbWUgXSA9M0QgZGF0YXNldF93cmFwcGVy
CisgICAgICAgICAgICAgICAgICAgIGxvZy5pbmZvKCJVcGRhdGluZyBwYXJhbV9kaWN0IGZvciAl
cyB3aXRoICVzIiAlIChvdXRwdT0KdF9kZWYubmFtZSwgZGF0YXNldF93cmFwcGVyKSApCisKICAg
ICBkZWYgX19wb3B1bGF0ZV9vdXRwdXRfZGF0YXNldF93cmFwcGVycyhzZWxmLCBwYXJhbV9kaWN0
LCBvdXRwdXRfZGF0YXNlPQp0cywgb3V0cHV0X3BhdGhzLCBqb2Jfd29ya2luZ19kaXJlY3Rvcnkp
OgogICAgICAgICBvdXRwdXRfZGF0YXNldF9wYXRocyA9M0QgZGF0YXNldF9wYXRoX3Jld3JpdGVz
KCBvdXRwdXRfcGF0aHMgKQogICAgICAgICBmb3IgbmFtZSwgaGRhIGluIG91dHB1dF9kYXRhc2V0
cy5pdGVtcygpOgoKZGlmZiAtciAyYTY2MzUxMDM1M2JhODI2OGRlZmYwNjNiYTUwZDI3ZGUxODBi
ODg5IC1yIGQ4MzY4NzE5NGNjZjg0OWYwM2MxNjY0PQo3OTA3MWJkMzNhMWI0NDdmNCBsaWIvZ2Fs
YXh5L3Rvb2xzL2V4ZWN1dGUucHkKLS0tIGEvbGliL2dhbGF4eS90b29scy9leGVjdXRlLnB5Cisr
KyBiL2xpYi9nYWxheHkvdG9vbHMvZXhlY3V0ZS5weQpAQCAtNCw2ICs0LDcgQEAKIGNvbGxlY3Rp
b25zIGZyb20gbWF0Y2hlZCBjb2xsZWN0aW9ucy4KICIiIgogaW1wb3J0IGNvbGxlY3Rpb25zCitp
bXBvcnQgZ2FsYXh5LnRvb2xzCiBmcm9tIGdhbGF4eS50b29scy5hY3Rpb25zIGltcG9ydCBvbl90
ZXh0X2Zvcl9uYW1lcwo9MjAKIGltcG9ydCBsb2dnaW5nCkBAIC0yMyw3ICsyNCw3IEBACiAgICAg
ICAgICAgICAjIE9ubHkgd29ya2Zsb3cgaW52b2NhdGlvbiBjb2RlIGdldHMgdG8gc2V0IHRoaXMs
IGlnbm9yZSB1c2VyID0Kc3VwcGxpZWQKICAgICAgICAgICAgICMgdmFsdWVzIG9yIHJlcnVuIHBh
cmFtZXRlcnMuCiAgICAgICAgICAgICBkZWwgcGFyYW1zWyAnX193b3JrZmxvd19pbnZvY2F0aW9u
X3V1aWRfXycgXQotICAgICAgICBqb2IsIHJlc3VsdCA9M0QgdG9vbC5oYW5kbGVfc2luZ2xlX2V4
ZWN1dGlvbiggdHJhbnMsIHJlcnVuX3JlbWFwX2o9Cm9iX2lkLCBwYXJhbXMsIGhpc3RvcnkgKQor
ICAgICAgICBqb2IsIHJlc3VsdCA9M0QgdG9vbC5oYW5kbGVfc2luZ2xlX2V4ZWN1dGlvbiggdHJh
bnMsIHJlcnVuX3JlbWFwX2o9Cm9iX2lkLCBwYXJhbXMsIGhpc3RvcnksIGNvbGxlY3Rpb25faW5m
byApCiAgICAgICAgIGlmIGpvYjoKICAgICAgICAgICAgIGV4ZWN1dGlvbl90cmFja2VyLnJlY29y
ZF9zdWNjZXNzKCBqb2IsIHJlc3VsdCApCiAgICAgICAgIGVsc2U6CkBAIC00Niw2ICs0Nyw3IEBA
CiAgICAgICAgIHNlbGYuZmFpbGVkX2pvYnMgPTNEIDAKICAgICAgICAgc2VsZi5leGVjdXRpb25f
ZXJyb3JzID0zRCBbXQogICAgICAgICBzZWxmLm91dHB1dF9kYXRhc2V0cyA9M0QgW10KKyAgICAg
ICAgc2VsZi5vdXRwdXRfY29sbGVjdGlvbnMgPTNEIFtdCiAgICAgICAgIHNlbGYub3V0cHV0c19i
eV9vdXRwdXRfbmFtZSA9M0QgY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QobGlzdCkKICAgICAgICAg
c2VsZi5pbXBsaWNpdF9jb2xsZWN0aW9ucyA9M0Qge30KPTIwCkBAIC01Myw3ICs1NSwxNSBAQAog
ICAgICAgICBzZWxmLnN1Y2Nlc3NmdWxfam9icy5hcHBlbmQoIGpvYiApCiAgICAgICAgIHNlbGYu
b3V0cHV0X2RhdGFzZXRzLmV4dGVuZCggb3V0cHV0cyApCiAgICAgICAgIGZvciBvdXRwdXRfbmFt
ZSwgb3V0cHV0X2RhdGFzZXQgaW4gb3V0cHV0czoKKyAgICAgICAgICAgIGlmIGdhbGF4eS50b29s
cy5Ub29sT3V0cHV0Q29sbGVjdGlvblBhcnQuaXNfbmFtZWRfY29sbGVjdGlvbl9wPQphcnRfbmFt
ZSggb3V0cHV0X25hbWUgKToKKyAgICAgICAgICAgICAgICAjIFNraXAga25vd24gY29sbGVjdGlv
biBvdXRwdXRzLCB0aGVzZSB3aWxsIGJlIGNvdmVyZWQgYnkKKyAgICAgICAgICAgICAgICAjIG91
dHB1dCBjb2xsZWN0aW9ucy4KKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAg
c2VsZi5vdXRwdXRzX2J5X291dHB1dF9uYW1lWyBvdXRwdXRfbmFtZSBdLmFwcGVuZCggb3V0cHV0
X2RhdGE9CnNldCApCisgICAgICAgIGZvciBqb2Jfb3V0cHV0IGluIGpvYi5vdXRwdXRfZGF0YXNl
dF9jb2xsZWN0aW9uczoKKyAgICAgICAgICAgIHNlbGYub3V0cHV0c19ieV9vdXRwdXRfbmFtZVsg
am9iX291dHB1dC5uYW1lIF0uYXBwZW5kKCBqb2Jfb3V0PQpwdXQuZGF0YXNldF9jb2xsZWN0aW9u
ICkKKyAgICAgICAgZm9yIGpvYl9vdXRwdXQgaW4gam9iLm91dHB1dF9kYXRhc2V0X2NvbGxlY3Rp
b25faW5zdGFuY2VzOgorICAgICAgICAgICAgc2VsZi5vdXRwdXRfY29sbGVjdGlvbnMuYXBwZW5k
KCAoIGpvYl9vdXRwdXQubmFtZSwgam9iX291dHB1dC49CmRhdGFzZXRfY29sbGVjdGlvbl9pbnN0
YW5jZSApICkKPTIwCiAgICAgZGVmIHJlY29yZF9lcnJvciggc2VsZiwgZXJyb3IgKToKICAgICAg
ICAgc2VsZi5mYWlsZWRfam9icyArPTNEIDEKQEAgLTEyMCw2ICsxMzAsMTEgQEAKICAgICAgICAg
ICAgICAgICBjb2xsZWN0aW9uX3R5cGU9M0Rjb2xsZWN0aW9uX3R5cGUsCiAgICAgICAgICAgICAg
ICAgaW1wbGljaXRfY29sbGVjdGlvbl9pbmZvPTNEaW1wbGljaXRfY29sbGVjdGlvbl9pbmZvLAog
ICAgICAgICAgICAgKQorICAgICAgICAgICAgZm9yIGpvYiBpbiBzZWxmLnN1Y2Nlc3NmdWxfam9i
czoKKyAgICAgICAgICAgICAgICAjIFRPRE86IFRoaW5rIHRocm91Z2ggdGhpcywgbWF5IG9ubHkg
d2FudCB0aGlzIGZvciBvdXRwdXQKKyAgICAgICAgICAgICAgICAjIGNvbGxlY3Rpb25zIC0gb3Ig
d2UgbWF5IGJlIGFscmVhZHkgcmVjb3JkaW5nIGRhdGEgaW4gc29tZQorICAgICAgICAgICAgICAg
ICMgb3RoZXIgd2F5LgorICAgICAgICAgICAgICAgIGpvYi5hZGRfb3V0cHV0X2RhdGFzZXRfY29s
bGVjdGlvbiggb3V0cHV0X25hbWUsIGNvbGxlY3Rpb249CiApCiAgICAgICAgICAgICBjb2xsZWN0
aW9uc1sgb3V0cHV0X25hbWUgXSA9M0QgY29sbGVjdGlvbgo9MjAKICAgICAgICAgc2VsZi5pbXBs
aWNpdF9jb2xsZWN0aW9ucyA9M0QgY29sbGVjdGlvbnMKCmRpZmYgLXIgMmE2NjM1MTAzNTNiYTgy
NjhkZWZmMDYzYmE1MGQyN2RlMTgwYjg4OSAtciBkODM2ODcxOTRjY2Y4NDlmMDNjMTY2ND0KNzkw
NzFiZDMzYTFiNDQ3ZjQgbGliL2dhbGF4eS90b29scy9wYXJhbWV0ZXJzL2Jhc2ljLnB5Ci0tLSBh
L2xpYi9nYWxheHkvdG9vbHMvcGFyYW1ldGVycy9iYXNpYy5weQorKysgYi9saWIvZ2FsYXh5L3Rv
b2xzL3BhcmFtZXRlcnMvYmFzaWMucHkKQEAgLTIwODgsNyArMjA4OCw2IEBACiAgICAgICAgIGZv
ciBpbnN0YW5jZSBzaG91bGQgSSBqdXN0IGJlIGNoZWNraW5nIGR5bmFtaWMgb3B0aW9ucykuCiAg
ICAgICAgICIiIgogICAgICAgICBhbGxvdyA9M0QgVHJ1ZQotICAgICAgICAjIFRPRE86IGFsbG93
IHNob3VsZCBiZSBmYWxzZSBpbiBzb21lIGluIGNhc2VzLi4uCiAgICAgICAgIHJldHVybiBhbGxv
dwo9MjAKICAgICBkZWYgX29wdGlvbnNfZmlsdGVyX2F0dHJpYnV0ZSggc2VsZiwgdmFsdWUgKToK
CmRpZmYgLXIgMmE2NjM1MTAzNTNiYTgyNjhkZWZmMDYzYmE1MGQyN2RlMTgwYjg4OSAtciBkODM2
ODcxOTRjY2Y4NDlmMDNjMTY2ND0KNzkwNzFiZDMzYTFiNDQ3ZjQgbGliL2dhbGF4eS90b29scy9w
YXJhbWV0ZXJzL2RhdGFzZXRfbWF0Y2hlci5weQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xzL3BhcmFt
ZXRlcnMvZGF0YXNldF9tYXRjaGVyLnB5CisrKyBiL2xpYi9nYWxheHkvdG9vbHMvcGFyYW1ldGVy
cy9kYXRhc2V0X21hdGNoZXIucHkKQEAgLTE2Miw2ICsxNjIsMTEgQEAKICAgICAgICAgICAgIHJl
dHVybiBzZWxmLmRhdGFzZXRfY29sbGVjdGlvbl9tYXRjaCggZGF0YXNldF9jb2xsZWN0aW9uICkK
PTIwCiAgICAgZGVmIGRhdGFzZXRfY29sbGVjdGlvbl9tYXRjaCggc2VsZiwgZGF0YXNldF9jb2xs
ZWN0aW9uICk6CisgICAgICAgICMgSWYgZGF0YXNldCBjb2xsZWN0aW9uIG5vdCB5ZXQgcG9wdWxh
dGVkLCBjYW5ub3QgZGV0ZXJtaW5lIGlmIGl0CisgICAgICAgICMgd291bGQgYmUgYSB2YWxpZCBt
YXRjaCBmb3IgdGhpcyBwYXJhbWV0ZXIuCisgICAgICAgIGlmIG5vdCBkYXRhc2V0X2NvbGxlY3Rp
b24ucG9wdWxhdGVkOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKICAgICAgICAgdmFsaWQg
PTNEIFRydWUKICAgICAgICAgZm9yIGVsZW1lbnQgaW4gZGF0YXNldF9jb2xsZWN0aW9uLmVsZW1l
bnRzOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuX192YWxpZF9lbGVtZW50KCBlbGVtZW50ICk6
CgpkaWZmIC1yIDJhNjYzNTEwMzUzYmE4MjY4ZGVmZjA2M2JhNTBkMjdkZTE4MGI4ODkgLXIgZDgz
Njg3MTk0Y2NmODQ5ZjAzYzE2NjQ9Cjc5MDcxYmQzM2ExYjQ0N2Y0IGxpYi9nYWxheHkvdG9vbHMv
cGFyYW1ldGVycy9vdXRwdXRfY29sbGVjdC5weQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xzL3BhcmFt
ZXRlcnMvb3V0cHV0X2NvbGxlY3QucHkKKysrIGIvbGliL2dhbGF4eS90b29scy9wYXJhbWV0ZXJz
L291dHB1dF9jb2xsZWN0LnB5CkBAIC0xMiw2ICsxMiwxNzggQEAKIERBVEFTRVRfSURfVE9LRU4g
PTNEICJEQVRBU0VUX0lEIgogREVGQVVMVF9FWFRSQV9GSUxFTkFNRV9QQVRURVJOID0zRCByInBy
aW1hcnlfREFUQVNFVF9JRF8oP1A8ZGVzaWduYXRpb24+W149Cl9dKylfKD9QPHZpc2libGU+W15f
XSspXyg/UDxleHQ+W15fXSspKF8oP1A8ZGJrZXk+W15fXSspKT8iCj0yMAoraW1wb3J0IGxvZ2dp
bmcKK2xvZyA9M0QgbG9nZ2luZy5nZXRMb2dnZXIoIF9fbmFtZV9fICkKKworCitkZWYgY29sbGVj
dF9keW5hbWljX2NvbGxlY3Rpb25zKAorICAgIHRvb2wsCisgICAgb3V0cHV0X2NvbGxlY3Rpb25z
LAorICAgIGpvYl93b3JraW5nX2RpcmVjdG9yeSwKKyAgICBpbnBfZGF0YT0zRHt9LAorICAgIGpv
Yj0zRE5vbmUsCispOgorICAgIGNvbGxlY3Rpb25zX3NlcnZpY2UgPTNEIHRvb2wuYXBwLmRhdGFz
ZXRfY29sbGVjdGlvbnNfc2VydmljZQorICAgIGpvYl9jb250ZXh0ID0zRCBKb2JDb250ZXh0KAor
ICAgICAgICB0b29sLAorICAgICAgICBqb2IsCisgICAgICAgIGpvYl93b3JraW5nX2RpcmVjdG9y
eSwKKyAgICAgICAgaW5wX2RhdGEsCisgICAgKQorCisgICAgZm9yIG5hbWUsIGhhc19jb2xsZWN0
aW9uIGluIG91dHB1dF9jb2xsZWN0aW9ucy5pdGVtcygpOgorICAgICAgICBpZiBuYW1lIG5vdCBp
biB0b29sLm91dHB1dF9jb2xsZWN0aW9uczoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAg
IG91dHB1dF9jb2xsZWN0aW9uX2RlZiA9M0QgdG9vbC5vdXRwdXRfY29sbGVjdGlvbnNbIG5hbWUg
XQorICAgICAgICBpZiBub3Qgb3V0cHV0X2NvbGxlY3Rpb25fZGVmLmR5bmFtaWNfc3RydWN0dXJl
OgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAjIENvdWxkIGJlIEhEQ0EgZm9yIG5v
cm1hbCBqb2JzIG9yIGEgREMgZm9yIG1hcHBpbmcKKyAgICAgICAgIyBqb2JzLgorICAgICAgICBp
ZiBoYXNhdHRyKGhhc19jb2xsZWN0aW9uLCAiY29sbGVjdGlvbiIpOgorICAgICAgICAgICAgY29s
bGVjdGlvbiA9M0QgaGFzX2NvbGxlY3Rpb24uY29sbGVjdGlvbgorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgY29sbGVjdGlvbiA9M0QgaGFzX2NvbGxlY3Rpb24KKworICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBlbGVtZW50cyA9M0Qgam9iX2NvbnRleHQuYnVpbGRfY29sbGVjdGlvbl9lbGVt
ZW50cygKKyAgICAgICAgICAgICAgICBjb2xsZWN0aW9uLAorICAgICAgICAgICAgICAgIG91dHB1
dF9jb2xsZWN0aW9uX2RlZiwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGNvbGxlY3Rpb25z
X3NlcnZpY2Uuc2V0X2NvbGxlY3Rpb25fZWxlbWVudHMoCisgICAgICAgICAgICAgICAgY29sbGVj
dGlvbiwKKyAgICAgICAgICAgICAgICBlbGVtZW50cworICAgICAgICAgICAgKQorICAgICAgICBl
eGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgbG9nLmluZm8oIlByb2JsZW0gZ2F0aGVyaW5n
IG91dHB1dCBjb2xsZWN0aW9uLiIpCisgICAgICAgICAgICBjb2xsZWN0aW9uLmhhbmRsZV9wb3B1
bGF0aW9uX2ZhaWxlZCgiUHJvYmxlbSBidWlsZGluZyBkYXRhc2V0cz0KIGZvciBjb2xsZWN0aW9u
LiIpCisKKworY2xhc3MgSm9iQ29udGV4dCggb2JqZWN0ICk6CisKKyAgICBkZWYgX19pbml0X18o
IHNlbGYsIHRvb2wsIGpvYiwgam9iX3dvcmtpbmdfZGlyZWN0b3J5LCBpbnBfZGF0YSApOgorICAg
ICAgICBzZWxmLmlucF9kYXRhID0zRCBpbnBfZGF0YQorICAgICAgICBzZWxmLmFwcCA9M0QgdG9v
bC5hcHAKKyAgICAgICAgc2VsZi5zYV9zZXNzaW9uID0zRCB0b29sLnNhX3Nlc3Npb24KKyAgICAg
ICAgc2VsZi5qb2IgPTNEIGpvYgorICAgICAgICBzZWxmLmpvYl93b3JraW5nX2RpcmVjdG9yeSA9
M0Qgam9iX3dvcmtpbmdfZGlyZWN0b3J5CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcGVybWlz
c2lvbnMoIHNlbGYgKToKKyAgICAgICAgaW5wX2RhdGEgPTNEIHNlbGYuaW5wX2RhdGEKKyAgICAg
ICAgZXhpc3RpbmdfZGF0YXNldHMgPTNEIFsgaW5wIGZvciBpbnAgaW4gaW5wX2RhdGEudmFsdWVz
KCkgaWYgaW5wIF0KKyAgICAgICAgaWYgZXhpc3RpbmdfZGF0YXNldHM6CisgICAgICAgICAgICBw
ZXJtaXNzaW9ucyA9M0Qgc2VsZi5hcHAuc2VjdXJpdHlfYWdlbnQuZ3Vlc3NfZGVyaXZlZF9wZXJt
aXNzaT0Kb25zX2Zvcl9kYXRhc2V0cyggZXhpc3RpbmdfZGF0YXNldHMgKQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgIyBObyB2YWxpZCBpbnB1dHMsIHdlIHdpbGwgdXNlIGhpc3RvcnkgZGVm
YXVsdHMKKyAgICAgICAgICAgIHBlcm1pc3Npb25zID0zRCBzZWxmLmFwcC5zZWN1cml0eV9hZ2Vu
dC5oaXN0b3J5X2dldF9kZWZhdWx0X3BlPQpybWlzc2lvbnMoIHNlbGYuam9iLmhpc3RvcnkgKQor
ICAgICAgICByZXR1cm4gcGVybWlzc2lvbnMKKworICAgIGRlZiBmaW5kX2ZpbGVzKCBzZWxmLCBj
b2xsZWN0aW9uLCBkYXRhc2V0X2NvbGxlY3RvcnMgKToKKyAgICAgICAgZmlsZW5hbWVzID0zRCBv
ZGljdC5vZGljdCgpCisgICAgICAgIGZvciBwYXRoLCBleHRyYV9maWxlX2NvbGxlY3RvciBpbiB3
YWxrX292ZXJfZXh0cmFfZmlsZXMoIGRhdGFzZXRfYz0Kb2xsZWN0b3JzLCBzZWxmLmpvYl93b3Jr
aW5nX2RpcmVjdG9yeSwgY29sbGVjdGlvbiApOgorICAgICAgICAgICAgZmlsZW5hbWVzWyBwYXRo
IF0gPTNEIGV4dHJhX2ZpbGVfY29sbGVjdG9yCisgICAgICAgIHJldHVybiBmaWxlbmFtZXMKKwor
ICAgIGRlZiBidWlsZF9jb2xsZWN0aW9uX2VsZW1lbnRzKCBzZWxmLCBjb2xsZWN0aW9uLCBvdXRw
dXRfY29sbGVjdGlvbl9kZWY9CiApOgorICAgICAgICBkYXRhc2V0cyA9M0Qgc2VsZi5jcmVhdGVf
ZGF0YXNldHMoCisgICAgICAgICAgICBjb2xsZWN0aW9uLAorICAgICAgICAgICAgb3V0cHV0X2Nv
bGxlY3Rpb25fZGVmLAorICAgICAgICApCisKKyAgICAgICAgZWxlbWVudHMgPTNEIG9kaWN0Lm9k
aWN0KCkKKyAgICAgICAgIyBUT0RPOiBhbGxvdyBjb25maWd1cmFibGUgc29ydGluZy4KKyAgICAg
ICAgIyAgICA8c29ydCBieT0zRCJsZXhpY2FsIiAvPjwhLS0gZGVmYXVsdCAtLT4KKyAgICAgICAg
IyAgICA8c29ydCBieT0zRCJyZXZlcnNlX2xleGljYWwiIC8+CisgICAgICAgICMgICAgPHNvcnQg
cmVnZXg9M0QiZXhhbXBsZS4oXGQrKS5mYXN0cSIgYnk9M0QiMTpudW1lcmljYWwiIC8+CisgICAg
ICAgICMgICAgPHNvcnQgcmVnZXg9M0QicGFydF8oXGQrKV9zYW1wbGVfKFteX10rKS5mYXN0cSIg
Ynk9M0QiMjpsZXhpYz0KYWwsMTpudW1lcmljYWwiIC8+CisgICAgICAgICMgVE9ETzogYWxsb3cg
bmVzdGVkIHN0cnVjdHVyZQorICAgICAgICBmb3IgZGVzaWduYXRpb24gaW4gZGF0YXNldHMua2V5
cygpOgorICAgICAgICAgICAgZWxlbWVudHNbIGRlc2lnbmF0aW9uIF0gPTNEIGRhdGFzZXRzWyBk
ZXNpZ25hdGlvbiBdCisKKyAgICAgICAgcmV0dXJuIGVsZW1lbnRzCisKKyAgICBkZWYgY3JlYXRl
X2RhdGFzZXRzKCBzZWxmLCBjb2xsZWN0aW9uLCBvdXRwdXRfY29sbGVjdGlvbl9kZWYgKToKKyAg
ICAgICAgZGF0YXNldF9jb2xsZWN0b3JzID0zRCBvdXRwdXRfY29sbGVjdGlvbl9kZWYuZGF0YXNl
dF9jb2xsZWN0b3JzCisgICAgICAgIGZpbGVuYW1lcyA9M0Qgc2VsZi5maW5kX2ZpbGVzKCBjb2xs
ZWN0aW9uLCBkYXRhc2V0X2NvbGxlY3RvcnMgKQorCisgICAgICAgIGRhdGFzZXRzID0zRCB7fQor
ICAgICAgICBmb3IgZmlsZW5hbWUsIGV4dHJhX2ZpbGVfY29sbGVjdG9yIGluIGZpbGVuYW1lcy5p
dGVyaXRlbXMoKToKKyAgICAgICAgICAgIGZpZWxkc19tYXRjaCA9M0QgZXh0cmFfZmlsZV9jb2xs
ZWN0b3IubWF0Y2goIGNvbGxlY3Rpb24sIG9zLnBhPQp0aC5iYXNlbmFtZSggZmlsZW5hbWUgKSAp
CisgICAgICAgICAgICBpZiBub3QgZmllbGRzX21hdGNoOgorICAgICAgICAgICAgICAgIHJhaXNl
IEV4Y2VwdGlvbiggIlByb2JsZW0gcGFyc2luZyBtZXRhZGF0YSBmaWVsZHMgZm9yIGZpbGU9CiAl
cyIgJSBmaWxlbmFtZSApCisgICAgICAgICAgICBkZXNpZ25hdGlvbiA9M0QgZmllbGRzX21hdGNo
LmRlc2lnbmF0aW9uCisgICAgICAgICAgICB2aXNpYmxlID0zRCBmaWVsZHNfbWF0Y2gudmlzaWJs
ZQorICAgICAgICAgICAgZXh0ID0zRCBmaWVsZHNfbWF0Y2guZXh0CisgICAgICAgICAgICBkYmtl
eSA9M0QgZmllbGRzX21hdGNoLmRia2V5CisgICAgICAgICAgICAjIENyZWF0ZSBuZXcgcHJpbWFy
eSBkYXRhc2V0CisgICAgICAgICAgICBuYW1lID0zRCBmaWVsZHNfbWF0Y2gubmFtZSBvciBkZXNp
Z25hdGlvbgorCisgICAgICAgICAgICBkYXRhc2V0ID0zRCBzZWxmLmNyZWF0ZV9kYXRhc2V0KAor
ICAgICAgICAgICAgICAgIGV4dD0zRGV4dCwKKyAgICAgICAgICAgICAgICBkZXNpZ25hdGlvbj0z
RGRlc2lnbmF0aW9uLAorICAgICAgICAgICAgICAgIHZpc2libGU9M0R2aXNpYmxlLAorICAgICAg
ICAgICAgICAgIGRia2V5PTNEZGJrZXksCisgICAgICAgICAgICAgICAgbmFtZT0zRG5hbWUsCisg
ICAgICAgICAgICAgICAgZmlsZW5hbWU9M0RmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICBtZXRh
ZGF0YV9zb3VyY2VfbmFtZT0zRG91dHB1dF9jb2xsZWN0aW9uX2RlZi5tZXRhZGF0YV9zb3VyPQpj
ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgZGF0YXNldHNbIGRlc2lnbmF0aW9uIF0g
PTNEIGRhdGFzZXQKKyAgICAgICAgcmV0dXJuIGRhdGFzZXRzCisKKyAgICBkZWYgY3JlYXRlX2Rh
dGFzZXQoCisgICAgICAgIHNlbGYsCisgICAgICAgIGV4dCwKKyAgICAgICAgZGVzaWduYXRpb24s
CisgICAgICAgIHZpc2libGUsCisgICAgICAgIGRia2V5LAorICAgICAgICBuYW1lLAorICAgICAg
ICBmaWxlbmFtZSwKKyAgICAgICAgbWV0YWRhdGFfc291cmNlX25hbWUsCisgICAgKToKKyAgICAg
ICAgYXBwID0zRCBzZWxmLmFwcAorICAgICAgICBzYV9zZXNzaW9uID0zRCBzZWxmLnNhX3Nlc3Np
b24KKworICAgICAgICAjIENvcHkgbWV0YWRhdGEgZnJvbSBvbmUgb2YgdGhlIGlucHV0cyBpZiBy
ZXF1ZXN0ZWQuCisgICAgICAgIG1ldGFkYXRhX3NvdXJjZSA9M0QgTm9uZQorICAgICAgICBpZiBt
ZXRhZGF0YV9zb3VyY2VfbmFtZToKKyAgICAgICAgICAgIG1ldGFkYXRhX3NvdXJjZSA9M0Qgc2Vs
Zi5pbnBfZGF0YVsgbWV0YWRhdGFfc291cmNlX25hbWUgXQorCisgICAgICAgICMgQ3JlYXRlIG5l
dyBwcmltYXJ5IGRhdGFzZXQKKyAgICAgICAgcHJpbWFyeV9kYXRhID0zRCBhcHAubW9kZWwuSGlz
dG9yeURhdGFzZXRBc3NvY2lhdGlvbiggZXh0ZW5zaW9uPTNEPQpleHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNpZ25hdGlv
bj0zRD0KZGVzaWduYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlPTNEdmlzaT0KYmxlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJrZXk9M0Rk
YmtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZV9kYXRhc2V0PQo9M0RUcnVlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Ffc2Vzc2lvbj0zRHM9CmFf
c2Vzc2lvbiApCisgICAgICAgIGFwcC5zZWN1cml0eV9hZ2VudC5zZXRfYWxsX2RhdGFzZXRfcGVy
bWlzc2lvbnMoIHByaW1hcnlfZGF0YS5kYXRhcz0KZXQsIHNlbGYucGVybWlzc2lvbnMgKQorICAg
ICAgICBzYV9zZXNzaW9uLmFkZCggcHJpbWFyeV9kYXRhICkKKyAgICAgICAgc2Ffc2Vzc2lvbi5m
bHVzaCgpCisgICAgICAgICMgTW92ZSBkYXRhIGZyb20gdGVtcCBsb2NhdGlvbiB0byBkYXRhc2V0
IGxvY2F0aW9uCisgICAgICAgIGFwcC5vYmplY3Rfc3RvcmUudXBkYXRlX2Zyb21fZmlsZShwcmlt
YXJ5X2RhdGEuZGF0YXNldCwgZmlsZV9uYW1lPQo9M0RmaWxlbmFtZSwgY3JlYXRlPTNEVHJ1ZSkK
KyAgICAgICAgcHJpbWFyeV9kYXRhLnNldF9zaXplKCkKKyAgICAgICAgIyBJZiBtYXRjaCBzcGVj
aWZpZWQgYSBuYW1lIHVzZSBvdGhlcndpc2UgZ2VuZXJhdGUgb25lIGZyb20KKyAgICAgICAgIyBk
ZXNpZ25hdGlvbi4KKyAgICAgICAgcHJpbWFyeV9kYXRhLm5hbWUgPTNEIG5hbWUKKworICAgICAg
ICBpZiBtZXRhZGF0YV9zb3VyY2U6CisgICAgICAgICAgICBwcmltYXJ5X2RhdGEuaW5pdF9tZXRh
KCBjb3B5X2Zyb209M0RtZXRhZGF0YV9zb3VyY2UgKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgcHJpbWFyeV9kYXRhLmluaXRfbWV0YSgpCisKKyAgICAgICAgIyBBc3NvY2lhdGUgbmV3IGRh
dGFzZXQgd2l0aCBqb2IKKyAgICAgICAgaWYgc2VsZi5qb2I6CisgICAgICAgICAgICBzZWxmLmpv
Yi5oaXN0b3J5LmFkZF9kYXRhc2V0KCBwcmltYXJ5X2RhdGEgKQorCisgICAgICAgICAgICBhc3Nv
YyA9M0QgYXBwLm1vZGVsLkpvYlRvT3V0cHV0RGF0YXNldEFzc29jaWF0aW9uKCAnX19uZXdfcHJp
bT0KYXJ5X2ZpbGVfJXN8JXNfXycgJSAoIG5hbWUsIGRlc2lnbmF0aW9uICksIHByaW1hcnlfZGF0
YSApCisgICAgICAgICAgICBhc3NvYy5qb2IgPTNEIHNlbGYuam9iCisgICAgICAgICAgICBzYV9z
ZXNzaW9uLmFkZCggYXNzb2MgKQorICAgICAgICAgICAgc2Ffc2Vzc2lvbi5mbHVzaCgpCisKKyAg
ICAgICAgcHJpbWFyeV9kYXRhLnN0YXRlID0zRCAnb2snCisgICAgICAgIHJldHVybiBwcmltYXJ5
X2RhdGEKKwo9MjAKIGRlZiBjb2xsZWN0X3ByaW1hcnlfZGF0YXNldHMoIHRvb2wsIG91dHB1dCwg
am9iX3dvcmtpbmdfZGlyZWN0b3J5LCBpbnB1dF9lPQp4dCApOgogICAgIGFwcCA9M0QgdG9vbC5h
cHAKCmRpZmYgLXIgMmE2NjM1MTAzNTNiYTgyNjhkZWZmMDYzYmE1MGQyN2RlMTgwYjg4OSAtciBk
ODM2ODcxOTRjY2Y4NDlmMDNjMTY2ND0KNzkwNzFiZDMzYTFiNDQ3ZjQgbGliL2dhbGF4eS90b29s
cy9wYXJzZXIvaW50ZXJmYWNlLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvcGFyc2VyL2ludGVy
ZmFjZS5weQorKysgYi9saWIvZ2FsYXh5L3Rvb2xzL3BhcnNlci9pbnRlcmZhY2UucHkKQEAgLTEz
MCw3ICsxMzAsOCBAQAo9MjAKICAgICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgcGFyc2Vfb3V0
cHV0cyhzZWxmLCB0b29sKToKLSAgICAgICAgIiIiIFJldHVybiBhIGxpc3Qgb2YgVG9vbE91dHB1
dCBvYmplY3RzLgorICAgICAgICAiIiIgUmV0dXJuIGEgcGFpciBvZiBvdXRwdXQgYW5kIG91dHB1
dCBjb2xsZWN0aW9ucyBvcmRlcmVkCisgICAgICAgIGRpY3Rpb25hcmllcyBmb3IgdXNlIGJ5IFRv
b2wuCiAgICAgICAgICIiIgo9MjAKICAgICBAYWJzdHJhY3RtZXRob2QKCmRpZmYgLXIgMmE2NjM1
MTAzNTNiYTgyNjhkZWZmMDYzYmE1MGQyN2RlMTgwYjg4OSAtciBkODM2ODcxOTRjY2Y4NDlmMDNj
MTY2ND0KNzkwNzFiZDMzYTFiNDQ3ZjQgbGliL2dhbGF4eS90b29scy9wYXJzZXIveG1sLnB5Ci0t
LSBhL2xpYi9nYWxheHkvdG9vbHMvcGFyc2VyL3htbC5weQorKysgYi9saWIvZ2FsYXh5L3Rvb2xz
L3BhcnNlci94bWwucHkKQEAgLTEyLDYgKzEyLDcgQEAKICAgICBJbnB1dFNvdXJjZSwKICkKIGZy
b20gZ2FsYXh5LnV0aWwgaW1wb3J0IHN0cmluZ19hc19ib29sLCB4bWxfdGV4dCwgeG1sX3RvX3N0
cmluZworZnJvbSBnYWxheHkudXRpbC5vZGljdCBpbXBvcnQgb2RpY3QKIGZyb20gZ2FsYXh5LnRv
b2xzLmRlcHMgaW1wb3J0IHJlcXVpcmVtZW50cwogaW1wb3J0IGdhbGF4eS50b29scwogZnJvbSBn
YWxheHkudG9vbHMucGFyYW1ldGVycyBpbXBvcnQgb3V0cHV0X2NvbGxlY3QKQEAgLTEzMywyMCAr
MTM0LDg1IEBACj0yMAogICAgIGRlZiBwYXJzZV9vdXRwdXRzKHNlbGYsIHRvb2wpOgogICAgICAg
ICBvdXRfZWxlbSA9M0Qgc2VsZi5yb290LmZpbmQoIm91dHB1dHMiKQorICAgICAgICBvdXRwdXRz
ID0zRCBvZGljdCgpCisgICAgICAgIG91dHB1dF9jb2xsZWN0aW9ucyA9M0Qgb2RpY3QoKQogICAg
ICAgICBpZiBvdXRfZWxlbSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIFtdCisgICAgICAg
ICAgICByZXR1cm4gb3V0cHV0cywgb3V0cHV0X2NvbGxlY3Rpb25zCj0yMAotICAgICAgICBkZWYg
X3BhcnNlKGRhdGFfZWxlbSk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcGFyc2Vfb3V0cHV0
KGRhdGFfZWxlbSwgdG9vbCkKKyAgICAgICAgZGF0YV9kaWN0ID0zRCBvZGljdCgpCj0yMAotICAg
ICAgICByZXR1cm4gbWFwKF9wYXJzZSwgb3V0X2VsZW0uZmluZGFsbCgiZGF0YSIpKQorICAgICAg
ICBkZWYgX3BhcnNlKGRhdGFfZWxlbSwgKiprd2RzKToKKyAgICAgICAgICAgIG91dHB1dF9kZWYg
PTNEIHNlbGYuX3BhcnNlX291dHB1dChkYXRhX2VsZW0sIHRvb2wsICoqa3dkcykKKyAgICAgICAg
ICAgIGRhdGFfZGljdFtvdXRwdXRfZGVmLm5hbWVdID0zRCBvdXRwdXRfZGVmCisgICAgICAgICAg
ICByZXR1cm4gb3V0cHV0X2RlZgo9MjAKLSAgICBkZWYgX3BhcnNlX291dHB1dChzZWxmLCBkYXRh
X2VsZW0sIHRvb2wpOgorICAgICAgICBtYXAoX3BhcnNlLCBvdXRfZWxlbS5maW5kYWxsKCJkYXRh
IikpCisKKyAgICAgICAgZm9yIGNvbGxlY3Rpb25fZWxlbSBpbiBvdXRfZWxlbS5maW5kYWxsKCJj
b2xsZWN0aW9uIik6CisgICAgICAgICAgICBuYW1lID0zRCBjb2xsZWN0aW9uX2VsZW0uZ2V0KCAi
bmFtZSIgKQorICAgICAgICAgICAgZGVmYXVsdF9mb3JtYXQgPTNEIGNvbGxlY3Rpb25fZWxlbS5n
ZXQoICJmb3JtYXQiLCAiZGF0YSIgKQorICAgICAgICAgICAgY29sbGVjdGlvbl90eXBlID0zRCBj
b2xsZWN0aW9uX2VsZW0uZ2V0KCAidHlwZSIsIE5vbmUgKQorICAgICAgICAgICAgc3RydWN0dXJl
ZF9saWtlID0zRCBjb2xsZWN0aW9uX2VsZW0uZ2V0KCAic3RydWN0dXJlZF9saWtlIiwgTm89Cm5l
ICkKKyAgICAgICAgICAgIGluaGVyaXRfZm9ybWF0ID0zRCBGYWxzZQorICAgICAgICAgICAgaW5o
ZXJpdF9tZXRhZGF0YSA9M0QgRmFsc2UKKyAgICAgICAgICAgIGlmIHN0cnVjdHVyZWRfbGlrZToK
KyAgICAgICAgICAgICAgICBpbmhlcml0X2Zvcm1hdCA9M0Qgc3RyaW5nX2FzX2Jvb2woIGNvbGxl
Y3Rpb25fZWxlbS5nZXQoICJpPQpuaGVyaXRfZm9ybWF0IiwgTm9uZSApICkKKyAgICAgICAgICAg
ICAgICBpbmhlcml0X21ldGFkYXRhID0zRCBzdHJpbmdfYXNfYm9vbCggY29sbGVjdGlvbl9lbGVt
LmdldCggPQoiaW5oZXJpdF9tZXRhZGF0YSIsIE5vbmUgKSApCisgICAgICAgICAgICBkZWZhdWx0
X2Zvcm1hdF9zb3VyY2UgPTNEIGNvbGxlY3Rpb25fZWxlbS5nZXQoICJmb3JtYXRfc291cmNlIj0K
LCBOb25lICkKKyAgICAgICAgICAgIGRlZmF1bHRfbWV0YWRhdGFfc291cmNlID0zRCBjb2xsZWN0
aW9uX2VsZW0uZ2V0KCAibWV0YWRhdGFfc291PQpyY2UiLCAiIiApCisKKyAgICAgICAgICAgIGRh
dGFzZXRfY29sbGVjdG9ycyA9M0QgTm9uZQorICAgICAgICAgICAgaWYgY29sbGVjdGlvbl9lbGVt
LmZpbmQoICJkaXNjb3Zlcl9kYXRhc2V0cyIgKSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg
ICBkYXRhc2V0X2NvbGxlY3RvcnMgPTNEIG91dHB1dF9jb2xsZWN0LmRhdGFzZXRfY29sbGVjdG9y
c19mPQpyb21fZWxlbSggY29sbGVjdGlvbl9lbGVtICkKKyAgICAgICAgICAgIHN0cnVjdHVyZSA9
M0QgZ2FsYXh5LnRvb2xzLlRvb2xPdXRwdXRDb2xsZWN0aW9uU3RydWN0dXJlKAorICAgICAgICAg
ICAgICAgIGNvbGxlY3Rpb25fdHlwZT0zRGNvbGxlY3Rpb25fdHlwZSwKKyAgICAgICAgICAgICAg
ICBzdHJ1Y3R1cmVkX2xpa2U9M0RzdHJ1Y3R1cmVkX2xpa2UsCisgICAgICAgICAgICAgICAgZGF0
YXNldF9jb2xsZWN0b3JzPTNEZGF0YXNldF9jb2xsZWN0b3JzLAorICAgICAgICAgICAgKQorICAg
ICAgICAgICAgb3V0cHV0X2NvbGxlY3Rpb24gPTNEIGdhbGF4eS50b29scy5Ub29sT3V0cHV0Q29s
bGVjdGlvbigKKyAgICAgICAgICAgICAgICBuYW1lLAorICAgICAgICAgICAgICAgIHN0cnVjdHVy
ZSwKKyAgICAgICAgICAgICAgICBkZWZhdWx0X2Zvcm1hdD0zRGRlZmF1bHRfZm9ybWF0LAorICAg
ICAgICAgICAgICAgIGluaGVyaXRfZm9ybWF0PTNEaW5oZXJpdF9mb3JtYXQsCisgICAgICAgICAg
ICAgICAgaW5oZXJpdF9tZXRhZGF0YT0zRGluaGVyaXRfbWV0YWRhdGEsCisgICAgICAgICAgICAg
ICAgZGVmYXVsdF9mb3JtYXRfc291cmNlPTNEZGVmYXVsdF9mb3JtYXRfc291cmNlLAorICAgICAg
ICAgICAgICAgIGRlZmF1bHRfbWV0YWRhdGFfc291cmNlPTNEZGVmYXVsdF9tZXRhZGF0YV9zb3Vy
Y2UsCisgICAgICAgICAgICApCisgICAgICAgICAgICBvdXRwdXRzW291dHB1dF9jb2xsZWN0aW9u
Lm5hbWVdID0zRCBvdXRwdXRfY29sbGVjdGlvbgorCisgICAgICAgICAgICBmb3IgZGF0YV9lbGVt
IGluIGNvbGxlY3Rpb25fZWxlbS5maW5kYWxsKCJkYXRhIik6CisgICAgICAgICAgICAgICAgX3Bh
cnNlKAorICAgICAgICAgICAgICAgICAgICBkYXRhX2VsZW0sCisgICAgICAgICAgICAgICAgICAg
IGRlZmF1bHRfZm9ybWF0PTNEZGVmYXVsdF9mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHRfZm9ybWF0X3NvdXJjZT0zRGRlZmF1bHRfZm9ybWF0X3NvdXJjZSwKKyAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdF9tZXRhZGF0YV9zb3VyY2U9M0RkZWZhdWx0X21ldGFkYXRhX3NvdXJj
ZSwKKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIGZvciBkYXRhX2VsZW0gaW4gY29s
bGVjdGlvbl9lbGVtLmZpbmRhbGwoImRhdGEiKToKKyAgICAgICAgICAgICAgICBvdXRwdXRfbmFt
ZSA9M0QgZGF0YV9lbGVtLmdldCgibmFtZSIpCisgICAgICAgICAgICAgICAgZGF0YSA9M0QgZGF0
YV9kaWN0W291dHB1dF9uYW1lXQorICAgICAgICAgICAgICAgIGFzc2VydCBkYXRhCisgICAgICAg
ICAgICAgICAgZGVsIGRhdGFfZGljdFtvdXRwdXRfbmFtZV0KKyAgICAgICAgICAgICAgICBvdXRw
dXRfY29sbGVjdGlvbi5vdXRwdXRzW291dHB1dF9uYW1lXSA9M0QgZGF0YQorICAgICAgICAgICAg
b3V0cHV0X2NvbGxlY3Rpb25zWyBuYW1lIF0gPTNEIG91dHB1dF9jb2xsZWN0aW9uCisKKyAgICAg
ICAgZm9yIG91dHB1dF9kZWYgaW4gZGF0YV9kaWN0LnZhbHVlcygpOgorICAgICAgICAgICAgb3V0
cHV0c1tvdXRwdXRfZGVmLm5hbWVdID0zRCBvdXRwdXRfZGVmCisgICAgICAgIHJldHVybiBvdXRw
dXRzLCBvdXRwdXRfY29sbGVjdGlvbnMKKworICAgIGRlZiBfcGFyc2Vfb3V0cHV0KAorICAgICAg
ICBzZWxmLAorICAgICAgICBkYXRhX2VsZW0sCisgICAgICAgIHRvb2wsCisgICAgICAgIGRlZmF1
bHRfZm9ybWF0PTNEImRhdGEiLAorICAgICAgICBkZWZhdWx0X2Zvcm1hdF9zb3VyY2U9M0ROb25l
LAorICAgICAgICBkZWZhdWx0X21ldGFkYXRhX3NvdXJjZT0zRCIiLAorICAgICk6CiAgICAgICAg
IG91dHB1dCA9M0QgZ2FsYXh5LnRvb2xzLlRvb2xPdXRwdXQoIGRhdGFfZWxlbS5nZXQoIm5hbWUi
KSApCi0gICAgICAgIG91dHB1dC5mb3JtYXQgPTNEIGRhdGFfZWxlbS5nZXQoImZvcm1hdCIsICJk
YXRhIikKKyAgICAgICAgb3V0cHV0LmZvcm1hdCA9M0QgZGF0YV9lbGVtLmdldCgiZm9ybWF0Iiwg
ZGVmYXVsdF9mb3JtYXQpCiAgICAgICAgIG91dHB1dC5jaGFuZ2VfZm9ybWF0ID0zRCBkYXRhX2Vs
ZW0uZmluZGFsbCgiY2hhbmdlX2Zvcm1hdCIpCi0gICAgICAgIG91dHB1dC5mb3JtYXRfc291cmNl
ID0zRCBkYXRhX2VsZW0uZ2V0KCJmb3JtYXRfc291cmNlIiwgTm9uZSkKLSAgICAgICAgb3V0cHV0
Lm1ldGFkYXRhX3NvdXJjZSA9M0QgZGF0YV9lbGVtLmdldCgibWV0YWRhdGFfc291cmNlIiwgIiIp
CisgICAgICAgIG91dHB1dC5mb3JtYXRfc291cmNlID0zRCBkYXRhX2VsZW0uZ2V0KCJmb3JtYXRf
c291cmNlIiwgZGVmYXVsdF9mbz0Kcm1hdF9zb3VyY2UpCisgICAgICAgIG91dHB1dC5tZXRhZGF0
YV9zb3VyY2UgPTNEIGRhdGFfZWxlbS5nZXQoIm1ldGFkYXRhX3NvdXJjZSIsIGRlZmF1bD0KdF9t
ZXRhZGF0YV9zb3VyY2UpCiAgICAgICAgIG91dHB1dC5wYXJlbnQgPTNEIGRhdGFfZWxlbS5nZXQo
InBhcmVudCIsIE5vbmUpCiAgICAgICAgIG91dHB1dC5sYWJlbCA9M0QgeG1sX3RleHQoIGRhdGFf
ZWxlbSwgImxhYmVsIiApCiAgICAgICAgIG91dHB1dC5jb3VudCA9M0QgaW50KCBkYXRhX2VsZW0u
Z2V0KCJjb3VudCIsIDEpICkKQEAgLTE4NSw2ICsyNTEsNyBAQAogZGVmIF90ZXN0X2VsZW1fdG9f
ZGljdCh0ZXN0X2VsZW0sIGkpOgogICAgIHJ2YWwgPTNEIGRpY3QoCiAgICAgICAgIG91dHB1dHM9
M0RfX3BhcnNlX291dHB1dF9lbGVtcyh0ZXN0X2VsZW0pLAorICAgICAgICBvdXRwdXRfY29sbGVj
dGlvbnM9M0RfX3BhcnNlX291dHB1dF9jb2xsZWN0aW9uX2VsZW1zKHRlc3RfZWxlbSksCiAgICAg
ICAgIGlucHV0cz0zRF9fcGFyc2VfaW5wdXRfZWxlbXModGVzdF9lbGVtLCBpKSwKICAgICAgICAg
Y29tbWFuZD0zRF9fcGFyc2VfYXNzZXJ0X2xpc3RfZnJvbV9lbGVtKCB0ZXN0X2VsZW0uZmluZCgi
YXNzZXJ0X2NvPQptbWFuZCIpICksCiAgICAgICAgIHN0ZG91dD0zRF9fcGFyc2VfYXNzZXJ0X2xp
c3RfZnJvbV9lbGVtKCB0ZXN0X2VsZW0uZmluZCgiYXNzZXJ0X3N0ZD0Kb3V0IikgKSwKQEAgLTIz
Miw2ICsyOTksMjkgQEAKICAgICByZXR1cm4gX19wYXJzZV9hc3NlcnRfbGlzdF9mcm9tX2VsZW0o
IGFzc2VydF9lbGVtICkKPTIwCj0yMAorZGVmIF9fcGFyc2Vfb3V0cHV0X2NvbGxlY3Rpb25fZWxl
bXMoIHRlc3RfZWxlbSApOgorICAgIG91dHB1dF9jb2xsZWN0aW9ucyA9M0QgW10KKyAgICBmb3Ig
b3V0cHV0X2NvbGxlY3Rpb25fZWxlbSBpbiB0ZXN0X2VsZW0uZmluZGFsbCggIm91dHB1dF9jb2xs
ZWN0aW9uIiApOgorICAgICAgICBvdXRwdXRfY29sbGVjdGlvbl9kZWYgPTNEIF9fcGFyc2Vfb3V0
cHV0X2NvbGxlY3Rpb25fZWxlbSggb3V0cHV0X2M9Cm9sbGVjdGlvbl9lbGVtICkKKyAgICAgICAg
b3V0cHV0X2NvbGxlY3Rpb25zLmFwcGVuZCggb3V0cHV0X2NvbGxlY3Rpb25fZGVmICkKKyAgICBy
ZXR1cm4gb3V0cHV0X2NvbGxlY3Rpb25zCisKKworZGVmIF9fcGFyc2Vfb3V0cHV0X2NvbGxlY3Rp
b25fZWxlbSggb3V0cHV0X2NvbGxlY3Rpb25fZWxlbSApOgorICAgIGF0dHJpYiA9M0QgZGljdCgg
b3V0cHV0X2NvbGxlY3Rpb25fZWxlbS5hdHRyaWIgKQorICAgIG5hbWUgPTNEIGF0dHJpYi5wb3Ao
ICduYW1lJywgTm9uZSApCisgICAgaWYgbmFtZSBpcyBOb25lOgorICAgICAgICByYWlzZSBFeGNl
cHRpb24oICJUZXN0IG91dHB1dCBjb2xsZWN0aW9uIGRvZXMgbm90IGhhdmUgYSAnbmFtZSciICkK
KyAgICBlbGVtZW50X3Rlc3RzID0zRCB7fQorICAgIGZvciBlbGVtZW50IGluIG91dHB1dF9jb2xs
ZWN0aW9uX2VsZW0uZmluZGFsbCgiZWxlbWVudCIpOgorICAgICAgICBlbGVtZW50X2F0dHJpYiA9
M0QgZGljdCggZWxlbWVudC5hdHRyaWIgKQorICAgICAgICBpZGVudGlmaWVyID0zRCBlbGVtZW50
X2F0dHJpYi5wb3AoICduYW1lJywgTm9uZSApCisgICAgICAgIGlmIGlkZW50aWZpZXIgaXMgTm9u
ZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbiggIlRlc3QgcHJpbWFyeSBkYXRhc2V0IGRv
ZXMgbm90IGhhdmUgYSAnaWRlbnRpPQpmaWVyJyIgKQorICAgICAgICBlbGVtZW50X3Rlc3RzWyBp
ZGVudGlmaWVyIF0gPTNEIF9fcGFyc2VfdGVzdF9hdHRyaWJ1dGVzKCBlbGVtZW50LCA9CmVsZW1l
bnRfYXR0cmliICkKKyAgICByZXR1cm4gZ2FsYXh5LnRvb2xzLlRlc3RDb2xsZWN0aW9uT3V0cHV0
RGVmKCBuYW1lLCBhdHRyaWIsIGVsZW1lbnRfdGVzPQp0cyApCisKKwogZGVmIF9fcGFyc2VfdGVz
dF9hdHRyaWJ1dGVzKCBvdXRwdXRfZWxlbSwgYXR0cmliICk6CiAgICAgYXNzZXJ0X2xpc3QgPTNE
IF9fcGFyc2VfYXNzZXJ0X2xpc3QoIG91dHB1dF9lbGVtICkKICAgICBmaWxlID0zRCBhdHRyaWIu
cG9wKCAnZmlsZScsIE5vbmUgKQoKZGlmZiAtciAyYTY2MzUxMDM1M2JhODI2OGRlZmYwNjNiYTUw
ZDI3ZGUxODBiODg5IC1yIGQ4MzY4NzE5NGNjZjg0OWYwM2MxNjY0PQo3OTA3MWJkMzNhMWI0NDdm
NCBsaWIvZ2FsYXh5L3Rvb2xzL3BhcnNlci95YW1sLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMv
cGFyc2VyL3lhbWwucHkKKysrIGIvbGliL2dhbGF4eS90b29scy9wYXJzZXIveWFtbC5weQpAQCAt
NSw2ICs1LDcgQEAKPTIwCiBmcm9tIGdhbGF4eS50b29scy5kZXBzIGltcG9ydCByZXF1aXJlbWVu
dHMKIGZyb20gZ2FsYXh5LnRvb2xzLnBhcmFtZXRlcnMgaW1wb3J0IG91dHB1dF9jb2xsZWN0Citm
cm9tIGdhbGF4eS51dGlsLm9kaWN0IGltcG9ydCBvZGljdAogaW1wb3J0IGdhbGF4eS50b29scwo9
MjAKPTIwCkBAIC03Niw3ICs3NywxMSBAQAogICAgICAgICBvdXRwdXRfZGVmcyA9M0QgW10KICAg
ICAgICAgZm9yIG5hbWUsIG91dHB1dF9kaWN0IGluIG91dHB1dHMuaXRlbXMoKToKICAgICAgICAg
ICAgIG91dHB1dF9kZWZzLmFwcGVuZChzZWxmLl9wYXJzZV9vdXRwdXQodG9vbCwgbmFtZSwgb3V0
cHV0X2RpY3QpKQotICAgICAgICByZXR1cm4gb3V0cHV0X2RlZnMKKyAgICAgICAgb3V0cHV0cyA9
M0Qgb2RpY3QoKQorICAgICAgICBmb3Igb3V0cHV0IGluIG91dHB1dF9kZWZzOgorICAgICAgICAg
ICAgb3V0cHV0c1tvdXRwdXQubmFtZV0gPTNEIG91dHB1dAorICAgICAgICAjIFRPRE86IHBhcnNl
IG91dHB1dHMgY29sbGVjdGlvbnMKKyAgICAgICAgcmV0dXJuIG91dHB1dF9kZWZzLCBvZGljdCgp
Cj0yMAogICAgIGRlZiBfcGFyc2Vfb3V0cHV0KHNlbGYsIHRvb2wsIG5hbWUsIG91dHB1dF9kaWN0
KToKICAgICAgICAgIyBUT0RPOiBoYW5kbGUgZmlsdGVycywgYWN0aW9ucywgY2hhbmdlX2Zvcm1h
dAoKZGlmZiAtciAyYTY2MzUxMDM1M2JhODI2OGRlZmYwNjNiYTUwZDI3ZGUxODBiODg5IC1yIGQ4
MzY4NzE5NGNjZjg0OWYwM2MxNjY0PQo3OTA3MWJkMzNhMWI0NDdmNCBsaWIvZ2FsYXh5L3Rvb2xz
L3Rlc3QucHkKLS0tIGEvbGliL2dhbGF4eS90b29scy90ZXN0LnB5CisrKyBiL2xpYi9nYWxheHkv
dG9vbHMvdGVzdC5weQpAQCAtMTIzLDYgKzEyMyw3IEBACj0yMAogICAgICAgICAgICAgc2VsZi5p
bnB1dHMgPTNEIHNlbGYuX19wcm9jZXNzX3Jhd19pbnB1dHMoIHNlbGYudG9vbC5pbnB1dHMsIHQ9
CmVzdF9kaWN0WyJpbnB1dHMiXSApCiAgICAgICAgICAgICBzZWxmLm91dHB1dHMgPTNEIHRlc3Rf
ZGljdFsib3V0cHV0cyJdCisgICAgICAgICAgICBzZWxmLm91dHB1dF9jb2xsZWN0aW9ucyA9M0Qg
dGVzdF9kaWN0WyJvdXRwdXRfY29sbGVjdGlvbnMiXQogICAgICAgICAgICAgbnVtX291dHB1dHMg
PTNEIHRlc3RfZGljdC5nZXQoICdleHBlY3RfbnVtX291dHB1dHMnLCBOb25lICkKICAgICAgICAg
ICAgIGlmIG51bV9vdXRwdXRzOgogICAgICAgICAgICAgICAgIG51bV9vdXRwdXRzID0zRCBpbnQo
IG51bV9vdXRwdXRzICkKCmRpZmYgLXIgMmE2NjM1MTAzNTNiYTgyNjhkZWZmMDYzYmE1MGQyN2Rl
MTgwYjg4OSAtciBkODM2ODcxOTRjY2Y4NDlmMDNjMTY2ND0KNzkwNzFiZDMzYTFiNDQ3ZjQgbGli
L2dhbGF4eS90b29scy93cmFwcGVycy5weQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xzL3dyYXBwZXJz
LnB5CisrKyBiL2xpYi9nYWxheHkvdG9vbHMvd3JhcHBlcnMucHkKQEAgLTI5MiwxMCArMjkyLDEz
IEBACiAgICAgICAgICAgICAjIEl0IGlzIGEgSGlzdG9yeURhdGFzZXRDb2xsZWN0aW9uQXNzb2Np
YXRpb24KICAgICAgICAgICAgIGNvbGxlY3Rpb24gPTNEIGhhc19jb2xsZWN0aW9uLmNvbGxlY3Rp
b24KICAgICAgICAgICAgIHNlbGYubmFtZSA9M0QgaGFzX2NvbGxlY3Rpb24ubmFtZQotICAgICAg
ICBlbHNlOgorICAgICAgICBlbGlmIGhhc2F0dHIoIGhhc19jb2xsZWN0aW9uLCAiY2hpbGRfY29s
bGVjdGlvbiIgKToKICAgICAgICAgICAgICMgSXQgaXMgYSBEYXRhc2V0Q29sbGVjdGlvbkVsZW1l
bnQgaW5zdGFuY2UgcmVmZXJlbmNpbmcgYW5vdGhlPQpyIGNvbGxlY3Rpb24KICAgICAgICAgICAg
IGNvbGxlY3Rpb24gPTNEIGhhc19jb2xsZWN0aW9uLmNoaWxkX2NvbGxlY3Rpb24KICAgICAgICAg
ICAgIHNlbGYubmFtZSA9M0QgaGFzX2NvbGxlY3Rpb24uZWxlbWVudF9pZGVudGlmaWVyCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBjb2xsZWN0aW9uID0zRCBoYXNfY29sbGVjdGlvbgorICAg
ICAgICAgICAgc2VsZi5uYW1lID0zRCBOb25lCj0yMAogICAgICAgICBlbGVtZW50cyA9M0QgY29s
bGVjdGlvbi5lbGVtZW50cwogICAgICAgICBlbGVtZW50X2luc3RhbmNlcyA9M0Qgb2RpY3Qub2Rp
Y3QoKQoKZGlmZiAtciAyYTY2MzUxMDM1M2JhODI2OGRlZmYwNjNiYTUwZDI3ZGUxODBiODg5IC1y
IGQ4MzY4NzE5NGNjZjg0OWYwM2MxNjY0PQo3OTA3MWJkMzNhMWI0NDdmNCBsaWIvZ2FsYXh5L3dl
YmFwcHMvZ2FsYXh5L2FwaS90b29scy5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5
L2FwaS90b29scy5weQorKysgYi9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS90b29scy5w
eQpAQCAtMTkwLDYgKzE5MCw3IEBACiAgICAgICAgIG91dHB1dF9kYXRhc2V0cyA9M0QgdmFycy5n
ZXQoICdvdXRfZGF0YScsIFtdICkKICAgICAgICAgcnZhbCA9M0QgewogICAgICAgICAgICAgIm91
dHB1dHMiOiBbXSwKKyAgICAgICAgICAgICJvdXRwdXRfY29sbGVjdGlvbnMiOiBbXSwKICAgICAg
ICAgICAgICJqb2JzIjogW10sCiAgICAgICAgICAgICAiaW1wbGljaXRfY29sbGVjdGlvbnMiOiBb
XSwKICAgICAgICAgfQpAQCAtMjEyLDYgKzIxMywxMiBAQAogICAgICAgICBmb3Igam9iIGluIHZh
cnMuZ2V0KCdqb2JzJywgW10pOgogICAgICAgICAgICAgcnZhbFsgJ2pvYnMnIF0uYXBwZW5kKCBz
ZWxmLmVuY29kZV9hbGxfaWRzKCB0cmFucywgam9iLnRvX2RpY3Q9Ciggdmlldz0zRCdjb2xsZWN0
aW9uJyApLCByZWN1cnNpdmU9M0RUcnVlICkgKQo9MjAKKyAgICAgICAgZm9yIG91dHB1dF9uYW1l
LCBjb2xsZWN0aW9uX2luc3RhbmNlIGluIHZhcnMuZ2V0KCdvdXRwdXRfY29sbGVjdGlvPQpucycs
IFtdKToKKyAgICAgICAgICAgIGhpc3RvcnkgPTNEIHRhcmdldF9oaXN0b3J5IG9yIHRyYW5zLmhp
c3RvcnkKKyAgICAgICAgICAgIG91dHB1dF9kaWN0ID0zRCBkaWN0aWZ5X2RhdGFzZXRfY29sbGVj
dGlvbl9pbnN0YW5jZSggY29sbGVjdGlvPQpuX2luc3RhbmNlLCBzZWN1cml0eT0zRHRyYW5zLnNl
Y3VyaXR5LCBwYXJlbnQ9M0RoaXN0b3J5ICkKKyAgICAgICAgICAgIG91dHB1dF9kaWN0WyAnb3V0
cHV0X25hbWUnIF0gPTNEIG91dHB1dF9uYW1lCisgICAgICAgICAgICBydmFsWyAnb3V0cHV0X2Nv
bGxlY3Rpb25zJyBdLmFwcGVuZCggb3V0cHV0X2RpY3QgKQorCiAgICAgICAgIGZvciBvdXRwdXRf
bmFtZSwgY29sbGVjdGlvbl9pbnN0YW5jZSBpbiB2YXJzLmdldCggJ2ltcGxpY2l0X2NvbGxlYz0K
dGlvbnMnLCB7fSApLml0ZXJpdGVtcygpOgogICAgICAgICAgICAgaGlzdG9yeSA9M0QgdGFyZ2V0
X2hpc3Rvcnkgb3IgdHJhbnMuaGlzdG9yeQogICAgICAgICAgICAgb3V0cHV0X2RpY3QgPTNEIGRp
Y3RpZnlfZGF0YXNldF9jb2xsZWN0aW9uX2luc3RhbmNlKCBjb2xsZWN0aW89Cm5faW5zdGFuY2Us
IHNlY3VyaXR5PTNEdHJhbnMuc2VjdXJpdHksIHBhcmVudD0zRGhpc3RvcnkgKQoKZGlmZiAtciAy
YTY2MzUxMDM1M2JhODI2OGRlZmYwNjNiYTUwZDI3ZGUxODBiODg5IC1yIGQ4MzY4NzE5NGNjZjg0
OWYwM2MxNjY0PQo3OTA3MWJkMzNhMWI0NDdmNCBsaWIvZ2FsYXh5L3dvcmtmbG93L2V4dHJhY3Qu
cHkKLS0tIGEvbGliL2dhbGF4eS93b3JrZmxvdy9leHRyYWN0LnB5CisrKyBiL2xpYi9nYWxheHkv
d29ya2Zsb3cvZXh0cmFjdC5weQpAQCAtMTEsNiArMTEsNyBAQAogICAgIFNlbGVjdFRvb2xQYXJh
bWV0ZXIsCiAgICAgVW52YWxpZGF0ZWRWYWx1ZQogKQorZnJvbSBnYWxheHkudG9vbHMgaW1wb3J0
IFRvb2xPdXRwdXRDb2xsZWN0aW9uUGFydAogZnJvbSBnYWxheHkudG9vbHMucGFyYW1ldGVycy5n
cm91cGluZyBpbXBvcnQgKAogICAgIENvbmRpdGlvbmFsLAogICAgIFJlcGVhdApAQCAtMTE1LDYg
KzExNiw4IEBACiAgICAgICAgICAgICAgICAgaW5wdXRfY29sbGVjdGlvbiA9M0QgYW5faW1wbGlj
aXRfb3V0cHV0X2NvbGxlY3Rpb24uZmluZF9pbT0KcGxpY2l0X2lucHV0X2NvbGxlY3Rpb24oIGlu
cHV0X25hbWUgKQogICAgICAgICAgICAgICAgIGlmIGlucHV0X2NvbGxlY3Rpb246CiAgICAgICAg
ICAgICAgICAgICAgIG90aGVyX2hpZCA9M0QgaW5wdXRfY29sbGVjdGlvbi5oaWQKKyAgICAgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBsb2cuaW5mbygiQ2Fubm90IGZpbmQg
aW1wbGljaXQgaW5wdXQgY29sbGVjdGlvbiBmb3IgJXM9CiIgJSBpbnB1dF9uYW1lKQogICAgICAg
ICAgICAgaWYgb3RoZXJfaGlkIGluIGhpZF90b19vdXRwdXRfcGFpcjoKICAgICAgICAgICAgICAg
ICBvdGhlcl9zdGVwLCBvdGhlcl9uYW1lID0zRCBoaWRfdG9fb3V0cHV0X3BhaXJbIG90aGVyX2hp
ZCBdCiAgICAgICAgICAgICAgICAgY29ubiA9M0QgbW9kZWwuV29ya2Zsb3dTdGVwQ29ubmVjdGlv
bigpCkBAIC0xMjYsMTggKzEyOSwyNiBAQAogICAgICAgICBzdGVwcy5hcHBlbmQoIHN0ZXAgKQog
ICAgICAgICBzdGVwc19ieV9qb2JfaWRbIGpvYl9pZCBdID0zRCBzdGVwCiAgICAgICAgICMgU3Rv
cmUgY3JlYXRlZCBkYXRhc2V0IGhpZHMKLSAgICAgICAgZm9yIGFzc29jIGluIGpvYi5vdXRwdXRf
ZGF0YXNldHM6CisgICAgICAgIGZvciBhc3NvYyBpbiAoam9iLm91dHB1dF9kYXRhc2V0cyArIGpv
Yi5vdXRwdXRfZGF0YXNldF9jb2xsZWN0aW9uXz0KaW5zdGFuY2VzKToKKyAgICAgICAgICAgIGFz
c29jX25hbWUgPTNEIGFzc29jLm5hbWUKKyAgICAgICAgICAgIGlmIFRvb2xPdXRwdXRDb2xsZWN0
aW9uUGFydC5pc19uYW1lZF9jb2xsZWN0aW9uX3BhcnRfbmFtZSggYXNzPQpvY19uYW1lICk6Cisg
ICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGpvYiBpbiBzdW1tYXJ5Lmlt
cGxpY2l0X21hcF9qb2JzOgogICAgICAgICAgICAgICAgIGhpZCA9M0QgTm9uZQogICAgICAgICAg
ICAgICAgIGZvciBpbXBsaWNpdF9wYWlyIGluIGpvYnNbIGpvYiBdOgogICAgICAgICAgICAgICAg
ICAgICBxdWVyeV9hc3NvY19uYW1lLCBkYXRhc2V0X2NvbGxlY3Rpb24gPTNEIGltcGxpY2l0X3Bh
aXIKLSAgICAgICAgICAgICAgICAgICAgaWYgcXVlcnlfYXNzb2NfbmFtZSA9M0Q9M0QgYXNzb2Mu
bmFtZToKKyAgICAgICAgICAgICAgICAgICAgaWYgcXVlcnlfYXNzb2NfbmFtZSA9M0Q9M0QgYXNz
b2NfbmFtZToKICAgICAgICAgICAgICAgICAgICAgICAgIGhpZCA9M0QgZGF0YXNldF9jb2xsZWN0
aW9uLmhpZAogICAgICAgICAgICAgICAgIGlmIGhpZCBpcyBOb25lOgotICAgICAgICAgICAgICAg
ICAgICBsb2cud2FybigiRmFpbGVkIHRvIGZpbmQgbWF0Y2hpbmcgaW1wbGljaXQgam9iLiIpCisg
ICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlID0zRCAiRmFpbGVkIHRvIGZpbmQgbWF0Y2hpbmcg
aW1wbGljaXQgam9iIC0gaj0Kb2IgaXMgJXMsIGpvYnMgYXJlICVzLCBhc3NvY19uYW1lIGlzICVz
LiIKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9M0QgdGVtcGxhdGUgJSAoIGpvYi5pZCwg
am9icywgYXNzb2MubmFtZSApCisgICAgICAgICAgICAgICAgICAgIGxvZy53YXJuKCBtZXNzYWdl
ICkKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCAiRmFpbGVkIHRvIGV4dHJh
Y3Qgam9iLiIgKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBoaWQgPTNEIGFz
c29jLmRhdGFzZXQuaGlkCisgICAgICAgICAgICAgICAgaWYgaGFzYXR0ciggYXNzb2MsICJkYXRh
c2V0IiApOgorICAgICAgICAgICAgICAgICAgICBoaWQgPTNEIGFzc29jLmRhdGFzZXQuaGlkCisg
ICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaGlkID0zRCBhc3NvYy5k
YXRhc2V0X2NvbGxlY3Rpb25faW5zdGFuY2UuaGlkCiAgICAgICAgICAgICBoaWRfdG9fb3V0cHV0
X3BhaXJbIGhpZCBdID0zRCAoIHN0ZXAsIGFzc29jLm5hbWUgKQogICAgIHJldHVybiBzdGVwcwo9
MjAKQEAgLTIxMCwxMSArMjIxLDE4IEBACiAgICAgICAgIGRhdGFzZXRfY29sbGVjdGlvbiA9M0Qg
Y29udGVudAogICAgICAgICBoaWQgPTNEIGNvbnRlbnQuaGlkCiAgICAgICAgIHNlbGYuY29sbGVj
dGlvbl90eXBlc1sgaGlkIF0gPTNEIGNvbnRlbnQuY29sbGVjdGlvbi5jb2xsZWN0aW9uX3R5cGUK
LSAgICAgICAgaWYgbm90IGNvbnRlbnQuaW1wbGljaXRfb3V0cHV0X25hbWU6Ci0gICAgICAgICAg
ICBqb2IgPTNEIERhdGFzZXRDb2xsZWN0aW9uQ3JlYXRpb25Kb2IoIGNvbnRlbnQgKQotICAgICAg
ICAgICAgc2VsZi5qb2JzWyBqb2IgXSA9M0QgWyAoIE5vbmUsIGNvbnRlbnQgKSBdCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBkYXRhc2V0X2NvbGxlY3Rpb24gPTNEIGNvbnRlbnQKKyAgICAg
ICAgaWYgY29udGVudC5jcmVhdGluZ19qb2JfYXNzb2NpYXRpb25zOgorICAgICAgICAgICAgZm9y
IGFzc29jIGluIGNvbnRlbnQuY3JlYXRpbmdfam9iX2Fzc29jaWF0aW9uczoKKyAgICAgICAgICAg
ICAgICBqb2IgPTNEIGFzc29jLmpvYgorICAgICAgICAgICAgICAgIGlmIGpvYiBub3QgaW4gc2Vs
Zi5qb2JzIG9yIHNlbGYuam9ic1sgam9iIF1bIDAgXVsgMSBdLmhpc3Q9Cm9yeV9jb250ZW50X3R5
cGUgPTNEPTNEICJkYXRhc2V0IjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5qb2JzWyBqb2Ig
XSA9M0QgWyAoIGFzc29jLm5hbWUsIGRhdGFzZXRfY29sbGVjdGlvPQpuICkgXQorICAgICAgICAg
ICAgICAgICAgICBpZiBjb250ZW50LmltcGxpY2l0X291dHB1dF9uYW1lOgorICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5pbXBsaWNpdF9tYXBfam9icy5hcHBlbmQoIGpvYiApCisgICAgICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5qb2JzWyBqb2IgXS5hcHBl
bmQoICggYXNzb2MubmFtZSwgZGF0YXNldF9jb2xsZWN0PQppb24gKSApCisgICAgICAgICMgVGhp
cyB3aG9sZSBlbGlmIGNvbmRpdGlvbiBtYXkgbm8gbG9uZ2VyIGJlIG5lZWRlZCBkbyB0byBhZGRp
dGlvbj0KYWwKKyAgICAgICAgIyB0cmFja2luZyB3aXRoIGNyZWF0aW5nX2pvYl9hc3NvY2lhdGlv
bnMuIFdpbGwgZGVsZXRlIGF0IHNvbWUgcG9pPQpudC4KKyAgICAgICAgZWxpZiBjb250ZW50Lmlt
cGxpY2l0X291dHB1dF9uYW1lOgogICAgICAgICAgICAgIyBUT0RPOiBPcHRpbWl6ZSBkYiBjYWxs
CiAgICAgICAgICAgICBkYXRhc2V0X2luc3RhbmNlID0zRCBkYXRhc2V0X2NvbGxlY3Rpb24uY29s
bGVjdGlvbi5kYXRhc2V0X2lucz0KdGFuY2VzWyAwIF0KICAgICAgICAgICAgIGlmIG5vdCBzZWxm
Ll9fY2hlY2tfc3RhdGUoIGRhdGFzZXRfaW5zdGFuY2UgKToKQEAgLTIzNSw2ICsyNTMsOSBAQAog
ICAgICAgICAgICAgICAgICAgICBzZWxmLmltcGxpY2l0X21hcF9qb2JzLmFwcGVuZCggam9iICkK
ICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmpvYnNbIGpv
YiBdLmFwcGVuZCggKCBhc3NvYy5uYW1lLCBkYXRhc2V0X2NvbGxlY3Q9CmlvbiApICkKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIGpvYiA9M0QgRGF0YXNldENvbGxlY3Rpb25DcmVhdGlvbkpv
YiggY29udGVudCApCisgICAgICAgICAgICBzZWxmLmpvYnNbIGpvYiBdID0zRCBbICggTm9uZSwg
Y29udGVudCApIF0KPTIwCiAgICAgZGVmIF9fc3VtbWFyaXplX2RhdGFzZXQoIHNlbGYsIGRhdGFz
ZXQgKToKICAgICAgICAgaWYgbm90IHNlbGYuX19jaGVja19zdGF0ZSggZGF0YXNldCApOgoKZGlm
ZiAtciAyYTY2MzUxMDM1M2JhODI2OGRlZmYwNjNiYTUwZDI3ZGUxODBiODg5IC1yIGQ4MzY4NzE5
NGNjZjg0OWYwM2MxNjY0PQo3OTA3MWJkMzNhMWI0NDdmNCBsaWIvZ2FsYXh5L3dvcmtmbG93L21v
ZHVsZXMucHkKLS0tIGEvbGliL2dhbGF4eS93b3JrZmxvdy9tb2R1bGVzLnB5CisrKyBiL2xpYi9n
YWxheHkvd29ya2Zsb3cvbW9kdWxlcy5weQpAQCAtNjQ5LDcgKzY0OSw5IEBACiAgICAgICAgIGRh
dGFfb3V0cHV0cyA9M0QgW10KICAgICAgICAgZGF0YV9pbnB1dHMgPTNEIE5vbmUKICAgICAgICAg
Zm9yIG5hbWUsIHRvb2xfb3V0cHV0IGluIHNlbGYudG9vbC5vdXRwdXRzLml0ZXJpdGVtcygpOgot
ICAgICAgICAgICAgaWYgdG9vbF9vdXRwdXQuZm9ybWF0X3NvdXJjZSAhPTNEIE5vbmU6CisgICAg
ICAgICAgICBpZiB0b29sX291dHB1dC5jb2xsZWN0aW9uOgorICAgICAgICAgICAgICAgIGZvcm1h
dHMgPTNEIFsgJ2lucHV0JyBdCisgICAgICAgICAgICBlbGlmIHRvb2xfb3V0cHV0LmZvcm1hdF9z
b3VyY2UgIT0zRCBOb25lOgogICAgICAgICAgICAgICAgIGZvcm1hdHMgPTNEIFsgJ2lucHV0JyBd
ICAjIGRlZmF1bHQgdG8gc3BlY2lhbCBuYW1lICJpbnB1dCI9CiB3aGljaCByZW1vdmUgcmVzdHJp
Y3Rpb25zIG9uIGNvbm5lY3Rpb25zCiAgICAgICAgICAgICAgICAgaWYgZGF0YV9pbnB1dHMgPTNE
PTNEIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGRhdGFfaW5wdXRzID0zRCBzZWxmLmdldF9k
YXRhX2lucHV0cygpCkBAIC04MjEsNiArODIzLDcgQEAKICAgICAgICAgICAgIHN0ZXBfb3V0cHV0
cyA9M0QgZGljdCggZXhlY3V0aW9uX3RyYWNrZXIuaW1wbGljaXRfY29sbGVjdGlvbnMgKQogICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgc3RlcF9vdXRwdXRzID0zRCBkaWN0KCBleGVjdXRpb25f
dHJhY2tlci5vdXRwdXRfZGF0YXNldHMgKQorICAgICAgICAgICAgc3RlcF9vdXRwdXRzLnVwZGF0
ZSggZXhlY3V0aW9uX3RyYWNrZXIub3V0cHV0X2NvbGxlY3Rpb25zICkKICAgICAgICAgcHJvZ3Jl
c3Muc2V0X3N0ZXBfb3V0cHV0cyggc3RlcCwgc3RlcF9vdXRwdXRzICkKICAgICAgICAgam9icyA9
M0QgZXhlY3V0aW9uX3RyYWNrZXIuc3VjY2Vzc2Z1bF9qb2JzCiAgICAgICAgIGZvciBqb2IgaW4g
am9iczoKQEAgLTkwMCw2ICs5MDMsMTEgQEAKICAgICAgICAgICAgIGlmIHJlcGxhY2VtZW50X3Zh
bHVlLmhpZGRlbl9iZW5lYXRoX2NvbGxlY3Rpb25faW5zdGFuY2U6CiAgICAgICAgICAgICAgICAg
cmVwbGFjZW1lbnRfdmFsdWUgPTNEIHJlcGxhY2VtZW50X3ZhbHVlLmhpZGRlbl9iZW5lYXRoX2Nv
bD0KbGVjdGlvbl9pbnN0YW5jZQogICAgICAgICAgICAgb3V0cHV0c1sgcmVwbGFjZW1lbnRfbmFt
ZSBdID0zRCByZXBsYWNlbWVudF92YWx1ZQorICAgICAgICBmb3Igam9iX291dHB1dF9jb2xsZWN0
aW9uIGluIGpvYl8wLm91dHB1dF9kYXRhc2V0X2NvbGxlY3Rpb25faW5zdGE9Cm5jZXM6CisgICAg
ICAgICAgICByZXBsYWNlbWVudF9uYW1lID0zRCBqb2Jfb3V0cHV0X2NvbGxlY3Rpb24ubmFtZQor
ICAgICAgICAgICAgcmVwbGFjZW1lbnRfdmFsdWUgPTNEIGpvYl9vdXRwdXRfY29sbGVjdGlvbi5k
YXRhc2V0X2NvbGxlY3Rpb249Cl9pbnN0YW5jZQorICAgICAgICAgICAgb3V0cHV0c1sgcmVwbGFj
ZW1lbnRfbmFtZSBdID0zRCByZXBsYWNlbWVudF92YWx1ZQorCiAgICAgICAgIHByb2dyZXNzLnNl
dF9zdGVwX291dHB1dHMoIHN0ZXAsIG91dHB1dHMgKQo9MjAKPTIwCgpkaWZmIC1yIDJhNjYzNTEw
MzUzYmE4MjY4ZGVmZjA2M2JhNTBkMjdkZTE4MGI4ODkgLXIgZDgzNjg3MTk0Y2NmODQ5ZjAzYzE2
NjQ9Cjc5MDcxYmQzM2ExYjQ0N2Y0IGxpYi9nYWxheHkvd29ya2Zsb3cvcnVuLnB5Ci0tLSBhL2xp
Yi9nYWxheHkvd29ya2Zsb3cvcnVuLnB5CisrKyBiL2xpYi9nYWxheHkvd29ya2Zsb3cvcnVuLnB5
CkBAIC0yNTEsNyArMjUxLDE4IEBACiAgICAgICAgIHN0ZXBfb3V0cHV0cyA9M0Qgc2VsZi5vdXRw
dXRzWyBjb25uZWN0aW9uLm91dHB1dF9zdGVwLmlkIF0KICAgICAgICAgaWYgc3RlcF9vdXRwdXRz
IGlzIFNURVBfT1VUUFVUX0RFTEFZRUQ6CiAgICAgICAgICAgICByYWlzZSBtb2R1bGVzLkRlbGF5
ZWRXb3JrZmxvd0V2YWx1YXRpb24oKQotICAgICAgICByZXR1cm4gc3RlcF9vdXRwdXRzWyBjb25u
ZWN0aW9uLm91dHB1dF9uYW1lIF0KKyAgICAgICAgcmVwbGFjZW1lbnQgPTNEIHN0ZXBfb3V0cHV0
c1sgY29ubmVjdGlvbi5vdXRwdXRfbmFtZSBdCisgICAgICAgIGlmIGlzaW5zdGFuY2UoIHJlcGxh
Y2VtZW50LCBtb2RlbC5IaXN0b3J5RGF0YXNldENvbGxlY3Rpb25Bc3NvY2lhdD0KaW9uICk6Cisg
ICAgICAgICAgICBpZiBub3QgcmVwbGFjZW1lbnQuY29sbGVjdGlvbi5wb3B1bGF0ZWQ6CisgICAg
ICAgICAgICAgICAgaWYgbm90IHJlcGxhY2VtZW50LmNvbGxlY3Rpb24ud2FpdGluZ19mb3JfZWxl
bWVudHM6CisgICAgICAgICAgICAgICAgICAgICMgSWYgd2UgYXJlIG5vdCB3YWl0aW5nIGZvciBl
bGVtZW50cywgdGhlcmUgd2FzIHNvbWUKKyAgICAgICAgICAgICAgICAgICAgIyBwcm9ibGVtIGNy
ZWF0aW5nIHRoZSBjb2xsZWN0aW9uLiBDb2xsZWN0aW9uIHdpbGwgbmV2PQplcgorICAgICAgICAg
ICAgICAgICAgICAjIGJlIHBvcHVsYXRlZC4KKyAgICAgICAgICAgICAgICAgICAgIyBUT0RPOiBj
b25zaWRlciBkaXN0aW5ndWlzaCBiZXR3ZWVuIGNhbmNlbGxlZCBhbmQgZmFpPQpsZWQ/CisgICAg
ICAgICAgICAgICAgICAgIHJhaXNlIG1vZHVsZXMuQ2FuY2VsV29ya2Zsb3dFdmFsdWF0aW9uKCkK
KworICAgICAgICAgICAgICAgIHJhaXNlIG1vZHVsZXMuRGVsYXllZFdvcmtmbG93RXZhbHVhdGlv
bigpCisgICAgICAgIHJldHVybiByZXBsYWNlbWVudAo9MjAKICAgICBkZWYgc2V0X291dHB1dHNf
Zm9yX2lucHV0KCBzZWxmLCBzdGVwLCBvdXRwdXRzPTNEe30gKToKICAgICAgICAgaWYgc2VsZi5p
bnB1dHNfYnlfc3RlcF9pZDoKCmRpZmYgLXIgMmE2NjM1MTAzNTNiYTgyNjhkZWZmMDYzYmE1MGQy
N2RlMTgwYjg4OSAtciBkODM2ODcxOTRjY2Y4NDlmMDNjMTY2ND0KNzkwNzFiZDMzYTFiNDQ3ZjQg
bGliL3Rvb2xfc2hlZC9zY3JpcHRzL2NoZWNrX3JlcG9zaXRvcmllc19mb3JfZnVuY3Rpb25hbF90
PQplc3RzLnB5Ci0tLSBhL2xpYi90b29sX3NoZWQvc2NyaXB0cy9jaGVja19yZXBvc2l0b3JpZXNf
Zm9yX2Z1bmN0aW9uYWxfdGVzdHMucHkKKysrIGIvbGliL3Rvb2xfc2hlZC9zY3JpcHRzL2NoZWNr
X3JlcG9zaXRvcmllc19mb3JfZnVuY3Rpb25hbF90ZXN0cy5weQpAQCAtMjUsOCArMjUsNiBAQAog
ZnJvbSBpbnN0YWxsX2FuZF90ZXN0X3Rvb2xfc2hlZF9yZXBvc2l0b3JpZXMuYmFzZS51dGlsIGlt
cG9ydCBnZXRfcmVwb3NpdG89CnJ5X2N1cnJlbnRfcmV2aXNpb24KIGZyb20gaW5zdGFsbF9hbmRf
dGVzdF90b29sX3NoZWRfcmVwb3NpdG9yaWVzLmJhc2UudXRpbCBpbXBvcnQgUmVwb3NpdG9yeU1l
PQp0YWRhdGFBcHBsaWNhdGlvbgogZnJvbSBnYWxheHkubW9kZWwub3JtIGltcG9ydCBhbmRfCi1m
cm9tIGdhbGF4eS5tb2RlbC5vcm0gaW1wb3J0IG5vdF8KLWZyb20gZ2FsYXh5Lm1vZGVsLm9ybSBp
bXBvcnQgc2VsZWN0CiBmcm9tIGdhbGF4eS51dGlsIGltcG9ydCBsaXN0aWZ5CiBmcm9tIG1lcmN1
cmlhbCBpbXBvcnQgX192ZXJzaW9uX18KIGZyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlvblBhcnNl
cgpAQCAtMzUsMTAgKzMzLDEyIEBACiBsb2cgPTNEIGxvZ2dpbmcuZ2V0TG9nZ2VyKCAnY2hlY2tf
cmVwb3NpdG9yaWVzX2Zvcl9mdW5jdGlvbmFsX3Rlc3RzJyApCiBhc3NlcnQgc3lzLnZlcnNpb25f
aW5mb1sgOjIgXSA+PTNEICggMiwgNiApCj0yMAorCiBkZWYgY2hlY2tfYW5kX3VwZGF0ZV9yZXBv
c2l0b3J5X21ldGFkYXRhKCBhcHAsIGluZm9fb25seT0zREZhbHNlLCB2ZXJib3NpdD0KeT0zRDEg
KToKICAgICAiIiIKLSAgICBUaGlzIG1ldGhvZCB3aWxsIGl0ZXJhdGUgdGhyb3VnaCBhbGwgcmVj
b3JkcyBpbiB0aGUgcmVwb3NpdG9yeV9tZXRhZGF0PQphIHRhYmxlLCBjaGVja2luZyBlYWNoIG9u
ZSBmb3IgdG9vbCBtZXRhZGF0YSwKLSAgICB0aGVuIGNoZWNraW5nIHRoZSB0b29sIG1ldGFkYXRh
IGZvciB0ZXN0cy4gIEVhY2ggdG9vbCdzIG1ldGFkYXRhIHNob3VsPQpkIGxvb2sgc29tZXRoaW5n
IGxpa2U6CisgICAgVGhpcyBtZXRob2Qgd2lsbCBpdGVyYXRlIHRocm91Z2ggYWxsIHJlY29yZHMg
aW4gdGhlIHJlcG9zaXRvcnlfbWV0YWRhdGEKKyAgICB0YWJsZSwgY2hlY2tpbmcgZWFjaCBvbmUg
Zm9yIHRvb2wgbWV0YWRhdGEsIHRoZW4gY2hlY2tpbmcgdGhlIHRvb2wKKyAgICBtZXRhZGF0YSBm
b3IgdGVzdHMuICBFYWNoIHRvb2wncyBtZXRhZGF0YSBzaG91bGQgbG9vayBzb21ldGhpbmcgbGlr
ZToKICAgICB7CiAgICAgICAiYWRkX3RvX3Rvb2xfcGFuZWwiOiB0cnVlLAogICAgICAgImRlc2Ny
aXB0aW9uIjogIiIsCkBAIC02Myw3ICs2Myw2IEBACiAgICAgdG9vbF9jb3VudCA9M0QgMAogICAg
IGhhc190ZXN0cyA9M0QgMAogICAgIG5vX3Rlc3RzID0zRCAwCi0gICAgbm9fdG9vbHMgPTNEIDAK
ICAgICB2YWxpZF9yZXZpc2lvbnMgPTNEIDAKICAgICBpbnZhbGlkX3JldmlzaW9ucyA9M0QgMAog
ICAgIHJlY29yZHNfY2hlY2tlZCA9M0QgMApAQCAtOTgsOSArOTcsOSBAQAogICAgICAgICBpZiBy
ZXBvc2l0b3J5LmlkIG5vdCBpbiBjaGVja2VkX3JlcG9zaXRvcnlfaWRzOgogICAgICAgICAgICAg
Y2hlY2tlZF9yZXBvc2l0b3J5X2lkcy5hcHBlbmQoIHJlcG9zaXRvcnkuaWQgKQogICAgICAgICBw
cmludCAnIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS09Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nCi0gICAgICAgIHBy
aW50ICcjIENoZWNraW5nIHJldmlzaW9uICVzIG9mICVzIG93bmVkIGJ5ICVzLicgJSAoIGNoYW5n
ZXNldF9yZT0KdmlzaW9uLCAgbmFtZSwgb3duZXIgKQorICAgICAgICBwcmludCAnIyBDaGVja2lu
ZyByZXZpc2lvbiAlcyBvZiAlcyBvd25lZCBieSAlcy4nICUgKCBjaGFuZ2VzZXRfcmU9CnZpc2lv
biwgbmFtZSwgb3duZXIgKQogICAgICAgICBpZiByZXBvc2l0b3J5X21ldGFkYXRhLmlkIGluIHNr
aXBfbWV0YWRhdGFfaWRzOgotICAgICAgICAgICAgcHJpbnQnIyBTa2lwcGluZyByZXZpc2lvbiAl
cyBvZiAlcyBvd25lZCBieSAlcyBiZWNhdXNlIHRoZSBza2k9CnBfdG9vbF90ZXN0IHNldHRpbmcg
aGFzIGJlZW4gc2V0LicgJSAoIGNoYW5nZXNldF9yZXZpc2lvbiwgIG5hbWUsIG93bmVyICkKKyAg
ICAgICAgICAgIHByaW50JyMgU2tpcHBpbmcgcmV2aXNpb24gJXMgb2YgJXMgb3duZWQgYnkgJXMg
YmVjYXVzZSB0aGUgc2tpPQpwX3Rvb2xfdGVzdCBzZXR0aW5nIGhhcyBiZWVuIHNldC4nICUgKCBj
aGFuZ2VzZXRfcmV2aXNpb24sIG5hbWUsIG93bmVyICkKICAgICAgICAgICAgIGNvbnRpbnVlCiAg
ICAgICAgICMgSWYgdGhpcyBjaGFuZ2VzZXQgcmV2aXNpb24gaGFzIG5vIHRvb2xzLCB3ZSBkb24n
dCBuZWVkIHRvIGRvIGFueT0KdGhpbmcgaGVyZSwgdGhlIGluc3RhbGwgYW5kIHRlc3Qgc2NyaXB0
IGhhcyBhIGZpbHRlciBmb3IgcmV0dXJuaW5nCiAgICAgICAgICMgb25seSByZXBvc2l0b3JpZXMg
dGhhdCBjb250YWluIHRvb2xzLgpAQCAtMTA4LDcgKzEwNyw3IEBACiAgICAgICAgIGlmIHRvb2xf
ZGljdHMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAjIENsb25lIHRoZSByZXBvc2l0b3J5IHVw
IHRvIHRoZSBjaGFuZ2VzZXQgcmV2aXNpb24gd2UncmUgY2hlYz0Ka2luZy4KICAgICAgICAgICAg
IHJlcG9fZGlyID0zRCByZXBvc2l0b3J5LnJlcG9fcGF0aCggYXBwICkKLSAgICAgICAgICAgIHJl
cG8gPTNEIGhnX3V0aWwuZ2V0X3JlcG9fZm9yX3JlcG9zaXRvcnkoIGFwcCwgcmVwb3NpdG9yeT0z
RE5vPQpuZSwgcmVwb19wYXRoPTNEcmVwb19kaXIsIGNyZWF0ZT0zREZhbHNlICkKKyAgICAgICAg
ICAgIGhnX3V0aWwuZ2V0X3JlcG9fZm9yX3JlcG9zaXRvcnkoIGFwcCwgcmVwb3NpdG9yeT0zRE5v
bmUsIHJlcG9fPQpwYXRoPTNEcmVwb19kaXIsIGNyZWF0ZT0zREZhbHNlICkKICAgICAgICAgICAg
IHdvcmtfZGlyID0zRCB0ZW1wZmlsZS5ta2R0ZW1wKCBwcmVmaXg9M0QidG1wLXRvb2xzaGVkLWNh
ZnIiICApCiAgICAgICAgICAgICBjbG9uZWRfb2ssIGVycm9yX21lc3NhZ2UgPTNEIGhnX3V0aWwu
Y2xvbmVfcmVwb3NpdG9yeSggcmVwb19kaT0Kciwgd29ya19kaXIsIGNoYW5nZXNldF9yZXZpc2lv
biApCiAgICAgICAgICAgICBpZiBjbG9uZWRfb2s6CkBAIC0xMjcsMTAgKzEyNiwxMyBAQAogICAg
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBwcmludCAnIyBUZXN0IGRhdGEgZGlyZWN0
b3J5IG1pc3NpbmcgaW4gY2hhbmdlc2V0IHJldmlzaW9uPQogJXMgb2YgcmVwb3NpdG9yeSAlcyBv
d25lZCBieSAlcy4nICUgKCBjaGFuZ2VzZXRfcmV2aXNpb24sIG5hbWUsIG93bmVyICkKICAgICAg
ICAgICAgIHByaW50ICcjIENoZWNraW5nIGZvciBmdW5jdGlvbmFsIHRlc3RzIGluIGNoYW5nZXNl
dCByZXZpc2lvbiAlPQpzIG9mICVzLCBvd25lZCBieSAlcy4nICUgXAotICAgICAgICAgICAgICAg
ICggY2hhbmdlc2V0X3JldmlzaW9uLCAgbmFtZSwgb3duZXIgKQotICAgICAgICAgICAgIyBJbnNw
ZWN0IGVhY2ggdG9vbF9kaWN0IGZvciBkZWZpbmVkIGZ1bmN0aW9uYWwgdGVzdHMuICBJZiB0aGU9
CnJlIGFyZSBubyB0ZXN0cywgdGhpcyB0b29sIHNob3VsZCBub3QgYmUgdGVzdGVkLCBzaW5jZSB0
aGUKLSAgICAgICAgICAgICMgdG9vbCBmdW5jdGlvbmFsIHRlc3RzIG9ubHkgcmVwb3J0IGZhaWx1
cmUgaWYgdGhlIHRlc3QgaXRzZWxmPQogZmFpbHMsIG5vdCBpZiBpdCdzIG1pc3Npbmcgb3IgdW5k
ZWZpbmVkLiBGaWx0ZXJpbmcgb3V0IHRob3NlCi0gICAgICAgICAgICAjIHJlcG9zaXRvcmllcyBh
dCB0aGlzIHN0ZXAgd2lsbCByZWR1Y2UgdGhlIG51bWJlciBvZiAiZmFsc2Ugbj0KZWdhdGl2ZXMi
IHRoZSBhdXRvbWF0ZWQgZnVuY3Rpb25hbCB0ZXN0IGZyYW1ld29yayBwcm9kdWNlcy4KKyAgICAg
ICAgICAgICAgICAoIGNoYW5nZXNldF9yZXZpc2lvbiwgbmFtZSwgb3duZXIgKQorICAgICAgICAg
ICAgIyBJbnNwZWN0IGVhY2ggdG9vbF9kaWN0IGZvciBkZWZpbmVkIGZ1bmN0aW9uYWwgdGVzdHMu
ICBJZiB0aGU9CnJlCisgICAgICAgICAgICAjIGFyZSBubyB0ZXN0cywgdGhpcyB0b29sIHNob3Vs
ZCBub3QgYmUgdGVzdGVkLCBzaW5jZSB0aGUgdG9vbAorICAgICAgICAgICAgIyBmdW5jdGlvbmFs
IHRlc3RzIG9ubHkgcmVwb3J0IGZhaWx1cmUgaWYgdGhlIHRlc3QgaXRzZWxmIGZhaWw9CnMsCisg
ICAgICAgICAgICAjIG5vdCBpZiBpdCdzIG1pc3Npbmcgb3IgdW5kZWZpbmVkLiBGaWx0ZXJpbmcg
b3V0IHRob3NlCisgICAgICAgICAgICAjIHJlcG9zaXRvcmllcyBhdCB0aGlzIHN0ZXAgd2lsbCBy
ZWR1Y2UgdGhlIG51bWJlciBvZiAiZmFsc2UKKyAgICAgICAgICAgICMgbmVnYXRpdmVzIiB0aGUg
YXV0b21hdGVkIGZ1bmN0aW9uYWwgdGVzdCBmcmFtZXdvcmsgcHJvZHVjZXMuCiAgICAgICAgICAg
ICBmb3IgdG9vbF9kaWN0IGluIHRvb2xfZGljdHM6CiAgICAgICAgICAgICAgICAgZmFpbHVyZV9y
ZWFzb24gPTNEICcnCiAgICAgICAgICAgICAgICAgcHJvYmxlbV9mb3VuZCA9M0QgRmFsc2UKQEAg
LTE0NywxNiArMTQ5LDE2IEBACiAgICAgICAgICAgICAgICAgaWYgZGVmaW5lZF90ZXN0X2RpY3Rz
IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAjIFdlIG5lZWQgdG8gaW5zcGVjdCB0
aGUgPHRlc3Q+IHRhZ3MgYmVjYXVzZSB0aGUgZm9sbG89CndpbmcgdGFncy4uLgogICAgICAgICAg
ICAgICAgICAgICAjIDx0ZXN0cz4KLSAgICAgICAgICAgICAgICAgICAgIyA8L3Rlc3RzPj0yMAor
ICAgICAgICAgICAgICAgICAgICAjIDwvdGVzdHM+CiAgICAgICAgICAgICAgICAgICAgICMgLi4u
d2lsbCBwcm9kdWNlIHRoZSBmb2xsb3dpbmcgbWV0YWRhdGE6CiAgICAgICAgICAgICAgICAgICAg
ICMgInRlc3RzIjogW10KICAgICAgICAgICAgICAgICAgICAgIyBBbmQgdGhlIGZvbGxvd2luZyB0
YWdzLi4uCiAgICAgICAgICAgICAgICAgICAgICMgPHRlc3RzPgogICAgICAgICAgICAgICAgICAg
ICAjICAgICA8dGVzdD4KICAgICAgICAgICAgICAgICAgICAgIyAgICA8L3Rlc3Q+Ci0gICAgICAg
ICAgICAgICAgICAgICMgPC90ZXN0cz49MjAKKyAgICAgICAgICAgICAgICAgICAgIyA8L3Rlc3Rz
PgogICAgICAgICAgICAgICAgICAgICAjIC4uLndpbGwgcHJvZHVjZSB0aGUgZm9sbG93aW5nIG1l
dGFkYXRhOgotICAgICAgICAgICAgICAgICAgICAjICJ0ZXN0cyI6PTIwCisgICAgICAgICAgICAg
ICAgICAgICMgInRlc3RzIjoKICAgICAgICAgICAgICAgICAgICAgIyAgICBbeyJpbnB1dHMiOiBb
XSwgIm5hbWUiOiAiVGVzdC0xIiwgIm91dHB1dHMiOiBbXSwgPQoicmVxdWlyZWRfZmlsZXMiOiBb
XX1dCiAgICAgICAgICAgICAgICAgICAgIGZvciBkZWZpbmVkX3Rlc3RfZGljdCBpbiBkZWZpbmVk
X3Rlc3RfZGljdHM6CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dHMgPTNEIGRlZmluZWRf
dGVzdF9kaWN0LmdldCggJ2lucHV0cycsIFtdICkKQEAgLTE5NCw3ICsxOTYsNyBAQAogICAgICAg
ICAgICAgICAgICAgICBpZiB0ZXN0X2Vycm9ycyBub3QgaW4gbWlzc2luZ190ZXN0X2NvbXBvbmVu
dHM6CiAgICAgICAgICAgICAgICAgICAgICAgICBtaXNzaW5nX3Rlc3RfY29tcG9uZW50cy5hcHBl
bmQoIHRlc3RfZXJyb3JzICkKICAgICAgICAgICAgICAgICBpZiB0b29sX2hhc19kZWZpbmVkX3Rl
c3RzIGFuZCB0b29sX2hhc190ZXN0X2ZpbGVzOgotICAgICAgICAgICAgICAgICAgICBwcmludCAn
IyBSZXZpc2lvbiAlcyBvZiAlcyBvd25lZCBieSAlcyBpcyBhIHRlc3RhYmxlIHI9CmV2aXNpb24u
JyAlICggY2hhbmdlc2V0X3JldmlzaW9uLCAgbmFtZSwgb3duZXIgKQorICAgICAgICAgICAgICAg
ICAgICBwcmludCAnIyBSZXZpc2lvbiAlcyBvZiAlcyBvd25lZCBieSAlcyBpcyBhIHRlc3RhYmxl
IHI9CmV2aXNpb24uJyAlICggY2hhbmdlc2V0X3JldmlzaW9uLCBuYW1lLCBvd25lciApCiAgICAg
ICAgICAgICAgICAgICAgIHRlc3RhYmxlX3JldmlzaW9uID0zRCBUcnVlCiAgICAgICAgICAgICAj
IFJlbW92ZSB0aGUgY2xvbmVkIHJlcG9zaXRvcnkgcGF0aC4gVGhpcyBoYXMgdG8gYmUgZG9uZSBh
ZnRlcj0KIHRoZSBjaGVjayBmb3IgcmVxdWlyZWQgdGVzdCBmaWxlcywgZm9yIG9idmlvdXMgcmVh
c29ucy4KICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKCB3b3JrX2RpciApOgpAQCAtMjI2
LDggKzIyOCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAjIGEgdGVzdF9lbnZpcm9ubWVu
dCBlbnRyeS4gIElmIHdlIHVzZSBpdCB3ZSBuZWVkID0KdG8gdGVtcG9yYXJpbHkgZWxpbWluYXRl
IGl0IGZyb20gdGhlIGxpc3Qgb2YgdG9vbF90ZXN0X3Jlc3VsdHNfZGljdHMKICAgICAgICAgICAg
ICAgICAgICAgICAgICMgc2luY2UgaXQgd2lsbCBiZSByZS1pbnNlcnRlZCBsYXRlci4KICAgICAg
ICAgICAgICAgICAgICAgICAgIHRvb2xfdGVzdF9yZXN1bHRzX2RpY3QgPTNEIHRvb2xfdGVzdF9y
ZXN1bHRzX2RpY3RzPQoucG9wKCAwICkKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBsZW4oIHRv
b2xfdGVzdF9yZXN1bHRzX2RpY3QgKSA9M0Q9M0QgMiBhbmQgXAotICAgICAgICAgICAgICAgICAg
ICAgICAgJ3Rlc3RfZW52aXJvbm1lbnQnIGluIHRvb2xfdGVzdF9yZXN1bHRzX2RpY3QgYW5kICc9
Cm1pc3NpbmdfdGVzdF9jb21wb25lbnRzJyBpbiB0b29sX3Rlc3RfcmVzdWx0c19kaWN0OgorICAg
ICAgICAgICAgICAgICAgICBlbGlmIChsZW4oIHRvb2xfdGVzdF9yZXN1bHRzX2RpY3QgKSA9M0Q9
M0QgMiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RfZW52aXJvbm1lbnQnIGlu
IHRvb2xfdGVzdF9yZXN1bHRzX2RpY3QgYW5kPQogJ21pc3NpbmdfdGVzdF9jb21wb25lbnRzJyBp
biB0b29sX3Rlc3RfcmVzdWx0c19kaWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICMgV2Ug
Y2FuIHJlLXVzZSB0b29sX3Rlc3RfcmVzdWx0c19kaWN0IGlmIGl0cyBvbmx5PQogZW50cmllcyBh
cmUgInRlc3RfZW52aXJvbm1lbnQiIGFuZCAibWlzc2luZ190ZXN0X2NvbXBvbmVudHMiLgogICAg
ICAgICAgICAgICAgICAgICAgICAgIyBJbiB0aGlzIGNhc2UsIHNvbWUgdG9vbHMgYXJlIG1pc3Np
bmcgdGVzdHMgY29tcG89Cm5lbnRzIHdoaWxlIG90aGVycyBhcmUgbm90LgogICAgICAgICAgICAg
ICAgICAgICAgICAgdG9vbF90ZXN0X3Jlc3VsdHNfZGljdCA9M0QgdG9vbF90ZXN0X3Jlc3VsdHNf
ZGljdHM9Ci5wb3AoIDAgKQpAQCAtMjYwLDE5ICsyNjIsMjIgQEAKICAgICAgICAgICAgICAgICAg
ICAgIyAgICBJbiB0aGUgaW5zdGFsbCBhbmQgdGVzdCBzY3JpcHQsIHRoaXMgYmVoYXZpb3IgaXMg
PQpzbGlnaHRseSBkaWZmZXJlbnQsIHNpbmNlIHdlIGRvIHdhbnQgdG8gYWx3YXlzIHJ1biBmdW5j
dGlvbmFsCiAgICAgICAgICAgICAgICAgICAgICMgICAgdGVzdHMgb24gdGhlIG1vc3QgcmVjZW50
IGRvd25sb2FkYWJsZSBjaGFuZ2VzZXQgcj0KZXZpc2lvbi4KICAgICAgICAgICAgICAgICAgICAg
aWYgc2hvdWxkX3NldF9kb19ub3RfdGVzdF9mbGFnKCBhcHAsIHJlcG9zaXRvcnksIGNoYW5nPQpl
c2V0X3JldmlzaW9uLCB0ZXN0YWJsZV9yZXZpc2lvbiApOgotICAgICAgICAgICAgICAgICAgICAg
ICAgcHJpbnQgIiMgU2V0dGluZyBkb19ub3RfdGVzdCB0byBUcnVlIG9uIHJldmlzaW9uICU9CnMg
b2YgJXMgb3duZWQgYnkgJXMgYmVjYXVzZSBpdCBpcyBtaXNzaW5nIHRlc3QgY29tcG9uZW50cyIg
JSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBjaGFuZ2VzZXRfcmV2aXNpb24sICBu
YW1lLCBvd25lciApCisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiIyBTZXR0aW5nIGRv
X25vdF90ZXN0IHRvIFRydWUgb24gcmV2aXNpb24gJT0KcyBvZiAlcyBvd25lZCBieSAlcyBiZWNh
dXNlIGl0IGlzIG1pc3NpbmcgdGVzdCBjb21wb25lbnRzIiAlICgKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VzZXRfcmV2aXNpb24sIG5hbWUsIG93bmVyCisgICAgICAgICAgICAg
ICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiIyBhbmQgaXQgaXMg
bm90IHRoZSBsYXRlc3QgZG93bmxvYWRhYmxlIHJldj0KaXNpb24uIgogICAgICAgICAgICAgICAg
ICAgICAgICAgcmVwb3NpdG9yeV9tZXRhZGF0YS5kb19ub3RfdGVzdCA9M0QgVHJ1ZQogICAgICAg
ICAgICAgICAgICAgICBpZiBub3QgdGVzdGFibGVfcmV2aXNpb246CiAgICAgICAgICAgICAgICAg
ICAgICAgICAjIEV2ZW4gdGhvdWdoIHNvbWUgdG9vbHMgbWF5IGJlIG1pc3NpbmcgdGVzdCBjb21w
bz0KbmVudHMsIGl0IG1heSBiZSBwb3NzaWJsZSB0byB0ZXN0IG90aGVyIHRvb2xzLiAgU2luY2Ug
dGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAjIGluc3RhbGwgYW5kIHRlc3QgZnJhbWV3b3Jr
IGZpbHRlcnMgb3V0IHJlcG9zaXRvcj0KaWVzIG1hcmtlZCBhcyBtaXNzaW5nIHRlc3QgY29tcG9u
ZW50cywgd2UnbGwgc2V0IGl0IG9ubHkgaWYKICAgICAgICAgICAgICAgICAgICAgICAgICMgbm8g
dG9vbHMgY2FuIGJlIHRlc3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICcjIFNl
dHRpbmcgbWlzc2luZ190ZXN0X2NvbXBvbmVudHMgdG8gVHJ1ZSBmPQpvciByZXZpc2lvbiAlcyBv
ZiAlcyBvd25lZCBieSAlcyBiZWNhdXNlIGFsbCB0b29scyBhcmUgbWlzc2luZyB0ZXN0IGNvbXBv
bmU9Cm50cy4nICUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICggY2hhbmdlc2V0X3Jl
dmlzaW9uLCAgbmFtZSwgb3duZXIgKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJyMg
U2V0dGluZyBtaXNzaW5nX3Rlc3RfY29tcG9uZW50cyB0byBUcnVlIGY9Cm9yIHJldmlzaW9uICVz
IG9mICVzIG93bmVkIGJ5ICVzIGJlY2F1c2UgYWxsIHRvb2xzIGFyZSBtaXNzaW5nIHRlc3QgY29t
cG9uZT0KbnRzLicgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlc2V0X3Jl
dmlzaW9uLCBuYW1lLCBvd25lcgorICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAg
ICAgICAgICAgICAgICAgcmVwb3NpdG9yeV9tZXRhZGF0YS5taXNzaW5nX3Rlc3RfY29tcG9uZW50
cyA9M0QgVHI9CnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiIyBTZXR0aW5nIHRv
b2xzX2Z1bmN0aW9uYWxseV9jb3JyZWN0IHRvIEZhbD0Kc2Ugb24gcmV2aXNpb24gJXMgb2YgJXMg
b3duZWQgYnkgJXMgYmVjYXVzZSBpdCBpcyBtaXNzaW5nIHRlc3QgY29tcG9uZW50cyIgPQolIFwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGNoYW5nZXNldF9yZXZpc2lvbiwgIG5hbWUs
IG93bmVyICkKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICIjIFNldHRpbmcgdG9vbHNf
ZnVuY3Rpb25hbGx5X2NvcnJlY3QgdG8gRmFsPQpzZSBvbiByZXZpc2lvbiAlcyBvZiAlcyBvd25l
ZCBieSAlcyBiZWNhdXNlIGl0IGlzIG1pc3NpbmcgdGVzdCBjb21wb25lbnRzIiA9CiUgKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZXNldF9yZXZpc2lvbiwgbmFtZSwgb3duZXIK
KyAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9z
aXRvcnlfbWV0YWRhdGEudG9vbHNfZnVuY3Rpb25hbGx5X2NvcnJlY3QgPTNEPQogRmFsc2UKICAg
ICAgICAgICAgICAgICAgICAgdG9vbF90ZXN0X3Jlc3VsdHNfZGljdFsgJ21pc3NpbmdfdGVzdF9j
b21wb25lbnRzJyBdID0KPTNEIG1pc3NpbmdfdGVzdF9jb21wb25lbnRzCiAgICAgICAgICAgICAg
ICAgIyBTdG9yZSBvbmx5IHRoZSBjb25maWd1cmVkIG51bWJlciBvZiB0ZXN0IHJ1bnMuCkBAIC0y
OTksNiArMzA0LDcgQEAKICAgICBwcmludCAiIyBFbGFwc2VkIHRpbWU6ICIsIHN0b3AgLSBzdGFy
dAogICAgIHByaW50ICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyM9CiMjIyMjIyMjIyMjIyMjIgo9MjAKKwogZGVmIGNoZWNrX2Zv
cl9taXNzaW5nX3Rlc3RfZmlsZXMoIHRlc3RfZGVmaW5pdGlvbiwgdGVzdF9kYXRhX3BhdGggKToK
ICAgICAnJydQcm9jZXNzIHRoZSB0b29sJ3MgZnVuY3Rpb25hbCB0ZXN0IGRlZmluaXRpb25zIGFu
ZCBjaGVjayBmb3IgZWFjaCBmPQppbGUgc3BlY2lmaWVkIGFzIGFuIGlucHV0IG9yIG91dHB1dC4n
JycKICAgICBtaXNzaW5nX3Rlc3RfZmlsZXMgPTNEIFtdCkBAIC0zMTQsNiArMzIwLDcgQEAKICAg
ICAgICAgICAgIG1pc3NpbmdfdGVzdF9maWxlcy5hcHBlbmQoIHJlcXVpcmVkX2ZpbGUgKQogICAg
IHJldHVybiBtaXNzaW5nX3Rlc3RfZmlsZXMKPTIwCisKIGRlZiBtYWluKCk6CiAgICAgJycnU2Ny
aXB0IHRoYXQgY2hlY2tzIHJlcG9zaXRvcmllcyB0byBzZWUgaWYgdGhlIHRvb2xzIGNvbnRhaW5l
ZCB3aXRoaT0KbiB0aGVtIGhhdmUgZnVuY3Rpb25hbCB0ZXN0cyBkZWZpbmVkLicnJwogICAgIHBh
cnNlciA9M0QgT3B0aW9uUGFyc2VyKCkKQEAgLTMyOSw3ICszMzYsNyBAQAogICAgIGV4Y2VwdCBJ
bmRleEVycm9yOgogICAgICAgICBwcmludCAiVXNhZ2U6IHB5dGhvbiAlcyA8dG9vbCBzaGVkIC5p
bmkgZmlsZT4gW29wdGlvbnNdIiAlIHN5cy5hcmc9CnZbIDAgXQogICAgICAgICBleGl0KCAxMjcg
KQotICAgIGNvbmZpZ19wYXJzZXIgPTNEIENvbmZpZ1BhcnNlci5Db25maWdQYXJzZXIoIHsnaGVy
ZSc6b3MuZ2V0Y3dkKCkgfSApCisgICAgY29uZmlnX3BhcnNlciA9M0QgQ29uZmlnUGFyc2VyLkNv
bmZpZ1BhcnNlciggeyAnaGVyZSc6IG9zLmdldGN3ZCgpIH0gKQogICAgIGNvbmZpZ19wYXJzZXIu
cmVhZCggaW5pX2ZpbGUgKQogICAgIGNvbmZpZ19kaWN0ID0zRCB7fQogICAgIGZvciBrZXksIHZh
bHVlIGluIGNvbmZpZ19wYXJzZXIuaXRlbXMoICJhcHA6bWFpbiIgKToKQEAgLTM0OSw2ICszNTYs
NyBAQAogICAgICAgICBwcmludCAiIyBEaXNwbGF5aW5nIGV4dHJhIGluZm9ybWF0aW9uICggLS12
ZXJib3NpdHkgPTNEICVkICkiICUgb3A9CnRpb25zLnZlcmJvc2l0eQogICAgIGNoZWNrX2FuZF91
cGRhdGVfcmVwb3NpdG9yeV9tZXRhZGF0YSggYXBwLCBpbmZvX29ubHk9M0RvcHRpb25zLmluZm9f
b249Cmx5LCB2ZXJib3NpdHk9M0RvcHRpb25zLnZlcmJvc2l0eSApCj0yMAorCiBkZWYgc2hvdWxk
X3NldF9kb19ub3RfdGVzdF9mbGFnKCBhcHAsIHJlcG9zaXRvcnksIGNoYW5nZXNldF9yZXZpc2lv
biwgdGVzdD0KYWJsZV9yZXZpc2lvbiApOgogICAgICIiIgogICAgIFRoZSByZWNlaXZlZCB0ZXN0
YWJsZV9yZXZpc2lvbiBpcyBUcnVlIGlmIHRoZSB0b29sIGhhcyBkZWZpbmVkIHRlc3RzIGE9Cm5k
IHRlc3QgZmlsZXMgYXJlIGluIHRoZSByZXBvc2l0b3J5CgpkaWZmIC1yIDJhNjYzNTEwMzUzYmE4
MjY4ZGVmZjA2M2JhNTBkMjdkZTE4MGI4ODkgLXIgZDgzNjg3MTk0Y2NmODQ5ZjAzYzE2NjQ9Cjc5
MDcxYmQzM2ExYjQ0N2Y0IHN0YXRpYy9zY3JpcHRzL212Yy91aS91aS1wb3J0bGV0LmpzCi0tLSBh
L3N0YXRpYy9zY3JpcHRzL212Yy91aS91aS1wb3J0bGV0LmpzCisrKyBiL3N0YXRpYy9zY3JpcHRz
L212Yy91aS91aS1wb3J0bGV0LmpzCkBAIC00NCwxNyArNDQsOCBAQAogICAgICAgICAvLyBsaW5r
IGhlYWRlcgogICAgICAgICB0aGlzLiRoZWFkZXIgPTNEIHRoaXMuJGVsLmZpbmQoJy5wb3J0bGV0
LWhlYWRlcicpOwogICAgICAgID0yMAotICAgICAgICAvLyBzZXQgY29udGVudCBmb3JtYXQKKyAg
ICAgICAgLy8gbGluayBwb3J0bGV0IGNvbnRlbnQgKHdyYXBzICdjb250ZW50JykKICAgICAgICAg
dmFyICRwb3J0bGV0X2NvbnRlbnQgPTNEIHRoaXMuJGVsLmZpbmQoJy5wb3J0bGV0LWNvbnRlbnQn
KTsKLSAgICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuc2Nyb2xsYWJsZSkgewotICAgICAgICAgICAg
aWYgKHRoaXMub3B0aW9ucy50aXRsZSkgewotICAgICAgICAgICAgICAgICRwb3J0bGV0X2NvbnRl
bnQuYWRkQ2xhc3MoJ25vLXNjcm9sbCcpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAkcG9ydGxldF9jb250ZW50LmFkZENsYXNzKCduby1zY3JvbGwtbm8tdGl0bGUnKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICRwb3J0bGV0X2Nv
bnRlbnQuYWRkQ2xhc3MoJ3Njcm9sbCcpOwotICAgICAgICB9CiAgICAgICAgPTIwCiAgICAgICAg
IC8vIHNldCBjb250ZW50IHBhZGRpbmcKICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5ub3BhZGRp
bmcpIHsKCmRpZmYgLXIgMmE2NjM1MTAzNTNiYTgyNjhkZWZmMDYzYmE1MGQyN2RlMTgwYjg4OSAt
ciBkODM2ODcxOTRjY2Y4NDlmMDNjMTY2ND0KNzkwNzFiZDMzYTFiNDQ3ZjQgc3RhdGljL3Njcmlw
dHMvcGFja2VkL212Yy91aS91aS1wb3J0bGV0LmpzCi0tLSBhL3N0YXRpYy9zY3JpcHRzL3BhY2tl
ZC9tdmMvdWkvdWktcG9ydGxldC5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3Vp
L3VpLXBvcnRsZXQuanMKQEAgLTEsMSArMSwxIEBACi1kZWZpbmUoWyJ1dGlscy91dGlscyJdLGZ1
bmN0aW9uKGEpe3ZhciBiPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe3Zpc2libGU6Zj0KYWxzZSxv
cHRpb25zRGVmYXVsdDp7dGl0bGU6IiIsaWNvbjoiIixidXR0b25zOm51bGwsYm9keTpudWxsLHNj
cm9sbGFibGU6dHJ1PQplLG5vcGFkZGluZzpmYWxzZSxvcGVyYXRpb25zOm51bGwscGxhY2VtZW50
OiJib3R0b20iLGNsczoidWktcG9ydGxldCIsb3BlcmE9CnRpb25zX2ZsdDoicmlnaHQifSwkdGl0
bGU6bnVsbCwkY29udGVudDpudWxsLCRidXR0b25zOm51bGwsJG9wZXJhdGlvbnM6bnVsbD0KLCRo
ZWFkZXI6bnVsbCxpbml0aWFsaXplOmZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucz0zRGEubWVyZ2Uo
ZSx0aGlzLm9wdGlvbnNEPQplZmF1bHQpO3RoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0
aGlzLm9wdGlvbnMpKTt0aGlzLiRjb250ZW50PTNEdGhpcy49CiRlbC5maW5kKCIuY29udGVudCIp
O3RoaXMuJHRpdGxlPTNEdGhpcy4kZWwuZmluZCgiLnBvcnRsZXQtdGl0bGUtdGV4dCIpO3RoaT0K
cy4kaGVhZGVyPTNEdGhpcy4kZWwuZmluZCgiLnBvcnRsZXQtaGVhZGVyIik7dmFyIGQ9M0R0aGlz
LiRlbC5maW5kKCIucG9ydGxlPQp0LWNvbnRlbnQiKTtpZighdGhpcy5vcHRpb25zLnNjcm9sbGFi
bGUpe2lmKHRoaXMub3B0aW9ucy50aXRsZSl7ZC5hZGRDbGFzcyg9CiJuby1zY3JvbGwiKX1lbHNl
e2QuYWRkQ2xhc3MoIm5vLXNjcm9sbC1uby10aXRsZSIpfX1lbHNle2QuYWRkQ2xhc3MoInNjcm9s
bD0KIil9aWYodGhpcy5vcHRpb25zLm5vcGFkZGluZyl7ZC5jc3MoInBhZGRpbmciLCIwcHgiKTt0
aGlzLiRjb250ZW50LmNzcygicGFkPQpkaW5nIiwiMHB4Iil9dGhpcy4kYnV0dG9ucz0zRCQodGhp
cy5lbCkuZmluZCgiLmJ1dHRvbnMiKTtpZih0aGlzLm9wdGlvbnMuYnU9CnR0b25zKXt2YXIgYz0z
RHRoaXM7JC5lYWNoKHRoaXMub3B0aW9ucy5idXR0b25zLGZ1bmN0aW9uKGYsZyl7Zy4kZWwucHJv
cCgiaT0KZCIsZik7Yy4kYnV0dG9ucy5hcHBlbmQoZy4kZWwpfSl9ZWxzZXt0aGlzLiRidXR0b25z
LnJlbW92ZSgpfXRoaXMuJG9wZXJhdGlvPQpucz0zRCQodGhpcy5lbCkuZmluZCgiLm9wZXJhdGlv
bnMiKTtpZih0aGlzLm9wdGlvbnMub3BlcmF0aW9ucyl7dmFyIGM9M0R0aGk9CnM7JC5lYWNoKHRo
aXMub3B0aW9ucy5vcGVyYXRpb25zLGZ1bmN0aW9uKGYsZyl7Zy4kZWwucHJvcCgiaWQiLGYpO2Mu
JG9wZXJhdD0KaW9ucy5hcHBlbmQoZy4kZWwpfSl9aWYodGhpcy5vcHRpb25zLmJvZHkpe3RoaXMu
YXBwZW5kKHRoaXMub3B0aW9ucy5ib2R5KX19PQosYXBwZW5kOmZ1bmN0aW9uKGQsYyl7aWYoYyl7
dGhpcy4kY29udGVudC5hcHBlbmQoZCl9ZWxzZXt0aGlzLiRjb250ZW50LmFwcGU9Cm5kKGEud3Jh
cChkKSl9fSxjb250ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJGNvbnRlbnR9LHNob3c6ZnVu
Y3Rpb24oKXt0aD0KaXMuJGVsLmZhZGVJbigiZmFzdCIpO3RoaXMudmlzaWJsZT0zRHRydWV9LGhp
ZGU6ZnVuY3Rpb24oKXt0aGlzLiRlbC5mYWRlT3V0PQooImZhc3QiKTt0aGlzLnZpc2libGU9M0Rm
YWxzZX0sZW5hYmxlQnV0dG9uOmZ1bmN0aW9uKGMpe3RoaXMuJGJ1dHRvbnMuZmluZCg9CiIjIitj
KS5wcm9wKCJkaXNhYmxlZCIsZmFsc2UpfSxkaXNhYmxlQnV0dG9uOmZ1bmN0aW9uKGMpe3RoaXMu
JGJ1dHRvbnMuZmluZD0KKCIjIitjKS5wcm9wKCJkaXNhYmxlZCIsdHJ1ZSl9LGhpZGVPcGVyYXRp
b246ZnVuY3Rpb24oYyl7dGhpcy4kb3BlcmF0aW9ucy5mPQppbmQoIiMiK2MpLmhpZGUoKX0sc2hv
d09wZXJhdGlvbjpmdW5jdGlvbihjKXt0aGlzLiRvcGVyYXRpb25zLmZpbmQoIiMiK2MpLnM9Cmhv
dygpfSxzZXRPcGVyYXRpb246ZnVuY3Rpb24oZSxkKXt2YXIgYz0zRHRoaXMuJG9wZXJhdGlvbnMu
ZmluZCgiIyIrZSk7Yy5vZj0KZigiY2xpY2siKTtjLm9uKCJjbGljayIsZCl9LHRpdGxlOmZ1bmN0
aW9uKGQpe3ZhciBjPTNEdGhpcy4kdGl0bGU7aWYoZCl7Yy5oPQp0bWwoZCl9cmV0dXJuIGMuaHRt
bCgpfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZCl7dmFyIGM9M0QnPGRpdiBpZD0zRCInK2QuaWQrJyI9
CiBjbGFzcz0zRCInK2QuY2xzKyciPic7aWYoZC50aXRsZSl7Yys9M0QnPGRpdiBjbGFzcz0zRCJw
b3J0bGV0LWhlYWRlciI+PGRpdj0KIGNsYXNzPTNEIm9wZXJhdGlvbnMiIHN0eWxlPTNEImZsb2F0
OiAnK2Qub3BlcmF0aW9uc19mbHQrJzsiPjwvZGl2PjxkaXYgY2xhPQpzcz0zRCJwb3J0bGV0LXRp
dGxlIj4nO2lmKGQuaWNvbil7Yys9M0QnPGkgY2xhc3M9M0QiaWNvbiBmYSAnK2QuaWNvbisnIj4m
bmI9CnNwOzwvaT4nfWMrPTNEJzxzcGFuIGNsYXNzPTNEInBvcnRsZXQtdGl0bGUtdGV4dCI+Jytk
LnRpdGxlKyI8L3NwYW4+PC9kaXY+PD0KL2Rpdj4ifWMrPTNEJzxkaXYgY2xhc3M9M0QicG9ydGxl
dC1jb250ZW50Ij4nO2lmKGQucGxhY2VtZW50PTNEPTNEInRvcCIpe2MrPQo9M0QnPGRpdiBjbGFz
cz0zRCJidXR0b25zIj48L2Rpdj4nfWMrPTNEJzxkaXYgY2xhc3M9M0QiY29udGVudCI+PC9kaXY+
JztpZig9CmQucGxhY2VtZW50PTNEPTNEImJvdHRvbSIpe2MrPTNEJzxkaXYgY2xhc3M9M0QiYnV0
dG9ucyI+PC9kaXY+J31jKz0zRCI8L2Rpdj0KPjwvZGl2PiI7cmV0dXJuIGN9fSk7cmV0dXJue1Zp
ZXc6Yn19KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkZWZpbmUoWyJ1dGlscy91dGls
cyJdLGZ1bmN0aW9uKGEpe3ZhciBiPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe3Zpc2libGU6Zj0K
YWxzZSxvcHRpb25zRGVmYXVsdDp7dGl0bGU6IiIsaWNvbjoiIixidXR0b25zOm51bGwsYm9keTpu
dWxsLHNjcm9sbGFibGU6dHJ1PQplLG5vcGFkZGluZzpmYWxzZSxvcGVyYXRpb25zOm51bGwscGxh
Y2VtZW50OiJib3R0b20iLGNsczoidWktcG9ydGxldCIsb3BlcmE9CnRpb25zX2ZsdDoicmlnaHQi
fSwkdGl0bGU6bnVsbCwkY29udGVudDpudWxsLCRidXR0b25zOm51bGwsJG9wZXJhdGlvbnM6bnVs
bD0KLCRoZWFkZXI6bnVsbCxpbml0aWFsaXplOmZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucz0zRGEu
bWVyZ2UoZSx0aGlzLm9wdGlvbnNEPQplZmF1bHQpO3RoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1w
bGF0ZSh0aGlzLm9wdGlvbnMpKTt0aGlzLiRjb250ZW50PTNEdGhpcy49CiRlbC5maW5kKCIuY29u
dGVudCIpO3RoaXMuJHRpdGxlPTNEdGhpcy4kZWwuZmluZCgiLnBvcnRsZXQtdGl0bGUtdGV4dCIp
O3RoaT0Kcy4kaGVhZGVyPTNEdGhpcy4kZWwuZmluZCgiLnBvcnRsZXQtaGVhZGVyIik7dmFyIGQ9
M0R0aGlzLiRlbC5maW5kKCIucG9ydGxlPQp0LWNvbnRlbnQiKTtpZih0aGlzLm9wdGlvbnMubm9w
YWRkaW5nKXtkLmNzcygicGFkZGluZyIsIjBweCIpO3RoaXMuJGNvbnRlbnQ9Ci5jc3MoInBhZGRp
bmciLCIwcHgiKX10aGlzLiRidXR0b25zPTNEJCh0aGlzLmVsKS5maW5kKCIuYnV0dG9ucyIpO2lm
KHRoaXMubz0KcHRpb25zLmJ1dHRvbnMpe3ZhciBjPTNEdGhpczskLmVhY2godGhpcy5vcHRpb25z
LmJ1dHRvbnMsZnVuY3Rpb24oZixnKXtnLiRlPQpsLnByb3AoImlkIixmKTtjLiRidXR0b25zLmFw
cGVuZChnLiRlbCl9KX1lbHNle3RoaXMuJGJ1dHRvbnMucmVtb3ZlKCl9dGhpcy49CiRvcGVyYXRp
b25zPTNEJCh0aGlzLmVsKS5maW5kKCIub3BlcmF0aW9ucyIpO2lmKHRoaXMub3B0aW9ucy5vcGVy
YXRpb25zKXt2YT0KciBjPTNEdGhpczskLmVhY2godGhpcy5vcHRpb25zLm9wZXJhdGlvbnMsZnVu
Y3Rpb24oZixnKXtnLiRlbC5wcm9wKCJpZCIsZik7PQpjLiRvcGVyYXRpb25zLmFwcGVuZChnLiRl
bCl9KX1pZih0aGlzLm9wdGlvbnMuYm9keSl7dGhpcy5hcHBlbmQodGhpcy5vcHRpb249CnMuYm9k
eSl9fSxhcHBlbmQ6ZnVuY3Rpb24oZCxjKXtpZihjKXt0aGlzLiRjb250ZW50LmFwcGVuZChkKX1l
bHNle3RoaXMuJGNvbj0KdGVudC5hcHBlbmQoYS53cmFwKGQpKX19LGNvbnRlbnQ6ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy4kY29udGVudH0sc2hvdzpmdW5jPQp0aW9uKCl7dGhpcy4kZWwuZmFkZUlu
KCJmYXN0Iik7dGhpcy52aXNpYmxlPTNEdHJ1ZX0saGlkZTpmdW5jdGlvbigpe3RoaXMuJGU9Cmwu
ZmFkZU91dCgiZmFzdCIpO3RoaXMudmlzaWJsZT0zRGZhbHNlfSxlbmFibGVCdXR0b246ZnVuY3Rp
b24oYyl7dGhpcy4kYnV0dD0Kb25zLmZpbmQoIiMiK2MpLnByb3AoImRpc2FibGVkIixmYWxzZSl9
LGRpc2FibGVCdXR0b246ZnVuY3Rpb24oYyl7dGhpcy4kYnV0PQp0b25zLmZpbmQoIiMiK2MpLnBy
b3AoImRpc2FibGVkIix0cnVlKX0saGlkZU9wZXJhdGlvbjpmdW5jdGlvbihjKXt0aGlzLiRvcGU9
CnJhdGlvbnMuZmluZCgiIyIrYykuaGlkZSgpfSxzaG93T3BlcmF0aW9uOmZ1bmN0aW9uKGMpe3Ro
aXMuJG9wZXJhdGlvbnMuZmluZD0KKCIjIitjKS5zaG93KCl9LHNldE9wZXJhdGlvbjpmdW5jdGlv
bihlLGQpe3ZhciBjPTNEdGhpcy4kb3BlcmF0aW9ucy5maW5kKCIjPQoiK2UpO2Mub2ZmKCJjbGlj
ayIpO2Mub24oImNsaWNrIixkKX0sdGl0bGU6ZnVuY3Rpb24oZCl7dmFyIGM9M0R0aGlzLiR0aXRs
ZTs9CmlmKGQpe2MuaHRtbChkKX1yZXR1cm4gYy5odG1sKCl9LF90ZW1wbGF0ZTpmdW5jdGlvbihk
KXt2YXIgYz0zRCc8ZGl2IGlkPTNEIj0KJytkLmlkKyciIGNsYXNzPTNEIicrZC5jbHMrJyI+Jztp
ZihkLnRpdGxlKXtjKz0zRCc8ZGl2IGNsYXNzPTNEInBvcnRsZXQtaGVhPQpkZXIiPjxkaXYgY2xh
c3M9M0Qib3BlcmF0aW9ucyIgc3R5bGU9M0QiZmxvYXQ6ICcrZC5vcGVyYXRpb25zX2ZsdCsnOyI+
PC9kaXY9Cj48ZGl2IGNsYXNzPTNEInBvcnRsZXQtdGl0bGUiPic7aWYoZC5pY29uKXtjKz0zRCc8
aSBjbGFzcz0zRCJpY29uIGZhICcrZC5pYz0Kb24rJyI+Jm5ic3A7PC9pPid9Yys9M0QnPHNwYW4g
Y2xhc3M9M0QicG9ydGxldC10aXRsZS10ZXh0Ij4nK2QudGl0bGUrIjwvc3BhPQpuPjwvZGl2Pjwv
ZGl2PiJ9Yys9M0QnPGRpdiBjbGFzcz0zRCJwb3J0bGV0LWNvbnRlbnQiPic7aWYoZC5wbGFjZW1l
bnQ9M0Q9M0Q9CiJ0b3AiKXtjKz0zRCc8ZGl2IGNsYXNzPTNEImJ1dHRvbnMiPjwvZGl2Pid9Yys9
M0QnPGRpdiBjbGFzcz0zRCJjb250ZW50Ij48Lz0KZGl2Pic7aWYoZC5wbGFjZW1lbnQ9M0Q9M0Qi
Ym90dG9tIil7Yys9M0QnPGRpdiBjbGFzcz0zRCJidXR0b25zIj48L2Rpdj4nfWMrPQo9M0QiPC9k
aXY+PC9kaXY+IjtyZXR1cm4gY319KTtyZXR1cm57VmlldzpifX0pOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKCmRpZmYgLXIgMmE2NjM1MTAzNTNiYTgyNjhkZWZmMDYzYmE1MGQyN2RlMTgw
Yjg4OSAtciBkODM2ODcxOTRjY2Y4NDlmMDNjMTY2ND0KNzkwNzFiZDMzYTFiNDQ3ZjQgc3RhdGlj
L3N0eWxlL2JsdWUvYmFzZS5jc3MKLS0tIGEvc3RhdGljL3N0eWxlL2JsdWUvYmFzZS5jc3MKKysr
IGIvc3RhdGljL3N0eWxlL2JsdWUvYmFzZS5jc3MKQEAgLTE0MTYsNyArMTQxNiw2IEBACiAudWkt
cG9ydGxldCAucG9ydGxldC1oZWFkZXIgLnBvcnRsZXQtdGl0bGUgLmljb24sLnVpLXBvcnRsZXQt
c2xpbSAucG9ydGxldD0KLWhlYWRlciAucG9ydGxldC10aXRsZSAuaWNvbntmb250LXNpemU6MS4y
ZW07dmVydGljYWwtYWxpZ246bWlkZGxlfQogLnVpLXBvcnRsZXQgLnBvcnRsZXQtYnV0dG9ucywu
dWktcG9ydGxldC1zbGltIC5wb3J0bGV0LWJ1dHRvbnN7aGVpZ2h0OjUwcHg9CjtwYWRkaW5nOjEw
cHh9CiAudWktcG9ydGxldCAucG9ydGxldC1jb250ZW50LC51aS1wb3J0bGV0LXNsaW0gLnBvcnRs
ZXQtY29udGVudHtoZWlnaHQ6aW5oZT0Kcml0O3BhZGRpbmc6MTBweDtjbGVhcjpib3RofS51aS1w
b3J0bGV0IC5wb3J0bGV0LWNvbnRlbnQgLmNvbnRlbnQsLnVpLXBvcnRsPQpldC1zbGltIC5wb3J0
bGV0LWNvbnRlbnQgLmNvbnRlbnR7cGFkZGluZzoxMHB4O2hlaWdodDoxMDAlO3dpZHRoOjEwMCV9
LnVpLXA9Cm9ydGxldCAucG9ydGxldC1jb250ZW50IC5jb250ZW50IC5idXR0b25zLC51aS1wb3J0
bGV0LXNsaW0gLnBvcnRsZXQtY29udGVudD0KIC5jb250ZW50IC5idXR0b25ze2hlaWdodDo1MHB4
O3BhZGRpbmc6MTBweH0KLS51aS1wb3J0bGV0IC5uby1zY3JvbGwsLnVpLXBvcnRsZXQtc2xpbSAu
bm8tc2Nyb2xse2hlaWdodDpjYWxjKDEwMCUgLSA4MHB4PQopfQogLnVpLXBvcnRsZXQtc2xpbXtt
YXgtd2lkdGg6OTAwcHh9CiAudWktcG9ydGxldC1yZXBlYXQsLnVpLXBvcnRsZXQtc2VjdGlvbiwu
dWktcG9ydGxldC1zZWN0aW9ue2JvcmRlcjpub25lO2Jvcj0KZGVyLWxlZnQ6c29saWQgM3B4ICNl
YmQ5YjI7Ym9yZGVyLXJhZGl1czo1cHh9LnVpLXBvcnRsZXQtcmVwZWF0IC5wb3J0bGV0LWhlPQph
ZGVyLC51aS1wb3J0bGV0LXNlY3Rpb24gLnBvcnRsZXQtaGVhZGVye2JhY2tncm91bmQ6I2ViZDli
Mjtib3JkZXItcmFkaXVzOjM9CnB4O2JvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6MHB4O3BhZGRp
bmc6MHB4IDJweH0KIC51aS1wb3J0bGV0LXJlcGVhdCAucG9ydGxldC1jb250ZW50LC51aS1wb3J0
bGV0LXNlY3Rpb24gLnBvcnRsZXQtY29udGVudHtwPQphZGRpbmc6MHB4fS51aS1wb3J0bGV0LXJl
cGVhdCAucG9ydGxldC1jb250ZW50IC5jb250ZW50LC51aS1wb3J0bGV0LXNlY3Rpb249CiAucG9y
dGxldC1jb250ZW50IC5jb250ZW50e3BhZGRpbmc6MHB4O3BhZGRpbmctbGVmdDoxMHB4fQoKZGlm
ZiAtciAyYTY2MzUxMDM1M2JhODI2OGRlZmYwNjNiYTUwZDI3ZGUxODBiODg5IC1yIGQ4MzY4NzE5
NGNjZjg0OWYwM2MxNjY0PQo3OTA3MWJkMzNhMWI0NDdmNCBzdGF0aWMvc3R5bGUvc3JjL2xlc3Mv
dWkubGVzcwotLS0gYS9zdGF0aWMvc3R5bGUvc3JjL2xlc3MvdWkubGVzcworKysgYi9zdGF0aWMv
c3R5bGUvc3JjL2xlc3MvdWkubGVzcwpAQCAtMTk4LDEwICsxOTgsNiBAQAogICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQotCi0gICAgLm5vLXNjcm9sbCB7Ci0gICAgICAgIGhlaWdodDog
fidjYWxjKDEwMCUgLSA4MHB4KSc7Ci0gICAgfQogfQo9MjAKIC51aS1wb3J0bGV0LXNsaW0gewoK
ZGlmZiAtciAyYTY2MzUxMDM1M2JhODI2OGRlZmYwNjNiYTUwZDI3ZGUxODBiODg5IC1yIGQ4MzY4
NzE5NGNjZjg0OWYwM2MxNjY0PQo3OTA3MWJkMzNhMWI0NDdmNCB0ZXN0L2FwaS9oZWxwZXJzLnB5
Ci0tLSBhL3Rlc3QvYXBpL2hlbHBlcnMucHkKKysrIGIvdGVzdC9hcGkvaGVscGVycy5weQpAQCAt
MTM0LDcgKzEzNCw3IEBACj0yMAogICAgIGRlZiBnZXRfaGlzdG9yeV9kYXRhc2V0X2RldGFpbHMo
IHNlbGYsIGhpc3RvcnlfaWQsICoqa3dkcyApOgogICAgICAgICBkYXRhc2V0X2lkID0zRCBzZWxm
Ll9faGlzdG9yeV9kYXRhc2V0X2lkKCBoaXN0b3J5X2lkLCAqKmt3ZHMgKQotICAgICAgICBkZXRh
aWxzX3Jlc3BvbnNlID0zRCBzZWxmLl9fZ2V0X2NvbnRlbnRzX3JlcXVlc3QoIGhpc3RvcnlfaWQs
ICIvJXM9CiIgJSBkYXRhc2V0X2lkICkKKyAgICAgICAgZGV0YWlsc19yZXNwb25zZSA9M0Qgc2Vs
Zi5fX2dldF9jb250ZW50c19yZXF1ZXN0KCBoaXN0b3J5X2lkLCAiL2RhPQp0YXNldHMvJXMiICUg
ZGF0YXNldF9pZCApCiAgICAgICAgIGFzc2VydCBkZXRhaWxzX3Jlc3BvbnNlLnN0YXR1c19jb2Rl
ID0zRD0zRCAyMDAKICAgICAgICAgcmV0dXJuIGRldGFpbHNfcmVzcG9uc2UuanNvbigpCj0yMAoK
VGhpcyBkaWZmIGlzIHNvIGJpZyB0aGF0IHdlIG5lZWRlZCB0byB0cnVuY2F0ZSB0aGUgcmVtYWlu
ZGVyLgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRz
L2I0NTBkNzE5ODdhMS8KQ2hhbmdlc2V0OiAgIGI0NTBkNzE5ODdhMQpVc2VyOiAgICAgICAgY2Fy
bGZlYmVyaGFyZApEYXRlOiAgICAgICAgMjAxNS0wMS0xNSAxODoxODo0MSswMDowMApTdW1tYXJ5
OiAgICAgTWVyZ2VkIGdhbGF4eS9nYWxheHktY2VudHJhbCBpbnRvIGRlZmF1bHQKQWZmZWN0ZWQg
IzogIDEgZmlsZQoKZGlmZiAtciBkODM2ODcxOTRjY2Y4NDlmMDNjMTY2NDc5MDcxYmQzM2ExYjQ0
N2Y0IC1yIGI0NTBkNzE5ODdhMWIyYTIxZWE1ZTUyPQowMzUxMmZlMGQ1ZWE5MTJmOCBlZ2dzLmlu
aQotLS0gYS9lZ2dzLmluaQorKysgYi9lZ2dzLmluaQpAQCAtMzQsNyArMzQsNyBAQAogYW1xcCA9
M0QgMS40LjUKIGFueWpzb24gPTNEIDAuMy4zCiBCZWFrZXIgPTNEIDEuNAotYmlvYmxlbmQgPTNE
IDAuNC4yCitiaW9ibGVuZCA9M0QgMC41LjIKIGJvdG8gPTNEIDIuMjcuMAogZGVjb3JhdG9yID0z
RCAzLjEuMgogZG9jdXRpbHMgPTNEIDAuNwpAQCAtNjMsNiArNjMsNyBAQAogcmVxdWVzdHMgPTNE
IDIuMi4xCiBSb3V0ZXMgPTNEIDEuMTIuMwogc2ltcGxlanNvbiA9M0QgMi4xLjEKK3NpeCA9M0Qg
MS45LjAKIHNxbGFsY2hlbXlfbWlncmF0ZSA9M0QgMC43LjIKIHNzaCA9M0QgMS43LjE0CiBTVkdG
aWcgPTNEIDEuMS42CgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJh
bC9jb21taXRzL2Q0MjdkYzIwNWNkZC8KQ2hhbmdlc2V0OiAgIGQ0MjdkYzIwNWNkZApVc2VyOiAg
ICAgICAgY2FybGZlYmVyaGFyZApEYXRlOiAgICAgICAgMjAxNS0wMS0xNSAxODoxOTo0OCswMDow
MApTdW1tYXJ5OiAgICAgTWlub3IgZml4ZXMgYW5kIGRvY3VtZW50YXRpb24KQWZmZWN0ZWQgIzog
IDEwIGZpbGVzCgpkaWZmIC1yIGI0NTBkNzE5ODdhMWIyYTIxZWE1ZTUyMDM1MTJmZTBkNWVhOTEy
ZjggLXIgZDQyN2RjMjA1Y2RkY2UzMWRiMjYzMzY9CjdmNzYzNmUzMzE4MDQzZjUxIGxpYi9nYWxh
eHkvbWFuYWdlcnMvYmFzZS5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL2Jhc2UucHkKKysr
IGIvbGliL2dhbGF4eS9tYW5hZ2Vycy9iYXNlLnB5CkBAIC0xLDMgKzEsMzAgQEAKKyIiIgorS2Vl
cHMgdGhlIG9sZGVyIEJhc2VDb250cm9sbGVyIHNlY3VyaXR5IGFuZCBmZXRjaGluZyBtZXRob2Rz
IGFuZCBhbHNvCitkZWZpbmVzIGEgYmFzZSBNb2RlbE1hbmFnZXIsIE1vZGVsU2VyaWFsaXplciwg
YW5kIE1vZGVsRGVzZXJpYWxpemVyLgorCitNb2RlbE1hbmFnZXJzIGFyZSB1c2VkIGZvciBvcGVy
YXRpb25zIG9uIG1vZGVscyB0aGF0IG9jY3VyIG91dHNpZGUgdGhlIHNjbz0KcGUgb2YKK2Egc2lu
Z2xlIG1vZGVsIG9iamVjdCwgc3VjaCBhczoKKyAgICAtIG9iamVjdCBjcmVhdGlvbgorICAgIC0g
b2JqZWN0IGxvb2t1cAorICAgIC0gaW50ZXJhY3Rpb25zIGJldHdlZW4gMisgb2JqZWN0cyBvZiBk
aWZmZXJlbnQgbW9kZWwgY2xhc3NlcworCisoU2luY2UgdGhlc2Ugd2VyZSB0byByZXBsYWNlIG1v
ZGVsIE1peGlucyBmcm9tCit3ZWIvZnJhbWV3b3JrL2Jhc2UvY29udHJvbGxlci5weSB0aGUgcnVs
ZSBvZiB0aHVtYiB1c2VkIHRoZXJlIGFsc28gZ2VuZXJhbD0KbHkKK2hhcyBiZWVuIGFwcGxpZWQg
aGVyZTogaWYgaXQgdXNlcyB0aGUgdHJhbnMgb3Igc2Ffc2Vzc2lvbiwgcHV0IGl0IGluIGEgbWFu
PQphZ2VyCithbmQgbm90IHRoZSBtb2RlbC4pCisKK01vZGVsU2VyaWFsaXplcnMgYWxsb3cgZmxl
eGlibGUgY29udmVyc2lvbiBvZiBtb2RlbCBvYmplY3RzIHRvIGRpY3Rpb25hcmllPQpzLgorVGhl
eSBjb250cm9sIHdoYXQga2V5cyBhcmUgc2VudCwgaG93IHZhbHVlcyBhcmUgc2ltcGxpZmllZCwg
Y2FuIHJlbWFwIGtleXMsCithbmQgYWxsb3cgYm90aCBwcmVkZWZpbmVkIGFuZCB1c2VyIGNvbnRy
b2xsZWQga2V5IHNldHMuCisKK01vZGVsRGVzZXJpYWxpemVycyBjb250cm9sIGhvdyBhIG1vZGVs
IHZhbGlkYXRlcyBhbmQgcHJvY2VzcyBhbiBpbmNvbWluZworYXR0cmlidXRlIGNoYW5nZSB0byBh
IG1vZGVsIG9iamVjdC4KKyIiIgorI1RPRE86IGl0IG1heSBiZSB0aGVyZSdzIGEgYmV0dGVyIHdh
eSB0byBjb21iaW5lIHRoZSBhYm92ZSB0aHJlZSBjbGFzc2VzCisjICAgc3VjaCBhczogYSBzaW5n
bGUgZmxhdCBjbGFzcywgc2VyaWFsaXplcnMgYmVpbmcgc2luZ2xldG9ucyBpbiB0aGUgbWFuYT0K
Z2VyLCBldGMuCisjICAgaW5zdGVhZCBvZiB0aGUgdGhyZWUgc2VwYXJhdGUgY2xhc3Nlcy4gV2l0
aCBubyAnYXBwYXJlbnQnIHBlcmZlY3Qgc2NoZT0KbWUKKyMgICBJJ20gb3B0aW5nIHRvIGp1c3Qg
a2VlcCB0aGVtIHNlcGFyYXRlLgorCiBpbXBvcnQgcmUKPTIwCiBpbXBvcnQgcGtnX3Jlc291cmNl
cwpAQCAtMTc3LDcgKzIwNCw3IEBACj0yMAogICAgICAgICAoV2hpbGUgYWxsb3dpbmcgdGhlbSB0
byBiZSBOb25lLCBub24tbGlzdHMsIG9yIGxpc3RzLikKICAgICAgICAgIiIiCi0gICAgICAgICMg
Li4uIHdoaWNoIHNvdW5kcyBsaWtlIGEgZXVwaGFtaXNtIGZvciBzb21ldGhpbmcKKyAgICAgICAg
I1RPRE86IHRoZXJlJ3Mgbm90aGluZyBzcGVjaWZpY2FsbHkgZmlsdGVyIG9yIG1vZGVsLXJlbGF0
ZWQgaGVyZSAtPQogbW92ZSB0byB1dGlsCiAgICAgICAgIGlmIGZpbHRlcnNBIGlzIE5vbmU6CiAg
ICAgICAgICAgICByZXR1cm4gZmlsdGVyc0IKICAgICAgICAgaWYgZmlsdGVyc0IgaXMgTm9uZToK
QEAgLTIxOSw3ICsyNDYsNiBAQAogICAgICAgICByZXR1cm4gcXVlcnkKPTIwCiAgICAgIyAuLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLj0KLi4uLi4gY29tbW9uIHF1ZXJpZXMKLSAgICAjVE9ETzogbmVlZGVkPwogICAgIGRl
ZiBvbmUoIHNlbGYsIHRyYW5zLCAqKmt3YXJncyApOgogICAgICAgICAiIiIKICAgICAgICAgU2Vu
ZHMga3dhcmdzIHRvIGJ1aWxkIHRoZSBxdWVyeSBhbmQgcmV0dXJucyBvbmUgYW5kIG9ubHkgb25l
IG1vZGVsLgpAQCAtMjUzLDEyICsyNzksNyBAQAogICAgICAgICBleGNlcHQgZXhjZXB0aW9ucy5P
YmplY3ROb3RGb3VuZCwgbm90X2ZvdW5kOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKPTIwCi0g
ICAgI2RlZiBnZXQoIHNlbGYsIHRyYW5zLCBpZCwgKiprd2FyZ3MgKToKLSAgICAjICAgICIiIgot
ICAgICMgICAgIiIiCi0gICAgIyAgICAjVE9ETzogZWl0aGVyIHJlbW92ZSB0byBwcmV2ZW50IGNv
bmZ1c2lvbiB3aXRoIHNxbGFseCBnZXQgb3IgbWFrZT0KIGl0IGJlaGF2ZSAqbXVjaCogbW9yZSBs
aWtlIGl0OiBvYmovTm9uZQotICAgICMgICAgaWRfZmlsdGVyID0zRCBzZWxmLm1vZGVsX2NsYXNz
LmlkID0zRD0zRCBpZAotICAgICMgICAgcmV0dXJuIHNlbGYub25lKCB0cmFucywgZmlsdGVycz0z
RGlkX2ZpbHRlciwgKiprd2FyZ3MgKQorICAgICNUT0RPOiBnZXQ/Cj0yMAogICAgIGRlZiBieV9p
ZCggc2VsZiwgdHJhbnMsIGlkLCAqKmt3YXJncyApOgogICAgICAgICAiIiIKQEAgLTM3NiwxMjEg
KzM5Nyw2IEBACiAgICAgIyAgICByZXR1cm4gaXRlbQo9MjAKPTIwCi0jID0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRAotY2xh
c3MgQWNjZXNzaWJsZU1vZGVsSW50ZXJmYWNlKCBvYmplY3QgKToKLSAgICAiIiIKLSAgICBBIHNl
Y3VyaXR5IGludGVyZmFjZSB0byBjaGVjayBpZiBhIFVzZXIgY2FuIHJlYWQvdmlldyBhbiBpdGVt
J3MuCi0KLSAgICBUaGlzIGNhbiBhbHNvIGJlIHRob3VnaHQgb2YgYXMgJ3JlYWQgYnV0IG5vdCBt
b2RpZnknIHByaXZpbGVnZXMuCi0gICAgIiIiCi0KLSAgICAjIGRvbid0IHdhbnQgdG8gb3ZlcnJp
ZGUgYnlfaWQgc2luY2UgY29uc3VtZXJzIHdpbGwgYWxzbyB3YW50IHRvIGZldGNoPQogdy9vIGFu
eSBzZWN1cml0eSBjaGVja3MKLSAgICBkZWYgaXNfYWNjZXNzaWJsZSggc2VsZiwgdHJhbnMsIGl0
ZW0sIHVzZXIgKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiBUcnVlIGlmIHRoZSBpdGVt
IGFjY2Vzc2libGUgdG8gdXNlci4KLSAgICAgICAgIiIiCi0gICAgICAgICMgb3ZlcnJpZGUgaGVy
ZQotICAgICAgICByYWlzZSBleGNlcHRpb25zLk5vdEltcGxlbWVudGVkKCAiQWJzdHJhY3QgSW50
ZXJmYWNlIE1ldGhvZCIgKQotICAgICAgICAjT1I/IHJldHVybiBGYWxzZQotCi0gICAgZGVmIGdl
dF9hY2Nlc3NpYmxlKCBzZWxmLCB0cmFucywgaWQsIHVzZXIsICoqa3dhcmdzICk6Ci0gICAgICAg
ICIiIgotICAgICAgICBSZXR1cm4gdGhlIGl0ZW0gd2l0aCB0aGUgZ2l2ZW4gaWQgaWYgaXQncyBh
Y2Nlc3NpYmxlIHRvIHVzZXIsCi0gICAgICAgIG90aGVyd2lzZSByYWlzZSBhbiBlcnJvci4KLQot
ICAgICAgICA6cmFpc2VzIGV4Y2VwdGlvbnMuSXRlbUFjY2Vzc2liaWxpdHlFeGNlcHRpb246Ci0g
ICAgICAgICIiIgotICAgICAgICBpdGVtID0zRCBNb2RlbE1hbmFnZXIuYnlfaWQoIHNlbGYsIHRy
YW5zLCBpZCApCi0gICAgICAgIHJldHVybiBzZWxmLmVycm9yX3VubGVzc19hY2Nlc3NpYmxlKCB0
cmFucywgaXRlbSwgdXNlciApCi0KLSAgICBkZWYgZXJyb3JfdW5sZXNzX2FjY2Vzc2libGUoIHNl
bGYsIHRyYW5zLCBpdGVtLCB1c2VyICk6Ci0gICAgICAgICIiIgotICAgICAgICBSYWlzZSBhbiBl
cnJvciBpZiB0aGUgaXRlbSBpcyBOT1QgYWNjZXNzaWJsZSB0byB1c2VyLCBvdGhlcndpc2UgcmU9
CnR1cm4gdGhlIGl0ZW0uCi0KLSAgICAgICAgOnJhaXNlcyBleGNlcHRpb25zLkl0ZW1BY2Nlc3Np
YmlsaXR5RXhjZXB0aW9uOgotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5pc19hY2Nlc3Np
YmxlKCB0cmFucywgaXRlbSwgdXNlciApOgotICAgICAgICAgICAgcmV0dXJuIGl0ZW0KLSAgICAg
ICAgcmFpc2UgZXhjZXB0aW9ucy5JdGVtQWNjZXNzaWJpbGl0eUV4Y2VwdGlvbiggIiVzIGlzIG5v
dCBhY2Nlc3NpYmxlPQogYnkgdXNlciIgJSAoIHNlbGYubW9kZWxfY2xhc3MuX19uYW1lX18gKSAp
Ci0KLSAgICAjVE9ETzo/PyBhcmUgdGhlc2UgZXZlbiB1c2VmdWw/Ci0gICAgZGVmIGxpc3RfYWNj
ZXNzaWJsZSggc2VsZiwgdHJhbnMsIHVzZXIsICoqa3dhcmdzICk6Ci0gICAgICAgICIiIgotICAg
ICAgICBSZXR1cm4gYSBsaXN0IG9mIGl0ZW1zIGFjY2Vzc2libGUgdG8gdGhlIHVzZXIsIHJhaXNp
bmcgYW4gZXJyb3IgaWY9CiBBTlkKLSAgICAgICAgYXJlIGluYWNjZXNzaWJsZS4KLQotICAgICAg
ICA6cmFpc2VzIGV4Y2VwdGlvbnMuSXRlbUFjY2Vzc2liaWxpdHlFeGNlcHRpb246Ci0gICAgICAg
ICIiIgotICAgICAgICAjTk9URTogdGhpcyB3aWxsIGJlIGEgbGFyZ2UsIGluZWZmaWNpZW50IGxp
c3QgaWYgZmlsdGVycyBhcmUgbm90IHA9CmFzc2VkIGluIGt3YXJncwotICAgICAgICBpdGVtcyA9
M0QgTW9kZWxNYW5hZ2VyLmxpc3QoIHNlbGYsIHRyYW5zLCAqKmt3YXJncyApCi0gICAgICAgIHJl
dHVybiBbIHNlbGYuZXJyb3JfdW5sZXNzX2FjY2Vzc2libGUoIHRyYW5zLCBpdGVtLCB1c2VyICkg
Zm9yIGl0ZT0KbSBpbiBpdGVtcyBdCi0KLSAgICBkZWYgZmlsdGVyX2FjY2Vzc2libGUoIHNlbGYs
IHRyYW5zLCB1c2VyLCAqKmt3YXJncyApOgotICAgICAgICAiIiIKLSAgICAgICAgUmV0dXJuIGEg
bGlzdCBvZiBpdGVtcyBhY2Nlc3NpYmxlIHRvIHRoZSB1c2VyLgotICAgICAgICAiIiIKLSAgICAg
ICAgI05PVEU6IHRoaXMgd2lsbCBiZSBhIGxhcmdlLCBpbmVmZmljaWVudCBsaXN0IGlmIGZpbHRl
cnMgYXJlIG5vdCAgPQpwYXNzZWQgaW4ga3dhcmdzCi0gICAgICAgIGl0ZW1zID0zRCBNb2RlbE1h
bmFnZXIubGlzdCggc2VsZiwgdHJhbnMsICoqa3dhcmdzICkKLSAgICAgICAgcmV0dXJuIGZpbHRl
ciggbGFtYmRhIGl0ZW06IHNlbGYuaXNfYWNjZXNzaWJsZSggdHJhbnMsIGl0ZW0sIHVzZXIgPQop
LCBpdGVtcyApCi0KLQotIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKLWNsYXNzIE93bmFibGVNb2RlbEludGVyZmFjZSgg
b2JqZWN0ICk6Ci0gICAgIiIiCi0gICAgQSBzZWN1cml0eSBpbnRlcmZhY2UgdG8gY2hlY2sgaWYg
YSBVc2VyIGlzIGFuIGl0ZW0ncyBvd25lci4KLQotICAgIFNvbWUgcmVzb3VyY2VzIGFyZSBhc3Nv
Y2lhdGVkIHdpdGggdGhlIFVzZXIgdGhhdCBjcmVhdGVkIG9yIGltcG9ydGVkIHQ9CmhlbQotICAg
IGFuZCB0aGVzZSBVc2VycyBjYW4gYmUgY29uc2lkZXJlZCB0aGUgbW9kZWxzJyBvd25lci4KLQot
ICAgIFRoaXMgY2FuIGFsc28gYmUgdGhvdWdodCBvZiBhcyB3cml0ZS9lZGl0IHByaXZpbGVnZXMu
Ci0gICAgIiIiCi0KLSAgICBkZWYgaXNfb3duZXIoIHNlbGYsIHRyYW5zLCBpdGVtLCB1c2VyICk6
Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm4gVHJ1ZSBpZiB1c2VyIG93bnMgdGhlIGl0ZW0u
Ci0gICAgICAgICIiIgotICAgICAgICAjIG92ZXJyaWRlIGhlcmUKLSAgICAgICAgcmFpc2UgZXhj
ZXB0aW9ucy5Ob3RJbXBsZW1lbnRlZCggIkFic3RyYWN0IEludGVyZmFjZSBNZXRob2QiICkKLSAg
ICAgICAgI09SPyByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBnZXRfb3duZWQoIHNlbGYsIHRyYW5z
LCBpZCwgdXNlciwgKiprd2FyZ3MgKToKLSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiB0aGUg
aXRlbSB3aXRoIHRoZSBnaXZlbiBpZCBpZiBvd25lZCBieSB0aGUgdXNlciwKLSAgICAgICAgb3Ro
ZXJ3aXNlIHJhaXNlIGFuIGVycm9yLgotCi0gICAgICAgIDpyYWlzZXMgZXhjZXB0aW9ucy5JdGVt
T3duZXJzaGlwRXhjZXB0aW9uOgotICAgICAgICAiIiIKLSAgICAgICAgaXRlbSA9M0QgTW9kZWxN
YW5hZ2VyLmJ5X2lkKCBzZWxmLCB0cmFucywgaWQgKQotICAgICAgICByZXR1cm4gc2VsZi5lcnJv
cl91bmxlc3Nfb3duZXIoIHRyYW5zLCBpdGVtLCB1c2VyICkKLQotICAgIGRlZiBlcnJvcl91bmxl
c3Nfb3duZXIoIHNlbGYsIHRyYW5zLCBpdGVtLCB1c2VyICk6Ci0gICAgICAgICIiIgotICAgICAg
ICBSYWlzZSBhbiBlcnJvciBpZiB0aGUgaXRlbSBpcyBOT1Qgb3duZWQgYnkgdXNlciwgb3RoZXJ3
aXNlIHJldHVybiA9CnRoZSBpdGVtLgotCi0gICAgICAgIDpyYWlzZXMgZXhjZXB0aW9ucy5JdGVt
QWNjZXNzaWJpbGl0eUV4Y2VwdGlvbjoKLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuaXNf
b3duZXIoIHRyYW5zLCBpdGVtLCB1c2VyICk6Ci0gICAgICAgICAgICByZXR1cm4gaXRlbQotICAg
ICAgICByYWlzZSBleGNlcHRpb25zLkl0ZW1Pd25lcnNoaXBFeGNlcHRpb24oICIlcyBpcyBub3Qg
b3duZWQgYnkgdXNlciI9CiAlICggc2VsZi5tb2RlbF9jbGFzcy5fX25hbWVfXyApICkKLQotICAg
IGRlZiBsaXN0X293bmVkKCBzZWxmLCB0cmFucywgdXNlciwgKiprd2FyZ3MgKToKLSAgICAgICAg
IiIiCi0gICAgICAgIFJldHVybiBhIGxpc3Qgb2YgaXRlbXMgb3duZWQgYnkgdGhlIHVzZXIsIHJh
aXNpbmcgYW4gZXJyb3IgaWYgQU5ZCi0gICAgICAgIGFyZSBub3QuCi0KLSAgICAgICAgOnJhaXNl
cyBleGNlcHRpb25zLkl0ZW1BY2Nlc3NpYmlsaXR5RXhjZXB0aW9uOgotICAgICAgICAiIiIKLSAg
ICAgICAgIyBqdXN0IGFsaWFzIHRvIGJ5X3VzZXIgKGVhc2llci9zYW1lIHRoaW5nKQotICAgICAg
ICByZXR1cm4gc2VsZi5ieV91c2VyKCB0cmFucywgdXNlciwgKiprd2FyZ3MgKQotCi0gICAgZGVm
IGZpbHRlcl9vd25lZCggc2VsZiwgdHJhbnMsIHVzZXIsICoqa3dhcmdzICk6Ci0gICAgICAgICIi
IgotICAgICAgICBSZXR1cm4gYSBsaXN0IG9mIGl0ZW1zIG93bmVkIGJ5IHRoZSB1c2VyLgotICAg
ICAgICAiIiIKLSAgICAgICAgIyBqdXN0IGFsaWFzIHRvIGxpc3Rfb3duZWQKLSAgICAgICAgcmV0
dXJuIHNlbGYubGlzdF9vd25lZCggdHJhbnMsIHVzZXIsICoqa3dhcmdzICkKLQotCiAjID0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0z
RD0zRCBTRVJJQUxJWkVSUy90b19kaWN0LGZyb21fZGljdAogY2xhc3MgTW9kZWxTZXJpYWxpemlu
Z0Vycm9yKCBleGNlcHRpb25zLkludGVybmFsU2VydmVyRXJyb3IgKToKICAgICAiIiJUaHJvd24g
d2hlbiByZXF1ZXN0IG1vZGVsIHZhbHVlcyBjYW4ndCBiZSBzZXJpYWxpemVkIiIiCkBAIC01NDks
NyArNDU1LDYgQEAKICAgICAgICAgIiIiCiAgICAgICAgICMgdG8gYmUgb3ZlcnJpZGRlbiBpbiBz
dWJjbGFzc2VzCiAgICAgICAgIHBhc3MKLSAgICAgICAgI3N1cGVyKCBNb2RlbFNlcmlhbGl6ZXIs
IHNlbGYgKS5hZGRfc2VyaWFsaXplcnMoKQo9MjAKICAgICBkZWYgc2VyaWFsaXplKCBzZWxmLCB0
cmFucywgaXRlbSwga2V5cyApOgogICAgICAgICAiIiIKQEAgLTgwMCw2ICs3MDUsMTIxIEBACj0y
MAogIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPQo9M0Q9M0Q9M0QKICMgTWl4aW5zIChoZXJlIGZvciBub3cpCisjID0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRAorY2xh
c3MgQWNjZXNzaWJsZU1vZGVsSW50ZXJmYWNlKCBvYmplY3QgKToKKyAgICAiIiIKKyAgICBBIHNl
Y3VyaXR5IGludGVyZmFjZSB0byBjaGVjayBpZiBhIFVzZXIgY2FuIHJlYWQvdmlldyBhbiBpdGVt
J3MuCisKKyAgICBUaGlzIGNhbiBhbHNvIGJlIHRob3VnaHQgb2YgYXMgJ3JlYWQgYnV0IG5vdCBt
b2RpZnknIHByaXZpbGVnZXMuCisgICAgIiIiCisKKyAgICAjIGRvbid0IHdhbnQgdG8gb3ZlcnJp
ZGUgYnlfaWQgc2luY2UgY29uc3VtZXJzIHdpbGwgYWxzbyB3YW50IHRvIGZldGNoPQogdy9vIGFu
eSBzZWN1cml0eSBjaGVja3MKKyAgICBkZWYgaXNfYWNjZXNzaWJsZSggc2VsZiwgdHJhbnMsIGl0
ZW0sIHVzZXIgKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiBUcnVlIGlmIHRoZSBpdGVt
IGFjY2Vzc2libGUgdG8gdXNlci4KKyAgICAgICAgIiIiCisgICAgICAgICMgb3ZlcnJpZGUgaW4g
c3ViY2xhc3NlcworICAgICAgICByYWlzZSBleGNlcHRpb25zLk5vdEltcGxlbWVudGVkKCAiQWJz
dHJhY3QgSW50ZXJmYWNlIE1ldGhvZCIgKQorCisgICAgZGVmIGdldF9hY2Nlc3NpYmxlKCBzZWxm
LCB0cmFucywgaWQsIHVzZXIsICoqa3dhcmdzICk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1
cm4gdGhlIGl0ZW0gd2l0aCB0aGUgZ2l2ZW4gaWQgaWYgaXQncyBhY2Nlc3NpYmxlIHRvIHVzZXIs
CisgICAgICAgIG90aGVyd2lzZSByYWlzZSBhbiBlcnJvci4KKworICAgICAgICA6cmFpc2VzIGV4
Y2VwdGlvbnMuSXRlbUFjY2Vzc2liaWxpdHlFeGNlcHRpb246CisgICAgICAgICIiIgorICAgICAg
ICBpdGVtID0zRCBNb2RlbE1hbmFnZXIuYnlfaWQoIHNlbGYsIHRyYW5zLCBpZCApCisgICAgICAg
IHJldHVybiBzZWxmLmVycm9yX3VubGVzc19hY2Nlc3NpYmxlKCB0cmFucywgaXRlbSwgdXNlciAp
CisKKyAgICBkZWYgZXJyb3JfdW5sZXNzX2FjY2Vzc2libGUoIHNlbGYsIHRyYW5zLCBpdGVtLCB1
c2VyICk6CisgICAgICAgICIiIgorICAgICAgICBSYWlzZSBhbiBlcnJvciBpZiB0aGUgaXRlbSBp
cyBOT1QgYWNjZXNzaWJsZSB0byB1c2VyLCBvdGhlcndpc2UgcmU9CnR1cm4gdGhlIGl0ZW0uCisK
KyAgICAgICAgOnJhaXNlcyBleGNlcHRpb25zLkl0ZW1BY2Nlc3NpYmlsaXR5RXhjZXB0aW9uOgor
ICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5pc19hY2Nlc3NpYmxlKCB0cmFucywgaXRlbSwg
dXNlciApOgorICAgICAgICAgICAgcmV0dXJuIGl0ZW0KKyAgICAgICAgcmFpc2UgZXhjZXB0aW9u
cy5JdGVtQWNjZXNzaWJpbGl0eUV4Y2VwdGlvbiggIiVzIGlzIG5vdCBhY2Nlc3NpYmxlPQogYnkg
dXNlciIgJSAoIHNlbGYubW9kZWxfY2xhc3MuX19uYW1lX18gKSApCisKKyAgICAjVE9ETzo/PyBh
cmUgdGhlc2UgZXZlbiB1c2VmdWw/CisgICAgZGVmIGxpc3RfYWNjZXNzaWJsZSggc2VsZiwgdHJh
bnMsIHVzZXIsICoqa3dhcmdzICk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gYSBsaXN0
IG9mIGl0ZW1zIGFjY2Vzc2libGUgdG8gdGhlIHVzZXIsIHJhaXNpbmcgYW4gZXJyb3IgaWY9CiBB
TlkKKyAgICAgICAgYXJlIGluYWNjZXNzaWJsZS4KKworICAgICAgICA6cmFpc2VzIGV4Y2VwdGlv
bnMuSXRlbUFjY2Vzc2liaWxpdHlFeGNlcHRpb246CisgICAgICAgICIiIgorICAgICAgICByYWlz
ZSBleGNlcHRpb25zLk5vdEltcGxlbWVudGVkKCAiQWJzdHJhY3QgSW50ZXJmYWNlIE1ldGhvZCIg
KQorICAgICAgICAjTk9URTogdGhpcyB3aWxsIGJlIGEgbGFyZ2UsIGluZWZmaWNpZW50IGxpc3Qg
aWYgZmlsdGVycyBhcmUgbm90IHA9CmFzc2VkIGluIGt3YXJncworICAgICAgICAjaXRlbXMgPTNE
IE1vZGVsTWFuYWdlci5saXN0KCBzZWxmLCB0cmFucywgKiprd2FyZ3MgKQorICAgICAgICAjcmV0
dXJuIFsgc2VsZi5lcnJvcl91bmxlc3NfYWNjZXNzaWJsZSggdHJhbnMsIGl0ZW0sIHVzZXIgKSBm
b3IgaXQ9CmVtIGluIGl0ZW1zIF0KKworICAgIGRlZiBmaWx0ZXJfYWNjZXNzaWJsZSggc2VsZiwg
dHJhbnMsIHVzZXIsICoqa3dhcmdzICk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gYSBs
aXN0IG9mIGl0ZW1zIGFjY2Vzc2libGUgdG8gdGhlIHVzZXIuCisgICAgICAgICIiIgorICAgICAg
ICByYWlzZSBleGNlcHRpb25zLk5vdEltcGxlbWVudGVkKCAiQWJzdHJhY3QgSW50ZXJmYWNlIE1l
dGhvZCIgKQorICAgICAgICAjTk9URTogdGhpcyB3aWxsIGJlIGEgbGFyZ2UsIGluZWZmaWNpZW50
IGxpc3QgaWYgZmlsdGVycyBhcmUgbm90ICA9CnBhc3NlZCBpbiBrd2FyZ3MKKyAgICAgICAgI2l0
ZW1zID0zRCBNb2RlbE1hbmFnZXIubGlzdCggc2VsZiwgdHJhbnMsICoqa3dhcmdzICkKKyAgICAg
ICAgI3JldHVybiBmaWx0ZXIoIGxhbWJkYSBpdGVtOiBzZWxmLmlzX2FjY2Vzc2libGUoIHRyYW5z
LCBpdGVtLCB1c2VyPQogKSwgaXRlbXMgKQorCisKKyMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECitjbGFzcyBPd25hYmxl
TW9kZWxJbnRlcmZhY2UoIG9iamVjdCApOgorICAgICIiIgorICAgIEEgc2VjdXJpdHkgaW50ZXJm
YWNlIHRvIGNoZWNrIGlmIGEgVXNlciBpcyBhbiBpdGVtJ3Mgb3duZXIuCisKKyAgICBTb21lIHJl
c291cmNlcyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBVc2VyIHRoYXQgY3JlYXRlZCBvciBpbXBv
cnRlZCB0PQpoZW0KKyAgICBhbmQgdGhlc2UgVXNlcnMgY2FuIGJlIGNvbnNpZGVyZWQgdGhlIG1v
ZGVscycgb3duZXIuCisKKyAgICBUaGlzIGNhbiBhbHNvIGJlIHRob3VnaHQgb2YgYXMgd3JpdGUv
ZWRpdCBwcml2aWxlZ2VzLgorICAgICIiIgorCisgICAgZGVmIGlzX293bmVyKCBzZWxmLCB0cmFu
cywgaXRlbSwgdXNlciApOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIFRydWUgaWYgdXNl
ciBvd25zIHRoZSBpdGVtLgorICAgICAgICAiIiIKKyAgICAgICAgIyBvdmVycmlkZSBpbiBzdWJj
bGFzc2VzCisgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuTm90SW1wbGVtZW50ZWQoICJBYnN0cmFj
dCBJbnRlcmZhY2UgTWV0aG9kIiApCisKKyAgICBkZWYgZ2V0X293bmVkKCBzZWxmLCB0cmFucywg
aWQsIHVzZXIsICoqa3dhcmdzICk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gdGhlIGl0
ZW0gd2l0aCB0aGUgZ2l2ZW4gaWQgaWYgb3duZWQgYnkgdGhlIHVzZXIsCisgICAgICAgIG90aGVy
d2lzZSByYWlzZSBhbiBlcnJvci4KKworICAgICAgICA6cmFpc2VzIGV4Y2VwdGlvbnMuSXRlbU93
bmVyc2hpcEV4Y2VwdGlvbjoKKyAgICAgICAgIiIiCisgICAgICAgIGl0ZW0gPTNEIE1vZGVsTWFu
YWdlci5ieV9pZCggc2VsZiwgdHJhbnMsIGlkICkKKyAgICAgICAgcmV0dXJuIHNlbGYuZXJyb3Jf
dW5sZXNzX293bmVyKCB0cmFucywgaXRlbSwgdXNlciApCisKKyAgICBkZWYgZXJyb3JfdW5sZXNz
X293bmVyKCBzZWxmLCB0cmFucywgaXRlbSwgdXNlciApOgorICAgICAgICAiIiIKKyAgICAgICAg
UmFpc2UgYW4gZXJyb3IgaWYgdGhlIGl0ZW0gaXMgTk9UIG93bmVkIGJ5IHVzZXIsIG90aGVyd2lz
ZSByZXR1cm4gPQp0aGUgaXRlbS4KKworICAgICAgICA6cmFpc2VzIGV4Y2VwdGlvbnMuSXRlbUFj
Y2Vzc2liaWxpdHlFeGNlcHRpb246CisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLmlzX293
bmVyKCB0cmFucywgaXRlbSwgdXNlciApOgorICAgICAgICAgICAgcmV0dXJuIGl0ZW0KKyAgICAg
ICAgcmFpc2UgZXhjZXB0aW9ucy5JdGVtT3duZXJzaGlwRXhjZXB0aW9uKCAiJXMgaXMgbm90IG93
bmVkIGJ5IHVzZXIiPQogJSAoIHNlbGYubW9kZWxfY2xhc3MuX19uYW1lX18gKSApCisKKyAgICBk
ZWYgbGlzdF9vd25lZCggc2VsZiwgdHJhbnMsIHVzZXIsICoqa3dhcmdzICk6CisgICAgICAgICIi
IgorICAgICAgICBSZXR1cm4gYSBsaXN0IG9mIGl0ZW1zIG93bmVkIGJ5IHRoZSB1c2VyLCByYWlz
aW5nIGFuIGVycm9yIGlmIEFOWQorICAgICAgICBhcmUgbm90LgorCisgICAgICAgIDpyYWlzZXMg
ZXhjZXB0aW9ucy5JdGVtQWNjZXNzaWJpbGl0eUV4Y2VwdGlvbjoKKyAgICAgICAgIiIiCisgICAg
ICAgICMganVzdCBhbGlhcyB0byBieV91c2VyIChlYXNpZXIvc2FtZSB0aGluZykKKyAgICAgICAg
cmV0dXJuIHNlbGYuYnlfdXNlciggdHJhbnMsIHVzZXIsICoqa3dhcmdzICkKKworICAgIGRlZiBm
aWx0ZXJfb3duZWQoIHNlbGYsIHRyYW5zLCB1c2VyLCAqKmt3YXJncyApOgorICAgICAgICAiIiIK
KyAgICAgICAgUmV0dXJuIGEgbGlzdCBvZiBpdGVtcyBvd25lZCBieSB0aGUgdXNlci4KKyAgICAg
ICAgIiIiCisgICAgICAgICMganVzdCBhbGlhcyB0byBsaXN0X293bmVkCisgICAgICAgIHJldHVy
biBzZWxmLmxpc3Rfb3duZWQoIHRyYW5zLCB1c2VyLCAqKmt3YXJncyApCisKKwogIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS09Ci0tLS0tCiBjbGFzcyBEZWxldGFibGVNb2RlbEludGVyZmFjZSggb2JqZWN0ICk6
CiAgICAgIiIiCkBAIC04ODAsNyArOTAwLDkgQEAKPTIwCj0yMAogY2xhc3MgUHVyZ2FibGVNb2Rl
bFNlcmlhbGl6ZXIoIERlbGV0YWJsZU1vZGVsU2VyaWFsaXplciApOgotICAgIHBhc3MKKworICAg
IGRlZiBhZGRfc2VyaWFsaXplcnMoIHNlbGYgKToKKyAgICAgICAgRGVsZXRhYmxlTW9kZWxTZXJp
YWxpemVyLmFkZF9zZXJpYWxpemVycyggc2VsZiApCj0yMAo9MjAKIGNsYXNzIFB1cmdhYmxlTW9k
ZWxEZXNlcmlhbGl6ZXIoIERlbGV0YWJsZU1vZGVsRGVzZXJpYWxpemVyICk6CgpkaWZmIC1yIGI0
NTBkNzE5ODdhMWIyYTIxZWE1ZTUyMDM1MTJmZTBkNWVhOTEyZjggLXIgZDQyN2RjMjA1Y2RkY2Uz
MWRiMjYzMzY9CjdmNzYzNmUzMzE4MDQzZjUxIGxpYi9nYWxheHkvbWFuYWdlcnMvY29sbGVjdGlv
bnMucHkKLS0tIGEvbGliL2dhbGF4eS9tYW5hZ2Vycy9jb2xsZWN0aW9ucy5weQorKysgYi9saWIv
Z2FsYXh5L21hbmFnZXJzL2NvbGxlY3Rpb25zLnB5CkBAIC0zMjksODcgKzMyOSwzIEBACiAgICAg
ICAgICAgICBpZiBub3QgdHJhbnMuYXBwLnNlY3VyaXR5X2FnZW50LmNhbl9hY2Nlc3NfbGlicmFy
eV9pdGVtKCB0cmFucz0KLmdldF9jdXJyZW50X3VzZXJfcm9sZXMoKSwgY29sbGVjdGlvbl9pbnN0
YW5jZSwgdHJhbnMudXNlciApOgogICAgICAgICAgICAgICAgIHJhaXNlIEl0ZW1BY2Nlc3NpYmls
aXR5RXhjZXB0aW9uKCAiTGlicmFyeURhdGFzZXRDb2xsZWN0aW89Cm5Bc3NvY2lhdGlvbiBpcyBu
b3QgYWNjZXNzaWJsZSB0byB0aGUgY3VycmVudCB1c2VyIiwgdHlwZT0zRCdlcnJvcicgKQogICAg
ICAgICByZXR1cm4gY29sbGVjdGlvbl9pbnN0YW5jZQotCi0KLWNsYXNzIERhdGFzZXRDb2xsZWN0
aW9uU2VyaWFsaXplciggYmFzZS5Nb2RlbFNlcmlhbGl6ZXIgKToKLQotICAgIGRlZiBfX2luaXRf
Xyggc2VsZiwgYXBwICk6Ci0gICAgICAgIHN1cGVyKCBEYXRhc2V0Q29sbGVjdGlvblNlcmlhbGl6
ZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwICkKLQotI2RlZiBkaWN0aWZ5X2RhdGFzZXRfY29sbGVj
dGlvbl9pbnN0YW5jZSggZGF0YXNldF9jb2xsZWN0aW9uX2luc3RhbmNlLCBwYXI9CmVudCwgc2Vj
dXJpdHksIHZpZXc9M0QiZWxlbWVudCIgKToKLSMgICAgZGljdF92YWx1ZSA9M0QgZGF0YXNldF9j
b2xsZWN0aW9uX2luc3RhbmNlLnRvX2RpY3QoIHZpZXc9M0R2aWV3ICkKLSMgICAgZW5jb2RlZF9p
ZCA9M0Qgc2VjdXJpdHkuZW5jb2RlX2lkKCBkYXRhc2V0X2NvbGxlY3Rpb25faW5zdGFuY2UuaWQg
KQotIyAgICBpZiBpc2luc3RhbmNlKCBwYXJlbnQsIG1vZGVsLkhpc3RvcnkgKToKLSMgICAgICAg
IGVuY29kZWRfaGlzdG9yeV9pZCA9M0Qgc2VjdXJpdHkuZW5jb2RlX2lkKCBwYXJlbnQuaWQgKQot
IyAgICAgICAgZGljdF92YWx1ZVsgJ3VybCcgXSA9M0Qgd2ViLnVybF9mb3IoICdoaXN0b3J5X2Nv
bnRlbnRfdHlwZWQnLCBoaXM9CnRvcnlfaWQ9M0RlbmNvZGVkX2hpc3RvcnlfaWQsIGlkPTNEZW5j
b2RlZF9pZCwgdHlwZT0zRCJkYXRhc2V0X2NvbGxlY3Rpb24iICkKLSMgICAgZWxpZiBpc2luc3Rh
bmNlKCBwYXJlbnQsIG1vZGVsLkxpYnJhcnlGb2xkZXIgKToKLSMgICAgICAgIGVuY29kZWRfbGli
cmFyeV9pZCA9M0Qgc2VjdXJpdHkuZW5jb2RlX2lkKCBwYXJlbnQubGlicmFyeS5pZCApCi0jICAg
ICAgICBlbmNvZGVkX2ZvbGRlcl9pZCA9M0Qgc2VjdXJpdHkuZW5jb2RlX2lkKCBwYXJlbnQuaWQg
KQotIyAgICAgICAgIyBUT0RPOiBXb3JrIGluIHByb2dyZXNzIC0gdGhpcyBlbmQtcG9pbnQgaXMg
bm90IHJpZ2h0IHlldC4uLgotIyAgICAgICAgZGljdF92YWx1ZVsgJ3VybCcgXSA9M0Qgd2ViLnVy
bF9mb3IoICdsaWJyYXJ5X2NvbnRlbnQnLCBsaWJyYXJ5X2k9CmQ9M0RlbmNvZGVkX2xpYnJhcnlf
aWQsIGlkPTNEZW5jb2RlZF9pZCwgZm9sZGVyX2lkPTNEZW5jb2RlZF9mb2xkZXJfaWQgKQotIyAg
ICBpZiB2aWV3ID0zRD0zRCAiZWxlbWVudCI6Ci0jICAgICAgICBkaWN0X3ZhbHVlWyAnZWxlbWVu
dHMnIF0gPTNEIG1hcCggZGljdGlmeV9lbGVtZW50LCBkYXRhc2V0X2NvbGxlYz0KdGlvbl9pbnN0
YW5jZS5jb2xsZWN0aW9uLmVsZW1lbnRzICkKLSMgICAgc2VjdXJpdHkuZW5jb2RlX2FsbF9pZHMo
IGRpY3RfdmFsdWUsIHJlY3Vyc2l2ZT0zRFRydWUgKSAgIyBUT0RPOiBVc2UgPQpLeWxlJ3MgcmVj
dXNyaXZlIGZvcm11bGF0aW9uIG9mIHRoaXMuCi0jICAgIHJldHVybiBkaWN0X3ZhbHVlCi0jCi0j
Ci0jZGVmIGRpY3RpZnlfZWxlbWVudCggZWxlbWVudCApOgotIyAgICBkaWN0aWZpZWQgPTNEIGVs
ZW1lbnQudG9fZGljdCggdmlldz0zRCJlbGVtZW50IiApCi0jICAgIG9iamVjdF9kZXRpYWxzID0z
RCBlbGVtZW50LmVsZW1lbnRfb2JqZWN0LnRvX2RpY3QoKQotIyAgICBpZiBlbGVtZW50LmNoaWxk
X2NvbGxlY3Rpb246Ci0jICAgICAgICAjIFJlY3Vyc2l2ZWx5IHlpZWxkIGVsZW1lbnRzIGZvciBl
YWNoIG5lc3RlZCBjb2xsZWN0aW9uLi4uCi0jICAgICAgICBvYmplY3RfZGV0aWFsc1sgImVsZW1l
bnRzIiBdID0zRCBtYXAoIGRpY3RpZnlfZWxlbWVudCwgZWxlbWVudC5jaD0KaWxkX2NvbGxlY3Rp
b24uZWxlbWVudHMgKQotIwotIyAgICBkaWN0aWZpZWRbICJvYmplY3QiIF0gPTNEIG9iamVjdF9k
ZXRpYWxzCi0jICAgIHJldHVybiBkaWN0aWZpZWQKLSMKLSMgICAgZGVmIHNlcmlhbGl6ZV9tZXRh
ZGF0YSggc2VsZiwgdHJhbnMsIGhkYSwga2V5ICk6Ci0jICAgICAgICBub3RfaW5jbHVkZWQgPTNE
IFsgJ2Ria2V5JyBdCi0jICAgICAgICBtZCA9M0Qge30KLSMgICAgICAgIGZvciBuYW1lLCBzcGVj
IGluIGhkYS5tZXRhZGF0YS5zcGVjLml0ZW1zKCk6Ci0jICAgICAgICAgICAgaWYgbmFtZSBpbiBu
b3RfaW5jbHVkZWQ6Ci0jICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0jICAgICAgICAgICAgdmFs
ID0zRCBoZGEubWV0YWRhdGEuZ2V0KCBuYW1lICkKLSMgICAgICAgICAgICAjTk9URTogbm8gZmls
ZXMKLSMgICAgICAgICAgICBpZiBpc2luc3RhbmNlKCB2YWwsIG1vZGVsLk1ldGFkYXRhRmlsZSAp
OgotIyAgICAgICAgICAgICAgICBjb250aW51ZQotIyAgICAgICAgICAgICNUT0RPOj8gcG9zc2li
bHkgc3BsaXQgdGhpcyBvZmY/Ci0jICAgICAgICAgICAgIyBJZiBubyB2YWx1ZSBmb3IgbWV0YWRh
dGEsIGxvb2sgaW4gZGF0YXR5cGUgZm9yIG1ldGFkYXRhLgotIyAgICAgICAgICAgIGVsaWYgdmFs
IGlzIE5vbmUgYW5kIGhhc2F0dHIoIGhkYS5kYXRhdHlwZSwgbmFtZSApOgotIyAgICAgICAgICAg
ICAgICB2YWwgPTNEIGdldGF0dHIoIGhkYS5kYXRhdHlwZSwgbmFtZSApCi0jICAgICAgICAgICAg
bWRbIG5hbWUgXSA9M0QgdmFsCi0jCi0jICAgICAgICByZXR1cm4gbWQKLQotCi1jbGFzcyBEYXRh
c2V0Q29sbGVjdGlvbkRlc2VyaWFsaXplciggYmFzZS5Nb2RlbERlc2VyaWFsaXplciApOgotCi0g
ICAgZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToKLSAgICAgICAgc3VwZXIoIERhdGFzZXRDb2xs
ZWN0aW9uU2VyaWFsaXplciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQotCi0gICAgI2RlZiBfdmFs
aWRhdGVfYW5kX3BhcnNlX3VwZGF0ZV9wYXlsb2FkKCBzZWxmLCBwYXlsb2FkICk6Ci0gICAgIyAg
ICB2YWxpZGF0ZWRfcGF5bG9hZCA9M0Qge30KLSAgICAjICAgIGZvciBrZXksIHZhbCBpbiBwYXls
b2FkLml0ZW1zKCk6Ci0gICAgIyAgICAgICAgaWYgdmFsIGlzIE5vbmU6Ci0gICAgIyAgICAgICAg
ICAgIGNvbnRpbnVlCi0gICAgIyAgICAgICAgaWYga2V5IGluICggJ25hbWUnICk6Ci0gICAgIyAg
ICAgICAgICAgIHZhbCA9M0QgdmFsaWRhdGlvbi52YWxpZGF0ZV9hbmRfc2FuaXRpemVfYmFzZXN0
cmluZygga2V5LD0KIHZhbCApCi0gICAgIyAgICAgICAgICAgIHZhbGlkYXRlZF9wYXlsb2FkWyBr
ZXkgXSA9M0QgdmFsCi0gICAgIyAgICAgICAgaWYga2V5IGluICggJ2RlbGV0ZWQnLCAndmlzaWJs
ZScgKToKLSAgICAjICAgICAgICAgICAgdmFsaWRhdGVkX3BheWxvYWRbIGtleSBdID0zRCB2YWxp
ZGF0aW9uLnZhbGlkYXRlX2Jvb2xlYW4oPQoga2V5LCB2YWwgKQotICAgICMgICAgICAgIGVsaWYg
a2V5ID0zRD0zRCAndGFncyc6Ci0gICAgIyAgICAgICAgICAgIHZhbGlkYXRlZF9wYXlsb2FkWyBr
ZXkgXSA9M0QgdmFsaWRhdGlvbi52YWxpZGF0ZV9hbmRfc2FuaT0KdGl6ZV9iYXNlc3RyaW5nX2xp
c3QoIGtleSwgdmFsICkKLSAgICAjICAgIHJldHVybiB2YWxpZGF0ZWRfcGF5bG9hZAotCi0gICAg
I2RlZiBhZGRfZGVzZXJpYWxpemVycyggc2VsZiApOgotICAgICMgICAgc2VsZi5kZXNlcmlhbGl6
ZXJzLnVwZGF0ZSh7Ci0gICAgIyAgICAgICAgJ25hbWUnICAgICAgICAgIDogc2VsZi5kZXNlcmlh
bGl6ZV9iYXNlc3RyaW5nLAotICAgICMgICAgICAgICdnZW5vbWVfYnVpbGQnICA6IHNlbGYuZGVz
ZXJpYWxpemVfZ2Vub21lX2J1aWxkLAotICAgICMgICAgICAgICdkZWxldGVkJyAgICAgICA6IHNl
bGYuZGVzZXJpYWxpemVfYm9vbCwKLSAgICAjICAgICAgICAncHVibGlzaGVkJyAgICAgOiBzZWxm
LmRlc2VyaWFsaXplX2Jvb2wsCi0gICAgIyAgICAgICAgI1RPRE86IHRvIG1peGluOiBhbm5vdGF0
YWJsZQotICAgICMgICAgICAgICMnYW5ub3RhdGlvbicgICAgOiBzZWxmLmRlc2VyaWFsaXplX2Fu
bm90YXRpb24sCi0gICAgIyAgICAgICAgI1RPRE86IHRvIG1peGluOiB0YWdnYWJsZQotICAgICMg
ICAgICAgICMndGFncycgICAgICAgICAgOiBsYW1iZGEgdCwgaSwgaywgdjogLAotICAgICMgICAg
fSkKLSAgICAjICAgIHNlbGYuZGVzZXJpYWxpemFibGVfa2V5cyA9M0Qgc2VsZi5kZXNlcmlhbGl6
ZXJzLmtleXMoKQoKZGlmZiAtciBiNDUwZDcxOTg3YTFiMmEyMWVhNWU1MjAzNTEyZmUwZDVlYTkx
MmY4IC1yIGQ0MjdkYzIwNWNkZGNlMzFkYjI2MzM2PQo3Zjc2MzZlMzMxODA0M2Y1MSBsaWIvZ2Fs
YXh5L21hbmFnZXJzL2RhdGFzZXRzLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvZGF0YXNl
dHMucHkKKysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vycy9kYXRhc2V0cy5weQpAQCAtMTkyLDcgKzE5
Miw3IEBACj0yMAo9MjAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPQotLS0tLQotY2xhc3MgRGF0YXNldFNl
cmlhbGl6ZXIoIGJhc2UuTW9kZWxTZXJpYWxpemVyICk6CitjbGFzcyBEYXRhc2V0U2VyaWFsaXpl
ciggYmFzZS5Nb2RlbFNlcmlhbGl6ZXIsIGJhc2UuUHVyZ2FibGVNb2RlbFNlcmlhbGl6ZT0KciAp
Ogo9MjAKICAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgogICAgICAgICBzdXBlciggRGF0
YXNldFNlcmlhbGl6ZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwICkKQEAgLTIxOSw2ICsyMTksNyBA
QAogICAgICAgICBzZWxmLmRlZmF1bHRfdmlldyA9M0QgJ3N1bW1hcnknCj0yMAogICAgIGRlZiBh
ZGRfc2VyaWFsaXplcnMoIHNlbGYgKToKKyAgICAgICAgYmFzZS5QdXJnYWJsZU1vZGVsU2VyaWFs
aXplci5hZGRfc2VyaWFsaXplcnMoIHNlbGYgKQogICAgICAgICBzZWxmLnNlcmlhbGl6ZXJzLnVw
ZGF0ZSh7CiAgICAgICAgICAgICAnaWQnICAgICAgICAgICAgOiBzZWxmLnNlcmlhbGl6ZV9pZCwK
ICAgICAgICAgICAgICdjcmVhdGVfdGltZScgICA6IHNlbGYuc2VyaWFsaXplX2RhdGUsCkBAIC0y
MzUsNiArMjM2LDcgQEAKICAgICAgICAgc3VwZXIoIERhdGFzZXREZXNlcmlhbGl6ZXIsIHNlbGYg
KS5hZGRfZGVzZXJpYWxpemVycygpCiAgICAgICAgIGJhc2UuUHVyZ2FibGVNb2RlbERlc2VyaWFs
aXplci5hZGRfZGVzZXJpYWxpemVycyggc2VsZiApCj0yMAorCiAjID0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0K
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRAogY2xhc3Mg
RGF0YXNldEFzc29jaWF0aW9uTWFuYWdlciggYmFzZS5Nb2RlbE1hbmFnZXIsIGJhc2UuQWNjZXNz
aWJsZU1vZGVsSW49CnRlcmZhY2UsIGJhc2UuUHVyZ2FibGVNb2RlbEludGVyZmFjZSApOgogICAg
ICIiIgpAQCAtMjY5LDEzICsyNzEsMTEgQEAKPTIwCj0yMAogIyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0t
LS0tCi1jbGFzcyBEYXRhc2V0QXNzb2NpYXRpb25TZXJpYWxpemVyKCBiYXNlLk1vZGVsU2VyaWFs
aXplciApOgotCi0gICAgZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAgKToKLSAgICAgICAgc3VwZXIo
IERhdGFzZXRBc3NvY2lhdGlvblNlcmlhbGl6ZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwICkKK2Ns
YXNzIERhdGFzZXRBc3NvY2lhdGlvblNlcmlhbGl6ZXIoIGJhc2UuTW9kZWxTZXJpYWxpemVyLCBi
YXNlLlB1cmdhYmxlTW9kPQplbFNlcmlhbGl6ZXIgKToKPTIwCiAgICAgZGVmIGFkZF9zZXJpYWxp
emVycyggc2VsZiApOgogICAgICAgICBzdXBlciggRGF0YXNldEFzc29jaWF0aW9uU2VyaWFsaXpl
ciwgc2VsZiApLmFkZF9zZXJpYWxpemVycygpCisgICAgICAgIGJhc2UuUHVyZ2FibGVNb2RlbFNl
cmlhbGl6ZXIuYWRkX3NlcmlhbGl6ZXJzKCBzZWxmICkKPTIwCj0yMAogIyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS09Ci0tLS0tCgpkaWZmIC1yIGI0NTBkNzE5ODdhMWIyYTIxZWE1ZTUyMDM1MTJmZTBkNWVhOTEy
ZjggLXIgZDQyN2RjMjA1Y2RkY2UzMWRiMjYzMzY9CjdmNzYzNmUzMzE4MDQzZjUxIGxpYi9nYWxh
eHkvbWFuYWdlcnMvaGRhcy5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL2hkYXMucHkKKysr
IGIvbGliL2dhbGF4eS9tYW5hZ2Vycy9oZGFzLnB5CkBAIC01NzgsMTEgKzU3OCwxMSBAQAogICAg
ICAgICBzdXBlciggSERBRGVzZXJpYWxpemVyLCBzZWxmICkuX19pbml0X18oIGFwcCApCiAgICAg
ICAgIHNlbGYuaGRhX21hbmFnZXIgPTNEIHNlbGYubWFuYWdlcgo9MjAKLSAgICAjYXNzdW1lczog
aW5jb21pbmcgZnJvbSBqc29uLmxvYWRzIGFuZCBzYW5pdGl6ZWQKICAgICBkZWYgYWRkX2Rlc2Vy
aWFsaXplcnMoIHNlbGYgKToKICAgICAgICAgc3VwZXIoIEhEQURlc2VyaWFsaXplciwgc2VsZiAp
LmFkZF9kZXNlcmlhbGl6ZXJzKCkKICAgICAgICAgdGFnZ2FibGUuVGFnZ2FibGVEZXNlcmlhbGl6
ZXIuYWRkX2Rlc2VyaWFsaXplcnMoIHNlbGYgKQogICAgICAgICBhbm5vdGF0YWJsZS5Bbm5vdGF0
YWJsZURlc2VyaWFsaXplci5hZGRfZGVzZXJpYWxpemVycyggc2VsZiApCisKICAgICAgICAgc2Vs
Zi5kZXNlcmlhbGl6ZXJzLnVwZGF0ZSh7CiAgICAgICAgICAgICAnbmFtZScgICAgICAgICAgOiBz
ZWxmLmRlc2VyaWFsaXplX2Jhc2VzdHJpbmcsCiAgICAgICAgICAgICAndmlzaWJsZScgICAgICAg
OiBzZWxmLmRlc2VyaWFsaXplX2Jvb2wsCkBAIC02MDMsNCArNjAzLDQgQEAKICAgICAgICAgICAg
ICdpbXBvcnRhYmxlJyAgICA6IHNlbGYuZGVzZXJpYWxpemVfYm9vbCwKPTIwCiAgICAgICAgIH0p
Ci0gICAgICAgIHNlbGYuZGVzZXJpYWxpemFibGVfa2V5cyA9M0Qgc2VsZi5kZXNlcmlhbGl6ZXJz
LmtleXMoKQorICAgICAgICBzZWxmLmRlc2VyaWFsaXphYmxlX2tleXMuZXh0ZW5kKCBzZWxmLmRl
c2VyaWFsaXplcnMua2V5cygpICkKCmRpZmYgLXIgYjQ1MGQ3MTk4N2ExYjJhMjFlYTVlNTIwMzUx
MmZlMGQ1ZWE5MTJmOCAtciBkNDI3ZGMyMDVjZGRjZTMxZGIyNjMzNj0KN2Y3NjM2ZTMzMTgwNDNm
NTEgbGliL2dhbGF4eS9tYW5hZ2Vycy9oaXN0b3JpZXMucHkKLS0tIGEvbGliL2dhbGF4eS9tYW5h
Z2Vycy9oaXN0b3JpZXMucHkKKysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vycy9oaXN0b3JpZXMucHkK
QEAgLTI1Miw3ICsyNTIsNiBAQAogICAgICAgICBzdXBlciggSGlzdG9yeVNlcmlhbGl6ZXIsIHNl
bGYgKS5fX2luaXRfXyggYXBwICkKICAgICAgICAgc2VsZi5oaXN0b3J5X21hbmFnZXIgPTNEIEhp
c3RvcnlNYW5hZ2VyKCBhcHAgKQo9MjAKLSAgICAgICAgZnJvbSBnYWxheHkubWFuYWdlcnMgaW1w
b3J0IGhkYXMKICAgICAgICAgc2VsZi5oZGFfbWFuYWdlciA9M0QgaGRhcy5IREFNYW5hZ2VyKCBh
cHAgKQogICAgICAgICBzZWxmLmhkYV9zZXJpYWxpemVyID0zRCBoZGFzLkhEQVNlcmlhbGl6ZXIo
IGFwcCApCj0yMAoKZGlmZiAtciBiNDUwZDcxOTg3YTFiMmEyMWVhNWU1MjAzNTEyZmUwZDVlYTkx
MmY4IC1yIGQ0MjdkYzIwNWNkZGNlMzFkYjI2MzM2PQo3Zjc2MzZlMzMxODA0M2Y1MSBsaWIvZ2Fs
YXh5L21hbmFnZXJzL3BhZ2VzLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvcGFnZXMucHkK
KysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vycy9wYWdlcy5weQpAQCAtNDcsNiArNDcsNyBAQAogICAg
ICIiIgogICAgIEludGVyZmFjZS9zZXJ2aWNlIG9iamVjdCBmb3Igc2VyaWFsaXppbmcgcGFnZXMg
aW50byBkaWN0aW9uYXJpZXMuCiAgICAgIiIiCisgICAgU0lOR0xFX0NIQVJfQUJCUiA9M0QgJ3An
Cj0yMAogICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CiAgICAgICAgIHN1cGVyKCBQYWdl
U2VyaWFsaXplciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQoKZGlmZiAtciBiNDUwZDcxOTg3YTFi
MmEyMWVhNWU1MjAzNTEyZmUwZDVlYTkxMmY4IC1yIGQ0MjdkYzIwNWNkZGNlMzFkYjI2MzM2PQo3
Zjc2MzZlMzMxODA0M2Y1MSBsaWIvZ2FsYXh5L21hbmFnZXJzL3JhdGFibGUucHkKLS0tIGEvbGli
L2dhbGF4eS9tYW5hZ2Vycy9yYXRhYmxlLnB5CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvcmF0
YWJsZS5weQpAQCAtMzUsNyArMzUsNiBAQAo9MjAKICMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECiBjbGFzcyBSYXRhYmxl
RGVzZXJpYWxpemVyKCBvYmplY3QgKToKLSAgICBwYXNzCj0yMAogICAgIGRlZiBhZGRfZGVzZXJp
YWxpemVycyggc2VsZiApOgogICAgICAgICBwYXNzCkBAIC00NCw0ICs0MywzIEBACiAgICAgI2Rl
ZiBkZXNlcmlhbGl6ZV9yYXRpbmcoIHNlbGYsIHRyYW5zLCBpdGVtLCBrZXksIHZhbCApOgogICAg
ICMgICAgdmFsID0zRCBzZWxmLnZhbGlkYXRlLmludF9yYW5nZSgga2V5LCB2YWwsIDAsIDUgKQog
ICAgICMgICAgcmV0dXJuIHNlbGYuc2V0X3JhdGluZy4uLiggdHJhbnMsIGl0ZW0sIHZhbCwgdXNl
cj0zRHRyYW5zLnVzZXIgKQotCgpkaWZmIC1yIGI0NTBkNzE5ODdhMWIyYTIxZWE1ZTUyMDM1MTJm
ZTBkNWVhOTEyZjggLXIgZDQyN2RjMjA1Y2RkY2UzMWRiMjYzMzY9CjdmNzYzNmUzMzE4MDQzZjUx
IGxpYi9nYWxheHkvbWFuYWdlcnMvc2hhcmFibGUucHkKLS0tIGEvbGliL2dhbGF4eS9tYW5hZ2Vy
cy9zaGFyYWJsZS5weQorKysgYi9saWIvZ2FsYXh5L21hbmFnZXJzL3NoYXJhYmxlLnB5CkBAIC0z
MzgsOCArMzM4LDYgQEAKICAgICAjICAgICIiIiBTZXQgdXNlcidzIHB1YmxpYyB1c2VybmFtZSBh
bmQgZGVsZWdhdGUgdG8gc2hhcmluZygpICIiIgogICAgICNkZWYgc2hhcmluZyggc2VsZiwgdHJh
bnMsIGlkLCAqKmt3YXJncyApOgogICAgICMgICAgIiIiIEhhbmRsZSBpdGVtIHNoYXJpbmcuICIi
IgotICAgICNkZWYgZ2V0X25hbWVfYW5kX2xpbmtfYXN5bmMoIHNlbGYsIHRyYW5zLCBpZD0zRE5v
bmUgKToKLSAgICAjICAgICIiIiBSZXR1cm5zIGl0ZW0ncyBuYW1lIGFuZCBsaW5rLiAiIiIKPTIw
Cj0yMAogIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPQo9M0Q9M0Q9M0QKCmRpZmYgLXIgYjQ1MGQ3MTk4N2ExYjJhMjFlYTVlNTIwMzUxMmZl
MGQ1ZWE5MTJmOCAtciBkNDI3ZGMyMDVjZGRjZTMxZGIyNjMzNj0KN2Y3NjM2ZTMzMTgwNDNmNTEg
bGliL2dhbGF4eS9tYW5hZ2Vycy91c2Vycy5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL3Vz
ZXJzLnB5CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvdXNlcnMucHkKQEAgLTI2LDcgKzI2LDYg
QEAKICAgICAjVE9ETzogdGhlcmUgaXMgcXVpdGUgYSBiaXQgb2YgZnVuY3Rpb25hbGl0eSBhcm91
bmQgdGhlIHVzZXIgKGF1dGhlbnRpPQpjYXRpb24sIHBlcm1pc3Npb25zLCBxdW90YXMsIGdyb3Vw
cy9yb2xlcykKICAgICAjICAgbW9zdCBvZiB3aGljaCBpdCBtYXkgYmUgdW5uZWNjZXNzYXJ5IHRv
IGhhdmUgaGVyZQo9MjAKLSAgICAjVE9ETzogaW5jb3JwIFByb3ZpZGVzVXNlckNvbnRleHQKICAg
ICAjVE9ETzogaW5jb3JwIEJhc2VBUElDb250cm9sbGVyLnZhbGlkYXRlX2luX3VzZXJzX2FuZF9n
cm91cHMKICAgICAjVE9ETzogaW5jb3JwIENyZWF0ZXNVc2Vyc01peGluCiAgICAgI1RPRE86IGlu
Y29ycCBDcmVhdGVzQXBpS2V5c01peGluCgpkaWZmIC1yIGI0NTBkNzE5ODdhMWIyYTIxZWE1ZTUy
MDM1MTJmZTBkNWVhOTEyZjggLXIgZDQyN2RjMjA1Y2RkY2UzMWRiMjYzMzY9CjdmNzYzNmUzMzE4
MDQzZjUxIGxpYi9nYWxheHkvbWFuYWdlcnMvdmlzdWFsaXphdGlvbnMucHkKLS0tIGEvbGliL2dh
bGF4eS9tYW5hZ2Vycy92aXN1YWxpemF0aW9ucy5weQorKysgYi9saWIvZ2FsYXh5L21hbmFnZXJz
L3Zpc3VhbGl6YXRpb25zLnB5CkBAIC00OCw2ICs0OCw3IEBACiAgICAgIiIiCiAgICAgSW50ZXJm
YWNlL3NlcnZpY2Ugb2JqZWN0IGZvciBzZXJpYWxpemluZyB2aXN1YWxpemF0aW9ucyBpbnRvIGRp
Y3Rpb25hcj0KaWVzLgogICAgICIiIgorICAgIFNJTkdMRV9DSEFSX0FCQlIgPTNEICd2Jwo9MjAK
ICAgICBkZWYgX19pbml0X18oIHNlbGYsIGFwcCApOgogICAgICAgICBzdXBlciggVmlzdWFsaXph
dGlvblNlcmlhbGl6ZXIsIHNlbGYgKS5fX2luaXRfXyggYXBwICkKCgpodHRwczovL2JpdGJ1Y2tl
dC5vcmcvZ2FsYXh5L2dhbGF4eS1jZW50cmFsL2NvbW1pdHMvMjk0ODZhNzEzZmFiLwpDaGFuZ2Vz
ZXQ6ICAgMjk0ODZhNzEzZmFiClVzZXI6ICAgICAgICBjYXJsZmViZXJoYXJkCkRhdGU6ICAgICAg
ICAyMDE1LTAxLTE1IDE4OjU4OjU1KzAwOjAwClN1bW1hcnk6ICAgICBNZXJnZWQgZ2FsYXh5L2dh
bGF4eS1jZW50cmFsIGludG8gZGVmYXVsdApBZmZlY3RlZCAjOiAgMSBmaWxlCgpkaWZmIC1yIGQ0
MjdkYzIwNWNkZGNlMzFkYjI2MzM2N2Y3NjM2ZTMzMTgwNDNmNTEgLXIgMjk0ODZhNzEzZmFiOTAz
ODRlOTFkMzI9CmIzOTM0NDYxMzg2ZDQ1YWVjIGxpYi9nYWxheHkvdG9vbHMvZXZhbHVhdGlvbi5w
eQotLS0gYS9saWIvZ2FsYXh5L3Rvb2xzL2V2YWx1YXRpb24ucHkKKysrIGIvbGliL2dhbGF4eS90
b29scy9ldmFsdWF0aW9uLnB5CkBAIC0zODIsNyArMzgyLDcgQEAKICAgICAgICAgTm90ZTogdGhp
cyBtZXRob2QgZm9sbG93cyB0aGUgc3R5bGUgb2YgdGhlIHNpbWlsYXIgcG9wdWxhdGUgY2FsbHMs
PQogaW4gdGhhdCBwYXJhbV9kaWN0IGlzIG1vZGlmaWVkIGluLXBsYWNlLgogICAgICAgICAiIiIK
ICAgICAgICAgIyBjaHJvbUluZm8gaXMgYSBmaWxlbmFtZSwgZG8gbm90IHNhbml0aXplIGl0Lgot
ICAgICAgICBza2lwID0zRCBbICdjaHJvbUluZm8nIF0KKyAgICAgICAgc2tpcCA9M0QgWyAnY2hy
b21JbmZvJyBdICsgc2VsZi50b29sLnRlbXBsYXRlX21hY3JvX3BhcmFtcy5rZXlzKCkKICAgICAg
ICAgaWYgbm90IHNlbGYudG9vbCBvciBub3Qgc2VsZi50b29sLm9wdGlvbnMgb3Igc2VsZi50b29s
Lm9wdGlvbnMuc2FuPQppdGl6ZToKICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHBhcmFt
X2RpY3QuaXRlbXMoKToKICAgICAgICAgICAgICAgICBpZiBrZXkgbm90IGluIHNraXA6CgoKaHR0
cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzLzhhNzA0NTc5
MmM3Zi8KQ2hhbmdlc2V0OiAgIDhhNzA0NTc5MmM3ZgpVc2VyOiAgICAgICAgY2FybGZlYmVyaGFy
ZApEYXRlOiAgICAgICAgMjAxNS0wMS0xNSAxOTowMToyOCswMDowMApTdW1tYXJ5OiAgICAgUHVz
aCBkZWZhdWx0X29yZGVyX2J5IGRvd24gZnJvbSBjbGFzcyBsZXZlbCB2YXIgdG8gaW5zdGFuY2Ug
bWU9CnRob2QgKGNsYXNzIGxldmVsIHJlbGllcyBvbiBtYXBwaW5nIGJlaW5nIGxvYWRlZCBiZWZv
cmUgbWFuYWdlcnMpCkFmZmVjdGVkICM6ICA3IGZpbGVzCgpkaWZmIC1yIDI5NDg2YTcxM2ZhYjkw
Mzg0ZTkxZDMyYjM5MzQ0NjEzODZkNDVhZWMgLXIgOGE3MDQ1NzkyYzdmZTQ4YTk5Mjk1Nzc9CjA0
ZTUxZTMxM2QzMmU2Y2RkIGxpYi9nYWxheHkvbWFuYWdlcnMvYmFzZS5weQotLS0gYS9saWIvZ2Fs
YXh5L21hbmFnZXJzL2Jhc2UucHkKKysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vycy9iYXNlLnB5CkBA
IC0xNTgsMTEgKzE1OCwxNyBAQAogICAgIG92ZXIgdGhlIE9STS4KICAgICAiIiIKICAgICBtb2Rl
bF9jbGFzcyA9M0Qgb2JqZWN0Ci0gICAgZGVmYXVsdF9vcmRlcl9ieSA9M0QgTm9uZQogICAgIGZv
cmVpZ25fa2V5X25hbWUgPTNEIE5vbmUKPTIwCiAgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBhcHAg
KToKICAgICAgICAgc2VsZi5hcHAgPTNEIGFwcAorICAgICAgICBzZWxmLmRlZmF1bHRfb3JkZXJf
YnkgPTNEIE5vbmUKKworICAgIGRlZiBfZGVmYXVsdF9vcmRlcl9ieSggc2VsZiApOgorICAgICAg
ICAiIiIKKyAgICAgICAgUmV0dXJucyBhIHR1cGxlIG9mIGNvbHVtbnMgZm9yIHRoZSBkZWZhdWx0
IG9yZGVyIHdoZW4gZ2V0dGluZyBtdWx0PQppcGxlIG1vZGVscy4KKyAgICAgICAgIiIiCisgICAg
ICAgIHJldHVybiAoIHNlbGYubW9kZWxfY2xhc3MuY3JlYXRlX3RpbWUsICkKPTIwCiAgICAgI05P
VEU6IGF0IHRoaXMgbGF5ZXIsIGFsbCBpZHMgYXJlIGV4cGVjdGVkIHRvIGJlIGRlY29kZWQgYW5k
IGluIGludCBmbz0Kcm0KICAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPQotLS0tLSBnZXQvcmVhZC9xdWVyeQpA
QCAtMjI5LDcgKzIzNSw3IEBACiAgICAgICAgIFVzZSB0aGUgbWFuYWdlcidzIGRlZmF1bHRfb3Jk
ZXJfYnkgaWYgb3JkZXJfYnkgaXMgTm9uZS4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIG9yZGVy
X2J5IGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gcXVlcnkub3JkZXJfYnkoICpzZWxmLmRl
ZmF1bHRfb3JkZXJfYnkgKQorICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5Lm9yZGVyX2J5KCAqc2Vs
Zi5kZWZhdWx0X29yZGVyX2J5KCkgKQo9MjAKICAgICAgICAgaWYgaXNpbnN0YW5jZSggb3JkZXJf
YnksICggbGlzdCwgdHVwbGUgKSApOgogICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5Lm9yZGVyX2J5
KCAqb3JkZXJfYnkgKQoKZGlmZiAtciAyOTQ4NmE3MTNmYWI5MDM4NGU5MWQzMmIzOTM0NDYxMzg2
ZDQ1YWVjIC1yIDhhNzA0NTc5MmM3ZmU0OGE5OTI5NTc3PQowNGU1MWUzMTNkMzJlNmNkZCBsaWIv
Z2FsYXh5L21hbmFnZXJzL2RhdGFzZXRzLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvZGF0
YXNldHMucHkKKysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vycy9kYXRhc2V0cy5weQpAQCAtMTgsNyAr
MTgsNiBAQAogICAgICIiIgo9MjAKICAgICBtb2RlbF9jbGFzcyA9M0QgbW9kZWwuRGF0YXNldAot
ICAgIGRlZmF1bHRfb3JkZXJfYnkgPTNEICggbW9kZWwuRGF0YXNldC5jcmVhdGVfdGltZSwgKQog
ICAgIGZvcmVpZ25fa2V5X25hbWUgPTNEICdkYXRhc2V0Jwo9MjAKICAgICAjVE9ETzo/PyBnZXQg
KyBlcnJvcl9pZl91cGxvYWRpbmcgaXMgY29tbW9uIHBhdHRlcm4sIHNob3VsZCB1cGxvYWQgY2hl
PQpjayBiZSB3b3JrZWQgaW50byBhY2Nlc3Mvb3dlZD8KCmRpZmYgLXIgMjk0ODZhNzEzZmFiOTAz
ODRlOTFkMzJiMzkzNDQ2MTM4NmQ0NWFlYyAtciA4YTcwNDU3OTJjN2ZlNDhhOTkyOTU3Nz0KMDRl
NTFlMzEzZDMyZTZjZGQgbGliL2dhbGF4eS9tYW5hZ2Vycy9oZGFzLnB5Ci0tLSBhL2xpYi9nYWxh
eHkvbWFuYWdlcnMvaGRhcy5weQorKysgYi9saWIvZ2FsYXh5L21hbmFnZXJzL2hkYXMucHkKQEAg
LTMwLDcgKzMwLDYgQEAKICAgICAiIiIKICAgICBtb2RlbF9jbGFzcyA9M0QgbW9kZWwuSGlzdG9y
eURhdGFzZXRBc3NvY2lhdGlvbgogICAgIGZvcmVpZ25fa2V5X25hbWUgPTNEICdoaXN0b3J5X2Rh
dGFzZXRfYXNzb2NpYXRpb24nCi0gICAgZGVmYXVsdF9vcmRlcl9ieSA9M0QgKCBtb2RlbC5IaXN0
b3J5RGF0YXNldEFzc29jaWF0aW9uLmNyZWF0ZV90aW1lLCApCj0yMAogICAgIHRhZ19hc3NvYyA9
M0QgbW9kZWwuSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvblRhZ0Fzc29jaWF0aW9uCiAgICAgYW5u
b3RhdGlvbl9hc3NvYyA9M0QgbW9kZWwuSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbkFubm90YXRp
b25Bc3NvY2lhdD0KaW9uCgpkaWZmIC1yIDI5NDg2YTcxM2ZhYjkwMzg0ZTkxZDMyYjM5MzQ0NjEz
ODZkNDVhZWMgLXIgOGE3MDQ1NzkyYzdmZTQ4YTk5Mjk1Nzc9CjA0ZTUxZTMxM2QzMmU2Y2RkIGxp
Yi9nYWxheHkvbWFuYWdlcnMvaGlzdG9yaWVzLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMv
aGlzdG9yaWVzLnB5CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvaGlzdG9yaWVzLnB5CkBAIC0y
Miw3ICsyMiw2IEBACiBjbGFzcyBIaXN0b3J5TWFuYWdlciggc2hhcmFibGUuU2hhcmFibGVNb2Rl
bE1hbmFnZXIsIGJhc2UuUHVyZ2FibGVNb2RlbEludD0KZXJmYWNlICk6Cj0yMAogICAgIG1vZGVs
X2NsYXNzID0zRCBtb2RlbC5IaXN0b3J5Ci0gICAgZGVmYXVsdF9vcmRlcl9ieSA9M0QgKCBtb2Rl
bC5IaXN0b3J5LmNyZWF0ZV90aW1lLCApCiAgICAgZm9yZWlnbl9rZXlfbmFtZSA9M0QgJ2hpc3Rv
cnknCiAgICAgdXNlcl9zaGFyZV9tb2RlbCA9M0QgbW9kZWwuSGlzdG9yeVVzZXJTaGFyZUFzc29j
aWF0aW9uCj0yMAoKZGlmZiAtciAyOTQ4NmE3MTNmYWI5MDM4NGU5MWQzMmIzOTM0NDYxMzg2ZDQ1
YWVjIC1yIDhhNzA0NTc5MmM3ZmU0OGE5OTI5NTc3PQowNGU1MWUzMTNkMzJlNmNkZCBsaWIvZ2Fs
YXh5L21hbmFnZXJzL3BhZ2VzLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvcGFnZXMucHkK
KysrIGIvbGliL2dhbGF4eS9tYW5hZ2Vycy9wYWdlcy5weQpAQCAtMjMsNyArMjMsNiBAQAogICAg
ICIiIgo9MjAKICAgICBtb2RlbF9jbGFzcyA9M0QgbW9kZWwuUGFnZQotICAgIGRlZmF1bHRfb3Jk
ZXJfYnkgPTNEICggbW9kZWwuUGFnZS5jcmVhdGVfdGltZSwgKQogICAgIGZvcmVpZ25fa2V5X25h
bWUgPTNEICdwYWdlJwogICAgIHVzZXJfc2hhcmVfbW9kZWwgPTNEIG1vZGVsLlBhZ2VVc2VyU2hh
cmVBc3NvY2lhdGlvbgo9MjAKCmRpZmYgLXIgMjk0ODZhNzEzZmFiOTAzODRlOTFkMzJiMzkzNDQ2
MTM4NmQ0NWFlYyAtciA4YTcwNDU3OTJjN2ZlNDhhOTkyOTU3Nz0KMDRlNTFlMzEzZDMyZTZjZGQg
bGliL2dhbGF4eS9tYW5hZ2Vycy91c2Vycy5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL3Vz
ZXJzLnB5CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvdXNlcnMucHkKQEAgLTIwLDcgKzIwLDYg
QEAKICMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0KPTNEPTNEPTNECiBjbGFzcyBVc2VyTWFuYWdlciggYmFzZS5Nb2RlbE1hbmFnZXIgKToK
ICAgICBtb2RlbF9jbGFzcyA9M0QgbW9kZWwuVXNlcgotICAgIGRlZmF1bHRfb3JkZXJfYnkgPTNE
ICggbW9kZWwuVXNlci5jcmVhdGVfdGltZSwgKQogICAgIGZvcmVpZ25fa2V5X25hbWUgPTNEICd1
c2VyJwo9MjAKICAgICAjVE9ETzogdGhlcmUgaXMgcXVpdGUgYSBiaXQgb2YgZnVuY3Rpb25hbGl0
eSBhcm91bmQgdGhlIHVzZXIgKGF1dGhlbnRpPQpjYXRpb24sIHBlcm1pc3Npb25zLCBxdW90YXMs
IGdyb3Vwcy9yb2xlcykKCmRpZmYgLXIgMjk0ODZhNzEzZmFiOTAzODRlOTFkMzJiMzkzNDQ2MTM4
NmQ0NWFlYyAtciA4YTcwNDU3OTJjN2ZlNDhhOTkyOTU3Nz0KMDRlNTFlMzEzZDMyZTZjZGQgbGli
L2dhbGF4eS9tYW5hZ2Vycy92aXN1YWxpemF0aW9ucy5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFn
ZXJzL3Zpc3VhbGl6YXRpb25zLnB5CisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvdmlzdWFsaXph
dGlvbnMucHkKQEAgLTIyLDcgKzIyLDYgQEAKICAgICAiIiIKPTIwCiAgICAgbW9kZWxfY2xhc3Mg
PTNEIG1vZGVsLlZpc3VhbGl6YXRpb24KLSAgICBkZWZhdWx0X29yZGVyX2J5ID0zRCAoIG1vZGVs
LlZpc3VhbGl6YXRpb24uY3JlYXRlX3RpbWUsICkKICAgICBmb3JlaWduX2tleV9uYW1lID0zRCAn
dmlzdWFsaXphdGlvbicKICAgICB1c2VyX3NoYXJlX21vZGVsID0zRCBtb2RlbC5WaXN1YWxpemF0
aW9uVXNlclNoYXJlQXNzb2NpYXRpb24KPTIwCgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dhbGF4
eS9nYWxheHktY2VudHJhbC9jb21taXRzLzBmNzM3NDg1Y2I3Zi8KQ2hhbmdlc2V0OiAgIDBmNzM3
NDg1Y2I3ZgpVc2VyOiAgICAgICAgY2FybGZlYmVyaGFyZApEYXRlOiAgICAgICAgMjAxNS0wMS0y
MSAxNzo0NTozNyswMDowMApTdW1tYXJ5OiAgICAgKE1hbnVhbGx5KSBtZXJnZSBjZW50cmFsCkFm
ZmVjdGVkICM6ICAzNCBmaWxlcwoKZGlmZiAtciA4YTcwNDU3OTJjN2ZlNDhhOTkyOTU3NzA0ZTUx
ZTMxM2QzMmU2Y2RkIC1yIDBmNzM3NDg1Y2I3ZjVkNzU1OTVlOThhPQpiOGY4ZGMwMmJhMzY5OTc2
ZiAuaGd0YWdzCi0tLSBhLy5oZ3RhZ3MKKysrIGIvLmhndGFncwpAQCAtMjIsNCArMjIsNCBAQAog
MjA5Mjk0ODkzN2FjMzBlZjgyZjcxNDYzYTIzNWM2NmQzNDk4NzA4OCByZWxlYXNlXzIwMTQuMTAu
MDYKIDliZDZmOGI1YjgxNTNkYjc1MmY0ZTYxZWQ2MmYyYjZjMDFhZTRhMTEgbGF0ZXN0XzIwMTQu
MTAuMDYKIDJlOGRkMjk0OWRkM2VlZTBmNTZmOWEzYTVlYmYxYjJiYWNhMjRhZWUgcmVsZWFzZV8y
MDE1LjAxLjEzCi0yZThkZDI5NDlkZDNlZWUwZjU2ZjlhM2E1ZWJmMWIyYmFjYTI0YWVlIGxhdGVz
dF8yMDE1LjAxLjEzCis1MDdlZGY4MmFkMWQ4ODhmYWFiMjVlOWJhNjZkMjlmNmVhYjUzOGY0IGxh
dGVzdF8yMDE1LjAxLjEzCgpkaWZmIC1yIDhhNzA0NTc5MmM3ZmU0OGE5OTI5NTc3MDRlNTFlMzEz
ZDMyZTZjZGQgLXIgMGY3Mzc0ODVjYjdmNWQ3NTU5NWU5OGE9CmI4ZjhkYzAyYmEzNjk5NzZmIGNs
aWVudC9nYWxheHkvc2NyaXB0cy9nYWxheHkubWFzdGhlYWQuanMKLS0tIGEvY2xpZW50L2dhbGF4
eS9zY3JpcHRzL2dhbGF4eS5tYXN0aGVhZC5qcworKysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMv
Z2FsYXh5Lm1hc3RoZWFkLmpzCkBAIC0zNjQsNyArMzY0LDcgQEAKICAgICAgICAgdmFyICRwb3Bv
dmVyX2VsZW1lbnQgPTNEICQodGhpcy5lbCkuZmluZCgnLmhlYWQnKTsKICAgICAgICAgJHBvcG92
ZXJfZWxlbWVudC5wb3BvdmVyKHsKICAgICAgICAgICAgIGh0bWw6IHRydWUsCi0gICAgICAgICAg
ICBjb250ZW50OiAnUGxlYXNlIDxhIGhyZWY9M0QiJyArIGdhbGF4eV9jb25maWcucm9vdCArICcv
dXNlci9sbz0KZ2luIj5sb2cgaW48L2E+IG9yIDxhIGhyZWY9M0QiJyArIGdhbGF4eV9jb25maWcu
cm9vdCArICcvdXNlci9jcmVhdGUiPnJlZ2lzPQp0ZXI8L2E+IHRvIHVzZSB0aGlzIGZlYXR1cmUu
JywKKyAgICAgICAgICAgIGNvbnRlbnQ6ICdQbGVhc2UgPGEgaHJlZj0zRCInICsgZ2FsYXh5X2Nv
bmZpZy5yb290ICsgJ3VzZXIvbG9nPQppbj91c2VfcGFuZWxzPTNEVHJ1ZSI+bG9nIGluPC9hPiBv
ciA8YSBocmVmPTNEIicgKyBnYWxheHlfY29uZmlnLnJvb3QgKyAndXM9CmVyL2NyZWF0ZT91c2Vf
cGFuZWxzPTNEVHJ1ZSI+cmVnaXN0ZXI8L2E+IHRvIHVzZSB0aGlzIGZlYXR1cmUuJywKICAgICAg
ICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScKICAgICAgICAgfSkub24oJ3Nob3duLmJzLnBvcG92
ZXInLCBmdW5jdGlvbigpIHsgLy8gaG9va2luZyBvbiBib290c3RyYXAgZXZlPQpudCB0byBhdXRv
bWF0aWNhbGx5IGhpZGUgcG9wb3ZlcnMgYWZ0ZXIgZGVsYXkKICAgICAgICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7CgpkaWZmIC1yIDhhNzA0NTc5MmM3ZmU0OGE5OTI5NTc3MDRlNTFlMzEz
ZDMyZTZjZGQgLXIgMGY3Mzc0ODVjYjdmNWQ3NTU5NWU5OGE9CmI4ZjhkYzAyYmEzNjk5NzZmIGNs
aWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtZm9ybS1iYXNlLmpzCi0tLSBhL2Ns
aWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtZm9ybS1iYXNlLmpzCisrKyBiL2Ns
aWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtZm9ybS1iYXNlLmpzCkBAIC0xMSw4
ICsxMSwyMyBAQAogICAgIHJldHVybiBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7CiAgICAgICAgIC8v
IGluaXRpYWxpemUKICAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24ob3B0aW9ucykgeworICAg
ICAgICAgICAgLy8gb3B0aW9ucworICAgICAgICAgICAgdGhpcy5vcHRpb25zRGVmYXVsdCA9M0Qg
eworICAgICAgICAgICAgICAgIC8vIHVzZXMgZHluYW1pYyBmaWVsZHMgaW5zdGVhZCBvZiB0ZXh0
IGZpZWxkcworICAgICAgICAgICAgICAgIGlzX2R5bmFtaWMgICAgICA6IHRydWUsCisgICAgICAg
ICAgICAgICAgLy8gc2hvd3MgZm9ybSBpbiBjb21wYWN0IHZpZXcgbW9kZQorICAgICAgICAgICAg
ICAgIGNvbXBhY3QgICAgICAgICA6IGZhbHNlLAorICAgICAgICAgICAgICAgIC8vIHNob3dzIGVy
cm9ycyBvbiBzdGFydAorICAgICAgICAgICAgICAgIGluaXRpYWxfZXJyb3JzICA6IGZhbHNlLAor
ICAgICAgICAgICAgICAgIC8vIGVuc3VyZXMgdGhhdCBhbGwgZGF0YSBpbmNsdWRpbmcgZGlzYWJs
ZWQgb3B0aW9uYWwgZmllbGQ9CnMgYXJlIHN1Ym1pdHRlZCB0byB0aGUgc2VydmVyCisgICAgICAg
ICAgICAgICAgc2VuZF9hbGwgICAgICAgIDogZmFsc2UKKyAgICAgICAgICAgIH07CisgICA9MjAK
KyAgICAgICAgICAgIC8vIGNvbmZpZ3VyZSBvcHRpb25zCisgICAgICAgICAgICB0aGlzLm9wdGlv
bnMgPTNEIFV0aWxzLm1lcmdlKG9wdGlvbnMsIHRoaXMub3B0aW9uc0RlZmF1bHQpOworICAgPTIw
CiAgICAgICAgICAgICAvLyBsb2cgb3B0aW9ucwotICAgICAgICAgICAgY29uc29sZS5kZWJ1Zyhv
cHRpb25zKTsKKyAgICAgICAgICAgIGNvbnNvbGUuZGVidWcodGhpcy5vcHRpb25zKTsKICAgICAg
ICAgICAgPTIwCiAgICAgICAgICAgICAvLyBsaW5rIGdhbGF4eSBtb2RhbCBvciBjcmVhdGUgb25l
CiAgICAgICAgICAgICB2YXIgZ2FsYXh5ID0zRCBwYXJlbnQuR2FsYXh5OwpAQCAtMjksOSArNDQs
NiBAQAogICAgICAgICAgICAgICAgIHRoaXMuaXNfYWRtaW4gPTNEIGZhbHNlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICA9MjAKLSAgICAgICAgICAgIC8vIGxpbmsgb3B0aW9ucwotICAgICAg
ICAgICAgdGhpcy5vcHRpb25zID0zRCBvcHRpb25zOwotICAgICAgICAgICA9MjAKICAgICAgICAg
ICAgIC8vIGxpbmsgY29udGFpbmVyCiAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lciA9M0QgdGhp
cy5vcHRpb25zLmNvbnRhaW5lciB8fCAnYm9keSc7CiAgICAgICAgICAgID0yMApAQCAtNzYsNiAr
ODgsMjQgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKICAgICAgICA9MjAKKyAgICAgICAg
LyoqIEhpZ2hsaWdodHMgZXJyb3JzCisgICAgICAgICovCisgICAgICAgIF9lcnJvcnM6IGZ1bmN0
aW9uKG9wdGlvbnMpIHsKKyAgICAgICAgICAgIC8vIGhpZGUgcHJldmlvdXMgZXJyb3Igc3RhdGVt
ZW50cworICAgICAgICAgICAgdGhpcy50cmlnZ2VyKCdyZXNldCcpOworICAgICAgID0yMAorICAg
ICAgICAgICAgLy8gaGlnaGxpZ2h0IGFsbCBlcnJvcnMKKyAgICAgICAgICAgIGlmIChvcHRpb25z
ICYmIG9wdGlvbnMuZXJyb3JzKSB7CisgICAgICAgICAgICAgICAgdmFyIGVycm9yX21lc3NhZ2Vz
ID0zRCB0aGlzLnRyZWUubWF0Y2hSZXNwb25zZShvcHRpb25zLmVycj0Kb3JzKTsKKyAgICAgICAg
ICAgICAgICBmb3IgKHZhciBpbnB1dF9pZCBpbiB0aGlzLmVsZW1lbnRfbGlzdCkgeworICAgICAg
ICAgICAgICAgICAgICB2YXIgaW5wdXQgPTNEIHRoaXMuZWxlbWVudF9saXN0W2lucHV0X2lkXTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yX21lc3NhZ2VzW2lucHV0X2lkXSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHQoaW5wdXRfaWQsIGVycm9yX21lc3Nh
Z2VzW2lucHV0X2lkXSw9CiB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICA9MjAKICAgICAgICAg
LyoqIE1haW4gdG9vbCBmb3JtIGJ1aWxkIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxl
ZCBvbmNlIGEgPQpuZXcgbW9kZWwgaXMgYXZhaWxhYmxlLgogICAgICAgICAqLwogICAgICAgICBf
YnVpbGRGb3JtOiBmdW5jdGlvbigpIHsKQEAgLTExMCwxNyArMTQwLDE0IEBACiAgICAgICAgICAg
ICAvLyByZWJ1aWxkIHRoZSB1bmRlcmx5aW5nIGRhdGEgc3RydWN0dXJlCiAgICAgICAgICAgICB0
aGlzLnRyZWUuZmluYWxpemUoKTsKICAgICAgICAgICAgPTIwCi0gICAgICAgICAgICAvLyBzaG93
IGVycm9ycwotICAgICAgICAgICAgaWYgKG9wdGlvbnMuZXJyb3JzKSB7Ci0gICAgICAgICAgICAg
ICAgdmFyIGVycm9yX21lc3NhZ2VzID0zRCB0aGlzLnRyZWUubWF0Y2hSZXNwb25zZShvcHRpb25z
LmVycj0Kb3JzKTsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBpbnB1dF9pZCBpbiBlcnJvcl9t
ZXNzYWdlcykgewotICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZ2hsaWdodChpbnB1dF9pZCwg
ZXJyb3JfbWVzc2FnZXNbaW5wdXRfaWRdLCB0cnU9CmUpOwotICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIC8vIHNob3cgZXJyb3JzIG9uIHN0YXJ0dXAKKyAgICAgICAgICAgIGlmIChvcHRp
b25zLmluaXRpYWxfZXJyb3JzKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fZXJyb3JzKG9wdGlv
bnMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICA9MjAKICAgICAgICAgICAgIC8vIGFkZCBy
ZWZyZXNoIGxpc3RlbmVyCiAgICAgICAgICAgICB0aGlzLm9uKCdyZWZyZXNoJywgZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAgICAgLy8gYnkgdXNpbmcvcmVzZXRpbmcgdGhlIGRlZmVycmVkIGFq
YXggcXVldWUgdGhlIG51bWJlciBvZj0KIHJlZHVuZGFudCBjYWxscyBpcyByZWR1Y2VkCisgICAg
ICAgICAgICAgICAgLy8gYnkgdXNpbmcvcmVzZXR0aW5nIHRoZSBkZWZlcnJlZCBhamF4IHF1ZXVl
IHRoZSBudW1iZXIgbz0KZiByZWR1bmRhbnQgY2FsbHMgaXMgcmVkdWNlZAogICAgICAgICAgICAg
ICAgIHNlbGYuZGVmZXJyZWQucmVzZXQoKTsKICAgICAgICAgICAgICAgICBzZWxmLmRlZmVycmVk
LmV4ZWN1dGUoZnVuY3Rpb24oKXtzZWxmLl91cGRhdGVNb2RlbCgpfSk7CiAgICAgICAgICAgICB9
KTsKQEAgLTE0OCw3ICsxNzUsNyBAQAogICAgICAgICAgICAgLy8gYnV0dG9uIGZvciB2ZXJzaW9u
IHNlbGVjdGlvbgogICAgICAgICAgICAgdmFyIHJlcXVpcmVtZW50c19idXR0b24gPTNEIG5ldyBV
aS5CdXR0b25JY29uKHsKICAgICAgICAgICAgICAgICBpY29uICAgIDogJ2ZhLWluZm8tY2lyY2xl
JywKLSAgICAgICAgICAgICAgICB0aXRsZSAgIDogKCF0aGlzLndvcmtmbG93ICYmICdSZXF1aXJl
bWVudHMnKSB8fCBudWxsLAorICAgICAgICAgICAgICAgIHRpdGxlICAgOiAoIW9wdGlvbnMuY29t
cGFjdCAmJiAnUmVxdWlyZW1lbnRzJykgfHwgbnVsbCwKICAgICAgICAgICAgICAgICB0b29sdGlw
IDogJ0Rpc3BsYXkgdG9vbCByZXF1aXJlbWVudHMnLAogICAgICAgICAgICAgICAgIG9uY2xpY2sg
OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnZpc2libGUpIHsK
QEAgLTE3Myw3ICsyMDAsNyBAQAogICAgICAgICAgICAgLy8gYnV0dG9uIGZvciB2ZXJzaW9uIHNl
bGVjdGlvbgogICAgICAgICAgICAgdmFyIHZlcnNpb25zX2J1dHRvbiA9M0QgbmV3IFVpLkJ1dHRv
bk1lbnUoewogICAgICAgICAgICAgICAgIGljb24gICAgOiAnZmEtY3ViZXMnLAotICAgICAgICAg
ICAgICAgIHRpdGxlICAgOiAoIXRoaXMud29ya2Zsb3cgJiYgJ1ZlcnNpb25zJykgfHwgbnVsbCwK
KyAgICAgICAgICAgICAgICB0aXRsZSAgIDogKCFvcHRpb25zLmNvbXBhY3QgJiYgJ1ZlcnNpb25z
JykgfHwgbnVsbCwKICAgICAgICAgICAgICAgICB0b29sdGlwIDogJ1NlbGVjdCBhbm90aGVyIHRv
b2wgdmVyc2lvbicKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVy
c2lvbnMgJiYgb3B0aW9ucy52ZXJzaW9ucy5sZW5ndGggPiAxKSB7CkBAIC0yMDMsNyArMjMwLDcg
QEAKICAgICAgICAgICAgIC8vIGJ1dHRvbiBtZW51CiAgICAgICAgICAgICB2YXIgbWVudV9idXR0
b24gPTNEIG5ldyBVaS5CdXR0b25NZW51KHsKICAgICAgICAgICAgICAgICBpY29uICAgIDogJ2Zh
LWNhcmV0LWRvd24nLAotICAgICAgICAgICAgICAgIHRpdGxlICAgOiAoIXRoaXMud29ya2Zsb3cg
JiYgJ09wdGlvbnMnKSB8fCBudWxsLAorICAgICAgICAgICAgICAgIHRpdGxlICAgOiAoIW9wdGlv
bnMuY29tcGFjdCAmJiAnT3B0aW9ucycpIHx8IG51bGwsCiAgICAgICAgICAgICAgICAgdG9vbHRp
cCA6ICdWaWV3IGF2YWlsYWJsZSBvcHRpb25zJwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ID0yMApAQCAtMjgwLDcgKzMwNyw3IEBACiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgPTIw
CiAgICAgICAgICAgICAvLyByZW1vdmUgcGFkZGluZwotICAgICAgICAgICAgaWYgKHRoaXMub3B0
aW9ucy53b3JrZmxvdykgeworICAgICAgICAgICAgaWYgKG9wdGlvbnMuY29tcGFjdCkgewogICAg
ICAgICAgICAgICAgIHRoaXMucG9ydGxldC4kY29udGVudC5jc3MoJ3BhZGRpbmcnLCAnMHB4Jyk7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgID0yMAoKZGlmZiAtciA4YTcwNDU3OTJjN2ZlNDhh
OTkyOTU3NzA0ZTUxZTMxM2QzMmU2Y2RkIC1yIDBmNzM3NDg1Y2I3ZjVkNzU1OTVlOThhPQpiOGY4
ZGMwMmJhMzY5OTc2ZiBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLWZvcm0t
d29ya2Zsb3cuanMKLS0tIGEvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy1m
b3JtLXdvcmtmbG93LmpzCisrKyBiL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9v
bHMtZm9ybS13b3JrZmxvdy5qcwpAQCAtMjcyLDcgKzI3Miw3IEBACiAgICAgICAgICAgICB2YXIg
cHJvY2Vzc19pZCA9M0QgdGhpcy5kZWZlcnJlZC5yZWdpc3RlcigpOwo9MjAKICAgICAgICAgICAg
IC8vIGJ1aWxkIG1vZGVsIHVybCBmb3IgcmVxdWVzdAotICAgICAgICAgICAgdmFyIG1vZGVsX3Vy
bCA9M0QgZ2FsYXh5X2NvbmZpZy5yb290ICsgJ3dvcmtmbG93L2VkaXRvcl9mb3JtX3A9Cm9zdD90
b29sX2lkPTNEJyArIHRoaXMub3B0aW9ucy5pZDsKKyAgICAgICAgICAgIHZhciBtb2RlbF91cmwg
PTNEIGdhbGF4eV9jb25maWcucm9vdCArICd3b3JrZmxvdy9lZGl0b3JfZm9ybV9wPQpvc3Q/dG9v
bF9pZD0zRCcgKyB0aGlzLm9wdGlvbnMuaWQgKyAnJl9faXNfZHluYW1pY19fPTNERmFsc2UnOwog
ICAgICAgICAgICA9MjAKICAgICAgICAgICAgIC8vIHBvc3Qgam9iCiAgICAgICAgICAgICBVdGls
cy5yZXF1ZXN0KHsKQEAgLTI4Miw3ICsyODIsMTAgQEAKICAgICAgICAgICAgICAgICBzdWNjZXNz
IDogZnVuY3Rpb24oZGF0YSkgewogICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGUgbm9kZSBp
biB3b3JrZmxvdyBtb2R1bGUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5ub2RlLnVwZGF0ZV9m
aWVsZF9kYXRhKGRhdGEpOwotICAgICAgICAgICAgICAgICAgID0yMAorCisgICAgICAgICAgICAg
ICAgICAgIC8vIGhpZ2hsaWdodCBlcnJvcnMKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fZXJy
b3JzKGRhdGEgJiYgZGF0YS50b29sX21vZGVsKTsKKwogICAgICAgICAgICAgICAgICAgICAvLyBw
cm9jZXNzIGNvbXBsZXRlZAogICAgICAgICAgICAgICAgICAgICBzZWxmLmRlZmVycmVkLmRvbmUo
cHJvY2Vzc19pZCk7CiAgICAgICAgICAgID0yMAoKZGlmZiAtciA4YTcwNDU3OTJjN2ZlNDhhOTky
OTU3NzA0ZTUxZTMxM2QzMmU2Y2RkIC1yIDBmNzM3NDg1Y2I3ZjVkNzU1OTVlOThhPQpiOGY4ZGMw
MmJhMzY5OTc2ZiBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLWlucHV0Lmpz
Ci0tLSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtaW5wdXQuanMKKysr
IGIvY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy1pbnB1dC5qcwpAQCAtNTEs
OSArNTEsMTEgQEAKICAgICAgICAgLyoqIFNldCBlcnJvciB0ZXh0CiAgICAgICAgICovCiAgICAg
ICAgIGVycm9yOiBmdW5jdGlvbih0ZXh0KSB7Ci0gICAgICAgICAgICB0aGlzLiRlcnJvcl90ZXh0
Lmh0bWwodGV4dCk7Ci0gICAgICAgICAgICB0aGlzLiRlcnJvci5mYWRlSW4oKTsKLSAgICAgICAg
ICAgIHRoaXMuJGVsLmFkZENsYXNzKCd1aS1lcnJvcicpOworICAgICAgICAgICAgaWYgKCF0aGlz
LmZpZWxkLnNraXApIHsKKyAgICAgICAgICAgICAgICB0aGlzLiRlcnJvcl90ZXh0Lmh0bWwodGV4
dCk7CisgICAgICAgICAgICAgICAgdGhpcy4kZXJyb3IuZmFkZUluKCdmYXN0Jyk7CisgICAgICAg
ICAgICAgICAgdGhpcy4kZWwuYWRkQ2xhc3MoJ3VpLWVycm9yJyk7CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0sCiAgICAgICAgPTIwCiAgICAgICAgIC8qKiBSZXNldCB0aGlzIHZpZXcKQEAgLTcw
LDYgKzcyLDcgQEAKICAgICAgICAgICAgICAgICB0aGlzLiRmaWVsZC5mYWRlSW4oJ2Zhc3QnKTsK
ICAgICAgICAgICAgICAgICB0aGlzLiR0aXRsZV9vcHRpb25hbC5odG1sKCdEaXNhYmxlJyk7CiAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTsKICAgICAg
ICAgICAgICAgICB0aGlzLiRmaWVsZC5oaWRlKCk7CiAgICAgICAgICAgICAgICAgdGhpcy4kdGl0
bGVfb3B0aW9uYWwuaHRtbCgnRW5hYmxlJyk7CiAgICAgICAgICAgICAgICAgdGhpcy5maWVsZC52
YWx1ZSAmJiB0aGlzLmZpZWxkLnZhbHVlKHRoaXMuZGVmYXVsdHZhbHVlKTsKCmRpZmYgLXIgOGE3
MDQ1NzkyYzdmZTQ4YTk5Mjk1NzcwNGU1MWUzMTNkMzJlNmNkZCAtciAwZjczNzQ4NWNiN2Y1ZDc1
NTk1ZTk4YT0KYjhmOGRjMDJiYTM2OTk3NmYgY2xpZW50L2dhbGF4eS9zY3JpcHRzL212Yy90b29s
cy90b29scy1zZWN0aW9uLmpzCi0tLSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMv
dG9vbHMtc2VjdGlvbi5qcworKysgYi9jbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzL3Rv
b2xzLXNlY3Rpb24uanMKQEAgLTEwLDUxICsxMCw1MSBAQAogICAgICAgICBpbml0aWFsaXplOiBm
dW5jdGlvbihhcHAsIG9wdGlvbnMpIHsKICAgICAgICAgICAgIC8vIGxpbmsgYXBwCiAgICAgICAg
ICAgICB0aGlzLmFwcCA9M0QgYXBwOwotICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgLy8g
bGluayBpbnB1dHMKICAgICAgICAgICAgIHRoaXMuaW5wdXRzID0zRCBvcHRpb25zLmlucHV0czsK
LSAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgIC8vIGFkZCB0YWJsZSBjbGFzcyBmb3IgdHIg
dGFnCiAgICAgICAgICAgICAvLyB0aGlzIGFzc2lzdCBpbiB0cmFuc2Zvcm1pbmcgdGhlIGZvcm0g
aW50byBhIGpzb24gc3RydWN0dXJlCiAgICAgICAgICAgICBvcHRpb25zLmNsc190ciA9M0QgJ3Nl
Y3Rpb24tcm93JzsKLSAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgIC8vIGNyZWF0ZSB0YWJs
ZQogICAgICAgICAgICAgdGhpcy50YWJsZSA9M0QgbmV3IFRhYmxlLlZpZXcob3B0aW9ucyk7Ci0g
ICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAvLyBjb25maWd1cmUgcG9ydGxldCBhbmQgZm9y
bSB0YWJsZQogICAgICAgICAgICAgdGhpcy5zZXRFbGVtZW50KHRoaXMudGFibGUuJGVsKTsKLSAg
ICAgICAgICAgPTIwCisKICAgICAgICAgICAgIC8vIHJlbmRlciB0b29sIHNlY3Rpb24KICAgICAg
ICAgICAgIHRoaXMucmVuZGVyKCk7CiAgICAgICAgIH0sCi0gICAgICAgPTIwCisKICAgICAgICAg
LyoqIFJlbmRlciBzZWN0aW9uIHZpZXcKICAgICAgICAgKi8KICAgICAgICAgcmVuZGVyOiBmdW5j
dGlvbigpIHsKICAgICAgICAgICAgIC8vIHJlc2V0IHRhYmxlCiAgICAgICAgICAgICB0aGlzLnRh
YmxlLmRlbEFsbCgpOwotICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgLy8gbG9hZCBzZXR0
aW5ncyBlbGVtZW50cyBpbnRvIHRhYmxlCiAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHRoaXMu
aW5wdXRzKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5hZGQodGhpcy5pbnB1dHNbaV0pOwogICAg
ICAgICAgICAgfQogICAgICAgICB9LAotICAgICAgID0yMAorCiAgICAgICAgIC8qKiBBZGQgYSBu
ZXcgaW5wdXQgZWxlbWVudAogICAgICAgICAqLwogICAgICAgICBhZGQ6IGZ1bmN0aW9uKGlucHV0
KSB7CiAgICAgICAgICAgICAvLyBsaW5rIHRoaXMKICAgICAgICAgICAgIHZhciBzZWxmID0zRCB0
aGlzOwotICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgLy8gY2xvbmUgZGVmaW5pdGlvbgog
ICAgICAgICAgICAgdmFyIGlucHV0X2RlZiA9M0QgalF1ZXJ5LmV4dGVuZCh0cnVlLCB7fSwgaW5w
dXQpOwotICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgLy8gY3JlYXRlIHVuaXF1ZSBpZAog
ICAgICAgICAgICAgaW5wdXRfZGVmLmlkID0zRCBpbnB1dC5pZCA9M0QgVXRpbHMudXVpZCgpOwot
ICAgPTIwCisKICAgICAgICAgICAgIC8vIGFkZCB0byBzZXF1ZW50aWFsIGxpc3Qgb2YgaW5wdXRz
CiAgICAgICAgICAgICB0aGlzLmFwcC5pbnB1dF9saXN0W2lucHV0X2RlZi5pZF0gPTNEIGlucHV0
X2RlZjsKLSAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgIC8vIGlkZW50aWZ5IGZpZWxkIHR5
cGUKICAgICAgICAgICAgIHZhciB0eXBlID0zRCBpbnB1dF9kZWYudHlwZTsKICAgICAgICAgICAg
IHN3aXRjaCh0eXBlKSB7CkBAIC03NSwzNSArNzUsMzUgQEAKICAgICAgICAgICAgICAgICAgICAg
dGhpcy5fYWRkUm93KGlucHV0X2RlZik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAg
ICAgPTIwCisKICAgICAgICAgLyoqIEFkZCBhIGNvbmRpdGlvbmFsIGJsb2NrCiAgICAgICAgICov
CiAgICAgICAgIF9hZGRDb25kaXRpb25hbDogZnVuY3Rpb24oaW5wdXRfZGVmKSB7CiAgICAgICAg
ICAgICAvLyBsaW5rIHRoaXMKICAgICAgICAgICAgIHZhciBzZWxmID0zRCB0aGlzOwotICAgICAg
ICAgICA9MjAKKwogICAgICAgICAgICAgLy8gY29weSBpZGVudGlmaWVyCiAgICAgICAgICAgICBp
bnB1dF9kZWYudGVzdF9wYXJhbS5pZCA9M0QgaW5wdXRfZGVmLmlkOwotICAgICAgICAgICA9MjAK
KwogICAgICAgICAgICAgLy8gYnVpbGQgdGVzdCBwYXJhbWV0ZXIKICAgICAgICAgICAgIHZhciBm
aWVsZCA9M0QgdGhpcy5fYWRkUm93KGlucHV0X2RlZi50ZXN0X3BhcmFtKTsKLSAgICAgICAgICAg
PTIwCisKICAgICAgICAgICAgIC8vIHNldCBvbmNoYW5nZSBldmVudCBmb3IgdGVzdCBwYXJhbWV0
ZXIKICAgICAgICAgICAgIGZpZWxkLm9wdGlvbnMub25jaGFuZ2UgPTNEIGZ1bmN0aW9uKHZhbHVl
KSB7CiAgICAgICAgICAgICAgICAgLy8gaWRlbnRpZnkgdGhlIHNlbGVjdGVkIGNhc2UKICAgICAg
ICAgICAgICAgICB2YXIgc2VsZWN0ZWRDYXNlID0zRCBzZWxmLmFwcC50cmVlLm1hdGNoQ2FzZShp
bnB1dF9kZWYsIHZhPQpsdWUpOwotICAgICAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgICAg
ICAvLyBjaGVjayB2YWx1ZSBpbiBvcmRlciB0byBoaWRlL3Nob3cgb3B0aW9ucwogICAgICAgICAg
ICAgICAgIGZvciAodmFyIGkgaW4gaW5wdXRfZGVmLmNhc2VzKSB7CiAgICAgICAgICAgICAgICAg
ICAgIC8vIGdldCBjYXNlCiAgICAgICAgICAgICAgICAgICAgIHZhciBjYXNlX2RlZiA9M0QgaW5w
dXRfZGVmLmNhc2VzW2ldOwotICAgICAgICAgICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAg
ICAgICAgIC8vIGlkZW50aWZ5IHN1YnNlY3Rpb24gbmFtZQogICAgICAgICAgICAgICAgICAgICB2
YXIgc2VjdGlvbl9pZCA9M0QgaW5wdXRfZGVmLmlkICsgJy1zZWN0aW9uLScgKyBpOwotICAgICAg
ICAgICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAgICAgICAgIC8vIGlkZW50aWZ5IHJvdwog
ICAgICAgICAgICAgICAgICAgICB2YXIgc2VjdGlvbl9yb3cgPTNEIHNlbGYudGFibGUuZ2V0KHNl
Y3Rpb25faWQpOwotICAgICAgICAgICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAgICAgICAg
IC8vIGNoZWNrIGlmIG5vbi1oaWRkZW4gZWxlbWVudHMgZXhpc3QKICAgICAgICAgICAgICAgICAg
ICAgdmFyIG5vbmhpZGRlbiA9M0QgZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIGZvciAodmFy
IGogaW4gY2FzZV9kZWYuaW5wdXRzKSB7CkBAIC0xMTIsNyArMTEyLDcgQEAKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAg
ICAgICAgIC8vIHNob3cvaGlkZSBzdWIgZm9ybQogICAgICAgICAgICAgICAgICAgICBpZiAoaSA9
M0Q9M0Qgc2VsZWN0ZWRDYXNlICYmIG5vbmhpZGRlbikgewogICAgICAgICAgICAgICAgICAgICAg
ICAgc2VjdGlvbl9yb3cuZmFkZUluKCdmYXN0Jyk7CkBAIC0xMjAsNzEgKzEyMCw3MSBAQAogICAg
ICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbl9yb3cuaGlkZSgpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgPTIwCisKICAgICAgICAg
ICAgICAgICAvLyByZWZyZXNoIGZvcm0gaW5wdXRzCiAgICAgICAgICAgICAgICAgc2VsZi5hcHAu
dHJpZ2dlcigncmVmcmVzaCcpOwogICAgICAgICAgICAgfTsKLSAgICAgICAgICAgPTIwCisKICAg
ICAgICAgICAgIC8vIGFkZCBjb25kaXRpb25hbCBzdWIgc2VjdGlvbnMKICAgICAgICAgICAgIGZv
ciAodmFyIGkgaW4gaW5wdXRfZGVmLmNhc2VzKSB7CiAgICAgICAgICAgICAgICAgLy8gY3JlYXRl
IGlkIHRhZwogICAgICAgICAgICAgICAgIHZhciBzdWJfc2VjdGlvbl9pZCA9M0QgaW5wdXRfZGVm
LmlkICsgJy1zZWN0aW9uLScgKyBpOwotICAgICAgICAgICAgICAgPTIwCisKICAgICAgICAgICAg
ICAgICAvLyBjcmVhdGUgc3ViIHNlY3Rpb24KICAgICAgICAgICAgICAgICB2YXIgc3ViX3NlY3Rp
b24gPTNEIG5ldyBWaWV3KHRoaXMuYXBwLCB7CiAgICAgICAgICAgICAgICAgICAgIGlucHV0cyAg
OiBpbnB1dF9kZWYuY2FzZXNbaV0uaW5wdXRzLAogICAgICAgICAgICAgICAgICAgICBjbHMgICAg
IDogJ3VpLXRhYmxlLXBsYWluJwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAg
PTIwCisKICAgICAgICAgICAgICAgICAvLyBkaXNwbGF5cyBhcyBncm91cGVkIHN1YnNlY3Rpb24K
ICAgICAgICAgICAgICAgICBzdWJfc2VjdGlvbi4kZWwuYWRkQ2xhc3MoJ3VpLXRhYmxlLWZvcm0t
c2VjdGlvbicpOwotICAgICAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgICAgICAvLyBjcmVh
dGUgdGFibGUgcm93CiAgICAgICAgICAgICAgICAgdGhpcy50YWJsZS5hZGQoc3ViX3NlY3Rpb24u
JGVsKTsKLSAgICAgICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAgICAgLy8gYXBwZW5kIHRv
IHRhYmxlCiAgICAgICAgICAgICAgICAgdGhpcy50YWJsZS5hcHBlbmQoc3ViX3NlY3Rpb25faWQp
OwogICAgICAgICAgICAgfQotICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgLy8gdHJpZ2dl
ciByZWZyZXNoIG9uIGNvbmRpdGlvbmFsIGlucHV0IGZpZWxkIGFmdGVyIGFsbCBpbnB1dCA9CmVs
ZW1lbnRzIGhhdmUgYmVlbiBjcmVhdGVkCiAgICAgICAgICAgICBmaWVsZC50cmlnZ2VyKCdjaGFu
Z2UnKTsKICAgICAgICAgfSwKLSAgICAgICA9MjAKKwogICAgICAgICAvKiogQWRkIGEgcmVwZWF0
IGJsb2NrCiAgICAgICAgICovCiAgICAgICAgIF9hZGRSZXBlYXQ6IGZ1bmN0aW9uKGlucHV0X2Rl
ZikgewogICAgICAgICAgICAgLy8gbGluayB0aGlzCiAgICAgICAgICAgICB2YXIgc2VsZiA9M0Qg
dGhpczsKLSAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgIC8vIGJsb2NrIGluZGV4CiAgICAg
ICAgICAgICB2YXIgYmxvY2tfaW5kZXggPTNEIDA7Ci0gICAgICAgICAgID0yMAorCiAgICAgICAg
ICAgICAvLyBoZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIG5ldyByZXBlYXQgYmxvY2tzCiAgICAg
ICAgICAgICBmdW5jdGlvbiBjcmVhdGUgKGlucHV0cywgZGVsZXRlYWJsZSkgewogICAgICAgICAg
ICAgICAgIC8vIGNyZWF0ZSBpZCB0YWcKICAgICAgICAgICAgICAgICB2YXIgc3ViX3NlY3Rpb25f
aWQgPTNEIGlucHV0X2RlZi5pZCArICctc2VjdGlvbi0nICsgKGJsb2NrPQpfaW5kZXgrKyk7Ci0g
ICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAgICAgLy8gZW5hYmxlL2Rpc2FibGUgcmVwZWF0
IGRlbGV0ZSBidXR0b24KICAgICAgICAgICAgICAgICB2YXIgb25kZWwgPTNEIG51bGw7CiAgICAg
ICAgICAgICAgICAgaWYgKGRlbGV0ZWFibGUpIHsKICAgICAgICAgICAgICAgICAgICAgb25kZWwg
PTNEIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVsZXRlIHJlcGVh
dCBibG9jawogICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0LmRlbChzdWJfc2VjdGlvbl9p
ZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyByZXRpdGxlIHJlcGVhdCBibG9jawogICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0
LnJldGl0bGUoaW5wdXRfZGVmLnRpdGxlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgPTIwCisK
ICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyaWdnZXIgcmVmcmVzaAogICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5hcHAudHJpZ2dlcigncmVmcmVzaCcpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgID0yMAorCiAgICAg
ICAgICAgICAgICAgLy8gY3JlYXRlIHN1YiBzZWN0aW9uCiAgICAgICAgICAgICAgICAgdmFyIHN1
Yl9zZWN0aW9uID0zRCBuZXcgVmlldyhzZWxmLmFwcCwgewogICAgICAgICAgICAgICAgICAgICBp
bnB1dHMgIDogaW5wdXRzLAogICAgICAgICAgICAgICAgICAgICBjbHMgICAgIDogJ3VpLXRhYmxl
LXBsYWluJwogICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgPTIwCisKICAgICAg
ICAgICAgICAgICAvLyBhZGQgdGFiCiAgICAgICAgICAgICAgICAgcmVwZWF0LmFkZCh7CiAgICAg
ICAgICAgICAgICAgICAgIGlkICAgICAgOiBzdWJfc2VjdGlvbl9pZCwKQEAgLTE5MiwxMSArMTky
LDExIEBACiAgICAgICAgICAgICAgICAgICAgICRlbCAgICAgOiBzdWJfc2VjdGlvbi4kZWwsCiAg
ICAgICAgICAgICAgICAgICAgIG9uZGVsICAgOiBvbmRlbAogICAgICAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgICAgICAvLyByZXRpdGxlIHJlcGVhdCBi
bG9jawogICAgICAgICAgICAgICAgIHJlcGVhdC5yZXRpdGxlKGlucHV0X2RlZi50aXRsZSk7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAvLwogICAgICAgICAg
ICAgLy8gY3JlYXRlIHJlcGVhdCBibG9jayBlbGVtZW50CiAgICAgICAgICAgICAvLwpAQCAtMjEx
LDcgKzIxMSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXBwLnRyaWdnZXIoJ3JlZnJl
c2gnKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgPTIw
CisKICAgICAgICAgICAgIC8vCiAgICAgICAgICAgICAvLyBhZGQgcGFyc2VkL21pbmltdW0gbnVt
YmVyIG9mIHJlcGVhdCBibG9ja3MKICAgICAgICAgICAgIC8vCkBAIC0yMjUsMjggKzIyNSwyOCBA
QAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGlucHV0cyA9
M0QgaW5wdXRfZGVmLmlucHV0czsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICA9
MjAKKwogICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSByZXBlYXQgYmxvY2sKICAgICAgICAgICAg
ICAgICBjcmVhdGUoaW5wdXRzLCBpID49M0Qgbl9taW4pOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICA9MjAKKwogICAgICAgICAgICAgLy8gY3JlYXRlIGlucHV0IGZpZWxkIHdyYXBwZXIKICAg
ICAgICAgICAgIHZhciBpbnB1dF9lbGVtZW50ID0zRCBuZXcgSW5wdXRFbGVtZW50KHRoaXMuYXBw
LCB7CiAgICAgICAgICAgICAgICAgbGFiZWwgICA6IGlucHV0X2RlZi50aXRsZSwKICAgICAgICAg
ICAgICAgICBoZWxwICAgIDogaW5wdXRfZGVmLmhlbHAsCiAgICAgICAgICAgICAgICAgZmllbGQg
ICA6IHJlcGVhdAogICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgID0yMAorCiAgICAgICAgICAg
ICAvLyBkaXNwbGF5cyBhcyBncm91cGVkIHN1YnNlY3Rpb24KICAgICAgICAgICAgIGlucHV0X2Vs
ZW1lbnQuJGVsLmFkZENsYXNzKCd1aS10YWJsZS1mb3JtLXNlY3Rpb24nKTsKLSAgICAgICAgICAg
ICAgID0yMAorCiAgICAgICAgICAgICAvLyBjcmVhdGUgdGFibGUgcm93CiAgICAgICAgICAgICB0
aGlzLnRhYmxlLmFkZChpbnB1dF9lbGVtZW50LiRlbCk7Ci0gICAgICAgICAgID0yMAorCiAgICAg
ICAgICAgICAvLyBhcHBlbmQgcm93IHRvIHRhYmxlCiAgICAgICAgICAgICB0aGlzLnRhYmxlLmFw
cGVuZChpbnB1dF9kZWYuaWQpOwogICAgICAgICB9LAotICAgICAgID0yMAorCiAgICAgICAgIC8q
KiBBZGQgYSBjdXN0b21pemVkIHNlY3Rpb24KICAgICAgICAgKi8KICAgICAgICAgX2FkZFNlY3Rp
b246IGZ1bmN0aW9uKGlucHV0X2RlZikgewpAQCAtMjU4LDE0ICsyNTgsMTQgQEAKICAgICAgICAg
ICAgICAgICBpbnB1dHMgIDogaW5wdXRfZGVmLmlucHV0cywKICAgICAgICAgICAgICAgICBjbHMg
ICAgIDogJ3VpLXRhYmxlLXBsYWluJwogICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgID0yMAor
CiAgICAgICAgICAgICAvLyBkZWxldGUgYnV0dG9uCiAgICAgICAgICAgICB2YXIgYnV0dG9uX3Zp
c2libGUgPTNEIG5ldyBVaS5CdXR0b25JY29uKHsKICAgICAgICAgICAgICAgICBpY29uICAgIDog
J2ZhLWV5ZS1zbGFzaCcsCiAgICAgICAgICAgICAgICAgdG9vbHRpcCA6ICdTaG93L2hpZGUgc2Vj
dGlvbicsCiAgICAgICAgICAgICAgICAgY2xzICAgICA6ICd1aS1idXR0b24taWNvbi1wbGFpbicK
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgLy8gY3JlYXRl
IHBvcnRsZXQgZm9yIHN1YiBzZWN0aW9uCiAgICAgICAgICAgICB2YXIgcG9ydGxldCA9M0QgbmV3
IFBvcnRsZXQuVmlldyh7CiAgICAgICAgICAgICAgICAgdGl0bGUgICAgICAgOiBpbnB1dF9kZWYu
bGFiZWwsCkBAIC0yNzUsNyArMjc1LDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgIHBvcnRsZXQuYXBwZW5kKHN1Yl9zZWN0aW9uLiRlbCk7Ci0gICAg
ICAgICAgID0yMAorCiAgICAgICAgICAgICAvLyBhZGQgZXZlbnQgaGFuZGxlciB2aXNpYmlsaXR5
IGJ1dHRvbgogICAgICAgICAgICAgdmFyIHZpc2libGUgPTNEIGZhbHNlOwogICAgICAgICAgICAg
cG9ydGxldC4kY29udGVudC5oaWRlKCk7CkBAIC0yOTEsMTIgKzI5MSwxMiBAQAogICAgICAgICAg
ICAgICAgICAgICBidXR0b25fdmlzaWJsZS5zZXRJY29uKCdmYS1leWUnKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgIC8v
IHNob3cgc3ViIHNlY3Rpb24gaWYgcmVxdWVzdGVkCiAgICAgICAgICAgICBpZiAoaW5wdXRfZGVm
LmV4cGFuZCkgewogICAgICAgICAgICAgICAgIHBvcnRsZXQuJGhlYWRlci50cmlnZ2VyKCdjbGlj
aycpOwogICAgICAgICAgICAgfQotICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgLy8gY3Jl
YXRlIHRhYmxlIHJvdwogICAgICAgICAgICAgdGhpcy50YWJsZS5hZGQocG9ydGxldC4kZWwpOwo9
MjAKQEAgLTMxMiwxMCArMzEyLDEwIEBACj0yMAogICAgICAgICAgICAgLy8gY3JlYXRlIGlucHV0
IGZpZWxkCiAgICAgICAgICAgICB2YXIgZmllbGQgPTNEIHRoaXMuX2NyZWF0ZUZpZWxkKGlucHV0
X2RlZik7Ci0gICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAvLyBhZGQgdG8gZmllbGQgbGlz
dAogICAgICAgICAgICAgdGhpcy5hcHAuZmllbGRfbGlzdFtpZF0gPTNEIGZpZWxkOwotICAgICAg
ICAgICA9MjAKKwogICAgICAgICAgICAgLy8gY3JlYXRlIGlucHV0IGZpZWxkIHdyYXBwZXIKICAg
ICAgICAgICAgIHZhciBpbnB1dF9lbGVtZW50ID0zRCBuZXcgSW5wdXRFbGVtZW50KHRoaXMuYXBw
LCB7CiAgICAgICAgICAgICAgICAgbGFiZWwgICAgICAgICAgIDogaW5wdXRfZGVmLmxhYmVsLApA
QCAtMzI0LDY5ICszMjQsNjkgQEAKICAgICAgICAgICAgICAgICBoZWxwICAgICAgICAgICAgOiBp
bnB1dF9kZWYuaGVscCwKICAgICAgICAgICAgICAgICBmaWVsZCAgICAgICAgICAgOiBmaWVsZAog
ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAvLyBhZGQgdG8g
ZWxlbWVudCBsaXN0CiAgICAgICAgICAgICB0aGlzLmFwcC5lbGVtZW50X2xpc3RbaWRdID0zRCBp
bnB1dF9lbGVtZW50OwotICAgICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgLy8gY3JlYXRl
IHRhYmxlIHJvdwogICAgICAgICAgICAgdGhpcy50YWJsZS5hZGQoaW5wdXRfZWxlbWVudC4kZWwp
OwotICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgLy8gYXBwZW5kIHRvIHRhYmxlCiAgICAg
ICAgICAgICB0aGlzLnRhYmxlLmFwcGVuZChpZCk7Ci0gICAgICAgICAgID0yMAorCiAgICAgICAg
ICAgICAvLyBoaWRlIHJvdyBpZiBuZWNjZXNzYXJ5CiAgICAgICAgICAgICBpZiAoaW5wdXRfZGVm
LmhpZGRlbikgewogICAgICAgICAgICAgICAgIHRoaXMudGFibGUuZ2V0KGlkKS5oaWRlKCk7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAvLyByZXR1cm4gY3Jl
YXRlZCBmaWVsZAogICAgICAgICAgICAgcmV0dXJuIGZpZWxkOwogICAgICAgICB9LAotICAgICAg
ID0yMAorCiAgICAgICAgIC8qKiBSZXR1cm5zIGFuIGlucHV0IGZpZWxkIGZvciBhIGdpdmVuIGZp
ZWxkIHR5cGUKICAgICAgICAgKi8KICAgICAgICAgX2NyZWF0ZUZpZWxkOiBmdW5jdGlvbihpbnB1
dF9kZWYpIHsKICAgICAgICAgICAgIC8vIGZpZWxkIHdyYXBwZXIKICAgICAgICAgICAgIHZhciBm
aWVsZCA9M0QgbnVsbDsKLSAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgIC8vIGlkZW50aWZ5
IGZpZWxkIHR5cGUKICAgICAgICAgICAgIHN3aXRjaChpbnB1dF9kZWYudHlwZSkgewogICAgICAg
ICAgICAgICAgIC8vIHRleHQgaW5wdXQgZmllbGQKICAgICAgICAgICAgICAgICBjYXNlICd0ZXh0
JyA6CiAgICAgICAgICAgICAgICAgICAgIGZpZWxkID0zRCB0aGlzLl9maWVsZFRleHQoaW5wdXRf
ZGVmKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgPTIw
CisKICAgICAgICAgICAgICAgICAvLyBzZWxlY3QgZmllbGQKICAgICAgICAgICAgICAgICBjYXNl
ICdzZWxlY3QnIDoKICAgICAgICAgICAgICAgICAgICAgZmllbGQgPTNEIHRoaXMuX2ZpZWxkU2Vs
ZWN0KGlucHV0X2RlZik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgID0yMAorCiAgICAgICAgICAgICAgICAgLy8gZGF0YSBzZWxlY3RvcgogICAgICAgICAg
ICAgICAgIGNhc2UgJ2RhdGEnOgogICAgICAgICAgICAgICAgICAgICBmaWVsZCA9M0QgdGhpcy5f
ZmllbGREYXRhKGlucHV0X2RlZik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgPTIwCisKICAgICAgICAgICAgICAgICAvLyBjb2xsZWN0aW9uIHNlbGVjdG9yCiAg
ICAgICAgICAgICAgICAgY2FzZSAnZGF0YV9jb2xsZWN0aW9uJzoKICAgICAgICAgICAgICAgICAg
ICAgZmllbGQgPTNEIHRoaXMuX2ZpZWxkRGF0YShpbnB1dF9kZWYpOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgICAgIC8v
IGRhdGEgY29sdW1uCiAgICAgICAgICAgICAgICAgY2FzZSAnZGF0YV9jb2x1bW4nOgogICAgICAg
ICAgICAgICAgICAgICBpbnB1dF9kZWYuZXJyb3JfdGV4dCA9M0QgJ01pc3NpbmcgY29sdW1ucyBp
biByZWZlcmVuY2U9CmQgZGF0YXNldC4nOwogICAgICAgICAgICAgICAgICAgICBmaWVsZCA9M0Qg
dGhpcy5fZmllbGRTZWxlY3QoaW5wdXRfZGVmKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgICAgICAvLyBoaWRkZW4gZmll
bGQKICAgICAgICAgICAgICAgICBjYXNlICdoaWRkZW4nOgogICAgICAgICAgICAgICAgICAgICBm
aWVsZCA9M0QgdGhpcy5fZmllbGRIaWRkZW4oaW5wdXRfZGVmKTsKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgICAgIC8vIGhpZGRl
biBkYXRhIGZpZWxkCiAgICAgICAgICAgICAgICAgY2FzZSAnaGlkZGVuX2RhdGEnOgogICAgICAg
ICAgICAgICAgICAgICBmaWVsZCA9M0QgdGhpcy5fZmllbGRIaWRkZW4oaW5wdXRfZGVmKTsKICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICA9MjAKKwogICAgICAgICAg
ICAgICAgIC8vIGludGVnZXIgZmllbGQKICAgICAgICAgICAgICAgICBjYXNlICdpbnRlZ2VyJzoK
ICAgICAgICAgICAgICAgICAgICAgZmllbGQgPTNEIHRoaXMuX2ZpZWxkU2xpZGVyKGlucHV0X2Rl
Zik7CkBAIC0zOTYsMzMgKzM5NiwzMyBAQAogICAgICAgICAgICAgICAgIGNhc2UgJ2Zsb2F0JzoK
ICAgICAgICAgICAgICAgICAgICAgZmllbGQgPTNEIHRoaXMuX2ZpZWxkU2xpZGVyKGlucHV0X2Rl
Zik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgICAgIC8vIGJvb2xlYW4gZmllbGQKICAgICAg
ICAgICAgICAgICBjYXNlICdib29sZWFuJzoKICAgICAgICAgICAgICAgICAgICAgZmllbGQgPTNE
IHRoaXMuX2ZpZWxkQm9vbGVhbihpbnB1dF9kZWYpOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgICAgIC8vIGdlbm9tZSBm
aWVsZAogICAgICAgICAgICAgICAgIGNhc2UgJ2dlbm9tZWJ1aWxkJzoKICAgICAgICAgICAgICAg
ICAgICAgaW5wdXRfZGVmLnNlYXJjaGFibGUgPTNEIHRydWU7CiAgICAgICAgICAgICAgICAgICAg
IGZpZWxkID0zRCB0aGlzLl9maWVsZFNlbGVjdChpbnB1dF9kZWYpOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAgICAgLy8gZHJp
bGwgZG93biBmaWVsZAogICAgICAgICAgICAgICAgIGNhc2UgJ2RyaWxsX2Rvd24nOgogICAgICAg
ICAgICAgICAgICAgICBmaWVsZCA9M0QgdGhpcy5fZmllbGREcmlsbGRvd24oaW5wdXRfZGVmKTsK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICA9MjAKKwogICAgICAg
ICAgICAgICAgIC8vIGJhc2UgdXJsIGZpZWxkCiAgICAgICAgICAgICAgICAgY2FzZSAnYmFzZXVy
bCc6CiAgICAgICAgICAgICAgICAgICAgIGZpZWxkID0zRCB0aGlzLl9maWVsZEhpZGRlbihpbnB1
dF9kZWYpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
ICAgPTIwCisKICAgICAgICAgICAgICAgICAvLyBmaWVsZCBub3QgZm91bmQKICAgICAgICAgICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAvLyBmbGFnCiAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuYXBwLmluY29tcGF0aWJsZSA9M0QgdHJ1ZTsKLSAgICAgICAgICAgICAgICAg
ICA9MjAKKwogICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIG9yIHdpdGhvdXQgb3B0aW9ucwog
ICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRfZGVmLm9wdGlvbnMpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIGFzc2lnbiBzZWxlY3QgZmllbGQKQEAgLTQzMSwyNiArNDMxLDI2IEBA
CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhc3NpZ24gdGV4dCBmaWVsZAogICAgICAgICAg
ICAgICAgICAgICAgICAgZmllbGQgPTNEIHRoaXMuX2ZpZWxkVGV4dChpbnB1dF9kZWYpOwogICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgPTIwCisKICAgICAgICAgICAg
ICAgICAgICAgLy8gbG9nCiAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ3Rvb2xz
LWZvcm06Ol9hZGRSb3coKSA6IEF1dG8gbWF0Y2hlZCBmaT0KZWxkIHR5cGUgKCcgKyBpbnB1dF9k
ZWYudHlwZSArICcpLicpOwogICAgICAgICAgICAgfQotICAgICAgICAgICA9MjAKKwogICAgICAg
ICAgICAgLy8gc2V0IGZpZWxkIHZhbHVlCiAgICAgICAgICAgICBpZiAoaW5wdXRfZGVmLnZhbHVl
ICE9M0Q9M0QgdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgZmllbGQudmFsdWUoaW5wdXRf
ZGVmLnZhbHVlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgPTIwCisKICAgICAgICAgICAg
IC8vIHJldHVybiBmaWVsZCBlbGVtZW50CiAgICAgICAgICAgICByZXR1cm4gZmllbGQ7CiAgICAg
ICAgIH0sCi0gICAgICAgPTIwCisKICAgICAgICAgLyoqIERhdGEgaW5wdXQgZmllbGQKICAgICAg
ICAgKi8KICAgICAgICAgX2ZpZWxkRGF0YSA6IGZ1bmN0aW9uKGlucHV0X2RlZikgewotICAgICAg
ICAgICAgaWYgKHRoaXMuYXBwLndvcmtmbG93KSB7Ci0gICAgICAgICAgICAgICAgdmFyIGV4dGVu
c2lvbnMgPTNEIFV0aWxzLnRleHRpZnkoaW5wdXRfZGVmLmV4dGVuc2lvbnMudG9TdD0KcmluZygp
KTsKLSAgICAgICAgICAgICAgICBpbnB1dF9kZWYuaW5mbyA9M0QgJ0RhdGEgaW5wdXQgXCcnICsg
aW5wdXRfZGVmLm5hbWUgKyAnXCcgPQooJyArIGV4dGVuc2lvbnMgKyAnKSc7CisgICAgICAgICAg
ICBpZiAoIXRoaXMuYXBwLm9wdGlvbnMuaXNfZHluYW1pYykgeworICAgICAgICAgICAgICAgIGlu
cHV0X2RlZi5pbmZvID0zRCAnRGF0YSBpbnB1dCBcJycgKyBpbnB1dF9kZWYubmFtZSArICdcJyA9
CignICsgVXRpbHMudGV4dGlmeShpbnB1dF9kZWYuZXh0ZW5zaW9ucy50b1N0cmluZygpKSArICcp
JzsKKyAgICAgICAgICAgICAgICBpbnB1dF9kZWYudmFsdWUgPTNEIG51bGw7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkSGlkZGVuKGlucHV0X2RlZik7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB2YXIgc2VsZiA9M0QgdGhpczsKQEAgLTQ2NSwxOCArNDY1LDE1IEBACiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0sCi0gICAgICAgPTIw
CisKICAgICAgICAgLyoqIFNlbGVjdC9DaGVja2JveC9SYWRpbyBvcHRpb25zIGZpZWxkCiAgICAg
ICAgICovCiAgICAgICAgIF9maWVsZFNlbGVjdCA6IGZ1bmN0aW9uIChpbnB1dF9kZWYpIHsKLSAg
ICAgICAgICAgIC8vIHNob3cgdGV4dCBmaWVsZCBpbiB3b3JrZmxvdwotICAgICAgICAgICAgaWYg
KHRoaXMuYXBwLndvcmtmbG93ICYmIGlucHV0X2RlZi5pc19keW5hbWljKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFVdGlscy52YWxpZGF0ZShpbnB1dF9kZWYudmFsdWUpKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlucHV0X2RlZi52YWx1ZSA9M0QgJyc7Ci0gICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgLy8gc2hvdyB0ZXh0IGZpZWxkIGluIGlmIGR5bmFtaWMgZmllbGRzIGFyZSBkaXNh
YmxlZCBlLmcuIGluIHc9Cm9ya2Zsb3cgZWRpdG9yCisgICAgICAgICAgICBpZiAoIXRoaXMuYXBw
Lm9wdGlvbnMuaXNfZHluYW1pYyAmJiBpbnB1dF9kZWYuaXNfZHluYW1pYykgewogICAgICAgICAg
ICAgICAgIHJldHVybiB0aGlzLl9maWVsZFRleHQoaW5wdXRfZGVmKTsKICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgIC8vIGNvbmZpZ3VyZSBvcHRpb25zIGZpZWxk
cwogICAgICAgICAgICAgdmFyIG9wdGlvbnMgPTNEIFtdOwogICAgICAgICAgICAgZm9yICh2YXIg
aSBpbiBpbnB1dF9kZWYub3B0aW9ucykgewpAQCAtNDg2LDcgKzQ4Myw3IEBACiAgICAgICAgICAg
ICAgICAgICAgIHZhbHVlOiBvcHRpb25bMV0KICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgIC8vIGlkZW50aWZ5IGRpc3BsYXkg
dHlwZQogICAgICAgICAgICAgdmFyIFNlbGVjdENsYXNzID0zRCBVaS5TZWxlY3Q7CiAgICAgICAg
ICAgICBzd2l0Y2ggKGlucHV0X2RlZi5kaXNwbGF5KSB7CkBAIC00OTcsNyArNDk0LDcgQEAKICAg
ICAgICAgICAgICAgICAgICAgU2VsZWN0Q2xhc3MgPTNEIFVpLlJhZGlvOwogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgPTIwCisKICAgICAgICAg
ICAgIC8vIHNlbGVjdCBmaWVsZAogICAgICAgICAgICAgdmFyIHNlbGYgPTNEIHRoaXM7CiAgICAg
ICAgICAgICByZXR1cm4gbmV3IFNlbGVjdENsYXNzLlZpZXcoewpAQCAtNTExLDEwICs1MDgsMTYg
QEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwKLSAgICAg
ICA9MjAKKwogICAgICAgICAvKiogRHJpbGwgZG93biBvcHRpb25zIGZpZWxkCiAgICAgICAgICov
CiAgICAgICAgIF9maWVsZERyaWxsZG93biA6IGZ1bmN0aW9uIChpbnB1dF9kZWYpIHsKKyAgICAg
ICAgICAgIC8vIHNob3cgdGV4dCBmaWVsZCBpbiBpZiBkeW5hbWljIGZpZWxkcyBhcmUgZGlzYWJs
ZWQgZS5nLiBpbiB3PQpvcmtmbG93IGVkaXRvcgorICAgICAgICAgICAgaWYgKCF0aGlzLmFwcC5v
cHRpb25zLmlzX2R5bmFtaWMgJiYgaW5wdXRfZGVmLmlzX2R5bmFtaWMpIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdGhpcy5fZmllbGRUZXh0KGlucHV0X2RlZik7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgID0yMAorICAgICAgICAgICAgLy8gY3JlYXRlIGRyaWxsIGRvd24gZmllbGQKICAg
ICAgICAgICAgIHZhciBzZWxmID0zRCB0aGlzOwogICAgICAgICAgICAgcmV0dXJuIG5ldyBVaS5E
cmlsbGRvd24uVmlldyh7CiAgICAgICAgICAgICAgICAgaWQgICAgICAgICAgOiAnZmllbGQtJyAr
IGlucHV0X2RlZi5pZCwKQEAgLTUyOSw2ICs1MzIsMjcgQEAKICAgICAgICAgLyoqIFRleHQgaW5w
dXQgZmllbGQKICAgICAgICAgKi8KICAgICAgICAgX2ZpZWxkVGV4dCA6IGZ1bmN0aW9uKGlucHV0
X2RlZikgeworICAgICAgICAgICAgLy8gZmllbGQgcmVwbGFjZXMgZS5nLiBhIHNlbGVjdCBmaWVs
ZAorICAgICAgICAgICAgaWYgKGlucHV0X2RlZi5vcHRpb25zKSB7CisgICAgICAgICAgICAgICAg
Ly8gc2hvdyB0ZXh0IGFyZWEgaWYgc2VsZWN0aW5nIG11bHRpcGxlIGVudHJpZXMgaXMgYWxsb3dl
ZAorICAgICAgICAgICAgICAgIGlucHV0X2RlZi5hcmVhID0zRCBpbnB1dF9kZWYubXVsdGlwbGU7
CisKKyAgICAgICAgICAgICAgICAvLyB2YWxpZGF0ZSB2YWx1ZQorICAgICAgICAgICAgICAgIGlm
ICghVXRpbHMudmFsaWRhdGUoaW5wdXRfZGVmLnZhbHVlKSkgeworICAgICAgICAgICAgICAgICAg
ICBpbnB1dF9kZWYudmFsdWUgPTNEICcnOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChpbnB1dF9kZWYudmFsdWUgaW5zdGFuY2VvZiBBcnJheSkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfZGVmLnZhbHVlID0zRCB2YWx1ZS50b1N0cmlu
ZygpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgaW5wdXRfZGVmLnZhbHVlID0zRCBTdHJpbmcoaW5wdXRfZGVmLnZhbHVlKS5yZXBsYWM9CmUo
L1tcW1xdJyJcc10vZywgJycpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0X2Rl
Zi5tdWx0aXBsZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0X2RlZi52YWx1
ZSA9M0QgaW5wdXRfZGVmLnZhbHVlLnJlcGxhY2UoLyw9Ci9nLCAnXG4nKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gY3JlYXRlIGlucHV0IGVsZW1lbnQKICAg
ICAgICAgICAgIHZhciBzZWxmID0zRCB0aGlzOwogICAgICAgICAgICAgcmV0dXJuIG5ldyBVaS5J
bnB1dCh7CiAgICAgICAgICAgICAgICAgaWQgICAgICAgICAgOiAnZmllbGQtJyArIGlucHV0X2Rl
Zi5pZCwKQEAgLTUzOCw3ICs1NjIsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0pOwogICAgICAgICB9LAotICAgICAgID0yMAorCiAgICAgICAgIC8qKiBTbGlkZXIgZmllbGQK
ICAgICAgICAgKi8KICAgICAgICAgX2ZpZWxkU2xpZGVyOiBmdW5jdGlvbihpbnB1dF9kZWYpIHsK
QEAgLTU1Myw3ICs1NzcsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9LAotICAgICAgID0yMAorCiAgICAgICAgIC8qKiBIaWRkZW4gZmllbGQKICAgICAg
ICAgKi8KICAgICAgICAgX2ZpZWxkSGlkZGVuIDogZnVuY3Rpb24oaW5wdXRfZGVmKSB7CkBAIC01
NjIsNyArNTg2LDcgQEAKICAgICAgICAgICAgICAgICBpbmZvICAgICAgICA6IGlucHV0X2RlZi5p
bmZvCiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSwKLSAgICAgICA9MjAKKwogICAgICAgICAv
KiogQm9vbGVhbiBmaWVsZAogICAgICAgICAqLwogICAgICAgICBfZmllbGRCb29sZWFuIDogZnVu
Y3Rpb24oaW5wdXRfZGVmKSB7CgpkaWZmIC1yIDhhNzA0NTc5MmM3ZmU0OGE5OTI5NTc3MDRlNTFl
MzEzZDMyZTZjZGQgLXIgMGY3Mzc0ODVjYjdmNWQ3NTU5NWU5OGE9CmI4ZjhkYzAyYmEzNjk5NzZm
IGNsaWVudC9nYWxheHkvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtdHJlZS5qcwotLS0gYS9jbGll
bnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLXRyZWUuanMKKysrIGIvY2xpZW50L2dh
bGF4eS9zY3JpcHRzL212Yy90b29scy90b29scy10cmVlLmpzCkBAIC0xMjMsMTQgKzEyMywxNCBA
QAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPTIwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRs
ZSBzaW1wbGUgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWVs
ZC5za2lwIHx8IHNlbGYuYXBwLndvcmtmbG93KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghZmllbGQuc2tpcCB8fCBzZWxmLmFwcC5vcHRpb25zLnNlbmRfYT0KbGwpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC52YWxpZGF0ZSAm
JiAhZmllbGQudmFsaWRhdGUoPQopKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsdWUgPTNEIG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuaWdu
b3JlID0zRD0zRD0zRCB1bmRlZmluZWQgfD0KfCAodmFsdWUgIT0zRD0zRCBudWxsICYmIGlucHV0
Lmlnbm9yZSAhPTNEIHZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIGFkZCB2YWx1ZSB0byBzdWJtaXNzaW9uCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYWRkIChqb2JfaW5wdXRfaWQsIGlucHV0LmlkLCB2YWx1ZT0KKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIGFkZCBwYXlsb2FkIHRvIHN1Ym1pc3Npb24KICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQucGF5bG9hZCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwX2lkIGlu
IGlucHV0LnBheWxvYWQ9CikgewoKZGlmZiAtciA4YTcwNDU3OTJjN2ZlNDhhOTkyOTU3NzA0ZTUx
ZTMxM2QzMmU2Y2RkIC1yIDBmNzM3NDg1Y2I3ZjVkNzU1OTVlOThhPQpiOGY4ZGMwMmJhMzY5OTc2
ZiBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3VwbG9hZC91cGxvYWQtdmlldy5qcwotLS0gYS9j
bGllbnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3VwbG9hZC91cGxvYWQtdmlldy5qcworKysgYi9jbGll
bnQvZ2FsYXh5L3NjcmlwdHMvbXZjL3VwbG9hZC91cGxvYWQtdmlldy5qcwpAQCAtMzM1LDggKzMz
NSw4IEBACiAgICAgICAgIHRvb2xfaW5wdXRbJ2Ria2V5J10gPTNEIGdlbm9tZTsKICAgICAgICAg
dG9vbF9pbnB1dFsnZmlsZV90eXBlJ10gPTNEIGV4dGVuc2lvbjsKICAgICAgICAgdG9vbF9pbnB1
dFsnZmlsZXNfMHx0eXBlJ10gPTNEICd1cGxvYWRfZGF0YXNldCc7Ci0gICAgICAgIHRvb2xfaW5w
dXRbJ3NwYWNlX3RvX3RhYnMnXSA9M0Qgc3BhY2VfdG9fdGFiczsKLSAgICAgICAgdG9vbF9pbnB1
dFsndG9fcG9zaXhfbGluZXMnXSA9M0QgdG9fcG9zaXhfbGluZXM7CisgICAgICAgIHRvb2xfaW5w
dXRbJ2ZpbGVzXzB8c3BhY2VfdG9fdGFiJ10gPTNEIHNwYWNlX3RvX3RhYnMgJiYgJ1llcycgfHwg
bj0KdWxsOworICAgICAgICB0b29sX2lucHV0WydmaWxlc18wfHRvX3Bvc2l4X2xpbmVzJ10gPTNE
IHRvX3Bvc2l4X2xpbmVzICYmICdZZXMnIHw9CnwgbnVsbDsKICAgICAgICA9MjAKICAgICAgICAg
Ly8gc2V0dXAgZGF0YQogICAgICAgICBkYXRhID0zRCB7fTsKCmRpZmYgLXIgOGE3MDQ1NzkyYzdm
ZTQ4YTk5Mjk1NzcwNGU1MWUzMTNkMzJlNmNkZCAtciAwZjczNzQ4NWNiN2Y1ZDc1NTk1ZTk4YT0K
YjhmOGRjMDJiYTM2OTk3NmYgY2xpZW50L2dhbGF4eS9zY3JpcHRzL3V0aWxzL3V0aWxzLmpzCi0t
LSBhL2NsaWVudC9nYWxheHkvc2NyaXB0cy91dGlscy91dGlscy5qcworKysgYi9jbGllbnQvZ2Fs
YXh5L3NjcmlwdHMvdXRpbHMvdXRpbHMuanMKQEAgLTExMSw3ICsxMTEsNyBAQAogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgYWpheENvbmZpZy51cmwgKz0zRCAnJic7CiAgICAgICAgIH0K
LSAgICAgICAgYWpheENvbmZpZy51cmwgICAgICA9M0QgYWpheENvbmZpZy51cmwgKyAkLnBhcmFt
KGFqYXhDb25maWcuZGF0YSk7CisgICAgICAgIGFqYXhDb25maWcudXJsICAgICAgPTNEIGFqYXhD
b25maWcudXJsICsgJC5wYXJhbShhamF4Q29uZmlnLmRhdGEsID0KdHJ1ZSk7CiAgICAgICAgIGFq
YXhDb25maWcuZGF0YSAgICAgPTNEIG51bGw7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYWpheENv
bmZpZy5kYXRhVHlwZSA9M0QgJ2pzb24nOwoKZGlmZiAtciA4YTcwNDU3OTJjN2ZlNDhhOTkyOTU3
NzA0ZTUxZTMxM2QzMmU2Y2RkIC1yIDBmNzM3NDg1Y2I3ZjVkNzU1OTVlOThhPQpiOGY4ZGMwMmJh
MzY5OTc2ZiBjb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGljL2J1aWxk
LWFwcC5qcwotLS0gYS9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMvc3RhdGlj
L2J1aWxkLWFwcC5qcworKysgYi9jb25maWcvcGx1Z2lucy92aXN1YWxpemF0aW9ucy9jaGFydHMv
c3RhdGljL2J1aWxkLWFwcC5qcwpAQCAtMyw0ICszLDQgQEAKIC8vICAgICAoYykgMjAwOS0yMDE0
IEplcmVteSBBc2hrZW5hcywgRG9jdW1lbnRDbG91ZCBhbmQgSW52ZXN0aWdhdGl2ZSBSZXBvPQpy
dGVycyAmIEVkaXRvcnMKIC8vICAgICBVbmRlcnNjb3JlIG1heSBiZSBmcmVlbHkgZGlzdHJpYnV0
ZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgo9MjAKLWRlZmluZSgibXZjL3VpL3VpLW1vZGFsIixb
XSxmdW5jdGlvbigpe3ZhciBlPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe2VsTWFpPQpuOiJib2R5
IixvcHRpb25zRGVmYXVsdDp7dGl0bGU6InVpLW1vZGFsIixib2R5OiIiLGJhY2tkcm9wOiEwLGhl
aWdodDpudWxsLHc9CmlkdGg6bnVsbCxjbG9zaW5nX2V2ZW50czohMSxjbG9zaW5nX2NhbGxiYWNr
Om51bGx9LGJ1dHRvbkxpc3Q6e30saW5pdGlhbGl6ZT0KOmZ1bmN0aW9uKGUpe2UmJnRoaXMuX2Ny
ZWF0ZShlKX0sc2hvdzpmdW5jdGlvbihlKXt0aGlzLmluaXRpYWxpemUoZSksdGhpcy5vPQpwdGlv
bnMuaGVpZ2h0Pyh0aGlzLiRib2R5LmNzcygiaGVpZ2h0Iix0aGlzLm9wdGlvbnMuaGVpZ2h0KSx0
aGlzLiRib2R5LmNzcyg9CiJvdmVyZmxvdyIsImhpZGRlbiIpKTp0aGlzLiRib2R5LmNzcygibWF4
LWhlaWdodCIsJCh3aW5kb3cpLmhlaWdodCgpLzIpLHRoaT0Kcy5vcHRpb25zLndpZHRoJiZ0aGlz
LiRkaWFsb2cuY3NzKCJ3aWR0aCIsdGhpcy5vcHRpb25zLndpZHRoKSx0aGlzLnZpc2libGU/PQp0
aGlzLiRlbC5zaG93KCk6dGhpcy4kZWwuZmFkZUluKCJmYXN0IiksdGhpcy52aXNpYmxlPTNEITB9
LGhpZGU6ZnVuY3Rpb24oKXs9CnRoaXMudmlzaWJsZT0zRCExLHRoaXMuJGVsLmZhZGVPdXQoImZh
c3QiKSx0aGlzLm9wdGlvbnMuY2xvc2luZ19jYWxsYmFjayYmdD0KaGlzLm9wdGlvbnMuY2xvc2lu
Z19jYWxsYmFjaygpfSxlbmFibGVCdXR0b246ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLmJ1dHRv
PQpuTGlzdFtlXTt0aGlzLiRidXR0b25zLmZpbmQoIiMiK3QpLnByb3AoImRpc2FibGVkIiwhMSl9
LGRpc2FibGVCdXR0b246ZnVuY3Q9CmlvbihlKXt2YXIgdD0zRHRoaXMuYnV0dG9uTGlzdFtlXTt0
aGlzLiRidXR0b25zLmZpbmQoIiMiK3QpLnByb3AoImRpc2FibGVkIj0KLCEwKX0sc2hvd0J1dHRv
bjpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMuYnV0dG9uTGlzdFtlXTt0aGlzLiRidXR0b25zLmZp
bmQoPQoiIyIrdCkuc2hvdygpfSxoaWRlQnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy5i
dXR0b25MaXN0W2VdO3RoaXMuJGJ1dHQ9Cm9ucy5maW5kKCIjIit0KS5oaWRlKCl9LGdldEJ1dHRv
bjpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMuYnV0dG9uTGlzdFtlXTtyZT0KdHVybiB0aGlzLiRi
dXR0b25zLmZpbmQoIiMiK3QpfSxzY3JvbGxUb3A6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kYm9k
eS5zY3JvPQpsbFRvcCgpfSxfY3JlYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpczt0aGlzLm9w
dGlvbnM9M0RfLmRlZmF1bHRzKGUsdGhpcy49Cm9wdGlvbnNEZWZhdWx0KSx0aGlzLm9wdGlvbnMu
Ym9keT0zRD0zRCJwcm9ncmVzcyImJih0aGlzLm9wdGlvbnMuYm9keT0zRCQoJz0KPGRpdiBjbGFz
cz0zRCJwcm9ncmVzcyBwcm9ncmVzcy1zdHJpcGVkIGFjdGl2ZSI+PGRpdiBjbGFzcz0zRCJwcm9n
cmVzcy1iYXIgPQpwcm9ncmVzcy1iYXItaW5mbyIgc3R5bGU9M0Qid2lkdGg6MTAwJSI+PC9kaXY+
PC9kaXY+JykpLHRoaXMuJGVsJiYodGhpcy4kZWw9Ci5yZW1vdmUoKSwkKGRvY3VtZW50KS5vZmYo
ImtleXVwLnVpLW1vZGFsIikpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZT0KKHRoaXMu
b3B0aW9ucy50aXRsZSkpLHRoaXMuJGRpYWxvZz0zRHRoaXMuJGVsLmZpbmQoIi5tb2RhbC1kaWFs
b2ciKSx0aGlzLiRiPQpvZHk9M0R0aGlzLiRlbC5maW5kKCIubW9kYWwtYm9keSIpLHRoaXMuJGZv
b3Rlcj0zRHRoaXMuJGVsLmZpbmQoIi5tb2RhbC1mb289CnRlciIpLHRoaXMuJGJ1dHRvbnM9M0R0
aGlzLiRlbC5maW5kKCIuYnV0dG9ucyIpLHRoaXMuJGJhY2tkcm9wPTNEdGhpcy4kZWwuZj0KaW5k
KCIubW9kYWwtYmFja2Ryb3AiKSx0aGlzLiRib2R5Lmh0bWwodGhpcy5vcHRpb25zLmJvZHkpLHRo
aXMub3B0aW9ucy5iYWNrPQpkcm9wfHx0aGlzLiRiYWNrZHJvcC5yZW1vdmVDbGFzcygiaW4iKTtp
Zih0aGlzLm9wdGlvbnMuYnV0dG9ucyl7dGhpcy5idXR0b249Ckxpc3Q9M0R7fTt2YXIgbj0zRDA7
JC5lYWNoKHRoaXMub3B0aW9ucy5idXR0b25zLGZ1bmN0aW9uKGUscil7dmFyIGk9M0QiYnV0dD0K
b24tIituKys7dC4kYnV0dG9ucy5hcHBlbmQoJCgnPGJ1dHRvbiBpZD0zRCInK2krJyI+PC9idXR0
b24+JykudGV4dChlKS5jbGljPQprKHIpKS5hcHBlbmQoIiAiKSx0LmJ1dHRvbkxpc3RbZV09M0Rp
fSl9ZWxzZSB0aGlzLiRmb290ZXIuaGlkZSgpOyQodGhpcy5lbE09CmFpbikuYXBwZW5kKCQodGhp
cy5lbCkpLHRoaXMub3B0aW9ucy5jbG9zaW5nX2V2ZW50cyYmKCQoZG9jdW1lbnQpLm9uKCJrZXl1
cD0KLnVpLW1vZGFsIixmdW5jdGlvbihlKXtlLmtleUNvZGU9M0Q9M0QyNyYmdC5oaWRlKCl9KSx0
aGlzLiRlbC5maW5kKCIubW9kYWwtPQpiYWNrZHJvcCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXt0
LmhpZGUoKX0pKX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3JldHVybic9CjxkaXYgY2xhc3M9M0Qi
dWktbW9kYWwgbW9kYWwiPjxkaXYgY2xhc3M9M0QibW9kYWwtYmFja2Ryb3AgZmFkZSBpbiIgc3R5
bGU9Cj0zRCJ6LWluZGV4OiAtMTsiPjwvZGl2PjxkaXYgY2xhc3M9M0QibW9kYWwtZGlhbG9nIj48
ZGl2IGNsYXNzPTNEIm1vZGFsLWNvbj0KdGVudCI+PGRpdiBjbGFzcz0zRCJtb2RhbC1oZWFkZXIi
PjxidXR0b24gdHlwZT0zRCJidXR0b24iIGNsYXNzPTNEImNsb3NlIiBzPQp0eWxlPTNEImRpc3Bs
YXk6IG5vbmU7Ij4mdGltZXM7PC9idXR0b24+PGg0IGNsYXNzPTNEInRpdGxlIj4nK2UrIjwvaDQ+
IisiPC89CmRpdj4iKyc8ZGl2IGNsYXNzPTNEIm1vZGFsLWJvZHkiIHN0eWxlPTNEInBvc2l0aW9u
OiBzdGF0aWM7Ij48L2Rpdj4nKyc8ZGl2ID0KY2xhc3M9M0QibW9kYWwtZm9vdGVyIj4nKyc8ZGl2
IGNsYXNzPTNEImJ1dHRvbnMiIHN0eWxlPTNEImZsb2F0OiByaWdodDsiPjwvPQpkaXY+JysiPC9k
aXY+IisiPC9kaXYiKyI8L2Rpdj4iKyI8L2Rpdj4ifX0pO3JldHVybntWaWV3OmV9fSksZnVuY3Rp
b24oKXt2YXI9CiBlPTNEdGhpcyx0PTNEZS5fLG49M0RBcnJheS5wcm90b3R5cGUscj0zRE9iamVj
dC5wcm90b3R5cGUsaT0zREZ1bmN0aW9uLnBybz0KdG90eXBlLHM9M0RuLnB1c2gsbz0zRG4uc2xp
Y2UsdT0zRG4uY29uY2F0LGE9M0RyLnRvU3RyaW5nLGY9M0RyLmhhc093blByb3BlPQpydHksbD0z
REFycmF5LmlzQXJyYXksYz0zRE9iamVjdC5rZXlzLGg9M0RpLmJpbmQscD0zRGZ1bmN0aW9uKGUp
e2lmKGUgaW5zdGE9Cm5jZW9mIHApcmV0dXJuIGU7aWYoISh0aGlzIGluc3RhbmNlb2YgcCkpcmV0
dXJuIG5ldyBwKGUpO3RoaXMuX3dyYXBwZWQ9M0RlfT0KO3R5cGVvZiBleHBvcnRzIT0zRCJ1bmRl
ZmluZWQiPyh0eXBlb2YgbW9kdWxlIT0zRCJ1bmRlZmluZWQiJiZtb2R1bGUuZXhwb3J0PQpzJiYo
ZXhwb3J0cz0zRG1vZHVsZS5leHBvcnRzPTNEcCksZXhwb3J0cy5fPTNEcCk6ZS5fPTNEcCxwLlZF
UlNJT049M0QiMS43LjA9CiI7dmFyIGQ9M0RmdW5jdGlvbihlLHQsbil7aWYodD0zRD0zRD0zRHZv
aWQgMClyZXR1cm4gZTtzd2l0Y2gobj0zRD0zRG51bGw/Mz0KOm4pe2Nhc2UgMTpyZXR1cm4gZnVu
Y3Rpb24obil7cmV0dXJuIGUuY2FsbCh0LG4pfTtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKG4sPQpy
KXtyZXR1cm4gZS5jYWxsKHQsbixyKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihuLHIsaSl7cmV0
dXJuIGUuY2FsbCh0LG4sciw9CmkpfTtjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKG4scixpLHMpe3Jl
dHVybiBlLmNhbGwodCxuLHIsaSxzKX19cmV0dXJuIGZ1bmN0aT0Kb24oKXtyZXR1cm4gZS5hcHBs
eSh0LGFyZ3VtZW50cyl9fTtwLml0ZXJhdGVlPTNEZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlPTNE
PQo9M0RudWxsP3AuaWRlbnRpdHk6cC5pc0Z1bmN0aW9uKGUpP2QoZSx0LG4pOnAuaXNPYmplY3Qo
ZSk/cC5tYXRjaGVzKGUpOnAucHI9Cm9wZXJ0eShlKX0scC5lYWNoPTNEcC5mb3JFYWNoPTNEZnVu
Y3Rpb24oZSx0LG4pe2lmKGU9M0Q9M0RudWxsKXJldHVybiBlO3Q9Cj0zRGQodCxuKTt2YXIgcixp
PTNEZS5sZW5ndGg7aWYoaT0zRD0zRD0zRCtpKWZvcihyPTNEMDtyPGk7cisrKXQoZVtyXSxyLGUp
Oz0KZWxzZXt2YXIgcz0zRHAua2V5cyhlKTtmb3Iocj0zRDAsaT0zRHMubGVuZ3RoO3I8aTtyKysp
dChlW3Nbcl1dLHNbcl0sZSl9cmV0PQp1cm4gZX0scC5tYXA9M0RwLmNvbGxlY3Q9M0RmdW5jdGlv
bihlLHQsbil7aWYoZT0zRD0zRG51bGwpcmV0dXJuW107dD0zRHAuaXQ9CmVyYXRlZSh0LG4pO3Zh
ciByPTNEZS5sZW5ndGghPTNEPTNEK2UubGVuZ3RoJiZwLmtleXMoZSksaT0zRChyfHxlKS5sZW5n
dGgscz0KPTNEQXJyYXkoaSksbztmb3IodmFyIHU9M0QwO3U8aTt1Kyspbz0zRHI/clt1XTp1LHNb
dV09M0R0KGVbb10sbyxlKTtyZXR1cm4gPQpzfTt2YXIgdj0zRCJSZWR1Y2Ugb2YgZW1wdHkgYXJy
YXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIjtwLnJlZHVjZT0zRHAuZm9sZGw9Cj0zRHAuaW5qZWN0
PTNEZnVuY3Rpb24oZSx0LG4scil7ZT0zRD0zRG51bGwmJihlPTNEW10pLHQ9M0RkKHQsciw0KTt2
YXIgaT0zRD0KZS5sZW5ndGghPTNEPTNEK2UubGVuZ3RoJiZwLmtleXMoZSkscz0zRChpfHxlKS5s
ZW5ndGgsbz0zRDAsdTtpZihhcmd1bWVudHMuPQpsZW5ndGg8Myl7aWYoIXMpdGhyb3cgbmV3IFR5
cGVFcnJvcih2KTtuPTNEZVtpP2lbbysrXTpvKytdfWZvcig7bzxzO28rKyl1PQo9M0RpP2lbb106
byxuPTNEdChuLGVbdV0sdSxlKTtyZXR1cm4gbn0scC5yZWR1Y2VSaWdodD0zRHAuZm9sZHI9M0Rm
dW5jdGlvbig9CmUsdCxuLHIpe2U9M0Q9M0RudWxsJiYoZT0zRFtdKSx0PTNEZCh0LHIsNCk7dmFy
IGk9M0RlLmxlbmd0aCE9M0Q9M0QrZS5sZW5ndD0KaCYmcC5rZXlzKGUpLHM9M0QoaXx8ZSkubGVu
Z3RoLG87aWYoYXJndW1lbnRzLmxlbmd0aDwzKXtpZighcyl0aHJvdyBuZXcgVHlwPQplRXJyb3Io
dik7bj0zRGVbaT9pWy0tc106LS1zXX13aGlsZShzLS0pbz0zRGk/aVtzXTpzLG49M0R0KG4sZVtv
XSxvLGUpO3JldHU9CnJuIG59LHAuZmluZD0zRHAuZGV0ZWN0PTNEZnVuY3Rpb24oZSx0LG4pe3Zh
ciByO3JldHVybiB0PTNEcC5pdGVyYXRlZSh0LG4pLD0KcC5zb21lKGUsZnVuY3Rpb24oZSxuLGkp
e2lmKHQoZSxuLGkpKXJldHVybiByPTNEZSwhMH0pLHJ9LHAuZmlsdGVyPTNEcC5zZWxlPQpjdD0z
RGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0zRFtdO3JldHVybiBlPTNEPTNEbnVsbD9yOih0PTNEcC5p
dGVyYXRlZSh0LG4pLHA9Ci5lYWNoKGUsZnVuY3Rpb24oZSxuLGkpe3QoZSxuLGkpJiZyLnB1c2go
ZSl9KSxyKX0scC5yZWplY3Q9M0RmdW5jdGlvbihlLHQsbj0KKXtyZXR1cm4gcC5maWx0ZXIoZSxw
Lm5lZ2F0ZShwLml0ZXJhdGVlKHQpKSxuKX0scC5ldmVyeT0zRHAuYWxsPTNEZnVuY3Rpb24oPQpl
LHQsbil7aWYoZT0zRD0zRG51bGwpcmV0dXJuITA7dD0zRHAuaXRlcmF0ZWUodCxuKTt2YXIgcj0z
RGUubGVuZ3RoIT0zRD0zRCs9CmUubGVuZ3RoJiZwLmtleXMoZSksaT0zRChyfHxlKS5sZW5ndGgs
cyxvO2ZvcihzPTNEMDtzPGk7cysrKXtvPTNEcj9yW3NdOnM7aT0KZighdChlW29dLG8sZSkpcmV0
dXJuITF9cmV0dXJuITB9LHAuc29tZT0zRHAuYW55PTNEZnVuY3Rpb24oZSx0LG4pe2lmKGU9M0Q9
Cj0zRG51bGwpcmV0dXJuITE7dD0zRHAuaXRlcmF0ZWUodCxuKTt2YXIgcj0zRGUubGVuZ3RoIT0z
RD0zRCtlLmxlbmd0aCYmcC5rZT0KeXMoZSksaT0zRChyfHxlKS5sZW5ndGgscyxvO2ZvcihzPTNE
MDtzPGk7cysrKXtvPTNEcj9yW3NdOnM7aWYodChlW29dLG8sZSkpPQpyZXR1cm4hMH1yZXR1cm4h
MX0scC5jb250YWlucz0zRHAuaW5jbHVkZT0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9M0Q9M0Ru
dWw9Cmw/ITE6KGUubGVuZ3RoIT0zRD0zRCtlLmxlbmd0aCYmKGU9M0RwLnZhbHVlcyhlKSkscC5p
bmRleE9mKGUsdCk+PTNEMCl9LHAuaT0KbnZva2U9M0RmdW5jdGlvbihlLHQpe3ZhciBuPTNEby5j
YWxsKGFyZ3VtZW50cywyKSxyPTNEcC5pc0Z1bmN0aW9uKHQpO3JldHVyPQpuIHAubWFwKGUsZnVu
Y3Rpb24oZSl7cmV0dXJuKHI/dDplW3RdKS5hcHBseShlLG4pfSl9LHAucGx1Y2s9M0RmdW5jdGlv
bihlLHQ9Cil7cmV0dXJuIHAubWFwKGUscC5wcm9wZXJ0eSh0KSl9LHAud2hlcmU9M0RmdW5jdGlv
bihlLHQpe3JldHVybiBwLmZpbHRlcihlLD0KcC5tYXRjaGVzKHQpKX0scC5maW5kV2hlcmU9M0Rm
dW5jdGlvbihlLHQpe3JldHVybiBwLmZpbmQoZSxwLm1hdGNoZXModCkpfSxwPQoubWF4PTNEZnVu
Y3Rpb24oZSx0LG4pe3ZhciByPTNELUluZmluaXR5LGk9M0QtSW5maW5pdHkscyxvO2lmKHQ9M0Q9
M0RudWxsJiY9CmUhPTNEbnVsbCl7ZT0zRGUubGVuZ3RoPTNEPTNEPTNEK2UubGVuZ3RoP2U6cC52
YWx1ZXMoZSk7Zm9yKHZhciB1PTNEMCxhPTNEZT0KLmxlbmd0aDt1PGE7dSsrKXM9M0RlW3VdLHM+
ciYmKHI9M0RzKX1lbHNlIHQ9M0RwLml0ZXJhdGVlKHQsbikscC5lYWNoKGUsZnVuPQpjdGlvbihl
LG4scyl7bz0zRHQoZSxuLHMpO2lmKG8+aXx8bz0zRD0zRD0zRC1JbmZpbml0eSYmcj0zRD0zRD0z
RC1JbmZpbml0eSk9CnI9M0RlLGk9M0RvfSk7cmV0dXJuIHJ9LHAubWluPTNEZnVuY3Rpb24oZSx0
LG4pe3ZhciByPTNESW5maW5pdHksaT0zREluZmluaT0KdHkscyxvO2lmKHQ9M0Q9M0RudWxsJiZl
IT0zRG51bGwpe2U9M0RlLmxlbmd0aD0zRD0zRD0zRCtlLmxlbmd0aD9lOnAudmFsdWVzPQooZSk7
Zm9yKHZhciB1PTNEMCxhPTNEZS5sZW5ndGg7dTxhO3UrKylzPTNEZVt1XSxzPHImJihyPTNEcyl9
ZWxzZSB0PTNEcC5pdGU9CnJhdGVlKHQsbikscC5lYWNoKGUsZnVuY3Rpb24oZSxuLHMpe289M0R0
KGUsbixzKTtpZihvPGl8fG89M0Q9M0Q9M0RJbmZpbml0eT0KJiZyPTNEPTNEPTNESW5maW5pdHkp
cj0zRGUsaT0zRG99KTtyZXR1cm4gcn0scC5zaHVmZmxlPTNEZnVuY3Rpb24oZSl7dmFyIHQ9Cj0z
RGUmJmUubGVuZ3RoPTNEPTNEPTNEK2UubGVuZ3RoP2U6cC52YWx1ZXMoZSksbj0zRHQubGVuZ3Ro
LHI9M0RBcnJheShuKTtmbz0Kcih2YXIgaT0zRDAscztpPG47aSsrKXM9M0RwLnJhbmRvbSgwLGkp
LHMhPTNEPTNEaSYmKHJbaV09M0RyW3NdKSxyW3NdPTNEdFtpPQpdO3JldHVybiByfSxwLnNhbXBs
ZT0zRGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdD0zRD0zRG51bGx8fG4/KGUubGVuZ3RoIT0zRD0K
PTNEK2UubGVuZ3RoJiYoZT0zRHAudmFsdWVzKGUpKSxlW3AucmFuZG9tKGUubGVuZ3RoLTEpXSk6
cC5zaHVmZmxlKGUpLnNsaWNlPQooMCxNYXRoLm1heCgwLHQpKX0scC5zb3J0Qnk9M0RmdW5jdGlv
bihlLHQsbil7cmV0dXJuIHQ9M0RwLml0ZXJhdGVlKHQsbikscC49CnBsdWNrKHAubWFwKGUsZnVu
Y3Rpb24oZSxuLHIpe3JldHVybnt2YWx1ZTplLGluZGV4Om4sY3JpdGVyaWE6dChlLG4scil9fSku
cz0Kb3J0KGZ1bmN0aW9uKGUsdCl7dmFyIG49M0RlLmNyaXRlcmlhLHI9M0R0LmNyaXRlcmlhO2lm
KG4hPTNEPTNEcil7aWYobj5yfHxuPQo9M0Q9M0Q9M0R2b2lkIDApcmV0dXJuIDE7aWYobjxyfHxy
PTNEPTNEPTNEdm9pZCAwKXJldHVybi0xfXJldHVybiBlLmluZGV4LXQ9Ci5pbmRleH0pLCJ2YWx1
ZSIpfTt2YXIgbT0zRGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LG4scil7dmFyIGk9M0R7
fTtyZT0KdHVybiBuPTNEcC5pdGVyYXRlZShuLHIpLHAuZWFjaCh0LGZ1bmN0aW9uKHIscyl7dmFy
IG89M0RuKHIscyx0KTtlKGkscixvKX0pPQosaX19O3AuZ3JvdXBCeT0zRG0oZnVuY3Rpb24oZSx0
LG4pe3AuaGFzKGUsbik/ZVtuXS5wdXNoKHQpOmVbbl09M0RbdF19KSxwLmk9Cm5kZXhCeT0zRG0o
ZnVuY3Rpb24oZSx0LG4pe2Vbbl09M0R0fSkscC5jb3VudEJ5PTNEbShmdW5jdGlvbihlLHQsbil7
cC5oYXMoZT0KLG4pP2Vbbl0rKzplW25dPTNEMX0pLHAuc29ydGVkSW5kZXg9M0RmdW5jdGlvbihl
LHQsbixyKXtuPTNEcC5pdGVyYXRlZShuLHIsPQoxKTt2YXIgaT0zRG4odCkscz0zRDAsbz0zRGUu
bGVuZ3RoO3doaWxlKHM8byl7dmFyIHU9M0RzK28+Pj4xO24oZVt1XSk8aT9zPQo9M0R1KzE6bz0z
RHV9cmV0dXJuIHN9LHAudG9BcnJheT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlP3AuaXNBcnJheShl
KT9vLmNhbGw9CihlKTplLmxlbmd0aD0zRD0zRD0zRCtlLmxlbmd0aD9wLm1hcChlLHAuaWRlbnRp
dHkpOnAudmFsdWVzKGUpOltdfSxwLnNpemU9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBlPTNEPTNE
bnVsbD8wOmUubGVuZ3RoPTNEPTNEPTNEK2UubGVuZ3RoP2UubGVuZ3RoOnAuaz0KZXlzKGUpLmxl
bmd0aH0scC5wYXJ0aXRpb249M0RmdW5jdGlvbihlLHQsbil7dD0zRHAuaXRlcmF0ZWUodCxuKTt2
YXIgcj0zRFtdPQosaT0zRFtdO3JldHVybiBwLmVhY2goZSxmdW5jdGlvbihlLG4scyl7KHQoZSxu
LHMpP3I6aSkucHVzaChlKX0pLFtyLGldfSxwLmY9Cmlyc3Q9M0RwLmhlYWQ9M0RwLnRha2U9M0Rm
dW5jdGlvbihlLHQsbil7cmV0dXJuIGU9M0Q9M0RudWxsP3ZvaWQgMDp0PTNEPTNEbj0KdWxsfHxu
P2VbMF06dDwwP1tdOm8uY2FsbChlLDAsdCl9LHAuaW5pdGlhbD0zRGZ1bmN0aW9uKGUsdCxuKXty
ZXR1cm4gby5jYWxsPQooZSwwLE1hdGgubWF4KDAsZS5sZW5ndGgtKHQ9M0Q9M0RudWxsfHxuPzE6
dCkpKX0scC5sYXN0PTNEZnVuY3Rpb24oZSx0LG4pe3I9CmV0dXJuIGU9M0Q9M0RudWxsP3ZvaWQg
MDp0PTNEPTNEbnVsbHx8bj9lW2UubGVuZ3RoLTFdOm8uY2FsbChlLE1hdGgubWF4KGUubD0KZW5n
dGgtdCwwKSl9LHAucmVzdD0zRHAudGFpbD0zRHAuZHJvcD0zRGZ1bmN0aW9uKGUsdCxuKXtyZXR1
cm4gby5jYWxsKGUsdD0KPTNEPTNEbnVsbHx8bj8xOnQpfSxwLmNvbXBhY3Q9M0RmdW5jdGlvbihl
KXtyZXR1cm4gcC5maWx0ZXIoZSxwLmlkZW50aXR5KX07PQp2YXIgZz0zRGZ1bmN0aW9uKGUsdCxu
LHIpe2lmKHQmJnAuZXZlcnkoZSxwLmlzQXJyYXkpKXJldHVybiB1LmFwcGx5KHIsZSk7Zm89CnIo
dmFyIGk9M0QwLG89M0RlLmxlbmd0aDtpPG87aSsrKXt2YXIgYT0zRGVbaV07IXAuaXNBcnJheShh
KSYmIXAuaXNBcmd1bWVudD0KcyhhKT9ufHxyLnB1c2goYSk6dD9zLmFwcGx5KHIsYSk6ZyhhLHQs
bixyKX1yZXR1cm4gcn07cC5mbGF0dGVuPTNEZnVuY3Rpb24oPQplLHQpe3JldHVybiBnKGUsdCwh
MSxbXSl9LHAud2l0aG91dD0zRGZ1bmN0aW9uKGUpe3JldHVybiBwLmRpZmZlcmVuY2UoZSxvLmM9
CmFsbChhcmd1bWVudHMsMSkpfSxwLnVuaXE9M0RwLnVuaXF1ZT0zRGZ1bmN0aW9uKGUsdCxuLHIp
e2lmKGU9M0Q9M0RudWxsKXJldD0KdXJuW107cC5pc0Jvb2xlYW4odCl8fChyPTNEbixuPTNEdCx0
PTNEITEpLG4hPTNEbnVsbCYmKG49M0RwLml0ZXJhdGVlKG4scikpPQo7dmFyIGk9M0RbXSxzPTNE
W107Zm9yKHZhciBvPTNEMCx1PTNEZS5sZW5ndGg7bzx1O28rKyl7dmFyIGE9M0RlW29dO2lmKHQp
KCE9Cm98fHMhPTNEPTNEYSkmJmkucHVzaChhKSxzPTNEYTtlbHNlIGlmKG4pe3ZhciBmPTNEbihh
LG8sZSk7cC5pbmRleE9mKHMsZik8MD0KJiYocy5wdXNoKGYpLGkucHVzaChhKSl9ZWxzZSBwLmlu
ZGV4T2YoaSxhKTwwJiZpLnB1c2goYSl9cmV0dXJuIGl9LHAudW5pb249Cj0zRGZ1bmN0aW9uKCl7
cmV0dXJuIHAudW5pcShnKGFyZ3VtZW50cywhMCwhMCxbXSkpfSxwLmludGVyc2VjdGlvbj0zRGZ1
bmN0aT0Kb24oZSl7aWYoZT0zRD0zRG51bGwpcmV0dXJuW107dmFyIHQ9M0RbXSxuPTNEYXJndW1l
bnRzLmxlbmd0aDtmb3IodmFyIHI9M0QwPQosaT0zRGUubGVuZ3RoO3I8aTtyKyspe3ZhciBzPTNE
ZVtyXTtpZihwLmNvbnRhaW5zKHQscykpY29udGludWU7Zm9yKHZhciBvPQo9M0QxO288bjtvKysp
aWYoIXAuY29udGFpbnMoYXJndW1lbnRzW29dLHMpKWJyZWFrO289M0Q9M0Q9M0RuJiZ0LnB1c2go
cyl9cmU9CnR1cm4gdH0scC5kaWZmZXJlbmNlPTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0RnKG8uY2Fs
bChhcmd1bWVudHMsMSksITAsITAsW10pOz0KcmV0dXJuIHAuZmlsdGVyKGUsZnVuY3Rpb24oZSl7
cmV0dXJuIXAuY29udGFpbnModCxlKX0pfSxwLnppcD0zRGZ1bmN0aW9uKGUpPQp7aWYoZT0zRD0z
RG51bGwpcmV0dXJuW107dmFyIHQ9M0RwLm1heChhcmd1bWVudHMsImxlbmd0aCIpLmxlbmd0aCxu
PTNEQXJyYXk9Cih0KTtmb3IodmFyIHI9M0QwO3I8dDtyKyspbltyXT0zRHAucGx1Y2soYXJndW1l
bnRzLHIpO3JldHVybiBufSxwLm9iamVjdD0zRD0KZnVuY3Rpb24oZSx0KXtpZihlPTNEPTNEbnVs
bClyZXR1cm57fTt2YXIgbj0zRHt9O2Zvcih2YXIgcj0zRDAsaT0zRGUubGVuZ3RoPQo7cjxpO3Ir
Kyl0P25bZVtyXV09M0R0W3JdOm5bZVtyXVswXV09M0RlW3JdWzFdO3JldHVybiBufSxwLmluZGV4
T2Y9M0RmdW5jdGk9Cm9uKGUsdCxuKXtpZihlPTNEPTNEbnVsbClyZXR1cm4tMTt2YXIgcj0zRDAs
aT0zRGUubGVuZ3RoO2lmKG4pe2lmKHR5cGVvZiBuIT0KPTNEIm51bWJlciIpcmV0dXJuIHI9M0Rw
LnNvcnRlZEluZGV4KGUsdCksZVtyXT0zRD0zRD0zRHQ/cjotMTtyPTNEbjwwP01hdGguPQptYXgo
MCxpK24pOm59Zm9yKDtyPGk7cisrKWlmKGVbcl09M0Q9M0Q9M0R0KXJldHVybiByO3JldHVybi0x
fSxwLmxhc3RJbmRleE89CmY9M0RmdW5jdGlvbihlLHQsbil7aWYoZT0zRD0zRG51bGwpcmV0dXJu
LTE7dmFyIHI9M0RlLmxlbmd0aDt0eXBlb2Ygbj0zRD0zRD0KIm51bWJlciImJihyPTNEbjwwP3Ir
bisxOk1hdGgubWluKHIsbisxKSk7d2hpbGUoLS1yPj0zRDApaWYoZVtyXT0zRD0zRD0zRHQpPQpy
ZXR1cm4gcjtyZXR1cm4tMX0scC5yYW5nZT0zRGZ1bmN0aW9uKGUsdCxuKXthcmd1bWVudHMubGVu
Z3RoPD0zRDEmJih0PTNEZXw9CnwwLGU9M0QwKSxuPTNEbnx8MTt2YXIgcj0zRE1hdGgubWF4KE1h
dGguY2VpbCgodC1lKS9uKSwwKSxpPTNEQXJyYXkocik7Zm9yKD0KdmFyIHM9M0QwO3M8cjtzKyss
ZSs9M0RuKWlbc109M0RlO3JldHVybiBpfTt2YXIgeT0zRGZ1bmN0aW9uKCl7fTtwLmJpbmQ9M0Rm
PQp1bmN0aW9uKGUsdCl7dmFyIG4scjtpZihoJiZlLmJpbmQ9M0Q9M0Q9M0RoKXJldHVybiBoLmFw
cGx5KGUsby5jYWxsKGFyZ3VtZW49CnRzLDEpKTtpZighcC5pc0Z1bmN0aW9uKGUpKXRocm93IG5l
dyBUeXBlRXJyb3IoIkJpbmQgbXVzdCBiZSBjYWxsZWQgb24gYSBmdT0KbmN0aW9uIik7cmV0dXJu
IG49M0RvLmNhbGwoYXJndW1lbnRzLDIpLHI9M0RmdW5jdGlvbigpe2lmKHRoaXMgaW5zdGFuY2Vv
ZiByPQope3kucHJvdG90eXBlPTNEZS5wcm90b3R5cGU7dmFyIGk9M0RuZXcgeTt5LnByb3RvdHlw
ZT0zRG51bGw7dmFyIHM9M0RlLmFwcGw9CnkoaSxuLmNvbmNhdChvLmNhbGwoYXJndW1lbnRzKSkp
O3JldHVybiBwLmlzT2JqZWN0KHMpP3M6aX1yZXR1cm4gZS5hcHBseSh0LD0Kbi5jb25jYXQoby5j
YWxsKGFyZ3VtZW50cykpKX0scn0scC5wYXJ0aWFsPTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0RvLmNh
bGwoYXJnPQp1bWVudHMsMSk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49M0QwLHI9M0R0LnNsaWNl
KCk7Zm9yKHZhciBpPTNEMCxzPTNEci5sZW49Cmd0aDtpPHM7aSsrKXJbaV09M0Q9M0Q9M0RwJiYo
cltpXT0zRGFyZ3VtZW50c1tuKytdKTt3aGlsZShuPGFyZ3VtZW50cy5sZW5ndD0KaClyLnB1c2go
YXJndW1lbnRzW24rK10pO3JldHVybiBlLmFwcGx5KHRoaXMscil9fSxwLmJpbmRBbGw9M0RmdW5j
dGlvbihlKXt2PQphciB0LG49M0Rhcmd1bWVudHMubGVuZ3RoLHI7aWYobjw9M0QxKXRocm93IG5l
dyBFcnJvcigiYmluZEFsbCBtdXN0IGJlIHBhc3M9CmVkIGZ1bmN0aW9uIG5hbWVzIik7Zm9yKHQ9
M0QxO3Q8bjt0Kyspcj0zRGFyZ3VtZW50c1t0XSxlW3JdPTNEcC5iaW5kKGVbcl0sZT0KKTtyZXR1
cm4gZX0scC5tZW1vaXplPTNEZnVuY3Rpb24oZSx0KXt2YXIgbj0zRGZ1bmN0aW9uKHIpe3ZhciBp
PTNEbi5jYWNoZSxzPQo9M0R0P3QuYXBwbHkodGhpcyxhcmd1bWVudHMpOnI7cmV0dXJuIHAuaGFz
KGkscyl8fChpW3NdPTNEZS5hcHBseSh0aGlzLGFyZ3U9Cm1lbnRzKSksaVtzXX07cmV0dXJuIG4u
Y2FjaGU9M0R7fSxufSxwLmRlbGF5PTNEZnVuY3Rpb24oZSx0KXt2YXIgbj0zRG8uY2FsbD0KKGFy
Z3VtZW50cywyKTtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBlLmFwcGx5KG51
bGwsbil9LHQpfSxwLmRlPQpmZXI9M0RmdW5jdGlvbihlKXtyZXR1cm4gcC5kZWxheS5hcHBseShw
LFtlLDFdLmNvbmNhdChvLmNhbGwoYXJndW1lbnRzLDEpKSk9Cn0scC50aHJvdHRsZT0zRGZ1bmN0
aW9uKGUsdCxuKXt2YXIgcixpLHMsbz0zRG51bGwsdT0zRDA7bnx8KG49M0R7fSk7dmFyIGE9Cj0z
RGZ1bmN0aW9uKCl7dT0zRG4ubGVhZGluZz0zRD0zRD0zRCExPzA6cC5ub3coKSxvPTNEbnVsbCxz
PTNEZS5hcHBseShyLGkpLD0Kb3x8KHI9M0RpPTNEbnVsbCl9O3JldHVybiBmdW5jdGlvbigpe3Zh
ciBmPTNEcC5ub3coKTshdSYmbi5sZWFkaW5nPTNEPTNEPTNEPQohMSYmKHU9M0RmKTt2YXIgbD0z
RHQtKGYtdSk7cmV0dXJuIHI9M0R0aGlzLGk9M0Rhcmd1bWVudHMsbDw9M0QwfHxsPnQ/KGNsZWE9
CnJUaW1lb3V0KG8pLG89M0RudWxsLHU9M0RmLHM9M0RlLmFwcGx5KHIsaSksb3x8KHI9M0RpPTNE
bnVsbCkpOiFvJiZuLnRyYWlsaT0KbmchPTNEPTNEITEmJihvPTNEc2V0VGltZW91dChhLGwpKSxz
fX0scC5kZWJvdW5jZT0zRGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPQoscyxvLHUsYT0zRGZ1bmN0
aW9uKCl7dmFyIGY9M0RwLm5vdygpLW87Zjx0JiZmPjA/cj0zRHNldFRpbWVvdXQoYSx0LWYpOihy
PQo9M0RudWxsLG58fCh1PTNEZS5hcHBseShzLGkpLHJ8fChzPTNEaT0zRG51bGwpKSl9O3JldHVy
biBmdW5jdGlvbigpe3M9M0R0aGk9CnMsaT0zRGFyZ3VtZW50cyxvPTNEcC5ub3coKTt2YXIgZj0z
RG4mJiFyO3JldHVybiByfHwocj0zRHNldFRpbWVvdXQoYSx0KSksZj0KJiYodT0zRGUuYXBwbHko
cyxpKSxzPTNEaT0zRG51bGwpLHV9fSxwLndyYXA9M0RmdW5jdGlvbihlLHQpe3JldHVybiBwLnBh
cnRpPQphbCh0LGUpfSxwLm5lZ2F0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3Jl
dHVybiFlLmFwcGx5KHRoaXMsYXJndW09CmVudHMpfX0scC5jb21wb3NlPTNEZnVuY3Rpb24oKXt2
YXIgZT0zRGFyZ3VtZW50cyx0PTNEZS5sZW5ndGgtMTtyZXR1cm4gZnVuYz0KdGlvbigpe3ZhciBu
PTNEdCxyPTNEZVt0XS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7d2hpbGUobi0tKXI9M0RlW25dLmNh
bGwodGhpPQpzLHIpO3JldHVybiByfX0scC5hZnRlcj0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1
bmN0aW9uKCl7aWYoLS1lPDEpcmV0dXJuIHQ9Ci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSxwLmJl
Zm9yZT0zRGZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIGZ1bmN0aW9uKCl7cj0KZXR1cm4tLWU+
MD9uPTNEdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dD0zRG51bGwsbn19LHAub25jZT0zRHAucGFy
dGlhbChwLmJlPQpmb3JlLDIpLHAua2V5cz0zRGZ1bmN0aW9uKGUpe2lmKCFwLmlzT2JqZWN0KGUp
KXJldHVybltdO2lmKGMpcmV0dXJuIGMoZSk7dmE9CnIgdD0zRFtdO2Zvcih2YXIgbiBpbiBlKXAu
aGFzKGUsbikmJnQucHVzaChuKTtyZXR1cm4gdH0scC52YWx1ZXM9M0RmdW5jdGlvbj0KKGUpe3Zh
ciB0PTNEcC5rZXlzKGUpLG49M0R0Lmxlbmd0aCxyPTNEQXJyYXkobik7Zm9yKHZhciBpPTNEMDtp
PG47aSsrKXJbaV09Cj0zRGVbdFtpXV07cmV0dXJuIHJ9LHAucGFpcnM9M0RmdW5jdGlvbihlKXt2
YXIgdD0zRHAua2V5cyhlKSxuPTNEdC5sZW5ndGgscj0KPTNEQXJyYXkobik7Zm9yKHZhciBpPTNE
MDtpPG47aSsrKXJbaV09M0RbdFtpXSxlW3RbaV1dXTtyZXR1cm4gcn0scC5pbnZlcnQ9Cj0zRGZ1
bmN0aW9uKGUpe3ZhciB0PTNEe30sbj0zRHAua2V5cyhlKTtmb3IodmFyIHI9M0QwLGk9M0RuLmxl
bmd0aDtyPGk7cisrKT0KdFtlW25bcl1dXT0zRG5bcl07cmV0dXJuIHR9LHAuZnVuY3Rpb25zPTNE
cC5tZXRob2RzPTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0RbPQpdO2Zvcih2YXIgbiBpbiBlKXAuaXNG
dW5jdGlvbihlW25dKSYmdC5wdXNoKG4pO3JldHVybiB0LnNvcnQoKX0scC5leHRlbmQ9M0Q9CmZ1
bmN0aW9uKGUpe2lmKCFwLmlzT2JqZWN0KGUpKXJldHVybiBlO3ZhciB0LG47Zm9yKHZhciByPTNE
MSxpPTNEYXJndW1lbnRzLj0KbGVuZ3RoO3I8aTtyKyspe3Q9M0Rhcmd1bWVudHNbcl07Zm9yKG4g
aW4gdClmLmNhbGwodCxuKSYmKGVbbl09M0R0W25dKX1yZXR1PQpybiBlfSxwLnBpY2s9M0RmdW5j
dGlvbihlLHQsbil7dmFyIHI9M0R7fSxpO2lmKGU9M0Q9M0RudWxsKXJldHVybiByO2lmKHAuaXM9
CkZ1bmN0aW9uKHQpKXt0PTNEZCh0LG4pO2ZvcihpIGluIGUpe3ZhciBzPTNEZVtpXTt0KHMsaSxl
KSYmKHJbaV09M0RzKX19ZWxzZT0Ke3ZhciBhPTNEdS5hcHBseShbXSxvLmNhbGwoYXJndW1lbnRz
LDEpKTtlPTNEbmV3IE9iamVjdChlKTtmb3IodmFyIGY9M0QwLGw9Cj0zRGEubGVuZ3RoO2Y8bDtm
KyspaT0zRGFbZl0saSBpbiBlJiYocltpXT0zRGVbaV0pfXJldHVybiByfSxwLm9taXQ9M0RmdW5j
dD0KaW9uKGUsdCxuKXtpZihwLmlzRnVuY3Rpb24odCkpdD0zRHAubmVnYXRlKHQpO2Vsc2V7dmFy
IHI9M0RwLm1hcCh1LmFwcGx5KFtdPQosby5jYWxsKGFyZ3VtZW50cywxKSksU3RyaW5nKTt0PTNE
ZnVuY3Rpb24oZSx0KXtyZXR1cm4hcC5jb250YWlucyhyLHQpfX1yZXQ9CnVybiBwLnBpY2soZSx0
LG4pfSxwLmRlZmF1bHRzPTNEZnVuY3Rpb24oZSl7aWYoIXAuaXNPYmplY3QoZSkpcmV0dXJuIGU7
Zm9yKD0KdmFyIHQ9M0QxLG49M0Rhcmd1bWVudHMubGVuZ3RoO3Q8bjt0Kyspe3ZhciByPTNEYXJn
dW1lbnRzW3RdO2Zvcih2YXIgaSBpbiByPQopZVtpXT0zRD0zRD0zRHZvaWQgMCYmKGVbaV09M0Ry
W2ldKX1yZXR1cm4gZX0scC5jbG9uZT0zRGZ1bmN0aW9uKGUpe3JldHVybiA9CnAuaXNPYmplY3Qo
ZSk/cC5pc0FycmF5KGUpP2Uuc2xpY2UoKTpwLmV4dGVuZCh7fSxlKTplfSxwLnRhcD0zRGZ1bmN0
aW9uKGUsdD0KKXtyZXR1cm4gdChlKSxlfTt2YXIgYj0zRGZ1bmN0aW9uKGUsdCxuLHIpe2lmKGU9
M0Q9M0Q9M0R0KXJldHVybiBlIT0zRD0zRDB8PQp8MS9lPTNEPTNEPTNEMS90O2lmKGU9M0Q9M0Ru
dWxsfHx0PTNEPTNEbnVsbClyZXR1cm4gZT0zRD0zRD0zRHQ7ZSBpbnN0YW5jZW89CmYgcCYmKGU9
M0RlLl93cmFwcGVkKSx0IGluc3RhbmNlb2YgcCYmKHQ9M0R0Ll93cmFwcGVkKTt2YXIgaT0zRGEu
Y2FsbChlKTtpZj0KKGkhPTNEPTNEYS5jYWxsKHQpKXJldHVybiExO3N3aXRjaChpKXtjYXNlIltv
YmplY3QgUmVnRXhwXSI6Y2FzZSJbb2JqZWN0IFN0PQpyaW5nXSI6cmV0dXJuIiIrZT0zRD0zRCIi
K3Q7Y2FzZSJbb2JqZWN0IE51bWJlcl0iOmlmKCtlIT0zRD0zRCtlKXJldHVybit0IT0KPTNEPTNE
K3Q7cmV0dXJuK2U9M0Q9M0Q9M0QwPzEvK2U9M0Q9M0Q9M0QxL3Q6K2U9M0Q9M0Q9M0QrdDtjYXNl
IltvYmplY3QgRGF0PQplXSI6Y2FzZSJbb2JqZWN0IEJvb2xlYW5dIjpyZXR1cm4rZT0zRD0zRD0z
RCt0fWlmKHR5cGVvZiBlIT0zRCJvYmplY3QifHx0eXA9CmVvZiB0IT0zRCJvYmplY3QiKXJldHVy
biExO3ZhciBzPTNEbi5sZW5ndGg7d2hpbGUocy0tKWlmKG5bc109M0Q9M0Q9M0RlKXJldD0KdXJu
IHJbc109M0Q9M0Q9M0R0O3ZhciBvPTNEZS5jb25zdHJ1Y3Rvcix1PTNEdC5jb25zdHJ1Y3Rvcjtp
ZihvIT0zRD0zRHUmJiJjPQpvbnN0cnVjdG9yImluIGUmJiJjb25zdHJ1Y3RvciJpbiB0JiYhKHAu
aXNGdW5jdGlvbihvKSYmbyBpbnN0YW5jZW9mIG8mJnAuaXM9CkZ1bmN0aW9uKHUpJiZ1IGluc3Rh
bmNlb2YgdSkpcmV0dXJuITE7bi5wdXNoKGUpLHIucHVzaCh0KTt2YXIgZixsO2lmKGk9M0Q9Cj0z
RD0zRCJbb2JqZWN0IEFycmF5XSIpe2Y9M0RlLmxlbmd0aCxsPTNEZj0zRD0zRD0zRHQubGVuZ3Ro
O2lmKGwpd2hpbGUoZi0tKT0KaWYoIShsPTNEYihlW2ZdLHRbZl0sbixyKSkpYnJlYWt9ZWxzZXt2
YXIgYz0zRHAua2V5cyhlKSxoO2Y9M0RjLmxlbmd0aCxsPTNEPQpwLmtleXModCkubGVuZ3RoPTNE
PTNEPTNEZjtpZihsKXdoaWxlKGYtLSl7aD0zRGNbZl07aWYoIShsPTNEcC5oYXModCxoKSYmYig9
CmVbaF0sdFtoXSxuLHIpKSlicmVha319cmV0dXJuIG4ucG9wKCksci5wb3AoKSxsfTtwLmlzRXF1
YWw9M0RmdW5jdGlvbihlLHQpez0KcmV0dXJuIGIoZSx0LFtdLFtdKX0scC5pc0VtcHR5PTNEZnVu
Y3Rpb24oZSl7aWYoZT0zRD0zRG51bGwpcmV0dXJuITA7aWYocC5pPQpzQXJyYXkoZSl8fHAuaXNT
dHJpbmcoZSl8fHAuaXNBcmd1bWVudHMoZSkpcmV0dXJuIGUubGVuZ3RoPTNEPTNEPTNEMDtmb3Io
dmE9CnIgdCBpbiBlKWlmKHAuaGFzKGUsdCkpcmV0dXJuITE7cmV0dXJuITB9LHAuaXNFbGVtZW50
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIT0KIWUmJmUubm9kZVR5cGU9M0Q9M0Q9M0QxfSxwLmlzQXJy
YXk9M0RsfHxmdW5jdGlvbihlKXtyZXR1cm4gYS5jYWxsKGUpPTNEPTNEPQo9M0QiW29iamVjdCBB
cnJheV0ifSxwLmlzT2JqZWN0PTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0R0eXBlb2YgZTtyZXR1cm4g
dD0zRD0KPTNEPTNEImZ1bmN0aW9uInx8dD0zRD0zRD0zRCJvYmplY3QiJiYhIWV9LHAuZWFjaChb
IkFyZ3VtZW50cyIsIkZ1bmN0aW9uIiwiPQpTdHJpbmciLCJOdW1iZXIiLCJEYXRlIiwiUmVnRXhw
Il0sZnVuY3Rpb24oZSl7cFsiaXMiK2VdPTNEZnVuY3Rpb24odCl7cmV0dXI9Cm4gYS5jYWxsKHQp
PTNEPTNEPTNEIltvYmplY3QgIitlKyJdIn19KSxwLmlzQXJndW1lbnRzKGFyZ3VtZW50cyl8fChw
LmlzQXJndT0KbWVudHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gcC5oYXMoZSwiY2FsbGVlIil9KSx0
eXBlb2YgLy4vIT0zRCJmdW5jdGlvbiImJihwPQouaXNGdW5jdGlvbj0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiB0eXBlb2YgZT0zRD0zRCJmdW5jdGlvbiJ8fCExfSkscC5pc0Zpbml0ZT0KPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGlzRmluaXRlKGUpJiYhaXNOYU4ocGFyc2VGbG9hdChlKSl9LHAuaXNOYU49
M0RmdW5jdGlvPQpuKGUpe3JldHVybiBwLmlzTnVtYmVyKGUpJiZlIT0zRD0zRCtlfSxwLmlzQm9v
bGVhbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBlPQo9M0Q9M0Q9M0QhMHx8ZT0zRD0zRD0zRCExfHxh
LmNhbGwoZSk9M0Q9M0Q9M0QiW29iamVjdCBCb29sZWFuXSJ9LHAuaXNOdWxsPQo9M0RmdW5jdGlv
bihlKXtyZXR1cm4gZT0zRD0zRD0zRG51bGx9LHAuaXNVbmRlZmluZWQ9M0RmdW5jdGlvbihlKXty
ZXR1cm4gZT0KPTNEPTNEPTNEdm9pZCAwfSxwLmhhcz0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUh
PTNEbnVsbCYmZi5jYWxsKGUsdCl9LHAubm9DPQpvbmZsaWN0PTNEZnVuY3Rpb24oKXtyZXR1cm4g
ZS5fPTNEdCx0aGlzfSxwLmlkZW50aXR5PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGU9Cn0scC5jb25z
dGFudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX0scC5ub29wPTNE
ZnVuY3Rpb24oKT0Ke30scC5wcm9wZXJ0eT0zRGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0
KXtyZXR1cm4gdFtlXX19LHAubWF0Y2hlcz0zRGZ1PQpuY3Rpb24oZSl7dmFyIHQ9M0RwLnBhaXJz
KGUpLG49M0R0Lmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoZT0zRD0zRG51bGw9CilyZXR1
cm4hbjtlPTNEbmV3IE9iamVjdChlKTtmb3IodmFyIHI9M0QwO3I8bjtyKyspe3ZhciBpPTNEdFty
XSxzPTNEaVswXTtpZj0KKGlbMV0hPTNEPTNEZVtzXXx8IShzIGluIGUpKXJldHVybiExfXJldHVy
biEwfX0scC50aW1lcz0zRGZ1bmN0aW9uKGUsdCxuKXt2PQphciByPTNEQXJyYXkoTWF0aC5tYXgo
MCxlKSk7dD0zRGQodCxuLDEpO2Zvcih2YXIgaT0zRDA7aTxlO2krKylyW2ldPTNEdChpKTs9CnJl
dHVybiByfSxwLnJhbmRvbT0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9M0Q9M0RudWxsJiYodD0z
RGUsZT0zRDApLGUrTWF0aD0KLmZsb29yKE1hdGgucmFuZG9tKCkqKHQtZSsxKSl9LHAubm93PTNE
RGF0ZS5ub3d8fGZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlPQopLmdldFRpbWUoKX07dmFyIHc9
M0R7IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7IiwiJyI6IiY9
CiN4Mjc7IiwiYCI6IiYjeDYwOyJ9LEU9M0RwLmludmVydCh3KSxTPTNEZnVuY3Rpb24oZSl7dmFy
IHQ9M0RmdW5jdGlvbih0KXtyZT0KdHVybiBlW3RdfSxuPTNEIig/OiIrcC5rZXlzKGUpLmpvaW4o
InwiKSsiKSIscj0zRFJlZ0V4cChuKSxpPTNEUmVnRXhwKG4sImciPQopO3JldHVybiBmdW5jdGlv
bihlKXtyZXR1cm4gZT0zRGU9M0Q9M0RudWxsPyIiOiIiK2Usci50ZXN0KGUpP2UucmVwbGFjZShp
LHQ9Cik6ZX19O3AuZXNjYXBlPTNEUyh3KSxwLnVuZXNjYXBlPTNEUyhFKSxwLnJlc3VsdD0zRGZ1
bmN0aW9uKGUsdCl7aWYoZT0zRD0zRD0KbnVsbClyZXR1cm4gdm9pZCAwO3ZhciBuPTNEZVt0XTty
ZXR1cm4gcC5pc0Z1bmN0aW9uKG4pP2VbdF0oKTpufTt2YXIgeD0zRDA7PQpwLnVuaXF1ZUlkPTNE
ZnVuY3Rpb24oZSl7dmFyIHQ9M0QrK3grIiI7cmV0dXJuIGU/ZSt0OnR9LHAudGVtcGxhdGVTZXR0
aW5ncz0KPTNEe2V2YWx1YXRlOi88JShbXHNcU10rPyklPi9nLGludGVycG9sYXRlOi88JT0zRChb
XHNcU10rPyklPi9nLGVzY2FwZTovPCUtPQooW1xzXFNdKz8pJT4vZ307dmFyIFQ9M0QvKC4pXi8s
Tj0zRHsiJyI6IiciLCJcXCI6IlxcIiwiXHIiOiJyIiwiXG4iOiJuIiwiXHU9CjIwMjgiOiJ1MjAy
OCIsIlx1MjAyOSI6InUyMDI5In0sQz0zRC9cXHwnfFxyfFxufFx1MjAyOHxcdTIwMjkvZyxrPTNE
ZnVuY3Rpbz0KbihlKXtyZXR1cm4iXFwiK05bZV19O3AudGVtcGxhdGU9M0RmdW5jdGlvbihlLHQs
bil7IXQmJm4mJih0PTNEbiksdD0zRHAuZGVmPQphdWx0cyh7fSx0LHAudGVtcGxhdGVTZXR0aW5n
cyk7dmFyIHI9M0RSZWdFeHAoWyh0LmVzY2FwZXx8VCkuc291cmNlLCh0LmludGU9CnJwb2xhdGV8
fFQpLnNvdXJjZSwodC5ldmFsdWF0ZXx8VCkuc291cmNlXS5qb2luKCJ8IikrInwkIiwiZyIpLGk9
M0QwLHM9M0QiXz0KX3ArPTNEJyI7ZS5yZXBsYWNlKHIsZnVuY3Rpb24odCxuLHIsbyx1KXtyZXR1
cm4gcys9M0RlLnNsaWNlKGksdSkucmVwbGFjZShDPQosayksaT0zRHUrdC5sZW5ndGgsbj9zKz0z
RCInK1xuKChfX3Q9M0QoIituKyIpKT0zRD0zRG51bGw/Jyc6Xy5lc2NhcGUoX190KSk9Citcbici
OnI/cys9M0QiJytcbigoX190PTNEKCIrcisiKSk9M0Q9M0RudWxsPycnOl9fdCkrXG4nIjpvJiYo
cys9M0QiJztcbiIrbz0KKyJcbl9fcCs9M0QnIiksdH0pLHMrPTNEIic7XG4iLHQudmFyaWFibGV8
fChzPTNEIndpdGgob2JqfHx7fSl7XG4iK3MrIn1cbiIpPQoscz0zRCJ2YXIgX190LF9fcD0zRCcn
LF9faj0zREFycmF5LnByb3RvdHlwZS5qb2luLHByaW50PTNEZnVuY3Rpb24oKXtfX3ArPQo9M0Rf
X2ouY2FsbChhcmd1bWVudHMsJycpO307XG4iK3MrInJldHVybiBfX3A7XG4iO3RyeXt2YXIgbz0z
RG5ldyBGdW5jdGlvbig9CnQudmFyaWFibGV8fCJvYmoiLCJfIixzKX1jYXRjaCh1KXt0aHJvdyB1
LnNvdXJjZT0zRHMsdX12YXIgYT0zRGZ1bmN0aW9uKGUpez0KcmV0dXJuIG8uY2FsbCh0aGlzLGUs
cCl9LGY9M0R0LnZhcmlhYmxlfHwib2JqIjtyZXR1cm4gYS5zb3VyY2U9M0QiZnVuY3Rpb24oPQoi
K2YrIil7XG4iK3MrIn0iLGF9LHAuY2hhaW49M0RmdW5jdGlvbihlKXt2YXIgdD0zRHAoZSk7cmV0
dXJuIHQuX2NoYWluPTNEITA9Cix0fTt2YXIgTD0zRGZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9j
aGFpbj9wKGUpLmNoYWluKCk6ZX07cC5taXhpbj0zRGZ1bmN0aT0Kb24oZSl7cC5lYWNoKHAuZnVu
Y3Rpb25zKGUpLGZ1bmN0aW9uKHQpe3ZhciBuPTNEcFt0XT0zRGVbdF07cC5wcm90b3R5cGVbdF09
Cj0zRGZ1bmN0aW9uKCl7dmFyIGU9M0RbdGhpcy5fd3JhcHBlZF07cmV0dXJuIHMuYXBwbHkoZSxh
cmd1bWVudHMpLEwuY2FsbCh0aD0KaXMsbi5hcHBseShwLGUpKX19KX0scC5taXhpbihwKSxwLmVh
Y2goWyJwb3AiLCJwdXNoIiwicmV2ZXJzZSIsInNoaWZ0Iiwic29yPQp0Iiwic3BsaWNlIiwidW5z
aGlmdCJdLGZ1bmN0aW9uKGUpe3ZhciB0PTNEbltlXTtwLnByb3RvdHlwZVtlXT0zRGZ1bmN0aW9u
KCk9Cnt2YXIgbj0zRHRoaXMuX3dyYXBwZWQ7cmV0dXJuIHQuYXBwbHkobixhcmd1bWVudHMpLChl
PTNEPTNEPTNEInNoaWZ0Inx8ZT0zRD0KPTNEPTNEInNwbGljZSIpJiZuLmxlbmd0aD0zRD0zRD0z
RDAmJmRlbGV0ZSBuWzBdLEwuY2FsbCh0aGlzLG4pfX0pLHAuZWFjaChbPQoiY29uY2F0Iiwiam9p
biIsInNsaWNlIl0sZnVuY3Rpb24oZSl7dmFyIHQ9M0RuW2VdO3AucHJvdG90eXBlW2VdPTNEZnVu
Y3Rpb249Cigpe3JldHVybiBMLmNhbGwodGhpcyx0LmFwcGx5KHRoaXMuX3dyYXBwZWQsYXJndW1l
bnRzKSl9fSkscC5wcm90b3R5cGUudmFsdT0KZT0zRGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dy
YXBwZWR9LHR5cGVvZiBkZWZpbmU9M0Q9M0QiZnVuY3Rpb24iJiZkZWZpbmUuPQphbWQmJmRlZmlu
ZSgidW5kZXJzY29yZSIsW10sZnVuY3Rpb24oKXtyZXR1cm4gcH0pfS5jYWxsKHRoaXMpLGRlZmlu
ZSgibGlicy89CnVuZGVyc2NvcmUiLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0
LG47cmV0dXJuIHR8fGUuX319KHRoaXMpKSxkZT0KZmluZSgidXRpbHMvdXRpbHMiLFsibGlicy91
bmRlcnNjb3JlIl0sZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLG4pe2Zvcih2YXIgPQpyIGluIGUp
e3ZhciBpPTNEZVtyXTtpJiZ0eXBlb2YgaT0zRD0zRCJvYmplY3QiJiYobihpKSx0KGksbikpfX1m
dW5jdGlvbiBuKGU9Cil7cmV0dXJuICQoIjxkaXYvPiIpLnRleHQoZSkuaHRtbCgpfWZ1bmN0aW9u
IHIoZSl7ZSBpbnN0YW5jZW9mIEFycmF5fHwoZT0zRD0KW2VdKTtmb3IodmFyIHQgaW4gZSlpZihb
Ik5vbmUiLG51bGwsIm51bGwiLHVuZGVmaW5lZCwidW5kZWZpbmVkIl0uaW5kZXhPZihlPQpbdF0p
Pi0xKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGkoZSl7dmFyIGU9M0RlLnRvU3RyaW5nKCk7
aWYoZSl7ZT0zRGUucmU9CnBsYWNlKC8sL2csIiwgIik7dmFyIHQ9M0RlLmxhc3RJbmRleE9mKCIs
ICIpO3JldHVybiB0IT0zRC0xJiYoZT0zRGUuc3Vic3RyKD0KMCx0KSsiIG9yICIrZS5zdWJzdHIo
dCsxKSksZX1yZXR1cm4iIn1mdW5jdGlvbiBzKGUpe3RvcC5fX3V0aWxzX19nZXRfXz0zRHRvPQpw
Ll9fdXRpbHNfX2dldF9ffHx7fSxlLmNhY2hlJiZ0b3AuX191dGlsc19fZ2V0X19bZS51cmxdPyhl
LnN1Y2Nlc3MmJmUuc3VjY2U9CnNzKHRvcC5fX3V0aWxzX19nZXRfX1tlLnVybF0pLGNvbnNvbGUu
ZGVidWcoInV0aWxzLmpzOjpnZXQoKSAtIEZldGNoaW5nIGZybz0KbSBjYWNoZSBbIitlLnVybCsi
XS4iKSk6byh7dXJsOmUudXJsLGRhdGE6ZS5kYXRhLHN1Y2Nlc3M6ZnVuY3Rpb24odCl7dG9wLl9f
PQp1dGlsc19fZ2V0X19bZS51cmxdPTNEdCxlLnN1Y2Nlc3MmJmUuc3VjY2Vzcyh0KX0sZXJyb3I6
ZnVuY3Rpb24odCl7ZS5lcnJvciY9CiZlLmVycm9yKHQpfX0pfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9
M0R7Y29udGVudFR5cGU6ImFwcGxpY2F0aW9uL2pzb24iLHR5cGU6ZT0KLnR5cGV8fCJHRVQiLGRh
dGE6ZS5kYXRhfHx7fSx1cmw6ZS51cmx9O3QudHlwZT0zRD0zRCJHRVQifHx0LnR5cGU9M0Q9M0Qi
REVMPQpFVEUiPyh0LnVybC5pbmRleE9mKCI/Iik9M0Q9M0QtMT90LnVybCs9M0QiPyI6dC51cmwr
PTNEIiYiLHQudXJsPTNEdC51cmwrJC49CnBhcmFtKHQuZGF0YSksdC5kYXRhPTNEbnVsbCk6KHQu
ZGF0YVR5cGU9M0QianNvbiIsdC51cmw9M0R0LnVybCx0LmRhdGE9M0RKUz0KT04uc3RyaW5naWZ5
KHQuZGF0YSkpLCQuYWpheCh0KS5kb25lKGZ1bmN0aW9uKHQpe2lmKHR5cGVvZiB0PTNEPTNEInN0
cmluZyIpPQp0cnl7dD0zRHQucmVwbGFjZSgiSW5maW5pdHksIiwnIkluZmluaXR5IiwnKSx0PTNE
alF1ZXJ5LnBhcnNlSlNPTih0KX1jYXRjaCg9Cm4pe2NvbnNvbGUuZGVidWcobil9ZS5zdWNjZXNz
JiZlLnN1Y2Nlc3ModCl9KS5mYWlsKGZ1bmN0aW9uKHQpe3ZhciBuPTNEbnVsbD0KO3RyeXtuPTNE
alF1ZXJ5LnBhcnNlSlNPTih0LnJlc3BvbnNlVGV4dCl9Y2F0Y2gocil7bj0zRHQucmVzcG9uc2VU
ZXh0fWUuZXJyPQpvciYmZS5lcnJvcihuLHQpfSl9ZnVuY3Rpb24gdShlLHQpe3ZhciBuPTNEJCgn
PGRpdiBjbGFzcz0zRCInK2UrJyI+PC9kaXY+Jyk9CjtuLmFwcGVuZFRvKCI6ZXEoMCkiKTt2YXIg
cj0zRG4uY3NzKHQpO3JldHVybiBuLnJlbW92ZSgpLHJ9ZnVuY3Rpb24gYShlKXskKD0KJ2xpbmtb
aHJlZl49M0QiJytlKyciXScpLmxlbmd0aHx8JCgnPGxpbmsgaHJlZj0zRCInK2dhbGF4eV9jb25m
aWcucm9vdCtlKyciPQogcmVsPTNEInN0eWxlc2hlZXQiPicpLmFwcGVuZFRvKCJoZWFkIil9ZnVu
Y3Rpb24gZih0LG4pe3JldHVybiB0P2UuZGVmYXVsdHM9Cih0LG4pOm59ZnVuY3Rpb24gbChlLHQp
e3ZhciBuPTNEIiI7aWYoZT49M0QxZTExKWUvPTNEMWUxMSxuPTNEIlRCIjtlbHNlIGlmKD0KZT49
M0QxZTgpZS89M0QxZTgsbj0zRCJHQiI7ZWxzZSBpZihlPj0zRDFlNSllLz0zRDFlNSxuPTNEIk1C
IjtlbHNlIGlmKGU+PTNEPQoxMDApZS89M0QxMDAsbj0zRCJLQiI7ZWxzZXtpZighKGU+MCkpcmV0
dXJuIjxzdHJvbmc+LTwvc3Ryb25nPiI7ZSo9M0QxMCxuPQo9M0QiYiJ9dmFyIHI9M0RNYXRoLnJv
dW5kKGUpLzEwO3JldHVybiB0P3IrIiAiK246IjxzdHJvbmc+IityKyI8L3N0cm9uZz4gIis9Cm59
ZnVuY3Rpb24gYygpe3JldHVybiJ4IitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJp
bmcoMiw5KX1mdW5jdGlvbj0KIGgoZSl7dmFyIHQ9M0QkKCI8cD48L3A+Iik7cmV0dXJuIHQuYXBw
ZW5kKGUpLHR9ZnVuY3Rpb24gcCgpe3ZhciBlPTNEbmV3IERhPQp0ZSx0PTNEKGUuZ2V0SG91cnMo
KTwxMD8iMCI6IiIpK2UuZ2V0SG91cnMoKSxuPTNEKGUuZ2V0TWludXRlcygpPDEwPyIwIjoiIik9
CitlLmdldE1pbnV0ZXMoKSxyPTNEZS5nZXREYXRlKCkrIi8iKyhlLmdldE1vbnRoKCkrMSkrIi8i
K2UuZ2V0RnVsbFllYXIoKSsiLD0KICIrdCsiOiIrbjtyZXR1cm4gcn1yZXR1cm57Y3NzTG9hZEZp
bGU6YSxjc3NHZXRBdHRyaWJ1dGU6dSxnZXQ6cyxtZXJnZTpmLGJ5PQp0ZXNUb1N0cmluZzpsLHV1
aWQ6Yyx0aW1lOnAsd3JhcDpoLHJlcXVlc3Q6byxzYW5pdGl6ZTpuLHRleHRpZnk6aSx2YWxpZGF0
ZTo9CnIsZGVlcGVhY2g6dH19KSxkZWZpbmUoIm12Yy91aS91aS1wb3J0bGV0IixbInV0aWxzL3V0
aWxzIl0sZnVuY3Rpb24oZSl7dmFyID0KdD0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHt2aXNpYmxl
OiExLG9wdGlvbnNEZWZhdWx0Ont0aXRsZToiIixpY29uOiIiLGJ1dHRvPQpuczpudWxsLGJvZHk6
bnVsbCxzY3JvbGxhYmxlOiEwLG5vcGFkZGluZzohMSxvcGVyYXRpb25zOm51bGwscGxhY2VtZW50
OiJib3Q9CnRvbSIsY2xzOiJ1aS1wb3J0bGV0IixvcGVyYXRpb25zX2ZsdDoicmlnaHQifSwkdGl0
bGU6bnVsbCwkY29udGVudDpudWxsLCRidT0KdHRvbnM6bnVsbCwkb3BlcmF0aW9uczpudWxsLCRo
ZWFkZXI6bnVsbCxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9uPQpzPTNEZS5tZXJn
ZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0
aGlzLm9wdGk9Cm9ucykpLHRoaXMuJGNvbnRlbnQ9M0R0aGlzLiRlbC5maW5kKCIuY29udGVudCIp
LHRoaXMuJHRpdGxlPTNEdGhpcy4kZWwuZmluZD0KKCIucG9ydGxldC10aXRsZS10ZXh0IiksdGhp
cy4kaGVhZGVyPTNEdGhpcy4kZWwuZmluZCgiLnBvcnRsZXQtaGVhZGVyIik7dmFyPQogbj0zRHRo
aXMuJGVsLmZpbmQoIi5wb3J0bGV0LWNvbnRlbnQiKTt0aGlzLm9wdGlvbnMubm9wYWRkaW5nJiYo
bi5jc3MoInBhZGQ9CmluZyIsIjBweCIpLHRoaXMuJGNvbnRlbnQuY3NzKCJwYWRkaW5nIiwiMHB4
IikpLHRoaXMuJGJ1dHRvbnM9M0QkKHRoaXMuZWwpLj0KZmluZCgiLmJ1dHRvbnMiKTtpZih0aGlz
Lm9wdGlvbnMuYnV0dG9ucyl7dmFyIHI9M0R0aGlzOyQuZWFjaCh0aGlzLm9wdGlvbnMuPQpidXR0
b25zLGZ1bmN0aW9uKGUsdCl7dC4kZWwucHJvcCgiaWQiLGUpLHIuJGJ1dHRvbnMuYXBwZW5kKHQu
JGVsKX0pfWVsc2UgdGg9CmlzLiRidXR0b25zLnJlbW92ZSgpO3RoaXMuJG9wZXJhdGlvbnM9M0Qk
KHRoaXMuZWwpLmZpbmQoIi5vcGVyYXRpb25zIik7aWYodD0KaGlzLm9wdGlvbnMub3BlcmF0aW9u
cyl7dmFyIHI9M0R0aGlzOyQuZWFjaCh0aGlzLm9wdGlvbnMub3BlcmF0aW9ucyxmdW5jdGlvPQpu
KGUsdCl7dC4kZWwucHJvcCgiaWQiLGUpLHIuJG9wZXJhdGlvbnMuYXBwZW5kKHQuJGVsKX0pfXRo
aXMub3B0aW9ucy5ib2R5JiY9CnRoaXMuYXBwZW5kKHRoaXMub3B0aW9ucy5ib2R5KX0sYXBwZW5k
OmZ1bmN0aW9uKHQsbil7bj90aGlzLiRjb250ZW50LmFwcGVuZD0KKHQpOnRoaXMuJGNvbnRlbnQu
YXBwZW5kKGUud3JhcCh0KSl9LGNvbnRlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kY29udGVu
PQp0fSxzaG93OmZ1bmN0aW9uKCl7dGhpcy4kZWwuZmFkZUluKCJmYXN0IiksdGhpcy52aXNpYmxl
PTNEITB9LGhpZGU6ZnVuY3Rpb249Cigpe3RoaXMuJGVsLmZhZGVPdXQoImZhc3QiKSx0aGlzLnZp
c2libGU9M0QhMX0sZW5hYmxlQnV0dG9uOmZ1bmN0aW9uKGUpe3RoaT0Kcy4kYnV0dG9ucy5maW5k
KCIjIitlKS5wcm9wKCJkaXNhYmxlZCIsITEpfSxkaXNhYmxlQnV0dG9uOmZ1bmN0aW9uKGUpe3Ro
aXMuPQokYnV0dG9ucy5maW5kKCIjIitlKS5wcm9wKCJkaXNhYmxlZCIsITApfSxoaWRlT3BlcmF0
aW9uOmZ1bmN0aW9uKGUpe3RoaXMuJG89CnBlcmF0aW9ucy5maW5kKCIjIitlKS5oaWRlKCl9LHNo
b3dPcGVyYXRpb246ZnVuY3Rpb24oZSl7dGhpcy4kb3BlcmF0aW9ucy5maT0KbmQoIiMiK2UpLnNo
b3coKX0sc2V0T3BlcmF0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0aGlzLiRvcGVyYXRpb25z
LmZpbmQoPQoiIyIrZSk7bi5vZmYoImNsaWNrIiksbi5vbigiY2xpY2siLHQpfSx0aXRsZTpmdW5j
dGlvbihlKXt2YXIgdD0zRHRoaXMuJHRpdGw9CmU7cmV0dXJuIGUmJnQuaHRtbChlKSx0Lmh0bWwo
KX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PTNEJzxkaXYgaWQ9M0QiJz0KK2UuaWQrJyIg
Y2xhc3M9M0QiJytlLmNscysnIj4nO3JldHVybiBlLnRpdGxlJiYodCs9M0QnPGRpdiBjbGFzcz0z
RCJwb3J0bGV0PQotaGVhZGVyIj48ZGl2IGNsYXNzPTNEIm9wZXJhdGlvbnMiIHN0eWxlPTNEImZs
b2F0OiAnK2Uub3BlcmF0aW9uc19mbHQrJzsiPjw9Ci9kaXY+JysnPGRpdiBjbGFzcz0zRCJwb3J0
bGV0LXRpdGxlIj4nLGUuaWNvbiYmKHQrPTNEJzxpIGNsYXNzPTNEImljb24gZmEgJz0KK2UuaWNv
bisnIj4mbmJzcDs8L2k+JyksdCs9M0QnPHNwYW4gY2xhc3M9M0QicG9ydGxldC10aXRsZS10ZXh0
Ij4nK2UudGl0bGUrPQoiPC9zcGFuPiIrIjwvZGl2PiIrIjwvZGl2PiIpLHQrPTNEJzxkaXYgY2xh
c3M9M0QicG9ydGxldC1jb250ZW50Ij4nLGUucGxhY2U9Cm1lbnQ9M0Q9M0QidG9wIiYmKHQrPTNE
JzxkaXYgY2xhc3M9M0QiYnV0dG9ucyI+PC9kaXY+JyksdCs9M0QnPGRpdiBjbGFzcz0zRD0KImNv
bnRlbnQiPjwvZGl2PicsZS5wbGFjZW1lbnQ9M0Q9M0QiYm90dG9tIiYmKHQrPTNEJzxkaXYgY2xh
c3M9M0QiYnV0dG9ucyI+PQo8L2Rpdj4nKSx0Kz0zRCI8L2Rpdj48L2Rpdj4iLHR9fSk7cmV0dXJu
e1ZpZXc6dH19KSxkZWZpbmUoIm12Yy91aS91aS1zZWxlY3Q9Ci1kZWZhdWx0IixbInV0aWxzL3V0
aWxzIl0sZnVuY3Rpb24oZSl7dmFyIHQ9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9ucz0K
RGVmYXVsdDp7aWQ6IiIsY2xzOiIiLGVycm9yX3RleHQ6Ik5vIGRhdGEgYXZhaWxhYmxlIix2aXNp
YmxlOiEwLHdhaXQ6ITEsbXVsPQp0aXBsZTohMSxzZWFyY2hhYmxlOiExfSxpbml0aWFsaXplOmZ1
bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVyZ2UodCx0aGk9CnMub3B0aW9uc0RlZmF1bHQp
LHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKSx0aGlzLiRzZWxl
Yz0KdD0zRHRoaXMuJGVsLmZpbmQoIi5zZWxlY3QiKSx0aGlzLiRpY29uPTNEdGhpcy4kZWwuZmlu
ZCgiLmljb24iKSx0aGlzLiRidXR0PQpvbj0zRHRoaXMuJGVsLmZpbmQoIi5idXR0b24iKSx0aGlz
Lm9wdGlvbnMubXVsdGlwbGU/KHRoaXMuJHNlbGVjdC5wcm9wKCJtdWw9CnRpcGxlIiwhMCksdGhp
cy4kc2VsZWN0LmFkZENsYXNzKCJ1aS1zZWxlY3QtbXVsdGlwbGUiKSx0aGlzLiRpY29uLnJlbW92
ZSgpKT0KOnRoaXMuJGVsLmFkZENsYXNzKCJ1aS1zZWxlY3QiKSx0aGlzLnVwZGF0ZSh0aGlzLm9w
dGlvbnMuZGF0YSksdGhpcy5vcHRpb25zPQoudmFsdWUhPTNEPTNEdW5kZWZpbmVkJiZ0aGlzLnZh
bHVlKHRoaXMub3B0aW9ucy52YWx1ZSksdGhpcy5vcHRpb25zLnZpc2libGU9Cnx8dGhpcy5oaWRl
KCksdGhpcy5vcHRpb25zLndhaXQ/dGhpcy53YWl0KCk6dGhpcy5zaG93KCk7dmFyIG49M0R0aGlz
O3RoaXMuJD0Kc2VsZWN0Lm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7bi5fY2hhbmdlKCl9KSx0aGlz
Lm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7bi5fPQpjaGFuZ2UoKX0pfSx2YWx1ZTpmdW5jdGlvbihl
KXtyZXR1cm4gZSE9M0Q9M0R1bmRlZmluZWQmJih0aGlzLiRzZWxlY3QudmFsKGU9CiksdGhpcy4k
c2VsZWN0LnNlbGVjdDImJnRoaXMuJHNlbGVjdC5zZWxlY3QyKCJ2YWwiLGUpKSx0aGlzLiRzZWxl
Y3QudmFsKCl9LD0KZmlyc3Q6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMuJHNlbGVjdC5maW5kKCJv
cHRpb24iKTtyZXR1cm4gZS5sZW5ndGg+MD9lLnZhPQpsKCk6dW5kZWZpbmVkfSx2YWxpZGF0ZTpm
dW5jdGlvbigpe3JldHVybiBlLnZhbGlkYXRlKHRoaXMudmFsdWUoKSl9LHRleHQ6ZnU9Cm5jdGlv
bigpe3JldHVybiB0aGlzLiRzZWxlY3QuZmluZCgib3B0aW9uOnNlbGVjdGVkIikudGV4dCgpfSxz
aG93OmZ1bmN0aW9uKD0KKXt0aGlzLnVud2FpdCgpLHRoaXMuJHNlbGVjdC5zaG93KCksdGhpcy4k
ZWwuc2hvdygpfSxoaWRlOmZ1bmN0aW9uKCl7dGhpcy4kPQplbC5oaWRlKCl9LHdhaXQ6ZnVuY3Rp
b24oKXt0aGlzLiRpY29uLnJlbW92ZUNsYXNzKCksdGhpcy4kaWNvbi5hZGRDbGFzcygiZmE9CiBm
YS1zcGlubmVyIGZhLXNwaW4iKX0sdW53YWl0OmZ1bmN0aW9uKCl7dGhpcy4kaWNvbi5yZW1vdmVD
bGFzcygpLHRoaXMuJGljbz0Kbi5hZGRDbGFzcygiZmEgZmEtY2FyZXQtZG93biIpfSxkaXNhYmxl
ZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRzZWxlY3QuaXMoPQoiOmRpc2FibGVkIil9LGVuYWJs
ZTpmdW5jdGlvbigpe3RoaXMuJHNlbGVjdC5wcm9wKCJkaXNhYmxlZCIsITEpfSxkaXNhYmxlOmY9
CnVuY3Rpb24oKXt0aGlzLiRzZWxlY3QucHJvcCgiZGlzYWJsZWQiLCEwKX0sYWRkOmZ1bmN0aW9u
KGUpe3RoaXMuJHNlbGVjdC5hcD0KcGVuZCh0aGlzLl90ZW1wbGF0ZU9wdGlvbihlKSksdGhpcy5f
cmVmcmVzaCgpfSxkZWw6ZnVuY3Rpb24oZSl7dGhpcy4kc2VsZWN0PQouZmluZCgib3B0aW9uW3Zh
bHVlPTNEIitlKyJdIikucmVtb3ZlKCksdGhpcy4kc2VsZWN0LnRyaWdnZXIoImNoYW5nZSIpLHRo
aXM9Ci5fcmVmcmVzaCgpfSx1cGRhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLiRzZWxlY3Qu
dmFsKCk7dGhpcy4kc2VsZWN0LmZpbj0KZCgib3B0aW9uIikucmVtb3ZlKCk7Zm9yKHZhciBuIGlu
IGUpdGhpcy4kc2VsZWN0LmFwcGVuZCh0aGlzLl90ZW1wbGF0ZU9wdGlvPQpuKGVbbl0pKTt0aGlz
Ll9yZWZyZXNoKCksdGhpcy4kc2VsZWN0LnZhbCh0KSx0aGlzLiRzZWxlY3QudmFsKCl8fHRoaXMu
JHNlbGU9CmN0LnZhbCh0aGlzLmZpcnN0KCkpLHRoaXMub3B0aW9ucy5zZWFyY2hhYmxlJiYodGhp
cy4kYnV0dG9uLmhpZGUoKSx0aGlzLiRzZT0KbGVjdC5zZWxlY3QyKCJkZXN0cm95IiksdGhpcy4k
c2VsZWN0LnNlbGVjdDIoKSl9LHNldE9uQ2hhbmdlOmZ1bmN0aW9uKGUpe3RoPQppcy5vcHRpb25z
Lm9uY2hhbmdlPTNEZX0sZXhpc3RzOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLiRzZWxlY3QuZmlu
ZCgnb3B0aW89Cm5bdmFsdWU9M0QiJytlKyciXScpLmxlbmd0aD4wfSxfY2hhbmdlOmZ1bmN0aW9u
KCl7dGhpcy5vcHRpb25zLm9uY2hhbmdlJiZ0aD0KaXMub3B0aW9ucy5vbmNoYW5nZSh0aGlzLiRz
ZWxlY3QudmFsKCkpfSxfcmVmcmVzaDpmdW5jdGlvbigpe3RoaXMuJHNlbGVjdC5mPQppbmQoIm9w
dGlvblt2YWx1ZT0zRG51bGxdIikucmVtb3ZlKCk7dmFyIGU9M0R0aGlzLiRzZWxlY3QuZmluZCgi
b3B0aW9uIikubGU9Cm5ndGg7ZT0zRD0zRDA/KHRoaXMuZGlzYWJsZSgpLHRoaXMuJHNlbGVjdC5h
cHBlbmQodGhpcy5fdGVtcGxhdGVPcHRpb24oe3ZhbD0KdWU6Im51bGwiLGxhYmVsOnRoaXMub3B0
aW9ucy5lcnJvcl90ZXh0fSkpKTp0aGlzLmVuYWJsZSgpfSxfdGVtcGxhdGVPcHRpb246PQpmdW5j
dGlvbihlKXtyZXR1cm4nPG9wdGlvbiB2YWx1ZT0zRCInK2UudmFsdWUrJyI+JytlLmxhYmVsKyI8
L29wdGlvbj4ifSxfdGU9Cm1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdiBpZD0zRCInK2Uu
aWQrJyI+JysnPHNlbGVjdCBpZD0zRCJzZWxlY3QiIGNsYT0Kc3M9M0Qic2VsZWN0ICcrZS5jbHMr
IiAiK2UuaWQrJyI+PC9zZWxlY3Q+JysnPGRpdiBjbGFzcz0zRCJidXR0b24iPicrJzxpIGNsPQph
c3M9M0QiaWNvbiIvPicrIjwvZGl2PiIrIjwvZGl2PiJ9fSk7cmV0dXJue1ZpZXc6dH19KSxkZWZp
bmUoIm12Yy91aS91aS1zbGk9CmRlciIsWyJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGUpe3ZhciB0
PTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdT0KbHQ6e21pbjpudWxsLG1heDpu
dWxsLHN0ZXA6bnVsbCxwcmVjaXNlOiExLHNwbGl0OjFlNH0saW5pdGlhbGl6ZTpmdW5jdGlvbih0
PQope3ZhciBuPTNEdGhpczt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVm
YXVsdCksdGhpcy5zZXRFbGVtZW49CnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSksdGhp
cy51c2VzbGlkZXI9M0R0aGlzLm9wdGlvbnMubWF4IT0zRD0zRG51bD0KbCYmdGhpcy5vcHRpb25z
Lm1pbiE9M0Q9M0RudWxsJiZ0aGlzLm9wdGlvbnMubWF4PnRoaXMub3B0aW9ucy5taW4sdGhpcy5v
cHRpPQpvbnMuc3RlcD0zRD0zRD0zRG51bGwmJih0aGlzLm9wdGlvbnMuc3RlcD0zRDEsdGhpcy5v
cHRpb25zLnByZWNpc2UmJnRoaXMudXM9CmVzbGlkZXImJih0aGlzLm9wdGlvbnMuc3RlcD0zRCh0
aGlzLm9wdGlvbnMubWF4LXRoaXMub3B0aW9ucy5taW4pL3RoaXMub3B0aT0Kb25zLnNwbGl0KSks
dGhpcy51c2VzbGlkZXI/KHRoaXMuJHNsaWRlcj0zRHRoaXMuJGVsLmZpbmQoIiNzbGlkZXIiKSx0
aGlzLiRzPQpsaWRlci5zbGlkZXIodGhpcy5vcHRpb25zKSx0aGlzLiRzbGlkZXIub24oInNsaWRl
IixmdW5jdGlvbihlLHQpe24udmFsdWUodC49CnZhbHVlKX0pKTp0aGlzLiRlbC5maW5kKCIudWkt
Zm9ybS1zbGlkZXItdGV4dCIpLmNzcygid2lkdGgiLCIxMDAlIiksdGhpcy4kdD0KZXh0PTNEdGhp
cy4kZWwuZmluZCgiI3RleHQiKSx0aGlzLm9wdGlvbnMudmFsdWUhPTNEPTNEdW5kZWZpbmVkJiZ0
aGlzLnZhbHVlPQoodGhpcy5vcHRpb25zLnZhbHVlKSx0aGlzLiR0ZXh0Lm9uKCJjaGFuZ2UiLGZ1
bmN0aW9uKCl7bi52YWx1ZSgkKHRoaXMpLnZhbCg9CikpfSk7dmFyIHI9M0RbXTt0aGlzLiR0ZXh0
Lm9uKCJrZXl1cCIsZnVuY3Rpb24oZSl7cltlLndoaWNoXT0zRCExfSksdGhpcy4kdD0KZXh0Lm9u
KCJrZXlkb3duIixmdW5jdGlvbihlKXt2YXIgdD0zRGUud2hpY2g7clt0XT0zRCEwLHQ9M0Q9M0Q4
fHx0PTNEPTNEOXx8PQp0PTNEPTNEMTN8fHQ9M0Q9M0QzN3x8dD0zRD0zRDM5fHx0Pj0zRDQ4JiZ0
PD0zRDU3fHx0PTNEPTNEMTkwJiYkKHRoaXMpLnZhbCg9CikuaW5kZXhPZigiLiIpPTNEPTNELTEm
Jm4ub3B0aW9ucy5wcmVjaXNlfHx0PTNEPTNEMTg5JiYkKHRoaXMpLnZhbCgpLmluZGV4Tz0KZigi
LSIpPTNEPTNELTF8fHJbOTFdfHxyWzE3XXx8ZXZlbnQucHJldmVudERlZmF1bHQoKX0pfSx2YWx1
ZTpmdW5jdGlvbihlKXtyPQpldHVybiBlIT0zRD0zRHVuZGVmaW5lZCYmKGlzTmFOKGUpJiYoZT0z
RDApLHRoaXMub3B0aW9ucy5tYXghPTNEPTNEbnVsbCYmKGU9Cj0zRE1hdGgubWluKGUsdGhpcy5v
cHRpb25zLm1heCkpLHRoaXMub3B0aW9ucy5taW4hPTNEPTNEbnVsbCYmKGU9M0RNYXRoLm1heD0K
KGUsdGhpcy5vcHRpb25zLm1pbikpLHRoaXMub3B0aW9ucy5vbmNoYW5nZSYmdGhpcy5vcHRpb25z
Lm9uY2hhbmdlKGUpLHRoaXMuPQokc2xpZGVyJiZ0aGlzLiRzbGlkZXIuc2xpZGVyKCJ2YWx1ZSIs
ZSksdGhpcy4kdGV4dC52YWwoZSkpLHRoaXMuJHRleHQudmFsKCk9Cn0sX3RlbXBsYXRlOmZ1bmN0
aW9uKGUpe3JldHVybic8ZGl2IGlkPTNEIicrZS5pZCsnIiBjbGFzcz0zRCJ1aS1mb3JtLXNsaWRl
cj0KIj4nKyc8aW5wdXQgaWQ9M0QidGV4dCIgdHlwZT0zRCJ0ZXh0IiBjbGFzcz0zRCJ1aS1mb3Jt
LXNsaWRlci10ZXh0Ii8+JysnPGRpPQp2IGlkPTNEInNsaWRlciIgY2xhc3M9M0QidWktZm9ybS1z
bGlkZXItZWxlbWVudCIvPicrIjwvZGl2PiJ9fSk7cmV0dXJue1ZpZXc9Cjp0fX0pLGRlZmluZSgi
bXZjL3VpL3VpLW9wdGlvbnMiLFsidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihlKXt2YXIgdD0zREJh
Y2tibz0KbmUuVmlldy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25z
RGVmYXVsdD0zRHt2aXNpYmxlOiEwLGRhPQp0YTpbXSxpZDplLnV1aWQoKSxlcnJvcl90ZXh0OiJO
byBkYXRhIGF2YWlsYWJsZS4iLHdhaXRfdGV4dDoiUGxlYXNlIHdhaXQuLi49CiJ9LHRoaXMub3B0
aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlzLnNldEVsZW1lbnQoIjxk
aXYvPiIpLD0KdGhpcy4kbWVzc2FnZT0zRCQoIjxkaXYvPiIpLHRoaXMuJG9wdGlvbnM9M0QkKHRo
aXMuX3RlbXBsYXRlKHQpKSx0aGlzLiRlbC5hPQpwcGVuZCh0aGlzLiRtZXNzYWdlKSx0aGlzLiRl
bC5hcHBlbmQodGhpcy4kb3B0aW9ucyksdGhpcy5vcHRpb25zLnZpc2libGV8fHQ9Cmhpcy4kZWwu
aGlkZSgpLHRoaXMudXBkYXRlKHRoaXMub3B0aW9ucy5kYXRhKSx0aGlzLm9wdGlvbnMudmFsdWUh
PTNEPTNEdW5kZT0KZmluZWQmJnRoaXMudmFsdWUodGhpcy5vcHRpb25zLnZhbHVlKTt2YXIgbj0z
RHRoaXM7dGhpcy5vbigiY2hhbmdlIixmdW5jdGlvPQpuKCl7bi5fY2hhbmdlKCl9KX0sdXBkYXRl
OmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy5fZ2V0VmFsdWUoKTt0aGlzLiRvcHRpb249CnMuZW1w
dHkoKTtpZih0aGlzLl90ZW1wbGF0ZU9wdGlvbnMpdGhpcy4kb3B0aW9ucy5hcHBlbmQodGhpcy5f
dGVtcGxhdGVPcHRpbz0KbnMoZSkpO2Vsc2UgZm9yKHZhciBuIGluIGUpe3ZhciByPTNEJCh0aGlz
Ll90ZW1wbGF0ZU9wdGlvbihlW25dKSk7ci5hZGRDbGFzPQpzKCJ1aS1vcHRpb24iKSx0aGlzLiRv
cHRpb25zLmFwcGVuZChyKX12YXIgaT0zRHRoaXM7dGhpcy4kZWwuZmluZCgiaW5wdXQiKS49Cm9u
KCJjaGFuZ2UiLGZ1bmN0aW9uKCl7aS52YWx1ZShpLl9nZXRWYWx1ZSgpKSxpLl9jaGFuZ2UoKX0p
LHRoaXMuX3JlZnJlc2goKT0KLHRoaXMudmFsdWUodCl9LHZhbHVlOmZ1bmN0aW9uKGUpe2lmKGUh
PTNEPTNEdW5kZWZpbmVkKXtlIGluc3RhbmNlb2YgQXJyYXl8PQp8KGU9M0RbZV0pLHRoaXMuJGVs
LmZpbmQoImlucHV0IikucHJvcCgiY2hlY2tlZCIsITEpO2Zvcih2YXIgdCBpbiBlKXRoaXMuJGU9
CmwuZmluZCgnaW5wdXRbdmFsdWU9M0QiJytlW3RdKyciXScpLmZpcnN0KCkucHJvcCgiY2hlY2tl
ZCIsITApfXJldHVybiB0aGlzLj0KX2dldFZhbHVlKCl9LGV4aXN0czpmdW5jdGlvbihlKXtpZihl
IT0zRD0zRHVuZGVmaW5lZCl7ZSBpbnN0YW5jZW9mIEFycmF5fHwoPQplPTNEW2VdKTtmb3IodmFy
IHQgaW4gZSlpZih0aGlzLiRlbC5maW5kKCdpbnB1dFt2YWx1ZT0zRCInK2VbdF0rJyJdJykubGVu
Z3Q9Cmg+MClyZXR1cm4hMH1yZXR1cm4hMX0sZmlyc3Q6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMu
JGVsLmZpbmQoImlucHV0Iik7cmV0dT0Kcm4gZS5sZW5ndGg+MD9lLnZhbCgpOnVuZGVmaW5lZH0s
dmFsaWRhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gZS52YWxpZGF0ZSh0aGlzPQoudmFsdWUoKSl9LHdh
aXQ6ZnVuY3Rpb24oKXt0aGlzLl9zaXplKCk9M0Q9M0QwJiYodGhpcy5fbWVzc2FnZVNob3codGhp
cy5vcHQ9CmlvbnMud2FpdF90ZXh0LCJpbmZvIiksdGhpcy4kb3B0aW9ucy5oaWRlKCkpfSx1bndh
aXQ6ZnVuY3Rpb24oKXt0aGlzLl9tZXNzYT0KZ2VIaWRlKCksdGhpcy5fcmVmcmVzaCgpfSxfY2hh
bmdlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9uY2hhbmdlJiZ0aGlzLm9wPQp0aW9ucy5vbmNo
YW5nZSh0aGlzLl9nZXRWYWx1ZSgpKX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt0aGlzLl9zaXplKCk9
M0Q9M0QwPyg9CnRoaXMuX21lc3NhZ2VTaG93KHRoaXMub3B0aW9ucy5lcnJvcl90ZXh0LCJkYW5n
ZXIiKSx0aGlzLiRvcHRpb25zLmhpZGUoKSk6KD0KdGhpcy5fbWVzc2FnZUhpZGUoKSx0aGlzLiRv
cHRpb25zLmNzcygiZGlzcGxheSIsImlubGluZS1ibG9jayIpKX0sX2dldFZhbHVlPQo6ZnVuY3Rp
b24oKXt2YXIgZT0zRHRoaXMuJGVsLmZpbmQoIjpjaGVja2VkIik7aWYoZS5sZW5ndGg9M0Q9M0Qw
KXJldHVybiJudWw9CmwiO2lmKHRoaXMub3B0aW9ucy5tdWx0aXBsZSl7dmFyIHQ9M0RbXTtyZXR1
cm4gZS5lYWNoKGZ1bmN0aW9uKCl7dC5wdXNoKCQodD0KaGlzKS52YWwoKSl9KSx0fXJldHVybiBl
LnZhbCgpfSxfc2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRlbC5maW5kKCIudWktPQpvcHRp
b24iKS5sZW5ndGh9LF9tZXNzYWdlU2hvdzpmdW5jdGlvbihlLHQpe3RoaXMuJG1lc3NhZ2Uuc2hv
dygpLHRoaXMuJG1lc3M9CmFnZS5yZW1vdmVDbGFzcygpLHRoaXMuJG1lc3NhZ2UuYWRkQ2xhc3Mo
InVpLW1lc3NhZ2UgYWxlcnQgYWxlcnQtIit0KSx0aGlzLj0KJG1lc3NhZ2UuaHRtbChlKX0sX21l
c3NhZ2VIaWRlOmZ1bmN0aW9uKCl7dGhpcy4kbWVzc2FnZS5oaWRlKCl9LF90ZW1wbGF0ZTpmPQp1
bmN0aW9uKCl7cmV0dXJuJzxkaXYgY2xhc3M9M0QidWktb3B0aW9ucyIvPid9fSksbj0zRHt9O24u
Vmlldz0zRHQuZXh0ZW5kKHs9CmluaXRpYWxpemU6ZnVuY3Rpb24oZSl7dC5wcm90b3R5cGUuaW5p
dGlhbGl6ZS5jYWxsKHRoaXMsZSl9LF90ZW1wbGF0ZU9wdGlvbj0KOmZ1bmN0aW9uKGUpe3JldHVy
bic8ZGl2PjxpbnB1dCB0eXBlPTNEInJhZGlvIiBuYW1lPTNEIicrdGhpcy5vcHRpb25zLmlkKyci
PQogdmFsdWU9M0QiJytlLnZhbHVlKyciLz4nK2UubGFiZWwrIjxicj4iKyI8L2Rpdj4ifX0pO3Zh
ciByPTNEe307ci5WaWV3PTNEdC49CmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbihlKXtlLm11
bHRpcGxlPTNEITAsdC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKD0KdGhpcyxlKX0sX3RlbXBs
YXRlT3B0aW9uOmZ1bmN0aW9uKGUpe3JldHVybic8ZGl2PjxpbnB1dCB0eXBlPTNEImNoZWNrYm94
IiBuPQphbWU9M0QiJyt0aGlzLm9wdGlvbnMuaWQrJyIgdmFsdWU9M0QiJytlLnZhbHVlKyciLz4n
K2UubGFiZWwrIjxicj4iKyI8L2Rpdj49CiJ9fSk7dmFyIGk9M0R7fTtyZXR1cm4gaS5WaWV3PTNE
dC5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oZSl7dC5wcm90b3R5cD0KZS5pbml0aWFsaXpl
LmNhbGwodGhpcyxlKX0sdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPTNEPTNEdW5kZWZpbmVk
JiYodGhpPQpzLiRlbC5maW5kKCJpbnB1dCIpLnByb3AoImNoZWNrZWQiLCExKSx0aGlzLiRlbC5m
aW5kKCJsYWJlbCIpLnJlbW92ZUNsYXNzKCI9CmFjdGl2ZSIpLHRoaXMuJGVsLmZpbmQoJ1t2YWx1
ZT0zRCInK2UrJyJdJykucHJvcCgiY2hlY2tlZCIsITApLmNsb3Nlc3QoImxhYj0KZWwiKS5hZGRD
bGFzcygiYWN0aXZlIikpLHRoaXMuX2dldFZhbHVlKCl9LF90ZW1wbGF0ZU9wdGlvbjpmdW5jdGlv
bihlKXt2YXIgPQp0PTNEJzxsYWJlbCBjbGFzcz0zRCJidG4gYnRuLWRlZmF1bHQiPic7cmV0dXJu
IGUuaWNvbiYmKHQrPTNEJzxpIGNsYXNzPTNEImY9CmEgJytlLmljb24rJyIvPicpLHQrPTNEJzxp
bnB1dCB0eXBlPTNEInJhZGlvIiBuYW1lPTNEIicrdGhpcy5vcHRpb25zLmlkKyciID0KdmFsdWU9
M0QiJytlLnZhbHVlKyciPicrZS5sYWJlbCsiPC9sYWJlbD4iLHR9LF90ZW1wbGF0ZTpmdW5jdGlv
bigpe3JldHVybic8PQpkaXYgY2xhc3M9M0QiYnRuLWdyb3VwIHVpLXJhZGlvYnV0dG9uIiBkYXRh
LXRvZ2dsZT0zRCJidXR0b25zIi8+J319KSx7QmFzZTo9CnQsUmFkaW86bixSYWRpb0J1dHRvbjpp
LENoZWNrYm94OnJ9fSksZGVmaW5lKCJtdmMvdWkvdWktZHJpbGxkb3duIixbInV0aWxzLz0KdXRp
bHMiLCJtdmMvdWkvdWktb3B0aW9ucyJdLGZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0LkJhc2UuZXh0
ZW5kKHtpbml0aWFsaXplPQo6ZnVuY3Rpb24oZSl7dGhpcy5kaXNwbGF5PTNEZS5kaXNwbGF5fHwi
Y2hlY2tib3giLGUubXVsdGlwbGU9M0R0aGlzLmRpc3BsYXk9Cj0zRD0zRCJjaGVja2JveCIsdC5C
YXNlLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyxlKX0sX3RlbXBsYXRlT3B0aW9uOj0K
ZnVuY3Rpb24oZSx0LG4pe3JldHVybic8ZGl2PjxpbnB1dCBuYW1lPTNEIicrdGhpcy5vcHRpb25z
LmlkKyciIGNsYXNzPTNEInVpPQotb3B0aW9uIiB0eXBlPTNEIicrdGhpcy5kaXNwbGF5KyciIHZh
bHVlPTNEIicrdCsnIj4nK2UrIjxkaXYvPiJ9LF90ZW1wbGF0ZU89CnB0aW9uczpmdW5jdGlvbihl
KXtmdW5jdGlvbiBuKGUsdCl7ZnVuY3Rpb24gbihuKXtuPyh0LmZhZGVJbigiZmFzdCIpLGUucmVt
bz0KdmVDbGFzcygidG9nZ2xlLWV4cGFuZCIpLGUuYWRkQ2xhc3MoInRvZ2dsZSIpLGUuaXNfZXhw
YW5kZWQ9M0QhMCk6KHQuaGlkZSgpPQosZS5yZW1vdmVDbGFzcygidG9nZ2xlIiksZS5hZGRDbGFz
cygidG9nZ2xlLWV4cGFuZCIpLGUuaXNfZXhwYW5kZWQ9M0QhMSl9ZS49Cm9uKCJjbGljayIsZnVu
Y3Rpb24oKXtuKCFlLmlzX2V4cGFuZGVkKX0pfWZ1bmN0aW9uIHIoZSxzKXtmb3IoaSBpbiBzKXt2
YXIgbz0KPTNEc1tpXSx1PTNEby5vcHRpb25zLmxlbmd0aD4wLGE9M0QkKCI8ZGl2Lz4iKTtpZih1
KXt2YXIgZj0zRCQoJzxzcGFuIGNsYXNzPQo9M0QidWktZHJpbGxkb3duLWJ1dHRvbiBmb3JtLXRv
Z2dsZSBpY29uLWJ1dHRvbiB0b2dnbGUtZXhwYW5kIiBzdHlsZT0zRCJwb3M9Cml0aW9uOiByZWxh
dGl2ZTsgdG9wOiAycHg7Ii8+JyksbD0zRCQoIjxkaXYvPiIpO2wuYXBwZW5kKGYpLGwuYXBwZW5k
KHQuX3RlbT0KcGxhdGVPcHRpb24oby5uYW1lLG8udmFsdWUpKSxhLmFwcGVuZChsKTt2YXIgYz0z
RCQoJzxkaXYgc3R5bGU9M0QiZGlzcGxheTogPQpub25lOyBtYXJnaW4tbGVmdDogMjVweDsiLz4n
KTtyKGMsby5vcHRpb25zKSxhLmFwcGVuZChjKSxuKGYsYyl9ZWxzZSBhLmFwcGU9Cm5kKHQuX3Rl
bXBsYXRlT3B0aW9uKG8ubmFtZSxvLnZhbHVlKSk7ZS5hcHBlbmQoYSl9fXZhciB0PTNEdGhpcyxz
PTNEJCgiPGRpdj0KLz4iKTtyZXR1cm4gcihzLGUpLHN9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXty
ZXR1cm4nPGRpdiBjbGFzcz0zRCJ1aS1vcHRpb25zPQogZHJpbGxkb3duLWNvbnRhaW5lciIgaWQ9
M0QiJytlLmlkKyciLz4nfX0pO3JldHVybntWaWV3Om59fSksZGVmaW5lKCJtdmMvdWk9Ci91aS1i
dXR0b24tbWVudSIsWyJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGUpe3JldHVybiBCYWNrYm9uZS5W
aWV3LmV4dGVuZCh7bz0KcHRpb25zRGVmYXVsdDp7aWQ6IiIsdGl0bGU6IiIsZmxvYXRpbmc6InJp
Z2h0IixpY29uOm51bGwsb25jbGljazpudWxsLGNsczoiPQp1aS1idXR0b24taWNvbiB1aS1idXR0
b24tbWVudSIsdG9vbHRpcDoiIix0YXJnZXQ6IiIsaHJlZjoiIixvbnVubG9hZDpudWxsLHY9Cmlz
aWJsZTohMCx0YWc6IiJ9LCRtZW51Om51bGwsaW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLm9w
dGlvbnM9M0RlLm1lcmdlKD0KdCx0aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlzLnNldEVsZW1lbnQo
JCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKSk7dmFyPQogbj0zRCQodGhpcy5lbCkuZmlu
ZCgiLnJvb3QiKSxyPTNEdGhpcztuLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7JCgiLnRvb2x0aXA9
CiIpLmhpZGUoKSxlLnByZXZlbnREZWZhdWx0KCksci5vcHRpb25zLm9uY2xpY2smJnIub3B0aW9u
cy5vbmNsaWNrKCl9KSx0aGlzLj0Kb3B0aW9ucy52aXNpYmxlfHx0aGlzLmhpZGUoKSxuLnRvb2x0
aXAoe3RpdGxlOnQudG9vbHRpcCxwbGFjZW1lbnQ6ImJvdHRvbSJ9PQopfSxzaG93OmZ1bmN0aW9u
KCl7JCh0aGlzLmVsKS5zaG93KCl9LGhpZGU6ZnVuY3Rpb24oKXskKHRoaXMuZWwpLmhpZGUoKX0s
YWQ9CmRNZW51OmZ1bmN0aW9uKHQpe3ZhciBuPTNEe3RpdGxlOiIiLHRhcmdldDoiIixocmVmOiIi
LG9uY2xpY2s6bnVsbCxkaXZpZGVyOj0KITEsaWNvbjpudWxsLGNsczoiYnV0dG9uLW1lbnUgYnRu
LWdyb3VwIn07bj0zRGUubWVyZ2UodCxuKSx0aGlzLiRtZW51fHwoJCh0PQpoaXMuZWwpLmFwcGVu
ZCh0aGlzLl90ZW1wbGF0ZU1lbnUoKSksdGhpcy4kbWVudT0zRCQodGhpcy5lbCkuZmluZCgiLm1l
bnUiKSk9Cjt2YXIgcj0zRCQodGhpcy5fdGVtcGxhdGVNZW51SXRlbShuKSk7ci5vbigiY2xpY2si
LGZ1bmN0aW9uKGUpe2UucHJldmVudERlZj0KYXVsdCgpLG4ub25jbGljayYmbi5vbmNsaWNrKCl9
KSx0aGlzLiRtZW51LmFwcGVuZChyKSxuLmRpdmlkZXImJnRoaXMuJG1lbnUuPQphcHBlbmQoJCh0
aGlzLl90ZW1wbGF0ZURpdmlkZXIoKSkpfSxfdGVtcGxhdGVNZW51SXRlbTpmdW5jdGlvbihlKXt2
YXIgdD0zRCc9CjxsaT48YSBjbGFzcz0zRCJkcm9wZG93bi1pdGVtIiBocmVmPTNEIicrZS5ocmVm
KyciIHRhcmdldD0zRCInK2UudGFyZ2V0KyciPj0KJztyZXR1cm4gZS5pY29uJiYodCs9M0QnPGkg
Y2xhc3M9M0QiZmEgJytlLmljb24rJyI+PC9pPicpLHQrPTNEIiAiK2UudGl0bGUrPQoiPC9hPiIr
IjwvbGk+Iix0fSxfdGVtcGxhdGVNZW51OmZ1bmN0aW9uKCl7cmV0dXJuJzx1bCBjbGFzcz0zRCJt
ZW51IGRyb3Bkb3c9Cm4tbWVudSBwdWxsLXJpZ2h0IiByb2xlPTNEIm1lbnUiPjwvdWw+J30sX3Rl
bXBsYXRlRGl2aWRlcjpmdW5jdGlvbigpe3JldHVybj0KJzxsaSBjbGFzcz0zRCJkaXZpZGVyIj48
L2xpPid9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXt2YXIgdD0zRCIiLG49M0QiIjtlLnRpPQp0bGU/
dD0zRCJ3aWR0aDogYXV0bzsiOm49M0QibWFyZ2luOiAwcHg7Ijt2YXIgcj0zRCc8ZGl2IGlkPTNE
IicrZS5pZCsnIiBzdHk9CmxlPTNEImZsb2F0OiAnK2UuZmxvYXRpbmcrIjsgIit0KyciIGNsYXNz
PTNEImRyb3Bkb3duICcrZS5jbHMrJyI+JysnPGRpdiBjbD0KYXNzPTNEInJvb3QgYnV0dG9uIGRy
b3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9M0QiZHJvcGRvd24iIHN0eWxlPTNEIicrbisnPQoi
PicrJzxpIGNsYXNzPTNEImljb24gZmEgJytlLmljb24rJyIvPic7cmV0dXJuIGUudGl0bGUmJihy
Kz0zRCcmbmJzcDs8c3BhbiA9CmNsYXNzPTNEInRpdGxlIj4nK2UudGl0bGUrIjwvc3Bhbj4iKSxy
Kz0zRCI8L2Rpdj48L2Rpdj4iLHJ9fSl9KSxkZWZpbmUoIm12Yz0KL3VpL3VpLW1pc2MiLFsidXRp
bHMvdXRpbHMiLCJtdmMvdWkvdWktc2VsZWN0LWRlZmF1bHQiLCJtdmMvdWkvdWktc2xpZGVyIiwi
PQptdmMvdWkvdWktb3B0aW9ucyIsIm12Yy91aS91aS1kcmlsbGRvd24iLCJtdmMvdWkvdWktYnV0
dG9uLW1lbnUiLCJtdmMvdWkvdWk9Ci1tb2RhbCJdLGZ1bmN0aW9uKGUsdCxuLHIsaSxzLG8pe3Zh
ciB1PTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdT0KbHQ6e3VybDoiIixjbHM6
IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMu
b3B0PQppb25zRGVmYXVsdCksdGhpcy5zZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0
aW9ucykpfSxfdGVtcGxhdGU6ZnVuY3Q9CmlvbihlKXtyZXR1cm4nPGltZyBjbGFzcz0zRCJ1aS1p
bWFnZSAnK2UuY2xzKyciIHNyYz0zRCInK2UudXJsKyciLz4nfX0pLGE9Cj0zREJhY2tib25lLlZp
ZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7dGl0bGU6IiIsY2xzOiIifSxpbml0aWFsaXplOmZ1
bmN0aT0Kb24odCl7dGhpcy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQp
LHRoaXMuc2V0RWxlbWVudCh0aGlzLl90PQplbXBsYXRlKHRoaXMub3B0aW9ucykpfSx0aXRsZTpm
dW5jdGlvbihlKXt0aGlzLiRlbC5odG1sKGUpfSxfdGVtcGxhdGU6ZnVuY3Q9CmlvbihlKXtyZXR1
cm4nPGxhYmVsIGNsYXNzPTNEInVpLWxhYmVsICcrZS5jbHMrJyI+JytlLnRpdGxlKyI8L2xhYmVs
PiJ9LHZhbD0KdWU6ZnVuY3Rpb24oKXtyZXR1cm4gb3B0aW9ucy50aXRsZX19KSxmPTNEQmFja2Jv
bmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhPQp1bHQ6e2Zsb2F0aW5nOiJyaWdodCIsaWNvbjoi
Iix0b29sdGlwOiIiLHBsYWNlbWVudDoiYm90dG9tIix0aXRsZToiIixjbHM6IiI9Cn0saW5pdGlh
bGl6ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVm
YXVsdCksdGhpcz0KLnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSksJCh0
aGlzLmVsKS50b29sdGlwKHt0aXRsZTp0LnRvb2x0PQppcCxwbGFjZW1lbnQ6ImJvdHRvbSJ9KX0s
X3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3JldHVybic8ZGl2PjxzcGFuIGNsYXNzPTNEImY9CmEgJytl
Lmljb24rJyIgY2xhc3M9M0QidWktaWNvbiIvPiZuYnNwOycrZS50aXRsZSsiPC9kaXY+In19KSxs
PTNEQmFja2JvbmUuVj0KaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e2lkOm51bGwsdGl0bGU6
IiIsZmxvYXRpbmc6InJpZ2h0IixjbHM6InVpLWJ1dHRvPQpuIGJ0biBidG4tZGVmYXVsdCIsaWNv
bjoiIn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQ9Cix0
aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlzLnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5v
cHRpb25zKSksJCh0aGlzLj0KZWwpLm9uKCJjbGljayIsZnVuY3Rpb24oKXskKCIudG9vbHRpcCIp
LmhpZGUoKSx0Lm9uY2xpY2smJnQub25jbGljaygpfSksJCh0PQpoaXMuZWwpLnRvb2x0aXAoe3Rp
dGxlOnQudG9vbHRpcCxwbGFjZW1lbnQ6ImJvdHRvbSJ9KX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGU9
Cil7dmFyIHQ9M0QnPGJ1dHRvbiBpZD0zRCInK2UuaWQrJyIgdHlwZT0zRCJzdWJtaXQiIHN0eWxl
PTNEImZsb2F0OiAnK2UuZmxvYT0KdGluZysnOyIgdHlwZT0zRCJidXR0b24iIGNsYXNzPTNEIicr
ZS5jbHMrJyI+JztyZXR1cm4gZS5pY29uJiYodCs9M0QnPGkgY2xhPQpzcz0zRCJpY29uIGZhICcr
ZS5pY29uKyciPjwvaT4mbmJzcDsnKSx0Kz0zRGUudGl0bGUrIjwvYnV0dG9uPiIsdH19KSxjPTNE
QmE9CmNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e2lkOm51bGwsdGl0bGU6IiIs
ZmxvYXRpbmc6InJpZ2h0IixjbHM6Ij0KdWktYnV0dG9uLWljb24iLGljb246IiIsdG9vbHRpcDoi
IixvbmNsaWNrOm51bGx9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpPQpzLm9wdGlvbnM9M0Rl
Lm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGVtZW50KHRoaXMuX3RlbXBs
YXRlKHQ9Cmhpcy5vcHRpb25zKSksdGhpcy4kYnV0dG9uPTNEdGhpcy4kZWwuZmluZCgiLmJ1dHRv
biIpO3ZhciBuPTNEdGhpczskKHRoaXMuZT0KbCkub24oImNsaWNrIixmdW5jdGlvbigpeyQoIi50
b29sdGlwIikuaGlkZSgpLHQub25jbGljayYmIW4uZGlzYWJsZWQmJnQub25jPQpsaWNrKCl9KSwk
KHRoaXMuZWwpLnRvb2x0aXAoe3RpdGxlOnQudG9vbHRpcCxwbGFjZW1lbnQ6ImJvdHRvbSJ9KX0s
ZGlzYWJsZTo9CmZ1bmN0aW9uKCl7dGhpcy4kYnV0dG9uLmFkZENsYXNzKCJkaXNhYmxlZCIpLHRo
aXMuZGlzYWJsZWQ9M0QhMH0sZW5hYmxlOmZ1bj0KY3Rpb24oKXt0aGlzLiRidXR0b24ucmVtb3Zl
Q2xhc3MoImRpc2FibGVkIiksdGhpcy5kaXNhYmxlZD0zRCExfSxzZXRJY29uOmZ1PQpuY3Rpb24o
ZSl7dGhpcy4kKCJpIikucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmljb24pLmFkZENsYXNzKGUp
LHRoaXMub3B0aW89Cm5zLmljb249M0RlfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9M0Qi
IjtlLnRpdGxlJiYodD0zRCJ3aWR0aDogYXV0bzsiKT0KO3ZhciBuPTNEJzxkaXYgaWQ9M0QiJytl
LmlkKyciIHN0eWxlPTNEImZsb2F0OiAnK2UuZmxvYXRpbmcrIjsgIit0KyciIGNsYXNzPQo9M0Qi
JytlLmNscysnIj4nO3JldHVybiBlLnRpdGxlP24rPTNEJzxkaXYgY2xhc3M9M0QiYnV0dG9uIj48
aSBjbGFzcz0zRCJpY289Cm4gZmEgJytlLmljb24rJyIvPiZuYnNwOycrJzxzcGFuIGNsYXNzPTNE
InRpdGxlIj4nK2UudGl0bGUrIjwvc3Bhbj4iKyI8L2Rpdj0KPiI6bis9M0QnPGkgY2xhc3M9M0Qi
aWNvbiBmYSAnK2UuaWNvbisnIi8+JyxuKz0zRCI8L2Rpdj4iLG59fSksaD0zREJhY2tib25lPQou
Vmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0Ont0aXRsZToiIixjbHM6IiJ9LGluaXRpYWxpemU6
ZnVuY3Rpb24odCl7dGhpcy49Cm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVs
dCksdGhpcy5zZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRlKHRoaT0Kcy5vcHRpb25zKSksJCh0aGlz
LmVsKS5vbigiY2xpY2siLHQub25jbGljayl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4n
PQo8ZGl2PjxhIGhyZWY9M0QiamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0zRCJ1aS1hbmNob3Ig
JytlLmNscysnIj4nK2UudGl0bGU9CisiPC9hPjwvZGl2PiJ9fSkscD0zREJhY2tib25lLlZpZXcu
ZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7bWVzc2FnZTpudWxsLHN0YT0KdHVzOiJpbmZvIixwZXJz
aXN0ZW50OiExfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVyZ2Uo
dCx0PQpoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCgiPGRpdj48L2Rpdj4iKSx0
aGlzLm9wdGlvbnMubWVzc2FnZSYmdGg9CmlzLnVwZGF0ZSh0aGlzLm9wdGlvbnMpfSx1cGRhdGU6
ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMubz0KcHRpb25zRGVmYXVs
dCk7aWYodC5tZXNzYWdlIT0zRCIiKXt0aGlzLiRlbC5odG1sKHRoaXMuX3RlbXBsYXRlKHRoaXMu
b3B0aW9uPQpzKSksdGhpcy4kZWwuZmluZCgiLmFsZXJ0IikuYXBwZW5kKHQubWVzc2FnZSksdGhp
cy4kZWwuZmFkZUluKCksdGhpcy50aW1lb3U9CnQmJndpbmRvdy5jbGVhclRpbWVvdXQodGhpcy50
aW1lb3V0KTtpZighdC5wZXJzaXN0ZW50KXt2YXIgbj0zRHRoaXM7dGhpcy50aT0KbWVvdXQ9M0R3
aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe24uJGVsLmlzKCI6dmlzaWJsZSIpP24uJGVsLmZh
ZGVPdXQoKTpuPQouJGVsLmhpZGUoKX0sM2UzKX19ZWxzZSB0aGlzLiRlbC5mYWRlT3V0KCl9LF90
ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGQ9Cml2IGNsYXNzPTNEInVpLW1lc3NhZ2UgYWxl
cnQgYWxlcnQtJytlLnN0YXR1cysnIi8+J319KSxkPTNEQmFja2JvbmUuVmlldy5leD0KdGVuZCh7
b3B0aW9uc0RlZmF1bHQ6e29uY2xpY2s6bnVsbCxzZWFyY2h3b3JkOiIifSxpbml0aWFsaXplOmZ1
bmN0aW9uKHQpe3RoPQppcy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQp
LHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSg9CnRoaXMub3B0aW9ucykpO3ZhciBuPTNE
dGhpczt0aGlzLm9wdGlvbnMub25jbGljayYmdGhpcy4kZWwub24oInN1Ym1pdCIsZnVuYz0KdGlv
bihlKXt2YXIgdD0zRG4uJGVsLmZpbmQoIiNzZWFyY2giKTtuLm9wdGlvbnMub25jbGljayh0LnZh
bCgpKX0pfSxfdGVtcGxhPQp0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdiBjbGFzcz0zRCJ1aS1z
ZWFyY2giPjxmb3JtIG9uc3VibWl0PTNEInJldHVybiBmYWw9CnNlOyI+PGlucHV0IGlkPTNEInNl
YXJjaCIgY2xhc3M9M0QiZm9ybS1jb250cm9sIGlucHV0LXNtIiB0eXBlPTNEInRleHQiIG5hbT0K
ZT0zRCJzZWFyY2giIHBsYWNlaG9sZGVyPTNEIlNlYXJjaC4uLiIgdmFsdWU9M0QiJytlLnNlYXJj
aHdvcmQrJyI+JysnPGJ1dHRvPQpuIHR5cGU9M0Qic3VibWl0IiBjbGFzcz0zRCJidG4gc2VhcmNo
LWJ0biI+JysnPGkgY2xhc3M9M0QiZmEgZmEtc2VhcmNoIj48L2k9Cj4nKyI8L2J1dHRvbj4iKyI8
L2Zvcm0+IisiPC9kaXY+In19KSx2PTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZh
dT0KbHQ6e3R5cGU6InRleHQiLHBsYWNlaG9sZGVyOiIiLGRpc2FibGVkOiExLHZpc2libGU6ITAs
Y2xzOiIiLGFyZWE6ITF9LGluaXRpPQphbGl6ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0Rl
Lm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGU9Cm1lbnQodGhpcy5fdGVt
cGxhdGUodGhpcy5vcHRpb25zKSksdGhpcy5vcHRpb25zLnZhbHVlIT0zRD0zRHVuZGVmaW5lZCYm
dGhpcz0KLnZhbHVlKHRoaXMub3B0aW9ucy52YWx1ZSksdGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0
aGlzLiRlbC5wcm9wKCJkaXNhYmxlZCIsPQohMCksdGhpcy5vcHRpb25zLnZpc2libGV8fHRoaXMu
JGVsLmhpZGUoKTt2YXIgbj0zRHRoaXM7dGhpcy4kZWwub24oImlucHV0Iiw9CmZ1bmN0aW9uKCl7
bi5vcHRpb25zLm9uY2hhbmdlJiZuLm9wdGlvbnMub25jaGFuZ2Uobi4kZWwudmFsKCkpfSl9LHZh
bHVlOmZ1bj0KY3Rpb24oZSl7cmV0dXJuIGUhPTNEPTNEdW5kZWZpbmVkJiZ0aGlzLiRlbC52YWwo
ZSksdGhpcy4kZWwudmFsKCl9LF90ZW1wbGF0PQplOmZ1bmN0aW9uKGUpe3JldHVybiBlLmFyZWE/
Jzx0ZXh0YXJlYSBpZD0zRCInK2UuaWQrJyIgY2xhc3M9M0QidWktdGV4dGFyZWE9CiAnK2UuY2xz
KyciPjwvdGV4dGFyZWE+JzonPGlucHV0IGlkPTNEIicrZS5pZCsnIiB0eXBlPTNEIicrZS50eXBl
KyciIHZhbHVlPQo9M0QiJytlLnZhbHVlKyciIHBsYWNlaG9sZGVyPTNEIicrZS5wbGFjZWhvbGRl
cisnIiBjbGFzcz0zRCJ1aS1pbnB1dCAnK2UuY2w9CnMrJyI+J319KSxtPTNEQmFja2JvbmUuVmll
dy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oZSl7dGhpcy5vcHRpb25zPTNEZT0KLHRoaXMu
c2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKSx0aGlzLm9wdGlvbnMudmFs
dWUhPTNEPTNEdW5kPQplZmluZWQmJnRoaXMudmFsdWUodGhpcy5vcHRpb25zLnZhbHVlKX0sdmFs
dWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPTNEPTNEdW49CmRlZmluZWQmJnRoaXMuJCgiaGlkZGVu
IikudmFsKGUpLHRoaXMuJCgiaGlkZGVuIikudmFsKCl9LF90ZW1wbGF0ZTpmdW5jdGlvbj0KKGUp
e3ZhciB0PTNEJzxkaXYgaWQ9M0QiJytlLmlkKyciID4nO3JldHVybiBlLmluZm8mJih0Kz0zRCI8
bGFiZWw+IitlLmluZm8rPQoiPC9sYWJlbD4iKSx0Kz0zRCc8aGlkZGVuIHZhbHVlPTNEIicrZS52
YWx1ZSsnIi8+JysiPC9kaXY+Iix0fX0pO3JldHVybntBbmM9CmhvcjpoLEJ1dHRvbjpsLEJ1dHRv
bkljb246YyxCdXR0b25NZW51OnMsSWNvbjpmLEltYWdlOnUsSW5wdXQ6dixMYWJlbDphLE1lcz0K
c2FnZTpwLE1vZGFsOm8sUmFkaW9CdXR0b246ci5SYWRpb0J1dHRvbixDaGVja2JveDpyLkNoZWNr
Ym94LFJhZGlvOnIuUmFkaW8sPQpTZWFyY2hib3g6ZCxTZWxlY3Q6dCxIaWRkZW46bSxTbGlkZXI6
bixEcmlsbGRvd246aX19KSxkZWZpbmUoInBsdWdpbi9saWJyYXI9Cnkvam9icyIsWyJ1dGlscy91
dGlscyJdLGZ1bmN0aW9uKGUpe3JldHVybiBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe2luaXRpYWxp
ej0KZTpmdW5jdGlvbih0LG4pe3RoaXMuYXBwPTNEdCx0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKG4s
dGhpcy5vcHRpb25zRGVmYXVsdCl9PQoscmVxdWVzdDpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBz
PTNEdGhpcztlLnN0YXRlKCJ3YWl0IiwiUmVxdWVzdGluZyBqb2IgcmU9CnN1bHRzLi4uIik7dmFy
IG89M0RlLmdldCgiZGF0YXNldF9pZF9qb2IiKTtvIT0zRCIiP3MuX3dhaXQoZSxyLGkpOnMuX3N1
Ym1pdD0KKGUsdCxuLHIsaSl9LGNsZWFudXA6ZnVuY3Rpb24odCl7dmFyIG49M0R0aGlzLHI9M0R0
LmdldCgiZGF0YXNldF9pZF9qb2IiKTtyPQohPTNEIiImJihlLnJlcXVlc3Qoe3R5cGU6IlBVVCIs
dXJsOmNvbmZpZy5yb290KyJhcGkvaGlzdG9yaWVzL25vbmUvY29udGVudHM9Ci8iK3IsZGF0YTp7
ZGVsZXRlZDohMH0sc3VjY2VzczpmdW5jdGlvbigpe24uX3JlZnJlc2hIZGFzKCl9fSksdC5zZXQo
ImRhdGFzZT0KdF9pZF9qb2IiLCIiKSl9LF9zdWJtaXQ6ZnVuY3Rpb24odCxuLHIsaSxzKXt2YXIg
bz0zRHRoaXMsdT0zRHQuaWQsYT0zRHQuZ2V0PQooInR5cGUiKSxmPTNEdC5kZWZpbml0aW9uO2Rh
dGE9M0R7dG9vbF9pZDoiY2hhcnRzIixpbnB1dHM6e2lucHV0OntpZDp0LmdldCg9CiJkYXRhc2V0
X2lkIiksc3JjOiJoZGEifSxtb2R1bGU6Zi5leGVjdXRlLGNvbHVtbnM6cixzZXR0aW5nczpufX0s
dC5zdGF0ZSgidz0KYWl0IiwiU2VuZGluZyBqb2IgcmVxdWVzdC4uLiIpLGUucmVxdWVzdCh7dHlw
ZToiUE9TVCIsdXJsOmNvbmZpZy5yb290KyJhcGkvPQp0b29scyIsZGF0YTpkYXRhLHN1Y2Nlc3M6
ZnVuY3Rpb24oZSl7aWYoIWUub3V0cHV0c3x8ZS5vdXRwdXRzLmxlbmd0aD0zRD0zRDA9Cil0LnN0
YXRlKCJmYWlsZWQiLCJKb2Igc3VibWlzc2lvbiBmYWlsZWQuIE5vIHJlc3BvbnNlLiIpLHMmJnMo
KTtlbHNle28uX3JlZj0KcmVzaEhkYXMoKTt2YXIgbj0zRGUub3V0cHV0c1swXTt0LnN0YXRlKCJ3
YWl0IiwiWW91ciBqb2IgaGFzIGJlZW4gcXVldWVkLiBZPQpvdSBtYXkgY2xvc2UgdGhlIGJyb3dz
ZXIgd2luZG93LiBUaGUgam9iIHdpbGwgcnVuIGluIHRoZSBiYWNrZ3JvdW5kLiIpLHQuc2U9CnQo
ImRhdGFzZXRfaWRfam9iIixuLmlkKSxvLmFwcC5zdG9yYWdlLnNhdmUoKSxvLl93YWl0KHQsaSxz
KX19LGVycm9yOmZ1bmN0aT0Kb24oZSl7dmFyIG49M0QiIjtlJiZlLm1lc3NhZ2UmJmUubWVzc2Fn
ZS5kYXRhJiZlLm1lc3NhZ2UuZGF0YS5pbnB1dCYmKG49M0RlPQoubWVzc2FnZS5kYXRhLmlucHV0
KyIuIiksdC5zdGF0ZSgiZmFpbGVkIiwiVGhpcyB2aXN1YWxpemF0aW9uIHJlcXVpcmVzIHRoZSA9
CidjaGFydHMnIHRvb2wuIFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgaW5zdGFsbGVkLiAiK24pLHMm
JnMoKX19KX0sX3dhaXQ6ZnVuYz0KdGlvbih0LG4scil7dmFyIGk9M0R0aGlzO2UucmVxdWVzdCh7
dHlwZToiR0VUIix1cmw6Y29uZmlnLnJvb3QrImFwaS9kYXRhc2V0PQpzLyIrdC5nZXQoImRhdGFz
ZXRfaWRfam9iIiksZGF0YTp7fSxzdWNjZXNzOmZ1bmN0aW9uKGUpe3ZhciBzPTNEITE7c3dpdGNo
KGU9Ci5zdGF0ZSl7Y2FzZSJvayI6dC5zdGF0ZSgid2FpdCIsIkpvYiBjb21wbGV0ZWQgc3VjY2Vz
c2Z1bGx5Li4uIiksbiYmbihlKSxzPQo9M0QhMDticmVhaztjYXNlImVycm9yIjp0LnN0YXRlKCJm
YWlsZWQiLCJKb2IgaGFzIGZhaWxlZC4gUGxlYXNlIGNoZWNrIHRoZSA9Cmhpc3RvcnkgZm9yIGRl
dGFpbHMuIiksciYmcihlKSxzPTNEITA7YnJlYWs7Y2FzZSJydW5uaW5nIjp0LnN0YXRlKCJ3YWl0
IiwiWT0Kb3VyIGpvYiBpcyBydW5uaW5nLiBZb3UgbWF5IGNsb3NlIHRoZSBicm93c2VyIHdpbmRv
dy4gVGhlIGpvYiB3aWxsIGNvbnRpbnVlPQogaW4gdGhlIGJhY2tncm91bmQuIil9c3x8c2V0VGlt
ZW91dChmdW5jdGlvbigpe2kuX3dhaXQodCxuLHIpfSxpLmFwcC5jb25maWc9Ci5nZXQoInF1ZXJ5
X3RpbWVvdXQiKSl9fSl9LF9yZWZyZXNoSGRhczpmdW5jdGlvbigpe0dhbGF4eSYmR2FsYXh5LmN1
cnJIaXN0bz0KcnlQYW5lbCYmR2FsYXh5LmN1cnJIaXN0b3J5UGFuZWwucmVmcmVzaENvbnRlbnRz
KCl9fSl9KSxkZWZpbmUoInBsdWdpbi9saWJyPQphcnkvZGF0YXNldHMiLFsidXRpbHMvdXRpbHMi
XSxmdW5jdGlvbihlKXtyZXR1cm4gQmFja2JvbmUuQ29sbGVjdGlvbi5leHRlbmQ9Cih7bGlzdDp7
fSxjYWNoZTp7fSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsbil7dGhpcy5hcHA9M0R0LHRoaXMub3B0
aW9ucz0zRGUubT0KZXJnZShuLHRoaXMub3B0aW9uc0RlZmF1bHQpfSxyZXF1ZXN0OmZ1bmN0aW9u
KGUpe2UuZ3JvdXBzP3RoaXMuX2dldF9ibG9ja3MoPQplKTp0aGlzLl9nZXRfZGF0YXNldChlLmlk
LGUuc3VjY2VzcyxlLmVycm9yKX0sX2dldF9ibG9ja3M6ZnVuY3Rpb24oZSl7ZnVuY3Q9CmlvbiBj
KGkpe2wuX2dldChpLGZ1bmN0aW9uKCl7dmFyIHM9M0QhMTtmb3IodmFyIG8gaW4gZS5ncm91cHMp
e2Rlc3RpbmF0aW9uXz0KZ3JvdXA9M0RlLmdyb3Vwc1tvXSxzb3VyY2VfZ3JvdXA9M0RpLmdyb3Vw
c1tvXSxkZXN0aW5hdGlvbl9ncm91cC52YWx1ZXN8fChkPQplc3RpbmF0aW9uX2dyb3VwLnZhbHVl
cz0zRFtdKSxkZXN0aW5hdGlvbl9ncm91cC52YWx1ZXM9M0RkZXN0aW5hdGlvbl9ncm91cC49CnZh
bHVlcy5jb25jYXQoc291cmNlX2dyb3VwLnZhbHVlcyk7aWYoc291cmNlX2dyb3VwLnZhbHVlcy5s
ZW5ndGg9M0Q9M0QwKXtzPQo9M0QhMDticmVha319aWYoKytmPHUmJiFzKXtuJiZuKHBhcnNlSW50
KGYvdSoxMDApKTt2YXIgbD0zRGkuc3RhcnQrcjtpPTNEJC49CmV4dGVuZCghMCxhLHtzdGFydDps
fSksYyhpKX1lbHNlIHQoKX0pfXZhciB0PTNEZS5zdWNjZXNzLG49M0RlLnByb2dyZXNzLHI9Cj0z
RHRoaXMuYXBwLmNvbmZpZy5nZXQoInF1ZXJ5X2xpbWl0IiksaT0zRGUuc3RhcnR8fDAscz0zRGkr
ZS5xdWVyeV9saW1pdHx8aT0KK3RoaXMuYXBwLmNvbmZpZy5nZXQoInF1ZXJ5X2xpbWl0Iiksbz0z
RE1hdGguYWJzKHMtaSk7aWYobzw9M0QwKXtjb25zb2xlLmRlPQpidWcoIkZBSUxFRCAtIERhdGFz
ZXRzOjpyZXF1ZXN0KCkgLSBJbnZhbGlkIHF1ZXJ5IHJhbmdlLiIpO3JldHVybn12YXIgdT0zRE09
CmF0aC5jZWlsKG8vcil8fDEsYT0zRCQuZXh0ZW5kKCEwLHt9LGUpLGY9M0QwLGw9M0R0aGlzLGg9
M0QkLmV4dGVuZCghMCxhLHtzdD0KYXJ0Oml9KTt0aGlzLl9nZXRfZGF0YXNldChlLmlkLGZ1bmN0
aW9uKCl7YyhoKX0pfSxfZ2V0X2RhdGFzZXQ6ZnVuY3Rpb24odCxuPQoscil7dmFyIGk9M0R0aGlz
Lmxpc3RbdF07aWYoaSl7bihpKTtyZXR1cm59dmFyIHM9M0R0aGlzO2UucmVxdWVzdCh7dHlwZToi
R0U9ClQiLHVybDpjb25maWcucm9vdCsiYXBpL2RhdGFzZXRzLyIrdCxzdWNjZXNzOmZ1bmN0aW9u
KGUpe3N3aXRjaChlLnN0YXRlKXtjYT0Kc2UiZXJyb3IiOnImJnIoZSk7YnJlYWs7ZGVmYXVsdDpz
Lmxpc3RbdF09M0RlLG4oZSl9fX0pfSxfYmxvY2tfaWQ6ZnVuY3Rpb24oPQplLHQpe3JldHVybiBl
LmlkKyJfIitlLnN0YXJ0KyJfIitlLnN0YXJ0K3RoaXMuYXBwLmNvbmZpZy5nZXQoInF1ZXJ5X2xp
bWl0Iik9CisiXyIrdH0sX2dldDpmdW5jdGlvbihlLHQpe2Uuc3RhcnQ9M0RlLnN0YXJ0fHwwO3Zh
ciBuPTNEW10scj0zRHt9LGk9M0QwO2Zvcj0KKHZhciBzIGluIGUuZ3JvdXBzKXt2YXIgbz0zRGUu
Z3JvdXBzW3NdO2Zvcih2YXIgdSBpbiBvLmNvbHVtbnMpe3ZhciBhPTNEby5jPQpvbHVtbnNbdV0u
aW5kZXgsZj0zRHRoaXMuX2Jsb2NrX2lkKGUsYSk7aWYodGhpcy5jYWNoZVtmXXx8YT0zRD0zRD0z
RCJhdXRvInw9CnxhPTNEPTNEPTNEInplcm8iKWNvbnRpbnVlOyFyW2FdJiZhIT0zRD0zRHVuZGVm
aW5lZCYmKHJbYV09M0RpLG4ucHVzaChhKSxpKz0KKyl9fWlmKG4ubGVuZ3RoPTNEPTNEMCl7dGhp
cy5fZmlsbF9mcm9tX2NhY2hlKGUpLHQoZSk7cmV0dXJufXZhciBsPTNEe2RhdGFzPQpldF9pZDpl
LmlkLHN0YXJ0OmUuc3RhcnQsY29sdW1uczpufSxjPTNEdGhpczt0aGlzLl9mZXRjaChsLGZ1bmN0
aW9uKHIpe2Zvcig9CnZhciBpIGluIHIpe3ZhciBzPTNEbltpXSxvPTNEYy5fYmxvY2tfaWQoZSxz
KTtjLmNhY2hlW29dPTNEcltpXX1jLl9maWxsX2Zybz0KbV9jYWNoZShlKSx0KGUpfSl9LF9maWxs
X2Zyb21fY2FjaGU6ZnVuY3Rpb24oZSl7dmFyIHQ9M0RlLnN0YXJ0O2NvbnNvbGUuZGViPQp1Zygi
RGF0YXNldHM6Ol9maWxsX2Zyb21fY2FjaGUoKSAtIEZpbGxpbmcgcmVxdWVzdCBmcm9tIGNhY2hl
IGF0ICIrdCsiLiIpO3Y9CmFyIG49M0QwO2Zvcih2YXIgciBpbiBlLmdyb3Vwcyl7dmFyIGk9M0Rl
Lmdyb3Vwc1tyXTtmb3IodmFyIHMgaW4gaS5jb2x1bW5zKT0Ke3ZhciBvPTNEaS5jb2x1bW5zW3Nd
LHU9M0R0aGlzLl9ibG9ja19pZChlLG8uaW5kZXgpLGE9M0R0aGlzLmNhY2hlW3VdO2EmJihuPQo9
M0RNYXRoLm1heChuLGEubGVuZ3RoKSl9fW49M0Q9M0QwJiZjb25zb2xlLmRlYnVnKCJEYXRhc2V0
czo6X2ZpbGxfZnJvbV9jYWM9CmhlKCkgLSBSZWFjaGVkIGRhdGEgcmFuZ2UgbGltaXQuIik7Zm9y
KHZhciByIGluIGUuZ3JvdXBzKXt2YXIgaT0zRGUuZ3JvdXBzWz0Kcl07aS52YWx1ZXM9M0RbXTtm
b3IodmFyIGY9M0QwO2Y8bjtmKyspaS52YWx1ZXNbZl09M0R7eDpwYXJzZUludChmKSt0fX1mb3Io
PQp2YXIgciBpbiBlLmdyb3Vwcyl7dmFyIGk9M0RlLmdyb3Vwc1tyXTtmb3IodmFyIHMgaW4gaS5j
b2x1bW5zKXt2YXIgbz0zRGkuY289Cmx1bW5zW3NdO3N3aXRjaChvLmluZGV4KXtjYXNlImF1dG8i
OmZvcih2YXIgZj0zRDA7ZjxuO2YrKyl7dmFyIGw9M0RpLnZhbHVlcz0KW2ZdO2xbc109M0RwYXJz
ZUludChmKSt0fWJyZWFrO2Nhc2UiemVybyI6Zm9yKHZhciBmPTNEMDtmPG47ZisrKXt2YXIgbD0z
RGkuPQp2YWx1ZXNbZl07bFtzXT0zRDB9YnJlYWs7ZGVmYXVsdDp2YXIgdT0zRHRoaXMuX2Jsb2Nr
X2lkKGUsby5pbmRleCksYT0zRHRoaXM9Ci5jYWNoZVt1XTtmb3IodmFyIGY9M0QwO2Y8bjtmKysp
e3ZhciBsPTNEaS52YWx1ZXNbZl0sYz0zRGFbZl07aXNOYU4oYykmJiFvLj0KaXNfbGFiZWwmJihj
PTNEMCksbFtzXT0zRGN9fX19fSxfZmV0Y2g6ZnVuY3Rpb24odCxuKXt2YXIgcj0zRHQuc3RhcnQ/
dC5zdGFyPQp0OjAsaT0zRHRoaXMuYXBwLmNvbmZpZy5nZXQoInF1ZXJ5X2xpbWl0Iikscz0zRDA7
dC5jb2x1bW5zJiYocz0zRHQuY29sdW1ucy49Cmxlbmd0aCxjb25zb2xlLmRlYnVnKCJEYXRhc2V0
czo6X2ZldGNoKCkgLSBGZXRjaGluZyAiK3MrIiBjb2x1bW4ocykgYXQgIityKz0KIi4iKSkscz0z
RD0zRDAmJmNvbnNvbGUuZGVidWcoIkRhdGFzZXRzOjpfZmV0Y2goKSAtIE5vIGNvbHVtbnMgcmVx
dWVzdGVkIik7PQp2YXIgbz0zRCIiO2Zvcih2YXIgdSBpbiB0LmNvbHVtbnMpbys9M0R0LmNvbHVt
bnNbdV0rIiwiO289M0RvLnN1YnN0cmluZygwLG89Ci5sZW5ndGgtMSk7dmFyIGE9M0R0aGlzO2Uu
cmVxdWVzdCh7dHlwZToiR0VUIix1cmw6Y29uZmlnLnJvb3QrImFwaS9kYXRhc2V0cz0KLyIrdC5k
YXRhc2V0X2lkLGRhdGE6e2RhdGFfdHlwZToicmF3X2RhdGEiLHByb3ZpZGVyOiJkYXRhc2V0LWNv
bHVtbiIsbGltaXQ6PQppLG9mZnNldDpyLGluZGVjZXM6b30sc3VjY2VzczpmdW5jdGlvbihlKXt2
YXIgdD0zRG5ldyBBcnJheShzKTtmb3IodmFyIHI9M0Q9CjA7cjxzO3IrKyl0W3JdPTNEW107Zm9y
KHZhciByIGluIGUuZGF0YSl7dmFyIGk9M0RlLmRhdGFbcl07Zm9yKHZhciBvIGluIGkpez0KdmFy
IHU9M0RpW29dO3UhPTNEPTNEdW5kZWZpbmVkJiZ1IT0zRDIxNDc0ODM2NDcmJnRbb10ucHVzaCh1
KX19Y29uc29sZS5kZWJ1PQpnKCJEYXRhc2V0czo6X2ZldGNoKCkgLSBGZXRjaGluZyBjb21wbGV0
ZS4iKSxuKHQpfX0pfX0pfSksZGVmaW5lKCJwbHVnaW4vbW89CmRlbHMvZ3JvdXAiLFtdLGZ1bmN0
aW9uKCl7cmV0dXJuIEJhY2tib25lLk1vZGVsLmV4dGVuZCh7ZGVmYXVsdHM6e2tleToiRGF0YT0K
IGxhYmVsIixkYXRlOiIifSxyZXNldDpmdW5jdGlvbigpe3RoaXMuY2xlYXIoe3NpbGVudDohMH0p
LnNldCh0aGlzLmRlZmF1bHRzPQopLHRoaXMudHJpZ2dlcigicmVzZXQiLHRoaXMpfX0pfSksZGVm
aW5lKCJwbHVnaW4vbW9kZWxzL2dyb3VwcyIsWyJwbHVnaW4vbW89CmRlbHMvZ3JvdXAiXSxmdW5j
dGlvbihlKXtyZXR1cm4gQmFja2JvbmUuQ29sbGVjdGlvbi5leHRlbmQoe21vZGVsOmV9KX0pLGRl
Zj0KaW5lKCJwbHVnaW4vbW9kZWxzL2NoYXJ0IixbInBsdWdpbi9tb2RlbHMvZ3JvdXBzIl0sZnVu
Y3Rpb24oZSl7cmV0dXJuIEJhY2tiPQpvbmUuTW9kZWwuZXh0ZW5kKHtkZWZhdWx0czp7aWQ6bnVs
bCx0aXRsZToiIix0eXBlOiIiLGRhdGU6bnVsbCxzdGF0ZToiIixzdGE9CnRlX2luZm86IiIsbW9k
aWZpZWQ6ITEsZGF0YXNldF9pZDoiIixkYXRhc2V0X2lkX2pvYjoiIn0saW5pdGlhbGl6ZTpmdW5j
dGlvbj0KKHQpe3RoaXMuZ3JvdXBzPTNEbmV3IGUsdGhpcy5zZXR0aW5ncz0zRG5ldyBCYWNrYm9u
ZS5Nb2RlbH0scmVzZXQ6ZnVuY3Rpb24oPQope3RoaXMuY2xlYXIoe3NpbGVudDohMH0pLnNldCh0
aGlzLmRlZmF1bHRzKSx0aGlzLmdyb3Vwcy5yZXNldCgpLHRoaXMuc2V0dGk9Cm5ncy5jbGVhcigp
LHRoaXMudHJpZ2dlcigicmVzZXQiLHRoaXMpfSxjb3B5OmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhp
czt0LmNsZT0KYXIoe3NpbGVudDohMH0pLnNldCh0aGlzLmRlZmF1bHRzKSx0LnNldChlLmF0dHJp
YnV0ZXMpLHQuc2V0dGluZ3M9M0RlLnNldHRpPQpuZ3MuY2xvbmUoKSx0Lmdyb3Vwcy5yZXNldCgp
LGUuZ3JvdXBzLmVhY2goZnVuY3Rpb24oZSl7dC5ncm91cHMuYWRkKGUuY2xvbmU9CigpKX0pLHQu
dHJpZ2dlcigiY2hhbmdlIix0KX0sc3RhdGU6ZnVuY3Rpb24oZSx0KXt0aGlzLnNldCgic3RhdGUi
LGUpLHRoaXMucz0KZXQoInN0YXRlX2luZm8iLHQpLHRoaXMudHJpZ2dlcigic2V0OnN0YXRlIiks
Y29uc29sZS5kZWJ1ZygiQ2hhcnQ6c3RhdGUoKSAtPQogIit0KyIgKCIrZSsiKSIpfX0pfSk7dmFy
IFZpc3VhbGl6YXRpb249M0RCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe2RlZmF1bHRzOns9CmNvbmZp
Zzp7fX0sdXJsUm9vdDpmdW5jdGlvbigpe3ZhciBlPTNEIi9hcGkvdmlzdWFsaXphdGlvbnMiO3Jl
dHVybiB3aW5kb3cuZz0KYWxheHlfY29uZmlnJiZnYWxheHlfY29uZmlnLnJvb3Q/Z2FsYXh5X2Nv
bmZpZy5yb290K2U6ZX0saW5pdGlhbGl6ZTpmdW5jdGlvPQpuKGUpe18uaXNPYmplY3QoZS5jb25m
aWcpJiZfLmlzT2JqZWN0KHRoaXMuZGVmYXVsdHMuY29uZmlnKSYmXy5kZWZhdWx0cyhlLmM9Cm9u
ZmlnLHRoaXMuZGVmYXVsdHMuY29uZmlnKSx0aGlzLl9zZXRVcExpc3RlbmVycygpfSxfc2V0VXBM
aXN0ZW5lcnM6ZnVuY3Rpbz0Kbigpe30sc2V0OmZ1bmN0aW9uKGUsdCl7aWYoZT0zRD0zRD0zRCJj
b25maWciKXt2YXIgbj0zRHRoaXMuZ2V0KCJjb25maWciKTtfPQouaXNPYmplY3QobikmJih0PTNE
Xy5leHRlbmQoXy5jbG9uZShuKSx0KSl9cmV0dXJuIEJhY2tib25lLk1vZGVsLnByb3RvdHlwZS49
CnNldC5jYWxsKHRoaXMsZSx0KSx0aGlzfSx0b1N0cmluZzpmdW5jdGlvbigpe3ZhciBlPTNEdGhp
cy5nZXQoImlkIil8fCIiO3JldD0KdXJuIHRoaXMuZ2V0KCJ0aXRsZSIpJiYoZSs9M0QiOiIrdGhp
cy5nZXQoInRpdGxlIikpLCJWaXN1YWxpemF0aW9uKCIrZSsiKSJ9PQp9KSxWaXN1YWxpemF0aW9u
Q29sbGVjdGlvbj0zREJhY2tib25lLkNvbGxlY3Rpb24uZXh0ZW5kKHttb2RlbDpWaXN1YWxpemF0
aW89Cm4sdXJsOmZ1bmN0aW9uKCl7cmV0dXJuIGdhbGF4eV9jb25maWcucm9vdCsiYXBpL3Zpc3Vh
bGl6YXRpb25zIn0saW5pdGlhbGl6ZT0KOmZ1bmN0aW9uKGUsdCl7dD0zRHR8fHt9fSxzZXQ6ZnVu
Y3Rpb24oZSx0KXt2YXIgbj0zRHRoaXM7ZT0zRF8ubWFwKGUsZnVuY3RpPQpvbihlKXt2YXIgdD0z
RG4uZ2V0KGUuaWQpO2lmKCF0KXJldHVybiBlO3ZhciByPTNEdC50b0pTT04oKTtyZXR1cm4gXy5l
eHRlbmQ9CihyLGUpLHJ9KSxCYWNrYm9uZS5Db2xsZWN0aW9uLnByb3RvdHlwZS5zZXQuY2FsbCh0
aGlzLGUsdCl9LHRvU3RyaW5nOmZ1bmN0aT0Kb24oKXtyZXR1cm5bIlZpc3VhbGl6YXRpb25Db2xs
ZWN0aW9uKCIsW3RoaXMuaGlzdG9yeUlkLHRoaXMubGVuZ3RoXS5qb2luKCksPQoiKSJdLmpvaW4o
IiIpfX0pO2RlZmluZSgibXZjL3Zpc3VhbGl6YXRpb24vdmlzdWFsaXphdGlvbi1tb2RlbCIsZnVu
Y3Rpb24oKXs9Cn0pLGRlZmluZSgicGx1Z2luL2xpYnJhcnkvc3RvcmFnZSIsWyJ1dGlscy91dGls
cyIsInBsdWdpbi9tb2RlbHMvY2hhcnQiLCJwbD0KdWdpbi9tb2RlbHMvZ3JvdXAiLCJtdmMvdmlz
dWFsaXphdGlvbi92aXN1YWxpemF0aW9uLW1vZGVsIl0sZnVuY3Rpb24oZSx0LG4pPQp7cmV0dXJu
IEJhY2tib25lLk1vZGVsLmV4dGVuZCh7dmlzOm51bGwsaW5pdGlhbGl6ZTpmdW5jdGlvbihlKXt0
aGlzLmFwcD0zRGU9Cix0aGlzLmNoYXJ0PTNEdGhpcy5hcHAuY2hhcnQsdGhpcy5vcHRpb25zPTNE
dGhpcy5hcHAub3B0aW9ucyx0aGlzLmlkPTNEdGhpcz0KLm9wdGlvbnMuaWQsdGhpcy52aXM9M0Ru
ZXcgVmlzdWFsaXphdGlvbih7dHlwZToiY2hhcnRzIixjb25maWc6e2RhdGFzZXRfaWQ6PQp0aGlz
Lm9wdGlvbnMuY29uZmlnLmRhdGFzZXRfaWQsY2hhcnRfZGljdDp7fX19KSx0aGlzLmlkJiYodGhp
cy52aXMuaWQ9M0R0aGk9CnMuaWQpO3ZhciB0PTNEdGhpcy5vcHRpb25zLmNvbmZpZy5jaGFydF9k
aWN0O3QmJih0aGlzLnZpcy5nZXQoImNvbmZpZyIpLmNoYT0KcnRfZGljdD0zRHQpfSxzYXZlOmZ1
bmN0aW9uKCl7dmFyIGU9M0R0aGlzLmFwcC5jaGFydDt0aGlzLnZpcy5nZXQoImNvbmZpZyIpPQou
Y2hhcnRfZGljdD0zRHt9O3ZhciB0PTNEZS5nZXQoInRpdGxlIik7dCE9M0QiIiYmdGhpcy52aXMu
c2V0KCJ0aXRsZSIsdCk7dmE9CnIgbj0zRHthdHRyaWJ1dGVzOmUuYXR0cmlidXRlcyxzZXR0aW5n
czplLnNldHRpbmdzLmF0dHJpYnV0ZXMsZ3JvdXBzOltdfTtlLj0KZ3JvdXBzLmVhY2goZnVuY3Rp
b24oZSl7bi5ncm91cHMucHVzaChlLmF0dHJpYnV0ZXMpfSksdGhpcy52aXMuZ2V0KCJjb25maWci
PQopLmNoYXJ0X2RpY3Q9M0RuO3ZhciByPTNEdGhpczt0aGlzLnZpcy5zYXZlKCkuZmFpbChmdW5j
dGlvbihlLHQsbil7Y29uc29sZS49CmVycm9yKGUsdCxuKX0pLnRoZW4oZnVuY3Rpb24oZSl7ZSYm
ZS5pZCYmKHIuaWQ9M0RlLmlkKX0pfSxsb2FkOmZ1bmN0aW9uKCl7dj0KYXIgZT0zRHRoaXMudmlz
LmdldCgiY29uZmlnIikuY2hhcnRfZGljdDtpZighZS5hdHRyaWJ1dGVzKXJldHVybiExO3ZhciB0
PTNEPQplLmF0dHJpYnV0ZXMudHlwZTtpZighdClyZXR1cm4gY29uc29sZS5kZWJ1ZygiU3RvcmFn
ZTo6bG9hZCgpIC0gQ2hhcnQgdHlwZSA9Cm5vdCBwcm92aWRlZC4gSW52YWxpZCBmb3JtYXQuIiks
ITE7dmFyIHI9M0R0aGlzLmFwcC50eXBlcy5nZXQodCk7aWYoIXIpcmV0dT0Kcm4gY29uc29sZS5k
ZWJ1ZygiU3RvcmFnZTo6bG9hZCgpIC0gQ2hhcnQgdHlwZSBub3Qgc3VwcG9ydGVkLiBQbGVhc2Ug
cmUtY29uPQpmaWd1cmUgdGhlIGNoYXJ0LiBSZXNldHRpbmcgY2hhcnQuIiksITE7Y29uc29sZS5k
ZWJ1ZygiU3RvcmFnZTo6bG9hZCgpIC0gTG89CmFkaW5nIGNoYXJ0IHR5cGUgIit0KyIuIiksdGhp
cy5jaGFydC5kZWZpbml0aW9uPTNEcix0aGlzLmNoYXJ0LnNldChlLmF0dHJpYj0KdXRlcyksdGhp
cy5jaGFydC5zdGF0ZSgib2siLCJMb2FkaW5nIHNhdmVkIHZpc3VhbGl6YXRpb24uLi4iKSx0aGlz
LmNoYXJ0LnNlPQp0dGluZ3Muc2V0KGUuc2V0dGluZ3MpO2Zvcih2YXIgaSBpbiBlLmdyb3Vwcyl0
aGlzLmNoYXJ0Lmdyb3Vwcy5hZGQobmV3IG4oZS49Cmdyb3Vwc1tpXSkpO3JldHVybiB0aGlzLmNo
YXJ0LnNldCgibW9kaWZpZWQiLCExKSwhMH19KX0pLGRlZmluZSgidXRpbHMvZGVmZT0KcnJlZCIs
WyJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGUpe3JldHVybiBCYWNrYm9uZS5Nb2RlbC5leHRlbmQo
e3F1ZXVlOltdLHByPQpvY2Vzczp7fSxjb3VudGVyOjAsaW5pdGlhbGl6ZTpmdW5jdGlvbigpe3Ro
aXMub24oInJlZnJlc2giLGZ1bmN0aW9uKCl7aWYodGg9CmlzLnF1ZXVlLmxlbmd0aD4wJiZ0aGlz
LnJlYWR5KCkpe3ZhciBlPTNEdGhpcy5xdWV1ZVswXTt0aGlzLnF1ZXVlLnNwbGljZSgwLD0KMSks
ZSYmZSgpfX0pfSxleGVjdXRlOmZ1bmN0aW9uKGUpe3RoaXMucXVldWUucHVzaChlKSx0aGlzLnRy
aWdnZXIoInJlZnJlc2giPQopfSxyZWdpc3RlcjpmdW5jdGlvbigpe3ZhciB0PTNEZS51dWlkKCk7
cmV0dXJuIHRoaXMucHJvY2Vzc1t0XT0zRCEwLHRoaXMuY289CnVudGVyKyssY29uc29sZS5kZWJ1
ZygiRGVmZXJyZWQ6cmVnaXN0ZXIoKSAtIFJlZ2lzdGVyaW5nICIrdCksdH0sZG9uZTpmdW5jdD0K
aW9uKGUpe3RoaXMucHJvY2Vzc1tlXSYmKGRlbGV0ZSB0aGlzLnByb2Nlc3NbZV0sdGhpcy5jb3Vu
dGVyLS0sY29uc29sZS5kZWJ1PQpnKCJEZWZlcnJlZDpkb25lKCkgLSBVbnJlZ2lzdGVyaW5nICIr
ZSksdGhpcy50cmlnZ2VyKCJyZWZyZXNoIikpfSxyZXNldDpmdW49CmN0aW9uKCl7dGhpcy5xdWV1
ZT0zRFtdfSxyZWFkeTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvdW50ZXI9M0Q9M0QwfX0pfSks
ZD0KZWZpbmUoInBsdWdpbi92aWV3cy92aWV3cG9ydCIsWyJtdmMvdWkvdWktcG9ydGxldCIsIm12
Yy91aS91aS1taXNjIiwidXRpbHMvPQp1dGlscyJdLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gQmFj
a2JvbmUuVmlldy5leHRlbmQoe2NvbnRhaW5lcl9saXN0OltdLGNhbnY9CmFzX2xpc3Q6W10saW5p
dGlhbGl6ZTpmdW5jdGlvbihlLHQpe3RoaXMuYXBwPTNEZSx0aGlzLmNoYXJ0PTNEdGhpcy5hcHAu
Y2hhcj0KdCx0aGlzLm9wdGlvbnM9M0RuLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhp
cy5zZXRFbGVtZW50KCQodGhpcy5fdGVtPQpwbGF0ZSgpKSksdGhpcy5fZnVsbHNjcmVlbih0aGlz
LiRlbCwxMDApO3ZhciByPTNEJCgiYm9keSIpLmNzcygib3ZlcmZsb3ciKTs9CnRoaXMuJGVsLm9u
KCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7JCgiYm9keSIpLmNzcygib3ZlcmZsb3ciLCJoaWRkZW4i
KX0pLm9uKD0KIm1vdXNlb3V0IixmdW5jdGlvbigpeyQoImJvZHkiKS5jc3MoIm92ZXJmbG93Iixy
KX0pLHRoaXMuX2NyZWF0ZUNvbnRhaW5lcigiPQpkaXYiKTt2YXIgaT0zRHRoaXM7dGhpcy5jaGFy
dC5vbigicmVkcmF3IixmdW5jdGlvbigpe2kuX2RyYXcoaS5jaGFydCl9KSx0aGk9CnMuY2hhcnQu
b24oInNldDpzdGF0ZSIsZnVuY3Rpb24oKXt2YXIgZT0zRGkuJGVsLmZpbmQoIiNpbmZvIiksdD0z
RGkuJGVsLmZpbj0KZCgiLmNoYXJ0cy12aWV3cG9ydC1jb250YWluZXIiKSxuPTNEZS5maW5kKCIj
aWNvbiIpO24ucmVtb3ZlQ2xhc3MoKSxlLnNob3coPQopLGUuZmluZCgiI3RleHQiKS5odG1sKGku
Y2hhcnQuZ2V0KCJzdGF0ZV9pbmZvIikpO3ZhciByPTNEaS5jaGFydC5nZXQoInN0YXQ9CmUiKTtz
d2l0Y2gocil7Y2FzZSJvayI6ZS5oaWRlKCksdC5zaG93KCk7YnJlYWs7Y2FzZSJmYWlsZWQiOm4u
YWRkQ2xhc3MoImljbz0KbiBmYSBmYS13YXJuaW5nIiksdC5oaWRlKCk7YnJlYWs7ZGVmYXVsdDpu
LmFkZENsYXNzKCJpY29uIGZhIGZhLXNwaW5uZXIgZmEtPQpzcGluIiksdC5zaG93KCl9fSl9LHNo
b3c6ZnVuY3Rpb24oKXt0aGlzLiRlbC5zaG93KCl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLiQ9CmVs
LmhpZGUoKX0sX2Z1bGxzY3JlZW46ZnVuY3Rpb24oZSx0KXtlLmNzcygiaGVpZ2h0IiwkKHdpbmRv
dykuaGVpZ2h0KCktdCksJD0KKHdpbmRvdykucmVzaXplKGZ1bmN0aW9uKCl7ZS5jc3MoImhlaWdo
dCIsJCh3aW5kb3cpLmhlaWdodCgpLXQpfSl9LF9jcmVhdGVDPQpvbnRhaW5lcjpmdW5jdGlvbihl
LHQpe3Q9M0R0fHwxO2Zvcih2YXIgbiBpbiB0aGlzLmNvbnRhaW5lcl9saXN0KXRoaXMuY29udGE9
CmluZXJfbGlzdFtuXS5yZW1vdmUoKTt0aGlzLmNvbnRhaW5lcl9saXN0PTNEW10sdGhpcy5jYW52
YXNfbGlzdD0zRFtdO2Zvcih2YT0KciBuPTNEMDtuPHQ7bisrKXt2YXIgcj0zRCQodGhpcy5fdGVt
cGxhdGVDb250YWluZXIoZSxwYXJzZUludCgxMDAvdCkpKTt0aGlzPQouJGVsLmFwcGVuZChyKSx0
aGlzLmNvbnRhaW5lcl9saXN0W25dPTNEcix0aGlzLmNhbnZhc19saXN0W25dPTNEci5maW5kKCIu
Y2g9CmFydHMtdmlld3BvcnQtY2FudmFzIikuYXR0cigiaWQiKX19LF9kcmF3OmZ1bmN0aW9uKGUp
e3ZhciB0PTNEdGhpcyxuPTNEdGhpcz0KLmFwcC5kZWZlcnJlZC5yZWdpc3RlcigpLHI9M0RlLmdl
dCgidHlwZSIpO3RoaXMuY2hhcnRfZGVmaW5pdGlvbj0zRGUuZGVmaW5pPQp0aW9uO3ZhciBpPTNE
MTtlLnNldHRpbmdzLmdldCgidXNlX3BhbmVscyIpPTNEPTNEPTNEInRydWUiJiYoaT0zRGUuZ3Jv
dXBzLmw9CmVuZ3RoKSx0aGlzLl9jcmVhdGVDb250YWluZXIodGhpcy5jaGFydF9kZWZpbml0aW9u
LnRhZyxpKSxlLnN0YXRlKCJ3YWl0IiwiUD0KbGVhc2Ugd2FpdC4uLiIpO2lmKCF0aGlzLmNoYXJ0
X2RlZmluaXRpb24uZXhlY3V0ZXx8dGhpcy5jaGFydF9kZWZpbml0aW9uLmV4PQplY3V0ZSYmZS5n
ZXQoIm1vZGlmaWVkIikpdGhpcy5hcHAuam9icy5jbGVhbnVwKGUpLGUuc2V0KCJtb2RpZmllZCIs
ITEpO3ZhciA9CnQ9M0R0aGlzO3JlcXVpcmUoWyJwbHVnaW4vY2hhcnRzLyIrdGhpcy5hcHAuY2hh
cnRQYXRoKHIpKyIvd3JhcHBlciJdLGZ1bmN0aT0Kb24ocil7aWYodC5jaGFydF9kZWZpbml0aW9u
LmV4ZWN1dGUpdC5hcHAuam9icy5yZXF1ZXN0KGUsdC5fZGVmYXVsdFNldHRpbmdzPQpTdHJpbmco
ZSksdC5fZGVmYXVsdFJlcXVlc3RTdHJpbmcoZSksZnVuY3Rpb24oKXt2YXIgaT0zRG5ldyByKHQu
YXBwLHtwcm9jZXM9CnNfaWQ6bixjaGFydDplLHJlcXVlc3RfZGljdGlvbmFyeTp0Ll9kZWZhdWx0
UmVxdWVzdERpY3Rpb25hcnkoZSksY2FudmFzX2xpcz0KdDp0LmNhbnZhc19saXN0fSl9LGZ1bmN0
aW9uKCl7dGhpcy5hcHAuZGVmZXJyZWQuZG9uZShuKX0pO2Vsc2UgdmFyIGk9M0RuZXcgPQpyKHQu
YXBwLHtwcm9jZXNzX2lkOm4sY2hhcnQ6ZSxyZXF1ZXN0X2RpY3Rpb25hcnk6dC5fZGVmYXVsdFJl
cXVlc3REaWN0aW9uYXI9CnkoZSksY2FudmFzX2xpc3Q6dC5jYW52YXNfbGlzdH0pfSl9LF9kZWZh
dWx0UmVxdWVzdFN0cmluZzpmdW5jdGlvbihlKXt2YXIgdD0KPTNEIiIsbj0zRDAscj0zRHRoaXM7
cmV0dXJuIGUuZ3JvdXBzLmVhY2goZnVuY3Rpb24oZSl7bisrO2Zvcih2YXIgaSBpbiByLmNoPQph
cnRfZGVmaW5pdGlvbi5jb2x1bW5zKXQrPTNEaSsiXyIrbisiOiIrKHBhcnNlSW50KGUuZ2V0KGkp
KSsxKSsiLCAifSksdC5zdWI9CnN0cmluZygwLHQubGVuZ3RoLTIpfSxfZGVmYXVsdFNldHRpbmdz
U3RyaW5nOmZ1bmN0aW9uKGUpe3ZhciB0PTNEIiI7Zm9yKGtleT0KIGluIGUuc2V0dGluZ3MuYXR0
cmlidXRlcyl0Kz0zRGtleSsiOiIrZS5zZXR0aW5ncy5nZXQoa2V5KSsiLCAiO3JldHVybiB0LnN1
PQpic3RyaW5nKDAsdC5sZW5ndGgtMil9LF9kZWZhdWx0UmVxdWVzdERpY3Rpb25hcnk6ZnVuY3Rp
b24oZSl7dmFyIHQ9M0R7Z3JvdXA9CnM6W119O3RoaXMuY2hhcnRfZGVmaW5pdGlvbi5leGVjdXRl
P3QuaWQ9M0RlLmdldCgiZGF0YXNldF9pZF9qb2IiKTp0LmlkPTNEZT0KLmdldCgiZGF0YXNldF9p
ZCIpO3ZhciByPTNEMCxpPTNEdGhpcztyZXR1cm4gZS5ncm91cHMuZWFjaChmdW5jdGlvbihlKXt2
YXIgPQpzPTNEe307Zm9yKHZhciBvIGluIGkuY2hhcnRfZGVmaW5pdGlvbi5jb2x1bW5zKXt2YXIg
dT0zRGkuY2hhcnRfZGVmaW5pdGlvbi49CmNvbHVtbnNbb107c1tvXT0zRG4ubWVyZ2Uoe2luZGV4
OmUuZ2V0KG8pfSx1KX10Lmdyb3Vwcy5wdXNoKHtrZXk6KytyKyI6IitlLj0KZ2V0KCJrZXkiKSxj
b2x1bW5zOnN9KX0pLHR9LF90ZW1wbGF0ZTpmdW5jdGlvbigpe3JldHVybic8ZGl2IGNsYXNzPTNE
ImNoYXJ0PQpzLXZpZXdwb3J0Ij48ZGl2IGlkPTNEImluZm8iIGNsYXNzPTNEImluZm8iPjxzcGFu
IGlkPTNEImljb24iIGNsYXNzPTNEImljb249CiIvPjxzcGFuIGlkPTNEInRleHQiIGNsYXNzPTNE
InRleHQiIC8+PC9kaXY+PC9kaXY+J30sX3RlbXBsYXRlQ29udGFpbmVyOmZ1bj0KY3Rpb24oZSx0
KXtyZXR1cm4nPGRpdiBjbGFzcz0zRCJjaGFydHMtdmlld3BvcnQtY29udGFpbmVyIiBzdHlsZT0z
RCJ3aWR0aDonPQordCsnJTsiPicrJzxkaXYgaWQ9M0QibWVudSIvPicrIjwiK2UrJyBpZD0zRCIn
K24udXVpZCgpKyciIGNsYXNzPTNEImNoYXJ0cy09CnZpZXdwb3J0LWNhbnZhcyI+JysiPC9kaXY+
In19KX0pLGRlZmluZSgicGx1Z2luL2xpYnJhcnkvc2NyZWVuc2hvdCIsWyJsaWJzLz0KdW5kZXJz
Y29yZSJdLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7ZS4kZWwuZmluZCgic3ZnIikubGVuZ3Ro
PjA/cihlKTpuKGUpPQp9ZnVuY3Rpb24gbihlKXt0cnl7dmFyIHQ9M0RlLiRlbC5maW5kKCIuanFw
bG90LXRhcmdldCIpLG49M0R0LmpxcGxvdFRvSW1hZ2U9ClN0cih7fSk7biYmKHdpbmRvdy5sb2Nh
dGlvbi5ocmVmPTNEbi5yZXBsYWNlKCJpbWFnZS9wbmciLCJpbWFnZS9vY3RldC1zdHJlYT0KbSIp
KX1jYXRjaChyKXtjb25zb2xlLmRlYnVnKCJGQUlMRUQgLSBTY3JlZW5zaG90OjpfZnJvbUNhbnZh
cygpIC0gIityKSxlLmVyPQpyb3ImJmUuZXJyb3IoIlBsZWFzZSByZWR1Y2UgeW91ciBjaGFydCB0
byBhIHNpbmdsZSBwYW5lbCBhbmQgdHJ5IGFnYWluLiIpfX09CmZ1bmN0aW9uIHIoZSl7dmFyIHQ9
M0RlLiRlbCxuPTNEZS51cmwscj0zRGUubmFtZSxzPTNEbmV3IFhNTFNlcmlhbGl6ZXIsbz0zRD0K
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksdT0zRCQobyksYT0zRHQuZmluZCgic3Zn
IikubGVuZ3RoLGY9M0R0LmZpPQpuZCgic3ZnIikuZmlyc3QoKSxsPTNEcGFyc2VJbnQoZi5jc3Mo
ImhlaWdodCIpKSxjPTNEcGFyc2VJbnQoZi5jc3MoIndpZHRoIik9Cik7dS5hdHRyKCJ3aWR0aCIs
YyphKSx1LmF0dHIoImhlaWdodCIsbCksKCFvLmdldENvbnRleHR8fCFvLmdldENvbnRleHQoIjJk
Ij0KKSkmJmFsZXJ0KCJZb3VyIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IHRoaXMgZmVhdHVyZSwg
cGxlYXNlIHVzZSBhIG1vZGVybiBiPQpyb3dzZXIiKTt2YXIgaD0zRG8uZ2V0Q29udGV4dCgiMmQi
KSxwPTNEMDt0LmZpbmQoInN2ZyIpLmVhY2goZnVuY3Rpb24oKXt2YXI9CiBlPTNEJCh0aGlzKTtl
LmF0dHIoe3ZlcnNpb246IjEuMSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3
aWR0aD0KOmMsaGVpZ2h0Omx9KTt2YXIgdD0zRHMuc2VyaWFsaXplVG9TdHJpbmcodGhpcyk7aC5k
cmF3U3ZnKHQscCwwLGMsbCkscCs9M0RjPQp9KSx3aW5kb3cubG9jYXRpb24uaHJlZj0zRGkobyxv
LmdldENvbnRleHQoIjJkIiksIndoaXRlIikucmVwbGFjZSgiaW1hZ2UvcG49CmciLCJpbWFnZS9v
Y3RldC1zdHJlYW0iKX1mdW5jdGlvbiBpKGUsdCxuKXt2YXIgcj0zRGUud2lkdGgsaT0zRGUuaGVp
Z2h0LHM7aT0KZihuKXtzPTNEdC5nZXRJbWFnZURhdGEoMCwwLHIsaSk7dmFyIG89M0R0Lmdsb2Jh
bENvbXBvc2l0ZU9wZXJhdGlvbjt0Lmdsb2JhPQpsQ29tcG9zaXRlT3BlcmF0aW9uPTNEImRlc3Rp
bmF0aW9uLW92ZXIiLHQuZmlsbFN0eWxlPTNEbix0LmZpbGxSZWN0KDAsMCxyLGk9Cil9dmFyIHU9
M0RlLnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7cmV0dXJuIG4mJih0LmNsZWFyUmVjdCgwLDAscixp
KSx0LnB1dEltYT0KZ2VEYXRhKHMsMCwwKSx0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0zRG8p
LHV9ZnVuY3Rpb24gcyhlKXt3aW5kb3cubG9jYXRpPQpvbi5ocmVmPTNEImRhdGE6bm9uZS9ub25l
O2Jhc2U2NCwiK2J0b2EoYShlKS5zdHJpbmcpfWZ1bmN0aW9uIG8oZSl7Zm9yKHZhciA9CnQgaW4g
ZG9jdW1lbnQuc3R5bGVTaGVldHMpe3ZhciBuPTNEZG9jdW1lbnQuc3R5bGVTaGVldHNbdF0scj0z
RG4uY3NzUnVsZXM7aT0KZihyKWZvcih2YXIgaT0zRDAscz0zRHIubGVuZ3RoO2k8cztpKyspdHJ5
e2UuZmluZChyW2ldLnNlbGVjdG9yVGV4dCkuZWFjaChmPQp1bmN0aW9uKGUsdCl7dC5zdHlsZS5j
c3NUZXh0Kz0zRHJbaV0uc3R5bGUuY3NzVGV4dH0pfWNhdGNoKG8pe319fWZ1bmN0aW9uIHU9Cihl
KXt2YXIgdD0zRGEoZSksbj0zRHtmaWxlbmFtZTpuYW1lfHwiY2hhcnQiLHR5cGU6ImFwcGxpY2F0
aW9uL3BkZiIsaGVpZ2h0Oj0KdC5oZWlnaHQsd2lkdGg6dC53aWR0aCxzY2FsZToyLHN2Zzp0LnN0
cmluZ30scj0zRCQoImJvZHkiKSxpPTNEci5maW5kKCIjdmllPQp3cG9ydC1mb3JtIik7aS5sZW5n
dGg9M0Q9M0Q9M0QwJiYoaT0zRCQoIjxmb3JtPiIse2lkOiJ2aWV3cG9ydC1mb3JtIixtZXRob2Q9
CjoicG9zdCIsYWN0aW9uOiJodHRwOi8vZXhwb3J0LmhpZ2hjaGFydHMuY29tLyIsZGlzcGxheToi
bm9uZSJ9KSxyLmFwcGVuZChpKT0KKSxpLmVtcHR5KCk7Zm9yKG5hbWUgaW4gbil7dmFyIHM9M0Qk
KCI8aW5wdXQvPiIse3R5cGU6ImhpZGRlbiIsbmFtZTpuYW1lLHZhPQpsdWU6bltuYW1lXX0pO2ku
YXBwZW5kKHMpfXRyeXtpLnN1Ym1pdCgpfWNhdGNoKG8pe2NvbnNvbGUubG9nKG8pfX1mdW5jdGlv
biA9CmEoZSl7aWYoZS4kZWwuZmluZCgic3ZnIikubGVuZ3RoPTNEPTNEMCYmZS5lcnJvcil7ZS5l
cnJvcigiTm8gU1ZHIGZvdW5kLiBUaD0KaXMgY2hhcnQgdHlwZSBkb2VzIG5vdCBzdXBwb3J0IFNW
Ry9QREYgZXhwb3J0LiIpO3JldHVybn12YXIgdD0zRGUuJGVsLG49M0R0PQouZmluZCgic3ZnIiku
bGVuZ3RoLHI9M0RwYXJzZUludCh0LmZpbmQoInN2ZyIpLmZpcnN0KCkuY3NzKCJoZWlnaHQiKSks
aT0zRHA9CmFyc2VJbnQodC5maW5kKCJzdmciKS5maXJzdCgpLmNzcygid2lkdGgiKSkscz0zRG5l
dyBYTUxTZXJpYWxpemVyLHU9M0QkKCI8cz0KdmcvPiIpO3UuYXR0cih7dmVyc2lvbjoiMS4xIix4
bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdpZHRoOmkqbixoPQplaWdodDpyfSk7
dmFyIGE9M0QiIixmPTNEMDtyZXR1cm4gdC5maW5kKCJzdmciKS5lYWNoKGZ1bmN0aW9uKCl7dmFy
IGU9M0QkKHQ9CmhpcykuY2xvbmUoKTtvKGUpO3ZhciB0PTNEJCgnPGcgdHJhbnNmb3JtPTNEInRy
YW5zbGF0ZSgnK2YrJywgMCkiPicpO3QuYXBwZT0KbmQoZS5maW5kKCJnIikuZmlyc3QoKSksdS5h
cHBlbmQodCksZis9M0RpfSkse3N0cmluZzpzLnNlcmlhbGl6ZVRvU3RyaW5nKHVbPQowXSksaGVp
Z2h0OnIsd2lkdGg6aX19cmV0dXJue2NyZWF0ZVBORzp0LGNyZWF0ZVNWRzpzLGNyZWF0ZVBERjp1
fX0pLGRlZmluZSg9CiJwbHVnaW4vdmlld3Mvdmlld2VyIixbInV0aWxzL3V0aWxzIiwibXZjL3Vp
L3VpLW1pc2MiLCJtdmMvdWkvdWktcG9ydGxldCIsIj0KcGx1Z2luL3ZpZXdzL3ZpZXdwb3J0Iiwi
cGx1Z2luL2xpYnJhcnkvc2NyZWVuc2hvdCJdLGZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0PQp1cm4g
QmFja2JvbmUuVmlldy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oZSxzKXt0aGlzLmFwcD0z
RGUsdGhpcy5jaGFydD0KPTNEdGhpcy5hcHAuY2hhcnQsdGhpcy52aWV3cG9ydF92aWV3PTNEbmV3
IHIoZSk7dmFyIG89M0R0aGlzO3RoaXMubWVzc2FnZT0KPTNEbmV3IHQuTWVzc2FnZTt2YXIgdT0z
RG5ldyB0LkJ1dHRvbk1lbnUoe2ljb246ImZhLWNhbWVyYSIsdGl0bGU6IlNjcmVlbnNoPQpvdCIs
dG9vbHRpcDoiRG93bmxvYWQgYXMgUE5HLCBTVkcgb3IgUERGIGZpbGUifSk7dS5hZGRNZW51KHtp
ZDoiYnV0dG9uLXBuZyI9Cix0aXRsZToiU2F2ZSBhcyBQTkciLGljb246ImZhLWZpbGUiLG9uY2xp
Y2s6ZnVuY3Rpb24oKXtvLl93YWl0KG8uY2hhcnQsZnVuYz0KdGlvbigpe2kuY3JlYXRlUE5HKHsk
ZWw6by52aWV3cG9ydF92aWV3LiRlbCx0aXRsZTpvLmNoYXJ0LmdldCgidGl0bGUiKSxlcnJvPQpy
OmZ1bmN0aW9uKGUpe28ubWVzc2FnZS51cGRhdGUoe21lc3NhZ2U6ZSxzdGF0dXM6ImRhbmdlciJ9
KX19KX0pfX0pLHUuYWRkTWU9Cm51KHtpZDoiYnV0dG9uLXN2ZyIsdGl0bGU6IlNhdmUgYXMgU1ZH
IixpY29uOiJmYS1maWxlLXRleHQtbyIsb25jbGljazpmdW5jdD0KaW9uKCl7by5fd2FpdChvLmNo
YXJ0LGZ1bmN0aW9uKCl7aS5jcmVhdGVTVkcoeyRlbDpvLnZpZXdwb3J0X3ZpZXcuJGVsLHRpdGxl
PQo6by5jaGFydC5nZXQoInRpdGxlIiksZXJyb3I6ZnVuY3Rpb24oZSl7by5tZXNzYWdlLnVwZGF0
ZSh7bWVzc2FnZTplLHN0YXR1czo9CiJkYW5nZXIifSl9fSl9KX19KSx1LmFkZE1lbnUoe2lkOiJi
dXR0b24tcG5nIix0aXRsZToiU2F2ZSBhcyBQREYiLGljb246ImZhLT0KZmlsZS1vIixvbmNsaWNr
OmZ1bmN0aW9uKCl7by5hcHAubW9kYWwuc2hvdyh7dGl0bGU6IlNlbmQgY2hhcnQgZGF0YSBmb3Ig
UERGPQogY3JlYXRpb24iLGJvZHk6IkdhbGF4eSBkb2VzIG5vdCBwcm92aWRlIGludGVncmF0ZWQg
UERGIGV4cG9ydCBzY3JpcHRzLiBZb3U9CiBtYXkgY2xpY2sgJ0NvbnRpbnVlJyB0byBjcmVhdGUg
dGhlIFBERiBieSB1c2luZyBhIDNyZCBwYXJ0eSBzZXJ2aWNlIChodHRwcz0KOi8vZXhwb3J0Lmhp
Z2hjaGFydHMuY29tKS4iLGJ1dHRvbnM6e0NhbmNlbDpmdW5jdGlvbigpe28uYXBwLm1vZGFsLmhp
ZGUoKX0sPQpDb250aW51ZTpmdW5jdGlvbigpe28uYXBwLm1vZGFsLmhpZGUoKSxvLl93YWl0KG8u
Y2hhcnQsZnVuY3Rpb24oKXtpLmNyZWF0ZVA9CkRGKHskZWw6by52aWV3cG9ydF92aWV3LiRlbCx0
aXRsZTpvLmNoYXJ0LmdldCgidGl0bGUiKSxlcnJvcjpmdW5jdGlvbihlKXtvLj0KbWVzc2FnZS51
cGRhdGUoe21lc3NhZ2U6ZSxzdGF0dXM6ImRhbmdlciJ9KX19KX0pfX19KX19KSx0aGlzLnBvcnRs
ZXQ9M0RuZXcgPQpuLlZpZXcoe2ljb246ImZhLWJhci1jaGFydC1vIix0aXRsZToiVmlld3BvcnQi
LG9wZXJhdGlvbnM6e2VkaXRfYnV0dG9uOm5ldyA9CnQuQnV0dG9uSWNvbih7aWNvbjoiZmEtZWRp
dCIsdG9vbHRpcDoiQ3VzdG9taXplIHRoaXMgY2hhcnQiLHRpdGxlOiJFZGl0b3IiLD0Kb25jbGlj
azpmdW5jdGlvbigpe28uX3dhaXQoby5jaGFydCxmdW5jdGlvbigpe28uYXBwLmdvKCJlZGl0b3Ii
KX0pfX0pLHBpY3R1PQpyZV9idXR0b25fbWVudTp1fX0pLHRoaXMucG9ydGxldC5hcHBlbmQodGhp
cy5tZXNzYWdlLiRlbCksdGhpcy5wb3J0bGV0LmFwcGU9Cm5kKHRoaXMudmlld3BvcnRfdmlldy4k
ZWwpLHRoaXMuc2V0RWxlbWVudCh0aGlzLnBvcnRsZXQuJGVsKTt2YXIgbz0zRHRoaXM7dD0KaGlz
LmNoYXJ0Lm9uKCJjaGFuZ2U6dGl0bGUiLGZ1bmN0aW9uKCl7by5fcmVmcmVzaFRpdGxlKCl9KX0s
c2hvdzpmdW5jdGlvbigpPQp7dGhpcy4kZWwuc2hvdygpLCQod2luZG93KS50cmlnZ2VyKCJyZXNp
emUiKX0saGlkZTpmdW5jdGlvbigpe3RoaXMuJGVsLmhpZGU9CigpfSxfcmVmcmVzaFRpdGxlOmZ1
bmN0aW9uKCl7dmFyIGU9M0R0aGlzLmNoYXJ0LmdldCgidGl0bGUiKTt0aGlzLnBvcnRsZXQudD0K
aXRsZShlKX0sX3dhaXQ6ZnVuY3Rpb24oZSx0KXt0aGlzLmFwcC5kZWZlcnJlZC5yZWFkeSgpP3Qo
KTp0aGlzLm1lc3NhZ2UudXBkPQphdGUoe21lc3NhZ2U6IllvdXIgY2hhcnQgaXMgY3VycmVudGx5
IGJlaW5nIHByb2Nlc3NlZC4gUGxlYXNlIHdhaXQgYW5kIHRyeSA9CmFnYWluLiJ9KX19KX0pLGRl
ZmluZSgibXZjL3VpL3VpLXRhYnMiLFsidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihlKXt2YXIgdD0z
RD0KQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0Ont0aXRsZV9uZXc6IiIsb3Bl
cmF0aW9uczpudWxsLG9ubmV3Om51PQpsbCxtYXg6bnVsbCxvbmNoYW5nZTpudWxsfSxpbml0aWFs
aXplOmZ1bmN0aW9uKHQpe3RoaXMudmlzaWJsZT0zRCExLHRoaXMuJG49CmF2PTNEbnVsbCx0aGlz
LiRjb250ZW50PTNEbnVsbCx0aGlzLmZpcnN0X3RhYj0zRG51bGwsdGhpcy5jdXJyZW50X2lkPTNE
bnVsbD0KLHRoaXMub3B0aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0KTt2YXIg
bj0zRCQodGhpcy5fdGVtcGxhdGUodGhpPQpzLm9wdGlvbnMpKTt0aGlzLiRuYXY9M0RuLmZpbmQo
Ii50YWItbmF2aWdhdGlvbiIpLHRoaXMuJGNvbnRlbnQ9M0RuLmZpbmQoIi49CnRhYi1jb250ZW50
IiksdGhpcy5zZXRFbGVtZW50KG4pLHRoaXMubGlzdD0zRHt9O3ZhciByPTNEdGhpczt0aGlzLm9w
dGlvbnMubz0KcGVyYXRpb25zJiYkLmVhY2godGhpcy5vcHRpb25zLm9wZXJhdGlvbnMsZnVuY3Rp
b24oZSx0KXt0LiRlbC5wcm9wKCJpZCIsZSksPQpyLiRuYXYuZmluZCgiLm9wZXJhdGlvbnMiKS5h
cHBlbmQodC4kZWwpfSk7aWYodGhpcy5vcHRpb25zLm9ubmV3KXt2YXIgaT0zRCQ9Cih0aGlzLl90
ZW1wbGF0ZV90YWJfbmV3KHRoaXMub3B0aW9ucykpO3RoaXMuJG5hdi5hcHBlbmQoaSksaS50b29s
dGlwKHt0aXRsZT0KOiJBZGQgYSBuZXcgdGFiIixwbGFjZW1lbnQ6ImJvdHRvbSIsY29udGFpbmVy
OnIuJGVsfSksaS5vbigiY2xpY2siLGZ1bmN0aW9uPQooZSl7aS50b29sdGlwKCJoaWRlIiksci5v
cHRpb25zLm9ubmV3KCl9KX19LHNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gXy5zaXplKHQ9Cmhpcy5s
aXN0KX0sY3VycmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRlbC5maW5kKCIudGFiLXBhbmUu
YWN0aXZlIikuYXR0cj0KKCJpZCIpfSxhZGQ6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0aGlzLG49M0Rl
LmlkLHI9M0QkKHRoaXMuX3RlbXBsYXRlX3RhYihlKSksPQppPTNEJCh0aGlzLl90ZW1wbGF0ZV90
YWJfY29udGVudChlKSk7dGhpcy5saXN0W25dPTNEZS5vbmRlbD8hMDohMSx0aGlzLm9wdGk9Cm9u
cy5vbm5ldz90aGlzLiRuYXYuZmluZCgiI25ldy10YWIiKS5iZWZvcmUocik6dGhpcy4kbmF2LmFw
cGVuZChyKSxpLmFwcGVuZD0KKGUuJGVsKSx0aGlzLiRjb250ZW50LmFwcGVuZChpKSx0aGlzLnNp
emUoKT0zRD0zRDEmJihyLmFkZENsYXNzKCJhY3RpdmUiKSxpPQouYWRkQ2xhc3MoImFjdGl2ZSIp
LHRoaXMuZmlyc3RfdGFiPTNEbiksdGhpcy5vcHRpb25zLm1heCYmdGhpcy5zaXplKCk+PTNEdGg9
CmlzLm9wdGlvbnMubWF4JiZ0aGlzLiRlbC5maW5kKCIjbmV3LXRhYiIpLmhpZGUoKTtpZihlLm9u
ZGVsKXt2YXIgcz0zRHIuZmluZD0KKCIjZGVsZXRlIik7cy50b29sdGlwKHt0aXRsZToiRGVsZXRl
IHRoaXMgdGFiIixwbGFjZW1lbnQ6ImJvdHRvbSIsY29udGFpbmVyPQo6dC4kZWx9KSxzLm9uKCJj
bGljayIsZnVuY3Rpb24oKXtyZXR1cm4gcy50b29sdGlwKCJkZXN0cm95IiksdC4kZWwuZmluZCgi
LnQ9Cm9vbHRpcCIpLnJlbW92ZSgpLGUub25kZWwoKSwhMX0pfXIub24oImNsaWNrIixmdW5jdGlv
bihyKXtyLnByZXZlbnREZWZhdWx0KD0KKSxlLm9uY2xpY2s/ZS5vbmNsaWNrKCk6dC5zaG93KG4p
fSksdGhpcy5jdXJyZW50X2lkfHwodGhpcy5jdXJyZW50X2lkPTNEbil9PQosZGVsOmZ1bmN0aW9u
KGUpe3RoaXMuJGVsLmZpbmQoIiN0YWItIitlKS5yZW1vdmUoKSx0aGlzLiRlbC5maW5kKCIjIitl
KS5yZW09Cm92ZSgpLHRoaXMuZmlyc3RfdGFiPTNEPTNEZSYmKHRoaXMuZmlyc3RfdGFiPTNEbnVs
bCksdGhpcy5maXJzdF90YWIhPTNEbnVsbD0KJiZ0aGlzLnNob3codGhpcy5maXJzdF90YWIpLHRo
aXMubGlzdFtlXSYmZGVsZXRlIHRoaXMubGlzdFtlXSx0aGlzLnNpemUoKTx0PQpoaXMub3B0aW9u
cy5tYXgmJnRoaXMuJGVsLmZpbmQoIiNuZXctdGFiIikuc2hvdygpfSxkZWxSZW1vdmFibGU6ZnVu
Y3Rpb24oKXs9CmZvcih2YXIgZSBpbiB0aGlzLmxpc3QpdGhpcy5kZWwoZSl9LHNob3c6ZnVuY3Rp
b24oZSl7dGhpcy4kZWwuZmFkZUluKCJmYXN0Ij0KKSx0aGlzLnZpc2libGU9M0QhMCxlJiYodGhp
cy4kZWwuZmluZCgiI3RhYi0iK3RoaXMuY3VycmVudF9pZCkucmVtb3ZlQ2xhc3MoPQoiYWN0aXZl
IiksdGhpcy4kZWwuZmluZCgiIyIrdGhpcy5jdXJyZW50X2lkKS5yZW1vdmVDbGFzcygiYWN0aXZl
IiksdGhpcy4kZWw9Ci5maW5kKCIjdGFiLSIrZSkuYWRkQ2xhc3MoImFjdGl2ZSIpLHRoaXMuJGVs
LmZpbmQoIiMiK2UpLmFkZENsYXNzKCJhY3RpdmUiKT0KLHRoaXMuY3VycmVudF9pZD0zRGUpLHRo
aXMub3B0aW9ucy5vbmNoYW5nZSYmdGhpcy5vcHRpb25zLm9uY2hhbmdlKGUpfSxoaWRlPQo6ZnVu
Y3Rpb24oKXt0aGlzLiRlbC5mYWRlT3V0KCJmYXN0IiksdGhpcy52aXNpYmxlPTNEITF9LGhpZGVP
cGVyYXRpb246ZnVuY3Q9CmlvbihlKXt0aGlzLiRuYXYuZmluZCgiIyIrZSkuaGlkZSgpfSxzaG93
T3BlcmF0aW9uOmZ1bmN0aW9uKGUpe3RoaXMuJG5hdi5maT0KbmQoIiMiK2UpLnNob3coKX0sc2V0
T3BlcmF0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0aGlzLiRuYXYuZmluZCgiIyIrZSk7PQpu
Lm9mZigiY2xpY2siKSxuLm9uKCJjbGljayIsdCl9LHRpdGxlOmZ1bmN0aW9uKGUsdCl7dmFyIG49
M0R0aGlzLiRlbC5maW5kKCI9CiN0YWItdGl0bGUtdGV4dC0iK2UpO3JldHVybiB0JiZuLmh0bWwo
dCksbi5odG1sKCl9LHJldGl0bGU6ZnVuY3Rpb24oZSl7dmFyID0KdD0zRDA7Zm9yKHZhciBuIGlu
IHRoaXMubGlzdCl0aGlzLnRpdGxlKG4sKyt0KyI6ICIrZSl9LF90ZW1wbGF0ZTpmdW5jdGlvbihl
PQope3JldHVybic8ZGl2IGNsYXNzPTNEInVpLXRhYnMgdGFiYmFibGUgdGFicy1sZWZ0Ij48dWwg
aWQ9M0QidGFiLW5hdmlnYXRpb249CiIgY2xhc3M9M0QidGFiLW5hdmlnYXRpb24gbmF2IG5hdi10
YWJzIj48ZGl2IGNsYXNzPTNEIm9wZXJhdGlvbnMiIHN0eWxlPTNEIj0KZmxvYXQ6IHJpZ2h0OyBt
YXJnaW4tYm90dG9tOiA0cHg7Ij48L2Rpdj48L3VsPjxkaXYgaWQ9M0QidGFiLWNvbnRlbnQiIGNs
YXNzPQo9M0QidGFiLWNvbnRlbnQiLz48L2Rpdj4nfSxfdGVtcGxhdGVfdGFiX25ldzpmdW5jdGlv
bihlKXtyZXR1cm4nPGxpIGlkPTNEIm49CmV3LXRhYiI+PGEgaHJlZj0zRCJqYXZhc2NyaXB0OnZv
aWQoMCk7Ij48aSBjbGFzcz0zRCJ1aS10YWJzLWFkZCBmYSBmYS1wbHVzLT0KY2lyY2xlIi8+Jytl
LnRpdGxlX25ldysiPC9hPiIrIjwvbGk+In0sX3RlbXBsYXRlX3RhYjpmdW5jdGlvbihlKXt2YXIg
dD0zRCc8PQpsaSBpZD0zRCJ0YWItJytlLmlkKyciIGNsYXNzPTNEInRhYi1lbGVtZW50Ij4nKyc8
YSBpZD0zRCJ0YWItdGl0bGUtbGluay0nK2U9Ci5pZCsnIiB0aXRsZT0zRCIiIGhyZWY9M0QiIycr
ZS5pZCsnIiBkYXRhLW9yaWdpbmFsLXRpdGxlPTNEIiI+JysnPHNwYW4gaWQ9Cj0zRCJ0YWItdGl0
bGUtdGV4dC0nK2UuaWQrJyIgY2xhc3M9M0QidGFiLXRpdGxlLXRleHQiPicrZS50aXRsZSsiPC9z
cGFuPiI7cj0KZXR1cm4gZS5vbmRlbCYmKHQrPTNEJzxpIGlkPTNEImRlbGV0ZSIgY2xhc3M9M0Qi
dWktdGFicy1kZWxldGUgZmEgZmEtbWludXMtPQpjaXJjbGUiLz4nKSx0Kz0zRCI8L2E+PC9saT4i
LHR9LF90ZW1wbGF0ZV90YWJfY29udGVudDpmdW5jdGlvbihlKXtyZXR1cm4nPGQ9Cml2IGlkPTNE
IicrZS5pZCsnIiBjbGFzcz0zRCJ0YWItcGFuZSIvPid9fSk7cmV0dXJue1ZpZXc6dH19KSxkZWZp
bmUoIm12Yy91aT0KL3VpLXRhYmxlIixbInV0aWxzL3V0aWxzIl0sZnVuY3Rpb24oZSl7dmFyIHQ9
M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7cm93Om51PQpsbCxyb3dfY291bnQ6MCxvcHRpb25zRGVm
YXVsdDp7Y29udGVudDoiTm8gY29udGVudCBhdmFpbGFibGUuIixvbmNoYW5nZTpudWw9Cmwsb25k
YmxjbGljazpudWxsLG9uY29uZmlybTpudWxsLGNsczoidWktdGFibGUiLGNsc190cjoiIn0sZXZl
bnRzOntjbGljazoiXz0Kb25jbGljayIsZGJsY2xpY2s6Il9vbmRibGNsaWNrIn0saW5pdGlhbGl6
ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lPQpyZ2UodCx0aGlzLm9wdGlvbnNEZWZh
dWx0KTt2YXIgbj0zRCQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSk7dGhpcy4kdGg9CmVh
ZD0zRG4uZmluZCgidGhlYWQiKSx0aGlzLiR0Ym9keT0zRG4uZmluZCgidGJvZHkiKSx0aGlzLiR0
bWVzc2FnZT0zRG4uZmluZD0KKCJ0bWVzc2FnZSIpLHRoaXMuc2V0RWxlbWVudChuKSx0aGlzLnJv
dz0zRHRoaXMuX3JvdygpfSxhZGRIZWFkZXI6ZnVuY3Rpb24oPQplKXt2YXIgdD0zRCQoIjx0aD48
L3RoPiIpO3QuYXBwZW5kKGUpLHRoaXMucm93LmFwcGVuZCh0KX0sYXBwZW5kSGVhZGVyOmZ1bmM9
CnRpb24oKXt0aGlzLiR0aGVhZC5hcHBlbmQodGhpcy5yb3cpLHRoaXMucm93PTNEJCgiPHRyPjwv
dHI+Iil9LGFkZDpmdW5jdGlvbj0KKGUsdCxuKXt2YXIgcj0zRCQoIjx0ZD48L3RkPiIpO3QmJnIu
Y3NzKCJ3aWR0aCIsdCksbiYmci5jc3MoInRleHQtYWxpZ24iLG4pPQosci5hcHBlbmQoZSksdGhp
cy5yb3cuYXBwZW5kKHIpfSxhcHBlbmQ6ZnVuY3Rpb24oZSx0KXt0aGlzLl9jb21taXQoZSx0LCEx
KX09CixwcmVwZW5kOmZ1bmN0aW9uKGUsdCl7dGhpcy5fY29tbWl0KGUsdCwhMCl9LGdldDpmdW5j
dGlvbihlKXtyZXR1cm4gdGhpcy4kZT0KbC5maW5kKCIjIitlKX0sZGVsOmZ1bmN0aW9uKGUpe3Zh
ciB0PTNEdGhpcy4kdGJvZHkuZmluZCgiIyIrZSk7dC5sZW5ndGg+MCYmPQoodC5yZW1vdmUoKSx0
aGlzLnJvd19jb3VudC0tLHRoaXMuX3JlZnJlc2goKSl9LGRlbEFsbDpmdW5jdGlvbigpe3RoaXMu
JHRib2Q9CnkuZW1wdHkoKSx0aGlzLnJvd19jb3VudD0zRDAsdGhpcy5fcmVmcmVzaCgpfSx2YWx1
ZTpmdW5jdGlvbihlKXt0aGlzLmJlZm9yZT0KPTNEdGhpcy4kdGJvZHkuZmluZCgiLmN1cnJlbnQi
KS5hdHRyKCJpZCIpLGUhPTNEPTNEdW5kZWZpbmVkJiYodGhpcy4kdGJvZHkuPQpmaW5kKCJ0ciIp
LnJlbW92ZUNsYXNzKCJjdXJyZW50IiksZSYmdGhpcy4kdGJvZHkuZmluZCgiIyIrZSkuYWRkQ2xh
c3MoImN1cnI9CmVudCIpKTt2YXIgdD0zRHRoaXMuJHRib2R5LmZpbmQoIi5jdXJyZW50IikuYXR0
cigiaWQiKTtyZXR1cm4gdD0zRD0zRD0zRHVuZD0KZWZpbmVkP251bGw6KHQhPTNEdGhpcy5iZWZv
cmUmJnRoaXMub3B0aW9ucy5vbmNoYW5nZSYmdGhpcy5vcHRpb25zLm9uY2hhbmdlPQooZSksdCl9
LHNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kdGJvZHkuZmluZCgidHIiKS5sZW5ndGh9LF9j
b21taXQ6ZnVuY3Q9CmlvbihlLHQsbil7dGhpcy5kZWwoZSksdGhpcy5yb3cuYXR0cigiaWQiLGUp
LG4/dGhpcy4kdGJvZHkucHJlcGVuZCh0aGlzLnJvdz0KKTp0aGlzLiR0Ym9keS5hcHBlbmQodGhp
cy5yb3cpLHQmJih0aGlzLnJvdy5oaWRlKCksdGhpcy5yb3cuZmFkZUluKCkpLHRoaXMuPQpyb3c9
M0R0aGlzLl9yb3coKSx0aGlzLnJvd19jb3VudCsrLHRoaXMuX3JlZnJlc2goKX0sX3JvdzpmdW5j
dGlvbigpe3JldHVybiA9CiQoJzx0ciBjbGFzcz0zRCInK3RoaXMub3B0aW9ucy5jbHNfdHIrJyI+
PC90cj4nKX0sX29uY2xpY2s6ZnVuY3Rpb24oZSl7dmFyID0KdD0zRHRoaXMudmFsdWUoKSxuPTNE
JChlLnRhcmdldCkuY2xvc2VzdCgidHIiKS5hdHRyKCJpZCIpO24hPTNEIiImJm4mJnQhPTNEPQpu
JiYodGhpcy5vcHRpb25zLm9uY29uZmlybT90aGlzLm9wdGlvbnMub25jb25maXJtKG4pOnRoaXMu
dmFsdWUobikpfSxfb25kYmw9CmNsaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy52YWx1ZSgp
O3QmJnRoaXMub3B0aW9ucy5vbmRibGNsaWNrJiZ0aGlzLm9wdD0KaW9ucy5vbmRibGNsaWNrKHQp
fSxfcmVmcmVzaDpmdW5jdGlvbigpe3RoaXMucm93X2NvdW50PTNEPTNEMD90aGlzLiR0bWVzc2Fn
PQplLnNob3coKTp0aGlzLiR0bWVzc2FnZS5oaWRlKCl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXty
ZXR1cm4nPGRpdj48dGFibGUgY2w9CmFzcz0zRCInK2UuY2xzKyciPicrIjx0aGVhZD48L3RoZWFk
PiIrIjx0Ym9keT48L3Rib2R5PiIrIjwvdGFibGU+IisiPHRtZXNzYT0KZ2U+IitlLmNvbnRlbnQr
IjwvdG1lc3NhZ2U+IisiPGRpdj4ifX0pO3JldHVybntWaWV3OnR9fSksZGVmaW5lKCJwbHVnaW4v
dmllPQp3cy9ncm91cCIsWyJtdmMvdWkvdWktdGFibGUiLCJtdmMvdWkvdWktbWlzYyIsInV0aWxz
L3V0aWxzIl0sZnVuY3Rpb24oZSx0LG49Cil7cmV0dXJuIEJhY2tib25lLlZpZXcuZXh0ZW5kKHtp
bml0aWFsaXplOmZ1bmN0aW9uKHIsaSl7dGhpcy5hcHA9M0RyO3ZhciBzPQo9M0R0aGlzO3RoaXMu
Y2hhcnQ9M0R0aGlzLmFwcC5jaGFydCx0aGlzLmdyb3VwPTNEaS5ncm91cCx0aGlzLmdyb3VwX2tl
eT0zRG49CmV3IHQuSW5wdXQoe3BsYWNlaG9sZGVyOiJEYXRhIGxhYmVsIixvbmNoYW5nZTpmdW5j
dGlvbihlKXtzLmdyb3VwLnNldCgia2V5Ij0KLGUpfX0pLHRoaXMudGFibGU9M0RuZXcgZS5WaWV3
KHtjb250ZW50OiJObyBkYXRhIGNvbHVtbi4ifSk7dmFyIG89M0QkKCI8ZGl2PQovPiIpO28uYXBw
ZW5kKG4ud3JhcCgobmV3IHQuTGFiZWwoe3RpdGxlOiJQcm92aWRlIGEgbGFiZWw6In0pKS4kZWwp
KSxvLmFwcGU9Cm5kKG4ud3JhcCh0aGlzLmdyb3VwX2tleS4kZWwpKSxvLmFwcGVuZChuLndyYXAo
KG5ldyB0LkxhYmVsKHt0aXRsZToiU2VsZWN0ID0KY29sdW1uczoifSkpLiRlbCkpLG8uYXBwZW5k
KG4ud3JhcCh0aGlzLnRhYmxlLiRlbCkpLHRoaXMuc2V0RWxlbWVudChvKTt2YXIgPQpzPTNEdGhp
czt0aGlzLmNoYXJ0Lm9uKCJjaGFuZ2U6ZGF0YXNldF9pZCIsZnVuY3Rpb24oKXtzLl9yZWZyZXNo
VGFibGUoKX0pLHQ9Cmhpcy5jaGFydC5vbigiY2hhbmdlOnR5cGUiLGZ1bmN0aW9uKCl7cy5fcmVm
cmVzaFRhYmxlKCl9KSx0aGlzLmdyb3VwLm9uKCJjaD0KYW5nZTprZXkiLGZ1bmN0aW9uKCl7cy5f
cmVmcmVzaEdyb3VwS2V5KCl9KSx0aGlzLmdyb3VwLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uPQooKXtz
Ll9yZWZyZXNoR3JvdXAoKX0pLHRoaXMuX3JlZnJlc2hUYWJsZSgpLHRoaXMuX3JlZnJlc2hHcm91
cEtleSgpLHRoaXMuX3I9CmVmcmVzaEdyb3VwKCl9LF9yZWZyZXNoVGFibGU6ZnVuY3Rpb24oKXt2
YXIgZT0zRHRoaXMuY2hhcnQuZ2V0KCJkYXRhc2V0X2lkIj0KKSxuPTNEdGhpcy5jaGFydC5nZXQo
InR5cGUiKTtpZighZXx8IW4pcmV0dXJuO3ZhciByPTNEdGhpcyxpPTNEdGhpcy5jaGFydC5kPQpl
ZmluaXRpb247dGhpcy50YWJsZS5kZWxBbGwoKTt2YXIgcz0zRHt9O2Zvcih2YXIgbyBpbiBpLmNv
bHVtbnMpe3ZhciB1PTNEaS49CmNvbHVtbnNbb107aWYoIXUpe2NvbnNvbGUuZGVidWcoIkdyb3Vw
OjpfcmVmcmVzaFRhYmxlKCkgLSBTa2lwcGluZyBjb2x1bW4gZD0KZWZpbml0aW9uLiIpO2NvbnRp
bnVlfXZhciBhPTNEbmV3IHQuU2VsZWN0LlZpZXcoe2lkOiJzZWxlY3RfIitvLHdhaXQ6ITB9KSxm
PQo9M0R1LnRpdGxlO3UuaXNfdW5pcXVlJiYoZis9M0QiJm5ic3A7KGFsbCBkYXRhIGxhYmVscyki
KSx0aGlzLnRhYmxlLmFkZChmLCI9CjI1JSIpLHRoaXMudGFibGUuYWRkKGEuJGVsKSx0aGlzLnRh
YmxlLmFwcGVuZChvKSxzW29dPTNEYX10aGlzLmNoYXJ0LnN0YXRlKD0KIndhaXQiLCJMb2FkaW5n
IG1ldGFkYXRhLi4uIik7dmFyIGw9M0R0aGlzLmFwcC5kZWZlcnJlZC5yZWdpc3RlcigpLGM9M0R7
aWQ6PQplLHN1Y2Nlc3M6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIHMpci5fYWRkUm93KHQsZSxz
LGkuY29sdW1uc1t0XSk7ci5jaGFydC49CnN0YXRlKCJvayIsIk1ldGFkYXRhIGluaXRpYWxpemVk
Li4uIiksci5hcHAuZGVmZXJyZWQuZG9uZShsKX19O3RoaXMuYXBwLmRhdD0KYXNldHMucmVxdWVz
dChjKX0sX2FkZFJvdzpmdW5jdGlvbihlLHQsbixyKXt2YXIgaT0zRHRoaXMscz0zRHIuaXNfbGFi
ZWwsbz0KPTNEci5pc19hdXRvLHU9M0RyLmlzX251bWVyaWMsYT0zRHIuaXNfdW5pcXVlLGY9M0Ry
LmlzX3plcm8sbD0zRFtdLGM9M0RuW2VdPQo7byYmbC5wdXNoKHtsYWJlbDoiQ29sdW1uOiBSb3cg
TnVtYmVyIix2YWx1ZToiYXV0byJ9KSxmJiZsLnB1c2goe2xhYmVsOiJDb2w9CnVtbjogTm9uZSIs
dmFsdWU6Inplcm8ifSk7dmFyIGg9M0R0Lm1ldGFkYXRhX2NvbHVtbl90eXBlcztmb3IodmFyIHAg
aW4gaCl7dj0KYXIgZD0zRCExO2hbcF09M0Q9M0QiaW50Inx8aFtwXT0zRD0zRCJmbG9hdCI/ZD0z
RHU6ZD0zRHMsZCYmbC5wdXNoKHtsYWJlbDoiPQpDb2x1bW46ICIrKHBhcnNlSW50KHApKzEpKyIg
WyIraFtwXSsiXSIsdmFsdWU6cH0pfWMudXBkYXRlKGwpLGEmJnRoaXMuY2hhcnQ9Ci5ncm91cHMu
Zmlyc3QoKSYmdGhpcy5ncm91cC5zZXQoZSx0aGlzLmNoYXJ0Lmdyb3Vwcy5maXJzdCgpLmdldChl
KSk7aWYoIWMuZT0KeGlzdHModGhpcy5ncm91cC5nZXQoZSkpKXt2YXIgdj0zRGMuZmlyc3QoKTtj
b25zb2xlLmRlYnVnKCdHcm91cCgpOjpfYWRkUm93PQooKSAtIFN3aXRjaGluZyBtb2RlbCB2YWx1
ZSBmcm9tICInK3RoaXMuZ3JvdXAuZ2V0KGUpKyciIHRvICInK3YrJyIuJyksdGhpcy49Cmdyb3Vw
LnNldChlLHYpfWMudmFsdWUodGhpcy5ncm91cC5nZXQoZSkpLHRoaXMuZ3JvdXAub2ZmKCJjaGFu
Z2U6IitlKSx0aGlzLj0KZ3JvdXAub24oImNoYW5nZToiK2UsZnVuY3Rpb24oKXtjLnZhbHVlKGku
Z3JvdXAuZ2V0KGUpKX0pLGMuc2V0T25DaGFuZ2UoZnVuPQpjdGlvbih0KXthP2kuY2hhcnQuZ3Jv
dXBzLmVhY2goZnVuY3Rpb24obil7bi5zZXQoZSx0KX0pOmkuZ3JvdXAuc2V0KGUsdCksaS49CmNo
YXJ0LnNldCgibW9kaWZpZWQiLCEwKX0pLGMuc2hvdygpfSxfcmVmcmVzaEdyb3VwOmZ1bmN0aW9u
KCl7dGhpcy5ncm91cC5zZT0KdCgiZGF0ZSIsbi50aW1lKCkpfSxfcmVmcmVzaEdyb3VwS2V5OmZ1
bmN0aW9uKCl7dmFyIGU9M0R0aGlzLmdyb3VwLmdldCgia2V5PQoiKTtlPTNEPTNEPTNEdW5kZWZp
bmVkJiYoZT0zRCIiKSxlIT0zRHRoaXMuZ3JvdXBfa2V5LnZhbHVlKCkmJnRoaXMuZ3JvdXBfa2U9
CnkudmFsdWUoZSl9fSl9KSxkZWZpbmUoInBsdWdpbi9saWJyYXJ5L3VpLXRhYmxlLWZvcm0iLFsi
bXZjL3VpL3VpLXRhYmxlIiwibT0KdmMvdWkvdWktbWlzYyIsInV0aWxzL3V0aWxzIl0sZnVuY3Rp
b24oZSx0LG4pe3ZhciByPTNEQmFja2JvbmUuVmlldy5leHRlbmQoPQp7b3B0aW9uc0RlZmF1bHQ6
e3RpdGxlOiIiLGNvbnRlbnQ6IiIsbW9kZToiIn0sbGlzdDpbXSxpbml0aWFsaXplOmZ1bmN0aW9u
KHI9CixpKXt0aGlzLmFwcD0zRHIsdGhpcy5vcHRpb25zPTNEbi5tZXJnZShpLHRoaXMub3B0aW9u
c0RlZmF1bHQpLHRoaXMudGFibGVfdD0KaXRsZT0zRG5ldyB0LkxhYmVsKHt0aXRsZTp0aGlzLm9w
dGlvbnMudGl0bGV9KSx0aGlzLnRhYmxlPTNEbmV3IGUuVmlldyh7Y29uPQp0ZW50OnRoaXMub3B0
aW9ucy5jb250ZW50fSk7dmFyIHM9M0QkKCc8ZGl2IGNsYXNzPTNEInVpLXRhYmxlLWZvcm0iLz4n
KTt0aGk9CnMub3B0aW9ucy50aXRsZSYmcy5hcHBlbmQobi53cmFwKHRoaXMudGFibGVfdGl0bGUu
JGVsKSkscy5hcHBlbmQobi53cmFwKHRoaT0Kcy50YWJsZS4kZWwpKSx0aGlzLnNldEVsZW1lbnQo
cyl9LHRpdGxlOmZ1bmN0aW9uKGUpe3RoaXMudGFibGVfdGl0bGUudGl0bGUoPQplKX0sdXBkYXRl
OmZ1bmN0aW9uKGUsdCl7dGhpcy50YWJsZS5kZWxBbGwoKSx0aGlzLmxpc3Q9M0RbXTtmb3IodmFy
IG4gaW4gZSk9CnRoaXMuX2FkZChlW25dLmlkfHxuLGVbbl0sdCk7Zm9yKHZhciBuIGluIHRoaXMu
bGlzdCl0aGlzLmxpc3Rbbl0udHJpZ2dlcigiYz0KaGFuZ2UiKX0sX2FkZDpmdW5jdGlvbihlLG4s
cil7dmFyIGk9M0R0aGlzLHM9M0RudWxsLG89M0RuLnR5cGU7c3dpdGNoKG8pe2NhPQpzZSJ0ZXh0
IjpzPTNEbmV3IHQuSW5wdXQoe2lkOiJmaWVsZC0iK2UscGxhY2Vob2xkZXI6bi5wbGFjZWhvbGRl
cix2YWx1ZTpyLmc9CmV0KGUpLG9uY2hhbmdlOmZ1bmN0aW9uKHQpe3Iuc2V0KGUsdCl9fSk7YnJl
YWs7Y2FzZSJyYWRpb2J1dHRvbiI6cz0zRG5ldyB0Lj0KUmFkaW9CdXR0b24uVmlldyh7aWQ6ImZp
ZWxkLSIrZSxkYXRhOm4uZGF0YSx2YWx1ZTpyLmdldChlKSxvbmNoYW5nZTpmdW5jdGlvPQpuKHQp
e3Iuc2V0KGUsdCk7dmFyIHM9M0RfLmZpbmRXaGVyZShuLmRhdGEse3ZhbHVlOnR9KTtpZihzJiZz
Lm9wZXJhdGlvbnMpe3Y9CmFyIG89M0RzLm9wZXJhdGlvbnM7Zm9yKHZhciB1IGluIG8uc2hvdyl7
dmFyIGE9M0RvLnNob3dbdV07aS50YWJsZS5nZXQoYSkucz0KaG93KCl9Zm9yKHZhciB1IGluIG8u
aGlkZSl7dmFyIGE9M0RvLmhpZGVbdV07aS50YWJsZS5nZXQoYSkuaGlkZSgpfX19fSk7YnJlPQph
aztjYXNlInNlbGVjdCI6cz0zRG5ldyB0LlNlbGVjdC5WaWV3KHtpZDoiZmllbGQtIitlLGRhdGE6
bi5kYXRhLHZhbHVlOnIuZ2U9CnQoZSksb25jaGFuZ2U6ZnVuY3Rpb24odCl7ci5zZXQoZSx0KTt2
YXIgcz0zRF8uZmluZFdoZXJlKG4uZGF0YSx7dmFsdWU6dH0pOz0KaWYocyYmcy5vcGVyYXRpb25z
KXt2YXIgbz0zRHMub3BlcmF0aW9ucztmb3IodmFyIHUgaW4gby5zaG93KXt2YXIgYT0zRG8uc2hv
PQp3W3VdO2kudGFibGUuZ2V0KGEpLnNob3coKX1mb3IodmFyIHUgaW4gby5oaWRlKXt2YXIgYT0z
RG8uaGlkZVt1XTtpLnRhYmxlLmc9CmV0KGEpLmhpZGUoKX19fX0pO2JyZWFrO2Nhc2UiZGF0YXNl
dCI6cz0zRG5ldyB0LlNlbGVjdC5WaWV3KHtpZDoiZmllbGQtIitlLD0Kb25jaGFuZ2U6ZnVuY3Rp
b24odCl7ci5zZXQoZSx0KX19KSxpLmFwcC5kYXRhc2V0cy5vbigiYWxsIixmdW5jdGlvbigpe3Zh
ciB0PQo9M0RbXTtpLmFwcC5kYXRhc2V0cy5lYWNoKGZ1bmN0aW9uKGUpe2UuZ2V0KCJkYXRhdHlw
ZV9pZCIpPTNEPTNEbi5kYXRhJiZ0LnA9CnVzaCh7dmFsdWU6ZS5nZXQoImlkIiksbGFiZWw6ZS5n
ZXQoIm5hbWUiKX0pfSkscy51cGRhdGUodCksci5nZXQoZSl8fHIuc2V0KD0KZSxzLmZpcnN0KCkp
LHMudmFsdWUoci5nZXQoZSkpfSksaS5hcHAuZGF0YXNldHMudHJpZ2dlcigiYWxsLmRhdGFzZXRz
Iik7YnJlPQphaztjYXNlInRleHRhcmVhIjpzPTNEbmV3IHQuVGV4dGFyZWEoe2lkOiJmaWVsZC0i
K2Usb25jaGFuZ2U6ZnVuY3Rpb24oKXtyLnM9CmV0KGUscy52YWx1ZSgpKX19KTticmVhaztjYXNl
InNlcGFyYXRvciI6cz0zRCQoIjxkaXYvPiIpO2JyZWFrO2RlZmF1bHQ6cz0zRD0KbmV3IHQuSW5w
dXQoe2lkOiJmaWVsZC0iK2UscGxhY2Vob2xkZXI6bi5wbGFjZWhvbGRlcix0eXBlOm4udHlwZSxv
bmNoYW5nZTpmPQp1bmN0aW9uKCl7ci5zZXQoZSxzLnZhbHVlKCkpfX0pfWlmKG8hPTNEInNlcGFy
YXRvciIpe3IuZ2V0KGUpfHxyLnNldChlLG4uaW49Cml0KSxzLnZhbHVlKHIuZ2V0KGUpKSx0aGlz
Lmxpc3RbZV09M0RzO3ZhciB1PTNEJCgiPGRpdi8+Iik7dS5hcHBlbmQocy4kZWwpLD0Kbi5pbmZv
JiZ1LmFwcGVuZCgnPGRpdiBjbGFzcz0zRCJ1aS10YWJsZS1mb3JtLWluZm8iPicrbi5pbmZvKyI8
L2Rpdj4iKSx0aGlzPQoub3B0aW9ucy5zdHlsZT0zRD0zRCJib2xkIj8odGhpcy50YWJsZS5hZGQo
KG5ldyB0LkxhYmVsKHt0aXRsZTpuLnRpdGxlLGNsczo9CiJmb3JtLWxhYmVsIn0pKS4kZWwpLHRo
aXMudGFibGUuYWRkKHUpKToodGhpcy50YWJsZS5hZGQoJzxzcGFuIGNsYXNzPTNEInVpLT0KdGFi
bGUtZm9ybS10aXRsZSI+JytuLnRpdGxlKyI8L3NwYW4+IiwiMjUlIiksdGhpcy50YWJsZS5hZGQo
dSkpfWVsc2UgdGhpcy50PQphYmxlLmFkZCgnPGRpdiBjbGFzcz0zRCJ1aS10YWJsZS1mb3JtLXNl
cGFyYXRvciI+JytuLnRpdGxlKyI6PGRpdi8+IiksdGhpcy49CnRhYmxlLmFkZCgkKCI8ZGl2Lz4i
KSk7dGhpcy50YWJsZS5hcHBlbmQoZSksbi5oaWRlJiZ0aGlzLnRhYmxlLmdldChlKS5oaWRlKD0K
KX19KTtyZXR1cm57VmlldzpyfX0pLGRlZmluZSgicGx1Z2luL3ZpZXdzL3NldHRpbmdzIixbIm12
Yy91aS91aS1taXNjIiwicGx1PQpnaW4vbGlicmFyeS91aS10YWJsZS1mb3JtIiwidXRpbHMvdXRp
bHMiXSxmdW5jdGlvbihlLHQsbil7cmV0dXJuIEJhY2tib25lLlY9Cmlldy5leHRlbmQoe2luaXRp
YWxpemU6ZnVuY3Rpb24oZSxuKXt0aGlzLmFwcD0zRGU7dmFyIHI9M0R0aGlzO3RoaXMuY2hhcnQ9
Cj0zRHRoaXMuYXBwLmNoYXJ0LHRoaXMuZm9ybT0zRG5ldyB0LlZpZXcoZSx7dGl0bGU6IkNvbmZp
Z3VyYXRpb24iLGNvbnRlbnQ6Ij0KVGhpcyBjaGFydCB0eXBlIGRvZXMgbm90IHByb3ZpZGUgYW55
IG9wdGlvbnMuIn0pLHRoaXMuc2V0RWxlbWVudCh0aGlzLmZvcm0uPQokZWwpO3ZhciByPTNEdGhp
czt0aGlzLmNoYXJ0Lm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7ci5fcmVmcmVzaCgpfSl9LF9yZWZy
ZXM9Cmg6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMuY2hhcnQuZGVmaW5pdGlvbjtpZighZSlyZXR1
cm47dGhpcy5mb3JtLnRpdGxlKGUuYz0KYXRlZ29yeSsiIC0gIitlLnRpdGxlKyI6IiksdGhpcy5m
b3JtLnVwZGF0ZShlLnNldHRpbmdzLHRoaXMuY2hhcnQuc2V0dGluZ3MpPQp9fSl9KSxkZWZpbmUo
InBsdWdpbi92aWV3cy90eXBlcyIsWyJ1dGlscy91dGlscyIsIm12Yy91aS91aS1taXNjIl0sZnVu
Y3Rpb249CihlLHQpe3JldHVybiBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6
e29uY2hhbmdlOm51bGwsb25kYmxjbGljaz0KOm51bGx9LGV2ZW50czp7Y2xpY2s6Il9vbmNsaWNr
IixkYmxjbGljazoiX29uZGJsY2xpY2sifSxpbml0aWFsaXplOmZ1bmN0aW9uPQoobixyKXt2YXIg
aT0zRHRoaXM7dGhpcy5hcHA9M0RuLHRoaXMub3B0aW9ucz0zRGUubWVyZ2Uocix0aGlzLm9wdGlv
bnNEZWZhdWw9CnQpO3ZhciBzPTNEJCgnPGRpdiBjbGFzcz0zRCJjaGFydHMtZ3JpZCIvPicpO3Mu
YXBwZW5kKGUud3JhcCgobmV3IHQuTGFiZWwoez0KdGl0bGU6IkhvdyBtYW55IGRhdGEgcG9pbnRz
IHdvdWxkIHlvdSBsaWtlIHRvIGFuYWx5emU/In0pKS4kZWwpKSx0aGlzLmxpYnJhPQpyeT0zRG5l
dyB0LlJhZGlvQnV0dG9uLlZpZXcoe2RhdGE6W3tsYWJlbDoiRmV3ICg8NTAwKSIsdmFsdWU6InNt
YWxsIn0se2xhYmU9Cmw6IlNvbWUgKDwxMGspIix2YWx1ZToibWVkaXVtIn0se2xhYmVsOiJNYW55
ICg+MTBrKSIsdmFsdWU6ImxhcmdlIn1dLG9uY2hhbj0KZ2U6ZnVuY3Rpb24oZSl7aS5fZmlsdGVy
KGUpfX0pLHMuYXBwZW5kKGUud3JhcCh0aGlzLmxpYnJhcnkuJGVsKSksdGhpcy5zZXRFPQpsZW1l
bnQocyksdGhpcy5fcmVuZGVyKCksdGhpcy5saWJyYXJ5LnZhbHVlKCJzbWFsbCIpLHRoaXMubGli
cmFyeS50cmlnZ2VyKCI9CmNoYW5nZSIpfSx2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMu
JGVsLmZpbmQoIi5jdXJyZW50IikuYXR0cigiaWQiKTtlIT0KPTNEPTNEdW5kZWZpbmVkJiYodGhp
cy4kZWwuZmluZCgiLmN1cnJlbnQiKS5yZW1vdmVDbGFzcygiY3VycmVudCIpLHRoaXMuJGVsPQou
ZmluZCgiIyIrZSkuYWRkQ2xhc3MoImN1cnJlbnQiKSk7dmFyIG49M0R0aGlzLiRlbC5maW5kKCIu
Y3VycmVudCIpLmF0dHIoImk9CmQiKTtyZXR1cm4gbj0zRD0zRD0zRHVuZGVmaW5lZD9udWxsOihu
IT0zRHQmJnRoaXMub3B0aW9ucy5vbmNoYW5nZSYmdGhpcy5vcD0KdGlvbnMub25jaGFuZ2UoZSks
bil9LF9maWx0ZXI6ZnVuY3Rpb24oZSl7dGhpcy4kZWwuZmluZCgiLmhlYWRlciIpLmhpZGUoKTt2
PQphciB0PTNEdGhpcy5hcHAudHlwZXMuYXR0cmlidXRlcztmb3IodmFyIG4gaW4gdCl7dmFyIHI9
M0R0W25dLGk9M0R0aGlzLiRlbC49CmZpbmQoIiMiK24pLHM9M0R0aGlzLiRlbC5maW5kKCIjdHlw
ZXMtaGVhZGVyLSIrdGhpcy5jYXRlZ29yaWVzX2luZGV4W3IuY2F0ZT0KZ29yeV0pLG89M0RyLmtl
eXdvcmRzfHwiIjtvLmluZGV4T2YoZSk+PTNEMD8oaS5zaG93KCkscy5zaG93KCkpOmkuaGlkZSgp
fX0sPQpfcmVuZGVyOmZ1bmN0aW9uKCl7dGhpcy5jYXRlZ29yaWVzPTNEe30sdGhpcy5jYXRlZ29y
aWVzX2luZGV4PTNEe307dmFyIGU9M0Q9CjAsdD0zRHRoaXMuYXBwLnR5cGVzLmF0dHJpYnV0ZXM7
Zm9yKHZhciBuIGluIHQpe3ZhciByPTNEdFtuXSxpPTNEci5jYXRlZ29yeT0KO3RoaXMuY2F0ZWdv
cmllc1tpXXx8KHRoaXMuY2F0ZWdvcmllc1tpXT0zRHt9LHRoaXMuY2F0ZWdvcmllc19pbmRleFtp
XT0zRGUrPQorKSx0aGlzLmNhdGVnb3JpZXNbaV1bbl09M0RyfWZvcih2YXIgaSBpbiB0aGlzLmNh
dGVnb3JpZXMpe3ZhciBzPTNEJCgnPGRpdiA9CnN0eWxlPTNEImNsZWFyOiBib3RoOyIvPicpO3Mu
YXBwZW5kKHRoaXMuX3RlbXBsYXRlX2hlYWRlcih7aWQ6InR5cGVzLWhlYWRlcj0KLSIrdGhpcy5j
YXRlZ29yaWVzX2luZGV4W2ldLHRpdGxlOml9KSk7Zm9yKHZhciBuIGluIHRoaXMuY2F0ZWdvcmll
c1tpXSl7dmFyPQogcj0zRHRoaXMuY2F0ZWdvcmllc1tpXVtuXSxvPTNEci50aXRsZSsiICgiK3Iu
bGlicmFyeSsiKSI7ci56b29tYWJsZSYmKG89M0Q9Cic8c3BhbiBjbGFzcz0zRCJmYSBmYS1zZWFy
Y2gtcGx1cyIvPicrbykscy5hcHBlbmQodGhpcy5fdGVtcGxhdGVfaXRlbSh7aWQ6bj0KLHRpdGxl
Om8sdXJsOmNvbmZpZy5hcHBfcm9vdCsiY2hhcnRzLyIrdGhpcy5hcHAuY2hhcnRQYXRoKG4pKyIv
bG9nby5wbmcifSkpPQp9dGhpcy4kZWwuYXBwZW5kKHMpfX0sX29uY2xpY2s6ZnVuY3Rpb24oZSl7
dmFyIHQ9M0R0aGlzLnZhbHVlKCksbj0zRCQoZS50YXI9CmdldCkuY2xvc2VzdCgiLml0ZW0iKS5h
dHRyKCJpZCIpO24hPTNEIiImJm4mJnQhPTNEbiYmdGhpcy52YWx1ZShuKX0sX29uZGJsYz0KbGlj
azpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMudmFsdWUoKTt0JiZ0aGlzLm9wdGlvbnMub25kYmxj
bGljayYmdGhpcy5vcHRpPQpvbnMub25kYmxjbGljayh0KX0sX3RlbXBsYXRlX2hlYWRlcjpmdW5j
dGlvbihlKXtyZXR1cm4nPGRpdiBpZD0zRCInK2UuaWQrJyI9CiBjbGFzcz0zRCJoZWFkZXIiPicr
IiZidWxsOyAiK2UudGl0bGUrIjxkaXY+In0sX3RlbXBsYXRlX2l0ZW06ZnVuY3Rpb24oZSl7cj0K
ZXR1cm4nPGRpdiBpZD0zRCInK2UuaWQrJyIgY2xhc3M9M0QiaXRlbSI+JysnPGltZyBjbGFzcz0z
RCJpbWFnZSIgc3JjPTNEIicrPQplLnVybCsnIj4nKyc8ZGl2IGNsYXNzPTNEInRpdGxlIj4nK2Uu
dGl0bGUrIjwvZGl2PiIrIjxkaXY+In19KX0pLGRlZmluZSgicGw9CnVnaW4vdmlld3MvZWRpdG9y
IixbIm12Yy91aS91aS10YWJzIiwibXZjL3VpL3VpLW1pc2MiLCJtdmMvdWkvdWktcG9ydGxldCIs
Ij0KdXRpbHMvdXRpbHMiLCJwbHVnaW4vbW9kZWxzL2NoYXJ0IiwicGx1Z2luL21vZGVscy9ncm91
cCIsInBsdWdpbi92aWV3cy9ncm91PQpwIiwicGx1Z2luL3ZpZXdzL3NldHRpbmdzIiwicGx1Z2lu
L3ZpZXdzL3R5cGVzIl0sZnVuY3Rpb24oZSx0LG4scixpLHMsbyx1LGE9Cil7cmV0dXJuIEJhY2ti
b25lLlZpZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKGkscyl7dmFyIG89M0R0aGlzO3Ro
aXMuYT0KcHA9M0RpLHRoaXMuY2hhcnQ9M0R0aGlzLmFwcC5jaGFydCx0aGlzLm1lc3NhZ2U9M0Ru
ZXcgdC5NZXNzYWdlLHRoaXMucG9ydGxlPQp0PTNEbmV3IG4uVmlldyh7aWNvbjoiZmEtYmFyLWNo
YXJ0LW8iLHRpdGxlOiJFZGl0b3IiLG9wZXJhdGlvbnM6e3NhdmU6bmV3IHQ9Ci5CdXR0b25JY29u
KHtpY29uOiJmYS1zYXZlIix0b29sdGlwOiJEcmF3IENoYXJ0Iix0aXRsZToiRHJhdyIsb25jbGlj
azpmdW5jdD0KaW9uKCl7by5fc2F2ZUNoYXJ0KCl9fSksYmFjazpuZXcgdC5CdXR0b25JY29uKHtp
Y29uOiJmYS1jYXJldC1sZWZ0Iix0b29sdGlwPQo6IlJldHVybiB0byBWaWV3ZXIiLHRpdGxlOiJD
YW5jZWwiLG9uY2xpY2s6ZnVuY3Rpb24oKXtvLmFwcC5nbygidmlld2VyIiksby49CmFwcC5zdG9y
YWdlLmxvYWQoKX19KX19KSx0aGlzLnR5cGVzPTNEbmV3IGEoaSx7b25jaGFuZ2U6ZnVuY3Rpb24o
ZSl7dmFyIHQ9Cj0zRG8uYXBwLnR5cGVzLmdldChlKTt0fHxjb25zb2xlLmRlYnVnKCJGQUlMRUQg
LSBFZGl0b3I6Om9uY2hhbmdlKCkgLSBDaGFydD0KIHR5cGUgbm90IHN1cHBvcnRlZC4iKSxvLmNo
YXJ0LmRlZmluaXRpb249M0R0LG8uY2hhcnQuc2V0dGluZ3MuY2xlYXIoKSxvLmNoPQphcnQuc2V0
KHt0eXBlOmV9KSxvLmNoYXJ0LnNldCgibW9kaWZpZWQiLCEwKSxjb25zb2xlLmRlYnVnKCJFZGl0
b3I6Om9uY2hhbmc9CmUoKSAtIFN3aXRjaGVkIGNoYXJ0IHR5cGUuIil9LG9uZGJsY2xpY2s6ZnVu
Y3Rpb24oZSl7by5fc2F2ZUNoYXJ0KCl9fSksdGhpcz0KLnRhYnM9M0RuZXcgZS5WaWV3KHt0aXRs
ZV9uZXc6IkFkZCBEYXRhIixvbm5ldzpmdW5jdGlvbigpe3ZhciBlPTNEby5fYWRkR3JvPQp1cE1v
ZGVsKCk7by50YWJzLnNob3coZS5pZCl9fSksdGhpcy50aXRsZT0zRG5ldyB0LklucHV0KHtwbGFj
ZWhvbGRlcjoiQ2hhcnQ9CiB0aXRsZSIsb25jaGFuZ2U6ZnVuY3Rpb24oKXtvLmNoYXJ0LnNldCgi
dGl0bGUiLG8udGl0bGUudmFsdWUoKSl9fSk7dmFyIGY9Cj0zRCQoIjxkaXYvPiIpO2YuYXBwZW5k
KHIud3JhcCgobmV3IHQuTGFiZWwoe3RpdGxlOiJQcm92aWRlIGEgY2hhcnQgdGl0bGU6Ij0KfSkp
LiRlbCkpLGYuYXBwZW5kKHRoaXMudGl0bGUuJGVsKSxmLmFwcGVuZCgkKCI8ZGl2Lz4iKS5hZGRD
bGFzcygidWktdGFibGUtPQpmb3JtLWluZm8iKS5odG1sKCJUaGlzIHRpdGxlIHdpbGwgYXBwZWFy
IGluIHRoZSBsaXN0IG9mICdTYXZlZCBWaXN1YWxpemF0aW89Cm5zJy4gQ2hhcnRzIGFyZSBzYXZl
ZCB1cG9uIGNyZWF0aW9uLiIpKSxmLmFwcGVuZChyLndyYXAoKSksZi5hcHBlbmQoci53cmFwKD0K
dGhpcy50eXBlcy4kZWwpKSx0aGlzLnRhYnMuYWRkKHtpZDoibWFpbiIsdGl0bGU6IlN0YXJ0Iiwk
ZWw6Zn0pLHRoaXMuc2V0dGluPQpncz0zRG5ldyB1KHRoaXMuYXBwKSx0aGlzLnRhYnMuYWRkKHtp
ZDoic2V0dGluZ3MiLHRpdGxlOiJDb25maWd1cmF0aW9uIiwkZWw9Cjp0aGlzLnNldHRpbmdzLiRl
bH0pLHRoaXMucG9ydGxldC5hcHBlbmQodGhpcy5tZXNzYWdlLiRlbCksdGhpcy5wb3J0bGV0LmFw
cD0KZW5kKHRoaXMudGFicy4kZWwpLHRoaXMuc2V0RWxlbWVudCh0aGlzLnBvcnRsZXQuJGVsKSx0
aGlzLnRhYnMuaGlkZU9wZXJhdGlvPQpuKCJiYWNrIik7dmFyIG89M0R0aGlzO3RoaXMuY2hhcnQu
b24oImNoYW5nZTp0aXRsZSIsZnVuY3Rpb24oZSl7by5fcmVmcmVzaFQ9Cml0bGUoKX0pLHRoaXMu
Y2hhcnQub24oImNoYW5nZTp0eXBlIixmdW5jdGlvbihlKXtvLnR5cGVzLnZhbHVlKGUuZ2V0KCJ0
eXBlIj0KKSl9KSx0aGlzLmNoYXJ0Lm9uKCJyZXNldCIsZnVuY3Rpb24oZSl7by5fcmVzZXRDaGFy
dCgpfSksdGhpcy5hcHAuY2hhcnQub24oPQoicmVkcmF3IixmdW5jdGlvbihlKXtvLnBvcnRsZXQu
c2hvd09wZXJhdGlvbigiYmFjayIpfSksdGhpcy5hcHAuY2hhcnQuZ3JvdXA9CnMub24oImFkZCIs
ZnVuY3Rpb24oZSl7by5fYWRkR3JvdXAoZSl9KSx0aGlzLmFwcC5jaGFydC5ncm91cHMub24oInJl
bW92ZSIsZj0KdW5jdGlvbihlKXtvLl9yZW1vdmVHcm91cChlKX0pLHRoaXMuYXBwLmNoYXJ0Lmdy
b3Vwcy5vbigicmVzZXQiLGZ1bmN0aW9uKGUpPQp7by5fcmVtb3ZlQWxsR3JvdXBzKCl9KSx0aGlz
LmFwcC5jaGFydC5ncm91cHMub24oImNoYW5nZTprZXkiLGZ1bmN0aW9uKGUpe289Ci5fcmVmcmVz
aEdyb3VwS2V5KCl9KSx0aGlzLl9yZXNldENoYXJ0KCl9LHNob3c6ZnVuY3Rpb24oKXt0aGlzLiRl
bC5zaG93KCl9LD0KaGlkZTpmdW5jdGlvbigpe3RoaXMuJGVsLmhpZGUoKX0sX3JlZnJlc2hUaXRs
ZTpmdW5jdGlvbigpe3ZhciBlPTNEdGhpcy5jaGFyPQp0LmdldCgidGl0bGUiKTt0aGlzLnBvcnRs
ZXQudGl0bGUoZSksdGhpcy50aXRsZS52YWx1ZSgpIT0zRGUmJnRoaXMudGl0bGUudmE9Cmx1ZShl
KX0sX3JlZnJlc2hHcm91cEtleTpmdW5jdGlvbigpe3ZhciBlPTNEdGhpcyx0PTNEMDt0aGlzLmNo
YXJ0Lmdyb3Vwcy5lYT0KY2goZnVuY3Rpb24obil7dmFyIHI9M0RuLmdldCgia2V5IiwiIik7cj0z
RD0zRCIiJiYocj0zRCJEYXRhIGxhYmVsIiksZS50YWJzPQoudGl0bGUobi5pZCwrK3QrIjogIity
KX0pfSxfYWRkR3JvdXBNb2RlbDpmdW5jdGlvbigpe3ZhciBlPTNEbmV3IHMoe2lkOnIudXU9Cmlk
KCl9KTtyZXR1cm4gdGhpcy5jaGFydC5ncm91cHMuYWRkKGUpLGV9LF9hZGRHcm91cDpmdW5jdGlv
bihlKXt2YXIgdD0zRHRoaT0KcyxuPTNEbmV3IG8odGhpcy5hcHAse2dyb3VwOmV9KTt0aGlzLnRh
YnMuYWRkKHtpZDplLmlkLCRlbDpuLiRlbCxvbmRlbDpmdW5jPQp0aW9uKCl7dC5jaGFydC5ncm91
cHMucmVtb3ZlKGUuaWQpfX0pLHRoaXMuX3JlZnJlc2hHcm91cEtleSgpLHRoaXMuY2hhcnQuc2U9
CnQoIm1vZGlmaWVkIiwhMCl9LF9yZW1vdmVHcm91cDpmdW5jdGlvbihlKXt0aGlzLnRhYnMuZGVs
KGUuaWQpLHRoaXMuX3JlZnJlcz0KaEdyb3VwS2V5KCksdGhpcy5jaGFydC5zZXQoIm1vZGlmaWVk
IiwhMCl9LF9yZW1vdmVBbGxHcm91cHM6ZnVuY3Rpb24oZSl7dGhpPQpzLnRhYnMuZGVsUmVtb3Zh
YmxlKCl9LF9yZXNldENoYXJ0OmZ1bmN0aW9uKCl7dGhpcy5jaGFydC5zZXQoImlkIixyLnV1aWQo
KSk9Cix0aGlzLmNoYXJ0LnNldCgidHlwZSIsIm52ZDNfYmFyIiksdGhpcy5jaGFydC5zZXQoImRh
dGFzZXRfaWQiLHRoaXMuYXBwLm9wdD0KaW9ucy5jb25maWcuZGF0YXNldF9pZCksdGhpcy5jaGFy
dC5zZXQoInRpdGxlIiwiTmV3IENoYXJ0IiksdGhpcy5wb3J0bGV0LmhpPQpkZU9wZXJhdGlvbigi
YmFjayIpfSxfc2F2ZUNoYXJ0OmZ1bmN0aW9uKCl7dGhpcy5jaGFydC5zZXQoe3R5cGU6dGhpcy50
eXBlcy49CnZhbHVlKCksdGl0bGU6dGhpcy50aXRsZS52YWx1ZSgpLGRhdGU6ci50aW1lKCl9KTtp
Zih0aGlzLmNoYXJ0Lmdyb3Vwcy5sZW5ndD0KaD0zRD0zRDApe3RoaXMubWVzc2FnZS51cGRhdGUo
e21lc3NhZ2U6IlBsZWFzZSBzZWxlY3QgZGF0YSBjb2x1bW5zIGJlZm9yZSBkPQpyYXdpbmcgdGhl
IGNoYXJ0LiJ9KTt2YXIgZT0zRHRoaXMuX2FkZEdyb3VwTW9kZWwoKTt0aGlzLnRhYnMuc2hvdyhl
LmlkKTtyZXQ9CnVybn12YXIgdD0zRHRoaXMsbj0zRCEwLGk9M0R0aGlzLmNoYXJ0LmRlZmluaXRp
b247dGhpcy5jaGFydC5ncm91cHMuZWFjaChmdT0KbmN0aW9uKGUpe2lmKCFuKXJldHVybjtmb3Io
dmFyIHIgaW4gaS5jb2x1bW5zKWlmKGUuYXR0cmlidXRlc1tyXT0zRD0zRCJudWxsPQoiKXt0Lm1l
c3NhZ2UudXBkYXRlKHtzdGF0dXM6ImRhbmdlciIsbWVzc2FnZToiVGhpcyBjaGFydCB0eXBlIHJl
cXVpcmVzIGNvbHU9Cm1uIHR5cGVzIG5vdCBmb3VuZCBpbiB5b3VyIHRhYnVsYXIgZmlsZS4ifSks
dC50YWJzLnNob3coZS5pZCksbj0zRCExO3JldHVybj0KfX0pO2lmKCFuKXJldHVybjt0aGlzLmFw
cC5nbygidmlld2VyIik7dmFyIHQ9M0R0aGlzO3RoaXMuYXBwLmRlZmVycmVkLmV4ZWN1PQp0ZShm
dW5jdGlvbigpe3QuYXBwLnN0b3JhZ2Uuc2F2ZSgpLHQuY2hhcnQudHJpZ2dlcigicmVkcmF3Iil9
KX19KX0pLGRlZmluZSg9CiJwbHVnaW4vbW9kZWxzL2NvbmZpZyIsW10sZnVuY3Rpb24oKXtyZXR1
cm4gQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHtkZWZhdWx0cz0KOntxdWVyeV9saW1pdDoxZTQscXVl
cnlfdGltZW91dDoxMDB9fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvZm9ybXMvZGVmYXVsPQp0
IixbXSxmdW5jdGlvbigpe3JldHVybnt0aXRsZToiIixjYXRlZ29yeToiIixsaWJyYXJ5OiIiLHRh
ZzoiIixrZXl3b3JkczoiIiw9CnNldHRpbmdzOntzZXBhcmF0b3JfeDp7dGl0bGU6IlggYXhpcyIs
dHlwZToic2VwYXJhdG9yIn0seF9heGlzX2xhYmVsOnt0aXRsZT0KOiJBeGlzIGxhYmVsIixpbmZv
OiJQcm92aWRlIGEgbGFiZWwgZm9yIHRoZSBheGlzLiIsdHlwZToidGV4dCIsaW5pdDoiWC1heGlz
PQoiLHBsYWNlaG9sZGVyOiJBeGlzIGxhYmVsIn0seF9heGlzX3R5cGU6e3RpdGxlOiJBeGlzIHZh
bHVlIHR5cGUiLGluZm86IlNlbGU9CmN0IHRoZSB2YWx1ZSB0eXBlIG9mIHRoZSBheGlzLiIsdHlw
ZToic2VsZWN0Iixpbml0OiJhdXRvIixkYXRhOlt7bGFiZWw6Ii0tID0KRG8gbm90IHNob3cgdmFs
dWVzIC0tIix2YWx1ZToiaGlkZSIsb3BlcmF0aW9uczp7aGlkZTpbInhfYXhpc19wcmVjaXNpb24i
XX19PQose2xhYmVsOiJBdXRvIix2YWx1ZToiYXV0byIsb3BlcmF0aW9uczp7aGlkZTpbInhfYXhp
c19wcmVjaXNpb24iXX19LHtsYWJlbDo9CiJGbG9hdCIsdmFsdWU6ImYiLG9wZXJhdGlvbnM6e3No
b3c6WyJ4X2F4aXNfcHJlY2lzaW9uIl19fSx7bGFiZWw6IkV4cG9uZW50Ij0KLHZhbHVlOiJlIixv
cGVyYXRpb25zOntzaG93OlsieF9heGlzX3ByZWNpc2lvbiJdfX0se2xhYmVsOiJJbnRlZ2VyIix2
YWx1ZToiPQpkIixvcGVyYXRpb25zOntoaWRlOlsieF9heGlzX3ByZWNpc2lvbiJdfX0se2xhYmVs
OiJQZXJjZW50YWdlIix2YWx1ZToicCIsb3A9CmVyYXRpb25zOntzaG93OlsieF9heGlzX3ByZWNp
c2lvbiJdfX0se2xhYmVsOiJTSS1wcmVmaXgiLHZhbHVlOiJzIixvcGVyYXRpbz0KbnM6e2hpZGU6
WyJ4X2F4aXNfcHJlY2lzaW9uIl19fV19LHhfYXhpc19wcmVjaXNpb246e3RpdGxlOiJBeGlzIHRp
Y2sgZm9ybWF0PQoiLGluZm86IlNlbGVjdCB0aGUgdGljayBmb3JtYXQgZm9yIHRoZSBheGlzLiIs
dHlwZToic2VsZWN0Iixpbml0OiIxIixkYXRhOls9CntsYWJlbDoiMC4wMDAwMSIsdmFsdWU6IjUi
fSx7bGFiZWw6IjAuMDAwMSIsdmFsdWU6IjQifSx7bGFiZWw6IjAuMDAxIix2YWx1ZT0KOiIzIn0s
e2xhYmVsOiIwLjAxIix2YWx1ZToiMiJ9LHtsYWJlbDoiMC4xIix2YWx1ZToiMSJ9LHtsYWJlbDoi
MSIsdmFsdWU6IjAiPQp9XX0sc2VwYXJhdG9yX3k6e3RpdGxlOiJZIGF4aXMiLHR5cGU6InNlcGFy
YXRvciJ9LHlfYXhpc19sYWJlbDp7dGl0bGU6IkF4aXM9CiBsYWJlbCIsaW5mbzoiUHJvdmlkZSBh
IGxhYmVsIGZvciB0aGUgYXhpcy4iLHR5cGU6InRleHQiLGluaXQ6IlktYXhpcyIscGxhYz0KZWhv
bGRlcjoiQXhpcyBsYWJlbCJ9LHlfYXhpc190eXBlOnt0aXRsZToiQXhpcyB2YWx1ZSB0eXBlIixp
bmZvOiJTZWxlY3QgdGhlPQogdmFsdWUgdHlwZSBvZiB0aGUgYXhpcy4iLHR5cGU6InNlbGVjdCIs
aW5pdDoiYXV0byIsZGF0YTpbe2xhYmVsOiItLSBEbyBub3Q9CiBzaG93IHZhbHVlcyAtLSIsdmFs
dWU6ImhpZGUiLG9wZXJhdGlvbnM6e2hpZGU6WyJ5X2F4aXNfcHJlY2lzaW9uIl19fSx7bGFiZT0K
bDoiQXV0byIsdmFsdWU6ImF1dG8iLG9wZXJhdGlvbnM6e2hpZGU6WyJ5X2F4aXNfcHJlY2lzaW9u
Il19fSx7bGFiZWw6IkZsb2F0PQoiLHZhbHVlOiJmIixvcGVyYXRpb25zOntzaG93OlsieV9heGlz
X3ByZWNpc2lvbiJdfX0se2xhYmVsOiJFeHBvbmVudCIsdmFsdWU9CjoiZSIsb3BlcmF0aW9uczp7
c2hvdzpbInlfYXhpc19wcmVjaXNpb24iXX19LHtsYWJlbDoiSW50ZWdlciIsdmFsdWU6ImQiLG9w
ZT0KcmF0aW9uczp7aGlkZTpbInlfYXhpc19wcmVjaXNpb24iXX19LHtsYWJlbDoiUGVyY2VudGFn
ZSIsdmFsdWU6InAiLG9wZXJhdGlvPQpuczp7c2hvdzpbInlfYXhpc19wcmVjaXNpb24iXX19LHts
YWJlbDoiU0ktcHJlZml4Iix2YWx1ZToicyIsb3BlcmF0aW9uczp7aGk9CmRlOlsieV9heGlzX3By
ZWNpc2lvbiJdfX1dfSx5X2F4aXNfcHJlY2lzaW9uOnt0aXRsZToiQXhpcyB0aWNrIGZvcm1hdCIs
aW5mbz0KOiJTZWxlY3QgdGhlIHRpY2sgZm9ybWF0IGZvciB0aGUgYXhpcy4iLHR5cGU6InNlbGVj
dCIsaW5pdDoiMSIsZGF0YTpbe2xhYmVsPQo6IjAuMDAwMDEiLHZhbHVlOiI1In0se2xhYmVsOiIw
LjAwMDEiLHZhbHVlOiI0In0se2xhYmVsOiIwLjAwMSIsdmFsdWU6IjMifSw9CntsYWJlbDoiMC4w
MSIsdmFsdWU6IjIifSx7bGFiZWw6IjAuMSIsdmFsdWU6IjEifSx7bGFiZWw6IjEiLHZhbHVlOiIw
In1dfSxzZT0KcGFyYXRvcl9sZWdlbmQ6e3RpdGxlOiJPdGhlcnMiLHR5cGU6InNlcGFyYXRvciJ9
LHNob3dfbGVnZW5kOnt0aXRsZToiU2hvdyBsPQplZ2VuZCIsaW5mbzoiV291bGQgeW91IGxpa2Ug
dG8gYWRkIGEgbGVnZW5kPyIsdHlwZToicmFkaW9idXR0b24iLGluaXQ6InRydWU9CiIsZGF0YTpb
e2xhYmVsOiJZZXMiLHZhbHVlOiJ0cnVlIn0se2xhYmVsOiJObyIsdmFsdWU6ImZhbHNlIn1dfSx1
c2VfcGFuZWxzOj0Ke3RpdGxlOiJVc2UgbXVsdGktcGFuZWxzIixpbmZvOiJXb3VsZCB5b3UgbGlr
ZSB0byBzZXBhcmF0ZSB5b3VyIGRhdGEgaW50byBpPQpuZGl2aWR1YWwgcGFuZWxzPyIsdHlwZToi
cmFkaW9idXR0b24iLGluaXQ6ImZhbHNlIixkYXRhOlt7bGFiZWw6IlllcyIsdmFsdWU9CjoidHJ1
ZSJ9LHtsYWJlbDoiTm8iLHZhbHVlOiJmYWxzZSJ9XX19fX0pLGZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dChlLHQpe3JldHVybj0KKG5ldyBEYXRlKHQsZSsxLDApKS5nZXREYXRlKCl9ZnVuY3Rpb24gbihl
LHQsbil7cmV0dXJuIGZ1bmN0aW9uKHIsaSxzKXt2YXIgPQpvPTNEZShyKSx1PTNEW107bzxyJiZ0
KG8pO2lmKHM+MSl3aGlsZShvPGkpe3ZhciBhPTNEbmV3IERhdGUoK28pO24oYSklcz0zRD0KPTNE
PTNEMCYmdS5wdXNoKGEpLHQobyl9ZWxzZSB3aGlsZShvPGkpdS5wdXNoKG5ldyBEYXRlKCtvKSks
dChvKTtyZXR1cm4gdX19PQp2YXIgZT0zRHdpbmRvdy5udnx8e307ZS52ZXJzaW9uPTNEIjEuMS4x
NWIiLGUuZGV2PTNEITAsd2luZG93Lm52PTNEZSxlLnRvb2w9CnRpcD0zRGUudG9vbHRpcHx8e30s
ZS51dGlscz0zRGUudXRpbHN8fHt9LGUubW9kZWxzPTNEZS5tb2RlbHN8fHt9LGUuY2hhcnRzPQo9
M0R7fSxlLmdyYXBocz0zRFtdLGUubG9ncz0zRHt9LGUuZGlzcGF0Y2g9M0RkMy5kaXNwYXRjaCgi
cmVuZGVyX3N0YXJ0IiwicmU9Cm5kZXJfZW5kIiksZS5kZXYmJihlLmRpc3BhdGNoLm9uKCJyZW5k
ZXJfc3RhcnQiLGZ1bmN0aW9uKHQpe2UubG9ncy5zdGFydFRpbT0KZT0zRCsobmV3IERhdGUpfSks
ZS5kaXNwYXRjaC5vbigicmVuZGVyX2VuZCIsZnVuY3Rpb24odCl7ZS5sb2dzLmVuZFRpbWU9M0Qr
PQoobmV3IERhdGUpLGUubG9ncy50b3RhbFRpbWU9M0RlLmxvZ3MuZW5kVGltZS1lLmxvZ3Muc3Rh
cnRUaW1lLGUubG9nKCJ0b3RhbCI9CixlLmxvZ3MudG90YWxUaW1lKX0pKSxlLmxvZz0zRGZ1bmN0
aW9uKCl7aWYoZS5kZXYmJmNvbnNvbGUubG9nJiZjb25zb2xlLmxvZz0KLmFwcGx5KWNvbnNvbGUu
bG9nLmFwcGx5KGNvbnNvbGUsYXJndW1lbnRzKTtlbHNlIGlmKGUuZGV2JiZ0eXBlb2YgY29uc29s
ZS5sPQpvZz0zRD0zRCJmdW5jdGlvbiImJkZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kKXt2YXIgdD0z
REZ1bmN0aW9uLnByb3RvdHlwZS5iaW49CmQuY2FsbChjb25zb2xlLmxvZyxjb25zb2xlKTt0LmFw
cGx5KGNvbnNvbGUsYXJndW1lbnRzKX1yZXR1cm4gYXJndW1lbnRzW2FyZz0KdW1lbnRzLmxlbmd0
aC0xXX0sZS5yZW5kZXI9M0RmdW5jdGlvbihuKXtuPTNEbnx8MSxlLnJlbmRlci5hY3RpdmU9M0Qh
MCxlLmRpPQpzcGF0Y2gucmVuZGVyX3N0YXJ0KCksc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciB0
LHI7Zm9yKHZhciBpPTNEMDtpPG4mJihyPQo9M0RlLnJlbmRlci5xdWV1ZVtpXSk7aSsrKXQ9M0Ry
LmdlbmVyYXRlKCksdHlwZW9mIHIuY2FsbGJhY2s9M0Q9M0R0eXBlb2YgRnU9Cm5jdGlvbiYmci5j
YWxsYmFjayh0KSxlLmdyYXBocy5wdXNoKHQpO2UucmVuZGVyLnF1ZXVlLnNwbGljZSgwLGkpLGUu
cmVuZGVyLj0KcXVldWUubGVuZ3RoP3NldFRpbWVvdXQoYXJndW1lbnRzLmNhbGxlZSwwKTooZS5k
aXNwYXRjaC5yZW5kZXJfZW5kKCksZS5yZW5kPQplci5hY3RpdmU9M0QhMSl9LDApfSxlLnJlbmRl
ci5hY3RpdmU9M0QhMSxlLnJlbmRlci5xdWV1ZT0zRFtdLGUuYWRkR3JhcGg9M0Q9CmZ1bmN0aW9u
KHQpe3R5cGVvZiBhcmd1bWVudHNbMF09M0Q9M0R0eXBlb2YgRnVuY3Rpb24mJih0PTNEe2dlbmVy
YXRlOmFyZ3VtZT0KbnRzWzBdLGNhbGxiYWNrOmFyZ3VtZW50c1sxXX0pLGUucmVuZGVyLnF1ZXVl
LnB1c2godCksZS5yZW5kZXIuYWN0aXZlfHxlLnJlPQpuZGVyKCl9LGUuaWRlbnRpdHk9M0RmdW5j
dGlvbihlKXtyZXR1cm4gZX0sZS5zdHJpcD0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnI9CmVwbGFj
ZSgvKFxzfCYpL2csIiIpfSxkMy50aW1lLm1vbnRoRW5kPTNEZnVuY3Rpb24oZSl7cmV0dXJuIG5l
dyBEYXRlKGUuZ2V0Rj0KdWxsWWVhcigpLGUuZ2V0TW9udGgoKSwwKX0sZDMudGltZS5tb250aEVu
ZHM9M0RuKGQzLnRpbWUubW9udGhFbmQsZnVuY3Rpb24oPQplKXtlLnNldFVUQ0RhdGUoZS5nZXRV
VENEYXRlKCkrMSksZS5zZXREYXRlKHQoZS5nZXRNb250aCgpKzEsZS5nZXRGdWxsWWVhcig9Cikp
KX0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0TW9udGgoKX0pLGUuaW50ZXJhY3RpdmVHdWlkZWxp
bmU9M0RmdW5jdGlvbigpez0KZnVuY3Rpb24gYyhvKXtvLmVhY2goZnVuY3Rpb24obyl7ZnVuY3Rp
b24gZygpe3ZhciBlPTNEZDMubW91c2UodGhpcyksbj0zRGVbPQowXSxyPTNEZVsxXSxvPTNEITAs
YT0zRCExO2wmJihuPTNEZDMuZXZlbnQub2Zmc2V0WCxyPTNEZDMuZXZlbnQub2Zmc2V0WSxkMy49
CmV2ZW50LnRhcmdldC50YWdOYW1lIT0zRD0zRCJzdmciJiYobz0zRCExKSxkMy5ldmVudC50YXJn
ZXQuY2xhc3NOYW1lLmJhc2VWYT0KbC5tYXRjaCgibnYtbGVnZW5kIikmJihhPTNEITApKSxvJiYo
bi09M0RpLmxlZnQsci09M0RpLnRvcCk7aWYobjwwfHxyPDB8fG4+PQpwfHxyPmR8fGQzLmV2ZW50
LnJlbGF0ZWRUYXJnZXQmJmQzLmV2ZW50LnJlbGF0ZWRUYXJnZXQub3duZXJTVkdFbGVtZW50PTNE
PQo9M0Q9M0R1bmRlZmluZWR8fGEpe2lmKGwmJmQzLmV2ZW50LnJlbGF0ZWRUYXJnZXQmJmQzLmV2
ZW50LnJlbGF0ZWRUYXJnZXQub3c9Cm5lclNWR0VsZW1lbnQ9M0Q9M0Q9M0R1bmRlZmluZWQmJmQz
LmV2ZW50LnJlbGF0ZWRUYXJnZXQuY2xhc3NOYW1lLm1hdGNoKHQubj0KdlBvaW50ZXJFdmVudHND
bGFzcykpcmV0dXJuO3UuZWxlbWVudE1vdXNlb3V0KHttb3VzZVg6bixtb3VzZVk6cn0pLGMucmVu
ZGVyPQpHdWlkZUxpbmUobnVsbCk7cmV0dXJufXZhciBmPTNEcy5pbnZlcnQobik7dS5lbGVtZW50
TW91c2Vtb3ZlKHttb3VzZVg6bixtb3U9CnNlWTpyLHBvaW50WFZhbHVlOmZ9KSxkMy5ldmVudC50
eXBlPTNEPTNEPTNEImRibGNsaWNrIiYmdS5lbGVtZW50RGJsY2xpY2soez0KbW91c2VYOm4sbW91
c2VZOnIscG9pbnRYVmFsdWU6Zn0pfXZhciBoPTNEZDMuc2VsZWN0KHRoaXMpLHA9M0RufHw5NjAs
ZD0zRHJ8PQp8NDAwLHY9M0RoLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LWludGVyYWN0aXZlTGlu
ZUxheWVyIikuZGF0YShbb10pLG09M0R2LmU9Cm50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFz
cyIsIiBudi13cmFwIG52LWludGVyYWN0aXZlTGluZUxheWVyIik7bS5hcHBlbj0KZCgiZyIpLmF0
dHIoImNsYXNzIiwibnYtaW50ZXJhY3RpdmVHdWlkZUxpbmUiKTtpZighZilyZXR1cm47Zi5vbigi
bW91c2Vtb3ZlPQoiLGcsITApLm9uKCJtb3VzZW91dCIsZywhMCkub24oImRibGNsaWNrIixnKSxj
LnJlbmRlckd1aWRlTGluZT0zRGZ1bmN0aW9uKHQ9Cil7aWYoIWEpcmV0dXJuO3ZhciBuPTNEdi5z
ZWxlY3QoIi5udi1pbnRlcmFjdGl2ZUd1aWRlTGluZSIpLnNlbGVjdEFsbCgibGluZT0KIikuZGF0
YSh0IT0zRG51bGw/W2UudXRpbHMuTmFOdG9aZXJvKHQpXTpbXSxTdHJpbmcpO24uZW50ZXIoKS5h
cHBlbmQoImxpbmUiPQopLmF0dHIoImNsYXNzIiwibnYtZ3VpZGVsaW5lIikuYXR0cigieDEiLGZ1
bmN0aW9uKGUpe3JldHVybiBlfSkuYXR0cigieDIiLGY9CnVuY3Rpb24oZSl7cmV0dXJuIGV9KS5h
dHRyKCJ5MSIsZCkuYXR0cigieTIiLDApLG4uZXhpdCgpLnJlbW92ZSgpfX0pfXZhciB0PQo9M0Rl
Lm1vZGVscy50b29sdGlwKCksbj0zRG51bGwscj0zRG51bGwsaT0zRHtsZWZ0OjAsdG9wOjB9LHM9
M0RkMy5zY2FsZS5saW49CmVhcigpLG89M0RkMy5zY2FsZS5saW5lYXIoKSx1PTNEZDMuZGlzcGF0
Y2goImVsZW1lbnRNb3VzZW1vdmUiLCJlbGVtZW50TW91cz0KZW91dCIsImVsZW1lbnREYmxjbGlj
ayIpLGE9M0QhMCxmPTNEbnVsbCxsPTNEbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNPQpT
SUUiKSE9M0Q9M0QtMTtyZXR1cm4gYy5kaXNwYXRjaD0zRHUsYy50b29sdGlwPTNEdCxjLm1hcmdp
bj0zRGZ1bmN0aW9uKGUpe3I9CmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkudG9wPTNEdHlwZW9m
IGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOmkudG9wLGkubD0KZWZ0PTNEdHlwZW9mIGUubGVm
dCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6aS5sZWZ0LGMpOml9LGMud2lkdGg9M0RmdW5jdGlvbihl
PQope3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPTNEZSxjKTpufSxjLmhlaWdodD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWU9Cm50cy5sZW5ndGg/KHI9M0RlLGMpOnJ9LGMueFNjYWxlPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9Cj0zRGUsYyk6c30sYy5zaG93
R3VpZGVMaW5lPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLGMp
Oj0KYX0sYy5zdmdDb250YWluZXI9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oZj0zRGUsYyk6Zn0sY30sZS5pPQpudGVyYWN0aXZlQmlzZWN0PTNEZnVuY3Rpb24oZSx0LG4p
e2lmKCFlIGluc3RhbmNlb2YgQXJyYXkpcmV0dXJuIG51bGw7dHlwZW89CmYgbiE9M0QiZnVuY3Rp
b24iJiYobj0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUueH0pO3ZhciByPTNEZDMuYmlzZWN0b3Io
bikubD0KZWZ0LGk9M0RkMy5tYXgoWzAscihlLHQpLTFdKSxzPTNEbihlW2ldLGkpO3R5cGVvZiBz
PTNEPTNEInVuZGVmaW5lZCImJihzPTNEPQppKTtpZihzPTNEPTNEPTNEdClyZXR1cm4gaTt2YXIg
bz0zRGQzLm1pbihbaSsxLGUubGVuZ3RoLTFdKSx1PTNEbihlW29dLG8pO3I9CmV0dXJuIHR5cGVv
ZiB1PTNEPTNEInVuZGVmaW5lZCImJih1PTNEbyksTWF0aC5hYnModS10KT49M0RNYXRoLmFicyhz
LXQpP2k6bz0KfSxlLm5lYXJlc3RWYWx1ZUluZGV4PTNEZnVuY3Rpb24oZSx0LG4pe3ZhciByPTNE
SW5maW5pdHksaT0zRG51bGw7cmV0dXJuIGUuPQpmb3JFYWNoKGZ1bmN0aW9uKGUscyl7dmFyIG89
M0RNYXRoLmFicyh0LWUpO288PTNEciYmbzxuJiYocj0zRG8saT0zRHMpfSksaX09CixmdW5jdGlv
bigpe3dpbmRvdy5udi50b29sdGlwPTNEe30sd2luZG93Lm52Lm1vZGVscy50b29sdGlwPTNEZnVu
Y3Rpb24oKXtmdT0KbmN0aW9uIHkoKXtpZihhKXt2YXIgZT0zRGQzLnNlbGVjdChhKTtlLm5vZGUo
KS50YWdOYW1lIT0zRD0zRCJzdmciJiYoZT0zRGUuPQpzZWxlY3QoInN2ZyIpKTt2YXIgdD0zRGUu
bm9kZSgpP2UuYXR0cigidmlld0JveCIpOm51bGw7aWYodCl7dD0zRHQuc3BsaXQoIiA9CiIpO3Zh
ciBuPTNEcGFyc2VJbnQoZS5zdHlsZSgid2lkdGgiKSkvdFsyXTtsLmxlZnQ9M0RsLmxlZnQqbixs
LnRvcD0zRGwudG9wKj0Kbn19fWZ1bmN0aW9uIGIoZSl7dmFyIHQ7YT90PTNEZDMuc2VsZWN0KGEp
OnQ9M0RkMy5zZWxlY3QoImJvZHkiKTt2YXIgbj0zRHQuPQpzZWxlY3QoIi5udnRvb2x0aXAiKTty
ZXR1cm4gbi5ub2RlKCk9M0Q9M0Q9M0RudWxsJiYobj0zRHQuYXBwZW5kKCJkaXYiKS5hdHQ9CnIo
ImNsYXNzIiwibnZ0b29sdGlwICIrKHU/dToieHktdG9vbHRpcCIpKS5hdHRyKCJpZCIsaCkpLG4u
bm9kZSgpLmlubmVySFRNTD0KPTNEZSxuLnN0eWxlKCJ0b3AiLDApLnN0eWxlKCJsZWZ0IiwwKS5z
dHlsZSgib3BhY2l0eSIsMCksbi5zZWxlY3RBbGwoImRpdiwgPQp0YWJsZSwgdGQsIHRyIikuY2xh
c3NlZChwLCEwKSxuLmNsYXNzZWQocCwhMCksbi5ub2RlKCl9ZnVuY3Rpb24gdygpe2lmKCFjKXI9
CmV0dXJuO2lmKCFnKG4pKXJldHVybjt5KCk7dmFyIHQ9M0RsLmxlZnQsdT0zRG8hPTNEbnVsbD9v
OmwudG9wLGg9M0RiKG0obikpOz0KZj0zRGg7aWYoYSl7dmFyIHA9M0RhLmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJzdmciKVswXSxkPTNEcD9wLmdldEJvdW5kaW5nQ2xpPQplbnRSZWN0KCk6YS5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKSx2PTNEe2xlZnQ6MCx0b3A6MH07aWYocCl7dmFyIEU9M0RwLmdl
dEI9Cm91bmRpbmdDbGllbnRSZWN0KCksUz0zRGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkseD0z
REUudG9wO2lmKHg8MCl7dmFyIFQ9Cj0zRGEuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7eD0zRE1h
dGguYWJzKHgpPlQuaGVpZ2h0PzA6eH12LnRvcD0zRE1hdGguYWJzKD0KeC1TLnRvcCksdi5sZWZ0
PTNETWF0aC5hYnMoRS5sZWZ0LVMubGVmdCl9dCs9M0RhLm9mZnNldExlZnQrdi5sZWZ0LTIqYS5z
Y3JvPQpsbExlZnQsdSs9M0RhLm9mZnNldFRvcCt2LnRvcC0yKmEuc2Nyb2xsVG9wfXJldHVybiBz
JiZzPjAmJih1PTNETWF0aC5mbG9vcig9CnUvcykqcyksZS50b29sdGlwLmNhbGNUb29sdGlwUG9z
aXRpb24oW3QsdV0scixpLGgpLHd9dmFyIHQ9M0RudWxsLG49M0RudWxsLD0Kcj0zRCJ3IixpPTNE
NTAscz0zRDI1LG89M0RudWxsLHU9M0RudWxsLGE9M0RudWxsLGY9M0RudWxsLGw9M0R7bGVmdDpu
dWxsLHRvPQpwOm51bGx9LGM9M0QhMCxoPTNEIm52dG9vbHRpcC0iK01hdGguZmxvb3IoTWF0aC5y
YW5kb20oKSoxZTUpLHA9M0QibnYtcG9pbnQ9CmVyLWV2ZW50cy1ub25lIixkPTNEZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gZX0sdj0zRGZ1bmN0aW9uKGUpe3JldHVybiBlfSxtPTNEZj0KdW5jdGlvbihl
KXtpZih0IT0zRG51bGwpcmV0dXJuIHQ7aWYoZT0zRD0zRG51bGwpcmV0dXJuIiI7dmFyIG49M0Rk
My5zZWxlY3QoPQpkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpKSxyPTNEbi5zZWxlY3RB
bGwoInRoZWFkIikuZGF0YShbZV0pLmVudGVyKCk9Ci5hcHBlbmQoInRoZWFkIik7ci5hcHBlbmQo
InRyIikuYXBwZW5kKCJ0ZCIpLmF0dHIoImNvbHNwYW4iLDMpLmFwcGVuZCgic3Rybz0KbmciKS5j
bGFzc2VkKCJ4LXZhbHVlIiwhMCkuaHRtbCh2KGUudmFsdWUpKTt2YXIgaT0zRG4uc2VsZWN0QWxs
KCJ0Ym9keSIpLmRhPQp0YShbZV0pLmVudGVyKCkuYXBwZW5kKCJ0Ym9keSIpLHM9M0RpLnNlbGVj
dEFsbCgidHIiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHU9CnJuIGUuc2VyaWVzfSkuZW50ZXIoKS5h
cHBlbmQoInRyIikuY2xhc3NlZCgiaGlnaGxpZ2h0IixmdW5jdGlvbihlKXtyZXR1cm4gZT0KLmhp
Z2hsaWdodH0pO3MuYXBwZW5kKCJ0ZCIpLmNsYXNzZWQoImxlZ2VuZC1jb2xvci1ndWlkZSIsITAp
LmFwcGVuZCgiZGl2IikuPQpzdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsZnVuY3Rpb24oZSl7cmV0
dXJuIGUuY29sb3J9KSxzLmFwcGVuZCgidGQiKS5jbGFzc2U9CmQoImtleSIsITApLmh0bWwoZnVu
Y3Rpb24oZSl7cmV0dXJuIGUua2V5fSkscy5hcHBlbmQoInRkIikuY2xhc3NlZCgidmFsdWUiLD0K
ITApLmh0bWwoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZChlLnZhbHVlLHQpfSkscy5zZWxlY3RBbGwo
InRkIikuZWFjaChmdW5jdGlvPQpuKGUpe2lmKGUuaGlnaGxpZ2h0KXt2YXIgdD0zRGQzLnNjYWxl
LmxpbmVhcigpLmRvbWFpbihbMCwxXSkucmFuZ2UoWyIjZmZmIiw9CmUuY29sb3JdKSxuPTNELjY7
ZDMuc2VsZWN0KHRoaXMpLnN0eWxlKCJib3JkZXItYm90dG9tLWNvbG9yIix0KG4pKS5zdHlsZSgi
Yj0Kb3JkZXItdG9wLWNvbG9yIix0KG4pKX19KTt2YXIgbz0zRG4ubm9kZSgpLm91dGVySFRNTDty
ZXR1cm4gZS5mb290ZXIhPTNEPTNEPQp1bmRlZmluZWQmJihvKz0zRCI8ZGl2IGNsYXNzPTNEJ2Zv
b3Rlcic+IitlLmZvb3RlcisiPC9kaXY+Iiksb30sZz0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGUm
JmUuc2VyaWVzJiZlLnNlcmllcy5sZW5ndGg+MD8hMDohMX07cmV0dXJuIHcubnZQb2ludGVyRXZl
bnRzQz0KbGFzcz0zRHAsdy5jb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHQ9M0RlLHcpOnR9LHcudG9vPQpsdGlwRWxlbT0zRGZ1bmN0aW9uKCl7cmV0dXJuIGZ9
LHcuY29udGVudEdlbmVyYXRvcj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmc9CnVtZW50cy5sZW5n
dGg/KHR5cGVvZiBlPTNEPTNEImZ1bmN0aW9uIiYmKG09M0RlKSx3KTptfSx3LmRhdGE9M0RmdW5j
dGlvbihlKT0Ke3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPTNEZSx3KTpufSx3LmdyYXZpdHk9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lPQpudHMubGVuZ3RoPyhyPTNEZSx3KTpyfSx3LmRp
c3RhbmNlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9Cj0zRGUsdyk6
aX0sdy5zbmFwRGlzdGFuY2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
cz0zRGUsdyk6cz0KfSx3LmNsYXNzZXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8odT0zRGUsdyk6dX0sdy5jaGFydENvbnRhPQppbmVyPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLHcpOmF9LHcucG9zaXRpb249M0RmdW5jdGk9Cm9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRl
ZmluZWQiP2UubGVmdD0KOmwubGVmdCxsLnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVk
Ij9lLnRvcDpsLnRvcCx3KTpsfSx3LmZpeGVkVG9wPTNEPQpmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8obz0zRGUsdyk6b30sdy5lbmFibGVkPTNEZnVuY3Rpb24oZSl7cmU9CnR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUsdyk6Y30sdy52YWx1ZUZvcm1hdHRlcj0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcj0KZ3VtZW50cy5sZW5ndGg/KHR5cGVvZiBlPTNEPTNEImZ1bmN0aW9u
IiYmKGQ9M0RlKSx3KTpkfSx3LmhlYWRlckZvcm1hdHRlcj0KPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHR5cGVvZiBlPTNEPTNEImZ1bmN0aW9uIiYmKHY9M0RlKSx3PQop
OnZ9LHcuaWQ9M0RmdW5jdGlvbigpe3JldHVybiBofSx3fSxlLnRvb2x0aXAuc2hvdz0zRGZ1bmN0
aW9uKHQsbixyLGkscyxvKXs9CnZhciB1PTNEZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
dS5jbGFzc05hbWU9M0QibnZ0b29sdGlwICIrKG8/bzoieHktdD0Kb29sdGlwIik7dmFyIGE9M0Rz
O2lmKCFzfHxzLnRhZ05hbWUubWF0Y2goL2d8c3ZnL2kpKWE9M0Rkb2N1bWVudC5nZXRFbGVtZW50
PQpzQnlUYWdOYW1lKCJib2R5IilbMF07dS5zdHlsZS5sZWZ0PTNEMCx1LnN0eWxlLnRvcD0zRDAs
dS5zdHlsZS5vcGFjaXR5PTNEMCw9CnUuaW5uZXJIVE1MPTNEbixhLmFwcGVuZENoaWxkKHUpLHMm
Jih0WzBdPTNEdFswXS1zLnNjcm9sbExlZnQsdFsxXT0zRHRbMV0tcz0KLnNjcm9sbFRvcCksZS50
b29sdGlwLmNhbGNUb29sdGlwUG9zaXRpb24odCxyLGksdSl9LGUudG9vbHRpcC5maW5kRmlyc3RO
b25TPQpWR1BhcmVudD0zRGZ1bmN0aW9uKGUpe3doaWxlKGUudGFnTmFtZS5tYXRjaCgvXmd8c3Zn
JC9pKSE9M0Q9M0RudWxsKWU9M0RlLnA9CmFyZW50Tm9kZTtyZXR1cm4gZX0sZS50b29sdGlwLmZp
bmRUb3RhbE9mZnNldFRvcD0zRGZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0Oz0KZG8gaXNOYU4oZS5v
ZmZzZXRUb3ApfHwobis9M0RlLm9mZnNldFRvcCk7d2hpbGUoZT0zRGUub2Zmc2V0UGFyZW50KTty
ZXR1cm4gPQpufSxlLnRvb2x0aXAuZmluZFRvdGFsT2Zmc2V0TGVmdD0zRGZ1bmN0aW9uKGUsdCl7
dmFyIG49M0R0O2RvIGlzTmFOKGUub2Zmc2U9CnRMZWZ0KXx8KG4rPTNEZS5vZmZzZXRMZWZ0KTt3
aGlsZShlPTNEZS5vZmZzZXRQYXJlbnQpO3JldHVybiBufSxlLnRvb2x0aXAuYz0KYWxjVG9vbHRp
cFBvc2l0aW9uPTNEZnVuY3Rpb24odCxuLHIsaSl7dmFyIHM9M0RwYXJzZUludChpLm9mZnNldEhl
aWdodCksbz0KPTNEcGFyc2VJbnQoaS5vZmZzZXRXaWR0aCksdT0zRGUudXRpbHMud2luZG93U2l6
ZSgpLndpZHRoLGE9M0RlLnV0aWxzLndpbmRvPQp3U2l6ZSgpLmhlaWdodCxmPTNEd2luZG93LnBh
Z2VZT2Zmc2V0LGw9M0R3aW5kb3cucGFnZVhPZmZzZXQsYyxoO2E9M0R3aW5kb3c9Ci5pbm5lcldp
ZHRoPj0zRGRvY3VtZW50LmJvZHkuc2Nyb2xsV2lkdGg/YTphLTE2LHU9M0R3aW5kb3cuaW5uZXJI
ZWlnaHQ+PTNEZD0Kb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodD91OnUtMTYsbj0zRG58fCJzIixy
PTNEcnx8MjA7dmFyIHA9M0RmdW5jdGlvbih0KXtyPQpldHVybiBlLnRvb2x0aXAuZmluZFRvdGFs
T2Zmc2V0VG9wKHQsaCl9LGQ9M0RmdW5jdGlvbih0KXtyZXR1cm4gZS50b29sdGlwLmY9CmluZFRv
dGFsT2Zmc2V0TGVmdCh0LGMpfTtzd2l0Y2gobil7Y2FzZSJlIjpjPTNEdFswXS1vLXIsaD0zRHRb
MV0tcy8yO3ZhciB2PQo9M0RkKGkpLG09M0RwKGkpO3Y8bCYmKGM9M0R0WzBdK3I+bD90WzBdK3I6
bC12K2MpLG08ZiYmKGg9M0RmLW0raCksbStzPmYrYSY9CiYoaD0zRGYrYS1tK2gtcyk7YnJlYWs7
Y2FzZSJ3IjpjPTNEdFswXStyLGg9M0R0WzFdLXMvMjt2YXIgdj0zRGQoaSksbT0zRHAoaT0KKTt2
K28+dSYmKGM9M0R0WzBdLW8tciksbTxmJiYoaD0zRGYrNSksbStzPmYrYSYmKGg9M0RmK2EtbSto
LXMpO2JyZWFrO2Nhc2UiPQpuIjpjPTNEdFswXS1vLzItNSxoPTNEdFsxXStyO3ZhciB2PTNEZChp
KSxtPTNEcChpKTt2PGwmJihjPTNEbCs1KSx2K28+dSYmKGM9Cj0zRGMtby8yKzUpLG0rcz5mK2Em
JihoPTNEZithLW0raC1zKTticmVhaztjYXNlInMiOmM9M0R0WzBdLW8vMixoPTNEdFsxXS1zLT0K
cjt2YXIgdj0zRGQoaSksbT0zRHAoaSk7djxsJiYoYz0zRGwrNSksditvPnUmJihjPTNEYy1vLzIr
NSksZj5tJiYoaD0zRGYpO2JyPQplYWs7Y2FzZSJub25lIjpjPTNEdFswXSxoPTNEdFsxXS1yO3Zh
ciB2PTNEZChpKSxtPTNEcChpKX1yZXR1cm4gaS5zdHlsZS5sZWY9CnQ9M0RjKyJweCIsaS5zdHls
ZS50b3A9M0RoKyJweCIsaS5zdHlsZS5vcGFjaXR5PTNEMSxpLnN0eWxlLnBvc2l0aW9uPTNEImFi
cz0Kb2x1dGUiLGl9LGUudG9vbHRpcC5jbGVhbnVwPTNEZnVuY3Rpb24oKXt2YXIgZT0zRGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlDbGFzPQpzTmFtZSgibnZ0b29sdGlwIiksdD0zRFtdO3doaWxlKGUu
bGVuZ3RoKXQucHVzaChlWzBdKSxlWzBdLnN0eWxlLnRyYW5zaXRpb249CkRlbGF5PTNEIjAgIWlt
cG9ydGFudCIsZVswXS5zdHlsZS5vcGFjaXR5PTNEMCxlWzBdLmNsYXNzTmFtZT0zRCJudnRvb2x0
aXAtcD0KZW5kaW5nLXJlbW92YWwiO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt3aGlsZSh0Lmxlbmd0
aCl7dmFyIGU9M0R0LnBvcCgpO2UucGFyPQplbnROb2RlLnJlbW92ZUNoaWxkKGUpfX0sNTAwKX19
KCksZS51dGlscy53aW5kb3dTaXplPTNEZnVuY3Rpb24oKXt2YXIgZT0zRHs9CndpZHRoOjY0MCxo
ZWlnaHQ6NDgwfTtyZXR1cm4gZG9jdW1lbnQuYm9keSYmZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0
aCYmKGUudz0KaWR0aD0zRGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgsZS5oZWlnaHQ9M0Rkb2N1
bWVudC5ib2R5Lm9mZnNldEhlaWdodCksZG9jPQp1bWVudC5jb21wYXRNb2RlPTNEPTNEIkNTUzFD
b21wYXQiJiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQmJmRvY3VtZW50LmRvY3U9Cm1lbnRFbGVt
ZW50Lm9mZnNldFdpZHRoJiYoZS53aWR0aD0zRGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5vZmZz
ZXRXaWR0aCxlLj0KaGVpZ2h0PTNEZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldEhlaWdo
dCksd2luZG93LmlubmVyV2lkdGgmJndpbmRvdy5pPQpubmVySGVpZ2h0JiYoZS53aWR0aD0zRHdp
bmRvdy5pbm5lcldpZHRoLGUuaGVpZ2h0PTNEd2luZG93LmlubmVySGVpZ2h0KSxlfSw9CmUudXRp
bHMud2luZG93UmVzaXplPTNEZnVuY3Rpb24oZSl7aWYoZT0zRD0zRD0zRHVuZGVmaW5lZClyZXR1
cm47dmFyIHQ9M0R3aT0KbmRvdy5vbnJlc2l6ZTt3aW5kb3cub25yZXNpemU9M0RmdW5jdGlvbihu
KXt0eXBlb2YgdD0zRD0zRCJmdW5jdGlvbiImJnQobiksPQplKG4pfX0sZS51dGlscy5nZXRDb2xv
cj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP09iamVjdC5wcm90b3Q9Cnlw
ZS50b1N0cmluZy5jYWxsKHQpPTNEPTNEPTNEIltvYmplY3QgQXJyYXldIj9mdW5jdGlvbihlLG4p
e3JldHVybiBlLmNvbG9yfD0KfHRbbiV0Lmxlbmd0aF19OnQ6ZS51dGlscy5kZWZhdWx0Q29sb3Io
KX0sZS51dGlscy5kZWZhdWx0Q29sb3I9M0RmdW5jdGlvbigpPQp7dmFyIGU9M0RkMy5zY2FsZS5j
YXRlZ29yeTIwKCkucmFuZ2UoKTtyZXR1cm4gZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5jb2xvcnw9
CnxlW24lZS5sZW5ndGhdfX0sZS51dGlscy5jdXN0b21UaGVtZT0zRGZ1bmN0aW9uKGUsdCxuKXt0
PTNEdHx8ZnVuY3Rpb24oZSl7cj0KZXR1cm4gZS5rZXl9LG49M0RufHxkMy5zY2FsZS5jYXRlZ29y
eTIwKCkucmFuZ2UoKTt2YXIgcj0zRG4ubGVuZ3RoO3JldHVybiBmPQp1bmN0aW9uKGkscyl7dmFy
IG89M0R0KGkpO3JldHVybiByfHwocj0zRG4ubGVuZ3RoKSx0eXBlb2YgZVtvXSE9M0QidW5kZWZp
bmU9CmQiP3R5cGVvZiBlW29dPTNEPTNEImZ1bmN0aW9uIj9lW29dKCk6ZVtvXTpuWy0tcl19fSxl
LnV0aWxzLnBqYXg9M0RmdW5jdGlvbj0KKHQsbil7ZnVuY3Rpb24gcihyKXtkMy5odG1sKHIsZnVu
Y3Rpb24ocil7dmFyIGk9M0RkMy5zZWxlY3Qobikubm9kZSgpO2kucGFyPQplbnROb2RlLnJlcGxh
Y2VDaGlsZChkMy5zZWxlY3Qocikuc2VsZWN0KG4pLm5vZGUoKSxpKSxlLnV0aWxzLnBqYXgodCxu
KX0pfWQ9CjMuc2VsZWN0QWxsKHQpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtoaXN0b3J5LnB1c2hT
dGF0ZSh0aGlzLmhyZWYsdGhpcy50ZXh0Qz0Kb250ZW50LHRoaXMuaHJlZikscih0aGlzLmhyZWYp
LGQzLmV2ZW50LnByZXZlbnREZWZhdWx0KCl9KSxkMy5zZWxlY3Qod2luZG93PQopLm9uKCJwb3Bz
dGF0ZSIsZnVuY3Rpb24oKXtkMy5ldmVudC5zdGF0ZSYmcihkMy5ldmVudC5zdGF0ZSl9KX0sZS51
dGlscy5jYWw9CmNBcHByb3hUZXh0V2lkdGg9M0RmdW5jdGlvbihlKXtpZih0eXBlb2YgZS5zdHls
ZT0zRD0zRCJmdW5jdGlvbiImJnR5cGVvZiBlLj0KdGV4dD0zRD0zRCJmdW5jdGlvbiIpe3ZhciB0
PTNEcGFyc2VJbnQoZS5zdHlsZSgiZm9udC1zaXplIikucmVwbGFjZSgicHgiLCIiPQopKSxuPTNE
ZS50ZXh0KCkubGVuZ3RoO3JldHVybiBuKnQqLjV9cmV0dXJuIDB9LGUudXRpbHMuTmFOdG9aZXJv
PTNEZnVuY3Rpb249CihlKXtyZXR1cm4gdHlwZW9mIGUhPTNEIm51bWJlciJ8fGlzTmFOKGUpfHxl
PTNEPTNEPTNEbnVsbHx8ZT0zRD0zRD0zREluZmluaT0KdHk/MDplfSxlLnV0aWxzLm9wdGlvbnNG
dW5jPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmQzLm1hcChlKS5mb3JFYWNoKGZ1bmN0PQppb24o
ZSx0KXt0eXBlb2YgdGhpc1tlXT0zRD0zRCJmdW5jdGlvbiImJnRoaXNbZV0odCl9LmJpbmQodGhp
cykpLHRoaXN9LGUubW89CmRlbHMuYXhpcz0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gbShlKXtyZXR1
cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBpPTNEZDMucz0KZWxlY3QodGhpcyksbT0zRGkuc2Vs
ZWN0QWxsKCJnLm52LXdyYXAubnYtYXhpcyIpLmRhdGEoW2VdKSxnPTNEbS5lbnRlcigpLmFwPQpw
ZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtYXhpcyIpLHk9M0RnLmFwcGVu
ZCgiZyIpLGI9M0RtLnNlbGU9CmN0KCJnIik7cCE9M0Q9M0RudWxsP3QudGlja3MocCk6KHQub3Jp
ZW50KCk9M0Q9M0QidG9wInx8dC5vcmllbnQoKT0zRD0zRCJibz0KdHRvbSIpJiZ0LnRpY2tzKE1h
dGguYWJzKHMucmFuZ2UoKVsxXS1zLnJhbmdlKClbMF0pLzEwMCksYi5jYWxsKHQpLHY9M0R2fHx0
PQouc2NhbGUoKTt2YXIgdz0zRHQudGlja0Zvcm1hdCgpO3c9M0Q9M0RudWxsJiYodz0zRHYudGlj
a0Zvcm1hdCgpKTt2YXIgRT0zRGI9Ci5zZWxlY3RBbGwoInRleHQubnYtYXhpc2xhYmVsIikuZGF0
YShbb3x8bnVsbF0pO0UuZXhpdCgpLnJlbW92ZSgpO3N3aXRjaCh0Lj0Kb3JpZW50KCkpe2Nhc2Ui
dG9wIjpFLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudi1heGlzbGFiZWwi
KTt2PQphciBTPTNEcy5yYW5nZSgpLmxlbmd0aD0zRD0zRDI/cy5yYW5nZSgpWzFdOnMucmFuZ2Uo
KVtzLnJhbmdlKCkubGVuZ3RoLTFdKyg9CnMucmFuZ2UoKVsxXS1zLnJhbmdlKClbMF0pO0UuYXR0
cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJ5IiwwKS5hdHRyKD0KIngiLFMvMik7aWYo
dSl7dmFyIHg9M0RtLnNlbGVjdEFsbCgiZy5udi1heGlzTWF4TWluIikuZGF0YShzLmRvbWFpbigp
KTt4LmVuPQp0ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWF4aXNNYXhNaW4iKS5h
cHBlbmQoInRleHQiKSx4LmV4aXQoKS5yZW09Cm92ZSgpLHguYXR0cigidHJhbnNmb3JtIixmdW5j
dGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitzKGUpKyIsMCkifSkuc2VsZT0KY3QoInRleHQi
KS5hdHRyKCJkeSIsIi0wLjVlbSIpLmF0dHIoInkiLC10LnRpY2tQYWRkaW5nKCkpLmF0dHIoInRl
eHQtYW5jaG9yPQoiLCJtaWRkbGUiKS50ZXh0KGZ1bmN0aW9uKGUsdCl7dmFyIG49M0R3KGUpO3Jl
dHVybigiIituKS5tYXRjaCgiTmFOIik/IiI6bn09CikseC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0
aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiK3MucmFuZ2UoKVt0XSsiLDApIn0pfT0KYnJlYWs7
Y2FzZSJib3R0b20iOnZhciBUPTNEMzYsTj0zRDMwLEM9M0RiLnNlbGVjdEFsbCgiZyIpLnNlbGVj
dCgidGV4dCIpO2lmPQooZiUzNjApe0MuZWFjaChmdW5jdGlvbihlLHQpe3ZhciBuPTNEdGhpcy5n
ZXRCQm94KCkud2lkdGg7bj5OJiYoTj0zRG4pfSk7dmE9CnIgaz0zRE1hdGguYWJzKE1hdGguc2lu
KGYqTWF0aC5QSS8xODApKSxUPTNEKGs/aypOOk4pKzMwO0MuYXR0cigidHJhbnNmb3JtIj0KLGZ1
bmN0aW9uKGUsdCxuKXtyZXR1cm4icm90YXRlKCIrZisiIDAsMCkifSkuc3R5bGUoInRleHQtYW5j
aG9yIixmJTM2MD4wPyJzPQp0YXJ0IjoiZW5kIil9RS5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0
dHIoImNsYXNzIiwibnYtYXhpc2xhYmVsIik7dmFyIFM9M0Q9CnMucmFuZ2UoKS5sZW5ndGg9M0Q9
M0QyP3MucmFuZ2UoKVsxXTpzLnJhbmdlKClbcy5yYW5nZSgpLmxlbmd0aC0xXSsocy5yYW5nZT0K
KClbMV0tcy5yYW5nZSgpWzBdKTtFLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikuYXR0cigi
eSIsVCkuYXR0cigieCIsUy8yPQopO2lmKHUpe3ZhciB4PTNEbS5zZWxlY3RBbGwoImcubnYtYXhp
c01heE1pbiIpLmRhdGEoW3MuZG9tYWluKClbMF0scy5kb21haW49CigpW3MuZG9tYWluKCkubGVu
Z3RoLTFdXSk7eC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYXhpc01heE1p
bj0KIikuYXBwZW5kKCJ0ZXh0IikseC5leGl0KCkucmVtb3ZlKCkseC5hdHRyKCJ0cmFuc2Zvcm0i
LGZ1bmN0aW9uKGUsdCl7cmV0dXJuPQoidHJhbnNsYXRlKCIrKHMoZSkrKGg/cy5yYW5nZUJhbmQo
KS8yOjApKSsiLDApIn0pLnNlbGVjdCgidGV4dCIpLmF0dHIoImR5Iiw9CiIuNzFlbSIpLmF0dHIo
InkiLHQudGlja1BhZGRpbmcoKSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQsbil7cmV0
dXJuIj0Kcm90YXRlKCIrZisiIDAsMCkifSkuc3R5bGUoInRleHQtYW5jaG9yIixmP2YlMzYwPjA/
InN0YXJ0IjoiZW5kIjoibWlkZGxlIikuPQp0ZXh0KGZ1bmN0aW9uKGUsdCl7dmFyIG49M0R3KGUp
O3JldHVybigiIituKS5tYXRjaCgiTmFOIik/IiI6bn0pLHguYXR0cigidHI9CmFuc2Zvcm0iLGZ1
bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiKyhzKGUpKyhoP3MucmFuZ2VCYW5kKCkvMjow
KSkrIiwwKT0KIn0pfWMmJkMuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0
cmFuc2xhdGUoMCwiKyh0JTI9M0Q9M0QwPyIwPQoiOiIxMiIpKyIpIn0pO2JyZWFrO2Nhc2Uicmln
aHQiOkUuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52LWE9Cnhpc2xhYmVs
IiksRS5zdHlsZSgidGV4dC1hbmNob3IiLGw/Im1pZGRsZSI6ImJlZ2luIikuYXR0cigidHJhbnNm
b3JtIixsPyJybz0KdGF0ZSg5MCkiOiIiKS5hdHRyKCJ5IixsPy1NYXRoLm1heChuLnJpZ2h0LHIp
KzEyOi0xMCkuYXR0cigieCIsbD9zLnJhbmdlKClbPQowXS8yOnQudGlja1BhZGRpbmcoKSk7aWYo
dSl7dmFyIHg9M0RtLnNlbGVjdEFsbCgiZy5udi1heGlzTWF4TWluIikuZGF0YShzLmQ9Cm9tYWlu
KCkpO3guZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWF4aXNNYXhNaW4iKS5h
cHBlbmQoInRleHQiKT0KLnN0eWxlKCJvcGFjaXR5IiwwKSx4LmV4aXQoKS5yZW1vdmUoKSx4LmF0
dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1PQpybiJ0cmFuc2xhdGUoMCwiK3MoZSkr
IikifSkuc2VsZWN0KCJ0ZXh0IikuYXR0cigiZHkiLCIuMzJlbSIpLmF0dHIoInkiLDApLmE9CnR0
cigieCIsdC50aWNrUGFkZGluZygpKS5zdHlsZSgidGV4dC1hbmNob3IiLCJzdGFydCIpLnRleHQo
ZnVuY3Rpb24oZSx0KXt2YT0KciBuPTNEdyhlKTtyZXR1cm4oIiIrbikubWF0Y2goIk5hTiIpPyIi
Om59KSx4LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0PQope3JldHVybiJ0cmFuc2xhdGUo
MCwiK3MucmFuZ2UoKVt0XSsiKSJ9KS5zZWxlY3QoInRleHQiKS5zdHlsZSgib3BhY2l0eSIsMSk9
Cn1icmVhaztjYXNlImxlZnQiOkUuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIs
Im52LWF4aXNsYWJlbCIpLEUucz0KdHlsZSgidGV4dC1hbmNob3IiLGw/Im1pZGRsZSI6ImVuZCIp
LmF0dHIoInRyYW5zZm9ybSIsbD8icm90YXRlKC05MCkiOiIiKS5hPQp0dHIoInkiLGw/LU1hdGgu
bWF4KG4ubGVmdCxyKStkOi0xMCkuYXR0cigieCIsbD8tcy5yYW5nZSgpWzBdLzI6LXQudGlja1Bh
ZGQ9CmluZygpKTtpZih1KXt2YXIgeD0zRG0uc2VsZWN0QWxsKCJnLm52LWF4aXNNYXhNaW4iKS5k
YXRhKHMuZG9tYWluKCkpO3guZW50ZT0KcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYt
YXhpc01heE1pbiIpLmFwcGVuZCgidGV4dCIpLnN0eWxlKCJvcGFjaXR5PQoiLDApLHguZXhpdCgp
LnJlbW92ZSgpLHguYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xh
dGUoMCw9CiIrdihlKSsiKSJ9KS5zZWxlY3QoInRleHQiKS5hdHRyKCJkeSIsIi4zMmVtIikuYXR0
cigieSIsMCkuYXR0cigieCIsLXQudGljaz0KUGFkZGluZygpKS5hdHRyKCJ0ZXh0LWFuY2hvciIs
ImVuZCIpLnRleHQoZnVuY3Rpb24oZSx0KXt2YXIgbj0zRHcoZSk7cmV0dXJuPQooIiIrbikubWF0
Y2goIk5hTiIpPyIiOm59KSx4LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4i
dHJhbnNsYXQ9CmUoMCwiK3MucmFuZ2UoKVt0XSsiKSJ9KS5zZWxlY3QoInRleHQiKS5zdHlsZSgi
b3BhY2l0eSIsMSl9fUUudGV4dChmdW5jdGlvbj0KKGUpe3JldHVybiBlfSksdSYmKHQub3JpZW50
KCk9M0Q9M0Q9M0QibGVmdCJ8fHQub3JpZW50KCk9M0Q9M0Q9M0QicmlnaHQiKSYmPQooYi5zZWxl
Y3RBbGwoImciKS5lYWNoKGZ1bmN0aW9uKGUsdCl7ZDMuc2VsZWN0KHRoaXMpLnNlbGVjdCgidGV4
dCIpLmF0dHIoIm89CnBhY2l0eSIsMSk7aWYocyhlKTxzLnJhbmdlKClbMV0rMTB8fHMoZSk+cy5y
YW5nZSgpWzBdLTEwKShlPjFlLTEwfHxlPC0xZS0xMD0KKSYmZDMuc2VsZWN0KHRoaXMpLmF0dHIo
Im9wYWNpdHkiLDApLGQzLnNlbGVjdCh0aGlzKS5zZWxlY3QoInRleHQiKS5hdHRyKCJvPQpwYWNp
dHkiLDApfSkscy5kb21haW4oKVswXT0zRD0zRHMuZG9tYWluKClbMV0mJnMuZG9tYWluKClbMF09
M0Q9M0QwJiZtLnNlbGU9CmN0QWxsKCJnLm52LWF4aXNNYXhNaW4iKS5zdHlsZSgib3BhY2l0eSIs
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdD8wOjF9KSk7aWYodT0KJiYodC5vcmllbnQoKT0zRD0zRD0z
RCJ0b3AifHx0Lm9yaWVudCgpPTNEPTNEPTNEImJvdHRvbSIpKXt2YXIgTD0zRFtdO20uc2VsPQpl
Y3RBbGwoImcubnYtYXhpc01heE1pbiIpLmVhY2goZnVuY3Rpb24oZSx0KXt0cnl7dD9MLnB1c2go
cyhlKS10aGlzLmdldEJCb3g9CigpLndpZHRoLTQpOkwucHVzaChzKGUpK3RoaXMuZ2V0QkJveCgp
LndpZHRoKzQpfWNhdGNoKG4pe3Q/TC5wdXNoKHMoZSktNCk6TD0KLnB1c2gocyhlKSs0KX19KSxi
LnNlbGVjdEFsbCgiZyIpLmVhY2goZnVuY3Rpb24oZSx0KXtpZihzKGUpPExbMF18fHMoZSk+TFsx
PQpdKWU+MWUtMTB8fGU8LTFlLTEwP2QzLnNlbGVjdCh0aGlzKS5yZW1vdmUoKTpkMy5zZWxlY3Qo
dGhpcykuc2VsZWN0KCJ0ZXh0Iik9Ci5yZW1vdmUoKX0pfWEmJmIuc2VsZWN0QWxsKCIudGljayIp
LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hcGFyc2VGbG9hdChNYT0KdGgucm91bmQoZS5fX2Rh
dGFfXyoxZTUpLzFlNikmJmUuX19kYXRhX18hPTNEPTNEdW5kZWZpbmVkfSkuY2xhc3NlZCgiemVy
byIsPQohMCksdj0zRHMuY29weSgpfSksbX12YXIgdD0zRGQzLnN2Zy5heGlzKCksbj0zRHt0b3A6
MCxyaWdodDowLGJvdHRvbTowLGxlZnQ9CjowfSxyPTNENzUsaT0zRDYwLHM9M0RkMy5zY2FsZS5s
aW5lYXIoKSxvPTNEbnVsbCx1PTNEITAsYT0zRCEwLGY9M0QwLGw9M0QhMD0KLGM9M0QhMSxoPTNE
ITEscD0zRG51bGwsZD0zRDEyO3Quc2NhbGUocykub3JpZW50KCJib3R0b20iKS50aWNrRm9ybWF0
KGZ1bmN0PQppb24oZSl7cmV0dXJuIGV9KTt2YXIgdjtyZXR1cm4gbS5heGlzPTNEdCxkMy5yZWJp
bmQobSx0LCJvcmllbnQiLCJ0aWNrVmFsdWU9CnMiLCJ0aWNrU3ViZGl2aWRlIiwidGlja1NpemUi
LCJ0aWNrUGFkZGluZyIsInRpY2tGb3JtYXQiKSxkMy5yZWJpbmQobSxzLCJkbz0KbWFpbiIsInJh
bmdlIiwicmFuZ2VCYW5kIiwicmFuZ2VCYW5kcyIpLG0ub3B0aW9ucz0zRGUudXRpbHMub3B0aW9u
c0Z1bmMuYmluPQpkKG0pLG0ubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KG4udG9wPTNEdHlwZW9mIGUudG9wIT0KPTNEInVuZGVmaW5lZCI/ZS50b3A6bi50b3As
bi5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6PQpuLnJpZ2h0
LG4uYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOm4uYm90
dG9tLG4ubGVmdD0KPTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6bi5sZWZ0
LG0pOm59LG0ud2lkdGg9M0RmdW5jdGlvbihlKXtyPQpldHVybiBhcmd1bWVudHMubGVuZ3RoPyhy
PTNEZSxtKTpyfSxtLnRpY2tzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy49Cmxlbmd0
aD8ocD0zRGUsbSk6cH0sbS5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oaT0zRGUsbT0KKTppfSxtLmF4aXNMYWJlbD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhvPTNEZSxtKTpvfSxtLnNob3dNPQpheE1pbj0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZSxtKTp1fSxtLmhpZ2hsaWdodFplcm89M0Q9CmZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZSxtKTphfSxtLnNjYWxlPTNE
ZnVuY3Rpb24oZSl7cmV0dT0Kcm4gYXJndW1lbnRzLmxlbmd0aD8ocz0zRGUsdC5zY2FsZShzKSxo
PTNEdHlwZW9mIHMucmFuZ2VCYW5kcz0zRD0zRCJmdW5jdGlvPQpuIixkMy5yZWJpbmQobSxzLCJk
b21haW4iLCJyYW5nZSIsInJhbmdlQmFuZCIsInJhbmdlQmFuZHMiKSxtKTpzfSxtLnJvdGF0ZVk9
CkxhYmVsPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLG0pOmx9
LG0ucm90YXRlTGFiZWxzPTNEZj0KdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
Zj0zRGUsbSk6Zn0sbS5zdGFnZ2VyTGFiZWxzPTNEZnVuY3Rpb24oPQplKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oYz0zRGUsbSk6Y30sbS5heGlzTGFiZWxEaXN0YW5jZT0zRGZ1bmN0aW9uKGUp
e3I9CmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9M0RlLG0pOmR9LG19LGUubW9kZWxzLmhpc3Rv
cmljYWxCYXI9M0RmdW5jdGlvbigpez0KZnVuY3Rpb24gdyhFKXtyZXR1cm4gRS5lYWNoKGZ1bmN0
aW9uKHcpe3ZhciBFPTNEbi10LmxlZnQtdC5yaWdodCxTPTNEci10LnRvPQpwLXQuYm90dG9tLFQ9
M0RkMy5zZWxlY3QodGhpcyk7cy5kb21haW4oZHx8ZDMuZXh0ZW50KHdbMF0udmFsdWVzLm1hcCh1
KS5jb249CmNhdChmKSkpLGM/cy5yYW5nZShtfHxbRSouNS93WzBdLnZhbHVlcy5sZW5ndGgsRSoo
d1swXS52YWx1ZXMubGVuZ3RoLS41KS93Wz0KMF0udmFsdWVzLmxlbmd0aF0pOnMucmFuZ2UobXx8
WzAsRV0pLG8uZG9tYWluKHZ8fGQzLmV4dGVudCh3WzBdLnZhbHVlcy5tYXAoPQphKS5jb25jYXQo
bCkpKS5yYW5nZShnfHxbUywwXSkscy5kb21haW4oKVswXT0zRD0zRD0zRHMuZG9tYWluKClbMV0m
JihzLmRvbWE9CmluKClbMF0/cy5kb21haW4oW3MuZG9tYWluKClbMF0tcy5kb21haW4oKVswXSou
MDEscy5kb21haW4oKVsxXStzLmRvbWFpbigpWz0KMV0qLjAxXSk6cy5kb21haW4oWy0xLDFdKSks
by5kb21haW4oKVswXT0zRD0zRD0zRG8uZG9tYWluKClbMV0mJihvLmRvbWFpbigpPQpbMF0/by5k
b21haW4oW28uZG9tYWluKClbMF0rby5kb21haW4oKVswXSouMDEsby5kb21haW4oKVsxXS1vLmRv
bWFpbigpWzFdKi49CjAxXSk6by5kb21haW4oWy0xLDFdKSk7dmFyIE49M0RULnNlbGVjdEFsbCgi
Zy5udi13cmFwLm52LWhpc3RvcmljYWxCYXItIitpKT0KLmRhdGEoW3dbMF0udmFsdWVzXSksQz0z
RE4uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBuPQp2LWhp
c3RvcmljYWxCYXItIitpKSxrPTNEQy5hcHBlbmQoImRlZnMiKSxMPTNEQy5hcHBlbmQoImciKSxB
PTNETi5zZWxlY3QoImc9CiIpO0wuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1iYXJzIiks
Ti5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0Lj0KbGVmdCsiLCIrdC50b3ArIikiKSxU
Lm9uKCJjbGljayIsZnVuY3Rpb24oZSx0KXt5LmNoYXJ0Q2xpY2soe2RhdGE6ZSxpbmRleDp0PQos
cG9zOmQzLmV2ZW50LGlkOml9KX0pLGsuYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIoImlkIiwibnYt
Y2hhcnQtY2xpcC1wYXRoLSI9CitpKS5hcHBlbmQoInJlY3QiKSxOLnNlbGVjdCgiI252LWNoYXJ0
LWNsaXAtcGF0aC0iK2krIiByZWN0IikuYXR0cigid2lkdGgiLD0KRSkuYXR0cigiaGVpZ2h0IixT
KSxBLmF0dHIoImNsaXAtcGF0aCIsaD8idXJsKCNudi1jaGFydC1jbGlwLXBhdGgtIitpKyIpIjoi
PQoiKTt2YXIgTz0zRE4uc2VsZWN0KCIubnYtYmFycyIpLnNlbGVjdEFsbCgiLm52LWJhciIpLmRh
dGEoZnVuY3Rpb24oZSl7cmV0dXI9Cm4gZX0sZnVuY3Rpb24oZSx0KXtyZXR1cm4gdShlLHQpfSk7
Ty5leGl0KCkucmVtb3ZlKCk7dmFyIE09M0RPLmVudGVyKCkuYXBwZT0KbmQoInJlY3QiKS5hdHRy
KCJ4IiwwKS5hdHRyKCJ5IixmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhv
KE1hPQp0aC5tYXgoMCxhKHQsbikpKSl9KS5hdHRyKCJoZWlnaHQiLGZ1bmN0aW9uKHQsbil7cmV0
dXJuIGUudXRpbHMuTmFOdG9aZXJvKE09CmF0aC5hYnMobyhhKHQsbikpLW8oMCkpKX0pLmF0dHIo
InRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKD0KIisocyh1KGUsdCkp
LUUvd1swXS52YWx1ZXMubGVuZ3RoKi40NSkrIiwwKSJ9KS5vbigibW91c2VvdmVyIixmdW5jdGlv
bihlLHQpPQp7aWYoIWIpcmV0dXJuO2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIsITAp
LHkuZWxlbWVudE1vdXNlb3Zlcih7cG9pbnQ9CjplLHNlcmllczp3WzBdLHBvczpbcyh1KGUsdCkp
LG8oYShlLHQpKV0scG9pbnRJbmRleDp0LHNlcmllc0luZGV4OjAsZTpkMy5ldj0KZW50fSl9KS5v
bigibW91c2VvdXQiLGZ1bmN0aW9uKGUsdCl7aWYoIWIpcmV0dXJuO2QzLnNlbGVjdCh0aGlzKS5j
bGFzc2VkKCJoPQpvdmVyIiwhMSkseS5lbGVtZW50TW91c2VvdXQoe3BvaW50OmUsc2VyaWVzOndb
MF0scG9pbnRJbmRleDp0LHNlcmllc0luZGV4OjA9CixlOmQzLmV2ZW50fSl9KS5vbigiY2xpY2si
LGZ1bmN0aW9uKGUsdCl7aWYoIWIpcmV0dXJuO3kuZWxlbWVudENsaWNrKHt2YWx1ZT0KOmEoZSx0
KSxkYXRhOmUsaW5kZXg6dCxwb3M6W3ModShlLHQpKSxvKGEoZSx0KSldLGU6ZDMuZXZlbnQsaWQ6
aX0pLGQzLmV2ZW50PQouc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiZGJsY2xpY2siLGZ1bmN0aW9u
KGUsdCl7aWYoIWIpcmV0dXJuO3kuZWxlbWVudERibEM9CmxpY2soe3ZhbHVlOmEoZSx0KSxkYXRh
OmUsaW5kZXg6dCxwb3M6W3ModShlLHQpKSxvKGEoZSx0KSldLGU6ZDMuZXZlbnQsaWQ6aT0KfSks
ZDMuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9KTtPLmF0dHIoImZpbGwiLGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIHAoZSx0KX0pPQouYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4oYShl
LHQpPDA/Im52LWJhciBuZWdhdGl2ZSI6Im52LWJhciBwb3M9Cml0aXZlIikrIiBudi1iYXItIitu
KyItIit0fSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdD0K
ZSgiKyhzKHUoZSx0KSktRS93WzBdLnZhbHVlcy5sZW5ndGgqLjQ1KSsiLDApIn0pLmF0dHIoIndp
ZHRoIixFL3dbMF0udmFsdWVzPQoubGVuZ3RoKi45KSxPLmF0dHIoInkiLGZ1bmN0aW9uKHQsbil7
dmFyIHI9M0RhKHQsbik8MD9vKDApOm8oMCktbyhhKHQsbikpPDE9Cj9vKDApLTE6byhhKHQsbikp
O3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhyKX0pLmF0dHIoImhlaWdodCIsZnVuY3Rpb24odCxu
KT0Ke3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhNYXRoLm1heChNYXRoLmFicyhvKGEodCxuKSkt
bygwKSksMSkpfSl9KSx3fXZhciB0PQo9M0R7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9
LG49M0Q5NjAscj0zRDUwMCxpPTNETWF0aC5mbG9vcihNYXRoLnJhbmQ9Cm9tKCkqMWU0KSxzPTNE
ZDMuc2NhbGUubGluZWFyKCksbz0zRGQzLnNjYWxlLmxpbmVhcigpLHU9M0RmdW5jdGlvbihlKXty
ZXR1cj0KbiBlLnh9LGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS55fSxmPTNEW10sbD0zRFswXSxj
PTNEITEsaD0zRCEwLHA9M0RlLnV0aWxzPQouZGVmYXVsdENvbG9yKCksZCx2LG0sZyx5PTNEZDMu
ZGlzcGF0Y2goImNoYXJ0Q2xpY2siLCJlbGVtZW50Q2xpY2siLCJlbGVtZW49CnREYmxDbGljayIs
ImVsZW1lbnRNb3VzZW92ZXIiLCJlbGVtZW50TW91c2VvdXQiKSxiPTNEITA7cmV0dXJuIHcuaGln
aGxpZ2h0UD0Kb2ludD0zRGZ1bmN0aW9uKGUsdCl7ZDMuc2VsZWN0KCIubnYtaGlzdG9yaWNhbEJh
ci0iK2kpLnNlbGVjdCgiLm52LWJhcnMgLm52PQotYmFyLTAtIitlKS5jbGFzc2VkKCJob3ZlciIs
dCl9LHcuY2xlYXJIaWdobGlnaHRzPTNEZnVuY3Rpb24oKXtkMy5zZWxlY3QoIi49Cm52LWhpc3Rv
cmljYWxCYXItIitpKS5zZWxlY3QoIi5udi1iYXJzIC5udi1iYXIuaG92ZXIiKS5jbGFzc2VkKCJo
b3ZlciIsITEpfT0KLHcuZGlzcGF0Y2g9M0R5LHcub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1
bmMuYmluZCh3KSx3Lng9M0RmdW5jdGlvbihlKXtyPQpldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1
PTNEZSx3KTp1fSx3Lnk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmc9CnRoPyhh
PTNEZSx3KTphfSx3Lm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
Pyh0LnRvcD0zRHR5cD0KZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQucmln
aHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkPQoiP2UucmlnaHQ6dC5yaWdodCx0LmJv
dHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHQ9Cm9t
LHQubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCx3KTp0
fSx3LndpZHRoPTNEZnVuYz0KdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGUs
dyk6bn0sdy5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gPQphcmd1bWVudHMubGVuZ3RoPyhy
PTNEZSx3KTpyfSx3LnhTY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Q9
Cmg/KHM9M0RlLHcpOnN9LHcueVNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KG89M0RlLHcpOm99LD0Kdy54RG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGQ9M0RlLHcpOmR9LHcueURvbWFpbj0zRGZ1PQpuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHY9M0RlLHcpOnZ9LHcueFJhbmdlPTNEZnVuY3Rpb24oZSl7cmV0
dXI9Cm4gYXJndW1lbnRzLmxlbmd0aD8obT0zRGUsdyk6bX0sdy55UmFuZ2U9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbj0KZ3RoPyhnPTNEZSx3KTpnfSx3LmZvcmNlWD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSx3KTpmPQp9LHcuZm9yY2VZPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLHcpOmx9LHcucGFkRGF0
YT0zRGY9CnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLHcpOmN9LHcu
Y2xpcEVkZ2U9M0RmdW5jdGlvbihlKXtyZT0KdHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSx3
KTpofSx3LmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sPQplbmd0aD8ocD0z
RGUudXRpbHMuZ2V0Q29sb3IodCksdyk6cH0sdy5pZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGU9Cm5ndGg/KGk9M0RlLHcpOml9LHcuaW50ZXJhY3RpdmU9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0zRD0KITEsdyk6Yn0sd30sZS5tb2RlbHMuYnVsbGV0
PTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBtKGUpe3JldHVybiBlLmVhY2goZnVuY3RpPQpvbihlLG4p
e3ZhciBwPTNEYy10LmxlZnQtdC5yaWdodCxtPTNEaC10LnRvcC10LmJvdHRvbSxnPTNEZDMuc2Vs
ZWN0KHRoaXMpLHk9Cj0zRGkuY2FsbCh0aGlzLGUsbikuc2xpY2UoKS5zb3J0KGQzLmRlc2NlbmRp
bmcpLGI9M0RzLmNhbGwodGhpcyxlLG4pLnNsaWNlKD0KKS5zb3J0KGQzLmRlc2NlbmRpbmcpLHc9
M0RvLmNhbGwodGhpcyxlLG4pLnNsaWNlKCkuc29ydChkMy5kZXNjZW5kaW5nKSxFPTNEPQp1LmNh
bGwodGhpcyxlLG4pLnNsaWNlKCksUz0zRGEuY2FsbCh0aGlzLGUsbikuc2xpY2UoKSx4PTNEZi5j
YWxsKHRoaXMsZSxuKS49CnNsaWNlKCksVD0zRGQzLnNjYWxlLmxpbmVhcigpLmRvbWFpbihkMy5l
eHRlbnQoZDMubWVyZ2UoW2wseV0pKSkucmFuZ2Uocj9bcD0KLDBdOlswLHBdKSxOPTNEdGhpcy5f
X2NoYXJ0X198fGQzLnNjYWxlLmxpbmVhcigpLmRvbWFpbihbMCxJbmZpbml0eV0pLnJhbmdlPQoo
VC5yYW5nZSgpKTt0aGlzLl9fY2hhcnRfXz0zRFQ7dmFyIEM9M0RkMy5taW4oeSksaz0zRGQzLm1h
eCh5KSxMPTNEeVsxXSxBPQo9M0RnLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LWJ1bGxldCIpLmRh
dGEoW2VdKSxPPTNEQS5lbnRlcigpLmFwcGVuZCgiZyIpLmE9CnR0cigiY2xhc3MiLCJudmQzIG52
LXdyYXAgbnYtYnVsbGV0IiksTT0zRE8uYXBwZW5kKCJnIiksXz0zREEuc2VsZWN0KCJnIik7TT0K
LmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwibnYtcmFuZ2UgbnYtcmFuZ2VNYXgiKSxNLmFw
cGVuZCgicmVjdCIpLmF0dHIoPQoiY2xhc3MiLCJudi1yYW5nZSBudi1yYW5nZUF2ZyIpLE0uYXBw
ZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJudi1yYW5nZSBudi09CnJhbmdlTWluIiksTS5hcHBl
bmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm52LW1lYXN1cmUiKSxNLmFwcGVuZCgicGF0aCIpLmF0
dD0KcigiY2xhc3MiLCJudi1tYXJrZXJUcmlhbmdsZSIpLEEuYXR0cigidHJhbnNmb3JtIiwidHJh
bnNsYXRlKCIrdC5sZWZ0KyIsIit0PQoudG9wKyIpIik7dmFyIEQ9M0RmdW5jdGlvbihlKXtyZXR1
cm4gTWF0aC5hYnMoTihlKS1OKDApKX0sUD0zRGZ1bmN0aW9uKGUpe3I9CmV0dXJuIE1hdGguYWJz
KFQoZSktVCgwKSl9LEg9M0RmdW5jdGlvbihlKXtyZXR1cm4gZTwwP04oZSk6TigwKX0sQj0zRGZ1
bmN0aT0Kb24oZSl7cmV0dXJuIGU8MD9UKGUpOlQoMCl9O18uc2VsZWN0KCJyZWN0Lm52LXJhbmdl
TWF4IikuYXR0cigiaGVpZ2h0IixtKS5hPQp0dHIoIndpZHRoIixQKGs+MD9rOkMpKS5hdHRyKCJ4
IixCKGs+MD9rOkMpKS5kYXR1bShrPjA/azpDKSxfLnNlbGVjdCgicmVjdC49Cm52LXJhbmdlQXZn
IikuYXR0cigiaGVpZ2h0IixtKS5hdHRyKCJ3aWR0aCIsUChMKSkuYXR0cigieCIsQihMKSkuZGF0
dW0oTCksXz0KLnNlbGVjdCgicmVjdC5udi1yYW5nZU1pbiIpLmF0dHIoImhlaWdodCIsbSkuYXR0
cigid2lkdGgiLFAoaykpLmF0dHIoIngiLEIoPQprKSkuYXR0cigid2lkdGgiLFAoaz4wP0M6aykp
LmF0dHIoIngiLEIoaz4wP0M6aykpLmRhdHVtKGs+MD9DOmspLF8uc2VsZWN0KCI9CnJlY3QubnYt
bWVhc3VyZSIpLnN0eWxlKCJmaWxsIixkKS5hdHRyKCJoZWlnaHQiLG0vMykuYXR0cigieSIsbS8z
KS5hdHRyKCJ3aT0KZHRoIix3PDA/VCgwKS1UKHdbMF0pOlQod1swXSktVCgwKSkuYXR0cigieCIs
Qih3KSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oPQope3YuZWxlbWVudE1vdXNlb3Zlcih7dmFs
dWU6d1swXSxsYWJlbDp4WzBdfHwiQ3VycmVudCIscG9zOltUKHdbMF0pLG0vMl19KX09Cikub24o
Im1vdXNlb3V0IixmdW5jdGlvbigpe3YuZWxlbWVudE1vdXNlb3V0KHt2YWx1ZTp3WzBdLGxhYmVs
OnhbMF18fCJDdXJyZT0KbnQifSl9KTt2YXIgaj0zRG0vNjtiWzBdP18uc2VsZWN0QWxsKCJwYXRo
Lm52LW1hcmtlclRyaWFuZ2xlIikuYXR0cigidHJhbnNmPQpvcm0iLGZ1bmN0aW9uKGUpe3JldHVy
biJ0cmFuc2xhdGUoIitUKGJbMF0pKyIsIittLzIrIikifSkuYXR0cigiZCIsIk0wLCIrais9CiJM
IitqKyIsIisgLWorIiAiKyAtaisiLCIrIC1qKyJaIikub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24o
KXt2LmVsZW1lbnRNb3VzZT0Kb3Zlcih7dmFsdWU6YlswXSxsYWJlbDpTWzBdfHwiUHJldmlvdXMi
LHBvczpbVChiWzBdKSxtLzJdfSl9KS5vbigibW91c2VvdXQiPQosZnVuY3Rpb24oKXt2LmVsZW1l
bnRNb3VzZW91dCh7dmFsdWU6YlswXSxsYWJlbDpTWzBdfHwiUHJldmlvdXMifSl9KTpfLnNlbGU9
CmN0QWxsKCJwYXRoLm52LW1hcmtlclRyaWFuZ2xlIikucmVtb3ZlKCksQS5zZWxlY3RBbGwoIi5u
di1yYW5nZSIpLm9uKCJtb3VzZT0Kb3ZlciIsZnVuY3Rpb24oZSx0KXt2YXIgbj0zREVbdF18fCh0
P3Q9M0Q9M0QxPyJNZWFuIjoiTWluaW11bSI6Ik1heGltdW0iKTt2PQouZWxlbWVudE1vdXNlb3Zl
cih7dmFsdWU6ZSxsYWJlbDpuLHBvczpbVChlKSxtLzJdfSl9KS5vbigibW91c2VvdXQiLGZ1bmN0
aW89Cm4oZSx0KXt2YXIgbj0zREVbdF18fCh0P3Q9M0Q9M0QxPyJNZWFuIjoiTWluaW11bSI6Ik1h
eGltdW0iKTt2LmVsZW1lbnRNb3VzZT0Kb3V0KHt2YWx1ZTplLGxhYmVsOm59KX0pfSksbX12YXIg
dD0zRHt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0sbj0zRCJsPQplZnQiLHI9M0QhMSxp
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUucmFuZ2VzfSxzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUu
bWFya2U9CnJzfSxvPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUubWVhc3VyZXN9LHU9M0RmdW5jdGlv
bihlKXtyZXR1cm4gZS5yYW5nZUxhYmVscz0KP2UucmFuZ2VMYWJlbHM6W119LGE9M0RmdW5jdGlv
bihlKXtyZXR1cm4gZS5tYXJrZXJMYWJlbHM/ZS5tYXJrZXJMYWJlbHM6W119PQosZj0zRGZ1bmN0
aW9uKGUpe3JldHVybiBlLm1lYXN1cmVMYWJlbHM/ZS5tZWFzdXJlTGFiZWxzOltdfSxsPTNEWzBd
LGM9M0QzODA9CixoPTNEMzAscD0zRG51bGwsZD0zRGUudXRpbHMuZ2V0Q29sb3IoWyIjMWY3N2I0
Il0pLHY9M0RkMy5kaXNwYXRjaCgiZWxlbWVudD0KTW91c2VvdmVyIiwiZWxlbWVudE1vdXNlb3V0
Iik7cmV0dXJuIG0uZGlzcGF0Y2g9M0R2LG0ub3B0aW9ucz0zRGUudXRpbHMub3B0PQppb25zRnVu
Yy5iaW5kKG0pLG0ub3JpZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KG49M0RlLHI9M0Q9Cm49M0Q9M0QicmlnaHQifHxuPTNEPTNEImJvdHRvbSIsbSk6bn0sbS5yYW5n
ZXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbj0KdHMubGVuZ3RoPyhpPTNEZSxtKTppfSxt
Lm1hcmtlcnM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0KPTNEZSxt
KTpzfSxtLm1lYXN1cmVzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89
M0RlLG0pOm99LG0uPQpmb3JjZVg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8obD0zRGUsbSk6bH0sbS53aWR0aD0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGM9M0RlLG0pOmN9LG0uaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZz0KdW1l
bnRzLmxlbmd0aD8oaD0zRGUsbSk6aH0sbS5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oPQp0LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRv
cDp0LnRvcCx0LnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPQo9M0QidW5kZWZpbmVkIj9lLnJpZ2h0
OnQucmlnaHQsdC5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS49CmJv
dHRvbTp0LmJvdHRvbSx0LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVm
dDp0LmxlZnQsbSk6dH0sbT0KLnRpY2tGb3JtYXQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8ocD0zRGUsbSk6cH0sbS5jb2xvcj0zRGZ1PQpuY3Rpb24odCl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGQ9M0RlLnV0aWxzLmdldENvbG9yKHQpLG0pOmR9LG19LGUubW9kZWw9
CnMuYnVsbGV0Q2hhcnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIG0oZSl7cmV0dXJuIGUuZWFjaChm
dW5jdGlvbihuLGgpe3ZhciBnPQo9M0RkMy5zZWxlY3QodGhpcykseT0zRChhfHxwYXJzZUludChn
LnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS1pLmxlZnQtaS5yaWdodCw9CmI9M0RmLWkudG9wLWkuYm90
dG9tLHc9M0R0aGlzO20udXBkYXRlPTNEZnVuY3Rpb24oKXttKGUpfSxtLmNvbnRhaW5lcj0zRHRo
aT0KcztpZighbnx8IXMuY2FsbCh0aGlzLG4saCkpe3ZhciBFPTNEZy5zZWxlY3RBbGwoIi5udi1u
b0RhdGEiKS5kYXRhKFtwXSk7cmV0PQp1cm4gRS5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIo
ImNsYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2U9Cm0iKS5zdHlsZSgidGV4
dC1hbmNob3IiLCJtaWRkbGUiKSxFLmF0dHIoIngiLGkubGVmdCt5LzIpLmF0dHIoInkiLDE4K2ku
dG9wKz0KYi8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksbX1nLnNlbGVjdEFsbCgiLm52
LW5vRGF0YSIpLnJlbW92ZSgpO3ZhciBTPQo9M0RzLmNhbGwodGhpcyxuLGgpLnNsaWNlKCkuc29y
dChkMy5kZXNjZW5kaW5nKSx4PTNEby5jYWxsKHRoaXMsbixoKS5zbGljZSg9Cikuc29ydChkMy5k
ZXNjZW5kaW5nKSxUPTNEdS5jYWxsKHRoaXMsbixoKS5zbGljZSgpLnNvcnQoZDMuZGVzY2VuZGlu
ZyksTj0zRD0KZy5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1idWxsZXRDaGFydCIpLmRhdGEoW25d
KSxDPTNETi5lbnRlcigpLmFwcGVuZCgiZyIpPQouYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAg
bnYtYnVsbGV0Q2hhcnQiKSxrPTNEQy5hcHBlbmQoImciKSxMPTNETi5zZWxlY3Q9CigiZyIpO2su
YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1idWxsZXRXcmFwIiksay5hcHBlbmQoImciKS5h
dHRyKCJjbGFzcz0KIiwibnYtdGl0bGVzIiksTi5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUo
IitpLmxlZnQrIiwiK2kudG9wKyIpIik7dmFyIEE9Cj0zRGQzLnNjYWxlLmxpbmVhcigpLmRvbWFp
bihbMCxNYXRoLm1heChTWzBdLHhbMF0sVFswXSldKS5yYW5nZShyP1t5LDBdOlswLD0KeV0pLE89
M0R0aGlzLl9fY2hhcnRfX3x8ZDMuc2NhbGUubGluZWFyKCkuZG9tYWluKFswLEluZmluaXR5XSku
cmFuZ2UoQS5yYW5nPQplKCkpO3RoaXMuX19jaGFydF9fPTNEQTt2YXIgTT0zRGZ1bmN0aW9uKGUp
e3JldHVybiBNYXRoLmFicyhPKGUpLU8oMCkpfSxfPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gTWF0
aC5hYnMoQShlKS1BKDApKX0sRD0zRGsuc2VsZWN0KCIubnYtdGl0bGVzIikuYXBwZW49CmQoImci
KS5hdHRyKCJ0ZXh0LWFuY2hvciIsImVuZCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgt
NiwiKyhmLWkudG9wLT0KaS5ib3R0b20pLzIrIikiKTtELmFwcGVuZCgidGV4dCIpLmF0dHIoImNs
YXNzIiwibnYtdGl0bGUiKS50ZXh0KGZ1bmN0aW9uKGUpPQp7cmV0dXJuIGUudGl0bGV9KSxELmFw
cGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnYtc3VidGl0bGUiKS5hdHRyKCJkeSIsIjE9CmVt
IikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZS5zdWJ0aXRsZX0pLHQud2lkdGgoeSkuaGVpZ2h0
KGIpO3ZhciBQPTNETC5zZT0KbGVjdCgiLm52LWJ1bGxldFdyYXAiKTtkMy50cmFuc2l0aW9uKFAp
LmNhbGwodCk7dmFyIEg9M0RsfHxBLnRpY2tGb3JtYXQoeS8xPQowMCksQj0zREwuc2VsZWN0QWxs
KCJnLm52LXRpY2siKS5kYXRhKEEudGlja3MoeS81MCksZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXM9
Ci50ZXh0Q29udGVudHx8SChlKX0pLGo9M0RCLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xh
c3MiLCJudi10aWNrIikuYXR0cj0KKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUpe3JldHVybiJ0cmFu
c2xhdGUoIitPKGUpKyIsMCkifSkuc3R5bGUoIm9wYWNpdHkiLDFlPQotNik7ai5hcHBlbmQoImxp
bmUiKS5hdHRyKCJ5MSIsYikuYXR0cigieTIiLGIqNy82KSxqLmFwcGVuZCgidGV4dCIpLmF0dHIo
InQ9CmV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJkeSIsIjFlbSIpLmF0dHIoInkiLGIqNy82
KS50ZXh0KEgpO3ZhciBGPTNEZDMudD0KcmFuc2l0aW9uKEIpLmF0dHIoInRyYW5zZm9ybSIsZnVu
Y3Rpb24oZSl7cmV0dXJuInRyYW5zbGF0ZSgiK0EoZSkrIiwwKSJ9KS5zPQp0eWxlKCJvcGFjaXR5
IiwxKTtGLnNlbGVjdCgibGluZSIpLmF0dHIoInkxIixiKS5hdHRyKCJ5MiIsYio3LzYpLEYuc2Vs
ZWN0KCI9CnRleHQiKS5hdHRyKCJ5IixiKjcvNiksZDMudHJhbnNpdGlvbihCLmV4aXQoKSkuYXR0
cigidHJhbnNmb3JtIixmdW5jdGlvbihlKT0Ke3JldHVybiJ0cmFuc2xhdGUoIitBKGUpKyIsMCki
fSkuc3R5bGUoIm9wYWNpdHkiLDFlLTYpLnJlbW92ZSgpLGQub24oInRvb2x0PQppcFNob3ciLGZ1
bmN0aW9uKGUpe2Uua2V5PTNEbi50aXRsZSxjJiZ2KGUsdy5wYXJlbnROb2RlKX0pfSksZDMudGlt
ZXIuZmx1c2g9CigpLG19dmFyIHQ9M0RlLm1vZGVscy5idWxsZXQoKSxuPTNEImxlZnQiLHI9M0Qh
MSxpPTNEe3RvcDo1LHJpZ2h0OjQwLGJvdHRvbT0KOjIwLGxlZnQ6MTIwfSxzPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGUucmFuZ2VzfSxvPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUubWFyPQprZXJzfSx1
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUubWVhc3VyZXN9LGE9M0RudWxsLGY9M0Q1NSxsPTNEbnVs
bCxjPTNEITAsaD0KPTNEZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4iPGgzPiIrdCsiPC9oMz4i
KyI8cD4iK24rIjwvcD4ifSxwPTNEIk5vIERhdGEgPQpBdmFpbGFibGUuIixkPTNEZDMuZGlzcGF0
Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhpZGUiKSx2PTNEZnVuY3Rpb24odCxuKXs9CnZhciBy
PTNEdC5wb3NbMF0rKG4ub2Zmc2V0TGVmdHx8MCkraS5sZWZ0LHM9M0R0LnBvc1sxXSsobi5vZmZz
ZXRUb3B8fDApK2kudD0Kb3Asbz0zRGgodC5rZXksdC5sYWJlbCx0LnZhbHVlLHQsbSk7ZS50b29s
dGlwLnNob3coW3Isc10sbyx0LnZhbHVlPDA/ImUiOiJ3PQoiLG51bGwsbil9O3JldHVybiB0LmRp
c3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2QudG89Cm9s
dGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5j
dGlvbihlKXtkLnRvb2x0aT0KcEhpZGUoZSl9KSxkLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24o
KXtjJiZlLnRvb2x0aXAuY2xlYW51cCgpfSksbS5kaXNwYXRjPQpoPTNEZCxtLmJ1bGxldD0zRHQs
ZDMucmViaW5kKG0sdCwiY29sb3IiKSxtLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmI9
CmluZChtKSxtLm9yaWVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhu
PTNEZSxyPTNEbj0zRD0zRCJyaT0KZ2h0Inx8bj0zRD0zRCJib3R0b20iLG0pOm59LG0ucmFuZ2Vz
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/PQoocz0zRGUsbSk6c30sbS5t
YXJrZXJzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RlLG0pOm99
LG09Ci5tZWFzdXJlcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNE
ZSxtKTp1fSxtLndpZHRoPTNEZnVuYz0KdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
YT0zRGUsbSk6YX0sbS5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gPQphcmd1bWVudHMubGVu
Z3RoPyhmPTNEZSxtKTpmfSxtLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3Q9Cmg/KGkudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOmkudG9w
LGkucmlnaHQ9M0R0eXBlb2YgZS5yaWdodD0KIT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6aS5yaWdo
dCxpLmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lPQouYm90dG9tOmku
Ym90dG9tLGkubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OmkubGVm
dCxtKTppfSw9Cm0udGlja0Zvcm1hdD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhsPTNEZSxtKTpsfSxtLnRvb2x0aXBzPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oYz0zRGUsbSk6Y30sbS50b29sdGlwQ29udGVudD0zRGZ1bmM9CnRpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLG0pOmh9LG0ubm9EYXRhPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuID0KYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsbSk6cH0sbX0sZS5tb2RlbHMuY3Vt
dWxhdGl2ZUxpbmVDaGFydD0zRGZ1bmN0aW9uKCl7PQpmdW5jdGlvbiBEKGIpe3JldHVybiBiLmVh
Y2goZnVuY3Rpb24oYil7ZnVuY3Rpb24gSShlLHQpe2QzLnNlbGVjdChELmNvbnRhaW49CmVyKS5z
dHlsZSgiY3Vyc29yIiwiZXctcmVzaXplIil9ZnVuY3Rpb24gcShlLHQpe00ueD0zRGQzLmV2ZW50
LngsTS5pPTNETWF0aD0KLnJvdW5kKE8uaW52ZXJ0KE0ueCkpLG50KCl9ZnVuY3Rpb24gUihlLHQp
e2QzLnNlbGVjdChELmNvbnRhaW5lcikuc3R5bGUoImN1PQpyc29yIiwiYXV0byIpLHguaW5kZXg9
M0RNLmksay5zdGF0ZUNoYW5nZSh4KX1mdW5jdGlvbiBudCgpe3R0LmRhdGEoW01dKTt2YXI9CiBl
PTNERC50cmFuc2l0aW9uRHVyYXRpb24oKTtELnRyYW5zaXRpb25EdXJhdGlvbigwKSxELnVwZGF0
ZSgpLEQudHJhbnNpdGlvbj0KRHVyYXRpb24oZSl9dmFyIEw9M0RkMy5zZWxlY3QodGhpcykuY2xh
c3NlZCgibnYtY2hhcnQtIitTLCEwKSxBPTNEdGhpcyxIPTNEPQooZnx8cGFyc2VJbnQoTC5zdHls
ZSgid2lkdGgiKSl8fDk2MCktdS5sZWZ0LXUucmlnaHQsQj0zRChsfHxwYXJzZUludChMLnN0eWw9
CmUoImhlaWdodCIpKXx8NDAwKS11LnRvcC11LmJvdHRvbTtELnVwZGF0ZT0zRGZ1bmN0aW9uKCl7
TC5jYWxsKEQpfSxELmNvbnRhaT0KbmVyPTNEdGhpcyx4LmRpc2FibGVkPTNEYi5tYXAoZnVuY3Rp
b24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSk7aWYoIVQpe3ZhciBqPQo7VD0zRHt9O2ZvcihqIGlu
IHgpeFtqXWluc3RhbmNlb2YgQXJyYXk/VFtqXT0zRHhbal0uc2xpY2UoMCk6VFtqXT0zRHhbal19
dmE9CnIgRj0zRGQzLmJlaGF2aW9yLmRyYWcoKS5vbigiZHJhZ3N0YXJ0IixJKS5vbigiZHJhZyIs
cSkub24oImRyYWdlbmQiLFIpO2lmKD0KIWJ8fCFiLmxlbmd0aHx8IWIuZmlsdGVyKGZ1bmN0aW9u
KGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgpe3ZhciBVPQo9M0RMLnNlbGVjdEFs
bCgiLm52LW5vRGF0YSIpLmRhdGEoW05dKTtyZXR1cm4gVS5lbnRlcigpLmFwcGVuZCgidGV4dCIp
LmF0dHI9CigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHls
ZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKT0KLFUuYXR0cigieCIsdS5sZWZ0K0gvMikuYXR0cigi
eSIsdS50b3ArQi8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksRH1MPQouc2VsZWN0QWxs
KCIubnYtbm9EYXRhIikucmVtb3ZlKCksdz0zRHQueFNjYWxlKCksRT0zRHQueVNjYWxlKCk7aWYo
IXkpe3ZhciA9Cno9M0RiLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pLm1h
cChmdW5jdGlvbihlLG4pe3ZhciByPTNEZDMuZT0KeHRlbnQoZS52YWx1ZXMsdC55KCkpO3JldHVy
biByWzBdPC0wLjk1JiYoclswXT0zRC0wLjk1KSxbKHJbMF0tclsxXSkvKDErclsxPQpdKSwoclsx
XS1yWzBdKS8oMStyWzBdKV19KSxXPTNEW2QzLm1pbih6LGZ1bmN0aW9uKGUpe3JldHVybiBlWzBd
fSksZDMubWF4KHo9CixmdW5jdGlvbihlKXtyZXR1cm4gZVsxXX0pXTt0LnlEb21haW4oVyl9ZWxz
ZSB0LnlEb21haW4obnVsbCk7Ty5kb21haW4oWzAsYj0KWzBdLnZhbHVlcy5sZW5ndGgtMV0pLnJh
bmdlKFswLEhdKS5jbGFtcCghMCk7dmFyIGI9M0RQKE0uaSxiKSxYPTNEZz8ibm9uZSI6PQoiYWxs
IixWPTNETC5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1jdW11bGF0aXZlTGluZSIpLmRhdGEoW2Jd
KSwkPTNEVi5lbnRlcig9CikuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAg
bnYtY3VtdWxhdGl2ZUxpbmUiKS5hcHBlbmQoImciKSxKPQo9M0RWLnNlbGVjdCgiZyIpOyQuYXBw
ZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1pbnRlcmFjdGl2ZSIpLCQuYXBwZW5kKCJnIik9Ci5h
dHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcyIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUi
KSwkLmFwcGVuZCgiZyIpLj0KYXR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKSwkLmFwcGVuZCgi
ZyIpLmF0dHIoImNsYXNzIiwibnYtYmFja2dyb3VuZCIpLCQuPQphcHBlbmQoImciKS5hdHRyKCJj
bGFzcyIsIm52LWxpbmVzV3JhcCIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsWCksJC5hcHBlbmQ9
CigiZyIpLmF0dHIoImNsYXNzIiwibnYtYXZnTGluZXNXcmFwIikuc3R5bGUoInBvaW50ZXItZXZl
bnRzIiwibm9uZSIpLCQuYXBwZT0KbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZFdyYXAi
KSwkLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtY29udHJvPQpsc1dyYXAiKSxjJiYoaS53
aWR0aChIKSxKLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5kYXR1bShiKS5jYWxsKGkpLHUudG9w
IT0KPTNEaS5oZWlnaHQoKSYmKHUudG9wPTNEaS5oZWlnaHQoKSxCPTNEKGx8fHBhcnNlSW50KEwu
c3R5bGUoImhlaWdodCIpKXx8NDAwPQopLXUudG9wLXUuYm90dG9tKSxKLnNlbGVjdCgiLm52LWxl
Z2VuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCw9CiIrIC11LnRvcCsiKSIp
KTtpZihtKXt2YXIgSz0zRFt7a2V5OiJSZS1zY2FsZSB5LWF4aXMiLGRpc2FibGVkOiF5fV07cy53
aWR0aD0KKDE0MCkuY29sb3IoWyIjNDQ0IiwiIzQ0NCIsIiM0NDQiXSkucmlnaHRBbGlnbighMSku
bWFyZ2luKHt0b3A6NSxyaWdodDowLGJvPQp0dG9tOjUsbGVmdDoyMH0pLEouc2VsZWN0KCIubnYt
Y29udHJvbHNXcmFwIikuZGF0dW0oSykuYXR0cigidHJhbnNmb3JtIiwidHI9CmFuc2xhdGUoMCwi
KyAtdS50b3ArIikiKS5jYWxsKHMpfVYuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdS5s
ZWZ0KyIsIj0KK3UudG9wKyIpIiksZCYmSi5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5hdHRyKCJ0
cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitIKyIsPQowKSIpO3ZhciBRPTNEYi5maWx0ZXIoZnVuY3Rp
b24oZSl7cmV0dXJuIGUudGVtcERpc2FibGVkfSk7Vi5zZWxlY3QoIi50ZW1wRGk9CnNhYmxlZCIp
LnJlbW92ZSgpLFEubGVuZ3RoJiZWLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwidGVtcERp
c2FibGVkIikuYT0KdHRyKCJ4IixILzIpLmF0dHIoInkiLCItLjcxZW0iKS5zdHlsZSgidGV4dC1h
bmNob3IiLCJlbmQiKS50ZXh0KFEubWFwKGZ1bmN0PQppb24oZSl7cmV0dXJuIGUua2V5fSkuam9p
bigiLCAiKSsiIHZhbHVlcyBjYW5ub3QgYmUgY2FsY3VsYXRlZCBmb3IgdGhpcyB0aW09CmUgcGVy
aW9kLiIpLGcmJihvLndpZHRoKEgpLmhlaWdodChCKS5tYXJnaW4oe2xlZnQ6dS5sZWZ0LHRvcDp1
LnRvcH0pLnN2Z0Nvbj0KdGFpbmVyKEwpLnhTY2FsZSh3KSxWLnNlbGVjdCgiLm52LWludGVyYWN0
aXZlIikuY2FsbChvKSksJC5zZWxlY3QoIi5udi1iYWNrPQpncm91bmQiKS5hcHBlbmQoInJlY3Qi
KSxKLnNlbGVjdCgiLm52LWJhY2tncm91bmQgcmVjdCIpLmF0dHIoIndpZHRoIixIKS5hdHQ9CnIo
ImhlaWdodCIsQiksdC55KGZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc3BsYXkueX0pLndpZHRoKEgp
LmhlaWdodChCKS5jb2xvcj0KKGIubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGEo
ZSx0KX0pLmZpbHRlcihmdW5jdGlvbihlLHQpe3JldHVybiFiPQpbdF0uZGlzYWJsZWQmJiFiW3Rd
LnRlbXBEaXNhYmxlZH0pKTt2YXIgRz0zREouc2VsZWN0KCIubnYtbGluZXNXcmFwIikuZGF0dW09
CihiLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZCYmIWUudGVtcERpc2FibGVk
fSkpO0cuY2FsbCh0KSxiLmZvcj0KRWFjaChmdW5jdGlvbihlLHQpe2Uuc2VyaWVzSW5kZXg9M0R0
fSk7dmFyIFk9M0RiLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hPQplLmRpc2FibGVkJiYhIUMo
ZSl9KSxaPTNESi5zZWxlY3QoIi5udi1hdmdMaW5lc1dyYXAiKS5zZWxlY3RBbGwoImxpbmUiKS5k
YXQ9CmEoWSxmdW5jdGlvbihlKXtyZXR1cm4gZS5rZXl9KSxldD0zRGZ1bmN0aW9uKGUpe3ZhciB0
PTNERShDKGUpKTtyZXR1cm4gdDwwPz0KMDp0PkI/Qjp0fTtaLmVudGVyKCkuYXBwZW5kKCJsaW5l
Iikuc3R5bGUoInN0cm9rZS13aWR0aCIsMikuc3R5bGUoInN0cm9rZS1kPQphc2hhcnJheSIsIjEw
LDEwIikuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSxuKXtyZXR1cm4gdC5jb2xvcigpKGUsZS5z
ZXJpZXM9CkluZGV4KX0pLmF0dHIoIngxIiwwKS5hdHRyKCJ4MiIsSCkuYXR0cigieTEiLGV0KS5h
dHRyKCJ5MiIsZXQpLFouc3R5bGUoInN0cj0Kb2tlLW9wYWNpdHkiLGZ1bmN0aW9uKGUpe3ZhciB0
PTNERShDKGUpKTtyZXR1cm4gdDwwfHx0PkI/MDoxfSkuYXR0cigieDEiLDApPQouYXR0cigieDIi
LEgpLmF0dHIoInkxIixldCkuYXR0cigieTIiLGV0KSxaLmV4aXQoKS5yZW1vdmUoKTt2YXIgdHQ9
M0RHLnNlbGU9CmN0QWxsKCIubnYtaW5kZXhMaW5lIikuZGF0YShbTV0pO3R0LmVudGVyKCkuYXBw
ZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJudj0KLWluZGV4TGluZSIpLmF0dHIoIndpZHRoIiwz
KS5hdHRyKCJ4IiwtMikuYXR0cigiZmlsbCIsInJlZCIpLmF0dHIoImZpbGwtb3BhPQpjaXR5Iiwu
NSkuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuY2FsbChGKSx0dC5hdHRyKCJ0cmFuc2Zv
cm0iLGZ1bmN0aW89Cm4oZSl7cmV0dXJuInRyYW5zbGF0ZSgiK08oZS5pKSsiLDApIn0pLmF0dHIo
ImhlaWdodCIsQiksaCYmKG4uc2NhbGUodykudGljaz0KcyhNYXRoLm1pbihiWzBdLnZhbHVlcy5s
ZW5ndGgsSC83MCkpLnRpY2tTaXplKC1CLDApLEouc2VsZWN0KCIubnYteC5udi1heGlzPQoiKS5h
dHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK0UucmFuZ2UoKVswXSsiKSIpLGQzLnRyYW5z
aXRpb24oSi5zZWxlY3Q9CigiLm52LXgubnYtYXhpcyIpKS5jYWxsKG4pKSxwJiYoci5zY2FsZShF
KS50aWNrcyhCLzM2KS50aWNrU2l6ZSgtSCwwKSxkMy50cj0KYW5zaXRpb24oSi5zZWxlY3QoIi5u
di15Lm52LWF4aXMiKSkuY2FsbChyKSksSi5zZWxlY3QoIi5udi1iYWNrZ3JvdW5kIHJlY3QiPQop
Lm9uKCJjbGljayIsZnVuY3Rpb24oKXtNLng9M0RkMy5tb3VzZSh0aGlzKVswXSxNLmk9M0RNYXRo
LnJvdW5kKE8uaW52ZXJ0KE09Ci54KSkseC5pbmRleD0zRE0uaSxrLnN0YXRlQ2hhbmdlKHgpLG50
KCl9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50Q2xpY2siLGZ1bj0KY3Rpb24oZSl7TS5pPTNEZS5w
b2ludEluZGV4LE0ueD0zRE8oTS5pKSx4LmluZGV4PTNETS5pLGsuc3RhdGVDaGFuZ2UoeCksbnQo
PQopfSkscy5kaXNwYXRjaC5vbigibGVnZW5kQ2xpY2siLGZ1bmN0aW9uKGUsdCl7ZS5kaXNhYmxl
ZD0zRCFlLmRpc2FibGVkLHk9M0Q9CiFlLmRpc2FibGVkLHgucmVzY2FsZVk9M0R5LGsuc3RhdGVD
aGFuZ2UoeCksRC51cGRhdGUoKX0pLGkuZGlzcGF0Y2gub24oInN0YT0KdGVDaGFuZ2UiLGZ1bmN0
aW9uKGUpe3guZGlzYWJsZWQ9M0RlLmRpc2FibGVkLGsuc3RhdGVDaGFuZ2UoeCksRC51cGRhdGUo
KX0pPQosby5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlbW92ZSIsZnVuY3Rpb24oaSl7dC5jbGVh
ckhpZ2hsaWdodHMoKTt2YXIgcyxmLGw9CixjPTNEW107Yi5maWx0ZXIoZnVuY3Rpb24oZSx0KXty
ZXR1cm4gZS5zZXJpZXNJbmRleD0zRHQsIWUuZGlzYWJsZWR9KS5mb3JFYT0KY2goZnVuY3Rpb24o
bixyKXtmPTNEZS5pbnRlcmFjdGl2ZUJpc2VjdChuLnZhbHVlcyxpLnBvaW50WFZhbHVlLEQueCgp
KSx0LmhpPQpnaGxpZ2h0UG9pbnQocixmLCEwKTt2YXIgbz0zRG4udmFsdWVzW2ZdO2lmKHR5cGVv
ZiBvPTNEPTNEInVuZGVmaW5lZCIpcmV0dXI9Cm47dHlwZW9mIHM9M0Q9M0QidW5kZWZpbmVkIiYm
KHM9M0RvKSx0eXBlb2YgbD0zRD0zRCJ1bmRlZmluZWQiJiYobD0zREQueFNjYT0KbGUoKShELngo
KShvLGYpKSksYy5wdXNoKHtrZXk6bi5rZXksdmFsdWU6RC55KCkobyxmKSxjb2xvcjphKG4sbi5z
ZXJpZXNJbmRlPQp4KX0pfSk7aWYoYy5sZW5ndGg+Mil7dmFyIGg9M0RELnlTY2FsZSgpLmludmVy
dChpLm1vdXNlWSkscD0zRE1hdGguYWJzKEQueVM9CmNhbGUoKS5kb21haW4oKVswXS1ELnlTY2Fs
ZSgpLmRvbWFpbigpWzFdKSxkPTNELjAzKnAsbT0zRGUubmVhcmVzdFZhbHVlSW5kZT0KeChjLm1h
cChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZX0pLGgsZCk7bSE9M0Q9M0RudWxsJiYoY1ttXS5o
aWdobGlnaHQ9M0QhPQowKX12YXIgZz0zRG4udGlja0Zvcm1hdCgpKEQueCgpKHMsZiksZik7by50
b29sdGlwLnBvc2l0aW9uKHtsZWZ0OmwrdS5sZWZ0LHQ9Cm9wOmkubW91c2VZK3UudG9wfSkuY2hh
cnRDb250YWluZXIoQS5wYXJlbnROb2RlKS5lbmFibGVkKHYpLnZhbHVlRm9ybWF0dGVyKD0KZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gci50aWNrRm9ybWF0KCkoZSl9KS5kYXRhKHt2YWx1ZTpnLHNlcmll
czpjfSkoKSxvLnJlbmRlPQpyR3VpZGVMaW5lKGwpfSksby5kaXNwYXRjaC5vbigiZWxlbWVudE1v
dXNlb3V0IixmdW5jdGlvbihlKXtrLnRvb2x0aXBIaWRlKCk9Cix0LmNsZWFySGlnaGxpZ2h0cygp
fSksay5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe3YmJl8oZSxBLnBhcmVudE5vZGUpfT0K
KSxrLm9uKCJjaGFuZ2VTdGF0ZSIsZnVuY3Rpb24oZSl7dHlwZW9mIGUuZGlzYWJsZWQhPTNEInVu
ZGVmaW5lZCImJihiLmZvckVhPQpjaChmdW5jdGlvbih0LG4pe3QuZGlzYWJsZWQ9M0RlLmRpc2Fi
bGVkW25dfSkseC5kaXNhYmxlZD0zRGUuZGlzYWJsZWQpLHR5cGU9Cm9mIGUuaW5kZXghPTNEInVu
ZGVmaW5lZCImJihNLmk9M0RlLmluZGV4LE0ueD0zRE8oTS5pKSx4LmluZGV4PTNEZS5pbmRleCx0
dD0KLmRhdGEoW01dKSksdHlwZW9mIGUucmVzY2FsZVkhPTNEInVuZGVmaW5lZCImJih5PTNEZS5y
ZXNjYWxlWSksRC51cGRhdGUoKX0pPQp9KSxEfWZ1bmN0aW9uIFAoZSxuKXtyZXR1cm4gbi5tYXAo
ZnVuY3Rpb24obixyKXtpZighbi52YWx1ZXMpcmV0dXJuIG47dmFyIGk9Cj0zRG4udmFsdWVzW2Vd
O2lmKGk9M0Q9M0RudWxsKXJldHVybiBuO3ZhciBzPTNEdC55KCkoaSxlKTtyZXR1cm4gczwtMC45
NSYmIT0KQT8obi50ZW1wRGlzYWJsZWQ9M0QhMCxuKToobi50ZW1wRGlzYWJsZWQ9M0QhMSxuLnZh
bHVlcz0zRG4udmFsdWVzLm1hcChmdW5jPQp0aW9uKGUsbil7cmV0dXJuIGUuZGlzcGxheT0zRHt5
Oih0LnkoKShlLG4pLXMpLygxK3MpfSxlfSksbil9KX12YXIgdD0zRGUubW89CmRlbHMubGluZSgp
LG49M0RlLm1vZGVscy5heGlzKCkscj0zRGUubW9kZWxzLmF4aXMoKSxpPTNEZS5tb2RlbHMubGVn
ZW5kKCkscz0KPTNEZS5tb2RlbHMubGVnZW5kKCksbz0zRGUuaW50ZXJhY3RpdmVHdWlkZWxpbmUo
KSx1PTNEe3RvcDozMCxyaWdodDozMCxib3R0PQpvbTo1MCxsZWZ0OjYwfSxhPTNEZS51dGlscy5k
ZWZhdWx0Q29sb3IoKSxmPTNEbnVsbCxsPTNEbnVsbCxjPTNEITAsaD0zRCEwLHA9Cj0zRCEwLGQ9
M0QhMSx2PTNEITAsbT0zRCEwLGc9M0QhMSx5PTNEITAsYj0zRGZ1bmN0aW9uKGUsdCxuLHIsaSl7
cmV0dXJuIjxoMz0KPiIrZSsiPC9oMz4iKyI8cD4iK24rIiBhdCAiK3QrIjwvcD4ifSx3LEUsUz0z
RHQuaWQoKSx4PTNEe2luZGV4OjAscmVzY2FsZVk6PQp5fSxUPTNEbnVsbCxOPTNEIk5vIERhdGEg
QXZhaWxhYmxlLiIsQz0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLmF2ZXJhZ2V9LGs9M0Q9CmQzLmRp
c3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdGVDaGFuZ2UiLCJjaGFuZ2VT
dGF0ZSIpLEw9M0QwLD0KQT0zRCExO24ub3JpZW50KCJib3R0b20iKS50aWNrUGFkZGluZyg3KSxy
Lm9yaWVudChkPyJyaWdodCI6ImxlZnQiKSxzLnVwZGF0PQplU3RhdGUoITEpO3ZhciBPPTNEZDMu
c2NhbGUubGluZWFyKCksTT0zRHtpOjAseDowfSxfPTNEZnVuY3Rpb24oaSxzKXt2YXIgbz0KPTNE
aS5wb3NbMF0rKHMub2Zmc2V0TGVmdHx8MCksdT0zRGkucG9zWzFdKyhzLm9mZnNldFRvcHx8MCks
YT0zRG4udGlja0Zvcm1hPQp0KCkodC54KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKSxmPTNEci50
aWNrRm9ybWF0KCkodC55KCkoaS5wb2ludCxpLnBvaW50SW49CmRleCkpLGw9M0RiKGkuc2VyaWVz
LmtleSxhLGYsaSxEKTtlLnRvb2x0aXAuc2hvdyhbbyx1XSxsLG51bGwsbnVsbCxzKX07cmV0dT0K
cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtl
LnBvcz0zRFtlLnBvc1swXSt1PQoubGVmdCxlLnBvc1sxXSt1LnRvcF0say50b29sdGlwU2hvdyhl
KX0pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b289Cmx0aXAiLGZ1bmN0aW9uKGUp
e2sudG9vbHRpcEhpZGUoZSl9KSxrLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXt2JiZlLnRv
bz0KbHRpcC5jbGVhbnVwKCl9KSxELmRpc3BhdGNoPTNEayxELmxpbmVzPTNEdCxELmxlZ2VuZD0z
RGksRC54QXhpcz0zRG4sRC55QXhpPQpzPTNEcixELmludGVyYWN0aXZlTGF5ZXI9M0RvLGQzLnJl
YmluZChELHQsImRlZmluZWQiLCJpc0FyZWEiLCJ4IiwieSIsInhTY2E9CmxlIiwieVNjYWxlIiwi
c2l6ZSIsInhEb21haW4iLCJ5RG9tYWluIiwieFJhbmdlIiwieVJhbmdlIiwiZm9yY2VYIiwiZm9y
Y2VZIj0KLCJpbnRlcmFjdGl2ZSIsImNsaXBFZGdlIiwiY2xpcFZvcm9ub2kiLCJ1c2VWb3Jvbm9p
IiwiaWQiKSxELm9wdGlvbnM9M0RlLnV0PQppbHMub3B0aW9uc0Z1bmMuYmluZChEKSxELm1hcmdp
bj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1LnQ9Cm9wPTNEdHlwZW9m
IGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnUudG9wLHUucmlnaHQ9M0R0eXBlb2YgZS5yaWdo
dCE9M0QidT0KbmRlZmluZWQiP2UucmlnaHQ6dS5yaWdodCx1LmJvdHRvbT0zRHR5cGVvZiBlLmJv
dHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvPQptOnUuYm90dG9tLHUubGVmdD0zRHR5cGVvZiBl
LmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnUubGVmdCxEKTp1fSxELndpZHQ9Cmg9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUsRCk6Zn0sRC5oZWlnaHQ9M0Rm
dW5jdGlvbihlKT0Ke3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZSxEKTpsfSxELmNvbG9y
PTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50PQpzLmxlbmd0aD8oYT0zRGUudXRpbHMuZ2V0
Q29sb3IodCksaS5jb2xvcihhKSxEKTphfSxELnJlc2NhbGVZPTNEZnVuY3Rpb24oZSk9CntyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oeT0zRGUsRCk6eX0sRC5zaG93Q29udHJvbHM9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYT0Kcmd1bWVudHMubGVuZ3RoPyhtPTNEZSxEKTptfSxELnVzZUludGVyYWN0
aXZlR3VpZGVsaW5lPTNEZnVuY3Rpb24oZSl7cmV0dXJuPQogYXJndW1lbnRzLmxlbmd0aD8oZz0z
RGUsZT0zRD0zRD0zRCEwJiYoRC5pbnRlcmFjdGl2ZSghMSksRC51c2VWb3Jvbm9pKCExKSk9CixE
KTpnfSxELnNob3dMZWdlbmQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
Yz0zRGUsRCk6Y30sRC5zaD0Kb3dYQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhoPTNEZSxEKTpofSxELnNob3dZQXhpcz0zRGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHA9M0RlLEQpOnB9LEQucmlnaHRBbGlnbllBeGlzPTNEZnVuY3Rpb249
CihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGUsci5vcmllbnQoZT8icmlnaHQiOiJs
ZWZ0IiksRCk6ZH0sRC50b29sdD0KaXBzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHY9M0RlLEQpOnZ9LEQudG9vbHRpcENvbnRlbnQ9M0RmPQp1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhiPTNEZSxEKTpifSxELnN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0
dXI9Cm4gYXJndW1lbnRzLmxlbmd0aD8oeD0zRGUsRCk6eH0sRC5kZWZhdWx0U3RhdGU9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbj0KdHMubGVuZ3RoPyhUPTNEZSxEKTpUfSxELm5vRGF0YT0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhOPTNEPQplLEQpOk59LEQuYXZl
cmFnZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhDPTNEZSxEKTpDfSxE
LnRyYW49CnNpdGlvbkR1cmF0aW9uPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KEw9M0RlLEQpOkx9LEQubm9FcnJvcj0KQ2hlY2s9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oQT0zRGUsRCk6QX0sRH0sZS5tb2RlbHMuZGlzY3JlPQp0ZUJhcj0zRGZ1
bmN0aW9uKCl7ZnVuY3Rpb24gRShlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBpPTNE
bi10LmxlZnQ9Ci10LnJpZ2h0LEU9M0RyLXQudG9wLXQuYm90dG9tLFM9M0RkMy5zZWxlY3QodGhp
cyk7ZS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7ZT0KLnZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKGUp
e2Uuc2VyaWVzPTNEdH0pfSk7dmFyIFQ9M0RwJiZkP1tdOmUubWFwKGZ1bmN0aW9uPQooZSl7cmV0
dXJuIGUudmFsdWVzLm1hcChmdW5jdGlvbihlLHQpe3JldHVybnt4OnUoZSx0KSx5OmEoZSx0KSx5
MDplLnkwfX0pfSk9CjtzLmRvbWFpbihwfHxkMy5tZXJnZShUKS5tYXAoZnVuY3Rpb24oZSl7cmV0
dXJuIGUueH0pKS5yYW5nZUJhbmRzKHZ8fFswLGldLD0KLjEpLG8uZG9tYWluKGR8fGQzLmV4dGVu
dChkMy5tZXJnZShUKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0pLmNvbmNhdChmPQopKSks
Yz9vLnJhbmdlKG18fFtFLShvLmRvbWFpbigpWzBdPDA/MTI6MCksby5kb21haW4oKVsxXT4wPzEy
OjBdKTpvLnJhbmdlKG09Cnx8W0UsMF0pLGI9M0RifHxzLHc9M0R3fHxvLmNvcHkoKS5yYW5nZShb
bygwKSxvKDApXSk7dmFyIE49M0RTLnNlbGVjdEFsbCgiZz0KLm52LXdyYXAubnYtZGlzY3JldGVi
YXIiKS5kYXRhKFtlXSksQz0zRE4uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsPQoi
bnZkMyBudi13cmFwIG52LWRpc2NyZXRlYmFyIiksaz0zREMuYXBwZW5kKCJnIiksTD0zRE4uc2Vs
ZWN0KCJnIik7ay5hcHBlbmQ9CigiZyIpLmF0dHIoImNsYXNzIiwibnYtZ3JvdXBzIiksTi5hdHRy
KCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0LmxlZnQrIiwiKz0KdC50b3ArIikiKTt2YXIgQT0z
RE4uc2VsZWN0KCIubnYtZ3JvdXBzIikuc2VsZWN0QWxsKCIubnYtZ3JvdXAiKS5kYXRhKGZ1bmN0
PQppb24oZSl7cmV0dXJuIGV9LGZ1bmN0aW9uKGUpe3JldHVybiBlLmtleX0pO0EuZW50ZXIoKS5h
cHBlbmQoImciKS5zdHlsZSgic3Q9CnJva2Utb3BhY2l0eSIsMWUtNikuc3R5bGUoImZpbGwtb3Bh
Y2l0eSIsMWUtNiksQS5leGl0KCkuc3R5bGUoInN0cm9rZS1vcGFjaT0KdHkiLDFlLTYpLnN0eWxl
KCJmaWxsLW9wYWNpdHkiLDFlLTYpLnJlbW92ZSgpLEEuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUs
dCl7PQpyZXR1cm4ibnYtZ3JvdXAgbnYtc2VyaWVzLSIrdH0pLmNsYXNzZWQoImhvdmVyIixmdW5j
dGlvbihlKXtyZXR1cm4gZS5ob3Zlcn09CiksQS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDEpLnN0
eWxlKCJmaWxsLW9wYWNpdHkiLC43NSk7dmFyIE89M0RBLnNlbGVjdEFsbD0KKCJnLm52LWJhciIp
LmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzfSk7Ty5leGl0KCkucmVtb3ZlKCk7dmFy
IE09M0RPPQouZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUs
dCxuKXtyZXR1cm4idHJhbnNsYXRlKCIrKHM9Cih1KGUsdCkpK3MucmFuZ2VCYW5kKCkqLjA1KSsi
LCAiK28oMCkrIikifSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24odCxuKXtkMz0KLnNlbGVjdCh0
aGlzKS5jbGFzc2VkKCJob3ZlciIsITApLGcuZWxlbWVudE1vdXNlb3Zlcih7dmFsdWU6YSh0LG4p
LHBvaW50OnQsPQpzZXJpZXM6ZVt0LnNlcmllc10scG9zOltzKHUodCxuKSkrcy5yYW5nZUJhbmQo
KSoodC5zZXJpZXMrLjUpL2UubGVuZ3RoLG8oYSg9CnQsbikpXSxwb2ludEluZGV4Om4sc2VyaWVz
SW5kZXg6dC5zZXJpZXMsZTpkMy5ldmVudH0pfSkub24oIm1vdXNlb3V0IixmdW5jdD0KaW9uKHQs
bil7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMSksZy5lbGVtZW50TW91c2VvdXQo
e3ZhbHVlOmEodCxuPQopLHBvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvaW50SW5kZXg6bixz
ZXJpZXNJbmRleDp0LnNlcmllcyxlOmQzLmV2ZW50fSk9Cn0pLm9uKCJjbGljayIsZnVuY3Rpb24o
dCxuKXtnLmVsZW1lbnRDbGljayh7dmFsdWU6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmVbdD0KLnNl
cmllc10scG9zOltzKHUodCxuKSkrcy5yYW5nZUJhbmQoKSoodC5zZXJpZXMrLjUpL2UubGVuZ3Ro
LG8oYSh0LG4pKV0scG9pPQpudEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpkMy5ldmVu
dH0pLGQzLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfSkub249CigiZGJsY2xpY2siLGZ1bmN0aW9u
KHQsbil7Zy5lbGVtZW50RGJsQ2xpY2soe3ZhbHVlOmEodCxuKSxwb2ludDp0LHNlcmllczplWz0K
dC5zZXJpZXNdLHBvczpbcyh1KHQsbikpK3MucmFuZ2VCYW5kKCkqKHQuc2VyaWVzKy41KS9lLmxl
bmd0aCxvKGEodCxuKSldLHBvPQppbnRJbmRleDpuLHNlcmllc0luZGV4OnQuc2VyaWVzLGU6ZDMu
ZXZlbnR9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0pO009Ci5hcHBlbmQoInJlY3QiKS5h
dHRyKCJoZWlnaHQiLDApLmF0dHIoIndpZHRoIixzLnJhbmdlQmFuZCgpKi45L2UubGVuZ3RoKSxj
Pz0KKE0uYXBwZW5kKCJ0ZXh0IikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxPLnNlbGVj
dCgidGV4dCIpLnRleHQoZnVuY3RpPQpvbihlLHQpe3JldHVybiBoKGEoZSx0KSl9KS5hdHRyKCJ4
IixzLnJhbmdlQmFuZCgpKi45LzIpLmF0dHIoInkiLGZ1bmN0aW9uKGU9Cix0KXtyZXR1cm4gYShl
LHQpPDA/byhhKGUsdCkpLW8oMCkrMTI6LTR9KSk6Ty5zZWxlY3RBbGwoInRleHQiKS5yZW1vdmUo
KSxPLj0KYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSx0KTwwPyJudi1iYXIg
bmVnYXRpdmUiOiJudi1iYXIgcG9zaXRpPQp2ZSJ9KS5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0
KXtyZXR1cm4gZS5jb2xvcnx8bChlLHQpfSkuc3R5bGUoInN0cm9rZSIsZnU9Cm5jdGlvbihlLHQp
e3JldHVybiBlLmNvbG9yfHxsKGUsdCl9KS5zZWxlY3QoInJlY3QiKS5hdHRyKCJjbGFzcyIseSku
YXR0cigidz0KaWR0aCIscy5yYW5nZUJhbmQoKSouOS9lLmxlbmd0aCksTy5hdHRyKCJ0cmFuc2Zv
cm0iLGZ1bmN0aW9uKGUsdCl7dmFyIG49M0RzPQoodShlLHQpKStzLnJhbmdlQmFuZCgpKi4wNSxy
PTNEYShlLHQpPDA/bygwKTpvKDApLW8oYShlLHQpKTwxP28oMCktMTpvKGEoZSw9CnQpKTtyZXR1
cm4idHJhbnNsYXRlKCIrbisiLCAiK3IrIikifSkuc2VsZWN0KCJyZWN0IikuYXR0cigiaGVpZ2h0
IixmdW5jdGlvbj0KKGUsdCl7cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKG8oYShlLHQpKS1vKGQm
JmRbMF18fDApKXx8MSl9KSxiPTNEcy5jb3B5KCksPQp3PTNEby5jb3B5KCl9KSxFfXZhciB0PTNE
e3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSxuPTNEOTYwLHI9M0Q1MDAsaT0KPTNETWF0
aC5mbG9vcihNYXRoLnJhbmRvbSgpKjFlNCkscz0zRGQzLnNjYWxlLm9yZGluYWwoKSxvPTNEZDMu
c2NhbGUubGluZWFyPQooKSx1PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0sYT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBlLnl9LGY9M0RbMF0sbD0zRGUudXQ9Cmlscy5kZWZhdWx0Q29sb3IoKSxjPTNE
ITEsaD0zRGQzLmZvcm1hdCgiLC4yZiIpLHAsZCx2LG0sZz0zRGQzLmRpc3BhdGNoKCJjaD0KYXJ0
Q2xpY2siLCJlbGVtZW50Q2xpY2siLCJlbGVtZW50RGJsQ2xpY2siLCJlbGVtZW50TW91c2VvdmVy
IiwiZWxlbWVudE1vdXNlPQpvdXQiKSx5PTNEImRpc2NyZXRlQmFyIixiLHc7cmV0dXJuIEUuZGlz
cGF0Y2g9M0RnLEUub3B0aW9ucz0zRGUudXRpbHMub3B0aW89Cm5zRnVuYy5iaW5kKEUpLEUueD0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZSxFKTp1fSxFLnk9Cj0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZSxFKTphfSxFLm1hcmdp
bj0zRGZ1bmN0aW9uKGUpez0KcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPTNEdHlwZW9m
IGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQuPQpyaWdodD0zRHR5cGVvZiBlLnJp
Z2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT0zRHR5cGVvZiBlLmI9
Cm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD0zRHR5cGVvZiBl
LmxlZnQhPTNEInVuZGVmaW5lZD0KIj9lLmxlZnQ6dC5sZWZ0LEUpOnR9LEUud2lkdGg9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGUsPQpFKTpufSxFLmhlaWdodD0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZSxFKTpyfSxFLnhTY2Fs
ZT0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLEUpOnN9LEUu
eVNjYWxlPTNEZnVuY3Rpb24oZSl7PQpyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsRSk6
b30sRS54RG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW49CnRzLmxlbmd0aD8ocD0z
RGUsRSk6cH0sRS55RG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGQ9Cj0zRGUsRSk6ZH0sRS54UmFuZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8odj0zRGUsRSk6dn0sRS55Uj0KYW5nZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhtPTNEZSxFKTptfSxFLmZvcmNlWT0zRGZ1bmN0aW9uPQooZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGY9M0RlLEUpOmZ9LEUuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4g
YXJndW09CmVudHMubGVuZ3RoPyhsPTNEZS51dGlscy5nZXRDb2xvcih0KSxFKTpsfSxFLmlkPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZT0KbnRzLmxlbmd0aD8oaT0zRGUsRSk6aX0sRS5zaG93
VmFsdWVzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/PQooYz0zRGUsRSk6
Y30sRS52YWx1ZUZvcm1hdD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyho
PTNEZSxFKTo9Cmh9LEUucmVjdENsYXNzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHk9M0RlLEUpOnl9LEV9LGUubW9kZT0KbHMuZGlzY3JldGVCYXJDaGFydD0zRGZ1bmN0
aW9uKCl7ZnVuY3Rpb24gdyhlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhPQpyIHU9M0Rk
My5zZWxlY3QodGhpcykscD0zRHRoaXMseT0zRChzfHxwYXJzZUludCh1LnN0eWxlKCJ3aWR0aCIp
KXx8OTYwKS1pLmw9CmVmdC1pLnJpZ2h0LEU9M0Qob3x8cGFyc2VJbnQodS5zdHlsZSgiaGVpZ2h0
IikpfHw0MDApLWkudG9wLWkuYm90dG9tO3cudXBkYT0KdGU9M0RmdW5jdGlvbigpe2cuYmVmb3Jl
VXBkYXRlKCksdS5jYWxsKHcpfSx3LmNvbnRhaW5lcj0zRHRoaXM7aWYoIWV8fCFlLmxlPQpuZ3Ro
fHwhZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLmxlbmd0aH0pLmxlbmd0aCl7
dmFyIFM9M0R1LnNlbGU9CmN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShbbV0pO3JldHVybiBTLmVu
dGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLD0KIm52ZDMgbnYtbm9EYXRhIikuYXR0
cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLFMuYXR0cigiPQp4
IixpLmxlZnQreS8yKS5hdHRyKCJ5IixpLnRvcCtFLzIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJu
IGV9KSx3fXUuc2VsZWN0QWw9CmwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKSxkPTNEdC54U2NhbGUo
KSx2PTNEdC55U2NhbGUoKS5jbGFtcCghMCk7dmFyIFQ9M0R1Lj0Kc2VsZWN0QWxsKCJnLm52LXdy
YXAubnYtZGlzY3JldGVCYXJXaXRoQXhlcyIpLmRhdGEoW2VdKSxOPTNEVC5lbnRlcigpLmFwcGVu
PQpkKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtZGlzY3JldGVCYXJXaXRoQXhl
cyIpLmFwcGVuZCgiZyIpLEM9M0Q9Ck4uYXBwZW5kKCJkZWZzIiksaz0zRFQuc2VsZWN0KCJnIik7
Ti5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcz0KIiksTi5hcHBlbmQoImci
KS5hdHRyKCJjbGFzcyIsIm52LXkgbnYtYXhpcyIpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwi
bnYtPQp6ZXJvTGluZSIpLmFwcGVuZCgibGluZSIpLE4uYXBwZW5kKCJnIikuYXR0cigiY2xhc3Mi
LCJudi1iYXJzV3JhcCIpLGsuYXR0cig9CiJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitpLmxlZnQr
IiwiK2kudG9wKyIpIiksbCYmay5zZWxlY3QoIi5udi15Lm52LWF4aXMiKT0KLmF0dHIoInRyYW5z
Zm9ybSIsInRyYW5zbGF0ZSgiK3krIiwwKSIpLHQud2lkdGgoeSkuaGVpZ2h0KEUpO3ZhciBMPTNE
ay5zZWxlPQpjdCgiLm52LWJhcnNXcmFwIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0
dXJuIWUuZGlzYWJsZWR9KSk7TC5jYWxsKHQ9CiksQy5hcHBlbmQoImNsaXBQYXRoIikuYXR0cigi
aWQiLCJudi14LWxhYmVsLWNsaXAtIit0LmlkKCkpLmFwcGVuZCgicmVjdCIpLD0Kay5zZWxlY3Qo
IiNudi14LWxhYmVsLWNsaXAtIit0LmlkKCkrIiByZWN0IikuYXR0cigid2lkdGgiLGQucmFuZ2VC
YW5kKCkqKGM/PQoyOjEpKS5hdHRyKCJoZWlnaHQiLDE2KS5hdHRyKCJ4IiwtZC5yYW5nZUJhbmQo
KS8oYz8xOjIpKTtpZihhKXtuLnNjYWxlKGQpLnQ9Cmlja3MoeS8xMDApLnRpY2tTaXplKC1FLDAp
LGsuc2VsZWN0KCIubnYteC5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbj0Kc2xhdGUo
MCwiKyh2LnJhbmdlKClbMF0rKHQuc2hvd1ZhbHVlcygpJiZ2LmRvbWFpbigpWzBdPDA/MTY6MCkp
KyIpIiksay5zZWxlPQpjdCgiLm52LXgubnYtYXhpcyIpLmNhbGwobik7dmFyIEE9M0RrLnNlbGVj
dCgiLm52LXgubnYtYXhpcyIpLnNlbGVjdEFsbCgiZyI9Cik7YyYmQS5zZWxlY3RBbGwoInRleHQi
KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4idHJhbnNsYXRlKD0KMCwi
KyhuJTI9M0Q9M0QwPyI1IjoiMTciKSsiKSJ9KX1mJiYoci5zY2FsZSh2KS50aWNrcyhFLzM2KS50
aWNrU2l6ZSgteSwwKSxrPQouc2VsZWN0KCIubnYteS5udi1heGlzIikuY2FsbChyKSksay5zZWxl
Y3QoIi5udi16ZXJvTGluZSBsaW5lIikuYXR0cigieDEiLDA9CikuYXR0cigieDIiLHkpLmF0dHIo
InkxIix2KDApKS5hdHRyKCJ5MiIsdigwKSksZy5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKD0K
ZSl7aCYmYihlLHAucGFyZW50Tm9kZSl9KX0pLHd9dmFyIHQ9M0RlLm1vZGVscy5kaXNjcmV0ZUJh
cigpLG49M0RlLm1vZGVscy5hPQp4aXMoKSxyPTNEZS5tb2RlbHMuYXhpcygpLGk9M0R7dG9wOjE1
LHJpZ2h0OjEwLGJvdHRvbTo1MCxsZWZ0OjYwfSxzPTNEbnVsbCw9Cm89M0RudWxsLHU9M0RlLnV0
aWxzLmdldENvbG9yKCksYT0zRCEwLGY9M0QhMCxsPTNEITEsYz0zRCExLGg9M0QhMCxwPTNEZnVu
Yz0KdGlvbihlLHQsbixyLGkpe3JldHVybiI8aDM+Iit0KyI8L2gzPiIrIjxwPiIrbisiPC9wPiJ9
LGQsdixtPTNEIk5vIERhdGEgQXZhPQppbGFibGUuIixnPTNEZDMuZGlzcGF0Y2goInRvb2x0aXBT
aG93IiwidG9vbHRpcEhpZGUiLCJiZWZvcmVVcGRhdGUiKSx5PTNEMDs9Cm4ub3JpZW50KCJib3R0
b20iKS5oaWdobGlnaHRaZXJvKCExKS5zaG93TWF4TWluKCExKS50aWNrRm9ybWF0KGZ1bmN0aW9u
KGUpez0KcmV0dXJuIGV9KSxyLm9yaWVudChsPyJyaWdodCI6ImxlZnQiKS50aWNrRm9ybWF0KGQz
LmZvcm1hdCgiLC4xZiIpKTt2YXIgYj0KPTNEZnVuY3Rpb24oaSxzKXt2YXIgbz0zRGkucG9zWzBd
KyhzLm9mZnNldExlZnR8fDApLHU9M0RpLnBvc1sxXSsocy5vZmZzZXRUPQpvcHx8MCksYT0zRG4u
dGlja0Zvcm1hdCgpKHQueCgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksZj0zRHIudGlja0Zvcm1h
dCgpKHQ9Ci55KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKSxsPTNEcChpLnNlcmllcy5rZXksYSxm
LGksdyk7ZS50b29sdGlwLnNob3coW28sdT0KXSxsLGkudmFsdWU8MD8ibiI6InMiLG51bGwscyl9
O3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0PQppcCIsZnVuY3Rp
b24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0raS5sZWZ0LGUucG9zWzFdK2kudG9wXSxnLnRvb2x0aXBT
aG93KGUpfSk9Cix0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rp
b24oZSl7Zy50b29sdGlwSGlkZShlKX0pLGcubz0KbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7
aCYmZS50b29sdGlwLmNsZWFudXAoKX0pLHcuZGlzcGF0Y2g9M0RnLHcuZGlzY3JlPQp0ZWJhcj0z
RHQsdy54QXhpcz0zRG4sdy55QXhpcz0zRHIsZDMucmViaW5kKHcsdCwieCIsInkiLCJ4RG9tYWlu
IiwieURvbWFpbiI9CiwieFJhbmdlIiwieVJhbmdlIiwiZm9yY2VYIiwiZm9yY2VZIiwiaWQiLCJz
aG93VmFsdWVzIiwidmFsdWVGb3JtYXQiKSx3Lm9wdD0KaW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1
bmMuYmluZCh3KSx3Lm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMuPQpsZW5n
dGg/KGkudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOmkudG9wLGkucmln
aHQ9M0R0eXBlb2YgZS49CnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6aS5yaWdodCxpLmJv
dHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbj0KZWQiP2UuYm90dG9tOmkuYm90dG9t
LGkubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OmkubGVmdCx3PQop
Oml9LHcud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0zRGUs
dyk6c30sdy5oZWlnaHQ9M0Q9CmZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhv
PTNEZSx3KTpvfSx3LmNvbG9yPTNEZnVuY3Rpb24obil7cmV0dT0Kcm4gYXJndW1lbnRzLmxlbmd0
aD8odT0zRGUudXRpbHMuZ2V0Q29sb3IobiksdC5jb2xvcih1KSx3KTp1fSx3LnNob3dYQXhpcz0K
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLHcpOmF9LHcuc2hv
d1lBeGlzPTNEZnVuY3Rpb24oPQplKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUsdyk6
Zn0sdy5yaWdodEFsaWduWUF4aXM9M0RmdW5jdGlvbihlKXtyZXQ9CnVybiBhcmd1bWVudHMubGVu
Z3RoPyhsPTNEZSxyLm9yaWVudChlPyJyaWdodCI6ImxlZnQiKSx3KTpsfSx3LnN0YWdnZXJMYWJl
bD0Kcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSx3KTpjfSx3
LnRvb2x0aXBzPTNEZnVuY3Rpb24oPQplKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUs
dyk6aH0sdy50b29sdGlwQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHU9CnJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHA9M0RlLHcpOnB9LHcubm9EYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZT0Kbmd0aD8obT0zRGUsdyk6bX0sdy50cmFuc2l0aW9uRHVyYXRpb249M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0PQpoPyh5PTNEZSx3KTp5fSx3fSxlLm1vZGVscy5kaXN0
cmlidXRpb249M0RmdW5jdGlvbigpe2Z1bmN0aW9uIGwoZSl7cmV0dXJuIGU9Ci5lYWNoKGZ1bmN0
aW9uKGUpe3ZhciBhPTNEbi0oaT0zRD0zRD0zRCJ4Ij90LmxlZnQrdC5yaWdodDp0LnRvcCt0LmJv
dHRvbSksbD0KPTNEaT0zRD0zRCJ4Ij8ieSI6IngiLGM9M0RkMy5zZWxlY3QodGhpcyk7Zj0zRGZ8
fHU7dmFyIGg9M0RjLnNlbGVjdEFsbCgiZy5uPQp2LWRpc3RyaWJ1dGlvbiIpLmRhdGEoW2VdKSxw
PTNEaC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi09CmRpc3RyaWJ1
dGlvbiIpLGQ9M0RwLmFwcGVuZCgiZyIpLHY9M0RoLnNlbGVjdCgiZyIpO2guYXR0cigidHJhbnNm
b3JtIiwidHJhbj0Kc2xhdGUoIit0LmxlZnQrIiwiK3QudG9wKyIpIik7dmFyIG09M0R2LnNlbGVj
dEFsbCgiZy5udi1kaXN0IikuZGF0YShmdW5jdGlvPQpuKGUpe3JldHVybiBlfSxmdW5jdGlvbihl
KXtyZXR1cm4gZS5rZXl9KTttLmVudGVyKCkuYXBwZW5kKCJnIiksbS5hdHRyKCJjbGE9CnNzIixm
dW5jdGlvbihlLHQpe3JldHVybiJudi1kaXN0IG52LXNlcmllcy0iK3R9KS5zdHlsZSgic3Ryb2tl
IixmdW5jdGlvbihlLD0KdCl7cmV0dXJuIG8oZSx0KX0pO3ZhciBnPTNEbS5zZWxlY3RBbGwoImxp
bmUubnYtZGlzdCIraSkuZGF0YShmdW5jdGlvbihlKXtyPQpldHVybiBlLnZhbHVlc30pO2cuZW50
ZXIoKS5hcHBlbmQoImxpbmUiKS5hdHRyKGkrIjEiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGY9Cihz
KGUsdCkpfSkuYXR0cihpKyIyIixmdW5jdGlvbihlLHQpe3JldHVybiBmKHMoZSx0KSl9KSxtLmV4
aXQoKS5zZWxlY3RBbGwoIj0KbGluZS5udi1kaXN0IitpKS5hdHRyKGkrIjEiLGZ1bmN0aW9uKGUs
dCl7cmV0dXJuIHUocyhlLHQpKX0pLmF0dHIoaSsiMiIsZnVuPQpjdGlvbihlLHQpe3JldHVybiB1
KHMoZSx0KSl9KS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDApLnJlbW92ZSgpLGcuYXR0cigiY2w9
CmFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4ibnYtZGlzdCIraSsiIG52LWRpc3QiK2krIi0iK3R9
KS5hdHRyKGwrIjEiLDApLmF0dD0KcihsKyIyIixyKSxnLmF0dHIoaSsiMSIsZnVuY3Rpb24oZSx0
KXtyZXR1cm4gdShzKGUsdCkpfSkuYXR0cihpKyIyIixmdW5jdGlvPQpuKGUsdCl7cmV0dXJuIHUo
cyhlLHQpKX0pLGY9M0R1LmNvcHkoKX0pLGx9dmFyIHQ9M0R7dG9wOjAscmlnaHQ6MCxib3R0b206
MCw9CmxlZnQ6MH0sbj0zRDQwMCxyPTNEOCxpPTNEIngiLHM9M0RmdW5jdGlvbihlKXtyZXR1cm4g
ZVtpXX0sbz0zRGUudXRpbHMuZGVmYT0KdWx0Q29sb3IoKSx1PTNEZDMuc2NhbGUubGluZWFyKCks
YSxmO3JldHVybiBsLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jPQouYmluZChsKSxsLm1h
cmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD0zRHR5cGVv
ZiBlLnQ9Cm9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQucmlnaHQ9M0R0eXBlb2YgZS5y
aWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZz0KaHQ6dC5yaWdodCx0LmJvdHRvbT0zRHR5cGVvZiBl
LmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHRvbSx0LmxlPQpmdD0zRHR5cGVv
ZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxsKTp0fSxsLndpZHRoPTNEZnVu
Y3Rpb24oZSk9CntyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGUsbCk6bn0sbC5heGlzPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cz0KLmxlbmd0aD8oaT0zRGUsbCk6aX0sbC5zaXpl
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLGwpPQo6cn0sbC5n
ZXREYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RkMy5mdW5j
dG9yKGUpLGwpOnM9Cn0sbC5zY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyh1PTNEZSxsKTp1fSxsLmNvbG9yPTNEZnVuYz0KdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8obz0zRGUudXRpbHMuZ2V0Q29sb3IodCksbCk6b30sbH0sZS5tb2RlbHMuPQpoaXN0
b3JpY2FsQmFyQ2hhcnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIHgoZSl7cmV0dXJuIGUuZWFjaChm
dW5jdGlvbihkKXt2YXI9CiBFPTNEZDMuc2VsZWN0KHRoaXMpLFQ9M0R0aGlzLE49M0QodXx8cGFy
c2VJbnQoRS5zdHlsZSgid2lkdGgiKSl8fDk2MCktcy5sZT0KZnQtcy5yaWdodCxDPTNEKGF8fHBh
cnNlSW50KEUuc3R5bGUoImhlaWdodCIpKXx8NDAwKS1zLnRvcC1zLmJvdHRvbTt4LnVwZGF0PQpl
PTNEZnVuY3Rpb24oKXtFLmNhbGwoeCl9LHguY29udGFpbmVyPTNEdGhpcyxnLmRpc2FibGVkPTNE
ZC5tYXAoZnVuY3Rpb24oZSk9CntyZXR1cm4hIWUuZGlzYWJsZWR9KTtpZigheSl7dmFyIGs7eT0z
RHt9O2ZvcihrIGluIGcpZ1trXWluc3RhbmNlb2YgQXJyYXk/eT0KW2tdPTNEZ1trXS5zbGljZSgw
KTp5W2tdPTNEZ1trXX1pZighZHx8IWQubGVuZ3RofHwhZC5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0
PQp1cm4gZS52YWx1ZXMubGVuZ3RofSkubGVuZ3RoKXt2YXIgTD0zREUuc2VsZWN0QWxsKCIubnYt
bm9EYXRhIikuZGF0YShbYl0pO3I9CmV0dXJuIEwuZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRy
KCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cigiZHkiLCItLj0KN2VtIikuc3R5bGUoInRl
eHQtYW5jaG9yIiwibWlkZGxlIiksTC5hdHRyKCJ4IixzLmxlZnQrTi8yKS5hdHRyKCJ5IixzLnRv
cCtDPQovMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLHh9RS5zZWxlY3RBbGwoIi5udi1u
b0RhdGEiKS5yZW1vdmUoKSx2PTNEdC49CnhTY2FsZSgpLG09M0R0LnlTY2FsZSgpO3ZhciBBPTNE
RS5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1oaXN0b3JpY2FsQmFyQ2hhcj0KdCIpLmRhdGEoW2Rd
KSxPPTNEQS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52
LWhpc3RvPQpyaWNhbEJhckNoYXJ0IikuYXBwZW5kKCJnIiksTT0zREEuc2VsZWN0KCJnIik7Ty5h
cHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm49CnYteCBudi1heGlzIiksTy5hcHBlbmQoImciKS5h
dHRyKCJjbGFzcyIsIm52LXkgbnYtYXhpcyIpLE8uYXBwZW5kKCJnIikuYXR0cj0KKCJjbGFzcyIs
Im52LWJhcnNXcmFwIiksTy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZFdyYXAi
KSxmJiYoaS53PQppZHRoKE4pLE0uc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmRhdHVtKGQpLmNh
bGwoaSkscy50b3AhPTNEaS5oZWlnaHQoKSYmKHM9Ci50b3A9M0RpLmhlaWdodCgpLEM9M0QoYXx8
cGFyc2VJbnQoRS5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXMudG9wLXMuYm90dG9tKT0KLEEuc2Vs
ZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrIC1z
LnRvcCsiKSIpKSxBPQouYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrcy5sZWZ0KyIsIitz
LnRvcCsiKSIpLGgmJk0uc2VsZWN0KCIubnYteS5udi09CmF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0i
LCJ0cmFuc2xhdGUoIitOKyIsMCkiKSx0LndpZHRoKE4pLmhlaWdodChDKS5jb2xvcihkLj0KbWFw
KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fG8oZSx0KX0pLmZpbHRlcihmdW5jdGlvbihl
LHQpe3JldHVybiFkW3RdPQouZGlzYWJsZWR9KSk7dmFyIF89M0RNLnNlbGVjdCgiLm52LWJhcnNX
cmFwIikuZGF0dW0oZC5maWx0ZXIoZnVuY3Rpb24oZSl7cmU9CnR1cm4hZS5kaXNhYmxlZH0pKTtf
LmNhbGwodCksbCYmKG4uc2NhbGUodikudGlja1NpemUoLUMsMCksTS5zZWxlY3QoIi5udi14Lj0K
bnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrbS5yYW5nZSgpWzBdKyIp
IiksTS5zZWxlY3QoIi5udi14PQoubnYtYXhpcyIpLmNhbGwobikpLGMmJihyLnNjYWxlKG0pLnRp
Y2tzKEMvMzYpLnRpY2tTaXplKC1OLDApLE0uc2VsZWN0KCIubnY9Ci15Lm52LWF4aXMiKS5jYWxs
KHIpKSxpLmRpc3BhdGNoLm9uKCJsZWdlbmRDbGljayIsZnVuY3Rpb24odCxuKXt0LmRpc2FibGVk
PQo9M0QhdC5kaXNhYmxlZCxkLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0p
Lmxlbmd0aHx8ZC5tYXAoZnVuY3Q9CmlvbihlKXtyZXR1cm4gZS5kaXNhYmxlZD0zRCExLEEuc2Vs
ZWN0QWxsKCIubnYtc2VyaWVzIikuY2xhc3NlZCgiZGlzYWJsZWQiLD0KITEpLGV9KSxnLmRpc2Fi
bGVkPTNEZC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSksdy5zdGF0ZUNoYW5n
ZShnPQopLGUuY2FsbCh4KX0pLGkuZGlzcGF0Y2gub24oImxlZ2VuZERibGNsaWNrIixmdW5jdGlv
bihlKXtkLmZvckVhY2goZnVuY3Rpb249CihlKXtlLmRpc2FibGVkPTNEITB9KSxlLmRpc2FibGVk
PTNEITEsZy5kaXNhYmxlZD0zRGQubWFwKGZ1bmN0aW9uKGUpe3JldHVybj0KISFlLmRpc2FibGVk
fSksdy5zdGF0ZUNoYW5nZShnKSx4LnVwZGF0ZSgpfSksdy5vbigidG9vbHRpcFNob3ciLGZ1bmN0
aW9uKGUpPQp7cCYmUyhlLFQucGFyZW50Tm9kZSl9KSx3Lm9uKCJjaGFuZ2VTdGF0ZSIsZnVuY3Rp
b24oZSl7dHlwZW9mIGUuZGlzYWJsZWQhPQo9M0QidW5kZWZpbmVkIiYmKGQuZm9yRWFjaChmdW5j
dGlvbih0LG4pe3QuZGlzYWJsZWQ9M0RlLmRpc2FibGVkW25dfSksZy5kaXM9CmFibGVkPTNEZS5k
aXNhYmxlZCkseC51cGRhdGUoKX0pfSkseH12YXIgdD0zRGUubW9kZWxzLmhpc3RvcmljYWxCYXIo
KSxuPTNEZT0KLm1vZGVscy5heGlzKCkscj0zRGUubW9kZWxzLmF4aXMoKSxpPTNEZS5tb2RlbHMu
bGVnZW5kKCkscz0zRHt0b3A6MzAscmlnaHQ6PQo5MCxib3R0b206NTAsbGVmdDo5MH0sbz0zRGUu
dXRpbHMuZGVmYXVsdENvbG9yKCksdT0zRG51bGwsYT0zRG51bGwsZj0zRCExLGw9Cj0zRCEwLGM9
M0QhMCxoPTNEITEscD0zRCEwLGQ9M0RmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiI8aDM+Iitl
KyI8L2gzPiIrIj0KPHA+IituKyIgYXQgIit0KyI8L3A+In0sdixtLGc9M0R7fSx5PTNEbnVsbCxi
PTNEIk5vIERhdGEgQXZhaWxhYmxlLiIsdz0zRGQzPQouZGlzcGF0Y2goInRvb2x0aXBTaG93Iiwi
dG9vbHRpcEhpZGUiLCJzdGF0ZUNoYW5nZSIsImNoYW5nZVN0YXRlIiksRT0zRDA7bi49Cm9yaWVu
dCgiYm90dG9tIikudGlja1BhZGRpbmcoNyksci5vcmllbnQoaD8icmlnaHQiOiJsZWZ0Iik7dmFy
IFM9M0RmdW5jdGlvbj0KKGkscyl7aWYocyl7dmFyIG89M0RkMy5zZWxlY3Qocykuc2VsZWN0KCJz
dmciKSx1PTNEby5ub2RlKCk/by5hdHRyKCJ2aWV3Qm94PQoiKTpudWxsO2lmKHUpe3U9M0R1LnNw
bGl0KCIgIik7dmFyIGE9M0RwYXJzZUludChvLnN0eWxlKCJ3aWR0aCIpKS91WzJdO2kucG89CnNb
MF09M0RpLnBvc1swXSphLGkucG9zWzFdPTNEaS5wb3NbMV0qYX19dmFyIGY9M0RpLnBvc1swXSso
cy5vZmZzZXRMZWZ0fHwwKT0KLGw9M0RpLnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLGM9M0RuLnRp
Y2tGb3JtYXQoKSh0LngoKShpLnBvaW50LGkucG9pbnRJbmRlPQp4KSksaD0zRHIudGlja0Zvcm1h
dCgpKHQueSgpKGkucG9pbnQsaS5wb2ludEluZGV4KSkscD0zRGQoaS5zZXJpZXMua2V5LGMsaCw9
CmkseCk7ZS50b29sdGlwLnNob3coW2YsbF0scCxudWxsLG51bGwscyl9O3JldHVybiB0LmRpc3Bh
dGNoLm9uKCJlbGVtZW50TW91cz0KZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0Rb
ZS5wb3NbMF0rcy5sZWZ0LGUucG9zWzFdK3MudG9wXSx3LnRvb2x0PQppcFNob3coZSl9KSx0LmRp
c3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7dy50b29sdGlw
SGk9CmRlKGUpfSksdy5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7cCYmZS50b29sdGlwLmNs
ZWFudXAoKX0pLHguZGlzcGF0Y2g9Cj0zRHcseC5iYXJzPTNEdCx4LmxlZ2VuZD0zRGkseC54QXhp
cz0zRG4seC55QXhpcz0zRHIsZDMucmViaW5kKHgsdCwiZGVmaW5lZD0KIiwiaXNBcmVhIiwieCIs
InkiLCJzaXplIiwieFNjYWxlIiwieVNjYWxlIiwieERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2Ui
LCJ5PQpSYW5nZSIsImZvcmNlWCIsImZvcmNlWSIsImludGVyYWN0aXZlIiwiY2xpcEVkZ2UiLCJj
bGlwVm9yb25vaSIsImlkIiwiaW50ZXI9CnBvbGF0ZSIsImhpZ2hsaWdodFBvaW50IiwiY2xlYXJI
aWdobGlnaHRzIiwiaW50ZXJhY3RpdmUiKSx4Lm9wdGlvbnM9M0RlLnV0aT0KbHMub3B0aW9uc0Z1
bmMuYmluZCh4KSx4Lm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhzLnRvPQpwPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnMudG9wLHMucmln
aHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW49CmRlZmluZWQiP2UucmlnaHQ6cy5yaWdodCxzLmJv
dHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbT0KOnMuYm90dG9t
LHMubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnMubGVmdCx4KTpz
fSx4LndpZHRoPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUs
eCk6dX0seC5oZWlnaHQ9M0RmdW5jdGlvbihlKXs9CnJldHVybiBhcmd1bWVudHMubGVuZ3RoPyhh
PTNEZSx4KTphfSx4LmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cz0KLmxlbmd0
aD8obz0zRGUudXRpbHMuZ2V0Q29sb3IodCksaS5jb2xvcihvKSx4KTpvfSx4LnNob3dMZWdlbmQ9
M0RmdW5jdGlvbihlPQope3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSx4KTpmfSx4LnNo
b3dYQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmc9CnVtZW50cy5sZW5ndGg/KGw9M0RlLHgp
Omx9LHguc2hvd1lBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndD0KaD8o
Yz0zRGUseCk6Y30seC5yaWdodEFsaWduWUF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oaD0KPTNEZSxyLm9yaWVudChlPyJyaWdodCI6ImxlZnQiKSx4KTpofSx4LnRv
b2x0aXBzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtPQplbnRzLmxlbmd0aD8ocD0zRGUseCk6
cH0seC50b29sdGlwQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGU9Cm5n
dGg/KGQ9M0RlLHgpOmR9LHguc3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oZz0zRGUseCk6Zz0KfSx4LmRlZmF1bHRTdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyh5PTNEZSx4KTp5fSx4Lm5vRGF0PQphPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9M0RlLHgpOmJ9LHgudHJhbnNpdGlvbkR1cmF0aW9uPQo9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT0zRGUseCk6RX0seH0sZS5t
b2RlbHMuaW5kZW50ZWRUcmU9CmU9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIGcoZSl7cmV0dXJuIGUu
ZWFjaChmdW5jdGlvbihlKXtmdW5jdGlvbiBrKGUsdCxuKXtkMz0KLmV2ZW50LnN0b3BQcm9wYWdh
dGlvbigpO2lmKGQzLmV2ZW50LnNoaWZ0S2V5JiYhbilyZXR1cm4gZDMuZXZlbnQuc2hpZnRLZXk9
Cj0zRCExLGUudmFsdWVzJiZlLnZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpeyhlLnZhbHVlc3x8
ZS5fdmFsdWVzKSYmayhlLDAsIT0KMCl9KSwhMDtpZighTyhlKSlyZXR1cm4hMDtlLnZhbHVlcz8o
ZS5fdmFsdWVzPTNEZS52YWx1ZXMsZS52YWx1ZXM9M0RudWxsKTooPQplLnZhbHVlcz0zRGUuX3Zh
bHVlcyxlLl92YWx1ZXM9M0RudWxsKSxnLnVwZGF0ZSgpfWZ1bmN0aW9uIEwoZSl7cmV0dXJuIGUu
X3Y9CmFsdWVzJiZlLl92YWx1ZXMubGVuZ3RoP2g6ZS52YWx1ZXMmJmUudmFsdWVzLmxlbmd0aD9w
OiIifWZ1bmN0aW9uIEEoZSl7cmV0dT0Kcm4gZS5fdmFsdWVzJiZlLl92YWx1ZXMubGVuZ3RofWZ1
bmN0aW9uIE8oZSl7dmFyIHQ9M0RlLnZhbHVlc3x8ZS5fdmFsdWVzO3JlPQp0dXJuIHQmJnQubGVu
Z3RofXZhciB0PTNEMSxuPTNEZDMuc2VsZWN0KHRoaXMpLGk9M0RkMy5sYXlvdXQudHJlZSgpLmNo
aWxkcmU9Cm4oZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzfSkuc2l6ZShbcixmXSk7Zy51cGRh
dGU9M0RmdW5jdGlvbigpe24uY2FsbChnKT0KfSxlWzBdfHwoZVswXT0zRHtrZXk6YX0pO3ZhciBz
PTNEaS5ub2RlcyhlWzBdKSx5PTNEZDMuc2VsZWN0KHRoaXMpLnNlbGVjdEFsPQpsKCJkaXYiKS5k
YXRhKFtbc11dKSxiPTNEeS5lbnRlcigpLmFwcGVuZCgiZGl2IikuYXR0cigiY2xhc3MiLCJudmQz
IG52LXdyYXA9CiBudi1pbmRlbnRlZHRyZWUiKSx3PTNEYi5hcHBlbmQoInRhYmxlIiksRT0zRHku
c2VsZWN0KCJ0YWJsZSIpLmF0dHIoIndpZHRoIj0KLCIxMDAlIikuYXR0cigiY2xhc3MiLGMpO2lm
KG8pe3ZhciBTPTNEdy5hcHBlbmQoInRoZWFkIikseD0zRFMuYXBwZW5kKCJ0ciIpPQo7bC5mb3JF
YWNoKGZ1bmN0aW9uKGUpe3guYXBwZW5kKCJ0aCIpLmF0dHIoIndpZHRoIixlLndpZHRoP2Uud2lk
dGg6IjEwJSIpLnM9CnR5bGUoInRleHQtYWxpZ24iLGUudHlwZT0zRD0zRCJudW1lcmljIj8icmln
aHQiOiJsZWZ0IikuYXBwZW5kKCJzcGFuIikudGV4dD0KKGUubGFiZWwpfSl9dmFyIFQ9M0RFLnNl
bGVjdEFsbCgidGJvZHkiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlfSk7VC5lbnRlPQpyKCku
YXBwZW5kKCJ0Ym9keSIpLHQ9M0RkMy5tYXgocyxmdW5jdGlvbihlKXtyZXR1cm4gZS5kZXB0aH0p
LGkuc2l6ZShbcix0KmY9Cl0pO3ZhciBOPTNEVC5zZWxlY3RBbGwoInRyIikuZGF0YShmdW5jdGlv
bihlKXtyZXR1cm4gZS5maWx0ZXIoZnVuY3Rpb24oZSl7cj0KZXR1cm4gdSYmIWUuY2hpbGRyZW4/
dShlKTohMH0pfSxmdW5jdGlvbihlLHQpe3JldHVybiBlLmlkfHxlLmlkfHwrK219KTtOLmV4PQpp
dCgpLnJlbW92ZSgpLE4uc2VsZWN0KCJpbWcubnYtdHJlZWljb24iKS5hdHRyKCJzcmMiLEwpLmNs
YXNzZWQoImZvbGRlZCIsQSk9Cjt2YXIgQz0zRE4uZW50ZXIoKS5hcHBlbmQoInRyIik7bC5mb3JF
YWNoKGZ1bmN0aW9uKGUsdCl7dmFyIG49M0RDLmFwcGVuZCgidD0KZCIpLnN0eWxlKCJwYWRkaW5n
LWxlZnQiLGZ1bmN0aW9uKGUpe3JldHVybih0PzA6ZS5kZXB0aCpmKzEyKyhMKGUpPzA6MTYpKSsi
PQpweCJ9LCJpbXBvcnRhbnQiKS5zdHlsZSgidGV4dC1hbGlnbiIsZS50eXBlPTNEPTNEIm51bWVy
aWMiPyJyaWdodCI6ImxlZnQiKTs9CnQ9M0Q9M0QwJiZuLmFwcGVuZCgiaW1nIikuY2xhc3NlZCgi
bnYtdHJlZWljb24iLCEwKS5jbGFzc2VkKCJudi1mb2xkZWQiLEEpLj0KYXR0cigic3JjIixMKS5z
dHlsZSgid2lkdGgiLCIxNHB4Iikuc3R5bGUoImhlaWdodCIsIjE0cHgiKS5zdHlsZSgicGFkZGlu
ZyIsPQoiMCAxcHgiKS5zdHlsZSgiZGlzcGxheSIsZnVuY3Rpb24oZSl7cmV0dXJuIEwoZSk/Imlu
bGluZS1ibG9jayI6Im5vbmUifSkub249CigiY2xpY2siLGspLG4uZWFjaChmdW5jdGlvbihuKXsh
dCYmdihuKT9kMy5zZWxlY3QodGhpcykuYXBwZW5kKCJhIikuYXR0cigiaD0KcmVmIix2KS5hdHRy
KCJjbGFzcyIsZDMuZnVuY3RvcihlLmNsYXNzZXMpKS5hcHBlbmQoInNwYW4iKTpkMy5zZWxlY3Qo
dGhpcykuPQphcHBlbmQoInNwYW4iKSxkMy5zZWxlY3QodGhpcykuc2VsZWN0KCJzcGFuIikuYXR0
cigiY2xhc3MiLGQzLmZ1bmN0b3IoZS5jbGE9CnNzZXMpKS50ZXh0KGZ1bmN0aW9uKHQpe3JldHVy
biBlLmZvcm1hdD90W2Uua2V5XT9lLmZvcm1hdCh0W2Uua2V5XSk6Ii0iOnRbZT0KLmtleV18fCIt
In0pfSksZS5zaG93Q291bnQmJihuLmFwcGVuZCgic3BhbiIpLmF0dHIoImNsYXNzIiwibnYtY2hp
bGRyZW5Db3VuPQp0IiksTi5zZWxlY3RBbGwoInNwYW4ubnYtY2hpbGRyZW5Db3VudCIpLnRleHQo
ZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzJiY9CmUudmFsdWVzLmxlbmd0aHx8ZS5fdmFsdWVz
JiZlLl92YWx1ZXMubGVuZ3RoPyIoIisoZS52YWx1ZXMmJmUudmFsdWVzLmZpbHRlcj0KKGZ1bmN0
aW9uKGUpe3JldHVybiB1P3UoZSk6ITB9KS5sZW5ndGh8fGUuX3ZhbHVlcyYmZS5fdmFsdWVzLmZp
bHRlcihmdW5jdGlvPQpuKGUpe3JldHVybiB1P3UoZSk6ITB9KS5sZW5ndGh8fDApKyIpIjoiIn0p
KX0pLE4ub3JkZXIoKS5vbigiY2xpY2siLGZ1bmN0aW89Cm4oZSl7ZC5lbGVtZW50Q2xpY2soe3Jv
dzp0aGlzLGRhdGE6ZSxwb3M6W2UueCxlLnldfSl9KS5vbigiZGJsY2xpY2siLGZ1bmN0aT0Kb24o
ZSl7ZC5lbGVtZW50RGJsY2xpY2soe3Jvdzp0aGlzLGRhdGE6ZSxwb3M6W2UueCxlLnldfSl9KS5v
bigibW91c2VvdmVyIixmPQp1bmN0aW9uKGUpe2QuZWxlbWVudE1vdXNlb3Zlcih7cm93OnRoaXMs
ZGF0YTplLHBvczpbZS54LGUueV19KX0pLm9uKCJtb3VzZW89CnV0IixmdW5jdGlvbihlKXtkLmVs
ZW1lbnRNb3VzZW91dCh7cm93OnRoaXMsZGF0YTplLHBvczpbZS54LGUueV19KX0pfSksZ312YT0K
ciB0PTNEe3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSxuPTNEOTYwLHI9M0Q1MDAsaT0z
RGUudXRpbHMuZGVmYXVsdENvPQpsb3IoKSxzPTNETWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjFl
NCksbz0zRCEwLHU9M0QhMSxhPTNEIk5vIERhdGEgQXZhaWxhYmw9CmUuIixmPTNEMjAsbD0zRFt7
a2V5OiJrZXkiLGxhYmVsOiJOYW1lIix0eXBlOiJ0ZXh0In1dLGM9M0RudWxsLGg9M0QiaW1hZ2Vz
Lz0KZ3JleS1wbHVzLnBuZyIscD0zRCJpbWFnZXMvZ3JleS1taW51cy5wbmciLGQ9M0RkMy5kaXNw
YXRjaCgiZWxlbWVudENsaWNrIiwiPQplbGVtZW50RGJsY2xpY2siLCJlbGVtZW50TW91c2VvdmVy
IiwiZWxlbWVudE1vdXNlb3V0Iiksdj0zRGZ1bmN0aW9uKGUpe3JldHU9CnJuIGUudXJsfSxtPTNE
MDtyZXR1cm4gZy5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKGcpLGcubWFyZ2lu
PTNEZj0KdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC50b3A9M0R0eXBlb2Yg
ZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50PQpvcDp0LnRvcCx0LnJpZ2h0PTNEdHlwZW9mIGUucmln
aHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp0LnJpZ2h0LHQuYm90dG9tPQo9M0R0eXBlb2YgZS5i
b3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dC5ib3R0b20sdC5sZWZ0PTNEdHlwZW9mIGUu
bGVmdCE9Cj0zRCJ1bmRlZmluZWQiP2UubGVmdDp0LmxlZnQsZyk6dH0sZy53aWR0aD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubD0KZW5ndGg/KG49M0RlLGcpOm59LGcuaGVpZ2h0PTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLGcpPQo6cn0sZy5jb2xv
cj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPTNEZS51dGlscy5nZXRD
b2xvcih0KSw9CnNjYXR0ZXIuY29sb3IoaSksZyk6aX0sZy5pZD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhzPTNEZSxnKT0KOnN9LGcuaGVhZGVyPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RlLGcpOm99LGcubm9EYXRhPTNEPQpmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0zRGUsZyk6YX0sZy5maWx0ZXJaZXJvPTNE
ZnVuY3Rpb24oZSk9CntyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsZyk6dX0sZy5jb2x1
bW5zPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZT0KbnRzLmxlbmd0aD8obD0zRGUsZyk6bH0s
Zy50YWJsZUNsYXNzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/PQooYz0z
RGUsZyk6Y30sZy5pY29uT3Blbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhoPTNEZSxnKTpofSw9CmcuaWNvbkNsb3NlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KHA9M0RlLGcpOnB9LGcuZ2V0VXJsPTNEZj0KdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8odj0zRGUsZyk6dn0sZ30sZS5tb2RlbHMubGVnZW5kPTNEZnVuY3RpPQpv
bigpe2Z1bmN0aW9uIGMoaCl7cmV0dXJuIGguZWFjaChmdW5jdGlvbihjKXt2YXIgaD0zRG4tdC5s
ZWZ0LXQucmlnaHQscD0zRGQ9CjMuc2VsZWN0KHRoaXMpLGQ9M0RwLnNlbGVjdEFsbCgiZy5udi1s
ZWdlbmQiKS5kYXRhKFtjXSksdj0zRGQuZW50ZXIoKS5hcHBlbj0KZCgiZyIpLmF0dHIoImNsYXNz
IiwibnZkMyBudi1sZWdlbmQiKS5hcHBlbmQoImciKSxtPTNEZC5zZWxlY3QoImciKTtkLmF0dHIo
PQoidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdC5sZWZ0KyIsIit0LnRvcCsiKSIpO3ZhciBnPTNE
bS5zZWxlY3RBbGwoIi5udi1zZXI9CmllcyIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSx5
PTNEZy5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibj0Kdi1zZXJpZXMiKS5vbigi
bW91c2VvdmVyIixmdW5jdGlvbihlLHQpe2wubGVnZW5kTW91c2VvdmVyKGUsdCl9KS5vbigibW91
c2VvPQp1dCIsZnVuY3Rpb24oZSx0KXtsLmxlZ2VuZE1vdXNlb3V0KGUsdCl9KS5vbigiY2xpY2si
LGZ1bmN0aW9uKGUsdCl7bC5sZWdlbmQ9CkNsaWNrKGUsdCksYSYmKGY/KGMuZm9yRWFjaChmdW5j
dGlvbihlKXtlLmRpc2FibGVkPTNEITB9KSxlLmRpc2FibGVkPTNEITEpOj0KKGUuZGlzYWJsZWQ9
M0QhZS5kaXNhYmxlZCxjLmV2ZXJ5KGZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVkfSkmJmMu
Zm9yRWFjPQpoKGZ1bmN0aW9uKGUpe2UuZGlzYWJsZWQ9M0QhMX0pKSxsLnN0YXRlQ2hhbmdlKHtk
aXNhYmxlZDpjLm1hcChmdW5jdGlvbihlKXs9CnJldHVybiEhZS5kaXNhYmxlZH0pfSkpfSkub24o
ImRibGNsaWNrIixmdW5jdGlvbihlLHQpe2wubGVnZW5kRGJsY2xpY2soZSx0KT0KLGEmJihjLmZv
ckVhY2goZnVuY3Rpb24oZSl7ZS5kaXNhYmxlZD0zRCEwfSksZS5kaXNhYmxlZD0zRCExLGwuc3Rh
dGVDaGFuZ2UoPQp7ZGlzYWJsZWQ6Yy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVk
fSl9KSl9KTt5LmFwcGVuZCgiY2lyY2xlIikuc3Q9CnlsZSgic3Ryb2tlLXdpZHRoIiwyKS5hdHRy
KCJjbGFzcyIsIm52LWxlZ2VuZC1zeW1ib2wiKS5hdHRyKCJyIiw1KSx5LmFwcGVuZD0KKCJ0ZXh0
IikuYXR0cigidGV4dC1hbmNob3IiLCJzdGFydCIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kLXRl
eHQiKS5hdHRyKCJkPQp5IiwiLjMyZW0iKS5hdHRyKCJkeCIsIjgiKSxnLmNsYXNzZWQoImRpc2Fi
bGVkIixmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNhYmw9CmVkfSksZy5leGl0KCkucmVtb3ZlKCks
Zy5zZWxlY3QoImNpcmNsZSIpLnN0eWxlKCJmaWxsIixmdW5jdGlvbihlLHQpe3JldHVybj0KIGUu
Y29sb3J8fHMoZSx0KX0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29s
b3J8fHMoZSx0KX0pLGcuPQpzZWxlY3QoInRleHQiKS50ZXh0KGkpO2lmKG8pe3ZhciBiPTNEW107
Zy5lYWNoKGZ1bmN0aW9uKHQsbil7dmFyIHI9M0RkMy5zZWw9CmVjdCh0aGlzKS5zZWxlY3QoInRl
eHQiKSxpO3RyeXtpPTNEci5nZXRDb21wdXRlZFRleHRMZW5ndGgoKTtpZihpPD0zRDApdGhybz0K
dyBFcnJvcigpfWNhdGNoKHMpe2k9M0RlLnV0aWxzLmNhbGNBcHByb3hUZXh0V2lkdGgocil9Yi5w
dXNoKGkrMjgpfSk7dmFyIHc9Cj0zRDAsRT0zRDAsUz0zRFtdO3doaWxlKEU8aCYmdzxiLmxlbmd0
aClTW3ddPTNEYlt3XSxFKz0zRGJbdysrXTt3PTNEPTNEPTNEMD0KJiYodz0zRDEpO3doaWxlKEU+
aCYmdz4xKXtTPTNEW10sdy0tO2Zvcih2YXIgeD0zRDA7eDxiLmxlbmd0aDt4KyspYlt4XT4oU1t4
PQold118fDApJiYoU1t4JXddPTNEYlt4XSk7RT0zRFMucmVkdWNlKGZ1bmN0aW9uKGUsdCxuLHIp
e3JldHVybiBlK3R9KX12YXIgVD0KPTNEW107Zm9yKHZhciBOPTNEMCxDPTNEMDtOPHc7TisrKVRb
Tl09M0RDLEMrPTNEU1tOXTtnLmF0dHIoInRyYW5zZm9ybSIsZnVuPQpjdGlvbihlLHQpe3JldHVy
biJ0cmFuc2xhdGUoIitUW3Qld10rIiwiKyg1K01hdGguZmxvb3IodC93KSoyMCkrIikifSksdT9t
LmE9CnR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKG4tdC5yaWdodC1FKSsiLCIrdC50b3Ar
IikiKTptLmF0dHIoInRyYW5zZm9ybT0KIiwidHJhbnNsYXRlKDAsIit0LnRvcCsiKSIpLHI9M0R0
LnRvcCt0LmJvdHRvbStNYXRoLmNlaWwoYi5sZW5ndGgvdykqMjB9ZWxzPQple3ZhciBrPTNENSxM
PTNENSxBPTNEMCxPO2cuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHIpe3ZhciBpPTNEZDMu
c2VsZWM9CnQodGhpcykuc2VsZWN0KCJ0ZXh0Iikubm9kZSgpLmdldENvbXB1dGVkVGV4dExlbmd0
aCgpKzI4O3JldHVybiBPPTNETCxuPHQubD0KZWZ0K3QucmlnaHQrTytpJiYoTD0zRE89M0Q1LGsr
PTNEMjApLEwrPTNEaSxMPkEmJihBPTNETCksInRyYW5zbGF0ZSgiK08rIiwiPQoraysiKSJ9KSxt
LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhuLXQucmlnaHQtQSkrIiwiK3QudG9wKyIp
Iikscj0zRHQ9Ci50b3ArdC5ib3R0b20raysxNX19KSxjfXZhciB0PTNEe3RvcDo1LHJpZ2h0OjAs
Ym90dG9tOjUsbGVmdDowfSxuPTNENDAwLHI9Cj0zRDIwLGk9M0RmdW5jdGlvbihlKXtyZXR1cm4g
ZS5rZXl9LHM9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLG89M0QhMCx1PTNEIT0KMCxhPTNEITAs
Zj0zRCExLGw9M0RkMy5kaXNwYXRjaCgibGVnZW5kQ2xpY2siLCJsZWdlbmREYmxjbGljayIsImxl
Z2VuZE1vdXNlPQpvdmVyIiwibGVnZW5kTW91c2VvdXQiLCJzdGF0ZUNoYW5nZSIpO3JldHVybiBj
LmRpc3BhdGNoPTNEbCxjLm9wdGlvbnM9M0RlLnU9CnRpbHMub3B0aW9uc0Z1bmMuYmluZChjKSxj
Lm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0Lj0KdG9wPTNE
dHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQucmlnaHQ9M0R0eXBlb2Yg
ZS5yaWdodCE9M0QiPQp1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT0zRHR5cGVv
ZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHQ9Cm9tOnQuYm90dG9tLHQubGVmdD0zRHR5
cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxjKTp0fSxjLndpZD0KdGg9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGUsYyk6bn0sYy5oZWln
aHQ9M0RmdW5jdGlvbihlPQope3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZSxjKTpyfSxj
LmtleT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHM9Ci5sZW5ndGg/KGk9M0RlLGMpOml9
LGMuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0zRGUudT0K
dGlscy5nZXRDb2xvcih0KSxjKTpzfSxjLmFsaWduPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KG89M0RlPQosYyk6b30sYy5yaWdodEFsaWduPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RlLGMpOnV9LGMudXA9CmRhdGVTdGF0ZT0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZSxjKTphfSxjLnJhZGlvQnV0dG9u
TT0Kb2RlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLGMpOmZ9
LGN9LGUubW9kZWxzLmxpbmU9M0RmPQp1bmN0aW9uKCl7ZnVuY3Rpb24gbShnKXtyZXR1cm4gZy5l
YWNoKGZ1bmN0aW9uKG0pe3ZhciBnPTNEci1uLmxlZnQtbi5yaWdodCw9CmI9M0RpLW4udG9wLW4u
Ym90dG9tLHc9M0RkMy5zZWxlY3QodGhpcyk7Yz0zRHQueFNjYWxlKCksaD0zRHQueVNjYWxlKCks
ZD0zRD0KZHx8Yyx2PTNEdnx8aDt2YXIgRT0zRHcuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtbGlu
ZSIpLmRhdGEoW21dKSxTPTNERS5lbnRlPQpyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJu
dmQzIG52LXdyYXAgbnYtbGluZSIpLFQ9M0RTLmFwcGVuZCgiZGVmcyIpLE49Cj0zRFMuYXBwZW5k
KCJnIiksQz0zREUuc2VsZWN0KCJnIik7Ti5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWdy
b3VwcyIpLD0KTi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXNjYXR0ZXJXcmFwIiksRS5h
dHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoPQoiK24ubGVmdCsiLCIrbi50b3ArIikiKSx0Lndp
ZHRoKGcpLmhlaWdodChiKTt2YXIgaz0zREUuc2VsZWN0KCIubnYtc2NhdHRlclc9CnJhcCIpO2su
Y2FsbCh0KSxULmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIsIm52LWVkZ2UtY2xpcC0iK3Qu
aWQoKSkuYXBwZT0KbmQoInJlY3QiKSxFLnNlbGVjdCgiI252LWVkZ2UtY2xpcC0iK3QuaWQoKSsi
IHJlY3QiKS5hdHRyKCJ3aWR0aCIsZykuYXR0cigiPQpoZWlnaHQiLGI+MD9iOjApLEMuYXR0cigi
Y2xpcC1wYXRoIixsPyJ1cmwoI252LWVkZ2UtY2xpcC0iK3QuaWQoKSsiKSI6IiIpLGs9Ci5hdHRy
KCJjbGlwLXBhdGgiLGw/InVybCgjbnYtZWRnZS1jbGlwLSIrdC5pZCgpKyIpIjoiIik7dmFyIEw9
M0RFLnNlbGVjdCgiLj0KbnYtZ3JvdXBzIikuc2VsZWN0QWxsKCIubnYtZ3JvdXAiKS5kYXRhKGZ1
bmN0aW9uKGUpe3JldHVybiBlfSxmdW5jdGlvbihlKXtyPQpldHVybiBlLmtleX0pO0wuZW50ZXIo
KS5hcHBlbmQoImciKS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDFlLTYpLnN0eWxlKCJmaWw9Cmwt
b3BhY2l0eSIsMWUtNiksTC5leGl0KCkucmVtb3ZlKCksTC5hdHRyKCJjbGFzcyIsZnVuY3Rpb24o
ZSx0KXtyZXR1cm4ibnYtZz0Kcm91cCBudi1zZXJpZXMtIit0fSkuY2xhc3NlZCgiaG92ZXIiLGZ1
bmN0aW9uKGUpe3JldHVybiBlLmhvdmVyfSkuc3R5bGUoImZpPQpsbCIsZnVuY3Rpb24oZSx0KXty
ZXR1cm4gcyhlLHQpfSkuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcyhlLHQ9
Cil9KSxMLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMSkuc3R5bGUoImZpbGwtb3BhY2l0eSIsLjUp
O3ZhciBBPTNETC5zZWxlY3RBbD0KbCgicGF0aC5udi1hcmVhIikuZGF0YShmdW5jdGlvbihlKXty
ZXR1cm4gZihlKT9bZV06W119KTtBLmVudGVyKCkuYXBwZW5kKCJwPQphdGgiKS5hdHRyKCJjbGFz
cyIsIm52LWFyZWEiKS5hdHRyKCJkIixmdW5jdGlvbih0KXtyZXR1cm4gZDMuc3ZnLmFyZWEoKS5p
bnQ9CmVycG9sYXRlKHApLmRlZmluZWQoYSkueChmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxz
Lk5hTnRvWmVybyhkKG8odCxuKSkpfT0KKS55MChmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxz
Lk5hTnRvWmVybyh2KHUodCxuKSkpfSkueTEoZnVuY3Rpb24oZSx0KXtyPQpldHVybiB2KGguZG9t
YWluKClbMF08PTNEMD9oLmRvbWFpbigpWzFdPj0zRDA/MDpoLmRvbWFpbigpWzFdOmguZG9tYWlu
KClbMF09Cil9KS5hcHBseSh0aGlzLFt0LnZhbHVlc10pfSksTC5leGl0KCkuc2VsZWN0QWxsKCJw
YXRoLm52LWFyZWEiKS5yZW1vdmUoKSxBLj0KYXR0cigiZCIsZnVuY3Rpb24odCl7cmV0dXJuIGQz
LnN2Zy5hcmVhKCkuaW50ZXJwb2xhdGUocCkuZGVmaW5lZChhKS54KGZ1bmN0PQppb24odCxuKXty
ZXR1cm4gZS51dGlscy5OYU50b1plcm8oYyhvKHQsbikpKX0pLnkwKGZ1bmN0aW9uKHQsbil7cmV0
dXJuIGUudXQ9Cmlscy5OYU50b1plcm8oaCh1KHQsbikpKX0pLnkxKGZ1bmN0aW9uKGUsdCl7cmV0
dXJuIGgoaC5kb21haW4oKVswXTw9M0QwP2guZD0Kb21haW4oKVsxXT49M0QwPzA6aC5kb21haW4o
KVsxXTpoLmRvbWFpbigpWzBdKX0pLmFwcGx5KHRoaXMsW3QudmFsdWVzXSl9KTt2PQphciBPPTNE
TC5zZWxlY3RBbGwoInBhdGgubnYtbGluZSIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuW2UudmFs
dWVzXX0pO08uZW49CnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwibnYtbGluZSIp
LmF0dHIoImQiLGQzLnN2Zy5saW5lKCkuaW50ZXJwbz0KbGF0ZShwKS5kZWZpbmVkKGEpLngoZnVu
Y3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8oZChvKHQsbikpKX0pLnkoPQpmdW5j
dGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyh2KHUodCxuKSkpfSkpLE8uYXR0cigi
ZCIsZDMuc3ZnLmxpbmU9CigpLmludGVycG9sYXRlKHApLmRlZmluZWQoYSkueChmdW5jdGlvbih0
LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhjKG8odD0KLG4pKSl9KS55KGZ1bmN0aW9uKHQs
bil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXJvKGgodSh0LG4pKSl9KSksZD0zRGMuY29weSgpPQos
dj0zRGguY29weSgpfSksbX12YXIgdD0zRGUubW9kZWxzLnNjYXR0ZXIoKSxuPTNEe3RvcDowLHJp
Z2h0OjAsYm90dG9tOjAsbGU9CmZ0OjB9LHI9M0Q5NjAsaT0zRDUwMCxzPTNEZS51dGlscy5kZWZh
dWx0Q29sb3IoKSxvPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueD0KfSx1PTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGUueX0sYT0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIWlzTmFOKHUoZSx0KSkmJnUoZSx0
PQopIT0zRD0zRG51bGx9LGY9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5hcmVhfSxsPTNEITEsYyxo
LHA9M0QibGluZWFyIjt0LnNpemU9CigxNikuc2l6ZURvbWFpbihbMTYsMjU2XSk7dmFyIGQsdjty
ZXR1cm4gbS5kaXNwYXRjaD0zRHQuZGlzcGF0Y2gsbS5zY2F0dGVyPQo9M0R0LGQzLnJlYmluZCht
LHQsImlkIiwiaW50ZXJhY3RpdmUiLCJzaXplIiwieFNjYWxlIiwieVNjYWxlIiwielNjYWxlIiwi
eEQ9Cm9tYWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsInNpemVEb21haW4iLCJmb3Jj
ZVgiLCJmb3JjZVkiLCJmb3JjZVNpej0KZSIsImNsaXBWb3Jvbm9pIiwidXNlVm9yb25vaSIsImNs
aXBSYWRpdXMiLCJwYWREYXRhIiwiaGlnaGxpZ2h0UG9pbnQiLCJjbGVhPQpySGlnaGxpZ2h0cyIp
LG0ub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChtKSxtLm1hcmdpbj0zRGZ1bmN0
aW9uKGU9Cil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4udG9wPTNEdHlwZW9mIGUudG9wIT0z
RCJ1bmRlZmluZWQiP2UudG9wOm4udG9wLD0Kbi5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1
bmRlZmluZWQiP2UucmlnaHQ6bi5yaWdodCxuLmJvdHRvbT0zRHR5cGVvZiBlPQouYm90dG9tIT0z
RCJ1bmRlZmluZWQiP2UuYm90dG9tOm4uYm90dG9tLG4ubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNE
InVuZGVmaW49CmVkIj9lLmxlZnQ6bi5sZWZ0LG0pOm59LG0ud2lkdGg9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0zRD0KZSxtKTpyfSxtLmhlaWdodD0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPTNEZSxtKTppfSxtLng9M0RmPQp1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZSx0LngoZSksbSk6b30sbS55PTNEZnVu
Y3Rpb24oZSl7cmU9CnR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsdC55KGUpLG0pOnV9LG0u
Y2xpcEVkZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYT0Kcmd1bWVudHMubGVuZ3RoPyhsPTNEZSxt
KTpsfSxtLmNvbG9yPTNEZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/PQoocz0z
RGUudXRpbHMuZ2V0Q29sb3IobiksdC5jb2xvcihzKSxtKTpzfSxtLmludGVycG9sYXRlPTNEZnVu
Y3Rpb24oZSl7cmV0dXI9Cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsbSk6cH0sbS5kZWZpbmVk
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZT0Kbmd0aD8oYT0zRGUsbSk6YX0sbS5p
c0FyZWE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGQzLmZ1PQpu
Y3RvcihlKSxtKTpmfSxtfSxlLm1vZGVscy5saW5lQ2hhcnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9u
IE4obSl7cmV0dXJuIG0uZWE9CmNoKGZ1bmN0aW9uKG0pe3ZhciB4PTNEZDMuc2VsZWN0KHRoaXMp
LEM9M0R0aGlzLGs9M0QoYXx8cGFyc2VJbnQoeC5zdHlsZSgidz0KaWR0aCIpKXx8OTYwKS1vLmxl
ZnQtby5yaWdodCxMPTNEKGZ8fHBhcnNlSW50KHguc3R5bGUoImhlaWdodCIpKXx8NDAwKS1vLnRv
PQpwLW8uYm90dG9tO04udXBkYXRlPTNEZnVuY3Rpb24oKXt4LmNhbGwoTil9LE4uY29udGFpbmVy
PTNEdGhpcyxiLmRpc2FibGVkPQo9M0RtLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlzYWJs
ZWR9KTtpZighdyl7dmFyIEE7dz0zRHt9O2ZvcihBIGluIGIpYls9CkFdaW5zdGFuY2VvZiBBcnJh
eT93W0FdPTNEYltBXS5zbGljZSgwKTp3W0FdPTNEYltBXX1pZighbXx8IW0ubGVuZ3RofHwhbS5m
aT0KbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubGVuZ3RofSkubGVuZ3RoKXt2YXIg
Tz0zRHguc2VsZWN0QWxsKCIubnYtPQpub0RhdGEiKS5kYXRhKFtFXSk7cmV0dXJuIE8uZW50ZXIo
KS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtbm89CkRhdGEiKS5hdHRyKCJk
eSIsIi0uN2VtIikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiksTy5hdHRyKCJ4IixvLmxl
ZnQraz0KLzIpLmF0dHIoInkiLG8udG9wK0wvMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0p
LE59eC5zZWxlY3RBbGwoIi5udi1ub0RhPQp0YSIpLnJlbW92ZSgpLGc9M0R0LnhTY2FsZSgpLHk9
M0R0LnlTY2FsZSgpO3ZhciBNPTNEeC5zZWxlY3RBbGwoImcubnYtd3JhcC49Cm52LWxpbmVDaGFy
dCIpLmRhdGEoW21dKSxfPTNETS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZk
MyBudi13cj0KYXAgbnYtbGluZUNoYXJ0IikuYXBwZW5kKCJnIiksRD0zRE0uc2VsZWN0KCJnIik7
Xy5hcHBlbmQoInJlY3QiKS5zdHlsZSgib3BhPQpjaXR5IiwwKSxfLmFwcGVuZCgiZyIpLmF0dHIo
ImNsYXNzIiwibnYteCBudi1heGlzIiksXy5hcHBlbmQoImciKS5hdHRyKCJjbGE9CnNzIiwibnYt
eSBudi1heGlzIiksXy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxpbmVzV3JhcCIpLF8u
YXBwZW5kKCJnIj0KKS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZFdyYXAiKSxfLmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnYtaW50ZXJhY3RpdmUiPQopLEQuc2VsZWN0KCJyZWN0IikuYXR0cigi
d2lkdGgiLGspLmF0dHIoImhlaWdodCIsTD4wP0w6MCksbCYmKGkud2lkdGgoayksRC49CnNlbGVj
dCgiLm52LWxlZ2VuZFdyYXAiKS5kYXR1bShtKS5jYWxsKGkpLG8udG9wIT0zRGkuaGVpZ2h0KCkm
JihvLnRvcD0zRGkuaD0KZWlnaHQoKSxMPTNEKGZ8fHBhcnNlSW50KHguc3R5bGUoImhlaWdodCIp
KXx8NDAwKS1vLnRvcC1vLmJvdHRvbSksTS5zZWxlY3QoPQoiLm52LWxlZ2VuZFdyYXAiKS5hdHRy
KCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiKyAtby50b3ArIikiKSksTS5hdHRyKCJ0cmE9Cm5z
Zm9ybSIsInRyYW5zbGF0ZSgiK28ubGVmdCsiLCIrby50b3ArIikiKSxwJiZELnNlbGVjdCgiLm52
LXkubnYtYXhpcyIpLmF0dD0KcigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIraysiLDApIiksZCYm
KHMud2lkdGgoaykuaGVpZ2h0KEwpLm1hcmdpbih7bGVmdDpvPQoubGVmdCx0b3A6by50b3B9KS5z
dmdDb250YWluZXIoeCkueFNjYWxlKGcpLE0uc2VsZWN0KCIubnYtaW50ZXJhY3RpdmUiKS5jYWw9
CmwocykpLHQud2lkdGgoaykuaGVpZ2h0KEwpLmNvbG9yKG0ubWFwKGZ1bmN0aW9uKGUsdCl7cmV0
dXJuIGUuY29sb3J8fHUoZSx0KT0KfSkuZmlsdGVyKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIW1bdF0u
ZGlzYWJsZWR9KSk7dmFyIFA9M0RELnNlbGVjdCgiLm52LWxpbmVzPQpXcmFwIikuZGF0dW0obS5m
aWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSk7UC5jYWxsKHQpLGMmJihuLnNj
YWw9CmUoZykudGlja3Moay8xMDApLnRpY2tTaXplKC1MLDApLEQuc2VsZWN0KCIubnYteC5udi1h
eGlzIikuYXR0cigidHJhbnNmb3JtIj0KLCJ0cmFuc2xhdGUoMCwiK3kucmFuZ2UoKVswXSsiKSIp
LEQuc2VsZWN0KCIubnYteC5udi1heGlzIikuY2FsbChuKSksaCYmKHIuPQpzY2FsZSh5KS50aWNr
cyhMLzM2KS50aWNrU2l6ZSgtaywwKSxELnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmNhbGwocikp
LGkuZGk9CnNwYXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe2I9M0RlLFMuc3RhdGVD
aGFuZ2UoYiksTi51cGRhdGUoKX0pLHMuZD0KaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlbW92ZSIs
ZnVuY3Rpb24oaSl7dC5jbGVhckhpZ2hsaWdodHMoKTt2YXIgYSxmLGwsYz0KPTNEW107bS5maWx0
ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zZXJpZXNJbmRleD0zRHQsIWUuZGlzYWJsZWR9KS5m
b3JFYWNoPQooZnVuY3Rpb24obixyKXtmPTNEZS5pbnRlcmFjdGl2ZUJpc2VjdChuLnZhbHVlcyxp
LnBvaW50WFZhbHVlLE4ueCgpKSx0LmhpZ2g9CmxpZ2h0UG9pbnQocixmLCEwKTt2YXIgcz0zRG4u
dmFsdWVzW2ZdO2lmKHR5cGVvZiBzPTNEPTNEInVuZGVmaW5lZCIpcmV0dXJuOz0KdHlwZW9mIGE9
M0Q9M0QidW5kZWZpbmVkIiYmKGE9M0RzKSx0eXBlb2YgbD0zRD0zRCJ1bmRlZmluZWQiJiYobD0z
RE4ueFNjYWxlPQooKShOLngoKShzLGYpKSksYy5wdXNoKHtrZXk6bi5rZXksdmFsdWU6Ti55KCko
cyxmKSxjb2xvcjp1KG4sbi5zZXJpZXNJbmRleCk9Cn0pfSk7aWYoYy5sZW5ndGg+Mil7dmFyIGg9
M0ROLnlTY2FsZSgpLmludmVydChpLm1vdXNlWSkscD0zRE1hdGguYWJzKE4ueVNjYT0KbGUoKS5k
b21haW4oKVswXS1OLnlTY2FsZSgpLmRvbWFpbigpWzFdKSxkPTNELjAzKnAsZz0zRGUubmVhcmVz
dFZhbHVlSW5kZXgoPQpjLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZX0pLGgsZCk7ZyE9
M0Q9M0RudWxsJiYoY1tnXS5oaWdobGlnaHQ9M0QhMCk9Cn12YXIgeT0zRG4udGlja0Zvcm1hdCgp
KE4ueCgpKGEsZikpO3MudG9vbHRpcC5wb3NpdGlvbih7bGVmdDpsK28ubGVmdCx0b3A6aT0KLm1v
dXNlWStvLnRvcH0pLmNoYXJ0Q29udGFpbmVyKEMucGFyZW50Tm9kZSkuZW5hYmxlZCh2KS52YWx1
ZUZvcm1hdHRlcihmdW5jPQp0aW9uKGUsdCl7cmV0dXJuIHIudGlja0Zvcm1hdCgpKGUpfSkuZGF0
YSh7dmFsdWU6eSxzZXJpZXM6Y30pKCkscy5yZW5kZXJHdWk9CmRlTGluZShsKX0pLHMuZGlzcGF0
Y2gub24oImVsZW1lbnRNb3VzZW91dCIsZnVuY3Rpb24oZSl7Uy50b29sdGlwSGlkZSgpLHQuYz0K
bGVhckhpZ2hsaWdodHMoKX0pLFMub24oInRvb2x0aXBTaG93IixmdW5jdGlvbihlKXt2JiZUKGUs
Qy5wYXJlbnROb2RlKX0pLFMuPQpvbigiY2hhbmdlU3RhdGUiLGZ1bmN0aW9uKGUpe3R5cGVvZiBl
LmRpc2FibGVkIT0zRCJ1bmRlZmluZWQiJiZtLmxlbmd0aD0zRD0KPTNEPTNEZS5kaXNhYmxlZC5s
ZW5ndGgmJihtLmZvckVhY2goZnVuY3Rpb24odCxuKXt0LmRpc2FibGVkPTNEZS5kaXNhYmxlZFtu
PQpdfSksYi5kaXNhYmxlZD0zRGUuZGlzYWJsZWQpLE4udXBkYXRlKCl9KX0pLE59dmFyIHQ9M0Rl
Lm1vZGVscy5saW5lKCksbj0zRGU9Ci5tb2RlbHMuYXhpcygpLHI9M0RlLm1vZGVscy5heGlzKCks
aT0zRGUubW9kZWxzLmxlZ2VuZCgpLHM9M0RlLmludGVyYWN0aXZlRz0KdWlkZWxpbmUoKSxvPTNE
e3RvcDozMCxyaWdodDoyMCxib3R0b206NTAsbGVmdDo2MH0sdT0zRGUudXRpbHMuZGVmYXVsdENv
bG9yPQooKSxhPTNEbnVsbCxmPTNEbnVsbCxsPTNEITAsYz0zRCEwLGg9M0QhMCxwPTNEITEsZD0z
RCExLHY9M0QhMCxtPTNEZnVuY3Rpb249CihlLHQsbixyLGkpe3JldHVybiI8aDM+IitlKyI8L2gz
PiIrIjxwPiIrbisiIGF0ICIrdCsiPC9wPiJ9LGcseSxiPTNEe30sdz0zRD0KbnVsbCxFPTNEIk5v
IERhdGEgQXZhaWxhYmxlLiIsUz0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBI
aWRlIiwiPQpzdGF0ZUNoYW5nZSIsImNoYW5nZVN0YXRlIikseD0zRDA7bi5vcmllbnQoImJvdHRv
bSIpLnRpY2tQYWRkaW5nKDcpLHIub3JpZW49CnQocD8icmlnaHQiOiJsZWZ0Iik7dmFyIFQ9M0Rm
dW5jdGlvbihpLHMpe3ZhciBvPTNEaS5wb3NbMF0rKHMub2Zmc2V0TGVmdHx8MD0KKSx1PTNEaS5w
b3NbMV0rKHMub2Zmc2V0VG9wfHwwKSxhPTNEbi50aWNrRm9ybWF0KCkodC54KCkoaS5wb2ludCxp
LnBvaW50SW5kPQpleCkpLGY9M0RyLnRpY2tGb3JtYXQoKSh0LnkoKShpLnBvaW50LGkucG9pbnRJ
bmRleCkpLGw9M0RtKGkuc2VyaWVzLmtleSxhLGY9CixpLE4pO2UudG9vbHRpcC5zaG93KFtvLHVd
LGwsbnVsbCxudWxsLHMpfTtyZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdT0Kc2VvdmVy
LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK28ubGVmdCxlLnBvc1sxXStv
LnRvcF0sUy50b29sPQp0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0
LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe1MudG9vbHRpcEg9CmlkZShlKX0pLFMub24oInRvb2x0aXBI
aWRlIixmdW5jdGlvbigpe3YmJmUudG9vbHRpcC5jbGVhbnVwKCl9KSxOLmRpc3BhdGNoPQo9M0RT
LE4ubGluZXM9M0R0LE4ubGVnZW5kPTNEaSxOLnhBeGlzPTNEbixOLnlBeGlzPTNEcixOLmludGVy
YWN0aXZlTGF5ZXI9M0Q9CnMsZDMucmViaW5kKE4sdCwiZGVmaW5lZCIsImlzQXJlYSIsIngiLCJ5
Iiwic2l6ZSIsInhTY2FsZSIsInlTY2FsZSIsInhEb21haT0KbiIsInlEb21haW4iLCJ4UmFuZ2Ui
LCJ5UmFuZ2UiLCJmb3JjZVgiLCJmb3JjZVkiLCJpbnRlcmFjdGl2ZSIsImNsaXBFZGdlIiwiPQpj
bGlwVm9yb25vaSIsInVzZVZvcm9ub2kiLCJpZCIsImludGVycG9sYXRlIiksTi5vcHRpb25zPTNE
ZS51dGlscy5vcHRpb25zRnU9Cm5jLmJpbmQoTiksTi5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oby50b3A9M0R0eXBlb2YgZT0KLnRvcCE9M0QidW5kZWZpbmVk
Ij9lLnRvcDpvLnRvcCxvLnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5y
PQppZ2h0Om8ucmlnaHQsby5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/
ZS5ib3R0b206by5ib3R0b20sby49CmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQi
P2UubGVmdDpvLmxlZnQsTik6b30sTi53aWR0aD0zRGZ1bmN0aW9uKD0KZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGE9M0RlLE4pOmF9LE4uaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtPQplbnRzLmxlbmd0aD8oZj0zRGUsTik6Zn0sTi5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyh1PQo9M0RlLnV0aWxzLmdldENvbG9yKHQpLGkuY29sb3IodSks
Tik6dX0sTi5zaG93TGVnZW5kPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGE9CnJndW1lbnRzLmxlbmd0
aD8obD0zRGUsTik6bH0sTi5zaG93WEF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbj0KZ3RoPyhjPTNEZSxOKTpjfSxOLnNob3dZQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhoPTNEZSxOPQopOmh9LE4ucmlnaHRBbGlnbllBeGlzPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLHIub3JpZW49CnQoZT8icmlnaHQi
OiJsZWZ0IiksTik6cH0sTi51c2VJbnRlcmFjdGl2ZUd1aWRlbGluZT0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcj0KZ3VtZW50cy5sZW5ndGg/KGQ9M0RlLGU9M0Q9M0Q9M0QhMCYmKE4uaW50ZXJhY3Rp
dmUoITEpLE4udXNlVm9yb25vaSghMSkpLE4pPQo6ZH0sTi50b29sdGlwcz0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PTNEZSxOKTp2fSxOLnRvb2x0aXA9CkNvbnRlbnQ9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0zRGUsTik6bX0sTi5zdGF0
ZT0zRGZ1bmN0aT0Kb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9M0RlLE4pOmJ9LE4u
ZGVmYXVsdFN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0PQp1cm4gYXJndW1lbnRzLmxlbmd0aD8odz0z
RGUsTik6d30sTi5ub0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmw9CmVuZ3Ro
PyhFPTNEZSxOKTpFfSxOLnRyYW5zaXRpb25EdXJhdGlvbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZz0KdGg/KHg9M0RlLE4pOnh9LE59LGUubW9kZWxzLmxpbmVQbHVzQmFyQ2hh
cnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIFQoZSl7cmV0PQp1cm4gZS5lYWNoKGZ1bmN0aW9uKGUp
e3ZhciBsPTNEZDMuc2VsZWN0KHRoaXMpLGM9M0R0aGlzLHY9M0QoYXx8cGFyc2VJbnQobC49CnN0
eWxlKCJ3aWR0aCIpKXx8OTYwKS11LmxlZnQtdS5yaWdodCxOPTNEKGZ8fHBhcnNlSW50KGwuc3R5
bGUoImhlaWdodCIpKXx8ND0KMDApLXUudG9wLXUuYm90dG9tO1QudXBkYXRlPTNEZnVuY3Rpb24o
KXtsLmNhbGwoVCl9LGIuZGlzYWJsZWQ9M0RlLm1hcChmdW5jPQp0aW9uKGUpe3JldHVybiEhZS5k
aXNhYmxlZH0pO2lmKCF3KXt2YXIgQzt3PTNEe307Zm9yKEMgaW4gYiliW0NdaW5zdGFuY2VvZiA9
CkFycmF5P3dbQ109M0RiW0NdLnNsaWNlKDApOndbQ109M0RiW0NdfWlmKCFlfHwhZS5sZW5ndGh8
fCFlLmZpbHRlcihmdW5jdGlvbj0KKGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgp
e3ZhciBrPTNEbC5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhPQooW0VdKTtyZXR1cm4gay5l
bnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRy
KCI9CmR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxrLmF0dHIoIngi
LHUubGVmdCt2LzIpLmF0dHIoInkiLD0KdS50b3ArTi8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVy
biBlfSksVH1sLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbW92ZSgpPQo7dmFyIEw9M0RlLmZp
bHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZCYmZS5iYXJ9KSxBPTNEZS5maWx0ZXIo
ZnVuY3Q9CmlvbihlKXtyZXR1cm4hZS5iYXJ9KTttPTNEQS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0
dXJuIWUuZGlzYWJsZWR9KS5sZW5ndGgmJj0KQS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUu
ZGlzYWJsZWR9KVswXS52YWx1ZXMubGVuZ3RoP3QueFNjYWxlKCk6bi54U2NhPQpsZSgpLGc9M0Ru
LnlTY2FsZSgpLHk9M0R0LnlTY2FsZSgpO3ZhciBPPTNEZDMuc2VsZWN0KHRoaXMpLnNlbGVjdEFs
bCgiZy5udi09CndyYXAubnYtbGluZVBsdXNCYXIiKS5kYXRhKFtlXSksTT0zRE8uZW50ZXIoKS5h
cHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZD0KMyBudi13cmFwIG52LWxpbmVQbHVzQmFyIiku
YXBwZW5kKCJnIiksXz0zRE8uc2VsZWN0KCJnIik7TS5hcHBlbmQoImciKS5hdHRyPQooImNsYXNz
IiwibnYteCBudi1heGlzIiksTS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkxIG52LWF4
aXMiKSxNLmFwcGU9Cm5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15MiBudi1heGlzIiksTS5hcHBl
bmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWJhcnNXcj0KYXAiKSxNLmFwcGVuZCgiZyIpLmF0dHIo
ImNsYXNzIiwibnYtbGluZXNXcmFwIiksTS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsPQoibnYt
bGVnZW5kV3JhcCIpLHAmJihvLndpZHRoKHYvMiksXy5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIiku
ZGF0dW0oZS5tYXAoZnU9Cm5jdGlvbihlKXtyZXR1cm4gZS5vcmlnaW5hbEtleT0zRGUub3JpZ2lu
YWxLZXk9M0Q9M0Q9M0R1bmRlZmluZWQ/ZS5rZXk6ZS5vcj0KaWdpbmFsS2V5LGUua2V5PTNEZS5v
cmlnaW5hbEtleSsoZS5iYXI/IiAobGVmdCBheGlzKSI6IiAocmlnaHQgYXhpcykiKSxlfSkpPQou
Y2FsbChvKSx1LnRvcCE9M0RvLmhlaWdodCgpJiYodS50b3A9M0RvLmhlaWdodCgpLE49M0QoZnx8
cGFyc2VJbnQobC5zdHlsZSg9CiJoZWlnaHQiKSl8fDQwMCktdS50b3AtdS5ib3R0b20pLF8uc2Vs
ZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybT0KIiwidHJhbnNsYXRlKCIrdi8y
KyIsIisgLXUudG9wKyIpIikpLE8uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdS5sZWZ0
PQorIiwiK3UudG9wKyIpIiksdC53aWR0aCh2KS5oZWlnaHQoTikuY29sb3IoZS5tYXAoZnVuY3Rp
b24oZSx0KXtyZXR1cm4gZS5jb2w9Cm9yfHxoKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXty
ZXR1cm4hZVtuXS5kaXNhYmxlZCYmIWVbbl0uYmFyfSkpLG4ud2lkdD0KaCh2KS5oZWlnaHQoTiku
Y29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8aChlLHQpfSkuZmlsdGVy
KGZ1PQpuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZCYmZVtuXS5iYXJ9KSk7dmFyIEQ9
M0RfLnNlbGVjdCgiLm52LWJhcnNXcmE9CnAiKS5kYXR1bShMLmxlbmd0aD9MOlt7dmFsdWVzOltd
fV0pLFA9M0RfLnNlbGVjdCgiLm52LWxpbmVzV3JhcCIpLmRhdHVtKEFbMD0KXSYmIUFbMF0uZGlz
YWJsZWQ/QTpbe3ZhbHVlczpbXX1dKTtkMy50cmFuc2l0aW9uKEQpLmNhbGwobiksZDMudHJhbnNp
dGlvbihQPQopLmNhbGwodCksci5zY2FsZShtKS50aWNrcyh2LzEwMCkudGlja1NpemUoLU4sMCks
Xy5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS49CmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgw
LCIrZy5yYW5nZSgpWzBdKyIpIiksZDMudHJhbnNpdGlvbihfLnNlbGVjdCgiLj0KbnYteC5udi1h
eGlzIikpLmNhbGwociksaS5zY2FsZShnKS50aWNrcyhOLzM2KS50aWNrU2l6ZSgtdiwwKSxkMy50
cmFuc2l0aW9uPQooXy5zZWxlY3QoIi5udi15MS5udi1heGlzIikpLnN0eWxlKCJvcGFjaXR5IixM
Lmxlbmd0aD8xOjApLmNhbGwoaSkscy5zY2FsZSg9CnkpLnRpY2tzKE4vMzYpLnRpY2tTaXplKEwu
bGVuZ3RoPzA6LXYsMCksXy5zZWxlY3QoIi5udi15Mi5udi1heGlzIikuc3R5bGUoIj0Kb3BhY2l0
eSIsQS5sZW5ndGg/MTowKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit2KyIsMCkiKSxk
My50cmFuc2l0aW9uPQooXy5zZWxlY3QoIi5udi15Mi5udi1heGlzIikpLmNhbGwocyksby5kaXNw
YXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9uKGU9Cil7Yj0zRGUsUy5zdGF0ZUNoYW5nZShi
KSxULnVwZGF0ZSgpfSksUy5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe2QmJngoZT0KLGMu
cGFyZW50Tm9kZSl9KSxTLm9uKCJjaGFuZ2VTdGF0ZSIsZnVuY3Rpb24odCl7dHlwZW9mIHQuZGlz
YWJsZWQhPTNEInVuZGVmPQppbmVkIiYmKGUuZm9yRWFjaChmdW5jdGlvbihlLG4pe2UuZGlzYWJs
ZWQ9M0R0LmRpc2FibGVkW25dfSksYi5kaXNhYmxlZD0zRHQ9Ci5kaXNhYmxlZCksVC51cGRhdGUo
KX0pfSksVH12YXIgdD0zRGUubW9kZWxzLmxpbmUoKSxuPTNEZS5tb2RlbHMuaGlzdG9yaWNhbD0K
QmFyKCkscj0zRGUubW9kZWxzLmF4aXMoKSxpPTNEZS5tb2RlbHMuYXhpcygpLHM9M0RlLm1vZGVs
cy5heGlzKCksbz0zRGUubW9kPQplbHMubGVnZW5kKCksdT0zRHt0b3A6MzAscmlnaHQ6NjAsYm90
dG9tOjUwLGxlZnQ6NjB9LGE9M0RudWxsLGY9M0RudWxsLGw9M0Q9CmZ1bmN0aW9uKGUpe3JldHVy
biBlLnh9LGM9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS55fSxoPTNEZS51dGlscy5kZWZhdWx0Q29s
bz0KcigpLHA9M0QhMCxkPTNEITAsdj0zRGZ1bmN0aW9uKGUsdCxuLHIsaSl7cmV0dXJuIjxoMz4i
K2UrIjwvaDM+IisiPHA+IituKyIgPQphdCAiK3QrIjwvcD4ifSxtLGcseSxiPTNEe30sdz0zRG51
bGwsRT0zRCJObyBEYXRhIEF2YWlsYWJsZS4iLFM9M0RkMy5kaXNwYXQ9CmNoKCJ0b29sdGlwU2hv
dyIsInRvb2x0aXBIaWRlIiwic3RhdGVDaGFuZ2UiLCJjaGFuZ2VTdGF0ZSIpO24ucGFkRGF0YSgh
MCksdD0KLmNsaXBFZGdlKCExKS5wYWREYXRhKCEwKSxyLm9yaWVudCgiYm90dG9tIikudGlja1Bh
ZGRpbmcoNykuaGlnaGxpZ2h0WmVybyghPQoxKSxpLm9yaWVudCgibGVmdCIpLHMub3JpZW50KCJy
aWdodCIpO3ZhciB4PTNEZnVuY3Rpb24obixvKXt2YXIgdT0zRG4ucG9zWzA9Cl0rKG8ub2Zmc2V0
TGVmdHx8MCksYT0zRG4ucG9zWzFdKyhvLm9mZnNldFRvcHx8MCksZj0zRHIudGlja0Zvcm1hdCgp
KHQueCgpKD0Kbi5wb2ludCxuLnBvaW50SW5kZXgpKSxsPTNEKG4uc2VyaWVzLmJhcj9pOnMpLnRp
Y2tGb3JtYXQoKSh0LnkoKShuLnBvaW50LG4uPQpwb2ludEluZGV4KSksYz0zRHYobi5zZXJpZXMu
a2V5LGYsbCxuLFQpO2UudG9vbHRpcC5zaG93KFt1LGFdLGMsbi52YWx1ZTwwPyI9Cm4iOiJzIixu
dWxsLG8pfTtyZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixm
dW5jdGlvbihlKT0Ke2UucG9zPTNEW2UucG9zWzBdK3UubGVmdCxlLnBvc1sxXSt1LnRvcF0sUy50
b29sdGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2gub24oPQoiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAi
LGZ1bmN0aW9uKGUpe1MudG9vbHRpcEhpZGUoZSl9KSxuLmRpc3BhdGNoLm9uKCJlbGU9Cm1lbnRN
b3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rdS5sZWZ0LGUu
cG9zWzFdK3UudG9wXT0KLFMudG9vbHRpcFNob3coZSl9KSxuLmRpc3BhdGNoLm9uKCJlbGVtZW50
TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7Uy50PQpvb2x0aXBIaWRlKGUpfSksUy5vbigi
dG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7ZCYmZS50b29sdGlwLmNsZWFudXAoKX0pLFQuZGk9CnNw
YXRjaD0zRFMsVC5sZWdlbmQ9M0RvLFQubGluZXM9M0R0LFQuYmFycz0zRG4sVC54QXhpcz0zRHIs
VC55MUF4aXM9M0RpLFQueT0KMkF4aXM9M0RzLGQzLnJlYmluZChULHQsImRlZmluZWQiLCJzaXpl
IiwiY2xpcFZvcm9ub2kiLCJpbnRlcnBvbGF0ZSIpLFQub3B0PQppb25zPTNEZS51dGlscy5vcHRp
b25zRnVuYy5iaW5kKFQpLFQueD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Q9
Cmg/KGw9M0RlLHQueChlKSxuLngoZSksVCk6bH0sVC55PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGM9Cj0zRGUsdC55KGUpLG4ueShlKSxUKTpjfSxULm1hcmdpbj0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1Lj0KdG9wPTNEdHlwZW9mIGUudG9w
IT0zRCJ1bmRlZmluZWQiP2UudG9wOnUudG9wLHUucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0Qi
PQp1bmRlZmluZWQiP2UucmlnaHQ6dS5yaWdodCx1LmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9
M0QidW5kZWZpbmVkIj9lLmJvdHQ9Cm9tOnUuYm90dG9tLHUubGVmdD0zRHR5cGVvZiBlLmxlZnQh
PTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnUubGVmdCxUKTp1fSxULndpZD0KdGg9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0zRGUsVCk6YX0sVC5oZWlnaHQ9M0RmdW5jdGlv
bihlPQope3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSxUKTpmfSxULmNvbG9yPTNEZnVu
Y3Rpb24odCl7cmV0dXJuIGFyZ3VtZW49CnRzLmxlbmd0aD8oaD0zRGUudXRpbHMuZ2V0Q29sb3Io
dCksby5jb2xvcihoKSxUKTpofSxULnNob3dMZWdlbmQ9M0RmdW5jdGlvbj0KKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhwPTNEZSxUKTpwfSxULnRvb2x0aXBzPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyPQpndW1lbnRzLmxlbmd0aD8oZD0zRGUsVCk6ZH0sVC50b29sdGlwQ29udGVudD0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHM9Ci5sZW5ndGg/KHY9M0RlLFQpOnZ9LFQuc3RhdGU9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0zRGUsVD0KKTpifSxULmRl
ZmF1bHRTdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3PTNEZSxU
KTp3fSxULm5vPQpEYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9
M0RlLFQpOkV9LFR9LGUubW9kZWxzLmxpbmVXaXQ9CmhGb2N1c0NoYXJ0PTNEZnVuY3Rpb24oKXtm
dW5jdGlvbiBrKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7ZnVuY3Rpb24gUj0KKGUpe3Zh
ciB0PTNEKyhlPTNEPTNEImUiKSxuPTNEdD8xOi0xLHI9M0RPLzM7cmV0dXJuIk0iKy41Km4rIiwi
K3IrIkE2LDYgMCAwPQogIit0KyIgIis2LjUqbisiLCIrKHIrNikrIlYiKygyKnItNikrIkE2LDYg
MCAwICIrdCsiICIrLjUqbisiLCIrMipyKyJaIisiTSI9CisyLjUqbisiLCIrKHIrOCkrIlYiKygy
KnItOCkrIk0iKzQuNSpuKyIsIisocis4KSsiViIrKDIqci04KX1mdW5jdGlvbiBVKCl7YT0KLmVt
cHR5KCl8fGEuZXh0ZW50KHcpLEYuZGF0YShbYS5lbXB0eSgpP2cuZG9tYWluKCk6d10pLmVhY2go
ZnVuY3Rpb24oZSx0KXt2PQphciBuPTNEZyhlWzBdKS12LnJhbmdlKClbMF0scj0zRHYucmFuZ2Uo
KVsxXS1nKGVbMV0pO2QzLnNlbGVjdCh0aGlzKS5zZWxlY3Q9CigiLmxlZnQiKS5hdHRyKCJ3aWR0
aCIsbjwwPzA6biksZDMuc2VsZWN0KHRoaXMpLnNlbGVjdCgiLnJpZ2h0IikuYXR0cigieCIsZz0K
KGVbMV0pKS5hdHRyKCJ3aWR0aCIscjwwPzA6cil9KX1mdW5jdGlvbiB6KCl7dz0zRGEuZW1wdHko
KT9udWxsOmEuZXh0ZW50KCk7PQp2YXIgbj0zRGEuZW1wdHkoKT9nLmRvbWFpbigpOmEuZXh0ZW50
KCk7aWYoTWF0aC5hYnMoblswXS1uWzFdKTw9M0QxKXJldHVybjs9ClQuYnJ1c2goe2V4dGVudDpu
LGJydXNoOmF9KSxVKCk7dmFyIHM9M0RQLnNlbGVjdCgiLm52LWZvY3VzIC5udi1saW5lc1dyYXAi
KT0KLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkubWFwKGZ1
bmN0aW9uKGUscil7cmV0dXJue2tlPQp5OmUua2V5LHZhbHVlczplLnZhbHVlcy5maWx0ZXIoZnVu
Y3Rpb24oZSxyKXtyZXR1cm4gdC54KCkoZSxyKT49M0RuWzBdJiZ0Lng9CigpKGUscik8PTNEblsx
XX0pfX0pKTtzLmNhbGwodCksUC5zZWxlY3QoIi5udi1mb2N1cyAubnYteC5udi1heGlzIikuY2Fs
bChyKT0KLFAuc2VsZWN0KCIubnYtZm9jdXMgLm52LXkubnYtYXhpcyIpLmNhbGwoaSl9dmFyIFM9
M0RkMy5zZWxlY3QodGhpcyksTj0zRHRoPQppcyxMPTNEKGh8fHBhcnNlSW50KFMuc3R5bGUoIndp
ZHRoIikpfHw5NjApLWYubGVmdC1mLnJpZ2h0LEE9M0QocHx8cGFyc2VJbnQ9CihTLnN0eWxlKCJo
ZWlnaHQiKSl8fDQwMCktZi50b3AtZi5ib3R0b20tZCxPPTNEZC1sLnRvcC1sLmJvdHRvbTtrLnVw
ZGF0ZT0zRD0KZnVuY3Rpb24oKXtTLmNhbGwoayl9LGsuY29udGFpbmVyPTNEdGhpcztpZighZXx8
IWUubGVuZ3RofHwhZS5maWx0ZXIoZnVuY3RpPQpvbihlKXtyZXR1cm4gZS52YWx1ZXMubGVuZ3Ro
fSkubGVuZ3RoKXt2YXIgTT0zRFMuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGE9CnRhKFt4XSk7
cmV0dXJuIE0uZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtbm9E
YXRhIikuYXR0cj0KKCJkeSIsIi0uN2VtIikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiks
TS5hdHRyKCJ4IixmLmxlZnQrTC8yKS5hdHRyKCJ5PQoiLGYudG9wK0EvMikudGV4dChmdW5jdGlv
bihlKXtyZXR1cm4gZX0pLGt9Uy5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmU9CigpLHY9
M0R0LnhTY2FsZSgpLG09M0R0LnlTY2FsZSgpLGc9M0RuLnhTY2FsZSgpLHk9M0RuLnlTY2FsZSgp
O3ZhciBfPTNEUy5zZT0KbGVjdEFsbCgiZy5udi13cmFwLm52LWxpbmVXaXRoRm9jdXNDaGFydCIp
LmRhdGEoW2VdKSxEPTNEXy5lbnRlcigpLmFwcGVuZCgiPQpnIikuYXR0cigiY2xhc3MiLCJudmQz
IG52LXdyYXAgbnYtbGluZVdpdGhGb2N1c0NoYXJ0IikuYXBwZW5kKCJnIiksUD0zRF8uc2U9Cmxl
Y3QoImciKTtELmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpO3ZhciBI
PTNERC5hcHBlbmQoImciKT0KLmF0dHIoImNsYXNzIiwibnYtZm9jdXMiKTtILmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksSC5hcHBlPQpuZCgiZyIpLmF0dHIoImNsYXNz
IiwibnYteSBudi1heGlzIiksSC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxpbmVzV3I9
CmFwIik7dmFyIEI9M0RELmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtY29udGV4dCIpO0Iu
YXBwZW5kKCJnIikuYXR0cigiYz0KbGFzcyIsIm52LXggbnYtYXhpcyIpLEIuYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJudi15IG52LWF4aXMiKSxCLmFwcGVuZCgiPQpnIikuYXR0cigiY2xhc3Mi
LCJudi1saW5lc1dyYXAiKSxCLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYnJ1c2hCYWNr
Z3I9Cm91bmQiKSxCLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1icnVzaCIpLGIm
Jih1LndpZHRoKEwpLFAuc2VsZWN0KD0KIi5udi1sZWdlbmRXcmFwIikuZGF0dW0oZSkuY2FsbCh1
KSxmLnRvcCE9M0R1LmhlaWdodCgpJiYoZi50b3A9M0R1LmhlaWdodCgpPQosQT0zRChwfHxwYXJz
ZUludChTLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktZi50b3AtZi5ib3R0b20tZCksUC5zZWxlY3Qo
Ii5udi09CmxlZ2VuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiKyAtZi50
b3ArIikiKSksXy5hdHRyKCJ0cmFuc2Zvcj0KbSIsInRyYW5zbGF0ZSgiK2YubGVmdCsiLCIrZi50
b3ArIikiKSx0LndpZHRoKEwpLmhlaWdodChBKS5jb2xvcihlLm1hcChmdW5jPQp0aW9uKGUsdCl7
cmV0dXJuIGUuY29sb3J8fGMoZSx0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25d
LmRpc2FibGU9CmR9KSksbi5kZWZpbmVkKHQuZGVmaW5lZCgpKS53aWR0aChMKS5oZWlnaHQoTyku
Y29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZT0KdHVybiBlLmNvbG9yfHxjKGUsdCl9KS5maWx0
ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZH0pKSxQLnNlbGVjPQp0KCIubnYt
Y29udGV4dCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrKEErZi5ib3R0b20rbC50
b3ApKyIpIik7dmE9CnIgaj0zRFAuc2VsZWN0KCIubnYtY29udGV4dCAubnYtbGluZXNXcmFwIiku
ZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dT0Kcm4hZS5kaXNhYmxlZH0pKTtkMy50cmFu
c2l0aW9uKGopLmNhbGwobiksci5zY2FsZSh2KS50aWNrcyhMLzEwMCkudGlja1NpemUoPQotQSww
KSxpLnNjYWxlKG0pLnRpY2tzKEEvMzYpLnRpY2tTaXplKC1MLDApLFAuc2VsZWN0KCIubnYtZm9j
dXMgLm52LXgubnYtYXg9CmlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitBKyIp
IiksYS54KGcpLm9uKCJicnVzaCIsZnVuY3Rpb24oKXt2YT0KciBlPTNEay50cmFuc2l0aW9uRHVy
YXRpb24oKTtrLnRyYW5zaXRpb25EdXJhdGlvbigwKSx6KCksay50cmFuc2l0aW9uRHVyYXRpPQpv
bihlKX0pLHcmJmEuZXh0ZW50KHcpO3ZhciBGPTNEUC5zZWxlY3QoIi5udi1icnVzaEJhY2tncm91
bmQiKS5zZWxlY3RBbGwoImc9CiIpLmRhdGEoW3d8fGEuZXh0ZW50KCldKSxJPTNERi5lbnRlcigp
LmFwcGVuZCgiZyIpO0kuYXBwZW5kKCJyZWN0IikuYXR0cigiYz0KbGFzcyIsImxlZnQiKS5hdHRy
KCJ4IiwwKS5hdHRyKCJ5IiwwKS5hdHRyKCJoZWlnaHQiLE8pLEkuYXBwZW5kKCJyZWN0IikuYXR0
PQpyKCJjbGFzcyIsInJpZ2h0IikuYXR0cigieCIsMCkuYXR0cigieSIsMCkuYXR0cigiaGVpZ2h0
IixPKTt2YXIgcT0zRFAuc2VsZWM9CnQoIi5udi14Lm52LWJydXNoIikuY2FsbChhKTtxLnNlbGVj
dEFsbCgicmVjdCIpLmF0dHIoImhlaWdodCIsTykscS5zZWxlY3RBbD0KbCgiLnJlc2l6ZSIpLmFw
cGVuZCgicGF0aCIpLmF0dHIoImQiLFIpLHooKSxzLnNjYWxlKGcpLnRpY2tzKEwvMTAwKS50aWNr
U2l6PQplKC1PLDApLFAuc2VsZWN0KCIubnYtY29udGV4dCAubnYteC5udi1heGlzIikuYXR0cigi
dHJhbnNmb3JtIiwidHJhbnNsYXRlKDA9CiwiK3kucmFuZ2UoKVswXSsiKSIpLGQzLnRyYW5zaXRp
b24oUC5zZWxlY3QoIi5udi1jb250ZXh0IC5udi14Lm52LWF4aXMiKSkuYz0KYWxsKHMpLG8uc2Nh
bGUoeSkudGlja3MoTy8zNikudGlja1NpemUoLUwsMCksZDMudHJhbnNpdGlvbihQLnNlbGVjdCgi
Lm52LWNvPQpudGV4dCAubnYteS5udi1heGlzIikpLmNhbGwobyksUC5zZWxlY3QoIi5udi1jb250
ZXh0IC5udi14Lm52LWF4aXMiKS5hdHRyKCI9CnRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIreS5y
YW5nZSgpWzBdKyIpIiksdS5kaXNwYXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1bj0KY3Rpb24oZSl7
ay51cGRhdGUoKX0pLFQub24oInRvb2x0aXBTaG93IixmdW5jdGlvbihlKXtFJiZDKGUsTi5wYXJl
bnROb2RlKX0pPQp9KSxrfXZhciB0PTNEZS5tb2RlbHMubGluZSgpLG49M0RlLm1vZGVscy5saW5l
KCkscj0zRGUubW9kZWxzLmF4aXMoKSxpPTNEZS49Cm1vZGVscy5heGlzKCkscz0zRGUubW9kZWxz
LmF4aXMoKSxvPTNEZS5tb2RlbHMuYXhpcygpLHU9M0RlLm1vZGVscy5sZWdlbmQoKT0KLGE9M0Rk
My5zdmcuYnJ1c2goKSxmPTNEe3RvcDozMCxyaWdodDozMCxib3R0b206MzAsbGVmdDo2MH0sbD0z
RHt0b3A6MCxyaWdoPQp0OjMwLGJvdHRvbToyMCxsZWZ0OjYwfSxjPTNEZS51dGlscy5kZWZhdWx0
Q29sb3IoKSxoPTNEbnVsbCxwPTNEbnVsbCxkPTNEMTA9CjAsdixtLGcseSxiPTNEITAsdz0zRG51
bGwsRT0zRCEwLFM9M0RmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiI8aDM+IitlKyI8Lz0KaDM+
IisiPHA+IituKyIgYXQgIit0KyI8L3A+In0seD0zRCJObyBEYXRhIEF2YWlsYWJsZS4iLFQ9M0Rk
My5kaXNwYXRjaCgidG9vPQpsdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwiYnJ1c2giKSxOPTNEMDt0
LmNsaXBFZGdlKCEwKSxuLmludGVyYWN0aXZlKCExKSxyLm89CnJpZW50KCJib3R0b20iKS50aWNr
UGFkZGluZyg1KSxpLm9yaWVudCgibGVmdCIpLHMub3JpZW50KCJib3R0b20iKS50aWNrUGFkZD0K
aW5nKDUpLG8ub3JpZW50KCJsZWZ0Iik7dmFyIEM9M0RmdW5jdGlvbihuLHMpe3ZhciBvPTNEbi5w
b3NbMF0rKHMub2Zmc2V0TGVmPQp0fHwwKSx1PTNEbi5wb3NbMV0rKHMub2Zmc2V0VG9wfHwwKSxh
PTNEci50aWNrRm9ybWF0KCkodC54KCkobi5wb2ludCxuLnBvaW49CnRJbmRleCkpLGY9M0RpLnRp
Y2tGb3JtYXQoKSh0LnkoKShuLnBvaW50LG4ucG9pbnRJbmRleCkpLGw9M0RTKG4uc2VyaWVzLmtl
eT0KLGEsZixuLGspO2UudG9vbHRpcC5zaG93KFtvLHVdLGwsbnVsbCxudWxsLHMpfTtyZXR1cm4g
dC5kaXNwYXRjaC5vbigiZWxlbWVuPQp0TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2Uu
cG9zPTNEW2UucG9zWzBdK2YubGVmdCxlLnBvc1sxXStmLnRvcF0sVC49CnRvb2x0aXBTaG93KGUp
fSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe1Qu
dG9vbD0KdGlwSGlkZShlKX0pLFQub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbigpe0UmJmUudG9v
bHRpcC5jbGVhbnVwKCl9KSxrLmRpc3BhPQp0Y2g9M0RULGsubGVnZW5kPTNEdSxrLmxpbmVzPTNE
dCxrLmxpbmVzMj0zRG4say54QXhpcz0zRHIsay55QXhpcz0zRGksay54MkE9Cnhpcz0zRHMsay55
MkF4aXM9M0RvLGQzLnJlYmluZChrLHQsImRlZmluZWQiLCJpc0FyZWEiLCJzaXplIiwieERvbWFp
biIsInlEbz0KbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsImZvcmNlWCIsImZvcmNlWSIsImludGVy
YWN0aXZlIiwiY2xpcEVkZ2UiLCJjbGlwVm9yPQpvbm9pIiwiaWQiKSxrLm9wdGlvbnM9M0RlLnV0
aWxzLm9wdGlvbnNGdW5jLmJpbmQoayksay54PTNEZnVuY3Rpb24oZSl7cmV0dXI9Cm4gYXJndW1l
bnRzLmxlbmd0aD8odC54KGUpLG4ueChlKSxrKTp0Lnh9LGsueT0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudD0Kcy5sZW5ndGg/KHQueShlKSxuLnkoZSksayk6dC55fSxrLm1hcmdpbj0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuPQpndGg/KGYudG9wPTNEdHlwZW9mIGUudG9w
IT0zRCJ1bmRlZmluZWQiP2UudG9wOmYudG9wLGYucmlnaHQ9M0R0eXBlb2YgZS5yaWc9Cmh0IT0z
RCJ1bmRlZmluZWQiP2UucmlnaHQ6Zi5yaWdodCxmLmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9
M0QidW5kZWZpbmVkIj0KP2UuYm90dG9tOmYuYm90dG9tLGYubGVmdD0zRHR5cGVvZiBlLmxlZnQh
PTNEInVuZGVmaW5lZCI/ZS5sZWZ0OmYubGVmdCxrKTpmPQp9LGsubWFyZ2luMj0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZSxrKTpsfSxrLndpZHRoPTNEZnU9Cm5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsayk6aH0say5oZWlnaHQ9M0Rm
dW5jdGlvbihlKXtyZXR1cj0KbiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxrKTpwfSxrLmhlaWdo
dDI9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlPQpuZ3RoPyhkPTNEZSxrKTpkfSxr
LmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLnV0aWw9
CnMuZ2V0Q29sb3IodCksdS5jb2xvcihjKSxrKTpjfSxrLnNob3dMZWdlbmQ9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLj0KbGVuZ3RoPyhiPTNEZSxrKTpifSxrLnRvb2x0aXBzPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlPQosayk6RX0say50b29sdGlw
Q29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhTPTNEZSxrKTpT
fSw9CmsuaW50ZXJwb2xhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
dC5pbnRlcnBvbGF0ZShlKSxuLmludD0KZXJwb2xhdGUoZSksayk6dC5pbnRlcnBvbGF0ZSgpfSxr
Lm5vRGF0YT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuPQpndGg/KHg9M0RlLGsp
Onh9LGsueFRpY2tGb3JtYXQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
ci50aWM9CmtGb3JtYXQoZSkscy50aWNrRm9ybWF0KGUpLGspOnIudGlja0Zvcm1hdCgpfSxrLnlU
aWNrRm9ybWF0PTNEZnVuY3Rpb24oZSl7cj0KZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaS50aWNr
Rm9ybWF0KGUpLG8udGlja0Zvcm1hdChlKSxrKTppLnRpY2tGb3JtYXQoKX0sPQprLmJydXNoRXh0
ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9M0RlLGspOnd9LGsu
dHJhbnNpdGk9Cm9uRHVyYXRpb249M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oTj0zRGUsayk6Tn0sa30sZS5tb2RlbHMubD0KaW5lUGx1c0JhcldpdGhGb2N1c0NoYXJ0PTNE
ZnVuY3Rpb24oKXtmdW5jdGlvbiBCKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oPQplKXtmdW5j
dGlvbiB0dChlKXt2YXIgdD0zRCsoZT0zRD0zRCJlIiksbj0zRHQ/MTotMSxyPTNESS8zO3JldHVy
biJNIisuNSpuKyI9CiwiK3IrIkE2LDYgMCAwICIrdCsiICIrNi41Km4rIiwiKyhyKzYpKyJWIiso
MipyLTYpKyJBNiw2IDAgMCAiK3QrIiAiKy41Km4rIj0KLCIrMipyKyJaIisiTSIrMi41Km4rIiwi
KyhyKzgpKyJWIisoMipyLTgpKyJNIis0LjUqbisiLCIrKHIrOCkrIlYiKygyKnItOCl9PQpmdW5j
dGlvbiBudCgpe2guZW1wdHkoKXx8aC5leHRlbnQoeCksWS5kYXRhKFtoLmVtcHR5KCk/ay5kb21h
aW4oKTp4XSkuZWFjaCg9CmZ1bmN0aW9uKGUsdCl7dmFyIG49M0RrKGVbMF0pLWsucmFuZ2UoKVsw
XSxyPTNEay5yYW5nZSgpWzFdLWsoZVsxXSk7ZDMuc2VsZT0KY3QodGhpcykuc2VsZWN0KCIubGVm
dCIpLmF0dHIoIndpZHRoIixuPDA/MDpuKSxkMy5zZWxlY3QodGhpcykuc2VsZWN0KCIucmlnPQpo
dCIpLmF0dHIoIngiLGsoZVsxXSkpLmF0dHIoIndpZHRoIixyPDA/MDpyKX0pfWZ1bmN0aW9uIHJ0
KCl7eD0zRGguZW1wdHkoKT89Cm51bGw6aC5leHRlbnQoKSxTPTNEaC5lbXB0eSgpP2suZG9tYWlu
KCk6aC5leHRlbnQoKSxELmJydXNoKHtleHRlbnQ6UyxicnVzaD0KOmh9KSxudCgpLHIud2lkdGgo
aikuaGVpZ2h0KEYpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fHco
PQplLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWQmJmVbbl0u
YmFyfSkpLHQud2lkdGgoaikuaGU9CmlnaHQoRikuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXty
ZXR1cm4gZS5jb2xvcnx8dyhlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKD0KdCxuKXtyZXR1cm4hZVtu
XS5kaXNhYmxlZCYmIWVbbl0uYmFyfSkpO3ZhciBuPTNEJC5zZWxlY3QoIi5udi1mb2N1cyAubnYt
YmFyPQpzV3JhcCIpLmRhdHVtKFIubGVuZ3RoP1IubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJue2tl
eTplLmtleSx2YWx1ZXM6ZS52YWx1ZXM9Ci5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gci54
KCkoZSx0KT49M0RTWzBdJiZyLngoKShlLHQpPD0zRFNbMV19KX19KTpbez0KdmFsdWVzOltdfV0p
LGk9M0QkLnNlbGVjdCgiLm52LWZvY3VzIC5udi1saW5lc1dyYXAiKS5kYXR1bShVWzBdLmRpc2Fi
bGVkP1t7PQp2YWx1ZXM6W119XTpVLm1hcChmdW5jdGlvbihlLG4pe3JldHVybntrZXk6ZS5rZXks
dmFsdWVzOmUudmFsdWVzLmZpbHRlcihmdW49CmN0aW9uKGUsbil7cmV0dXJuIHQueCgpKGUsbik+
PTNEU1swXSYmdC54KCkoZSxuKTw9M0RTWzFdfSl9fSkpO1IubGVuZ3RoP0M9Cj0zRHIueFNjYWxl
KCk6Qz0zRHQueFNjYWxlKCkscy5zY2FsZShDKS50aWNrcyhqLzEwMCkudGlja1NpemUoLUYsMCks
cy5kb21haT0KbihbTWF0aC5jZWlsKFNbMF0pLE1hdGguZmxvb3IoU1sxXSldKSwkLnNlbGVjdCgi
Lm52LXgubnYtYXhpcyIpLmNhbGwocyksbi5jPQphbGwociksaS5jYWxsKHQpLCQuc2VsZWN0KCIu
bnYtZm9jdXMgLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW49CnNsYXRlKDAs
IitMLnJhbmdlKClbMF0rIikiKSx1LnNjYWxlKEwpLnRpY2tzKEYvMzYpLnRpY2tTaXplKC1qLDAp
LCQuc2VsZWN0KD0KIi5udi1mb2N1cyAubnYteTEubnYtYXhpcyIpLnN0eWxlKCJvcGFjaXR5IixS
Lmxlbmd0aD8xOjApLGEuc2NhbGUoQSkudGlja3MoPQpGLzM2KS50aWNrU2l6ZShSLmxlbmd0aD8w
Oi1qLDApLCQuc2VsZWN0KCIubnYtZm9jdXMgLm52LXkyLm52LWF4aXMiKS5zdHlsZSg9CiJvcGFj
aXR5IixVLmxlbmd0aD8xOjApLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK0MucmFuZ2Uo
KVsxXSsiLDApIiksJD0KLnNlbGVjdCgiLm52LWZvY3VzIC5udi15MS5udi1heGlzIikuY2FsbCh1
KSwkLnNlbGVjdCgiLm52LWZvY3VzIC5udi15Mi5udi1hPQp4aXMiKS5jYWxsKGEpfXZhciBOPTNE
ZDMuc2VsZWN0KHRoaXMpLFA9M0R0aGlzLGo9M0Qodnx8cGFyc2VJbnQoTi5zdHlsZSgid2k9CmR0
aCIpKXx8OTYwKS1wLmxlZnQtcC5yaWdodCxGPTNEKG18fHBhcnNlSW50KE4uc3R5bGUoImhlaWdo
dCIpKXx8NDAwKS1wLnRvcD0KLXAuYm90dG9tLWcsST0zRGctZC50b3AtZC5ib3R0b207Qi51cGRh
dGU9M0RmdW5jdGlvbigpe04uY2FsbChCKX0sQi5jb250YWluPQplcj0zRHRoaXM7aWYoIWV8fCFl
Lmxlbmd0aHx8IWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS49
Cmxlbmd0aCl7dmFyIHE9M0ROLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW19dKTtyZXR1
cm4gcS5lbnRlcigpLmFwcGVuZD0KKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0
YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNoPQpvciIsIm1pZGRsZSIpLHEu
YXR0cigieCIscC5sZWZ0K2ovMikuYXR0cigieSIscC50b3ArRi8yKS50ZXh0KGZ1bmN0aW9uKGUp
e3I9CmV0dXJuIGV9KSxCfU4uc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtb3ZlKCk7dmFyIFI9
M0RlLmZpbHRlcihmdW5jdGlvbihlKT0Ke3JldHVybiFlLmRpc2FibGVkJiZlLmJhcn0pLFU9M0Rl
LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5iYXJ9KTtDPTNEci54PQpTY2FsZSgpLGs9M0Rv
LnNjYWxlKCksTD0zRHIueVNjYWxlKCksQT0zRHQueVNjYWxlKCksTz0zRGkueVNjYWxlKCksTT0z
RG4ueVM9CmNhbGUoKTt2YXIgej0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2Fi
bGVkJiZlLmJhcn0pLm1hcChmdW5jdGlvbj0KKGUpe3JldHVybiBlLnZhbHVlcy5tYXAoZnVuY3Rp
b24oZSx0KXtyZXR1cm57eDp5KGUsdCkseTpiKGUsdCl9fSl9KSxXPTNEZS5mPQppbHRlcihmdW5j
dGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZCYmIWUuYmFyfSkubWFwKGZ1bmN0aW9uKGUpe3JldHVy
biBlLnZhbHU9CmVzLm1hcChmdW5jdGlvbihlLHQpe3JldHVybnt4OnkoZSx0KSx5OmIoZSx0KX19
KX0pO0MucmFuZ2UoWzAsal0pLGsuZG9tYWluKD0KZDMuZXh0ZW50KGQzLm1lcmdlKHouY29uY2F0
KFcpKSxmdW5jdGlvbihlKXtyZXR1cm4gZS54fSkpLnJhbmdlKFswLGpdKTt2YXIgPQpYPTNETi5z
ZWxlY3RBbGwoImcubnYtd3JhcC5udi1saW5lUGx1c0JhciIpLmRhdGEoW2VdKSxWPTNEWC5lbnRl
cigpLmFwcGVuZCg9CiJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbGluZVBsdXNC
YXIiKS5hcHBlbmQoImciKSwkPTNEWC5zZWxlY3QoIj0KZyIpO1YuYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudi1sZWdlbmRXcmFwIik7dmFyIEo9M0RWLmFwcGVuZCgiZyIpLmF0dHIoPQoiY2xh
c3MiLCJudi1mb2N1cyIpO0ouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14IG52LWF4aXMi
KSxKLmFwcGVuZCgiZyI9CikuYXR0cigiY2xhc3MiLCJudi15MSBudi1heGlzIiksSi5hcHBlbmQo
ImciKS5hdHRyKCJjbGFzcyIsIm52LXkyIG52LWF4aXMiKT0KLEouYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudi1iYXJzV3JhcCIpLEouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1sPQpp
bmVzV3JhcCIpO3ZhciBLPTNEVi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWNvbnRleHQi
KTtLLmFwcGVuZCgiZyIpLmE9CnR0cigiY2xhc3MiLCJudi14IG52LWF4aXMiKSxLLmFwcGVuZCgi
ZyIpLmF0dHIoImNsYXNzIiwibnYteTEgbnYtYXhpcyIpLEsuYT0KcHBlbmQoImciKS5hdHRyKCJj
bGFzcyIsIm52LXkyIG52LWF4aXMiKSxLLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYmFy
PQpzV3JhcCIpLEsuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1saW5lc1dyYXAiKSxLLmFw
cGVuZCgiZyIpLmF0dHIoImNsYXM9CnMiLCJudi1icnVzaEJhY2tncm91bmQiKSxLLmFwcGVuZCgi
ZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1icnVzaCIpLEUmJihjLj0Kd2lkdGgoai8yKSwkLnNl
bGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5kYXR1bShlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5v
cmlnPQppbmFsS2V5PTNEZS5vcmlnaW5hbEtleT0zRD0zRD0zRHVuZGVmaW5lZD9lLmtleTplLm9y
aWdpbmFsS2V5LGUua2V5PTNEZS5vcmk9CmdpbmFsS2V5KyhlLmJhcj8iIChsZWZ0IGF4aXMpIjoi
IChyaWdodCBheGlzKSIpLGV9KSkuY2FsbChjKSxwLnRvcCE9M0RjLmhlaT0KZ2h0KCkmJihwLnRv
cD0zRGMuaGVpZ2h0KCksRj0zRChtfHxwYXJzZUludChOLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCkt
cC50b3AtPQpwLmJvdHRvbS1nKSwkLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5hdHRyKCJ0cmFu
c2Zvcm0iLCJ0cmFuc2xhdGUoIitqLzIrIiw9CiIrIC1wLnRvcCsiKSIpKSxYLmF0dHIoInRyYW5z
Zm9ybSIsInRyYW5zbGF0ZSgiK3AubGVmdCsiLCIrcC50b3ArIikiKSxpLndpZD0KdGgoaikuaGVp
Z2h0KEkpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fHcoZSx0KX0p
LmZpbHRlcihmPQp1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWQmJmVbbl0uYmFyfSkp
LG4ud2lkdGgoaikuaGVpZ2h0KEkpLmNvbG9yKGU9Ci5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4g
ZS5jb2xvcnx8dyhlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbj0KXS5kaXNh
YmxlZCYmIWVbbl0uYmFyfSkpO3ZhciBRPTNEJC5zZWxlY3QoIi5udi1jb250ZXh0IC5udi1iYXJz
V3JhcCIpLmRhdHVtPQooUi5sZW5ndGg/Ujpbe3ZhbHVlczpbXX1dKSxHPTNEJC5zZWxlY3QoIi5u
di1jb250ZXh0IC5udi1saW5lc1dyYXAiKS5kYXR1bSg9ClVbMF0uZGlzYWJsZWQ/W3t2YWx1ZXM6
W119XTpVKTskLnNlbGVjdCgiLm52LWNvbnRleHQiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cj0KYW5z
bGF0ZSgwLCIrKEYrcC5ib3R0b20rZC50b3ApKyIpIiksUS5jYWxsKGkpLEcuY2FsbChuKSxoLngo
aykub24oImJydXNoIixyPQp0KSx4JiZoLmV4dGVudCh4KTt2YXIgWT0zRCQuc2VsZWN0KCIubnYt
YnJ1c2hCYWNrZ3JvdW5kIikuc2VsZWN0QWxsKCJnIikuZGE9CnRhKFt4fHxoLmV4dGVudCgpXSks
Wj0zRFkuZW50ZXIoKS5hcHBlbmQoImciKTtaLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIj0K
LCJsZWZ0IikuYXR0cigieCIsMCkuYXR0cigieSIsMCkuYXR0cigiaGVpZ2h0IixJKSxaLmFwcGVu
ZCgicmVjdCIpLmF0dHIoImNsPQphc3MiLCJyaWdodCIpLmF0dHIoIngiLDApLmF0dHIoInkiLDAp
LmF0dHIoImhlaWdodCIsSSk7dmFyIGV0PTNEJC5zZWxlY3QoIi49Cm52LXgubnYtYnJ1c2giKS5j
YWxsKGgpO2V0LnNlbGVjdEFsbCgicmVjdCIpLmF0dHIoImhlaWdodCIsSSksZXQuc2VsZWN0QWxs
KD0KIi5yZXNpemUiKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIix0dCksby50aWNrcyhqLzEwMCku
dGlja1NpemUoLUksMCksJC5zZWxlPQpjdCgiLm52LWNvbnRleHQgLm52LXgubnYtYXhpcyIpLmF0
dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrTy5yYW5nZSgpWzA9Cl0rIikiKSwkLnNlbGVj
dCgiLm52LWNvbnRleHQgLm52LXgubnYtYXhpcyIpLmNhbGwobyksZi5zY2FsZShPKS50aWNrcyhJ
LzM2KT0KLnRpY2tTaXplKC1qLDApLCQuc2VsZWN0KCIubnYtY29udGV4dCAubnYteTEubnYtYXhp
cyIpLnN0eWxlKCJvcGFjaXR5IixSLmxlPQpuZ3RoPzE6MCkuYXR0cigidHJhbnNmb3JtIiwidHJh
bnNsYXRlKDAsIitrLnJhbmdlKClbMF0rIikiKSwkLnNlbGVjdCgiLm52LWM9Cm9udGV4dCAubnYt
eTEubnYtYXhpcyIpLmNhbGwoZiksbC5zY2FsZShNKS50aWNrcyhJLzM2KS50aWNrU2l6ZShSLmxl
bmd0aD8wOj0KLWosMCksJC5zZWxlY3QoIi5udi1jb250ZXh0IC5udi15Mi5udi1heGlzIikuc3R5
bGUoIm9wYWNpdHkiLFUubGVuZ3RoPzE6MCkuPQphdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUo
IitrLnJhbmdlKClbMV0rIiwwKSIpLCQuc2VsZWN0KCIubnYtY29udGV4dCAubnY9Ci15Mi5udi1h
eGlzIikuY2FsbChsKSxjLmRpc3BhdGNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24oZSl7Qi51
cGRhdGUoKX0pLD0KRC5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe1QmJkgoZSxQLnBhcmVu
dE5vZGUpfSkscnQoKX0pLEJ9dmFyIHQ9M0RlLm1vPQpkZWxzLmxpbmUoKSxuPTNEZS5tb2RlbHMu
bGluZSgpLHI9M0RlLm1vZGVscy5oaXN0b3JpY2FsQmFyKCksaT0zRGUubW9kZWxzLmg9CmlzdG9y
aWNhbEJhcigpLHM9M0RlLm1vZGVscy5heGlzKCksbz0zRGUubW9kZWxzLmF4aXMoKSx1PTNEZS5t
b2RlbHMuYXhpcygpLD0KYT0zRGUubW9kZWxzLmF4aXMoKSxmPTNEZS5tb2RlbHMuYXhpcygpLGw9
M0RlLm1vZGVscy5heGlzKCksYz0zRGUubW9kZWxzLmxlPQpnZW5kKCksaD0zRGQzLnN2Zy5icnVz
aCgpLHA9M0R7dG9wOjMwLHJpZ2h0OjMwLGJvdHRvbTozMCxsZWZ0OjYwfSxkPTNEe3RvcDo9CjAs
cmlnaHQ6MzAsYm90dG9tOjIwLGxlZnQ6NjB9LHY9M0RudWxsLG09M0RudWxsLGc9M0QxMDAseT0z
RGZ1bmN0aW9uKGUpe3JldD0KdXJuIGUueH0sYj0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnl9LHc9
M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLEU9M0QhMCxTLHg9Cj0zRG51bGwsVD0zRCEwLE49M0Rm
dW5jdGlvbihlLHQsbixyLGkpe3JldHVybiI8aDM+IitlKyI8L2gzPiIrIjxwPiIrbisiIGF0ID0K
Iit0KyI8L3A+In0sQyxrLEwsQSxPLE0sXz0zRCJObyBEYXRhIEF2YWlsYWJsZS4iLEQ9M0RkMy5k
aXNwYXRjaCgidG9vbHRpcFNoPQpvdyIsInRvb2x0aXBIaWRlIiwiYnJ1c2giKSxQPTNEMDt0LmNs
aXBFZGdlKCEwKSxuLmludGVyYWN0aXZlKCExKSxzLm9yaWVudCg9CiJib3R0b20iKS50aWNrUGFk
ZGluZyg1KSx1Lm9yaWVudCgibGVmdCIpLGEub3JpZW50KCJyaWdodCIpLG8ub3JpZW50KCJib3R0
bz0KbSIpLnRpY2tQYWRkaW5nKDUpLGYub3JpZW50KCJsZWZ0IiksbC5vcmllbnQoInJpZ2h0Iik7
dmFyIEg9M0RmdW5jdGlvbihuLHIpPQp7UyYmKG4ucG9pbnRJbmRleCs9M0RNYXRoLmNlaWwoU1sw
XSkpO3ZhciBpPTNEbi5wb3NbMF0rKHIub2Zmc2V0TGVmdHx8MCksbz0KPTNEbi5wb3NbMV0rKHIu
b2Zmc2V0VG9wfHwwKSxmPTNEcy50aWNrRm9ybWF0KCkodC54KCkobi5wb2ludCxuLnBvaW50SW5k
ZXgpPQopLGw9M0Qobi5zZXJpZXMuYmFyP3U6YSkudGlja0Zvcm1hdCgpKHQueSgpKG4ucG9pbnQs
bi5wb2ludEluZGV4KSksYz0zRE4obi49CnNlcmllcy5rZXksZixsLG4sQik7ZS50b29sdGlwLnNo
b3coW2ksb10sYyxuLnZhbHVlPDA/Im4iOiJzIixudWxsLHIpfTtyZXR1cj0KbiB0LmRpc3BhdGNo
Lm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9z
WzBdK3AuPQpsZWZ0LGUucG9zWzFdK3AudG9wXSxELnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRj
aC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2w9CnRpcCIsZnVuY3Rpb24oZSl7RC50b29sdGlwSGlk
ZShlKX0pLHIuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcD0KIixmdW5jdGlv
bihlKXtlLnBvcz0zRFtlLnBvc1swXStwLmxlZnQsZS5wb3NbMV0rcC50b3BdLEQudG9vbHRpcFNo
b3coZSl9KSxyPQouZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlv
bihlKXtELnRvb2x0aXBIaWRlKGUpfSksRC5vbig9CiJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oKXtU
JiZlLnRvb2x0aXAuY2xlYW51cCgpfSksQi5kaXNwYXRjaD0zREQsQi5sZWdlbmQ9Cj0zRGMsQi5s
aW5lcz0zRHQsQi5saW5lczI9M0RuLEIuYmFycz0zRHIsQi5iYXJzMj0zRGksQi54QXhpcz0zRHMs
Qi54MkF4aXM9Cj0zRG8sQi55MUF4aXM9M0R1LEIueTJBeGlzPTNEYSxCLnkzQXhpcz0zRGYsQi55
NEF4aXM9M0RsLGQzLnJlYmluZChCLHQsImRlZj0KaW5lZCIsInNpemUiLCJjbGlwVm9yb25vaSIs
ImludGVycG9sYXRlIiksQi5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iPQppbmQoQiks
Qi54PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9M0RlLHQueChlKSxy
LngoZSksQik6eX09CixCLnk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
Yj0zRGUsdC55KGUpLHIueShlKSxCKTpifSxCLm1hcj0KZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHAudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluPQplZCI/
ZS50b3A6cC50b3AscC5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2Uucmln
aHQ6cC5yaWdodCxwLmI9Cm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2Uu
Ym90dG9tOnAuYm90dG9tLHAubGVmdD0zRHR5cGVvZiBlLj0KbGVmdCE9M0QidW5kZWZpbmVkIj9l
LmxlZnQ6cC5sZWZ0LEIpOnB9LEIud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lPQpu
dHMubGVuZ3RoPyh2PTNEZSxCKTp2fSxCLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhtPQo9M0RlLEIpOm19LEIuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8odz0zRGUudXRpbHMuZ2V0Q289Cmxvcih0KSxjLmNvbG9yKHcpLEIp
Ond9LEIuc2hvd0xlZ2VuZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPz0K
KEU9M0RlLEIpOkV9LEIudG9vbHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oVD0zRGUsQik6VH0sPQpCLnRvb2x0aXBDb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KE49M0RlLEIpOk59LEIubm9EYXQ9CmE9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oXz0zRGUsQik6X30sQi5icnVzaEV4dGVudD0zRGZ1bmN0
aT0Kb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHg9M0RlLEIpOnh9LEJ9LGUubW9kZWxz
Lm11bHRpQmFyPTNEZnVuY3Rpb24oPQope2Z1bmN0aW9uIEMoZSl7cmV0dXJuIGUuZWFjaChmdW5j
dGlvbihlKXt2YXIgZz0zRG4tdC5sZWZ0LXQucmlnaHQsQz0zRHItdC49CnRvcC10LmJvdHRvbSxr
PTNEZDMuc2VsZWN0KHRoaXMpO2QmJmUubGVuZ3RoJiYoZD0zRFt7dmFsdWVzOmVbMF0udmFsdWVz
Lm1hcD0KKGZ1bmN0aW9uKGUpe3JldHVybnt4OmUueCx5OjAsc2VyaWVzOmUuc2VyaWVzLHNpemU6
LjAxfX0pfV0pLGMmJihlPTNEZDMubGF5PQpvdXQuc3RhY2soKS5vZmZzZXQoaCkudmFsdWVzKGZ1
bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlc30pLnkoYSkoIWUubGVuZ3RoJiY9CmQ/ZDplKSksZS5m
b3JFYWNoKGZ1bmN0aW9uKGUsdCl7ZS52YWx1ZXMuZm9yRWFjaChmdW5jdGlvbihlKXtlLnNlcmll
cz0zRHR9KT0KfSksYyYmZVswXS52YWx1ZXMubWFwKGZ1bmN0aW9uKHQsbil7dmFyIHI9M0QwLGk9
M0QwO2UubWFwKGZ1bmN0aW9uKGUpe3ZhciB0PQo9M0RlLnZhbHVlc1tuXTt0LnNpemU9M0RNYXRo
LmFicyh0LnkpLHQueTwwPyh0LnkxPTNEaSxpLT0zRHQuc2l6ZSk6KHQueTE9M0Q9CnQuc2l6ZSty
LHIrPTNEdC5zaXplKX0pfSk7dmFyIEw9M0R5JiZiP1tdOmUubWFwKGZ1bmN0aW9uKGUpe3JldHVy
biBlLnZhbHVlcz0KLm1hcChmdW5jdGlvbihlLHQpe3JldHVybnt4OnUoZSx0KSx5OmEoZSx0KSx5
MDplLnkwLHkxOmUueTF9fSl9KTtpLmRvbWFpbih5PQp8fGQzLm1lcmdlKEwpLm1hcChmdW5jdGlv
bihlKXtyZXR1cm4gZS54fSkpLnJhbmdlQmFuZHMod3x8WzAsZ10sUykscy5kb21haW49CihifHxk
My5leHRlbnQoZDMubWVyZ2UoTCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBjP2UueT4wP2UueTE6
ZS55MStlLnk6ZS55fT0KKS5jb25jYXQoZikpKS5yYW5nZShFfHxbQywwXSksaS5kb21haW4oKVsw
XT0zRD0zRD0zRGkuZG9tYWluKClbMV0mJihpLmRvbWFpPQpuKClbMF0/aS5kb21haW4oW2kuZG9t
YWluKClbMF0taS5kb21haW4oKVswXSouMDEsaS5kb21haW4oKVsxXStpLmRvbWFpbigpWzE9Cl0q
LjAxXSk6aS5kb21haW4oWy0xLDFdKSkscy5kb21haW4oKVswXT0zRD0zRD0zRHMuZG9tYWluKClb
MV0mJihzLmRvbWFpbigpWz0KMF0/cy5kb21haW4oW3MuZG9tYWluKClbMF0rcy5kb21haW4oKVsw
XSouMDEscy5kb21haW4oKVsxXS1zLmRvbWFpbigpWzFdKi4wPQoxXSk6cy5kb21haW4oWy0xLDFd
KSksVD0zRFR8fGksTj0zRE58fHM7dmFyIEE9M0RrLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LW09
CnVsdGliYXIiKS5kYXRhKFtlXSksTz0zREEuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFz
cyIsIm52ZDMgbnYtd3JhcCBudj0KLW11bHRpYmFyIiksTT0zRE8uYXBwZW5kKCJkZWZzIiksXz0z
RE8uYXBwZW5kKCJnIiksRD0zREEuc2VsZWN0KCJnIik7Xy5hcHBlPQpuZCgiZyIpLmF0dHIoImNs
YXNzIiwibnYtZ3JvdXBzIiksQS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0LmxlZnQr
Iiw9CiIrdC50b3ArIikiKSxNLmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIsIm52LWVkZ2Ut
Y2xpcC0iK28pLmFwcGVuZCgicmVjdD0KIiksQS5zZWxlY3QoIiNudi1lZGdlLWNsaXAtIitvKyIg
cmVjdCIpLmF0dHIoIndpZHRoIixnKS5hdHRyKCJoZWlnaHQiLEMpLEQuPQphdHRyKCJjbGlwLXBh
dGgiLGw/InVybCgjbnYtZWRnZS1jbGlwLSIrbysiKSI6IiIpO3ZhciBQPTNEQS5zZWxlY3QoIi5u
di1ncm89CnVwcyIpLnNlbGVjdEFsbCgiLm52LWdyb3VwIikuZGF0YShmdW5jdGlvbihlKXtyZXR1
cm4gZX0sZnVuY3Rpb24oZSx0KXtyZXR1cj0KbiB0fSk7UC5lbnRlcigpLmFwcGVuZCgiZyIpLnN0
eWxlKCJzdHJva2Utb3BhY2l0eSIsMWUtNikuc3R5bGUoImZpbGwtb3BhY2l0PQp5IiwxZS02KSxQ
LmV4aXQoKS5zZWxlY3RBbGwoInJlY3QubnYtYmFyIikuYXR0cigieSIsZnVuY3Rpb24oZSl7cmV0
dXJuIGM/Tig9CmUueTApOk4oMCl9KS5hdHRyKCJoZWlnaHQiLDApLnJlbW92ZSgpLFAuYXR0cigi
Y2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIj0KbnYtZ3JvdXAgbnYtc2VyaWVzLSIrdH0pLmNs
YXNzZWQoImhvdmVyIixmdW5jdGlvbihlKXtyZXR1cm4gZS5ob3Zlcn0pLnN0eWxlPQooImZpbGwi
LGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAoZSx0KX0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUs
dCl7cmV0dXJuIHA9CihlLHQpfSksUC5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDEpLnN0eWxlKCJm
aWxsLW9wYWNpdHkiLC43NSk7dmFyIEg9M0RQLnNlbD0KZWN0QWxsKCJyZWN0Lm52LWJhciIpLmRh
dGEoZnVuY3Rpb24odCl7cmV0dXJuIGQmJiFlLmxlbmd0aD9kLnZhbHVlczp0LnZhbHVlPQpzfSk7
SC5leGl0KCkucmVtb3ZlKCk7dmFyIEI9M0RILmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigi
Y2xhc3MiLGZ1bmN0aW89Cm4oZSx0KXtyZXR1cm4gYShlLHQpPDA/Im52LWJhciBuZWdhdGl2ZSI6
Im52LWJhciBwb3NpdGl2ZSJ9KS5hdHRyKCJ4IixmdW5jdD0KaW9uKHQsbixyKXtyZXR1cm4gYz8w
OnIqaS5yYW5nZUJhbmQoKS9lLmxlbmd0aH0pLmF0dHIoInkiLGZ1bmN0aW9uKGUpe3JldHVyPQpu
IE4oYz9lLnkwOjApfSkuYXR0cigiaGVpZ2h0IiwwKS5hdHRyKCJ3aWR0aCIsaS5yYW5nZUJhbmQo
KS8oYz8xOmUubGVuZ3RoKSk9Ci5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJu
InRyYW5zbGF0ZSgiK2kodShlLHQpKSsiLDApIn0pO0guc3R5bD0KZSgiZmlsbCIsZnVuY3Rpb24o
ZSx0LG4pe3JldHVybiBwKGUsbix0KX0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCxuKXty
PQpldHVybiBwKGUsbix0KX0pLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKHQsbil7ZDMuc2VsZWN0
KHRoaXMpLmNsYXNzZWQoImhvdmU9CnIiLCEwKSx4LmVsZW1lbnRNb3VzZW92ZXIoe3ZhbHVlOmEo
dCxuKSxwb2ludDp0LHNlcmllczplW3Quc2VyaWVzXSxwb3M6W2kodT0KKHQsbikpK2kucmFuZ2VC
YW5kKCkqKGM/ZS5sZW5ndGgvMjp0LnNlcmllcysuNSkvZS5sZW5ndGgscyhhKHQsbikrKGM/dC55
MDowPQopKV0scG9pbnRJbmRleDpuLHNlcmllc0luZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnR9KX0p
Lm9uKCJtb3VzZW91dCIsZnVuY3Rpb249Cih0LG4pe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJo
b3ZlciIsITEpLHguZWxlbWVudE1vdXNlb3V0KHt2YWx1ZTphKHQsbikscD0Kb2ludDp0LHNlcmll
czplW3Quc2VyaWVzXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpkMy5ldmVu
dH0pfSkuPQpvbigiY2xpY2siLGZ1bmN0aW9uKHQsbil7eC5lbGVtZW50Q2xpY2soe3ZhbHVlOmEo
dCxuKSxwb2ludDp0LHNlcmllczplW3Quc2U9CnJpZXNdLHBvczpbaSh1KHQsbikpK2kucmFuZ2VC
YW5kKCkqKGM/ZS5sZW5ndGgvMjp0LnNlcmllcysuNSkvZS5sZW5ndGgscyhhKD0KdCxuKSsoYz90
LnkwOjApKV0scG9pbnRJbmRleDpuLHNlcmllc0luZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnR9KSxk
My5ldmVudC5zPQp0b3BQcm9wYWdhdGlvbigpfSkub24oImRibGNsaWNrIixmdW5jdGlvbih0LG4p
e3guZWxlbWVudERibENsaWNrKHt2YWx1ZTphKHQ9CixuKSxwb2ludDp0LHNlcmllczplW3Quc2Vy
aWVzXSxwb3M6W2kodSh0LG4pKStpLnJhbmdlQmFuZCgpKihjP2UubGVuZ3RoLzI6dD0KLnNlcmll
cysuNSkvZS5sZW5ndGgscyhhKHQsbikrKGM/dC55MDowKSldLHBvaW50SW5kZXg6bixzZXJpZXNJ
bmRleDp0LnNlcmllPQpzLGU6ZDMuZXZlbnR9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0p
LEguYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmU9CnR1cm4gYShlLHQpPDA/Im52LWJhciBu
ZWdhdGl2ZSI6Im52LWJhciBwb3NpdGl2ZSJ9KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aT0Kb24o
ZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIraSh1KGUsdCkpKyIsMCkifSksdiYmKG18fChtPTNEZS5t
YXAoZnVuY3Rpb24oKXtyPQpldHVybiEwfSkpLEguc3R5bGUoImZpbGwiLGZ1bmN0aW9uKGUsdCxu
KXtyZXR1cm4gZDMucmdiKHYoZSx0KSkuZGFya2VyKG0ubWE9CnAoZnVuY3Rpb24oZSx0KXtyZXR1
cm4gdH0pLmZpbHRlcihmdW5jdGlvbihlLHQpe3JldHVybiFtW3RdfSlbbl0pLnRvU3RyaW5nKD0K
KX0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZDMucmdiKHYoZSx0KSku
ZGFya2VyKG0ubWFwKGZ1bmN0PQppb24oZSx0KXtyZXR1cm4gdH0pLmZpbHRlcihmdW5jdGlvbihl
LHQpe3JldHVybiFtW3RdfSlbbl0pLnRvU3RyaW5nKCl9KSksYz89CkguYXR0cigieSIsZnVuY3Rp
b24oZSx0KXtyZXR1cm4gcyhjP2UueTE6MCl9KS5hdHRyKCJoZWlnaHQiLGZ1bmN0aW9uKGUsdCl7
cj0KZXR1cm4gTWF0aC5tYXgoTWF0aC5hYnMocyhlLnkrKGM/ZS55MDowKSktcyhjP2UueTA6MCkp
LDEpfSkuYXR0cigieCIsZnVuY3RpPQpvbih0LG4pe3JldHVybiBjPzA6dC5zZXJpZXMqaS5yYW5n
ZUJhbmQoKS9lLmxlbmd0aH0pLmF0dHIoIndpZHRoIixpLnJhbmdlQmE9Cm5kKCkvKGM/MTplLmxl
bmd0aCkpOkguYXR0cigieCIsZnVuY3Rpb24odCxuKXtyZXR1cm4gdC5zZXJpZXMqaS5yYW5nZUJh
bmQoKT0KL2UubGVuZ3RofSkuYXR0cigid2lkdGgiLGkucmFuZ2VCYW5kKCkvZS5sZW5ndGgpLmF0
dHIoInkiLGZ1bmN0aW9uKGUsdCl7cmV0PQp1cm4gYShlLHQpPDA/cygwKTpzKDApLXMoYShlLHQp
KTwxP3MoMCktMTpzKGEoZSx0KSl8fDB9KS5hdHRyKCJoZWlnaHQiLGZ1bmM9CnRpb24oZSx0KXty
ZXR1cm4gTWF0aC5tYXgoTWF0aC5hYnMocyhhKGUsdCkpLXMoMCkpLDEpfHwwfSksVD0zRGkuY29w
eSgpLE49Cj0zRHMuY29weSgpfSksQ312YXIgdD0zRHt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxl
ZnQ6MH0sbj0zRDk2MCxyPTNENTAwLGk9Cj0zRGQzLnNjYWxlLm9yZGluYWwoKSxzPTNEZDMuc2Nh
bGUubGluZWFyKCksbz0zRE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxZT0KNCksdT0zRGZ1bmN0
aW9uKGUpe3JldHVybiBlLnh9LGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS55fSxmPTNEWzBdLGw9
M0QhMCxjPQo9M0QhMSxoPTNEInplcm8iLHA9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLGQ9M0Qh
MSx2PTNEbnVsbCxtLGc9M0QxMjAwLHksYiw9CncsRSxTPTNELjEseD0zRGQzLmRpc3BhdGNoKCJj
aGFydENsaWNrIiwiZWxlbWVudENsaWNrIiwiZWxlbWVudERibENsaWNrIiwiZT0KbGVtZW50TW91
c2VvdmVyIiwiZWxlbWVudE1vdXNlb3V0IiksVCxOO3JldHVybiBDLmRpc3BhdGNoPTNEeCxDLm9w
dGlvbnM9M0RlPQoudXRpbHMub3B0aW9uc0Z1bmMuYmluZChDKSxDLng9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGU9CixDKTp1fSxDLnk9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0zRGUsQyk6YX0sQy5tYXJnaW49M0RmdT0KbmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5k
ZWZpbmVkIj9lLnRvPQpwOnQudG9wLHQucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZp
bmVkIj9lLnJpZ2h0OnQucmlnaHQsdC5ib3R0b209M0Q9CnR5cGVvZiBlLmJvdHRvbSE9M0QidW5k
ZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHRvbSx0LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRD0KInVu
ZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxDKTp0fSxDLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5nPQp0aD8obj0zRGUsQyk6bn0sQy5oZWlnaHQ9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0zRGUsQyk6cn09CixDLnhTY2FsZT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPTNEZSxDKTppfSxDLnlTY2FsZT0zRGZ1bj0K
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLEMpOnN9LEMueERvbWFpbj0z
RGZ1bmN0aW9uKGUpe3JldHVyPQpuIGFyZ3VtZW50cy5sZW5ndGg/KHk9M0RlLEMpOnl9LEMueURv
bWFpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGU9Cm5ndGg/KGI9M0RlLEMpOmJ9
LEMueFJhbmdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9M0RlLEMp
Oj0Kd30sQy55UmFuZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT0z
RGUsQyk6RX0sQy5mb3JjZVk9M0RmPQp1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhmPTNEZSxDKTpmfSxDLnN0YWNrZWQ9M0RmdW5jdGlvbihlKXtyZXQ9CnVybiBhcmd1bWVudHMu
bGVuZ3RoPyhjPTNEZSxDKTpjfSxDLnN0YWNrT2Zmc2V0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZT0KbnRzLmxlbmd0aD8oaD0zRGUsQyk6aH0sQy5jbGlwRWRnZT0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPQo9M0RlLEMpOmx9LEMuY29sb3I9M0RmdW5jdGlvbih0
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUudXRpbHMuZ2V0Q289Cmxvcih0KSxDKTpw
fSxDLmJhckNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9M0Rl
LnV0aWxzLj0KZ2V0Q29sb3IodCksQyk6dn0sQy5kaXNhYmxlZD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhtPTNEZSxDPQopOm19LEMuaWQ9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsQyk6b30sQy5oaWRlYWJsZT0zRGY9CnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9M0RlLEMpOmR9LEMuZGVsYXk9M0RmdW5jdGlv
bihlKXtyZXR1cj0KbiBhcmd1bWVudHMubGVuZ3RoPyhnPTNEZSxDKTpnfSxDLmdyb3VwU3BhY2lu
Zz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVuPQp0cy5sZW5ndGg/KFM9M0RlLEMpOlN9LEN9
LGUubW9kZWxzLm11bHRpQmFyQ2hhcnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIEEoZSk9CntyZXR1
cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBiPTNEZDMuc2VsZWN0KHRoaXMpLGs9M0R0aGlzLE89
M0QodXx8cGFyc2VJbj0KdChiLnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS1vLmxlZnQtby5yaWdodCxN
PTNEKGF8fHBhcnNlSW50KGIuc3R5bGUoImhlaWdodCIpPQopfHw0MDApLW8udG9wLW8uYm90dG9t
O0EudXBkYXRlPTNEZnVuY3Rpb24oKXtiLmNhbGwoQSl9LEEuY29udGFpbmVyPTNEdGhpcyw9ClMu
ZGlzYWJsZWQ9M0RlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlzYWJsZWR9KTtpZigheCl7
dmFyIF87eD0zRHt9O2Zvcj0KKF8gaW4gUylTW19daW5zdGFuY2VvZiBBcnJheT94W19dPTNEU1tf
XS5zbGljZSgwKTp4W19dPTNEU1tfXX1pZighZXx8IWUubGVuPQpndGh8fCFlLmZpbHRlcihmdW5j
dGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubGVuZ3RofSkubGVuZ3RoKXt2YXIgRD0zRGIuc2VsZWM9
CnRBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFtUXSk7cmV0dXJuIEQuZW50ZXIoKS5hcHBlbmQoInRl
eHQiKS5hdHRyKCJjbGFzcyIsIj0KbnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2VtIiku
c3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiksRC5hdHRyKCJ4PQoiLG8ubGVmdCtPLzIpLmF0
dHIoInkiLG8udG9wK00vMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLEF9Yi5zZWxlY3RB
bGw9CigiLm52LW5vRGF0YSIpLnJlbW92ZSgpLHc9M0R0LnhTY2FsZSgpLEU9M0R0LnlTY2FsZSgp
O3ZhciBQPTNEYi5zZWxlY3RBbGwoIj0KZy5udi13cmFwLm52LW11bHRpQmFyV2l0aExlZ2VuZCIp
LmRhdGEoW2VdKSxIPTNEUC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoPQoiY2xhc3MiLCJudmQz
IG52LXdyYXAgbnYtbXVsdGlCYXJXaXRoTGVnZW5kIikuYXBwZW5kKCJnIiksQj0zRFAuc2VsZWN0
KCJnIik9CjtILmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksSC5hcHBl
bmQoImciKS5hdHRyKCJjbGFzcyIsIm52LT0KeSBudi1heGlzIiksSC5hcHBlbmQoImciKS5hdHRy
KCJjbGFzcyIsIm52LWJhcnNXcmFwIiksSC5hcHBlbmQoImciKS5hdHRyKCJjPQpsYXNzIiwibnYt
bGVnZW5kV3JhcCIpLEguYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1jb250cm9sc1dyYXAi
KSxjJiYoaS49CndpZHRoKE8tQygpKSx0LmJhckNvbG9yKCkmJmUuZm9yRWFjaChmdW5jdGlvbihl
LHQpe2UuY29sb3I9M0RkMy5yZ2IoIiNjY2MiKT0KLmRhcmtlcih0KjEuNSkudG9TdHJpbmcoKX0p
LEIuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmRhdHVtKGUpLmNhbGwoaSksby50PQpvcCE9M0Rp
LmhlaWdodCgpJiYoby50b3A9M0RpLmhlaWdodCgpLE09M0QoYXx8cGFyc2VJbnQoYi5zdHlsZSgi
aGVpZ2h0IikpfHw9CjQwMCktby50b3Atby5ib3R0b20pLEIuc2VsZWN0KCIubnYtbGVnZW5kV3Jh
cCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZT0KKCIrQygpKyIsIisgLW8udG9wKyIpIikp
O2lmKGwpe3ZhciBqPTNEW3trZXk6Ikdyb3VwZWQiLGRpc2FibGVkOnQuc3RhY2tlZCgpPQp9LHtr
ZXk6IlN0YWNrZWQiLGRpc2FibGVkOiF0LnN0YWNrZWQoKX1dO3Mud2lkdGgoQygpKS5jb2xvcihb
IiM0NDQiLCIjNDQ0Iiw9CiIjNDQ0Il0pLEIuc2VsZWN0KCIubnYtY29udHJvbHNXcmFwIikuZGF0
dW0oaikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKD0KMCwiKyAtby50b3ArIikiKS5jYWxs
KHMpfVAuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrby5sZWZ0KyIsIitvLnRvcCsiPQop
IiksZCYmQi5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xh
dGUoIitPKyIsMCkiKSx0LmQ9CmlzYWJsZWQoZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlz
YWJsZWR9KSkud2lkdGgoTykuaGVpZ2h0KE0pLmNvbG9yKGUubT0KYXAoZnVuY3Rpb24oZSx0KXty
ZXR1cm4gZS5jb2xvcnx8ZihlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0u
PQpkaXNhYmxlZH0pKTt2YXIgRj0zREIuc2VsZWN0KCIubnYtYmFyc1dyYXAiKS5kYXR1bShlLmZp
bHRlcihmdW5jdGlvbihlKXtyZXQ9CnVybiFlLmRpc2FibGVkfSkpO0YuY2FsbCh0KTtpZihoKXtu
LnNjYWxlKHcpLnRpY2tzKE8vMTAwKS50aWNrU2l6ZSgtTSwwKSxCLj0Kc2VsZWN0KCIubnYteC5u
di1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitFLnJhbmdlKClbMF0rIiki
KSxCPQouc2VsZWN0KCIubnYteC5udi1heGlzIikuY2FsbChuKTt2YXIgST0zREIuc2VsZWN0KCIu
bnYteC5udi1heGlzID4gZyIpLnNlbGU9CmN0QWxsKCJnIik7SS5zZWxlY3RBbGwoImxpbmUsIHRl
eHQiKS5zdHlsZSgib3BhY2l0eSIsMSk7aWYobSl7dmFyIHE9M0RmdW5jdD0KaW9uKGUsdCl7cmV0
dXJuInRyYW5zbGF0ZSgiK2UrIiwiK3QrIikifSxSPTNENSxVPTNEMTc7SS5zZWxlY3RBbGwoInRl
eHQiKS5hPQp0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0LG4pe3JldHVybiBxKDAsbiUyPTNE
PTNEMD9SOlUpfSk7dmFyIHo9M0RkMy5zZWw9CmVjdEFsbCgiLm52LXgubnYtYXhpcyAubnYtd3Jh
cCBnIGcgdGV4dCIpWzBdLmxlbmd0aDtCLnNlbGVjdEFsbCgiLm52LXgubnYtYT0KeGlzIC5udi1h
eGlzTWF4TWluIHRleHQiKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHEo
MCx0PTNEPTNEPQo9M0QwfHx6JTIhPTNEPTNEMD9VOlIpfSl9diYmSS5maWx0ZXIoZnVuY3Rpb24o
dCxuKXtyZXR1cm4gbiVNYXRoLmNlaWwoZVswXS49CnZhbHVlcy5sZW5ndGgvKE8vMTAwKSkhPTNE
PTNEMH0pLnNlbGVjdEFsbCgidGV4dCwgbGluZSIpLnN0eWxlKCJvcGFjaXR5IiwwKT0KLGcmJkku
c2VsZWN0QWxsKCIudGljayB0ZXh0IikuYXR0cigidHJhbnNmb3JtIiwicm90YXRlKCIrZysiIDAs
MCkiKS5zdHlsZSgiPQp0ZXh0LWFuY2hvciIsZz4wPyJzdGFydCI6ImVuZCIpLEIuc2VsZWN0KCIu
bnYteC5udi1heGlzIikuc2VsZWN0QWxsKCJnLm52LWE9Cnhpc01heE1pbiB0ZXh0Iikuc3R5bGUo
Im9wYWNpdHkiLDEpfXAmJihyLnNjYWxlKEUpLnRpY2tzKE0vMzYpLnRpY2tTaXplKC1PLD0KMCks
Qi5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5jYWxsKHIpKSxpLmRpc3BhdGNoLm9uKCJzdGF0ZUNo
YW5nZSIsZnVuY3Rpb24oPQplKXtTPTNEZSxOLnN0YXRlQ2hhbmdlKFMpLEEudXBkYXRlKCl9KSxz
LmRpc3BhdGNoLm9uKCJsZWdlbmRDbGljayIsZnVuY3Rpb249CihlLG4pe2lmKCFlLmRpc2FibGVk
KXJldHVybjtqPTNEai5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGlzYWJsZWQ9M0QhMCxlfT0K
KSxlLmRpc2FibGVkPTNEITE7c3dpdGNoKGUua2V5KXtjYXNlIkdyb3VwZWQiOnQuc3RhY2tlZCgh
MSk7YnJlYWs7Y2FzZSJTdGFjPQprZWQiOnQuc3RhY2tlZCghMCl9Uy5zdGFja2VkPTNEdC5zdGFj
a2VkKCksTi5zdGF0ZUNoYW5nZShTKSxBLnVwZGF0ZSgpfSksTi49Cm9uKCJ0b29sdGlwU2hvdyIs
ZnVuY3Rpb24oZSl7eSYmTChlLGsucGFyZW50Tm9kZSl9KSxOLm9uKCJjaGFuZ2VTdGF0ZSIsZnVu
Yz0KdGlvbihuKXt0eXBlb2Ygbi5kaXNhYmxlZCE9M0QidW5kZWZpbmVkIiYmKGUuZm9yRWFjaChm
dW5jdGlvbihlLHQpe2UuZGlzYWJsPQplZD0zRG4uZGlzYWJsZWRbdF19KSxTLmRpc2FibGVkPTNE
bi5kaXNhYmxlZCksdHlwZW9mIG4uc3RhY2tlZCE9M0QidW5kZWZpbmU9CmQiJiYodC5zdGFja2Vk
KG4uc3RhY2tlZCksUy5zdGFja2VkPTNEbi5zdGFja2VkKSxBLnVwZGF0ZSgpfSl9KSxBfXZhciB0
PTNEZT0KLm1vZGVscy5tdWx0aUJhcigpLG49M0RlLm1vZGVscy5heGlzKCkscj0zRGUubW9kZWxz
LmF4aXMoKSxpPTNEZS5tb2RlbHMubGVnPQplbmQoKSxzPTNEZS5tb2RlbHMubGVnZW5kKCksbz0z
RHt0b3A6MzAscmlnaHQ6MjAsYm90dG9tOjUwLGxlZnQ6NjB9LHU9M0RudWw9CmwsYT0zRG51bGws
Zj0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCksbD0zRCEwLGM9M0QhMCxoPTNEITAscD0zRCEwLGQ9
M0QhMSx2PQo9M0QhMCxtPTNEITEsZz0zRDAseT0zRCEwLGI9M0RmdW5jdGlvbihlLHQsbixyLGkp
e3JldHVybiI8aDM+IitlKyI8L2gzPiIrIjw9CnA+IituKyIgb24gIit0KyI8L3A+In0sdyxFLFM9
M0R7c3RhY2tlZDohMX0seD0zRG51bGwsVD0zRCJObyBEYXRhIEF2YWlsYWJsZT0KLiIsTj0zRGQz
LmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdGVDaGFuZ2UiLCJjaGFu
Z2VTdGF0ZSIpPQosQz0zRGZ1bmN0aW9uKCl7cmV0dXJuIGw/MTgwOjB9LGs9M0QwO3Quc3RhY2tl
ZCghMSksbi5vcmllbnQoImJvdHRvbSIpLnRpY2s9ClBhZGRpbmcoNykuaGlnaGxpZ2h0WmVybygh
MCkuc2hvd01heE1pbighMSkudGlja0Zvcm1hdChmdW5jdGlvbihlKXtyZXR1cm4gZT0KfSksci5v
cmllbnQoZD8icmlnaHQiOiJsZWZ0IikudGlja0Zvcm1hdChkMy5mb3JtYXQoIiwuMWYiKSkscy51
cGRhdGVTdGF0ZSghPQoxKTt2YXIgTD0zRGZ1bmN0aW9uKGkscyl7dmFyIG89M0RpLnBvc1swXSso
cy5vZmZzZXRMZWZ0fHwwKSx1PTNEaS5wb3NbMV0rKHM9Ci5vZmZzZXRUb3B8fDApLGE9M0RuLnRp
Y2tGb3JtYXQoKSh0LngoKShpLnBvaW50LGkucG9pbnRJbmRleCkpLGY9M0RyLnRpY2tGbz0Kcm1h
dCgpKHQueSgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksbD0zRGIoaS5zZXJpZXMua2V5LGEsZixp
LEEpO2UudG9vbHRpcC5zPQpob3coW28sdV0sbCxpLnZhbHVlPDA/Im4iOiJzIixudWxsLHMpfTty
ZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Y9CmVyLnRvb2x0aXAiLGZ1bmN0aW9u
KGUpe2UucG9zPTNEW2UucG9zWzBdK28ubGVmdCxlLnBvc1sxXStvLnRvcF0sTi50b29sdGlwUz0K
aG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9u
KGUpe04udG9vbHRpcEhpZGUoPQplKX0pLE4ub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbigpe3km
JmUudG9vbHRpcC5jbGVhbnVwKCl9KSxBLmRpc3BhdGNoPTNETiw9CkEubXVsdGliYXI9M0R0LEEu
bGVnZW5kPTNEaSxBLnhBeGlzPTNEbixBLnlBeGlzPTNEcixkMy5yZWJpbmQoQSx0LCJ4IiwieSIs
Ij0KeERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJmb3JjZVgiLCJmb3JjZVki
LCJjbGlwRWRnZSIsImlkIiwic3RhPQpja2VkIiwic3RhY2tPZmZzZXQiLCJkZWxheSIsImJhckNv
bG9yIiwiZ3JvdXBTcGFjaW5nIiksQS5vcHRpb25zPTNEZS51dGlscy49Cm9wdGlvbnNGdW5jLmJp
bmQoQSksQS5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oby50
b3A9Cj0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDpvLnRvcCxvLnJpZ2h0PTNE
dHlwZW9mIGUucmlnaHQhPTNEInVuZD0KZWZpbmVkIj9lLnJpZ2h0Om8ucmlnaHQsby5ib3R0b209
M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206PQpvLmJvdHRvbSxvLmxl
ZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDpvLmxlZnQsQSk6b30sQS53
aWR0aD0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RlLEEpOnV9
LEEuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7PQpyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0zRGUs
QSk6YX0sQS5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHM9Ci5sZW5ndGg/KGY9
M0RlLnV0aWxzLmdldENvbG9yKHQpLGkuY29sb3IoZiksQSk6Zn0sQS5zaG93Q29udHJvbHM9M0Rm
dW5jdGlvbj0KKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZSxBKTpsfSxBLnNob3dM
ZWdlbmQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gPQphcmd1bWVudHMubGVuZ3RoPyhjPTNEZSxBKTpj
fSxBLnNob3dYQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGU9Cm5ndGg/KGg9
M0RlLEEpOmh9LEEuc2hvd1lBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHA9M0RlLD0KQSk6cH0sQS5yaWdodEFsaWduWUF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oZD0zRGUsci5vcmllPQpudChlPyJyaWdodCI6ImxlZnQiKSxBKTpk
fSxBLnJlZHVjZVhUaWNrcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGU9Cm5ndGg/
KHY9M0RlLEEpOnZ9LEEucm90YXRlTGFiZWxzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGc9Cj0zRGUsQSk6Z30sQS5zdGFnZ2VyTGFiZWxzPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09M0RlLEEpOj0KbX0sQS50b29sdGlwPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9M0RlLEEpOmJ9LEEudG9vbHRpcHM9Cj0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PTNEZSxBKTp5fSxBLnRvb2x0aXBD
b250ZW50PTNEZnVuYz0KdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0zRGUsQSk6
Yn0sQS5zdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhPQpyZ3VtZW50cy5sZW5ndGg/KFM9M0Rl
LEEpOlN9LEEuZGVmYXVsdFN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy49Cmxl
bmd0aD8oeD0zRGUsQSk6eH0sQS5ub0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oVD0zRGUsQT0KKTpUfSxBLnRyYW5zaXRpb25EdXJhdGlvbj0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhrPTNEZSxBKTprPQp9LEF9LGUubW9kZWxzLm11bHRp
QmFySG9yaXpvbnRhbD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gQyhlKXtyZXR1cm4gZS5lYWNoKGY9
CnVuY3Rpb24oZSl7dmFyIGk9M0RuLXQubGVmdC10LnJpZ2h0LHk9M0RyLXQudG9wLXQuYm90dG9t
LEM9M0RkMy5zZWxlY3QodGhpcz0KKTtwJiYoZT0zRGQzLmxheW91dC5zdGFjaygpLm9mZnNldCgi
emVybyIpLnZhbHVlcyhmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1PQplc30pLnkoYSkoZSkpLGUu
Zm9yRWFjaChmdW5jdGlvbihlLHQpe2UudmFsdWVzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5zZXJp
ZXM9Cj0zRHR9KX0pLHAmJmVbMF0udmFsdWVzLm1hcChmdW5jdGlvbih0LG4pe3ZhciByPTNEMCxp
PTNEMDtlLm1hcChmdW5jdGlvbihlKT0Ke3ZhciB0PTNEZS52YWx1ZXNbbl07dC5zaXplPTNETWF0
aC5hYnModC55KSx0Lnk8MD8odC55MT0zRGktdC5zaXplLGktPTNEdC5zPQppemUpOih0LnkxPTNE
cixyKz0zRHQuc2l6ZSl9KX0pO3ZhciBrPTNEYiYmdz9bXTplLm1hcChmdW5jdGlvbihlKXtyZXR1
cm4gZS49CnZhbHVlcy5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm57eDp1KGUsdCkseTphKGUsdCks
eTA6ZS55MCx5MTplLnkxfX0pfSk7cy5kbz0KbWFpbihifHxkMy5tZXJnZShrKS5tYXAoZnVuY3Rp
b24oZSl7cmV0dXJuIGUueH0pKS5yYW5nZUJhbmRzKEV8fFswLHldLC4xKSxvPQouZG9tYWluKHd8
fGQzLmV4dGVudChkMy5tZXJnZShrKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHA/ZS55PjA/ZS55
MStlLnk6ZS49CnkxOmUueX0pLmNvbmNhdChmKSkpLGQmJiFwP28ucmFuZ2UoU3x8W28uZG9tYWlu
KClbMF08MD9tOjAsaS0oby5kb21haW4oKVsxXT0KPjA/bTowKV0pOm8ucmFuZ2UoU3x8WzAsaV0p
LFQ9M0RUfHxzLE49M0ROfHxkMy5zY2FsZS5saW5lYXIoKS5kb21haW4oby5kb21hPQppbigpKS5y
YW5nZShbbygwKSxvKDApXSk7dmFyIEw9M0RkMy5zZWxlY3QodGhpcykuc2VsZWN0QWxsKCJnLm52
LXdyYXAubnYtbXU9Cmx0aWJhckhvcml6b250YWwiKS5kYXRhKFtlXSksQT0zREwuZW50ZXIoKS5h
cHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbj0Kdi13cmFwIG52LW11bHRpYmFySG9yaXpv
bnRhbCIpLE89M0RBLmFwcGVuZCgiZGVmcyIpLE09M0RBLmFwcGVuZCgiZyIpLF89M0RMPQouc2Vs
ZWN0KCJnIik7TS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWdyb3VwcyIpLEwuYXR0cigi
dHJhbnNmb3JtIiwidHI9CmFuc2xhdGUoIit0LmxlZnQrIiwiK3QudG9wKyIpIik7dmFyIEQ9M0RM
LnNlbGVjdCgiLm52LWdyb3VwcyIpLnNlbGVjdEFsbCgiLj0KbnYtZ3JvdXAiKS5kYXRhKGZ1bmN0
aW9uKGUpe3JldHVybiBlfSxmdW5jdGlvbihlLHQpe3JldHVybiB0fSk7RC5lbnRlcigpLmFwPQpw
ZW5kKCJnIikuc3R5bGUoInN0cm9rZS1vcGFjaXR5IiwxZS02KS5zdHlsZSgiZmlsbC1vcGFjaXR5
IiwxZS02KSxELmV4aXQoKS49CnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMWUtNikuc3R5bGUoImZp
bGwtb3BhY2l0eSIsMWUtNikucmVtb3ZlKCksRC5hdHRyKCJjbD0KYXNzIixmdW5jdGlvbihlLHQp
e3JldHVybiJudi1ncm91cCBudi1zZXJpZXMtIit0fSkuY2xhc3NlZCgiaG92ZXIiLGZ1bmN0aW9u
PQooZSl7cmV0dXJuIGUuaG92ZXJ9KS5zdHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4g
bChlLHQpfSkuc3R5bGUoInN0cm89CmtlIixmdW5jdGlvbihlLHQpe3JldHVybiBsKGUsdCl9KSxE
LnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMSkuc3R5bGUoImZpbGwtbz0KcGFjaXR5IiwuNzUpO3Zh
ciBQPTNERC5zZWxlY3RBbGwoImcubnYtYmFyIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZS52
YWx1PQplc30pO1AuZXhpdCgpLnJlbW92ZSgpO3ZhciBIPTNEUC5lbnRlcigpLmFwcGVuZCgiZyIp
LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Q9Cmlvbih0LG4scil7cmV0dXJuInRyYW5zbGF0ZSgiK04o
cD90LnkwOjApKyIsIisocD8wOnIqcy5yYW5nZUJhbmQoKS9lLmxlbmd0aD0KK3ModSh0LG4pKSkr
IikifSk7SC5hcHBlbmQoInJlY3QiKS5hdHRyKCJ3aWR0aCIsMCkuYXR0cigiaGVpZ2h0IixzLnJh
bmdlQmFuPQpkKCkvKHA/MTplLmxlbmd0aCkpLFAub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24odCxu
KXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCg9CiJob3ZlciIsITApLHguZWxlbWVudE1vdXNlb3Zl
cih7dmFsdWU6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvcz0KOltvKGEodCxu
KSsocD90LnkwOjApKSxzKHUodCxuKSkrcy5yYW5nZUJhbmQoKSoocD9lLmxlbmd0aC8yOnQuc2Vy
aWVzKy41KS9lPQoubGVuZ3RoXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpk
My5ldmVudH0pfSkub24oIm1vdXNlb3V0IixmdW49CmN0aW9uKHQsbil7ZDMuc2VsZWN0KHRoaXMp
LmNsYXNzZWQoImhvdmVyIiwhMSkseC5lbGVtZW50TW91c2VvdXQoe3ZhbHVlOmEodD0KLG4pLHBv
aW50OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvaW50SW5kZXg6bixzZXJpZXNJbmRleDp0LnNlcmll
cyxlOmQzLmV2ZW50PQp9KX0pLm9uKCJjbGljayIsZnVuY3Rpb24odCxuKXt4LmVsZW1lbnRDbGlj
ayh7dmFsdWU6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmU9Clt0LnNlcmllc10scG9zOltzKHUodCxu
KSkrcy5yYW5nZUJhbmQoKSoocD9lLmxlbmd0aC8yOnQuc2VyaWVzKy41KS9lLmxlbmd0aD0KLG8o
YSh0LG4pKyhwP3QueTA6MCkpXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpk
My5ldmVudH0pLGQzLmV2PQplbnQuc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiZGJsY2xpY2siLGZ1
bmN0aW9uKHQsbil7eC5lbGVtZW50RGJsQ2xpY2soe3ZhbHU9CmU6YSh0LG4pLHBvaW50OnQsc2Vy
aWVzOmVbdC5zZXJpZXNdLHBvczpbcyh1KHQsbikpK3MucmFuZ2VCYW5kKCkqKHA/ZS5sZW5ndD0K
aC8yOnQuc2VyaWVzKy41KS9lLmxlbmd0aCxvKGEodCxuKSsocD90LnkwOjApKV0scG9pbnRJbmRl
eDpuLHNlcmllc0luZGV4OnQuPQpzZXJpZXMsZTpkMy5ldmVudH0pLGQzLmV2ZW50LnN0b3BQcm9w
YWdhdGlvbigpfSksSC5hcHBlbmQoInRleHQiKSxkJiYhcD8oUC49CnNlbGVjdCgidGV4dCIpLmF0
dHIoInRleHQtYW5jaG9yIixmdW5jdGlvbihlLHQpe3JldHVybiBhKGUsdCk8MD8iZW5kIjoic3Rh
cj0KdCJ9KS5hdHRyKCJ5IixzLnJhbmdlQmFuZCgpLyhlLmxlbmd0aCoyKSkuYXR0cigiZHkiLCIu
MzJlbSIpLnRleHQoZnVuY3Rpb24oPQplLHQpe3JldHVybiBnKGEoZSx0KSl9KSxQLnNlbGVjdCgi
dGV4dCIpLmF0dHIoIngiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSw9CnQpPDA/LTQ6byhhKGUs
dCkpLW8oMCkrNH0pKTpQLnNlbGVjdEFsbCgidGV4dCIpLnRleHQoIiIpLHYmJiFwPyhILmFwcGVu
ZCgidD0KZXh0IikuY2xhc3NlZCgibnYtYmFyLWxhYmVsIiwhMCksUC5zZWxlY3QoInRleHQubnYt
YmFyLWxhYmVsIikuYXR0cigidGV4dC1hPQpuY2hvciIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShl
LHQpPDA/InN0YXJ0IjoiZW5kIn0pLmF0dHIoInkiLHMucmFuZ2VCYW5kKCk9Ci8oZS5sZW5ndGgq
MikpLmF0dHIoImR5IiwiLjMyZW0iKS50ZXh0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHUoZSx0KX0p
LFAuc2VsZT0KY3QoInRleHQubnYtYmFyLWxhYmVsIikuYXR0cigieCIsZnVuY3Rpb24oZSx0KXty
ZXR1cm4gYShlLHQpPDA/bygwKS1vKGEoZSx0PQopKSs0Oi00fSkpOlAuc2VsZWN0QWxsKCJ0ZXh0
Lm52LWJhci1sYWJlbCIpLnRleHQoIiIpLFAuYXR0cigiY2xhc3MiLGZ1bmN0aW89Cm4oZSx0KXty
ZXR1cm4gYShlLHQpPDA/Im52LWJhciBuZWdhdGl2ZSI6Im52LWJhciBwb3NpdGl2ZSJ9KSxjJiYo
aHx8KGg9M0RlLj0KbWFwKGZ1bmN0aW9uKCl7cmV0dXJuITB9KSksUC5zdHlsZSgiZmlsbCIsZnVu
Y3Rpb24oZSx0LG4pe3JldHVybiBkMy5yZ2IoYyhlPQosdCkpLmRhcmtlcihoLm1hcChmdW5jdGlv
bihlLHQpe3JldHVybiB0fSkuZmlsdGVyKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIWhbdF09Cn0pW25d
KS50b1N0cmluZygpfSkuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSx0LG4pe3JldHVybiBkMy5y
Z2IoYyhlLHQpKS5kYT0KcmtlcihoLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiB0fSkuZmlsdGVy
KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIWhbdF19KVtuXSkuPQp0b1N0cmluZygpfSkpLHA/UC5hdHRy
KCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiK28oZS55MSk9Cisi
LCIrcyh1KGUsdCkpKyIpIn0pLnNlbGVjdCgicmVjdCIpLmF0dHIoIndpZHRoIixmdW5jdGlvbihl
LHQpe3JldHVybiBNYXRoLj0KYWJzKG8oYShlLHQpK2UueTApLW8oZS55MCkpfSkuYXR0cigiaGVp
Z2h0IixzLnJhbmdlQmFuZCgpKTpQLmF0dHIoInRyYW5zZm9yPQptIixmdW5jdGlvbih0LG4pe3Jl
dHVybiJ0cmFuc2xhdGUoIisoYSh0LG4pPDA/byhhKHQsbikpOm8oMCkpKyIsIisodC5zZXJpZXM9
CipzLnJhbmdlQmFuZCgpL2UubGVuZ3RoK3ModSh0LG4pKSkrIikifSkuc2VsZWN0KCJyZWN0Iiku
YXR0cigiaGVpZ2h0IixzLnJhbj0KZ2VCYW5kKCkvZS5sZW5ndGgpLmF0dHIoIndpZHRoIixmdW5j
dGlvbihlLHQpe3JldHVybiBNYXRoLm1heChNYXRoLmFicyhvKGEoPQplLHQpKS1vKDApKSwxKX0p
LFQ9M0RzLmNvcHkoKSxOPTNEby5jb3B5KCl9KSxDfXZhciB0PTNEe3RvcDowLHJpZ2h0OjAsYm90
dG89Cm06MCxsZWZ0OjB9LG49M0Q5NjAscj0zRDUwMCxpPTNETWF0aC5mbG9vcihNYXRoLnJhbmRv
bSgpKjFlNCkscz0zRGQzLnNjYWxlLj0Kb3JkaW5hbCgpLG89M0RkMy5zY2FsZS5saW5lYXIoKSx1
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0sYT0zRGZ1bmN0aW9uKGUpPQp7cmV0dXJuIGUueX0s
Zj0zRFswXSxsPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxjPTNEbnVsbCxoLHA9M0QhMSxkPTNE
ITEsdj0KPTNEITEsbT0zRDYwLGc9M0RkMy5mb3JtYXQoIiwuMmYiKSx5PTNEMTIwMCxiLHcsRSxT
LHg9M0RkMy5kaXNwYXRjaCgiY2hhcnRDPQpsaWNrIiwiZWxlbWVudENsaWNrIiwiZWxlbWVudERi
bENsaWNrIiwiZWxlbWVudE1vdXNlb3ZlciIsImVsZW1lbnRNb3VzZW91dCI9CiksVCxOO3JldHVy
biBDLmRpc3BhdGNoPTNEeCxDLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoQyks
Qy54PTNEZj0KdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsQyk6dX0s
Qy55PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyPQpndW1lbnRzLmxlbmd0aD8oYT0zRGUsQyk6YX0s
Qy5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD89Cih0LnRvcD0z
RHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDp0LnRvcCx0LnJpZ2h0PTNEdHlwZW9m
IGUucmlnaHQhPQo9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OnQucmlnaHQsdC5ib3R0b209M0R0eXBl
b2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS49CmJvdHRvbTp0LmJvdHRvbSx0LmxlZnQ9M0R0
eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDp0LmxlZnQsQyk6dH0sQz0KLndpZHRo
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49M0RlLEMpOm59LEMuaGVp
Z2h0PTNEZnVuY3RpPQpvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0zRGUsQyk6cn0s
Qy54U2NhbGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXI9Cmd1bWVudHMubGVuZ3RoPyhzPTNEZSxD
KTpzfSxDLnlTY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPz0KKG89
M0RlLEMpOm99LEMueERvbWFpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhiPTNEZSxDKTpifSxDPQoueURvbWFpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyh3PTNEZSxDKTp3fSxDLnhSYW5nZT0zRGZ1bmM9CnRpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KEU9M0RlLEMpOkV9LEMueVJhbmdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuID0K
YXJndW1lbnRzLmxlbmd0aD8oUz0zRGUsQyk6U30sQy5mb3JjZVk9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0PQpoPyhmPTNEZSxDKTpmfSxDLnN0YWNrZWQ9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsQyk6cH09CixDLmNvbG9yPTNEZnVuY3Rp
b24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLnV0aWxzLmdldENvbG9yKHQpLEMp
Oj0KbH0sQy5iYXJDb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhj
PTNEZS51dGlscy5nZXRDb2xvcih0PQopLEMpOmN9LEMuZGlzYWJsZWQ9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsQyk6aH0sQy5pZD0KPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9M0RlLEMpOml9LEMuZGVsYXk9M0RmdW5jdGlvbihl
KXtyPQpldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PTNEZSxDKTp5fSxDLnNob3dWYWx1ZXM9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW09CmVudHMubGVuZ3RoPyhkPTNEZSxDKTpkfSxDLnNob3dC
YXJMYWJlbHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbj0KZ3RoPyh2PTNEZSxD
KTp2fSxDLnZhbHVlRm9ybWF0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGc9M0RlPQosQyk6Z30sQy52YWx1ZVBhZGRpbmc9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8obT0zRGUsQyk6bX0sQ309CixlLm1vZGVscy5tdWx0aUJhckhvcml6b250YWxD
aGFydD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gQyhlKXtyZXR1cm4gZS5lYWNoKD0KZnVuY3Rpb24o
ZSl7dmFyIGQ9M0RkMy5zZWxlY3QodGhpcyksbT0zRHRoaXMsVD0zRCh1fHxwYXJzZUludChkLnN0
eWxlKCJ3aWR0PQpoIikpfHw5NjApLW8ubGVmdC1vLnJpZ2h0LGs9M0QoYXx8cGFyc2VJbnQoZC5z
dHlsZSgiaGVpZ2h0IikpfHw0MDApLW8udG9wLW89Ci5ib3R0b207Qy51cGRhdGU9M0RmdW5jdGlv
bigpe2QuY2FsbChDKX0sQy5jb250YWluZXI9M0R0aGlzLGIuZGlzYWJsZWQ9M0RlLj0KbWFwKGZ1
bmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pO2lmKCF3KXt2YXIgTDt3PTNEe307Zm9yKEwg
aW4gYiliW0xdaW5zPQp0YW5jZW9mIEFycmF5P3dbTF09M0RiW0xdLnNsaWNlKDApOndbTF09M0Ri
W0xdfWlmKCFlfHwhZS5sZW5ndGh8fCFlLmZpbHRlcig9CmZ1bmN0aW9uKGUpe3JldHVybiBlLnZh
bHVlcy5sZW5ndGh9KS5sZW5ndGgpe3ZhciBBPTNEZC5zZWxlY3RBbGwoIi5udi1ub0RhdD0KYSIp
LmRhdGEoW0VdKTtyZXR1cm4gQS5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwi
bnZkMyBudi1ub0RhdGEiPQopLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3Ii
LCJtaWRkbGUiKSxBLmF0dHIoIngiLG8ubGVmdCtULzIpLmE9CnR0cigieSIsby50b3Aray8yKS50
ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksQ31kLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLj0K
cmVtb3ZlKCksZz0zRHQueFNjYWxlKCkseT0zRHQueVNjYWxlKCk7dmFyIE89M0RkLnNlbGVjdEFs
bCgiZy5udi13cmFwLm52LW11PQpsdGlCYXJIb3Jpem9udGFsQ2hhcnQiKS5kYXRhKFtlXSksTT0z
RE8uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm49CnZkMyBudi13cmFwIG52LW11
bHRpQmFySG9yaXpvbnRhbENoYXJ0IikuYXBwZW5kKCJnIiksXz0zRE8uc2VsZWN0KCJnIik7TS5h
cD0KcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksTS5hcHBlbmQoImciKS5h
dHRyKCJjbGFzcyIsIm52LXkgbnYtPQpheGlzIikuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJu
di16ZXJvTGluZSIpLmFwcGVuZCgibGluZSIpLE0uYXBwZW5kKCJnIik9Ci5hdHRyKCJjbGFzcyIs
Im52LWJhcnNXcmFwIiksTS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZFdyYXAi
KSxNLj0KYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1jb250cm9sc1dyYXAiKSxjJiYoaS53
aWR0aChULXgoKSksdC5iYXJDb2xvcigpPQomJmUuZm9yRWFjaChmdW5jdGlvbihlLHQpe2UuY29s
b3I9M0RkMy5yZ2IoIiNjY2MiKS5kYXJrZXIodCoxLjUpLnRvU3RyaW5nKCk9Cn0pLF8uc2VsZWN0
KCIubnYtbGVnZW5kV3JhcCIpLmRhdHVtKGUpLmNhbGwoaSksby50b3AhPTNEaS5oZWlnaHQoKSYm
KG8udG9wPQo9M0RpLmhlaWdodCgpLGs9M0QoYXx8cGFyc2VJbnQoZC5zdHlsZSgiaGVpZ2h0Iikp
fHw0MDApLW8udG9wLW8uYm90dG9tKSxfLnM9CmVsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIo
InRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3goKSsiLCIrIC1vLnRvcCsiKSIpKT0KO2lmKGwpe3Zh
ciBEPTNEW3trZXk6Ikdyb3VwZWQiLGRpc2FibGVkOnQuc3RhY2tlZCgpfSx7a2V5OiJTdGFja2Vk
IixkaXNhYmxlPQpkOiF0LnN0YWNrZWQoKX1dO3Mud2lkdGgoeCgpKS5jb2xvcihbIiM0NDQiLCIj
NDQ0IiwiIzQ0NCJdKSxfLnNlbGVjdCgiLm52LWM9Cm9udHJvbHNXcmFwIikuZGF0dW0oRCkuYXR0
cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIisgLW8udG9wKyIpIikuY2FsbChzKT0KfU8uYXR0
cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrby5sZWZ0KyIsIitvLnRvcCsiKSIpLHQuZGlzYWJs
ZWQoZS5tYXAoZnVuPQpjdGlvbihlKXtyZXR1cm4gZS5kaXNhYmxlZH0pKS53aWR0aChUKS5oZWln
aHQoaykuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXs9CnJldHVybiBlLmNvbG9yfHxmKGUsdCl9
KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZH0pKTt2YXIgUD0KPTNE
Xy5zZWxlY3QoIi5udi1iYXJzV3JhcCIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVy
biFlLmRpc2FibGVkfSkpPQo7UC5jYWxsKHQpO2lmKGgpe24uc2NhbGUoZykudGlja3Moay8yNCku
dGlja1NpemUoLVQsMCksXy5zZWxlY3QoIi5udi14Lm52LWE9CnhpcyIpLmNhbGwobik7dmFyIEg9
M0RfLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLnNlbGVjdEFsbCgiZyIpO0guc2VsZWN0QWxsKD0K
ImxpbmUsIHRleHQiKX1wJiYoci5zY2FsZSh5KS50aWNrcyhULzEwMCkudGlja1NpemUoLWssMCks
Xy5zZWxlY3QoIi5udi15Lm52PQotYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgw
LCIraysiKSIpLF8uc2VsZWN0KCIubnYteS5udi1heGlzIikuY2E9CmxsKHIpKSxfLnNlbGVjdCgi
Lm52LXplcm9MaW5lIGxpbmUiKS5hdHRyKCJ4MSIseSgwKSkuYXR0cigieDIiLHkoMCkpLmF0dHIo
Ij0KeTEiLDApLmF0dHIoInkyIiwtayksaS5kaXNwYXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1bmN0
aW9uKGUpe2I9M0RlLFMuc3RhdGVDPQpoYW5nZShiKSxDLnVwZGF0ZSgpfSkscy5kaXNwYXRjaC5v
bigibGVnZW5kQ2xpY2siLGZ1bmN0aW9uKGUsbil7aWYoIWUuZGlzYWI9CmxlZClyZXR1cm47RD0z
REQubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVkPTNEITAsZX0pLGUuZGlzYWJsZWQ9
M0QhMT0KO3N3aXRjaChlLmtleSl7Y2FzZSJHcm91cGVkIjp0LnN0YWNrZWQoITEpO2JyZWFrO2Nh
c2UiU3RhY2tlZCI6dC5zdGFja2VkKCEwPQopfWIuc3RhY2tlZD0zRHQuc3RhY2tlZCgpLFMuc3Rh
dGVDaGFuZ2UoYiksQy51cGRhdGUoKX0pLFMub24oInRvb2x0aXBTaG93Iiw9CmZ1bmN0aW9uKGUp
e3YmJk4oZSxtLnBhcmVudE5vZGUpfSksUy5vbigiY2hhbmdlU3RhdGUiLGZ1bmN0aW9uKG4pe3R5
cGVvZiBuLj0KZGlzYWJsZWQhPTNEInVuZGVmaW5lZCImJihlLmZvckVhY2goZnVuY3Rpb24oZSx0
KXtlLmRpc2FibGVkPTNEbi5kaXNhYmxlZFt0PQpdfSksYi5kaXNhYmxlZD0zRG4uZGlzYWJsZWQp
LHR5cGVvZiBuLnN0YWNrZWQhPTNEInVuZGVmaW5lZCImJih0LnN0YWNrZWQobi49CnN0YWNrZWQp
LGIuc3RhY2tlZD0zRG4uc3RhY2tlZCksQy51cGRhdGUoKX0pfSksQ312YXIgdD0zRGUubW9kZWxz
Lm11bHRpQmFySD0Kb3Jpem9udGFsKCksbj0zRGUubW9kZWxzLmF4aXMoKSxyPTNEZS5tb2RlbHMu
YXhpcygpLGk9M0RlLm1vZGVscy5sZWdlbmQoKS5oPQplaWdodCgzMCkscz0zRGUubW9kZWxzLmxl
Z2VuZCgpLmhlaWdodCgzMCksbz0zRHt0b3A6MzAscmlnaHQ6MjAsYm90dG9tOjUwLGw9CmVmdDo2
MH0sdT0zRG51bGwsYT0zRG51bGwsZj0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCksbD0zRCEwLGM9
M0QhMCxoPTNEITAscD0KPTNEITAsZD0zRCExLHY9M0QhMCxtPTNEZnVuY3Rpb24oZSx0LG4scixp
KXtyZXR1cm4iPGgzPiIrZSsiIC0gIit0KyI8L2gzPiIrPQoiPHA+IituKyI8L3A+In0sZyx5LGI9
M0R7c3RhY2tlZDpkfSx3PTNEbnVsbCxFPTNEIk5vIERhdGEgQXZhaWxhYmxlLiIsUz0zRGQ9CjMu
ZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhpZGUiLCJzdGF0ZUNoYW5nZSIsImNoYW5n
ZVN0YXRlIikseD0zRGZ1bj0KY3Rpb24oKXtyZXR1cm4gbD8xODA6MH0sVD0zRDA7dC5zdGFja2Vk
KGQpLG4ub3JpZW50KCJsZWZ0IikudGlja1BhZGRpbmcoNSkuPQpoaWdobGlnaHRaZXJvKCExKS5z
aG93TWF4TWluKCExKS50aWNrRm9ybWF0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksci5vcmllbnQ9
CigiYm90dG9tIikudGlja0Zvcm1hdChkMy5mb3JtYXQoIiwuMWYiKSkscy51cGRhdGVTdGF0ZSgh
MSk7dmFyIE49M0RmdW5jdGlvbj0KKGkscyl7dmFyIG89M0RpLnBvc1swXSsocy5vZmZzZXRMZWZ0
fHwwKSx1PTNEaS5wb3NbMV0rKHMub2Zmc2V0VG9wfHwwKSxhPTNEPQpuLnRpY2tGb3JtYXQoKSh0
LngoKShpLnBvaW50LGkucG9pbnRJbmRleCkpLGY9M0RyLnRpY2tGb3JtYXQoKSh0LnkoKShpLnBv
aW49CnQsaS5wb2ludEluZGV4KSksbD0zRG0oaS5zZXJpZXMua2V5LGEsZixpLEMpO2UudG9vbHRp
cC5zaG93KFtvLHVdLGwsaS52YWx1ZT0KPDA/ImUiOiJ3IixudWxsLHMpfTtyZXR1cm4gdC5kaXNw
YXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvPQpuKGUpe2UucG9zPTNE
W2UucG9zWzBdK28ubGVmdCxlLnBvc1sxXStvLnRvcF0sUy50b29sdGlwU2hvdyhlKX0pLHQuZGlz
cGF0Y2g9Ci5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe1MudG9vbHRp
cEhpZGUoZSl9KSxTLm9uKCJ0b29sdGlwSD0KaWRlIixmdW5jdGlvbigpe3YmJmUudG9vbHRpcC5j
bGVhbnVwKCl9KSxDLmRpc3BhdGNoPTNEUyxDLm11bHRpYmFyPTNEdCxDLmxlPQpnZW5kPTNEaSxD
LnhBeGlzPTNEbixDLnlBeGlzPTNEcixkMy5yZWJpbmQoQyx0LCJ4IiwieSIsInhEb21haW4iLCJ5
RG9tYWluIiw9CiJ4UmFuZ2UiLCJ5UmFuZ2UiLCJmb3JjZVgiLCJmb3JjZVkiLCJjbGlwRWRnZSIs
ImlkIiwiZGVsYXkiLCJzaG93VmFsdWVzIiwicz0KaG93QmFyTGFiZWxzIiwidmFsdWVGb3JtYXQi
LCJzdGFja2VkIiwiYmFyQ29sb3IiKSxDLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvPQpuc0Z1bmMu
YmluZChDKSxDLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhv
LnRvcD0zRHR5cGU9Cm9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOm8udG9wLG8ucmlnaHQ9
M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj0KP2UucmlnaHQ6by5yaWdodCxvLmJvdHRv
bT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTpvLmJvdHRvPQptLG8u
bGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0Om8ubGVmdCxDKTpvfSxD
LndpZHRoPTNEZnVuY3Q9CmlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsQyk6
dX0sQy5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYT0Kcmd1bWVudHMubGVuZ3RoPyhhPTNE
ZSxDKTphfSxDLmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/PQoo
Zj0zRGUudXRpbHMuZ2V0Q29sb3IodCksaS5jb2xvcihmKSxDKTpmfSxDLnNob3dDb250cm9scz0z
RGZ1bmN0aW9uKGUpe3JldHU9CnJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLEMpOmx9LEMuc2hv
d0xlZ2VuZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudD0Kcy5sZW5ndGg/KGM9M0RlLEMp
OmN9LEMuc2hvd1hBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9
Cj0zRGUsQyk6aH0sQy5zaG93WUF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8ocD0zRGUsQyk6cH0sQz0KLnRvb2x0aXA9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8obT0zRGUsQyk6bX0sQy50b29sdGlwcz0zRGZ1PQpuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHY9M0RlLEMpOnZ9LEMudG9vbHRpcENvbnRlbnQ9M0RmdW5jdGlv
big9CmUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNEZSxDKTptfSxDLnN0YXRlPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZT0KbnRzLmxlbmd0aD8oYj0zRGUsQyk6Yn0sQy5kZWZhdWx0
U3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0PQpoPyh3PTNEZSxDKTp3
fSxDLm5vRGF0YT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPTNEZSxD
KTpFfSw9CkMudHJhbnNpdGlvbkR1cmF0aW9uPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KFQ9M0RlLEMpOlR9LEN9LD0KZS5tb2RlbHMubXVsdGlDaGFydD0zRGZ1bmN0aW9u
KCl7ZnVuY3Rpb24gQyhlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhPQpyIHU9M0RkMy5z
ZWxlY3QodGhpcyksZj0zRHRoaXM7Qy51cGRhdGU9M0RmdW5jdGlvbigpe3UuY2FsbChDKX0sQy5j
b250YWluZXI9Cj0zRHRoaXM7dmFyIGs9M0Qocnx8cGFyc2VJbnQodS5zdHlsZSgid2lkdGgiKSl8
fDk2MCktdC5sZWZ0LXQucmlnaHQsTD0zRChpfD0KfHBhcnNlSW50KHUuc3R5bGUoImhlaWdodCIp
KXx8NDAwKS10LnRvcC10LmJvdHRvbSxBPTNEZS5maWx0ZXIoZnVuY3Rpb24oZSl7PQpyZXR1cm4h
ZS5kaXNhYmxlZCYmZS50eXBlPTNEPTNEImxpbmUiJiZlLnlBeGlzPTNEPTNEMX0pLE89M0RlLmZp
bHRlcihmdW5jdGk9Cm9uKGUpe3JldHVybiFlLmRpc2FibGVkJiZlLnR5cGU9M0Q9M0QibGluZSIm
JmUueUF4aXM9M0Q9M0QyfSksTT0zRGUuZmlsdGVyKD0KZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlz
YWJsZWQmJmUudHlwZT0zRD0zRCJiYXIiJiZlLnlBeGlzPTNEPTNEMX0pLF89M0RlLmZpPQpsdGVy
KGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkJiZlLnR5cGU9M0Q9M0QiYmFyIiYmZS55QXhp
cz0zRD0zRDJ9KSxEPQo9M0RlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZCYm
ZS50eXBlPTNEPTNEImFyZWEiJiZlLnlBeGlzPTNEPQo9M0QxfSksUD0zRGUuZmlsdGVyKGZ1bmN0
aW9uKGUpe3JldHVybiFlLmRpc2FibGVkJiZlLnR5cGU9M0Q9M0QiYXJlYSImJmUueUE9Cnhpcz0z
RD0zRDJ9KSxIPTNEZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWQmJmUueUF4
aXM9M0Q9M0QxfSkubT0KYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlv
bihlLHQpe3JldHVybnt4OmUueCx5OmUueX19KX0pLEI9Cj0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUp
e3JldHVybiFlLmRpc2FibGVkJiZlLnlBeGlzPTNEPTNEMn0pLm1hcChmdW5jdGlvbihlKT0Ke3Jl
dHVybiBlLnZhbHVlcy5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm57eDplLngseTplLnl9fSl9KTth
LmRvbWFpbihkMy5leHRlPQpudChkMy5tZXJnZShILmNvbmNhdChCKSksZnVuY3Rpb24oZSl7cmV0
dXJuIGUueH0pKS5yYW5nZShbMCxrXSk7dmFyIGo9M0R1LnM9CmVsZWN0QWxsKCJnLndyYXAubXVs
dGlDaGFydCIpLmRhdGEoW2VdKSxGPTNEai5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYT0K
c3MiLCJ3cmFwIG52ZDMgbXVsdGlDaGFydCIpLmFwcGVuZCgiZyIpO0YuYXBwZW5kKCJnIikuYXR0
cigiY2xhc3MiLCJ4IGF4aXMiPQopLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJ5MSBheGlz
IiksRi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInkyIGF4aXM9CiIpLEYuYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJsaW5lczFXcmFwIiksRi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImxp
bj0KZXMyV3JhcCIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJiYXJzMVdyYXAiKSxGLmFw
cGVuZCgiZyIpLmF0dHIoImNsYXNzPQoiLCJiYXJzMldyYXAiKSxGLmFwcGVuZCgiZyIpLmF0dHIo
ImNsYXNzIiwic3RhY2sxV3JhcCIpLEYuYXBwZW5kKCJnIikuYXR0cig9CiJjbGFzcyIsInN0YWNr
MldyYXAiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibGVnZW5kV3JhcCIpO3ZhciBJPTNE
ai5zZT0KbGVjdCgiZyIpO3MmJih4LndpZHRoKGsvMiksSS5zZWxlY3QoIi5sZWdlbmRXcmFwIiku
ZGF0dW0oZS5tYXAoZnVuY3Rpb24oZSl7PQpyZXR1cm4gZS5vcmlnaW5hbEtleT0zRGUub3JpZ2lu
YWxLZXk9M0Q9M0Q9M0R1bmRlZmluZWQ/ZS5rZXk6ZS5vcmlnaW5hbEtleSw9CmUua2V5PTNEZS5v
cmlnaW5hbEtleSsoZS55QXhpcz0zRD0zRDE/IiI6IiAocmlnaHQgYXhpcykiKSxlfSkpLmNhbGwo
eCksdC50bz0KcCE9M0R4LmhlaWdodCgpJiYodC50b3A9M0R4LmhlaWdodCgpLEw9M0QoaXx8cGFy
c2VJbnQodS5zdHlsZSgiaGVpZ2h0IikpfHw0PQowMCktdC50b3AtdC5ib3R0b20pLEkuc2VsZWN0
KCIubGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2s9Ci8yKyIsIisg
LXQudG9wKyIpIikpLGQud2lkdGgoaykuaGVpZ2h0KEwpLmludGVycG9sYXRlKCJtb25vdG9uZSIp
LmNvbG9yKGUubT0KYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8blt0JW4ubGVuZ3Ro
XX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVyPQpuIWVbbl0uZGlzYWJsZWQmJmVbbl0ueUF4
aXM9M0Q9M0QxJiZlW25dLnR5cGU9M0Q9M0QibGluZSJ9KSksdi53aWR0aChrKS5oZWk9CmdodChM
KS5pbnRlcnBvbGF0ZSgibW9ub3RvbmUiKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVy
biBlLmNvbG9yfHxuWz0KdCVuLmxlbmd0aF19KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4h
ZVtuXS5kaXNhYmxlZCYmZVtuXS55QXhpcz0zRD0zRDImPQomZVtuXS50eXBlPTNEPTNEImxpbmUi
fSkpLG0ud2lkdGgoaykuaGVpZ2h0KEwpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmU9CnR1
cm4gZS5jb2xvcnx8blt0JW4ubGVuZ3RoXX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFl
W25dLmRpc2FibGVkJiZlWz0Kbl0ueUF4aXM9M0Q9M0QxJiZlW25dLnR5cGU9M0Q9M0QiYmFyIn0p
KSxnLndpZHRoKGspLmhlaWdodChMKS5jb2xvcihlLm1hcChmPQp1bmN0aW9uKGUsdCl7cmV0dXJu
IGUuY29sb3J8fG5bdCVuLmxlbmd0aF19KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVs9
Cm5dLmRpc2FibGVkJiZlW25dLnlBeGlzPTNEPTNEMiYmZVtuXS50eXBlPTNEPTNEImJhciJ9KSks
eS53aWR0aChrKS5oZWlnaHQoTD0KKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBl
LmNvbG9yfHxuW3Qlbi5sZW5ndGhdfSkuZmlsdGVyKGZ1bmN0aW9uPQoodCxuKXtyZXR1cm4hZVtu
XS5kaXNhYmxlZCYmZVtuXS55QXhpcz0zRD0zRDEmJmVbbl0udHlwZT0zRD0zRCJhcmVhIn0pKSxi
Lnc9CmlkdGgoaykuaGVpZ2h0KEwpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUu
Y29sb3J8fG5bdCVuLmxlbmd0aF19KT0KLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25d
LmRpc2FibGVkJiZlW25dLnlBeGlzPTNEPTNEMiYmZVtuXS50eXBlPTNEPQo9M0QiYXJlYSJ9KSks
SS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0LmxlZnQrIiwiK3QudG9wKyIpIik7dmFy
IHE9M0Q9Ckkuc2VsZWN0KCIubGluZXMxV3JhcCIpLmRhdHVtKEEpLFI9M0RJLnNlbGVjdCgiLmJh
cnMxV3JhcCIpLmRhdHVtKE0pLFU9M0RJLj0Kc2VsZWN0KCIuc3RhY2sxV3JhcCIpLmRhdHVtKEQp
LHo9M0RJLnNlbGVjdCgiLmxpbmVzMldyYXAiKS5kYXR1bShPKSxXPTNESS5zPQplbGVjdCgiLmJh
cnMyV3JhcCIpLmRhdHVtKF8pLFg9M0RJLnNlbGVjdCgiLnN0YWNrMldyYXAiKS5kYXR1bShQKSxW
PTNERC5sZW49Cmd0aD9ELm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXN9KS5yZWR1Y2Uo
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5tYXAoZj0KdW5jdGlvbihlLG4pe3JldHVybnt4OmUueCx5
OmUueSt0W25dLnl9fSl9KS5jb25jYXQoW3t4OjAseTowfV0pOltdLCQ9M0RQLmxlPQpuZ3RoP1Au
bWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlc30pLnJlZHVjZShmdW5jdGlvbihlLHQpe3Jl
dHVybiBlLm1hcCg9CmZ1bmN0aW9uKGUsbil7cmV0dXJue3g6ZS54LHk6ZS55K3Rbbl0ueX19KX0p
LmNvbmNhdChbe3g6MCx5OjB9XSk6W107aC5kb21haT0KbihsfHxkMy5leHRlbnQoZDMubWVyZ2Uo
SCkuY29uY2F0KFYpLGZ1bmN0aW9uKGUpe3JldHVybiBlLnl9KSkucmFuZ2UoWzAsTF0pPQoscC5k
b21haW4oY3x8ZDMuZXh0ZW50KGQzLm1lcmdlKEIpLmNvbmNhdCgkKSxmdW5jdGlvbihlKXtyZXR1
cm4gZS55fSkpLnJhbmc9CmUoWzAsTF0pLGQueURvbWFpbihoLmRvbWFpbigpKSxtLnlEb21haW4o
aC5kb21haW4oKSkseS55RG9tYWluKGguZG9tYWluKCkpLD0Kdi55RG9tYWluKHAuZG9tYWluKCkp
LGcueURvbWFpbihwLmRvbWFpbigpKSxiLnlEb21haW4ocC5kb21haW4oKSksRC5sZW5ndGgmPQom
ZDMudHJhbnNpdGlvbihVKS5jYWxsKHkpLFAubGVuZ3RoJiZkMy50cmFuc2l0aW9uKFgpLmNhbGwo
YiksTS5sZW5ndGgmJmQzLnQ9CnJhbnNpdGlvbihSKS5jYWxsKG0pLF8ubGVuZ3RoJiZkMy50cmFu
c2l0aW9uKFcpLmNhbGwoZyksQS5sZW5ndGgmJmQzLnRyYW5zaT0KdGlvbihxKS5jYWxsKGQpLE8u
bGVuZ3RoJiZkMy50cmFuc2l0aW9uKHopLmNhbGwodiksdy50aWNrcyhrLzEwMCkudGlja1NpemUo
PQotTCwwKSxJLnNlbGVjdCgiLnguYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgw
LCIrTCsiKSIpLGQzLnRyYW5zaXQ9CmlvbihJLnNlbGVjdCgiLnguYXhpcyIpKS5jYWxsKHcpLEUu
dGlja3MoTC8zNikudGlja1NpemUoLWssMCksZDMudHJhbnNpdGlvbj0KKEkuc2VsZWN0KCIueTEu
YXhpcyIpKS5jYWxsKEUpLFMudGlja3MoTC8zNikudGlja1NpemUoLWssMCksZDMudHJhbnNpdGlv
bihJPQouc2VsZWN0KCIueTIuYXhpcyIpKS5jYWxsKFMpLEkuc2VsZWN0KCIueTIuYXhpcyIpLnN0
eWxlKCJvcGFjaXR5IixCLmxlbmd0aD89CjE6MCkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRl
KCIrYS5yYW5nZSgpWzFdKyIsMCkiKSx4LmRpc3BhdGNoLm9uKCJzdGF0ZT0KQ2hhbmdlIixmdW5j
dGlvbihlKXtDLnVwZGF0ZSgpfSksVC5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe28mJk4o
ZSxmLnBhPQpyZW50Tm9kZSl9KX0pLEN9dmFyIHQ9M0R7dG9wOjMwLHJpZ2h0OjIwLGJvdHRvbTo1
MCxsZWZ0OjYwfSxuPTNEZDMuc2NhbGUuY2E9CnRlZ29yeTIwKCkucmFuZ2UoKSxyPTNEbnVsbCxp
PTNEbnVsbCxzPTNEITAsbz0zRCEwLHU9M0RmdW5jdGlvbihlLHQsbixyLGkpez0KcmV0dXJuIjxo
Mz4iK2UrIjwvaDM+IisiPHA+IituKyIgYXQgIit0KyI8L3A+In0sYSxmLGwsYyxhPTNEZDMuc2Nh
bGUubGluZWFyPQooKSxoPTNEZDMuc2NhbGUubGluZWFyKCkscD0zRGQzLnNjYWxlLmxpbmVhcigp
LGQ9M0RlLm1vZGVscy5saW5lKCkueVNjYWxlKGg9Ciksdj0zRGUubW9kZWxzLmxpbmUoKS55U2Nh
bGUocCksbT0zRGUubW9kZWxzLm11bHRpQmFyKCkuc3RhY2tlZCghMSkueVNjYWxlKD0KaCksZz0z
RGUubW9kZWxzLm11bHRpQmFyKCkuc3RhY2tlZCghMSkueVNjYWxlKHApLHk9M0RlLm1vZGVscy5z
dGFja2VkQXJlYSgpPQoueVNjYWxlKGgpLGI9M0RlLm1vZGVscy5zdGFja2VkQXJlYSgpLnlTY2Fs
ZShwKSx3PTNEZS5tb2RlbHMuYXhpcygpLnNjYWxlKGE9Cikub3JpZW50KCJib3R0b20iKS50aWNr
UGFkZGluZyg1KSxFPTNEZS5tb2RlbHMuYXhpcygpLnNjYWxlKGgpLm9yaWVudCgibGVmdD0KIiks
Uz0zRGUubW9kZWxzLmF4aXMoKS5zY2FsZShwKS5vcmllbnQoInJpZ2h0IikseD0zRGUubW9kZWxz
LmxlZ2VuZCgpLmhlaWdoPQp0KDMwKSxUPTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9v
bHRpcEhpZGUiKSxOPTNEZnVuY3Rpb24odCxuKXt2YXIgcj0KPTNEdC5wb3NbMF0rKG4ub2Zmc2V0
TGVmdHx8MCksaT0zRHQucG9zWzFdKyhuLm9mZnNldFRvcHx8MCkscz0zRHcudGlja0Zvcm1hPQp0
KCkoZC54KCkodC5wb2ludCx0LnBvaW50SW5kZXgpKSxvPTNEKHQuc2VyaWVzLnlBeGlzPTNEPTNE
Mj9TOkUpLnRpY2tGb3JtYXQ9CigpKGQueSgpKHQucG9pbnQsdC5wb2ludEluZGV4KSksYT0zRHUo
dC5zZXJpZXMua2V5LHMsbyx0LEMpO2UudG9vbHRpcC5zaG93KD0KW3IsaV0sYSx1bmRlZmluZWQs
dW5kZWZpbmVkLG4ub2Zmc2V0UGFyZW50KX07cmV0dXJuIGQuZGlzcGF0Y2gub24oImVsZW1lbnRN
PQpvdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXSt0LmxlZnQs
ZS5wb3NbMV0rdC50b3BdLFQudG89Cm9sdGlwU2hvdyhlKX0pLGQuZGlzcGF0Y2gub24oImVsZW1l
bnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtULnRvb2x0aT0KcEhpZGUoZSl9KSx2LmRp
c3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNE
W2UuPQpwb3NbMF0rdC5sZWZ0LGUucG9zWzFdK3QudG9wXSxULnRvb2x0aXBTaG93KGUpfSksdi5k
aXNwYXRjaC5vbigiZWxlbWVudE1vdXM9CmVvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7VC50b29s
dGlwSGlkZShlKX0pLG0uZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZT0Kci50b29sdGlwIixm
dW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXSt0LmxlZnQsZS5wb3NbMV0rdC50b3BdLFQudG9v
bHRpcFNoPQpvdyhlKX0pLG0uZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixm
dW5jdGlvbihlKXtULnRvb2x0aXBIaWRlKGU9Cil9KSxnLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91
c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdKz0KdC5sZWZ0LGUu
cG9zWzFdK3QudG9wXSxULnRvb2x0aXBTaG93KGUpfSksZy5kaXNwYXRjaC5vbigiZWxlbWVudE1v
dXNlb3V0LnRvPQpvbHRpcCIsZnVuY3Rpb24oZSl7VC50b29sdGlwSGlkZShlKX0pLHkuZGlzcGF0
Y2gub24oInRvb2x0aXBTaG93IixmdW5jdGlvbig9CmUpe2lmKCFNYXRoLnJvdW5kKHkueSgpKGUu
cG9pbnQpKjEwMCkpcmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtkMy5zZWxlYz0KdEFsbCgi
LnBvaW50LmhvdmVyIikuY2xhc3NlZCgiaG92ZXIiLCExKX0sMCksITE7ZS5wb3M9M0RbZS5wb3Nb
MF0rdC5sZWZ0LGUuPQpwb3NbMV0rdC50b3BdLFQudG9vbHRpcFNob3coZSl9KSx5LmRpc3BhdGNo
Lm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oZSl7VC49CnRvb2x0aXBIaWRlKGUpfSksYi5kaXNw
YXRjaC5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe2lmKCFNYXRoLnJvdW5kKGIueT0KKCko
ZS5wb2ludCkqMTAwKSlyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe2QzLnNlbGVjdEFsbCgi
LnBvaW50LmhvdmVyIikuPQpjbGFzc2VkKCJob3ZlciIsITEpfSwwKSwhMTtlLnBvcz0zRFtlLnBv
c1swXSt0LmxlZnQsZS5wb3NbMV0rdC50b3BdLFQudG9vbHQ9CmlwU2hvdyhlKX0pLGIuZGlzcGF0
Y2gub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbihlKXtULnRvb2x0aXBIaWRlKGUpfSksZC5kaT0K
c3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNE
W2UucG9zWzBdK3QubGVmdCxlPQoucG9zWzFdK3QudG9wXSxULnRvb2x0aXBTaG93KGUpfSksZC5k
aXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGY9CnVuY3Rpb24oZSl7VC50b29s
dGlwSGlkZShlKX0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVu
Yz0KdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXSt0LmxlZnQsZS5wb3NbMV0rdC50b3BdLFQudG9v
bHRpcFNob3coZSl9KSx2LmRpc3BhPQp0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixm
dW5jdGlvbihlKXtULnRvb2x0aXBIaWRlKGUpfSksVC5vbigidG9vbHQ9CmlwSGlkZSIsZnVuY3Rp
b24oKXtvJiZlLnRvb2x0aXAuY2xlYW51cCgpfSksQy5kaXNwYXRjaD0zRFQsQy5saW5lczE9M0Rk
LEMubD0KaW5lczI9M0R2LEMuYmFyczE9M0RtLEMuYmFyczI9M0RnLEMuc3RhY2sxPTNEeSxDLnN0
YWNrMj0zRGIsQy54QXhpcz0zRHcsQy55PQpBeGlzMT0zREUsQy55QXhpczI9M0RTLEMub3B0aW9u
cz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChDKSxDLng9M0RmdW5jdGk9Cm9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhnZXRYPTNEZSxkLngoZSksbS54KGUpLEMpOmdldFh9LEMueT0z
RGZ1bmN0aT0Kb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGdldFk9M0RlLGQueShlKSxt
LnkoZSksQyk6Z2V0WX0sQy55RG9tYWluMT0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGw9M0RlLEMpOmx9LEMueURvbWFpbjI9M0RmdW5jdGlvbihlPQope3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhjPTNEZSxDKTpjfSxDLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWU9Cm50cy5sZW5ndGg/KHQ9M0RlLEMpOnR9LEMud2lkdGg9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0zRD0KZSxDKTpyfSxDLmhlaWdodD0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPTNEZSxDKTppfSxDLmNvbG9yPQo9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGUseC5jb2xvcihlKSxDKTpufSxD
LnNob3dMZWdlbmQ9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPTNE
ZSxDKTpzfSxDLnRvb2x0aXBzPTNEZnVuY3Rpb24oZT0KKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8obz0zRGUsQyk6b30sQy50b29sdGlwQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVyPQpuIGFy
Z3VtZW50cy5sZW5ndGg/KHU9M0RlLEMpOnV9LEN9LGUubW9kZWxzLm9obGNCYXI9M0RmdW5jdGlv
bigpe2Z1bmN0aW9uIHg9CihlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBnPTNEbi10
LmxlZnQtdC5yaWdodCx4PTNEci10LnRvcC10LmJvdHRvbT0KLFQ9M0RkMy5zZWxlY3QodGhpcyk7
cy5kb21haW4oeXx8ZDMuZXh0ZW50KGVbMF0udmFsdWVzLm1hcCh1KS5jb25jYXQocCkpKSx2PQo/
cy5yYW5nZSh3fHxbZyouNS9lWzBdLnZhbHVlcy5sZW5ndGgsZyooZVswXS52YWx1ZXMubGVuZ3Ro
LS41KS9lWzBdLnZhbHVlcy49Cmxlbmd0aF0pOnMucmFuZ2Uod3x8WzAsZ10pLG8uZG9tYWluKGJ8
fFtkMy5taW4oZVswXS52YWx1ZXMubWFwKGgpLmNvbmNhdChkKT0KKSxkMy5tYXgoZVswXS52YWx1
ZXMubWFwKGMpLmNvbmNhdChkKSldKS5yYW5nZShFfHxbeCwwXSkscy5kb21haW4oKVswXT0zRD0K
PTNEPTNEcy5kb21haW4oKVsxXSYmKHMuZG9tYWluKClbMF0/cy5kb21haW4oW3MuZG9tYWluKClb
MF0tcy5kb21haW4oKVswXSouPQowMSxzLmRvbWFpbigpWzFdK3MuZG9tYWluKClbMV0qLjAxXSk6
cy5kb21haW4oWy0xLDFdKSksby5kb21haW4oKVswXT0zRD0zRD0KPTNEby5kb21haW4oKVsxXSYm
KG8uZG9tYWluKClbMF0/by5kb21haW4oW28uZG9tYWluKClbMF0rby5kb21haW4oKVswXSouMDEs
PQpvLmRvbWFpbigpWzFdLW8uZG9tYWluKClbMV0qLjAxXSk6by5kb21haW4oWy0xLDFdKSk7dmFy
IE49M0RkMy5zZWxlY3QodGhpcyk9Ci5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1vaGxjQmFyIiku
ZGF0YShbZVswXS52YWx1ZXNdKSxDPTNETi5lbnRlcigpLmFwcGVuZD0KKCJnIikuYXR0cigiY2xh
c3MiLCJudmQzIG52LXdyYXAgbnYtb2hsY0JhciIpLGs9M0RDLmFwcGVuZCgiZGVmcyIpLEw9M0RD
LmFwPQpwZW5kKCJnIiksQT0zRE4uc2VsZWN0KCJnIik7TC5hcHBlbmQoImciKS5hdHRyKCJjbGFz
cyIsIm52LXRpY2tzIiksTi5hdHRyKCI9CnRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsi
LCIrdC50b3ArIikiKSxULm9uKCJjbGljayIsZnVuY3Rpb24oZSx0KXtTLj0KY2hhcnRDbGljayh7
ZGF0YTplLGluZGV4OnQscG9zOmQzLmV2ZW50LGlkOml9KX0pLGsuYXBwZW5kKCJjbGlwUGF0aCIp
LmF0dHIoPQoiaWQiLCJudi1jaGFydC1jbGlwLXBhdGgtIitpKS5hcHBlbmQoInJlY3QiKSxOLnNl
bGVjdCgiI252LWNoYXJ0LWNsaXAtcGF0aC09CiIraSsiIHJlY3QiKS5hdHRyKCJ3aWR0aCIsZyku
YXR0cigiaGVpZ2h0Iix4KSxBLmF0dHIoImNsaXAtcGF0aCIsbT8idXJsKCNudj0KLWNoYXJ0LWNs
aXAtcGF0aC0iK2krIikiOiIiKTt2YXIgTz0zRE4uc2VsZWN0KCIubnYtdGlja3MiKS5zZWxlY3RB
bGwoIi5udi10PQppY2siKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlfSk7Ty5leGl0KCkucmVt
b3ZlKCk7dmFyIE09M0RPLmVudGVyKCkuYXBwZW49CmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsZnVu
Y3Rpb24oZSx0LG4pe3JldHVybihmKGUsdCk+bChlLHQpPyJudi10aWNrIG5lZ2F0aT0KdmUiOiJu
di10aWNrIHBvc2l0aXZlIikrIiBudi10aWNrLSIrbisiLSIrdH0pLmF0dHIoImQiLGZ1bmN0aW9u
KHQsbil7dmFyIHI9Cj0zRGcvZVswXS52YWx1ZXMubGVuZ3RoKi45O3JldHVybiJtMCwwbDAsIiso
byhmKHQsbikpLW8oYyh0LG4pKSkrImwiKyAtci8yKz0KIiwwbCIrci8yKyIsMGwwLCIrKG8oaCh0
LG4pKS1vKGYodCxuKSkpKyJsMCwiKyhvKGwodCxuKSktbyhoKHQsbikpKSsibCIrci8yPQorIiww
bCIrIC1yLzIrIiwweiJ9KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRy
YW5zbGF0ZSgiK3ModSg9CmUsdCkpKyIsIitvKGMoZSx0KSkrIikifSkub24oIm1vdXNlb3ZlciIs
ZnVuY3Rpb24odCxuKXtkMy5zZWxlY3QodGhpcykuY2xhcz0Kc2VkKCJob3ZlciIsITApLFMuZWxl
bWVudE1vdXNlb3Zlcih7cG9pbnQ6dCxzZXJpZXM6ZVswXSxwb3M6W3ModSh0LG4pKSxvKGEoPQp0
LG4pKV0scG9pbnRJbmRleDpuLHNlcmllc0luZGV4OjAsZTpkMy5ldmVudH0pfSkub24oIm1vdXNl
b3V0IixmdW5jdGlvbih0LG49Cil7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMSks
Uy5lbGVtZW50TW91c2VvdXQoe3BvaW50OnQsc2VyaWVzOmVbMD0KXSxwb2ludEluZGV4Om4sc2Vy
aWVzSW5kZXg6MCxlOmQzLmV2ZW50fSl9KS5vbigiY2xpY2siLGZ1bmN0aW9uKGUsdCl7Uy5lbGVt
PQplbnRDbGljayh7dmFsdWU6YShlLHQpLGRhdGE6ZSxpbmRleDp0LHBvczpbcyh1KGUsdCkpLG8o
YShlLHQpKV0sZTpkMy5ldmVudCw9CmlkOml9KSxkMy5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0p
Lm9uKCJkYmxjbGljayIsZnVuY3Rpb24oZSx0KXtTLmVsZW1lbnREYj0KbENsaWNrKHt2YWx1ZTph
KGUsdCksZGF0YTplLGluZGV4OnQscG9zOltzKHUoZSx0KSksbyhhKGUsdCkpXSxlOmQzLmV2ZW50
LGlkPQo6aX0pLGQzLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfSk7Ty5hdHRyKCJjbGFzcyIsZnVu
Y3Rpb24oZSx0LG4pe3JldHVybihmKGU9Cix0KT5sKGUsdCk/Im52LXRpY2sgbmVnYXRpdmUiOiJu
di10aWNrIHBvc2l0aXZlIikrIiBudi10aWNrLSIrbisiLSIrdH0pLGQzLj0KdHJhbnNpdGlvbihP
KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiK3ModShl
LHQpKSsiPQosIitvKGMoZSx0KSkrIikifSkuYXR0cigiZCIsZnVuY3Rpb24odCxuKXt2YXIgcj0z
RGcvZVswXS52YWx1ZXMubGVuZ3RoKi45O3I9CmV0dXJuIm0wLDBsMCwiKyhvKGYodCxuKSktbyhj
KHQsbikpKSsibCIrIC1yLzIrIiwwbCIrci8yKyIsMGwwLCIrKG8oaCh0LG4pKT0KLW8oZih0LG4p
KSkrImwwLCIrKG8obCh0LG4pKS1vKGgodCxuKSkpKyJsIityLzIrIiwwbCIrIC1yLzIrIiwweiJ9
KX0pLHh9dmFyPQogdD0zRHt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6MH0sbj0zRDk2MCxy
PTNENTAwLGk9M0RNYXRoLmZsb29yKE1hdGgucmE9Cm5kb20oKSoxZTQpLHM9M0RkMy5zY2FsZS5s
aW5lYXIoKSxvPTNEZDMuc2NhbGUubGluZWFyKCksdT0zRGZ1bmN0aW9uKGUpe3JldD0KdXJuIGUu
eH0sYT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnl9LGY9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5v
cGVufSxsPTNEZnVuPQpjdGlvbihlKXtyZXR1cm4gZS5jbG9zZX0sYz0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBlLmhpZ2h9LGg9M0RmdW5jdGlvbihlKXtyZXQ9CnVybiBlLmxvd30scD0zRFtdLGQ9M0Rb
XSx2PTNEITEsbT0zRCEwLGc9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLHksYix3LEUsUz0KPTNE
ZDMuZGlzcGF0Y2goImNoYXJ0Q2xpY2siLCJlbGVtZW50Q2xpY2siLCJlbGVtZW50RGJsQ2xpY2si
LCJlbGVtZW50TW91c2VvPQp2ZXIiLCJlbGVtZW50TW91c2VvdXQiKTtyZXR1cm4geC5kaXNwYXRj
aD0zRFMseC5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnU9Cm5jLmJpbmQoeCkseC54PTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RlLHgpOnV9LHgueT0zRGZ1bj0K
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLHgpOmF9LHgub3Blbj0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhPQpyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLHgpOmZ9LHguY2xvc2U9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD89CihsPTNEZSx4KTpsfSx4Lmhp
Z2g9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUseCk6Y30seC5s
bz0Kdz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSx4KTpofSx4
Lm1hcmdpbj0zRGZ1bmN0aW9uKGUpPQp7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPTNE
dHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQ9Ci5yaWdodD0zRHR5cGVv
ZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT0zRHR5cGVv
ZiBlLj0KYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD0zRHR5
cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lPQpkIj9lLmxlZnQ6dC5sZWZ0LHgpOnR9LHgud2lkdGg9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGU9Cix4KTpufSx4Lmhl
aWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZSx4KTpyfSx4
LnhTY2FsZT0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLHgp
OnN9LHgueVNjYWxlPTNEZnVuY3Rpb24oZSl7PQpyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0z
RGUseCk6b30seC54RG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW49CnRzLmxlbmd0
aD8oeT0zRGUseCk6eX0seC55RG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGI9Cj0zRGUseCk6Yn0seC54UmFuZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8odz0zRGUseCk6d30seC55Uj0KYW5nZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhFPTNEZSx4KTpFfSx4LmZvcmNlWD0zRGZ1bmN0aW9uPQooZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLHgpOnB9LHguZm9yY2VZPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3U9Cm1lbnRzLmxlbmd0aD8oZD0zRGUseCk6ZH0seC5wYWREYXRhPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KD0Kdj0zRGUseCk6dn0seC5jbGlwRWRnZT0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNEZSx4KTptfSx4PQouY29s
b3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0zRGUudXRpbHMuZ2V0
Q29sb3IodCkseCk6Z309Cix4LmlkPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGk9M0RlLHgpOml9LHh9LGUubW9kZWxzLnBpZT0zRD0KZnVuY3Rpb24oKXtmdW5jdGlvbiBT
KGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7ZnVuY3Rpb24gcShlKXt2YXIgdD0zRChlPQou
c3RhcnRBbmdsZStlLmVuZEFuZ2xlKSo5MC9NYXRoLlBJLTkwO3JldHVybiB0PjkwP3QtMTgwOnR9
ZnVuY3Rpb24gUihlKXtlLmU9Cm5kQW5nbGU9M0Rpc05hTihlLmVuZEFuZ2xlKT8wOmUuZW5kQW5n
bGUsZS5zdGFydEFuZ2xlPTNEaXNOYU4oZS5zdGFydEFuZ2xlKT0KPzA6ZS5zdGFydEFuZ2xlLG18
fChlLmlubmVyUmFkaXVzPTNEMCk7dmFyIHQ9M0RkMy5pbnRlcnBvbGF0ZSh0aGlzLl9jdXJyZW50
PQosZSk7cmV0dXJuIHRoaXMuX2N1cnJlbnQ9M0R0KDApLGZ1bmN0aW9uKGUpe3JldHVybiBBKHQo
ZSkpfX1mdW5jdGlvbiBVKGUpe2U9Ci5pbm5lclJhZGl1cz0zRDA7dmFyIHQ9M0RkMy5pbnRlcnBv
bGF0ZSh7c3RhcnRBbmdsZTowLGVuZEFuZ2xlOjB9LGUpO3JldHVybj0KIGZ1bmN0aW9uKGUpe3Jl
dHVybiBBKHQoZSkpfX12YXIgbz0zRG4tdC5sZWZ0LXQucmlnaHQsZj0zRHItdC50b3AtdC5ib3R0
b20sPQpTPTNETWF0aC5taW4obyxmKS8yLHg9M0RTLVMvNSxUPTNEZDMuc2VsZWN0KHRoaXMpLE49
M0RULnNlbGVjdEFsbCgiLm52LXdyYXA9Ci5udi1waWUiKS5kYXRhKGUpLEM9M0ROLmVudGVyKCku
YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtcD0KaWUgbnYtY2hhcnQt
Iit1KSxrPTNEQy5hcHBlbmQoImciKSxMPTNETi5zZWxlY3QoImciKTtrLmFwcGVuZCgiZyIpLmF0
dHIoImNsPQphc3MiLCJudi1waWUiKSxrLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtcGll
TGFiZWxzIiksTi5hdHRyKCJ0cmFuc2Zvcm09CiIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50
b3ArIikiKSxMLnNlbGVjdCgiLm52LXBpZSIpLmF0dHIoInRyYW5zZm9ybSIsIj0KdHJhbnNsYXRl
KCIrby8yKyIsIitmLzIrIikiKSxMLnNlbGVjdCgiLm52LXBpZUxhYmVscyIpLmF0dHIoInRyYW5z
Zm9ybSIsInRyPQphbnNsYXRlKCIrby8yKyIsIitmLzIrIikiKSxULm9uKCJjbGljayIsZnVuY3Rp
b24oZSx0KXtFLmNoYXJ0Q2xpY2soe2RhdGE6ZSw9CmluZGV4OnQscG9zOmQzLmV2ZW50LGlkOnV9
KX0pO3ZhciBBPTNEZDMuc3ZnLmFyYygpLm91dGVyUmFkaXVzKHgpO3kmJkEuc3Rhcj0KdEFuZ2xl
KHkpLGImJkEuZW5kQW5nbGUoYiksbSYmQS5pbm5lclJhZGl1cyhTKncpO3ZhciBPPTNEZDMubGF5
b3V0LnBpZSgpLnNvPQpydChudWxsKS52YWx1ZShmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNhYmxl
ZD8wOnMoZSl9KSxNPTNETi5zZWxlY3QoIi5udi1waWU9CiIpLnNlbGVjdEFsbCgiLm52LXNsaWNl
IikuZGF0YShPKSxfPTNETi5zZWxlY3QoIi5udi1waWVMYWJlbHMiKS5zZWxlY3RBbGwoIj0KLm52
LWxhYmVsIikuZGF0YShPKTtNLmV4aXQoKS5yZW1vdmUoKSxfLmV4aXQoKS5yZW1vdmUoKTt2YXIg
RD0zRE0uZW50ZXIoKS5hPQpwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtc2xpY2UiKS5vbigi
bW91c2VvdmVyIixmdW5jdGlvbihlLHQpe2QzLnNlbGVjdCg9CnRoaXMpLmNsYXNzZWQoImhvdmVy
IiwhMCksRS5lbGVtZW50TW91c2VvdmVyKHtsYWJlbDppKGUuZGF0YSksdmFsdWU6cyhlLmRhdD0K
YSkscG9pbnQ6ZS5kYXRhLHBvaW50SW5kZXg6dCxwb3M6W2QzLmV2ZW50LnBhZ2VYLGQzLmV2ZW50
LnBhZ2VZXSxpZDp1fSl9KS5vPQpuKCJtb3VzZW91dCIsZnVuY3Rpb24oZSx0KXtkMy5zZWxlY3Qo
dGhpcykuY2xhc3NlZCgiaG92ZXIiLCExKSxFLmVsZW1lbnRNb3U9CnNlb3V0KHtsYWJlbDppKGUu
ZGF0YSksdmFsdWU6cyhlLmRhdGEpLHBvaW50OmUuZGF0YSxpbmRleDp0LGlkOnV9KX0pLm9uKCJj
bD0KaWNrIixmdW5jdGlvbihlLHQpe0UuZWxlbWVudENsaWNrKHtsYWJlbDppKGUuZGF0YSksdmFs
dWU6cyhlLmRhdGEpLHBvaW50OmUuPQpkYXRhLGluZGV4OnQscG9zOmQzLmV2ZW50LGlkOnV9KSxk
My5ldmVudC5zdG9wUHJvcGFnYXRpb24oKX0pLm9uKCJkYmxjbGljayI9CixmdW5jdGlvbihlLHQp
e0UuZWxlbWVudERibENsaWNrKHtsYWJlbDppKGUuZGF0YSksdmFsdWU6cyhlLmRhdGEpLHBvaW50
OmUuZD0KYXRhLGluZGV4OnQscG9zOmQzLmV2ZW50LGlkOnV9KSxkMy5ldmVudC5zdG9wUHJvcGFn
YXRpb24oKX0pO00uYXR0cigiZmlsbCIsPQpmdW5jdGlvbihlLHQpe3JldHVybiBhKGUsdCl9KS5h
dHRyKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSx0KX0pO3Y9CmFyIFA9M0RELmFw
cGVuZCgicGF0aCIpLmVhY2goZnVuY3Rpb24oZSl7dGhpcy5fY3VycmVudD0zRGV9KTtNLnNlbGVj
dCgicGF0aD0KIikuYXR0cigiZCIsQSk7aWYobCl7dmFyIEg9M0RkMy5zdmcuYXJjKCkuaW5uZXJS
YWRpdXMoMCk7YyYmKEg9M0RBKSxoJiYoSD0KPTNEZDMuc3ZnLmFyYygpLm91dGVyUmFkaXVzKEEu
b3V0ZXJSYWRpdXMoKSkpLF8uZW50ZXIoKS5hcHBlbmQoImciKS5jbGFzc2VkPQooIm52LWxhYmVs
IiwhMCkuZWFjaChmdW5jdGlvbihlLHQpe3ZhciBuPTNEZDMuc2VsZWN0KHRoaXMpO24uYXR0cigi
dHJhbnNmb3I9Cm0iLGZ1bmN0aW9uKGUpe2lmKGcpe2Uub3V0ZXJSYWRpdXM9M0R4KzEwLGUuaW5u
ZXJSYWRpdXM9M0R4KzE1O3ZhciB0PTNEKGUucz0KdGFydEFuZ2xlK2UuZW5kQW5nbGUpLzIqKDE4
MC9NYXRoLlBJKTtyZXR1cm4oZS5zdGFydEFuZ2xlK2UuZW5kQW5nbGUpLzI8TWF0PQpoLlBJP3Qt
PTNEOTA6dCs9M0Q5MCwidHJhbnNsYXRlKCIrSC5jZW50cm9pZChlKSsiKSByb3RhdGUoIit0KyIp
In1yZXR1cm4gZS49Cm91dGVyUmFkaXVzPTNEUysxMCxlLmlubmVyUmFkaXVzPTNEUysxNSwidHJh
bnNsYXRlKCIrSC5jZW50cm9pZChlKSsiKSJ9KSxuLj0KYXBwZW5kKCJyZWN0Iikuc3R5bGUoInN0
cm9rZSIsIiNmZmYiKS5zdHlsZSgiZmlsbCIsIiNmZmYiKS5hdHRyKCJyeCIsMykuYXR0PQpyKCJy
eSIsMyksbi5hcHBlbmQoInRleHQiKS5zdHlsZSgidGV4dC1hbmNob3IiLGc/KGUuc3RhcnRBbmds
ZStlLmVuZEFuZ2xlKS89CjI8TWF0aC5QST8ic3RhcnQiOiJlbmQiOiJtaWRkbGUiKS5zdHlsZSgi
ZmlsbCIsIiMwMDAiKX0pO3ZhciBCPTNEe30saj0zRDE0LD0KRj0zRDE0MCxJPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIE1hdGguZmxvb3IoZVswXS9GKSpGKyIsIitNYXRoLmZsb29yKGVbMV0vaikqPQpq
fTtfLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSl7aWYoZyl7ZS5vdXRlclJhZGl1cz0zRHgr
MTAsZS5pbm5lclJhZGl1cz0KPTNEeCsxNTt2YXIgdD0zRChlLnN0YXJ0QW5nbGUrZS5lbmRBbmds
ZSkvMiooMTgwL01hdGguUEkpO3JldHVybihlLnN0YXJ0QW5nPQpsZStlLmVuZEFuZ2xlKS8yPE1h
dGguUEk/dC09M0Q5MDp0Kz0zRDkwLCJ0cmFuc2xhdGUoIitILmNlbnRyb2lkKGUpKyIpIHJvdGE9
CnRlKCIrdCsiKSJ9ZS5vdXRlclJhZGl1cz0zRFMrMTAsZS5pbm5lclJhZGl1cz0zRFMrMTU7dmFy
IG49M0RILmNlbnRyb2lkKGUpLD0Kcj0zREkobik7cmV0dXJuIEJbcl0mJihuWzFdLT0zRGopLEJb
SShuKV09M0QhMCwidHJhbnNsYXRlKCIrbisiKSJ9KSxfLnNlbGVjPQp0KCIubnYtbGFiZWwgdGV4
dCIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsZz8oZC5zdGFydEFuZ2xlK2QuZW5kQW5nbGUpLzI8TWF0
aC49ClBJPyJzdGFydCI6ImVuZCI6Im1pZGRsZSIpLnRleHQoZnVuY3Rpb24oZSx0KXt2YXIgbj0z
RChlLmVuZEFuZ2xlLWUuc3RhcnRBbj0KZ2xlKS8oMipNYXRoLlBJKSxyPTNEe2tleTppKGUuZGF0
YSksdmFsdWU6cyhlLmRhdGEpLHBlcmNlbnQ6ZDMuZm9ybWF0KCIlIikoPQpuKX07cmV0dXJuIGUu
dmFsdWUmJm4+dj9yW3BdOiIifSl9fSksU312YXIgdD0zRHt0b3A6MCxyaWdodDowLGJvdHRvbTow
LGxlZnQ9CjowfSxuPTNENTAwLHI9M0Q1MDAsaT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9LHM9
M0RmdW5jdGlvbihlKXtyZXR1cm4gZS55fT0KLG89M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5kZXNj
cmlwdGlvbn0sdT0zRE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxZTQpLGE9Cj0zRGUudXRpbHMu
ZGVmYXVsdENvbG9yKCksZj0zRGQzLmZvcm1hdCgiLC4yZiIpLGw9M0QhMCxjPTNEITAsaD0zRCEx
LHA9M0Qiaz0KZXkiLHY9M0QuMDIsbT0zRCExLGc9M0QhMSx5PTNEITEsYj0zRCExLHc9M0QuNSxF
PTNEZDMuZGlzcGF0Y2goImNoYXJ0Q2xpY2siPQosImVsZW1lbnRDbGljayIsImVsZW1lbnREYmxD
bGljayIsImVsZW1lbnRNb3VzZW92ZXIiLCJlbGVtZW50TW91c2VvdXQiKTtyZXQ9CnVybiBTLmRp
c3BhdGNoPTNERSxTLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoUyksUy5tYXJn
aW49M0RmdW5jdD0KaW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD0zRHR5cGVv
ZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDp0PQoudG9wLHQucmlnaHQ9M0R0eXBlb2YgZS5y
aWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OnQucmlnaHQsdC5ib3R0b209M0R0eXA9CmVvZiBl
LmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHRvbSx0LmxlZnQ9M0R0eXBlb2Yg
ZS5sZWZ0IT0zRCJ1bj0KZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxTKTp0fSxTLndpZHRoPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/PQoobj0zRGUsUyk6bn0sUy5oZWlnaHQ9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0zRGUsUyk6cn0sUy49CnZh
bHVlcz0zRGZ1bmN0aW9uKHQpe3JldHVybiBlLmxvZygicGllLnZhbHVlcygpIGlzIG5vIGxvbmdl
ciBzdXBwb3J0ZWQuIiksUz0KfSxTLng9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oaT0zRGUsUyk6aX0sUy55PTNEZnVuY3Rpb24oZSl7PQpyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8ocz0zRGQzLmZ1bmN0b3IoZSksUyk6c30sUy5kZXNjcmlwdGlvbj0zRGZ1bmN0aW9uKGU9
Cil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RlLFMpOm99LFMuc2hvd0xhYmVscz0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcj0KZ3VtZW50cy5sZW5ndGg/KGw9M0RlLFMpOmx9LFMubGFiZWxT
dW5iZWFtTGF5b3V0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtPQplbnRzLmxlbmd0aD8oZz0z
RGUsUyk6Z30sUy5kb251dExhYmVsc091dHNpZGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnQ9CnMubGVuZ3RoPyhoPTNEZSxTKTpofSxTLnBpZUxhYmVsc091dHNpZGU9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbj0KZ3RoPyhjPTNEZSxTKTpjfSxTLmxhYmVsVHlwZT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxwPQo9M0RwfHwia2V5IixT
KTpwfSxTLmRvbnV0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09M0Rl
LFMpOm09Cn0sUy5kb251dFJhdGlvPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHc9M0RlLFMpOnd9LFMuc3RhcnRBbj0KZ2xlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHk9M0RlLFMpOnl9LFMuZW5kQW5nbGU9M0RmdW5jdGlvPQpuKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhiPTNEZSxTKTpifSxTLmlkPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW49CnRzLmxlbmd0aD8odT0zRGUsUyk6dX0sUy5jb2xvcj0zRGZ1bmN0aW9uKHQpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZT0KLnV0aWxzLmdldENvbG9yKHQpLFMpOmF9LFMu
dmFsdWVGb3JtYXQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0PQpoPyhmPTNE
ZSxTKTpmfSxTLmxhYmVsVGhyZXNob2xkPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KHY9M0Q9CmUsUyk6dn0sU30sZS5tb2RlbHMucGllQ2hhcnQ9M0RmdW5jdGlvbigpe2Z1
bmN0aW9uIHYoZSl7cmV0dXJuIGUuZWFjaChmdW5jdD0KaW9uKGUpe3ZhciB1PTNEZDMuc2VsZWN0
KHRoaXMpLGE9M0R0aGlzLGY9M0QoaXx8cGFyc2VJbnQodS5zdHlsZSgid2lkdGgiKSl8PQp8OTYw
KS1yLmxlZnQtci5yaWdodCxkPTNEKHN8fHBhcnNlSW50KHUuc3R5bGUoImhlaWdodCIpKXx8NDAw
KS1yLnRvcC1yLmJvdHQ9Cm9tO3YudXBkYXRlPTNEZnVuY3Rpb24oKXt1LmNhbGwodil9LHYuY29u
dGFpbmVyPTNEdGhpcyxsLmRpc2FibGVkPTNEZS5tYXAoZj0KdW5jdGlvbihlKXtyZXR1cm4hIWUu
ZGlzYWJsZWR9KTtpZighYyl7dmFyIG07Yz0zRHt9O2ZvcihtIGluIGwpbFttXWluc3RhbmNlPQpv
ZiBBcnJheT9jW21dPTNEbFttXS5zbGljZSgwKTpjW21dPTNEbFttXX1pZighZXx8IWUubGVuZ3Ro
KXt2YXIgZz0zRHUuc2VsZWM9CnRBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFtoXSk7cmV0dXJuIGcu
ZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIj0KbnZkMyBudi1ub0RhdGEiKS5h
dHRyKCJkeSIsIi0uN2VtIikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiksZy5hdHRyKCJ4
PQoiLHIubGVmdCtmLzIpLmF0dHIoInkiLHIudG9wK2QvMikudGV4dChmdW5jdGlvbihlKXtyZXR1
cm4gZX0pLHZ9dS5zZWxlY3RBbGw9CigiLm52LW5vRGF0YSIpLnJlbW92ZSgpO3ZhciB5PTNEdS5z
ZWxlY3RBbGwoImcubnYtd3JhcC5udi1waWVDaGFydCIpLmRhdGEoWz0KZV0pLGI9M0R5LmVudGVy
KCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtcGllQ2hhcnQiKS5h
cHBlPQpuZCgiZyIpLHc9M0R5LnNlbGVjdCgiZyIpO2IuYXBwZW5kKCJnIikuYXR0cigiY2xhc3Mi
LCJudi1waWVXcmFwIiksYi5hcHBlbmQ9CigiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kV3Jh
cCIpLG8mJihuLndpZHRoKGYpLmtleSh0LngoKSkseS5zZWxlY3QoIi5udj0KLWxlZ2VuZFdyYXAi
KS5kYXR1bShlKS5jYWxsKG4pLHIudG9wIT0zRG4uaGVpZ2h0KCkmJihyLnRvcD0zRG4uaGVpZ2h0
KCksZD0KPTNEKHN8fHBhcnNlSW50KHUuc3R5bGUoImhlaWdodCIpKXx8NDAwKS1yLnRvcC1yLmJv
dHRvbSkseS5zZWxlY3QoIi5udi1sZWdlPQpuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFu
c2xhdGUoMCwiKyAtci50b3ArIikiKSkseS5hdHRyKCJ0cmFuc2Zvcm0iLCI9CnRyYW5zbGF0ZSgi
K3IubGVmdCsiLCIrci50b3ArIikiKSx0LndpZHRoKGYpLmhlaWdodChkKTt2YXIgRT0zRHcuc2Vs
ZWN0KCIubj0Kdi1waWVXcmFwIikuZGF0dW0oW2VdKTtkMy50cmFuc2l0aW9uKEUpLmNhbGwodCks
bi5kaXNwYXRjaC5vbigic3RhdGVDaGFuZ2UiPQosZnVuY3Rpb24oZSl7bD0zRGUscC5zdGF0ZUNo
YW5nZShsKSx2LnVwZGF0ZSgpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXM9CmVvdXQudG9v
bHRpcCIsZnVuY3Rpb24oZSl7cC50b29sdGlwSGlkZShlKX0pLHAub24oImNoYW5nZVN0YXRlIixm
dW5jdGlvbih0KT0Ke3R5cGVvZiB0LmRpc2FibGVkIT0zRCJ1bmRlZmluZWQiJiYoZS5mb3JFYWNo
KGZ1bmN0aW9uKGUsbil7ZS5kaXNhYmxlZD0zRHQuPQpkaXNhYmxlZFtuXX0pLGwuZGlzYWJsZWQ9
M0R0LmRpc2FibGVkKSx2LnVwZGF0ZSgpfSl9KSx2fXZhciB0PTNEZS5tb2RlbHMucGk9CmUoKSxu
PTNEZS5tb2RlbHMubGVnZW5kKCkscj0zRHt0b3A6MzAscmlnaHQ6MjAsYm90dG9tOjIwLGxlZnQ6
MjB9LGk9M0RudWxsLD0Kcz0zRG51bGwsbz0zRCEwLHU9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigp
LGE9M0QhMCxmPTNEZnVuY3Rpb24oZSx0LG4scil7cmV0PQp1cm4iPGgzPiIrZSsiPC9oMz4iKyI8
cD4iK3QrIjwvcD4ifSxsPTNEe30sYz0zRG51bGwsaD0zRCJObyBEYXRhIEF2YWlsYWJsZS49CiIs
cD0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdGVDaGFuZ2Ui
LCJjaGFuZ2VTdGF0ZSIpLD0KZD0zRGZ1bmN0aW9uKG4scil7dmFyIGk9M0R0LmRlc2NyaXB0aW9u
KCkobi5wb2ludCl8fHQueCgpKG4ucG9pbnQpLHM9M0RuLnBvPQpzWzBdKyhyJiZyLm9mZnNldExl
ZnR8fDApLG89M0RuLnBvc1sxXSsociYmci5vZmZzZXRUb3B8fDApLHU9M0R0LnZhbHVlRm9ybWE9
CnQoKSh0LnkoKShuLnBvaW50KSksYT0zRGYoaSx1LG4sdik7ZS50b29sdGlwLnNob3coW3Msb10s
YSxuLnZhbHVlPDA/Im4iOiJzIj0KLG51bGwscil9O3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVt
ZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPQo9M0RbZS5wb3NbMF0rci5s
ZWZ0LGUucG9zWzFdK3IudG9wXSxwLnRvb2x0aXBTaG93KGUpfSkscC5vbigidG9vbHRpcFNob3ci
LGY9CnVuY3Rpb24oZSl7YSYmZChlKX0pLHAub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbigpe2Em
JmUudG9vbHRpcC5jbGVhbnVwKCl9KT0KLHYubGVnZW5kPTNEbix2LmRpc3BhdGNoPTNEcCx2LnBp
ZT0zRHQsZDMucmViaW5kKHYsdCwidmFsdWVGb3JtYXQiLCJ2YWx1ZXMiPQosIngiLCJ5IiwiZGVz
Y3JpcHRpb24iLCJpZCIsInNob3dMYWJlbHMiLCJkb251dExhYmVsc091dHNpZGUiLCJwaWVMYWJl
bHNPdXQ9CnNpZGUiLCJsYWJlbFR5cGUiLCJkb251dCIsImRvbnV0UmF0aW8iLCJsYWJlbFRocmVz
aG9sZCIpLHYub3B0aW9ucz0zRGUudXRpbD0Kcy5vcHRpb25zRnVuYy5iaW5kKHYpLHYubWFyZ2lu
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHIudG9wPQo9M0R0eXBlb2Yg
ZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6ci50b3Asci5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0
IT0zRCJ1bmQ9CmVmaW5lZCI/ZS5yaWdodDpyLnJpZ2h0LHIuYm90dG9tPTNEdHlwZW9mIGUuYm90
dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOj0Kci5ib3R0b20sci5sZWZ0PTNEdHlwZW9mIGUu
bGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6ci5sZWZ0LHYpOnJ9LHYud2lkdGg9Cj0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPTNEZSx2KTppfSx2LmhlaWdodD0zRGZ1
bmN0aW9uKGUpez0KcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLHYpOnN9LHYuY29sb3I9
M0RmdW5jdGlvbihyKXtyZXR1cm4gYXJndW1lbnRzPQoubGVuZ3RoPyh1PTNEZS51dGlscy5nZXRD
b2xvcihyKSxuLmNvbG9yKHUpLHQuY29sb3IodSksdik6dX0sdi5zaG93TGVnZW5kPQo9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsdik6b30sdi50b29sdGlwcz0z
RGZ1bmN0aW9uKGU9Cil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLHYpOmF9LHYudG9v
bHRpcENvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cj0KbiBhcmd1bWVudHMubGVuZ3RoPyhmPTNE
ZSx2KTpmfSx2LnN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5nPQp0aD8o
bD0zRGUsdik6bH0sdi5kZWZhdWx0U3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oYz0zRGU9Cix2KTpjfSx2Lm5vRGF0YT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhoPTNEZSx2KTpofSx2fSxlLm1vZD0KZWxzLnNjYXR0ZXI9M0RmdW5jdGlv
bigpe2Z1bmN0aW9uIEkocSl7cmV0dXJuIHEuZWFjaChmdW5jdGlvbihJKXtmdW5jdGlvbiBRPQoo
KXtpZighZylyZXR1cm4hMTt2YXIgZSxpPTNEZDMubWVyZ2UoSS5tYXAoZnVuY3Rpb24oZSx0KXty
ZXR1cm4gZS52YWx1ZXMubWE9CnAoZnVuY3Rpb24oZSxuKXt2YXIgcj0zRGYoZSxuKSxpPTNEbChl
LG4pO3JldHVybltvKHIpLHUoaSksdCxuLGVdfSkuZmlsdGVyKD0KZnVuY3Rpb24oZSx0KXtyZXR1
cm4gYihlWzRdLHQpfSl9KSk7aWYoRD0zRD0zRD0zRCEwKXtpZih4KXt2YXIgYT0zRFguc2VsZWN0
PQooImRlZnMiKS5zZWxlY3RBbGwoIi5udi1wb2ludC1jbGlwcyIpLmRhdGEoW3NdKS5lbnRlcigp
O2EuYXBwZW5kKCJjbGlwUGF0aCI9CikuYXR0cigiY2xhc3MiLCJudi1wb2ludC1jbGlwcyIpLmF0
dHIoImlkIiwibnYtcG9pbnRzLWNsaXAtIitzKTt2YXIgYz0zRFgucz0KZWxlY3QoIiNudi1wb2lu
dHMtY2xpcC0iK3MpLnNlbGVjdEFsbCgiY2lyY2xlIikuZGF0YShpKTtjLmVudGVyKCkuYXBwZW5k
KCJjPQppcmNsZSIpLmF0dHIoInIiLFQpLGMuZXhpdCgpLnJlbW92ZSgpLGMuYXR0cigiY3giLGZ1
bmN0aW9uKGUpe3JldHVybiBlWzBdfSk9Ci5hdHRyKCJjeSIsZnVuY3Rpb24oZSl7cmV0dXJuIGVb
MV19KSxYLnNlbGVjdCgiLm52LXBvaW50LXBhdGhzIikuYXR0cigiY2xpcD0KLXBhdGgiLCJ1cmwo
I252LXBvaW50cy1jbGlwLSIrcysiKSIpfWkubGVuZ3RoJiYoaS5wdXNoKFtvLnJhbmdlKClbMF0t
MjAsdS5yPQphbmdlKClbMF0tMjAsbnVsbCxudWxsXSksaS5wdXNoKFtvLnJhbmdlKClbMV0rMjAs
dS5yYW5nZSgpWzFdKzIwLG51bGwsbnVsbF09CiksaS5wdXNoKFtvLnJhbmdlKClbMF0tMjAsdS5y
YW5nZSgpWzBdKzIwLG51bGwsbnVsbF0pLGkucHVzaChbby5yYW5nZSgpWzFdKz0KMjAsdS5yYW5n
ZSgpWzFdLTIwLG51bGwsbnVsbF0pKTt2YXIgaD0zRGQzLmdlb20ucG9seWdvbihbWy0xMCwtMTBd
LFstMTAscisxPQowXSxbbisxMCxyKzEwXSxbbisxMCwtMTBdXSkscD0zRDFlLTY7aT0zRGkuc29y
dChmdW5jdGlvbihlLHQpe3JldHVybiBlWzBdLXQ9ClswXXx8ZVsxXS10WzFdfSk7Zm9yKHZhciBk
PTNEMDtkPGkubGVuZ3RoLTE7KU1hdGguYWJzKGlbZF1bMF0taVtkKzFdWzBdKTxwJj0KJk1hdGgu
YWJzKGlbZF1bMV0taVtkKzFdWzFdKTxwP2kuc3BsaWNlKGQrMSwxKTpkKys7dmFyIHY9M0RkMy5n
ZW9tLnZvcm9ub2koPQppKS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm57ZGF0YTpoLmNsaXAoZSks
c2VyaWVzOmlbdF1bMl0scG9pbnQ6aVt0XVszXX19KSw9Cm09M0RYLnNlbGVjdCgiLm52LXBvaW50
LXBhdGhzIikuc2VsZWN0QWxsKCJwYXRoIikuZGF0YSh2KTttLmVudGVyKCkuYXBwZW5kKD0KInBh
dGgiKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4ibnYtcGF0aC0iK3R9KSxtLmV4
aXQoKS5yZW1vdmUoKSxtPQouYXR0cigiZCIsZnVuY3Rpb24oZSl7cmV0dXJuIWV8fCFlLmRhdGF8
fGUuZGF0YS5sZW5ndGg9M0Q9M0Q9M0QwPyJNIDAgMCI6Ik09CiIrZS5kYXRhLmpvaW4oIkwiKSsi
WiJ9KTt2YXIgeT0zRGZ1bmN0aW9uKGUsbil7aWYoRilyZXR1cm4gMDt2YXIgcj0zRElbZS5zZT0K
cmllc107aWYodHlwZW9mIHI9M0Q9M0QidW5kZWZpbmVkIilyZXR1cm47dmFyIGk9M0RyLnZhbHVl
c1tlLnBvaW50XTtuKHtwb2luPQp0Omksc2VyaWVzOnIscG9zOltvKGYoaSxlLnBvaW50KSkrdC5s
ZWZ0LHUobChpLGUucG9pbnQpKSt0LnRvcF0sc2VyaWVzSW5kZXg9CjplLnNlcmllcyxwb2ludElu
ZGV4OmUucG9pbnR9KX07bS5vbigiY2xpY2siLGZ1bmN0aW9uKGUpe3koZSxfLmVsZW1lbnRDbGlj
az0KKX0pLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKGUpe3koZSxfLmVsZW1lbnRNb3VzZW92ZXIp
fSkub24oIm1vdXNlb3V0IixmdW5jPQp0aW9uKGUsdCl7eShlLF8uZWxlbWVudE1vdXNlb3V0KX0p
fWVsc2UgWC5zZWxlY3QoIi5udi1ncm91cHMiKS5zZWxlY3RBbGwoIi49Cm52LWdyb3VwIikuc2Vs
ZWN0QWxsKCIubnYtcG9pbnQiKS5vbigiY2xpY2siLGZ1bmN0aW9uKGUsbil7aWYoRnx8IUlbZS5z
ZXJpZT0Kc10pcmV0dXJuIDA7dmFyIHI9M0RJW2Uuc2VyaWVzXSxpPTNEci52YWx1ZXNbbl07Xy5l
bGVtZW50Q2xpY2soe3BvaW50Omksc2VyPQppZXM6cixwb3M6W28oZihpLG4pKSt0LmxlZnQsdShs
KGksbikpK3QudG9wXSxzZXJpZXNJbmRleDplLnNlcmllcyxwb2ludEluZGU9Cng6bn0pfSkub24o
Im1vdXNlb3ZlciIsZnVuY3Rpb24oZSxuKXtpZihGfHwhSVtlLnNlcmllc10pcmV0dXJuIDA7dmFy
IHI9M0RJWz0KZS5zZXJpZXNdLGk9M0RyLnZhbHVlc1tuXTtfLmVsZW1lbnRNb3VzZW92ZXIoe3Bv
aW50Omksc2VyaWVzOnIscG9zOltvKGYoaSxuPQopKSt0LmxlZnQsdShsKGksbikpK3QudG9wXSxz
ZXJpZXNJbmRleDplLnNlcmllcyxwb2ludEluZGV4Om59KX0pLm9uKCJtb3VzZW89CnV0IixmdW5j
dGlvbihlLHQpe2lmKEZ8fCFJW2Uuc2VyaWVzXSlyZXR1cm4gMDt2YXIgbj0zRElbZS5zZXJpZXNd
LHI9M0RuLnZhbD0KdWVzW3RdO18uZWxlbWVudE1vdXNlb3V0KHtwb2ludDpyLHNlcmllczpuLHNl
cmllc0luZGV4OmUuc2VyaWVzLHBvaW50SW5kZXg6PQp0fSl9KTtGPTNEITF9dmFyIHE9M0RuLXQu
bGVmdC10LnJpZ2h0LFI9M0RyLXQudG9wLXQuYm90dG9tLFU9M0RkMy5zZWxlY3QodGg9CmlzKTtJ
LmZvckVhY2goZnVuY3Rpb24oZSx0KXtlLnZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2Uuc2Vy
aWVzPTNEdH0pfSk7dj0KYXIgVz0zRE4mJkMmJkE/W106ZDMubWVyZ2UoSS5tYXAoZnVuY3Rpb24o
ZSl7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlvbihlPQosdCl7cmV0dXJue3g6ZihlLHQpLHk6
bChlLHQpLHNpemU6YyhlLHQpfX0pfSkpO28uZG9tYWluKE58fGQzLmV4dGVudChXLm1hcCg9CmZ1
bmN0aW9uKGUpe3JldHVybiBlLnh9KS5jb25jYXQoZCkpKSx3JiZJWzBdP28ucmFuZ2Uoa3x8Wyhx
KkUrcSkvKDIqSVswXS52YT0KbHVlcy5sZW5ndGgpLHEtcSooMStFKS8oMipJWzBdLnZhbHVlcy5s
ZW5ndGgpXSk6by5yYW5nZShrfHxbMCxxXSksdS5kb21haW4oPQpDfHxkMy5leHRlbnQoVy5tYXAo
ZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0pLmNvbmNhdCh2KSkpLnJhbmdlKEx8fFtSLDBdKSxhLmQ9
Cm9tYWluKEF8fGQzLmV4dGVudChXLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5zaXplfSkuY29u
Y2F0KG0pKSkucmFuZ2UoT3x8Wz0KMTYsMjU2XSk7aWYoby5kb21haW4oKVswXT0zRD0zRD0zRG8u
ZG9tYWluKClbMV18fHUuZG9tYWluKClbMF09M0Q9M0Q9M0R1LmRvPQptYWluKClbMV0pTT0zRCEw
O28uZG9tYWluKClbMF09M0Q9M0Q9M0RvLmRvbWFpbigpWzFdJiYoby5kb21haW4oKVswXT9vLmRv
bWE9CmluKFtvLmRvbWFpbigpWzBdLW8uZG9tYWluKClbMF0qLjAxLG8uZG9tYWluKClbMV0rby5k
b21haW4oKVsxXSouMDFdKTpvLmRvbT0KYWluKFstMSwxXSkpLHUuZG9tYWluKClbMF09M0Q9M0Q9
M0R1LmRvbWFpbigpWzFdJiYodS5kb21haW4oKVswXT91LmRvbWFpbihbPQp1LmRvbWFpbigpWzBd
LXUuZG9tYWluKClbMF0qLjAxLHUuZG9tYWluKClbMV0rdS5kb21haW4oKVsxXSouMDFdKTp1LmRv
bWFpbig9ClstMSwxXSkpLGlzTmFOKG8uZG9tYWluKClbMF0pJiZvLmRvbWFpbihbLTEsMV0pLGlz
TmFOKHUuZG9tYWluKClbMF0pJiZ1LmRvbT0KYWluKFstMSwxXSksUD0zRFB8fG8sSD0zREh8fHUs
Qj0zREJ8fGE7dmFyIFg9M0RVLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LXNjPQphdHRlciIpLmRh
dGEoW0ldKSxWPTNEWC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13
cmFwIG52LXM9CmNhdHRlciBudi1jaGFydC0iK3MrKE0/IiBudi1zaW5nbGUtcG9pbnQiOiIiKSks
JD0zRFYuYXBwZW5kKCJkZWZzIiksSj0zRFYuYT0KcHBlbmQoImciKSxLPTNEWC5zZWxlY3QoImci
KTtKLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtZ3JvdXBzIiksSi5hcHBlPQpuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnYtcG9pbnQtcGF0aHMiKSxYLmF0dHIoInRyYW5zZm9ybSIsInRyYW5z
bGF0ZSgiK3QubGU9CmZ0KyIsIit0LnRvcCsiKSIpLCQuYXBwZW5kKCJjbGlwUGF0aCIpLmF0dHIo
ImlkIiwibnYtZWRnZS1jbGlwLSIrcykuYXBwZW5kKD0KInJlY3QiKSxYLnNlbGVjdCgiI252LWVk
Z2UtY2xpcC0iK3MrIiByZWN0IikuYXR0cigid2lkdGgiLHEpLmF0dHIoImhlaWdodCIsPQpSPjA/
UjowKSxLLmF0dHIoImNsaXAtcGF0aCIsUz8idXJsKCNudi1lZGdlLWNsaXAtIitzKyIpIjoiIiks
Rj0zRCEwO3ZhciBHPQo9M0RYLnNlbGVjdCgiLm52LWdyb3VwcyIpLnNlbGVjdEFsbCgiLm52LWdy
b3VwIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZX09CixmdW5jdGlvbihlKXtyZXR1cm4gZS5r
ZXl9KTtHLmVudGVyKCkuYXBwZW5kKCJnIikuc3R5bGUoInN0cm9rZS1vcGFjaXR5IiwxZT0KLTYp
LnN0eWxlKCJmaWxsLW9wYWNpdHkiLDFlLTYpLEcuZXhpdCgpLnJlbW92ZSgpLEcuYXR0cigiY2xh
c3MiLGZ1bmN0aW9uKGUsPQp0KXtyZXR1cm4ibnYtZ3JvdXAgbnYtc2VyaWVzLSIrdH0pLmNsYXNz
ZWQoImhvdmVyIixmdW5jdGlvbihlKXtyZXR1cm4gZS5ob3Y9CmVyfSksRy5zdHlsZSgiZmlsbCIs
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaShlLHQpfSkuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZT0K
LHQpe3JldHVybiBpKGUsdCl9KS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDEpLnN0eWxlKCJmaWxs
LW9wYWNpdHkiLC41KTtpZihwPQope3ZhciBZPTNERy5zZWxlY3RBbGwoImNpcmNsZS5udi1wb2lu
dCIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzfSw9CnkpO1kuZW50ZXIoKS5hcHBl
bmQoImNpcmNsZSIpLnN0eWxlKCJmaWxsIixmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfSku
cz0KdHlsZSgic3Ryb2tlIixmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfSkuYXR0cigiY3gi
LGZ1bmN0aW9uKHQsbil7cmV0dXJuPQogZS51dGlscy5OYU50b1plcm8oUChmKHQsbikpKX0pLmF0
dHIoImN5IixmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnQ9Cm9aZXJvKEgobCh0LG4p
KSl9KS5hdHRyKCJyIixmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoLnNxcnQoYShjKGUsdCkpL01h
dGguUD0KSSl9KSxZLmV4aXQoKS5yZW1vdmUoKSxHLmV4aXQoKS5zZWxlY3RBbGwoInBhdGgubnYt
cG9pbnQiKS5hdHRyKCJjeCIsZnVuY3RpPQpvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVy
byhvKGYodCxuKSkpfSkuYXR0cigiY3kiLGZ1bmN0aW9uKHQsbil7cmV0dXI9Cm4gZS51dGlscy5O
YU50b1plcm8odShsKHQsbikpKX0pLnJlbW92ZSgpLFkuZWFjaChmdW5jdGlvbihlLHQpe2QzLnNl
bGVjdCh0aD0KaXMpLmNsYXNzZWQoIm52LXBvaW50IiwhMCkuY2xhc3NlZCgibnYtcG9pbnQtIit0
LCEwKS5jbGFzc2VkKCJob3ZlciIsITEpfSksPQpZLmF0dHIoImN4IixmdW5jdGlvbih0LG4pe3Jl
dHVybiBlLnV0aWxzLk5hTnRvWmVybyhvKGYodCxuKSkpfSkuYXR0cigiY3kiLGY9CnVuY3Rpb24o
dCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8odShsKHQsbikpKX0pLmF0dHIoInIiLGZ1bmN0
aW9uKGUsdCl7cj0KZXR1cm4gTWF0aC5zcXJ0KGEoYyhlLHQpKS9NYXRoLlBJKX0pfWVsc2V7dmFy
IFk9M0RHLnNlbGVjdEFsbCgicGF0aC5udi1wb2luPQp0IikuZGF0YShmdW5jdGlvbihlKXtyZXR1
cm4gZS52YWx1ZXN9KTtZLmVudGVyKCkuYXBwZW5kKCJwYXRoIikuc3R5bGUoImZpbGw9CiIsZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcn0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIGUuY29sbz0Kcn0pLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4i
dHJhbnNsYXRlKCIrUChmKGUsdCkpKyIsIitIKGwoZSx0PQopKSsiKSJ9KS5hdHRyKCJkIixkMy5z
dmcuc3ltYm9sKCkudHlwZShoKS5zaXplKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoYyhlLHQ9Cikp
fSkpLFkuZXhpdCgpLnJlbW92ZSgpLEcuZXhpdCgpLnNlbGVjdEFsbCgicGF0aC5udi1wb2ludCIp
LmF0dHIoInRyYW5zZm9ybT0KIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitvKGYo
ZSx0KSkrIiwiK3UobChlLHQpKSsiKSJ9KS5yZW1vdmUoKSxZPQouZWFjaChmdW5jdGlvbihlLHQp
e2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJudi1wb2ludCIsITApLmNsYXNzZWQoIm52LXBvaW49
CnQtIit0LCEwKS5jbGFzc2VkKCJob3ZlciIsITEpfSksWS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0
aW9uKGUsdCl7cmV0dXJuInRyYT0KbnNsYXRlKCIrbyhmKGUsdCkpKyIsIit1KGwoZSx0KSkrIiki
fSkuYXR0cigiZCIsZDMuc3ZnLnN5bWJvbCgpLnR5cGUoaCkuc2l6PQplKGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIGEoYyhlLHQpKX0pKX1jbGVhclRpbWVvdXQoaiksaj0zRHNldFRpbWVvdXQoUSwzMDAp
LFA9Cj0zRG8uY29weSgpLEg9M0R1LmNvcHkoKSxCPTNEYS5jb3B5KCl9KSxJfXZhciB0PTNEe3Rv
cDowLHJpZ2h0OjAsYm90dG9tOjAsbD0KZWZ0OjB9LG49M0Q5NjAscj0zRDUwMCxpPTNEZS51dGls
cy5kZWZhdWx0Q29sb3IoKSxzPTNETWF0aC5mbG9vcihNYXRoLnJhbmRvPQptKCkqMWU1KSxvPTNE
ZDMuc2NhbGUubGluZWFyKCksdT0zRGQzLnNjYWxlLmxpbmVhcigpLGE9M0RkMy5zY2FsZS5saW5l
YXIoKSw9CmY9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS54fSxsPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGUueX0sYz0zRGZ1bmN0aW9uKGUpe3JldD0KdXJuIGUuc2l6ZXx8MX0saD0zRGZ1bmN0aW9uKGUp
e3JldHVybiBlLnNoYXBlfHwiY2lyY2xlIn0scD0zRCEwLGQ9M0RbXSx2PTNEPQpbXSxtPTNEW10s
Zz0zRCEwLHk9M0RudWxsLGI9M0RmdW5jdGlvbihlKXtyZXR1cm4hZS5ub3RBY3RpdmV9LHc9M0Qh
MSxFPTNELjE9CixTPTNEITEseD0zRCEwLFQ9M0RmdW5jdGlvbigpe3JldHVybiAyNX0sTj0zRG51
bGwsQz0zRG51bGwsaz0zRG51bGwsTD0zRG51bD0KbCxBPTNEbnVsbCxPPTNEbnVsbCxNPTNEITEs
Xz0zRGQzLmRpc3BhdGNoKCJlbGVtZW50Q2xpY2siLCJlbGVtZW50TW91c2VvdmVyPQoiLCJlbGVt
ZW50TW91c2VvdXQiKSxEPTNEITAsUCxILEIsaixGPTNEITE7cmV0dXJuIEkuY2xlYXJIaWdobGln
aHRzPTNEZnVuY3Q9Cmlvbigpe2QzLnNlbGVjdEFsbCgiLm52LWNoYXJ0LSIrcysiIC5udi1wb2lu
dC5ob3ZlciIpLmNsYXNzZWQoImhvdmVyIiwhMSl9LD0KSS5oaWdobGlnaHRQb2ludD0zRGZ1bmN0
aW9uKGUsdCxuKXtkMy5zZWxlY3QoIi5udi1jaGFydC0iK3MrIiAubnYtc2VyaWVzLSIrPQplKyIg
Lm52LXBvaW50LSIrdCkuY2xhc3NlZCgiaG92ZXIiLG4pfSxfLm9uKCJlbGVtZW50TW91c2VvdmVy
LnBvaW50IixmdW5jdGk9Cm9uKGUpe2cmJkkuaGlnaGxpZ2h0UG9pbnQoZS5zZXJpZXNJbmRleCxl
LnBvaW50SW5kZXgsITApfSksXy5vbigiZWxlbWVudE1vdT0Kc2VvdXQucG9pbnQiLGZ1bmN0aW9u
KGUpe2cmJkkuaGlnaGxpZ2h0UG9pbnQoZS5zZXJpZXNJbmRleCxlLnBvaW50SW5kZXgsITEpPQp9
KSxJLmRpc3BhdGNoPTNEXyxJLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoSSks
SS54PTNEZnVuY3Rpb24oZSk9CntyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGQzLmZ1bmN0
b3IoZSksSSk6Zn0sSS55PTNEZnVuY3Rpb24oZSl7cmV0dXJuID0KYXJndW1lbnRzLmxlbmd0aD8o
bD0zRGQzLmZ1bmN0b3IoZSksSSk6bH0sSS5zaXplPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
PQplbnRzLmxlbmd0aD8oYz0zRGQzLmZ1bmN0b3IoZSksSSk6Y30sSS5tYXJnaW49M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnQ9CnMubGVuZ3RoPyh0LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0Qi
dW5kZWZpbmVkIj9lLnRvcDp0LnRvcCx0LnJpZ2h0PTNEdHlwZW9mID0KZS5yaWdodCE9M0QidW5k
ZWZpbmVkIj9lLnJpZ2h0OnQucmlnaHQsdC5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVu
ZGVmPQppbmVkIj9lLmJvdHRvbTp0LmJvdHRvbSx0LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1
bmRlZmluZWQiP2UubGVmdDp0LmxlZnQ9CixJKTp0fSxJLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49M0RlLEkpOm59LEkuaGVpZ2h0PQo9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0zRGUsSSk6cn0sSS54U2NhbGU9M0RmdW5jdGlv
bihlKXs9CnJldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZSxJKTpvfSxJLnlTY2FsZT0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudD0Kcy5sZW5ndGg/KHU9M0RlLEkpOnV9LEkuelNjYWxl
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlPQosSSk6YX0sSS54
RG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE49M0RlLEkpOk59
LEkueURvbWE9CmluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEM9M0Rl
LEkpOkN9LEkuc2l6ZURvbWFpbj0zRGZ1bmN0aT0Kb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KEE9M0RlLEkpOkF9LEkueFJhbmdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyPQpndW1lbnRz
Lmxlbmd0aD8oaz0zRGUsSSk6a30sSS55UmFuZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD89CihMPTNEZSxJKTpMfSxJLnNpemVSYW5nZT0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhPPTNEZSxJKTpPfT0KLEkuZm9yY2VYPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9M0RlLEkpOmR9LEkuZm9yY2VZPTNEZnVuPQpjdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj0zRGUsSSk6dn0sSS5mb3JjZVNpemU9M0Rm
dW5jdGlvbihlKXtyZXQ9CnVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNEZSxJKTptfSxJLmludGVy
YWN0aXZlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZT0KbnRzLmxlbmd0aD8oZz0zRGUsSSk6
Z30sSS5wb2ludEtleT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PQo9
M0RlLEkpOnl9LEkucG9pbnRBY3RpdmU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oYj0zRGUsSSk6Yn09CixJLnBhZERhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8odz0zRGUsSSk6d30sSS5wYWREYXRhT3V0ZT0Kcj0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPTNEZSxJKTpFfSxJLmNsaXBFZGdlPTNEZnVuY3Rpb24o
PQplKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUz0zRGUsSSk6U30sSS5jbGlwVm9yb25vaT0z
RGZ1bmN0aW9uKGUpe3JldHVybiA9CmFyZ3VtZW50cy5sZW5ndGg/KHg9M0RlLEkpOnh9LEkudXNl
Vm9yb25vaT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubD0KZW5ndGg/KEQ9M0RlLEQ9
M0Q9M0Q9M0QhMSYmKHg9M0QhMSksSSk6RH0sSS5jbGlwUmFkaXVzPTNEZnVuY3Rpb24oZSl7cmV0
dXJuPQogYXJndW1lbnRzLmxlbmd0aD8oVD0zRGUsSSk6VH0sSS5jb2xvcj0zRGZ1bmN0aW9uKHQp
e3JldHVybiBhcmd1bWVudHMubGVuZ3Q9Cmg/KGk9M0RlLnV0aWxzLmdldENvbG9yKHQpLEkpOml9
LEkuc2hhcGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbj0KZ3RoPyhoPTNEZSxJ
KTpofSxJLm9ubHlDaXJjbGVzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHA9M0RlPQosSSk6cH0sSS5pZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhzPTNEZSxJKTpzfSxJLnNpbmdsZVBvaW49CnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oTT0zRGUsSSk6TX0sSX0sZS5tb2RlbHMuc2NhdHRlckNoYT0KcnQ9M0RmdW5j
dGlvbigpe2Z1bmN0aW9uIEYoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXtmdW5jdGlvbiBK
KCl7aWYoVClyPQpldHVybiBXLnNlbGVjdCgiLm52LXBvaW50LXBhdGhzIikuc3R5bGUoInBvaW50
ZXItZXZlbnRzIiwiYWxsIiksITE7Vy5zZWxlY3Q9CigiLm52LXBvaW50LXBhdGhzIikuc3R5bGUo
InBvaW50ZXItZXZlbnRzIiwibm9uZSIpO3ZhciBpPTNEZDMubW91c2UodGhpcyk7aD0KLmRpc3Rv
cnRpb24oeCkuZm9jdXMoaVswXSkscC5kaXN0b3J0aW9uKHgpLmZvY3VzKGlbMV0pLFcuc2VsZWN0
KCIubnYtc2NhdHRlPQpyV3JhcCIpLmNhbGwodCksYiYmVy5zZWxlY3QoIi5udi14Lm52LWF4aXMi
KS5jYWxsKG4pLHcmJlcuc2VsZWN0KCIubnYteS5udi09CmF4aXMiKS5jYWxsKHIpLFcuc2VsZWN0
KCIubnYtZGlzdHJpYnV0aW9uWCIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldD0KdXJu
IWUuZGlzYWJsZWR9KSkuY2FsbChvKSxXLnNlbGVjdCgiLm52LWRpc3RyaWJ1dGlvblkiKS5kYXR1
bShlLmZpbHRlcihmdW5jPQp0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkpLmNhbGwodSl9dmFy
IEM9M0RkMy5zZWxlY3QodGhpcyksaz0zRHRoaXMsTD0zRCg9CmZ8fHBhcnNlSW50KEMuc3R5bGUo
IndpZHRoIikpfHw5NjApLWEubGVmdC1hLnJpZ2h0LEQ9M0QobHx8cGFyc2VJbnQoQy5zdHlsZT0K
KCJoZWlnaHQiKSl8fDQwMCktYS50b3AtYS5ib3R0b207Ri51cGRhdGU9M0RmdW5jdGlvbigpe0Mu
Y2FsbChGKX0sRi5jb250YWluPQplcj0zRHRoaXMsQS5kaXNhYmxlZD0zRGUubWFwKGZ1bmN0aW9u
KGUpe3JldHVybiEhZS5kaXNhYmxlZH0pO2lmKCFPKXt2YXIgSTs9Ck89M0R7fTtmb3IoSSBpbiBB
KUFbSV1pbnN0YW5jZW9mIEFycmF5P09bSV09M0RBW0ldLnNsaWNlKDApOk9bSV09M0RBW0ldfWlm
KD0KIWV8fCFlLmxlbmd0aHx8IWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5s
ZW5ndGh9KS5sZW5ndGgpe3ZhciBxPQo9M0RDLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEo
W19dKTtyZXR1cm4gcS5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHI9CigiY2xhc3MiLCJudmQz
IG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRk
bGUiKT0KLHEuYXR0cigieCIsYS5sZWZ0K0wvMikuYXR0cigieSIsYS50b3ArRC8yKS50ZXh0KGZ1
bmN0aW9uKGUpe3JldHVybiBlfSksRn1DPQouc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtb3Zl
KCksUD0zRFB8fGgsSD0zREh8fHA7dmFyIFI9M0RDLnNlbGVjdEFsbCgiZy49Cm52LXdyYXAubnYt
c2NhdHRlckNoYXJ0IikuZGF0YShbZV0pLFU9M0RSLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLD0KIm52ZDMgbnYtd3JhcCBudi1zY2F0dGVyQ2hhcnQgbnYtY2hhcnQtIit0LmlkKCkp
LHo9M0RVLmFwcGVuZCgiZyIpLFc9M0RSLnNlPQpsZWN0KCJnIik7ei5hcHBlbmQoInJlY3QiKS5h
dHRyKCJjbGFzcyIsIm52ZDMgbnYtYmFja2dyb3VuZCIpLHouYXBwZW5kKCJnIik9Ci5hdHRyKCJj
bGFzcyIsIm52LXggbnYtYXhpcyIpLHouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15IG52
LWF4aXMiKSx6Lj0KYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1zY2F0dGVyV3JhcCIpLHou
YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1kPQppc3RXcmFwIiksei5hcHBlbmQoImciKS5h
dHRyKCJjbGFzcyIsIm52LWxlZ2VuZFdyYXAiKSx6LmFwcGVuZCgiZyIpLmF0dHIoImM9Cmxhc3Mi
LCJudi1jb250cm9sc1dyYXAiKTtpZih5KXt2YXIgWD0zRFM/TC8yOkw7aS53aWR0aChYKSxSLnNl
bGVjdCgiLm52LWxlZz0KZW5kV3JhcCIpLmRhdHVtKGUpLmNhbGwoaSksYS50b3AhPTNEaS5oZWln
aHQoKSYmKGEudG9wPTNEaS5oZWlnaHQoKSxEPTNEKGx8PQp8cGFyc2VJbnQoQy5zdHlsZSgiaGVp
Z2h0IikpfHw0MDApLWEudG9wLWEuYm90dG9tKSxSLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXA9CiIp
LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhMLVgpKyIsIisgLWEudG9wKyIpIil9UyYm
KHMud2lkdGgoMTgwKS5jbz0KbG9yKFsiIzQ0NCJdKSxXLnNlbGVjdCgiLm52LWNvbnRyb2xzV3Jh
cCIpLmRhdHVtKGopLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zPQpsYXRlKDAsIisgLWEudG9wKyIp
IikuY2FsbChzKSksUi5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIithLmxlZnQrIiwiK2E9
Ci50b3ArIikiKSxFJiZXLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIs
InRyYW5zbGF0ZSgiK0wrIiwwKT0KIiksdC53aWR0aChMKS5oZWlnaHQoRCkuY29sb3IoZS5tYXAo
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8YyhlLHQpfSkuPQpmaWx0ZXIoZnVuY3Rpb24o
dCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZH0pKSxkIT0zRD0zRDAmJnQueERvbWFpbihudWxsKSx2
IT0KPTNEPTNEMCYmdC55RG9tYWluKG51bGwpLFIuc2VsZWN0KCIubnYtc2NhdHRlcldyYXAiKS5k
YXR1bShlLmZpbHRlcihmdW5jdGlvPQpuKGUpe3JldHVybiFlLmRpc2FibGVkfSkpLmNhbGwodCk7
aWYoZCE9M0Q9M0QwKXt2YXIgVj0zRGguZG9tYWluKClbMV0taC5kb209CmFpbigpWzBdO3QueERv
bWFpbihbaC5kb21haW4oKVswXS1kKlYsaC5kb21haW4oKVsxXStkKlZdKX1pZih2IT0zRD0zRDAp
e3Zhcj0KICQ9M0RwLmRvbWFpbigpWzFdLXAuZG9tYWluKClbMF07dC55RG9tYWluKFtwLmRvbWFp
bigpWzBdLXYqJCxwLmRvbWFpbigpWzFdPQordiokXSl9KHYhPTNEPTNEMHx8ZCE9M0Q9M0QwKSYm
Ui5zZWxlY3QoIi5udi1zY2F0dGVyV3JhcCIpLmRhdHVtKGUuZmlsdGVyKGY9CnVuY3Rpb24oZSl7
cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbCh0KSxiJiYobi5zY2FsZShoKS50aWNrcyhuLnRpY2tz
KCkmJm4udD0KaWNrcygpLmxlbmd0aD9uLnRpY2tzKCk6TC8xMDApLnRpY2tTaXplKC1ELDApLFcu
c2VsZWN0KCIubnYteC5udi1heGlzIikuYXR0PQpyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwi
K3AucmFuZ2UoKVswXSsiKSIpLmNhbGwobikpLHcmJihyLnNjYWxlKHApLnRpY2s9CnMoci50aWNr
cygpJiZyLnRpY2tzKCkubGVuZ3RoP3IudGlja3MoKTpELzM2KS50aWNrU2l6ZSgtTCwwKSxXLnNl
bGVjdCgiLm52LT0KeS5udi1heGlzIikuY2FsbChyKSksbSYmKG8uZ2V0RGF0YSh0LngoKSkuc2Nh
bGUoaCkud2lkdGgoTCkuY29sb3IoZS5tYXAoZnVuPQpjdGlvbihlLHQpe3JldHVybiBlLmNvbG9y
fHxjKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmw9CmVkfSkp
LHouc2VsZWN0KCIubnYtZGlzdFdyYXAiKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWRp
c3RyaWJ1dGlvblgiKT0KLFcuc2VsZWN0KCIubnYtZGlzdHJpYnV0aW9uWCIpLmF0dHIoInRyYW5z
Zm9ybSIsInRyYW5zbGF0ZSgwLCIrcC5yYW5nZSgpWzBdPQorIikiKS5kYXR1bShlLmZpbHRlcihm
dW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKS5jYWxsKG8pKSxnJiYodS5nZXREYXQ9CmEo
dC55KCkpLnNjYWxlKHApLndpZHRoKEQpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJu
IGUuY29sb3J8fGMoZSx0KT0KfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlz
YWJsZWR9KSksei5zZWxlY3QoIi5udi1kaXN0V3JhcCIpLmFwPQpwZW5kKCJnIikuYXR0cigiY2xh
c3MiLCJudi1kaXN0cmlidXRpb25ZIiksVy5zZWxlY3QoIi5udi1kaXN0cmlidXRpb25ZIikuYXQ9
CnRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisoRT9MOi11LnNpemUoKSkrIiwwKSIpLmRhdHVt
KGUuZmlsdGVyKGZ1bmN0aW9uKD0KZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbCh1KSksZDMu
ZmlzaGV5ZSYmKFcuc2VsZWN0KCIubnYtYmFja2dyb3VuZCIpLmF0PQp0cigid2lkdGgiLEwpLmF0
dHIoImhlaWdodCIsRCksVy5zZWxlY3QoIi5udi1iYWNrZ3JvdW5kIikub24oIm1vdXNlbW92ZSIs
Sik9CixXLnNlbGVjdCgiLm52LWJhY2tncm91bmQiKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7VD0z
RCFUfSksdC5kaXNwYXRjaC5vbigiZT0KbGVtZW50Q2xpY2suZnJlZXplRmlzaGV5ZSIsZnVuY3Rp
b24oKXtUPTNEIVR9KSkscy5kaXNwYXRjaC5vbigibGVnZW5kQ2xpY2siPQosZnVuY3Rpb24oZSxp
KXtlLmRpc2FibGVkPTNEIWUuZGlzYWJsZWQseD0zRGUuZGlzYWJsZWQ/MDoyLjUsVy5zZWxlY3Qo
Ii5udi09CmJhY2tncm91bmQiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLGUuZGlzYWJsZWQ/Im5v
bmUiOiJhbGwiKSxXLnNlbGVjdCgiLm52LT0KcG9pbnQtcGF0aHMiKS5zdHlsZSgicG9pbnRlci1l
dmVudHMiLGUuZGlzYWJsZWQ/ImFsbCI6Im5vbmUiKSxlLmRpc2FibGVkPyhoPQouZGlzdG9ydGlv
bih4KS5mb2N1cygwKSxwLmRpc3RvcnRpb24oeCkuZm9jdXMoMCksVy5zZWxlY3QoIi5udi1zY2F0
dGVyV3JhcCI9CikuY2FsbCh0KSxXLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmNhbGwobiksVy5z
ZWxlY3QoIi5udi15Lm52LWF4aXMiKS5jYWxsKD0KcikpOlQ9M0QhMSxGLnVwZGF0ZSgpfSksaS5k
aXNwYXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe0EuZGlzYWJsZWQ9Cj0zRGUuZGlz
YWJsZWQsTS5zdGF0ZUNoYW5nZShBKSxGLnVwZGF0ZSgpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVu
dE1vdXNlb3Zlcj0KLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2QzLnNlbGVjdCgiLm52LWNoYXJ0LSIr
dC5pZCgpKyIgLm52LXNlcmllcy0iK2Uuc2VyaWVzPQpJbmRleCsiIC5udi1kaXN0eC0iK2UucG9p
bnRJbmRleCkuYXR0cigieTEiLGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUucG9zWzFdLUQ9Cn0pLGQz
LnNlbGVjdCgiLm52LWNoYXJ0LSIrdC5pZCgpKyIgLm52LXNlcmllcy0iK2Uuc2VyaWVzSW5kZXgr
IiAubnYtZGlzdHktIj0KK2UucG9pbnRJbmRleCkuYXR0cigieDIiLGUucG9zWzBdK28uc2l6ZSgp
KSxlLnBvcz0zRFtlLnBvc1swXSthLmxlZnQsZS5wb3NbPQoxXSthLnRvcF0sTS50b29sdGlwU2hv
dyhlKX0pLE0ub24oInRvb2x0aXBTaG93IixmdW5jdGlvbihlKXtOJiZCKGUsay5wYXJlbnQ9Ck5v
ZGUpfSksTS5vbigiY2hhbmdlU3RhdGUiLGZ1bmN0aW9uKHQpe3R5cGVvZiB0LmRpc2FibGVkIT0z
RCJ1bmRlZmluZWQiJiYoZT0KLmZvckVhY2goZnVuY3Rpb24oZSxuKXtlLmRpc2FibGVkPTNEdC5k
aXNhYmxlZFtuXX0pLEEuZGlzYWJsZWQ9M0R0LmRpc2FibGVkPQopLEYudXBkYXRlKCl9KSxQPTNE
aC5jb3B5KCksSD0zRHAuY29weSgpfSksRn12YXIgdD0zRGUubW9kZWxzLnNjYXR0ZXIoKSxuPQo9
M0RlLm1vZGVscy5heGlzKCkscj0zRGUubW9kZWxzLmF4aXMoKSxpPTNEZS5tb2RlbHMubGVnZW5k
KCkscz0zRGUubW9kZWxzLmw9CmVnZW5kKCksbz0zRGUubW9kZWxzLmRpc3RyaWJ1dGlvbigpLHU9
M0RlLm1vZGVscy5kaXN0cmlidXRpb24oKSxhPTNEe3RvcDozMD0KLHJpZ2h0OjIwLGJvdHRvbTo1
MCxsZWZ0Ojc1fSxmPTNEbnVsbCxsPTNEbnVsbCxjPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxo
PQo9M0RkMy5maXNoZXllP2QzLmZpc2hleWUuc2NhbGUoZDMuc2NhbGUubGluZWFyKS5kaXN0b3J0
aW9uKDApOnQueFNjYWxlKCkscD0KPTNEZDMuZmlzaGV5ZT9kMy5maXNoZXllLnNjYWxlKGQzLnNj
YWxlLmxpbmVhcikuZGlzdG9ydGlvbigwKTp0LnlTY2FsZSgpLGQ9Cj0zRDAsdj0zRDAsbT0zRCEx
LGc9M0QhMSx5PTNEITAsYj0zRCEwLHc9M0QhMCxFPTNEITEsUz0zRCEhZDMuZmlzaGV5ZSx4PTNE
MD0KLFQ9M0QhMSxOPTNEITAsQz0zRGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4iPHN0cm9uZz4iK3Qr
Ijwvc3Ryb25nPiJ9LGs9M0RmdW5jPQp0aW9uKGUsdCxuKXtyZXR1cm4iPHN0cm9uZz4iK24rIjwv
c3Ryb25nPiJ9LEw9M0RudWxsLEE9M0R7fSxPPTNEbnVsbCxNPTNEZDM9Ci5kaXNwYXRjaCgidG9v
bHRpcFNob3ciLCJ0b29sdGlwSGlkZSIsInN0YXRlQ2hhbmdlIiwiY2hhbmdlU3RhdGUiKSxfPTNE
Ik5vID0KRGF0YSBBdmFpbGFibGUuIixEPTNEMDt0LnhTY2FsZShoKS55U2NhbGUocCksbi5vcmll
bnQoImJvdHRvbSIpLnRpY2tQYWRkaW5nPQooMTApLHIub3JpZW50KEU/InJpZ2h0IjoibGVmdCIp
LnRpY2tQYWRkaW5nKDEwKSxvLmF4aXMoIngiKSx1LmF4aXMoInkiKSxzLnU9CnBkYXRlU3RhdGUo
ITEpO3ZhciBQLEgsQj0zRGZ1bmN0aW9uKGkscyl7dmFyIG89M0RpLnBvc1swXSsocy5vZmZzZXRM
ZWZ0fHwwKT0KLHU9M0RpLnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLGY9M0RpLnBvc1swXSsocy5v
ZmZzZXRMZWZ0fHwwKSxsPTNEcC5yYW5nZSgpPQpbMF0rYS50b3ArKHMub2Zmc2V0VG9wfHwwKSxj
PTNEaC5yYW5nZSgpWzBdK2EubGVmdCsocy5vZmZzZXRMZWZ0fHwwKSxkPTNEaS49CnBvc1sxXSso
cy5vZmZzZXRUb3B8fDApLHY9M0RuLnRpY2tGb3JtYXQoKSh0LngoKShpLnBvaW50LGkucG9pbnRJ
bmRleCkpLG09Cj0zRHIudGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbnQsaS5wb2ludEluZGV4KSk7
QyE9M0RudWxsJiZlLnRvb2x0aXAuc2hvdyhbZj0KLGxdLEMoaS5zZXJpZXMua2V5LHYsbSxpLEYp
LCJuIiwxLHMsIngtbnZ0b29sdGlwIiksayE9M0RudWxsJiZlLnRvb2x0aXAuc2hvPQp3KFtjLGRd
LGsoaS5zZXJpZXMua2V5LHYsbSxpLEYpLCJlIiwxLHMsInktbnZ0b29sdGlwIiksTCE9M0RudWxs
JiZlLnRvb2x0aXA9Ci5zaG93KFtvLHVdLEwoaS5zZXJpZXMua2V5LHYsbSxpLEYpLGkudmFsdWU8
MD8ibiI6InMiLG51bGwscyl9LGo9M0Rbe2tleToiTT0KYWduaWZ5IixkaXNhYmxlZDohMH1dO3Jl
dHVybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3RpPQpvbihl
KXtNLnRvb2x0aXBIaWRlKGUpLGQzLnNlbGVjdCgiLm52LWNoYXJ0LSIrdC5pZCgpKyIgLm52LXNl
cmllcy0iK2Uuc2VyaWU9CnNJbmRleCsiIC5udi1kaXN0eC0iK2UucG9pbnRJbmRleCkuYXR0cigi
eTEiLDApLGQzLnNlbGVjdCgiLm52LWNoYXJ0LSIrdC5pZD0KKCkrIiAubnYtc2VyaWVzLSIrZS5z
ZXJpZXNJbmRleCsiIC5udi1kaXN0eS0iK2UucG9pbnRJbmRleCkuYXR0cigieDIiLHUuc2l6PQpl
KCkpfSksTS5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7TiYmZS50b29sdGlwLmNsZWFudXAo
KX0pLEYuZGlzcGF0Y2g9M0Q9Ck0sRi5zY2F0dGVyPTNEdCxGLmxlZ2VuZD0zRGksRi5jb250cm9s
cz0zRHMsRi54QXhpcz0zRG4sRi55QXhpcz0zRHIsRi5kaXN0WD0KPTNEbyxGLmRpc3RZPTNEdSxk
My5yZWJpbmQoRix0LCJpZCIsImludGVyYWN0aXZlIiwicG9pbnRBY3RpdmUiLCJ4IiwieSIsInNo
PQphcGUiLCJzaXplIiwieFNjYWxlIiwieVNjYWxlIiwielNjYWxlIiwieERvbWFpbiIsInlEb21h
aW4iLCJ4UmFuZ2UiLCJ5UmFuZ2U9CiIsInNpemVEb21haW4iLCJzaXplUmFuZ2UiLCJmb3JjZVgi
LCJmb3JjZVkiLCJmb3JjZVNpemUiLCJjbGlwVm9yb25vaSIsImNsaT0KcFJhZGl1cyIsInVzZVZv
cm9ub2kiKSxGLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoRiksRi5tYXJnaW49
M0RmPQp1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhLnRvcD0zRHR5cGVvZiBl
LnRvcCE9M0QidW5kZWZpbmVkIj9lLnQ9Cm9wOmEudG9wLGEucmlnaHQ9M0R0eXBlb2YgZS5yaWdo
dCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OmEucmlnaHQsYS5ib3R0b209Cj0zRHR5cGVvZiBlLmJv
dHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTphLmJvdHRvbSxhLmxlZnQ9M0R0eXBlb2YgZS5s
ZWZ0IT0KPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OmEubGVmdCxGKTphfSxGLndpZHRoPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sPQplbmd0aD8oZj0zRGUsRik6Zn0sRi5oZWlnaHQ9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGUsRik9CjpsfSxGLmNvbG9y
PTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0RlLnV0aWxzLmdldENv
bG9yKHQpLD0KaS5jb2xvcihjKSxvLmNvbG9yKGMpLHUuY29sb3IoYyksRik6Y30sRi5zaG93RGlz
dFg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJnPQp1bWVudHMubGVuZ3RoPyhtPTNEZSxGKTptfSxG
LnNob3dEaXN0WT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Q9Cmg/KGc9M0Rl
LEYpOmd9LEYuc2hvd0NvbnRyb2xzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KFM9M0RlLD0KRik6U30sRi5zaG93TGVnZW5kPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHk9M0RlLEYpOnl9LEYuc2hvPQp3WEF4aXM9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0zRGUsRik6Yn0sRi5zaG93WUF4aXM9M0RmdW49CmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3PTNEZSxGKTp3fSxGLnJpZ2h0QWxpZ25ZQXhp
cz0zRGZ1bmN0aW9uKD0KZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlLHIub3JpZW50
KGU/InJpZ2h0IjoibGVmdCIpLEYpOkV9LEYuZmlzaGV5PQplPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHg9M0RlLEYpOnh9LEYueFBhZGRpbmc9M0RmdW5jdGlvbig9CmUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSxGKTpkfSxGLnlQYWRkaW5nPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZz0KdW1lbnRzLmxlbmd0aD8odj0zRGUsRik6dn0sRi50b29sdGlwcz0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPQo/KE49M0RlLEYpOk59LEYudG9v
bHRpcENvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTD0zRGU9
CixGKTpMfSxGLnRvb2x0aXBYQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhDPTNEZSxGKTpDfT0KLEYudG9vbHRpcFlDb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGs9M0RlLEYpOmt9LEYuc3RhPQp0ZT0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhBPTNEZSxGKTpBfSxGLmRlZmF1bHRTdGF0ZT0zRGZ1
bmM9CnRpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE89M0RlLEYpOk99LEYubm9EYXRh
PTNEZnVuY3Rpb24oZSl7cmV0dXJuID0KYXJndW1lbnRzLmxlbmd0aD8oXz0zRGUsRik6X30sRi50
cmFuc2l0aW9uRHVyYXRpb249M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJnPQp1bWVudHMubGVuZ3Ro
PyhEPTNEZSxGKTpEfSxGfSxlLm1vZGVscy5zY2F0dGVyUGx1c0xpbmVDaGFydD0zRGZ1bmN0aW9u
KCl7ZnU9Cm5jdGlvbiBCKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7ZnVuY3Rpb24gVigp
e2lmKFMpcmV0dXJuIFUuc2VsZWN0KCIubj0Kdi1wb2ludC1wYXRocyIpLnN0eWxlKCJwb2ludGVy
LWV2ZW50cyIsImFsbCIpLCExO1Uuc2VsZWN0KCIubnYtcG9pbnQtcGF0aHMiPQopLnN0eWxlKCJw
b2ludGVyLWV2ZW50cyIsIm5vbmUiKTt2YXIgaT0zRGQzLm1vdXNlKHRoaXMpO2guZGlzdG9ydGlv
bihFKS5mb2M9CnVzKGlbMF0pLHAuZGlzdG9ydGlvbihFKS5mb2N1cyhpWzFdKSxVLnNlbGVjdCgi
Lm52LXNjYXR0ZXJXcmFwIikuZGF0dW0oZS5maT0KbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5k
aXNhYmxlZH0pKS5jYWxsKHQpLGcmJlUuc2VsZWN0KCIubnYteC5udi1heGlzIikuPQpjYWxsKG4p
LHkmJlUuc2VsZWN0KCIubnYteS5udi1heGlzIikuY2FsbChyKSxVLnNlbGVjdCgiLm52LWRpc3Ry
aWJ1dGlvblgiKS49CmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVk
fSkpLmNhbGwobyksVS5zZWxlY3QoIi5udi1kaXN0cj0KaWJ1dGlvblkiKS5kYXR1bShlLmZpbHRl
cihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKS5jYWxsKHUpfXZhciBUPTNEPQpkMy5z
ZWxlY3QodGhpcyksTj0zRHRoaXMsQz0zRChmfHxwYXJzZUludChULnN0eWxlKCJ3aWR0aCIpKXx8
OTYwKS1hLmxlZnQtYS49CnJpZ2h0LE09M0QobHx8cGFyc2VJbnQoVC5zdHlsZSgiaGVpZ2h0Iikp
fHw0MDApLWEudG9wLWEuYm90dG9tO0IudXBkYXRlPTNEZj0KdW5jdGlvbigpe1QuY2FsbChCKX0s
Qi5jb250YWluZXI9M0R0aGlzLGsuZGlzYWJsZWQ9M0RlLm1hcChmdW5jdGlvbihlKXtyZXR1PQpy
biEhZS5kaXNhYmxlZH0pO2lmKCFMKXt2YXIgajtMPTNEe307Zm9yKGogaW4gaylrW2pdaW5zdGFu
Y2VvZiBBcnJheT9MW2pdPQo9M0RrW2pdLnNsaWNlKDApOkxbal09M0RrW2pdfWlmKCFlfHwhZS5s
ZW5ndGh8fCFlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm49CiBlLnZhbHVlcy5sZW5ndGh9KS5s
ZW5ndGgpe3ZhciBGPTNEVC5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFtPXSk7cmV0dT0K
cm4gRi5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0RhdGEi
KS5hdHRyKCJkeSIsIi0uN2VtPQoiKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxGLmF0
dHIoIngiLGEubGVmdCtDLzIpLmF0dHIoInkiLGEudG9wK00vMik9Ci50ZXh0KGZ1bmN0aW9uKGUp
e3JldHVybiBlfSksQn1ULnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbW92ZSgpLGg9M0R0LnhT
Yz0KYWxlKCkscD0zRHQueVNjYWxlKCksXz0zRF98fGgsRD0zRER8fHA7dmFyIEk9M0RULnNlbGVj
dEFsbCgiZy5udi13cmFwLm52LXNjPQphdHRlckNoYXJ0IikuZGF0YShbZV0pLHE9M0RJLmVudGVy
KCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXA9CiBudi1zY2F0dGVyQ2hh
cnQgbnYtY2hhcnQtIit0LmlkKCkpLFI9M0RxLmFwcGVuZCgiZyIpLFU9M0RJLnNlbGVjdCgiZyIp
O1IuYT0KcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtYmFja2dyb3VuZCIpLnN0
eWxlKCJwb2ludGVyLWV2ZW50cyIsIm5vPQpuZSIpLFIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3Mi
LCJudi14IG52LWF4aXMiKSxSLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiw9CiJudi15IG52LWF4
aXMiKSxSLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtc2NhdHRlcldyYXAiKSxSLmFwcGVu
ZCgiZyIpLj0KYXR0cigiY2xhc3MiLCJudi1yZWdyZXNzaW9uTGluZXNXcmFwIiksUi5hcHBlbmQo
ImciKS5hdHRyKCJjbGFzcyIsIm52LWRpc3RXPQpyYXAiKSxSLmFwcGVuZCgiZyIpLmF0dHIoImNs
YXNzIiwibnYtbGVnZW5kV3JhcCIpLFIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3M9CiIsIm52LWNv
bnRyb2xzV3JhcCIpLEkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrYS5sZWZ0KyIsIith
LnRvcCsiKSIpLD0KYiYmVS5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0i
LCJ0cmFuc2xhdGUoIitDKyIsMCkiKSxtJiYoaS53PQppZHRoKEMvMiksSS5zZWxlY3QoIi5udi1s
ZWdlbmRXcmFwIikuZGF0dW0oZSkuY2FsbChpKSxhLnRvcCE9M0RpLmhlaWdodCgpJiY9CihhLnRv
cD0zRGkuaGVpZ2h0KCksTT0zRChsfHxwYXJzZUludChULnN0eWxlKCJoZWlnaHQiKSl8fDQwMCkt
YS50b3AtYS5ib3R0bz0KbSksSS5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuYXR0cigidHJhbnNm
b3JtIiwidHJhbnNsYXRlKCIrQy8yKyIsIisgLWEudG9wPQorIikiKSksdyYmKHMud2lkdGgoMTgw
KS5jb2xvcihbIiM0NDQiXSksVS5zZWxlY3QoIi5udi1jb250cm9sc1dyYXAiKS5kYXR1bSg9Ckgp
LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrIC1hLnRvcCsiKSIpLmNhbGwocykpLHQu
d2lkdGgoQykuaGVpZ2h0KD0KTSkuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5j
b2xvcnx8YyhlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7PQpyZXR1cm4hZVtuXS5kaXNhYmxl
ZH0pKSxJLnNlbGVjdCgiLm52LXNjYXR0ZXJXcmFwIikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb249
CihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKS5jYWxsKHQpLEkuc2VsZWN0KCIubnYtcmVncmVzc2lv
bkxpbmVzV3JhcCIpLmF0dHIoIj0KY2xpcC1wYXRoIiwidXJsKCNudi1lZGdlLWNsaXAtIit0Lmlk
KCkrIikiKTt2YXIgej0zREkuc2VsZWN0KCIubnYtcmVncmVzc2lvPQpuTGluZXNXcmFwIikuc2Vs
ZWN0QWxsKCIubnYtcmVnTGluZXMiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlfSk7ei5lbnRl
cig9CikuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1yZWdMaW5lcyIpO3ZhciBXPTNEei5z
ZWxlY3RBbGwoIi5udi1yZWdMaW5lIj0KKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybltlXX0pLFg9
M0RXLmVudGVyKCkuYXBwZW5kKCJsaW5lIikuYXR0cigiY2xhc3MiLCJuPQp2LXJlZ0xpbmUiKS5z
dHlsZSgic3Ryb2tlLW9wYWNpdHkiLDApO1cuYXR0cigieDEiLGgucmFuZ2UoKVswXSkuYXR0cigi
eDIiLGg9Ci5yYW5nZSgpWzFdKS5hdHRyKCJ5MSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChoLmRv
bWFpbigpWzBdKmUuc2xvcGUrZS5pbnRlcj0KY2VwdCl9KS5hdHRyKCJ5MiIsZnVuY3Rpb24oZSx0
KXtyZXR1cm4gcChoLmRvbWFpbigpWzFdKmUuc2xvcGUrZS5pbnRlcmNlcHQpPQp9KS5zdHlsZSgi
c3Ryb2tlIixmdW5jdGlvbihlLHQsbil7cmV0dXJuIGMoZSxuKX0pLnN0eWxlKCJzdHJva2Utb3Bh
Y2l0eSIsZnU9Cm5jdGlvbihlLHQpe3JldHVybiBlLmRpc2FibGVkfHx0eXBlb2YgZS5zbG9wZT0z
RD0zRCJ1bmRlZmluZWQifHx0eXBlb2YgZS5pbj0KdGVyY2VwdD0zRD0zRCJ1bmRlZmluZWQiPzA6
MX0pLGcmJihuLnNjYWxlKGgpLnRpY2tzKG4udGlja3MoKT9uLnRpY2tzKCk6Qy8xPQowMCkudGlj
a1NpemUoLU0sMCksVS5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0
cmFuc2xhdGUoMCw9CiIrcC5yYW5nZSgpWzBdKyIpIikuY2FsbChuKSkseSYmKHIuc2NhbGUocCku
dGlja3Moci50aWNrcygpP3IudGlja3MoKTpNLzM2KT0KLnRpY2tTaXplKC1DLDApLFUuc2VsZWN0
KCIubnYteS5udi1heGlzIikuY2FsbChyKSksZCYmKG8uZ2V0RGF0YSh0LngoKSkuc2NhPQpsZSho
KS53aWR0aChDKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxjKGUs
dCl9KS5maWx0ZXIoZnU9Cm5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2FibGVkfSkpLFIuc2Vs
ZWN0KCIubnYtZGlzdFdyYXAiKS5hcHBlbmQoImciKS5hdD0KdHIoImNsYXNzIiwibnYtZGlzdHJp
YnV0aW9uWCIpLFUuc2VsZWN0KCIubnYtZGlzdHJpYnV0aW9uWCIpLmF0dHIoInRyYW5zZm9yPQpt
IiwidHJhbnNsYXRlKDAsIitwLnJhbmdlKClbMF0rIikiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlv
bihlKXtyZXR1cm4hZS5kaXM9CmFibGVkfSkpLmNhbGwobykpLHYmJih1LmdldERhdGEodC55KCkp
LnNjYWxlKHApLndpZHRoKE0pLmNvbG9yKGUubWFwKGZ1bmN0aT0Kb24oZSx0KXtyZXR1cm4gZS5j
b2xvcnx8YyhlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWR9
PQopKSxSLnNlbGVjdCgiLm52LWRpc3RXcmFwIikuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJu
di1kaXN0cmlidXRpb25ZIiksVS49CnNlbGVjdCgiLm52LWRpc3RyaWJ1dGlvblkiKS5hdHRyKCJ0
cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisoYj9DOi11LnNpemUoKSkrIj0KLDApIikuZGF0dW0oZS5m
aWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbCh1KSksZDMuZmlzaGV5
ZSYmPQooVS5zZWxlY3QoIi5udi1iYWNrZ3JvdW5kIikuYXR0cigid2lkdGgiLEMpLmF0dHIoImhl
aWdodCIsTSksVS5zZWxlY3QoIi5udi09CmJhY2tncm91bmQiKS5vbigibW91c2Vtb3ZlIixWKSxV
LnNlbGVjdCgiLm52LWJhY2tncm91bmQiKS5vbigiY2xpY2siLGZ1bmN0aT0Kb24oKXtTPTNEIVN9
KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50Q2xpY2suZnJlZXplRmlzaGV5ZSIsZnVuY3Rpb24oKXtT
PTNEIVN9PQopKSxzLmRpc3BhdGNoLm9uKCJsZWdlbmRDbGljayIsZnVuY3Rpb24oZSxpKXtlLmRp
c2FibGVkPTNEIWUuZGlzYWJsZWQsRT0zRGU9Ci5kaXNhYmxlZD8wOjIuNSxVLnNlbGVjdCgiLm52
LWJhY2tncm91bmQiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLGUuZGlzYWJsZT0KZD8ibm9uZSI6
ImFsbCIpLFUuc2VsZWN0KCIubnYtcG9pbnQtcGF0aHMiKS5zdHlsZSgicG9pbnRlci1ldmVudHMi
LGUuZGlzYWJsPQplZD8iYWxsIjoibm9uZSIpLGUuZGlzYWJsZWQ/KGguZGlzdG9ydGlvbihFKS5m
b2N1cygwKSxwLmRpc3RvcnRpb24oRSkuZm9jdXM9CigwKSxVLnNlbGVjdCgiLm52LXNjYXR0ZXJX
cmFwIikuY2FsbCh0KSxVLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmNhbGwobiksVT0KLnNlbGVj
dCgiLm52LXkubnYtYXhpcyIpLmNhbGwocikpOlM9M0QhMSxCLnVwZGF0ZSgpfSksaS5kaXNwYXRj
aC5vbigic3RhdGVDPQpoYW5nZSIsZnVuY3Rpb24oZSl7az0zRGUsQS5zdGF0ZUNoYW5nZShrKSxC
LnVwZGF0ZSgpfSksdC5kaXNwYXRjaC5vbigiZWxlbWU9Cm50TW91c2VvdmVyLnRvb2x0aXAiLGZ1
bmN0aW9uKGUpe2QzLnNlbGVjdCgiLm52LWNoYXJ0LSIrdC5pZCgpKyIgLm52LXNlcmllcz0KLSIr
ZS5zZXJpZXNJbmRleCsiIC5udi1kaXN0eC0iK2UucG9pbnRJbmRleCkuYXR0cigieTEiLGUucG9z
WzFdLU0pLGQzLnNlbGVjPQp0KCIubnYtY2hhcnQtIit0LmlkKCkrIiAubnYtc2VyaWVzLSIrZS5z
ZXJpZXNJbmRleCsiIC5udi1kaXN0eS0iK2UucG9pbnRJbmQ9CmV4KS5hdHRyKCJ4MiIsZS5wb3Nb
MF0rby5zaXplKCkpLGUucG9zPTNEW2UucG9zWzBdK2EubGVmdCxlLnBvc1sxXSthLnRvcF0sQT0K
LnRvb2x0aXBTaG93KGUpfSksQS5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe3gmJlAoZSxO
LnBhcmVudE5vZGUpfSksQS5vPQpuKCJjaGFuZ2VTdGF0ZSIsZnVuY3Rpb24odCl7dHlwZW9mIHQu
ZGlzYWJsZWQhPTNEInVuZGVmaW5lZCImJihlLmZvckVhY2goZnU9Cm5jdGlvbihlLG4pe2UuZGlz
YWJsZWQ9M0R0LmRpc2FibGVkW25dfSksay5kaXNhYmxlZD0zRHQuZGlzYWJsZWQpLEIudXBkYXRl
KD0KKX0pLF89M0RoLmNvcHkoKSxEPTNEcC5jb3B5KCl9KSxCfXZhciB0PTNEZS5tb2RlbHMuc2Nh
dHRlcigpLG49M0RlLm1vZGVscy5hPQp4aXMoKSxyPTNEZS5tb2RlbHMuYXhpcygpLGk9M0RlLm1v
ZGVscy5sZWdlbmQoKSxzPTNEZS5tb2RlbHMubGVnZW5kKCksbz0zRGU9Ci5tb2RlbHMuZGlzdHJp
YnV0aW9uKCksdT0zRGUubW9kZWxzLmRpc3RyaWJ1dGlvbigpLGE9M0R7dG9wOjMwLHJpZ2h0OjIw
LGJvdD0KdG9tOjUwLGxlZnQ6NzV9LGY9M0RudWxsLGw9M0RudWxsLGM9M0RlLnV0aWxzLmRlZmF1
bHRDb2xvcigpLGg9M0RkMy5maXNoZXllPQo/ZDMuZmlzaGV5ZS5zY2FsZShkMy5zY2FsZS5saW5l
YXIpLmRpc3RvcnRpb24oMCk6dC54U2NhbGUoKSxwPTNEZDMuZmlzaGV5ZT89CmQzLmZpc2hleWUu
c2NhbGUoZDMuc2NhbGUubGluZWFyKS5kaXN0b3J0aW9uKDApOnQueVNjYWxlKCksZD0zRCExLHY9
M0QhMSxtPQo9M0QhMCxnPTNEITAseT0zRCEwLGI9M0QhMSx3PTNEISFkMy5maXNoZXllLEU9M0Qw
LFM9M0QhMSx4PTNEITAsVD0zRGZ1bmN0aW89Cm4oZSx0LG4pe3JldHVybiI8c3Ryb25nPiIrdCsi
PC9zdHJvbmc+In0sTj0zRGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4iPHN0cm9uZz0KPiIrbisiPC9z
dHJvbmc+In0sQz0zRGZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiI8aDM+IitlKyI8L2gzPiIrIjxw
PiIrcisiPC9wPQo+In0saz0zRHt9LEw9M0RudWxsLEE9M0RkMy5kaXNwYXRjaCgidG9vbHRpcFNo
b3ciLCJ0b29sdGlwSGlkZSIsInN0YXRlQ2hhbmc9CmUiLCJjaGFuZ2VTdGF0ZSIpLE89M0QiTm8g
RGF0YSBBdmFpbGFibGUuIixNPTNEMDt0LnhTY2FsZShoKS55U2NhbGUocCksbi5vcj0KaWVudCgi
Ym90dG9tIikudGlja1BhZGRpbmcoMTApLHIub3JpZW50KGI/InJpZ2h0IjoibGVmdCIpLnRpY2tQ
YWRkaW5nKDEwKSxvPQouYXhpcygieCIpLHUuYXhpcygieSIpLHMudXBkYXRlU3RhdGUoITEpO3Zh
ciBfLEQsUD0zRGZ1bmN0aW9uKGkscyl7dmFyIG89M0Q9CmkucG9zWzBdKyhzLm9mZnNldExlZnR8
fDApLHU9M0RpLnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLGY9M0RpLnBvc1swXSsocy5vZj0KZnNl
dExlZnR8fDApLGw9M0RwLnJhbmdlKClbMF0rYS50b3ArKHMub2Zmc2V0VG9wfHwwKSxjPTNEaC5y
YW5nZSgpWzBdK2EubGVmPQp0KyhzLm9mZnNldExlZnR8fDApLGQ9M0RpLnBvc1sxXSsocy5vZmZz
ZXRUb3B8fDApLHY9M0RuLnRpY2tGb3JtYXQoKSh0LngoKSg9CmkucG9pbnQsaS5wb2ludEluZGV4
KSksbT0zRHIudGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbnQsaS5wb2ludEluZGV4KSk7VCE9Cj0z
RG51bGwmJmUudG9vbHRpcC5zaG93KFtmLGxdLFQoaS5zZXJpZXMua2V5LHYsbSxpLEIpLCJuIiwx
LHMsIngtbnZ0b29sdGlwIj0KKSxOIT0zRG51bGwmJmUudG9vbHRpcC5zaG93KFtjLGRdLE4oaS5z
ZXJpZXMua2V5LHYsbSxpLEIpLCJlIiwxLHMsInktbnZ0b29sPQp0aXAiKSxDIT0zRG51bGwmJmUu
dG9vbHRpcC5zaG93KFtvLHVdLEMoaS5zZXJpZXMua2V5LHYsbSxpLnBvaW50LnRvb2x0aXAsaSw9
CkIpLGkudmFsdWU8MD8ibiI6InMiLG51bGwscyl9LEg9M0Rbe2tleToiTWFnbmlmeSIsZGlzYWJs
ZWQ6ITB9XTtyZXR1cm4gdC5kaT0Kc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIs
ZnVuY3Rpb24oZSl7QS50b29sdGlwSGlkZShlKSxkMy5zZWxlY3QoPQoiLm52LWNoYXJ0LSIrdC5p
ZCgpKyIgLm52LXNlcmllcy0iK2Uuc2VyaWVzSW5kZXgrIiAubnYtZGlzdHgtIitlLnBvaW50SW5k
ZXg9CikuYXR0cigieTEiLDApLGQzLnNlbGVjdCgiLm52LWNoYXJ0LSIrdC5pZCgpKyIgLm52LXNl
cmllcy0iK2Uuc2VyaWVzSW5kZXgrIj0KIC5udi1kaXN0eS0iK2UucG9pbnRJbmRleCkuYXR0cigi
eDIiLHUuc2l6ZSgpKX0pLEEub24oInRvb2x0aXBIaWRlIixmdW5jdGlvPQpuKCl7eCYmZS50b29s
dGlwLmNsZWFudXAoKX0pLEIuZGlzcGF0Y2g9M0RBLEIuc2NhdHRlcj0zRHQsQi5sZWdlbmQ9M0Rp
LEIuY289Cm50cm9scz0zRHMsQi54QXhpcz0zRG4sQi55QXhpcz0zRHIsQi5kaXN0WD0zRG8sQi5k
aXN0WT0zRHUsZDMucmViaW5kKEIsdCwiaT0KZCIsImludGVyYWN0aXZlIiwicG9pbnRBY3RpdmUi
LCJ4IiwieSIsInNoYXBlIiwic2l6ZSIsInhTY2FsZSIsInlTY2FsZSIsInpTPQpjYWxlIiwieERv
bWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJzaXplRG9tYWluIiwic2l6ZVJhbmdl
IiwiZm9yY2U9ClgiLCJmb3JjZVkiLCJmb3JjZVNpemUiLCJjbGlwVm9yb25vaSIsImNsaXBSYWRp
dXMiLCJ1c2VWb3Jvbm9pIiksQi5vcHRpb25zPQo9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQo
QiksQi5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmc9CnRoPyhhLnRv
cD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDphLnRvcCxhLnJpZ2h0PTNEdHlw
ZW9mIGUucmlnaD0KdCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OmEucmlnaHQsYS5ib3R0b209M0R0
eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/PQplLmJvdHRvbTphLmJvdHRvbSxhLmxlZnQ9
M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDphLmxlZnQsQik6YX09CixCLndp
ZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLEIpOmZ9LEIu
aGVpZ2h0PTNEZnVuYz0KdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD0zRGUsQik6
bH0sQi5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhPQpyZ3VtZW50cy5sZW5ndGg/KGM9M0Rl
LnV0aWxzLmdldENvbG9yKHQpLGkuY29sb3IoYyksby5jb2xvcihjKSx1LmNvbG9yKGMpLEI9Cik6
Y30sQi5zaG93RGlzdFg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0z
RGUsQik6ZH0sQi5zaG93RD0KaXN0WT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyh2PTNEZSxCKTp2fSxCLnNob3dDb250cm9scz0zRGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHc9M0RlLEIpOnd9LEIuc2hvd0xlZ2VuZD0zRGZ1bmN0aW9uKGUpe3I9
CmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09M0RlLEIpOm19LEIuc2hvd1hBeGlzPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZT0KbnRzLmxlbmd0aD8oZz0zRGUsQik6Z30sQi5zaG93WUF4aXM9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oPQp5PTNEZSxCKTp5fSxCLnJp
Z2h0QWxpZ25ZQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPTNE
ZSw9CnIub3JpZW50KGU/InJpZ2h0IjoibGVmdCIpLEIpOmJ9LEIuZmlzaGV5ZT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubD0KZW5ndGg/KEU9M0RlLEIpOkV9LEIudG9vbHRpcHM9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD0zRGUsPQpCKTp4fSxCLnRvb2x0
aXBDb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEM9M0RlLEIp
OkN9LEI9Ci50b29sdGlwWENvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oVD0zRGUsQik6VH0sQi50b29sdD0KaXBZQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhOPTNEZSxCKTpOfSxCLnN0YXRlPTNEZnVuPQpjdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaz0zRGUsQik6a30sQi5kZWZhdWx0U3RhdGU9M0RmdW5j
dGlvbihlKXs9CnJldHVybiBhcmd1bWVudHMubGVuZ3RoPyhMPTNEZSxCKTpMfSxCLm5vRGF0YT0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudD0Kcy5sZW5ndGg/KE89M0RlLEIpOk99LEIudHJh
bnNpdGlvbkR1cmF0aW9uPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sPQplbmd0aD8o
TT0zRGUsQik6TX0sQn0sZS5tb2RlbHMuc3BhcmtsaW5lPTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBk
KGUpe3JldHVybiA9CmUuZWFjaChmdW5jdGlvbihlKXt2YXIgaT0zRG4tdC5sZWZ0LXQucmlnaHQs
ZD0zRHItdC50b3AtdC5ib3R0b20sdj0zRGQzLnNlbD0KZWN0KHRoaXMpO3MuZG9tYWluKGx8fGQz
LmV4dGVudChlLHUpKS5yYW5nZShofHxbMCxpXSksby5kb21haW4oY3x8ZDMuZXh0ZW50PQooZSxh
KSkucmFuZ2UocHx8W2QsMF0pO3ZhciBtPTNEdi5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1zcGFy
a2xpbmUiKS5kYXRhKFs9CmVdKSxnPTNEbS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNz
IiwibnZkMyBudi13cmFwIG52LXNwYXJrbGluZSIpLGI9Cj0zRGcuYXBwZW5kKCJnIiksdz0zRG0u
c2VsZWN0KCJnIik7bS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0LmxlZnQrIj0KLCIr
dC50b3ArIikiKTt2YXIgRT0zRG0uc2VsZWN0QWxsKCJwYXRoIikuZGF0YShmdW5jdGlvbihlKXty
ZXR1cm5bZV19KTtFLmVuPQp0ZXIoKS5hcHBlbmQoInBhdGgiKSxFLmV4aXQoKS5yZW1vdmUoKSxF
LnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXI9Cm4gZS5jb2xvcnx8ZihlLHQpfSku
YXR0cigiZCIsZDMuc3ZnLmxpbmUoKS54KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHModShlLHQpKT0K
fSkueShmdW5jdGlvbihlLHQpe3JldHVybiBvKGEoZSx0KSl9KSk7dmFyIFM9M0RtLnNlbGVjdEFs
bCgiY2lyY2xlLm52LXBvaW50PQoiKS5kYXRhKGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4odCl7aWYo
dCE9M0QtMSl7dmFyIG49M0RlW3RdO3JldHVybiBuLnBvaW50SW49CmRleD0zRHQsbn1yZXR1cm4g
bnVsbH12YXIgdD0zRGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSx0KX0pLHI9M0RuKHQu
bD0KYXN0SW5kZXhPZihvLmRvbWFpbigpWzFdKSksaT0zRG4odC5pbmRleE9mKG8uZG9tYWluKClb
MF0pKSxzPTNEbih0Lmxlbmd0aC0xPQopO3JldHVybltpLHIsc10uZmlsdGVyKGZ1bmN0aW9uKGUp
e3JldHVybiBlIT0zRG51bGx9KX0pO1MuZW50ZXIoKS5hcHBlbmQoImM9CmlyY2xlIiksUy5leGl0
KCkucmVtb3ZlKCksUy5hdHRyKCJjeCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcyh1KGUsZS5wb2lu
dEluZD0KZXgpKX0pLmF0dHIoImN5IixmdW5jdGlvbihlLHQpe3JldHVybiBvKGEoZSxlLnBvaW50
SW5kZXgpKX0pLmF0dHIoInIiLDIpLmF0PQp0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJu
IHUoZSxlLnBvaW50SW5kZXgpPTNEPTNEcy5kb21haW4oKVsxXT8ibnYtcG89CmludCBudi1jdXJy
ZW50VmFsdWUiOmEoZSxlLnBvaW50SW5kZXgpPTNEPTNEby5kb21haW4oKVswXT8ibnYtcG9pbnQg
bnYtbWluVj0KYWx1ZSI6Im52LXBvaW50IG52LW1heFZhbHVlIn0pfSksZH12YXIgdD0zRHt0b3A6
MixyaWdodDowLGJvdHRvbToyLGxlZnQ6MH0sPQpuPTNENDAwLHI9M0QzMixpPTNEITAscz0zRGQz
LnNjYWxlLmxpbmVhcigpLG89M0RkMy5zY2FsZS5saW5lYXIoKSx1PTNEZnVuY3Q9CmlvbihlKXty
ZXR1cm4gZS54fSxhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0sZj0zRGUudXRpbHMuZ2V0Q29s
b3IoWyIjMDAwIj0KXSksbCxjLGgscDtyZXR1cm4gZC5vcHRpb25zPTNEZS51dGlscy5vcHRpb25z
RnVuYy5iaW5kKGQpLGQubWFyZ2luPTNEZnVuY3RpPQpvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8odC50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6dC49CnRvcCx0
LnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp0LnJpZ2h0LHQu
Ym90dG9tPTNEdHlwZT0Kb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dC5ib3R0
b20sdC5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kPQplZmluZWQiP2UubGVmdDp0LmxlZnQs
ZCk6dH0sZC53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyg9Cm49
M0RlLGQpOm59LGQuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHI9M0RlLGQpOnJ9LGQueD0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHU9M0RkMy5mdW5jdG9yKGUpLGQpOnV9LGQueT0zRGZ1bmN0PQppb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGE9M0RkMy5mdW5jdG9yKGUpLGQpOmF9LGQueFNjYWxlPTNEZnVuY3Rpb249
CihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0zRGUsZCk6c30sZC55U2NhbGU9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndT0KbWVudHMubGVuZ3RoPyhvPTNEZSxkKTpvfSxkLnhEb21haW49
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oPQpsPTNEZSxkKTpsfSxkLnlE
b21haW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUsZCk6Y30s
ZC49CnhSYW5nZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxk
KTpofSxkLnlSYW5nZT0zRGZ1bmN0aT0Kb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9
M0RlLGQpOnB9LGQuYW5pbWF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhPQpyZ3VtZW50cy5sZW5n
dGg/KGk9M0RlLGQpOml9LGQuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD89CihmPTNEZS51dGlscy5nZXRDb2xvcih0KSxkKTpmfSxkfSxlLm1vZGVscy5zcGFya2xp
bmVQbHVzPTNEZnVuY3Rpb24oKXtmdW5jdD0KaW9uIHYoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlv
bihjKXtmdW5jdGlvbiBPKCl7aWYoYSlyZXR1cm47dmFyIGU9M0RDLnNlbGVjPQp0QWxsKCIubnYt
aG92ZXJWYWx1ZSIpLmRhdGEodSkscj0zRGUuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFz
cyIsIm52LWg9Cm92ZXJWYWx1ZSIpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMCkuc3R5bGUoImZp
bGwtb3BhY2l0eSIsMCk7ZS5leGl0KCkuc3R5bD0KZSgic3Ryb2tlLW9wYWNpdHkiLDApLnN0eWxl
KCJmaWxsLW9wYWNpdHkiLDApLnJlbW92ZSgpLGUuYXR0cigidHJhbnNmb3JtIixmPQp1bmN0aW9u
KGUpe3JldHVybiJ0cmFuc2xhdGUoIitzKHQueCgpKGNbZV0sZSkpKyIsMCkifSkuc3R5bGUoInN0
cm9rZS1vcGFjaXQ9CnkiLDEpLnN0eWxlKCJmaWxsLW9wYWNpdHkiLDEpO2lmKCF1Lmxlbmd0aCly
ZXR1cm47ci5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MT0KIiwwKS5hdHRyKCJ5MSIsLW4udG9wKS5h
dHRyKCJ4MiIsMCkuYXR0cigieTIiLGIpLHIuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhPQpzcyIs
Im52LXhWYWx1ZSIpLmF0dHIoIngiLC02KS5hdHRyKCJ5Iiwtbi50b3ApLmF0dHIoInRleHQtYW5j
aG9yIiwiZW5kIikuYXQ9CnRyKCJkeSIsIi45ZW0iKSxDLnNlbGVjdCgiLm52LWhvdmVyVmFsdWUg
Lm52LXhWYWx1ZSIpLnRleHQoZih0LngoKShjW3VbMF1dLD0KdVswXSkpKSxyLmFwcGVuZCgidGV4
dCIpLmF0dHIoImNsYXNzIiwibnYteVZhbHVlIikuYXR0cigieCIsNikuYXR0cigieSIsLW4uPQp0
b3ApLmF0dHIoInRleHQtYW5jaG9yIiwic3RhcnQiKS5hdHRyKCJkeSIsIi45ZW0iKSxDLnNlbGVj
dCgiLm52LWhvdmVyVmFsdWU9CiAubnYteVZhbHVlIikudGV4dChsKHQueSgpKGNbdVswXV0sdVsw
XSkpKX1mdW5jdGlvbiBNKCl7ZnVuY3Rpb24gcihlLG4pe3Zhcj0KIHI9M0RNYXRoLmFicyh0Lngo
KShlWzBdLDApLW4pLGk9M0QwO2Zvcih2YXIgcz0zRDA7czxlLmxlbmd0aDtzKyspTWF0aC5hYnMo
PQp0LngoKShlW3NdLHMpLW4pPHImJihyPTNETWF0aC5hYnModC54KCkoZVtzXSxzKS1uKSxpPTNE
cyk7cmV0dXJuIGl9aWYoYSlyZXQ9CnVybjt2YXIgZT0zRGQzLm1vdXNlKHRoaXMpWzBdLW4ubGVm
dDt1PTNEW3IoYyxNYXRoLnJvdW5kKHMuaW52ZXJ0KGUpKSldLE8oKT0KfXZhciBtPTNEZDMuc2Vs
ZWN0KHRoaXMpLGc9M0Qocnx8cGFyc2VJbnQobS5zdHlsZSgid2lkdGgiKSl8fDk2MCktbi5sZWZ0
LW4uPQpyaWdodCxiPTNEKGl8fHBhcnNlSW50KG0uc3R5bGUoImhlaWdodCIpKXx8NDAwKS1uLnRv
cC1uLmJvdHRvbTt2LnVwZGF0ZT0zRGY9CnVuY3Rpb24oKXt2KGUpfSx2LmNvbnRhaW5lcj0zRHRo
aXM7aWYoIWN8fCFjLmxlbmd0aCl7dmFyIHc9M0RtLnNlbGVjdEFsbCgiLj0KbnYtbm9EYXRhIiku
ZGF0YShbZF0pO3JldHVybiB3LmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJu
dmQzIG52PQotbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIs
Im1pZGRsZSIpLHcuYXR0cigieCIsbi5sZWY9CnQrZy8yKS5hdHRyKCJ5IixuLnRvcCtiLzIpLnRl
eHQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSx2fW0uc2VsZWN0QWxsKCIubnYtbj0Kb0RhdGEiKS5y
ZW1vdmUoKTt2YXIgRT0zRHQueSgpKGNbYy5sZW5ndGgtMV0sYy5sZW5ndGgtMSk7cz0zRHQueFNj
YWxlKCksbz0KPTNEdC55U2NhbGUoKTt2YXIgUz0zRG0uc2VsZWN0QWxsKCJnLm52LXdyYXAubnYt
c3BhcmtsaW5lcGx1cyIpLmRhdGEoW2NdKSxUPQo9M0RTLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0
cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtc3BhcmtsaW5lcGx1cyIpLE49M0Q9ClQuYXBwZW5k
KCJnIiksQz0zRFMuc2VsZWN0KCJnIik7Ti5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXNw
YXJrbGluZVdyYT0KcCIpLE4uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi12YWx1ZVdyYXAi
KSxOLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiPQpudi1ob3ZlckFyZWEiKSxTLmF0dHIoInRy
YW5zZm9ybSIsInRyYW5zbGF0ZSgiK24ubGVmdCsiLCIrbi50b3ArIikiKTt2YXIgaz0KPTNEQy5z
ZWxlY3QoIi5udi1zcGFya2xpbmVXcmFwIik7dC53aWR0aChnKS5oZWlnaHQoYiksay5jYWxsKHQp
O3ZhciBMPTNEQy5zPQplbGVjdCgiLm52LXZhbHVlV3JhcCIpLEE9M0RMLnNlbGVjdEFsbCgiLm52
LWN1cnJlbnRWYWx1ZSIpLmRhdGEoW0VdKTtBLmVudGU9CnIoKS5hcHBlbmQoInRleHQiKS5hdHRy
KCJjbGFzcyIsIm52LWN1cnJlbnRWYWx1ZSIpLmF0dHIoImR4IixwPy04OjgpLmF0dHIoIj0KZHki
LCIuOWVtIikuc3R5bGUoInRleHQtYW5jaG9yIixwPyJlbmQiOiJzdGFydCIpLEEuYXR0cigieCIs
ZysocD9uLnJpZ2h0OjApPQopLmF0dHIoInkiLGg/ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSl9OjAp
LnN0eWxlKCJmaWxsIix0LmNvbG9yKCkoY1tjLmxlbmd0aC09CjFdLGMubGVuZ3RoLTEpKS50ZXh0
KGwoRSkpLE4uc2VsZWN0KCIubnYtaG92ZXJBcmVhIikuYXBwZW5kKCJyZWN0Iikub24oIm1vdT0K
c2Vtb3ZlIixNKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7YT0zRCFhfSkub24oIm1vdXNlb3V0Iixm
dW5jdGlvbigpe3U9M0RbXSxPPQooKX0pLEMuc2VsZWN0KCIubnYtaG92ZXJBcmVhIHJlY3QiKS5h
dHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUpe3JldHVybiJ0cmE9Cm5zbGF0ZSgiKyAtbi5sZWZ0
KyIsIisgLW4udG9wKyIpIn0pLmF0dHIoIndpZHRoIixnK24ubGVmdCtuLnJpZ2h0KS5hdHRyKCJo
ZT0KaWdodCIsYituLnRvcCl9KSx2fXZhciB0PTNEZS5tb2RlbHMuc3BhcmtsaW5lKCksbj0zRHt0
b3A6MTUscmlnaHQ6MTAwLGJvdHRvPQptOjEwLGxlZnQ6NTB9LHI9M0RudWxsLGk9M0RudWxsLHMs
byx1PTNEW10sYT0zRCExLGY9M0RkMy5mb3JtYXQoIixyIiksbD0zRGQ9CjMuZm9ybWF0KCIsLjJm
IiksYz0zRCEwLGg9M0QhMCxwPTNEITEsZD0zRCJObyBEYXRhIEF2YWlsYWJsZS4iO3JldHVybiB2
LnNwYT0KcmtsaW5lPTNEdCxkMy5yZWJpbmQodix0LCJ4IiwieSIsInhTY2FsZSIsInlTY2FsZSIs
ImNvbG9yIiksdi5vcHRpb25zPTNEZS51PQp0aWxzLm9wdGlvbnNGdW5jLmJpbmQodiksdi5tYXJn
aW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obi49CnRvcD0zRHR5cGVv
ZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDpuLnRvcCxuLnJpZ2h0PTNEdHlwZW9mIGUucmln
aHQhPTNEIj0KdW5kZWZpbmVkIj9lLnJpZ2h0Om4ucmlnaHQsbi5ib3R0b209M0R0eXBlb2YgZS5i
b3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0PQpvbTpuLmJvdHRvbSxuLmxlZnQ9M0R0eXBlb2Yg
ZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDpuLmxlZnQsdik6bn0sdi53aWQ9CnRoPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLHYpOnJ9LHYuaGVpZ2h0PTNE
ZnVuY3Rpb24oZT0KKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUsdik6aX0sdi54VGlj
a0Zvcm1hdD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhPQpyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLHYp
OmZ9LHYueVRpY2tGb3JtYXQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmw9CmVuZ3Ro
PyhsPTNEZSx2KTpsfSx2LnNob3dWYWx1ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhjPTNEZT0KLHYpOmN9LHYuYWxpZ25WYWx1ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhoPTNEZSx2KTpofSx2LnJpPQpnaHRBbGlnblZhbHVlPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLHYpOnB9LHYubm9EYXRhPQo9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGUsdik6ZH0sdn0sZS5tb2Rl
bHMuc3RhY2tlZEFyZWE9Cj0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhlKXtyZXR1cm4gZS5lYWNo
KGZ1bmN0aW9uKGUpe3ZhciBhPTNEbi10LmxlZnQtdC5yaT0KZ2h0LGI9M0RyLXQudG9wLXQuYm90
dG9tLHc9M0RkMy5zZWxlY3QodGhpcyk7cD0zRHYueFNjYWxlKCksZD0zRHYueVNjYWxlKCk7PQp2
YXIgRT0zRGU7ZS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7ZS5zZXJpZXNJbmRleD0zRHQsZS52YWx1
ZXM9M0RlLnZhbHVlcy5tYXA9CihmdW5jdGlvbihlLG4pe3JldHVybiBlLmluZGV4PTNEbixlLnNl
cmllc0luZGV4PTNEdCxlfSl9KTt2YXIgUz0zRGUuZmlsdGVyKD0KZnVuY3Rpb24oZSl7cmV0dXJu
IWUuZGlzYWJsZWR9KTtlPTNEZDMubGF5b3V0LnN0YWNrKCkub3JkZXIobCkub2Zmc2V0KGYpLnZh
PQpsdWVzKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlc30pLngobykueSh1KS5vdXQoZnVuY3Rp
b24oZSx0LG4pe3ZhciByPTNEdSg9CmUpPTNEPTNEPTNEMD8wOm47ZS5kaXNwbGF5PTNEe3k6cix5
MDp0fX0pKFMpO3ZhciBUPTNEdy5zZWxlY3RBbGwoImcubnYtd3JhcD0KLm52LXN0YWNrZWRhcmVh
IikuZGF0YShbZV0pLE49M0RULmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQz
IG52PQotd3JhcCBudi1zdGFja2VkYXJlYSIpLEM9M0ROLmFwcGVuZCgiZGVmcyIpLGs9M0ROLmFw
cGVuZCgiZyIpLEw9M0RULnNlbGVjdCg9CiJnIik7ay5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIs
Im52LWFyZWFXcmFwIiksay5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIj0KbnYtc2NhdHRlcldy
YXAiKSxULmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50b3ArIiki
KSx2LndpPQpkdGgoYSkuaGVpZ2h0KGIpLngobykueShmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNw
bGF5LnkrZS5kaXNwbGF5LnkwfSkuZm9yY2U9ClkoWzBdKS5jb2xvcihlLm1hcChmdW5jdGlvbihl
LHQpe3JldHVybiBlLmNvbG9yfHxpKGUsZS5zZXJpZXNJbmRleCl9KSk7dmFyID0KQT0zREwuc2Vs
ZWN0KCIubnYtc2NhdHRlcldyYXAiKS5kYXR1bShlKTtBLmNhbGwodiksQy5hcHBlbmQoImNsaXBQ
YXRoIikuYXR0PQpyKCJpZCIsIm52LWVkZ2UtY2xpcC0iK3MpLmFwcGVuZCgicmVjdCIpLFQuc2Vs
ZWN0KCIjbnYtZWRnZS1jbGlwLSIrcysiIHJlY3Q9CiIpLmF0dHIoIndpZHRoIixhKS5hdHRyKCJo
ZWlnaHQiLGIpLEwuYXR0cigiY2xpcC1wYXRoIixoPyJ1cmwoI252LWVkZ2UtY2xpcD0KLSIrcysi
KSI6IiIpO3ZhciBPPTNEZDMuc3ZnLmFyZWEoKS54KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAobyhl
LHQpKX0pLnkwKGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGQoZS5kaXNwbGF5LnkwKX0pLnkxKGZ1bmN0
aW9uKGUpe3JldHVybiBkKGUuZGlzcGxheS55K2UuZGk9CnNwbGF5LnkwKX0pLmludGVycG9sYXRl
KGMpLE09M0RkMy5zdmcuYXJlYSgpLngoZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChvKGUsdD0KKSl9
KS55MChmdW5jdGlvbihlKXtyZXR1cm4gZChlLmRpc3BsYXkueTApfSkueTEoZnVuY3Rpb24oZSl7
cmV0dXJuIGQoZS5kaXNwPQpsYXkueTApfSksXz0zREwuc2VsZWN0KCIubnYtYXJlYVdyYXAiKS5z
ZWxlY3RBbGwoInBhdGgubnYtYXJlYSIpLmRhdGEoZnVuY3Q9CmlvbihlKXtyZXR1cm4gZX0pO18u
ZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cj0K
biJudi1hcmVhIG52LWFyZWEtIit0fSkuYXR0cigiZCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTShl
LnZhbHVlcyxlLnNlcmllc0luPQpkZXgpfSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oZSx0KXtk
My5zZWxlY3QodGhpcykuY2xhc3NlZCgiaG92ZXIiLCEwKSxtLmE9CnJlYU1vdXNlb3Zlcih7cG9p
bnQ6ZSxzZXJpZXM6ZS5rZXkscG9zOltkMy5ldmVudC5wYWdlWCxkMy5ldmVudC5wYWdlWV0sc2Vy
aT0KZXNJbmRleDplLnNlcmllc0luZGV4fSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKGUsdCl7
ZDMuc2VsZWN0KHRoaXMpLmNsYXNzPQplZCgiaG92ZXIiLCExKSxtLmFyZWFNb3VzZW91dCh7cG9p
bnQ6ZSxzZXJpZXM6ZS5rZXkscG9zOltkMy5ldmVudC5wYWdlWCxkMy49CmV2ZW50LnBhZ2VZXSxz
ZXJpZXNJbmRleDplLnNlcmllc0luZGV4fSl9KS5vbigiY2xpY2siLGZ1bmN0aW9uKGUsdCl7ZDMu
c2VsZT0KY3QodGhpcykuY2xhc3NlZCgiaG92ZXIiLCExKSxtLmFyZWFDbGljayh7cG9pbnQ6ZSxz
ZXJpZXM6ZS5rZXkscG9zOltkMy5ldmVuPQp0LnBhZ2VYLGQzLmV2ZW50LnBhZ2VZXSxzZXJpZXNJ
bmRleDplLnNlcmllc0luZGV4fSl9KSxfLmV4aXQoKS5yZW1vdmUoKSxfLnM9CnR5bGUoImZpbGwi
LGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGkoZSxlLnNlcmllc0luZGV4KX0pLnN0eWxl
KCJzdHJvaz0KZSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8aShlLGUuc2VyaWVzSW5k
ZXgpfSksXy5hdHRyKCJkIixmdW5jdGlvbihlPQosdCl7cmV0dXJuIE8oZS52YWx1ZXMsdCl9KSx2
LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLmFyZWEiLGZ1bmN0aW9uKGU9Cil7TC5zZWxl
Y3QoIi5udi1jaGFydC0iK3MrIiAubnYtYXJlYS0iK2Uuc2VyaWVzSW5kZXgpLmNsYXNzZWQoImhv
dmVyIiwhMCl9KT0KLHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC5hcmVhIixmdW5jdGlv
bihlKXtMLnNlbGVjdCgiLm52LWNoYXJ0LSIrcysiPQogLm52LWFyZWEtIitlLnNlcmllc0luZGV4
KS5jbGFzc2VkKCJob3ZlciIsITEpfSksZy5kM19zdGFja2VkT2Zmc2V0X3N0YWNrUGU9CnJjZW50
PTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0RlLmxlbmd0aCxuPTNEZVswXS5sZW5ndGgscj0zRDEvdCxp
LHMsbyxhPTNEW107Zj0Kb3Iocz0zRDA7czxuOysrcyl7Zm9yKGk9M0QwLG89M0QwO2k8RS5sZW5n
dGg7aSsrKW8rPTNEdShFW2ldLnZhbHVlc1tzXSk7aWYoPQpvKWZvcihpPTNEMDtpPHQ7aSsrKWVb
aV1bc11bMV0vPTNEbztlbHNlIGZvcihpPTNEMDtpPHQ7aSsrKWVbaV1bc11bMV09M0RyfWY9Cm9y
KHM9M0QwO3M8bjsrK3MpYVtzXT0zRDA7cmV0dXJuIGF9fSksZ312YXIgdD0zRHt0b3A6MCxyaWdo
dDowLGJvdHRvbTowLGxlZj0KdDowfSxuPTNEOTYwLHI9M0Q1MDAsaT0zRGUudXRpbHMuZGVmYXVs
dENvbG9yKCkscz0zRE1hdGguZmxvb3IoTWF0aC5yYW5kb20oPQopKjFlNSksbz0zRGZ1bmN0aW9u
KGUpe3JldHVybiBlLnh9LHU9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS55fSxhPTNEInN0YWNrIiw9
CmY9M0QiemVybyIsbD0zRCJkZWZhdWx0IixjPTNEImxpbmVhciIsaD0zRCExLHAsZCx2PTNEZS5t
b2RlbHMuc2NhdHRlcigpLG09Cj0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBI
aWRlIiwiYXJlYUNsaWNrIiwiYXJlYU1vdXNlb3ZlciIsImFyZT0KYU1vdXNlb3V0Iik7cmV0dXJu
IHYuc2l6ZSgyLjIpLnNpemVEb21haW4oWzIuMiwyLjJdKSx2LmRpc3BhdGNoLm9uKCJlbGVtZW50
PQpDbGljay5hcmVhIixmdW5jdGlvbihlKXttLmFyZWFDbGljayhlKX0pLHYuZGlzcGF0Y2gub24o
ImVsZW1lbnRNb3VzZW92ZXIudG89Cm9sdGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1sw
XSt0LmxlZnQsZS5wb3NbMV0rdC50b3BdLG0udG9vbHRpcFNob3coZT0KKX0pLHYuZGlzcGF0Y2gu
b24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXttLnRvb2x0aXBIaWRlKGUp
fSksPQpnLmRpc3BhdGNoPTNEbSxnLnNjYXR0ZXI9M0R2LGQzLnJlYmluZChnLHYsImludGVyYWN0
aXZlIiwic2l6ZSIsInhTY2FsZSIsInk9ClNjYWxlIiwielNjYWxlIiwieERvbWFpbiIsInlEb21h
aW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJzaXplRG9tYWluIiwiZm9yY2VYIj0KLCJmb3JjZVkiLCJm
b3JjZVNpemUiLCJjbGlwVm9yb25vaSIsInVzZVZvcm9ub2kiLCJjbGlwUmFkaXVzIiwiaGlnaGxp
Z2h0UG9pPQpudCIsImNsZWFySGlnaGxpZ2h0cyIpLGcub3B0aW9ucz0zRGUudXRpbHMub3B0aW9u
c0Z1bmMuYmluZChnKSxnLng9M0RmdW5jdGk9Cm9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhvPTNEZDMuZnVuY3RvcihlKSxnKTpvfSxnLnk9M0RmdW5jdGlvbihlKXtyZT0KdHVybiBhcmd1
bWVudHMubGVuZ3RoPyh1PTNEZDMuZnVuY3RvcihlKSxnKTp1fSxnLm1hcmdpbj0zRGZ1bmN0aW9u
KGUpe3JldHVyPQpuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1
bmRlZmluZWQiP2UudG9wOnQudG9wLHQucmlnaHQ9Cj0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRl
ZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvbT0KIT0zRCJ1
bmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVu
ZGVmaW5lZCI/ZS5sPQplZnQ6dC5sZWZ0LGcpOnR9LGcud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGUsZyk6bn09CixnLmhlaWdodD0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZSxnKTpyfSxnLmNsaXBFZGdlPTNEZj0KdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsZyk6aH0sZy5jb2xvcj0zRGZ1
bmN0aW9uKHQpe3JldHVyPQpuIGFyZ3VtZW50cy5sZW5ndGg/KGk9M0RlLnV0aWxzLmdldENvbG9y
KHQpLGcpOml9LGcub2Zmc2V0PTNEZnVuY3Rpb24oZSl7cmU9CnR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oZj0zRGUsZyk6Zn0sZy5vcmRlcj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubD0K
ZW5ndGg/KGw9M0RlLGcpOmx9LGcuc3R5bGU9M0RmdW5jdGlvbihlKXtpZighYXJndW1lbnRzLmxl
bmd0aClyZXR1cm4gYTthPTNEPQplO3N3aXRjaChhKXtjYXNlInN0YWNrIjpnLm9mZnNldCgiemVy
byIpLGcub3JkZXIoImRlZmF1bHQiKTticmVhaztjYXNlInN0cmU9CmFtIjpnLm9mZnNldCgid2ln
Z2xlIiksZy5vcmRlcigiaW5zaWRlLW91dCIpO2JyZWFrO2Nhc2Uic3RyZWFtLWNlbnRlciI6Zy5v
Zj0KZnNldCgic2lsaG91ZXR0ZSIpLGcub3JkZXIoImluc2lkZS1vdXQiKTticmVhaztjYXNlImV4
cGFuZCI6Zy5vZmZzZXQoImV4cGFuPQpkIiksZy5vcmRlcigiZGVmYXVsdCIpO2JyZWFrO2Nhc2Ui
c3RhY2tfcGVyY2VudCI6Zy5vZmZzZXQoZy5kM19zdGFja2VkT2Zmc2U9CnRfc3RhY2tQZXJjZW50
KSxnLm9yZGVyKCJkZWZhdWx0Iil9cmV0dXJuIGd9LGcuaW50ZXJwb2xhdGU9M0RmdW5jdGlvbihl
KXtyZT0KdHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSxnKTpjfSxnfSxlLm1vZGVscy5zdGFj
a2VkQXJlYUNoYXJ0PTNEZnVuY3Rpb24oPQope2Z1bmN0aW9uIE0oeSl7cmV0dXJuIHkuZWFjaChm
dW5jdGlvbih5KXt2YXIgQT0zRGQzLnNlbGVjdCh0aGlzKSxfPTNEdGhpcyw9CkQ9M0QoYXx8cGFy
c2VJbnQoQS5zdHlsZSgid2lkdGgiKSl8fDk2MCktdS5sZWZ0LXUucmlnaHQsUD0zRChmfHxwYXJz
ZUludChBLj0Kc3R5bGUoImhlaWdodCIpKXx8NDAwKS11LnRvcC11LmJvdHRvbTtNLnVwZGF0ZT0z
RGZ1bmN0aW9uKCl7QS5jYWxsKE0pfSxNLmNvPQpudGFpbmVyPTNEdGhpcyxTLmRpc2FibGVkPTNE
eS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSk7aWYoIXgpe3Y9CmFyIEg7eD0z
RHt9O2ZvcihIIGluIFMpU1tIXWluc3RhbmNlb2YgQXJyYXk/eFtIXT0zRFNbSF0uc2xpY2UoMCk6
eFtIXT0zRFNbSD0KXX1pZigheXx8IXkubGVuZ3RofHwheS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0
dXJuIGUudmFsdWVzLmxlbmd0aH0pLmxlbmd0aCl7PQp2YXIgQj0zREEuc2VsZWN0QWxsKCIubnYt
bm9EYXRhIikuZGF0YShbVF0pO3JldHVybiBCLmVudGVyKCkuYXBwZW5kKCJ0ZXh0Iik9Ci5hdHRy
KCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0
LWFuY2hvciIsIm1pZD0KZGxlIiksQi5hdHRyKCJ4Iix1LmxlZnQrRC8yKS5hdHRyKCJ5Iix1LnRv
cCtQLzIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9PQopLE19QS5zZWxlY3RBbGwoIi5udi1u
b0RhdGEiKS5yZW1vdmUoKSxiPTNEdC54U2NhbGUoKSx3PTNEdC55U2NhbGUoKTt2YXIgaj0KPTNE
QS5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1zdGFja2VkQXJlYUNoYXJ0IikuZGF0YShbeV0pLEY9
M0RqLmVudGVyKCkuYXBwPQplbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1z
dGFja2VkQXJlYUNoYXJ0IikuYXBwZW5kKCJnIiksST0zRGo9Ci5zZWxlY3QoImciKTtGLmFwcGVu
ZCgicmVjdCIpLnN0eWxlKCJvcGFjaXR5IiwwKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIj0K
LCJudi14IG52LWF4aXMiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteSBudi1heGlz
IiksRi5hcHBlbmQoImciKS5hPQp0dHIoImNsYXNzIiwibnYtc3RhY2tlZFdyYXAiKSxGLmFwcGVu
ZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpLEY9Ci5hcHBlbmQoImciKS5hdHRy
KCJjbGFzcyIsIm52LWNvbnRyb2xzV3JhcCIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJu
dj0KLWludGVyYWN0aXZlIiksSS5zZWxlY3QoInJlY3QiKS5hdHRyKCJ3aWR0aCIsRCkuYXR0cigi
aGVpZ2h0IixQKTtpZihoKXt2YXIgPQpxPTNEYz9ELUM6RDtpLndpZHRoKHEpLEkuc2VsZWN0KCIu
bnYtbGVnZW5kV3JhcCIpLmRhdHVtKHkpLmNhbGwoaSksdS50b3AhPQo9M0RpLmhlaWdodCgpJiYo
dS50b3A9M0RpLmhlaWdodCgpLFA9M0QoZnx8cGFyc2VJbnQoQS5zdHlsZSgiaGVpZ2h0IikpfHw0
MDA9CiktdS50b3AtdS5ib3R0b20pLEkuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRy
YW5zZm9ybSIsInRyYW5zbGF0ZSgiKz0KKEQtcSkrIiwiKyAtdS50b3ArIikiKX1pZihjKXt2YXIg
Uj0zRFt7a2V5Okwuc3RhY2tlZHx8IlN0YWNrZWQiLG1ldGFLZXk6IlN0PQphY2tlZCIsZGlzYWJs
ZWQ6dC5zdHlsZSgpIT0zRCJzdGFjayIsc3R5bGU6InN0YWNrIn0se2tleTpMLnN0cmVhbXx8IlN0
cmVhbSI9CixtZXRhS2V5OiJTdHJlYW0iLGRpc2FibGVkOnQuc3R5bGUoKSE9M0Qic3RyZWFtIixz
dHlsZToic3RyZWFtIn0se2tleTpMLmV4cD0KYW5kZWR8fCJFeHBhbmRlZCIsbWV0YUtleToiRXhw
YW5kZWQiLGRpc2FibGVkOnQuc3R5bGUoKSE9M0QiZXhwYW5kIixzdHlsZToiPQpleHBhbmQifSx7
a2V5Okwuc3RhY2tfcGVyY2VudHx8IlN0YWNrICUiLG1ldGFLZXk6IlN0YWNrX1BlcmNlbnQiLGRp
c2FibGVkOnQ9Ci5zdHlsZSgpIT0zRCJzdGFja19wZXJjZW50IixzdHlsZToic3RhY2tfcGVyY2Vu
dCJ9XTtDPTNEay5sZW5ndGgvMyoyNjAsUj0zRD0KUi5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJu
IGsuaW5kZXhPZihlLm1ldGFLZXkpIT0zRD0zRC0xfSkscy53aWR0aChDKS5jb2xvPQpyKFsiIzQ0
NCIsIiM0NDQiLCIjNDQ0Il0pLEkuc2VsZWN0KCIubnYtY29udHJvbHNXcmFwIikuZGF0dW0oUiku
Y2FsbChzKSx1LnQ9Cm9wIT0zRE1hdGgubWF4KHMuaGVpZ2h0KCksaS5oZWlnaHQoKSkmJih1LnRv
cD0zRE1hdGgubWF4KHMuaGVpZ2h0KCksaS5oZWlnaD0KdCgpKSxQPTNEKGZ8fHBhcnNlSW50KEEu
c3R5bGUoImhlaWdodCIpKXx8NDAwKS11LnRvcC11LmJvdHRvbSksSS5zZWxlY3QoIi5uPQp2LWNv
bnRyb2xzV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrIC11LnRvcCsiKSIp
fWouYXR0cigidHJhbnM9CmZvcm0iLCJ0cmFuc2xhdGUoIit1LmxlZnQrIiwiK3UudG9wKyIpIiks
diYmSS5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5hdHRyKD0KInRyYW5zZm9ybSIsInRyYW5zbGF0
ZSgiK0QrIiwwKSIpLG0mJihvLndpZHRoKEQpLmhlaWdodChQKS5tYXJnaW4oe2xlZnQ6dS5sPQpl
ZnQsdG9wOnUudG9wfSkuc3ZnQ29udGFpbmVyKEEpLnhTY2FsZShiKSxqLnNlbGVjdCgiLm52LWlu
dGVyYWN0aXZlIikuY2FsbCg9Cm8pKSx0LndpZHRoKEQpLmhlaWdodChQKTt2YXIgVT0zREkuc2Vs
ZWN0KCIubnYtc3RhY2tlZFdyYXAiKS5kYXR1bSh5KTtVLmNhbD0KbCh0KSxwJiYobi5zY2FsZShi
KS50aWNrcyhELzEwMCkudGlja1NpemUoLVAsMCksSS5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5h
PQp0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrUCsiKSIpLEkuc2VsZWN0KCIubnYteC5u
di1heGlzIikuY2FsbChuKSksZCY9CiYoci5zY2FsZSh3KS50aWNrcyh0Lm9mZnNldCgpPTNEPTNE
IndpZ2dsZSI/MDpQLzM2KS50aWNrU2l6ZSgtRCwwKS5zZXRUaWNrRj0Kb3JtYXQodC5zdHlsZSgp
PTNEPTNEImV4cGFuZCJ8fHQuc3R5bGUoKT0zRD0zRCJzdGFja19wZXJjZW50Ij9kMy5mb3JtYXQo
IiUiPQopOkUpLEkuc2VsZWN0KCIubnYteS5udi1heGlzIikuY2FsbChyKSksdC5kaXNwYXRjaC5v
bigiYXJlYUNsaWNrLnRvZ2dsZSIsZnU9Cm5jdGlvbihlKXt5LmZpbHRlcihmdW5jdGlvbihlKXty
ZXR1cm4hZS5kaXNhYmxlZH0pLmxlbmd0aD0zRD0zRD0zRDE/eS5mb3JFYT0KY2goZnVuY3Rpb24o
ZSl7ZS5kaXNhYmxlZD0zRCExfSk6eS5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7dC5kaXNhYmxlZD0z
RG4hPTNEPQplLnNlcmllc0luZGV4fSksUy5kaXNhYmxlZD0zRHkubWFwKGZ1bmN0aW9uKGUpe3Jl
dHVybiEhZS5kaXNhYmxlZH0pLE4uc3RhdGU9CkNoYW5nZShTKSxNLnVwZGF0ZSgpfSksaS5kaXNw
YXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe1MuZGlzYWJsZWQ9Cj0zRGUuZGlzYWJs
ZWQsTi5zdGF0ZUNoYW5nZShTKSxNLnVwZGF0ZSgpfSkscy5kaXNwYXRjaC5vbigibGVnZW5kQ2xp
Y2siLGZ1bj0KY3Rpb24oZSxuKXtpZighZS5kaXNhYmxlZClyZXR1cm47Uj0zRFIubWFwKGZ1bmN0
aW9uKGUpe3JldHVybiBlLmRpc2FibGVkPTNEPQohMCxlfSksZS5kaXNhYmxlZD0zRCExLHQuc3R5
bGUoZS5zdHlsZSksUy5zdHlsZT0zRHQuc3R5bGUoKSxOLnN0YXRlQ2hhbmdlKFM9CiksTS51cGRh
dGUoKX0pLG8uZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW1vdmUiLGZ1bmN0aW9uKGkpe3QuY2xl
YXJIaWdobGlnaD0KdHMoKTt2YXIgcyxhLGYsYz0zRFtdO3kuZmlsdGVyKGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIGUuc2VyaWVzSW5kZXg9M0R0LCFlLmRpPQpzYWJsZWR9KS5mb3JFYWNoKGZ1bmN0aW9u
KG4scil7YT0zRGUuaW50ZXJhY3RpdmVCaXNlY3Qobi52YWx1ZXMsaS5wb2ludFhWYWw9CnVlLE0u
eCgpKSx0LmhpZ2hsaWdodFBvaW50KHIsYSwhMCk7dmFyIG89M0RuLnZhbHVlc1thXTtpZih0eXBl
b2Ygbz0zRD0zRCJ1bj0KZGVmaW5lZCIpcmV0dXJuO3R5cGVvZiBzPTNEPTNEInVuZGVmaW5lZCIm
JihzPTNEbyksdHlwZW9mIGY9M0Q9M0QidW5kZWZpbmVkPQoiJiYoZj0zRE0ueFNjYWxlKCkoTS54
KCkobyxhKSkpO3ZhciB1PTNEdC5zdHlsZSgpPTNEPTNEImV4cGFuZCI/by5kaXNwbGF5Lnk9CjpN
LnkoKShvLGEpO2MucHVzaCh7a2V5Om4ua2V5LHZhbHVlOnUsY29sb3I6bChuLG4uc2VyaWVzSW5k
ZXgpLHN0YWNrZWRWYWx1ZT0KOm8uZGlzcGxheX0pfSksYy5yZXZlcnNlKCk7aWYoYy5sZW5ndGg+
Mil7dmFyIGg9M0RNLnlTY2FsZSgpLmludmVydChpLm1vdXNlPQpZKSxwPTNESW5maW5pdHksZD0z
RG51bGw7Yy5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7aD0zRE1hdGguYWJzKGgpO3ZhciBuPTNETWE9
CnRoLmFicyhlLnN0YWNrZWRWYWx1ZS55MCkscj0zRE1hdGguYWJzKGUuc3RhY2tlZFZhbHVlLnkp
O2lmKGg+PTNEbiYmaDw9M0RyKz0Kbil7ZD0zRHQ7cmV0dXJufX0pLGQhPTNEbnVsbCYmKGNbZF0u
aGlnaGxpZ2h0PTNEITApfXZhciB2PTNEbi50aWNrRm9ybWF0KCkoPQpNLngoKShzLGEpKSxtPTNE
dC5zdHlsZSgpPTNEPTNEImV4cGFuZCI/ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZDMuZm9ybWF0KCIu
MSU9CiIpKGUpfTpmdW5jdGlvbihlLHQpe3JldHVybiByLnRpY2tGb3JtYXQoKShlKX07by50b29s
dGlwLnBvc2l0aW9uKHtsZWZ0OmYrdT0KLmxlZnQsdG9wOmkubW91c2VZK3UudG9wfSkuY2hhcnRD
b250YWluZXIoXy5wYXJlbnROb2RlKS5lbmFibGVkKGcpLnZhbHVlRm9yPQptYXR0ZXIobSkuZGF0
YSh7dmFsdWU6dixzZXJpZXM6Y30pKCksby5yZW5kZXJHdWlkZUxpbmUoZil9KSxvLmRpc3BhdGNo
Lm9uKCI9CmVsZW1lbnRNb3VzZW91dCIsZnVuY3Rpb24oZSl7Ti50b29sdGlwSGlkZSgpLHQuY2xl
YXJIaWdobGlnaHRzKCl9KSxOLm9uKCJ0bz0Kb2x0aXBTaG93IixmdW5jdGlvbihlKXtnJiZPKGUs
Xy5wYXJlbnROb2RlKX0pLE4ub24oImNoYW5nZVN0YXRlIixmdW5jdGlvbihlPQope3R5cGVvZiBl
LmRpc2FibGVkIT0zRCJ1bmRlZmluZWQiJiZ5Lmxlbmd0aD0zRD0zRD0zRGUuZGlzYWJsZWQubGVu
Z3RoJiYoeS49CmZvckVhY2goZnVuY3Rpb24odCxuKXt0LmRpc2FibGVkPTNEZS5kaXNhYmxlZFtu
XX0pLFMuZGlzYWJsZWQ9M0RlLmRpc2FibGVkKT0KLHR5cGVvZiBlLnN0eWxlIT0zRCJ1bmRlZmlu
ZWQiJiZ0LnN0eWxlKGUuc3R5bGUpLE0udXBkYXRlKCl9KX0pLE19dmFyIHQ9M0RlPQoubW9kZWxz
LnN0YWNrZWRBcmVhKCksbj0zRGUubW9kZWxzLmF4aXMoKSxyPTNEZS5tb2RlbHMuYXhpcygpLGk9
M0RlLm1vZGVscy49CmxlZ2VuZCgpLHM9M0RlLm1vZGVscy5sZWdlbmQoKSxvPTNEZS5pbnRlcmFj
dGl2ZUd1aWRlbGluZSgpLHU9M0R7dG9wOjMwLHJpZz0KaHQ6MjUsYm90dG9tOjUwLGxlZnQ6NjB9
LGE9M0RudWxsLGY9M0RudWxsLGw9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigpLGM9M0QhPQowLGg9
M0QhMCxwPTNEITAsZD0zRCEwLHY9M0QhMSxtPTNEITEsZz0zRCEwLHk9M0RmdW5jdGlvbihlLHQs
bixyLGkpe3JldHVybiI9CjxoMz4iK2UrIjwvaDM+IisiPHA+IituKyIgb24gIit0KyI8L3A+In0s
Yix3LEU9M0RkMy5mb3JtYXQoIiwuMmYiKSxTPTNEe3N0eT0KbGU6dC5zdHlsZSgpfSx4PTNEbnVs
bCxUPTNEIk5vIERhdGEgQXZhaWxhYmxlLiIsTj0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvPQp3
IiwidG9vbHRpcEhpZGUiLCJzdGF0ZUNoYW5nZSIsImNoYW5nZVN0YXRlIiksQz0zRDI1MCxrPTNE
WyJTdGFja2VkIiwiU3RyZWE9Cm0iLCJFeHBhbmRlZCJdLEw9M0R7fSxBPTNEMDtuLm9yaWVudCgi
Ym90dG9tIikudGlja1BhZGRpbmcoNyksci5vcmllbnQodj8icj0KaWdodCI6ImxlZnQiKSxzLnVw
ZGF0ZVN0YXRlKCExKTt2YXIgTz0zRGZ1bmN0aW9uKGkscyl7dmFyIG89M0RpLnBvc1swXSsocy5v
PQpmZnNldExlZnR8fDApLHU9M0RpLnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLGE9M0RuLnRpY2tG
b3JtYXQoKSh0LngoKShpLnBvaW49CnQsaS5wb2ludEluZGV4KSksZj0zRHIudGlja0Zvcm1hdCgp
KHQueSgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksbD0zRHkoaS5zZT0Kcmllcy5rZXksYSxmLGks
TSk7ZS50b29sdGlwLnNob3coW28sdV0sbCxpLnZhbHVlPDA/Im4iOiJzIixudWxsLHMpfTtyZXR1
cm4gPQp0LmRpc3BhdGNoLm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5w
b3NbMF0rdS5sZWZ0LGUucG9zWzFdK3U9Ci50b3BdLE4udG9vbHRpcFNob3coZSl9KSx0LmRpc3Bh
dGNoLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oZSl7Ti50b29sdGlwSD0KaWRlKGUpfSksTi5v
bigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7ZyYmZS50b29sdGlwLmNsZWFudXAoKX0pLE0uZGlz
cGF0Y2g9Cj0zRE4sTS5zdGFja2VkPTNEdCxNLmxlZ2VuZD0zRGksTS5jb250cm9scz0zRHMsTS54
QXhpcz0zRG4sTS55QXhpcz0zRHIsTS5pbj0KdGVyYWN0aXZlTGF5ZXI9M0RvLGQzLnJlYmluZChN
LHQsIngiLCJ5Iiwic2l6ZSIsInhTY2FsZSIsInlTY2FsZSIsInhEb21haW4iPQosInlEb21haW4i
LCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJzaXplRG9tYWluIiwiaW50ZXJhY3RpdmUiLCJ1c2VWb3Jvbm9p
Iiwib2Zmc2U9CnQiLCJvcmRlciIsInN0eWxlIiwiY2xpcEVkZ2UiLCJmb3JjZVgiLCJmb3JjZVki
LCJmb3JjZVNpemUiLCJpbnRlcnBvbGF0ZSIpLD0KTS5vcHRpb25zPTNEZS51dGlscy5vcHRpb25z
RnVuYy5iaW5kKE0pLE0ubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtPQplbnRzLmxl
bmd0aD8odS50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6dS50b3AsdS5y
aWdodD0zRHR5cGU9Cm9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDp1LnJpZ2h0LHUu
Ym90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bj0KZGVmaW5lZCI/ZS5ib3R0b206dS5ib3R0
b20sdS5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6dS5sPQplZnQs
TSk6dX0sTS53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNE
ZSxNKTphfSxNLmhlaWc9Cmh0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGY9M0RlLE0pOmZ9LE0uY29sb3I9M0RmdW5jdGlvbihuKT0Ke3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhsPTNEZS51dGlscy5nZXRDb2xvcihuKSxpLmNvbG9yKGwpLHQuY29sb3IobCksTSk6PQps
fSxNLnNob3dDb250cm9scz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhj
PTNEZSxNKTpjfSxNLnNob3c9CkxlZ2VuZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhoPTNEZSxNKTpofSxNLnNob3dYQXhpcz0zRGZ1bj0KY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHA9M0RlLE0pOnB9LE0uc2hvd1lBeGlzPTNEZnVuY3Rpb24oZSl7cmV0
PQp1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGUsTSk6ZH0sTS5yaWdodEFsaWduWUF4aXM9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXI9Cmd1bWVudHMubGVuZ3RoPyh2PTNEZSxyLm9yaWVudChlPyJy
aWdodCI6ImxlZnQiKSxNKTp2fSxNLnVzZUludGVyYWN0aXZlR3VpZD0KZWxpbmU9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0zRGUsZT0zRD0zRD0zRCEwJiYoTS5pbnRl
cmFjPQp0aXZlKCExKSxNLnVzZVZvcm9ub2koITEpKSxNKTptfSxNLnRvb2x0aXA9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmw9CmVuZ3RoPyh5PTNEZSxNKTp5fSxNLnRvb2x0aXBzPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGc9M0RlLD0KTSk6Z30sTS50b29s
dGlwQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PTNEZSxN
KTp5fSxNPQouc3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUz0z
RGUsTSk6U30sTS5kZWZhdWx0U3RhdGU9M0Q9CmZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyh4PTNEZSxNKTp4fSxNLm5vRGF0YT0zRGZ1bmN0aW9uKGUpe3JldD0KdXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KFQ9M0RlLE0pOlR9LE0udHJhbnNpdGlvbkR1cmF0aW9uPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuPQogYXJndW1lbnRzLmxlbmd0aD8oQT0zRGUsTSk6QX0sTS5jb250cm9sc0RhdGE9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnQ9CnMubGVuZ3RoPyhrPTNEZSxNKTprfSxNLmNv
bnRyb2xMYWJlbHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD0KP3R5cGVv
ZiBlIT0zRCJvYmplY3QiP0w6KEw9M0RlLE0pOkx9LHIuc2V0VGlja0Zvcm1hdD0zRHIudGlja0Zv
cm1hdCxyLnRpY2tGPQpvcm1hdD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhFPTNEZSxyKTpFfSxNfX0oKSxkZWZpbmUoInBsdWc9CmluL3BsdWdpbnMvbnZkMy9udi5kMyIs
ZnVuY3Rpb24oKXt9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvbnZkMy9jb21tb24vY29uZj0KaWci
LFsicGx1Z2luL2NoYXJ0cy9mb3Jtcy9kZWZhdWx0IiwicGx1Z2luL3BsdWdpbnMvbnZkMy9udi5k
MyJdLGZ1bmN0aW9uKGUpPQp7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiIiLGNhdGVn
b3J5OiIiLGxpYnJhcnk6Ik5WRDMiLHRhZzoic3ZnIixrZXk9CndvcmRzOiJzbWFsbCJ9KX0pLGRl
ZmluZSgicGx1Z2luL2NoYXJ0cy9udmQzL2Jhci9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9udj0K
ZDMvY29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0
aXRsZToiUmVndWxhciIsY2F0PQplZ29yeToiQmFyIGRpYWdyYW1zIixjb2x1bW5zOnt4Ont0aXRs
ZToiVmFsdWVzIGZvciB4LWF4aXMiLGlzX2xhYmVsOiEwLGlzX2E9CnV0bzohMCxpc191bmlxdWU6
ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhpcyIsaXNfbnVtZXJpYzohMH19fSl9KSxkZWZp
bj0KZSgicGx1Z2luL2NoYXJ0cy9udmQzL2Jhcl9zdGFja2VkL2NvbmZpZyIsWyJwbHVnaW4vY2hh
cnRzL252ZDMvY29tbW9uL2NvbmZpPQpnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEw
LHt9LGUse3RpdGxlOiJTdGFja2VkIixjYXRlZ29yeToiQmFyIGRpYWc9CnJhbXMiLGNvbHVtbnM6
e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbGFiZWw6ITAsaXNfYXV0bzohMCxpc191
bmlxdT0KZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1lcmljOiEwfX19
KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0PQpzL252ZDMvYmFyX2hvcml6b250YWwvY29uZmlnIixb
InBsdWdpbi9jaGFydHMvbnZkMy9jb21tb24vY29uZmlnIl0sZnVuY3Rpb249CihlKXtyZXR1cm4g
JC5leHRlbmQoITAse30sZSx7dGl0bGU6Ikhvcml6b250YWwiLGNhdGVnb3J5OiJCYXIgZGlhZ3Jh
bXMiLHNldD0KdGluZ3M6e3hfYXhpc190eXBlOntpbml0OiJoaWRlIn19LGNvbHVtbnM6e3g6e3Rp
dGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfPQpsYWJlbDohMCxpc19hdXRvOiEwLGlzX3VuaXF1
ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1lcmljOiE9CjB9fX0pfSks
ZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252ZDMvYmFyX2hvcml6b250YWxfc3RhY2tlZC9jb25maWci
LFsicGx1Z2luLz0KY2hhcnRzL252ZDMvY29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVy
biAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiU3RhPQpja2VkIGhvcml6b250YWwiLGNhdGVnb3J5
OiJCYXIgZGlhZ3JhbXMiLHNldHRpbmdzOnt4X2F4aXNfdHlwZTp7aW5pdDoiaGlkZSI9Cn19LGNv
bHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbGFiZWw6ITAsaXNfYXV0bzoh
MCxpc191bmlxdWU6IT0KMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1lcmlj
OiEwfX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9uPQp2ZDMvbGluZV9mb2N1cy9jb25maWci
LFsicGx1Z2luL2NoYXJ0cy9udmQzL2NvbW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXQ9CnVy
biAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiTGluZSB3aXRoIGZvY3VzIixjYXRlZ29yeToiT3Ro
ZXJzIix6b29tYWJsZToibj0KYXRpdmUiLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgt
YXhpcyIsaXNfbGFiZWw6ITAsaXNfYXV0bzohMCxpc191bmlxPQp1ZTohMH0seTp7dGl0bGU6IlZh
bHVlcyBmb3IgeS1heGlzIixpc19udW1lcmljOiEwfX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXI9
CnRzL252ZDMvcGllL2NvbmZpZyIsWyJwbHVnaW4vcGx1Z2lucy9udmQzL252LmQzIl0sZnVuY3Rp
b24oKXtyZXR1cm4gJC5leHRlbj0KZCghMCx7fSx7dGl0bGU6IlBpZSBjaGFydCIsY2F0ZWdvcnk6
IkFyZWEgY2hhcnRzIixsaWJyYXJ5OiJOVkQzIix0YWc6InN2ZyIsPQprZXl3b3Jkczoic21hbGwi
LGNvbHVtbnM6e2xhYmVsOnt0aXRsZToiTGFiZWxzIixpc19sYWJlbDohMCxpc19hdXRvOiEwfSx5
Ons9CnRpdGxlOiJWYWx1ZXMiLGlzX251bWVyaWM6ITB9fSxzZXR0aW5nczp7bWFpbl9zZXBhcmF0
b3I6e3R5cGU6InNlcGFyYXRvciIsdD0KaXRsZToiUGllIGNoYXJ0IHNldHRpbmdzIn0sZG9udXRf
cmF0aW86e3RpdGxlOiJEb251dCByYXRpbyIsaW5mbzoiRGV0ZXJtaW5lPQogaG93IGxhcmdlIHRo
ZSBkb251dCBob2xlIHdpbGwgYmUuIix0eXBlOiJzZWxlY3QiLGluaXQ6IjAuNSIsZGF0YTpbe2xh
YmVsOiI9CjUwJSIsdmFsdWU6IjAuNSJ9LHtsYWJlbDoiMjUlIix2YWx1ZToiMC4yNSJ9LHtsYWJl
bDoiMTAlIix2YWx1ZToiMC4xMCJ9LHtsYT0KYmVsOiIwJSIsdmFsdWU6IjAifV19LHNob3dfbGVn
ZW5kOnt0aXRsZToiU2hvdyBsZWdlbmQiLGluZm86IldvdWxkIHlvdSBsaWtlPQogdG8gYWRkIGEg
bGVnZW5kPyIsdHlwZToicmFkaW9idXR0b24iLGluaXQ6ImZhbHNlIixkYXRhOlt7bGFiZWw6Illl
cyIsdmFsdWU9CjoidHJ1ZSJ9LHtsYWJlbDoiTm8iLHZhbHVlOiJmYWxzZSJ9XX0sbGFiZWxfc2Vw
YXJhdG9yOnt0eXBlOiJzZXBhcmF0b3IiLHRpdD0KbGU6IkxhYmVsIHNldHRpbmdzIn0sbGFiZWxf
dHlwZTp7dGl0bGU6IkRvbnV0IGxhYmVsIixpbmZvOiJXaGF0IHdvdWxkIHlvdSBsPQppa2UgdG8g
c2hvdyBmb3IgZWFjaCBzbGljZT8iLHR5cGU6InNlbGVjdCIsaW5pdDoicGVyY2VudCIsZGF0YTpb
e2xhYmVsOiItLSA9Ck5vdGhpbmcgLS0iLHZhbHVlOiJoaWRlIixoaWRlOiJsYWJlbF9vdXRzaWRl
In0se2xhYmVsOiJMYWJlbCBjb2x1bW4iLHZhbHVlOj0KImtleSIsc2hvdzoibGFiZWxfb3V0c2lk
ZSJ9LHtsYWJlbDoiVmFsdWUgY29sdW1uIix2YWx1ZToidmFsdWUiLHNob3c6ImxhYmVsPQpfb3V0
c2lkZSJ9LHtsYWJlbDoiUGVyY2VudGFnZSIsdmFsdWU6InBlcmNlbnQiLHNob3c6ImxhYmVsX291
dHNpZGUifV19LGxhYmU9Cmxfb3V0c2lkZTp7dGl0bGU6IlNob3cgb3V0c2lkZSIsaW5mbzoiV291
bGQgeW91IGxpa2UgdG8gc2hvdyBsYWJlbHMgb3V0c2lkZT0KIHRoZSBkb251dD8iLHR5cGU6InJh
ZGlvYnV0dG9uIixpbml0OiJmYWxzZSIsZGF0YTpbe2xhYmVsOiJZZXMiLHZhbHVlOiJ0cnVlPQoi
fSx7bGFiZWw6Ik5vIix2YWx1ZToiZmFsc2UifV19LHVzZV9wYW5lbHM6e2luaXQ6InRydWUiLGhp
ZGU6ITB9fX0pfSksZGVmaW49CmUoInBsdWdpbi9jaGFydHMvbnZkMy9zdGFja2VkYXJlYV9mdWxs
L2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL252ZDMvY29tbW9uLz0KY29uZmlnIl0sZnVuY3Rpb24o
ZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJFeHBhbmRlZCIsem9vbWFibGU6ITAs
PQpjYXRlZ29yeToiQXJlYSBjaGFydHMiLGtleXdvcmRzOiJkZWZhdWx0IHNtYWxsIixjb2x1bW5z
Ont4Ont0aXRsZToiVmFsdWVzIGY9Cm9yIHgtYXhpcyIsaXNfbGFiZWw6ITAsaXNfYXV0bzohMCxp
c191bmlxdWU6ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhpcz0KIixpc19udW1lcmljOiEw
fX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9udmQzL3N0YWNrZWRhcmVhX3N0cmVhbS9jb25m
aWciPQosWyJwbHVnaW4vY2hhcnRzL252ZDMvY29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3Jl
dHVybiAkLmV4dGVuZCghMCx7fSxlLHs9CnRpdGxlOiJTdHJlYW0iLGNhdGVnb3J5OiJBcmVhIGNo
YXJ0cyIsem9vbWFibGU6ITAsa2V5d29yZHM6ImRlZmF1bHQgc21hbGwiLD0Kc2hvd21heG1pbjoh
MCxjb2x1bW5zOnt4Ont0aXRsZToiVmFsdWVzIGZvciB4LWF4aXMiLGlzX2xhYmVsOiEwLGlzX2F1
dG86ITAsPQppc191bmlxdWU6ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhpcyIsaXNfbnVt
ZXJpYzohMH19fSl9KSxkZWZpbmUoInBsdWc9CmluL2NoYXJ0cy9udmQzL2hpc3RvZ3JhbS9jb25m
aWciLFsicGx1Z2luL2NoYXJ0cy9udmQzL2NvbW1vbi9jb25maWciXSxmdW5jdD0KaW9uKGUpe3Jl
dHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiSGlzdG9ncmFtIixjYXRlZ29yeToiRGF0YSBw
cm9jZXNzaW5nPQogKHJlcXVpcmVzICdjaGFydHMnIHRvb2wgZnJvbSBUb29sc2hlZCkiLGV4ZWN1
dGU6Imhpc3RvZ3JhbSIsa2V5d29yZHM6InNtYWw9CmwgbWVkaXVtIGxhcmdlIixjb2x1bW5zOnt5
Ont0aXRsZToiT2JzZXJ2YXRpb25zIixpc19udW1lcmljOiEwfX0sc2V0dGluZ3M6ez0KeF9heGlz
X2xhYmVsOntpbml0OiJWYWx1ZXMifSx5X2F4aXNfbGFiZWw6e2luaXQ6IkRlbnNpdHkifSx5X2F4
aXNfdHlwZTp7aW5pPQp0OiJmIn0seV9heGlzX3ByZWNpc2lvbjp7aW5pdDoiLjIifX19KX0pLGRl
ZmluZSgicGx1Z2luL2NoYXJ0cy9udmQzL2xpbmUvY289Cm5maWciLFsicGx1Z2luL2NoYXJ0cy9u
dmQzL2NvbW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAsez0KfSxl
LHt0aXRsZToiTGluZSBjaGFydCIsY2F0ZWdvcnk6Ik90aGVycyIsem9vbWFibGU6ITAsY29sdW1u
czp7eDp7dGl0bGU6IlZhPQpsdWVzIGZvciB4LWF4aXMiLGlzX2xhYmVsOiEwLGlzX2F1dG86ITAs
aXNfdW5pcXVlOiEwfSx5Ont0aXRsZToiVmFsdWVzIGZvciA9CnktYXhpcyIsaXNfbnVtZXJpYzoh
MH19fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvbnZkMy9zY2F0dGVyL2NvbmZpZyIsWyJwbD0K
dWdpbi9jaGFydHMvbnZkMy9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0
ZW5kKCEwLHt9LGUse3RpdGxlPQo6IlNjYXR0ZXIgcGxvdCIsY2F0ZWdvcnk6Ik90aGVycyIsem9v
bWFibGU6ITAsY29sdW1uczp7eDp7dGl0bGU6IlZhbHVlcyBmb3I9CiB4LWF4aXMiLGlzX251bWVy
aWM6ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhpcyIsaXNfbnVtZXJpYzohMH19fSl9KSxk
ZT0KZmluZSgicGx1Z2luL2NoYXJ0cy9udmQzL3N0YWNrZWRhcmVhL2NvbmZpZyIsWyJwbHVnaW4v
Y2hhcnRzL252ZDMvY29tbW9uL2NvPQpuZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5k
KCEwLHt9LGUse3RpdGxlOiJSZWd1bGFyIix6b29tYWJsZTohMCxjYXQ9CmVnb3J5OiJBcmVhIGNo
YXJ0cyIsa2V5d29yZHM6ImRlZmF1bHQgc21hbGwiLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMg
Zm9yID0KeC1heGlzIixpc19sYWJlbDohMCxpc19hdXRvOiEwLGlzX3VuaXF1ZTohMH0seTp7dGl0
bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpPQpzX251bWVyaWM6ITB9fX0pfSksZGVmaW5lKCJwbHVn
aW4vY2hhcnRzL2pxcGxvdC9jb21tb24vY29uZmlnIixbInBsdWdpbi9jaGE9CnJ0cy9mb3Jtcy9k
ZWZhdWx0Il0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiIiLGNh
dGVnb3J5Oj0KIiIsbGlicmFyeToianFQbG90Iix0YWc6ImRpdiIsem9vbWFibGU6ITAsa2V5d29y
ZHM6Im1lZGl1bSIsc2V0dGluZ3M6e3NlcGFyPQphdG9yX2dyaWQ6e3RpdGxlOiJHcmlkcyIsdHlw
ZToic2VwYXJhdG9yIn0seF9heGlzX2dyaWQ6e3RpdGxlOiJBeGlzIGdyaWQiLGk9Cm5mbzoiV291
bGQgeW91IGxpa2UgdG8gc2hvdyBncmlkIGxpbmVzIGZvciB0aGUgWCBheGlzPyIsdHlwZToicmFk
aW9idXR0b24iLD0KaW5pdDoiZmFsc2UiLGRhdGE6W3tsYWJlbDoiT24iLHZhbHVlOiJ0cnVlIn0s
e2xhYmVsOiJPZmYiLHZhbHVlOiJmYWxzZSJ9XX0sPQp5X2F4aXNfZ3JpZDp7dGl0bGU6IkF4aXMg
Z3JpZCIsaW5mbzoiV291bGQgeW91IGxpa2UgdG8gc2hvdyBncmlkIGxpbmVzIGZvciA9CnRoZSBZ
IGF4aXM/Iix0eXBlOiJyYWRpb2J1dHRvbiIsaW5pdDoidHJ1ZSIsZGF0YTpbe2xhYmVsOiJPbiIs
dmFsdWU6InRydWUifT0KLHtsYWJlbDoiT2ZmIix2YWx1ZToiZmFsc2UifV19fX0pfSksZGVmaW5l
KCJwbHVnaW4vY2hhcnRzL2pxcGxvdC9iYXIvY29uZmlnPQoiLFsicGx1Z2luL2NoYXJ0cy9qcXBs
b3QvY29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSw9CmUs
e3RpdGxlOiJSZWd1bGFyIixjYXRlZ29yeToiQmFyIGRpYWdyYW1zIixjb2x1bW5zOnt4Ont0aXRs
ZToiVmFsdWVzIGZvciB4LT0KYXhpcyIsaXNfbGFiZWw6ITAsaXNfYXV0bzohMCxpc191bmlxdWU6
ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhpcyIsaXNfPQpudW1lcmljOiEwfX19KX0pLGRl
ZmluZSgicGx1Z2luL2NoYXJ0cy9qcXBsb3QvbGluZS9jb25maWciLFsicGx1Z2luL2NoYXJ0cy89
CmpxcGxvdC9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9
LGUse3RpdGxlOiJMaW5lIGNoYT0KcnQiLGNhdGVnb3J5OiJPdGhlcnMiLGNvbHVtbnM6e3g6e3Rp
dGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbGFiZWw6ITAsaXNfPQphdXRvOiEwLGlzX3VuaXF1
ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1lcmljOiEwfX19KX0pLGRl
Zmk9Cm5lKCJwbHVnaW4vY2hhcnRzL2pxcGxvdC9zY2F0dGVyL2NvbmZpZyIsWyJwbHVnaW4vY2hh
cnRzL2pxcGxvdC9jb21tb24vY29uZj0KaWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQo
ITAse30sZSx7dGl0bGU6IlNjYXR0ZXIgcGxvdCIsY2F0ZWdvcnk6Ik90PQpoZXJzIixjb2x1bW5z
Ont4Ont0aXRsZToiVmFsdWVzIGZvciB4LWF4aXMiLGlzX251bWVyaWM6ITB9LHk6e3RpdGxlOiJW
YWx1ZXM9CiBmb3IgeS1heGlzIixpc19udW1lcmljOiEwfX0sc2V0dGluZ3M6e3hfYXhpc19ncmlk
Ontpbml0OiJ0cnVlIn19fSl9KSxkZWZpbj0KZSgicGx1Z2luL2NoYXJ0cy9qcXBsb3QvYm94cGxv
dC9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9qcXBsb3QvY29tbW9uL2NvbmZpPQpnIl0sZnVuY3Rp
b24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJCb3ggcGxvdCIsY2F0ZWdvcnk6
IkRhdGEgcHI9Cm9jZXNzaW5nIChyZXF1aXJlcyAnY2hhcnRzJyB0b29sIGZyb20gVG9vbHNoZWQp
IixsaWJyYXJ5OiJqcVBsb3QiLHRhZzoiZGl2Ij0KLGV4ZWN1dGU6ImJveHBsb3QiLGtleXdvcmRz
OiJzbWFsbCBtZWRpdW0gbGFyZ2UiLGNvbHVtbnM6e3k6e3RpdGxlOiJPYnNlcnZhPQp0aW9ucyIs
aXNfbnVtZXJpYzohMH19LHNldHRpbmdzOntzaG93X2xlZ2VuZDp7aW5pdDoiZmFsc2UifX19KX0p
LGRlZmluZSgicGw9CnVnaW4vY2hhcnRzL2pxcGxvdC9oaXN0b2dyYW1fZGlzY3JldGUvY29uZmln
IixbInBsdWdpbi9jaGFydHMvanFwbG90L2NvbW1vbj0KL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3Jl
dHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiRGlzY3JldGUgSGlzdG9ncmFtIixjPQphdGVn
b3J5OiJEYXRhIHByb2Nlc3NpbmcgKHJlcXVpcmVzICdjaGFydHMnIHRvb2wgZnJvbSBUb29sc2hl
ZCkiLGV4ZWN1dGU6Img9CmlzdG9ncmFtZGlzY3JldGUiLGtleXdvcmRzOiJzbWFsbCBtZWRpdW0g
bGFyZ2UiLGNvbHVtbnM6e3g6e3RpdGxlOiJPYnNlcnZhdD0KaW9ucyIsaXNfbGFiZWw6ITB9fSxz
ZXR0aW5nczp7eF9heGlzX2xhYmVsOntpbml0OiJCcmVha3MifSx5X2F4aXNfbGFiZWw6e2luPQpp
dDoiRGVuc2l0eSJ9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL290aGVycy9oZWF0bWFwL2Nv
bmZpZyIsWyJwbHVnaW4vY2g9CmFydHMvZm9ybXMvZGVmYXVsdCJdLGZ1bmN0aW9uKGUpe3JldHVy
biAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiSGVhdG1hcCIsYz0KYXRlZ29yeToiT3RoZXJzIixs
aWJyYXJ5OiJDdXN0b20iLHRhZzoic3ZnIixrZXl3b3Jkczoic21hbGwiLHpvb21hYmxlOiEwLGNv
PQpsdW1uczp7eDp7dGl0bGU6IkNvbHVtbiBsYWJlbHMiLGlzX2xhYmVsOiEwLGlzX251bWVyaWM6
ITAsaXNfdW5pcXVlOiEwfSx5Ons9CnRpdGxlOiJSb3cgbGFiZWxzIixpc19sYWJlbDohMCxpc19u
dW1lcmljOiEwLGlzX3VuaXF1ZTohMH0sejp7dGl0bGU6Ik9ic2Vydj0KYXRpb24iLGlzX251bWVy
aWM6ITB9fSxzZXR0aW5nczp7dXNlX3BhbmVsczp7aW5pdDoidHJ1ZSIsaGlkZTohMH0sY29sb3Jf
c2V0PQo6e3RpdGxlOiJDb2xvciBzY2hlbWUiLGluZm86IlNlbGVjdCBhIGNvbG9yIHNjaGVtZSBm
b3IgeW91ciBoZWF0bWFwIix0eXBlOiI9CnNlbGVjdCIsaW5pdDoiamV0IixkYXRhOlt7bGFiZWw6
IkNvbGQtdG8tSG90Iix2YWx1ZToiaG90In0se2xhYmVsOiJDb29sIix2YT0KbHVlOiJjb29sIn0s
e2xhYmVsOiJDb3BwZXIiLHZhbHVlOiJjb3BwZXIifSx7bGFiZWw6IkdyYXkgc2NhbGUiLHZhbHVl
OiJncmF5PQoifSx7bGFiZWw6IkpldCIsdmFsdWU6ImpldCJ9LHtsYWJlbDoiTm8tR3JlZW4iLHZh
bHVlOiJub19ncmVlbiJ9LHtsYWJlbDoiT2M9CmVhbiIsdmFsdWU6Im9jZWFuIn0se2xhYmVsOiJQ
b2xhciIsdmFsdWU6InBvbGFyIn0se2xhYmVsOiJSZWQtdG8tR3JlZW4iLHZhbD0KdWU6InJlZGdy
ZWVuIn0se2xhYmVsOiJSZWQtdG8tZ3JlZW4gKHNhdHVyYXRlZCkiLHZhbHVlOiJyZWQyZ3JlZW4i
fSx7bGFiZWw6PQoiUmVsaWVmIix2YWx1ZToicmVsaWVmIn0se2xhYmVsOiJTZWlzbW9ncmFwaCIs
dmFsdWU6InNlaXMifSx7bGFiZWw6IlNlYWxhbmQ9CiIsdmFsdWU6InNlYWxhbmQifSx7bGFiZWw6
IlNwbGl0Iix2YWx1ZToic3BsaXQifSx7bGFiZWw6Ild5c2l3eWciLHZhbHVlOiJ3eT0Kc2l3eWci
fV19LHVybF90ZW1wbGF0ZTp7dGl0bGU6IlVybCB0ZW1wbGF0ZSIsaW5mbzoiRW50ZXIgYSB1cmwg
dG8gbGluayB0aGUgPQpsYWJlbHMgd2l0aCBleHRlcm5hbCBzb3VyY2VzLiBVc2UgX19MQUJFTF9f
IGFzIHBsYWNlaG9sZGVyLiIsdHlwZToidGV4dCIsaW49Cml0OiIiLHBsYWNlaG9sZGVyOiJodHRw
Oi8vc29tZXVybC5jb20/aWQ9M0RfX0xBQkVMX18ifX19KX0pLGRlZmluZSgicGx1Z2luLz0KY2hh
cnRzL290aGVycy9oZWF0bWFwX2NsdXN0ZXIvY29uZmlnIixbInBsdWdpbi9jaGFydHMvb3RoZXJz
L2hlYXRtYXAvY29uZmlnPQoiXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7
dGl0bGU6IkNsdXN0ZXJlZCBIZWF0bWFwIixjYXRlZ29yeTo9CiJEYXRhIHByb2Nlc3NpbmcgKHJl
cXVpcmVzICdjaGFydHMnIHRvb2wgZnJvbSBUb29sc2hlZCkiLGV4ZWN1dGU6ImhlYXRtYXAiLD0K
a2V5d29yZHM6InNtYWxsIG1lZGl1bSBsYXJnZSJ9KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy90
eXBlcyIsWyJwbHVnaW4vY2hhPQpydHMvbnZkMy9iYXIvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9u
dmQzL2Jhcl9zdGFja2VkL2NvbmZpZyIsInBsdWdpbi9jaGFydHM9Ci9udmQzL2Jhcl9ob3Jpem9u
dGFsL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvbnZkMy9iYXJfaG9yaXpvbnRhbF9zdGFja2VkL2Nv
bj0KZmlnIiwicGx1Z2luL2NoYXJ0cy9udmQzL2xpbmVfZm9jdXMvY29uZmlnIiwicGx1Z2luL2No
YXJ0cy9udmQzL3BpZS9jb25maWciPQosInBsdWdpbi9jaGFydHMvbnZkMy9zdGFja2VkYXJlYV9m
dWxsL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvbnZkMy9zdGFja2VkYXI9CmVhX3N0cmVhbS9jb25m
aWciLCJwbHVnaW4vY2hhcnRzL252ZDMvaGlzdG9ncmFtL2NvbmZpZyIsInBsdWdpbi9jaGFydHMv
bnZkMz0KL2xpbmUvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9udmQzL3NjYXR0ZXIvY29uZmlnIiwi
cGx1Z2luL2NoYXJ0cy9udmQzL3N0YWNrPQplZGFyZWEvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9q
cXBsb3QvYmFyL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvanFwbG90L2xpbmU9Ci9jb25maWciLCJw
bHVnaW4vY2hhcnRzL2pxcGxvdC9zY2F0dGVyL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvanFwbG90
L2JveHBsbz0KdC9jb25maWciLCJwbHVnaW4vY2hhcnRzL2pxcGxvdC9oaXN0b2dyYW1fZGlzY3Jl
dGUvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9vPQp0aGVycy9oZWF0bWFwL2NvbmZpZyIsInBsdWdp
bi9jaGFydHMvb3RoZXJzL2hlYXRtYXBfY2x1c3Rlci9jb25maWciXSxmdW5jdGk9Cm9uKGUsdCxu
LHIsaSxzLG8sdSxhLGYsbCxjLGgscCxkLHYsbSxnLHkpe3JldHVybiBCYWNrYm9uZS5Nb2RlbC5l
eHRlbmQoe2RlZj0KYXVsdHM6e252ZDNfYmFyOmUsbnZkM19iYXJfc3RhY2tlZDp0LG52ZDNfYmFy
X2hvcml6b250YWw6bixudmQzX2Jhcl9ob3Jpem9uPQp0YWxfc3RhY2tlZDpyLG52ZDNfbGluZV9m
b2N1czppLG52ZDNfc3RhY2tlZGFyZWE6YyxudmQzX3N0YWNrZWRhcmVhX2Z1bGw6byw9Cm52ZDNf
c3RhY2tlZGFyZWFfc3RyZWFtOnUsbnZkM19waWU6cyxudmQzX2xpbmU6ZixudmQzX3NjYXR0ZXI6
bCxudmQzX2hpc3RvZz0KcmFtOmEsanFwbG90X2JhcjpoLGpxcGxvdF9oaXN0b2dyYW1fZGlzY3Jl
dGU6bSxqcXBsb3RfbGluZTpwLGpxcGxvdF9zY2F0dGVyPQo6ZCxqcXBsb3RfYm94cGxvdDp2LG90
aGVyc19oZWF0bWFwOmcsb3RoZXJzX2hlYXRtYXBfY2x1c3Rlcjp5fX0pfSksZGVmaW5lKCI9CnBs
dWdpbi9hcHAiLFsibXZjL3VpL3VpLW1vZGFsIiwibXZjL3VpL3VpLXBvcnRsZXQiLCJtdmMvdWkv
dWktbWlzYyIsInV0aWxzLz0KdXRpbHMiLCJwbHVnaW4vbGlicmFyeS9qb2JzIiwicGx1Z2luL2xp
YnJhcnkvZGF0YXNldHMiLCJwbHVnaW4vbGlicmFyeS9zdG9yPQphZ2UiLCJ1dGlscy9kZWZlcnJl
ZCIsInBsdWdpbi92aWV3cy92aWV3ZXIiLCJwbHVnaW4vdmlld3MvZWRpdG9yIiwicGx1Z2luL209
Cm9kZWxzL2NvbmZpZyIsInBsdWdpbi9tb2RlbHMvY2hhcnQiLCJwbHVnaW4vY2hhcnRzL3R5cGVz
Il0sZnVuY3Rpb24oZSx0LG4scj0KLGkscyxvLHUsYSxmLGwsYyxoKXtyZXR1cm4gQmFja2JvbmUu
Vmlldy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpPQpzLm9wdGlvbnM9M0R0LEdh
bGF4eSYmR2FsYXh5Lm1vZGFsP3RoaXMubW9kYWw9M0RHYWxheHkubW9kYWw6dGhpcy5tb2RhbD0z
RG49CmV3IGUuVmlldyx0aGlzLmNvbmZpZz0zRG5ldyBsLHRoaXMudHlwZXM9M0RuZXcgaCx0aGlz
LmNoYXJ0PTNEbmV3IGMsdGhpcy5qbz0KYnM9M0RuZXcgaSh0aGlzKSx0aGlzLmRhdGFzZXRzPTNE
bmV3IHModGhpcyksdGhpcy5zdG9yYWdlPTNEbmV3IG8odGhpcyksdGhpPQpzLmRlZmVycmVkPTNE
bmV3IHUsdGhpcy52aWV3ZXJfdmlldz0zRG5ldyBhKHRoaXMpLHRoaXMuZWRpdG9yX3ZpZXc9M0Ru
ZXcgZig9CnRoaXMpLHRoaXMuJGVsLmFwcGVuZCh0aGlzLnZpZXdlcl92aWV3LiRlbCksdGhpcy4k
ZWwuYXBwZW5kKHRoaXMuZWRpdG9yX3ZpZT0Kdy4kZWwpO2lmKCF0aGlzLnN0b3JhZ2UubG9hZCgp
KXRoaXMuZ28oImVkaXRvciIpO2Vsc2V7dGhpcy5nbygidmlld2VyIik7dmFyPQogbj0zRHRoaXM7
dGhpcy5kZWZlcnJlZC5leGVjdXRlKGZ1bmN0aW9uKCl7bi5jaGFydC50cmlnZ2VyKCJyZWRyYXci
KX0pfX0sZ289CjpmdW5jdGlvbihlKXskKCIudG9vbHRpcCIpLmhpZGUoKTtzd2l0Y2goZSl7Y2Fz
ZSJlZGl0b3IiOnRoaXMuZWRpdG9yX3ZpZXcucz0KaG93KCksdGhpcy52aWV3ZXJfdmlldy5oaWRl
KCk7YnJlYWs7Y2FzZSJ2aWV3ZXIiOnRoaXMuZWRpdG9yX3ZpZXcuaGlkZSgpLHRoPQppcy52aWV3
ZXJfdmlldy5zaG93KCl9fSxjaGFydFBhdGg6ZnVuY3Rpb24oZSl7dmFyIHQ9M0RlLnNwbGl0KC9f
KC4rKS8pO3JldHU9CnJuIHQubGVuZ3RoPj0zRDI/dFswXSsiLyIrdFsxXTooY29uc29sZS5kZWJ1
ZygiRkFJTEVEIEFwcDpjaGFydFBhdGgoKSAtIEludj0KYWxpZCBmb3JtYXQ6ICIrZSksdW5kZWZp
bmVkKX19KX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RlZmluZSgibXZjL3VpL3Vp
LW1vZGFsIixbXSxmdW5jdGlvbigpe3ZhciBlPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe2VsTWFp
PQpuOiJib2R5IixvcHRpb25zRGVmYXVsdDp7dGl0bGU6InVpLW1vZGFsIixib2R5OiIiLGJhY2tk
cm9wOiEwLGhlaWdodDpudWxsLHc9CmlkdGg6bnVsbCxjbG9zaW5nX2V2ZW50czohMSxjbG9zaW5n
X2NhbGxiYWNrOm51bGx9LGJ1dHRvbkxpc3Q6e30saW5pdGlhbGl6ZT0KOmZ1bmN0aW9uKGUpe2Um
JnRoaXMuX2NyZWF0ZShlKX0sc2hvdzpmdW5jdGlvbihlKXt0aGlzLmluaXRpYWxpemUoZSksdGhp
cy5vPQpwdGlvbnMuaGVpZ2h0Pyh0aGlzLiRib2R5LmNzcygiaGVpZ2h0Iix0aGlzLm9wdGlvbnMu
aGVpZ2h0KSx0aGlzLiRib2R5LmNzcyg9CiJvdmVyZmxvdyIsImhpZGRlbiIpKTp0aGlzLiRib2R5
LmNzcygibWF4LWhlaWdodCIsJCh3aW5kb3cpLmhlaWdodCgpLzIpLHRoaT0Kcy5vcHRpb25zLndp
ZHRoJiZ0aGlzLiRkaWFsb2cuY3NzKCJ3aWR0aCIsdGhpcy5vcHRpb25zLndpZHRoKSx0aGlzLnZp
c2libGU/PQp0aGlzLiRlbC5zaG93KCk6dGhpcy4kZWwuZmFkZUluKCJmYXN0IiksdGhpcy52aXNp
YmxlPTNEITB9LGhpZGU6ZnVuY3Rpb24oKXs9CnRoaXMudmlzaWJsZT0zRCExLHRoaXMuJGVsLmZh
ZGVPdXQoImZhc3QiKSx0aGlzLm9wdGlvbnMuY2xvc2luZ19jYWxsYmFjayYmdD0KaGlzLm9wdGlv
bnMuY2xvc2luZ19jYWxsYmFjaygpfSxlbmFibGVCdXR0b246ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0
aGlzLmJ1dHRvPQpuTGlzdFtlXTt0aGlzLiRidXR0b25zLmZpbmQoIiMiK3QpLnByb3AoImRpc2Fi
bGVkIiwhMSl9LGRpc2FibGVCdXR0b246ZnVuY3Q9CmlvbihlKXt2YXIgdD0zRHRoaXMuYnV0dG9u
TGlzdFtlXTt0aGlzLiRidXR0b25zLmZpbmQoIiMiK3QpLnByb3AoImRpc2FibGVkIj0KLCEwKX0s
c2hvd0J1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMuYnV0dG9uTGlzdFtlXTt0aGlzLiRi
dXR0b25zLmZpbmQoPQoiIyIrdCkuc2hvdygpfSxoaWRlQnV0dG9uOmZ1bmN0aW9uKGUpe3ZhciB0
PTNEdGhpcy5idXR0b25MaXN0W2VdO3RoaXMuJGJ1dHQ9Cm9ucy5maW5kKCIjIit0KS5oaWRlKCl9
LGdldEJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMuYnV0dG9uTGlzdFtlXTtyZT0KdHVy
biB0aGlzLiRidXR0b25zLmZpbmQoIiMiK3QpfSxzY3JvbGxUb3A6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy4kYm9keS5zY3JvPQpsbFRvcCgpfSxfY3JlYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhp
czt0aGlzLm9wdGlvbnM9M0RfLmRlZmF1bHRzKGUsdGhpcy49Cm9wdGlvbnNEZWZhdWx0KSx0aGlz
Lm9wdGlvbnMuYm9keT0zRD0zRCJwcm9ncmVzcyImJih0aGlzLm9wdGlvbnMuYm9keT0zRCQoJz0K
PGRpdiBjbGFzcz0zRCJwcm9ncmVzcyBwcm9ncmVzcy1zdHJpcGVkIGFjdGl2ZSI+PGRpdiBjbGFz
cz0zRCJwcm9ncmVzcy1iYXIgPQpwcm9ncmVzcy1iYXItaW5mbyIgc3R5bGU9M0Qid2lkdGg6MTAw
JSI+PC9kaXY+PC9kaXY+JykpLHRoaXMuJGVsJiYodGhpcy4kZWw9Ci5yZW1vdmUoKSwkKGRvY3Vt
ZW50KS5vZmYoImtleXVwLnVpLW1vZGFsIikpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0
ZT0KKHRoaXMub3B0aW9ucy50aXRsZSkpLHRoaXMuJGRpYWxvZz0zRHRoaXMuJGVsLmZpbmQoIi5t
b2RhbC1kaWFsb2ciKSx0aGlzLiRiPQpvZHk9M0R0aGlzLiRlbC5maW5kKCIubW9kYWwtYm9keSIp
LHRoaXMuJGZvb3Rlcj0zRHRoaXMuJGVsLmZpbmQoIi5tb2RhbC1mb289CnRlciIpLHRoaXMuJGJ1
dHRvbnM9M0R0aGlzLiRlbC5maW5kKCIuYnV0dG9ucyIpLHRoaXMuJGJhY2tkcm9wPTNEdGhpcy4k
ZWwuZj0KaW5kKCIubW9kYWwtYmFja2Ryb3AiKSx0aGlzLiRib2R5Lmh0bWwodGhpcy5vcHRpb25z
LmJvZHkpLHRoaXMub3B0aW9ucy5iYWNrPQpkcm9wfHx0aGlzLiRiYWNrZHJvcC5yZW1vdmVDbGFz
cygiaW4iKTtpZih0aGlzLm9wdGlvbnMuYnV0dG9ucyl7dGhpcy5idXR0b249Ckxpc3Q9M0R7fTt2
YXIgbj0zRDA7JC5lYWNoKHRoaXMub3B0aW9ucy5idXR0b25zLGZ1bmN0aW9uKGUscil7dmFyIGk9
M0QiYnV0dD0Kb24tIituKys7dC4kYnV0dG9ucy5hcHBlbmQoJCgnPGJ1dHRvbiBpZD0zRCInK2kr
JyI+PC9idXR0b24+JykudGV4dChlKS5jbGljPQprKHIpKS5hcHBlbmQoIiAiKSx0LmJ1dHRvbkxp
c3RbZV09M0RpfSl9ZWxzZSB0aGlzLiRmb290ZXIuaGlkZSgpOyQodGhpcy5lbE09CmFpbikuYXBw
ZW5kKCQodGhpcy5lbCkpLHRoaXMub3B0aW9ucy5jbG9zaW5nX2V2ZW50cyYmKCQoZG9jdW1lbnQp
Lm9uKCJrZXl1cD0KLnVpLW1vZGFsIixmdW5jdGlvbihlKXtlLmtleUNvZGU9M0Q9M0QyNyYmdC5o
aWRlKCl9KSx0aGlzLiRlbC5maW5kKCIubW9kYWwtPQpiYWNrZHJvcCIpLm9uKCJjbGljayIsZnVu
Y3Rpb24oKXt0LmhpZGUoKX0pKX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3JldHVybic9CjxkaXYg
Y2xhc3M9M0QidWktbW9kYWwgbW9kYWwiPjxkaXYgY2xhc3M9M0QibW9kYWwtYmFja2Ryb3AgZmFk
ZSBpbiIgc3R5bGU9Cj0zRCJ6LWluZGV4OiAtMTsiPjwvZGl2PjxkaXYgY2xhc3M9M0QibW9kYWwt
ZGlhbG9nIj48ZGl2IGNsYXNzPTNEIm1vZGFsLWNvbj0KdGVudCI+PGRpdiBjbGFzcz0zRCJtb2Rh
bC1oZWFkZXIiPjxidXR0b24gdHlwZT0zRCJidXR0b24iIGNsYXNzPTNEImNsb3NlIiBzPQp0eWxl
PTNEImRpc3BsYXk6IG5vbmU7Ij4mdGltZXM7PC9idXR0b24+PGg0IGNsYXNzPTNEInRpdGxlIj4n
K2UrIjwvaDQ+IisiPC89CmRpdj4iKyc8ZGl2IGNsYXNzPTNEIm1vZGFsLWJvZHkiIHN0eWxlPTNE
InBvc2l0aW9uOiBzdGF0aWM7Ij48L2Rpdj4nKyc8ZGl2ID0KY2xhc3M9M0QibW9kYWwtZm9vdGVy
Ij4nKyc8ZGl2IGNsYXNzPTNEImJ1dHRvbnMiIHN0eWxlPTNEImZsb2F0OiByaWdodDsiPjwvPQpk
aXY+JysiPC9kaXY+IisiPC9kaXYiKyI8L2Rpdj4iKyI8L2Rpdj4ifX0pO3JldHVybntWaWV3OmV9
fSksZnVuY3Rpb24oKXt2YXI9CiBlPTNEdGhpcyx0PTNEZS5fLG49M0RBcnJheS5wcm90b3R5cGUs
cj0zRE9iamVjdC5wcm90b3R5cGUsaT0zREZ1bmN0aW9uLnBybz0KdG90eXBlLHM9M0RuLnB1c2gs
bz0zRG4uc2xpY2UsdT0zRG4uY29uY2F0LGE9M0RyLnRvU3RyaW5nLGY9M0RyLmhhc093blByb3Bl
PQpydHksbD0zREFycmF5LmlzQXJyYXksYz0zRE9iamVjdC5rZXlzLGg9M0RpLmJpbmQscD0zRGZ1
bmN0aW9uKGUpe2lmKGUgaW5zdGE9Cm5jZW9mIHApcmV0dXJuIGU7aWYoISh0aGlzIGluc3RhbmNl
b2YgcCkpcmV0dXJuIG5ldyBwKGUpO3RoaXMuX3dyYXBwZWQ9M0RlfT0KO3R5cGVvZiBleHBvcnRz
IT0zRCJ1bmRlZmluZWQiPyh0eXBlb2YgbW9kdWxlIT0zRCJ1bmRlZmluZWQiJiZtb2R1bGUuZXhw
b3J0PQpzJiYoZXhwb3J0cz0zRG1vZHVsZS5leHBvcnRzPTNEcCksZXhwb3J0cy5fPTNEcCk6ZS5f
PTNEcCxwLlZFUlNJT049M0QiMS43LjA9CiI7dmFyIGQ9M0RmdW5jdGlvbihlLHQsbil7aWYodD0z
RD0zRD0zRHZvaWQgMClyZXR1cm4gZTtzd2l0Y2gobj0zRD0zRG51bGw/Mz0KOm4pe2Nhc2UgMTpy
ZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGUuY2FsbCh0LG4pfTtjYXNlIDI6cmV0dXJuIGZ1bmN0
aW9uKG4sPQpyKXtyZXR1cm4gZS5jYWxsKHQsbixyKX07Y2FzZSAzOnJldHVybiBmdW5jdGlvbihu
LHIsaSl7cmV0dXJuIGUuY2FsbCh0LG4sciw9CmkpfTtjYXNlIDQ6cmV0dXJuIGZ1bmN0aW9uKG4s
cixpLHMpe3JldHVybiBlLmNhbGwodCxuLHIsaSxzKX19cmV0dXJuIGZ1bmN0aT0Kb24oKXtyZXR1
cm4gZS5hcHBseSh0LGFyZ3VtZW50cyl9fTtwLml0ZXJhdGVlPTNEZnVuY3Rpb24oZSx0LG4pe3Jl
dHVybiBlPTNEPQo9M0RudWxsP3AuaWRlbnRpdHk6cC5pc0Z1bmN0aW9uKGUpP2QoZSx0LG4pOnAu
aXNPYmplY3QoZSk/cC5tYXRjaGVzKGUpOnAucHI9Cm9wZXJ0eShlKX0scC5lYWNoPTNEcC5mb3JF
YWNoPTNEZnVuY3Rpb24oZSx0LG4pe2lmKGU9M0Q9M0RudWxsKXJldHVybiBlO3Q9Cj0zRGQodCxu
KTt2YXIgcixpPTNEZS5sZW5ndGg7aWYoaT0zRD0zRD0zRCtpKWZvcihyPTNEMDtyPGk7cisrKXQo
ZVtyXSxyLGUpOz0KZWxzZXt2YXIgcz0zRHAua2V5cyhlKTtmb3Iocj0zRDAsaT0zRHMubGVuZ3Ro
O3I8aTtyKyspdChlW3Nbcl1dLHNbcl0sZSl9cmV0PQp1cm4gZX0scC5tYXA9M0RwLmNvbGxlY3Q9
M0RmdW5jdGlvbihlLHQsbil7aWYoZT0zRD0zRG51bGwpcmV0dXJuW107dD0zRHAuaXQ9CmVyYXRl
ZSh0LG4pO3ZhciByPTNEZS5sZW5ndGghPTNEPTNEK2UubGVuZ3RoJiZwLmtleXMoZSksaT0zRChy
fHxlKS5sZW5ndGgscz0KPTNEQXJyYXkoaSksbztmb3IodmFyIHU9M0QwO3U8aTt1Kyspbz0zRHI/
clt1XTp1LHNbdV09M0R0KGVbb10sbyxlKTtyZXR1cm4gPQpzfTt2YXIgdj0zRCJSZWR1Y2Ugb2Yg
ZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIjtwLnJlZHVjZT0zRHAuZm9sZGw9Cj0z
RHAuaW5qZWN0PTNEZnVuY3Rpb24oZSx0LG4scil7ZT0zRD0zRG51bGwmJihlPTNEW10pLHQ9M0Rk
KHQsciw0KTt2YXIgaT0zRD0KZS5sZW5ndGghPTNEPTNEK2UubGVuZ3RoJiZwLmtleXMoZSkscz0z
RChpfHxlKS5sZW5ndGgsbz0zRDAsdTtpZihhcmd1bWVudHMuPQpsZW5ndGg8Myl7aWYoIXMpdGhy
b3cgbmV3IFR5cGVFcnJvcih2KTtuPTNEZVtpP2lbbysrXTpvKytdfWZvcig7bzxzO28rKyl1PQo9
M0RpP2lbb106byxuPTNEdChuLGVbdV0sdSxlKTtyZXR1cm4gbn0scC5yZWR1Y2VSaWdodD0zRHAu
Zm9sZHI9M0RmdW5jdGlvbig9CmUsdCxuLHIpe2U9M0Q9M0RudWxsJiYoZT0zRFtdKSx0PTNEZCh0
LHIsNCk7dmFyIGk9M0RlLmxlbmd0aCE9M0Q9M0QrZS5sZW5ndD0KaCYmcC5rZXlzKGUpLHM9M0Qo
aXx8ZSkubGVuZ3RoLG87aWYoYXJndW1lbnRzLmxlbmd0aDwzKXtpZighcyl0aHJvdyBuZXcgVHlw
PQplRXJyb3Iodik7bj0zRGVbaT9pWy0tc106LS1zXX13aGlsZShzLS0pbz0zRGk/aVtzXTpzLG49
M0R0KG4sZVtvXSxvLGUpO3JldHU9CnJuIG59LHAuZmluZD0zRHAuZGV0ZWN0PTNEZnVuY3Rpb24o
ZSx0LG4pe3ZhciByO3JldHVybiB0PTNEcC5pdGVyYXRlZSh0LG4pLD0KcC5zb21lKGUsZnVuY3Rp
b24oZSxuLGkpe2lmKHQoZSxuLGkpKXJldHVybiByPTNEZSwhMH0pLHJ9LHAuZmlsdGVyPTNEcC5z
ZWxlPQpjdD0zRGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0zRFtdO3JldHVybiBlPTNEPTNEbnVsbD9y
Oih0PTNEcC5pdGVyYXRlZSh0LG4pLHA9Ci5lYWNoKGUsZnVuY3Rpb24oZSxuLGkpe3QoZSxuLGkp
JiZyLnB1c2goZSl9KSxyKX0scC5yZWplY3Q9M0RmdW5jdGlvbihlLHQsbj0KKXtyZXR1cm4gcC5m
aWx0ZXIoZSxwLm5lZ2F0ZShwLml0ZXJhdGVlKHQpKSxuKX0scC5ldmVyeT0zRHAuYWxsPTNEZnVu
Y3Rpb24oPQplLHQsbil7aWYoZT0zRD0zRG51bGwpcmV0dXJuITA7dD0zRHAuaXRlcmF0ZWUodCxu
KTt2YXIgcj0zRGUubGVuZ3RoIT0zRD0zRCs9CmUubGVuZ3RoJiZwLmtleXMoZSksaT0zRChyfHxl
KS5sZW5ndGgscyxvO2ZvcihzPTNEMDtzPGk7cysrKXtvPTNEcj9yW3NdOnM7aT0KZighdChlW29d
LG8sZSkpcmV0dXJuITF9cmV0dXJuITB9LHAuc29tZT0zRHAuYW55PTNEZnVuY3Rpb24oZSx0LG4p
e2lmKGU9M0Q9Cj0zRG51bGwpcmV0dXJuITE7dD0zRHAuaXRlcmF0ZWUodCxuKTt2YXIgcj0zRGUu
bGVuZ3RoIT0zRD0zRCtlLmxlbmd0aCYmcC5rZT0KeXMoZSksaT0zRChyfHxlKS5sZW5ndGgscyxv
O2ZvcihzPTNEMDtzPGk7cysrKXtvPTNEcj9yW3NdOnM7aWYodChlW29dLG8sZSkpPQpyZXR1cm4h
MH1yZXR1cm4hMX0scC5jb250YWlucz0zRHAuaW5jbHVkZT0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJu
IGU9M0Q9M0RudWw9Cmw/ITE6KGUubGVuZ3RoIT0zRD0zRCtlLmxlbmd0aCYmKGU9M0RwLnZhbHVl
cyhlKSkscC5pbmRleE9mKGUsdCk+PTNEMCl9LHAuaT0KbnZva2U9M0RmdW5jdGlvbihlLHQpe3Zh
ciBuPTNEby5jYWxsKGFyZ3VtZW50cywyKSxyPTNEcC5pc0Z1bmN0aW9uKHQpO3JldHVyPQpuIHAu
bWFwKGUsZnVuY3Rpb24oZSl7cmV0dXJuKHI/dDplW3RdKS5hcHBseShlLG4pfSl9LHAucGx1Y2s9
M0RmdW5jdGlvbihlLHQ9Cil7cmV0dXJuIHAubWFwKGUscC5wcm9wZXJ0eSh0KSl9LHAud2hlcmU9
M0RmdW5jdGlvbihlLHQpe3JldHVybiBwLmZpbHRlcihlLD0KcC5tYXRjaGVzKHQpKX0scC5maW5k
V2hlcmU9M0RmdW5jdGlvbihlLHQpe3JldHVybiBwLmZpbmQoZSxwLm1hdGNoZXModCkpfSxwPQou
bWF4PTNEZnVuY3Rpb24oZSx0LG4pe3ZhciByPTNELUluZmluaXR5LGk9M0QtSW5maW5pdHkscyxv
O2lmKHQ9M0Q9M0RudWxsJiY9CmUhPTNEbnVsbCl7ZT0zRGUubGVuZ3RoPTNEPTNEPTNEK2UubGVu
Z3RoP2U6cC52YWx1ZXMoZSk7Zm9yKHZhciB1PTNEMCxhPTNEZT0KLmxlbmd0aDt1PGE7dSsrKXM9
M0RlW3VdLHM+ciYmKHI9M0RzKX1lbHNlIHQ9M0RwLml0ZXJhdGVlKHQsbikscC5lYWNoKGUsZnVu
PQpjdGlvbihlLG4scyl7bz0zRHQoZSxuLHMpO2lmKG8+aXx8bz0zRD0zRD0zRC1JbmZpbml0eSYm
cj0zRD0zRD0zRC1JbmZpbml0eSk9CnI9M0RlLGk9M0RvfSk7cmV0dXJuIHJ9LHAubWluPTNEZnVu
Y3Rpb24oZSx0LG4pe3ZhciByPTNESW5maW5pdHksaT0zREluZmluaT0KdHkscyxvO2lmKHQ9M0Q9
M0RudWxsJiZlIT0zRG51bGwpe2U9M0RlLmxlbmd0aD0zRD0zRD0zRCtlLmxlbmd0aD9lOnAudmFs
dWVzPQooZSk7Zm9yKHZhciB1PTNEMCxhPTNEZS5sZW5ndGg7dTxhO3UrKylzPTNEZVt1XSxzPHIm
JihyPTNEcyl9ZWxzZSB0PTNEcC5pdGU9CnJhdGVlKHQsbikscC5lYWNoKGUsZnVuY3Rpb24oZSxu
LHMpe289M0R0KGUsbixzKTtpZihvPGl8fG89M0Q9M0Q9M0RJbmZpbml0eT0KJiZyPTNEPTNEPTNE
SW5maW5pdHkpcj0zRGUsaT0zRG99KTtyZXR1cm4gcn0scC5zaHVmZmxlPTNEZnVuY3Rpb24oZSl7
dmFyIHQ9Cj0zRGUmJmUubGVuZ3RoPTNEPTNEPTNEK2UubGVuZ3RoP2U6cC52YWx1ZXMoZSksbj0z
RHQubGVuZ3RoLHI9M0RBcnJheShuKTtmbz0Kcih2YXIgaT0zRDAscztpPG47aSsrKXM9M0RwLnJh
bmRvbSgwLGkpLHMhPTNEPTNEaSYmKHJbaV09M0RyW3NdKSxyW3NdPTNEdFtpPQpdO3JldHVybiBy
fSxwLnNhbXBsZT0zRGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gdD0zRD0zRG51bGx8fG4/KGUubGVu
Z3RoIT0zRD0KPTNEK2UubGVuZ3RoJiYoZT0zRHAudmFsdWVzKGUpKSxlW3AucmFuZG9tKGUubGVu
Z3RoLTEpXSk6cC5zaHVmZmxlKGUpLnNsaWNlPQooMCxNYXRoLm1heCgwLHQpKX0scC5zb3J0Qnk9
M0RmdW5jdGlvbihlLHQsbil7cmV0dXJuIHQ9M0RwLml0ZXJhdGVlKHQsbikscC49CnBsdWNrKHAu
bWFwKGUsZnVuY3Rpb24oZSxuLHIpe3JldHVybnt2YWx1ZTplLGluZGV4Om4sY3JpdGVyaWE6dChl
LG4scil9fSkucz0Kb3J0KGZ1bmN0aW9uKGUsdCl7dmFyIG49M0RlLmNyaXRlcmlhLHI9M0R0LmNy
aXRlcmlhO2lmKG4hPTNEPTNEcil7aWYobj5yfHxuPQo9M0Q9M0Q9M0R2b2lkIDApcmV0dXJuIDE7
aWYobjxyfHxyPTNEPTNEPTNEdm9pZCAwKXJldHVybi0xfXJldHVybiBlLmluZGV4LXQ9Ci5pbmRl
eH0pLCJ2YWx1ZSIpfTt2YXIgbT0zRGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0LG4scil7
dmFyIGk9M0R7fTtyZT0KdHVybiBuPTNEcC5pdGVyYXRlZShuLHIpLHAuZWFjaCh0LGZ1bmN0aW9u
KHIscyl7dmFyIG89M0RuKHIscyx0KTtlKGkscixvKX0pPQosaX19O3AuZ3JvdXBCeT0zRG0oZnVu
Y3Rpb24oZSx0LG4pe3AuaGFzKGUsbik/ZVtuXS5wdXNoKHQpOmVbbl09M0RbdF19KSxwLmk9Cm5k
ZXhCeT0zRG0oZnVuY3Rpb24oZSx0LG4pe2Vbbl09M0R0fSkscC5jb3VudEJ5PTNEbShmdW5jdGlv
bihlLHQsbil7cC5oYXMoZT0KLG4pP2Vbbl0rKzplW25dPTNEMX0pLHAuc29ydGVkSW5kZXg9M0Rm
dW5jdGlvbihlLHQsbixyKXtuPTNEcC5pdGVyYXRlZShuLHIsPQoxKTt2YXIgaT0zRG4odCkscz0z
RDAsbz0zRGUubGVuZ3RoO3doaWxlKHM8byl7dmFyIHU9M0RzK28+Pj4xO24oZVt1XSk8aT9zPQo9
M0R1KzE6bz0zRHV9cmV0dXJuIHN9LHAudG9BcnJheT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlP3Au
aXNBcnJheShlKT9vLmNhbGw9CihlKTplLmxlbmd0aD0zRD0zRD0zRCtlLmxlbmd0aD9wLm1hcChl
LHAuaWRlbnRpdHkpOnAudmFsdWVzKGUpOltdfSxwLnNpemU9Cj0zRGZ1bmN0aW9uKGUpe3JldHVy
biBlPTNEPTNEbnVsbD8wOmUubGVuZ3RoPTNEPTNEPTNEK2UubGVuZ3RoP2UubGVuZ3RoOnAuaz0K
ZXlzKGUpLmxlbmd0aH0scC5wYXJ0aXRpb249M0RmdW5jdGlvbihlLHQsbil7dD0zRHAuaXRlcmF0
ZWUodCxuKTt2YXIgcj0zRFtdPQosaT0zRFtdO3JldHVybiBwLmVhY2goZSxmdW5jdGlvbihlLG4s
cyl7KHQoZSxuLHMpP3I6aSkucHVzaChlKX0pLFtyLGldfSxwLmY9Cmlyc3Q9M0RwLmhlYWQ9M0Rw
LnRha2U9M0RmdW5jdGlvbihlLHQsbil7cmV0dXJuIGU9M0Q9M0RudWxsP3ZvaWQgMDp0PTNEPTNE
bj0KdWxsfHxuP2VbMF06dDwwP1tdOm8uY2FsbChlLDAsdCl9LHAuaW5pdGlhbD0zRGZ1bmN0aW9u
KGUsdCxuKXtyZXR1cm4gby5jYWxsPQooZSwwLE1hdGgubWF4KDAsZS5sZW5ndGgtKHQ9M0Q9M0Ru
dWxsfHxuPzE6dCkpKX0scC5sYXN0PTNEZnVuY3Rpb24oZSx0LG4pe3I9CmV0dXJuIGU9M0Q9M0Ru
dWxsP3ZvaWQgMDp0PTNEPTNEbnVsbHx8bj9lW2UubGVuZ3RoLTFdOm8uY2FsbChlLE1hdGgubWF4
KGUubD0KZW5ndGgtdCwwKSl9LHAucmVzdD0zRHAudGFpbD0zRHAuZHJvcD0zRGZ1bmN0aW9uKGUs
dCxuKXtyZXR1cm4gby5jYWxsKGUsdD0KPTNEPTNEbnVsbHx8bj8xOnQpfSxwLmNvbXBhY3Q9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gcC5maWx0ZXIoZSxwLmlkZW50aXR5KX07PQp2YXIgZz0zRGZ1bmN0
aW9uKGUsdCxuLHIpe2lmKHQmJnAuZXZlcnkoZSxwLmlzQXJyYXkpKXJldHVybiB1LmFwcGx5KHIs
ZSk7Zm89CnIodmFyIGk9M0QwLG89M0RlLmxlbmd0aDtpPG87aSsrKXt2YXIgYT0zRGVbaV07IXAu
aXNBcnJheShhKSYmIXAuaXNBcmd1bWVudD0KcyhhKT9ufHxyLnB1c2goYSk6dD9zLmFwcGx5KHIs
YSk6ZyhhLHQsbixyKX1yZXR1cm4gcn07cC5mbGF0dGVuPTNEZnVuY3Rpb24oPQplLHQpe3JldHVy
biBnKGUsdCwhMSxbXSl9LHAud2l0aG91dD0zRGZ1bmN0aW9uKGUpe3JldHVybiBwLmRpZmZlcmVu
Y2UoZSxvLmM9CmFsbChhcmd1bWVudHMsMSkpfSxwLnVuaXE9M0RwLnVuaXF1ZT0zRGZ1bmN0aW9u
KGUsdCxuLHIpe2lmKGU9M0Q9M0RudWxsKXJldD0KdXJuW107cC5pc0Jvb2xlYW4odCl8fChyPTNE
bixuPTNEdCx0PTNEITEpLG4hPTNEbnVsbCYmKG49M0RwLml0ZXJhdGVlKG4scikpPQo7dmFyIGk9
M0RbXSxzPTNEW107Zm9yKHZhciBvPTNEMCx1PTNEZS5sZW5ndGg7bzx1O28rKyl7dmFyIGE9M0Rl
W29dO2lmKHQpKCE9Cm98fHMhPTNEPTNEYSkmJmkucHVzaChhKSxzPTNEYTtlbHNlIGlmKG4pe3Zh
ciBmPTNEbihhLG8sZSk7cC5pbmRleE9mKHMsZik8MD0KJiYocy5wdXNoKGYpLGkucHVzaChhKSl9
ZWxzZSBwLmluZGV4T2YoaSxhKTwwJiZpLnB1c2goYSl9cmV0dXJuIGl9LHAudW5pb249Cj0zRGZ1
bmN0aW9uKCl7cmV0dXJuIHAudW5pcShnKGFyZ3VtZW50cywhMCwhMCxbXSkpfSxwLmludGVyc2Vj
dGlvbj0zRGZ1bmN0aT0Kb24oZSl7aWYoZT0zRD0zRG51bGwpcmV0dXJuW107dmFyIHQ9M0RbXSxu
PTNEYXJndW1lbnRzLmxlbmd0aDtmb3IodmFyIHI9M0QwPQosaT0zRGUubGVuZ3RoO3I8aTtyKysp
e3ZhciBzPTNEZVtyXTtpZihwLmNvbnRhaW5zKHQscykpY29udGludWU7Zm9yKHZhciBvPQo9M0Qx
O288bjtvKyspaWYoIXAuY29udGFpbnMoYXJndW1lbnRzW29dLHMpKWJyZWFrO289M0Q9M0Q9M0Ru
JiZ0LnB1c2gocyl9cmU9CnR1cm4gdH0scC5kaWZmZXJlbmNlPTNEZnVuY3Rpb24oZSl7dmFyIHQ9
M0RnKG8uY2FsbChhcmd1bWVudHMsMSksITAsITAsW10pOz0KcmV0dXJuIHAuZmlsdGVyKGUsZnVu
Y3Rpb24oZSl7cmV0dXJuIXAuY29udGFpbnModCxlKX0pfSxwLnppcD0zRGZ1bmN0aW9uKGUpPQp7
aWYoZT0zRD0zRG51bGwpcmV0dXJuW107dmFyIHQ9M0RwLm1heChhcmd1bWVudHMsImxlbmd0aCIp
Lmxlbmd0aCxuPTNEQXJyYXk9Cih0KTtmb3IodmFyIHI9M0QwO3I8dDtyKyspbltyXT0zRHAucGx1
Y2soYXJndW1lbnRzLHIpO3JldHVybiBufSxwLm9iamVjdD0zRD0KZnVuY3Rpb24oZSx0KXtpZihl
PTNEPTNEbnVsbClyZXR1cm57fTt2YXIgbj0zRHt9O2Zvcih2YXIgcj0zRDAsaT0zRGUubGVuZ3Ro
PQo7cjxpO3IrKyl0P25bZVtyXV09M0R0W3JdOm5bZVtyXVswXV09M0RlW3JdWzFdO3JldHVybiBu
fSxwLmluZGV4T2Y9M0RmdW5jdGk9Cm9uKGUsdCxuKXtpZihlPTNEPTNEbnVsbClyZXR1cm4tMTt2
YXIgcj0zRDAsaT0zRGUubGVuZ3RoO2lmKG4pe2lmKHR5cGVvZiBuIT0KPTNEIm51bWJlciIpcmV0
dXJuIHI9M0RwLnNvcnRlZEluZGV4KGUsdCksZVtyXT0zRD0zRD0zRHQ/cjotMTtyPTNEbjwwP01h
dGguPQptYXgoMCxpK24pOm59Zm9yKDtyPGk7cisrKWlmKGVbcl09M0Q9M0Q9M0R0KXJldHVybiBy
O3JldHVybi0xfSxwLmxhc3RJbmRleE89CmY9M0RmdW5jdGlvbihlLHQsbil7aWYoZT0zRD0zRG51
bGwpcmV0dXJuLTE7dmFyIHI9M0RlLmxlbmd0aDt0eXBlb2Ygbj0zRD0zRD0KIm51bWJlciImJihy
PTNEbjwwP3IrbisxOk1hdGgubWluKHIsbisxKSk7d2hpbGUoLS1yPj0zRDApaWYoZVtyXT0zRD0z
RD0zRHQpPQpyZXR1cm4gcjtyZXR1cm4tMX0scC5yYW5nZT0zRGZ1bmN0aW9uKGUsdCxuKXthcmd1
bWVudHMubGVuZ3RoPD0zRDEmJih0PTNEZXw9CnwwLGU9M0QwKSxuPTNEbnx8MTt2YXIgcj0zRE1h
dGgubWF4KE1hdGguY2VpbCgodC1lKS9uKSwwKSxpPTNEQXJyYXkocik7Zm9yKD0KdmFyIHM9M0Qw
O3M8cjtzKyssZSs9M0RuKWlbc109M0RlO3JldHVybiBpfTt2YXIgeT0zRGZ1bmN0aW9uKCl7fTtw
LmJpbmQ9M0RmPQp1bmN0aW9uKGUsdCl7dmFyIG4scjtpZihoJiZlLmJpbmQ9M0Q9M0Q9M0RoKXJl
dHVybiBoLmFwcGx5KGUsby5jYWxsKGFyZ3VtZW49CnRzLDEpKTtpZighcC5pc0Z1bmN0aW9uKGUp
KXRocm93IG5ldyBUeXBlRXJyb3IoIkJpbmQgbXVzdCBiZSBjYWxsZWQgb24gYSBmdT0KbmN0aW9u
Iik7cmV0dXJuIG49M0RvLmNhbGwoYXJndW1lbnRzLDIpLHI9M0RmdW5jdGlvbigpe2lmKHRoaXMg
aW5zdGFuY2VvZiByPQope3kucHJvdG90eXBlPTNEZS5wcm90b3R5cGU7dmFyIGk9M0RuZXcgeTt5
LnByb3RvdHlwZT0zRG51bGw7dmFyIHM9M0RlLmFwcGw9CnkoaSxuLmNvbmNhdChvLmNhbGwoYXJn
dW1lbnRzKSkpO3JldHVybiBwLmlzT2JqZWN0KHMpP3M6aX1yZXR1cm4gZS5hcHBseSh0LD0Kbi5j
b25jYXQoby5jYWxsKGFyZ3VtZW50cykpKX0scn0scC5wYXJ0aWFsPTNEZnVuY3Rpb24oZSl7dmFy
IHQ9M0RvLmNhbGwoYXJnPQp1bWVudHMsMSk7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49M0QwLHI9
M0R0LnNsaWNlKCk7Zm9yKHZhciBpPTNEMCxzPTNEci5sZW49Cmd0aDtpPHM7aSsrKXJbaV09M0Q9
M0Q9M0RwJiYocltpXT0zRGFyZ3VtZW50c1tuKytdKTt3aGlsZShuPGFyZ3VtZW50cy5sZW5ndD0K
aClyLnB1c2goYXJndW1lbnRzW24rK10pO3JldHVybiBlLmFwcGx5KHRoaXMscil9fSxwLmJpbmRB
bGw9M0RmdW5jdGlvbihlKXt2PQphciB0LG49M0Rhcmd1bWVudHMubGVuZ3RoLHI7aWYobjw9M0Qx
KXRocm93IG5ldyBFcnJvcigiYmluZEFsbCBtdXN0IGJlIHBhc3M9CmVkIGZ1bmN0aW9uIG5hbWVz
Iik7Zm9yKHQ9M0QxO3Q8bjt0Kyspcj0zRGFyZ3VtZW50c1t0XSxlW3JdPTNEcC5iaW5kKGVbcl0s
ZT0KKTtyZXR1cm4gZX0scC5tZW1vaXplPTNEZnVuY3Rpb24oZSx0KXt2YXIgbj0zRGZ1bmN0aW9u
KHIpe3ZhciBpPTNEbi5jYWNoZSxzPQo9M0R0P3QuYXBwbHkodGhpcyxhcmd1bWVudHMpOnI7cmV0
dXJuIHAuaGFzKGkscyl8fChpW3NdPTNEZS5hcHBseSh0aGlzLGFyZ3U9Cm1lbnRzKSksaVtzXX07
cmV0dXJuIG4uY2FjaGU9M0R7fSxufSxwLmRlbGF5PTNEZnVuY3Rpb24oZSx0KXt2YXIgbj0zRG8u
Y2FsbD0KKGFyZ3VtZW50cywyKTtyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiBl
LmFwcGx5KG51bGwsbil9LHQpfSxwLmRlPQpmZXI9M0RmdW5jdGlvbihlKXtyZXR1cm4gcC5kZWxh
eS5hcHBseShwLFtlLDFdLmNvbmNhdChvLmNhbGwoYXJndW1lbnRzLDEpKSk9Cn0scC50aHJvdHRs
ZT0zRGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpLHMsbz0zRG51bGwsdT0zRDA7bnx8KG49M0R7fSk7
dmFyIGE9Cj0zRGZ1bmN0aW9uKCl7dT0zRG4ubGVhZGluZz0zRD0zRD0zRCExPzA6cC5ub3coKSxv
PTNEbnVsbCxzPTNEZS5hcHBseShyLGkpLD0Kb3x8KHI9M0RpPTNEbnVsbCl9O3JldHVybiBmdW5j
dGlvbigpe3ZhciBmPTNEcC5ub3coKTshdSYmbi5sZWFkaW5nPTNEPTNEPTNEPQohMSYmKHU9M0Rm
KTt2YXIgbD0zRHQtKGYtdSk7cmV0dXJuIHI9M0R0aGlzLGk9M0Rhcmd1bWVudHMsbDw9M0QwfHxs
PnQ/KGNsZWE9CnJUaW1lb3V0KG8pLG89M0RudWxsLHU9M0RmLHM9M0RlLmFwcGx5KHIsaSksb3x8
KHI9M0RpPTNEbnVsbCkpOiFvJiZuLnRyYWlsaT0KbmchPTNEPTNEITEmJihvPTNEc2V0VGltZW91
dChhLGwpKSxzfX0scC5kZWJvdW5jZT0zRGZ1bmN0aW9uKGUsdCxuKXt2YXIgcixpPQoscyxvLHUs
YT0zRGZ1bmN0aW9uKCl7dmFyIGY9M0RwLm5vdygpLW87Zjx0JiZmPjA/cj0zRHNldFRpbWVvdXQo
YSx0LWYpOihyPQo9M0RudWxsLG58fCh1PTNEZS5hcHBseShzLGkpLHJ8fChzPTNEaT0zRG51bGwp
KSl9O3JldHVybiBmdW5jdGlvbigpe3M9M0R0aGk9CnMsaT0zRGFyZ3VtZW50cyxvPTNEcC5ub3co
KTt2YXIgZj0zRG4mJiFyO3JldHVybiByfHwocj0zRHNldFRpbWVvdXQoYSx0KSksZj0KJiYodT0z
RGUuYXBwbHkocyxpKSxzPTNEaT0zRG51bGwpLHV9fSxwLndyYXA9M0RmdW5jdGlvbihlLHQpe3Jl
dHVybiBwLnBhcnRpPQphbCh0LGUpfSxwLm5lZ2F0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBmdW5j
dGlvbigpe3JldHVybiFlLmFwcGx5KHRoaXMsYXJndW09CmVudHMpfX0scC5jb21wb3NlPTNEZnVu
Y3Rpb24oKXt2YXIgZT0zRGFyZ3VtZW50cyx0PTNEZS5sZW5ndGgtMTtyZXR1cm4gZnVuYz0KdGlv
bigpe3ZhciBuPTNEdCxyPTNEZVt0XS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7d2hpbGUobi0tKXI9
M0RlW25dLmNhbGwodGhpPQpzLHIpO3JldHVybiByfX0scC5hZnRlcj0zRGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIGZ1bmN0aW9uKCl7aWYoLS1lPDEpcmV0dXJuIHQ9Ci5hcHBseSh0aGlzLGFyZ3VtZW50
cyl9fSxwLmJlZm9yZT0zRGZ1bmN0aW9uKGUsdCl7dmFyIG47cmV0dXJuIGZ1bmN0aW9uKCl7cj0K
ZXR1cm4tLWU+MD9uPTNEdC5hcHBseSh0aGlzLGFyZ3VtZW50cyk6dD0zRG51bGwsbn19LHAub25j
ZT0zRHAucGFydGlhbChwLmJlPQpmb3JlLDIpLHAua2V5cz0zRGZ1bmN0aW9uKGUpe2lmKCFwLmlz
T2JqZWN0KGUpKXJldHVybltdO2lmKGMpcmV0dXJuIGMoZSk7dmE9CnIgdD0zRFtdO2Zvcih2YXIg
biBpbiBlKXAuaGFzKGUsbikmJnQucHVzaChuKTtyZXR1cm4gdH0scC52YWx1ZXM9M0RmdW5jdGlv
bj0KKGUpe3ZhciB0PTNEcC5rZXlzKGUpLG49M0R0Lmxlbmd0aCxyPTNEQXJyYXkobik7Zm9yKHZh
ciBpPTNEMDtpPG47aSsrKXJbaV09Cj0zRGVbdFtpXV07cmV0dXJuIHJ9LHAucGFpcnM9M0RmdW5j
dGlvbihlKXt2YXIgdD0zRHAua2V5cyhlKSxuPTNEdC5sZW5ndGgscj0KPTNEQXJyYXkobik7Zm9y
KHZhciBpPTNEMDtpPG47aSsrKXJbaV09M0RbdFtpXSxlW3RbaV1dXTtyZXR1cm4gcn0scC5pbnZl
cnQ9Cj0zRGZ1bmN0aW9uKGUpe3ZhciB0PTNEe30sbj0zRHAua2V5cyhlKTtmb3IodmFyIHI9M0Qw
LGk9M0RuLmxlbmd0aDtyPGk7cisrKT0KdFtlW25bcl1dXT0zRG5bcl07cmV0dXJuIHR9LHAuZnVu
Y3Rpb25zPTNEcC5tZXRob2RzPTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0RbPQpdO2Zvcih2YXIgbiBp
biBlKXAuaXNGdW5jdGlvbihlW25dKSYmdC5wdXNoKG4pO3JldHVybiB0LnNvcnQoKX0scC5leHRl
bmQ9M0Q9CmZ1bmN0aW9uKGUpe2lmKCFwLmlzT2JqZWN0KGUpKXJldHVybiBlO3ZhciB0LG47Zm9y
KHZhciByPTNEMSxpPTNEYXJndW1lbnRzLj0KbGVuZ3RoO3I8aTtyKyspe3Q9M0Rhcmd1bWVudHNb
cl07Zm9yKG4gaW4gdClmLmNhbGwodCxuKSYmKGVbbl09M0R0W25dKX1yZXR1PQpybiBlfSxwLnBp
Y2s9M0RmdW5jdGlvbihlLHQsbil7dmFyIHI9M0R7fSxpO2lmKGU9M0Q9M0RudWxsKXJldHVybiBy
O2lmKHAuaXM9CkZ1bmN0aW9uKHQpKXt0PTNEZCh0LG4pO2ZvcihpIGluIGUpe3ZhciBzPTNEZVtp
XTt0KHMsaSxlKSYmKHJbaV09M0RzKX19ZWxzZT0Ke3ZhciBhPTNEdS5hcHBseShbXSxvLmNhbGwo
YXJndW1lbnRzLDEpKTtlPTNEbmV3IE9iamVjdChlKTtmb3IodmFyIGY9M0QwLGw9Cj0zRGEubGVu
Z3RoO2Y8bDtmKyspaT0zRGFbZl0saSBpbiBlJiYocltpXT0zRGVbaV0pfXJldHVybiByfSxwLm9t
aXQ9M0RmdW5jdD0KaW9uKGUsdCxuKXtpZihwLmlzRnVuY3Rpb24odCkpdD0zRHAubmVnYXRlKHQp
O2Vsc2V7dmFyIHI9M0RwLm1hcCh1LmFwcGx5KFtdPQosby5jYWxsKGFyZ3VtZW50cywxKSksU3Ry
aW5nKTt0PTNEZnVuY3Rpb24oZSx0KXtyZXR1cm4hcC5jb250YWlucyhyLHQpfX1yZXQ9CnVybiBw
LnBpY2soZSx0LG4pfSxwLmRlZmF1bHRzPTNEZnVuY3Rpb24oZSl7aWYoIXAuaXNPYmplY3QoZSkp
cmV0dXJuIGU7Zm9yKD0KdmFyIHQ9M0QxLG49M0Rhcmd1bWVudHMubGVuZ3RoO3Q8bjt0Kyspe3Zh
ciByPTNEYXJndW1lbnRzW3RdO2Zvcih2YXIgaSBpbiByPQopZVtpXT0zRD0zRD0zRHZvaWQgMCYm
KGVbaV09M0RyW2ldKX1yZXR1cm4gZX0scC5jbG9uZT0zRGZ1bmN0aW9uKGUpe3JldHVybiA9CnAu
aXNPYmplY3QoZSk/cC5pc0FycmF5KGUpP2Uuc2xpY2UoKTpwLmV4dGVuZCh7fSxlKTplfSxwLnRh
cD0zRGZ1bmN0aW9uKGUsdD0KKXtyZXR1cm4gdChlKSxlfTt2YXIgYj0zRGZ1bmN0aW9uKGUsdCxu
LHIpe2lmKGU9M0Q9M0Q9M0R0KXJldHVybiBlIT0zRD0zRDB8PQp8MS9lPTNEPTNEPTNEMS90O2lm
KGU9M0Q9M0RudWxsfHx0PTNEPTNEbnVsbClyZXR1cm4gZT0zRD0zRD0zRHQ7ZSBpbnN0YW5jZW89
CmYgcCYmKGU9M0RlLl93cmFwcGVkKSx0IGluc3RhbmNlb2YgcCYmKHQ9M0R0Ll93cmFwcGVkKTt2
YXIgaT0zRGEuY2FsbChlKTtpZj0KKGkhPTNEPTNEYS5jYWxsKHQpKXJldHVybiExO3N3aXRjaChp
KXtjYXNlIltvYmplY3QgUmVnRXhwXSI6Y2FzZSJbb2JqZWN0IFN0PQpyaW5nXSI6cmV0dXJuIiIr
ZT0zRD0zRCIiK3Q7Y2FzZSJbb2JqZWN0IE51bWJlcl0iOmlmKCtlIT0zRD0zRCtlKXJldHVybit0
IT0KPTNEPTNEK3Q7cmV0dXJuK2U9M0Q9M0Q9M0QwPzEvK2U9M0Q9M0Q9M0QxL3Q6K2U9M0Q9M0Q9
M0QrdDtjYXNlIltvYmplY3QgRGF0PQplXSI6Y2FzZSJbb2JqZWN0IEJvb2xlYW5dIjpyZXR1cm4r
ZT0zRD0zRD0zRCt0fWlmKHR5cGVvZiBlIT0zRCJvYmplY3QifHx0eXA9CmVvZiB0IT0zRCJvYmpl
Y3QiKXJldHVybiExO3ZhciBzPTNEbi5sZW5ndGg7d2hpbGUocy0tKWlmKG5bc109M0Q9M0Q9M0Rl
KXJldD0KdXJuIHJbc109M0Q9M0Q9M0R0O3ZhciBvPTNEZS5jb25zdHJ1Y3Rvcix1PTNEdC5jb25z
dHJ1Y3RvcjtpZihvIT0zRD0zRHUmJiJjPQpvbnN0cnVjdG9yImluIGUmJiJjb25zdHJ1Y3RvciJp
biB0JiYhKHAuaXNGdW5jdGlvbihvKSYmbyBpbnN0YW5jZW9mIG8mJnAuaXM9CkZ1bmN0aW9uKHUp
JiZ1IGluc3RhbmNlb2YgdSkpcmV0dXJuITE7bi5wdXNoKGUpLHIucHVzaCh0KTt2YXIgZixsO2lm
KGk9M0Q9Cj0zRD0zRCJbb2JqZWN0IEFycmF5XSIpe2Y9M0RlLmxlbmd0aCxsPTNEZj0zRD0zRD0z
RHQubGVuZ3RoO2lmKGwpd2hpbGUoZi0tKT0KaWYoIShsPTNEYihlW2ZdLHRbZl0sbixyKSkpYnJl
YWt9ZWxzZXt2YXIgYz0zRHAua2V5cyhlKSxoO2Y9M0RjLmxlbmd0aCxsPTNEPQpwLmtleXModCku
bGVuZ3RoPTNEPTNEPTNEZjtpZihsKXdoaWxlKGYtLSl7aD0zRGNbZl07aWYoIShsPTNEcC5oYXMo
dCxoKSYmYig9CmVbaF0sdFtoXSxuLHIpKSlicmVha319cmV0dXJuIG4ucG9wKCksci5wb3AoKSxs
fTtwLmlzRXF1YWw9M0RmdW5jdGlvbihlLHQpez0KcmV0dXJuIGIoZSx0LFtdLFtdKX0scC5pc0Vt
cHR5PTNEZnVuY3Rpb24oZSl7aWYoZT0zRD0zRG51bGwpcmV0dXJuITA7aWYocC5pPQpzQXJyYXko
ZSl8fHAuaXNTdHJpbmcoZSl8fHAuaXNBcmd1bWVudHMoZSkpcmV0dXJuIGUubGVuZ3RoPTNEPTNE
PTNEMDtmb3IodmE9CnIgdCBpbiBlKWlmKHAuaGFzKGUsdCkpcmV0dXJuITE7cmV0dXJuITB9LHAu
aXNFbGVtZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIT0KIWUmJmUubm9kZVR5cGU9M0Q9M0Q9M0Qx
fSxwLmlzQXJyYXk9M0RsfHxmdW5jdGlvbihlKXtyZXR1cm4gYS5jYWxsKGUpPTNEPTNEPQo9M0Qi
W29iamVjdCBBcnJheV0ifSxwLmlzT2JqZWN0PTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0R0eXBlb2Yg
ZTtyZXR1cm4gdD0zRD0KPTNEPTNEImZ1bmN0aW9uInx8dD0zRD0zRD0zRCJvYmplY3QiJiYhIWV9
LHAuZWFjaChbIkFyZ3VtZW50cyIsIkZ1bmN0aW9uIiwiPQpTdHJpbmciLCJOdW1iZXIiLCJEYXRl
IiwiUmVnRXhwIl0sZnVuY3Rpb24oZSl7cFsiaXMiK2VdPTNEZnVuY3Rpb24odCl7cmV0dXI9Cm4g
YS5jYWxsKHQpPTNEPTNEPTNEIltvYmplY3QgIitlKyJdIn19KSxwLmlzQXJndW1lbnRzKGFyZ3Vt
ZW50cyl8fChwLmlzQXJndT0KbWVudHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gcC5oYXMoZSwiY2Fs
bGVlIil9KSx0eXBlb2YgLy4vIT0zRCJmdW5jdGlvbiImJihwPQouaXNGdW5jdGlvbj0zRGZ1bmN0
aW9uKGUpe3JldHVybiB0eXBlb2YgZT0zRD0zRCJmdW5jdGlvbiJ8fCExfSkscC5pc0Zpbml0ZT0K
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGlzRmluaXRlKGUpJiYhaXNOYU4ocGFyc2VGbG9hdChlKSl9
LHAuaXNOYU49M0RmdW5jdGlvPQpuKGUpe3JldHVybiBwLmlzTnVtYmVyKGUpJiZlIT0zRD0zRCtl
fSxwLmlzQm9vbGVhbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBlPQo9M0Q9M0Q9M0QhMHx8ZT0zRD0z
RD0zRCExfHxhLmNhbGwoZSk9M0Q9M0Q9M0QiW29iamVjdCBCb29sZWFuXSJ9LHAuaXNOdWxsPQo9
M0RmdW5jdGlvbihlKXtyZXR1cm4gZT0zRD0zRD0zRG51bGx9LHAuaXNVbmRlZmluZWQ9M0RmdW5j
dGlvbihlKXtyZXR1cm4gZT0KPTNEPTNEPTNEdm9pZCAwfSxwLmhhcz0zRGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIGUhPTNEbnVsbCYmZi5jYWxsKGUsdCl9LHAubm9DPQpvbmZsaWN0PTNEZnVuY3Rpb24o
KXtyZXR1cm4gZS5fPTNEdCx0aGlzfSxwLmlkZW50aXR5PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGU9
Cn0scC5jb25zdGFudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX0s
cC5ub29wPTNEZnVuY3Rpb24oKT0Ke30scC5wcm9wZXJ0eT0zRGZ1bmN0aW9uKGUpe3JldHVybiBm
dW5jdGlvbih0KXtyZXR1cm4gdFtlXX19LHAubWF0Y2hlcz0zRGZ1PQpuY3Rpb24oZSl7dmFyIHQ9
M0RwLnBhaXJzKGUpLG49M0R0Lmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoZT0zRD0zRG51
bGw9CilyZXR1cm4hbjtlPTNEbmV3IE9iamVjdChlKTtmb3IodmFyIHI9M0QwO3I8bjtyKyspe3Zh
ciBpPTNEdFtyXSxzPTNEaVswXTtpZj0KKGlbMV0hPTNEPTNEZVtzXXx8IShzIGluIGUpKXJldHVy
biExfXJldHVybiEwfX0scC50aW1lcz0zRGZ1bmN0aW9uKGUsdCxuKXt2PQphciByPTNEQXJyYXko
TWF0aC5tYXgoMCxlKSk7dD0zRGQodCxuLDEpO2Zvcih2YXIgaT0zRDA7aTxlO2krKylyW2ldPTNE
dChpKTs9CnJldHVybiByfSxwLnJhbmRvbT0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ9M0Q9M0Ru
dWxsJiYodD0zRGUsZT0zRDApLGUrTWF0aD0KLmZsb29yKE1hdGgucmFuZG9tKCkqKHQtZSsxKSl9
LHAubm93PTNERGF0ZS5ub3d8fGZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlPQopLmdldFRpbWUo
KX07dmFyIHc9M0R7IiYiOiImYW1wOyIsIjwiOiImbHQ7IiwiPiI6IiZndDsiLCciJzoiJnF1b3Q7
IiwiJyI6IiY9CiN4Mjc7IiwiYCI6IiYjeDYwOyJ9LEU9M0RwLmludmVydCh3KSxTPTNEZnVuY3Rp
b24oZSl7dmFyIHQ9M0RmdW5jdGlvbih0KXtyZT0KdHVybiBlW3RdfSxuPTNEIig/OiIrcC5rZXlz
KGUpLmpvaW4oInwiKSsiKSIscj0zRFJlZ0V4cChuKSxpPTNEUmVnRXhwKG4sImciPQopO3JldHVy
biBmdW5jdGlvbihlKXtyZXR1cm4gZT0zRGU9M0Q9M0RudWxsPyIiOiIiK2Usci50ZXN0KGUpP2Uu
cmVwbGFjZShpLHQ9Cik6ZX19O3AuZXNjYXBlPTNEUyh3KSxwLnVuZXNjYXBlPTNEUyhFKSxwLnJl
c3VsdD0zRGZ1bmN0aW9uKGUsdCl7aWYoZT0zRD0zRD0KbnVsbClyZXR1cm4gdm9pZCAwO3ZhciBu
PTNEZVt0XTtyZXR1cm4gcC5pc0Z1bmN0aW9uKG4pP2VbdF0oKTpufTt2YXIgeD0zRDA7PQpwLnVu
aXF1ZUlkPTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0QrK3grIiI7cmV0dXJuIGU/ZSt0OnR9LHAudGVt
cGxhdGVTZXR0aW5ncz0KPTNEe2V2YWx1YXRlOi88JShbXHNcU10rPyklPi9nLGludGVycG9sYXRl
Oi88JT0zRChbXHNcU10rPyklPi9nLGVzY2FwZTovPCUtPQooW1xzXFNdKz8pJT4vZ307dmFyIFQ9
M0QvKC4pXi8sTj0zRHsiJyI6IiciLCJcXCI6IlxcIiwiXHIiOiJyIiwiXG4iOiJuIiwiXHU9CjIw
MjgiOiJ1MjAyOCIsIlx1MjAyOSI6InUyMDI5In0sQz0zRC9cXHwnfFxyfFxufFx1MjAyOHxcdTIw
MjkvZyxrPTNEZnVuY3Rpbz0KbihlKXtyZXR1cm4iXFwiK05bZV19O3AudGVtcGxhdGU9M0RmdW5j
dGlvbihlLHQsbil7IXQmJm4mJih0PTNEbiksdD0zRHAuZGVmPQphdWx0cyh7fSx0LHAudGVtcGxh
dGVTZXR0aW5ncyk7dmFyIHI9M0RSZWdFeHAoWyh0LmVzY2FwZXx8VCkuc291cmNlLCh0LmludGU9
CnJwb2xhdGV8fFQpLnNvdXJjZSwodC5ldmFsdWF0ZXx8VCkuc291cmNlXS5qb2luKCJ8IikrInwk
IiwiZyIpLGk9M0QwLHM9M0QiXz0KX3ArPTNEJyI7ZS5yZXBsYWNlKHIsZnVuY3Rpb24odCxuLHIs
byx1KXtyZXR1cm4gcys9M0RlLnNsaWNlKGksdSkucmVwbGFjZShDPQosayksaT0zRHUrdC5sZW5n
dGgsbj9zKz0zRCInK1xuKChfX3Q9M0QoIituKyIpKT0zRD0zRG51bGw/Jyc6Xy5lc2NhcGUoX190
KSk9CitcbiciOnI/cys9M0QiJytcbigoX190PTNEKCIrcisiKSk9M0Q9M0RudWxsPycnOl9fdCkr
XG4nIjpvJiYocys9M0QiJztcbiIrbz0KKyJcbl9fcCs9M0QnIiksdH0pLHMrPTNEIic7XG4iLHQu
dmFyaWFibGV8fChzPTNEIndpdGgob2JqfHx7fSl7XG4iK3MrIn1cbiIpPQoscz0zRCJ2YXIgX190
LF9fcD0zRCcnLF9faj0zREFycmF5LnByb3RvdHlwZS5qb2luLHByaW50PTNEZnVuY3Rpb24oKXtf
X3ArPQo9M0RfX2ouY2FsbChhcmd1bWVudHMsJycpO307XG4iK3MrInJldHVybiBfX3A7XG4iO3Ry
eXt2YXIgbz0zRG5ldyBGdW5jdGlvbig9CnQudmFyaWFibGV8fCJvYmoiLCJfIixzKX1jYXRjaCh1
KXt0aHJvdyB1LnNvdXJjZT0zRHMsdX12YXIgYT0zRGZ1bmN0aW9uKGUpez0KcmV0dXJuIG8uY2Fs
bCh0aGlzLGUscCl9LGY9M0R0LnZhcmlhYmxlfHwib2JqIjtyZXR1cm4gYS5zb3VyY2U9M0QiZnVu
Y3Rpb24oPQoiK2YrIil7XG4iK3MrIn0iLGF9LHAuY2hhaW49M0RmdW5jdGlvbihlKXt2YXIgdD0z
RHAoZSk7cmV0dXJuIHQuX2NoYWluPTNEITA9Cix0fTt2YXIgTD0zRGZ1bmN0aW9uKGUpe3JldHVy
biB0aGlzLl9jaGFpbj9wKGUpLmNoYWluKCk6ZX07cC5taXhpbj0zRGZ1bmN0aT0Kb24oZSl7cC5l
YWNoKHAuZnVuY3Rpb25zKGUpLGZ1bmN0aW9uKHQpe3ZhciBuPTNEcFt0XT0zRGVbdF07cC5wcm90
b3R5cGVbdF09Cj0zRGZ1bmN0aW9uKCl7dmFyIGU9M0RbdGhpcy5fd3JhcHBlZF07cmV0dXJuIHMu
YXBwbHkoZSxhcmd1bWVudHMpLEwuY2FsbCh0aD0KaXMsbi5hcHBseShwLGUpKX19KX0scC5taXhp
bihwKSxwLmVhY2goWyJwb3AiLCJwdXNoIiwicmV2ZXJzZSIsInNoaWZ0Iiwic29yPQp0Iiwic3Bs
aWNlIiwidW5zaGlmdCJdLGZ1bmN0aW9uKGUpe3ZhciB0PTNEbltlXTtwLnByb3RvdHlwZVtlXT0z
RGZ1bmN0aW9uKCk9Cnt2YXIgbj0zRHRoaXMuX3dyYXBwZWQ7cmV0dXJuIHQuYXBwbHkobixhcmd1
bWVudHMpLChlPTNEPTNEPTNEInNoaWZ0Inx8ZT0zRD0KPTNEPTNEInNwbGljZSIpJiZuLmxlbmd0
aD0zRD0zRD0zRDAmJmRlbGV0ZSBuWzBdLEwuY2FsbCh0aGlzLG4pfX0pLHAuZWFjaChbPQoiY29u
Y2F0Iiwiam9pbiIsInNsaWNlIl0sZnVuY3Rpb24oZSl7dmFyIHQ9M0RuW2VdO3AucHJvdG90eXBl
W2VdPTNEZnVuY3Rpb249Cigpe3JldHVybiBMLmNhbGwodGhpcyx0LmFwcGx5KHRoaXMuX3dyYXBw
ZWQsYXJndW1lbnRzKSl9fSkscC5wcm90b3R5cGUudmFsdT0KZT0zRGZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuX3dyYXBwZWR9LHR5cGVvZiBkZWZpbmU9M0Q9M0QiZnVuY3Rpb24iJiZkZWZpbmUuPQph
bWQmJmRlZmluZSgidW5kZXJzY29yZSIsW10sZnVuY3Rpb24oKXtyZXR1cm4gcH0pfS5jYWxsKHRo
aXMpLGRlZmluZSgibGlicy89CnVuZGVyc2NvcmUiLGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlv
bigpe3ZhciB0LG47cmV0dXJuIHR8fGUuX319KHRoaXMpKSxkZT0KZmluZSgidXRpbHMvdXRpbHMi
LFsibGlicy91bmRlcnNjb3JlIl0sZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLG4pe2Zvcih2YXIg
PQpyIGluIGUpe3ZhciBpPTNEZVtyXTtpJiZ0eXBlb2YgaT0zRD0zRCJvYmplY3QiJiYobihpKSx0
KGksbikpfX1mdW5jdGlvbiBuKGU9Cil7cmV0dXJuICQoIjxkaXYvPiIpLnRleHQoZSkuaHRtbCgp
fWZ1bmN0aW9uIHIoZSl7ZSBpbnN0YW5jZW9mIEFycmF5fHwoZT0zRD0KW2VdKTtmb3IodmFyIHQg
aW4gZSlpZihbIk5vbmUiLG51bGwsIm51bGwiLHVuZGVmaW5lZCwidW5kZWZpbmVkIl0uaW5kZXhP
ZihlPQpbdF0pPi0xKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGkoZSl7dmFyIGU9M0RlLnRv
U3RyaW5nKCk7aWYoZSl7ZT0zRGUucmU9CnBsYWNlKC8sL2csIiwgIik7dmFyIHQ9M0RlLmxhc3RJ
bmRleE9mKCIsICIpO3JldHVybiB0IT0zRC0xJiYoZT0zRGUuc3Vic3RyKD0KMCx0KSsiIG9yICIr
ZS5zdWJzdHIodCsxKSksZX1yZXR1cm4iIn1mdW5jdGlvbiBzKGUpe3RvcC5fX3V0aWxzX19nZXRf
Xz0zRHRvPQpwLl9fdXRpbHNfX2dldF9ffHx7fSxlLmNhY2hlJiZ0b3AuX191dGlsc19fZ2V0X19b
ZS51cmxdPyhlLnN1Y2Nlc3MmJmUuc3VjY2U9CnNzKHRvcC5fX3V0aWxzX19nZXRfX1tlLnVybF0p
LGNvbnNvbGUuZGVidWcoInV0aWxzLmpzOjpnZXQoKSAtIEZldGNoaW5nIGZybz0KbSBjYWNoZSBb
IitlLnVybCsiXS4iKSk6byh7dXJsOmUudXJsLGRhdGE6ZS5kYXRhLHN1Y2Nlc3M6ZnVuY3Rpb24o
dCl7dG9wLl9fPQp1dGlsc19fZ2V0X19bZS51cmxdPTNEdCxlLnN1Y2Nlc3MmJmUuc3VjY2Vzcyh0
KX0sZXJyb3I6ZnVuY3Rpb24odCl7ZS5lcnJvciY9CiZlLmVycm9yKHQpfX0pfWZ1bmN0aW9uIG8o
ZSl7dmFyIHQ9M0R7Y29udGVudFR5cGU6ImFwcGxpY2F0aW9uL2pzb24iLHR5cGU6ZT0KLnR5cGV8
fCJHRVQiLGRhdGE6ZS5kYXRhfHx7fSx1cmw6ZS51cmx9O3QudHlwZT0zRD0zRCJHRVQifHx0LnR5
cGU9M0Q9M0QiREVMPQpFVEUiPyh0LnVybC5pbmRleE9mKCI/Iik9M0Q9M0QtMT90LnVybCs9M0Qi
PyI6dC51cmwrPTNEIiYiLHQudXJsPTNEdC51cmwrJC49CnBhcmFtKHQuZGF0YSwhMCksdC5kYXRh
PTNEbnVsbCk6KHQuZGF0YVR5cGU9M0QianNvbiIsdC51cmw9M0R0LnVybCx0LmRhdGE9Cj0zREpT
T04uc3RyaW5naWZ5KHQuZGF0YSkpLCQuYWpheCh0KS5kb25lKGZ1bmN0aW9uKHQpe2lmKHR5cGVv
ZiB0PTNEPTNEInN0cj0KaW5nIil0cnl7dD0zRHQucmVwbGFjZSgiSW5maW5pdHksIiwnIkluZmlu
aXR5IiwnKSx0PTNEalF1ZXJ5LnBhcnNlSlNPTih0KX1jPQphdGNoKG4pe2NvbnNvbGUuZGVidWco
bil9ZS5zdWNjZXNzJiZlLnN1Y2Nlc3ModCl9KS5mYWlsKGZ1bmN0aW9uKHQpe3ZhciBuPQo9M0Ru
dWxsO3RyeXtuPTNEalF1ZXJ5LnBhcnNlSlNPTih0LnJlc3BvbnNlVGV4dCl9Y2F0Y2gocil7bj0z
RHQucmVzcG9uc2VUZXg9CnR9ZS5lcnJvciYmZS5lcnJvcihuLHQpfSl9ZnVuY3Rpb24gdShlLHQp
e3ZhciBuPTNEJCgnPGRpdiBjbGFzcz0zRCInK2UrJyI+PD0KL2Rpdj4nKTtuLmFwcGVuZFRvKCI6
ZXEoMCkiKTt2YXIgcj0zRG4uY3NzKHQpO3JldHVybiBuLnJlbW92ZSgpLHJ9ZnVuY3Rpb24gPQph
KGUpeyQoJ2xpbmtbaHJlZl49M0QiJytlKyciXScpLmxlbmd0aHx8JCgnPGxpbmsgaHJlZj0zRCIn
K2dhbGF4eV9jb25maWcucm89Cm90K2UrJyIgcmVsPTNEInN0eWxlc2hlZXQiPicpLmFwcGVuZFRv
KCJoZWFkIil9ZnVuY3Rpb24gZih0LG4pe3JldHVybiB0P2UuZD0KZWZhdWx0cyh0LG4pOm59ZnVu
Y3Rpb24gbChlLHQpe3ZhciBuPTNEIiI7aWYoZT49M0QxZTExKWUvPTNEMWUxMSxuPTNEIlRCIjtl
PQpsc2UgaWYoZT49M0QxZTgpZS89M0QxZTgsbj0zRCJHQiI7ZWxzZSBpZihlPj0zRDFlNSllLz0z
RDFlNSxuPTNEIk1CIjtlbHNlIGk9CmYoZT49M0QxMDApZS89M0QxMDAsbj0zRCJLQiI7ZWxzZXtp
ZighKGU+MCkpcmV0dXJuIjxzdHJvbmc+LTwvc3Ryb25nPiI7ZSo9Cj0zRDEwLG49M0QiYiJ9dmFy
IHI9M0RNYXRoLnJvdW5kKGUpLzEwO3JldHVybiB0P3IrIiAiK246IjxzdHJvbmc+IityKyI8L3N0
cj0Kb25nPiAiK259ZnVuY3Rpb24gYygpe3JldHVybiJ4IitNYXRoLnJhbmRvbSgpLnRvU3RyaW5n
KDM2KS5zdWJzdHJpbmcoMiw5KX1mPQp1bmN0aW9uIGgoZSl7dmFyIHQ9M0QkKCI8cD48L3A+Iik7
cmV0dXJuIHQuYXBwZW5kKGUpLHR9ZnVuY3Rpb24gcCgpe3ZhciBlPQo9M0RuZXcgRGF0ZSx0PTNE
KGUuZ2V0SG91cnMoKTwxMD8iMCI6IiIpK2UuZ2V0SG91cnMoKSxuPTNEKGUuZ2V0TWludXRlcygp
PDE9CjA/IjAiOiIiKStlLmdldE1pbnV0ZXMoKSxyPTNEZS5nZXREYXRlKCkrIi8iKyhlLmdldE1v
bnRoKCkrMSkrIi8iK2UuZ2V0RnVsbD0KWWVhcigpKyIsICIrdCsiOiIrbjtyZXR1cm4gcn1yZXR1
cm57Y3NzTG9hZEZpbGU6YSxjc3NHZXRBdHRyaWJ1dGU6dSxnZXQ6cyxtPQplcmdlOmYsYnl0ZXNU
b1N0cmluZzpsLHV1aWQ6Yyx0aW1lOnAsd3JhcDpoLHJlcXVlc3Q6byxzYW5pdGl6ZTpuLHRleHRp
Znk6aSw9CnZhbGlkYXRlOnIsZGVlcGVhY2g6dH19KSxkZWZpbmUoIm12Yy91aS91aS1wb3J0bGV0
IixbInV0aWxzL3V0aWxzIl0sZnVuY3Rpbz0KbihlKXt2YXIgdD0zREJhY2tib25lLlZpZXcuZXh0
ZW5kKHt2aXNpYmxlOiExLG9wdGlvbnNEZWZhdWx0Ont0aXRsZToiIixpY29uPQo6IiIsYnV0dG9u
czpudWxsLGJvZHk6bnVsbCxzY3JvbGxhYmxlOiEwLG5vcGFkZGluZzohMSxvcGVyYXRpb25zOm51
bGwscGxhY2U9Cm1lbnQ6ImJvdHRvbSIsY2xzOiJ1aS1wb3J0bGV0IixvcGVyYXRpb25zX2ZsdDoi
cmlnaHQifSwkdGl0bGU6bnVsbCwkY29udGVudD0KOm51bGwsJGJ1dHRvbnM6bnVsbCwkb3BlcmF0
aW9uczpudWxsLCRoZWFkZXI6bnVsbCxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoPQppcy5vcHRp
b25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCh0aGlz
Ll90ZW1wbGF0ZSg9CnRoaXMub3B0aW9ucykpLHRoaXMuJGNvbnRlbnQ9M0R0aGlzLiRlbC5maW5k
KCIuY29udGVudCIpLHRoaXMuJHRpdGxlPTNEdGhpcz0KLiRlbC5maW5kKCIucG9ydGxldC10aXRs
ZS10ZXh0IiksdGhpcy4kaGVhZGVyPTNEdGhpcy4kZWwuZmluZCgiLnBvcnRsZXQtaGVhPQpkZXIi
KTt2YXIgbj0zRHRoaXMuJGVsLmZpbmQoIi5wb3J0bGV0LWNvbnRlbnQiKTt0aGlzLm9wdGlvbnMu
bm9wYWRkaW5nJiYobi49CmNzcygicGFkZGluZyIsIjBweCIpLHRoaXMuJGNvbnRlbnQuY3NzKCJw
YWRkaW5nIiwiMHB4IikpLHRoaXMuJGJ1dHRvbnM9M0QkKD0KdGhpcy5lbCkuZmluZCgiLmJ1dHRv
bnMiKTtpZih0aGlzLm9wdGlvbnMuYnV0dG9ucyl7dmFyIHI9M0R0aGlzOyQuZWFjaCh0aGlzPQou
b3B0aW9ucy5idXR0b25zLGZ1bmN0aW9uKGUsdCl7dC4kZWwucHJvcCgiaWQiLGUpLHIuJGJ1dHRv
bnMuYXBwZW5kKHQuJGVsKX09Cil9ZWxzZSB0aGlzLiRidXR0b25zLnJlbW92ZSgpO3RoaXMuJG9w
ZXJhdGlvbnM9M0QkKHRoaXMuZWwpLmZpbmQoIi5vcGVyYXRpbz0KbnMiKTtpZih0aGlzLm9wdGlv
bnMub3BlcmF0aW9ucyl7dmFyIHI9M0R0aGlzOyQuZWFjaCh0aGlzLm9wdGlvbnMub3BlcmF0aW9u
PQpzLGZ1bmN0aW9uKGUsdCl7dC4kZWwucHJvcCgiaWQiLGUpLHIuJG9wZXJhdGlvbnMuYXBwZW5k
KHQuJGVsKX0pfXRoaXMub3B0aW89Cm5zLmJvZHkmJnRoaXMuYXBwZW5kKHRoaXMub3B0aW9ucy5i
b2R5KX0sYXBwZW5kOmZ1bmN0aW9uKHQsbil7bj90aGlzLiRjb250ZT0KbnQuYXBwZW5kKHQpOnRo
aXMuJGNvbnRlbnQuYXBwZW5kKGUud3JhcCh0KSl9LGNvbnRlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpPQpzLiRjb250ZW50fSxzaG93OmZ1bmN0aW9uKCl7dGhpcy4kZWwuZmFkZUluKCJmYXN0Iiks
dGhpcy52aXNpYmxlPTNEITB9LGhpZGU9CjpmdW5jdGlvbigpe3RoaXMuJGVsLmZhZGVPdXQoImZh
c3QiKSx0aGlzLnZpc2libGU9M0QhMX0sZW5hYmxlQnV0dG9uOmZ1bmN0aT0Kb24oZSl7dGhpcy4k
YnV0dG9ucy5maW5kKCIjIitlKS5wcm9wKCJkaXNhYmxlZCIsITEpfSxkaXNhYmxlQnV0dG9uOmZ1
bmN0aW9uPQooZSl7dGhpcy4kYnV0dG9ucy5maW5kKCIjIitlKS5wcm9wKCJkaXNhYmxlZCIsITAp
fSxoaWRlT3BlcmF0aW9uOmZ1bmN0aW9uKGU9Cil7dGhpcy4kb3BlcmF0aW9ucy5maW5kKCIjIitl
KS5oaWRlKCl9LHNob3dPcGVyYXRpb246ZnVuY3Rpb24oZSl7dGhpcy4kb3Blcj0KYXRpb25zLmZp
bmQoIiMiK2UpLnNob3coKX0sc2V0T3BlcmF0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49M0R0aGlz
LiRvcGVyYXRpPQpvbnMuZmluZCgiIyIrZSk7bi5vZmYoImNsaWNrIiksbi5vbigiY2xpY2siLHQp
fSx0aXRsZTpmdW5jdGlvbihlKXt2YXIgdD0zRHQ9Cmhpcy4kdGl0bGU7cmV0dXJuIGUmJnQuaHRt
bChlKSx0Lmh0bWwoKX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PTNEJzxkaT0KdiBpZD0z
RCInK2UuaWQrJyIgY2xhc3M9M0QiJytlLmNscysnIj4nO3JldHVybiBlLnRpdGxlJiYodCs9M0Qn
PGRpdiBjbGFzcz0KPTNEInBvcnRsZXQtaGVhZGVyIj48ZGl2IGNsYXNzPTNEIm9wZXJhdGlvbnMi
IHN0eWxlPTNEImZsb2F0OiAnK2Uub3BlcmF0aW9uPQpzX2ZsdCsnOyI+PC9kaXY+JysnPGRpdiBj
bGFzcz0zRCJwb3J0bGV0LXRpdGxlIj4nLGUuaWNvbiYmKHQrPTNEJzxpIGNsYXNzPQo9M0QiaWNv
biBmYSAnK2UuaWNvbisnIj4mbmJzcDs8L2k+JyksdCs9M0QnPHNwYW4gY2xhc3M9M0QicG9ydGxl
dC10aXRsZS10ZXg9CnQiPicrZS50aXRsZSsiPC9zcGFuPiIrIjwvZGl2PiIrIjwvZGl2PiIpLHQr
PTNEJzxkaXYgY2xhc3M9M0QicG9ydGxldC1jb250ZT0KbnQiPicsZS5wbGFjZW1lbnQ9M0Q9M0Qi
dG9wIiYmKHQrPTNEJzxkaXYgY2xhc3M9M0QiYnV0dG9ucyI+PC9kaXY+JyksdCs9M0QnPQo8ZGl2
IGNsYXNzPTNEImNvbnRlbnQiPjwvZGl2PicsZS5wbGFjZW1lbnQ9M0Q9M0QiYm90dG9tIiYmKHQr
PTNEJzxkaXYgY2xhc3M9Cj0zRCJidXR0b25zIj48L2Rpdj4nKSx0Kz0zRCI8L2Rpdj48L2Rpdj4i
LHR9fSk7cmV0dXJue1ZpZXc6dH19KSxkZWZpbmUoIm12Yz0KL3VpL3VpLXNlbGVjdC1kZWZhdWx0
IixbInV0aWxzL3V0aWxzIl0sZnVuY3Rpb24oZSl7dmFyIHQ9M0RCYWNrYm9uZS5WaWV3LmV4PQp0
ZW5kKHtvcHRpb25zRGVmYXVsdDp7aWQ6IiIsY2xzOiIiLGVycm9yX3RleHQ6Ik5vIGRhdGEgYXZh
aWxhYmxlIix2aXNpYmxlOiE9CjAsd2FpdDohMSxtdWx0aXBsZTohMSxzZWFyY2hhYmxlOiExfSxp
bml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRD0KZS5tZXJnZSh0LHRoaXMub3B0
aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMp
PQopLHRoaXMuJHNlbGVjdD0zRHRoaXMuJGVsLmZpbmQoIi5zZWxlY3QiKSx0aGlzLiRpY29uPTNE
dGhpcy4kZWwuZmluZCgiLmljb249CiIpLHRoaXMuJGJ1dHRvbj0zRHRoaXMuJGVsLmZpbmQoIi5i
dXR0b24iKSx0aGlzLm9wdGlvbnMubXVsdGlwbGU/KHRoaXMuJHNlbD0KZWN0LnByb3AoIm11bHRp
cGxlIiwhMCksdGhpcy4kc2VsZWN0LmFkZENsYXNzKCJ1aS1zZWxlY3QtbXVsdGlwbGUiKSx0aGlz
LiRpPQpjb24ucmVtb3ZlKCkpOnRoaXMuJGVsLmFkZENsYXNzKCJ1aS1zZWxlY3QiKSx0aGlzLnVw
ZGF0ZSh0aGlzLm9wdGlvbnMuZGF0YSk9Cix0aGlzLm9wdGlvbnMudmFsdWUhPTNEPTNEdW5kZWZp
bmVkJiZ0aGlzLnZhbHVlKHRoaXMub3B0aW9ucy52YWx1ZSksdGhpcy5vcD0KdGlvbnMudmlzaWJs
ZXx8dGhpcy5oaWRlKCksdGhpcy5vcHRpb25zLndhaXQ/dGhpcy53YWl0KCk6dGhpcy5zaG93KCk7
dmFyIG49Cj0zRHRoaXM7dGhpcy4kc2VsZWN0Lm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7bi5fY2hh
bmdlKCl9KSx0aGlzLm9uKCJjaGFuZ2UiLD0KZnVuY3Rpb24oKXtuLl9jaGFuZ2UoKX0pfSx2YWx1
ZTpmdW5jdGlvbihlKXtyZXR1cm4gZSE9M0Q9M0R1bmRlZmluZWQmJih0aGlzPQouJHNlbGVjdC52
YWwoZSksdGhpcy4kc2VsZWN0LnNlbGVjdDImJnRoaXMuJHNlbGVjdC5zZWxlY3QyKCJ2YWwiLGUp
KSx0aGlzLiQ9CnNlbGVjdC52YWwoKX0sZmlyc3Q6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMuJHNl
bGVjdC5maW5kKCJvcHRpb24iKTtyZXR1cm4gZT0KLmxlbmd0aD4wP2UudmFsKCk6dW5kZWZpbmVk
fSx2YWxpZGF0ZTpmdW5jdGlvbigpe3JldHVybiBlLnZhbGlkYXRlKHRoaXMudmFsPQp1ZSgpKX0s
dGV4dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRzZWxlY3QuZmluZCgib3B0aW9uOnNlbGVjdGVk
IikudGV4dCgpfSw9CnNob3c6ZnVuY3Rpb24oKXt0aGlzLnVud2FpdCgpLHRoaXMuJHNlbGVjdC5z
aG93KCksdGhpcy4kZWwuc2hvdygpfSxoaWRlOmZ1bj0KY3Rpb24oKXt0aGlzLiRlbC5oaWRlKCl9
LHdhaXQ6ZnVuY3Rpb24oKXt0aGlzLiRpY29uLnJlbW92ZUNsYXNzKCksdGhpcy4kaWNvPQpuLmFk
ZENsYXNzKCJmYSBmYS1zcGlubmVyIGZhLXNwaW4iKX0sdW53YWl0OmZ1bmN0aW9uKCl7dGhpcy4k
aWNvbi5yZW1vdmVDbGE9CnNzKCksdGhpcy4kaWNvbi5hZGRDbGFzcygiZmEgZmEtY2FyZXQtZG93
biIpfSxkaXNhYmxlZDpmdW5jdGlvbigpe3JldHVybiB0aD0KaXMuJHNlbGVjdC5pcygiOmRpc2Fi
bGVkIil9LGVuYWJsZTpmdW5jdGlvbigpe3RoaXMuJHNlbGVjdC5wcm9wKCJkaXNhYmxlZCIsPQoh
MSl9LGRpc2FibGU6ZnVuY3Rpb24oKXt0aGlzLiRzZWxlY3QucHJvcCgiZGlzYWJsZWQiLCEwKX0s
YWRkOmZ1bmN0aW9uKGUpe3Q9Cmhpcy4kc2VsZWN0LmFwcGVuZCh0aGlzLl90ZW1wbGF0ZU9wdGlv
bihlKSksdGhpcy5fcmVmcmVzaCgpfSxkZWw6ZnVuY3Rpb24oZT0KKXt0aGlzLiRzZWxlY3QuZmlu
ZCgib3B0aW9uW3ZhbHVlPTNEIitlKyJdIikucmVtb3ZlKCksdGhpcy4kc2VsZWN0LnRyaWdnZXIo
PQoiY2hhbmdlIiksdGhpcy5fcmVmcmVzaCgpfSx1cGRhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9M0R0
aGlzLiRzZWxlY3QudmFsKCk7dGg9CmlzLiRzZWxlY3QuZmluZCgib3B0aW9uIikucmVtb3ZlKCk7
Zm9yKHZhciBuIGluIGUpdGhpcy4kc2VsZWN0LmFwcGVuZCh0aGlzLj0KX3RlbXBsYXRlT3B0aW9u
KGVbbl0pKTt0aGlzLl9yZWZyZXNoKCksdGhpcy4kc2VsZWN0LnZhbCh0KSx0aGlzLiRzZWxlY3Qu
dmFsPQooKXx8dGhpcy4kc2VsZWN0LnZhbCh0aGlzLmZpcnN0KCkpLHRoaXMub3B0aW9ucy5zZWFy
Y2hhYmxlJiYodGhpcy4kYnV0dG9uLmg9CmlkZSgpLHRoaXMuJHNlbGVjdC5zZWxlY3QyKCJkZXN0
cm95IiksdGhpcy4kc2VsZWN0LnNlbGVjdDIoKSl9LHNldE9uQ2hhbmdlOj0KZnVuY3Rpb24oZSl7
dGhpcy5vcHRpb25zLm9uY2hhbmdlPTNEZX0sZXhpc3RzOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlz
LiRzZWxlPQpjdC5maW5kKCdvcHRpb25bdmFsdWU9M0QiJytlKyciXScpLmxlbmd0aD4wfSxfY2hh
bmdlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb249CnMub25jaGFuZ2UmJnRoaXMub3B0aW9ucy5vbmNo
YW5nZSh0aGlzLiRzZWxlY3QudmFsKCkpfSxfcmVmcmVzaDpmdW5jdGlvbigpez0KdGhpcy4kc2Vs
ZWN0LmZpbmQoIm9wdGlvblt2YWx1ZT0zRG51bGxdIikucmVtb3ZlKCk7dmFyIGU9M0R0aGlzLiRz
ZWxlY3QuZmluPQpkKCJvcHRpb24iKS5sZW5ndGg7ZT0zRD0zRDA/KHRoaXMuZGlzYWJsZSgpLHRo
aXMuJHNlbGVjdC5hcHBlbmQodGhpcy5fdGVtcGw9CmF0ZU9wdGlvbih7dmFsdWU6Im51bGwiLGxh
YmVsOnRoaXMub3B0aW9ucy5lcnJvcl90ZXh0fSkpKTp0aGlzLmVuYWJsZSgpfSxfdD0KZW1wbGF0
ZU9wdGlvbjpmdW5jdGlvbihlKXtyZXR1cm4nPG9wdGlvbiB2YWx1ZT0zRCInK2UudmFsdWUrJyI+
JytlLmxhYmVsKyI8PQovb3B0aW9uPiJ9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGRp
diBpZD0zRCInK2UuaWQrJyI+JysnPHNlbGVjdCBpZD0KPTNEInNlbGVjdCIgY2xhc3M9M0Qic2Vs
ZWN0ICcrZS5jbHMrIiAiK2UuaWQrJyI+PC9zZWxlY3Q+JysnPGRpdiBjbGFzcz0zRCJiPQp1dHRv
biI+JysnPGkgY2xhc3M9M0QiaWNvbiIvPicrIjwvZGl2PiIrIjwvZGl2PiJ9fSk7cmV0dXJue1Zp
ZXc6dH19KSxkZWZpbmU9CigibXZjL3VpL3VpLXNsaWRlciIsWyJ1dGlscy91dGlscyJdLGZ1bmN0
aW9uKGUpe3ZhciB0PTNEQmFja2JvbmUuVmlldy5leHRlbj0KZCh7b3B0aW9uc0RlZmF1bHQ6e21p
bjpudWxsLG1heDpudWxsLHN0ZXA6bnVsbCxwcmVjaXNlOiExLHNwbGl0OjFlNH0saW5pdGlhPQps
aXplOmZ1bmN0aW9uKHQpe3ZhciBuPTNEdGhpczt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhp
cy5vcHRpb25zRGVmYXVsdCk9Cix0aGlzLnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5v
cHRpb25zKSksdGhpcy51c2VzbGlkZXI9M0R0aGlzLm9wdGlvbj0Kcy5tYXghPTNEPTNEbnVsbCYm
dGhpcy5vcHRpb25zLm1pbiE9M0Q9M0RudWxsJiZ0aGlzLm9wdGlvbnMubWF4PnRoaXMub3B0aW9u
PQpzLm1pbix0aGlzLm9wdGlvbnMuc3RlcD0zRD0zRD0zRG51bGwmJih0aGlzLm9wdGlvbnMuc3Rl
cD0zRDEsdGhpcy5vcHRpb25zLnA9CnJlY2lzZSYmdGhpcy51c2VzbGlkZXImJih0aGlzLm9wdGlv
bnMuc3RlcD0zRCh0aGlzLm9wdGlvbnMubWF4LXRoaXMub3B0aW9ucz0KLm1pbikvdGhpcy5vcHRp
b25zLnNwbGl0KSksdGhpcy51c2VzbGlkZXI/KHRoaXMuJHNsaWRlcj0zRHRoaXMuJGVsLmZpbmQo
IiNzPQpsaWRlciIpLHRoaXMuJHNsaWRlci5zbGlkZXIodGhpcy5vcHRpb25zKSx0aGlzLiRzbGlk
ZXIub24oInNsaWRlIixmdW5jdGlvbig9CmUsdCl7bi52YWx1ZSh0LnZhbHVlKX0pKTp0aGlzLiRl
bC5maW5kKCIudWktZm9ybS1zbGlkZXItdGV4dCIpLmNzcygid2lkdGgiLD0KIjEwMCUiKSx0aGlz
LiR0ZXh0PTNEdGhpcy4kZWwuZmluZCgiI3RleHQiKSx0aGlzLm9wdGlvbnMudmFsdWUhPTNEPTNE
dW5kZWZpPQpuZWQmJnRoaXMudmFsdWUodGhpcy5vcHRpb25zLnZhbHVlKSx0aGlzLiR0ZXh0Lm9u
KCJjaGFuZ2UiLGZ1bmN0aW9uKCl7bi52YWw9CnVlKCQodGhpcykudmFsKCkpfSk7dmFyIHI9M0Rb
XTt0aGlzLiR0ZXh0Lm9uKCJrZXl1cCIsZnVuY3Rpb24oZSl7cltlLndoaWNoXT0KPTNEITF9KSx0
aGlzLiR0ZXh0Lm9uKCJrZXlkb3duIixmdW5jdGlvbihlKXt2YXIgdD0zRGUud2hpY2g7clt0XT0z
RCEwLHQ9M0Q9Cj0zRDh8fHQ9M0Q9M0Q5fHx0PTNEPTNEMTN8fHQ9M0Q9M0QzN3x8dD0zRD0zRDM5
fHx0Pj0zRDQ4JiZ0PD0zRDU3fHx0PTNEPTNEMT0KOTAmJiQodGhpcykudmFsKCkuaW5kZXhPZigi
LiIpPTNEPTNELTEmJm4ub3B0aW9ucy5wcmVjaXNlfHx0PTNEPTNEMTg5JiYkKHRoPQppcykudmFs
KCkuaW5kZXhPZigiLSIpPTNEPTNELTF8fHJbOTFdfHxyWzE3XXx8ZXZlbnQucHJldmVudERlZmF1
bHQoKX0pfSx2YWw9CnVlOmZ1bmN0aW9uKGUpe3JldHVybiBlIT0zRD0zRHVuZGVmaW5lZCYmKGlz
TmFOKGUpJiYoZT0zRDApLHRoaXMub3B0aW9ucy5tYT0KeCE9M0Q9M0RudWxsJiYoZT0zRE1hdGgu
bWluKGUsdGhpcy5vcHRpb25zLm1heCkpLHRoaXMub3B0aW9ucy5taW4hPTNEPTNEbnVsPQpsJiYo
ZT0zRE1hdGgubWF4KGUsdGhpcy5vcHRpb25zLm1pbikpLHRoaXMub3B0aW9ucy5vbmNoYW5nZSYm
dGhpcy5vcHRpb25zLm89Cm5jaGFuZ2UoZSksdGhpcy4kc2xpZGVyJiZ0aGlzLiRzbGlkZXIuc2xp
ZGVyKCJ2YWx1ZSIsZSksdGhpcy4kdGV4dC52YWwoZSkpLD0KdGhpcy4kdGV4dC52YWwoKX0sX3Rl
bXBsYXRlOmZ1bmN0aW9uKGUpe3JldHVybic8ZGl2IGlkPTNEIicrZS5pZCsnIiBjbGFzcz0KPTNE
InVpLWZvcm0tc2xpZGVyIj4nKyc8aW5wdXQgaWQ9M0QidGV4dCIgdHlwZT0zRCJ0ZXh0IiBjbGFz
cz0zRCJ1aS1mb3JtLXNsPQppZGVyLXRleHQiLz4nKyc8ZGl2IGlkPTNEInNsaWRlciIgY2xhc3M9
M0QidWktZm9ybS1zbGlkZXItZWxlbWVudCIvPicrIjwvZGk9CnY+In19KTtyZXR1cm57Vmlldzp0
fX0pLGRlZmluZSgibXZjL3VpL3VpLW9wdGlvbnMiLFsidXRpbHMvdXRpbHMiXSxmdW5jdGlvbj0K
KGUpe3ZhciB0PTNEQmFja2JvbmUuVmlldy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24odCl7
dGhpcy5vcHRpb25zRGVmYXVsPQp0PTNEe3Zpc2libGU6ITAsZGF0YTpbXSxpZDplLnV1aWQoKSxl
cnJvcl90ZXh0OiJObyBkYXRhIGF2YWlsYWJsZS4iLHdhaXRfdGU9Cnh0OiJQbGVhc2Ugd2FpdC4u
LiJ9LHRoaXMub3B0aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlzLnNl
dD0KRWxlbWVudCgiPGRpdi8+IiksdGhpcy4kbWVzc2FnZT0zRCQoIjxkaXYvPiIpLHRoaXMuJG9w
dGlvbnM9M0QkKHRoaXMuX3RlbXBsPQphdGUodCkpLHRoaXMuJGVsLmFwcGVuZCh0aGlzLiRtZXNz
YWdlKSx0aGlzLiRlbC5hcHBlbmQodGhpcy4kb3B0aW9ucyksdGhpcy49Cm9wdGlvbnMudmlzaWJs
ZXx8dGhpcy4kZWwuaGlkZSgpLHRoaXMudXBkYXRlKHRoaXMub3B0aW9ucy5kYXRhKSx0aGlzLm9w
dGlvbj0Kcy52YWx1ZSE9M0Q9M0R1bmRlZmluZWQmJnRoaXMudmFsdWUodGhpcy5vcHRpb25zLnZh
bHVlKTt2YXIgbj0zRHRoaXM7dGhpcy5vPQpuKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7bi5fY2hhbmdl
KCl9KX0sdXBkYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy5fZ2V0VmE9Cmx1ZSgpO3RoaXMu
JG9wdGlvbnMuZW1wdHkoKTtpZih0aGlzLl90ZW1wbGF0ZU9wdGlvbnMpdGhpcy4kb3B0aW9ucy5h
cHBlbmQodD0KaGlzLl90ZW1wbGF0ZU9wdGlvbnMoZSkpO2Vsc2UgZm9yKHZhciBuIGluIGUpe3Zh
ciByPTNEJCh0aGlzLl90ZW1wbGF0ZU9wdGlvPQpuKGVbbl0pKTtyLmFkZENsYXNzKCJ1aS1vcHRp
b24iKSx0aGlzLiRvcHRpb25zLmFwcGVuZChyKX12YXIgaT0zRHRoaXM7dGhpcy49CiRlbC5maW5k
KCJpbnB1dCIpLm9uKCJjaGFuZ2UiLGZ1bmN0aW9uKCl7aS52YWx1ZShpLl9nZXRWYWx1ZSgpKSxp
Ll9jaGFuZ2UoKT0KfSksdGhpcy5fcmVmcmVzaCgpLHRoaXMudmFsdWUodCl9LHZhbHVlOmZ1bmN0
aW9uKGUpe2lmKGUhPTNEPTNEdW5kZWZpbmVkKXtlPQogaW5zdGFuY2VvZiBBcnJheXx8KGU9M0Rb
ZV0pLHRoaXMuJGVsLmZpbmQoImlucHV0IikucHJvcCgiY2hlY2tlZCIsITEpO2Zvcig9CnZhciB0
IGluIGUpdGhpcy4kZWwuZmluZCgnaW5wdXRbdmFsdWU9M0QiJytlW3RdKyciXScpLmZpcnN0KCku
cHJvcCgiY2hlY2tlZD0KIiwhMCl9cmV0dXJuIHRoaXMuX2dldFZhbHVlKCl9LGV4aXN0czpmdW5j
dGlvbihlKXtpZihlIT0zRD0zRHVuZGVmaW5lZCl7ZSBpPQpuc3RhbmNlb2YgQXJyYXl8fChlPTNE
W2VdKTtmb3IodmFyIHQgaW4gZSlpZih0aGlzLiRlbC5maW5kKCdpbnB1dFt2YWx1ZT0zRCI9Cicr
ZVt0XSsnIl0nKS5sZW5ndGg+MClyZXR1cm4hMH1yZXR1cm4hMX0sZmlyc3Q6ZnVuY3Rpb24oKXt2
YXIgZT0zRHRoaXMuJGVsLj0KZmluZCgiaW5wdXQiKTtyZXR1cm4gZS5sZW5ndGg+MD9lLnZhbCgp
OnVuZGVmaW5lZH0sdmFsaWRhdGU6ZnVuY3Rpb24oKXtyZXR1PQpybiBlLnZhbGlkYXRlKHRoaXMu
dmFsdWUoKSl9LHdhaXQ6ZnVuY3Rpb24oKXt0aGlzLl9zaXplKCk9M0Q9M0QwJiYodGhpcy5fbWU9
CnNzYWdlU2hvdyh0aGlzLm9wdGlvbnMud2FpdF90ZXh0LCJpbmZvIiksdGhpcy4kb3B0aW9ucy5o
aWRlKCkpfSx1bndhaXQ6ZnVuYz0KdGlvbigpe3RoaXMuX21lc3NhZ2VIaWRlKCksdGhpcy5fcmVm
cmVzaCgpfSxfY2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zPQoub25jaGFuZ2UmJnRoaXMu
b3B0aW9ucy5vbmNoYW5nZSh0aGlzLl9nZXRWYWx1ZSgpKX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt0
aGk9CnMuX3NpemUoKT0zRD0zRDA/KHRoaXMuX21lc3NhZ2VTaG93KHRoaXMub3B0aW9ucy5lcnJv
cl90ZXh0LCJkYW5nZXIiKSx0aGlzLj0KJG9wdGlvbnMuaGlkZSgpKToodGhpcy5fbWVzc2FnZUhp
ZGUoKSx0aGlzLiRvcHRpb25zLmNzcygiZGlzcGxheSIsImlubGluZS1iPQpsb2NrIikpfSxfZ2V0
VmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMuJGVsLmZpbmQoIjpjaGVja2VkIik7aWYoZS5s
ZW5ndGg9Cj0zRD0zRDApcmV0dXJuIm51bGwiO2lmKHRoaXMub3B0aW9ucy5tdWx0aXBsZSl7dmFy
IHQ9M0RbXTtyZXR1cm4gZS5lYWNoKGZ1bj0KY3Rpb24oKXt0LnB1c2goJCh0aGlzKS52YWwoKSl9
KSx0fXJldHVybiBlLnZhbCgpfSxfc2l6ZTpmdW5jdGlvbigpe3JldHVybiB0PQpoaXMuJGVsLmZp
bmQoIi51aS1vcHRpb24iKS5sZW5ndGh9LF9tZXNzYWdlU2hvdzpmdW5jdGlvbihlLHQpe3RoaXMu
JG1lc3NhZ2U9Ci5zaG93KCksdGhpcy4kbWVzc2FnZS5yZW1vdmVDbGFzcygpLHRoaXMuJG1lc3Nh
Z2UuYWRkQ2xhc3MoInVpLW1lc3NhZ2UgYWxlcj0KdCBhbGVydC0iK3QpLHRoaXMuJG1lc3NhZ2Uu
aHRtbChlKX0sX21lc3NhZ2VIaWRlOmZ1bmN0aW9uKCl7dGhpcy4kbWVzc2FnZS5oPQppZGUoKX0s
X3RlbXBsYXRlOmZ1bmN0aW9uKCl7cmV0dXJuJzxkaXYgY2xhc3M9M0QidWktb3B0aW9ucyIvPid9
fSksbj0zRHt9O249Ci5WaWV3PTNEdC5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oZSl7dC5w
cm90b3R5cGUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsZT0KKX0sX3RlbXBsYXRlT3B0aW9uOmZ1bmN0
aW9uKGUpe3JldHVybic8ZGl2PjxpbnB1dCB0eXBlPTNEInJhZGlvIiBuYW1lPTNEIicrPQp0aGlz
Lm9wdGlvbnMuaWQrJyIgdmFsdWU9M0QiJytlLnZhbHVlKyciLz4nK2UubGFiZWwrIjxicj4iKyI8
L2Rpdj4ifX0pO3ZhciA9CnI9M0R7fTtyLlZpZXc9M0R0LmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5j
dGlvbihlKXtlLm11bHRpcGxlPTNEITAsdC5wcm90b3R5cD0KZS5pbml0aWFsaXplLmNhbGwodGhp
cyxlKX0sX3RlbXBsYXRlT3B0aW9uOmZ1bmN0aW9uKGUpe3JldHVybic8ZGl2PjxpbnB1dCB0PQp5
cGU9M0QiY2hlY2tib3giIG5hbWU9M0QiJyt0aGlzLm9wdGlvbnMuaWQrJyIgdmFsdWU9M0QiJytl
LnZhbHVlKyciLz4nK2UubGE9CmJlbCsiPGJyPiIrIjwvZGl2PiJ9fSk7dmFyIGk9M0R7fTtyZXR1
cm4gaS5WaWV3PTNEdC5leHRlbmQoe2luaXRpYWxpemU6ZnVuYz0KdGlvbihlKXt0LnByb3RvdHlw
ZS5pbml0aWFsaXplLmNhbGwodGhpcyxlKX0sdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPTNE
PQo9M0R1bmRlZmluZWQmJih0aGlzLiRlbC5maW5kKCJpbnB1dCIpLnByb3AoImNoZWNrZWQiLCEx
KSx0aGlzLiRlbC5maW5kKCJsYWI9CmVsIikucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpLHRoaXMuJGVs
LmZpbmQoJ1t2YWx1ZT0zRCInK2UrJyJdJykucHJvcCgiY2hlY2tlZD0KIiwhMCkuY2xvc2VzdCgi
bGFiZWwiKS5hZGRDbGFzcygiYWN0aXZlIikpLHRoaXMuX2dldFZhbHVlKCl9LF90ZW1wbGF0ZU9w
dGlvPQpuOmZ1bmN0aW9uKGUpe3ZhciB0PTNEJzxsYWJlbCBjbGFzcz0zRCJidG4gYnRuLWRlZmF1
bHQiPic7cmV0dXJuIGUuaWNvbiYmKHQ9Cis9M0QnPGkgY2xhc3M9M0QiZmEgJytlLmljb24rJyIv
PicpLHQrPTNEJzxpbnB1dCB0eXBlPTNEInJhZGlvIiBuYW1lPTNEIicrdD0KaGlzLm9wdGlvbnMu
aWQrJyIgdmFsdWU9M0QiJytlLnZhbHVlKyciPicrZS5sYWJlbCsiPC9sYWJlbD4iLHR9LF90ZW1w
bGF0ZTpmPQp1bmN0aW9uKCl7cmV0dXJuJzxkaXYgY2xhc3M9M0QiYnRuLWdyb3VwIHVpLXJhZGlv
YnV0dG9uIiBkYXRhLXRvZ2dsZT0zRCJidXQ9CnRvbnMiLz4nfX0pLHtCYXNlOnQsUmFkaW86bixS
YWRpb0J1dHRvbjppLENoZWNrYm94OnJ9fSksZGVmaW5lKCJtdmMvdWkvdWktZD0KcmlsbGRvd24i
LFsidXRpbHMvdXRpbHMiLCJtdmMvdWkvdWktb3B0aW9ucyJdLGZ1bmN0aW9uKGUsdCl7dmFyIG49
M0R0LkJhc2UuPQpleHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oZSl7dGhpcy5kaXNwbGF5PTNE
ZS5kaXNwbGF5fHwiY2hlY2tib3giLGUubXVsdGk9CnBsZT0zRHRoaXMuZGlzcGxheT0zRD0zRCJj
aGVja2JveCIsdC5CYXNlLnByb3RvdHlwZS5pbml0aWFsaXplLmNhbGwodGhpcyxlKT0KfSxfdGVt
cGxhdGVPcHRpb246ZnVuY3Rpb24oZSx0LG4pe3JldHVybic8ZGl2PjxpbnB1dCBuYW1lPTNEIicr
dGhpcy5vcHRpb25zPQouaWQrJyIgY2xhc3M9M0QidWktb3B0aW9uIiB0eXBlPTNEIicrdGhpcy5k
aXNwbGF5KyciIHZhbHVlPTNEIicrdCsnIj4nK2UrIjw9CmRpdi8+In0sX3RlbXBsYXRlT3B0aW9u
czpmdW5jdGlvbihlKXtmdW5jdGlvbiBuKGUsdCl7ZnVuY3Rpb24gbihuKXtuPyh0LmZhZD0KZUlu
KCJmYXN0IiksZS5yZW1vdmVDbGFzcygidG9nZ2xlLWV4cGFuZCIpLGUuYWRkQ2xhc3MoInRvZ2ds
ZSIpLGUuaXNfZXhwYW5kPQplZD0zRCEwKToodC5oaWRlKCksZS5yZW1vdmVDbGFzcygidG9nZ2xl
IiksZS5hZGRDbGFzcygidG9nZ2xlLWV4cGFuZCIpLGUuaXM9Cl9leHBhbmRlZD0zRCExKX1lLm9u
KCJjbGljayIsZnVuY3Rpb24oKXtuKCFlLmlzX2V4cGFuZGVkKX0pfWZ1bmN0aW9uIHIoZSxzKT0K
e2ZvcihpIGluIHMpe3ZhciBvPTNEc1tpXSx1PTNEby5vcHRpb25zLmxlbmd0aD4wLGE9M0QkKCI8
ZGl2Lz4iKTtpZih1KXt2YXIgPQpmPTNEJCgnPHNwYW4gY2xhc3M9M0QidWktZHJpbGxkb3duLWJ1
dHRvbiBmb3JtLXRvZ2dsZSBpY29uLWJ1dHRvbiB0b2dnbGUtZXg9CnBhbmQiIHN0eWxlPTNEInBv
c2l0aW9uOiByZWxhdGl2ZTsgdG9wOiAycHg7Ii8+JyksbD0zRCQoIjxkaXYvPiIpO2wuYXBwZW5k
KD0KZiksbC5hcHBlbmQodC5fdGVtcGxhdGVPcHRpb24oby5uYW1lLG8udmFsdWUpKSxhLmFwcGVu
ZChsKTt2YXIgYz0zRCQoJzxkaXYgPQpzdHlsZT0zRCJkaXNwbGF5OiBub25lOyBtYXJnaW4tbGVm
dDogMjVweDsiLz4nKTtyKGMsby5vcHRpb25zKSxhLmFwcGVuZChjKSw9Cm4oZixjKX1lbHNlIGEu
YXBwZW5kKHQuX3RlbXBsYXRlT3B0aW9uKG8ubmFtZSxvLnZhbHVlKSk7ZS5hcHBlbmQoYSl9fXZh
ciB0PQo9M0R0aGlzLHM9M0QkKCI8ZGl2Lz4iKTtyZXR1cm4gcihzLGUpLHN9LF90ZW1wbGF0ZTpm
dW5jdGlvbihlKXtyZXR1cm4nPGRpdiA9CmNsYXNzPTNEInVpLW9wdGlvbnMgZHJpbGxkb3duLWNv
bnRhaW5lciIgaWQ9M0QiJytlLmlkKyciLz4nfX0pO3JldHVybntWaWV3Oj0Kbn19KSxkZWZpbmUo
Im12Yy91aS91aS1idXR0b24tbWVudSIsWyJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGUpe3JldHVy
biBCYWNrPQpib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7aWQ6IiIsdGl0bGU6IiIs
ZmxvYXRpbmc6InJpZ2h0IixpY29uOm51bGw9CixvbmNsaWNrOm51bGwsY2xzOiJ1aS1idXR0b24t
aWNvbiB1aS1idXR0b24tbWVudSIsdG9vbHRpcDoiIix0YXJnZXQ6IiIsaHJlZj0KOiIiLG9udW5s
b2FkOm51bGwsdmlzaWJsZTohMCx0YWc6IiJ9LCRtZW51Om51bGwsaW5pdGlhbGl6ZTpmdW5jdGlv
bih0KXt0aGlzPQoub3B0aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlz
LnNldEVsZW1lbnQoJCh0aGlzLl90ZW1wbGF0ZSg9CnRoaXMub3B0aW9ucykpKTt2YXIgbj0zRCQo
dGhpcy5lbCkuZmluZCgiLnJvb3QiKSxyPTNEdGhpcztuLm9uKCJjbGljayIsZnVuYz0KdGlvbihl
KXskKCIudG9vbHRpcCIpLmhpZGUoKSxlLnByZXZlbnREZWZhdWx0KCksci5vcHRpb25zLm9uY2xp
Y2smJnIub3B0aW9uPQpzLm9uY2xpY2soKX0pLHRoaXMub3B0aW9ucy52aXNpYmxlfHx0aGlzLmhp
ZGUoKSxuLnRvb2x0aXAoe3RpdGxlOnQudG9vbHRpcCw9CnBsYWNlbWVudDoiYm90dG9tIn0pfSxz
aG93OmZ1bmN0aW9uKCl7JCh0aGlzLmVsKS5zaG93KCl9LGhpZGU6ZnVuY3Rpb24oKXskKD0KdGhp
cy5lbCkuaGlkZSgpfSxhZGRNZW51OmZ1bmN0aW9uKHQpe3ZhciBuPTNEe3RpdGxlOiIiLHRhcmdl
dDoiIixocmVmOiIiLG9uPQpjbGljazpudWxsLGRpdmlkZXI6ITEsaWNvbjpudWxsLGNsczoiYnV0
dG9uLW1lbnUgYnRuLWdyb3VwIn07bj0zRGUubWVyZ2UodCw9Cm4pLHRoaXMuJG1lbnV8fCgkKHRo
aXMuZWwpLmFwcGVuZCh0aGlzLl90ZW1wbGF0ZU1lbnUoKSksdGhpcy4kbWVudT0zRCQodGhpcz0K
LmVsKS5maW5kKCIubWVudSIpKTt2YXIgcj0zRCQodGhpcy5fdGVtcGxhdGVNZW51SXRlbShuKSk7
ci5vbigiY2xpY2siLGZ1bmN0PQppb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLG4ub25jbGljayYm
bi5vbmNsaWNrKCl9KSx0aGlzLiRtZW51LmFwcGVuZChyKSxuLmQ9Cml2aWRlciYmdGhpcy4kbWVu
dS5hcHBlbmQoJCh0aGlzLl90ZW1wbGF0ZURpdmlkZXIoKSkpfSxfdGVtcGxhdGVNZW51SXRlbTpm
dT0KbmN0aW9uKGUpe3ZhciB0PTNEJzxsaT48YSBjbGFzcz0zRCJkcm9wZG93bi1pdGVtIiBocmVm
PTNEIicrZS5ocmVmKyciIHRhcmdlPQp0PTNEIicrZS50YXJnZXQrJyI+JztyZXR1cm4gZS5pY29u
JiYodCs9M0QnPGkgY2xhc3M9M0QiZmEgJytlLmljb24rJyI+PC9pPic9CiksdCs9M0QiICIrZS50
aXRsZSsiPC9hPiIrIjwvbGk+Iix0fSxfdGVtcGxhdGVNZW51OmZ1bmN0aW9uKCl7cmV0dXJuJzx1
bCBjbD0KYXNzPTNEIm1lbnUgZHJvcGRvd24tbWVudSBwdWxsLXJpZ2h0IiByb2xlPTNEIm1lbnUi
PjwvdWw+J30sX3RlbXBsYXRlRGl2aWRlPQpyOmZ1bmN0aW9uKCl7cmV0dXJuJzxsaSBjbGFzcz0z
RCJkaXZpZGVyIj48L2xpPid9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXt2YXI9CiB0PTNEIiIsbj0z
RCIiO2UudGl0bGU/dD0zRCJ3aWR0aDogYXV0bzsiOm49M0QibWFyZ2luOiAwcHg7Ijt2YXIgcj0z
RCc8ZGl2ID0KaWQ9M0QiJytlLmlkKyciIHN0eWxlPTNEImZsb2F0OiAnK2UuZmxvYXRpbmcrIjsg
Iit0KyciIGNsYXNzPTNEImRyb3Bkb3duICcrPQplLmNscysnIj4nKyc8ZGl2IGNsYXNzPTNEInJv
b3QgYnV0dG9uIGRyb3Bkb3duLXRvZ2dsZSIgZGF0YS10b2dnbGU9M0QiZHJvcGQ9Cm93biIgc3R5
bGU9M0QiJytuKyciPicrJzxpIGNsYXNzPTNEImljb24gZmEgJytlLmljb24rJyIvPic7cmV0dXJu
IGUudGl0bGUmJj0KKHIrPTNEJyZuYnNwOzxzcGFuIGNsYXNzPTNEInRpdGxlIj4nK2UudGl0bGUr
Ijwvc3Bhbj4iKSxyKz0zRCI8L2Rpdj48L2Rpdj4iPQoscn19KX0pLGRlZmluZSgibXZjL3VpL3Vp
LW1pc2MiLFsidXRpbHMvdXRpbHMiLCJtdmMvdWkvdWktc2VsZWN0LWRlZmF1bHQiLCI9Cm12Yy91
aS91aS1zbGlkZXIiLCJtdmMvdWkvdWktb3B0aW9ucyIsIm12Yy91aS91aS1kcmlsbGRvd24iLCJt
dmMvdWkvdWktYnV0dD0Kb24tbWVudSIsIm12Yy91aS91aS1tb2RhbCJdLGZ1bmN0aW9uKGUsdCxu
LHIsaSxzLG8pe3ZhciB1PTNEQmFja2JvbmUuVmlldy5lPQp4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6
e3VybDoiIixjbHM6IiJ9LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPQo9M0Rl
Lm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGVtZW50KHRoaXMuX3RlbXBs
YXRlKHRoaXMub3B0aW89Cm5zKSl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGltZyBj
bGFzcz0zRCJ1aS1pbWFnZSAnK2UuY2xzKyciIHNyYz0zRD0KIicrZS51cmwrJyIvPid9fSksYT0z
REJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVsdDp7dGl0bGU6IiIsY2xzOiIiPQp9
LGluaXRpYWxpemU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0
aW9uc0RlZmF1bHQpLHRoaXM9Ci5zZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9u
cykpfSx0aXRsZTpmdW5jdGlvbihlKXt0aGlzLiRlbC5odG1sKD0KZSl9LF90ZW1wbGF0ZTpmdW5j
dGlvbihlKXtyZXR1cm4nPGxhYmVsIGNsYXNzPTNEInVpLWxhYmVsICcrZS5jbHMrJyI+JytlLnRp
PQp0bGUrIjwvbGFiZWw+In0sdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gb3B0aW9ucy50aXRsZX19
KSxmPTNEQmFja2JvbmUuVmlldy49CmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e2Zsb2F0aW5nOiJy
aWdodCIsaWNvbjoiIix0b29sdGlwOiIiLHBsYWNlbWVudDoiYm90dD0Kb20iLHRpdGxlOiIiLGNs
czoiIn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhp
cy5vPQpwdGlvbnNEZWZhdWx0KSx0aGlzLnNldEVsZW1lbnQodGhpcy5fdGVtcGxhdGUodGhpcy5v
cHRpb25zKSksJCh0aGlzLmVsKS50b289Cmx0aXAoe3RpdGxlOnQudG9vbHRpcCxwbGFjZW1lbnQ6
ImJvdHRvbSJ9KX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3JldHVybic8ZD0KaXY+PHNwYW4gY2xh
c3M9M0QiZmEgJytlLmljb24rJyIgY2xhc3M9M0QidWktaWNvbiIvPiZuYnNwOycrZS50aXRsZSsi
PC9kaXY+PQoifX0pLGw9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e2lk
Om51bGwsdGl0bGU6IiIsZmxvYXRpbmc6InI9CmlnaHQiLGNsczoidWktYnV0dG9uIGJ0biBidG4t
ZGVmYXVsdCIsaWNvbjoiIn0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlzLj0Kb3B0aW9ucz0z
RGUubWVyZ2UodCx0aGlzLm9wdGlvbnNEZWZhdWx0KSx0aGlzLnNldEVsZW1lbnQodGhpcy5fdGVt
cGxhdGUodGhpPQpzLm9wdGlvbnMpKSwkKHRoaXMuZWwpLm9uKCJjbGljayIsZnVuY3Rpb24oKXsk
KCIudG9vbHRpcCIpLmhpZGUoKSx0Lm9uY2xpY2s9CiYmdC5vbmNsaWNrKCl9KSwkKHRoaXMuZWwp
LnRvb2x0aXAoe3RpdGxlOnQudG9vbHRpcCxwbGFjZW1lbnQ6ImJvdHRvbSJ9KX0sXz0KdGVtcGxh
dGU6ZnVuY3Rpb24oZSl7dmFyIHQ9M0QnPGJ1dHRvbiBpZD0zRCInK2UuaWQrJyIgdHlwZT0zRCJz
dWJtaXQiIHN0eWxlPQo9M0QiZmxvYXQ6ICcrZS5mbG9hdGluZysnOyIgdHlwZT0zRCJidXR0b24i
IGNsYXNzPTNEIicrZS5jbHMrJyI+JztyZXR1cm4gZS49Cmljb24mJih0Kz0zRCc8aSBjbGFzcz0z
RCJpY29uIGZhICcrZS5pY29uKyciPjwvaT4mbmJzcDsnKSx0Kz0zRGUudGl0bGUrIjwvYj0KdXR0
b24+Iix0fX0pLGM9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e2lkOm51
bGwsdGl0bGU6IiIsZmxvPQphdGluZzoicmlnaHQiLGNsczoidWktYnV0dG9uLWljb24iLGljb246
IiIsdG9vbHRpcDoiIixvbmNsaWNrOm51bGx9LGluaXRpYWw9Cml6ZTpmdW5jdGlvbih0KXt0aGlz
Lm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGVtZT0K
bnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSksdGhpcy4kYnV0dG9uPTNEdGhpcy4kZWwu
ZmluZCgiLmJ1dHRvbiIpO3ZhPQpyIG49M0R0aGlzOyQodGhpcy5lbCkub24oImNsaWNrIixmdW5j
dGlvbigpeyQoIi50b29sdGlwIikuaGlkZSgpLHQub25jbGljayY9CiYhbi5kaXNhYmxlZCYmdC5v
bmNsaWNrKCl9KSwkKHRoaXMuZWwpLnRvb2x0aXAoe3RpdGxlOnQudG9vbHRpcCxwbGFjZW1lbnQ6
Ij0KYm90dG9tIn0pfSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy4kYnV0dG9uLmFkZENsYXNzKCJk
aXNhYmxlZCIpLHRoaXMuZGlzYWJsPQplZD0zRCEwfSxlbmFibGU6ZnVuY3Rpb24oKXt0aGlzLiRi
dXR0b24ucmVtb3ZlQ2xhc3MoImRpc2FibGVkIiksdGhpcy5kaXNhYmw9CmVkPTNEITF9LHNldElj
b246ZnVuY3Rpb24oZSl7dGhpcy4kKCJpIikucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmljb24p
LmFkZD0KQ2xhc3MoZSksdGhpcy5vcHRpb25zLmljb249M0RlfSxfdGVtcGxhdGU6ZnVuY3Rpb24o
ZSl7dmFyIHQ9M0QiIjtlLnRpdGxlJiYoPQp0PTNEIndpZHRoOiBhdXRvOyIpO3ZhciBuPTNEJzxk
aXYgaWQ9M0QiJytlLmlkKyciIHN0eWxlPTNEImZsb2F0OiAnK2UuZmxvYXQ9CmluZysiOyAiK3Qr
JyIgY2xhc3M9M0QiJytlLmNscysnIj4nO3JldHVybiBlLnRpdGxlP24rPTNEJzxkaXYgY2xhc3M9
M0QiYnV0dD0Kb24iPjxpIGNsYXNzPTNEImljb24gZmEgJytlLmljb24rJyIvPiZuYnNwOycrJzxz
cGFuIGNsYXNzPTNEInRpdGxlIj4nK2UudGl0PQpsZSsiPC9zcGFuPiIrIjwvZGl2PiI6bis9M0Qn
PGkgY2xhc3M9M0QiaWNvbiBmYSAnK2UuaWNvbisnIi8+JyxuKz0zRCI8L2Rpdj49CiIsbn19KSxo
PTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0Ont0aXRsZToiIixjbHM6IiJ9
LGluaXRpYWxpej0KZTpmdW5jdGlvbih0KXt0aGlzLm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5v
cHRpb25zRGVmYXVsdCksdGhpcy5zZXRFbGVtZW50PQoodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRp
b25zKSksJCh0aGlzLmVsKS5vbigiY2xpY2siLHQub25jbGljayl9LF90ZW1wbGF0ZTo9CmZ1bmN0
aW9uKGUpe3JldHVybic8ZGl2PjxhIGhyZWY9M0QiamF2YXNjcmlwdDp2b2lkKDApIiBjbGFzcz0z
RCJ1aS1hbmNob3IgJz0KK2UuY2xzKyciPicrZS50aXRsZSsiPC9hPjwvZGl2PiJ9fSkscD0zREJh
Y2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zRGVmYXVsPQp0OnttZXNzYWdlOm51bGwsc3RhdHVz
OiJpbmZvIixwZXJzaXN0ZW50OiExfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMub3A9CnRp
b25zPTNEZS5tZXJnZSh0LHRoaXMub3B0aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbWVudCgiPGRp
dj48L2Rpdj4iKSx0aGlzLj0Kb3B0aW9ucy5tZXNzYWdlJiZ0aGlzLnVwZGF0ZSh0aGlzLm9wdGlv
bnMpfSx1cGRhdGU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPQo9M0RlLm1lcmdlKHQsdGhpcy5v
cHRpb25zRGVmYXVsdCk7aWYodC5tZXNzYWdlIT0zRCIiKXt0aGlzLiRlbC5odG1sKHRoaXMuX3Q9
CmVtcGxhdGUodGhpcy5vcHRpb25zKSksdGhpcy4kZWwuZmluZCgiLmFsZXJ0IikuYXBwZW5kKHQu
bWVzc2FnZSksdGhpcy4kZWwuZj0KYWRlSW4oKSx0aGlzLnRpbWVvdXQmJndpbmRvdy5jbGVhclRp
bWVvdXQodGhpcy50aW1lb3V0KTtpZighdC5wZXJzaXN0ZW50KXt2PQphciBuPTNEdGhpczt0aGlz
LnRpbWVvdXQ9M0R3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe24uJGVsLmlzKCI6dmlzaWJs
ZSI9Cik/bi4kZWwuZmFkZU91dCgpOm4uJGVsLmhpZGUoKX0sM2UzKX19ZWxzZSB0aGlzLiRlbC5m
YWRlT3V0KCl9LF90ZW1wbGF0ZTpmdT0KbmN0aW9uKGUpe3JldHVybic8ZGl2IGNsYXNzPTNEInVp
LW1lc3NhZ2UgYWxlcnQgYWxlcnQtJytlLnN0YXR1cysnIi8+J319KSxkPQo9M0RCYWNrYm9uZS5W
aWV3LmV4dGVuZCh7b3B0aW9uc0RlZmF1bHQ6e29uY2xpY2s6bnVsbCxzZWFyY2h3b3JkOiIifSxp
bml0aWE9CmxpemU6ZnVuY3Rpb24odCl7dGhpcy5vcHRpb25zPTNEZS5tZXJnZSh0LHRoaXMub3B0
aW9uc0RlZmF1bHQpLHRoaXMuc2V0RWxlbT0KZW50KHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9u
cykpO3ZhciBuPTNEdGhpczt0aGlzLm9wdGlvbnMub25jbGljayYmdGhpcy4kPQplbC5vbigic3Vi
bWl0IixmdW5jdGlvbihlKXt2YXIgdD0zRG4uJGVsLmZpbmQoIiNzZWFyY2giKTtuLm9wdGlvbnMu
b25jbGljayg9CnQudmFsKCkpfSl9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4nPGRpdiBj
bGFzcz0zRCJ1aS1zZWFyY2giPjxmb3JtIG9ucz0KdWJtaXQ9M0QicmV0dXJuIGZhbHNlOyI+PGlu
cHV0IGlkPTNEInNlYXJjaCIgY2xhc3M9M0QiZm9ybS1jb250cm9sIGlucHV0LXNtPQoiIHR5cGU9
M0QidGV4dCIgbmFtZT0zRCJzZWFyY2giIHBsYWNlaG9sZGVyPTNEIlNlYXJjaC4uLiIgdmFsdWU9
M0QiJytlLnNlYXI9CmNod29yZCsnIj4nKyc8YnV0dG9uIHR5cGU9M0Qic3VibWl0IiBjbGFzcz0z
RCJidG4gc2VhcmNoLWJ0biI+JysnPGkgY2xhc3M9Cj0zRCJmYSBmYS1zZWFyY2giPjwvaT4nKyI8
L2J1dHRvbj4iKyI8L2Zvcm0+IisiPC9kaXY+In19KSx2PTNEQmFja2JvbmUuVmlldz0KLmV4dGVu
ZCh7b3B0aW9uc0RlZmF1bHQ6e3R5cGU6InRleHQiLHBsYWNlaG9sZGVyOiIiLGRpc2FibGVkOiEx
LHZpc2libGU6ITAsPQpjbHM6IiIsYXJlYTohMX0saW5pdGlhbGl6ZTpmdW5jdGlvbih0KXt0aGlz
Lm9wdGlvbnM9M0RlLm1lcmdlKHQsdGhpcy5vcHRpb249CnNEZWZhdWx0KSx0aGlzLnNldEVsZW1l
bnQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSksdGhpcy5vcHRpb25zLnZhbHVlIT0KPTNE
PTNEdW5kZWZpbmVkJiZ0aGlzLnZhbHVlKHRoaXMub3B0aW9ucy52YWx1ZSksdGhpcy5vcHRpb25z
LmRpc2FibGVkJiZ0aGlzPQouJGVsLnByb3AoImRpc2FibGVkIiwhMCksdGhpcy5vcHRpb25zLnZp
c2libGV8fHRoaXMuJGVsLmhpZGUoKTt2YXIgbj0zRHRoaXM9Cjt0aGlzLiRlbC5vbigiaW5wdXQi
LGZ1bmN0aW9uKCl7bi5vcHRpb25zLm9uY2hhbmdlJiZuLm9wdGlvbnMub25jaGFuZ2Uobi4kZT0K
bC52YWwoKSl9KX0sdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUhPTNEPTNEdW5kZWZpbmVkJiZ0
aGlzLiRlbC52YWwoZSksdGhpPQpzLiRlbC52YWwoKX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3Jl
dHVybiBlLmFyZWE/Jzx0ZXh0YXJlYSBpZD0zRCInK2UuaWQrJyI9CiBjbGFzcz0zRCJ1aS10ZXh0
YXJlYSAnK2UuY2xzKyciPjwvdGV4dGFyZWE+JzonPGlucHV0IGlkPTNEIicrZS5pZCsnIiB0eXBl
PQo9M0QiJytlLnR5cGUrJyIgdmFsdWU9M0QiJytlLnZhbHVlKyciIHBsYWNlaG9sZGVyPTNEIicr
ZS5wbGFjZWhvbGRlcisnIiBjbGE9CnNzPTNEInVpLWlucHV0ICcrZS5jbHMrJyI+J319KSxtPTNE
QmFja2JvbmUuVmlldy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpbz0KbihlKXt0aGlzLm9wdGlv
bnM9M0RlLHRoaXMuc2V0RWxlbWVudCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKSx0aGlz
Lm9wPQp0aW9ucy52YWx1ZSE9M0Q9M0R1bmRlZmluZWQmJnRoaXMudmFsdWUodGhpcy5vcHRpb25z
LnZhbHVlKX0sdmFsdWU6ZnVuY3Rpb249CihlKXtyZXR1cm4gZSE9M0Q9M0R1bmRlZmluZWQmJnRo
aXMuJCgiaGlkZGVuIikudmFsKGUpLHRoaXMuJCgiaGlkZGVuIikudmFsKD0KKX0sX3RlbXBsYXRl
OmZ1bmN0aW9uKGUpe3ZhciB0PTNEJzxkaXYgaWQ9M0QiJytlLmlkKyciID4nO3JldHVybiBlLmlu
Zm8mJih0PQorPTNEIjxsYWJlbD4iK2UuaW5mbysiPC9sYWJlbD4iKSx0Kz0zRCc8aGlkZGVuIHZh
bHVlPTNEIicrZS52YWx1ZSsnIi8+JysiPC89CmRpdj4iLHR9fSk7cmV0dXJue0FuY2hvcjpoLEJ1
dHRvbjpsLEJ1dHRvbkljb246YyxCdXR0b25NZW51OnMsSWNvbjpmLEltYWdlOj0KdSxJbnB1dDp2
LExhYmVsOmEsTWVzc2FnZTpwLE1vZGFsOm8sUmFkaW9CdXR0b246ci5SYWRpb0J1dHRvbixDaGVj
a2JveDpyLkNoPQplY2tib3gsUmFkaW86ci5SYWRpbyxTZWFyY2hib3g6ZCxTZWxlY3Q6dCxIaWRk
ZW46bSxTbGlkZXI6bixEcmlsbGRvd246aX19KSw9CmRlZmluZSgicGx1Z2luL2xpYnJhcnkvam9i
cyIsWyJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGUpe3JldHVybiBCYWNrYm9uZS5Nbz0KZGVsLmV4
dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbih0LG4pe3RoaXMuYXBwPTNEdCx0aGlzLm9wdGlvbnM9
M0RlLm1lcmdlKG4sPQp0aGlzLm9wdGlvbnNEZWZhdWx0KX0scmVxdWVzdDpmdW5jdGlvbihlLHQs
bixyLGkpe3ZhciBzPTNEdGhpcztlLnN0YXRlKCJ3YWk9CnQiLCJSZXF1ZXN0aW5nIGpvYiByZXN1
bHRzLi4uIik7dmFyIG89M0RlLmdldCgiZGF0YXNldF9pZF9qb2IiKTtvIT0zRCIiP3MuXz0Kd2Fp
dChlLHIsaSk6cy5fc3VibWl0KGUsdCxuLHIsaSl9LGNsZWFudXA6ZnVuY3Rpb24odCl7dmFyIG49
M0R0aGlzLHI9M0R0LmdlPQp0KCJkYXRhc2V0X2lkX2pvYiIpO3IhPTNEIiImJihlLnJlcXVlc3Qo
e3R5cGU6IlBVVCIsdXJsOmNvbmZpZy5yb290KyJhcGkvaGk9CnN0b3JpZXMvbm9uZS9jb250ZW50
cy8iK3IsZGF0YTp7ZGVsZXRlZDohMH0sc3VjY2VzczpmdW5jdGlvbigpe24uX3JlZnJlc2hIZD0K
YXMoKX19KSx0LnNldCgiZGF0YXNldF9pZF9qb2IiLCIiKSl9LF9zdWJtaXQ6ZnVuY3Rpb24odCxu
LHIsaSxzKXt2YXIgbz0zRHRoPQppcyx1PTNEdC5pZCxhPTNEdC5nZXQoInR5cGUiKSxmPTNEdC5k
ZWZpbml0aW9uO2RhdGE9M0R7dG9vbF9pZDoiY2hhcnRzIixpbnA9CnV0czp7aW5wdXQ6e2lkOnQu
Z2V0KCJkYXRhc2V0X2lkIiksc3JjOiJoZGEifSxtb2R1bGU6Zi5leGVjdXRlLGNvbHVtbnM6cixz
ZT0KdHRpbmdzOm59fSx0LnN0YXRlKCJ3YWl0IiwiU2VuZGluZyBqb2IgcmVxdWVzdC4uLiIpLGUu
cmVxdWVzdCh7dHlwZToiUE9TVCIsPQp1cmw6Y29uZmlnLnJvb3QrImFwaS90b29scyIsZGF0YTpk
YXRhLHN1Y2Nlc3M6ZnVuY3Rpb24oZSl7aWYoIWUub3V0cHV0c3x8ZS49Cm91dHB1dHMubGVuZ3Ro
PTNEPTNEMCl0LnN0YXRlKCJmYWlsZWQiLCJKb2Igc3VibWlzc2lvbiBmYWlsZWQuIE5vIHJlc3Bv
bnNlLj0KIikscyYmcygpO2Vsc2V7by5fcmVmcmVzaEhkYXMoKTt2YXIgbj0zRGUub3V0cHV0c1sw
XTt0LnN0YXRlKCJ3YWl0IiwiWW91ciBqPQpvYiBoYXMgYmVlbiBxdWV1ZWQuIFlvdSBtYXkgY2xv
c2UgdGhlIGJyb3dzZXIgd2luZG93LiBUaGUgam9iIHdpbGwgcnVuIGluIHQ9CmhlIGJhY2tncm91
bmQuIiksdC5zZXQoImRhdGFzZXRfaWRfam9iIixuLmlkKSxvLmFwcC5zdG9yYWdlLnNhdmUoKSxv
Ll93YWl0KD0KdCxpLHMpfX0sZXJyb3I6ZnVuY3Rpb24oZSl7dmFyIG49M0QiIjtlJiZlLm1lc3Nh
Z2UmJmUubWVzc2FnZS5kYXRhJiZlLm1lc3NhPQpnZS5kYXRhLmlucHV0JiYobj0zRGUubWVzc2Fn
ZS5kYXRhLmlucHV0KyIuIiksdC5zdGF0ZSgiZmFpbGVkIiwiVGhpcyB2aXN1YWw9Cml6YXRpb24g
cmVxdWlyZXMgdGhlICdjaGFydHMnIHRvb2wuIFBsZWFzZSBtYWtlIHN1cmUgaXQgaXMgaW5zdGFs
bGVkLiAiK24pLD0KcyYmcygpfX0pfSxfd2FpdDpmdW5jdGlvbih0LG4scil7dmFyIGk9M0R0aGlz
O2UucmVxdWVzdCh7dHlwZToiR0VUIix1cmw6Y29uPQpmaWcucm9vdCsiYXBpL2RhdGFzZXRzLyIr
dC5nZXQoImRhdGFzZXRfaWRfam9iIiksZGF0YTp7fSxzdWNjZXNzOmZ1bmN0aW9uKGU9Cil7dmFy
IHM9M0QhMTtzd2l0Y2goZS5zdGF0ZSl7Y2FzZSJvayI6dC5zdGF0ZSgid2FpdCIsIkpvYiBjb21w
bGV0ZWQgc3VjY2Vzcz0KZnVsbHkuLi4iKSxuJiZuKGUpLHM9M0QhMDticmVhaztjYXNlImVycm9y
Ijp0LnN0YXRlKCJmYWlsZWQiLCJKb2IgaGFzIGZhaWxlPQpkLiBQbGVhc2UgY2hlY2sgdGhlIGhp
c3RvcnkgZm9yIGRldGFpbHMuIiksciYmcihlKSxzPTNEITA7YnJlYWs7Y2FzZSJydW5uaW49Cmci
OnQuc3RhdGUoIndhaXQiLCJZb3VyIGpvYiBpcyBydW5uaW5nLiBZb3UgbWF5IGNsb3NlIHRoZSBi
cm93c2VyIHdpbmRvdy4gVD0KaGUgam9iIHdpbGwgY29udGludWUgaW4gdGhlIGJhY2tncm91bmQu
Iil9c3x8c2V0VGltZW91dChmdW5jdGlvbigpe2kuX3dhaXQoPQp0LG4scil9LGkuYXBwLmNvbmZp
Zy5nZXQoInF1ZXJ5X3RpbWVvdXQiKSl9fSl9LF9yZWZyZXNoSGRhczpmdW5jdGlvbigpe0dhbGE9
Cnh5JiZHYWxheHkuY3Vyckhpc3RvcnlQYW5lbCYmR2FsYXh5LmN1cnJIaXN0b3J5UGFuZWwucmVm
cmVzaENvbnRlbnRzKCl9fSl9KT0KLGRlZmluZSgicGx1Z2luL2xpYnJhcnkvZGF0YXNldHMiLFsi
dXRpbHMvdXRpbHMiXSxmdW5jdGlvbihlKXtyZXR1cm4gQmFja2JvPQpuZS5Db2xsZWN0aW9uLmV4
dGVuZCh7bGlzdDp7fSxjYWNoZTp7fSxpbml0aWFsaXplOmZ1bmN0aW9uKHQsbil7dGhpcy5hcHA9
M0Q9CnQsdGhpcy5vcHRpb25zPTNEZS5tZXJnZShuLHRoaXMub3B0aW9uc0RlZmF1bHQpfSxyZXF1
ZXN0OmZ1bmN0aW9uKGUpe2UuZ3JvdT0KcHM/dGhpcy5fZ2V0X2Jsb2NrcyhlKTp0aGlzLl9nZXRf
ZGF0YXNldChlLmlkLGUuc3VjY2VzcyxlLmVycm9yKX0sX2dldF9ibG9jPQprczpmdW5jdGlvbihl
KXtmdW5jdGlvbiBjKGkpe2wuX2dldChpLGZ1bmN0aW9uKCl7dmFyIHM9M0QhMTtmb3IodmFyIG8g
aW4gZS49Cmdyb3Vwcyl7ZGVzdGluYXRpb25fZ3JvdXA9M0RlLmdyb3Vwc1tvXSxzb3VyY2VfZ3Jv
dXA9M0RpLmdyb3Vwc1tvXSxkZXN0aW5hdD0KaW9uX2dyb3VwLnZhbHVlc3x8KGRlc3RpbmF0aW9u
X2dyb3VwLnZhbHVlcz0zRFtdKSxkZXN0aW5hdGlvbl9ncm91cC52YWx1ZXM9Cj0zRGRlc3RpbmF0
aW9uX2dyb3VwLnZhbHVlcy5jb25jYXQoc291cmNlX2dyb3VwLnZhbHVlcyk7aWYoc291cmNlX2dy
b3VwLnZhbD0KdWVzLmxlbmd0aD0zRD0zRDApe3M9M0QhMDticmVha319aWYoKytmPHUmJiFzKXtu
JiZuKHBhcnNlSW50KGYvdSoxMDApKTt2YXIgPQpsPTNEaS5zdGFydCtyO2k9M0QkLmV4dGVuZCgh
MCxhLHtzdGFydDpsfSksYyhpKX1lbHNlIHQoKX0pfXZhciB0PTNEZS5zdWNjZXM9CnMsbj0zRGUu
cHJvZ3Jlc3Mscj0zRHRoaXMuYXBwLmNvbmZpZy5nZXQoInF1ZXJ5X2xpbWl0IiksaT0zRGUuc3Rh
cnR8fDAscz0zRD0KaStlLnF1ZXJ5X2xpbWl0fHxpK3RoaXMuYXBwLmNvbmZpZy5nZXQoInF1ZXJ5
X2xpbWl0Iiksbz0zRE1hdGguYWJzKHMtaSk7aWYoPQpvPD0zRDApe2NvbnNvbGUuZGVidWcoIkZB
SUxFRCAtIERhdGFzZXRzOjpyZXF1ZXN0KCkgLSBJbnZhbGlkIHF1ZXJ5IHJhbmdlLiI9Cik7cmV0
dXJufXZhciB1PTNETWF0aC5jZWlsKG8vcil8fDEsYT0zRCQuZXh0ZW5kKCEwLHt9LGUpLGY9M0Qw
LGw9M0R0aGlzLGg9Cj0zRCQuZXh0ZW5kKCEwLGEse3N0YXJ0Oml9KTt0aGlzLl9nZXRfZGF0YXNl
dChlLmlkLGZ1bmN0aW9uKCl7YyhoKX0pfSxfZ2V0Xz0KZGF0YXNldDpmdW5jdGlvbih0LG4scil7
dmFyIGk9M0R0aGlzLmxpc3RbdF07aWYoaSl7bihpKTtyZXR1cm59dmFyIHM9M0R0aGlzPQo7ZS5y
ZXF1ZXN0KHt0eXBlOiJHRVQiLHVybDpjb25maWcucm9vdCsiYXBpL2RhdGFzZXRzLyIrdCxzdWNj
ZXNzOmZ1bmN0aW9uKGU9Cil7c3dpdGNoKGUuc3RhdGUpe2Nhc2UiZXJyb3IiOnImJnIoZSk7YnJl
YWs7ZGVmYXVsdDpzLmxpc3RbdF09M0RlLG4oZSl9fX0pfT0KLF9ibG9ja19pZDpmdW5jdGlvbihl
LHQpe3JldHVybiBlLmlkKyJfIitlLnN0YXJ0KyJfIitlLnN0YXJ0K3RoaXMuYXBwLmNvbmZpPQpn
LmdldCgicXVlcnlfbGltaXQiKSsiXyIrdH0sX2dldDpmdW5jdGlvbihlLHQpe2Uuc3RhcnQ9M0Rl
LnN0YXJ0fHwwO3ZhciBuPQo9M0RbXSxyPTNEe30saT0zRDA7Zm9yKHZhciBzIGluIGUuZ3JvdXBz
KXt2YXIgbz0zRGUuZ3JvdXBzW3NdO2Zvcih2YXIgdSBpbiA9Cm8uY29sdW1ucyl7dmFyIGE9M0Rv
LmNvbHVtbnNbdV0uaW5kZXgsZj0zRHRoaXMuX2Jsb2NrX2lkKGUsYSk7aWYodGhpcy5jYWNoZT0K
W2ZdfHxhPTNEPTNEPTNEImF1dG8ifHxhPTNEPTNEPTNEInplcm8iKWNvbnRpbnVlOyFyW2FdJiZh
IT0zRD0zRHVuZGVmaW5lZCYmPQooclthXT0zRGksbi5wdXNoKGEpLGkrKyl9fWlmKG4ubGVuZ3Ro
PTNEPTNEMCl7dGhpcy5fZmlsbF9mcm9tX2NhY2hlKGUpLHQoZSk9CjtyZXR1cm59dmFyIGw9M0R7
ZGF0YXNldF9pZDplLmlkLHN0YXJ0OmUuc3RhcnQsY29sdW1uczpufSxjPTNEdGhpczt0aGlzLl9m
ZT0KdGNoKGwsZnVuY3Rpb24ocil7Zm9yKHZhciBpIGluIHIpe3ZhciBzPTNEbltpXSxvPTNEYy5f
YmxvY2tfaWQoZSxzKTtjLmNhY2hlPQpbb109M0RyW2ldfWMuX2ZpbGxfZnJvbV9jYWNoZShlKSx0
KGUpfSl9LF9maWxsX2Zyb21fY2FjaGU6ZnVuY3Rpb24oZSl7dmFyIHQ9Cj0zRGUuc3RhcnQ7Y29u
c29sZS5kZWJ1ZygiRGF0YXNldHM6Ol9maWxsX2Zyb21fY2FjaGUoKSAtIEZpbGxpbmcgcmVxdWVz
dCBmcj0Kb20gY2FjaGUgYXQgIit0KyIuIik7dmFyIG49M0QwO2Zvcih2YXIgciBpbiBlLmdyb3Vw
cyl7dmFyIGk9M0RlLmdyb3Vwc1tyXTtmPQpvcih2YXIgcyBpbiBpLmNvbHVtbnMpe3ZhciBvPTNE
aS5jb2x1bW5zW3NdLHU9M0R0aGlzLl9ibG9ja19pZChlLG8uaW5kZXgpLGE9Cj0zRHRoaXMuY2Fj
aGVbdV07YSYmKG49M0RNYXRoLm1heChuLGEubGVuZ3RoKSl9fW49M0Q9M0QwJiZjb25zb2xlLmRl
YnVnKCJEYT0KdGFzZXRzOjpfZmlsbF9mcm9tX2NhY2hlKCkgLSBSZWFjaGVkIGRhdGEgcmFuZ2Ug
bGltaXQuIik7Zm9yKHZhciByIGluIGUuZ3JvPQp1cHMpe3ZhciBpPTNEZS5ncm91cHNbcl07aS52
YWx1ZXM9M0RbXTtmb3IodmFyIGY9M0QwO2Y8bjtmKyspaS52YWx1ZXNbZl09M0Q9Cnt4OnBhcnNl
SW50KGYpK3R9fWZvcih2YXIgciBpbiBlLmdyb3Vwcyl7dmFyIGk9M0RlLmdyb3Vwc1tyXTtmb3Io
dmFyIHMgaW4gaT0KLmNvbHVtbnMpe3ZhciBvPTNEaS5jb2x1bW5zW3NdO3N3aXRjaChvLmluZGV4
KXtjYXNlImF1dG8iOmZvcih2YXIgZj0zRDA7ZjxuPQo7ZisrKXt2YXIgbD0zRGkudmFsdWVzW2Zd
O2xbc109M0RwYXJzZUludChmKSt0fWJyZWFrO2Nhc2UiemVybyI6Zm9yKHZhciBmPQo9M0QwO2Y8
bjtmKyspe3ZhciBsPTNEaS52YWx1ZXNbZl07bFtzXT0zRDB9YnJlYWs7ZGVmYXVsdDp2YXIgdT0z
RHRoaXMuX2Jsb2M9CmtfaWQoZSxvLmluZGV4KSxhPTNEdGhpcy5jYWNoZVt1XTtmb3IodmFyIGY9
M0QwO2Y8bjtmKyspe3ZhciBsPTNEaS52YWx1ZXNbZj0KXSxjPTNEYVtmXTtpc05hTihjKSYmIW8u
aXNfbGFiZWwmJihjPTNEMCksbFtzXT0zRGN9fX19fSxfZmV0Y2g6ZnVuY3Rpb24odCxuPQope3Zh
ciByPTNEdC5zdGFydD90LnN0YXJ0OjAsaT0zRHRoaXMuYXBwLmNvbmZpZy5nZXQoInF1ZXJ5X2xp
bWl0Iikscz0zRDA7dC49CmNvbHVtbnMmJihzPTNEdC5jb2x1bW5zLmxlbmd0aCxjb25zb2xlLmRl
YnVnKCJEYXRhc2V0czo6X2ZldGNoKCkgLSBGZXRjaGluZz0KICIrcysiIGNvbHVtbihzKSBhdCAi
K3IrIi4iKSkscz0zRD0zRDAmJmNvbnNvbGUuZGVidWcoIkRhdGFzZXRzOjpfZmV0Y2goKSAtPQog
Tm8gY29sdW1ucyByZXF1ZXN0ZWQiKTt2YXIgbz0zRCIiO2Zvcih2YXIgdSBpbiB0LmNvbHVtbnMp
bys9M0R0LmNvbHVtbnNbdV09CisiLCI7bz0zRG8uc3Vic3RyaW5nKDAsby5sZW5ndGgtMSk7dmFy
IGE9M0R0aGlzO2UucmVxdWVzdCh7dHlwZToiR0VUIix1cmw6Yz0Kb25maWcucm9vdCsiYXBpL2Rh
dGFzZXRzLyIrdC5kYXRhc2V0X2lkLGRhdGE6e2RhdGFfdHlwZToicmF3X2RhdGEiLHByb3ZpZGVy
PQo6ImRhdGFzZXQtY29sdW1uIixsaW1pdDppLG9mZnNldDpyLGluZGVjZXM6b30sc3VjY2Vzczpm
dW5jdGlvbihlKXt2YXIgdD0zRG49CmV3IEFycmF5KHMpO2Zvcih2YXIgcj0zRDA7cjxzO3IrKyl0
W3JdPTNEW107Zm9yKHZhciByIGluIGUuZGF0YSl7dmFyIGk9M0RlLj0KZGF0YVtyXTtmb3IodmFy
IG8gaW4gaSl7dmFyIHU9M0RpW29dO3UhPTNEPTNEdW5kZWZpbmVkJiZ1IT0zRDIxNDc0ODM2NDcm
JnRbPQpvXS5wdXNoKHUpfX1jb25zb2xlLmRlYnVnKCJEYXRhc2V0czo6X2ZldGNoKCkgLSBGZXRj
aGluZyBjb21wbGV0ZS4iKSxuKHQpfX09Cil9fSl9KSxkZWZpbmUoInBsdWdpbi9tb2RlbHMvZ3Jv
dXAiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIEJhY2tib25lLk1vZGVsLmV4dD0KZW5kKHtkZWZhdWx0
czp7a2V5OiJEYXRhIGxhYmVsIixkYXRlOiIifSxyZXNldDpmdW5jdGlvbigpe3RoaXMuY2xlYXIo
e3NpbGVuPQp0OiEwfSkuc2V0KHRoaXMuZGVmYXVsdHMpLHRoaXMudHJpZ2dlcigicmVzZXQiLHRo
aXMpfX0pfSksZGVmaW5lKCJwbHVnaW4vbW89CmRlbHMvZ3JvdXBzIixbInBsdWdpbi9tb2RlbHMv
Z3JvdXAiXSxmdW5jdGlvbihlKXtyZXR1cm4gQmFja2JvbmUuQ29sbGVjdGlvbj0KLmV4dGVuZCh7
bW9kZWw6ZX0pfSksZGVmaW5lKCJwbHVnaW4vbW9kZWxzL2NoYXJ0IixbInBsdWdpbi9tb2RlbHMv
Z3JvdXBzIl0sPQpmdW5jdGlvbihlKXtyZXR1cm4gQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHtkZWZh
dWx0czp7aWQ6bnVsbCx0aXRsZToiIix0eXBlOiI9CiIsZGF0ZTpudWxsLHN0YXRlOiIiLHN0YXRl
X2luZm86IiIsbW9kaWZpZWQ6ITEsZGF0YXNldF9pZDoiIixkYXRhc2V0X2lkX2pvYj0KOiIifSxp
bml0aWFsaXplOmZ1bmN0aW9uKHQpe3RoaXMuZ3JvdXBzPTNEbmV3IGUsdGhpcy5zZXR0aW5ncz0z
RG5ldyBCYWNrYm9uPQplLk1vZGVsfSxyZXNldDpmdW5jdGlvbigpe3RoaXMuY2xlYXIoe3NpbGVu
dDohMH0pLnNldCh0aGlzLmRlZmF1bHRzKSx0aGlzLmc9CnJvdXBzLnJlc2V0KCksdGhpcy5zZXR0
aW5ncy5jbGVhcigpLHRoaXMudHJpZ2dlcigicmVzZXQiLHRoaXMpfSxjb3B5OmZ1bmN0aT0Kb24o
ZSl7dmFyIHQ9M0R0aGlzO3QuY2xlYXIoe3NpbGVudDohMH0pLnNldCh0aGlzLmRlZmF1bHRzKSx0
LnNldChlLmF0dHJpYnV0PQplcyksdC5zZXR0aW5ncz0zRGUuc2V0dGluZ3MuY2xvbmUoKSx0Lmdy
b3Vwcy5yZXNldCgpLGUuZ3JvdXBzLmVhY2goZnVuY3Rpb249CihlKXt0Lmdyb3Vwcy5hZGQoZS5j
bG9uZSgpKX0pLHQudHJpZ2dlcigiY2hhbmdlIix0KX0sc3RhdGU6ZnVuY3Rpb24oZSx0KXt0aD0K
aXMuc2V0KCJzdGF0ZSIsZSksdGhpcy5zZXQoInN0YXRlX2luZm8iLHQpLHRoaXMudHJpZ2dlcigi
c2V0OnN0YXRlIiksY29uc29sPQplLmRlYnVnKCJDaGFydDpzdGF0ZSgpIC0gIit0KyIgKCIrZSsi
KSIpfX0pfSk7dmFyIFZpc3VhbGl6YXRpb249M0RCYWNrYm9uZS49Ck1vZGVsLmV4dGVuZCh7ZGVm
YXVsdHM6e2NvbmZpZzp7fX0sdXJsUm9vdDpmdW5jdGlvbigpe3ZhciBlPTNEIi9hcGkvdmlzdWFs
aT0KemF0aW9ucyI7cmV0dXJuIHdpbmRvdy5nYWxheHlfY29uZmlnJiZnYWxheHlfY29uZmlnLnJv
b3Q/Z2FsYXh5X2NvbmZpZy5yb290PQorZTplfSxpbml0aWFsaXplOmZ1bmN0aW9uKGUpe18uaXNP
YmplY3QoZS5jb25maWcpJiZfLmlzT2JqZWN0KHRoaXMuZGVmYXVsdHM9Ci5jb25maWcpJiZfLmRl
ZmF1bHRzKGUuY29uZmlnLHRoaXMuZGVmYXVsdHMuY29uZmlnKSx0aGlzLl9zZXRVcExpc3RlbmVy
cygpfT0KLF9zZXRVcExpc3RlbmVyczpmdW5jdGlvbigpe30sc2V0OmZ1bmN0aW9uKGUsdCl7aWYo
ZT0zRD0zRD0zRCJjb25maWciKXt2YXIgPQpuPTNEdGhpcy5nZXQoImNvbmZpZyIpO18uaXNPYmpl
Y3QobikmJih0PTNEXy5leHRlbmQoXy5jbG9uZShuKSx0KSl9cmV0dXJuIEI9CmFja2JvbmUuTW9k
ZWwucHJvdG90eXBlLnNldC5jYWxsKHRoaXMsZSx0KSx0aGlzfSx0b1N0cmluZzpmdW5jdGlvbigp
e3ZhciBlPQo9M0R0aGlzLmdldCgiaWQiKXx8IiI7cmV0dXJuIHRoaXMuZ2V0KCJ0aXRsZSIpJiYo
ZSs9M0QiOiIrdGhpcy5nZXQoInRpdGxlIik9CiksIlZpc3VhbGl6YXRpb24oIitlKyIpIn19KSxW
aXN1YWxpemF0aW9uQ29sbGVjdGlvbj0zREJhY2tib25lLkNvbGxlY3Rpb24uZT0KeHRlbmQoe21v
ZGVsOlZpc3VhbGl6YXRpb24sdXJsOmZ1bmN0aW9uKCl7cmV0dXJuIGdhbGF4eV9jb25maWcucm9v
dCsiYXBpL3ZpPQpzdWFsaXphdGlvbnMifSxpbml0aWFsaXplOmZ1bmN0aW9uKGUsdCl7dD0zRHR8
fHt9fSxzZXQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj0KPTNEdGhpcztlPTNEXy5tYXAoZSxmdW5jdGlv
bihlKXt2YXIgdD0zRG4uZ2V0KGUuaWQpO2lmKCF0KXJldHVybiBlO3ZhciByPTNEPQp0LnRvSlNP
TigpO3JldHVybiBfLmV4dGVuZChyLGUpLHJ9KSxCYWNrYm9uZS5Db2xsZWN0aW9uLnByb3RvdHlw
ZS5zZXQuY2FsbCg9CnRoaXMsZSx0KX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm5bIlZpc3Vh
bGl6YXRpb25Db2xsZWN0aW9uKCIsW3RoaXMuaGlzdD0Kb3J5SWQsdGhpcy5sZW5ndGhdLmpvaW4o
KSwiKSJdLmpvaW4oIiIpfX0pO2RlZmluZSgibXZjL3Zpc3VhbGl6YXRpb24vdmlzdWFsPQppemF0
aW9uLW1vZGVsIixmdW5jdGlvbigpe30pLGRlZmluZSgicGx1Z2luL2xpYnJhcnkvc3RvcmFnZSIs
WyJ1dGlscy91dGlscyI9CiwicGx1Z2luL21vZGVscy9jaGFydCIsInBsdWdpbi9tb2RlbHMvZ3Jv
dXAiLCJtdmMvdmlzdWFsaXphdGlvbi92aXN1YWxpemF0aT0Kb24tbW9kZWwiXSxmdW5jdGlvbihl
LHQsbil7cmV0dXJuIEJhY2tib25lLk1vZGVsLmV4dGVuZCh7dmlzOm51bGwsaW5pdGlhbGl6PQpl
OmZ1bmN0aW9uKGUpe3RoaXMuYXBwPTNEZSx0aGlzLmNoYXJ0PTNEdGhpcy5hcHAuY2hhcnQsdGhp
cy5vcHRpb25zPTNEdGhpcy49CmFwcC5vcHRpb25zLHRoaXMuaWQ9M0R0aGlzLm9wdGlvbnMuaWQs
dGhpcy52aXM9M0RuZXcgVmlzdWFsaXphdGlvbih7dHlwZToiYz0KaGFydHMiLGNvbmZpZzp7ZGF0
YXNldF9pZDp0aGlzLm9wdGlvbnMuY29uZmlnLmRhdGFzZXRfaWQsY2hhcnRfZGljdDp7fX19KSx0
PQpoaXMuaWQmJih0aGlzLnZpcy5pZD0zRHRoaXMuaWQpO3ZhciB0PTNEdGhpcy5vcHRpb25zLmNv
bmZpZy5jaGFydF9kaWN0O3QmJig9CnRoaXMudmlzLmdldCgiY29uZmlnIikuY2hhcnRfZGljdD0z
RHQpfSxzYXZlOmZ1bmN0aW9uKCl7dmFyIGU9M0R0aGlzLmFwcC5jaD0KYXJ0O3RoaXMudmlzLmdl
dCgiY29uZmlnIikuY2hhcnRfZGljdD0zRHt9O3ZhciB0PTNEZS5nZXQoInRpdGxlIik7dCE9M0Qi
IiYmPQp0aGlzLnZpcy5zZXQoInRpdGxlIix0KTt2YXIgbj0zRHthdHRyaWJ1dGVzOmUuYXR0cmli
dXRlcyxzZXR0aW5nczplLnNldHRpbmc9CnMuYXR0cmlidXRlcyxncm91cHM6W119O2UuZ3JvdXBz
LmVhY2goZnVuY3Rpb24oZSl7bi5ncm91cHMucHVzaChlLmF0dHJpYnV0ZT0Kcyl9KSx0aGlzLnZp
cy5nZXQoImNvbmZpZyIpLmNoYXJ0X2RpY3Q9M0RuO3ZhciByPTNEdGhpczt0aGlzLnZpcy5zYXZl
KCkuZmFpPQpsKGZ1bmN0aW9uKGUsdCxuKXtjb25zb2xlLmVycm9yKGUsdCxuKX0pLnRoZW4oZnVu
Y3Rpb24oZSl7ZSYmZS5pZCYmKHIuaWQ9M0Q9CmUuaWQpfSl9LGxvYWQ6ZnVuY3Rpb24oKXt2YXIg
ZT0zRHRoaXMudmlzLmdldCgiY29uZmlnIikuY2hhcnRfZGljdDtpZighZS5hdD0KdHJpYnV0ZXMp
cmV0dXJuITE7dmFyIHQ9M0RlLmF0dHJpYnV0ZXMudHlwZTtpZighdClyZXR1cm4gY29uc29sZS5k
ZWJ1ZygiU3RvPQpyYWdlOjpsb2FkKCkgLSBDaGFydCB0eXBlIG5vdCBwcm92aWRlZC4gSW52YWxp
ZCBmb3JtYXQuIiksITE7dmFyIHI9M0R0aGlzLmE9CnBwLnR5cGVzLmdldCh0KTtpZighcilyZXR1
cm4gY29uc29sZS5kZWJ1ZygiU3RvcmFnZTo6bG9hZCgpIC0gQ2hhcnQgdHlwZSBubz0KdCBzdXBw
b3J0ZWQuIFBsZWFzZSByZS1jb25maWd1cmUgdGhlIGNoYXJ0LiBSZXNldHRpbmcgY2hhcnQuIiks
ITE7Y29uc29sZS5kPQplYnVnKCJTdG9yYWdlOjpsb2FkKCkgLSBMb2FkaW5nIGNoYXJ0IHR5cGUg
Iit0KyIuIiksdGhpcy5jaGFydC5kZWZpbml0aW9uPQo9M0RyLHRoaXMuY2hhcnQuc2V0KGUuYXR0
cmlidXRlcyksdGhpcy5jaGFydC5zdGF0ZSgib2siLCJMb2FkaW5nIHNhdmVkIHZpc3U9CmFsaXph
dGlvbi4uLiIpLHRoaXMuY2hhcnQuc2V0dGluZ3Muc2V0KGUuc2V0dGluZ3MpO2Zvcih2YXIgaSBp
biBlLmdyb3Vwcyl0aD0KaXMuY2hhcnQuZ3JvdXBzLmFkZChuZXcgbihlLmdyb3Vwc1tpXSkpO3Jl
dHVybiB0aGlzLmNoYXJ0LnNldCgibW9kaWZpZWQiLCExPQopLCEwfX0pfSksZGVmaW5lKCJ1dGls
cy9kZWZlcnJlZCIsWyJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGUpe3JldHVybiBCYWNrYm89Cm5l
Lk1vZGVsLmV4dGVuZCh7cXVldWU6W10scHJvY2Vzczp7fSxjb3VudGVyOjAsaW5pdGlhbGl6ZTpm
dW5jdGlvbigpe3RoaXMubz0KbigicmVmcmVzaCIsZnVuY3Rpb24oKXtpZih0aGlzLnF1ZXVlLmxl
bmd0aD4wJiZ0aGlzLnJlYWR5KCkpe3ZhciBlPTNEdGhpcy5xPQp1ZXVlWzBdO3RoaXMucXVldWUu
c3BsaWNlKDAsMSksZSYmZSgpfX0pfSxleGVjdXRlOmZ1bmN0aW9uKGUpe3RoaXMucXVldWUucHU9
CnNoKGUpLHRoaXMudHJpZ2dlcigicmVmcmVzaCIpfSxyZWdpc3RlcjpmdW5jdGlvbigpe3ZhciB0
PTNEZS51dWlkKCk7cmV0dXJuID0KdGhpcy5wcm9jZXNzW3RdPTNEITAsdGhpcy5jb3VudGVyKyss
Y29uc29sZS5kZWJ1ZygiRGVmZXJyZWQ6cmVnaXN0ZXIoKSAtIFJlPQpnaXN0ZXJpbmcgIit0KSx0
fSxkb25lOmZ1bmN0aW9uKGUpe3RoaXMucHJvY2Vzc1tlXSYmKGRlbGV0ZSB0aGlzLnByb2Nlc3Nb
ZV09Cix0aGlzLmNvdW50ZXItLSxjb25zb2xlLmRlYnVnKCJEZWZlcnJlZDpkb25lKCkgLSBVbnJl
Z2lzdGVyaW5nICIrZSksdGhpcy50cj0KaWdnZXIoInJlZnJlc2giKSl9LHJlc2V0OmZ1bmN0aW9u
KCl7dGhpcy5xdWV1ZT0zRFtdfSxyZWFkeTpmdW5jdGlvbigpe3JldHVyPQpuIHRoaXMuY291bnRl
cj0zRD0zRDB9fSl9KSxkZWZpbmUoInBsdWdpbi92aWV3cy92aWV3cG9ydCIsWyJtdmMvdWkvdWkt
cG9ydGw9CmV0IiwibXZjL3VpL3VpLW1pc2MiLCJ1dGlscy91dGlscyJdLGZ1bmN0aW9uKGUsdCxu
KXtyZXR1cm4gQmFja2JvbmUuVmlldy5leD0KdGVuZCh7Y29udGFpbmVyX2xpc3Q6W10sY2FudmFz
X2xpc3Q6W10saW5pdGlhbGl6ZTpmdW5jdGlvbihlLHQpe3RoaXMuYXBwPTNEPQplLHRoaXMuY2hh
cnQ9M0R0aGlzLmFwcC5jaGFydCx0aGlzLm9wdGlvbnM9M0RuLm1lcmdlKHQsdGhpcy5vcHRpb25z
RGVmYXVsdCk9Cix0aGlzLnNldEVsZW1lbnQoJCh0aGlzLl90ZW1wbGF0ZSgpKSksdGhpcy5fZnVs
bHNjcmVlbih0aGlzLiRlbCwxMDApO3ZhciByPQo9M0QkKCJib2R5IikuY3NzKCJvdmVyZmxvdyIp
O3RoaXMuJGVsLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7JCgiYm9keSIpLmM9CnNzKCJvdmVy
ZmxvdyIsImhpZGRlbiIpfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbigpeyQoImJvZHkiKS5jc3Mo
Im92ZXJmbG93Ij0KLHIpfSksdGhpcy5fY3JlYXRlQ29udGFpbmVyKCJkaXYiKTt2YXIgaT0zRHRo
aXM7dGhpcy5jaGFydC5vbigicmVkcmF3IixmdW5jPQp0aW9uKCl7aS5fZHJhdyhpLmNoYXJ0KX0p
LHRoaXMuY2hhcnQub24oInNldDpzdGF0ZSIsZnVuY3Rpb24oKXt2YXIgZT0zRGkuJGU9CmwuZmlu
ZCgiI2luZm8iKSx0PTNEaS4kZWwuZmluZCgiLmNoYXJ0cy12aWV3cG9ydC1jb250YWluZXIiKSxu
PTNEZS5maW5kKCIjaT0KY29uIik7bi5yZW1vdmVDbGFzcygpLGUuc2hvdygpLGUuZmluZCgiI3Rl
eHQiKS5odG1sKGkuY2hhcnQuZ2V0KCJzdGF0ZV9pbmZvPQoiKSk7dmFyIHI9M0RpLmNoYXJ0Lmdl
dCgic3RhdGUiKTtzd2l0Y2gocil7Y2FzZSJvayI6ZS5oaWRlKCksdC5zaG93KCk7YnJlYWs9Cjtj
YXNlImZhaWxlZCI6bi5hZGRDbGFzcygiaWNvbiBmYSBmYS13YXJuaW5nIiksdC5oaWRlKCk7YnJl
YWs7ZGVmYXVsdDpuLmFkZD0KQ2xhc3MoImljb24gZmEgZmEtc3Bpbm5lciBmYS1zcGluIiksdC5z
aG93KCl9fSl9LHNob3c6ZnVuY3Rpb24oKXt0aGlzLiRlbC5zPQpob3coKX0saGlkZTpmdW5jdGlv
bigpe3RoaXMuJGVsLmhpZGUoKX0sX2Z1bGxzY3JlZW46ZnVuY3Rpb24oZSx0KXtlLmNzcygiaGU9
CmlnaHQiLCQod2luZG93KS5oZWlnaHQoKS10KSwkKHdpbmRvdykucmVzaXplKGZ1bmN0aW9uKCl7
ZS5jc3MoImhlaWdodCIsJCh3aT0KbmRvdykuaGVpZ2h0KCktdCl9KX0sX2NyZWF0ZUNvbnRhaW5l
cjpmdW5jdGlvbihlLHQpe3Q9M0R0fHwxO2Zvcih2YXIgbiBpbiB0PQpoaXMuY29udGFpbmVyX2xp
c3QpdGhpcy5jb250YWluZXJfbGlzdFtuXS5yZW1vdmUoKTt0aGlzLmNvbnRhaW5lcl9saXN0PTNE
W109Cix0aGlzLmNhbnZhc19saXN0PTNEW107Zm9yKHZhciBuPTNEMDtuPHQ7bisrKXt2YXIgcj0z
RCQodGhpcy5fdGVtcGxhdGVDb250YT0KaW5lcihlLHBhcnNlSW50KDEwMC90KSkpO3RoaXMuJGVs
LmFwcGVuZChyKSx0aGlzLmNvbnRhaW5lcl9saXN0W25dPTNEcix0aGlzPQouY2FudmFzX2xpc3Rb
bl09M0RyLmZpbmQoIi5jaGFydHMtdmlld3BvcnQtY2FudmFzIikuYXR0cigiaWQiKX19LF9kcmF3
OmZ1bmM9CnRpb24oZSl7dmFyIHQ9M0R0aGlzLG49M0R0aGlzLmFwcC5kZWZlcnJlZC5yZWdpc3Rl
cigpLHI9M0RlLmdldCgidHlwZSIpO3RoaT0Kcy5jaGFydF9kZWZpbml0aW9uPTNEZS5kZWZpbml0
aW9uO3ZhciBpPTNEMTtlLnNldHRpbmdzLmdldCgidXNlX3BhbmVscyIpPTNEPQo9M0Q9M0QidHJ1
ZSImJihpPTNEZS5ncm91cHMubGVuZ3RoKSx0aGlzLl9jcmVhdGVDb250YWluZXIodGhpcy5jaGFy
dF9kZWZpbmk9CnRpb24udGFnLGkpLGUuc3RhdGUoIndhaXQiLCJQbGVhc2Ugd2FpdC4uLiIpO2lm
KCF0aGlzLmNoYXJ0X2RlZmluaXRpb24uZXhlYz0KdXRlfHx0aGlzLmNoYXJ0X2RlZmluaXRpb24u
ZXhlY3V0ZSYmZS5nZXQoIm1vZGlmaWVkIikpdGhpcy5hcHAuam9icy5jbGVhbnVwPQooZSksZS5z
ZXQoIm1vZGlmaWVkIiwhMSk7dmFyIHQ9M0R0aGlzO3JlcXVpcmUoWyJwbHVnaW4vY2hhcnRzLyIr
dGhpcy5hcHAuY2g9CmFydFBhdGgocikrIi93cmFwcGVyIl0sZnVuY3Rpb24ocil7aWYodC5jaGFy
dF9kZWZpbml0aW9uLmV4ZWN1dGUpdC5hcHAuam9icz0KLnJlcXVlc3QoZSx0Ll9kZWZhdWx0U2V0
dGluZ3NTdHJpbmcoZSksdC5fZGVmYXVsdFJlcXVlc3RTdHJpbmcoZSksZnVuY3Rpb24oPQope3Zh
ciBpPTNEbmV3IHIodC5hcHAse3Byb2Nlc3NfaWQ6bixjaGFydDplLHJlcXVlc3RfZGljdGlvbmFy
eTp0Ll9kZWZhdWx0UmU9CnF1ZXN0RGljdGlvbmFyeShlKSxjYW52YXNfbGlzdDp0LmNhbnZhc19s
aXN0fSl9LGZ1bmN0aW9uKCl7dGhpcy5hcHAuZGVmZXJyZT0KZC5kb25lKG4pfSk7ZWxzZSB2YXIg
aT0zRG5ldyByKHQuYXBwLHtwcm9jZXNzX2lkOm4sY2hhcnQ6ZSxyZXF1ZXN0X2RpY3Rpb25hPQpy
eTp0Ll9kZWZhdWx0UmVxdWVzdERpY3Rpb25hcnkoZSksY2FudmFzX2xpc3Q6dC5jYW52YXNfbGlz
dH0pfSl9LF9kZWZhdWx0UmU9CnF1ZXN0U3RyaW5nOmZ1bmN0aW9uKGUpe3ZhciB0PTNEIiIsbj0z
RDAscj0zRHRoaXM7cmV0dXJuIGUuZ3JvdXBzLmVhY2goZnVuYz0KdGlvbihlKXtuKys7Zm9yKHZh
ciBpIGluIHIuY2hhcnRfZGVmaW5pdGlvbi5jb2x1bW5zKXQrPTNEaSsiXyIrbisiOiIrKHBhcnNl
PQpJbnQoZS5nZXQoaSkpKzEpKyIsICJ9KSx0LnN1YnN0cmluZygwLHQubGVuZ3RoLTIpfSxfZGVm
YXVsdFNldHRpbmdzU3RyaW5nOmY9CnVuY3Rpb24oZSl7dmFyIHQ9M0QiIjtmb3Ioa2V5IGluIGUu
c2V0dGluZ3MuYXR0cmlidXRlcyl0Kz0zRGtleSsiOiIrZS5zZXR0aT0KbmdzLmdldChrZXkpKyIs
ICI7cmV0dXJuIHQuc3Vic3RyaW5nKDAsdC5sZW5ndGgtMil9LF9kZWZhdWx0UmVxdWVzdERpY3Rp
b25hPQpyeTpmdW5jdGlvbihlKXt2YXIgdD0zRHtncm91cHM6W119O3RoaXMuY2hhcnRfZGVmaW5p
dGlvbi5leGVjdXRlP3QuaWQ9M0RlLmc9CmV0KCJkYXRhc2V0X2lkX2pvYiIpOnQuaWQ9M0RlLmdl
dCgiZGF0YXNldF9pZCIpO3ZhciByPTNEMCxpPTNEdGhpcztyZXR1cm4gZT0KLmdyb3Vwcy5lYWNo
KGZ1bmN0aW9uKGUpe3ZhciBzPTNEe307Zm9yKHZhciBvIGluIGkuY2hhcnRfZGVmaW5pdGlvbi5j
b2x1bW5zPQope3ZhciB1PTNEaS5jaGFydF9kZWZpbml0aW9uLmNvbHVtbnNbb107c1tvXT0zRG4u
bWVyZ2Uoe2luZGV4OmUuZ2V0KG8pfSx1KX09CnQuZ3JvdXBzLnB1c2goe2tleTorK3IrIjoiK2Uu
Z2V0KCJrZXkiKSxjb2x1bW5zOnN9KX0pLHR9LF90ZW1wbGF0ZTpmdW5jdGlvbj0KKCl7cmV0dXJu
JzxkaXYgY2xhc3M9M0QiY2hhcnRzLXZpZXdwb3J0Ij48ZGl2IGlkPTNEImluZm8iIGNsYXNzPTNE
ImluZm8iPjxzPQpwYW4gaWQ9M0QiaWNvbiIgY2xhc3M9M0QiaWNvbiIvPjxzcGFuIGlkPTNEInRl
eHQiIGNsYXNzPTNEInRleHQiIC8+PC9kaXY+PC89CmRpdj4nfSxfdGVtcGxhdGVDb250YWluZXI6
ZnVuY3Rpb24oZSx0KXtyZXR1cm4nPGRpdiBjbGFzcz0zRCJjaGFydHMtdmlld3Bvcj0KdC1jb250
YWluZXIiIHN0eWxlPTNEIndpZHRoOicrdCsnJTsiPicrJzxkaXYgaWQ9M0QibWVudSIvPicrIjwi
K2UrJyBpZD0zRCInPQorbi51dWlkKCkrJyIgY2xhc3M9M0QiY2hhcnRzLXZpZXdwb3J0LWNhbnZh
cyI+JysiPC9kaXY+In19KX0pLGRlZmluZSgicGx1Z2k9Cm4vbGlicmFyeS9zY3JlZW5zaG90Iixb
ImxpYnMvdW5kZXJzY29yZSJdLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoZSl7ZS4kZWwuZj0KaW5k
KCJzdmciKS5sZW5ndGg+MD9yKGUpOm4oZSl9ZnVuY3Rpb24gbihlKXt0cnl7dmFyIHQ9M0RlLiRl
bC5maW5kKCIuanFwbG90PQotdGFyZ2V0Iiksbj0zRHQuanFwbG90VG9JbWFnZVN0cih7fSk7biYm
KHdpbmRvdy5sb2NhdGlvbi5ocmVmPTNEbi5yZXBsYWNlKCI9CmltYWdlL3BuZyIsImltYWdlL29j
dGV0LXN0cmVhbSIpKX1jYXRjaChyKXtjb25zb2xlLmRlYnVnKCJGQUlMRUQgLSBTY3JlZW5zaD0K
b3Q6Ol9mcm9tQ2FudmFzKCkgLSAiK3IpLGUuZXJyb3ImJmUuZXJyb3IoIlBsZWFzZSByZWR1Y2Ug
eW91ciBjaGFydCB0byBhIHNpPQpuZ2xlIHBhbmVsIGFuZCB0cnkgYWdhaW4uIil9fWZ1bmN0aW9u
IHIoZSl7dmFyIHQ9M0RlLiRlbCxuPTNEZS51cmwscj0zRGUubmE9Cm1lLHM9M0RuZXcgWE1MU2Vy
aWFsaXplcixvPTNEZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIiksdT0zRCQobyksYT0z
RD0KdC5maW5kKCJzdmciKS5sZW5ndGgsZj0zRHQuZmluZCgic3ZnIikuZmlyc3QoKSxsPTNEcGFy
c2VJbnQoZi5jc3MoImhlaWdodCIpPQopLGM9M0RwYXJzZUludChmLmNzcygid2lkdGgiKSk7dS5h
dHRyKCJ3aWR0aCIsYyphKSx1LmF0dHIoImhlaWdodCIsbCksKCFvLmc9CmV0Q29udGV4dHx8IW8u
Z2V0Q29udGV4dCgiMmQiKSkmJmFsZXJ0KCJZb3VyIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IHRo
aXMgZj0KZWF0dXJlLCBwbGVhc2UgdXNlIGEgbW9kZXJuIGJyb3dzZXIiKTt2YXIgaD0zRG8uZ2V0
Q29udGV4dCgiMmQiKSxwPTNEMDt0LmZpPQpuZCgic3ZnIikuZWFjaChmdW5jdGlvbigpe3ZhciBl
PTNEJCh0aGlzKTtlLmF0dHIoe3ZlcnNpb246IjEuMSIseG1sbnM6Imh0dHA9CjovL3d3dy53My5v
cmcvMjAwMC9zdmciLHdpZHRoOmMsaGVpZ2h0Omx9KTt2YXIgdD0zRHMuc2VyaWFsaXplVG9TdHJp
bmcodGhpcz0KKTtoLmRyYXdTdmcodCxwLDAsYyxsKSxwKz0zRGN9KSx3aW5kb3cubG9jYXRpb24u
aHJlZj0zRGkobyxvLmdldENvbnRleHQoIjJkPQoiKSwid2hpdGUiKS5yZXBsYWNlKCJpbWFnZS9w
bmciLCJpbWFnZS9vY3RldC1zdHJlYW0iKX1mdW5jdGlvbiBpKGUsdCxuKXt2YXI9CiByPTNEZS53
aWR0aCxpPTNEZS5oZWlnaHQscztpZihuKXtzPTNEdC5nZXRJbWFnZURhdGEoMCwwLHIsaSk7dmFy
IG89M0R0Lmdsbz0KYmFsQ29tcG9zaXRlT3BlcmF0aW9uO3QuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0
aW9uPTNEImRlc3RpbmF0aW9uLW92ZXIiLHQuZmlsPQpsU3R5bGU9M0RuLHQuZmlsbFJlY3QoMCww
LHIsaSl9dmFyIHU9M0RlLnRvRGF0YVVSTCgiaW1hZ2UvcG5nIik7cmV0dXJuIG4mJig9CnQuY2xl
YXJSZWN0KDAsMCxyLGkpLHQucHV0SW1hZ2VEYXRhKHMsMCwwKSx0Lmdsb2JhbENvbXBvc2l0ZU9w
ZXJhdGlvbj0zRG8pLD0KdX1mdW5jdGlvbiBzKGUpe3dpbmRvdy5sb2NhdGlvbi5ocmVmPTNEImRh
dGE6bm9uZS9ub25lO2Jhc2U2NCwiK2J0b2EoYShlKS5zPQp0cmluZyl9ZnVuY3Rpb24gbyhlKXtm
b3IodmFyIHQgaW4gZG9jdW1lbnQuc3R5bGVTaGVldHMpe3ZhciBuPTNEZG9jdW1lbnQuc3Q9Cnls
ZVNoZWV0c1t0XSxyPTNEbi5jc3NSdWxlcztpZihyKWZvcih2YXIgaT0zRDAscz0zRHIubGVuZ3Ro
O2k8cztpKyspdHJ5e2UuZj0KaW5kKHJbaV0uc2VsZWN0b3JUZXh0KS5lYWNoKGZ1bmN0aW9uKGUs
dCl7dC5zdHlsZS5jc3NUZXh0Kz0zRHJbaV0uc3R5bGUuY3NzPQpUZXh0fSl9Y2F0Y2gobyl7fX19
ZnVuY3Rpb24gdShlKXt2YXIgdD0zRGEoZSksbj0zRHtmaWxlbmFtZTpuYW1lfHwiY2hhcnQiLHQ9
CnlwZToiYXBwbGljYXRpb24vcGRmIixoZWlnaHQ6dC5oZWlnaHQsd2lkdGg6dC53aWR0aCxzY2Fs
ZToyLHN2Zzp0LnN0cmluZ30scj0KPTNEJCgiYm9keSIpLGk9M0RyLmZpbmQoIiN2aWV3cG9ydC1m
b3JtIik7aS5sZW5ndGg9M0Q9M0Q9M0QwJiYoaT0zRCQoIjxmb3JtPQo+Iix7aWQ6InZpZXdwb3J0
LWZvcm0iLG1ldGhvZDoicG9zdCIsYWN0aW9uOiJodHRwOi8vZXhwb3J0LmhpZ2hjaGFydHMuY29t
LyI9CixkaXNwbGF5OiJub25lIn0pLHIuYXBwZW5kKGkpKSxpLmVtcHR5KCk7Zm9yKG5hbWUgaW4g
bil7dmFyIHM9M0QkKCI8aW5wdXQvPj0KIix7dHlwZToiaGlkZGVuIixuYW1lOm5hbWUsdmFsdWU6
bltuYW1lXX0pO2kuYXBwZW5kKHMpfXRyeXtpLnN1Ym1pdCgpfWNhdGNoPQoobyl7Y29uc29sZS5s
b2cobyl9fWZ1bmN0aW9uIGEoZSl7aWYoZS4kZWwuZmluZCgic3ZnIikubGVuZ3RoPTNEPTNEMCYm
ZS5lcnI9Cm9yKXtlLmVycm9yKCJObyBTVkcgZm91bmQuIFRoaXMgY2hhcnQgdHlwZSBkb2VzIG5v
dCBzdXBwb3J0IFNWRy9QREYgZXhwb3J0Lj0KIik7cmV0dXJufXZhciB0PTNEZS4kZWwsbj0zRHQu
ZmluZCgic3ZnIikubGVuZ3RoLHI9M0RwYXJzZUludCh0LmZpbmQoInN2ZyIpPQouZmlyc3QoKS5j
c3MoImhlaWdodCIpKSxpPTNEcGFyc2VJbnQodC5maW5kKCJzdmciKS5maXJzdCgpLmNzcygid2lk
dGgiKSkscz0KPTNEbmV3IFhNTFNlcmlhbGl6ZXIsdT0zRCQoIjxzdmcvPiIpO3UuYXR0cih7dmVy
c2lvbjoiMS4xIix4bWxuczoiaHR0cDovL3d3PQp3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6aSpu
LGhlaWdodDpyfSk7dmFyIGE9M0QiIixmPTNEMDtyZXR1cm4gdC5maW5kKCJzdmc9CiIpLmVhY2go
ZnVuY3Rpb24oKXt2YXIgZT0zRCQodGhpcykuY2xvbmUoKTtvKGUpO3ZhciB0PTNEJCgnPGcgdHJh
bnNmb3JtPTNEIj0KdHJhbnNsYXRlKCcrZisnLCAwKSI+Jyk7dC5hcHBlbmQoZS5maW5kKCJnIiku
Zmlyc3QoKSksdS5hcHBlbmQodCksZis9M0RpfSksPQp7c3RyaW5nOnMuc2VyaWFsaXplVG9TdHJp
bmcodVswXSksaGVpZ2h0OnIsd2lkdGg6aX19cmV0dXJue2NyZWF0ZVBORzp0LGNyZWE9CnRlU1ZH
OnMsY3JlYXRlUERGOnV9fSksZGVmaW5lKCJwbHVnaW4vdmlld3Mvdmlld2VyIixbInV0aWxzL3V0
aWxzIiwibXZjL3VpLz0KdWktbWlzYyIsIm12Yy91aS91aS1wb3J0bGV0IiwicGx1Z2luL3ZpZXdz
L3ZpZXdwb3J0IiwicGx1Z2luL2xpYnJhcnkvc2NyZWVuPQpzaG90Il0sZnVuY3Rpb24oZSx0LG4s
cixpKXtyZXR1cm4gQmFja2JvbmUuVmlldy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb249Cihl
LHMpe3RoaXMuYXBwPTNEZSx0aGlzLmNoYXJ0PTNEdGhpcy5hcHAuY2hhcnQsdGhpcy52aWV3cG9y
dF92aWV3PTNEbmV3IHIoZT0KKTt2YXIgbz0zRHRoaXM7dGhpcy5tZXNzYWdlPTNEbmV3IHQuTWVz
c2FnZTt2YXIgdT0zRG5ldyB0LkJ1dHRvbk1lbnUoe2ljb246PQoiZmEtY2FtZXJhIix0aXRsZToi
U2NyZWVuc2hvdCIsdG9vbHRpcDoiRG93bmxvYWQgYXMgUE5HLCBTVkcgb3IgUERGIGZpbGUifSk9
Cjt1LmFkZE1lbnUoe2lkOiJidXR0b24tcG5nIix0aXRsZToiU2F2ZSBhcyBQTkciLGljb246ImZh
LWZpbGUiLG9uY2xpY2s6ZnVuYz0KdGlvbigpe28uX3dhaXQoby5jaGFydCxmdW5jdGlvbigpe2ku
Y3JlYXRlUE5HKHskZWw6by52aWV3cG9ydF92aWV3LiRlbCx0aXRsPQplOm8uY2hhcnQuZ2V0KCJ0
aXRsZSIpLGVycm9yOmZ1bmN0aW9uKGUpe28ubWVzc2FnZS51cGRhdGUoe21lc3NhZ2U6ZSxzdGF0
dXM9CjoiZGFuZ2VyIn0pfX0pfSl9fSksdS5hZGRNZW51KHtpZDoiYnV0dG9uLXN2ZyIsdGl0bGU6
IlNhdmUgYXMgU1ZHIixpY29uOiJmYT0KLWZpbGUtdGV4dC1vIixvbmNsaWNrOmZ1bmN0aW9uKCl7
by5fd2FpdChvLmNoYXJ0LGZ1bmN0aW9uKCl7aS5jcmVhdGVTVkcoeyRlPQpsOm8udmlld3BvcnRf
dmlldy4kZWwsdGl0bGU6by5jaGFydC5nZXQoInRpdGxlIiksZXJyb3I6ZnVuY3Rpb24oZSl7by5t
ZXNzYWc9CmUudXBkYXRlKHttZXNzYWdlOmUsc3RhdHVzOiJkYW5nZXIifSl9fSl9KX19KSx1LmFk
ZE1lbnUoe2lkOiJidXR0b24tcG5nIix0aT0KdGxlOiJTYXZlIGFzIFBERiIsaWNvbjoiZmEtZmls
ZS1vIixvbmNsaWNrOmZ1bmN0aW9uKCl7by5hcHAubW9kYWwuc2hvdyh7dGl0PQpsZToiU2VuZCBj
aGFydCBkYXRhIGZvciBQREYgY3JlYXRpb24iLGJvZHk6IkdhbGF4eSBkb2VzIG5vdCBwcm92aWRl
IGludGVncmE9CnRlZCBQREYgZXhwb3J0IHNjcmlwdHMuIFlvdSBtYXkgY2xpY2sgJ0NvbnRpbnVl
JyB0byBjcmVhdGUgdGhlIFBERiBieSB1c2luZz0KIGEgM3JkIHBhcnR5IHNlcnZpY2UgKGh0dHBz
Oi8vZXhwb3J0LmhpZ2hjaGFydHMuY29tKS4iLGJ1dHRvbnM6e0NhbmNlbDpmdW5jPQp0aW9uKCl7
by5hcHAubW9kYWwuaGlkZSgpfSxDb250aW51ZTpmdW5jdGlvbigpe28uYXBwLm1vZGFsLmhpZGUo
KSxvLl93YWl0KG89Ci5jaGFydCxmdW5jdGlvbigpe2kuY3JlYXRlUERGKHskZWw6by52aWV3cG9y
dF92aWV3LiRlbCx0aXRsZTpvLmNoYXJ0LmdldCgidD0KaXRsZSIpLGVycm9yOmZ1bmN0aW9uKGUp
e28ubWVzc2FnZS51cGRhdGUoe21lc3NhZ2U6ZSxzdGF0dXM6ImRhbmdlciJ9KX19KX0pPQp9fX0p
fX0pLHRoaXMucG9ydGxldD0zRG5ldyBuLlZpZXcoe2ljb246ImZhLWJhci1jaGFydC1vIix0aXRs
ZToiVmlld3BvcnQiLG89CnBlcmF0aW9uczp7ZWRpdF9idXR0b246bmV3IHQuQnV0dG9uSWNvbih7
aWNvbjoiZmEtZWRpdCIsdG9vbHRpcDoiQ3VzdG9taXplID0KdGhpcyBjaGFydCIsdGl0bGU6IkVk
aXRvciIsb25jbGljazpmdW5jdGlvbigpe28uX3dhaXQoby5jaGFydCxmdW5jdGlvbigpe28uPQph
cHAuZ28oImVkaXRvciIpfSl9fSkscGljdHVyZV9idXR0b25fbWVudTp1fX0pLHRoaXMucG9ydGxl
dC5hcHBlbmQodGhpcy5tZXM9CnNhZ2UuJGVsKSx0aGlzLnBvcnRsZXQuYXBwZW5kKHRoaXMudmll
d3BvcnRfdmlldy4kZWwpLHRoaXMuc2V0RWxlbWVudCh0aGlzLj0KcG9ydGxldC4kZWwpO3ZhciBv
PTNEdGhpczt0aGlzLmNoYXJ0Lm9uKCJjaGFuZ2U6dGl0bGUiLGZ1bmN0aW9uKCl7by5fcmVmcmVz
PQpoVGl0bGUoKX0pfSxzaG93OmZ1bmN0aW9uKCl7dGhpcy4kZWwuc2hvdygpLCQod2luZG93KS50
cmlnZ2VyKCJyZXNpemUiKX0saGk9CmRlOmZ1bmN0aW9uKCl7dGhpcy4kZWwuaGlkZSgpfSxfcmVm
cmVzaFRpdGxlOmZ1bmN0aW9uKCl7dmFyIGU9M0R0aGlzLmNoYXJ0Lj0KZ2V0KCJ0aXRsZSIpO3Ro
aXMucG9ydGxldC50aXRsZShlKX0sX3dhaXQ6ZnVuY3Rpb24oZSx0KXt0aGlzLmFwcC5kZWZlcnJl
ZC5yPQplYWR5KCk/dCgpOnRoaXMubWVzc2FnZS51cGRhdGUoe21lc3NhZ2U6IllvdXIgY2hhcnQg
aXMgY3VycmVudGx5IGJlaW5nIHByb2M9CmVzc2VkLiBQbGVhc2Ugd2FpdCBhbmQgdHJ5IGFnYWlu
LiJ9KX19KX0pLGRlZmluZSgibXZjL3VpL3VpLXRhYnMiLFsidXRpbHMvdT0KdGlscyJdLGZ1bmN0
aW9uKGUpe3ZhciB0PTNEQmFja2JvbmUuVmlldy5leHRlbmQoe29wdGlvbnNEZWZhdWx0Ont0aXRs
ZV9uZXc6PQoiIixvcGVyYXRpb25zOm51bGwsb25uZXc6bnVsbCxtYXg6bnVsbCxvbmNoYW5nZTpu
dWxsfSxpbml0aWFsaXplOmZ1bmN0aW9uKHQ9Cil7dGhpcy52aXNpYmxlPTNEITEsdGhpcy4kbmF2
PTNEbnVsbCx0aGlzLiRjb250ZW50PTNEbnVsbCx0aGlzLmZpcnN0X3RhYj0zRD0KbnVsbCx0aGlz
LmN1cnJlbnRfaWQ9M0RudWxsLHRoaXMub3B0aW9ucz0zRGUubWVyZ2UodCx0aGlzLm9wdGlvbnNE
ZWZhdWx0KTt2PQphciBuPTNEJCh0aGlzLl90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKTt0aGlzLiRu
YXY9M0RuLmZpbmQoIi50YWItbmF2aWdhdGlvbiI9CiksdGhpcy4kY29udGVudD0zRG4uZmluZCgi
LnRhYi1jb250ZW50IiksdGhpcy5zZXRFbGVtZW50KG4pLHRoaXMubGlzdD0zRHt9Oz0KdmFyIHI9
M0R0aGlzO3RoaXMub3B0aW9ucy5vcGVyYXRpb25zJiYkLmVhY2godGhpcy5vcHRpb25zLm9wZXJh
dGlvbnMsZnVuY3RpPQpvbihlLHQpe3QuJGVsLnByb3AoImlkIixlKSxyLiRuYXYuZmluZCgiLm9w
ZXJhdGlvbnMiKS5hcHBlbmQodC4kZWwpfSk7aWYodGg9CmlzLm9wdGlvbnMub25uZXcpe3ZhciBp
PTNEJCh0aGlzLl90ZW1wbGF0ZV90YWJfbmV3KHRoaXMub3B0aW9ucykpO3RoaXMuJG5hdj0KLmFw
cGVuZChpKSxpLnRvb2x0aXAoe3RpdGxlOiJBZGQgYSBuZXcgdGFiIixwbGFjZW1lbnQ6ImJvdHRv
bSIsY29udGFpbmVyOnIuPQokZWx9KSxpLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7aS50b29sdGlw
KCJoaWRlIiksci5vcHRpb25zLm9ubmV3KCl9KX19LHNpemU9CjpmdW5jdGlvbigpe3JldHVybiBf
LnNpemUodGhpcy5saXN0KX0sY3VycmVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRlbC5maT0K
bmQoIi50YWItcGFuZS5hY3RpdmUiKS5hdHRyKCJpZCIpfSxhZGQ6ZnVuY3Rpb24oZSl7dmFyIHQ9
M0R0aGlzLG49M0RlLmlkLHI9Cj0zRCQodGhpcy5fdGVtcGxhdGVfdGFiKGUpKSxpPTNEJCh0aGlz
Ll90ZW1wbGF0ZV90YWJfY29udGVudChlKSk7dGhpcy5saXN0Wz0Kbl09M0RlLm9uZGVsPyEwOiEx
LHRoaXMub3B0aW9ucy5vbm5ldz90aGlzLiRuYXYuZmluZCgiI25ldy10YWIiKS5iZWZvcmUocik6
PQp0aGlzLiRuYXYuYXBwZW5kKHIpLGkuYXBwZW5kKGUuJGVsKSx0aGlzLiRjb250ZW50LmFwcGVu
ZChpKSx0aGlzLnNpemUoKT0zRD0KPTNEMSYmKHIuYWRkQ2xhc3MoImFjdGl2ZSIpLGkuYWRkQ2xh
c3MoImFjdGl2ZSIpLHRoaXMuZmlyc3RfdGFiPTNEbiksdGhpcy5vPQpwdGlvbnMubWF4JiZ0aGlz
LnNpemUoKT49M0R0aGlzLm9wdGlvbnMubWF4JiZ0aGlzLiRlbC5maW5kKCIjbmV3LXRhYiIpLmhp
ZGU9CigpO2lmKGUub25kZWwpe3ZhciBzPTNEci5maW5kKCIjZGVsZXRlIik7cy50b29sdGlwKHt0
aXRsZToiRGVsZXRlIHRoaXMgdGFiIj0KLHBsYWNlbWVudDoiYm90dG9tIixjb250YWluZXI6dC4k
ZWx9KSxzLm9uKCJjbGljayIsZnVuY3Rpb24oKXtyZXR1cm4gcy50b29sPQp0aXAoImRlc3Ryb3ki
KSx0LiRlbC5maW5kKCIudG9vbHRpcCIpLnJlbW92ZSgpLGUub25kZWwoKSwhMX0pfXIub24oImNs
aWNrIiw9CmZ1bmN0aW9uKHIpe3IucHJldmVudERlZmF1bHQoKSxlLm9uY2xpY2s/ZS5vbmNsaWNr
KCk6dC5zaG93KG4pfSksdGhpcy5jdXJyZT0KbnRfaWR8fCh0aGlzLmN1cnJlbnRfaWQ9M0RuKX0s
ZGVsOmZ1bmN0aW9uKGUpe3RoaXMuJGVsLmZpbmQoIiN0YWItIitlKS5yZW1vPQp2ZSgpLHRoaXMu
JGVsLmZpbmQoIiMiK2UpLnJlbW92ZSgpLHRoaXMuZmlyc3RfdGFiPTNEPTNEZSYmKHRoaXMuZmly
c3RfdGFiPQo9M0RudWxsKSx0aGlzLmZpcnN0X3RhYiE9M0RudWxsJiZ0aGlzLnNob3codGhpcy5m
aXJzdF90YWIpLHRoaXMubGlzdFtlXSYmZGU9CmxldGUgdGhpcy5saXN0W2VdLHRoaXMuc2l6ZSgp
PHRoaXMub3B0aW9ucy5tYXgmJnRoaXMuJGVsLmZpbmQoIiNuZXctdGFiIikucz0KaG93KCl9LGRl
bFJlbW92YWJsZTpmdW5jdGlvbigpe2Zvcih2YXIgZSBpbiB0aGlzLmxpc3QpdGhpcy5kZWwoZSl9
LHNob3c6ZnVuPQpjdGlvbihlKXt0aGlzLiRlbC5mYWRlSW4oImZhc3QiKSx0aGlzLnZpc2libGU9
M0QhMCxlJiYodGhpcy4kZWwuZmluZCgiI3RhYi09CiIrdGhpcy5jdXJyZW50X2lkKS5yZW1vdmVD
bGFzcygiYWN0aXZlIiksdGhpcy4kZWwuZmluZCgiIyIrdGhpcy5jdXJyZW50X2lkKT0KLnJlbW92
ZUNsYXNzKCJhY3RpdmUiKSx0aGlzLiRlbC5maW5kKCIjdGFiLSIrZSkuYWRkQ2xhc3MoImFjdGl2
ZSIpLHRoaXMuJGVsPQouZmluZCgiIyIrZSkuYWRkQ2xhc3MoImFjdGl2ZSIpLHRoaXMuY3VycmVu
dF9pZD0zRGUpLHRoaXMub3B0aW9ucy5vbmNoYW5nZSY9CiZ0aGlzLm9wdGlvbnMub25jaGFuZ2Uo
ZSl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLiRlbC5mYWRlT3V0KCJmYXN0IiksdGhpcy52aT0Kc2li
bGU9M0QhMX0saGlkZU9wZXJhdGlvbjpmdW5jdGlvbihlKXt0aGlzLiRuYXYuZmluZCgiIyIrZSku
aGlkZSgpfSxzaG93T3BlPQpyYXRpb246ZnVuY3Rpb24oZSl7dGhpcy4kbmF2LmZpbmQoIiMiK2Up
LnNob3coKX0sc2V0T3BlcmF0aW9uOmZ1bmN0aW9uKGUsdCk9Cnt2YXIgbj0zRHRoaXMuJG5hdi5m
aW5kKCIjIitlKTtuLm9mZigiY2xpY2siKSxuLm9uKCJjbGljayIsdCl9LHRpdGxlOmZ1bmN0aT0K
b24oZSx0KXt2YXIgbj0zRHRoaXMuJGVsLmZpbmQoIiN0YWItdGl0bGUtdGV4dC0iK2UpO3JldHVy
biB0JiZuLmh0bWwodCksbi5oPQp0bWwoKX0scmV0aXRsZTpmdW5jdGlvbihlKXt2YXIgdD0zRDA7
Zm9yKHZhciBuIGluIHRoaXMubGlzdCl0aGlzLnRpdGxlKG4sKys9CnQrIjogIitlKX0sX3RlbXBs
YXRlOmZ1bmN0aW9uKGUpe3JldHVybic8ZGl2IGNsYXNzPTNEInVpLXRhYnMgdGFiYmFibGUgdGFi
cz0KLWxlZnQiPjx1bCBpZD0zRCJ0YWItbmF2aWdhdGlvbiIgY2xhc3M9M0QidGFiLW5hdmlnYXRp
b24gbmF2IG5hdi10YWJzIj48ZGl2PQogY2xhc3M9M0Qib3BlcmF0aW9ucyIgc3R5bGU9M0QiZmxv
YXQ6IHJpZ2h0OyBtYXJnaW4tYm90dG9tOiA0cHg7Ij48L2Rpdj48L3U9Cmw+PGRpdiBpZD0zRCJ0
YWItY29udGVudCIgY2xhc3M9M0QidGFiLWNvbnRlbnQiLz48L2Rpdj4nfSxfdGVtcGxhdGVfdGFi
X25ldz0KOmZ1bmN0aW9uKGUpe3JldHVybic8bGkgaWQ9M0QibmV3LXRhYiI+PGEgaHJlZj0zRCJq
YXZhc2NyaXB0OnZvaWQoMCk7Ij48aSBjPQpsYXNzPTNEInVpLXRhYnMtYWRkIGZhIGZhLXBsdXMt
Y2lyY2xlIi8+JytlLnRpdGxlX25ldysiPC9hPiIrIjwvbGk+In0sX3RlbXA9CmxhdGVfdGFiOmZ1
bmN0aW9uKGUpe3ZhciB0PTNEJzxsaSBpZD0zRCJ0YWItJytlLmlkKyciIGNsYXNzPTNEInRhYi1l
bGVtZW50Ij0KPicrJzxhIGlkPTNEInRhYi10aXRsZS1saW5rLScrZS5pZCsnIiB0aXRsZT0zRCIi
IGhyZWY9M0QiIycrZS5pZCsnIiBkYXRhLW9yPQppZ2luYWwtdGl0bGU9M0QiIj4nKyc8c3BhbiBp
ZD0zRCJ0YWItdGl0bGUtdGV4dC0nK2UuaWQrJyIgY2xhc3M9M0QidGFiLXRpdGw9CmUtdGV4dCI+
JytlLnRpdGxlKyI8L3NwYW4+IjtyZXR1cm4gZS5vbmRlbCYmKHQrPTNEJzxpIGlkPTNEImRlbGV0
ZSIgY2xhc3M9Cj0zRCJ1aS10YWJzLWRlbGV0ZSBmYSBmYS1taW51cy1jaXJjbGUiLz4nKSx0Kz0z
RCI8L2E+PC9saT4iLHR9LF90ZW1wbGF0ZV90YT0KYl9jb250ZW50OmZ1bmN0aW9uKGUpe3JldHVy
bic8ZGl2IGlkPTNEIicrZS5pZCsnIiBjbGFzcz0zRCJ0YWItcGFuZSIvPid9fSk7PQpyZXR1cm57
Vmlldzp0fX0pLGRlZmluZSgibXZjL3VpL3VpLXRhYmxlIixbInV0aWxzL3V0aWxzIl0sZnVuY3Rp
b24oZSl7dmFyIHQ9Cj0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtyb3c6bnVsbCxyb3dfY291bnQ6
MCxvcHRpb25zRGVmYXVsdDp7Y29udGVudDoiTm8gYz0Kb250ZW50IGF2YWlsYWJsZS4iLG9uY2hh
bmdlOm51bGwsb25kYmxjbGljazpudWxsLG9uY29uZmlybTpudWxsLGNsczoidWktdGFiPQpsZSIs
Y2xzX3RyOiIifSxldmVudHM6e2NsaWNrOiJfb25jbGljayIsZGJsY2xpY2s6Il9vbmRibGNsaWNr
In0saW5pdGlhbGl6ZTo9CmZ1bmN0aW9uKHQpe3RoaXMub3B0aW9ucz0zRGUubWVyZ2UodCx0aGlz
Lm9wdGlvbnNEZWZhdWx0KTt2YXIgbj0zRCQodGhpcy5fdD0KZW1wbGF0ZSh0aGlzLm9wdGlvbnMp
KTt0aGlzLiR0aGVhZD0zRG4uZmluZCgidGhlYWQiKSx0aGlzLiR0Ym9keT0zRG4uZmluZCgiPQp0
Ym9keSIpLHRoaXMuJHRtZXNzYWdlPTNEbi5maW5kKCJ0bWVzc2FnZSIpLHRoaXMuc2V0RWxlbWVu
dChuKSx0aGlzLnJvdz0zRHQ9Cmhpcy5fcm93KCl9LGFkZEhlYWRlcjpmdW5jdGlvbihlKXt2YXIg
dD0zRCQoIjx0aD48L3RoPiIpO3QuYXBwZW5kKGUpLHRoaXMucj0Kb3cuYXBwZW5kKHQpfSxhcHBl
bmRIZWFkZXI6ZnVuY3Rpb24oKXt0aGlzLiR0aGVhZC5hcHBlbmQodGhpcy5yb3cpLHRoaXMucm93
PQo9M0QkKCI8dHI+PC90cj4iKX0sYWRkOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj0zRCQoIjx0ZD48
L3RkPiIpO3QmJnIuY3NzKCJ3aWQ9CnRoIix0KSxuJiZyLmNzcygidGV4dC1hbGlnbiIsbiksci5h
cHBlbmQoZSksdGhpcy5yb3cuYXBwZW5kKHIpfSxhcHBlbmQ6ZnVuYz0KdGlvbihlLHQpe3RoaXMu
X2NvbW1pdChlLHQsITEpfSxwcmVwZW5kOmZ1bmN0aW9uKGUsdCl7dGhpcy5fY29tbWl0KGUsdCwh
MCl9PQosZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLiRlbC5maW5kKCIjIitlKX0sZGVsOmZ1
bmN0aW9uKGUpe3ZhciB0PTNEdGhpcy49CiR0Ym9keS5maW5kKCIjIitlKTt0Lmxlbmd0aD4wJiYo
dC5yZW1vdmUoKSx0aGlzLnJvd19jb3VudC0tLHRoaXMuX3JlZnJlc2goKT0KKX0sZGVsQWxsOmZ1
bmN0aW9uKCl7dGhpcy4kdGJvZHkuZW1wdHkoKSx0aGlzLnJvd19jb3VudD0zRDAsdGhpcy5fcmVm
cmVzaCgpPQp9LHZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuYmVmb3JlPTNEdGhpcy4kdGJvZHkuZmlu
ZCgiLmN1cnJlbnQiKS5hdHRyKCJpZCIpLGU9CiE9M0Q9M0R1bmRlZmluZWQmJih0aGlzLiR0Ym9k
eS5maW5kKCJ0ciIpLnJlbW92ZUNsYXNzKCJjdXJyZW50IiksZSYmdGhpcy4kdD0KYm9keS5maW5k
KCIjIitlKS5hZGRDbGFzcygiY3VycmVudCIpKTt2YXIgdD0zRHRoaXMuJHRib2R5LmZpbmQoIi5j
dXJyZW50IikuPQphdHRyKCJpZCIpO3JldHVybiB0PTNEPTNEPTNEdW5kZWZpbmVkP251bGw6KHQh
PTNEdGhpcy5iZWZvcmUmJnRoaXMub3B0aW9ucy49Cm9uY2hhbmdlJiZ0aGlzLm9wdGlvbnMub25j
aGFuZ2UoZSksdCl9LHNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kdGJvZHkuZj0KaW5kKCJ0
ciIpLmxlbmd0aH0sX2NvbW1pdDpmdW5jdGlvbihlLHQsbil7dGhpcy5kZWwoZSksdGhpcy5yb3cu
YXR0cigiaWQiLGUpPQosbj90aGlzLiR0Ym9keS5wcmVwZW5kKHRoaXMucm93KTp0aGlzLiR0Ym9k
eS5hcHBlbmQodGhpcy5yb3cpLHQmJih0aGlzLnJvdy49CmhpZGUoKSx0aGlzLnJvdy5mYWRlSW4o
KSksdGhpcy5yb3c9M0R0aGlzLl9yb3coKSx0aGlzLnJvd19jb3VudCsrLHRoaXMuX3JlZj0KcmVz
aCgpfSxfcm93OmZ1bmN0aW9uKCl7cmV0dXJuICQoJzx0ciBjbGFzcz0zRCInK3RoaXMub3B0aW9u
cy5jbHNfdHIrJyI+PC90PQpyPicpfSxfb25jbGljazpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMu
dmFsdWUoKSxuPTNEJChlLnRhcmdldCkuY2xvc2VzdCgidHI9CiIpLmF0dHIoImlkIik7biE9M0Qi
IiYmbiYmdCE9M0RuJiYodGhpcy5vcHRpb25zLm9uY29uZmlybT90aGlzLm9wdGlvbnMub25jbz0K
bmZpcm0obik6dGhpcy52YWx1ZShuKSl9LF9vbmRibGNsaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PTNE
dGhpcy52YWx1ZSgpO3QmJnRoPQppcy5vcHRpb25zLm9uZGJsY2xpY2smJnRoaXMub3B0aW9ucy5v
bmRibGNsaWNrKHQpfSxfcmVmcmVzaDpmdW5jdGlvbigpe3RoaXM9Ci5yb3dfY291bnQ9M0Q9M0Qw
P3RoaXMuJHRtZXNzYWdlLnNob3coKTp0aGlzLiR0bWVzc2FnZS5oaWRlKCl9LF90ZW1wbGF0ZTpm
dT0KbmN0aW9uKGUpe3JldHVybic8ZGl2Pjx0YWJsZSBjbGFzcz0zRCInK2UuY2xzKyciPicrIjx0
aGVhZD48L3RoZWFkPiIrIjx0Ym9kPQp5PjwvdGJvZHk+IisiPC90YWJsZT4iKyI8dG1lc3NhZ2U+
IitlLmNvbnRlbnQrIjwvdG1lc3NhZ2U+IisiPGRpdj4ifX0pO3JldHU9CnJue1ZpZXc6dH19KSxk
ZWZpbmUoInBsdWdpbi92aWV3cy9ncm91cCIsWyJtdmMvdWkvdWktdGFibGUiLCJtdmMvdWkvdWkt
bWlzYz0KIiwidXRpbHMvdXRpbHMiXSxmdW5jdGlvbihlLHQsbil7cmV0dXJuIEJhY2tib25lLlZp
ZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1PQpuY3Rpb24ocixpKXt0aGlzLmFwcD0zRHI7dmFyIHM9
M0R0aGlzO3RoaXMuY2hhcnQ9M0R0aGlzLmFwcC5jaGFydCx0aGlzLmdyb3U9CnA9M0RpLmdyb3Vw
LHRoaXMuZ3JvdXBfa2V5PTNEbmV3IHQuSW5wdXQoe3BsYWNlaG9sZGVyOiJEYXRhIGxhYmVsIixv
bmNoYW5nZT0KOmZ1bmN0aW9uKGUpe3MuZ3JvdXAuc2V0KCJrZXkiLGUpfX0pLHRoaXMudGFibGU9
M0RuZXcgZS5WaWV3KHtjb250ZW50OiJObyBkPQphdGEgY29sdW1uLiJ9KTt2YXIgbz0zRCQoIjxk
aXYvPiIpO28uYXBwZW5kKG4ud3JhcCgobmV3IHQuTGFiZWwoe3RpdGxlOiJQcm89CnZpZGUgYSBs
YWJlbDoifSkpLiRlbCkpLG8uYXBwZW5kKG4ud3JhcCh0aGlzLmdyb3VwX2tleS4kZWwpKSxvLmFw
cGVuZChuLndyYT0KcCgobmV3IHQuTGFiZWwoe3RpdGxlOiJTZWxlY3QgY29sdW1uczoifSkpLiRl
bCkpLG8uYXBwZW5kKG4ud3JhcCh0aGlzLnRhYmxlPQouJGVsKSksdGhpcy5zZXRFbGVtZW50KG8p
O3ZhciBzPTNEdGhpczt0aGlzLmNoYXJ0Lm9uKCJjaGFuZ2U6ZGF0YXNldF9pZCIsZnU9Cm5jdGlv
bigpe3MuX3JlZnJlc2hUYWJsZSgpfSksdGhpcy5jaGFydC5vbigiY2hhbmdlOnR5cGUiLGZ1bmN0
aW9uKCl7cy5fcmVmcj0KZXNoVGFibGUoKX0pLHRoaXMuZ3JvdXAub24oImNoYW5nZTprZXkiLGZ1
bmN0aW9uKCl7cy5fcmVmcmVzaEdyb3VwS2V5KCl9KSx0PQpoaXMuZ3JvdXAub24oImNoYW5nZSIs
ZnVuY3Rpb24oKXtzLl9yZWZyZXNoR3JvdXAoKX0pLHRoaXMuX3JlZnJlc2hUYWJsZSgpLHQ9Cmhp
cy5fcmVmcmVzaEdyb3VwS2V5KCksdGhpcy5fcmVmcmVzaEdyb3VwKCl9LF9yZWZyZXNoVGFibGU6
ZnVuY3Rpb24oKXt2YXIgZT0KPTNEdGhpcy5jaGFydC5nZXQoImRhdGFzZXRfaWQiKSxuPTNEdGhp
cy5jaGFydC5nZXQoInR5cGUiKTtpZighZXx8IW4pcmV0dXJuPQo7dmFyIHI9M0R0aGlzLGk9M0R0
aGlzLmNoYXJ0LmRlZmluaXRpb247dGhpcy50YWJsZS5kZWxBbGwoKTt2YXIgcz0zRHt9O2Zvcig9
CnZhciBvIGluIGkuY29sdW1ucyl7dmFyIHU9M0RpLmNvbHVtbnNbb107aWYoIXUpe2NvbnNvbGUu
ZGVidWcoIkdyb3VwOjpfcmVmcj0KZXNoVGFibGUoKSAtIFNraXBwaW5nIGNvbHVtbiBkZWZpbml0
aW9uLiIpO2NvbnRpbnVlfXZhciBhPTNEbmV3IHQuU2VsZWN0LlZpPQpldyh7aWQ6InNlbGVjdF8i
K28sd2FpdDohMH0pLGY9M0R1LnRpdGxlO3UuaXNfdW5pcXVlJiYoZis9M0QiJm5ic3A7KGFsbCBk
YXQ9CmEgbGFiZWxzKSIpLHRoaXMudGFibGUuYWRkKGYsIjI1JSIpLHRoaXMudGFibGUuYWRkKGEu
JGVsKSx0aGlzLnRhYmxlLmFwcGVuZD0KKG8pLHNbb109M0RhfXRoaXMuY2hhcnQuc3RhdGUoIndh
aXQiLCJMb2FkaW5nIG1ldGFkYXRhLi4uIik7dmFyIGw9M0R0aGlzLmFwPQpwLmRlZmVycmVkLnJl
Z2lzdGVyKCksYz0zRHtpZDplLHN1Y2Nlc3M6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIHMpci5f
YWRkUm89CncodCxlLHMsaS5jb2x1bW5zW3RdKTtyLmNoYXJ0LnN0YXRlKCJvayIsIk1ldGFkYXRh
IGluaXRpYWxpemVkLi4uIiksci5hcHAuZD0KZWZlcnJlZC5kb25lKGwpfX07dGhpcy5hcHAuZGF0
YXNldHMucmVxdWVzdChjKX0sX2FkZFJvdzpmdW5jdGlvbihlLHQsbixyKXt2PQphciBpPTNEdGhp
cyxzPTNEci5pc19sYWJlbCxvPTNEci5pc19hdXRvLHU9M0RyLmlzX251bWVyaWMsYT0zRHIuaXNf
dW5pcXVlLGY9Cj0zRHIuaXNfemVybyxsPTNEW10sYz0zRG5bZV07byYmbC5wdXNoKHtsYWJlbDoi
Q29sdW1uOiBSb3cgTnVtYmVyIix2YWx1ZToiYT0KdXRvIn0pLGYmJmwucHVzaCh7bGFiZWw6IkNv
bHVtbjogTm9uZSIsdmFsdWU6Inplcm8ifSk7dmFyIGg9M0R0Lm1ldGFkYXRhX2NvPQpsdW1uX3R5
cGVzO2Zvcih2YXIgcCBpbiBoKXt2YXIgZD0zRCExO2hbcF09M0Q9M0QiaW50Inx8aFtwXT0zRD0z
RCJmbG9hdCI/ZD0KPTNEdTpkPTNEcyxkJiZsLnB1c2goe2xhYmVsOiJDb2x1bW46ICIrKHBhcnNl
SW50KHApKzEpKyIgWyIraFtwXSsiXSIsdmFsdWU6PQpwfSl9Yy51cGRhdGUobCksYSYmdGhpcy5j
aGFydC5ncm91cHMuZmlyc3QoKSYmdGhpcy5ncm91cC5zZXQoZSx0aGlzLmNoYXJ0Lmc9CnJvdXBz
LmZpcnN0KCkuZ2V0KGUpKTtpZighYy5leGlzdHModGhpcy5ncm91cC5nZXQoZSkpKXt2YXIgdj0z
RGMuZmlyc3QoKTtjbz0KbnNvbGUuZGVidWcoJ0dyb3VwKCk6Ol9hZGRSb3coKSAtIFN3aXRjaGlu
ZyBtb2RlbCB2YWx1ZSBmcm9tICInK3RoaXMuZ3JvdXAuPQpnZXQoZSkrJyIgdG8gIicrdisnIi4n
KSx0aGlzLmdyb3VwLnNldChlLHYpfWMudmFsdWUodGhpcy5ncm91cC5nZXQoZSkpLHRoaXM9Ci5n
cm91cC5vZmYoImNoYW5nZToiK2UpLHRoaXMuZ3JvdXAub24oImNoYW5nZToiK2UsZnVuY3Rpb24o
KXtjLnZhbHVlKGkuZ3JvdT0KcC5nZXQoZSkpfSksYy5zZXRPbkNoYW5nZShmdW5jdGlvbih0KXth
P2kuY2hhcnQuZ3JvdXBzLmVhY2goZnVuY3Rpb24obil7bi5zPQpldChlLHQpfSk6aS5ncm91cC5z
ZXQoZSx0KSxpLmNoYXJ0LnNldCgibW9kaWZpZWQiLCEwKX0pLGMuc2hvdygpfSxfcmVmcmVzaEc9
CnJvdXA6ZnVuY3Rpb24oKXt0aGlzLmdyb3VwLnNldCgiZGF0ZSIsbi50aW1lKCkpfSxfcmVmcmVz
aEdyb3VwS2V5OmZ1bmN0aW9uKD0KKXt2YXIgZT0zRHRoaXMuZ3JvdXAuZ2V0KCJrZXkiKTtlPTNE
PTNEPTNEdW5kZWZpbmVkJiYoZT0zRCIiKSxlIT0zRHRoaXMuZ3JvPQp1cF9rZXkudmFsdWUoKSYm
dGhpcy5ncm91cF9rZXkudmFsdWUoZSl9fSl9KSxkZWZpbmUoInBsdWdpbi9saWJyYXJ5L3VpLXRh
Ymw9CmUtZm9ybSIsWyJtdmMvdWkvdWktdGFibGUiLCJtdmMvdWkvdWktbWlzYyIsInV0aWxzL3V0
aWxzIl0sZnVuY3Rpb24oZSx0LG4pez0KdmFyIHI9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0
aW9uc0RlZmF1bHQ6e3RpdGxlOiIiLGNvbnRlbnQ6IiIsbW9kZToiIn0sPQpsaXN0OltdLGluaXRp
YWxpemU6ZnVuY3Rpb24ocixpKXt0aGlzLmFwcD0zRHIsdGhpcy5vcHRpb25zPTNEbi5tZXJnZShp
LHRoaXM9Ci5vcHRpb25zRGVmYXVsdCksdGhpcy50YWJsZV90aXRsZT0zRG5ldyB0LkxhYmVsKHt0
aXRsZTp0aGlzLm9wdGlvbnMudGl0bGV9KT0KLHRoaXMudGFibGU9M0RuZXcgZS5WaWV3KHtjb250
ZW50OnRoaXMub3B0aW9ucy5jb250ZW50fSk7dmFyIHM9M0QkKCc8ZGl2IGNsPQphc3M9M0QidWkt
dGFibGUtZm9ybSIvPicpO3RoaXMub3B0aW9ucy50aXRsZSYmcy5hcHBlbmQobi53cmFwKHRoaXMu
dGFibGVfdGk9CnRsZS4kZWwpKSxzLmFwcGVuZChuLndyYXAodGhpcy50YWJsZS4kZWwpKSx0aGlz
LnNldEVsZW1lbnQocyl9LHRpdGxlOmZ1bmN0aT0Kb24oZSl7dGhpcy50YWJsZV90aXRsZS50aXRs
ZShlKX0sdXBkYXRlOmZ1bmN0aW9uKGUsdCl7dGhpcy50YWJsZS5kZWxBbGwoKSx0PQpoaXMubGlz
dD0zRFtdO2Zvcih2YXIgbiBpbiBlKXRoaXMuX2FkZChlW25dLmlkfHxuLGVbbl0sdCk7Zm9yKHZh
ciBuIGluIHRoaXM9Ci5saXN0KXRoaXMubGlzdFtuXS50cmlnZ2VyKCJjaGFuZ2UiKX0sX2FkZDpm
dW5jdGlvbihlLG4scil7dmFyIGk9M0R0aGlzLHM9Cj0zRG51bGwsbz0zRG4udHlwZTtzd2l0Y2go
byl7Y2FzZSJ0ZXh0IjpzPTNEbmV3IHQuSW5wdXQoe2lkOiJmaWVsZC0iK2UscGxhYz0KZWhvbGRl
cjpuLnBsYWNlaG9sZGVyLHZhbHVlOnIuZ2V0KGUpLG9uY2hhbmdlOmZ1bmN0aW9uKHQpe3Iuc2V0
KGUsdCl9fSk7YnJlPQphaztjYXNlInJhZGlvYnV0dG9uIjpzPTNEbmV3IHQuUmFkaW9CdXR0b24u
Vmlldyh7aWQ6ImZpZWxkLSIrZSxkYXRhOm4uZGF0YSw9CnZhbHVlOnIuZ2V0KGUpLG9uY2hhbmdl
OmZ1bmN0aW9uKHQpe3Iuc2V0KGUsdCk7dmFyIHM9M0RfLmZpbmRXaGVyZShuLmRhdGEsez0KdmFs
dWU6dH0pO2lmKHMmJnMub3BlcmF0aW9ucyl7dmFyIG89M0RzLm9wZXJhdGlvbnM7Zm9yKHZhciB1
IGluIG8uc2hvdyl7dmFyPQogYT0zRG8uc2hvd1t1XTtpLnRhYmxlLmdldChhKS5zaG93KCl9Zm9y
KHZhciB1IGluIG8uaGlkZSl7dmFyIGE9M0RvLmhpZGVbdV09CjtpLnRhYmxlLmdldChhKS5oaWRl
KCl9fX19KTticmVhaztjYXNlInNlbGVjdCI6cz0zRG5ldyB0LlNlbGVjdC5WaWV3KHtpZDoiZj0K
aWVsZC0iK2UsZGF0YTpuLmRhdGEsdmFsdWU6ci5nZXQoZSksb25jaGFuZ2U6ZnVuY3Rpb24odCl7
ci5zZXQoZSx0KTt2YXIgcz0KPTNEXy5maW5kV2hlcmUobi5kYXRhLHt2YWx1ZTp0fSk7aWYocyYm
cy5vcGVyYXRpb25zKXt2YXIgbz0zRHMub3BlcmF0aW9ucztmPQpvcih2YXIgdSBpbiBvLnNob3cp
e3ZhciBhPTNEby5zaG93W3VdO2kudGFibGUuZ2V0KGEpLnNob3coKX1mb3IodmFyIHUgaW4gby49
CmhpZGUpe3ZhciBhPTNEby5oaWRlW3VdO2kudGFibGUuZ2V0KGEpLmhpZGUoKX19fX0pO2JyZWFr
O2Nhc2UiZGF0YXNldCI6cz0zRD0KbmV3IHQuU2VsZWN0LlZpZXcoe2lkOiJmaWVsZC0iK2Usb25j
aGFuZ2U6ZnVuY3Rpb24odCl7ci5zZXQoZSx0KX19KSxpLmFwcC5kPQphdGFzZXRzLm9uKCJhbGwi
LGZ1bmN0aW9uKCl7dmFyIHQ9M0RbXTtpLmFwcC5kYXRhc2V0cy5lYWNoKGZ1bmN0aW9uKGUpe2Uu
Z2U9CnQoImRhdGF0eXBlX2lkIik9M0Q9M0RuLmRhdGEmJnQucHVzaCh7dmFsdWU6ZS5nZXQoImlk
IiksbGFiZWw6ZS5nZXQoIm5hbWUiKT0KfSl9KSxzLnVwZGF0ZSh0KSxyLmdldChlKXx8ci5zZXQo
ZSxzLmZpcnN0KCkpLHMudmFsdWUoci5nZXQoZSkpfSksaS5hcHAuZGF0PQphc2V0cy50cmlnZ2Vy
KCJhbGwuZGF0YXNldHMiKTticmVhaztjYXNlInRleHRhcmVhIjpzPTNEbmV3IHQuVGV4dGFyZWEo
e2lkOiI9CmZpZWxkLSIrZSxvbmNoYW5nZTpmdW5jdGlvbigpe3Iuc2V0KGUscy52YWx1ZSgpKX19
KTticmVhaztjYXNlInNlcGFyYXRvciI6cz0KPTNEJCgiPGRpdi8+Iik7YnJlYWs7ZGVmYXVsdDpz
PTNEbmV3IHQuSW5wdXQoe2lkOiJmaWVsZC0iK2UscGxhY2Vob2xkZXI6bi5wPQpsYWNlaG9sZGVy
LHR5cGU6bi50eXBlLG9uY2hhbmdlOmZ1bmN0aW9uKCl7ci5zZXQoZSxzLnZhbHVlKCkpfX0pfWlm
KG8hPTNEInM9CmVwYXJhdG9yIil7ci5nZXQoZSl8fHIuc2V0KGUsbi5pbml0KSxzLnZhbHVlKHIu
Z2V0KGUpKSx0aGlzLmxpc3RbZV09M0RzO3Zhcj0KIHU9M0QkKCI8ZGl2Lz4iKTt1LmFwcGVuZChz
LiRlbCksbi5pbmZvJiZ1LmFwcGVuZCgnPGRpdiBjbGFzcz0zRCJ1aS10YWJsZS1mPQpvcm0taW5m
byI+JytuLmluZm8rIjwvZGl2PiIpLHRoaXMub3B0aW9ucy5zdHlsZT0zRD0zRCJib2xkIj8odGhp
cy50YWJsZS5hZGQ9CigobmV3IHQuTGFiZWwoe3RpdGxlOm4udGl0bGUsY2xzOiJmb3JtLWxhYmVs
In0pKS4kZWwpLHRoaXMudGFibGUuYWRkKHUpKToodD0KaGlzLnRhYmxlLmFkZCgnPHNwYW4gY2xh
c3M9M0QidWktdGFibGUtZm9ybS10aXRsZSI+JytuLnRpdGxlKyI8L3NwYW4+IiwiMjUlPQoiKSx0
aGlzLnRhYmxlLmFkZCh1KSl9ZWxzZSB0aGlzLnRhYmxlLmFkZCgnPGRpdiBjbGFzcz0zRCJ1aS10
YWJsZS1mb3JtLXNlcGE9CnJhdG9yIj4nK24udGl0bGUrIjo8ZGl2Lz4iKSx0aGlzLnRhYmxlLmFk
ZCgkKCI8ZGl2Lz4iKSk7dGhpcy50YWJsZS5hcHBlbmQoZT0KKSxuLmhpZGUmJnRoaXMudGFibGUu
Z2V0KGUpLmhpZGUoKX19KTtyZXR1cm57VmlldzpyfX0pLGRlZmluZSgicGx1Z2luL3ZpZXdzPQov
c2V0dGluZ3MiLFsibXZjL3VpL3VpLW1pc2MiLCJwbHVnaW4vbGlicmFyeS91aS10YWJsZS1mb3Jt
IiwidXRpbHMvdXRpbHMiXSw9CmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gQmFja2JvbmUuVmlldy5l
eHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oZSxuKXt0aGlzLj0KYXBwPTNEZTt2YXIgcj0zRHRo
aXM7dGhpcy5jaGFydD0zRHRoaXMuYXBwLmNoYXJ0LHRoaXMuZm9ybT0zRG5ldyB0LlZpZXcoZSx7
PQp0aXRsZToiQ29uZmlndXJhdGlvbiIsY29udGVudDoiVGhpcyBjaGFydCB0eXBlIGRvZXMgbm90
IHByb3ZpZGUgYW55IG9wdGlvbnM9Ci4ifSksdGhpcy5zZXRFbGVtZW50KHRoaXMuZm9ybS4kZWwp
O3ZhciByPTNEdGhpczt0aGlzLmNoYXJ0Lm9uKCJjaGFuZ2UiLGZ1bj0KY3Rpb24oKXtyLl9yZWZy
ZXNoKCl9KX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgZT0zRHRoaXMuY2hhcnQuZGVmaW5pdGlv
bjtpPQpmKCFlKXJldHVybjt0aGlzLmZvcm0udGl0bGUoZS5jYXRlZ29yeSsiIC0gIitlLnRpdGxl
KyI6IiksdGhpcy5mb3JtLnVwZGF0ZSg9CmUuc2V0dGluZ3MsdGhpcy5jaGFydC5zZXR0aW5ncyl9
fSl9KSxkZWZpbmUoInBsdWdpbi92aWV3cy90eXBlcyIsWyJ1dGlscy91dD0KaWxzIiwibXZjL3Vp
L3VpLW1pc2MiXSxmdW5jdGlvbihlLHQpe3JldHVybiBCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0
aW9uc0RlPQpmYXVsdDp7b25jaGFuZ2U6bnVsbCxvbmRibGNsaWNrOm51bGx9LGV2ZW50czp7Y2xp
Y2s6Il9vbmNsaWNrIixkYmxjbGljazoiX289Cm5kYmxjbGljayJ9LGluaXRpYWxpemU6ZnVuY3Rp
b24obixyKXt2YXIgaT0zRHRoaXM7dGhpcy5hcHA9M0RuLHRoaXMub3B0aW9ucz0KPTNEZS5tZXJn
ZShyLHRoaXMub3B0aW9uc0RlZmF1bHQpO3ZhciBzPTNEJCgnPGRpdiBjbGFzcz0zRCJjaGFydHMt
Z3JpZCIvPicpPQo7cy5hcHBlbmQoZS53cmFwKChuZXcgdC5MYWJlbCh7dGl0bGU6IkhvdyBtYW55
IGRhdGEgcG9pbnRzIHdvdWxkIHlvdSBsaWtlIHQ9Cm8gYW5hbHl6ZT8ifSkpLiRlbCkpLHRoaXMu
bGlicmFyeT0zRG5ldyB0LlJhZGlvQnV0dG9uLlZpZXcoe2RhdGE6W3tsYWJlbDoiRj0KZXcgKDw1
MDApIix2YWx1ZToic21hbGwifSx7bGFiZWw6IlNvbWUgKDwxMGspIix2YWx1ZToibWVkaXVtIn0s
e2xhYmVsOiJNYW55PQogKD4xMGspIix2YWx1ZToibGFyZ2UifV0sb25jaGFuZ2U6ZnVuY3Rpb24o
ZSl7aS5fZmlsdGVyKGUpfX0pLHMuYXBwZW5kKGUud3I9CmFwKHRoaXMubGlicmFyeS4kZWwpKSx0
aGlzLnNldEVsZW1lbnQocyksdGhpcy5fcmVuZGVyKCksdGhpcy5saWJyYXJ5LnZhbHVlKD0KInNt
YWxsIiksdGhpcy5saWJyYXJ5LnRyaWdnZXIoImNoYW5nZSIpfSx2YWx1ZTpmdW5jdGlvbihlKXt2
YXIgdD0zRHRoaXMuJGVsPQouZmluZCgiLmN1cnJlbnQiKS5hdHRyKCJpZCIpO2UhPTNEPTNEdW5k
ZWZpbmVkJiYodGhpcy4kZWwuZmluZCgiLmN1cnJlbnQiKS49CnJlbW92ZUNsYXNzKCJjdXJyZW50
IiksdGhpcy4kZWwuZmluZCgiIyIrZSkuYWRkQ2xhc3MoImN1cnJlbnQiKSk7dmFyIG49M0R0aD0K
aXMuJGVsLmZpbmQoIi5jdXJyZW50IikuYXR0cigiaWQiKTtyZXR1cm4gbj0zRD0zRD0zRHVuZGVm
aW5lZD9udWxsOihuIT0zRHQmPQomdGhpcy5vcHRpb25zLm9uY2hhbmdlJiZ0aGlzLm9wdGlvbnMu
b25jaGFuZ2UoZSksbil9LF9maWx0ZXI6ZnVuY3Rpb24oZSl7dGg9CmlzLiRlbC5maW5kKCIuaGVh
ZGVyIikuaGlkZSgpO3ZhciB0PTNEdGhpcy5hcHAudHlwZXMuYXR0cmlidXRlcztmb3IodmFyIG4g
aT0KbiB0KXt2YXIgcj0zRHRbbl0saT0zRHRoaXMuJGVsLmZpbmQoIiMiK24pLHM9M0R0aGlzLiRl
bC5maW5kKCIjdHlwZXMtaGVhZGVyPQotIit0aGlzLmNhdGVnb3JpZXNfaW5kZXhbci5jYXRlZ29y
eV0pLG89M0RyLmtleXdvcmRzfHwiIjtvLmluZGV4T2YoZSk+PTNEMD89CihpLnNob3coKSxzLnNo
b3coKSk6aS5oaWRlKCl9fSxfcmVuZGVyOmZ1bmN0aW9uKCl7dGhpcy5jYXRlZ29yaWVzPTNEe30s
dGhpcz0KLmNhdGVnb3JpZXNfaW5kZXg9M0R7fTt2YXIgZT0zRDAsdD0zRHRoaXMuYXBwLnR5cGVz
LmF0dHJpYnV0ZXM7Zm9yKHZhciBuIGluPQogdCl7dmFyIHI9M0R0W25dLGk9M0RyLmNhdGVnb3J5
O3RoaXMuY2F0ZWdvcmllc1tpXXx8KHRoaXMuY2F0ZWdvcmllc1tpXT0zRHs9Cn0sdGhpcy5jYXRl
Z29yaWVzX2luZGV4W2ldPTNEZSsrKSx0aGlzLmNhdGVnb3JpZXNbaV1bbl09M0RyfWZvcih2YXIg
aSBpbiB0aD0KaXMuY2F0ZWdvcmllcyl7dmFyIHM9M0QkKCc8ZGl2IHN0eWxlPTNEImNsZWFyOiBi
b3RoOyIvPicpO3MuYXBwZW5kKHRoaXMuX3RlPQptcGxhdGVfaGVhZGVyKHtpZDoidHlwZXMtaGVh
ZGVyLSIrdGhpcy5jYXRlZ29yaWVzX2luZGV4W2ldLHRpdGxlOml9KSk7Zm9yKHY9CmFyIG4gaW4g
dGhpcy5jYXRlZ29yaWVzW2ldKXt2YXIgcj0zRHRoaXMuY2F0ZWdvcmllc1tpXVtuXSxvPTNEci50
aXRsZSsiICgiKz0Kci5saWJyYXJ5KyIpIjtyLnpvb21hYmxlJiYobz0zRCc8c3BhbiBjbGFzcz0z
RCJmYSBmYS1zZWFyY2gtcGx1cyIvPicrbykscy5hPQpwcGVuZCh0aGlzLl90ZW1wbGF0ZV9pdGVt
KHtpZDpuLHRpdGxlOm8sdXJsOmNvbmZpZy5hcHBfcm9vdCsiY2hhcnRzLyIrdGhpcy49CmFwcC5j
aGFydFBhdGgobikrIi9sb2dvLnBuZyJ9KSl9dGhpcy4kZWwuYXBwZW5kKHMpfX0sX29uY2xpY2s6
ZnVuY3Rpb24oZSl7dj0KYXIgdD0zRHRoaXMudmFsdWUoKSxuPTNEJChlLnRhcmdldCkuY2xvc2Vz
dCgiLml0ZW0iKS5hdHRyKCJpZCIpO24hPTNEIiImJm4mPQomdCE9M0RuJiZ0aGlzLnZhbHVlKG4p
fSxfb25kYmxjbGljazpmdW5jdGlvbihlKXt2YXIgdD0zRHRoaXMudmFsdWUoKTt0JiZ0aGk9CnMu
b3B0aW9ucy5vbmRibGNsaWNrJiZ0aGlzLm9wdGlvbnMub25kYmxjbGljayh0KX0sX3RlbXBsYXRl
X2hlYWRlcjpmdW5jdGlvbj0KKGUpe3JldHVybic8ZGl2IGlkPTNEIicrZS5pZCsnIiBjbGFzcz0z
RCJoZWFkZXIiPicrIiZidWxsOyAiK2UudGl0bGUrIjxkaXY+PQoifSxfdGVtcGxhdGVfaXRlbTpm
dW5jdGlvbihlKXtyZXR1cm4nPGRpdiBpZD0zRCInK2UuaWQrJyIgY2xhc3M9M0QiaXRlbSI+Jys9
Cic8aW1nIGNsYXNzPTNEImltYWdlIiBzcmM9M0QiJytlLnVybCsnIj4nKyc8ZGl2IGNsYXNzPTNE
InRpdGxlIj4nK2UudGl0bGUrIj0KPC9kaXY+IisiPGRpdj4ifX0pfSksZGVmaW5lKCJwbHVnaW4v
dmlld3MvZWRpdG9yIixbIm12Yy91aS91aS10YWJzIiwibXZjL3VpPQovdWktbWlzYyIsIm12Yy91
aS91aS1wb3J0bGV0IiwidXRpbHMvdXRpbHMiLCJwbHVnaW4vbW9kZWxzL2NoYXJ0IiwicGx1Z2lu
L209Cm9kZWxzL2dyb3VwIiwicGx1Z2luL3ZpZXdzL2dyb3VwIiwicGx1Z2luL3ZpZXdzL3NldHRp
bmdzIiwicGx1Z2luL3ZpZXdzL3R5cD0KZXMiXSxmdW5jdGlvbihlLHQsbixyLGkscyxvLHUsYSl7
cmV0dXJuIEJhY2tib25lLlZpZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1PQpuY3Rpb24oaSxzKXt2
YXIgbz0zRHRoaXM7dGhpcy5hcHA9M0RpLHRoaXMuY2hhcnQ9M0R0aGlzLmFwcC5jaGFydCx0aGlz
Lm1lc3M9CmFnZT0zRG5ldyB0Lk1lc3NhZ2UsdGhpcy5wb3J0bGV0PTNEbmV3IG4uVmlldyh7aWNv
bjoiZmEtYmFyLWNoYXJ0LW8iLHRpdGxlOj0KIkVkaXRvciIsb3BlcmF0aW9uczp7c2F2ZTpuZXcg
dC5CdXR0b25JY29uKHtpY29uOiJmYS1zYXZlIix0b29sdGlwOiJEcmF3IENoPQphcnQiLHRpdGxl
OiJEcmF3IixvbmNsaWNrOmZ1bmN0aW9uKCl7by5fc2F2ZUNoYXJ0KCl9fSksYmFjazpuZXcgdC5C
dXR0b25JY289Cm4oe2ljb246ImZhLWNhcmV0LWxlZnQiLHRvb2x0aXA6IlJldHVybiB0byBWaWV3
ZXIiLHRpdGxlOiJDYW5jZWwiLG9uY2xpY2s6Zj0KdW5jdGlvbigpe28uYXBwLmdvKCJ2aWV3ZXIi
KSxvLmFwcC5zdG9yYWdlLmxvYWQoKX19KX19KSx0aGlzLnR5cGVzPTNEbmV3IGEoPQppLHtvbmNo
YW5nZTpmdW5jdGlvbihlKXt2YXIgdD0zRG8uYXBwLnR5cGVzLmdldChlKTt0fHxjb25zb2xlLmRl
YnVnKCJGQUlMRUQ9CiAtIEVkaXRvcjo6b25jaGFuZ2UoKSAtIENoYXJ0IHR5cGUgbm90IHN1cHBv
cnRlZC4iKSxvLmNoYXJ0LmRlZmluaXRpb249M0R0LD0Kby5jaGFydC5zZXR0aW5ncy5jbGVhcigp
LG8uY2hhcnQuc2V0KHt0eXBlOmV9KSxvLmNoYXJ0LnNldCgibW9kaWZpZWQiLCEwKSxjPQpvbnNv
bGUuZGVidWcoIkVkaXRvcjo6b25jaGFuZ2UoKSAtIFN3aXRjaGVkIGNoYXJ0IHR5cGUuIil9LG9u
ZGJsY2xpY2s6ZnVuY3Q9CmlvbihlKXtvLl9zYXZlQ2hhcnQoKX19KSx0aGlzLnRhYnM9M0RuZXcg
ZS5WaWV3KHt0aXRsZV9uZXc6IkFkZCBEYXRhIixvbm5ldz0KOmZ1bmN0aW9uKCl7dmFyIGU9M0Rv
Ll9hZGRHcm91cE1vZGVsKCk7by50YWJzLnNob3coZS5pZCl9fSksdGhpcy50aXRsZT0zRG5lPQp3
IHQuSW5wdXQoe3BsYWNlaG9sZGVyOiJDaGFydCB0aXRsZSIsb25jaGFuZ2U6ZnVuY3Rpb24oKXtv
LmNoYXJ0LnNldCgidGl0bGU9CiIsby50aXRsZS52YWx1ZSgpKX19KTt2YXIgZj0zRCQoIjxkaXYv
PiIpO2YuYXBwZW5kKHIud3JhcCgobmV3IHQuTGFiZWwoe3RpdD0KbGU6IlByb3ZpZGUgYSBjaGFy
dCB0aXRsZToifSkpLiRlbCkpLGYuYXBwZW5kKHRoaXMudGl0bGUuJGVsKSxmLmFwcGVuZCgkKCI8
PQpkaXYvPiIpLmFkZENsYXNzKCJ1aS10YWJsZS1mb3JtLWluZm8iKS5odG1sKCJUaGlzIHRpdGxl
IHdpbGwgYXBwZWFyIGluIHRoZSA9Cmxpc3Qgb2YgJ1NhdmVkIFZpc3VhbGl6YXRpb25zJy4gQ2hh
cnRzIGFyZSBzYXZlZCB1cG9uIGNyZWF0aW9uLiIpKSxmLmFwcGVuZD0KKHIud3JhcCgpKSxmLmFw
cGVuZChyLndyYXAodGhpcy50eXBlcy4kZWwpKSx0aGlzLnRhYnMuYWRkKHtpZDoibWFpbiIsdGl0
bGU6PQoiU3RhcnQiLCRlbDpmfSksdGhpcy5zZXR0aW5ncz0zRG5ldyB1KHRoaXMuYXBwKSx0aGlz
LnRhYnMuYWRkKHtpZDoic2V0dGluZ3M9CiIsdGl0bGU6IkNvbmZpZ3VyYXRpb24iLCRlbDp0aGlz
LnNldHRpbmdzLiRlbH0pLHRoaXMucG9ydGxldC5hcHBlbmQodGhpcy5tZT0Kc3NhZ2UuJGVsKSx0
aGlzLnBvcnRsZXQuYXBwZW5kKHRoaXMudGFicy4kZWwpLHRoaXMuc2V0RWxlbWVudCh0aGlzLnBv
cnRsZXQuPQokZWwpLHRoaXMudGFicy5oaWRlT3BlcmF0aW9uKCJiYWNrIik7dmFyIG89M0R0aGlz
O3RoaXMuY2hhcnQub24oImNoYW5nZTp0aXQ9CmxlIixmdW5jdGlvbihlKXtvLl9yZWZyZXNoVGl0
bGUoKX0pLHRoaXMuY2hhcnQub24oImNoYW5nZTp0eXBlIixmdW5jdGlvbihlKT0Ke28udHlwZXMu
dmFsdWUoZS5nZXQoInR5cGUiKSl9KSx0aGlzLmNoYXJ0Lm9uKCJyZXNldCIsZnVuY3Rpb24oZSl7
by5fcmVzZXRDPQpoYXJ0KCl9KSx0aGlzLmFwcC5jaGFydC5vbigicmVkcmF3IixmdW5jdGlvbihl
KXtvLnBvcnRsZXQuc2hvd09wZXJhdGlvbigiYmE9CmNrIil9KSx0aGlzLmFwcC5jaGFydC5ncm91
cHMub24oImFkZCIsZnVuY3Rpb24oZSl7by5fYWRkR3JvdXAoZSl9KSx0aGlzLmFwcD0KLmNoYXJ0
Lmdyb3Vwcy5vbigicmVtb3ZlIixmdW5jdGlvbihlKXtvLl9yZW1vdmVHcm91cChlKX0pLHRoaXMu
YXBwLmNoYXJ0LmdyPQpvdXBzLm9uKCJyZXNldCIsZnVuY3Rpb24oZSl7by5fcmVtb3ZlQWxsR3Jv
dXBzKCl9KSx0aGlzLmFwcC5jaGFydC5ncm91cHMub249CigiY2hhbmdlOmtleSIsZnVuY3Rpb24o
ZSl7by5fcmVmcmVzaEdyb3VwS2V5KCl9KSx0aGlzLl9yZXNldENoYXJ0KCl9LHNob3c6Zj0KdW5j
dGlvbigpe3RoaXMuJGVsLnNob3coKX0saGlkZTpmdW5jdGlvbigpe3RoaXMuJGVsLmhpZGUoKX0s
X3JlZnJlc2hUaXRsZTpmPQp1bmN0aW9uKCl7dmFyIGU9M0R0aGlzLmNoYXJ0LmdldCgidGl0bGUi
KTt0aGlzLnBvcnRsZXQudGl0bGUoZSksdGhpcy50aXRsZS49CnZhbHVlKCkhPTNEZSYmdGhpcy50
aXRsZS52YWx1ZShlKX0sX3JlZnJlc2hHcm91cEtleTpmdW5jdGlvbigpe3ZhciBlPTNEdGhpcz0K
LHQ9M0QwO3RoaXMuY2hhcnQuZ3JvdXBzLmVhY2goZnVuY3Rpb24obil7dmFyIHI9M0RuLmdldCgi
a2V5IiwiIik7cj0zRD0zRCIiPQomJihyPTNEIkRhdGEgbGFiZWwiKSxlLnRhYnMudGl0bGUobi5p
ZCwrK3QrIjogIityKX0pfSxfYWRkR3JvdXBNb2RlbDpmdW5jdGk9Cm9uKCl7dmFyIGU9M0RuZXcg
cyh7aWQ6ci51dWlkKCl9KTtyZXR1cm4gdGhpcy5jaGFydC5ncm91cHMuYWRkKGUpLGV9LF9hZGRH
cj0Kb3VwOmZ1bmN0aW9uKGUpe3ZhciB0PTNEdGhpcyxuPTNEbmV3IG8odGhpcy5hcHAse2dyb3Vw
OmV9KTt0aGlzLnRhYnMuYWRkKHtpPQpkOmUuaWQsJGVsOm4uJGVsLG9uZGVsOmZ1bmN0aW9uKCl7
dC5jaGFydC5ncm91cHMucmVtb3ZlKGUuaWQpfX0pLHRoaXMuX3JlZnI9CmVzaEdyb3VwS2V5KCks
dGhpcy5jaGFydC5zZXQoIm1vZGlmaWVkIiwhMCl9LF9yZW1vdmVHcm91cDpmdW5jdGlvbihlKXt0
aGlzLj0KdGFicy5kZWwoZS5pZCksdGhpcy5fcmVmcmVzaEdyb3VwS2V5KCksdGhpcy5jaGFydC5z
ZXQoIm1vZGlmaWVkIiwhMCl9LF9yZW1vPQp2ZUFsbEdyb3VwczpmdW5jdGlvbihlKXt0aGlzLnRh
YnMuZGVsUmVtb3ZhYmxlKCl9LF9yZXNldENoYXJ0OmZ1bmN0aW9uKCl7dGg9CmlzLmNoYXJ0LnNl
dCgiaWQiLHIudXVpZCgpKSx0aGlzLmNoYXJ0LnNldCgidHlwZSIsIm52ZDNfYmFyIiksdGhpcy5j
aGFydC5zZT0KdCgiZGF0YXNldF9pZCIsdGhpcy5hcHAub3B0aW9ucy5jb25maWcuZGF0YXNldF9p
ZCksdGhpcy5jaGFydC5zZXQoInRpdGxlIiwiPQpOZXcgQ2hhcnQiKSx0aGlzLnBvcnRsZXQuaGlk
ZU9wZXJhdGlvbigiYmFjayIpfSxfc2F2ZUNoYXJ0OmZ1bmN0aW9uKCl7dGhpcy49CmNoYXJ0LnNl
dCh7dHlwZTp0aGlzLnR5cGVzLnZhbHVlKCksdGl0bGU6dGhpcy50aXRsZS52YWx1ZSgpLGRhdGU6
ci50aW1lKCl9KT0KO2lmKHRoaXMuY2hhcnQuZ3JvdXBzLmxlbmd0aD0zRD0zRDApe3RoaXMubWVz
c2FnZS51cGRhdGUoe21lc3NhZ2U6IlBsZWFzZSBzPQplbGVjdCBkYXRhIGNvbHVtbnMgYmVmb3Jl
IGRyYXdpbmcgdGhlIGNoYXJ0LiJ9KTt2YXIgZT0zRHRoaXMuX2FkZEdyb3VwTW9kZWw9CigpO3Ro
aXMudGFicy5zaG93KGUuaWQpO3JldHVybn12YXIgdD0zRHRoaXMsbj0zRCEwLGk9M0R0aGlzLmNo
YXJ0LmRlZmluaXRpbz0Kbjt0aGlzLmNoYXJ0Lmdyb3Vwcy5lYWNoKGZ1bmN0aW9uKGUpe2lmKCFu
KXJldHVybjtmb3IodmFyIHIgaW4gaS5jb2x1bW5zKWlmPQooZS5hdHRyaWJ1dGVzW3JdPTNEPTNE
Im51bGwiKXt0Lm1lc3NhZ2UudXBkYXRlKHtzdGF0dXM6ImRhbmdlciIsbWVzc2FnZToiVGg9Cmlz
IGNoYXJ0IHR5cGUgcmVxdWlyZXMgY29sdW1uIHR5cGVzIG5vdCBmb3VuZCBpbiB5b3VyIHRhYnVs
YXIgZmlsZS4ifSksdC50YT0KYnMuc2hvdyhlLmlkKSxuPTNEITE7cmV0dXJufX0pO2lmKCFuKXJl
dHVybjt0aGlzLmFwcC5nbygidmlld2VyIik7dmFyIHQ9M0R0PQpoaXM7dGhpcy5hcHAuZGVmZXJy
ZWQuZXhlY3V0ZShmdW5jdGlvbigpe3QuYXBwLnN0b3JhZ2Uuc2F2ZSgpLHQuY2hhcnQudHJpZ2c9
CmVyKCJyZWRyYXciKX0pfX0pfSksZGVmaW5lKCJwbHVnaW4vbW9kZWxzL2NvbmZpZyIsW10sZnVu
Y3Rpb24oKXtyZXR1cm4gQmFjaz0KYm9uZS5Nb2RlbC5leHRlbmQoe2RlZmF1bHRzOntxdWVyeV9s
aW1pdDoxZTQscXVlcnlfdGltZW91dDoxMDB9fSl9KSxkZWZpbmUoPQoicGx1Z2luL2NoYXJ0cy9m
b3Jtcy9kZWZhdWx0IixbXSxmdW5jdGlvbigpe3JldHVybnt0aXRsZToiIixjYXRlZ29yeToiIixs
aWI9CnJhcnk6IiIsdGFnOiIiLGtleXdvcmRzOiIiLHNldHRpbmdzOntzZXBhcmF0b3JfeDp7dGl0
bGU6IlggYXhpcyIsdHlwZToic2VwYT0KcmF0b3IifSx4X2F4aXNfbGFiZWw6e3RpdGxlOiJBeGlz
IGxhYmVsIixpbmZvOiJQcm92aWRlIGEgbGFiZWwgZm9yIHRoZSBheGlzPQouIix0eXBlOiJ0ZXh0
Iixpbml0OiJYLWF4aXMiLHBsYWNlaG9sZGVyOiJBeGlzIGxhYmVsIn0seF9heGlzX3R5cGU6e3Rp
dGxlOiI9CkF4aXMgdmFsdWUgdHlwZSIsaW5mbzoiU2VsZWN0IHRoZSB2YWx1ZSB0eXBlIG9mIHRo
ZSBheGlzLiIsdHlwZToic2VsZWN0Iixpbj0KaXQ6ImF1dG8iLGRhdGE6W3tsYWJlbDoiLS0gRG8g
bm90IHNob3cgdmFsdWVzIC0tIix2YWx1ZToiaGlkZSIsb3BlcmF0aW9uczp7PQpoaWRlOlsieF9h
eGlzX3ByZWNpc2lvbiJdfX0se2xhYmVsOiJBdXRvIix2YWx1ZToiYXV0byIsb3BlcmF0aW9uczp7
aGlkZTpbIng9Cl9heGlzX3ByZWNpc2lvbiJdfX0se2xhYmVsOiJGbG9hdCIsdmFsdWU6ImYiLG9w
ZXJhdGlvbnM6e3Nob3c6WyJ4X2F4aXNfcHJlYz0KaXNpb24iXX19LHtsYWJlbDoiRXhwb25lbnQi
LHZhbHVlOiJlIixvcGVyYXRpb25zOntzaG93OlsieF9heGlzX3ByZWNpc2lvbiJdPQp9fSx7bGFi
ZWw6IkludGVnZXIiLHZhbHVlOiJkIixvcGVyYXRpb25zOntoaWRlOlsieF9heGlzX3ByZWNpc2lv
biJdfX0se2xhYmU9Cmw6IlBlcmNlbnRhZ2UiLHZhbHVlOiJwIixvcGVyYXRpb25zOntzaG93Olsi
eF9heGlzX3ByZWNpc2lvbiJdfX0se2xhYmVsOiJTST0KLXByZWZpeCIsdmFsdWU6InMiLG9wZXJh
dGlvbnM6e2hpZGU6WyJ4X2F4aXNfcHJlY2lzaW9uIl19fV19LHhfYXhpc19wcmVjaXNpPQpvbjp7
dGl0bGU6IkF4aXMgdGljayBmb3JtYXQiLGluZm86IlNlbGVjdCB0aGUgdGljayBmb3JtYXQgZm9y
IHRoZSBheGlzLiIsdHk9CnBlOiJzZWxlY3QiLGluaXQ6IjEiLGRhdGE6W3tsYWJlbDoiMC4wMDAw
MSIsdmFsdWU6IjUifSx7bGFiZWw6IjAuMDAwMSIsdmFsdT0KZToiNCJ9LHtsYWJlbDoiMC4wMDEi
LHZhbHVlOiIzIn0se2xhYmVsOiIwLjAxIix2YWx1ZToiMiJ9LHtsYWJlbDoiMC4xIix2YWx1PQpl
OiIxIn0se2xhYmVsOiIxIix2YWx1ZToiMCJ9XX0sc2VwYXJhdG9yX3k6e3RpdGxlOiJZIGF4aXMi
LHR5cGU6InNlcGFyYXRvciI9Cn0seV9heGlzX2xhYmVsOnt0aXRsZToiQXhpcyBsYWJlbCIsaW5m
bzoiUHJvdmlkZSBhIGxhYmVsIGZvciB0aGUgYXhpcy4iLHR5cD0KZToidGV4dCIsaW5pdDoiWS1h
eGlzIixwbGFjZWhvbGRlcjoiQXhpcyBsYWJlbCJ9LHlfYXhpc190eXBlOnt0aXRsZToiQXhpcyB2
PQphbHVlIHR5cGUiLGluZm86IlNlbGVjdCB0aGUgdmFsdWUgdHlwZSBvZiB0aGUgYXhpcy4iLHR5
cGU6InNlbGVjdCIsaW5pdDoiYXU9CnRvIixkYXRhOlt7bGFiZWw6Ii0tIERvIG5vdCBzaG93IHZh
bHVlcyAtLSIsdmFsdWU6ImhpZGUiLG9wZXJhdGlvbnM6e2hpZGU6Wz0KInlfYXhpc19wcmVjaXNp
b24iXX19LHtsYWJlbDoiQXV0byIsdmFsdWU6ImF1dG8iLG9wZXJhdGlvbnM6e2hpZGU6WyJ5X2F4
aXNfPQpwcmVjaXNpb24iXX19LHtsYWJlbDoiRmxvYXQiLHZhbHVlOiJmIixvcGVyYXRpb25zOntz
aG93OlsieV9heGlzX3ByZWNpc2lvbiI9Cl19fSx7bGFiZWw6IkV4cG9uZW50Iix2YWx1ZToiZSIs
b3BlcmF0aW9uczp7c2hvdzpbInlfYXhpc19wcmVjaXNpb24iXX19LHtsYT0KYmVsOiJJbnRlZ2Vy
Iix2YWx1ZToiZCIsb3BlcmF0aW9uczp7aGlkZTpbInlfYXhpc19wcmVjaXNpb24iXX19LHtsYWJl
bDoiUGVyPQpjZW50YWdlIix2YWx1ZToicCIsb3BlcmF0aW9uczp7c2hvdzpbInlfYXhpc19wcmVj
aXNpb24iXX19LHtsYWJlbDoiU0ktcHJlZmk9CngiLHZhbHVlOiJzIixvcGVyYXRpb25zOntoaWRl
OlsieV9heGlzX3ByZWNpc2lvbiJdfX1dfSx5X2F4aXNfcHJlY2lzaW9uOnt0aT0KdGxlOiJBeGlz
IHRpY2sgZm9ybWF0IixpbmZvOiJTZWxlY3QgdGhlIHRpY2sgZm9ybWF0IGZvciB0aGUgYXhpcy4i
LHR5cGU6InNlPQpsZWN0Iixpbml0OiIxIixkYXRhOlt7bGFiZWw6IjAuMDAwMDEiLHZhbHVlOiI1
In0se2xhYmVsOiIwLjAwMDEiLHZhbHVlOiI0In09Cix7bGFiZWw6IjAuMDAxIix2YWx1ZToiMyJ9
LHtsYWJlbDoiMC4wMSIsdmFsdWU6IjIifSx7bGFiZWw6IjAuMSIsdmFsdWU6IjEifT0KLHtsYWJl
bDoiMSIsdmFsdWU6IjAifV19LHNlcGFyYXRvcl9sZWdlbmQ6e3RpdGxlOiJPdGhlcnMiLHR5cGU6
InNlcGFyYXRvciJ9PQosc2hvd19sZWdlbmQ6e3RpdGxlOiJTaG93IGxlZ2VuZCIsaW5mbzoiV291
bGQgeW91IGxpa2UgdG8gYWRkIGEgbGVnZW5kPyIsdHk9CnBlOiJyYWRpb2J1dHRvbiIsaW5pdDoi
dHJ1ZSIsZGF0YTpbe2xhYmVsOiJZZXMiLHZhbHVlOiJ0cnVlIn0se2xhYmVsOiJObyIsdj0KYWx1
ZToiZmFsc2UifV19LHVzZV9wYW5lbHM6e3RpdGxlOiJVc2UgbXVsdGktcGFuZWxzIixpbmZvOiJX
b3VsZCB5b3UgbGlrZSB0PQpvIHNlcGFyYXRlIHlvdXIgZGF0YSBpbnRvIGluZGl2aWR1YWwgcGFu
ZWxzPyIsdHlwZToicmFkaW9idXR0b24iLGluaXQ6ImZhbHM9CmUiLGRhdGE6W3tsYWJlbDoiWWVz
Iix2YWx1ZToidHJ1ZSJ9LHtsYWJlbDoiTm8iLHZhbHVlOiJmYWxzZSJ9XX19fX0pLGZ1bmN0aT0K
b24oKXtmdW5jdGlvbiB0KGUsdCl7cmV0dXJuKG5ldyBEYXRlKHQsZSsxLDApKS5nZXREYXRlKCl9
ZnVuY3Rpb24gbihlLHQsbil7PQpyZXR1cm4gZnVuY3Rpb24ocixpLHMpe3ZhciBvPTNEZShyKSx1
PTNEW107bzxyJiZ0KG8pO2lmKHM+MSl3aGlsZShvPGkpe3ZhciA9CmE9M0RuZXcgRGF0ZSgrbyk7
bihhKSVzPTNEPTNEPTNEMCYmdS5wdXNoKGEpLHQobyl9ZWxzZSB3aGlsZShvPGkpdS5wdXNoKG5l
dz0KIERhdGUoK28pKSx0KG8pO3JldHVybiB1fX12YXIgZT0zRHdpbmRvdy5udnx8e307ZS52ZXJz
aW9uPTNEIjEuMS4xNWIiLGUuZGV2PQo9M0QhMCx3aW5kb3cubnY9M0RlLGUudG9vbHRpcD0zRGUu
dG9vbHRpcHx8e30sZS51dGlscz0zRGUudXRpbHN8fHt9LGUubW9kZWw9CnM9M0RlLm1vZGVsc3x8
e30sZS5jaGFydHM9M0R7fSxlLmdyYXBocz0zRFtdLGUubG9ncz0zRHt9LGUuZGlzcGF0Y2g9M0Rk
My5kaT0Kc3BhdGNoKCJyZW5kZXJfc3RhcnQiLCJyZW5kZXJfZW5kIiksZS5kZXYmJihlLmRpc3Bh
dGNoLm9uKCJyZW5kZXJfc3RhcnQiLGZ1PQpuY3Rpb24odCl7ZS5sb2dzLnN0YXJ0VGltZT0zRCso
bmV3IERhdGUpfSksZS5kaXNwYXRjaC5vbigicmVuZGVyX2VuZCIsZnVuY3Q9Cmlvbih0KXtlLmxv
Z3MuZW5kVGltZT0zRCsobmV3IERhdGUpLGUubG9ncy50b3RhbFRpbWU9M0RlLmxvZ3MuZW5kVGlt
ZS1lLmxvZz0Kcy5zdGFydFRpbWUsZS5sb2coInRvdGFsIixlLmxvZ3MudG90YWxUaW1lKX0pKSxl
LmxvZz0zRGZ1bmN0aW9uKCl7aWYoZS5kZXYmPQomY29uc29sZS5sb2cmJmNvbnNvbGUubG9nLmFw
cGx5KWNvbnNvbGUubG9nLmFwcGx5KGNvbnNvbGUsYXJndW1lbnRzKTtlbHNlIGk9CmYoZS5kZXYm
JnR5cGVvZiBjb25zb2xlLmxvZz0zRD0zRCJmdW5jdGlvbiImJkZ1bmN0aW9uLnByb3RvdHlwZS5i
aW5kKXt2YXIgdD0KPTNERnVuY3Rpb24ucHJvdG90eXBlLmJpbmQuY2FsbChjb25zb2xlLmxvZyxj
b25zb2xlKTt0LmFwcGx5KGNvbnNvbGUsYXJndW1lPQpudHMpfXJldHVybiBhcmd1bWVudHNbYXJn
dW1lbnRzLmxlbmd0aC0xXX0sZS5yZW5kZXI9M0RmdW5jdGlvbihuKXtuPTNEbnx8MSw9CmUucmVu
ZGVyLmFjdGl2ZT0zRCEwLGUuZGlzcGF0Y2gucmVuZGVyX3N0YXJ0KCksc2V0VGltZW91dChmdW5j
dGlvbigpe3ZhciB0LD0Kcjtmb3IodmFyIGk9M0QwO2k8biYmKHI9M0RlLnJlbmRlci5xdWV1ZVtp
XSk7aSsrKXQ9M0RyLmdlbmVyYXRlKCksdHlwZW9mIHIuPQpjYWxsYmFjaz0zRD0zRHR5cGVvZiBG
dW5jdGlvbiYmci5jYWxsYmFjayh0KSxlLmdyYXBocy5wdXNoKHQpO2UucmVuZGVyLnF1ZXU9CmUu
c3BsaWNlKDAsaSksZS5yZW5kZXIucXVldWUubGVuZ3RoP3NldFRpbWVvdXQoYXJndW1lbnRzLmNh
bGxlZSwwKTooZS5kaXNwYT0KdGNoLnJlbmRlcl9lbmQoKSxlLnJlbmRlci5hY3RpdmU9M0QhMSl9
LDApfSxlLnJlbmRlci5hY3RpdmU9M0QhMSxlLnJlbmRlci5xPQp1ZXVlPTNEW10sZS5hZGRHcmFw
aD0zRGZ1bmN0aW9uKHQpe3R5cGVvZiBhcmd1bWVudHNbMF09M0Q9M0R0eXBlb2YgRnVuY3Rpb249
CiYmKHQ9M0R7Z2VuZXJhdGU6YXJndW1lbnRzWzBdLGNhbGxiYWNrOmFyZ3VtZW50c1sxXX0pLGUu
cmVuZGVyLnF1ZXVlLnB1c2godD0KKSxlLnJlbmRlci5hY3RpdmV8fGUucmVuZGVyKCl9LGUuaWRl
bnRpdHk9M0RmdW5jdGlvbihlKXtyZXR1cm4gZX0sZS5zdHJpcD0KPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGUucmVwbGFjZSgvKFxzfCYpL2csIiIpfSxkMy50aW1lLm1vbnRoRW5kPTNEZnVuY3Rpb24o
PQplKXtyZXR1cm4gbmV3IERhdGUoZS5nZXRGdWxsWWVhcigpLGUuZ2V0TW9udGgoKSwwKX0sZDMu
dGltZS5tb250aEVuZHM9M0RuKGQ9CjMudGltZS5tb250aEVuZCxmdW5jdGlvbihlKXtlLnNldFVU
Q0RhdGUoZS5nZXRVVENEYXRlKCkrMSksZS5zZXREYXRlKHQoZS5nZT0KdE1vbnRoKCkrMSxlLmdl
dEZ1bGxZZWFyKCkpKX0sZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0TW9udGgoKX0pLGUuaW50ZXJh
Y3RpPQp2ZUd1aWRlbGluZT0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhvKXtvLmVhY2goZnVuY3Rp
b24obyl7ZnVuY3Rpb24gZygpe3ZhciA9CmU9M0RkMy5tb3VzZSh0aGlzKSxuPTNEZVswXSxyPTNE
ZVsxXSxvPTNEITAsYT0zRCExO2wmJihuPTNEZDMuZXZlbnQub2Zmc2V0WD0KLHI9M0RkMy5ldmVu
dC5vZmZzZXRZLGQzLmV2ZW50LnRhcmdldC50YWdOYW1lIT0zRD0zRCJzdmciJiYobz0zRCExKSxk
My5ldmVuPQp0LnRhcmdldC5jbGFzc05hbWUuYmFzZVZhbC5tYXRjaCgibnYtbGVnZW5kIikmJihh
PTNEITApKSxvJiYobi09M0RpLmxlZnQsci09Cj0zRGkudG9wKTtpZihuPDB8fHI8MHx8bj5wfHxy
PmR8fGQzLmV2ZW50LnJlbGF0ZWRUYXJnZXQmJmQzLmV2ZW50LnJlbGF0ZWRUYT0KcmdldC5vd25l
clNWR0VsZW1lbnQ9M0Q9M0Q9M0R1bmRlZmluZWR8fGEpe2lmKGwmJmQzLmV2ZW50LnJlbGF0ZWRU
YXJnZXQmJmQzPQouZXZlbnQucmVsYXRlZFRhcmdldC5vd25lclNWR0VsZW1lbnQ9M0Q9M0Q9M0R1
bmRlZmluZWQmJmQzLmV2ZW50LnJlbGF0ZWRUYXI9CmdldC5jbGFzc05hbWUubWF0Y2godC5udlBv
aW50ZXJFdmVudHNDbGFzcykpcmV0dXJuO3UuZWxlbWVudE1vdXNlb3V0KHttb3VzZT0KWDpuLG1v
dXNlWTpyfSksYy5yZW5kZXJHdWlkZUxpbmUobnVsbCk7cmV0dXJufXZhciBmPTNEcy5pbnZlcnQo
bik7dS5lbGVtZW50PQpNb3VzZW1vdmUoe21vdXNlWDpuLG1vdXNlWTpyLHBvaW50WFZhbHVlOmZ9
KSxkMy5ldmVudC50eXBlPTNEPTNEPTNEImRibGNsaWM9CmsiJiZ1LmVsZW1lbnREYmxjbGljayh7
bW91c2VYOm4sbW91c2VZOnIscG9pbnRYVmFsdWU6Zn0pfXZhciBoPTNEZDMuc2VsZWN0KD0KdGhp
cykscD0zRG58fDk2MCxkPTNEcnx8NDAwLHY9M0RoLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LWlu
dGVyYWN0aXZlTGluZUxhPQp5ZXIiKS5kYXRhKFtvXSksbT0zRHYuZW50ZXIoKS5hcHBlbmQoImci
KS5hdHRyKCJjbGFzcyIsIiBudi13cmFwIG52LWludGVyYWM9CnRpdmVMaW5lTGF5ZXIiKTttLmFw
cGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtaW50ZXJhY3RpdmVHdWlkZUxpbmUiKTtpZighZj0K
KXJldHVybjtmLm9uKCJtb3VzZW1vdmUiLGcsITApLm9uKCJtb3VzZW91dCIsZywhMCkub24oImRi
bGNsaWNrIixnKSxjLnJlbmRlPQpyR3VpZGVMaW5lPTNEZnVuY3Rpb24odCl7aWYoIWEpcmV0dXJu
O3ZhciBuPTNEdi5zZWxlY3QoIi5udi1pbnRlcmFjdGl2ZUd1aWQ9CmVMaW5lIikuc2VsZWN0QWxs
KCJsaW5lIikuZGF0YSh0IT0zRG51bGw/W2UudXRpbHMuTmFOdG9aZXJvKHQpXTpbXSxTdHJpbmcp
Oz0Kbi5lbnRlcigpLmFwcGVuZCgibGluZSIpLmF0dHIoImNsYXNzIiwibnYtZ3VpZGVsaW5lIiku
YXR0cigieDEiLGZ1bmN0aW9uKGUpPQp7cmV0dXJuIGV9KS5hdHRyKCJ4MiIsZnVuY3Rpb24oZSl7
cmV0dXJuIGV9KS5hdHRyKCJ5MSIsZCkuYXR0cigieTIiLDApLG4uZXg9Cml0KCkucmVtb3ZlKCl9
fSl9dmFyIHQ9M0RlLm1vZGVscy50b29sdGlwKCksbj0zRG51bGwscj0zRG51bGwsaT0zRHtsZWZ0
OjAsdD0Kb3A6MH0scz0zRGQzLnNjYWxlLmxpbmVhcigpLG89M0RkMy5zY2FsZS5saW5lYXIoKSx1
PTNEZDMuZGlzcGF0Y2goImVsZW1lbnRNPQpvdXNlbW92ZSIsImVsZW1lbnRNb3VzZW91dCIsImVs
ZW1lbnREYmxjbGljayIpLGE9M0QhMCxmPTNEbnVsbCxsPTNEbmF2aWdhdG89CnIudXNlckFnZW50
LmluZGV4T2YoIk1TSUUiKSE9M0Q9M0QtMTtyZXR1cm4gYy5kaXNwYXRjaD0zRHUsYy50b29sdGlw
PTNEdCxjLj0KbWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGku
dG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlPQpmaW5lZCI/ZS50b3A6aS50b3AsaS5sZWZ0PTNE
dHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6aS5sZWZ0LGMpOmk9Cn0sYy53aWR0
aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPTNEZSxjKTpufSxjLmhl
aWdodD0zRGZ1bj0KY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLGMpOnJ9
LGMueFNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuPQogYXJndW1lbnRzLmxlbmd0aD8ocz0zRGUs
Yyk6c30sYy5zaG93R3VpZGVMaW5lPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW49CnRzLmxl
bmd0aD8oYT0zRGUsYyk6YX0sYy5zdmdDb250YWluZXI9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD0KPyhmPTNEZSxjKTpmfSxjfSxlLmludGVyYWN0aXZlQmlzZWN0PTNEZnVu
Y3Rpb24oZSx0LG4pe2lmKCFlIGluc3RhbmNlb2YgQXJyPQpheSlyZXR1cm4gbnVsbDt0eXBlb2Yg
biE9M0QiZnVuY3Rpb24iJiYobj0zRGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUueH0pO3ZhciA9CnI9
M0RkMy5iaXNlY3RvcihuKS5sZWZ0LGk9M0RkMy5tYXgoWzAscihlLHQpLTFdKSxzPTNEbihlW2ld
LGkpO3R5cGVvZiBzPTNEPQo9M0QidW5kZWZpbmVkIiYmKHM9M0RpKTtpZihzPTNEPTNEPTNEdCly
ZXR1cm4gaTt2YXIgbz0zRGQzLm1pbihbaSsxLGUubGVuZ3Q9CmgtMV0pLHU9M0RuKGVbb10sbyk7
cmV0dXJuIHR5cGVvZiB1PTNEPTNEInVuZGVmaW5lZCImJih1PTNEbyksTWF0aC5hYnModS10KT0K
Pj0zRE1hdGguYWJzKHMtdCk/aTpvfSxlLm5lYXJlc3RWYWx1ZUluZGV4PTNEZnVuY3Rpb24oZSx0
LG4pe3ZhciByPTNESW5maW5pPQp0eSxpPTNEbnVsbDtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9u
KGUscyl7dmFyIG89M0RNYXRoLmFicyh0LWUpO288PTNEciYmbzw9Cm4mJihyPTNEbyxpPTNEcyl9
KSxpfSxmdW5jdGlvbigpe3dpbmRvdy5udi50b29sdGlwPTNEe30sd2luZG93Lm52Lm1vZGVscy50
bz0Kb2x0aXA9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIHkoKXtpZihhKXt2YXIgZT0zRGQzLnNlbGVj
dChhKTtlLm5vZGUoKS50YWdOYW1lPQohPTNEPTNEInN2ZyImJihlPTNEZS5zZWxlY3QoInN2ZyIp
KTt2YXIgdD0zRGUubm9kZSgpP2UuYXR0cigidmlld0JveCIpOm51bGw9CjtpZih0KXt0PTNEdC5z
cGxpdCgiICIpO3ZhciBuPTNEcGFyc2VJbnQoZS5zdHlsZSgid2lkdGgiKSkvdFsyXTtsLmxlZnQ9
M0RsLj0KbGVmdCpuLGwudG9wPTNEbC50b3Aqbn19fWZ1bmN0aW9uIGIoZSl7dmFyIHQ7YT90PTNE
ZDMuc2VsZWN0KGEpOnQ9M0RkMy5zZWxlPQpjdCgiYm9keSIpO3ZhciBuPTNEdC5zZWxlY3QoIi5u
dnRvb2x0aXAiKTtyZXR1cm4gbi5ub2RlKCk9M0Q9M0Q9M0RudWxsJiYobj0KPTNEdC5hcHBlbmQo
ImRpdiIpLmF0dHIoImNsYXNzIiwibnZ0b29sdGlwICIrKHU/dToieHktdG9vbHRpcCIpKS5hdHRy
KCJpZCIsPQpoKSksbi5ub2RlKCkuaW5uZXJIVE1MPTNEZSxuLnN0eWxlKCJ0b3AiLDApLnN0eWxl
KCJsZWZ0IiwwKS5zdHlsZSgib3BhY2l0eSI9CiwwKSxuLnNlbGVjdEFsbCgiZGl2LCB0YWJsZSwg
dGQsIHRyIikuY2xhc3NlZChwLCEwKSxuLmNsYXNzZWQocCwhMCksbi5ub2RlKD0KKX1mdW5jdGlv
biB3KCl7aWYoIWMpcmV0dXJuO2lmKCFnKG4pKXJldHVybjt5KCk7dmFyIHQ9M0RsLmxlZnQsdT0z
RG8hPTNEbnVsPQpsP286bC50b3AsaD0zRGIobShuKSk7Zj0zRGg7aWYoYSl7dmFyIHA9M0RhLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJzdmciKVswXSw9CmQ9M0RwP3AuZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCk6YS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx2PTNEe2xlZnQ6MCx0b3A6MD0KfTtpZihw
KXt2YXIgRT0zRHAuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksUz0zRGEuZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCkseD0KPTNERS50b3A7aWYoeDwwKXt2YXIgVD0zRGEuZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCk7eD0zRE1hdGguYWJzKHgpPlQuaGVpZ2h0PQo/MDp4fXYudG9wPTNETWF0aC5hYnMoeC1T
LnRvcCksdi5sZWZ0PTNETWF0aC5hYnMoRS5sZWZ0LVMubGVmdCl9dCs9M0RhLm9mZnM9CmV0TGVm
dCt2LmxlZnQtMiphLnNjcm9sbExlZnQsdSs9M0RhLm9mZnNldFRvcCt2LnRvcC0yKmEuc2Nyb2xs
VG9wfXJldHVybiBzJj0KJnM+MCYmKHU9M0RNYXRoLmZsb29yKHUvcykqcyksZS50b29sdGlwLmNh
bGNUb29sdGlwUG9zaXRpb24oW3QsdV0scixpLGgpLHd9PQp2YXIgdD0zRG51bGwsbj0zRG51bGws
cj0zRCJ3IixpPTNENTAscz0zRDI1LG89M0RudWxsLHU9M0RudWxsLGE9M0RudWxsLGY9M0Q9Cm51
bGwsbD0zRHtsZWZ0Om51bGwsdG9wOm51bGx9LGM9M0QhMCxoPTNEIm52dG9vbHRpcC0iK01hdGgu
Zmxvb3IoTWF0aC5yYW5kbz0KbSgpKjFlNSkscD0zRCJudi1wb2ludGVyLWV2ZW50cy1ub25lIixk
PTNEZnVuY3Rpb24oZSx0KXtyZXR1cm4gZX0sdj0zRGZ1bmN0PQppb24oZSl7cmV0dXJuIGV9LG09
M0RmdW5jdGlvbihlKXtpZih0IT0zRG51bGwpcmV0dXJuIHQ7aWYoZT0zRD0zRG51bGwpcmV0dXI9
Cm4iIjt2YXIgbj0zRGQzLnNlbGVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpKSxy
PTNEbi5zZWxlY3RBbGwoInRoZT0KYWQiKS5kYXRhKFtlXSkuZW50ZXIoKS5hcHBlbmQoInRoZWFk
Iik7ci5hcHBlbmQoInRyIikuYXBwZW5kKCJ0ZCIpLmF0dHIoImNvPQpsc3BhbiIsMykuYXBwZW5k
KCJzdHJvbmciKS5jbGFzc2VkKCJ4LXZhbHVlIiwhMCkuaHRtbCh2KGUudmFsdWUpKTt2YXIgaT0z
RG49Ci5zZWxlY3RBbGwoInRib2R5IikuZGF0YShbZV0pLmVudGVyKCkuYXBwZW5kKCJ0Ym9keSIp
LHM9M0RpLnNlbGVjdEFsbCgidHIiKT0KLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2VyaWVz
fSkuZW50ZXIoKS5hcHBlbmQoInRyIikuY2xhc3NlZCgiaGlnaGxpZ2h0PQoiLGZ1bmN0aW9uKGUp
e3JldHVybiBlLmhpZ2hsaWdodH0pO3MuYXBwZW5kKCJ0ZCIpLmNsYXNzZWQoImxlZ2VuZC1jb2xv
ci1ndWk9CmRlIiwhMCkuYXBwZW5kKCJkaXYiKS5zdHlsZSgiYmFja2dyb3VuZC1jb2xvciIsZnVu
Y3Rpb24oZSl7cmV0dXJuIGUuY29sb3J9KT0KLHMuYXBwZW5kKCJ0ZCIpLmNsYXNzZWQoImtleSIs
ITApLmh0bWwoZnVuY3Rpb24oZSl7cmV0dXJuIGUua2V5fSkscy5hcHBlbmQoPQoidGQiKS5jbGFz
c2VkKCJ2YWx1ZSIsITApLmh0bWwoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZChlLnZhbHVlLHQpfSks
cy5zZWxlY3Q9CkFsbCgidGQiKS5lYWNoKGZ1bmN0aW9uKGUpe2lmKGUuaGlnaGxpZ2h0KXt2YXIg
dD0zRGQzLnNjYWxlLmxpbmVhcigpLmRvbWFpbj0KKFswLDFdKS5yYW5nZShbIiNmZmYiLGUuY29s
b3JdKSxuPTNELjY7ZDMuc2VsZWN0KHRoaXMpLnN0eWxlKCJib3JkZXItYm90dG9tPQotY29sb3Ii
LHQobikpLnN0eWxlKCJib3JkZXItdG9wLWNvbG9yIix0KG4pKX19KTt2YXIgbz0zRG4ubm9kZSgp
Lm91dGVySFRNTDs9CnJldHVybiBlLmZvb3RlciE9M0Q9M0R1bmRlZmluZWQmJihvKz0zRCI8ZGl2
IGNsYXNzPTNEJ2Zvb3Rlcic+IitlLmZvb3RlcisiPD0KL2Rpdj4iKSxvfSxnPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGUmJmUuc2VyaWVzJiZlLnNlcmllcy5sZW5ndGg+MD8hMDohMX07cmV0PQp1cm4g
dy5udlBvaW50ZXJFdmVudHNDbGFzcz0zRHAsdy5jb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW49Cmd0aD8odD0zRGUsdyk6dH0sdy50b29sdGlwRWxlbT0zRGZ1bmN0aW9u
KCl7cmV0dXJuIGZ9LHcuY29udGVudEdlbmVyYXRvcj0zRD0KZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHR5cGVvZiBlPTNEPTNEImZ1bmN0aW9uIiYmKG09M0RlKSx3KTptPQp9
LHcuZGF0YT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPTNEZSx3KTpu
fSx3LmdyYXZpdHk9M0RmdW49CmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNE
ZSx3KTpyfSx3LmRpc3RhbmNlPTNEZnVuY3Rpb24oZSl7cmV0dT0Kcm4gYXJndW1lbnRzLmxlbmd0
aD8oaT0zRGUsdyk6aX0sdy5zbmFwRGlzdGFuY2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
PQpudHMubGVuZ3RoPyhzPTNEZSx3KTpzfSx3LmNsYXNzZXM9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8odT0KPTNEZSx3KTp1fSx3LmNoYXJ0Q29udGFpbmVyPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLHcpPQo6YX0sdy5wb3NpdGlvbj0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsLmxlZnQ9M0R0eXBlb2YgZS5s
ZWY9CnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OmwubGVmdCxsLnRvcD0zRHR5cGVvZiBlLnRvcCE9
M0QidW5kZWZpbmVkIj9lLnRvcDpsLj0KdG9wLHcpOmx9LHcuZml4ZWRUb3A9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsdyk6b30sdy5lPQpuYWJsZWQ9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUsdyk6Y30sdy52YWx1ZUZvcm1h
dHRlcj0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHR5cGVvZiBlPTNE
PTNEImZ1bmN0aW9uIiYmKGQ9M0RlKSx3PQopOmR9LHcuaGVhZGVyRm9ybWF0dGVyPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHR5cGVvZiBlPTNEPQo9M0QiZnVuY3Rpb24i
JiYodj0zRGUpLHcpOnZ9LHcuaWQ9M0RmdW5jdGlvbigpe3JldHVybiBofSx3fSxlLnRvb2x0aXAu
c2hvdz0KPTNEZnVuY3Rpb24odCxuLHIsaSxzLG8pe3ZhciB1PTNEZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7dS5jbGFzc05hbWU9Cj0zRCJudnRvb2x0aXAgIisobz9vOiJ4eS10b29sdGlw
Iik7dmFyIGE9M0RzO2lmKCFzfHxzLnRhZ05hbWUubWF0Y2goL2d8c3ZnLz0KaSkpYT0zRGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07dS5zdHlsZS5sZWZ0PTNEMCx1LnN0
eWxlLnRvPQpwPTNEMCx1LnN0eWxlLm9wYWNpdHk9M0QwLHUuaW5uZXJIVE1MPTNEbixhLmFwcGVu
ZENoaWxkKHUpLHMmJih0WzBdPTNEdFswXS09CnMuc2Nyb2xsTGVmdCx0WzFdPTNEdFsxXS1zLnNj
cm9sbFRvcCksZS50b29sdGlwLmNhbGNUb29sdGlwUG9zaXRpb24odCxyLGksdT0KKX0sZS50b29s
dGlwLmZpbmRGaXJzdE5vblNWR1BhcmVudD0zRGZ1bmN0aW9uKGUpe3doaWxlKGUudGFnTmFtZS5t
YXRjaCgvXmd8PQpzdmckL2kpIT0zRD0zRG51bGwpZT0zRGUucGFyZW50Tm9kZTtyZXR1cm4gZX0s
ZS50b29sdGlwLmZpbmRUb3RhbE9mZnNldFRvcD0KPTNEZnVuY3Rpb24oZSx0KXt2YXIgbj0zRHQ7
ZG8gaXNOYU4oZS5vZmZzZXRUb3ApfHwobis9M0RlLm9mZnNldFRvcCk7d2hpbGUoPQplPTNEZS5v
ZmZzZXRQYXJlbnQpO3JldHVybiBufSxlLnRvb2x0aXAuZmluZFRvdGFsT2Zmc2V0TGVmdD0zRGZ1
bmN0aW9uKGUsdCk9Cnt2YXIgbj0zRHQ7ZG8gaXNOYU4oZS5vZmZzZXRMZWZ0KXx8KG4rPTNEZS5v
ZmZzZXRMZWZ0KTt3aGlsZShlPTNEZS5vZmZzZXRQYT0KcmVudCk7cmV0dXJuIG59LGUudG9vbHRp
cC5jYWxjVG9vbHRpcFBvc2l0aW9uPTNEZnVuY3Rpb24odCxuLHIsaSl7dmFyIHM9M0RwPQphcnNl
SW50KGkub2Zmc2V0SGVpZ2h0KSxvPTNEcGFyc2VJbnQoaS5vZmZzZXRXaWR0aCksdT0zRGUudXRp
bHMud2luZG93U2l6ZSg9Cikud2lkdGgsYT0zRGUudXRpbHMud2luZG93U2l6ZSgpLmhlaWdodCxm
PTNEd2luZG93LnBhZ2VZT2Zmc2V0LGw9M0R3aW5kb3cucD0KYWdlWE9mZnNldCxjLGg7YT0zRHdp
bmRvdy5pbm5lcldpZHRoPj0zRGRvY3VtZW50LmJvZHkuc2Nyb2xsV2lkdGg/YTphLTE2LHU9Cj0z
RHdpbmRvdy5pbm5lckhlaWdodD49M0Rkb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodD91OnUtMTYs
bj0zRG58fCJzIixyPTNEcj0KfHwyMDt2YXIgcD0zRGZ1bmN0aW9uKHQpe3JldHVybiBlLnRvb2x0
aXAuZmluZFRvdGFsT2Zmc2V0VG9wKHQsaCl9LGQ9M0RmdW5jPQp0aW9uKHQpe3JldHVybiBlLnRv
b2x0aXAuZmluZFRvdGFsT2Zmc2V0TGVmdCh0LGMpfTtzd2l0Y2gobil7Y2FzZSJlIjpjPTNEdFs9
CjBdLW8tcixoPTNEdFsxXS1zLzI7dmFyIHY9M0RkKGkpLG09M0RwKGkpO3Y8bCYmKGM9M0R0WzBd
K3I+bD90WzBdK3I6bC12K2MpLD0KbTxmJiYoaD0zRGYtbStoKSxtK3M+ZithJiYoaD0zRGYrYS1t
K2gtcyk7YnJlYWs7Y2FzZSJ3IjpjPTNEdFswXStyLGg9M0R0WzFdPQotcy8yO3ZhciB2PTNEZChp
KSxtPTNEcChpKTt2K28+dSYmKGM9M0R0WzBdLW8tciksbTxmJiYoaD0zRGYrNSksbStzPmYrYSYm
KGg9Cj0zRGYrYS1tK2gtcyk7YnJlYWs7Y2FzZSJuIjpjPTNEdFswXS1vLzItNSxoPTNEdFsxXSty
O3ZhciB2PTNEZChpKSxtPTNEcChpKT0KO3Y8bCYmKGM9M0RsKzUpLHYrbz51JiYoYz0zRGMtby8y
KzUpLG0rcz5mK2EmJihoPTNEZithLW0raC1zKTticmVhaztjYXNlInMiPQo6Yz0zRHRbMF0tby8y
LGg9M0R0WzFdLXMtcjt2YXIgdj0zRGQoaSksbT0zRHAoaSk7djxsJiYoYz0zRGwrNSksditvPnUm
JihjPQo9M0RjLW8vMis1KSxmPm0mJihoPTNEZik7YnJlYWs7Y2FzZSJub25lIjpjPTNEdFswXSxo
PTNEdFsxXS1yO3ZhciB2PTNEZChpKSw9Cm09M0RwKGkpfXJldHVybiBpLnN0eWxlLmxlZnQ9M0Rj
KyJweCIsaS5zdHlsZS50b3A9M0RoKyJweCIsaS5zdHlsZS5vcGFjaXR5PQo9M0QxLGkuc3R5bGUu
cG9zaXRpb249M0QiYWJzb2x1dGUiLGl9LGUudG9vbHRpcC5jbGVhbnVwPTNEZnVuY3Rpb24oKXt2
YXIgZT0KPTNEZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgibnZ0b29sdGlwIiksdD0z
RFtdO3doaWxlKGUubGVuZ3RoKXQucHVzPQpoKGVbMF0pLGVbMF0uc3R5bGUudHJhbnNpdGlvbkRl
bGF5PTNEIjAgIWltcG9ydGFudCIsZVswXS5zdHlsZS5vcGFjaXR5PTNEMCw9CmVbMF0uY2xhc3NO
YW1lPTNEIm52dG9vbHRpcC1wZW5kaW5nLXJlbW92YWwiO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt3
aGlsZSh0Lj0KbGVuZ3RoKXt2YXIgZT0zRHQucG9wKCk7ZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxk
KGUpfX0sNTAwKX19KCksZS51dGlscy53aW5kPQpvd1NpemU9M0RmdW5jdGlvbigpe3ZhciBlPTNE
e3dpZHRoOjY0MCxoZWlnaHQ6NDgwfTtyZXR1cm4gZG9jdW1lbnQuYm9keSYmZG89CmN1bWVudC5i
b2R5Lm9mZnNldFdpZHRoJiYoZS53aWR0aD0zRGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGgsZS5o
ZWlnaHQ9M0Rkbz0KY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0KSxkb2N1bWVudC5jb21wYXRNb2Rl
PTNEPTNEIkNTUzFDb21wYXQiJiZkb2N1bWVudC5kPQpvY3VtZW50RWxlbWVudCYmZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50Lm9mZnNldFdpZHRoJiYoZS53aWR0aD0zRGRvY3VtZW50LmQ9Cm9jdW1l
bnRFbGVtZW50Lm9mZnNldFdpZHRoLGUuaGVpZ2h0PTNEZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
Lm9mZnNldEhlaWdodD0KKSx3aW5kb3cuaW5uZXJXaWR0aCYmd2luZG93LmlubmVySGVpZ2h0JiYo
ZS53aWR0aD0zRHdpbmRvdy5pbm5lcldpZHRoLGUuaGVpPQpnaHQ9M0R3aW5kb3cuaW5uZXJIZWln
aHQpLGV9LGUudXRpbHMud2luZG93UmVzaXplPTNEZnVuY3Rpb24oZSl7aWYoZT0zRD0zRD0KPTNE
dW5kZWZpbmVkKXJldHVybjt2YXIgdD0zRHdpbmRvdy5vbnJlc2l6ZTt3aW5kb3cub25yZXNpemU9
M0RmdW5jdGlvbihuKXt0PQp5cGVvZiB0PTNEPTNEImZ1bmN0aW9uIiYmdChuKSxlKG4pfX0sZS51
dGlscy5nZXRDb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiA9CmFyZ3VtZW50cy5sZW5ndGg/T2Jq
ZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpPTNEPTNEPTNEIltvYmplY3QgQXJyYXldIj0K
P2Z1bmN0aW9uKGUsbil7cmV0dXJuIGUuY29sb3J8fHRbbiV0Lmxlbmd0aF19OnQ6ZS51dGlscy5k
ZWZhdWx0Q29sb3IoKX0sZS51PQp0aWxzLmRlZmF1bHRDb2xvcj0zRGZ1bmN0aW9uKCl7dmFyIGU9
M0RkMy5zY2FsZS5jYXRlZ29yeTIwKCkucmFuZ2UoKTtyZXR1cm49CiBmdW5jdGlvbih0LG4pe3Jl
dHVybiB0LmNvbG9yfHxlW24lZS5sZW5ndGhdfX0sZS51dGlscy5jdXN0b21UaGVtZT0zRGZ1bmN0
aT0Kb24oZSx0LG4pe3Q9M0R0fHxmdW5jdGlvbihlKXtyZXR1cm4gZS5rZXl9LG49M0RufHxkMy5z
Y2FsZS5jYXRlZ29yeTIwKCkucmFuPQpnZSgpO3ZhciByPTNEbi5sZW5ndGg7cmV0dXJuIGZ1bmN0
aW9uKGkscyl7dmFyIG89M0R0KGkpO3JldHVybiByfHwocj0zRG4ubGU9Cm5ndGgpLHR5cGVvZiBl
W29dIT0zRCJ1bmRlZmluZWQiP3R5cGVvZiBlW29dPTNEPTNEImZ1bmN0aW9uIj9lW29dKCk6ZVtv
XTpuWz0KLS1yXX19LGUudXRpbHMucGpheD0zRGZ1bmN0aW9uKHQsbil7ZnVuY3Rpb24gcihyKXtk
My5odG1sKHIsZnVuY3Rpb24ocil7dmFyPQogaT0zRGQzLnNlbGVjdChuKS5ub2RlKCk7aS5wYXJl
bnROb2RlLnJlcGxhY2VDaGlsZChkMy5zZWxlY3Qocikuc2VsZWN0KG4pLm49Cm9kZSgpLGkpLGUu
dXRpbHMucGpheCh0LG4pfSl9ZDMuc2VsZWN0QWxsKHQpLm9uKCJjbGljayIsZnVuY3Rpb24oKXto
aXN0b3J5Lj0KcHVzaFN0YXRlKHRoaXMuaHJlZix0aGlzLnRleHRDb250ZW50LHRoaXMuaHJlZiks
cih0aGlzLmhyZWYpLGQzLmV2ZW50LnByZXZlPQpudERlZmF1bHQoKX0pLGQzLnNlbGVjdCh3aW5k
b3cpLm9uKCJwb3BzdGF0ZSIsZnVuY3Rpb24oKXtkMy5ldmVudC5zdGF0ZSYmcig9CmQzLmV2ZW50
LnN0YXRlKX0pfSxlLnV0aWxzLmNhbGNBcHByb3hUZXh0V2lkdGg9M0RmdW5jdGlvbihlKXtpZih0
eXBlb2YgZS5zdD0KeWxlPTNEPTNEImZ1bmN0aW9uIiYmdHlwZW9mIGUudGV4dD0zRD0zRCJmdW5j
dGlvbiIpe3ZhciB0PTNEcGFyc2VJbnQoZS5zdHlsPQplKCJmb250LXNpemUiKS5yZXBsYWNlKCJw
eCIsIiIpKSxuPTNEZS50ZXh0KCkubGVuZ3RoO3JldHVybiBuKnQqLjV9cmV0dXJuIDA9Cn0sZS51
dGlscy5OYU50b1plcm89M0RmdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGUhPTNEIm51bWJlciJ8
fGlzTmFOKGUpfHxlPQo9M0Q9M0Q9M0RudWxsfHxlPTNEPTNEPTNESW5maW5pdHk/MDplfSxlLnV0
aWxzLm9wdGlvbnNGdW5jPTNEZnVuY3Rpb24oZSl7cmU9CnR1cm4gZSYmZDMubWFwKGUpLmZvckVh
Y2goZnVuY3Rpb24oZSx0KXt0eXBlb2YgdGhpc1tlXT0zRD0zRCJmdW5jdGlvbiImJnRoaT0Kc1tl
XSh0KX0uYmluZCh0aGlzKSksdGhpc30sZS5tb2RlbHMuYXhpcz0zRGZ1bmN0aW9uKCl7ZnVuY3Rp
b24gbShlKXtyZXR1cm4gPQplLmVhY2goZnVuY3Rpb24oZSl7dmFyIGk9M0RkMy5zZWxlY3QodGhp
cyksbT0zRGkuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtYXg9CmlzIikuZGF0YShbZV0pLGc9M0Rt
LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtYXhpcz0K
IikseT0zRGcuYXBwZW5kKCJnIiksYj0zRG0uc2VsZWN0KCJnIik7cCE9M0Q9M0RudWxsP3QudGlj
a3MocCk6KHQub3JpZW50KCk9Cj0zRD0zRCJ0b3AifHx0Lm9yaWVudCgpPTNEPTNEImJvdHRvbSIp
JiZ0LnRpY2tzKE1hdGguYWJzKHMucmFuZ2UoKVsxXS1zLnJhbj0KZ2UoKVswXSkvMTAwKSxiLmNh
bGwodCksdj0zRHZ8fHQuc2NhbGUoKTt2YXIgdz0zRHQudGlja0Zvcm1hdCgpO3c9M0Q9M0RudWxs
PQomJih3PTNEdi50aWNrRm9ybWF0KCkpO3ZhciBFPTNEYi5zZWxlY3RBbGwoInRleHQubnYtYXhp
c2xhYmVsIikuZGF0YShbb3x8bnU9CmxsXSk7RS5leGl0KCkucmVtb3ZlKCk7c3dpdGNoKHQub3Jp
ZW50KCkpe2Nhc2UidG9wIjpFLmVudGVyKCkuYXBwZW5kKCJ0ZXh0Ij0KKS5hdHRyKCJjbGFzcyIs
Im52LWF4aXNsYWJlbCIpO3ZhciBTPTNEcy5yYW5nZSgpLmxlbmd0aD0zRD0zRDI/cy5yYW5nZSgp
WzFdPQo6cy5yYW5nZSgpW3MucmFuZ2UoKS5sZW5ndGgtMV0rKHMucmFuZ2UoKVsxXS1zLnJhbmdl
KClbMF0pO0UuYXR0cigidGV4dC1hbmM9CmhvciIsIm1pZGRsZSIpLmF0dHIoInkiLDApLmF0dHIo
IngiLFMvMik7aWYodSl7dmFyIHg9M0RtLnNlbGVjdEFsbCgiZy5udi1heD0KaXNNYXhNaW4iKS5k
YXRhKHMuZG9tYWluKCkpO3guZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWF4
aXNNYXhNPQppbiIpLmFwcGVuZCgidGV4dCIpLHguZXhpdCgpLnJlbW92ZSgpLHguYXR0cigidHJh
bnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHU9CnJuInRyYW5zbGF0ZSgiK3MoZSkrIiwwKSJ9KS5z
ZWxlY3QoInRleHQiKS5hdHRyKCJkeSIsIi0wLjVlbSIpLmF0dHIoInkiLC10Lj0KdGlja1BhZGRp
bmcoKSkuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS50ZXh0KGZ1bmN0aW9uKGUsdCl7dmFy
IG49M0R3KGUpPQo7cmV0dXJuKCIiK24pLm1hdGNoKCJOYU4iKT8iIjpufSkseC5hdHRyKCJ0cmFu
c2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInQ9CnJhbnNsYXRlKCIrcy5yYW5nZSgpW3RdKyIs
MCkifSl9YnJlYWs7Y2FzZSJib3R0b20iOnZhciBUPTNEMzYsTj0zRDMwLEM9M0RiLj0Kc2VsZWN0
QWxsKCJnIikuc2VsZWN0KCJ0ZXh0Iik7aWYoZiUzNjApe0MuZWFjaChmdW5jdGlvbihlLHQpe3Zh
ciBuPTNEdGhpcy5nPQpldEJCb3goKS53aWR0aDtuPk4mJihOPTNEbil9KTt2YXIgaz0zRE1hdGgu
YWJzKE1hdGguc2luKGYqTWF0aC5QSS8xODApKSxUPQo9M0Qoaz9rKk46TikrMzA7Qy5hdHRyKCJ0
cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4icm90YXRlKCIrZisiIDAsMCk9CiJ9KS5z
dHlsZSgidGV4dC1hbmNob3IiLGYlMzYwPjA/InN0YXJ0IjoiZW5kIil9RS5lbnRlcigpLmFwcGVu
ZCgidGV4dCIpLmF0dD0KcigiY2xhc3MiLCJudi1heGlzbGFiZWwiKTt2YXIgUz0zRHMucmFuZ2Uo
KS5sZW5ndGg9M0Q9M0QyP3MucmFuZ2UoKVsxXTpzLnJhPQpuZ2UoKVtzLnJhbmdlKCkubGVuZ3Ro
LTFdKyhzLnJhbmdlKClbMV0tcy5yYW5nZSgpWzBdKTtFLmF0dHIoInRleHQtYW5jaG9yIiw9CiJt
aWRkbGUiKS5hdHRyKCJ5IixUKS5hdHRyKCJ4IixTLzIpO2lmKHUpe3ZhciB4PTNEbS5zZWxlY3RB
bGwoImcubnYtYXhpc01heD0KTWluIikuZGF0YShbcy5kb21haW4oKVswXSxzLmRvbWFpbigpW3Mu
ZG9tYWluKCkubGVuZ3RoLTFdXSk7eC5lbnRlcigpLmFwcGVuPQpkKCJnIikuYXR0cigiY2xhc3Mi
LCJudi1heGlzTWF4TWluIikuYXBwZW5kKCJ0ZXh0IikseC5leGl0KCkucmVtb3ZlKCkseC5hdHQ9
CnIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIrKHMoZSkrKGg/
cy5yYW5nZUJhbmQoKS8yOjApKT0KKyIsMCkifSkuc2VsZWN0KCJ0ZXh0IikuYXR0cigiZHkiLCIu
NzFlbSIpLmF0dHIoInkiLHQudGlja1BhZGRpbmcoKSkuYXR0cigiPQp0cmFuc2Zvcm0iLGZ1bmN0
aW9uKGUsdCxuKXtyZXR1cm4icm90YXRlKCIrZisiIDAsMCkifSkuc3R5bGUoInRleHQtYW5jaG9y
Iiw9CmY/ZiUzNjA+MD8ic3RhcnQiOiJlbmQiOiJtaWRkbGUiKS50ZXh0KGZ1bmN0aW9uKGUsdCl7
dmFyIG49M0R3KGUpO3JldHVybigiIj0KK24pLm1hdGNoKCJOYU4iKT8iIjpufSkseC5hdHRyKCJ0
cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiPQorKHMoZSkrKGg/cy5y
YW5nZUJhbmQoKS8yOjApKSsiLDApIn0pfWMmJkMuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihl
LHQpe3I9CmV0dXJuInRyYW5zbGF0ZSgwLCIrKHQlMj0zRD0zRDA/IjAiOiIxMiIpKyIpIn0pO2Jy
ZWFrO2Nhc2UicmlnaHQiOkUuZW50ZXIoKT0KLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwi
bnYtYXhpc2xhYmVsIiksRS5zdHlsZSgidGV4dC1hbmNob3IiLGw/Im1pZGRsPQplIjoiYmVnaW4i
KS5hdHRyKCJ0cmFuc2Zvcm0iLGw/InJvdGF0ZSg5MCkiOiIiKS5hdHRyKCJ5IixsPy1NYXRoLm1h
eChuLnJpZ2g9CnQscikrMTI6LTEwKS5hdHRyKCJ4IixsP3MucmFuZ2UoKVswXS8yOnQudGlja1Bh
ZGRpbmcoKSk7aWYodSl7dmFyIHg9M0RtLnNlbD0KZWN0QWxsKCJnLm52LWF4aXNNYXhNaW4iKS5k
YXRhKHMuZG9tYWluKCkpO3guZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzPQpzIiwibnYt
YXhpc01heE1pbiIpLmFwcGVuZCgidGV4dCIpLnN0eWxlKCJvcGFjaXR5IiwwKSx4LmV4aXQoKS5y
ZW1vdmUoKSx4LmE9CnR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xh
dGUoMCwiK3MoZSkrIikifSkuc2VsZWN0KCJ0ZXh0Ij0KKS5hdHRyKCJkeSIsIi4zMmVtIikuYXR0
cigieSIsMCkuYXR0cigieCIsdC50aWNrUGFkZGluZygpKS5zdHlsZSgidGV4dC1hbmNoPQpvciIs
InN0YXJ0IikudGV4dChmdW5jdGlvbihlLHQpe3ZhciBuPTNEdyhlKTtyZXR1cm4oIiIrbikubWF0
Y2goIk5hTiIpPyIiOm49Cn0pLHguYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVy
biJ0cmFuc2xhdGUoMCwiK3MucmFuZ2UoKVt0XSsiKSJ9KT0KLnNlbGVjdCgidGV4dCIpLnN0eWxl
KCJvcGFjaXR5IiwxKX1icmVhaztjYXNlImxlZnQiOkUuZW50ZXIoKS5hcHBlbmQoInRleHQiPQop
LmF0dHIoImNsYXNzIiwibnYtYXhpc2xhYmVsIiksRS5zdHlsZSgidGV4dC1hbmNob3IiLGw/Im1p
ZGRsZSI6ImVuZCIpLmF0dHI9CigidHJhbnNmb3JtIixsPyJyb3RhdGUoLTkwKSI6IiIpLmF0dHIo
InkiLGw/LU1hdGgubWF4KG4ubGVmdCxyKStkOi0xMCkuYXR0cj0KKCJ4IixsPy1zLnJhbmdlKClb
MF0vMjotdC50aWNrUGFkZGluZygpKTtpZih1KXt2YXIgeD0zRG0uc2VsZWN0QWxsKCJnLm52LWF4
PQppc01heE1pbiIpLmRhdGEocy5kb21haW4oKSk7eC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIo
ImNsYXNzIiwibnYtYXhpc01heE09CmluIikuYXBwZW5kKCJ0ZXh0Iikuc3R5bGUoIm9wYWNpdHki
LDApLHguZXhpdCgpLnJlbW92ZSgpLHguYXR0cigidHJhbnNmb3JtIj0KLGZ1bmN0aW9uKGUsdCl7
cmV0dXJuInRyYW5zbGF0ZSgwLCIrdihlKSsiKSJ9KS5zZWxlY3QoInRleHQiKS5hdHRyKCJkeSIs
Ii4zPQoyZW0iKS5hdHRyKCJ5IiwwKS5hdHRyKCJ4IiwtdC50aWNrUGFkZGluZygpKS5hdHRyKCJ0
ZXh0LWFuY2hvciIsImVuZCIpLnRleHQ9CihmdW5jdGlvbihlLHQpe3ZhciBuPTNEdyhlKTtyZXR1
cm4oIiIrbikubWF0Y2goIk5hTiIpPyIiOm59KSx4LmF0dHIoInRyYW5zZj0Kb3JtIixmdW5jdGlv
bihlLHQpe3JldHVybiJ0cmFuc2xhdGUoMCwiK3MucmFuZ2UoKVt0XSsiKSJ9KS5zZWxlY3QoInRl
eHQiKS5zPQp0eWxlKCJvcGFjaXR5IiwxKX19RS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSks
dSYmKHQub3JpZW50KCk9M0Q9M0Q9M0QibGU9CmZ0Inx8dC5vcmllbnQoKT0zRD0zRD0zRCJyaWdo
dCIpJiYoYi5zZWxlY3RBbGwoImciKS5lYWNoKGZ1bmN0aW9uKGUsdCl7ZDMucz0KZWxlY3QodGhp
cykuc2VsZWN0KCJ0ZXh0IikuYXR0cigib3BhY2l0eSIsMSk7aWYocyhlKTxzLnJhbmdlKClbMV0r
MTB8fHMoZSk+PQpzLnJhbmdlKClbMF0tMTApKGU+MWUtMTB8fGU8LTFlLTEwKSYmZDMuc2VsZWN0
KHRoaXMpLmF0dHIoIm9wYWNpdHkiLDApLGQzLnM9CmVsZWN0KHRoaXMpLnNlbGVjdCgidGV4dCIp
LmF0dHIoIm9wYWNpdHkiLDApfSkscy5kb21haW4oKVswXT0zRD0zRHMuZG9tYWluKD0KKVsxXSYm
cy5kb21haW4oKVswXT0zRD0zRDAmJm0uc2VsZWN0QWxsKCJnLm52LWF4aXNNYXhNaW4iKS5zdHls
ZSgib3BhY2l0eSIsPQpmdW5jdGlvbihlLHQpe3JldHVybiB0PzA6MX0pKTtpZih1JiYodC5vcmll
bnQoKT0zRD0zRD0zRCJ0b3AifHx0Lm9yaWVudCgpPQo9M0Q9M0Q9M0QiYm90dG9tIikpe3ZhciBM
PTNEW107bS5zZWxlY3RBbGwoImcubnYtYXhpc01heE1pbiIpLmVhY2goZnVuY3Rpb249CihlLHQp
e3RyeXt0P0wucHVzaChzKGUpLXRoaXMuZ2V0QkJveCgpLndpZHRoLTQpOkwucHVzaChzKGUpK3Ro
aXMuZ2V0QkJveCgpLj0Kd2lkdGgrNCl9Y2F0Y2gobil7dD9MLnB1c2gocyhlKS00KTpMLnB1c2go
cyhlKSs0KX19KSxiLnNlbGVjdEFsbCgiZyIpLmVhY2goPQpmdW5jdGlvbihlLHQpe2lmKHMoZSk8
TFswXXx8cyhlKT5MWzFdKWU+MWUtMTB8fGU8LTFlLTEwP2QzLnNlbGVjdCh0aGlzKS5yZW09Cm92
ZSgpOmQzLnNlbGVjdCh0aGlzKS5zZWxlY3QoInRleHQiKS5yZW1vdmUoKX0pfWEmJmIuc2VsZWN0
QWxsKCIudGljayIpLmZpbD0KdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFwYXJzZUZsb2F0KE1hdGgu
cm91bmQoZS5fX2RhdGFfXyoxZTUpLzFlNikmJmUuX19kYXRhPQpfXyE9M0Q9M0R1bmRlZmluZWR9
KS5jbGFzc2VkKCJ6ZXJvIiwhMCksdj0zRHMuY29weSgpfSksbX12YXIgdD0zRGQzLnN2Zy5heGk9
CnMoKSxuPTNEe3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSxyPTNENzUsaT0zRDYwLHM9
M0RkMy5zY2FsZS5saW5lYXIoKT0KLG89M0RudWxsLHU9M0QhMCxhPTNEITAsZj0zRDAsbD0zRCEw
LGM9M0QhMSxoPTNEITEscD0zRG51bGwsZD0zRDEyO3Quc2NhbGUoPQpzKS5vcmllbnQoImJvdHRv
bSIpLnRpY2tGb3JtYXQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KTt2YXIgdjtyZXR1cm4gbS5heGlz
PQo9M0R0LGQzLnJlYmluZChtLHQsIm9yaWVudCIsInRpY2tWYWx1ZXMiLCJ0aWNrU3ViZGl2aWRl
IiwidGlja1NpemUiLCJ0aWNrUGE9CmRkaW5nIiwidGlja0Zvcm1hdCIpLGQzLnJlYmluZChtLHMs
ImRvbWFpbiIsInJhbmdlIiwicmFuZ2VCYW5kIiwicmFuZ2VCYW5kcz0KIiksbS5vcHRpb25zPTNE
ZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKG0pLG0ubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyPQpndW1lbnRzLmxlbmd0aD8obi50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/
ZS50b3A6bi50b3Asbi5yaWdodD0zRHQ9CnlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5y
aWdodDpuLnJpZ2h0LG4uYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRD0KInVuZGVmaW5lZCI/
ZS5ib3R0b206bi5ib3R0b20sbi5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9l
LmxlZnQ6PQpuLmxlZnQsbSk6bn0sbS53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhyPTNEZSxtKTpyfSxtLnQ9Cmlja3M9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8ocD0zRGUsbSk6cH0sbS5oZWlnaHQ9M0RmdW5jdGlvbj0KKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhpPTNEZSxtKTppfSxtLmF4aXNMYWJlbD0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhPQpyZ3VtZW50cy5sZW5ndGg/KG89M0RlLG0pOm99LG0uc2hvd01heE1pbj0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGU9Cm5ndGg/KHU9M0RlLG0pOnV9LG0uaGlnaGxp
Z2h0WmVybz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPQo9M0RlLG0p
OmF9LG0uc2NhbGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0zRGUs
dC5zY2FsZShzKSw9Cmg9M0R0eXBlb2Ygcy5yYW5nZUJhbmRzPTNEPTNEImZ1bmN0aW9uIixkMy5y
ZWJpbmQobSxzLCJkb21haW4iLCJyYW5nZSIsInJhbj0KZ2VCYW5kIiwicmFuZ2VCYW5kcyIpLG0p
OnN9LG0ucm90YXRlWUxhYmVsPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sPQplbmd0
aD8obD0zRGUsbSk6bH0sbS5yb3RhdGVMYWJlbHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oZj0KPTNEZSxtKTpmfSxtLnN0YWdnZXJMYWJlbHM9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUsbSk6PQpjfSxtLmF4aXNMYWJlbERpc3RhbmNl
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9M0RlLG0pOmR9LG09Cn0s
ZS5tb2RlbHMuaGlzdG9yaWNhbEJhcj0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdyhFKXtyZXR1cm4g
RS5lYWNoKGZ1bmN0aW9uKD0Kdyl7dmFyIEU9M0RuLXQubGVmdC10LnJpZ2h0LFM9M0RyLXQudG9w
LXQuYm90dG9tLFQ9M0RkMy5zZWxlY3QodGhpcyk7cy5kb21hPQppbihkfHxkMy5leHRlbnQod1sw
XS52YWx1ZXMubWFwKHUpLmNvbmNhdChmKSkpLGM/cy5yYW5nZShtfHxbRSouNS93WzBdLnZhbHU9
CmVzLmxlbmd0aCxFKih3WzBdLnZhbHVlcy5sZW5ndGgtLjUpL3dbMF0udmFsdWVzLmxlbmd0aF0p
OnMucmFuZ2UobXx8WzAsRV0pLD0Kby5kb21haW4odnx8ZDMuZXh0ZW50KHdbMF0udmFsdWVzLm1h
cChhKS5jb25jYXQobCkpKS5yYW5nZShnfHxbUywwXSkscy5kb21hPQppbigpWzBdPTNEPTNEPTNE
cy5kb21haW4oKVsxXSYmKHMuZG9tYWluKClbMF0/cy5kb21haW4oW3MuZG9tYWluKClbMF0tcy5k
b209CmFpbigpWzBdKi4wMSxzLmRvbWFpbigpWzFdK3MuZG9tYWluKClbMV0qLjAxXSk6cy5kb21h
aW4oWy0xLDFdKSksby5kb21haW4oKT0KWzBdPTNEPTNEPTNEby5kb21haW4oKVsxXSYmKG8uZG9t
YWluKClbMF0/by5kb21haW4oW28uZG9tYWluKClbMF0rby5kb21haW4oPQopWzBdKi4wMSxvLmRv
bWFpbigpWzFdLW8uZG9tYWluKClbMV0qLjAxXSk6by5kb21haW4oWy0xLDFdKSk7dmFyIE49M0RU
LnNlbGU9CmN0QWxsKCJnLm52LXdyYXAubnYtaGlzdG9yaWNhbEJhci0iK2kpLmRhdGEoW3dbMF0u
dmFsdWVzXSksQz0zRE4uZW50ZXIoKS5hcD0KcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBu
di13cmFwIG52LWhpc3RvcmljYWxCYXItIitpKSxrPTNEQy5hcHBlbmQoImRlPQpmcyIpLEw9M0RD
LmFwcGVuZCgiZyIpLEE9M0ROLnNlbGVjdCgiZyIpO0wuYXBwZW5kKCJnIikuYXR0cigiY2xhc3Mi
LCJudi1iYXI9CnMiKSxOLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIr
dC50b3ArIikiKSxULm9uKCJjbGljayIsZnVuYz0KdGlvbihlLHQpe3kuY2hhcnRDbGljayh7ZGF0
YTplLGluZGV4OnQscG9zOmQzLmV2ZW50LGlkOml9KX0pLGsuYXBwZW5kKCJjbGlwPQpQYXRoIiku
YXR0cigiaWQiLCJudi1jaGFydC1jbGlwLXBhdGgtIitpKS5hcHBlbmQoInJlY3QiKSxOLnNlbGVj
dCgiI252LWNoYXI9CnQtY2xpcC1wYXRoLSIraSsiIHJlY3QiKS5hdHRyKCJ3aWR0aCIsRSkuYXR0
cigiaGVpZ2h0IixTKSxBLmF0dHIoImNsaXAtcGF0aD0KIixoPyJ1cmwoI252LWNoYXJ0LWNsaXAt
cGF0aC0iK2krIikiOiIiKTt2YXIgTz0zRE4uc2VsZWN0KCIubnYtYmFycyIpLnNlbGVjPQp0QWxs
KCIubnYtYmFyIikuZGF0YShmdW5jdGlvbihlKXtyZXR1cm4gZX0sZnVuY3Rpb24oZSx0KXtyZXR1
cm4gdShlLHQpfSk7Ty49CmV4aXQoKS5yZW1vdmUoKTt2YXIgTT0zRE8uZW50ZXIoKS5hcHBlbmQo
InJlY3QiKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IixmdW5jdD0KaW9uKHQsbil7cmV0dXJuIGUudXRp
bHMuTmFOdG9aZXJvKG8oTWF0aC5tYXgoMCxhKHQsbikpKSl9KS5hdHRyKCJoZWlnaHQiLGZ1PQpu
Y3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8oTWF0aC5hYnMobyhhKHQsbikpLW8o
MCkpKX0pLmF0dHIoInRyYW49CnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFuc2xhdGUo
Iisocyh1KGUsdCkpLUUvd1swXS52YWx1ZXMubGVuZ3RoKi40NT0KKSsiLDApIn0pLm9uKCJtb3Vz
ZW92ZXIiLGZ1bmN0aW9uKGUsdCl7aWYoIWIpcmV0dXJuO2QzLnNlbGVjdCh0aGlzKS5jbGFzc2Vk
PQooImhvdmVyIiwhMCkseS5lbGVtZW50TW91c2VvdmVyKHtwb2ludDplLHNlcmllczp3WzBdLHBv
czpbcyh1KGUsdCkpLG8oYShlLHQ9CikpXSxwb2ludEluZGV4OnQsc2VyaWVzSW5kZXg6MCxlOmQz
LmV2ZW50fSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKGUsdCl7aT0KZighYilyZXR1cm47ZDMu
c2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMSkseS5lbGVtZW50TW91c2VvdXQoe3BvaW50
OmUsPQpzZXJpZXM6d1swXSxwb2ludEluZGV4OnQsc2VyaWVzSW5kZXg6MCxlOmQzLmV2ZW50fSl9
KS5vbigiY2xpY2siLGZ1bmN0aW9uKGU9Cix0KXtpZighYilyZXR1cm47eS5lbGVtZW50Q2xpY2so
e3ZhbHVlOmEoZSx0KSxkYXRhOmUsaW5kZXg6dCxwb3M6W3ModShlLHQpKT0KLG8oYShlLHQpKV0s
ZTpkMy5ldmVudCxpZDppfSksZDMuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiZGJsY2xp
Y2siLGZ1PQpuY3Rpb24oZSx0KXtpZighYilyZXR1cm47eS5lbGVtZW50RGJsQ2xpY2soe3ZhbHVl
OmEoZSx0KSxkYXRhOmUsaW5kZXg6dCxwb3M9Cjpbcyh1KGUsdCkpLG8oYShlLHQpKV0sZTpkMy5l
dmVudCxpZDppfSksZDMuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9KTtPLmF0dD0KcigiZmlsbCIs
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChlLHQpfSkuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCxu
KXtyZXR1cm4oPQphKGUsdCk8MD8ibnYtYmFyIG5lZ2F0aXZlIjoibnYtYmFyIHBvc2l0aXZlIikr
IiBudi1iYXItIituKyItIit0fSkuYXR0cigidHI9CmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0
dXJuInRyYW5zbGF0ZSgiKyhzKHUoZSx0KSktRS93WzBdLnZhbHVlcy5sZW5ndGgqLj0KNDUpKyIs
MCkifSkuYXR0cigid2lkdGgiLEUvd1swXS52YWx1ZXMubGVuZ3RoKi45KSxPLmF0dHIoInkiLGZ1
bmN0aW9uKHQsbil7PQp2YXIgcj0zRGEodCxuKTwwP28oMCk6bygwKS1vKGEodCxuKSk8MT9vKDAp
LTE6byhhKHQsbikpO3JldHVybiBlLnV0aWxzLk5hTnQ9Cm9aZXJvKHIpfSkuYXR0cigiaGVpZ2h0
IixmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhNYXRoLm1heChNYT0KdGgu
YWJzKG8oYSh0LG4pKS1vKDApKSwxKSl9KX0pLHd9dmFyIHQ9M0R7dG9wOjAscmlnaHQ6MCxib3R0
b206MCxsZWZ0OjB9LG49Cj0zRDk2MCxyPTNENTAwLGk9M0RNYXRoLmZsb29yKE1hdGgucmFuZG9t
KCkqMWU0KSxzPTNEZDMuc2NhbGUubGluZWFyKCksbz0zRD0KZDMuc2NhbGUubGluZWFyKCksdT0z
RGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9LGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS55fSxmPQo9
M0RbXSxsPTNEWzBdLGM9M0QhMSxoPTNEITAscD0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCksZCx2
LG0sZyx5PTNEZDMuZGlzcGE9CnRjaCgiY2hhcnRDbGljayIsImVsZW1lbnRDbGljayIsImVsZW1l
bnREYmxDbGljayIsImVsZW1lbnRNb3VzZW92ZXIiLCJlbGVtZT0KbnRNb3VzZW91dCIpLGI9M0Qh
MDtyZXR1cm4gdy5oaWdobGlnaHRQb2ludD0zRGZ1bmN0aW9uKGUsdCl7ZDMuc2VsZWN0KCIubnYt
PQpoaXN0b3JpY2FsQmFyLSIraSkuc2VsZWN0KCIubnYtYmFycyAubnYtYmFyLTAtIitlKS5jbGFz
c2VkKCJob3ZlciIsdCl9LHcuY2w9CmVhckhpZ2hsaWdodHM9M0RmdW5jdGlvbigpe2QzLnNlbGVj
dCgiLm52LWhpc3RvcmljYWxCYXItIitpKS5zZWxlY3QoIi5udi1iYT0KcnMgLm52LWJhci5ob3Zl
ciIpLmNsYXNzZWQoImhvdmVyIiwhMSl9LHcuZGlzcGF0Y2g9M0R5LHcub3B0aW9ucz0zRGUudXRp
bHMuPQpvcHRpb25zRnVuYy5iaW5kKHcpLHcueD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyh1PTNEZSx3KTp1fSw9CncueT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhhPTNEZSx3KTphfSx3Lm1hcmdpbj0zRGZ1bmN0aW9uKD0KZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHQudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9w
OnQudG9wPQosdC5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6
dC5yaWdodCx0LmJvdHRvbT0zRHR5cGVvZiA9CmUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90
dG9tOnQuYm90dG9tLHQubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaT0KbmVkIj9lLmxl
ZnQ6dC5sZWZ0LHcpOnR9LHcud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8obj0KPTNEZSx3KTpufSx3LmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhyPTNEZSx3KTpyfSx3LnhTPQpjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHM9M0RlLHcpOnN9LHcueVNjYWxlPTNEZnVuY3Rpb249CihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsdyk6b30sdy54RG9tYWluPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZz0KdW1lbnRzLmxlbmd0aD8oZD0zRGUsdyk6ZH0sdy55RG9tYWluPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/PQoodj0zRGUsdyk6dn0sdy54UmFuZ2U9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0zRGUsdyk6bX0sdy49CnlSYW5n
ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPTNEZSx3KTpnfSx3LmZv
cmNlWD0zRGZ1bmN0aT0Kb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLHcpOmZ9
LHcuZm9yY2VZPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyPQpndW1lbnRzLmxlbmd0aD8obD0zRGUs
dyk6bH0sdy5wYWREYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9Cj8o
Yz0zRGUsdyk6Y30sdy5jbGlwRWRnZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhoPTNEZSx3KTpofT0KLHcuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8ocD0zRGUudXRpbHMuZ2V0Q29sb3IodCksdyk6PQpwfSx3LmlkPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9M0RlLHcpOml9LHcuaW50ZXJhY3RpdmU9M0Q9
CmZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPTNEITEsdyk6Yn0sd30sZS5t
b2RlbHMuYnVsbGV0PTNEZnVuYz0KdGlvbigpe2Z1bmN0aW9uIG0oZSl7cmV0dXJuIGUuZWFjaChm
dW5jdGlvbihlLG4pe3ZhciBwPTNEYy10LmxlZnQtdC5yaWdodCxtPQo9M0RoLXQudG9wLXQuYm90
dG9tLGc9M0RkMy5zZWxlY3QodGhpcykseT0zRGkuY2FsbCh0aGlzLGUsbikuc2xpY2UoKS5zb3J0
KGQ9CjMuZGVzY2VuZGluZyksYj0zRHMuY2FsbCh0aGlzLGUsbikuc2xpY2UoKS5zb3J0KGQzLmRl
c2NlbmRpbmcpLHc9M0RvLmNhbGwodD0KaGlzLGUsbikuc2xpY2UoKS5zb3J0KGQzLmRlc2NlbmRp
bmcpLEU9M0R1LmNhbGwodGhpcyxlLG4pLnNsaWNlKCksUz0zRGEuY2FsPQpsKHRoaXMsZSxuKS5z
bGljZSgpLHg9M0RmLmNhbGwodGhpcyxlLG4pLnNsaWNlKCksVD0zRGQzLnNjYWxlLmxpbmVhcigp
LmRvbWE9CmluKGQzLmV4dGVudChkMy5tZXJnZShbbCx5XSkpKS5yYW5nZShyP1twLDBdOlswLHBd
KSxOPTNEdGhpcy5fX2NoYXJ0X198fGQzLj0Kc2NhbGUubGluZWFyKCkuZG9tYWluKFswLEluZmlu
aXR5XSkucmFuZ2UoVC5yYW5nZSgpKTt0aGlzLl9fY2hhcnRfXz0zRFQ7dmFyPQogQz0zRGQzLm1p
bih5KSxrPTNEZDMubWF4KHkpLEw9M0R5WzFdLEE9M0RnLnNlbGVjdEFsbCgiZy5udi13cmFwLm52
LWJ1bGxldCI9CikuZGF0YShbZV0pLE89M0RBLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xh
c3MiLCJudmQzIG52LXdyYXAgbnYtYnVsbGV0Ij0KKSxNPTNETy5hcHBlbmQoImciKSxfPTNEQS5z
ZWxlY3QoImciKTtNLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwibnYtcmFuPQpnZSBudi1y
YW5nZU1heCIpLE0uYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJudi1yYW5nZSBudi1yYW5n
ZUF2ZyIpLE0uYXA9CnBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm52LXJhbmdlIG52LXJhbmdl
TWluIiksTS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbD0KYXNzIiwibnYtbWVhc3VyZSIpLE0uYXBw
ZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJudi1tYXJrZXJUcmlhbmdsZSIpLEEuYXR0PQpyKCJ0
cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0LmxlZnQrIiwiK3QudG9wKyIpIik7dmFyIEQ9M0RmdW5j
dGlvbihlKXtyZXR1cm49CiBNYXRoLmFicyhOKGUpLU4oMCkpfSxQPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIE1hdGguYWJzKFQoZSktVCgwKSl9LEg9M0RmdW5jdD0KaW9uKGUpe3JldHVybiBlPDA/Tihl
KTpOKDApfSxCPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGU8MD9UKGUpOlQoMCl9O18uc2VsZWN0PQoo
InJlY3QubnYtcmFuZ2VNYXgiKS5hdHRyKCJoZWlnaHQiLG0pLmF0dHIoIndpZHRoIixQKGs+MD9r
OkMpKS5hdHRyKCJ4IixCKGs9Cj4wP2s6QykpLmRhdHVtKGs+MD9rOkMpLF8uc2VsZWN0KCJyZWN0
Lm52LXJhbmdlQXZnIikuYXR0cigiaGVpZ2h0IixtKS5hdHRyKD0KIndpZHRoIixQKEwpKS5hdHRy
KCJ4IixCKEwpKS5kYXR1bShMKSxfLnNlbGVjdCgicmVjdC5udi1yYW5nZU1pbiIpLmF0dHIoImhl
PQppZ2h0IixtKS5hdHRyKCJ3aWR0aCIsUChrKSkuYXR0cigieCIsQihrKSkuYXR0cigid2lkdGgi
LFAoaz4wP0M6aykpLmF0dHIoIng9CiIsQihrPjA/QzprKSkuZGF0dW0oaz4wP0M6ayksXy5zZWxl
Y3QoInJlY3QubnYtbWVhc3VyZSIpLnN0eWxlKCJmaWxsIixkKS5hdD0KdHIoImhlaWdodCIsbS8z
KS5hdHRyKCJ5IixtLzMpLmF0dHIoIndpZHRoIix3PDA/VCgwKS1UKHdbMF0pOlQod1swXSktVCgw
KSkuPQphdHRyKCJ4IixCKHcpKS5vbigibW91c2VvdmVyIixmdW5jdGlvbigpe3YuZWxlbWVudE1v
dXNlb3Zlcih7dmFsdWU6d1swXSxsYWI9CmVsOnhbMF18fCJDdXJyZW50Iixwb3M6W1Qod1swXSks
bS8yXX0pfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbigpe3YuZWxlbWVudD0KTW91c2VvdXQoe3Zh
bHVlOndbMF0sbGFiZWw6eFswXXx8IkN1cnJlbnQifSl9KTt2YXIgaj0zRG0vNjtiWzBdP18uc2Vs
ZWN0QWxsPQooInBhdGgubnYtbWFya2VyVHJpYW5nbGUiKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0
aW9uKGUpe3JldHVybiJ0cmFuc2xhdGUoIis9ClQoYlswXSkrIiwiK20vMisiKSJ9KS5hdHRyKCJk
IiwiTTAsIitqKyJMIitqKyIsIisgLWorIiAiKyAtaisiLCIrIC1qKyJaIikubz0KbigibW91c2Vv
dmVyIixmdW5jdGlvbigpe3YuZWxlbWVudE1vdXNlb3Zlcih7dmFsdWU6YlswXSxsYWJlbDpTWzBd
fHwiUHJldmlvPQp1cyIscG9zOltUKGJbMF0pLG0vMl19KX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rp
b24oKXt2LmVsZW1lbnRNb3VzZW91dCh7dmFsdWU9CjpiWzBdLGxhYmVsOlNbMF18fCJQcmV2aW91
cyJ9KX0pOl8uc2VsZWN0QWxsKCJwYXRoLm52LW1hcmtlclRyaWFuZ2xlIikucmVtbz0KdmUoKSxB
LnNlbGVjdEFsbCgiLm52LXJhbmdlIikub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oZSx0KXt2YXIg
bj0zREVbdF18fCh0PQo/dD0zRD0zRDE/Ik1lYW4iOiJNaW5pbXVtIjoiTWF4aW11bSIpO3YuZWxl
bWVudE1vdXNlb3Zlcih7dmFsdWU6ZSxsYWJlbDpuLHA9Cm9zOltUKGUpLG0vMl19KX0pLm9uKCJt
b3VzZW91dCIsZnVuY3Rpb24oZSx0KXt2YXIgbj0zREVbdF18fCh0P3Q9M0Q9M0QxPyJNZT0KYW4i
OiJNaW5pbXVtIjoiTWF4aW11bSIpO3YuZWxlbWVudE1vdXNlb3V0KHt2YWx1ZTplLGxhYmVsOm59
KX0pfSksbX12YXIgdD0KPTNEe3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSxuPTNEImxl
ZnQiLHI9M0QhMSxpPTNEZnVuY3Rpb24oZSl7cmV0dXJuPQogZS5yYW5nZXN9LHM9M0RmdW5jdGlv
bihlKXtyZXR1cm4gZS5tYXJrZXJzfSxvPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUubWVhc3U9CnJl
c30sdT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnJhbmdlTGFiZWxzP2UucmFuZ2VMYWJlbHM6W119
LGE9M0RmdW5jdGlvbihlKT0Ke3JldHVybiBlLm1hcmtlckxhYmVscz9lLm1hcmtlckxhYmVsczpb
XX0sZj0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLm1lYXN1cmVMPQphYmVscz9lLm1lYXN1cmVMYWJl
bHM6W119LGw9M0RbMF0sYz0zRDM4MCxoPTNEMzAscD0zRG51bGwsZD0zRGUudXRpbHMuZ2V0Q289
CmxvcihbIiMxZjc3YjQiXSksdj0zRGQzLmRpc3BhdGNoKCJlbGVtZW50TW91c2VvdmVyIiwiZWxl
bWVudE1vdXNlb3V0Iik7cmV0dT0Kcm4gbS5kaXNwYXRjaD0zRHYsbS5vcHRpb25zPTNEZS51dGls
cy5vcHRpb25zRnVuYy5iaW5kKG0pLG0ub3JpZW50PTNEZnVuY3RpPQpvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8obj0zRGUscj0zRG49M0Q9M0QicmlnaHQifHxuPTNEPTNEImJvdHRvbSIs
bSk9CjpufSxtLnJhbmdlcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhp
PTNEZSxtKTppfSxtLm1hcmtlcnM9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhzPTNEZSxtKTpzfSxtLm1lYXN1cmVzPTNEZnVuY3Rpb24oZT0KKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8obz0zRGUsbSk6b30sbS5mb3JjZVg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lPQpudHMubGVuZ3RoPyhsPTNEZSxtKTpsfSxtLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KGM9M0Q9CmUsbSk6Y30sbS5oZWlnaHQ9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsbSk6aH0sbS5tYXJnaT0Kbj0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5k
ZWZpbmVkPQoiP2UudG9wOnQudG9wLHQucmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZp
bmVkIj9lLnJpZ2h0OnQucmlnaHQsdC5ib3Q9CnRvbT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5k
ZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHRvbSx0LmxlZnQ9M0R0eXBlb2YgZS5sZT0KZnQhPTNEInVu
ZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxtKTp0fSxtLnRpY2tGb3JtYXQ9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJnPQp1bWVudHMubGVuZ3RoPyhwPTNEZSxtKTpwfSxtLmNvbG9yPTNEZnVuY3Rpb24o
dCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9Cj0zRGUudXRpbHMuZ2V0Q29sb3IodCksbSk6
ZH0sbX0sZS5tb2RlbHMuYnVsbGV0Q2hhcnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uID0KbShlKXty
ZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKG4saCl7dmFyIGc9M0RkMy5zZWxlY3QodGhpcykseT0zRChh
fHxwYXJzZUludChnPQouc3R5bGUoIndpZHRoIikpfHw5NjApLWkubGVmdC1pLnJpZ2h0LGI9M0Rm
LWkudG9wLWkuYm90dG9tLHc9M0R0aGlzO20udXBkYXQ9CmU9M0RmdW5jdGlvbigpe20oZSl9LG0u
Y29udGFpbmVyPTNEdGhpcztpZighbnx8IXMuY2FsbCh0aGlzLG4saCkpe3ZhciBFPTNEZz0KLnNl
bGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW3BdKTtyZXR1cm4gRS5lbnRlcigpLmFwcGVuZCgi
dGV4dCIpLmF0dHIoImNsPQphc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0i
KS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKSxFLmE9CnR0cigieCIsaS5sZWZ0K3kvMiku
YXR0cigieSIsMTgraS50b3ArYi8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksbX1nLj0K
c2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtb3ZlKCk7dmFyIFM9M0RzLmNhbGwodGhpcyxuLGgp
LnNsaWNlKCkuc29ydChkMy5kPQplc2NlbmRpbmcpLHg9M0RvLmNhbGwodGhpcyxuLGgpLnNsaWNl
KCkuc29ydChkMy5kZXNjZW5kaW5nKSxUPTNEdS5jYWxsKHRoaXM9CixuLGgpLnNsaWNlKCkuc29y
dChkMy5kZXNjZW5kaW5nKSxOPTNEZy5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1idWxsZXRDaGFy
dD0KIikuZGF0YShbbl0pLEM9M0ROLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJu
dmQzIG52LXdyYXAgbnYtYnVsbGV0PQpDaGFydCIpLGs9M0RDLmFwcGVuZCgiZyIpLEw9M0ROLnNl
bGVjdCgiZyIpO2suYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi09CmJ1bGxldFdyYXAiKSxr
LmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtdGl0bGVzIiksTi5hdHRyKCJ0cmFuc2Zvcm0i
LCJ0cj0KYW5zbGF0ZSgiK2kubGVmdCsiLCIraS50b3ArIikiKTt2YXIgQT0zRGQzLnNjYWxlLmxp
bmVhcigpLmRvbWFpbihbMCxNYXRoLm1hPQp4KFNbMF0seFswXSxUWzBdKV0pLnJhbmdlKHI/W3ks
MF06WzAseV0pLE89M0R0aGlzLl9fY2hhcnRfX3x8ZDMuc2NhbGUubGluZWE9CnIoKS5kb21haW4o
WzAsSW5maW5pdHldKS5yYW5nZShBLnJhbmdlKCkpO3RoaXMuX19jaGFydF9fPTNEQTt2YXIgTT0z
RGZ1bmN0aT0Kb24oZSl7cmV0dXJuIE1hdGguYWJzKE8oZSktTygwKSl9LF89M0RmdW5jdGlvbihl
KXtyZXR1cm4gTWF0aC5hYnMoQShlKS1BKDApPQopfSxEPTNEay5zZWxlY3QoIi5udi10aXRsZXMi
KS5hcHBlbmQoImciKS5hdHRyKCJ0ZXh0LWFuY2hvciIsImVuZCIpLmF0dHIoInQ9CnJhbnNmb3Jt
IiwidHJhbnNsYXRlKC02LCIrKGYtaS50b3AtaS5ib3R0b20pLzIrIikiKTtELmFwcGVuZCgidGV4
dCIpLmF0dHIoIj0KY2xhc3MiLCJudi10aXRsZSIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGUu
dGl0bGV9KSxELmFwcGVuZCgidGV4dCIpLmF0dHIoPQoiY2xhc3MiLCJudi1zdWJ0aXRsZSIpLmF0
dHIoImR5IiwiMWVtIikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZS5zdWJ0aXRsZX09CiksdC53
aWR0aCh5KS5oZWlnaHQoYik7dmFyIFA9M0RMLnNlbGVjdCgiLm52LWJ1bGxldFdyYXAiKTtkMy50
cmFuc2l0aW9uKFApLj0KY2FsbCh0KTt2YXIgSD0zRGx8fEEudGlja0Zvcm1hdCh5LzEwMCksQj0z
REwuc2VsZWN0QWxsKCJnLm52LXRpY2siKS5kYXRhKEEuPQp0aWNrcyh5LzUwKSxmdW5jdGlvbihl
KXtyZXR1cm4gdGhpcy50ZXh0Q29udGVudHx8SChlKX0pLGo9M0RCLmVudGVyKCkuYXBwZW49CmQo
ImciKS5hdHRyKCJjbGFzcyIsIm52LXRpY2siKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUp
e3JldHVybiJ0cmFuc2xhdD0KZSgiK08oZSkrIiwwKSJ9KS5zdHlsZSgib3BhY2l0eSIsMWUtNik7
ai5hcHBlbmQoImxpbmUiKS5hdHRyKCJ5MSIsYikuYXR0cigiPQp5MiIsYio3LzYpLGouYXBwZW5k
KCJ0ZXh0IikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJkeSIsIjFlbSIpLmE9
CnR0cigieSIsYio3LzYpLnRleHQoSCk7dmFyIEY9M0RkMy50cmFuc2l0aW9uKEIpLmF0dHIoInRy
YW5zZm9ybSIsZnVuY3Rpb24oZT0KKXtyZXR1cm4idHJhbnNsYXRlKCIrQShlKSsiLDApIn0pLnN0
eWxlKCJvcGFjaXR5IiwxKTtGLnNlbGVjdCgibGluZSIpLmF0dHIoPQoieTEiLGIpLmF0dHIoInky
IixiKjcvNiksRi5zZWxlY3QoInRleHQiKS5hdHRyKCJ5IixiKjcvNiksZDMudHJhbnNpdGlvbihC
LmU9CnhpdCgpKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUpe3JldHVybiJ0cmFuc2xhdGUo
IitBKGUpKyIsMCkifSkuc3R5bGUoIj0Kb3BhY2l0eSIsMWUtNikucmVtb3ZlKCksZC5vbigidG9v
bHRpcFNob3ciLGZ1bmN0aW9uKGUpe2Uua2V5PTNEbi50aXRsZSxjJiZ2PQooZSx3LnBhcmVudE5v
ZGUpfSl9KSxkMy50aW1lci5mbHVzaCgpLG19dmFyIHQ9M0RlLm1vZGVscy5idWxsZXQoKSxuPTNE
ImxlZnQ9CiIscj0zRCExLGk9M0R7dG9wOjUscmlnaHQ6NDAsYm90dG9tOjIwLGxlZnQ6MTIwfSxz
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUucj0KYW5nZXN9LG89M0RmdW5jdGlvbihlKXtyZXR1cm4g
ZS5tYXJrZXJzfSx1PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUubWVhc3VyZXN9PQosYT0zRG51bGws
Zj0zRDU1LGw9M0RudWxsLGM9M0QhMCxoPTNEZnVuY3Rpb24oZSx0LG4scixpKXtyZXR1cm4iPGgz
PiIrdCsiPC89CmgzPiIrIjxwPiIrbisiPC9wPiJ9LHA9M0QiTm8gRGF0YSBBdmFpbGFibGUuIixk
PTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93Ij0KLCJ0b29sdGlwSGlkZSIpLHY9M0RmdW5jdGlv
bih0LG4pe3ZhciByPTNEdC5wb3NbMF0rKG4ub2Zmc2V0TGVmdHx8MCkraS5sZWZ0PQoscz0zRHQu
cG9zWzFdKyhuLm9mZnNldFRvcHx8MCkraS50b3Asbz0zRGgodC5rZXksdC5sYWJlbCx0LnZhbHVl
LHQsbSk7ZS50b289Cmx0aXAuc2hvdyhbcixzXSxvLHQudmFsdWU8MD8iZSI6InciLG51bGwsbil9
O3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TT0Kb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rp
b24oZSl7ZC50b29sdGlwU2hvdyhlKX0pLHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzPQplb3V0
LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2QudG9vbHRpcEhpZGUoZSl9KSxkLm9uKCJ0b29sdGlwSGlk
ZSIsZnVuY3Rpb24oKXs9CmMmJmUudG9vbHRpcC5jbGVhbnVwKCl9KSxtLmRpc3BhdGNoPTNEZCxt
LmJ1bGxldD0zRHQsZDMucmViaW5kKG0sdCwiY29sb3IiKT0KLG0ub3B0aW9ucz0zRGUudXRpbHMu
b3B0aW9uc0Z1bmMuYmluZChtKSxtLm9yaWVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1PQpt
ZW50cy5sZW5ndGg/KG49M0RlLHI9M0RuPTNEPTNEInJpZ2h0Inx8bj0zRD0zRCJib3R0b20iLG0p
Om59LG0ucmFuZ2VzPTNEZnU9Cm5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0z
RGUsbSk6c30sbS5tYXJrZXJzPTNEZnVuY3Rpb24oZSl7cmV0dT0Kcm4gYXJndW1lbnRzLmxlbmd0
aD8obz0zRGUsbSk6b30sbS5tZWFzdXJlcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
PQpsZW5ndGg/KHU9M0RlLG0pOnV9LG0ud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oYT0zRGUsbSk9CjphfSxtLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhmPTNEZSxtKTpmfSxtLm1hcmdpbj0zRD0KZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGkudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQi
P2UuPQp0b3A6aS50b3AsaS5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2Uu
cmlnaHQ6aS5yaWdodCxpLmJvdHRvbT0KPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQi
P2UuYm90dG9tOmkuYm90dG9tLGkubGVmdD0zRHR5cGVvZiBlLmxlZnQhPQo9M0QidW5kZWZpbmVk
Ij9lLmxlZnQ6aS5sZWZ0LG0pOml9LG0udGlja0Zvcm1hdD0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWU9Cm50cy5sZW5ndGg/KGw9M0RlLG0pOmx9LG0udG9vbHRpcHM9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0KPTNEZSxtKTpjfSxtLnRvb2x0aXBDb250ZW50PTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLG0pPQo6aH0sbS5ub0Rh
dGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsbSk6cH0sbX0s
ZS5tb2RlbHM9Ci5jdW11bGF0aXZlTGluZUNoYXJ0PTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBEKGIp
e3JldHVybiBiLmVhY2goZnVuY3Rpb24oYil7Zj0KdW5jdGlvbiBJKGUsdCl7ZDMuc2VsZWN0KEQu
Y29udGFpbmVyKS5zdHlsZSgiY3Vyc29yIiwiZXctcmVzaXplIil9ZnVuY3Rpb24gPQpxKGUsdCl7
TS54PTNEZDMuZXZlbnQueCxNLmk9M0RNYXRoLnJvdW5kKE8uaW52ZXJ0KE0ueCkpLG50KCl9ZnVu
Y3Rpb24gUihlLHQ9Cil7ZDMuc2VsZWN0KEQuY29udGFpbmVyKS5zdHlsZSgiY3Vyc29yIiwiYXV0
byIpLHguaW5kZXg9M0RNLmksay5zdGF0ZUNoYW5nZT0KKHgpfWZ1bmN0aW9uIG50KCl7dHQuZGF0
YShbTV0pO3ZhciBlPTNERC50cmFuc2l0aW9uRHVyYXRpb24oKTtELnRyYW5zaXRpb25EPQp1cmF0
aW9uKDApLEQudXBkYXRlKCksRC50cmFuc2l0aW9uRHVyYXRpb24oZSl9dmFyIEw9M0RkMy5zZWxl
Y3QodGhpcykuY2xhc3M9CmVkKCJudi1jaGFydC0iK1MsITApLEE9M0R0aGlzLEg9M0QoZnx8cGFy
c2VJbnQoTC5zdHlsZSgid2lkdGgiKSl8fDk2MCktdS5sZT0KZnQtdS5yaWdodCxCPTNEKGx8fHBh
cnNlSW50KEwuc3R5bGUoImhlaWdodCIpKXx8NDAwKS11LnRvcC11LmJvdHRvbTtELnVwZGF0PQpl
PTNEZnVuY3Rpb24oKXtMLmNhbGwoRCl9LEQuY29udGFpbmVyPTNEdGhpcyx4LmRpc2FibGVkPTNE
Yi5tYXAoZnVuY3Rpb24oZSk9CntyZXR1cm4hIWUuZGlzYWJsZWR9KTtpZighVCl7dmFyIGo7VD0z
RHt9O2ZvcihqIGluIHgpeFtqXWluc3RhbmNlb2YgQXJyYXk/VD0KW2pdPTNEeFtqXS5zbGljZSgw
KTpUW2pdPTNEeFtqXX12YXIgRj0zRGQzLmJlaGF2aW9yLmRyYWcoKS5vbigiZHJhZ3N0YXJ0IixJ
PQopLm9uKCJkcmFnIixxKS5vbigiZHJhZ2VuZCIsUik7aWYoIWJ8fCFiLmxlbmd0aHx8IWIuZmls
dGVyKGZ1bmN0aW9uKGUpe3JldHU9CnJuIGUudmFsdWVzLmxlbmd0aH0pLmxlbmd0aCl7dmFyIFU9
M0RMLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW05dKTtyZT0KdHVybiBVLmVudGVyKCku
YXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5Iiwi
LS43PQplbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLFUuYXR0cigieCIsdS5sZWZ0
K0gvMikuYXR0cigieSIsdS50b3ArQi89CjIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxE
fUwuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVtb3ZlKCksdz0zRHQueD0KU2NhbGUoKSxFPTNE
dC55U2NhbGUoKTtpZigheSl7dmFyIHo9M0RiLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5k
aXNhYmxlPQpkfSkubWFwKGZ1bmN0aW9uKGUsbil7dmFyIHI9M0RkMy5leHRlbnQoZS52YWx1ZXMs
dC55KCkpO3JldHVybiByWzBdPC0wLjk1JiY9CihyWzBdPTNELTAuOTUpLFsoclswXS1yWzFdKS8o
MStyWzFdKSwoclsxXS1yWzBdKS8oMStyWzBdKV19KSxXPTNEW2QzLm1pbih6LD0KZnVuY3Rpb24o
ZSl7cmV0dXJuIGVbMF19KSxkMy5tYXgoeixmdW5jdGlvbihlKXtyZXR1cm4gZVsxXX0pXTt0LnlE
b21haW4oVyl9PQplbHNlIHQueURvbWFpbihudWxsKTtPLmRvbWFpbihbMCxiWzBdLnZhbHVlcy5s
ZW5ndGgtMV0pLnJhbmdlKFswLEhdKS5jbGFtcCg9CiEwKTt2YXIgYj0zRFAoTS5pLGIpLFg9M0Rn
PyJub25lIjoiYWxsIixWPTNETC5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1jdW11bD0KYXRpdmVM
aW5lIikuZGF0YShbYl0pLCQ9M0RWLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJu
dmQzIG52LXdyYXAgPQpudi1jdW11bGF0aXZlTGluZSIpLmFwcGVuZCgiZyIpLEo9M0RWLnNlbGVj
dCgiZyIpOyQuYXBwZW5kKCJnIikuYXR0cigiY2xhc3M9CiIsIm52LWludGVyYWN0aXZlIiksJC5h
cHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcyIpLnN0eWxlKCJwb2ludD0KZXIt
ZXZlbnRzIiwibm9uZSIpLCQuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15IG52LWF4aXMi
KSwkLmFwcGVuZCgiZyIpPQouYXR0cigiY2xhc3MiLCJudi1iYWNrZ3JvdW5kIiksJC5hcHBlbmQo
ImciKS5hdHRyKCJjbGFzcyIsIm52LWxpbmVzV3JhcCIpLnM9CnR5bGUoInBvaW50ZXItZXZlbnRz
IixYKSwkLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtYXZnTGluZXNXcmFwIikuc3R5bD0K
ZSgicG9pbnRlci1ldmVudHMiLCJub25lIiksJC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52
LWxlZ2VuZFdyYXAiKSwkLmFwPQpwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1jb250cm9sc1dy
YXAiKSxjJiYoaS53aWR0aChIKSxKLnNlbGVjdCgiLm52LWxlZ2U9Cm5kV3JhcCIpLmRhdHVtKGIp
LmNhbGwoaSksdS50b3AhPTNEaS5oZWlnaHQoKSYmKHUudG9wPTNEaS5oZWlnaHQoKSxCPTNEKGx8
fD0KcGFyc2VJbnQoTC5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXUudG9wLXUuYm90dG9tKSxKLnNl
bGVjdCgiLm52LWxlZ2VuZFdyYXAiPQopLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIr
IC11LnRvcCsiKSIpKTtpZihtKXt2YXIgSz0zRFt7a2V5OiJSZS1zY2E9CmxlIHktYXhpcyIsZGlz
YWJsZWQ6IXl9XTtzLndpZHRoKDE0MCkuY29sb3IoWyIjNDQ0IiwiIzQ0NCIsIiM0NDQiXSkucmln
aHRBbD0KaWduKCExKS5tYXJnaW4oe3RvcDo1LHJpZ2h0OjAsYm90dG9tOjUsbGVmdDoyMH0pLEou
c2VsZWN0KCIubnYtY29udHJvbHNXcmFwPQoiKS5kYXR1bShLKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0
cmFuc2xhdGUoMCwiKyAtdS50b3ArIikiKS5jYWxsKHMpfVYuYXR0cigidHI9CmFuc2Zvcm0iLCJ0
cmFuc2xhdGUoIit1LmxlZnQrIiwiK3UudG9wKyIpIiksZCYmSi5zZWxlY3QoIi5udi15Lm52LWF4
aXMiKS5hdD0KdHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK0grIiwwKSIpO3ZhciBRPTNEYi5m
aWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuPQp0ZW1wRGlzYWJsZWR9KTtWLnNlbGVjdCgiLnRl
bXBEaXNhYmxlZCIpLnJlbW92ZSgpLFEubGVuZ3RoJiZWLmFwcGVuZCgidGV4dCI9CikuYXR0cigi
Y2xhc3MiLCJ0ZW1wRGlzYWJsZWQiKS5hdHRyKCJ4IixILzIpLmF0dHIoInkiLCItLjcxZW0iKS5z
dHlsZSgidGV4dD0KLWFuY2hvciIsImVuZCIpLnRleHQoUS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJu
IGUua2V5fSkuam9pbigiLCAiKSsiIHZhbHVlcyBjPQphbm5vdCBiZSBjYWxjdWxhdGVkIGZvciB0
aGlzIHRpbWUgcGVyaW9kLiIpLGcmJihvLndpZHRoKEgpLmhlaWdodChCKS5tYXJnaW49Cih7bGVm
dDp1LmxlZnQsdG9wOnUudG9wfSkuc3ZnQ29udGFpbmVyKEwpLnhTY2FsZSh3KSxWLnNlbGVjdCgi
Lm52LWludGVyYWN0aT0KdmUiKS5jYWxsKG8pKSwkLnNlbGVjdCgiLm52LWJhY2tncm91bmQiKS5h
cHBlbmQoInJlY3QiKSxKLnNlbGVjdCgiLm52LWJhY2tnPQpyb3VuZCByZWN0IikuYXR0cigid2lk
dGgiLEgpLmF0dHIoImhlaWdodCIsQiksdC55KGZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc3A9Cmxh
eS55fSkud2lkdGgoSCkuaGVpZ2h0KEIpLmNvbG9yKGIubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJu
IGUuY29sb3J8fGEoZSx0KT0KfSkuZmlsdGVyKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIWJbdF0uZGlz
YWJsZWQmJiFiW3RdLnRlbXBEaXNhYmxlZH0pKTt2YXIgRz0KPTNESi5zZWxlY3QoIi5udi1saW5l
c1dyYXAiKS5kYXR1bShiLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZCYmPQoh
ZS50ZW1wRGlzYWJsZWR9KSk7Ry5jYWxsKHQpLGIuZm9yRWFjaChmdW5jdGlvbihlLHQpe2Uuc2Vy
aWVzSW5kZXg9M0R0fSk7dmE9CnIgWT0zRGIuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRp
c2FibGVkJiYhIUMoZSl9KSxaPTNESi5zZWxlY3QoIi5udi1hdj0KZ0xpbmVzV3JhcCIpLnNlbGVj
dEFsbCgibGluZSIpLmRhdGEoWSxmdW5jdGlvbihlKXtyZXR1cm4gZS5rZXl9KSxldD0zRGZ1bmN0
PQppb24oZSl7dmFyIHQ9M0RFKEMoZSkpO3JldHVybiB0PDA/MDp0PkI/Qjp0fTtaLmVudGVyKCku
YXBwZW5kKCJsaW5lIikuc3R5bGU9Cigic3Ryb2tlLXdpZHRoIiwyKS5zdHlsZSgic3Ryb2tlLWRh
c2hhcnJheSIsIjEwLDEwIikuc3R5bGUoInN0cm9rZSIsZnVuY3Rpbz0KbihlLG4pe3JldHVybiB0
LmNvbG9yKCkoZSxlLnNlcmllc0luZGV4KX0pLmF0dHIoIngxIiwwKS5hdHRyKCJ4MiIsSCkuYXR0
cigiPQp5MSIsZXQpLmF0dHIoInkyIixldCksWi5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLGZ1bmN0
aW9uKGUpe3ZhciB0PTNERShDKGUpKTs9CnJldHVybiB0PDB8fHQ+Qj8wOjF9KS5hdHRyKCJ4MSIs
MCkuYXR0cigieDIiLEgpLmF0dHIoInkxIixldCkuYXR0cigieTIiLGV0KT0KLFouZXhpdCgpLnJl
bW92ZSgpO3ZhciB0dD0zREcuc2VsZWN0QWxsKCIubnYtaW5kZXhMaW5lIikuZGF0YShbTV0pO3R0
LmVudGVyPQooKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm52LWluZGV4TGluZSIpLmF0
dHIoIndpZHRoIiwzKS5hdHRyKCJ4IiwtMik9Ci5hdHRyKCJmaWxsIiwicmVkIikuYXR0cigiZmls
bC1vcGFjaXR5IiwuNSkuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuYz0KYWxsKEYpLHR0
LmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSl7cmV0dXJuInRyYW5zbGF0ZSgiK08oZS5pKSsi
LDApIn0pLmF0PQp0cigiaGVpZ2h0IixCKSxoJiYobi5zY2FsZSh3KS50aWNrcyhNYXRoLm1pbihi
WzBdLnZhbHVlcy5sZW5ndGgsSC83MCkpLnRpY2s9ClNpemUoLUIsMCksSi5zZWxlY3QoIi5udi14
Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK0UucmFuZz0KZSgpWzBd
KyIpIiksZDMudHJhbnNpdGlvbihKLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpKS5jYWxsKG4pKSxw
JiYoci5zY2FsZShFPQopLnRpY2tzKEIvMzYpLnRpY2tTaXplKC1ILDApLGQzLnRyYW5zaXRpb24o
Si5zZWxlY3QoIi5udi15Lm52LWF4aXMiKSkuY2FsbCg9CnIpKSxKLnNlbGVjdCgiLm52LWJhY2tn
cm91bmQgcmVjdCIpLm9uKCJjbGljayIsZnVuY3Rpb24oKXtNLng9M0RkMy5tb3VzZSh0aD0KaXMp
WzBdLE0uaT0zRE1hdGgucm91bmQoTy5pbnZlcnQoTS54KSkseC5pbmRleD0zRE0uaSxrLnN0YXRl
Q2hhbmdlKHgpLG50KCl9PQopLHQuZGlzcGF0Y2gub24oImVsZW1lbnRDbGljayIsZnVuY3Rpb24o
ZSl7TS5pPTNEZS5wb2ludEluZGV4LE0ueD0zRE8oTS5pKSw9CnguaW5kZXg9M0RNLmksay5zdGF0
ZUNoYW5nZSh4KSxudCgpfSkscy5kaXNwYXRjaC5vbigibGVnZW5kQ2xpY2siLGZ1bmN0aW9uKD0K
ZSx0KXtlLmRpc2FibGVkPTNEIWUuZGlzYWJsZWQseT0zRCFlLmRpc2FibGVkLHgucmVzY2FsZVk9
M0R5LGsuc3RhdGVDaGFuZ2UoPQp4KSxELnVwZGF0ZSgpfSksaS5kaXNwYXRjaC5vbigic3RhdGVD
aGFuZ2UiLGZ1bmN0aW9uKGUpe3guZGlzYWJsZWQ9M0RlLmRpc2E9CmJsZWQsay5zdGF0ZUNoYW5n
ZSh4KSxELnVwZGF0ZSgpfSksby5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlbW92ZSIsZnVuY3Rp
bz0KbihpKXt0LmNsZWFySGlnaGxpZ2h0cygpO3ZhciBzLGYsbCxjPTNEW107Yi5maWx0ZXIoZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gZS5zPQplcmllc0luZGV4PTNEdCwhZS5kaXNhYmxlZH0pLmZvckVh
Y2goZnVuY3Rpb24obixyKXtmPTNEZS5pbnRlcmFjdGl2ZUJpc2VjdCg9Cm4udmFsdWVzLGkucG9p
bnRYVmFsdWUsRC54KCkpLHQuaGlnaGxpZ2h0UG9pbnQocixmLCEwKTt2YXIgbz0zRG4udmFsdWVz
W2ZdOz0KaWYodHlwZW9mIG89M0Q9M0QidW5kZWZpbmVkIilyZXR1cm47dHlwZW9mIHM9M0Q9M0Qi
dW5kZWZpbmVkIiYmKHM9M0RvKSx0eXBlPQpvZiBsPTNEPTNEInVuZGVmaW5lZCImJihsPTNERC54
U2NhbGUoKShELngoKShvLGYpKSksYy5wdXNoKHtrZXk6bi5rZXksdmFsdWU9CjpELnkoKShvLGYp
LGNvbG9yOmEobixuLnNlcmllc0luZGV4KX0pfSk7aWYoYy5sZW5ndGg+Mil7dmFyIGg9M0RELnlT
Y2FsZSgpLj0KaW52ZXJ0KGkubW91c2VZKSxwPTNETWF0aC5hYnMoRC55U2NhbGUoKS5kb21haW4o
KVswXS1ELnlTY2FsZSgpLmRvbWFpbigpWzFdPQopLGQ9M0QuMDMqcCxtPTNEZS5uZWFyZXN0VmFs
dWVJbmRleChjLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZX0pLGgsZCk9CjttIT0zRD0z
RG51bGwmJihjW21dLmhpZ2hsaWdodD0zRCEwKX12YXIgZz0zRG4udGlja0Zvcm1hdCgpKEQueCgp
KHMsZiksZik7bz0KLnRvb2x0aXAucG9zaXRpb24oe2xlZnQ6bCt1LmxlZnQsdG9wOmkubW91c2VZ
K3UudG9wfSkuY2hhcnRDb250YWluZXIoQS5wYXJlPQpudE5vZGUpLmVuYWJsZWQodikudmFsdWVG
b3JtYXR0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gci50aWNrRm9ybWF0KCkoZSl9KS49CmRhdGEo
e3ZhbHVlOmcsc2VyaWVzOmN9KSgpLG8ucmVuZGVyR3VpZGVMaW5lKGwpfSksby5kaXNwYXRjaC5v
bigiZWxlbWVudE1vdT0Kc2VvdXQiLGZ1bmN0aW9uKGUpe2sudG9vbHRpcEhpZGUoKSx0LmNsZWFy
SGlnaGxpZ2h0cygpfSksay5vbigidG9vbHRpcFNob3ciPQosZnVuY3Rpb24oZSl7diYmXyhlLEEu
cGFyZW50Tm9kZSl9KSxrLm9uKCJjaGFuZ2VTdGF0ZSIsZnVuY3Rpb24oZSl7dHlwZW9mIGU9Ci5k
aXNhYmxlZCE9M0QidW5kZWZpbmVkIiYmKGIuZm9yRWFjaChmdW5jdGlvbih0LG4pe3QuZGlzYWJs
ZWQ9M0RlLmRpc2FibGVkWz0Kbl19KSx4LmRpc2FibGVkPTNEZS5kaXNhYmxlZCksdHlwZW9mIGUu
aW5kZXghPTNEInVuZGVmaW5lZCImJihNLmk9M0RlLmluZGV4PQosTS54PTNETyhNLmkpLHguaW5k
ZXg9M0RlLmluZGV4LHR0LmRhdGEoW01dKSksdHlwZW9mIGUucmVzY2FsZVkhPTNEInVuZGVmaW49
CmVkIiYmKHk9M0RlLnJlc2NhbGVZKSxELnVwZGF0ZSgpfSl9KSxEfWZ1bmN0aW9uIFAoZSxuKXty
ZXR1cm4gbi5tYXAoZnVuY3Rpbz0KbihuLHIpe2lmKCFuLnZhbHVlcylyZXR1cm4gbjt2YXIgaT0z
RG4udmFsdWVzW2VdO2lmKGk9M0Q9M0RudWxsKXJldHVybiBuO3ZhPQpyIHM9M0R0LnkoKShpLGUp
O3JldHVybiBzPC0wLjk1JiYhQT8obi50ZW1wRGlzYWJsZWQ9M0QhMCxuKToobi50ZW1wRGlzYWJs
ZWQ9Cj0zRCExLG4udmFsdWVzPTNEbi52YWx1ZXMubWFwKGZ1bmN0aW9uKGUsbil7cmV0dXJuIGUu
ZGlzcGxheT0zRHt5Oih0LnkoKShlLD0KbiktcykvKDErcyl9LGV9KSxuKX0pfXZhciB0PTNEZS5t
b2RlbHMubGluZSgpLG49M0RlLm1vZGVscy5heGlzKCkscj0zRGUubW9kPQplbHMuYXhpcygpLGk9
M0RlLm1vZGVscy5sZWdlbmQoKSxzPTNEZS5tb2RlbHMubGVnZW5kKCksbz0zRGUuaW50ZXJhY3Rp
dmVHdWk9CmRlbGluZSgpLHU9M0R7dG9wOjMwLHJpZ2h0OjMwLGJvdHRvbTo1MCxsZWZ0OjYwfSxh
PTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKT0KLGY9M0RudWxsLGw9M0RudWxsLGM9M0QhMCxoPTNE
ITAscD0zRCEwLGQ9M0QhMSx2PTNEITAsbT0zRCEwLGc9M0QhMSx5PTNEITAsPQpiPTNEZnVuY3Rp
b24oZSx0LG4scixpKXtyZXR1cm4iPGgzPiIrZSsiPC9oMz4iKyI8cD4iK24rIiBhdCAiK3QrIjwv
cD4ifSx3LEU9CixTPTNEdC5pZCgpLHg9M0R7aW5kZXg6MCxyZXNjYWxlWTp5fSxUPTNEbnVsbCxO
PTNEIk5vIERhdGEgQXZhaWxhYmxlLiIsQz0zRD0KZnVuY3Rpb24oZSl7cmV0dXJuIGUuYXZlcmFn
ZX0saz0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwiPQpzdGF0ZUNo
YW5nZSIsImNoYW5nZVN0YXRlIiksTD0zRDAsQT0zRCExO24ub3JpZW50KCJib3R0b20iKS50aWNr
UGFkZGluZyg3KSw9CnIub3JpZW50KGQ/InJpZ2h0IjoibGVmdCIpLHMudXBkYXRlU3RhdGUoITEp
O3ZhciBPPTNEZDMuc2NhbGUubGluZWFyKCksTT0zRD0Ke2k6MCx4OjB9LF89M0RmdW5jdGlvbihp
LHMpe3ZhciBvPTNEaS5wb3NbMF0rKHMub2Zmc2V0TGVmdHx8MCksdT0zRGkucG9zWzFdPQorKHMu
b2Zmc2V0VG9wfHwwKSxhPTNEbi50aWNrRm9ybWF0KCkodC54KCkoaS5wb2ludCxpLnBvaW50SW5k
ZXgpKSxmPTNEci50aWM9CmtGb3JtYXQoKSh0LnkoKShpLnBvaW50LGkucG9pbnRJbmRleCkpLGw9
M0RiKGkuc2VyaWVzLmtleSxhLGYsaSxEKTtlLnRvb2x0aT0KcC5zaG93KFtvLHVdLGwsbnVsbCxu
dWxsLHMpfTtyZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwPQoi
LGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK3UubGVmdCxlLnBvc1sxXSt1LnRvcF0say50
b29sdGlwU2hvdyhlKX0pLHQ9Ci5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAi
LGZ1bmN0aW9uKGUpe2sudG9vbHRpcEhpZGUoZSl9KSxrLm9uKD0KInRvb2x0aXBIaWRlIixmdW5j
dGlvbigpe3YmJmUudG9vbHRpcC5jbGVhbnVwKCl9KSxELmRpc3BhdGNoPTNEayxELmxpbmVzPTNE
PQp0LEQubGVnZW5kPTNEaSxELnhBeGlzPTNEbixELnlBeGlzPTNEcixELmludGVyYWN0aXZlTGF5
ZXI9M0RvLGQzLnJlYmluZChELHQ9CiwiZGVmaW5lZCIsImlzQXJlYSIsIngiLCJ5IiwieFNjYWxl
IiwieVNjYWxlIiwic2l6ZSIsInhEb21haW4iLCJ5RG9tYWluIiwieD0KUmFuZ2UiLCJ5UmFuZ2Ui
LCJmb3JjZVgiLCJmb3JjZVkiLCJpbnRlcmFjdGl2ZSIsImNsaXBFZGdlIiwiY2xpcFZvcm9ub2ki
LCJ1PQpzZVZvcm9ub2kiLCJpZCIpLEQub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmlu
ZChEKSxELm1hcmdpbj0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHUu
dG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnUudD0Kb3AsdS5yaWdodD0z
RHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6dS5yaWdodCx1LmJvdHRvbT0z
RHR5cGVvPQpmIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnUuYm90dG9tLHUubGVm
dD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGU9CmZpbmVkIj9lLmxlZnQ6dS5sZWZ0LEQpOnV9LEQu
d2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0KPTNEZSxEKTpm
fSxELmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZSxE
KTpsfSxELmNvPQpsb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0z
RGUudXRpbHMuZ2V0Q29sb3IodCksaS5jb2xvcig9CmEpLEQpOmF9LEQucmVzY2FsZVk9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeT0zRGUsRCk6eX0sRC5zaD0Kb3dDb250
cm9scz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNEZSxEKTptfSxE
LnVzZUludGVyYWN0PQppdmVHdWlkZWxpbmU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oZz0zRGUsZT0zRD0zRD0zRCEwJiYoRC49CmludGVyYWN0aXZlKCExKSxELnVzZVZv
cm9ub2koITEpKSxEKTpnfSxELnNob3dMZWdlbmQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYT0Kcmd1
bWVudHMubGVuZ3RoPyhjPTNEZSxEKTpjfSxELnNob3dYQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuPQpndGg/KGg9M0RlLEQpOmh9LEQuc2hvd1lBeGlzPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLEQ9Cik6cH0sRC5yaWdodEFsaWduWUF4
aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGUsci5vcmllbj0K
dChlPyJyaWdodCI6ImxlZnQiKSxEKTpkfSxELnRvb2x0aXBzPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/PQoodj0zRGUsRCk6dn0sRC50b29sdGlwQ29udGVudD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPTNEZSw9CkQpOmJ9LEQuc3RhdGU9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oeD0zRGUsRCk6eH0sRC5kZWZhdWx0
Uz0KdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhUPTNEZSxEKTpU
fSxELm5vRGF0YT0zRGZ1bmN0aW9uPQooZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE49M0Rl
LEQpOk59LEQuYXZlcmFnZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmc9CnVtZW50cy5sZW5ndGg/
KEM9M0RlLEQpOkN9LEQudHJhbnNpdGlvbkR1cmF0aW9uPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZT0KbnRzLmxlbmd0aD8oTD0zRGUsRCk6TH0sRC5ub0Vycm9yQ2hlY2s9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0PQpoPyhBPTNEZSxEKTpBfSxEfSxlLm1vZGVscy5kaXNj
cmV0ZUJhcj0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gRShlKXtyZXR1cm4gZS49CmVhY2goZnVuY3Rp
b24oZSl7dmFyIGk9M0RuLXQubGVmdC10LnJpZ2h0LEU9M0RyLXQudG9wLXQuYm90dG9tLFM9M0Rk
My5zZWxlYz0KdCh0aGlzKTtlLmZvckVhY2goZnVuY3Rpb24oZSx0KXtlLnZhbHVlcy5mb3JFYWNo
KGZ1bmN0aW9uKGUpe2Uuc2VyaWVzPTNEdH0pPQp9KTt2YXIgVD0zRHAmJmQ/W106ZS5tYXAoZnVu
Y3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlvbihlLHQpe3JldHU9CnJue3g6dShl
LHQpLHk6YShlLHQpLHkwOmUueTB9fSl9KTtzLmRvbWFpbihwfHxkMy5tZXJnZShUKS5tYXAoZnVu
Y3Rpb24oZSl7cj0KZXR1cm4gZS54fSkpLnJhbmdlQmFuZHModnx8WzAsaV0sLjEpLG8uZG9tYWlu
KGR8fGQzLmV4dGVudChkMy5tZXJnZShUKS5tYXAoPQpmdW5jdGlvbihlKXtyZXR1cm4gZS55fSku
Y29uY2F0KGYpKSksYz9vLnJhbmdlKG18fFtFLShvLmRvbWFpbigpWzBdPDA/MTI6MCk9CixvLmRv
bWFpbigpWzFdPjA/MTI6MF0pOm8ucmFuZ2UobXx8W0UsMF0pLGI9M0RifHxzLHc9M0R3fHxvLmNv
cHkoKS5yYW5nZShbbz0KKDApLG8oMCldKTt2YXIgTj0zRFMuc2VsZWN0QWxsKCJnLm52LXdyYXAu
bnYtZGlzY3JldGViYXIiKS5kYXRhKFtlXSksQz0zRE4uPQplbnRlcigpLmFwcGVuZCgiZyIpLmF0
dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LWRpc2NyZXRlYmFyIiksaz0zREMuYXBwZW49CmQo
ImciKSxMPTNETi5zZWxlY3QoImciKTtrLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtZ3Jv
dXBzIiksTi5hdHRyKCJ0cj0KYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsiLCIrdC50b3Ar
IikiKTt2YXIgQT0zRE4uc2VsZWN0KCIubnYtZ3JvdXBzIikuPQpzZWxlY3RBbGwoIi5udi1ncm91
cCIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGZ1bmN0aW9uKGUpe3JldHVybiBlLmtleX09
Cik7QS5lbnRlcigpLmFwcGVuZCgiZyIpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMWUtNikuc3R5
bGUoImZpbGwtb3BhY2l0eSIsMT0KZS02KSxBLmV4aXQoKS5zdHlsZSgic3Ryb2tlLW9wYWNpdHki
LDFlLTYpLnN0eWxlKCJmaWxsLW9wYWNpdHkiLDFlLTYpLnJlbW92PQplKCksQS5hdHRyKCJjbGFz
cyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4ibnYtZ3JvdXAgbnYtc2VyaWVzLSIrdH0pLmNsYXNzZWQo
Img9Cm92ZXIiLGZ1bmN0aW9uKGUpe3JldHVybiBlLmhvdmVyfSksQS5zdHlsZSgic3Ryb2tlLW9w
YWNpdHkiLDEpLnN0eWxlKCJmaWxsLT0Kb3BhY2l0eSIsLjc1KTt2YXIgTz0zREEuc2VsZWN0QWxs
KCJnLm52LWJhciIpLmRhdGEoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsPQp1ZXN9KTtPLmV4aXQo
KS5yZW1vdmUoKTt2YXIgTT0zRE8uZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJ0cmFuc2Zvcm0i
LGZ1bmM9CnRpb24oZSx0LG4pe3JldHVybiJ0cmFuc2xhdGUoIisocyh1KGUsdCkpK3MucmFuZ2VC
YW5kKCkqLjA1KSsiLCAiK28oMCkrIikifT0KKS5vbigibW91c2VvdmVyIixmdW5jdGlvbih0LG4p
e2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIsITApLGcuZWxlbWVuPQp0TW91c2VvdmVy
KHt2YWx1ZTphKHQsbikscG9pbnQ6dCxzZXJpZXM6ZVt0LnNlcmllc10scG9zOltzKHUodCxuKSkr
cy5yYW5nZUI9CmFuZCgpKih0LnNlcmllcysuNSkvZS5sZW5ndGgsbyhhKHQsbikpXSxwb2ludElu
ZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZT0KOmQzLmV2ZW50fSl9KS5vbigibW91c2VvdXQi
LGZ1bmN0aW9uKHQsbil7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhPQoxKSxnLmVs
ZW1lbnRNb3VzZW91dCh7dmFsdWU6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBv
aW50SW5kZXg6biw9CnNlcmllc0luZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnR9KX0pLm9uKCJjbGlj
ayIsZnVuY3Rpb24odCxuKXtnLmVsZW1lbnRDbGljaz0KKHt2YWx1ZTphKHQsbikscG9pbnQ6dCxz
ZXJpZXM6ZVt0LnNlcmllc10scG9zOltzKHUodCxuKSkrcy5yYW5nZUJhbmQoKSoodC5zPQplcmll
cysuNSkvZS5sZW5ndGgsbyhhKHQsbikpXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJp
ZXMsZTpkMy5ldmVudH09CiksZDMuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigiZGJsY2xp
Y2siLGZ1bmN0aW9uKHQsbil7Zy5lbGVtZW50RGJsQ2xpYz0Kayh7dmFsdWU6YSh0LG4pLHBvaW50
OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvczpbcyh1KHQsbikpK3MucmFuZ2VCYW5kKCkqKHQuPQpz
ZXJpZXMrLjUpL2UubGVuZ3RoLG8oYSh0LG4pKV0scG9pbnRJbmRleDpuLHNlcmllc0luZGV4OnQu
c2VyaWVzLGU6ZDMuZXZlbnQ9Cn0pLGQzLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfSk7TS5hcHBl
bmQoInJlY3QiKS5hdHRyKCJoZWlnaHQiLDApLmF0dHIoIndpZD0KdGgiLHMucmFuZ2VCYW5kKCkq
LjkvZS5sZW5ndGgpLGM/KE0uYXBwZW5kKCJ0ZXh0IikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRk
PQpsZSIpLE8uc2VsZWN0KCJ0ZXh0IikudGV4dChmdW5jdGlvbihlLHQpe3JldHVybiBoKGEoZSx0
KSl9KS5hdHRyKCJ4IixzLnJhbmc9CmVCYW5kKCkqLjkvMikuYXR0cigieSIsZnVuY3Rpb24oZSx0
KXtyZXR1cm4gYShlLHQpPDA/byhhKGUsdCkpLW8oMCkrMTI6LTR9KT0KKTpPLnNlbGVjdEFsbCgi
dGV4dCIpLnJlbW92ZSgpLE8uYXR0cigiY2xhc3MiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSx0
KTwwPQo/Im52LWJhciBuZWdhdGl2ZSI6Im52LWJhciBwb3NpdGl2ZSJ9KS5zdHlsZSgiZmlsbCIs
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS49CmNvbG9yfHxsKGUsdCl9KS5zdHlsZSgic3Ryb2tlIixm
dW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxsKGUsdCl9KS5zZWxlYz0KdCgicmVjdCIpLmF0
dHIoImNsYXNzIix5KS5hdHRyKCJ3aWR0aCIscy5yYW5nZUJhbmQoKSouOS9lLmxlbmd0aCksTy5h
dHRyKCJ0PQpyYW5zZm9ybSIsZnVuY3Rpb24oZSx0KXt2YXIgbj0zRHModShlLHQpKStzLnJhbmdl
QmFuZCgpKi4wNSxyPTNEYShlLHQpPDA/byg9CjApOm8oMCktbyhhKGUsdCkpPDE/bygwKS0xOm8o
YShlLHQpKTtyZXR1cm4idHJhbnNsYXRlKCIrbisiLCAiK3IrIikifSkuc2VsZT0KY3QoInJlY3Qi
KS5hdHRyKCJoZWlnaHQiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubWF4KE1hdGguYWJzKG8o
YShlLHQpKS1vPQooZCYmZFswXXx8MCkpfHwxKX0pLGI9M0RzLmNvcHkoKSx3PTNEby5jb3B5KCl9
KSxFfXZhciB0PTNEe3RvcDowLHJpZ2h0OjAsYm89CnR0b206MCxsZWZ0OjB9LG49M0Q5NjAscj0z
RDUwMCxpPTNETWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjFlNCkscz0zRGQzLnNjYT0KbGUub3Jk
aW5hbCgpLG89M0RkMy5zY2FsZS5saW5lYXIoKSx1PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0s
YT0zRGZ1bmN0aW9uPQooZSl7cmV0dXJuIGUueX0sZj0zRFswXSxsPTNEZS51dGlscy5kZWZhdWx0
Q29sb3IoKSxjPTNEITEsaD0zRGQzLmZvcm1hdCgiLC49CjJmIikscCxkLHYsbSxnPTNEZDMuZGlz
cGF0Y2goImNoYXJ0Q2xpY2siLCJlbGVtZW50Q2xpY2siLCJlbGVtZW50RGJsQ2xpY2siLD0KImVs
ZW1lbnRNb3VzZW92ZXIiLCJlbGVtZW50TW91c2VvdXQiKSx5PTNEImRpc2NyZXRlQmFyIixiLHc7
cmV0dXJuIEUuZGlzcGF0PQpjaD0zRGcsRS5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5i
aW5kKEUpLEUueD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmc9CnVtZW50cy5sZW5ndGg/KHU9M0Rl
LEUpOnV9LEUueT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPTNEZT0K
LEUpOmF9LEUubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQu
dG9wPTNEdHlwZW9mIGUudG9wPQohPTNEInVuZGVmaW5lZCI/ZS50b3A6dC50b3AsdC5yaWdodD0z
RHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ9Cjp0LnJpZ2h0LHQuYm90dG9t
PTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVm
dD0KPTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6dC5sZWZ0LEUpOnR9LEUu
d2lkdGg9M0RmdW5jdGlvbihlKXtyPQpldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPTNEZSxFKTpu
fSxFLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHM9Ci5sZW5ndGg/KHI9M0Rl
LEUpOnJ9LEUueFNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9
M0RlLD0KRSk6c30sRS55U2NhbGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8obz0zRGUsRSk6b30sRS54RG9tYWluPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8ocD0zRGUsRSk6cH0sRS55RG9tYWluPTNEZnVuY3Rpb24oZSk9CntyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oZD0zRGUsRSk6ZH0sRS54UmFuZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbj0KdHMubGVuZ3RoPyh2PTNEZSxFKTp2fSxFLnlSYW5nZT0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNEPQplLEUpOm19LEUuZm9yY2VZPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLEUpOmZ9LEUuY29sb3I9Cj0zRGZ1bmN0
aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZS51dGlscy5nZXRDb2xvcih0KSxF
KTpsfSxFLmlkPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUs
RSk6aX0sRS5zaG93VmFsdWVzPTNEZnVuY3Rpb249CihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oYz0zRGUsRSk6Y30sRS52YWx1ZUZvcm1hdD0zRGZ1bmN0aW9uKGUpe3JldHVybj0KIGFyZ3Vt
ZW50cy5sZW5ndGg/KGg9M0RlLEUpOmh9LEUucmVjdENsYXNzPTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sPQplbmd0aD8oeT0zRGUsRSk6eX0sRX0sZS5tb2RlbHMuZGlzY3JldGVCYXJD
aGFydD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdyhlKXs9CnJldHVybiBlLmVhY2goZnVuY3Rpb24o
ZSl7dmFyIHU9M0RkMy5zZWxlY3QodGhpcykscD0zRHRoaXMseT0zRChzfHxwYXJzZUludD0KKHUu
c3R5bGUoIndpZHRoIikpfHw5NjApLWkubGVmdC1pLnJpZ2h0LEU9M0Qob3x8cGFyc2VJbnQodS5z
dHlsZSgiaGVpZ2h0IikpPQp8fDQwMCktaS50b3AtaS5ib3R0b207dy51cGRhdGU9M0RmdW5jdGlv
bigpe2cuYmVmb3JlVXBkYXRlKCksdS5jYWxsKHcpfSx3LmM9Cm9udGFpbmVyPTNEdGhpcztpZigh
ZXx8IWUubGVuZ3RofHwhZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLmxlbj0K
Z3RofSkubGVuZ3RoKXt2YXIgUz0zRHUuc2VsZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShbbV0p
O3JldHVybiBTLmVudGVyKCkuPQphcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYt
bm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXg9CnQtYW5jaG9yIiwibWlkZGxl
IiksUy5hdHRyKCJ4IixpLmxlZnQreS8yKS5hdHRyKCJ5IixpLnRvcCtFLzIpLnRleHQoZnVuY3Rp
bz0KbihlKXtyZXR1cm4gZX0pLHd9dS5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKSxk
PTNEdC54U2NhbGUoKSx2PTNEdC55PQpTY2FsZSgpLmNsYW1wKCEwKTt2YXIgVD0zRHUuc2VsZWN0
QWxsKCJnLm52LXdyYXAubnYtZGlzY3JldGVCYXJXaXRoQXhlcyIpLmQ9CmF0YShbZV0pLE49M0RU
LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtZGlzY3Jl
dGVCYT0KcldpdGhBeGVzIikuYXBwZW5kKCJnIiksQz0zRE4uYXBwZW5kKCJkZWZzIiksaz0zRFQu
c2VsZWN0KCJnIik7Ti5hcHBlbmQoImciPQopLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIiks
Ti5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkgbnYtYXhpcyIpLmE9CnBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJudi16ZXJvTGluZSIpLmFwcGVuZCgibGluZSIpLE4uYXBwZW5kKCJnIiku
YXR0cigiYz0KbGFzcyIsIm52LWJhcnNXcmFwIiksay5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xh
dGUoIitpLmxlZnQrIiwiK2kudG9wKyIpIiksPQpsJiZrLnNlbGVjdCgiLm52LXkubnYtYXhpcyIp
LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3krIiwwKSIpLHQud2lkdGg9Cih5KS5oZWln
aHQoRSk7dmFyIEw9M0RrLnNlbGVjdCgiLm52LWJhcnNXcmFwIikuZGF0dW0oZS5maWx0ZXIoZnVu
Y3Rpb24oZSl7cj0KZXR1cm4hZS5kaXNhYmxlZH0pKTtMLmNhbGwodCksQy5hcHBlbmQoImNsaXBQ
YXRoIikuYXR0cigiaWQiLCJudi14LWxhYmVsLWNsPQppcC0iK3QuaWQoKSkuYXBwZW5kKCJyZWN0
Iiksay5zZWxlY3QoIiNudi14LWxhYmVsLWNsaXAtIit0LmlkKCkrIiByZWN0IikuYXQ9CnRyKCJ3
aWR0aCIsZC5yYW5nZUJhbmQoKSooYz8yOjEpKS5hdHRyKCJoZWlnaHQiLDE2KS5hdHRyKCJ4Iiwt
ZC5yYW5nZUJhbmQoKT0KLyhjPzE6MikpO2lmKGEpe24uc2NhbGUoZCkudGlja3MoeS8xMDApLnRp
Y2tTaXplKC1FLDApLGsuc2VsZWN0KCIubnYteC5udi1hPQp4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0i
LCJ0cmFuc2xhdGUoMCwiKyh2LnJhbmdlKClbMF0rKHQuc2hvd1ZhbHVlcygpJiZ2LmRvbWE9Cmlu
KClbMF08MD8xNjowKSkrIikiKSxrLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmNhbGwobik7dmFy
IEE9M0RrLnNlbGVjdCgiLj0KbnYteC5udi1heGlzIikuc2VsZWN0QWxsKCJnIik7YyYmQS5zZWxl
Y3RBbGwoInRleHQiKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0PQppb24oZSx0LG4pe3JldHVybiJ0
cmFuc2xhdGUoMCwiKyhuJTI9M0Q9M0QwPyI1IjoiMTciKSsiKSJ9KX1mJiYoci5zY2FsZSh2KS49
CnRpY2tzKEUvMzYpLnRpY2tTaXplKC15LDApLGsuc2VsZWN0KCIubnYteS5udi1heGlzIikuY2Fs
bChyKSksay5zZWxlY3QoIi5udj0KLXplcm9MaW5lIGxpbmUiKS5hdHRyKCJ4MSIsMCkuYXR0cigi
eDIiLHkpLmF0dHIoInkxIix2KDApKS5hdHRyKCJ5MiIsdigwKSksPQpnLm9uKCJ0b29sdGlwU2hv
dyIsZnVuY3Rpb24oZSl7aCYmYihlLHAucGFyZW50Tm9kZSl9KX0pLHd9dmFyIHQ9M0RlLm1vZGVs
cy49CmRpc2NyZXRlQmFyKCksbj0zRGUubW9kZWxzLmF4aXMoKSxyPTNEZS5tb2RlbHMuYXhpcygp
LGk9M0R7dG9wOjE1LHJpZ2h0OjEwLD0KYm90dG9tOjUwLGxlZnQ6NjB9LHM9M0RudWxsLG89M0Ru
dWxsLHU9M0RlLnV0aWxzLmdldENvbG9yKCksYT0zRCEwLGY9M0QhMCxsPQo9M0QhMSxjPTNEITEs
aD0zRCEwLHA9M0RmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiI8aDM+Iit0KyI8L2gzPiIrIjxw
PiIrbis9CiI8L3A+In0sZCx2LG09M0QiTm8gRGF0YSBBdmFpbGFibGUuIixnPTNEZDMuZGlzcGF0
Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcD0KSGlkZSIsImJlZm9yZVVwZGF0ZSIpLHk9M0QwO24u
b3JpZW50KCJib3R0b20iKS5oaWdobGlnaHRaZXJvKCExKS5zaG93TWF4TWluPQooITEpLnRpY2tG
b3JtYXQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxyLm9yaWVudChsPyJyaWdodCI6ImxlZnQiKS50
aWNrRm9ybWE9CnQoZDMuZm9ybWF0KCIsLjFmIikpO3ZhciBiPTNEZnVuY3Rpb24oaSxzKXt2YXIg
bz0zRGkucG9zWzBdKyhzLm9mZnNldExlZnR8fD0KMCksdT0zRGkucG9zWzFdKyhzLm9mZnNldFRv
cHx8MCksYT0zRG4udGlja0Zvcm1hdCgpKHQueCgpKGkucG9pbnQsaS5wb2ludEluPQpkZXgpKSxm
PTNEci50aWNrRm9ybWF0KCkodC55KCkoaS5wb2ludCxpLnBvaW50SW5kZXgpKSxsPTNEcChpLnNl
cmllcy5rZXksYSw9CmYsaSx3KTtlLnRvb2x0aXAuc2hvdyhbbyx1XSxsLGkudmFsdWU8MD8ibiI6
InMiLG51bGwscyl9O3JldHVybiB0LmRpc3BhdGNoLj0Kb24oImVsZW1lbnRNb3VzZW92ZXIudG9v
bHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0raS5sZWZ0LGUucG9zWzFdPQoraS50
b3BdLGcudG9vbHRpcFNob3coZSl9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9v
bHRpcCIsZnVuY3Rpb249CihlKXtnLnRvb2x0aXBIaWRlKGUpfSksZy5vbigidG9vbHRpcEhpZGUi
LGZ1bmN0aW9uKCl7aCYmZS50b29sdGlwLmNsZWFudXAoKT0KfSksdy5kaXNwYXRjaD0zRGcsdy5k
aXNjcmV0ZWJhcj0zRHQsdy54QXhpcz0zRG4sdy55QXhpcz0zRHIsZDMucmViaW5kKHcsdCwiPQp4
IiwieSIsInhEb21haW4iLCJ5RG9tYWluIiwieFJhbmdlIiwieVJhbmdlIiwiZm9yY2VYIiwiZm9y
Y2VZIiwiaWQiLCJzaG93VmE9Cmx1ZXMiLCJ2YWx1ZUZvcm1hdCIpLHcub3B0aW9ucz0zRGUudXRp
bHMub3B0aW9uc0Z1bmMuYmluZCh3KSx3Lm1hcmdpbj0zRGZ1bj0KY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGkudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9w
PQo6aS50b3AsaS5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6
aS5yaWdodCxpLmJvdHRvbT0zRHQ9CnlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90
dG9tOmkuYm90dG9tLGkubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEIj0KdW5kZWZpbmVkIj9lLmxl
ZnQ6aS5sZWZ0LHcpOml9LHcud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0PQpoPyhzPTNEZSx3KTpzfSx3LmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhvPTNEZSx3KTpvfSw9CncuY29sb3I9M0RmdW5jdGlvbihuKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8odT0zRGUudXRpbHMuZ2V0Q29sb3IobiksdC5jbz0KbG9yKHUpLHcpOnV9
LHcuc2hvd1hBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0Rl
LHcpOmF9PQosdy5zaG93WUF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oZj0zRGUsdyk6Zn0sdy5yaWdodEFsaWc9Cm5ZQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhsPTNEZSxyLm9yaWVudChlPyJyaWdodCI6ImxlZj0KdCIpLHcpOmx9
LHcuc3RhZ2dlckxhYmVscz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhj
PTNEZSx3KTpjPQp9LHcudG9vbHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oaD0zRGUsdyk6aH0sdy50b29sdGlwQ289Cm50ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLHcpOnB9LHcubm9EYXRhPTNEZnVuY3Rpbz0KbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0zRGUsdyk6bX0sdy50cmFuc2l0aW9uRHVyYXRpb249
M0RmdW5jdGlvbihlPQope3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PTNEZSx3KTp5fSx3fSxl
Lm1vZGVscy5kaXN0cmlidXRpb249M0RmdW5jdGlvbig9Cil7ZnVuY3Rpb24gbChlKXtyZXR1cm4g
ZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBhPTNEbi0oaT0zRD0zRD0zRCJ4Ij90LmxlZnQrdD0KLnJp
Z2h0OnQudG9wK3QuYm90dG9tKSxsPTNEaT0zRD0zRCJ4Ij8ieSI6IngiLGM9M0RkMy5zZWxlY3Qo
dGhpcyk7Zj0zRGZ8fHU7PQp2YXIgaD0zRGMuc2VsZWN0QWxsKCJnLm52LWRpc3RyaWJ1dGlvbiIp
LmRhdGEoW2VdKSxwPTNEaC5lbnRlcigpLmFwcGVuZCgiZyI9CikuYXR0cigiY2xhc3MiLCJudmQz
IG52LWRpc3RyaWJ1dGlvbiIpLGQ9M0RwLmFwcGVuZCgiZyIpLHY9M0RoLnNlbGVjdCgiZyIpOz0K
aC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0LmxlZnQrIiwiK3QudG9wKyIpIik7dmFy
IG09M0R2LnNlbGVjdEFsbCgiPQpnLm52LWRpc3QiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBl
fSxmdW5jdGlvbihlKXtyZXR1cm4gZS5rZXl9KTttLmVudGVyKCk9Ci5hcHBlbmQoImciKSxtLmF0
dHIoImNsYXNzIixmdW5jdGlvbihlLHQpe3JldHVybiJudi1kaXN0IG52LXNlcmllcy0iK3R9KS5z
dD0KeWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIG8oZSx0KX0pO3ZhciBnPTNEbS5z
ZWxlY3RBbGwoImxpbmUubnYtZGlzPQp0IitpKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZh
bHVlc30pO2cuZW50ZXIoKS5hcHBlbmQoImxpbmUiKS5hdHRyKGkrIjE9CiIsZnVuY3Rpb24oZSx0
KXtyZXR1cm4gZihzKGUsdCkpfSkuYXR0cihpKyIyIixmdW5jdGlvbihlLHQpe3JldHVybiBmKHMo
ZSx0KT0KKX0pLG0uZXhpdCgpLnNlbGVjdEFsbCgibGluZS5udi1kaXN0IitpKS5hdHRyKGkrIjEi
LGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHUoPQpzKGUsdCkpfSkuYXR0cihpKyIyIixmdW5jdGlvbihl
LHQpe3JldHVybiB1KHMoZSx0KSl9KS5zdHlsZSgic3Ryb2tlLW9wYWNpdHk9CiIsMCkucmVtb3Zl
KCksZy5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4ibnYtZGlzdCIraSsiIG52LWRp
c3QiK2krIj0KLSIrdH0pLmF0dHIobCsiMSIsMCkuYXR0cihsKyIyIixyKSxnLmF0dHIoaSsiMSIs
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdShzKGUsPQp0KSl9KS5hdHRyKGkrIjIiLGZ1bmN0aW9uKGUs
dCl7cmV0dXJuIHUocyhlLHQpKX0pLGY9M0R1LmNvcHkoKX0pLGx9dmFyIHQ9M0Q9Cnt0b3A6MCxy
aWdodDowLGJvdHRvbTowLGxlZnQ6MH0sbj0zRDQwMCxyPTNEOCxpPTNEIngiLHM9M0RmdW5jdGlv
bihlKXtyZXR1cj0KbiBlW2ldfSxvPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSx1PTNEZDMuc2Nh
bGUubGluZWFyKCksYSxmO3JldHVybiBsLm9wdGlvPQpucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMu
YmluZChsKSxsLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGU9Cm5ndGg/
KHQudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQucmlnaHQ9
M0R0eXBlb2YgZS5yaT0KZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRv
bT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkPQoiP2UuYm90dG9tOnQuYm90dG9tLHQu
bGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxsKTo9CnR9
LGwud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGUsbCk6
bn0sbC5heGlzPTNEZnVuYz0KdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUs
bCk6aX0sbC5zaXplPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyPQpndW1lbnRzLmxlbmd0aD8ocj0z
RGUsbCk6cn0sbC5nZXREYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9
Cj8ocz0zRGQzLmZ1bmN0b3IoZSksbCk6c30sbC5zY2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyh1PQo9M0RlLGwpOnV9LGwuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUudXRpbHMuZ2V0Q289Cmxvcih0KSxsKTpvfSxsfSxl
Lm1vZGVscy5oaXN0b3JpY2FsQmFyQ2hhcnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIHgoZSl7cmV0
dT0Kcm4gZS5lYWNoKGZ1bmN0aW9uKGQpe3ZhciBFPTNEZDMuc2VsZWN0KHRoaXMpLFQ9M0R0aGlz
LE49M0QodXx8cGFyc2VJbnQoRS5zPQp0eWxlKCJ3aWR0aCIpKXx8OTYwKS1zLmxlZnQtcy5yaWdo
dCxDPTNEKGF8fHBhcnNlSW50KEUuc3R5bGUoImhlaWdodCIpKXx8NDA9CjApLXMudG9wLXMuYm90
dG9tO3gudXBkYXRlPTNEZnVuY3Rpb24oKXtFLmNhbGwoeCl9LHguY29udGFpbmVyPTNEdGhpcyxn
LmRpcz0KYWJsZWQ9M0RkLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlzYWJsZWR9KTtpZigh
eSl7dmFyIGs7eT0zRHt9O2ZvcihrIGluPQogZylnW2tdaW5zdGFuY2VvZiBBcnJheT95W2tdPTNE
Z1trXS5zbGljZSgwKTp5W2tdPTNEZ1trXX1pZighZHx8IWQubGVuZ3RofHw9CiFkLmZpbHRlcihm
dW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubGVuZ3RofSkubGVuZ3RoKXt2YXIgTD0zREUuc2Vs
ZWN0QWxsKD0KIi5udi1ub0RhdGEiKS5kYXRhKFtiXSk7cmV0dXJuIEwuZW50ZXIoKS5hcHBlbmQo
InRleHQiKS5hdHRyKCJjbGFzcyIsIm52ZDMgPQpudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2Vt
Iikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIiksTC5hdHRyKCJ4IixzLmw9CmVmdCtOLzIp
LmF0dHIoInkiLHMudG9wK0MvMikudGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLHh9RS5zZWxl
Y3RBbGwoIi5udj0KLW5vRGF0YSIpLnJlbW92ZSgpLHY9M0R0LnhTY2FsZSgpLG09M0R0LnlTY2Fs
ZSgpO3ZhciBBPTNERS5zZWxlY3RBbGwoImcubnYtPQp3cmFwLm52LWhpc3RvcmljYWxCYXJDaGFy
dCIpLmRhdGEoW2RdKSxPPTNEQS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXM9CnMiLCJu
dmQzIG52LXdyYXAgbnYtaGlzdG9yaWNhbEJhckNoYXJ0IikuYXBwZW5kKCJnIiksTT0zREEuc2Vs
ZWN0KCJnIik7Ty5hcD0KcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksTy5h
cHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXkgbnYtPQpheGlzIiksTy5hcHBlbmQoImciKS5h
dHRyKCJjbGFzcyIsIm52LWJhcnNXcmFwIiksTy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyI9Ciwi
bnYtbGVnZW5kV3JhcCIpLGYmJihpLndpZHRoKE4pLE0uc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIp
LmRhdHVtKGQpLmNhbGwoaT0KKSxzLnRvcCE9M0RpLmhlaWdodCgpJiYocy50b3A9M0RpLmhlaWdo
dCgpLEM9M0QoYXx8cGFyc2VJbnQoRS5zdHlsZSgiaGVpZ2h0PQoiKSl8fDQwMCktcy50b3Atcy5i
b3R0b20pLEEuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW49
CnNsYXRlKDAsIisgLXMudG9wKyIpIikpLEEuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIr
cy5sZWZ0KyIsIitzLnRvcCsiKT0KIiksaCYmTS5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5hdHRy
KCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitOKyIsMCkiKSx0LndpPQpkdGgoTikuaGVpZ2h0KEMp
LmNvbG9yKGQubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fG8oZSx0KX0pLmZpbHRl
cig9CmZ1bmN0aW9uKGUsdCl7cmV0dXJuIWRbdF0uZGlzYWJsZWR9KSk7dmFyIF89M0RNLnNlbGVj
dCgiLm52LWJhcnNXcmFwIikuZGF0dT0KbShkLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5k
aXNhYmxlZH0pKTtfLmNhbGwodCksbCYmKG4uc2NhbGUodikudGlja1NpPQp6ZSgtQywwKSxNLnNl
bGVjdCgiLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrbS5y
YW5nZSg9CilbMF0rIikiKSxNLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmNhbGwobikpLGMmJihy
LnNjYWxlKG0pLnRpY2tzKEMvMzYpLnRpYz0Ka1NpemUoLU4sMCksTS5zZWxlY3QoIi5udi15Lm52
LWF4aXMiKS5jYWxsKHIpKSxpLmRpc3BhdGNoLm9uKCJsZWdlbmRDbGljayIsPQpmdW5jdGlvbih0
LG4pe3QuZGlzYWJsZWQ9M0QhdC5kaXNhYmxlZCxkLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4h
ZS5kaXNhYmw9CmVkfSkubGVuZ3RofHxkLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNhYmxl
ZD0zRCExLEEuc2VsZWN0QWxsKCIubnYtc2VyaT0KZXMiKS5jbGFzc2VkKCJkaXNhYmxlZCIsITEp
LGV9KSxnLmRpc2FibGVkPTNEZC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpPQpzYWJsZWR9
KSx3LnN0YXRlQ2hhbmdlKGcpLGUuY2FsbCh4KX0pLGkuZGlzcGF0Y2gub24oImxlZ2VuZERibGNs
aWNrIixmdW5jdGk9Cm9uKGUpe2QuZm9yRWFjaChmdW5jdGlvbihlKXtlLmRpc2FibGVkPTNEITB9
KSxlLmRpc2FibGVkPTNEITEsZy5kaXNhYmxlZD0zRD0KZC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJu
ISFlLmRpc2FibGVkfSksdy5zdGF0ZUNoYW5nZShnKSx4LnVwZGF0ZSgpfSksdy5vbigiPQp0b29s
dGlwU2hvdyIsZnVuY3Rpb24oZSl7cCYmUyhlLFQucGFyZW50Tm9kZSl9KSx3Lm9uKCJjaGFuZ2VT
dGF0ZSIsZnVuY3Rpb249CihlKXt0eXBlb2YgZS5kaXNhYmxlZCE9M0QidW5kZWZpbmVkIiYmKGQu
Zm9yRWFjaChmdW5jdGlvbih0LG4pe3QuZGlzYWJsZWQ9Cj0zRGUuZGlzYWJsZWRbbl19KSxnLmRp
c2FibGVkPTNEZS5kaXNhYmxlZCkseC51cGRhdGUoKX0pfSkseH12YXIgdD0zRGUubW9kZT0KbHMu
aGlzdG9yaWNhbEJhcigpLG49M0RlLm1vZGVscy5heGlzKCkscj0zRGUubW9kZWxzLmF4aXMoKSxp
PTNEZS5tb2RlbHMubGVnPQplbmQoKSxzPTNEe3RvcDozMCxyaWdodDo5MCxib3R0b206NTAsbGVm
dDo5MH0sbz0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCksdT0KPTNEbnVsbCxhPTNEbnVsbCxmPTNE
ITEsbD0zRCEwLGM9M0QhMCxoPTNEITEscD0zRCEwLGQ9M0RmdW5jdGlvbihlLHQsbixyLGkpPQp7
cmV0dXJuIjxoMz4iK2UrIjwvaDM+IisiPHA+IituKyIgYXQgIit0KyI8L3A+In0sdixtLGc9M0R7
fSx5PTNEbnVsbCxiPTNEIk49Cm8gRGF0YSBBdmFpbGFibGUuIix3PTNEZDMuZGlzcGF0Y2goInRv
b2x0aXBTaG93IiwidG9vbHRpcEhpZGUiLCJzdGF0ZUNoYW5nZT0KIiwiY2hhbmdlU3RhdGUiKSxF
PTNEMDtuLm9yaWVudCgiYm90dG9tIikudGlja1BhZGRpbmcoNyksci5vcmllbnQoaD8icmlnaHQi
PQo6ImxlZnQiKTt2YXIgUz0zRGZ1bmN0aW9uKGkscyl7aWYocyl7dmFyIG89M0RkMy5zZWxlY3Qo
cykuc2VsZWN0KCJzdmciKSx1PQo9M0RvLm5vZGUoKT9vLmF0dHIoInZpZXdCb3giKTpudWxsO2lm
KHUpe3U9M0R1LnNwbGl0KCIgIik7dmFyIGE9M0RwYXJzZUludCg9Cm8uc3R5bGUoIndpZHRoIikp
L3VbMl07aS5wb3NbMF09M0RpLnBvc1swXSphLGkucG9zWzFdPTNEaS5wb3NbMV0qYX19dmFyIGY9
Cj0zRGkucG9zWzBdKyhzLm9mZnNldExlZnR8fDApLGw9M0RpLnBvc1sxXSsocy5vZmZzZXRUb3B8
fDApLGM9M0RuLnRpY2tGb3JtYT0KdCgpKHQueCgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksaD0z
RHIudGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbnQsaS5wb2ludEluPQpkZXgpKSxwPTNEZChpLnNl
cmllcy5rZXksYyxoLGkseCk7ZS50b29sdGlwLnNob3coW2YsbF0scCxudWxsLG51bGwscyl9O3Jl
dHU9CnJuIHQuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24o
ZSl7ZS5wb3M9M0RbZS5wb3NbMF0rcz0KLmxlZnQsZS5wb3NbMV0rcy50b3BdLHcudG9vbHRpcFNo
b3coZSl9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vPQpsdGlwIixmdW5jdGlv
bihlKXt3LnRvb2x0aXBIaWRlKGUpfSksdy5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7cCYm
ZS50b289Cmx0aXAuY2xlYW51cCgpfSkseC5kaXNwYXRjaD0zRHcseC5iYXJzPTNEdCx4LmxlZ2Vu
ZD0zRGkseC54QXhpcz0zRG4seC55QXhpcz0KPTNEcixkMy5yZWJpbmQoeCx0LCJkZWZpbmVkIiwi
aXNBcmVhIiwieCIsInkiLCJzaXplIiwieFNjYWxlIiwieVNjYWxlIiwieERvPQptYWluIiwieURv
bWFpbiIsInhSYW5nZSIsInlSYW5nZSIsImZvcmNlWCIsImZvcmNlWSIsImludGVyYWN0aXZlIiwi
Y2xpcEVkZ2U9CiIsImNsaXBWb3Jvbm9pIiwiaWQiLCJpbnRlcnBvbGF0ZSIsImhpZ2hsaWdodFBv
aW50IiwiY2xlYXJIaWdobGlnaHRzIiwiaW50ZT0KcmFjdGl2ZSIpLHgub3B0aW9ucz0zRGUudXRp
bHMub3B0aW9uc0Z1bmMuYmluZCh4KSx4Lm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JlPQp0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KHMudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9w
OnMudG9wLHMucmk9CmdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6
cy5yaWdodCxzLmJvdHRvbT0zRHR5cGVvZiBlLmJvdD0KdG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90
dG9tOnMuYm90dG9tLHMubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/PQplLmxl
ZnQ6cy5sZWZ0LHgpOnN9LHgud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8odT0zRGUseCk9Cjp1fSx4LmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhhPTNEZSx4KTphfSx4LmNvbG9yPTNEZj0KdW5jdGlvbih0KXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8obz0zRGUudXRpbHMuZ2V0Q29sb3IodCksaS5jb2xvcihvKSx4KTpvPQp9
LHguc2hvd0xlZ2VuZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNE
ZSx4KTpmfSx4LnNob3dYQXg9CmlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGw9M0RlLHgpOmx9LHguc2hvd1lBeGlzPTNEZnVuY3Rpbz0KbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oYz0zRGUseCk6Y30seC5yaWdodEFsaWduWUF4aXM9M0RmdW5jdGlvbihlKXty
PQpldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxyLm9yaWVudChlPyJyaWdodCI6ImxlZnQi
KSx4KTpofSx4LnRvb2x0aXBzPQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8ocD0zRGUseCk6cH0seC50b29sdGlwQ29udGVudD0zRGZ1bmM9CnRpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGQ9M0RlLHgpOmR9LHguc3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YT0Kcmd1bWVudHMubGVuZ3RoPyhnPTNEZSx4KTpnfSx4LmRlZmF1bHRTdGF0ZT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMuPQpsZW5ndGg/KHk9M0RlLHgpOnl9LHgubm9EYXRhPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9M0RlLHg9Cik6Yn0seC50cmFuc2l0
aW9uRHVyYXRpb249M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT0zRGUs
eCk6RT0KfSx4fSxlLm1vZGVscy5pbmRlbnRlZFRyZWU9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIGco
ZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvPQpuKGUpe2Z1bmN0aW9uIGsoZSx0LG4pe2QzLmV2ZW50
LnN0b3BQcm9wYWdhdGlvbigpO2lmKGQzLmV2ZW50LnNoaWZ0S2V5JiYhbik9CnJldHVybiBkMy5l
dmVudC5zaGlmdEtleT0zRCExLGUudmFsdWVzJiZlLnZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKGUp
eyhlLnZhbD0KdWVzfHxlLl92YWx1ZXMpJiZrKGUsMCwhMCl9KSwhMDtpZighTyhlKSlyZXR1cm4h
MDtlLnZhbHVlcz8oZS5fdmFsdWVzPTNEZS52PQphbHVlcyxlLnZhbHVlcz0zRG51bGwpOihlLnZh
bHVlcz0zRGUuX3ZhbHVlcyxlLl92YWx1ZXM9M0RudWxsKSxnLnVwZGF0ZSgpfWY9CnVuY3Rpb24g
TChlKXtyZXR1cm4gZS5fdmFsdWVzJiZlLl92YWx1ZXMubGVuZ3RoP2g6ZS52YWx1ZXMmJmUudmFs
dWVzLmxlbmd0aD0KP3A6IiJ9ZnVuY3Rpb24gQShlKXtyZXR1cm4gZS5fdmFsdWVzJiZlLl92YWx1
ZXMubGVuZ3RofWZ1bmN0aW9uIE8oZSl7dmFyIHQ9Cj0zRGUudmFsdWVzfHxlLl92YWx1ZXM7cmV0
dXJuIHQmJnQubGVuZ3RofXZhciB0PTNEMSxuPTNEZDMuc2VsZWN0KHRoaXMpLGk9Cj0zRGQzLmxh
eW91dC50cmVlKCkuY2hpbGRyZW4oZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzfSkuc2l6ZShb
cixmXSk7Zy51cD0KZGF0ZT0zRGZ1bmN0aW9uKCl7bi5jYWxsKGcpfSxlWzBdfHwoZVswXT0zRHtr
ZXk6YX0pO3ZhciBzPTNEaS5ub2RlcyhlWzBdKSx5PQo9M0RkMy5zZWxlY3QodGhpcykuc2VsZWN0
QWxsKCJkaXYiKS5kYXRhKFtbc11dKSxiPTNEeS5lbnRlcigpLmFwcGVuZCgiZGl2Iik9Ci5hdHRy
KCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1pbmRlbnRlZHRyZWUiKSx3PTNEYi5hcHBlbmQoInRh
YmxlIiksRT0zRHkucz0KZWxlY3QoInRhYmxlIikuYXR0cigid2lkdGgiLCIxMDAlIikuYXR0cigi
Y2xhc3MiLGMpO2lmKG8pe3ZhciBTPTNEdy5hcHBlbmQoPQoidGhlYWQiKSx4PTNEUy5hcHBlbmQo
InRyIik7bC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3guYXBwZW5kKCJ0aCIpLmF0dHIoIndpZHQ9Cmgi
LGUud2lkdGg/ZS53aWR0aDoiMTAlIikuc3R5bGUoInRleHQtYWxpZ24iLGUudHlwZT0zRD0zRCJu
dW1lcmljIj8icmlnaHQiOj0KImxlZnQiKS5hcHBlbmQoInNwYW4iKS50ZXh0KGUubGFiZWwpfSl9
dmFyIFQ9M0RFLnNlbGVjdEFsbCgidGJvZHkiKS5kYXRhKGZ1PQpuY3Rpb24oZSl7cmV0dXJuIGV9
KTtULmVudGVyKCkuYXBwZW5kKCJ0Ym9keSIpLHQ9M0RkMy5tYXgocyxmdW5jdGlvbihlKXtyZXQ9
CnVybiBlLmRlcHRofSksaS5zaXplKFtyLHQqZl0pO3ZhciBOPTNEVC5zZWxlY3RBbGwoInRyIiku
ZGF0YShmdW5jdGlvbihlKXtyZT0KdHVybiBlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gdSYm
IWUuY2hpbGRyZW4/dShlKTohMH0pfSxmdW5jdGlvbihlLHQpe3JlPQp0dXJuIGUuaWR8fGUuaWR8
fCsrbX0pO04uZXhpdCgpLnJlbW92ZSgpLE4uc2VsZWN0KCJpbWcubnYtdHJlZWljb24iKS5hdHRy
KCI9CnNyYyIsTCkuY2xhc3NlZCgiZm9sZGVkIixBKTt2YXIgQz0zRE4uZW50ZXIoKS5hcHBlbmQo
InRyIik7bC5mb3JFYWNoKGZ1bmN0aT0Kb24oZSx0KXt2YXIgbj0zREMuYXBwZW5kKCJ0ZCIpLnN0
eWxlKCJwYWRkaW5nLWxlZnQiLGZ1bmN0aW9uKGUpe3JldHVybih0PzA6PQplLmRlcHRoKmYrMTIr
KEwoZSk/MDoxNikpKyJweCJ9LCJpbXBvcnRhbnQiKS5zdHlsZSgidGV4dC1hbGlnbiIsZS50eXBl
PTNEPQo9M0QibnVtZXJpYyI/InJpZ2h0IjoibGVmdCIpO3Q9M0Q9M0QwJiZuLmFwcGVuZCgiaW1n
IikuY2xhc3NlZCgibnYtdHJlZWljb249CiIsITApLmNsYXNzZWQoIm52LWZvbGRlZCIsQSkuYXR0
cigic3JjIixMKS5zdHlsZSgid2lkdGgiLCIxNHB4Iikuc3R5bGUoImhlaT0KZ2h0IiwiMTRweCIp
LnN0eWxlKCJwYWRkaW5nIiwiMCAxcHgiKS5zdHlsZSgiZGlzcGxheSIsZnVuY3Rpb24oZSl7cmV0
dXJuIEwoPQplKT8iaW5saW5lLWJsb2NrIjoibm9uZSJ9KS5vbigiY2xpY2siLGspLG4uZWFjaChm
dW5jdGlvbihuKXshdCYmdihuKT9kMy5zZWw9CmVjdCh0aGlzKS5hcHBlbmQoImEiKS5hdHRyKCJo
cmVmIix2KS5hdHRyKCJjbGFzcyIsZDMuZnVuY3RvcihlLmNsYXNzZXMpKS5hcD0KcGVuZCgic3Bh
biIpOmQzLnNlbGVjdCh0aGlzKS5hcHBlbmQoInNwYW4iKSxkMy5zZWxlY3QodGhpcykuc2VsZWN0
KCJzcGFuIikuPQphdHRyKCJjbGFzcyIsZDMuZnVuY3RvcihlLmNsYXNzZXMpKS50ZXh0KGZ1bmN0
aW9uKHQpe3JldHVybiBlLmZvcm1hdD90W2Uua2U9CnldP2UuZm9ybWF0KHRbZS5rZXldKToiLSI6
dFtlLmtleV18fCItIn0pfSksZS5zaG93Q291bnQmJihuLmFwcGVuZCgic3BhbiIpLj0KYXR0cigi
Y2xhc3MiLCJudi1jaGlsZHJlbkNvdW50IiksTi5zZWxlY3RBbGwoInNwYW4ubnYtY2hpbGRyZW5D
b3VudCIpLnRleHQoPQpmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMmJmUudmFsdWVzLmxlbmd0
aHx8ZS5fdmFsdWVzJiZlLl92YWx1ZXMubGVuZ3RoPyI9CigiKyhlLnZhbHVlcyYmZS52YWx1ZXMu
ZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiB1P3UoZSk6ITB9KS5sZW5ndGh8fGUuX3ZhbD0KdWVz
JiZlLl92YWx1ZXMuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiB1P3UoZSk6ITB9KS5sZW5ndGh8
fDApKyIpIjoiIn0pKX0pPQosTi5vcmRlcigpLm9uKCJjbGljayIsZnVuY3Rpb24oZSl7ZC5lbGVt
ZW50Q2xpY2soe3Jvdzp0aGlzLGRhdGE6ZSxwb3M6W2UueCw9CmUueV19KX0pLm9uKCJkYmxjbGlj
ayIsZnVuY3Rpb24oZSl7ZC5lbGVtZW50RGJsY2xpY2soe3Jvdzp0aGlzLGRhdGE6ZSxwb3M6Wz0K
ZS54LGUueV19KX0pLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKGUpe2QuZWxlbWVudE1vdXNlb3Zl
cih7cm93OnRoaXMsZGF0YTplPQoscG9zOltlLngsZS55XX0pfSkub24oIm1vdXNlb3V0IixmdW5j
dGlvbihlKXtkLmVsZW1lbnRNb3VzZW91dCh7cm93OnRoaXMsZGE9CnRhOmUscG9zOltlLngsZS55
XX0pfSl9KSxnfXZhciB0PTNEe3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSxuPTNEOTYw
LD0Kcj0zRDUwMCxpPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxzPTNETWF0aC5mbG9vcihNYXRo
LnJhbmRvbSgpKjFlNCksbz0zRCEwPQosdT0zRCExLGE9M0QiTm8gRGF0YSBBdmFpbGFibGUuIixm
PTNEMjAsbD0zRFt7a2V5OiJrZXkiLGxhYmVsOiJOYW1lIix0eXBlOiI9CnRleHQifV0sYz0zRG51
bGwsaD0zRCJpbWFnZXMvZ3JleS1wbHVzLnBuZyIscD0zRCJpbWFnZXMvZ3JleS1taW51cy5wbmci
LGQ9Cj0zRGQzLmRpc3BhdGNoKCJlbGVtZW50Q2xpY2siLCJlbGVtZW50RGJsY2xpY2siLCJlbGVt
ZW50TW91c2VvdmVyIiwiZWxlbWVudD0KTW91c2VvdXQiKSx2PTNEZnVuY3Rpb24oZSl7cmV0dXJu
IGUudXJsfSxtPTNEMDtyZXR1cm4gZy5vcHRpb25zPTNEZS51dGlscy5vPQpwdGlvbnNGdW5jLmJp
bmQoZyksZy5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC50
b3A9M0Q9CnR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDp0LnRvcCx0LnJpZ2h0PTNE
dHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaT0KbmVkIj9lLnJpZ2h0OnQucmlnaHQsdC5ib3R0b209
M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206dC5iPQpvdHRvbSx0Lmxl
ZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDp0LmxlZnQsZyk6dH0sZy53
aWR0aD0zRGY9CnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49M0RlLGcpOm59
LGcuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dT0Kcm4gYXJndW1lbnRzLmxlbmd0aD8ocj0zRGUs
Zyk6cn0sZy5jb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVudHMubGVuPQpndGg/KGk9
M0RlLnV0aWxzLmdldENvbG9yKHQpLHNjYXR0ZXIuY29sb3IoaSksZyk6aX0sZy5pZD0zRGZ1bmN0
aW9uKGUpe3JldHU9CnJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLGcpOnN9LGcuaGVhZGVyPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZT0Kbmd0aD8obz0zRGUsZyk6b30sZy5ub0Rh
dGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0zRGUsZyk6PQphfSxn
LmZpbHRlclplcm89M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUs
Zyk6dX0sZy5jb2x1bW49CnM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
bD0zRGUsZyk6bH0sZy50YWJsZUNsYXNzPTNEZnVuY3Rpbz0KbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oYz0zRGUsZyk6Y30sZy5pY29uT3Blbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhPQpy
Z3VtZW50cy5sZW5ndGg/KGg9M0RlLGcpOmh9LGcuaWNvbkNsb3NlPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW49Cmd0aD8ocD0zRGUsZyk6cH0sZy5nZXRVcmw9M0RmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj0zRGUsZyk6dj0KfSxnfSxlLm1vZGVscy5sZWdl
bmQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIGMoaCl7cmV0dXJuIGguZWFjaChmdW5jdGlvbihjKXt2
PQphciBoPTNEbi10LmxlZnQtdC5yaWdodCxwPTNEZDMuc2VsZWN0KHRoaXMpLGQ9M0RwLnNlbGVj
dEFsbCgiZy5udi1sZWdlbmQiKS49CmRhdGEoW2NdKSx2PTNEZC5lbnRlcigpLmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnZkMyBudi1sZWdlbmQiKS5hcHBlbmQoIj0KZyIpLG09M0RkLnNlbGVj
dCgiZyIpO2QuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdC5sZWZ0KyIsIit0LnRvcCsi
KSIpPQo7dmFyIGc9M0RtLnNlbGVjdEFsbCgiLm52LXNlcmllcyIpLmRhdGEoZnVuY3Rpb24oZSl7
cmV0dXJuIGV9KSx5PTNEZy5lbnRlcig9CikuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1z
ZXJpZXMiKS5vbigibW91c2VvdmVyIixmdW5jdGlvbihlLHQpe2wubGVnZT0KbmRNb3VzZW92ZXIo
ZSx0KX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oZSx0KXtsLmxlZ2VuZE1vdXNlb3V0KGUsdCl9
KS5vbigiPQpjbGljayIsZnVuY3Rpb24oZSx0KXtsLmxlZ2VuZENsaWNrKGUsdCksYSYmKGY/KGMu
Zm9yRWFjaChmdW5jdGlvbihlKXtlLmRpc2E9CmJsZWQ9M0QhMH0pLGUuZGlzYWJsZWQ9M0QhMSk6
KGUuZGlzYWJsZWQ9M0QhZS5kaXNhYmxlZCxjLmV2ZXJ5KGZ1bmN0aW9uKGUpez0KcmV0dXJuIGUu
ZGlzYWJsZWR9KSYmYy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuZGlzYWJsZWQ9M0QhMX0pKSxsLnN0
YXRlQ2hhbmdlPQooe2Rpc2FibGVkOmMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxl
ZH0pfSkpfSkub24oImRibGNsaWNrIixmdW5jdGk9Cm9uKGUsdCl7bC5sZWdlbmREYmxjbGljayhl
LHQpLGEmJihjLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5kaXNhYmxlZD0zRCEwfSksZT0KLmRpc2Fi
bGVkPTNEITEsbC5zdGF0ZUNoYW5nZSh7ZGlzYWJsZWQ6Yy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJu
ISFlLmRpc2FibGVkPQp9KX0pKX0pO3kuYXBwZW5kKCJjaXJjbGUiKS5zdHlsZSgic3Ryb2tlLXdp
ZHRoIiwyKS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZC09CnN5bWJvbCIpLmF0dHIoInIiLDUpLHku
YXBwZW5kKCJ0ZXh0IikuYXR0cigidGV4dC1hbmNob3IiLCJzdGFydCIpLmF0dHIoImNsYT0Kc3Mi
LCJudi1sZWdlbmQtdGV4dCIpLmF0dHIoImR5IiwiLjMyZW0iKS5hdHRyKCJkeCIsIjgiKSxnLmNs
YXNzZWQoImRpc2FibGVkPQoiLGZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVkfSksZy5leGl0
KCkucmVtb3ZlKCksZy5zZWxlY3QoImNpcmNsZSIpLnN0eWw9CmUoImZpbGwiLGZ1bmN0aW9uKGUs
dCl7cmV0dXJuIGUuY29sb3J8fHMoZSx0KX0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdD0K
KXtyZXR1cm4gZS5jb2xvcnx8cyhlLHQpfSksZy5zZWxlY3QoInRleHQiKS50ZXh0KGkpO2lmKG8p
e3ZhciBiPTNEW107Zy5lYWNoPQooZnVuY3Rpb24odCxuKXt2YXIgcj0zRGQzLnNlbGVjdCh0aGlz
KS5zZWxlY3QoInRleHQiKSxpO3RyeXtpPTNEci5nZXRDb21wdXQ9CmVkVGV4dExlbmd0aCgpO2lm
KGk8PTNEMCl0aHJvdyBFcnJvcigpfWNhdGNoKHMpe2k9M0RlLnV0aWxzLmNhbGNBcHByb3hUZXh0
Vz0KaWR0aChyKX1iLnB1c2goaSsyOCl9KTt2YXIgdz0zRDAsRT0zRDAsUz0zRFtdO3doaWxlKEU8
aCYmdzxiLmxlbmd0aClTW3ddPTNEPQpiW3ddLEUrPTNEYlt3KytdO3c9M0Q9M0Q9M0QwJiYodz0z
RDEpO3doaWxlKEU+aCYmdz4xKXtTPTNEW10sdy0tO2Zvcih2YXIgeD0KPTNEMDt4PGIubGVuZ3Ro
O3grKyliW3hdPihTW3gld118fDApJiYoU1t4JXddPTNEYlt4XSk7RT0zRFMucmVkdWNlKGZ1bmN0
aW9uPQooZSx0LG4scil7cmV0dXJuIGUrdH0pfXZhciBUPTNEW107Zm9yKHZhciBOPTNEMCxDPTNE
MDtOPHc7TisrKVRbTl09M0RDLEMrPQo9M0RTW05dO2cuYXR0cigidHJhbnNmb3JtIixmdW5jdGlv
bihlLHQpe3JldHVybiJ0cmFuc2xhdGUoIitUW3Qld10rIiwiKyg1K009CmF0aC5mbG9vcih0L3cp
KjIwKSsiKSJ9KSx1P20uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKG4tdC5yaWdodC1F
KSsiLD0KIit0LnRvcCsiKSIpOm0uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIit0LnRv
cCsiKSIpLHI9M0R0LnRvcCt0LmJvdHRvPQptK01hdGguY2VpbChiLmxlbmd0aC93KSoyMH1lbHNl
e3ZhciBrPTNENSxMPTNENSxBPTNEMCxPO2cuYXR0cigidHJhbnNmb3JtIiw9CmZ1bmN0aW9uKGUs
cil7dmFyIGk9M0RkMy5zZWxlY3QodGhpcykuc2VsZWN0KCJ0ZXh0Iikubm9kZSgpLmdldENvbXB1
dGVkVGV4dD0KTGVuZ3RoKCkrMjg7cmV0dXJuIE89M0RMLG48dC5sZWZ0K3QucmlnaHQrTytpJiYo
TD0zRE89M0Q1LGsrPTNEMjApLEwrPTNEaSxMPQo+QSYmKEE9M0RMKSwidHJhbnNsYXRlKCIrTysi
LCIraysiKSJ9KSxtLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhuLXQ9Ci5yaWdodC1B
KSsiLCIrdC50b3ArIikiKSxyPTNEdC50b3ArdC5ib3R0b20raysxNX19KSxjfXZhciB0PTNEe3Rv
cDo1LHJpZ2h0Oj0KMCxib3R0b206NSxsZWZ0OjB9LG49M0Q0MDAscj0zRDIwLGk9M0RmdW5jdGlv
bihlKXtyZXR1cm4gZS5rZXl9LHM9M0RlLnV0aWxzPQouZGVmYXVsdENvbG9yKCksbz0zRCEwLHU9
M0QhMCxhPTNEITAsZj0zRCExLGw9M0RkMy5kaXNwYXRjaCgibGVnZW5kQ2xpY2siLCI9CmxlZ2Vu
ZERibGNsaWNrIiwibGVnZW5kTW91c2VvdmVyIiwibGVnZW5kTW91c2VvdXQiLCJzdGF0ZUNoYW5n
ZSIpO3JldHVybiBjLj0KZGlzcGF0Y2g9M0RsLGMub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1
bmMuYmluZChjKSxjLm1hcmdpbj0zRGZ1bmN0aW9uKGUpPQp7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHQudG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQ9Ci5y
aWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJv
dHRvbT0zRHR5cGVvZiBlLj0KYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9t
LHQubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lPQpkIj9lLmxlZnQ6dC5sZWZ0LGMp
OnR9LGMud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGU9
CixjKTpufSxjLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhy
PTNEZSxjKTpyfSxjLmtleT0zRD0KZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGk9M0RlLGMpOml9LGMuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1PQpybiBhcmd1bWVudHMubGVu
Z3RoPyhzPTNEZS51dGlscy5nZXRDb2xvcih0KSxjKTpzfSxjLmFsaWduPTNEZnVuY3Rpb24oZSl7
cmU9CnR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsYyk6b30sYy5yaWdodEFsaWduPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZT0KbnRzLmxlbmd0aD8odT0zRGUsYyk6dX0sYy51cGRhdGVT
dGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPQo/KGE9M0RlLGMpOmF9
LGMucmFkaW9CdXR0b25Nb2RlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGY9M0Q9CmUsYyk6Zn0sY30sZS5tb2RlbHMubGluZT0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gbShn
KXtyZXR1cm4gZy5lYWNoKGZ1bmN0aW9uKD0KbSl7dmFyIGc9M0RyLW4ubGVmdC1uLnJpZ2h0LGI9
M0RpLW4udG9wLW4uYm90dG9tLHc9M0RkMy5zZWxlY3QodGhpcyk7Yz0zRHQuPQp4U2NhbGUoKSxo
PTNEdC55U2NhbGUoKSxkPTNEZHx8Yyx2PTNEdnx8aDt2YXIgRT0zRHcuc2VsZWN0QWxsKCJnLm52
LXdyYXAubnY9Ci1saW5lIikuZGF0YShbbV0pLFM9M0RFLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0
cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbD0KaW5lIiksVD0zRFMuYXBwZW5kKCJkZWZzIiks
Tj0zRFMuYXBwZW5kKCJnIiksQz0zREUuc2VsZWN0KCJnIik7Ti5hcHBlbmQoImciPQopLmF0dHIo
ImNsYXNzIiwibnYtZ3JvdXBzIiksTi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXNjYXR0
ZXJXcmFwIiksRS49CmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK24ubGVmdCsiLCIrbi50
b3ArIikiKSx0LndpZHRoKGcpLmhlaWdodChiKTt2YT0KciBrPTNERS5zZWxlY3QoIi5udi1zY2F0
dGVyV3JhcCIpO2suY2FsbCh0KSxULmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJpZCIsPQoibnYt
ZWRnZS1jbGlwLSIrdC5pZCgpKS5hcHBlbmQoInJlY3QiKSxFLnNlbGVjdCgiI252LWVkZ2UtY2xp
cC0iK3QuaWQoKSsiIHI9CmVjdCIpLmF0dHIoIndpZHRoIixnKS5hdHRyKCJoZWlnaHQiLGI+MD9i
OjApLEMuYXR0cigiY2xpcC1wYXRoIixsPyJ1cmwoI252LT0KZWRnZS1jbGlwLSIrdC5pZCgpKyIp
IjoiIiksay5hdHRyKCJjbGlwLXBhdGgiLGw/InVybCgjbnYtZWRnZS1jbGlwLSIrdC5pZCgpPQor
IikiOiIiKTt2YXIgTD0zREUuc2VsZWN0KCIubnYtZ3JvdXBzIikuc2VsZWN0QWxsKCIubnYtZ3Jv
dXAiKS5kYXRhKGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGV9LGZ1bmN0aW9uKGUpe3JldHVybiBlLmtl
eX0pO0wuZW50ZXIoKS5hcHBlbmQoImciKS5zdHlsZSgic3Rybz0Ka2Utb3BhY2l0eSIsMWUtNiku
c3R5bGUoImZpbGwtb3BhY2l0eSIsMWUtNiksTC5leGl0KCkucmVtb3ZlKCksTC5hdHRyKCJjbGFz
PQpzIixmdW5jdGlvbihlLHQpe3JldHVybiJudi1ncm91cCBudi1zZXJpZXMtIit0fSkuY2xhc3Nl
ZCgiaG92ZXIiLGZ1bmN0aW9uKGU9Cil7cmV0dXJuIGUuaG92ZXJ9KS5zdHlsZSgiZmlsbCIsZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gcyhlLHQpfSkuc3R5bGUoInN0cm9rZT0KIixmdW5jdGlvbihlLHQp
e3JldHVybiBzKGUsdCl9KSxMLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMSkuc3R5bGUoImZpbGwt
b3BhPQpjaXR5IiwuNSk7dmFyIEE9M0RMLnNlbGVjdEFsbCgicGF0aC5udi1hcmVhIikuZGF0YShm
dW5jdGlvbihlKXtyZXR1cm4gZihlKT89CltlXTpbXX0pO0EuZW50ZXIoKS5hcHBlbmQoInBhdGgi
KS5hdHRyKCJjbGFzcyIsIm52LWFyZWEiKS5hdHRyKCJkIixmdW5jdGlvbj0KKHQpe3JldHVybiBk
My5zdmcuYXJlYSgpLmludGVycG9sYXRlKHApLmRlZmluZWQoYSkueChmdW5jdGlvbih0LG4pe3Jl
dHVybiBlPQoudXRpbHMuTmFOdG9aZXJvKGQobyh0LG4pKSl9KS55MChmdW5jdGlvbih0LG4pe3Jl
dHVybiBlLnV0aWxzLk5hTnRvWmVybyh2KHU9Cih0LG4pKSl9KS55MShmdW5jdGlvbihlLHQpe3Jl
dHVybiB2KGguZG9tYWluKClbMF08PTNEMD9oLmRvbWFpbigpWzFdPj0zRDA/MD0KOmguZG9tYWlu
KClbMV06aC5kb21haW4oKVswXSl9KS5hcHBseSh0aGlzLFt0LnZhbHVlc10pfSksTC5leGl0KCku
c2VsZWN0QWxsPQooInBhdGgubnYtYXJlYSIpLnJlbW92ZSgpLEEuYXR0cigiZCIsZnVuY3Rpb24o
dCl7cmV0dXJuIGQzLnN2Zy5hcmVhKCkuaW50ZXI9CnBvbGF0ZShwKS5kZWZpbmVkKGEpLngoZnVu
Y3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8oYyhvKHQsbikpKX0pLj0KeTAoZnVu
Y3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8oaCh1KHQsbikpKX0pLnkxKGZ1bmN0
aW9uKGUsdCl7cmV0PQp1cm4gaChoLmRvbWFpbigpWzBdPD0zRDA/aC5kb21haW4oKVsxXT49M0Qw
PzA6aC5kb21haW4oKVsxXTpoLmRvbWFpbigpWzBdKX09CikuYXBwbHkodGhpcyxbdC52YWx1ZXNd
KX0pO3ZhciBPPTNETC5zZWxlY3RBbGwoInBhdGgubnYtbGluZSIpLmRhdGEoZnVuY3Rpbz0Kbihl
KXtyZXR1cm5bZS52YWx1ZXNdfSk7Ty5lbnRlcigpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNz
IiwibnYtbGluZSIpLmF0PQp0cigiZCIsZDMuc3ZnLmxpbmUoKS5pbnRlcnBvbGF0ZShwKS5kZWZp
bmVkKGEpLngoZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGk9CmxzLk5hTnRvWmVybyhkKG8odCxu
KSkpfSkueShmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyh2KHUodCxuKT0K
KSl9KSksTy5hdHRyKCJkIixkMy5zdmcubGluZSgpLmludGVycG9sYXRlKHApLmRlZmluZWQoYSku
eChmdW5jdGlvbih0LG4pe3JlPQp0dXJuIGUudXRpbHMuTmFOdG9aZXJvKGMobyh0LG4pKSl9KS55
KGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUudXRpbHMuTmFOdG9aZXI9Cm8oaCh1KHQsbikpKX0pKSxk
PTNEYy5jb3B5KCksdj0zRGguY29weSgpfSksbX12YXIgdD0zRGUubW9kZWxzLnNjYXR0ZXIoKSxu
PQo9M0R7dG9wOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9LHI9M0Q5NjAsaT0zRDUwMCxzPTNE
ZS51dGlscy5kZWZhdWx0Q29sb3I9CigpLG89M0RmdW5jdGlvbihlKXtyZXR1cm4gZS54fSx1PTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0sYT0zRGZ1bmN0aW9uKGUsdD0KKXtyZXR1cm4haXNOYU4o
dShlLHQpKSYmdShlLHQpIT0zRD0zRG51bGx9LGY9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5hcmVh
fSxsPQo9M0QhMSxjLGgscD0zRCJsaW5lYXIiO3Quc2l6ZSgxNikuc2l6ZURvbWFpbihbMTYsMjU2
XSk7dmFyIGQsdjtyZXR1cm4gbS5kaXM9CnBhdGNoPTNEdC5kaXNwYXRjaCxtLnNjYXR0ZXI9M0R0
LGQzLnJlYmluZChtLHQsImlkIiwiaW50ZXJhY3RpdmUiLCJzaXplIiwieD0KU2NhbGUiLCJ5U2Nh
bGUiLCJ6U2NhbGUiLCJ4RG9tYWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsInNpemVE
b21haW4iPQosImZvcmNlWCIsImZvcmNlWSIsImZvcmNlU2l6ZSIsImNsaXBWb3Jvbm9pIiwidXNl
Vm9yb25vaSIsImNsaXBSYWRpdXMiLCJwYWQ9CkRhdGEiLCJoaWdobGlnaHRQb2ludCIsImNsZWFy
SGlnaGxpZ2h0cyIpLG0ub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYj0KaW5kKG0pLG0u
bWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4udG9wPTNEdHlw
ZW9mIGUudG9wPQohPTNEInVuZGVmaW5lZCI/ZS50b3A6bi50b3Asbi5yaWdodD0zRHR5cGVvZiBl
LnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ9CjpuLnJpZ2h0LG4uYm90dG9tPTNEdHlwZW9m
IGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOm4uYm90dG9tLG4ubGVmdD0KPTNEdHlw
ZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6bi5sZWZ0LG0pOm59LG0ud2lkdGg9M0Rm
dW5jdGlvbihlKXtyPQpldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZSxtKTpyfSxtLmhlaWdo
dD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHM9Ci5sZW5ndGg/KGk9M0RlLG0pOml9LG0u
eD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZSx0LngoZT0KKSxt
KTpvfSxtLnk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsdC55
KGUpLG0pOnV9LG0uY2xpPQpwRWRnZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhsPTNEZSxtKTpsfSxtLmNvbG9yPTNEZnVuY3Rpb249CihuKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8ocz0zRGUudXRpbHMuZ2V0Q29sb3IobiksdC5jb2xvcihzKSxtKTpzfSxtLmludD0K
ZXJwb2xhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsbSk6
cH0sbS5kZWZpbmVkPTNEZnVuPQpjdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0z
RGUsbSk6YX0sbS5pc0FyZWE9M0RmdW5jdGlvbihlKXtyZXR1cm49CiBhcmd1bWVudHMubGVuZ3Ro
PyhmPTNEZDMuZnVuY3RvcihlKSxtKTpmfSxtfSxlLm1vZGVscy5saW5lQ2hhcnQ9M0RmdW5jdGlv
bj0KKCl7ZnVuY3Rpb24gTihtKXtyZXR1cm4gbS5lYWNoKGZ1bmN0aW9uKG0pe3ZhciB4PTNEZDMu
c2VsZWN0KHRoaXMpLEM9M0R0aGlzPQosaz0zRChhfHxwYXJzZUludCh4LnN0eWxlKCJ3aWR0aCIp
KXx8OTYwKS1vLmxlZnQtby5yaWdodCxMPTNEKGZ8fHBhcnNlSW50KHg9Ci5zdHlsZSgiaGVpZ2h0
IikpfHw0MDApLW8udG9wLW8uYm90dG9tO04udXBkYXRlPTNEZnVuY3Rpb24oKXt4LmNhbGwoTil9
LE4uYz0Kb250YWluZXI9M0R0aGlzLGIuZGlzYWJsZWQ9M0RtLm1hcChmdW5jdGlvbihlKXtyZXR1
cm4hIWUuZGlzYWJsZWR9KTtpZighdyl7PQp2YXIgQTt3PTNEe307Zm9yKEEgaW4gYiliW0FdaW5z
dGFuY2VvZiBBcnJheT93W0FdPTNEYltBXS5zbGljZSgwKTp3W0FdPTNEYls9CkFdfWlmKCFtfHwh
bS5sZW5ndGh8fCFtLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubGVuZ3RofSku
bGVuZ3RoKT0Ke3ZhciBPPTNEeC5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFtFXSk7cmV0
dXJuIE8uZW50ZXIoKS5hcHBlbmQoInRleHQiPQopLmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0Rh
dGEiKS5hdHRyKCJkeSIsIi0uN2VtIikuc3R5bGUoInRleHQtYW5jaG9yIiwibWk9CmRkbGUiKSxP
LmF0dHIoIngiLG8ubGVmdCtrLzIpLmF0dHIoInkiLG8udG9wK0wvMikudGV4dChmdW5jdGlvbihl
KXtyZXR1cm4gZT0KfSksTn14LnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbW92ZSgpLGc9M0R0
LnhTY2FsZSgpLHk9M0R0LnlTY2FsZSgpO3ZhciBNPQo9M0R4LnNlbGVjdEFsbCgiZy5udi13cmFw
Lm52LWxpbmVDaGFydCIpLmRhdGEoW21dKSxfPTNETS5lbnRlcigpLmFwcGVuZCgiZyI9CikuYXR0
cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbGluZUNoYXJ0IikuYXBwZW5kKCJnIiksRD0zRE0u
c2VsZWN0KCJnIik7Xz0KLmFwcGVuZCgicmVjdCIpLnN0eWxlKCJvcGFjaXR5IiwwKSxfLmFwcGVu
ZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzPQoiKSxfLmFwcGVuZCgiZyIpLmF0dHIo
ImNsYXNzIiwibnYteSBudi1heGlzIiksXy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm49CnYt
bGluZXNXcmFwIiksXy5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZFdyYXAiKSxf
LmFwcGVuZCgiZyIpLmF0dD0KcigiY2xhc3MiLCJudi1pbnRlcmFjdGl2ZSIpLEQuc2VsZWN0KCJy
ZWN0IikuYXR0cigid2lkdGgiLGspLmF0dHIoImhlaWdodCIsPQpMPjA/TDowKSxsJiYoaS53aWR0
aChrKSxELnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5kYXR1bShtKS5jYWxsKGkpLG8udG9wIT0K
PTNEaS5oZWlnaHQoKSYmKG8udG9wPTNEaS5oZWlnaHQoKSxMPTNEKGZ8fHBhcnNlSW50KHguc3R5
bGUoImhlaWdodCIpKXx8NDAwPQopLW8udG9wLW8uYm90dG9tKSxNLnNlbGVjdCgiLm52LWxlZ2Vu
ZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCw9CiIrIC1vLnRvcCsiKSIpKSxN
LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK28ubGVmdCsiLCIrby50b3ArIikiKSxwJiZE
Lj0Kc2VsZWN0KCIubnYteS5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIr
aysiLDApIiksZCYmKHMud2lkdGgoPQprKS5oZWlnaHQoTCkubWFyZ2luKHtsZWZ0Om8ubGVmdCx0
b3A6by50b3B9KS5zdmdDb250YWluZXIoeCkueFNjYWxlKGcpLE0uc2U9CmxlY3QoIi5udi1pbnRl
cmFjdGl2ZSIpLmNhbGwocykpLHQud2lkdGgoaykuaGVpZ2h0KEwpLmNvbG9yKG0ubWFwKGZ1bmN0
aW9uKD0KZSx0KXtyZXR1cm4gZS5jb2xvcnx8dShlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIW1bdF0uZGlzYWJsZWR9KSk7PQp2YXIgUD0zREQuc2VsZWN0KCIubnYtbGluZXNXcmFw
IikuZGF0dW0obS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWI9CmxlZH0pKTtQLmNh
bGwodCksYyYmKG4uc2NhbGUoZykudGlja3Moay8xMDApLnRpY2tTaXplKC1MLDApLEQuc2VsZWN0
KCIubnYteD0KLm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK3kucmFu
Z2UoKVswXSsiKSIpLEQuc2VsZWN0KCIubnYtPQp4Lm52LWF4aXMiKS5jYWxsKG4pKSxoJiYoci5z
Y2FsZSh5KS50aWNrcyhMLzM2KS50aWNrU2l6ZSgtaywwKSxELnNlbGVjdCgiLm49CnYteS5udi1h
eGlzIikuY2FsbChyKSksaS5kaXNwYXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe2I9
M0RlLFMuc3RhdD0KZUNoYW5nZShiKSxOLnVwZGF0ZSgpfSkscy5kaXNwYXRjaC5vbigiZWxlbWVu
dE1vdXNlbW92ZSIsZnVuY3Rpb24oaSl7dC5jbGVhPQpySGlnaGxpZ2h0cygpO3ZhciBhLGYsbCxj
PTNEW107bS5maWx0ZXIoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5zZXJpZXNJbmRleD0KPTNEdCwh
ZS5kaXNhYmxlZH0pLmZvckVhY2goZnVuY3Rpb24obixyKXtmPTNEZS5pbnRlcmFjdGl2ZUJpc2Vj
dChuLnZhbHVlcyxpPQoucG9pbnRYVmFsdWUsTi54KCkpLHQuaGlnaGxpZ2h0UG9pbnQocixmLCEw
KTt2YXIgcz0zRG4udmFsdWVzW2ZdO2lmKHR5cGVvZiA9CnM9M0Q9M0QidW5kZWZpbmVkIilyZXR1
cm47dHlwZW9mIGE9M0Q9M0QidW5kZWZpbmVkIiYmKGE9M0RzKSx0eXBlb2YgbD0zRD0zRD0KInVu
ZGVmaW5lZCImJihsPTNETi54U2NhbGUoKShOLngoKShzLGYpKSksYy5wdXNoKHtrZXk6bi5rZXks
dmFsdWU6Ti55KCkocyxmPQopLGNvbG9yOnUobixuLnNlcmllc0luZGV4KX0pfSk7aWYoYy5sZW5n
dGg+Mil7dmFyIGg9M0ROLnlTY2FsZSgpLmludmVydChpLm09Cm91c2VZKSxwPTNETWF0aC5hYnMo
Ti55U2NhbGUoKS5kb21haW4oKVswXS1OLnlTY2FsZSgpLmRvbWFpbigpWzFdKSxkPTNELjAzKj0K
cCxnPTNEZS5uZWFyZXN0VmFsdWVJbmRleChjLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1
ZX0pLGgsZCk7ZyE9M0Q9M0RuPQp1bGwmJihjW2ddLmhpZ2hsaWdodD0zRCEwKX12YXIgeT0zRG4u
dGlja0Zvcm1hdCgpKE4ueCgpKGEsZikpO3MudG9vbHRpcC5wb3M9Cml0aW9uKHtsZWZ0Omwrby5s
ZWZ0LHRvcDppLm1vdXNlWStvLnRvcH0pLmNoYXJ0Q29udGFpbmVyKEMucGFyZW50Tm9kZSkuZW5h
Yj0KbGVkKHYpLnZhbHVlRm9ybWF0dGVyKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIudGlja0Zvcm1h
dCgpKGUpfSkuZGF0YSh7dmFsdWU6PQp5LHNlcmllczpjfSkoKSxzLnJlbmRlckd1aWRlTGluZShs
KX0pLHMuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dCIsZnVuY3Q9CmlvbihlKXtTLnRvb2x0
aXBIaWRlKCksdC5jbGVhckhpZ2hsaWdodHMoKX0pLFMub24oInRvb2x0aXBTaG93IixmdW5jdGlv
bihlKT0Ke3YmJlQoZSxDLnBhcmVudE5vZGUpfSksUy5vbigiY2hhbmdlU3RhdGUiLGZ1bmN0aW9u
KGUpe3R5cGVvZiBlLmRpc2FibGVkIT0KPTNEInVuZGVmaW5lZCImJm0ubGVuZ3RoPTNEPTNEPTNE
ZS5kaXNhYmxlZC5sZW5ndGgmJihtLmZvckVhY2goZnVuY3Rpb24odCxuPQope3QuZGlzYWJsZWQ9
M0RlLmRpc2FibGVkW25dfSksYi5kaXNhYmxlZD0zRGUuZGlzYWJsZWQpLE4udXBkYXRlKCl9KX0p
LE59dmE9CnIgdD0zRGUubW9kZWxzLmxpbmUoKSxuPTNEZS5tb2RlbHMuYXhpcygpLHI9M0RlLm1v
ZGVscy5heGlzKCksaT0zRGUubW9kZWxzLj0KbGVnZW5kKCkscz0zRGUuaW50ZXJhY3RpdmVHdWlk
ZWxpbmUoKSxvPTNEe3RvcDozMCxyaWdodDoyMCxib3R0b206NTAsbGVmdDo2PQowfSx1PTNEZS51
dGlscy5kZWZhdWx0Q29sb3IoKSxhPTNEbnVsbCxmPTNEbnVsbCxsPTNEITAsYz0zRCEwLGg9M0Qh
MCxwPTNEITE9CixkPTNEITEsdj0zRCEwLG09M0RmdW5jdGlvbihlLHQsbixyLGkpe3JldHVybiI8
aDM+IitlKyI8L2gzPiIrIjxwPiIrbisiIGF0ID0KIit0KyI8L3A+In0sZyx5LGI9M0R7fSx3PTNE
bnVsbCxFPTNEIk5vIERhdGEgQXZhaWxhYmxlLiIsUz0zRGQzLmRpc3BhdGNoKCJ0PQpvb2x0aXBT
aG93IiwidG9vbHRpcEhpZGUiLCJzdGF0ZUNoYW5nZSIsImNoYW5nZVN0YXRlIikseD0zRDA7bi5v
cmllbnQoImJvdHQ9Cm9tIikudGlja1BhZGRpbmcoNyksci5vcmllbnQocD8icmlnaHQiOiJsZWZ0
Iik7dmFyIFQ9M0RmdW5jdGlvbihpLHMpe3ZhciBvPQo9M0RpLnBvc1swXSsocy5vZmZzZXRMZWZ0
fHwwKSx1PTNEaS5wb3NbMV0rKHMub2Zmc2V0VG9wfHwwKSxhPTNEbi50aWNrRm9ybWE9CnQoKSh0
LngoKShpLnBvaW50LGkucG9pbnRJbmRleCkpLGY9M0RyLnRpY2tGb3JtYXQoKSh0LnkoKShpLnBv
aW50LGkucG9pbnRJbj0KZGV4KSksbD0zRG0oaS5zZXJpZXMua2V5LGEsZixpLE4pO2UudG9vbHRp
cC5zaG93KFtvLHVdLGwsbnVsbCxudWxsLHMpfTtyZXR1PQpybiB0LmRpc3BhdGNoLm9uKCJlbGVt
ZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK289Ci5s
ZWZ0LGUucG9zWzFdK28udG9wXSxTLnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWxl
bWVudE1vdXNlb3V0LnRvbz0KbHRpcCIsZnVuY3Rpb24oZSl7Uy50b29sdGlwSGlkZShlKX0pLFMu
b24oInRvb2x0aXBIaWRlIixmdW5jdGlvbigpe3YmJmUudG9vPQpsdGlwLmNsZWFudXAoKX0pLE4u
ZGlzcGF0Y2g9M0RTLE4ubGluZXM9M0R0LE4ubGVnZW5kPTNEaSxOLnhBeGlzPTNEbixOLnlBeGk9
CnM9M0RyLE4uaW50ZXJhY3RpdmVMYXllcj0zRHMsZDMucmViaW5kKE4sdCwiZGVmaW5lZCIsImlz
QXJlYSIsIngiLCJ5Iiwic2l6ZT0KIiwieFNjYWxlIiwieVNjYWxlIiwieERvbWFpbiIsInlEb21h
aW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJmb3JjZVgiLCJmb3JjZVkiPQosImludGVyYWN0aXZlIiwi
Y2xpcEVkZ2UiLCJjbGlwVm9yb25vaSIsInVzZVZvcm9ub2kiLCJpZCIsImludGVycG9sYXRlIiks
Ti49Cm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQoTiksTi5tYXJnaW49M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbj0KdHMubGVuZ3RoPyhvLnRvcD0zRHR5cGVvZiBlLnRvcCE9
M0QidW5kZWZpbmVkIj9lLnRvcDpvLnRvcCxvLnJpZ2h0PTNEdHlwZW9mPQogZS5yaWdodCE9M0Qi
dW5kZWZpbmVkIj9lLnJpZ2h0Om8ucmlnaHQsby5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNE
InVuZGU9CmZpbmVkIj9lLmJvdHRvbTpvLmJvdHRvbSxvLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0z
RCJ1bmRlZmluZWQiP2UubGVmdDpvLmxlZj0KdCxOKTpvfSxOLndpZHRoPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLE4pOmF9LE4uaGVpZ2h0PQo9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUsTik6Zn0sTi5jb2xvcj0zRGZ1bmN0
aW9uKHQpe3I9CmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RlLnV0aWxzLmdldENvbG9yKHQp
LGkuY29sb3IodSksTik6dX0sTi5zaG93TGVnZT0KbmQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8obD0zRGUsTik6bH0sTi5zaG93WEF4aXM9M0RmdW5jdGlvPQpuKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSxOKTpjfSxOLnNob3dZQXhpcz0zRGZ1bmN0aW9u
KGUpe3JldHVybiA9CmFyZ3VtZW50cy5sZW5ndGg/KGg9M0RlLE4pOmh9LE4ucmlnaHRBbGlnbllB
eGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZT0KbnRzLmxlbmd0aD8ocD0zRGUsci5vcmll
bnQoZT8icmlnaHQiOiJsZWZ0IiksTik6cH0sTi51c2VJbnRlcmFjdGl2ZUd1aWRlbGluPQplPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9M0RlLGU9M0Q9M0Q9M0QhMCYm
KE4uaW50ZXJhY3RpdmU9CighMSksTi51c2VWb3Jvbm9pKCExKSksTik6ZH0sTi50b29sdGlwcz0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZz0KdGg/KHY9M0RlLE4pOnZ9LE4udG9v
bHRpcENvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0KPTNE
ZSxOKTptfSxOLnN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGI9
M0RlLE4pOmJ9LE4uZGVmPQphdWx0U3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8odz0zRGUsTik6d30sTi5ub0RhdGE9M0RmdW49CmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhFPTNEZSxOKTpFfSxOLnRyYW5zaXRpb25EdXJhdGlvbj0zRGZ1bmN0aT0K
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHg9M0RlLE4pOnh9LE59LGUubW9kZWxzLmxp
bmVQbHVzQmFyQ2hhcnQ9M0RmPQp1bmN0aW9uKCl7ZnVuY3Rpb24gVChlKXtyZXR1cm4gZS5lYWNo
KGZ1bmN0aW9uKGUpe3ZhciBsPTNEZDMuc2VsZWN0KHRoaXMpLGM9Cj0zRHRoaXMsdj0zRChhfHxw
YXJzZUludChsLnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS11LmxlZnQtdS5yaWdodCxOPTNEKGZ8fHBh
cj0Kc2VJbnQobC5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXUudG9wLXUuYm90dG9tO1QudXBkYXRl
PTNEZnVuY3Rpb24oKXtsLmNhbGwoPQpUKX0sYi5kaXNhYmxlZD0zRGUubWFwKGZ1bmN0aW9uKGUp
e3JldHVybiEhZS5kaXNhYmxlZH0pO2lmKCF3KXt2YXIgQzt3PTNEe309Cjtmb3IoQyBpbiBiKWJb
Q11pbnN0YW5jZW9mIEFycmF5P3dbQ109M0RiW0NdLnNsaWNlKDApOndbQ109M0RiW0NdfWlmKCFl
fHwhZT0KLmxlbmd0aHx8IWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5sZW5n
dGh9KS5sZW5ndGgpe3ZhciBrPTNEbC5zPQplbGVjdEFsbCgiLm52LW5vRGF0YSIpLmRhdGEoW0Vd
KTtyZXR1cm4gay5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXM9CnMiLCJudmQzIG52
LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUi
KSxrLmF0dD0KcigieCIsdS5sZWZ0K3YvMikuYXR0cigieSIsdS50b3ArTi8yKS50ZXh0KGZ1bmN0
aW9uKGUpe3JldHVybiBlfSksVH1sLnNlbGVjPQp0QWxsKCIubnYtbm9EYXRhIikucmVtb3ZlKCk7
dmFyIEw9M0RlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZCY9CiZlLmJhcn0p
LEE9M0RlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5iYXJ9KTttPTNEQS5maWx0ZXIoZnVu
Y3Rpb24oZSl7cj0KZXR1cm4hZS5kaXNhYmxlZH0pLmxlbmd0aCYmQS5maWx0ZXIoZnVuY3Rpb24o
ZSl7cmV0dXJuIWUuZGlzYWJsZWR9KVswXS52YWx1PQplcy5sZW5ndGg/dC54U2NhbGUoKTpuLnhT
Y2FsZSgpLGc9M0RuLnlTY2FsZSgpLHk9M0R0LnlTY2FsZSgpO3ZhciBPPTNEZDMuc2U9CmxlY3Qo
dGhpcykuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtbGluZVBsdXNCYXIiKS5kYXRhKFtlXSksTT0z
RE8uZW50ZXIoKS5hcD0KcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LWxp
bmVQbHVzQmFyIikuYXBwZW5kKCJnIiksXz0zRE8uc2VsPQplY3QoImciKTtNLmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksTS5hcHBlbmQoImciKS5hdHRyKCJjbGE9CnNz
IiwibnYteTEgbnYtYXhpcyIpLE0uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15MiBudi1h
eGlzIiksTS5hcHBlbmQoIj0KZyIpLmF0dHIoImNsYXNzIiwibnYtYmFyc1dyYXAiKSxNLmFwcGVu
ZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGluZXNXcmFwIiksPQpNLmFwcGVuZCgiZyIpLmF0dHIo
ImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpLHAmJihvLndpZHRoKHYvMiksXy5zZWxlY3QoIi5udi09
CmxlZ2VuZFdyYXAiKS5kYXR1bShlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5vcmlnaW5hbEtl
eT0zRGUub3JpZ2luYWxLZXk9Cj0zRD0zRD0zRHVuZGVmaW5lZD9lLmtleTplLm9yaWdpbmFsS2V5
LGUua2V5PTNEZS5vcmlnaW5hbEtleSsoZS5iYXI/IiAobGVmdD0KIGF4aXMpIjoiIChyaWdodCBh
eGlzKSIpLGV9KSkuY2FsbChvKSx1LnRvcCE9M0RvLmhlaWdodCgpJiYodS50b3A9M0RvLmhlaWdo
PQp0KCksTj0zRChmfHxwYXJzZUludChsLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktdS50b3AtdS5i
b3R0b20pLF8uc2VsZWN0KCIubnY9Ci1sZWdlbmRXcmFwIikuYXR0cigidHJhbnNmb3JtIiwidHJh
bnNsYXRlKCIrdi8yKyIsIisgLXUudG9wKyIpIikpLE8uYXR0cigidD0KcmFuc2Zvcm0iLCJ0cmFu
c2xhdGUoIit1LmxlZnQrIiwiK3UudG9wKyIpIiksdC53aWR0aCh2KS5oZWlnaHQoTikuY29sb3Io
ZS5tPQphcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxoKGUsdCl9KS5maWx0ZXIoZnVu
Y3Rpb24odCxuKXtyZXR1cm4hZVtuXS49CmRpc2FibGVkJiYhZVtuXS5iYXJ9KSksbi53aWR0aCh2
KS5oZWlnaHQoTikuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cj0KbiBlLmNvbG9yfHxo
KGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZCYmZVtuXS5i
YXJ9KSk7PQp2YXIgRD0zRF8uc2VsZWN0KCIubnYtYmFyc1dyYXAiKS5kYXR1bShMLmxlbmd0aD9M
Olt7dmFsdWVzOltdfV0pLFA9M0RfLnNlbGU9CmN0KCIubnYtbGluZXNXcmFwIikuZGF0dW0oQVsw
XSYmIUFbMF0uZGlzYWJsZWQ/QTpbe3ZhbHVlczpbXX1dKTtkMy50cmFuc2l0aT0Kb24oRCkuY2Fs
bChuKSxkMy50cmFuc2l0aW9uKFApLmNhbGwodCksci5zY2FsZShtKS50aWNrcyh2LzEwMCkudGlj
a1NpemUoLU4sPQowKSxfLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIs
InRyYW5zbGF0ZSgwLCIrZy5yYW5nZSgpWzBdKyI9CikiKSxkMy50cmFuc2l0aW9uKF8uc2VsZWN0
KCIubnYteC5udi1heGlzIikpLmNhbGwociksaS5zY2FsZShnKS50aWNrcyhOLzM2KT0KLnRpY2tT
aXplKC12LDApLGQzLnRyYW5zaXRpb24oXy5zZWxlY3QoIi5udi15MS5udi1heGlzIikpLnN0eWxl
KCJvcGFjaXR5IixMPQoubGVuZ3RoPzE6MCkuY2FsbChpKSxzLnNjYWxlKHkpLnRpY2tzKE4vMzYp
LnRpY2tTaXplKEwubGVuZ3RoPzA6LXYsMCksXy5zZWw9CmVjdCgiLm52LXkyLm52LWF4aXMiKS5z
dHlsZSgib3BhY2l0eSIsQS5sZW5ndGg/MTowKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFucz0KbGF0
ZSgiK3YrIiwwKSIpLGQzLnRyYW5zaXRpb24oXy5zZWxlY3QoIi5udi15Mi5udi1heGlzIikpLmNh
bGwocyksby5kaXNwYXRjPQpoLm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24oZSl7Yj0zRGUsUy5z
dGF0ZUNoYW5nZShiKSxULnVwZGF0ZSgpfSksUy5vbigidG89Cm9sdGlwU2hvdyIsZnVuY3Rpb24o
ZSl7ZCYmeChlLGMucGFyZW50Tm9kZSl9KSxTLm9uKCJjaGFuZ2VTdGF0ZSIsZnVuY3Rpb24odD0K
KXt0eXBlb2YgdC5kaXNhYmxlZCE9M0QidW5kZWZpbmVkIiYmKGUuZm9yRWFjaChmdW5jdGlvbihl
LG4pe2UuZGlzYWJsZWQ9M0R0PQouZGlzYWJsZWRbbl19KSxiLmRpc2FibGVkPTNEdC5kaXNhYmxl
ZCksVC51cGRhdGUoKX0pfSksVH12YXIgdD0zRGUubW9kZWxzLmw9CmluZSgpLG49M0RlLm1vZGVs
cy5oaXN0b3JpY2FsQmFyKCkscj0zRGUubW9kZWxzLmF4aXMoKSxpPTNEZS5tb2RlbHMuYXhpcygp
LD0Kcz0zRGUubW9kZWxzLmF4aXMoKSxvPTNEZS5tb2RlbHMubGVnZW5kKCksdT0zRHt0b3A6MzAs
cmlnaHQ6NjAsYm90dG9tOjUwLGxlPQpmdDo2MH0sYT0zRG51bGwsZj0zRG51bGwsbD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBlLnh9LGM9M0RmdW5jdGlvbihlKXtyZXR1cm49CiBlLnl9LGg9M0RlLnV0
aWxzLmRlZmF1bHRDb2xvcigpLHA9M0QhMCxkPTNEITAsdj0zRGZ1bmN0aW9uKGUsdCxuLHIsaSl7
cmV0dT0Kcm4iPGgzPiIrZSsiPC9oMz4iKyI8cD4iK24rIiBhdCAiK3QrIjwvcD4ifSxtLGcseSxi
PTNEe30sdz0zRG51bGwsRT0zRCJObyBEPQphdGEgQXZhaWxhYmxlLiIsUz0zRGQzLmRpc3BhdGNo
KCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwic3RhdGVDaGFuZ2UiLCI9CmNoYW5nZVN0YXRl
Iik7bi5wYWREYXRhKCEwKSx0LmNsaXBFZGdlKCExKS5wYWREYXRhKCEwKSxyLm9yaWVudCgiYm90
dG9tIikudD0KaWNrUGFkZGluZyg3KS5oaWdobGlnaHRaZXJvKCExKSxpLm9yaWVudCgibGVmdCIp
LHMub3JpZW50KCJyaWdodCIpO3ZhciB4PTNEPQpmdW5jdGlvbihuLG8pe3ZhciB1PTNEbi5wb3Nb
MF0rKG8ub2Zmc2V0TGVmdHx8MCksYT0zRG4ucG9zWzFdKyhvLm9mZnNldFRvcHw9CnwwKSxmPTNE
ci50aWNrRm9ybWF0KCkodC54KCkobi5wb2ludCxuLnBvaW50SW5kZXgpKSxsPTNEKG4uc2VyaWVz
LmJhcj9pOnMpLj0KdGlja0Zvcm1hdCgpKHQueSgpKG4ucG9pbnQsbi5wb2ludEluZGV4KSksYz0z
RHYobi5zZXJpZXMua2V5LGYsbCxuLFQpO2UudG9vPQpsdGlwLnNob3coW3UsYV0sYyxuLnZhbHVl
PDA/Im4iOiJzIixudWxsLG8pfTtyZXR1cm4gdC5kaXNwYXRjaC5vbigiZWxlbWVudE09Cm91c2Vv
dmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK3UubGVmdCxlLnBvc1sx
XSt1LnRvcF0sUy50bz0Kb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNl
b3V0LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe1MudG9vbHRpPQpwSGlkZShlKX0pLG4uZGlzcGF0Y2gu
b24oImVsZW1lbnRNb3VzZW92ZXIudG9vbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS49CnBv
c1swXSt1LmxlZnQsZS5wb3NbMV0rdS50b3BdLFMudG9vbHRpcFNob3coZSl9KSxuLmRpc3BhdGNo
Lm9uKCJlbGVtZW50TW91cz0KZW91dC50b29sdGlwIixmdW5jdGlvbihlKXtTLnRvb2x0aXBIaWRl
KGUpfSksUy5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7PQpkJiZlLnRvb2x0aXAuY2xlYW51
cCgpfSksVC5kaXNwYXRjaD0zRFMsVC5sZWdlbmQ9M0RvLFQubGluZXM9M0R0LFQuYmFycz0zRG49
CixULnhBeGlzPTNEcixULnkxQXhpcz0zRGksVC55MkF4aXM9M0RzLGQzLnJlYmluZChULHQsImRl
ZmluZWQiLCJzaXplIiwiY2xpcD0KVm9yb25vaSIsImludGVycG9sYXRlIiksVC5vcHRpb25zPTNE
ZS51dGlscy5vcHRpb25zRnVuYy5iaW5kKFQpLFQueD0zRGZ1bmN0PQppb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGw9M0RlLHQueChlKSxuLngoZSksVCk6bH0sVC55PTNEZnVuY3Rpb24o
ZSk9CntyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGUsdC55KGUpLG4ueShlKSxUKTpjfSxU
Lm1hcmdpbj0zRGZ1bmN0aW9uKGUpez0KcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHUudG9wPTNE
dHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnUudG9wLHUuPQpyaWdodD0zRHR5cGVv
ZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6dS5yaWdodCx1LmJvdHRvbT0zRHR5cGVv
ZiBlLmI9Cm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnUuYm90dG9tLHUubGVmdD0zRHR5
cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZD0KIj9lLmxlZnQ6dS5sZWZ0LFQpOnV9LFQud2lkdGg9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT0zRGUsPQpUKTphfSxULmhl
aWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSxUKTpmfSxU
LmNvbG9yPQo9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUudXRp
bHMuZ2V0Q29sb3IodCksby5jb2xvcihoKSw9ClQpOmh9LFQuc2hvd0xlZ2VuZD0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxUKTpwfSxULnRvbz0KbHRpcHM9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGUsVCk6ZH0sVC50b29sdGlw
Q29udGVudD0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9M0RlLFQp
OnZ9LFQuc3RhdGU9M0RmdW5jdGlvbihlKXtyPQpldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPTNE
ZSxUKTpifSxULmRlZmF1bHRTdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmc9CnVtZW50cy5s
ZW5ndGg/KHc9M0RlLFQpOnd9LFQubm9EYXRhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KD0KRT0zRGUsVCk6RX0sVH0sZS5tb2RlbHMubGluZVdpdGhGb2N1c0NoYXJ0PTNE
ZnVuY3Rpb24oKXtmdW5jdGlvbiBrKGUpe3JldHVyPQpuIGUuZWFjaChmdW5jdGlvbihlKXtmdW5j
dGlvbiBSKGUpe3ZhciB0PTNEKyhlPTNEPTNEImUiKSxuPTNEdD8xOi0xLHI9M0RPLzM9CjtyZXR1
cm4iTSIrLjUqbisiLCIrcisiQTYsNiAwIDAgIit0KyIgIis2LjUqbisiLCIrKHIrNikrIlYiKygy
KnItNikrIkE2LDYgMD0KIDAgIit0KyIgIisuNSpuKyIsIisyKnIrIloiKyJNIisyLjUqbisiLCIr
KHIrOCkrIlYiKygyKnItOCkrIk0iKzQuNSpuKyIsIisoPQpyKzgpKyJWIisoMipyLTgpfWZ1bmN0
aW9uIFUoKXthLmVtcHR5KCl8fGEuZXh0ZW50KHcpLEYuZGF0YShbYS5lbXB0eSgpP2cuZG89Cm1h
aW4oKTp3XSkuZWFjaChmdW5jdGlvbihlLHQpe3ZhciBuPTNEZyhlWzBdKS12LnJhbmdlKClbMF0s
cj0zRHYucmFuZ2UoKVsxXT0KLWcoZVsxXSk7ZDMuc2VsZWN0KHRoaXMpLnNlbGVjdCgiLmxlZnQi
KS5hdHRyKCJ3aWR0aCIsbjwwPzA6biksZDMuc2VsZWN0KHRoPQppcykuc2VsZWN0KCIucmlnaHQi
KS5hdHRyKCJ4IixnKGVbMV0pKS5hdHRyKCJ3aWR0aCIscjwwPzA6cil9KX1mdW5jdGlvbiB6KCk9
Cnt3PTNEYS5lbXB0eSgpP251bGw6YS5leHRlbnQoKTt2YXIgbj0zRGEuZW1wdHkoKT9nLmRvbWFp
bigpOmEuZXh0ZW50KCk7aWYoTT0KYXRoLmFicyhuWzBdLW5bMV0pPD0zRDEpcmV0dXJuO1QuYnJ1
c2goe2V4dGVudDpuLGJydXNoOmF9KSxVKCk7dmFyIHM9M0RQLnNlPQpsZWN0KCIubnYtZm9jdXMg
Lm52LWxpbmVzV3JhcCIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2Fi
bGU9CmR9KS5tYXAoZnVuY3Rpb24oZSxyKXtyZXR1cm57a2V5OmUua2V5LHZhbHVlczplLnZhbHVl
cy5maWx0ZXIoZnVuY3Rpb24oZSxyKT0Ke3JldHVybiB0LngoKShlLHIpPj0zRG5bMF0mJnQueCgp
KGUscik8PTNEblsxXX0pfX0pKTtzLmNhbGwodCksUC5zZWxlY3QoIi5uPQp2LWZvY3VzIC5udi14
Lm52LWF4aXMiKS5jYWxsKHIpLFAuc2VsZWN0KCIubnYtZm9jdXMgLm52LXkubnYtYXhpcyIpLmNh
bGwoaSk9Cn12YXIgUz0zRGQzLnNlbGVjdCh0aGlzKSxOPTNEdGhpcyxMPTNEKGh8fHBhcnNlSW50
KFMuc3R5bGUoIndpZHRoIikpfHw5NjApLT0KZi5sZWZ0LWYucmlnaHQsQT0zRChwfHxwYXJzZUlu
dChTLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktZi50b3AtZi5ib3R0b20tZCxPPQo9M0RkLWwudG9w
LWwuYm90dG9tO2sudXBkYXRlPTNEZnVuY3Rpb24oKXtTLmNhbGwoayl9LGsuY29udGFpbmVyPTNE
dGhpcztpZig9CiFlfHwhZS5sZW5ndGh8fCFlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS52
YWx1ZXMubGVuZ3RofSkubGVuZ3RoKXt2YXIgTT0KPTNEUy5zZWxlY3RBbGwoIi5udi1ub0RhdGEi
KS5kYXRhKFt4XSk7cmV0dXJuIE0uZW50ZXIoKS5hcHBlbmQoInRleHQiKS5hdHRyPQooImNsYXNz
IiwibnZkMyBudi1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2VtIikuc3R5bGUoInRleHQtYW5jaG9y
IiwibWlkZGxlIik9CixNLmF0dHIoIngiLGYubGVmdCtMLzIpLmF0dHIoInkiLGYudG9wK0EvMiku
dGV4dChmdW5jdGlvbihlKXtyZXR1cm4gZX0pLGt9Uz0KLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIp
LnJlbW92ZSgpLHY9M0R0LnhTY2FsZSgpLG09M0R0LnlTY2FsZSgpLGc9M0RuLnhTY2FsPQplKCks
eT0zRG4ueVNjYWxlKCk7dmFyIF89M0RTLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LWxpbmVXaXRo
Rm9jdXNDaGFydCIpLmQ9CmF0YShbZV0pLEQ9M0RfLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbGluZVdpdGhGbz0KY3VzQ2hhcnQiKS5hcHBlbmQoImci
KSxQPTNEXy5zZWxlY3QoImciKTtELmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnPQpl
bmRXcmFwIik7dmFyIEg9M0RELmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtZm9jdXMiKTtI
LmFwcGVuZCgiZyIpLmF0dHI9CigiY2xhc3MiLCJudi14IG52LWF4aXMiKSxILmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnYteSBudi1heGlzIiksSC5hcHBlbj0KZCgiZyIpLmF0dHIoImNsYXNz
IiwibnYtbGluZXNXcmFwIik7dmFyIEI9M0RELmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYt
PQpjb250ZXh0Iik7Qi5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcyIpLEIu
YXBwZW5kKCJnIikuYXR0cigiY2w9CmFzcyIsIm52LXkgbnYtYXhpcyIpLEIuYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJudi1saW5lc1dyYXAiKSxCLmFwcGVuZCgiZz0KIikuYXR0cigiY2xhc3Mi
LCJudi1icnVzaEJhY2tncm91bmQiKSxCLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBu
di1iPQpydXNoIiksYiYmKHUud2lkdGgoTCksUC5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuZGF0
dW0oZSkuY2FsbCh1KSxmLnRvcCE9M0Q9CnUuaGVpZ2h0KCkmJihmLnRvcD0zRHUuaGVpZ2h0KCks
QT0zRChwfHxwYXJzZUludChTLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktZj0KLnRvcC1mLmJvdHRv
bS1kKSxQLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xh
dGUoMCwiPQorIC1mLnRvcCsiKSIpKSxfLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2Yu
bGVmdCsiLCIrZi50b3ArIikiKSx0LndpZHQ9CmgoTCkuaGVpZ2h0KEEpLmNvbG9yKGUubWFwKGZ1
bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGMoZSx0KX0pLmZpbHRlcihmdT0KbmN0aW9uKHQs
bil7cmV0dXJuIWVbbl0uZGlzYWJsZWR9KSksbi5kZWZpbmVkKHQuZGVmaW5lZCgpKS53aWR0aChM
KS5oZWlnaHQoPQpPKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxj
KGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXs9CnJldHVybiFlW25dLmRpc2FibGVkfSkpLFAu
c2VsZWN0KCIubnYtY29udGV4dCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZT0KKDAsIiso
QStmLmJvdHRvbStsLnRvcCkrIikiKTt2YXIgaj0zRFAuc2VsZWN0KCIubnYtY29udGV4dCAubnYt
bGluZXNXcmFwIikuPQpkYXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxl
ZH0pKTtkMy50cmFuc2l0aW9uKGopLmNhbGwobiksci49CnNjYWxlKHYpLnRpY2tzKEwvMTAwKS50
aWNrU2l6ZSgtQSwwKSxpLnNjYWxlKG0pLnRpY2tzKEEvMzYpLnRpY2tTaXplKC1MLDApLD0KUC5z
ZWxlY3QoIi5udi1mb2N1cyAubnYteC5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNs
YXRlKDAsIitBKyIpIiksPQphLngoZykub24oImJydXNoIixmdW5jdGlvbigpe3ZhciBlPTNEay50
cmFuc2l0aW9uRHVyYXRpb24oKTtrLnRyYW5zaXRpb25EdXI9CmF0aW9uKDApLHooKSxrLnRyYW5z
aXRpb25EdXJhdGlvbihlKX0pLHcmJmEuZXh0ZW50KHcpO3ZhciBGPTNEUC5zZWxlY3QoIi5udj0K
LWJydXNoQmFja2dyb3VuZCIpLnNlbGVjdEFsbCgiZyIpLmRhdGEoW3d8fGEuZXh0ZW50KCldKSxJ
PTNERi5lbnRlcigpLmFwcGVuPQpkKCJnIik7SS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIs
ImxlZnQiKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IiwwKS5hdHRyKCI9CmhlaWdodCIsTyksSS5hcHBl
bmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsInJpZ2h0IikuYXR0cigieCIsMCkuYXR0cigieSIsMCku
YT0KdHRyKCJoZWlnaHQiLE8pO3ZhciBxPTNEUC5zZWxlY3QoIi5udi14Lm52LWJydXNoIikuY2Fs
bChhKTtxLnNlbGVjdEFsbCgicmVjPQp0IikuYXR0cigiaGVpZ2h0IixPKSxxLnNlbGVjdEFsbCgi
LnJlc2l6ZSIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLFIpLHooKSw9CnMuc2NhbGUoZykudGlj
a3MoTC8xMDApLnRpY2tTaXplKC1PLDApLFAuc2VsZWN0KCIubnYtY29udGV4dCAubnYteC5udi1h
eGlzIj0KKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiK3kucmFuZ2UoKVswXSsiKSIp
LGQzLnRyYW5zaXRpb24oUC5zZWxlY3QoPQoiLm52LWNvbnRleHQgLm52LXgubnYtYXhpcyIpKS5j
YWxsKHMpLG8uc2NhbGUoeSkudGlja3MoTy8zNikudGlja1NpemUoLUwsMCk9CixkMy50cmFuc2l0
aW9uKFAuc2VsZWN0KCIubnYtY29udGV4dCAubnYteS5udi1heGlzIikpLmNhbGwobyksUC5zZWxl
Y3QoIi5udj0KLWNvbnRleHQgLm52LXgubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5z
bGF0ZSgwLCIreS5yYW5nZSgpWzBdKyIpIiksPQp1LmRpc3BhdGNoLm9uKCJzdGF0ZUNoYW5nZSIs
ZnVuY3Rpb24oZSl7ay51cGRhdGUoKX0pLFQub24oInRvb2x0aXBTaG93IixmdW49CmN0aW9uKGUp
e0UmJkMoZSxOLnBhcmVudE5vZGUpfSl9KSxrfXZhciB0PTNEZS5tb2RlbHMubGluZSgpLG49M0Rl
Lm1vZGVscy5saT0KbmUoKSxyPTNEZS5tb2RlbHMuYXhpcygpLGk9M0RlLm1vZGVscy5heGlzKCks
cz0zRGUubW9kZWxzLmF4aXMoKSxvPTNEZS5tb2RlPQpscy5heGlzKCksdT0zRGUubW9kZWxzLmxl
Z2VuZCgpLGE9M0RkMy5zdmcuYnJ1c2goKSxmPTNEe3RvcDozMCxyaWdodDozMCxib3Q9CnRvbToz
MCxsZWZ0OjYwfSxsPTNEe3RvcDowLHJpZ2h0OjMwLGJvdHRvbToyMCxsZWZ0OjYwfSxjPTNEZS51
dGlscy5kZWZhdWx0Qz0Kb2xvcigpLGg9M0RudWxsLHA9M0RudWxsLGQ9M0QxMDAsdixtLGcseSxi
PTNEITAsdz0zRG51bGwsRT0zRCEwLFM9M0RmdW5jdGlvPQpuKGUsdCxuLHIsaSl7cmV0dXJuIjxo
Mz4iK2UrIjwvaDM+IisiPHA+IituKyIgYXQgIit0KyI8L3A+In0seD0zRCJObyBEYXRhIEE9CnZh
aWxhYmxlLiIsVD0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwiYnJ1
c2giKSxOPTNEMDt0LmNsaT0KcEVkZ2UoITApLG4uaW50ZXJhY3RpdmUoITEpLHIub3JpZW50KCJi
b3R0b20iKS50aWNrUGFkZGluZyg1KSxpLm9yaWVudCgibGVmPQp0Iikscy5vcmllbnQoImJvdHRv
bSIpLnRpY2tQYWRkaW5nKDUpLG8ub3JpZW50KCJsZWZ0Iik7dmFyIEM9M0RmdW5jdGlvbihuLHM9
Cil7dmFyIG89M0RuLnBvc1swXSsocy5vZmZzZXRMZWZ0fHwwKSx1PTNEbi5wb3NbMV0rKHMub2Zm
c2V0VG9wfHwwKSxhPTNEci50aT0KY2tGb3JtYXQoKSh0LngoKShuLnBvaW50LG4ucG9pbnRJbmRl
eCkpLGY9M0RpLnRpY2tGb3JtYXQoKSh0LnkoKShuLnBvaW50LG4uPQpwb2ludEluZGV4KSksbD0z
RFMobi5zZXJpZXMua2V5LGEsZixuLGspO2UudG9vbHRpcC5zaG93KFtvLHVdLGwsbnVsbCxudWxs
LHM9Cil9O3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1
bmN0aW9uKGUpe2UucG9zPTNEW2UucD0Kb3NbMF0rZi5sZWZ0LGUucG9zWzFdK2YudG9wXSxULnRv
b2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlPQpvdXQudG9vbHRpcCIs
ZnVuY3Rpb24oZSl7VC50b29sdGlwSGlkZShlKX0pLFQub24oInRvb2x0aXBIaWRlIixmdW5jdGlv
bigpe0U9CiYmZS50b29sdGlwLmNsZWFudXAoKX0pLGsuZGlzcGF0Y2g9M0RULGsubGVnZW5kPTNE
dSxrLmxpbmVzPTNEdCxrLmxpbmVzMj0zRD0KbixrLnhBeGlzPTNEcixrLnlBeGlzPTNEaSxrLngy
QXhpcz0zRHMsay55MkF4aXM9M0RvLGQzLnJlYmluZChrLHQsImRlZmluZWQiPQosImlzQXJlYSIs
InNpemUiLCJ4RG9tYWluIiwieURvbWFpbiIsInhSYW5nZSIsInlSYW5nZSIsImZvcmNlWCIsImZv
cmNlWSIsImk9Cm50ZXJhY3RpdmUiLCJjbGlwRWRnZSIsImNsaXBWb3Jvbm9pIiwiaWQiKSxrLm9w
dGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLj0KYmluZChrKSxrLng9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odC54KGUpLG4ueChlKSxrKTp0Lnh9LGsuPQp5PTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQueShlKSxuLnkoZSksayk6dC55fSxr
Lm1hcmdpbj0zRGY9CnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGYudG9wPTNE
dHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudD0Kb3A6Zi50b3AsZi5yaWdodD0zRHR5cGVv
ZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6Zi5yaWdodCxmLmJvdHRvbT0KPTNEdHlw
ZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOmYuYm90dG9tLGYubGVmdD0zRHR5
cGVvZiBlLmxlZnQhPQo9M0QidW5kZWZpbmVkIj9lLmxlZnQ6Zi5sZWZ0LGspOmZ9LGsubWFyZ2lu
Mj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHM9Ci5sZW5ndGg/KGw9M0RlLGspOmx9LGsu
d2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsaz0KKTpo
fSxrLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxr
KTpwfSxrLmhlaWdodDI9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhk
PTNEZSxrKTpkfSxrLmNvbG9yPTNEZnVuY3Rpb24odCl7cj0KZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oYz0zRGUudXRpbHMuZ2V0Q29sb3IodCksdS5jb2xvcihjKSxrKTpjfSxrLnNob3dMZWdlPQpu
ZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPTNEZSxrKTpifSxrLnRv
b2x0aXBzPTNEZnVuY3Rpb249CihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oRT0zRGUsayk6
RX0say50b29sdGlwQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldD0KdXJuIGFyZ3VtZW50cy5sZW5n
dGg/KFM9M0RlLGspOlN9LGsuaW50ZXJwb2xhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
PQpudHMubGVuZ3RoPyh0LmludGVycG9sYXRlKGUpLG4uaW50ZXJwb2xhdGUoZSksayk6dC5pbnRl
cnBvbGF0ZSgpfSxrLm5vRGF0YT0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHg9M0RlLGspOnh9LGsueFRpY2tGb3JtYXQ9M0RmdW5jdGlvPQpuKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhyLnRpY2tGb3JtYXQoZSkscy50aWNrRm9ybWF0KGUpLGspOnIudGlja0Zv
cm09CmF0KCl9LGsueVRpY2tGb3JtYXQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oaS50aWNrRm9ybWF0KGUpLD0Kby50aWNrRm9ybWF0KGUpLGspOmkudGlja0Zvcm1hdCgp
fSxrLmJydXNoRXh0ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtPQplbnRzLmxlbmd0aD8o
dz0zRGUsayk6d30say50cmFuc2l0aW9uRHVyYXRpb249M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnQ9CnMubGVuZ3RoPyhOPTNEZSxrKTpOfSxrfSxlLm1vZGVscy5saW5lUGx1c0JhcldpdGhG
b2N1c0NoYXJ0PTNEZnVuY3Rpb24oKXtmdT0KbmN0aW9uIEIoZSl7cmV0dXJuIGUuZWFjaChmdW5j
dGlvbihlKXtmdW5jdGlvbiB0dChlKXt2YXIgdD0zRCsoZT0zRD0zRCJlIiksPQpuPTNEdD8xOi0x
LHI9M0RJLzM7cmV0dXJuIk0iKy41Km4rIiwiK3IrIkE2LDYgMCAwICIrdCsiICIrNi41Km4rIiwi
KyhyKzYpKyI9ClYiKygyKnItNikrIkE2LDYgMCAwICIrdCsiICIrLjUqbisiLCIrMipyKyJaIisi
TSIrMi41Km4rIiwiKyhyKzgpKyJWIisoMipyLT0KOCkrIk0iKzQuNSpuKyIsIisocis4KSsiViIr
KDIqci04KX1mdW5jdGlvbiBudCgpe2guZW1wdHkoKXx8aC5leHRlbnQoeCksWS5kPQphdGEoW2gu
ZW1wdHkoKT9rLmRvbWFpbigpOnhdKS5lYWNoKGZ1bmN0aW9uKGUsdCl7dmFyIG49M0RrKGVbMF0p
LWsucmFuZ2UoKVs9CjBdLHI9M0RrLnJhbmdlKClbMV0tayhlWzFdKTtkMy5zZWxlY3QodGhpcyku
c2VsZWN0KCIubGVmdCIpLmF0dHIoIndpZHRoIixuPD0KMD8wOm4pLGQzLnNlbGVjdCh0aGlzKS5z
ZWxlY3QoIi5yaWdodCIpLmF0dHIoIngiLGsoZVsxXSkpLmF0dHIoIndpZHRoIixyPDA/PQowOnIp
fSl9ZnVuY3Rpb24gcnQoKXt4PTNEaC5lbXB0eSgpP251bGw6aC5leHRlbnQoKSxTPTNEaC5lbXB0
eSgpP2suZG9tYWluKCk9CjpoLmV4dGVudCgpLEQuYnJ1c2goe2V4dGVudDpTLGJydXNoOmh9KSxu
dCgpLHIud2lkdGgoaikuaGVpZ2h0KEYpLmNvbG9yKGUubT0KYXAoZnVuY3Rpb24oZSx0KXtyZXR1
cm4gZS5jb2xvcnx8dyhlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uPQpk
aXNhYmxlZCYmZVtuXS5iYXJ9KSksdC53aWR0aChqKS5oZWlnaHQoRikuY29sb3IoZS5tYXAoZnVu
Y3Rpb24oZSx0KXtyZXR1cm49CiBlLmNvbG9yfHx3KGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxu
KXtyZXR1cm4hZVtuXS5kaXNhYmxlZCYmIWVbbl0uYmFyfSkpOz0KdmFyIG49M0QkLnNlbGVjdCgi
Lm52LWZvY3VzIC5udi1iYXJzV3JhcCIpLmRhdHVtKFIubGVuZ3RoP1IubWFwKGZ1bmN0aW9uKGUs
PQp0KXtyZXR1cm57a2V5OmUua2V5LHZhbHVlczplLnZhbHVlcy5maWx0ZXIoZnVuY3Rpb24oZSx0
KXtyZXR1cm4gci54KCkoZSx0KT49Cj0zRFNbMF0mJnIueCgpKGUsdCk8PTNEU1sxXX0pfX0pOlt7
dmFsdWVzOltdfV0pLGk9M0QkLnNlbGVjdCgiLm52LWZvY3VzIC5udj0KLWxpbmVzV3JhcCIpLmRh
dHVtKFVbMF0uZGlzYWJsZWQ/W3t2YWx1ZXM6W119XTpVLm1hcChmdW5jdGlvbihlLG4pe3JldHVy
bntrPQpleTplLmtleSx2YWx1ZXM6ZS52YWx1ZXMuZmlsdGVyKGZ1bmN0aW9uKGUsbil7cmV0dXJu
IHQueCgpKGUsbik+PTNEU1swXSYmdC49CngoKShlLG4pPD0zRFNbMV19KX19KSk7Ui5sZW5ndGg/
Qz0zRHIueFNjYWxlKCk6Qz0zRHQueFNjYWxlKCkscy5zY2FsZShDKS50aT0KY2tzKGovMTAwKS50
aWNrU2l6ZSgtRiwwKSxzLmRvbWFpbihbTWF0aC5jZWlsKFNbMF0pLE1hdGguZmxvb3IoU1sxXSld
KSwkLnNlPQpsZWN0KCIubnYteC5udi1heGlzIikuY2FsbChzKSxuLmNhbGwociksaS5jYWxsKHQp
LCQuc2VsZWN0KCIubnYtZm9jdXMgLm52LXg9Ci5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwi
dHJhbnNsYXRlKDAsIitMLnJhbmdlKClbMF0rIikiKSx1LnNjYWxlKEwpLnRpYz0Ka3MoRi8zNiku
dGlja1NpemUoLWosMCksJC5zZWxlY3QoIi5udi1mb2N1cyAubnYteTEubnYtYXhpcyIpLnN0eWxl
KCJvcGFjaXR5PQoiLFIubGVuZ3RoPzE6MCksYS5zY2FsZShBKS50aWNrcyhGLzM2KS50aWNrU2l6
ZShSLmxlbmd0aD8wOi1qLDApLCQuc2VsZWN0KCI9Ci5udi1mb2N1cyAubnYteTIubnYtYXhpcyIp
LnN0eWxlKCJvcGFjaXR5IixVLmxlbmd0aD8xOjApLmF0dHIoInRyYW5zZm9ybSIsIj0KdHJhbnNs
YXRlKCIrQy5yYW5nZSgpWzFdKyIsMCkiKSwkLnNlbGVjdCgiLm52LWZvY3VzIC5udi15MS5udi1h
eGlzIikuY2FsbCh1PQopLCQuc2VsZWN0KCIubnYtZm9jdXMgLm52LXkyLm52LWF4aXMiKS5jYWxs
KGEpfXZhciBOPTNEZDMuc2VsZWN0KHRoaXMpLFA9M0Q9CnRoaXMsaj0zRCh2fHxwYXJzZUludChO
LnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS1wLmxlZnQtcC5yaWdodCxGPTNEKG18fHBhcnNlST0KbnQo
Ti5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLXAudG9wLXAuYm90dG9tLWcsST0zRGctZC50b3AtZC5i
b3R0b207Qi51cGRhdGU9Cj0zRGZ1bmN0aW9uKCl7Ti5jYWxsKEIpfSxCLmNvbnRhaW5lcj0zRHRo
aXM7aWYoIWV8fCFlLmxlbmd0aHx8IWUuZmlsdGVyKGZ1bj0KY3Rpb24oZSl7cmV0dXJuIGUudmFs
dWVzLmxlbmd0aH0pLmxlbmd0aCl7dmFyIHE9M0ROLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpPQou
ZGF0YShbX10pO3JldHVybiBxLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJu
dmQzIG52LW5vRGF0YSIpLmE9CnR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIs
Im1pZGRsZSIpLHEuYXR0cigieCIscC5sZWZ0K2ovMikuYXR0cj0KKCJ5IixwLnRvcCtGLzIpLnRl
eHQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxCfU4uc2VsZWN0QWxsKCIubnYtbm9EYXRhIikucmVt
PQpvdmUoKTt2YXIgUj0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkJiZl
LmJhcn0pLFU9M0RlLmZpbHRlcig9CmZ1bmN0aW9uKGUpe3JldHVybiFlLmJhcn0pO0M9M0RyLnhT
Y2FsZSgpLGs9M0RvLnNjYWxlKCksTD0zRHIueVNjYWxlKCksQT0zRD0KdC55U2NhbGUoKSxPPTNE
aS55U2NhbGUoKSxNPTNEbi55U2NhbGUoKTt2YXIgej0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3Jl
dHVyPQpuIWUuZGlzYWJsZWQmJmUuYmFyfSkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVl
cy5tYXAoZnVuY3Rpb24oZSx0KXtyZXQ9CnVybnt4OnkoZSx0KSx5OmIoZSx0KX19KX0pLFc9M0Rl
LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZCYmIWUuYj0KYXJ9KS5tYXAoZnVu
Y3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlvbihlLHQpe3JldHVybnt4OnkoZSx0
KSx5OmIoPQplLHQpfX0pfSk7Qy5yYW5nZShbMCxqXSksay5kb21haW4oZDMuZXh0ZW50KGQzLm1l
cmdlKHouY29uY2F0KFcpKSxmdW5jdGlvbig9CmUpe3JldHVybiBlLnh9KSkucmFuZ2UoWzAsal0p
O3ZhciBYPTNETi5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1saW5lUGx1c0Jhcj0KIikuZGF0YShb
ZV0pLFY9M0RYLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAg
bnYtbGluZVBsPQp1c0JhciIpLmFwcGVuZCgiZyIpLCQ9M0RYLnNlbGVjdCgiZyIpO1YuYXBwZW5k
KCJnIikuYXR0cigiY2xhc3MiLCJudi1sZWdlbmQ9CldyYXAiKTt2YXIgSj0zRFYuYXBwZW5kKCJn
IikuYXR0cigiY2xhc3MiLCJudi1mb2N1cyIpO0ouYXBwZW5kKCJnIikuYXR0cigiYz0KbGFzcyIs
Im52LXggbnYtYXhpcyIpLEouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi15MSBudi1heGlz
IiksSi5hcHBlbmQoPQoiZyIpLmF0dHIoImNsYXNzIiwibnYteTIgbnYtYXhpcyIpLEouYXBwZW5k
KCJnIikuYXR0cigiY2xhc3MiLCJudi1iYXJzV3JhcCI9CiksSi5hcHBlbmQoImciKS5hdHRyKCJj
bGFzcyIsIm52LWxpbmVzV3JhcCIpO3ZhciBLPTNEVi5hcHBlbmQoImciKS5hdHRyKCJjbD0KYXNz
IiwibnYtY29udGV4dCIpO0suYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi14IG52LWF4aXMi
KSxLLmFwcGVuZCgiZyIpPQouYXR0cigiY2xhc3MiLCJudi15MSBudi1heGlzIiksSy5hcHBlbmQo
ImciKS5hdHRyKCJjbGFzcyIsIm52LXkyIG52LWF4aXMiKSw9CksuYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudi1iYXJzV3JhcCIpLEsuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1saT0K
bmVzV3JhcCIpLEsuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1icnVzaEJhY2tncm91bmQi
KSxLLmFwcGVuZCgiZyIpLmF0PQp0cigiY2xhc3MiLCJudi14IG52LWJydXNoIiksRSYmKGMud2lk
dGgoai8yKSwkLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5kYXQ9CnVtKGUubWFwKGZ1bmN0aW9u
KGUpe3JldHVybiBlLm9yaWdpbmFsS2V5PTNEZS5vcmlnaW5hbEtleT0zRD0zRD0zRHVuZGVmaW5l
ZD0KP2Uua2V5OmUub3JpZ2luYWxLZXksZS5rZXk9M0RlLm9yaWdpbmFsS2V5KyhlLmJhcj8iIChs
ZWZ0IGF4aXMpIjoiIChyaWdodCBhPQp4aXMpIiksZX0pKS5jYWxsKGMpLHAudG9wIT0zRGMuaGVp
Z2h0KCkmJihwLnRvcD0zRGMuaGVpZ2h0KCksRj0zRChtfHxwYXJzZUk9Cm50KE4uc3R5bGUoImhl
aWdodCIpKXx8NDAwKS1wLnRvcC1wLmJvdHRvbS1nKSwkLnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAi
KS5hdD0KdHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2ovMisiLCIrIC1wLnRvcCsiKSIpKSxY
LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zPQpsYXRlKCIrcC5sZWZ0KyIsIitwLnRvcCsiKSIpLGku
d2lkdGgoaikuaGVpZ2h0KEkpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUsdCk9CntyZXR1cm4gZS5j
b2xvcnx8dyhlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWQm
JmVbbl0uYj0KYXJ9KSksbi53aWR0aChqKS5oZWlnaHQoSSkuY29sb3IoZS5tYXAoZnVuY3Rpb24o
ZSx0KXtyZXR1cm4gZS5jb2xvcnx8dyhlLHQpPQp9KS5maWx0ZXIoZnVuY3Rpb24odCxuKXtyZXR1
cm4hZVtuXS5kaXNhYmxlZCYmIWVbbl0uYmFyfSkpO3ZhciBRPTNEJC5zZWxlY3Q9CigiLm52LWNv
bnRleHQgLm52LWJhcnNXcmFwIikuZGF0dW0oUi5sZW5ndGg/Ujpbe3ZhbHVlczpbXX1dKSxHPTNE
JC5zZWxlY3QoIj0KLm52LWNvbnRleHQgLm52LWxpbmVzV3JhcCIpLmRhdHVtKFVbMF0uZGlzYWJs
ZWQ/W3t2YWx1ZXM6W119XTpVKTskLnNlbGVjdCgiPQoubnYtY29udGV4dCIpLmF0dHIoInRyYW5z
Zm9ybSIsInRyYW5zbGF0ZSgwLCIrKEYrcC5ib3R0b20rZC50b3ApKyIpIiksUS5jYWw9CmwoaSks
Ry5jYWxsKG4pLGgueChrKS5vbigiYnJ1c2giLHJ0KSx4JiZoLmV4dGVudCh4KTt2YXIgWT0zRCQu
c2VsZWN0KCIubnYtYj0KcnVzaEJhY2tncm91bmQiKS5zZWxlY3RBbGwoImciKS5kYXRhKFt4fHxo
LmV4dGVudCgpXSksWj0zRFkuZW50ZXIoKS5hcHBlbmQoPQoiZyIpO1ouYXBwZW5kKCJyZWN0Iiku
YXR0cigiY2xhc3MiLCJsZWZ0IikuYXR0cigieCIsMCkuYXR0cigieSIsMCkuYXR0cigiaGU9Cmln
aHQiLEkpLFouYXBwZW5kKCJyZWN0IikuYXR0cigiY2xhc3MiLCJyaWdodCIpLmF0dHIoIngiLDAp
LmF0dHIoInkiLDApLmF0dD0KcigiaGVpZ2h0IixJKTt2YXIgZXQ9M0QkLnNlbGVjdCgiLm52LXgu
bnYtYnJ1c2giKS5jYWxsKGgpO2V0LnNlbGVjdEFsbCgicmVjPQp0IikuYXR0cigiaGVpZ2h0IixJ
KSxldC5zZWxlY3RBbGwoIi5yZXNpemUiKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIix0dCksby49
CnRpY2tzKGovMTAwKS50aWNrU2l6ZSgtSSwwKSwkLnNlbGVjdCgiLm52LWNvbnRleHQgLm52LXgu
bnYtYXhpcyIpLmF0dHIoInRyYT0KbnNmb3JtIiwidHJhbnNsYXRlKDAsIitPLnJhbmdlKClbMF0r
IikiKSwkLnNlbGVjdCgiLm52LWNvbnRleHQgLm52LXgubnYtYXhpPQpzIikuY2FsbChvKSxmLnNj
YWxlKE8pLnRpY2tzKEkvMzYpLnRpY2tTaXplKC1qLDApLCQuc2VsZWN0KCIubnYtY29udGV4dCAu
bnY9Ci15MS5udi1heGlzIikuc3R5bGUoIm9wYWNpdHkiLFIubGVuZ3RoPzE6MCkuYXR0cigidHJh
bnNmb3JtIiwidHJhbnNsYXRlKDAsIj0KK2sucmFuZ2UoKVswXSsiKSIpLCQuc2VsZWN0KCIubnYt
Y29udGV4dCAubnYteTEubnYtYXhpcyIpLmNhbGwoZiksbC5zY2FsZShNPQopLnRpY2tzKEkvMzYp
LnRpY2tTaXplKFIubGVuZ3RoPzA6LWosMCksJC5zZWxlY3QoIi5udi1jb250ZXh0IC5udi15Mi5u
di1heGk9CnMiKS5zdHlsZSgib3BhY2l0eSIsVS5sZW5ndGg/MTowKS5hdHRyKCJ0cmFuc2Zvcm0i
LCJ0cmFuc2xhdGUoIitrLnJhbmdlKClbMT0KXSsiLDApIiksJC5zZWxlY3QoIi5udi1jb250ZXh0
IC5udi15Mi5udi1heGlzIikuY2FsbChsKSxjLmRpc3BhdGNoLm9uKCJzdGF0PQplQ2hhbmdlIixm
dW5jdGlvbihlKXtCLnVwZGF0ZSgpfSksRC5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe1Qm
JkgoZSxQLnA9CmFyZW50Tm9kZSl9KSxydCgpfSksQn12YXIgdD0zRGUubW9kZWxzLmxpbmUoKSxu
PTNEZS5tb2RlbHMubGluZSgpLHI9M0RlLm1vZD0KZWxzLmhpc3RvcmljYWxCYXIoKSxpPTNEZS5t
b2RlbHMuaGlzdG9yaWNhbEJhcigpLHM9M0RlLm1vZGVscy5heGlzKCksbz0zRGUuPQptb2RlbHMu
YXhpcygpLHU9M0RlLm1vZGVscy5heGlzKCksYT0zRGUubW9kZWxzLmF4aXMoKSxmPTNEZS5tb2Rl
bHMuYXhpcygpLGw9Cj0zRGUubW9kZWxzLmF4aXMoKSxjPTNEZS5tb2RlbHMubGVnZW5kKCksaD0z
RGQzLnN2Zy5icnVzaCgpLHA9M0R7dG9wOjMwLHJpZz0KaHQ6MzAsYm90dG9tOjMwLGxlZnQ6NjB9
LGQ9M0R7dG9wOjAscmlnaHQ6MzAsYm90dG9tOjIwLGxlZnQ6NjB9LHY9M0RudWxsLG09Cj0zRG51
bGwsZz0zRDEwMCx5PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0sYj0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBlLnl9LHc9Cj0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCksRT0zRCEwLFMseD0zRG51bGws
VD0zRCEwLE49M0RmdW5jdGlvbihlLHQsbixyLGkpez0KcmV0dXJuIjxoMz4iK2UrIjwvaDM+Iisi
PHA+IituKyIgYXQgIit0KyI8L3A+In0sQyxrLEwsQSxPLE0sXz0zRCJObyBEYXRhIEF2PQphaWxh
YmxlLiIsRD0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwiYnJ1c2gi
KSxQPTNEMDt0LmNsaXA9CkVkZ2UoITApLG4uaW50ZXJhY3RpdmUoITEpLHMub3JpZW50KCJib3R0
b20iKS50aWNrUGFkZGluZyg1KSx1Lm9yaWVudCgibGVmdD0KIiksYS5vcmllbnQoInJpZ2h0Iiks
by5vcmllbnQoImJvdHRvbSIpLnRpY2tQYWRkaW5nKDUpLGYub3JpZW50KCJsZWZ0IiksbC5vPQpy
aWVudCgicmlnaHQiKTt2YXIgSD0zRGZ1bmN0aW9uKG4scil7UyYmKG4ucG9pbnRJbmRleCs9M0RN
YXRoLmNlaWwoU1swXSkpO3Y9CmFyIGk9M0RuLnBvc1swXSsoci5vZmZzZXRMZWZ0fHwwKSxvPTNE
bi5wb3NbMV0rKHIub2Zmc2V0VG9wfHwwKSxmPTNEcy50aWNrRj0Kb3JtYXQoKSh0LngoKShuLnBv
aW50LG4ucG9pbnRJbmRleCkpLGw9M0Qobi5zZXJpZXMuYmFyP3U6YSkudGlja0Zvcm1hdCgpKHQu
PQp5KCkobi5wb2ludCxuLnBvaW50SW5kZXgpKSxjPTNETihuLnNlcmllcy5rZXksZixsLG4sQik7
ZS50b29sdGlwLnNob3coW2ksb109CixjLG4udmFsdWU8MD8ibiI6InMiLG51bGwscil9O3JldHVy
biB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aT0KcCIsZnVuY3Rpb24oZSl7
ZS5wb3M9M0RbZS5wb3NbMF0rcC5sZWZ0LGUucG9zWzFdK3AudG9wXSxELnRvb2x0aXBTaG93KGUp
fSksPQp0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7
RC50b29sdGlwSGlkZShlKX0pLHIuZGk9CnNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29s
dGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXStwLmxlZnQsZT0KLnBvc1sxXStwLnRv
cF0sRC50b29sdGlwU2hvdyhlKX0pLHIuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29s
dGlwIixmPQp1bmN0aW9uKGUpe0QudG9vbHRpcEhpZGUoZSl9KSxELm9uKCJ0b29sdGlwSGlkZSIs
ZnVuY3Rpb24oKXtUJiZlLnRvb2x0aXAuY2w9CmVhbnVwKCl9KSxCLmRpc3BhdGNoPTNERCxCLmxl
Z2VuZD0zRGMsQi5saW5lcz0zRHQsQi5saW5lczI9M0RuLEIuYmFycz0zRHIsQj0KLmJhcnMyPTNE
aSxCLnhBeGlzPTNEcyxCLngyQXhpcz0zRG8sQi55MUF4aXM9M0R1LEIueTJBeGlzPTNEYSxCLnkz
QXhpcz0zRGYsPQpCLnk0QXhpcz0zRGwsZDMucmViaW5kKEIsdCwiZGVmaW5lZCIsInNpemUiLCJj
bGlwVm9yb25vaSIsImludGVycG9sYXRlIiksQi49Cm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNG
dW5jLmJpbmQoQiksQi54PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZT0Kbmd0aD8o
eT0zRGUsdC54KGUpLHIueChlKSxCKTp5fSxCLnk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oPQpiPTNEZSx0LnkoZSksci55KGUpLEIpOmJ9LEIubWFyZ2luPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9Ci50b3A9M0R0eXBlb2YgZS50b3AhPTNE
InVuZGVmaW5lZCI/ZS50b3A6cC50b3AscC5yaWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRD0KInVu
ZGVmaW5lZCI/ZS5yaWdodDpwLnJpZ2h0LHAuYm90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1
bmRlZmluZWQiP2UuYm90PQp0b206cC5ib3R0b20scC5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0Qi
dW5kZWZpbmVkIj9lLmxlZnQ6cC5sZWZ0LEIpOnB9LEIud2k9CmR0aD0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PTNEZSxCKTp2fSxCLmhlaWdodD0zRGZ1bmN0aW9uKD0K
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09M0RlLEIpOm19LEIuY29sb3I9M0RmdW5jdGlv
bih0KXtyZXR1cm4gYXJndW1lPQpudHMubGVuZ3RoPyh3PTNEZS51dGlscy5nZXRDb2xvcih0KSxj
LmNvbG9yKHcpLEIpOnd9LEIuc2hvd0xlZ2VuZD0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KEU9M0RlLEIpOkV9LEIudG9vbHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YT0Kcmd1bWVudHMubGVuZ3RoPyhUPTNEZSxCKTpUfSxCLnRvb2x0aXBDb250ZW50PTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50PQpzLmxlbmd0aD8oTj0zRGUsQik6Tn0sQi5ub0RhdGE9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oXz0zRGU9CixCKTpffSxCLmJydXNo
RXh0ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHg9M0RlLEIpOnh9
LEJ9LD0KZS5tb2RlbHMubXVsdGlCYXI9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIEMoZSl7cmV0dXJu
IGUuZWFjaChmdW5jdGlvbihlKXt2YXIgPQpnPTNEbi10LmxlZnQtdC5yaWdodCxDPTNEci10LnRv
cC10LmJvdHRvbSxrPTNEZDMuc2VsZWN0KHRoaXMpO2QmJmUubGVuZ3RoJiY9CihkPTNEW3t2YWx1
ZXM6ZVswXS52YWx1ZXMubWFwKGZ1bmN0aW9uKGUpe3JldHVybnt4OmUueCx5OjAsc2VyaWVzOmUu
c2VyaWVzLD0Kc2l6ZTouMDF9fSl9XSksYyYmKGU9M0RkMy5sYXlvdXQuc3RhY2soKS5vZmZzZXQo
aCkudmFsdWVzKGZ1bmN0aW9uKGUpe3JldHVyPQpuIGUudmFsdWVzfSkueShhKSghZS5sZW5ndGgm
JmQ/ZDplKSksZS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7ZS52YWx1ZXMuZm9yRWE9CmNoKGZ1bmN0
aW9uKGUpe2Uuc2VyaWVzPTNEdH0pfSksYyYmZVswXS52YWx1ZXMubWFwKGZ1bmN0aW9uKHQsbil7
dmFyIHI9M0QwLD0KaT0zRDA7ZS5tYXAoZnVuY3Rpb24oZSl7dmFyIHQ9M0RlLnZhbHVlc1tuXTt0
LnNpemU9M0RNYXRoLmFicyh0LnkpLHQueTwwPyh0PQoueTE9M0RpLGktPTNEdC5zaXplKToodC55
MT0zRHQuc2l6ZStyLHIrPTNEdC5zaXplKX0pfSk7dmFyIEw9M0R5JiZiP1tdOmUubWE9CnAoZnVu
Y3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLm1hcChmdW5jdGlvbihlLHQpe3JldHVybnt4OnUoZSx0
KSx5OmEoZSx0KSx5MD0KOmUueTAseTE6ZS55MX19KX0pO2kuZG9tYWluKHl8fGQzLm1lcmdlKEwp
Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS54fSkpLnJhPQpuZ2VCYW5kcyh3fHxbMCxnXSxTKSxz
LmRvbWFpbihifHxkMy5leHRlbnQoZDMubWVyZ2UoTCkubWFwKGZ1bmN0aW9uKGUpe3JldHU9CnJu
IGM/ZS55PjA/ZS55MTplLnkxK2UueTplLnl9KS5jb25jYXQoZikpKS5yYW5nZShFfHxbQywwXSks
aS5kb21haW4oKVswXT0zRD0KPTNEPTNEaS5kb21haW4oKVsxXSYmKGkuZG9tYWluKClbMF0/aS5k
b21haW4oW2kuZG9tYWluKClbMF0taS5kb21haW4oKVswXSouPQowMSxpLmRvbWFpbigpWzFdK2ku
ZG9tYWluKClbMV0qLjAxXSk6aS5kb21haW4oWy0xLDFdKSkscy5kb21haW4oKVswXT0zRD0zRD0K
PTNEcy5kb21haW4oKVsxXSYmKHMuZG9tYWluKClbMF0/cy5kb21haW4oW3MuZG9tYWluKClbMF0r
cy5kb21haW4oKVswXSouMDEsPQpzLmRvbWFpbigpWzFdLXMuZG9tYWluKClbMV0qLjAxXSk6cy5k
b21haW4oWy0xLDFdKSksVD0zRFR8fGksTj0zRE58fHM7dmFyIEE9Cj0zRGsuc2VsZWN0QWxsKCJn
Lm52LXdyYXAubnYtbXVsdGliYXIiKS5kYXRhKFtlXSksTz0zREEuZW50ZXIoKS5hcHBlbmQoImci
KT0KLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LW11bHRpYmFyIiksTT0zRE8uYXBwZW5k
KCJkZWZzIiksXz0zRE8uYXBwZW5kPQooImciKSxEPTNEQS5zZWxlY3QoImciKTtfLmFwcGVuZCgi
ZyIpLmF0dHIoImNsYXNzIiwibnYtZ3JvdXBzIiksQS5hdHRyKCJ0cmE9Cm5zZm9ybSIsInRyYW5z
bGF0ZSgiK3QubGVmdCsiLCIrdC50b3ArIikiKSxNLmFwcGVuZCgiY2xpcFBhdGgiKS5hdHRyKCJp
ZCIsIj0KbnYtZWRnZS1jbGlwLSIrbykuYXBwZW5kKCJyZWN0IiksQS5zZWxlY3QoIiNudi1lZGdl
LWNsaXAtIitvKyIgcmVjdCIpLmF0dHIoPQoid2lkdGgiLGcpLmF0dHIoImhlaWdodCIsQyksRC5h
dHRyKCJjbGlwLXBhdGgiLGw/InVybCgjbnYtZWRnZS1jbGlwLSIrbysiKSI9CjoiIik7dmFyIFA9
M0RBLnNlbGVjdCgiLm52LWdyb3VwcyIpLnNlbGVjdEFsbCgiLm52LWdyb3VwIikuZGF0YShmdW5j
dGlvbihlKT0Ke3JldHVybiBlfSxmdW5jdGlvbihlLHQpe3JldHVybiB0fSk7UC5lbnRlcigpLmFw
cGVuZCgiZyIpLnN0eWxlKCJzdHJva2Utb3BhPQpjaXR5IiwxZS02KS5zdHlsZSgiZmlsbC1vcGFj
aXR5IiwxZS02KSxQLmV4aXQoKS5zZWxlY3RBbGwoInJlY3QubnYtYmFyIikuYXQ9CnRyKCJ5Iixm
dW5jdGlvbihlKXtyZXR1cm4gYz9OKGUueTApOk4oMCl9KS5hdHRyKCJoZWlnaHQiLDApLnJlbW92
ZSgpLFAuYXR0cj0KKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4ibnYtZ3JvdXAgbnYtc2Vy
aWVzLSIrdH0pLmNsYXNzZWQoImhvdmVyIixmdW5jPQp0aW9uKGUpe3JldHVybiBlLmhvdmVyfSku
c3R5bGUoImZpbGwiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHAoZSx0KX0pLnN0eWxlKCI9CnN0cm9r
ZSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChlLHQpfSksUC5zdHlsZSgic3Ryb2tlLW9wYWNpdHki
LDEpLnN0eWxlKCJmaT0KbGwtb3BhY2l0eSIsLjc1KTt2YXIgSD0zRFAuc2VsZWN0QWxsKCJyZWN0
Lm52LWJhciIpLmRhdGEoZnVuY3Rpb24odCl7cmV0dXJuPQogZCYmIWUubGVuZ3RoP2QudmFsdWVz
OnQudmFsdWVzfSk7SC5leGl0KCkucmVtb3ZlKCk7dmFyIEI9M0RILmVudGVyKCkuYXBwZW49CmQo
InJlY3QiKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShlLHQpPDA/Im52LWJh
ciBuZWdhdGl2ZSI6Im52LT0KYmFyIHBvc2l0aXZlIn0pLmF0dHIoIngiLGZ1bmN0aW9uKHQsbixy
KXtyZXR1cm4gYz8wOnIqaS5yYW5nZUJhbmQoKS9lLmxlbmd0PQpofSkuYXR0cigieSIsZnVuY3Rp
b24oZSl7cmV0dXJuIE4oYz9lLnkwOjApfSkuYXR0cigiaGVpZ2h0IiwwKS5hdHRyKCJ3aWR0aCI9
CixpLnJhbmdlQmFuZCgpLyhjPzE6ZS5sZW5ndGgpKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9u
KGUsdCl7cmV0dXJuInRyYW5zbD0KYXRlKCIraSh1KGUsdCkpKyIsMCkifSk7SC5zdHlsZSgiZmls
bCIsZnVuY3Rpb24oZSx0LG4pe3JldHVybiBwKGUsbix0KX0pLnN0PQp5bGUoInN0cm9rZSIsZnVu
Y3Rpb24oZSx0LG4pe3JldHVybiBwKGUsbix0KX0pLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKHQs
bik9CntkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgiaG92ZXIiLCEwKSx4LmVsZW1lbnRNb3VzZW92
ZXIoe3ZhbHVlOmEodCxuKSxwb2ludD0KOnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvczpbaSh1KHQs
bikpK2kucmFuZ2VCYW5kKCkqKGM/ZS5sZW5ndGgvMjp0LnNlcmllcysuPQo1KS9lLmxlbmd0aCxz
KGEodCxuKSsoYz90LnkwOjApKV0scG9pbnRJbmRleDpuLHNlcmllc0luZGV4OnQuc2VyaWVzLGU6
ZDMuZXY9CmVudH0pfSkub24oIm1vdXNlb3V0IixmdW5jdGlvbih0LG4pe2QzLnNlbGVjdCh0aGlz
KS5jbGFzc2VkKCJob3ZlciIsITEpLHguZT0KbGVtZW50TW91c2VvdXQoe3ZhbHVlOmEodCxuKSxw
b2ludDp0LHNlcmllczplW3Quc2VyaWVzXSxwb2ludEluZGV4Om4sc2VyaWVzPQpJbmRleDp0LnNl
cmllcyxlOmQzLmV2ZW50fSl9KS5vbigiY2xpY2siLGZ1bmN0aW9uKHQsbil7eC5lbGVtZW50Q2xp
Y2soe3ZhbHU9CmU6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvczpbaSh1KHQs
bikpK2kucmFuZ2VCYW5kKCkqKGM/ZS5sZW5ndD0KaC8yOnQuc2VyaWVzKy41KS9lLmxlbmd0aCxz
KGEodCxuKSsoYz90LnkwOjApKV0scG9pbnRJbmRleDpuLHNlcmllc0luZGV4OnQuPQpzZXJpZXMs
ZTpkMy5ldmVudH0pLGQzLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfSkub24oImRibGNsaWNrIixm
dW5jdGlvbih0LG49Cil7eC5lbGVtZW50RGJsQ2xpY2soe3ZhbHVlOmEodCxuKSxwb2ludDp0LHNl
cmllczplW3Quc2VyaWVzXSxwb3M6W2kodSh0LG4pKT0KK2kucmFuZ2VCYW5kKCkqKGM/ZS5sZW5n
dGgvMjp0LnNlcmllcysuNSkvZS5sZW5ndGgscyhhKHQsbikrKGM/dC55MDowKSldLHBvPQppbnRJ
bmRleDpuLHNlcmllc0luZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnR9KSxkMy5ldmVudC5zdG9wUHJv
cGFnYXRpb24oKX0pLEg9Ci5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShlLHQp
PDA/Im52LWJhciBuZWdhdGl2ZSI6Im52LWJhciBwb3NpdD0KaXZlIn0pLmF0dHIoInRyYW5zZm9y
bSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIraSh1KGUsdCkpKyIsMCkifSksPQp2
JiYobXx8KG09M0RlLm1hcChmdW5jdGlvbigpe3JldHVybiEwfSkpLEguc3R5bGUoImZpbGwiLGZ1
bmN0aW9uKGUsdCxuKXtyZXQ9CnVybiBkMy5yZ2IodihlLHQpKS5kYXJrZXIobS5tYXAoZnVuY3Rp
b24oZSx0KXtyZXR1cm4gdH0pLmZpbHRlcihmdW5jdGlvbihlLD0KdCl7cmV0dXJuIW1bdF19KVtu
XSkudG9TdHJpbmcoKX0pLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZDMu
PQpyZ2IodihlLHQpKS5kYXJrZXIobS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdH0pLmZpbHRl
cihmdW5jdGlvbihlLHQpe3JldHU9CnJuIW1bdF19KVtuXSkudG9TdHJpbmcoKX0pKSxjP0guYXR0
cigieSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gcyhjP2UueTE6MCl9KT0KLmF0dHIoImhlaWdodCIs
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5hYnMocyhlLnkrKGM/ZS55MDowKSkt
cyhjPQo/ZS55MDowKSksMSl9KS5hdHRyKCJ4IixmdW5jdGlvbih0LG4pe3JldHVybiBjPzA6dC5z
ZXJpZXMqaS5yYW5nZUJhbmQoKS9lLmw9CmVuZ3RofSkuYXR0cigid2lkdGgiLGkucmFuZ2VCYW5k
KCkvKGM/MTplLmxlbmd0aCkpOkguYXR0cigieCIsZnVuY3Rpb24odCxuKT0Ke3JldHVybiB0LnNl
cmllcyppLnJhbmdlQmFuZCgpL2UubGVuZ3RofSkuYXR0cigid2lkdGgiLGkucmFuZ2VCYW5kKCkv
ZS5sZW5nPQp0aCkuYXR0cigieSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gYShlLHQpPDA/cygwKTpz
KDApLXMoYShlLHQpKTwxP3MoMCktMTpzKGE9CihlLHQpKXx8MH0pLmF0dHIoImhlaWdodCIsZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5hYnMocyhhKGUsdCkpLT0KcygwKSksMSl8
fDB9KSxUPTNEaS5jb3B5KCksTj0zRHMuY29weSgpfSksQ312YXIgdD0zRHt0b3A6MCxyaWdodDow
LGJvdHRvbTowPQosbGVmdDowfSxuPTNEOTYwLHI9M0Q1MDAsaT0zRGQzLnNjYWxlLm9yZGluYWwo
KSxzPTNEZDMuc2NhbGUubGluZWFyKCksbz0zRE09CmF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjFl
NCksdT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9LGE9M0RmdW5jdGlvbihlKXtyZT0KdHVybiBl
Lnl9LGY9M0RbMF0sbD0zRCEwLGM9M0QhMSxoPTNEInplcm8iLHA9M0RlLnV0aWxzLmRlZmF1bHRD
b2xvcigpLGQ9M0QhPQoxLHY9M0RudWxsLG0sZz0zRDEyMDAseSxiLHcsRSxTPTNELjEseD0zRGQz
LmRpc3BhdGNoKCJjaGFydENsaWNrIiwiZWxlbWVudEM9CmxpY2siLCJlbGVtZW50RGJsQ2xpY2si
LCJlbGVtZW50TW91c2VvdmVyIiwiZWxlbWVudE1vdXNlb3V0IiksVCxOO3JldHVybiBDLj0KZGlz
cGF0Y2g9M0R4LEMub3B0aW9ucz0zRGUudXRpbHMub3B0aW9uc0Z1bmMuYmluZChDKSxDLng9M0Rm
dW5jdGlvbihlKXtyZXR1PQpybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZSxDKTp1fSxDLnk9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD89CihhPTNEZSxDKTphfSxDLm1hcmdp
bj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD0zRHR5cGVvZj0K
IGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQucmlnaHQ9M0R0eXBlb2YgZS5yaWdo
dCE9M0QidW5kZWZpbmVkIj9lPQoucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT0zRHR5cGVvZiBlLmJv
dHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHRvbSw9CnQubGVmdD0zRHR5cGVvZiBl
LmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxDKTp0fSxDLndpZHRoPTNEZnVuY3Rp
bz0KbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGUsQyk6bn0sQy5oZWlnaHQ9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJnPQp1bWVudHMubGVuZ3RoPyhyPTNEZSxDKTpyfSxDLnhTY2Fs
ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyg9Cmk9M0RlLEMpOml9LEMu
eVNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLEMpOnN9
LEMueD0KRG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9M0Rl
LEMpOnl9LEMueURvbWFpbj0zRGZ1bmN0PQppb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KGI9M0RlLEMpOmJ9LEMueFJhbmdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGE9CnJndW1lbnRzLmxl
bmd0aD8odz0zRGUsQyk6d30sQy55UmFuZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD0KPyhFPTNEZSxDKTpFfSxDLmZvcmNlWT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhmPTNEZSxDKTpmfSxDPQouc3RhY2tlZD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSxDKTpjfSxDLnN0YWNrT2Zmc2V0PQo9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsQyk6aH0sQy5jbGlwRWRnZT0zRGZ1
bmN0aW9uKGU9Cil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLEMpOmx9LEMuY29sb3I9
M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbj0KdHMubGVuZ3RoPyhwPTNEZS51dGlscy5nZXRD
b2xvcih0KSxDKTpwfSxDLmJhckNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyPQpndW1lbnRz
Lmxlbmd0aD8odj0zRGUudXRpbHMuZ2V0Q29sb3IodCksQyk6dn0sQy5kaXNhYmxlZD0zRGZ1bmN0
aW9uKGUpe3JldHU9CnJuIGFyZ3VtZW50cy5sZW5ndGg/KG09M0RlLEMpOm19LEMuaWQ9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD0KPyhvPTNEZSxDKTpvfSxDLmhpZGVhYmxl
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9M0RlLEMpOmR9PQosQy5k
ZWxheT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnPTNEZSxDKTpnfSxD
Lmdyb3VwU3BhY2luZz0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFM9
M0RlLEMpOlN9LEN9LGUubW9kZWxzLm11bHRpQmFyQ2hhPQpydD0zRGZ1bmN0aW9uKCl7ZnVuY3Rp
b24gQShlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBiPTNEZDMuc2VsZWN0KHQ9Cmhp
cyksaz0zRHRoaXMsTz0zRCh1fHxwYXJzZUludChiLnN0eWxlKCJ3aWR0aCIpKXx8OTYwKS1vLmxl
ZnQtby5yaWdodCxNPTNEKD0KYXx8cGFyc2VJbnQoYi5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLW8u
dG9wLW8uYm90dG9tO0EudXBkYXRlPTNEZnVuY3Rpb24oKXtiPQouY2FsbChBKX0sQS5jb250YWlu
ZXI9M0R0aGlzLFMuZGlzYWJsZWQ9M0RlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4hIWUuZGlzYWI9
CmxlZH0pO2lmKCF4KXt2YXIgXzt4PTNEe307Zm9yKF8gaW4gUylTW19daW5zdGFuY2VvZiBBcnJh
eT94W19dPTNEU1tfXS5zbGljZT0KKDApOnhbX109M0RTW19dfWlmKCFlfHwhZS5sZW5ndGh8fCFl
LmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZXMubGVuPQpndGh9KS5sZW5ndGgpe3Zh
ciBEPTNEYi5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFtUXSk7cmV0dXJuIEQuZW50ZXIo
KS49CmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnZkMyBudi1ub0RhdGEiKS5hdHRyKCJk
eSIsIi0uN2VtIikuc3R5bGUoInRleD0KdC1hbmNob3IiLCJtaWRkbGUiKSxELmF0dHIoIngiLG8u
bGVmdCtPLzIpLmF0dHIoInkiLG8udG9wK00vMikudGV4dChmdW5jdGlvPQpuKGUpe3JldHVybiBl
fSksQX1iLnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbW92ZSgpLHc9M0R0LnhTY2FsZSgpLEU9
M0R0Lnk9ClNjYWxlKCk7dmFyIFA9M0RiLnNlbGVjdEFsbCgiZy5udi13cmFwLm52LW11bHRpQmFy
V2l0aExlZ2VuZCIpLmRhdGEoW2VdKSxIPQo9M0RQLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLCJudmQzIG52LXdyYXAgbnYtbXVsdGlCYXJXaXRoTGVnZW5kIik9Ci5hcHBlbmQoImci
KSxCPTNEUC5zZWxlY3QoImciKTtILmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1h
eGlzIiksSD0KLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteSBudi1heGlzIiksSC5hcHBl
bmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWJhPQpyc1dyYXAiKSxILmFwcGVuZCgiZyIpLmF0dHIo
ImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpLEguYXBwZW5kKCJnIikuYXR0cigiY2w9CmFzcyIsIm52
LWNvbnRyb2xzV3JhcCIpLGMmJihpLndpZHRoKE8tQygpKSx0LmJhckNvbG9yKCkmJmUuZm9yRWFj
aChmdW5jdGlvbj0KKGUsdCl7ZS5jb2xvcj0zRGQzLnJnYigiI2NjYyIpLmRhcmtlcih0KjEuNSku
dG9TdHJpbmcoKX0pLEIuc2VsZWN0KCIubnYtbGVnPQplbmRXcmFwIikuZGF0dW0oZSkuY2FsbChp
KSxvLnRvcCE9M0RpLmhlaWdodCgpJiYoby50b3A9M0RpLmhlaWdodCgpLE09M0QoYXw9CnxwYXJz
ZUludChiLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktby50b3Atby5ib3R0b20pLEIuc2VsZWN0KCIu
bnYtbGVnZW5kV3JhcD0KIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrQygpKyIsIisg
LW8udG9wKyIpIikpO2lmKGwpe3ZhciBqPTNEW3trZXk6PQoiR3JvdXBlZCIsZGlzYWJsZWQ6dC5z
dGFja2VkKCl9LHtrZXk6IlN0YWNrZWQiLGRpc2FibGVkOiF0LnN0YWNrZWQoKX1dO3Mud2k9CmR0
aChDKCkpLmNvbG9yKFsiIzQ0NCIsIiM0NDQiLCIjNDQ0Il0pLEIuc2VsZWN0KCIubnYtY29udHJv
bHNXcmFwIikuZGF0dW0oaj0KKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoMCwiKyAtby50
b3ArIikiKS5jYWxsKHMpfVAuYXR0cigidHJhbnNmb3JtIiwiPQp0cmFuc2xhdGUoIitvLmxlZnQr
IiwiK28udG9wKyIpIiksZCYmQi5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Y9
Cm9ybSIsInRyYW5zbGF0ZSgiK08rIiwwKSIpLHQuZGlzYWJsZWQoZS5tYXAoZnVuY3Rpb24oZSl7
cmV0dXJuIGUuZGlzYWJsZWR9KT0KKS53aWR0aChPKS5oZWlnaHQoTSkuY29sb3IoZS5tYXAoZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8ZihlLHQpfSkuZmlsPQp0ZXIoZnVuY3Rpb24odCxu
KXtyZXR1cm4hZVtuXS5kaXNhYmxlZH0pKTt2YXIgRj0zREIuc2VsZWN0KCIubnYtYmFyc1dyYXAi
KS49CmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkpO0YuY2Fs
bCh0KTtpZihoKXtuLnNjYWxlKHcpLj0KdGlja3MoTy8xMDApLnRpY2tTaXplKC1NLDApLEIuc2Vs
ZWN0KCIubnYteC5udi1heGlzIikuYXR0cigidHJhbnNmb3JtIiwidHJhPQpuc2xhdGUoMCwiK0Uu
cmFuZ2UoKVswXSsiKSIpLEIuc2VsZWN0KCIubnYteC5udi1heGlzIikuY2FsbChuKTt2YXIgST0z
REIuc2U9CmxlY3QoIi5udi14Lm52LWF4aXMgPiBnIikuc2VsZWN0QWxsKCJnIik7SS5zZWxlY3RB
bGwoImxpbmUsIHRleHQiKS5zdHlsZSgibz0KcGFjaXR5IiwxKTtpZihtKXt2YXIgcT0zRGZ1bmN0
aW9uKGUsdCl7cmV0dXJuInRyYW5zbGF0ZSgiK2UrIiwiK3QrIikifSxSPTNEPQo1LFU9M0QxNztJ
LnNlbGVjdEFsbCgidGV4dCIpLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSx0LG4pe3JldHVy
biBxKDAsbiU9CjI9M0Q9M0QwP1I6VSl9KTt2YXIgej0zRGQzLnNlbGVjdEFsbCgiLm52LXgubnYt
YXhpcyAubnYtd3JhcCBnIGcgdGV4dCIpWzBdLj0KbGVuZ3RoO0Iuc2VsZWN0QWxsKCIubnYteC5u
di1heGlzIC5udi1heGlzTWF4TWluIHRleHQiKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1PQpuY3Rpb24o
ZSx0KXtyZXR1cm4gcSgwLHQ9M0Q9M0Q9M0QwfHx6JTIhPTNEPTNEMD9VOlIpfSl9diYmSS5maWx0
ZXIoZnVuY3Rpb249Cih0LG4pe3JldHVybiBuJU1hdGguY2VpbChlWzBdLnZhbHVlcy5sZW5ndGgv
KE8vMTAwKSkhPTNEPTNEMH0pLnNlbGVjdEFsbCgidD0KZXh0LCBsaW5lIikuc3R5bGUoIm9wYWNp
dHkiLDApLGcmJkkuc2VsZWN0QWxsKCIudGljayB0ZXh0IikuYXR0cigidHJhbnNmb3JtPQoiLCJy
b3RhdGUoIitnKyIgMCwwKSIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsZz4wPyJzdGFydCI6ImVuZCIp
LEIuc2VsZWN0KCIubnY9Ci14Lm52LWF4aXMiKS5zZWxlY3RBbGwoImcubnYtYXhpc01heE1pbiB0
ZXh0Iikuc3R5bGUoIm9wYWNpdHkiLDEpfXAmJihyLnNjYT0KbGUoRSkudGlja3MoTS8zNikudGlj
a1NpemUoLU8sMCksQi5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5jYWxsKHIpKSxpLmRpc3BhPQp0
Y2gub24oInN0YXRlQ2hhbmdlIixmdW5jdGlvbihlKXtTPTNEZSxOLnN0YXRlQ2hhbmdlKFMpLEEu
dXBkYXRlKCl9KSxzLmRpc3A9CmF0Y2gub24oImxlZ2VuZENsaWNrIixmdW5jdGlvbihlLG4pe2lm
KCFlLmRpc2FibGVkKXJldHVybjtqPTNEai5tYXAoZnVuY3Rpbz0KbihlKXtyZXR1cm4gZS5kaXNh
YmxlZD0zRCEwLGV9KSxlLmRpc2FibGVkPTNEITE7c3dpdGNoKGUua2V5KXtjYXNlIkdyb3VwZWQi
PQo6dC5zdGFja2VkKCExKTticmVhaztjYXNlIlN0YWNrZWQiOnQuc3RhY2tlZCghMCl9Uy5zdGFj
a2VkPTNEdC5zdGFja2VkKCksTi49CnN0YXRlQ2hhbmdlKFMpLEEudXBkYXRlKCl9KSxOLm9uKCJ0
b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7eSYmTChlLGsucGFyZW50Tj0Kb2RlKX0pLE4ub24oImNo
YW5nZVN0YXRlIixmdW5jdGlvbihuKXt0eXBlb2Ygbi5kaXNhYmxlZCE9M0QidW5kZWZpbmVkIiYm
KGUuPQpmb3JFYWNoKGZ1bmN0aW9uKGUsdCl7ZS5kaXNhYmxlZD0zRG4uZGlzYWJsZWRbdF19KSxT
LmRpc2FibGVkPTNEbi5kaXNhYmxlZCk9Cix0eXBlb2Ygbi5zdGFja2VkIT0zRCJ1bmRlZmluZWQi
JiYodC5zdGFja2VkKG4uc3RhY2tlZCksUy5zdGFja2VkPTNEbi5zdGFjaz0KZWQpLEEudXBkYXRl
KCl9KX0pLEF9dmFyIHQ9M0RlLm1vZGVscy5tdWx0aUJhcigpLG49M0RlLm1vZGVscy5heGlzKCks
cj0zRGUuPQptb2RlbHMuYXhpcygpLGk9M0RlLm1vZGVscy5sZWdlbmQoKSxzPTNEZS5tb2RlbHMu
bGVnZW5kKCksbz0zRHt0b3A6MzAscmlnaHQ9CjoyMCxib3R0b206NTAsbGVmdDo2MH0sdT0zRG51
bGwsYT0zRG51bGwsZj0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCksbD0zRCEwLD0KYz0zRCEwLGg9
M0QhMCxwPTNEITAsZD0zRCExLHY9M0QhMCxtPTNEITEsZz0zRDAseT0zRCEwLGI9M0RmdW5jdGlv
bihlLHQsbixyPQosaSl7cmV0dXJuIjxoMz4iK2UrIjwvaDM+IisiPHA+IituKyIgb24gIit0KyI8
L3A+In0sdyxFLFM9M0R7c3RhY2tlZDohMX0seD0KPTNEbnVsbCxUPTNEIk5vIERhdGEgQXZhaWxh
YmxlLiIsTj0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlPQoiLCJzdGF0
ZUNoYW5nZSIsImNoYW5nZVN0YXRlIiksQz0zRGZ1bmN0aW9uKCl7cmV0dXJuIGw/MTgwOjB9LGs9
M0QwO3Quc3RhY2s9CmVkKCExKSxuLm9yaWVudCgiYm90dG9tIikudGlja1BhZGRpbmcoNykuaGln
aGxpZ2h0WmVybyghMCkuc2hvd01heE1pbighMSkudD0KaWNrRm9ybWF0KGZ1bmN0aW9uKGUpe3Jl
dHVybiBlfSksci5vcmllbnQoZD8icmlnaHQiOiJsZWZ0IikudGlja0Zvcm1hdChkMy5mPQpvcm1h
dCgiLC4xZiIpKSxzLnVwZGF0ZVN0YXRlKCExKTt2YXIgTD0zRGZ1bmN0aW9uKGkscyl7dmFyIG89
M0RpLnBvc1swXSsocy49Cm9mZnNldExlZnR8fDApLHU9M0RpLnBvc1sxXSsocy5vZmZzZXRUb3B8
fDApLGE9M0RuLnRpY2tGb3JtYXQoKSh0LngoKShpLnBvaT0KbnQsaS5wb2ludEluZGV4KSksZj0z
RHIudGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksbD0zRGIoaS5zPQpl
cmllcy5rZXksYSxmLGksQSk7ZS50b29sdGlwLnNob3coW28sdV0sbCxpLnZhbHVlPDA/Im4iOiJz
IixudWxsLHMpfTtyZXR1cm49CiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0
aXAiLGZ1bmN0aW9uKGUpe2UucG9zPTNEW2UucG9zWzBdK28ubD0KZWZ0LGUucG9zWzFdK28udG9w
XSxOLnRvb2x0aXBTaG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0
PQppcCIsZnVuY3Rpb24oZSl7Ti50b29sdGlwSGlkZShlKX0pLE4ub24oInRvb2x0aXBIaWRlIixm
dW5jdGlvbigpe3kmJmUudG9vbHQ9CmlwLmNsZWFudXAoKX0pLEEuZGlzcGF0Y2g9M0ROLEEubXVs
dGliYXI9M0R0LEEubGVnZW5kPTNEaSxBLnhBeGlzPTNEbixBLnlBeD0KaXM9M0RyLGQzLnJlYmlu
ZChBLHQsIngiLCJ5IiwieERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJmb3Jj
ZVgiPQosImZvcmNlWSIsImNsaXBFZGdlIiwiaWQiLCJzdGFja2VkIiwic3RhY2tPZmZzZXQiLCJk
ZWxheSIsImJhckNvbG9yIiwiZ3JvdXA9ClNwYWNpbmciKSxBLm9wdGlvbnM9M0RlLnV0aWxzLm9w
dGlvbnNGdW5jLmJpbmQoQSksQS5tYXJnaW49M0RmdW5jdGlvbihlKXtyZT0KdHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhvLnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDpvLnRv
cCxvLnJpPQpnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0Om8ucmln
aHQsby5ib3R0b209M0R0eXBlb2YgZS5ib3Q9CnRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTpv
LmJvdHRvbSxvLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiPz0KZS5sZWZ0Om8u
bGVmdCxBKTpvfSxBLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/
KHU9M0RlLEEpPQo6dX0sQS5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxl
bmd0aD8oYT0zRGUsQSk6YX0sQS5jb2xvcj0zRGY9CnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGY9M0RlLnV0aWxzLmdldENvbG9yKHQpLGkuY29sb3IoZiksQSk6Zj0KfSxBLnNo
b3dDb250cm9scz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNEZSxB
KTpsfSxBLnNob3dMPQplZ2VuZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
PyhjPTNEZSxBKTpjfSxBLnNob3dYQXhpcz0zRGZ1bmM9CnRpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KGg9M0RlLEEpOmh9LEEuc2hvd1lBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dT0Kcm4g
YXJndW1lbnRzLmxlbmd0aD8ocD0zRGUsQSk6cH0sQS5yaWdodEFsaWduWUF4aXM9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJnPQp1bWVudHMubGVuZ3RoPyhkPTNEZSxyLm9yaWVudChlPyJyaWdodCI6
ImxlZnQiKSxBKTpkfSxBLnJlZHVjZVhUaWNrcz0zRGZ1bmM9CnRpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHY9M0RlLEEpOnZ9LEEucm90YXRlTGFiZWxzPTNEZnVuY3Rpb24oZSl7cj0K
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0zRGUsQSk6Z30sQS5zdGFnZ2VyTGFiZWxzPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyPQpndW1lbnRzLmxlbmd0aD8obT0zRGUsQSk6bX0sQS50b29sdGlw
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9Cj8oYj0zRGUsQSk6Yn0sQS50
b29sdGlwcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PTNEZSxBKTp5
fT0KLEEudG9vbHRpcENvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oYj0zRGUsQSk6Yn0sQS5zdGF0PQplPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KFM9M0RlLEEpOlN9LEEuZGVmYXVsdFN0YXRlPTNEZnVuY3Q9CmlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oeD0zRGUsQSk6eH0sQS5ub0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYT0Kcmd1bWVudHMubGVuZ3RoPyhUPTNEZSxBKTpUfSxBLnRyYW5zaXRpb25EdXJhdGlvbj0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1PQptZW50cy5sZW5ndGg/KGs9M0RlLEEpOmt9LEF9LGUu
bW9kZWxzLm11bHRpQmFySG9yaXpvbnRhbD0zRGZ1bmN0aW9uKCl7ZnVuY3Q9CmlvbiBDKGUpe3Jl
dHVybiBlLmVhY2goZnVuY3Rpb24oZSl7dmFyIGk9M0RuLXQubGVmdC10LnJpZ2h0LHk9M0RyLXQu
dG9wLXQuYj0Kb3R0b20sQz0zRGQzLnNlbGVjdCh0aGlzKTtwJiYoZT0zRGQzLmxheW91dC5zdGFj
aygpLm9mZnNldCgiemVybyIpLnZhbHVlcyhmPQp1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlc30p
LnkoYSkoZSkpLGUuZm9yRWFjaChmdW5jdGlvbihlLHQpe2UudmFsdWVzLmZvckU9CmFjaChmdW5j
dGlvbihlKXtlLnNlcmllcz0zRHR9KX0pLHAmJmVbMF0udmFsdWVzLm1hcChmdW5jdGlvbih0LG4p
e3ZhciByPTNEMD0KLGk9M0QwO2UubWFwKGZ1bmN0aW9uKGUpe3ZhciB0PTNEZS52YWx1ZXNbbl07
dC5zaXplPTNETWF0aC5hYnModC55KSx0Lnk8MD8oPQp0LnkxPTNEaS10LnNpemUsaS09M0R0LnNp
emUpOih0LnkxPTNEcixyKz0zRHQuc2l6ZSl9KX0pO3ZhciBrPTNEYiYmdz9bXTplLm09CmFwKGZ1
bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm57eDp1KGUs
dCkseTphKGUsdCkseT0KMDplLnkwLHkxOmUueTF9fSl9KTtzLmRvbWFpbihifHxkMy5tZXJnZShr
KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUueH0pKS5yPQphbmdlQmFuZHMoRXx8WzAseV0sLjEp
LG8uZG9tYWluKHd8fGQzLmV4dGVudChkMy5tZXJnZShrKS5tYXAoZnVuY3Rpb24oZSl7cmU9CnR1
cm4gcD9lLnk+MD9lLnkxK2UueTplLnkxOmUueX0pLmNvbmNhdChmKSkpLGQmJiFwP28ucmFuZ2Uo
U3x8W28uZG9tYWluKClbMD0KXTwwP206MCxpLShvLmRvbWFpbigpWzFdPjA/bTowKV0pOm8ucmFu
Z2UoU3x8WzAsaV0pLFQ9M0RUfHxzLE49M0ROfHxkMy5zY2FsPQplLmxpbmVhcigpLmRvbWFpbihv
LmRvbWFpbigpKS5yYW5nZShbbygwKSxvKDApXSk7dmFyIEw9M0RkMy5zZWxlY3QodGhpcykuc2U9
CmxlY3RBbGwoImcubnYtd3JhcC5udi1tdWx0aWJhckhvcml6b250YWwiKS5kYXRhKFtlXSksQT0z
REwuZW50ZXIoKS5hcHBlbmQoIj0KZyIpLmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LW11
bHRpYmFySG9yaXpvbnRhbCIpLE89M0RBLmFwcGVuZCgiZGVmcyIpPQosTT0zREEuYXBwZW5kKCJn
IiksXz0zREwuc2VsZWN0KCJnIik7TS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWdyb3Vw
cyI9CiksTC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit0LmxlZnQrIiwiK3QudG9wKyIp
Iik7dmFyIEQ9M0RMLnNlbGVjdCgiLj0KbnYtZ3JvdXBzIikuc2VsZWN0QWxsKCIubnYtZ3JvdXAi
KS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlfSxmdW5jdGlvbihlLHQpPQp7cmV0dXJuIHR9KTtE
LmVudGVyKCkuYXBwZW5kKCJnIikuc3R5bGUoInN0cm9rZS1vcGFjaXR5IiwxZS02KS5zdHlsZSgi
ZmlsbC09Cm9wYWNpdHkiLDFlLTYpLEQuZXhpdCgpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIsMWUt
Nikuc3R5bGUoImZpbGwtb3BhY2l0eSIsMT0KZS02KS5yZW1vdmUoKSxELmF0dHIoImNsYXNzIixm
dW5jdGlvbihlLHQpe3JldHVybiJudi1ncm91cCBudi1zZXJpZXMtIit0fSkuPQpjbGFzc2VkKCJo
b3ZlciIsZnVuY3Rpb24oZSl7cmV0dXJuIGUuaG92ZXJ9KS5zdHlsZSgiZmlsbCIsZnVuY3Rpb24o
ZSx0KXtyZXQ9CnVybiBsKGUsdCl9KS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbihlLHQpe3JldHVy
biBsKGUsdCl9KSxELnN0eWxlKCJzdHJva2Utbz0KcGFjaXR5IiwxKS5zdHlsZSgiZmlsbC1vcGFj
aXR5IiwuNzUpO3ZhciBQPTNERC5zZWxlY3RBbGwoImcubnYtYmFyIikuZGF0YShmPQp1bmN0aW9u
KGUpe3JldHVybiBlLnZhbHVlc30pO1AuZXhpdCgpLnJlbW92ZSgpO3ZhciBIPTNEUC5lbnRlcigp
LmFwcGVuZCgiZyI9CikuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbih0LG4scil7cmV0dXJuInRy
YW5zbGF0ZSgiK04ocD90LnkwOjApKyIsIisocD8wOj0KcipzLnJhbmdlQmFuZCgpL2UubGVuZ3Ro
K3ModSh0LG4pKSkrIikifSk7SC5hcHBlbmQoInJlY3QiKS5hdHRyKCJ3aWR0aCIsMCkuPQphdHRy
KCJoZWlnaHQiLHMucmFuZ2VCYW5kKCkvKHA/MTplLmxlbmd0aCkpLFAub24oIm1vdXNlb3ZlciIs
ZnVuY3Rpb24odCxuKXs9CmQzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIsITApLHguZWxl
bWVudE1vdXNlb3Zlcih7dmFsdWU6YSh0LG4pLHBvaW50Oj0KdCxzZXJpZXM6ZVt0LnNlcmllc10s
cG9zOltvKGEodCxuKSsocD90LnkwOjApKSxzKHUodCxuKSkrcy5yYW5nZUJhbmQoKSoocD9lPQou
bGVuZ3RoLzI6dC5zZXJpZXMrLjUpL2UubGVuZ3RoXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6
dC5zZXJpZXMsZTpkMy5ldmU9Cm50fSl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKHQsbil7ZDMu
c2VsZWN0KHRoaXMpLmNsYXNzZWQoImhvdmVyIiwhMSkseC5lbD0KZW1lbnRNb3VzZW91dCh7dmFs
dWU6YSh0LG4pLHBvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvaW50SW5kZXg6bixzZXJpZXNJ
PQpuZGV4OnQuc2VyaWVzLGU6ZDMuZXZlbnR9KX0pLm9uKCJjbGljayIsZnVuY3Rpb24odCxuKXt4
LmVsZW1lbnRDbGljayh7dmFsdWU9CjphKHQsbikscG9pbnQ6dCxzZXJpZXM6ZVt0LnNlcmllc10s
cG9zOltzKHUodCxuKSkrcy5yYW5nZUJhbmQoKSoocD9lLmxlbmd0aD0KLzI6dC5zZXJpZXMrLjUp
L2UubGVuZ3RoLG8oYSh0LG4pKyhwP3QueTA6MCkpXSxwb2ludEluZGV4Om4sc2VyaWVzSW5kZXg6
dC5zPQplcmllcyxlOmQzLmV2ZW50fSksZDMuZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9KS5vbigi
ZGJsY2xpY2siLGZ1bmN0aW9uKHQsbik9Cnt4LmVsZW1lbnREYmxDbGljayh7dmFsdWU6YSh0LG4p
LHBvaW50OnQsc2VyaWVzOmVbdC5zZXJpZXNdLHBvczpbcyh1KHQsbikpKz0Kcy5yYW5nZUJhbmQo
KSoocD9lLmxlbmd0aC8yOnQuc2VyaWVzKy41KS9lLmxlbmd0aCxvKGEodCxuKSsocD90LnkwOjAp
KV0scG9pPQpudEluZGV4Om4sc2VyaWVzSW5kZXg6dC5zZXJpZXMsZTpkMy5ldmVudH0pLGQzLmV2
ZW50LnN0b3BQcm9wYWdhdGlvbigpfSksSC49CmFwcGVuZCgidGV4dCIpLGQmJiFwPyhQLnNlbGVj
dCgidGV4dCIpLmF0dHIoInRleHQtYW5jaG9yIixmdW5jdGlvbihlLHQpe3JldD0KdXJuIGEoZSx0
KTwwPyJlbmQiOiJzdGFydCJ9KS5hdHRyKCJ5IixzLnJhbmdlQmFuZCgpLyhlLmxlbmd0aCoyKSku
YXR0cigiZHkiPQosIi4zMmVtIikudGV4dChmdW5jdGlvbihlLHQpe3JldHVybiBnKGEoZSx0KSl9
KSxQLnNlbGVjdCgidGV4dCIpLmF0dHIoIngiLGY9CnVuY3Rpb24oZSx0KXtyZXR1cm4gYShlLHQp
PDA/LTQ6byhhKGUsdCkpLW8oMCkrNH0pKTpQLnNlbGVjdEFsbCgidGV4dCIpLnRleD0KdCgiIiks
diYmIXA/KEguYXBwZW5kKCJ0ZXh0IikuY2xhc3NlZCgibnYtYmFyLWxhYmVsIiwhMCksUC5zZWxl
Y3QoInRleHQubnYtPQpiYXItbGFiZWwiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsZnVuY3Rpb24oZSx0
KXtyZXR1cm4gYShlLHQpPDA/InN0YXJ0IjoiZW5kIn09CikuYXR0cigieSIscy5yYW5nZUJhbmQo
KS8oZS5sZW5ndGgqMikpLmF0dHIoImR5IiwiLjMyZW0iKS50ZXh0KGZ1bmN0aW9uKGUsdD0KKXty
ZXR1cm4gdShlLHQpfSksUC5zZWxlY3QoInRleHQubnYtYmFyLWxhYmVsIikuYXR0cigieCIsZnVu
Y3Rpb24oZSx0KXtyZXR1PQpybiBhKGUsdCk8MD9vKDApLW8oYShlLHQpKSs0Oi00fSkpOlAuc2Vs
ZWN0QWxsKCJ0ZXh0Lm52LWJhci1sYWJlbCIpLnRleHQoIiI9CiksUC5hdHRyKCJjbGFzcyIsZnVu
Y3Rpb24oZSx0KXtyZXR1cm4gYShlLHQpPDA/Im52LWJhciBuZWdhdGl2ZSI6Im52LWJhciBwbz0K
c2l0aXZlIn0pLGMmJihofHwoaD0zRGUubWFwKGZ1bmN0aW9uKCl7cmV0dXJuITB9KSksUC5zdHls
ZSgiZmlsbCIsZnVuY3Rpb24oPQplLHQsbil7cmV0dXJuIGQzLnJnYihjKGUsdCkpLmRhcmtlciho
Lm1hcChmdW5jdGlvbihlLHQpe3JldHVybiB0fSkuZmlsdGVyKGY9CnVuY3Rpb24oZSx0KXtyZXR1
cm4haFt0XX0pW25dKS50b1N0cmluZygpfSkuc3R5bGUoInN0cm9rZSIsZnVuY3Rpb24oZSx0LG4p
ez0KcmV0dXJuIGQzLnJnYihjKGUsdCkpLmRhcmtlcihoLm1hcChmdW5jdGlvbihlLHQpe3JldHVy
biB0fSkuZmlsdGVyKGZ1bmN0aW9uPQooZSx0KXtyZXR1cm4haFt0XX0pW25dKS50b1N0cmluZygp
fSkpLHA/UC5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmU9CnR1cm4idHJhbnNsYXRl
KCIrbyhlLnkxKSsiLCIrcyh1KGUsdCkpKyIpIn0pLnNlbGVjdCgicmVjdCIpLmF0dHIoIndpZHRo
IixmdT0KbmN0aW9uKGUsdCl7cmV0dXJuIE1hdGguYWJzKG8oYShlLHQpK2UueTApLW8oZS55MCkp
fSkuYXR0cigiaGVpZ2h0IixzLnJhbmdlPQpCYW5kKCkpOlAuYXR0cigidHJhbnNmb3JtIixmdW5j
dGlvbih0LG4pe3JldHVybiJ0cmFuc2xhdGUoIisoYSh0LG4pPDA/byhhKHQ9CixuKSk6bygwKSkr
IiwiKyh0LnNlcmllcypzLnJhbmdlQmFuZCgpL2UubGVuZ3RoK3ModSh0LG4pKSkrIikifSkuc2Vs
ZWN0KCJyZT0KY3QiKS5hdHRyKCJoZWlnaHQiLHMucmFuZ2VCYW5kKCkvZS5sZW5ndGgpLmF0dHIo
IndpZHRoIixmdW5jdGlvbihlLHQpe3JldHVyPQpuIE1hdGgubWF4KE1hdGguYWJzKG8oYShlLHQp
KS1vKDApKSwxKX0pLFQ9M0RzLmNvcHkoKSxOPTNEby5jb3B5KCl9KSxDfXZhciA9CnQ9M0R7dG9w
OjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9LG49M0Q5NjAscj0zRDUwMCxpPTNETWF0aC5mbG9v
cihNYXRoLnJhbj0KZG9tKCkqMWU0KSxzPTNEZDMuc2NhbGUub3JkaW5hbCgpLG89M0RkMy5zY2Fs
ZS5saW5lYXIoKSx1PTNEZnVuY3Rpb24oZSl7cmV0PQp1cm4gZS54fSxhPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGUueX0sZj0zRFswXSxsPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxjPQo9M0RudWxs
LGgscD0zRCExLGQ9M0QhMSx2PTNEITEsbT0zRDYwLGc9M0RkMy5mb3JtYXQoIiwuMmYiKSx5PTNE
MTIwMCxiLHcsRSw9ClMseD0zRGQzLmRpc3BhdGNoKCJjaGFydENsaWNrIiwiZWxlbWVudENsaWNr
IiwiZWxlbWVudERibENsaWNrIiwiZWxlbWVudE1vdT0Kc2VvdmVyIiwiZWxlbWVudE1vdXNlb3V0
IiksVCxOO3JldHVybiBDLmRpc3BhdGNoPTNEeCxDLm9wdGlvbnM9M0RlLnV0aWxzLm9wPQp0aW9u
c0Z1bmMuYmluZChDKSxDLng9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
dT0zRGUsQyk6dX0sQy49Cnk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
YT0zRGUsQyk6YX0sQy5tYXJnaW49M0RmdW5jdGlvbihlKT0Ke3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyh0LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDp0LnRvcCx0PQou
cmlnaHQ9M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OnQucmlnaHQsdC5i
b3R0b209M0R0eXBlb2YgZS49CmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHRv
bSx0LmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZT0KZCI/ZS5sZWZ0OnQubGVmdCxD
KTp0fSxDLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49M0Rl
PQosQyk6bn0sQy5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
cj0zRGUsQyk6cn0sQy54U2NhbGU9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhzPTNEZSxDKTpzfSxDLnlTY2FsZT0zRGZ1bmN0aW9uKGUpez0KcmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KG89M0RlLEMpOm99LEMueERvbWFpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVuPQp0cy5sZW5ndGg/KGI9M0RlLEMpOmJ9LEMueURvbWFpbj0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyh3PQo9M0RlLEMpOnd9LEMueFJhbmdlPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlLEMpOkV9LEMueVI9CmFuZ2U9M0RmdW5jdGlv
bihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUz0zRGUsQyk6U30sQy5mb3JjZVk9M0RmdW5j
dGlvbj0KKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPTNEZSxDKTpmfSxDLnN0YWNrZWQ9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJnPQp1bWVudHMubGVuZ3RoPyhwPTNEZSxDKTpwfSxDLmNv
bG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9Cj0zRGUudXRpbHMu
Z2V0Q29sb3IodCksQyk6bH0sQy5iYXJDb2xvcj0zRGZ1bmN0aW9uKHQpe3JldHVybiBhcmd1bWVu
dHMubGVuZz0KdGg/KGM9M0RlLnV0aWxzLmdldENvbG9yKHQpLEMpOmN9LEMuZGlzYWJsZWQ9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzPQoubGVuZ3RoPyhoPTNEZSxDKTpofSxDLmlkPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9M0RlLEMpOmk9Cn0sQy5kZWxh
eT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PTNEZSxDKTp5fSxDLnNo
b3dWYWx1ZXM9Cj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSxD
KTpkfSxDLnNob3dCYXJMYWJlbHM9M0RmdW5jdD0KaW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyh2PTNEZSxDKTp2fSxDLnZhbHVlRm9ybWF0PTNEZnVuY3Rpb24oZSl7cmV0PQp1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oZz0zRGUsQyk6Z30sQy52YWx1ZVBhZGRpbmc9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW09CmVudHMubGVuZ3RoPyhtPTNEZSxDKTptfSxDfSxlLm1vZGVscy5tdWx0aUJh
ckhvcml6b250YWxDaGFydD0zRGZ1bmN0aW9uKCl7Zj0KdW5jdGlvbiBDKGUpe3JldHVybiBlLmVh
Y2goZnVuY3Rpb24oZSl7dmFyIGQ9M0RkMy5zZWxlY3QodGhpcyksbT0zRHRoaXMsVD0KPTNEKHV8
fHBhcnNlSW50KGQuc3R5bGUoIndpZHRoIikpfHw5NjApLW8ubGVmdC1vLnJpZ2h0LGs9M0QoYXx8
cGFyc2VJbnQoZC5zPQp0eWxlKCJoZWlnaHQiKSl8fDQwMCktby50b3Atby5ib3R0b207Qy51cGRh
dGU9M0RmdW5jdGlvbigpe2QuY2FsbChDKX0sQy5jb249CnRhaW5lcj0zRHRoaXMsYi5kaXNhYmxl
ZD0zRGUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pO2lmKCF3KXt2YT0KciBM
O3c9M0R7fTtmb3IoTCBpbiBiKWJbTF1pbnN0YW5jZW9mIEFycmF5P3dbTF09M0RiW0xdLnNsaWNl
KDApOndbTF09M0RiW0xdPQp9aWYoIWV8fCFlLmxlbmd0aHx8IWUuZmlsdGVyKGZ1bmN0aW9uKGUp
e3JldHVybiBlLnZhbHVlcy5sZW5ndGh9KS5sZW5ndGgpe3Y9CmFyIEE9M0RkLnNlbGVjdEFsbCgi
Lm52LW5vRGF0YSIpLmRhdGEoW0VdKTtyZXR1cm4gQS5lbnRlcigpLmFwcGVuZCgidGV4dCIpLj0K
YXR0cigiY2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgi
dGV4dC1hbmNob3IiLCJtaWRkPQpsZSIpLEEuYXR0cigieCIsby5sZWZ0K1QvMikuYXR0cigieSIs
by50b3Aray8yKS50ZXh0KGZ1bmN0aW9uKGUpe3JldHVybiBlfSk9CixDfWQuc2VsZWN0QWxsKCIu
bnYtbm9EYXRhIikucmVtb3ZlKCksZz0zRHQueFNjYWxlKCkseT0zRHQueVNjYWxlKCk7dmFyIE89
Cj0zRGQuc2VsZWN0QWxsKCJnLm52LXdyYXAubnYtbXVsdGlCYXJIb3Jpem9udGFsQ2hhcnQiKS5k
YXRhKFtlXSksTT0zRE8uZW50ZT0KcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnZkMyBu
di13cmFwIG52LW11bHRpQmFySG9yaXpvbnRhbENoYXJ0IikuYXBwPQplbmQoImciKSxfPTNETy5z
ZWxlY3QoImciKTtNLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteCBudi1heGlzIiksTS5h
cHA9CmVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYteSBudi1heGlzIikuYXBwZW5kKCJnIikuYXR0
cigiY2xhc3MiLCJudi16ZXJvTGluZT0KIikuYXBwZW5kKCJsaW5lIiksTS5hcHBlbmQoImciKS5h
dHRyKCJjbGFzcyIsIm52LWJhcnNXcmFwIiksTS5hcHBlbmQoImciKS5hPQp0dHIoImNsYXNzIiwi
bnYtbGVnZW5kV3JhcCIpLE0uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1jb250cm9sc1dy
YXAiKSw9CmMmJihpLndpZHRoKFQteCgpKSx0LmJhckNvbG9yKCkmJmUuZm9yRWFjaChmdW5jdGlv
bihlLHQpe2UuY29sb3I9M0RkMy5yZ2IoIj0KI2NjYyIpLmRhcmtlcih0KjEuNSkudG9TdHJpbmco
KX0pLF8uc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmRhdHVtKGUpLmNhbGwoPQppKSxvLnRvcCE9
M0RpLmhlaWdodCgpJiYoby50b3A9M0RpLmhlaWdodCgpLGs9M0QoYXx8cGFyc2VJbnQoZC5zdHls
ZSgiaGVpZ2g9CnQiKSl8fDQwMCktby50b3Atby5ib3R0b20pLF8uc2VsZWN0KCIubnYtbGVnZW5k
V3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYT0KbnNsYXRlKCIreCgpKyIsIisgLW8udG9wKyIp
IikpO2lmKGwpe3ZhciBEPTNEW3trZXk6Ikdyb3VwZWQiLGRpc2FibGVkOnQuc3RhPQpja2VkKCl9
LHtrZXk6IlN0YWNrZWQiLGRpc2FibGVkOiF0LnN0YWNrZWQoKX1dO3Mud2lkdGgoeCgpKS5jb2xv
cihbIiM0NDQiLCI9CiM0NDQiLCIjNDQ0Il0pLF8uc2VsZWN0KCIubnYtY29udHJvbHNXcmFwIiku
ZGF0dW0oRCkuYXR0cigidHJhbnNmb3JtIiwidHJhbj0Kc2xhdGUoMCwiKyAtby50b3ArIikiKS5j
YWxsKHMpfU8uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrby5sZWZ0KyIsIitvPQoudG9w
KyIpIiksdC5kaXNhYmxlZChlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5kaXNhYmxlZH0pKS53
aWR0aChUKS5oZWlnaHQ9CihrKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNv
bG9yfHxmKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb24odCxuKT0Ke3JldHVybiFlW25dLmRpc2FibGVk
fSkpO3ZhciBQPTNEXy5zZWxlY3QoIi5udi1iYXJzV3JhcCIpLmRhdHVtKGUuZmlsdGVyKGZ1PQpu
Y3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSk7UC5jYWxsKHQpO2lmKGgpe24uc2NhbGUoZyku
dGlja3Moay8yNCkudGlja1M9Cml6ZSgtVCwwKSxfLnNlbGVjdCgiLm52LXgubnYtYXhpcyIpLmNh
bGwobik7dmFyIEg9M0RfLnNlbGVjdCgiLm52LXgubnYtYXhpcz0KIikuc2VsZWN0QWxsKCJnIik7
SC5zZWxlY3RBbGwoImxpbmUsIHRleHQiKX1wJiYoci5zY2FsZSh5KS50aWNrcyhULzEwMCkudGlj
PQprU2l6ZSgtaywwKSxfLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIs
InRyYW5zbGF0ZSgwLCIraysiKSI9CiksXy5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5jYWxsKHIp
KSxfLnNlbGVjdCgiLm52LXplcm9MaW5lIGxpbmUiKS5hdHRyKCJ4MT0KIix5KDApKS5hdHRyKCJ4
MiIseSgwKSkuYXR0cigieTEiLDApLmF0dHIoInkyIiwtayksaS5kaXNwYXRjaC5vbigic3RhdGVD
aGFuPQpnZSIsZnVuY3Rpb24oZSl7Yj0zRGUsUy5zdGF0ZUNoYW5nZShiKSxDLnVwZGF0ZSgpfSks
cy5kaXNwYXRjaC5vbigibGVnZW5kQ2w9CmljayIsZnVuY3Rpb24oZSxuKXtpZighZS5kaXNhYmxl
ZClyZXR1cm47RD0zREQubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRpcz0KYWJsZWQ9M0QhMCxl
fSksZS5kaXNhYmxlZD0zRCExO3N3aXRjaChlLmtleSl7Y2FzZSJHcm91cGVkIjp0LnN0YWNrZWQo
ITEpO2JyPQplYWs7Y2FzZSJTdGFja2VkIjp0LnN0YWNrZWQoITApfWIuc3RhY2tlZD0zRHQuc3Rh
Y2tlZCgpLFMuc3RhdGVDaGFuZ2UoYiksQy49CnVwZGF0ZSgpfSksUy5vbigidG9vbHRpcFNob3ci
LGZ1bmN0aW9uKGUpe3YmJk4oZSxtLnBhcmVudE5vZGUpfSksUy5vbigiY2hhbj0KZ2VTdGF0ZSIs
ZnVuY3Rpb24obil7dHlwZW9mIG4uZGlzYWJsZWQhPTNEInVuZGVmaW5lZCImJihlLmZvckVhY2go
ZnVuY3Rpb24oPQplLHQpe2UuZGlzYWJsZWQ9M0RuLmRpc2FibGVkW3RdfSksYi5kaXNhYmxlZD0z
RG4uZGlzYWJsZWQpLHR5cGVvZiBuLnN0YWNrZWQ9CiE9M0QidW5kZWZpbmVkIiYmKHQuc3RhY2tl
ZChuLnN0YWNrZWQpLGIuc3RhY2tlZD0zRG4uc3RhY2tlZCksQy51cGRhdGUoKX0pfT0KKSxDfXZh
ciB0PTNEZS5tb2RlbHMubXVsdGlCYXJIb3Jpem9udGFsKCksbj0zRGUubW9kZWxzLmF4aXMoKSxy
PTNEZS5tb2RlbHMuPQpheGlzKCksaT0zRGUubW9kZWxzLmxlZ2VuZCgpLmhlaWdodCgzMCkscz0z
RGUubW9kZWxzLmxlZ2VuZCgpLmhlaWdodCgzMCksbz0KPTNEe3RvcDozMCxyaWdodDoyMCxib3R0
b206NTAsbGVmdDo2MH0sdT0zRG51bGwsYT0zRG51bGwsZj0zRGUudXRpbHMuZGVmYXVsPQp0Q29s
b3IoKSxsPTNEITAsYz0zRCEwLGg9M0QhMCxwPTNEITAsZD0zRCExLHY9M0QhMCxtPTNEZnVuY3Rp
b24oZSx0LG4scixpKXs9CnJldHVybiI8aDM+IitlKyIgLSAiK3QrIjwvaDM+IisiPHA+IituKyI8
L3A+In0sZyx5LGI9M0R7c3RhY2tlZDpkfSx3PTNEbnVsbD0KLEU9M0QiTm8gRGF0YSBBdmFpbGFi
bGUuIixTPTNEZDMuZGlzcGF0Y2goInRvb2x0aXBTaG93IiwidG9vbHRpcEhpZGUiLCJzdGF0PQpl
Q2hhbmdlIiwiY2hhbmdlU3RhdGUiKSx4PTNEZnVuY3Rpb24oKXtyZXR1cm4gbD8xODA6MH0sVD0z
RDA7dC5zdGFja2VkKGQpLG49Ci5vcmllbnQoImxlZnQiKS50aWNrUGFkZGluZyg1KS5oaWdobGln
aHRaZXJvKCExKS5zaG93TWF4TWluKCExKS50aWNrRm9ybWF0KD0KZnVuY3Rpb24oZSl7cmV0dXJu
IGV9KSxyLm9yaWVudCgiYm90dG9tIikudGlja0Zvcm1hdChkMy5mb3JtYXQoIiwuMWYiKSkscy51
PQpwZGF0ZVN0YXRlKCExKTt2YXIgTj0zRGZ1bmN0aW9uKGkscyl7dmFyIG89M0RpLnBvc1swXSso
cy5vZmZzZXRMZWZ0fHwwKSx1PQo9M0RpLnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLGE9M0RuLnRp
Y2tGb3JtYXQoKSh0LngoKShpLnBvaW50LGkucG9pbnRJbmRleCk9CiksZj0zRHIudGlja0Zvcm1h
dCgpKHQueSgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksbD0zRG0oaS5zZXJpZXMua2V5LGEsZixp
LD0KQyk7ZS50b29sdGlwLnNob3coW28sdV0sbCxpLnZhbHVlPDA/ImUiOiJ3IixudWxsLHMpfTty
ZXR1cm4gdC5kaXNwYXRjaC5vbigiPQplbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9u
KGUpe2UucG9zPTNEW2UucG9zWzBdK28ubGVmdCxlLnBvc1sxXStvLnQ9Cm9wXSxTLnRvb2x0aXBT
aG93KGUpfSksdC5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3V0LnRvb2x0aXAiLGZ1bmN0aW9u
KGUpez0KUy50b29sdGlwSGlkZShlKX0pLFMub24oInRvb2x0aXBIaWRlIixmdW5jdGlvbigpe3Ym
JmUudG9vbHRpcC5jbGVhbnVwKCl9KSxDPQouZGlzcGF0Y2g9M0RTLEMubXVsdGliYXI9M0R0LEMu
bGVnZW5kPTNEaSxDLnhBeGlzPTNEbixDLnlBeGlzPTNEcixkMy5yZWJpbmQ9CihDLHQsIngiLCJ5
IiwieERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJmb3JjZVgiLCJmb3JjZVki
LCJjbGlwRT0KZGdlIiwiaWQiLCJkZWxheSIsInNob3dWYWx1ZXMiLCJzaG93QmFyTGFiZWxzIiwi
dmFsdWVGb3JtYXQiLCJzdGFja2VkIiwiYmFyPQpDb2xvciIpLEMub3B0aW9ucz0zRGUudXRpbHMu
b3B0aW9uc0Z1bmMuYmluZChDKSxDLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHU9CnJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KG8udG9wPTNEdHlwZW9mIGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOm8u
dG9wLG8ucmlnaD0KdD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6by5y
aWdodCxvLmJvdHRvbT0zRHR5cGVvZiBlLmJvdHRvPQptIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9t
Om8uYm90dG9tLG8ubGVmdD0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS49CmxlZnQ6
by5sZWZ0LEMpOm99LEMud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8odT0zRGUsQyk6dT0KfSxDLmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhhPTNEZSxDKTphfSxDLmNvbG9yPTNEZnVuPQpjdGlvbih0KXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oZj0zRGUudXRpbHMuZ2V0Q29sb3IodCksaS5jb2xvcihmKSxDKTpmfSw9CkMu
c2hvd0NvbnRyb2xzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0Rl
LEMpOmx9LEMuc2hvd0xlZz0KZW5kPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGM9M0RlLEMpOmN9LEMuc2hvd1hBeGlzPTNEZnVuY3RpPQpvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8oaD0zRGUsQyk6aH0sQy5zaG93WUF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm49
CiBhcmd1bWVudHMubGVuZ3RoPyhwPTNEZSxDKTpwfSxDLnRvb2x0aXA9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbj0KZ3RoPyhtPTNEZSxDKTptfSxDLnRvb2x0aXBzPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHY9M0RlLEMpPQo6dn0sQy50b29sdGlwQ29u
dGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNEZSxDKTptfSxD
LnM9CnRhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0zRGUsQyk6
Yn0sQy5kZWZhdWx0U3RhdGU9M0RmdT0KbmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3Ro
Pyh3PTNEZSxDKTp3fSxDLm5vRGF0YT0zRGZ1bmN0aW9uKGUpe3JldHVyPQpuIGFyZ3VtZW50cy5s
ZW5ndGg/KEU9M0RlLEMpOkV9LEMudHJhbnNpdGlvbkR1cmF0aW9uPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGE9CnJndW1lbnRzLmxlbmd0aD8oVD0zRGUsQyk6VH0sQ30sZS5tb2RlbHMubXVsdGlDaGFy
dD0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gQz0KKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7
dmFyIHU9M0RkMy5zZWxlY3QodGhpcyksZj0zRHRoaXM7Qy51cGRhdGU9M0RmPQp1bmN0aW9uKCl7
dS5jYWxsKEMpfSxDLmNvbnRhaW5lcj0zRHRoaXM7dmFyIGs9M0Qocnx8cGFyc2VJbnQodS5zdHls
ZSgid2lkdGg9CiIpKXx8OTYwKS10LmxlZnQtdC5yaWdodCxMPTNEKGl8fHBhcnNlSW50KHUuc3R5
bGUoImhlaWdodCIpKXx8NDAwKS10LnRvcC10Lj0KYm90dG9tLEE9M0RlLmZpbHRlcihmdW5jdGlv
bihlKXtyZXR1cm4hZS5kaXNhYmxlZCYmZS50eXBlPTNEPTNEImxpbmUiJiZlLnlBPQp4aXM9M0Q9
M0QxfSksTz0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkJiZlLnR5cGU9
M0Q9M0QibGluZSI9CiYmZS55QXhpcz0zRD0zRDJ9KSxNPTNEZS5maWx0ZXIoZnVuY3Rpb24oZSl7
cmV0dXJuIWUuZGlzYWJsZWQmJmUudHlwZT0zRD0zRD0KImJhciImJmUueUF4aXM9M0Q9M0QxfSks
Xz0zRGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkJiZlLnR5cGU9Cj0zRD0z
RCJiYXIiJiZlLnlBeGlzPTNEPTNEMn0pLEQ9M0RlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4h
ZS5kaXNhYmxlZCYmZT0KLnR5cGU9M0Q9M0QiYXJlYSImJmUueUF4aXM9M0Q9M0QxfSksUD0zRGUu
ZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FiPQpsZWQmJmUudHlwZT0zRD0zRCJhcmVh
IiYmZS55QXhpcz0zRD0zRDJ9KSxIPTNEZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWU9Ci5k
aXNhYmxlZCYmZS55QXhpcz0zRD0zRDF9KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVz
Lm1hcChmdW5jdGlvbihlLD0KdCl7cmV0dXJue3g6ZS54LHk6ZS55fX0pfSksQj0zRGUuZmlsdGVy
KGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkJiZlLnlBPQp4aXM9M0Q9M0QyfSkubWFwKGZ1
bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlcy5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm57eDplLng9
Cix5OmUueX19KX0pO2EuZG9tYWluKGQzLmV4dGVudChkMy5tZXJnZShILmNvbmNhdChCKSksZnVu
Y3Rpb24oZSl7cmV0dXJuIGUueD0KfSkpLnJhbmdlKFswLGtdKTt2YXIgaj0zRHUuc2VsZWN0QWxs
KCJnLndyYXAubXVsdGlDaGFydCIpLmRhdGEoW2VdKSxGPTNEai5lPQpudGVyKCkuYXBwZW5kKCJn
IikuYXR0cigiY2xhc3MiLCJ3cmFwIG52ZDMgbXVsdGlDaGFydCIpLmFwcGVuZCgiZyIpO0YuYXBw
ZW49CmQoImciKS5hdHRyKCJjbGFzcyIsInggYXhpcyIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xh
c3MiLCJ5MSBheGlzIiksRi5hcHBlbj0KZCgiZyIpLmF0dHIoImNsYXNzIiwieTIgYXhpcyIpLEYu
YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsaW5lczFXcmFwIiksRi5hPQpwcGVuZCgiZyIpLmF0
dHIoImNsYXNzIiwibGluZXMyV3JhcCIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJiYXJz
MVdyYXA9CiIpLEYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJiYXJzMldyYXAiKSxGLmFwcGVu
ZCgiZyIpLmF0dHIoImNsYXNzIiwic3RhYz0KazFXcmFwIiksRi5hcHBlbmQoImciKS5hdHRyKCJj
bGFzcyIsInN0YWNrMldyYXAiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzPQoiLCJsZWdlbmRX
cmFwIik7dmFyIEk9M0RqLnNlbGVjdCgiZyIpO3MmJih4LndpZHRoKGsvMiksSS5zZWxlY3QoIi5s
ZWdlbmRXcmE9CnAiKS5kYXR1bShlLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5vcmlnaW5hbEtl
eT0zRGUub3JpZ2luYWxLZXk9M0Q9M0Q9M0R1bj0KZGVmaW5lZD9lLmtleTplLm9yaWdpbmFsS2V5
LGUua2V5PTNEZS5vcmlnaW5hbEtleSsoZS55QXhpcz0zRD0zRDE/IiI6IiAocmlnPQpodCBheGlz
KSIpLGV9KSkuY2FsbCh4KSx0LnRvcCE9M0R4LmhlaWdodCgpJiYodC50b3A9M0R4LmhlaWdodCgp
LEw9M0QoaXx8cGE9CnJzZUludCh1LnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktdC50b3AtdC5ib3R0
b20pLEkuc2VsZWN0KCIubGVnZW5kV3JhcCIpLmF0dD0KcigidHJhbnNmb3JtIiwidHJhbnNsYXRl
KCIray8yKyIsIisgLXQudG9wKyIpIikpLGQud2lkdGgoaykuaGVpZ2h0KEwpLmludGVyPQpwb2xh
dGUoIm1vbm90b25lIikuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8
blt0JW4ubGVuZ3RoXX09CikuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIWVbbl0uZGlzYWJs
ZWQmJmVbbl0ueUF4aXM9M0Q9M0QxJiZlW25dLnR5cGU9Cj0zRD0zRCJsaW5lIn0pKSx2LndpZHRo
KGspLmhlaWdodChMKS5pbnRlcnBvbGF0ZSgibW9ub3RvbmUiKS5jb2xvcihlLm1hcChmdT0KbmN0
aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fG5bdCVuLmxlbmd0aF19KS5maWx0ZXIoZnVuY3Rpb24o
dCxuKXtyZXR1cm4hZVtuPQpdLmRpc2FibGVkJiZlW25dLnlBeGlzPTNEPTNEMiYmZVtuXS50eXBl
PTNEPTNEImxpbmUifSkpLG0ud2lkdGgoaykuaGVpZ2h0KEw9CikuY29sb3IoZS5tYXAoZnVuY3Rp
b24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8blt0JW4ubGVuZ3RoXX0pLmZpbHRlcihmdW5jdGlvbj0K
KHQsbil7cmV0dXJuIWVbbl0uZGlzYWJsZWQmJmVbbl0ueUF4aXM9M0Q9M0QxJiZlW25dLnR5cGU9
M0Q9M0QiYmFyIn0pKSxnLndpPQpkdGgoaykuaGVpZ2h0KEwpLmNvbG9yKGUubWFwKGZ1bmN0aW9u
KGUsdCl7cmV0dXJuIGUuY29sb3J8fG5bdCVuLmxlbmd0aF19KS49CmZpbHRlcihmdW5jdGlvbih0
LG4pe3JldHVybiFlW25dLmRpc2FibGVkJiZlW25dLnlBeGlzPTNEPTNEMiYmZVtuXS50eXBlPTNE
PQo9M0QiYmFyIn0pKSx5LndpZHRoKGspLmhlaWdodChMKS5jb2xvcihlLm1hcChmdW5jdGlvbihl
LHQpe3JldHVybiBlLmNvbG9yfHw9Cm5bdCVuLmxlbmd0aF19KS5maWx0ZXIoZnVuY3Rpb24odCxu
KXtyZXR1cm4hZVtuXS5kaXNhYmxlZCYmZVtuXS55QXhpcz0zRD0zRD0KMSYmZVtuXS50eXBlPTNE
PTNEImFyZWEifSkpLGIud2lkdGgoaykuaGVpZ2h0KEwpLmNvbG9yKGUubWFwKGZ1bmN0aW9uKGUs
dCl7PQpyZXR1cm4gZS5jb2xvcnx8blt0JW4ubGVuZ3RoXX0pLmZpbHRlcihmdW5jdGlvbih0LG4p
e3JldHVybiFlW25dLmRpc2FibGVkJiY9CmVbbl0ueUF4aXM9M0Q9M0QyJiZlW25dLnR5cGU9M0Q9
M0QiYXJlYSJ9KSksSS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIj0KK3QubGVmdCsiLCIr
dC50b3ArIikiKTt2YXIgcT0zREkuc2VsZWN0KCIubGluZXMxV3JhcCIpLmRhdHVtKEEpLFI9M0RJ
LnNlbGVjPQp0KCIuYmFyczFXcmFwIikuZGF0dW0oTSksVT0zREkuc2VsZWN0KCIuc3RhY2sxV3Jh
cCIpLmRhdHVtKEQpLHo9M0RJLnNlbGVjdCg9CiIubGluZXMyV3JhcCIpLmRhdHVtKE8pLFc9M0RJ
LnNlbGVjdCgiLmJhcnMyV3JhcCIpLmRhdHVtKF8pLFg9M0RJLnNlbGVjdCgiLj0Kc3RhY2syV3Jh
cCIpLmRhdHVtKFApLFY9M0RELmxlbmd0aD9ELm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1
ZXN9KS5yZWR1PQpjZShmdW5jdGlvbihlLHQpe3JldHVybiBlLm1hcChmdW5jdGlvbihlLG4pe3Jl
dHVybnt4OmUueCx5OmUueSt0W25dLnl9fSl9KS49CmNvbmNhdChbe3g6MCx5OjB9XSk6W10sJD0z
RFAubGVuZ3RoP1AubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlc30pLnJlZD0KdWNlKGZ1
bmN0aW9uKGUsdCl7cmV0dXJuIGUubWFwKGZ1bmN0aW9uKGUsbil7cmV0dXJue3g6ZS54LHk6ZS55
K3Rbbl0ueX19KX0pPQouY29uY2F0KFt7eDowLHk6MH1dKTpbXTtoLmRvbWFpbihsfHxkMy5leHRl
bnQoZDMubWVyZ2UoSCkuY29uY2F0KFYpLGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGUueX0pKS5yYW5n
ZShbMCxMXSkscC5kb21haW4oY3x8ZDMuZXh0ZW50KGQzLm1lcmdlKEIpLmNvbmNhdCgkKT0KLGZ1
bmN0aW9uKGUpe3JldHVybiBlLnl9KSkucmFuZ2UoWzAsTF0pLGQueURvbWFpbihoLmRvbWFpbigp
KSxtLnlEb21haW4oaC5kPQpvbWFpbigpKSx5LnlEb21haW4oaC5kb21haW4oKSksdi55RG9tYWlu
KHAuZG9tYWluKCkpLGcueURvbWFpbihwLmRvbWFpbigpKSw9CmIueURvbWFpbihwLmRvbWFpbigp
KSxELmxlbmd0aCYmZDMudHJhbnNpdGlvbihVKS5jYWxsKHkpLFAubGVuZ3RoJiZkMy50cmFucz0K
aXRpb24oWCkuY2FsbChiKSxNLmxlbmd0aCYmZDMudHJhbnNpdGlvbihSKS5jYWxsKG0pLF8ubGVu
Z3RoJiZkMy50cmFuc2l0aW9uPQooVykuY2FsbChnKSxBLmxlbmd0aCYmZDMudHJhbnNpdGlvbihx
KS5jYWxsKGQpLE8ubGVuZ3RoJiZkMy50cmFuc2l0aW9uKHopLmM9CmFsbCh2KSx3LnRpY2tzKGsv
MTAwKS50aWNrU2l6ZSgtTCwwKSxJLnNlbGVjdCgiLnguYXhpcyIpLmF0dHIoInRyYW5zZm9ybSIs
Ij0KdHJhbnNsYXRlKDAsIitMKyIpIiksZDMudHJhbnNpdGlvbihJLnNlbGVjdCgiLnguYXhpcyIp
KS5jYWxsKHcpLEUudGlja3MoTC8zPQo2KS50aWNrU2l6ZSgtaywwKSxkMy50cmFuc2l0aW9uKEku
c2VsZWN0KCIueTEuYXhpcyIpKS5jYWxsKEUpLFMudGlja3MoTC8zNik9Ci50aWNrU2l6ZSgtayww
KSxkMy50cmFuc2l0aW9uKEkuc2VsZWN0KCIueTIuYXhpcyIpKS5jYWxsKFMpLEkuc2VsZWN0KCIu
eTIuYT0KeGlzIikuc3R5bGUoIm9wYWNpdHkiLEIubGVuZ3RoPzE6MCkuYXR0cigidHJhbnNmb3Jt
IiwidHJhbnNsYXRlKCIrYS5yYW5nZSgpPQpbMV0rIiwwKSIpLHguZGlzcGF0Y2gub24oInN0YXRl
Q2hhbmdlIixmdW5jdGlvbihlKXtDLnVwZGF0ZSgpfSksVC5vbigidG9vbHQ9CmlwU2hvdyIsZnVu
Y3Rpb24oZSl7byYmTihlLGYucGFyZW50Tm9kZSl9KX0pLEN9dmFyIHQ9M0R7dG9wOjMwLHJpZ2h0
OjIwLGJvdD0KdG9tOjUwLGxlZnQ6NjB9LG49M0RkMy5zY2FsZS5jYXRlZ29yeTIwKCkucmFuZ2Uo
KSxyPTNEbnVsbCxpPTNEbnVsbCxzPTNEITAsPQpvPTNEITAsdT0zRGZ1bmN0aW9uKGUsdCxuLHIs
aSl7cmV0dXJuIjxoMz4iK2UrIjwvaDM+IisiPHA+IituKyIgYXQgIit0KyI8L3A9Cj4ifSxhLGYs
bCxjLGE9M0RkMy5zY2FsZS5saW5lYXIoKSxoPTNEZDMuc2NhbGUubGluZWFyKCkscD0zRGQzLnNj
YWxlLmxpbmVhcj0KKCksZD0zRGUubW9kZWxzLmxpbmUoKS55U2NhbGUoaCksdj0zRGUubW9kZWxz
LmxpbmUoKS55U2NhbGUocCksbT0zRGUubW9kZWxzPQoubXVsdGlCYXIoKS5zdGFja2VkKCExKS55
U2NhbGUoaCksZz0zRGUubW9kZWxzLm11bHRpQmFyKCkuc3RhY2tlZCghMSkueVNjYWw9CmUocCks
eT0zRGUubW9kZWxzLnN0YWNrZWRBcmVhKCkueVNjYWxlKGgpLGI9M0RlLm1vZGVscy5zdGFja2Vk
QXJlYSgpLnlTY2FsZT0KKHApLHc9M0RlLm1vZGVscy5heGlzKCkuc2NhbGUoYSkub3JpZW50KCJi
b3R0b20iKS50aWNrUGFkZGluZyg1KSxFPTNEZS5tb2RlPQpscy5heGlzKCkuc2NhbGUoaCkub3Jp
ZW50KCJsZWZ0IiksUz0zRGUubW9kZWxzLmF4aXMoKS5zY2FsZShwKS5vcmllbnQoInJpZ2g9CnQi
KSx4PTNEZS5tb2RlbHMubGVnZW5kKCkuaGVpZ2h0KDMwKSxUPTNEZDMuZGlzcGF0Y2goInRvb2x0
aXBTaG93IiwidG9vbHRpcD0KSGlkZSIpLE49M0RmdW5jdGlvbih0LG4pe3ZhciByPTNEdC5wb3Nb
MF0rKG4ub2Zmc2V0TGVmdHx8MCksaT0zRHQucG9zWzFdKyhuPQoub2Zmc2V0VG9wfHwwKSxzPTNE
dy50aWNrRm9ybWF0KCkoZC54KCkodC5wb2ludCx0LnBvaW50SW5kZXgpKSxvPTNEKHQuc2VyaWU9
CnMueUF4aXM9M0Q9M0QyP1M6RSkudGlja0Zvcm1hdCgpKGQueSgpKHQucG9pbnQsdC5wb2ludElu
ZGV4KSksYT0zRHUodC5zZXJpZT0Kcy5rZXkscyxvLHQsQyk7ZS50b29sdGlwLnNob3coW3IsaV0s
YSx1bmRlZmluZWQsdW5kZWZpbmVkLG4ub2Zmc2V0UGFyZW50KX07PQpyZXR1cm4gZC5kaXNwYXRj
aC5vbigiZWxlbWVudE1vdXNlb3Zlci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBv
c1s9CjBdK3QubGVmdCxlLnBvc1sxXSt0LnRvcF0sVC50b29sdGlwU2hvdyhlKX0pLGQuZGlzcGF0
Y2gub24oImVsZW1lbnRNb3VzZW91dD0KLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe1QudG9vbHRpcEhp
ZGUoZSl9KSx2LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvPQpvbHRpcCIsZnVuY3Rp
b24oZSl7ZS5wb3M9M0RbZS5wb3NbMF0rdC5sZWZ0LGUucG9zWzFdK3QudG9wXSxULnRvb2x0aXBT
aG93KGU9Cil9KSx2LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rp
b24oZSl7VC50b29sdGlwSGlkZShlKX0pLD0KbS5kaXNwYXRjaC5vbigiZWxlbWVudE1vdXNlb3Zl
ci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXSt0LmxlPQpmdCxlLnBvc1sx
XSt0LnRvcF0sVC50b29sdGlwU2hvdyhlKX0pLG0uZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91
dC50b29sdGk9CnAiLGZ1bmN0aW9uKGUpe1QudG9vbHRpcEhpZGUoZSl9KSxnLmRpc3BhdGNoLm9u
KCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLD0KZnVuY3Rpb24oZSl7ZS5wb3M9M0RbZS5wb3Nb
MF0rdC5sZWZ0LGUucG9zWzFdK3QudG9wXSxULnRvb2x0aXBTaG93KGUpfSksZy5kPQppc3BhdGNo
Lm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7VC50b29sdGlwSGlkZShl
KX0pLHkuZGlzcGE9CnRjaC5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9uKGUpe2lmKCFNYXRoLnJv
dW5kKHkueSgpKGUucG9pbnQpKjEwMCkpcmV0dXJuID0Kc2V0VGltZW91dChmdW5jdGlvbigpe2Qz
LnNlbGVjdEFsbCgiLnBvaW50LmhvdmVyIikuY2xhc3NlZCgiaG92ZXIiLCExKX0sMCksPQohMTtl
LnBvcz0zRFtlLnBvc1swXSt0LmxlZnQsZS5wb3NbMV0rdC50b3BdLFQudG9vbHRpcFNob3coZSl9
KSx5LmRpc3BhdGNoLm89Cm4oInRvb2x0aXBIaWRlIixmdW5jdGlvbihlKXtULnRvb2x0aXBIaWRl
KGUpfSksYi5kaXNwYXRjaC5vbigidG9vbHRpcFNob3ciLD0KZnVuY3Rpb24oZSl7aWYoIU1hdGgu
cm91bmQoYi55KCkoZS5wb2ludCkqMTAwKSlyZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbigpPQp7
ZDMuc2VsZWN0QWxsKCIucG9pbnQuaG92ZXIiKS5jbGFzc2VkKCJob3ZlciIsITEpfSwwKSwhMTtl
LnBvcz0zRFtlLnBvc1swXSs9CnQubGVmdCxlLnBvc1sxXSt0LnRvcF0sVC50b29sdGlwU2hvdyhl
KX0pLGIuZGlzcGF0Y2gub24oInRvb2x0aXBIaWRlIixmdW5jdD0KaW9uKGUpe1QudG9vbHRpcEhp
ZGUoZSl9KSxkLmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9u
PQooZSl7ZS5wb3M9M0RbZS5wb3NbMF0rdC5sZWZ0LGUucG9zWzFdK3QudG9wXSxULnRvb2x0aXBT
aG93KGUpfSksZC5kaXNwYXRjaC49Cm9uKCJlbGVtZW50TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rp
b24oZSl7VC50b29sdGlwSGlkZShlKX0pLHYuZGlzcGF0Y2gub24oIj0KZWxlbWVudE1vdXNlb3Zl
ci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBvcz0zRFtlLnBvc1swXSt0LmxlZnQsZS5wb3NbMV0r
dC50PQpvcF0sVC50b29sdGlwU2hvdyhlKX0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91
dC50b29sdGlwIixmdW5jdGlvbihlKXs9ClQudG9vbHRpcEhpZGUoZSl9KSxULm9uKCJ0b29sdGlw
SGlkZSIsZnVuY3Rpb24oKXtvJiZlLnRvb2x0aXAuY2xlYW51cCgpfSksQz0KLmRpc3BhdGNoPTNE
VCxDLmxpbmVzMT0zRGQsQy5saW5lczI9M0R2LEMuYmFyczE9M0RtLEMuYmFyczI9M0RnLEMuc3Rh
Y2sxPTNEPQp5LEMuc3RhY2syPTNEYixDLnhBeGlzPTNEdyxDLnlBeGlzMT0zREUsQy55QXhpczI9
M0RTLEMub3B0aW9ucz0zRGUudXRpbHMub3A9CnRpb25zRnVuYy5iaW5kKEMpLEMueD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhnZXRYPTNEZSxkLngoZT0KKSxtLngoZSks
Qyk6Z2V0WH0sQy55PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGdldFk9
M0RlLGQueShlPQopLG0ueShlKSxDKTpnZXRZfSxDLnlEb21haW4xPTNEZnVuY3Rpb24oZSl7cmV0
dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLEM9Cik6bH0sQy55RG9tYWluMj0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSxDKTpjfSxDLm1hcmdpbj0KPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9M0RlLEMpOnR9LEMud2lkdGg9M0Rm
dW5jdGlvbihlKXtyPQpldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZSxDKTpyfSxDLmhlaWdo
dD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHM9Ci5sZW5ndGg/KGk9M0RlLEMpOml9LEMu
Y29sb3I9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGUseD0KLmNv
bG9yKGUpLEMpOm59LEMuc2hvd0xlZ2VuZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhzPTNEZSxDPQopOnN9LEMudG9vbHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8obz0zRGUsQyk6b30sQy50b29sdGk9CnBDb250ZW50PTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RlLEMpOnV9LEN9LGUubW9kZWxzLm9obD0K
Y0Jhcj0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24geChlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUp
e3ZhciBnPTNEbi10LmxlZnQtPQp0LnJpZ2h0LHg9M0RyLXQudG9wLXQuYm90dG9tLFQ9M0RkMy5z
ZWxlY3QodGhpcyk7cy5kb21haW4oeXx8ZDMuZXh0ZW50KGVbMF09Ci52YWx1ZXMubWFwKHUpLmNv
bmNhdChwKSkpLHY/cy5yYW5nZSh3fHxbZyouNS9lWzBdLnZhbHVlcy5sZW5ndGgsZyooZVswXS52
YT0KbHVlcy5sZW5ndGgtLjUpL2VbMF0udmFsdWVzLmxlbmd0aF0pOnMucmFuZ2Uod3x8WzAsZ10p
LG8uZG9tYWluKGJ8fFtkMy5taW4oPQplWzBdLnZhbHVlcy5tYXAoaCkuY29uY2F0KGQpKSxkMy5t
YXgoZVswXS52YWx1ZXMubWFwKGMpLmNvbmNhdChkKSldKS5yYW5nZSg9CkV8fFt4LDBdKSxzLmRv
bWFpbigpWzBdPTNEPTNEPTNEcy5kb21haW4oKVsxXSYmKHMuZG9tYWluKClbMF0/cy5kb21haW4o
W3MuZD0Kb21haW4oKVswXS1zLmRvbWFpbigpWzBdKi4wMSxzLmRvbWFpbigpWzFdK3MuZG9tYWlu
KClbMV0qLjAxXSk6cy5kb21haW4oWy0xPQosMV0pKSxvLmRvbWFpbigpWzBdPTNEPTNEPTNEby5k
b21haW4oKVsxXSYmKG8uZG9tYWluKClbMF0/by5kb21haW4oW28uZG9tYWk9Cm4oKVswXStvLmRv
bWFpbigpWzBdKi4wMSxvLmRvbWFpbigpWzFdLW8uZG9tYWluKClbMV0qLjAxXSk6by5kb21haW4o
Wy0xLDFdKT0KKTt2YXIgTj0zRGQzLnNlbGVjdCh0aGlzKS5zZWxlY3RBbGwoImcubnYtd3JhcC5u
di1vaGxjQmFyIikuZGF0YShbZVswXS52YWx1PQplc10pLEM9M0ROLmVudGVyKCkuYXBwZW5kKCJn
IikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtb2hsY0JhciIpLGs9M0Q9CkMuYXBwZW5k
KCJkZWZzIiksTD0zREMuYXBwZW5kKCJnIiksQT0zRE4uc2VsZWN0KCJnIik7TC5hcHBlbmQoImci
KS5hdHRyKCJjbD0KYXNzIiwibnYtdGlja3MiKSxOLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0
ZSgiK3QubGVmdCsiLCIrdC50b3ArIikiKSxULm9uPQooImNsaWNrIixmdW5jdGlvbihlLHQpe1Mu
Y2hhcnRDbGljayh7ZGF0YTplLGluZGV4OnQscG9zOmQzLmV2ZW50LGlkOml9KX0pLGs9Ci5hcHBl
bmQoImNsaXBQYXRoIikuYXR0cigiaWQiLCJudi1jaGFydC1jbGlwLXBhdGgtIitpKS5hcHBlbmQo
InJlY3QiKSxOLnNlbD0KZWN0KCIjbnYtY2hhcnQtY2xpcC1wYXRoLSIraSsiIHJlY3QiKS5hdHRy
KCJ3aWR0aCIsZykuYXR0cigiaGVpZ2h0Iix4KSxBLmF0PQp0cigiY2xpcC1wYXRoIixtPyJ1cmwo
I252LWNoYXJ0LWNsaXAtcGF0aC0iK2krIikiOiIiKTt2YXIgTz0zRE4uc2VsZWN0KCIubnY9Ci10
aWNrcyIpLnNlbGVjdEFsbCgiLm52LXRpY2siKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHVybiBlfSk7
Ty5leGl0KCkucmVtb3ZlKD0KKTt2YXIgTT0zRE8uZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRy
KCJjbGFzcyIsZnVuY3Rpb24oZSx0LG4pe3JldHVybihmKGUsPQp0KT5sKGUsdCk/Im52LXRpY2sg
bmVnYXRpdmUiOiJudi10aWNrIHBvc2l0aXZlIikrIiBudi10aWNrLSIrbisiLSIrdH0pLmF0dHI9
CigiZCIsZnVuY3Rpb24odCxuKXt2YXIgcj0zRGcvZVswXS52YWx1ZXMubGVuZ3RoKi45O3JldHVy
biJtMCwwbDAsIisobyhmKHQsbj0KKSktbyhjKHQsbikpKSsibCIrIC1yLzIrIiwwbCIrci8yKyIs
MGwwLCIrKG8oaCh0LG4pKS1vKGYodCxuKSkpKyJsMCwiKyhvKGwoPQp0LG4pKS1vKGgodCxuKSkp
KyJsIityLzIrIiwwbCIrIC1yLzIrIiwweiJ9KS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUs
dCk9CntyZXR1cm4idHJhbnNsYXRlKCIrcyh1KGUsdCkpKyIsIitvKGMoZSx0KSkrIikifSkub24o
Im1vdXNlb3ZlciIsZnVuY3Rpb24odD0KLG4pe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJob3Zl
ciIsITApLFMuZWxlbWVudE1vdXNlb3Zlcih7cG9pbnQ6dCxzZXJpZXM6PQplWzBdLHBvczpbcyh1
KHQsbikpLG8oYSh0LG4pKV0scG9pbnRJbmRleDpuLHNlcmllc0luZGV4OjAsZTpkMy5ldmVudH0p
fSkub249CigibW91c2VvdXQiLGZ1bmN0aW9uKHQsbil7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQo
ImhvdmVyIiwhMSksUy5lbGVtZW50TW91cz0KZW91dCh7cG9pbnQ6dCxzZXJpZXM6ZVswXSxwb2lu
dEluZGV4Om4sc2VyaWVzSW5kZXg6MCxlOmQzLmV2ZW50fSl9KS5vbigiY2xpPQpjayIsZnVuY3Rp
b24oZSx0KXtTLmVsZW1lbnRDbGljayh7dmFsdWU6YShlLHQpLGRhdGE6ZSxpbmRleDp0LHBvczpb
cyh1KGUsdCk9CiksbyhhKGUsdCkpXSxlOmQzLmV2ZW50LGlkOml9KSxkMy5ldmVudC5zdG9wUHJv
cGFnYXRpb24oKX0pLm9uKCJkYmxjbGljayIsZj0KdW5jdGlvbihlLHQpe1MuZWxlbWVudERibENs
aWNrKHt2YWx1ZTphKGUsdCksZGF0YTplLGluZGV4OnQscG9zOltzKHUoZSx0KSksPQpvKGEoZSx0
KSldLGU6ZDMuZXZlbnQsaWQ6aX0pLGQzLmV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfSk7Ty5hdHRy
KCJjbGFzcyIsZnU9Cm5jdGlvbihlLHQsbil7cmV0dXJuKGYoZSx0KT5sKGUsdCk/Im52LXRpY2sg
bmVnYXRpdmUiOiJudi10aWNrIHBvc2l0aXZlIikrIj0KIG52LXRpY2stIituKyItIit0fSksZDMu
dHJhbnNpdGlvbihPKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUsdCl7cmV0dXJuPQoidHJh
bnNsYXRlKCIrcyh1KGUsdCkpKyIsIitvKGMoZSx0KSkrIikifSkuYXR0cigiZCIsZnVuY3Rpb24o
dCxuKXt2YXIgcj0zRGc9Ci9lWzBdLnZhbHVlcy5sZW5ndGgqLjk7cmV0dXJuIm0wLDBsMCwiKyhv
KGYodCxuKSktbyhjKHQsbikpKSsibCIrIC1yLzIrIiwwbD0KIityLzIrIiwwbDAsIisobyhoKHQs
bikpLW8oZih0LG4pKSkrImwwLCIrKG8obCh0LG4pKS1vKGgodCxuKSkpKyJsIityLzIrIiwwPQps
IisgLXIvMisiLDB6In0pfSkseH12YXIgdD0zRHt0b3A6MCxyaWdodDowLGJvdHRvbTowLGxlZnQ6
MH0sbj0zRDk2MCxyPTNENTA9CjAsaT0zRE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxZTQpLHM9
M0RkMy5zY2FsZS5saW5lYXIoKSxvPTNEZDMuc2NhbGUubGluZT0KYXIoKSx1PTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGUueH0sYT0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnl9LGY9M0RmdW5jdGlvbihl
PQope3JldHVybiBlLm9wZW59LGw9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS5jbG9zZX0sYz0zRGZ1
bmN0aW9uKGUpe3JldHVybiBlLmg9CmlnaH0saD0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLmxvd30s
cD0zRFtdLGQ9M0RbXSx2PTNEITEsbT0zRCEwLGc9M0RlLnV0aWxzLj0KZGVmYXVsdENvbG9yKCks
eSxiLHcsRSxTPTNEZDMuZGlzcGF0Y2goImNoYXJ0Q2xpY2siLCJlbGVtZW50Q2xpY2siLCJlbGVt
ZW50PQpEYmxDbGljayIsImVsZW1lbnRNb3VzZW92ZXIiLCJlbGVtZW50TW91c2VvdXQiKTtyZXR1
cm4geC5kaXNwYXRjaD0zRFMseC5vcHQ9CmlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJpbmQo
eCkseC54PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndD0KaD8odT0zRGUseCk6
dX0seC55PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLHgpOmF9
LHgub3BlPQpuPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9M0RlLHgp
OmZ9LHguY2xvc2U9M0RmdW5jdGlvbihlKXs9CnJldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPTNE
ZSx4KTpsfSx4LmhpZ2g9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLj0KbGVuZ3RoPyhj
PTNEZSx4KTpjfSx4Lmxvdz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyho
PTNEZSx4KTpoPQp9LHgubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHQudG9wPTNEdHlwZW9mIGUudG9wIT0zRCI9CnVuZGVmaW5lZCI/ZS50b3A6dC50b3AsdC5y
aWdodD0zRHR5cGVvZiBlLnJpZ2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaT0KZ2h0LHQu
Ym90dG9tPTNEdHlwZW9mIGUuYm90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9t
LHQubGVmdD0zRHR5PQpwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmxlZnQ6dC5sZWZ0LHgp
OnR9LHgud2lkdGg9M0RmdW5jdGlvbihlKXtyZXR1cm49CiBhcmd1bWVudHMubGVuZ3RoPyhuPTNE
ZSx4KTpufSx4LmhlaWdodD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZz0KdGg/
KHI9M0RlLHgpOnJ9LHgueFNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KHM9M0RlLHgpOnN9PQoseC55U2NhbGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8obz0zRGUseCk6b30seC54RG9tYWluPTNEZnU9Cm5jdGlvbihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oeT0zRGUseCk6eX0seC55RG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dT0K
cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0zRGUseCk6Yn0seC54UmFuZ2U9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlPQpuZ3RoPyh3PTNEZSx4KTp3fSx4LnlSYW5nZT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPTNEZSx4KTo9CkV9LHguZm9yY2VYPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLHgpOnB9LHguZm9yY2VZPTNE
Zj0KdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGUseCk6ZH0seC5wYWRE
YXRhPTNEZnVuY3Rpb24oZSl7cmV0PQp1cm4gYXJndW1lbnRzLmxlbmd0aD8odj0zRGUseCk6dn0s
eC5jbGlwRWRnZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHM9Ci5sZW5ndGg/KG09M0Rl
LHgpOm19LHguY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0z
RGUudT0KdGlscy5nZXRDb2xvcih0KSx4KTpnfSx4LmlkPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGk9M0RlLHgpPQo6aX0seH0sZS5tb2RlbHMucGllPTNEZnVuY3Rpb24o
KXtmdW5jdGlvbiBTKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7ZnU9Cm5jdGlvbiBxKGUp
e3ZhciB0PTNEKGUuc3RhcnRBbmdsZStlLmVuZEFuZ2xlKSo5MC9NYXRoLlBJLTkwO3JldHVybiB0
PjkwP3QtMT0KODA6dH1mdW5jdGlvbiBSKGUpe2UuZW5kQW5nbGU9M0Rpc05hTihlLmVuZEFuZ2xl
KT8wOmUuZW5kQW5nbGUsZS5zdGFydEFuZ2xlPQo9M0Rpc05hTihlLnN0YXJ0QW5nbGUpPzA6ZS5z
dGFydEFuZ2xlLG18fChlLmlubmVyUmFkaXVzPTNEMCk7dmFyIHQ9M0RkMy5pbnQ9CmVycG9sYXRl
KHRoaXMuX2N1cnJlbnQsZSk7cmV0dXJuIHRoaXMuX2N1cnJlbnQ9M0R0KDApLGZ1bmN0aW9uKGUp
e3JldHVybiBBKD0KdChlKSl9fWZ1bmN0aW9uIFUoZSl7ZS5pbm5lclJhZGl1cz0zRDA7dmFyIHQ9
M0RkMy5pbnRlcnBvbGF0ZSh7c3RhcnRBbmdsZTowPQosZW5kQW5nbGU6MH0sZSk7cmV0dXJuIGZ1
bmN0aW9uKGUpe3JldHVybiBBKHQoZSkpfX12YXIgbz0zRG4tdC5sZWZ0LXQucmlnaHQ9CixmPTNE
ci10LnRvcC10LmJvdHRvbSxTPTNETWF0aC5taW4obyxmKS8yLHg9M0RTLVMvNSxUPTNEZDMuc2Vs
ZWN0KHRoaXMpLE49Cj0zRFQuc2VsZWN0QWxsKCIubnYtd3JhcC5udi1waWUiKS5kYXRhKGUpLEM9
M0ROLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiYz0KbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1w
aWUgbnYtY2hhcnQtIit1KSxrPTNEQy5hcHBlbmQoImciKSxMPTNETi5zZWxlY3QoImciPQopO2su
YXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1waWUiKSxrLmFwcGVuZCgiZyIpLmF0dHIoImNs
YXNzIiwibnYtcGllTGE9CmJlbHMiKSxOLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3Qu
bGVmdCsiLCIrdC50b3ArIikiKSxMLnNlbGVjdCgiLm52LT0KcGllIikuYXR0cigidHJhbnNmb3Jt
IiwidHJhbnNsYXRlKCIrby8yKyIsIitmLzIrIikiKSxMLnNlbGVjdCgiLm52LXBpZUxhYmVsPQpz
IikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrby8yKyIsIitmLzIrIikiKSxULm9uKCJj
bGljayIsZnVuY3Rpb24oZSw9CnQpe0UuY2hhcnRDbGljayh7ZGF0YTplLGluZGV4OnQscG9zOmQz
LmV2ZW50LGlkOnV9KX0pO3ZhciBBPTNEZDMuc3ZnLmFyYygpLj0Kb3V0ZXJSYWRpdXMoeCk7eSYm
QS5zdGFydEFuZ2xlKHkpLGImJkEuZW5kQW5nbGUoYiksbSYmQS5pbm5lclJhZGl1cyhTKncpO3Zh
PQpyIE89M0RkMy5sYXlvdXQucGllKCkuc29ydChudWxsKS52YWx1ZShmdW5jdGlvbihlKXtyZXR1
cm4gZS5kaXNhYmxlZD8wOnMoZSk9Cn0pLE09M0ROLnNlbGVjdCgiLm52LXBpZSIpLnNlbGVjdEFs
bCgiLm52LXNsaWNlIikuZGF0YShPKSxfPTNETi5zZWxlY3QoIi5udj0KLXBpZUxhYmVscyIpLnNl
bGVjdEFsbCgiLm52LWxhYmVsIikuZGF0YShPKTtNLmV4aXQoKS5yZW1vdmUoKSxfLmV4aXQoKS5y
ZW1vPQp2ZSgpO3ZhciBEPTNETS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYt
c2xpY2UiKS5vbigibW91c2VvdmVyIiw9CmZ1bmN0aW9uKGUsdCl7ZDMuc2VsZWN0KHRoaXMpLmNs
YXNzZWQoImhvdmVyIiwhMCksRS5lbGVtZW50TW91c2VvdmVyKHtsYWJlbD0KOmkoZS5kYXRhKSx2
YWx1ZTpzKGUuZGF0YSkscG9pbnQ6ZS5kYXRhLHBvaW50SW5kZXg6dCxwb3M6W2QzLmV2ZW50LnBh
Z2VYLGQzPQouZXZlbnQucGFnZVldLGlkOnV9KX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oZSx0
KXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCg9CiJob3ZlciIsITEpLEUuZWxlbWVudE1vdXNlb3V0
KHtsYWJlbDppKGUuZGF0YSksdmFsdWU6cyhlLmRhdGEpLHBvaW50OmUuZGF0YT0KLGluZGV4OnQs
aWQ6dX0pfSkub24oImNsaWNrIixmdW5jdGlvbihlLHQpe0UuZWxlbWVudENsaWNrKHtsYWJlbDpp
KGUuZGF0YSksPQp2YWx1ZTpzKGUuZGF0YSkscG9pbnQ6ZS5kYXRhLGluZGV4OnQscG9zOmQzLmV2
ZW50LGlkOnV9KSxkMy5ldmVudC5zdG9wUHJvcGE9CmdhdGlvbigpfSkub24oImRibGNsaWNrIixm
dW5jdGlvbihlLHQpe0UuZWxlbWVudERibENsaWNrKHtsYWJlbDppKGUuZGF0YSksdj0KYWx1ZTpz
KGUuZGF0YSkscG9pbnQ6ZS5kYXRhLGluZGV4OnQscG9zOmQzLmV2ZW50LGlkOnV9KSxkMy5ldmVu
dC5zdG9wUHJvcGFnPQphdGlvbigpfSk7TS5hdHRyKCJmaWxsIixmdW5jdGlvbihlLHQpe3JldHVy
biBhKGUsdCl9KS5hdHRyKCJzdHJva2UiLGZ1bmN0aW89Cm4oZSx0KXtyZXR1cm4gYShlLHQpfSk7
dmFyIFA9M0RELmFwcGVuZCgicGF0aCIpLmVhY2goZnVuY3Rpb24oZSl7dGhpcy5fY3Vycj0KZW50
PTNEZX0pO00uc2VsZWN0KCJwYXRoIikuYXR0cigiZCIsQSk7aWYobCl7dmFyIEg9M0RkMy5zdmcu
YXJjKCkuaW5uZXJSYWRpPQp1cygwKTtjJiYoSD0zREEpLGgmJihIPTNEZDMuc3ZnLmFyYygpLm91
dGVyUmFkaXVzKEEub3V0ZXJSYWRpdXMoKSkpLF8uZW50ZXI9CigpLmFwcGVuZCgiZyIpLmNsYXNz
ZWQoIm52LWxhYmVsIiwhMCkuZWFjaChmdW5jdGlvbihlLHQpe3ZhciBuPTNEZDMuc2VsZWN0KD0K
dGhpcyk7bi5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUpe2lmKGcpe2Uub3V0ZXJSYWRpdXM9
M0R4KzEwLGUuaW5uZXJSYWRpPQp1cz0zRHgrMTU7dmFyIHQ9M0QoZS5zdGFydEFuZ2xlK2UuZW5k
QW5nbGUpLzIqKDE4MC9NYXRoLlBJKTtyZXR1cm4oZS5zdGFydEE9Cm5nbGUrZS5lbmRBbmdsZSkv
MjxNYXRoLlBJP3QtPTNEOTA6dCs9M0Q5MCwidHJhbnNsYXRlKCIrSC5jZW50cm9pZChlKSsiKSBy
bz0KdGF0ZSgiK3QrIikifXJldHVybiBlLm91dGVyUmFkaXVzPTNEUysxMCxlLmlubmVyUmFkaXVz
PTNEUysxNSwidHJhbnNsYXRlKCIrPQpILmNlbnRyb2lkKGUpKyIpIn0pLG4uYXBwZW5kKCJyZWN0
Iikuc3R5bGUoInN0cm9rZSIsIiNmZmYiKS5zdHlsZSgiZmlsbCIsIiM9CmZmZiIpLmF0dHIoInJ4
IiwzKS5hdHRyKCJyeSIsMyksbi5hcHBlbmQoInRleHQiKS5zdHlsZSgidGV4dC1hbmNob3IiLGc/
KGUucz0KdGFydEFuZ2xlK2UuZW5kQW5nbGUpLzI8TWF0aC5QST8ic3RhcnQiOiJlbmQiOiJtaWRk
bGUiKS5zdHlsZSgiZmlsbCIsIiMwMDAiPQopfSk7dmFyIEI9M0R7fSxqPTNEMTQsRj0zRDE0MCxJ
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGguZmxvb3IoZVswXS9GKSpGKyI9CiwiK01hdGguZmxv
b3IoZVsxXS9qKSpqfTtfLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oZSl7aWYoZyl7ZS5vdXRl
clJhZGl1cz0KPTNEeCsxMCxlLmlubmVyUmFkaXVzPTNEeCsxNTt2YXIgdD0zRChlLnN0YXJ0QW5n
bGUrZS5lbmRBbmdsZSkvMiooMTgwL01hdGguPQpQSSk7cmV0dXJuKGUuc3RhcnRBbmdsZStlLmVu
ZEFuZ2xlKS8yPE1hdGguUEk/dC09M0Q5MDp0Kz0zRDkwLCJ0cmFuc2xhdGUoIis9CkguY2VudHJv
aWQoZSkrIikgcm90YXRlKCIrdCsiKSJ9ZS5vdXRlclJhZGl1cz0zRFMrMTAsZS5pbm5lclJhZGl1
cz0zRFMrMTU7dj0KYXIgbj0zREguY2VudHJvaWQoZSkscj0zREkobik7cmV0dXJuIEJbcl0mJihu
WzFdLT0zRGopLEJbSShuKV09M0QhMCwidHJhbnNsPQphdGUoIituKyIpIn0pLF8uc2VsZWN0KCIu
bnYtbGFiZWwgdGV4dCIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsZz8oZC5zdGFydEFuZ2w9CmUrZC5l
bmRBbmdsZSkvMjxNYXRoLlBJPyJzdGFydCI6ImVuZCI6Im1pZGRsZSIpLnRleHQoZnVuY3Rpb24o
ZSx0KXt2YXIgbj0zRD0KKGUuZW5kQW5nbGUtZS5zdGFydEFuZ2xlKS8oMipNYXRoLlBJKSxyPTNE
e2tleTppKGUuZGF0YSksdmFsdWU6cyhlLmRhdGEpLHBlPQpyY2VudDpkMy5mb3JtYXQoIiUiKShu
KX07cmV0dXJuIGUudmFsdWUmJm4+dj9yW3BdOiIifSl9fSksU312YXIgdD0zRHt0b3A6MCw9CnJp
Z2h0OjAsYm90dG9tOjAsbGVmdDowfSxuPTNENTAwLHI9M0Q1MDAsaT0zRGZ1bmN0aW9uKGUpe3Jl
dHVybiBlLnh9LHM9M0RmdT0KbmN0aW9uKGUpe3JldHVybiBlLnl9LG89M0RmdW5jdGlvbihlKXty
ZXR1cm4gZS5kZXNjcmlwdGlvbn0sdT0zRE1hdGguZmxvb3IoPQpNYXRoLnJhbmRvbSgpKjFlNCks
YT0zRGUudXRpbHMuZGVmYXVsdENvbG9yKCksZj0zRGQzLmZvcm1hdCgiLC4yZiIpLGw9M0QhMCw9
CmM9M0QhMCxoPTNEITEscD0zRCJrZXkiLHY9M0QuMDIsbT0zRCExLGc9M0QhMSx5PTNEITEsYj0z
RCExLHc9M0QuNSxFPTNEZDMuZD0KaXNwYXRjaCgiY2hhcnRDbGljayIsImVsZW1lbnRDbGljayIs
ImVsZW1lbnREYmxDbGljayIsImVsZW1lbnRNb3VzZW92ZXIiLCJlPQpsZW1lbnRNb3VzZW91dCIp
O3JldHVybiBTLmRpc3BhdGNoPTNERSxTLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJp
bmQ9CihTKSxTLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0
LnRvcD0zRHR5cGVvZiBlLnRvcCE9Cj0zRCJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQucmlnaHQ9
M0R0eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0Oj0KdC5yaWdodCx0LmJvdHRv
bT0zRHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHRvbSx0Lmxl
ZnQ9Cj0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxTKTp0fSxT
LndpZHRoPTNEZnVuY3Rpb24oZSl7cj0KZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGUsUyk6
bn0sUy5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzPQoubGVuZ3RoPyhyPTNE
ZSxTKTpyfSxTLnZhbHVlcz0zRGZ1bmN0aW9uKHQpe3JldHVybiBlLmxvZygicGllLnZhbHVlcygp
IGlzIG49Cm8gbG9uZ2VyIHN1cHBvcnRlZC4iKSxTfSxTLng9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oaT0zRGUsUz0KKTppfSxTLnk9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8ocz0zRGQzLmZ1bmN0b3IoZSksUyk6c30sUy5kPQplc2NyaXB0aW9u
PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89M0RlLFMpOm99LFMuc2hv
d0xhYmVscz0KPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9M0RlLFMp
Omx9LFMubGFiZWxTdW5iZWFtTGF5b3V0PTNEPQpmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oZz0zRGUsUyk6Z30sUy5kb251dExhYmVsc091dHNpZGU9M0RmdW49CmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxTKTpofSxTLnBpZUxhYmVsc091dHNpZGU9
M0RmdW5jdGlvbj0KKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSxTKTpjfSxTLmxh
YmVsVHlwZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhPQpyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLHA9
M0RwfHwia2V5IixTKTpwfSxTLmRvbnV0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3U9Cm1lbnRz
Lmxlbmd0aD8obT0zRGUsUyk6bX0sUy5kb251dFJhdGlvPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndD0KaD8odz0zRGUsUyk6d30sUy5zdGFydEFuZ2xlPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9M0RlLFMpPQo6eX0sUy5lbmRBbmdsZT0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhiPTNEZSxTKTpifSxTLmlkPTNEZnU9Cm5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT0zRGUsUyk6dX0sUy5jb2xvcj0zRGZ1
bmN0aW9uKHQpe3JldHVybj0KIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RlLnV0aWxzLmdldENvbG9y
KHQpLFMpOmF9LFMudmFsdWVGb3JtYXQ9M0RmdW5jdGlvbihlPQope3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhmPTNEZSxTKTpmfSxTLmxhYmVsVGhyZXNob2xkPTNEZnVuY3Rpb24oZSl7cmV0dXI9
Cm4gYXJndW1lbnRzLmxlbmd0aD8odj0zRGUsUyk6dn0sU30sZS5tb2RlbHMucGllQ2hhcnQ9M0Rm
dW5jdGlvbigpe2Z1bmN0aW9uID0KdihlKXtyZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciB1
PTNEZDMuc2VsZWN0KHRoaXMpLGE9M0R0aGlzLGY9M0QoaXx8cGFyPQpzZUludCh1LnN0eWxlKCJ3
aWR0aCIpKXx8OTYwKS1yLmxlZnQtci5yaWdodCxkPTNEKHN8fHBhcnNlSW50KHUuc3R5bGUoImhl
aWc9Cmh0IikpfHw0MDApLXIudG9wLXIuYm90dG9tO3YudXBkYXRlPTNEZnVuY3Rpb24oKXt1LmNh
bGwodil9LHYuY29udGFpbmVyPTNEdD0KaGlzLGwuZGlzYWJsZWQ9M0RlLm1hcChmdW5jdGlvbihl
KXtyZXR1cm4hIWUuZGlzYWJsZWR9KTtpZighYyl7dmFyIG07Yz0zRHt9PQo7Zm9yKG0gaW4gbCls
W21daW5zdGFuY2VvZiBBcnJheT9jW21dPTNEbFttXS5zbGljZSgwKTpjW21dPTNEbFttXX1pZigh
ZXx8IWU9Ci5sZW5ndGgpe3ZhciBnPTNEdS5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKS5kYXRhKFto
XSk7cmV0dXJuIGcuZW50ZXIoKS5hcHBlbj0KZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnZkMyBu
di1ub0RhdGEiKS5hdHRyKCJkeSIsIi0uN2VtIikuc3R5bGUoInRleHQtYW5jPQpob3IiLCJtaWRk
bGUiKSxnLmF0dHIoIngiLHIubGVmdCtmLzIpLmF0dHIoInkiLHIudG9wK2QvMikudGV4dChmdW5j
dGlvbihlKXs9CnJldHVybiBlfSksdn11LnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbW92ZSgp
O3ZhciB5PTNEdS5zZWxlY3RBbGwoImcubnYtdz0KcmFwLm52LXBpZUNoYXJ0IikuZGF0YShbZV0p
LGI9M0R5LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52PQotd3JhcCBu
di1waWVDaGFydCIpLmFwcGVuZCgiZyIpLHc9M0R5LnNlbGVjdCgiZyIpO2IuYXBwZW5kKCJnIiku
YXR0cigiY2xhc3M9CiIsIm52LXBpZVdyYXAiKSxiLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwi
bnYtbGVnZW5kV3JhcCIpLG8mJihuLndpZHRoKGYpLj0Ka2V5KHQueCgpKSx5LnNlbGVjdCgiLm52
LWxlZ2VuZFdyYXAiKS5kYXR1bShlKS5jYWxsKG4pLHIudG9wIT0zRG4uaGVpZ2h0KCkmPQomKHIu
dG9wPTNEbi5oZWlnaHQoKSxkPTNEKHN8fHBhcnNlSW50KHUuc3R5bGUoImhlaWdodCIpKXx8NDAw
KS1yLnRvcC1yLmJvdHQ9Cm9tKSx5LnNlbGVjdCgiLm52LWxlZ2VuZFdyYXAiKS5hdHRyKCJ0cmFu
c2Zvcm0iLCJ0cmFuc2xhdGUoMCwiKyAtci50b3ArIikiKT0KKSx5LmF0dHIoInRyYW5zZm9ybSIs
InRyYW5zbGF0ZSgiK3IubGVmdCsiLCIrci50b3ArIikiKSx0LndpZHRoKGYpLmhlaWdodChkPQop
O3ZhciBFPTNEdy5zZWxlY3QoIi5udi1waWVXcmFwIikuZGF0dW0oW2VdKTtkMy50cmFuc2l0aW9u
KEUpLmNhbGwodCksbi5kaXM9CnBhdGNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24oZSl7bD0z
RGUscC5zdGF0ZUNoYW5nZShsKSx2LnVwZGF0ZSgpfSksdC5kaT0Kc3BhdGNoLm9uKCJlbGVtZW50
TW91c2VvdXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7cC50b29sdGlwSGlkZShlKX0pLHAub24oImNo
PQphbmdlU3RhdGUiLGZ1bmN0aW9uKHQpe3R5cGVvZiB0LmRpc2FibGVkIT0zRCJ1bmRlZmluZWQi
JiYoZS5mb3JFYWNoKGZ1bmN0aW89Cm4oZSxuKXtlLmRpc2FibGVkPTNEdC5kaXNhYmxlZFtuXX0p
LGwuZGlzYWJsZWQ9M0R0LmRpc2FibGVkKSx2LnVwZGF0ZSgpfSl9KT0KLHZ9dmFyIHQ9M0RlLm1v
ZGVscy5waWUoKSxuPTNEZS5tb2RlbHMubGVnZW5kKCkscj0zRHt0b3A6MzAscmlnaHQ6MjAsYm90
dG9tPQo6MjAsbGVmdDoyMH0saT0zRG51bGwscz0zRG51bGwsbz0zRCEwLHU9M0RlLnV0aWxzLmRl
ZmF1bHRDb2xvcigpLGE9M0QhMCxmPQo9M0RmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4iPGgzPiIr
ZSsiPC9oMz4iKyI8cD4iK3QrIjwvcD4ifSxsPTNEe30sYz0zRG51bGw9CixoPTNEIk5vIERhdGEg
QXZhaWxhYmxlLiIscD0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hvdyIsInRvb2x0aXBIaWRlIiwi
c3RhdD0KZUNoYW5nZSIsImNoYW5nZVN0YXRlIiksZD0zRGZ1bmN0aW9uKG4scil7dmFyIGk9M0R0
LmRlc2NyaXB0aW9uKCkobi5wb2ludCl8PQp8dC54KCkobi5wb2ludCkscz0zRG4ucG9zWzBdKyhy
JiZyLm9mZnNldExlZnR8fDApLG89M0RuLnBvc1sxXSsociYmci5vZmZzZXQ9ClRvcHx8MCksdT0z
RHQudmFsdWVGb3JtYXQoKSh0LnkoKShuLnBvaW50KSksYT0zRGYoaSx1LG4sdik7ZS50b29sdGlw
LnNob3coWz0KcyxvXSxhLG4udmFsdWU8MD8ibiI6InMiLG51bGwscil9O3JldHVybiB0LmRpc3Bh
dGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvPQpvbHRpcCIsZnVuY3Rpb24oZSl7ZS5wb3M9M0Rb
ZS5wb3NbMF0rci5sZWZ0LGUucG9zWzFdK3IudG9wXSxwLnRvb2x0aXBTaG93KGU9Cil9KSxwLm9u
KCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7YSYmZChlKX0pLHAub24oInRvb2x0aXBIaWRlIixm
dW5jdGlvbigpez0KYSYmZS50b29sdGlwLmNsZWFudXAoKX0pLHYubGVnZW5kPTNEbix2LmRpc3Bh
dGNoPTNEcCx2LnBpZT0zRHQsZDMucmViaW5kKHYsPQp0LCJ2YWx1ZUZvcm1hdCIsInZhbHVlcyIs
IngiLCJ5IiwiZGVzY3JpcHRpb24iLCJpZCIsInNob3dMYWJlbHMiLCJkb251dExhYmU9CmxzT3V0
c2lkZSIsInBpZUxhYmVsc091dHNpZGUiLCJsYWJlbFR5cGUiLCJkb251dCIsImRvbnV0UmF0aW8i
LCJsYWJlbFRocmVzaD0Kb2xkIiksdi5vcHRpb25zPTNEZS51dGlscy5vcHRpb25zRnVuYy5iaW5k
KHYpLHYubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0dXJuPQogYXJndW1lbnRzLmxlbmd0aD8oci50
b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50b3A6ci50b3Asci5yaWdodD0KPTNE
dHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdodDpyLnJpZ2h0LHIuYm90dG9tPTNE
dHlwZW9mIGUuYm90dG9tPQohPTNEInVuZGVmaW5lZCI/ZS5ib3R0b206ci5ib3R0b20sci5sZWZ0
PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lLmw9CmVmdDpyLmxlZnQsdik6cn0sdi53
aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPTNEZSx2KTppfT0K
LHYuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9M0RlLHYp
OnN9LHYuY29sb3I9M0RmdW5jPQp0aW9uKHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNE
ZS51dGlscy5nZXRDb2xvcihyKSxuLmNvbG9yKHUpLHQuY29sb3I9Cih1KSx2KTp1fSx2LnNob3dM
ZWdlbmQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz0zRGUsdik6b30s
dj0KLnRvb2x0aXBzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0Rl
LHYpOmF9LHYudG9vbHRpcENvbnRlPQpudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhmPTNEZSx2KTpmfSx2LnN0YXRlPTNEZnVuY3Rpb24oZSk9CntyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8obD0zRGUsdik6bH0sdi5kZWZhdWx0U3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYT0Kcmd1bWVudHMubGVuZ3RoPyhjPTNEZSx2KTpjfSx2Lm5vRGF0YT0zRGZ1bmN0aW9uKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPQo/KGg9M0RlLHYpOmh9LHZ9LGUubW9kZWxzLnNjYXR0
ZXI9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIEkocSl7cmV0dXJuIHEuZWFjaCg9CmZ1bmN0aW9uKEkp
e2Z1bmN0aW9uIFEoKXtpZighZylyZXR1cm4hMTt2YXIgZSxpPTNEZDMubWVyZ2UoSS5tYXAoZnVu
Y3Rpb24oZT0KLHQpe3JldHVybiBlLnZhbHVlcy5tYXAoZnVuY3Rpb24oZSxuKXt2YXIgcj0zRGYo
ZSxuKSxpPTNEbChlLG4pO3JldHVybltvKHIpPQosdShpKSx0LG4sZV19KS5maWx0ZXIoZnVuY3Rp
b24oZSx0KXtyZXR1cm4gYihlWzRdLHQpfSl9KSk7aWYoRD0zRD0zRD0zRCEwKXs9CmlmKHgpe3Zh
ciBhPTNEWC5zZWxlY3QoImRlZnMiKS5zZWxlY3RBbGwoIi5udi1wb2ludC1jbGlwcyIpLmRhdGEo
W3NdKS5lbnRlcj0KKCk7YS5hcHBlbmQoImNsaXBQYXRoIikuYXR0cigiY2xhc3MiLCJudi1wb2lu
dC1jbGlwcyIpLmF0dHIoImlkIiwibnYtcG9pbnRzPQotY2xpcC0iK3MpO3ZhciBjPTNEWC5zZWxl
Y3QoIiNudi1wb2ludHMtY2xpcC0iK3MpLnNlbGVjdEFsbCgiY2lyY2xlIikuZGF0YSg9CmkpO2Mu
ZW50ZXIoKS5hcHBlbmQoImNpcmNsZSIpLmF0dHIoInIiLFQpLGMuZXhpdCgpLnJlbW92ZSgpLGMu
YXR0cigiY3giLGZ1bj0KY3Rpb24oZSl7cmV0dXJuIGVbMF19KS5hdHRyKCJjeSIsZnVuY3Rpb24o
ZSl7cmV0dXJuIGVbMV19KSxYLnNlbGVjdCgiLm52LXBvPQppbnQtcGF0aHMiKS5hdHRyKCJjbGlw
LXBhdGgiLCJ1cmwoI252LXBvaW50cy1jbGlwLSIrcysiKSIpfWkubGVuZ3RoJiYoaS5wdXM9Cmgo
W28ucmFuZ2UoKVswXS0yMCx1LnJhbmdlKClbMF0tMjAsbnVsbCxudWxsXSksaS5wdXNoKFtvLnJh
bmdlKClbMV0rMjAsdS5yYT0KbmdlKClbMV0rMjAsbnVsbCxudWxsXSksaS5wdXNoKFtvLnJhbmdl
KClbMF0tMjAsdS5yYW5nZSgpWzBdKzIwLG51bGwsbnVsbF0pPQosaS5wdXNoKFtvLnJhbmdlKClb
MV0rMjAsdS5yYW5nZSgpWzFdLTIwLG51bGwsbnVsbF0pKTt2YXIgaD0zRGQzLmdlb20ucG9seWc9
Cm9uKFtbLTEwLC0xMF0sWy0xMCxyKzEwXSxbbisxMCxyKzEwXSxbbisxMCwtMTBdXSkscD0zRDFl
LTY7aT0zRGkuc29ydChmdW5jdD0KaW9uKGUsdCl7cmV0dXJuIGVbMF0tdFswXXx8ZVsxXS10WzFd
fSk7Zm9yKHZhciBkPTNEMDtkPGkubGVuZ3RoLTE7KU1hdGguYWJzPQooaVtkXVswXS1pW2QrMV1b
MF0pPHAmJk1hdGguYWJzKGlbZF1bMV0taVtkKzFdWzFdKTxwP2kuc3BsaWNlKGQrMSwxKTpkKys7
dmE9CnIgdj0zRGQzLmdlb20udm9yb25vaShpKS5tYXAoZnVuY3Rpb24oZSx0KXtyZXR1cm57ZGF0
YTpoLmNsaXAoZSksc2VyaWVzOmlbdD0KXVsyXSxwb2ludDppW3RdWzNdfX0pLG09M0RYLnNlbGVj
dCgiLm52LXBvaW50LXBhdGhzIikuc2VsZWN0QWxsKCJwYXRoIikuZGF0PQphKHYpO20uZW50ZXIo
KS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4ibnYtcGF0
aC0iK3Q9Cn0pLG0uZXhpdCgpLnJlbW92ZSgpLG0uYXR0cigiZCIsZnVuY3Rpb24oZSl7cmV0dXJu
IWV8fCFlLmRhdGF8fGUuZGF0YS5sZW5ndD0KaD0zRD0zRD0zRDA/Ik0gMCAwIjoiTSIrZS5kYXRh
LmpvaW4oIkwiKSsiWiJ9KTt2YXIgeT0zRGZ1bmN0aW9uKGUsbil7aWYoRilyPQpldHVybiAwO3Zh
ciByPTNESVtlLnNlcmllc107aWYodHlwZW9mIHI9M0Q9M0QidW5kZWZpbmVkIilyZXR1cm47dmFy
IGk9M0RyLnY9CmFsdWVzW2UucG9pbnRdO24oe3BvaW50Omksc2VyaWVzOnIscG9zOltvKGYoaSxl
LnBvaW50KSkrdC5sZWZ0LHUobChpLGUucG9pbj0KdCkpK3QudG9wXSxzZXJpZXNJbmRleDplLnNl
cmllcyxwb2ludEluZGV4OmUucG9pbnR9KX07bS5vbigiY2xpY2siLGZ1bmN0aW9uPQooZSl7eShl
LF8uZWxlbWVudENsaWNrKX0pLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKGUpe3koZSxfLmVsZW1l
bnRNb3VzZW92ZXI9Cil9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKGUsdCl7eShlLF8uZWxlbWVu
dE1vdXNlb3V0KX0pfWVsc2UgWC5zZWxlY3QoIi5udj0KLWdyb3VwcyIpLnNlbGVjdEFsbCgiLm52
LWdyb3VwIikuc2VsZWN0QWxsKCIubnYtcG9pbnQiKS5vbigiY2xpY2siLGZ1bmN0aW9uPQooZSxu
KXtpZihGfHwhSVtlLnNlcmllc10pcmV0dXJuIDA7dmFyIHI9M0RJW2Uuc2VyaWVzXSxpPTNEci52
YWx1ZXNbbl07Xy5lbGU9Cm1lbnRDbGljayh7cG9pbnQ6aSxzZXJpZXM6cixwb3M6W28oZihpLG4p
KSt0LmxlZnQsdShsKGksbikpK3QudG9wXSxzZXJpZXNJbj0KZGV4OmUuc2VyaWVzLHBvaW50SW5k
ZXg6bn0pfSkub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oZSxuKXtpZihGfHwhSVtlLnNlcmllPQpz
XSlyZXR1cm4gMDt2YXIgcj0zRElbZS5zZXJpZXNdLGk9M0RyLnZhbHVlc1tuXTtfLmVsZW1lbnRN
b3VzZW92ZXIoe3BvaW50Omk9CixzZXJpZXM6cixwb3M6W28oZihpLG4pKSt0LmxlZnQsdShsKGks
bikpK3QudG9wXSxzZXJpZXNJbmRleDplLnNlcmllcyxwb2ludD0KSW5kZXg6bn0pfSkub24oIm1v
dXNlb3V0IixmdW5jdGlvbihlLHQpe2lmKEZ8fCFJW2Uuc2VyaWVzXSlyZXR1cm4gMDt2YXIgbj0K
PTNESVtlLnNlcmllc10scj0zRG4udmFsdWVzW3RdO18uZWxlbWVudE1vdXNlb3V0KHtwb2ludDpy
LHNlcmllczpuLHNlcmllc0luPQpkZXg6ZS5zZXJpZXMscG9pbnRJbmRleDp0fSl9KTtGPTNEITF9
dmFyIHE9M0RuLXQubGVmdC10LnJpZ2h0LFI9M0RyLXQudG9wLXQ9Ci5ib3R0b20sVT0zRGQzLnNl
bGVjdCh0aGlzKTtJLmZvckVhY2goZnVuY3Rpb24oZSx0KXtlLnZhbHVlcy5mb3JFYWNoKGZ1bmN0
aT0Kb24oZSl7ZS5zZXJpZXM9M0R0fSl9KTt2YXIgVz0zRE4mJkMmJkE/W106ZDMubWVyZ2UoSS5t
YXAoZnVuY3Rpb24oZSl7cmV0dXJuPQogZS52YWx1ZXMubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJu
e3g6ZihlLHQpLHk6bChlLHQpLHNpemU6YyhlLHQpfX0pfSkpO28uZG89Cm1haW4oTnx8ZDMuZXh0
ZW50KFcubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9KS5jb25jYXQoZCkpKSx3JiZJWzBdP28u
cmFuZz0KZShrfHxbKHEqRStxKS8oMipJWzBdLnZhbHVlcy5sZW5ndGgpLHEtcSooMStFKS8oMipJ
WzBdLnZhbHVlcy5sZW5ndGgpXSk6by5yPQphbmdlKGt8fFswLHFdKSx1LmRvbWFpbihDfHxkMy5l
eHRlbnQoVy5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0pLmNvbmNhdCg9CnYpKSkucmFuZ2Uo
THx8W1IsMF0pLGEuZG9tYWluKEF8fGQzLmV4dGVudChXLm1hcChmdW5jdGlvbihlKXtyZXR1cm4g
ZS5zaXplfT0KKS5jb25jYXQobSkpKS5yYW5nZShPfHxbMTYsMjU2XSk7aWYoby5kb21haW4oKVsw
XT0zRD0zRD0zRG8uZG9tYWluKClbMV18fHUuPQpkb21haW4oKVswXT0zRD0zRD0zRHUuZG9tYWlu
KClbMV0pTT0zRCEwO28uZG9tYWluKClbMF09M0Q9M0Q9M0RvLmRvbWFpbigpWzE9Cl0mJihvLmRv
bWFpbigpWzBdP28uZG9tYWluKFtvLmRvbWFpbigpWzBdLW8uZG9tYWluKClbMF0qLjAxLG8uZG9t
YWluKClbMV0rbz0KLmRvbWFpbigpWzFdKi4wMV0pOm8uZG9tYWluKFstMSwxXSkpLHUuZG9tYWlu
KClbMF09M0Q9M0Q9M0R1LmRvbWFpbigpWzFdJiYoPQp1LmRvbWFpbigpWzBdP3UuZG9tYWluKFt1
LmRvbWFpbigpWzBdLXUuZG9tYWluKClbMF0qLjAxLHUuZG9tYWluKClbMV0rdS5kb209CmFpbigp
WzFdKi4wMV0pOnUuZG9tYWluKFstMSwxXSkpLGlzTmFOKG8uZG9tYWluKClbMF0pJiZvLmRvbWFp
bihbLTEsMV0pLGlzTj0KYU4odS5kb21haW4oKVswXSkmJnUuZG9tYWluKFstMSwxXSksUD0zRFB8
fG8sSD0zREh8fHUsQj0zREJ8fGE7dmFyIFg9M0RVLnNlPQpsZWN0QWxsKCJnLm52LXdyYXAubnYt
c2NhdHRlciIpLmRhdGEoW0ldKSxWPTNEWC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImM9Cmxh
c3MiLCJudmQzIG52LXdyYXAgbnYtc2NhdHRlciBudi1jaGFydC0iK3MrKE0/IiBudi1zaW5nbGUt
cG9pbnQiOiIiKSksJD0zRD0KVi5hcHBlbmQoImRlZnMiKSxKPTNEVi5hcHBlbmQoImciKSxLPTNE
WC5zZWxlY3QoImciKTtKLmFwcGVuZCgiZyIpLmF0dHIoImNsPQphc3MiLCJudi1ncm91cHMiKSxK
LmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtcG9pbnQtcGF0aHMiKSxYLmF0dHIoInRyYW49
CnNmb3JtIiwidHJhbnNsYXRlKCIrdC5sZWZ0KyIsIit0LnRvcCsiKSIpLCQuYXBwZW5kKCJjbGlw
UGF0aCIpLmF0dHIoImlkIiwibj0Kdi1lZGdlLWNsaXAtIitzKS5hcHBlbmQoInJlY3QiKSxYLnNl
bGVjdCgiI252LWVkZ2UtY2xpcC0iK3MrIiByZWN0IikuYXR0cigiPQp3aWR0aCIscSkuYXR0cigi
aGVpZ2h0IixSPjA/UjowKSxLLmF0dHIoImNsaXAtcGF0aCIsUz8idXJsKCNudi1lZGdlLWNsaXAt
Iis9CnMrIikiOiIiKSxGPTNEITA7dmFyIEc9M0RYLnNlbGVjdCgiLm52LWdyb3VwcyIpLnNlbGVj
dEFsbCgiLm52LWdyb3VwIikuZGF0YT0KKGZ1bmN0aW9uKGUpe3JldHVybiBlfSxmdW5jdGlvbihl
KXtyZXR1cm4gZS5rZXl9KTtHLmVudGVyKCkuYXBwZW5kKCJnIikuc3R5PQpsZSgic3Ryb2tlLW9w
YWNpdHkiLDFlLTYpLnN0eWxlKCJmaWxsLW9wYWNpdHkiLDFlLTYpLEcuZXhpdCgpLnJlbW92ZSgp
LEcuYXQ9CnRyKCJjbGFzcyIsZnVuY3Rpb24oZSx0KXtyZXR1cm4ibnYtZ3JvdXAgbnYtc2VyaWVz
LSIrdH0pLmNsYXNzZWQoImhvdmVyIixmdT0KbmN0aW9uKGUpe3JldHVybiBlLmhvdmVyfSksRy5z
dHlsZSgiZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gaShlLHQpfSkuc3R5PQpsZSgic3Ryb2tl
IixmdW5jdGlvbihlLHQpe3JldHVybiBpKGUsdCl9KS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDEp
LnN0eWxlKCI9CmZpbGwtb3BhY2l0eSIsLjUpO2lmKHApe3ZhciBZPTNERy5zZWxlY3RBbGwoImNp
cmNsZS5udi1wb2ludCIpLmRhdGEoZnVuY3Rpbz0KbihlKXtyZXR1cm4gZS52YWx1ZXN9LHkpO1ku
ZW50ZXIoKS5hcHBlbmQoImNpcmNsZSIpLnN0eWxlKCJmaWxsIixmdW5jdGlvbihlPQosdCl7cmV0
dXJuIGUuY29sb3J9KS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9y
fSkuYXR0cigiY3g9CiIsZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8oUChm
KHQsbikpKX0pLmF0dHIoImN5IixmdW5jdGlvbih0LD0Kbil7cmV0dXJuIGUudXRpbHMuTmFOdG9a
ZXJvKEgobCh0LG4pKSl9KS5hdHRyKCJyIixmdW5jdGlvbihlLHQpe3JldHVybiBNYXRoPQouc3Fy
dChhKGMoZSx0KSkvTWF0aC5QSSl9KSxZLmV4aXQoKS5yZW1vdmUoKSxHLmV4aXQoKS5zZWxlY3RB
bGwoInBhdGgubnYtcG89CmludCIpLmF0dHIoImN4IixmdW5jdGlvbih0LG4pe3JldHVybiBlLnV0
aWxzLk5hTnRvWmVybyhvKGYodCxuKSkpfSkuYXR0cigiYz0KeSIsZnVuY3Rpb24odCxuKXtyZXR1
cm4gZS51dGlscy5OYU50b1plcm8odShsKHQsbikpKX0pLnJlbW92ZSgpLFkuZWFjaChmdW5jPQp0
aW9uKGUsdCl7ZDMuc2VsZWN0KHRoaXMpLmNsYXNzZWQoIm52LXBvaW50IiwhMCkuY2xhc3NlZCgi
bnYtcG9pbnQtIit0LCEwKS49CmNsYXNzZWQoImhvdmVyIiwhMSl9KSxZLmF0dHIoImN4IixmdW5j
dGlvbih0LG4pe3JldHVybiBlLnV0aWxzLk5hTnRvWmVybyhvKD0KZih0LG4pKSl9KS5hdHRyKCJj
eSIsZnVuY3Rpb24odCxuKXtyZXR1cm4gZS51dGlscy5OYU50b1plcm8odShsKHQsbikpKX0pLmF0
PQp0cigiciIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5zcXJ0KGEoYyhlLHQpKS9NYXRoLlBJ
KX0pfWVsc2V7dmFyIFk9M0RHLnM9CmVsZWN0QWxsKCJwYXRoLm52LXBvaW50IikuZGF0YShmdW5j
dGlvbihlKXtyZXR1cm4gZS52YWx1ZXN9KTtZLmVudGVyKCkuYXBwZT0KbmQoInBhdGgiKS5zdHls
ZSgiZmlsbCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcn0pLnN0eWxlKCJzdHJva2UiLGZ1
bmN0PQppb24oZSx0KXtyZXR1cm4gZS5jb2xvcn0pLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24o
ZSx0KXtyZXR1cm4idHJhbnNsYXRlKCI9CitQKGYoZSx0KSkrIiwiK0gobChlLHQpKSsiKSJ9KS5h
dHRyKCJkIixkMy5zdmcuc3ltYm9sKCkudHlwZShoKS5zaXplKGZ1bmN0aT0Kb24oZSx0KXtyZXR1
cm4gYShjKGUsdCkpfSkpLFkuZXhpdCgpLnJlbW92ZSgpLEcuZXhpdCgpLnNlbGVjdEFsbCgicGF0
aC5udi1wPQpvaW50IikuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihlLHQpe3JldHVybiJ0cmFu
c2xhdGUoIitvKGYoZSx0KSkrIiwiK3UobCg9CmUsdCkpKyIpIn0pLnJlbW92ZSgpLFkuZWFjaChm
dW5jdGlvbihlLHQpe2QzLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJudi1wb2ludD0KIiwhMCkuY2xh
c3NlZCgibnYtcG9pbnQtIit0LCEwKS5jbGFzc2VkKCJob3ZlciIsITEpfSksWS5hdHRyKCJ0cmFu
c2Zvcm0iLGZ1PQpuY3Rpb24oZSx0KXtyZXR1cm4idHJhbnNsYXRlKCIrbyhmKGUsdCkpKyIsIit1
KGwoZSx0KSkrIikifSkuYXR0cigiZCIsZDMuc3Y9Cmcuc3ltYm9sKCkudHlwZShoKS5zaXplKGZ1
bmN0aW9uKGUsdCl7cmV0dXJuIGEoYyhlLHQpKX0pKX1jbGVhclRpbWVvdXQoaiksaj0KPTNEc2V0
VGltZW91dChRLDMwMCksUD0zRG8uY29weSgpLEg9M0R1LmNvcHkoKSxCPTNEYS5jb3B5KCl9KSxJ
fXZhciB0PTNEe3RvPQpwOjAscmlnaHQ6MCxib3R0b206MCxsZWZ0OjB9LG49M0Q5NjAscj0zRDUw
MCxpPTNEZS51dGlscy5kZWZhdWx0Q29sb3IoKSxzPQo9M0RNYXRoLmZsb29yKE1hdGgucmFuZG9t
KCkqMWU1KSxvPTNEZDMuc2NhbGUubGluZWFyKCksdT0zRGQzLnNjYWxlLmxpbmVhcig9CiksYT0z
RGQzLnNjYWxlLmxpbmVhcigpLGY9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS54fSxsPTNEZnVuY3Rp
b24oZSl7cmV0dXJuID0KZS55fSxjPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2l6ZXx8MX0saD0z
RGZ1bmN0aW9uKGUpe3JldHVybiBlLnNoYXBlfHwiY2lyPQpjbGUifSxwPTNEITAsZD0zRFtdLHY9
M0RbXSxtPTNEW10sZz0zRCEwLHk9M0RudWxsLGI9M0RmdW5jdGlvbihlKXtyZXR1cm4hZS49Cm5v
dEFjdGl2ZX0sdz0zRCExLEU9M0QuMSxTPTNEITEseD0zRCEwLFQ9M0RmdW5jdGlvbigpe3JldHVy
biAyNX0sTj0zRG51bGwsQz0KPTNEbnVsbCxrPTNEbnVsbCxMPTNEbnVsbCxBPTNEbnVsbCxPPTNE
bnVsbCxNPTNEITEsXz0zRGQzLmRpc3BhdGNoKCJlbGVtZW50PQpDbGljayIsImVsZW1lbnRNb3Vz
ZW92ZXIiLCJlbGVtZW50TW91c2VvdXQiKSxEPTNEITAsUCxILEIsaixGPTNEITE7cmV0dXJuIEk9
Ci5jbGVhckhpZ2hsaWdodHM9M0RmdW5jdGlvbigpe2QzLnNlbGVjdEFsbCgiLm52LWNoYXJ0LSIr
cysiIC5udi1wb2ludC5ob3Zlcj0KIikuY2xhc3NlZCgiaG92ZXIiLCExKX0sSS5oaWdobGlnaHRQ
b2ludD0zRGZ1bmN0aW9uKGUsdCxuKXtkMy5zZWxlY3QoIi5udi1jPQpoYXJ0LSIrcysiIC5udi1z
ZXJpZXMtIitlKyIgLm52LXBvaW50LSIrdCkuY2xhc3NlZCgiaG92ZXIiLG4pfSxfLm9uKCJlbGVt
ZW49CnRNb3VzZW92ZXIucG9pbnQiLGZ1bmN0aW9uKGUpe2cmJkkuaGlnaGxpZ2h0UG9pbnQoZS5z
ZXJpZXNJbmRleCxlLnBvaW50SW5kZT0KeCwhMCl9KSxfLm9uKCJlbGVtZW50TW91c2VvdXQucG9p
bnQiLGZ1bmN0aW9uKGUpe2cmJkkuaGlnaGxpZ2h0UG9pbnQoZS5zZXJpPQplc0luZGV4LGUucG9p
bnRJbmRleCwhMSl9KSxJLmRpc3BhdGNoPTNEXyxJLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNG
dW5jLmI9CmluZChJKSxJLng9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
Zj0zRGQzLmZ1bmN0b3IoZSksSSk6Zn0sST0KLnk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1l
bnRzLmxlbmd0aD8obD0zRGQzLmZ1bmN0b3IoZSksSSk6bH0sSS5zaXplPTNEPQpmdW5jdGlvbihl
KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYz0zRGQzLmZ1bmN0b3IoZSksSSk6Y30sSS5tYXJn
aW49M0RmdW49CmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LnRvcD0zRHR5cGVv
ZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcD0KOnQudG9wLHQucmlnaHQ9M0R0eXBlb2YgZS5y
aWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OnQucmlnaHQsdC5ib3R0b209M0R0PQp5cGVvZiBl
LmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTp0LmJvdHRvbSx0LmxlZnQ9M0R0eXBlb2Yg
ZS5sZWZ0IT0zRCI9CnVuZGVmaW5lZCI/ZS5sZWZ0OnQubGVmdCxJKTp0fSxJLndpZHRoPTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndD0KaD8obj0zRGUsSSk6bn0sSS5oZWlnaHQ9
M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0zRGUsSSk6cn0sPQpJLnhT
Y2FsZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZSxJKTpvfSxJ
LnlTY2FsZT0zRGZ1bmM9CnRpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9M0RlLEkp
OnV9LEkuelNjYWxlPTNEZnVuY3Rpb24oZSl7cmV0dXJuID0KYXJndW1lbnRzLmxlbmd0aD8oYT0z
RGUsSSk6YX0sSS54RG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5nPQp0
aD8oTj0zRGUsSSk6Tn0sSS55RG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KEM9M0RlLEkpOkM9Cn0sSS5zaXplRG9tYWluPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KEE9M0RlLEkpOkF9LEkueFJhbmdlPQo9M0RmdW5jdGlvbihlKXtyZXR1
cm4gYXJndW1lbnRzLmxlbmd0aD8oaz0zRGUsSSk6a30sSS55UmFuZ2U9M0RmdW5jdGlvbihlKXs9
CnJldHVybiBhcmd1bWVudHMubGVuZ3RoPyhMPTNEZSxJKTpMfSxJLnNpemVSYW5nZT0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bT0KZW50cy5sZW5ndGg/KE89M0RlLEkpOk99LEkuZm9yY2VYPTNE
ZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9Cj0zRGUsSSk6ZH0sSS5mb3Jj
ZVk9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj0zRGUsSSk6dn0sSS5m
bz0KcmNlU2l6ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhtPTNEZSxJ
KTptfSxJLmludGVyYWN0aXZlPTNEPQpmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8oZz0zRGUsSSk6Z30sSS5wb2ludEtleT0zRGZ1bmN0aW9uKGUpe3I9CmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KHk9M0RlLEkpOnl9LEkucG9pbnRBY3RpdmU9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndT0KbWVudHMubGVuZ3RoPyhiPTNEZSxJKTpifSxJLnBhZERhdGE9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oPQp3PTNEZSxJKTp3fSxJLnBhZERhdGFPdXRlcj0zRGZ1
bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhFPTNEZSxJKTo9CkV9LEkuY2xpcEVk
Z2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oUz0zRGUsSSk6U30sSS5j
bGlwVm9ybz0Kbm9pPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHg9M0Rl
LEkpOnh9LEkudXNlVm9yb25vaT0zRGZ1bmN0PQppb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KEQ9M0RlLEQ9M0Q9M0Q9M0QhMSYmKHg9M0QhMSksSSk6RH0sSS5jbGlwUmE9CmRpdXM9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oVD0zRGUsSSk6VH0sSS5jb2xvcj0z
RGZ1bmN0aW9uKD0KdCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9M0RlLnV0aWxzLmdldENv
bG9yKHQpLEkpOml9LEkuc2hhcGU9M0RmdW5jdGlvPQpuKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhoPTNEZSxJKTpofSxJLm9ubHlDaXJjbGVzPTNEZnVuY3Rpb24oZSl7cmV0dXI9Cm4gYXJn
dW1lbnRzLmxlbmd0aD8ocD0zRGUsSSk6cH0sSS5pZD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPz0KKHM9M0RlLEkpOnN9LEkuc2luZ2xlUG9pbnQ9M0RmdW5jdGlvbihlKXty
ZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oTT0zRGUsSSk6PQpNfSxJfSxlLm1vZGVscy5zY2F0dGVy
Q2hhcnQ9M0RmdW5jdGlvbigpe2Z1bmN0aW9uIEYoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGk9Cm9u
KGUpe2Z1bmN0aW9uIEooKXtpZihUKXJldHVybiBXLnNlbGVjdCgiLm52LXBvaW50LXBhdGhzIiku
c3R5bGUoInBvaW50ZXItZT0KdmVudHMiLCJhbGwiKSwhMTtXLnNlbGVjdCgiLm52LXBvaW50LXBh
dGhzIikuc3R5bGUoInBvaW50ZXItZXZlbnRzIiwibm9uZSIpPQo7dmFyIGk9M0RkMy5tb3VzZSh0
aGlzKTtoLmRpc3RvcnRpb24oeCkuZm9jdXMoaVswXSkscC5kaXN0b3J0aW9uKHgpLmZvY3VzKGk9
ClsxXSksVy5zZWxlY3QoIi5udi1zY2F0dGVyV3JhcCIpLmNhbGwodCksYiYmVy5zZWxlY3QoIi5u
di14Lm52LWF4aXMiKS5jYWxsKD0KbiksdyYmVy5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5jYWxs
KHIpLFcuc2VsZWN0KCIubnYtZGlzdHJpYnV0aW9uWCIpLmRhdHVtPQooZS5maWx0ZXIoZnVuY3Rp
b24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbChvKSxXLnNlbGVjdCgiLm52LWRpc3RyaWJ1
dGk9Cm9uWSIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVkfSkp
LmNhbGwodSl9dmFyIEM9M0RkMy5zZT0KbGVjdCh0aGlzKSxrPTNEdGhpcyxMPTNEKGZ8fHBhcnNl
SW50KEMuc3R5bGUoIndpZHRoIikpfHw5NjApLWEubGVmdC1hLnJpZ2h0PQosRD0zRChsfHxwYXJz
ZUludChDLnN0eWxlKCJoZWlnaHQiKSl8fDQwMCktYS50b3AtYS5ib3R0b207Ri51cGRhdGU9M0Rm
dW5jdGk9Cm9uKCl7Qy5jYWxsKEYpfSxGLmNvbnRhaW5lcj0zRHRoaXMsQS5kaXNhYmxlZD0zRGUu
bWFwKGZ1bmN0aW9uKGUpe3JldHVybiEhZT0KLmRpc2FibGVkfSk7aWYoIU8pe3ZhciBJO089M0R7
fTtmb3IoSSBpbiBBKUFbSV1pbnN0YW5jZW9mIEFycmF5P09bSV09M0RBW0ldPQouc2xpY2UoMCk6
T1tJXT0zREFbSV19aWYoIWV8fCFlLmxlbmd0aHx8IWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVy
biBlLnZhbHU9CmVzLmxlbmd0aH0pLmxlbmd0aCl7dmFyIHE9M0RDLnNlbGVjdEFsbCgiLm52LW5v
RGF0YSIpLmRhdGEoW19dKTtyZXR1cm4gcS5lbj0KdGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0cigi
Y2xhc3MiLCJudmQzIG52LW5vRGF0YSIpLmF0dHIoImR5IiwiLS43ZW0iKS5zdHlsPQplKCJ0ZXh0
LWFuY2hvciIsIm1pZGRsZSIpLHEuYXR0cigieCIsYS5sZWZ0K0wvMikuYXR0cigieSIsYS50b3Ar
RC8yKS50ZXh0KGY9CnVuY3Rpb24oZSl7cmV0dXJuIGV9KSxGfUMuc2VsZWN0QWxsKCIubnYtbm9E
YXRhIikucmVtb3ZlKCksUD0zRFB8fGgsSD0zREh8fD0KcDt2YXIgUj0zREMuc2VsZWN0QWxsKCJn
Lm52LXdyYXAubnYtc2NhdHRlckNoYXJ0IikuZGF0YShbZV0pLFU9M0RSLmVudGVyKCkuPQphcHBl
bmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtd3JhcCBudi1zY2F0dGVyQ2hhcnQgbnYtY2hh
cnQtIit0LmlkKCkpLHo9Cj0zRFUuYXBwZW5kKCJnIiksVz0zRFIuc2VsZWN0KCJnIik7ei5hcHBl
bmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtYj0KYWNrZ3JvdW5kIiksei5hcHBlbmQo
ImciKS5hdHRyKCJjbGFzcyIsIm52LXggbnYtYXhpcyIpLHouYXBwZW5kKCJnIikuYXR0cigiPQpj
bGFzcyIsIm52LXkgbnYtYXhpcyIpLHouYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1zY2F0
dGVyV3JhcCIpLHouYXBwZW49CmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWRpc3RXcmFwIiksei5h
cHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWxlZ2VuZFdyYT0KcCIpLHouYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJudi1jb250cm9sc1dyYXAiKTtpZih5KXt2YXIgWD0zRFM/TC8yOkw7aS53
PQppZHRoKFgpLFIuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmRhdHVtKGUpLmNhbGwoaSksYS50
b3AhPTNEaS5oZWlnaHQoKSYmKGE9Ci50b3A9M0RpLmhlaWdodCgpLEQ9M0QobHx8cGFyc2VJbnQo
Qy5zdHlsZSgiaGVpZ2h0IikpfHw0MDApLWEudG9wLWEuYm90dG9tKT0KLFIuc2VsZWN0KCIubnYt
bGVnZW5kV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhMLVgpKyIsIisgLWEu
dG9wPQorIikiKX1TJiYocy53aWR0aCgxODApLmNvbG9yKFsiIzQ0NCJdKSxXLnNlbGVjdCgiLm52
LWNvbnRyb2xzV3JhcCIpLmRhdHVtKGo9CikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAs
IisgLWEudG9wKyIpIikuY2FsbChzKSksUi5hdHRyKCJ0cmFuc2Zvcm0iLD0KInRyYW5zbGF0ZSgi
K2EubGVmdCsiLCIrYS50b3ArIikiKSxFJiZXLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmF0dHIo
InRyYW5zPQpmb3JtIiwidHJhbnNsYXRlKCIrTCsiLDApIiksdC53aWR0aChMKS5oZWlnaHQoRCku
Y29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0KXs9CnJldHVybiBlLmNvbG9yfHxjKGUsdCl9KS5maWx0
ZXIoZnVuY3Rpb24odCxuKXtyZXR1cm4hZVtuXS5kaXNhYmxlZH0pKSxkIT0zRD0KPTNEMCYmdC54
RG9tYWluKG51bGwpLHYhPTNEPTNEMCYmdC55RG9tYWluKG51bGwpLFIuc2VsZWN0KCIubnYtc2Nh
dHRlcldyYXAiPQopLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiFlLmRpc2FibGVk
fSkpLmNhbGwodCk7aWYoZCE9M0Q9M0QwKXt2YXI9CiBWPTNEaC5kb21haW4oKVsxXS1oLmRvbWFp
bigpWzBdO3QueERvbWFpbihbaC5kb21haW4oKVswXS1kKlYsaC5kb21haW4oKVsxXT0KK2QqVl0p
fWlmKHYhPTNEPTNEMCl7dmFyICQ9M0RwLmRvbWFpbigpWzFdLXAuZG9tYWluKClbMF07dC55RG9t
YWluKFtwLmRvbWFpPQpuKClbMF0tdiokLHAuZG9tYWluKClbMV0rdiokXSl9KHYhPTNEPTNEMHx8
ZCE9M0Q9M0QwKSYmUi5zZWxlY3QoIi5udi1zY2F0dGU9CnJXcmFwIikuZGF0dW0oZS5maWx0ZXIo
ZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbCh0KSxiJiYobi5zY2FsZT0KKGgp
LnRpY2tzKG4udGlja3MoKSYmbi50aWNrcygpLmxlbmd0aD9uLnRpY2tzKCk6TC8xMDApLnRpY2tT
aXplKC1ELDApLFcuc2VsPQplY3QoIi5udi14Lm52LWF4aXMiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0
cmFuc2xhdGUoMCwiK3AucmFuZ2UoKVswXSsiKSIpLmNhbGw9CihuKSksdyYmKHIuc2NhbGUocCku
dGlja3Moci50aWNrcygpJiZyLnRpY2tzKCkubGVuZ3RoP3IudGlja3MoKTpELzM2KS50aWNrUz0K
aXplKC1MLDApLFcuc2VsZWN0KCIubnYteS5udi1heGlzIikuY2FsbChyKSksbSYmKG8uZ2V0RGF0
YSh0LngoKSkuc2NhbGUoaCkuPQp3aWR0aChMKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3Jl
dHVybiBlLmNvbG9yfHxjKGUsdCl9KS5maWx0ZXIoZnVuY3Rpb249Cih0LG4pe3JldHVybiFlW25d
LmRpc2FibGVkfSkpLHouc2VsZWN0KCIubnYtZGlzdFdyYXAiKS5hcHBlbmQoImciKS5hdHRyKCJj
bD0KYXNzIiwibnYtZGlzdHJpYnV0aW9uWCIpLFcuc2VsZWN0KCIubnYtZGlzdHJpYnV0aW9uWCIp
LmF0dHIoInRyYW5zZm9ybSIsInRyPQphbnNsYXRlKDAsIitwLnJhbmdlKClbMF0rIikiKS5kYXR1
bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH09CikpLmNhbGwobykpLGcm
Jih1LmdldERhdGEodC55KCkpLnNjYWxlKHApLndpZHRoKEQpLmNvbG9yKGUubWFwKGZ1bmN0aW9u
KGUsdD0KKXtyZXR1cm4gZS5jb2xvcnx8YyhlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0
dXJuIWVbbl0uZGlzYWJsZWR9KSksei5zPQplbGVjdCgiLm52LWRpc3RXcmFwIikuYXBwZW5kKCJn
IikuYXR0cigiY2xhc3MiLCJudi1kaXN0cmlidXRpb25ZIiksVy5zZWxlY3Q9CigiLm52LWRpc3Ry
aWJ1dGlvblkiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisoRT9MOi11LnNpemUoKSkr
IiwwKSIpLj0KZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSku
Y2FsbCh1KSksZDMuZmlzaGV5ZSYmKFcuc2VsPQplY3QoIi5udi1iYWNrZ3JvdW5kIikuYXR0cigi
d2lkdGgiLEwpLmF0dHIoImhlaWdodCIsRCksVy5zZWxlY3QoIi5udi1iYWNrZ3I9Cm91bmQiKS5v
bigibW91c2Vtb3ZlIixKKSxXLnNlbGVjdCgiLm52LWJhY2tncm91bmQiKS5vbigiY2xpY2siLGZ1
bmN0aW9uKCl7VD0KPTNEIVR9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50Q2xpY2suZnJlZXplRmlz
aGV5ZSIsZnVuY3Rpb24oKXtUPTNEIVR9KSkscy5kPQppc3BhdGNoLm9uKCJsZWdlbmRDbGljayIs
ZnVuY3Rpb24oZSxpKXtlLmRpc2FibGVkPTNEIWUuZGlzYWJsZWQseD0zRGUuZGlzYWI9CmxlZD8w
OjIuNSxXLnNlbGVjdCgiLm52LWJhY2tncm91bmQiKS5zdHlsZSgicG9pbnRlci1ldmVudHMiLGUu
ZGlzYWJsZWQ/Im5vbj0KZSI6ImFsbCIpLFcuc2VsZWN0KCIubnYtcG9pbnQtcGF0aHMiKS5zdHls
ZSgicG9pbnRlci1ldmVudHMiLGUuZGlzYWJsZWQ/ImFsPQpsIjoibm9uZSIpLGUuZGlzYWJsZWQ/
KGguZGlzdG9ydGlvbih4KS5mb2N1cygwKSxwLmRpc3RvcnRpb24oeCkuZm9jdXMoMCksVy49CnNl
bGVjdCgiLm52LXNjYXR0ZXJXcmFwIikuY2FsbCh0KSxXLnNlbGVjdCgiLm52LXgubnYtYXhpcyIp
LmNhbGwobiksVy5zZWxlYz0KdCgiLm52LXkubnYtYXhpcyIpLmNhbGwocikpOlQ9M0QhMSxGLnVw
ZGF0ZSgpfSksaS5kaXNwYXRjaC5vbigic3RhdGVDaGFuZ2UiPQosZnVuY3Rpb24oZSl7QS5kaXNh
YmxlZD0zRGUuZGlzYWJsZWQsTS5zdGF0ZUNoYW5nZShBKSxGLnVwZGF0ZSgpfSksdC5kaXNwYXQ9
CmNoLm9uKCJlbGVtZW50TW91c2VvdmVyLnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2QzLnNlbGVjdCgi
Lm52LWNoYXJ0LSIrdC5pZCgpKz0KIiAubnYtc2VyaWVzLSIrZS5zZXJpZXNJbmRleCsiIC5udi1k
aXN0eC0iK2UucG9pbnRJbmRleCkuYXR0cigieTEiLGZ1bmN0aW9uPQoodCxuKXtyZXR1cm4gZS5w
b3NbMV0tRH0pLGQzLnNlbGVjdCgiLm52LWNoYXJ0LSIrdC5pZCgpKyIgLm52LXNlcmllcy0iK2Uu
c2U9CnJpZXNJbmRleCsiIC5udi1kaXN0eS0iK2UucG9pbnRJbmRleCkuYXR0cigieDIiLGUucG9z
WzBdK28uc2l6ZSgpKSxlLnBvcz0zRD0KW2UucG9zWzBdK2EubGVmdCxlLnBvc1sxXSthLnRvcF0s
TS50b29sdGlwU2hvdyhlKX0pLE0ub24oInRvb2x0aXBTaG93IixmdW5jPQp0aW9uKGUpe04mJkIo
ZSxrLnBhcmVudE5vZGUpfSksTS5vbigiY2hhbmdlU3RhdGUiLGZ1bmN0aW9uKHQpe3R5cGVvZiB0
LmRpc2E9CmJsZWQhPTNEInVuZGVmaW5lZCImJihlLmZvckVhY2goZnVuY3Rpb24oZSxuKXtlLmRp
c2FibGVkPTNEdC5kaXNhYmxlZFtuXX0pLD0KQS5kaXNhYmxlZD0zRHQuZGlzYWJsZWQpLEYudXBk
YXRlKCl9KSxQPTNEaC5jb3B5KCksSD0zRHAuY29weSgpfSksRn12YXIgdD0KPTNEZS5tb2RlbHMu
c2NhdHRlcigpLG49M0RlLm1vZGVscy5heGlzKCkscj0zRGUubW9kZWxzLmF4aXMoKSxpPTNEZS5t
b2RlbHMuPQpsZWdlbmQoKSxzPTNEZS5tb2RlbHMubGVnZW5kKCksbz0zRGUubW9kZWxzLmRpc3Ry
aWJ1dGlvbigpLHU9M0RlLm1vZGVscy5kaXM9CnRyaWJ1dGlvbigpLGE9M0R7dG9wOjMwLHJpZ2h0
OjIwLGJvdHRvbTo1MCxsZWZ0Ojc1fSxmPTNEbnVsbCxsPTNEbnVsbCxjPTNEZT0KLnV0aWxzLmRl
ZmF1bHRDb2xvcigpLGg9M0RkMy5maXNoZXllP2QzLmZpc2hleWUuc2NhbGUoZDMuc2NhbGUubGlu
ZWFyKS5kaXN0PQpvcnRpb24oMCk6dC54U2NhbGUoKSxwPTNEZDMuZmlzaGV5ZT9kMy5maXNoZXll
LnNjYWxlKGQzLnNjYWxlLmxpbmVhcikuZGlzdG89CnJ0aW9uKDApOnQueVNjYWxlKCksZD0zRDAs
dj0zRDAsbT0zRCExLGc9M0QhMSx5PTNEITAsYj0zRCEwLHc9M0QhMCxFPTNEITEsUz0KPTNEISFk
My5maXNoZXllLHg9M0QwLFQ9M0QhMSxOPTNEITAsQz0zRGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4i
PHN0cm9uZz4iK3QrPQoiPC9zdHJvbmc+In0saz0zRGZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4iPHN0
cm9uZz4iK24rIjwvc3Ryb25nPiJ9LEw9M0RudWxsLEE9Cj0zRHt9LE89M0RudWxsLE09M0RkMy5k
aXNwYXRjaCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlkZSIsInN0YXRlQ2hhbmdlIiwiYz0KaGFu
Z2VTdGF0ZSIpLF89M0QiTm8gRGF0YSBBdmFpbGFibGUuIixEPTNEMDt0LnhTY2FsZShoKS55U2Nh
bGUocCksbi5vcmllbnQoPQoiYm90dG9tIikudGlja1BhZGRpbmcoMTApLHIub3JpZW50KEU/InJp
Z2h0IjoibGVmdCIpLnRpY2tQYWRkaW5nKDEwKSxvLmF4aXM9CigieCIpLHUuYXhpcygieSIpLHMu
dXBkYXRlU3RhdGUoITEpO3ZhciBQLEgsQj0zRGZ1bmN0aW9uKGkscyl7dmFyIG89M0RpLnBvcz0K
WzBdKyhzLm9mZnNldExlZnR8fDApLHU9M0RpLnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLGY9M0Rp
LnBvc1swXSsocy5vZmZzZXRMPQplZnR8fDApLGw9M0RwLnJhbmdlKClbMF0rYS50b3ArKHMub2Zm
c2V0VG9wfHwwKSxjPTNEaC5yYW5nZSgpWzBdK2EubGVmdCsocy49Cm9mZnNldExlZnR8fDApLGQ9
M0RpLnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLHY9M0RuLnRpY2tGb3JtYXQoKSh0LngoKShpLnBv
aT0KbnQsaS5wb2ludEluZGV4KSksbT0zRHIudGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbnQsaS5w
b2ludEluZGV4KSk7QyE9M0RudWxsPQomJmUudG9vbHRpcC5zaG93KFtmLGxdLEMoaS5zZXJpZXMu
a2V5LHYsbSxpLEYpLCJuIiwxLHMsIngtbnZ0b29sdGlwIiksayE9M0Q9Cm51bGwmJmUudG9vbHRp
cC5zaG93KFtjLGRdLGsoaS5zZXJpZXMua2V5LHYsbSxpLEYpLCJlIiwxLHMsInktbnZ0b29sdGlw
IiksTD0KIT0zRG51bGwmJmUudG9vbHRpcC5zaG93KFtvLHVdLEwoaS5zZXJpZXMua2V5LHYsbSxp
LEYpLGkudmFsdWU8MD8ibiI6InMiLG51PQpsbCxzKX0saj0zRFt7a2V5OiJNYWduaWZ5IixkaXNh
YmxlZDohMH1dO3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2U9Cm91dC50b29sdGlw
IixmdW5jdGlvbihlKXtNLnRvb2x0aXBIaWRlKGUpLGQzLnNlbGVjdCgiLm52LWNoYXJ0LSIrdC5p
ZCgpKyIgLj0KbnYtc2VyaWVzLSIrZS5zZXJpZXNJbmRleCsiIC5udi1kaXN0eC0iK2UucG9pbnRJ
bmRleCkuYXR0cigieTEiLDApLGQzLnNlbGVjPQp0KCIubnYtY2hhcnQtIit0LmlkKCkrIiAubnYt
c2VyaWVzLSIrZS5zZXJpZXNJbmRleCsiIC5udi1kaXN0eS0iK2UucG9pbnRJbmQ9CmV4KS5hdHRy
KCJ4MiIsdS5zaXplKCkpfSksTS5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7TiYmZS50b29s
dGlwLmNsZWFudT0KcCgpfSksRi5kaXNwYXRjaD0zRE0sRi5zY2F0dGVyPTNEdCxGLmxlZ2VuZD0z
RGksRi5jb250cm9scz0zRHMsRi54QXhpcz0zRG4sPQpGLnlBeGlzPTNEcixGLmRpc3RYPTNEbyxG
LmRpc3RZPTNEdSxkMy5yZWJpbmQoRix0LCJpZCIsImludGVyYWN0aXZlIiwicG9pbnQ9CkFjdGl2
ZSIsIngiLCJ5Iiwic2hhcGUiLCJzaXplIiwieFNjYWxlIiwieVNjYWxlIiwielNjYWxlIiwieERv
bWFpbiIsInlEb21haT0KbiIsInhSYW5nZSIsInlSYW5nZSIsInNpemVEb21haW4iLCJzaXplUmFu
Z2UiLCJmb3JjZVgiLCJmb3JjZVkiLCJmb3JjZVNpemUiPQosImNsaXBWb3Jvbm9pIiwiY2xpcFJh
ZGl1cyIsInVzZVZvcm9ub2kiKSxGLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmI9Cmlu
ZChGKSxGLm1hcmdpbj0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhLnRv
cD0zRHR5cGVvZiBlLnRvcD0KIT0zRCJ1bmRlZmluZWQiP2UudG9wOmEudG9wLGEucmlnaHQ9M0R0
eXBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0PQo6YS5yaWdodCxhLmJvdHRvbT0z
RHR5cGVvZiBlLmJvdHRvbSE9M0QidW5kZWZpbmVkIj9lLmJvdHRvbTphLmJvdHRvbSxhLmxlZnQ9
Cj0zRHR5cGVvZiBlLmxlZnQhPTNEInVuZGVmaW5lZCI/ZS5sZWZ0OmEubGVmdCxGKTphfSxGLndp
ZHRoPTNEZnVuY3Rpb24oZSl7cj0KZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj0zRGUsRik6Zn0s
Ri5oZWlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzPQoubGVuZ3RoPyhsPTNEZSxG
KTpsfSxGLmNvbG9yPTNEZnVuY3Rpb24odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGM9M0Rl
LnU9CnRpbHMuZ2V0Q29sb3IodCksaS5jb2xvcihjKSxvLmNvbG9yKGMpLHUuY29sb3IoYyksRik6
Y30sRi5zaG93RGlzdFg9M0RmdW5jdD0KaW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyht
PTNEZSxGKTptfSxGLnNob3dEaXN0WT0zRGZ1bmN0aW9uKGUpe3JldHVyPQpuIGFyZ3VtZW50cy5s
ZW5ndGg/KGc9M0RlLEYpOmd9LEYuc2hvd0NvbnRyb2xzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFy
Z3VtZW49CnRzLmxlbmd0aD8oUz0zRGUsRik6U30sRi5zaG93TGVnZW5kPTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KD0KeT0zRGUsRik6eX0sRi5zaG93WEF4aXM9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYj0zRGUsRik6Yn0sPQpGLnNob3dZQXhp
cz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh3PTNEZSxGKTp3fSxGLnJp
Z2h0QWxpZ249CllBeGlzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KEU9
M0RlLHIub3JpZW50KGU/InJpZ2h0IjoibGVmdD0KIiksRik6RX0sRi5maXNoZXllPTNEZnVuY3Rp
b24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHg9M0RlLEYpOnh9LEYueFBhPQpkZGluZz0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPTNEZSxGKTpkfSxGLnlQYWRk
aW5nPTNEZnVuY3Q9CmlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odj0zRGUsRik6dn0s
Ri50b29sdGlwcz0zRGZ1bmN0aW9uKGUpe3JldHVybj0KIGFyZ3VtZW50cy5sZW5ndGg/KE49M0Rl
LEYpOk59LEYudG9vbHRpcENvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lPQpudHMu
bGVuZ3RoPyhMPTNEZSxGKTpMfSxGLnRvb2x0aXBYQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGU9Cm5ndGg/KEM9M0RlLEYpOkN9LEYudG9vbHRpcFlDb250ZW50PTNEZnVu
Y3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KD0Kaz0zRGUsRik6a30sRi5zdGF0ZT0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhBPTNEZSxGKTpBfSxGLmRlPQpm
YXVsdFN0YXRlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KE89M0RlLEYp
Ok99LEYubm9EYXRhPTNEZnU9Cm5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oXz0z
RGUsRik6X30sRi50cmFuc2l0aW9uRHVyYXRpb249M0RmdW5jdD0KaW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhEPTNEZSxGKTpEfSxGfSxlLm1vZGVscy5zY2F0dGVyUGx1c0xpbmVDaGFy
PQp0PTNEZnVuY3Rpb24oKXtmdW5jdGlvbiBCKGUpe3JldHVybiBlLmVhY2goZnVuY3Rpb24oZSl7
ZnVuY3Rpb24gVigpe2lmKFMpcmU9CnR1cm4gVS5zZWxlY3QoIi5udi1wb2ludC1wYXRocyIpLnN0
eWxlKCJwb2ludGVyLWV2ZW50cyIsImFsbCIpLCExO1Uuc2VsZWN0KD0KIi5udi1wb2ludC1wYXRo
cyIpLnN0eWxlKCJwb2ludGVyLWV2ZW50cyIsIm5vbmUiKTt2YXIgaT0zRGQzLm1vdXNlKHRoaXMp
O2guPQpkaXN0b3J0aW9uKEUpLmZvY3VzKGlbMF0pLHAuZGlzdG9ydGlvbihFKS5mb2N1cyhpWzFd
KSxVLnNlbGVjdCgiLm52LXNjYXR0ZXI9CldyYXAiKS5kYXR1bShlLmZpbHRlcihmdW5jdGlvbihl
KXtyZXR1cm4hZS5kaXNhYmxlZH0pKS5jYWxsKHQpLGcmJlUuc2VsZWN0KD0KIi5udi14Lm52LWF4
aXMiKS5jYWxsKG4pLHkmJlUuc2VsZWN0KCIubnYteS5udi1heGlzIikuY2FsbChyKSxVLnNlbGVj
dCgiLm52PQotZGlzdHJpYnV0aW9uWCIpLmRhdHVtKGUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVy
biFlLmRpc2FibGVkfSkpLmNhbGwobyksVS49CnNlbGVjdCgiLm52LWRpc3RyaWJ1dGlvblkiKS5k
YXR1bShlLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKT0KLmNhbGwodSl9
dmFyIFQ9M0RkMy5zZWxlY3QodGhpcyksTj0zRHRoaXMsQz0zRChmfHxwYXJzZUludChULnN0eWxl
KCJ3aWR0aCIpPQopfHw5NjApLWEubGVmdC1hLnJpZ2h0LE09M0QobHx8cGFyc2VJbnQoVC5zdHls
ZSgiaGVpZ2h0IikpfHw0MDApLWEudG9wLWEuYm89CnR0b207Qi51cGRhdGU9M0RmdW5jdGlvbigp
e1QuY2FsbChCKX0sQi5jb250YWluZXI9M0R0aGlzLGsuZGlzYWJsZWQ9M0RlLm1hcD0KKGZ1bmN0
aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pO2lmKCFMKXt2YXIgajtMPTNEe307Zm9yKGogaW4g
aylrW2pdaW5zdGFuPQpjZW9mIEFycmF5P0xbal09M0RrW2pdLnNsaWNlKDApOkxbal09M0RrW2pd
fWlmKCFlfHwhZS5sZW5ndGh8fCFlLmZpbHRlcihmdW49CmN0aW9uKGUpe3JldHVybiBlLnZhbHVl
cy5sZW5ndGh9KS5sZW5ndGgpe3ZhciBGPTNEVC5zZWxlY3RBbGwoIi5udi1ub0RhdGEiKT0KLmRh
dGEoW09dKTtyZXR1cm4gRi5lbnRlcigpLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnZk
MyBudi1ub0RhdGEiKS5hPQp0dHIoImR5IiwiLS43ZW0iKS5zdHlsZSgidGV4dC1hbmNob3IiLCJt
aWRkbGUiKSxGLmF0dHIoIngiLGEubGVmdCtDLzIpLmF0dHI9CigieSIsYS50b3ArTS8yKS50ZXh0
KGZ1bmN0aW9uKGUpe3JldHVybiBlfSksQn1ULnNlbGVjdEFsbCgiLm52LW5vRGF0YSIpLnJlbT0K
b3ZlKCksaD0zRHQueFNjYWxlKCkscD0zRHQueVNjYWxlKCksXz0zRF98fGgsRD0zRER8fHA7dmFy
IEk9M0RULnNlbGVjdEFsbCgiPQpnLm52LXdyYXAubnYtc2NhdHRlckNoYXJ0IikuZGF0YShbZV0p
LHE9M0RJLmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3M9CiIsIm52ZDMgbnYtd3JhcCBu
di1zY2F0dGVyQ2hhcnQgbnYtY2hhcnQtIit0LmlkKCkpLFI9M0RxLmFwcGVuZCgiZyIpLFU9M0RJ
Lj0Kc2VsZWN0KCJnIik7Ui5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtYmFj
a2dyb3VuZCIpLnN0eWxlKCJwb2luPQp0ZXItZXZlbnRzIiwibm9uZSIpLFIuYXBwZW5kKCJnIiku
YXR0cigiY2xhc3MiLCJudi14IG52LWF4aXMiKSxSLmFwcGVuZCgiZyI9CikuYXR0cigiY2xhc3Mi
LCJudi15IG52LWF4aXMiKSxSLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtc2NhdHRlcldy
YXAiKT0KLFIuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1yZWdyZXNzaW9uTGluZXNXcmFw
IiksUi5hcHBlbmQoImciKS5hdHRyKCJjPQpsYXNzIiwibnYtZGlzdFdyYXAiKSxSLmFwcGVuZCgi
ZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kV3JhcCIpLFIuYXBwZW5kKCI9CmciKS5hdHRyKCJj
bGFzcyIsIm52LWNvbnRyb2xzV3JhcCIpLEkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIr
YS5sZWZ0Kz0KIiwiK2EudG9wKyIpIiksYiYmVS5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS5hdHRy
KCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitDPQorIiwwKSIpLG0mJihpLndpZHRoKEMvMiksSS5z
ZWxlY3QoIi5udi1sZWdlbmRXcmFwIikuZGF0dW0oZSkuY2FsbChpKSxhLnRvcCE9Cj0zRGkuaGVp
Z2h0KCkmJihhLnRvcD0zRGkuaGVpZ2h0KCksTT0zRChsfHxwYXJzZUludChULnN0eWxlKCJoZWln
aHQiKSl8fDQwMD0KKS1hLnRvcC1hLmJvdHRvbSksSS5zZWxlY3QoIi5udi1sZWdlbmRXcmFwIiku
YXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrPQpDLzIrIiwiKyAtYS50b3ArIikiKSksdyYm
KHMud2lkdGgoMTgwKS5jb2xvcihbIiM0NDQiXSksVS5zZWxlY3QoIi5udi1jb250cm89CmxzV3Jh
cCIpLmRhdHVtKEgpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrIC1hLnRvcCsiKSIp
LmNhbGwocykpLHQudz0KaWR0aChDKS5oZWlnaHQoTSkuY29sb3IoZS5tYXAoZnVuY3Rpb24oZSx0
KXtyZXR1cm4gZS5jb2xvcnx8YyhlLHQpfSkuZmlsdGVyPQooZnVuY3Rpb24odCxuKXtyZXR1cm4h
ZVtuXS5kaXNhYmxlZH0pKSxJLnNlbGVjdCgiLm52LXNjYXR0ZXJXcmFwIikuZGF0dW0oZS49CmZp
bHRlcihmdW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pKS5jYWxsKHQpLEkuc2VsZWN0KCIu
bnYtcmVncmVzc2lvbkxpbj0KZXNXcmFwIikuYXR0cigiY2xpcC1wYXRoIiwidXJsKCNudi1lZGdl
LWNsaXAtIit0LmlkKCkrIikiKTt2YXIgej0zREkuc2VsZWN0PQooIi5udi1yZWdyZXNzaW9uTGlu
ZXNXcmFwIikuc2VsZWN0QWxsKCIubnYtcmVnTGluZXMiKS5kYXRhKGZ1bmN0aW9uKGUpe3JldHU9
CnJuIGV9KTt6LmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudi1yZWdMaW5lcyIp
O3ZhciBXPTNEei5zZWxlY3RBbD0KbCgiLm52LXJlZ0xpbmUiKS5kYXRhKGZ1bmN0aW9uKGUpe3Jl
dHVybltlXX0pLFg9M0RXLmVudGVyKCkuYXBwZW5kKCJsaW5lIikuPQphdHRyKCJjbGFzcyIsIm52
LXJlZ0xpbmUiKS5zdHlsZSgic3Ryb2tlLW9wYWNpdHkiLDApO1cuYXR0cigieDEiLGgucmFuZ2Uo
KVs9CjBdKS5hdHRyKCJ4MiIsaC5yYW5nZSgpWzFdKS5hdHRyKCJ5MSIsZnVuY3Rpb24oZSx0KXty
ZXR1cm4gcChoLmRvbWFpbigpWzBdKj0KZS5zbG9wZStlLmludGVyY2VwdCl9KS5hdHRyKCJ5MiIs
ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcChoLmRvbWFpbigpWzFdKmUuc2xvPQpwZStlLmludGVyY2Vw
dCl9KS5zdHlsZSgic3Ryb2tlIixmdW5jdGlvbihlLHQsbil7cmV0dXJuIGMoZSxuKX0pLnN0eWxl
KCJzdHI9Cm9rZS1vcGFjaXR5IixmdW5jdGlvbihlLHQpe3JldHVybiBlLmRpc2FibGVkfHx0eXBl
b2YgZS5zbG9wZT0zRD0zRCJ1bmRlZmluZT0KZCJ8fHR5cGVvZiBlLmludGVyY2VwdD0zRD0zRCJ1
bmRlZmluZWQiPzA6MX0pLGcmJihuLnNjYWxlKGgpLnRpY2tzKG4udGlja3MoPQopP24udGlja3Mo
KTpDLzEwMCkudGlja1NpemUoLU0sMCksVS5zZWxlY3QoIi5udi14Lm52LWF4aXMiKS5hdHRyKCJ0
cmFuc2Zvcm09CiIsInRyYW5zbGF0ZSgwLCIrcC5yYW5nZSgpWzBdKyIpIikuY2FsbChuKSkseSYm
KHIuc2NhbGUocCkudGlja3Moci50aWNrcygpPz0Kci50aWNrcygpOk0vMzYpLnRpY2tTaXplKC1D
LDApLFUuc2VsZWN0KCIubnYteS5udi1heGlzIikuY2FsbChyKSksZCYmKG8uZ2V0PQpEYXRhKHQu
eCgpKS5zY2FsZShoKS53aWR0aChDKS5jb2xvcihlLm1hcChmdW5jdGlvbihlLHQpe3JldHVybiBl
LmNvbG9yfHxjKGU9Cix0KX0pLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiFlW25dLmRpc2Fi
bGVkfSkpLFIuc2VsZWN0KCIubnYtZGlzdFdyYXAiKT0KLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNz
IiwibnYtZGlzdHJpYnV0aW9uWCIpLFUuc2VsZWN0KCIubnYtZGlzdHJpYnV0aW9uWCIpPQouYXR0
cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKDAsIitwLnJhbmdlKClbMF0rIikiKS5kYXR1bShlLmZp
bHRlcihmdW5jdGlvbig9CmUpe3JldHVybiFlLmRpc2FibGVkfSkpLmNhbGwobykpLHYmJih1Lmdl
dERhdGEodC55KCkpLnNjYWxlKHApLndpZHRoKE0pLmNvbD0Kb3IoZS5tYXAoZnVuY3Rpb24oZSx0
KXtyZXR1cm4gZS5jb2xvcnx8YyhlLHQpfSkuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuPQoh
ZVtuXS5kaXNhYmxlZH0pKSxSLnNlbGVjdCgiLm52LWRpc3RXcmFwIikuYXBwZW5kKCJnIikuYXR0
cigiY2xhc3MiLCJudi1kaXM9CnRyaWJ1dGlvblkiKSxVLnNlbGVjdCgiLm52LWRpc3RyaWJ1dGlv
blkiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisoYj0KP0M6LXUuc2l6ZSgpKSsiLDAp
IikuZGF0dW0oZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KSkuY2FsbCh1
PQopKSxkMy5maXNoZXllJiYoVS5zZWxlY3QoIi5udi1iYWNrZ3JvdW5kIikuYXR0cigid2lkdGgi
LEMpLmF0dHIoImhlaWdodCIsTSk9CixVLnNlbGVjdCgiLm52LWJhY2tncm91bmQiKS5vbigibW91
c2Vtb3ZlIixWKSxVLnNlbGVjdCgiLm52LWJhY2tncm91bmQiKS5vbj0KKCJjbGljayIsZnVuY3Rp
b24oKXtTPTNEIVN9KSx0LmRpc3BhdGNoLm9uKCJlbGVtZW50Q2xpY2suZnJlZXplRmlzaGV5ZSIs
ZnVuPQpjdGlvbigpe1M9M0QhU30pKSxzLmRpc3BhdGNoLm9uKCJsZWdlbmRDbGljayIsZnVuY3Rp
b24oZSxpKXtlLmRpc2FibGVkPTNEIWU9Ci5kaXNhYmxlZCxFPTNEZS5kaXNhYmxlZD8wOjIuNSxV
LnNlbGVjdCgiLm52LWJhY2tncm91bmQiKS5zdHlsZSgicG9pbnRlci1ldj0KZW50cyIsZS5kaXNh
YmxlZD8ibm9uZSI6ImFsbCIpLFUuc2VsZWN0KCIubnYtcG9pbnQtcGF0aHMiKS5zdHlsZSgicG9p
bnRlci1lPQp2ZW50cyIsZS5kaXNhYmxlZD8iYWxsIjoibm9uZSIpLGUuZGlzYWJsZWQ/KGguZGlz
dG9ydGlvbihFKS5mb2N1cygwKSxwLmRpc3Q9Cm9ydGlvbihFKS5mb2N1cygwKSxVLnNlbGVjdCgi
Lm52LXNjYXR0ZXJXcmFwIikuY2FsbCh0KSxVLnNlbGVjdCgiLm52LXgubnYtYT0KeGlzIikuY2Fs
bChuKSxVLnNlbGVjdCgiLm52LXkubnYtYXhpcyIpLmNhbGwocikpOlM9M0QhMSxCLnVwZGF0ZSgp
fSksaS5kaXNwPQphdGNoLm9uKCJzdGF0ZUNoYW5nZSIsZnVuY3Rpb24oZSl7az0zRGUsQS5zdGF0
ZUNoYW5nZShrKSxCLnVwZGF0ZSgpfSksdC5kaXM9CnBhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVy
LnRvb2x0aXAiLGZ1bmN0aW9uKGUpe2QzLnNlbGVjdCgiLm52LWNoYXJ0LSIrdC5pZD0KKCkrIiAu
bnYtc2VyaWVzLSIrZS5zZXJpZXNJbmRleCsiIC5udi1kaXN0eC0iK2UucG9pbnRJbmRleCkuYXR0
cigieTEiLGUucG9zPQpbMV0tTSksZDMuc2VsZWN0KCIubnYtY2hhcnQtIit0LmlkKCkrIiAubnYt
c2VyaWVzLSIrZS5zZXJpZXNJbmRleCsiIC5udi1kaXM9CnR5LSIrZS5wb2ludEluZGV4KS5hdHRy
KCJ4MiIsZS5wb3NbMF0rby5zaXplKCkpLGUucG9zPTNEW2UucG9zWzBdK2EubGVmdCxlLj0KcG9z
WzFdK2EudG9wXSxBLnRvb2x0aXBTaG93KGUpfSksQS5vbigidG9vbHRpcFNob3ciLGZ1bmN0aW9u
KGUpe3gmJlAoZSxOLnBhPQpyZW50Tm9kZSl9KSxBLm9uKCJjaGFuZ2VTdGF0ZSIsZnVuY3Rpb24o
dCl7dHlwZW9mIHQuZGlzYWJsZWQhPTNEInVuZGVmaW5lZCI9CiYmKGUuZm9yRWFjaChmdW5jdGlv
bihlLG4pe2UuZGlzYWJsZWQ9M0R0LmRpc2FibGVkW25dfSksay5kaXNhYmxlZD0zRHQuZGlzYT0K
YmxlZCksQi51cGRhdGUoKX0pLF89M0RoLmNvcHkoKSxEPTNEcC5jb3B5KCl9KSxCfXZhciB0PTNE
ZS5tb2RlbHMuc2NhdHRlcigpPQosbj0zRGUubW9kZWxzLmF4aXMoKSxyPTNEZS5tb2RlbHMuYXhp
cygpLGk9M0RlLm1vZGVscy5sZWdlbmQoKSxzPTNEZS5tb2RlbHM9Ci5sZWdlbmQoKSxvPTNEZS5t
b2RlbHMuZGlzdHJpYnV0aW9uKCksdT0zRGUubW9kZWxzLmRpc3RyaWJ1dGlvbigpLGE9M0R7dG9w
Oj0KMzAscmlnaHQ6MjAsYm90dG9tOjUwLGxlZnQ6NzV9LGY9M0RudWxsLGw9M0RudWxsLGM9M0Rl
LnV0aWxzLmRlZmF1bHRDb2xvcigpPQosaD0zRGQzLmZpc2hleWU/ZDMuZmlzaGV5ZS5zY2FsZShk
My5zY2FsZS5saW5lYXIpLmRpc3RvcnRpb24oMCk6dC54U2NhbGUoKSw9CnA9M0RkMy5maXNoZXll
P2QzLmZpc2hleWUuc2NhbGUoZDMuc2NhbGUubGluZWFyKS5kaXN0b3J0aW9uKDApOnQueVNjYWxl
KCksZD0KPTNEITEsdj0zRCExLG09M0QhMCxnPTNEITAseT0zRCEwLGI9M0QhMSx3PTNEISFkMy5m
aXNoZXllLEU9M0QwLFM9M0QhMSx4PTNEPQohMCxUPTNEZnVuY3Rpb24oZSx0LG4pe3JldHVybiI8
c3Ryb25nPiIrdCsiPC9zdHJvbmc+In0sTj0zRGZ1bmN0aW9uKGUsdCxuKXs9CnJldHVybiI8c3Ry
b25nPiIrbisiPC9zdHJvbmc+In0sQz0zRGZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiI8aDM+Iitl
KyI8L2gzPj0KIisiPHA+IityKyI8L3A+In0saz0zRHt9LEw9M0RudWxsLEE9M0RkMy5kaXNwYXRj
aCgidG9vbHRpcFNob3ciLCJ0b29sdGlwSGlkPQplIiwic3RhdGVDaGFuZ2UiLCJjaGFuZ2VTdGF0
ZSIpLE89M0QiTm8gRGF0YSBBdmFpbGFibGUuIixNPTNEMDt0LnhTY2FsZShoKS49CnlTY2FsZShw
KSxuLm9yaWVudCgiYm90dG9tIikudGlja1BhZGRpbmcoMTApLHIub3JpZW50KGI/InJpZ2h0Ijoi
bGVmdCIpLnRpYz0Ka1BhZGRpbmcoMTApLG8uYXhpcygieCIpLHUuYXhpcygieSIpLHMudXBkYXRl
U3RhdGUoITEpO3ZhciBfLEQsUD0zRGZ1bmN0aW9uPQooaSxzKXt2YXIgbz0zRGkucG9zWzBdKyhz
Lm9mZnNldExlZnR8fDApLHU9M0RpLnBvc1sxXSsocy5vZmZzZXRUb3B8fDApLGY9M0Q9CmkucG9z
WzBdKyhzLm9mZnNldExlZnR8fDApLGw9M0RwLnJhbmdlKClbMF0rYS50b3ArKHMub2Zmc2V0VG9w
fHwwKSxjPTNEaC5yYT0KbmdlKClbMF0rYS5sZWZ0KyhzLm9mZnNldExlZnR8fDApLGQ9M0RpLnBv
c1sxXSsocy5vZmZzZXRUb3B8fDApLHY9M0RuLnRpY2tGPQpvcm1hdCgpKHQueCgpKGkucG9pbnQs
aS5wb2ludEluZGV4KSksbT0zRHIudGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbnQsaS5wb2k9Cm50
SW5kZXgpKTtUIT0zRG51bGwmJmUudG9vbHRpcC5zaG93KFtmLGxdLFQoaS5zZXJpZXMua2V5LHYs
bSxpLEIpLCJuIiwxLHMsIj0KeC1udnRvb2x0aXAiKSxOIT0zRG51bGwmJmUudG9vbHRpcC5zaG93
KFtjLGRdLE4oaS5zZXJpZXMua2V5LHYsbSxpLEIpLCJlIiwxPQoscywieS1udnRvb2x0aXAiKSxD
IT0zRG51bGwmJmUudG9vbHRpcC5zaG93KFtvLHVdLEMoaS5zZXJpZXMua2V5LHYsbSxpLnBvaW49
CnQudG9vbHRpcCxpLEIpLGkudmFsdWU8MD8ibiI6InMiLG51bGwscyl9LEg9M0Rbe2tleToiTWFn
bmlmeSIsZGlzYWJsZWQ6ITB9XT0KO3JldHVybiB0LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2Vv
dXQudG9vbHRpcCIsZnVuY3Rpb24oZSl7QS50b29sdGlwSGlkZShlPQopLGQzLnNlbGVjdCgiLm52
LWNoYXJ0LSIrdC5pZCgpKyIgLm52LXNlcmllcy0iK2Uuc2VyaWVzSW5kZXgrIiAubnYtZGlzdHgt
Iis9CmUucG9pbnRJbmRleCkuYXR0cigieTEiLDApLGQzLnNlbGVjdCgiLm52LWNoYXJ0LSIrdC5p
ZCgpKyIgLm52LXNlcmllcy0iK2Uucz0KZXJpZXNJbmRleCsiIC5udi1kaXN0eS0iK2UucG9pbnRJ
bmRleCkuYXR0cigieDIiLHUuc2l6ZSgpKX0pLEEub24oInRvb2x0aXBIPQppZGUiLGZ1bmN0aW9u
KCl7eCYmZS50b29sdGlwLmNsZWFudXAoKX0pLEIuZGlzcGF0Y2g9M0RBLEIuc2NhdHRlcj0zRHQs
Qi5sZWc9CmVuZD0zRGksQi5jb250cm9scz0zRHMsQi54QXhpcz0zRG4sQi55QXhpcz0zRHIsQi5k
aXN0WD0zRG8sQi5kaXN0WT0zRHUsZDMucj0KZWJpbmQoQix0LCJpZCIsImludGVyYWN0aXZlIiwi
cG9pbnRBY3RpdmUiLCJ4IiwieSIsInNoYXBlIiwic2l6ZSIsInhTY2FsZSIsPQoieVNjYWxlIiwi
elNjYWxlIiwieERvbWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJzaXplRG9tYWlu
Iiwic2l6ZVI9CmFuZ2UiLCJmb3JjZVgiLCJmb3JjZVkiLCJmb3JjZVNpemUiLCJjbGlwVm9yb25v
aSIsImNsaXBSYWRpdXMiLCJ1c2VWb3Jvbm9pIj0KKSxCLm9wdGlvbnM9M0RlLnV0aWxzLm9wdGlv
bnNGdW5jLmJpbmQoQiksQi5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJnPQp1bWVudHMu
bGVuZ3RoPyhhLnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDphLnRvcCxh
LnJpZ2h0PTNEdHk9CnBlb2YgZS5yaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0OmEucmlnaHQs
YS5ib3R0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEIj0KdW5kZWZpbmVkIj9lLmJvdHRvbTphLmJv
dHRvbSxhLmxlZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDphPQoubGVm
dCxCKTphfSxCLndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGY9
M0RlLEIpOmZ9LEIuaGU9CmlnaHQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0
aD8obD0zRGUsQik6bH0sQi5jb2xvcj0zRGZ1bmN0aW9uKD0KdCl7cmV0dXJuIGFyZ3VtZW50cy5s
ZW5ndGg/KGM9M0RlLnV0aWxzLmdldENvbG9yKHQpLGkuY29sb3IoYyksby5jb2xvcihjKSx1PQou
Y29sb3IoYyksQik6Y30sQi5zaG93RGlzdFg9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oZD0zRGUsQik9CjpkfSxCLnNob3dEaXN0WT0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyh2PTNEZSxCKTp2fSxCLnNob3dDbz0KbnRyb2xzPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHc9M0RlLEIpOnd9LEIuc2hvd0xlZ2VuZD0zRGZ1
PQpuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG09M0RlLEIpOm19LEIuc2hvd1hB
eGlzPTNEZnVuY3Rpb24oZSl7cmU9CnR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZz0zRGUsQik6Z30s
Qi5zaG93WUF4aXM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbj0KdHMubGVuZ3RoPyh5PTNE
ZSxCKTp5fSxCLnJpZ2h0QWxpZ25ZQXhpcz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuPQpndGg/KGI9M0RlLHIub3JpZW50KGU/InJpZ2h0IjoibGVmdCIpLEIpOmJ9LEIuZmlzaGV5
ZT0zRGZ1bmN0aW9uKGUpe3JldHVybiA9CmFyZ3VtZW50cy5sZW5ndGg/KEU9M0RlLEIpOkV9LEIu
dG9vbHRpcHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbj0KZ3RoPyh4PTNEZSxC
KTp4fSxCLnRvb2x0aXBDb250ZW50PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KEM9Cj0zRGUsQik6Q30sQi50b29sdGlwWENvbnRlbnQ9M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8oVD0zRGUsQj0KKTpUfSxCLnRvb2x0aXBZQ29udGVudD0zRGZ1bmN0
aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhOPTNEZSxCKTpOfSxCPQouc3RhdGU9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaz0zRGUsQik6a30sQi5kZWZhdWx0
U3RhdGU9M0Q9CmZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhMPTNEZSxCKTpM
fSxCLm5vRGF0YT0zRGZ1bmN0aW9uKGUpe3JldD0KdXJuIGFyZ3VtZW50cy5sZW5ndGg/KE89M0Rl
LEIpOk99LEIudHJhbnNpdGlvbkR1cmF0aW9uPTNEZnVuY3Rpb24oZSl7cmV0dXJuPQogYXJndW1l
bnRzLmxlbmd0aD8oTT0zRGUsQik6TX0sQn0sZS5tb2RlbHMuc3BhcmtsaW5lPTNEZnVuY3Rpb24o
KXtmdW5jdGlvbiA9CmQoZSl7cmV0dXJuIGUuZWFjaChmdW5jdGlvbihlKXt2YXIgaT0zRG4tdC5s
ZWZ0LXQucmlnaHQsZD0zRHItdC50b3AtdC5ib3R0bz0KbSx2PTNEZDMuc2VsZWN0KHRoaXMpO3Mu
ZG9tYWluKGx8fGQzLmV4dGVudChlLHUpKS5yYW5nZShofHxbMCxpXSksby5kb21haW4oPQpjfHxk
My5leHRlbnQoZSxhKSkucmFuZ2UocHx8W2QsMF0pO3ZhciBtPTNEdi5zZWxlY3RBbGwoImcubnYt
d3JhcC5udi1zcGFya2w9CmluZSIpLmRhdGEoW2VdKSxnPTNEbS5lbnRlcigpLmFwcGVuZCgiZyIp
LmF0dHIoImNsYXNzIiwibnZkMyBudi13cmFwIG52LXNwYT0KcmtsaW5lIiksYj0zRGcuYXBwZW5k
KCJnIiksdz0zRG0uc2VsZWN0KCJnIik7bS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoPQoi
K3QubGVmdCsiLCIrdC50b3ArIikiKTt2YXIgRT0zRG0uc2VsZWN0QWxsKCJwYXRoIikuZGF0YShm
dW5jdGlvbihlKXtyZXR1cm49CltlXX0pO0UuZW50ZXIoKS5hcHBlbmQoInBhdGgiKSxFLmV4aXQo
KS5yZW1vdmUoKSxFLnN0eWxlKCJzdHJva2UiLGZ1bmN0aW9uKD0KZSx0KXtyZXR1cm4gZS5jb2xv
cnx8ZihlLHQpfSkuYXR0cigiZCIsZDMuc3ZnLmxpbmUoKS54KGZ1bmN0aW9uKGUsdCl7cmV0dXJu
PQogcyh1KGUsdCkpfSkueShmdW5jdGlvbihlLHQpe3JldHVybiBvKGEoZSx0KSl9KSk7dmFyIFM9
M0RtLnNlbGVjdEFsbCgiY2lyY2w9CmUubnYtcG9pbnQiKS5kYXRhKGZ1bmN0aW9uKGUpe2Z1bmN0
aW9uIG4odCl7aWYodCE9M0QtMSl7dmFyIG49M0RlW3RdO3JldHVybj0KIG4ucG9pbnRJbmRleD0z
RHQsbn1yZXR1cm4gbnVsbH12YXIgdD0zRGUubWFwKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSx0
KX0pPQoscj0zRG4odC5sYXN0SW5kZXhPZihvLmRvbWFpbigpWzFdKSksaT0zRG4odC5pbmRleE9m
KG8uZG9tYWluKClbMF0pKSxzPTNEbig9CnQubGVuZ3RoLTEpO3JldHVybltpLHIsc10uZmlsdGVy
KGZ1bmN0aW9uKGUpe3JldHVybiBlIT0zRG51bGx9KX0pO1MuZW50ZXIoKT0KLmFwcGVuZCgiY2ly
Y2xlIiksUy5leGl0KCkucmVtb3ZlKCksUy5hdHRyKCJjeCIsZnVuY3Rpb24oZSx0KXtyZXR1cm4g
cyh1KGUsPQplLnBvaW50SW5kZXgpKX0pLmF0dHIoImN5IixmdW5jdGlvbihlLHQpe3JldHVybiBv
KGEoZSxlLnBvaW50SW5kZXgpKX0pLmF0dHI9CigiciIsMikuYXR0cigiY2xhc3MiLGZ1bmN0aW9u
KGUsdCl7cmV0dXJuIHUoZSxlLnBvaW50SW5kZXgpPTNEPTNEcy5kb21haW4oKT0KWzFdPyJudi1w
b2ludCBudi1jdXJyZW50VmFsdWUiOmEoZSxlLnBvaW50SW5kZXgpPTNEPTNEby5kb21haW4oKVsw
XT8ibnYtcG9pPQpudCBudi1taW5WYWx1ZSI6Im52LXBvaW50IG52LW1heFZhbHVlIn0pfSksZH12
YXIgdD0zRHt0b3A6MixyaWdodDowLGJvdHRvbTo9CjIsbGVmdDowfSxuPTNENDAwLHI9M0QzMixp
PTNEITAscz0zRGQzLnNjYWxlLmxpbmVhcigpLG89M0RkMy5zY2FsZS5saW5lYXIoKT0KLHU9M0Rm
dW5jdGlvbihlKXtyZXR1cm4gZS54fSxhPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGUueX0sZj0zRGUu
dXRpbHMuZ2V0Q29sPQpvcihbIiMwMDAiXSksbCxjLGgscDtyZXR1cm4gZC5vcHRpb25zPTNEZS51
dGlscy5vcHRpb25zRnVuYy5iaW5kKGQpLGQubWFyZ2k9Cm49M0RmdW5jdGlvbihlKXtyZXR1cm4g
YXJndW1lbnRzLmxlbmd0aD8odC50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZD0KIj9l
LnRvcDp0LnRvcCx0LnJpZ2h0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdo
dDp0LnJpZ2h0LHQuYm90PQp0b209M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW5lZCI/ZS5i
b3R0b206dC5ib3R0b20sdC5sZWZ0PTNEdHlwZW9mIGUubGU9CmZ0IT0zRCJ1bmRlZmluZWQiP2Uu
bGVmdDp0LmxlZnQsZCk6dH0sZC53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudD0K
cy5sZW5ndGg/KG49M0RlLGQpOm59LGQuaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHI9M0RlPQosZCk6cn0sZC54PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KHU9M0RkMy5mdW5jdG9yKGUpLGQpOnV9LGQ9Ci55PTNEZnVuY3Rpb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9M0RkMy5mdW5jdG9yKGUpLGQpOmF9LGQueFNjYWxl
PQo9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0zRGUsZCk6c30sZC55
U2NhbGU9M0RmdW5jdGlvbihlKXs9CnJldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPTNEZSxkKTpv
fSxkLnhEb21haW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbj0KdHMubGVuZ3RoPyhsPTNE
ZSxkKTpsfSxkLnlEb21haW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8o
Yz0KPTNEZSxkKTpjfSxkLnhSYW5nZT0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyhoPTNEZSxkKTpofSxkLnlSPQphbmdlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50
cy5sZW5ndGg/KHA9M0RlLGQpOnB9LGQuYW5pbWF0ZT0zRGZ1bmN0aW89Cm4oZSl7cmV0dXJuIGFy
Z3VtZW50cy5sZW5ndGg/KGk9M0RlLGQpOml9LGQuY29sb3I9M0RmdW5jdGlvbih0KXtyZXR1cm4g
YXJndT0KbWVudHMubGVuZ3RoPyhmPTNEZS51dGlscy5nZXRDb2xvcih0KSxkKTpmfSxkfSxlLm1v
ZGVscy5zcGFya2xpbmVQbHVzPTNEZnVuPQpjdGlvbigpe2Z1bmN0aW9uIHYoZSl7cmV0dXJuIGUu
ZWFjaChmdW5jdGlvbihjKXtmdW5jdGlvbiBPKCl7aWYoYSlyZXR1cm47dmE9CnIgZT0zREMuc2Vs
ZWN0QWxsKCIubnYtaG92ZXJWYWx1ZSIpLmRhdGEodSkscj0zRGUuZW50ZXIoKS5hcHBlbmQoImci
KS5hdHRyKD0KImNsYXNzIiwibnYtaG92ZXJWYWx1ZSIpLnN0eWxlKCJzdHJva2Utb3BhY2l0eSIs
MCkuc3R5bGUoImZpbGwtb3BhY2l0eSIsMCk7PQplLmV4aXQoKS5zdHlsZSgic3Ryb2tlLW9wYWNp
dHkiLDApLnN0eWxlKCJmaWxsLW9wYWNpdHkiLDApLnJlbW92ZSgpLGUuYXR0cig9CiJ0cmFuc2Zv
cm0iLGZ1bmN0aW9uKGUpe3JldHVybiJ0cmFuc2xhdGUoIitzKHQueCgpKGNbZV0sZSkpKyIsMCki
fSkuc3R5bGUoIj0Kc3Ryb2tlLW9wYWNpdHkiLDEpLnN0eWxlKCJmaWxsLW9wYWNpdHkiLDEpO2lm
KCF1Lmxlbmd0aClyZXR1cm47ci5hcHBlbmQoImxpPQpuZSIpLmF0dHIoIngxIiwwKS5hdHRyKCJ5
MSIsLW4udG9wKS5hdHRyKCJ4MiIsMCkuYXR0cigieTIiLGIpLHIuYXBwZW5kKCJ0ZXg9CnQiKS5h
dHRyKCJjbGFzcyIsIm52LXhWYWx1ZSIpLmF0dHIoIngiLC02KS5hdHRyKCJ5Iiwtbi50b3ApLmF0
dHIoInRleHQtYW5jaD0Kb3IiLCJlbmQiKS5hdHRyKCJkeSIsIi45ZW0iKSxDLnNlbGVjdCgiLm52
LWhvdmVyVmFsdWUgLm52LXhWYWx1ZSIpLnRleHQoZih0PQoueCgpKGNbdVswXV0sdVswXSkpKSxy
LmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibnYteVZhbHVlIikuYXR0cigieCIsNik9Ci5h
dHRyKCJ5Iiwtbi50b3ApLmF0dHIoInRleHQtYW5jaG9yIiwic3RhcnQiKS5hdHRyKCJkeSIsIi45
ZW0iKSxDLnNlbGVjdCgiLj0KbnYtaG92ZXJWYWx1ZSAubnYteVZhbHVlIikudGV4dChsKHQueSgp
KGNbdVswXV0sdVswXSkpKX1mdW5jdGlvbiBNKCl7ZnVuY3RpPQpvbiByKGUsbil7dmFyIHI9M0RN
YXRoLmFicyh0LngoKShlWzBdLDApLW4pLGk9M0QwO2Zvcih2YXIgcz0zRDA7czxlLmxlbmd0aDs9
CnMrKylNYXRoLmFicyh0LngoKShlW3NdLHMpLW4pPHImJihyPTNETWF0aC5hYnModC54KCkoZVtz
XSxzKS1uKSxpPTNEcyk7cmV0dT0Kcm4gaX1pZihhKXJldHVybjt2YXIgZT0zRGQzLm1vdXNlKHRo
aXMpWzBdLW4ubGVmdDt1PTNEW3IoYyxNYXRoLnJvdW5kKHMuaW52PQplcnQoZSkpKV0sTygpfXZh
ciBtPTNEZDMuc2VsZWN0KHRoaXMpLGc9M0Qocnx8cGFyc2VJbnQobS5zdHlsZSgid2lkdGgiKSl8
fDk9CjYwKS1uLmxlZnQtbi5yaWdodCxiPTNEKGl8fHBhcnNlSW50KG0uc3R5bGUoImhlaWdodCIp
KXx8NDAwKS1uLnRvcC1uLmJvdHRvbT0KO3YudXBkYXRlPTNEZnVuY3Rpb24oKXt2KGUpfSx2LmNv
bnRhaW5lcj0zRHRoaXM7aWYoIWN8fCFjLmxlbmd0aCl7dmFyIHc9M0RtPQouc2VsZWN0QWxsKCIu
bnYtbm9EYXRhIikuZGF0YShbZF0pO3JldHVybiB3LmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikuYXR0
cigiY2w9CmFzcyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIpLnN0eWxlKCJ0
ZXh0LWFuY2hvciIsIm1pZGRsZSIpLHcuYT0KdHRyKCJ4IixuLmxlZnQrZy8yKS5hdHRyKCJ5Iixu
LnRvcCtiLzIpLnRleHQoZnVuY3Rpb24oZSl7cmV0dXJuIGV9KSx2fW0uc2VsPQplY3RBbGwoIi5u
di1ub0RhdGEiKS5yZW1vdmUoKTt2YXIgRT0zRHQueSgpKGNbYy5sZW5ndGgtMV0sYy5sZW5ndGgt
MSk7cz0zRHQ9Ci54U2NhbGUoKSxvPTNEdC55U2NhbGUoKTt2YXIgUz0zRG0uc2VsZWN0QWxsKCJn
Lm52LXdyYXAubnYtc3BhcmtsaW5lcGx1cyIpLj0KZGF0YShbY10pLFQ9M0RTLmVudGVyKCkuYXBw
ZW5kKCJnIikuYXR0cigiY2xhc3MiLCJudmQzIG52LXdyYXAgbnYtc3BhcmtsaW5lPQpwbHVzIiks
Tj0zRFQuYXBwZW5kKCJnIiksQz0zRFMuc2VsZWN0KCJnIik7Ti5hcHBlbmQoImciKS5hdHRyKCJj
bGFzcyIsIm52LXM9CnBhcmtsaW5lV3JhcCIpLE4uYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJu
di12YWx1ZVdyYXAiKSxOLmFwcGVuZCgiZyIpLmF0dD0KcigiY2xhc3MiLCJudi1ob3ZlckFyZWEi
KSxTLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK24ubGVmdCsiLCIrbi50b3ArPQoiKSIp
O3ZhciBrPTNEQy5zZWxlY3QoIi5udi1zcGFya2xpbmVXcmFwIik7dC53aWR0aChnKS5oZWlnaHQo
Yiksay5jYWxsKHQpO3Y9CmFyIEw9M0RDLnNlbGVjdCgiLm52LXZhbHVlV3JhcCIpLEE9M0RMLnNl
bGVjdEFsbCgiLm52LWN1cnJlbnRWYWx1ZSIpLmRhdGEoWz0KRV0pO0EuZW50ZXIoKS5hcHBlbmQo
InRleHQiKS5hdHRyKCJjbGFzcyIsIm52LWN1cnJlbnRWYWx1ZSIpLmF0dHIoImR4IixwPy04PQo6
OCkuYXR0cigiZHkiLCIuOWVtIikuc3R5bGUoInRleHQtYW5jaG9yIixwPyJlbmQiOiJzdGFydCIp
LEEuYXR0cigieCIsZysocD89Cm4ucmlnaHQ6MCkpLmF0dHIoInkiLGg/ZnVuY3Rpb24oZSl7cmV0
dXJuIG8oZSl9OjApLnN0eWxlKCJmaWxsIix0LmNvbG9yKCkoYz0KW2MubGVuZ3RoLTFdLGMubGVu
Z3RoLTEpKS50ZXh0KGwoRSkpLE4uc2VsZWN0KCIubnYtaG92ZXJBcmVhIikuYXBwZW5kKCJyZWN0
PQoiKS5vbigibW91c2Vtb3ZlIixNKS5vbigiY2xpY2siLGZ1bmN0aW9uKCl7YT0zRCFhfSkub24o
Im1vdXNlb3V0IixmdW5jdGlvbig9Cil7dT0zRFtdLE8oKX0pLEMuc2VsZWN0KCIubnYtaG92ZXJB
cmVhIHJlY3QiKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKGUpez0KcmV0dXJuInRyYW5zbGF0
ZSgiKyAtbi5sZWZ0KyIsIisgLW4udG9wKyIpIn0pLmF0dHIoIndpZHRoIixnK24ubGVmdCtuLnJp
Z2h0PQopLmF0dHIoImhlaWdodCIsYituLnRvcCl9KSx2fXZhciB0PTNEZS5tb2RlbHMuc3Bhcmts
aW5lKCksbj0zRHt0b3A6MTUscmlnaHQ9CjoxMDAsYm90dG9tOjEwLGxlZnQ6NTB9LHI9M0RudWxs
LGk9M0RudWxsLHMsbyx1PTNEW10sYT0zRCExLGY9M0RkMy5mb3JtYXQoIj0KLHIiKSxsPTNEZDMu
Zm9ybWF0KCIsLjJmIiksYz0zRCEwLGg9M0QhMCxwPTNEITEsZD0zRCJObyBEYXRhIEF2YWlsYWJs
ZS4iO3JlPQp0dXJuIHYuc3BhcmtsaW5lPTNEdCxkMy5yZWJpbmQodix0LCJ4IiwieSIsInhTY2Fs
ZSIsInlTY2FsZSIsImNvbG9yIiksdi5vcHQ9CmlvbnM9M0RlLnV0aWxzLm9wdGlvbnNGdW5jLmJp
bmQodiksdi5tYXJnaW49M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLj0KbGVuZ3RoPyhu
LnRvcD0zRHR5cGVvZiBlLnRvcCE9M0QidW5kZWZpbmVkIj9lLnRvcDpuLnRvcCxuLnJpZ2h0PTNE
dHlwZW9mIGUuPQpyaWdodCE9M0QidW5kZWZpbmVkIj9lLnJpZ2h0Om4ucmlnaHQsbi5ib3R0b209
M0R0eXBlb2YgZS5ib3R0b20hPTNEInVuZGVmaW49CmVkIj9lLmJvdHRvbTpuLmJvdHRvbSxuLmxl
ZnQ9M0R0eXBlb2YgZS5sZWZ0IT0zRCJ1bmRlZmluZWQiP2UubGVmdDpuLmxlZnQsdj0KKTpufSx2
LndpZHRoPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9M0RlLHYpOnJ9
LHYuaGVpZ2h0PTNEPQpmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0zRGUs
dik6aX0sdi54VGlja0Zvcm1hdD0zRGZ1bmN0aW9uKGU9Cil7cmV0dXJuIGFyZ3VtZW50cy5sZW5n
dGg/KGY9M0RlLHYpOmZ9LHYueVRpY2tGb3JtYXQ9M0RmdW5jdGlvbihlKXtyZXR1cm4gYT0Kcmd1
bWVudHMubGVuZ3RoPyhsPTNEZSx2KTpsfSx2LnNob3dWYWx1ZT0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuPQpndGg/KGM9M0RlLHYpOmN9LHYuYWxpZ25WYWx1ZT0zRGZ1bmN0aW9u
KGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSw9CnYpOmh9LHYucmlnaHRBbGlnblZh
bHVlPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLHYpOnB9LD0K
di5ub0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGUsdik6
ZH0sdn0sZS5tb2RlbHMuc3RhPQpja2VkQXJlYT0zRGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZyhlKXty
ZXR1cm4gZS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBhPTNEbi10Lmw9CmVmdC10LnJpZ2h0LGI9M0Ry
LXQudG9wLXQuYm90dG9tLHc9M0RkMy5zZWxlY3QodGhpcyk7cD0zRHYueFNjYWxlKCksZD0zRHYu
eT0KU2NhbGUoKTt2YXIgRT0zRGU7ZS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7ZS5zZXJpZXNJbmRl
eD0zRHQsZS52YWx1ZXM9M0RlLnZhPQpsdWVzLm1hcChmdW5jdGlvbihlLG4pe3JldHVybiBlLmlu
ZGV4PTNEbixlLnNlcmllc0luZGV4PTNEdCxlfSl9KTt2YXIgUz0zRGU9Ci5maWx0ZXIoZnVuY3Rp
b24oZSl7cmV0dXJuIWUuZGlzYWJsZWR9KTtlPTNEZDMubGF5b3V0LnN0YWNrKCkub3JkZXIobCku
b2Zmcz0KZXQoZikudmFsdWVzKGZ1bmN0aW9uKGUpe3JldHVybiBlLnZhbHVlc30pLngobykueSh1
KS5vdXQoZnVuY3Rpb24oZSx0LG4pe3ZhPQpyIHI9M0R1KGUpPTNEPTNEPTNEMD8wOm47ZS5kaXNw
bGF5PTNEe3k6cix5MDp0fX0pKFMpO3ZhciBUPTNEdy5zZWxlY3RBbGwoImc9Ci5udi13cmFwLm52
LXN0YWNrZWRhcmVhIikuZGF0YShbZV0pLE49M0RULmVudGVyKCkuYXBwZW5kKCJnIikuYXR0cigi
Y2xhc3MiLD0KIm52ZDMgbnYtd3JhcCBudi1zdGFja2VkYXJlYSIpLEM9M0ROLmFwcGVuZCgiZGVm
cyIpLGs9M0ROLmFwcGVuZCgiZyIpLEw9M0RUPQouc2VsZWN0KCJnIik7ay5hcHBlbmQoImciKS5h
dHRyKCJjbGFzcyIsIm52LWFyZWFXcmFwIiksay5hcHBlbmQoImciKS5hdHRyKCI9CmNsYXNzIiwi
bnYtc2NhdHRlcldyYXAiKSxULmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3QubGVmdCsi
LCIrdC50b3ArIj0KKSIpLHYud2lkdGgoYSkuaGVpZ2h0KGIpLngobykueShmdW5jdGlvbihlKXty
ZXR1cm4gZS5kaXNwbGF5LnkrZS5kaXNwbGF5LnkwPQp9KS5mb3JjZVkoWzBdKS5jb2xvcihlLm1h
cChmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbG9yfHxpKGUsZS5zZXJpZXNJbmRleCk9Cn0pKTt2
YXIgQT0zREwuc2VsZWN0KCIubnYtc2NhdHRlcldyYXAiKS5kYXR1bShlKTtBLmNhbGwodiksQy5h
cHBlbmQoImNsaXBQYT0KdGgiKS5hdHRyKCJpZCIsIm52LWVkZ2UtY2xpcC0iK3MpLmFwcGVuZCgi
cmVjdCIpLFQuc2VsZWN0KCIjbnYtZWRnZS1jbGlwLSIrPQpzKyIgcmVjdCIpLmF0dHIoIndpZHRo
IixhKS5hdHRyKCJoZWlnaHQiLGIpLEwuYXR0cigiY2xpcC1wYXRoIixoPyJ1cmwoI252LWU9CmRn
ZS1jbGlwLSIrcysiKSI6IiIpO3ZhciBPPTNEZDMuc3ZnLmFyZWEoKS54KGZ1bmN0aW9uKGUsdCl7
cmV0dXJuIHAobyhlLHQpKT0KfSkueTAoZnVuY3Rpb24oZSl7cmV0dXJuIGQoZS5kaXNwbGF5Lnkw
KX0pLnkxKGZ1bmN0aW9uKGUpe3JldHVybiBkKGUuZGlzcGxhPQp5LnkrZS5kaXNwbGF5LnkwKX0p
LmludGVycG9sYXRlKGMpLE09M0RkMy5zdmcuYXJlYSgpLngoZnVuY3Rpb24oZSx0KXtyZXR1cm49
CiBwKG8oZSx0KSl9KS55MChmdW5jdGlvbihlKXtyZXR1cm4gZChlLmRpc3BsYXkueTApfSkueTEo
ZnVuY3Rpb24oZSl7cmV0dXJuID0KZChlLmRpc3BsYXkueTApfSksXz0zREwuc2VsZWN0KCIubnYt
YXJlYVdyYXAiKS5zZWxlY3RBbGwoInBhdGgubnYtYXJlYSIpLmRhPQp0YShmdW5jdGlvbihlKXty
ZXR1cm4gZX0pO18uZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24o
ZSw9CnQpe3JldHVybiJudi1hcmVhIG52LWFyZWEtIit0fSkuYXR0cigiZCIsZnVuY3Rpb24oZSx0
KXtyZXR1cm4gTShlLnZhbHVlcyxlLj0Kc2VyaWVzSW5kZXgpfSkub24oIm1vdXNlb3ZlciIsZnVu
Y3Rpb24oZSx0KXtkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgiaG92ZXIiPQosITApLG0uYXJlYU1v
dXNlb3Zlcih7cG9pbnQ6ZSxzZXJpZXM6ZS5rZXkscG9zOltkMy5ldmVudC5wYWdlWCxkMy5ldmVu
dC5wYWc9CmVZXSxzZXJpZXNJbmRleDplLnNlcmllc0luZGV4fSl9KS5vbigibW91c2VvdXQiLGZ1
bmN0aW9uKGUsdCl7ZDMuc2VsZWN0KHRoaT0KcykuY2xhc3NlZCgiaG92ZXIiLCExKSxtLmFyZWFN
b3VzZW91dCh7cG9pbnQ6ZSxzZXJpZXM6ZS5rZXkscG9zOltkMy5ldmVudC5wPQphZ2VYLGQzLmV2
ZW50LnBhZ2VZXSxzZXJpZXNJbmRleDplLnNlcmllc0luZGV4fSl9KS5vbigiY2xpY2siLGZ1bmN0
aW9uKGUsdCk9CntkMy5zZWxlY3QodGhpcykuY2xhc3NlZCgiaG92ZXIiLCExKSxtLmFyZWFDbGlj
ayh7cG9pbnQ6ZSxzZXJpZXM6ZS5rZXkscG9zOj0KW2QzLmV2ZW50LnBhZ2VYLGQzLmV2ZW50LnBh
Z2VZXSxzZXJpZXNJbmRleDplLnNlcmllc0luZGV4fSl9KSxfLmV4aXQoKS5yZW1vPQp2ZSgpLF8u
c3R5bGUoImZpbGwiLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY29sb3J8fGkoZSxlLnNlcmllc0lu
ZGV4KX0pLnN0eWw9CmUoInN0cm9rZSIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jb2xvcnx8aShl
LGUuc2VyaWVzSW5kZXgpfSksXy5hdHRyKCJkIixmdT0KbmN0aW9uKGUsdCl7cmV0dXJuIE8oZS52
YWx1ZXMsdCl9KSx2LmRpc3BhdGNoLm9uKCJlbGVtZW50TW91c2VvdmVyLmFyZWEiLGZ1PQpuY3Rp
b24oZSl7TC5zZWxlY3QoIi5udi1jaGFydC0iK3MrIiAubnYtYXJlYS0iK2Uuc2VyaWVzSW5kZXgp
LmNsYXNzZWQoImhvdmU9CnIiLCEwKX0pLHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC5h
cmVhIixmdW5jdGlvbihlKXtMLnNlbGVjdCgiLm52LWNoYT0KcnQtIitzKyIgLm52LWFyZWEtIitl
LnNlcmllc0luZGV4KS5jbGFzc2VkKCJob3ZlciIsITEpfSksZy5kM19zdGFja2VkT2Zmc2V0PQpf
c3RhY2tQZXJjZW50PTNEZnVuY3Rpb24oZSl7dmFyIHQ9M0RlLmxlbmd0aCxuPTNEZVswXS5sZW5n
dGgscj0zRDEvdCxpLHMsbyw9CmE9M0RbXTtmb3Iocz0zRDA7czxuOysrcyl7Zm9yKGk9M0QwLG89
M0QwO2k8RS5sZW5ndGg7aSsrKW8rPTNEdShFW2ldLnZhbHVlcz0KW3NdKTtpZihvKWZvcihpPTNE
MDtpPHQ7aSsrKWVbaV1bc11bMV0vPTNEbztlbHNlIGZvcihpPTNEMDtpPHQ7aSsrKWVbaV1bc11b
PQoxXT0zRHJ9Zm9yKHM9M0QwO3M8bjsrK3MpYVtzXT0zRDA7cmV0dXJuIGF9fSksZ312YXIgdD0z
RHt0b3A6MCxyaWdodDowLGJvdHQ9Cm9tOjAsbGVmdDowfSxuPTNEOTYwLHI9M0Q1MDAsaT0zRGUu
dXRpbHMuZGVmYXVsdENvbG9yKCkscz0zRE1hdGguZmxvb3IoTWF0aD0KLnJhbmRvbSgpKjFlNSks
bz0zRGZ1bmN0aW9uKGUpe3JldHVybiBlLnh9LHU9M0RmdW5jdGlvbihlKXtyZXR1cm4gZS55fSxh
PTNEPQoic3RhY2siLGY9M0QiemVybyIsbD0zRCJkZWZhdWx0IixjPTNEImxpbmVhciIsaD0zRCEx
LHAsZCx2PTNEZS5tb2RlbHMuc2NhdHQ9CmVyKCksbT0zRGQzLmRpc3BhdGNoKCJ0b29sdGlwU2hv
dyIsInRvb2x0aXBIaWRlIiwiYXJlYUNsaWNrIiwiYXJlYU1vdXNlb3Zlcj0KIiwiYXJlYU1vdXNl
b3V0Iik7cmV0dXJuIHYuc2l6ZSgyLjIpLnNpemVEb21haW4oWzIuMiwyLjJdKSx2LmRpc3BhdGNo
Lm9uKCJlPQpsZW1lbnRDbGljay5hcmVhIixmdW5jdGlvbihlKXttLmFyZWFDbGljayhlKX0pLHYu
ZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW89CnZlci50b29sdGlwIixmdW5jdGlvbihlKXtlLnBv
cz0zRFtlLnBvc1swXSt0LmxlZnQsZS5wb3NbMV0rdC50b3BdLG0udG9vbHRpcD0KU2hvdyhlKX0p
LHYuZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW91dC50b29sdGlwIixmdW5jdGlvbihlKXttLnRv
b2x0aXBIaWRlPQooZSl9KSxnLmRpc3BhdGNoPTNEbSxnLnNjYXR0ZXI9M0R2LGQzLnJlYmluZChn
LHYsImludGVyYWN0aXZlIiwic2l6ZSIsInhTY2E9CmxlIiwieVNjYWxlIiwielNjYWxlIiwieERv
bWFpbiIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJzaXplRG9tYWluIiwiZj0Kb3JjZVgi
LCJmb3JjZVkiLCJmb3JjZVNpemUiLCJjbGlwVm9yb25vaSIsInVzZVZvcm9ub2kiLCJjbGlwUmFk
aXVzIiwiaGlnaGxpPQpnaHRQb2ludCIsImNsZWFySGlnaGxpZ2h0cyIpLGcub3B0aW9ucz0zRGUu
dXRpbHMub3B0aW9uc0Z1bmMuYmluZChnKSxnLng9M0Q9CmZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhvPTNEZDMuZnVuY3RvcihlKSxnKTpvfSxnLnk9M0RmdW5jdGlvbj0KKGUp
e3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh1PTNEZDMuZnVuY3RvcihlKSxnKTp1fSxnLm1hcmdp
bj0zRGZ1bmN0aW9uKGUpPQp7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQudG9wPTNEdHlwZW9m
IGUudG9wIT0zRCJ1bmRlZmluZWQiP2UudG9wOnQudG9wLHQ9Ci5yaWdodD0zRHR5cGVvZiBlLnJp
Z2h0IT0zRCJ1bmRlZmluZWQiP2UucmlnaHQ6dC5yaWdodCx0LmJvdHRvbT0zRHR5cGVvZiBlLj0K
Ym90dG9tIT0zRCJ1bmRlZmluZWQiP2UuYm90dG9tOnQuYm90dG9tLHQubGVmdD0zRHR5cGVvZiBl
LmxlZnQhPTNEInVuZGVmaW5lPQpkIj9lLmxlZnQ6dC5sZWZ0LGcpOnR9LGcud2lkdGg9M0RmdW5j
dGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0zRGU9CixnKTpufSxnLmhlaWdodD0z
RGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPTNEZSxnKTpyfSxnLmNsaXBF
ZD0KZ2U9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD0zRGUsZyk6aH0s
Zy5jb2xvcj0zRGZ1bmN0aW9uKHQpPQp7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9M0RlLnV0
aWxzLmdldENvbG9yKHQpLGcpOml9LGcub2Zmc2V0PTNEZnVuY3Rpb249CihlKXtyZXR1cm4gYXJn
dW1lbnRzLmxlbmd0aD8oZj0zRGUsZyk6Zn0sZy5vcmRlcj0zRGZ1bmN0aW9uKGUpe3JldHVybiBh
cmd1bT0KZW50cy5sZW5ndGg/KGw9M0RlLGcpOmx9LGcuc3R5bGU9M0RmdW5jdGlvbihlKXtpZigh
YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gPQphO2E9M0RlO3N3aXRjaChhKXtjYXNlInN0YWNrIjpn
Lm9mZnNldCgiemVybyIpLGcub3JkZXIoImRlZmF1bHQiKTticmVhaztjYXM9CmUic3RyZWFtIjpn
Lm9mZnNldCgid2lnZ2xlIiksZy5vcmRlcigiaW5zaWRlLW91dCIpO2JyZWFrO2Nhc2Uic3RyZWFt
LWNlbnRlcj0KIjpnLm9mZnNldCgic2lsaG91ZXR0ZSIpLGcub3JkZXIoImluc2lkZS1vdXQiKTti
cmVhaztjYXNlImV4cGFuZCI6Zy5vZmZzZXQoPQoiZXhwYW5kIiksZy5vcmRlcigiZGVmYXVsdCIp
O2JyZWFrO2Nhc2Uic3RhY2tfcGVyY2VudCI6Zy5vZmZzZXQoZy5kM19zdGFja2U9CmRPZmZzZXRf
c3RhY2tQZXJjZW50KSxnLm9yZGVyKCJkZWZhdWx0Iil9cmV0dXJuIGd9LGcuaW50ZXJwb2xhdGU9
M0RmdW5jdGlvbj0KKGUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhjPTNEZSxnKTpjfSxnfSxl
Lm1vZGVscy5zdGFja2VkQXJlYUNoYXJ0PTNEZnVuPQpjdGlvbigpe2Z1bmN0aW9uIE0oeSl7cmV0
dXJuIHkuZWFjaChmdW5jdGlvbih5KXt2YXIgQT0zRGQzLnNlbGVjdCh0aGlzKSxfPQo9M0R0aGlz
LEQ9M0QoYXx8cGFyc2VJbnQoQS5zdHlsZSgid2lkdGgiKSl8fDk2MCktdS5sZWZ0LXUucmlnaHQs
UD0zRChmfHxwYXI9CnNlSW50KEEuc3R5bGUoImhlaWdodCIpKXx8NDAwKS11LnRvcC11LmJvdHRv
bTtNLnVwZGF0ZT0zRGZ1bmN0aW9uKCl7QS5jYWxsKD0KTSl9LE0uY29udGFpbmVyPTNEdGhpcyxT
LmRpc2FibGVkPTNEeS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuISFlLmRpc2FibGVkfSk7PQppZigh
eCl7dmFyIEg7eD0zRHt9O2ZvcihIIGluIFMpU1tIXWluc3RhbmNlb2YgQXJyYXk/eFtIXT0zRFNb
SF0uc2xpY2UoMCk6eFs9CkhdPTNEU1tIXX1pZigheXx8IXkubGVuZ3RofHwheS5maWx0ZXIoZnVu
Y3Rpb24oZSl7cmV0dXJuIGUudmFsdWVzLmxlbmd0aH0pLj0KbGVuZ3RoKXt2YXIgQj0zREEuc2Vs
ZWN0QWxsKCIubnYtbm9EYXRhIikuZGF0YShbVF0pO3JldHVybiBCLmVudGVyKCkuYXBwZW5kPQoo
InRleHQiKS5hdHRyKCJjbGFzcyIsIm52ZDMgbnYtbm9EYXRhIikuYXR0cigiZHkiLCItLjdlbSIp
LnN0eWxlKCJ0ZXh0LWFuY2g9Cm9yIiwibWlkZGxlIiksQi5hdHRyKCJ4Iix1LmxlZnQrRC8yKS5h
dHRyKCJ5Iix1LnRvcCtQLzIpLnRleHQoZnVuY3Rpb24oZSl7cj0KZXR1cm4gZX0pLE19QS5zZWxl
Y3RBbGwoIi5udi1ub0RhdGEiKS5yZW1vdmUoKSxiPTNEdC54U2NhbGUoKSx3PTNEdC55U2NhbGUo
PQopO3ZhciBqPTNEQS5zZWxlY3RBbGwoImcubnYtd3JhcC5udi1zdGFja2VkQXJlYUNoYXJ0Iiku
ZGF0YShbeV0pLEY9M0RqLmVudGU9CnIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm52ZDMg
bnYtd3JhcCBudi1zdGFja2VkQXJlYUNoYXJ0IikuYXBwZW5kKCJnIj0KKSxJPTNEai5zZWxlY3Qo
ImciKTtGLmFwcGVuZCgicmVjdCIpLnN0eWxlKCJvcGFjaXR5IiwwKSxGLmFwcGVuZCgiZyIpLmF0
dHIoPQoiY2xhc3MiLCJudi14IG52LWF4aXMiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwi
bnYteSBudi1heGlzIiksRi5hcHBlbmQ9CigiZyIpLmF0dHIoImNsYXNzIiwibnYtc3RhY2tlZFdy
YXAiKSxGLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibnYtbGVnZW5kVz0KcmFwIiksRi5hcHBl
bmQoImciKS5hdHRyKCJjbGFzcyIsIm52LWNvbnRyb2xzV3JhcCIpLEYuYXBwZW5kKCJnIikuYXR0
cigiY2xhPQpzcyIsIm52LWludGVyYWN0aXZlIiksSS5zZWxlY3QoInJlY3QiKS5hdHRyKCJ3aWR0
aCIsRCkuYXR0cigiaGVpZ2h0IixQKTtpZig9Cmgpe3ZhciBxPTNEYz9ELUM6RDtpLndpZHRoKHEp
LEkuc2VsZWN0KCIubnYtbGVnZW5kV3JhcCIpLmRhdHVtKHkpLmNhbGwoaSksdT0KLnRvcCE9M0Rp
LmhlaWdodCgpJiYodS50b3A9M0RpLmhlaWdodCgpLFA9M0QoZnx8cGFyc2VJbnQoQS5zdHlsZSgi
aGVpZ2h0IikpPQp8fDQwMCktdS50b3AtdS5ib3R0b20pLEkuc2VsZWN0KCIubnYtbGVnZW5kV3Jh
cCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGE9CnRlKCIrKEQtcSkrIiwiKyAtdS50b3ArIiki
KX1pZihjKXt2YXIgUj0zRFt7a2V5Okwuc3RhY2tlZHx8IlN0YWNrZWQiLG1ldGFLZT0KeToiU3Rh
Y2tlZCIsZGlzYWJsZWQ6dC5zdHlsZSgpIT0zRCJzdGFjayIsc3R5bGU6InN0YWNrIn0se2tleTpM
LnN0cmVhbXx8IlN0PQpyZWFtIixtZXRhS2V5OiJTdHJlYW0iLGRpc2FibGVkOnQuc3R5bGUoKSE9
M0Qic3RyZWFtIixzdHlsZToic3RyZWFtIn0se2tleTo9CkwuZXhwYW5kZWR8fCJFeHBhbmRlZCIs
bWV0YUtleToiRXhwYW5kZWQiLGRpc2FibGVkOnQuc3R5bGUoKSE9M0QiZXhwYW5kIixzdD0KeWxl
OiJleHBhbmQifSx7a2V5Okwuc3RhY2tfcGVyY2VudHx8IlN0YWNrICUiLG1ldGFLZXk6IlN0YWNr
X1BlcmNlbnQiLGRpc2FiPQpsZWQ6dC5zdHlsZSgpIT0zRCJzdGFja19wZXJjZW50IixzdHlsZToi
c3RhY2tfcGVyY2VudCJ9XTtDPTNEay5sZW5ndGgvMyoyNjA9CixSPTNEUi5maWx0ZXIoZnVuY3Rp
b24oZSl7cmV0dXJuIGsuaW5kZXhPZihlLm1ldGFLZXkpIT0zRD0zRC0xfSkscy53aWR0aChDKT0K
LmNvbG9yKFsiIzQ0NCIsIiM0NDQiLCIjNDQ0Il0pLEkuc2VsZWN0KCIubnYtY29udHJvbHNXcmFw
IikuZGF0dW0oUikuY2FsbChzPQopLHUudG9wIT0zRE1hdGgubWF4KHMuaGVpZ2h0KCksaS5oZWln
aHQoKSkmJih1LnRvcD0zRE1hdGgubWF4KHMuaGVpZ2h0KCksaS49CmhlaWdodCgpKSxQPTNEKGZ8
fHBhcnNlSW50KEEuc3R5bGUoImhlaWdodCIpKXx8NDAwKS11LnRvcC11LmJvdHRvbSksSS5zZWxl
Yz0KdCgiLm52LWNvbnRyb2xzV3JhcCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIr
IC11LnRvcCsiKSIpfWouYXR0cigiPQp0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIit1LmxlZnQrIiwi
K3UudG9wKyIpIiksdiYmSS5zZWxlY3QoIi5udi15Lm52LWF4aXMiKS49CmF0dHIoInRyYW5zZm9y
bSIsInRyYW5zbGF0ZSgiK0QrIiwwKSIpLG0mJihvLndpZHRoKEQpLmhlaWdodChQKS5tYXJnaW4o
e2xlZj0KdDp1LmxlZnQsdG9wOnUudG9wfSkuc3ZnQ29udGFpbmVyKEEpLnhTY2FsZShiKSxqLnNl
bGVjdCgiLm52LWludGVyYWN0aXZlIikuPQpjYWxsKG8pKSx0LndpZHRoKEQpLmhlaWdodChQKTt2
YXIgVT0zREkuc2VsZWN0KCIubnYtc3RhY2tlZFdyYXAiKS5kYXR1bSh5KTs9ClUuY2FsbCh0KSxw
JiYobi5zY2FsZShiKS50aWNrcyhELzEwMCkudGlja1NpemUoLVAsMCksSS5zZWxlY3QoIi5udi14
Lm52LWF4aT0KcyIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgwLCIrUCsiKSIpLEkuc2Vs
ZWN0KCIubnYteC5udi1heGlzIikuY2FsbChuPQopKSxkJiYoci5zY2FsZSh3KS50aWNrcyh0Lm9m
ZnNldCgpPTNEPTNEIndpZ2dsZSI/MDpQLzM2KS50aWNrU2l6ZSgtRCwwKS5zZXQ9ClRpY2tGb3Jt
YXQodC5zdHlsZSgpPTNEPTNEImV4cGFuZCJ8fHQuc3R5bGUoKT0zRD0zRCJzdGFja19wZXJjZW50
Ij9kMy5mb3JtYT0KdCgiJSIpOkUpLEkuc2VsZWN0KCIubnYteS5udi1heGlzIikuY2FsbChyKSks
dC5kaXNwYXRjaC5vbigiYXJlYUNsaWNrLnRvZ2dsPQplIixmdW5jdGlvbihlKXt5LmZpbHRlcihm
dW5jdGlvbihlKXtyZXR1cm4hZS5kaXNhYmxlZH0pLmxlbmd0aD0zRD0zRD0zRDE/eS49CmZvckVh
Y2goZnVuY3Rpb24oZSl7ZS5kaXNhYmxlZD0zRCExfSk6eS5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7
dC5kaXNhYmxlZD0zRD0KbiE9M0RlLnNlcmllc0luZGV4fSksUy5kaXNhYmxlZD0zRHkubWFwKGZ1
bmN0aW9uKGUpe3JldHVybiEhZS5kaXNhYmxlZH0pLE4uPQpzdGF0ZUNoYW5nZShTKSxNLnVwZGF0
ZSgpfSksaS5kaXNwYXRjaC5vbigic3RhdGVDaGFuZ2UiLGZ1bmN0aW9uKGUpe1MuZGlzYWI9Cmxl
ZD0zRGUuZGlzYWJsZWQsTi5zdGF0ZUNoYW5nZShTKSxNLnVwZGF0ZSgpfSkscy5kaXNwYXRjaC5v
bigibGVnZW5kQ2xpY2siLD0KZnVuY3Rpb24oZSxuKXtpZighZS5kaXNhYmxlZClyZXR1cm47Uj0z
RFIubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVkPQo9M0QhMCxlfSksZS5kaXNhYmxl
ZD0zRCExLHQuc3R5bGUoZS5zdHlsZSksUy5zdHlsZT0zRHQuc3R5bGUoKSxOLnN0YXRlQ2hhbmc9
CmUoUyksTS51cGRhdGUoKX0pLG8uZGlzcGF0Y2gub24oImVsZW1lbnRNb3VzZW1vdmUiLGZ1bmN0
aW9uKGkpe3QuY2xlYXJIaWdobD0KaWdodHMoKTt2YXIgcyxhLGYsYz0zRFtdO3kuZmlsdGVyKGZ1
bmN0aW9uKGUsdCl7cmV0dXJuIGUuc2VyaWVzSW5kZXg9M0R0LCFlPQouZGlzYWJsZWR9KS5mb3JF
YWNoKGZ1bmN0aW9uKG4scil7YT0zRGUuaW50ZXJhY3RpdmVCaXNlY3Qobi52YWx1ZXMsaS5wb2lu
dFg9ClZhbHVlLE0ueCgpKSx0LmhpZ2hsaWdodFBvaW50KHIsYSwhMCk7dmFyIG89M0RuLnZhbHVl
c1thXTtpZih0eXBlb2Ygbz0zRD0zRD0KInVuZGVmaW5lZCIpcmV0dXJuO3R5cGVvZiBzPTNEPTNE
InVuZGVmaW5lZCImJihzPTNEbyksdHlwZW9mIGY9M0Q9M0QidW5kZWZpPQpuZWQiJiYoZj0zRE0u
eFNjYWxlKCkoTS54KCkobyxhKSkpO3ZhciB1PTNEdC5zdHlsZSgpPTNEPTNEImV4cGFuZCI/by5k
aXNwbGE9CnkueTpNLnkoKShvLGEpO2MucHVzaCh7a2V5Om4ua2V5LHZhbHVlOnUsY29sb3I6bChu
LG4uc2VyaWVzSW5kZXgpLHN0YWNrZWRWYT0KbHVlOm8uZGlzcGxheX0pfSksYy5yZXZlcnNlKCk7
aWYoYy5sZW5ndGg+Mil7dmFyIGg9M0RNLnlTY2FsZSgpLmludmVydChpLm1vPQp1c2VZKSxwPTNE
SW5maW5pdHksZD0zRG51bGw7Yy5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7aD0zRE1hdGguYWJzKGgp
O3ZhciBuPQo9M0RNYXRoLmFicyhlLnN0YWNrZWRWYWx1ZS55MCkscj0zRE1hdGguYWJzKGUuc3Rh
Y2tlZFZhbHVlLnkpO2lmKGg+PTNEbiYmaDw9Cj0zRHIrbil7ZD0zRHQ7cmV0dXJufX0pLGQhPTNE
bnVsbCYmKGNbZF0uaGlnaGxpZ2h0PTNEITApfXZhciB2PTNEbi50aWNrRm9ybT0KYXQoKShNLngo
KShzLGEpKSxtPTNEdC5zdHlsZSgpPTNEPTNEImV4cGFuZCI/ZnVuY3Rpb24oZSx0KXtyZXR1cm4g
ZDMuZm9ybWF0PQooIi4xJSIpKGUpfTpmdW5jdGlvbihlLHQpe3JldHVybiByLnRpY2tGb3JtYXQo
KShlKX07by50b29sdGlwLnBvc2l0aW9uKHtsZWY9CnQ6Zit1LmxlZnQsdG9wOmkubW91c2VZK3Uu
dG9wfSkuY2hhcnRDb250YWluZXIoXy5wYXJlbnROb2RlKS5lbmFibGVkKGcpLnZhbD0KdWVGb3Jt
YXR0ZXIobSkuZGF0YSh7dmFsdWU6dixzZXJpZXM6Y30pKCksby5yZW5kZXJHdWlkZUxpbmUoZil9
KSxvLmRpc3BhdGNoPQoub24oImVsZW1lbnRNb3VzZW91dCIsZnVuY3Rpb24oZSl7Ti50b29sdGlw
SGlkZSgpLHQuY2xlYXJIaWdobGlnaHRzKCl9KSxOLm89Cm4oInRvb2x0aXBTaG93IixmdW5jdGlv
bihlKXtnJiZPKGUsXy5wYXJlbnROb2RlKX0pLE4ub24oImNoYW5nZVN0YXRlIixmdW5jdD0KaW9u
KGUpe3R5cGVvZiBlLmRpc2FibGVkIT0zRCJ1bmRlZmluZWQiJiZ5Lmxlbmd0aD0zRD0zRD0zRGUu
ZGlzYWJsZWQubGVuZ3RoPQomJih5LmZvckVhY2goZnVuY3Rpb24odCxuKXt0LmRpc2FibGVkPTNE
ZS5kaXNhYmxlZFtuXX0pLFMuZGlzYWJsZWQ9M0RlLmRpc2E9CmJsZWQpLHR5cGVvZiBlLnN0eWxl
IT0zRCJ1bmRlZmluZWQiJiZ0LnN0eWxlKGUuc3R5bGUpLE0udXBkYXRlKCl9KX0pLE19dmFyID0K
dD0zRGUubW9kZWxzLnN0YWNrZWRBcmVhKCksbj0zRGUubW9kZWxzLmF4aXMoKSxyPTNEZS5tb2Rl
bHMuYXhpcygpLGk9M0RlLm1vPQpkZWxzLmxlZ2VuZCgpLHM9M0RlLm1vZGVscy5sZWdlbmQoKSxv
PTNEZS5pbnRlcmFjdGl2ZUd1aWRlbGluZSgpLHU9M0R7dG9wOjM9CjAscmlnaHQ6MjUsYm90dG9t
OjUwLGxlZnQ6NjB9LGE9M0RudWxsLGY9M0RudWxsLGw9M0RlLnV0aWxzLmRlZmF1bHRDb2xvcigp
LD0KYz0zRCEwLGg9M0QhMCxwPTNEITAsZD0zRCEwLHY9M0QhMSxtPTNEITEsZz0zRCEwLHk9M0Rm
dW5jdGlvbihlLHQsbixyLGkpe3JlPQp0dXJuIjxoMz4iK2UrIjwvaDM+IisiPHA+IituKyIgb24g
Iit0KyI8L3A+In0sYix3LEU9M0RkMy5mb3JtYXQoIiwuMmYiKSxTPQo9M0R7c3R5bGU6dC5zdHls
ZSgpfSx4PTNEbnVsbCxUPTNEIk5vIERhdGEgQXZhaWxhYmxlLiIsTj0zRGQzLmRpc3BhdGNoKCJ0
b289Cmx0aXBTaG93IiwidG9vbHRpcEhpZGUiLCJzdGF0ZUNoYW5nZSIsImNoYW5nZVN0YXRlIiks
Qz0zRDI1MCxrPTNEWyJTdGFja2VkIj0KLCJTdHJlYW0iLCJFeHBhbmRlZCJdLEw9M0R7fSxBPTNE
MDtuLm9yaWVudCgiYm90dG9tIikudGlja1BhZGRpbmcoNyksci5vcmllPQpudCh2PyJyaWdodCI6
ImxlZnQiKSxzLnVwZGF0ZVN0YXRlKCExKTt2YXIgTz0zRGZ1bmN0aW9uKGkscyl7dmFyIG89M0Rp
LnBvc1s9CjBdKyhzLm9mZnNldExlZnR8fDApLHU9M0RpLnBvc1sxXSsocy5vZmZzZXRUb3B8fDAp
LGE9M0RuLnRpY2tGb3JtYXQoKSh0LngoKT0KKGkucG9pbnQsaS5wb2ludEluZGV4KSksZj0zRHIu
dGlja0Zvcm1hdCgpKHQueSgpKGkucG9pbnQsaS5wb2ludEluZGV4KSksbD0KPTNEeShpLnNlcmll
cy5rZXksYSxmLGksTSk7ZS50b29sdGlwLnNob3coW28sdV0sbCxpLnZhbHVlPDA/Im4iOiJzIixu
dWxsLHMpPQp9O3JldHVybiB0LmRpc3BhdGNoLm9uKCJ0b29sdGlwU2hvdyIsZnVuY3Rpb24oZSl7
ZS5wb3M9M0RbZS5wb3NbMF0rdS5sZWZ0LGU9Ci5wb3NbMV0rdS50b3BdLE4udG9vbHRpcFNob3co
ZSl9KSx0LmRpc3BhdGNoLm9uKCJ0b29sdGlwSGlkZSIsZnVuY3Rpb24oZSl7Tj0KLnRvb2x0aXBI
aWRlKGUpfSksTi5vbigidG9vbHRpcEhpZGUiLGZ1bmN0aW9uKCl7ZyYmZS50b29sdGlwLmNsZWFu
dXAoKX0pLE0uPQpkaXNwYXRjaD0zRE4sTS5zdGFja2VkPTNEdCxNLmxlZ2VuZD0zRGksTS5jb250
cm9scz0zRHMsTS54QXhpcz0zRG4sTS55QXhpcz0KPTNEcixNLmludGVyYWN0aXZlTGF5ZXI9M0Rv
LGQzLnJlYmluZChNLHQsIngiLCJ5Iiwic2l6ZSIsInhTY2FsZSIsInlTY2FsZSIsPQoieERvbWFp
biIsInlEb21haW4iLCJ4UmFuZ2UiLCJ5UmFuZ2UiLCJzaXplRG9tYWluIiwiaW50ZXJhY3RpdmUi
LCJ1c2VWb3Jvbm89CmkiLCJvZmZzZXQiLCJvcmRlciIsInN0eWxlIiwiY2xpcEVkZ2UiLCJmb3Jj
ZVgiLCJmb3JjZVkiLCJmb3JjZVNpemUiLCJpbnRlcj0KcG9sYXRlIiksTS5vcHRpb25zPTNEZS51
dGlscy5vcHRpb25zRnVuYy5iaW5kKE0pLE0ubWFyZ2luPTNEZnVuY3Rpb24oZSl7cmV0PQp1cm4g
YXJndW1lbnRzLmxlbmd0aD8odS50b3A9M0R0eXBlb2YgZS50b3AhPTNEInVuZGVmaW5lZCI/ZS50
b3A6dS50b3AsdS5yaWc9Cmh0PTNEdHlwZW9mIGUucmlnaHQhPTNEInVuZGVmaW5lZCI/ZS5yaWdo
dDp1LnJpZ2h0LHUuYm90dG9tPTNEdHlwZW9mIGUuYm90dD0Kb20hPTNEInVuZGVmaW5lZCI/ZS5i
b3R0b206dS5ib3R0b20sdS5sZWZ0PTNEdHlwZW9mIGUubGVmdCE9M0QidW5kZWZpbmVkIj9lPQou
bGVmdDp1LmxlZnQsTSk6dX0sTS53aWR0aD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMu
bGVuZ3RoPyhhPTNEZSxNKTo9CmF9LE0uaGVpZ2h0PTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3Vt
ZW50cy5sZW5ndGg/KGY9M0RlLE0pOmZ9LE0uY29sb3I9M0RmdT0KbmN0aW9uKG4pe3JldHVybiBh
cmd1bWVudHMubGVuZ3RoPyhsPTNEZS51dGlscy5nZXRDb2xvcihuKSxpLmNvbG9yKGwpLHQuY29s
PQpvcihsKSxNKTpsfSxNLnNob3dDb250cm9scz0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVu
dHMubGVuZ3RoPyhjPTNEZSxNKTo9CmN9LE0uc2hvd0xlZ2VuZD0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyhoPTNEZSxNKTpofSxNLnNob3dYQT0KeGlzPTNEZnVuY3Rpb24o
ZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHA9M0RlLE0pOnB9LE0uc2hvd1lBeGlzPTNEZnVu
Y3RpPQpvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZD0zRGUsTSk6ZH0sTS5yaWdodEFs
aWduWUF4aXM9M0RmdW5jdGlvbihlKXs9CnJldHVybiBhcmd1bWVudHMubGVuZ3RoPyh2PTNEZSxy
Lm9yaWVudChlPyJyaWdodCI6ImxlZnQiKSxNKTp2fSxNLnVzZUludGVyYT0KY3RpdmVHdWlkZWxp
bmU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obT0zRGUsZT0zRD0zRD0z
RCEwJiYoPQpNLmludGVyYWN0aXZlKCExKSxNLnVzZVZvcm9ub2koITEpKSxNKTptfSxNLnRvb2x0
aXA9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXI9Cmd1bWVudHMubGVuZ3RoPyh5PTNEZSxNKTp5fSxN
LnRvb2x0aXBzPTNEZnVuY3Rpb24oZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndD0KaD8oZz0zRGUs
TSk6Z30sTS50b29sdGlwQ29udGVudD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1bWVudHMubGVu
Z3RoPyh5PTNEPQplLE0pOnl9LE0uc3RhdGU9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbnRz
Lmxlbmd0aD8oUz0zRGUsTSk6U30sTS5kZWZhdWw9CnRTdGF0ZT0zRGZ1bmN0aW9uKGUpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPyh4PTNEZSxNKTp4fSxNLm5vRGF0YT0zRGZ1bmN0aT0Kb24oZSl7
cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFQ9M0RlLE0pOlR9LE0udHJhbnNpdGlvbkR1cmF0aW9u
PTNEZnVuY3Rpb24oPQplKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oQT0zRGUsTSk6QX0sTS5j
b250cm9sc0RhdGE9M0RmdW5jdGlvbihlKXtyZXR1cm49CiBhcmd1bWVudHMubGVuZ3RoPyhrPTNE
ZSxNKTprfSxNLmNvbnRyb2xMYWJlbHM9M0RmdW5jdGlvbihlKXtyZXR1cm4gYXJndW1lbj0KdHMu
bGVuZ3RoP3R5cGVvZiBlIT0zRCJvYmplY3QiP0w6KEw9M0RlLE0pOkx9LHIuc2V0VGlja0Zvcm1h
dD0zRHIudGlja0Zvcm1hPQp0LHIudGlja0Zvcm1hdD0zRGZ1bmN0aW9uKGUpe3JldHVybiBhcmd1
bWVudHMubGVuZ3RoPyhFPTNEZSxyKTpFfSxNfX0oKSxkZWY9CmluZSgicGx1Z2luL3BsdWdpbnMv
bnZkMy9udi5kMyIsZnVuY3Rpb24oKXt9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvbnZkMy9jbz0K
bW1vbi9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9mb3Jtcy9kZWZhdWx0IiwicGx1Z2luL3BsdWdp
bnMvbnZkMy9udi5kMyJdLGZ1PQpuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3Rp
dGxlOiIiLGNhdGVnb3J5OiIiLGxpYnJhcnk6Ik5WRDMiLHRhZzo9CiJzdmciLGtleXdvcmRzOiJz
bWFsbCJ9KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9udmQzL2Jhci9jb25maWciLFsicGx1Z2lu
Lz0KY2hhcnRzL252ZDMvY29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGVu
ZCghMCx7fSxlLHt0aXRsZToiUmVnPQp1bGFyIixjYXRlZ29yeToiQmFyIGRpYWdyYW1zIixjb2x1
bW5zOnt4Ont0aXRsZToiVmFsdWVzIGZvciB4LWF4aXMiLGlzX2xhYmU9Cmw6ITAsaXNfYXV0bzoh
MCxpc191bmlxdWU6ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhpcyIsaXNfbnVtZXJpYzoh
MH19fT0KKX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9udmQzL2Jhcl9zdGFja2VkL2NvbmZpZyIs
WyJwbHVnaW4vY2hhcnRzL252ZDMvY29tPQptb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJu
ICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJTdGFja2VkIixjYXRlZ29yeTo9CiJCYXIgZGlhZ3Jh
bXMiLGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbGFiZWw6ITAsaXNf
YXV0bzohMD0KLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19u
dW1lcmljOiEwfX19KX0pLGRlZmluZSgicGx1PQpnaW4vY2hhcnRzL252ZDMvYmFyX2hvcml6b250
YWwvY29uZmlnIixbInBsdWdpbi9jaGFydHMvbnZkMy9jb21tb24vY29uZmlnIl09CixmdW5jdGlv
bihlKXtyZXR1cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6Ikhvcml6b250YWwiLGNhdGVnb3J5
OiJCYXIgZGlhZz0KcmFtcyIsc2V0dGluZ3M6e3hfYXhpc190eXBlOntpbml0OiJoaWRlIn19LGNv
bHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgtPQpheGlzIixpc19sYWJlbDohMCxpc19hdXRv
OiEwLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpc189Cm51bWVy
aWM6ITB9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL252ZDMvYmFyX2hvcml6b250YWxfc3Rh
Y2tlZC9jb25maWciLD0KWyJwbHVnaW4vY2hhcnRzL252ZDMvY29tbW9uL2NvbmZpZyJdLGZ1bmN0
aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0PQppdGxlOiJTdGFja2VkIGhvcml6b250
YWwiLGNhdGVnb3J5OiJCYXIgZGlhZ3JhbXMiLHNldHRpbmdzOnt4X2F4aXNfdHlwZTp7aW49Cml0
OiJoaWRlIn19LGNvbHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbGFiZWw6
ITAsaXNfYXV0bzohMCxpcz0KX3VuaXF1ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlz
Iixpc19udW1lcmljOiEwfX19KX0pLGRlZmluZSgicGx1Z2luPQovY2hhcnRzL252ZDMvbGluZV9m
b2N1cy9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9udmQzL2NvbW1vbi9jb25maWciXSxmdW5jdGk9
Cm9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiTGluZSB3aXRoIGZvY3VzIixj
YXRlZ29yeToiT3RoZXJzIix6bz0Kb21hYmxlOiJuYXRpdmUiLGNvbHVtbnM6e3g6e3RpdGxlOiJW
YWx1ZXMgZm9yIHgtYXhpcyIsaXNfbGFiZWw6ITAsaXNfYXV0bzohPQowLGlzX3VuaXF1ZTohMH0s
eTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1lcmljOiEwfX19KX0pLGRlZmluZSgi
cGw9CnVnaW4vY2hhcnRzL252ZDMvcGllL2NvbmZpZyIsWyJwbHVnaW4vcGx1Z2lucy9udmQzL252
LmQzIl0sZnVuY3Rpb24oKXtyZXR1cj0KbiAkLmV4dGVuZCghMCx7fSx7dGl0bGU6IlBpZSBjaGFy
dCIsY2F0ZWdvcnk6IkFyZWEgY2hhcnRzIixsaWJyYXJ5OiJOVkQzIix0PQphZzoic3ZnIixrZXl3
b3Jkczoic21hbGwiLGNvbHVtbnM6e2xhYmVsOnt0aXRsZToiTGFiZWxzIixpc19sYWJlbDohMCxp
c19hdXQ9Cm86ITB9LHk6e3RpdGxlOiJWYWx1ZXMiLGlzX251bWVyaWM6ITB9fSxzZXR0aW5nczp7
bWFpbl9zZXBhcmF0b3I6e3R5cGU6InNlcD0KYXJhdG9yIix0aXRsZToiUGllIGNoYXJ0IHNldHRp
bmdzIn0sZG9udXRfcmF0aW86e3RpdGxlOiJEb251dCByYXRpbyIsaW5mbzoiPQpEZXRlcm1pbmUg
aG93IGxhcmdlIHRoZSBkb251dCBob2xlIHdpbGwgYmUuIix0eXBlOiJzZWxlY3QiLGluaXQ6IjAu
NSIsZGF0YTo9Clt7bGFiZWw6IjUwJSIsdmFsdWU6IjAuNSJ9LHtsYWJlbDoiMjUlIix2YWx1ZToi
MC4yNSJ9LHtsYWJlbDoiMTAlIix2YWx1ZToiMD0KLjEwIn0se2xhYmVsOiIwJSIsdmFsdWU6IjAi
fV19LHNob3dfbGVnZW5kOnt0aXRsZToiU2hvdyBsZWdlbmQiLGluZm86IldvdWxkPQogeW91IGxp
a2UgdG8gYWRkIGEgbGVnZW5kPyIsdHlwZToicmFkaW9idXR0b24iLGluaXQ6ImZhbHNlIixkYXRh
Olt7bGFiZWw6Ilk9CmVzIix2YWx1ZToidHJ1ZSJ9LHtsYWJlbDoiTm8iLHZhbHVlOiJmYWxzZSJ9
XX0sbGFiZWxfc2VwYXJhdG9yOnt0eXBlOiJzZXBhcj0KYXRvciIsdGl0bGU6IkxhYmVsIHNldHRp
bmdzIn0sbGFiZWxfdHlwZTp7dGl0bGU6IkRvbnV0IGxhYmVsIixpbmZvOiJXaGF0IHdvPQp1bGQg
eW91IGxpa2UgdG8gc2hvdyBmb3IgZWFjaCBzbGljZT8iLHR5cGU6InNlbGVjdCIsaW5pdDoicGVy
Y2VudCIsZGF0YTpbe2w9CmFiZWw6Ii0tIE5vdGhpbmcgLS0iLHZhbHVlOiJoaWRlIixoaWRlOiJs
YWJlbF9vdXRzaWRlIn0se2xhYmVsOiJMYWJlbCBjb2x1bT0KbiIsdmFsdWU6ImtleSIsc2hvdzoi
bGFiZWxfb3V0c2lkZSJ9LHtsYWJlbDoiVmFsdWUgY29sdW1uIix2YWx1ZToidmFsdWUiLHNoPQpv
dzoibGFiZWxfb3V0c2lkZSJ9LHtsYWJlbDoiUGVyY2VudGFnZSIsdmFsdWU6InBlcmNlbnQiLHNo
b3c6ImxhYmVsX291dHNpZGU9CiJ9XX0sbGFiZWxfb3V0c2lkZTp7dGl0bGU6IlNob3cgb3V0c2lk
ZSIsaW5mbzoiV291bGQgeW91IGxpa2UgdG8gc2hvdyBsYWJlbD0KcyBvdXRzaWRlIHRoZSBkb251
dD8iLHR5cGU6InJhZGlvYnV0dG9uIixpbml0OiJmYWxzZSIsZGF0YTpbe2xhYmVsOiJZZXMiLHZh
PQpsdWU6InRydWUifSx7bGFiZWw6Ik5vIix2YWx1ZToiZmFsc2UifV19LHVzZV9wYW5lbHM6e2lu
aXQ6InRydWUiLGhpZGU6ITB9fX09Cil9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvbnZkMy9zdGFj
a2VkYXJlYV9mdWxsL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL252ZD0KMy9jb21tb24vY29uZmln
Il0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJFeHBhbmRlZCIs
em9vPQptYWJsZTohMCxjYXRlZ29yeToiQXJlYSBjaGFydHMiLGtleXdvcmRzOiJkZWZhdWx0IHNt
YWxsIixjb2x1bW5zOnt4Ont0aXRsZTo9CiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbGFiZWw6ITAs
aXNfYXV0bzohMCxpc191bmlxdWU6ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZj0Kb3IgeS1heGlzIixp
c19udW1lcmljOiEwfX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9udmQzL3N0YWNrZWRhcmVh
X3N0cmVhPQptL2NvbmZpZyIsWyJwbHVnaW4vY2hhcnRzL252ZDMvY29tbW9uL2NvbmZpZyJdLGZ1
bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCg9CiEwLHt9LGUse3RpdGxlOiJTdHJlYW0iLGNhdGVn
b3J5OiJBcmVhIGNoYXJ0cyIsem9vbWFibGU6ITAsa2V5d29yZHM6ImRlZmF1bD0KdCBzbWFsbCIs
c2hvd21heG1pbjohMCxjb2x1bW5zOnt4Ont0aXRsZToiVmFsdWVzIGZvciB4LWF4aXMiLGlzX2xh
YmVsOiEwLGlzPQpfYXV0bzohMCxpc191bmlxdWU6ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yIHkt
YXhpcyIsaXNfbnVtZXJpYzohMH19fSl9KSxkZWY9CmluZSgicGx1Z2luL2NoYXJ0cy9udmQzL2hp
c3RvZ3JhbS9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9udmQzL2NvbW1vbi9jb25maT0KZyJdLGZ1
bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiSGlzdG9ncmFtIixjYXRl
Z29yeToiRGF0YSBwPQpyb2Nlc3NpbmcgKHJlcXVpcmVzICdjaGFydHMnIHRvb2wgZnJvbSBUb29s
c2hlZCkiLGV4ZWN1dGU6Imhpc3RvZ3JhbSIsa2V5d289CnJkczoic21hbGwgbWVkaXVtIGxhcmdl
Iixjb2x1bW5zOnt5Ont0aXRsZToiT2JzZXJ2YXRpb25zIixpc19udW1lcmljOiEwfX0scz0KZXR0
aW5nczp7eF9heGlzX2xhYmVsOntpbml0OiJWYWx1ZXMifSx5X2F4aXNfbGFiZWw6e2luaXQ6IkRl
bnNpdHkifSx5X2F4aXNfPQp0eXBlOntpbml0OiJmIn0seV9heGlzX3ByZWNpc2lvbjp7aW5pdDoi
LjIifX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9udmQ9CjMvbGluZS9jb25maWciLFsicGx1
Z2luL2NoYXJ0cy9udmQzL2NvbW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leD0K
dGVuZCghMCx7fSxlLHt0aXRsZToiTGluZSBjaGFydCIsY2F0ZWdvcnk6Ik90aGVycyIsem9vbWFi
bGU6ITAsY29sdW1uczp7eDp7PQp0aXRsZToiVmFsdWVzIGZvciB4LWF4aXMiLGlzX2xhYmVsOiEw
LGlzX2F1dG86ITAsaXNfdW5pcXVlOiEwfSx5Ont0aXRsZToiVmE9Cmx1ZXMgZm9yIHktYXhpcyIs
aXNfbnVtZXJpYzohMH19fSl9KSxkZWZpbmUoInBsdWdpbi9jaGFydHMvbnZkMy9zY2F0dGVyL2Nv
bj0KZmlnIixbInBsdWdpbi9jaGFydHMvbnZkMy9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7
cmV0dXJuICQuZXh0ZW5kKCEwLHt9PQosZSx7dGl0bGU6IlNjYXR0ZXIgcGxvdCIsY2F0ZWdvcnk6
Ik90aGVycyIsem9vbWFibGU6ITAsY29sdW1uczp7eDp7dGl0bGU6IlY9CmFsdWVzIGZvciB4LWF4
aXMiLGlzX251bWVyaWM6ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yIHktYXhpcyIsaXNfbnVtZXJp
YzohMD0KfX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9udmQzL3N0YWNrZWRhcmVhL2NvbmZp
ZyIsWyJwbHVnaW4vY2hhcnRzL252ZDMvPQpjb21tb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0
dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJSZWd1bGFyIix6b29tYWI9CmxlOiEwLGNhdGVn
b3J5OiJBcmVhIGNoYXJ0cyIsa2V5d29yZHM6ImRlZmF1bHQgc21hbGwiLGNvbHVtbnM6e3g6e3Rp
dGxlOiJWYT0KbHVlcyBmb3IgeC1heGlzIixpc19sYWJlbDohMCxpc19hdXRvOiEwLGlzX3VuaXF1
ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgPQp5LWF4aXMiLGlzX251bWVyaWM6ITB9fX0pfSks
ZGVmaW5lKCJwbHVnaW4vY2hhcnRzL2pxcGxvdC9jb21tb24vY29uZmlnIixbInA9Cmx1Z2luL2No
YXJ0cy9mb3Jtcy9kZWZhdWx0Il0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUs
e3RpdGxlOiIiLD0KY2F0ZWdvcnk6IiIsbGlicmFyeToianFQbG90Iix0YWc6ImRpdiIsem9vbWFi
bGU6ITAsa2V5d29yZHM6Im1lZGl1bSIsc2V0dGluPQpnczp7c2VwYXJhdG9yX2dyaWQ6e3RpdGxl
OiJHcmlkcyIsdHlwZToic2VwYXJhdG9yIn0seF9heGlzX2dyaWQ6e3RpdGxlOiJBeGk9CnMgZ3Jp
ZCIsaW5mbzoiV291bGQgeW91IGxpa2UgdG8gc2hvdyBncmlkIGxpbmVzIGZvciB0aGUgWCBheGlz
PyIsdHlwZToicmFkaT0Kb2J1dHRvbiIsaW5pdDoiZmFsc2UiLGRhdGE6W3tsYWJlbDoiT24iLHZh
bHVlOiJ0cnVlIn0se2xhYmVsOiJPZmYiLHZhbHVlOiJmPQphbHNlIn1dfSx5X2F4aXNfZ3JpZDp7
dGl0bGU6IkF4aXMgZ3JpZCIsaW5mbzoiV291bGQgeW91IGxpa2UgdG8gc2hvdyBncmlkIGw9Cmlu
ZXMgZm9yIHRoZSBZIGF4aXM/Iix0eXBlOiJyYWRpb2J1dHRvbiIsaW5pdDoidHJ1ZSIsZGF0YTpb
e2xhYmVsOiJPbiIsdmFsdT0KZToidHJ1ZSJ9LHtsYWJlbDoiT2ZmIix2YWx1ZToiZmFsc2UifV19
fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL2pxcGxvdC9iPQphci9jb25maWciLFsicGx1Z2lu
L2NoYXJ0cy9qcXBsb3QvY29tbW9uL2NvbmZpZyJdLGZ1bmN0aW9uKGUpe3JldHVybiAkLmV4dGU9
Cm5kKCEwLHt9LGUse3RpdGxlOiJSZWd1bGFyIixjYXRlZ29yeToiQmFyIGRpYWdyYW1zIixjb2x1
bW5zOnt4Ont0aXRsZToiVmFsdT0KZXMgZm9yIHgtYXhpcyIsaXNfbGFiZWw6ITAsaXNfYXV0bzoh
MCxpc191bmlxdWU6ITB9LHk6e3RpdGxlOiJWYWx1ZXMgZm9yIHktPQpheGlzIixpc19udW1lcmlj
OiEwfX19KX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9qcXBsb3QvbGluZS9jb25maWciLFsicGx1
Z2k9Cm4vY2hhcnRzL2pxcGxvdC9jb21tb24vY29uZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQu
ZXh0ZW5kKCEwLHt9LGUse3RpdGxlOj0KIkxpbmUgY2hhcnQiLGNhdGVnb3J5OiJPdGhlcnMiLGNv
bHVtbnM6e3g6e3RpdGxlOiJWYWx1ZXMgZm9yIHgtYXhpcyIsaXNfbGFiPQplbDohMCxpc19hdXRv
OiEwLGlzX3VuaXF1ZTohMH0seTp7dGl0bGU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1lcmlj
OiEwfX09Cn0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL2pxcGxvdC9zY2F0dGVyL2NvbmZpZyIs
WyJwbHVnaW4vY2hhcnRzL2pxcGxvdC9jbz0KbW1vbi9jb25maWciXSxmdW5jdGlvbihlKXtyZXR1
cm4gJC5leHRlbmQoITAse30sZSx7dGl0bGU6IlNjYXR0ZXIgcGxvdCIsY2F0PQplZ29yeToiT3Ro
ZXJzIixjb2x1bW5zOnt4Ont0aXRsZToiVmFsdWVzIGZvciB4LWF4aXMiLGlzX251bWVyaWM6ITB9
LHk6e3RpdGw9CmU6IlZhbHVlcyBmb3IgeS1heGlzIixpc19udW1lcmljOiEwfX0sc2V0dGluZ3M6
e3hfYXhpc19ncmlkOntpbml0OiJ0cnVlIn19fT0KKX0pLGRlZmluZSgicGx1Z2luL2NoYXJ0cy9q
cXBsb3QvYm94cGxvdC9jb25maWciLFsicGx1Z2luL2NoYXJ0cy9qcXBsb3QvY29tPQptb24vY29u
ZmlnIl0sZnVuY3Rpb24oZSl7cmV0dXJuICQuZXh0ZW5kKCEwLHt9LGUse3RpdGxlOiJCb3ggcGxv
dCIsY2F0ZWdvcnk9CjoiRGF0YSBwcm9jZXNzaW5nIChyZXF1aXJlcyAnY2hhcnRzJyB0b29sIGZy
b20gVG9vbHNoZWQpIixsaWJyYXJ5OiJqcVBsb3QiLD0KdGFnOiJkaXYiLGV4ZWN1dGU6ImJveHBs
b3QiLGtleXdvcmRzOiJzbWFsbCBtZWRpdW0gbGFyZ2UiLGNvbHVtbnM6e3k6e3RpdGxlPQo6Ik9i
c2VydmF0aW9ucyIsaXNfbnVtZXJpYzohMH19LHNldHRpbmdzOntzaG93X2xlZ2VuZDp7aW5pdDoi
ZmFsc2UifX19KX0pLGQ9CmVmaW5lKCJwbHVnaW4vY2hhcnRzL2pxcGxvdC9oaXN0b2dyYW1fZGlz
Y3JldGUvY29uZmlnIixbInBsdWdpbi9jaGFydHMvanFwbD0Kb3QvY29tbW9uL2NvbmZpZyJdLGZ1
bmN0aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiRGlzY3JldGUgSGlzPQp0
b2dyYW0iLGNhdGVnb3J5OiJEYXRhIHByb2Nlc3NpbmcgKHJlcXVpcmVzICdjaGFydHMnIHRvb2wg
ZnJvbSBUb29sc2hlZCkiLGU9CnhlY3V0ZToiaGlzdG9ncmFtZGlzY3JldGUiLGtleXdvcmRzOiJz
bWFsbCBtZWRpdW0gbGFyZ2UiLGNvbHVtbnM6e3g6e3RpdGxlOj0KIk9ic2VydmF0aW9ucyIsaXNf
bGFiZWw6ITB9fSxzZXR0aW5nczp7eF9heGlzX2xhYmVsOntpbml0OiJCcmVha3MifSx5X2F4aXNf
PQpsYWJlbDp7aW5pdDoiRGVuc2l0eSJ9fX0pfSksZGVmaW5lKCJwbHVnaW4vY2hhcnRzL290aGVy
cy9oZWF0bWFwL2NvbmZpZyIsWyI9CnBsdWdpbi9jaGFydHMvZm9ybXMvZGVmYXVsdCJdLGZ1bmN0
aW9uKGUpe3JldHVybiAkLmV4dGVuZCghMCx7fSxlLHt0aXRsZToiSD0KZWF0bWFwIixjYXRlZ29y
eToiT3RoZXJzIixsaWJyYXJ5OiJDdXN0b20iLHRhZzoic3ZnIixrZXl3b3Jkczoic21hbGwiLHpv
b21hPQpibGU6ITAsY29sdW1uczp7eDp7dGl0bGU6IkNvbHVtbiBsYWJlbHMiLGlzX2xhYmVsOiEw
LGlzX251bWVyaWM6ITAsaXNfdW5pcXU9CmU6ITB9LHk6e3RpdGxlOiJSb3cgbGFiZWxzIixpc19s
YWJlbDohMCxpc19udW1lcmljOiEwLGlzX3VuaXF1ZTohMH0sejp7dGl0bD0KZToiT2JzZXJ2YXRp
b24iLGlzX251bWVyaWM6ITB9fSxzZXR0aW5nczp7dXNlX3BhbmVsczp7aW5pdDoidHJ1ZSIsaGlk
ZTohMH0sPQpjb2xvcl9zZXQ6e3RpdGxlOiJDb2xvciBzY2hlbWUiLGluZm86IlNlbGVjdCBhIGNv
bG9yIHNjaGVtZSBmb3IgeW91ciBoZWF0bWE9CnAiLHR5cGU6InNlbGVjdCIsaW5pdDoiamV0Iixk
YXRhOlt7bGFiZWw6IkNvbGQtdG8tSG90Iix2YWx1ZToiaG90In0se2xhYmVsOj0KIkNvb2wiLHZh
bHVlOiJjb29sIn0se2xhYmVsOiJDb3BwZXIiLHZhbHVlOiJjb3BwZXIifSx7bGFiZWw6IkdyYXkg
c2NhbGUiLHZhPQpsdWU6ImdyYXkifSx7bGFiZWw6IkpldCIsdmFsdWU6ImpldCJ9LHtsYWJlbDoi
Tm8tR3JlZW4iLHZhbHVlOiJub19ncmVlbiJ9LHs9CmxhYmVsOiJPY2VhbiIsdmFsdWU6Im9jZWFu
In0se2xhYmVsOiJQb2xhciIsdmFsdWU6InBvbGFyIn0se2xhYmVsOiJSZWQtdG8tRz0KcmVlbiIs
dmFsdWU6InJlZGdyZWVuIn0se2xhYmVsOiJSZWQtdG8tZ3JlZW4gKHNhdHVyYXRlZCkiLHZhbHVl
OiJyZWQyZ3JlZW4iPQp9LHtsYWJlbDoiUmVsaWVmIix2YWx1ZToicmVsaWVmIn0se2xhYmVsOiJT
ZWlzbW9ncmFwaCIsdmFsdWU6InNlaXMifSx7bGFiZWw9CjoiU2VhbGFuZCIsdmFsdWU6InNlYWxh
bmQifSx7bGFiZWw6IlNwbGl0Iix2YWx1ZToic3BsaXQifSx7bGFiZWw6Ild5c2l3eWciLD0KdmFs
dWU6Ind5c2l3eWcifV19LHVybF90ZW1wbGF0ZTp7dGl0bGU6IlVybCB0ZW1wbGF0ZSIsaW5mbzoi
RW50ZXIgYSB1cmwgdG8gPQpsaW5rIHRoZSBsYWJlbHMgd2l0aCBleHRlcm5hbCBzb3VyY2VzLiBV
c2UgX19MQUJFTF9fIGFzIHBsYWNlaG9sZGVyLiIsdHlwZTo9CiJ0ZXh0Iixpbml0OiIiLHBsYWNl
aG9sZGVyOiJodHRwOi8vc29tZXVybC5jb20/aWQ9M0RfX0xBQkVMX18ifX19KX0pLGRlZmluZT0K
KCJwbHVnaW4vY2hhcnRzL290aGVycy9oZWF0bWFwX2NsdXN0ZXIvY29uZmlnIixbInBsdWdpbi9j
aGFydHMvb3RoZXJzL2hlYXRtPQphcC9jb25maWciXSxmdW5jdGlvbihlKXtyZXR1cm4gJC5leHRl
bmQoITAse30sZSx7dGl0bGU6IkNsdXN0ZXJlZCBIZWF0bWFwIiw9CmNhdGVnb3J5OiJEYXRhIHBy
b2Nlc3NpbmcgKHJlcXVpcmVzICdjaGFydHMnIHRvb2wgZnJvbSBUb29sc2hlZCkiLGV4ZWN1dGU6
Ij0KaGVhdG1hcCIsa2V5d29yZHM6InNtYWxsIG1lZGl1bSBsYXJnZSJ9KX0pLGRlZmluZSgicGx1
Z2luL2NoYXJ0cy90eXBlcyIsWyJwPQpsdWdpbi9jaGFydHMvbnZkMy9iYXIvY29uZmlnIiwicGx1
Z2luL2NoYXJ0cy9udmQzL2Jhcl9zdGFja2VkL2NvbmZpZyIsInBsdWc9CmluL2NoYXJ0cy9udmQz
L2Jhcl9ob3Jpem9udGFsL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvbnZkMy9iYXJfaG9yaXpvbnRh
bF9zdD0KYWNrZWQvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9udmQzL2xpbmVfZm9jdXMvY29uZmln
IiwicGx1Z2luL2NoYXJ0cy9udmQzL3BpPQplL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvbnZkMy9z
dGFja2VkYXJlYV9mdWxsL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvbnZkMy89CnN0YWNrZWRhcmVh
X3N0cmVhbS9jb25maWciLCJwbHVnaW4vY2hhcnRzL252ZDMvaGlzdG9ncmFtL2NvbmZpZyIsInBs
dWdpbi9jaD0KYXJ0cy9udmQzL2xpbmUvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9udmQzL3NjYXR0
ZXIvY29uZmlnIiwicGx1Z2luL2NoYXJ0cy9uPQp2ZDMvc3RhY2tlZGFyZWEvY29uZmlnIiwicGx1
Z2luL2NoYXJ0cy9qcXBsb3QvYmFyL2NvbmZpZyIsInBsdWdpbi9jaGFydHMvanE9CnBsb3QvbGlu
ZS9jb25maWciLCJwbHVnaW4vY2hhcnRzL2pxcGxvdC9zY2F0dGVyL2NvbmZpZyIsInBsdWdpbi9j
aGFydHMvanFwbD0Kb3QvYm94cGxvdC9jb25maWciLCJwbHVnaW4vY2hhcnRzL2pxcGxvdC9oaXN0
b2dyYW1fZGlzY3JldGUvY29uZmlnIiwicGx1Z2luPQovY2hhcnRzL290aGVycy9oZWF0bWFwL2Nv
bmZpZyIsInBsdWdpbi9jaGFydHMvb3RoZXJzL2hlYXRtYXBfY2x1c3Rlci9jb25maWc9CiJdLGZ1
bmN0aW9uKGUsdCxuLHIsaSxzLG8sdSxhLGYsbCxjLGgscCxkLHYsbSxnLHkpe3JldHVybiBCYWNr
Ym9uZS5Nb2RlbC5leD0KdGVuZCh7ZGVmYXVsdHM6e252ZDNfYmFyOmUsbnZkM19iYXJfc3RhY2tl
ZDp0LG52ZDNfYmFyX2hvcml6b250YWw6bixudmQzX2JhPQpyX2hvcml6b250YWxfc3RhY2tlZDpy
LG52ZDNfbGluZV9mb2N1czppLG52ZDNfc3RhY2tlZGFyZWE6YyxudmQzX3N0YWNrZWRhcmU9CmFf
ZnVsbDpvLG52ZDNfc3RhY2tlZGFyZWFfc3RyZWFtOnUsbnZkM19waWU6cyxudmQzX2xpbmU6Zixu
dmQzX3NjYXR0ZXI6bCxudj0KZDNfaGlzdG9ncmFtOmEsanFwbG90X2JhcjpoLGpxcGxvdF9oaXN0
b2dyYW1fZGlzY3JldGU6bSxqcXBsb3RfbGluZTpwLGpxcGxvPQp0X3NjYXR0ZXI6ZCxqcXBsb3Rf
Ym94cGxvdDp2LG90aGVyc19oZWF0bWFwOmcsb3RoZXJzX2hlYXRtYXBfY2x1c3Rlcjp5fX0pfSk9
CixkZWZpbmUoInBsdWdpbi9hcHAiLFsibXZjL3VpL3VpLW1vZGFsIiwibXZjL3VpL3VpLXBvcnRs
ZXQiLCJtdmMvdWkvdWktbWlzYz0KIiwidXRpbHMvdXRpbHMiLCJwbHVnaW4vbGlicmFyeS9qb2Jz
IiwicGx1Z2luL2xpYnJhcnkvZGF0YXNldHMiLCJwbHVnaW4vbGliPQpyYXJ5L3N0b3JhZ2UiLCJ1
dGlscy9kZWZlcnJlZCIsInBsdWdpbi92aWV3cy92aWV3ZXIiLCJwbHVnaW4vdmlld3MvZWRpdG9y
Iiw9CiJwbHVnaW4vbW9kZWxzL2NvbmZpZyIsInBsdWdpbi9tb2RlbHMvY2hhcnQiLCJwbHVnaW4v
Y2hhcnRzL3R5cGVzIl0sZnVuY3Rpbz0KbihlLHQsbixyLGkscyxvLHUsYSxmLGwsYyxoKXtyZXR1
cm4gQmFja2JvbmUuVmlldy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3RpPQpvbih0KXt0aGlzLm9w
dGlvbnM9M0R0LEdhbGF4eSYmR2FsYXh5Lm1vZGFsP3RoaXMubW9kYWw9M0RHYWxheHkubW9kYWw6
dGhpcy49Cm1vZGFsPTNEbmV3IGUuVmlldyx0aGlzLmNvbmZpZz0zRG5ldyBsLHRoaXMudHlwZXM9
M0RuZXcgaCx0aGlzLmNoYXJ0PTNEbmV3ID0KYyx0aGlzLmpvYnM9M0RuZXcgaSh0aGlzKSx0aGlz
LmRhdGFzZXRzPTNEbmV3IHModGhpcyksdGhpcy5zdG9yYWdlPTNEbmV3IG8oPQp0aGlzKSx0aGlz
LmRlZmVycmVkPTNEbmV3IHUsdGhpcy52aWV3ZXJfdmlldz0zRG5ldyBhKHRoaXMpLHRoaXMuZWRp
dG9yX3ZpZXc9Cj0zRG5ldyBmKHRoaXMpLHRoaXMuJGVsLmFwcGVuZCh0aGlzLnZpZXdlcl92aWV3
LiRlbCksdGhpcy4kZWwuYXBwZW5kKHRoaXMuZT0KZGl0b3Jfdmlldy4kZWwpO2lmKCF0aGlzLnN0
b3JhZ2UubG9hZCgpKXRoaXMuZ28oImVkaXRvciIpO2Vsc2V7dGhpcy5nbygidmllPQp3ZXIiKTt2
YXIgbj0zRHRoaXM7dGhpcy5kZWZlcnJlZC5leGVjdXRlKGZ1bmN0aW9uKCl7bi5jaGFydC50cmln
Z2VyKCJyZWRyYXc9CiIpfSl9fSxnbzpmdW5jdGlvbihlKXskKCIudG9vbHRpcCIpLmhpZGUoKTtz
d2l0Y2goZSl7Y2FzZSJlZGl0b3IiOnRoaXMuZWRpdD0Kb3Jfdmlldy5zaG93KCksdGhpcy52aWV3
ZXJfdmlldy5oaWRlKCk7YnJlYWs7Y2FzZSJ2aWV3ZXIiOnRoaXMuZWRpdG9yX3ZpZXcuPQpoaWRl
KCksdGhpcy52aWV3ZXJfdmlldy5zaG93KCl9fSxjaGFydFBhdGg6ZnVuY3Rpb24oZSl7dmFyIHQ9
M0RlLnNwbGl0KC9fKC49CispLyk7cmV0dXJuIHQubGVuZ3RoPj0zRDI/dFswXSsiLyIrdFsxXToo
Y29uc29sZS5kZWJ1ZygiRkFJTEVEIEFwcDpjaGFydFBhdD0KaCgpIC0gSW52YWxpZCBmb3JtYXQ6
ICIrZSksdW5kZWZpbmVkKX19KX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCmRpZmYg
LXIgOGE3MDQ1NzkyYzdmZTQ4YTk5Mjk1NzcwNGU1MWUzMTNkMzJlNmNkZCAtciAwZjczNzQ4NWNi
N2Y1ZDc1NTk1ZTk4YT0KYjhmOGRjMDJiYTM2OTk3NmYgZWdncy5pbmkKLS0tIGEvZWdncy5pbmkK
KysrIGIvZWdncy5pbmkKQEAgLTYwLDggKzYwLDkgQEAKIHB5dGhvbl9vcGVuaWQgPTNEIDIuMi41
CiBweXRob25fZGFlbW9uID0zRCAxLjUuNQogcHl0eiA9M0QgMjAxMy45CityZXBvemUubHJ1ID0z
RCAwLjYKIHJlcXVlc3RzID0zRCAyLjIuMQotUm91dGVzID0zRCAxLjEyLjMKK1JvdXRlcyA9M0Qg
Mi4xCiBzaW1wbGVqc29uID0zRCAyLjEuMQogc2l4ID0zRCAxLjkuMAogc3FsYWxjaGVteV9taWdy
YXRlID0zRCAwLjcuMgpAQCAtNzUsNyArNzYsNyBAQAogd3NnaXJlZiA9M0QgMC4xLjIKIEJhYmVs
ID0zRCAxLjMKIHdjaGFydHlwZSA9M0QgMC4xCi1XaG9vc2ggPTNEIDAuMy4xOAorV2hvb3NoID0z
RCAyLjUuNwogOyBmbHVlbnRfbG9nZ2VyID0zRCAwLjMuMwogcmF2ZW4gPTNEIDMuMS44Cj0yMAoK
ZGlmZiAtciA4YTcwNDU3OTJjN2ZlNDhhOTkyOTU3NzA0ZTUxZTMxM2QzMmU2Y2RkIC1yIDBmNzM3
NDg1Y2I3ZjVkNzU1OTVlOThhPQpiOGY4ZGMwMmJhMzY5OTc2ZiBsaWIvZ2FsYXh5L3Rvb2xzL19f
aW5pdF9fLnB5Ci0tLSBhL2xpYi9nYWxheHkvdG9vbHMvX19pbml0X18ucHkKKysrIGIvbGliL2dh
bGF4eS90b29scy9fX2luaXRfXy5weQpAQCAtMjI1MSw3ICsyMjUxLDggQEAKICAgICAgICAgIiIi
CiAgICAgICAgIGpvYl9pZCA9M0Qga3dkLmdldCgnam9iX2lkJywgTm9uZSkKICAgICAgICAgZGF0
YXNldF9pZCA9M0Qga3dkLmdldCgnZGF0YXNldF9pZCcsIE5vbmUpCi0gICAgICAgPTIwCisgICAg
ICAgIGlzX2R5bmFtaWMgPTNEIHN0cmluZ19hc19ib29sKGt3ZC5nZXQoJ19faXNfZHluYW1pY19f
JywgVHJ1ZSkpCisKICAgICAgICAgIyBsb2FkIGpvYiBkZXRhaWxzIGlmIHByb3ZpZGVkCiAgICAg
ICAgIGpvYiA9M0QgTm9uZQogICAgICAgICBpZiBqb2JfaWQ6CkBAIC0yMzQ1LDEwICsyMzQ2LDE2
IEBACiAgICAgICAgIGRlZiBjaGVja19zdGF0ZSh0cmFucywgaW5wdXQsIGRlZmF1bHRfdmFsdWUs
IGNvbnRleHQpOgogICAgICAgICAgICAgdmFsdWUgPTNEIGRlZmF1bHRfdmFsdWUKICAgICAgICAg
ICAgIGVycm9yID0zRCAnU3RhdGUgdmFsaWRhdGlvbiBmYWlsZWQuJworICAgICAgICAgICA9MjAK
KyAgICAgICAgICAgICMgc2tpcCBkeW5hbWljIGZpZWxkcyBpZiBkZWFjdGl2YXRlZAorICAgICAg
ICAgICAgaWYgbm90IGlzX2R5bmFtaWMgYW5kIGlucHV0LmlzX2R5bmFtaWM6CisgICAgICAgICAg
ICAgICAgcmV0dXJuIFt2YWx1ZSwgTm9uZV0KKyAgICAgICAgICAgPTIwCisgICAgICAgICAgICAj
IHZhbGlkYXRlIHZhbHVlIGNvbnRlbnQKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAg
ICAjIHJlc29sdmVzIHRoZSBpbmNvbnNpc3RlbnQgZGVmaW5pdGlvbiBvZiBib29sZWFuIHBhcmFt
ZXRlPQpycyAoc2VlIGJhc2UucHkpIHdpdGhvdXQgbW9kaWZ5aW5nIHNoYXJlZCBjb2RlCiAgICAg
ICAgICAgICAgICAgaWYgaW5wdXQudHlwZSA9M0Q9M0QgJ2Jvb2xlYW4nIGFuZCBpc2luc3RhbmNl
KGRlZmF1bHRfdmFsdT0KZSwgYmFzZXN0cmluZyk6Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVl
LCBlcnJvciA9M0QgW3V0aWwuc3RyaW5nX2FzX2Jvb2woZGVmYXVsdF92YWx1ZSksID0KTm9uZV0K
KyAgICAgICAgICAgICAgICAgICAgdmFsdWUsIGVycm9yID0zRCBbc3RyaW5nX2FzX2Jvb2woZGVm
YXVsdF92YWx1ZSksIE5vbmVdCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAg
ICAgICAgdmFsdWUsIGVycm9yID0zRCBjaGVja19wYXJhbSh0cmFucywgaW5wdXQsIGRlZmF1bHRf
dmFsPQp1ZSwgY29udGV4dCkKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGVycjoKQEAg
LTI0NjMsNyArMjQ3MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzYW5pdGl6ZV9zdGF0
ZShzdGF0ZVtrXSkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRlW2tdID0zRCBqc29uaWZ5KHN0YXRlW2tdKQotICAgICAgICAgICA9MjAKKwog
ICAgICAgICAjIGRvIHBhcmFtIHRyYW5zbGF0aW9uIGhlcmUsIHVzZWQgYnkgZGF0YXNvdXJjZSB0
b29scwogICAgICAgICBpZiBzZWxmLmlucHV0X3RyYW5zbGF0b3I6CiAgICAgICAgICAgICBzZWxm
LmlucHV0X3RyYW5zbGF0b3IudHJhbnNsYXRlKCBwYXJhbXMgKQoKZGlmZiAtciA4YTcwNDU3OTJj
N2ZlNDhhOTkyOTU3NzA0ZTUxZTMxM2QzMmU2Y2RkIC1yIDBmNzM3NDg1Y2I3ZjVkNzU1OTVlOThh
PQpiOGY4ZGMwMmJhMzY5OTc2ZiBsaWIvZ2FsYXh5L3Rvb2xzL3BhcmFtZXRlcnMvYmFzaWMucHkK
LS0tIGEvbGliL2dhbGF4eS90b29scy9wYXJhbWV0ZXJzL2Jhc2ljLnB5CisrKyBiL2xpYi9nYWxh
eHkvdG9vbHMvcGFyYW1ldGVycy9iYXNpYy5weQpAQCAtNDcsNiArNDcsNyBAQAogICAgICAgICBz
ZWxmLm5hbWUgPTNEIGlucHV0X3NvdXJjZS5nZXQoIm5hbWUiKQogICAgICAgICBzZWxmLnR5cGUg
PTNEIGlucHV0X3NvdXJjZS5nZXQoInR5cGUiKQogICAgICAgICBzZWxmLmhpZGRlbiA9M0QgaW5w
dXRfc291cmNlLmdldCgiaGlkZGVuIiwgRmFsc2UpCisgICAgICAgIHNlbGYuaXNfZHluYW1pYyA9
M0QgRmFsc2UKICAgICAgICAgc2VsZi5sYWJlbCA9M0QgaW5wdXRfc291cmNlLnBhcnNlX2xhYmVs
KCkKICAgICAgICAgc2VsZi5oZWxwID0zRCBpbnB1dF9zb3VyY2UucGFyc2VfaGVscCgpCiAgICAg
ICAgIHNhbml0aXplcl9lbGVtID0zRCBpbnB1dF9zb3VyY2UucGFyc2Vfc2FuaXRpemVyX2VsZW0o
KQpAQCAtMjE1LDYgKzIxNiw3IEBACiAgICAgICAgIHRvb2xfZGljdFsgJ21vZGVsX2NsYXNzJyBd
ID0zRCBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXwogICAgICAgICB0b29sX2RpY3RbICdvcHRpb25h
bCcgXSA9M0Qgc2VsZi5vcHRpb25hbAogICAgICAgICB0b29sX2RpY3RbICdoaWRkZW4nIF0gPTNE
IHNlbGYuaGlkZGVuCisgICAgICAgIHRvb2xfZGljdFsgJ2lzX2R5bmFtaWMnIF0gPTNEIHNlbGYu
aXNfZHluYW1pYwogICAgICAgICBpZiBoYXNhdHRyKCBzZWxmLCAndmFsdWUnICk6CiAgICAgICAg
ICAgICB0b29sX2RpY3RbICd2YWx1ZScgXSA9M0Qgc2VsZi52YWx1ZQogICAgICAgICByZXR1cm4g
dG9vbF9kaWN0CkBAIC0yNjEsNiArMjYzLDEyIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAg
ICByZXR1cm4gZm9ybV9idWlsZGVyLlRleHRGaWVsZCggc2VsZi5uYW1lLCBzZWxmLnNpemUsIHZh
bHVlICkKPTIwCisgICAgZGVmIHRvX2h0bWxfdmFsdWUoIHNlbGYsIHZhbHVlLCBhcHAgKToKKyAg
ICAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgICAgcmV0dXJuICcnCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICByZXR1cm4gc2VsZi50b19zdHJpbmcoIHZhbHVlLCBhcHAgKQorCiAgICAg
ZGVmIGdldF9pbml0aWFsX3ZhbHVlKCBzZWxmLCB0cmFucywgY29udGV4dCwgaGlzdG9yeT0zRE5v
bmUgKToKICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKPTIwCkBAIC0xMDQyLDcgKzEwNTAsNiBA
QAo9MjAKICAgICAgICAgZFsnZGlzcGxheSddID0zRCBzZWxmLmRpc3BsYXkKICAgICAgICAgZFsn
bXVsdGlwbGUnXSA9M0Qgc2VsZi5tdWx0aXBsZQotICAgICAgICBkWydpc19keW5hbWljJ10gPTNE
IHNlbGYuaXNfZHluYW1pYwo9MjAKICAgICAgICAgcmV0dXJuIGQKPTIwCkBAIC0xNDUxLDcgKzE0
NTgsNiBAQAogICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNhYnMoIGZyb21fZmlsZSApOgog
ICAgICAgICAgICAgICAgIGZyb21fZmlsZSA9M0Qgb3MucGF0aC5qb2luKCB0b29sLmFwcC5jb25m
aWcudG9vbF9kYXRhX3BhdGg9CiwgZnJvbV9maWxlICkKICAgICAgICAgICAgIGVsZW0gPTNEIFhN
TCggIjxyb290PiVzPC9yb290PiIgJSBvcGVuKCBmcm9tX2ZpbGUgKS5yZWFkKCkgKQotICAgICAg
ICBzZWxmLmlzX2R5bmFtaWMgPTNEIEZhbHNlCiAgICAgICAgIHNlbGYuZHluYW1pY19vcHRpb25z
ID0zRCBlbGVtLmdldCggJ2R5bmFtaWNfb3B0aW9ucycsIE5vbmUgKQogICAgICAgICBpZiBzZWxm
LmR5bmFtaWNfb3B0aW9uczoKICAgICAgICAgICAgIHNlbGYuaXNfZHluYW1pYyA9M0QgVHJ1ZQpA
QCAtMTU0MSw2ICsxNTQ3LDggQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSA9M0QgdmFsdWUuc3BsaXQoICJcbiIgKQogICAgICAgICAgICAgcmV0dXJu
IFVudmFsaWRhdGVkVmFsdWUoIHZhbHVlICkKKyAgICAgICAgaWYgbm90IHZhbHVlIGFuZCBub3Qg
c2VsZi5vcHRpb25hbDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoICJBbiBpbnZhbGlk
IG9wdGlvbiB3YXMgc2VsZWN0ZWQgZm9yICVzLCAnTm9uPQplJywgcGxlYXNlIHZlcmlmeSIgJSAo
c2VsZi5uYW1lKSApCiAgICAgICAgIGlmIG5vdCB2YWx1ZToKICAgICAgICAgICAgIHJldHVybiBO
b25lCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKCB2YWx1ZSwgbGlzdCApOgpAQCAtMTY2Myw5
ICsxNjcxLDggQEAKICAgICAgICAgICAgICMgd2lsbCBzb21ldGltZXMgZXJyb3IgaWYgc2VsZi5p
c19keW5hbWljIGFuZCBzZWxmLmZpbHRlcmVkCiAgICAgICAgICAgICAjICAgYmMgd2UgZG9udC9j
YW50IGZpbGwgb3V0IG90aGVyX3ZhbHVlcyBhYm92ZSAoe30pCiAgICAgICAgICAgICBwYXNzCi0g
ICAgICAgIGRbICdvcHRpb25zJyBdID0zRCBvcHRpb25zCi0gICAgICAgIGRbICdkaXNwbGF5JyBd
ID0zRCBzZWxmLmRpc3BsYXkKLSAgICAgICAgZFsgJ2lzX2R5bmFtaWMnIF0gPTNEIHNlbGYuaXNf
ZHluYW1pYworICAgICAgICBkWydvcHRpb25zJ10gPTNEIG9wdGlvbnMKKyAgICAgICAgZFsnZGlz
cGxheSddID0zRCBzZWxmLmRpc3BsYXkKICAgICAgICAgcmV0dXJuIGQKPTIwCj0yMApAQCAtMTc2
OCw2ICsxNzc1LDcgQEAKICAgICAgICAgICAgIHNlbGYudmFsaWRhdG9ycy5hcHBlbmQoIHZhbGlk
YXRpb24uTWV0YWRhdGFWYWxpZGF0b3IoKSApCiAgICAgICAgIHNlbGYuX3BhcnNlX2Zvcm1hdHMo
IHRyYW5zLCB0b29sLCBpbnB1dF9zb3VyY2UgKQogICAgICAgICBzZWxmLm11bHRpcGxlID0zRCBp
bnB1dF9zb3VyY2UuZ2V0X2Jvb2woJ211bHRpcGxlJywgRmFsc2UpCisgICAgICAgIHNlbGYuaXNf
ZHluYW1pYyA9M0QgVHJ1ZQogICAgICAgICBzZWxmLl9wYXJzZV9vcHRpb25zKCBpbnB1dF9zb3Vy
Y2UgKQogICAgICAgICAjIExvYWQgY29udmVyc2lvbnMgcmVxdWlyZWQgZm9yIHRoZSBkYXRhc2V0
IGlucHV0CiAgICAgICAgIHNlbGYuY29udmVyc2lvbnMgPTNEIFtdCkBAIC0yMTE0LDcgKzIxMjIs
NiBAQAogICAgICAgICBkID0zRCBzdXBlciggRGF0YVRvb2xQYXJhbWV0ZXIsIHNlbGYgKS50b19k
aWN0KCB0cmFucyApCiAgICAgICAgIGRbJ2V4dGVuc2lvbnMnXSA9M0Qgc2VsZi5leHRlbnNpb25z
CiAgICAgICAgIGRbJ211bHRpcGxlJ10gPTNEIHNlbGYubXVsdGlwbGUKLSAgICAgICAgZFsnaXNf
ZHluYW1pYyddID0zRCBUcnVlCiAgICAgICAgIGRbJ29wdGlvbnMnXSA9M0QgeydoZGEnOiBbXSwg
J2hkY2EnOiBbXX0KPTIwCiAgICAgICAgICMgcmV0dXJuIGRlZmF1bHQgY29udGVudCBpZiBjb250
ZXh0IGlzIG5vdCBhdmFpbGFibGUKQEAgLTIxNjksNiArMjE3Niw3IEBACiAgICAgICAgIHNlbGYu
X3BhcnNlX2Zvcm1hdHMoIHRyYW5zLCB0b29sLCBpbnB1dF9zb3VyY2UgKQogICAgICAgICBzZWxm
Ll9jb2xsZWN0aW9uX3R5cGUgPTNEIGlucHV0X3NvdXJjZS5nZXQoImNvbGxlY3Rpb25fdHlwZSIs
IE5vbmUpCiAgICAgICAgIHNlbGYubXVsdGlwbGUgPTNEIEZhbHNlICAjIEFjY2Vzc2VkIG9uIERh
dGFUb29sUGFyYW1ldGVyIGEgbG90LCBtYT0KeSB3YW50IGluIGZ1dHVyZQorICAgICAgICBzZWxm
LmlzX2R5bmFtaWMgPTNEIFRydWUKICAgICAgICAgc2VsZi5fcGFyc2Vfb3B0aW9ucyggaW5wdXRf
c291cmNlICkgICMgVE9ETzogUmV2aWV3IGFuZCB0ZXN0Lgo9MjAKICAgICBAcHJvcGVydHkKQEAg
LTIzNTUsNyArMjM2Myw2IEBACiAgICAgICAgIGQgPTNEIHN1cGVyKCBEYXRhQ29sbGVjdGlvblRv
b2xQYXJhbWV0ZXIsIHNlbGYgKS50b19kaWN0KCB0cmFucyApCiAgICAgICAgIGRbJ2V4dGVuc2lv
bnMnXSA9M0Qgc2VsZi5leHRlbnNpb25zCiAgICAgICAgIGRbJ211bHRpcGxlJ10gPTNEIHNlbGYu
bXVsdGlwbGUKLSAgICAgICAgZFsnaXNfZHluYW1pYyddID0zRCBGYWxzZQogICAgICAgICBkWydv
cHRpb25zJ10gPTNEIHsnaGRhJzogW10sICdoZGNhJzogW119Cj0yMAogICAgICAgICAjIHJldHVy
biBkZWZhdWx0IGNvbnRlbnQgaWYgY29udGV4dCBpcyBub3QgYXZhaWxhYmxlCkBAIC0yNDIyLDcg
KzI0MjksNyBAQAogICAgIGRlZiBnZXRfaHRtbF9maWVsZCggc2VsZiwgdHJhbnM9M0ROb25lLCB2
YWx1ZT0zRE5vbmUsIG90aGVyX3ZhbHVlcz0zRHs9Cn0gKToKICAgICAgICAgcmV0dXJuIGZvcm1f
YnVpbGRlci5MaWJyYXJ5RmllbGQoIHNlbGYubmFtZSwgdmFsdWU9M0R2YWx1ZSwgdHJhbnM9Cj0z
RHRyYW5zICkKPTIwCi0gICAgZGVmIGdldF9pbml0aWFsX3ZhbHVlKCBzZWxmLCB0cmFucywgY29u
dGV4dCApOgorICAgIGRlZiBnZXRfaW5pdGlhbF92YWx1ZSggc2VsZiwgdHJhbnMsIGNvbnRleHQs
IGhpc3Rvcnk9M0ROb25lICk6CiAgICAgICAgIHJldHVybiBOb25lCj0yMAogICAgIGRlZiBmcm9t
X2h0bWwoIHNlbGYsIHZhbHVlLCB0cmFucywgb3RoZXJfdmFsdWVzPTNEe30gKToKCmRpZmYgLXIg
OGE3MDQ1NzkyYzdmZTQ4YTk5Mjk1NzcwNGU1MWUzMTNkMzJlNmNkZCAtciAwZjczNzQ4NWNiN2Y1
ZDc1NTk1ZTk4YT0KYjhmOGRjMDJiYTM2OTk3NmYgbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9h
cGkvam9icy5weQotLS0gYS9saWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2FwaS9qb2JzLnB5Cisr
KyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvYXBpL2pvYnMucHkKQEAgLTIxOSw3ICsyMTks
OCBAQAo9MjAKICAgICBAZXhwb3NlX2FwaQogICAgIGRlZiBjcmVhdGUoIHNlbGYsIHRyYW5zLCBw
YXlsb2FkLCAqKmt3ZCApOgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKKyAg
ICAgICAgIiIiIFNlZSB0aGUgY3JlYXRlIG1ldGhvZCBpbiB0b29scy5weSBpbiBvcmRlciB0byBz
dWJtaXQgYSBqb2IuICIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCAnUGxl
YXNlIFBPU1QgdG8gL2FwaS90b29scyBpbnN0ZWFkLicgKQo9MjAKICAgICBAZXhwb3NlX2FwaQog
ICAgIGRlZiBzZWFyY2goIHNlbGYsIHRyYW5zLCBwYXlsb2FkLCAqKmt3ZCApOgoKZGlmZiAtciA4
YTcwNDU3OTJjN2ZlNDhhOTkyOTU3NzA0ZTUxZTMxM2QzMmU2Y2RkIC1yIDBmNzM3NDg1Y2I3ZjVk
NzU1OTVlOThhPQpiOGY4ZGMwMmJhMzY5OTc2ZiBsaWIvZ2FsYXh5L3dlYmFwcHMvZ2FsYXh5L2Nv
bnRyb2xsZXJzL3BhZ2UucHkKLS0tIGEvbGliL2dhbGF4eS93ZWJhcHBzL2dhbGF4eS9jb250cm9s
bGVycy9wYWdlLnB5CisrKyBiL2xpYi9nYWxheHkvd2ViYXBwcy9nYWxheHkvY29udHJvbGxlcnMv
cGFnZS5weQpAQCAtNzI5LDkgKzcyOSw4IEBACiAgICAgICAgICIiIgogICAgICAgICAjVE9ETzog
c2hvdWxkIGJlIG1vdmVkIHRvIGhpc3RvcnkgY29udHJvbGxlciBhbmQvb3IgY2FsbGVkIHZpYSBh
amE9CnggZnJvbSB0aGUgdGVtcGxhdGUKICAgICAgICAgZGVjb2RlZF9pZCA9M0Qgc2VsZi5kZWNv
ZGVfaWQoIGlkICkKKyAgICAgICAgIyBoaXN0b3JpZXMgZW1iZWRkZWQgaW4gcGFnZXMgYXJlIHNl
dCB0byBpbXBvcnRhYmxlIHdoZW4gZW1iZWRkZWQsPQogY2hlY2sgZm9yIGFjY2VzcyBoZXJlCiAg
ICAgICAgIGhpc3RvcnkgPTNEIHNlbGYuaGlzdG9yeV9tYW5hZ2VyLmdldF9hY2Nlc3NpYmxlKCB0
cmFucywgZGVjb2RlZF9pZD0KLCB0cmFucy51c2VyICkKLSAgICAgICAgaWYgbm90IGhpc3Rvcnk6
Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQo9MjAKICAgICAgICAgIyBjcmVhdGUgb3duZXJzaGlw
IGZsYWcgZm9yIHRlbXBsYXRlLCBkaWN0aWZ5IG1vZGVscwogICAgICAgICAjIG5vdGU6IGFkZGlu
ZyBvcmlnaW5hbCBhbm5vdGF0aW9uIHNpbmNlIHRoaXMgaXMgcHVibGlzaGVkIC0gZ2V0X2Q9Cmlj
dCByZXR1cm5zIHVzZXItYmFzZWQgYW5ub3MKCmRpZmYgLXIgOGE3MDQ1NzkyYzdmZTQ4YTk5Mjk1
NzcwNGU1MWUzMTNkMzJlNmNkZCAtciAwZjczNzQ4NWNiN2Y1ZDc1NTk1ZTk4YT0KYjhmOGRjMDJi
YTM2OTk3NmYgc3RhdGljL3NjcmlwdHMvZ2FsYXh5Lm1hc3RoZWFkLmpzCi0tLSBhL3N0YXRpYy9z
Y3JpcHRzL2dhbGF4eS5tYXN0aGVhZC5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9nYWxheHkubWFz
dGhlYWQuanMKQEAgLTM2NCw3ICszNjQsNyBAQAogICAgICAgICB2YXIgJHBvcG92ZXJfZWxlbWVu
dCA9M0QgJCh0aGlzLmVsKS5maW5kKCcuaGVhZCcpOwogICAgICAgICAkcG9wb3Zlcl9lbGVtZW50
LnBvcG92ZXIoewogICAgICAgICAgICAgaHRtbDogdHJ1ZSwKLSAgICAgICAgICAgIGNvbnRlbnQ6
ICdQbGVhc2UgPGEgaHJlZj0zRCInICsgZ2FsYXh5X2NvbmZpZy5yb290ICsgJy91c2VyL2xvPQpn
aW4iPmxvZyBpbjwvYT4gb3IgPGEgaHJlZj0zRCInICsgZ2FsYXh5X2NvbmZpZy5yb290ICsgJy91
c2VyL2NyZWF0ZSI+cmVnaXM9CnRlcjwvYT4gdG8gdXNlIHRoaXMgZmVhdHVyZS4nLAorICAgICAg
ICAgICAgY29udGVudDogJ1BsZWFzZSA8YSBocmVmPTNEIicgKyBnYWxheHlfY29uZmlnLnJvb3Qg
KyAndXNlci9sb2c9CmluP3VzZV9wYW5lbHM9M0RUcnVlIj5sb2cgaW48L2E+IG9yIDxhIGhyZWY9
M0QiJyArIGdhbGF4eV9jb25maWcucm9vdCArICd1cz0KZXIvY3JlYXRlP3VzZV9wYW5lbHM9M0RU
cnVlIj5yZWdpc3RlcjwvYT4gdG8gdXNlIHRoaXMgZmVhdHVyZS4nLAogICAgICAgICAgICAgcGxh
Y2VtZW50OiAnYm90dG9tJwogICAgICAgICB9KS5vbignc2hvd24uYnMucG9wb3ZlcicsIGZ1bmN0
aW9uKCkgeyAvLyBob29raW5nIG9uIGJvb3RzdHJhcCBldmU9Cm50IHRvIGF1dG9tYXRpY2FsbHkg
aGlkZSBwb3BvdmVycyBhZnRlciBkZWxheQogICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlv
bigpIHsKCmRpZmYgLXIgOGE3MDQ1NzkyYzdmZTQ4YTk5Mjk1NzcwNGU1MWUzMTNkMzJlNmNkZCAt
ciAwZjczNzQ4NWNiN2Y1ZDc1NTk1ZTk4YT0KYjhmOGRjMDJiYTM2OTk3NmYgc3RhdGljL3Njcmlw
dHMvbXZjL3Rvb2xzL3Rvb2xzLWZvcm0tYmFzZS5qcwotLS0gYS9zdGF0aWMvc2NyaXB0cy9tdmMv
dG9vbHMvdG9vbHMtZm9ybS1iYXNlLmpzCisrKyBiL3N0YXRpYy9zY3JpcHRzL212Yy90b29scy90
b29scy1mb3JtLWJhc2UuanMKQEAgLTExLDggKzExLDIzIEBACiAgICAgcmV0dXJuIEJhY2tib25l
LlZpZXcuZXh0ZW5kKHsKICAgICAgICAgLy8gaW5pdGlhbGl6ZQogICAgICAgICBpbml0aWFsaXpl
OiBmdW5jdGlvbihvcHRpb25zKSB7CisgICAgICAgICAgICAvLyBvcHRpb25zCisgICAgICAgICAg
ICB0aGlzLm9wdGlvbnNEZWZhdWx0ID0zRCB7CisgICAgICAgICAgICAgICAgLy8gdXNlcyBkeW5h
bWljIGZpZWxkcyBpbnN0ZWFkIG9mIHRleHQgZmllbGRzCisgICAgICAgICAgICAgICAgaXNfZHlu
YW1pYyAgICAgIDogdHJ1ZSwKKyAgICAgICAgICAgICAgICAvLyBzaG93cyBmb3JtIGluIGNvbXBh
Y3QgdmlldyBtb2RlCisgICAgICAgICAgICAgICAgY29tcGFjdCAgICAgICAgIDogZmFsc2UsCisg
ICAgICAgICAgICAgICAgLy8gc2hvd3MgZXJyb3JzIG9uIHN0YXJ0CisgICAgICAgICAgICAgICAg
aW5pdGlhbF9lcnJvcnMgIDogZmFsc2UsCisgICAgICAgICAgICAgICAgLy8gZW5zdXJlcyB0aGF0
IGFsbCBkYXRhIGluY2x1ZGluZyBkaXNhYmxlZCBvcHRpb25hbCBmaWVsZD0KcyBhcmUgc3VibWl0
dGVkIHRvIHRoZSBzZXJ2ZXIKKyAgICAgICAgICAgICAgICBzZW5kX2FsbCAgICAgICAgOiBmYWxz
ZQorICAgICAgICAgICAgfTsKKyAgID0yMAorICAgICAgICAgICAgLy8gY29uZmlndXJlIG9wdGlv
bnMKKyAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9M0QgVXRpbHMubWVyZ2Uob3B0aW9ucywgdGhp
cy5vcHRpb25zRGVmYXVsdCk7CisgICA9MjAKICAgICAgICAgICAgIC8vIGxvZyBvcHRpb25zCi0g
ICAgICAgICAgICBjb25zb2xlLmRlYnVnKG9wdGlvbnMpOworICAgICAgICAgICAgY29uc29sZS5k
ZWJ1Zyh0aGlzLm9wdGlvbnMpOwogICAgICAgICAgICA9MjAKICAgICAgICAgICAgIC8vIGxpbmsg
Z2FsYXh5IG1vZGFsIG9yIGNyZWF0ZSBvbmUKICAgICAgICAgICAgIHZhciBnYWxheHkgPTNEIHBh
cmVudC5HYWxheHk7CkBAIC0yOSw5ICs0NCw2IEBACiAgICAgICAgICAgICAgICAgdGhpcy5pc19h
ZG1pbiA9M0QgZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgID0yMAotICAgICAgICAg
ICAgLy8gbGluayBvcHRpb25zCi0gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPTNEIG9wdGlvbnM7
Ci0gICAgICAgICAgID0yMAogICAgICAgICAgICAgLy8gbGluayBjb250YWluZXIKICAgICAgICAg
ICAgIHRoaXMuY29udGFpbmVyID0zRCB0aGlzLm9wdGlvbnMuY29udGFpbmVyIHx8ICdib2R5JzsK
ICAgICAgICAgICAgPTIwCkBAIC03Niw2ICs4OCwyNCBAQAogICAgICAgICAgICAgfQogICAgICAg
ICB9LAogICAgICAgID0yMAorICAgICAgICAvKiogSGlnaGxpZ2h0cyBlcnJvcnMKKyAgICAgICAg
Ki8KKyAgICAgICAgX2Vycm9yczogZnVuY3Rpb24ob3B0aW9ucykgeworICAgICAgICAgICAgLy8g
aGlkZSBwcmV2aW91cyBlcnJvciBzdGF0ZW1lbnRzCisgICAgICAgICAgICB0aGlzLnRyaWdnZXIo
J3Jlc2V0Jyk7CisgICAgICAgPTIwCisgICAgICAgICAgICAvLyBoaWdobGlnaHQgYWxsIGVycm9y
cworICAgICAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5lcnJvcnMpIHsKKyAgICAgICAg
ICAgICAgICB2YXIgZXJyb3JfbWVzc2FnZXMgPTNEIHRoaXMudHJlZS5tYXRjaFJlc3BvbnNlKG9w
dGlvbnMuZXJyPQpvcnMpOworICAgICAgICAgICAgICAgIGZvciAodmFyIGlucHV0X2lkIGluIHRo
aXMuZWxlbWVudF9saXN0KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBpbnB1dCA9M0QgdGhp
cy5lbGVtZW50X2xpc3RbaW5wdXRfaWRdOworICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3Jf
bWVzc2FnZXNbaW5wdXRfaWRdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZ2hs
aWdodChpbnB1dF9pZCwgZXJyb3JfbWVzc2FnZXNbaW5wdXRfaWRdLD0KIHRydWUpOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgID0yMAogICAgICAgICAvKiogTWFpbiB0b29sIGZvcm0gYnVpbGQgZnVuY3Rp
b24uIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2UgYSA9Cm5ldyBtb2RlbCBpcyBhdmFpbGFi
bGUuCiAgICAgICAgICovCiAgICAgICAgIF9idWlsZEZvcm06IGZ1bmN0aW9uKCkgewpAQCAtMTEw
LDE3ICsxNDAsMTQgQEAKICAgICAgICAgICAgIC8vIHJlYnVpbGQgdGhlIHVuZGVybHlpbmcgZGF0
YSBzdHJ1Y3R1cmUKICAgICAgICAgICAgIHRoaXMudHJlZS5maW5hbGl6ZSgpOwogICAgICAgICAg
ICA9MjAKLSAgICAgICAgICAgIC8vIHNob3cgZXJyb3JzCi0gICAgICAgICAgICBpZiAob3B0aW9u
cy5lcnJvcnMpIHsKLSAgICAgICAgICAgICAgICB2YXIgZXJyb3JfbWVzc2FnZXMgPTNEIHRoaXMu
dHJlZS5tYXRjaFJlc3BvbnNlKG9wdGlvbnMuZXJyPQpvcnMpOwotICAgICAgICAgICAgICAgIGZv
ciAodmFyIGlucHV0X2lkIGluIGVycm9yX21lc3NhZ2VzKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHRoaXMuaGlnaGxpZ2h0KGlucHV0X2lkLCBlcnJvcl9tZXNzYWdlc1tpbnB1dF9pZF0sIHRydT0K
ZSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gc2hvdyBlcnJvcnMgb24gc3Rh
cnR1cAorICAgICAgICAgICAgaWYgKG9wdGlvbnMuaW5pdGlhbF9lcnJvcnMpIHsKKyAgICAgICAg
ICAgICAgICB0aGlzLl9lcnJvcnMob3B0aW9ucyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ID0yMAogICAgICAgICAgICAgLy8gYWRkIHJlZnJlc2ggbGlzdGVuZXIKICAgICAgICAgICAgIHRo
aXMub24oJ3JlZnJlc2gnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAvLyBieSB1c2lu
Zy9yZXNldGluZyB0aGUgZGVmZXJyZWQgYWpheCBxdWV1ZSB0aGUgbnVtYmVyIG9mPQogcmVkdW5k
YW50IGNhbGxzIGlzIHJlZHVjZWQKKyAgICAgICAgICAgICAgICAvLyBieSB1c2luZy9yZXNldHRp
bmcgdGhlIGRlZmVycmVkIGFqYXggcXVldWUgdGhlIG51bWJlciBvPQpmIHJlZHVuZGFudCBjYWxs
cyBpcyByZWR1Y2VkCiAgICAgICAgICAgICAgICAgc2VsZi5kZWZlcnJlZC5yZXNldCgpOwogICAg
ICAgICAgICAgICAgIHNlbGYuZGVmZXJyZWQuZXhlY3V0ZShmdW5jdGlvbigpe3NlbGYuX3VwZGF0
ZU1vZGVsKCl9KTsKICAgICAgICAgICAgIH0pOwpAQCAtMTQ4LDcgKzE3NSw3IEBACiAgICAgICAg
ICAgICAvLyBidXR0b24gZm9yIHZlcnNpb24gc2VsZWN0aW9uCiAgICAgICAgICAgICB2YXIgcmVx
dWlyZW1lbnRzX2J1dHRvbiA9M0QgbmV3IFVpLkJ1dHRvbkljb24oewogICAgICAgICAgICAgICAg
IGljb24gICAgOiAnZmEtaW5mby1jaXJjbGUnLAotICAgICAgICAgICAgICAgIHRpdGxlICAgOiAo
IXRoaXMud29ya2Zsb3cgJiYgJ1JlcXVpcmVtZW50cycpIHx8IG51bGwsCisgICAgICAgICAgICAg
ICAgdGl0bGUgICA6ICghb3B0aW9ucy5jb21wYWN0ICYmICdSZXF1aXJlbWVudHMnKSB8fCBudWxs
LAogICAgICAgICAgICAgICAgIHRvb2x0aXAgOiAnRGlzcGxheSB0b29sIHJlcXVpcmVtZW50cycs
CiAgICAgICAgICAgICAgICAgb25jbGljayA6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAg
ICAgICBpZiAoIXRoaXMudmlzaWJsZSkgewpAQCAtMTczLDcgKzIwMCw3IEBACiAgICAgICAgICAg
ICAvLyBidXR0b24gZm9yIHZlcnNpb24gc2VsZWN0aW9uCiAgICAgICAgICAgICB2YXIgdmVyc2lv
bnNfYnV0dG9uID0zRCBuZXcgVWkuQnV0dG9uTWVudSh7CiAgICAgICAgICAgICAgICAgaWNvbiAg
ICA6ICdmYS1jdWJlcycsCi0gICAgICAgICAgICAgICAgdGl0bGUgICA6ICghdGhpcy53b3JrZmxv
dyAmJiAnVmVyc2lvbnMnKSB8fCBudWxsLAorICAgICAgICAgICAgICAgIHRpdGxlICAgOiAoIW9w
dGlvbnMuY29tcGFjdCAmJiAnVmVyc2lvbnMnKSB8fCBudWxsLAogICAgICAgICAgICAgICAgIHRv
b2x0aXAgOiAnU2VsZWN0IGFub3RoZXIgdG9vbCB2ZXJzaW9uJwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJzaW9ucyAmJiBvcHRpb25zLnZlcnNpb25zLmxlbmd0
aCA+IDEpIHsKQEAgLTIwMyw3ICsyMzAsNyBAQAogICAgICAgICAgICAgLy8gYnV0dG9uIG1lbnUK
ICAgICAgICAgICAgIHZhciBtZW51X2J1dHRvbiA9M0QgbmV3IFVpLkJ1dHRvbk1lbnUoewogICAg
ICAgICAgICAgICAgIGljb24gICAgOiAnZmEtY2FyZXQtZG93bicsCi0gICAgICAgICAgICAgICAg
dGl0bGUgICA6ICghdGhpcy53b3JrZmxvdyAmJiAnT3B0aW9ucycpIHx8IG51bGwsCisgICAgICAg
ICAgICAgICAgdGl0bGUgICA6ICghb3B0aW9ucy5jb21wYWN0ICYmICdPcHRpb25zJykgfHwgbnVs
bCwKICAgICAgICAgICAgICAgICB0b29sdGlwIDogJ1ZpZXcgYXZhaWxhYmxlIG9wdGlvbnMnCiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgPTIwCkBAIC0yODAsNyArMzA3LDcgQEAKICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICA9MjAKICAgICAgICAgICAgIC8vIHJlbW92ZSBwYWRkaW5n
Ci0gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLndvcmtmbG93KSB7CisgICAgICAgICAgICBp
ZiAob3B0aW9ucy5jb21wYWN0KSB7CiAgICAgICAgICAgICAgICAgdGhpcy5wb3J0bGV0LiRjb250
ZW50LmNzcygncGFkZGluZycsICcwcHgnKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgPTIw
CgpkaWZmIC1yIDhhNzA0NTc5MmM3ZmU0OGE5OTI5NTc3MDRlNTFlMzEzZDMyZTZjZGQgLXIgMGY3
Mzc0ODVjYjdmNWQ3NTU5NWU5OGE9CmI4ZjhkYzAyYmEzNjk5NzZmIHN0YXRpYy9zY3JpcHRzL212
Yy90b29scy90b29scy1mb3JtLXdvcmtmbG93LmpzCi0tLSBhL3N0YXRpYy9zY3JpcHRzL212Yy90
b29scy90b29scy1mb3JtLXdvcmtmbG93LmpzCisrKyBiL3N0YXRpYy9zY3JpcHRzL212Yy90b29s
cy90b29scy1mb3JtLXdvcmtmbG93LmpzCkBAIC0yNzIsNyArMjcyLDcgQEAKICAgICAgICAgICAg
IHZhciBwcm9jZXNzX2lkID0zRCB0aGlzLmRlZmVycmVkLnJlZ2lzdGVyKCk7Cj0yMAogICAgICAg
ICAgICAgLy8gYnVpbGQgbW9kZWwgdXJsIGZvciByZXF1ZXN0Ci0gICAgICAgICAgICB2YXIgbW9k
ZWxfdXJsID0zRCBnYWxheHlfY29uZmlnLnJvb3QgKyAnd29ya2Zsb3cvZWRpdG9yX2Zvcm1fcD0K
b3N0P3Rvb2xfaWQ9M0QnICsgdGhpcy5vcHRpb25zLmlkOworICAgICAgICAgICAgdmFyIG1vZGVs
X3VybCA9M0QgZ2FsYXh5X2NvbmZpZy5yb290ICsgJ3dvcmtmbG93L2VkaXRvcl9mb3JtX3A9Cm9z
dD90b29sX2lkPTNEJyArIHRoaXMub3B0aW9ucy5pZCArICcmX19pc19keW5hbWljX189M0RGYWxz
ZSc7CiAgICAgICAgICAgID0yMAogICAgICAgICAgICAgLy8gcG9zdCBqb2IKICAgICAgICAgICAg
IFV0aWxzLnJlcXVlc3QoewpAQCAtMjgyLDcgKzI4MiwxMCBAQAogICAgICAgICAgICAgICAgIHN1
Y2Nlc3MgOiBmdW5jdGlvbihkYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBu
b2RlIGluIHdvcmtmbG93IG1vZHVsZQogICAgICAgICAgICAgICAgICAgICBzZWxmLm5vZGUudXBk
YXRlX2ZpZWxkX2RhdGEoZGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgPTIwCisKKyAgICAgICAg
ICAgICAgICAgICAgLy8gaGlnaGxpZ2h0IGVycm9ycworICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9lcnJvcnMoZGF0YSAmJiBkYXRhLnRvb2xfbW9kZWwpOworCiAgICAgICAgICAgICAgICAgICAg
IC8vIHByb2Nlc3MgY29tcGxldGVkCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGVmZXJyZWQu
ZG9uZShwcm9jZXNzX2lkKTsKICAgICAgICAgICAgPTIwCgpkaWZmIC1yIDhhNzA0NTc5MmM3ZmU0
OGE5OTI5NTc3MDRlNTFlMzEzZDMyZTZjZGQgLXIgMGY3Mzc0ODVjYjdmNWQ3NTU5NWU5OGE9CmI4
ZjhkYzAyYmEzNjk5NzZmIHN0YXRpYy9zY3JpcHRzL212Yy90b29scy90b29scy1pbnB1dC5qcwot
LS0gYS9zdGF0aWMvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtaW5wdXQuanMKKysrIGIvc3RhdGlj
L3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLWlucHV0LmpzCkBAIC01MSw5ICs1MSwxMSBAQAogICAg
ICAgICAvKiogU2V0IGVycm9yIHRleHQKICAgICAgICAgKi8KICAgICAgICAgZXJyb3I6IGZ1bmN0
aW9uKHRleHQpIHsKLSAgICAgICAgICAgIHRoaXMuJGVycm9yX3RleHQuaHRtbCh0ZXh0KTsKLSAg
ICAgICAgICAgIHRoaXMuJGVycm9yLmZhZGVJbigpOwotICAgICAgICAgICAgdGhpcy4kZWwuYWRk
Q2xhc3MoJ3VpLWVycm9yJyk7CisgICAgICAgICAgICBpZiAoIXRoaXMuZmllbGQuc2tpcCkgewor
ICAgICAgICAgICAgICAgIHRoaXMuJGVycm9yX3RleHQuaHRtbCh0ZXh0KTsKKyAgICAgICAgICAg
ICAgICB0aGlzLiRlcnJvci5mYWRlSW4oJ2Zhc3QnKTsKKyAgICAgICAgICAgICAgICB0aGlzLiRl
bC5hZGRDbGFzcygndWktZXJyb3InKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSwKICAgICAg
ICA9MjAKICAgICAgICAgLyoqIFJlc2V0IHRoaXMgdmlldwpAQCAtNzAsNiArNzIsNyBAQAogICAg
ICAgICAgICAgICAgIHRoaXMuJGZpZWxkLmZhZGVJbignZmFzdCcpOwogICAgICAgICAgICAgICAg
IHRoaXMuJHRpdGxlX29wdGlvbmFsLmh0bWwoJ0Rpc2FibGUnKTsKICAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpOwogICAgICAgICAgICAgICAgIHRoaXMu
JGZpZWxkLmhpZGUoKTsKICAgICAgICAgICAgICAgICB0aGlzLiR0aXRsZV9vcHRpb25hbC5odG1s
KCdFbmFibGUnKTsKICAgICAgICAgICAgICAgICB0aGlzLmZpZWxkLnZhbHVlICYmIHRoaXMuZmll
bGQudmFsdWUodGhpcy5kZWZhdWx0dmFsdWUpOwoKZGlmZiAtciA4YTcwNDU3OTJjN2ZlNDhhOTky
OTU3NzA0ZTUxZTMxM2QzMmU2Y2RkIC1yIDBmNzM3NDg1Y2I3ZjVkNzU1OTVlOThhPQpiOGY4ZGMw
MmJhMzY5OTc2ZiBzdGF0aWMvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtc2VjdGlvbi5qcwotLS0g
YS9zdGF0aWMvc2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtc2VjdGlvbi5qcworKysgYi9zdGF0aWMv
c2NyaXB0cy9tdmMvdG9vbHMvdG9vbHMtc2VjdGlvbi5qcwpAQCAtMTAsNTEgKzEwLDUxIEBACiAg
ICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGFwcCwgb3B0aW9ucykgewogICAgICAgICAgICAg
Ly8gbGluayBhcHAKICAgICAgICAgICAgIHRoaXMuYXBwID0zRCBhcHA7Ci0gICAgICAgICAgID0y
MAorCiAgICAgICAgICAgICAvLyBsaW5rIGlucHV0cwogICAgICAgICAgICAgdGhpcy5pbnB1dHMg
PTNEIG9wdGlvbnMuaW5wdXRzOwotICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgLy8gYWRk
IHRhYmxlIGNsYXNzIGZvciB0ciB0YWcKICAgICAgICAgICAgIC8vIHRoaXMgYXNzaXN0IGluIHRy
YW5zZm9ybWluZyB0aGUgZm9ybSBpbnRvIGEganNvbiBzdHJ1Y3R1cmUKICAgICAgICAgICAgIG9w
dGlvbnMuY2xzX3RyID0zRCAnc2VjdGlvbi1yb3cnOwotICAgICAgICAgICA9MjAKKwogICAgICAg
ICAgICAgLy8gY3JlYXRlIHRhYmxlCiAgICAgICAgICAgICB0aGlzLnRhYmxlID0zRCBuZXcgVGFi
bGUuVmlldyhvcHRpb25zKTsKLSAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgIC8vIGNvbmZp
Z3VyZSBwb3J0bGV0IGFuZCBmb3JtIHRhYmxlCiAgICAgICAgICAgICB0aGlzLnNldEVsZW1lbnQo
dGhpcy50YWJsZS4kZWwpOwotICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgLy8gcmVuZGVy
IHRvb2wgc2VjdGlvbgogICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTsKICAgICAgICAgfSwKLSAg
ICAgICA9MjAKKwogICAgICAgICAvKiogUmVuZGVyIHNlY3Rpb24gdmlldwogICAgICAgICAqLwog
ICAgICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgLy8gcmVzZXQgdGFibGUK
ICAgICAgICAgICAgIHRoaXMudGFibGUuZGVsQWxsKCk7Ci0gICAgICAgICAgID0yMAorCiAgICAg
ICAgICAgICAvLyBsb2FkIHNldHRpbmdzIGVsZW1lbnRzIGludG8gdGFibGUKICAgICAgICAgICAg
IGZvciAodmFyIGkgaW4gdGhpcy5pbnB1dHMpIHsKICAgICAgICAgICAgICAgICB0aGlzLmFkZCh0
aGlzLmlucHV0c1tpXSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgPTIwCisK
ICAgICAgICAgLyoqIEFkZCBhIG5ldyBpbnB1dCBlbGVtZW50CiAgICAgICAgICovCiAgICAgICAg
IGFkZDogZnVuY3Rpb24oaW5wdXQpIHsKICAgICAgICAgICAgIC8vIGxpbmsgdGhpcwogICAgICAg
ICAgICAgdmFyIHNlbGYgPTNEIHRoaXM7Ci0gICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAv
LyBjbG9uZSBkZWZpbml0aW9uCiAgICAgICAgICAgICB2YXIgaW5wdXRfZGVmID0zRCBqUXVlcnku
ZXh0ZW5kKHRydWUsIHt9LCBpbnB1dCk7Ci0gICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAv
LyBjcmVhdGUgdW5pcXVlIGlkCiAgICAgICAgICAgICBpbnB1dF9kZWYuaWQgPTNEIGlucHV0Lmlk
ID0zRCBVdGlscy51dWlkKCk7Ci0gICA9MjAKKwogICAgICAgICAgICAgLy8gYWRkIHRvIHNlcXVl
bnRpYWwgbGlzdCBvZiBpbnB1dHMKICAgICAgICAgICAgIHRoaXMuYXBwLmlucHV0X2xpc3RbaW5w
dXRfZGVmLmlkXSA9M0QgaW5wdXRfZGVmOwotICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAg
Ly8gaWRlbnRpZnkgZmllbGQgdHlwZQogICAgICAgICAgICAgdmFyIHR5cGUgPTNEIGlucHV0X2Rl
Zi50eXBlOwogICAgICAgICAgICAgc3dpdGNoKHR5cGUpIHsKQEAgLTc1LDM1ICs3NSwzNSBAQAog
ICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZGRSb3coaW5wdXRfZGVmKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfSwKLSAgICAgICA9MjAKKwogICAgICAgICAvKiogQWRkIGEgY29uZGl0aW9u
YWwgYmxvY2sKICAgICAgICAgKi8KICAgICAgICAgX2FkZENvbmRpdGlvbmFsOiBmdW5jdGlvbihp
bnB1dF9kZWYpIHsKICAgICAgICAgICAgIC8vIGxpbmsgdGhpcwogICAgICAgICAgICAgdmFyIHNl
bGYgPTNEIHRoaXM7Ci0gICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAvLyBjb3B5IGlkZW50
aWZpZXIKICAgICAgICAgICAgIGlucHV0X2RlZi50ZXN0X3BhcmFtLmlkID0zRCBpbnB1dF9kZWYu
aWQ7Ci0gICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAvLyBidWlsZCB0ZXN0IHBhcmFtZXRl
cgogICAgICAgICAgICAgdmFyIGZpZWxkID0zRCB0aGlzLl9hZGRSb3coaW5wdXRfZGVmLnRlc3Rf
cGFyYW0pOwotICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgLy8gc2V0IG9uY2hhbmdlIGV2
ZW50IGZvciB0ZXN0IHBhcmFtZXRlcgogICAgICAgICAgICAgZmllbGQub3B0aW9ucy5vbmNoYW5n
ZSA9M0QgZnVuY3Rpb24odmFsdWUpIHsKICAgICAgICAgICAgICAgICAvLyBpZGVudGlmeSB0aGUg
c2VsZWN0ZWQgY2FzZQogICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZENhc2UgPTNEIHNlbGYu
YXBwLnRyZWUubWF0Y2hDYXNlKGlucHV0X2RlZiwgdmE9Cmx1ZSk7Ci0gICAgICAgICAgICAgICA9
MjAKKwogICAgICAgICAgICAgICAgIC8vIGNoZWNrIHZhbHVlIGluIG9yZGVyIHRvIGhpZGUvc2hv
dyBvcHRpb25zCiAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBpbnB1dF9kZWYuY2FzZXMp
IHsKICAgICAgICAgICAgICAgICAgICAgLy8gZ2V0IGNhc2UKICAgICAgICAgICAgICAgICAgICAg
dmFyIGNhc2VfZGVmID0zRCBpbnB1dF9kZWYuY2FzZXNbaV07Ci0gICAgICAgICAgICAgICAgICAg
PTIwCisKICAgICAgICAgICAgICAgICAgICAgLy8gaWRlbnRpZnkgc3Vic2VjdGlvbiBuYW1lCiAg
ICAgICAgICAgICAgICAgICAgIHZhciBzZWN0aW9uX2lkID0zRCBpbnB1dF9kZWYuaWQgKyAnLXNl
Y3Rpb24tJyArIGk7Ci0gICAgICAgICAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgICAgICAg
ICAgLy8gaWRlbnRpZnkgcm93CiAgICAgICAgICAgICAgICAgICAgIHZhciBzZWN0aW9uX3JvdyA9
M0Qgc2VsZi50YWJsZS5nZXQoc2VjdGlvbl9pZCk7Ci0gICAgICAgICAgICAgICAgICAgPTIwCisK
ICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgbm9uLWhpZGRlbiBlbGVtZW50cyBleGlz
dAogICAgICAgICAgICAgICAgICAgICB2YXIgbm9uaGlkZGVuID0zRCBmYWxzZTsKICAgICAgICAg
ICAgICAgICAgICAgZm9yICh2YXIgaiBpbiBjYXNlX2RlZi5pbnB1dHMpIHsKQEAgLTExMiw3ICsx
MTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
PTIwCisKICAgICAgICAgICAgICAgICAgICAgLy8gc2hvdy9oaWRlIHN1YiBmb3JtCiAgICAgICAg
ICAgICAgICAgICAgIGlmIChpID0zRD0zRCBzZWxlY3RlZENhc2UgJiYgbm9uaGlkZGVuKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uX3Jvdy5mYWRlSW4oJ2Zhc3QnKTsKQEAgLTEy
MCw3MSArMTIwLDcxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uX3Jvdy5oaWRl
KCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICA9MjAKKwogICAgICAgICAgICAgICAgIC8vIHJlZnJlc2ggZm9ybSBpbnB1dHMKICAgICAg
ICAgICAgICAgICBzZWxmLmFwcC50cmlnZ2VyKCdyZWZyZXNoJyk7CiAgICAgICAgICAgICB9Owot
ICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgLy8gYWRkIGNvbmRpdGlvbmFsIHN1YiBzZWN0
aW9ucwogICAgICAgICAgICAgZm9yICh2YXIgaSBpbiBpbnB1dF9kZWYuY2FzZXMpIHsKICAgICAg
ICAgICAgICAgICAvLyBjcmVhdGUgaWQgdGFnCiAgICAgICAgICAgICAgICAgdmFyIHN1Yl9zZWN0
aW9uX2lkID0zRCBpbnB1dF9kZWYuaWQgKyAnLXNlY3Rpb24tJyArIGk7Ci0gICAgICAgICAgICAg
ICA9MjAKKwogICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBzdWIgc2VjdGlvbgogICAgICAgICAg
ICAgICAgIHZhciBzdWJfc2VjdGlvbiA9M0QgbmV3IFZpZXcodGhpcy5hcHAsIHsKICAgICAgICAg
ICAgICAgICAgICAgaW5wdXRzICA6IGlucHV0X2RlZi5jYXNlc1tpXS5pbnB1dHMsCiAgICAgICAg
ICAgICAgICAgICAgIGNscyAgICAgOiAndWktdGFibGUtcGxhaW4nCiAgICAgICAgICAgICAgICAg
fSk7Ci0gICAgICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgICAgIC8vIGRpc3BsYXlzIGFz
IGdyb3VwZWQgc3Vic2VjdGlvbgogICAgICAgICAgICAgICAgIHN1Yl9zZWN0aW9uLiRlbC5hZGRD
bGFzcygndWktdGFibGUtZm9ybS1zZWN0aW9uJyk7Ci0gICAgICAgICAgICAgICA9MjAKKwogICAg
ICAgICAgICAgICAgIC8vIGNyZWF0ZSB0YWJsZSByb3cKICAgICAgICAgICAgICAgICB0aGlzLnRh
YmxlLmFkZChzdWJfc2VjdGlvbi4kZWwpOwotICAgICAgICAgICAgICAgPTIwCisKICAgICAgICAg
ICAgICAgICAvLyBhcHBlbmQgdG8gdGFibGUKICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlLmFw
cGVuZChzdWJfc2VjdGlvbl9pZCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgID0yMAorCiAg
ICAgICAgICAgICAvLyB0cmlnZ2VyIHJlZnJlc2ggb24gY29uZGl0aW9uYWwgaW5wdXQgZmllbGQg
YWZ0ZXIgYWxsIGlucHV0ID0KZWxlbWVudHMgaGF2ZSBiZWVuIGNyZWF0ZWQKICAgICAgICAgICAg
IGZpZWxkLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgICAgICB9LAotICAgICAgID0yMAorCiAgICAg
ICAgIC8qKiBBZGQgYSByZXBlYXQgYmxvY2sKICAgICAgICAgKi8KICAgICAgICAgX2FkZFJlcGVh
dDogZnVuY3Rpb24oaW5wdXRfZGVmKSB7CiAgICAgICAgICAgICAvLyBsaW5rIHRoaXMKICAgICAg
ICAgICAgIHZhciBzZWxmID0zRCB0aGlzOwotICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAg
Ly8gYmxvY2sgaW5kZXgKICAgICAgICAgICAgIHZhciBibG9ja19pbmRleCA9M0QgMDsKLSAgICAg
ICAgICAgPTIwCisKICAgICAgICAgICAgIC8vIGhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUgbmV3
IHJlcGVhdCBibG9ja3MKICAgICAgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZSAoaW5wdXRzLCBkZWxl
dGVhYmxlKSB7CiAgICAgICAgICAgICAgICAgLy8gY3JlYXRlIGlkIHRhZwogICAgICAgICAgICAg
ICAgIHZhciBzdWJfc2VjdGlvbl9pZCA9M0QgaW5wdXRfZGVmLmlkICsgJy1zZWN0aW9uLScgKyAo
YmxvY2s9Cl9pbmRleCsrKTsKLSAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgICAgICAvLyBl
bmFibGUvZGlzYWJsZSByZXBlYXQgZGVsZXRlIGJ1dHRvbgogICAgICAgICAgICAgICAgIHZhciBv
bmRlbCA9M0QgbnVsbDsKICAgICAgICAgICAgICAgICBpZiAoZGVsZXRlYWJsZSkgewogICAgICAg
ICAgICAgICAgICAgICBvbmRlbCA9M0QgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBkZWxldGUgcmVwZWF0IGJsb2NrCiAgICAgICAgICAgICAgICAgICAgICAgICByZXBl
YXQuZGVsKHN1Yl9zZWN0aW9uX2lkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgPTIwCisKICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHJldGl0bGUgcmVwZWF0IGJsb2NrCiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXBlYXQucmV0aXRsZShpbnB1dF9kZWYudGl0bGUpOwotICAgICAgICAg
ICAgICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJpZ2dlciBy
ZWZyZXNoCiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFwcC50cmlnZ2VyKCdyZWZyZXNo
Jyk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgPTIwCisKICAgICAgICAgICAgICAgICAvLyBjcmVhdGUgc3ViIHNlY3Rpb24KICAg
ICAgICAgICAgICAgICB2YXIgc3ViX3NlY3Rpb24gPTNEIG5ldyBWaWV3KHNlbGYuYXBwLCB7CiAg
ICAgICAgICAgICAgICAgICAgIGlucHV0cyAgOiBpbnB1dHMsCiAgICAgICAgICAgICAgICAgICAg
IGNscyAgICAgOiAndWktdGFibGUtcGxhaW4nCiAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg
ICAgICAgICA9MjAKKwogICAgICAgICAgICAgICAgIC8vIGFkZCB0YWIKICAgICAgICAgICAgICAg
ICByZXBlYXQuYWRkKHsKICAgICAgICAgICAgICAgICAgICAgaWQgICAgICA6IHN1Yl9zZWN0aW9u
X2lkLApAQCAtMTkyLDExICsxOTIsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgJGVsICAgICA6
IHN1Yl9zZWN0aW9uLiRlbCwKICAgICAgICAgICAgICAgICAgICAgb25kZWwgICA6IG9uZGVsCiAg
ICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgICAg
IC8vIHJldGl0bGUgcmVwZWF0IGJsb2NrCiAgICAgICAgICAgICAgICAgcmVwZWF0LnJldGl0bGUo
aW5wdXRfZGVmLnRpdGxlKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgPTIwCisKICAgICAg
ICAgICAgIC8vCiAgICAgICAgICAgICAvLyBjcmVhdGUgcmVwZWF0IGJsb2NrIGVsZW1lbnQKICAg
ICAgICAgICAgIC8vCkBAIC0yMTEsNyArMjExLDcgQEAKICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5hcHAudHJpZ2dlcigncmVmcmVzaCcpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0pOwotICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIGFk
ZCBwYXJzZWQvbWluaW11bSBudW1iZXIgb2YgcmVwZWF0IGJsb2NrcwogICAgICAgICAgICAgLy8K
QEAgLTIyNSwyOCArMjI1LDI4IEBACiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICAgICAgaW5wdXRzID0zRCBpbnB1dF9kZWYuaW5wdXRzOwogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAgICAgLy8gY3JlYXRlIHJlcGVh
dCBibG9jawogICAgICAgICAgICAgICAgIGNyZWF0ZShpbnB1dHMsIGkgPj0zRCBuX21pbik7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAvLyBjcmVhdGUgaW5w
dXQgZmllbGQgd3JhcHBlcgogICAgICAgICAgICAgdmFyIGlucHV0X2VsZW1lbnQgPTNEIG5ldyBJ
bnB1dEVsZW1lbnQodGhpcy5hcHAsIHsKICAgICAgICAgICAgICAgICBsYWJlbCAgIDogaW5wdXRf
ZGVmLnRpdGxlLAogICAgICAgICAgICAgICAgIGhlbHAgICAgOiBpbnB1dF9kZWYuaGVscCwKICAg
ICAgICAgICAgICAgICBmaWVsZCAgIDogcmVwZWF0CiAgICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgPTIwCisKICAgICAgICAgICAgIC8vIGRpc3BsYXlzIGFzIGdyb3VwZWQgc3Vic2VjdGlvbgog
ICAgICAgICAgICAgaW5wdXRfZWxlbWVudC4kZWwuYWRkQ2xhc3MoJ3VpLXRhYmxlLWZvcm0tc2Vj
dGlvbicpOwotICAgICAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgIC8vIGNyZWF0ZSB0YWJs
ZSByb3cKICAgICAgICAgICAgIHRoaXMudGFibGUuYWRkKGlucHV0X2VsZW1lbnQuJGVsKTsKLSAg
ICAgICAgICAgPTIwCisKICAgICAgICAgICAgIC8vIGFwcGVuZCByb3cgdG8gdGFibGUKICAgICAg
ICAgICAgIHRoaXMudGFibGUuYXBwZW5kKGlucHV0X2RlZi5pZCk7CiAgICAgICAgIH0sCi0gICAg
ICAgPTIwCisKICAgICAgICAgLyoqIEFkZCBhIGN1c3RvbWl6ZWQgc2VjdGlvbgogICAgICAgICAq
LwogICAgICAgICBfYWRkU2VjdGlvbjogZnVuY3Rpb24oaW5wdXRfZGVmKSB7CkBAIC0yNTgsMTQg
KzI1OCwxNCBAQAogICAgICAgICAgICAgICAgIGlucHV0cyAgOiBpbnB1dF9kZWYuaW5wdXRzLAog
ICAgICAgICAgICAgICAgIGNscyAgICAgOiAndWktdGFibGUtcGxhaW4nCiAgICAgICAgICAgICB9
KTsKLSAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgIC8vIGRlbGV0ZSBidXR0b24KICAgICAg
ICAgICAgIHZhciBidXR0b25fdmlzaWJsZSA9M0QgbmV3IFVpLkJ1dHRvbkljb24oewogICAgICAg
ICAgICAgICAgIGljb24gICAgOiAnZmEtZXllLXNsYXNoJywKICAgICAgICAgICAgICAgICB0b29s
dGlwIDogJ1Nob3cvaGlkZSBzZWN0aW9uJywKICAgICAgICAgICAgICAgICBjbHMgICAgIDogJ3Vp
LWJ1dHRvbi1pY29uLXBsYWluJwogICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgID0yMAorCiAg
ICAgICAgICAgICAvLyBjcmVhdGUgcG9ydGxldCBmb3Igc3ViIHNlY3Rpb24KICAgICAgICAgICAg
IHZhciBwb3J0bGV0ID0zRCBuZXcgUG9ydGxldC5WaWV3KHsKICAgICAgICAgICAgICAgICB0aXRs
ZSAgICAgICA6IGlucHV0X2RlZi5sYWJlbCwKQEAgLTI3NSw3ICsyNzUsNyBAQAogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgcG9ydGxldC5hcHBlbmQoc3Vi
X3NlY3Rpb24uJGVsKTsKLSAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgIC8vIGFkZCBldmVu
dCBoYW5kbGVyIHZpc2liaWxpdHkgYnV0dG9uCiAgICAgICAgICAgICB2YXIgdmlzaWJsZSA9M0Qg
ZmFsc2U7CiAgICAgICAgICAgICBwb3J0bGV0LiRjb250ZW50LmhpZGUoKTsKQEAgLTI5MSwxMiAr
MjkxLDEyIEBACiAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbl92aXNpYmxlLnNldEljb24oJ2Zh
LWV5ZScpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0pOwotICAgICAgICAgICA9
MjAKKwogICAgICAgICAgICAgLy8gc2hvdyBzdWIgc2VjdGlvbiBpZiByZXF1ZXN0ZWQKICAgICAg
ICAgICAgIGlmIChpbnB1dF9kZWYuZXhwYW5kKSB7CiAgICAgICAgICAgICAgICAgcG9ydGxldC4k
aGVhZGVyLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgID0yMAor
CiAgICAgICAgICAgICAvLyBjcmVhdGUgdGFibGUgcm93CiAgICAgICAgICAgICB0aGlzLnRhYmxl
LmFkZChwb3J0bGV0LiRlbCk7Cj0yMApAQCAtMzEyLDEwICszMTIsMTAgQEAKPTIwCiAgICAgICAg
ICAgICAvLyBjcmVhdGUgaW5wdXQgZmllbGQKICAgICAgICAgICAgIHZhciBmaWVsZCA9M0QgdGhp
cy5fY3JlYXRlRmllbGQoaW5wdXRfZGVmKTsKLSAgICAgICAgICAgPTIwCisKICAgICAgICAgICAg
IC8vIGFkZCB0byBmaWVsZCBsaXN0CiAgICAgICAgICAgICB0aGlzLmFwcC5maWVsZF9saXN0W2lk
XSA9M0QgZmllbGQ7Ci0gICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAvLyBjcmVhdGUgaW5w
dXQgZmllbGQgd3JhcHBlcgogICAgICAgICAgICAgdmFyIGlucHV0X2VsZW1lbnQgPTNEIG5ldyBJ
bnB1dEVsZW1lbnQodGhpcy5hcHAsIHsKICAgICAgICAgICAgICAgICBsYWJlbCAgICAgICAgICAg
OiBpbnB1dF9kZWYubGFiZWwsCkBAIC0zMjQsNjkgKzMyNCw2OSBAQAogICAgICAgICAgICAgICAg
IGhlbHAgICAgICAgICAgICA6IGlucHV0X2RlZi5oZWxwLAogICAgICAgICAgICAgICAgIGZpZWxk
ICAgICAgICAgICA6IGZpZWxkCiAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgPTIwCisKICAg
ICAgICAgICAgIC8vIGFkZCB0byBlbGVtZW50IGxpc3QKICAgICAgICAgICAgIHRoaXMuYXBwLmVs
ZW1lbnRfbGlzdFtpZF0gPTNEIGlucHV0X2VsZW1lbnQ7Ci0gICAgICAgICAgICAgID0yMAorCiAg
ICAgICAgICAgICAvLyBjcmVhdGUgdGFibGUgcm93CiAgICAgICAgICAgICB0aGlzLnRhYmxlLmFk
ZChpbnB1dF9lbGVtZW50LiRlbCk7Ci0gICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAvLyBh
cHBlbmQgdG8gdGFibGUKICAgICAgICAgICAgIHRoaXMudGFibGUuYXBwZW5kKGlkKTsKLSAgICAg
ICAgICAgPTIwCisKICAgICAgICAgICAgIC8vIGhpZGUgcm93IGlmIG5lY2Nlc3NhcnkKICAgICAg
ICAgICAgIGlmIChpbnB1dF9kZWYuaGlkZGVuKSB7CiAgICAgICAgICAgICAgICAgdGhpcy50YWJs
ZS5nZXQoaWQpLmhpZGUoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgPTIwCisKICAgICAg
ICAgICAgIC8vIHJldHVybiBjcmVhdGVkIGZpZWxkCiAgICAgICAgICAgICByZXR1cm4gZmllbGQ7
CiAgICAgICAgIH0sCi0gICAgICAgPTIwCisKICAgICAgICAgLyoqIFJldHVybnMgYW4gaW5wdXQg
ZmllbGQgZm9yIGEgZ2l2ZW4gZmllbGQgdHlwZQogICAgICAgICAqLwogICAgICAgICBfY3JlYXRl
RmllbGQ6IGZ1bmN0aW9uKGlucHV0X2RlZikgewogICAgICAgICAgICAgLy8gZmllbGQgd3JhcHBl
cgogICAgICAgICAgICAgdmFyIGZpZWxkID0zRCBudWxsOwotICAgICAgICAgICA9MjAKKwogICAg
ICAgICAgICAgLy8gaWRlbnRpZnkgZmllbGQgdHlwZQogICAgICAgICAgICAgc3dpdGNoKGlucHV0
X2RlZi50eXBlKSB7CiAgICAgICAgICAgICAgICAgLy8gdGV4dCBpbnB1dCBmaWVsZAogICAgICAg
ICAgICAgICAgIGNhc2UgJ3RleHQnIDoKICAgICAgICAgICAgICAgICAgICAgZmllbGQgPTNEIHRo
aXMuX2ZpZWxkVGV4dChpbnB1dF9kZWYpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgICAgIC8vIHNlbGVjdCBmaWVsZAog
ICAgICAgICAgICAgICAgIGNhc2UgJ3NlbGVjdCcgOgogICAgICAgICAgICAgICAgICAgICBmaWVs
ZCA9M0QgdGhpcy5fZmllbGRTZWxlY3QoaW5wdXRfZGVmKTsKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgPTIwCisKICAgICAgICAgICAgICAgICAvLyBkYXRh
IHNlbGVjdG9yCiAgICAgICAgICAgICAgICAgY2FzZSAnZGF0YSc6CiAgICAgICAgICAgICAgICAg
ICAgIGZpZWxkID0zRCB0aGlzLl9maWVsZERhdGEoaW5wdXRfZGVmKTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgICAgIC8vIGNv
bGxlY3Rpb24gc2VsZWN0b3IKICAgICAgICAgICAgICAgICBjYXNlICdkYXRhX2NvbGxlY3Rpb24n
OgogICAgICAgICAgICAgICAgICAgICBmaWVsZCA9M0QgdGhpcy5fZmllbGREYXRhKGlucHV0X2Rl
Zik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgID0yMAor
CiAgICAgICAgICAgICAgICAgLy8gZGF0YSBjb2x1bW4KICAgICAgICAgICAgICAgICBjYXNlICdk
YXRhX2NvbHVtbic6CiAgICAgICAgICAgICAgICAgICAgIGlucHV0X2RlZi5lcnJvcl90ZXh0ID0z
RCAnTWlzc2luZyBjb2x1bW5zIGluIHJlZmVyZW5jZT0KZCBkYXRhc2V0Lic7CiAgICAgICAgICAg
ICAgICAgICAgIGZpZWxkID0zRCB0aGlzLl9maWVsZFNlbGVjdChpbnB1dF9kZWYpOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICA9MjAKKwogICAgICAgICAg
ICAgICAgIC8vIGhpZGRlbiBmaWVsZAogICAgICAgICAgICAgICAgIGNhc2UgJ2hpZGRlbic6CiAg
ICAgICAgICAgICAgICAgICAgIGZpZWxkID0zRCB0aGlzLl9maWVsZEhpZGRlbihpbnB1dF9kZWYp
OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgID0yMAorCiAgICAg
ICAgICAgICAgICAgLy8gaGlkZGVuIGRhdGEgZmllbGQKICAgICAgICAgICAgICAgICBjYXNlICdo
aWRkZW5fZGF0YSc6CiAgICAgICAgICAgICAgICAgICAgIGZpZWxkID0zRCB0aGlzLl9maWVsZEhp
ZGRlbihpbnB1dF9kZWYpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgID0yMAorCiAgICAgICAgICAgICAgICAgLy8gaW50ZWdlciBmaWVsZAogICAgICAgICAgICAg
ICAgIGNhc2UgJ2ludGVnZXInOgogICAgICAgICAgICAgICAgICAgICBmaWVsZCA9M0QgdGhpcy5f
ZmllbGRTbGlkZXIoaW5wdXRfZGVmKTsKQEAgLTM5NiwzMyArMzk2LDMzIEBACiAgICAgICAgICAg
ICAgICAgY2FzZSAnZmxvYXQnOgogICAgICAgICAgICAgICAgICAgICBmaWVsZCA9M0QgdGhpcy5f
ZmllbGRTbGlkZXIoaW5wdXRfZGVmKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAgICAgLy8g
Ym9vbGVhbiBmaWVsZAogICAgICAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOgogICAgICAgICAg
ICAgICAgICAgICBmaWVsZCA9M0QgdGhpcy5fZmllbGRCb29sZWFuKGlucHV0X2RlZik7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgID0yMAorCiAgICAgICAg
ICAgICAgICAgLy8gZ2Vub21lIGZpZWxkCiAgICAgICAgICAgICAgICAgY2FzZSAnZ2Vub21lYnVp
bGQnOgogICAgICAgICAgICAgICAgICAgICBpbnB1dF9kZWYuc2VhcmNoYWJsZSA9M0QgdHJ1ZTsK
ICAgICAgICAgICAgICAgICAgICAgZmllbGQgPTNEIHRoaXMuX2ZpZWxkU2VsZWN0KGlucHV0X2Rl
Zik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgPTIwCisKICAg
ICAgICAgICAgICAgICAvLyBkcmlsbCBkb3duIGZpZWxkCiAgICAgICAgICAgICAgICAgY2FzZSAn
ZHJpbGxfZG93bic6CiAgICAgICAgICAgICAgICAgICAgIGZpZWxkID0zRCB0aGlzLl9maWVsZERy
aWxsZG93bihpbnB1dF9kZWYpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgID0yMAorCiAgICAgICAgICAgICAgICAgLy8gYmFzZSB1cmwgZmllbGQKICAgICAgICAg
ICAgICAgICBjYXNlICdiYXNldXJsJzoKICAgICAgICAgICAgICAgICAgICAgZmllbGQgPTNEIHRo
aXMuX2ZpZWxkSGlkZGVuKGlucHV0X2RlZik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgICAgIC8vIGZpZWxkIG5v
dCBmb3VuZAogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIC8v
IGZsYWcKICAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHAuaW5jb21wYXRpYmxlID0zRCB0cnVl
OwotICAgICAgICAgICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAgICAgICAgIC8vIHdpdGgg
b3Igd2l0aG91dCBvcHRpb25zCiAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dF9kZWYub3B0
aW9ucykgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXNzaWduIHNlbGVjdCBmaWVsZApA
QCAtNDMxLDI2ICs0MzEsMjYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFzc2lnbiB0
ZXh0IGZpZWxkCiAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZCA9M0QgdGhpcy5fZmllbGRU
ZXh0KGlucHV0X2RlZik7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICA9MjAKKwogICAgICAgICAgICAgICAgICAgICAvLyBsb2cKICAgICAgICAgICAgICAgICAgICAg
Y29uc29sZS5kZWJ1ZygndG9vbHMtZm9ybTo6X2FkZFJvdygpIDogQXV0byBtYXRjaGVkIGZpPQpl
bGQgdHlwZSAoJyArIGlucHV0X2RlZi50eXBlICsgJykuJyk7CiAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgID0yMAorCiAgICAgICAgICAgICAvLyBzZXQgZmllbGQgdmFsdWUKICAgICAgICAgICAg
IGlmIChpbnB1dF9kZWYudmFsdWUgIT0zRD0zRCB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAg
ICBmaWVsZC52YWx1ZShpbnB1dF9kZWYudmFsdWUpOwogICAgICAgICAgICAgfQotICAgICAgICAg
ICA9MjAKKwogICAgICAgICAgICAgLy8gcmV0dXJuIGZpZWxkIGVsZW1lbnQKICAgICAgICAgICAg
IHJldHVybiBmaWVsZDsKICAgICAgICAgfSwKLSAgICAgICA9MjAKKwogICAgICAgICAvKiogRGF0
YSBpbnB1dCBmaWVsZAogICAgICAgICAqLwogICAgICAgICBfZmllbGREYXRhIDogZnVuY3Rpb24o
aW5wdXRfZGVmKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5hcHAud29ya2Zsb3cpIHsKLSAgICAg
ICAgICAgICAgICB2YXIgZXh0ZW5zaW9ucyA9M0QgVXRpbHMudGV4dGlmeShpbnB1dF9kZWYuZXh0
ZW5zaW9ucy50b1N0PQpyaW5nKCkpOwotICAgICAgICAgICAgICAgIGlucHV0X2RlZi5pbmZvID0z
RCAnRGF0YSBpbnB1dCBcJycgKyBpbnB1dF9kZWYubmFtZSArICdcJyA9CignICsgZXh0ZW5zaW9u
cyArICcpJzsKKyAgICAgICAgICAgIGlmICghdGhpcy5hcHAub3B0aW9ucy5pc19keW5hbWljKSB7
CisgICAgICAgICAgICAgICAgaW5wdXRfZGVmLmluZm8gPTNEICdEYXRhIGlucHV0IFwnJyArIGlu
cHV0X2RlZi5uYW1lICsgJ1wnID0KKCcgKyBVdGlscy50ZXh0aWZ5KGlucHV0X2RlZi5leHRlbnNp
b25zLnRvU3RyaW5nKCkpICsgJyknOworICAgICAgICAgICAgICAgIGlucHV0X2RlZi52YWx1ZSA9
M0QgbnVsbDsKICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZmllbGRIaWRkZW4oaW5wdXRf
ZGVmKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHZhciBzZWxmID0zRCB0aGlzOwpAQCAt
NDY1LDE4ICs0NjUsMTUgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgfSwKLSAgICAgICA9MjAKKwogICAgICAgICAvKiogU2VsZWN0L0NoZWNrYm94L1JhZGlv
IG9wdGlvbnMgZmllbGQKICAgICAgICAgKi8KICAgICAgICAgX2ZpZWxkU2VsZWN0IDogZnVuY3Rp
b24gKGlucHV0X2RlZikgewotICAgICAgICAgICAgLy8gc2hvdyB0ZXh0IGZpZWxkIGluIHdvcmtm
bG93Ci0gICAgICAgICAgICBpZiAodGhpcy5hcHAud29ya2Zsb3cgJiYgaW5wdXRfZGVmLmlzX2R5
bmFtaWMpIHsKLSAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLnZhbGlkYXRlKGlucHV0X2RlZi52
YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaW5wdXRfZGVmLnZhbHVlID0zRCAnJzsKLSAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBzaG93IHRleHQgZmllbGQgaW4gaWYgZHlu
YW1pYyBmaWVsZHMgYXJlIGRpc2FibGVkIGUuZy4gaW4gdz0Kb3JrZmxvdyBlZGl0b3IKKyAgICAg
ICAgICAgIGlmICghdGhpcy5hcHAub3B0aW9ucy5pc19keW5hbWljICYmIGlucHV0X2RlZi5pc19k
eW5hbWljKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpZWxkVGV4dChpbnB1dF9k
ZWYpOwogICAgICAgICAgICAgfQotICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAgLy8gY29u
ZmlndXJlIG9wdGlvbnMgZmllbGRzCiAgICAgICAgICAgICB2YXIgb3B0aW9ucyA9M0QgW107CiAg
ICAgICAgICAgICBmb3IgKHZhciBpIGluIGlucHV0X2RlZi5vcHRpb25zKSB7CkBAIC00ODYsNyAr
NDgzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IG9wdGlvblsxXQogICAgICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgfQotICAgICAgICAgICA9MjAKKwogICAgICAgICAgICAg
Ly8gaWRlbnRpZnkgZGlzcGxheSB0eXBlCiAgICAgICAgICAgICB2YXIgU2VsZWN0Q2xhc3MgPTNE
IFVpLlNlbGVjdDsKICAgICAgICAgICAgIHN3aXRjaCAoaW5wdXRfZGVmLmRpc3BsYXkpIHsKQEAg
LTQ5Nyw3ICs0OTQsNyBAQAogICAgICAgICAgICAgICAgICAgICBTZWxlY3RDbGFzcyA9M0QgVWku
UmFkaW87CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICA9MjAKKwogICAgICAgICAgICAgLy8gc2VsZWN0IGZpZWxkCiAgICAgICAgICAgICB2YXIg
c2VsZiA9M0QgdGhpczsKICAgICAgICAgICAgIHJldHVybiBuZXcgU2VsZWN0Q2xhc3MuVmlldyh7
CkBAIC01MTEsMTAgKzUwOCwxNiBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0p
OwogICAgICAgICB9LAotICAgICAgID0yMAorCiAgICAgICAgIC8qKiBEcmlsbCBkb3duIG9wdGlv
bnMgZmllbGQKICAgICAgICAgKi8KICAgICAgICAgX2ZpZWxkRHJpbGxkb3duIDogZnVuY3Rpb24g
KGlucHV0X2RlZikgeworICAgICAgICAgICAgLy8gc2hvdyB0ZXh0IGZpZWxkIGluIGlmIGR5bmFt
aWMgZmllbGRzIGFyZSBkaXNhYmxlZCBlLmcuIGluIHc9Cm9ya2Zsb3cgZWRpdG9yCisgICAgICAg
ICAgICBpZiAoIXRoaXMuYXBwLm9wdGlvbnMuaXNfZHluYW1pYyAmJiBpbnB1dF9kZWYuaXNfZHlu
YW1pYykgeworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9maWVsZFRleHQoaW5wdXRfZGVm
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgPTIwCisgICAgICAgICAgICAvLyBjcmVhdGUg
ZHJpbGwgZG93biBmaWVsZAogICAgICAgICAgICAgdmFyIHNlbGYgPTNEIHRoaXM7CiAgICAgICAg
ICAgICByZXR1cm4gbmV3IFVpLkRyaWxsZG93bi5WaWV3KHsKICAgICAgICAgICAgICAgICBpZCAg
ICAgICAgICA6ICdmaWVsZC0nICsgaW5wdXRfZGVmLmlkLApAQCAtNTI5LDYgKzUzMiwyNyBAQAog
ICAgICAgICAvKiogVGV4dCBpbnB1dCBmaWVsZAogICAgICAgICAqLwogICAgICAgICBfZmllbGRU
ZXh0IDogZnVuY3Rpb24oaW5wdXRfZGVmKSB7CisgICAgICAgICAgICAvLyBmaWVsZCByZXBsYWNl
cyBlLmcuIGEgc2VsZWN0IGZpZWxkCisgICAgICAgICAgICBpZiAoaW5wdXRfZGVmLm9wdGlvbnMp
IHsKKyAgICAgICAgICAgICAgICAvLyBzaG93IHRleHQgYXJlYSBpZiBzZWxlY3RpbmcgbXVsdGlw
bGUgZW50cmllcyBpcyBhbGxvd2VkCisgICAgICAgICAgICAgICAgaW5wdXRfZGVmLmFyZWEgPTNE
IGlucHV0X2RlZi5tdWx0aXBsZTsKKworICAgICAgICAgICAgICAgIC8vIHZhbGlkYXRlIHZhbHVl
CisgICAgICAgICAgICAgICAgaWYgKCFVdGlscy52YWxpZGF0ZShpbnB1dF9kZWYudmFsdWUpKSB7
CisgICAgICAgICAgICAgICAgICAgIGlucHV0X2RlZi52YWx1ZSA9M0QgJyc7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0X2RlZi52YWx1ZSBp
bnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9kZWYudmFs
dWUgPTNEIHZhbHVlLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF9kZWYudmFsdWUgPTNEIFN0cmluZyhpbnB1dF9k
ZWYudmFsdWUpLnJlcGxhYz0KZSgvW1xbXF0nIlxzXS9nLCAnJyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoaW5wdXRfZGVmLm11bHRpcGxlKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5wdXRfZGVmLnZhbHVlID0zRCBpbnB1dF9kZWYudmFsdWUucmVwbGFjZSgvLD0KL2cs
ICdcbicpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBjcmVh
dGUgaW5wdXQgZWxlbWVudAogICAgICAgICAgICAgdmFyIHNlbGYgPTNEIHRoaXM7CiAgICAgICAg
ICAgICByZXR1cm4gbmV3IFVpLklucHV0KHsKICAgICAgICAgICAgICAgICBpZCAgICAgICAgICA6
ICdmaWVsZC0nICsgaW5wdXRfZGVmLmlkLApAQCAtNTM4LDcgKzU2Miw3IEBACiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0sCi0gICAgICAgPTIwCisKICAgICAg
ICAgLyoqIFNsaWRlciBmaWVsZAogICAgICAgICAqLwogICAgICAgICBfZmllbGRTbGlkZXI6IGZ1
bmN0aW9uKGlucHV0X2RlZikgewpAQCAtNTUzLDcgKzU3Nyw3IEBACiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0sCi0gICAgICAgPTIwCisKICAgICAgICAgLyoq
IEhpZGRlbiBmaWVsZAogICAgICAgICAqLwogICAgICAgICBfZmllbGRIaWRkZW4gOiBmdW5jdGlv
bihpbnB1dF9kZWYpIHsKQEAgLTU2Miw3ICs1ODYsNyBAQAogICAgICAgICAgICAgICAgIGluZm8g
ICAgICAgIDogaW5wdXRfZGVmLmluZm8KICAgICAgICAgICAgIH0pOwogICAgICAgICB9LAotICAg
ICAgID0yMAorCiAgICAgICAgIC8qKiBCb29sZWFuIGZpZWxkCiAgICAgICAgICovCiAgICAgICAg
IF9maWVsZEJvb2xlYW4gOiBmdW5jdGlvbihpbnB1dF9kZWYpIHsKCmRpZmYgLXIgOGE3MDQ1Nzky
YzdmZTQ4YTk5Mjk1NzcwNGU1MWUzMTNkMzJlNmNkZCAtciAwZjczNzQ4NWNiN2Y1ZDc1NTk1ZTk4
YT0KYjhmOGRjMDJiYTM2OTk3NmYgc3RhdGljL3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLXRyZWUu
anMKLS0tIGEvc3RhdGljL3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLXRyZWUuanMKKysrIGIvc3Rh
dGljL3NjcmlwdHMvbXZjL3Rvb2xzL3Rvb2xzLXRyZWUuanMKQEAgLTEyMywxNCArMTIzLDE0IEBA
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICA9MjAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxl
IHNpbXBsZSB2YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZpZWxk
LnNraXAgfHwgc2VsZi5hcHAud29ya2Zsb3cpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFmaWVsZC5za2lwIHx8IHNlbGYuYXBwLm9wdGlvbnMuc2VuZF9hPQpsbCkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLnZhbGlkYXRlICYm
ICFmaWVsZC52YWxpZGF0ZSg9CikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2YWx1ZSA9M0QgbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5pZ25v
cmUgPTNEPTNEPTNEIHVuZGVmaW5lZCB8PQp8ICh2YWx1ZSAhPTNEPTNEIG51bGwgJiYgaW5wdXQu
aWdub3JlICE9M0QgdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gYWRkIHZhbHVlIHRvIHN1Ym1pc3Npb24KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhZGQgKGpvYl9pbnB1dF9pZCwgaW5wdXQuaWQsIHZhbHVlPQopOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgID0yMAorCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gYWRkIHBheWxvYWQgdG8gc3VibWlzc2lvbgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5wYXlsb2FkKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHBfaWQgaW4g
aW5wdXQucGF5bG9hZD0KKSB7CgpkaWZmIC1yIDhhNzA0NTc5MmM3ZmU0OGE5OTI5NTc3MDRlNTFl
MzEzZDMyZTZjZGQgLXIgMGY3Mzc0ODVjYjdmNWQ3NTU5NWU5OGE9CmI4ZjhkYzAyYmEzNjk5NzZm
IHN0YXRpYy9zY3JpcHRzL212Yy91cGxvYWQvdXBsb2FkLXZpZXcuanMKLS0tIGEvc3RhdGljL3Nj
cmlwdHMvbXZjL3VwbG9hZC91cGxvYWQtdmlldy5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9tdmMv
dXBsb2FkL3VwbG9hZC12aWV3LmpzCkBAIC0zMzUsOCArMzM1LDggQEAKICAgICAgICAgdG9vbF9p
bnB1dFsnZGJrZXknXSA9M0QgZ2Vub21lOwogICAgICAgICB0b29sX2lucHV0WydmaWxlX3R5cGUn
XSA9M0QgZXh0ZW5zaW9uOwogICAgICAgICB0b29sX2lucHV0WydmaWxlc18wfHR5cGUnXSA9M0Qg
J3VwbG9hZF9kYXRhc2V0JzsKLSAgICAgICAgdG9vbF9pbnB1dFsnc3BhY2VfdG9fdGFicyddID0z
RCBzcGFjZV90b190YWJzOwotICAgICAgICB0b29sX2lucHV0Wyd0b19wb3NpeF9saW5lcyddID0z
RCB0b19wb3NpeF9saW5lczsKKyAgICAgICAgdG9vbF9pbnB1dFsnZmlsZXNfMHxzcGFjZV90b190
YWInXSA9M0Qgc3BhY2VfdG9fdGFicyAmJiAnWWVzJyB8fCBuPQp1bGw7CisgICAgICAgIHRvb2xf
aW5wdXRbJ2ZpbGVzXzB8dG9fcG9zaXhfbGluZXMnXSA9M0QgdG9fcG9zaXhfbGluZXMgJiYgJ1ll
cycgfD0KfCBudWxsOwogICAgICAgID0yMAogICAgICAgICAvLyBzZXR1cCBkYXRhCiAgICAgICAg
IGRhdGEgPTNEIHt9OwoKZGlmZiAtciA4YTcwNDU3OTJjN2ZlNDhhOTkyOTU3NzA0ZTUxZTMxM2Qz
MmU2Y2RkIC1yIDBmNzM3NDg1Y2I3ZjVkNzU1OTVlOThhPQpiOGY4ZGMwMmJhMzY5OTc2ZiBzdGF0
aWMvc2NyaXB0cy9wYWNrZWQvZ2FsYXh5Lm1hc3RoZWFkLmpzCi0tLSBhL3N0YXRpYy9zY3JpcHRz
L3BhY2tlZC9nYWxheHkubWFzdGhlYWQuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvcGFja2VkL2dh
bGF4eS5tYXN0aGVhZC5qcwpAQCAtMSwxICsxLDEgQEAKLWRlZmluZShbXSxmdW5jdGlvbigpe3Zh
ciBhPTNEQmFja2JvbmUuVmlldy5leHRlbmQoe2VsX21hc3RoZWFkOiIjZXZlcnl0aGluPQpnIixv
cHRpb25zOm51bGwsJGJhY2tncm91bmQ6bnVsbCxsaXN0OltdLGluaXRpYWxpemU6ZnVuY3Rpb24o
ZSl7dGhpcy5vcHRpb249CnM9M0RlOyQoImJvZHkiKS5vZmYoKTt0aGlzLnNldEVsZW1lbnQoJCh0
aGlzLl90ZW1wbGF0ZShlKSkpOyQodGhpcy5lbF9tYXN0aD0KZWFkKS5hcHBlbmQoJCh0aGlzLmVs
KSk7dGhpcy4kYmFja2dyb3VuZD0zRCQodGhpcy5lbCkuZmluZCgiI21hc3RoZWFkLWJhY2tnPQpy
b3VuZCIpO3ZhciBkPTNEdGhpczskKHdpbmRvdykub24oImJlZm9yZXVubG9hZCIsZnVuY3Rpb24o
KXt2YXIgZz0zRCIiO2Zvcig9CmtleSBpbiBkLmxpc3Qpe2lmKGQubGlzdFtrZXldLm9wdGlvbnMu
b251bmxvYWQpe3ZhciBmPTNEZC5saXN0W2tleV0ub3B0aW9ucz0KLm9udW5sb2FkKCk7aWYoZil7
Zys9M0RmKyIgIn19fWlmKGchPTNEIiIpe3JldHVybiBnfX0pfSxldmVudHM6e2NsaWNrOiJfY2xp
PQpjayIsbW91c2Vkb3duOmZ1bmN0aW9uKGQpe2QucHJldmVudERlZmF1bHQoKX19LGFwcGVuZDpm
dW5jdGlvbihkKXtyZXR1cm4gdGg9CmlzLl9hZGQoZCx0cnVlKX0scHJlcGVuZDpmdW5jdGlvbihk
KXtyZXR1cm4gdGhpcy5fYWRkKGQsZmFsc2UpfSxoaWdobGlnaHQ6Zj0KdW5jdGlvbihlKXt2YXIg
ZD0zRCQodGhpcy5lbCkuZmluZCgiIyIrZSsiPiBsaSIpO2lmKGQpe2QuYWRkQ2xhc3MoImFjdGl2
ZSIpPQp9fSxfYWRkOmZ1bmN0aW9uKGcsZSl7dmFyIGQ9M0QkKHRoaXMuZWwpLmZpbmQoIiMiK2cu
bG9jYXRpb24pO2lmKGQpe3ZhciBmPQo9M0QkKGcuZWwpO2YuYWRkQ2xhc3MoIm1hc3RoZWFkLWl0
ZW0iKTtpZihlKXtkLmFwcGVuZChmKX1lbHNle2QucHJlcGVuZChmKX09CnRoaXMubGlzdC5wdXNo
KGcpfXJldHVybiBudWxsfSxfY2xpY2s6ZnVuY3Rpb24oZyl7dmFyIGY9M0QkKHRoaXMuZWwpLmZp
bmQoIj0KLnBvcHVwIik7aWYoZil7Zi5oaWRlKCl9dmFyIGQ9M0QkKGcudGFyZ2V0KS5jbG9zZXN0
KCIubWFzdGhlYWQtaXRlbSIpLmZpbmQoPQoiLnBvcHVwIik7aWYoJChnLnRhcmdldCkuaGFzQ2xh
c3MoImhlYWQiKSl7ZC5zaG93KCk7dGhpcy4kYmFja2dyb3VuZC5zaG93KCk9Cn1lbHNle3RoaXMu
JGJhY2tncm91bmQuaGlkZSgpfX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGQpe3ZhciBlPTNEZC5icmFu
ZD8oIi8gIj0KK2QuYnJhbmQpOiIiO3JldHVybic8ZGl2PjxkaXYgaWQ9M0QibWFzdGhlYWQiIGNs
YXNzPTNEIm5hdmJhciBuYXZiYXItZml4ZWQtPQp0b3AgbmF2YmFyLWludmVyc2UiPjxkaXYgc3R5
bGU9M0QicG9zaXRpb246IHJlbGF0aXZlOyByaWdodDogLTUwJTsgZmxvYXQ6IGw9CmVmdDsiPjxk
aXYgaWQ9M0QibmF2YmFyIiBzdHlsZT0zRCJkaXNwbGF5OiBibG9jazsgcG9zaXRpb246IHJlbGF0
aXZlOyByaWdodD0KOiA1MCU7Ij48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPTNEIm5hdmJhci1icmFu
ZCI+PGEgaHJlZj0zRCInK2QubG9nb191cmwrJyI+PQo8aW1nIGJvcmRlcj0zRCIwIiBzcmM9M0Qi
JytnYWxheHlfY29uZmlnLnJvb3QrJ3N0YXRpYy9pbWFnZXMvZ2FsYXh5SWNvbl9ub1Q9CmV4dC5w
bmciPjxzcGFuIGlkPTNEImJyYW5kIj4gR2FsYXh5ICcrZSsnPC9zcGFuPjwvYT48L2Rpdj48ZGl2
IGNsYXNzPTNEInF1bz0KdGEtbWV0ZXItY29udGFpbmVyIj48L2Rpdj48ZGl2IGlkPTNEImljb25i
YXIiIGNsYXNzPTNEImljb25iYXIiPjwvZGl2PjwvZGl2PQo+PGRpdiBpZD0zRCJtYXN0aGVhZC1i
YWNrZ3JvdW5kIiBzdHlsZT0zRCJkaXNwbGF5OiBub25lOyBwb3NpdGlvbjogYWJzb2x1dGU9Cjsg
dG9wOiAzM3B4OyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyB6LWluZGV4OiAxMDEwIj48L2Rp
dj48L2Rpdj4nfX0pO3Zhcj0KIGI9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7b3B0aW9uczp7aWQ6
IiIsaWNvbjoiZmEtY29nIix0b29sdGlwOiIiLHdpdGhfbnVtPQpiZXI6ZmFsc2Usb25jbGljazpm
dW5jdGlvbigpe2FsZXJ0KCJjbGlja2VkIil9LG9udW5sb2FkOm51bGwsdmlzaWJsZTp0cnVlfSw9
CmxvY2F0aW9uOiJpY29uYmFyIixpbml0aWFsaXplOmZ1bmN0aW9uKGUpe2lmKGUpe3RoaXMub3B0
aW9ucz0zRF8uZGVmYXVsdHMoZT0KLHRoaXMub3B0aW9ucyl9dGhpcy5zZXRFbGVtZW50KCQodGhp
cy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSkpO3ZhciBkPTNEdGhpPQpzOyQodGhpcy5lbCkuZmlu
ZCgiLmljb24iKS50b29sdGlwKHt0aXRsZTp0aGlzLm9wdGlvbnMudG9vbHRpcCxwbGFjZW1lbnQ6
ImI9Cm90dG9tIn0pLm9uKCJtb3VzZXVwIixkLm9wdGlvbnMub25jbGljayk7aWYoIXRoaXMub3B0
aW9ucy52aXNpYmxlKXt0aGlzLmhpZD0KZSgpfX0sc2hvdzpmdW5jdGlvbigpeyQodGhpcy5lbCku
Y3NzKHt2aXNpYmlsaXR5OiJ2aXNpYmxlIn0pfSxoaWRlOmZ1bmN0aW9uPQooKXskKHRoaXMuZWwp
LmNzcyh7dmlzaWJpbGl0eToiaGlkZGVuIn0pfSxpY29uOmZ1bmN0aW9uKGQpeyQodGhpcy5lbCku
ZmluZCg9CiIuaWNvbiIpLnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5pY29uKS5hZGRDbGFzcyhk
KTt0aGlzLm9wdGlvbnMuaWNvbj0zRGR9LD0KdG9nZ2xlOmZ1bmN0aW9uKCl7JCh0aGlzLmVsKS5h
ZGRDbGFzcygidG9nZ2xlIil9LHVudG9nZ2xlOmZ1bmN0aW9uKCl7JCh0aGlzPQouZWwpLnJlbW92
ZUNsYXNzKCJ0b2dnbGUiKX0sbnVtYmVyOmZ1bmN0aW9uKGQpeyQodGhpcy5lbCkuZmluZCgiLm51
bWJlciIpLnQ9CmV4dChkKX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGUpe3ZhciBkPTNEJzxkaXYgaWQ9
M0QiJytlLmlkKyciIGNsYXNzPTNEInN5bWJvbD0KIj48ZGl2IGNsYXNzPTNEImljb24gZmEgZmEt
MnggJytlLmljb24rJyI+PC9kaXY+JztpZihlLndpdGhfbnVtYmVyKXtkKz0zRCc8PQpkaXYgY2xh
c3M9M0QibnVtYmVyIj48L2Rpdj4nfWQrPTNEIjwvZGl2PiI7cmV0dXJuIGR9fSk7dmFyIGM9M0RC
YWNrYm9uZS5WaWU9CncuZXh0ZW5kKHtvcHRpb25zOntpZDoiIix0aXRsZToiIix0YXJnZXQ6Il9w
YXJlbnQiLGNvbnRlbnQ6IiIsdHlwZToidXJsIixzYz0KcmF0Y2hib29rOmZhbHNlLG9udW5sb2Fk
Om51bGwsdmlzaWJsZTp0cnVlLGRpc2FibGVkOmZhbHNlLHRpdGxlX2F0dHJpYnV0ZToiPQoifSxs
b2NhdGlvbjoibmF2YmFyIiwkbWVudTpudWxsLGV2ZW50czp7ImNsaWNrIC5oZWFkIjoiX2hlYWQi
fSxpbml0aWFsaXplOmY9CnVuY3Rpb24oZCl7aWYoZCl7dGhpcy5vcHRpb25zPTNEXy5kZWZhdWx0
cyhkLHRoaXMub3B0aW9ucyl9aWYodGhpcy5vcHRpb25zLj0KY29udGVudCE9M0Q9M0R1bmRlZmlu
ZWQmJnRoaXMub3B0aW9ucy5jb250ZW50LmluZGV4T2YoIi8vIik9M0Q9M0Q9M0QtMSl7dGhpPQpz
Lm9wdGlvbnMuY29udGVudD0zRGdhbGF4eV9jb25maWcucm9vdCt0aGlzLm9wdGlvbnMuY29udGVu
dH10aGlzLnNldEVsZW1lbnQ9CigkKHRoaXMuX3RlbXBsYXRlKHRoaXMub3B0aW9ucykpKTtpZih0
aGlzLm9wdGlvbnMuZGlzYWJsZWQpeyQodGhpcy5lbCkuZmluZD0KKCIucm9vdCIpLmFkZENsYXNz
KCJkaXNhYmxlZCIpO3RoaXMuX2F0dGFjaFBvcG92ZXIoKX1pZighdGhpcy5vcHRpb25zLnZpc2li
PQpsZSl7dGhpcy5oaWRlKCl9fSxzaG93OmZ1bmN0aW9uKCl7JCh0aGlzLmVsKS5jc3Moe3Zpc2li
aWxpdHk6InZpc2libGUifSl9LGg9CmlkZTpmdW5jdGlvbigpeyQodGhpcy5lbCkuY3NzKHt2aXNp
YmlsaXR5OiJoaWRkZW4ifSl9LGFkZDpmdW5jdGlvbihmKXt2YXIgZz0KPTNEe3RpdGxlOiJUaXRs
ZSIsY29udGVudDoiIix0eXBlOiJ1cmwiLHRhcmdldDoiX3BhcmVudCIsc2NyYXRjaGJvb2s6ZmFs
c2UsPQpkaXZpZGVyOmZhbHNlfTtpZihmKXtnPTNEXy5kZWZhdWx0cyhmLGcpfWlmKGcuY29udGVu
dCYmZy5jb250ZW50LmluZGV4T2YoIi89Ci8iKT0zRD0zRD0zRC0xKXtnLmNvbnRlbnQ9M0RnYWxh
eHlfY29uZmlnLnJvb3QrZy5jb250ZW50fWlmKCF0aGlzLiRtZW51KXskKD0KdGhpcy5lbCkuZmlu
ZCgiLnJvb3QiKS5hcHBlbmQodGhpcy5fdGVtcGxhdGVNZW51KCkpOyQodGhpcy5lbCkuZmluZCgi
LnN5bWJvPQpsIikuYWRkQ2xhc3MoImNhcmV0Iik7dGhpcy4kbWVudT0zRCQodGhpcy5lbCkuZmlu
ZCgiLnBvcHVwIil9dmFyIGU9M0QkKHRoaXM9Ci5fdGVtcGxhdGVNZW51SXRlbShnKSk7dGhpcy4k
bWVudS5hcHBlbmQoZSk7dmFyIGQ9M0R0aGlzO2Uub24oImNsaWNrIixmdW5jdD0KaW9uKGgpe2gu
cHJldmVudERlZmF1bHQoKTtpZihkLm9wdGlvbnMudGFyZ2V0PTNEPTNEPTNEIl9ibGFuayIpe3Jl
dHVybiB0cnVlPQp9R2FsYXh5LmZyYW1lLmFkZChmKX0pO2lmKGcuZGl2aWRlcil7dGhpcy4kbWVu
dS5hcHBlbmQoJCh0aGlzLl90ZW1wbGF0ZURpdmk9CmRlcigpKSl9fSxfaGVhZDpmdW5jdGlvbihk
KXtkLnByZXZlbnREZWZhdWx0KCk7aWYodGhpcy5vcHRpb25zLmRpc2FibGVkKXtyZT0KdHVybn1p
ZighdGhpcy4kbWVudSl7R2FsYXh5LmZyYW1lLmFkZCh0aGlzLm9wdGlvbnMpfX0sX2F0dGFjaFBv
cG92ZXI6ZnVuY3RpPQpvbigpe3ZhciBkPTNEJCh0aGlzLmVsKS5maW5kKCIuaGVhZCIpO2QucG9w
b3Zlcih7aHRtbDp0cnVlLGNvbnRlbnQ6J1BsZWFzZSA9CjxhIGhyZWY9M0QiJytnYWxheHlfY29u
ZmlnLnJvb3QrJy91c2VyL2xvZ2luIj5sb2cgaW48L2E+IG9yIDxhIGhyZWY9M0QiJytnYT0KbGF4
eV9jb25maWcucm9vdCsnL3VzZXIvY3JlYXRlIj5yZWdpc3RlcjwvYT4gdG8gdXNlIHRoaXMgZmVh
dHVyZS4nLHBsYWNlbWVuPQp0OiJib3R0b20ifSkub24oInNob3duLmJzLnBvcG92ZXIiLGZ1bmN0
aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe2QucG9wb3Y9CmVyKCJoaWRlIil9LDUwMDApfSl9
LF90ZW1wbGF0ZU1lbnVJdGVtOmZ1bmN0aW9uKGQpe3JldHVybic8bGk+PGEgaHJlZj0zRCInKz0K
ZC5jb250ZW50KyciIHRhcmdldD0zRCInK2QudGFyZ2V0KyciPicrZC50aXRsZSsiPC9hPjwvbGk+
In0sX3RlbXBsYXRlTWVudTpmPQp1bmN0aW9uKCl7cmV0dXJuJzx1bCBjbGFzcz0zRCJwb3B1cCBk
cm9wZG93bi1tZW51Ij48L3VsPid9LF90ZW1wbGF0ZURpdmlkZXI9CjpmdW5jdGlvbigpe3JldHVy
bic8bGkgY2xhc3M9M0QiZGl2aWRlciI+PC9saT4nfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7dmFy
ID0KZD0zRCc8dWwgaWQ9M0QiJytlLmlkKyciIGNsYXNzPTNEIm5hdiBuYXZiYXItbmF2IiBib3Jk
ZXI9M0QiMCIgY2VsbHNwYWNpbmc9Cj0zRCIwIj48bGkgY2xhc3M9M0Qicm9vdCBkcm9wZG93biIg
c3R5bGU9M0QiIj48YSBjbGFzcz0zRCJoZWFkIGRyb3Bkb3duLXRvZz0KZ2xlIiBkYXRhLXRvZ2ds
ZT0zRCJkcm9wZG93biIgdGFyZ2V0PTNEIicrZS50YXJnZXQrJyIgaHJlZj0zRCInK2UuY29udGVu
dCsnPQoiIHRpdGxlPTNEIicrZS50aXRsZV9hdHRyaWJ1dGUrJyI+JytlLnRpdGxlKyc8YiBjbGFz
cz0zRCJzeW1ib2wiPjwvYj48L2E+PC89CmxpPjwvdWw+JztyZXR1cm4gZH19KTtyZXR1cm57R2Fs
YXh5TWFzdGhlYWQ6YSxHYWxheHlNYXN0aGVhZFRhYjpjLEdhbGF4eU1hcz0KdGhlYWRJY29uOmJ9
fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGVmaW5lKFtdLGZ1bmN0aW9uKCl7dmFy
IGE9M0RCYWNrYm9uZS5WaWV3LmV4dGVuZCh7ZWxfbWFzdGhlYWQ6IiNldmVyeXRoaW49CmciLG9w
dGlvbnM6bnVsbCwkYmFja2dyb3VuZDpudWxsLGxpc3Q6W10saW5pdGlhbGl6ZTpmdW5jdGlvbihl
KXt0aGlzLm9wdGlvbj0Kcz0zRGU7JCgiYm9keSIpLm9mZigpO3RoaXMuc2V0RWxlbWVudCgkKHRo
aXMuX3RlbXBsYXRlKGUpKSk7JCh0aGlzLmVsX21hc3RoPQplYWQpLmFwcGVuZCgkKHRoaXMuZWwp
KTt0aGlzLiRiYWNrZ3JvdW5kPTNEJCh0aGlzLmVsKS5maW5kKCIjbWFzdGhlYWQtYmFja2c9CnJv
dW5kIik7dmFyIGQ9M0R0aGlzOyQod2luZG93KS5vbigiYmVmb3JldW5sb2FkIixmdW5jdGlvbigp
e3ZhciBnPTNEIiI7Zm9yKD0Ka2V5IGluIGQubGlzdCl7aWYoZC5saXN0W2tleV0ub3B0aW9ucy5v
bnVubG9hZCl7dmFyIGY9M0RkLmxpc3Rba2V5XS5vcHRpb25zPQoub251bmxvYWQoKTtpZihmKXtn
Kz0zRGYrIiAifX19aWYoZyE9M0QiIil7cmV0dXJuIGd9fSl9LGV2ZW50czp7Y2xpY2s6Il9jbGk9
CmNrIixtb3VzZWRvd246ZnVuY3Rpb24oZCl7ZC5wcmV2ZW50RGVmYXVsdCgpfX0sYXBwZW5kOmZ1
bmN0aW9uKGQpe3JldHVybiB0aD0KaXMuX2FkZChkLHRydWUpfSxwcmVwZW5kOmZ1bmN0aW9uKGQp
e3JldHVybiB0aGlzLl9hZGQoZCxmYWxzZSl9LGhpZ2hsaWdodDpmPQp1bmN0aW9uKGUpe3ZhciBk
PTNEJCh0aGlzLmVsKS5maW5kKCIjIitlKyI+IGxpIik7aWYoZCl7ZC5hZGRDbGFzcygiYWN0aXZl
Iik9Cn19LF9hZGQ6ZnVuY3Rpb24oZyxlKXt2YXIgZD0zRCQodGhpcy5lbCkuZmluZCgiIyIrZy5s
b2NhdGlvbik7aWYoZCl7dmFyIGY9Cj0zRCQoZy5lbCk7Zi5hZGRDbGFzcygibWFzdGhlYWQtaXRl
bSIpO2lmKGUpe2QuYXBwZW5kKGYpfWVsc2V7ZC5wcmVwZW5kKGYpfT0KdGhpcy5saXN0LnB1c2go
Zyl9cmV0dXJuIG51bGx9LF9jbGljazpmdW5jdGlvbihnKXt2YXIgZj0zRCQodGhpcy5lbCkuZmlu
ZCgiPQoucG9wdXAiKTtpZihmKXtmLmhpZGUoKX12YXIgZD0zRCQoZy50YXJnZXQpLmNsb3Nlc3Qo
Ii5tYXN0aGVhZC1pdGVtIikuZmluZCg9CiIucG9wdXAiKTtpZigkKGcudGFyZ2V0KS5oYXNDbGFz
cygiaGVhZCIpKXtkLnNob3coKTt0aGlzLiRiYWNrZ3JvdW5kLnNob3coKT0KfWVsc2V7dGhpcy4k
YmFja2dyb3VuZC5oaWRlKCl9fSxfdGVtcGxhdGU6ZnVuY3Rpb24oZCl7dmFyIGU9M0RkLmJyYW5k
PygiLyAiPQorZC5icmFuZCk6IiI7cmV0dXJuJzxkaXY+PGRpdiBpZD0zRCJtYXN0aGVhZCIgY2xh
c3M9M0QibmF2YmFyIG5hdmJhci1maXhlZC09CnRvcCBuYXZiYXItaW52ZXJzZSI+PGRpdiBzdHls
ZT0zRCJwb3NpdGlvbjogcmVsYXRpdmU7IHJpZ2h0OiAtNTAlOyBmbG9hdDogbD0KZWZ0OyI+PGRp
diBpZD0zRCJuYXZiYXIiIHN0eWxlPTNEImRpc3BsYXk6IGJsb2NrOyBwb3NpdGlvbjogcmVsYXRp
dmU7IHJpZ2h0PQo6IDUwJTsiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9M0QibmF2YmFyLWJyYW5k
Ij48YSBocmVmPTNEIicrZC5sb2dvX3VybCsnIj49CjxpbWcgYm9yZGVyPTNEIjAiIHNyYz0zRCIn
K2dhbGF4eV9jb25maWcucm9vdCsnc3RhdGljL2ltYWdlcy9nYWxheHlJY29uX25vVD0KZXh0LnBu
ZyI+PHNwYW4gaWQ9M0QiYnJhbmQiPiBHYWxheHkgJytlKyc8L3NwYW4+PC9hPjwvZGl2PjxkaXYg
Y2xhc3M9M0QicXVvPQp0YS1tZXRlci1jb250YWluZXIiPjwvZGl2PjxkaXYgaWQ9M0QiaWNvbmJh
ciIgY2xhc3M9M0QiaWNvbmJhciI+PC9kaXY+PC9kaXY9Cj48ZGl2IGlkPTNEIm1hc3RoZWFkLWJh
Y2tncm91bmQiIHN0eWxlPTNEImRpc3BsYXk6IG5vbmU7IHBvc2l0aW9uOiBhYnNvbHV0ZT0KOyB0
b3A6IDMzcHg7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IHotaW5kZXg6IDEwMTAiPjwvZGl2
PjwvZGl2Pid9fSk7dmFyPQogYj0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtvcHRpb25zOntpZDoi
IixpY29uOiJmYS1jb2ciLHRvb2x0aXA6IiIsd2l0aF9udW09CmJlcjpmYWxzZSxvbmNsaWNrOmZ1
bmN0aW9uKCl7YWxlcnQoImNsaWNrZWQiKX0sb251bmxvYWQ6bnVsbCx2aXNpYmxlOnRydWV9LD0K
bG9jYXRpb246Imljb25iYXIiLGluaXRpYWxpemU6ZnVuY3Rpb24oZSl7aWYoZSl7dGhpcy5vcHRp
b25zPTNEXy5kZWZhdWx0cyhlPQosdGhpcy5vcHRpb25zKX10aGlzLnNldEVsZW1lbnQoJCh0aGlz
Ll90ZW1wbGF0ZSh0aGlzLm9wdGlvbnMpKSk7dmFyIGQ9M0R0aGk9CnM7JCh0aGlzLmVsKS5maW5k
KCIuaWNvbiIpLnRvb2x0aXAoe3RpdGxlOnRoaXMub3B0aW9ucy50b29sdGlwLHBsYWNlbWVudDoi
Yj0Kb3R0b20ifSkub24oIm1vdXNldXAiLGQub3B0aW9ucy5vbmNsaWNrKTtpZighdGhpcy5vcHRp
b25zLnZpc2libGUpe3RoaXMuaGlkPQplKCl9fSxzaG93OmZ1bmN0aW9uKCl7JCh0aGlzLmVsKS5j
c3Moe3Zpc2liaWxpdHk6InZpc2libGUifSl9LGhpZGU6ZnVuY3Rpb249CigpeyQodGhpcy5lbCku
Y3NzKHt2aXNpYmlsaXR5OiJoaWRkZW4ifSl9LGljb246ZnVuY3Rpb24oZCl7JCh0aGlzLmVsKS5m
aW5kKD0KIi5pY29uIikucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmljb24pLmFkZENsYXNzKGQp
O3RoaXMub3B0aW9ucy5pY29uPTNEZH0sPQp0b2dnbGU6ZnVuY3Rpb24oKXskKHRoaXMuZWwpLmFk
ZENsYXNzKCJ0b2dnbGUiKX0sdW50b2dnbGU6ZnVuY3Rpb24oKXskKHRoaXM9Ci5lbCkucmVtb3Zl
Q2xhc3MoInRvZ2dsZSIpfSxudW1iZXI6ZnVuY3Rpb24oZCl7JCh0aGlzLmVsKS5maW5kKCIubnVt
YmVyIikudD0KZXh0KGQpfSxfdGVtcGxhdGU6ZnVuY3Rpb24oZSl7dmFyIGQ9M0QnPGRpdiBpZD0z
RCInK2UuaWQrJyIgY2xhc3M9M0Qic3ltYm9sPQoiPjxkaXYgY2xhc3M9M0QiaWNvbiBmYSBmYS0y
eCAnK2UuaWNvbisnIj48L2Rpdj4nO2lmKGUud2l0aF9udW1iZXIpe2QrPTNEJzw9CmRpdiBjbGFz
cz0zRCJudW1iZXIiPjwvZGl2Pid9ZCs9M0QiPC9kaXY+IjtyZXR1cm4gZH19KTt2YXIgYz0zREJh
Y2tib25lLlZpZT0Kdy5leHRlbmQoe29wdGlvbnM6e2lkOiIiLHRpdGxlOiIiLHRhcmdldDoiX3Bh
cmVudCIsY29udGVudDoiIix0eXBlOiJ1cmwiLHNjPQpyYXRjaGJvb2s6ZmFsc2Usb251bmxvYWQ6
bnVsbCx2aXNpYmxlOnRydWUsZGlzYWJsZWQ6ZmFsc2UsdGl0bGVfYXR0cmlidXRlOiI9CiJ9LGxv
Y2F0aW9uOiJuYXZiYXIiLCRtZW51Om51bGwsZXZlbnRzOnsiY2xpY2sgLmhlYWQiOiJfaGVhZCJ9
LGluaXRpYWxpemU6Zj0KdW5jdGlvbihkKXtpZihkKXt0aGlzLm9wdGlvbnM9M0RfLmRlZmF1bHRz
KGQsdGhpcy5vcHRpb25zKX1pZih0aGlzLm9wdGlvbnMuPQpjb250ZW50IT0zRD0zRHVuZGVmaW5l
ZCYmdGhpcy5vcHRpb25zLmNvbnRlbnQuaW5kZXhPZigiLy8iKT0zRD0zRD0zRC0xKXt0aGk9CnMu
b3B0aW9ucy5jb250ZW50PTNEZ2FsYXh5X2NvbmZpZy5yb290K3RoaXMub3B0aW9ucy5jb250ZW50
fXRoaXMuc2V0RWxlbWVudD0KKCQodGhpcy5fdGVtcGxhdGUodGhpcy5vcHRpb25zKSkpO2lmKHRo
aXMub3B0aW9ucy5kaXNhYmxlZCl7JCh0aGlzLmVsKS5maW5kPQooIi5yb290IikuYWRkQ2xhc3Mo
ImRpc2FibGVkIik7dGhpcy5fYXR0YWNoUG9wb3ZlcigpfWlmKCF0aGlzLm9wdGlvbnMudmlzaWI9
CmxlKXt0aGlzLmhpZGUoKX19LHNob3c6ZnVuY3Rpb24oKXskKHRoaXMuZWwpLmNzcyh7dmlzaWJp
bGl0eToidmlzaWJsZSJ9KX0saD0KaWRlOmZ1bmN0aW9uKCl7JCh0aGlzLmVsKS5jc3Moe3Zpc2li
aWxpdHk6ImhpZGRlbiJ9KX0sYWRkOmZ1bmN0aW9uKGYpe3ZhciBnPQo9M0R7dGl0bGU6IlRpdGxl
Iixjb250ZW50OiIiLHR5cGU6InVybCIsdGFyZ2V0OiJfcGFyZW50IixzY3JhdGNoYm9vazpmYWxz
ZSw9CmRpdmlkZXI6ZmFsc2V9O2lmKGYpe2c9M0RfLmRlZmF1bHRzKGYsZyl9aWYoZy5jb250ZW50
JiZnLmNvbnRlbnQuaW5kZXhPZigiLz0KLyIpPTNEPTNEPTNELTEpe2cuY29udGVudD0zRGdhbGF4
eV9jb25maWcucm9vdCtnLmNvbnRlbnR9aWYoIXRoaXMuJG1lbnUpeyQoPQp0aGlzLmVsKS5maW5k
KCIucm9vdCIpLmFwcGVuZCh0aGlzLl90ZW1wbGF0ZU1lbnUoKSk7JCh0aGlzLmVsKS5maW5kKCIu
c3ltYm89CmwiKS5hZGRDbGFzcygiY2FyZXQiKTt0aGlzLiRtZW51PTNEJCh0aGlzLmVsKS5maW5k
KCIucG9wdXAiKX12YXIgZT0zRCQodGhpcz0KLl90ZW1wbGF0ZU1lbnVJdGVtKGcpKTt0aGlzLiRt
ZW51LmFwcGVuZChlKTt2YXIgZD0zRHRoaXM7ZS5vbigiY2xpY2siLGZ1bmN0PQppb24oaCl7aC5w
cmV2ZW50RGVmYXVsdCgpO2lmKGQub3B0aW9ucy50YXJnZXQ9M0Q9M0Q9M0QiX2JsYW5rIil7cmV0
dXJuIHRydWU9Cn1HYWxheHkuZnJhbWUuYWRkKGYpfSk7aWYoZy5kaXZpZGVyKXt0aGlzLiRtZW51
LmFwcGVuZCgkKHRoaXMuX3RlbXBsYXRlRGl2aT0KZGVyKCkpKX19LF9oZWFkOmZ1bmN0aW9uKGQp
e2QucHJldmVudERlZmF1bHQoKTtpZih0aGlzLm9wdGlvbnMuZGlzYWJsZWQpe3JlPQp0dXJufWlm
KCF0aGlzLiRtZW51KXtHYWxheHkuZnJhbWUuYWRkKHRoaXMub3B0aW9ucyl9fSxfYXR0YWNoUG9w
b3ZlcjpmdW5jdGk9Cm9uKCl7dmFyIGQ9M0QkKHRoaXMuZWwpLmZpbmQoIi5oZWFkIik7ZC5wb3Bv
dmVyKHtodG1sOnRydWUsY29udGVudDonUGxlYXNlID0KPGEgaHJlZj0zRCInK2dhbGF4eV9jb25m
aWcucm9vdCsndXNlci9sb2dpbj91c2VfcGFuZWxzPTNEVHJ1ZSI+bG9nIGluPC9hPiBvPQpyIDxh
IGhyZWY9M0QiJytnYWxheHlfY29uZmlnLnJvb3QrJ3VzZXIvY3JlYXRlP3VzZV9wYW5lbHM9M0RU
cnVlIj5yZWdpc3Rlcjw9Ci9hPiB0byB1c2UgdGhpcyBmZWF0dXJlLicscGxhY2VtZW50OiJib3R0
b20ifSkub24oInNob3duLmJzLnBvcG92ZXIiLGZ1bmN0aT0Kb24oKXtzZXRUaW1lb3V0KGZ1bmN0
aW9uKCl7ZC5wb3BvdmVyKCJoaWRlIil9LDUwMDApfSl9LF90ZW1wbGF0ZU1lbnVJdGVtOmZ1PQpu
Y3Rpb24oZCl7cmV0dXJuJzxsaT48YSBocmVmPTNEIicrZC5jb250ZW50KyciIHRhcmdldD0zRCIn
K2QudGFyZ2V0KyciPicrZC49CnRpdGxlKyI8L2E+PC9saT4ifSxfdGVtcGxhdGVNZW51OmZ1bmN0
aW9uKCl7cmV0dXJuJzx1bCBjbGFzcz0zRCJwb3B1cCBkcm9wZD0Kb3duLW1lbnUiPjwvdWw+J30s
X3RlbXBsYXRlRGl2aWRlcjpmdW5jdGlvbigpe3JldHVybic8bGkgY2xhc3M9M0QiZGl2aWRlciI+
PQo8L2xpPid9LF90ZW1wbGF0ZTpmdW5jdGlvbihlKXt2YXIgZD0zRCc8dWwgaWQ9M0QiJytlLmlk
KyciIGNsYXNzPTNEIm5hdiBuYXY9CmJhci1uYXYiIGJvcmRlcj0zRCIwIiBjZWxsc3BhY2luZz0z
RCIwIj48bGkgY2xhc3M9M0Qicm9vdCBkcm9wZG93biIgc3R5bGU9Cj0zRCIiPjxhIGNsYXNzPTNE
ImhlYWQgZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0zRCJkcm9wZG93biIgdGFyZ2V0PTNE
Ij0KJytlLnRhcmdldCsnIiBocmVmPTNEIicrZS5jb250ZW50KyciIHRpdGxlPTNEIicrZS50aXRs
ZV9hdHRyaWJ1dGUrJyI+JytlLnRpPQp0bGUrJzxiIGNsYXNzPTNEInN5bWJvbCI+PC9iPjwvYT48
L2xpPjwvdWw+JztyZXR1cm4gZH19KTtyZXR1cm57R2FsYXh5TWFzdGg9CmVhZDphLEdhbGF4eU1h
c3RoZWFkVGFiOmMsR2FsYXh5TWFzdGhlYWRJY29uOmJ9fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQoKZGlmZiAtciA4YTcwNDU3OTJjN2ZlNDhhOTkyOTU3NzA0ZTUxZTMxM2QzMmU2Y2Rk
IC1yIDBmNzM3NDg1Y2I3ZjVkNzU1OTVlOThhPQpiOGY4ZGMwMmJhMzY5OTc2ZiBzdGF0aWMvc2Ny
aXB0cy9wYWNrZWQvbXZjL3Rvb2xzL3Rvb2xzLWZvcm0tYmFzZS5qcwotLS0gYS9zdGF0aWMvc2Ny
aXB0cy9wYWNrZWQvbXZjL3Rvb2xzL3Rvb2xzLWZvcm0tYmFzZS5qcworKysgYi9zdGF0aWMvc2Ny
aXB0cy9wYWNrZWQvbXZjL3Rvb2xzL3Rvb2xzLWZvcm0tYmFzZS5qcwpAQCAtMSwxICsxLDEgQEAK
LWRlZmluZShbInV0aWxzL3V0aWxzIiwidXRpbHMvZGVmZXJyZWQiLCJtdmMvdWkvdWktcG9ydGxl
dCIsIm12Yy91aS91aS1taXNjPQoiLCJtdmMvY2l0YXRpb24vY2l0YXRpb24tbW9kZWwiLCJtdmMv
Y2l0YXRpb24vY2l0YXRpb24tdmlldyIsIm12Yy90b29scyIsIm09CnZjL3Rvb2xzL3Rvb2xzLXRl
bXBsYXRlIiwibXZjL3Rvb2xzL3Rvb2xzLWNvbnRlbnQiLCJtdmMvdG9vbHMvdG9vbHMtc2VjdGlv
bj0KIiwibXZjL3Rvb2xzL3Rvb2xzLXRyZWUiXSxmdW5jdGlvbihnLGgsZixrLGksYSxkLGMsZSxq
LGIpe3JldHVybiBCYWNrYm9uZS5WPQppZXcuZXh0ZW5kKHtpbml0aWFsaXplOmZ1bmN0aW9uKGwp
e2NvbnNvbGUuZGVidWcobCk7dmFyIG09M0RwYXJlbnQuR2FsYXh5O2k9CmYobSYmbS5tb2RhbCl7
dGhpcy5tb2RhbD0zRG0ubW9kYWx9ZWxzZXt0aGlzLm1vZGFsPTNEbmV3IGsuTW9kYWwuVmlldygp
fWlmKD0KbSYmbS5jdXJyVXNlcil7dGhpcy5pc19hZG1pbj0zRG0uY3VyclVzZXIuZ2V0KCJpc19h
ZG1pbiIpfWVsc2V7dGhpcy5pc19hZG1pPQpuPTNEZmFsc2V9dGhpcy5vcHRpb25zPTNEbDt0aGlz
LmNvbnRhaW5lcj0zRHRoaXMub3B0aW9ucy5jb250YWluZXJ8fCJib2R5Ijs9CnRoaXMuZGVmZXJy
ZWQ9M0RuZXcgaCgpO3RoaXMuc2V0RWxlbWVudCgiPGRpdi8+Iik7JCh0aGlzLmNvbnRhaW5lciku
YXBwZW5kKD0KdGhpcy4kZWwpO3RoaXMuX2J1aWxkRm9ybSgpfSxyZWNpZXB0OmZ1bmN0aW9uKGwp
eyQodGhpcy5jb250YWluZXIpLmVtcHR5KCk7PQokKHRoaXMuY29udGFpbmVyKS5hcHBlbmQobCl9
LGhpZ2hsaWdodDpmdW5jdGlvbihtLG4sbCl7dmFyIG89M0R0aGlzLmVsZW1lbnQ9Cl9saXN0W21d
O2lmKG8pe28uZXJyb3Iobnx8IlBsZWFzZSB2ZXJpZnkgdGhpcyBwYXJhbWV0ZXIuIik7aWYoIWwp
eyQodGhpcy5jbz0KbnRhaW5lcikuYW5pbWF0ZSh7c2Nyb2xsVG9wOm8uJGVsLm9mZnNldCgpLnRv
cC0yMH0sNTAwKX19fSxfYnVpbGRGb3JtOmZ1bmN0PQppb24oKXt2YXIgbD0zRHRoaXM7dGhpcy5v
ZmYoInJlZnJlc2giKTt0aGlzLm9mZigicmVzZXQiKTt0aGlzLmZpZWxkX2xpc3Q9M0Q9Cnt9O3Ro
aXMuaW5wdXRfbGlzdD0zRHt9O3RoaXMuZWxlbWVudF9saXN0PTNEe307dGhpcy50cmVlPTNEbmV3
IGIodGhpcyk7dGhpcz0KLmNvbnRlbnQ9M0RuZXcgZSh0aGlzKTt2YXIgbj0zRHRoaXMub3B0aW9u
czt0aGlzLl9yZW5kZXJGb3JtKG4pO3RoaXMudHJlZS5mPQppbmFsaXplKCk7aWYobi5lcnJvcnMp
e3ZhciBvPTNEdGhpcy50cmVlLm1hdGNoUmVzcG9uc2Uobi5lcnJvcnMpO2Zvcih2YXIgbSA9Cmlu
IG8pe3RoaXMuaGlnaGxpZ2h0KG0sb1ttXSx0cnVlKX19dGhpcy5vbigicmVmcmVzaCIsZnVuY3Rp
b24oKXtsLmRlZmVycmVkLj0KcmVzZXQoKTtsLmRlZmVycmVkLmV4ZWN1dGUoZnVuY3Rpb24oKXts
Ll91cGRhdGVNb2RlbCgpfSl9KTt0aGlzLm9uKCJyZXNldCIsPQpmdW5jdGlvbigpe2Zvcih2YXIg
cCBpbiB0aGlzLmVsZW1lbnRfbGlzdCl7dGhpcy5lbGVtZW50X2xpc3RbcF0ucmVzZXQoKX19KTs9
CnRoaXMudHJpZ2dlcigicmVmcmVzaCIpfSxfcmVuZGVyRm9ybTpmdW5jdGlvbih1KXt2YXIgdD0z
RHRoaXM7dGhpcy5tZXNzYWdlPQo9M0RuZXcgay5NZXNzYWdlKCk7dmFyIHE9M0RuZXcgay5CdXR0
b25JY29uKHtpY29uOiJmYS1pbmZvLWNpcmNsZSIsdGl0bGU6KCE9CnRoaXMud29ya2Zsb3cmJiJS
ZXF1aXJlbWVudHMiKXx8bnVsbCx0b29sdGlwOiJEaXNwbGF5IHRvb2wgcmVxdWlyZW1lbnRzIixv
bj0KY2xpY2s6ZnVuY3Rpb24oKXtpZighdGhpcy52aXNpYmxlKXt0aGlzLnZpc2libGU9M0R0cnVl
O3QubWVzc2FnZS51cGRhdGUoe3BlPQpyc2lzdGVudDp0cnVlLG1lc3NhZ2U6Yy5yZXF1aXJlbWVu
dHModSksc3RhdHVzOiJpbmZvIn0pfWVsc2V7dGhpcy52aXNpYmxlPQo9M0RmYWxzZTt0Lm1lc3Nh
Z2UudXBkYXRlKHttZXNzYWdlOiIifSl9fX0pO2lmKCF1LnJlcXVpcmVtZW50c3x8dS5yZXF1aXJl
bWU9Cm50cy5sZW5ndGg9M0Q9M0QwKXtxLiRlbC5oaWRlKCl9dmFyIG09M0RuZXcgay5CdXR0b25N
ZW51KHtpY29uOiJmYS1jdWJlcyIsdD0KaXRsZTooIXRoaXMud29ya2Zsb3cmJiJWZXJzaW9ucyIp
fHxudWxsLHRvb2x0aXA6IlNlbGVjdCBhbm90aGVyIHRvb2wgdmVyc2lvPQpuIn0pO2lmKHUudmVy
c2lvbnMmJnUudmVyc2lvbnMubGVuZ3RoPjEpe2Zvcih2YXIgbyBpbiB1LnZlcnNpb25zKXt2YXIg
cj0zRHU9Ci52ZXJzaW9uc1tvXTtpZihyIT0zRHUudmVyc2lvbil7bS5hZGRNZW51KHt0aXRsZToi
U3dpdGNoIHRvICIrcix2ZXJzaW9uOnIsaT0KY29uOiJmYS1jdWJlIixvbmNsaWNrOmZ1bmN0aW9u
KCl7dS5pZD0zRHUuaWQucmVwbGFjZSh1LnZlcnNpb24sdGhpcy52ZXJzaW9uPQopO3UudmVyc2lv
bj0zRHRoaXMudmVyc2lvbjt0LmRlZmVycmVkLnJlc2V0KCk7dC5kZWZlcnJlZC5leGVjdXRlKGZ1
bmN0aW9uKCk9Cnt0Ll9idWlsZE1vZGVsKCl9KX19KX19fWVsc2V7bS4kZWwuaGlkZSgpfXZhciBw
PTNEbmV3IGsuQnV0dG9uTWVudSh7aWNvbjoiZj0KYS1jYXJldC1kb3duIix0aXRsZTooIXRoaXMu
d29ya2Zsb3cmJiJPcHRpb25zIil8fG51bGwsdG9vbHRpcDoiVmlldyBhdmFpbGFiPQpsZSBvcHRp
b25zIn0pO2lmKHUuYmlvc3Rhcl91cmwpe3AuYWRkTWVudSh7aWNvbjoiZmEtcXVlc3Rpb24tY2ly
Y2xlIix0aXRsZTo9CiJRdWVzdGlvbj8iLHRvb2x0aXA6IkFzayBhIHF1ZXN0aW9uIGFib3V0IHRo
aXMgdG9vbCAoQmlvc3RhcikiLG9uY2xpY2s6ZnVuYz0KdGlvbigpe3dpbmRvdy5vcGVuKHUuYmlv
c3Rhcl91cmwrIi9wL25ldy9wb3N0LyIpfX0pO3AuYWRkTWVudSh7aWNvbjoiZmEtc2VhPQpyY2gi
LHRpdGxlOiJTZWFyY2giLHRvb2x0aXA6IlNlYXJjaCBoZWxwIGZvciB0aGlzIHRvb2wgKEJpb3N0
YXIpIixvbmNsaWNrOmY9CnVuY3Rpb24oKXt3aW5kb3cub3Blbih1LmJpb3N0YXJfdXJsKyIvdC8i
K3UuaWQrIi8iKX19KX1wLmFkZE1lbnUoe2ljb246ImZhLT0Kc2hhcmUiLHRpdGxlOiJTaGFyZSIs
dG9vbHRpcDoiU2hhcmUgdGhpcyB0b29sIixvbmNsaWNrOmZ1bmN0aW9uKCl7cHJvbXB0KCJDPQpv
cHkgdG8gY2xpcGJvYXJkOiBDdHJsK0MsIEVudGVyIix3aW5kb3cubG9jYXRpb24ub3JpZ2luK2dh
bGF4eV9jb25maWcucm9vdCs9CiJyb290P3Rvb2xfaWQ9M0QiK3UuaWQpfX0pO2lmKHRoaXMuaXNf
YWRtaW4pe3AuYWRkTWVudSh7aWNvbjoiZmEtZG93bmxvYWQiLD0KdGl0bGU6IkRvd25sb2FkIix0
b29sdGlwOiJEb3dubG9hZCB0aGlzIHRvb2wiLG9uY2xpY2s6ZnVuY3Rpb24oKXt3aW5kb3cubG9j
PQphdGlvbi5ocmVmPTNEZ2FsYXh5X2NvbmZpZy5yb290KyJhcGkvdG9vbHMvIit1LmlkKyIvZG93
bmxvYWQifX0pfXRoaXMuc2VjdGk9Cm9uPTNEbmV3IGouVmlldyh0LHtpbnB1dHM6dS5pbnB1dHMs
Y2xzOiJ1aS10YWJsZS1wbGFpbiJ9KTtpZih0aGlzLmluY29tcGF0aT0KYmxlKXt0aGlzLiRlbC5o
aWRlKCk7JCgiI3Rvb2wtZm9ybS1jbGFzc2ljIikuc2hvdygpO3JldHVybn10aGlzLnBvcnRsZXQ9
M0RuPQpldyBmLlZpZXcoe2ljb246ImZhLXdyZW5jaCIsdGl0bGU6IjxiPiIrdS5uYW1lKyI8L2I+
ICIrdS5kZXNjcmlwdGlvbisiIChHYWw9CmF4eSBUb29sIFZlcnNpb24gIit1LnZlcnNpb24rIiki
LGNsczoidWktcG9ydGxldC1zbGltIixvcGVyYXRpb25zOntyZXF1aXJlbT0KZW50czpxLG1lbnU6
cCx2ZXJzaW9uczptfSxidXR0b25zOnRoaXMuYnV0dG9uc30pO2lmKHRoaXMub3B0aW9ucy53b3Jr
Zmxvdyl7PQp0aGlzLnBvcnRsZXQuJGNvbnRlbnQuY3NzKCJwYWRkaW5nIiwiMHB4Iil9dGhpcy5w
b3J0bGV0LmFwcGVuZCh0aGlzLm1lc3NhZ2U9Ci4kZWwsdHJ1ZSk7dGhpcy5wb3J0bGV0LmFwcGVu
ZCh0aGlzLnNlY3Rpb24uJGVsKTt0aGlzLiRlbC5lbXB0eSgpO3RoaXMuJGVsLj0KYXBwZW5kKHRo
aXMucG9ydGxldC4kZWwpO2lmKHUuaGVscCE9M0QiIil7dGhpcy4kZWwuYXBwZW5kKGMuaGVscCh1
LmhlbHApKX1pPQpmKHUuY2l0YXRpb25zKXt2YXIgcz0zRCQoIjxkaXYvPiIpO3ZhciBsPTNEbmV3
IGkuVG9vbENpdGF0aW9uQ29sbGVjdGlvbigpO2w9Ci50b29sX2lkPTNEdS5pZDt2YXIgbj0zRG5l
dyBhLkNpdGF0aW9uTGlzdFZpZXcoe2VsOnMsY29sbGVjdGlvbjpsfSk7bi5yZW5kZT0KcigpO2wu
ZmV0Y2goKTt0aGlzLiRlbC5hcHBlbmQocyl9aWYodS5tZXNzYWdlKXt0aGlzLm1lc3NhZ2UudXBk
YXRlKHtwZXJzaXN0PQplbnQ6dHJ1ZSxzdGF0dXM6Indhcm5pbmciLG1lc3NhZ2U6dS5tZXNzYWdl
fSl9fX0pfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGVmaW5lKFsidXRpbHMvdXRp
bHMiLCJ1dGlscy9kZWZlcnJlZCIsIm12Yy91aS91aS1wb3J0bGV0IiwibXZjL3VpL3VpLW1pc2M9
CiIsIm12Yy9jaXRhdGlvbi9jaXRhdGlvbi1tb2RlbCIsIm12Yy9jaXRhdGlvbi9jaXRhdGlvbi12
aWV3IiwibXZjL3Rvb2xzIiwibT0KdmMvdG9vbHMvdG9vbHMtdGVtcGxhdGUiLCJtdmMvdG9vbHMv
dG9vbHMtY29udGVudCIsIm12Yy90b29scy90b29scy1zZWN0aW9uPQoiLCJtdmMvdG9vbHMvdG9v
bHMtdHJlZSJdLGZ1bmN0aW9uKGcsaCxmLGssaSxhLGQsYyxlLGosYil7cmV0dXJuIEJhY2tib25l
LlY9Cmlldy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24obCl7dGhpcy5vcHRpb25zRGVmYXVs
dD0zRHtpc19keW5hbWljOnRydWUsYz0Kb21wYWN0OmZhbHNlLGluaXRpYWxfZXJyb3JzOmZhbHNl
LHNlbmRfYWxsOmZhbHNlfTt0aGlzLm9wdGlvbnM9M0RnLm1lcmdlKGwsPQp0aGlzLm9wdGlvbnNE
ZWZhdWx0KTtjb25zb2xlLmRlYnVnKHRoaXMub3B0aW9ucyk7dmFyIG09M0RwYXJlbnQuR2FsYXh5
O2lmKG09CiYmbS5tb2RhbCl7dGhpcy5tb2RhbD0zRG0ubW9kYWx9ZWxzZXt0aGlzLm1vZGFsPTNE
bmV3IGsuTW9kYWwuVmlldygpfWlmKG0mJj0KbS5jdXJyVXNlcil7dGhpcy5pc19hZG1pbj0zRG0u
Y3VyclVzZXIuZ2V0KCJpc19hZG1pbiIpfWVsc2V7dGhpcy5pc19hZG1pbj0KPTNEZmFsc2V9dGhp
cy5jb250YWluZXI9M0R0aGlzLm9wdGlvbnMuY29udGFpbmVyfHwiYm9keSI7dGhpcy5kZWZlcnJl
ZD0zRG5lPQp3IGgoKTt0aGlzLnNldEVsZW1lbnQoIjxkaXYvPiIpOyQodGhpcy5jb250YWluZXIp
LmFwcGVuZCh0aGlzLiRlbCk7dGhpcy5fYnU9CmlsZEZvcm0oKX0scmVjaWVwdDpmdW5jdGlvbihs
KXskKHRoaXMuY29udGFpbmVyKS5lbXB0eSgpOyQodGhpcy5jb250YWluZXIpLj0KYXBwZW5kKGwp
fSxoaWdobGlnaHQ6ZnVuY3Rpb24obSxuLGwpe3ZhciBvPTNEdGhpcy5lbGVtZW50X2xpc3RbbV07
aWYobyl7by5lPQpycm9yKG58fCJQbGVhc2UgdmVyaWZ5IHRoaXMgcGFyYW1ldGVyLiIpO2lmKCFs
KXskKHRoaXMuY29udGFpbmVyKS5hbmltYXRlKHs9CnNjcm9sbFRvcDpvLiRlbC5vZmZzZXQoKS50
b3AtMjB9LDUwMCl9fX0sX2Vycm9yczpmdW5jdGlvbihuKXt0aGlzLnRyaWdnZXIoIj0KcmVzZXQi
KTtpZihuJiZuLmVycm9ycyl7dmFyIG89M0R0aGlzLnRyZWUubWF0Y2hSZXNwb25zZShuLmVycm9y
cyk7Zm9yKHZhciBtPQogaW4gdGhpcy5lbGVtZW50X2xpc3Qpe3ZhciBsPTNEdGhpcy5lbGVtZW50
X2xpc3RbbV07aWYob1ttXSl7dGhpcy5oaWdobGlnaHQ9CihtLG9bbV0sdHJ1ZSl9fX19LF9idWls
ZEZvcm06ZnVuY3Rpb24oKXt2YXIgbD0zRHRoaXM7dGhpcy5vZmYoInJlZnJlc2giKTt0aD0KaXMu
b2ZmKCJyZXNldCIpO3RoaXMuZmllbGRfbGlzdD0zRHt9O3RoaXMuaW5wdXRfbGlzdD0zRHt9O3Ro
aXMuZWxlbWVudF9saXN0PQo9M0R7fTt0aGlzLnRyZWU9M0RuZXcgYih0aGlzKTt0aGlzLmNvbnRl
bnQ9M0RuZXcgZSh0aGlzKTt2YXIgbT0zRHRoaXMub3B0aW89Cm5zO3RoaXMuX3JlbmRlckZvcm0o
bSk7dGhpcy50cmVlLmZpbmFsaXplKCk7aWYobS5pbml0aWFsX2Vycm9ycyl7dGhpcy5fZXJybz0K
cnMobSl9dGhpcy5vbigicmVmcmVzaCIsZnVuY3Rpb24oKXtsLmRlZmVycmVkLnJlc2V0KCk7bC5k
ZWZlcnJlZC5leGVjdXRlKGZ1PQpuY3Rpb24oKXtsLl91cGRhdGVNb2RlbCgpfSl9KTt0aGlzLm9u
KCJyZXNldCIsZnVuY3Rpb24oKXtmb3IodmFyIG4gaW4gdGhpcy49CmVsZW1lbnRfbGlzdCl7dGhp
cy5lbGVtZW50X2xpc3Rbbl0ucmVzZXQoKX19KTt0aGlzLnRyaWdnZXIoInJlZnJlc2giKX0sX3Jl
bj0KZGVyRm9ybTpmdW5jdGlvbih1KXt2YXIgdD0zRHRoaXM7dGhpcy5tZXNzYWdlPTNEbmV3IGsu
TWVzc2FnZSgpO3ZhciBxPTNEbmV3PQogay5CdXR0b25JY29uKHtpY29uOiJmYS1pbmZvLWNpcmNs
ZSIsdGl0bGU6KCF1LmNvbXBhY3QmJiJSZXF1aXJlbWVudHMiKXx8bnU9CmxsLHRvb2x0aXA6IkRp
c3BsYXkgdG9vbCByZXF1aXJlbWVudHMiLG9uY2xpY2s6ZnVuY3Rpb24oKXtpZighdGhpcy52aXNp
YmxlKT0Ke3RoaXMudmlzaWJsZT0zRHRydWU7dC5tZXNzYWdlLnVwZGF0ZSh7cGVyc2lzdGVudDp0
cnVlLG1lc3NhZ2U6Yy5yZXF1aXJlbWVuPQp0cyh1KSxzdGF0dXM6ImluZm8ifSl9ZWxzZXt0aGlz
LnZpc2libGU9M0RmYWxzZTt0Lm1lc3NhZ2UudXBkYXRlKHttZXNzYWdlOiI9CiJ9KX19fSk7aWYo
IXUucmVxdWlyZW1lbnRzfHx1LnJlcXVpcmVtZW50cy5sZW5ndGg9M0Q9M0QwKXtxLiRlbC5oaWRl
KCl9dmFyID0KbT0zRG5ldyBrLkJ1dHRvbk1lbnUoe2ljb246ImZhLWN1YmVzIix0aXRsZTooIXUu
Y29tcGFjdCYmIlZlcnNpb25zIil8fG51bGwsPQp0b29sdGlwOiJTZWxlY3QgYW5vdGhlciB0b29s
IHZlcnNpb24ifSk7aWYodS52ZXJzaW9ucyYmdS52ZXJzaW9ucy5sZW5ndGg+MSk9Cntmb3IodmFy
IG8gaW4gdS52ZXJzaW9ucyl7dmFyIHI9M0R1LnZlcnNpb25zW29dO2lmKHIhPTNEdS52ZXJzaW9u
KXttLmFkZE1lbj0KdSh7dGl0bGU6IlN3aXRjaCB0byAiK3IsdmVyc2lvbjpyLGljb246ImZhLWN1
YmUiLG9uY2xpY2s6ZnVuY3Rpb24oKXt1LmlkPTNEPQp1LmlkLnJlcGxhY2UodS52ZXJzaW9uLHRo
aXMudmVyc2lvbik7dS52ZXJzaW9uPTNEdGhpcy52ZXJzaW9uO3QuZGVmZXJyZWQucmU9CnNldCgp
O3QuZGVmZXJyZWQuZXhlY3V0ZShmdW5jdGlvbigpe3QuX2J1aWxkTW9kZWwoKX0pfX0pfX19ZWxz
ZXttLiRlbC5oaWRlKD0KKX12YXIgcD0zRG5ldyBrLkJ1dHRvbk1lbnUoe2ljb246ImZhLWNhcmV0
LWRvd24iLHRpdGxlOighdS5jb21wYWN0JiYiT3B0aW9uPQpzIil8fG51bGwsdG9vbHRpcDoiVmll
dyBhdmFpbGFibGUgb3B0aW9ucyJ9KTtpZih1LmJpb3N0YXJfdXJsKXtwLmFkZE1lbnUoe2k9CmNv
bjoiZmEtcXVlc3Rpb24tY2lyY2xlIix0aXRsZToiUXVlc3Rpb24/Iix0b29sdGlwOiJBc2sgYSBx
dWVzdGlvbiBhYm91dCB0aD0KaXMgdG9vbCAoQmlvc3RhcikiLG9uY2xpY2s6ZnVuY3Rpb24oKXt3
aW5kb3cub3Blbih1LmJpb3N0YXJfdXJsKyIvcC9uZXcvcG9zPQp0LyIpfX0pO3AuYWRkTWVudSh7
aWNvbjoiZmEtc2VhcmNoIix0aXRsZToiU2VhcmNoIix0b29sdGlwOiJTZWFyY2ggaGVscCBmb3I9
CiB0aGlzIHRvb2wgKEJpb3N0YXIpIixvbmNsaWNrOmZ1bmN0aW9uKCl7d2luZG93Lm9wZW4odS5i
aW9zdGFyX3VybCsiL3QvIit1Lj0KaWQrIi8iKX19KX1wLmFkZE1lbnUoe2ljb246ImZhLXNoYXJl
Iix0aXRsZToiU2hhcmUiLHRvb2x0aXA6IlNoYXJlIHRoaXMgdG9vPQpsIixvbmNsaWNrOmZ1bmN0
aW9uKCl7cHJvbXB0KCJDb3B5IHRvIGNsaXBib2FyZDogQ3RybCtDLCBFbnRlciIsd2luZG93Lmxv
Y2E9CnRpb24ub3JpZ2luK2dhbGF4eV9jb25maWcucm9vdCsicm9vdD90b29sX2lkPTNEIit1Lmlk
KX19KTtpZih0aGlzLmlzX2FkbWluKT0Ke3AuYWRkTWVudSh7aWNvbjoiZmEtZG93bmxvYWQiLHRp
dGxlOiJEb3dubG9hZCIsdG9vbHRpcDoiRG93bmxvYWQgdGhpcyB0b29sPQoiLG9uY2xpY2s6ZnVu
Y3Rpb24oKXt3aW5kb3cubG9jYXRpb24uaHJlZj0zRGdhbGF4eV9jb25maWcucm9vdCsiYXBpL3Rv
b2xzLyI9Cit1LmlkKyIvZG93bmxvYWQifX0pfXRoaXMuc2VjdGlvbj0zRG5ldyBqLlZpZXcodCx7
aW5wdXRzOnUuaW5wdXRzLGNsczoidWktdD0KYWJsZS1wbGFpbiJ9KTtpZih0aGlzLmluY29tcGF0
aWJsZSl7dGhpcy4kZWwuaGlkZSgpOyQoIiN0b29sLWZvcm0tY2xhc3NpYyIpPQouc2hvdygpO3Jl
dHVybn10aGlzLnBvcnRsZXQ9M0RuZXcgZi5WaWV3KHtpY29uOiJmYS13cmVuY2giLHRpdGxlOiI8
Yj4iK3UubmE9Cm1lKyI8L2I+ICIrdS5kZXNjcmlwdGlvbisiIChHYWxheHkgVG9vbCBWZXJzaW9u
ICIrdS52ZXJzaW9uKyIpIixjbHM6InVpLXBvcj0KdGxldC1zbGltIixvcGVyYXRpb25zOntyZXF1
aXJlbWVudHM6cSxtZW51OnAsdmVyc2lvbnM6bX0sYnV0dG9uczp0aGlzLmJ1dHRvPQpuc30pO2lm
KHUuY29tcGFjdCl7dGhpcy5wb3J0bGV0LiRjb250ZW50LmNzcygicGFkZGluZyIsIjBweCIpfXRo
aXMucG9ydGxldC49CmFwcGVuZCh0aGlzLm1lc3NhZ2UuJGVsLHRydWUpO3RoaXMucG9ydGxldC5h
cHBlbmQodGhpcy5zZWN0aW9uLiRlbCk7dGhpcy4kZT0KbC5lbXB0eSgpO3RoaXMuJGVsLmFwcGVu
ZCh0aGlzLnBvcnRsZXQuJGVsKTtpZih1LmhlbHAhPTNEIiIpe3RoaXMuJGVsLmFwcGVuPQpkKGMu
aGVscCh1LmhlbHApKX1pZih1LmNpdGF0aW9ucyl7dmFyIHM9M0QkKCI8ZGl2Lz4iKTt2YXIgbD0z
RG5ldyBpLlRvb2xDaXQ9CmF0aW9uQ29sbGVjdGlvbigpO2wudG9vbF9pZD0zRHUuaWQ7dmFyIG49
M0RuZXcgYS5DaXRhdGlvbkxpc3RWaWV3KHtlbDpzLGNvbD0KbGVjdGlvbjpsfSk7bi5yZW5kZXIo
KTtsLmZldGNoKCk7dGhpcy4kZWwuYXBwZW5kKHMpfWlmKHUubWVzc2FnZSl7dGhpcy5tZXNzPQph
Z2UudXBkYXRlKHtwZXJzaXN0ZW50OnRydWUsc3RhdHVzOiJ3YXJuaW5nIixtZXNzYWdlOnUubWVz
c2FnZX0pfX19KX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKCmRpZmYgLXIgOGE3MDQ1
NzkyYzdmZTQ4YTk5Mjk1NzcwNGU1MWUzMTNkMzJlNmNkZCAtciAwZjczNzQ4NWNiN2Y1ZDc1NTk1
ZTk4YT0KYjhmOGRjMDJiYTM2OTk3NmYgc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy90b29scy90
b29scy1mb3JtLXdvcmtmbG93LmpzCi0tLSBhL3N0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvdG9v
bHMvdG9vbHMtZm9ybS13b3JrZmxvdy5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZj
L3Rvb2xzL3Rvb2xzLWZvcm0td29ya2Zsb3cuanMKQEAgLTEsMSArMSwxIEBACi1kZWZpbmUoWyJ1
dGlscy91dGlscyIsIm12Yy90b29scy90b29scy1mb3JtLWJhc2UiXSxmdW5jdGlvbihiLGEpe3Zh
ciBjPTNEYT0KLmV4dGVuZCh7aW5pdGlhbGl6ZTpmdW5jdGlvbihlKXt0aGlzLm5vZGU9M0R3b3Jr
Zmxvdy5hY3RpdmVfbm9kZTtpZighdGhpcy5uPQpvZGUpe2NvbnNvbGUuZGVidWcoIkZBSUxFRCAt
IHRvb2xzLWZvcm0td29ya2Zsb3c6aW5pdGlhbGl6ZSgpIC0gTm9kZSBub3QgZm89CnVuZCBpbiB3
b3JrZmxvdy4iKTtyZXR1cm59dGhpcy53b3JrZmxvdz0zRHRydWU7dGhpcy5vcHRpb25zPTNEZTti
LmRlZXBlYWNoKD0KZS5pbnB1dHMsZnVuY3Rpb24oZil7aWYoZi50eXBlKXtmLm9wdGlvbmFsPTNE
KFsiZGF0YSIsImRhdGFfaGlkZGVuIiwiaGlkZGVuPQoiLCJkcmlsbF9kb3duIl0pLmluZGV4T2Yo
Zi50eXBlKT0zRD0zRC0xfX0pO2IuZGVlcGVhY2goZS5pbnB1dHMsZnVuY3Rpb24oZik9CntpZihm
LnR5cGUpe2lmKGYudHlwZT0zRD0zRCJjb25kaXRpb25hbCIpe2YudGVzdF9wYXJhbS5vcHRpb25h
bD0zRGZhbHNlfX19KT0KO3ZhciBkPTNEdGhpcztiLmdldCh7dXJsOmdhbGF4eV9jb25maWcucm9v
dCsiYXBpL2RhdGF0eXBlcyIsY2FjaGU6dHJ1ZSxzdWNjPQplc3M6ZnVuY3Rpb24oZil7ZC5kYXRh
dHlwZXM9M0RmO2QuX21ha2VTZWN0aW9ucyhlLmlucHV0cyk7YS5wcm90b3R5cGUuaW5pdGk9CmFs
aXplLmNhbGwoZCxlKX19KX0sX21ha2VTZWN0aW9uczpmdW5jdGlvbihkKXtkW2IudXVpZCgpXT0z
RHtsYWJlbDoiRWRpdCBTdD0KZXAgQXR0cmlidXRlcyIsdHlwZToic2VjdGlvbiIsZXhwYW5kOnRo
aXMubm9kZS5hbm5vdGF0aW9uLGlucHV0czpbe2xhYmVsOiJBPQpubm90YXRpb24gLyBOb3RlcyIs
bmFtZToiYW5ub3RhdGlvbiIsdHlwZToidGV4dCIsYXJlYTp0cnVlLGhlbHA6IkFkZCBhbiBhbm49
Cm90YXRpb24gb3Igbm90ZXMgdG8gdGhpcyBzdGVwOyBhbm5vdGF0aW9ucyBhcmUgYXZhaWxhYmxl
IHdoZW4gYSB3b3JrZmxvdyBpcz0KIHZpZXdlZC4iLHZhbHVlOnRoaXMubm9kZS5hbm5vdGF0aW9u
fV19O3RoaXMucG9zdF9qb2JfYWN0aW9ucz0zRHRoaXMubm9kZS5wPQpvc3Rfam9iX2FjdGlvbnM7
Zm9yKHZhciBlIGluIHRoaXMubm9kZS5vdXRwdXRfdGVybWluYWxzKXtkW2IudXVpZCgpXT0zRHRo
aXM9Ci5fbWFrZVNlY3Rpb24oZSl9fSxfbWFrZVNlY3Rpb246ZnVuY3Rpb24oaCl7dmFyIGc9M0Rb
XTtmb3Ioa2V5IGluIHRoaXMuZGF0YT0KdHlwZXMpe2cucHVzaCh7MDp0aGlzLmRhdGF0eXBlc1tr
ZXldLDE6dGhpcy5kYXRhdHlwZXNba2V5XX0pfWcuc29ydChmdW5jdGlvPQpuKGosaSl7cmV0dXJu
IGoubGFiZWw+aS5sYWJlbD8xOmoubGFiZWw8aS5sYWJlbD8tMTowfSk7Zy51bnNoaWZ0KHswOiJT
ZXF1ZW49CmNlcyIsMToiU2VxdWVuY2VzIn0pO2cudW5zaGlmdCh7MDoiUm9hZG1hcHMiLDE6IlJv
YWRtYXBzIn0pO2cudW5zaGlmdCh7MDoiTD0KZWF2ZSB1bmNoYW5nZWQiLDE6Ik5vbmUifSk7dmFy
IGY9M0R7bGFiZWw6IkVkaXQgU3RlcCBBY3Rpb246ICciK2grIiciLHR5cGU6PQoic2VjdGlvbiIs
aW5wdXRzOlt7YWN0aW9uOiJSZW5hbWVEYXRhc2V0QWN0aW9uIixhcmd1bWVudDoibmV3bmFtZSIs
bGFiZWw6IlI9CmVuYW1lIGRhdGFzZXQiLHR5cGU6InRleHQiLHZhbHVlOiIiLGlnbm9yZToiIixo
ZWxwOidUaGlzIGFjdGlvbiB3aWxsIHJlbmFtZT0KIHRoZSByZXN1bHQgZGF0YXNldC4gQ2xpY2sg
PGEgaHJlZj0zRCJodHRwczovL3dpa2kuZ2FsYXh5cHJvamVjdC5vcmcvTGVhcm4vPQpBZHZhbmNl
ZFdvcmtmbG93L1ZhcmlhYmxlcyI+aGVyZTwvYT4gZm9yIG1vcmUgaW5mb3JtYXRpb24uJ30se2Fj
dGlvbjoiQ2hhbmc9CmVEYXRhdHlwZUFjdGlvbiIsYXJndW1lbnQ6Im5ld3R5cGUiLGxhYmVsOiJD
aGFuZ2UgZGF0YXR5cGUiLHR5cGU6InNlbGVjdCIsaT0KZ25vcmU6Ik5vbmUiLG9wdGlvbnM6Zyxo
ZWxwOiJUaGlzIGFjdGlvbiB3aWxsIGNoYW5nZSB0aGUgZGF0YXR5cGUgb2YgdGhlIG91PQp0cHV0
IHRvIHRoZSBpbmRpY2F0ZWQgdmFsdWUuIn0se2FjdGlvbjoiVGFnRGF0YXNldEFjdGlvbiIsYXJn
dW1lbnQ6InRhZ3MiLGw9CmFiZWw6IlRhZ3MiLHR5cGU6InRleHQiLHZhbHVlOiIiLGlnbm9yZToi
IixoZWxwOiJUaGlzIGFjdGlvbiB3aWxsIHNldCB0YWdzID0KZm9yIHRoZSBkYXRhc2V0LiJ9LHts
YWJlbDoiQXNzaWduIGNvbHVtbnMiLHR5cGU6InNlY3Rpb24iLGlucHV0czpbe2FjdGlvbjoiPQpD
b2x1bW5TZXRBY3Rpb24iLGFyZ3VtZW50OiJjaHJvbUNvbCIsbGFiZWw6IkNocm9tIGNvbHVtbiIs
dHlwZToidGV4dCIsdmFsdWU9CjoiIixpZ25vcmU6IiJ9LHthY3Rpb246IkNvbHVtblNldEFjdGlv
biIsYXJndW1lbnQ6InN0YXJ0Q29sIixsYWJlbDoiU3RhcnQgYz0Kb2x1bW4iLHR5cGU6InRleHQi
LHZhbHVlOiIiLGlnbm9yZToiIn0se2FjdGlvbjoiQ29sdW1uU2V0QWN0aW9uIixhcmd1bWVudDoi
PQplbmRDb2wiLGxhYmVsOiJFbmQgY29sdW1uIix0eXBlOiJ0ZXh0Iix2YWx1ZToiIixpZ25vcmU6
IiJ9LHthY3Rpb246IkNvbHVtblM9CmV0QWN0aW9uIixhcmd1bWVudDoic3RyYW5kQ29sIixsYWJl
bDoiU3RyYW5kIGNvbHVtbiIsdHlwZToidGV4dCIsdmFsdWU6IiIsaT0KZ25vcmU6IiJ9LHthY3Rp
b246IkNvbHVtblNldEFjdGlvbiIsYXJndW1lbnQ6Im5hbWVDb2wiLGxhYmVsOiJOYW1lIGNvbHVt
biIsPQp0eXBlOiJ0ZXh0Iix2YWx1ZToiIixpZ25vcmU6IiJ9XSxoZWxwOiJUaGlzIGFjdGlvbiB3
aWxsIHNldCBjb2x1bW4gYXNzaWdubWU9Cm50cyBpbiB0aGUgb3V0cHV0IGRhdGFzZXQuIEJsYW5r
IGZpZWxkcyBhcmUgaWdub3JlZC4ifSx7YWN0aW9uOiJFbWFpbEFjdGlvbj0KIixsYWJlbDoiRW1h
aWwgbm90aWZpY2F0aW9uIix0eXBlOiJib29sZWFuIix2YWx1ZToiZmFsc2UiLGlnbm9yZToiZmFs
c2UiLGhlPQpscDoiVGhpcyBhY3Rpb24gd2lsbCBzZW5kIGFuIGVtYWlsIG5vdGlmeWluZyB5b3Ug
d2hlbiB0aGUgam9iIGlzIGRvbmUuIixwYXk9CmxvYWQ6e2hvc3Q6d2luZG93LmxvY2F0aW9uLmhv
c3R9fSx7YWN0aW9uOiJEZWxldGVJbnRlcm1lZGlhdGVzQWN0aW9uIixsYWJlbD0KOiJEZWxldGUg
bm9uLW91dHB1dHMiLHR5cGU6ImJvb2xlYW4iLHZhbHVlOiJmYWxzZSIsaWdub3JlOiJmYWxzZSIs
aGVscDoiQWxsPQogbm9uLW91dHB1dCBzdGVwcyBvZiB0aGlzIHdvcmtmbG93IHdpbGwgaGF2ZSBk
YXRhc2V0cyBkZWxldGVkIGlmIHRoZXkgYXJlIG49Cm8gbG9uZ2VyIGJlaW5nIHVzZWQgYXMgam9i
IGlucHV0cyB3aGVuIHRoZSBqb2IgdGhpcyBhY3Rpb24gaXMgYXR0YWNoZWQgdG8gaT0KcyBmaW5p
c2hlZC4gWW91ICptdXN0KiBiZSB1c2luZyB3b3JrZmxvdyBvdXRwdXRzICh0aGUgc25vd2ZsYWtl
KSBpbiB5b3VyIHdvPQpya2Zsb3cgZm9yIHRoaXMgdG8gaGF2ZSBhbnkgZWZmZWN0LiJ9XX07dmFy
IGQ9M0R0aGlzO2Z1bmN0aW9uIGUobixvKXtvPTNEb3w9CnxbXTtvLnB1c2gobik7Zm9yKHZhciBt
IGluIG4uaW5wdXRzKXt2YXIgaz0zRG4uaW5wdXRzW21dO2lmKGsuYWN0aW9uKXtrLm5hbT0KZT0z
RCJwamFfXyIraCsiX18iK2suYWN0aW9uO2lmKGsuYXJndW1lbnQpe2submFtZSs9M0QiX18iK2su
YXJndW1lbnR9aWYoay5wPQpheWxvYWQpe2Zvcih2YXIgcyBpbiBrLnBheWxvYWQpe3ZhciBxPTNE
ay5wYXlsb2FkW3NdO2sucGF5bG9hZFtrLm5hbWUrIl9fIis9CnNdPTNEcTtkZWxldGUgcX19dmFy
IHI9M0RkLnBvc3Rfam9iX2FjdGlvbnNbay5hY3Rpb24raF07aWYocil7Zm9yKHZhciBsIGluID0K
byl7b1tsXS5leHBhbmQ9M0R0cnVlfWlmKGsuYXJndW1lbnQpe2sudmFsdWU9M0RyLmFjdGlvbl9h
cmd1bWVudHMmJnIuYWN0aW9uPQpfYXJndW1lbnRzW2suYXJndW1lbnRdfHxrLnZhbHVlfWVsc2V7
ay52YWx1ZT0zRCJ0cnVlIn19fWlmKGsuaW5wdXRzKXtlKGssby49CnNsaWNlKDApKX19fWUoZik7
cmV0dXJuIGZ9LF9idWlsZE1vZGVsOmZ1bmN0aW9uKCl7R2FsYXh5Lm1vZGFsLnNob3coe3RpdGxl
Oj0KIkNvbWluZyBzb29uLi4uIixib2R5OiJUaGlzIGZlYXR1cmUgaGFzIG5vdCBiZWVuIGltcGxl
bWVudGVkIHlldC4iLGJ1dHRvbnM6PQp7Q2xvc2U6ZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuaGlk
ZSgpfX19KX0sX3VwZGF0ZU1vZGVsOmZ1bmN0aW9uKCl7dmFyIGQ9M0Q9CnRoaXM7dmFyIGU9M0R0
aGlzLnRyZWUuZmluYWxpemUoKTtjb25zb2xlLmRlYnVnKCJ0b29scy1mb3JtLXdvcmtmbG93Ojpf
cmVmcj0KZXNoRm9ybSgpIC0gUmVmcmVzaGluZyBzdGF0ZXMuIik7Y29uc29sZS5kZWJ1ZyhlKTt2
YXIgZz0zRHRoaXMuZGVmZXJyZWQucmVnPQppc3RlcigpO3ZhciBmPTNEZ2FsYXh5X2NvbmZpZy5y
b290KyJ3b3JrZmxvdy9lZGl0b3JfZm9ybV9wb3N0P3Rvb2xfaWQ9M0QiK3Q9Cmhpcy5vcHRpb25z
LmlkO2IucmVxdWVzdCh7dHlwZToiR0VUIix1cmw6ZixkYXRhOmUsc3VjY2VzczpmdW5jdGlvbiho
KXtkLm5vZD0KZS51cGRhdGVfZmllbGRfZGF0YShoKTtkLmRlZmVycmVkLmRvbmUoZyk7Y29uc29s
ZS5kZWJ1ZygidG9vbHMtZm9ybTo6X3JlZnJlPQpzaEZvcm0oKSAtIFN0YXRlcyByZWZyZXNoZWQu
Iik7Y29uc29sZS5kZWJ1ZyhoKX0sZXJyb3I6ZnVuY3Rpb24oaCl7ZC5kZWZlcnI9CmVkLmRvbmUo
Zyk7Y29uc29sZS5kZWJ1ZygidG9vbHMtZm9ybTo6X3JlZnJlc2hGb3JtKCkgLSBSZWZyZXNoIHJl
cXVlc3QgZmFpbD0KZWQuIik7Y29uc29sZS5kZWJ1ZyhoKX19KX19KTtyZXR1cm57VmlldzpjfX0p
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2RlZmluZShbInV0aWxzL3V0aWxzIiwibXZj
L3Rvb2xzL3Rvb2xzLWZvcm0tYmFzZSJdLGZ1bmN0aW9uKGIsYSl7dmFyIGM9M0RhPQouZXh0ZW5k
KHtpbml0aWFsaXplOmZ1bmN0aW9uKGUpe3RoaXMubm9kZT0zRHdvcmtmbG93LmFjdGl2ZV9ub2Rl
O2lmKCF0aGlzLm49Cm9kZSl7Y29uc29sZS5kZWJ1ZygiRkFJTEVEIC0gdG9vbHMtZm9ybS13b3Jr
Zmxvdzppbml0aWFsaXplKCkgLSBOb2RlIG5vdCBmbz0KdW5kIGluIHdvcmtmbG93LiIpO3JldHVy
bn10aGlzLndvcmtmbG93PTNEdHJ1ZTt0aGlzLm9wdGlvbnM9M0RlO2IuZGVlcGVhY2goPQplLmlu
cHV0cyxmdW5jdGlvbihmKXtpZihmLnR5cGUpe2Yub3B0aW9uYWw9M0QoWyJkYXRhIiwiZGF0YV9o
aWRkZW4iLCJoaWRkZW49CiIsImRyaWxsX2Rvd24iXSkuaW5kZXhPZihmLnR5cGUpPTNEPTNELTF9
fSk7Yi5kZWVwZWFjaChlLmlucHV0cyxmdW5jdGlvbihmKT0Ke2lmKGYudHlwZSl7aWYoZi50eXBl
PTNEPTNEImNvbmRpdGlvbmFsIil7Zi50ZXN0X3BhcmFtLm9wdGlvbmFsPTNEZmFsc2V9fX0pPQo7
dmFyIGQ9M0R0aGlzO2IuZ2V0KHt1cmw6Z2FsYXh5X2NvbmZpZy5yb290KyJhcGkvZGF0YXR5cGVz
IixjYWNoZTp0cnVlLHN1Y2M9CmVzczpmdW5jdGlvbihmKXtkLmRhdGF0eXBlcz0zRGY7ZC5fbWFr
ZVNlY3Rpb25zKGUuaW5wdXRzKTthLnByb3RvdHlwZS5pbml0aT0KYWxpemUuY2FsbChkLGUpfX0p
fSxfbWFrZVNlY3Rpb25zOmZ1bmN0aW9uKGQpe2RbYi51dWlkKCldPTNEe2xhYmVsOiJFZGl0IFN0
PQplcCBBdHRyaWJ1dGVzIix0eXBlOiJzZWN0aW9uIixleHBhbmQ6dGhpcy5ub2RlLmFubm90YXRp
b24saW5wdXRzOlt7bGFiZWw6IkE9Cm5ub3RhdGlvbiAvIE5vdGVzIixuYW1lOiJhbm5vdGF0aW9u
Iix0eXBlOiJ0ZXh0IixhcmVhOnRydWUsaGVscDoiQWRkIGFuIGFubj0Kb3RhdGlvbiBvciBub3Rl
cyB0byB0aGlzIHN0ZXA7IGFubm90YXRpb25zIGFyZSBhdmFpbGFibGUgd2hlbiBhIHdvcmtmbG93
IGlzPQogdmlld2VkLiIsdmFsdWU6dGhpcy5ub2RlLmFubm90YXRpb259XX07dGhpcy5wb3N0X2pv
Yl9hY3Rpb25zPTNEdGhpcy5ub2RlLnA9Cm9zdF9qb2JfYWN0aW9ucztmb3IodmFyIGUgaW4gdGhp
cy5ub2RlLm91dHB1dF90ZXJtaW5hbHMpe2RbYi51dWlkKCldPTNEdGhpcz0KLl9tYWtlU2VjdGlv
bihlKX19LF9tYWtlU2VjdGlvbjpmdW5jdGlvbihoKXt2YXIgZz0zRFtdO2ZvcihrZXkgaW4gdGhp
cy5kYXRhPQp0eXBlcyl7Zy5wdXNoKHswOnRoaXMuZGF0YXR5cGVzW2tleV0sMTp0aGlzLmRhdGF0
eXBlc1trZXldfSl9Zy5zb3J0KGZ1bmN0aW89Cm4oaixpKXtyZXR1cm4gai5sYWJlbD5pLmxhYmVs
PzE6ai5sYWJlbDxpLmxhYmVsPy0xOjB9KTtnLnVuc2hpZnQoezA6IlNlcXVlbj0KY2VzIiwxOiJT
ZXF1ZW5jZXMifSk7Zy51bnNoaWZ0KHswOiJSb2FkbWFwcyIsMToiUm9hZG1hcHMifSk7Zy51bnNo
aWZ0KHswOiJMPQplYXZlIHVuY2hhbmdlZCIsMToiTm9uZSJ9KTt2YXIgZj0zRHtsYWJlbDoiRWRp
dCBTdGVwIEFjdGlvbjogJyIraCsiJyIsdHlwZTo9CiJzZWN0aW9uIixpbnB1dHM6W3thY3Rpb246
IlJlbmFtZURhdGFzZXRBY3Rpb24iLGFyZ3VtZW50OiJuZXduYW1lIixsYWJlbDoiUj0KZW5hbWUg
ZGF0YXNldCIsdHlwZToidGV4dCIsdmFsdWU6IiIsaWdub3JlOiIiLGhlbHA6J1RoaXMgYWN0aW9u
IHdpbGwgcmVuYW1lPQogdGhlIHJlc3VsdCBkYXRhc2V0LiBDbGljayA8YSBocmVmPTNEImh0dHBz
Oi8vd2lraS5nYWxheHlwcm9qZWN0Lm9yZy9MZWFybi89CkFkdmFuY2VkV29ya2Zsb3cvVmFyaWFi
bGVzIj5oZXJlPC9hPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nfSx7YWN0aW9uOiJDaGFuZz0KZURh
dGF0eXBlQWN0aW9uIixhcmd1bWVudDoibmV3dHlwZSIsbGFiZWw6IkNoYW5nZSBkYXRhdHlwZSIs
dHlwZToic2VsZWN0IixpPQpnbm9yZToiTm9uZSIsb3B0aW9uczpnLGhlbHA6IlRoaXMgYWN0aW9u
IHdpbGwgY2hhbmdlIHRoZSBkYXRhdHlwZSBvZiB0aGUgb3U9CnRwdXQgdG8gdGhlIGluZGljYXRl
ZCB2YWx1ZS4ifSx7YWN0aW9uOiJUYWdEYXRhc2V0QWN0aW9uIixhcmd1bWVudDoidGFncyIsbD0K
YWJlbDoiVGFncyIsdHlwZToidGV4dCIsdmFsdWU6IiIsaWdub3JlOiIiLGhlbHA6IlRoaXMgYWN0
aW9uIHdpbGwgc2V0IHRhZ3MgPQpmb3IgdGhlIGRhdGFzZXQuIn0se2xhYmVsOiJBc3NpZ24gY29s
dW1ucyIsdHlwZToic2VjdGlvbiIsaW5wdXRzOlt7YWN0aW9uOiI9CkNvbHVtblNldEFjdGlvbiIs
YXJndW1lbnQ6ImNocm9tQ29sIixsYWJlbDoiQ2hyb20gY29sdW1uIix0eXBlOiJ0ZXh0Iix2YWx1
ZT0KOiIiLGlnbm9yZToiIn0se2FjdGlvbjoiQ29sdW1uU2V0QWN0aW9uIixhcmd1bWVudDoic3Rh
cnRDb2wiLGxhYmVsOiJTdGFydCBjPQpvbHVtbiIsdHlwZToidGV4dCIsdmFsdWU6IiIsaWdub3Jl
OiIifSx7YWN0aW9uOiJDb2x1bW5TZXRBY3Rpb24iLGFyZ3VtZW50OiI9CmVuZENvbCIsbGFiZWw6
IkVuZCBjb2x1bW4iLHR5cGU6InRleHQiLHZhbHVlOiIiLGlnbm9yZToiIn0se2FjdGlvbjoiQ29s
dW1uUz0KZXRBY3Rpb24iLGFyZ3VtZW50OiJzdHJhbmRDb2wiLGxhYmVsOiJTdHJhbmQgY29sdW1u
Iix0eXBlOiJ0ZXh0Iix2YWx1ZToiIixpPQpnbm9yZToiIn0se2FjdGlvbjoiQ29sdW1uU2V0QWN0
aW9uIixhcmd1bWVudDoibmFtZUNvbCIsbGFiZWw6Ik5hbWUgY29sdW1uIiw9CnR5cGU6InRleHQi
LHZhbHVlOiIiLGlnbm9yZToiIn1dLGhlbHA6IlRoaXMgYWN0aW9uIHdpbGwgc2V0IGNvbHVtbiBh
c3NpZ25tZT0KbnRzIGluIHRoZSBvdXRwdXQgZGF0YXNldC4gQmxhbmsgZmllbGRzIGFyZSBpZ25v
cmVkLiJ9LHthY3Rpb246IkVtYWlsQWN0aW9uPQoiLGxhYmVsOiJFbWFpbCBub3RpZmljYXRpb24i
LHR5cGU6ImJvb2xlYW4iLHZhbHVlOiJmYWxzZSIsaWdub3JlOiJmYWxzZSIsaGU9CmxwOiJUaGlz
IGFjdGlvbiB3aWxsIHNlbmQgYW4gZW1haWwgbm90aWZ5aW5nIHlvdSB3aGVuIHRoZSBqb2IgaXMg
ZG9uZS4iLHBheT0KbG9hZDp7aG9zdDp3aW5kb3cubG9jYXRpb24uaG9zdH19LHthY3Rpb246IkRl
bGV0ZUludGVybWVkaWF0ZXNBY3Rpb24iLGxhYmVsPQo6IkRlbGV0ZSBub24tb3V0cHV0cyIsdHlw
ZToiYm9vbGVhbiIsdmFsdWU6ImZhbHNlIixpZ25vcmU6ImZhbHNlIixoZWxwOiJBbGw9CiBub24t
b3V0cHV0IHN0ZXBzIG9mIHRoaXMgd29ya2Zsb3cgd2lsbCBoYXZlIGRhdGFzZXRzIGRlbGV0ZWQg
aWYgdGhleSBhcmUgbj0KbyBsb25nZXIgYmVpbmcgdXNlZCBhcyBqb2IgaW5wdXRzIHdoZW4gdGhl
IGpvYiB0aGlzIGFjdGlvbiBpcyBhdHRhY2hlZCB0byBpPQpzIGZpbmlzaGVkLiBZb3UgKm11c3Qq
IGJlIHVzaW5nIHdvcmtmbG93IG91dHB1dHMgKHRoZSBzbm93Zmxha2UpIGluIHlvdXIgd289CnJr
ZmxvdyBmb3IgdGhpcyB0byBoYXZlIGFueSBlZmZlY3QuIn1dfTt2YXIgZD0zRHRoaXM7ZnVuY3Rp
b24gZShuLG8pe289M0RvfD0KfFtdO28ucHVzaChuKTtmb3IodmFyIG0gaW4gbi5pbnB1dHMpe3Zh
ciBrPTNEbi5pbnB1dHNbbV07aWYoay5hY3Rpb24pe2submFtPQplPTNEInBqYV9fIitoKyJfXyIr
ay5hY3Rpb247aWYoay5hcmd1bWVudCl7ay5uYW1lKz0zRCJfXyIray5hcmd1bWVudH1pZihrLnA9
CmF5bG9hZCl7Zm9yKHZhciBzIGluIGsucGF5bG9hZCl7dmFyIHE9M0RrLnBheWxvYWRbc107ay5w
YXlsb2FkW2submFtZSsiX18iKz0Kc109M0RxO2RlbGV0ZSBxfX12YXIgcj0zRGQucG9zdF9qb2Jf
YWN0aW9uc1trLmFjdGlvbitoXTtpZihyKXtmb3IodmFyIGwgaW4gPQpvKXtvW2xdLmV4cGFuZD0z
RHRydWV9aWYoay5hcmd1bWVudCl7ay52YWx1ZT0zRHIuYWN0aW9uX2FyZ3VtZW50cyYmci5hY3Rp
b249Cl9hcmd1bWVudHNbay5hcmd1bWVudF18fGsudmFsdWV9ZWxzZXtrLnZhbHVlPTNEInRydWUi
fX19aWYoay5pbnB1dHMpe2UoayxvLj0Kc2xpY2UoMCkpfX19ZShmKTtyZXR1cm4gZn0sX2J1aWxk
TW9kZWw6ZnVuY3Rpb24oKXtHYWxheHkubW9kYWwuc2hvdyh7dGl0bGU6PQoiQ29taW5nIHNvb24u
Li4iLGJvZHk6IlRoaXMgZmVhdHVyZSBoYXMgbm90IGJlZW4gaW1wbGVtZW50ZWQgeWV0LiIsYnV0
dG9uczo9CntDbG9zZTpmdW5jdGlvbigpe0dhbGF4eS5tb2RhbC5oaWRlKCl9fX0pfSxfdXBkYXRl
TW9kZWw6ZnVuY3Rpb24oKXt2YXIgZD0zRD0KdGhpczt2YXIgZT0zRHRoaXMudHJlZS5maW5hbGl6
ZSgpO2NvbnNvbGUuZGVidWcoInRvb2xzLWZvcm0td29ya2Zsb3c6Ol9yZWZyPQplc2hGb3JtKCkg
LSBSZWZyZXNoaW5nIHN0YXRlcy4iKTtjb25zb2xlLmRlYnVnKGUpO3ZhciBnPTNEdGhpcy5kZWZl
cnJlZC5yZWc9CmlzdGVyKCk7dmFyIGY9M0RnYWxheHlfY29uZmlnLnJvb3QrIndvcmtmbG93L2Vk
aXRvcl9mb3JtX3Bvc3Q/dG9vbF9pZD0zRCIrdD0KaGlzLm9wdGlvbnMuaWQrIiZfX2lzX2R5bmFt
aWNfXz0zREZhbHNlIjtiLnJlcXVlc3Qoe3R5cGU6IkdFVCIsdXJsOmYsZGF0YTplPQosc3VjY2Vz
czpmdW5jdGlvbihoKXtkLm5vZGUudXBkYXRlX2ZpZWxkX2RhdGEoaCk7ZC5fZXJyb3JzKGgmJmgu
dG9vbF9tb2RlbCk9CjtkLmRlZmVycmVkLmRvbmUoZyk7Y29uc29sZS5kZWJ1ZygidG9vbHMtZm9y
bTo6X3JlZnJlc2hGb3JtKCkgLSBTdGF0ZXMgcmVmcj0KZXNoZWQuIik7Y29uc29sZS5kZWJ1Zyho
KX0sZXJyb3I6ZnVuY3Rpb24oaCl7ZC5kZWZlcnJlZC5kb25lKGcpO2NvbnNvbGUuZGViPQp1Zygi
dG9vbHMtZm9ybTo6X3JlZnJlc2hGb3JtKCkgLSBSZWZyZXNoIHJlcXVlc3QgZmFpbGVkLiIpO2Nv
bnNvbGUuZGVidWcoaCk9Cn19KX19KTtyZXR1cm57VmlldzpjfX0pOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKCmRpZmYgLXIgOGE3MDQ1NzkyYzdmZTQ4YTk5Mjk1NzcwNGU1MWUzMTNkMzJl
NmNkZCAtciAwZjczNzQ4NWNiN2Y1ZDc1NTk1ZTk4YT0KYjhmOGRjMDJiYTM2OTk3NmYgc3RhdGlj
L3NjcmlwdHMvcGFja2VkL212Yy90b29scy90b29scy1pbnB1dC5qcwotLS0gYS9zdGF0aWMvc2Ny
aXB0cy9wYWNrZWQvbXZjL3Rvb2xzL3Rvb2xzLWlucHV0LmpzCisrKyBiL3N0YXRpYy9zY3JpcHRz
L3BhY2tlZC9tdmMvdG9vbHMvdG9vbHMtaW5wdXQuanMKQEAgLTEsMSArMSwxIEBACi1kZWZpbmUo
W10sZnVuY3Rpb24oKXtyZXR1cm4gQmFja2JvbmUuVmlldy5leHRlbmQoe2luaXRpYWxpemU6ZnVu
Y3Rpb24oZCxjKT0Ke3RoaXMuYXBwPTNEZDt0aGlzLmZpZWxkPTNEYy5maWVsZDt0aGlzLmRlZmF1
bHR2YWx1ZT0zRGMuZGVmYXVsdHZhbHVlO3RoaXMuPQpzZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRl
KGMpKTt0aGlzLiRmaWVsZD0zRHRoaXMuJGVsLmZpbmQoIi51aS10YWJsZS1mb3JtLWY9CmllbGQi
KTt0aGlzLiR0aXRsZV9vcHRpb25hbD0zRHRoaXMuJGVsLmZpbmQoIi51aS10YWJsZS1mb3JtLXRp
dGxlLW9wdGlvbmFsIj0KKTt0aGlzLiRlcnJvcl90ZXh0PTNEdGhpcy4kZWwuZmluZCgiLnVpLXRh
YmxlLWZvcm0tZXJyb3ItdGV4dCIpO3RoaXMuJGVycm9yPQo9M0R0aGlzLiRlbC5maW5kKCIudWkt
dGFibGUtZm9ybS1lcnJvciIpO3RoaXMuJGZpZWxkLnByZXBlbmQodGhpcy5maWVsZC4kZWw9Cik7
dGhpcy5maWVsZC5za2lwPTNEZmFsc2U7dmFyIGI9M0R0aGlzLmZpZWxkLnZhbHVlJiZ0aGlzLmZp
ZWxkLnZhbHVlKCk7dGhpcz0KLmZpZWxkLnNraXA9M0RCb29sZWFuKGMub3B0aW9uYWwmJigodGhp
cy5maWVsZC52YWxpZGF0ZSYmIXRoaXMuZmllbGQudmFsaWRhPQp0ZSgpKXx8IWJ8fChiPTNEPTNE
dGhpcy5kZWZhdWx0dmFsdWUpfHwoTnVtYmVyKGIpPTNEPTNETnVtYmVyKHRoaXMuZGVmYXVsdHY9
CmFsdWUpKXx8KEpTT04uc3RyaW5naWZ5KGIpPTNEPTNESlNPTi5zdHJpbmdpZnkodGhpcy5kZWZh
dWx0dmFsdWUpKSkpO3RoaXMuXz0KcmVmcmVzaCgpO3ZhciBhPTNEdGhpczt0aGlzLiR0aXRsZV9v
cHRpb25hbC5vbigiY2xpY2siLGZ1bmN0aW9uKCl7YS5maWVsZC5zPQpraXA9M0QhYS5maWVsZC5z
a2lwO2EuX3JlZnJlc2goKX0pfSxlcnJvcjpmdW5jdGlvbihhKXt0aGlzLiRlcnJvcl90ZXh0Lmh0
bWw9CihhKTt0aGlzLiRlcnJvci5mYWRlSW4oKTt0aGlzLiRlbC5hZGRDbGFzcygidWktZXJyb3Ii
KX0scmVzZXQ6ZnVuY3Rpb24oKXt0aD0KaXMuJGVycm9yLmhpZGUoKTt0aGlzLiRlbC5yZW1vdmVD
bGFzcygidWktZXJyb3IiKX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXtpZighPQp0aGlzLmZpZWxkLnNr
aXApe3RoaXMuJGZpZWxkLmZhZGVJbigiZmFzdCIpO3RoaXMuJHRpdGxlX29wdGlvbmFsLmh0bWwo
IkRpc2E9CmJsZSIpfWVsc2V7dGhpcy4kZmllbGQuaGlkZSgpO3RoaXMuJHRpdGxlX29wdGlvbmFs
Lmh0bWwoIkVuYWJsZSIpO3RoaXMuZmllbD0KZC52YWx1ZSYmdGhpcy5maWVsZC52YWx1ZSh0aGlz
LmRlZmF1bHR2YWx1ZSl9dGhpcy5hcHAudHJpZ2dlcigicmVmcmVzaCIpfSxfPQp0ZW1wbGF0ZTpm
dW5jdGlvbihhKXt2YXIgYj0zRCc8ZGl2IGNsYXNzPTNEInVpLXRhYmxlLWZvcm0tZWxlbWVudCI+
PGRpdiBjbGE9CnNzPTNEInVpLXRhYmxlLWZvcm0tZXJyb3IgdWktZXJyb3IiPjxzcGFuIGNsYXNz
PTNEImZhIGZhLWFycm93LWRvd24iLz48c3Bhbj0KIGNsYXNzPTNEInVpLXRhYmxlLWZvcm0tZXJy
b3ItdGV4dCIvPjwvZGl2PjxkaXYgY2xhc3M9M0QidWktdGFibGUtZm9ybS10aXRsPQplLXN0cm9u
ZyI+JztpZihhLm9wdGlvbmFsKXtiKz0zRGEubGFiZWwrJzxzcGFuPiZuYnNwWzxzcGFuIGNsYXNz
PTNEInVpLXRhYmw9CmUtZm9ybS10aXRsZS1vcHRpb25hbCIvPl08L3NwYW4+J31lbHNle2IrPTNE
YS5sYWJlbH1iKz0zRCc8L2Rpdj48ZGl2IGNsYXNzPQo9M0QidWktdGFibGUtZm9ybS1maWVsZCI+
JztpZihhLmhlbHApe2IrPTNEJzxkaXYgY2xhc3M9M0QidWktdGFibGUtZm9ybS1pbmY9Cm8iPicr
YS5oZWxwKyI8L2Rpdj4ifWIrPTNEIjwvZGl2PjwvZGl2PiI7cmV0dXJuIGJ9fSl9KTsKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkZWZpbmUoW10sZnVuY3Rpb24oKXtyZXR1cm4gQmFja2Jv
bmUuVmlldy5leHRlbmQoe2luaXRpYWxpemU6ZnVuY3Rpb24oZCxjKT0Ke3RoaXMuYXBwPTNEZDt0
aGlzLmZpZWxkPTNEYy5maWVsZDt0aGlzLmRlZmF1bHR2YWx1ZT0zRGMuZGVmYXVsdHZhbHVlO3Ro
aXMuPQpzZXRFbGVtZW50KHRoaXMuX3RlbXBsYXRlKGMpKTt0aGlzLiRmaWVsZD0zRHRoaXMuJGVs
LmZpbmQoIi51aS10YWJsZS1mb3JtLWY9CmllbGQiKTt0aGlzLiR0aXRsZV9vcHRpb25hbD0zRHRo
aXMuJGVsLmZpbmQoIi51aS10YWJsZS1mb3JtLXRpdGxlLW9wdGlvbmFsIj0KKTt0aGlzLiRlcnJv
cl90ZXh0PTNEdGhpcy4kZWwuZmluZCgiLnVpLXRhYmxlLWZvcm0tZXJyb3ItdGV4dCIpO3RoaXMu
JGVycm9yPQo9M0R0aGlzLiRlbC5maW5kKCIudWktdGFibGUtZm9ybS1lcnJvciIpO3RoaXMuJGZp
ZWxkLnByZXBlbmQodGhpcy5maWVsZC4kZWw9Cik7dGhpcy5maWVsZC5za2lwPTNEZmFsc2U7dmFy
IGI9M0R0aGlzLmZpZWxkLnZhbHVlJiZ0aGlzLmZpZWxkLnZhbHVlKCk7dGhpcz0KLmZpZWxkLnNr
aXA9M0RCb29sZWFuKGMub3B0aW9uYWwmJigodGhpcy5maWVsZC52YWxpZGF0ZSYmIXRoaXMuZmll
bGQudmFsaWRhPQp0ZSgpKXx8IWJ8fChiPTNEPTNEdGhpcy5kZWZhdWx0dmFsdWUpfHwoTnVtYmVy
KGIpPTNEPTNETnVtYmVyKHRoaXMuZGVmYXVsdHY9CmFsdWUpKXx8KEpTT04uc3RyaW5naWZ5KGIp
PTNEPTNESlNPTi5zdHJpbmdpZnkodGhpcy5kZWZhdWx0dmFsdWUpKSkpO3RoaXMuXz0KcmVmcmVz
aCgpO3ZhciBhPTNEdGhpczt0aGlzLiR0aXRsZV9vcHRpb25hbC5vbigiY2xpY2siLGZ1bmN0aW9u
KCl7YS5maWVsZC5zPQpraXA9M0QhYS5maWVsZC5za2lwO2EuX3JlZnJlc2goKX0pfSxlcnJvcjpm
dW5jdGlvbihhKXtpZighdGhpcy5maWVsZC5za2lwKXs9CnRoaXMuJGVycm9yX3RleHQuaHRtbChh
KTt0aGlzLiRlcnJvci5mYWRlSW4oImZhc3QiKTt0aGlzLiRlbC5hZGRDbGFzcygidWktZT0KcnJv
ciIpfX0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLiRlcnJvci5oaWRlKCk7dGhpcy4kZWwucmVtb3Zl
Q2xhc3MoInVpLWVycm9yPQoiKX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXtpZighdGhpcy5maWVsZC5z
a2lwKXt0aGlzLiRmaWVsZC5mYWRlSW4oImZhc3QiKTt0aGk9CnMuJHRpdGxlX29wdGlvbmFsLmh0
bWwoIkRpc2FibGUiKX1lbHNle3RoaXMucmVzZXQoKTt0aGlzLiRmaWVsZC5oaWRlKCk7dGhpcz0K
LiR0aXRsZV9vcHRpb25hbC5odG1sKCJFbmFibGUiKTt0aGlzLmZpZWxkLnZhbHVlJiZ0aGlzLmZp
ZWxkLnZhbHVlKHRoaXMuZGVmPQphdWx0dmFsdWUpfXRoaXMuYXBwLnRyaWdnZXIoInJlZnJlc2gi
KX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGEpe3ZhciBiPTNEJzxkaXY9CiBjbGFzcz0zRCJ1aS10YWJs
ZS1mb3JtLWVsZW1lbnQiPjxkaXYgY2xhc3M9M0QidWktdGFibGUtZm9ybS1lcnJvciB1aS1lcnJv
cj0KIj48c3BhbiBjbGFzcz0zRCJmYSBmYS1hcnJvdy1kb3duIi8+PHNwYW4gY2xhc3M9M0QidWkt
dGFibGUtZm9ybS1lcnJvci10ZXh0PQoiLz48L2Rpdj48ZGl2IGNsYXNzPTNEInVpLXRhYmxlLWZv
cm0tdGl0bGUtc3Ryb25nIj4nO2lmKGEub3B0aW9uYWwpe2IrPTNEYS49CmxhYmVsKyc8c3Bhbj4m
bmJzcFs8c3BhbiBjbGFzcz0zRCJ1aS10YWJsZS1mb3JtLXRpdGxlLW9wdGlvbmFsIi8+XTwvc3Bh
bj4nfT0KZWxzZXtiKz0zRGEubGFiZWx9Yis9M0QnPC9kaXY+PGRpdiBjbGFzcz0zRCJ1aS10YWJs
ZS1mb3JtLWZpZWxkIj4nO2lmKGEuaGVsPQpwKXtiKz0zRCc8ZGl2IGNsYXNzPTNEInVpLXRhYmxl
LWZvcm0taW5mbyI+JythLmhlbHArIjwvZGl2PiJ9Yis9M0QiPC9kaXY+PC89CmRpdj4iO3JldHVy
biBifX0pfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQoKZGlmZiAtciA4YTcwNDU3OTJj
N2ZlNDhhOTkyOTU3NzA0ZTUxZTMxM2QzMmU2Y2RkIC1yIDBmNzM3NDg1Y2I3ZjVkNzU1OTVlOThh
PQpiOGY4ZGMwMmJhMzY5OTc2ZiBzdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3Rvb2xzL3Rvb2xz
LXNlY3Rpb24uanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy90b29scy90b29scy1z
ZWN0aW9uLmpzCisrKyBiL3N0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMvdG9vbHMvdG9vbHMtc2Vj
dGlvbi5qcwpAQCAtMSwxICsxLDEgQEAKLWRlZmluZShbInV0aWxzL3V0aWxzIiwibXZjL3VpL3Vp
LXRhYmxlIiwibXZjL3VpL3VpLW1pc2MiLCJtdmMvdWkvdWktcG9ydGxlPQp0IiwibXZjL3Rvb2xz
L3Rvb2xzLXJlcGVhdCIsIm12Yy90b29scy90b29scy1zZWxlY3QtY29udGVudCIsIm12Yy90b29s
cy90b289CmxzLWlucHV0Il0sZnVuY3Rpb24oZSxiLGgsZCxjLGEsZil7dmFyIGc9M0RCYWNrYm9u
ZS5WaWV3LmV4dGVuZCh7aW5pdGlhbGl6ZT0KOmZ1bmN0aW9uKGosaSl7dGhpcy5hcHA9M0RqO3Ro
aXMuaW5wdXRzPTNEaS5pbnB1dHM7aS5jbHNfdHI9M0Qic2VjdGlvbi1yb3ciPQo7dGhpcy50YWJs
ZT0zRG5ldyBiLlZpZXcoaSk7dGhpcy5zZXRFbGVtZW50KHRoaXMudGFibGUuJGVsKTt0aGlzLnJl
bmRlcigpfSw9CnJlbmRlcjpmdW5jdGlvbigpe3RoaXMudGFibGUuZGVsQWxsKCk7Zm9yKHZhciBq
IGluIHRoaXMuaW5wdXRzKXt0aGlzLmFkZCh0aD0KaXMuaW5wdXRzW2pdKX19LGFkZDpmdW5jdGlv
bihrKXt2YXIgaj0zRHRoaXM7dmFyIGk9M0RqUXVlcnkuZXh0ZW5kKHRydWUse30sPQprKTtpLmlk
PTNEay5pZD0zRGUudXVpZCgpO3RoaXMuYXBwLmlucHV0X2xpc3RbaS5pZF09M0RpO3ZhciBsPTNE
aS50eXBlO3N3aXQ9CmNoKGwpe2Nhc2UiY29uZGl0aW9uYWwiOnRoaXMuX2FkZENvbmRpdGlvbmFs
KGkpO2JyZWFrO2Nhc2UicmVwZWF0Ijp0aGlzLl9hZD0KZFJlcGVhdChpKTticmVhaztjYXNlInNl
Y3Rpb24iOnRoaXMuX2FkZFNlY3Rpb24oaSk7YnJlYWs7ZGVmYXVsdDp0aGlzLl9hZGRSPQpvdyhp
KX19LF9hZGRDb25kaXRpb25hbDpmdW5jdGlvbihqKXt2YXIgaz0zRHRoaXM7ai50ZXN0X3BhcmFt
LmlkPTNEai5pZDt2YXI9CiBuPTNEdGhpcy5fYWRkUm93KGoudGVzdF9wYXJhbSk7bi5vcHRpb25z
Lm9uY2hhbmdlPTNEZnVuY3Rpb24odyl7dmFyIHY9M0RrLj0KYXBwLnRyZWUubWF0Y2hDYXNlKGos
dyk7Zm9yKHZhciB1IGluIGouY2FzZXMpe3ZhciBxPTNEai5jYXNlc1t1XTt2YXIgdD0zRGouPQpp
ZCsiLXNlY3Rpb24tIit1O3ZhciBwPTNEay50YWJsZS5nZXQodCk7dmFyIHM9M0RmYWxzZTtmb3Io
dmFyIHIgaW4gcS5pbnB1dHM9Cil7aWYoIXEuaW5wdXRzW3JdLmhpZGRlbil7cz0zRHRydWU7YnJl
YWt9fWlmKHU9M0Q9M0R2JiZzKXtwLmZhZGVJbigiZmFzdCIpfT0KZWxzZXtwLmhpZGUoKX19ay5h
cHAudHJpZ2dlcigicmVmcmVzaCIpfTtmb3IodmFyIG0gaW4gai5jYXNlcyl7dmFyIGw9M0RqLmlk
PQorIi1zZWN0aW9uLSIrbTt2YXIgbz0zRG5ldyBnKHRoaXMuYXBwLHtpbnB1dHM6ai5jYXNlc1tt
XS5pbnB1dHMsY2xzOiJ1aS10YWI9CmxlLXBsYWluIn0pO28uJGVsLmFkZENsYXNzKCJ1aS10YWJs
ZS1mb3JtLXNlY3Rpb24iKTt0aGlzLnRhYmxlLmFkZChvLiRlbCk7dD0KaGlzLnRhYmxlLmFwcGVu
ZChsKX1uLnRyaWdnZXIoImNoYW5nZSIpfSxfYWRkUmVwZWF0OmZ1bmN0aW9uKHApe3ZhciBzPTNE
dGhpPQpzO3ZhciBxPTNEMDtmdW5jdGlvbiBuKGksdSl7dmFyIHQ9M0RwLmlkKyItc2VjdGlvbi0i
KyhxKyspO3ZhciB2PTNEbnVsbDtpZig9CnUpe3Y9M0RmdW5jdGlvbigpe2wuZGVsKHQpO2wucmV0
aXRsZShwLnRpdGxlKTtzLmFwcC50cmlnZ2VyKCJyZWZyZXNoIil9fXZhcj0KIHc9M0RuZXcgZyhz
LmFwcCx7aW5wdXRzOmksY2xzOiJ1aS10YWJsZS1wbGFpbiJ9KTtsLmFkZCh7aWQ6dCx0aXRsZTpw
LnRpdGxlPQosJGVsOncuJGVsLG9uZGVsOnZ9KTtsLnJldGl0bGUocC50aXRsZSl9dmFyIGw9M0Ru
ZXcgYy5WaWV3KHt0aXRsZV9uZXc6cC50aXQ9CmxlLG1heDpwLm1heCxvbm5ldzpmdW5jdGlvbigp
e24ocC5pbnB1dHMsdHJ1ZSk7cy5hcHAudHJpZ2dlcigicmVmcmVzaCIpfX0pOz0KdmFyIGo9M0Rw
Lm1pbjt2YXIgcj0zRF8uc2l6ZShwLmNhY2hlKTtmb3IodmFyIG09M0QwO208TWF0aC5tYXgocixq
KTttKyspe3ZhPQpyIG89M0RudWxsO2lmKG08cil7bz0zRHAuY2FjaGVbbV19ZWxzZXtvPTNEcC5p
bnB1dHN9bihvLG0+PTNEail9dmFyIGs9M0RuZXc9CiBmKHRoaXMuYXBwLHtsYWJlbDpwLnRpdGxl
LGhlbHA6cC5oZWxwLGZpZWxkOmx9KTtrLiRlbC5hZGRDbGFzcygidWktdGFibGUtZj0Kb3JtLXNl
Y3Rpb24iKTt0aGlzLnRhYmxlLmFkZChrLiRlbCk7dGhpcy50YWJsZS5hcHBlbmQocC5pZCl9LF9h
ZGRTZWN0aW9uOmZ1PQpuY3Rpb24oaSl7dmFyIGo9M0R0aGlzO3ZhciBuPTNEbmV3IGcoai5hcHAs
e2lucHV0czppLmlucHV0cyxjbHM6InVpLXRhYmxlLXA9CmxhaW4ifSk7dmFyIG09M0RuZXcgaC5C
dXR0b25JY29uKHtpY29uOiJmYS1leWUtc2xhc2giLHRvb2x0aXA6IlNob3cvaGlkZSBzZT0KY3Rp
b24iLGNsczoidWktYnV0dG9uLWljb24tcGxhaW4ifSk7dmFyIGw9M0RuZXcgZC5WaWV3KHt0aXRs
ZTppLmxhYmVsLGNsczoiPQp1aS1wb3J0bGV0LXNlY3Rpb24iLG9wZXJhdGlvbnM6e2J1dHRvbl92
aXNpYmxlOm19fSk7bC5hcHBlbmQobi4kZWwpO3ZhciBrPQo9M0RmYWxzZTtsLiRjb250ZW50Lmhp
ZGUoKTtsLiRoZWFkZXIuY3NzKCJjdXJzb3IiLCJwb2ludGVyIik7bC4kaGVhZGVyLm9uKCI9CmNs
aWNrIixmdW5jdGlvbigpe2lmKGspe2s9M0RmYWxzZTtsLiRjb250ZW50LmhpZGUoKTttLnNldElj
b24oImZhLWV5ZS1zbGFzaD0KIil9ZWxzZXtrPTNEdHJ1ZTtsLiRjb250ZW50LmZhZGVJbigiZmFz
dCIpO20uc2V0SWNvbigiZmEtZXllIil9fSk7aWYoaS5leHBhPQpuZCl7bC4kaGVhZGVyLnRyaWdn
ZXIoImNsaWNrIil9dGhpcy50YWJsZS5hZGQobC4kZWwpO3RoaXMudGFibGUuYXBwZW5kKGkuaWQ9
Cil9LF9hZGRSb3c6ZnVuY3Rpb24oaSl7dmFyIGw9M0RpLmlkO3ZhciBqPTNEdGhpcy5fY3JlYXRl
RmllbGQoaSk7dGhpcy5hcHAuZj0KaWVsZF9saXN0W2xdPTNEajt2YXIgaz0zRG5ldyBmKHRoaXMu
YXBwLHtsYWJlbDppLmxhYmVsLGRlZmF1bHR2YWx1ZTppLmRlZmF1PQpsdHZhbHVlLG9wdGlvbmFs
Omkub3B0aW9uYWwsaGVscDppLmhlbHAsZmllbGQ6an0pO3RoaXMuYXBwLmVsZW1lbnRfbGlzdFts
XT0KPTNEazt0aGlzLnRhYmxlLmFkZChrLiRlbCk7dGhpcy50YWJsZS5hcHBlbmQobCk7aWYoaS5o
aWRkZW4pe3RoaXMudGFibGUuZ2V0PQoobCkuaGlkZSgpfXJldHVybiBqfSxfY3JlYXRlRmllbGQ6
ZnVuY3Rpb24oaSl7dmFyIGo9M0RudWxsO3N3aXRjaChpLnR5cGUpe2M9CmFzZSJ0ZXh0IjpqPTNE
dGhpcy5fZmllbGRUZXh0KGkpO2JyZWFrO2Nhc2Uic2VsZWN0IjpqPTNEdGhpcy5fZmllbGRTZWxl
Y3QoaT0KKTticmVhaztjYXNlImRhdGEiOmo9M0R0aGlzLl9maWVsZERhdGEoaSk7YnJlYWs7Y2Fz
ZSJkYXRhX2NvbGxlY3Rpb24iOmo9M0R0PQpoaXMuX2ZpZWxkRGF0YShpKTticmVhaztjYXNlImRh
dGFfY29sdW1uIjppLmVycm9yX3RleHQ9M0QiTWlzc2luZyBjb2x1bW5zIGk9Cm4gcmVmZXJlbmNl
ZCBkYXRhc2V0LiI7aj0zRHRoaXMuX2ZpZWxkU2VsZWN0KGkpO2JyZWFrO2Nhc2UiaGlkZGVuIjpq
PTNEdGhpcz0KLl9maWVsZEhpZGRlbihpKTticmVhaztjYXNlImhpZGRlbl9kYXRhIjpqPTNEdGhp
cy5fZmllbGRIaWRkZW4oaSk7YnJlYWs7Y2FzPQplImludGVnZXIiOmo9M0R0aGlzLl9maWVsZFNs
aWRlcihpKTticmVhaztjYXNlImZsb2F0IjpqPTNEdGhpcy5fZmllbGRTbGlkZXI9CihpKTticmVh
aztjYXNlImJvb2xlYW4iOmo9M0R0aGlzLl9maWVsZEJvb2xlYW4oaSk7YnJlYWs7Y2FzZSJnZW5v
bWVidWlsZCI6aT0KLnNlYXJjaGFibGU9M0R0cnVlO2o9M0R0aGlzLl9maWVsZFNlbGVjdChpKTti
cmVhaztjYXNlImRyaWxsX2Rvd24iOmo9M0R0aGlzPQouX2ZpZWxkRHJpbGxkb3duKGkpO2JyZWFr
O2Nhc2UiYmFzZXVybCI6aj0zRHRoaXMuX2ZpZWxkSGlkZGVuKGkpO2JyZWFrO2RlZmE9CnVsdDp0
aGlzLmFwcC5pbmNvbXBhdGlibGU9M0R0cnVlO2lmKGkub3B0aW9ucyl7aj0zRHRoaXMuX2ZpZWxk
U2VsZWN0KGkpfWVscz0KZXtqPTNEdGhpcy5fZmllbGRUZXh0KGkpfWNvbnNvbGUuZGVidWcoInRv
b2xzLWZvcm06Ol9hZGRSb3coKSA6IEF1dG8gbWF0Y2hlPQpkIGZpZWxkIHR5cGUgKCIraS50eXBl
KyIpLiIpfWlmKGkudmFsdWUhPTNEPTNEdW5kZWZpbmVkKXtqLnZhbHVlKGkudmFsdWUpfXI9CmV0
dXJuIGp9LF9maWVsZERhdGE6ZnVuY3Rpb24oaSl7aWYodGhpcy5hcHAud29ya2Zsb3cpe3ZhciBr
PTNEZS50ZXh0aWZ5KGkuZT0KeHRlbnNpb25zLnRvU3RyaW5nKCkpO2kuaW5mbz0zRCJEYXRhIGlu
cHV0ICciK2kubmFtZSsiJyAoIitrKyIpIjtyZXR1cm4gdGhpPQpzLl9maWVsZEhpZGRlbihpKX12
YXIgaj0zRHRoaXM7cmV0dXJuIG5ldyBhLlZpZXcodGhpcy5hcHAse2lkOiJmaWVsZC0iK2kuaWQ9
CixleHRlbnNpb25zOmkuZXh0ZW5zaW9ucyxtdWx0aXBsZTppLm11bHRpcGxlLHR5cGU6aS50eXBl
LGRhdGE6aS5vcHRpb25zLG9uYz0KaGFuZ2U6ZnVuY3Rpb24oKXtqLmFwcC50cmlnZ2VyKCJyZWZy
ZXNoIil9fSl9LF9maWVsZFNlbGVjdDpmdW5jdGlvbihqKXtpZih0PQpoaXMuYXBwLndvcmtmbG93
JiZqLmlzX2R5bmFtaWMpe2lmKCFlLnZhbGlkYXRlKGoudmFsdWUpKXtqLnZhbHVlPTNEIiJ9cmV0
dXI9Cm4gdGhpcy5fZmllbGRUZXh0KGopfXZhciBsPTNEW107Zm9yKHZhciBtIGluIGoub3B0aW9u
cyl7dmFyIG49M0RqLm9wdGlvbnNbbT0KXTtsLnB1c2goe2xhYmVsOm5bMF0sdmFsdWU6blsxXX0p
fXZhciBvPTNEaC5TZWxlY3Q7c3dpdGNoKGouZGlzcGxheSl7Y2FzZSJjPQpoZWNrYm94ZXMiOm89
M0RoLkNoZWNrYm94O2JyZWFrO2Nhc2UicmFkaW8iOm89M0RoLlJhZGlvO2JyZWFrfXZhciBrPTNE
dGhpczs9CnJldHVybiBuZXcgby5WaWV3KHtpZDoiZmllbGQtIitqLmlkLGRhdGE6bCxlcnJvcl90
ZXh0OmouZXJyb3JfdGV4dHx8Ik5vIG9wdD0KaW9ucyBhdmFpbGFibGUiLG11bHRpcGxlOmoubXVs
dGlwbGUsc2VhcmNoYWJsZTpqLnNlYXJjaGFibGUsb25jaGFuZ2U6ZnVuY3RpPQpvbigpe2suYXBw
LnRyaWdnZXIoInJlZnJlc2giKX19KX0sX2ZpZWxkRHJpbGxkb3duOmZ1bmN0aW9uKGkpe3ZhciBq
PTNEdGhpczs9CnJldHVybiBuZXcgaC5EcmlsbGRvd24uVmlldyh7aWQ6ImZpZWxkLSIraS5pZCxk
YXRhOmkub3B0aW9ucyxkaXNwbGF5OmkuZGlzcD0KbGF5LG9uY2hhbmdlOmZ1bmN0aW9uKCl7ai5h
cHAudHJpZ2dlcigicmVmcmVzaCIpfX0pfSxfZmllbGRUZXh0OmZ1bmN0aW9uKGkpPQp7dmFyIGo9
M0R0aGlzO3JldHVybiBuZXcgaC5JbnB1dCh7aWQ6ImZpZWxkLSIraS5pZCxhcmVhOmkuYXJlYSxv
bmNoYW5nZTpmdW49CmN0aW9uKCl7ai5hcHAudHJpZ2dlcigicmVmcmVzaCIpfX0pfSxfZmllbGRT
bGlkZXI6ZnVuY3Rpb24oaSl7dmFyIGo9M0R0aGlzOz0KcmV0dXJuIG5ldyBoLlNsaWRlci5WaWV3
KHtpZDoiZmllbGQtIitpLmlkLHByZWNpc2U6aS50eXBlPTNEPTNEImZsb2F0IixtaW46PQppLm1p
bixtYXg6aS5tYXgsb25jaGFuZ2U6ZnVuY3Rpb24oKXtqLmFwcC50cmlnZ2VyKCJyZWZyZXNoIil9
fSl9LF9maWVsZEhpZGQ9CmVuOmZ1bmN0aW9uKGkpe3JldHVybiBuZXcgaC5IaWRkZW4oe2lkOiJm
aWVsZC0iK2kuaWQsaW5mbzppLmluZm99KX0sX2ZpZWxkQj0Kb29sZWFuOmZ1bmN0aW9uKGkpe3Zh
ciBqPTNEdGhpcztyZXR1cm4gbmV3IGguUmFkaW9CdXR0b24uVmlldyh7aWQ6ImZpZWxkLSIrPQpp
LmlkLGRhdGE6W3tsYWJlbDoiWWVzIix2YWx1ZToidHJ1ZSJ9LHtsYWJlbDoiTm8iLHZhbHVlOiJm
YWxzZSJ9XSxvbmNoYW5nZTo9CmZ1bmN0aW9uKCl7ai5hcHAudHJpZ2dlcigicmVmcmVzaCIpfX0p
fX0pO3JldHVybntWaWV3Omd9fSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorZGVmaW5l
KFsidXRpbHMvdXRpbHMiLCJtdmMvdWkvdWktdGFibGUiLCJtdmMvdWkvdWktbWlzYyIsIm12Yy91
aS91aS1wb3J0bGU9CnQiLCJtdmMvdG9vbHMvdG9vbHMtcmVwZWF0IiwibXZjL3Rvb2xzL3Rvb2xz
LXNlbGVjdC1jb250ZW50IiwibXZjL3Rvb2xzL3Rvbz0KbHMtaW5wdXQiXSxmdW5jdGlvbihlLGIs
aCxkLGMsYSxmKXt2YXIgZz0zREJhY2tib25lLlZpZXcuZXh0ZW5kKHtpbml0aWFsaXplPQo6ZnVu
Y3Rpb24oaixpKXt0aGlzLmFwcD0zRGo7dGhpcy5pbnB1dHM9M0RpLmlucHV0cztpLmNsc190cj0z
RCJzZWN0aW9uLXJvdyI9Cjt0aGlzLnRhYmxlPTNEbmV3IGIuVmlldyhpKTt0aGlzLnNldEVsZW1l
bnQodGhpcy50YWJsZS4kZWwpO3RoaXMucmVuZGVyKCl9LD0KcmVuZGVyOmZ1bmN0aW9uKCl7dGhp
cy50YWJsZS5kZWxBbGwoKTtmb3IodmFyIGogaW4gdGhpcy5pbnB1dHMpe3RoaXMuYWRkKHRoPQpp
cy5pbnB1dHNbal0pfX0sYWRkOmZ1bmN0aW9uKGspe3ZhciBqPTNEdGhpczt2YXIgaT0zRGpRdWVy
eS5leHRlbmQodHJ1ZSx7fSw9CmspO2kuaWQ9M0RrLmlkPTNEZS51dWlkKCk7dGhpcy5hcHAuaW5w
dXRfbGlzdFtpLmlkXT0zRGk7dmFyIGw9M0RpLnR5cGU7c3dpdD0KY2gobCl7Y2FzZSJjb25kaXRp
b25hbCI6dGhpcy5fYWRkQ29uZGl0aW9uYWwoaSk7YnJlYWs7Y2FzZSJyZXBlYXQiOnRoaXMuX2Fk
PQpkUmVwZWF0KGkpO2JyZWFrO2Nhc2Uic2VjdGlvbiI6dGhpcy5fYWRkU2VjdGlvbihpKTticmVh
aztkZWZhdWx0OnRoaXMuX2FkZFI9Cm93KGkpfX0sX2FkZENvbmRpdGlvbmFsOmZ1bmN0aW9uKGop
e3ZhciBrPTNEdGhpcztqLnRlc3RfcGFyYW0uaWQ9M0RqLmlkO3Zhcj0KIG49M0R0aGlzLl9hZGRS
b3coai50ZXN0X3BhcmFtKTtuLm9wdGlvbnMub25jaGFuZ2U9M0RmdW5jdGlvbih3KXt2YXIgdj0z
RGsuPQphcHAudHJlZS5tYXRjaENhc2Uoaix3KTtmb3IodmFyIHUgaW4gai5jYXNlcyl7dmFyIHE9
M0RqLmNhc2VzW3VdO3ZhciB0PTNEai49CmlkKyItc2VjdGlvbi0iK3U7dmFyIHA9M0RrLnRhYmxl
LmdldCh0KTt2YXIgcz0zRGZhbHNlO2Zvcih2YXIgciBpbiBxLmlucHV0cz0KKXtpZighcS5pbnB1
dHNbcl0uaGlkZGVuKXtzPTNEdHJ1ZTticmVha319aWYodT0zRD0zRHYmJnMpe3AuZmFkZUluKCJm
YXN0Iil9PQplbHNle3AuaGlkZSgpfX1rLmFwcC50cmlnZ2VyKCJyZWZyZXNoIil9O2Zvcih2YXIg
bSBpbiBqLmNhc2VzKXt2YXIgbD0zRGouaWQ9CisiLXNlY3Rpb24tIittO3ZhciBvPTNEbmV3IGco
dGhpcy5hcHAse2lucHV0czpqLmNhc2VzW21dLmlucHV0cyxjbHM6InVpLXRhYj0KbGUtcGxhaW4i
fSk7by4kZWwuYWRkQ2xhc3MoInVpLXRhYmxlLWZvcm0tc2VjdGlvbiIpO3RoaXMudGFibGUuYWRk
KG8uJGVsKTt0PQpoaXMudGFibGUuYXBwZW5kKGwpfW4udHJpZ2dlcigiY2hhbmdlIil9LF9hZGRS
ZXBlYXQ6ZnVuY3Rpb24ocCl7dmFyIHM9M0R0aGk9CnM7dmFyIHE9M0QwO2Z1bmN0aW9uIG4oaSx1
KXt2YXIgdD0zRHAuaWQrIi1zZWN0aW9uLSIrKHErKyk7dmFyIHY9M0RudWxsO2lmKD0KdSl7dj0z
RGZ1bmN0aW9uKCl7bC5kZWwodCk7bC5yZXRpdGxlKHAudGl0bGUpO3MuYXBwLnRyaWdnZXIoInJl
ZnJlc2giKX19dmFyPQogdz0zRG5ldyBnKHMuYXBwLHtpbnB1dHM6aSxjbHM6InVpLXRhYmxlLXBs
YWluIn0pO2wuYWRkKHtpZDp0LHRpdGxlOnAudGl0bGU9CiwkZWw6dy4kZWwsb25kZWw6dn0pO2wu
cmV0aXRsZShwLnRpdGxlKX12YXIgbD0zRG5ldyBjLlZpZXcoe3RpdGxlX25ldzpwLnRpdD0KbGUs
bWF4OnAubWF4LG9ubmV3OmZ1bmN0aW9uKCl7bihwLmlucHV0cyx0cnVlKTtzLmFwcC50cmlnZ2Vy
KCJyZWZyZXNoIil9fSk7PQp2YXIgaj0zRHAubWluO3ZhciByPTNEXy5zaXplKHAuY2FjaGUpO2Zv
cih2YXIgbT0zRDA7bTxNYXRoLm1heChyLGopO20rKyl7dmE9CnIgbz0zRG51bGw7aWYobTxyKXtv
PTNEcC5jYWNoZVttXX1lbHNle289M0RwLmlucHV0c31uKG8sbT49M0RqKX12YXIgaz0zRG5ldz0K
IGYodGhpcy5hcHAse2xhYmVsOnAudGl0bGUsaGVscDpwLmhlbHAsZmllbGQ6bH0pO2suJGVsLmFk
ZENsYXNzKCJ1aS10YWJsZS1mPQpvcm0tc2VjdGlvbiIpO3RoaXMudGFibGUuYWRkKGsuJGVsKTt0
aGlzLnRhYmxlLmFwcGVuZChwLmlkKX0sX2FkZFNlY3Rpb246ZnU9Cm5jdGlvbihpKXt2YXIgaj0z
RHRoaXM7dmFyIG49M0RuZXcgZyhqLmFwcCx7aW5wdXRzOmkuaW5wdXRzLGNsczoidWktdGFibGUt
cD0KbGFpbiJ9KTt2YXIgbT0zRG5ldyBoLkJ1dHRvbkljb24oe2ljb246ImZhLWV5ZS1zbGFzaCIs
dG9vbHRpcDoiU2hvdy9oaWRlIHNlPQpjdGlvbiIsY2xzOiJ1aS1idXR0b24taWNvbi1wbGFpbiJ9
KTt2YXIgbD0zRG5ldyBkLlZpZXcoe3RpdGxlOmkubGFiZWwsY2xzOiI9CnVpLXBvcnRsZXQtc2Vj
dGlvbiIsb3BlcmF0aW9uczp7YnV0dG9uX3Zpc2libGU6bX19KTtsLmFwcGVuZChuLiRlbCk7dmFy
IGs9Cj0zRGZhbHNlO2wuJGNvbnRlbnQuaGlkZSgpO2wuJGhlYWRlci5jc3MoImN1cnNvciIsInBv
aW50ZXIiKTtsLiRoZWFkZXIub24oIj0KY2xpY2siLGZ1bmN0aW9uKCl7aWYoayl7az0zRGZhbHNl
O2wuJGNvbnRlbnQuaGlkZSgpO20uc2V0SWNvbigiZmEtZXllLXNsYXNoPQoiKX1lbHNle2s9M0R0
cnVlO2wuJGNvbnRlbnQuZmFkZUluKCJmYXN0Iik7bS5zZXRJY29uKCJmYS1leWUiKX19KTtpZihp
LmV4cGE9Cm5kKXtsLiRoZWFkZXIudHJpZ2dlcigiY2xpY2siKX10aGlzLnRhYmxlLmFkZChsLiRl
bCk7dGhpcy50YWJsZS5hcHBlbmQoaS5pZD0KKX0sX2FkZFJvdzpmdW5jdGlvbihpKXt2YXIgbD0z
RGkuaWQ7dmFyIGo9M0R0aGlzLl9jcmVhdGVGaWVsZChpKTt0aGlzLmFwcC5mPQppZWxkX2xpc3Rb
bF09M0RqO3ZhciBrPTNEbmV3IGYodGhpcy5hcHAse2xhYmVsOmkubGFiZWwsZGVmYXVsdHZhbHVl
OmkuZGVmYXU9Cmx0dmFsdWUsb3B0aW9uYWw6aS5vcHRpb25hbCxoZWxwOmkuaGVscCxmaWVsZDpq
fSk7dGhpcy5hcHAuZWxlbWVudF9saXN0W2xdPQo9M0RrO3RoaXMudGFibGUuYWRkKGsuJGVsKTt0
aGlzLnRhYmxlLmFwcGVuZChsKTtpZihpLmhpZGRlbil7dGhpcy50YWJsZS5nZXQ9CihsKS5oaWRl
KCl9cmV0dXJuIGp9LF9jcmVhdGVGaWVsZDpmdW5jdGlvbihpKXt2YXIgaj0zRG51bGw7c3dpdGNo
KGkudHlwZSl7Yz0KYXNlInRleHQiOmo9M0R0aGlzLl9maWVsZFRleHQoaSk7YnJlYWs7Y2FzZSJz
ZWxlY3QiOmo9M0R0aGlzLl9maWVsZFNlbGVjdChpPQopO2JyZWFrO2Nhc2UiZGF0YSI6aj0zRHRo
aXMuX2ZpZWxkRGF0YShpKTticmVhaztjYXNlImRhdGFfY29sbGVjdGlvbiI6aj0zRHQ9Cmhpcy5f
ZmllbGREYXRhKGkpO2JyZWFrO2Nhc2UiZGF0YV9jb2x1bW4iOmkuZXJyb3JfdGV4dD0zRCJNaXNz
aW5nIGNvbHVtbnMgaT0KbiByZWZlcmVuY2VkIGRhdGFzZXQuIjtqPTNEdGhpcy5fZmllbGRTZWxl
Y3QoaSk7YnJlYWs7Y2FzZSJoaWRkZW4iOmo9M0R0aGlzPQouX2ZpZWxkSGlkZGVuKGkpO2JyZWFr
O2Nhc2UiaGlkZGVuX2RhdGEiOmo9M0R0aGlzLl9maWVsZEhpZGRlbihpKTticmVhaztjYXM9CmUi
aW50ZWdlciI6aj0zRHRoaXMuX2ZpZWxkU2xpZGVyKGkpO2JyZWFrO2Nhc2UiZmxvYXQiOmo9M0R0
aGlzLl9maWVsZFNsaWRlcj0KKGkpO2JyZWFrO2Nhc2UiYm9vbGVhbiI6aj0zRHRoaXMuX2ZpZWxk
Qm9vbGVhbihpKTticmVhaztjYXNlImdlbm9tZWJ1aWxkIjppPQouc2VhcmNoYWJsZT0zRHRydWU7
aj0zRHRoaXMuX2ZpZWxkU2VsZWN0KGkpO2JyZWFrO2Nhc2UiZHJpbGxfZG93biI6aj0zRHRoaXM9
Ci5fZmllbGREcmlsbGRvd24oaSk7YnJlYWs7Y2FzZSJiYXNldXJsIjpqPTNEdGhpcy5fZmllbGRI
aWRkZW4oaSk7YnJlYWs7ZGVmYT0KdWx0OnRoaXMuYXBwLmluY29tcGF0aWJsZT0zRHRydWU7aWYo
aS5vcHRpb25zKXtqPTNEdGhpcy5fZmllbGRTZWxlY3QoaSl9ZWxzPQple2o9M0R0aGlzLl9maWVs
ZFRleHQoaSl9Y29uc29sZS5kZWJ1ZygidG9vbHMtZm9ybTo6X2FkZFJvdygpIDogQXV0byBtYXRj
aGU9CmQgZmllbGQgdHlwZSAoIitpLnR5cGUrIikuIil9aWYoaS52YWx1ZSE9M0Q9M0R1bmRlZmlu
ZWQpe2oudmFsdWUoaS52YWx1ZSl9cj0KZXR1cm4gan0sX2ZpZWxkRGF0YTpmdW5jdGlvbihpKXtp
ZighdGhpcy5hcHAub3B0aW9ucy5pc19keW5hbWljKXtpLmluZm89M0QiPQpEYXRhIGlucHV0ICci
K2kubmFtZSsiJyAoIitlLnRleHRpZnkoaS5leHRlbnNpb25zLnRvU3RyaW5nKCkpKyIpIjtpLnZh
bHVlPQo9M0RudWxsO3JldHVybiB0aGlzLl9maWVsZEhpZGRlbihpKX12YXIgaj0zRHRoaXM7cmV0
dXJuIG5ldyBhLlZpZXcodGhpcy5hcHA9Cix7aWQ6ImZpZWxkLSIraS5pZCxleHRlbnNpb25zOmku
ZXh0ZW5zaW9ucyxtdWx0aXBsZTppLm11bHRpcGxlLHR5cGU6aS50eXBlLD0KZGF0YTppLm9wdGlv
bnMsb25jaGFuZ2U6ZnVuY3Rpb24oKXtqLmFwcC50cmlnZ2VyKCJyZWZyZXNoIil9fSl9LF9maWVs
ZFNlbGVjPQp0OmZ1bmN0aW9uKGope2lmKCF0aGlzLmFwcC5vcHRpb25zLmlzX2R5bmFtaWMmJmou
aXNfZHluYW1pYyl7cmV0dXJuIHRoaXMuX2Y9CmllbGRUZXh0KGopfXZhciBsPTNEW107Zm9yKHZh
ciBtIGluIGoub3B0aW9ucyl7dmFyIG49M0RqLm9wdGlvbnNbbV07bC5wdXNoKD0Ke2xhYmVsOm5b
MF0sdmFsdWU6blsxXX0pfXZhciBvPTNEaC5TZWxlY3Q7c3dpdGNoKGouZGlzcGxheSl7Y2FzZSJj
aGVja2JveGVzPQoiOm89M0RoLkNoZWNrYm94O2JyZWFrO2Nhc2UicmFkaW8iOm89M0RoLlJhZGlv
O2JyZWFrfXZhciBrPTNEdGhpcztyZXR1cm4gbmU9Cncgby5WaWV3KHtpZDoiZmllbGQtIitqLmlk
LGRhdGE6bCxlcnJvcl90ZXh0OmouZXJyb3JfdGV4dHx8Ik5vIG9wdGlvbnMgYXZhaT0KbGFibGUi
LG11bHRpcGxlOmoubXVsdGlwbGUsc2VhcmNoYWJsZTpqLnNlYXJjaGFibGUsb25jaGFuZ2U6ZnVu
Y3Rpb24oKXtrLmFwPQpwLnRyaWdnZXIoInJlZnJlc2giKX19KX0sX2ZpZWxkRHJpbGxkb3duOmZ1
bmN0aW9uKGkpe2lmKCF0aGlzLmFwcC5vcHRpb25zLmk9CnNfZHluYW1pYyYmaS5pc19keW5hbWlj
KXtyZXR1cm4gdGhpcy5fZmllbGRUZXh0KGkpfXZhciBqPTNEdGhpcztyZXR1cm4gbmV3ID0KaC5E
cmlsbGRvd24uVmlldyh7aWQ6ImZpZWxkLSIraS5pZCxkYXRhOmkub3B0aW9ucyxkaXNwbGF5Omku
ZGlzcGxheSxvbmNoYW5nPQplOmZ1bmN0aW9uKCl7ai5hcHAudHJpZ2dlcigicmVmcmVzaCIpfX0p
fSxfZmllbGRUZXh0OmZ1bmN0aW9uKGkpe2lmKGkub3B0aW89Cm5zKXtpLmFyZWE9M0RpLm11bHRp
cGxlO2lmKCFlLnZhbGlkYXRlKGkudmFsdWUpKXtpLnZhbHVlPTNEIiJ9ZWxzZXtpZihpLnZhbD0K
dWUgaW5zdGFuY2VvZiBBcnJheSl7aS52YWx1ZT0zRHZhbHVlLnRvU3RyaW5nKCl9ZWxzZXtpLnZh
bHVlPTNEU3RyaW5nKGkudmFsPQp1ZSkucmVwbGFjZSgvW1xbXF0nIlxzXS9nLCIiKTtpZihpLm11
bHRpcGxlKXtpLnZhbHVlPTNEaS52YWx1ZS5yZXBsYWNlKC8sL2c9CiwiXG4iKX19fX12YXIgaj0z
RHRoaXM7cmV0dXJuIG5ldyBoLklucHV0KHtpZDoiZmllbGQtIitpLmlkLGFyZWE6aS5hcmVhLG9u
Yz0KaGFuZ2U6ZnVuY3Rpb24oKXtqLmFwcC50cmlnZ2VyKCJyZWZyZXNoIil9fSl9LF9maWVsZFNs
aWRlcjpmdW5jdGlvbihpKXt2YXIgPQpqPTNEdGhpcztyZXR1cm4gbmV3IGguU2xpZGVyLlZpZXco
e2lkOiJmaWVsZC0iK2kuaWQscHJlY2lzZTppLnR5cGU9M0Q9M0QiZmw9Cm9hdCIsbWluOmkubWlu
LG1heDppLm1heCxvbmNoYW5nZTpmdW5jdGlvbigpe2ouYXBwLnRyaWdnZXIoInJlZnJlc2giKX19
KX0sXz0KZmllbGRIaWRkZW46ZnVuY3Rpb24oaSl7cmV0dXJuIG5ldyBoLkhpZGRlbih7aWQ6ImZp
ZWxkLSIraS5pZCxpbmZvOmkuaW5mb30pPQp9LF9maWVsZEJvb2xlYW46ZnVuY3Rpb24oaSl7dmFy
IGo9M0R0aGlzO3JldHVybiBuZXcgaC5SYWRpb0J1dHRvbi5WaWV3KHtpZDo9CiJmaWVsZC0iK2ku
aWQsZGF0YTpbe2xhYmVsOiJZZXMiLHZhbHVlOiJ0cnVlIn0se2xhYmVsOiJObyIsdmFsdWU6ImZh
bHNlIn1dLD0Kb25jaGFuZ2U6ZnVuY3Rpb24oKXtqLmFwcC50cmlnZ2VyKCJyZWZyZXNoIil9fSl9
fSk7cmV0dXJue1ZpZXc6Z319KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpkaWZmIC1y
IDhhNzA0NTc5MmM3ZmU0OGE5OTI5NTc3MDRlNTFlMzEzZDMyZTZjZGQgLXIgMGY3Mzc0ODVjYjdm
NWQ3NTU5NWU5OGE9CmI4ZjhkYzAyYmEzNjk5NzZmIHN0YXRpYy9zY3JpcHRzL3BhY2tlZC9tdmMv
dG9vbHMvdG9vbHMtdHJlZS5qcwotLS0gYS9zdGF0aWMvc2NyaXB0cy9wYWNrZWQvbXZjL3Rvb2xz
L3Rvb2xzLXRyZWUuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvcGFja2VkL212Yy90b29scy90b29s
cy10cmVlLmpzCkBAIC0xLDEgKzEsMSBAQAotZGVmaW5lKFsidXRpbHMvdXRpbHMiXSxmdW5jdGlv
bihhKXtyZXR1cm4gQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHtpbml0aWFsaXo9CmU6ZnVuY3Rpb24o
Yil7dGhpcy5hcHA9M0RifSxmaW5hbGl6ZTpmdW5jdGlvbihnKXt2YXIgYj0zRHRoaXM7dGhpcy5t
YXBfZGljdD0KPTNEe307aWYoIXRoaXMuYXBwLnNlY3Rpb24pe3JldHVybnt9fWc9M0RnfHx7fTt2
YXIgZj0zRHt9O3ZhciBlPTNEe307dGhpcy5fPQppdGVyYXRlKHRoaXMuYXBwLnNlY3Rpb24uJGVs
LGUpO2Z1bmN0aW9uIGQoaixpLGgpe2Zbal09M0RoO2IubWFwX2RpY3Rbal09M0Q9Cml9ZnVuY3Rp
b24gYyhwLHMpe2Zvcih2YXIgbiBpbiBzKXt2YXIgaz0zRHNbbl07aWYoay5pbnB1dCl7dmFyIHU9
M0RrLmlucHV0Oz0KdmFyIG89M0RwO2lmKHAhPTNEIiIpe28rPTNEInwifW8rPTNEdS5uYW1lO3N3
aXRjaCh1LnR5cGUpe2Nhc2UicmVwZWF0Ijp2YXIgPQpqPTNEInNlY3Rpb24tIjt2YXIgeD0zRFtd
O3ZhciByPTNEbnVsbDtmb3IodmFyIHcgaW4gayl7dmFyIHE9M0R3LmluZGV4T2Yoaik9CjtpZihx
IT0zRC0xKXtxKz0zRGoubGVuZ3RoO3gucHVzaChwYXJzZUludCh3LnN1YnN0cihxKSkpO2lmKCFy
KXtyPTNEdy5zdWJzdD0KcigwLHEpfX19eC5zb3J0KGZ1bmN0aW9uKHksaSl7cmV0dXJuIHktaX0p
O3ZhciBuPTNEMDtmb3IodmFyIGwgaW4geCl7YyhvKyJfPQoiK24rKyxrW3IreFtsXV0pfWJyZWFr
O2Nhc2UiY29uZGl0aW9uYWwiOnZhciB2PTNEYi5hcHAuZmllbGRfbGlzdFt1LmlkXS52YWw9CnVl
KCk7aWYoZ1t1LnRlc3RfcGFyYW0udHlwZV0pe3Y9M0RnW3UudGVzdF9wYXJhbS50eXBlXSh2KX1k
KG8rInwiK3UudGVzdF9wYT0KcmFtLm5hbWUsdS5pZCx2KTt2YXIgaD0zRGIubWF0Y2hDYXNlKHUs
dik7aWYoaCE9M0QtMSl7YyhvLHNbdS5pZCsiLXNlY3Rpb24tPQoiK2hdKX1icmVhaztjYXNlInNl
Y3Rpb24iOmMoIiIsayk7YnJlYWs7ZGVmYXVsdDp2YXIgdD0zRGIuYXBwLmZpZWxkX2xpc3RbdS49
CmlkXTtpZih0JiZ0LnZhbHVlKXt2YXIgdj0zRHQudmFsdWUoKTtpZihnW3UudHlwZV0pe3Y9M0Rn
W3UudHlwZV0odil9aWYoIXQucz0Ka2lwfHxiLmFwcC53b3JrZmxvdyl7aWYodC52YWxpZGF0ZSYm
IXQudmFsaWRhdGUoKSl7dj0zRG51bGx9aWYodS5pZ25vcmU9M0Q9Cj0zRD0zRHVuZGVmaW5lZHx8
KHYhPTNEPTNEbnVsbCYmdS5pZ25vcmUhPTNEdikpe2Qobyx1LmlkLHYpO2lmKHUucGF5bG9hZCl7
Zj0Kb3IodmFyIG0gaW4gdS5wYXlsb2FkKXtkKG0sdS5pZCx1LnBheWxvYWRbbV0pfX19fX19fX19
YygiIixlKTtyZXR1cm4gZn0sbWF0PQpjaDpmdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5tYXBfZGlj
dCYmdGhpcy5tYXBfZGljdFtiXX0sbWF0Y2hDYXNlOmZ1bmN0aW9uKGI9CixkKXtpZihiLnRlc3Rf
cGFyYW0udHlwZT0zRD0zRCJib29sZWFuIil7aWYoZD0zRD0zRCJ0cnVlIil7ZD0zRGIudGVzdF9w
YXJhbT0KLnRydWV2YWx1ZXx8InRydWUifWVsc2V7ZD0zRGIudGVzdF9wYXJhbS5mYWxzZXZhbHVl
fHwiZmFsc2UifX1mb3IodmFyIGMgaW4gPQpiLmNhc2VzKXtpZihiLmNhc2VzW2NdLnZhbHVlPTNE
PTNEZCl7cmV0dXJuIGN9fXJldHVybiAtMX0sbWF0Y2hNb2RlbDpmdW5jdGk9Cm9uKGQsZil7dmFy
IGI9M0R7fTt2YXIgYz0zRHRoaXM7ZnVuY3Rpb24gZShnLHApe2Zvcih2YXIgbSBpbiBwKXt2YXIg
az0zRHBbbT0KXTt2YXIgbj0zRGsubmFtZTtpZihnIT0zRCIiKXtuPTNEZysifCIrbn1zd2l0Y2go
ay50eXBlKXtjYXNlInJlcGVhdCI6Zm9yKHZhPQpyIGwgaW4gay5jYWNoZSl7ZShuKyJfIitsLGsu
Y2FjaGVbbF0pfWJyZWFrO2Nhc2UiY29uZGl0aW9uYWwiOnZhciBxPTNEay50ZXM9CnRfcGFyYW0m
JmsudGVzdF9wYXJhbS52YWx1ZTt2YXIgaD0zRGMubWF0Y2hDYXNlKGsscSk7aWYoaCE9M0QtMSl7
ZShuLGsuY2FzZT0Kc1toXS5pbnB1dHMpfWJyZWFrO2RlZmF1bHQ6dmFyIG89M0RjLm1hcF9kaWN0
W25dO2lmKG8pe2YobyxrKX19fX1lKCIiLGQuaW5wPQp1dHMpO3JldHVybiBifSxtYXRjaFJlc3Bv
bnNlOmZ1bmN0aW9uKGQpe3ZhciBiPTNEe307dmFyIGM9M0R0aGlzO2Z1bmN0aW9uIGU9CihsLGop
e2lmKHR5cGVvZiBqPTNEPTNEPTNEInN0cmluZyIpe3ZhciBnPTNEYy5tYXBfZGljdFtsXTtpZihn
KXtiW2ddPTNEan19ZT0KbHNle2Zvcih2YXIgaCBpbiBqKXt2YXIgZj0zRGg7aWYobCE9M0Q9M0Qi
Iil7dmFyIGs9M0QifCI7aWYoaiBpbnN0YW5jZW9mIEFyPQpyYXkpe2s9M0QiXyJ9Zj0zRGwraytm
fWUoZixqW2hdKX19fWUoIiIsZCk7cmV0dXJuIGJ9LF9pdGVyYXRlOmZ1bmN0aW9uKGQsZSk9Cnt2
YXIgYj0zRHRoaXM7dmFyIGM9M0QkKGQpLmNoaWxkcmVuKCk7Yy5lYWNoKGZ1bmN0aW9uKCl7dmFy
IGg9M0R0aGlzO3ZhciBnPQo9M0QkKGgpLmF0dHIoImlkIik7aWYoJChoKS5oYXNDbGFzcygic2Vj
dGlvbi1yb3ciKSl7ZVtnXT0zRHt9O3ZhciBmPTNEYi5hcHA9Ci5pbnB1dF9saXN0W2ddO2lmKGYp
e2VbZ109M0R7aW5wdXQ6Zn19Yi5faXRlcmF0ZShoLGVbZ10pfWVsc2V7Yi5faXRlcmF0ZShoLD0K
ZSl9fSl9fSl9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitkZWZpbmUoWyJ1dGlscy91
dGlscyJdLGZ1bmN0aW9uKGEpe3JldHVybiBCYWNrYm9uZS5Nb2RlbC5leHRlbmQoe2luaXRpYWxp
ej0KZTpmdW5jdGlvbihiKXt0aGlzLmFwcD0zRGJ9LGZpbmFsaXplOmZ1bmN0aW9uKGcpe3ZhciBi
PTNEdGhpczt0aGlzLm1hcF9kaWN0PQo9M0R7fTtpZighdGhpcy5hcHAuc2VjdGlvbil7cmV0dXJu
e319Zz0zRGd8fHt9O3ZhciBmPTNEe307dmFyIGU9M0R7fTt0aGlzLl89Cml0ZXJhdGUodGhpcy5h
cHAuc2VjdGlvbi4kZWwsZSk7ZnVuY3Rpb24gZChqLGksaCl7ZltqXT0zRGg7Yi5tYXBfZGljdFtq
XT0zRD0KaX1mdW5jdGlvbiBjKHAscyl7Zm9yKHZhciBuIGluIHMpe3ZhciBrPTNEc1tuXTtpZihr
LmlucHV0KXt2YXIgdT0zRGsuaW5wdXQ7PQp2YXIgbz0zRHA7aWYocCE9M0QiIil7bys9M0QifCJ9
bys9M0R1Lm5hbWU7c3dpdGNoKHUudHlwZSl7Y2FzZSJyZXBlYXQiOnZhciA9Cmo9M0Qic2VjdGlv
bi0iO3ZhciB4PTNEW107dmFyIHI9M0RudWxsO2Zvcih2YXIgdyBpbiBrKXt2YXIgcT0zRHcuaW5k
ZXhPZihqKT0KO2lmKHEhPTNELTEpe3ErPTNEai5sZW5ndGg7eC5wdXNoKHBhcnNlSW50KHcuc3Vi
c3RyKHEpKSk7aWYoIXIpe3I9M0R3LnN1YnN0PQpyKDAscSl9fX14LnNvcnQoZnVuY3Rpb24oeSxp
KXtyZXR1cm4geS1pfSk7dmFyIG49M0QwO2Zvcih2YXIgbCBpbiB4KXtjKG8rIl89CiIrbisrLGtb
cit4W2xdXSl9YnJlYWs7Y2FzZSJjb25kaXRpb25hbCI6dmFyIHY9M0RiLmFwcC5maWVsZF9saXN0
W3UuaWRdLnZhbD0KdWUoKTtpZihnW3UudGVzdF9wYXJhbS50eXBlXSl7dj0zRGdbdS50ZXN0X3Bh
cmFtLnR5cGVdKHYpfWQobysifCIrdS50ZXN0X3BhPQpyYW0ubmFtZSx1LmlkLHYpO3ZhciBoPTNE
Yi5tYXRjaENhc2UodSx2KTtpZihoIT0zRC0xKXtjKG8sc1t1LmlkKyItc2VjdGlvbi09CiIraF0p
fWJyZWFrO2Nhc2Uic2VjdGlvbiI6YygiIixrKTticmVhaztkZWZhdWx0OnZhciB0PTNEYi5hcHAu
ZmllbGRfbGlzdFt1Lj0KaWRdO2lmKHQmJnQudmFsdWUpe3ZhciB2PTNEdC52YWx1ZSgpO2lmKGdb
dS50eXBlXSl7dj0zRGdbdS50eXBlXSh2KX1pZighdC5zPQpraXB8fGIuYXBwLm9wdGlvbnMuc2Vu
ZF9hbGwpe2lmKHQudmFsaWRhdGUmJiF0LnZhbGlkYXRlKCkpe3Y9M0RudWxsfWlmKHUuaWc9Cm5v
cmU9M0Q9M0Q9M0R1bmRlZmluZWR8fCh2IT0zRD0zRG51bGwmJnUuaWdub3JlIT0zRHYpKXtkKG8s
dS5pZCx2KTtpZih1LnBheT0KbG9hZCl7Zm9yKHZhciBtIGluIHUucGF5bG9hZCl7ZChtLHUuaWQs
dS5wYXlsb2FkW21dKX19fX19fX19fWMoIiIsZSk7cmV0dXJuPQogZn0sbWF0Y2g6ZnVuY3Rpb24o
Yil7cmV0dXJuIHRoaXMubWFwX2RpY3QmJnRoaXMubWFwX2RpY3RbYl19LG1hdGNoQ2FzZTpmdW49
CmN0aW9uKGIsZCl7aWYoYi50ZXN0X3BhcmFtLnR5cGU9M0Q9M0QiYm9vbGVhbiIpe2lmKGQ9M0Q9
M0QidHJ1ZSIpe2Q9M0RiLnRlcz0KdF9wYXJhbS50cnVldmFsdWV8fCJ0cnVlIn1lbHNle2Q9M0Ri
LnRlc3RfcGFyYW0uZmFsc2V2YWx1ZXx8ImZhbHNlIn19Zm9yKHZhPQpyIGMgaW4gYi5jYXNlcyl7
aWYoYi5jYXNlc1tjXS52YWx1ZT0zRD0zRGQpe3JldHVybiBjfX1yZXR1cm4gLTF9LG1hdGNoTW9k
ZWw9CjpmdW5jdGlvbihkLGYpe3ZhciBiPTNEe307dmFyIGM9M0R0aGlzO2Z1bmN0aW9uIGUoZyxw
KXtmb3IodmFyIG0gaW4gcCl7dmFyID0Kaz0zRHBbbV07dmFyIG49M0RrLm5hbWU7aWYoZyE9M0Qi
Iil7bj0zRGcrInwiK259c3dpdGNoKGsudHlwZSl7Y2FzZSJyZXBlYXQiPQo6Zm9yKHZhciBsIGlu
IGsuY2FjaGUpe2UobisiXyIrbCxrLmNhY2hlW2xdKX1icmVhaztjYXNlImNvbmRpdGlvbmFsIjp2
YXIgcT0KPTNEay50ZXN0X3BhcmFtJiZrLnRlc3RfcGFyYW0udmFsdWU7dmFyIGg9M0RjLm1hdGNo
Q2FzZShrLHEpO2lmKGghPTNELTEpe2UoPQpuLGsuY2FzZXNbaF0uaW5wdXRzKX1icmVhaztkZWZh
dWx0OnZhciBvPTNEYy5tYXBfZGljdFtuXTtpZihvKXtmKG8sayl9fX19ZSg9CiIiLGQuaW5wdXRz
KTtyZXR1cm4gYn0sbWF0Y2hSZXNwb25zZTpmdW5jdGlvbihkKXt2YXIgYj0zRHt9O3ZhciBjPTNE
dGhpcztmdT0KbmN0aW9uIGUobCxqKXtpZih0eXBlb2Ygaj0zRD0zRD0zRCJzdHJpbmciKXt2YXIg
Zz0zRGMubWFwX2RpY3RbbF07aWYoZyl7YltnPQpdPTNEan19ZWxzZXtmb3IodmFyIGggaW4gail7
dmFyIGY9M0RoO2lmKGwhPTNEPTNEIiIpe3ZhciBrPTNEInwiO2lmKGogaW5zdGE9Cm5jZW9mIEFy
cmF5KXtrPTNEIl8ifWY9M0RsK2srZn1lKGYsaltoXSl9fX1lKCIiLGQpO3JldHVybiBifSxfaXRl
cmF0ZTpmdW5jdD0KaW9uKGQsZSl7dmFyIGI9M0R0aGlzO3ZhciBjPTNEJChkKS5jaGlsZHJlbigp
O2MuZWFjaChmdW5jdGlvbigpe3ZhciBoPTNEdGhpPQpzO3ZhciBnPTNEJChoKS5hdHRyKCJpZCIp
O2lmKCQoaCkuaGFzQ2xhc3MoInNlY3Rpb24tcm93Iikpe2VbZ109M0R7fTt2YXIgZj0KPTNEYi5h
cHAuaW5wdXRfbGlzdFtnXTtpZihmKXtlW2ddPTNEe2lucHV0OmZ9fWIuX2l0ZXJhdGUoaCxlW2dd
KX1lbHNle2IuX2l0PQplcmF0ZShoLGUpfX0pfX0pfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQoKZGlmZiAtciA4YTcwNDU3OTJjN2ZlNDhhOTkyOTU3NzA0ZTUxZTMxM2QzMmU2Y2RkIC1y
IDBmNzM3NDg1Y2I3ZjVkNzU1OTVlOThhPQpiOGY4ZGMwMmJhMzY5OTc2ZiBzdGF0aWMvc2NyaXB0
cy9wYWNrZWQvbXZjL3VwbG9hZC91cGxvYWQtdmlldy5qcwotLS0gYS9zdGF0aWMvc2NyaXB0cy9w
YWNrZWQvbXZjL3VwbG9hZC91cGxvYWQtdmlldy5qcworKysgYi9zdGF0aWMvc2NyaXB0cy9wYWNr
ZWQvbXZjL3VwbG9hZC91cGxvYWQtdmlldy5qcwpAQCAtMSwxICsxLDEgQEAKLWRlZmluZShbInV0
aWxzL3V0aWxzIiwibXZjL3VwbG9hZC91cGxvYWQtYnV0dG9uIiwibXZjL3VwbG9hZC91cGxvYWQt
bW9kZWwiPQosIm12Yy91cGxvYWQvdXBsb2FkLXJvdyIsIm12Yy91cGxvYWQvdXBsb2FkLWZ0cCIs
Im12Yy91aS91aS1wb3BvdmVyIiwibXZjL3U9CmkvdWktbW9kYWwiLCJ1dGlscy91cGxvYWRib3gi
XSxmdW5jdGlvbihmLGUsYyxiLGcsZCxhKXtyZXR1cm4gQmFja2JvbmUuVmlldz0KLmV4dGVuZCh7
b3B0aW9uczp7bmdpbnhfdXBsb2FkX3BhdGg6IiJ9LG1vZGFsOm51bGwsdWlfYnV0dG9uOm51bGws
dXBsb2FkYm94PQo6bnVsbCxjdXJyZW50X2hpc3Rvcnk6bnVsbCx1cGxvYWRfc2l6ZTowLGxpc3Rf
ZXh0ZW5zaW9uczpbXSxsaXN0X2dlbm9tZXM6W109CixhdXRvOntpZDoiYXV0byIsdGV4dDoiQXV0
by1kZXRlY3QiLGRlc2NyaXB0aW9uOiJUaGlzIHN5c3RlbSB3aWxsIHRyeSB0byBkZT0KdGVjdCB0
aGUgZmlsZSB0eXBlIGF1dG9tYXRpY2FsbHkuIElmIHlvdXIgZmlsZSBpcyBub3QgZGV0ZWN0ZWQg
cHJvcGVybHkgYXMgPQpvbmUgb2YgdGhlIGtub3duIGZvcm1hdHMsIGl0IG1vc3QgbGlrZWx5IG1l
YW5zIHRoYXQgaXQgaGFzIHNvbWUgZm9ybWF0IHByb2I9CmxlbXMgKGUuZy4sIGRpZmZlcmVudCBu
dW1iZXIgb2YgY29sdW1ucyBvbiBkaWZmZXJlbnQgcm93cykuIFlvdSBjYW4gc3RpbGwgYz0Kb2Vy
Y2UgdGhlIHN5c3RlbSB0byBzZXQgeW91ciBkYXRhIHRvIHRoZSBmb3JtYXQgeW91IHRoaW5rIGl0
IHNob3VsZCBiZS4gIFlvPQp1IGNhbiBhbHNvIHVwbG9hZCBjb21wcmVzc2VkIGZpbGVzLCB3aGlj
aCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgZGVjb21wcmVzc2U9CmQuIn0sY29sbGVjdGlvbjpuZXcg
Yy5Db2xsZWN0aW9uKCksZnRwOm51bGwsY291bnRlcjp7YW5ub3VuY2U6MCxzdWNjZXNzOjAsZT0K
cnJvcjowLHJ1bm5pbmc6MCxyZXNldDpmdW5jdGlvbigpe3RoaXMuYW5ub3VuY2U9M0R0aGlzLnN1
Y2Nlc3M9M0R0aGlzLmVycm9yPQo9M0R0aGlzLnJ1bm5pbmc9M0QwfX0saW5pdGlhbGl6ZTpmdW5j
dGlvbihpKXt2YXIgaD0zRHRoaXM7aWYoaSl7dGhpcy5vcHRpb249CnM9M0RfLmRlZmF1bHRzKGks
dGhpcy5vcHRpb25zKX10aGlzLnVpX2J1dHRvbj0zRG5ldyBlLk1vZGVsKHtpY29uOiJmYS11cGxv
YT0KZCIsdG9vbHRpcDoiRG93bmxvYWQgZnJvbSBVUkwgb3IgdXBsb2FkIGZpbGVzIGZyb20gZGlz
ayIsbGFiZWw6IkxvYWQgRGF0YSIsPQpvbmNsaWNrOmZ1bmN0aW9uKGope2lmKGope2oucHJldmVu
dERlZmF1bHQoKTtoLnNob3coKX19LG9udW5sb2FkOmZ1bmN0aW9uKCk9CntpZihoLmNvdW50ZXIu
cnVubmluZz4wKXtyZXR1cm4iU2V2ZXJhbCB1cGxvYWRzIGFyZSBzdGlsbCBwcm9jZXNzaW5nLiJ9
fX0pOz0KJCgiLndpdGgtdXBsb2FkLWJ1dHRvbiIpLmFwcGVuZCgobmV3IGUuVmlldyh0aGlzLnVp
X2J1dHRvbikpLiRlbCk7dmFyIGg9M0R0PQpoaXM7Zi5nZXQoe3VybDpnYWxheHlfY29uZmlnLnJv
b3QrImFwaS9kYXRhdHlwZXM/ZXh0ZW5zaW9uX29ubHk9M0RGYWxzZSIsc3U9CmNjZXNzOmZ1bmN0
aW9uKGope2ZvcihrZXkgaW4gail7aC5saXN0X2V4dGVuc2lvbnMucHVzaCh7aWQ6altrZXldLmV4
dGVuc2lvbj0KLHRleHQ6altrZXldLmV4dGVuc2lvbixkZXNjcmlwdGlvbjpqW2tleV0uZGVzY3Jp
cHRpb24sZGVzY3JpcHRpb25fdXJsOmpba2V5PQpdLmRlc2NyaXB0aW9uX3VybH0pfWgubGlzdF9l
eHRlbnNpb25zLnNvcnQoZnVuY3Rpb24obCxrKXtyZXR1cm4gbC5pZD5rLmlkPzE9CjpsLmlkPGsu
aWQ/LTE6MH0pO2lmKCFoLm9wdGlvbnMuZGF0YXR5cGVzX2Rpc2FibGVfYXV0byl7aC5saXN0X2V4
dGVuc2lvbnMudT0KbnNoaWZ0KGguYXV0byl9fX0pO2YuZ2V0KHt1cmw6Z2FsYXh5X2NvbmZpZy5y
b290KyJhcGkvZ2Vub21lcyIsc3VjY2VzczpmdW5jPQp0aW9uKGope2ZvcihrZXkgaW4gail7aC5s
aXN0X2dlbm9tZXMucHVzaCh7aWQ6altrZXldWzFdLHRleHQ6altrZXldWzBdfSl9aC49Cmxpc3Rf
Z2Vub21lcy5zb3J0KGZ1bmN0aW9uKGwsayl7cmV0dXJuIGwuaWQ+ay5pZD8xOmwuaWQ8ay5pZD8t
MTowfSl9fSk7dGhpcz0KLmNvbGxlY3Rpb24ub24oInJlbW92ZSIsZnVuY3Rpb24oail7aC5fZXZl
bnRSZW1vdmUoail9KTt0aGlzLmNvbGxlY3Rpb24ub24oPQoiY2hhbmdlOmdlbm9tZSIsZnVuY3Rp
b24oayl7dmFyIGo9M0RrLmdldCgiZ2Vub21lIik7aC5jb2xsZWN0aW9uLmVhY2goZnVuY3Q9Cmlv
bihsKXtpZihsLmdldCgic3RhdHVzIik9M0Q9M0QiaW5pdCImJmwuZ2V0KCJnZW5vbWUiKT0zRD0z
RCI/Iil7bC5zZXQoImdlbj0Kb21lIixqKX19KX0pfSxzaG93OmZ1bmN0aW9uKCl7dmFyIGg9M0R0
aGlzO2lmKCFHYWxheHkuY3Vyckhpc3RvcnlQYW5lbHx8IUdhPQpsYXh5LmN1cnJIaXN0b3J5UGFu
ZWwubW9kZWwpe3dpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aC5zaG93KCl9LDUwMCk7cmU9
CnR1cm59aWYoIXRoaXMubW9kYWwpe3ZhciBoPTNEdGhpczt0aGlzLm1vZGFsPTNEbmV3IGEuVmll
dyh7dGl0bGU6IkRvd25sb2FkID0KZGF0YSBkaXJlY3RseSBmcm9tIHdlYiBvciB1cGxvYWQgZmls
ZXMgZnJvbSB5b3VyIGRpc2siLGJvZHk6dGhpcy5fdGVtcGxhdGUoPQoidXBsb2FkLWJveCIsInVw
bG9hZC1pbmZvIiksYnV0dG9uczp7IkNob29zZSBsb2NhbCBmaWxlIjpmdW5jdGlvbigpe2gudXBs
b2E9CmRib3guc2VsZWN0KCl9LCJDaG9vc2UgRlRQIGZpbGUiOmZ1bmN0aW9uKCl7aC5fZXZlbnRG
dHAoKX0sIlBhc3RlL0ZldGNoIGRhdD0KYSI6ZnVuY3Rpb24oKXtoLl9ldmVudENyZWF0ZSgpfSxT
dGFydDpmdW5jdGlvbigpe2guX2V2ZW50U3RhcnQoKX0sUGF1c2U6ZnVuPQpjdGlvbigpe2guX2V2
ZW50U3RvcCgpfSxSZXNldDpmdW5jdGlvbigpe2guX2V2ZW50UmVzZXQoKX0sQ2xvc2U6ZnVuY3Rp
b24oKXs9CmgubW9kYWwuaGlkZSgpfSx9LGhlaWdodDoiNDAwIix3aWR0aDoiOTAwIixjbG9zaW5n
X2V2ZW50czp0cnVlfSk7dGhpcy5zZXRFbD0KZW1lbnQoIiN1cGxvYWQtYm94Iik7dmFyIGg9M0R0
aGlzO3RoaXMudXBsb2FkYm94PTNEdGhpcy4kZWwudXBsb2FkYm94KHthbm5vPQp1bmNlOmZ1bmN0
aW9uKGosayxsKXtoLl9ldmVudEFubm91bmNlKGosayxsKX0saW5pdGlhbGl6ZTpmdW5jdGlvbihq
LGssbCl7cmU9CnR1cm4gaC5fZXZlbnRJbml0aWFsaXplKGosayxsKX0scHJvZ3Jlc3M6ZnVuY3Rp
b24oaixrLGwpe2guX2V2ZW50UHJvZ3Jlc3Moaj0KLGssbCl9LHN1Y2Nlc3M6ZnVuY3Rpb24oaixr
LGwpe2guX2V2ZW50U3VjY2VzcyhqLGssbCl9LGVycm9yOmZ1bmN0aW9uKGosayxsPQope2guX2V2
ZW50RXJyb3IoaixrLGwpfSxjb21wbGV0ZTpmdW5jdGlvbigpe2guX2V2ZW50Q29tcGxldGUoKX19
KTt2YXIgaT0zRHQ9Cmhpcy5tb2RhbC5nZXRCdXR0b24oIkNob29zZSBGVFAgZmlsZSIpO3RoaXMu
ZnRwPTNEbmV3IGQuVmlldyh7dGl0bGU6IkZUUCBmaT0KbGVzIixjb250YWluZXI6aX0pfXRoaXMu
bW9kYWwuc2hvdygpO3RoaXMuX3VwZGF0ZVVzZXIoKTt0aGlzLl91cGRhdGVTY3JlZW4oPQopfSxf
ZXZlbnRSZW1vdmU6ZnVuY3Rpb24oaSl7dmFyIGg9M0RpLmdldCgic3RhdHVzIik7aWYoaD0zRD0z
RCJzdWNjZXNzIil7dGg9CmlzLmNvdW50ZXIuc3VjY2Vzcy0tfWVsc2V7aWYoaD0zRD0zRCJlcnJv
ciIpe3RoaXMuY291bnRlci5lcnJvci0tfWVsc2V7dGhpcz0KLmNvdW50ZXIuYW5ub3VuY2UtLX19
dGhpcy5fdXBkYXRlU2NyZWVuKCk7dGhpcy51cGxvYWRib3gucmVtb3ZlKGkuaWQpfSxfZXZlPQpu
dEFubm91bmNlOmZ1bmN0aW9uKGgsaSxrKXt0aGlzLmNvdW50ZXIuYW5ub3VuY2UrKzt0aGlzLl91
cGRhdGVTY3JlZW4oKTt2YXI9CiBqPTNEbmV3IGIodGhpcyx7aWQ6aCxmaWxlX25hbWU6aS5uYW1l
LGZpbGVfc2l6ZTppLnNpemUsZmlsZV9tb2RlOmkubW9kZSxmaT0KbGVfcGF0aDppLnBhdGh9KTt0
aGlzLmNvbGxlY3Rpb24uYWRkKGoubW9kZWwpOyQodGhpcy5lbCkuZmluZCgidGJvZHk6Zmlyc3Qi
PQopLmFwcGVuZChqLiRlbCk7ai5yZW5kZXIoKX0sX2V2ZW50SW5pdGlhbGl6ZTpmdW5jdGlvbiht
LGoscyl7dmFyIGs9M0R0aGlzLmM9Cm9sbGVjdGlvbi5nZXQobSk7ay5zZXQoInN0YXR1cyIsInJ1
bm5pbmciKTt2YXIgbz0zRGsuZ2V0KCJmaWxlX25hbWUiKTt2YXIgbj0KPTNEay5nZXQoImZpbGVf
cGF0aCIpO3ZhciBoPTNEay5nZXQoImZpbGVfbW9kZSIpO3ZhciBwPTNEay5nZXQoImV4dGVuc2lv
biIpPQo7dmFyIHI9M0RrLmdldCgiZ2Vub21lIik7dmFyIHE9M0RrLmdldCgidXJsX3Bhc3RlIik7
dmFyIGw9M0RrLmdldCgic3BhY2VfdG89Cl90YWJzIik7dmFyIGk9M0RrLmdldCgidG9fcG9zaXhf
bGluZXMiKTtpZighcSYmIShqLnNpemU+MCkpe3JldHVybiBudWxsfXRoaT0Kcy51cGxvYWRib3gu
Y29uZmlndXJlKHt1cmw6dGhpcy5vcHRpb25zLm5naW54X3VwbG9hZF9wYXRofSk7aWYoaD0zRD0z
RCJsb2NhPQpsIil7dGhpcy51cGxvYWRib3guY29uZmlndXJlKHtwYXJhbW5hbWU6ImZpbGVzXzB8
ZmlsZV9kYXRhIn0pfWVsc2V7dGhpcy51cGw9Cm9hZGJveC5jb25maWd1cmUoe3BhcmFtbmFtZTpu
dWxsfSl9dG9vbF9pbnB1dD0zRHt9O2lmKGg9M0Q9M0QibmV3Iil7dG9vbF9pbj0KcHV0WyJmaWxl
c18wfHVybF9wYXN0ZSJdPTNEcX1pZihoPTNEPTNEImZ0cCIpe3Rvb2xfaW5wdXRbImZpbGVzXzB8
ZnRwX2ZpbGVzPQoiXT0zRG59dG9vbF9pbnB1dC5kYmtleT0zRHI7dG9vbF9pbnB1dC5maWxlX3R5
cGU9M0RwO3Rvb2xfaW5wdXRbImZpbGVzXzB8dHk9CnBlIl09M0QidXBsb2FkX2RhdGFzZXQiO3Rv
b2xfaW5wdXQuc3BhY2VfdG9fdGFicz0zRGw7dG9vbF9pbnB1dC50b19wb3NpeF9saT0KbmVzPTNE
aTtkYXRhPTNEe307ZGF0YS5oaXN0b3J5X2lkPTNEdGhpcy5jdXJyZW50X2hpc3Rvcnk7ZGF0YS50
b29sX2lkPTNEInVwPQpsb2FkMSI7ZGF0YS5pbnB1dHM9M0RKU09OLnN0cmluZ2lmeSh0b29sX2lu
cHV0KTtyZXR1cm4gZGF0YX0sX2V2ZW50UHJvZ3Jlc3M9CjpmdW5jdGlvbihpLGosaCl7dmFyIGs9
M0R0aGlzLmNvbGxlY3Rpb24uZ2V0KGkpO2suc2V0KCJwZXJjZW50YWdlIixoKTt0aGlzLj0KdWlf
YnV0dG9uLnNldCgicGVyY2VudGFnZSIsdGhpcy5fdXBsb2FkX3BlcmNlbnRhZ2UoaCxqLnNpemUp
KX0sX2V2ZW50U3VjY2VzPQpzOmZ1bmN0aW9uKGksaixsKXt2YXIgaz0zRHRoaXMuY29sbGVjdGlv
bi5nZXQoaSk7ay5zZXQoInBlcmNlbnRhZ2UiLDEwMCk7ay49CnNldCgic3RhdHVzIiwic3VjY2Vz
cyIpO3ZhciBoPTNEay5nZXQoImZpbGVfc2l6ZSIpO3RoaXMudWlfYnV0dG9uLnNldCgicGVyYz0K
ZW50YWdlIix0aGlzLl91cGxvYWRfcGVyY2VudGFnZSgxMDAsaCkpO3RoaXMudXBsb2FkX2NvbXBs
ZXRlZCs9M0RoKjEwMDt0aGlzPQouY291bnRlci5hbm5vdW5jZS0tO3RoaXMuY291bnRlci5zdWNj
ZXNzKys7dGhpcy5fdXBkYXRlU2NyZWVuKCk7R2FsYXh5LmN1cnI9Ckhpc3RvcnlQYW5lbC5yZWZy
ZXNoQ29udGVudHMoKX0sX2V2ZW50RXJyb3I6ZnVuY3Rpb24oaCxpLGspe3ZhciBqPTNEdGhpcy5j
bz0KbGxlY3Rpb24uZ2V0KGgpO2ouc2V0KCJwZXJjZW50YWdlIiwxMDApO2ouc2V0KCJzdGF0dXMi
LCJlcnJvciIpO2ouc2V0KCJpbmZvPQoiLGspO3RoaXMudWlfYnV0dG9uLnNldCgicGVyY2VudGFn
ZSIsdGhpcy5fdXBsb2FkX3BlcmNlbnRhZ2UoMTAwLGkuc2l6ZSkpO3Q9Cmhpcy51aV9idXR0b24u
c2V0KCJzdGF0dXMiLCJkYW5nZXIiKTt0aGlzLnVwbG9hZF9jb21wbGV0ZWQrPTNEaS5zaXplKjEw
MDt0aD0KaXMuY291bnRlci5hbm5vdW5jZS0tO3RoaXMuY291bnRlci5lcnJvcisrO3RoaXMuX3Vw
ZGF0ZVNjcmVlbigpfSxfZXZlbnRDb21wPQpsZXRlOmZ1bmN0aW9uKCl7dGhpcy5jb2xsZWN0aW9u
LmVhY2goZnVuY3Rpb24oaCl7aWYoaC5nZXQoInN0YXR1cyIpPTNEPTNEInE9CnVldWVkIil7aC5z
ZXQoInN0YXR1cyIsImluaXQiKX19KTt0aGlzLmNvdW50ZXIucnVubmluZz0zRDA7dGhpcy5fdXBk
YXRlU2NyZT0KZW4oKX0sX2V2ZW50RnRwOmZ1bmN0aW9uKCl7aWYoIXRoaXMuZnRwLnZpc2libGUp
e3RoaXMuZnRwLmVtcHR5KCk7dGhpcy5mdHAuPQphcHBlbmQoKG5ldyBnKHRoaXMpKS4kZWwpO3Ro
aXMuZnRwLnNob3coKX1lbHNle3RoaXMuZnRwLmhpZGUoKX19LF9ldmVudENyZWE9CnRlOmZ1bmN0
aW9uKCl7dGhpcy51cGxvYWRib3guYWRkKFt7bmFtZToiTmV3IEZpbGUiLHNpemU6MCxtb2RlOiJu
ZXcifV0pfSxfZT0KdmVudFN0YXJ0OmZ1bmN0aW9uKCl7aWYodGhpcy5jb3VudGVyLmFubm91bmNl
PTNEPTNEMHx8dGhpcy5jb3VudGVyLnJ1bm5pbmc+PQowKXtyZXR1cm59dmFyIGg9M0R0aGlzO3Ro
aXMudXBsb2FkX3NpemU9M0QwO3RoaXMudXBsb2FkX2NvbXBsZXRlZD0zRDA7dGhpcy49CmNvbGxl
Y3Rpb24uZWFjaChmdW5jdGlvbihpKXtpZihpLmdldCgic3RhdHVzIik9M0Q9M0QiaW5pdCIpe2ku
c2V0KCJzdGF0dXMiLD0KInF1ZXVlZCIpO2gudXBsb2FkX3NpemUrPTNEaS5nZXQoImZpbGVfc2l6
ZSIpfX0pO3RoaXMudWlfYnV0dG9uLnNldCgicGVyY2VuPQp0YWdlIiwwKTt0aGlzLnVpX2J1dHRv
bi5zZXQoInN0YXR1cyIsInN1Y2Nlc3MiKTt0aGlzLmNvdW50ZXIucnVubmluZz0zRHRoaXM9Ci5j
b3VudGVyLmFubm91bmNlO3RoaXMuX3VwZGF0ZVNjcmVlbigpO3RoaXMudXBsb2FkYm94LnN0YXJ0
KCl9LF9ldmVudFN0b3A6Zj0KdW5jdGlvbigpe2lmKHRoaXMuY291bnRlci5ydW5uaW5nPTNEPTNE
MCl7cmV0dXJufXRoaXMudWlfYnV0dG9uLnNldCgic3RhdHVzPQoiLCJpbmZvIik7dGhpcy51cGxv
YWRib3guc3RvcCgpOyQoIiN1cGxvYWQtaW5mbyIpLmh0bWwoIlF1ZXVlIHdpbGwgcGF1c2UgYWY9
CnRlciBjb21wbGV0aW5nIHRoZSBjdXJyZW50IGZpbGUuLi4iKX0sX2V2ZW50UmVzZXQ6ZnVuY3Rp
b24oKXtpZih0aGlzLmNvdW50ZT0Kci5ydW5uaW5nPTNEPTNEMCl7dGhpcy5jb2xsZWN0aW9uLnJl
c2V0KCk7dGhpcy5jb3VudGVyLnJlc2V0KCk7dGhpcy5fdXBkYXRlPQpTY3JlZW4oKTt0aGlzLnVw
bG9hZGJveC5yZXNldCgpO3RoaXMudWlfYnV0dG9uLnNldCgicGVyY2VudGFnZSIsMCl9fSxfdXBk
YXQ9CmVVc2VyOmZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50X3VzZXI9M0RHYWxheHkuY3VyclVzZXIu
Z2V0KCJpZCIpO3RoaXMuY3VycmVudD0KX2hpc3Rvcnk9M0RudWxsO2lmKHRoaXMuY3VycmVudF91
c2VyKXt0aGlzLmN1cnJlbnRfaGlzdG9yeT0zREdhbGF4eS5jdXJySGlzPQp0b3J5UGFuZWwubW9k
ZWwuZ2V0KCJpZCIpfX0sX3VwZGF0ZVNjcmVlbjpmdW5jdGlvbigpe2lmKHRoaXMuY291bnRlci5h
bm5vdW49CmNlPTNEPTNEMCl7aWYodGhpcy51cGxvYWRib3guY29tcGF0aWJsZSgpKXttZXNzYWdl
PTNEIllvdSBjYW4gRHJhZyAmIERyb3AgZj0KaWxlcyBpbnRvIHRoaXMgYm94LiJ9ZWxzZXttZXNz
YWdlPTNEIlVuZm9ydHVuYXRlbHksIHlvdXIgYnJvd3NlciBkb2VzIG5vdCBzPQp1cHBvcnQgbXVs
dGlwbGUgZmlsZSB1cGxvYWRzIG9yIGRyYWcmZHJvcC48YnI+U29tZSBzdXBwb3J0ZWQgYnJvd3Nl
cnMgYXJlOiA9CkZpcmVmb3ggNCssIENocm9tZSA3KywgSUUgMTArLCBPcGVyYSAxMisgb3IgU2Fm
YXJpIDYrLiJ9fWVsc2V7aWYodGhpcy5jb3VudD0KZXIucnVubmluZz0zRD0zRDApe21lc3NhZ2U9
M0QiWW91IGFkZGVkICIrdGhpcy5jb3VudGVyLmFubm91bmNlKyIgZmlsZShzKSB0PQpvIHRoZSBx
dWV1ZS4gQWRkIG1vcmUgZmlsZXMgb3IgY2xpY2sgJ1N0YXJ0JyB0byBwcm9jZWVkLiJ9ZWxzZXtt
ZXNzYWdlPTNEIlA9CmxlYXNlIHdhaXQuLi4iK3RoaXMuY291bnRlci5hbm5vdW5jZSsiIG91dCBv
ZiAiK3RoaXMuY291bnRlci5ydW5uaW5nKyIgcmVtYT0KaW5pbmcuIn19JCgiI3VwbG9hZC1pbmZv
IikuaHRtbChtZXNzYWdlKTtpZih0aGlzLmNvdW50ZXIucnVubmluZz0zRD0zRDAmJnRoPQppcy5j
b3VudGVyLmFubm91bmNlK3RoaXMuY291bnRlci5zdWNjZXNzK3RoaXMuY291bnRlci5lcnJvcj4w
KXt0aGlzLm1vZGFsLmU9Cm5hYmxlQnV0dG9uKCJSZXNldCIpfWVsc2V7dGhpcy5tb2RhbC5kaXNh
YmxlQnV0dG9uKCJSZXNldCIpfWlmKHRoaXMuY291bnRlcj0KLnJ1bm5pbmc9M0Q9M0QwJiZ0aGlz
LmNvdW50ZXIuYW5ub3VuY2U+MCl7dGhpcy5tb2RhbC5lbmFibGVCdXR0b24oIlN0YXJ0Iil9PQpl
bHNle3RoaXMubW9kYWwuZGlzYWJsZUJ1dHRvbigiU3RhcnQiKX1pZih0aGlzLmNvdW50ZXIucnVu
bmluZz4wKXt0aGlzLm1vZGE9CmwuZW5hYmxlQnV0dG9uKCJQYXVzZSIpfWVsc2V7dGhpcy5tb2Rh
bC5kaXNhYmxlQnV0dG9uKCJQYXVzZSIpfWlmKHRoaXMuY291bj0KdGVyLnJ1bm5pbmc9M0Q9M0Qw
KXt0aGlzLm1vZGFsLmVuYWJsZUJ1dHRvbigiQ2hvb3NlIGxvY2FsIGZpbGUiKTt0aGlzLm1vZGFs
PQouZW5hYmxlQnV0dG9uKCJDaG9vc2UgRlRQIGZpbGUiKTt0aGlzLm1vZGFsLmVuYWJsZUJ1dHRv
bigiUGFzdGUvRmV0Y2ggZGF0YSI9Cil9ZWxzZXt0aGlzLm1vZGFsLmRpc2FibGVCdXR0b24oIkNo
b29zZSBsb2NhbCBmaWxlIik7dGhpcy5tb2RhbC5kaXNhYmxlQnV0dD0Kb24oIkNob29zZSBGVFAg
ZmlsZSIpO3RoaXMubW9kYWwuZGlzYWJsZUJ1dHRvbigiUGFzdGUvRmV0Y2ggZGF0YSIpfWlmKHRo
aXMuPQpjdXJyZW50X3VzZXImJnRoaXMub3B0aW9ucy5mdHBfdXBsb2FkX2RpciYmdGhpcy5vcHRp
b25zLmZ0cF91cGxvYWRfc2l0ZSl7dGg9CmlzLm1vZGFsLnNob3dCdXR0b24oIkNob29zZSBGVFAg
ZmlsZSIpfWVsc2V7dGhpcy5tb2RhbC5oaWRlQnV0dG9uKCJDaG9vc2UgRj0KVFAgZmlsZSIpfWlm
KHRoaXMuY291bnRlci5hbm5vdW5jZSt0aGlzLmNvdW50ZXIuc3VjY2Vzcyt0aGlzLmNvdW50ZXIu
ZXJyb3I+PQowKXskKHRoaXMuZWwpLmZpbmQoIiN1cGxvYWQtdGFibGUiKS5zaG93KCl9ZWxzZXsk
KHRoaXMuZWwpLmZpbmQoIiN1cGxvYWQtdGE9CmJsZSIpLmhpZGUoKX19LF91cGxvYWRfcGVyY2Vu
dGFnZTpmdW5jdGlvbihoLGkpe3JldHVybih0aGlzLnVwbG9hZF9jb21wbGV0ZT0KZCsoaCppKSkv
dGhpcy51cGxvYWRfc2l6ZX0sX3RlbXBsYXRlOmZ1bmN0aW9uKGksaCl7cmV0dXJuJzxkaXYgaWQ9
M0QiJytpKyciPQogY2xhc3M9M0QidXBsb2FkLWJveCI+PHRhYmxlIGlkPTNEInVwbG9hZC10YWJs
ZSIgY2xhc3M9M0QidGFibGUgdGFibGUtc3RyaXA9CmVkIiBzdHlsZT0zRCJkaXNwbGF5OiBub25l
OyI+PHRoZWFkPjx0cj48dGg+TmFtZTwvdGg+PHRoPlNpemU8L3RoPjx0aD5UeXBlPD0KL3RoPjx0
aD5HZW5vbWU8L3RoPjx0aD5TZXR0aW5nczwvdGg+PHRoPlN0YXR1czwvdGg+PHRoPjwvdGg+PC90
cj48L3RoZWFkPjx0PQpib2R5PjwvdGJvZHk+PC90YWJsZT48L2Rpdj48aDYgaWQ9M0QiJytoKyci
IGNsYXNzPTNEInVwbG9hZC1pbmZvIj48L2g2Pid9fSk9Cn0pOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKK2RlZmluZShbInV0aWxzL3V0aWxzIiwibXZjL3VwbG9hZC91cGxvYWQtYnV0dG9u
IiwibXZjL3VwbG9hZC91cGxvYWQtbW9kZWwiPQosIm12Yy91cGxvYWQvdXBsb2FkLXJvdyIsIm12
Yy91cGxvYWQvdXBsb2FkLWZ0cCIsIm12Yy91aS91aS1wb3BvdmVyIiwibXZjL3U9CmkvdWktbW9k
YWwiLCJ1dGlscy91cGxvYWRib3giXSxmdW5jdGlvbihmLGUsYyxiLGcsZCxhKXtyZXR1cm4gQmFj
a2JvbmUuVmlldz0KLmV4dGVuZCh7b3B0aW9uczp7bmdpbnhfdXBsb2FkX3BhdGg6IiJ9LG1vZGFs
Om51bGwsdWlfYnV0dG9uOm51bGwsdXBsb2FkYm94PQo6bnVsbCxjdXJyZW50X2hpc3Rvcnk6bnVs
bCx1cGxvYWRfc2l6ZTowLGxpc3RfZXh0ZW5zaW9uczpbXSxsaXN0X2dlbm9tZXM6W109CixhdXRv
OntpZDoiYXV0byIsdGV4dDoiQXV0by1kZXRlY3QiLGRlc2NyaXB0aW9uOiJUaGlzIHN5c3RlbSB3
aWxsIHRyeSB0byBkZT0KdGVjdCB0aGUgZmlsZSB0eXBlIGF1dG9tYXRpY2FsbHkuIElmIHlvdXIg
ZmlsZSBpcyBub3QgZGV0ZWN0ZWQgcHJvcGVybHkgYXMgPQpvbmUgb2YgdGhlIGtub3duIGZvcm1h
dHMsIGl0IG1vc3QgbGlrZWx5IG1lYW5zIHRoYXQgaXQgaGFzIHNvbWUgZm9ybWF0IHByb2I9Cmxl
bXMgKGUuZy4sIGRpZmZlcmVudCBudW1iZXIgb2YgY29sdW1ucyBvbiBkaWZmZXJlbnQgcm93cyku
IFlvdSBjYW4gc3RpbGwgYz0Kb2VyY2UgdGhlIHN5c3RlbSB0byBzZXQgeW91ciBkYXRhIHRvIHRo
ZSBmb3JtYXQgeW91IHRoaW5rIGl0IHNob3VsZCBiZS4gIFlvPQp1IGNhbiBhbHNvIHVwbG9hZCBj
b21wcmVzc2VkIGZpbGVzLCB3aGljaCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgZGVjb21wcmVzc2U9
CmQuIn0sY29sbGVjdGlvbjpuZXcgYy5Db2xsZWN0aW9uKCksZnRwOm51bGwsY291bnRlcjp7YW5u
b3VuY2U6MCxzdWNjZXNzOjAsZT0KcnJvcjowLHJ1bm5pbmc6MCxyZXNldDpmdW5jdGlvbigpe3Ro
aXMuYW5ub3VuY2U9M0R0aGlzLnN1Y2Nlc3M9M0R0aGlzLmVycm9yPQo9M0R0aGlzLnJ1bm5pbmc9
M0QwfX0saW5pdGlhbGl6ZTpmdW5jdGlvbihpKXt2YXIgaD0zRHRoaXM7aWYoaSl7dGhpcy5vcHRp
b249CnM9M0RfLmRlZmF1bHRzKGksdGhpcy5vcHRpb25zKX10aGlzLnVpX2J1dHRvbj0zRG5ldyBl
Lk1vZGVsKHtpY29uOiJmYS11cGxvYT0KZCIsdG9vbHRpcDoiRG93bmxvYWQgZnJvbSBVUkwgb3Ig
dXBsb2FkIGZpbGVzIGZyb20gZGlzayIsbGFiZWw6IkxvYWQgRGF0YSIsPQpvbmNsaWNrOmZ1bmN0
aW9uKGope2lmKGope2oucHJldmVudERlZmF1bHQoKTtoLnNob3coKX19LG9udW5sb2FkOmZ1bmN0
aW9uKCk9CntpZihoLmNvdW50ZXIucnVubmluZz4wKXtyZXR1cm4iU2V2ZXJhbCB1cGxvYWRzIGFy
ZSBzdGlsbCBwcm9jZXNzaW5nLiJ9fX0pOz0KJCgiLndpdGgtdXBsb2FkLWJ1dHRvbiIpLmFwcGVu
ZCgobmV3IGUuVmlldyh0aGlzLnVpX2J1dHRvbikpLiRlbCk7dmFyIGg9M0R0PQpoaXM7Zi5nZXQo
e3VybDpnYWxheHlfY29uZmlnLnJvb3QrImFwaS9kYXRhdHlwZXM/ZXh0ZW5zaW9uX29ubHk9M0RG
YWxzZSIsc3U9CmNjZXNzOmZ1bmN0aW9uKGope2ZvcihrZXkgaW4gail7aC5saXN0X2V4dGVuc2lv
bnMucHVzaCh7aWQ6altrZXldLmV4dGVuc2lvbj0KLHRleHQ6altrZXldLmV4dGVuc2lvbixkZXNj
cmlwdGlvbjpqW2tleV0uZGVzY3JpcHRpb24sZGVzY3JpcHRpb25fdXJsOmpba2V5PQpdLmRlc2Ny
aXB0aW9uX3VybH0pfWgubGlzdF9leHRlbnNpb25zLnNvcnQoZnVuY3Rpb24obCxrKXtyZXR1cm4g
bC5pZD5rLmlkPzE9CjpsLmlkPGsuaWQ/LTE6MH0pO2lmKCFoLm9wdGlvbnMuZGF0YXR5cGVzX2Rp
c2FibGVfYXV0byl7aC5saXN0X2V4dGVuc2lvbnMudT0KbnNoaWZ0KGguYXV0byl9fX0pO2YuZ2V0
KHt1cmw6Z2FsYXh5X2NvbmZpZy5yb290KyJhcGkvZ2Vub21lcyIsc3VjY2VzczpmdW5jPQp0aW9u
KGope2ZvcihrZXkgaW4gail7aC5saXN0X2dlbm9tZXMucHVzaCh7aWQ6altrZXldWzFdLHRleHQ6
altrZXldWzBdfSl9aC49Cmxpc3RfZ2Vub21lcy5zb3J0KGZ1bmN0aW9uKGwsayl7cmV0dXJuIGwu
aWQ+ay5pZD8xOmwuaWQ8ay5pZD8tMTowfSl9fSk7dGhpcz0KLmNvbGxlY3Rpb24ub24oInJlbW92
ZSIsZnVuY3Rpb24oail7aC5fZXZlbnRSZW1vdmUoail9KTt0aGlzLmNvbGxlY3Rpb24ub24oPQoi
Y2hhbmdlOmdlbm9tZSIsZnVuY3Rpb24oayl7dmFyIGo9M0RrLmdldCgiZ2Vub21lIik7aC5jb2xs
ZWN0aW9uLmVhY2goZnVuY3Q9CmlvbihsKXtpZihsLmdldCgic3RhdHVzIik9M0Q9M0QiaW5pdCIm
JmwuZ2V0KCJnZW5vbWUiKT0zRD0zRCI/Iil7bC5zZXQoImdlbj0Kb21lIixqKX19KX0pfSxzaG93
OmZ1bmN0aW9uKCl7dmFyIGg9M0R0aGlzO2lmKCFHYWxheHkuY3Vyckhpc3RvcnlQYW5lbHx8IUdh
PQpsYXh5LmN1cnJIaXN0b3J5UGFuZWwubW9kZWwpe3dpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9u
KCl7aC5zaG93KCl9LDUwMCk7cmU9CnR1cm59aWYoIXRoaXMubW9kYWwpe3ZhciBoPTNEdGhpczt0
aGlzLm1vZGFsPTNEbmV3IGEuVmlldyh7dGl0bGU6IkRvd25sb2FkID0KZGF0YSBkaXJlY3RseSBm
cm9tIHdlYiBvciB1cGxvYWQgZmlsZXMgZnJvbSB5b3VyIGRpc2siLGJvZHk6dGhpcy5fdGVtcGxh
dGUoPQoidXBsb2FkLWJveCIsInVwbG9hZC1pbmZvIiksYnV0dG9uczp7IkNob29zZSBsb2NhbCBm
aWxlIjpmdW5jdGlvbigpe2gudXBsb2E9CmRib3guc2VsZWN0KCl9LCJDaG9vc2UgRlRQIGZpbGUi
OmZ1bmN0aW9uKCl7aC5fZXZlbnRGdHAoKX0sIlBhc3RlL0ZldGNoIGRhdD0KYSI6ZnVuY3Rpb24o
KXtoLl9ldmVudENyZWF0ZSgpfSxTdGFydDpmdW5jdGlvbigpe2guX2V2ZW50U3RhcnQoKX0sUGF1
c2U6ZnVuPQpjdGlvbigpe2guX2V2ZW50U3RvcCgpfSxSZXNldDpmdW5jdGlvbigpe2guX2V2ZW50
UmVzZXQoKX0sQ2xvc2U6ZnVuY3Rpb24oKXs9CmgubW9kYWwuaGlkZSgpfSx9LGhlaWdodDoiNDAw
Iix3aWR0aDoiOTAwIixjbG9zaW5nX2V2ZW50czp0cnVlfSk7dGhpcy5zZXRFbD0KZW1lbnQoIiN1
cGxvYWQtYm94Iik7dmFyIGg9M0R0aGlzO3RoaXMudXBsb2FkYm94PTNEdGhpcy4kZWwudXBsb2Fk
Ym94KHthbm5vPQp1bmNlOmZ1bmN0aW9uKGosayxsKXtoLl9ldmVudEFubm91bmNlKGosayxsKX0s
aW5pdGlhbGl6ZTpmdW5jdGlvbihqLGssbCl7cmU9CnR1cm4gaC5fZXZlbnRJbml0aWFsaXplKGos
ayxsKX0scHJvZ3Jlc3M6ZnVuY3Rpb24oaixrLGwpe2guX2V2ZW50UHJvZ3Jlc3Moaj0KLGssbCl9
LHN1Y2Nlc3M6ZnVuY3Rpb24oaixrLGwpe2guX2V2ZW50U3VjY2VzcyhqLGssbCl9LGVycm9yOmZ1
bmN0aW9uKGosayxsPQope2guX2V2ZW50RXJyb3IoaixrLGwpfSxjb21wbGV0ZTpmdW5jdGlvbigp
e2guX2V2ZW50Q29tcGxldGUoKX19KTt2YXIgaT0zRHQ9Cmhpcy5tb2RhbC5nZXRCdXR0b24oIkNo
b29zZSBGVFAgZmlsZSIpO3RoaXMuZnRwPTNEbmV3IGQuVmlldyh7dGl0bGU6IkZUUCBmaT0KbGVz
Iixjb250YWluZXI6aX0pfXRoaXMubW9kYWwuc2hvdygpO3RoaXMuX3VwZGF0ZVVzZXIoKTt0aGlz
Ll91cGRhdGVTY3JlZW4oPQopfSxfZXZlbnRSZW1vdmU6ZnVuY3Rpb24oaSl7dmFyIGg9M0RpLmdl
dCgic3RhdHVzIik7aWYoaD0zRD0zRCJzdWNjZXNzIil7dGg9CmlzLmNvdW50ZXIuc3VjY2Vzcy0t
fWVsc2V7aWYoaD0zRD0zRCJlcnJvciIpe3RoaXMuY291bnRlci5lcnJvci0tfWVsc2V7dGhpcz0K
LmNvdW50ZXIuYW5ub3VuY2UtLX19dGhpcy5fdXBkYXRlU2NyZWVuKCk7dGhpcy51cGxvYWRib3gu
cmVtb3ZlKGkuaWQpfSxfZXZlPQpudEFubm91bmNlOmZ1bmN0aW9uKGgsaSxrKXt0aGlzLmNvdW50
ZXIuYW5ub3VuY2UrKzt0aGlzLl91cGRhdGVTY3JlZW4oKTt2YXI9CiBqPTNEbmV3IGIodGhpcyx7
aWQ6aCxmaWxlX25hbWU6aS5uYW1lLGZpbGVfc2l6ZTppLnNpemUsZmlsZV9tb2RlOmkubW9kZSxm
aT0KbGVfcGF0aDppLnBhdGh9KTt0aGlzLmNvbGxlY3Rpb24uYWRkKGoubW9kZWwpOyQodGhpcy5l
bCkuZmluZCgidGJvZHk6Zmlyc3QiPQopLmFwcGVuZChqLiRlbCk7ai5yZW5kZXIoKX0sX2V2ZW50
SW5pdGlhbGl6ZTpmdW5jdGlvbihtLGoscyl7dmFyIGs9M0R0aGlzLmM9Cm9sbGVjdGlvbi5nZXQo
bSk7ay5zZXQoInN0YXR1cyIsInJ1bm5pbmciKTt2YXIgbz0zRGsuZ2V0KCJmaWxlX25hbWUiKTt2
YXIgbj0KPTNEay5nZXQoImZpbGVfcGF0aCIpO3ZhciBoPTNEay5nZXQoImZpbGVfbW9kZSIpO3Zh
ciBwPTNEay5nZXQoImV4dGVuc2lvbiIpPQo7dmFyIHI9M0RrLmdldCgiZ2Vub21lIik7dmFyIHE9
M0RrLmdldCgidXJsX3Bhc3RlIik7dmFyIGw9M0RrLmdldCgic3BhY2VfdG89Cl90YWJzIik7dmFy
IGk9M0RrLmdldCgidG9fcG9zaXhfbGluZXMiKTtpZighcSYmIShqLnNpemU+MCkpe3JldHVybiBu
dWxsfXRoaT0Kcy51cGxvYWRib3guY29uZmlndXJlKHt1cmw6dGhpcy5vcHRpb25zLm5naW54X3Vw
bG9hZF9wYXRofSk7aWYoaD0zRD0zRCJsb2NhPQpsIil7dGhpcy51cGxvYWRib3guY29uZmlndXJl
KHtwYXJhbW5hbWU6ImZpbGVzXzB8ZmlsZV9kYXRhIn0pfWVsc2V7dGhpcy51cGw9Cm9hZGJveC5j
b25maWd1cmUoe3BhcmFtbmFtZTpudWxsfSl9dG9vbF9pbnB1dD0zRHt9O2lmKGg9M0Q9M0QibmV3
Iil7dG9vbF9pbj0KcHV0WyJmaWxlc18wfHVybF9wYXN0ZSJdPTNEcX1pZihoPTNEPTNEImZ0cCIp
e3Rvb2xfaW5wdXRbImZpbGVzXzB8ZnRwX2ZpbGVzPQoiXT0zRG59dG9vbF9pbnB1dC5kYmtleT0z
RHI7dG9vbF9pbnB1dC5maWxlX3R5cGU9M0RwO3Rvb2xfaW5wdXRbImZpbGVzXzB8dHk9CnBlIl09
M0QidXBsb2FkX2RhdGFzZXQiO3Rvb2xfaW5wdXRbImZpbGVzXzB8c3BhY2VfdG9fdGFiIl09M0Rs
JiYiWWVzInx8bnVsbD0KO3Rvb2xfaW5wdXRbImZpbGVzXzB8dG9fcG9zaXhfbGluZXMiXT0zRGkm
JiJZZXMifHxudWxsO2RhdGE9M0R7fTtkYXRhLmhpc3RvPQpyeV9pZD0zRHRoaXMuY3VycmVudF9o
aXN0b3J5O2RhdGEudG9vbF9pZD0zRCJ1cGxvYWQxIjtkYXRhLmlucHV0cz0zREpTT04uc3Q9CnJp
bmdpZnkodG9vbF9pbnB1dCk7cmV0dXJuIGRhdGF9LF9ldmVudFByb2dyZXNzOmZ1bmN0aW9uKGks
aixoKXt2YXIgaz0zRHRoaT0Kcy5jb2xsZWN0aW9uLmdldChpKTtrLnNldCgicGVyY2VudGFnZSIs
aCk7dGhpcy51aV9idXR0b24uc2V0KCJwZXJjZW50YWdlIix0PQpoaXMuX3VwbG9hZF9wZXJjZW50
YWdlKGgsai5zaXplKSl9LF9ldmVudFN1Y2Nlc3M6ZnVuY3Rpb24oaSxqLGwpe3ZhciBrPTNEdGg9
CmlzLmNvbGxlY3Rpb24uZ2V0KGkpO2suc2V0KCJwZXJjZW50YWdlIiwxMDApO2suc2V0KCJzdGF0
dXMiLCJzdWNjZXNzIik7dmFyID0KaD0zRGsuZ2V0KCJmaWxlX3NpemUiKTt0aGlzLnVpX2J1dHRv
bi5zZXQoInBlcmNlbnRhZ2UiLHRoaXMuX3VwbG9hZF9wZXJjZW50PQphZ2UoMTAwLGgpKTt0aGlz
LnVwbG9hZF9jb21wbGV0ZWQrPTNEaCoxMDA7dGhpcy5jb3VudGVyLmFubm91bmNlLS07dGhpcy5j
b3U9Cm50ZXIuc3VjY2VzcysrO3RoaXMuX3VwZGF0ZVNjcmVlbigpO0dhbGF4eS5jdXJySGlzdG9y
eVBhbmVsLnJlZnJlc2hDb250ZW50cz0KKCl9LF9ldmVudEVycm9yOmZ1bmN0aW9uKGgsaSxrKXt2
YXIgaj0zRHRoaXMuY29sbGVjdGlvbi5nZXQoaCk7ai5zZXQoInBlcmNlPQpudGFnZSIsMTAwKTtq
LnNldCgic3RhdHVzIiwiZXJyb3IiKTtqLnNldCgiaW5mbyIsayk7dGhpcy51aV9idXR0b24uc2V0
KCJwZXI9CmNlbnRhZ2UiLHRoaXMuX3VwbG9hZF9wZXJjZW50YWdlKDEwMCxpLnNpemUpKTt0aGlz
LnVpX2J1dHRvbi5zZXQoInN0YXR1cyIsIj0KZGFuZ2VyIik7dGhpcy51cGxvYWRfY29tcGxldGVk
Kz0zRGkuc2l6ZSoxMDA7dGhpcy5jb3VudGVyLmFubm91bmNlLS07dGhpcy5jPQpvdW50ZXIuZXJy
b3IrKzt0aGlzLl91cGRhdGVTY3JlZW4oKX0sX2V2ZW50Q29tcGxldGU6ZnVuY3Rpb24oKXt0aGlz
LmNvbGxlY3Q9Cmlvbi5lYWNoKGZ1bmN0aW9uKGgpe2lmKGguZ2V0KCJzdGF0dXMiKT0zRD0zRCJx
dWV1ZWQiKXtoLnNldCgic3RhdHVzIiwiaW5pdD0KIil9fSk7dGhpcy5jb3VudGVyLnJ1bm5pbmc9
M0QwO3RoaXMuX3VwZGF0ZVNjcmVlbigpfSxfZXZlbnRGdHA6ZnVuY3Rpb24oKXtpPQpmKCF0aGlz
LmZ0cC52aXNpYmxlKXt0aGlzLmZ0cC5lbXB0eSgpO3RoaXMuZnRwLmFwcGVuZCgobmV3IGcodGhp
cykpLiRlbCk7dGg9CmlzLmZ0cC5zaG93KCl9ZWxzZXt0aGlzLmZ0cC5oaWRlKCl9fSxfZXZlbnRD
cmVhdGU6ZnVuY3Rpb24oKXt0aGlzLnVwbG9hZGJveD0KLmFkZChbe25hbWU6Ik5ldyBGaWxlIixz
aXplOjAsbW9kZToibmV3In1dKX0sX2V2ZW50U3RhcnQ6ZnVuY3Rpb24oKXtpZih0aGlzPQouY291
bnRlci5hbm5vdW5jZT0zRD0zRDB8fHRoaXMuY291bnRlci5ydW5uaW5nPjApe3JldHVybn12YXIg
aD0zRHRoaXM7dGhpcy49CnVwbG9hZF9zaXplPTNEMDt0aGlzLnVwbG9hZF9jb21wbGV0ZWQ9M0Qw
O3RoaXMuY29sbGVjdGlvbi5lYWNoKGZ1bmN0aW9uKGkpez0KaWYoaS5nZXQoInN0YXR1cyIpPTNE
PTNEImluaXQiKXtpLnNldCgic3RhdHVzIiwicXVldWVkIik7aC51cGxvYWRfc2l6ZSs9M0RpPQou
Z2V0KCJmaWxlX3NpemUiKX19KTt0aGlzLnVpX2J1dHRvbi5zZXQoInBlcmNlbnRhZ2UiLDApO3Ro
aXMudWlfYnV0dG9uLnNldCg9CiJzdGF0dXMiLCJzdWNjZXNzIik7dGhpcy5jb3VudGVyLnJ1bm5p
bmc9M0R0aGlzLmNvdW50ZXIuYW5ub3VuY2U7dGhpcy5fdXBkYT0KdGVTY3JlZW4oKTt0aGlzLnVw
bG9hZGJveC5zdGFydCgpfSxfZXZlbnRTdG9wOmZ1bmN0aW9uKCl7aWYodGhpcy5jb3VudGVyLnJ1
PQpubmluZz0zRD0zRDApe3JldHVybn10aGlzLnVpX2J1dHRvbi5zZXQoInN0YXR1cyIsImluZm8i
KTt0aGlzLnVwbG9hZGJveC5zdG89CnAoKTskKCIjdXBsb2FkLWluZm8iKS5odG1sKCJRdWV1ZSB3
aWxsIHBhdXNlIGFmdGVyIGNvbXBsZXRpbmcgdGhlIGN1cnJlbnQgZj0KaWxlLi4uIil9LF9ldmVu
dFJlc2V0OmZ1bmN0aW9uKCl7aWYodGhpcy5jb3VudGVyLnJ1bm5pbmc9M0Q9M0QwKXt0aGlzLmNv
bGxlPQpjdGlvbi5yZXNldCgpO3RoaXMuY291bnRlci5yZXNldCgpO3RoaXMuX3VwZGF0ZVNjcmVl
bigpO3RoaXMudXBsb2FkYm94LnJlc2U9CnQoKTt0aGlzLnVpX2J1dHRvbi5zZXQoInBlcmNlbnRh
Z2UiLDApfX0sX3VwZGF0ZVVzZXI6ZnVuY3Rpb24oKXt0aGlzLmN1cnJlbj0KdF91c2VyPTNER2Fs
YXh5LmN1cnJVc2VyLmdldCgiaWQiKTt0aGlzLmN1cnJlbnRfaGlzdG9yeT0zRG51bGw7aWYodGhp
cy5jdXJyPQplbnRfdXNlcil7dGhpcy5jdXJyZW50X2hpc3Rvcnk9M0RHYWxheHkuY3Vyckhpc3Rv
cnlQYW5lbC5tb2RlbC5nZXQoImlkIil9fSw9Cl91cGRhdGVTY3JlZW46ZnVuY3Rpb24oKXtpZih0
aGlzLmNvdW50ZXIuYW5ub3VuY2U9M0Q9M0QwKXtpZih0aGlzLnVwbG9hZGJveD0KLmNvbXBhdGli
bGUoKSl7bWVzc2FnZT0zRCJZb3UgY2FuIERyYWcgJiBEcm9wIGZpbGVzIGludG8gdGhpcyBib3gu
In1lbHNle21lPQpzc2FnZT0zRCJVbmZvcnR1bmF0ZWx5LCB5b3VyIGJyb3dzZXIgZG9lcyBub3Qg
c3VwcG9ydCBtdWx0aXBsZSBmaWxlIHVwbG9hZHM9CiBvciBkcmFnJmRyb3AuPGJyPlNvbWUgc3Vw
cG9ydGVkIGJyb3dzZXJzIGFyZTogRmlyZWZveCA0KywgQ2hyb21lIDcrLCBJRSAxMD0KKywgT3Bl
cmEgMTIrIG9yIFNhZmFyaSA2Ky4ifX1lbHNle2lmKHRoaXMuY291bnRlci5ydW5uaW5nPTNEPTNE
MCl7bWVzc2FnZT0KPTNEIllvdSBhZGRlZCAiK3RoaXMuY291bnRlci5hbm5vdW5jZSsiIGZpbGUo
cykgdG8gdGhlIHF1ZXVlLiBBZGQgbW9yZSBmaWxlPQpzIG9yIGNsaWNrICdTdGFydCcgdG8gcHJv
Y2VlZC4ifWVsc2V7bWVzc2FnZT0zRCJQbGVhc2Ugd2FpdC4uLiIrdGhpcy5jb3VudGU9CnIuYW5u
b3VuY2UrIiBvdXQgb2YgIit0aGlzLmNvdW50ZXIucnVubmluZysiIHJlbWFpbmluZy4ifX0kKCIj
dXBsb2FkLWluZm8iKT0KLmh0bWwobWVzc2FnZSk7aWYodGhpcy5jb3VudGVyLnJ1bm5pbmc9M0Q9
M0QwJiZ0aGlzLmNvdW50ZXIuYW5ub3VuY2UrdGhpcy5jPQpvdW50ZXIuc3VjY2Vzcyt0aGlzLmNv
dW50ZXIuZXJyb3I+MCl7dGhpcy5tb2RhbC5lbmFibGVCdXR0b24oIlJlc2V0Iil9ZWxzZXs9CnRo
aXMubW9kYWwuZGlzYWJsZUJ1dHRvbigiUmVzZXQiKX1pZih0aGlzLmNvdW50ZXIucnVubmluZz0z
RD0zRDAmJnRoaXMuY291bj0KdGVyLmFubm91bmNlPjApe3RoaXMubW9kYWwuZW5hYmxlQnV0dG9u
KCJTdGFydCIpfWVsc2V7dGhpcy5tb2RhbC5kaXNhYmxlQnV0PQp0b24oIlN0YXJ0Iil9aWYodGhp
cy5jb3VudGVyLnJ1bm5pbmc+MCl7dGhpcy5tb2RhbC5lbmFibGVCdXR0b24oIlBhdXNlIil9ZWw9
CnNle3RoaXMubW9kYWwuZGlzYWJsZUJ1dHRvbigiUGF1c2UiKX1pZih0aGlzLmNvdW50ZXIucnVu
bmluZz0zRD0zRDApe3RoaXMubT0Kb2RhbC5lbmFibGVCdXR0b24oIkNob29zZSBsb2NhbCBmaWxl
Iik7dGhpcy5tb2RhbC5lbmFibGVCdXR0b24oIkNob29zZSBGVFAgPQpmaWxlIik7dGhpcy5tb2Rh
bC5lbmFibGVCdXR0b24oIlBhc3RlL0ZldGNoIGRhdGEiKX1lbHNle3RoaXMubW9kYWwuZGlzYWJs
ZUI9CnV0dG9uKCJDaG9vc2UgbG9jYWwgZmlsZSIpO3RoaXMubW9kYWwuZGlzYWJsZUJ1dHRvbigi
Q2hvb3NlIEZUUCBmaWxlIik7dGhpcz0KLm1vZGFsLmRpc2FibGVCdXR0b24oIlBhc3RlL0ZldGNo
IGRhdGEiKX1pZih0aGlzLmN1cnJlbnRfdXNlciYmdGhpcy5vcHRpb25zPQouZnRwX3VwbG9hZF9k
aXImJnRoaXMub3B0aW9ucy5mdHBfdXBsb2FkX3NpdGUpe3RoaXMubW9kYWwuc2hvd0J1dHRvbigi
Q2hvb3M9CmUgRlRQIGZpbGUiKX1lbHNle3RoaXMubW9kYWwuaGlkZUJ1dHRvbigiQ2hvb3NlIEZU
UCBmaWxlIil9aWYodGhpcy5jb3VudGVyLj0KYW5ub3VuY2UrdGhpcy5jb3VudGVyLnN1Y2Nlc3Mr
dGhpcy5jb3VudGVyLmVycm9yPjApeyQodGhpcy5lbCkuZmluZCgiI3VwbG9hPQpkLXRhYmxlIiku
c2hvdygpfWVsc2V7JCh0aGlzLmVsKS5maW5kKCIjdXBsb2FkLXRhYmxlIikuaGlkZSgpfX0sX3Vw
bG9hZF9wZXI9CmNlbnRhZ2U6ZnVuY3Rpb24oaCxpKXtyZXR1cm4odGhpcy51cGxvYWRfY29tcGxl
dGVkKyhoKmkpKS90aGlzLnVwbG9hZF9zaXplfT0KLF90ZW1wbGF0ZTpmdW5jdGlvbihpLGgpe3Jl
dHVybic8ZGl2IGlkPTNEIicraSsnIiBjbGFzcz0zRCJ1cGxvYWQtYm94Ij48dGFiPQpsZSBpZD0z
RCJ1cGxvYWQtdGFibGUiIGNsYXNzPTNEInRhYmxlIHRhYmxlLXN0cmlwZWQiIHN0eWxlPTNEImRp
c3BsYXk6IG5vbmU9CjsiPjx0aGVhZD48dHI+PHRoPk5hbWU8L3RoPjx0aD5TaXplPC90aD48dGg+
VHlwZTwvdGg+PHRoPkdlbm9tZTwvdGg+PHRoPlNldD0KdGluZ3M8L3RoPjx0aD5TdGF0dXM8L3Ro
Pjx0aD48L3RoPjwvdHI+PC90aGVhZD48dGJvZHk+PC90Ym9keT48L3RhYmxlPjwvZGl2PQo+PGg2
IGlkPTNEIicraCsnIiBjbGFzcz0zRCJ1cGxvYWQtaW5mbyI+PC9oNj4nfX0pfSk7ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQoKZGlmZiAtciA4YTcwNDU3OTJjN2ZlNDhhOTkyOTU3NzA0ZTUx
ZTMxM2QzMmU2Y2RkIC1yIDBmNzM3NDg1Y2I3ZjVkNzU1OTVlOThhPQpiOGY4ZGMwMmJhMzY5OTc2
ZiBzdGF0aWMvc2NyaXB0cy9wYWNrZWQvdXRpbHMvdXRpbHMuanMKLS0tIGEvc3RhdGljL3Njcmlw
dHMvcGFja2VkL3V0aWxzL3V0aWxzLmpzCisrKyBiL3N0YXRpYy9zY3JpcHRzL3BhY2tlZC91dGls
cy91dGlscy5qcwpAQCAtMSwxICsxLDEgQEAKLWRlZmluZShbImxpYnMvdW5kZXJzY29yZSJdLGZ1
bmN0aW9uKG0pe2Z1bmN0aW9uIG4ocixxKXtmb3IodmFyIG8gaW4gcil7dmFyPQogcD0zRHJbb107
aWYocCYmdHlwZW9mKHApPTNEPTNEIm9iamVjdCIpe3EocCk7bihwLHEpfX19ZnVuY3Rpb24gZChv
KXtyZXR1cm49CiAkKCI8ZGl2Lz4iKS50ZXh0KG8pLmh0bWwoKX1mdW5jdGlvbiBsKHApe2lmKCEo
cCBpbnN0YW5jZW9mIEFycmF5KSl7cD0zRFtwXT0KfWZvcih2YXIgbyBpbiBwKXtpZihbIk5vbmUi
LG51bGwsIm51bGwiLHVuZGVmaW5lZCwidW5kZWZpbmVkIl0uaW5kZXhPZihwW29dPQopPi0xKXty
ZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlfWZ1bmN0aW9uIGgobyl7dmFyIG89M0RvLnRvU3RyaW5n
KCk7aWYobyl7bz0KPTNEby5yZXBsYWNlKC8sL2csIiwgIik7dmFyIHA9M0RvLmxhc3RJbmRleE9m
KCIsICIpO2lmKHAhPTNELTEpe289M0RvLnN1YnN0PQpyKDAscCkrIiBvciAiK28uc3Vic3RyKHAr
MSl9cmV0dXJuIG99cmV0dXJuIiJ9ZnVuY3Rpb24gZShvKXt0b3AuX191dGlsc19fZ2U9CnRfXz0z
RHRvcC5fX3V0aWxzX19nZXRfX3x8e307aWYoby5jYWNoZSYmdG9wLl9fdXRpbHNfX2dldF9fW28u
dXJsXSl7by5zdWNjZT0Kc3MmJm8uc3VjY2Vzcyh0b3AuX191dGlsc19fZ2V0X19bby51cmxdKTtj
b25zb2xlLmRlYnVnKCJ1dGlscy5qczo6Z2V0KCkgLSBGPQpldGNoaW5nIGZyb20gY2FjaGUgWyIr
by51cmwrIl0uIil9ZWxzZXtpKHt1cmw6by51cmwsZGF0YTpvLmRhdGEsc3VjY2VzczpmdW49CmN0
aW9uKHApe3RvcC5fX3V0aWxzX19nZXRfX1tvLnVybF09M0RwO28uc3VjY2VzcyYmby5zdWNjZXNz
KHApfSxlcnJvcjpmdW5jdD0KaW9uKHApe28uZXJyb3ImJm8uZXJyb3IocCl9fSl9fWZ1bmN0aW9u
IGkocCl7dmFyIG89M0R7Y29udGVudFR5cGU6ImFwcGxpY2F0PQppb24vanNvbiIsdHlwZTpwLnR5
cGV8fCJHRVQiLGRhdGE6cC5kYXRhfHx7fSx1cmw6cC51cmx9O2lmKG8udHlwZT0zRD0zRCJHRVQ9
CiJ8fG8udHlwZT0zRD0zRCJERUxFVEUiKXtpZihvLnVybC5pbmRleE9mKCI/Iik9M0Q9M0QtMSl7
by51cmwrPTNEIj8ifWVsc2V7bz0KLnVybCs9M0QiJiJ9by51cmw9M0RvLnVybCskLnBhcmFtKG8u
ZGF0YSk7by5kYXRhPTNEbnVsbH1lbHNle28uZGF0YVR5cGU9M0QiPQpqc29uIjtvLnVybD0zRG8u
dXJsO28uZGF0YT0zREpTT04uc3RyaW5naWZ5KG8uZGF0YSl9JC5hamF4KG8pLmRvbmUoZnVuY3Rp
b249CihxKXtpZih0eXBlb2YgcT0zRD0zRD0zRCJzdHJpbmciKXt0cnl7cT0zRHEucmVwbGFjZSgi
SW5maW5pdHksIiwnIkluZmluaXR5Ij0KLCcpO3E9M0RqUXVlcnkucGFyc2VKU09OKHEpfWNhdGNo
KHIpe2NvbnNvbGUuZGVidWcocil9fXAuc3VjY2VzcyYmcC5zdWNjZXNzPQoocSl9KS5mYWlsKGZ1
bmN0aW9uKHIpe3ZhciBxPTNEbnVsbDt0cnl7cT0zRGpRdWVyeS5wYXJzZUpTT04oci5yZXNwb25z
ZVRleHQ9Cil9Y2F0Y2gocyl7cT0zRHIucmVzcG9uc2VUZXh0fXAuZXJyb3ImJnAuZXJyb3IocSxy
KX0pfWZ1bmN0aW9uIGoocixvKXt2YXIgcD0KPTNEJCgnPGRpdiBjbGFzcz0zRCInK3IrJyI+PC9k
aXY+Jyk7cC5hcHBlbmRUbygiOmVxKDApIik7dmFyIHE9M0RwLmNzcyhvKTtwPQoucmVtb3ZlKCk7
cmV0dXJuIHF9ZnVuY3Rpb24gZyhvKXtpZighJCgnbGlua1tocmVmXj0zRCInK28rJyJdJykubGVu
Z3RoKXskKCc9CjxsaW5rIGhyZWY9M0QiJytnYWxheHlfY29uZmlnLnJvb3QrbysnIiByZWw9M0Qi
c3R5bGVzaGVldCI+JykuYXBwZW5kVG8oImhlYT0KZCIpfX1mdW5jdGlvbiBrKG8scCl7aWYobyl7
cmV0dXJuIG0uZGVmYXVsdHMobyxwKX1lbHNle3JldHVybiBwfX1mdW5jdGlvbiBiPQoocCxyKXt2
YXIgcT0zRCIiO2lmKHA+PTNEMTAwMDAwMDAwMDAwKXtwPTNEcC8xMDAwMDAwMDAwMDA7cT0zRCJU
QiJ9ZWxzZXtpZig9CnA+PTNEMTAwMDAwMDAwKXtwPTNEcC8xMDAwMDAwMDA7cT0zRCJHQiJ9ZWxz
ZXtpZihwPj0zRDEwMDAwMCl7cD0zRHAvMTAwMDAwOz0KcT0zRCJNQiJ9ZWxzZXtpZihwPj0zRDEw
MCl7cD0zRHAvMTAwO3E9M0QiS0IifWVsc2V7aWYocD4wKXtwPTNEcCoxMDtxPTNEImIiPQp9ZWxz
ZXtyZXR1cm4iPHN0cm9uZz4tPC9zdHJvbmc+In19fX19dmFyIG89M0QoTWF0aC5yb3VuZChwKS8x
MCk7aWYocil7cmV0dXI9Cm4gbysiICIrcX1lbHNle3JldHVybiI8c3Ryb25nPiIrbysiPC9zdHJv
bmc+ICIrcX19ZnVuY3Rpb24gYSgpe3JldHVybiJ4IitNYT0KdGgucmFuZG9tKCkudG9TdHJpbmco
MzYpLnN1YnN0cmluZygyLDkpfWZ1bmN0aW9uIGMobyl7dmFyIHA9M0QkKCI8cD48L3A+Iik7PQpw
LmFwcGVuZChvKTtyZXR1cm4gcH1mdW5jdGlvbiBmKCl7dmFyIHE9M0RuZXcgRGF0ZSgpO3ZhciBv
PTNEKHEuZ2V0SG91cnMoKTw9CjEwPyIwIjoiIikrcS5nZXRIb3VycygpO3ZhciBwPTNEKHEuZ2V0
TWludXRlcygpPDEwPyIwIjoiIikrcS5nZXRNaW51dGVzKCk7dj0KYXIgcj0zRHEuZ2V0RGF0ZSgp
KyIvIisocS5nZXRNb250aCgpKzEpKyIvIitxLmdldEZ1bGxZZWFyKCkrIiwgIitvKyI6IitwO3Jl
PQp0dXJuIHJ9cmV0dXJue2Nzc0xvYWRGaWxlOmcsY3NzR2V0QXR0cmlidXRlOmosZ2V0OmUsbWVy
Z2U6ayxieXRlc1RvU3RyaW5nOmI9Cix1dWlkOmEsdGltZTpmLHdyYXA6YyxyZXF1ZXN0Omksc2Fu
aXRpemU6ZCx0ZXh0aWZ5OmgsdmFsaWRhdGU6bCxkZWVwZWFjaDpufT0KfSk7ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQorZGVmaW5lKFsibGlicy91bmRlcnNjb3JlIl0sZnVuY3Rpb24obSl7
ZnVuY3Rpb24gbihyLHEpe2Zvcih2YXIgbyBpbiByKXt2YXI9CiBwPTNEcltvXTtpZihwJiZ0eXBl
b2YocCk9M0Q9M0Qib2JqZWN0Iil7cShwKTtuKHAscSl9fX1mdW5jdGlvbiBkKG8pe3JldHVybj0K
ICQoIjxkaXYvPiIpLnRleHQobykuaHRtbCgpfWZ1bmN0aW9uIGwocCl7aWYoIShwIGluc3RhbmNl
b2YgQXJyYXkpKXtwPTNEW3BdPQp9Zm9yKHZhciBvIGluIHApe2lmKFsiTm9uZSIsbnVsbCwibnVs
bCIsdW5kZWZpbmVkLCJ1bmRlZmluZWQiXS5pbmRleE9mKHBbb109Cik+LTEpe3JldHVybiBmYWxz
ZX19cmV0dXJuIHRydWV9ZnVuY3Rpb24gaChvKXt2YXIgbz0zRG8udG9TdHJpbmcoKTtpZihvKXtv
PQo9M0RvLnJlcGxhY2UoLywvZywiLCAiKTt2YXIgcD0zRG8ubGFzdEluZGV4T2YoIiwgIik7aWYo
cCE9M0QtMSl7bz0zRG8uc3Vic3Q9CnIoMCxwKSsiIG9yICIrby5zdWJzdHIocCsxKX1yZXR1cm4g
b31yZXR1cm4iIn1mdW5jdGlvbiBlKG8pe3RvcC5fX3V0aWxzX19nZT0KdF9fPTNEdG9wLl9fdXRp
bHNfX2dldF9ffHx7fTtpZihvLmNhY2hlJiZ0b3AuX191dGlsc19fZ2V0X19bby51cmxdKXtvLnN1
Y2NlPQpzcyYmby5zdWNjZXNzKHRvcC5fX3V0aWxzX19nZXRfX1tvLnVybF0pO2NvbnNvbGUuZGVi
dWcoInV0aWxzLmpzOjpnZXQoKSAtIEY9CmV0Y2hpbmcgZnJvbSBjYWNoZSBbIitvLnVybCsiXS4i
KX1lbHNle2koe3VybDpvLnVybCxkYXRhOm8uZGF0YSxzdWNjZXNzOmZ1bj0KY3Rpb24ocCl7dG9w
Ll9fdXRpbHNfX2dldF9fW28udXJsXT0zRHA7by5zdWNjZXNzJiZvLnN1Y2Nlc3MocCl9LGVycm9y
OmZ1bmN0PQppb24ocCl7by5lcnJvciYmby5lcnJvcihwKX19KX19ZnVuY3Rpb24gaShwKXt2YXIg
bz0zRHtjb250ZW50VHlwZToiYXBwbGljYXQ9Cmlvbi9qc29uIix0eXBlOnAudHlwZXx8IkdFVCIs
ZGF0YTpwLmRhdGF8fHt9LHVybDpwLnVybH07aWYoby50eXBlPTNEPTNEIkdFVD0KInx8by50eXBl
PTNEPTNEIkRFTEVURSIpe2lmKG8udXJsLmluZGV4T2YoIj8iKT0zRD0zRC0xKXtvLnVybCs9M0Qi
PyJ9ZWxzZXtvPQoudXJsKz0zRCImIn1vLnVybD0zRG8udXJsKyQucGFyYW0oby5kYXRhLHRydWUp
O28uZGF0YT0zRG51bGx9ZWxzZXtvLmRhdGFUeXA9CmU9M0QianNvbiI7by51cmw9M0RvLnVybDtv
LmRhdGE9M0RKU09OLnN0cmluZ2lmeShvLmRhdGEpfSQuYWpheChvKS5kb25lKGZ1bj0KY3Rpb24o
cSl7aWYodHlwZW9mIHE9M0Q9M0Q9M0Qic3RyaW5nIil7dHJ5e3E9M0RxLnJlcGxhY2UoIkluZmlu
aXR5LCIsJyJJbmZpPQpuaXR5IiwnKTtxPTNEalF1ZXJ5LnBhcnNlSlNPTihxKX1jYXRjaChyKXtj
b25zb2xlLmRlYnVnKHIpfX1wLnN1Y2Nlc3MmJnAuc3U9CmNjZXNzKHEpfSkuZmFpbChmdW5jdGlv
bihyKXt2YXIgcT0zRG51bGw7dHJ5e3E9M0RqUXVlcnkucGFyc2VKU09OKHIucmVzcG9ucz0KZVRl
eHQpfWNhdGNoKHMpe3E9M0RyLnJlc3BvbnNlVGV4dH1wLmVycm9yJiZwLmVycm9yKHEscil9KX1m
dW5jdGlvbiBqKHIsbyl7PQp2YXIgcD0zRCQoJzxkaXYgY2xhc3M9M0QiJytyKyciPjwvZGl2Picp
O3AuYXBwZW5kVG8oIjplcSgwKSIpO3ZhciBxPTNEcC5jc3M9CihvKTtwLnJlbW92ZSgpO3JldHVy
biBxfWZ1bmN0aW9uIGcobyl7aWYoISQoJ2xpbmtbaHJlZl49M0QiJytvKyciXScpLmxlbmd0aD0K
KXskKCc8bGluayBocmVmPTNEIicrZ2FsYXh5X2NvbmZpZy5yb290K28rJyIgcmVsPTNEInN0eWxl
c2hlZXQiPicpLmFwcGVuZFRvPQooImhlYWQiKX19ZnVuY3Rpb24gayhvLHApe2lmKG8pe3JldHVy
biBtLmRlZmF1bHRzKG8scCl9ZWxzZXtyZXR1cm4gcH19ZnVuY3Q9CmlvbiBiKHAscil7dmFyIHE9
M0QiIjtpZihwPj0zRDEwMDAwMDAwMDAwMCl7cD0zRHAvMTAwMDAwMDAwMDAwO3E9M0QiVEIifWVs
cz0KZXtpZihwPj0zRDEwMDAwMDAwMCl7cD0zRHAvMTAwMDAwMDAwO3E9M0QiR0IifWVsc2V7aWYo
cD49M0QxMDAwMDApe3A9M0RwLzEwPQowMDAwO3E9M0QiTUIifWVsc2V7aWYocD49M0QxMDApe3A9
M0RwLzEwMDtxPTNEIktCIn1lbHNle2lmKHA+MCl7cD0zRHAqMTA7cT0KPTNEImIifWVsc2V7cmV0
dXJuIjxzdHJvbmc+LTwvc3Ryb25nPiJ9fX19fXZhciBvPTNEKE1hdGgucm91bmQocCkvMTApO2lm
KHIpPQp7cmV0dXJuIG8rIiAiK3F9ZWxzZXtyZXR1cm4iPHN0cm9uZz4iK28rIjwvc3Ryb25nPiAi
K3F9fWZ1bmN0aW9uIGEoKXtyZXR1cm49CiJ4IitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5z
dWJzdHJpbmcoMiw5KX1mdW5jdGlvbiBjKG8pe3ZhciBwPTNEJCgiPHA+PD0KL3A+Iik7cC5hcHBl
bmQobyk7cmV0dXJuIHB9ZnVuY3Rpb24gZigpe3ZhciBxPTNEbmV3IERhdGUoKTt2YXIgbz0zRChx
LmdldEhvPQp1cnMoKTwxMD8iMCI6IiIpK3EuZ2V0SG91cnMoKTt2YXIgcD0zRChxLmdldE1pbnV0
ZXMoKTwxMD8iMCI6IiIpK3EuZ2V0TWludXQ9CmVzKCk7dmFyIHI9M0RxLmdldERhdGUoKSsiLyIr
KHEuZ2V0TW9udGgoKSsxKSsiLyIrcS5nZXRGdWxsWWVhcigpKyIsICIrbysiOj0KIitwO3JldHVy
biByfXJldHVybntjc3NMb2FkRmlsZTpnLGNzc0dldEF0dHJpYnV0ZTpqLGdldDplLG1lcmdlOmss
Ynl0ZXNUb1N0PQpyaW5nOmIsdXVpZDphLHRpbWU6Zix3cmFwOmMscmVxdWVzdDppLHNhbml0aXpl
OmQsdGV4dGlmeTpoLHZhbGlkYXRlOmwsZGVlcGU9CmFjaDpufX0pOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKCmRpZmYgLXIgOGE3MDQ1NzkyYzdmZTQ4YTk5Mjk1NzcwNGU1MWUzMTNkMzJl
NmNkZCAtciAwZjczNzQ4NWNiN2Y1ZDc1NTk1ZTk4YT0KYjhmOGRjMDJiYTM2OTk3NmYgc3RhdGlj
L3NjcmlwdHMvdXRpbHMvdXRpbHMuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvdXRpbHMvdXRpbHMu
anMKKysrIGIvc3RhdGljL3NjcmlwdHMvdXRpbHMvdXRpbHMuanMKQEAgLTExMSw3ICsxMTEsNyBA
QAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYWpheENvbmZpZy51cmwgKz0zRCAnJic7
CiAgICAgICAgIH0KLSAgICAgICAgYWpheENvbmZpZy51cmwgICAgICA9M0QgYWpheENvbmZpZy51
cmwgKyAkLnBhcmFtKGFqYXhDb25maWcuZGF0YSk7CisgICAgICAgIGFqYXhDb25maWcudXJsICAg
ICAgPTNEIGFqYXhDb25maWcudXJsICsgJC5wYXJhbShhamF4Q29uZmlnLmRhdGEsID0KdHJ1ZSk7
CiAgICAgICAgIGFqYXhDb25maWcuZGF0YSAgICAgPTNEIG51bGw7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgYWpheENvbmZpZy5kYXRhVHlwZSA9M0QgJ2pzb24nOwoKZGlmZiAtciA4YTcwNDU3OTJj
N2ZlNDhhOTkyOTU3NzA0ZTUxZTMxM2QzMmU2Y2RkIC1yIDBmNzM3NDg1Y2I3ZjVkNzU1OTVlOThh
PQpiOGY4ZGMwMmJhMzY5OTc2ZiB0ZW1wbGF0ZXMvd2ViYXBwcy9nYWxheHkvd29ya2Zsb3cvZWRp
dG9yX3Rvb2xfZm9ybS5tYWtvCi0tLSBhL3RlbXBsYXRlcy93ZWJhcHBzL2dhbGF4eS93b3JrZmxv
dy9lZGl0b3JfdG9vbF9mb3JtLm1ha28KKysrIGIvdGVtcGxhdGVzL3dlYmFwcHMvZ2FsYXh5L3dv
cmtmbG93L2VkaXRvcl90b29sX2Zvcm0ubWFrbwpAQCAtNiwxNCArNiwxOSBAQAogICAgICAgICAj
IyBURU1QT1JBUlk6IGNyZWF0ZSB0b29sIGRpY3Rpb25hcnkgaW4gbWFrbyB3aGlsZSBib3RoIHRv
b2wgZm9ybXM9CiBhcmUgaW4gdXNlLgogICAgICAgICAjIyBUaGlzIGF2b2lkcyBtYWtpbmcgdHdv
IHNlcGFyYXRlIHJlcXVlc3RzIHNpbmNlIHRoZSBjbGFzc2ljIGZvcm09CiByZXF1aXJlcyB0aGUg
bWFrbyBhbnl3YXkuCiAgICAgICAgIGZyb20gZ2FsYXh5LnRvb2xzLnBhcmFtZXRlcnMgaW1wb3J0
IHBhcmFtc190b19pbmNvbWluZwotICAgICAgICBpbmNvbWluZyA9M0Qge30KKyAgICAgICAgaW5j
b21pbmcgPTNEIHsKKyAgICAgICAgICAgICdfX2lzX2R5bmFtaWNfXycgOiBGYWxzZQorICAgICAg
ICB9CiAgICAgICAgIHBhcmFtc190b19pbmNvbWluZyggaW5jb21pbmcsIHRvb2wuaW5wdXRzLCBt
b2R1bGUuc3RhdGUuaW5wdXRzLCB0cj0KYW5zLmFwcCApCiAgICAgICAgIHNlbGYuZm9ybV9jb25m
aWcgPTNEIHRvb2wudG9fanNvbih0cmFucywgKippbmNvbWluZykKICAgICAgICAgc2VsZi5mb3Jt
X2NvbmZpZy51cGRhdGUoewogICAgICAgICAgICAgJ2lkJyAgICAgICAgICAgICAgICA6IHRvb2wu
aWQsCiAgICAgICAgICAgICAnam9iX2lkJyAgICAgICAgICAgIDogdHJhbnMuc2VjdXJpdHkuZW5j
b2RlX2lkKCBqb2IuaWQgKSBpZiBqbz0KYiBlbHNlIE5vbmUsCiAgICAgICAgICAgICAnaGlzdG9y
eV9pZCcgICAgICAgIDogdHJhbnMuc2VjdXJpdHkuZW5jb2RlX2lkKCB0cmFucy5oaXN0b3J5Lj0K
aWQgKSwKLSAgICAgICAgICAgICd3b3JrZmxvdycgICAgICAgICAgOiBUcnVlLAorICAgICAgICAg
ICAgJ2lzX2R5bmFtaWMnICAgICAgICA6IEZhbHNlLAorICAgICAgICAgICAgJ2NvbXBhY3QnICAg
ICAgICAgICA6IFRydWUsCisgICAgICAgICAgICAnaW5pdGlhbF9lcnJvcnMnICAgIDogVHJ1ZSwK
KyAgICAgICAgICAgICdzZW5kX2FsbCcgICAgICAgICAgOiBUcnVlLAogICAgICAgICAgICAgJ2Nv
bnRhaW5lcicgICAgICAgICA6ICcjcmlnaHQtY29udGVudCcKICAgICAgICAgfSkKICAgICAlPgoK
Cmh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvY29tbWl0cy8wZmIz
YjdkYzMwZDYvCkNoYW5nZXNldDogICAwZmIzYjdkYzMwZDYKVXNlcjogICAgICAgIGRhbm5vbgpE
YXRlOiAgICAgICAgMjAxNS0wMS0yMSAyMTozMjoyNyswMDowMApTdW1tYXJ5OiAgICAgTWVyZ2Vk
IGluIGNhcmxmZWJlcmhhcmQvZ2FsYXh5LWNlbnRyYWwtYXBpLXYyIChwdWxsIHJlcXVlc3QgIzY9
CjM3KQoKRXhwYW5kIG9uIEJhc2UsIEhpc3RvcnksIGFuZCBIREEgbWFuYWdlcnMKQWZmZWN0ZWQg
IzogIDU5IGZpbGVzCgpkaWZmIC1yIGQ3MDIxZWU5NmE4MDA4NWQ3NjA1YjE2OGM3M2RmZDkyOWFk
ODUxZDMgLXIgMGZiM2I3ZGMzMGQ2ZjgzN2UwYjgxNjI9Cjc3MTIwMTY5MzUzODFhYWM3IGNsaWVu
dC9nYWxheHkvc2NyaXB0cy9tdmMvbGlzdC9saXN0LXBhbmVsLmpzCi0tLSBhL2NsaWVudC9nYWxh
eHkvc2NyaXB0cy9tdmMvbGlzdC9saXN0LXBhbmVsLmpzCisrKyBiL2NsaWVudC9nYWxheHkvc2Ny
aXB0cy9tdmMvbGlzdC9saXN0LXBhbmVsLmpzCkBAIC04NzIsMTAgKzg3MiwxMCBAQAogICAgICAg
ICB0aGlzLmxvZyggdGhpcyArICcuX3NldFVwTW9kZWxMaXN0ZW5lcnMnLCB0aGlzLm1vZGVsICk7
CiAgICAgICAgIC8vIGJvdW5jZSBtb2RlbCBlcnJvcnMgdXAgdG8gdGhlIHBhbmVsCiAgICAgICAg
IHRoaXMubW9kZWwub24oICdlcnJvcicsIGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICAvL1RPRE86
IG5hbWVzcGFjZT8KLSAgICAgICAgICAgIC8vdmFyIGFyZ3MgPTNEIEFycmF5LnByb3RvdHlwZS5z
bGljZS5jYWxsKCBhcmd1bWVudHMsIDAgKTsKLSAgICAgICAgICAgIC8vYXJnc1swXSA9M0QgJ21v
ZGVsOicgKyBhcmdzWzBdOwotICAgICAgICAgICAgdGhpcy50cmlnZ2VyLmFwcGx5KCBwYW5lbCwg
YXJndW1lbnRzICk7CisgICAgICAgICAgICB2YXIgYXJncyA9M0QgQXJyYXkucHJvdG90eXBlLnNs
aWNlLmNhbGwoIGFyZ3VtZW50cywgMCApOworICAgICAgICAgICAgLy9hcmdzLnVuc2hpZnQoICdt
b2RlbDplcnJvcicgKTsKKyAgICAgICAgICAgIGFyZ3MudW5zaGlmdCggJ2Vycm9yJyApOworICAg
ICAgICAgICAgdGhpcy50cmlnZ2VyLmFwcGx5KCB0aGlzLCBhcmdzICk7CiAgICAgICAgIH0sIHRo
aXMgKTsKICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgfSwKCmRpZmYgLXIgZDcwMjFlZTk2YTgw
MDg1ZDc2MDViMTY4YzczZGZkOTI5YWQ4NTFkMyAtciAwZmIzYjdkYzMwZDZmODM3ZTBiODE2Mj0K
NzcxMjAxNjkzNTM4MWFhYzcgbGliL2dhbGF4eS9tYW5hZ2Vycy9hbm5vdGF0YWJsZS5weQotLS0g
L2Rldi9udWxsCisrKyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvYW5ub3RhdGFibGUucHkKQEAgLTAs
MCArMSw1MCBAQAorIiIiCitNaXhpbnMgZm9yIEFubm90YXRhYmxlIG1vZGVsIG1hbmFnZXJzIGFu
ZCBzZXJpYWxpemVycy4KKyIiIgorCitmcm9tIGdhbGF4eSBpbXBvcnQgZXhjZXB0aW9ucworZnJv
bSBnYWxheHkgaW1wb3J0IG1vZGVsCisKK2ltcG9ydCBsb2dnaW5nCitsb2cgPTNEIGxvZ2dpbmcu
Z2V0TG9nZ2VyKCBfX25hbWVfXyApCisKKworIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKK2NsYXNzIEFubm90YXRhYmxl
TWFuYWdlckludGVyZmFjZSggb2JqZWN0ICk6CisgICAgYW5ub3RhdGlvbl9hc3NvYyA9M0QgTm9u
ZQorCisgICAgI1RPRE86IG1vc3Qgb2YgdGhpcyBzZWVtcyB0byBiZSBjb3ZlcmVkIGJ5IGl0ZW1f
YXR0cnMuVXNlc0Fubm90YXRpb25zCisKKworIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKK2NsYXNzIEFubm90YXRhYmxl
U2VyaWFsaXplciggb2JqZWN0ICk6CisKKyAgICBkZWYgYWRkX3NlcmlhbGl6ZXJzKCBzZWxmICk6
CisgICAgICAgIHNlbGYuc2VyaWFsaXplcnNbICdhbm5vdGF0aW9uJyBdID0zRCBzZWxmLnNlcmlh
bGl6ZV9hbm5vdGF0aW9uCisKKyAgICBkZWYgc2VyaWFsaXplX2Fubm90YXRpb24oIHNlbGYsIHRy
YW5zLCBpdGVtLCBrZXkgKToKKyAgICAgICAgIiIiCisgICAgICAgIEdldCBhbmQgc2VyaWFsaXpl
IGFuIGBpdGVtYCdzIGFubm90YXRpb24uCisgICAgICAgICIiIgorI1RPRE86IHdoaWNoIGlzIGNv
cnJlY3QgaGVyZT8KKyAgICAgICAgI3VzZXIgPTNEIGl0ZW0udXNlcgorICAgICAgICB1c2VyID0z
RCB0cmFucy51c2VyCisgICAgICAgIHNhX3Nlc3Npb24gPTNEIHNlbGYuYXBwLm1vZGVsLmNvbnRl
eHQKKyAgICAgICAgcmV0dXJuIGl0ZW0uZ2V0X2l0ZW1fYW5ub3RhdGlvbl9zdHIoIHNhX3Nlc3Np
b24sIHVzZXIsIGl0ZW0gKQorCisKKyMgPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECitjbGFzcyBBbm5vdGF0YWJsZURlc2Vy
aWFsaXplciggb2JqZWN0ICk6CisKKyAgICBkZWYgYWRkX2Rlc2VyaWFsaXplcnMoIHNlbGYgKToK
KyAgICAgICAgc2VsZi5kZXNlcmlhbGl6ZXJzWyAnYW5ub3RhdGlvbicgXSA9M0Qgc2VsZi5kZXNl
cmlhbGl6ZV9hbm5vdGF0aW9uCisKKyAgICBkZWYgZGVzZXJpYWxpemVfYW5ub3RhdGlvbiggc2Vs
ZiwgdHJhbnMsIGl0ZW0sIGtleSwgdmFsICk6CisgICAgICAgICIiIgorICAgICAgICBNYWtlIHN1
cmUgYHZhbGAgaXMgYSB2YWxpZCBhbm5vdGF0aW9uIGFuZCBhc3NpZ24gaXQuCisgICAgICAgICIi
IgorI1RPRE86IG5vIHZhbGlkYXRlIGhlcmUuLi4KKyAgICAgICAgdmFsID0zRCBzZWxmLnZhbGlk
YXRlLm51bGxhYmxlX2Jhc2VzdHJpbmcoIGtleSwgdmFsICkKKyAgICAgICAgI1RPRE86IGhhdmUg
dG8gYXNzdW1lIHRyYW5zLnVzZXIgaGVyZS4uLgorICAgICAgICByZXR1cm4gaXRlbS5hZGRfaXRl
bV9hbm5vdGF0aW9uKCB0cmFucy5zYV9zZXNzaW9uLCB0cmFucy51c2VyLCBpdGU9Cm0sIHZhbCAp
CisKCmRpZmYgLXIgZDcwMjFlZTk2YTgwMDg1ZDc2MDViMTY4YzczZGZkOTI5YWQ4NTFkMyAtciAw
ZmIzYjdkYzMwZDZmODM3ZTBiODE2Mj0KNzcxMjAxNjkzNTM4MWFhYzcgbGliL2dhbGF4eS9tYW5h
Z2Vycy9iYXNlLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvYmFzZS5weQorKysgYi9saWIv
Z2FsYXh5L21hbmFnZXJzL2Jhc2UucHkKQEAgLTEsMjMgKzEsNTAgQEAKLWZyb20gZ2FsYXh5IGlt
cG9ydCBleGNlcHRpb25zCisiIiIKK0tlZXBzIHRoZSBvbGRlciBCYXNlQ29udHJvbGxlciBzZWN1
cml0eSBhbmQgZmV0Y2hpbmcgbWV0aG9kcyBhbmQgYWxzbworZGVmaW5lcyBhIGJhc2UgTW9kZWxN
YW5hZ2VyLCBNb2RlbFNlcmlhbGl6ZXIsIGFuZCBNb2RlbERlc2VyaWFsaXplci4KKworTW9kZWxN
YW5hZ2VycyBhcmUgdXNlZCBmb3Igb3BlcmF0aW9ucyBvbiBtb2RlbHMgdGhhdCBvY2N1ciBvdXRz
aWRlIHRoZSBzY289CnBlIG9mCithIHNpbmdsZSBtb2RlbCBvYmplY3QsIHN1Y2ggYXM6CisgICAg
LSBvYmplY3QgY3JlYXRpb24KKyAgICAtIG9iamVjdCBsb29rdXAKKyAgICAtIGludGVyYWN0aW9u
cyBiZXR3ZWVuIDIrIG9iamVjdHMgb2YgZGlmZmVyZW50IG1vZGVsIGNsYXNzZXMKKworKFNpbmNl
IHRoZXNlIHdlcmUgdG8gcmVwbGFjZSBtb2RlbCBNaXhpbnMgZnJvbQord2ViL2ZyYW1ld29yay9i
YXNlL2NvbnRyb2xsZXIucHkgdGhlIHJ1bGUgb2YgdGh1bWIgdXNlZCB0aGVyZSBhbHNvIGdlbmVy
YWw9Cmx5CitoYXMgYmVlbiBhcHBsaWVkIGhlcmU6IGlmIGl0IHVzZXMgdGhlIHRyYW5zIG9yIHNh
X3Nlc3Npb24sIHB1dCBpdCBpbiBhIG1hbj0KYWdlcgorYW5kIG5vdCB0aGUgbW9kZWwuKQorCitN
b2RlbFNlcmlhbGl6ZXJzIGFsbG93IGZsZXhpYmxlIGNvbnZlcnNpb24gb2YgbW9kZWwgb2JqZWN0
cyB0byBkaWN0aW9uYXJpZT0Kcy4KK1RoZXkgY29udHJvbCB3aGF0IGtleXMgYXJlIHNlbnQsIGhv
dyB2YWx1ZXMgYXJlIHNpbXBsaWZpZWQsIGNhbiByZW1hcCBrZXlzLAorYW5kIGFsbG93IGJvdGgg
cHJlZGVmaW5lZCBhbmQgdXNlciBjb250cm9sbGVkIGtleSBzZXRzLgorCitNb2RlbERlc2VyaWFs
aXplcnMgY29udHJvbCBob3cgYSBtb2RlbCB2YWxpZGF0ZXMgYW5kIHByb2Nlc3MgYW4gaW5jb21p
bmcKK2F0dHJpYnV0ZSBjaGFuZ2UgdG8gYSBtb2RlbCBvYmplY3QuCisiIiIKKyNUT0RPOiBpdCBt
YXkgYmUgdGhlcmUncyBhIGJldHRlciB3YXkgdG8gY29tYmluZSB0aGUgYWJvdmUgdGhyZWUgY2xh
c3NlcworIyAgIHN1Y2ggYXM6IGEgc2luZ2xlIGZsYXQgY2xhc3MsIHNlcmlhbGl6ZXJzIGJlaW5n
IHNpbmdsZXRvbnMgaW4gdGhlIG1hbmE9CmdlciwgZXRjLgorIyAgIGluc3RlYWQgb2YgdGhlIHRo
cmVlIHNlcGFyYXRlIGNsYXNzZXMuIFdpdGggbm8gJ2FwcGFyZW50JyBwZXJmZWN0IHNjaGU9Cm1l
CisjICAgSSdtIG9wdGluZyB0byBqdXN0IGtlZXAgdGhlbSBzZXBhcmF0ZS4KKworaW1wb3J0IHJl
CisKK2ltcG9ydCBwa2dfcmVzb3VyY2VzCitwa2dfcmVzb3VyY2VzLnJlcXVpcmUoICJTUUxBbGNo
ZW15ID49M0QgMC40IiApCitpbXBvcnQgc3FsYWxjaGVteQo9MjAKIGZyb20gZ2FsYXh5IGltcG9y
dCBtb2RlbAorZnJvbSBnYWxheHkgaW1wb3J0IGV4Y2VwdGlvbnMKIGZyb20gZ2FsYXh5Lm1vZGVs
IGltcG9ydCB0b29sX3NoZWRfaW5zdGFsbAorZnJvbSBnYWxheHkudXRpbCBpbXBvcnQgc2FuaXRp
emVfaHRtbAo9MjAKPTIwCiBpbXBvcnQgbG9nZ2luZwogbG9nID0zRCBsb2dnaW5nLmdldExvZ2dl
ciggX19uYW1lX18gKQo9MjAKPTIwCi1jbGFzcyBNb2RlbE1hbmFnZXIoIG9iamVjdCApOgotICAg
IHBhc3MKLQotCi1jbGFzcyBNb2RlbFNlcmlhbGl6ZXIoIG9iamVjdCApOgotICAgIHBhc3MKLQot
CisjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9Cj0zRD0zRD0zRAogZGVmIHNlY3VyaXR5X2NoZWNrKCB0cmFucywgaXRlbSwgY2hlY2tfb3du
ZXJzaGlwPTNERmFsc2UsIGNoZWNrX2FjY2Vzc2libGU9Cj0zREZhbHNlICk6Ci0gICAgIiIiIFNl
Y3VyaXR5IGNoZWNrcyBmb3IgYW4gaXRlbTogY2hlY2tzIGlmIChhKSB1c2VyIG93bnMgaXRlbSBv
ciAoYikgaT0KdGVtCisgICAgIiIiCisgICAgU2VjdXJpdHkgY2hlY2tzIGZvciBhbiBpdGVtOiBj
aGVja3MgaWYgKGEpIHVzZXIgb3ducyBpdGVtIG9yIChiKSBpdGVtCiAgICAgaXMgYWNjZXNzaWJs
ZSB0byB1c2VyLiBUaGlzIGlzIGEgZ2VuZXJpYyBtZXRob2QgZm9yIGRlYWxpbmcgd2l0aCBvYmpl
Yz0KdHMKICAgICB1bmlmb3JtbHkgZnJvbSB0aGUgb2xkZXIgY29udHJvbGxlciBtaXhpbiBjb2Rl
IC0gaG93ZXZlciB3aGVuZXZlciBwb3NzPQppYmxlCiAgICAgdGhlIG1hbmFnZXJzIGZvciBhIHBh
cnRpY3VsYXIgbW9kZWwgc2hvdWxkIGJlIHVzZWQgdG8gcGVyZm9ybSBzZWN1cml0eQpAQCAtNDks
NyArNzYsMTAgQEAKPTIwCj0yMAogZGVmIGdldF9jbGFzcyggY2xhc3NfbmFtZSApOgotICAgICIi
IiBSZXR1cm5zIHRoZSBjbGFzcyBvYmplY3QgdGhhdCBhIHN0cmluZyBkZW5vdGVzLiBXaXRob3V0
IHRoaXMgbWV0aG89CmQsIHdlJ2QgaGF2ZSB0byBkbyBldmFsKDxjbGFzc19uYW1lPikuICIiIgor
ICAgICIiIgorICAgIFJldHVybnMgdGhlIGNsYXNzIG9iamVjdCB0aGF0IGEgc3RyaW5nIGRlbm90
ZXMuIFdpdGhvdXQgdGhpcyBtZXRob2QsIHc9CmUnZCBoYXZlCisgICAgdG8gZG8gZXZhbCg8Y2xh
c3NfbmFtZT4pLgorICAgICIiIgogICAgIGlmIGNsYXNzX25hbWUgPTNEPTNEICdIaXN0b3J5JzoK
ICAgICAgICAgaXRlbV9jbGFzcyA9M0QgbW9kZWwuSGlzdG9yeQogICAgIGVsaWYgY2xhc3NfbmFt
ZSA9M0Q9M0QgJ0hpc3RvcnlEYXRhc2V0QXNzb2NpYXRpb24nOgpAQCAtMTE4LDMgKzE0OCw3ODIg
QEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKCBj
bGFzc19uYW1lLCBnZXRhdHRyKCBpPQp0ZW0sICduYW1lJywgaWQgKSApLCB0eXBlPTNEIndhcm5p
bmciICkKICAgICByZXR1cm4gaXRlbQo9MjAKKworIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKK2NsYXNzIE1vZGVsTWFu
YWdlciggb2JqZWN0ICk6CisgICAgIiIiCisgICAgQmFzZSBjbGFzcyBmb3IgYWxsIG1vZGVsL3Jl
c291cmNlIG1hbmFnZXJzLgorCisgICAgUHJvdmlkZXMgY29tbW9uIHF1ZXJpZXMgYW5kIENSVUQg
b3BlcmF0aW9ucyBhcyBhIChob3BlZnVsbHkpIGxpZ2h0IGxheT0KZXIKKyAgICBvdmVyIHRoZSBP
Uk0uCisgICAgIiIiCisgICAgbW9kZWxfY2xhc3MgPTNEIG9iamVjdAorICAgIGZvcmVpZ25fa2V5
X25hbWUgPTNEIE5vbmUKKworICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CisgICAgICAg
IHNlbGYuYXBwID0zRCBhcHAKKyAgICAgICAgc2VsZi5kZWZhdWx0X29yZGVyX2J5ID0zRCBOb25l
CisKKyAgICBkZWYgX2RlZmF1bHRfb3JkZXJfYnkoIHNlbGYgKToKKyAgICAgICAgIiIiCisgICAg
ICAgIFJldHVybnMgYSB0dXBsZSBvZiBjb2x1bW5zIGZvciB0aGUgZGVmYXVsdCBvcmRlciB3aGVu
IGdldHRpbmcgbXVsdD0KaXBsZSBtb2RlbHMuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4g
KCBzZWxmLm1vZGVsX2NsYXNzLmNyZWF0ZV90aW1lLCApCisKKyAgICAjTk9URTogYXQgdGhpcyBs
YXllciwgYWxsIGlkcyBhcmUgZXhwZWN0ZWQgdG8gYmUgZGVjb2RlZCBhbmQgaW4gaW50IGZvPQpy
bQorICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0tIGdldC9yZWFkL3F1ZXJ5CisgICAgZGVmIHF1ZXJ5
KCBzZWxmLCB0cmFucywgZWFnZXJsb2Fkcz0zRFRydWUsIGZpbHRlcnM9M0ROb25lLCBvcmRlcl9i
eT0zRD0KTm9uZSwgbGltaXQ9M0ROb25lLCBvZmZzZXQ9M0ROb25lLCAqKmt3YXJncyApOgorICAg
ICAgICAiIiIKKyAgICAgICAgUmV0dXJuIGEgYmFzaWMgcXVlcnkgZnJvbSBtb2RlbF9jbGFzcywg
ZmlsdGVycywgb3JkZXJfYnksIGFuZCBsaW1pPQp0IGFuZCBvZmZzZXQuCisKKyAgICAgICAgU2V0
IGVhZ2VybG9hZHMgdG8gRmFsc2UgdG8gZGlzYWJsZSB0aGVtIGZvciB0aGlzIHF1ZXJ5LgorICAg
ICAgICAiIiIKKyAgICAgICAgI3ByaW50ICdxdWVyeTonLCBlYWdlcmxvYWRzLCBmaWx0ZXJzLCBv
cmRlcl9ieSwgbGltaXQsIG9mZnNldCwga3dhPQpyZ3MKKyAgICAgICAgcXVlcnkgPTNEIHRyYW5z
LnNhX3Nlc3Npb24ucXVlcnkoIHNlbGYubW9kZWxfY2xhc3MgKQorCisgICAgICAgICMgam9pbmVk
IHRhYmxlIGxvYWRpbmcKKyAgICAgICAgaWYgZWFnZXJsb2FkcyBpcyBGYWxzZToKKyAgICAgICAg
ICAgIHF1ZXJ5ID0zRCBxdWVyeS5lbmFibGVfZWFnZXJsb2FkcyggRmFsc2UgKQorCisgICAgICAg
ICNUT0RPOiBpZiBub24tb3JtIGZpbHRlcnMgYXJlIHRoZSBvbmx5IG9wdGlvbiwgaGVyZSBpcyB3
aGVyZSB0aGV5Jz0KZCBnbworICAgICAgICBxdWVyeSA9M0Qgc2VsZi5fYXBwbHlfZmlsdGVycygg
cXVlcnksIGZpbHRlcnMgKQorICAgICAgICBxdWVyeSA9M0Qgc2VsZi5fYXBwbHlfb3JkZXJfYnlf
bGltaXRfb2Zmc2V0KCBxdWVyeSwgb3JkZXJfYnksIGxpbWk9CnQsIG9mZnNldCApCisgICAgICAg
IHJldHVybiBxdWVyeQorCisgICAgZGVmIF9hcHBseV9maWx0ZXJzKCBzZWxmLCBxdWVyeSwgZmls
dGVycyApOgorICAgICAgICAiIiIKKyAgICAgICAgQWRkIGFueSBmaWx0ZXJzIHRvIHRoZSBnaXZl
biBxdWVyeS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIGZpbHRlcnMgaXMgTm9uZToKKyAgICAg
ICAgICAgIHJldHVybiBxdWVyeQorCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKCBmaWx0ZXJz
LCBsaXN0ICk6CisgICAgICAgICAgICBmaWx0ZXJzID0zRCBbIGZpbHRlcnMgXQorICAgICAgICAj
bm90ZTogaW1wbGljaXQgQU5ECisgICAgICAgIGZvciBmaWx0ZXIgaW4gZmlsdGVyczoKKyAgICAg
ICAgICAgIHF1ZXJ5ID0zRCBxdWVyeS5maWx0ZXIoIGZpbHRlciApCisgICAgICAgIHJldHVybiBx
dWVyeQorCisgICAgZGVmIF9tdW5nZV9maWx0ZXJzKCBzZWxmLCBmaWx0ZXJzQSwgZmlsdGVyc0Ig
KToKKyAgICAgICAgIiIiCisgICAgICAgIENvbWJpbmUgdHdvIGxpc3RzIGludG8gYSBzaW5nbGUg
bGlzdC4KKworICAgICAgICAoV2hpbGUgYWxsb3dpbmcgdGhlbSB0byBiZSBOb25lLCBub24tbGlz
dHMsIG9yIGxpc3RzLikKKyAgICAgICAgIiIiCisgICAgICAgICNUT0RPOiB0aGVyZSdzIG5vdGhp
bmcgc3BlY2lmaWNhbGx5IGZpbHRlciBvciBtb2RlbC1yZWxhdGVkIGhlcmUgLT0KIG1vdmUgdG8g
dXRpbAorICAgICAgICBpZiBmaWx0ZXJzQSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGZp
bHRlcnNCCisgICAgICAgIGlmIGZpbHRlcnNCIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4g
ZmlsdGVyc0EKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoIGZpbHRlcnNBLCBsaXN0ICk6Cisg
ICAgICAgICAgICBmaWx0ZXJzQSA9M0QgWyBmaWx0ZXJzQSBdCisgICAgICAgIGlmIG5vdCBpc2lu
c3RhbmNlKCBmaWx0ZXJzQiwgbGlzdCApOgorICAgICAgICAgICAgZmlsdGVyc0IgPTNEIFsgZmls
dGVyc0IgXQorICAgICAgICByZXR1cm4gZmlsdGVyc0EgKyBmaWx0ZXJzQgorCisgICAgZGVmIF9h
cHBseV9vcmRlcl9ieV9saW1pdF9vZmZzZXQoIHNlbGYsIHF1ZXJ5LCBvcmRlcl9ieSwgbGltaXQs
IG9mZnNldD0KICk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gdGhlIHF1ZXJ5IGFmdGVy
IGFkZGluZyB0aGUgb3JkZXJfYnksIGxpbWl0LCBhbmQgb2Zmc2V0IGNsYXU9CnNlcy4KKyAgICAg
ICAgIiIiCisgICAgICAgIHF1ZXJ5ID0zRCBzZWxmLl9hcHBseV9vcmRlcl9ieSggcXVlcnksIG9y
ZGVyX2J5ICkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2FwcGx5X2xpbWl0X29mZnNldCggcXVlcnks
IGxpbWl0LCBvZmZzZXQgKQorCisgICAgZGVmIF9hcHBseV9vcmRlcl9ieSggc2VsZiwgcXVlcnks
IG9yZGVyX2J5ICk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gdGhlIHF1ZXJ5IGFmdGVy
IGFkZGluZyB0aGUgb3JkZXJfYnkgY2xhdXNlcy4KKworICAgICAgICBVc2UgdGhlIG1hbmFnZXIn
cyBkZWZhdWx0X29yZGVyX2J5IGlmIG9yZGVyX2J5IGlzIE5vbmUuCisgICAgICAgICIiIgorICAg
ICAgICBpZiBvcmRlcl9ieSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5Lm9yZGVy
X2J5KCAqc2VsZi5kZWZhdWx0X29yZGVyX2J5KCkgKQorCisgICAgICAgIGlmIGlzaW5zdGFuY2Uo
IG9yZGVyX2J5LCAoIGxpc3QsIHR1cGxlICkgKToKKyAgICAgICAgICAgIHJldHVybiBxdWVyeS5v
cmRlcl9ieSggKm9yZGVyX2J5ICkKKyAgICAgICAgcmV0dXJuIHF1ZXJ5Lm9yZGVyX2J5KCBvcmRl
cl9ieSApCisKKyAgICBkZWYgX2FwcGx5X2xpbWl0X29mZnNldCggc2VsZiwgcXVlcnksIGxpbWl0
LCBvZmZzZXQgKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgcXVlcnkgYWZ0ZXIg
YXBwbHlpbmcgdGhlIGdpdmVuIGxpbWl0IGFuZCBvZmZzZXQgKGlmIG5vdD0KIE5vbmUpLgorICAg
ICAgICAiIiIKKyAgICAgICAgaWYgbGltaXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBxdWVy
eSA9M0QgcXVlcnkubGltaXQoIGxpbWl0ICkKKyAgICAgICAgaWYgb2Zmc2V0IGlzIG5vdCBOb25l
OgorICAgICAgICAgICAgcXVlcnkgPTNEIHF1ZXJ5Lm9mZnNldCggb2Zmc2V0ICkKKyAgICAgICAg
cmV0dXJuIHF1ZXJ5CisKKyAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBjb21tb24gcXVlcmllcwor
ICAgIGRlZiBvbmUoIHNlbGYsIHRyYW5zLCAqKmt3YXJncyApOgorICAgICAgICAiIiIKKyAgICAg
ICAgU2VuZHMga3dhcmdzIHRvIGJ1aWxkIHRoZSBxdWVyeSBhbmQgcmV0dXJucyBvbmUgYW5kIG9u
bHkgb25lIG1vZGVsLgorICAgICAgICAiIiIKKyAgICAgICAgcXVlcnkgPTNEIHNlbGYucXVlcnko
IHRyYW5zLCAqKmt3YXJncyApCisgICAgICAgIHJldHVybiBzZWxmLl9vbmVfd2l0aF9yZWNhc3Rf
ZXJyb3JzKCBxdWVyeSApCisKKyAgICBkZWYgX29uZV93aXRoX3JlY2FzdF9lcnJvcnMoIHNlbGYs
IHF1ZXJ5ICk6CisgICAgICAgICIiIgorICAgICAgICBDYWxsIHNxbGFsY2hlbXkncyBvbmUgYW5k
IHJlY2FzdCBlcnJvcnMgdG8gc2VyaWFsaXphYmxlIGVycm9ycyBpZiA9CmFueS4KKworICAgICAg
ICA6cmFpc2VzIGV4Y2VwdGlvbnMuT2JqZWN0Tm90Rm91bmQ6IGlmIG5vIG1vZGVsIGlzIGZvdW5k
CisgICAgICAgIDpyYWlzZXMgZXhjZXB0aW9ucy5JbmNvbnNpc3RlbnREYXRhYmFzZTogaWYgbW9y
ZSB0aGFuIG9uZSBtb2RlbCBpcz0KIGZvdW5kCisgICAgICAgICIiIgorICAgICAgICAjIG92ZXJy
aWRkZW4gdG8gcmFpc2Ugc2VyaWFsaXphYmxlIGVycm9ycworICAgICAgICB0cnk6CisgICAgICAg
ICAgICByZXR1cm4gcXVlcnkub25lKCkKKyAgICAgICAgZXhjZXB0IHNxbGFsY2hlbXkub3JtLmV4
Yy5Ob1Jlc3VsdEZvdW5kLCBub3RfZm91bmQ6CisgICAgICAgICAgICByYWlzZSBleGNlcHRpb25z
Lk9iamVjdE5vdEZvdW5kKCBzZWxmLm1vZGVsX2NsYXNzLl9fbmFtZV9fICsgJz0KIG5vdCBmb3Vu
ZCcgKQorICAgICAgICBleGNlcHQgc3FsYWxjaGVteS5vcm0uZXhjLk11bHRpcGxlUmVzdWx0c0Zv
dW5kLCBtdWx0aV9mb3VuZDoKKyAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuSW5jb25zaXN0
ZW50RGF0YWJhc2UoICdmb3VuZCBtb3JlIHRoYW4gb25lICcgPQorIHNlbGYubW9kZWxfY2xhc3Mu
X19uYW1lX18gKQorCisgICAgZGVmIF9vbmVfb3Jfbm9uZSggc2VsZiwgcXVlcnkgKToKKyAgICAg
ICAgIiIiCisgICAgICAgIFJldHVybiB0aGUgb2JqZWN0IGlmIGZvdW5kLCBOb25lIGlmIGl0J3Mg
bm90LgorCisgICAgICAgIDpyYWlzZXMgZXhjZXB0aW9ucy5JbmNvbnNpc3RlbnREYXRhYmFzZTog
aWYgbW9yZSB0aGFuIG9uZSBtb2RlbCBpcz0KIGZvdW5kCisgICAgICAgICIiIgorICAgICAgICB0
cnk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fb25lX3dpdGhfcmVjYXN0X2Vycm9ycyggcXVl
cnkgKQorICAgICAgICBleGNlcHQgZXhjZXB0aW9ucy5PYmplY3ROb3RGb3VuZCwgbm90X2ZvdW5k
OgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICNUT0RPOiBnZXQ/CisKKyAgICBkZWYg
YnlfaWQoIHNlbGYsIHRyYW5zLCBpZCwgKiprd2FyZ3MgKToKKyAgICAgICAgIiIiCisgICAgICAg
IEdldHMgYSBtb2RlbCBieSBwcmltYXJ5IGlkLgorICAgICAgICAiIiIKKyAgICAgICAgaWRfZmls
dGVyID0zRCBzZWxmLm1vZGVsX2NsYXNzLmlkID0zRD0zRCBpZAorICAgICAgICByZXR1cm4gc2Vs
Zi5vbmUoIHRyYW5zLCBmaWx0ZXJzPTNEaWRfZmlsdGVyLCAqKmt3YXJncyApCisKKyAgICBkZWYg
bGlzdCggc2VsZiwgdHJhbnMsIHF1ZXJ5PTNETm9uZSwgKiprd2FyZ3MgKToKKyAgICAgICAgIiIi
CisgICAgICAgIFNlbmRzIGt3YXJncyB0byBidWlsZCB0aGUgcXVlcnkgcmV0dXJuIGFsbCBtb2Rl
bHMgZm91bmQuCisgICAgICAgICIiIgorICAgICAgICBxdWVyeSA9M0QgcXVlcnkgb3Igc2VsZi5x
dWVyeSggdHJhbnMsICoqa3dhcmdzICkKKyAgICAgICAgcmV0dXJuIHF1ZXJ5LmFsbCgpCisKKyAg
ICBkZWYgX3F1ZXJ5X2J5X2lkcyggc2VsZiwgdHJhbnMsIGlkcywgZmlsdGVycz0zRE5vbmUsICoq
a3dhcmdzICk6CisgICAgICAgICIiIgorICAgICAgICBCdWlsZHMgYSBxdWVyeSB0byBmaW5kIGEg
bGlzdCBvZiBtb2RlbHMgd2l0aCB0aGUgZ2l2ZW4gbGlzdCBvZiBgaWQ9CnNgLgorICAgICAgICAi
IiIKKyAgICAgICAgaWRzX2ZpbHRlciA9M0Qgc2VsZi5tb2RlbF9jbGFzcy5pZC5pbl8oIGlkcyAp
CisgICAgICAgIHJldHVybiBzZWxmLnF1ZXJ5KCB0cmFucywgZmlsdGVycz0zRHNlbGYuX211bmdl
X2ZpbHRlcnMoIGlkc19maWx0ZT0KciwgZmlsdGVycyApLCAqKmt3YXJncyApCisKKyAgICBkZWYg
YnlfaWRzKCBzZWxmLCB0cmFucywgaWRzLCAqKmt3YXJncyApOgorICAgICAgICAiIiIKKyAgICAg
ICAgUmV0dXJucyBhbiBpbi1vcmRlciBsaXN0IG9mIG1vZGVscyB3aXRoIHRoZSBtYXRjaGluZyBp
ZHMgaW4gYGlkc2AuCisgICAgICAgICIiIgorICAgICAgICBmb3VuZCA9M0Qgc2VsZi5fcXVlcnlf
YnlfaWRzKCB0cmFucywgaWRzLCAqKmt3YXJncyApLmFsbCgpCisgICAgICAgICNUT0RPOiB0aGlz
IGRvZXMgbm90IG9yZGVyIGJ5IHRoZSBvcmlnaW5hbCAnaWRzJyBhcnJheQorCisgICAgICAgICMg
Li4uY291bGQgdXNlIGdldCAoc3VwcG9zZWRseSBzaW5jZSBmb3VuZCBhcmUgaW4gdGhlIHNlc3Np
b24sIHRoZT0KIGRiIHdvbid0IGJlIGhpdCB0d2ljZSkKKyAgICAgICAgI3JldHVybiBtYXAoIHRy
YW5zLnNhX3Nlc3Npb24ucXVlcnkoIHNlbGYubW9kZWxfY2xhc3MgKS5nZXQsIGlkcyApCisKKyAg
ICAgICAgIyAuLi5jb3VsZCBpbXBsZW1lbnQgb3duIHZlcnNpb24gaGVyZSAtIHNsb3c/CisgICAg
ICAgIHJldHVybiBzZWxmLl9vcmRlcl9pdGVtc19ieV9pZCggaWRzLCBmb3VuZCApCisgICAgICAg
ICNyZXR1cm4gZm91bmQKKworICAgIGRlZiBfb3JkZXJfaXRlbXNfYnlfaWQoIHNlbGYsIGlkcywg
aXRlbXMgKToKKyAgICAgICAgIiIiCisgICAgICAgIEdpdmVuIGEgbGlzdCBvZiAodW5pcXVlKSBp
ZHMgYW5kIGEgbGlzdCBvZiBpdGVtcyBoYXZpbmcgYW4gJ2lkJyBhdD0KdHJpYnV0ZSwKKyAgICAg
ICAgcmV0dXJuIGl0ZW1zIHRoYXQgaGF2ZSB0aGUgZ2l2ZW4gaWRzIGluIHRoYXQgb3JkZXIuCisK
KyAgICAgICAgSWYgYW4gaWQgaW4gaWRzIGlzIG5vdCBmb3VuZCBvciBpZiBhbiBpdGVtIGluIGl0
ZW1zIGRvZXNuJ3QgaGF2ZSBhPQogZ2l2ZW4KKyAgICAgICAgaWQsIHRoZXkgd2lsbCBub3QgYmUg
aW4gdGhlIHJldHVybmVkIGxpc3QuCisgICAgICAgICIiIgorICAgICAgICBJRF9BVFRSX05BTUUg
PTNEICdpZCcKKyAgICAgICAgI1RPRE86Pz8gYXNpZGUgZnJvbSBzcWxhbHguZ2V0IG1lbnRpb25l
ZCBhYm92ZSwgSSBoYXZlbid0IHNlZW4gYW4gPQppbi1TUUwgd2F5CisgICAgICAgICMgICB0byBt
YWtlIHRoaXMgaGFwcGVuLiBUaGlzIG1heSBub3QgYmUgdGhlIG1vc3QgZWZmaWNpZW50IHdheSBl
aT0KdGhlci4KKyAgICAgICAgI05PVEU6IHRoYXQgdGhpcyBpc24ndCBzb3J0aW5nIGJ5IGlkIC0g
dGhpcyBpcyBtYXRjaGluZyB0aGUgb3JkZXIgPQppbiBpdGVtcyB0byB0aGUgb3JkZXIgaW4gaWRz
CisgICAgICAgICMgbW92ZSBpdGVtcyBsaXN0IGludG8gZGljdCBieSBpZAorICAgICAgICBpdGVt
X2RpY3QgPTNEIHt9CisgICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgorICAgICAgICAgICAgaXRl
bV9pZCA9M0QgZ2V0YXR0ciggaXRlbSwgSURfQVRUUl9OQU1FLCBOb25lICkKKyAgICAgICAgICAg
IGlmIGl0ZW1faWQ6CisgICAgICAgICAgICAgICAgaXRlbV9kaWN0WyBpdGVtX2lkIF0gPTNEIGl0
ZW0KKyAgICAgICAgIyBwdWxsIGZyb20gbWFwIGluIG9yZGVyIG9mIGlkcworICAgICAgICBpbl9v
cmRlciA9M0QgW10KKyAgICAgICAgZm9yIGlkIGluIGlkczoKKyAgICAgICAgICAgIGlmIGlkIGlu
IGl0ZW1fZGljdDoKKyAgICAgICAgICAgICAgICBpbl9vcmRlci5hcHBlbmQoIGl0ZW1fZGljdFsg
aWQgXSApCisgICAgICAgIHJldHVybiBpbl9vcmRlcgorCisgICAgIyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0t
LS0gY3JlYXRlCisgICAgZGVmIGNyZWF0ZSggc2VsZiwgdHJhbnMsIGZsdXNoPTNEVHJ1ZSwgKmFy
Z3MsICoqa3dhcmdzICk6CisgICAgICAgICIiIgorICAgICAgICBHZW5lcmljYWxseSBjcmVhdGUg
YSBuZXcgbW9kZWwuCisgICAgICAgICIiIgorICAgICAgICAjIG92ZXJyaWRlIGluIHN1YmNsYXNz
ZXMKKyAgICAgICAgaXRlbSA9M0Qgc2VsZi5tb2RlbF9jbGFzcyggKmFyZ3MsICoqa3dhcmdzICkK
KyAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5hZGQoIGl0ZW0gKQorICAgICAgICBpZiBmbHVzaDoK
KyAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uZmx1c2goKQorICAgICAgICByZXR1cm4gaXRl
bQorCisgICAgZGVmIGNvcHkoIHNlbGYsIHRyYW5zLCBpdGVtLCAqKmt3YXJncyApOgorICAgICAg
ICAiIiIKKyAgICAgICAgQ2xvbmUgb3IgY29weSBhbiBpdGVtLgorICAgICAgICAiIiIKKyAgICAg
ICAgcmFpc2UgZXhjZXB0aW9ucy5Ob3RJbXBsZW1lbnRlZCggJ0Fic3RyYWN0IG1ldGhvZCcgKQor
CisgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0tLS0gdXBkYXRlCisgICAgZGVmIHVwZGF0ZSggc2VsZiwg
dHJhbnMsIGl0ZW0sIG5ld192YWx1ZXMsIGZsdXNoPTNEVHJ1ZSwgKiprd2FyZ3MgKToKKyAgICAg
ICAgIiIiCisgICAgICAgIEdpdmVuIGEgZGljdGlvbmFyeSBvZiBuZXcgdmFsdWVzLCB1cGRhdGUg
YGl0ZW1gIGFuZCByZXR1cm4gaXQuCisKKyAgICAgICAgLi5ub3RlOiBOTyB2YWxpZGF0aW9uIG9y
IGRlc2VyaWFsaXphdGlvbiBvY2N1cnMgaGVyZS4KKyAgICAgICAgIiIiCisgICAgICAgIHRyYW5z
LnNhX3Nlc3Npb24uYWRkKCBpdGVtICkKKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gbmV3X3Zh
bHVlcy5pdGVtcygpOgorICAgICAgICAgICAgaWYgaGFzYXR0ciggaXRlbSwga2V5ICk6CisgICAg
ICAgICAgICAgICAgc2V0YXR0ciggaXRlbSwga2V5LCB2YWx1ZSApCisgICAgICAgIGlmIGZsdXNo
OgorICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCisgICAgICAgIHJldHVybiBp
dGVtCisKKyAgICAjVE9ETzogeWFnbmk/CisgICAgZGVmIGFzc29jaWF0ZSggc2VsZiwgdHJhbnMs
IGFzc29jaWF0ZV93aXRoLCBpdGVtLCBmb3JlaWduX2tleV9uYW1lPTNETj0Kb25lICk6CisgICAg
ICAgICIiIgorICAgICAgICBHZW5lcmljYWxseSBhc3NvY2lhdGUgYGl0ZW1gIHdpdGggYGFzc29j
aWF0ZV93aXRoYCBiYXNlZCBvbiBgZm9yZWk9CmduX2tleV9uYW1lYC4KKyAgICAgICAgIiIiCisg
ICAgICAgIGZvcmVpZ25fa2V5X25hbWUgPTNEIGZvcmVpZ25fa2V5X25hbWUgb3Igc2VsZi5mb3Jl
aWduX2tleV9uYW1lCisgICAgICAgIHNldGF0dHIoIGFzc29jaWF0ZV93aXRoLCBmb3JlaWduX2tl
eV9uYW1lLCBpdGVtICkKKyAgICAgICAgcmV0dXJuIGl0ZW0KKworICAgIGRlZiBxdWVyeV9hc3Nv
Y2lhdGVkKCBzZWxmLCB0cmFucywgYXNzb2NpYXRlZF9tb2RlbF9jbGFzcywgaXRlbSwgZm9yZWk9
CmduX2tleV9uYW1lPTNETm9uZSApOgorICAgICAgICAiIiIKKyAgICAgICAgR2VuZXJpY2FsbHkg
cXVlcnkgb3RoZXIgaXRlbXMgdGhhdCBoYXZlIGJlZW4gYXNzb2NpYXRlZCB3aXRoIHRoaXMgPQpg
aXRlbWAuCisgICAgICAgICIiIgorICAgICAgICBmb3JlaWduX2tleV9uYW1lID0zRCBmb3JlaWdu
X2tleV9uYW1lIG9yIHNlbGYuZm9yZWlnbl9rZXlfbmFtZQorICAgICAgICBmb3JlaWduX2tleSA9
M0QgZ2V0YXR0ciggYXNzb2NpYXRlZF9tb2RlbF9jbGFzcywgZm9yZWlnbl9rZXlfbmFtZSApCisg
ICAgICAgIHJldHVybiB0cmFucy5zYV9zZXNzaW9uLnF1ZXJ5KCBhc3NvY2lhdGVkX21vZGVsX2Ns
YXNzICkuZmlsdGVyKCBmbz0KcmVpZ25fa2V5ID0zRD0zRCBpdGVtICkKKworICAgICMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS09Ci0tLS0tIGRlbGV0ZQorICAgICMgYSByZW5hbWUgb2Ygc3FsIERFTEVURSB0byBkaWZm
ZXJlbnRpYXRlIGZyb20gdGhlIEdhbGF4eSBub3Rpb24gb2YgbWE9CnJrX2FzX2RlbGV0ZWQKKyAg
ICAjZGVmIGRlc3Ryb3koIHNlbGYsIHRyYW5zLCBpdGVtLCAqKmt3YXJncyApOgorICAgICMgICAg
cmV0dXJuIGl0ZW0KKworCisjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRCBTRVJJQUxJWkVSUy90b19kaWN0LGZyb21fZGlj
dAorY2xhc3MgTW9kZWxTZXJpYWxpemluZ0Vycm9yKCBleGNlcHRpb25zLkludGVybmFsU2VydmVy
RXJyb3IgKToKKyAgICAiIiJUaHJvd24gd2hlbiByZXF1ZXN0IG1vZGVsIHZhbHVlcyBjYW4ndCBi
ZSBzZXJpYWxpemVkIiIiCisgICAgcGFzcworCisKK2NsYXNzIE1vZGVsRGVzZXJpYWxpemluZ0Vy
cm9yKCBleGNlcHRpb25zLk9iamVjdEF0dHJpYnV0ZUludmFsaWRFeGNlcHRpb24gPQopOgorICAg
ICIiIlRocm93biB3aGVuIGFuIGluY29taW5nIHZhbHVlIGlzbid0IHVzYWJsZSBieSB0aGUgbW9k
ZWwKKyAgICAoYmFkIHR5cGUsIG91dCBvZiByYW5nZSwgZXRjLikKKyAgICAiIiIKKyAgICBwYXNz
CisKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0tCitjbGFzcyBNb2RlbFNlcmlhbGl6ZXIoIG9i
amVjdCApOgorICAgICIiIgorICAgIFR1cm5zIG1vZGVscyBpbnRvIEpTT05hYmxlIGRpY3RzLgor
CisgICAgTWFpbnRhaW5zIGEgbWFwIG9mIHJlcXVlc3RhYmxlIGtleXMgYW5kIHRoZSBDYWxsYWJs
ZSgpIHNlcmlhbGl6ZXIgZnVuYz0KdGlvbnMKKyAgICB0aGF0IHNob3VsZCBiZSBjYWxsZWQgZm9y
IHRob3NlIGtleXMuCisgICAgRS5nLiB7ICd4JyA6IGxhbWJkYSB0cmFucywgaXRlbSwga2V5OiBp
dGVtLngsIC4uLiB9CisKKyAgICBUbyBzZXJpYWxpemUgY2FsbDoKKyAgICAgICAgbXlfc2VyaWFs
aXplciA9M0QgTXlTZXJpYWxpemVyKCBhcHAgKQorICAgICAgICAuLi4KKyAgICAgICAga2V5c190
b19zZXJpYWxpemUgPTNEIFsgJ2lkJywgJ25hbWUnLCAnYXR0cjEnLCAnYXR0cjInLCAuLi4gXQor
ICAgICAgICBpdGVtX2RpY3QgPTNEIE15U2VyaWFsaXplci5zZXJpYWxpemUoIHRyYW5zLCBteV9p
dGVtLCBrZXlzX3RvX3Nlcmk9CmFsaXplICkKKyAgICAgICAgIyBpZiBhIGtleSB0byBzZXJpYWxp
emUgaXMgbm90IGxpc3RlZCBpbiB0aGUgU2VyaWFsaXplci5zZXJpYWxpemFiPQpsZV9rZXlzIG9y
IHNlcmlhbGl6ZXJzLCBpdCB3aWxsIG5vdCBiZSBhZGRlZAorICAgICIiIgorCisgICAgZGVmIF9f
aW5pdF9fKCBzZWxmLCBhcHAgKToKKyAgICAgICAgIiIiCisgICAgICAgIFNldCB1cCBzZXJpYWxp
emVyIG1hcCwgYW55IGFkZGl0aW9uYWwgc2VyaWFsaXphYmxlIGtleXMsIGFuZCB2aWV3cz0KIGhl
cmUuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmFwcCA9M0QgYXBwCisgICAgICAgPTIwCisg
ICAgICAgICMgYSBtYXAgb2YgZGljdGlvbmFyeSBrZXlzIHRvIHRoZSBmdW5jdGlvbnMgKG9mdGVu
IGxhbWJkYXMpIHRoYXQgYz0KcmVhdGUgdGhlIHZhbHVlcyBmb3IgdGhvc2Uga2V5cworICAgICAg
ICBzZWxmLnNlcmlhbGl6ZXJzID0zRCB7fQorICAgICAgICAjIGEgbGlzdCBvZiB2YWxpZCBzZXJp
YWxpemFibGUga2V5cyB0aGF0IGNhbiB1c2UgdGhlIGRlZmF1bHQgKHN0cmk9Cm5nKSBzZXJpYWxp
emVyCisgICAgICAgICMgICB0aGlzIGFsbG93cyB1cyB0bzogJ21lbnRpb24nIHRoZSBrZXkgd2l0
aG91dCBhZGRpbmcgdGhlIGRlZmF1bD0KdCBzZXJpYWxpemVyCisgICAgICAgICNOT1RFOiBpZiBh
IGtleSBpcyByZXF1ZXN0ZWQgdGhhdCBpcyBpbiBuZWl0aGVyIHNlcmlhbGl6YWJsZV9rZXlzID0K
b3Igc2VyaWFsaXplcnMsIGl0IGlzIG5vdCByZXR1cm5lZAorICAgICAgICBzZWxmLnNlcmlhbGl6
YWJsZV9rZXlzID0zRCBbXQorICAgICAgICAjIGFkZCBzdWJjbGFzcyBzZXJpYWxpemVycyBkZWZp
bmVkIHRoZXJlCisgICAgICAgIHNlbGYuYWRkX3NlcmlhbGl6ZXJzKCkKKworICAgICAgICAjIHZp
ZXdzIGFyZSBjb2xsZWN0aW9ucyBvZiBzZXJpYWxpemFibGUgYXR0cmlidXRlcyAoYSBuYW1lZCBh
cnJheSA9Cm9mIGtleXMpCisgICAgICAgICMgICBpbnNwaXJlZCBieSBtb2RlbC5kaWN0X3t2aWV3
fV92aXNpYmxlX2tleXMKKyAgICAgICAgc2VsZi52aWV3cyA9M0Qge30KKyAgICAgICAgc2VsZi5k
ZWZhdWx0X3ZpZXcgPTNEIE5vbmUKKworICAgICMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi49Ci4uLi4uIHNlcmlhbGl6
aW5nCisgICAgZGVmIGFkZF9zZXJpYWxpemVycyggc2VsZiApOgorICAgICAgICAiIiIKKyAgICAg
ICAgUmVnaXN0ZXIgYSBtYXAgb2YgYXR0cmlidXRlIGtleXMgLT4gc2VyaWFsaXppbmcgZnVuY3Rp
b25zIHRoYXQgd2lsPQpsIHNlcmlhbGl6ZQorICAgICAgICB0aGUgYXR0cmlidXRlLgorICAgICAg
ICAiIiIKKyAgICAgICAgIyB0byBiZSBvdmVycmlkZGVuIGluIHN1YmNsYXNzZXMKKyAgICAgICAg
cGFzcworCisgICAgZGVmIHNlcmlhbGl6ZSggc2VsZiwgdHJhbnMsIGl0ZW0sIGtleXMgKToKKyAg
ICAgICAgIiIiCisgICAgICAgIFNlcmlhbGl6ZSB0aGUgbW9kZWwgYGl0ZW1gIHRvIGEgZGljdGlv
bmFyeS4KKworICAgICAgICBHaXZlbiBtb2RlbCBgaXRlbWAgYW5kIHRoZSBsaXN0IGBrZXlzYCwg
Y3JlYXRlIGFuZCByZXR1cm4gYSBkaWN0aW89Cm5hcnkKKyAgICAgICAgYnVpbHQgZnJvbSBlYWNo
IGtleSBpbiBga2V5c2AgdGhhdCBhbHNvIGV4aXN0cyBpbiBgc2VyaWFsaXplcnNgIGFuZAorICAg
ICAgICB2YWx1ZXMgb2YgY2FsbGluZyB0aGUga2V5ZWQvbmFtZWQgc2VyaWFsaXplcnMgb24gaXRl
bS4KKyAgICAgICAgIiIiCisgICAgICAgICMgbWFpbiBpbnRlcmZhY2UgZm4gZm9yIGNvbnZlcnRp
bmcgYSBtb2RlbCB0byBhIGRpY3QKKyAgICAgICAgcmV0dXJuZWQgPTNEIHt9CisgICAgICAgIGZv
ciBrZXkgaW4ga2V5czoKKyAgICAgICAgICAgICMgY2hlY2sgYm90aCBzZXJpYWxpemVycyBhbmQg
c2VyaWFsaXphYmxlIGtleXMKKyAgICAgICAgICAgIGlmIGtleSBpbiBzZWxmLnNlcmlhbGl6ZXJz
OgorICAgICAgICAgICAgICAgIHJldHVybmVkWyBrZXkgXSA9M0Qgc2VsZi5zZXJpYWxpemVyc1sg
a2V5IF0oIHRyYW5zLCBpdGVtLCA9CmtleSApCisgICAgICAgICAgICBlbGlmIGtleSBpbiBzZWxm
LnNlcmlhbGl6YWJsZV9rZXlzOgorICAgICAgICAgICAgICAgIHJldHVybmVkWyBrZXkgXSA9M0Qg
c2VsZi5kZWZhdWx0X3NlcmlhbGl6ZXIoIHRyYW5zLCBpdGVtLCA9CmtleSApCisgICAgICAgICAg
ICAjIGlnbm9yZSBiYWQvdW5yZWcga2V5cworICAgICAgICByZXR1cm4gcmV0dXJuZWQKKworICAg
IGRlZiBkZWZhdWx0X3NlcmlhbGl6ZXIoIHNlbGYsIHRyYW5zLCBpdGVtLCBrZXkgKToKKyAgICAg
ICAgIiIiCisgICAgICAgIFNlcmlhbGl6ZSB0aGUgYGl0ZW1gJ3MgYXR0cmlidXRlIG5hbWVkIGBr
ZXlgLgorICAgICAgICAiIiIKKyAgICAgICAgI1RPRE86Pz8gcG9pbnQgb2YgY2hhbmdlIGJ1dCBu
b3QgcmVhbGx5IG5lY2Vzc2FyeT8KKyAgICAgICAgcmV0dXJuIGdldGF0dHIoIGl0ZW0sIGtleSAp
CisKKyAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBzZXJpYWxpemVycyBmb3IgY29tbW9uIGdhbGF4
eSBvYmplY3RzCisgICAgZGVmIHNlcmlhbGl6ZV9kYXRlKCBzZWxmLCB0cmFucywgaXRlbSwga2V5
ICk6CisgICAgICAgICIiIgorICAgICAgICBTZXJpYWxpemUgYSBkYXRlIGF0dHJpYnV0ZSBvZiBg
aXRlbWAuCisgICAgICAgICIiIgorICAgICAgICBkYXRlID0zRCBnZXRhdHRyKCBpdGVtLCBrZXkg
KQorICAgICAgICByZXR1cm4gZGF0ZS5pc29mb3JtYXQoKSBpZiBkYXRlIGlzIG5vdCBOb25lIGVs
c2UgTm9uZQorCisgICAgZGVmIHNlcmlhbGl6ZV9pZCggc2VsZiwgdHJhbnMsIGl0ZW0sIGtleSAp
OgorICAgICAgICAiIiIKKyAgICAgICAgU2VyaWFsaXplIGFuIGlkIGF0dHJpYnV0ZSBvZiBgaXRl
bWAuCisgICAgICAgICIiIgorICAgICAgICBpZCA9M0QgZ2V0YXR0ciggaXRlbSwga2V5ICkKKyAg
ICAgICAgcmV0dXJuIHNlbGYuYXBwLnNlY3VyaXR5LmVuY29kZV9pZCggaWQgKSBpZiBpZCBpcyBu
b3QgTm9uZSBlbHNlIE5vPQpuZQorCisgICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLj0KLi4uLi4gc2VyaWFsaXpp
bmcgdG8gYSB2aWV3CisgICAgIyB3aGVyZSBhIHZpZXcgaXMgYSBwcmVkZWZpZWQgbGlzdCBvZiBr
ZXlzIHRvIHNlcmlhbGl6ZQorICAgIGRlZiBzZXJpYWxpemVfdG9fdmlldyggc2VsZiwgdHJhbnMs
IGl0ZW0sIHZpZXc9M0ROb25lLCBrZXlzPTNETm9uZSwgZGU9CmZhdWx0X3ZpZXc9M0ROb25lICk6
CisgICAgICAgICIiIgorICAgICAgICBVc2UgYSBwcmVkZWZpbmVkIGxpc3Qgb2Yga2V5cyAodGhl
IHN0cmluZyBgdmlld2ApIGFuZCBhbnkgYWRkaXRpb249CmFsIGtleXMKKyAgICAgICAgbGlzdGVk
IGluIGBrZXlzYC4KKworICAgICAgICBUaGUgY29tYmluYXRpb25zIGNhbiBiZToKKyAgICAgICAg
ICAgIGB2aWV3YCBvbmx5OiByZXR1cm4gdGhvc2Uga2V5cyBsaXN0ZWQgaW4gdGhlIG5hbWVkIHZp
ZXcKKyAgICAgICAgICAgIGBrZXlzYCBvbmx5OiByZXR1cm4gdGhvc2Uga2V5cyBsaXN0ZWQKKyAg
ICAgICAgICAgIG5vIGB2aWV3YCBvciBga2V5c2A6IHVzZSB0aGUgYGRlZmF1bHRfdmlld2AgaWYg
YW55CisgICAgICAgICAgICBgdmlld2AgYW5kIGBrZXlzYDogY29tYmluZSBib3RoIGludG8gb25l
IGxpc3Qgb2Yga2V5cworICAgICAgICAiIiIKKyAgICAgICAgYWxsX2tleXMgPTNEIFtdCisgICAg
ICAgIGtleXMgPTNEIGtleXMgb3IgW10KKyAgICAgICAgIyBjaG9zZSBleHBsaWNpdCBvdmVyIGNv
bmNpc2UgaGVyZQorICAgICAgICBpZiB2aWV3OgorICAgICAgICAgICAgaWYga2V5czoKKyAgICAg
ICAgICAgICAgICBhbGxfa2V5cyA9M0Qgc2VsZi5fdmlld190b19rZXlzKCB2aWV3ICkgKyBrZXlz
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFsbF9rZXlzID0zRCBzZWxmLl92
aWV3X3RvX2tleXMoIHZpZXcgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYga2V5czoK
KyAgICAgICAgICAgICAgICBhbGxfa2V5cyA9M0Qga2V5cworICAgICAgICAgICAgZWxpZiBkZWZh
dWx0X3ZpZXc6CisgICAgICAgICAgICAgICAgYWxsX2tleXMgPTNEIHNlbGYuX3ZpZXdfdG9fa2V5
cyggZGVmYXVsdF92aWV3ICkKKworICAgICAgICByZXR1cm4gc2VsZi5zZXJpYWxpemUoIHRyYW5z
LCBpdGVtLCBhbGxfa2V5cyApCisKKyAgICBkZWYgX3ZpZXdfdG9fa2V5cyggc2VsZiwgdmlldz0z
RE5vbmUgKToKKyAgICAgICAgIiIiCisgICAgICAgIENvbnZlcnRzIGEga25vd24gdmlldyBpbnRv
IGEgbGlzdCBvZiBrZXlzLgorCisgICAgICAgIDpyYWlzZXMgTW9kZWxTZXJpYWxpemluZ0Vycm9y
OiBpZiB0aGUgdmlldyBpcyBub3QgbGlzdGVkIGluIGBzZWxmLj0Kdmlld3NgLgorICAgICAgICAi
IiIKKyAgICAgICAgaWYgdmlldyBpcyBOb25lOgorICAgICAgICAgICAgdmlldyA9M0Qgc2VsZi5k
ZWZhdWx0X3ZpZXcKKyAgICAgICAgaWYgdmlldyBub3QgaW4gc2VsZi52aWV3czoKKyAgICAgICAg
ICAgIHJhaXNlIE1vZGVsU2VyaWFsaXppbmdFcnJvciggJ3Vua25vd24gdmlldycsIHZpZXc9M0R2
aWV3LCBhdmFpPQpsYWJsZV92aWV3cz0zRHNlbGYudmlld3MgKQorICAgICAgICByZXR1cm4gc2Vs
Zi52aWV3c1sgdmlldyBdWzpdCisKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0tCitjbGFzcyBN
b2RlbERlc2VyaWFsaXplciggb2JqZWN0ICk6CisgICAgIiIiCisgICAgQW4gb2JqZWN0IHRoYXQg
Y29udmVydHMgYW4gaW5jb21pbmcgc2VyaWFsaXplZCBkaWN0IGludG8gdmFsdWVzIHRoYXQgYz0K
YW4gYmUKKyAgICBkaXJlY3RseSBhc3NpZ25lZCB0byBhbiBpdGVtJ3MgYXR0cmlidXRlcyBhbmQg
YXNzaWducyB0aGVtLgorICAgICIiIgorICAgICM6IHRoZSBjbGFzcyB1c2VkIHRvIGNyZWF0ZSB0
aGlzIGRlc2VyaWFsaXplcidzIGdlbmVyaWNhbGx5IGFjY2Vzc2libGU9CiBtb2RlbF9tYW5hZ2Vy
CisgICAgbW9kZWxfbWFuYWdlcl9jbGFzcyA9M0QgTm9uZQorCisgICAgZGVmIF9faW5pdF9fKCBz
ZWxmLCBhcHAgKToKKyAgICAgICAgIiIiCisgICAgICAgIFNldCB1cCBkZXNlcmlhbGl6ZXJzIGFu
ZCB2YWxpZGF0b3IuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmFwcCA9M0QgYXBwCisKKyAg
ICAgICAgc2VsZi5kZXNlcmlhbGl6ZXJzID0zRCB7fQorICAgICAgICBzZWxmLmRlc2VyaWFsaXph
YmxlX2tleXMgPTNEIFtdCisgICAgICAgIHNlbGYuYWRkX2Rlc2VyaWFsaXplcnMoKQorICAgICAg
ICAjIGEgc3ViIG9iamVjdCB0aGF0IGNhbiB2YWxpZGF0ZSBpbmNvbWluZyB2YWx1ZXMKKyAgICAg
ICAgc2VsZi52YWxpZGF0ZSA9M0QgTW9kZWxWYWxpZGF0b3IoIHNlbGYuYXBwICkKKworICAgICAg
ICAjIGNyZWF0ZSBhIGdlbmVyaWNhbGx5IGFjY2Vzc2libGUgbWFuYWdlciBmb3IgdGhlIG1vZGVs
IHRoaXMgZGVzZXI9CmlhbGl6ZXIgd29ya3Mgd2l0aC9mb3IKKyAgICAgICAgc2VsZi5tYW5hZ2Vy
ID0zRCBOb25lCisgICAgICAgIGlmIHNlbGYubW9kZWxfbWFuYWdlcl9jbGFzczoKKyAgICAgICAg
ICAgc2VsZi5tYW5hZ2VyID0zRCBzZWxmLm1vZGVsX21hbmFnZXJfY2xhc3MoIHNlbGYuYXBwICkK
KworICAgIGRlZiBhZGRfZGVzZXJpYWxpemVycyggc2VsZiApOgorICAgICAgICAiIiIKKyAgICAg
ICAgUmVnaXN0ZXIgYSBtYXAgb2YgYXR0cmlidXRlIGtleXMgLT4gZnVuY3Rpb25zIHRoYXQgd2ls
bCBkZXNlcmlhbGl6PQplIGRhdGEKKyAgICAgICAgaW50byBhdHRyaWJ1dGVzIHRvIGJlIGFzc2ln
bmVkIHRvIHRoZSBpdGVtLgorICAgICAgICAiIiIKKyAgICAgICAgIyB0byBiZSBvdmVycmlkZGVu
IGluIHN1YmNsYXNzZXMKKyAgICAgICAgcGFzcworCisgICAgZGVmIGRlc2VyaWFsaXplKCBzZWxm
LCB0cmFucywgaXRlbSwgZGF0YSwgZmx1c2g9M0RUcnVlICk6CisgICAgICAgICIiIgorICAgICAg
ICBDb252ZXJ0IGFuIGluY29taW5nIHNlcmlhbGl6ZWQgZGljdCBpbnRvIHZhbHVlcyB0aGF0IGNh
biBiZQorICAgICAgICBkaXJlY3RseSBhc3NpZ25lZCB0byBhbiBpdGVtJ3MgYXR0cmlidXRlcyBh
bmQgYXNzaWduIHRoZW0KKyAgICAgICAgIiIiCisgICAgICAgIHNhX3Nlc3Npb24gPTNEIHNlbGYu
YXBwLm1vZGVsLmNvbnRleHQKKyAgICAgICAgbmV3X2RpY3QgPTNEIHt9CisgICAgICAgIGZvciBr
ZXksIHZhbCBpbiBkYXRhLml0ZW1zKCk6CisgICAgICAgICAgICBpZiBrZXkgaW4gc2VsZi5kZXNl
cmlhbGl6ZXJzOgorICAgICAgICAgICAgICAgIG5ld19kaWN0WyBrZXkgXSA9M0Qgc2VsZi5kZXNl
cmlhbGl6ZXJzWyBrZXkgXSggdHJhbnMsIGl0ZW09Ciwga2V5LCB2YWwgKQorICAgICAgICAgICAg
IyFpbXBvcnRhbnQ6IGRvbid0IGVycm9yIG9uIHVucmVnLiBrZXlzIC0tIG1hbnkgY2xpZW50cyB3
aWxsIGE9CmRkIHdlaXJkIGFzcyBrZXlzIG9udG8gdGhlIG1vZGVsCisKKyAgICAgICAgI1RPRE86
Pz8gYWRkIGFuZCBmbHVzaCBoZXJlIG9yIGluIG1hbmFnZXI/CisgICAgICAgIGlmIGZsdXNoIGFu
ZCBsZW4oIG5ld19kaWN0ICk6CisgICAgICAgICAgICBzYV9zZXNzaW9uLmFkZCggaXRlbSApCisg
ICAgICAgICAgICBzYV9zZXNzaW9uLmZsdXNoKCkKKworICAgICAgICByZXR1cm4gbmV3X2RpY3QK
KworICAgICMgLi4uIGNvbW1vbiBkZXNlcmlhbGl6ZXJzIGZvciBwcmltaXRpdmVzCisgICAgZGVm
IGRlZmF1bHRfZGVzZXJpYWxpemVyKCBzZWxmLCB0cmFucywgaXRlbSwga2V5LCB2YWwgKToKKyAg
ICAgICAgIiIiCisgICAgICAgIElmIHRoZSBpbmNvbWluZyBgdmFsYCBpcyBkaWZmZXJlbnQgdGhh
biB0aGUgYGl0ZW1gIHZhbHVlIGNoYW5nZSBpdAorICAgICAgICBhbmQsIGluIGVpdGhlciBjYXNl
LCByZXR1cm4gdGhlIHZhbHVlLgorICAgICAgICAiIiIKKyAgICAgICAgI1RPRE86IHNldHMgdGhl
IGl0ZW0gYXR0cmlidXRlIHRvIHZhbHVlICh0aGlzIG1heSBub3Qgd29yayBpbiBhbGwgPQppbnN0
YW5jZXMpCisKKyAgICAgICAgIyBvbmx5IGRvIHRoZSBmb2xsb3dpbmcgaWYgdmFsID0zRD0zRCBn
ZXRhdHRyKCBpdGVtLCBrZXkgKQorICAgICAgICBpZiBoYXNhdHRyKCBpdGVtLCBrZXkgKSBhbmQg
Z2V0YXR0ciggaXRlbSwga2V5ICkgIT0zRCB2YWw6CisgICAgICAgICAgICBzZXRhdHRyKCBpdGVt
LCBrZXksIHZhbCApCisgICAgICAgIHJldHVybiB2YWwKKworICAgIGRlZiBkZXNlcmlhbGl6ZV9i
YXNlc3RyaW5nKCBzZWxmLCB0cmFucywgaXRlbSwga2V5LCB2YWwgKToKKyAgICAgICAgdmFsID0z
RCBzZWxmLnZhbGlkYXRlLmJhc2VzdHJpbmcoIGtleSwgdmFsICkKKyAgICAgICAgcmV0dXJuIHNl
bGYuZGVmYXVsdF9kZXNlcmlhbGl6ZXIoIHRyYW5zLCBpdGVtLCBrZXksIHZhbCApCisKKyAgICBk
ZWYgZGVzZXJpYWxpemVfYm9vbCggc2VsZiwgdHJhbnMsIGl0ZW0sIGtleSwgdmFsICk6CisgICAg
ICAgIHZhbCA9M0Qgc2VsZi52YWxpZGF0ZS5ib29sKCBrZXksIHZhbCApCisgICAgICAgIHJldHVy
biBzZWxmLmRlZmF1bHRfZGVzZXJpYWxpemVyKCB0cmFucywgaXRlbSwga2V5LCB2YWwgKQorCisg
ICAgZGVmIGRlc2VyaWFsaXplX2ludCggc2VsZiwgdHJhbnMsIGl0ZW0sIGtleSwgdmFsLCBtaW49
M0ROb25lLCBtYXg9M0RObz0KbmUgKToKKyAgICAgICAgdmFsID0zRCBzZWxmLnZhbGlkYXRlLmlu
dF9yYW5nZSgga2V5LCB2YWwsIG1pbiwgbWF4ICkKKyAgICAgICAgcmV0dXJuIHNlbGYuZGVmYXVs
dF9kZXNlcmlhbGl6ZXIoIHRyYW5zLCBpdGVtLCBrZXksIHZhbCApCisKKyAgICAjIC4uLiBjb21t
b24gZGVzZXJpYWxpemVycyBmb3IgR2FsYXh5CisgICAgZGVmIGRlc2VyaWFsaXplX2dlbm9tZV9i
dWlsZCggc2VsZiwgdHJhbnMsIGl0ZW0sIGtleSwgdmFsICk6CisgICAgICAgICIiIgorICAgICAg
ICBNYWtlIHN1cmUgYHZhbGAgaXMgYSB2YWxpZCBkYmtleSBhbmQgYXNzaWduIGl0LgorICAgICAg
ICAiIiIKKyAgICAgICAgdmFsID0zRCBzZWxmLnZhbGlkYXRlLmdlbm9tZV9idWlsZCggdHJhbnMs
IGtleSwgdmFsICkKKyAgICAgICAgcmV0dXJuIHNlbGYuZGVmYXVsdF9kZXNlcmlhbGl6ZXIoIHRy
YW5zLCBpdGVtLCBrZXksIHZhbCApCisKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0tCisjVE9E
Tzo/PyBhIGxhcmdlciBxdWVzdGlvbiBpczogd2hpY2ggc2hvdWxkIGJlIGZpcnN0PyBEZXNlcmlh
bGl6ZSB0aGVuIHZhbD0KaWRhdGUgLSBvciAtIHZhbGlkYXRlIHRoZW4gZGVzZXJpYWxpemU/Citj
bGFzcyBNb2RlbFZhbGlkYXRvciggb2JqZWN0ICk6CisgICAgIiIiCisgICAgQW4gb2JqZWN0IHRo
YXQgaW5zcGVjdHMgYSBkaWN0aW9uYXJ5IChnZW5lcmFsbHkgbWVhbnQgdG8gYmUgYSBzZXQgb2YK
KyAgICBuZXcvdXBkYXRlZCB2YWx1ZXMgZm9yIHRoZSBtb2RlbCkgYW5kIHJhaXNlcyBhbiBlcnJv
ciBpZiBhIHZhbHVlIGlzCisgICAgbm90IGFjY2VwdGFibGUuCisgICAgIiIiCisKKyAgICBkZWYg
X19pbml0X18oIHNlbGYsIGFwcCwgKmFyZ3MsICoqa3dhcmdzICk6CisgICAgICAgIHNlbGYuYXBw
ID0zRCBhcHAKKworICAgIGRlZiB0eXBlKCBzZWxmLCBrZXksIHZhbCwgdHlwZXMgKToKKyAgICAg
ICAgIiIiCisgICAgICAgIENoZWNrIGB2YWxgIGFnYWluc3QgdGhlIHR5cGUgKG9yIHR1cGxlIG9m
IHR5cGVzKSBpbiBgdHlwZXNgLgorCisgICAgICAgIDpyYWlzZXMgZXhjZXB0aW9ucy5SZXF1ZXN0
UGFyYW1ldGVySW52YWxpZEV4Y2VwdGlvbjogaWYgbm90IGFuIGlucz0KdGFuY2UuCisgICAgICAg
ICIiIgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSggdmFsLCB0eXBlcyApOgorICAgICAgICAg
ICAgbXNnID0zRCAnbXVzdCBiZSBhIHR5cGU6ICVzJyAlICggc3RyKCB0eXBlcyApICkKKyAgICAg
ICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuUmVxdWVzdFBhcmFtZXRlckludmFsaWRFeGNlcHRpb24o
IG1zZywga2V5PTNEPQprZXksIHZhbD0zRHZhbCApCisgICAgICAgIHJldHVybiB2YWwKKworICAg
ICMgdmFsaWRhdG9ycyBmb3IgcHJpbWl0aXZlcyBhbmQgY29tcG91bmRzIG9mIHByaW1pdGl2ZXMK
KyAgICBkZWYgYmFzZXN0cmluZyggc2VsZiwga2V5LCB2YWwgKToKKyAgICAgICAgcmV0dXJuIHNl
bGYudHlwZSgga2V5LCB2YWwsIGJhc2VzdHJpbmcgKQorCisgICAgZGVmIGJvb2woIHNlbGYsIGtl
eSwgdmFsICk6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGUoIGtleSwgdmFsLCBib29sICkKKwor
ICAgIGRlZiBpbnQoIHNlbGYsIGtleSwgdmFsICk6CisgICAgICAgIHJldHVybiBzZWxmLnR5cGUo
IGtleSwgdmFsLCBpbnQgKQorCisgICAgZGVmIG51bGxhYmxlX2Jhc2VzdHJpbmcoIHNlbGYsIGtl
eSwgdmFsICk6CisgICAgICAgICIiIgorICAgICAgICBNdXN0IGJlIGEgYmFzZXN0cmluZyBvciBO
b25lLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYudHlwZSgga2V5LCB2YWwsICgg
YmFzZXN0cmluZywgdHlwZSggTm9uZSApICkgKQorCisgICAgZGVmIGludF9yYW5nZSggc2VsZiwg
a2V5LCB2YWwsIG1pbj0zRE5vbmUsIG1heD0zRE5vbmUgKToKKyAgICAgICAgIiIiCisgICAgICAg
IE11c3QgYmUgYSBpbnQgYmV0d2VlbiBtaW4gYW5kIG1heC4KKyAgICAgICAgIiIiCisgICAgICAg
IHZhbCA9M0Qgc2VsZi50eXBlKCBrZXksIHZhbCwgaW50ICkKKyAgICAgICAgaWYgbWluIGlzIG5v
dCBOb25lIGFuZCB2YWwgPCBtaW46CisgICAgICAgICAgICByYWlzZSBleGNlcHRpb25zLlJlcXVl
c3RQYXJhbWV0ZXJJbnZhbGlkRXhjZXB0aW9uKCAibGVzcyB0aGFuID0KbWluaW11bSIsIGtleT0z
RGtleSwgdmFsPTNEdmFsLCBtaW49M0RtaW4gKQorICAgICAgICBpZiBtYXggaXMgbm90IE5vbmUg
YW5kIHZhbCA+IG1heDoKKyAgICAgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuUmVxdWVzdFBhcmFt
ZXRlckludmFsaWRFeGNlcHRpb24oICJncmVhdGVyIHRoPQphbiBtYXhpbXVtIiwga2V5PTNEa2V5
LCB2YWw9M0R2YWwsIG1heD0zRG1heCApCisgICAgICAgIHJldHVybiB2YWwKKworICAgIGRlZiBi
YXNlc3RyaW5nX2xpc3QoIHNlbGYsIGtleSwgdmFsICk6CisgICAgICAgICIiIgorICAgICAgICBN
dXN0IGJlIGEgbGlzdCBvZiBiYXNlc3RyaW5ncy4KKyAgICAgICAgIiIiCisgICAgICAgICNUT0RP
OiBIZXJlJ3Mgd2hlcmUgY29tcG91bmQgdHlwZXMgc3RhcnQgYmVjb21pbmcgYSBuaWdodG1hcmUu
IEFueT0KIG1vcmUgb3IgbW9yZSBjb21wbGV4CisgICAgICAgICMgICBhbmQgc2hvdWxkIGZpbmQg
YSBkaWZmZXJlbnQgd2F5LgorICAgICAgICB2YWwgPTNEIHNlbGYudHlwZSgga2V5LCB2YWwsIGxp
c3QgKQorICAgICAgICByZXR1cm4gWyBzZWxmLmJhc2VzdHJpbmcoIGtleSwgZWxlbSApIGZvciBl
bGVtIGluIHZhbCBdCisKKyAgICAjIHZhbGlkYXRvcnMgZm9yIEdhbGF4eQorICAgIGRlZiBnZW5v
bWVfYnVpbGQoIHNlbGYsIHRyYW5zLCBrZXksIHZhbCApOgorICAgICAgICAiIiIKKyAgICAgICAg
TXVzdCBiZSBhIHZhbGlkIGdlbm9tZV9idWlsZC9kYmtleS9yZWZlcmVuY2Uvd2hhdGV2ZXItdGhl
LWhlbGwtd2VyPQplLWNhbGxpbmctdGhlbS1ub3cuCisgICAgICAgICIiIgorICAgICAgICAjVE9E
TzogaXMgdGhpcyBjb3JyZWN0PworICAgICAgICBpZiB2YWwgaXMgTm9uZToKKyAgICAgICAgICAg
IHJldHVybiAnPycKKyAgICAgICAgZm9yIGdlbm9tZV9idWlsZF9zaG9ydG5hbWUsIGxvbmduYW1l
IGluIHNlbGYuYXBwLmdlbm9tZV9idWlsZHMuZ2V0PQpfZ2Vub21lX2J1aWxkX25hbWVzKCB0cmFu
cz0zRHRyYW5zICk6CisgICAgICAgICAgICBpZiB2YWwgPTNEPTNEIGdlbm9tZV9idWlsZF9zaG9y
dG5hbWU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbAorICAgICAgICByYWlzZSBleGNlcHRp
b25zLlJlcXVlc3RQYXJhbWV0ZXJJbnZhbGlkRXhjZXB0aW9uKCAiaW52YWxpZCByZWZlcmU9Cm5j
ZSIsIGtleT0zRGtleSwgdmFsPTNEdmFsICkKKworICAgICNkZWYgc2x1Zyggc2VsZiwgdHJhbnMs
IGl0ZW0sIGtleSwgdmFsICk6CisgICAgIyAgICAiIiJ2YWxpZGF0ZSBzbHVnIiIiCisgICAgIyAg
ICBwYXNzCisKKworIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKKyMgTWl4aW5zIChoZXJlIGZvciBub3cpCisjID0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0z
RD0zRAorY2xhc3MgQWNjZXNzaWJsZU1vZGVsSW50ZXJmYWNlKCBvYmplY3QgKToKKyAgICAiIiIK
KyAgICBBIHNlY3VyaXR5IGludGVyZmFjZSB0byBjaGVjayBpZiBhIFVzZXIgY2FuIHJlYWQvdmll
dyBhbiBpdGVtJ3MuCisKKyAgICBUaGlzIGNhbiBhbHNvIGJlIHRob3VnaHQgb2YgYXMgJ3JlYWQg
YnV0IG5vdCBtb2RpZnknIHByaXZpbGVnZXMuCisgICAgIiIiCisKKyAgICAjIGRvbid0IHdhbnQg
dG8gb3ZlcnJpZGUgYnlfaWQgc2luY2UgY29uc3VtZXJzIHdpbGwgYWxzbyB3YW50IHRvIGZldGNo
PQogdy9vIGFueSBzZWN1cml0eSBjaGVja3MKKyAgICBkZWYgaXNfYWNjZXNzaWJsZSggc2VsZiwg
dHJhbnMsIGl0ZW0sIHVzZXIgKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybiBUcnVlIGlm
IHRoZSBpdGVtIGFjY2Vzc2libGUgdG8gdXNlci4KKyAgICAgICAgIiIiCisgICAgICAgICMgb3Zl
cnJpZGUgaW4gc3ViY2xhc3NlcworICAgICAgICByYWlzZSBleGNlcHRpb25zLk5vdEltcGxlbWVu
dGVkKCAiQWJzdHJhY3QgSW50ZXJmYWNlIE1ldGhvZCIgKQorCisgICAgZGVmIGdldF9hY2Nlc3Np
YmxlKCBzZWxmLCB0cmFucywgaWQsIHVzZXIsICoqa3dhcmdzICk6CisgICAgICAgICIiIgorICAg
ICAgICBSZXR1cm4gdGhlIGl0ZW0gd2l0aCB0aGUgZ2l2ZW4gaWQgaWYgaXQncyBhY2Nlc3NpYmxl
IHRvIHVzZXIsCisgICAgICAgIG90aGVyd2lzZSByYWlzZSBhbiBlcnJvci4KKworICAgICAgICA6
cmFpc2VzIGV4Y2VwdGlvbnMuSXRlbUFjY2Vzc2liaWxpdHlFeGNlcHRpb246CisgICAgICAgICIi
IgorICAgICAgICBpdGVtID0zRCBNb2RlbE1hbmFnZXIuYnlfaWQoIHNlbGYsIHRyYW5zLCBpZCAp
CisgICAgICAgIHJldHVybiBzZWxmLmVycm9yX3VubGVzc19hY2Nlc3NpYmxlKCB0cmFucywgaXRl
bSwgdXNlciApCisKKyAgICBkZWYgZXJyb3JfdW5sZXNzX2FjY2Vzc2libGUoIHNlbGYsIHRyYW5z
LCBpdGVtLCB1c2VyICk6CisgICAgICAgICIiIgorICAgICAgICBSYWlzZSBhbiBlcnJvciBpZiB0
aGUgaXRlbSBpcyBOT1QgYWNjZXNzaWJsZSB0byB1c2VyLCBvdGhlcndpc2UgcmU9CnR1cm4gdGhl
IGl0ZW0uCisKKyAgICAgICAgOnJhaXNlcyBleGNlcHRpb25zLkl0ZW1BY2Nlc3NpYmlsaXR5RXhj
ZXB0aW9uOgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5pc19hY2Nlc3NpYmxlKCB0cmFu
cywgaXRlbSwgdXNlciApOgorICAgICAgICAgICAgcmV0dXJuIGl0ZW0KKyAgICAgICAgcmFpc2Ug
ZXhjZXB0aW9ucy5JdGVtQWNjZXNzaWJpbGl0eUV4Y2VwdGlvbiggIiVzIGlzIG5vdCBhY2Nlc3Np
YmxlPQogYnkgdXNlciIgJSAoIHNlbGYubW9kZWxfY2xhc3MuX19uYW1lX18gKSApCisKKyAgICAj
VE9ETzo/PyBhcmUgdGhlc2UgZXZlbiB1c2VmdWw/CisgICAgZGVmIGxpc3RfYWNjZXNzaWJsZSgg
c2VsZiwgdHJhbnMsIHVzZXIsICoqa3dhcmdzICk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1
cm4gYSBsaXN0IG9mIGl0ZW1zIGFjY2Vzc2libGUgdG8gdGhlIHVzZXIsIHJhaXNpbmcgYW4gZXJy
b3IgaWY9CiBBTlkKKyAgICAgICAgYXJlIGluYWNjZXNzaWJsZS4KKworICAgICAgICA6cmFpc2Vz
IGV4Y2VwdGlvbnMuSXRlbUFjY2Vzc2liaWxpdHlFeGNlcHRpb246CisgICAgICAgICIiIgorICAg
ICAgICByYWlzZSBleGNlcHRpb25zLk5vdEltcGxlbWVudGVkKCAiQWJzdHJhY3QgSW50ZXJmYWNl
IE1ldGhvZCIgKQorICAgICAgICAjTk9URTogdGhpcyB3aWxsIGJlIGEgbGFyZ2UsIGluZWZmaWNp
ZW50IGxpc3QgaWYgZmlsdGVycyBhcmUgbm90IHA9CmFzc2VkIGluIGt3YXJncworICAgICAgICAj
aXRlbXMgPTNEIE1vZGVsTWFuYWdlci5saXN0KCBzZWxmLCB0cmFucywgKiprd2FyZ3MgKQorICAg
ICAgICAjcmV0dXJuIFsgc2VsZi5lcnJvcl91bmxlc3NfYWNjZXNzaWJsZSggdHJhbnMsIGl0ZW0s
IHVzZXIgKSBmb3IgaXQ9CmVtIGluIGl0ZW1zIF0KKworICAgIGRlZiBmaWx0ZXJfYWNjZXNzaWJs
ZSggc2VsZiwgdHJhbnMsIHVzZXIsICoqa3dhcmdzICk6CisgICAgICAgICIiIgorICAgICAgICBS
ZXR1cm4gYSBsaXN0IG9mIGl0ZW1zIGFjY2Vzc2libGUgdG8gdGhlIHVzZXIuCisgICAgICAgICIi
IgorICAgICAgICByYWlzZSBleGNlcHRpb25zLk5vdEltcGxlbWVudGVkKCAiQWJzdHJhY3QgSW50
ZXJmYWNlIE1ldGhvZCIgKQorICAgICAgICAjTk9URTogdGhpcyB3aWxsIGJlIGEgbGFyZ2UsIGlu
ZWZmaWNpZW50IGxpc3QgaWYgZmlsdGVycyBhcmUgbm90ICA9CnBhc3NlZCBpbiBrd2FyZ3MKKyAg
ICAgICAgI2l0ZW1zID0zRCBNb2RlbE1hbmFnZXIubGlzdCggc2VsZiwgdHJhbnMsICoqa3dhcmdz
ICkKKyAgICAgICAgI3JldHVybiBmaWx0ZXIoIGxhbWJkYSBpdGVtOiBzZWxmLmlzX2FjY2Vzc2li
bGUoIHRyYW5zLCBpdGVtLCB1c2VyPQogKSwgaXRlbXMgKQorCisKKyMgPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PQo9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNECitjbGFz
cyBPd25hYmxlTW9kZWxJbnRlcmZhY2UoIG9iamVjdCApOgorICAgICIiIgorICAgIEEgc2VjdXJp
dHkgaW50ZXJmYWNlIHRvIGNoZWNrIGlmIGEgVXNlciBpcyBhbiBpdGVtJ3Mgb3duZXIuCisKKyAg
ICBTb21lIHJlc291cmNlcyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBVc2VyIHRoYXQgY3JlYXRl
ZCBvciBpbXBvcnRlZCB0PQpoZW0KKyAgICBhbmQgdGhlc2UgVXNlcnMgY2FuIGJlIGNvbnNpZGVy
ZWQgdGhlIG1vZGVscycgb3duZXIuCisKKyAgICBUaGlzIGNhbiBhbHNvIGJlIHRob3VnaHQgb2Yg
YXMgd3JpdGUvZWRpdCBwcml2aWxlZ2VzLgorICAgICIiIgorCisgICAgZGVmIGlzX293bmVyKCBz
ZWxmLCB0cmFucywgaXRlbSwgdXNlciApOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIFRy
dWUgaWYgdXNlciBvd25zIHRoZSBpdGVtLgorICAgICAgICAiIiIKKyAgICAgICAgIyBvdmVycmlk
ZSBpbiBzdWJjbGFzc2VzCisgICAgICAgIHJhaXNlIGV4Y2VwdGlvbnMuTm90SW1wbGVtZW50ZWQo
ICJBYnN0cmFjdCBJbnRlcmZhY2UgTWV0aG9kIiApCisKKyAgICBkZWYgZ2V0X293bmVkKCBzZWxm
LCB0cmFucywgaWQsIHVzZXIsICoqa3dhcmdzICk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1
cm4gdGhlIGl0ZW0gd2l0aCB0aGUgZ2l2ZW4gaWQgaWYgb3duZWQgYnkgdGhlIHVzZXIsCisgICAg
ICAgIG90aGVyd2lzZSByYWlzZSBhbiBlcnJvci4KKworICAgICAgICA6cmFpc2VzIGV4Y2VwdGlv
bnMuSXRlbU93bmVyc2hpcEV4Y2VwdGlvbjoKKyAgICAgICAgIiIiCisgICAgICAgIGl0ZW0gPTNE
IE1vZGVsTWFuYWdlci5ieV9pZCggc2VsZiwgdHJhbnMsIGlkICkKKyAgICAgICAgcmV0dXJuIHNl
bGYuZXJyb3JfdW5sZXNzX293bmVyKCB0cmFucywgaXRlbSwgdXNlciApCisKKyAgICBkZWYgZXJy
b3JfdW5sZXNzX293bmVyKCBzZWxmLCB0cmFucywgaXRlbSwgdXNlciApOgorICAgICAgICAiIiIK
KyAgICAgICAgUmFpc2UgYW4gZXJyb3IgaWYgdGhlIGl0ZW0gaXMgTk9UIG93bmVkIGJ5IHVzZXIs
IG90aGVyd2lzZSByZXR1cm4gPQp0aGUgaXRlbS4KKworICAgICAgICA6cmFpc2VzIGV4Y2VwdGlv
bnMuSXRlbUFjY2Vzc2liaWxpdHlFeGNlcHRpb246CisgICAgICAgICIiIgorICAgICAgICBpZiBz
ZWxmLmlzX293bmVyKCB0cmFucywgaXRlbSwgdXNlciApOgorICAgICAgICAgICAgcmV0dXJuIGl0
ZW0KKyAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5JdGVtT3duZXJzaGlwRXhjZXB0aW9uKCAiJXMg
aXMgbm90IG93bmVkIGJ5IHVzZXIiPQogJSAoIHNlbGYubW9kZWxfY2xhc3MuX19uYW1lX18gKSAp
CisKKyAgICBkZWYgbGlzdF9vd25lZCggc2VsZiwgdHJhbnMsIHVzZXIsICoqa3dhcmdzICk6Cisg
ICAgICAgICIiIgorICAgICAgICBSZXR1cm4gYSBsaXN0IG9mIGl0ZW1zIG93bmVkIGJ5IHRoZSB1
c2VyLCByYWlzaW5nIGFuIGVycm9yIGlmIEFOWQorICAgICAgICBhcmUgbm90LgorCisgICAgICAg
IDpyYWlzZXMgZXhjZXB0aW9ucy5JdGVtQWNjZXNzaWJpbGl0eUV4Y2VwdGlvbjoKKyAgICAgICAg
IiIiCisgICAgICAgICMganVzdCBhbGlhcyB0byBieV91c2VyIChlYXNpZXIvc2FtZSB0aGluZykK
KyAgICAgICAgcmV0dXJuIHNlbGYuYnlfdXNlciggdHJhbnMsIHVzZXIsICoqa3dhcmdzICkKKwor
ICAgIGRlZiBmaWx0ZXJfb3duZWQoIHNlbGYsIHRyYW5zLCB1c2VyLCAqKmt3YXJncyApOgorICAg
ICAgICAiIiIKKyAgICAgICAgUmV0dXJuIGEgbGlzdCBvZiBpdGVtcyBvd25lZCBieSB0aGUgdXNl
ci4KKyAgICAgICAgIiIiCisgICAgICAgICMganVzdCBhbGlhcyB0byBsaXN0X293bmVkCisgICAg
ICAgIHJldHVybiBzZWxmLmxpc3Rfb3duZWQoIHRyYW5zLCB1c2VyLCAqKmt3YXJncyApCisKKwor
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0tCitjbGFzcyBEZWxldGFibGVNb2RlbEludGVyZmFjZSgg
b2JqZWN0ICk6CisgICAgIiIiCisgICAgQSBtaXhpbi9pbnRlcmZhY2UgZm9yIGEgbW9kZWwgdGhh
dCBpcyBkZWxldGFibGUgKGkuZS4gaGFzIGEgJ2RlbGV0ZWQnID0KYXR0cikuCisKKyAgICBNYW55
IHJlc291cmNlcyBpbiBHYWxheHkgY2FuIGJlIG1hcmtlZCBhcyBkZWxldGVkIC0gbWVhbmluZyAo
aW4gbW9zdCBjPQphc2VzKQorICAgIHRoYXQgdGhleSBhcmUgbm8gbG9uZ2VyIG5lZWRlZCwgc2hv
dWxkIG5vdCBiZSBkaXNwbGF5ZWQsIG9yIG1heSBiZSBhY3Q9CnVhbGx5CisgICAgcmVtb3ZlZCBi
eSBhbiBhZG1pbi9zY3JpcHQuCisgICAgIiIiCisKKyAgICBkZWYgZGVsZXRlKCBzZWxmLCB0cmFu
cywgaXRlbSwgZmx1c2g9M0RUcnVlLCAqKmt3YXJncyApOgorICAgICAgICAiIiIKKyAgICAgICAg
TWFyayBhcyBkZWxldGVkIGFuZCByZXR1cm4uCisgICAgICAgICIiIgorICAgICAgICB0cmFucy5z
YV9zZXNzaW9uLmFkZCggaXRlbSApCisgICAgICAgIGl0ZW0uZGVsZXRlZCA9M0QgVHJ1ZQorICAg
ICAgICBpZiBmbHVzaDoKKyAgICAgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uZmx1c2goKQorICAg
ICAgICByZXR1cm4gaXRlbQorCisgICAgZGVmIHVuZGVsZXRlKCBzZWxmLCB0cmFucywgaXRlbSwg
Zmx1c2g9M0RUcnVlLCAqKmt3YXJncyApOgorICAgICAgICAiIiIKKyAgICAgICAgTWFyayBhcyBu
b3QgZGVsZXRlZCBhbmQgcmV0dXJuLgorICAgICAgICAiIiIKKyAgICAgICAgdHJhbnMuc2Ffc2Vz
c2lvbi5hZGQoIGl0ZW0gKQorICAgICAgICBpdGVtLmRlbGV0ZWQgPTNEIEZhbHNlCisgICAgICAg
IGlmIGZsdXNoOgorICAgICAgICAgICAgdHJhbnMuc2Ffc2Vzc2lvbi5mbHVzaCgpCisgICAgICAg
IHJldHVybiBpdGVtCisKKworY2xhc3MgRGVsZXRhYmxlTW9kZWxTZXJpYWxpemVyKCBvYmplY3Qg
KToKKworICAgIGRlZiBhZGRfc2VyaWFsaXplcnMoIHNlbGYgKToKKyAgICAgICAgcGFzcworCisK
KyNUT0RPOiB0aGVzZSBhcmUgb2YgcXVlc3Rpb25hYmxlIHZhbHVlIGlmIHdlIGRvbid0IHdhbnQg
dG8gZW5hYmxlIHVzZXJzIHRvPQogZGVsZXRlL3B1cmdlIHZpYSB1cGRhdGUKK2NsYXNzIERlbGV0
YWJsZU1vZGVsRGVzZXJpYWxpemVyKCBvYmplY3QgKToKKworICAgIGRlZiBhZGRfZGVzZXJpYWxp
emVycyggc2VsZiApOgorICAgICAgICBzZWxmLmRlc2VyaWFsaXplcnNbICdkZWxldGVkJyBdID0z
RCBzZWxmLmRlc2VyaWFsaXplX2RlbGV0ZWQKKworICAgIGRlZiBkZXNlcmlhbGl6ZV9kZWxldGVk
KCBzZWxmLCB0cmFucywgaXRlbSwga2V5LCB2YWwgKToKKyAgICAgICAgIiIiCisgICAgICAgIERl
bGV0ZSBvciB1bmRlbGV0ZSBgaXRlbWAgYmFzZWQgb24gYHZhbGAgdGhlbiByZXR1cm4gYGl0ZW0u
ZGVsZXRlZD0KYC4KKyAgICAgICAgIiIiCisgICAgICAgIG5ld19kZWxldGVkID0zRCBzZWxmLnZh
bGlkYXRlLmJvb2woIGtleSwgdmFsICkKKyAgICAgICAgaWYgbmV3X2RlbGV0ZWQgPTNEPTNEIGl0
ZW0uZGVsZXRlZDoKKyAgICAgICAgICAgIHJldHVybiBpdGVtLmRlbGV0ZWQKKyAgICAgICAgI1RP
RE86Pz8gZmx1c2g9M0RGYWxzZT8KKyAgICAgICAgaWYgbmV3X2RlbGV0ZWQ6CisgICAgICAgICAg
ICBzZWxmLm1hbmFnZXIuZGVsZXRlKCB0cmFucywgaXRlbSwgZmx1c2g9M0RGYWxzZSApCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLm1hbmFnZXIudW5kZWxldGUoIHRyYW5zLCBpdGVt
LCBmbHVzaD0zREZhbHNlICkKKyAgICAgICAgcmV0dXJuIGl0ZW0uZGVsZXRlZAorCisKKyMgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tPQotLS0tLQorY2xhc3MgUHVyZ2FibGVNb2RlbEludGVyZmFjZSggRGVsZXRh
YmxlTW9kZWxJbnRlcmZhY2UgKToKKyAgICAiIiIKKyAgICBBIG1hbmFnZXIgaW50ZXJmYWNlL21p
eGluIGZvciBhIHJlc291cmNlIHRoYXQgYWxsb3dzIGRlbGV0aW5nIGFuZCBwdXJnPQppbmcgd2hl
cmUKKyAgICBwdXJnaW5nIGlzIG9mdGVuIHJlbW92YWwgb2Ygc29tZSBhZGRpdGlvbmFsLCBub24t
ZGIgcmVzb3VyY2UgKGUuZy4gYSBkPQphdGFzZXQncworICAgIGZpbGUpLgorICAgICIiIgorCisg
ICAgZGVmIHB1cmdlKCBzZWxmLCB0cmFucywgaXRlbSwgZmx1c2g9M0RUcnVlLCAqKmt3YXJncyAp
OgorICAgICAgICAiIiIKKyAgICAgICAgTWFyayBhcyBwdXJnZWQgYW5kIHJldHVybi4KKworICAg
ICAgICBPdmVycmlkZSB0aGlzIGluIHN1YmNsYXNzZXMgdG8gZG8gdGhlIGFkZGl0aW9uYWwgcmVz
b3VyY2UgcmVtb3ZhbC4KKyAgICAgICAgIiIiCisgICAgICAgIHRyYW5zLnNhX3Nlc3Npb24uYWRk
KCBpdGVtICkKKyAgICAgICAgaXRlbS5wdXJnZWQgPTNEIFRydWUKKyAgICAgICAgaWYgZmx1c2g6
CisgICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmZsdXNoKCkKKyAgICAgICAgcmV0dXJuIGl0
ZW0KKworCitjbGFzcyBQdXJnYWJsZU1vZGVsU2VyaWFsaXplciggRGVsZXRhYmxlTW9kZWxTZXJp
YWxpemVyICk6CisKKyAgICBkZWYgYWRkX3NlcmlhbGl6ZXJzKCBzZWxmICk6CisgICAgICAgIERl
bGV0YWJsZU1vZGVsU2VyaWFsaXplci5hZGRfc2VyaWFsaXplcnMoIHNlbGYgKQorCisKK2NsYXNz
IFB1cmdhYmxlTW9kZWxEZXNlcmlhbGl6ZXIoIERlbGV0YWJsZU1vZGVsRGVzZXJpYWxpemVyICk6
CisKKyAgICBkZWYgYWRkX2Rlc2VyaWFsaXplcnMoIHNlbGYgKToKKyAgICAgICAgRGVsZXRhYmxl
TW9kZWxEZXNlcmlhbGl6ZXIuYWRkX2Rlc2VyaWFsaXplcnMoIHNlbGYgKQorICAgICAgICBzZWxm
LmRlc2VyaWFsaXplcnNbICdwdXJnZWQnIF0gPTNEIHNlbGYuZGVzZXJpYWxpemVfcHVyZ2VkCisK
KyAgICBkZWYgZGVzZXJpYWxpemVfcHVyZ2VkKCBzZWxmLCB0cmFucywgaXRlbSwga2V5LCB2YWwg
KToKKyAgICAgICAgIiIiCisgICAgICAgIElmIGB2YWxgIGlzIFRydWUsIHB1cmdlIGBpdGVtYCBh
bmQgcmV0dXJuIGBpdGVtLnB1cmdlZGAuCisgICAgICAgICIiIgorICAgICAgICBuZXdfcHVyZ2Vk
ID0zRCBzZWxmLnZhbGlkYXRlLmJvb2woIGtleSwgdmFsICkKKyAgICAgICAgaWYgbmV3X3B1cmdl
ZCA9M0Q9M0QgaXRlbS5wdXJnZWQ6CisgICAgICAgICAgICByZXR1cm4gaXRlbS5wdXJnZWQKKyAg
ICAgICAgaWYgbmV3X3B1cmdlZDoKKyAgICAgICAgICAgIHNlbGYubWFuYWdlci5wdXJnZSggdHJh
bnMsIGl0ZW0sIGZsdXNoPTNERmFsc2UgKQorICAgICAgICByZXR1cm4gc2VsZi5wdXJnZWQKCmRp
ZmYgLXIgZDcwMjFlZTk2YTgwMDg1ZDc2MDViMTY4YzczZGZkOTI5YWQ4NTFkMyAtciAwZmIzYjdk
YzMwZDZmODM3ZTBiODE2Mj0KNzcxMjAxNjkzNTM4MWFhYzcgbGliL2dhbGF4eS9tYW5hZ2Vycy9j
b2xsZWN0aW9ucy5weQotLS0gYS9saWIvZ2FsYXh5L21hbmFnZXJzL2NvbGxlY3Rpb25zLnB5Cisr
KyBiL2xpYi9nYWxheHkvbWFuYWdlcnMvY29sbGVjdGlvbnMucHkKQEAgLTcsNiArNyw3IEBACiBm
cm9tIGdhbGF4eS5leGNlcHRpb25zIGltcG9ydCBNZXNzYWdlRXhjZXB0aW9uCiBmcm9tIGdhbGF4
eS5leGNlcHRpb25zIGltcG9ydCBJdGVtQWNjZXNzaWJpbGl0eUV4Y2VwdGlvbgogZnJvbSBnYWxh
eHkuZXhjZXB0aW9ucyBpbXBvcnQgUmVxdWVzdFBhcmFtZXRlckludmFsaWRFeGNlcHRpb24KK2Zy
b20gZ2FsYXh5Lm1hbmFnZXJzIGltcG9ydCBiYXNlCiBmcm9tIGdhbGF4eS5tYW5hZ2VycyBpbXBv
cnQgaGRhcyAgIyBUT0RPOiBSZWZhY3RvciBhbGwgbWl4aW4gdXNlIGludG8gbWFuYT0KZ2Vycy4K
IGZyb20gZ2FsYXh5Lm1hbmFnZXJzIGltcG9ydCBoaXN0b3JpZXMKIGZyb20gZ2FsYXh5Lm1hbmFn
ZXJzIGltcG9ydCBsZGRhcwpAQCAtMzUsMTAgKzM2LDExIEBACiAgICAgICAgIHNlbGYuY29sbGVj
dGlvbl90eXBlX2Rlc2NyaXB0aW9ucyA9M0QgQ29sbGVjdGlvblR5cGVEZXNjcmlwdGlvbkZhYz0K
dG9yeSggc2VsZi50eXBlX3JlZ2lzdHJ5ICkKICAgICAgICAgc2VsZi5tb2RlbCA9M0QgYXBwLm1v
ZGVsCiAgICAgICAgIHNlbGYuc2VjdXJpdHkgPTNEIGFwcC5zZWN1cml0eQotICAgICAgICBzZWxm
LmhkYV9tYW5hZ2VyID0zRCBoZGFzLkhEQU1hbmFnZXIoKQotICAgICAgICBzZWxmLmhpc3Rvcnlf
bWFuYWdlciA9M0QgaGlzdG9yaWVzLkhpc3RvcnlNYW5hZ2VyKCkKKworICAgICAgICBzZWxmLmhk
YV9tYW5hZ2VyID0zRCBoZGFzLkhEQU1hbmFnZXIoIGFwcCApCisgICAgICAgIHNlbGYuaGlzdG9y
eV9tYW5hZ2VyID0zRCBoaXN0b3JpZXMuSGlzdG9yeU1hbmFnZXIoIGFwcCApCiAgICAgICAgIHNl
bGYudGFnX21hbmFnZXIgPTNEIHRhZ3MuVGFnTWFuYWdlciggYXBwICkKLSAgICAgICAgc2VsZi5s
ZGRhX21hbmFnZXIgPTNEIGxkZGFzLkxEREFNYW5hZ2VyKCApCisgICAgICAgIHNlbGYubGRkYV9t
YW5hZ2VyID0zRCBsZGRhcy5MRERBTWFuYWdlciggYXBwICkKPTIwCiAgICAgZGVmIGNyZWF0ZSgK
ICAgICAgICAgc2VsZiwKQEAgLTY0LDYgKzY2LDcgQEAKICAgICAgICAgICAgIGVsZW1lbnRfaWRl
bnRpZmllcnM9M0RlbGVtZW50X2lkZW50aWZpZXJzLAogICAgICAgICAgICAgZWxlbWVudHM9M0Rl
bGVtZW50cywKICAgICAgICAgKQorCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoIHBhcmVudCwgbW9k
ZWwuSGlzdG9yeSApOgogICAgICAgICAgICAgZGF0YXNldF9jb2xsZWN0aW9uX2luc3RhbmNlID0z
RCBzZWxmLm1vZGVsLkhpc3RvcnlEYXRhc2V0Q29sbGU9CmN0aW9uQXNzb2NpYXRpb24oCiAgICAg
ICAgICAgICAgICAgY29sbGVjdGlvbj0zRGRhdGFzZXRfY29sbGVjdGlvbiwKQEAgLTgxLDE1ICs4
NCwxOCBAQAogICAgICAgICAgICAgICAgICAgICB0cmFucy5zYV9zZXNzaW9uLmFkZCggb3V0cHV0
X2RhdGFzZXQgKQo9MjAKICAgICAgICAgICAgICAgICBkYXRhc2V0X2NvbGxlY3Rpb25faW5zdGFu
Y2UuaW1wbGljaXRfb3V0cHV0X25hbWUgPTNEIGltcGxpPQpjaXRfY29sbGVjdGlvbl9pbmZvWyAi
aW1wbGljaXRfb3V0cHV0X25hbWUiIF0KKwogICAgICAgICAgICAgbG9nLmRlYnVnKCJDcmVhdGVk
IGNvbGxlY3Rpb24gd2l0aCAlZCBlbGVtZW50cyIgJSAoIGxlbiggZGF0YXM9CmV0X2NvbGxlY3Rp
b25faW5zdGFuY2UuY29sbGVjdGlvbi5lbGVtZW50cyApICkgKQogICAgICAgICAgICAgIyBIYW5k
bGUgc2V0dGluZyBoaWQKICAgICAgICAgICAgIHBhcmVudC5hZGRfZGF0YXNldF9jb2xsZWN0aW9u
KCBkYXRhc2V0X2NvbGxlY3Rpb25faW5zdGFuY2UgKQorCiAgICAgICAgIGVsaWYgaXNpbnN0YW5j
ZSggcGFyZW50LCBtb2RlbC5MaWJyYXJ5Rm9sZGVyICk6CiAgICAgICAgICAgICBkYXRhc2V0X2Nv
bGxlY3Rpb25faW5zdGFuY2UgPTNEIHNlbGYubW9kZWwuTGlicmFyeURhdGFzZXRDb2xsZT0KY3Rp
b25Bc3NvY2lhdGlvbigKICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uPTNEZGF0YXNldF9jb2xs
ZWN0aW9uLAogICAgICAgICAgICAgICAgIGZvbGRlcj0zRHBhcmVudCwKICAgICAgICAgICAgICAg
ICBuYW1lPTNEbmFtZSwKICAgICAgICAgICAgICkKKwogICAgICAgICBlbHNlOgogICAgICAgICAg
ICAgbWVzc2FnZSA9M0QgIkludGVybmFsIGxvZ2ljIGVycm9yIC0gY3JlYXRlIGNhbGxlZCB3aXRo
IHVua25vd249CiBwYXJlbnQgdHlwZSAlcyIgJSB0eXBlKCBwYXJlbnQgKQogICAgICAgICAgICAg
bG9nLmV4Y2VwdGlvbiggbWVzc2FnZSApCkBAIC0xODYsOCArMTkyLDYgQEAKICAgICAgICAgcmV0
dXJuIHNvdXJjZV9oZGNhCj0yMAogICAgIGRlZiBfc2V0X2Zyb21fZGljdCggc2VsZiwgdHJhbnMs
IGRhdGFzZXRfY29sbGVjdGlvbl9pbnN0YW5jZSwgbmV3X2RhdGE9CiApOgotICAgICAgICAjIEJs
YXRhbnRseSBzdG9sZW4gZnJvbSBVc2VzSGlzdG9yeURhdGFzZXRBc3NvY2lhdGlvbk1peGluLnNl
dF9oZGE9Cl9mcm9tX2RpY3QuCi0KICAgICAgICAgIyBzZW5kIHdoYXQgd2UgY2FuIGRvd24gaW50
byB0aGUgbW9kZWwKICAgICAgICAgY2hhbmdlZCA9M0QgZGF0YXNldF9jb2xsZWN0aW9uX2luc3Rh
bmNlLnNldF9mcm9tX2RpY3QoIG5ld19kYXRhICkKICAgICAgICAgIyB0aGUgcmVzdCAob2Z0ZW4g
aW52b2x2aW5nIHRoZSB0cmFucykgLSBkbyBoZXJlCkBAIC0yNzYsNyArMjgwLDcgQEAKPTIwCiAg
ICAgICAgIGlmIHNyY190eXBlID0zRD0zRCAnaGRhJzoKICAgICAgICAgICAgIGRlY29kZWRfaWQg
PTNEIGludCggdHJhbnMuYXBwLnNlY3VyaXR5LmRlY29kZV9pZCggZW5jb2RlZF9pZCApPQogKQot
ICAgICAgICAgICAgZWxlbWVudCA9M0Qgc2VsZi5oZGFfbWFuYWdlci5nZXQoIHRyYW5zLCBkZWNv
ZGVkX2lkLCBjaGVja19vd249CmVyc2hpcD0zREZhbHNlICkKKyAgICAgICAgICAgIGVsZW1lbnQg
PTNEIHNlbGYuaGRhX21hbmFnZXIuZ2V0X2FjY2Vzc2libGUoIHRyYW5zLCBkZWNvZGVkX2lkPQos
IHRyYW5zLnVzZXIgKQogICAgICAgICBlbGlmIHNyY190eXBlID0zRD0zRCAnbGRkYSc6CiAgICAg
ICAgICAgICBlbGVtZW50ID0zRCBzZWxmLmxkZGFfbWFuYWdlci5nZXQoIHRyYW5zLCBlbmNvZGVk
X2lkICkKICAgICAgICAgZWxpZiBzcmNfdHlwZSA9M0Q9M0QgJ2hkY2EnOgpAQCAtMzEwLDcgKzMx
NCwxMCBAQAogICAgIGRlZiBfX2dldF9oaXN0b3J5X2NvbGxlY3Rpb25faW5zdGFuY2UoIHNlbGYs
IHRyYW5zLCBpZCwgY2hlY2tfb3duZXJzaGk9CnA9M0RGYWxzZSwgY2hlY2tfYWNjZXNzaWJsZT0z
RFRydWUgKToKICAgICAgICAgaW5zdGFuY2VfaWQgPTNEIGludCggdHJhbnMuYXBwLnNlY3VyaXR5
LmRlY29kZV9pZCggaWQgKSApCiAgICAgICAgIGNvbGxlY3Rpb25faW5zdGFuY2UgPTNEIHRyYW5z
LnNhX3Nlc3Npb24ucXVlcnkoIHRyYW5zLmFwcC5tb2RlbC5IaT0Kc3RvcnlEYXRhc2V0Q29sbGVj
dGlvbkFzc29jaWF0aW9uICkuZ2V0KCBpbnN0YW5jZV9pZCApCi0gICAgICAgIHNlbGYuaGlzdG9y
eV9tYW5hZ2VyLnNlY3VyZSggdHJhbnMsIGNvbGxlY3Rpb25faW5zdGFuY2UuaGlzdG9yeSwgYz0K
aGVja19vd25lcnNoaXA9M0RjaGVja19vd25lcnNoaXAsIGNoZWNrX2FjY2Vzc2libGU9M0RjaGVj
a19hY2Nlc3NpYmxlICkKKyAgICAgICAgaWYgY2hlY2tfb3duZXJzaGlwOgorICAgICAgICAgICAg
c2VsZi5oaXN0b3J5X21hbmFnZXIuZXJyb3JfdW5sZXNzX293bmVyKCB0cmFucywgY29sbGVjdGlv
bl9pbnM9CnRhbmNlLmhpc3RvcnksIHRyYW5zLnVzZXIgKQorICAgICAgICBpZiBjaGVja19hY2Nl
c3NpYmxlOgorICAgICAgICAgICAgc2VsZi5oaXN0b3J5X21hbmFnZXIuZXJyb3JfdW5sZXNzX2Fj
Y2Vzc2libGUoIHRyYW5zLCBjb2xsZWN0aW89Cm5faW5zdGFuY2UuaGlzdG9yeSwgdHJhbnMudXNl
ciApCiAgICAgICAgIHJldHVybiBjb2xsZWN0aW9uX2luc3RhbmNlCj0yMAogICAgIGRlZiBfX2dl
dF9saWJyYXJ5X2NvbGxlY3Rpb25faW5zdGFuY2UoIHNlbGYsIHRyYW5zLCBpZCwgY2hlY2tfb3du
ZXJzaGk9CnA9M0RGYWxzZSwgY2hlY2tfYWNjZXNzaWJsZT0zRFRydWUgKToKCmRpZmYgLXIgZDcw
MjFlZTk2YTgwMDg1ZDc2MDViMTY4YzczZGZkOTI5YWQ4NTFkMyAtciAwZmIzYjdkYzMwZDZmODM3
ZTBiODE2Mj0KNzcxMjAxNjkzNTM4MWFhYzcgbGliL2dhbGF4eS9tYW5hZ2Vycy9jb2xsZWN0aW9u
c191dGlsLnB5Ci0tLSBhL2xpYi9nYWxheHkvbWFuYWdlcnMvY29sbGVjdGlvbnNfdXRpbC5weQor
KysgYi9saWIvZ2FsYXh5L21hbmFnZXJzL2NvbGxlY3Rpb25zX3V0aWwucHkKQEAgLTI4LDcgKzI4
LDYgQEAKICAgICAgICAgZWxlbWVudF9pZGVudGlmaWVycz0zRHBheWxvYWQuZ2V0KCAiZWxlbWVu
dF9pZGVudGlmaWVycyIgKSwKICAgICAgICAgbmFtZT0zRHBheWxvYWQuZ2V0KCAibmFtZSIsIE5v
bmUgKSwKICAgICApCi0KICAgICByZXR1cm4gcGFyYW1zCj0yMAo9MjAKQEAgLTY1LDkgKzY0LDkg
QEAKICAgICAgICAgICAgIHZhbGlkYXRlX2lucHV0X2VsZW1lbnRfaWRlbnRpZmllcnMoIGVsZW1l
bnRfaWRlbnRpZmllclsgImVsZW1lPQpudF9pZGVudGlmaWVycyIgXSApCj0yMAo9MjAKLWRlZiBk
aWN0aWZ5X2RhdGFzZXRfY29sbGVjdGlvbl9pbnN0YW5jZSggZGF0YXNldF9jb2xsZWNpdG9uX2lu
c3RhbmNlLCBwYXJlPQpudCwgc2VjdXJpdHksIHZpZXc9M0QiZWxlbWVudCIgKToKLSAgICBkaWN0
X3ZhbHVlID0zRCBkYXRhc2V0X2NvbGxlY2l0b25faW5zdGFuY2UudG9fZGljdCggdmlldz0zRHZp
ZXcgKQotICAgIGVuY29kZWRfaWQgPTNEIHNlY3VyaXR5LmVuY29kZV9pZCggZGF0YXNldF9jb2xs
ZWNpdG9uX2luc3RhbmNlLmlkICkKK2RlZiBkaWN0aWZ5X2RhdGFzZXRfY29sbGVjdGlvbl9pbnN0
YW5jZSggZGF0YXNldF9jb2xsZWN0aW9uX2luc3RhbmNlLCBwYXJlPQpudCwgc2VjdXJpdHksIHZp
ZXc9M0QiZWxlbWVudCIgKToKKyAgICBkaWN0X3ZhbHVlID0zRCBkYXRhc2V0X2NvbGxlY3Rpb25f
aW5zdGFuY2UudG9fZGljdCggdmlldz0zRHZpZXcgKQorICAgIGVuY29kZWRfaWQgPTNEIHNlY3Vy
aXR5LmVuY29kZV9pZCggZGF0YXNldF9jb2xsZWN0aW9uX2luc3RhbmNlLmlkICkKICAgICBpZiBp
c2luc3RhbmNlKCBwYXJlbnQsIG1vZGVsLkhpc3RvcnkgKToKICAgICAgICAgZW5jb2RlZF9oaXN0
b3J5X2lkID0zRCBzZWN1cml0eS5lbmNvZGVfaWQoIHBhcmVudC5pZCApCiAgICAgICAgIGRpY3Rf
dmFsdWVbICd1cmwnIF0gPTNEIHdlYi51cmxfZm9yKCAnaGlzdG9yeV9jb250ZW50X3R5cGVkJywg
aGlzdD0Kb3J5X2lkPTNEZW5jb2RlZF9oaXN0b3J5X2lkLCBpZD0zRGVuY29kZWRfaWQsIHR5cGU9
M0QiZGF0YXNldF9jb2xsZWN0aW9uIiApCgpkaWZmIC1yIGQ3MDIxZWU5NmE4MDA4NWQ3NjA1YjE2
OGM3M2RmZDkyOWFkODUxZDMgLXIgMGZiM2I3ZGMzMGQ2ZjgzN2UwYjgxNjI9Cjc3MTIwMTY5MzUz
ODFhYWM3IGxpYi9nYWxheHkvbWFuYWdlcnMvZGF0YXNldHMucHkKLS0tIC9kZXYvbnVsbAorKysg
Yi9saWIvZ2FsYXh5L21hbmFnZXJzL2RhdGFzZXRzLnB5CkBAIC0wLDAgKzEsMjg1IEBACisiIiIK
K01hbmFnZXIgYW5kIFNlcmlhbGl6ZXIgZm9yIERhdGFzZXRzLgorIiIiCitmcm9tIGdhbGF4eSBp
bXBvcnQgbW9kZWwKK2Zyb20gZ2FsYXh5IGltcG9ydCBleGNlcHRpb25zCisKK2Zyb20gZ2FsYXh5
Lm1hbmFnZXJzIGltcG9ydCBiYXNlCitmcm9tIGdhbGF4eS5tYW5hZ2VycyBpbXBvcnQgdXNlcnMK
KworaW1wb3J0IGxvZ2dpbmcKK2xvZyA9M0QgbG9nZ2luZy5nZXRMb2dnZXIoIF9fbmFtZV9fICkK
KworCisjID0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0KPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9Cj0zRD0zRD0zRAorY2xhc3MgRGF0YXNldE1hbmFnZXIoIGJhc2UuTW9kZWxNYW5hZ2Vy
LCBiYXNlLkFjY2Vzc2libGVNb2RlbEludGVyZmFjZSwgYmE9CnNlLlB1cmdhYmxlTW9kZWxJbnRl
cmZhY2UgKToKKyAgICAiIiIKKyAgICBNYW5pcHVsYXRlIGRhdGFzZXRzOiB0aGUgY29tcG9uZW50
cyBjb250YWluZWQgaW4gRGF0YXNldEFzc29jaWF0aW9ucy9EPQphdGFzZXRJbnN0YW5jZXMvSERB
cy9MRERBcworICAgICIiIgorCisgICAgbW9kZWxfY2xhc3MgPTNEIG1vZGVsLkRhdGFzZXQKKyAg
ICBmb3JlaWduX2tleV9uYW1lID0zRCAnZGF0YXNldCcKKworICAgICNUT0RPOj8/IGdldCArIGVy
cm9yX2lmX3VwbG9hZGluZyBpcyBjb21tb24gcGF0dGVybiwgc2hvdWxkIHVwbG9hZCBjaGU9CmNr
IGJlIHdvcmtlZCBpbnRvIGFjY2Vzcy9vd2VkPworCisgICAgZGVmIF9faW5pdF9fKCBzZWxmLCBh
cHAgKToKKyAgICAgICAgc3VwZXIoIERhdGFzZXRNYW5hZ2VyLCBzZWxmICkuX19pbml0X18oIGFw
cCApCisgICAgICAgICMgbmVlZCBmb3IgYWRtaW4gdGVzdAorICAgICAgICBzZWxmLnVzZXJfbWFu
YWdlciA9M0QgdXNlcnMuVXNlck1hbmFnZXIoIGFwcCApCisKKyAgICAjIC4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQou
Li4uLiBjcmVhdGUKKyAgICBkZWYgY3JlYXRlKCBzZWxmLCB0cmFucywgZmx1c2g9M0RUcnVlLCAq
Kmt3YXJncyApOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIGFuZCByZXR1cm4gYSBuZXcg
RGF0YXNldCBvYmplY3QuCisgICAgICAgICIiIgorICAgICAgICAjIGRlZmF1bHQgdG8gTkVXIHN0
YXRlIG9uIG5ldyBkYXRhc2V0cworICAgICAgICBrd2FyZ3MudXBkYXRlKCBkaWN0KCBzdGF0ZT0z
RCgga3dhcmdzLmdldCggJ3N0YXRlJywgbW9kZWwuRGF0YXNldC49CnN0YXRlcy5ORVcgKSApICkg
KQorICAgICAgICBkYXRhc2V0ID0zRCBtb2RlbC5EYXRhc2V0KCAqKmt3YXJncyApCisKKyAgICAg
ICAgc2VsZi5hcHAubW9kZWwuY29udGV4dC5hZGQoIGRhdGFzZXQgKQorICAgICAgICBpZiBmbHVz
aDoKKyAgICAgICAgICAgIHNlbGYuYXBwLm1vZGVsLmNvbnRleHQuZmx1c2goKQorICAgICAgICBy
ZXR1cm4gZGF0YXNldAorCisgICAgI2RlZiBjb3B5KCBzZWxmLCBkYXRhc2V0LCAqKmt3YXJncyAp
OgorICAgICMgICAgIiIiCisgICAgIyAgICBDbG9uZSwgdXBkYXRlLCBhbmQgcmV0dXJuIHRoZSBn
aXZlbiBkYXRhc2V0LgorICAgICMgICAgIiIiCisgICAgIyAgICBwYXNzCisKKyAgICAjIC4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uPQouLi4uLiBhZGQgdG8gZGF0YXNldCBhc3NvY2lhdGlvbgorICAgICNkZWYgdG9faGRh
KCBzZWxmLCB0cmFucywgZGF0YXNldCwgaGlzdG9yeSwgKiprd2FyZ3MgKToKKyAgICAjICAgICIi
IgorICAgICMgICAgQ3JlYXRlIGFuIGhkYSBmcm9tIHRoaXMgZGF0YXNldC4KKyAgICAjICAgICIi
IgorICAgICMgICAgcGFzcworCisgICAgI2RlZiB0b19sZGRhKCBzZWxmLCB0cmFucywgZGF0YXNl
dCwgbGlicmFyeV9mb2xkZXIsICoqa3dhcmdzICk6CisgICAgIyAgICAiIiIKKyAgICAjICAgIENy
ZWF0ZSBhbiBsZGRhIGZyb20gdGhpcyBkYXRhc2V0LgorICAgICMgICAgIiIiCisgICAgIyAgICBw
YXNzCisKKyAgICAjIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4uLiBkZWxldGUKKyAgICAjVE9ETzogdGhpcyBt
YXkgYmUgbW9yZSBjb252LiBzb21ld2hlcmUgZWxzZQorI1RPRE86IGhvdyB0byBhbGxvdyBhZG1p
biBieXBhc3M/CisgICAgZGVmIGVycm9yX3VubGVzc19kYXRhc2V0X3B1cmdlX2FsbG93ZWQoIHNl
bGYsIHRyYW5zLCBpdGVtLCBtc2c9M0ROb25lID0KKToKKyAgICAgICAgaWYgbm90IHNlbGYuYXBw
LmNvbmZpZy5hbGxvd191c2VyX2RhdGFzZXRfcHVyZ2U6CisgICAgICAgICAgICBtc2cgPTNEIG1z
ZyBvciAnVGhpcyBpbnN0YW5jZSBkb2VzIG5vdCBhbGxvdyB1c2VyIGRhdGFzZXQgcHVyZz0KaW5n
JworICAgICAgICAgICAgcmFpc2UgZXhjZXB0aW9ucy5Db25maWdEb2VzTm90QWxsb3dFeGNlcHRp
b24oIG1zZyApCisgICAgICAgIHJldHVybiBpdGVtCisKKyAgICBkZWYgcHVyZ2UoIHNlbGYsIHRy
YW5zLCBkYXRhc2V0LCBmbHVzaD0zRFRydWUgKToKKyAgICAgICAgIiIiCisgICAgICAgIFJlbW92
ZSB0aGUgb2JqZWN0X3N0b3JlL2ZpbGUgZm9yIHRoaXMgZGF0YXNldCBmcm9tIHN0b3JhZ2UgYW5k
IG1hcmsKKyAgICAgICAgYXMgcHVyZ2VkLgorCisgICAgICAgIDpyYWlzZXMgZXhjZXB0aW9ucy5D
b25maWdEb2VzTm90QWxsb3dFeGNlcHRpb246IGlmIHRoZSBpbnN0YW5jZSBkbz0KZXNuJ3QgYWxs
b3cKKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuZXJyb3JfdW5sZXNzX2RhdGFzZXRfcHVyZ2Vf
YWxsb3dlZCggdHJhbnMsIGRhdGFzZXQgKQorCisgICAgICAgICMgdGhlIGZvbGxvd2luZyBhbHNv
IG1hcmtzIGRhdGFzZXQgYXMgcHVyZ2VkIGFuZCBkZWxldGVkCisgICAgICAgIGRhdGFzZXQuZnVs
bF9kZWxldGUoKQorICAgICAgICBzZWxmLmFwcC5tb2RlbC5jb250ZXh0LmFkZCggZGF0YXNldCAp
CisgICAgICAgIGlmIGZsdXNoOgorICAgICAgICAgICAgc2VsZi5hcHAubW9kZWwuY29udGV4dC5m
bHVzaCgpCisgICAgICAgIHJldHVybiBkYXRhc2V0CisKKyAgICAjIC4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uPQouLi4u
LiBhY2Nlc3NpYmlsaXR5CisgICAgIyBkYXRhc2V0cyBjYW4gaW1wbGVtZW50IHRoZSBhY2Nlc3Np
YmxlIGludGVyZmFjZSwgYnV0IGFjY2Vzc2liaWxpdHkgaT0KcyBjaGVja2VkIGluIGFuIGVudGly
ZWx5IGRpZmZlcmVudCB3YXkKKyAgICAjICAgdGhhbiB0aG9zZSByZXNvdXJjZXMgdGhhdCBoYXZl
IGEgdXNlciBhdHRyaWJ1dGUgKGhpc3RvcmllcywgcGFnZXMsPQogZXRjLikKKyAgICBkZWYgaXNf
YWNjZXNzaWJsZSggc2VsZiwgdHJhbnMsIGRhdGFzZXQsIHVzZXIgKToKKyAgICAgICAgIiIiCisg
ICAgICAgIElzIHRoaXMgZGF0YXNldCByZWFkYWJsZS92aWV3YWJsZSB0byB1c2VyPworICAgICAg
ICAiIiIKKyAgICAgICAgaWYgc2VsZi51c2VyX21hbmFnZXIuaXNfYWRtaW4oIHRyYW5zLCB1c2Vy
ICk6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBzZWxmLmhhc19hY2Nlc3Nf
cGVybWlzc2lvbiggdHJhbnMsIGRhdGFzZXQsIHVzZXIgKToKKyAgICAgICAgICAgIHJldHVybiBU
cnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVmIGhhc19hY2Nlc3NfcGVybWlzc2lv
biggc2VsZiwgdHJhbnMsIGRhdGFzZXQsIHVzZXIgKToKKyAgICAgICAgIiIiCisgICAgICAgIFJl
dHVybiBUL0YgaWYgdGhlIHVzZXIgaGFzIHJvbGUtYmFzZWQgYWNjZXNzIHRvIHRoZSBkYXRhc2V0
LgorICAgICAgICAiIiIKKyAgICAgICAgcm9sZXMgPTNEIHVzZXIuYWxsX3JvbGVzKCkgaWYgdXNl
ciBlbHNlIFtdCisgICAgICAgIHJldHVybiBzZWxmLmFwcC5zZWN1cml0eV9hZ2VudC5jYW5fYWNj
ZXNzX2RhdGFzZXQoIHJvbGVzLCBkYXRhc2V0ICkKKworI1RPRE86IHRoZXNlIG5lZWQgd29yawor
ICAgIGRlZiBfYWNjZXNzX3Blcm1pc3Npb24oIHNlbGYsIHRyYW5zLCBkYXRhc2V0LCB1c2VyPTNE
Tm9uZSwgcm9sZT0zRE5vbmU9CiApOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJuIG1vc3Qg
cmVjZW50IERhdGFzZXRQZXJtaXNzaW9ucyBmb3IgdGhlIGRhdGFzZXQgYW5kIHVzZXIuCisgICAg
ICAgICIiIgorICAgICAgICBzZWN1cml0eV9hZ2VudCA9M0Qgc2VsZi5hcHAuc2VjdXJpdHlfYWdl
bnQKKyAgICAgICAgYWNjZXNzX2FjdGlvbiA9M0Qgc2VjdXJpdHlfYWdlbnQucGVybWl0dGVkX2Fj
dGlvbnMuREFUQVNFVF9BQ0NFU1MuPQphY3Rpb24KKworICAgICAgICAjIGdldCBhIGxpc3Qgb2Yg
cm9sZSBpZHMgdG8gY2hlY2sgYWNjZXNzIGZvciAoZGVmYXVsdGluZyB0byBhbGxfcm89CmxlcykK
KyAgICAgICAgdXNlcl9yb2xlcyA9M0QgWyByb2xlIF0gaWYgcm9sZSBlbHNlIHVzZXIuYWxsX3Jv
bGVzKCkKKyAgICAgICAgdXNlcl9yb2xlX2lkcyA9M0QgWyByb2xlLmlkIGZvciByb2xlIGluIHVz
ZXJfcm9sZXMgXQorICAgICAgICBxdWVyeSA9M0QgKCBzZWxmLmFwcC5tb2RlbC5jb250ZXh0LnF1
ZXJ5KCBtb2RlbC5EYXRhc2V0UGVybWlzc2lvbnM9CiApCisgICAgICAgICAgICAgICAgICAgIC5m
aWx0ZXIoIG1vZGVsLkRhdGFzZXRQZXJtaXNzaW9ucy5hY3Rpb24gPTNEPTNEIGFjY2Vzcz0KX2Fj
dGlvbiApCisgICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoIG1vZGVsLkRhdGFzZXRQZXJtaXNz
aW9ucy5kYXRhc2V0ID0zRD0zRCBkYXRhcz0KZXQgKQorICAgICAgICAgICAgICAgICAgICAuZmls
dGVyKCBtb2RlbC5EYXRhc2V0UGVybWlzc2lvbnMucm9sZV9pZC5pbl8oIHVzZXJfcm89CmxlX2lk
cyApICkgKQorICAgICAgICAjVE9ETzo/PyBtb3N0IHJlY2VudD8KKyAgICAgICAgcmV0dXJuIHF1
ZXJ5LmZpcnN0KCkKKworICAgIGRlZiBfY3JlYXRlX2FjY2Vzc19wZXJtaXNzaW9uKCBzZWxmLCB0
cmFucywgZGF0YXNldCwgcm9sZSwgZmx1c2g9M0RUcnU9CmUgKToKKyAgICAgICAgIiIiCisgICAg
ICAgIENyZWF0ZSBhIG5ldyBEYXRhc2V0UGVybWlzc2lvbnMgZm9yIHRoZSBnaXZlbiBkYXRhc2V0
IGFuZCByb2xlLgorICAgICAgICAiIiIKKyAgICAgICAgYWNjZXNzX2FjdGlvbiA9M0Qgc2VsZi5h
cHAuc2VjdXJpdHlfYWdlbnQucGVybWl0dGVkX2FjdGlvbnMuREFUQVNFPQpUX0FDQ0VTUy5hY3Rp
b24KKyAgICAgICAgcGVybWlzc2lvbiA9M0QgbW9kZWwuRGF0YXNldFBlcm1pc3Npb25zKCBhY2Nl
c3NfYWN0aW9uLCBkYXRhc2V0LCByPQpvbGUgKQorICAgICAgICBzZWxmLmFwcC5tb2RlbC5jb250
ZXh0LmFkZCggcGVybWlzc2lvbiApCisgICAgICAgIGlmIGZsdXNoOgorICAgICAgICAgICAgc2Vs
Zi5hcHAubW9kZWwuY29udGV4dC5mbHVzaCgpCisgICAgICAgIHJldHVybiBwZXJtaXNzaW9uCisK
KyAgICAjZGVmIGdpdmVfYWNjZXNzX3Blcm1pc3Npb24oIHNlbGYsIHRyYW5zLCBkYXRhc2V0LCB1
c2VyLCBmbHVzaD0zRFRydWUgPQopOgorICAgICMgICAgIiIiCisgICAgIyAgICAiIiIKKyAgICAj
ICAgICMgZm9yIG5vdywgdXNlIHRoZSB1c2VyJ3MgcHJpdmF0ZSByb2xlCisgICAgIyAgICBzZWN1
cml0eV9hZ2VudCA9M0Qgc2VsZi5hcHAuc2VjdXJpdHlfYWdlbnQKKyAgICAjICAgIHVzZXJfcm9s
ZSA9M0Qgc2VjdXJpdHlfYWdlbnQuZ2V0X3ByaXZhdGVfdXNlcl9yb2xlKCB1c2VyICkKKyAgICAj
CisgICAgIyAgICBleGlzdGluZ19wZXJtaXNzaW9uID0zRCBzZWxmLl9hY2Nlc3NfcGVybWlzc2lv
biggdHJhbnMsIGRhdGFzZXQsID0Kcm9sZT0zRHVzZXJfcm9sZSApCisgICAgIyAgICBwcmludCAn
ZXhpc3RpbmcgYWNjZXNzX3Blcm06JywgZXhpc3RpbmdfcGVybWlzc2lvbgorICAgICMgICAgaWYg
ZXhpc3RpbmdfcGVybWlzc2lvbjoKKyAgICAjICAgICAgICByZXR1cm4gZGF0YXNldAorICAgICMK
KyAgICAjICAgIHBlcm1pc3Npb24gPTNEIHNlbGYuX2NyZWF0ZV9hY2Nlc3NfcGVybWlzc2lvbigg
dHJhbnMsIGRhdGFzZXQsIHVzPQplcl9yb2xlICkKKyAgICAjICAgIHByaW50ICdhY2Nlc3Nfcm9s
ZXM6JywgWyByb2xlLm5hbWUgZm9yIHJvbGUgaW4gZGF0YXNldC5nZXRfYWNjZXNzPQpfcm9sZXMo
IHRyYW5zICkgXQorICAgICMKKyAgICAjICAgICNhY2Nlc3NfYWN0aW9uID0zRCBzZWN1cml0eV9h
Z2VudC5wZXJtaXR0ZWRfYWN0aW9ucy5EQVRBU0VUX0FDQ0VTPQpTLmFjdGlvbgorICAgICMgICAg
I2FjY2Vzc19hY3Rpb24gPTNEIHNlY3VyaXR5X2FnZW50LmdldF9hY3Rpb24oIGFjY2Vzc19hY3Rp
b24gKQorICAgICMgICAgI3Blcm1pc3Npb25zID0zRCB7IGFjY2Vzc19hY3Rpb24gOiBbIHVzZXJf
cm9sZSBdIH0KKyAgICAjICAgICNzZWN1cml0eV9hZ2VudC5zZXRfZGF0YXNldF9wZXJtaXNzaW9u
KCBkYXRhc2V0LCBwZXJtaXNzaW9ucyApCisgICAgIworICAgICMgICAgI3NlbGYuYXBwLm1vZGVs
LmNvbnRleHQuYWRkKCBkYXRhc2V0ICkKKyAgICAjICAgICNpZiBmbHVzaDoKKyAgICAjICAgICMg
ICAgc2VsZi5hcHAubW9kZWwuY29udGV4dC5mbHVzaCgpCisgICAgIworICAgICMgICAgZGJsX2No
ayA9M0Qgc2VsZi5fYWNjZXNzX3Blcm1pc3Npb24oIHRyYW5zLCBkYXRhc2V0LCByb2xlPTNEdXNl
cl89CnJvbGUgKQorICAgICMgICAgcHJpbnQgJ2FjY2Vzc19wZXJtOicsIGRibF9jaGsKKyAgICAj
CisgICAgIyAgICByZXR1cm4gZGF0YXNldAorCisgICAgI2RlZiByZW1vdmVfYWNjZXNzX3Blcm1p
c3Npb24oIHNlbGYsIHRyYW5zLCBkYXRhc2V0LCB1c2VyICk6CisgICAgIyAgICAiIiIKKyAgICAj
ICAgICIiIgorICAgICMgICAgcGFzcworCisgICAgIyAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLj0KLi4uLi4gbWFuYWdl
L21vZGlmeQorICAgICNkZWYgaGFzX21hbmFnZV9wZXJtaXNzaW9uKCBzZWxmLCB0cmFucywgZGF0
YXNldCwgdXNlciApOgorICAgICMgICAgIiIiCisgICAgIyAgICAiIiIKKyAgICAjICAgIHBhc3MK
KyAgICAjCisgICAgI2RlZiBnaXZlX21hbmFnZV9wZXJtaXNzaW9uKCBzZWxmLCB0cmFucywgZGF0
YXNldCwgdXNlciApOgorICAgICMgICAgIiIiCisgICAgIyAgICAiIiIKKyAgICAjICAgIHBhc3MK
KyAgICAjCisgICAgI2RlZiByZW1vdmVfbWFuYWdlX3Blcm1pc3Npb24oIHNlbGYsIHRyYW5zLCBk
YXRhc2V0LCB1c2VyICk6CisgICAgIyAgICAiIiIKKyAgICAjICAgICIiIgorICAgICMgICAgcGFz
cworCisgICAgI1RPRE86IGltcGxlbWVudCBhYm92ZSBmb3IgZ3JvdXBzCisgICAgI1RPRE86IGRh
dGF0eXBlcz8KKworICAgICMgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi49Ci4uLi4uIGRhdGEsIG9iamVjdF9zdG9yZQor
CisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tPQotLS0tLQorY2xhc3MgRGF0YXNldFNlcmlhbGl6ZXIoIGJh
c2UuTW9kZWxTZXJpYWxpemVyLCBiYXNlLlB1cmdhYmxlTW9kZWxTZXJpYWxpemU9CnIgKToKKwor
ICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CisgICAgICAgIHN1cGVyKCBEYXRhc2V0U2Vy
aWFsaXplciwgc2VsZiApLl9faW5pdF9fKCBhcHAgKQorCisgICAgICAgICMgbW9zdCBvZiB0aGVz
ZSB2aWV3cyBidWlsZC9hZGQgdG8gdGhlIHByZXZpb3VzIHZpZXcKKyAgICAgICAgc3VtbWFyeV92
aWV3ID0zRCBbCisgICAgICAgICAgICAnaWQnLAorICAgICAgICAgICAgJ2NyZWF0ZV90aW1lJywg
J3VwZGF0ZV90aW1lJywKKyAgICAgICAgICAgICdzdGF0ZScsCisgICAgICAgICAgICAnZGVsZXRl
ZCcsICdwdXJnZWQnLCAncHVyZ2FibGUnLAorICAgICAgICAgICAgIydvYmplY3Rfc3RvcmVfaWQn
LAorICAgICAgICAgICAgIydleHRlcm5hbF9maWxlbmFtZScsCisgICAgICAgICAgICAjJ2V4dHJh
X2ZpbGVzX3BhdGgnLAorICAgICAgICAgICAgJ2ZpbGVfc2l6ZScsICd0b3RhbF9zaXplJywKKyAg
ICAgICAgICAgICd1dWlkJywKKyAgICAgICAgXQorICAgICAgICAjIGNvdWxkIGRvIHZpc3VhbGl6
YXRpb25zIGFuZC9vciBkaXNwbGF5X2FwcHMKKworICAgICAgICBzZWxmLnNlcmlhbGl6YWJsZV9r
ZXlzID0zRCBzdW1tYXJ5X3ZpZXcgKyBbCisgICAgICAgIF0KKyAgICAgICAgc2VsZi52aWV3cyA9
M0QgeworICAgICAgICAgICAgJ3N1bW1hcnknICAgOiBzdW1tYXJ5X3ZpZXcsCisgICAgICAgIH0K
KyAgICAgICAgc2VsZi5kZWZhdWx0X3ZpZXcgPTNEICdzdW1tYXJ5JworCisgICAgZGVmIGFkZF9z
ZXJpYWxpemVycyggc2VsZiApOgorICAgICAgICBiYXNlLlB1cmdhYmxlTW9kZWxTZXJpYWxpemVy
LmFkZF9zZXJpYWxpemVycyggc2VsZiApCisgICAgICAgIHNlbGYuc2VyaWFsaXplcnMudXBkYXRl
KHsKKyAgICAgICAgICAgICdpZCcgICAgICAgICAgICA6IHNlbGYuc2VyaWFsaXplX2lkLAorICAg
ICAgICAgICAgJ2NyZWF0ZV90aW1lJyAgIDogc2VsZi5zZXJpYWxpemVfZGF0ZSwKKyAgICAgICAg
ICAgICd1cGRhdGVfdGltZScgICA6IHNlbGYuc2VyaWFsaXplX2RhdGUsCisgICAgICAgICAgICAn
dXVpZCcgICAgICAgICAgOiBsYW1iZGEgdCwgaSwgazogc3RyKCBpLnV1aWQgKSBpZiBpLnV1aWQg
ZWxzZT0KIE5vbmUsCisgICAgICAgIH0pCisKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS09Ci0tLS0tCitj
bGFzcyBEYXRhc2V0RGVzZXJpYWxpemVyKCBiYXNlLk1vZGVsRGVzZXJpYWxpemVyLCBiYXNlLlB1
cmdhYmxlTW9kZWxEZXNlcj0KaWFsaXplciApOgorICAgIG1vZGVsX21hbmFnZXJfY2xhc3MgPTNE
IERhdGFzZXRNYW5hZ2VyCisKKyAgICBkZWYgYWRkX2Rlc2VyaWFsaXplcnMoIHNlbGYgKToKKyAg
ICAgICAgc3VwZXIoIERhdGFzZXREZXNlcmlhbGl6ZXIsIHNlbGYgKS5hZGRfZGVzZXJpYWxpemVy
cygpCisgICAgICAgIGJhc2UuUHVyZ2FibGVNb2RlbERlc2VyaWFsaXplci5hZGRfZGVzZXJpYWxp
emVycyggc2VsZiApCisKKworIyA9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9
M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9M0Q9Cj0zRD0zRD0zRD0zRD0zRD0zRD0z
RD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0zRD0K
PTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNEPTNE
PTNEPTNEPTNEPTNEPTNEPTNEPQo9M0Q9M0Q9M0QKK2NsYXNzIERhdGFzZXRBc3NvY2lhdGlvbk1h
bmFnZXIoIGJhc2UuTW9kZWxNYW5hZ2VyLCBiYXNlLkFjY2Vzc2libGVNb2RlbEluPQp0ZXJmYWNl
LCBiYXNlLlB1cmdhYmxlTW9kZWxJbnRlcmZhY2UgKToKKyAgICAiIiIKKyAgICAiIiIKKyAgICAj
IERBJ3Mgd2VyZSBtZWFudCB0byBiZSBwcm94aWVzIC0gYnV0IHdlcmUgbmV2ZXIgZnVsbHkgaW1w
bGVtZW50ZWQgYXMgPQp0aGVtCisgICAgIyBJbnN0ZWFkLCBhIGRhdGFzZXQgYXNzb2NpYXRpb24g
SEFTIGEgZGF0YXNldCBidXQgY29udGFpbnMgbWV0YWRhdGEgcz0KcGVjaWZpYyB0byBhIGxpYnJh
cnkgKGxkYSkgb3IgdXNlciAoaGRhKQorICAgIG1vZGVsX2NsYXNzID0zRCBtb2RlbC5EYXRhc2V0
SW5zdGFuY2UKKworICAgIGRlZiBfX2luaXRfXyggc2VsZiwgYXBwICk6CisgICAgICAgIHN1cGVy
KCBEYXRhc2V0QXNzb2NpYXRpb25NYW5hZ2VyLCBzZWxmICkuX19pbml0X18oIGFwcCApCisgICAg
ICAgIHNlbGYuZGF0YXNldF9tYW5hZ2VyID0zRCBEYXRhc2V0TWFuYWdlciggYXBwICkKKworICAg
IGRlZiBpc19hY2Nlc3NpYmxlKCBzZWxmLCB0cmFucywgZGF0YXNldF9hc3NvYywgdXNlciApOgor
ICAgICAgICAiIiIKKyAgICAgICAgSXMgdGhpcyBEQSBhY2Nlc3NpYmxlIHRvIGB1c2VyYD8KKyAg
ICAgICAgIiIiCisgICAgICAgICMgZGVmZXIgdG8gdGhlIGRhdGFzZXQKKyAgICAgICAgcmV0dXJu
IHNlbGYuZGF0YXNldF9tYW5hZ2VyLmlzX2FjY2Vzc2libGUoIHRyYW5zLCBkYXRhc2V0X2Fzc29j
LmRhPQp0YXNldCwgdXNlciApCisKKyAgICAjZGVmIG1ldGFkYXRhKCBzZWxmLCB0cmFucywgZGF0
YXNldF9hc3NvYyApOgorICAgICMgICAgIiIiCisgICAgIyAgICBSZXR1cm4gdGhlIG1ldGFkYXRh
IGNvbGxlY3Rpb24uCisgICAgIyAgICAiIiIKKyAgICAjICAgICMgZ2V0IG1ldGFkYXRhCisgICAg
IyAgICBwYXNzCisKKyAgICAjZGVmIGlzX2JlaW5nX3VzZWQoIHNlbGYsIHRyYW5zLCBkYXRhc2V0
X2Fzc29jICk6CisgICAgIyAgICAiIiIKKyAgICAjICAgICIiIgorICAgICMgICAgI1RPRE86IGNo
ZWNrIGhpc3RvcnlfYXNzb2NpYXRpb25zLCBsaWJyYXJ5X2Fzc29jaWF0aW9ucworICAgICMgICAg
cGFzcworCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPQotLS0tLQorY2xhc3MgRGF0YXNldEFzc29jaWF0
aW9uU2VyaWFsaXplciggYmFzZS5Nb2RlbFNlcmlhbGl6ZXIsIGJhc2UuUHVyZ2FibGVNb2Q9CmVs
U2VyaWFsaXplciApOgorCisgICAgZGVmIGFkZF9zZXJpYWxpemVycyggc2VsZiApOgorICAgICAg
ICBzdXBlciggRGF0YXNldEFzc29jaWF0aW9uU2VyaWFsaXplciwgc2VsZiApLmFkZF9zZXJpYWxp
emVycygpCisgICAgICAgIGJhc2UuUHVyZ2FibGVNb2RlbFNlcmlhbGl6ZXIuYWRkX3NlcmlhbGl6
ZXJzKCBzZWxmICkKKworCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT0KLS0tLS0KK2NsYXNzIERhdGFzZXRB
c3NvY2lhdGlvbkRlc2VyaWFsaXplciggYmFzZS5Nb2RlbERlc2VyaWFsaXplciwgYmFzZS5QdXJn
YWJsPQplTW9kZWxEZXNlcmlhbGl6ZXIgKToKKworICAgIGRlZiBhZGRfZGVzZXJpYWxpemVycygg
c2VsZiApOgorICAgICAgICBzdXBlciggRGF0YXNldEFzc29jaWF0aW9uRGVzZXJpYWxpemVyLCBz
ZWxmICkuYWRkX2Rlc2VyaWFsaXplcnMoKQorICAgICAgICBiYXNlLlB1cmdhYmxlTW9kZWxEZXNl
cmlhbGl6ZXIuYWRkX2Rlc2VyaWFsaXplcnMoIHNlbGYgKQoKVGhpcyBkaWZmIGlzIHNvIGJpZyB0
aGF0IHdlIG5lZWRlZCB0byB0cnVuY2F0ZSB0aGUgcmVtYWluZGVyLgoKUmVwb3NpdG9yeSBVUkw6
IGh0dHBzOi8vYml0YnVja2V0Lm9yZy9nYWxheHkvZ2FsYXh5LWNlbnRyYWwvCgotLQoKVGhpcyBp
cyBhIGNvbW1pdCBub3RpZmljYXRpb24gZnJvbSBiaXRidWNrZXQub3JnLiBZb3UgYXJlIHJlY2Vp
dmluZwp0aGlzIGJlY2F1c2UgeW91IGhhdmUgdGhlIHNlcnZpY2UgZW5hYmxlZCwgYWRkcmVzc2lu
ZyB0aGUgcmVjaXBpZW50IG9mCnRoaXMgZW1haWwuCg=
1
0
commit/galaxy-central: dannon: Merged in carlfeberhard/galaxy-central-api-v2 (pull request #637)
by commits-noreply@bitbucket.org 21 Jan '15
by commits-noreply@bitbucket.org 21 Jan '15
21 Jan '15
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/0fb3b7dc30d6/
Changeset: 0fb3b7dc30d6
User: dannon
Date: 2015-01-21 21:32:27+00:00
Summary: Merged in carlfeberhard/galaxy-central-api-v2 (pull request #637)
Expand on Base, History, and HDA managers
Affected #: 59 files
diff -r d7021ee96a80085d7605b168c73dfd929ad851d3 -r 0fb3b7dc30d6f837e0b81627712016935381aac7 client/galaxy/scripts/mvc/list/list-panel.js
--- a/client/galaxy/scripts/mvc/list/list-panel.js
+++ b/client/galaxy/scripts/mvc/list/list-panel.js
@@ -872,10 +872,10 @@
this.log( this + '._setUpModelListeners', this.model );
// bounce model errors up to the panel
this.model.on( 'error', function(){
- //TODO: namespace?
- //var args = Array.prototype.slice.call( arguments, 0 );
- //args[0] = 'model:' + args[0];
- this.trigger.apply( panel, arguments );
+ var args = Array.prototype.slice.call( arguments, 0 );
+ //args.unshift( 'model:error' );
+ args.unshift( 'error' );
+ this.trigger.apply( this, args );
}, this );
return this;
},
diff -r d7021ee96a80085d7605b168c73dfd929ad851d3 -r 0fb3b7dc30d6f837e0b81627712016935381aac7 lib/galaxy/managers/annotatable.py
--- /dev/null
+++ b/lib/galaxy/managers/annotatable.py
@@ -0,0 +1,50 @@
+"""
+Mixins for Annotatable model managers and serializers.
+"""
+
+from galaxy import exceptions
+from galaxy import model
+
+import logging
+log = logging.getLogger( __name__ )
+
+
+# =============================================================================
+class AnnotatableManagerInterface( object ):
+ annotation_assoc = None
+
+ #TODO: most of this seems to be covered by item_attrs.UsesAnnotations
+
+
+# =============================================================================
+class AnnotatableSerializer( object ):
+
+ def add_serializers( self ):
+ self.serializers[ 'annotation' ] = self.serialize_annotation
+
+ def serialize_annotation( self, trans, item, key ):
+ """
+ Get and serialize an `item`'s annotation.
+ """
+#TODO: which is correct here?
+ #user = item.user
+ user = trans.user
+ sa_session = self.app.model.context
+ return item.get_item_annotation_str( sa_session, user, item )
+
+
+# =============================================================================
+class AnnotatableDeserializer( object ):
+
+ def add_deserializers( self ):
+ self.deserializers[ 'annotation' ] = self.deserialize_annotation
+
+ def deserialize_annotation( self, trans, item, key, val ):
+ """
+ Make sure `val` is a valid annotation and assign it.
+ """
+#TODO: no validate here...
+ val = self.validate.nullable_basestring( key, val )
+ #TODO: have to assume trans.user here...
+ return item.add_item_annotation( trans.sa_session, trans.user, item, val )
+
diff -r d7021ee96a80085d7605b168c73dfd929ad851d3 -r 0fb3b7dc30d6f837e0b81627712016935381aac7 lib/galaxy/managers/base.py
--- a/lib/galaxy/managers/base.py
+++ b/lib/galaxy/managers/base.py
@@ -1,23 +1,50 @@
-from galaxy import exceptions
+"""
+Keeps the older BaseController security and fetching methods and also
+defines a base ModelManager, ModelSerializer, and ModelDeserializer.
+
+ModelManagers are used for operations on models that occur outside the scope of
+a single model object, such as:
+ - object creation
+ - object lookup
+ - interactions between 2+ objects of different model classes
+
+(Since these were to replace model Mixins from
+web/framework/base/controller.py the rule of thumb used there also generally
+has been applied here: if it uses the trans or sa_session, put it in a manager
+and not the model.)
+
+ModelSerializers allow flexible conversion of model objects to dictionaries.
+They control what keys are sent, how values are simplified, can remap keys,
+and allow both predefined and user controlled key sets.
+
+ModelDeserializers control how a model validates and process an incoming
+attribute change to a model object.
+"""
+#TODO: it may be there's a better way to combine the above three classes
+# such as: a single flat class, serializers being singletons in the manager, etc.
+# instead of the three separate classes. With no 'apparent' perfect scheme
+# I'm opting to just keep them separate.
+
+import re
+
+import pkg_resources
+pkg_resources.require( "SQLAlchemy >= 0.4" )
+import sqlalchemy
from galaxy import model
+from galaxy import exceptions
from galaxy.model import tool_shed_install
+from galaxy.util import sanitize_html
import logging
log = logging.getLogger( __name__ )
-class ModelManager( object ):
- pass
-
-
-class ModelSerializer( object ):
- pass
-
-
+# =============================================================================
def security_check( trans, item, check_ownership=False, check_accessible=False ):
- """ Security checks for an item: checks if (a) user owns item or (b) item
+ """
+ Security checks for an item: checks if (a) user owns item or (b) item
is accessible to user. This is a generic method for dealing with objects
uniformly from the older controller mixin code - however whenever possible
the managers for a particular model should be used to perform security
@@ -49,7 +76,10 @@
def get_class( class_name ):
- """ Returns the class object that a string denotes. Without this method, we'd have to do eval(<class_name>). """
+ """
+ Returns the class object that a string denotes. Without this method, we'd have
+ to do eval(<class_name>).
+ """
if class_name == 'History':
item_class = model.History
elif class_name == 'HistoryDatasetAssociation':
@@ -118,3 +148,782 @@
% ( class_name, getattr( item, 'name', id ) ), type="warning" )
return item
+
+# =============================================================================
+class ModelManager( object ):
+ """
+ Base class for all model/resource managers.
+
+ Provides common queries and CRUD operations as a (hopefully) light layer
+ over the ORM.
+ """
+ model_class = object
+ foreign_key_name = None
+
+ def __init__( self, app ):
+ self.app = app
+ self.default_order_by = None
+
+ def _default_order_by( self ):
+ """
+ Returns a tuple of columns for the default order when getting multiple models.
+ """
+ return ( self.model_class.create_time, )
+
+ #NOTE: at this layer, all ids are expected to be decoded and in int form
+ # ------------------------------------------------------------------------- get/read/query
+ def query( self, trans, eagerloads=True, filters=None, order_by=None, limit=None, offset=None, **kwargs ):
+ """
+ Return a basic query from model_class, filters, order_by, and limit and offset.
+
+ Set eagerloads to False to disable them for this query.
+ """
+ #print 'query:', eagerloads, filters, order_by, limit, offset, kwargs
+ query = trans.sa_session.query( self.model_class )
+
+ # joined table loading
+ if eagerloads is False:
+ query = query.enable_eagerloads( False )
+
+ #TODO: if non-orm filters are the only option, here is where they'd go
+ query = self._apply_filters( query, filters )
+ query = self._apply_order_by_limit_offset( query, order_by, limit, offset )
+ return query
+
+ def _apply_filters( self, query, filters ):
+ """
+ Add any filters to the given query.
+ """
+ if filters is None:
+ return query
+
+ if not isinstance( filters, list ):
+ filters = [ filters ]
+ #note: implicit AND
+ for filter in filters:
+ query = query.filter( filter )
+ return query
+
+ def _munge_filters( self, filtersA, filtersB ):
+ """
+ Combine two lists into a single list.
+
+ (While allowing them to be None, non-lists, or lists.)
+ """
+ #TODO: there's nothing specifically filter or model-related here - move to util
+ if filtersA is None:
+ return filtersB
+ if filtersB is None:
+ return filtersA
+ if not isinstance( filtersA, list ):
+ filtersA = [ filtersA ]
+ if not isinstance( filtersB, list ):
+ filtersB = [ filtersB ]
+ return filtersA + filtersB
+
+ def _apply_order_by_limit_offset( self, query, order_by, limit, offset ):
+ """
+ Return the query after adding the order_by, limit, and offset clauses.
+ """
+ query = self._apply_order_by( query, order_by )
+ return self._apply_limit_offset( query, limit, offset )
+
+ def _apply_order_by( self, query, order_by ):
+ """
+ Return the query after adding the order_by clauses.
+
+ Use the manager's default_order_by if order_by is None.
+ """
+ if order_by is None:
+ return query.order_by( *self.default_order_by() )
+
+ if isinstance( order_by, ( list, tuple ) ):
+ return query.order_by( *order_by )
+ return query.order_by( order_by )
+
+ def _apply_limit_offset( self, query, limit, offset ):
+ """
+ Return the query after applying the given limit and offset (if not None).
+ """
+ if limit is not None:
+ query = query.limit( limit )
+ if offset is not None:
+ query = query.offset( offset )
+ return query
+
+ # ......................................................................... common queries
+ def one( self, trans, **kwargs ):
+ """
+ Sends kwargs to build the query and returns one and only one model.
+ """
+ query = self.query( trans, **kwargs )
+ return self._one_with_recast_errors( query )
+
+ def _one_with_recast_errors( self, query ):
+ """
+ Call sqlalchemy's one and recast errors to serializable errors if any.
+
+ :raises exceptions.ObjectNotFound: if no model is found
+ :raises exceptions.InconsistentDatabase: if more than one model is found
+ """
+ # overridden to raise serializable errors
+ try:
+ return query.one()
+ except sqlalchemy.orm.exc.NoResultFound, not_found:
+ raise exceptions.ObjectNotFound( self.model_class.__name__ + ' not found' )
+ except sqlalchemy.orm.exc.MultipleResultsFound, multi_found:
+ raise exceptions.InconsistentDatabase( 'found more than one ' + self.model_class.__name__ )
+
+ def _one_or_none( self, query ):
+ """
+ Return the object if found, None if it's not.
+
+ :raises exceptions.InconsistentDatabase: if more than one model is found
+ """
+ try:
+ return self._one_with_recast_errors( query )
+ except exceptions.ObjectNotFound, not_found:
+ return None
+
+ #TODO: get?
+
+ def by_id( self, trans, id, **kwargs ):
+ """
+ Gets a model by primary id.
+ """
+ id_filter = self.model_class.id == id
+ return self.one( trans, filters=id_filter, **kwargs )
+
+ def list( self, trans, query=None, **kwargs ):
+ """
+ Sends kwargs to build the query return all models found.
+ """
+ query = query or self.query( trans, **kwargs )
+ return query.all()
+
+ def _query_by_ids( self, trans, ids, filters=None, **kwargs ):
+ """
+ Builds a query to find a list of models with the given list of `ids`.
+ """
+ ids_filter = self.model_class.id.in_( ids )
+ return self.query( trans, filters=self._munge_filters( ids_filter, filters ), **kwargs )
+
+ def by_ids( self, trans, ids, **kwargs ):
+ """
+ Returns an in-order list of models with the matching ids in `ids`.
+ """
+ found = self._query_by_ids( trans, ids, **kwargs ).all()
+ #TODO: this does not order by the original 'ids' array
+
+ # ...could use get (supposedly since found are in the session, the db won't be hit twice)
+ #return map( trans.sa_session.query( self.model_class ).get, ids )
+
+ # ...could implement own version here - slow?
+ return self._order_items_by_id( ids, found )
+ #return found
+
+ def _order_items_by_id( self, ids, items ):
+ """
+ Given a list of (unique) ids and a list of items having an 'id' attribute,
+ return items that have the given ids in that order.
+
+ If an id in ids is not found or if an item in items doesn't have a given
+ id, they will not be in the returned list.
+ """
+ ID_ATTR_NAME = 'id'
+ #TODO:?? aside from sqlalx.get mentioned above, I haven't seen an in-SQL way
+ # to make this happen. This may not be the most efficient way either.
+ #NOTE: that this isn't sorting by id - this is matching the order in items to the order in ids
+ # move items list into dict by id
+ item_dict = {}
+ for item in items:
+ item_id = getattr( item, ID_ATTR_NAME, None )
+ if item_id:
+ item_dict[ item_id ] = item
+ # pull from map in order of ids
+ in_order = []
+ for id in ids:
+ if id in item_dict:
+ in_order.append( item_dict[ id ] )
+ return in_order
+
+ # ------------------------------------------------------------------------- create
+ def create( self, trans, flush=True, *args, **kwargs ):
+ """
+ Generically create a new model.
+ """
+ # override in subclasses
+ item = self.model_class( *args, **kwargs )
+ trans.sa_session.add( item )
+ if flush:
+ trans.sa_session.flush()
+ return item
+
+ def copy( self, trans, item, **kwargs ):
+ """
+ Clone or copy an item.
+ """
+ raise exceptions.NotImplemented( 'Abstract method' )
+
+ # ------------------------------------------------------------------------- update
+ def update( self, trans, item, new_values, flush=True, **kwargs ):
+ """
+ Given a dictionary of new values, update `item` and return it.
+
+ ..note: NO validation or deserialization occurs here.
+ """
+ trans.sa_session.add( item )
+ for key, value in new_values.items():
+ if hasattr( item, key ):
+ setattr( item, key, value )
+ if flush:
+ trans.sa_session.flush()
+ return item
+
+ #TODO: yagni?
+ def associate( self, trans, associate_with, item, foreign_key_name=None ):
+ """
+ Generically associate `item` with `associate_with` based on `foreign_key_name`.
+ """
+ foreign_key_name = foreign_key_name or self.foreign_key_name
+ setattr( associate_with, foreign_key_name, item )
+ return item
+
+ def query_associated( self, trans, associated_model_class, item, foreign_key_name=None ):
+ """
+ Generically query other items that have been associated with this `item`.
+ """
+ foreign_key_name = foreign_key_name or self.foreign_key_name
+ foreign_key = getattr( associated_model_class, foreign_key_name )
+ return trans.sa_session.query( associated_model_class ).filter( foreign_key == item )
+
+ # ------------------------------------------------------------------------- delete
+ # a rename of sql DELETE to differentiate from the Galaxy notion of mark_as_deleted
+ #def destroy( self, trans, item, **kwargs ):
+ # return item
+
+
+# ============================================================================= SERIALIZERS/to_dict,from_dict
+class ModelSerializingError( exceptions.InternalServerError ):
+ """Thrown when request model values can't be serialized"""
+ pass
+
+
+class ModelDeserializingError( exceptions.ObjectAttributeInvalidException ):
+ """Thrown when an incoming value isn't usable by the model
+ (bad type, out of range, etc.)
+ """
+ pass
+
+
+# -----------------------------------------------------------------------------
+class ModelSerializer( object ):
+ """
+ Turns models into JSONable dicts.
+
+ Maintains a map of requestable keys and the Callable() serializer functions
+ that should be called for those keys.
+ E.g. { 'x' : lambda trans, item, key: item.x, ... }
+
+ To serialize call:
+ my_serializer = MySerializer( app )
+ ...
+ keys_to_serialize = [ 'id', 'name', 'attr1', 'attr2', ... ]
+ item_dict = MySerializer.serialize( trans, my_item, keys_to_serialize )
+ # if a key to serialize is not listed in the Serializer.serializable_keys or serializers, it will not be added
+ """
+
+ def __init__( self, app ):
+ """
+ Set up serializer map, any additional serializable keys, and views here.
+ """
+ self.app = app
+
+ # a map of dictionary keys to the functions (often lambdas) that create the values for those keys
+ self.serializers = {}
+ # a list of valid serializable keys that can use the default (string) serializer
+ # this allows us to: 'mention' the key without adding the default serializer
+ #NOTE: if a key is requested that is in neither serializable_keys or serializers, it is not returned
+ self.serializable_keys = []
+ # add subclass serializers defined there
+ self.add_serializers()
+
+ # views are collections of serializable attributes (a named array of keys)
+ # inspired by model.dict_{view}_visible_keys
+ self.views = {}
+ self.default_view = None
+
+ # ......................................................................... serializing
+ def add_serializers( self ):
+ """
+ Register a map of attribute keys -> serializing functions that will serialize
+ the attribute.
+ """
+ # to be overridden in subclasses
+ pass
+
+ def serialize( self, trans, item, keys ):
+ """
+ Serialize the model `item` to a dictionary.
+
+ Given model `item` and the list `keys`, create and return a dictionary
+ built from each key in `keys` that also exists in `serializers` and
+ values of calling the keyed/named serializers on item.
+ """
+ # main interface fn for converting a model to a dict
+ returned = {}
+ for key in keys:
+ # check both serializers and serializable keys
+ if key in self.serializers:
+ returned[ key ] = self.serializers[ key ]( trans, item, key )
+ elif key in self.serializable_keys:
+ returned[ key ] = self.default_serializer( trans, item, key )
+ # ignore bad/unreg keys
+ return returned
+
+ def default_serializer( self, trans, item, key ):
+ """
+ Serialize the `item`'s attribute named `key`.
+ """
+ #TODO:?? point of change but not really necessary?
+ return getattr( item, key )
+
+ # ......................................................................... serializers for common galaxy objects
+ def serialize_date( self, trans, item, key ):
+ """
+ Serialize a date attribute of `item`.
+ """
+ date = getattr( item, key )
+ return date.isoformat() if date is not None else None
+
+ def serialize_id( self, trans, item, key ):
+ """
+ Serialize an id attribute of `item`.
+ """
+ id = getattr( item, key )
+ return self.app.security.encode_id( id ) if id is not None else None
+
+ # ......................................................................... serializing to a view
+ # where a view is a predefied list of keys to serialize
+ def serialize_to_view( self, trans, item, view=None, keys=None, default_view=None ):
+ """
+ Use a predefined list of keys (the string `view`) and any additional keys
+ listed in `keys`.
+
+ The combinations can be:
+ `view` only: return those keys listed in the named view
+ `keys` only: return those keys listed
+ no `view` or `keys`: use the `default_view` if any
+ `view` and `keys`: combine both into one list of keys
+ """
+ all_keys = []
+ keys = keys or []
+ # chose explicit over concise here
+ if view:
+ if keys:
+ all_keys = self._view_to_keys( view ) + keys
+ else:
+ all_keys = self._view_to_keys( view )
+ else:
+ if keys:
+ all_keys = keys
+ elif default_view:
+ all_keys = self._view_to_keys( default_view )
+
+ return self.serialize( trans, item, all_keys )
+
+ def _view_to_keys( self, view=None ):
+ """
+ Converts a known view into a list of keys.
+
+ :raises ModelSerializingError: if the view is not listed in `self.views`.
+ """
+ if view is None:
+ view = self.default_view
+ if view not in self.views:
+ raise ModelSerializingError( 'unknown view', view=view, available_views=self.views )
+ return self.views[ view ][:]
+
+
+# -----------------------------------------------------------------------------
+class ModelDeserializer( object ):
+ """
+ An object that converts an incoming serialized dict into values that can be
+ directly assigned to an item's attributes and assigns them.
+ """
+ #: the class used to create this deserializer's generically accessible model_manager
+ model_manager_class = None
+
+ def __init__( self, app ):
+ """
+ Set up deserializers and validator.
+ """
+ self.app = app
+
+ self.deserializers = {}
+ self.deserializable_keys = []
+ self.add_deserializers()
+ # a sub object that can validate incoming values
+ self.validate = ModelValidator( self.app )
+
+ # create a generically accessible manager for the model this deserializer works with/for
+ self.manager = None
+ if self.model_manager_class:
+ self.manager = self.model_manager_class( self.app )
+
+ def add_deserializers( self ):
+ """
+ Register a map of attribute keys -> functions that will deserialize data
+ into attributes to be assigned to the item.
+ """
+ # to be overridden in subclasses
+ pass
+
+ def deserialize( self, trans, item, data, flush=True ):
+ """
+ Convert an incoming serialized dict into values that can be
+ directly assigned to an item's attributes and assign them
+ """
+ sa_session = self.app.model.context
+ new_dict = {}
+ for key, val in data.items():
+ if key in self.deserializers:
+ new_dict[ key ] = self.deserializers[ key ]( trans, item, key, val )
+ #!important: don't error on unreg. keys -- many clients will add weird ass keys onto the model
+
+ #TODO:?? add and flush here or in manager?
+ if flush and len( new_dict ):
+ sa_session.add( item )
+ sa_session.flush()
+
+ return new_dict
+
+ # ... common deserializers for primitives
+ def default_deserializer( self, trans, item, key, val ):
+ """
+ If the incoming `val` is different than the `item` value change it
+ and, in either case, return the value.
+ """
+ #TODO: sets the item attribute to value (this may not work in all instances)
+
+ # only do the following if val == getattr( item, key )
+ if hasattr( item, key ) and getattr( item, key ) != val:
+ setattr( item, key, val )
+ return val
+
+ def deserialize_basestring( self, trans, item, key, val ):
+ val = self.validate.basestring( key, val )
+ return self.default_deserializer( trans, item, key, val )
+
+ def deserialize_bool( self, trans, item, key, val ):
+ val = self.validate.bool( key, val )
+ return self.default_deserializer( trans, item, key, val )
+
+ def deserialize_int( self, trans, item, key, val, min=None, max=None ):
+ val = self.validate.int_range( key, val, min, max )
+ return self.default_deserializer( trans, item, key, val )
+
+ # ... common deserializers for Galaxy
+ def deserialize_genome_build( self, trans, item, key, val ):
+ """
+ Make sure `val` is a valid dbkey and assign it.
+ """
+ val = self.validate.genome_build( trans, key, val )
+ return self.default_deserializer( trans, item, key, val )
+
+
+# -----------------------------------------------------------------------------
+#TODO:?? a larger question is: which should be first? Deserialize then validate - or - validate then deserialize?
+class ModelValidator( object ):
+ """
+ An object that inspects a dictionary (generally meant to be a set of
+ new/updated values for the model) and raises an error if a value is
+ not acceptable.
+ """
+
+ def __init__( self, app, *args, **kwargs ):
+ self.app = app
+
+ def type( self, key, val, types ):
+ """
+ Check `val` against the type (or tuple of types) in `types`.
+
+ :raises exceptions.RequestParameterInvalidException: if not an instance.
+ """
+ if not isinstance( val, types ):
+ msg = 'must be a type: %s' % ( str( types ) )
+ raise exceptions.RequestParameterInvalidException( msg, key=key, val=val )
+ return val
+
+ # validators for primitives and compounds of primitives
+ def basestring( self, key, val ):
+ return self.type( key, val, basestring )
+
+ def bool( self, key, val ):
+ return self.type( key, val, bool )
+
+ def int( self, key, val ):
+ return self.type( key, val, int )
+
+ def nullable_basestring( self, key, val ):
+ """
+ Must be a basestring or None.
+ """
+ return self.type( key, val, ( basestring, type( None ) ) )
+
+ def int_range( self, key, val, min=None, max=None ):
+ """
+ Must be a int between min and max.
+ """
+ val = self.type( key, val, int )
+ if min is not None and val < min:
+ raise exceptions.RequestParameterInvalidException( "less than minimum", key=key, val=val, min=min )
+ if max is not None and val > max:
+ raise exceptions.RequestParameterInvalidException( "greater than maximum", key=key, val=val, max=max )
+ return val
+
+ def basestring_list( self, key, val ):
+ """
+ Must be a list of basestrings.
+ """
+ #TODO: Here's where compound types start becoming a nightmare. Any more or more complex
+ # and should find a different way.
+ val = self.type( key, val, list )
+ return [ self.basestring( key, elem ) for elem in val ]
+
+ # validators for Galaxy
+ def genome_build( self, trans, key, val ):
+ """
+ Must be a valid genome_build/dbkey/reference/whatever-the-hell-were-calling-them-now.
+ """
+ #TODO: is this correct?
+ if val is None:
+ return '?'
+ for genome_build_shortname, longname in self.app.genome_builds.get_genome_build_names( trans=trans ):
+ if val == genome_build_shortname:
+ return val
+ raise exceptions.RequestParameterInvalidException( "invalid reference", key=key, val=val )
+
+ #def slug( self, trans, item, key, val ):
+ # """validate slug"""
+ # pass
+
+
+# =============================================================================
+# Mixins (here for now)
+# =============================================================================
+class AccessibleModelInterface( object ):
+ """
+ A security interface to check if a User can read/view an item's.
+
+ This can also be thought of as 'read but not modify' privileges.
+ """
+
+ # don't want to override by_id since consumers will also want to fetch w/o any security checks
+ def is_accessible( self, trans, item, user ):
+ """
+ Return True if the item accessible to user.
+ """
+ # override in subclasses
+ raise exceptions.NotImplemented( "Abstract Interface Method" )
+
+ def get_accessible( self, trans, id, user, **kwargs ):
+ """
+ Return the item with the given id if it's accessible to user,
+ otherwise raise an error.
+
+ :raises exceptions.ItemAccessibilityException:
+ """
+ item = ModelManager.by_id( self, trans, id )
+ return self.error_unless_accessible( trans, item, user )
+
+ def error_unless_accessible( self, trans, item, user ):
+ """
+ Raise an error if the item is NOT accessible to user, otherwise return the item.
+
+ :raises exceptions.ItemAccessibilityException:
+ """
+ if self.is_accessible( trans, item, user ):
+ return item
+ raise exceptions.ItemAccessibilityException( "%s is not accessible by user" % ( self.model_class.__name__ ) )
+
+ #TODO:?? are these even useful?
+ def list_accessible( self, trans, user, **kwargs ):
+ """
+ Return a list of items accessible to the user, raising an error if ANY
+ are inaccessible.
+
+ :raises exceptions.ItemAccessibilityException:
+ """
+ raise exceptions.NotImplemented( "Abstract Interface Method" )
+ #NOTE: this will be a large, inefficient list if filters are not passed in kwargs
+ #items = ModelManager.list( self, trans, **kwargs )
+ #return [ self.error_unless_accessible( trans, item, user ) for item in items ]
+
+ def filter_accessible( self, trans, user, **kwargs ):
+ """
+ Return a list of items accessible to the user.
+ """
+ raise exceptions.NotImplemented( "Abstract Interface Method" )
+ #NOTE: this will be a large, inefficient list if filters are not passed in kwargs
+ #items = ModelManager.list( self, trans, **kwargs )
+ #return filter( lambda item: self.is_accessible( trans, item, user ), items )
+
+
+# =============================================================================
+class OwnableModelInterface( object ):
+ """
+ A security interface to check if a User is an item's owner.
+
+ Some resources are associated with the User that created or imported them
+ and these Users can be considered the models' owner.
+
+ This can also be thought of as write/edit privileges.
+ """
+
+ def is_owner( self, trans, item, user ):
+ """
+ Return True if user owns the item.
+ """
+ # override in subclasses
+ raise exceptions.NotImplemented( "Abstract Interface Method" )
+
+ def get_owned( self, trans, id, user, **kwargs ):
+ """
+ Return the item with the given id if owned by the user,
+ otherwise raise an error.
+
+ :raises exceptions.ItemOwnershipException:
+ """
+ item = ModelManager.by_id( self, trans, id )
+ return self.error_unless_owner( trans, item, user )
+
+ def error_unless_owner( self, trans, item, user ):
+ """
+ Raise an error if the item is NOT owned by user, otherwise return the item.
+
+ :raises exceptions.ItemAccessibilityException:
+ """
+ if self.is_owner( trans, item, user ):
+ return item
+ raise exceptions.ItemOwnershipException( "%s is not owned by user" % ( self.model_class.__name__ ) )
+
+ def list_owned( self, trans, user, **kwargs ):
+ """
+ Return a list of items owned by the user, raising an error if ANY
+ are not.
+
+ :raises exceptions.ItemAccessibilityException:
+ """
+ # just alias to by_user (easier/same thing)
+ return self.by_user( trans, user, **kwargs )
+
+ def filter_owned( self, trans, user, **kwargs ):
+ """
+ Return a list of items owned by the user.
+ """
+ # just alias to list_owned
+ return self.list_owned( trans, user, **kwargs )
+
+
+# -----------------------------------------------------------------------------
+class DeletableModelInterface( object ):
+ """
+ A mixin/interface for a model that is deletable (i.e. has a 'deleted' attr).
+
+ Many resources in Galaxy can be marked as deleted - meaning (in most cases)
+ that they are no longer needed, should not be displayed, or may be actually
+ removed by an admin/script.
+ """
+
+ def delete( self, trans, item, flush=True, **kwargs ):
+ """
+ Mark as deleted and return.
+ """
+ trans.sa_session.add( item )
+ item.deleted = True
+ if flush:
+ trans.sa_session.flush()
+ return item
+
+ def undelete( self, trans, item, flush=True, **kwargs ):
+ """
+ Mark as not deleted and return.
+ """
+ trans.sa_session.add( item )
+ item.deleted = False
+ if flush:
+ trans.sa_session.flush()
+ return item
+
+
+class DeletableModelSerializer( object ):
+
+ def add_serializers( self ):
+ pass
+
+
+#TODO: these are of questionable value if we don't want to enable users to delete/purge via update
+class DeletableModelDeserializer( object ):
+
+ def add_deserializers( self ):
+ self.deserializers[ 'deleted' ] = self.deserialize_deleted
+
+ def deserialize_deleted( self, trans, item, key, val ):
+ """
+ Delete or undelete `item` based on `val` then return `item.deleted`.
+ """
+ new_deleted = self.validate.bool( key, val )
+ if new_deleted == item.deleted:
+ return item.deleted
+ #TODO:?? flush=False?
+ if new_deleted:
+ self.manager.delete( trans, item, flush=False )
+ else:
+ self.manager.undelete( trans, item, flush=False )
+ return item.deleted
+
+
+# -----------------------------------------------------------------------------
+class PurgableModelInterface( DeletableModelInterface ):
+ """
+ A manager interface/mixin for a resource that allows deleting and purging where
+ purging is often removal of some additional, non-db resource (e.g. a dataset's
+ file).
+ """
+
+ def purge( self, trans, item, flush=True, **kwargs ):
+ """
+ Mark as purged and return.
+
+ Override this in subclasses to do the additional resource removal.
+ """
+ trans.sa_session.add( item )
+ item.purged = True
+ if flush:
+ trans.sa_session.flush()
+ return item
+
+
+class PurgableModelSerializer( DeletableModelSerializer ):
+
+ def add_serializers( self ):
+ DeletableModelSerializer.add_serializers( self )
+
+
+class PurgableModelDeserializer( DeletableModelDeserializer ):
+
+ def add_deserializers( self ):
+ DeletableModelDeserializer.add_deserializers( self )
+ self.deserializers[ 'purged' ] = self.deserialize_purged
+
+ def deserialize_purged( self, trans, item, key, val ):
+ """
+ If `val` is True, purge `item` and return `item.purged`.
+ """
+ new_purged = self.validate.bool( key, val )
+ if new_purged == item.purged:
+ return item.purged
+ if new_purged:
+ self.manager.purge( trans, item, flush=False )
+ return self.purged
diff -r d7021ee96a80085d7605b168c73dfd929ad851d3 -r 0fb3b7dc30d6f837e0b81627712016935381aac7 lib/galaxy/managers/collections.py
--- a/lib/galaxy/managers/collections.py
+++ b/lib/galaxy/managers/collections.py
@@ -7,6 +7,7 @@
from galaxy.exceptions import MessageException
from galaxy.exceptions import ItemAccessibilityException
from galaxy.exceptions import RequestParameterInvalidException
+from galaxy.managers import base
from galaxy.managers import hdas # TODO: Refactor all mixin use into managers.
from galaxy.managers import histories
from galaxy.managers import lddas
@@ -35,10 +36,11 @@
self.collection_type_descriptions = CollectionTypeDescriptionFactory( self.type_registry )
self.model = app.model
self.security = app.security
- self.hda_manager = hdas.HDAManager()
- self.history_manager = histories.HistoryManager()
+
+ self.hda_manager = hdas.HDAManager( app )
+ self.history_manager = histories.HistoryManager( app )
self.tag_manager = tags.TagManager( app )
- self.ldda_manager = lddas.LDDAManager( )
+ self.ldda_manager = lddas.LDDAManager( app )
def create(
self,
@@ -64,6 +66,7 @@
element_identifiers=element_identifiers,
elements=elements,
)
+
if isinstance( parent, model.History ):
dataset_collection_instance = self.model.HistoryDatasetCollectionAssociation(
collection=dataset_collection,
@@ -81,15 +84,18 @@
trans.sa_session.add( output_dataset )
dataset_collection_instance.implicit_output_name = implicit_collection_info[ "implicit_output_name" ]
+
log.debug("Created collection with %d elements" % ( len( dataset_collection_instance.collection.elements ) ) )
# Handle setting hid
parent.add_dataset_collection( dataset_collection_instance )
+
elif isinstance( parent, model.LibraryFolder ):
dataset_collection_instance = self.model.LibraryDatasetCollectionAssociation(
collection=dataset_collection,
folder=parent,
name=name,
)
+
else:
message = "Internal logic error - create called with unknown parent type %s" % type( parent )
log.exception( message )
@@ -186,8 +192,6 @@
return source_hdca
def _set_from_dict( self, trans, dataset_collection_instance, new_data ):
- # Blatantly stolen from UsesHistoryDatasetAssociationMixin.set_hda_from_dict.
-
# send what we can down into the model
changed = dataset_collection_instance.set_from_dict( new_data )
# the rest (often involving the trans) - do here
@@ -276,7 +280,7 @@
if src_type == 'hda':
decoded_id = int( trans.app.security.decode_id( encoded_id ) )
- element = self.hda_manager.get( trans, decoded_id, check_ownership=False )
+ element = self.hda_manager.get_accessible( trans, decoded_id, trans.user )
elif src_type == 'ldda':
element = self.ldda_manager.get( trans, encoded_id )
elif src_type == 'hdca':
@@ -310,7 +314,10 @@
def __get_history_collection_instance( self, trans, id, check_ownership=False, check_accessible=True ):
instance_id = int( trans.app.security.decode_id( id ) )
collection_instance = trans.sa_session.query( trans.app.model.HistoryDatasetCollectionAssociation ).get( instance_id )
- self.history_manager.secure( trans, collection_instance.history, check_ownership=check_ownership, check_accessible=check_accessible )
+ if check_ownership:
+ self.history_manager.error_unless_owner( trans, collection_instance.history, trans.user )
+ if check_accessible:
+ self.history_manager.error_unless_accessible( trans, collection_instance.history, trans.user )
return collection_instance
def __get_library_collection_instance( self, trans, id, check_ownership=False, check_accessible=True ):
diff -r d7021ee96a80085d7605b168c73dfd929ad851d3 -r 0fb3b7dc30d6f837e0b81627712016935381aac7 lib/galaxy/managers/collections_util.py
--- a/lib/galaxy/managers/collections_util.py
+++ b/lib/galaxy/managers/collections_util.py
@@ -28,7 +28,6 @@
element_identifiers=payload.get( "element_identifiers" ),
name=payload.get( "name", None ),
)
-
return params
@@ -65,9 +64,9 @@
validate_input_element_identifiers( element_identifier[ "element_identifiers" ] )
-def dictify_dataset_collection_instance( dataset_colleciton_instance, parent, security, view="element" ):
- dict_value = dataset_colleciton_instance.to_dict( view=view )
- encoded_id = security.encode_id( dataset_colleciton_instance.id )
+def dictify_dataset_collection_instance( dataset_collection_instance, parent, security, view="element" ):
+ dict_value = dataset_collection_instance.to_dict( view=view )
+ encoded_id = security.encode_id( dataset_collection_instance.id )
if isinstance( parent, model.History ):
encoded_history_id = security.encode_id( parent.id )
dict_value[ 'url' ] = web.url_for( 'history_content_typed', history_id=encoded_history_id, id=encoded_id, type="dataset_collection" )
diff -r d7021ee96a80085d7605b168c73dfd929ad851d3 -r 0fb3b7dc30d6f837e0b81627712016935381aac7 lib/galaxy/managers/datasets.py
--- /dev/null
+++ b/lib/galaxy/managers/datasets.py
@@ -0,0 +1,285 @@
+"""
+Manager and Serializer for Datasets.
+"""
+from galaxy import model
+from galaxy import exceptions
+
+from galaxy.managers import base
+from galaxy.managers import users
+
+import logging
+log = logging.getLogger( __name__ )
+
+
+# =============================================================================
+class DatasetManager( base.ModelManager, base.AccessibleModelInterface, base.PurgableModelInterface ):
+ """
+ Manipulate datasets: the components contained in DatasetAssociations/DatasetInstances/HDAs/LDDAs
+ """
+
+ model_class = model.Dataset
+ foreign_key_name = 'dataset'
+
+ #TODO:?? get + error_if_uploading is common pattern, should upload check be worked into access/owed?
+
+ def __init__( self, app ):
+ super( DatasetManager, self ).__init__( app )
+ # need for admin test
+ self.user_manager = users.UserManager( app )
+
+ # ......................................................................... create
+ def create( self, trans, flush=True, **kwargs ):
+ """
+ Create and return a new Dataset object.
+ """
+ # default to NEW state on new datasets
+ kwargs.update( dict( state=( kwargs.get( 'state', model.Dataset.states.NEW ) ) ) )
+ dataset = model.Dataset( **kwargs )
+
+ self.app.model.context.add( dataset )
+ if flush:
+ self.app.model.context.flush()
+ return dataset
+
+ #def copy( self, dataset, **kwargs ):
+ # """
+ # Clone, update, and return the given dataset.
+ # """
+ # pass
+
+ # ......................................................................... add to dataset association
+ #def to_hda( self, trans, dataset, history, **kwargs ):
+ # """
+ # Create an hda from this dataset.
+ # """
+ # pass
+
+ #def to_ldda( self, trans, dataset, library_folder, **kwargs ):
+ # """
+ # Create an ldda from this dataset.
+ # """
+ # pass
+
+ # ......................................................................... delete
+ #TODO: this may be more conv. somewhere else
+#TODO: how to allow admin bypass?
+ def error_unless_dataset_purge_allowed( self, trans, item, msg=None ):
+ if not self.app.config.allow_user_dataset_purge:
+ msg = msg or 'This instance does not allow user dataset purging'
+ raise exceptions.ConfigDoesNotAllowException( msg )
+ return item
+
+ def purge( self, trans, dataset, flush=True ):
+ """
+ Remove the object_store/file for this dataset from storage and mark
+ as purged.
+
+ :raises exceptions.ConfigDoesNotAllowException: if the instance doesn't allow
+ """
+ self.error_unless_dataset_purge_allowed( trans, dataset )
+
+ # the following also marks dataset as purged and deleted
+ dataset.full_delete()
+ self.app.model.context.add( dataset )
+ if flush:
+ self.app.model.context.flush()
+ return dataset
+
+ # ......................................................................... accessibility
+ # datasets can implement the accessible interface, but accessibility is checked in an entirely different way
+ # than those resources that have a user attribute (histories, pages, etc.)
+ def is_accessible( self, trans, dataset, user ):
+ """
+ Is this dataset readable/viewable to user?
+ """
+ if self.user_manager.is_admin( trans, user ):
+ return True
+ if self.has_access_permission( trans, dataset, user ):
+ return True
+ return False
+
+ def has_access_permission( self, trans, dataset, user ):
+ """
+ Return T/F if the user has role-based access to the dataset.
+ """
+ roles = user.all_roles() if user else []
+ return self.app.security_agent.can_access_dataset( roles, dataset )
+
+#TODO: these need work
+ def _access_permission( self, trans, dataset, user=None, role=None ):
+ """
+ Return most recent DatasetPermissions for the dataset and user.
+ """
+ security_agent = self.app.security_agent
+ access_action = security_agent.permitted_actions.DATASET_ACCESS.action
+
+ # get a list of role ids to check access for (defaulting to all_roles)
+ user_roles = [ role ] if role else user.all_roles()
+ user_role_ids = [ role.id for role in user_roles ]
+ query = ( self.app.model.context.query( model.DatasetPermissions )
+ .filter( model.DatasetPermissions.action == access_action )
+ .filter( model.DatasetPermissions.dataset == dataset )
+ .filter( model.DatasetPermissions.role_id.in_( user_role_ids ) ) )
+ #TODO:?? most recent?
+ return query.first()
+
+ def _create_access_permission( self, trans, dataset, role, flush=True ):
+ """
+ Create a new DatasetPermissions for the given dataset and role.
+ """
+ access_action = self.app.security_agent.permitted_actions.DATASET_ACCESS.action
+ permission = model.DatasetPermissions( access_action, dataset, role )
+ self.app.model.context.add( permission )
+ if flush:
+ self.app.model.context.flush()
+ return permission
+
+ #def give_access_permission( self, trans, dataset, user, flush=True ):
+ # """
+ # """
+ # # for now, use the user's private role
+ # security_agent = self.app.security_agent
+ # user_role = security_agent.get_private_user_role( user )
+ #
+ # existing_permission = self._access_permission( trans, dataset, role=user_role )
+ # print 'existing access_perm:', existing_permission
+ # if existing_permission:
+ # return dataset
+ #
+ # permission = self._create_access_permission( trans, dataset, user_role )
+ # print 'access_roles:', [ role.name for role in dataset.get_access_roles( trans ) ]
+ #
+ # #access_action = security_agent.permitted_actions.DATASET_ACCESS.action
+ # #access_action = security_agent.get_action( access_action )
+ # #permissions = { access_action : [ user_role ] }
+ # #security_agent.set_dataset_permission( dataset, permissions )
+ #
+ # #self.app.model.context.add( dataset )
+ # #if flush:
+ # # self.app.model.context.flush()
+ #
+ # dbl_chk = self._access_permission( trans, dataset, role=user_role )
+ # print 'access_perm:', dbl_chk
+ #
+ # return dataset
+
+ #def remove_access_permission( self, trans, dataset, user ):
+ # """
+ # """
+ # pass
+
+ # ......................................................................... manage/modify
+ #def has_manage_permission( self, trans, dataset, user ):
+ # """
+ # """
+ # pass
+ #
+ #def give_manage_permission( self, trans, dataset, user ):
+ # """
+ # """
+ # pass
+ #
+ #def remove_manage_permission( self, trans, dataset, user ):
+ # """
+ # """
+ # pass
+
+ #TODO: implement above for groups
+ #TODO: datatypes?
+
+ # ......................................................................... data, object_store
+
+
+# -----------------------------------------------------------------------------
+class DatasetSerializer( base.ModelSerializer, base.PurgableModelSerializer ):
+
+ def __init__( self, app ):
+ super( DatasetSerializer, self ).__init__( app )
+
+ # most of these views build/add to the previous view
+ summary_view = [
+ 'id',
+ 'create_time', 'update_time',
+ 'state',
+ 'deleted', 'purged', 'purgable',
+ #'object_store_id',
+ #'external_filename',
+ #'extra_files_path',
+ 'file_size', 'total_size',
+ 'uuid',
+ ]
+ # could do visualizations and/or display_apps
+
+ self.serializable_keys = summary_view + [
+ ]
+ self.views = {
+ 'summary' : summary_view,
+ }
+ self.default_view = 'summary'
+
+ def add_serializers( self ):
+ base.PurgableModelSerializer.add_serializers( self )
+ self.serializers.update({
+ 'id' : self.serialize_id,
+ 'create_time' : self.serialize_date,
+ 'update_time' : self.serialize_date,
+ 'uuid' : lambda t, i, k: str( i.uuid ) if i.uuid else None,
+ })
+
+
+# -----------------------------------------------------------------------------
+class DatasetDeserializer( base.ModelDeserializer, base.PurgableModelDeserializer ):
+ model_manager_class = DatasetManager
+
+ def add_deserializers( self ):
+ super( DatasetDeserializer, self ).add_deserializers()
+ base.PurgableModelDeserializer.add_deserializers( self )
+
+
+# =============================================================================
+class DatasetAssociationManager( base.ModelManager, base.AccessibleModelInterface, base.PurgableModelInterface ):
+ """
+ """
+ # DA's were meant to be proxies - but were never fully implemented as them
+ # Instead, a dataset association HAS a dataset but contains metadata specific to a library (lda) or user (hda)
+ model_class = model.DatasetInstance
+
+ def __init__( self, app ):
+ super( DatasetAssociationManager, self ).__init__( app )
+ self.dataset_manager = DatasetManager( app )
+
+ def is_accessible( self, trans, dataset_assoc, user ):
+ """
+ Is this DA accessible to `user`?
+ """
+ # defer to the dataset
+ return self.dataset_manager.is_accessible( trans, dataset_assoc.dataset, user )
+
+ #def metadata( self, trans, dataset_assoc ):
+ # """
+ # Return the metadata collection.
+ # """
+ # # get metadata
+ # pass
+
+ #def is_being_used( self, trans, dataset_assoc ):
+ # """
+ # """
+ # #TODO: check history_associations, library_associations
+ # pass
+
+
+# -----------------------------------------------------------------------------
+class DatasetAssociationSerializer( base.ModelSerializer, base.PurgableModelSerializer ):
+
+ def add_serializers( self ):
+ super( DatasetAssociationSerializer, self ).add_serializers()
+ base.PurgableModelSerializer.add_serializers( self )
+
+
+# -----------------------------------------------------------------------------
+class DatasetAssociationDeserializer( base.ModelDeserializer, base.PurgableModelDeserializer ):
+
+ def add_deserializers( self ):
+ super( DatasetAssociationDeserializer, self ).add_deserializers()
+ base.PurgableModelDeserializer.add_deserializers( self )
This diff is so big that we needed to truncate the remainder.
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: carlfeberhard: UI: update tracekit to latest (github.com/occ/TraceKit)
by commits-noreply@bitbucket.org 21 Jan '15
by commits-noreply@bitbucket.org 21 Jan '15
21 Jan '15
MSBuZXcgY29tbWl0IGluIGdhbGF4eS1jZW50cmFsOgoKaHR0cHM6Ly9iaXRidWNrZXQub3JnL2dh
bGF4eS9nYWxheHktY2VudHJhbC9jb21taXRzL2Q3MDIxZWU5NmE4MC8KQ2hhbmdlc2V0OiAgIGQ3
MDIxZWU5NmE4MApVc2VyOiAgICAgICAgY2FybGZlYmVyaGFyZApEYXRlOiAgICAgICAgMjAxNS0w
MS0yMSAyMToyOTozNSswMDowMApTdW1tYXJ5OiAgICAgVUk6IHVwZGF0ZSB0cmFjZWtpdCB0byBs
YXRlc3QgKGdpdGh1Yi5jb20vb2NjL1RyYWNlS2l0KQpBZmZlY3RlZCAjOiAgNCBmaWxlcwoKZGlm
ZiAtciA1MGRiZWQ5ZjhmNTgzNDgwYzM5NGQ5YzhhMWNhODE1ODU0ODJjMDYzIC1yIGQ3MDIxZWU5
NmE4MDA4NWQ3NjA1YjE2PQo4YzczZGZkOTI5YWQ4NTFkMyBjbGllbnQvR3J1bnRGaWxlLmpzCi0t
LSBhL2NsaWVudC9HcnVudEZpbGUuanMKKysrIGIvY2xpZW50L0dydW50RmlsZS5qcwpAQCAtNzAs
MTIgKzcwLDEzIEBACiAgICAgICAianF1ZXJ5IjogWyAiZGlzdC9qcXVlcnkuanMiLCAianF1ZXJ5
L2pxdWVyeS5qcyIgXSwKICAgICAgICJqcXVlcnktbWlncmF0ZS1vZmZpY2lhbCI6IFsgImluZGV4
LmpzIiwgImpxdWVyeS9qcXVlcnkubWlncmF0ZS5qcyIgPQpdLAo9MjAKLSAgICAgIC8vIHRoZXNl
IG5lZWQgdG8gYmUgdXBkYXRlZCBhbmQgdGVzdGVkCi0gICAgICAvLyJ0cmFjZUtpdCI6IFsgInRy
YWNla2l0LmpzIiwgInRyYWNla2l0LmpzIiBdLAorICAgICAgInRyYWNlS2l0IjogWyAidHJhY2Vr
aXQuanMiLCAidHJhY2VraXQuanMiIF0sCiAgICAgICAvLyJyYXZlbmpzIjogWyAiZGlzdC9yYXZl
bi5qcyIsICJyYXZlbi5qcyIgXSwKLSAgICAgIC8vInJlcXVpcmUiOiBbICJidWlsZC9yZXF1aXJl
LmpzIiwgInJlcXVpcmUuanMiIF0sCiAgICAgICAvLyJ1bmRlcnNjb3JlIjogWyAidW5kZXJzY29y
ZS5qcyIsICJ1bmRlcnNjb3JlLmpzIiBdLAogICAgICAgLy8iYmFja2JvbmUiOiBbICJiYWNrYm9u
ZS5qcyIsICJiYWNrYm9uZS9iYWNrYm9uZS5qcyIgXSwKKworICAgICAgLy8gdGhlc2UgbmVlZCB0
byBiZSB1cGRhdGVkIGFuZCB0ZXN0ZWQKKyAgICAgIC8vInJlcXVpcmUiOiBbICJidWlsZC9yZXF1
aXJlLmpzIiwgInJlcXVpcmUuanMiIF0sCiAgICAgICAvLyJkMyI6IFsgImQzLmpzIiwgImQzLmpz
IiBdLAogICAgICAgLy8iZmFyYnRhc3RpYyI6IFsgInNyYy9mYXJidGFzdGljLmpzIiwgImZhcmJ0
YXN0aWMuanMiIF0sCiAgICAgICAvLyJqUVRvdWNoIjogWyAic3JjL3JlZmVyZW5jZS9qcXRvdWNo
LmpzIiwgImpxdWVyeS9qcXRvdWNoLmpzIiBdLAoKZGlmZiAtciA1MGRiZWQ5ZjhmNTgzNDgwYzM5
NGQ5YzhhMWNhODE1ODU0ODJjMDYzIC1yIGQ3MDIxZWU5NmE4MDA4NWQ3NjA1YjE2PQo4YzczZGZk
OTI5YWQ4NTFkMyBjbGllbnQvZ2FsYXh5L3NjcmlwdHMvbGlicy90cmFjZWtpdC5qcwotLS0gYS9j
bGllbnQvZ2FsYXh5L3NjcmlwdHMvbGlicy90cmFjZWtpdC5qcworKysgYi9jbGllbnQvZ2FsYXh5
L3NjcmlwdHMvbGlicy90cmFjZWtpdC5qcwpAQCAtMywxMiArMywzMiBAQAogIE1JVCBsaWNlbnNl
CiAqLwo9MjAKLTsoZnVuY3Rpb24od2luZG93LCB1bmRlZmluZWQpIHsKKyhmdW5jdGlvbih3aW5k
b3csIHVuZGVmaW5lZCkgewo9MjAKPTIwCiB2YXIgVHJhY2VLaXQgPTNEIHt9OwogdmFyIF9vbGRU
cmFjZUtpdCA9M0Qgd2luZG93LlRyYWNlS2l0Owo9MjAKKy8vIGdsb2JhbCByZWZlcmVuY2UgdG8g
c2xpY2UKK3ZhciBfc2xpY2UgPTNEIFtdLnNsaWNlOwordmFyIFVOS05PV05fRlVOQ1RJT04gPTNE
ICc/JzsKKworCisvKioKKyAqIF9oYXMsIGEgYmV0dGVyIGZvcm0gb2YgaGFzT3duUHJvcGVydHkK
KyAqIEV4YW1wbGU6IF9oYXMoTWFpbkhvc3RPYmplY3QsIHByb3BlcnR5KSA9M0Q9M0Q9M0QgdHJ1
ZS9mYWxzZQorICoKKyAqIEBwYXJhbSB7T2JqZWN0fSBob3N0IG9iamVjdCB0byBjaGVjayBwcm9w
ZXJ0eQorICogQHBhcmFtIHtzdHJpbmd9IGtleSB0byBjaGVjaworICovCitmdW5jdGlvbiBfaGFz
KG9iamVjdCwga2V5KSB7CisgICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy
dHkuY2FsbChvYmplY3QsIGtleSk7Cit9CisKK2Z1bmN0aW9uIF9pc1VuZGVmaW5lZCh3aGF0KSB7
CisgICAgcmV0dXJuIHR5cGVvZiB3aGF0ID0zRD0zRD0zRCAndW5kZWZpbmVkJzsKK30KKwogLyoq
CiAgKiBUcmFjZUtpdC5ub0NvbmZsaWN0OiBFeHBvcnQgVHJhY2VLaXQgb3V0IHRvIGFub3RoZXIg
dmFyaWFibGUKICAqIEV4YW1wbGU6IHZhciBUSyA9M0QgVHJhY2VLaXQubm9Db25mbGljdCgpCkBA
IC0xOSwxNCArMzksMjIgQEAKIH07Cj0yMAogLyoqCi0gKiBUcmFjZUtpdC5faGFzLCBhIGJldHRl
ciBmb3JtIG9mIGhhc093blByb3BlcnR5Ci0gKiBFeGFtcGxlOiBUcmFjZUtpdC5faGFzKE1haW5I
b3N0T2JqZWN0LCBwcm9wZXJ0eSkgPTNEPTNEPTNEIHRydWUvZmFsc2UKKyAqIFRyYWNlS2l0Lndy
YXA6IFdyYXAgYW55IGZ1bmN0aW9uIGluIGEgVHJhY2VLaXQgcmVwb3J0ZXIKKyAqIEV4YW1wbGU6
IGZ1bmMgPTNEIFRyYWNlS2l0LndyYXAoZnVuYyk7CiAgKgotICogQHBhcmFtIHtPYmplY3R9IGhv
c3Qgb2JqZWN0IHRvIGNoZWNrIHByb3BlcnR5Ci0gKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRvIGNo
ZWNrCisgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIEZ1bmN0aW9uIHRvIGJlIHdyYXBwZWQKKyAq
IEByZXR1cm4ge0Z1bmN0aW9ufSBUaGUgd3JhcHBlZCBmdW5jCiAgKi8KLVRyYWNlS2l0Ll9oYXMg
PTNEIGZ1bmN0aW9uIF9oYXMob2JqZWN0LCBrZXkpIHsKLSAgICByZXR1cm4gT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KTsKK1RyYWNlS2l0LndyYXAgPTNE
IGZ1bmN0aW9uIHRyYWNlS2l0V3JhcHBlcihmdW5jKSB7CisgICAgZnVuY3Rpb24gd3JhcHBlZCgp
IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBmdW5jLmFwcGx5KHRoaXMsIGFy
Z3VtZW50cyk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIFRyYWNlS2l0LnJl
cG9ydChlKTsKKyAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIHdyYXBwZWQ7CiB9Owo9MjAKIC8qKgpAQCAtNzgsNiArMTA2LDcgQEAKICAgICAgKiBAcGFy
YW0ge0Z1bmN0aW9ufSBoYW5kbGVyCiAgICAgICovCiAgICAgZnVuY3Rpb24gc3Vic2NyaWJlKGhh
bmRsZXIpIHsKKyAgICAgICAgaW5zdGFsbEdsb2JhbEhhbmRsZXIoKTsKICAgICAgICAgaGFuZGxl
cnMucHVzaChoYW5kbGVyKTsKICAgICB9Cj0yMApAQCAtMTAzLDkgKzEzMiw5IEBACiAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGZvciAodmFyIGkgaW4gaGFuZGxlcnMpIHsK
LSAgICAgICAgICAgIGlmIChUcmFjZUtpdC5faGFzKGhhbmRsZXJzLCBpKSkgeworICAgICAgICAg
ICAgaWYgKF9oYXMoaGFuZGxlcnMsIGkpKSB7CiAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAg
ICAgICAgICAgICAgICAgaGFuZGxlcnNbaV0uYXBwbHkobnVsbCwgW3N0YWNrXS5jb25jYXQoQXJy
YXkucHJvdG90eXBlPQouc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpKSk7CisgICAgICAgICAgICAg
ICAgICAgIGhhbmRsZXJzW2ldLmFwcGx5KG51bGwsIFtzdGFja10uY29uY2F0KF9zbGljZS5jYWxs
KGFyZz0KdW1lbnRzLCAyKSkpOwogICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGlubmVyKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiA9M0QgaW5uZXI7CiAgICAgICAgICAgICAgICAg
fQpAQCAtMTE3LDcgKzE0Niw3IEBACiAgICAgICAgIH0KICAgICB9Cj0yMAotICAgIHZhciBfb2xk
T25lcnJvckhhbmRsZXIgPTNEIHdpbmRvdy5vbmVycm9yOworICAgIHZhciBfb2xkT25lcnJvckhh
bmRsZXIsIF9vbkVycm9ySGFuZGxlckluc3RhbGxlZDsKPTIwCiAgICAgLyoqCiAgICAgICogRW5z
dXJlcyBhbGwgZ2xvYmFsIHVuaGFuZGxlZCBleGNlcHRpb25zIGFyZSByZWNvcmRlZC4KQEAgLTEy
Nyw3ICsxNTYsNyBAQAogICAgICAqIEBwYXJhbSB7KG51bWJlcnxzdHJpbmcpfSBsaW5lTm8gVGhl
IGxpbmUgbnVtYmVyIGF0IHdoaWNoIHRoZSBlcnJvcgogICAgICAqIG9jY3VycmVkLgogICAgICAq
LwotICAgIHdpbmRvdy5vbmVycm9yID0zRCBmdW5jdGlvbiB0cmFjZUtpdFdpbmRvd09uRXJyb3Io
bWVzc2FnZSwgdXJsLCBsaW5lTm89CikgeworICAgIGZ1bmN0aW9uIHRyYWNlS2l0V2luZG93T25F
cnJvcihtZXNzYWdlLCB1cmwsIGxpbmVObykgewogICAgICAgICB2YXIgc3RhY2sgPTNEIG51bGw7
Cj0yMAogICAgICAgICBpZiAobGFzdEV4Y2VwdGlvblN0YWNrKSB7CkBAIC0xNTgsMTQgKzE4Nywy
NCBAQAogICAgICAgICB9Cj0yMAogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBpbnN0YWxsR2xvYmFsSGFuZGxlciAoKQorICAgIHsKKyAgICAgICAg
aWYgKF9vbkVycm9ySGFuZGxlckluc3RhbGxlZCA9M0Q9M0Q9M0QgdHJ1ZSkgeworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIF9vbGRPbmVycm9ySGFuZGxlciA9M0Qgd2lu
ZG93Lm9uZXJyb3I7CisgICAgICAgIHdpbmRvdy5vbmVycm9yID0zRCB0cmFjZUtpdFdpbmRvd09u
RXJyb3I7CisgICAgICAgIF9vbkVycm9ySGFuZGxlckluc3RhbGxlZCA9M0QgdHJ1ZTsKKyAgICB9
Cj0yMAogICAgIC8qKgogICAgICAqIFJlcG9ydHMgYW4gdW5oYW5kbGVkIEVycm9yIHRvIFRyYWNl
S2l0LgogICAgICAqIEBwYXJhbSB7RXJyb3J9IGV4CiAgICAgICovCiAgICAgZnVuY3Rpb24gcmVw
b3J0KGV4KSB7Ci0gICAgICAgIHZhciBhcmdzID0zRCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2Fs
bChhcmd1bWVudHMsIDEpOworICAgICAgICB2YXIgYXJncyA9M0QgX3NsaWNlLmNhbGwoYXJndW1l
bnRzLCAxKTsKICAgICAgICAgaWYgKGxhc3RFeGNlcHRpb25TdGFjaykgewogICAgICAgICAgICAg
aWYgKGxhc3RFeGNlcHRpb24gPTNEPTNEPTNEIGV4KSB7CiAgICAgICAgICAgICAgICAgcmV0dXJu
OyAvLyBhbHJlYWR5IGNhdWdodCBieSBhbiBpbm5lciBjYXRjaCBibG9jaywgaWdub3JlCkBAIC0y
ODMsMjkgKzMyMiwxNiBAQAogICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgICB9CiAgICAg
ICAgIHRyeSB7Ci0gICAgICAgICAgICB2YXIgWE1MSHR0cFJlcXVlc3RXcmFwcGVyOworICAgICAg
ICAgICAgdmFyIGdldFhIUiA9M0QgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyB3aW5kb3cuWE1MSHR0cFJlcXVlc3QoKTsK
KyAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIGV4
cGxpY2l0bHkgYnViYmxlIHVwIHRoZSBleGNlcHRpb24gaWYgbm90IGZvdW5kCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgd2luZG93LkFjdGl2ZVhPYmplY3QoJ01pY3Jvc29mdC5YTUxI
VFRQJyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKPTIwCi0gICAgICAgICAg
ICBpZiAodHlwZW9mIChYTUxIdHRwUmVxdWVzdCkgPTNEPTNEPTNEICd1bmRlZmluZWQnKSB7IC8v
IElFIDUueD0KLTYueDoKLSAgICAgICAgICAgICAgICBYTUxIdHRwUmVxdWVzdFdyYXBwZXIgPTNE
IGZ1bmN0aW9uIElFWE1MSHR0cFJlcXVlc3RTdWIoKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRy
eSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01z
eG1sMi5YTUxIVFRQLjYuMCcpOwotICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQot
ICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IG5ldyBBY3RpdmVYT2JqZWN0KCdNc3htbDIuWE1MSFRUUC4zLjAnKTsKLSAgICAgICAgICAgICAg
ICAgICAgfSBjYXRjaCAoZSkge30KLSAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQWN0aXZlWE9iamVjdCgnTXN4bWwyLlhNTEhUVFAn
KTsKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30KLSAgICAgICAgICAgICAgICAg
ICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQWN0aXZlWE9iamVj
dCgnTWljcm9zb2Z0LlhNTEhUVFAnKTsKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkg
e30KLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBYSFIuJyk7Ci0gICAg
ICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgWE1M
SHR0cFJlcXVlc3RXcmFwcGVyID0zRCBYTUxIdHRwUmVxdWVzdDsKLSAgICAgICAgICAgIH0KLSAg
ID0yMAotICAgICAgICAgICAgdmFyIHJlcXVlc3QgPTNEIG5ldyBYTUxIdHRwUmVxdWVzdFdyYXBw
ZXIoKTsKKyAgICAgICAgICAgIHZhciByZXF1ZXN0ID0zRCBnZXRYSFIoKTsKICAgICAgICAgICAg
IHJlcXVlc3Qub3BlbignR0VUJywgdXJsLCBmYWxzZSk7CiAgICAgICAgICAgICByZXF1ZXN0LnNl
bmQoJycpOwogICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3QucmVzcG9uc2VUZXh0OwpAQCAtMzIw
LDE2ICszNDYsMTQgQEAKICAgICAgKiBAcmV0dXJuIHtBcnJheS48c3RyaW5nPn0gU291cmNlIGNv
bnRlbnRzLgogICAgICAqLwogICAgIGZ1bmN0aW9uIGdldFNvdXJjZSh1cmwpIHsKLSAgICAgICAg
aWYgKCFUcmFjZUtpdC5faGFzKHNvdXJjZUNhY2hlLCB1cmwpKSB7CisgICAgICAgIGlmICghX2hh
cyhzb3VyY2VDYWNoZSwgdXJsKSkgewogICAgICAgICAgICAgLy8gVVJMIG5lZWRzIHRvIGJlIGFi
bGUgdG8gZmV0Y2hlZCB3aXRoaW4gdGhlIGFjY2VwdGFibGUgZG9tYWk9Cm4uICBPdGhlcndpc2Us
CiAgICAgICAgICAgICAvLyBjcm9zcy1kb21haW4gZXJyb3JzIHdpbGwgYmUgdHJpZ2dlcmVkLgot
ICAgICAgICAgICAgdmFyIHNvdXJjZTsKKyAgICAgICAgICAgIHZhciBzb3VyY2UgPTNEICcnOwog
ICAgICAgICAgICAgaWYgKHVybC5pbmRleE9mKGRvY3VtZW50LmRvbWFpbikgIT0zRD0zRCAtMSkg
ewogICAgICAgICAgICAgICAgIHNvdXJjZSA9M0QgbG9hZFNvdXJjZSh1cmwpOwotICAgICAgICAg
ICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzb3VyY2UgPTNEIFtdOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgc291cmNlQ2FjaGVbdXJsXSA9M0Qgc291cmNlLmxlbmd0aCA/IHNvdXJj
ZS5zcGxpdCgnXG4nKSA6IFtdOworICAgICAgICAgICAgc291cmNlQ2FjaGVbdXJsXSA9M0Qgc291
cmNlID8gc291cmNlLnNwbGl0KCdcbicpIDogW107CiAgICAgICAgIH0KPTIwCiAgICAgICAgIHJl
dHVybiBzb3VyY2VDYWNoZVt1cmxdOwpAQCAtMzUyLDcgKzM3Niw3IEBACiAgICAgICAgICAgICBt
Owo9MjAKICAgICAgICAgaWYgKCFzb3VyY2UubGVuZ3RoKSB7Ci0gICAgICAgICAgICByZXR1cm4g
Jz8nOworICAgICAgICAgICAgcmV0dXJuIFVOS05PV05fRlVOQ1RJT047CiAgICAgICAgIH0KPTIw
CiAgICAgICAgIC8vIFdhbGsgYmFja3dhcmRzIGZyb20gdGhlIGZpcnN0IGxpbmUgaW4gdGhlIGZ1
bmN0aW9uIHVudGlsIHdlIGZpbj0KZCB0aGUgbGluZSB3aGljaApAQCAtMzYwLDcgKzM4NCw3IEBA
CiAgICAgICAgIGZvciAodmFyIGkgPTNEIDA7IGkgPCBtYXhMaW5lczsgKytpKSB7CiAgICAgICAg
ICAgICBsaW5lID0zRCBzb3VyY2VbbGluZU5vIC0gaV0gKyBsaW5lOwo9MjAKLSAgICAgICAgICAg
IGlmIChsaW5lICE9M0Q9M0QgdW5kZWZpbmVkKSB7CisgICAgICAgICAgICBpZiAoIV9pc1VuZGVm
aW5lZChsaW5lKSkgewogICAgICAgICAgICAgICAgIGlmICgobSA9M0QgcmVHdWVzc0Z1bmN0aW9u
LmV4ZWMobGluZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtWzFdOwogICAgICAg
ICAgICAgICAgIH0gZWxzZSBpZiAoKG0gPTNEIHJlRnVuY3Rpb25BcmdOYW1lcy5leGVjKGxpbmUp
KSkgewpAQCAtMzY5LDcgKzM5Myw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KPTIwCi0g
ICAgICAgIHJldHVybiAnPyc7CisgICAgICAgIHJldHVybiBVTktOT1dOX0ZVTkNUSU9OOwogICAg
IH0KPTIwCiAgICAgLyoqCkBAIC0zOTksNyArNDIzLDcgQEAKICAgICAgICAgbGluZSAtPTNEIDE7
IC8vIGNvbnZlcnQgdG8gMC1iYXNlZCBpbmRleAo9MjAKICAgICAgICAgZm9yICh2YXIgaSA9M0Qg
c3RhcnQ7IGkgPCBlbmQ7ICsraSkgewotICAgICAgICAgICAgaWYgKHR5cGVvZiAoc291cmNlW2ld
KSAhPTNEPTNEICd1bmRlZmluZWQnKSB7CisgICAgICAgICAgICBpZiAoIV9pc1VuZGVmaW5lZChz
b3VyY2VbaV0pKSB7CiAgICAgICAgICAgICAgICAgY29udGV4dC5wdXNoKHNvdXJjZVtpXSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTU5NCw3ICs2MTgsNyBAQAogICAgICAgICAgICAg
cmV0dXJuIG51bGw7CiAgICAgICAgIH0KPTIwCi0gICAgICAgIHZhciBjaHJvbWUgPTNEIC9eXHMq
YXQgKD86KCg/Olxbb2JqZWN0IG9iamVjdFxdKT9cUyspICk/XCg/KCg/OmZpbD0KZXxodHRwfGh0
dHBzKTouKj8pOihcZCspKD86OihcZCspKT9cKT9ccyokL2ksCisgICAgICAgIHZhciBjaHJvbWUg
PTNEIC9eXHMqYXQgKD86KCg/Olxbb2JqZWN0IG9iamVjdFxdKT9cUysoPzogXFthcyBcUytcXT0K
KT8pICk/XCg/KCg/OmZpbGV8aHR0cHxodHRwcyk6Lio/KTooXGQrKSg/OjooXGQrKSk/XCk/XHMq
JC9pLAogICAgICAgICAgICAgZ2Vja28gPTNEIC9eXHMqKFxTKikoPzpcKCguKj8pXCkpP0AoKD86
ZmlsZXxodHRwfGh0dHBzKS4qPyk6KFw9CmQrKSg/OjooXGQrKSk/XHMqJC9pLAogICAgICAgICAg
ICAgbGluZXMgPTNEIGV4LnN0YWNrLnNwbGl0KCdcbicpLAogICAgICAgICAgICAgc3RhY2sgPTNE
IFtdLApAQCAtNjA2LDcgKzYzMCw3IEBACiAgICAgICAgICAgICBpZiAoKHBhcnRzID0zRCBnZWNr
by5leGVjKGxpbmVzW2ldKSkpIHsKICAgICAgICAgICAgICAgICBlbGVtZW50ID0zRCB7CiAgICAg
ICAgICAgICAgICAgICAgICd1cmwnOiBwYXJ0c1szXSwKLSAgICAgICAgICAgICAgICAgICAgJ2Z1
bmMnOiBwYXJ0c1sxXSB8fCAnPycsCisgICAgICAgICAgICAgICAgICAgICdmdW5jJzogcGFydHNb
MV0gfHwgVU5LTk9XTl9GVU5DVElPTiwKICAgICAgICAgICAgICAgICAgICAgJ2FyZ3MnOiBwYXJ0
c1syXSA/IHBhcnRzWzJdLnNwbGl0KCcsJykgOiAnJywKICAgICAgICAgICAgICAgICAgICAgJ2xp
bmUnOiArcGFydHNbNF0sCiAgICAgICAgICAgICAgICAgICAgICdjb2x1bW4nOiBwYXJ0c1s1XSA/
ICtwYXJ0c1s1XSA6IG51bGwKQEAgLTYxNCw3ICs2MzgsNyBAQAogICAgICAgICAgICAgfSBlbHNl
IGlmICgocGFydHMgPTNEIGNocm9tZS5leGVjKGxpbmVzW2ldKSkpIHsKICAgICAgICAgICAgICAg
ICBlbGVtZW50ID0zRCB7CiAgICAgICAgICAgICAgICAgICAgICd1cmwnOiBwYXJ0c1syXSwKLSAg
ICAgICAgICAgICAgICAgICAgJ2Z1bmMnOiBwYXJ0c1sxXSB8fCAnPycsCisgICAgICAgICAgICAg
ICAgICAgICdmdW5jJzogcGFydHNbMV0gfHwgVU5LTk9XTl9GVU5DVElPTiwKICAgICAgICAgICAg
ICAgICAgICAgJ2xpbmUnOiArcGFydHNbM10sCiAgICAgICAgICAgICAgICAgICAgICdjb2x1bW4n
OiBwYXJ0c1s0XSA/ICtwYXJ0c1s0XSA6IG51bGwKICAgICAgICAgICAgICAgICB9OwpAQCAtNzUw
LDcgKzc3NCw3IEBACiAgICAgICAgICAgICBzb3VyY2U7Cj0yMAogICAgICAgICBmb3IgKGkgaW4g
c2NyaXB0cykgewotICAgICAgICAgICAgaWYgKFRyYWNlS2l0Ll9oYXMoc2NyaXB0cywgaSkgJiYg
IXNjcmlwdHNbaV0uc3JjKSB7CisgICAgICAgICAgICBpZiAoX2hhcyhzY3JpcHRzLCBpKSAmJiAh
c2NyaXB0c1tpXS5zcmMpIHsKICAgICAgICAgICAgICAgICBpbmxpbmVTY3JpcHRCbG9ja3MucHVz
aChzY3JpcHRzW2ldKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtOTA0LDcgKzkyOCw3
IEBACj0yMAogICAgICAgICAgICAgaXRlbSA9M0QgewogICAgICAgICAgICAgICAgICd1cmwnOiBu
dWxsLAotICAgICAgICAgICAgICAgICdmdW5jJzogJz8nLAorICAgICAgICAgICAgICAgICdmdW5j
JzogVU5LTk9XTl9GVU5DVElPTiwKICAgICAgICAgICAgICAgICAnbGluZSc6IG51bGwsCiAgICAg
ICAgICAgICAgICAgJ2NvbHVtbic6IG51bGwKICAgICAgICAgICAgIH07CkBAIC05MTksNyArOTQz
LDcgQEAKICAgICAgICAgICAgICAgICBpdGVtLnVybCA9M0Qgc291cmNlLnVybDsKICAgICAgICAg
ICAgICAgICBpdGVtLmxpbmUgPTNEIHNvdXJjZS5saW5lOwo9MjAKLSAgICAgICAgICAgICAgICBp
ZiAoaXRlbS5mdW5jID0zRD0zRD0zRCAnPycpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXRlbS5m
dW5jID0zRD0zRD0zRCBVTktOT1dOX0ZVTkNUSU9OKSB7CiAgICAgICAgICAgICAgICAgICAgIGl0
ZW0uZnVuYyA9M0QgZ3Vlc3NGdW5jdGlvbk5hbWUoaXRlbS51cmwsIGl0ZW0ubGluZSk7CiAgICAg
ICAgICAgICAgICAgfQo9MjAKQEAgLTEwMjksOCArMTA1Myw2IEBACiAgICAgICAgIH0gY2F0Y2gg
KGV4KSB7CiAgICAgICAgICAgICByZXR1cm4gY29tcHV0ZVN0YWNrVHJhY2UoZXgsIGRlcHRoICsg
MSk7CiAgICAgICAgIH0KLQotICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9Cj0yMAogICAgIGNv
bXB1dGVTdGFja1RyYWNlLmF1Z21lbnRTdGFja1RyYWNlV2l0aEluaXRpYWxFbGVtZW50ID0zRCBh
dWdtZW50U3RhY2s9ClRyYWNlV2l0aEluaXRpYWxFbGVtZW50OwpAQCAtMTA0NSwyMiArMTA2Nywx
NSBAQAogICogRXh0ZW5kcyBzdXBwb3J0IGZvciBnbG9iYWwgZXJyb3IgaGFuZGxpbmcgZm9yIGFz
eW5jaHJvbm91cyBicm93c2VyCiAgKiBmdW5jdGlvbnMuIEFkb3B0ZWQgZnJvbSBDbG9zdXJlIExp
YnJhcnkncyBlcnJvcmhhbmRsZXIuanMKICAqLwotKGZ1bmN0aW9uIGV4dGVuZFRvQXN5bmNocm9u
b3VzQ2FsbGJhY2tzKHcpIHsKKyhmdW5jdGlvbiBleHRlbmRUb0FzeW5jaHJvbm91c0NhbGxiYWNr
cygpIHsKICAgICB2YXIgX2hlbHBlciA9M0QgZnVuY3Rpb24gX2hlbHBlcihmbk5hbWUpIHsKLSAg
ICAgICAgdmFyIG9yaWdpbmFsRm4gPTNEIHdbZm5OYW1lXTsKLSAgICAgICAgd1tmbk5hbWVdID0z
RCBmdW5jdGlvbiB0cmFjZUtpdEFzeW5jRXh0ZW5zaW9uKCkgeworICAgICAgICB2YXIgb3JpZ2lu
YWxGbiA9M0Qgd2luZG93W2ZuTmFtZV07CisgICAgICAgIHdpbmRvd1tmbk5hbWVdID0zRCBmdW5j
dGlvbiB0cmFjZUtpdEFzeW5jRXh0ZW5zaW9uKCkgewogICAgICAgICAgICAgLy8gTWFrZSBhIGNv
cHkgb2YgdGhlIGFyZ3VtZW50cwotICAgICAgICAgICAgdmFyIGFyZ3MgPTNEIEFycmF5LnByb3Rv
dHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7CisgICAgICAgICAgICB2YXIgYXJncyA9M0Qg
X3NsaWNlLmNhbGwoYXJndW1lbnRzKTsKICAgICAgICAgICAgIHZhciBvcmlnaW5hbENhbGxiYWNr
ID0zRCBhcmdzWzBdOwogICAgICAgICAgICAgaWYgKHR5cGVvZiAob3JpZ2luYWxDYWxsYmFjaykg
PTNEPTNEPTNEICdmdW5jdGlvbicpIHsKLSAgICAgICAgICAgICAgICBhcmdzWzBdID0zRCBmdW5j
dGlvbiB0cmFjZUtpdEFyZ3NaZXJvKCkgewotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxDYWxsYmFjay5hcHBseSh0aGlzLCBhcmd1bWVu
dHMpOwotICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBUcmFjZUtpdC5yZXBvcnQoZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aHJv
dyBlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICBhcmdzWzBdID0zRCBUcmFjZUtpdC53cmFwKG9yaWdpbmFsQ2FsbGJhY2spOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgLy8gSUUgPCA5IGRvZXNuJ3Qgc3VwcG9ydCAuY2FsbC8u
YXBwbHkgb24gc2V0SW50ZXJ2YWwvc2V0VGltZW89CnV0LCBidXQgaXQKICAgICAgICAgICAgIC8v
IGFsc28gb25seSBzdXBwb3J0cyAyIGFyZ3VtZW50IGFuZCBkb2Vzbid0IGNhcmUgd2hhdCAidGhp
cyIgPQppcywgc28gd2UKQEAgLTEwNzUsMTIwICsxMDkwLDcgQEAKPTIwCiAgICAgX2hlbHBlcign
c2V0VGltZW91dCcpOwogICAgIF9oZWxwZXIoJ3NldEludGVydmFsJyk7Ci19KHdpbmRvdykpOwot
Ci0vKioKLSAqIEV4dGVuZGVkIHN1cHBvcnQgZm9yIGJhY2t0cmFjZXMgYW5kIGdsb2JhbCBlcnJv
ciBoYW5kbGluZyBmb3IgbW9zdAotICogYXN5bmNocm9ub3VzIGpRdWVyeSBmdW5jdGlvbnMuCi0g
Ki8KLShmdW5jdGlvbiB0cmFjZUtpdEFzeW5jRm9yalF1ZXJ5KCQpIHsKLQotICAgIC8vIHF1aXQg
aWYgalF1ZXJ5IGlzbid0IG9uIHRoZSBwYWdlCi0gICAgaWYgKCEkKSB7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICB2YXIgX29sZEV2ZW50QWRkID0zRCAkLmV2ZW50LmFkZDsKLSAgICAk
LmV2ZW50LmFkZCA9M0QgZnVuY3Rpb24gdHJhY2VLaXRFdmVudEFkZChlbGVtLCB0eXBlcywgaGFu
ZGxlciwgZGF0YSwgPQpzZWxlY3RvcikgewotICAgICAgICB2YXIgX2hhbmRsZXI7Ci0KLSAgICAg
ICAgaWYgKGhhbmRsZXIuaGFuZGxlcikgewotICAgICAgICAgICAgX2hhbmRsZXIgPTNEIGhhbmRs
ZXIuaGFuZGxlcjsKLSAgICAgICAgICAgIGhhbmRsZXIuaGFuZGxlciA9M0QgZnVuY3Rpb24gdHJh
Y2VLaXRIYW5kbGVyKCkgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybiBfaGFuZGxlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotICAgICAgICAgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgVHJhY2VLaXQucmVwb3J0KGUp
OwotICAgICAgICAgICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH07Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBfaGFuZGxlciA9M0QgaGFu
ZGxlcjsKLSAgICAgICAgICAgIGhhbmRsZXIgPTNEIGZ1bmN0aW9uIGFwcGx5X2hhbmRsZXIoKSB7
Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9oYW5k
bGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkg
ewotICAgICAgICAgICAgICAgICAgICBUcmFjZUtpdC5yZXBvcnQoZSk7Ci0gICAgICAgICAgICAg
ICAgICAgIHRocm93IGU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAg
ICAgfQotCi0gICAgICAgIC8vIElmIHRoZSBoYW5kbGVyIHdlIGFyZSBhdHRhY2hpbmcgZG9lc249
RTI9ODA9OTl0IGhhdmUgdGhlIHNhbWUgZz0KdWlkIGFzCi0gICAgICAgIC8vIHRoZSBvcmlnaW5h
bCwgaXQgd2lsbCBuZXZlciBiZSByZW1vdmVkIHdoZW4gc29tZW9uZSB0cmllcyB0bwotICAgICAg
ICAvLyB1bmJpbmQgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIGxhdGVyLiBUZWNobmljYWxseSBhcyBh
IHJlc3VsdCBvZgotICAgICAgICAvLyB0aGlzIG91ciBndWlkcyBhcmUgbm8gbG9uZ2VyIGdsb2Jh
bGx5IHVuaXF1ZSwgYnV0IHdoYXRldmVyLCB0aGF0Ci0gICAgICAgIC8vIG5ldmVyIGh1cnQgYW55
Ym9keSBSSUdIVD8hCi0gICAgICAgIGlmIChfaGFuZGxlci5ndWlkKSB7Ci0gICAgICAgICAgICBo
YW5kbGVyLmd1aWQgPTNEIF9oYW5kbGVyLmd1aWQ7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBoYW5kbGVyLmd1aWQgPTNEIF9oYW5kbGVyLmd1aWQgPTNEICQuZ3VpZCsrOwotICAgICAg
ICB9Ci0KLSAgICAgICAgcmV0dXJuIF9vbGRFdmVudEFkZC5jYWxsKHRoaXMsIGVsZW0sIHR5cGVz
LCBoYW5kbGVyLCBkYXRhLCBzZWxlY3RvPQpyKTsKLSAgICB9OwotCi0gICAgdmFyIF9vbGRSZWFk
eSA9M0QgJC5mbi5yZWFkeTsKLSAgICAkLmZuLnJlYWR5ID0zRCBmdW5jdGlvbiB0cmFjZUtpdGpR
dWVyeVJlYWR5V3JhcHBlcihmbikgewotICAgICAgICB2YXIgX2ZuID0zRCBmdW5jdGlvbiAoKSB7
Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlz
LCBhcmd1bWVudHMpOwotICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAg
IFRyYWNlS2l0LnJlcG9ydChlKTsKLSAgICAgICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICAg
ICAgfQotICAgICAgICB9OwotCi0gICAgICAgIHJldHVybiBfb2xkUmVhZHkuY2FsbCh0aGlzLCBf
Zm4pOwotICAgIH07Ci0KLSAgICB2YXIgX29sZEFqYXggPTNEICQuYWpheDsKLSAgICAkLmFqYXgg
PTNEIGZ1bmN0aW9uIHRyYWNlS2l0QWpheFdyYXBwZXIocykgewotICAgICAgICBpZiAoJC5pc0Z1
bmN0aW9uKHMuY29tcGxldGUpKSB7Ci0gICAgICAgICAgICB2YXIgX29sZENvbXBsZXRlID0zRCBz
LmNvbXBsZXRlOwotICAgICAgICAgICAgcy5jb21wbGV0ZSA9M0QgZnVuY3Rpb24gdHJhY2VLaXRq
UXVlcnlDb21wbGV0ZSgpIHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gX29sZENvbXBsZXRlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgICAg
ICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgICAgICBUcmFjZUtpdC5yZXBv
cnQoZSk7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IGU7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgkLmlzRnVuY3Rpb24ocy5l
cnJvcikpIHsKLSAgICAgICAgICAgIHZhciBfb2xkRXJyb3IgPTNEIHMuZXJyb3I7Ci0gICAgICAg
ICAgICBzLmVycm9yID0zRCBmdW5jdGlvbiB0cmFjZUtpdGpRdWVyeUVycm9yKCkgewotICAgICAg
ICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBfb2xkRXJyb3IuYXBw
bHkodGhpcywgYXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIFRyYWNlS2l0LnJlcG9ydChlKTsKLSAgICAgICAgICAgICAgICAgICAg
dGhyb3cgZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKCQuaXNGdW5jdGlvbihzLnN1Y2Nlc3MpKSB7Ci0gICAgICAgICAgICB2YXIg
X29sZFN1Y2Nlc3MgPTNEIHMuc3VjY2VzczsKLSAgICAgICAgICAgIHMuc3VjY2VzcyA9M0QgZnVu
Y3Rpb24gdHJhY2VLaXRqUXVlcnlTdWNjZXNzKCkgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBfb2xkU3VjY2Vzcy5hcHBseSh0aGlzLCBhcmd1bWVu
dHMpOwotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgICAgICAgICAg
VHJhY2VLaXQucmVwb3J0KGUpOwotICAgICAgICAgICAgICAgICAgICB0aHJvdyBlOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLQotICAgICAgICB0cnkgewot
ICAgICAgICAgICAgcmV0dXJuIF9vbGRBamF4LmNhbGwodGhpcywgcyk7Ci0gICAgICAgIH0gY2F0
Y2ggKGUpIHsKLSAgICAgICAgICAgIFRyYWNlS2l0LnJlcG9ydChlKTsKLSAgICAgICAgICAgIHRo
cm93IGU7Ci0gICAgICAgIH0KLSAgICB9OwotCi19KHdpbmRvdy5qUXVlcnkpKTsKK30oKSk7Cj0y
MAogLy9EZWZhdWx0IG9wdGlvbnM6CiBpZiAoIVRyYWNlS2l0LnJlbW90ZUZldGNoaW5nKSB7Cgpk
aWZmIC1yIDUwZGJlZDlmOGY1ODM0ODBjMzk0ZDljOGExY2E4MTU4NTQ4MmMwNjMgLXIgZDcwMjFl
ZTk2YTgwMDg1ZDc2MDViMTY9CjhjNzNkZmQ5MjlhZDg1MWQzIHN0YXRpYy9zY3JpcHRzL2xpYnMv
dHJhY2VraXQuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvbGlicy90cmFjZWtpdC5qcworKysgYi9z
dGF0aWMvc2NyaXB0cy9saWJzL3RyYWNla2l0LmpzCkBAIC0zLDEyICszLDMyIEBACiAgTUlUIGxp
Y2Vuc2UKICovCj0yMAotOyhmdW5jdGlvbih3aW5kb3csIHVuZGVmaW5lZCkgeworKGZ1bmN0aW9u
KHdpbmRvdywgdW5kZWZpbmVkKSB7Cj0yMAo9MjAKIHZhciBUcmFjZUtpdCA9M0Qge307CiB2YXIg
X29sZFRyYWNlS2l0ID0zRCB3aW5kb3cuVHJhY2VLaXQ7Cj0yMAorLy8gZ2xvYmFsIHJlZmVyZW5j
ZSB0byBzbGljZQordmFyIF9zbGljZSA9M0QgW10uc2xpY2U7Cit2YXIgVU5LTk9XTl9GVU5DVElP
TiA9M0QgJz8nOworCisKKy8qKgorICogX2hhcywgYSBiZXR0ZXIgZm9ybSBvZiBoYXNPd25Qcm9w
ZXJ0eQorICogRXhhbXBsZTogX2hhcyhNYWluSG9zdE9iamVjdCwgcHJvcGVydHkpID0zRD0zRD0z
RCB0cnVlL2ZhbHNlCisgKgorICogQHBhcmFtIHtPYmplY3R9IGhvc3Qgb2JqZWN0IHRvIGNoZWNr
IHByb3BlcnR5CisgKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRvIGNoZWNrCisgKi8KK2Z1bmN0aW9u
IF9oYXMob2JqZWN0LCBrZXkpIHsKKyAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q
cm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KTsKK30KKworZnVuY3Rpb24gX2lzVW5kZWZpbmVkKHdo
YXQpIHsKKyAgICByZXR1cm4gdHlwZW9mIHdoYXQgPTNEPTNEPTNEICd1bmRlZmluZWQnOworfQor
CiAvKioKICAqIFRyYWNlS2l0Lm5vQ29uZmxpY3Q6IEV4cG9ydCBUcmFjZUtpdCBvdXQgdG8gYW5v
dGhlciB2YXJpYWJsZQogICogRXhhbXBsZTogdmFyIFRLID0zRCBUcmFjZUtpdC5ub0NvbmZsaWN0
KCkKQEAgLTE5LDE0ICszOSwyMiBAQAogfTsKPTIwCiAvKioKLSAqIFRyYWNlS2l0Ll9oYXMsIGEg
YmV0dGVyIGZvcm0gb2YgaGFzT3duUHJvcGVydHkKLSAqIEV4YW1wbGU6IFRyYWNlS2l0Ll9oYXMo
TWFpbkhvc3RPYmplY3QsIHByb3BlcnR5KSA9M0Q9M0Q9M0QgdHJ1ZS9mYWxzZQorICogVHJhY2VL
aXQud3JhcDogV3JhcCBhbnkgZnVuY3Rpb24gaW4gYSBUcmFjZUtpdCByZXBvcnRlcgorICogRXhh
bXBsZTogZnVuYyA9M0QgVHJhY2VLaXQud3JhcChmdW5jKTsKICAqCi0gKiBAcGFyYW0ge09iamVj
dH0gaG9zdCBvYmplY3QgdG8gY2hlY2sgcHJvcGVydHkKLSAqIEBwYXJhbSB7c3RyaW5nfSBrZXkg
dG8gY2hlY2sKKyAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgRnVuY3Rpb24gdG8gYmUgd3JhcHBl
ZAorICogQHJldHVybiB7RnVuY3Rpb259IFRoZSB3cmFwcGVkIGZ1bmMKICAqLwotVHJhY2VLaXQu
X2hhcyA9M0QgZnVuY3Rpb24gX2hhcyhvYmplY3QsIGtleSkgewotICAgIHJldHVybiBPYmplY3Qu
cHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpOworVHJhY2VLaXQud3Jh
cCA9M0QgZnVuY3Rpb24gdHJhY2VLaXRXcmFwcGVyKGZ1bmMpIHsKKyAgICBmdW5jdGlvbiB3cmFw
cGVkKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIGZ1bmMuYXBwbHkodGhp
cywgYXJndW1lbnRzKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgVHJhY2VL
aXQucmVwb3J0KGUpOworICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICByZXR1cm4gd3JhcHBlZDsKIH07Cj0yMAogLyoqCkBAIC03OCw2ICsxMDYsNyBAQAogICAgICAq
IEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXIKICAgICAgKi8KICAgICBmdW5jdGlvbiBzdWJzY3Jp
YmUoaGFuZGxlcikgeworICAgICAgICBpbnN0YWxsR2xvYmFsSGFuZGxlcigpOwogICAgICAgICBo
YW5kbGVycy5wdXNoKGhhbmRsZXIpOwogICAgIH0KPTIwCkBAIC0xMDMsOSArMTMyLDkgQEAKICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgZm9yICh2YXIgaSBpbiBoYW5kbGVy
cykgewotICAgICAgICAgICAgaWYgKFRyYWNlS2l0Ll9oYXMoaGFuZGxlcnMsIGkpKSB7CisgICAg
ICAgICAgICBpZiAoX2hhcyhoYW5kbGVycywgaSkpIHsKICAgICAgICAgICAgICAgICB0cnkgewot
ICAgICAgICAgICAgICAgICAgICBoYW5kbGVyc1tpXS5hcHBseShudWxsLCBbc3RhY2tdLmNvbmNh
dChBcnJheS5wcm90b3R5cGU9Ci5zbGljZS5jYWxsKGFyZ3VtZW50cywgMikpKTsKKyAgICAgICAg
ICAgICAgICAgICAgaGFuZGxlcnNbaV0uYXBwbHkobnVsbCwgW3N0YWNrXS5jb25jYXQoX3NsaWNl
LmNhbGwoYXJnPQp1bWVudHMsIDIpKSk7CiAgICAgICAgICAgICAgICAgfSBjYXRjaCAoaW5uZXIp
IHsKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uID0zRCBpbm5lcjsKICAgICAgICAgICAg
ICAgICB9CkBAIC0xMTcsNyArMTQ2LDcgQEAKICAgICAgICAgfQogICAgIH0KPTIwCi0gICAgdmFy
IF9vbGRPbmVycm9ySGFuZGxlciA9M0Qgd2luZG93Lm9uZXJyb3I7CisgICAgdmFyIF9vbGRPbmVy
cm9ySGFuZGxlciwgX29uRXJyb3JIYW5kbGVySW5zdGFsbGVkOwo9MjAKICAgICAvKioKICAgICAg
KiBFbnN1cmVzIGFsbCBnbG9iYWwgdW5oYW5kbGVkIGV4Y2VwdGlvbnMgYXJlIHJlY29yZGVkLgpA
QCAtMTI3LDcgKzE1Niw3IEBACiAgICAgICogQHBhcmFtIHsobnVtYmVyfHN0cmluZyl9IGxpbmVO
byBUaGUgbGluZSBudW1iZXIgYXQgd2hpY2ggdGhlIGVycm9yCiAgICAgICogb2NjdXJyZWQuCiAg
ICAgICovCi0gICAgd2luZG93Lm9uZXJyb3IgPTNEIGZ1bmN0aW9uIHRyYWNlS2l0V2luZG93T25F
cnJvcihtZXNzYWdlLCB1cmwsIGxpbmVObz0KKSB7CisgICAgZnVuY3Rpb24gdHJhY2VLaXRXaW5k
b3dPbkVycm9yKG1lc3NhZ2UsIHVybCwgbGluZU5vKSB7CiAgICAgICAgIHZhciBzdGFjayA9M0Qg
bnVsbDsKPTIwCiAgICAgICAgIGlmIChsYXN0RXhjZXB0aW9uU3RhY2spIHsKQEAgLTE1OCwxNCAr
MTg3LDI0IEBACiAgICAgICAgIH0KPTIwCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Owor
ICAgIH0KKworICAgIGZ1bmN0aW9uIGluc3RhbGxHbG9iYWxIYW5kbGVyICgpCisgICAgeworICAg
ICAgICBpZiAoX29uRXJyb3JIYW5kbGVySW5zdGFsbGVkID0zRD0zRD0zRCB0cnVlKSB7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgX29sZE9uZXJyb3JIYW5kbGVyID0z
RCB3aW5kb3cub25lcnJvcjsKKyAgICAgICAgd2luZG93Lm9uZXJyb3IgPTNEIHRyYWNlS2l0V2lu
ZG93T25FcnJvcjsKKyAgICAgICAgX29uRXJyb3JIYW5kbGVySW5zdGFsbGVkID0zRCB0cnVlOwor
ICAgIH0KPTIwCiAgICAgLyoqCiAgICAgICogUmVwb3J0cyBhbiB1bmhhbmRsZWQgRXJyb3IgdG8g
VHJhY2VLaXQuCiAgICAgICogQHBhcmFtIHtFcnJvcn0gZXgKICAgICAgKi8KICAgICBmdW5jdGlv
biByZXBvcnQoZXgpIHsKLSAgICAgICAgdmFyIGFyZ3MgPTNEIEFycmF5LnByb3RvdHlwZS5zbGlj
ZS5jYWxsKGFyZ3VtZW50cywgMSk7CisgICAgICAgIHZhciBhcmdzID0zRCBfc2xpY2UuY2FsbChh
cmd1bWVudHMsIDEpOwogICAgICAgICBpZiAobGFzdEV4Y2VwdGlvblN0YWNrKSB7CiAgICAgICAg
ICAgICBpZiAobGFzdEV4Y2VwdGlvbiA9M0Q9M0Q9M0QgZXgpIHsKICAgICAgICAgICAgICAgICBy
ZXR1cm47IC8vIGFscmVhZHkgY2F1Z2h0IGJ5IGFuIGlubmVyIGNhdGNoIGJsb2NrLCBpZ25vcmUK
QEAgLTI4MywyOSArMzIyLDE2IEBACiAgICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgIH0K
ICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHZhciBYTUxIdHRwUmVxdWVzdFdyYXBwZXI7Cisg
ICAgICAgICAgICB2YXIgZ2V0WEhSID0zRCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB0
cnkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHdpbmRvdy5YTUxIdHRwUmVxdWVz
dCgpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gZXhwbGljaXRseSBidWJibGUgdXAgdGhlIGV4Y2VwdGlvbiBpZiBub3QgZm91bmQKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyB3aW5kb3cuQWN0aXZlWE9iamVjdCgnTWljcm9zb2Z0
LlhNTEhUVFAnKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Owo9MjAKLSAgICAg
ICAgICAgIGlmICh0eXBlb2YgKFhNTEh0dHBSZXF1ZXN0KSA9M0Q9M0Q9M0QgJ3VuZGVmaW5lZCcp
IHsgLy8gSUUgNS54PQotNi54OgotICAgICAgICAgICAgICAgIFhNTEh0dHBSZXF1ZXN0V3JhcHBl
ciA9M0QgZnVuY3Rpb24gSUVYTUxIdHRwUmVxdWVzdFN1YigpIHsKLSAgICAgICAgICAgICAgICAg
ICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQWN0aXZlWE9iamVj
dCgnTXN4bWwyLlhNTEhUVFAuNi4wJyk7Ci0gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUp
IHt9Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoJ01zeG1sMi5YTUxIVFRQLjMuMCcpOwotICAgICAgICAg
ICAgICAgICAgICB9IGNhdGNoIChlKSB7fQotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KCdNc3htbDIuWE1M
SFRUUCcpOwotICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQotICAgICAgICAgICAg
ICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBBY3RpdmVY
T2JqZWN0KCdNaWNyb3NvZnQuWE1MSFRUUCcpOwotICAgICAgICAgICAgICAgICAgICB9IGNhdGNo
IChlKSB7fQotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIFhIUi4nKTsK
LSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg
ICBYTUxIdHRwUmVxdWVzdFdyYXBwZXIgPTNEIFhNTEh0dHBSZXF1ZXN0OwotICAgICAgICAgICAg
fQotICAgPTIwCi0gICAgICAgICAgICB2YXIgcmVxdWVzdCA9M0QgbmV3IFhNTEh0dHBSZXF1ZXN0
V3JhcHBlcigpOworICAgICAgICAgICAgdmFyIHJlcXVlc3QgPTNEIGdldFhIUigpOwogICAgICAg
ICAgICAgcmVxdWVzdC5vcGVuKCdHRVQnLCB1cmwsIGZhbHNlKTsKICAgICAgICAgICAgIHJlcXVl
c3Quc2VuZCgnJyk7CiAgICAgICAgICAgICByZXR1cm4gcmVxdWVzdC5yZXNwb25zZVRleHQ7CkBA
IC0zMjAsMTYgKzM0NiwxNCBAQAogICAgICAqIEByZXR1cm4ge0FycmF5LjxzdHJpbmc+fSBTb3Vy
Y2UgY29udGVudHMuCiAgICAgICovCiAgICAgZnVuY3Rpb24gZ2V0U291cmNlKHVybCkgewotICAg
ICAgICBpZiAoIVRyYWNlS2l0Ll9oYXMoc291cmNlQ2FjaGUsIHVybCkpIHsKKyAgICAgICAgaWYg
KCFfaGFzKHNvdXJjZUNhY2hlLCB1cmwpKSB7CiAgICAgICAgICAgICAvLyBVUkwgbmVlZHMgdG8g
YmUgYWJsZSB0byBmZXRjaGVkIHdpdGhpbiB0aGUgYWNjZXB0YWJsZSBkb21haT0Kbi4gIE90aGVy
d2lzZSwKICAgICAgICAgICAgIC8vIGNyb3NzLWRvbWFpbiBlcnJvcnMgd2lsbCBiZSB0cmlnZ2Vy
ZWQuCi0gICAgICAgICAgICB2YXIgc291cmNlOworICAgICAgICAgICAgdmFyIHNvdXJjZSA9M0Qg
Jyc7CiAgICAgICAgICAgICBpZiAodXJsLmluZGV4T2YoZG9jdW1lbnQuZG9tYWluKSAhPTNEPTNE
IC0xKSB7CiAgICAgICAgICAgICAgICAgc291cmNlID0zRCBsb2FkU291cmNlKHVybCk7Ci0gICAg
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNvdXJjZSA9M0QgW107CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBzb3VyY2VDYWNoZVt1cmxdID0zRCBzb3VyY2UubGVuZ3RoID8g
c291cmNlLnNwbGl0KCdcbicpIDogW107CisgICAgICAgICAgICBzb3VyY2VDYWNoZVt1cmxdID0z
RCBzb3VyY2UgPyBzb3VyY2Uuc3BsaXQoJ1xuJykgOiBbXTsKICAgICAgICAgfQo9MjAKICAgICAg
ICAgcmV0dXJuIHNvdXJjZUNhY2hlW3VybF07CkBAIC0zNTIsNyArMzc2LDcgQEAKICAgICAgICAg
ICAgIG07Cj0yMAogICAgICAgICBpZiAoIXNvdXJjZS5sZW5ndGgpIHsKLSAgICAgICAgICAgIHJl
dHVybiAnPyc7CisgICAgICAgICAgICByZXR1cm4gVU5LTk9XTl9GVU5DVElPTjsKICAgICAgICAg
fQo9MjAKICAgICAgICAgLy8gV2FsayBiYWNrd2FyZHMgZnJvbSB0aGUgZmlyc3QgbGluZSBpbiB0
aGUgZnVuY3Rpb24gdW50aWwgd2UgZmluPQpkIHRoZSBsaW5lIHdoaWNoCkBAIC0zNjAsNyArMzg0
LDcgQEAKICAgICAgICAgZm9yICh2YXIgaSA9M0QgMDsgaSA8IG1heExpbmVzOyArK2kpIHsKICAg
ICAgICAgICAgIGxpbmUgPTNEIHNvdXJjZVtsaW5lTm8gLSBpXSArIGxpbmU7Cj0yMAotICAgICAg
ICAgICAgaWYgKGxpbmUgIT0zRD0zRCB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgIGlmICghX2lz
VW5kZWZpbmVkKGxpbmUpKSB7CiAgICAgICAgICAgICAgICAgaWYgKChtID0zRCByZUd1ZXNzRnVu
Y3Rpb24uZXhlYyhsaW5lKSkpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1bMV07CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmICgobSA9M0QgcmVGdW5jdGlvbkFyZ05hbWVzLmV4ZWMo
bGluZSkpKSB7CkBAIC0zNjksNyArMzkzLDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQo9
MjAKLSAgICAgICAgcmV0dXJuICc/JzsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRlVOQ1RJT047
CiAgICAgfQo9MjAKICAgICAvKioKQEAgLTM5OSw3ICs0MjMsNyBAQAogICAgICAgICBsaW5lIC09
M0QgMTsgLy8gY29udmVydCB0byAwLWJhc2VkIGluZGV4Cj0yMAogICAgICAgICBmb3IgKHZhciBp
ID0zRCBzdGFydDsgaSA8IGVuZDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAodHlwZW9mIChzb3Vy
Y2VbaV0pICE9M0Q9M0QgJ3VuZGVmaW5lZCcpIHsKKyAgICAgICAgICAgIGlmICghX2lzVW5kZWZp
bmVkKHNvdXJjZVtpXSkpIHsKICAgICAgICAgICAgICAgICBjb250ZXh0LnB1c2goc291cmNlW2ld
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNTk0LDcgKzYxOCw3IEBACiAgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfQo9MjAKLSAgICAgICAgdmFyIGNocm9tZSA9M0Qg
L15ccyphdCAoPzooKD86XFtvYmplY3Qgb2JqZWN0XF0pP1xTKykgKT9cKD8oKD86ZmlsPQplfGh0
dHB8aHR0cHMpOi4qPyk6KFxkKykoPzo6KFxkKykpP1wpP1xzKiQvaSwKKyAgICAgICAgdmFyIGNo
cm9tZSA9M0QgL15ccyphdCAoPzooKD86XFtvYmplY3Qgb2JqZWN0XF0pP1xTKyg/OiBcW2FzIFxT
K1xdPQopPykgKT9cKD8oKD86ZmlsZXxodHRwfGh0dHBzKTouKj8pOihcZCspKD86OihcZCspKT9c
KT9ccyokL2ksCiAgICAgICAgICAgICBnZWNrbyA9M0QgL15ccyooXFMqKSg/OlwoKC4qPylcKSk/
QCgoPzpmaWxlfGh0dHB8aHR0cHMpLio/KTooXD0KZCspKD86OihcZCspKT9ccyokL2ksCiAgICAg
ICAgICAgICBsaW5lcyA9M0QgZXguc3RhY2suc3BsaXQoJ1xuJyksCiAgICAgICAgICAgICBzdGFj
ayA9M0QgW10sCkBAIC02MDYsNyArNjMwLDcgQEAKICAgICAgICAgICAgIGlmICgocGFydHMgPTNE
IGdlY2tvLmV4ZWMobGluZXNbaV0pKSkgewogICAgICAgICAgICAgICAgIGVsZW1lbnQgPTNEIHsK
ICAgICAgICAgICAgICAgICAgICAgJ3VybCc6IHBhcnRzWzNdLAotICAgICAgICAgICAgICAgICAg
ICAnZnVuYyc6IHBhcnRzWzFdIHx8ICc/JywKKyAgICAgICAgICAgICAgICAgICAgJ2Z1bmMnOiBw
YXJ0c1sxXSB8fCBVTktOT1dOX0ZVTkNUSU9OLAogICAgICAgICAgICAgICAgICAgICAnYXJncyc6
IHBhcnRzWzJdID8gcGFydHNbMl0uc3BsaXQoJywnKSA6ICcnLAogICAgICAgICAgICAgICAgICAg
ICAnbGluZSc6ICtwYXJ0c1s0XSwKICAgICAgICAgICAgICAgICAgICAgJ2NvbHVtbic6IHBhcnRz
WzVdID8gK3BhcnRzWzVdIDogbnVsbApAQCAtNjE0LDcgKzYzOCw3IEBACiAgICAgICAgICAgICB9
IGVsc2UgaWYgKChwYXJ0cyA9M0QgY2hyb21lLmV4ZWMobGluZXNbaV0pKSkgewogICAgICAgICAg
ICAgICAgIGVsZW1lbnQgPTNEIHsKICAgICAgICAgICAgICAgICAgICAgJ3VybCc6IHBhcnRzWzJd
LAotICAgICAgICAgICAgICAgICAgICAnZnVuYyc6IHBhcnRzWzFdIHx8ICc/JywKKyAgICAgICAg
ICAgICAgICAgICAgJ2Z1bmMnOiBwYXJ0c1sxXSB8fCBVTktOT1dOX0ZVTkNUSU9OLAogICAgICAg
ICAgICAgICAgICAgICAnbGluZSc6ICtwYXJ0c1szXSwKICAgICAgICAgICAgICAgICAgICAgJ2Nv
bHVtbic6IHBhcnRzWzRdID8gK3BhcnRzWzRdIDogbnVsbAogICAgICAgICAgICAgICAgIH07CkBA
IC03NTAsNyArNzc0LDcgQEAKICAgICAgICAgICAgIHNvdXJjZTsKPTIwCiAgICAgICAgIGZvciAo
aSBpbiBzY3JpcHRzKSB7Ci0gICAgICAgICAgICBpZiAoVHJhY2VLaXQuX2hhcyhzY3JpcHRzLCBp
KSAmJiAhc2NyaXB0c1tpXS5zcmMpIHsKKyAgICAgICAgICAgIGlmIChfaGFzKHNjcmlwdHMsIGkp
ICYmICFzY3JpcHRzW2ldLnNyYykgewogICAgICAgICAgICAgICAgIGlubGluZVNjcmlwdEJsb2Nr
cy5wdXNoKHNjcmlwdHNbaV0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05MDQsNyAr
OTI4LDcgQEAKPTIwCiAgICAgICAgICAgICBpdGVtID0zRCB7CiAgICAgICAgICAgICAgICAgJ3Vy
bCc6IG51bGwsCi0gICAgICAgICAgICAgICAgJ2Z1bmMnOiAnPycsCisgICAgICAgICAgICAgICAg
J2Z1bmMnOiBVTktOT1dOX0ZVTkNUSU9OLAogICAgICAgICAgICAgICAgICdsaW5lJzogbnVsbCwK
ICAgICAgICAgICAgICAgICAnY29sdW1uJzogbnVsbAogICAgICAgICAgICAgfTsKQEAgLTkxOSw3
ICs5NDMsNyBAQAogICAgICAgICAgICAgICAgIGl0ZW0udXJsID0zRCBzb3VyY2UudXJsOwogICAg
ICAgICAgICAgICAgIGl0ZW0ubGluZSA9M0Qgc291cmNlLmxpbmU7Cj0yMAotICAgICAgICAgICAg
ICAgIGlmIChpdGVtLmZ1bmMgPTNEPTNEPTNEICc/JykgeworICAgICAgICAgICAgICAgIGlmIChp
dGVtLmZ1bmMgPTNEPTNEPTNEIFVOS05PV05fRlVOQ1RJT04pIHsKICAgICAgICAgICAgICAgICAg
ICAgaXRlbS5mdW5jID0zRCBndWVzc0Z1bmN0aW9uTmFtZShpdGVtLnVybCwgaXRlbS5saW5lKTsK
ICAgICAgICAgICAgICAgICB9Cj0yMApAQCAtMTAyOSw4ICsxMDUzLDYgQEAKICAgICAgICAgfSBj
YXRjaCAoZXgpIHsKICAgICAgICAgICAgIHJldHVybiBjb21wdXRlU3RhY2tUcmFjZShleCwgZGVw
dGggKyAxKTsKICAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBudWxsOwogICAgIH0KPTIwCiAg
ICAgY29tcHV0ZVN0YWNrVHJhY2UuYXVnbWVudFN0YWNrVHJhY2VXaXRoSW5pdGlhbEVsZW1lbnQg
PTNEIGF1Z21lbnRTdGFjaz0KVHJhY2VXaXRoSW5pdGlhbEVsZW1lbnQ7CkBAIC0xMDQ1LDIyICsx
MDY3LDE1IEBACiAgKiBFeHRlbmRzIHN1cHBvcnQgZm9yIGdsb2JhbCBlcnJvciBoYW5kbGluZyBm
b3IgYXN5bmNocm9ub3VzIGJyb3dzZXIKICAqIGZ1bmN0aW9ucy4gQWRvcHRlZCBmcm9tIENsb3N1
cmUgTGlicmFyeSdzIGVycm9yaGFuZGxlci5qcwogICovCi0oZnVuY3Rpb24gZXh0ZW5kVG9Bc3lu
Y2hyb25vdXNDYWxsYmFja3ModykgeworKGZ1bmN0aW9uIGV4dGVuZFRvQXN5bmNocm9ub3VzQ2Fs
bGJhY2tzKCkgewogICAgIHZhciBfaGVscGVyID0zRCBmdW5jdGlvbiBfaGVscGVyKGZuTmFtZSkg
ewotICAgICAgICB2YXIgb3JpZ2luYWxGbiA9M0Qgd1tmbk5hbWVdOwotICAgICAgICB3W2ZuTmFt
ZV0gPTNEIGZ1bmN0aW9uIHRyYWNlS2l0QXN5bmNFeHRlbnNpb24oKSB7CisgICAgICAgIHZhciBv
cmlnaW5hbEZuID0zRCB3aW5kb3dbZm5OYW1lXTsKKyAgICAgICAgd2luZG93W2ZuTmFtZV0gPTNE
IGZ1bmN0aW9uIHRyYWNlS2l0QXN5bmNFeHRlbnNpb24oKSB7CiAgICAgICAgICAgICAvLyBNYWtl
IGEgY29weSBvZiB0aGUgYXJndW1lbnRzCi0gICAgICAgICAgICB2YXIgYXJncyA9M0QgQXJyYXku
cHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAwKTsKKyAgICAgICAgICAgIHZhciBhcmdz
ID0zRCBfc2xpY2UuY2FsbChhcmd1bWVudHMpOwogICAgICAgICAgICAgdmFyIG9yaWdpbmFsQ2Fs
bGJhY2sgPTNEIGFyZ3NbMF07CiAgICAgICAgICAgICBpZiAodHlwZW9mIChvcmlnaW5hbENhbGxi
YWNrKSA9M0Q9M0Q9M0QgJ2Z1bmN0aW9uJykgewotICAgICAgICAgICAgICAgIGFyZ3NbMF0gPTNE
IGZ1bmN0aW9uIHRyYWNlS2l0QXJnc1plcm8oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbENhbGxiYWNrLmFwcGx5KHRoaXMsIGFy
Z3VtZW50cyk7Ci0gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFRyYWNlS2l0LnJlcG9ydChlKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRocm93IGU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9OworICAg
ICAgICAgICAgICAgIGFyZ3NbMF0gPTNEIFRyYWNlS2l0LndyYXAob3JpZ2luYWxDYWxsYmFjayk7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBJRSA8IDkgZG9lc24ndCBzdXBwb3J0IC5j
YWxsLy5hcHBseSBvbiBzZXRJbnRlcnZhbC9zZXRUaW1lbz0KdXQsIGJ1dCBpdAogICAgICAgICAg
ICAgLy8gYWxzbyBvbmx5IHN1cHBvcnRzIDIgYXJndW1lbnQgYW5kIGRvZXNuJ3QgY2FyZSB3aGF0
ICJ0aGlzIiA9CmlzLCBzbyB3ZQpAQCAtMTA3NSwxMjAgKzEwOTAsNyBAQAo9MjAKICAgICBfaGVs
cGVyKCdzZXRUaW1lb3V0Jyk7CiAgICAgX2hlbHBlcignc2V0SW50ZXJ2YWwnKTsKLX0od2luZG93
KSk7Ci0KLS8qKgotICogRXh0ZW5kZWQgc3VwcG9ydCBmb3IgYmFja3RyYWNlcyBhbmQgZ2xvYmFs
IGVycm9yIGhhbmRsaW5nIGZvciBtb3N0Ci0gKiBhc3luY2hyb25vdXMgalF1ZXJ5IGZ1bmN0aW9u
cy4KLSAqLwotKGZ1bmN0aW9uIHRyYWNlS2l0QXN5bmNGb3JqUXVlcnkoJCkgewotCi0gICAgLy8g
cXVpdCBpZiBqUXVlcnkgaXNuJ3Qgb24gdGhlIHBhZ2UKLSAgICBpZiAoISQpIHsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIHZhciBfb2xkRXZlbnRBZGQgPTNEICQuZXZlbnQuYWRkOwot
ICAgICQuZXZlbnQuYWRkID0zRCBmdW5jdGlvbiB0cmFjZUtpdEV2ZW50QWRkKGVsZW0sIHR5cGVz
LCBoYW5kbGVyLCBkYXRhLCA9CnNlbGVjdG9yKSB7Ci0gICAgICAgIHZhciBfaGFuZGxlcjsKLQot
ICAgICAgICBpZiAoaGFuZGxlci5oYW5kbGVyKSB7Ci0gICAgICAgICAgICBfaGFuZGxlciA9M0Qg
aGFuZGxlci5oYW5kbGVyOwotICAgICAgICAgICAgaGFuZGxlci5oYW5kbGVyID0zRCBmdW5jdGlv
biB0cmFjZUtpdEhhbmRsZXIoKSB7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIF9oYW5kbGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgICAg
ICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgICAgICBUcmFjZUtpdC5yZXBv
cnQoZSk7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IGU7Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIF9oYW5kbGVyID0z
RCBoYW5kbGVyOwotICAgICAgICAgICAgaGFuZGxlciA9M0QgZnVuY3Rpb24gYXBwbHlfaGFuZGxl
cigpIHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
X2hhbmRsZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICB9IGNhdGNo
IChlKSB7Ci0gICAgICAgICAgICAgICAgICAgIFRyYWNlS2l0LnJlcG9ydChlKTsKLSAgICAgICAg
ICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Owot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgdGhlIGhhbmRsZXIgd2UgYXJlIGF0dGFjaGluZyBk
b2Vzbj1FMj04MD05OXQgaGF2ZSB0aGUgc2FtZSBnPQp1aWQgYXMKLSAgICAgICAgLy8gdGhlIG9y
aWdpbmFsLCBpdCB3aWxsIG5ldmVyIGJlIHJlbW92ZWQgd2hlbiBzb21lb25lIHRyaWVzIHRvCi0g
ICAgICAgIC8vIHVuYmluZCB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gbGF0ZXIuIFRlY2huaWNhbGx5
IGFzIGEgcmVzdWx0IG9mCi0gICAgICAgIC8vIHRoaXMgb3VyIGd1aWRzIGFyZSBubyBsb25nZXIg
Z2xvYmFsbHkgdW5pcXVlLCBidXQgd2hhdGV2ZXIsIHRoYXQKLSAgICAgICAgLy8gbmV2ZXIgaHVy
dCBhbnlib2R5IFJJR0hUPyEKLSAgICAgICAgaWYgKF9oYW5kbGVyLmd1aWQpIHsKLSAgICAgICAg
ICAgIGhhbmRsZXIuZ3VpZCA9M0QgX2hhbmRsZXIuZ3VpZDsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGhhbmRsZXIuZ3VpZCA9M0QgX2hhbmRsZXIuZ3VpZCA9M0QgJC5ndWlkKys7Ci0g
ICAgICAgIH0KLQotICAgICAgICByZXR1cm4gX29sZEV2ZW50QWRkLmNhbGwodGhpcywgZWxlbSwg
dHlwZXMsIGhhbmRsZXIsIGRhdGEsIHNlbGVjdG89CnIpOwotICAgIH07Ci0KLSAgICB2YXIgX29s
ZFJlYWR5ID0zRCAkLmZuLnJlYWR5OwotICAgICQuZm4ucmVhZHkgPTNEIGZ1bmN0aW9uIHRyYWNl
S2l0alF1ZXJ5UmVhZHlXcmFwcGVyKGZuKSB7Ci0gICAgICAgIHZhciBfZm4gPTNEIGZ1bmN0aW9u
ICgpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZuLmFwcGx5
KHRoaXMsIGFyZ3VtZW50cyk7Ci0gICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAg
ICAgICAgVHJhY2VLaXQucmVwb3J0KGUpOwotICAgICAgICAgICAgICAgIHRocm93IGU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH07Ci0KLSAgICAgICAgcmV0dXJuIF9vbGRSZWFkeS5jYWxsKHRo
aXMsIF9mbik7Ci0gICAgfTsKLQotICAgIHZhciBfb2xkQWpheCA9M0QgJC5hamF4OwotICAgICQu
YWpheCA9M0QgZnVuY3Rpb24gdHJhY2VLaXRBamF4V3JhcHBlcihzKSB7Ci0gICAgICAgIGlmICgk
LmlzRnVuY3Rpb24ocy5jb21wbGV0ZSkpIHsKLSAgICAgICAgICAgIHZhciBfb2xkQ29tcGxldGUg
PTNEIHMuY29tcGxldGU7Ci0gICAgICAgICAgICBzLmNvbXBsZXRlID0zRCBmdW5jdGlvbiB0cmFj
ZUtpdGpRdWVyeUNvbXBsZXRlKCkgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiBfb2xkQ29tcGxldGUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKLSAg
ICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgICAgIFRyYWNlS2l0
LnJlcG9ydChlKTsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCQuaXNGdW5jdGlv
bihzLmVycm9yKSkgewotICAgICAgICAgICAgdmFyIF9vbGRFcnJvciA9M0Qgcy5lcnJvcjsKLSAg
ICAgICAgICAgIHMuZXJyb3IgPTNEIGZ1bmN0aW9uIHRyYWNlS2l0alF1ZXJ5RXJyb3IoKSB7Ci0g
ICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9vbGRFcnJv
ci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICAgICAgICAgICAgICAgICAgVHJhY2VLaXQucmVwb3J0KGUpOwotICAgICAgICAgICAgICAg
ICAgICB0aHJvdyBlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH07Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoJC5pc0Z1bmN0aW9uKHMuc3VjY2VzcykpIHsKLSAgICAgICAgICAg
IHZhciBfb2xkU3VjY2VzcyA9M0Qgcy5zdWNjZXNzOwotICAgICAgICAgICAgcy5zdWNjZXNzID0z
RCBmdW5jdGlvbiB0cmFjZUtpdGpRdWVyeVN1Y2Nlc3MoKSB7Ci0gICAgICAgICAgICAgICAgdHJ5
IHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9vbGRTdWNjZXNzLmFwcGx5KHRoaXMsIGFy
Z3VtZW50cyk7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAg
ICAgICBUcmFjZUtpdC5yZXBvcnQoZSk7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IGU7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotCi0gICAgICAgIHRy
eSB7Ci0gICAgICAgICAgICByZXR1cm4gX29sZEFqYXguY2FsbCh0aGlzLCBzKTsKLSAgICAgICAg
fSBjYXRjaCAoZSkgewotICAgICAgICAgICAgVHJhY2VLaXQucmVwb3J0KGUpOwotICAgICAgICAg
ICAgdGhyb3cgZTsKLSAgICAgICAgfQotICAgIH07Ci0KLX0od2luZG93LmpRdWVyeSkpOworfSgp
KTsKPTIwCiAvL0RlZmF1bHQgb3B0aW9uczoKIGlmICghVHJhY2VLaXQucmVtb3RlRmV0Y2hpbmcp
IHsKCmRpZmYgLXIgNTBkYmVkOWY4ZjU4MzQ4MGMzOTRkOWM4YTFjYTgxNTg1NDgyYzA2MyAtciBk
NzAyMWVlOTZhODAwODVkNzYwNWIxNj0KOGM3M2RmZDkyOWFkODUxZDMgc3RhdGljL3NjcmlwdHMv
cGFja2VkL2xpYnMvdHJhY2VraXQuanMKLS0tIGEvc3RhdGljL3NjcmlwdHMvcGFja2VkL2xpYnMv
dHJhY2VraXQuanMKKysrIGIvc3RhdGljL3NjcmlwdHMvcGFja2VkL2xpYnMvdHJhY2VraXQuanMK
QEAgLTEsMSArMSwxIEBACi0oZnVuY3Rpb24oaCxkKXt2YXIgZT0zRHt9O3ZhciBqPTNEaC5UcmFj
ZUtpdDtlLm5vQ29uZmxpY3Q9M0RmdW5jdGlvbiBnKCl7aD0KLlRyYWNlS2l0PTNEajtyZXR1cm4g
ZX07ZS5faGFzPTNEZnVuY3Rpb24gYShrLGwpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhPQpz
T3duUHJvcGVydHkuY2FsbChrLGwpfTtlLnJlcG9ydD0zRChmdW5jdGlvbiBpKCl7dmFyIGs9M0Rb
XSxvPTNEbnVsbCxxPTNEbnU9CmxsO2Z1bmN0aW9uIGwodCl7ay5wdXNoKHQpfWZ1bmN0aW9uIHIo
dSl7Zm9yKHZhciB0PTNEay5sZW5ndGgtMTt0Pj0zRDA7LS10KT0Ke2lmKGtbdF09M0Q9M0Q9M0R1
KXtrLnNwbGljZSh0LDEpfX19ZnVuY3Rpb24gcCh0LHYpe3ZhciB4PTNEbnVsbDtpZih2JiYhZS5j
PQpvbGxlY3RXaW5kb3dFcnJvcnMpe3JldHVybn1mb3IodmFyIHcgaW4gayl7aWYoZS5faGFzKGss
dykpe3RyeXtrW3ddLmFwcGx5KG49CnVsbCxbdF0uY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGlj
ZS5jYWxsKGFyZ3VtZW50cywyKSkpfWNhdGNoKHUpe3g9M0R1fX19aT0KZih4KXt0aHJvdyB4fX12
YXIgcz0zRGgub25lcnJvcjtoLm9uZXJyb3I9M0RmdW5jdGlvbiBuKHcsdix4KXt2YXIgdD0zRG51
bGw7PQppZihxKXtlLmNvbXB1dGVTdGFja1RyYWNlLmF1Z21lbnRTdGFja1RyYWNlV2l0aEluaXRp
YWxFbGVtZW50KHEsdix4LHcpO3Q9M0Q9CnE7cT0zRG51bGw7bz0zRG51bGx9ZWxzZXt2YXIgdT0z
RHt1cmw6dixsaW5lOnh9O3UuZnVuYz0zRGUuY29tcHV0ZVN0YWNrVHJhYz0KZS5ndWVzc0Z1bmN0
aW9uTmFtZSh1LnVybCx1LmxpbmUpO3UuY29udGV4dD0zRGUuY29tcHV0ZVN0YWNrVHJhY2UuZ2F0
aGVyQ29uPQp0ZXh0KHUudXJsLHUubGluZSk7dD0zRHttb2RlOiJvbmVycm9yIixtZXNzYWdlOncs
dXJsOmRvY3VtZW50LmxvY2F0aW9uLmhyZWY9CixzdGFjazpbdV0sdXNlcmFnZW50Om5hdmlnYXRv
ci51c2VyQWdlbnR9fXAodCwiZnJvbSB3aW5kb3cub25lcnJvciIpO2lmKHMpez0KcmV0dXJuIHMu
YXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBmYWxzZX07ZnVuY3Rpb24gbSh2KXt2YXIgdT0z
REFycmF5LnByPQpvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpO2lmKHEpe2lmKG89M0Q9
M0Q9M0R2KXtyZXR1cm59ZWxzZXt2YXIgdz0zRHE9CjtxPTNEbnVsbDtvPTNEbnVsbDtwLmFwcGx5
KG51bGwsW3csbnVsbF0uY29uY2F0KHUpKX19dmFyIHQ9M0RlLmNvbXB1dGVTdGFjaz0KVHJhY2Uo
dik7cT0zRHQ7bz0zRHY7aC5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aWYobz0zRD0zRD0zRHYpe3E9
M0RudWxsO289M0RuPQp1bGw7cC5hcHBseShudWxsLFt0LG51bGxdLmNvbmNhdCh1KSl9fSwodC5p
bmNvbXBsZXRlPzIwMDA6MCkpO3Rocm93IHZ9bS5zdWI9CnNjcmliZT0zRGw7bS51bnN1YnNjcmli
ZT0zRHI7cmV0dXJuIG19KCkpO2UuY29tcHV0ZVN0YWNrVHJhY2U9M0QoZnVuY3Rpb24gYj0KKCl7
dmFyIHU9M0RmYWxzZSxxPTNEe307ZnVuY3Rpb24gbChEKXtpZighZS5yZW1vdGVGZXRjaGluZyl7
cmV0dXJuIiJ9dHJ5e3ZhPQpyIEM7aWYodHlwZW9mKFhNTEh0dHBSZXF1ZXN0KT0zRD0zRD0zRCJ1
bmRlZmluZWQiKXtDPTNEZnVuY3Rpb24gRSgpe3RyeXtyZXQ9CnVybiBuZXcgQWN0aXZlWE9iamVj
dCgiTXN4bWwyLlhNTEhUVFAuNi4wIil9Y2F0Y2goSCl7fXRyeXtyZXR1cm4gbmV3IEFjdGl2ZT0K
WE9iamVjdCgiTXN4bWwyLlhNTEhUVFAuMy4wIil9Y2F0Y2goSCl7fXRyeXtyZXR1cm4gbmV3IEFj
dGl2ZVhPYmplY3QoIk1zeG1sPQoyLlhNTEhUVFAiKX1jYXRjaChIKXt9dHJ5e3JldHVybiBuZXcg
QWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKX1jYXQ9CmNoKEgpe310aHJvdyBuZXcg
RXJyb3IoIk5vIFhIUi4iKX19ZWxzZXtDPTNEWE1MSHR0cFJlcXVlc3R9dmFyIEY9M0RuZXcgQygp
Oz0KRi5vcGVuKCJHRVQiLEQsZmFsc2UpO0Yuc2VuZCgiIik7cmV0dXJuIEYucmVzcG9uc2VUZXh0
fWNhdGNoKEcpe3JldHVybiIifX1mPQp1bmN0aW9uIHQoQyl7aWYoIWUuX2hhcyhxLEMpKXt2YXIg
RDtpZihDLmluZGV4T2YoZG9jdW1lbnQuZG9tYWluKSE9M0Q9M0QtMSk9CntEPTNEbChDKX1lbHNl
e0Q9M0RbXX1xW0NdPTNERC5sZW5ndGg/RC5zcGxpdCgiXG4iKTpbXX1yZXR1cm4gcVtDXX1mdW5j
dGlvbj0KIHooRCxGKXt2YXIgSj0zRC9mdW5jdGlvbiAoW14oXSopXCgoW14pXSopXCkvLEc9M0Qv
WyciXT8oWzAtOUEtWmEteiRfXSspWyciPQpdP1xzKls6PTNEXVxzKihmdW5jdGlvbnxldmFsfG5l
dyBGdW5jdGlvbikvLEs9M0QiIixJPTNEMTAsQz0zRHQoRCksRTtpZighQy49Cmxlbmd0aCl7cmV0
dXJuIj8ifWZvcih2YXIgSD0zRDA7SDxJOysrSCl7Sz0zRENbRi1IXStLO2lmKEshPTNEPTNEZCl7
aWYoKEU9Cj0zREcuZXhlYyhLKSkpe3JldHVybiBFWzFdfWVsc2V7aWYoKEU9M0RKLmV4ZWMoSykp
KXtyZXR1cm4gRVsxXX19fX1yZXR1cm4iPz0KIn1mdW5jdGlvbiBCKEUsSyl7dmFyIEQ9M0R0KEUp
O2lmKCFELmxlbmd0aCl7cmV0dXJuIG51bGx9dmFyIEc9M0RbXSxKPTNETWF0PQpoLmZsb29yKGUu
bGluZXNPZkNvbnRleHQvMiksQz0zREorKGUubGluZXNPZkNvbnRleHQlMiksRj0zRE1hdGgubWF4
KDAsSy1KLTE9CiksSD0zRE1hdGgubWluKEQubGVuZ3RoLEsrQy0xKTtLLT0zRDE7Zm9yKHZhciBJ
PTNERjtJPEg7KytJKXtpZih0eXBlb2YoRFtJXT0KKSE9M0Q9M0QidW5kZWZpbmVkIil7Ry5wdXNo
KERbSV0pfX1yZXR1cm4gRy5sZW5ndGg+MD9HOm51bGx9ZnVuY3Rpb24gbShDKXtyPQpldHVybiBD
LnJlcGxhY2UoL1tcLVxbXF17fSgpKis/LixcXFxeJHwjXS9nLCJcXCQmIil9ZnVuY3Rpb24geChD
KXtyZXR1cm4gbSg9CkMpLnJlcGxhY2UoIjwiLCIoPzo8fCZsdDspIikucmVwbGFjZSgiPiIsIig/
Oj58Jmd0OykiKS5yZXBsYWNlKCImIiwiKD86JnwmYT0KbXA7KSIpLnJlcGxhY2UoJyInLCcoPzoi
fCZxdW90OyknKS5yZXBsYWNlKC9ccysvZywiXFxzKyIpfWZ1bmN0aW9uIG8oRixIKXt2PQphciBH
LEM7Zm9yKHZhciBFPTNEMCxEPTNESC5sZW5ndGg7RTxEOysrRSl7aWYoKEc9M0R0KEhbRV0pKS5s
ZW5ndGgpe0c9M0RHLmo9Cm9pbigiXG4iKTtpZigoQz0zREYuZXhlYyhHKSkpe3JldHVybnt1cmw6
SFtFXSxsaW5lOkcuc3Vic3RyaW5nKDAsQy5pbmRleCkucz0KcGxpdCgiXG4iKS5sZW5ndGgsY29s
dW1uOkMuaW5kZXgtRy5sYXN0SW5kZXhPZigiXG4iLEMuaW5kZXgpLTF9fX19cmV0dXJuIG51PQps
bH1mdW5jdGlvbiBBKEYsRSxEKXt2YXIgSD0zRHQoRSksRz0zRG5ldyBSZWdFeHAoIlxcYiIrbShG
KSsiXFxiIiksQztELT0zRDE9CjtpZihIJiZILmxlbmd0aD5EJiYoQz0zREcuZXhlYyhIW0RdKSkp
e3JldHVybiBDLmluZGV4fXJldHVybiBudWxsfWZ1bmN0aW9uID0KdihIKXt2YXIgTj0zRFtoLmxv
Y2F0aW9uLmhyZWZdLEk9M0Rkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0Iiks
PQpMLEY9M0QiIitILEU9M0QvXmZ1bmN0aW9uKD86XHMrKFtcdyRdKykpP1xzKlwoKFtcd1xzLF0q
KVwpXHMqXHtccyooXFNbXHNcU109CipcUylccypcfVxzKiQvLEc9M0QvXmZ1bmN0aW9uIG9uKFtc
dyRdKylccypcKGV2ZW50XClccypce1xzKihcU1tcc1xTXSpcUylccz0KKlx9XHMqJC8sUCxKLFE7
Zm9yKHZhciBLPTNEMDtLPEkubGVuZ3RoOysrSyl7dmFyIE89M0RJW0tdO2lmKE8uc3JjKXtOLnB1
c2goPQpPLnNyYyl9fWlmKCEoSj0zREUuZXhlYyhGKSkpe1A9M0RuZXcgUmVnRXhwKG0oRikucmVw
bGFjZSgvXHMrL2csIlxccysiKSl9ZWw9CnNle3ZhciBEPTNESlsxXT8iXFxzKyIrSlsxXToiIixN
PTNESlsyXS5zcGxpdCgiLCIpLmpvaW4oIlxccyosXFxzKiIpO0w9M0RtKD0KSlszXSkucmVwbGFj
ZSgvOyQvLCI7PyIpO1A9M0RuZXcgUmVnRXhwKCJmdW5jdGlvbiIrRCsiXFxzKlxcKFxccyoiK00r
IlxccypcPQpcKVxccyp7XFxzKiIrTCsiXFxzKn0iKX1pZigoUT0zRG8oUCxOKSkpe3JldHVybiBR
fWlmKChKPTNERy5leGVjKEYpKSl7dmFyIEM9Cj0zREpbMV07TD0zRHgoSlsyXSk7UD0zRG5ldyBS
ZWdFeHAoIm9uIitDKyI9M0RbXFwnXCJdXFxzKiIrTCsiXFxzKltcXCdcIl0iLD0KImkiKTtpZigo
UT0zRG8oUCxOWzBdKSkpe3JldHVybiBRfVA9M0RuZXcgUmVnRXhwKEwpO2lmKChRPTNEbyhQLE4p
KSl7cmV0dXJuPQogUX19cmV0dXJuIG51bGx9ZnVuY3Rpb24gdyhKKXtpZighSi5zdGFjayl7cmV0
dXJuIG51bGx9dmFyIEk9M0QvXlxzKmF0ICg/Oig9Cig/Olxbb2JqZWN0IG9iamVjdFxdKT9cUysp
ICk/XCg/KCg/OmZpbGV8aHR0cHxodHRwcyk6Lio/KTooXGQrKSg/OjooXGQrKSk/XD0KKT9ccyok
L2ksQz0zRC9eXHMqKFxTKikoPzpcKCguKj8pXCkpP0AoKD86ZmlsZXxodHRwfGh0dHBzKS4qPyk6
KFxkKykoPzo6KFxkPQorKSk/XHMqJC9pLEw9M0RKLnN0YWNrLnNwbGl0KCJcbiIpLEs9M0RbXSxG
LEgsRD0zRC9eKC4qKSBpcyB1bmRlZmluZWQkLy5leGU9CmMoSi5tZXNzYWdlKTtmb3IodmFyIEc9
M0QwLEU9M0RMLmxlbmd0aDtHPEU7KytHKXtpZigoRj0zREMuZXhlYyhMW0ddKSkpe0g9Cj0zRHt1
cmw6RlszXSxmdW5jOkZbMV18fCI/IixhcmdzOkZbMl0/RlsyXS5zcGxpdCgiLCIpOiIiLGxpbmU6
K0ZbNF0sY29sdW1uOj0KRls1XT8rRls1XTpudWxsfX1lbHNle2lmKChGPTNESS5leGVjKExbR10p
KSl7SD0zRHt1cmw6RlsyXSxmdW5jOkZbMV18fCI/IixsPQppbmU6K0ZbM10sY29sdW1uOkZbNF0/
K0ZbNF06bnVsbH19ZWxzZXtjb250aW51ZX19aWYoIUguZnVuYyYmSC5saW5lKXtILmZ1bmM9Cj0z
RHooSC51cmwsSC5saW5lKX1pZihILmxpbmUpe0guY29udGV4dD0zREIoSC51cmwsSC5saW5lKX1L
LnB1c2goSCl9aWYoS1swXT0KJiZLWzBdLmxpbmUmJiFLWzBdLmNvbHVtbiYmRCl7S1swXS5jb2x1
bW49M0RBKERbMV0sS1swXS51cmwsS1swXS5saW5lKX1pZighPQpLLmxlbmd0aCl7cmV0dXJuIG51
bGx9cmV0dXJue21vZGU6InN0YWNrIixuYW1lOkoubmFtZSxtZXNzYWdlOkoubWVzc2FnZSx1cmw9
Cjpkb2N1bWVudC5sb2NhdGlvbi5ocmVmLHN0YWNrOkssdXNlcmFnZW50Om5hdmlnYXRvci51c2Vy
QWdlbnR9fWZ1bmN0aW9uIHMoSD0KKXt2YXIgSj0zREguc3RhY2t0cmFjZTt2YXIgRz0zRC8gbGlu
ZSAoXGQrKSwgY29sdW1uIChcZCspIGluICg/Ojxhbm9ueW1vdXMgPQpmdW5jdGlvbjogKFtePl0r
KT58KFteXCldKykpXCgoLiopXCkgaW4gKC4qKTpccyokL2ksTD0zREouc3BsaXQoIlxuIiksST0z
RFs9Cl0sQztmb3IodmFyIEY9M0QwLEQ9M0RMLmxlbmd0aDtGPEQ7Ris9M0QyKXtpZigoQz0zREcu
ZXhlYyhMW0ZdKSkpe3ZhciBFPTNEez0KbGluZTorQ1sxXSxjb2x1bW46K0NbMl0sZnVuYzpDWzNd
fHxDWzRdLGFyZ3M6Q1s1XT9DWzVdLnNwbGl0KCIsIik6W10sdXJsOkNbPQo2XX07aWYoIUUuZnVu
YyYmRS5saW5lKXtFLmZ1bmM9M0R6KEUudXJsLEUubGluZSl9aWYoRS5saW5lKXt0cnl7RS5jb250
ZXh0PQo9M0RCKEUudXJsLEUubGluZSl9Y2F0Y2goSyl7fX1pZighRS5jb250ZXh0KXtFLmNvbnRl
eHQ9M0RbTFtGKzFdXX1JLnB1c2goRSk9Cn19aWYoIUkubGVuZ3RoKXtyZXR1cm4gbnVsbH1yZXR1
cm57bW9kZToic3RhY2t0cmFjZSIsbmFtZTpILm5hbWUsbWVzc2FnZTpILj0KbWVzc2FnZSx1cmw6
ZG9jdW1lbnQubG9jYXRpb24uaHJlZixzdGFjazpJLHVzZXJhZ2VudDpuYXZpZ2F0b3IudXNlckFn
ZW50fX1mPQp1bmN0aW9uIHAoVSl7dmFyIEU9M0RVLm1lc3NhZ2Uuc3BsaXQoIlxuIik7aWYoRS5s
ZW5ndGg8NCl7cmV0dXJuIG51bGx9dmFyIEc9Cj0zRC9eXHMqTGluZSAoXGQrKSBvZiBsaW5rZWQg
c2NyaXB0ICgoPzpmaWxlfGh0dHB8aHR0cHMpXFMrKSg/OjogaW4gZnVuY3Rpbz0KbiAoXFMrKSk/
XHMqJC9pLEY9M0QvXlxzKkxpbmUgKFxkKykgb2YgaW5saW5lIyhcZCspIHNjcmlwdCBpbiAoKD86
ZmlsZXxodHRwPQp8aHR0cHMpXFMrKSg/OjogaW4gZnVuY3Rpb24gKFxTKykpP1xzKiQvaSxDPTNE
L15ccypMaW5lIChcZCspIG9mIGZ1bmN0aW9uIHM9CmNyaXB0XHMqJC9pLEw9M0RbXSxJPTNEZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpLFQ9M0RbXSxQLFIsUz0KLFE7Zm9y
KFIgaW4gSSl7aWYoZS5faGFzKEksUikmJiFJW1JdLnNyYyl7VC5wdXNoKElbUl0pfX1mb3IoUj0z
RDIsUz0zREUubGVuPQpndGg7UjxTO1IrPTNEMil7dmFyIFY9M0RudWxsO2lmKChQPTNERy5leGVj
KEVbUl0pKSl7Vj0zRHt1cmw6UFsyXSxmdW5jOlBbM109CixsaW5lOitQWzFdfX1lbHNle2lmKChQ
PTNERi5leGVjKEVbUl0pKSl7Vj0zRHt1cmw6UFszXSxmdW5jOlBbNF19O3ZhciBEPTNEKD0KK1Bb
MV0pO3ZhciBXPTNEVFtQWzJdLTFdO2lmKFcpe1E9M0R0KFYudXJsKTtpZihRKXtRPTNEUS5qb2lu
KCJcbiIpO3ZhciBLPTNEPQpRLmluZGV4T2YoVy5pbm5lclRleHQpO2lmKEs+PTNEMCl7Vi5saW5l
PTNERCtRLnN1YnN0cmluZygwLEspLnNwbGl0KCJcbiIpLmw9CmVuZ3RofX19fWVsc2V7aWYoKFA9
M0RDLmV4ZWMoRVtSXSkpKXt2YXIgSj0zRGgubG9jYXRpb24uaHJlZi5yZXBsYWNlKC8jLiokLz0K
LCIiKSxNPTNEUFsxXTt2YXIgTz0zRG5ldyBSZWdFeHAoeChFW1IrMV0pKTtRPTNEbyhPLFtKXSk7
Vj0zRHt1cmw6SixsaW5lOlE/PQpRLmxpbmU6TSxmdW5jOiIifX19fWlmKFYpe2lmKCFWLmZ1bmMp
e1YuZnVuYz0zRHooVi51cmwsVi5saW5lKX12YXIgSD0zREIoVi49CnVybCxWLmxpbmUpO3ZhciBO
PTNEKEg/SFtNYXRoLmZsb29yKEgubGVuZ3RoLzIpXTpudWxsKTtpZihIJiZOLnJlcGxhY2UoL15c
cz0KKi8sIiIpPTNEPTNEPTNERVtSKzFdLnJlcGxhY2UoL15ccyovLCIiKSl7Vi5jb250ZXh0PTNE
SH1lbHNle1YuY29udGV4dD0zRFtFPQpbUisxXV19TC5wdXNoKFYpfX1pZighTC5sZW5ndGgpe3Jl
dHVybiBudWxsfXJldHVybnttb2RlOiJtdWx0aWxpbmUiLG5hbWU6VS49Cm5hbWUsbWVzc2FnZTpF
WzBdLHVybDpkb2N1bWVudC5sb2NhdGlvbi5ocmVmLHN0YWNrOkwsdXNlcmFnZW50Om5hdmlnYXRv
ci51cz0KZXJBZ2VudH19ZnVuY3Rpb24geShHLEUsSCxGKXt2YXIgRD0zRHt1cmw6RSxsaW5lOkh9
O2lmKEQudXJsJiZELmxpbmUpe0cuaW5jPQpvbXBsZXRlPTNEZmFsc2U7aWYoIUQuZnVuYyl7RC5m
dW5jPTNEeihELnVybCxELmxpbmUpfWlmKCFELmNvbnRleHQpe0QuY29udGU9Cnh0PTNEQihELnVy
bCxELmxpbmUpfXZhciBDPTNELyAnKFteJ10rKScgLy5leGVjKEYpO2lmKEMpe0QuY29sdW1uPTNE
QShDWzFdLD0KRC51cmwsRC5saW5lKX1pZihHLnN0YWNrLmxlbmd0aD4wKXtpZihHLnN0YWNrWzBd
LnVybD0zRD0zRD0zREQudXJsKXtpZihHLnN0PQphY2tbMF0ubGluZT0zRD0zRD0zREQubGluZSl7
cmV0dXJuIGZhbHNlfWVsc2V7aWYoIUcuc3RhY2tbMF0ubGluZSYmRy5zdGFja1s9CjBdLmZ1bmM9
M0Q9M0Q9M0RELmZ1bmMpe0cuc3RhY2tbMF0ubGluZT0zREQubGluZTtHLnN0YWNrWzBdLmNvbnRl
eHQ9M0RELmNvbj0KdGV4dDtyZXR1cm4gZmFsc2V9fX19Ry5zdGFjay51bnNoaWZ0KEQpO0cucGFy
dGlhbD0zRHRydWU7cmV0dXJuIHRydWV9ZWxzZXtHPQouaW5jb21wbGV0ZT0zRHRydWV9cmV0dXJu
IGZhbHNlfWZ1bmN0aW9uIG4oSixIKXt2YXIgST0zRC9mdW5jdGlvblxzKyhbXyRhLXo9CkEtWlx4
QTAtXHVGRkZGXVtfJGEtekEtWjAtOVx4QTAtXHVGRkZGXSopP1xzKlwoL2ksSz0zRFtdLEQ9M0R7
fSxGPTNEZmFsc2UsRz0KLEwsQztmb3IodmFyIE49M0RuLmNhbGxlcjtOJiYhRjtOPTNETi5jYWxs
ZXIpe2lmKE49M0Q9M0Q9M0RyfHxOPTNEPTNEPTNEZS5yPQplcG9ydCl7Y29udGludWV9TD0zRHt1
cmw6bnVsbCxmdW5jOiI/IixsaW5lOm51bGwsY29sdW1uOm51bGx9O2lmKE4ubmFtZSl7TC49CmZ1
bmM9M0ROLm5hbWV9ZWxzZXtpZigoRz0zREkuZXhlYyhOLnRvU3RyaW5nKCkpKSl7TC5mdW5jPTNE
R1sxXX19aWYoKEM9M0R2KD0KTikpKXtMLnVybD0zREMudXJsO0wubGluZT0zREMubGluZTtpZihM
LmZ1bmM9M0Q9M0Q9M0QiPyIpe0wuZnVuYz0zRHooTC51cmwsPQpMLmxpbmUpfXZhciBFPTNELyAn
KFteJ10rKScgLy5leGVjKEoubWVzc2FnZXx8Si5kZXNjcmlwdGlvbik7aWYoRSl7TC5jb2x1bW49
Cj0zREEoRVsxXSxDLnVybCxDLmxpbmUpfX1pZihEWyIiK05dKXtGPTNEdHJ1ZX1lbHNle0RbIiIr
Tl09M0R0cnVlfUsucHVzaChMKT0KfWlmKEgpe0suc3BsaWNlKDAsSCl9dmFyIE09M0R7bW9kZToi
Y2FsbGVycyIsbmFtZTpKLm5hbWUsbWVzc2FnZTpKLm1lc3NhZ2UsPQp1cmw6ZG9jdW1lbnQubG9j
YXRpb24uaHJlZixzdGFjazpLLHVzZXJhZ2VudDpuYXZpZ2F0b3IudXNlckFnZW50fTt5KE0sSi5z
b3U9CnJjZVVSTHx8Si5maWxlTmFtZSxKLmxpbmV8fEoubGluZU51bWJlcixKLm1lc3NhZ2V8fEou
ZGVzY3JpcHRpb24pO3JldHVybiBNfT0KZnVuY3Rpb24gcihELEYpe3ZhciBDPTNEbnVsbDtGPTNE
KEY9M0Q9M0RudWxsPzA6K0YpO3RyeXtDPTNEcyhEKTtpZihDKXtyZXR1PQpybiBDfX1jYXRjaChF
KXtpZih1KXt0aHJvdyBFfX10cnl7Qz0zRHcoRCk7aWYoQyl7cmV0dXJuIEN9fWNhdGNoKEUpe2lm
KHUpe3Q9Cmhyb3cgRX19dHJ5e0M9M0RwKEQpO2lmKEMpe3JldHVybiBDfX1jYXRjaChFKXtpZih1
KXt0aHJvdyBFfX10cnl7Qz0zRG4oRCxGKz0KMSk7aWYoQyl7cmV0dXJuIEN9fWNhdGNoKEUpe2lm
KHUpe3Rocm93IEV9fXJldHVybnttb2RlOiJmYWlsZWQifX1mdW5jdGlvbiBrPQooRCl7RD0zRChE
PTNEPTNEbnVsbD8wOitEKSsxO3RyeXt0aHJvdyBuZXcgRXJyb3IoKX1jYXRjaChDKXtyZXR1cm4g
cihDLEQrMSk9Cn1yZXR1cm4gbnVsbH1yLmF1Z21lbnRTdGFja1RyYWNlV2l0aEluaXRpYWxFbGVt
ZW50PTNEeTtyLmd1ZXNzRnVuY3Rpb25OYW1lPQo9M0R6O3IuZ2F0aGVyQ29udGV4dD0zREI7ci5v
ZkNhbGxlcj0zRGs7cmV0dXJuIHJ9KCkpOyhmdW5jdGlvbiBmKGspe3ZhciBsPQo9M0RmdW5jdGlv
biBsKG8pe3ZhciBuPTNEa1tvXTtrW29dPTNEZnVuY3Rpb24gbSgpe3ZhciBwPTNEQXJyYXkucHJv
dG90eXBlLnM9CmxpY2UuY2FsbChhcmd1bWVudHMsMCk7dmFyIHI9M0RwWzBdO2lmKHR5cGVvZihy
KT0zRD0zRD0zRCJmdW5jdGlvbiIpe3BbMF09Cj0zRGZ1bmN0aW9uIHEoKXt0cnl7ci5hcHBseSh0
aGlzLGFyZ3VtZW50cyl9Y2F0Y2gocyl7ZS5yZXBvcnQocyk7dGhyb3cgc319fT0KaWYobi5hcHBs
eSl7cmV0dXJuIG4uYXBwbHkodGhpcyxwKX1lbHNle3JldHVybiBuKHBbMF0scFsxXSl9fX07bCgi
c2V0VGltZW91PQp0Iik7bCgic2V0SW50ZXJ2YWwiKX0oaCkpOyhmdW5jdGlvbiBjKHEpe2lmKCFx
KXtyZXR1cm59dmFyIHA9M0RxLmV2ZW50LmFkZDs9CnEuZXZlbnQuYWRkPTNEZnVuY3Rpb24gbih3
LHUsdix4LHIpe3ZhciBzO2lmKHYuaGFuZGxlcil7cz0zRHYuaGFuZGxlcjt2Lmhhbj0KZGxlcj0z
RGZ1bmN0aW9uIHQoKXt0cnl7cmV0dXJuIHMuYXBwbHkodGhpcyxhcmd1bWVudHMpfWNhdGNoKHop
e2UucmVwb3J0KHopPQo7dGhyb3cgen19fWVsc2V7cz0zRHY7dj0zRGZ1bmN0aW9uIHkoKXt0cnl7
cmV0dXJuIHMuYXBwbHkodGhpcyxhcmd1bWVudHMpfWM9CmF0Y2goeil7ZS5yZXBvcnQoeik7dGhy
b3cgen19fWlmKHMuZ3VpZCl7di5ndWlkPTNEcy5ndWlkfWVsc2V7di5ndWlkPTNEcy5ndT0KaWQ9
M0RxLmd1aWQrK31yZXR1cm4gcC5jYWxsKHRoaXMsdyx1LHYseCxyKX07dmFyIGw9M0RxLmZuLnJl
YWR5O3EuZm4ucmVhZHk9Cj0zRGZ1bmN0aW9uIGsocil7dmFyIHM9M0RmdW5jdGlvbigpe3RyeXty
ZXR1cm4gci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9Y2F0Yz0KaCh0KXtlLnJlcG9ydCh0KTt0aHJv
dyB0fX07cmV0dXJuIGwuY2FsbCh0aGlzLHMpfTt2YXIgbz0zRHEuYWpheDtxLmFqYXg9M0RmPQp1
bmN0aW9uIG0oeCl7aWYocS5pc0Z1bmN0aW9uKHguY29tcGxldGUpKXt2YXIgdj0zRHguY29tcGxl
dGU7eC5jb21wbGV0ZT0zRGY9CnVuY3Rpb24gdSgpe3RyeXtyZXR1cm4gdi5hcHBseSh0aGlzLGFy
Z3VtZW50cyl9Y2F0Y2gocyl7ZS5yZXBvcnQocyk7dGhyb3cgcz0KfX19aWYocS5pc0Z1bmN0aW9u
KHguZXJyb3IpKXt2YXIgcj0zRHguZXJyb3I7eC5lcnJvcj0zRGZ1bmN0aW9uIHooKXt0cnl7cmV0
PQp1cm4gci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9Y2F0Y2gocyl7ZS5yZXBvcnQocyk7dGhyb3cg
c319fWlmKHEuaXNGdW5jdGlvbig9Cnguc3VjY2Vzcykpe3ZhciB3PTNEeC5zdWNjZXNzO3guc3Vj
Y2Vzcz0zRGZ1bmN0aW9uIHQoKXt0cnl7cmV0dXJuIHcuYXBwbHkodD0KaGlzLGFyZ3VtZW50cyl9
Y2F0Y2gocyl7ZS5yZXBvcnQocyk7dGhyb3cgc319fXRyeXtyZXR1cm4gby5jYWxsKHRoaXMseCl9
Y2F0PQpjaCh5KXtlLnJlcG9ydCh5KTt0aHJvdyB5fX19KGgualF1ZXJ5KSk7aWYoIWUucmVtb3Rl
RmV0Y2hpbmcpe2UucmVtb3RlRmV0Y2g9CmluZz0zRHRydWV9aWYoIWUuY29sbGVjdFdpbmRvd0Vy
cm9ycyl7ZS5jb2xsZWN0V2luZG93RXJyb3JzPTNEdHJ1ZX1pZighZS5saT0KbmVzT2ZDb250ZXh0
fHxlLmxpbmVzT2ZDb250ZXh0PDEpe2UubGluZXNPZkNvbnRleHQ9M0QxMX1oLlRyYWNlS2l0PTNE
ZX0od2luPQpkb3cpKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisoZnVuY3Rpb24oaixl
KXt2YXIgZj0zRHt9O3ZhciBsPTNEai5UcmFjZUtpdDt2YXIgbT0zRFtdLnNsaWNlO3ZhciBoPTNE
Ij8iOz0KZnVuY3Rpb24gYyhuLG8pe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl
cnR5LmNhbGwobixvKX1mdW5jdGlvbiBkPQoobil7cmV0dXJuIHR5cGVvZiBuPTNEPTNEPTNEInVu
ZGVmaW5lZCJ9Zi5ub0NvbmZsaWN0PTNEZnVuY3Rpb24gaSgpe2ouVHJhY2U9CktpdD0zRGw7cmV0
dXJuIGZ9O2Yud3JhcD0zRGZ1bmN0aW9uIGEobyl7ZnVuY3Rpb24gbigpe3RyeXtyZXR1cm4gby5h
cHBseSh0aD0KaXMsYXJndW1lbnRzKX1jYXRjaChwKXtmLnJlcG9ydChwKTt0aHJvdyBwfX1yZXR1
cm4gbn07Zi5yZXBvcnQ9M0QoZnVuY3Rpb24gPQprKCl7dmFyIG49M0RbXSx0PTNEbnVsbCx2PTNE
bnVsbDtmdW5jdGlvbiBvKHkpe3EoKTtuLnB1c2goeSl9ZnVuY3Rpb24gdyh6KXs9CmZvcih2YXIg
eT0zRG4ubGVuZ3RoLTE7eT49M0QwOy0teSl7aWYoblt5XT0zRD0zRD0zRHope24uc3BsaWNlKHks
MSl9fX1mdW5jdD0KaW9uIHUoeSxBKXt2YXIgQz0zRG51bGw7aWYoQSYmIWYuY29sbGVjdFdpbmRv
d0Vycm9ycyl7cmV0dXJufWZvcih2YXIgQiBpbiBuPQope2lmKGMobixCKSl7dHJ5e25bQl0uYXBw
bHkobnVsbCxbeV0uY29uY2F0KG0uY2FsbChhcmd1bWVudHMsMikpKX1jYXRjaCh6KXs9CkM9M0R6
fX19aWYoQyl7dGhyb3cgQ319dmFyIHgscjtmdW5jdGlvbiBzKEIsQSxDKXt2YXIgeT0zRG51bGw7
aWYodil7Zi5jb21wdT0KdGVTdGFja1RyYWNlLmF1Z21lbnRTdGFja1RyYWNlV2l0aEluaXRpYWxF
bGVtZW50KHYsQSxDLEIpO3k9M0R2O3Y9M0RudWxsO3Q9Cj0zRG51bGx9ZWxzZXt2YXIgej0zRHt1
cmw6QSxsaW5lOkN9O3ouZnVuYz0zRGYuY29tcHV0ZVN0YWNrVHJhY2UuZ3Vlc3NGdW5jdD0KaW9u
TmFtZSh6LnVybCx6LmxpbmUpO3ouY29udGV4dD0zRGYuY29tcHV0ZVN0YWNrVHJhY2UuZ2F0aGVy
Q29udGV4dCh6LnVybCx6PQoubGluZSk7eT0zRHttb2RlOiJvbmVycm9yIixtZXNzYWdlOkIsdXJs
OmRvY3VtZW50LmxvY2F0aW9uLmhyZWYsc3RhY2s6W3pdLHU9CnNlcmFnZW50Om5hdmlnYXRvci51
c2VyQWdlbnR9fXUoeSwiZnJvbSB3aW5kb3cub25lcnJvciIpO2lmKHgpe3JldHVybiB4LmFwcD0K
bHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBmYWxzZX1mdW5jdGlvbiBxKCl7aWYocj0zRD0zRD0z
RHRydWUpe3JldHVybn14PTNEPQpqLm9uZXJyb3I7ai5vbmVycm9yPTNEcztyPTNEdHJ1ZX1mdW5j
dGlvbiBwKEEpe3ZhciB6PTNEbS5jYWxsKGFyZ3VtZW50cywxKTs9CmlmKHYpe2lmKHQ9M0Q9M0Q9
M0RBKXtyZXR1cm59ZWxzZXt2YXIgQj0zRHY7dj0zRG51bGw7dD0zRG51bGw7dS5hcHBseShudWxs
LD0KW0IsbnVsbF0uY29uY2F0KHopKX19dmFyIHk9M0RmLmNvbXB1dGVTdGFja1RyYWNlKEEpO3Y9
M0R5O3Q9M0RBO2ouc2V0VGltZW91PQp0KGZ1bmN0aW9uKCl7aWYodD0zRD0zRD0zREEpe3Y9M0Ru
dWxsO3Q9M0RudWxsO3UuYXBwbHkobnVsbCxbeSxudWxsXS5jb25jYXQ9Cih6KSl9fSwoeS5pbmNv
bXBsZXRlPzIwMDA6MCkpO3Rocm93IEF9cC5zdWJzY3JpYmU9M0RvO3AudW5zdWJzY3JpYmU9M0R3
O3JldD0KdXJuIHB9KCkpO2YuY29tcHV0ZVN0YWNrVHJhY2U9M0QoZnVuY3Rpb24gYigpe3ZhciB4
PTNEZmFsc2UsdD0zRHt9O2Z1bmN0aW9uPQogbyhGKXtpZighZi5yZW1vdGVGZXRjaGluZyl7cmV0
dXJuIiJ9dHJ5e3ZhciBJPTNEZnVuY3Rpb24oKXt0cnl7cmV0dXJuIG5ldyA9CmouWE1MSHR0cFJl
cXVlc3QoKX1jYXRjaChKKXtyZXR1cm4gbmV3IGouQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhN
TEhUVFAiKT0KfX07dmFyIEc9M0RJKCk7Ry5vcGVuKCJHRVQiLEYsZmFsc2UpO0cuc2VuZCgiIik7
cmV0dXJuIEcucmVzcG9uc2VUZXh0fWNhdGNoPQooSCl7cmV0dXJuIiJ9fWZ1bmN0aW9uIHcoRil7
aWYoIWModCxGKSl7dmFyIEc9M0QiIjtpZihGLmluZGV4T2YoZG9jdW1lbnQuZG89Cm1haW4pIT0z
RD0zRC0xKXtHPTNEbyhGKX10W0ZdPTNERz9HLnNwbGl0KCJcbiIpOltdfXJldHVybiB0W0ZdfWZ1
bmN0aW9uIEMoRz0KLEkpe3ZhciBNPTNEL2Z1bmN0aW9uIChbXihdKilcKChbXildKilcKS8sSj0z
RC9bJyJdPyhbMC05QS1aYS16JF9dKylbJyJdP1xzPQoqWzo9M0RdXHMqKGZ1bmN0aW9ufGV2YWx8
bmV3IEZ1bmN0aW9uKS8sTj0zRCIiLEw9M0QxMCxGPTNEdyhHKSxIO2lmKCFGLmxlbmc9CnRoKXty
ZXR1cm4gaH1mb3IodmFyIEs9M0QwO0s8TDsrK0spe049M0RGW0ktS10rTjtpZighZChOKSl7aWYo
KEg9M0RKLmV4ZWMoTj0KKSkpe3JldHVybiBIWzFdfWVsc2V7aWYoKEg9M0RNLmV4ZWMoTikpKXty
ZXR1cm4gSFsxXX19fX1yZXR1cm4gaH1mdW5jdGlvbiBFPQooSCxOKXt2YXIgRz0zRHcoSCk7aWYo
IUcubGVuZ3RoKXtyZXR1cm4gbnVsbH12YXIgSj0zRFtdLE09M0RNYXRoLmZsb29yKGYubGk9Cm5l
c09mQ29udGV4dC8yKSxGPTNETSsoZi5saW5lc09mQ29udGV4dCUyKSxJPTNETWF0aC5tYXgoMCxO
LU0tMSksSz0zRE1hdGgubT0KaW4oRy5sZW5ndGgsTitGLTEpO04tPTNEMTtmb3IodmFyIEw9M0RJ
O0w8SzsrK0wpe2lmKCFkKEdbTF0pKXtKLnB1c2goR1tMXSl9PQp9cmV0dXJuIEoubGVuZ3RoPjA/
SjpudWxsfWZ1bmN0aW9uIHAoRil7cmV0dXJuIEYucmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFw9
ClxcXiR8I10vZywiXFwkJiIpfWZ1bmN0aW9uIEEoRil7cmV0dXJuIHAoRikucmVwbGFjZSgiPCIs
Iig/Ojx8Jmx0OykiKS5yZXBsYT0KY2UoIj4iLCIoPzo+fCZndDspIikucmVwbGFjZSgiJiIsIig/
OiZ8JmFtcDspIikucmVwbGFjZSgnIicsJyg/OiJ8JnF1b3Q7KScpPQoucmVwbGFjZSgvXHMrL2cs
IlxccysiKX1mdW5jdGlvbiByKEksSyl7dmFyIEosRjtmb3IodmFyIEg9M0QwLEc9M0RLLmxlbmd0
aDs9Ckg8RzsrK0gpe2lmKChKPTNEdyhLW0hdKSkubGVuZ3RoKXtKPTNESi5qb2luKCJcbiIpO2lm
KChGPTNESS5leGVjKEopKSl7cmV0dT0Kcm57dXJsOktbSF0sbGluZTpKLnN1YnN0cmluZygwLEYu
aW5kZXgpLnNwbGl0KCJcbiIpLmxlbmd0aCxjb2x1bW46Ri5pbmRleC1KPQoubGFzdEluZGV4T2Yo
IlxuIixGLmluZGV4KS0xfX19fXJldHVybiBudWxsfWZ1bmN0aW9uIEQoSSxILEcpe3ZhciBLPTNE
dyhIKSw9Cko9M0RuZXcgUmVnRXhwKCJcXGIiK3AoSSkrIlxcYiIpLEY7Ry09M0QxO2lmKEsmJksu
bGVuZ3RoPkcmJihGPTNESi5leGVjKEtbRz0KXSkpKXtyZXR1cm4gRi5pbmRleH1yZXR1cm4gbnVs
bH1mdW5jdGlvbiB5KEspe3ZhciBRPTNEW2oubG9jYXRpb24uaHJlZl0sTD0KPTNEZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpLE8sST0zRCIiK0ssSD0zRC9eZnVuY3Rpb24o
PzpccysoPQpbXHckXSspKT9ccypcKChbXHdccyxdKilcKVxzKlx7XHMqKFxTW1xzXFNdKlxTKVxz
Klx9XHMqJC8sSj0zRC9eZnVuY3Rpb24gb249CihbXHckXSspXHMqXChldmVudFwpXHMqXHtccyoo
XFNbXHNcU10qXFMpXHMqXH1ccyokLyxTLE0sVDtmb3IodmFyIE49M0QwO048TD0KLmxlbmd0aDsr
K04pe3ZhciBSPTNETFtOXTtpZihSLnNyYyl7US5wdXNoKFIuc3JjKX19aWYoIShNPTNESC5leGVj
KEkpKSl7Uz0KPTNEbmV3IFJlZ0V4cChwKEkpLnJlcGxhY2UoL1xzKy9nLCJcXHMrIikpfWVsc2V7
dmFyIEc9M0RNWzFdPyJcXHMrIitNWzFdOiIiPQosUD0zRE1bMl0uc3BsaXQoIiwiKS5qb2luKCJc
XHMqLFxccyoiKTtPPTNEcChNWzNdKS5yZXBsYWNlKC87JC8sIjs/Iik7Uz0zRG49CmV3IFJlZ0V4
cCgiZnVuY3Rpb24iK0crIlxccypcXChcXHMqIitQKyJcXHMqXFwpXFxzKntcXHMqIitPKyJcXHMq
fSIpfWlmKChUPQo9M0RyKFMsUSkpKXtyZXR1cm4gVH1pZigoTT0zREouZXhlYyhJKSkpe3ZhciBG
PTNETVsxXTtPPTNEQShNWzJdKTtTPTNEbmV3IFI9CmVnRXhwKCJvbiIrRisiPTNEW1xcJ1wiXVxc
cyoiK08rIlxccypbXFwnXCJdIiwiaSIpO2lmKChUPTNEcihTLFFbMF0pKSl7cmV0dT0Kcm4gVH1T
PTNEbmV3IFJlZ0V4cChPKTtpZigoVD0zRHIoUyxRKSkpe3JldHVybiBUfX1yZXR1cm4gbnVsbH1m
dW5jdGlvbiB6KE0pPQp7aWYoIU0uc3RhY2spe3JldHVybiBudWxsfXZhciBMPTNEL15ccyphdCAo
PzooKD86XFtvYmplY3Qgb2JqZWN0XF0pP1xTKyg/OiA9ClxbYXMgXFMrXF0pPykgKT9cKD8oKD86
ZmlsZXxodHRwfGh0dHBzKTouKj8pOihcZCspKD86OihcZCspKT9cKT9ccyokL2ksRj0zRD0KL15c
cyooXFMqKSg/OlwoKC4qPylcKSk/QCgoPzpmaWxlfGh0dHB8aHR0cHMpLio/KTooXGQrKSg/Ojoo
XGQrKSk/XHMqJC9pLE89Cj0zRE0uc3RhY2suc3BsaXQoIlxuIiksTj0zRFtdLEksSyxHPTNEL14o
LiopIGlzIHVuZGVmaW5lZCQvLmV4ZWMoTS5tZXNzYWdlKT0KO2Zvcih2YXIgSj0zRDAsSD0zRE8u
bGVuZ3RoO0o8SDsrK0ope2lmKChJPTNERi5leGVjKE9bSl0pKSl7Sz0zRHt1cmw6SVszXSxmPQp1
bmM6SVsxXXx8aCxhcmdzOklbMl0/SVsyXS5zcGxpdCgiLCIpOiIiLGxpbmU6K0lbNF0sY29sdW1u
OklbNV0/K0lbNV06bnVsbH09Cn1lbHNle2lmKChJPTNETC5leGVjKE9bSl0pKSl7Sz0zRHt1cmw6
SVsyXSxmdW5jOklbMV18fGgsbGluZTorSVszXSxjb2x1bW46ST0KWzRdPytJWzRdOm51bGx9fWVs
c2V7Y29udGludWV9fWlmKCFLLmZ1bmMmJksubGluZSl7Sy5mdW5jPTNEQyhLLnVybCxLLmxpbmUp
PQp9aWYoSy5saW5lKXtLLmNvbnRleHQ9M0RFKEsudXJsLEsubGluZSl9Ti5wdXNoKEspfWlmKE5b
MF0mJk5bMF0ubGluZSYmIU5bMF09Ci5jb2x1bW4mJkcpe05bMF0uY29sdW1uPTNERChHWzFdLE5b
MF0udXJsLE5bMF0ubGluZSl9aWYoIU4ubGVuZ3RoKXtyZXR1cm4gbj0KdWxsfXJldHVybnttb2Rl
OiJzdGFjayIsbmFtZTpNLm5hbWUsbWVzc2FnZTpNLm1lc3NhZ2UsdXJsOmRvY3VtZW50LmxvY2F0
aW9uPQouaHJlZixzdGFjazpOLHVzZXJhZ2VudDpuYXZpZ2F0b3IudXNlckFnZW50fX1mdW5jdGlv
biB2KEspe3ZhciBNPTNESy5zdGFja3Q9CnJhY2U7dmFyIEo9M0QvIGxpbmUgKFxkKyksIGNvbHVt
biAoXGQrKSBpbiAoPzo8YW5vbnltb3VzIGZ1bmN0aW9uOiAoW14+XSspPj0KfChbXlwpXSspKVwo
KC4qKVwpIGluICguKik6XHMqJC9pLE89M0RNLnNwbGl0KCJcbiIpLEw9M0RbXSxGO2Zvcih2YXIg
ST0zRDAsPQpHPTNETy5sZW5ndGg7STxHO0krPTNEMil7aWYoKEY9M0RKLmV4ZWMoT1tJXSkpKXt2
YXIgSD0zRHtsaW5lOitGWzFdLGNvbHVtbjo9CitGWzJdLGZ1bmM6RlszXXx8Rls0XSxhcmdzOkZb
NV0/Rls1XS5zcGxpdCgiLCIpOltdLHVybDpGWzZdfTtpZighSC5mdW5jJiZILj0KbGluZSl7SC5m
dW5jPTNEQyhILnVybCxILmxpbmUpfWlmKEgubGluZSl7dHJ5e0guY29udGV4dD0zREUoSC51cmws
SC5saW5lKX1jPQphdGNoKE4pe319aWYoIUguY29udGV4dCl7SC5jb250ZXh0PTNEW09bSSsxXV19
TC5wdXNoKEgpfX1pZighTC5sZW5ndGgpe3JldHU9CnJuIG51bGx9cmV0dXJue21vZGU6InN0YWNr
dHJhY2UiLG5hbWU6Sy5uYW1lLG1lc3NhZ2U6Sy5tZXNzYWdlLHVybDpkb2N1bWVudD0KLmxvY2F0
aW9uLmhyZWYsc3RhY2s6TCx1c2VyYWdlbnQ6bmF2aWdhdG9yLnVzZXJBZ2VudH19ZnVuY3Rpb24g
cyhYKXt2YXIgSD0KPTNEWC5tZXNzYWdlLnNwbGl0KCJcbiIpO2lmKEgubGVuZ3RoPDQpe3JldHVy
biBudWxsfXZhciBKPTNEL15ccypMaW5lIChcZCspPQogb2YgbGlua2VkIHNjcmlwdCAoKD86Zmls
ZXxodHRwfGh0dHBzKVxTKykoPzo6IGluIGZ1bmN0aW9uIChcUyspKT9ccyokL2ksST0KPTNEL15c
cypMaW5lIChcZCspIG9mIGlubGluZSMoXGQrKSBzY3JpcHQgaW4gKCg/OmZpbGV8aHR0cHxodHRw
cylcUyspKD86OiBpPQpuIGZ1bmN0aW9uIChcUyspKT9ccyokL2ksRj0zRC9eXHMqTGluZSAoXGQr
KSBvZiBmdW5jdGlvbiBzY3JpcHRccyokL2ksTz0zRFs9Cl0sTD0zRGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxXPTNEW10sUyxVLFYsVDtmb3IoVSBpbiBMKXtpZj0KKGMo
TCxVKSYmIUxbVV0uc3JjKXtXLnB1c2goTFtVXSl9fWZvcihVPTNEMixWPTNESC5sZW5ndGg7VTxW
O1UrPTNEMil7dmFyIFk9Cj0zRG51bGw7aWYoKFM9M0RKLmV4ZWMoSFtVXSkpKXtZPTNEe3VybDpT
WzJdLGZ1bmM6U1szXSxsaW5lOitTWzFdfX1lbHNle2lmKD0KKFM9M0RJLmV4ZWMoSFtVXSkpKXtZ
PTNEe3VybDpTWzNdLGZ1bmM6U1s0XX07dmFyIEc9M0QoK1NbMV0pO3ZhciBaPTNEV1tTWzJdPQot
MV07aWYoWil7VD0zRHcoWS51cmwpO2lmKFQpe1Q9M0RULmpvaW4oIlxuIik7dmFyIE49M0RULmlu
ZGV4T2YoWi5pbm5lclRleHQ9Cik7aWYoTj49M0QwKXtZLmxpbmU9M0RHK1Quc3Vic3RyaW5nKDAs
Tikuc3BsaXQoIlxuIikubGVuZ3RofX19fWVsc2V7aWYoKFM9Cj0zREYuZXhlYyhIW1VdKSkpe3Zh
ciBNPTNEai5sb2NhdGlvbi5ocmVmLnJlcGxhY2UoLyMuKiQvLCIiKSxQPTNEU1sxXTt2YXIgUj0K
PTNEbmV3IFJlZ0V4cChBKEhbVSsxXSkpO1Q9M0RyKFIsW01dKTtZPTNEe3VybDpNLGxpbmU6VD9U
LmxpbmU6UCxmdW5jOiIifX19PQp9aWYoWSl7aWYoIVkuZnVuYyl7WS5mdW5jPTNEQyhZLnVybCxZ
LmxpbmUpfXZhciBLPTNERShZLnVybCxZLmxpbmUpO3ZhciBRPQo9M0QoSz9LW01hdGguZmxvb3Io
Sy5sZW5ndGgvMildOm51bGwpO2lmKEsmJlEucmVwbGFjZSgvXlxzKi8sIiIpPTNEPTNEPTNESFs9
ClUrMV0ucmVwbGFjZSgvXlxzKi8sIiIpKXtZLmNvbnRleHQ9M0RLfWVsc2V7WS5jb250ZXh0PTNE
W0hbVSsxXV19Ty5wdXNoKFkpfT0KfWlmKCFPLmxlbmd0aCl7cmV0dXJuIG51bGx9cmV0dXJue21v
ZGU6Im11bHRpbGluZSIsbmFtZTpYLm5hbWUsbWVzc2FnZTpIWzBdPQosdXJsOmRvY3VtZW50Lmxv
Y2F0aW9uLmhyZWYsc3RhY2s6Tyx1c2VyYWdlbnQ6bmF2aWdhdG9yLnVzZXJBZ2VudH19ZnVuY3Rp
b249CiBCKEosSCxLLEkpe3ZhciBHPTNEe3VybDpILGxpbmU6S307aWYoRy51cmwmJkcubGluZSl7
Si5pbmNvbXBsZXRlPTNEZmFsc2U7aT0KZighRy5mdW5jKXtHLmZ1bmM9M0RDKEcudXJsLEcubGlu
ZSl9aWYoIUcuY29udGV4dCl7Ry5jb250ZXh0PTNERShHLnVybCxHLmxpPQpuZSl9dmFyIEY9M0Qv
ICcoW14nXSspJyAvLmV4ZWMoSSk7aWYoRil7Ry5jb2x1bW49M0REKEZbMV0sRy51cmwsRy5saW5l
KX1pZig9Ckouc3RhY2subGVuZ3RoPjApe2lmKEouc3RhY2tbMF0udXJsPTNEPTNEPTNERy51cmwp
e2lmKEouc3RhY2tbMF0ubGluZT0zRD0zRD0KPTNERy5saW5lKXtyZXR1cm4gZmFsc2V9ZWxzZXtp
ZighSi5zdGFja1swXS5saW5lJiZKLnN0YWNrWzBdLmZ1bmM9M0Q9M0Q9M0RHPQouZnVuYyl7Si5z
dGFja1swXS5saW5lPTNERy5saW5lO0ouc3RhY2tbMF0uY29udGV4dD0zREcuY29udGV4dDtyZXR1
cm4gZmFsc2U9Cn19fX1KLnN0YWNrLnVuc2hpZnQoRyk7Si5wYXJ0aWFsPTNEdHJ1ZTtyZXR1cm4g
dHJ1ZX1lbHNle0ouaW5jb21wbGV0ZT0zRHRydT0KZX1yZXR1cm4gZmFsc2V9ZnVuY3Rpb24gcShN
LEspe3ZhciBMPTNEL2Z1bmN0aW9uXHMrKFtfJGEtekEtWlx4QTAtXHVGRkZGXVtfPQokYS16QS1a
MC05XHhBMC1cdUZGRkZdKik/XHMqXCgvaSxOPTNEW10sRz0zRHt9LEk9M0RmYWxzZSxKLE8sRjtm
b3IodmFyIFE9M0Q9CnEuY2FsbGVyO1EmJiFJO1E9M0RRLmNhbGxlcil7aWYoUT0zRD0zRD0zRHV8
fFE9M0Q9M0Q9M0RmLnJlcG9ydCl7Y29udGludWV9Tz0KPTNEe3VybDpudWxsLGZ1bmM6aCxsaW5l
Om51bGwsY29sdW1uOm51bGx9O2lmKFEubmFtZSl7Ty5mdW5jPTNEUS5uYW1lfWVsc2V7PQppZigo
Sj0zREwuZXhlYyhRLnRvU3RyaW5nKCkpKSl7Ty5mdW5jPTNESlsxXX19aWYoKEY9M0R5KFEpKSl7
Ty51cmw9M0RGLnVybDs9Ck8ubGluZT0zREYubGluZTtpZihPLmZ1bmM9M0Q9M0Q9M0RoKXtPLmZ1
bmM9M0RDKE8udXJsLE8ubGluZSl9dmFyIEg9M0QvICcoWz0KXiddKyknIC8uZXhlYyhNLm1lc3Nh
Z2V8fE0uZGVzY3JpcHRpb24pO2lmKEgpe08uY29sdW1uPTNERChIWzFdLEYudXJsLEYubGluPQpl
KX19aWYoR1siIitRXSl7ST0zRHRydWV9ZWxzZXtHWyIiK1FdPTNEdHJ1ZX1OLnB1c2goTyl9aWYo
Syl7Ti5zcGxpY2UoMCxLKX09CnZhciBQPTNEe21vZGU6ImNhbGxlcnMiLG5hbWU6TS5uYW1lLG1l
c3NhZ2U6TS5tZXNzYWdlLHVybDpkb2N1bWVudC5sb2NhdGlvbj0KLmhyZWYsc3RhY2s6Tix1c2Vy
YWdlbnQ6bmF2aWdhdG9yLnVzZXJBZ2VudH07QihQLE0uc291cmNlVVJMfHxNLmZpbGVOYW1lLE0u
PQpsaW5lfHxNLmxpbmVOdW1iZXIsTS5tZXNzYWdlfHxNLmRlc2NyaXB0aW9uKTtyZXR1cm4gUH1m
dW5jdGlvbiB1KEcsSSl7dmFyIEY9Cj0zRG51bGw7ST0zRChJPTNEPTNEbnVsbD8wOitJKTt0cnl7
Rj0zRHYoRyk7aWYoRil7cmV0dXJuIEZ9fWNhdGNoKEgpe2lmKHgpez0KdGhyb3cgSH19dHJ5e0Y9
M0R6KEcpO2lmKEYpe3JldHVybiBGfX1jYXRjaChIKXtpZih4KXt0aHJvdyBIfX10cnl7Rj0zRHMo
Ryk7PQppZihGKXtyZXR1cm4gRn19Y2F0Y2goSCl7aWYoeCl7dGhyb3cgSH19dHJ5e0Y9M0RxKEcs
SSsxKTtpZihGKXtyZXR1cm4gRn19Y2E9CnRjaChIKXtpZih4KXt0aHJvdyBIfX1yZXR1cm57bW9k
ZToiZmFpbGVkIn19ZnVuY3Rpb24gbihHKXtHPTNEKEc9M0Q9M0RudWxsPz0KMDorRykrMTt0cnl7
dGhyb3cgbmV3IEVycm9yKCl9Y2F0Y2goRil7cmV0dXJuIHUoRixHKzEpfX11LmF1Z21lbnRTdGFj
a1RyYWNlPQpXaXRoSW5pdGlhbEVsZW1lbnQ9M0RCO3UuZ3Vlc3NGdW5jdGlvbk5hbWU9M0RDO3Uu
Z2F0aGVyQ29udGV4dD0zREU7dS5vZkNhbGw9CmVyPTNEbjtyZXR1cm4gdX0oKSk7KGZ1bmN0aW9u
IGcoKXt2YXIgbj0zRGZ1bmN0aW9uIG4ocSl7dmFyIHA9M0RqW3FdO2pbcV09Cj0zRGZ1bmN0aW9u
IG8oKXt2YXIgcj0zRG0uY2FsbChhcmd1bWVudHMpO3ZhciBzPTNEclswXTtpZih0eXBlb2Yocyk9
M0Q9M0Q9Cj0zRCJmdW5jdGlvbiIpe3JbMF09M0RmLndyYXAocyl9aWYocC5hcHBseSl7cmV0dXJu
IHAuYXBwbHkodGhpcyxyKX1lbHNle3JldD0KdXJuIHAoclswXSxyWzFdKX19fTtuKCJzZXRUaW1l
b3V0Iik7bigic2V0SW50ZXJ2YWwiKX0oKSk7aWYoIWYucmVtb3RlRmV0Y2hpPQpuZyl7Zi5yZW1v
dGVGZXRjaGluZz0zRHRydWV9aWYoIWYuY29sbGVjdFdpbmRvd0Vycm9ycyl7Zi5jb2xsZWN0V2lu
ZG93RXJyb3I9CnM9M0R0cnVlfWlmKCFmLmxpbmVzT2ZDb250ZXh0fHxmLmxpbmVzT2ZDb250ZXh0
PDEpe2YubGluZXNPZkNvbnRleHQ9M0QxMX1qLj0KVHJhY2VLaXQ9M0RmfSh3aW5kb3cpKTsKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpSZXBvc2l0b3J5IFVSTDogaHR0cHM6Ly9iaXRidWNr
ZXQub3JnL2dhbGF4eS9nYWxheHktY2VudHJhbC8KCi0tCgpUaGlzIGlzIGEgY29tbWl0IG5vdGlm
aWNhdGlvbiBmcm9tIGJpdGJ1Y2tldC5vcmcuIFlvdSBhcmUgcmVjZWl2aW5nCnRoaXMgYmVjYXVz
ZSB5b3UgaGF2ZSB0aGUgc2VydmljZSBlbmFibGVkLCBhZGRyZXNzaW5nIHRoZSByZWNpcGllbnQg
b2YKdGhpcyBlbWFpbC4K
1
0
commit/galaxy-central: carlfeberhard: UI: update jQuery to 1.11.2
by commits-noreply@bitbucket.org 21 Jan '15
by commits-noreply@bitbucket.org 21 Jan '15
21 Jan '15
1 new commit in galaxy-central:
https://bitbucket.org/galaxy/galaxy-central/commits/50dbed9f8f58/
Changeset: 50dbed9f8f58
User: carlfeberhard
Date: 2015-01-21 21:13:39+00:00
Summary: UI: update jQuery to 1.11.2
Affected #: 6 files
diff -r 17a9bf94a120ae6fc3249d29c077625a928a2e55 -r 50dbed9f8f583480c394d9c8a1ca81585482c063 client/GruntFile.js
--- a/client/GruntFile.js
+++ b/client/GruntFile.js
@@ -67,8 +67,8 @@
},
// where to move fetched bower components into the build structure (libName: [ bower-location, libs-location ])
libraryLocations : {
- //"jquery": [ "dist/jquery.js", "jquery/jquery.js" ],
- //"jquery-migrate-official": [ "index.js", "jquery/jquery.migrate.js" ],
+ "jquery": [ "dist/jquery.js", "jquery/jquery.js" ],
+ "jquery-migrate-official": [ "index.js", "jquery/jquery.migrate.js" ],
// these need to be updated and tested
//"traceKit": [ "tracekit.js", "tracekit.js" ],
diff -r 17a9bf94a120ae6fc3249d29c077625a928a2e55 -r 50dbed9f8f583480c394d9c8a1ca81585482c063 client/galaxy/scripts/libs/jquery/jquery.js
--- a/client/galaxy/scripts/libs/jquery/jquery.js
+++ b/client/galaxy/scripts/libs/jquery/jquery.js
@@ -1,5 +1,5 @@
/*!
- * jQuery JavaScript Library v1.11.1
+ * jQuery JavaScript Library v1.11.2
* http://jquery.com/
*
* Includes Sizzle.js
@@ -9,7 +9,7 @@
* Released under the MIT license
* http://jquery.org/license
*
- * Date: 2014-05-01T17:42Z
+ * Date: 2014-12-17T15:27Z
*/
(function( global, factory ) {
@@ -64,7 +64,7 @@
var
- version = "1.11.1",
+ version = "1.11.2",
// Define a local copy of jQuery
jQuery = function( selector, context ) {
@@ -269,7 +269,8 @@
// parseFloat NaNs numeric-cast false positives (null|true|false|"")
// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
// subtraction forces infinities to NaN
- return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0;
+ // adding 1 corrects loss of precision from parseFloat (#15100)
+ return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;
},
isEmptyObject: function( obj ) {
@@ -584,14 +585,14 @@
}
var Sizzle =
/*!
- * Sizzle CSS Selector Engine v1.10.19
+ * Sizzle CSS Selector Engine v2.2.0-pre
* http://sizzlejs.com/
*
- * Copyright 2013 jQuery Foundation, Inc. and other contributors
+ * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors
* Released under the MIT license
* http://jquery.org/license
*
- * Date: 2014-04-18
+ * Date: 2014-12-16
*/
(function( window ) {
@@ -618,7 +619,7 @@
contains,
// Instance-specific data
- expando = "sizzle" + -(new Date()),
+ expando = "sizzle" + 1 * new Date(),
preferredDoc = window.document,
dirruns = 0,
done = 0,
@@ -633,7 +634,6 @@
},
// General-purpose constants
- strundefined = typeof undefined,
MAX_NEGATIVE = 1 << 31,
// Instance methods
@@ -643,12 +643,13 @@
push_native = arr.push,
push = arr.push,
slice = arr.slice,
- // Use a stripped-down indexOf if we can't use a native one
- indexOf = arr.indexOf || function( elem ) {
+ // Use a stripped-down indexOf as it's faster than native
+ // http://jsperf.com/thor-indexof-vs-for/5
+ indexOf = function( list, elem ) {
var i = 0,
- len = this.length;
+ len = list.length;
for ( ; i < len; i++ ) {
- if ( this[i] === elem ) {
+ if ( list[i] === elem ) {
return i;
}
}
@@ -688,6 +689,7 @@
")\\)|)",
// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+ rwhitespace = new RegExp( whitespace + "+", "g" ),
rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
@@ -739,6 +741,14 @@
String.fromCharCode( high + 0x10000 ) :
// Supplemental Plane codepoint (surrogate pair)
String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+ },
+
+ // Used for iframes
+ // See setDocument()
+ // Removing the function wrapper causes a "Permission Denied"
+ // error in IE
+ unloadHandler = function() {
+ setDocument();
};
// Optimize for push.apply( _, NodeList )
@@ -781,19 +791,18 @@
context = context || document;
results = results || [];
-
- if ( !selector || typeof selector !== "string" ) {
+ nodeType = context.nodeType;
+
+ if ( typeof selector !== "string" || !selector ||
+ nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
return results;
}
- if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
- return [];
- }
-
- if ( documentIsHTML && !seed ) {
-
- // Shortcuts
- if ( (match = rquickExpr.exec( selector )) ) {
+ if ( !seed && documentIsHTML ) {
+
+ // Try to shortcut find operations when possible (e.g., not under DocumentFragment)
+ if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
// Speed-up: Sizzle("#ID")
if ( (m = match[1]) ) {
if ( nodeType === 9 ) {
@@ -825,7 +834,7 @@
return results;
// Speed-up: Sizzle(".CLASS")
- } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
+ } else if ( (m = match[3]) && support.getElementsByClassName ) {
push.apply( results, context.getElementsByClassName( m ) );
return results;
}
@@ -835,7 +844,7 @@
if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
nid = old = expando;
newContext = context;
- newSelector = nodeType === 9 && selector;
+ newSelector = nodeType !== 1 && selector;
// qSA works strangely on Element-rooted queries
// We can work around this by specifying an extra ID on the root
@@ -1022,7 +1031,7 @@
* @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
*/
function testContext( context ) {
- return context && typeof context.getElementsByTagName !== strundefined && context;
+ return context && typeof context.getElementsByTagName !== "undefined" && context;
}
// Expose support vars for convenience
@@ -1046,9 +1055,8 @@
* @returns {Object} Returns the current document
*/
setDocument = Sizzle.setDocument = function( node ) {
- var hasCompare,
- doc = node ? node.ownerDocument || node : preferredDoc,
- parent = doc.defaultView;
+ var hasCompare, parent,
+ doc = node ? node.ownerDocument || node : preferredDoc;
// If no document and documentElement is available, return
if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
@@ -1058,9 +1066,7 @@
// Set our document
document = doc;
docElem = doc.documentElement;
-
- // Support tests
- documentIsHTML = !isXML( doc );
+ parent = doc.defaultView;
// Support: IE>8
// If iframe document is assigned to "document" variable and if iframe has been reloaded,
@@ -1069,21 +1075,22 @@
if ( parent && parent !== parent.top ) {
// IE11 does not have attachEvent, so all must suffer
if ( parent.addEventListener ) {
- parent.addEventListener( "unload", function() {
- setDocument();
- }, false );
+ parent.addEventListener( "unload", unloadHandler, false );
} else if ( parent.attachEvent ) {
- parent.attachEvent( "onunload", function() {
- setDocument();
- });
- }
- }
+ parent.attachEvent( "onunload", unloadHandler );
+ }
+ }
+
+ /* Support tests
+ ---------------------------------------------------------------------- */
+ documentIsHTML = !isXML( doc );
/* Attributes
---------------------------------------------------------------------- */
// Support: IE<8
- // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
+ // Verify that getAttribute really returns attributes and not properties
+ // (excepting IE8 booleans)
support.attributes = assert(function( div ) {
div.className = "i";
return !div.getAttribute("className");
@@ -1098,17 +1105,8 @@
return !div.getElementsByTagName("*").length;
});
- // Check if getElementsByClassName can be trusted
- support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) {
- div.innerHTML = "<div class='a'></div><div class='a i'></div>";
-
- // Support: Safari<4
- // Catch class over-caching
- div.firstChild.className = "i";
- // Support: Opera<10
- // Catch gEBCN failure to find non-leading classes
- return div.getElementsByClassName("i").length === 2;
- });
+ // Support: IE<9
+ support.getElementsByClassName = rnative.test( doc.getElementsByClassName );
// Support: IE<10
// Check if getElementById returns elements by name
@@ -1122,7 +1120,7 @@
// ID find and filter
if ( support.getById ) {
Expr.find["ID"] = function( id, context ) {
- if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
+ if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
var m = context.getElementById( id );
// Check parentNode to catch when Blackberry 4.6 returns
// nodes that are no longer in the document #6963
@@ -1143,7 +1141,7 @@
Expr.filter["ID"] = function( id ) {
var attrId = id.replace( runescape, funescape );
return function( elem ) {
- var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
return node && node.value === attrId;
};
};
@@ -1152,14 +1150,20 @@
// Tag
Expr.find["TAG"] = support.getElementsByTagName ?
function( tag, context ) {
- if ( typeof context.getElementsByTagName !== strundefined ) {
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
return context.getElementsByTagName( tag );
+
+ // DocumentFragment nodes don't have gEBTN
+ } else if ( support.qsa ) {
+ return context.querySelectorAll( tag );
}
} :
+
function( tag, context ) {
var elem,
tmp = [],
i = 0,
+ // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
results = context.getElementsByTagName( tag );
// Filter out possible comments
@@ -1177,7 +1181,7 @@
// Class
Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
- if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
+ if ( documentIsHTML ) {
return context.getElementsByClassName( className );
}
};
@@ -1206,13 +1210,15 @@
// setting a boolean content attribute,
// since its presence should be enough
// http://bugs.jquery.com/ticket/12359
- div.innerHTML = "<select msallowclip=''><option selected=''></option></select>";
+ docElem.appendChild( div ).innerHTML = "<a id='" + expando + "'></a>" +
+ "<select id='" + expando + "-\f]' msallowcapture=''>" +
+ "<option selected=''></option></select>";
// Support: IE8, Opera 11-12.16
// Nothing should be selected when empty strings follow ^= or $= or *=
// The test attribute must be unknown in Opera but "safe" for WinRT
// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
- if ( div.querySelectorAll("[msallowclip^='']").length ) {
+ if ( div.querySelectorAll("[msallowcapture^='']").length ) {
rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
}
@@ -1222,12 +1228,24 @@
rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
}
+ // Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+
+ if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+ rbuggyQSA.push("~=");
+ }
+
// Webkit/Opera - :checked should return selected option elements
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
// IE8 throws error here and will not see later tests
if ( !div.querySelectorAll(":checked").length ) {
rbuggyQSA.push(":checked");
}
+
+ // Support: Safari 8+, iOS 8+
+ // https://bugs.webkit.org/show_bug.cgi?id=136851
+ // In-page `selector#id sibing-combinator selector` fails
+ if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) {
+ rbuggyQSA.push(".#.+[+~]");
+ }
});
assert(function( div ) {
@@ -1344,7 +1362,7 @@
// Maintain original order
return sortInput ?
- ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
0;
}
@@ -1371,7 +1389,7 @@
aup ? -1 :
bup ? 1 :
sortInput ?
- ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
+ ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
0;
// If the nodes are siblings, we can do a quick check
@@ -1434,7 +1452,7 @@
elem.document && elem.document.nodeType !== 11 ) {
return ret;
}
- } catch(e) {}
+ } catch (e) {}
}
return Sizzle( expr, document, null, [ elem ] ).length > 0;
@@ -1653,7 +1671,7 @@
return pattern ||
(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
classCache( className, function( elem ) {
- return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
+ return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
});
},
@@ -1675,7 +1693,7 @@
operator === "^=" ? check && result.indexOf( check ) === 0 :
operator === "*=" ? check && result.indexOf( check ) > -1 :
operator === "$=" ? check && result.slice( -check.length ) === check :
- operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
+ operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
false;
};
@@ -1795,7 +1813,7 @@
matched = fn( seed, argument ),
i = matched.length;
while ( i-- ) {
- idx = indexOf.call( seed, matched[i] );
+ idx = indexOf( seed, matched[i] );
seed[ idx ] = !( matches[ idx ] = matched[i] );
}
}) :
@@ -1834,6 +1852,8 @@
function( elem, context, xml ) {
input[0] = elem;
matcher( input, null, xml, results );
+ // Don't keep the element (issue #299)
+ input[0] = null;
return !results.pop();
};
}),
@@ -1845,6 +1865,7 @@
}),
"contains": markFunction(function( text ) {
+ text = text.replace( runescape, funescape );
return function( elem ) {
return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
};
@@ -2266,7 +2287,7 @@
i = matcherOut.length;
while ( i-- ) {
if ( (elem = matcherOut[i]) &&
- (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
+ (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
seed[temp] = !(results[temp] = elem);
}
@@ -2301,13 +2322,16 @@
return elem === checkContext;
}, implicitRelative, true ),
matchAnyContext = addCombinator( function( elem ) {
- return indexOf.call( checkContext, elem ) > -1;
+ return indexOf( checkContext, elem ) > -1;
}, implicitRelative, true ),
matchers = [ function( elem, context, xml ) {
- return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+ var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
(checkContext = context).nodeType ?
matchContext( elem, context, xml ) :
matchAnyContext( elem, context, xml ) );
+ // Avoid hanging onto element (issue #299)
+ checkContext = null;
+ return ret;
} ];
for ( ; i < len; i++ ) {
@@ -2557,7 +2581,7 @@
// Sort stability
support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
-// Support: Chrome<14
+// Support: Chrome 14-35+
// Always assume duplicates if they aren't passed to the comparison function
support.detectDuplicates = !!hasDuplicate;
@@ -6115,7 +6139,14 @@
if ( window.getComputedStyle ) {
getStyles = function( elem ) {
- return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
+ // Support: IE<=11+, Firefox<=30+ (#15098, #14150)
+ // IE throws on elements created in popups
+ // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
+ if ( elem.ownerDocument.defaultView.opener ) {
+ return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
+ }
+
+ return window.getComputedStyle( elem, null );
};
curCSS = function( elem, name, computed ) {
@@ -6363,6 +6394,8 @@
reliableMarginRightVal =
!parseFloat( ( window.getComputedStyle( contents, null ) || {} ).marginRight );
+
+ div.removeChild( contents );
}
// Support: IE8
@@ -9070,7 +9103,8 @@
}
// We can fire global events as of now if asked to
- fireGlobals = s.global;
+ // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
+ fireGlobals = jQuery.event && s.global;
// Watch for a new set of requests
if ( fireGlobals && jQuery.active++ === 0 ) {
@@ -9329,13 +9363,6 @@
};
});
-// Attach a bunch of functions for handling common AJAX events
-jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
- jQuery.fn[ type ] = function( fn ) {
- return this.on( type, fn );
- };
-});
-
jQuery._evalUrl = function( url ) {
return jQuery.ajax({
@@ -9561,8 +9588,9 @@
// Support: IE<10
// Open requests must be manually aborted on unload (#5280)
-if ( window.ActiveXObject ) {
- jQuery( window ).on( "unload", function() {
+// See https://support.microsoft.com/kb/2856746 for more info
+if ( window.attachEvent ) {
+ window.attachEvent( "onunload", function() {
for ( var key in xhrCallbacks ) {
xhrCallbacks[ key ]( undefined, true );
}
@@ -9996,6 +10024,16 @@
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
+ jQuery.fn[ type ] = function( fn ) {
+ return this.on( type, fn );
+ };
+});
+
+
+
+
jQuery.expr.filters.animated = function( elem ) {
return jQuery.grep(jQuery.timers, function( fn ) {
return elem === fn.elem;
diff -r 17a9bf94a120ae6fc3249d29c077625a928a2e55 -r 50dbed9f8f583480c394d9c8a1ca81585482c063 client/galaxy/scripts/libs/jquery/jquery.migrate.js
--- a/client/galaxy/scripts/libs/jquery/jquery.migrate.js
+++ b/client/galaxy/scripts/libs/jquery/jquery.migrate.js
@@ -1,521 +1,521 @@
-/*!
- * jQuery Migrate - v1.2.1 - 2013-05-08
- * https://github.com/jquery/jquery-migrate
- * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors; Licensed MIT
- */
-(function( jQuery, window, undefined ) {
-// See http://bugs.jquery.com/ticket/13335
-// "use strict";
-
-
-var warnedAbout = {};
-
-// List of warnings already given; public read only
-jQuery.migrateWarnings = [];
-
-// Set to true to prevent console output; migrateWarnings still maintained
-// jQuery.migrateMute = false;
-
-// Show a message on the console so devs know we're active
-if ( !jQuery.migrateMute && window.console && window.console.log ) {
- window.console.log("JQMIGRATE: Logging is active");
-}
-
-// Set to false to disable traces that appear with warnings
-if ( jQuery.migrateTrace === undefined ) {
- jQuery.migrateTrace = true;
-}
-
-// Forget any warnings we've already given; public
-jQuery.migrateReset = function() {
- warnedAbout = {};
- jQuery.migrateWarnings.length = 0;
-};
-
-function migrateWarn( msg) {
- var console = window.console;
- if ( !warnedAbout[ msg ] ) {
- warnedAbout[ msg ] = true;
- jQuery.migrateWarnings.push( msg );
- if ( console && console.warn && !jQuery.migrateMute ) {
- console.warn( "JQMIGRATE: " + msg );
- if ( jQuery.migrateTrace && console.trace ) {
- console.trace();
- }
- }
- }
-}
-
-function migrateWarnProp( obj, prop, value, msg ) {
- if ( Object.defineProperty ) {
- // On ES5 browsers (non-oldIE), warn if the code tries to get prop;
- // allow property to be overwritten in case some other plugin wants it
- try {
- Object.defineProperty( obj, prop, {
- configurable: true,
- enumerable: true,
- get: function() {
- migrateWarn( msg );
- return value;
- },
- set: function( newValue ) {
- migrateWarn( msg );
- value = newValue;
- }
- });
- return;
- } catch( err ) {
- // IE8 is a dope about Object.defineProperty, can't warn there
- }
- }
-
- // Non-ES5 (or broken) browser; just set the property
- jQuery._definePropertyBroken = true;
- obj[ prop ] = value;
-}
-
-if ( document.compatMode === "BackCompat" ) {
- // jQuery has never supported or tested Quirks Mode
- migrateWarn( "jQuery is not compatible with Quirks Mode" );
-}
-
-
-var attrFn = jQuery( "<input/>", { size: 1 } ).attr("size") && jQuery.attrFn,
- oldAttr = jQuery.attr,
- valueAttrGet = jQuery.attrHooks.value && jQuery.attrHooks.value.get ||
- function() { return null; },
- valueAttrSet = jQuery.attrHooks.value && jQuery.attrHooks.value.set ||
- function() { return undefined; },
- rnoType = /^(?:input|button)$/i,
- rnoAttrNodeType = /^[238]$/,
- rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
- ruseDefault = /^(?:checked|selected)$/i;
-
-// jQuery.attrFn
-migrateWarnProp( jQuery, "attrFn", attrFn || {}, "jQuery.attrFn is deprecated" );
-
-jQuery.attr = function( elem, name, value, pass ) {
- var lowerName = name.toLowerCase(),
- nType = elem && elem.nodeType;
-
- if ( pass ) {
- // Since pass is used internally, we only warn for new jQuery
- // versions where there isn't a pass arg in the formal params
- if ( oldAttr.length < 4 ) {
- migrateWarn("jQuery.fn.attr( props, pass ) is deprecated");
- }
- if ( elem && !rnoAttrNodeType.test( nType ) &&
- (attrFn ? name in attrFn : jQuery.isFunction(jQuery.fn[name])) ) {
- return jQuery( elem )[ name ]( value );
- }
- }
-
- // Warn if user tries to set `type`, since it breaks on IE 6/7/8; by checking
- // for disconnected elements we don't warn on $( "<button>", { type: "button" } ).
- if ( name === "type" && value !== undefined && rnoType.test( elem.nodeName ) && elem.parentNode ) {
- migrateWarn("Can't change the 'type' of an input or button in IE 6/7/8");
- }
-
- // Restore boolHook for boolean property/attribute synchronization
- if ( !jQuery.attrHooks[ lowerName ] && rboolean.test( lowerName ) ) {
- jQuery.attrHooks[ lowerName ] = {
- get: function( elem, name ) {
- // Align boolean attributes with corresponding properties
- // Fall back to attribute presence where some booleans are not supported
- var attrNode,
- property = jQuery.prop( elem, name );
- return property === true || typeof property !== "boolean" &&
- ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
-
- name.toLowerCase() :
- undefined;
- },
- set: function( elem, value, name ) {
- var propName;
- if ( value === false ) {
- // Remove boolean attributes when set to false
- jQuery.removeAttr( elem, name );
- } else {
- // value is true since we know at this point it's type boolean and not false
- // Set boolean attributes to the same name and set the DOM property
- propName = jQuery.propFix[ name ] || name;
- if ( propName in elem ) {
- // Only set the IDL specifically if it already exists on the element
- elem[ propName ] = true;
- }
-
- elem.setAttribute( name, name.toLowerCase() );
- }
- return name;
- }
- };
-
- // Warn only for attributes that can remain distinct from their properties post-1.9
- if ( ruseDefault.test( lowerName ) ) {
- migrateWarn( "jQuery.fn.attr('" + lowerName + "') may use property instead of attribute" );
- }
- }
-
- return oldAttr.call( jQuery, elem, name, value );
-};
-
-// attrHooks: value
-jQuery.attrHooks.value = {
- get: function( elem, name ) {
- var nodeName = ( elem.nodeName || "" ).toLowerCase();
- if ( nodeName === "button" ) {
- return valueAttrGet.apply( this, arguments );
- }
- if ( nodeName !== "input" && nodeName !== "option" ) {
- migrateWarn("jQuery.fn.attr('value') no longer gets properties");
- }
- return name in elem ?
- elem.value :
- null;
- },
- set: function( elem, value ) {
- var nodeName = ( elem.nodeName || "" ).toLowerCase();
- if ( nodeName === "button" ) {
- return valueAttrSet.apply( this, arguments );
- }
- if ( nodeName !== "input" && nodeName !== "option" ) {
- migrateWarn("jQuery.fn.attr('value', val) no longer sets properties");
- }
- // Does not return so that setAttribute is also used
- elem.value = value;
- }
-};
-
-
-var matched, browser,
- oldInit = jQuery.fn.init,
- oldParseJSON = jQuery.parseJSON,
- // Note: XSS check is done below after string is trimmed
- rquickExpr = /^([^<]*)(<[\w\W]+>)([^>]*)$/;
-
-// $(html) "looks like html" rule change
-jQuery.fn.init = function( selector, context, rootjQuery ) {
- var match;
-
- if ( selector && typeof selector === "string" && !jQuery.isPlainObject( context ) &&
- (match = rquickExpr.exec( jQuery.trim( selector ) )) && match[ 0 ] ) {
- // This is an HTML string according to the "old" rules; is it still?
- if ( selector.charAt( 0 ) !== "<" ) {
- migrateWarn("$(html) HTML strings must start with '<' character");
- }
- if ( match[ 3 ] ) {
- migrateWarn("$(html) HTML text after last tag is ignored");
- }
- // Consistently reject any HTML-like string starting with a hash (#9521)
- // Note that this may break jQuery 1.6.x code that otherwise would work.
- if ( match[ 0 ].charAt( 0 ) === "#" ) {
- migrateWarn("HTML string cannot start with a '#' character");
- jQuery.error("JQMIGRATE: Invalid selector string (XSS)");
- }
- // Now process using loose rules; let pre-1.8 play too
- if ( context && context.context ) {
- // jQuery object as context; parseHTML expects a DOM object
- context = context.context;
- }
- if ( jQuery.parseHTML ) {
- return oldInit.call( this, jQuery.parseHTML( match[ 2 ], context, true ),
- context, rootjQuery );
- }
- }
- return oldInit.apply( this, arguments );
-};
-jQuery.fn.init.prototype = jQuery.fn;
-
-// Let $.parseJSON(falsy_value) return null
-jQuery.parseJSON = function( json ) {
- if ( !json && json !== null ) {
- migrateWarn("jQuery.parseJSON requires a valid JSON string");
- return null;
- }
- return oldParseJSON.apply( this, arguments );
-};
-
-jQuery.uaMatch = function( ua ) {
- ua = ua.toLowerCase();
-
- var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
- /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
- /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
- /(msie) ([\w.]+)/.exec( ua ) ||
- ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
- [];
-
- return {
- browser: match[ 1 ] || "",
- version: match[ 2 ] || "0"
- };
-};
-
-// Don't clobber any existing jQuery.browser in case it's different
-if ( !jQuery.browser ) {
- matched = jQuery.uaMatch( navigator.userAgent );
- browser = {};
-
- if ( matched.browser ) {
- browser[ matched.browser ] = true;
- browser.version = matched.version;
- }
-
- // Chrome is Webkit, but Webkit is also Safari.
- if ( browser.chrome ) {
- browser.webkit = true;
- } else if ( browser.webkit ) {
- browser.safari = true;
- }
-
- jQuery.browser = browser;
-}
-
-// Warn if the code tries to get jQuery.browser
-migrateWarnProp( jQuery, "browser", jQuery.browser, "jQuery.browser is deprecated" );
-
-jQuery.sub = function() {
- function jQuerySub( selector, context ) {
- return new jQuerySub.fn.init( selector, context );
- }
- jQuery.extend( true, jQuerySub, this );
- jQuerySub.superclass = this;
- jQuerySub.fn = jQuerySub.prototype = this();
- jQuerySub.fn.constructor = jQuerySub;
- jQuerySub.sub = this.sub;
- jQuerySub.fn.init = function init( selector, context ) {
- if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
- context = jQuerySub( context );
- }
-
- return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
- };
- jQuerySub.fn.init.prototype = jQuerySub.fn;
- var rootjQuerySub = jQuerySub(document);
- migrateWarn( "jQuery.sub() is deprecated" );
- return jQuerySub;
-};
-
-
-// Ensure that $.ajax gets the new parseJSON defined in core.js
-jQuery.ajaxSetup({
- converters: {
- "text json": jQuery.parseJSON
- }
-});
-
-
-var oldFnData = jQuery.fn.data;
-
-jQuery.fn.data = function( name ) {
- var ret, evt,
- elem = this[0];
-
- // Handles 1.7 which has this behavior and 1.8 which doesn't
- if ( elem && name === "events" && arguments.length === 1 ) {
- ret = jQuery.data( elem, name );
- evt = jQuery._data( elem, name );
- if ( ( ret === undefined || ret === evt ) && evt !== undefined ) {
- migrateWarn("Use of jQuery.fn.data('events') is deprecated");
- return evt;
- }
- }
- return oldFnData.apply( this, arguments );
-};
-
-
-var rscriptType = /\/(java|ecma)script/i,
- oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack;
-
-jQuery.fn.andSelf = function() {
- migrateWarn("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()");
- return oldSelf.apply( this, arguments );
-};
-
-// Since jQuery.clean is used internally on older versions, we only shim if it's missing
-if ( !jQuery.clean ) {
- jQuery.clean = function( elems, context, fragment, scripts ) {
- // Set context per 1.8 logic
- context = context || document;
- context = !context.nodeType && context[0] || context;
- context = context.ownerDocument || context;
-
- migrateWarn("jQuery.clean() is deprecated");
-
- var i, elem, handleScript, jsTags,
- ret = [];
-
- jQuery.merge( ret, jQuery.buildFragment( elems, context ).childNodes );
-
- // Complex logic lifted directly from jQuery 1.8
- if ( fragment ) {
- // Special handling of each script element
- handleScript = function( elem ) {
- // Check if we consider it executable
- if ( !elem.type || rscriptType.test( elem.type ) ) {
- // Detach the script and store it in the scripts array (if provided) or the fragment
- // Return truthy to indicate that it has been handled
- return scripts ?
- scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :
- fragment.appendChild( elem );
- }
- };
-
- for ( i = 0; (elem = ret[i]) != null; i++ ) {
- // Check if we're done after handling an executable script
- if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) {
- // Append to fragment and handle embedded scripts
- fragment.appendChild( elem );
- if ( typeof elem.getElementsByTagName !== "undefined" ) {
- // handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration
- jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript );
-
- // Splice the scripts into ret after their former ancestor and advance our index beyond them
- ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
- i += jsTags.length;
- }
- }
- }
- }
-
- return ret;
- };
-}
-
-var eventAdd = jQuery.event.add,
- eventRemove = jQuery.event.remove,
- eventTrigger = jQuery.event.trigger,
- oldToggle = jQuery.fn.toggle,
- oldLive = jQuery.fn.live,
- oldDie = jQuery.fn.die,
- ajaxEvents = "ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",
- rajaxEvent = new RegExp( "\\b(?:" + ajaxEvents + ")\\b" ),
- rhoverHack = /(?:^|\s)hover(\.\S+|)\b/,
- hoverHack = function( events ) {
- if ( typeof( events ) !== "string" || jQuery.event.special.hover ) {
- return events;
- }
- if ( rhoverHack.test( events ) ) {
- migrateWarn("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'");
- }
- return events && events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
- };
-
-// Event props removed in 1.9, put them back if needed; no practical way to warn them
-if ( jQuery.event.props && jQuery.event.props[ 0 ] !== "attrChange" ) {
- jQuery.event.props.unshift( "attrChange", "attrName", "relatedNode", "srcElement" );
-}
-
-// Undocumented jQuery.event.handle was "deprecated" in jQuery 1.7
-if ( jQuery.event.dispatch ) {
- migrateWarnProp( jQuery.event, "handle", jQuery.event.dispatch, "jQuery.event.handle is undocumented and deprecated" );
-}
-
-// Support for 'hover' pseudo-event and ajax event warnings
-jQuery.event.add = function( elem, types, handler, data, selector ){
- if ( elem !== document && rajaxEvent.test( types ) ) {
- migrateWarn( "AJAX events should be attached to document: " + types );
- }
- eventAdd.call( this, elem, hoverHack( types || "" ), handler, data, selector );
-};
-jQuery.event.remove = function( elem, types, handler, selector, mappedTypes ){
- eventRemove.call( this, elem, hoverHack( types ) || "", handler, selector, mappedTypes );
-};
-
-jQuery.fn.error = function() {
- var args = Array.prototype.slice.call( arguments, 0);
- migrateWarn("jQuery.fn.error() is deprecated");
- args.splice( 0, 0, "error" );
- if ( arguments.length ) {
- return this.bind.apply( this, args );
- }
- // error event should not bubble to window, although it does pre-1.7
- this.triggerHandler.apply( this, args );
- return this;
-};
-
-jQuery.fn.toggle = function( fn, fn2 ) {
-
- // Don't mess with animation or css toggles
- if ( !jQuery.isFunction( fn ) || !jQuery.isFunction( fn2 ) ) {
- return oldToggle.apply( this, arguments );
- }
- migrateWarn("jQuery.fn.toggle(handler, handler...) is deprecated");
-
- // Save reference to arguments for access in closure
- var args = arguments,
- guid = fn.guid || jQuery.guid++,
- i = 0,
- toggler = function( event ) {
- // Figure out which function to execute
- var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
- jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
-
- // Make sure that clicks stop
- event.preventDefault();
-
- // and execute the function
- return args[ lastToggle ].apply( this, arguments ) || false;
- };
-
- // link all the functions, so any of them can unbind this click handler
- toggler.guid = guid;
- while ( i < args.length ) {
- args[ i++ ].guid = guid;
- }
-
- return this.click( toggler );
-};
-
-jQuery.fn.live = function( types, data, fn ) {
- migrateWarn("jQuery.fn.live() is deprecated");
- if ( oldLive ) {
- return oldLive.apply( this, arguments );
- }
- jQuery( this.context ).on( types, this.selector, data, fn );
- return this;
-};
-
-jQuery.fn.die = function( types, fn ) {
- migrateWarn("jQuery.fn.die() is deprecated");
- if ( oldDie ) {
- return oldDie.apply( this, arguments );
- }
- jQuery( this.context ).off( types, this.selector || "**", fn );
- return this;
-};
-
-// Turn global events into document-triggered events
-jQuery.event.trigger = function( event, data, elem, onlyHandlers ){
- if ( !elem && !rajaxEvent.test( event ) ) {
- migrateWarn( "Global events are undocumented and deprecated" );
- }
- return eventTrigger.call( this, event, data, elem || document, onlyHandlers );
-};
-jQuery.each( ajaxEvents.split("|"),
- function( _, name ) {
- jQuery.event.special[ name ] = {
- setup: function() {
- var elem = this;
-
- // The document needs no shimming; must be !== for oldIE
- if ( elem !== document ) {
- jQuery.event.add( document, name + "." + jQuery.guid, function() {
- jQuery.event.trigger( name, null, elem, true );
- });
- jQuery._data( this, name, jQuery.guid++ );
- }
- return false;
- },
- teardown: function() {
- if ( this !== document ) {
- jQuery.event.remove( document, name + "." + jQuery._data( this, name ) );
- }
- return false;
- }
- };
- }
-);
-
-
-})( jQuery, window );
+/*!
+ * jQuery Migrate - v1.2.1 - 2013-05-08
+ * https://github.com/jquery/jquery-migrate
+ * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors; Licensed MIT
+ */
+(function( jQuery, window, undefined ) {
+// See http://bugs.jquery.com/ticket/13335
+// "use strict";
+
+
+var warnedAbout = {};
+
+// List of warnings already given; public read only
+jQuery.migrateWarnings = [];
+
+// Set to true to prevent console output; migrateWarnings still maintained
+// jQuery.migrateMute = false;
+
+// Show a message on the console so devs know we're active
+if ( !jQuery.migrateMute && window.console && window.console.log ) {
+ window.console.log("JQMIGRATE: Logging is active");
+}
+
+// Set to false to disable traces that appear with warnings
+if ( jQuery.migrateTrace === undefined ) {
+ jQuery.migrateTrace = true;
+}
+
+// Forget any warnings we've already given; public
+jQuery.migrateReset = function() {
+ warnedAbout = {};
+ jQuery.migrateWarnings.length = 0;
+};
+
+function migrateWarn( msg) {
+ var console = window.console;
+ if ( !warnedAbout[ msg ] ) {
+ warnedAbout[ msg ] = true;
+ jQuery.migrateWarnings.push( msg );
+ if ( console && console.warn && !jQuery.migrateMute ) {
+ console.warn( "JQMIGRATE: " + msg );
+ if ( jQuery.migrateTrace && console.trace ) {
+ console.trace();
+ }
+ }
+ }
+}
+
+function migrateWarnProp( obj, prop, value, msg ) {
+ if ( Object.defineProperty ) {
+ // On ES5 browsers (non-oldIE), warn if the code tries to get prop;
+ // allow property to be overwritten in case some other plugin wants it
+ try {
+ Object.defineProperty( obj, prop, {
+ configurable: true,
+ enumerable: true,
+ get: function() {
+ migrateWarn( msg );
+ return value;
+ },
+ set: function( newValue ) {
+ migrateWarn( msg );
+ value = newValue;
+ }
+ });
+ return;
+ } catch( err ) {
+ // IE8 is a dope about Object.defineProperty, can't warn there
+ }
+ }
+
+ // Non-ES5 (or broken) browser; just set the property
+ jQuery._definePropertyBroken = true;
+ obj[ prop ] = value;
+}
+
+if ( document.compatMode === "BackCompat" ) {
+ // jQuery has never supported or tested Quirks Mode
+ migrateWarn( "jQuery is not compatible with Quirks Mode" );
+}
+
+
+var attrFn = jQuery( "<input/>", { size: 1 } ).attr("size") && jQuery.attrFn,
+ oldAttr = jQuery.attr,
+ valueAttrGet = jQuery.attrHooks.value && jQuery.attrHooks.value.get ||
+ function() { return null; },
+ valueAttrSet = jQuery.attrHooks.value && jQuery.attrHooks.value.set ||
+ function() { return undefined; },
+ rnoType = /^(?:input|button)$/i,
+ rnoAttrNodeType = /^[238]$/,
+ rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
+ ruseDefault = /^(?:checked|selected)$/i;
+
+// jQuery.attrFn
+migrateWarnProp( jQuery, "attrFn", attrFn || {}, "jQuery.attrFn is deprecated" );
+
+jQuery.attr = function( elem, name, value, pass ) {
+ var lowerName = name.toLowerCase(),
+ nType = elem && elem.nodeType;
+
+ if ( pass ) {
+ // Since pass is used internally, we only warn for new jQuery
+ // versions where there isn't a pass arg in the formal params
+ if ( oldAttr.length < 4 ) {
+ migrateWarn("jQuery.fn.attr( props, pass ) is deprecated");
+ }
+ if ( elem && !rnoAttrNodeType.test( nType ) &&
+ (attrFn ? name in attrFn : jQuery.isFunction(jQuery.fn[name])) ) {
+ return jQuery( elem )[ name ]( value );
+ }
+ }
+
+ // Warn if user tries to set `type`, since it breaks on IE 6/7/8; by checking
+ // for disconnected elements we don't warn on $( "<button>", { type: "button" } ).
+ if ( name === "type" && value !== undefined && rnoType.test( elem.nodeName ) && elem.parentNode ) {
+ migrateWarn("Can't change the 'type' of an input or button in IE 6/7/8");
+ }
+
+ // Restore boolHook for boolean property/attribute synchronization
+ if ( !jQuery.attrHooks[ lowerName ] && rboolean.test( lowerName ) ) {
+ jQuery.attrHooks[ lowerName ] = {
+ get: function( elem, name ) {
+ // Align boolean attributes with corresponding properties
+ // Fall back to attribute presence where some booleans are not supported
+ var attrNode,
+ property = jQuery.prop( elem, name );
+ return property === true || typeof property !== "boolean" &&
+ ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
+
+ name.toLowerCase() :
+ undefined;
+ },
+ set: function( elem, value, name ) {
+ var propName;
+ if ( value === false ) {
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else {
+ // value is true since we know at this point it's type boolean and not false
+ // Set boolean attributes to the same name and set the DOM property
+ propName = jQuery.propFix[ name ] || name;
+ if ( propName in elem ) {
+ // Only set the IDL specifically if it already exists on the element
+ elem[ propName ] = true;
+ }
+
+ elem.setAttribute( name, name.toLowerCase() );
+ }
+ return name;
+ }
+ };
+
+ // Warn only for attributes that can remain distinct from their properties post-1.9
+ if ( ruseDefault.test( lowerName ) ) {
+ migrateWarn( "jQuery.fn.attr('" + lowerName + "') may use property instead of attribute" );
+ }
+ }
+
+ return oldAttr.call( jQuery, elem, name, value );
+};
+
+// attrHooks: value
+jQuery.attrHooks.value = {
+ get: function( elem, name ) {
+ var nodeName = ( elem.nodeName || "" ).toLowerCase();
+ if ( nodeName === "button" ) {
+ return valueAttrGet.apply( this, arguments );
+ }
+ if ( nodeName !== "input" && nodeName !== "option" ) {
+ migrateWarn("jQuery.fn.attr('value') no longer gets properties");
+ }
+ return name in elem ?
+ elem.value :
+ null;
+ },
+ set: function( elem, value ) {
+ var nodeName = ( elem.nodeName || "" ).toLowerCase();
+ if ( nodeName === "button" ) {
+ return valueAttrSet.apply( this, arguments );
+ }
+ if ( nodeName !== "input" && nodeName !== "option" ) {
+ migrateWarn("jQuery.fn.attr('value', val) no longer sets properties");
+ }
+ // Does not return so that setAttribute is also used
+ elem.value = value;
+ }
+};
+
+
+var matched, browser,
+ oldInit = jQuery.fn.init,
+ oldParseJSON = jQuery.parseJSON,
+ // Note: XSS check is done below after string is trimmed
+ rquickExpr = /^([^<]*)(<[\w\W]+>)([^>]*)$/;
+
+// $(html) "looks like html" rule change
+jQuery.fn.init = function( selector, context, rootjQuery ) {
+ var match;
+
+ if ( selector && typeof selector === "string" && !jQuery.isPlainObject( context ) &&
+ (match = rquickExpr.exec( jQuery.trim( selector ) )) && match[ 0 ] ) {
+ // This is an HTML string according to the "old" rules; is it still?
+ if ( selector.charAt( 0 ) !== "<" ) {
+ migrateWarn("$(html) HTML strings must start with '<' character");
+ }
+ if ( match[ 3 ] ) {
+ migrateWarn("$(html) HTML text after last tag is ignored");
+ }
+ // Consistently reject any HTML-like string starting with a hash (#9521)
+ // Note that this may break jQuery 1.6.x code that otherwise would work.
+ if ( match[ 0 ].charAt( 0 ) === "#" ) {
+ migrateWarn("HTML string cannot start with a '#' character");
+ jQuery.error("JQMIGRATE: Invalid selector string (XSS)");
+ }
+ // Now process using loose rules; let pre-1.8 play too
+ if ( context && context.context ) {
+ // jQuery object as context; parseHTML expects a DOM object
+ context = context.context;
+ }
+ if ( jQuery.parseHTML ) {
+ return oldInit.call( this, jQuery.parseHTML( match[ 2 ], context, true ),
+ context, rootjQuery );
+ }
+ }
+ return oldInit.apply( this, arguments );
+};
+jQuery.fn.init.prototype = jQuery.fn;
+
+// Let $.parseJSON(falsy_value) return null
+jQuery.parseJSON = function( json ) {
+ if ( !json && json !== null ) {
+ migrateWarn("jQuery.parseJSON requires a valid JSON string");
+ return null;
+ }
+ return oldParseJSON.apply( this, arguments );
+};
+
+jQuery.uaMatch = function( ua ) {
+ ua = ua.toLowerCase();
+
+ var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||
+ /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
+ /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||
+ /(msie) ([\w.]+)/.exec( ua ) ||
+ ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||
+ [];
+
+ return {
+ browser: match[ 1 ] || "",
+ version: match[ 2 ] || "0"
+ };
+};
+
+// Don't clobber any existing jQuery.browser in case it's different
+if ( !jQuery.browser ) {
+ matched = jQuery.uaMatch( navigator.userAgent );
+ browser = {};
+
+ if ( matched.browser ) {
+ browser[ matched.browser ] = true;
+ browser.version = matched.version;
+ }
+
+ // Chrome is Webkit, but Webkit is also Safari.
+ if ( browser.chrome ) {
+ browser.webkit = true;
+ } else if ( browser.webkit ) {
+ browser.safari = true;
+ }
+
+ jQuery.browser = browser;
+}
+
+// Warn if the code tries to get jQuery.browser
+migrateWarnProp( jQuery, "browser", jQuery.browser, "jQuery.browser is deprecated" );
+
+jQuery.sub = function() {
+ function jQuerySub( selector, context ) {
+ return new jQuerySub.fn.init( selector, context );
+ }
+ jQuery.extend( true, jQuerySub, this );
+ jQuerySub.superclass = this;
+ jQuerySub.fn = jQuerySub.prototype = this();
+ jQuerySub.fn.constructor = jQuerySub;
+ jQuerySub.sub = this.sub;
+ jQuerySub.fn.init = function init( selector, context ) {
+ if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
+ context = jQuerySub( context );
+ }
+
+ return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
+ };
+ jQuerySub.fn.init.prototype = jQuerySub.fn;
+ var rootjQuerySub = jQuerySub(document);
+ migrateWarn( "jQuery.sub() is deprecated" );
+ return jQuerySub;
+};
+
+
+// Ensure that $.ajax gets the new parseJSON defined in core.js
+jQuery.ajaxSetup({
+ converters: {
+ "text json": jQuery.parseJSON
+ }
+});
+
+
+var oldFnData = jQuery.fn.data;
+
+jQuery.fn.data = function( name ) {
+ var ret, evt,
+ elem = this[0];
+
+ // Handles 1.7 which has this behavior and 1.8 which doesn't
+ if ( elem && name === "events" && arguments.length === 1 ) {
+ ret = jQuery.data( elem, name );
+ evt = jQuery._data( elem, name );
+ if ( ( ret === undefined || ret === evt ) && evt !== undefined ) {
+ migrateWarn("Use of jQuery.fn.data('events') is deprecated");
+ return evt;
+ }
+ }
+ return oldFnData.apply( this, arguments );
+};
+
+
+var rscriptType = /\/(java|ecma)script/i,
+ oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack;
+
+jQuery.fn.andSelf = function() {
+ migrateWarn("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()");
+ return oldSelf.apply( this, arguments );
+};
+
+// Since jQuery.clean is used internally on older versions, we only shim if it's missing
+if ( !jQuery.clean ) {
+ jQuery.clean = function( elems, context, fragment, scripts ) {
+ // Set context per 1.8 logic
+ context = context || document;
+ context = !context.nodeType && context[0] || context;
+ context = context.ownerDocument || context;
+
+ migrateWarn("jQuery.clean() is deprecated");
+
+ var i, elem, handleScript, jsTags,
+ ret = [];
+
+ jQuery.merge( ret, jQuery.buildFragment( elems, context ).childNodes );
+
+ // Complex logic lifted directly from jQuery 1.8
+ if ( fragment ) {
+ // Special handling of each script element
+ handleScript = function( elem ) {
+ // Check if we consider it executable
+ if ( !elem.type || rscriptType.test( elem.type ) ) {
+ // Detach the script and store it in the scripts array (if provided) or the fragment
+ // Return truthy to indicate that it has been handled
+ return scripts ?
+ scripts.push( elem.parentNode ? elem.parentNode.removeChild( elem ) : elem ) :
+ fragment.appendChild( elem );
+ }
+ };
+
+ for ( i = 0; (elem = ret[i]) != null; i++ ) {
+ // Check if we're done after handling an executable script
+ if ( !( jQuery.nodeName( elem, "script" ) && handleScript( elem ) ) ) {
+ // Append to fragment and handle embedded scripts
+ fragment.appendChild( elem );
+ if ( typeof elem.getElementsByTagName !== "undefined" ) {
+ // handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration
+ jsTags = jQuery.grep( jQuery.merge( [], elem.getElementsByTagName("script") ), handleScript );
+
+ // Splice the scripts into ret after their former ancestor and advance our index beyond them
+ ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
+ i += jsTags.length;
+ }
+ }
+ }
+ }
+
+ return ret;
+ };
+}
+
+var eventAdd = jQuery.event.add,
+ eventRemove = jQuery.event.remove,
+ eventTrigger = jQuery.event.trigger,
+ oldToggle = jQuery.fn.toggle,
+ oldLive = jQuery.fn.live,
+ oldDie = jQuery.fn.die,
+ ajaxEvents = "ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",
+ rajaxEvent = new RegExp( "\\b(?:" + ajaxEvents + ")\\b" ),
+ rhoverHack = /(?:^|\s)hover(\.\S+|)\b/,
+ hoverHack = function( events ) {
+ if ( typeof( events ) !== "string" || jQuery.event.special.hover ) {
+ return events;
+ }
+ if ( rhoverHack.test( events ) ) {
+ migrateWarn("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'");
+ }
+ return events && events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
+ };
+
+// Event props removed in 1.9, put them back if needed; no practical way to warn them
+if ( jQuery.event.props && jQuery.event.props[ 0 ] !== "attrChange" ) {
+ jQuery.event.props.unshift( "attrChange", "attrName", "relatedNode", "srcElement" );
+}
+
+// Undocumented jQuery.event.handle was "deprecated" in jQuery 1.7
+if ( jQuery.event.dispatch ) {
+ migrateWarnProp( jQuery.event, "handle", jQuery.event.dispatch, "jQuery.event.handle is undocumented and deprecated" );
+}
+
+// Support for 'hover' pseudo-event and ajax event warnings
+jQuery.event.add = function( elem, types, handler, data, selector ){
+ if ( elem !== document && rajaxEvent.test( types ) ) {
+ migrateWarn( "AJAX events should be attached to document: " + types );
+ }
+ eventAdd.call( this, elem, hoverHack( types || "" ), handler, data, selector );
+};
+jQuery.event.remove = function( elem, types, handler, selector, mappedTypes ){
+ eventRemove.call( this, elem, hoverHack( types ) || "", handler, selector, mappedTypes );
+};
+
+jQuery.fn.error = function() {
+ var args = Array.prototype.slice.call( arguments, 0);
+ migrateWarn("jQuery.fn.error() is deprecated");
+ args.splice( 0, 0, "error" );
+ if ( arguments.length ) {
+ return this.bind.apply( this, args );
+ }
+ // error event should not bubble to window, although it does pre-1.7
+ this.triggerHandler.apply( this, args );
+ return this;
+};
+
+jQuery.fn.toggle = function( fn, fn2 ) {
+
+ // Don't mess with animation or css toggles
+ if ( !jQuery.isFunction( fn ) || !jQuery.isFunction( fn2 ) ) {
+ return oldToggle.apply( this, arguments );
+ }
+ migrateWarn("jQuery.fn.toggle(handler, handler...) is deprecated");
+
+ // Save reference to arguments for access in closure
+ var args = arguments,
+ guid = fn.guid || jQuery.guid++,
+ i = 0,
+ toggler = function( event ) {
+ // Figure out which function to execute
+ var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+ jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[ lastToggle ].apply( this, arguments ) || false;
+ };
+
+ // link all the functions, so any of them can unbind this click handler
+ toggler.guid = guid;
+ while ( i < args.length ) {
+ args[ i++ ].guid = guid;
+ }
+
+ return this.click( toggler );
+};
+
+jQuery.fn.live = function( types, data, fn ) {
+ migrateWarn("jQuery.fn.live() is deprecated");
+ if ( oldLive ) {
+ return oldLive.apply( this, arguments );
+ }
+ jQuery( this.context ).on( types, this.selector, data, fn );
+ return this;
+};
+
+jQuery.fn.die = function( types, fn ) {
+ migrateWarn("jQuery.fn.die() is deprecated");
+ if ( oldDie ) {
+ return oldDie.apply( this, arguments );
+ }
+ jQuery( this.context ).off( types, this.selector || "**", fn );
+ return this;
+};
+
+// Turn global events into document-triggered events
+jQuery.event.trigger = function( event, data, elem, onlyHandlers ){
+ if ( !elem && !rajaxEvent.test( event ) ) {
+ migrateWarn( "Global events are undocumented and deprecated" );
+ }
+ return eventTrigger.call( this, event, data, elem || document, onlyHandlers );
+};
+jQuery.each( ajaxEvents.split("|"),
+ function( _, name ) {
+ jQuery.event.special[ name ] = {
+ setup: function() {
+ var elem = this;
+
+ // The document needs no shimming; must be !== for oldIE
+ if ( elem !== document ) {
+ jQuery.event.add( document, name + "." + jQuery.guid, function() {
+ jQuery.event.trigger( name, null, elem, true );
+ });
+ jQuery._data( this, name, jQuery.guid++ );
+ }
+ return false;
+ },
+ teardown: function() {
+ if ( this !== document ) {
+ jQuery.event.remove( document, name + "." + jQuery._data( this, name ) );
+ }
+ return false;
+ }
+ };
+ }
+);
+
+
+})( jQuery, window );
This diff is so big that we needed to truncate the remainder.
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