<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>175779</bug_id>
          
          <creation_ts>2017-08-21 12:22:45 -0700</creation_ts>
          <short_desc>Add ObjC SPI corresponding to WKPageLoaderClient&apos;s webGLLoadPolicy and resolveWebGLLoadPolicy</short_desc>
          <delta_ts>2017-09-27 12:56:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
    
    <cc>mitz</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1340697</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-21 12:22:45 -0700</bug_when>
    <thetext>Add ObjC SPI corresponding to WKPageLoaderClient&apos;s webGLLoadPolicy and resolveWebGLLoadPolicy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340700</commentid>
    <comment_count>1</comment_count>
      <attachid>318659</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-21 12:26:21 -0700</bug_when>
    <thetext>Created attachment 318659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340742</commentid>
    <comment_count>2</comment_count>
      <attachid>318659</attachid>
    <who name="">mitz</who>
    <bug_when>2017-08-21 13:58:33 -0700</bug_when>
    <thetext>Comment on attachment 318659
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=318659&amp;action=review

&gt; Source/WebKit/UIProcess/Cocoa/NavigationState.mm:324
&gt; +void NavigationState::NavigationClient::webGLLoadPolicy(WebPageProxy&amp;, const WebCore::URL&amp; url, WTF::Function&lt;void(WebCore::WebGLLoadPolicy)&gt;&amp;&amp; completionHandler) const
&gt; +{
&gt; +    if (!m_navigationState.m_navigationDelegateMethods.webViewWebGLLoadPolicyForURL)
&gt; +        completionHandler(WebGLAllowCreation);
&gt; +
&gt; +    [(id &lt;WKNavigationDelegatePrivate&gt;)m_navigationState.m_navigationDelegate _webView:m_navigationState.m_webView webGLLoadPolicyForURL:(NSURL *)url decisionHandler:BlockPtr&lt;void(_WKWebGLLoadPolicy)&gt;::fromCallable([completionHandler = WTFMove(completionHandler)](_WKWebGLLoadPolicy policy) {
&gt; +        completionHandler(toWebCoreWebGLLoadPolicy(policy));
&gt; +    }).get()];
&gt; +}
&gt; +
&gt; +void NavigationState::NavigationClient::resolveWebGLLoadPolicy(WebPageProxy&amp;, const WebCore::URL&amp; url, WTF::Function&lt;void(WebCore::WebGLLoadPolicy)&gt;&amp;&amp; completionHandler) const
&gt; +{
&gt; +    if (!m_navigationState.m_navigationDelegateMethods.webViewResolveWebGLLoadPolicyForURL)
&gt; +        completionHandler(WebGLAllowCreation);
&gt; +    
&gt; +    [(id &lt;WKNavigationDelegatePrivate&gt;)m_navigationState.m_navigationDelegate _webView:m_navigationState.m_webView resolveWebGLLoadPolicyForURL:(NSURL *)url decisionHandler:BlockPtr&lt;void(_WKWebGLLoadPolicy)&gt;::fromCallable([completionHandler = WTFMove(completionHandler)](_WKWebGLLoadPolicy policy) {
&gt; +        completionHandler(toWebCoreWebGLLoadPolicy(policy));
&gt; +    }).get()];
&gt; +}

Might be good to use a CompletionHandlerCallChecker in each of these functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340749</commentid>
    <comment_count>3</comment_count>
      <attachid>318670</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-21 14:22:53 -0700</bug_when>
    <thetext>Created attachment 318670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344246</commentid>
    <comment_count>4</comment_count>
      <attachid>318670</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2017-08-31 17:42:28 -0700</bug_when>
    <thetext>Comment on attachment 318670
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=318670&amp;action=review

&gt; Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebGLPolicy.mm:100
&gt; +    return [[a absoluteString] isEqualToString:[b absoluteString]];

Why not NSURL equality?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344252</commentid>
    <comment_count>5</comment_count>
      <attachid>318670</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-31 18:00:13 -0700</bug_when>
    <thetext>Comment on attachment 318670
Patch

Rejecting attachment 318670 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 318670, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
.xcodeproj/project.pbxproj
Hunk #1 FAILED at 231.
Hunk #2 FAILED at 1302.
Hunk #3 succeeded at 1972 (offset 23 lines).
Hunk #4 succeeded at 3362 (offset 32 lines).
2 out of 4 hunks FAILED -- saving rejects to file Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj.rej
patching file Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WebGLPolicy.mm

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Tim Horton&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/4420648</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344265</commentid>
    <comment_count>6</comment_count>
      <attachid>319561</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-31 18:43:39 -0700</bug_when>
    <thetext>Created attachment 319561
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344266</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-31 18:46:40 -0700</bug_when>
    <thetext>http://trac.webkit.org/r221465</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344407</commentid>
    <comment_count>8</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-09-01 08:52:29 -0700</bug_when>
    <thetext>The API test added with this change is failing on iOS simulator. Should it be disabled there? 
https://build.webkit.org/builders/Apple%20iOS%2010%20Simulator%20Release%20WK2%20(Tests)/builds/4026</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344468</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-01 10:58:22 -0700</bug_when>
    <thetext>Fixing in https://bugs.webkit.org/show_bug.cgi?id=176233
If EWS ran API tests, this never would&apos;ve been an issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353745</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:56:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/34694350&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318659</attachid>
            <date>2017-08-21 12:26:21 -0700</date>
            <delta_ts>2017-08-21 14:22:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175779-20170821122620.patch</filename>
            <type>text/plain</type>
            <size>34090</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDkwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA4LTIxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIE9iakMg
