<?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>224119</bug_id>
          
          <creation_ts>2021-04-02 10:57:18 -0700</creation_ts>
          <short_desc>Add WKURLSchemeTask redirect API</short_desc>
          <delta_ts>2021-04-02 18:06:39 -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>WebKit Misc.</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1746572</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-04-02 10:57:18 -0700</bug_when>
    <thetext>Add WKURLSchemeTask redirect API

Like http would need.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746575</commentid>
    <comment_count>1</comment_count>
      <attachid>425033</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-04-02 11:03:16 -0700</bug_when>
    <thetext>Created attachment 425033
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746581</commentid>
    <comment_count>2</comment_count>
      <attachid>425033</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-02 11:35:59 -0700</bug_when>
    <thetext>Comment on attachment 425033
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKURLSchemeTask.h:46
&gt; + WebKit might decide that changes need to be make to the proposed request.

or that the redirect should not be followed such as if a WKContentRuleList decides to block it.
That would also make a great test case showing why we need _Nullable in the completion handler.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKURLSchemeTask.mm:101
&gt; +    auto handler = adoptNS([completionHandler copy]);

makeBlockPtr is the cool new way to do this.  Then you don&apos;t need rawHandler.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:9513
&gt; +    bool schemeIsInHTTPFamily = equalIgnoringASCIICase(*canonicalizedScheme, &quot;http&quot;) || equalIgnoringASCIICase(*canonicalizedScheme, &quot;https&quot;);

Case insensitive compare is unnecessary here because it has already been canonicalized to lower case.