U1BJIGNvcnJlc3BvbmRpbmcgdG8gV0tQYWdlTG9hZGVyQ2xpZW50J3Mgd2ViR0xMb2FkUG9saWN5
IGFuZCByZXNvbHZlV2ViR0xMb2FkUG9saWN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3NzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyMzY3
OTc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENv
dmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oOgorCiAyMDE3LTA4LTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtJbnB1dCBFdmVudHNdIFJlbmFtZSBpbnB1dFR5cGUgImZvcm1hdEZv
cmVDb2xvciIgdG8gImZvcm1hdEZvbnRDb2xvciIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMjA5MDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDggKzMz
Miw4IEBAIHB1YmxpYzoKICAgICAvLyBJbmZvcm1zIHRoZSBlbWJlZGRlciB0aGF0IGEgV2ViR0wg
Y2FudmFzIGluc2lkZSB0aGlzIGZyYW1lIHJlY2VpdmVkIGEgbG9zdCBjb250ZXh0CiAgICAgLy8g
bm90aWZpY2F0aW9uIHdpdGggdGhlIGdpdmVuIEdMX0FSQl9yb2J1c3RuZXNzIGd1aWx0L2lubm9j
ZW5jZSBjb2RlIChzZWUgRXh0ZW5zaW9uczNELmgpLgogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3Nl
V2ViR0xDb250ZXh0KGludCkgeyB9Ci0gICAgdmlydHVhbCBXZWJHTExvYWRQb2xpY3kgd2ViR0xQ
b2xpY3lGb3JVUkwoY29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4gV2ViR0xBbGxvd0NyZWF0
aW9uOyB9Ci0gICAgdmlydHVhbCBXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9y
VVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsgfQor
ICAgIHZpcnR1YWwgV2ViR0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYp
IGNvbnN0IHsgcmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsgfQorICAgIHZpcnR1YWwgV2ViR0xM
b2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCB7IHJl
dHVybiBXZWJHTEFsbG93Q3JlYXRpb247IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGZv
cmNlUGFnZVRyYW5zaXRpb25JZk5lZWRlZCgpIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIy
MDkwMSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNDEgQEAKKzIwMTctMDgtMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBBZGQgT2JqQyBTUEkgY29ycmVzcG9uZGluZyB0byBXS1BhZ2VM
b2FkZXJDbGllbnQncyB3ZWJHTExvYWRQb2xpY3kgYW5kIHJlc29sdmVXZWJHTExvYWRQb2xpY3kK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTc3OQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjIzNjc5NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25D
bGllbnQuaDoKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9saWN5
IGNvbnN0KToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6cmVzb2x2ZVdlYkdMTG9h
ZFBvbGljeSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b25EZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToK
KyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUp
OgorICAgICAgICAoV2ViS2l0Ojp0b1dlYkNvcmVXZWJHTExvYWRQb2xpY3kpOgorICAgICAgICAo
V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkdMTG9hZFBvbGlj
eSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2ViR0xQ
b2xpY3lGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc29sdmVXZWJH
TFBvbGljeUZvclVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3ZWJHTFBvbGljeUZvclVSTCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZXNvbHZlV2ViR0xQb2xp
Y3lGb3JVUkwgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OndlYkdMUG9saWN5Rm9yVVJMKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6d2Vi
R0xQb2xpY3lGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXNvbHZlV2ViR0xQ
b2xpY3lGb3JVUkwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6d2ViR0xQb2xpY3lGb3JVUkwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwpOgorCiAyMDE3
LTA4LTE1ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAg
ICAgVXBkYXRlIHRvIGNoYW5nZVNlbGVjdGlvbldpdGhUb3VjaEF0OmJhc2VJc1N0YXJ0OndpdGhG
bGFnczoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2
aXNpb24gMjIwOTAxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDAyMSwxNCArNDAyMSwyNCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6dW5hdmFpbGFibGVQbHVnaW5CdXR0CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCiAKICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIFdlYlBhZ2VQcm94eTo6d2ViR0xQb2xp
Y3lGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwsIHVpbnQzMl90JiBsb2FkUG9saWN5KQordm9pZCBX
ZWJQYWdlUHJveHk6OndlYkdMUG9saWN5Rm9yVVJMKFVSTCYmIHVybCwgUmVmPE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCiB7
Ci0gICAgbG9hZFBvbGljeSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNsaWVudC0+
d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwpKTsKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50
KSB7CisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1
cmwsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXShXZWJHTExvYWRQb2xpY3kgcG9saWN5KSB7Cisg
ICAgICAgICAgICByZXBseS0+c2VuZChzdGF0aWNfY2FzdDx1aW50MzJfdD4ocG9saWN5KSk7Cisg
ICAgICAgIH0pOworICAgIH0gZWxzZQorICAgICAgICByZXBseS0+c2VuZChzdGF0aWNfY2FzdDx1
aW50MzJfdD4obV9sb2FkZXJDbGllbnQtPndlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsKSkpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFN0
cmluZyYgdXJsLCB1aW50MzJfdCYgbG9hZFBvbGljeSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXNv
bHZlV2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYgdXJsLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCiB7Ci0g
ICAgbG9hZFBvbGljeSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNsaWVudC0+cmVz
b2x2ZVdlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsKSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNs
aWVudCkgeworICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPnJlc29sdmVXZWJHTExvYWRQb2xp
Y3koKnRoaXMsIHVybCwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKFdlYkdMTG9hZFBvbGljeSBw
b2xpY3kpIHsKKyAgICAgICAgICAgIHJlcGx5LT5zZW5kKHN0YXRpY19jYXN0PHVpbnQzMl90Pihw
b2xpY3kpKTsKKyAgICAgICAgfSk7CisgICAgfSBlbHNlCisgICAgICAgIHJlcGx5LT5zZW5kKHN0
YXRpY19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNsaWVudC0+cmVzb2x2ZVdlYkdMTG9hZFBvbGlj
eSgqdGhpcywgdXJsKSkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIApJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIyMDkwMSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzAwLDggKzEzMDAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5hdmFpbGFibGVQbHVnaW5CdXR0
b25DbGlja2VkKHVpbnQzMl90IG9wYXF1ZVBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBsdWdpblVSTFN0cmluZywgY29uc3Qg
U3RyaW5nJiBwbHVnaW5zUGFnZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmlu
ZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nKTsKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9pZCB3ZWJHTFBvbGljeUZv
clVSTChjb25zdCBTdHJpbmcmIHVybCwgdWludDMyX3QmIGxvYWRQb2xpY3kpOwotICAgIHZvaWQg
cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsLCB1aW50MzJfdCYgbG9h
ZFBvbGljeSk7CisgICAgdm9pZCB3ZWJHTFBvbGljeUZvclVSTChXZWJDb3JlOjpVUkwmJiwgUmVm
PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHk+
JiYpOworICAgIHZvaWQgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkNvcmU6OlVSTCYmLCBS
ZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMOjpEZWxh
eWVkUmVwbHk+JiYpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICB2b2lkIHNldFRvb2xi
YXJzQXJlVmlzaWJsZShib29sIHRvb2xiYXJzQXJlVmlzaWJsZSk7CiAgICAgdm9pZCBnZXRUb29s
YmFyc0FyZVZpc2libGUoYm9vbCYgdG9vbGJhcnNBcmVWaXNpYmxlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9u
IDIyMDkwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogICAgIFVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50MzJfdCBwbHVn
aW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgU3RyaW5nIG1pbWVUeXBlLCBTdHJpbmcgcGx1Z2luVVJM
U3RyaW5nLCBTdHJpbmcgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcsIFN0cmluZyBmcmFt
ZVVSTFN0cmluZywgU3RyaW5nIHBhZ2VVUkxTdHJpbmcpCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkdMUG9saWN5Rm9yVVJM
KFN0cmluZyB1cmwpIC0+ICh1aW50MzJfdCBsb2FkUG9saWN5KQotICAgIFJlc29sdmVXZWJHTFBv
bGljeUZvclVSTChTdHJpbmcgdXJsKSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkKKyAgICBXZWJH
TFBvbGljeUZvclVSTChXZWJDb3JlOjpVUkwgdXJsKSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkg
RGVsYXllZAorICAgIFJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJDb3JlOjpVUkwgdXJsKSAt
PiAodWludDMyX3QgbG9hZFBvbGljeSkgRGVsYXllZAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkK
ICAgICBEaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoc3RydWN0IFdlYkNvcmU6OlZpZXdwb3J0
QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogICAgIERpZFJlY2VpdmVFdmVudCh1aW50MzJfdCB0eXBl
LCBib29sIGhhbmRsZWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbkNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgJKHJldmlzaW9uIDIyMDkwMSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTExMiw2ICsxMTIsMTEgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIHZpcnR1YWwgdm9pZCB3ZWJHTExvYWRQb2xpY3koV2ViS2l0OjpXZWJQYWdlUHJv
eHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6V2Vi
R0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFu
ZGxlcihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdURjo6RnVuY3Rpb248dm9pZChXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5k
bGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uKTsgfQorI2Vu
ZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZShXZWJLaXQ6
OldlYlBhZ2VQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsRW5kTmF2aWdhdGlvbkdl
c3R1cmUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBib29sIHdpbGxOYXZpZ2F0ZSwgV2ViS2l0OjpX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZE5hdmln
YXRpb25HZXN0dXJlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgYm9vbCB3aWxsTmF2aWdhdGUsIFdl
YktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxl
Z2F0ZVByaXZhdGUuaAkocmV2aXNpb24gMjIwOTAxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMywxMiBAQAogCiBAY2xhc3MgX1dLV2Vic2l0ZVBvbGljaWVzOwogCit0eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJHTExvYWRQb2xpY3kpIHsKKyAgICBfV0tXZWJH
TExvYWRQb2xpY3lCbG9ja0NyZWF0aW9uLAorICAgIF9XS1dlYkdMTG9hZFBvbGljeUFsbG93Q3Jl
YXRpb24sCisgICAgX1dLV2ViR0xMb2FkUG9saWN5UGVuZGluZ0NyZWF0aW9uLAorfSBXS19BUElf
QVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogc3RhdGlj
IGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
RG93bmxvYWQgPSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KShXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lBbGxvdyArIDEpOwogc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBX
S19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5LjApKSBfV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluayA9IChXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3kpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93ICsgMik7CiAKQEAgLTc1LDYgKzgx
LDkgQEAgc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5IAogLSAodm9pZClf
d2ViVmlld0RpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKICNlbmRpZgogCist
ICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHdlYkdMTG9hZFBvbGljeUZvclVS
TDooTlNVUkwgKil1cmwgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tXZWJHTExvYWRQb2xp
Y3kpKWRlY2lzaW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
cmVzb2x2ZVdlYkdMTG9hZFBvbGljeUZvclVSTDooTlNVUkwgKil1cmwgZGVjaXNpb25IYW5kbGVy
Oih2b2lkICheKShfV0tXZWJHTExvYWRQb2xpY3kpKWRlY2lzaW9uSGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZAogCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5oCShyZXZpc2lvbiAyMjA5MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDYgKzExNSwxMSBA
QCBwcml2YXRlOgogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lKGNvbnN0IFF1aWNrTG9va0RvY3VtZW50RGF0YSYpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgICAgIHZvaWQgd2ViR0xMb2FkUG9saWN5KFdl
YlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdURjo6RnVuY3Rpb248dm9pZChXZWJD
b3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCBmaW5hbDsK
KyAgICAgICAgdm9pZCByZXNvbHZlV2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIFdURjo6RnVuY3Rpb248dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xp
Y3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCiAgICAgICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmLCBSZWY8
QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
PiYmLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZShXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRp
b25SZXNwb25zZSYsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGU7CiAKQEAgLTE5OSw2ICsyMDQsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWUgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRSZXF1ZXN0UGFzc3dvcmRGb3JR
dWlja0xvb2tEb2N1bWVudCA6IDE7CiAjZW5kaWYKKworI2lmIEVOQUJMRShXRUJHTCkKKyAgICAg
ICAgYm9vbCB3ZWJWaWV3V2ViR0xMb2FkUG9saWN5Rm9yVVJMIDogMTsKKyAgICAgICAgYm9vbCB3
ZWJWaWV3UmVzb2x2ZVdlYkdMTG9hZFBvbGljeUZvclVSTCA6IDE7CisjZW5kaWYKICAgICB9IG1f
bmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kczsKIAogICAgIFdlYWtPYmpDUHRyPGlkIDxXS0hpc3Rv
cnlEZWxlZ2F0ZVByaXZhdGU+ID4gbV9oaXN0b3J5RGVsZWdhdGU7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lvbiAy
MjA5MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE3Miw2ICsxNzIsMTAgQEAgdm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6OnNldE5hdmlnYXRpb25EZWxlZwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3RGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld0RpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdEaWRSZXF1
ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudDopXTsKICNlbmRpZgorI2lmIEVOQUJMRShX
RUJHTCkKKyAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYkdMTG9hZFBv
bGljeUZvclVSTCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3OndlYkdMTG9hZFBvbGljeUZvclVSTDpkZWNpc2lvbkhhbmRsZXI6KV07CisgICAgbV9uYXZp
Z2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXNvbHZlV2ViR0xMb2FkUG9saWN5Rm9yVVJM
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVzb2x2
ZVdlYkdMTG9hZFBvbGljeUZvclVSTDpkZWNpc2lvbkhhbmRsZXI6KV07CisjZW5kaWYKIH0KIAog
UmV0YWluUHRyPGlkIDxXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGU+ID4gTmF2aWdhdGlvblN0YXRl
OjpoaXN0b3J5RGVsZWdhdGUoKQpAQCAtMjg0LDYgKzI4OCw0MSBAQCBOYXZpZ2F0aW9uU3RhdGU6
Ok5hdmlnYXRpb25DbGllbnQ6On5OYXZpCiB7CiB9CiAKK2lubGluZSBXZWJDb3JlOjpXZWJHTExv
YWRQb2xpY3kgdG9XZWJDb3JlV2ViR0xMb2FkUG9saWN5KF9XS1dlYkdMTG9hZFBvbGljeSBwb2xp
Y3kpCit7CisgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICBjYXNlIF9XS1dlYkdMTG9hZFBvbGlj
eUFsbG93Q3JlYXRpb246CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpXZWJHTEFsbG93Q3JlYXRp
b247CisgICAgY2FzZSBfV0tXZWJHTExvYWRQb2xpY3lCbG9ja0NyZWF0aW9uOgorICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6V2ViR0xCbG9ja0NyZWF0aW9uOworICAgIGNhc2UgX1dLV2ViR0xMb2Fk
UG9saWN5UGVuZGluZ0NyZWF0aW9uOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xQZW5k
aW5nQ3JlYXRpb247CisgICAgfQorICAgIAorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBXZWJDb3JlOjpXZWJHTEFsbG93Q3JlYXRpb247Cit9CisKK3ZvaWQgTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5Jiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFdURjo6RnVuY3Rpb248dm9pZChXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIGlmICghbV9u
YXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXZWJHTExv
YWRQb2xpY3lGb3JVUkwpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkdMQWxsb3dDcmVh
dGlvbik7CisKKyAgICBbKGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+KW1fbmF2aWdh
dGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRl
Lm1fd2ViVmlldyB3ZWJHTExvYWRQb2xpY3lGb3JVUkw6KE5TVVJMICopdXJsIGRlY2lzaW9uSGFu
ZGxlcjpCbG9ja1B0cjx2b2lkKF9XS1dlYkdMTG9hZFBvbGljeSk+Ojpmcm9tQ2FsbGFibGUoW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKF9XS1dlYkdMTG9h
ZFBvbGljeSBwb2xpY3kpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodG9XZWJDb3JlV2Vi
R0xMb2FkUG9saWN5KHBvbGljeSkpOworICAgIH0pLmdldCgpXTsKK30KKwordm9pZCBOYXZpZ2F0
aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViUGFn
ZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFdURjo6RnVuY3Rpb248dm9pZChXZWJD
b3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAg
IGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdSZXNvbHZlV2ViR0xMb2FkUG9saWN5Rm9yVVJMKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXZWJHTEFsbG93Q3JlYXRpb24pOworICAgIAorICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVn
YXRlUHJpdmF0ZT4pbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZp
ZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IHJlc29sdmVXZWJHTExvYWRQb2xpY3lGb3JV
Ukw6KE5TVVJMICopdXJsIGRlY2lzaW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkKF9XS1dlYkdMTG9h
ZFBvbGljeSk+Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKF9XS1dlYkdMTG9hZFBvbGljeSBwb2xpY3kpIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIodG9XZWJDb3JlV2ViR0xMb2FkUG9saWN5KHBvbGljeSkpOworICAgIH0p
LmdldCgpXTsKK30KKwogc3RhdGljIHZvaWQgdHJ5QXBwTGluayhSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFN0cmluZyYgY3VycmVudE1haW5G
cmFtZVVSTCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogI2lmIEhBVkUoQVBQX0xJTktTKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCShyZXZpc2lvbiAyMjA5MDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIz
LDcgKzE1MjMsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZWRpcmVjdERhdGFUCiAK
ICNpZiBFTkFCTEUoV0VCR0wpCiAKLVdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJGcmFtZUxv
YWRlckNsaWVudDo6d2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CitX
ZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OndlYkdMUG9saWN5
Rm9yVVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmIChhdXRvKiB3ZWJQYWdlID0g
bV9mcmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gd2ViUGFnZS0+d2ViR0xQb2xpY3lGb3JV
UkwobV9mcmFtZSwgdXJsKTsKQEAgLTE1MzEsNyArMTUzMSw3IEBAIFdlYkNvcmU6OldlYkdMTG9h
ZFBvbGljeSBXZWJGcmFtZUxvYWRlckMKICAgICByZXR1cm4gV2ViR0xBbGxvd0NyZWF0aW9uOwog
fQogCi1XZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlc29s
dmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKK1dlYkNvcmU6Oldl
YkdMTG9hZFBvbGljeSBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9y
VVJMKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gbV9m
cmFtZS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gd2ViUGFnZS0+cmVzb2x2ZVdlYkdMUG9saWN5
Rm9yVVJMKG1fZnJhbWUsIHVybCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAko
cmV2aXNpb24gMjIwOTAxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw4ICsyMDUs
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVkaXJlY3REYXRhVG9QbHVnaW4oV2ViQ29yZTo6V2lk
Z2V0JikgZmluYWw7CiAgICAgCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkNvcmU6OldlYkdM
TG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsK
LSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNv
bnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3
ZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKKyAgICBX
ZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFdl
YkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIAogICAg
IFJlZlB0cjxXZWJDb3JlOjpXaWRnZXQ+IGNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYsIFdlYkNvcmU6OkhUTUxBcHBsZXRFbGVtZW50JiwgY29uc3QgV2ViQ29y
ZTo6VVJMJiBiYXNlVVJMLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1OYW1lcywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMjA5MDEpCisrKyBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODE5LDEyICs4MTksMTIgQEAgUmVmUHRyPFBsdWdpbj4gV2ViUGFnZTo6Y3JlYXRlUGx1
Z2luKFdlYgogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaWYgRU5B
QkxFKFdFQkdMKSAmJiAhUExBVEZPUk0oQ09DT0EpCi1XZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kg
V2ViUGFnZTo6d2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBTdHJpbmcmIC8qIHVy
bCAqLykKK1dlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjp3ZWJHTFBvbGljeUZvclVS
TChXZWJGcmFtZSosIGNvbnN0IFVSTCYpCiB7CiAgICAgcmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlv
bjsKIH0KIAotV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6OnJlc29sdmVXZWJHTFBv
bGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFN0cmluZyYgLyogdXJsICovKQorV2ViQ29yZTo6
V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFt
ZSosIGNvbnN0IFVSTCYpCiB7CiAgICAgcmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9u
IDIyMDkwMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMzY3LDggKzM2Nyw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYg
RU5BQkxFKFdFQkdMKQotICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZv
clVSTChXZWJGcmFtZSosIGNvbnN0IFN0cmluZyYpOwotICAgIFdlYkNvcmU6OldlYkdMTG9hZFBv
bGljeSByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBTdHJpbmcmKTsK
KyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUq
LCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVz
b2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CiAj
ZW5kaWYKICAgICAKICAgICBlbnVtIGNsYXNzIEluY2x1ZGVQb3N0TGF5b3V0RGF0YUhpbnQgeyBO
bywgWWVzIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbQkocmV2aXNpb24gMjIwOTAxKQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTMy
OTQsMTIgKzMyOTQsMTIgQEAgdm9pZCBXZWJQYWdlOjp3aWxsU3RhcnRVc2VyVHJpZ2dlcmVkWm9v
bQogfQogCiAjaWYgRU5BQkxFKFdFQkdMKQotV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBh
Z2U6OndlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgU3RyaW5nJikKK1dlYkNvcmU6
OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjp3ZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNv
bnN0IFVSTCYpCiB7CiAgICAgcmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsKIH0KIAotV2ViQ29y
ZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJG
cmFtZSosIGNvbnN0IFN0cmluZyYpCitXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6
cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJikKIHsKICAgICBy
ZXR1cm4gV2ViR0xBbGxvd0NyZWF0aW9uOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDIyMDkwMSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC05MTksNyArOTE5LDcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNU
b1BERkZyb21QREZEb2N1bQogfQogCiAjaWYgRU5BQkxFKFdFQkdMKQotV2ViQ29yZTo6V2ViR0xM
b2FkUG9saWN5IFdlYlBhZ2U6OndlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiBmcmFtZSwgY29u
c3QgU3RyaW5nJiB1cmwpCitXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6d2ViR0xQ
b2xpY3lGb3JVUkwoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICB1aW50
MzJfdCBwb2xpY3lSZXN1bHQgPSAwOwogCkBAIC05MjksNyArOTI5LDcgQEAgV2ViQ29yZTo6V2Vi
R0xMb2FkUG9saWN5IFdlYlBhZ2U6OndlYkdMUAogICAgIHJldHVybiBXZWJHTEFsbG93Q3JlYXRp
b247CiB9CiAKLVdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjpyZXNvbHZlV2ViR0xQ
b2xpY3lGb3JVUkwoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHVybCkKK1dlYkNvcmU6
OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJh
bWUqIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKIHsKICAgICB1aW50MzJfdCBwb2xpY3lSZXN1bHQg
PSAwOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjA5MDEp
CisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNiBAQAorMjAxNy0wOC0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNl
bkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBPYmpDIFNQSSBjb3JyZXNwb25kaW5nIHRvIFdL
UGFnZUxvYWRlckNsaWVudCdzIHdlYkdMTG9hZFBvbGljeSBhbmQgcmVzb2x2ZVdlYkdMTG9hZFBv
bGljeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1
Nzc5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yMjM2Nzk3NT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6d2ViR0xQb2xpY3lGb3JV
UkwgY29uc3QpOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlc29sdmVXZWJHTFBv
bGljeUZvclVSTCBjb25zdCk6CisKIDIwMTctMDgtMTcgIERvbiBPbG1zdGVhZCAgPGRvbi5vbG1z
dGVhZEBzb255LmNvbT4KIAogICAgICAgICBbUEFMXSBSZWxvY2F0ZSBTZXNzaW9uSUQgdG8gcm9v
dApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMjA5MDEpCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsOCArMjExLDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCYpIGZpbmFsOwogCiAjaWYgRU5B
QkxFKFdFQkdMKQotICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVS
TChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xp
Y3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwor
ICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJD
b3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVz
b2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOwog
I2VuZGlmCiAKICAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lk
Z2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCShyZXZpc2lvbiAyMjA5MDEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjE0
NiwxMiArMjE0NiwxMiBAQCBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja1dlYkdMKCkKICNlbmRpZgog
fQogCi1XZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OndlYkdM
UG9saWN5Rm9yVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0CitXZWJDb3JlOjpXZWJHTExvYWRQb2xp
Y3kgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OndlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHNob3VsZEJsb2NrV2ViR0woKSA/IFdlYkdMQmxvY2tDcmVhdGlv
biA6IFdlYkdMQWxsb3dDcmVhdGlvbjsKIH0KIAotV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgU3RyaW5n
JikgY29uc3QKK1dlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJGcmFtZUxvYWRlckNsaWVudDo6
cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHNob3VsZEJsb2NrV2ViR0woKSA/IFdlYkdMQmxvY2tDcmVhdGlvbiA6IFdlYkdMQWxsb3dDcmVh
dGlvbjsKIH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIyMDk3NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDIyIEBACisyMDE3LTA4LTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIE9iakMgU1BJIGNvcnJlc3BvbmRpbmcg
dG8gV0tQYWdlTG9hZGVyQ2xpZW50J3Mgd2ViR0xMb2FkUG9saWN5IGFuZCByZXNvbHZlV2ViR0xM
b2FkUG9saWN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzU3NzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyMzY3OTc1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV2ViR0xQb2xpY3kubW06IEFkZGVkLgorICAgICAgICAo
LVtXZWJHTFRlc3REZWxlZ2F0ZSB3ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAg
ICAgKC1bV2ViR0xUZXN0RGVsZWdhdGUgd2ViVmlldzpzdG9wVVJMU2NoZW1lVGFzazpdKToKKyAg
ICAgICAgKC1bV2ViR0xUZXN0RGVsZWdhdGUgX3dlYlZpZXc6d2ViR0xMb2FkUG9saWN5Rm9yVVJM
OmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV2ViR0xUZXN0RGVsZWdhdGUgX3dlYlZp
ZXc6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeUZvclVSTDpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1dlYkdMVGVzdERlbGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxX
aXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAg
ICAodXJsc0VxdWFsKToKKyAgICAgICAgKHJ1blRlc3QpOgorICAgICAgICAoVEVTVCk6CisKIDIw
MTctMDgtMjEgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtXaW5dIERSVCBzaG91bGQgb25seSBhbGxvdyBhbnkgaHR0cHMgY2VydGlmaWNhdGUgZm9yIGxv
Y2FsaG9zdC4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjA5MDEpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjMxLDYgKzIzMSw3IEBACiAJCTVDOUU1OTQxMUQzRUI1
QUMwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOUU1OTNFMUQzRUIxREUwMEUzQzYyRSAv
KiBBcHBsaWNhdGlvbkNhY2hlLmRiICovOyB9OwogCQk1QzlFNTk0MjFEM0VCNUFDMDBFM0M2MkUg
LyogQXBwbGljYXRpb25DYWNoZS5kYi1zaG0gaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM5RTU5M0YxRDNFQjFERTAwRTNDNjJFIC8qIEFwcGxp
Y2F0aW9uQ2FjaGUuZGItc2htICovOyB9OwogCQk1QzlFNTk0MzFEM0VCNUFDMDBFM0M2MkUgLyog
QXBwbGljYXRpb25DYWNoZS5kYi13YWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM5RTU5NDAxRDNFQjFERTAwRTNDNjJFIC8qIEFwcGxpY2F0
aW9uQ2FjaGUuZGItd2FsICovOyB9OworCQk1Q0I0MEI0QTFGNDgwNTFFMDA3REM3QjkgLyogV2Vi
R0xQb2xpY3kubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Q0I0MEI0OTFGNDdGRDVFMDA3REM3QjkgLyogV2ViR0xQb2xpY3kubW0gKi87IH07CiAJCTVD
RTM1NEQ5MUU3MERBNUMwMEJFRkUzQiAvKiBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTM1NEQ4MUU3MEQ5
QzMwMEJFRkUzQiAvKiBXS0NvbnRlbnRFeHRlbnNpb25TdG9yZS5tbSAqLzsgfTsKIAkJNUU0QjFE
MkUxRDQwNEM2MTAwMDUzNjIxIC8qIFdLU2Nyb2xsVmlld0RlbGVnYXRlQ3Jhc2gubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RTRCMUQyQzFENDA0QzYx
MDAwNTM2MjEgLyogV0tTY3JvbGxWaWV3RGVsZWdhdGVDcmFzaC5tbSAqLzsgfTsKIAkJNjMxRUZG
RjYxRTdCNUU4RDAwRDJFQkI4IC8qIEdlb2xvY2F0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjMxRUZGRjUxRTdCNUU4RDAwRDJFQkI4IC8qIEdl
b2xvY2F0aW9uLm1tICovOyB9OwpAQCAtMTMwMSw2ICsxMzAyLDcgQEAKIAkJNUM5RTU5M0UxRDNF
QjFERTAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGIgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gQXBwbGljYXRpb25DYWNo
ZS5kYjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM5RTU5M0YxRDNFQjFERTAwRTND
NjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGItc2htICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJBcHBsaWNhdGlvbkNhY2hlLmRi
LXNobSI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUU1OTQwMUQzRUIxREUwMEUz
QzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXdhbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAiQXBwbGljYXRpb25DYWNoZS5k
Yi13YWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0I0MEI0OTFGNDdGRDVFMDA3
REM3QjkgLyogV2ViR0xQb2xpY3kubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJHTFBvbGljeS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNF
MzU0RDgxRTcwRDlDMzAwQkVGRTNCIC8qIFdLQ29udGVudEV4dGVuc2lvblN0b3JlLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tDb250ZW50RXh0ZW5zaW9uU3Rv
cmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVFNEIxRDJDMUQ0MDRDNjEwMDA1
MzYyMSAvKiBXS1Njcm9sbFZpZXdEZWxlZ2F0ZUNyYXNoLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBuYW1lID0gV0tTY3JvbGxWaWV3RGVsZWdhdGVDcmFzaC5tbTsgcGF0aCA9
IC4uL2lvcy9XS1Njcm9sbFZpZXdEZWxlZ2F0ZUNyYXNoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk2MzFFRkZGNTFFN0I1RThEMDBEMkVCQjggLyogR2VvbG9jYXRpb24ubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHZW9sb2NhdGlvbi5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5NDcsNiArMTk0OSw3IEBACiAJCQkJMDdFREVG
QUMxRUI5NDAwQzAwRDQzMjkyIC8qIFVzZXJNZWRpYURpc2FibGVkLm1tICovLAogCQkJCTkzRTk0
M0YxMUNEM0U4N0UwMEFDMDhDMiAvKiBWaWRlb0NvbnRyb2xzTWFuYWdlci5tbSAqLywKIAkJCQk2
MzU2RkIyMTFFQzRFMEJBMDA0NEJGMTggLyogVmlzaWJsZUNvbnRlbnRSZWN0Lm1tICovLAorCQkJ
CTVDQjQwQjQ5MUY0N0ZENUUwMDdEQzdCOSAvKiBXZWJHTFBvbGljeS5tbSAqLywKIAkJCQk1MTcx
NEVCNjFDRjhDN0E0MDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLm1tICovLAog
CQkJCTUxMjBDODNDMUU2NzUwNzkwMDI1QjI1MCAvKiBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0
aHMubW0gKi8sCiAJCQkJNUM5RTU2ODQxREY5MTQzRDAwQzlFRTMzIC8qIFdlYnNpdGVQb2xpY2ll
cy5tbSAqLywKQEAgLTMzMjcsNiArMzMzMCw3IEBACiAJCQkJN0NDRTdGMTkxQTQxMUFFNjAwNDQ3
QzRDIC8qIFdlYkFyY2hpdmUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwNEMxRDBBNjQx
ODAwRkVCQ0YzIC8qIFdlYkNvcmVOU1VSTFNlc3Npb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NFN0YxQTFBNDExQUU2MDA0NDdDNEMgLyogV2ViQ29yZVN0YXRpc3RpY3NXaXRoTm9XZWJQcm9j
ZXNzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTVDQjQwQjRBMUY0ODA1MUUwMDdEQzdCOSAvKiBX
ZWJHTFBvbGljeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUFCMUE0MTFBMjQwMDQ0N0M0
QyAvKiBXZWJLaXRBZ25vc3RpY1Rlc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTcxNEVCODFD
RjhDQTE3MDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNTM2NzcwMzQxQ0M4MDIyODAwRDQyNUIxIC8qIFdlYlNjcmlwdE9iamVjdERlc2Ny
aXB0aW9uLm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDJDb2NvYS9XZWJHTFBvbGljeS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XZWJHTFBvbGljeS5tbQkobm9uZXhpc3RlbnQpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XZWJHTFBvbGljeS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNv
bmZpZy5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5o
IgorI2ltcG9ydCAiVXRpbGl0aWVzLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVs
ZWdhdGVQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CisjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CisKK3N0YXRpYyBfV0tXZWJHTExvYWRQb2xpY3kgZmlyc3RQb2xpY3k7
CitzdGF0aWMgX1dLV2ViR0xMb2FkUG9saWN5IHNlY29uZFBvbGljeTsKKworc3RhdGljIFJldGFp
blB0cjxOU1VSTD4gZmlyc3RVUkw7CitzdGF0aWMgUmV0YWluUHRyPE5TVVJMPiBzZWNvbmRVUkw7
CitzdGF0aWMgUmV0YWluUHRyPE5TU3RyaW5nPiBhbGVydDsKKworc3RhdGljIGJvb2wgdGVzdENv
bXBsZXRlIHsgZmFsc2UgfTsKK3N0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IGh0bWxVUkw7CisKK0Bp
bnRlcmZhY2UgV2ViR0xUZXN0RGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdh
dGVQcml2YXRlLCBXS1VJRGVsZWdhdGUsIFdLVVJMU2NoZW1lSGFuZGxlcj4KK0BlbmQKKyAgICAK
K0BpbXBsZW1lbnRhdGlvbiBXZWJHTFRlc3REZWxlZ2F0ZQorCistICh2b2lkKXdlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNr
Pil1cmxTY2hlbWVUYXNrCit7CisgICAgTlNTdHJpbmcgKmRhdGEgPSBAIjxzY3JpcHQ+IgorICAg
ICAgICAidmFyIGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOyIKKyAg
ICAgICAgInZhciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJ3dlYmdsJyk7IgorICAgICAg
ICAiaWYgKGNvbnRleHQpIHsiCisgICAgICAgICAgICAidmFyIGZyYW1lYnVmZmVyID0gY29udGV4
dC5jcmVhdGVGcmFtZWJ1ZmZlcigpOyIKKyAgICAgICAgICAgICJ2YXIgc3RhdHVzID0gY29udGV4
dC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGNvbnRleHQuRlJBTUVCVUZGRVIpOyIKKyAgICAgICAg
ICAgICJpZiAoc3RhdHVzID09IGNvbnRleHQuRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQpIgorICAg
ICAgICAgICAgICAgICJhbGVydCgnZG9pbmcgc3R1ZmYgd2l0aCB3ZWJnbCBjb250ZXh0IGZhaWxl
ZCcpOyIKKyAgICAgICAgICAgICJlbHNlIGlmIChzdGF0dXMgPT0gY29udGV4dC5GUkFNRUJVRkZF
Ul9DT01QTEVURSkiCisgICAgICAgICAgICAgICAgImFsZXJ0KCdkb2luZyBzdHVmZiB3aXRoIHdl
YmdsIGNvbnRleHQgc3VjY2VlZGVkJyk7IgorICAgICAgICAgICAgImVsc2UgYWxlcnQoJ3VuZXhw
ZWN0ZWQgc3RhdHVzJyk7IgorICAgICAgICAifSBlbHNlIGFsZXJ0KCd3ZWJnbCBjb250ZXh0IGNy
ZWF0aW9uIGZhaWxlZCcpOyIKKyAgICAiPC9zY3JpcHQ+IjsKKyAgICBbdXJsU2NoZW1lVGFzayBk
aWRSZWNlaXZlUmVzcG9uc2U6W1tbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dXJs
U2NoZW1lVGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoOmRhdGEubGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSBhdXRvcmVsZWFzZV1d
OworICAgIFt1cmxTY2hlbWVUYXNrIGRpZFJlY2VpdmVEYXRhOltkYXRhIGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CisgICAgW3VybFNjaGVtZVRhc2sgZGlkRmluaXNo
XTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0b3BVUkxTY2hl
bWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil1cmxTY2hlbWVUYXNrCit7Cit9CisKKy0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2ViR0xMb2FkUG9saWN5Rm9yVVJMOihO
U1VSTCAqKXVybCBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkdMTG9hZFBvbGljeSkp
ZGVjaXNpb25IYW5kbGVyCit7CisgICAgQVNTRVJUKCFmaXJzdFVSTCk7CisgICAgZmlyc3RVUkwg
PSB1cmw7CisgICAgZGVjaXNpb25IYW5kbGVyKGZpcnN0UG9saWN5KTsKK30KKworLSAodm9pZClf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyByZXNvbHZlV2ViR0xMb2FkUG9saWN5Rm9yVVJM
OihOU1VSTCAqKXVybCBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKF9XS1dlYkdMTG9hZFBvbGlj
eSkpZGVjaXNpb25IYW5kbGVyCit7CisgICAgQVNTRVJUKCFzZWNvbmRVUkwpOworICAgIHNlY29u
ZFVSTCA9IHVybDsKKyAgICBkZWNpc2lvbkhhbmRsZXIoc2Vjb25kUG9saWN5KTsKK30KKworLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkphdmFTY3JpcHRBbGVydFBhbmVs
V2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1l
SW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIGFsZXJ0ID0gbWVzc2FnZTsKKyAgICB0ZXN0Q29tcGxldGUgPSB0cnVl
OworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKK0BlbmQKKworc3RhdGljIGJvb2wgdXJs
c0VxdWFsKGNvbnN0IFJldGFpblB0cjxOU1VSTD4gYSwgY29uc3QgUmV0YWluUHRyPE5TVVJMPiBi
KQoreworICAgIHJldHVybiBbW2EgYWJzb2x1dGVTdHJpbmddIGlzRXF1YWxUb1N0cmluZzpbYiBh
YnNvbHV0ZVN0cmluZ11dOworfQorCitzdGF0aWMgdm9pZCBydW5UZXN0KF9XS1dlYkdMTG9hZFBv
bGljeSBmaXJzdCwgX1dLV2ViR0xMb2FkUG9saWN5IHNlY29uZCA9IF9XS1dlYkdMTG9hZFBvbGlj
eUJsb2NrQ3JlYXRpb24pCit7CisgICAgdGVzdENvbXBsZXRlID0gZmFsc2U7CisgICAgYWxlcnQg
PSBuaWw7CisgICAgZmlyc3RVUkwgPSBuaWw7CisgICAgc2Vjb25kVVJMID0gbmlsOworICAgIGZp
cnN0UG9saWN5ID0gZmlyc3Q7CisgICAgc2Vjb25kUG9saWN5ID0gc2Vjb25kOworICAgIAorICAg
IGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJHTFRlc3REZWxl
Z2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRs
ZXI6ZGVsZWdhdGUuZ2V0KCkgZm9yVVJMU2NoZW1lOkAidGVzdCJdOworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAg
W3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBbd2Vi
VmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOmh0bWxVUkwuZ2V0KCldXTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RDb21wbGV0ZSk7Cit9CisKK1RFU1QoV2ViS2l0
MiwgV2ViR0xQb2xpY3kpCit7CisgICAgaHRtbFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAi
dGVzdDovLy9odG1sIl07CisgICAgCisgICAgcnVuVGVzdChfV0tXZWJHTExvYWRQb2xpY3lCbG9j
a0NyZWF0aW9uKTsKKyAgICBFWFBFQ1RfU1RSRVEoW2FsZXJ0IFVURjhTdHJpbmddLCAid2ViZ2wg
Y29udGV4dCBjcmVhdGlvbiBmYWlsZWQiKTsKKyAgICBFWFBFQ1RfVFJVRSh1cmxzRXF1YWwoaHRt
bFVSTCwgZmlyc3RVUkwpKTsKKyAgICBFWFBFQ1RfVFJVRShudWxscHRyID09IHNlY29uZFVSTCk7
CisKKyAgICBydW5UZXN0KF9XS1dlYkdMTG9hZFBvbGljeUFsbG93Q3JlYXRpb24pOworICAgIEVY
UEVDVF9TVFJFUShbYWxlcnQgVVRGOFN0cmluZ10sICJkb2luZyBzdHVmZiB3aXRoIHdlYmdsIGNv
bnRleHQgc3VjY2VlZGVkIik7CisgICAgRVhQRUNUX1RSVUUodXJsc0VxdWFsKGh0bWxVUkwsIGZp
cnN0VVJMKSk7CisgICAgRVhQRUNUX1RSVUUobnVsbHB0ciA9PSBzZWNvbmRVUkwpOworCisgICAg
cnVuVGVzdChfV0tXZWJHTExvYWRQb2xpY3lQZW5kaW5nQ3JlYXRpb24sIF9XS1dlYkdMTG9hZFBv
bGljeUJsb2NrQ3JlYXRpb24pOworICAgIEVYUEVDVF9TVFJFUShbYWxlcnQgVVRGOFN0cmluZ10s
ICJkb2luZyBzdHVmZiB3aXRoIHdlYmdsIGNvbnRleHQgZmFpbGVkIik7CisgICAgRVhQRUNUX1RS
VUUodXJsc0VxdWFsKGh0bWxVUkwsIGZpcnN0VVJMKSk7CisgICAgRVhQRUNUX1RSVUUodXJsc0Vx
dWFsKGh0bWxVUkwsIHNlY29uZFVSTCkpOworCisgICAgcnVuVGVzdChfV0tXZWJHTExvYWRQb2xp
Y3lQZW5kaW5nQ3JlYXRpb24sIF9XS1dlYkdMTG9hZFBvbGljeUFsbG93Q3JlYXRpb24pOworICAg
IC8vIEZJWE1FOiBUaGlzIG91Z2h0IHRvIHN1Y2NlZWQuIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjkxMjIKKyAgICBFWFBFQ1RfU1RSRVEoW2FsZXJ0IFVURjhTdHJp
bmddLCAiZG9pbmcgc3R1ZmYgd2l0aCB3ZWJnbCBjb250ZXh0IGZhaWxlZCIpOworICAgIEVYUEVD
VF9UUlVFKHVybHNFcXVhbChodG1sVVJMLCBmaXJzdFVSTCkpOworICAgIEVYUEVDVF9UUlVFKHVy
bHNFcXVhbChodG1sVVJMLCBzZWNvbmRVUkwpKTsKK30KKworI2VuZGlmIC8vIFdLX0FQSV9FTkFC
TEVECg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318670</attachid>
            <date>2017-08-21 14:22:53 -0700</date>
            <delta_ts>2017-08-31 18:43:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175779-20170821142252.patch</filename>
            <type>text/plain</type>
            <size>34859</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDkwMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA4LTIxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIE9iakMg
U1BJIGNvcnJlc3BvbmRpbmcgdG8gV0tQYWdlTG9hZGVyQ2xpZW50J3Mgd2ViR0xMb2FkUG9saWN5
IGFuZCByZXNvbHZlV2ViR0xMb2FkUG9saWN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3NzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyMzY3
OTc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENv
dmVyZWQgYnkgbmV3IEFQSSB0ZXN0cy4KKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oOgorCiAyMDE3LTA4LTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtJbnB1dCBFdmVudHNdIFJlbmFtZSBpbnB1dFR5cGUgImZvcm1hdEZv
cmVDb2xvciIgdG8gImZvcm1hdEZvbnRDb2xvciIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMjA5MDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMyLDggKzMz
Miw4IEBAIHB1YmxpYzoKICAgICAvLyBJbmZvcm1zIHRoZSBlbWJlZGRlciB0aGF0IGEgV2ViR0wg
Y2FudmFzIGluc2lkZSB0aGlzIGZyYW1lIHJlY2VpdmVkIGEgbG9zdCBjb250ZXh0CiAgICAgLy8g
bm90aWZpY2F0aW9uIHdpdGggdGhlIGdpdmVuIEdMX0FSQl9yb2J1c3RuZXNzIGd1aWx0L2lubm9j
ZW5jZSBjb2RlIChzZWUgRXh0ZW5zaW9uczNELmgpLgogICAgIHZpcnR1YWwgdm9pZCBkaWRMb3Nl
V2ViR0xDb250ZXh0KGludCkgeyB9Ci0gICAgdmlydHVhbCBXZWJHTExvYWRQb2xpY3kgd2ViR0xQ
b2xpY3lGb3JVUkwoY29uc3QgU3RyaW5nJikgY29uc3QgeyByZXR1cm4gV2ViR0xBbGxvd0NyZWF0
aW9uOyB9Ci0gICAgdmlydHVhbCBXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9y
VVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsgfQor
ICAgIHZpcnR1YWwgV2ViR0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYp
IGNvbnN0IHsgcmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsgfQorICAgIHZpcnR1YWwgV2ViR0xM
b2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdCB7IHJl
dHVybiBXZWJHTEFsbG93Q3JlYXRpb247IH0KICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGZv
cmNlUGFnZVRyYW5zaXRpb25JZk5lZWRlZCgpIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIy
MDkwMSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsNDEgQEAKKzIwMTctMDgtMjEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBBZGQgT2JqQyBTUEkgY29ycmVzcG9uZGluZyB0byBXS1BhZ2VM
b2FkZXJDbGllbnQncyB3ZWJHTExvYWRQb2xpY3kgYW5kIHJlc29sdmVXZWJHTExvYWRQb2xpY3kK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTc3OQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjIzNjc5NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25D
bGllbnQuaDoKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9saWN5
IGNvbnN0KToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6cmVzb2x2ZVdlYkdMTG9h
ZFBvbGljeSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b25EZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToK
KyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUp
OgorICAgICAgICAoV2ViS2l0Ojp0b1dlYkNvcmVXZWJHTExvYWRQb2xpY3kpOgorICAgICAgICAo
V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkdMTG9hZFBvbGlj
eSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2ViR0xQ
b2xpY3lGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc29sdmVXZWJH
TFBvbGljeUZvclVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3ZWJHTFBvbGljeUZvclVSTCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZXNvbHZlV2ViR0xQb2xp
Y3lGb3JVUkwgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OndlYkdMUG9saWN5Rm9yVVJMKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6d2Vi
R0xQb2xpY3lGb3JVUkwpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXNvbHZlV2ViR0xQ
b2xpY3lGb3JVUkwpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6d2ViR0xQb2xpY3lGb3JVUkwpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwpOgorCiAyMDE3
LTA4LTE1ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAg
ICAgVXBkYXRlIHRvIGNoYW5nZVNlbGVjdGlvbldpdGhUb3VjaEF0OmJhc2VJc1N0YXJ0OndpdGhG
bGFnczoKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2
aXNpb24gMjIwOTAxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDAyMSwxNCArNDAyMSwyNCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6dW5hdmFpbGFibGVQbHVnaW5CdXR0CiAjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCiAKICNpZiBFTkFCTEUoV0VCR0wpCi12b2lkIFdlYlBhZ2VQcm94eTo6d2ViR0xQb2xp
Y3lGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwsIHVpbnQzMl90JiBsb2FkUG9saWN5KQordm9pZCBX
ZWJQYWdlUHJveHk6OndlYkdMUG9saWN5Rm9yVVJMKFVSTCYmIHVybCwgUmVmPE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCiB7
Ci0gICAgbG9hZFBvbGljeSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNsaWVudC0+
d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1cmwpKTsKKyAgICBpZiAobV9uYXZpZ2F0aW9uQ2xpZW50
KSB7CisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+d2ViR0xMb2FkUG9saWN5KCp0aGlzLCB1
cmwsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXShXZWJHTExvYWRQb2xpY3kgcG9saWN5KSB7Cisg
ICAgICAgICAgICByZXBseS0+c2VuZChzdGF0aWNfY2FzdDx1aW50MzJfdD4ocG9saWN5KSk7Cisg
ICAgICAgIH0pOworICAgIH0gZWxzZQorICAgICAgICByZXBseS0+c2VuZChzdGF0aWNfY2FzdDx1
aW50MzJfdD4obV9sb2FkZXJDbGllbnQtPndlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsKSkpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFN0
cmluZyYgdXJsLCB1aW50MzJfdCYgbG9hZFBvbGljeSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXNv
bHZlV2ViR0xQb2xpY3lGb3JVUkwoVVJMJiYgdXJsLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCiB7Ci0g
ICAgbG9hZFBvbGljeSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNsaWVudC0+cmVz
b2x2ZVdlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsKSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNs
aWVudCkgeworICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPnJlc29sdmVXZWJHTExvYWRQb2xp
Y3koKnRoaXMsIHVybCwgW3JlcGx5ID0gV1RGTW92ZShyZXBseSldKFdlYkdMTG9hZFBvbGljeSBw
b2xpY3kpIHsKKyAgICAgICAgICAgIHJlcGx5LT5zZW5kKHN0YXRpY19jYXN0PHVpbnQzMl90Pihw
b2xpY3kpKTsKKyAgICAgICAgfSk7CisgICAgfSBlbHNlCisgICAgICAgIHJlcGx5LT5zZW5kKHN0
YXRpY19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNsaWVudC0+cmVzb2x2ZVdlYkdMTG9hZFBvbGlj
eSgqdGhpcywgdXJsKSkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKIApJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIyMDkwMSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MzAwLDggKzEzMDAsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgdW5hdmFpbGFibGVQbHVnaW5CdXR0
b25DbGlja2VkKHVpbnQzMl90IG9wYXF1ZVBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIHBsdWdpblVSTFN0cmluZywgY29uc3Qg
U3RyaW5nJiBwbHVnaW5zUGFnZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZVVSTFN0cmlu
ZywgY29uc3QgU3RyaW5nJiBwYWdlVVJMU3RyaW5nKTsKICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgdm9pZCB3ZWJHTFBvbGljeUZv
clVSTChjb25zdCBTdHJpbmcmIHVybCwgdWludDMyX3QmIGxvYWRQb2xpY3kpOwotICAgIHZvaWQg
cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsLCB1aW50MzJfdCYgbG9h
ZFBvbGljeSk7CisgICAgdm9pZCB3ZWJHTFBvbGljeUZvclVSTChXZWJDb3JlOjpVUkwmJiwgUmVm
PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldlYkdMUG9saWN5Rm9yVVJMOjpEZWxheWVkUmVwbHk+
JiYpOworICAgIHZvaWQgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkNvcmU6OlVSTCYmLCBS
ZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMOjpEZWxh
eWVkUmVwbHk+JiYpOwogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKICAgICB2b2lkIHNldFRvb2xi
YXJzQXJlVmlzaWJsZShib29sIHRvb2xiYXJzQXJlVmlzaWJsZSk7CiAgICAgdm9pZCBnZXRUb29s
YmFyc0FyZVZpc2libGUoYm9vbCYgdG9vbGJhcnNBcmVWaXNpYmxlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9u
IDIyMDkwMSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogICAgIFVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCh1aW50MzJfdCBwbHVn
aW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgU3RyaW5nIG1pbWVUeXBlLCBTdHJpbmcgcGx1Z2luVVJM
U3RyaW5nLCBTdHJpbmcgcGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxTdHJpbmcsIFN0cmluZyBmcmFt
ZVVSTFN0cmluZywgU3RyaW5nIHBhZ2VVUkxTdHJpbmcpCiAjZW5kaWYgLy8gRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkdMUG9saWN5Rm9yVVJM
KFN0cmluZyB1cmwpIC0+ICh1aW50MzJfdCBsb2FkUG9saWN5KQotICAgIFJlc29sdmVXZWJHTFBv
bGljeUZvclVSTChTdHJpbmcgdXJsKSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkKKyAgICBXZWJH
TFBvbGljeUZvclVSTChXZWJDb3JlOjpVUkwgdXJsKSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkg
RGVsYXllZAorICAgIFJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJDb3JlOjpVUkwgdXJsKSAt
PiAodWludDMyX3QgbG9hZFBvbGljeSkgRGVsYXllZAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkK
ICAgICBEaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoc3RydWN0IFdlYkNvcmU6OlZpZXdwb3J0
QXR0cmlidXRlcyBhdHRyaWJ1dGVzKQogICAgIERpZFJlY2VpdmVFdmVudCh1aW50MzJfdCB0eXBl
LCBib29sIGhhbmRsZWQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbkNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgJKHJldmlzaW9uIDIyMDkwMSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTExMiw2ICsxMTIsMTEgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFdF
QkdMKQorICAgIHZpcnR1YWwgdm9pZCB3ZWJHTExvYWRQb2xpY3koV2ViS2l0OjpXZWJQYWdlUHJv
eHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6V2Vi
R0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9uSGFu
ZGxlcihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdURjo6RnVuY3Rpb248dm9pZChXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCB7IGNvbXBsZXRpb25IYW5k
bGVyKFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uKTsgfQorI2Vu
ZGlmCisKICAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZShXZWJLaXQ6
OldlYlBhZ2VQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsRW5kTmF2aWdhdGlvbkdl
c3R1cmUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBib29sIHdpbGxOYXZpZ2F0ZSwgV2ViS2l0OjpX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZE5hdmln
YXRpb25HZXN0dXJlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgYm9vbCB3aWxsTmF2aWdhdGUsIFdl
YktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxl
Z2F0ZVByaXZhdGUuaAkocmV2aXNpb24gMjIwOTAxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMywxMiBAQAogCiBAY2xhc3MgX1dLV2Vic2l0ZVBvbGljaWVzOwogCit0eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tXZWJHTExvYWRQb2xpY3kpIHsKKyAgICBfV0tXZWJH
TExvYWRQb2xpY3lCbG9ja0NyZWF0aW9uLAorICAgIF9XS1dlYkdMTG9hZFBvbGljeUFsbG93Q3Jl
YXRpb24sCisgICAgX1dLV2ViR0xMb2FkUG9saWN5UGVuZGluZ0NyZWF0aW9uLAorfSBXS19BUElf
QVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogc3RhdGlj
IGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
RG93bmxvYWQgPSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KShXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lBbGxvdyArIDEpOwogc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBX
S19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMSksIGlvcyg5LjApKSBfV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5QWxsb3dXaXRob3V0VHJ5aW5nQXBwTGluayA9IChXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3kpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93ICsgMik7CiAKQEAgLTc1LDYgKzgx
LDkgQEAgc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5IAogLSAodm9pZClf
d2ViVmlld0RpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKICNlbmRpZgogCist
ICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHdlYkdMTG9hZFBvbGljeUZvclVS
TDooTlNVUkwgKil1cmwgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShfV0tXZWJHTExvYWRQb2xp
Y3kpKWRlY2lzaW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
cmVzb2x2ZVdlYkdMTG9hZFBvbGljeUZvclVSTDooTlNVUkwgKil1cmwgZGVjaXNpb25IYW5kbGVy
Oih2b2lkICheKShfV0tXZWJHTExvYWRQb2xpY3kpKWRlY2lzaW9uSGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZAogCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5oCShyZXZpc2lvbiAyMjA5MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDYgKzExNSwxMSBA
QCBwcml2YXRlOgogICAgICAgICB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lKGNvbnN0IFF1aWNrTG9va0RvY3VtZW50RGF0YSYpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoV0VCR0wpCisgICAgICAgIHZvaWQgd2ViR0xMb2FkUG9saWN5KFdl
YlBhZ2VQcm94eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFdURjo6RnVuY3Rpb248dm9pZChXZWJD
b3JlOjpXZWJHTExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCBmaW5hbDsK
KyAgICAgICAgdm9pZCByZXNvbHZlV2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYsIFdURjo6RnVuY3Rpb248dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xp
Y3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCiAgICAgICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmLCBSZWY8
QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
PiYmLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZShXZWJQYWdlUHJveHkmLCBBUEk6Ok5hdmlnYXRp
b25SZXNwb25zZSYsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGU7CiAKQEAgLTE5OSw2ICsyMDQsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5N
YWluRnJhbWUgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRSZXF1ZXN0UGFzc3dvcmRGb3JR
dWlja0xvb2tEb2N1bWVudCA6IDE7CiAjZW5kaWYKKworI2lmIEVOQUJMRShXRUJHTCkKKyAgICAg
ICAgYm9vbCB3ZWJWaWV3V2ViR0xMb2FkUG9saWN5Rm9yVVJMIDogMTsKKyAgICAgICAgYm9vbCB3
ZWJWaWV3UmVzb2x2ZVdlYkdMTG9hZFBvbGljeUZvclVSTCA6IDE7CisjZW5kaWYKICAgICB9IG1f
bmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kczsKIAogICAgIFdlYWtPYmpDUHRyPGlkIDxXS0hpc3Rv
cnlEZWxlZ2F0ZVByaXZhdGU+ID4gbV9oaXN0b3J5RGVsZWdhdGU7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lvbiAy
MjA5MDEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE3Miw2ICsxNzIsMTAgQEAgdm9pZCBOYXZpZ2F0aW9uU3Rh
dGU6OnNldE5hdmlnYXRpb25EZWxlZwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3RGlkRmluaXNoTG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRGaW5pc2hMb2Fk
Rm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld0RpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXdEaWRSZXF1
ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudDopXTsKICNlbmRpZgorI2lmIEVOQUJMRShX
RUJHTCkKKyAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dlYkdMTG9hZFBv
bGljeUZvclVSTCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJW
aWV3OndlYkdMTG9hZFBvbGljeUZvclVSTDpkZWNpc2lvbkhhbmRsZXI6KV07CisgICAgbV9uYXZp
Z2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXNvbHZlV2ViR0xMb2FkUG9saWN5Rm9yVVJM
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVzb2x2
ZVdlYkdMTG9hZFBvbGljeUZvclVSTDpkZWNpc2lvbkhhbmRsZXI6KV07CisjZW5kaWYKIH0KIAog
UmV0YWluUHRyPGlkIDxXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGU+ID4gTmF2aWdhdGlvblN0YXRl
OjpoaXN0b3J5RGVsZWdhdGUoKQpAQCAtMjg0LDYgKzI4OCw1MSBAQCBOYXZpZ2F0aW9uU3RhdGU6
Ok5hdmlnYXRpb25DbGllbnQ6On5OYXZpCiB7CiB9CiAKK2lubGluZSBXZWJDb3JlOjpXZWJHTExv
YWRQb2xpY3kgdG9XZWJDb3JlV2ViR0xMb2FkUG9saWN5KF9XS1dlYkdMTG9hZFBvbGljeSBwb2xp
Y3kpCit7CisgICAgc3dpdGNoIChwb2xpY3kpIHsKKyAgICBjYXNlIF9XS1dlYkdMTG9hZFBvbGlj
eUFsbG93Q3JlYXRpb246CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpXZWJHTEFsbG93Q3JlYXRp
b247CisgICAgY2FzZSBfV0tXZWJHTExvYWRQb2xpY3lCbG9ja0NyZWF0aW9uOgorICAgICAgICBy
ZXR1cm4gV2ViQ29yZTo6V2ViR0xCbG9ja0NyZWF0aW9uOworICAgIGNhc2UgX1dLV2ViR0xMb2Fk
UG9saWN5UGVuZGluZ0NyZWF0aW9uOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xQZW5k
aW5nQ3JlYXRpb247CisgICAgfQorICAgIAorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IHJldHVybiBXZWJDb3JlOjpXZWJHTEFsbG93Q3JlYXRpb247Cit9CisKK3ZvaWQgTmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5Jiwg
Y29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFdURjo6RnVuY3Rpb248dm9pZChXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIGlmICghbV9u
YXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXZWJHTExv
YWRQb2xpY3lGb3JVUkwpCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkdMQWxsb3dDcmVh
dGlvbik7CisKKyAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlvblN0YXRl
Lm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpOworICAgIFJlZjxDb21wbGV0aW9uSGFuZGxlckNh
bGxDaGVja2VyPiBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRl
KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3OndlYkdMTG9hZFBv
bGljeUZvclVSTDpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgWyhpZCA8V0tOYXZpZ2F0aW9uRGVs
ZWdhdGVQcml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3Rh
dGUubV93ZWJWaWV3IHdlYkdMTG9hZFBvbGljeUZvclVSTDooTlNVUkwgKil1cmwgZGVjaXNpb25I
YW5kbGVyOkJsb2NrUHRyPHZvaWQoX1dLV2ViR0xMb2FkUG9saWN5KT46OmZyb21DYWxsYWJsZShb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY2hlY2tlciA9
IFdURk1vdmUoY2hlY2tlcildKF9XS1dlYkdMTG9hZFBvbGljeSBwb2xpY3kpIHsKKyAgICAgICAg
aWYgKGNoZWNrZXItPmNvbXBsZXRpb25IYW5kbGVySGFzQmVlbkNhbGxlZCgpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIodG9XZWJDb3JlV2ViR0xMb2FkUG9saWN5KHBvbGlj
eSkpOworICAgIH0pLmdldCgpXTsKK30KKwordm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5JiwgY29uc3QgV2Vi
Q29yZTo6VVJMJiB1cmwsIFdURjo6RnVuY3Rpb248dm9pZChXZWJDb3JlOjpXZWJHTExvYWRQb2xp
Y3kpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBjb25zdAoreworICAgIGlmICghbV9uYXZpZ2F0aW9u
U3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXNvbHZlV2ViR0xMb2Fk
UG9saWN5Rm9yVVJMKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJHTEFsbG93Q3JlYXRp
b24pOworICAgIAorICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3Rh
dGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7CisgICAgUmVmPENvbXBsZXRpb25IYW5kbGVy
Q2FsbENoZWNrZXI+IGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVh
dGUobmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpLCBAc2VsZWN0b3IoX3dlYlZpZXc6cmVzb2x2ZVdl
YkdMTG9hZFBvbGljeUZvclVSTDpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgWyhpZCA8V0tOYXZp
Z2F0aW9uRGVsZWdhdGVQcml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZp
Z2F0aW9uU3RhdGUubV93ZWJWaWV3IHJlc29sdmVXZWJHTExvYWRQb2xpY3lGb3JVUkw6KE5TVVJM
ICopdXJsIGRlY2lzaW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkKF9XS1dlYkdMTG9hZFBvbGljeSk+
Ojpmcm9tQ2FsbGFibGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGNoZWNrZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShfV0tXZWJHTExvYWRQb2xpY3kgcG9s
aWN5KSB7CisgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxs
ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBs
ZXRpb25IYW5kbGVyKCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRvV2ViQ29yZVdlYkdM
TG9hZFBvbGljeShwb2xpY3kpKTsKKyAgICB9KS5nZXQoKV07Cit9CisKIHN0YXRpYyB2b2lkIHRy
eUFwcExpbmsoUmVmUHRyPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9u
LCBjb25zdCBTdHJpbmcmIGN1cnJlbnRNYWluRnJhbWVVUkwsIFdURjo6RnVuY3Rpb248dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBIQVZFKEFQUF9MSU5LUykKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjIwOTAxKQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUyMyw3ICsxNTIzLDcgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6cmVkaXJlY3REYXRhVAogCiAjaWYgRU5BQkxFKFdFQkdMKQogCi1XZWJDb3Jl
OjpXZWJHTExvYWRQb2xpY3kgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OndlYkdMUG9saWN5Rm9yVVJM
KGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdAorV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYkZy
YW1lTG9hZGVyQ2xpZW50Ojp3ZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmIHVybCkgY29uc3QK
IHsKICAgICBpZiAoYXV0byogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0
dXJuIHdlYlBhZ2UtPndlYkdMUG9saWN5Rm9yVVJMKG1fZnJhbWUsIHVybCk7CkBAIC0xNTMxLDcg
KzE1MzEsNyBAQCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViRnJhbWVMb2FkZXJDCiAgICAg
cmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsKIH0KIAotV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgU3Ry
aW5nJiB1cmwpIGNvbnN0CitXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsK
ICAgICBpZiAoYXV0byogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJu
IHdlYlBhZ2UtPnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChtX2ZyYW1lLCB1cmwpOwpJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDIyMDkwMSkKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDUsOCArMjA1LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlZGly
ZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCYpIGZpbmFsOwogICAgIAogI2lmIEVOQUJM
RShXRUJHTCkKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwo
Y29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7Ci0gICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5
IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKyAg
ICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgV2ViQ29y
ZTo6VVJMJikgY29uc3QgZmluYWw7CisgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29s
dmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKICNl
bmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKICAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVh
dGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1M
QXBwbGV0RWxlbWVudCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbVZhbHVlcykg
ZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAkocmV2aXNpb24gMjIwOTAxKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxOSwxMiArODE5LDEyIEBAIFJlZlB0
cjxQbHVnaW4+IFdlYlBhZ2U6OmNyZWF0ZVBsdWdpbihXZWIKICNlbmRpZiAvLyBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKIAogI2lmIEVOQUJMRShXRUJHTCkgJiYgIVBMQVRGT1JNKENPQ09B
KQotV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6OndlYkdMUG9saWN5Rm9yVVJMKFdl
YkZyYW1lKiwgY29uc3QgU3RyaW5nJiAvKiB1cmwgKi8pCitXZWJDb3JlOjpXZWJHTExvYWRQb2xp
Y3kgV2ViUGFnZTo6d2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBVUkwmKQogewog
ICAgIHJldHVybiBXZWJHTEFsbG93Q3JlYXRpb247CiB9CiAKLVdlYkNvcmU6OldlYkdMTG9hZFBv
bGljeSBXZWJQYWdlOjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBT
dHJpbmcmIC8qIHVybCAqLykKK1dlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjpyZXNv
bHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBVUkwmKQogewogICAgIHJldHVy
biBXZWJHTEFsbG93Q3JlYXRpb247CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMjA5MDEpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2Nyw4ICszNjcs
OCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBXZWJDb3JlOjpX
ZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBTdHJpbmcm
KTsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJM
KFdlYkZyYW1lKiwgY29uc3QgU3RyaW5nJik7CisgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5
IHdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgV2ViQ29yZTo6VVJMJik7CisgICAg
V2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFt
ZSosIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogI2VuZGlmCiAgICAgCiAgICAgZW51bSBjbGFzcyBJ
bmNsdWRlUG9zdExheW91dERhdGFIaW50IHsgTm8sIFllcyB9OwpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9u
IDIyMDkwMSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMjk0LDEyICszMjk0LDEyIEBAIHZvaWQgV2ViUGFn
ZTo6d2lsbFN0YXJ0VXNlclRyaWdnZXJlZFpvb20KIH0KIAogI2lmIEVOQUJMRShXRUJHTCkKLVdl
YkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjp3ZWJHTFBvbGljeUZvclVSTChXZWJGcmFt
ZSosIGNvbnN0IFN0cmluZyYpCitXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6d2Vi
R0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBVUkwmKQogewogICAgIHJldHVybiBXZWJH
TEFsbG93Q3JlYXRpb247CiB9CiAKLVdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjpy
ZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViRnJhbWUqLCBjb25zdCBTdHJpbmcmKQorV2ViQ29y
ZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJG
cmFtZSosIGNvbnN0IFVSTCYpCiB7CiAgICAgcmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQ
YWdlTWFjLm1tCShyZXZpc2lvbiAyMjA5MDEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtOTE5LDcgKzkxOSw3
IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREZGcm9tUERGRG9jdW0KIH0KIAogI2lmIEVO
QUJMRShXRUJHTCkKLVdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjp3ZWJHTFBvbGlj
eUZvclVSTChXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgdXJsKQorV2ViQ29yZTo6V2Vi
R0xMb2FkUG9saWN5IFdlYlBhZ2U6OndlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiBmcmFtZSwg
Y29uc3QgVVJMJiB1cmwpCiB7CiAgICAgdWludDMyX3QgcG9saWN5UmVzdWx0ID0gMDsKIApAQCAt
OTI5LDcgKzkyOSw3IEBAIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjp3ZWJHTFAK
ICAgICByZXR1cm4gV2ViR0xBbGxvd0NyZWF0aW9uOwogfQogCi1XZWJDb3JlOjpXZWJHTExvYWRQ
b2xpY3kgV2ViUGFnZTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiBmcmFtZSwg
Y29uc3QgU3RyaW5nJiB1cmwpCitXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6cmVz
b2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgdWludDMyX3QgcG9saWN5UmVzdWx0ID0gMDsKIApJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwkocmV2aXNpb24gMjIwOTAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMDgtMjEgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQg
T2JqQyBTUEkgY29ycmVzcG9uZGluZyB0byBXS1BhZ2VMb2FkZXJDbGllbnQncyB3ZWJHTExvYWRQ
b2xpY3kgYW5kIHJlc29sdmVXZWJHTExvYWRQb2xpY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTc3OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MjIzNjc5NzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OndlYkdMUG9saWN5Rm9yVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwgY29uc3QpOgorCiAyMDE3LTA4
LTE3ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgW1BB
TF0gUmVsb2NhdGUgU2Vzc2lvbklEIHRvIHJvb3QKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAkocmV2aXNpb24gMjIwOTAxKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjExLDgg
KzIxMSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3Jl
OjpXaWRnZXQmKSBmaW5hbDsKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBXZWJDb3JlOjpXZWJH
TExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7
Ci0gICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChj
b25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kg
d2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3QgZmluYWw7CisgICAg
V2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBX
ZWJDb3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKICNlbmRpZgogCiAgICAgUmVmUHRyPFdlYkNvcmU6
OldpZGdldD4gY3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwg
V2ViQ29yZTo6SFRNTEFwcGxldEVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkws
CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMjIwOTAxKQorKysg
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNDYsMTIgKzIxNDYsMTIgQEAgc3RhdGljIGJvb2wg
c2hvdWxkQmxvY2tXZWJHTCgpCiAjZW5kaWYKIH0KIAotV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5
IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3ZWJHTFBvbGljeUZvclVSTChjb25zdCBTdHJpbmcmKSBj
b25zdAorV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3ZWJH
TFBvbGljeUZvclVSTChjb25zdCBVUkwmKSBjb25zdAogewogICAgIHJldHVybiBzaG91bGRCbG9j
a1dlYkdMKCkgPyBXZWJHTEJsb2NrQ3JlYXRpb24gOiBXZWJHTEFsbG93Q3JlYXRpb247CiB9CiAK
LVdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVzb2x2ZVdl
YkdMUG9saWN5Rm9yVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0CitXZWJDb3JlOjpXZWJHTExvYWRQ
b2xpY3kgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25z
dCBVUkwmKSBjb25zdAogewogICAgIHJldHVybiBzaG91bGRCbG9ja1dlYkdMKCkgPyBXZWJHTEJs
b2NrQ3JlYXRpb24gOiBXZWJHTEFsbG93Q3JlYXRpb247CiB9CkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjA5NzQpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxNy0wOC0y
MSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IEFkZCBPYmpDIFNQSSBjb3JyZXNwb25kaW5nIHRvIFdLUGFnZUxvYWRlckNsaWVudCdzIHdlYkdM
TG9hZFBvbGljeSBhbmQgcmVzb2x2ZVdlYkdMTG9hZFBvbGljeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Nzc5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8yMjM2Nzk3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dlYkdM
UG9saWN5Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2ViR0xUZXN0RGVsZWdhdGUgd2ViVmlldzpz
dGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICgtW1dlYkdMVGVzdERlbGVnYXRlIHdlYlZp
ZXc6c3RvcFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICgtW1dlYkdMVGVzdERlbGVnYXRlIF93
ZWJWaWV3OndlYkdMTG9hZFBvbGljeUZvclVSTDpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAg
ICgtW1dlYkdMVGVzdERlbGVnYXRlIF93ZWJWaWV3OnJlc29sdmVXZWJHTExvYWRQb2xpY3lGb3JV
Ukw6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXZWJHTFRlc3REZWxlZ2F0ZSB3ZWJW
aWV3OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpj
b21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKHVybHNFcXVhbCk6CisgICAgICAgIChydW5U
ZXN0KToKKyAgICAgICAgKFRFU1QpOgorCiAyMDE3LTA4LTIxICBQZXIgQXJuZSBWb2xsYW4gIDxw
dm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBEUlQgc2hvdWxkIG9ubHkgYWxsb3cg
YW55IGh0dHBzIGNlcnRpZmljYXRlIGZvciBsb2NhbGhvc3QuCkluZGV4OiBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjIwOTAxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIzMSw2
ICsyMzEsNyBAQAogCQk1QzlFNTk0MTFEM0VCNUFDMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNo
ZS5kYiBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1QzlFNTkzRTFEM0VCMURFMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYiAqLzsgfTsK
IAkJNUM5RTU5NDIxRDNFQjVBQzAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGItc2htIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOUU1
OTNGMUQzRUIxREUwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXNobSAqLzsgfTsKIAkJ
NUM5RTU5NDMxRDNFQjVBQzAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGItd2FsIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOUU1OTQw
MUQzRUIxREUwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXdhbCAqLzsgfTsKKwkJNUNC
NDBCNEExRjQ4MDUxRTAwN0RDN0I5IC8qIFdlYkdMUG9saWN5Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCNDBCNDkxRjQ3RkQ1RTAwN0RDN0I5IC8q
IFdlYkdMUG9saWN5Lm1tICovOyB9OwogCQk1Q0UzNTREOTFFNzBEQTVDMDBCRUZFM0IgLyogV0tD
b250ZW50RXh0ZW5zaW9uU3RvcmUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Q0UzNTREODFFNzBEOUMzMDBCRUZFM0IgLyogV0tDb250ZW50RXh0ZW5z
aW9uU3RvcmUubW0gKi87IH07CiAJCTVFNEIxRDJFMUQ0MDRDNjEwMDA1MzYyMSAvKiBXS1Njcm9s
bFZpZXdEZWxlZ2F0ZUNyYXNoLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNUU0QjFEMkMxRDQwNEM2MTAwMDUzNjIxIC8qIFdLU2Nyb2xsVmlld0RlbGVn
YXRlQ3Jhc2gubW0gKi87IH07CiAJCTYzMUVGRkY2MUU3QjVFOEQwMEQyRUJCOCAvKiBHZW9sb2Nh
dGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYz
MUVGRkY1MUU3QjVFOEQwMEQyRUJCOCAvKiBHZW9sb2NhdGlvbi5tbSAqLzsgfTsKQEAgLTEzMDEs
NiArMTMwMiw3IEBACiAJCTVDOUU1OTNFMUQzRUIxREUwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNh
Y2hlLmRiICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
ZmlsZTsgcGF0aCA9IEFwcGxpY2F0aW9uQ2FjaGUuZGI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDOUU1OTNGMUQzRUIxREUwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXNo
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7
IHBhdGggPSAiQXBwbGljYXRpb25DYWNoZS5kYi1zaG0iOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1QzlFNTk0MDFEM0VCMURFMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYi13
YWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxl
OyBwYXRoID0gIkFwcGxpY2F0aW9uQ2FjaGUuZGItd2FsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUNCNDBCNDkxRjQ3RkQ1RTAwN0RDN0I5IC8qIFdlYkdMUG9saWN5Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViR0xQb2xpY3kubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDRTM1NEQ4MUU3MEQ5QzMwMEJFRkUzQiAvKiBXS0Nv
bnRlbnRFeHRlbnNpb25TdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdLQ29udGVudEV4dGVuc2lvblN0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1RTRCMUQyQzFENDA0QzYxMDAwNTM2MjEgLyogV0tTY3JvbGxWaWV3RGVsZWdhdGVD
cmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLU2Nyb2xs
Vmlld0RlbGVnYXRlQ3Jhc2gubW07IHBhdGggPSAuLi9pb3MvV0tTY3JvbGxWaWV3RGVsZWdhdGVD
cmFzaC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjMxRUZGRjUxRTdCNUU4RDAw
RDJFQkI4IC8qIEdlb2xvY2F0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gR2VvbG9jYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
OTQ3LDYgKzE5NDksNyBAQAogCQkJCTA3RURFRkFDMUVCOTQwMEMwMEQ0MzI5MiAvKiBVc2VyTWVk
aWFEaXNhYmxlZC5tbSAqLywKIAkJCQk5M0U5NDNGMTFDRDNFODdFMDBBQzA4QzIgLyogVmlkZW9D
b250cm9sc01hbmFnZXIubW0gKi8sCiAJCQkJNjM1NkZCMjExRUM0RTBCQTAwNDRCRjE4IC8qIFZp
c2libGVDb250ZW50UmVjdC5tbSAqLywKKwkJCQk1Q0I0MEI0OTFGNDdGRDVFMDA3REM3QjkgLyog
V2ViR0xQb2xpY3kubW0gKi8sCiAJCQkJNTE3MTRFQjYxQ0Y4QzdBNDAwNDcyM0M0IC8qIFdlYlBy
b2Nlc3NLaWxsSURCQ2xlYW51cC5tbSAqLywKIAkJCQk1MTIwQzgzQzFFNjc1MDc5MDAyNUIyNTAg
LyogV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tICovLAogCQkJCTVDOUU1Njg0MURGOTE0
M0QwMEM5RUUzMyAvKiBXZWJzaXRlUG9saWNpZXMubW0gKi8sCkBAIC0zMzI3LDYgKzMzMzAsNyBA
QAogCQkJCTdDQ0U3RjE5MUE0MTFBRTYwMDQ0N0M0QyAvKiBXZWJBcmNoaXZlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDODNFMDRDMUQwQTY0MTgwMEZFQkNGMyAvKiBXZWJDb3JlTlNVUkxTZXNz
aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMUExQTQxMUFFNjAwNDQ3QzRDIC8qIFdl
YkNvcmVTdGF0aXN0aWNzV2l0aE5vV2ViUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
Q0I0MEI0QTFGNDgwNTFFMDA3REM3QjkgLyogV2ViR0xQb2xpY3kubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0VBQjFBNDExQTI0MDA0NDdDNEMgLyogV2ViS2l0QWdub3N0aWNUZXN0Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTE3MTRFQjgxQ0Y4Q0ExNzAwNDcyM0M0IC8qIFdlYlByb2Nlc3NL
aWxsSURCQ2xlYW51cC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUzNjc3MDM0MUNDODAyMjgwMEQ0
MjVCMSAvKiBXZWJTY3JpcHRPYmplY3REZXNjcmlwdGlvbi5tbSBpbiBTb3VyY2VzICovLApJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV2ViR0xQb2xpY3kubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV2Vi
R0xQb2xpY3kubW0JKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyQ29jb2EvV2ViR0xQb2xpY3kubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVE
CisKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgIlV0aWxpdGllcy5oIgorI2lt
cG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlldy5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitzdGF0aWMgX1dL
V2ViR0xMb2FkUG9saWN5IGZpcnN0UG9saWN5Oworc3RhdGljIF9XS1dlYkdMTG9hZFBvbGljeSBz
ZWNvbmRQb2xpY3k7CisKK3N0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IGZpcnN0VVJMOworc3RhdGlj
IFJldGFpblB0cjxOU1VSTD4gc2Vjb25kVVJMOworc3RhdGljIFJldGFpblB0cjxOU1N0cmluZz4g
YWxlcnQ7CisKK3N0YXRpYyBib29sIHRlc3RDb21wbGV0ZSB7IGZhbHNlIH07CitzdGF0aWMgUmV0
YWluUHRyPE5TVVJMPiBodG1sVVJMOworCitAaW50ZXJmYWNlIFdlYkdMVGVzdERlbGVnYXRlIDog
TlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZSwgV0tVSURlbGVnYXRlLCBXS1VS
TFNjaGVtZUhhbmRsZXI+CitAZW5kCisgICAgCitAaW1wbGVtZW50YXRpb24gV2ViR0xUZXN0RGVs
ZWdhdGUKKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2No
ZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdXJsU2NoZW1lVGFzaworeworICAgIE5TU3Ry
aW5nICpkYXRhID0gQCI8c2NyaXB0PiIKKyAgICAgICAgInZhciBjYW52YXMgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdjYW52YXMnKTsiCisgICAgICAgICJ2YXIgY29udGV4dCA9IGNhbnZhcy5n
ZXRDb250ZXh0KCd3ZWJnbCcpOyIKKyAgICAgICAgImlmIChjb250ZXh0KSB7IgorICAgICAgICAg
ICAgInZhciBmcmFtZWJ1ZmZlciA9IGNvbnRleHQuY3JlYXRlRnJhbWVidWZmZXIoKTsiCisgICAg
ICAgICAgICAidmFyIHN0YXR1cyA9IGNvbnRleHQuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhjb250
ZXh0LkZSQU1FQlVGRkVSKTsiCisgICAgICAgICAgICAiaWYgKHN0YXR1cyA9PSBjb250ZXh0LkZS
QU1FQlVGRkVSX1VOU1VQUE9SVEVEKSIKKyAgICAgICAgICAgICAgICAiYWxlcnQoJ2RvaW5nIHN0
dWZmIHdpdGggd2ViZ2wgY29udGV4dCBmYWlsZWQnKTsiCisgICAgICAgICAgICAiZWxzZSBpZiAo
c3RhdHVzID09IGNvbnRleHQuRlJBTUVCVUZGRVJfQ09NUExFVEUpIgorICAgICAgICAgICAgICAg
ICJhbGVydCgnZG9pbmcgc3R1ZmYgd2l0aCB3ZWJnbCBjb250ZXh0IHN1Y2NlZWRlZCcpOyIKKyAg
ICAgICAgICAgICJlbHNlIGFsZXJ0KCd1bmV4cGVjdGVkIHN0YXR1cycpOyIKKyAgICAgICAgIn0g
ZWxzZSBhbGVydCgnd2ViZ2wgY29udGV4dCBjcmVhdGlvbiBmYWlsZWQnKTsiCisgICAgIjwvc2Ny
aXB0PiI7CisgICAgW3VybFNjaGVtZVRhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOltbW05TVVJMUmVz
cG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnVybFNjaGVtZVRhc2sucmVxdWVzdC5VUkwgTUlNRVR5
cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpkYXRhLmxlbmd0aCB0ZXh0RW5j
b2RpbmdOYW1lOm5pbF0gYXV0b3JlbGVhc2VdXTsKKyAgICBbdXJsU2NoZW1lVGFzayBkaWRSZWNl
aXZlRGF0YTpbZGF0YSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwor
ICAgIFt1cmxTY2hlbWVUYXNrIGRpZEZpbmlzaF07Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBzdG9wVVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4p
dXJsU2NoZW1lVGFzaworeworfQorCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IHdlYkdMTG9hZFBvbGljeUZvclVSTDooTlNVUkwgKil1cmwgZGVjaXNpb25IYW5kbGVyOih2
b2lkICheKShfV0tXZWJHTExvYWRQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIEFTU0VS
VCghZmlyc3RVUkwpOworICAgIGZpcnN0VVJMID0gdXJsOworICAgIGRlY2lzaW9uSGFuZGxlcihm
aXJzdFBvbGljeSk7Cit9CisKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
cmVzb2x2ZVdlYkdMTG9hZFBvbGljeUZvclVSTDooTlNVUkwgKil1cmwgZGVjaXNpb25IYW5kbGVy
Oih2b2lkICheKShfV0tXZWJHTExvYWRQb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIEFT
U0VSVCghc2Vjb25kVVJMKTsKKyAgICBzZWNvbmRVUkwgPSB1cmw7CisgICAgZGVjaXNpb25IYW5k
bGVyKHNlY29uZFBvbGljeSk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3Nh
Z2UgaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBhbGVydCA9IG1lc3Nh
Z2U7CisgICAgdGVzdENvbXBsZXRlID0gdHJ1ZTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwor
fQorCitAZW5kCisKK3N0YXRpYyBib29sIHVybHNFcXVhbChjb25zdCBSZXRhaW5QdHI8TlNVUkw+
IGEsIGNvbnN0IFJldGFpblB0cjxOU1VSTD4gYikKK3sKKyAgICByZXR1cm4gW1thIGFic29sdXRl
U3RyaW5nXSBpc0VxdWFsVG9TdHJpbmc6W2IgYWJzb2x1dGVTdHJpbmddXTsKK30KKworc3RhdGlj
IHZvaWQgcnVuVGVzdChfV0tXZWJHTExvYWRQb2xpY3kgZmlyc3QsIF9XS1dlYkdMTG9hZFBvbGlj
eSBzZWNvbmQgPSBfV0tXZWJHTExvYWRQb2xpY3lCbG9ja0NyZWF0aW9uKQoreworICAgIHRlc3RD
b21wbGV0ZSA9IGZhbHNlOworICAgIGFsZXJ0ID0gbmlsOworICAgIGZpcnN0VVJMID0gbmlsOwor
ICAgIHNlY29uZFVSTCA9IG5pbDsKKyAgICBmaXJzdFBvbGljeSA9IGZpcnN0OworICAgIHNlY29u
ZFBvbGljeSA9IHNlY29uZDsKKyAgICAKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtbV2ViR0xUZXN0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbY29u
ZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmRlbGVnYXRlLmdldCgpIGZvclVSTFNjaGVt
ZTpAInRlc3QiXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5n
ZXQoKV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpodG1sVVJMLmdldCgpXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ0ZXN0
Q29tcGxldGUpOworfQorCitURVNUKFdlYktpdDIsIFdlYkdMUG9saWN5KQoreworICAgIGh0bWxV
UkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpAInRlc3Q6Ly8vaHRtbCJdOworICAgIAorICAgIHJ1
blRlc3QoX1dLV2ViR0xMb2FkUG9saWN5QmxvY2tDcmVhdGlvbik7CisgICAgRVhQRUNUX1NUUkVR
KFthbGVydCBVVEY4U3RyaW5nXSwgIndlYmdsIGNvbnRleHQgY3JlYXRpb24gZmFpbGVkIik7Cisg
ICAgRVhQRUNUX1RSVUUodXJsc0VxdWFsKGh0bWxVUkwsIGZpcnN0VVJMKSk7CisgICAgRVhQRUNU
X1RSVUUobnVsbHB0ciA9PSBzZWNvbmRVUkwpOworCisgICAgcnVuVGVzdChfV0tXZWJHTExvYWRQ
b2xpY3lBbGxvd0NyZWF0aW9uKTsKKyAgICBFWFBFQ1RfU1RSRVEoW2FsZXJ0IFVURjhTdHJpbmdd
LCAiZG9pbmcgc3R1ZmYgd2l0aCB3ZWJnbCBjb250ZXh0IHN1Y2NlZWRlZCIpOworICAgIEVYUEVD
VF9UUlVFKHVybHNFcXVhbChodG1sVVJMLCBmaXJzdFVSTCkpOworICAgIEVYUEVDVF9UUlVFKG51
bGxwdHIgPT0gc2Vjb25kVVJMKTsKKworICAgIHJ1blRlc3QoX1dLV2ViR0xMb2FkUG9saWN5UGVu
ZGluZ0NyZWF0aW9uLCBfV0tXZWJHTExvYWRQb2xpY3lCbG9ja0NyZWF0aW9uKTsKKyAgICBFWFBF
Q1RfU1RSRVEoW2FsZXJ0IFVURjhTdHJpbmddLCAiZG9pbmcgc3R1ZmYgd2l0aCB3ZWJnbCBjb250
ZXh0IGZhaWxlZCIpOworICAgIEVYUEVDVF9UUlVFKHVybHNFcXVhbChodG1sVVJMLCBmaXJzdFVS
TCkpOworICAgIEVYUEVDVF9UUlVFKHVybHNFcXVhbChodG1sVVJMLCBzZWNvbmRVUkwpKTsKKwor
ICAgIHJ1blRlc3QoX1dLV2ViR0xMb2FkUG9saWN5UGVuZGluZ0NyZWF0aW9uLCBfV0tXZWJHTExv
YWRQb2xpY3lBbGxvd0NyZWF0aW9uKTsKKyAgICAvLyBGSVhNRTogVGhpcyBvdWdodCB0byBzdWNj
ZWVkLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5MTIyCisgICAg
RVhQRUNUX1NUUkVRKFthbGVydCBVVEY4U3RyaW5nXSwgImRvaW5nIHN0dWZmIHdpdGggd2ViZ2wg
Y29udGV4dCBmYWlsZWQiKTsKKyAgICBFWFBFQ1RfVFJVRSh1cmxzRXF1YWwoaHRtbFVSTCwgZmly
c3RVUkwpKTsKKyAgICBFWFBFQ1RfVFJVRSh1cmxzRXF1YWwoaHRtbFVSTCwgc2Vjb25kVVJMKSk7
Cit9CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319561</attachid>
            <date>2017-08-31 18:43:39 -0700</date>
            <delta_ts>2017-08-31 18:43:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175779-20170831184338.patch</filename>
            <type>text/plain</type>
            <size>34822</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTQzOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA4LTMxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIE9iakMg