&gt; Source/WebKit/UIProcess/WebURLSchemeTask.cpp:96
&gt; +    Function&lt;void(ResourceRequest&amp;&amp;)&gt; innerCompletionHandler = [protectedThis = makeRef(*this), this, completionHandler = WTFMove(completionHandler)] (ResourceRequest&amp;&amp; request) mutable {

CompletionHandler

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:1446
&gt; +@interface HTTPRedirectTest : NSObject &lt;WKURLSchemeHandler&gt; {

TestURLSchemeHandler might make this nicer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746597</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-04-02 12:10:52 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #2)
&gt; Comment on attachment 425033 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=425033&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKURLSchemeTask.h:46
&gt; &gt; + WebKit might decide that changes need to be make to the proposed request.
&gt; 
&gt; or that the redirect should not be followed such as if a WKContentRuleList
&gt; decides to block it.
&gt; That would also make a great test case showing why we need _Nullable in the
&gt; completion handler.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKURLSchemeTask.mm:101
&gt; &gt; +    auto handler = adoptNS([completionHandler copy]);
&gt; 
&gt; makeBlockPtr is the cool new way to do this.  Then you don&apos;t need rawHandler.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:9513
&gt; &gt; +    bool schemeIsInHTTPFamily = equalIgnoringASCIICase(*canonicalizedScheme, &quot;http&quot;) || equalIgnoringASCIICase(*canonicalizedScheme, &quot;https&quot;);
&gt; 
&gt; Case insensitive compare is unnecessary here because it has already been
&gt; canonicalized to lower case.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebURLSchemeTask.cpp:96
&gt; &gt; +    Function&lt;void(ResourceRequest&amp;&amp;)&gt; innerCompletionHandler = [protectedThis = makeRef(*this), this, completionHandler = WTFMove(completionHandler)] (ResourceRequest&amp;&amp; request) mutable {
&gt; 
&gt; CompletionHandler

Cannot, because it&apos;s sometimes not called (in the exception case)

&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:1446
&gt; &gt; +@interface HTTPRedirectTest : NSObject &lt;WKURLSchemeHandler&gt; {
&gt; 
&gt; TestURLSchemeHandler might make this nicer.

All others, cool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746626</commentid>
    <comment_count>4</comment_count>
      <attachid>425045</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-04-02 13:15:47 -0700</bug_when>
    <thetext>Created attachment 425045
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746656</commentid>
    <comment_count>5</comment_count>
      <attachid>425045</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-04-02 14:04:46 -0700</bug_when>
    <thetext>Comment on attachment 425045
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKURLSchemeTask.h:39
&gt; +/*! @abstract Mark the task as redirected.

Indicate that the task was redirected.
If it were just marking, it wouldn&apos;t need a completion handler.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKURLSchemeTask.mm:105
&gt; +    auto function = [protectedSelf = retainPtr(self), self, protectedResponse = retainPtr(response), response, protectedRequest = retainPtr(request), request, innerCompletionHandler = WTFMove(innerCompletionHandler)] () mutable {

It seems unnecessary to doubly wrap this block.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746665</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-04-02 14:13:42 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #5)
&gt; Comment on attachment 425045 [details]
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKURLSchemeTask.mm:105
&gt; &gt; +    auto function = [protectedSelf = retainPtr(self), self, protectedResponse = retainPtr(response), response, protectedRequest = retainPtr(request), request, innerCompletionHandler = WTFMove(innerCompletionHandler)] () mutable {
&gt; 
&gt; It seems unnecessary to doubly wrap this block.

It does have to be wrapped to translate from ResourceRequest to NSURLRequest, but I moved that inside the outer wrapper instead of as a separate step up front.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746666</commentid>
    <comment_count>7</comment_count>
      <attachid>425045</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-04-02 14:15:27 -0700</bug_when>
    <thetext>Comment on attachment 425045
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKURLSchemeTask.mm:105
&gt;&gt; +    auto function = [protectedSelf = retainPtr(self), self, protectedResponse = retainPtr(response), response, protectedRequest = retainPtr(request), request, innerCompletionHandler = WTFMove(innerCompletionHandler)] () mutable {
&gt; 
&gt; It seems unnecessary to doubly wrap this block.

Also capturing both the protected and unprotected version of the request &amp; response seems overkill.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746667</commentid>
    <comment_count>8</comment_count>
      <attachid>425054</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-04-02 14:18:13 -0700</bug_when>
    <thetext>Created attachment 425054
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746700</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-02 15:39:26 -0700</bug_when>
    <thetext>Committed r275447: &lt;https://commits.webkit.org/r275447&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425054.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1746701</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-02 15:40:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/76168418&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425033</attachid>
            <date>2021-04-02 11:03:16 -0700</date>
            <delta_ts>2021-04-02 13:15:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>36317</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMjYyMTliMmM4YWE4Li41NTFhYzJhYWUxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTEgQEAKKzIwMjEtMDQtMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBXS1VSTFNjaGVtZVRhc2sgcmVkaXJlY3QgQVBJLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MTE5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBuZXcgQVBJIHRl
c3RzLgorICAgICAgICAKKyAgICAgICAgSW5zdGVhZCBvZiB0aGUgZXhpc3RpbmcgImRpZCBkbyBh
IHJlZGlyZWN0IiBTUEkgd2l0aG91dCBjb21wbGV0aW9uIGhhbmRsZXIsIHRoaXMgb25lIGhhcwor
ICAgICAgICBhIGNvbXBsZXRpb24gaGFuZGxlciB3aXRoIGEgbmV3IHJlcXVlc3QgZm9yIHRoZSB0
YXNrLCBwcm9wb3NlZCBieSBXZWJLaXQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxT
Y2hlbWVUYXNrLm1tOgorICAgICAgICAocmFpc2VFeGNlcHRpb25JZk5lY2Vzc2FyeSk6CisgICAg
ICAgICgtW1dLVVJMU2NoZW1lVGFza0ltcGwgd2lsbFBlcmZvcm1SZWRpcmVjdGlvbjpuZXdSZXF1
ZXN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6Zm9yVVJMU2NoZW1lOl0pOgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c2V0VVJMU2NoZW1lSGFuZGxlckZvclNjaGVtZSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6
OndpbGxQZXJmb3JtUmVkaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVU
YXNrOjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hl
bWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hl
bWVUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRh
c2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjp3YWl0aW5nRm9yUmVkaXJlY3RD
b21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIGNvbnN0KToKKworICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxTY2hlbWVUYXNrV2lsbFBl
cmZvcm1SZWRpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVybFNjaGVtZVRh
c2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNr
RGlkUGVyZm9ybVJlZGlyZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
VVJMU2NoZW1lSGFuZGxlclByb3h5Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1l
VGFza1Byb3h5OjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaDoKKwogMjAyMS0wMy0zMCAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBc3NlcnRpb25zIGluIERp
c3BsYXlVcGRhdGUgd2hlbiBkcmFnZ2luZyBXZWJWaWV3IHdpbmRvd3MgYmV0d2VlbiBzY3JlZW5z
IHdpdGggZGlmZmVyZW50IHJlZnJlc2ggcmF0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZVRhc2suaAppbmRleCAyOGI5OTg0MzAxZGYuLmFh
NjdmMmI0NWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VSTFNjaGVtZVRhc2suaApAQCAtMzYsNiArMzYsMjEgQEAgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMyksIGlvcygxMS4wKSkKICAqLwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBjb3B5KSBOU1VSTFJlcXVlc3QgKnJlcXVlc3Q7CiAKKy8qISBAYWJzdHJhY3QgTWFyayB0
aGUgdGFzayBhcyByZWRpcmVjdGVkLgorIEBwYXJhbSByZXNwb25zZSBUaGUgcmVzcG9uc2UgY2F1
c2luZyBhIHJlZGlyZWN0IHRvIGEgbmV3IFVSTC4KKyBAcGFyYW0gbmV3UmVxdWVzdCBUaGUgbmV3
IHByb3Bvc2VkIHJlcXVlc3QgdG8gaGFuZGxlIHRoZSByZWRpcmVjdGlvbi4KKyBAcGFyYW0gY29t
cGxldGlvbkhhbmRsZXIgQSBjb21wbGV0aW9uIGhhbmRsZXIgY2FsbGVkIHdpdGggdGhlIHJlcXVl
c3QgeW91IHNob3VsZCB1c2UgdG8gY29tbWl0IHRvIHRoZSByZWRpcmVjdGlvbi4KKyBAZGlzY3Vz
c2lvbiBXaGVuIHBlcmZvcm1pbmcgYSBsb2FkIG9mIGEgVVJMIG92ZXIgYSBuZXR3b3JrLCB0aGUg
c2VydmVyIG1pZ2h0IGRlY2lkZSBhIGRpZmZlcmVudCBVUkwgc2hvdWxkIGJlIGxvYWRlZCBpbnN0
ZWFkLgorIEEgY29tbW9uIGV4YW1wbGUgaXMgYW4gSFRUUCByZWRpcmVjdC4KKyBXaGVuIHRoaXMg
aGFwcGVucywgeW91IHNob3VsZCBub3RpZnkgV2ViS2l0IGJ5IHNlbmRpbmcgdGhlIHNlcnZlcnMg
cmVzcG9uc2UgYW5kIGEgcHJvcG9zZWQgbmV3IHJlcXVlc3QgdG8gdGhlIFdLVVJMU2NoZW1lVGFz
ay4KKyBXZWJLaXQgbWlnaHQgZGVjaWRlIHRoYXQgY2hhbmdlcyBuZWVkIHRvIGJlIG1ha2UgdG8g
dGhlIHByb3Bvc2VkIHJlcXVlc3QuCisgVGhpcyBpcyBjb21tdW5pY2F0ZWQgdGhyb3VnaCB0aGUg
Y29tcGxldGlvbkhhbmRsZXIgd2hpY2ggdGVsbHMgeW91IHRoZSByZXF1ZXN0IHlvdSBzaG91bGQg
bWFrZSB0byBjb21taXQgdG8gdGhlIHJlZGlyZWN0aW9uLgorCisgQW4gZXhjZXB0aW9uIHdpbGwg
YmUgdGhyb3duIGlmIHlvdSBtYWtlIGFueSBvdGhlciBjYWxsYmFja3MgdG8gdGhlIFdLVVJMU2No
ZW1lVGFzayB3aGlsZSB0aGlzIGNvbXBsZXRpb25IYW5kbGVyIGlzIHBlbmRpbmcsIG90aGVyIHRo
YW4gZGlkRmFpbFdpdGhFcnJvcjouCisgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHlv
dXIgYXBwIGhhcyBiZWVuIHRvbGQgdG8gc3RvcCBsb2FkaW5nIHRoaXMgdGFzayB2aWEgdGhlIHJl
Z2lzdGVyZWQgV0tVUkxTY2hlbWVIYW5kbGVyIG9iamVjdC4KKyAqLworLSAodm9pZCl3aWxsUGVy
Zm9ybVJlZGlyZWN0aW9uOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UgbmV3UmVxdWVzdDooTlNV
UkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxSZXF1
ZXN0ICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAvKiEgQGFic3RyYWN0IFNldCB0aGUg
Y3VycmVudCByZXNwb25zZSBvYmplY3QgZm9yIHRoZSB0YXNrLgogIEBwYXJhbSByZXNwb25zZSBU
aGUgcmVzcG9uc2UgdG8gdXNlLgogIEBkaXNjdXNzaW9uIFRoaXMgbWV0aG9kIG11c3QgYmUgY2Fs
bGVkIGF0IGxlYXN0IG9uY2UgZm9yIGVhY2ggVVJMIHNjaGVtZSBoYW5kbGVyIHRhc2suCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVUYXNr
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFzay5t
bQppbmRleCA5Y2FlOGFjMTYyMmQuLjE3OTE1OTFiODU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFzay5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVUYXNrLm1tCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbXBvcnQgPFdl
YkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KIAog
c3RhdGljIFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6RXhjZXB0aW9uVHlwZSBnZXRFeGNlcHRp
b25UeXBlRnJvbU1haW5SdW5Mb29wKEZ1bmN0aW9uPFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6
RXhjZXB0aW9uVHlwZSAoKT4mJiBmdW5jdGlvbikKQEAgLTY2LDYgKzY3LDkgQEAgc3RhdGljIHZv
aWQgcmFpc2VFeGNlcHRpb25JZk5lY2Vzc2FyeShXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OkV4
Y2VwdGlvblR5cGUgZXgKICAgICBjYXNlIFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6RXhjZXB0
aW9uVHlwZTo6UmVkaXJlY3RBZnRlclJlc3BvbnNlOgogICAgICAgICBbTlNFeGNlcHRpb24gcmFp
c2U6TlNJbnRlcm5hbEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9ybWF0OkAiTm8gcmVkaXJlY3Rz
IGFyZSBhbGxvd2VkIGFmdGVyIHRoZSByZXNwb25zZSJdOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6RXhjZXB0aW9uVHlwZTo6V2FpdGluZ0ZvclJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI6CisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0lu
dGVybmFsSW5jb25zaXN0ZW5jeUV4Y2VwdGlvbiBmb3JtYXQ6QCJObyBjYWxsYmFja3MgYXJlIGFs
bG93ZWQgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHJlZGlyZWN0aW9uIGNvbXBsZXRpb24gaGFuZGxl
ciB0byBiZSBpbnZva2VkIl07CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAtOTIsNiAr
OTYsMjMgQEAgLSAoQk9PTClfcmVxdWVzdE9ubHlJZkNhY2hlZAogICAgIHJldHVybiBfdXJsU2No
ZW1lVGFzay0+dGFzaygpLm5zUmVxdWVzdCgpLmNhY2hlUG9saWN5ID09IE5TVVJMUmVxdWVzdFJl
dHVybkNhY2hlRGF0YURvbnRMb2FkOwogfQogCistICh2b2lkKXdpbGxQZXJmb3JtUmVkaXJlY3Rp
b246KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBuZXdSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKily
ZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFJlcXVlc3QgKikpY29tcGxl
dGlvbkhhbmRsZXIKK3sKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFu
ZGxlciBjb3B5XSk7CisKKyAgICBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmKT4gaW5uZXJDb21wbGV0aW9uSGFuZGxlciA9IFtoYW5kbGVyXSAoV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgYWN0dWFsTmV3UmVxdWVzdCkgeworICAgICAgICBhdXRvIHJhd0hhbmRsZXIg
PSAodm9pZCAoXikoTlNVUkxSZXF1ZXN0ICopKWhhbmRsZXIuZ2V0KCk7CisgICAgICAgIHJhd0hh
bmRsZXIoYWN0dWFsTmV3UmVxdWVzdC5uc1VSTFJlcXVlc3QoV2ViQ29yZTo6SFRUUEJvZHlVcGRh
dGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KSk7CisgICAgfTsKKworICAgIGF1dG8gZnVuY3Rpb24g
PSBbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKSwgc2VsZiwgcHJvdGVjdGVkUmVzcG9u
c2UgPSByZXRhaW5QdHIocmVzcG9uc2UpLCByZXNwb25zZSwgcHJvdGVjdGVkUmVxdWVzdCA9IHJl
dGFpblB0cihyZXF1ZXN0KSwgcmVxdWVzdCwgaW5uZXJDb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoaW5uZXJDb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICByZXR1cm4g
X3VybFNjaGVtZVRhc2stPnRhc2soKS53aWxsUGVyZm9ybVJlZGlyZWN0aW9uKHJlc3BvbnNlLCBy
ZXF1ZXN0LCBXVEZNb3ZlKGlubmVyQ29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICB9OworCisgICAg
YXV0byByZXN1bHQgPSBnZXRFeGNlcHRpb25UeXBlRnJvbU1haW5SdW5Mb29wKFdURk1vdmUoZnVu
Y3Rpb24pKTsKKyAgICByYWlzZUV4Y2VwdGlvbklmTmVjZXNzYXJ5KHJlc3VsdCk7Cit9CisKIC0g
KHZvaWQpZGlkUmVjZWl2ZVJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UKIHsKICAg
ICBhdXRvIGZ1bmN0aW9uID0gW3Byb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZiksIHNlbGYs
IHByb3RlY3RlZFJlc3BvbnNlID0gcmV0YWluUHRyKHJlc3BvbnNlKSwgcmVzcG9uc2VdIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25m
aWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24ubW0KaW5kZXggYzUwMDliNjg4NmYzLi4yODNmMjAyY2M1MTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1
cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uLm1tCkBAIC01NTQsNyArNTU0LDcgQEAgLSAodm9pZClfc2V0VmlzaXRl
ZExpbmtTdG9yZTooX1dLVmlzaXRlZExpbmtTdG9yZSAqKXZpc2l0ZWRMaW5rU3RvcmUKIAogLSAo
dm9pZClzZXRVUkxTY2hlbWVIYW5kbGVyOihpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxTY2hl
bWVIYW5kbGVyIGZvclVSTFNjaGVtZTooTlNTdHJpbmcgKil1cmxTY2hlbWUKIHsKLSAgICBpZiAo
W1dLV2ViVmlldyBoYW5kbGVzVVJMU2NoZW1lOnVybFNjaGVtZV0pCisgICAgaWYgKFtXS1dlYlZp
ZXcgaGFuZGxlc1VSTFNjaGVtZTp1cmxTY2hlbWVdICYmIFt1cmxTY2hlbWUgY2FzZUluc2Vuc2l0
aXZlQ29tcGFyZTpAImh0dHAiXSAhPSBOU09yZGVyZWRTYW1lICYmIFt1cmxTY2hlbWUgY2FzZUlu
c2Vuc2l0aXZlQ29tcGFyZTpAImh0dHBzIl0gIT0gTlNPcmRlcmVkU2FtZSkKICAgICAgICAgW05T
RXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIiclQCcg
aXMgYSBVUkwgc2NoZW1lIHRoYXQgV0tXZWJWaWV3IGhhbmRsZXMgbmF0aXZlbHkiLCB1cmxTY2hl
bWVdOwogCiAgICAgYXV0byBjYW5vbmljYWxTY2hlbWUgPSBXVEY6OlVSTFBhcnNlcjo6bWF5YmVD
YW5vbmljYWxpemVTY2hlbWUodXJsU2NoZW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCmluZGV4IGRlZTYxNzU4NWFmNC4uZWJmYTk5NTU4YjFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTk1MDksMTYgKzk1MDksMTggQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVmPFdlYlVS
TFNjaGVtZUhhbmRsZXI+JiYgaGFuZGwKIHsKICAgICBhdXRvIGNhbm9uaWNhbGl6ZWRTY2hlbWUg
PSBXVEY6OlVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUoc2NoZW1lKTsKICAgICBB
U1NFUlQoY2Fub25pY2FsaXplZFNjaGVtZSk7Ci0gICAgQVNTRVJUKCFXVEY6OlVSTFBhcnNlcjo6
aXNTcGVjaWFsU2NoZW1lKGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSkpOworCisgICAgYm9v
bCBzY2hlbWVJc0luSFRUUEZhbWlseSA9IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoKmNhbm9uaWNh
bGl6ZWRTY2hlbWUsICJodHRwIikgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSgqY2Fub25pY2Fs
aXplZFNjaGVtZSwgImh0dHBzIik7CisgICAgQVNTRVJUKHNjaGVtZUlzSW5IVFRQRmFtaWx5IHx8
ICFXVEY6OlVSTFBhcnNlcjo6aXNTcGVjaWFsU2NoZW1lKGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFs
dWUoKSkpOwogCiAgICAgYXV0byBzY2hlbWVSZXN1bHQgPSBtX3VybFNjaGVtZUhhbmRsZXJzQnlT
Y2hlbWUuYWRkKGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSwgaGFuZGxlci5nZXQoKSk7CiAg
ICAgQVNTRVJUX1VOVVNFRChzY2hlbWVSZXN1bHQsIHNjaGVtZVJlc3VsdC5pc05ld0VudHJ5KTsK
IAotICAgIGF1dG8gaWRlbnRpZmllciA9IGhhbmRsZXItPmlkZW50aWZpZXIoKTsKLSAgICBhdXRv
IGlkZW50aWZpZXJSZXN1bHQgPSBtX3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyLmFkZChp
ZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKLSAgICBBU1NFUlRfVU5VU0VEKGlkZW50aWZp
ZXJSZXN1bHQsIGlkZW50aWZpZXJSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgYXV0byBoYW5kbGVy
SWRlbnRpZmllciA9IGhhbmRsZXItPmlkZW50aWZpZXIoKTsKKyAgICBhdXRvIGhhbmRsZXJJZGVu
dGlmaWVyUmVzdWx0ID0gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5hZGQoaGFuZGxl
cklkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOworICAgIEFTU0VSVF9VTlVTRUQoaGFuZGxl
cklkZW50aWZpZXJSZXN1bHQsIGhhbmRsZXJJZGVudGlmaWVyUmVzdWx0LmlzTmV3RW50cnkpOwog
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGlk
ZW50aWZpZXIsIGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSkpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihoYW5kbGVySWRlbnRpZmllciwg
Y2Fub25pY2FsaXplZFNjaGVtZS52YWx1ZSgpKSk7CiB9CiAKIFdlYlVSTFNjaGVtZUhhbmRsZXIq
IFdlYlBhZ2VQcm94eTo6dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShjb25zdCBTdHJpbmcmIHNj
aGVtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5k
ZXggMmNmNDViM2M3NzQ2Li42Mzk0OGU0MzVjYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC02MCwyMiArNjAsNjkgQEAgV2ViVVJMU2NoZW1l
VGFzazo6fldlYlVSTFNjaGVtZVRhc2soKQogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiB9CiAKK2F1dG8gV2ViVVJMU2NoZW1lVGFzazo6d2lsbFBlcmZvcm1SZWRpcmVjdGlvbihSZXNv
dXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsICBGdW5j
dGlvbjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgLT4gRXhj
ZXB0aW9uVHlwZQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBpZiAo
bV9zdG9wcGVkKQorICAgICAgICByZXR1cm4gbV9zaG91bGRTdXBwcmVzc1Rhc2tTdG9wcGVkRXhj
ZXB0aW9ucyA/IEV4Y2VwdGlvblR5cGU6Ok5vbmUgOiBFeGNlcHRpb25UeXBlOjpUYXNrQWxyZWFk
eVN0b3BwZWQ7CisKKyAgICBpZiAobV9jb21wbGV0ZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b25UeXBlOjpDb21wbGV0ZUFscmVhZHlDYWxsZWQ7CisKKyAgICBpZiAobV9kYXRhU2VudCkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6OkRhdGFBbHJlYWR5U2VudDsKKworICAgIGlmICht
X3Jlc3BvbnNlU2VudCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6OlJlZGlyZWN0QWZ0
ZXJSZXNwb25zZTsKKworICAgIGlmIChtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5k
bGVyQ2FsbGJhY2spCisgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpXYWl0aW5nRm9yUmVk
aXJlY3RDb21wbGV0aW9uSGFuZGxlcjsKKworICAgIGlmIChpc1N5bmMoKSkKKyAgICAgICAgbV9z
eW5jUmVzcG9uc2UgPSByZXNwb25zZTsKKworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBsb2Nr
ZXIobV9yZXF1ZXN0TG9jayk7CisgICAgICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgfQor
CisgICAgYXV0byogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShtX3BhZ2VQcm94eUlE
KTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwor
CisgICAgbV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrID0gdHJ1
ZTsKKworICAgIEZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiBpbm5lckNvbXBsZXRp
b25IYW5kbGVyID0gW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QpIG11dGFibGUgeworICAgICAgICBtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBs
ZXRpb25IYW5kbGVyQ2FsbGJhY2sgPSBmYWxzZTsKKyAgICAgICAgaWYgKCFtX3N0b3BwZWQgJiYg
IW1fY29tcGxldGVkKQorICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1
ZXN0KSk7CisgICAgfTsKKworICAgIHBhZ2UtPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6VVJMU2NoZW1lVGFza1dpbGxQZXJmb3JtUmVkaXJlY3Rpb24obV91cmxTY2hlbWVI
YW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgcmVzcG9uc2UsIHJlcXVlc3QpLCBX
VEZNb3ZlKGlubmVyQ29tcGxldGlvbkhhbmRsZXIpKTsKKworICAgIHJldHVybiBFeGNlcHRpb25U
eXBlOjpOb25lOworfQorCiBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFBlcmZvcm1SZWRpcmVj
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QpIC0+IEV4Y2VwdGlvblR5cGUKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKG1fc3RvcHBlZCkKICAgICAgICAgcmV0dXJuIG1f
c2hvdWxkU3VwcHJlc3NUYXNrU3RvcHBlZEV4Y2VwdGlvbnMgPyBFeGNlcHRpb25UeXBlOjpOb25l
IDogRXhjZXB0aW9uVHlwZTo6VGFza0FscmVhZHlTdG9wcGVkOwotICAgIAorCiAgICAgaWYgKG1f
Y29tcGxldGVkKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Q29tcGxldGVBbHJlYWR5
Q2FsbGVkOwotICAgIAorCiAgICAgaWYgKG1fZGF0YVNlbnQpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb25UeXBlOjpEYXRhQWxyZWFkeVNlbnQ7Ci0gICAgCisKICAgICBpZiAobV9yZXNwb25zZVNl
bnQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpSZWRpcmVjdEFmdGVyUmVzcG9uc2U7
Ci0gICAgCisKKyAgICBpZiAobV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNh
bGxiYWNrKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6V2FpdGluZ0ZvclJlZGlyZWN0
Q29tcGxldGlvbkhhbmRsZXI7CisKICAgICBpZiAoaXNTeW5jKCkpCiAgICAgICAgIG1fc3luY1Jl
c3BvbnNlID0gcmVzcG9uc2U7CiAKQEAgLTEwMiw2ICsxNDksOSBAQCBhdXRvIFdlYlVSTFNjaGVt
ZVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSkgLT4gRQogICAgIGlmIChtX2RhdGFTZW50KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlw
ZTo6RGF0YUFscmVhZHlTZW50OwogCisgICAgaWYgKG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxl
dGlvbkhhbmRsZXJDYWxsYmFjaykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6OldhaXRp
bmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyOworCiAgICAgbV9yZXNwb25zZVNlbnQgPSB0
cnVlOwogCiAgICAgcmVzcG9uc2UuaW5jbHVkZUNlcnRpZmljYXRlSW5mbygpOwpAQCAtMTI2LDYg
KzE3Niw5IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5CiAgICAgaWYgKCFtX3Jlc3BvbnNlU2Vu
dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vUmVzcG9uc2VTZW50OwogCisgICAg
aWYgKG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXJDYWxsYmFjaykKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6OldhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5k
bGVyOworCiAgICAgbV9kYXRhU2VudCA9IHRydWU7CiAKICAgICBpZiAoaXNTeW5jKCkpIHsKQEAg
LTE1Myw2ICsyMDYsOSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgaWYgKCFtX3Jlc3Bv
bnNlU2VudCAmJiBlcnJvci5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6
Ok5vUmVzcG9uc2VTZW50OwogCisgICAgaWYgKG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlv
bkhhbmRsZXJDYWxsYmFjayAmJiBlcnJvci5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvblR5cGU6OldhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyOworCiAgICAgbV9j
b21wbGV0ZWQgPSB0cnVlOwogICAgIAogICAgIGlmIChpc1N5bmMoKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IDRiMDdiYTFhMGRiMS4uODcwZGZm
OGUyZDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBA
IC03Niw4ICs3NiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIFJlZGlyZWN0QWZ0ZXJSZXNwb25zZSwK
ICAgICAgICAgVGFza0FscmVhZHlTdG9wcGVkLAogICAgICAgICBOb1Jlc3BvbnNlU2VudCwKKyAg
ICAgICAgV2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIsCiAgICAgICAgIE5vbmUs
CiAgICAgfTsKKyAgICBFeGNlcHRpb25UeXBlIHdpbGxQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgIEZ1bmN0
aW9uPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAgICBFeGNlcHRpb25U
eXBlIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVS
ZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgRXhjZXB0aW9u
VHlwZSBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKTsKQEAgLTg4
LDYgKzkwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzdXBwcmVzc1Rhc2tTdG9wcGVkRXhjZXB0
aW9ucygpIHsgbV9zaG91bGRTdXBwcmVzc1Rhc2tTdG9wcGVkRXhjZXB0aW9ucyA9IHRydWU7IH0K
IAorICAgIGJvb2wgd2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXJDYWxsYmFjaygp
IGNvbnN0IHsgcmV0dXJuIG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXJDYWxs
YmFjazsgfQorCiBwcml2YXRlOgogICAgIFdlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFu
ZGxlciYsIFdlYlBhZ2VQcm94eSYsIFdlYlByb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmLCBTeW5jTG9hZENvbXBsZXRpb25IYW5k
bGVyJiYpOwogCkBAIC0xMTAsNiArMTE0LDggQEAgcHJpdmF0ZToKICAgICBTeW5jTG9hZENvbXBs
ZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwogICAgIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1
ZmZlcj4gbV9zeW5jRGF0YTsKKworICAgIGJvb2wgbV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlckNhbGxiYWNrIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYWIzZjczMjllYzE0Li4zYjJjYWQxNTllOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTA1MSw2ICsxMDUxLDggQEAKIAkJNTE3
Q0YwRTMxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTdDRjBFMTE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBGIC8qIENh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Q0YwRTExNjNBNDg2QzAwQzI5
NTBGIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OwogCQk1MTdDRjBFNDE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxN0NGMEUyMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25N
ZXNzYWdlcy5oICovOyB9OworCQk1MTgzMjQ3QzI2MTY4QzYyMDAzRjIzOUUgLyogTmV0d29ya1VS
TFNjaGVtZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxODMyNDc1MjYxNTk5Q0MwMDNGMjM5RSAvKiBOZXR3b3JrVVJMU2NoZW1lSGFuZGxl
ci5oICovOyB9OworCQk1MTgzMjQ3RDI2MTY4RkY3MDAzRjIzOUUgLyogTmV0d29ya1VSTFNjaGVt
ZVRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
ODMyNDdBMjYxNjg2NzUwMDNGMjM5RSAvKiBOZXR3b3JrVVJMU2NoZW1lVGFzay5oICovOyB9Owog
CQk1MTgzNzIyMjIzQ0U5NzQxMDAwM0NGODMgLyogQVBJQ29udGVudFdvcmxkLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgzNzIyMDIzQ0U5NzNBMDAw
M0NGODMgLyogQVBJQ29udGVudFdvcmxkLmggKi87IH07CiAJCTUxODcxQjVDMTI3Q0I4OUQwMEY3
NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE4NzFCNUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51
LmggKi87IH07CiAJCTUxOEFDQUVBMTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rpb25TcGFj
ZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MThBQ0FFOTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MDMxLDYgKzQw
MzMsMTIgQEAKIAkJNTE3Q0YwRTExNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRo
ID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1MTdD
RjBFMTE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3Nh
Z2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDYWNo
ZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2
ZWRTb3VyY2VzL1dlYktpdDIvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTUxN0NGMEUy
MTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25N
ZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQk1MTgzMjQ3NTI2MTU5OUNDMDAzRjIzOUUgLyogTmV0d29ya1VSTFNjaGVtZUhhbmRsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1VSTFNjaGVtZUhhbmRsZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4MzI0NzYyNjE1OTlDQzAwM0YyMzlF
IC8qIE5ldHdvcmtVUkxTY2hlbWVIYW5kbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IE5ldHdvcmtVUkxTY2hlbWVIYW5kbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTE4MzI0NzgyNjE1QjAwRDAwM0YyMzlFIC8qIE5ldHdvcmtTY2hlbWVV
UkxQcm90b2NvbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrU2No
ZW1lVVJMUHJvdG9jb2wuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4MzI0Nzky
NjE1QjAwRDAwM0YyMzlFIC8qIE5ldHdvcmtTY2hlbWVVUkxQcm90b2NvbC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldHdvcmtTY2hlbWVVUkxQcm90b2NvbC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4MzI0N0EyNjE2ODY3NTAwM0YyMzlF
IC8qIE5ldHdvcmtVUkxTY2hlbWVUYXNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE5ldHdvcmtVUkxTY2hlbWVUYXNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxODMyNDdCMjYxNjg2NzUwMDNGMjM5RSAvKiBOZXR3b3JrVVJMU2NoZW1lVGFzay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrVVJMU2NoZW1lVGFzay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODM3MjIwMjNDRTk3M0EwMDAzQ0Y4
MyAvKiBBUElDb250ZW50V29ybGQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QVBJQ29udGVudFdvcmxkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODM3MjIx
MjNDRTk3M0EwMDAzQ0Y4MyAvKiBBUElDb250ZW50V29ybGQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQVBJQ29udGVudFdvcmxkLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE4M0IzOTMxMzc5Rjg1QzAwRTg3NTRFIC8qIFNoaW0ueGNjb25maWcg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU2hpbS54Y2NvbmZpZzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg1MTksNiArODUyNywxMCBAQAogCQkJCTVDMEIxNzdFMUU3
Qzg4NjcwMEU5MTIzQyAvKiBOZXR3b3JrU29ja2V0U3RyZWFtLmggKi8sCiAJCQkJNUMwQjE3N0Yx
RTdDODg2NzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW0ubWVzc2FnZXMuaW4gKi8sCiAJ
CQkJNUM5RUYyRTcyMUYwNThGOTAwM0JEQzU2IC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvblByb3Zp
ZGVyLmggKi8sCisJCQkJNTE4MzI0NzYyNjE1OTlDQzAwM0YyMzlFIC8qIE5ldHdvcmtVUkxTY2hl
bWVIYW5kbGVyLmNwcCAqLywKKwkJCQk1MTgzMjQ3NTI2MTU5OUNDMDAzRjIzOUUgLyogTmV0d29y
a1VSTFNjaGVtZUhhbmRsZXIuaCAqLywKKwkJCQk1MTgzMjQ3QjI2MTY4Njc1MDAzRjIzOUUgLyog
TmV0d29ya1VSTFNjaGVtZVRhc2suY3BwICovLAorCQkJCTUxODMyNDdBMjYxNjg2NzUwMDNGMjM5
RSAvKiBOZXR3b3JrVVJMU2NoZW1lVGFzay5oICovLAogCQkJCTQ2MjEwN0Q3MUYzOERCRDMwMERE
NzgxMCAvKiBQaW5nTG9hZC5jcHAgKi8sCiAJCQkJNUNFODVCMUYxQzg4RTY0MzAwNzBCRkNFIC8q
IFBpbmdMb2FkLmggKi8sCiAJCQkJODNBMEVEMzMxRjc0N0NDNzAwMzI5OUVCIC8qIFByZWNvbm5l
Y3RUYXNrLmNwcCAqLywKQEAgLTkyNDcsNiArOTI1OSw4IEBACiAJCQkJN0VDNEYwRjkxOEU0QTk0
NTAwODA1NkFGIC8qIE5ldHdvcmtQcm9jZXNzQ29jb2EubW0gKi8sCiAJCQkJNTMyMTU5NTAxREJB
RTZENzAwNTRBQTNDIC8qIE5ldHdvcmtTZXNzaW9uQ29jb2EuaCAqLywKIAkJCQk1QzIwQ0I5QjFC
QjBEQ0QyMDA4OTVCQjEgLyogTmV0d29ya1Nlc3Npb25Db2NvYS5tbSAqLywKKwkJCQk1MTgzMjQ3
ODI2MTVCMDBEMDAzRjIzOUUgLyogTmV0d29ya1NjaGVtZVVSTFByb3RvY29sLmggKi8sCisJCQkJ
NTE4MzI0NzkyNjE1QjAwRDAwM0YyMzlFIC8qIE5ldHdvcmtTY2hlbWVVUkxQcm90b2NvbC5tbSAq
LywKIAkJCQk0MTI4N0Q0QzIyNUMwNUM1MDA5QTNFMjYgLyogV2ViU29ja2V0VGFza0NvY29hLmgg
Ki8sCiAJCQkJNDEyODdENEIyMjVDMDVDNDAwOUEzRTI2IC8qIFdlYlNvY2tldFRhc2tDb2NvYS5t
bSAqLywKIAkJCSk7CkBAIC0xMTY1Myw2ICsxMTY2Nyw3IEBACiAJCQkJMzE3RkU3QzUxQzQ4N0E2
QzAwQTBDQTg5IC8qIEFQSUV4cGVyaW1lbnRhbEZlYXR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTAwQjk2NjE2MThFMjRDQkEwMENFMUY4OCAvKiBBUElGaW5kQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQkyREQ2N0EyRTFCRDgxOTczMDA1M0IyNTEgLyogQVBJRmluZE1hdGNoZXNDbGllbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTUxODMyNDdEMjYxNjhGRjcwMDNGMjM5RSAvKiBOZXR3b3Jr
VVJMU2NoZW1lVGFzay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdFMjVENkUxOEZERTVENjAwNUQz
QTAwIC8qIEFQSUZvcm1DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzEzMzcyMTg1NjZD
N0MwMEYzRUMwNSAvKiBBUElGcmFtZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRGOUVF
RTYxQTc4MUZCNDAwQjZDRkJFIC8qIEFQSUZyYW1lSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MjgwNCw2ICsxMjgxOSw3IEBACiAJCQkJMEZDQjRFNjgxOEJCRTNEOTAwMEZDRkM5IC8qIFdLVGV4
dElucHV0V2luZG93Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UyMTIxNUYyNDBF
RTU3MTAwNkVENDQzIC8qIFdLVGV4dFBsYWNlaG9sZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RTQ1OTQ1QzI0MEY4ODU1MDA3ODAxOUYgLyogV0tUZXh0U2VsZWN0aW9uUmVjdC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNTE4MzI0N0MyNjE2OEM2MjAwM0YyMzlFIC8qIE5ldHdvcmtVUkxTY2hlbWVI
YW5kbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRUI2RkMwMTIwMzAyMTk2MDAxN0U2MTkgLyog
V0tUaW1lUGlja2VyVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTcxQTY3NkE2
MjJDNjIzMjUwMDdENjI5NSAvKiBXS1RvdWNoQWN0aW9uR2VzdHVyZVJlY29nbml6ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDNDA3NjA4MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1R5cGUuaCBpbiBI
ZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAppbmRleCA3OTJkMzRjMTEwODcuLmYyMGNmYzc3NmRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTY3NDAsMTIgKzY3NDAsMjEgQEAgdm9p
ZCBXZWJQYWdlOjpyZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIodWludDY0X3QgaGFuZGxlcklkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYKICAgICBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQ
cm94eU1hcC5hZGQoaGFuZGxlcklkZW50aWZpZXIsIHNjaGVtZVJlc3VsdC5pdGVyYXRvci0+dmFs
dWUuZ2V0KCkpOwogfQogCit2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tXaWxsUGVyZm9ybVJl
ZGlyZWN0aW9uKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRp
ZmllciwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvKiBoYW5kbGVyID0gbV9pZGVudGlmaWVy
VG9VUkxTY2hlbWVIYW5kbGVyUHJveHlNYXAuZ2V0KGhhbmRsZXJJZGVudGlmaWVyKTsKKyAgICBB
U1NFUlQoaGFuZGxlcik7CisKKyAgICBhdXRvIGFjdHVhbE5ld1JlcXVlc3QgPSByZXF1ZXN0Owor
ICAgIGhhbmRsZXItPnRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24odGFza0lkZW50aWZpZXIsIFdU
Rk1vdmUocmVzcG9uc2UpLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza0RpZFBlcmZvcm1SZWRpcmVj
dGlvbih1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIs
IFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkK
IHsKICAgICBhdXRvKiBoYW5kbGVyID0gbV9pZGVudGlmaWVyVG9VUkxTY2hlbWVIYW5kbGVyUHJv
eHlNYXAuZ2V0KGhhbmRsZXJJZGVudGlmaWVyKTsKICAgICBBU1NFUlQoaGFuZGxlcik7Ci0gICAg
Ci0gICAgaGFuZGxlci0+dGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbih0YXNrSWRlbnRpZmllciwg
V1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUocmVxdWVzdCkpOworCisgICAgaGFuZGxlci0+dGFz
a0RpZFBlcmZvcm1SZWRpcmVjdGlvbih0YXNrSWRlbnRpZmllciwgV1RGTW92ZShyZXNwb25zZSks
IFdURk1vdmUocmVxdWVzdCksIFtdIChSZXNvdXJjZVJlcXVlc3QmJikge30pOwogfQogICAgIAog
dm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGhh
bmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKaW5kZXggYzU0YTYxOGRiNDZhLi43MGVjOTE3NmVhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE4MDcsNiArMTgwNyw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcih1aW50NjRfdCBpZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiAKKyAgICB2b2lkIHVybFNjaGVtZVRhc2tXaWxs
UGVyZm9ybVJlZGlyZWN0aW9uKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0
YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJik+JiYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFBlcmZvcm1SZWRpcmVjdGlv
bih1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwog
ICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCBoYW5kbGVy
SWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIHVybFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSh1aW50
NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYzhlNjQ2YWVkZWJjLi4wMDAzYzU1ZDc4
M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgpAQCAtNTU5LDcgKzU1OSw4IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGlu
Z0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBl
CiAKICAgICBSZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIodWludDY0X3QgaWRlbnRpZmllciwgU3Ry
aW5nIHNjaGVtZSkKIAotICAgIFVSTFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24odWlu
dDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCkKKyAgICBVUkxTY2hlbWVUYXNrV2lsbFBlcmZvcm1SZWRpcmVjdGlvbih1aW50NjRfdCBo
YW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBwcm9wb3NlZFJl
cXVlc3QpIC0+IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgYWN0dWFsUmVxdWVzdCkgQXN5bmMK
KyAgICBVUkxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKHVpbnQ2NF90IGhhbmRsZXJJ
ZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHByb3Bvc2VkUmVxdWVzdCkK
ICAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGhhbmRsZXJJZGVu
dGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSByZXNwb25zZSkKICAgICBVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEodWludDY0X3QgaGFu
ZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UgZGF0YSkKICAgICBVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUodWludDY0
X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKaW5kZXggYmZiZmU3
MTQxYzk4Li5hMWEwZjBjZjAyYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcApAQCAtNzgs
MTMgKzc4LDEzIEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5OjpzdG9wQWxsVGFza3Mo
KQogICAgICAgICBtX3Rhc2tzLmJlZ2luKCktPnZhbHVlLT5zdG9wTG9hZGluZygpOwogfQogCi12
b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbih1
aW50NjRfdCB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGly
ZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QpCit2b2lk
IFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6dGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbih1aW50
NjRfdCB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8qIHRhc2sgPSBtX3Rhc2tzLmdldCh0YXNrSWRlbnRpZmllcik7
CiAgICAgaWYgKCF0YXNrKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgdGFzay0+ZGlkUGVy
Zm9ybVJlZGlyZWN0aW9uKFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIFdURk1vdmUobmV3UmVx
dWVzdCkpOworICAgIHRhc2stPmRpZFBlcmZvcm1SZWRpcmVjdGlvbihXVEZNb3ZlKHJlZGlyZWN0
UmVzcG9uc2UpLCBXVEZNb3ZlKG5ld1JlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUmVjZWl2ZVJl
c3BvbnNlKHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKaW5kZXggMjM1YjM0MDBjYzc1Li42MjlhNmYz
Y2U0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVS
TFNjaGVtZUhhbmRsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoK
ICAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
CiAgICAgV2ViUGFnZSYgcGFnZSgpIHsgcmV0dXJuIG1fd2ViUGFnZTsgfQogCi0gICAgdm9pZCB0
YXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKKyAgICB2
b2lkIHRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24odWludDY0X3QgdGFza0lkZW50aWZpZXIsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpPiYmKTsKICAg
ICB2b2lkIHRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIHRhc2tEaWRSZWNlaXZl
RGF0YSh1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgc2l6ZV90LCBjb25zdCB1aW50OF90KiBkYXRh
KTsKICAgICB2b2lkIHRhc2tEaWRDb21wbGV0ZSh1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKaW5kZXggYmIw
OGQ2YjU5ZDE2Li45MGEwNjdkNGI0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcApAQCAtNjgsMzEg
KzY4LDMxIEBAIHZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpzdG9wTG9hZGluZygpCiAgICAg
bV91cmxTY2hlbWVIYW5kbGVyLnRhc2tEaWRTdG9wTG9hZGluZygqdGhpcyk7CiB9CiAgICAgCi12
b2lkIFdlYlVSTFNjaGVtZVRhc2tQcm94eTo6ZGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0KQordm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OmRpZFBlcmZvcm1S
ZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgaWYgKCFoYXNMb2FkZXIoKSkKKyAgICBpZiAoIWhhc0xvYWRlcigpKSB7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIGNv
bXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
b3JpZ2luYWxSZXF1ZXN0ID0gcmVxdWVzdF0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIHsK
LSAgICAgICAgbV93YWl0aW5nRm9yQ29tcGxldGlvbkhhbmRsZXIgPSBmYWxzZTsKLSAgICAgICAg
Ly8gV2UgZG8gbm90IGluZm9ybSB0aGUgVUlQcm9jZXNzIG9mIFdlYktpdCdzIG5ldyByZXF1ZXN0
IHdpdGggdGhlIGdpdmVuIHN1Z2dlc3RlZCByZXF1ZXN0LgotICAgICAgICAvLyBXZSBkbyB3YW50
IHRvIGtub3cgaWYgV2ViS2l0IHdvdWxkIGhhdmUgZ2VuZXJhdGVkIGEgcmVxdWVzdCB0aGF0IGRp
ZmZlcnMgZnJvbSB0aGUgc3VnZ2VzdGVkIHJlcXVlc3QsIHRob3VnaC4KLSAgICAgICAgaWYgKHJl
cXVlc3QudXJsKCkgIT0gb3JpZ2luYWxSZXF1ZXN0LnVybCgpKQotICAgICAgICAgICAgUkVMRUFT
RV9MT0coTG9hZGluZywgIlJlZGlyZWN0ZWQgc2NoZW1lIHRhc2sgd291bGQgaGF2ZSBiZWVuIHNl
bnQgdG8gYSBkaWZmZXJlbnQgVVJMLiIpOworICAgIH0KIAotICAgICAgICBwcm9jZXNzTmV4dFBl
bmRpbmdUYXNrKCk7Ci0gICAgfTsKLSAgICAKICAgICBpZiAobV93YWl0aW5nRm9yQ29tcGxldGlv
bkhhbmRsZXIpIHsKICAgICAgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIlJlY2VpdmVkIHJlZGly
ZWN0IGR1cmluZyBwcmV2aW91cyByZWRpcmVjdCBwcm9jZXNzaW5nLCBxdWV1aW5nIGl0LiIpOwot
ICAgICAgICBxdWV1ZVRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
cmVkaXJlY3RSZXNwb25zZSA9IFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHJlcXVlc3QgPSBX
VEZNb3ZlKHJlcXVlc3QpXSgpIG11dGFibGUgewotICAgICAgICAgICAgZGlkUGVyZm9ybVJlZGly
ZWN0aW9uKFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIFdURk1vdmUocmVxdWVzdCkpOworICAg
ICAgICBxdWV1ZVRhc2soW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcmVk
aXJlY3RSZXNwb25zZSA9IFdURk1vdmUocmVkaXJlY3RSZXNwb25zZSksIHJlcXVlc3QgPSBXVEZN
b3ZlKHJlcXVlc3QpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgeworICAgICAgICAgICAgZGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdURk1v
dmUocmVkaXJlY3RSZXNwb25zZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgbV93
YWl0aW5nRm9yQ29tcGxldGlvbkhhbmRsZXIgPSB0cnVlOwogCi0gICAgbV9jb3JlTG9hZGVyLT53
aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIGF1dG8gaW5uZXJDb21wbGV0aW9uSGFuZGxlciA9
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG9yaWdpbmFsUmVxdWVzdCA9
IHJlcXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
IChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsKKyAgICAgICAgbV93YWl0aW5n
Rm9yQ29tcGxldGlvbkhhbmRsZXIgPSBmYWxzZTsKKworICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEZNb3ZlKHJlcXVlc3QpKTsKKworICAgICAgICBwcm9jZXNzTmV4dFBlbmRpbmdUYXNrKCk7
CisgICAgfTsKKworICAgIG1fY29yZUxvYWRlci0+d2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocmVx
dWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFdURk1vdmUoaW5uZXJDb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiB2b2lkIFdlYlVSTFNjaGVtZVRhc2tQcm94eTo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaAppbmRleCBhMTI0
NWQ5MTg3NGUuLmI1ZTMzNGRmYzIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmgKQEAgLTUyLDcgKzUyLDcg
QEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRMb2FkaW5nKCk7CiAgICAgdm9pZCBzdG9wTG9hZGlu
ZygpOwogCi0gICAgdm9pZCBkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgdm9pZCBkaWRQZXJm
b3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJik+JiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhKHNpemVfdCwgY29u
c3QgdWludDhfdCogZGF0YSk7CiAgICAgdm9pZCBkaWRDb21wbGV0ZShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggYmU2MDFjMTA2ZDE4Li4yYTlkMjZkMjFlZDggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0w
NC0wMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFdL
VVJMU2NoZW1lVGFzayByZWRpcmVjdCBBUEkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQxMTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tV
UkxTY2hlbWVIYW5kbGVyLTEubW06CisgICAgICAgICgtW1Rhc2tTY2hlbWVIYW5kbGVyIHdlYlZp
ZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICgtW0hU
VFBSZWRpcmVjdFRlc3Qgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICgt
W0hUVFBSZWRpcmVjdFRlc3Qgd2ViVmlldzpzdG9wVVJMU2NoZW1lVGFzazpdKToKKwogMjAyMS0w
My0zMSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04gKHIyNzUxNTApOiBzZXQtd2Via2l0LWNvbmZpZ3VyYXRpb24gaXMgdG9vIGFnZ3Jlc3Np
dmUgYXQgZGVsZXRpbmcgY29uZmlnIGZpbGVzIHdoZW4gc3dpdGNoIGlzIG5vdCBzZXQKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVI
YW5kbGVyLTEubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJM
U2NoZW1lSGFuZGxlci0xLm1tCmluZGV4IGE3OGFiMzY4Y2ZmMC4uMGNjYWY3ZjE5NmM1IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1l
SGFuZGxlci0xLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KQEAgLTM0Niw2ICszNDYsNyBAQCBURVNUKFVSTFNjaGVt
ZUhhbmRsZXIsIFJlZGlyZWN0aW9uKQogCiBlbnVtIGNsYXNzIENvbW1hbmQgewogICAgIFJlZGly
ZWN0LAorICAgIEFQSVJlZGlyZWN0LAogICAgIFJlc3BvbnNlLAogICAgIERhdGEsCiAgICAgRmlu
aXNoLApAQCAtMzgyLDYgKzM4Myw5IEBAIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhCiAgICAgICAg
ICAgICBjYXNlIENvbW1hbmQ6OlJlZGlyZWN0OgogICAgICAgICAgICAgICAgIFsoaWQ8V0tVUkxT
Y2hlbWVUYXNrUHJpdmF0ZT4pdGFzayBfZGlkUGVyZm9ybVJlZGlyZWN0aW9uOmFkb3B0TlMoW1tO
U1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0XSkuZ2V0KCkgbmV3UmVxdWVzdDphZG9wdE5TKFtbTlNV
UkxSZXF1ZXN0IGFsbG9jXSBpbml0XSkuZ2V0KCldOwogICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSBDb21tYW5kOjpBUElSZWRpcmVjdDoKKyAgICAgICAgICAgICAgICBb
KGlkPFdLVVJMU2NoZW1lVGFza1ByaXZhdGU+KXRhc2sgd2lsbFBlcmZvcm1SZWRpcmVjdGlvbjph
ZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdF0pLmdldCgpIG5ld1JlcXVlc3Q6YWRv
cHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdF0pLmdldCgpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oTlNVUkxSZXF1ZXN0KikgeyB9XTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgQ29tbWFuZDo6UmVzcG9uc2U6CiAgICAgICAgICAgICAgICAgW3Rhc2sgZGlkUmVj
ZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0XSkuZ2V0KCld
OwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDM3LDYgKzQ0MSwxMSBAQCBURVNUKFVSTFNj
aGVtZUhhbmRsZXIsIEV4Y2VwdGlvbnMpCiAgICAgY2hlY2tDYWxsU2VxdWVuY2Uoe0NvbW1hbmQ6
OlJlc3BvbnNlLCBDb21tYW5kOjpGaW5pc2gsIENvbW1hbmQ6OlJlc3BvbnNlfSwgU2hvdWxkUmFp
c2VFeGNlcHRpb246Olllcyk7CiAgICAgY2hlY2tDYWxsU2VxdWVuY2Uoe0NvbW1hbmQ6OlJlc3Bv
bnNlLCBDb21tYW5kOjpGaW5pc2gsIENvbW1hbmQ6OkZpbmlzaH0sIFNob3VsZFJhaXNlRXhjZXB0
aW9uOjpZZXMpOwogICAgIGNoZWNrQ2FsbFNlcXVlbmNlKHtDb21tYW5kOjpSZXNwb25zZSwgQ29t
bWFuZDo6RmluaXNoLCBDb21tYW5kOjpFcnJvcn0sIFNob3VsZFJhaXNlRXhjZXB0aW9uOjpZZXMp
OworICAgIGNoZWNrQ2FsbFNlcXVlbmNlKHtDb21tYW5kOjpBUElSZWRpcmVjdCwgQ29tbWFuZDo6
UmVkaXJlY3R9LCBTaG91bGRSYWlzZUV4Y2VwdGlvbjo6WWVzKTsKKyAgICBjaGVja0NhbGxTZXF1
ZW5jZSh7Q29tbWFuZDo6QVBJUmVkaXJlY3QsIENvbW1hbmQ6OlJlc3BvbnNlfSwgU2hvdWxkUmFp
c2VFeGNlcHRpb246Olllcyk7CisgICAgY2hlY2tDYWxsU2VxdWVuY2Uoe0NvbW1hbmQ6OkFQSVJl
ZGlyZWN0LCBDb21tYW5kOjpEYXRhfSwgU2hvdWxkUmFpc2VFeGNlcHRpb246Olllcyk7CisgICAg
Y2hlY2tDYWxsU2VxdWVuY2Uoe0NvbW1hbmQ6OkFQSVJlZGlyZWN0LCBDb21tYW5kOjpGaW5pc2h9
LCBTaG91bGRSYWlzZUV4Y2VwdGlvbjo6WWVzKTsKKyAgICBjaGVja0NhbGxTZXF1ZW5jZSh7Q29t
bWFuZDo6QVBJUmVkaXJlY3QsIENvbW1hbmQ6OkVycm9yfSwgU2hvdWxkUmFpc2VFeGNlcHRpb246
Ok5vKTsKIH0KIAogc3RydWN0IFNjaGVtZVJlc291cmNlSW5mbyB7CkBAIC0xNDMzLDMgKzE0NDIs
NDkgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBpc1NlY3VyZUNvbnRleHQpCiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2UpOwogICAgIEVYUEVDVF9X
S19TVFJFUShAInNlY3VyZSIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7CiB9CisKK0BpbnRl
cmZhY2UgSFRUUFJlZGlyZWN0VGVzdCA6IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhhbmRsZXI+IHsK
K30KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEhUVFBSZWRpcmVjdFRlc3QKKworLSAodm9pZCl3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJM
U2NoZW1lVGFzaz4pdGFzaworeworICAgIGF1dG8gcmVkaXJlY3RSZXNwb25zZSA9IGFkb3B0TlMo
W1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVU
eXBlOm5pbCBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOwor
ICAgIGF1dG8gcmVkaXJlY3RSZXF1ZXN0ID0gYWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10g
aW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL2Jhci5jb20vYW5vdGhl
cnRlc3QuaHRtbCJdXSk7CisKKyAgICBbdGFzayB3aWxsUGVyZm9ybVJlZGlyZWN0aW9uOnJlZGly
ZWN0UmVzcG9uc2UuZ2V0KCkgbmV3UmVxdWVzdDpyZWRpcmVjdFJlcXVlc3QuZ2V0KCkgY29tcGxl
dGlvbkhhbmRsZXI6XihOU1VSTFJlcXVlc3QgKnByb3Bvc2VkUmVxdWVzdCkgeworICAgICAgICBO
U1N0cmluZyAqaHRtbCA9IEAiPHNjcmlwdD53aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50
ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnRG9jdW1lbnQgVVJMOiAnICsgZG9jdW1lbnQuVVJMKTs8
L3NjcmlwdD4iOworICAgICAgICBhdXRvIGZpbmFsUmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxS
ZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6cHJvcG9zZWRSZXF1ZXN0LlVSTCBNSU1FVHlwZTpA
InRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmh0bWwubGVuZ3RoIHRleHRFbmNvZGlu
Z05hbWU6bmlsXSk7CisKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmZpbmFsUmVz
cG9uc2UuZ2V0KCldOworICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbaHRtbCBkYXRhVXNp
bmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOworICAgICAgICBbdGFzayBkaWRGaW5p
c2hdOworICAgIH1dOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
c3RvcFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhc2sKK3sKK30KKworQGVu
ZAorCitURVNUKFVSTFNjaGVtZUhhbmRsZXIsIEhUVFBXaXRoUmVkaXJlY3QpCit7CisgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKKyAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9wdE5TKFtIVFRQUmVkaXJlY3RU
ZXN0IG5ld10pOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1l
SGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJodHRwIl07CisgICAgW2NvbmZpZ3VyYXRpb24g
c2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAImh0
dHBzIl07CisKKyAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1VSTFNjaGVtZUhh
bmRsZXJNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1
c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5k
bGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgw
MCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIHJlY2Vp
dmVkU2NyaXB0TWVzc2FnZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZm9v
LmNvbS90ZXN0Lmh0bWwiXV1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2
ZWRTY3JpcHRNZXNzYWdlKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoQCJEb2N1bWVudCBVUkw6IGh0
dHBzOi8vYmFyLmNvbS9hbm90aGVydGVzdC5odG1sIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHld
KTsKK30KKwo=
</data>
<flag name="commit-queue"
          id="444867"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425045</attachid>
            <date>2021-04-02 13:15:47 -0700</date>
            <delta_ts>2021-04-02 14:18:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>37261</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMjYyMTliMmM4YWE4Li41NTFhYzJhYWUxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTEgQEAKKzIwMjEtMDQtMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBXS1VSTFNjaGVtZVRhc2sgcmVkaXJlY3QgQVBJLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MTE5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBuZXcgQVBJIHRl
c3RzLgorICAgICAgICAKKyAgICAgICAgSW5zdGVhZCBvZiB0aGUgZXhpc3RpbmcgImRpZCBkbyBh
IHJlZGlyZWN0IiBTUEkgd2l0aG91dCBjb21wbGV0aW9uIGhhbmRsZXIsIHRoaXMgb25lIGhhcwor
ICAgICAgICBhIGNvbXBsZXRpb24gaGFuZGxlciB3aXRoIGEgbmV3IHJlcXVlc3QgZm9yIHRoZSB0
YXNrLCBwcm9wb3NlZCBieSBXZWJLaXQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxT
Y2hlbWVUYXNrLm1tOgorICAgICAgICAocmFpc2VFeGNlcHRpb25JZk5lY2Vzc2FyeSk6CisgICAg
ICAgICgtW1dLVVJMU2NoZW1lVGFza0ltcGwgd2lsbFBlcmZvcm1SZWRpcmVjdGlvbjpuZXdSZXF1
ZXN0OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6Zm9yVVJMU2NoZW1lOl0pOgorCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c2V0VVJMU2NoZW1lSGFuZGxlckZvclNjaGVtZSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6
OndpbGxQZXJmb3JtUmVkaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVU
YXNrOjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hl
bWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hl
bWVUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRh
c2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjp3YWl0aW5nRm9yUmVkaXJlY3RD
b21wbGV0aW9uSGFuZGxlckNhbGxiYWNrIGNvbnN0KToKKworICAgICAgICAqIFdlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjp1cmxTY2hlbWVUYXNrV2lsbFBl
cmZvcm1SZWRpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVybFNjaGVtZVRh
c2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNr
RGlkUGVyZm9ybVJlZGlyZWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
VVJMU2NoZW1lSGFuZGxlclByb3h5Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1l
VGFza1Byb3h5OjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaDoKKwogMjAyMS0wMy0zMCAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBBc3NlcnRpb25zIGluIERp
c3BsYXlVcGRhdGUgd2hlbiBkcmFnZ2luZyBXZWJWaWV3IHdpbmRvd3MgYmV0d2VlbiBzY3JlZW5z
IHdpdGggZGlmZmVyZW50IHJlZnJlc2ggcmF0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZVRhc2suaAppbmRleCAyOGI5OTg0MzAxZGYuLmFh
NjdmMmI0NWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VSTFNjaGVtZVRhc2suaApAQCAtMzYsNiArMzYsMjEgQEAgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcygxMC4xMyksIGlvcygxMS4wKSkKICAqLwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBjb3B5KSBOU1VSTFJlcXVlc3QgKnJlcXVlc3Q7CiAKKy8qISBAYWJzdHJhY3QgTWFyayB0
aGUgdGFzayBhcyByZWRpcmVjdGVkLgorIEBwYXJhbSByZXNwb25zZSBUaGUgcmVzcG9uc2UgY2F1
c2luZyBhIHJlZGlyZWN0IHRvIGEgbmV3IFVSTC4KKyBAcGFyYW0gbmV3UmVxdWVzdCBUaGUgbmV3
IHByb3Bvc2VkIHJlcXVlc3QgdG8gaGFuZGxlIHRoZSByZWRpcmVjdGlvbi4KKyBAcGFyYW0gY29t
cGxldGlvbkhhbmRsZXIgQSBjb21wbGV0aW9uIGhhbmRsZXIgY2FsbGVkIHdpdGggdGhlIHJlcXVl
c3QgeW91IHNob3VsZCB1c2UgdG8gY29tbWl0IHRvIHRoZSByZWRpcmVjdGlvbi4KKyBAZGlzY3Vz
c2lvbiBXaGVuIHBlcmZvcm1pbmcgYSBsb2FkIG9mIGEgVVJMIG92ZXIgYSBuZXR3b3JrLCB0aGUg
c2VydmVyIG1pZ2h0IGRlY2lkZSBhIGRpZmZlcmVudCBVUkwgc2hvdWxkIGJlIGxvYWRlZCBpbnN0
ZWFkLgorIEEgY29tbW9uIGV4YW1wbGUgaXMgYW4gSFRUUCByZWRpcmVjdC4KKyBXaGVuIHRoaXMg
aGFwcGVucywgeW91IHNob3VsZCBub3RpZnkgV2ViS2l0IGJ5IHNlbmRpbmcgdGhlIHNlcnZlcnMg
cmVzcG9uc2UgYW5kIGEgcHJvcG9zZWQgbmV3IHJlcXVlc3QgdG8gdGhlIFdLVVJMU2NoZW1lVGFz
ay4KKyBXZWJLaXQgbWlnaHQgZGVjaWRlIHRoYXQgY2hhbmdlcyBuZWVkIHRvIGJlIG1ha2UgdG8g
dGhlIHByb3Bvc2VkIHJlcXVlc3QuCisgVGhpcyBpcyBjb21tdW5pY2F0ZWQgdGhyb3VnaCB0aGUg
Y29tcGxldGlvbkhhbmRsZXIgd2hpY2ggdGVsbHMgeW91IHRoZSByZXF1ZXN0IHlvdSBzaG91bGQg
bWFrZSB0byBjb21taXQgdG8gdGhlIHJlZGlyZWN0aW9uLgorCisgQW4gZXhjZXB0aW9uIHdpbGwg
YmUgdGhyb3duIGlmIHlvdSBtYWtlIGFueSBvdGhlciBjYWxsYmFja3MgdG8gdGhlIFdLVVJMU2No
ZW1lVGFzayB3aGlsZSB0aGlzIGNvbXBsZXRpb25IYW5kbGVyIGlzIHBlbmRpbmcsIG90aGVyIHRo
YW4gZGlkRmFpbFdpdGhFcnJvcjouCisgQW4gZXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGlmIHlv
dXIgYXBwIGhhcyBiZWVuIHRvbGQgdG8gc3RvcCBsb2FkaW5nIHRoaXMgdGFzayB2aWEgdGhlIHJl
Z2lzdGVyZWQgV0tVUkxTY2hlbWVIYW5kbGVyIG9iamVjdC4KKyAqLworLSAodm9pZCl3aWxsUGVy
Zm9ybVJlZGlyZWN0aW9uOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UgbmV3UmVxdWVzdDooTlNV
UkxSZXF1ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxSZXF1
ZXN0ICogX051bGxhYmxlKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAvKiEgQGFic3RyYWN0IFNldCB0aGUg
Y3VycmVudCByZXNwb25zZSBvYmplY3QgZm9yIHRoZSB0YXNrLgogIEBwYXJhbSByZXNwb25zZSBU
aGUgcmVzcG9uc2UgdG8gdXNlLgogIEBkaXNjdXNzaW9uIFRoaXMgbWV0aG9kIG11c3QgYmUgY2Fs
bGVkIGF0IGxlYXN0IG9uY2UgZm9yIGVhY2ggVVJMIHNjaGVtZSBoYW5kbGVyIHRhc2suCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVUYXNr
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFzay5t
bQppbmRleCA5Y2FlOGFjMTYyMmQuLjllNzlmNmQ2N2EwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFzay5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVUkxTY2hlbWVUYXNrLm1tCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbXBvcnQgPFdl
YkNvcmUvU2hhcmVkQnVmZmVyLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KIAog
c3RhdGljIFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6RXhjZXB0aW9uVHlwZSBnZXRFeGNlcHRp
b25UeXBlRnJvbU1haW5SdW5Mb29wKEZ1bmN0aW9uPFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6
RXhjZXB0aW9uVHlwZSAoKT4mJiBmdW5jdGlvbikKQEAgLTY2LDYgKzY3LDkgQEAgc3RhdGljIHZv
aWQgcmFpc2VFeGNlcHRpb25JZk5lY2Vzc2FyeShXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OkV4
Y2VwdGlvblR5cGUgZXgKICAgICBjYXNlIFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6RXhjZXB0
aW9uVHlwZTo6UmVkaXJlY3RBZnRlclJlc3BvbnNlOgogICAgICAgICBbTlNFeGNlcHRpb24gcmFp
c2U6TlNJbnRlcm5hbEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9ybWF0OkAiTm8gcmVkaXJlY3Rz
IGFyZSBhbGxvd2VkIGFmdGVyIHRoZSByZXNwb25zZSJdOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdlYktpdDo6V2ViVVJMU2NoZW1lVGFzazo6RXhjZXB0aW9uVHlwZTo6V2FpdGluZ0ZvclJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI6CisgICAgICAgIFtOU0V4Y2VwdGlvbiByYWlzZTpOU0lu
dGVybmFsSW5jb25zaXN0ZW5jeUV4Y2VwdGlvbiBmb3JtYXQ6QCJObyBjYWxsYmFja3MgYXJlIGFs
bG93ZWQgd2hpbGUgd2FpdGluZyBmb3IgdGhlIHJlZGlyZWN0aW9uIGNvbXBsZXRpb24gaGFuZGxl
ciB0byBiZSBpbnZva2VkIl07CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAtOTIsNiAr
OTYsMjAgQEAgLSAoQk9PTClfcmVxdWVzdE9ubHlJZkNhY2hlZAogICAgIHJldHVybiBfdXJsU2No
ZW1lVGFzay0+dGFzaygpLm5zUmVxdWVzdCgpLmNhY2hlUG9saWN5ID09IE5TVVJMUmVxdWVzdFJl
dHVybkNhY2hlRGF0YURvbnRMb2FkOwogfQogCistICh2b2lkKXdpbGxQZXJmb3JtUmVkaXJlY3Rp
b246KE5TVVJMUmVzcG9uc2UgKilyZXNwb25zZSBuZXdSZXF1ZXN0OihOU1VSTFJlcXVlc3QgKily
ZXF1ZXN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFJlcXVlc3QgKikpY29tcGxl
dGlvbkhhbmRsZXIKK3sKKyAgICBGdW5jdGlvbjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmKT4gaW5uZXJDb21wbGV0aW9uSGFuZGxlciA9IFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNv
bXBsZXRpb25IYW5kbGVyKV0gKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIGFjdHVhbE5ld1Jl
cXVlc3QpIHsKKyAgICAgICAgaGFuZGxlci5nZXQoKShhY3R1YWxOZXdSZXF1ZXN0Lm5zVVJMUmVx
dWVzdChXZWJDb3JlOjpIVFRQQm9keVVwZGF0ZVBvbGljeTo6VXBkYXRlSFRUUEJvZHkpKTsKKyAg
ICB9OworCisgICAgYXV0byBmdW5jdGlvbiA9IFtwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNl
bGYpLCBzZWxmLCBwcm90ZWN0ZWRSZXNwb25zZSA9IHJldGFpblB0cihyZXNwb25zZSksIHJlc3Bv
bnNlLCBwcm90ZWN0ZWRSZXF1ZXN0ID0gcmV0YWluUHRyKHJlcXVlc3QpLCByZXF1ZXN0LCBpbm5l
ckNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShpbm5lckNvbXBsZXRpb25IYW5kbGVyKV0gKCkg
bXV0YWJsZSB7CisgICAgICAgIHJldHVybiBfdXJsU2NoZW1lVGFzay0+dGFzaygpLndpbGxQZXJm
b3JtUmVkaXJlY3Rpb24ocmVzcG9uc2UsIHJlcXVlc3QsIFdURk1vdmUoaW5uZXJDb21wbGV0aW9u
SGFuZGxlcikpOworICAgIH07CisKKyAgICBhdXRvIHJlc3VsdCA9IGdldEV4Y2VwdGlvblR5cGVG
cm9tTWFpblJ1bkxvb3AoV1RGTW92ZShmdW5jdGlvbikpOworICAgIHJhaXNlRXhjZXB0aW9uSWZO
ZWNlc3NhcnkocmVzdWx0KTsKK30KKwogLSAodm9pZClkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJM
UmVzcG9uc2UgKilyZXNwb25zZQogewogICAgIGF1dG8gZnVuY3Rpb24gPSBbcHJvdGVjdGVkU2Vs
ZiA9IHJldGFpblB0cihzZWxmKSwgc2VsZiwgcHJvdGVjdGVkUmVzcG9uc2UgPSByZXRhaW5QdHIo
cmVzcG9uc2UpLCByZXNwb25zZV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCBjNTAwOWI2
ODg2ZjMuLjI4M2YyMDJjYzUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTU1NCw3ICs1
NTQsNyBAQCAtICh2b2lkKV9zZXRWaXNpdGVkTGlua1N0b3JlOihfV0tWaXNpdGVkTGlua1N0b3Jl
ICopdmlzaXRlZExpbmtTdG9yZQogCiAtICh2b2lkKXNldFVSTFNjaGVtZUhhbmRsZXI6KGlkIDxX
S1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXIgZm9yVVJMU2NoZW1lOihOU1N0cmlu
ZyAqKXVybFNjaGVtZQogewotICAgIGlmIChbV0tXZWJWaWV3IGhhbmRsZXNVUkxTY2hlbWU6dXJs
U2NoZW1lXSkKKyAgICBpZiAoW1dLV2ViVmlldyBoYW5kbGVzVVJMU2NoZW1lOnVybFNjaGVtZV0g
JiYgW3VybFNjaGVtZSBjYXNlSW5zZW5zaXRpdmVDb21wYXJlOkAiaHR0cCJdICE9IE5TT3JkZXJl
ZFNhbWUgJiYgW3VybFNjaGVtZSBjYXNlSW5zZW5zaXRpdmVDb21wYXJlOkAiaHR0cHMiXSAhPSBO
U09yZGVyZWRTYW1lKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1l
bnRFeGNlcHRpb24gZm9ybWF0OkAiJyVAJyBpcyBhIFVSTCBzY2hlbWUgdGhhdCBXS1dlYlZpZXcg
aGFuZGxlcyBuYXRpdmVseSIsIHVybFNjaGVtZV07CiAKICAgICBhdXRvIGNhbm9uaWNhbFNjaGVt
ZSA9IFdURjo6VVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZSh1cmxTY2hlbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZGVlNjE3NTg1YWY0
Li5hNDE5NGNjNzQ0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtOTUwOSwxNiArOTUwOSwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VVJMU2NoZW1l
SGFuZGxlckZvclNjaGVtZShSZWY8V2ViVVJMU2NoZW1lSGFuZGxlcj4mJiBoYW5kbAogewogICAg
IGF1dG8gY2Fub25pY2FsaXplZFNjaGVtZSA9IFdURjo6VVJMUGFyc2VyOjptYXliZUNhbm9uaWNh
bGl6ZVNjaGVtZShzY2hlbWUpOwogICAgIEFTU0VSVChjYW5vbmljYWxpemVkU2NoZW1lKTsKLSAg
ICBBU1NFUlQoIVdURjo6VVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoY2Fub25pY2FsaXplZFNj
aGVtZS52YWx1ZSgpKSk7CisKKyAgICBib29sIHNjaGVtZUlzSW5IVFRQRmFtaWx5ID0gKmNhbm9u
aWNhbGl6ZWRTY2hlbWUgPT0gImh0dHAiIHx8ICpjYW5vbmljYWxpemVkU2NoZW1lID09ICJodHRw
cyI7CisgICAgQVNTRVJUX1VOVVNFRChzY2hlbWVJc0luSFRUUEZhbWlseSwgc2NoZW1lSXNJbkhU
VFBGYW1pbHkgfHwgIVdURjo6VVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoY2Fub25pY2FsaXpl
ZFNjaGVtZS52YWx1ZSgpKSk7CiAKICAgICBhdXRvIHNjaGVtZVJlc3VsdCA9IG1fdXJsU2NoZW1l
SGFuZGxlcnNCeVNjaGVtZS5hZGQoY2Fub25pY2FsaXplZFNjaGVtZS52YWx1ZSgpLCBoYW5kbGVy
LmdldCgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHNjaGVtZVJlc3VsdCwgc2NoZW1lUmVzdWx0Lmlz
TmV3RW50cnkpOwogCi0gICAgYXV0byBpZGVudGlmaWVyID0gaGFuZGxlci0+aWRlbnRpZmllcigp
OwotICAgIGF1dG8gaWRlbnRpZmllclJlc3VsdCA9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50
aWZpZXIuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwotICAgIEFTU0VSVF9VTlVT
RUQoaWRlbnRpZmllclJlc3VsdCwgaWRlbnRpZmllclJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBh
dXRvIGhhbmRsZXJJZGVudGlmaWVyID0gaGFuZGxlci0+aWRlbnRpZmllcigpOworICAgIGF1dG8g
aGFuZGxlcklkZW50aWZpZXJSZXN1bHQgPSBtX3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVy
LmFkZChoYW5kbGVySWRlbnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgQVNTRVJUX1VO
VVNFRChoYW5kbGVySWRlbnRpZmllclJlc3VsdCwgaGFuZGxlcklkZW50aWZpZXJSZXN1bHQuaXNO
ZXdFbnRyeSk7CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWdpc3RlclVSTFNjaGVt
ZUhhbmRsZXIoaWRlbnRpZmllciwgY2Fub25pY2FsaXplZFNjaGVtZS52YWx1ZSgpKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGhhbmRsZXJJ
ZGVudGlmaWVyLCBjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpKTsKIH0KIAogV2ViVVJMU2No
ZW1lSGFuZGxlciogV2ViUGFnZVByb3h5Ojp1cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKGNvbnN0
IFN0cmluZyYgc2NoZW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcAppbmRleCAyY2Y0NWIzYzc3NDYuLjYzOTQ4ZTQzNWNjNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTYwLDIyICs2MCw2OSBAQCBX
ZWJVUkxTY2hlbWVUYXNrOjp+V2ViVVJMU2NoZW1lVGFzaygpCiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIH0KIAorYXV0byBXZWJVUkxTY2hlbWVUYXNrOjp3aWxsUGVyZm9ybVJlZGly
ZWN0aW9uKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgIEZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSAtPiBFeGNlcHRpb25UeXBlCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
KworICAgIGlmIChtX3N0b3BwZWQpCisgICAgICAgIHJldHVybiBtX3Nob3VsZFN1cHByZXNzVGFz
a1N0b3BwZWRFeGNlcHRpb25zID8gRXhjZXB0aW9uVHlwZTo6Tm9uZSA6IEV4Y2VwdGlvblR5cGU6
OlRhc2tBbHJlYWR5U3RvcHBlZDsKKworICAgIGlmIChtX2NvbXBsZXRlZCkKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvblR5cGU6OkNvbXBsZXRlQWxyZWFkeUNhbGxlZDsKKworICAgIGlmIChtX2Rh
dGFTZW50KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6RGF0YUFscmVhZHlTZW50Owor
CisgICAgaWYgKG1fcmVzcG9uc2VTZW50KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6
UmVkaXJlY3RBZnRlclJlc3BvbnNlOworCisgICAgaWYgKG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXJDYWxsYmFjaykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Oldh
aXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyOworCisgICAgaWYgKGlzU3luYygpKQor
ICAgICAgICBtX3N5bmNSZXNwb25zZSA9IHJlc3BvbnNlOworCisgICAgeworICAgICAgICBMb2Nr
SG9sZGVyIGxvY2tlcihtX3JlcXVlc3RMb2NrKTsKKyAgICAgICAgbV9yZXF1ZXN0ID0gcmVxdWVz
dDsKKyAgICB9CisKKyAgICBhdXRvKiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKG1f
cGFnZVByb3h5SUQpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5
cGU6Ok5vbmU7CisKKyAgICBtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyQ2Fs
bGJhY2sgPSB0cnVlOworCisgICAgRnVuY3Rpb248dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+IGlu
bmVyQ29tcGxldGlvbkhhbmRsZXIgPSBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0
aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgbXV0YWJsZSB7CisgICAgICAgIG1fd2FpdGluZ0ZvclJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXJDYWxsYmFjayA9IGZhbHNlOworICAgICAgICBpZiAoIW1f
c3RvcHBlZCAmJiAhbV9jb21wbGV0ZWQpCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHJlcXVlc3QpKTsKKyAgICB9OworCisgICAgcGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrV2lsbFBlcmZvcm1SZWRpcmVjdGlvbiht
X3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCByZXNwb25zZSwg
cmVxdWVzdCksIFdURk1vdmUoaW5uZXJDb21wbGV0aW9uSGFuZGxlcikpOworCisgICAgcmV0dXJu
IEV4Y2VwdGlvblR5cGU6Ok5vbmU7Cit9CisKIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUGVy
Zm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgLT4gRXhjZXB0aW9uVHlwZQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAobV9zdG9wcGVkKQogICAgICAg
ICByZXR1cm4gbV9zaG91bGRTdXBwcmVzc1Rhc2tTdG9wcGVkRXhjZXB0aW9ucyA/IEV4Y2VwdGlv
blR5cGU6Ok5vbmUgOiBFeGNlcHRpb25UeXBlOjpUYXNrQWxyZWFkeVN0b3BwZWQ7Ci0gICAgCisK
ICAgICBpZiAobV9jb21wbGV0ZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpDb21w
bGV0ZUFscmVhZHlDYWxsZWQ7Ci0gICAgCisKICAgICBpZiAobV9kYXRhU2VudCkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvblR5cGU6OkRhdGFBbHJlYWR5U2VudDsKLSAgICAKKwogICAgIGlmICht
X3Jlc3BvbnNlU2VudCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6OlJlZGlyZWN0QWZ0
ZXJSZXNwb25zZTsKLSAgICAKKworICAgIGlmIChtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRp
b25IYW5kbGVyQ2FsbGJhY2spCisgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpXYWl0aW5n
Rm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlcjsKKwogICAgIGlmIChpc1N5bmMoKSkKICAgICAg
ICAgbV9zeW5jUmVzcG9uc2UgPSByZXNwb25zZTsKIApAQCAtMTAyLDYgKzE0OSw5IEBAIGF1dG8g
V2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKSAtPiBFCiAgICAgaWYgKG1fZGF0YVNlbnQpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb25UeXBlOjpEYXRhQWxyZWFkeVNlbnQ7CiAKKyAgICBpZiAobV93YWl0aW5nRm9yUmVk
aXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
VHlwZTo6V2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI7CisKICAgICBtX3Jlc3Bv
bnNlU2VudCA9IHRydWU7CiAKICAgICByZXNwb25zZS5pbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCk7
CkBAIC0xMjYsNiArMTc2LDkgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0
YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICBpZiAoIW1f
cmVzcG9uc2VTZW50KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9SZXNwb25zZVNl
bnQ7CiAKKyAgICBpZiAobV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxi
YWNrKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6V2FpdGluZ0ZvclJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXI7CisKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5
bmMoKSkgewpAQCAtMTUzLDYgKzIwNiw5IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29t
cGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBp
ZiAoIW1fcmVzcG9uc2VTZW50ICYmIGVycm9yLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uVHlwZTo6Tm9SZXNwb25zZVNlbnQ7CiAKKyAgICBpZiAobV93YWl0aW5nRm9yUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrICYmIGVycm9yLmlzTnVsbCgpKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uVHlwZTo6V2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI7
CisKICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CiAgICAgCiAgICAgaWYgKGlzU3luYygpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNGIwN2JhMWEw
ZGIxLi44NzBkZmY4ZTJkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmgKQEAgLTc2LDggKzc2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgUmVkaXJlY3RBZnRl
clJlc3BvbnNlLAogICAgICAgICBUYXNrQWxyZWFkeVN0b3BwZWQsCiAgICAgICAgIE5vUmVzcG9u
c2VTZW50LAorICAgICAgICBXYWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciwKICAg
ICAgICAgTm9uZSwKICAgICB9OworICAgIEV4Y2VwdGlvblR5cGUgd2lsbFBlcmZvcm1SZWRpcmVj
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCAgRnVuY3Rpb248dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAg
IEV4Y2VwdGlvblR5cGUgZGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIEV4Y2VwdGlvblR5cGUg
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICAg
ICBFeGNlcHRpb25UeXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYpOwpAQCAtODgsNiArOTAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN1cHByZXNzVGFza1N0
b3BwZWRFeGNlcHRpb25zKCkgeyBtX3Nob3VsZFN1cHByZXNzVGFza1N0b3BwZWRFeGNlcHRpb25z
ID0gdHJ1ZTsgfQogCisgICAgYm9vbCB3YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxl
ckNhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9u
SGFuZGxlckNhbGxiYWNrOyB9CisKIHByaXZhdGU6CiAgICAgV2ViVVJMU2NoZW1lVGFzayhXZWJV
UkxTY2hlbWVIYW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYsIFN5bmNMb2FkQ29t
cGxldGlvbkhhbmRsZXImJik7CiAKQEAgLTExMCw2ICsxMTQsOCBAQCBwcml2YXRlOgogICAgIFN5
bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSBtX3N5bmNSZXNwb25zZTsKICAgICBSZWZQdHI8V2ViQ29y
ZTo6U2hhcmVkQnVmZmVyPiBtX3N5bmNEYXRhOworCisgICAgYm9vbCBtX3dhaXRpbmdGb3JSZWRp
cmVjdENvbXBsZXRpb25IYW5kbGVyQ2FsbGJhY2sgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCBhYjNmNzMyOWVjMTQuLjNiMmNhZDE1OWU4ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDUxLDYgKzEwNTEs
OCBAQAogCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxN0NGMEUxMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MTdDRjBFMzE2M0E0ODZDMDBD
Mjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDRjBFMTE2
M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHAgKi87IH07CiAJCTUxN0NGMEU0MTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTE3Q0YwRTIxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CisJCTUxODMyNDdDMjYxNjhDNjIwMDNGMjM5RSAv
KiBOZXR3b3JrVVJMU2NoZW1lSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE4MzI0NzUyNjE1OTlDQzAwM0YyMzlFIC8qIE5ldHdvcmtVUkxT
Y2hlbWVIYW5kbGVyLmggKi87IH07CisJCTUxODMyNDdEMjYxNjhGRjcwMDNGMjM5RSAvKiBOZXR3
b3JrVVJMU2NoZW1lVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE4MzI0N0EyNjE2ODY3NTAwM0YyMzlFIC8qIE5ldHdvcmtVUkxTY2hlbWVUYXNr
LmggKi87IH07CiAJCTUxODM3MjIyMjNDRTk3NDEwMDAzQ0Y4MyAvKiBBUElDb250ZW50V29ybGQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODM3MjIw
MjNDRTk3M0EwMDAzQ0Y4MyAvKiBBUElDb250ZW50V29ybGQuaCAqLzsgfTsKIAkJNTE4NzFCNUMx
MjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2Vi
Q29udGV4dE1lbnUuaCAqLzsgfTsKIAkJNTE4QUNBRUExMkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJv
dGVjdGlvblNwYWNlVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxOEFDQUU5MTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5
cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTQwMzEsNiArNDAzMywxMiBAQAogCQk1MTdDRjBFMTE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZl
ci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CiAJCTUxN0NGMEUxMTYzQTQ4NkMwMEMyOTUwRiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25u
ZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBw
YXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
TWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
IAkJNTE3Q0YwRTIxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1l
c3NhZ2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CisJCTUxODMyNDc1MjYxNTk5Q0MwMDNGMjM5RSAvKiBOZXR3b3JrVVJMU2NoZW1l
SGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrVVJMU2No
ZW1lSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTgzMjQ3NjI2MTU5
OUNDMDAzRjIzOUUgLyogTmV0d29ya1VSTFNjaGVtZUhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTmV0d29ya1VSTFNjaGVtZUhhbmRsZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTgzMjQ3ODI2MTVCMDBEMDAzRjIzOUUgLyogTmV0
d29ya1NjaGVtZVVSTFByb3RvY29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE5ldHdvcmtTY2hlbWVVUkxQcm90b2NvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1MTgzMjQ3OTI2MTVCMDBEMDAzRjIzOUUgLyogTmV0d29ya1NjaGVtZVVSTFByb3RvY29sLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya1NjaGVtZVVS
TFByb3RvY29sLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTgzMjQ3QTI2MTY4
Njc1MDAzRjIzOUUgLyogTmV0d29ya1VSTFNjaGVtZVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmV0d29ya1VSTFNjaGVtZVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTE4MzI0N0IyNjE2ODY3NTAwM0YyMzlFIC8qIE5ldHdvcmtVUkxTY2hlbWVU
YXNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtVUkxT
Y2hlbWVUYXNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4MzcyMjAyM0NF
OTczQTAwMDNDRjgzIC8qIEFQSUNvbnRlbnRXb3JsZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBUElDb250ZW50V29ybGQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE4MzcyMjEyM0NFOTczQTAwMDNDRjgzIC8qIEFQSUNvbnRlbnRXb3JsZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElDb250ZW50V29ybGQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTgzQjM5MzEzNzlGODVDMDBFODc1NEUgLyogU2hp
bS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBTaGltLnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODUxOSw2ICs4NTI3LDEwIEBACiAJCQkJ
NUMwQjE3N0UxRTdDODg2NzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW0uaCAqLywKIAkJ
CQk1QzBCMTc3RjFFN0M4ODY3MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbS5tZXNzYWdl
cy5pbiAqLywKIAkJCQk1QzlFRjJFNzIxRjA1OEY5MDAzQkRDNTYgLyogTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXIuaCAqLywKKwkJCQk1MTgzMjQ3NjI2MTU5OUNDMDAzRjIzOUUgLyogTmV0
d29ya1VSTFNjaGVtZUhhbmRsZXIuY3BwICovLAorCQkJCTUxODMyNDc1MjYxNTk5Q0MwMDNGMjM5
RSAvKiBOZXR3b3JrVVJMU2NoZW1lSGFuZGxlci5oICovLAorCQkJCTUxODMyNDdCMjYxNjg2NzUw
MDNGMjM5RSAvKiBOZXR3b3JrVVJMU2NoZW1lVGFzay5jcHAgKi8sCisJCQkJNTE4MzI0N0EyNjE2
ODY3NTAwM0YyMzlFIC8qIE5ldHdvcmtVUkxTY2hlbWVUYXNrLmggKi8sCiAJCQkJNDYyMTA3RDcx
RjM4REJEMzAwREQ3ODEwIC8qIFBpbmdMb2FkLmNwcCAqLywKIAkJCQk1Q0U4NUIxRjFDODhFNjQz
MDA3MEJGQ0UgLyogUGluZ0xvYWQuaCAqLywKIAkJCQk4M0EwRUQzMzFGNzQ3Q0M3MDAzMjk5RUIg
LyogUHJlY29ubmVjdFRhc2suY3BwICovLApAQCAtOTI0Nyw2ICs5MjU5LDggQEAKIAkJCQk3RUM0
RjBGOTE4RTRBOTQ1MDA4MDU2QUYgLyogTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSAqLywKIAkJCQk1
MzIxNTk1MDFEQkFFNkQ3MDA1NEFBM0MgLyogTmV0d29ya1Nlc3Npb25Db2NvYS5oICovLAogCQkJ
CTVDMjBDQjlCMUJCMERDRDIwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbkNvY29hLm1tICovLAor
CQkJCTUxODMyNDc4MjYxNUIwMEQwMDNGMjM5RSAvKiBOZXR3b3JrU2NoZW1lVVJMUHJvdG9jb2wu
aCAqLywKKwkJCQk1MTgzMjQ3OTI2MTVCMDBEMDAzRjIzOUUgLyogTmV0d29ya1NjaGVtZVVSTFBy
b3RvY29sLm1tICovLAogCQkJCTQxMjg3RDRDMjI1QzA1QzUwMDlBM0UyNiAvKiBXZWJTb2NrZXRU
YXNrQ29jb2EuaCAqLywKIAkJCQk0MTI4N0Q0QjIyNUMwNUM0MDA5QTNFMjYgLyogV2ViU29ja2V0
VGFza0NvY29hLm1tICovLAogCQkJKTsKQEAgLTExNjUzLDYgKzExNjY3LDcgQEAKIAkJCQkzMTdG
RTdDNTFDNDg3QTZDMDBBMENBODkgLyogQVBJRXhwZXJpbWVudGFsRmVhdHVyZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDBCOTY2MTYxOEUyNENCQTAwQ0UxRjg4IC8qIEFQSUZpbmRDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTJERDY3QTJFMUJEODE5NzMwMDUzQjI1MSAvKiBBUElGaW5kTWF0
Y2hlc0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4MzI0N0QyNjE2OEZGNzAwM0YyMzlF
IC8qIE5ldHdvcmtVUkxTY2hlbWVUYXNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0UyNUQ2RTE4
RkRFNUQ2MDA1RDNBMDAgLyogQVBJRm9ybUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFD
MTMzNzIxODU2NkM3QzAwRjNFQzA1IC8qIEFQSUZyYW1lSGFuZGxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyREY5RUVFNjFBNzgxRkI0MDBCNkNGQkUgLyogQVBJRnJhbWVJbmZvLmggaW4gSGVhZGVy
cyAqLywKQEAgLTEyODA0LDYgKzEyODE5LDcgQEAKIAkJCQkwRkNCNEU2ODE4QkJFM0Q5MDAwRkNG
QzkgLyogV0tUZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
RTIxMjE1RjI0MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNFNDU5NDVDMjQwRjg4NTUwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTgzMjQ3QzI2MTY4QzYyMDAzRjIzOUUgLyogTmV0d29y
a1VSTFNjaGVtZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFQjZGQzAxMjAzMDIxOTYw
MDE3RTYxOSAvKiBXS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzFBNjc2QTYyMkM2MjMyNTAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2du
aXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc2MDgxMjRGRjAyNzAwNjhGMjBBIC8qIFdL
VHlwZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IDc5MmQzNGMxMTA4Ny4uZjIwY2ZjNzc2ZGM1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjc0MCwxMiArNjc0
MCwyMSBAQCB2b2lkIFdlYlBhZ2U6OnJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcih1aW50NjRfdCBo
YW5kbGVySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJgogICAgIG1faWRlbnRpZmllclRvVVJMU2No
ZW1lSGFuZGxlclByb3h5TWFwLmFkZChoYW5kbGVySWRlbnRpZmllciwgc2NoZW1lUmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZS5nZXQoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza1dp
bGxQZXJmb3JtUmVkaXJlY3Rpb24odWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90
IHRhc2tJZGVudGlmaWVyLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8qIGhhbmRsZXIgPSBt
X2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5nZXQoaGFuZGxlcklkZW50aWZp
ZXIpOworICAgIEFTU0VSVChoYW5kbGVyKTsKKworICAgIGF1dG8gYWN0dWFsTmV3UmVxdWVzdCA9
IHJlcXVlc3Q7CisgICAgaGFuZGxlci0+dGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbih0YXNrSWRl
bnRpZmllciwgV1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKK30KKwogdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUGVy
Zm9ybVJlZGlyZWN0aW9uKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNr
SWRlbnRpZmllciwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0KQogewogICAgIGF1dG8qIGhhbmRsZXIgPSBtX2lkZW50aWZpZXJUb1VSTFNjaGVt
ZUhhbmRsZXJQcm94eU1hcC5nZXQoaGFuZGxlcklkZW50aWZpZXIpOwogICAgIEFTU0VSVChoYW5k
bGVyKTsKLSAgICAKLSAgICBoYW5kbGVyLT50YXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKHRhc2tJ
ZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShyZXF1ZXN0KSk7CisKKyAgICBo
YW5kbGVyLT50YXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKHRhc2tJZGVudGlmaWVyLCBXVEZNb3Zl
KHJlc3BvbnNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgW10gKFJlc291cmNlUmVxdWVzdCYmKSB7fSk7
CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2Uo
dWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBjNTRhNjE4ZGI0NmEuLjcwZWM5MTc2ZWFmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTgwNyw2ICsxODA3
LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKHVpbnQ2
NF90IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKIAorICAgIHZvaWQgdXJsU2No
ZW1lVGFza1dpbGxQZXJmb3JtUmVkaXJlY3Rpb24odWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIs
IHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUGVyZm9y
bVJlZGlyZWN0aW9uKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRl
bnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJik7CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2
NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2Vp
dmVEYXRhKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmll
ciwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBjOGU2NDZhZWRlYmMu
LjAwMDNjNTVkNzgzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01NTksNyArNTU5LDggQEAgR2VuZXJhdGVTeW50
aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZFR5cGUKIAogICAgIFJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcih1aW50NjRfdCBpZGVu
dGlmaWVyLCBTdHJpbmcgc2NoZW1lKQogCi0gICAgVVJMU2NoZW1lVGFza0RpZFBlcmZvcm1SZWRp
cmVjdGlvbih1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0KQorICAgIFVSTFNjaGVtZVRhc2tXaWxsUGVyZm9ybVJlZGlyZWN0aW9u
KHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHByb3Bvc2VkUmVxdWVzdCkgLT4gKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBhY3R1YWxSZXF1
ZXN0KSBBc3luYworICAgIFVSTFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24odWludDY0
X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcHJvcG9z
ZWRSZXF1ZXN0KQogICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qg
aGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSh1
aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIElQQzo6
U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZSBkYXRhKQogICAgIFVSTFNjaGVtZVRhc2tEaWRDb21w
bGV0ZSh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcApp
bmRleCBiZmJmZTcxNDFjOTguLmExYTBmMGNmMDJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHku
Y3BwCkBAIC03OCwxMyArNzgsMTMgQEAgdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnN0
b3BBbGxUYXNrcygpCiAgICAgICAgIG1fdGFza3MuYmVnaW4oKS0+dmFsdWUtPnN0b3BMb2FkaW5n
KCk7CiB9CiAKLXZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUGVyZm9ybVJl
ZGlyZWN0aW9uKHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVx
dWVzdCkKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUGVyZm9ybVJlZGly
ZWN0aW9uKHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVz
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogdGFzayA9IG1fdGFza3MuZ2V0KHRhc2tJ
ZGVudGlmaWVyKTsKICAgICBpZiAoIXRhc2spCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICB0
YXNrLT5kaWRQZXJmb3JtUmVkaXJlY3Rpb24oV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RG
TW92ZShuZXdSZXF1ZXN0KSk7CisgICAgdGFzay0+ZGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdURk1v
dmUocmVkaXJlY3RSZXNwb25zZSksIFdURk1vdmUobmV3UmVxdWVzdCksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tE
aWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaAppbmRleCAyMzViMzQwMGNj
NzUuLjYyOWE2ZjNjZTRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKQEAgLTU3LDcgKzU3LDcg
QEAgcHVibGljOgogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
ZW50aWZpZXI7IH0KICAgICBXZWJQYWdlJiBwYWdlKCkgeyByZXR1cm4gbV93ZWJQYWdlOyB9CiAK
LSAgICB2b2lkIHRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24odWludDY0X3QgdGFza0lkZW50aWZp
ZXIsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYpOworICAgIHZvaWQgdGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbih1aW50NjRfdCB0YXNrSWRl
bnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
Jik+JiYpOwogICAgIHZvaWQgdGFza0RpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCB0YXNrSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgdGFz
a0RpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBzaXplX3QsIGNvbnN0IHVp
bnQ4X3QqIGRhdGEpOwogICAgIHZvaWQgdGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IHRhc2tJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNw
cAppbmRleCBiYjA4ZDZiNTlkMTYuLjkwYTA2N2Q0YjRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3Bw
CkBAIC02OCwzMSArNjgsMzEgQEAgdm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OnN0b3BMb2Fk
aW5nKCkKICAgICBtX3VybFNjaGVtZUhhbmRsZXIudGFza0RpZFN0b3BMb2FkaW5nKCp0aGlzKTsK
IH0KICAgICAKLXZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRQZXJmb3JtUmVkaXJlY3Rp
b24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCit2b2lkIFdlYlVSTFNjaGVtZVRhc2tQcm94eTo6
ZGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVj
dFJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBpZiAoIWhhc0xvYWRlcigpKQorICAgIGlmICghaGFzTG9hZGVyKCkpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgcmV0dXJuOwotICAgIAot
ICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBvcmlnaW5hbFJlcXVlc3QgPSByZXF1ZXN0XSAoUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCkgewotICAgICAgICBtX3dhaXRpbmdGb3JDb21wbGV0aW9uSGFuZGxlciA9IGZhbHNl
OwotICAgICAgICAvLyBXZSBkbyBub3QgaW5mb3JtIHRoZSBVSVByb2Nlc3Mgb2YgV2ViS2l0J3Mg
bmV3IHJlcXVlc3Qgd2l0aCB0aGUgZ2l2ZW4gc3VnZ2VzdGVkIHJlcXVlc3QuCi0gICAgICAgIC8v
IFdlIGRvIHdhbnQgdG8ga25vdyBpZiBXZWJLaXQgd291bGQgaGF2ZSBnZW5lcmF0ZWQgYSByZXF1
ZXN0IHRoYXQgZGlmZmVycyBmcm9tIHRoZSBzdWdnZXN0ZWQgcmVxdWVzdCwgdGhvdWdoLgotICAg
ICAgICBpZiAocmVxdWVzdC51cmwoKSAhPSBvcmlnaW5hbFJlcXVlc3QudXJsKCkpCi0gICAgICAg
ICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiUmVkaXJlY3RlZCBzY2hlbWUgdGFzayB3b3VsZCBo
YXZlIGJlZW4gc2VudCB0byBhIGRpZmZlcmVudCBVUkwuIik7CisgICAgfQogCi0gICAgICAgIHBy
b2Nlc3NOZXh0UGVuZGluZ1Rhc2soKTsKLSAgICB9OwotICAgIAogICAgIGlmIChtX3dhaXRpbmdG
b3JDb21wbGV0aW9uSGFuZGxlcikgewogICAgICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiUmVj
ZWl2ZWQgcmVkaXJlY3QgZHVyaW5nIHByZXZpb3VzIHJlZGlyZWN0IHByb2Nlc3NpbmcsIHF1ZXVp
bmcgaXQuIik7Ci0gICAgICAgIHF1ZXVlVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCByZWRpcmVjdFJlc3BvbnNlID0gV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwg
cmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBkaWRQ
ZXJmb3JtUmVkaXJlY3Rpb24oV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RGTW92ZShyZXF1
ZXN0KSk7CisgICAgICAgIHF1ZXVlVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCByZWRpcmVjdFJlc3BvbnNlID0gV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgcmVx
dWVzdCA9IFdURk1vdmUocmVxdWVzdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBkaWRQZXJmb3JtUmVkaXJl
Y3Rpb24oV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBtX3dhaXRpbmdGb3JDb21wbGV0aW9uSGFuZGxlciA9IHRydWU7CiAKLSAgICBtX2Nv
cmVMb2FkZXItPndpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCByZWRpcmVjdFJlc3Bv
bnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byBpbm5lckNvbXBsZXRp
b25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb3JpZ2lu
YWxSZXF1ZXN0ID0gcmVxdWVzdCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgeworICAgICAg
ICBtX3dhaXRpbmdGb3JDb21wbGV0aW9uSGFuZGxlciA9IGZhbHNlOworCisgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOworCisgICAgICAgIHByb2Nlc3NOZXh0UGVu
ZGluZ1Rhc2soKTsKKyAgICB9OworCisgICAgbV9jb3JlTG9hZGVyLT53aWxsU2VuZFJlcXVlc3Qo
V1RGTW92ZShyZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgV1RGTW92ZShpbm5lckNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5o
CmluZGV4IGExMjQ1ZDkxODc0ZS4uYjVlMzM0ZGZjMjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaApAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydExvYWRpbmcoKTsKICAgICB2b2lk
IHN0b3BMb2FkaW5nKCk7CiAKLSAgICB2b2lkIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKKyAgICB2
b2lkIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEo
c2l6ZV90LCBjb25zdCB1aW50OF90KiBkYXRhKTsKICAgICB2b2lkIGRpZENvbXBsZXRlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiZTYwMWMxMDZkMTguLjJhOWQyNmQyMWVkOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDIxLTA0LTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgV0tVUkxTY2hlbWVUYXNrIHJlZGlyZWN0IEFQSS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDExOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbToKKyAgICAgICAgKC1bVGFza1NjaGVtZUhh
bmRsZXIgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgIChURVNUKToKKyAg
ICAgICAgKC1bSFRUUFJlZGlyZWN0VGVzdCB3ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToK
KyAgICAgICAgKC1bSFRUUFJlZGlyZWN0VGVzdCB3ZWJWaWV3OnN0b3BVUkxTY2hlbWVUYXNrOl0p
OgorCiAyMDIxLTAzLTMxICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAg
ICAgICAgUkVHUkVTU0lPTiAocjI3NTE1MCk6IHNldC13ZWJraXQtY29uZmlndXJhdGlvbiBpcyB0
b28gYWdncmVzc2l2ZSBhdCBkZWxldGluZyBjb25maWcgZmlsZXMgd2hlbiBzd2l0Y2ggaXMgbm90
IHNldApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S1VSTFNjaGVtZUhhbmRsZXItMS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KaW5kZXggYTc4YWIzNjhjZmYwLi4zODQxNmEz
NWYzNDIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQpAQCAtMzQ2LDYgKzM0Niw3IEBAIFRF
U1QoVVJMU2NoZW1lSGFuZGxlciwgUmVkaXJlY3Rpb24pCiAKIGVudW0gY2xhc3MgQ29tbWFuZCB7
CiAgICAgUmVkaXJlY3QsCisgICAgQVBJUmVkaXJlY3QsCiAgICAgUmVzcG9uc2UsCiAgICAgRGF0
YSwKICAgICBGaW5pc2gsCkBAIC0zODIsNiArMzgzLDkgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4p
dGEKICAgICAgICAgICAgIGNhc2UgQ29tbWFuZDo6UmVkaXJlY3Q6CiAgICAgICAgICAgICAgICAg
WyhpZDxXS1VSTFNjaGVtZVRhc2tQcml2YXRlPil0YXNrIF9kaWRQZXJmb3JtUmVkaXJlY3Rpb246
YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRdKS5nZXQoKSBuZXdSZXF1ZXN0OmFk
b3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRdKS5nZXQoKV07CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENvbW1hbmQ6OkFQSVJlZGlyZWN0OgorICAgICAg
ICAgICAgICAgIFsoaWQ8V0tVUkxTY2hlbWVUYXNrUHJpdmF0ZT4pdGFzayB3aWxsUGVyZm9ybVJl
ZGlyZWN0aW9uOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0XSkuZ2V0KCkgbmV3
UmVxdWVzdDphZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0XSkuZ2V0KCkgY29tcGxl
dGlvbkhhbmRsZXI6XihOU1VSTFJlcXVlc3QqKSB7IH1dOworICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBDb21tYW5kOjpSZXNwb25zZToKICAgICAgICAgICAgICAgICBb
dGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6YWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGlu
aXRdKS5nZXQoKV07CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00MzcsNiArNDQxLDExIEBA
IFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgRXhjZXB0aW9ucykKICAgICBjaGVja0NhbGxTZXF1ZW5j
ZSh7Q29tbWFuZDo6UmVzcG9uc2UsIENvbW1hbmQ6OkZpbmlzaCwgQ29tbWFuZDo6UmVzcG9uc2V9
LCBTaG91bGRSYWlzZUV4Y2VwdGlvbjo6WWVzKTsKICAgICBjaGVja0NhbGxTZXF1ZW5jZSh7Q29t
bWFuZDo6UmVzcG9uc2UsIENvbW1hbmQ6OkZpbmlzaCwgQ29tbWFuZDo6RmluaXNofSwgU2hvdWxk
UmFpc2VFeGNlcHRpb246Olllcyk7CiAgICAgY2hlY2tDYWxsU2VxdWVuY2Uoe0NvbW1hbmQ6OlJl
c3BvbnNlLCBDb21tYW5kOjpGaW5pc2gsIENvbW1hbmQ6OkVycm9yfSwgU2hvdWxkUmFpc2VFeGNl
cHRpb246Olllcyk7CisgICAgY2hlY2tDYWxsU2VxdWVuY2Uoe0NvbW1hbmQ6OkFQSVJlZGlyZWN0
LCBDb21tYW5kOjpSZWRpcmVjdH0sIFNob3VsZFJhaXNlRXhjZXB0aW9uOjpZZXMpOworICAgIGNo
ZWNrQ2FsbFNlcXVlbmNlKHtDb21tYW5kOjpBUElSZWRpcmVjdCwgQ29tbWFuZDo6UmVzcG9uc2V9
LCBTaG91bGRSYWlzZUV4Y2VwdGlvbjo6WWVzKTsKKyAgICBjaGVja0NhbGxTZXF1ZW5jZSh7Q29t
bWFuZDo6QVBJUmVkaXJlY3QsIENvbW1hbmQ6OkRhdGF9LCBTaG91bGRSYWlzZUV4Y2VwdGlvbjo6
WWVzKTsKKyAgICBjaGVja0NhbGxTZXF1ZW5jZSh7Q29tbWFuZDo6QVBJUmVkaXJlY3QsIENvbW1h
bmQ6OkZpbmlzaH0sIFNob3VsZFJhaXNlRXhjZXB0aW9uOjpZZXMpOworICAgIGNoZWNrQ2FsbFNl
cXVlbmNlKHtDb21tYW5kOjpBUElSZWRpcmVjdCwgQ29tbWFuZDo6RXJyb3J9LCBTaG91bGRSYWlz
ZUV4Y2VwdGlvbjo6Tm8pOwogfQogCiBzdHJ1Y3QgU2NoZW1lUmVzb3VyY2VJbmZvIHsKQEAgLTE0
MzMsMyArMTQ0Miw2MiBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIGlzU2VjdXJlQ29udGV4dCkK
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CiAg
ICAgRVhQRUNUX1dLX1NUUkVRKEAic2VjdXJlIiwgW2xhc3RTY3JpcHRNZXNzYWdlIGJvZHldKTsK
IH0KKworQGludGVyZmFjZSBIVFRQUmVkaXJlY3RUZXN0IDogTlNPYmplY3QgPFdLVVJMU2NoZW1l
SGFuZGxlcj4geworfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gSFRUUFJlZGlyZWN0VGVzdAor
CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNr
OihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNrCit7CisgICAgYXV0byByZWRpcmVjdFJlc3BvbnNl
ID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVz
dC5VUkwgTUlNRVR5cGU6bmlsIGV4cGVjdGVkQ29udGVudExlbmd0aDowIHRleHRFbmNvZGluZ05h
bWU6bmlsXSk7CisgICAgYXV0byByZWRpcmVjdFJlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1
ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vYmFy
LmNvbS9hbm90aGVydGVzdC5odG1sIl1dKTsKKworICAgIFt0YXNrIHdpbGxQZXJmb3JtUmVkaXJl
Y3Rpb246cmVkaXJlY3RSZXNwb25zZS5nZXQoKSBuZXdSZXF1ZXN0OnJlZGlyZWN0UmVxdWVzdC5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKE5TVVJMUmVxdWVzdCAqcHJvcG9zZWRSZXF1ZXN0KSB7
CisgICAgICAgIE5TU3RyaW5nICpodG1sID0gQCI8c2NyaXB0PndpbmRvdy53ZWJraXQubWVzc2Fn
ZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdEb2N1bWVudCBVUkw6ICcgKyBkb2N1
bWVudC5VUkwpOzwvc2NyaXB0PiI7CisgICAgICAgIGF1dG8gZmluYWxSZXNwb25zZSA9IGFkb3B0
TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpwcm9wb3NlZFJlcXVlc3QuVVJM
IE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6aHRtbC5sZW5ndGgg
dGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKworICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9u
c2U6ZmluYWxSZXNwb25zZS5nZXQoKV07CisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOlto
dG1sIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CisgICAgICAgIFt0
YXNrIGRpZEZpbmlzaF07CisgICAgfV07Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBzdG9wVVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzawor
eworfQorCitAZW5kCisKK1RFU1QoVVJMU2NoZW1lSGFuZGxlciwgSFRUUFdpdGhSZWRpcmVjdCkK
K3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gc2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1Rl
c3RVUkxTY2hlbWVIYW5kbGVyIG5ld10pOworICAgIFtzY2hlbWVIYW5kbGVyIHNldFN0YXJ0VVJM
U2NoZW1lVGFza0hhbmRsZXI6XihXS1dlYlZpZXcgKiwgaWQ8V0tVUkxTY2hlbWVUYXNrPiB0YXNr
KSB7CisgICAgICAgIGF1dG8gcmVkaXJlY3RSZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3Bv
bnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOm5pbCBleHBl
Y3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAgICAgICBhdXRv
IHJlZGlyZWN0UmVxdWVzdCA9IGFkb3B0TlMoW1tOU1VSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly9iYXIuY29tL2Fub3RoZXJ0ZXN0Lmh0
bWwiXV0pOworCisgICAgICAgIFt0YXNrIHdpbGxQZXJmb3JtUmVkaXJlY3Rpb246cmVkaXJlY3RS
ZXNwb25zZS5nZXQoKSBuZXdSZXF1ZXN0OnJlZGlyZWN0UmVxdWVzdC5nZXQoKSBjb21wbGV0aW9u
SGFuZGxlcjpeKE5TVVJMUmVxdWVzdCAqcHJvcG9zZWRSZXF1ZXN0KSB7CisgICAgICAgICAgICBO
U1N0cmluZyAqaHRtbCA9IEAiPHNjcmlwdD53aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50
ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnRG9jdW1lbnQgVVJMOiAnICsgZG9jdW1lbnQuVVJMKTs8
L3NjcmlwdD4iOworICAgICAgICAgICAgYXV0byBmaW5hbFJlc3BvbnNlID0gYWRvcHROUyhbW05T
VVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnByb3Bvc2VkUmVxdWVzdC5VUkwgTUlNRVR5
cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDpodG1sLmxlbmd0aCB0ZXh0RW5j
b2RpbmdOYW1lOm5pbF0pOworCisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6
ZmluYWxSZXNwb25zZS5nZXQoKV07CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpb
aHRtbCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOworICAgICAgICAg
ICAgW3Rhc2sgZGlkRmluaXNoXTsKKyAgICAgICAgfV07CisgICAgfV07CisKKyAgICBbY29uZmln
dXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2No
ZW1lOkAiaHR0cCJdOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2No
ZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJodHRwcyJdOworCisgICAgYXV0byBtZXNz
YWdlSGFuZGxlciA9IGFkb3B0TlMoW1tVUkxTY2hlbWVIYW5kbGVyTWVzc2FnZUhhbmRsZXIgYWxs
b2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBh
ZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhh
bmRsZXIiXTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICByZWNlaXZlZFNjcmlwdE1lc3NhZ2UgPSBmYWxz
ZTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2Zvby5jb20vdGVzdC5odG1sIl1dXTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU2NyaXB0TWVzc2FnZSk7CisgICAg
RVhQRUNUX1dLX1NUUkVRKEAiRG9jdW1lbnQgVVJMOiBodHRwczovL2Jhci5jb20vYW5vdGhlcnRl
c3QuaHRtbCIsIFtsYXN0U2NyaXB0TWVzc2FnZSBib2R5XSk7Cit9Cg==
</data>
<flag name="review"
          id="444882"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425054</attachid>
            <date>2021-04-02 14:18:13 -0700</date>
            <delta_ts>2021-04-02 18:06:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>37325</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMjYyMTliMmM4YWE4Li43ODQxYTk5OTJhNDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNTEgQEAKKzIwMjEtMDQtMDIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBXS1VSTFNjaGVtZVRhc2sgcmVkaXJlY3QgQVBJLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0MTE5CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBDb3ZlcmVkIGJ5IG5ldyBBUEkg
dGVzdHMuCisgICAgICAgIAorICAgICAgICBJbnN0ZWFkIG9mIHRoZSBleGlzdGluZyAiZGlkIGRv
IGEgcmVkaXJlY3QiIFNQSSB3aXRob3V0IGNvbXBsZXRpb24gaGFuZGxlciwgdGhpcyBvbmUgaGFz
CisgICAgICAgIGEgY29tcGxldGlvbiBoYW5kbGVyIHdpdGggYSBuZXcgcmVxdWVzdCBmb3IgdGhl
IHRhc2ssIHByb3Bvc2VkIGJ5IFdlYktpdC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVUkxTY2hlbWVUYXNrLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VS
TFNjaGVtZVRhc2subW06CisgICAgICAgIChyYWlzZUV4Y2VwdGlvbklmTmVjZXNzYXJ5KToKKyAg
ICAgICAgKC1bV0tVUkxTY2hlbWVUYXNrSW1wbCB3aWxsUGVyZm9ybVJlZGlyZWN0aW9uOm5ld1Jl
cXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW06CisgICAgICAgICgtW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpmb3JVUkxTY2hlbWU6XSk6CisKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpzZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKToKKworICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lVGFz
azo6d2lsbFBlcmZvcm1SZWRpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVt
ZVRhc2s6OmRpZFBlcmZvcm1SZWRpcmVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNj
aGVtZVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNj
aGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1l
VGFzazo6ZGlkQ29tcGxldGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OndhaXRpbmdGb3JSZWRpcmVj
dENvbXBsZXRpb25IYW5kbGVyQ2FsbGJhY2sgY29uc3QpOgorCisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVybFNjaGVtZVRhc2tXaWxs
UGVyZm9ybVJlZGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXJsU2NoZW1l
VGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbjoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRh
c2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hl
bWVUYXNrUHJveHk6OmRpZFBlcmZvcm1SZWRpcmVjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oOgorCiAyMDIxLTAzLTMwICBTaW1vbiBG
cmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFzc2VydGlvbnMgaW4g
RGlzcGxheVVwZGF0ZSB3aGVuIGRyYWdnaW5nIFdlYlZpZXcgd2luZG93cyBiZXR3ZWVuIHNjcmVl
bnMgd2l0aCBkaWZmZXJlbnQgcmVmcmVzaCByYXRlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFzay5oCmluZGV4IDI4Yjk5ODQzMDFkZi4u
NmFkOGQ4Njk2MTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVVJMU2NoZW1lVGFzay5oCkBAIC0zNiw2ICszNiwyMSBAQCBXS19BUElfQVZBSUxBQkxF
KG1hY29zKDEwLjEzKSwgaW9zKDExLjApKQogICovCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHksIGNvcHkpIE5TVVJMUmVxdWVzdCAqcmVxdWVzdDsKIAorLyohIEBhYnN0cmFjdCBJbmRp
Y2F0ZSB0aGUgdGFzayB3YXMgcmVkaXJlY3RlZC4KKyBAcGFyYW0gcmVzcG9uc2UgVGhlIHJlc3Bv
bnNlIGNhdXNpbmcgYSByZWRpcmVjdCB0byBhIG5ldyBVUkwuCisgQHBhcmFtIG5ld1JlcXVlc3Qg
VGhlIG5ldyBwcm9wb3NlZCByZXF1ZXN0IHRvIGhhbmRsZSB0aGUgcmVkaXJlY3Rpb24uCisgQHBh
cmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgY29tcGxldGlvbiBoYW5kbGVyIGNhbGxlZCB3aXRoIHRo
ZSByZXF1ZXN0IHlvdSBzaG91bGQgdXNlIHRvIGNvbW1pdCB0byB0aGUgcmVkaXJlY3Rpb24uCisg
QGRpc2N1c3Npb24gV2hlbiBwZXJmb3JtaW5nIGEgbG9hZCBvZiBhIFVSTCBvdmVyIGEgbmV0d29y
aywgdGhlIHNlcnZlciBtaWdodCBkZWNpZGUgYSBkaWZmZXJlbnQgVVJMIHNob3VsZCBiZSBsb2Fk
ZWQgaW5zdGVhZC4KKyBBIGNvbW1vbiBleGFtcGxlIGlzIGFuIEhUVFAgcmVkaXJlY3QuCisgV2hl
biB0aGlzIGhhcHBlbnMsIHlvdSBzaG91bGQgbm90aWZ5IFdlYktpdCBieSBzZW5kaW5nIHRoZSBz
ZXJ2ZXJzIHJlc3BvbnNlIGFuZCBhIHByb3Bvc2VkIG5ldyByZXF1ZXN0IHRvIHRoZSBXS1VSTFNj
aGVtZVRhc2suCisgV2ViS2l0IG1pZ2h0IGRlY2lkZSB0aGF0IGNoYW5nZXMgbmVlZCB0byBiZSBt
YWtlIHRvIHRoZSBwcm9wb3NlZCByZXF1ZXN0LgorIFRoaXMgaXMgY29tbXVuaWNhdGVkIHRocm91
Z2ggdGhlIGNvbXBsZXRpb25IYW5kbGVyIHdoaWNoIHRlbGxzIHlvdSB0aGUgcmVxdWVzdCB5b3Ug
c2hvdWxkIG1ha2UgdG8gY29tbWl0IHRvIHRoZSByZWRpcmVjdGlvbi4KKworIEFuIGV4Y2VwdGlv
biB3aWxsIGJlIHRocm93biBpZiB5b3UgbWFrZSBhbnkgb3RoZXIgY2FsbGJhY2tzIHRvIHRoZSBX
S1VSTFNjaGVtZVRhc2sgd2hpbGUgdGhpcyBjb21wbGV0aW9uSGFuZGxlciBpcyBwZW5kaW5nLCBv
dGhlciB0aGFuIGRpZEZhaWxXaXRoRXJyb3I6LgorIEFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93
biBpZiB5b3VyIGFwcCBoYXMgYmVlbiB0b2xkIHRvIHN0b3AgbG9hZGluZyB0aGlzIHRhc2sgdmlh
IHRoZSByZWdpc3RlcmVkIFdLVVJMU2NoZW1lSGFuZGxlciBvYmplY3QuCisgKi8KKy0gKHZvaWQp
d2lsbFBlcmZvcm1SZWRpcmVjdGlvbjooTlNVUkxSZXNwb25zZSAqKXJlc3BvbnNlIG5ld1JlcXVl
c3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5T
VVJMUmVxdWVzdCAqIF9OdWxsYWJsZSkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLyohIEBhYnN0cmFjdCBT
ZXQgdGhlIGN1cnJlbnQgcmVzcG9uc2Ugb2JqZWN0IGZvciB0aGUgdGFzay4KICBAcGFyYW0gcmVz
cG9uc2UgVGhlIHJlc3BvbnNlIHRvIHVzZS4KICBAZGlzY3Vzc2lvbiBUaGlzIG1ldGhvZCBtdXN0
IGJlIGNhbGxlZCBhdCBsZWFzdCBvbmNlIGZvciBlYWNoIFVSTCBzY2hlbWUgaGFuZGxlciB0YXNr
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2No
ZW1lVGFzay5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVt
ZVRhc2subW0KaW5kZXggOWNhZThhYzE2MjJkLi43MjZmOTEzMDdhYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VSTFNjaGVtZVRhc2subW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVVJMU2NoZW1lVGFzay5tbQpAQCAt
MzQsNiArMzQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+Cisj
aW1wb3J0IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbXBvcnQgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAKIHN0YXRpYyBXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OkV4Y2VwdGlvblR5cGUgZ2V0
RXhjZXB0aW9uVHlwZUZyb21NYWluUnVuTG9vcChGdW5jdGlvbjxXZWJLaXQ6OldlYlVSTFNjaGVt
ZVRhc2s6OkV4Y2VwdGlvblR5cGUgKCk+JiYgZnVuY3Rpb24pCkBAIC02Niw2ICs2Nyw5IEBAIHN0
YXRpYyB2b2lkIHJhaXNlRXhjZXB0aW9uSWZOZWNlc3NhcnkoV2ViS2l0OjpXZWJVUkxTY2hlbWVU
YXNrOjpFeGNlcHRpb25UeXBlIGV4CiAgICAgY2FzZSBXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6
OkV4Y2VwdGlvblR5cGU6OlJlZGlyZWN0QWZ0ZXJSZXNwb25zZToKICAgICAgICAgW05TRXhjZXB0
aW9uIHJhaXNlOk5TSW50ZXJuYWxJbmNvbnNpc3RlbmN5RXhjZXB0aW9uIGZvcm1hdDpAIk5vIHJl
ZGlyZWN0cyBhcmUgYWxsb3dlZCBhZnRlciB0aGUgcmVzcG9uc2UiXTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OkV4Y2VwdGlvblR5cGU6OldhaXRp
bmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyOgorICAgICAgICBbTlNFeGNlcHRpb24gcmFp
c2U6TlNJbnRlcm5hbEluY29uc2lzdGVuY3lFeGNlcHRpb24gZm9ybWF0OkAiTm8gY2FsbGJhY2tz
IGFyZSBhbGxvd2VkIHdoaWxlIHdhaXRpbmcgZm9yIHRoZSByZWRpcmVjdGlvbiBjb21wbGV0aW9u
IGhhbmRsZXIgdG8gYmUgaW52b2tlZCJdOworICAgICAgICBicmVhazsKICAgICB9CiB9CiAKQEAg
LTkyLDYgKzk2LDE4IEBAIC0gKEJPT0wpX3JlcXVlc3RPbmx5SWZDYWNoZWQKICAgICByZXR1cm4g
X3VybFNjaGVtZVRhc2stPnRhc2soKS5uc1JlcXVlc3QoKS5jYWNoZVBvbGljeSA9PSBOU1VSTFJl
cXVlc3RSZXR1cm5DYWNoZURhdGFEb250TG9hZDsKIH0KIAorLSAodm9pZCl3aWxsUGVyZm9ybVJl
ZGlyZWN0aW9uOihOU1VSTFJlc3BvbnNlICopcmVzcG9uc2UgbmV3UmVxdWVzdDooTlNVUkxSZXF1
ZXN0ICopcmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxSZXF1ZXN0ICop
KWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgYXV0byBmdW5jdGlvbiA9IFtwcm90ZWN0ZWRTZWxm
ID0gcmV0YWluUHRyKHNlbGYpLCBzZWxmLCBwcm90ZWN0ZWRSZXNwb25zZSA9IHJldGFpblB0cihy
ZXNwb25zZSksIHJlc3BvbnNlLCBwcm90ZWN0ZWRSZXF1ZXN0ID0gcmV0YWluUHRyKHJlcXVlc3Qp
LCByZXF1ZXN0LCBoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkg
bXV0YWJsZSB7CisgICAgICAgIHJldHVybiBfdXJsU2NoZW1lVGFzay0+dGFzaygpLndpbGxQZXJm
b3JtUmVkaXJlY3Rpb24ocmVzcG9uc2UsIHJlcXVlc3QsIFtoYW5kbGVyID0gV1RGTW92ZShoYW5k
bGVyKV0gKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIGFjdHVhbE5ld1JlcXVlc3QpIHsKKyAg
ICAgICAgICAgIGhhbmRsZXIuZ2V0KCkoYWN0dWFsTmV3UmVxdWVzdC5uc1VSTFJlcXVlc3QoV2Vi
Q29yZTo6SFRUUEJvZHlVcGRhdGVQb2xpY3k6OlVwZGF0ZUhUVFBCb2R5KSk7CisgICAgICAgIH0p
OworICAgIH07CisKKyAgICBhdXRvIHJlc3VsdCA9IGdldEV4Y2VwdGlvblR5cGVGcm9tTWFpblJ1
bkxvb3AoV1RGTW92ZShmdW5jdGlvbikpOworICAgIHJhaXNlRXhjZXB0aW9uSWZOZWNlc3Nhcnko
cmVzdWx0KTsKK30KKwogLSAodm9pZClkaWRSZWNlaXZlUmVzcG9uc2U6KE5TVVJMUmVzcG9uc2Ug
KilyZXNwb25zZQogewogICAgIGF1dG8gZnVuY3Rpb24gPSBbcHJvdGVjdGVkU2VsZiA9IHJldGFp
blB0cihzZWxmKSwgc2VsZiwgcHJvdGVjdGVkUmVzcG9uc2UgPSByZXRhaW5QdHIocmVzcG9uc2Up
LCByZXNwb25zZV0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbQppbmRleCBjNTAwOWI2ODg2ZjMuLjI4
M2YyMDJjYzUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KQEAgLTU1NCw3ICs1NTQsNyBAQCAt
ICh2b2lkKV9zZXRWaXNpdGVkTGlua1N0b3JlOihfV0tWaXNpdGVkTGlua1N0b3JlICopdmlzaXRl
ZExpbmtTdG9yZQogCiAtICh2b2lkKXNldFVSTFNjaGVtZUhhbmRsZXI6KGlkIDxXS1VSTFNjaGVt
ZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXIgZm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNj
aGVtZQogewotICAgIGlmIChbV0tXZWJWaWV3IGhhbmRsZXNVUkxTY2hlbWU6dXJsU2NoZW1lXSkK
KyAgICBpZiAoW1dLV2ViVmlldyBoYW5kbGVzVVJMU2NoZW1lOnVybFNjaGVtZV0gJiYgW3VybFNj
aGVtZSBjYXNlSW5zZW5zaXRpdmVDb21wYXJlOkAiaHR0cCJdICE9IE5TT3JkZXJlZFNhbWUgJiYg
W3VybFNjaGVtZSBjYXNlSW5zZW5zaXRpdmVDb21wYXJlOkAiaHR0cHMiXSAhPSBOU09yZGVyZWRT
YW1lKQogICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRp
b24gZm9ybWF0OkAiJyVAJyBpcyBhIFVSTCBzY2hlbWUgdGhhdCBXS1dlYlZpZXcgaGFuZGxlcyBu
YXRpdmVseSIsIHVybFNjaGVtZV07CiAKICAgICBhdXRvIGNhbm9uaWNhbFNjaGVtZSA9IFdURjo6
VVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZSh1cmxTY2hlbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZGVlNjE3NTg1YWY0Li5hNDE5NGNj
NzQ0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTUw
OSwxNiArOTUwOSwxOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VVJMU2NoZW1lSGFuZGxlckZv
clNjaGVtZShSZWY8V2ViVVJMU2NoZW1lSGFuZGxlcj4mJiBoYW5kbAogewogICAgIGF1dG8gY2Fu
b25pY2FsaXplZFNjaGVtZSA9IFdURjo6VVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVt
ZShzY2hlbWUpOwogICAgIEFTU0VSVChjYW5vbmljYWxpemVkU2NoZW1lKTsKLSAgICBBU1NFUlQo
IVdURjo6VVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoY2Fub25pY2FsaXplZFNjaGVtZS52YWx1
ZSgpKSk7CisKKyAgICBib29sIHNjaGVtZUlzSW5IVFRQRmFtaWx5ID0gKmNhbm9uaWNhbGl6ZWRT
Y2hlbWUgPT0gImh0dHAiIHx8ICpjYW5vbmljYWxpemVkU2NoZW1lID09ICJodHRwcyI7CisgICAg
QVNTRVJUX1VOVVNFRChzY2hlbWVJc0luSFRUUEZhbWlseSwgc2NoZW1lSXNJbkhUVFBGYW1pbHkg
fHwgIVdURjo6VVJMUGFyc2VyOjppc1NwZWNpYWxTY2hlbWUoY2Fub25pY2FsaXplZFNjaGVtZS52
YWx1ZSgpKSk7CiAKICAgICBhdXRvIHNjaGVtZVJlc3VsdCA9IG1fdXJsU2NoZW1lSGFuZGxlcnNC
eVNjaGVtZS5hZGQoY2Fub25pY2FsaXplZFNjaGVtZS52YWx1ZSgpLCBoYW5kbGVyLmdldCgpKTsK
ICAgICBBU1NFUlRfVU5VU0VEKHNjaGVtZVJlc3VsdCwgc2NoZW1lUmVzdWx0LmlzTmV3RW50cnkp
OwogCi0gICAgYXV0byBpZGVudGlmaWVyID0gaGFuZGxlci0+aWRlbnRpZmllcigpOwotICAgIGF1
dG8gaWRlbnRpZmllclJlc3VsdCA9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50aWZpZXIuYWRk
KGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwotICAgIEFTU0VSVF9VTlVTRUQoaWRlbnRp
ZmllclJlc3VsdCwgaWRlbnRpZmllclJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBhdXRvIGhhbmRs
ZXJJZGVudGlmaWVyID0gaGFuZGxlci0+aWRlbnRpZmllcigpOworICAgIGF1dG8gaGFuZGxlcklk
ZW50aWZpZXJSZXN1bHQgPSBtX3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyLmFkZChoYW5k
bGVySWRlbnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CisgICAgQVNTRVJUX1VOVVNFRChoYW5k
bGVySWRlbnRpZmllclJlc3VsdCwgaGFuZGxlcklkZW50aWZpZXJSZXN1bHQuaXNOZXdFbnRyeSk7
CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIo
aWRlbnRpZmllciwgY2Fub25pY2FsaXplZFNjaGVtZS52YWx1ZSgpKSk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6UmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGhhbmRsZXJJZGVudGlmaWVy
LCBjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpKTsKIH0KIAogV2ViVVJMU2NoZW1lSGFuZGxl
ciogV2ViUGFnZVByb3h5Ojp1cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKGNvbnN0IFN0cmluZyYg
c2NoZW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApp
bmRleCAyY2Y0NWIzYzc3NDYuLjYzOTQ4ZTQzNWNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTYwLDIyICs2MCw2OSBAQCBXZWJVUkxTY2hl
bWVUYXNrOjp+V2ViVVJMU2NoZW1lVGFzaygpCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKIH0KIAorYXV0byBXZWJVUkxTY2hlbWVUYXNrOjp3aWxsUGVyZm9ybVJlZGlyZWN0aW9uKFJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgIEZ1
bmN0aW9uPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSAtPiBF
eGNlcHRpb25UeXBlCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlm
IChtX3N0b3BwZWQpCisgICAgICAgIHJldHVybiBtX3Nob3VsZFN1cHByZXNzVGFza1N0b3BwZWRF
eGNlcHRpb25zID8gRXhjZXB0aW9uVHlwZTo6Tm9uZSA6IEV4Y2VwdGlvblR5cGU6OlRhc2tBbHJl
YWR5U3RvcHBlZDsKKworICAgIGlmIChtX2NvbXBsZXRlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvblR5cGU6OkNvbXBsZXRlQWxyZWFkeUNhbGxlZDsKKworICAgIGlmIChtX2RhdGFTZW50KQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6RGF0YUFscmVhZHlTZW50OworCisgICAgaWYg
KG1fcmVzcG9uc2VTZW50KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6UmVkaXJlY3RB
ZnRlclJlc3BvbnNlOworCisgICAgaWYgKG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhh
bmRsZXJDYWxsYmFjaykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6OldhaXRpbmdGb3JS
ZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyOworCisgICAgaWYgKGlzU3luYygpKQorICAgICAgICBt
X3N5bmNSZXNwb25zZSA9IHJlc3BvbnNlOworCisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihtX3JlcXVlc3RMb2NrKTsKKyAgICAgICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICB9
CisKKyAgICBhdXRvKiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKG1fcGFnZVByb3h5
SUQpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7
CisKKyAgICBtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyQ2FsbGJhY2sgPSB0
cnVlOworCisgICAgRnVuY3Rpb248dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+IGlubmVyQ29tcGxl
dGlvbkhhbmRsZXIgPSBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCkgbXV0YWJsZSB7CisgICAgICAgIG1fd2FpdGluZ0ZvclJlZGlyZWN0Q29t
cGxldGlvbkhhbmRsZXJDYWxsYmFjayA9IGZhbHNlOworICAgICAgICBpZiAoIW1fc3RvcHBlZCAm
JiAhbV9jb21wbGV0ZWQpCisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJl
cXVlc3QpKTsKKyAgICB9OworCisgICAgcGFnZS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrV2lsbFBlcmZvcm1SZWRpcmVjdGlvbihtX3VybFNjaGVt
ZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCByZXNwb25zZSwgcmVxdWVzdCks
IFdURk1vdmUoaW5uZXJDb21wbGV0aW9uSGFuZGxlcikpOworCisgICAgcmV0dXJuIEV4Y2VwdGlv
blR5cGU6Ok5vbmU7Cit9CisKIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUGVyZm9ybVJlZGly
ZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgLT4gRXhjZXB0aW9uVHlwZQogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAobV9zdG9wcGVkKQogICAgICAgICByZXR1cm4g
bV9zaG91bGRTdXBwcmVzc1Rhc2tTdG9wcGVkRXhjZXB0aW9ucyA/IEV4Y2VwdGlvblR5cGU6Ok5v
bmUgOiBFeGNlcHRpb25UeXBlOjpUYXNrQWxyZWFkeVN0b3BwZWQ7Ci0gICAgCisKICAgICBpZiAo
bV9jb21wbGV0ZWQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpDb21wbGV0ZUFscmVh
ZHlDYWxsZWQ7Ci0gICAgCisKICAgICBpZiAobV9kYXRhU2VudCkKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvblR5cGU6OkRhdGFBbHJlYWR5U2VudDsKLSAgICAKKwogICAgIGlmIChtX3Jlc3BvbnNl
U2VudCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6OlJlZGlyZWN0QWZ0ZXJSZXNwb25z
ZTsKLSAgICAKKworICAgIGlmIChtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVy
Q2FsbGJhY2spCisgICAgICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpXYWl0aW5nRm9yUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlcjsKKwogICAgIGlmIChpc1N5bmMoKSkKICAgICAgICAgbV9zeW5j
UmVzcG9uc2UgPSByZXNwb25zZTsKIApAQCAtMTAyLDYgKzE0OSw5IEBAIGF1dG8gV2ViVVJMU2No
ZW1lVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKSAtPiBFCiAgICAgaWYgKG1fZGF0YVNlbnQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb25U
eXBlOjpEYXRhQWxyZWFkeVNlbnQ7CiAKKyAgICBpZiAobV93YWl0aW5nRm9yUmVkaXJlY3RDb21w
bGV0aW9uSGFuZGxlckNhbGxiYWNrKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6V2Fp
dGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI7CisKICAgICBtX3Jlc3BvbnNlU2VudCA9
IHRydWU7CiAKICAgICByZXNwb25zZS5pbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCk7CkBAIC0xMjYs
NiArMTc2LDkgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICBpZiAoIW1fcmVzcG9uc2VT
ZW50KQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9SZXNwb25zZVNlbnQ7CiAKKyAg
ICBpZiAobV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNrKQorICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6V2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhh
bmRsZXI7CisKICAgICBtX2RhdGFTZW50ID0gdHJ1ZTsKIAogICAgIGlmIChpc1N5bmMoKSkgewpA
QCAtMTUzLDYgKzIwNiw5IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICBpZiAoIW1fcmVz
cG9uc2VTZW50ICYmIGVycm9yLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlw
ZTo6Tm9SZXNwb25zZVNlbnQ7CiAKKyAgICBpZiAobV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlckNhbGxiYWNrICYmIGVycm9yLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uVHlwZTo6V2FpdGluZ0ZvclJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXI7CisKICAgICBt
X2NvbXBsZXRlZCA9IHRydWU7CiAgICAgCiAgICAgaWYgKGlzU3luYygpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggNGIwN2JhMWEwZGIxLi44NzBk
ZmY4ZTJkNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgK
QEAgLTc2LDggKzc2LDEwIEBAIHB1YmxpYzoKICAgICAgICAgUmVkaXJlY3RBZnRlclJlc3BvbnNl
LAogICAgICAgICBUYXNrQWxyZWFkeVN0b3BwZWQsCiAgICAgICAgIE5vUmVzcG9uc2VTZW50LAor
ICAgICAgICBXYWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciwKICAgICAgICAgTm9u
ZSwKICAgICB9OworICAgIEV4Y2VwdGlvblR5cGUgd2lsbFBlcmZvcm1SZWRpcmVjdGlvbihXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCAgRnVu
Y3Rpb248dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwogICAgIEV4Y2VwdGlv
blR5cGUgZGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIEV4Y2VwdGlvblR5cGUgZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKICAgICBFeGNlcHRp
b25UeXBlIGRpZFJlY2VpdmVEYXRhKFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpOwpAQCAt
ODgsNiArOTAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN1cHByZXNzVGFza1N0b3BwZWRFeGNl
cHRpb25zKCkgeyBtX3Nob3VsZFN1cHByZXNzVGFza1N0b3BwZWRFeGNlcHRpb25zID0gdHJ1ZTsg
fQogCisgICAgYm9vbCB3YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNhbGxiYWNr
KCkgY29uc3QgeyByZXR1cm4gbV93YWl0aW5nRm9yUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlckNh
bGxiYWNrOyB9CisKIHByaXZhdGU6CiAgICAgV2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVI
YW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYsIFN5bmNMb2FkQ29tcGxldGlvbkhh
bmRsZXImJik7CiAKQEAgLTExMCw2ICsxMTQsOCBAQCBwcml2YXRlOgogICAgIFN5bmNMb2FkQ29t
cGxldGlvbkhhbmRsZXIgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7CiAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSBtX3N5bmNSZXNwb25zZTsKICAgICBSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBtX3N5bmNEYXRhOworCisgICAgYm9vbCBtX3dhaXRpbmdGb3JSZWRpcmVjdENvbXBs
ZXRpb25IYW5kbGVyQ2FsbGJhY2sgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBhYjNmNzMyOWVjMTQuLjNiMmNhZDE1OWU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDUxLDYgKzEwNTEsOCBAQAogCQk1
MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxN0NGMEUxMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25N
ZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYgLyog
Q2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDRjBFMTE2M0E0ODZDMDBD
Mjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAg
Ki87IH07CiAJCTUxN0NGMEU0MTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE3Q0YwRTIxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bk1lc3NhZ2VzLmggKi87IH07CisJCTUxODMyNDdDMjYxNjhDNjIwMDNGMjM5RSAvKiBOZXR3b3Jr
VVJMU2NoZW1lSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE4MzI0NzUyNjE1OTlDQzAwM0YyMzlFIC8qIE5ldHdvcmtVUkxTY2hlbWVIYW5k
bGVyLmggKi87IH07CisJCTUxODMyNDdEMjYxNjhGRjcwMDNGMjM5RSAvKiBOZXR3b3JrVVJMU2No
ZW1lVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE4MzI0N0EyNjE2ODY3NTAwM0YyMzlFIC8qIE5ldHdvcmtVUkxTY2hlbWVUYXNrLmggKi87IH07
CiAJCTUxODM3MjIyMjNDRTk3NDEwMDAzQ0Y4MyAvKiBBUElDb250ZW50V29ybGQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODM3MjIwMjNDRTk3M0Ew
MDAzQ0Y4MyAvKiBBUElDb250ZW50V29ybGQuaCAqLzsgfTsKIAkJNTE4NzFCNUMxMjdDQjg5RDAw
Rjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1l
bnUuaCAqLzsgfTsKIAkJNTE4QUNBRUExMkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNw
YWNlVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxOEFDQUU5MTJBRUU2QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQwMzEsNiAr
NDAzMywxMiBAQAogCQk1MTdDRjBFMTE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3Nh
Z2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTUx
N0NGMEUxMTYzQTQ4NkMwMEMyOTUwRiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uTWVz
c2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9DYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uTWVzc2FnZVJl
Y2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNTE3Q0Yw
RTIxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bk1lc3NhZ2VzLmg7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CisJCTUxODMyNDc1MjYxNTk5Q0MwMDNGMjM5RSAvKiBOZXR3b3JrVVJMU2NoZW1lSGFuZGxlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOZXR3b3JrVVJMU2NoZW1lSGFuZGxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTgzMjQ3NjI2MTU5OUNDMDAzRjIz
OUUgLyogTmV0d29ya1VSTFNjaGVtZUhhbmRsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTmV0d29ya1VSTFNjaGVtZUhhbmRsZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MTgzMjQ3ODI2MTVCMDBEMDAzRjIzOUUgLyogTmV0d29ya1NjaGVt
ZVVSTFByb3RvY29sLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtT
Y2hlbWVVUkxQcm90b2NvbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTgzMjQ3
OTI2MTVCMDBEMDAzRjIzOUUgLyogTmV0d29ya1NjaGVtZVVSTFByb3RvY29sLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTmV0d29ya1NjaGVtZVVSTFByb3RvY29s
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTgzMjQ3QTI2MTY4Njc1MDAzRjIz
OUUgLyogTmV0d29ya1VSTFNjaGVtZVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTmV0d29ya1VSTFNjaGVtZVRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTE4MzI0N0IyNjE2ODY3NTAwM0YyMzlFIC8qIE5ldHdvcmtVUkxTY2hlbWVUYXNrLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5ldHdvcmtVUkxTY2hlbWVUYXNr
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4MzcyMjAyM0NFOTczQTAwMDND
RjgzIC8qIEFQSUNvbnRlbnRXb3JsZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBUElDb250ZW50V29ybGQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4Mzcy
MjEyM0NFOTczQTAwMDNDRjgzIC8qIEFQSUNvbnRlbnRXb3JsZC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBUElDb250ZW50V29ybGQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTgzQjM5MzEzNzlGODVDMDBFODc1NEUgLyogU2hpbS54Y2NvbmZp
ZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBTaGltLnhjY29uZmlnOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtODUxOSw2ICs4NTI3LDEwIEBACiAJCQkJNUMwQjE3N0Ux
RTdDODg2NzAwRTkxMjNDIC8qIE5ldHdvcmtTb2NrZXRTdHJlYW0uaCAqLywKIAkJCQk1QzBCMTc3
RjFFN0M4ODY3MDBFOTEyM0MgLyogTmV0d29ya1NvY2tldFN0cmVhbS5tZXNzYWdlcy5pbiAqLywK
IAkJCQk1QzlFRjJFNzIxRjA1OEY5MDAzQkRDNTYgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uUHJv
dmlkZXIuaCAqLywKKwkJCQk1MTgzMjQ3NjI2MTU5OUNDMDAzRjIzOUUgLyogTmV0d29ya1VSTFNj
aGVtZUhhbmRsZXIuY3BwICovLAorCQkJCTUxODMyNDc1MjYxNTk5Q0MwMDNGMjM5RSAvKiBOZXR3
b3JrVVJMU2NoZW1lSGFuZGxlci5oICovLAorCQkJCTUxODMyNDdCMjYxNjg2NzUwMDNGMjM5RSAv
KiBOZXR3b3JrVVJMU2NoZW1lVGFzay5jcHAgKi8sCisJCQkJNTE4MzI0N0EyNjE2ODY3NTAwM0Yy
MzlFIC8qIE5ldHdvcmtVUkxTY2hlbWVUYXNrLmggKi8sCiAJCQkJNDYyMTA3RDcxRjM4REJEMzAw
REQ3ODEwIC8qIFBpbmdMb2FkLmNwcCAqLywKIAkJCQk1Q0U4NUIxRjFDODhFNjQzMDA3MEJGQ0Ug
LyogUGluZ0xvYWQuaCAqLywKIAkJCQk4M0EwRUQzMzFGNzQ3Q0M3MDAzMjk5RUIgLyogUHJlY29u
bmVjdFRhc2suY3BwICovLApAQCAtOTI0Nyw2ICs5MjU5LDggQEAKIAkJCQk3RUM0RjBGOTE4RTRB
OTQ1MDA4MDU2QUYgLyogTmV0d29ya1Byb2Nlc3NDb2NvYS5tbSAqLywKIAkJCQk1MzIxNTk1MDFE
QkFFNkQ3MDA1NEFBM0MgLyogTmV0d29ya1Nlc3Npb25Db2NvYS5oICovLAogCQkJCTVDMjBDQjlC
MUJCMERDRDIwMDg5NUJCMSAvKiBOZXR3b3JrU2Vzc2lvbkNvY29hLm1tICovLAorCQkJCTUxODMy
NDc4MjYxNUIwMEQwMDNGMjM5RSAvKiBOZXR3b3JrU2NoZW1lVVJMUHJvdG9jb2wuaCAqLywKKwkJ
CQk1MTgzMjQ3OTI2MTVCMDBEMDAzRjIzOUUgLyogTmV0d29ya1NjaGVtZVVSTFByb3RvY29sLm1t
ICovLAogCQkJCTQxMjg3RDRDMjI1QzA1QzUwMDlBM0UyNiAvKiBXZWJTb2NrZXRUYXNrQ29jb2Eu
aCAqLywKIAkJCQk0MTI4N0Q0QjIyNUMwNUM0MDA5QTNFMjYgLyogV2ViU29ja2V0VGFza0NvY29h
Lm1tICovLAogCQkJKTsKQEAgLTExNjUzLDYgKzExNjY3LDcgQEAKIAkJCQkzMTdGRTdDNTFDNDg3
QTZDMDBBMENBODkgLyogQVBJRXhwZXJpbWVudGFsRmVhdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDBCOTY2MTYxOEUyNENCQTAwQ0UxRjg4IC8qIEFQSUZpbmRDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJERDY3QTJFMUJEODE5NzMwMDUzQjI1MSAvKiBBUElGaW5kTWF0Y2hlc0NsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4MzI0N0QyNjE2OEZGNzAwM0YyMzlFIC8qIE5ldHdv
cmtVUkxTY2hlbWVUYXNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0UyNUQ2RTE4RkRFNUQ2MDA1
RDNBMDAgLyogQVBJRm9ybUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDMTMzNzIxODU2
NkM3QzAwRjNFQzA1IC8qIEFQSUZyYW1lSGFuZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREY5
RUVFNjFBNzgxRkI0MDBCNkNGQkUgLyogQVBJRnJhbWVJbmZvLmggaW4gSGVhZGVycyAqLywKQEAg
LTEyODA0LDYgKzEyODE5LDcgQEAKIAkJCQkwRkNCNEU2ODE4QkJFM0Q5MDAwRkNGQzkgLyogV0tU
ZXh0SW5wdXRXaW5kb3dDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTIxMjE1RjI0
MEVFNTcxMDA2RUQ0NDMgLyogV0tUZXh0UGxhY2Vob2xkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUNFNDU5NDVDMjQwRjg4NTUwMDc4MDE5RiAvKiBXS1RleHRTZWxlY3Rpb25SZWN0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQk1MTgzMjQ3QzI2MTY4QzYyMDAzRjIzOUUgLyogTmV0d29ya1VSTFNjaGVt
ZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTJFQjZGQzAxMjAzMDIxOTYwMDE3RTYxOSAv
KiBXS1RpbWVQaWNrZXJWaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzFBNjc2
QTYyMkM2MjMyNTAwN0Q2Mjk1IC8qIFdLVG91Y2hBY3Rpb25HZXN0dXJlUmVjb2duaXplci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc2MDgxMjRGRjAyNzAwNjhGMjBBIC8qIFdLVHlwZS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IDc5MmQzNGMxMTA4Ny4uZjIwY2ZjNzc2ZGM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNjc0MCwxMiArNjc0MCwyMSBAQCB2
b2lkIFdlYlBhZ2U6OnJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcih1aW50NjRfdCBoYW5kbGVySWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJgogICAgIG1faWRlbnRpZmllclRvVVJMU2NoZW1lSGFuZGxl
clByb3h5TWFwLmFkZChoYW5kbGVySWRlbnRpZmllciwgc2NoZW1lUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS5nZXQoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6dXJsU2NoZW1lVGFza1dpbGxQZXJmb3Jt
UmVkaXJlY3Rpb24odWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVu
dGlmaWVyLCBSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8qIGhhbmRsZXIgPSBtX2lkZW50aWZp
ZXJUb1VSTFNjaGVtZUhhbmRsZXJQcm94eU1hcC5nZXQoaGFuZGxlcklkZW50aWZpZXIpOworICAg
IEFTU0VSVChoYW5kbGVyKTsKKworICAgIGF1dG8gYWN0dWFsTmV3UmVxdWVzdCA9IHJlcXVlc3Q7
CisgICAgaGFuZGxlci0+dGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbih0YXNrSWRlbnRpZmllciwg
V1RGTW92ZShyZXNwb25zZSksIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKK30KKwogdm9pZCBXZWJQYWdlOjp1cmxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGly
ZWN0aW9uKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmll
ciwgUmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnNlLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
KQogewogICAgIGF1dG8qIGhhbmRsZXIgPSBtX2lkZW50aWZpZXJUb1VSTFNjaGVtZUhhbmRsZXJQ
cm94eU1hcC5nZXQoaGFuZGxlcklkZW50aWZpZXIpOwogICAgIEFTU0VSVChoYW5kbGVyKTsKLSAg
ICAKLSAgICBoYW5kbGVyLT50YXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKHRhc2tJZGVudGlmaWVy
LCBXVEZNb3ZlKHJlc3BvbnNlKSwgV1RGTW92ZShyZXF1ZXN0KSk7CisKKyAgICBoYW5kbGVyLT50
YXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKHRhc2tJZGVudGlmaWVyLCBXVEZNb3ZlKHJlc3BvbnNl
KSwgV1RGTW92ZShyZXF1ZXN0KSwgW10gKFJlc291cmNlUmVxdWVzdCYmKSB7fSk7CiB9CiAgICAg
CiB2b2lkIFdlYlBhZ2U6OnVybFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3Qg
aGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCBjNTRhNjE4ZGI0NmEuLjcwZWM5MTc2ZWFmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTgwNyw2ICsxODA3LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKHVpbnQ2NF90IGlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKIAorICAgIHZvaWQgdXJsU2NoZW1lVGFza1dp
bGxQZXJmb3JtUmVkaXJlY3Rpb24odWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90
IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGlyZWN0
aW9uKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7
CiAgICAgdm9pZCB1cmxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKHVpbnQ2NF90IGhhbmRs
ZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgdXJsU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKHVp
bnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBjOGU2NDZhZWRlYmMuLjAwMDNjNTVk
NzgzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCkBAIC01NTksNyArNTU5LDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5
cGUKIAogICAgIFJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcih1aW50NjRfdCBpZGVudGlmaWVyLCBT
dHJpbmcgc2NoZW1lKQogCi0gICAgVVJMU2NoZW1lVGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbih1
aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0KQorICAgIFVSTFNjaGVtZVRhc2tXaWxsUGVyZm9ybVJlZGlyZWN0aW9uKHVpbnQ2NF90
IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHByb3Bvc2Vk
UmVxdWVzdCkgLT4gKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBhY3R1YWxSZXF1ZXN0KSBBc3lu
YworICAgIFVSTFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24odWludDY0X3QgaGFuZGxl
cklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcHJvcG9zZWRSZXF1ZXN0
KQogICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UodWludDY0X3QgaGFuZGxlcklk
ZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlKQogICAgIFVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YSh1aW50NjRfdCBo
YW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVm
ZmVyRGF0YVJlZmVyZW5jZSBkYXRhKQogICAgIFVSTFNjaGVtZVRhc2tEaWRDb21wbGV0ZSh1aW50
NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgZXJyb3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcAppbmRleCBiZmJm
ZTcxNDFjOTguLmExYTBmMGNmMDJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCkBAIC03
OCwxMyArNzgsMTMgQEAgdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnN0b3BBbGxUYXNr
cygpCiAgICAgICAgIG1fdGFza3MuYmVnaW4oKS0+dmFsdWUtPnN0b3BMb2FkaW5nKCk7CiB9CiAK
LXZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9u
KHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkKK3Zv
aWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojp0YXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKHVp
bnQ2NF90IHRhc2tJZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJl
Y3RSZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgYXV0byogdGFzayA9IG1fdGFza3MuZ2V0KHRhc2tJZGVudGlmaWVy
KTsKICAgICBpZiAoIXRhc2spCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICB0YXNrLT5kaWRQ
ZXJmb3JtUmVkaXJlY3Rpb24oV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RGTW92ZShuZXdS
ZXF1ZXN0KSk7CisgICAgdGFzay0+ZGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdURk1vdmUocmVkaXJl
Y3RSZXNwb25zZSksIFdURk1vdmUobmV3UmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAogdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnRhc2tEaWRSZWNlaXZl
UmVzcG9uc2UodWludDY0X3QgdGFza0lkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaAppbmRleCAyMzViMzQwMGNjNzUuLjYyOWE2
ZjNjZTRjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
VVJMU2NoZW1lSGFuZGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7
IH0KICAgICBXZWJQYWdlJiBwYWdlKCkgeyByZXR1cm4gbV93ZWJQYWdlOyB9CiAKLSAgICB2b2lk
IHRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24odWludDY0X3QgdGFza0lkZW50aWZpZXIsIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOworICAg
IHZvaWQgdGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbih1aW50NjRfdCB0YXNrSWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+JiYpOwog
ICAgIHZvaWQgdGFza0RpZFJlY2VpdmVSZXNwb25zZSh1aW50NjRfdCB0YXNrSWRlbnRpZmllciwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgdGFza0RpZFJlY2Vp
dmVEYXRhKHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBzaXplX3QsIGNvbnN0IHVpbnQ4X3QqIGRh
dGEpOwogICAgIHZvaWQgdGFza0RpZENvbXBsZXRlKHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcAppbmRleCBi
YjA4ZDZiNTlkMTYuLjkwYTA2N2Q0YjRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lVGFza1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuY3BwCkBAIC02OCwz
MSArNjgsMzEgQEAgdm9pZCBXZWJVUkxTY2hlbWVUYXNrUHJveHk6OnN0b3BMb2FkaW5nKCkKICAg
ICBtX3VybFNjaGVtZUhhbmRsZXIudGFza0RpZFN0b3BMb2FkaW5nKCp0aGlzKTsKIH0KICAgICAK
LXZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QpCit2b2lkIFdlYlVSTFNjaGVtZVRhc2tQcm94eTo6ZGlkUGVyZm9y
bVJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICBpZiAoIWhhc0xvYWRlcigpKQorICAgIGlmICghaGFzTG9hZGVyKCkpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBvcmlnaW5hbFJlcXVlc3QgPSByZXF1ZXN0XSAoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkg
ewotICAgICAgICBtX3dhaXRpbmdGb3JDb21wbGV0aW9uSGFuZGxlciA9IGZhbHNlOwotICAgICAg
ICAvLyBXZSBkbyBub3QgaW5mb3JtIHRoZSBVSVByb2Nlc3Mgb2YgV2ViS2l0J3MgbmV3IHJlcXVl
c3Qgd2l0aCB0aGUgZ2l2ZW4gc3VnZ2VzdGVkIHJlcXVlc3QuCi0gICAgICAgIC8vIFdlIGRvIHdh
bnQgdG8ga25vdyBpZiBXZWJLaXQgd291bGQgaGF2ZSBnZW5lcmF0ZWQgYSByZXF1ZXN0IHRoYXQg
ZGlmZmVycyBmcm9tIHRoZSBzdWdnZXN0ZWQgcmVxdWVzdCwgdGhvdWdoLgotICAgICAgICBpZiAo
cmVxdWVzdC51cmwoKSAhPSBvcmlnaW5hbFJlcXVlc3QudXJsKCkpCi0gICAgICAgICAgICBSRUxF
QVNFX0xPRyhMb2FkaW5nLCAiUmVkaXJlY3RlZCBzY2hlbWUgdGFzayB3b3VsZCBoYXZlIGJlZW4g
c2VudCB0byBhIGRpZmZlcmVudCBVUkwuIik7CisgICAgfQogCi0gICAgICAgIHByb2Nlc3NOZXh0
UGVuZGluZ1Rhc2soKTsKLSAgICB9OwotICAgIAogICAgIGlmIChtX3dhaXRpbmdGb3JDb21wbGV0
aW9uSGFuZGxlcikgewogICAgICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiUmVjZWl2ZWQgcmVk
aXJlY3QgZHVyaW5nIHByZXZpb3VzIHJlZGlyZWN0IHByb2Nlc3NpbmcsIHF1ZXVpbmcgaXQuIik7
Ci0gICAgICAgIHF1ZXVlVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCByZWRpcmVjdFJlc3BvbnNlID0gV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgcmVxdWVzdCA9
IFdURk1vdmUocmVxdWVzdCldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBkaWRQZXJmb3JtUmVk
aXJlY3Rpb24oV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RGTW92ZShyZXF1ZXN0KSk7Cisg
ICAgICAgIHF1ZXVlVGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBy
ZWRpcmVjdFJlc3BvbnNlID0gV1RGTW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgcmVxdWVzdCA9IFdU
Rk1vdmUocmVxdWVzdCksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV1RG
TW92ZShyZWRpcmVjdFJlc3BvbnNlKSwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBt
X3dhaXRpbmdGb3JDb21wbGV0aW9uSGFuZGxlciA9IHRydWU7CiAKLSAgICBtX2NvcmVMb2FkZXIt
PndpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgYXV0byBpbm5lckNvbXBsZXRpb25IYW5kbGVy
ID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgb3JpZ2luYWxSZXF1ZXN0
ID0gcmVxdWVzdCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgeworICAgICAgICBtX3dhaXRp
bmdGb3JDb21wbGV0aW9uSGFuZGxlciA9IGZhbHNlOworCisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURk1vdmUocmVxdWVzdCkpOworCisgICAgICAgIHByb2Nlc3NOZXh0UGVuZGluZ1Rhc2so
KTsKKyAgICB9OworCisgICAgbV9jb3JlTG9hZGVyLT53aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShy
ZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgV1RGTW92ZShpbm5lckNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKIHZvaWQgV2ViVVJMU2NoZW1lVGFza1Byb3h5OjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZVRhc2tQcm94eS5oCmluZGV4IGEx
MjQ1ZDkxODc0ZS4uYjVlMzM0ZGZjMjMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVUYXNrUHJveHkuaApAQCAtNTIsNyArNTIs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydExvYWRpbmcoKTsKICAgICB2b2lkIHN0b3BMb2Fk
aW5nKCk7CiAKLSAgICB2b2lkIGRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKKyAgICB2b2lkIGRpZFBl
cmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmKT4mJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoc2l6ZV90LCBj
b25zdCB1aW50OF90KiBkYXRhKTsKICAgICB2b2lkIGRpZENvbXBsZXRlKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCBiZTYwMWMxMDZkMTguLjVjNGU5NzM3NmFjYiAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIx
LTA0LTAyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
V0tVUkxTY2hlbWVUYXNrIHJlZGlyZWN0IEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDExOQorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXgg
Q2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tOgorICAgICAgICAoLVtUYXNrU2NoZW1lSGFuZGxlciB3
ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAo
LVtIVFRQUmVkaXJlY3RUZXN0IHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAg
ICAoLVtIVFRQUmVkaXJlY3RUZXN0IHdlYlZpZXc6c3RvcFVSTFNjaGVtZVRhc2s6XSk6CisKIDIw
MjEtMDMtMzEgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OIChyMjc1MTUwKTogc2V0LXdlYmtpdC1jb25maWd1cmF0aW9uIGlzIHRvbyBhZ2dy
ZXNzaXZlIGF0IGRlbGV0aW5nIGNvbmZpZyBmaWxlcyB3aGVuIHN3aXRjaCBpcyBub3Qgc2V0CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2No
ZW1lSGFuZGxlci0xLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S1VSTFNjaGVtZUhhbmRsZXItMS5tbQppbmRleCBhNzhhYjM2OGNmZjAuLjNmZWY4ZmYzOWUzOCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNj
aGVtZUhhbmRsZXItMS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCkBAIC0yMjQsOCArMjI0LDYgQEAgc3RhdGljIE5T
U3RyaW5nICpoYW5kbGVkU2NoZW1lc1tdID0gewogICAgIEAiZGF0YSIsCiAgICAgQCJmaWxlIiwK
ICAgICBAImZ0cCIsCi0gICAgQCJodHRwIiwKLSAgICBAImh0dHBzIiwKICAgICBAImphdmFzY3Jp
cHQiLAogICAgIEAid2Via2l0LWZha2UtdXJsIiwKICAgICBAIndzIiwKQEAgLTM0Niw2ICszNDQs
NyBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIFJlZGlyZWN0aW9uKQogCiBlbnVtIGNsYXNzIENv
bW1hbmQgewogICAgIFJlZGlyZWN0LAorICAgIEFQSVJlZGlyZWN0LAogICAgIFJlc3BvbnNlLAog
ICAgIERhdGEsCiAgICAgRmluaXNoLApAQCAtMzgyLDYgKzM4MSw5IEBAIC0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVt
ZVRhc2s+KXRhCiAgICAgICAgICAgICBjYXNlIENvbW1hbmQ6OlJlZGlyZWN0OgogICAgICAgICAg
ICAgICAgIFsoaWQ8V0tVUkxTY2hlbWVUYXNrUHJpdmF0ZT4pdGFzayBfZGlkUGVyZm9ybVJlZGly
ZWN0aW9uOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0XSkuZ2V0KCkgbmV3UmVx
dWVzdDphZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBpbml0XSkuZ2V0KCldOwogICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDb21tYW5kOjpBUElSZWRpcmVjdDoK
KyAgICAgICAgICAgICAgICBbKGlkPFdLVVJMU2NoZW1lVGFza1ByaXZhdGU+KXRhc2sgd2lsbFBl
cmZvcm1SZWRpcmVjdGlvbjphZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdF0pLmdl
dCgpIG5ld1JlcXVlc3Q6YWRvcHROUyhbW05TVVJMUmVxdWVzdCBhbGxvY10gaW5pdF0pLmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOl4oTlNVUkxSZXF1ZXN0KikgeyB9XTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ29tbWFuZDo6UmVzcG9uc2U6CiAgICAgICAgICAg
ICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOmFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFs
bG9jXSBpbml0XSkuZ2V0KCldOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDM3LDYgKzQz
OSwxMSBAQCBURVNUKFVSTFNjaGVtZUhhbmRsZXIsIEV4Y2VwdGlvbnMpCiAgICAgY2hlY2tDYWxs
U2VxdWVuY2Uoe0NvbW1hbmQ6OlJlc3BvbnNlLCBDb21tYW5kOjpGaW5pc2gsIENvbW1hbmQ6OlJl
c3BvbnNlfSwgU2hvdWxkUmFpc2VFeGNlcHRpb246Olllcyk7CiAgICAgY2hlY2tDYWxsU2VxdWVu
Y2Uoe0NvbW1hbmQ6OlJlc3BvbnNlLCBDb21tYW5kOjpGaW5pc2gsIENvbW1hbmQ6OkZpbmlzaH0s
IFNob3VsZFJhaXNlRXhjZXB0aW9uOjpZZXMpOwogICAgIGNoZWNrQ2FsbFNlcXVlbmNlKHtDb21t
YW5kOjpSZXNwb25zZSwgQ29tbWFuZDo6RmluaXNoLCBDb21tYW5kOjpFcnJvcn0sIFNob3VsZFJh
aXNlRXhjZXB0aW9uOjpZZXMpOworICAgIGNoZWNrQ2FsbFNlcXVlbmNlKHtDb21tYW5kOjpBUElS
ZWRpcmVjdCwgQ29tbWFuZDo6UmVkaXJlY3R9LCBTaG91bGRSYWlzZUV4Y2VwdGlvbjo6WWVzKTsK
KyAgICBjaGVja0NhbGxTZXF1ZW5jZSh7Q29tbWFuZDo6QVBJUmVkaXJlY3QsIENvbW1hbmQ6OlJl
c3BvbnNlfSwgU2hvdWxkUmFpc2VFeGNlcHRpb246Olllcyk7CisgICAgY2hlY2tDYWxsU2VxdWVu
Y2Uoe0NvbW1hbmQ6OkFQSVJlZGlyZWN0LCBDb21tYW5kOjpEYXRhfSwgU2hvdWxkUmFpc2VFeGNl
cHRpb246Olllcyk7CisgICAgY2hlY2tDYWxsU2VxdWVuY2Uoe0NvbW1hbmQ6OkFQSVJlZGlyZWN0
LCBDb21tYW5kOjpGaW5pc2h9LCBTaG91bGRSYWlzZUV4Y2VwdGlvbjo6WWVzKTsKKyAgICBjaGVj
a0NhbGxTZXF1ZW5jZSh7Q29tbWFuZDo6QVBJUmVkaXJlY3QsIENvbW1hbmQ6OkVycm9yfSwgU2hv
dWxkUmFpc2VFeGNlcHRpb246Ok5vKTsKIH0KIAogc3RydWN0IFNjaGVtZVJlc291cmNlSW5mbyB7
CkBAIC0xNDMzLDMgKzE0NDAsNjIgQEAgVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBpc1NlY3VyZUNv
bnRleHQpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3Nh
Z2UpOwogICAgIEVYUEVDVF9XS19TVFJFUShAInNlY3VyZSIsIFtsYXN0U2NyaXB0TWVzc2FnZSBi
b2R5XSk7CiB9CisKK0BpbnRlcmZhY2UgSFRUUFJlZGlyZWN0VGVzdCA6IE5TT2JqZWN0IDxXS1VS
TFNjaGVtZUhhbmRsZXI+IHsKK30KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEhUVFBSZWRpcmVj
dFRlc3QKKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2No
ZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzaworeworICAgIGF1dG8gcmVkaXJlY3RS
ZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNr
LnJlcXVlc3QuVVJMIE1JTUVUeXBlOm5pbCBleHBlY3RlZENvbnRlbnRMZW5ndGg6MCB0ZXh0RW5j
b2RpbmdOYW1lOm5pbF0pOworICAgIGF1dG8gcmVkaXJlY3RSZXF1ZXN0ID0gYWRvcHROUyhbW05T
VVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRw
czovL2Jhci5jb20vYW5vdGhlcnRlc3QuaHRtbCJdXSk7CisKKyAgICBbdGFzayB3aWxsUGVyZm9y
bVJlZGlyZWN0aW9uOnJlZGlyZWN0UmVzcG9uc2UuZ2V0KCkgbmV3UmVxdWVzdDpyZWRpcmVjdFJl
cXVlc3QuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihOU1VSTFJlcXVlc3QgKnByb3Bvc2VkUmVx
dWVzdCkgeworICAgICAgICBOU1N0cmluZyAqaHRtbCA9IEAiPHNjcmlwdD53aW5kb3cud2Via2l0
Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnRG9jdW1lbnQgVVJMOiAn
ICsgZG9jdW1lbnQuVVJMKTs8L3NjcmlwdD4iOworICAgICAgICBhdXRvIGZpbmFsUmVzcG9uc2Ug
PSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6cHJvcG9zZWRSZXF1
ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOmh0bWwu
bGVuZ3RoIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CisKKyAgICAgICAgW3Rhc2sgZGlkUmVjZWl2
ZVJlc3BvbnNlOmZpbmFsUmVzcG9uc2UuZ2V0KCldOworICAgICAgICBbdGFzayBkaWRSZWNlaXZl
RGF0YTpbaHRtbCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOworICAg
ICAgICBbdGFzayBkaWRGaW5pc2hdOworICAgIH1dOworfQorCistICh2b2lkKXdlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgc3RvcFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+
KXRhc2sKK3sKK30KKworQGVuZAorCitURVNUKFVSTFNjaGVtZUhhbmRsZXIsIEhUVFBXaXRoUmVk
aXJlY3QpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHNjaGVtZUhhbmRsZXIgPSBhZG9w
dE5TKFtUZXN0VVJMU2NoZW1lSGFuZGxlciBuZXddKTsKKyAgICBbc2NoZW1lSGFuZGxlciBzZXRT
dGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOl4oV0tXZWJWaWV3ICosIGlkPFdLVVJMU2NoZW1lVGFz
az4gdGFzaykgeworICAgICAgICBhdXRvIHJlZGlyZWN0UmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpu
aWwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjAgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKyAgICAg
ICAgYXV0byByZWRpcmVjdFJlcXVlc3QgPSBhZG9wdE5TKFtbTlNVUkxSZXF1ZXN0IGFsbG9jXSBp
bml0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vYmFyLmNvbS9hbm90aGVy
dGVzdC5odG1sIl1dKTsKKworICAgICAgICBbdGFzayB3aWxsUGVyZm9ybVJlZGlyZWN0aW9uOnJl
ZGlyZWN0UmVzcG9uc2UuZ2V0KCkgbmV3UmVxdWVzdDpyZWRpcmVjdFJlcXVlc3QuZ2V0KCkgY29t
cGxldGlvbkhhbmRsZXI6XihOU1VSTFJlcXVlc3QgKnByb3Bvc2VkUmVxdWVzdCkgeworICAgICAg
ICAgICAgTlNTdHJpbmcgKmh0bWwgPSBAIjxzY3JpcHQ+d2luZG93LndlYmtpdC5tZXNzYWdlSGFu
ZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ0RvY3VtZW50IFVSTDogJyArIGRvY3VtZW50
LlVSTCk7PC9zY3JpcHQ+IjsKKyAgICAgICAgICAgIGF1dG8gZmluYWxSZXNwb25zZSA9IGFkb3B0
TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpwcm9wb3NlZFJlcXVlc3QuVVJM
IE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6aHRtbC5sZW5ndGgg
dGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZVJl
c3BvbnNlOmZpbmFsUmVzcG9uc2UuZ2V0KCldOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2
ZURhdGE6W2h0bWwgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddXTsKKyAg
ICAgICAgICAgIFt0YXNrIGRpZEZpbmlzaF07CisgICAgICAgIH1dOworICAgIH1dOworCisgICAg
W2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzY2hlbWVIYW5kbGVyLmdldCgpIGZv
clVSTFNjaGVtZTpAImh0dHAiXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5k
bGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiaHR0cHMiXTsKKworICAgIGF1
dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbVVJMU2NoZW1lSGFuZGxlck1lc3NhZ2VIYW5k
bGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJv
bGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpA
InRlc3RIYW5kbGVyIl07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgcmVjZWl2ZWRTY3JpcHRNZXNzYWdl
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9mb28uY29tL3Rlc3QuaHRtbCJd
XV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFNjcmlwdE1lc3NhZ2Up
OworICAgIEVYUEVDVF9XS19TVFJFUShAIkRvY3VtZW50IFVSTDogaHR0cHM6Ly9iYXIuY29tL2Fu
b3RoZXJ0ZXN0Lmh0bWwiLCBbbGFzdFNjcmlwdE1lc3NhZ2UgYm9keV0pOworfQo=
</data>
<flag name="commit-queue"
          id="444913"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>