U1BJIGNvcnJlc3BvbmRpbmcgdG8gV0tQYWdlTG9hZGVyQ2xpZW50J3Mgd2ViR0xMb2FkUG9saWN5
IGFuZCByZXNvbHZlV2ViR0xMb2FkUG9saWN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3NzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyMzY3
OTc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgQ292ZXJl
ZCBieSBuZXcgQVBJIHRlc3RzLgorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
Lmg6CisKIDIwMTctMDgtMzEgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNhdGFuemFyb0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIyMTIyNik6IFtTT1VQXSBsaWJzb3VwLUNSSVRJ
Q0FMICoqOiBzb3VwX2Nvb2tpZXNfdG9fY29va2llX2hlYWRlcjogYXNzZXJ0aW9uICdjb29raWVz
ICE9IE5VTEwnIGZhaWxlZApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50LmgJKHJldmlzaW9uIDIyMTQzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsOCArMzMyLDggQEAgcHVibGlj
OgogICAgIC8vIEluZm9ybXMgdGhlIGVtYmVkZGVyIHRoYXQgYSBXZWJHTCBjYW52YXMgaW5zaWRl
IHRoaXMgZnJhbWUgcmVjZWl2ZWQgYSBsb3N0IGNvbnRleHQKICAgICAvLyBub3RpZmljYXRpb24g
d2l0aCB0aGUgZ2l2ZW4gR0xfQVJCX3JvYnVzdG5lc3MgZ3VpbHQvaW5ub2NlbmNlIGNvZGUgKHNl
ZSBFeHRlbnNpb25zM0QuaCkuCiAgICAgdmlydHVhbCB2b2lkIGRpZExvc2VXZWJHTENvbnRleHQo
aW50KSB7IH0KLSAgICB2aXJ0dWFsIFdlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChj
b25zdCBTdHJpbmcmKSBjb25zdCB7IHJldHVybiBXZWJHTEFsbG93Q3JlYXRpb247IH0KLSAgICB2
aXJ0dWFsIFdlYkdMTG9hZFBvbGljeSByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgU3Ry
aW5nJikgY29uc3QgeyByZXR1cm4gV2ViR0xBbGxvd0NyZWF0aW9uOyB9CisgICAgdmlydHVhbCBX
ZWJHTExvYWRQb2xpY3kgd2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgVVJMJikgY29uc3QgeyByZXR1
cm4gV2ViR0xBbGxvd0NyZWF0aW9uOyB9CisgICAgdmlydHVhbCBXZWJHTExvYWRQb2xpY3kgcmVz
b2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0IHsgcmV0dXJuIFdlYkdMQWxs
b3dDcmVhdGlvbjsgfQogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VQYWdlVHJhbnNp
dGlvbklmTmVlZGVkKCkgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjIxNDM4KQorKysgU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MSBAQAorMjAx
Ny0wOC0zMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIEFkZCBPYmpDIFNQSSBjb3JyZXNwb25kaW5nIHRvIFdLUGFnZUxvYWRlckNsaWVudCdz
IHdlYkdMTG9hZFBvbGljeSBhbmQgcmVzb2x2ZVdlYkdMTG9hZFBvbGljeQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1Nzc5CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8yMjM2Nzk3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50Lmg6CisgICAgICAg
IChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OndlYkdMTG9hZFBvbGljeSBjb25zdCk6CisgICAgICAg
IChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJHTExvYWRQb2xpY3kgY29uc3QpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6
Ok5hdmlnYXRpb25TdGF0ZTo6c2V0TmF2aWdhdGlvbkRlbGVnYXRlKToKKyAgICAgICAgKFdlYktp
dDo6dG9XZWJDb3JlV2ViR0xMb2FkUG9saWN5KToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlv
blN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp3ZWJHTExvYWRQb2xpY3kgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnJlc29sdmVXZWJH
TExvYWRQb2xpY3kgY29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndlYkdMUG9saWN5Rm9yVVJMKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6d2ViR0xQb2xpY3lGb3JVUkwgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMIGNvbnN0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjp3ZWJHTFBvbGljeUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OndlYkdMUG9saWN5Rm9yVVJMKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OndlYkdMUG9saWN5Rm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKToKKwogMjAxNy0wOC0zMCAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBXS1VJRGVs
ZWdhdGVQcml2YXRlIGVxdWl2YWxlbnQgb2YgV0tQYWdlVUlDbGllbnQncyBkaWRDbGlja0F1dG9G
aWxsQnV0dG9uCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHJldmlzaW9uIDIyMTQzOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwMzIsMTQgKzQwMzIsMjQgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnVuYXZhaWxhYmxlUGx1Z2luQnV0dAogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQogCiAjaWYgRU5BQkxFKFdFQkdMKQotdm9pZCBXZWJQYWdlUHJveHk6OndlYkdM
UG9saWN5Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsLCB1aW50MzJfdCYgbG9hZFBvbGljeSkKK3Zv
aWQgV2ViUGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVSTChVUkwmJiB1cmwsIFJlZjxNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5PiYmIHJlcGx5
KQogewotICAgIGxvYWRQb2xpY3kgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9sb2FkZXJDbGll
bnQtPndlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsKSk7CisgICAgaWYgKG1fbmF2aWdhdGlvbkNs
aWVudCkgeworICAgICAgICBtX25hdmlnYXRpb25DbGllbnQtPndlYkdMTG9hZFBvbGljeSgqdGhp
cywgdXJsLCBbcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oV2ViR0xMb2FkUG9saWN5IHBvbGljeSkg
eworICAgICAgICAgICAgcmVwbHktPnNlbmQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHBvbGljeSkp
OworICAgICAgICB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVwbHktPnNlbmQoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KG1fbG9hZGVyQ2xpZW50LT53ZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCkp
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25z
dCBTdHJpbmcmIHVybCwgdWludDMyX3QmIGxvYWRQb2xpY3kpCit2b2lkIFdlYlBhZ2VQcm94eTo6
cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFVSTCYmIHVybCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQog
ewotICAgIGxvYWRQb2xpY3kgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9sb2FkZXJDbGllbnQt
PnJlc29sdmVXZWJHTExvYWRQb2xpY3koKnRoaXMsIHVybCkpOworICAgIGlmIChtX25hdmlnYXRp
b25DbGllbnQpIHsKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5yZXNvbHZlV2ViR0xMb2Fk
UG9saWN5KCp0aGlzLCB1cmwsIFtyZXBseSA9IFdURk1vdmUocmVwbHkpXShXZWJHTExvYWRQb2xp
Y3kgcG9saWN5KSB7CisgICAgICAgICAgICByZXBseS0+c2VuZChzdGF0aWNfY2FzdDx1aW50MzJf
dD4ocG9saWN5KSk7CisgICAgICAgIH0pOworICAgIH0gZWxzZQorICAgICAgICByZXBseS0+c2Vu
ZChzdGF0aWNfY2FzdDx1aW50MzJfdD4obV9sb2FkZXJDbGllbnQtPnJlc29sdmVXZWJHTExvYWRQ
b2xpY3koKnRoaXMsIHVybCkpKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMjE0MzgpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpA
QCAtMTMwMSw4ICsxMzAxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHVuYXZhaWxhYmxlUGx1Z2lu
QnV0dG9uQ2xpY2tlZCh1aW50MzJfdCBvcGFxdWVQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgU3RyaW5nJiBwbHVnaW5VUkxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgcGx1Z2luc1BhZ2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZyk7CiAjZW5kaWYgLy8gRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCiAjaWYgRU5BQkxFKFdFQkdMKQotICAgIHZvaWQgd2ViR0xQb2xp
Y3lGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwsIHVpbnQzMl90JiBsb2FkUG9saWN5KTsKLSAgICB2
b2lkIHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChjb25zdCBTdHJpbmcmIHVybCwgdWludDMyX3Qm
IGxvYWRQb2xpY3kpOworICAgIHZvaWQgd2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMJiYs
IFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXZWJHTFBvbGljeUZvclVSTDo6RGVsYXllZFJl
cGx5PiYmKTsKKyAgICB2b2lkIHJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJDb3JlOjpVUkwm
JiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlc29sdmVXZWJHTFBvbGljeUZvclVSTDo6
RGVsYXllZFJlcGx5PiYmKTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAgICAgdm9pZCBzZXRU
b29sYmFyc0FyZVZpc2libGUoYm9vbCB0b29sYmFyc0FyZVZpc2libGUpOwogICAgIHZvaWQgZ2V0
VG9vbGJhcnNBcmVWaXNpYmxlKGJvb2wmIHRvb2xiYXJzQXJlVmlzaWJsZSk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZp
c2lvbiAyMjE0MzgpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVz
c2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTM0LDggKzM0LDggQEAgbWVzc2FnZXMgLT4gV2Vi
UGFnZVByb3h5IHsKICAgICBVbmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQodWludDMyX3Qg
cGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIFN0cmluZyBtaW1lVHlwZSwgU3RyaW5nIHBsdWdp
blVSTFN0cmluZywgU3RyaW5nIHBsdWdpbnNwYWdlQXR0cmlidXRlVVJMU3RyaW5nLCBTdHJpbmcg
ZnJhbWVVUkxTdHJpbmcsIFN0cmluZyBwYWdlVVJMU3RyaW5nKQogI2VuZGlmIC8vIEVOQUJMRShO
RVRTQ0FQRV9QTFVHSU5fQVBJKQogI2lmIEVOQUJMRShXRUJHTCkKLSAgICBXZWJHTFBvbGljeUZv
clVSTChTdHJpbmcgdXJsKSAtPiAodWludDMyX3QgbG9hZFBvbGljeSkKLSAgICBSZXNvbHZlV2Vi
R0xQb2xpY3lGb3JVUkwoU3RyaW5nIHVybCkgLT4gKHVpbnQzMl90IGxvYWRQb2xpY3kpCisgICAg
V2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMIHVybCkgLT4gKHVpbnQzMl90IGxvYWRQb2xp
Y3kpIERlbGF5ZWQKKyAgICBSZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2ViQ29yZTo6VVJMIHVy
bCkgLT4gKHVpbnQzMl90IGxvYWRQb2xpY3kpIERlbGF5ZWQKICNlbmRpZiAvLyBFTkFCTEUoV0VC
R0wpCiAgICAgRGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKHN0cnVjdCBXZWJDb3JlOjpWaWV3
cG9ydEF0dHJpYnV0ZXMgYXR0cmlidXRlcykKICAgICBEaWRSZWNlaXZlRXZlbnQodWludDMyX3Qg
dHlwZSwgYm9vbCBoYW5kbGVkKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SU5hdmlnYXRpb25DbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCShyZXZpc2lvbiAyMjE0MzgpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTIsNiArMTEyLDExIEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAorI2lmIEVOQUJM
RShXRUJHTCkKKyAgICB2aXJ0dWFsIHZvaWQgd2ViR0xMb2FkUG9saWN5KFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgY29uc3QgV2ViQ29yZTo6VVJMJiwgV1RGOjpGdW5jdGlvbjx2b2lkKFdlYkNvcmU6
OldlYkdMTG9hZFBvbGljeSk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0IHsgY29tcGxldGlv
bkhhbmRsZXIoV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb24pOyB9
CisgICAgdmlydHVhbCB2b2lkIHJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6
V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgeyBjb21wbGV0aW9u
SGFuZGxlcihXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3k6OldlYkdMQWxsb3dDcmVhdGlvbik7IH0K
KyNlbmRpZgorCiAgICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmUoV2Vi
S2l0OjpXZWJQYWdlUHJveHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbEVuZE5hdmlnYXRp
b25HZXN0dXJlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgYm9vbCB3aWxsTmF2aWdhdGUsIFdlYktp
dDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRO
YXZpZ2F0aW9uR2VzdHVyZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGJvb2wgd2lsbE5hdmlnYXRl
LCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9u
RGVsZWdhdGVQcml2YXRlLmgJKHJldmlzaW9uIDIyMTQzOCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsMTIgQEAKIAogQGNsYXNzIF9XS1dlYnNpdGVQb2xpY2llczsKIAor
dHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLV2ViR0xMb2FkUG9saWN5KSB7CisgICAgX1dL
V2ViR0xMb2FkUG9saWN5QmxvY2tDcmVhdGlvbiwKKyAgICBfV0tXZWJHTExvYWRQb2xpY3lBbGxv
d0NyZWF0aW9uLAorICAgIF9XS1dlYkdMTG9hZFBvbGljeVBlbmRpbmdDcmVhdGlvbiwKK30gV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIHN0
YXRpYyBjb25zdCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgX1dLTmF2aWdhdGlvbkFjdGlvblBv
bGljeURvd25sb2FkID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5QWxsb3cgKyAxKTsKIHN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25BY3Rpb25Qb2xp
Y3kgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBpb3MoOS4wKSkgX1dLTmF2aWdhdGlv
bkFjdGlvblBvbGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExpbmsgPSAoV0tOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyArIDIpOwogCkBAIC03NSw2
ICs4MSw5IEBAIHN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeSAKIC0gKHZv
aWQpX3dlYlZpZXdEaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudDooV0tXZWJW
aWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKGlvcyhXS19JT1NfVEJBKSk7CiAjZW5kaWYK
IAorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3ZWJHTExvYWRQb2xpY3lG
b3JVUkw6KE5TVVJMICopdXJsIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoX1dLV2ViR0xMb2Fk
UG9saWN5KSlkZWNpc2lvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IHJlc29sdmVXZWJHTExvYWRQb2xpY3lGb3JVUkw6KE5TVVJMICopdXJsIGRlY2lzaW9uSGFu
ZGxlcjoodm9pZCAoXikoX1dLV2ViR0xMb2FkUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIEBlbmQK
IAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUuaAkocmV2aXNpb24gMjIxNDM4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNSw2ICsxMTUs
MTEgQEAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBkaWRGaW5pc2hMb2FkRm9yUXVpY2tMb29rRG9j
dW1lbnRJbk1haW5GcmFtZShjb25zdCBRdWlja0xvb2tEb2N1bWVudERhdGEmKSBvdmVycmlkZTsK
ICNlbmRpZgogCisjaWYgRU5BQkxFKFdFQkdMKQorICAgICAgICB2b2lkIHdlYkdMTG9hZFBvbGlj
eShXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
V2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgZmlu
YWw7CisgICAgICAgIHZvaWQgcmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJQYWdlUHJveHkmLCBj
b25zdCBXZWJDb3JlOjpVUkwmLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2Fk
UG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QgZmluYWw7CisjZW5kaWYKKwogICAg
ICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVByb3h5Jiwg
UmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQ
cm94eT4mJiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZp
Z2F0aW9uUmVzcG9uc2UmLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmLCBBUEk6
Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlOwogCkBAIC0xOTksNiArMjA0LDExIEBAIHByaXZh
dGU6CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVu
dEluTWFpbkZyYW1lIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkUmVxdWVzdFBhc3N3b3Jk
Rm9yUXVpY2tMb29rRG9jdW1lbnQgOiAxOwogI2VuZGlmCisKKyNpZiBFTkFCTEUoV0VCR0wpCisg
ICAgICAgIGJvb2wgd2ViVmlld1dlYkdMTG9hZFBvbGljeUZvclVSTCA6IDE7CisgICAgICAgIGJv
b2wgd2ViVmlld1Jlc29sdmVXZWJHTExvYWRQb2xpY3lGb3JVUkwgOiAxOworI2VuZGlmCiAgICAg
fSBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHM7CiAKICAgICBXZWFrT2JqQ1B0cjxpZCA8V0tI
aXN0b3J5RGVsZWdhdGVQcml2YXRlPiA+IG1faGlzdG9yeURlbGVnYXRlOwpJbmRleDogU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkocmV2aXNp
b24gMjIxNDM4KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNzIsNiArMTcyLDEwIEBAIHZvaWQgTmF2aWdhdGlv
blN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWcKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld0RpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkRmluaXNo
TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWU6KV07CiAgICAgbV9uYXZpZ2F0aW9u
RGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1
bWVudCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3RGlk
UmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnQ6KV07CiAjZW5kaWYKKyNpZiBFTkFC
TEUoV0VCR0wpCisgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXZWJHTExv
YWRQb2xpY3lGb3JVUkwgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihf
d2ViVmlldzp3ZWJHTExvYWRQb2xpY3lGb3JVUkw6ZGVjaXNpb25IYW5kbGVyOildOworICAgIG1f
bmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVzb2x2ZVdlYkdMTG9hZFBvbGljeUZv
clVSTCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJl
c29sdmVXZWJHTExvYWRQb2xpY3lGb3JVUkw6ZGVjaXNpb25IYW5kbGVyOildOworI2VuZGlmCiB9
CiAKIFJldGFpblB0cjxpZCA8V0tIaXN0b3J5RGVsZWdhdGVQcml2YXRlPiA+IE5hdmlnYXRpb25T
dGF0ZTo6aGlzdG9yeURlbGVnYXRlKCkKQEAgLTI4NCw2ICsyODgsNTEgQEAgTmF2aWdhdGlvblN0
YXRlOjpOYXZpZ2F0aW9uQ2xpZW50Ojp+TmF2aQogewogfQogCitpbmxpbmUgV2ViQ29yZTo6V2Vi
R0xMb2FkUG9saWN5IHRvV2ViQ29yZVdlYkdMTG9hZFBvbGljeShfV0tXZWJHTExvYWRQb2xpY3kg
cG9saWN5KQoreworICAgIHN3aXRjaCAocG9saWN5KSB7CisgICAgY2FzZSBfV0tXZWJHTExvYWRQ
b2xpY3lBbGxvd0NyZWF0aW9uOgorICAgICAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxvd0Ny
ZWF0aW9uOworICAgIGNhc2UgX1dLV2ViR0xMb2FkUG9saWN5QmxvY2tDcmVhdGlvbjoKKyAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6OldlYkdMQmxvY2tDcmVhdGlvbjsKKyAgICBjYXNlIF9XS1dlYkdM
TG9hZFBvbGljeVBlbmRpbmdDcmVhdGlvbjoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OldlYkdM
UGVuZGluZ0NyZWF0aW9uOworICAgIH0KKyAgICAKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gV2ViQ29yZTo6V2ViR0xBbGxvd0NyZWF0aW9uOworfQorCit2b2lkIE5hdmln
YXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6d2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94
eSYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6
V2ViR0xMb2FkUG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBpZiAo
IW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3V2Vi
R0xMb2FkUG9saWN5Rm9yVVJMKQorICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJHTEFsbG93
Q3JlYXRpb24pOworCisgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBtX25hdmlnYXRpb25T
dGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKTsKKyAgICBSZWY8Q29tcGxldGlvbkhhbmRs
ZXJDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNy
ZWF0ZShuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmlldzp3ZWJHTExv
YWRQb2xpY3lGb3JVUkw6ZGVjaXNpb25IYW5kbGVyOikpOworICAgIFsoaWQgPFdLTmF2aWdhdGlv
bkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3Om1fbmF2aWdhdGlv
blN0YXRlLm1fd2ViVmlldyB3ZWJHTExvYWRQb2xpY3lGb3JVUkw6KE5TVVJMICopdXJsIGRlY2lz
aW9uSGFuZGxlcjpCbG9ja1B0cjx2b2lkKF9XS1dlYkdMTG9hZFBvbGljeSk+Ojpmcm9tQ2FsbGFi
bGUoW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNoZWNr
ZXIgPSBXVEZNb3ZlKGNoZWNrZXIpXShfV0tXZWJHTExvYWRQb2xpY3kgcG9saWN5KSB7CisgICAg
ICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVy
KCk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRvV2ViQ29yZVdlYkdMTG9hZFBvbGljeShw
b2xpY3kpKTsKKyAgICB9KS5nZXQoKV07Cit9CisKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjpyZXNvbHZlV2ViR0xMb2FkUG9saWN5KFdlYlBhZ2VQcm94eSYsIGNvbnN0
IFdlYkNvcmU6OlVSTCYgdXJsLCBXVEY6OkZ1bmN0aW9uPHZvaWQoV2ViQ29yZTo6V2ViR0xMb2Fk
UG9saWN5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKK3sKKyAgICBpZiAoIW1fbmF2aWdh
dGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVzb2x2ZVdlYkdM
TG9hZFBvbGljeUZvclVSTCkKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViR0xBbGxvd0Ny
ZWF0aW9uKTsKKyAgICAKKyAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlv
blN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpOworICAgIFJlZjxDb21wbGV0aW9uSGFu
ZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6
Y3JlYXRlKG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3OnJlc29s
dmVXZWJHTExvYWRQb2xpY3lGb3JVUkw6ZGVjaXNpb25IYW5kbGVyOikpOworICAgIFsoaWQgPFdL
TmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3Om1f
bmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyByZXNvbHZlV2ViR0xMb2FkUG9saWN5Rm9yVVJMOihO
U1VSTCAqKXVybCBkZWNpc2lvbkhhbmRsZXI6QmxvY2tQdHI8dm9pZChfV0tXZWJHTExvYWRQb2xp
Y3kpPjo6ZnJvbUNhbGxhYmxlKFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKV0oX1dLV2ViR0xMb2FkUG9saWN5
IHBvbGljeSkgeworICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVu
Q2FsbGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNoZWNrZXItPmRpZENhbGxD
b21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0b1dlYkNvcmVX
ZWJHTExvYWRQb2xpY3kocG9saWN5KSk7CisgICAgfSkuZ2V0KCldOworfQorCiBzdGF0aWMgdm9p
ZCB0cnlBcHBMaW5rKFJlZlB0cjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlvbkFj
dGlvbiwgY29uc3QgU3RyaW5nJiBjdXJyZW50TWFpbkZyYW1lVVJMLCBXVEY6OkZ1bmN0aW9uPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAjaWYgSEFWRShBUFBfTElOS1MpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDIyMTQzOCkKKysr
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MjMsNyArMTUyMyw3IEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OnJlZGlyZWN0RGF0YVQKIAogI2lmIEVOQUJMRShXRUJHTCkKIAotV2Vi
Q29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp3ZWJHTFBvbGljeUZv
clVSTChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKK1dlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6d2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgVVJMJiB1cmwpIGNv
bnN0CiB7CiAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAg
IHJldHVybiB3ZWJQYWdlLT53ZWJHTFBvbGljeUZvclVSTChtX2ZyYW1lLCB1cmwpOwpAQCAtMTUz
MSw3ICsxNTMxLDcgQEAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYkZyYW1lTG9hZGVyQwog
ICAgIHJldHVybiBXZWJHTEFsbG93Q3JlYXRpb247CiB9CiAKLVdlYkNvcmU6OldlYkdMTG9hZFBv
bGljeSBXZWJGcmFtZUxvYWRlckNsaWVudDo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0
IFN0cmluZyYgdXJsKSBjb25zdAorV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgVVJMJiB1cmwpIGNvbnN0
CiB7CiAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJl
dHVybiB3ZWJQYWdlLT5yZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwobV9mcmFtZSwgdXJsKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMjE0MzgpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjA1LDggKzIwNSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBy
ZWRpcmVjdERhdGFUb1BsdWdpbihXZWJDb3JlOjpXaWRnZXQmKSBmaW5hbDsKICAgICAKICNpZiBF
TkFCTEUoV0VCR0wpCi0gICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9y
VVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwotICAgIFdlYkNvcmU6OldlYkdMTG9hZFBv
bGljeSByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgU3RyaW5nJikgY29uc3QgZmluYWw7
CisgICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFdl
YkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOworICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBy
ZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJikgY29uc3QgZmluYWw7
CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQogCiAgICAgUmVmUHRyPFdlYkNvcmU6OldpZGdldD4g
Y3JlYXRlSmF2YUFwcGxldFdpZGdldChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6
SFRNTEFwcGxldEVsZW1lbnQmLCBjb25zdCBXZWJDb3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1
ZXMpIGZpbmFsOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAJKHJldmlzaW9uIDIyMTQzOCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MTksMTIgKzgxOSwxMiBAQCBS
ZWZQdHI8UGx1Z2luPiBXZWJQYWdlOjpjcmVhdGVQbHVnaW4oV2ViCiAjZW5kaWYgLy8gRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNpZiBFTkFCTEUoV0VCR0wpICYmICFQTEFURk9STShD
T0NPQSkKLVdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjp3ZWJHTFBvbGljeUZvclVS
TChXZWJGcmFtZSosIGNvbnN0IFN0cmluZyYgLyogdXJsICovKQorV2ViQ29yZTo6V2ViR0xMb2Fk
UG9saWN5IFdlYlBhZ2U6OndlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJikK
IHsKICAgICByZXR1cm4gV2ViR0xBbGxvd0NyZWF0aW9uOwogfQogCi1XZWJDb3JlOjpXZWJHTExv
YWRQb2xpY3kgV2ViUGFnZTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29u
c3QgU3RyaW5nJiAvKiB1cmwgKi8pCitXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6
cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJikKIHsKICAgICBy
ZXR1cm4gV2ViR0xBbGxvd0NyZWF0aW9uOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjIxNDM4KQorKysgU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjcsOCAr
MzY3LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoV0VCR0wpCi0gICAgV2ViQ29y
ZTo6V2ViR0xMb2FkUG9saWN5IHdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgU3Ry
aW5nJik7Ci0gICAgV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTFBvbGljeUZv
clVSTChXZWJGcmFtZSosIGNvbnN0IFN0cmluZyYpOworICAgIFdlYkNvcmU6OldlYkdMTG9hZFBv
bGljeSB3ZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSosIGNvbnN0IFdlYkNvcmU6OlVSTCYpOwor
ICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSByZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoV2Vi
RnJhbWUqLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKICNlbmRpZgogICAgIAogICAgIGVudW0gY2xh
c3MgSW5jbHVkZVBvc3RMYXlvdXREYXRhSGludCB7IE5vLCBZZXMgfTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCShyZXZp
c2lvbiAyMjE0MzgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMwMSwxMiArMzMwMSwxMiBAQCB2b2lkIFdl
YlBhZ2U6OndpbGxTdGFydFVzZXJUcmlnZ2VyZWRab29tCiB9CiAKICNpZiBFTkFCTEUoV0VCR0wp
Ci1XZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6d2ViR0xQb2xpY3lGb3JVUkwoV2Vi
RnJhbWUqLCBjb25zdCBTdHJpbmcmKQorV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6
OndlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgVVJMJikKIHsKICAgICByZXR1cm4g
V2ViR0xBbGxvd0NyZWF0aW9uOwogfQogCi1XZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViUGFn
ZTo6cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKFdlYkZyYW1lKiwgY29uc3QgU3RyaW5nJikKK1dl
YkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwo
V2ViRnJhbWUqLCBjb25zdCBVUkwmKQogewogICAgIHJldHVybiBXZWJHTEFsbG93Q3JlYXRpb247
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQkocmV2aXNpb24gMjIxNDM4KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTkyNCw3ICs5
MjQsNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGRnJvbVBERkRvY3VtCiB9CiAKICNp
ZiBFTkFCTEUoV0VCR0wpCi1XZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6d2ViR0xQ
b2xpY3lGb3JVUkwoV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHVybCkKK1dlYkNvcmU6
OldlYkdMTG9hZFBvbGljeSBXZWJQYWdlOjp3ZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSogZnJh
bWUsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIHVpbnQzMl90IHBvbGljeVJlc3VsdCA9IDA7CiAK
QEAgLTkzNCw3ICs5MzQsNyBAQCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViUGFnZTo6d2Vi
R0xQCiAgICAgcmV0dXJuIFdlYkdMQWxsb3dDcmVhdGlvbjsKIH0KIAotV2ViQ29yZTo6V2ViR0xM
b2FkUG9saWN5IFdlYlBhZ2U6OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSogZnJh
bWUsIGNvbnN0IFN0cmluZyYgdXJsKQorV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdlYlBhZ2U6
OnJlc29sdmVXZWJHTFBvbGljeUZvclVSTChXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJs
KQogewogICAgIHVpbnQzMl90IHBvbGljeVJlc3VsdCA9IDA7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTQzOCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA4LTMx
ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
QWRkIE9iakMgU1BJIGNvcnJlc3BvbmRpbmcgdG8gV0tQYWdlTG9hZGVyQ2xpZW50J3Mgd2ViR0xM
b2FkUG9saWN5IGFuZCByZXNvbHZlV2ViR0xMb2FkUG9saWN5CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU3NzkKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzIyMzY3OTc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OndlYkdMUG9saWN5Rm9yVVJMIGNvbnN0KToKKyAgICAgICAgKFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwgY29uc3QpOgorCiAyMDE3LTA4
LTMwICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBVcHN0
cmVhbSBBY2Nlc3NpYmlsaXR5LXJlbGF0ZWQgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZ1bmN0aW9u
cwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMjE0MzgpCisrKyBT
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsOCArMjExLDggQEAgcHJpdmF0ZToKICAgICB2b2lk
IHJlZGlyZWN0RGF0YVRvUGx1Z2luKFdlYkNvcmU6OldpZGdldCYpIGZpbmFsOwogCiAjaWYgRU5B
QkxFKFdFQkdMKQotICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVS
TChjb25zdCBTdHJpbmcmKSBjb25zdCBmaW5hbDsKLSAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xp
Y3kgcmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0IGZpbmFsOwor
ICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTFBvbGljeUZvclVSTChjb25zdCBXZWJD
b3JlOjpVUkwmKSBjb25zdCBmaW5hbDsKKyAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVz
b2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIGNvbnN0IGZpbmFsOwog
I2VuZGlmCiAKICAgICBSZWZQdHI8V2ViQ29yZTo6V2lkZ2V0PiBjcmVhdGVKYXZhQXBwbGV0V2lk
Z2V0KGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpIVE1MQXBwbGV0RWxlbWVudCYs
IGNvbnN0IFdlYkNvcmU6OlVSTCYgYmFzZVVSTCwKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCShyZXZpc2lvbiAyMjE0MzgpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjE0
NiwxMiArMjE0NiwxMiBAQCBzdGF0aWMgYm9vbCBzaG91bGRCbG9ja1dlYkdMKCkKICNlbmRpZgog
fQogCi1XZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OndlYkdM
UG9saWN5Rm9yVVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0CitXZWJDb3JlOjpXZWJHTExvYWRQb2xp
Y3kgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OndlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIHNob3VsZEJsb2NrV2ViR0woKSA/IFdlYkdMQmxvY2tDcmVhdGlv
biA6IFdlYkdMQWxsb3dDcmVhdGlvbjsKIH0KIAotV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgU3RyaW5n
JikgY29uc3QKK1dlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBXZWJGcmFtZUxvYWRlckNsaWVudDo6
cmVzb2x2ZVdlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFVSTCYpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IHNob3VsZEJsb2NrV2ViR0woKSA/IFdlYkdMQmxvY2tDcmVhdGlvbiA6IFdlYkdMQWxsb3dDcmVh
dGlvbjsKIH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDIyMTQ2MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDIyIEBACisyMDE3LTA4LTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIE9iakMgU1BJIGNvcnJlc3BvbmRpbmcg
dG8gV0tQYWdlTG9hZGVyQ2xpZW50J3Mgd2ViR0xMb2FkUG9saWN5IGFuZCByZXNvbHZlV2ViR0xM
b2FkUG9saWN5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzU3NzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIyMzY3OTc1PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dlYkdMUG9saWN5Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2Vi
R0xUZXN0RGVsZWdhdGUgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICgt
W1dlYkdMVGVzdERlbGVnYXRlIHdlYlZpZXc6c3RvcFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAg
ICgtW1dlYkdMVGVzdERlbGVnYXRlIF93ZWJWaWV3OndlYkdMTG9hZFBvbGljeUZvclVSTDpkZWNp
c2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dlYkdMVGVzdERlbGVnYXRlIF93ZWJWaWV3OnJl
c29sdmVXZWJHTExvYWRQb2xpY3lGb3JVUkw6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtXZWJHTFRlc3REZWxlZ2F0ZSB3ZWJWaWV3OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1l
c3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKHVy
bHNFcXVhbCk6CisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAgKFRFU1QpOgorCiAyMDE3LTA4
LTMxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgV1NMIHNob3Vs
ZCBzdXBwb3J0IG1ha2VwdHIgKFwpCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjIxNDM4KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIyOSw2ICsyMjksNyBAQAogCQk1
QzcyNkQ2RjFEM0VFMDZFMDBDNUUxQTEgLyogSW5zdGFuY2VNZXRob2RTd2l6emxlci5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNzI2RDZFMUQzRUUw
NjgwMEM1RTFBMSAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1tICovOyB9OwogCQk1Qzc5NjQx
MDFFQjAyNzhEMDA3NUQ3NEMgLyogRXZlbnRNb2RpZmllcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3OTY0MEYxRUIwMjY5QjAwNzVENzRDIC8q
IEV2ZW50TW9kaWZpZXJzLmNwcCAqLzsgfTsKIAkJNUM4MzhGN0YxREIwNEY5MDAwODI4NThGIC8q
IExvYWRJbnZhbGlkVVJMUmVxdWVzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU3OTAxRkFFMUNBRjEzNzEwMEVENjRGOSAvKiBMb2FkSW52YWxpZFVS
TFJlcXVlc3QubW0gKi87IH07CisJCTVDOTczRjVDMUY1OEVGOEIwMDM1OUMyNyAvKiBXZWJHTFBv
bGljeS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
OTczRjVCMUY1OEVGMEEwMDM1OUMyNyAvKiBXZWJHTFBvbGljeS5tbSAqLzsgfTsKIAkJNUM5RTU2
ODUxREY5MTQ1NDAwQzlFRTMzIC8qIFdlYnNpdGVQb2xpY2llcy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOUU1Njg0MURGOTE0M0QwMEM5RUUzMyAv
KiBXZWJzaXRlUG9saWNpZXMubW0gKi87IH07CiAJCTVDOUU1Njg3MURGOTE0QUUwMEM5RUUzMyAv
KiBjb250ZW50QmxvY2tlckNoZWNrLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM5RTU2ODYxREY5MTQ4RTAwQzlFRTMzIC8qIGNvbnRl
bnRCbG9ja2VyQ2hlY2suaHRtbCAqLzsgfTsKIAkJNUM5RTU5NDExRDNFQjVBQzAwRTNDNjJFIC8q
IEFwcGxpY2F0aW9uQ2FjaGUuZGIgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUM5RTU5M0UxRDNFQjFERTAwRTNDNjJFIC8qIEFwcGxpY2F0aW9u
Q2FjaGUuZGIgKi87IH07CkBAIC0xMzA4LDYgKzEzMDksNyBAQAogCQk1QzcyNkQ2RDFEM0VFMDY4
MDBDNUUxQTEgLyogSW5zdGFuY2VNZXRob2RTd2l6emxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLmg7IHBhdGggPSBjb2NvYS9JbnN0
YW5jZU1ldGhvZFN3aXp6bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzI2
RDZFMUQzRUUwNjgwMEM1RTFBMSAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gSW5zdGFuY2VNZXRob2RTd2l6emxlci5t
bTsgcGF0aCA9IGNvY29hL0luc3RhbmNlTWV0aG9kU3dpenpsZXIubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDNzk2NDBGMUVCMDI2OUIwMDc1RDc0QyAvKiBFdmVudE1vZGlmaWVy
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudE1vZGlmaWVy
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDOTczRjVCMUY1OEVGMEEwMDM1
OUMyNyAvKiBXZWJHTFBvbGljeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYkdMUG9saWN5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlF
NTY4NDFERjkxNDNEMDBDOUVFMzMgLyogV2Vic2l0ZVBvbGljaWVzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vic2l0ZVBvbGljaWVzLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzlFNTY4NjFERjkxNDhFMDBDOUVFMzMgLyogY29udGVudEJs
b2NrZXJDaGVjay5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gY29udGVudEJsb2Nr
ZXJDaGVjay5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlFNTkzRTFEM0VC
MURFMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSBBcHBsaWNhdGlvbkNhY2hl
LmRiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk3MCw2ICsxOTcyLDcgQEAKIAkJ
CQkwN0VERUZBQzFFQjk0MDBDMDBENDMyOTIgLyogVXNlck1lZGlhRGlzYWJsZWQubW0gKi8sCiAJ
CQkJOTNFOTQzRjExQ0QzRTg3RTAwQUMwOEMyIC8qIFZpZGVvQ29udHJvbHNNYW5hZ2VyLm1tICov
LAogCQkJCTYzNTZGQjIxMUVDNEUwQkEwMDQ0QkYxOCAvKiBWaXNpYmxlQ29udGVudFJlY3QubW0g
Ki8sCisJCQkJNUM5NzNGNUIxRjU4RUYwQTAwMzU5QzI3IC8qIFdlYkdMUG9saWN5Lm1tICovLAog
CQkJCTUxNzE0RUI2MUNGOEM3QTQwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAu
bW0gKi8sCiAJCQkJNTEyMEM4M0MxRTY3NTA3OTAwMjVCMjUwIC8qIFdlYnNpdGVEYXRhU3RvcmVD
dXN0b21QYXRocy5tbSAqLywKIAkJCQk1QzlFNTY4NDFERjkxNDNEMDBDOUVFMzMgLyogV2Vic2l0
ZVBvbGljaWVzLm1tICovLApAQCAtMzM1OSw2ICszMzYyLDcgQEAKIAkJCQk3Q0NFN0YxOTFBNDEx
QUU2MDA0NDdDNEMgLyogV2ViQXJjaGl2ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTA0
QzFEMEE2NDE4MDBGRUJDRjMgLyogV2ViQ29yZU5TVVJMU2Vzc2lvbi5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTdDQ0U3RjFBMUE0MTFBRTYwMDQ0N0M0QyAvKiBXZWJDb3JlU3RhdGlzdGljc1dpdGhO
b1dlYlByb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUM5NzNGNUMxRjU4RUY4QjAwMzU5
QzI3IC8qIFdlYkdMUG9saWN5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQUIxQTQxMUEy
NDAwNDQ3QzRDIC8qIFdlYktpdEFnbm9zdGljVGVzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUx
NzE0RUI4MUNGOENBMTcwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAubW0gaW4g
U291cmNlcyAqLywKIAkJCQk1MzY3NzAzNDFDQzgwMjI4MDBENDI1QjEgLyogV2ViU2NyaXB0T2Jq
ZWN0RGVzY3JpcHRpb24ubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViR0xQb2xpY3kubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJHTFBvbGljeS5tbQkobm9uZXhpc3Rl
bnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYkdMUG9saWN5
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJUZXN0V0tXZWJW
aWV3LmgiCisjaW1wb3J0ICJVdGlsaXRpZXMuaCIKKyNpbXBvcnQgPFdlYktpdC9XS05hdmlnYXRp
b25EZWxlZ2F0ZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KKyNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworc3RhdGljIF9XS1dlYkdMTG9hZFBvbGljeSBmaXJzdFBv
bGljeTsKK3N0YXRpYyBfV0tXZWJHTExvYWRQb2xpY3kgc2Vjb25kUG9saWN5OworCitzdGF0aWMg
UmV0YWluUHRyPE5TVVJMPiBmaXJzdFVSTDsKK3N0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IHNlY29u
ZFVSTDsKK3N0YXRpYyBSZXRhaW5QdHI8TlNTdHJpbmc+IGFsZXJ0OworCitzdGF0aWMgYm9vbCB0
ZXN0Q29tcGxldGUgeyBmYWxzZSB9Oworc3RhdGljIFJldGFpblB0cjxOU1VSTD4gaHRtbFVSTDsK
KworQGludGVyZmFjZSBXZWJHTFRlc3REZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25E
ZWxlZ2F0ZVByaXZhdGUsIFdLVUlEZWxlZ2F0ZSwgV0tVUkxTY2hlbWVIYW5kbGVyPgorQGVuZAor
ICAgIAorQGltcGxlbWVudGF0aW9uIFdlYkdMVGVzdERlbGVnYXRlCisKKy0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVt
ZVRhc2s+KXVybFNjaGVtZVRhc2sKK3sKKyAgICBOU1N0cmluZyAqZGF0YSA9IEAiPHNjcmlwdD4i
CisgICAgICAgICJ2YXIgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7
IgorICAgICAgICAidmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnd2ViZ2wnKTsiCisg
ICAgICAgICJpZiAoY29udGV4dCkgeyIKKyAgICAgICAgICAgICJ2YXIgZnJhbWVidWZmZXIgPSBj
b250ZXh0LmNyZWF0ZUZyYW1lYnVmZmVyKCk7IgorICAgICAgICAgICAgInZhciBzdGF0dXMgPSBj
b250ZXh0LmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoY29udGV4dC5GUkFNRUJVRkZFUik7IgorICAg
ICAgICAgICAgImlmIChzdGF0dXMgPT0gY29udGV4dC5GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRCki
CisgICAgICAgICAgICAgICAgImFsZXJ0KCdkb2luZyBzdHVmZiB3aXRoIHdlYmdsIGNvbnRleHQg
ZmFpbGVkJyk7IgorICAgICAgICAgICAgImVsc2UgaWYgKHN0YXR1cyA9PSBjb250ZXh0LkZSQU1F
QlVGRkVSX0NPTVBMRVRFKSIKKyAgICAgICAgICAgICAgICAiYWxlcnQoJ2RvaW5nIHN0dWZmIHdp
dGggd2ViZ2wgY29udGV4dCBzdWNjZWVkZWQnKTsiCisgICAgICAgICAgICAiZWxzZSBhbGVydCgn
dW5leHBlY3RlZCBzdGF0dXMnKTsiCisgICAgICAgICJ9IGVsc2UgYWxlcnQoJ3dlYmdsIGNvbnRl
eHQgY3JlYXRpb24gZmFpbGVkJyk7IgorICAgICI8L3NjcmlwdD4iOworICAgIFt1cmxTY2hlbWVU
YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpbW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVS
TDp1cmxTY2hlbWVUYXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3Rl
ZENvbnRlbnRMZW5ndGg6ZGF0YS5sZW5ndGggdGV4dEVuY29kaW5nTmFtZTpuaWxdIGF1dG9yZWxl
YXNlXV07CisgICAgW3VybFNjaGVtZVRhc2sgZGlkUmVjZWl2ZURhdGE6W2RhdGEgZGF0YVVzaW5n
RW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKKyAgICBbdXJsU2NoZW1lVGFzayBkaWRG
aW5pc2hdOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RvcFVS
TFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXVybFNjaGVtZVRhc2sKK3sKK30KKwor
LSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3ZWJHTExvYWRQb2xpY3lGb3JV
Ukw6KE5TVVJMICopdXJsIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoX1dLV2ViR0xMb2FkUG9s
aWN5KSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAgICBBU1NFUlQoIWZpcnN0VVJMKTsKKyAgICBmaXJz
dFVSTCA9IHVybDsKKyAgICBkZWNpc2lvbkhhbmRsZXIoZmlyc3RQb2xpY3kpOworfQorCistICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJlc29sdmVXZWJHTExvYWRQb2xpY3lG
b3JVUkw6KE5TVVJMICopdXJsIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoX1dLV2ViR0xMb2Fk
UG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAgICBBU1NFUlQoIXNlY29uZFVSTCk7CisgICAg
c2Vjb25kVVJMID0gdXJsOworICAgIGRlY2lzaW9uSGFuZGxlcihzZWNvbmRQb2xpY3kpOworfQor
CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuSmF2YVNjcmlwdEFsZXJ0
UGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6KFdL
RnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBs
ZXRpb25IYW5kbGVyCit7CisgICAgYWxlcnQgPSBtZXNzYWdlOworICAgIHRlc3RDb21wbGV0ZSA9
IHRydWU7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKworQGVuZAorCitzdGF0aWMgdm9p
ZCBydW5UZXN0KF9XS1dlYkdMTG9hZFBvbGljeSBmaXJzdCwgX1dLV2ViR0xMb2FkUG9saWN5IHNl
Y29uZCA9IF9XS1dlYkdMTG9hZFBvbGljeUJsb2NrQ3JlYXRpb24pCit7CisgICAgdGVzdENvbXBs
ZXRlID0gZmFsc2U7CisgICAgYWxlcnQgPSBuaWw7CisgICAgZmlyc3RVUkwgPSBuaWw7CisgICAg
c2Vjb25kVVJMID0gbmlsOworICAgIGZpcnN0UG9saWN5ID0gZmlyc3Q7CisgICAgc2Vjb25kUG9s
aWN5ID0gc2Vjb25kOworICAgIAorICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tXZWJHTFRlc3REZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1
cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6ZGVsZWdhdGUuZ2V0KCkgZm9yVVJMU2NoZW1lOkAi
dGVzdCJdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRl
bGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
Omh0bWxVUkwuZ2V0KCldXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRlc3RDb21w
bGV0ZSk7Cit9CisKK1RFU1QoV2ViS2l0MiwgV2ViR0xQb2xpY3kpCit7CisgICAgaHRtbFVSTCA9
IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdDovLy9odG1sIl07CisgICAgCisgICAgcnVuVGVz
dChfV0tXZWJHTExvYWRQb2xpY3lCbG9ja0NyZWF0aW9uKTsKKyAgICBFWFBFQ1RfU1RSRVEoW2Fs
ZXJ0IFVURjhTdHJpbmddLCAid2ViZ2wgY29udGV4dCBjcmVhdGlvbiBmYWlsZWQiKTsKKyAgICBF
WFBFQ1RfVFJVRShbaHRtbFVSTCBpc0VxdWFsOmZpcnN0VVJMLmdldCgpXSk7CisgICAgRVhQRUNU
X1RSVUUobnVsbHB0ciA9PSBzZWNvbmRVUkwpOworCisgICAgcnVuVGVzdChfV0tXZWJHTExvYWRQ
b2xpY3lBbGxvd0NyZWF0aW9uKTsKKyAgICBFWFBFQ1RfU1RSRVEoW2FsZXJ0IFVURjhTdHJpbmdd
LCAiZG9pbmcgc3R1ZmYgd2l0aCB3ZWJnbCBjb250ZXh0IHN1Y2NlZWRlZCIpOworICAgIEVYUEVD
VF9UUlVFKFtodG1sVVJMIGlzRXF1YWw6Zmlyc3RVUkwuZ2V0KCldKTsKKyAgICBFWFBFQ1RfVFJV
RShudWxscHRyID09IHNlY29uZFVSTCk7CisKKyAgICBydW5UZXN0KF9XS1dlYkdMTG9hZFBvbGlj
eVBlbmRpbmdDcmVhdGlvbiwgX1dLV2ViR0xMb2FkUG9saWN5QmxvY2tDcmVhdGlvbik7CisgICAg
RVhQRUNUX1NUUkVRKFthbGVydCBVVEY4U3RyaW5nXSwgImRvaW5nIHN0dWZmIHdpdGggd2ViZ2wg
Y29udGV4dCBmYWlsZWQiKTsKKyAgICBFWFBFQ1RfVFJVRShbaHRtbFVSTCBpc0VxdWFsOmZpcnN0
VVJMLmdldCgpXSk7CisgICAgRVhQRUNUX1RSVUUoW2h0bWxVUkwgaXNFcXVhbDpzZWNvbmRVUkwu
Z2V0KCldKTsKKworICAgIHJ1blRlc3QoX1dLV2ViR0xMb2FkUG9saWN5UGVuZGluZ0NyZWF0aW9u
LCBfV0tXZWJHTExvYWRQb2xpY3lBbGxvd0NyZWF0aW9uKTsKKyAgICAvLyBGSVhNRTogVGhpcyBv
dWdodCB0byBzdWNjZWVkLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTI5MTIyCisgICAgRVhQRUNUX1NUUkVRKFthbGVydCBVVEY4U3RyaW5nXSwgImRvaW5nIHN0dWZm
IHdpdGggd2ViZ2wgY29udGV4dCBmYWlsZWQiKTsKKyAgICBFWFBFQ1RfVFJVRShbaHRtbFVSTCBp
c0VxdWFsOmZpcnN0VVJMLmdldCgpXSk7CisgICAgRVhQRUNUX1RSVUUoW2h0bWxVUkwgaXNFcXVh
bDpzZWNvbmRVUkwuZ2V0KCldKTsKK30KKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECg==
</data>

          </attachment>
      

    </bug>

</bugzilla>