<?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>180681</bug_id>
          
          <creation_ts>2017-12-11 16:37:04 -0800</creation_ts>
          <short_desc>Storage Access API: Make document.hasStorageAccess() retrieve current status from the network process</short_desc>
          <delta_ts>2017-12-17 19:44:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>aestes</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1380462</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-12-11 16:37:04 -0800</bug_when>
    <thetext>This is part 2 of making Storage Access API frame-specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380463</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-11 16:37:37 -0800</bug_when>
    <thetext>&lt;rdar://problem/35982161&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382320</commentid>
    <comment_count>2</comment_count>
      <attachid>329522</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-12-15 14:56:22 -0800</bug_when>
    <thetext>Created attachment 329522
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382321</commentid>
    <comment_count>3</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-12-15 14:56:46 -0800</bug_when>
    <thetext>Style errors are all of the &quot;Extra space before ( in function call&quot; variety.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382322</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-15 14:59:07 -0800</bug_when>
    <thetext>Attachment 329522 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1436:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:257:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h:352:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/ChromeClient.h:470:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/WebProcess/WebPage/WebPage.cpp:5780:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:150:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:86:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/WebProcess/WebPage/WebPage.h:1027:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:1259:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 9 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382324</commentid>
    <comment_count>5</comment_count>
      <attachid>329522</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-15 15:08:50 -0800</bug_when>
    <thetext>Comment on attachment 329522
Patch

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

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:268
&gt; +});

indentation

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:81
&gt; +    void hasStorageAccessForPrevalentDomains(PAL::SessionID, const String&amp; resourceDomain, const String&amp; firstPartyDomain, uint64_t frameID, uint64_t pageID, WTF::CompletionHandler&lt;void(bool)&gt;&amp;&amp; callback);

WTF:: prefix should be unnecessary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382327</commentid>
    <comment_count>6</comment_count>
      <attachid>329522</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-15 15:12:10 -0800</bug_when>
    <thetext>Comment on attachment 329522
Patch

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

&gt; Source/WebCore/dom/Document.cpp:7430
&gt; -    RefPtr&lt;DeferredPromise&gt; promise(WTFMove(passedPromise));
&gt; +    RefPtr&lt;DeferredPromise&gt;&amp;&amp; promise(WTFMove(passedPromise));

We shouldn&apos;t need this at all.  We should be able to just use a Ref and call the passedPromise promise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382339</commentid>
    <comment_count>7</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-12-15 15:31:31 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #5)
&gt; Comment on attachment 329522 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=329522&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:268
&gt; &gt; +});
&gt; 
&gt; indentation

Fixed.

&gt; &gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:81
&gt; &gt; +    void hasStorageAccessForPrevalentDomains(PAL::SessionID, const String&amp; resourceDomain, const String&amp; firstPartyDomain, uint64_t frameID, uint64_t pageID, WTF::CompletionHandler&lt;void(bool)&gt;&amp;&amp; callback);
&gt; 
&gt; WTF:: prefix should be unnecessary

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382340</commentid>
    <comment_count>8</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-12-15 15:32:08 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #6)
&gt; Comment on attachment 329522 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=329522&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:7430
&gt; &gt; -    RefPtr&lt;DeferredPromise&gt; promise(WTFMove(passedPromise));
&gt; &gt; +    RefPtr&lt;DeferredPromise&gt;&amp;&amp; promise(WTFMove(passedPromise));
&gt; 
&gt; We shouldn&apos;t need this at all.  We should be able to just use a Ref and call
&gt; the passedPromise promise.

This was actually me trying to figure out weird promise behavior. Turned out to be something else. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382359</commentid>
    <comment_count>9</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-12-15 16:11:37 -0800</bug_when>
    <thetext>I know what the WK2 test timeouts are about. New patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382362</commentid>
    <comment_count>10</comment_count>
      <attachid>329536</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-12-15 16:17:08 -0800</bug_when>
    <thetext>Created attachment 329536
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382363</commentid>
    <comment_count>11</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-15 16:19:50 -0800</bug_when>
    <thetext>Attachment 329536 did not pass style-queue:


ERROR: Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:1436:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.cpp:257:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.h:352:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/page/ChromeClient.h:470:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/WebProcess/WebPage/WebPage.cpp:5780:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.h:150:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:86:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/WebProcess/WebPage/WebPage.h:1027:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit/WebProcess/WebCoreSupport/WebChromeClient.cpp:1259:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 9 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382430</commentid>
    <comment_count>12</comment_count>
      <attachid>329536</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-12-15 19:16:02 -0800</bug_when>
    <thetext>Comment on attachment 329536
Patch

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

&gt; Source/WebCore/dom/Document.cpp:7430
&gt; +    RefPtr&lt;DeferredPromise&gt;&amp;&amp; promise(WTFMove(passedPromise));

Delete this line, change the parameter name from passedPromise to promise, and change the lambda capture from promise to promise = WTFMove(promise)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382687</commentid>
    <comment_count>13</comment_count>
      <attachid>329630</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-12-17 19:11:45 -0800</bug_when>
    <thetext>Created attachment 329630
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382688</commentid>
    <comment_count>14</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2017-12-17 19:12:08 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #12)
&gt; Comment on attachment 329536 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=329536&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:7430
&gt; &gt; +    RefPtr&lt;DeferredPromise&gt;&amp;&amp; promise(WTFMove(passedPromise));
&gt; 
&gt; Delete this line, change the parameter name from passedPromise to promise,
&gt; and change the lambda capture from promise to promise = WTFMove(promise)

Fixed. Thanks for the review, Alex!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382691</commentid>
    <comment_count>15</comment_count>
      <attachid>329630</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-17 19:44:58 -0800</bug_when>
    <thetext>Comment on attachment 329630
Patch for landing

Clearing flags on attachment: 329630

Committed r226016: &lt;https://trac.webkit.org/changeset/226016&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1382692</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-12-17 19:44:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329522</attachid>
            <date>2017-12-15 14:56:22 -0800</date>
            <delta_ts>2017-12-15 16:17:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180681-20171215145621.patch</filename>
            <type>text/plain</type>
            <size>43223</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTkzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE3LTEyLTE1ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQ
STogU3RvcmUgZnJhbWUtc3BlY2lmaWMgYWNjZXNzIGluLW1lbW9yeSBmb3IgZG9jdW1lbnQuaGFz
U3RvcmFnZUFjY2VzcygpIHJldHJpZXZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNjgxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTk4MjE2
MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
czogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9tLXByZXZh
bGVudC1kb21haW4td2l0aC1ub24tcmVjZW50LXVzZXItaW50ZXJhY3Rpb24uaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9t
LXByZXZhbGVudC1kb21haW4td2l0aC1yZWNlbnQtdXNlci1pbnRlcmFjdGlvbi5odG1sCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgbWFrZXMgYW4gYXN5bmNocm9ub3VzIHJlcXVlc3QgdG8gdGhlIG5l
dHdvcmsgcHJvY2VzcworICAgICAgICB0byBzZWUgaWYgc3RvcmFnZSBhY2Nlc3MgaGFzIGJlZW4g
Z3JhbnRlZCBmb3IgdGhpcyBmcmFtZSwgb24gdGhpcworICAgICAgICBwYWdlLCBmb3IgdGhpcyBk
b21haW4uCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6Omhhc1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50
Lmg6CisKIDIwMTctMTItMTQgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgU3RvcmFnZSBBY2Nlc3MgQVBJOiBJbXBsZW1lbnQgZnJhbWUtc3BlY2lmaWMgYWNj
ZXNzIGluIHRoZSBkb2N1bWVudC5jb29raWUgbGF5ZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkocmV2aXNpb24gMjI1OTM0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzQyNywxMSArNzQyNywxMyBAQCB2b2lkIERvY3VtZW50Ojpo
YXNTdG9yYWdlQWNjZXNzKFJlZjxEZWZlCiB7CiAgICAgQVNTRVJUKHNldHRpbmdzKCkuc3RvcmFn
ZUFjY2Vzc0FQSUVuYWJsZWQoKSk7CiAKLSAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBwcm9t
aXNlKFdURk1vdmUocGFzc2VkUHJvbWlzZSkpOworICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZShXVEZNb3ZlKHBhc3NlZFByb21pc2UpKTsKIAotICAgIGlmIChtX2hhc0ZyYW1l
U3BlY2lmaWNTdG9yYWdlQWNjZXNzKQorICAgIGlmIChtX2hhc0ZyYW1lU3BlY2lmaWNTdG9yYWdl
QWNjZXNzKSB7CiAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4odHJ1ZSk7Ci0g
ICAgCisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoIW1fZnJhbWUgfHwgc2VjdXJp
dHlPcmlnaW4oKS5pc1VuaXF1ZSgpKSB7CiAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9v
bGVhbj4oZmFsc2UpOwogICAgICAgICByZXR1cm47CkBAIC03NDQ5LDEwICs3NDUxLDE4IEBAIHZv
aWQgRG9jdW1lbnQ6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVmPERlZmUKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIEFTU0VSVChtX2ZyYW1lKTsKKyAgICBhdXRvIGZyYW1lSUQgPSBtX2ZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSBtX2ZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKKyAgICBpZiAoIWZyYW1lSUQgfHwgIXBhZ2VJ
RCkgeworICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIGlmIChQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpKSB7CiAgICAgICAgIGF1dG8gaWZy
YW1lSG9zdCA9IHNlY3VyaXR5T3JpZ2luLmhvc3QoKTsKICAgICAgICAgYXV0byB0b3BIb3N0ID0g
dG9wU2VjdXJpdHlPcmlnaW4uaG9zdCgpOwotICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQo
KS5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoaWZyYW1lSG9zdCksIFdURk1vdmUodG9wSG9zdCks
IFtkb2N1bWVudFJlZmVyZW5jZSA9IG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyks
IHByb21pc2VdIChib29sIGhhc0FjY2VzcykgeworICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGll
bnQoKS5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoaWZyYW1lSG9zdCksIFdURk1vdmUodG9wSG9z
dCksIGZyYW1lSUQudmFsdWUoKSwgcGFnZUlELnZhbHVlKCksIFtkb2N1bWVudFJlZmVyZW5jZSA9
IG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXSAoYm9vbCBoYXNBY2Nlc3MpIHsKICAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IGRvY3VtZW50UmVmZXJlbmNlLmdldCgpOwogICAgICAgICAgICAgaWYgKCFkb2N1bWVudCkK
ICAgICAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgJKHJldmlzaW9uIDIyNTkzNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2Nyw3ICs0NjcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHJlcG9ydFByb2Nlc3NDUFVUaW1lKFNlY29uZHMsIEFjdGl2aXR5U3RhdGVGb3JDUFVT
YW1wbGluZykgeyB9CiAgICAgdmlydHVhbCBSZWZQdHI8SWNvbj4gY3JlYXRlSWNvbkZvckZpbGVz
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBmaWxlbmFtZXMgKi8pID0gMDsKIAotICAgIHZpcnR1
YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIC8qc3ViRnJhbWVIb3N0Ki8sIFN0cmlu
ZyYmIC8qdG9wRnJhbWVIb3N0Ki8sIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+
JiYgY2FsbGJhY2spIHsgY2FsbGJhY2soZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIGhhc1N0
b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgLypzdWJGcmFtZUhvc3QqLywgU3RyaW5nJiYgLyp0b3BGcmFt
ZUhvc3QqLywgdWludDY0X3QgLypmcmFtZUlEKi8sIHVpbnQ2NF90IC8qcGFnZUlEKi8sIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spIHsgY2FsbGJhY2soZmFs
c2UpOyB9CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIC8q
c3ViRnJhbWVIb3N0Ki8sIFN0cmluZyYmIC8qdG9wRnJhbWVIb3N0Ki8sIHVpbnQ2NF90IC8qZnJh
bWVJRCovLCB1aW50NjRfdCAvKnBhZ2VJRCovLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQg
KGJvb2wpPiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKGZhbHNlKTsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGRpZEluc2VydE1lbnVFbGVtZW50KEhUTUxNZW51RWxlbWVudCYpIHsgfQpJbmRleDogU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIyNTk4NykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTctMTItMTUgIEpvaG4gV2lsYW5kZXIgIDx3aWxh
bmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcmFnZSBBY2Nlc3MgQVBJOiBTdG9yZSBmcmFt
ZS1zcGVjaWZpYyBhY2Nlc3MgaW4tbWVtb3J5IGZvciBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNz
KCkgcmV0cmlldmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xODA2ODEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1OTgyMTYxPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIG1ha2Vz
IGFuIGFzeW5jaHJvbm91cyByZXF1ZXN0IHRvIHRoZSBuZXR3b3JrIHByb2Nlc3MKKyAgICAgICAg
dG8gc2VlIGlmIHN0b3JhZ2UgYWNjZXNzIGhhcyBiZWVuIGdyYW50ZWQgZm9yIHRoaXMgZnJhbWUs
IG9uIHRoaXMKKyAgICAgICAgcGFnZSwgZm9yIHRoaXMgZG9tYWluLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
UHJvY2Vzczo6aGFzU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnMpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6dXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERv
bWFpbnMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnRE
b21haW5zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJzaXRlRGF0YVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWluc0hh
bmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjplbmFibGVSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzQW5kU2V0VGVzdGluZ0NhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZURhdGFTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNo
cm9tZUNsaWVudDo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omhhc1N0b3JhZ2VBY2Nl
c3MpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisKIDIwMTctMTIt
MTUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBGaXggR1RLIGJ1aWxkLgpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIyNTkzNCkKKysrIFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUs
NiArMzM1LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnVwZGF0ZVByZXZhbGVudERvbWEKICAg
ICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5zZXRQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRp
b25PckJsb2NrQ29va2llcyhkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21h
aW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIHNob3VsZENsZWFyRmlyc3QpOwogfQogCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWlucyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNv
bnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpCit7CisgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKKyAgICAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3NQcm94eTo6U3RvcmFnZUFjY2Vzc1JlcXVlc3RSZXN1bHQobmV0d29ya1N0
b3JhZ2VTZXNzaW9uLT5pc1N0b3JhZ2VBY2Nlc3NHcmFudGVkKHJlc291cmNlRG9tYWluLCBmaXJz
dFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQpLCBjb250ZXh0SWQpLCAwKTsKKyAgICBlbHNl
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB2b2lkIE5ldHdvcmtQcm9jZXNz
Ojp1cGRhdGVTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmly
c3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHNo
b3VsZEdyYW50U3RvcmFnZSwgdWludDY0X3QgY29udGV4dElkKQogewogICAgIGJvb2wgaXNTdG9y
YWdlR3JhbnRlZCA9IGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAkocmV2aXNpb24gMjI1OTM0KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNiAr
MTM4LDcgQEAgcHVibGljOgogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJT05J
TkcpCiAgICAgdm9pZCB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29v
a2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRp
dGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBib29sIHNob3VsZENs
ZWFyRmlyc3QpOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnMo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmlu
ZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgdXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclByZXZh
bGVudERvbWFpbnMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4s
IGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlELCBib29sIHZhbHVlLCB1aW50NjRfdCBjb250ZXh0SWQpOwogICAgIHZvaWQgcmVt
b3ZlUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGRvbWFpbnMpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyNTkzNCkK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTgzLDYgKzgzLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1By
b2Nlc3MgTGVnYWN5UmVjZWl2ZQogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJ
T05JTkcpCiAgICAgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tp
ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBWZWN0b3I8U3RyaW5nPiBkb21haW5zVG9QYXJ0
aXRpb24sIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb0Jsb2NrLCBWZWN0b3I8U3RyaW5nPiBkb21h
aW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCkKKyAg
ICBIYXNTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFN0cmluZyByZXNvdXJjZURvbWFpbiwgU3RyaW5nIGZpcnN0UGFydHlEb21haW4sIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElkKQogICAg
IFVwZGF0ZVN0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgU3RyaW5nIHJlc291cmNlRG9tYWluLCBTdHJpbmcgZmlyc3RQYXJ0eURvbWFpbiwg
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHNob3VsZEdyYW50QWNjZXNz
LCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgUmVtb3ZlUHJldmFsZW50RG9tYWlucyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNXaXRoSW50ZXJhY3Rpb24p
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHJldmlzaW9uIDIyNTkzNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxNjEsOSArNzE2MSw5IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzdG9wVVJMU2NoZW1lVGFzayh1aW4KICAgICBpdGVyYXRvci0+dmFsdWUtPnN0b3BUYXNr
KCp0aGlzLCB0YXNrSWRlbnRpZmllcik7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpoYXNTdG9y
YWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1
aW50NjRfdCB3ZWJQcm9jZXNzQ29udGV4dElkKQordm9pZCBXZWJQYWdlUHJveHk6Omhhc1N0b3Jh
Z2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qgd2ViUHJvY2Vzc0NvbnRl
eHRJZCkKIHsKLSAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPmhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92
ZShzdWJGcmFtZUhvc3QpLCBXVEZNb3ZlKHRvcEZyYW1lSG9zdCksIFt0aGlzLCB3ZWJQcm9jZXNz
Q29udGV4dElkXSAoYm9vbCBoYXNBY2Nlc3MpIHsKKyAgICBtX3dlYnNpdGVEYXRhU3RvcmUtPmhh
c1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZUhvc3QpLCBXVEZNb3ZlKHRvcEZyYW1lSG9z
dCksIGZyYW1lSUQsIHBhZ2VJRCwgW3RoaXMsIHdlYlByb2Nlc3NDb250ZXh0SWRdIChib29sIGhh
c0FjY2VzcykgewogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0
b3JhZ2VBY2Nlc3NSZXNwb25zZShoYXNBY2Nlc3MsIHdlYlByb2Nlc3NDb250ZXh0SWQpLCBtX3Bh
Z2VJRCk7CiAgICAgfSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAkocmV2aXNpb24gMjI1OTM0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMzksNyArMTIzOSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHRvdWNoQmFyTWVudUl0ZW1EYXRhUmVtb3ZlZChjb25zdCBUb3VjaEJhck1lbnVJdGVt
RGF0YSYpOwogI2VuZGlmCiAKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3Vi
RnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IHdlYlByb2Nlc3NDb250
ZXh0SWQpOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3Qs
IFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCB3ZWJQcm9jZXNzQ29udGV4dElkKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHdlYlByb2Nlc3NDb250ZXh0
SWQpOwogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIy
NTkzNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtNTA4LDcgKzUwOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQ
cm94eSB7CiAgICAgU3RhcnRVUkxTY2hlbWVUYXNrKHN0cnVjdCBXZWJLaXQ6OlVSTFNjaGVtZVRh
c2tQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpCiAgICAgU3RvcFVSTFNjaGVtZVRhc2sodWludDY0X3Qg
aGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyKQogCi0gICAgSGFzU3Rv
cmFnZUFjY2VzcyhTdHJpbmcgc3ViRnJhbWVIb3N0LCBTdHJpbmcgdG9wRnJhbWVIb3N0LCB1aW50
NjRfdCBjb250ZXh0SUQpCisgICAgSGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcgc3ViRnJhbWVIb3N0
LCBTdHJpbmcgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IHVpbnQ2NF90IGNvbnRleHRJRCkKICAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcgc3Vi
RnJhbWVIb3N0LCBTdHJpbmcgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGNvbnRleHRJRCkKIAogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VM
RU1FTlQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHJldmlzaW9uIDIyNTkzNCkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0NSwxMCArMTQ1LDExIEBAIHN0YXRpYyBWZWN0b3I8T3BlcmF0
aW5nRGF0ZT4gbWVyZ2VPcGVyYXQKICAgICByZXR1cm4gbWVyZ2VkRGF0ZXM7CiB9CiAKLVdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
KGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgRnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ssIFVwZGF0ZVByZXZhbGVudERv
bWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciYmIHVwZGF0ZVByZXZhbGVudERv
bWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciwgVXBkYXRlU3RvcmFnZUFjY2Vz
c0ZvclByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYgdXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclByZXZh
bGVudERvbWFpbnNIYW5kbGVyLCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92
ZURvbWFpbnNIYW5kbGVyKQorV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHRlc3RpbmdDYWxs
YmFjaywgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5k
bGVyJiYgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5k
bGVyLCBIYXNTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWluc0hhbmRsZXImJiBoYXNTdG9y
YWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWluc0hhbmRsZXIsIFVwZGF0ZVN0b3JhZ2VBY2Nlc3NG
b3JQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHVwZGF0ZVN0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxl
bnREb21haW5zSGFuZGxlciwgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXImJiByZW1vdmVE
b21haW5zSGFuZGxlcikKICAgICA6IG1fc3RhdGlzdGljc1F1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRl
KCJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgUHJvY2VzcyBEYXRhIFF1ZXVlIiwgV29y
a1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpVdGlsaXR5KSkKICAgICAsIG1f
cGVyc2lzdGVudFN0b3JhZ2UoKnRoaXMsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnkp
CiAgICAgLCBtX3VwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVz
SGFuZGxlcihXVEZNb3ZlKHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tD
b29raWVzSGFuZGxlcikpCisgICAgLCBtX2hhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21h
aW5zSGFuZGxlcihXVEZNb3ZlKGhhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFu
ZGxlcikpCiAgICAgLCBtX3VwZGF0ZVN0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFu
ZGxlcihXVEZNb3ZlKHVwZGF0ZVN0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxl
cikpCiAgICAgLCBtX3JlbW92ZURvbWFpbnNIYW5kbGVyKFdURk1vdmUocmVtb3ZlRG9tYWluc0hh
bmRsZXIpKQogICAgICwgbV9kYWlseVRhc2tzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAm
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwZXJmb3JtRGFpbHlUYXNrcykKQEAgLTI0
NSwyNyArMjQ2LDI2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXMK
ICAgICBwcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CiB9CiAKLXZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZy
YW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQgKGJvb2wpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6Omhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BG
cmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoc3ViRnJh
bWVIb3N0ICE9IHRvcEZyYW1lSG9zdCk7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
LSAgICAKLSAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgc3ViRnJhbWVQcmltYXJ5RG9tYWluID0gaXNvbGF0ZWRQcmlt
YXJ5RG9tYWluKHN1YkZyYW1lSG9zdCksIHRvcEZyYW1lUHJpbWFyeURvbWFpbiA9IGlzb2xhdGVk
UHJpbWFyeURvbWFpbih0b3BGcmFtZUhvc3QpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
XSAoKSBtdXRhYmxlIHsKLSAgICAgICAgCi0gICAgICAgIGF1dG8mIHRvcEZyYW1lU3RhdGlzdGlj
ID0gZW5zdXJlUmVzb3VyY2VTdGF0aXN0aWNzRm9yUHJpbWFyeURvbWFpbih0b3BGcmFtZVByaW1h
cnlEb21haW4pOwotICAgICAgICBpZiAodG9wRnJhbWVTdGF0aXN0aWMuc3RvcmFnZUFjY2Vzc1Vu
ZGVyVG9wRnJhbWVPcmlnaW5zLmNvbnRhaW5zKHN1YkZyYW1lUHJpbWFyeURvbWFpbikpIHsKLSAg
ICAgICAgICAgIGNhbGxiYWNrKHRydWUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
CisKKyAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgc3ViRnJhbWVQcmltYXJ5RG9tYWluID0gaXNvbGF0ZWRQcmltYXJ5
RG9tYWluKHN1YkZyYW1lSG9zdCksIHRvcEZyYW1lUHJpbWFyeURvbWFpbiA9IGlzb2xhdGVkUHJp
bWFyeURvbWFpbih0b3BGcmFtZUhvc3QpLCBmcmFtZUlELCBwYWdlSUQsIGNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayldICgpIG11dGFibGUgewogICAgICAgICAKICAgICAgICAgYXV0byYgc3Vi
RnJhbWVTdGF0aXN0aWMgPSBlbnN1cmVSZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWlu
KHN1YkZyYW1lUHJpbWFyeURvbWFpbik7CiAgICAgICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMo
c3ViRnJhbWVTdGF0aXN0aWMpKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGNhbGxiYWNrKCFz
aG91bGRQYXJ0aXRpb25Db29raWVzKHN1YkZyYW1lU3RhdGlzdGljKSk7Ci0gICAgfSk7CisKKyAg
ICAgICAgaWYgKCFzaG91bGRQYXJ0aXRpb25Db29raWVzKHN1YkZyYW1lU3RhdGlzdGljKSkgewor
ICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKworICAgICAgICBtX2hhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxl
cihzdWJGcmFtZVByaW1hcnlEb21haW4sIHRvcEZyYW1lUHJpbWFyeURvbWFpbiwgZnJhbWVJRCwg
cGFnZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9KTsKIH0KIAogdm9pZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1l
SG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaAkocmV2aXNpb24gMjI1OTM0KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYxLDExICs2MSwxMiBAQCBlbnVtIGNsYXNzIFNob3VsZENsZWFyRmlyc3Q7CiBjbGFzcyBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgZmluYWwgOiBwdWJsaWMgSVBDOjpDb25uZWN0
aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgogICAgIHVzaW5nIFVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciA9IFdURjo6
RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3QpPjsK
KyAgICB1c2luZyBIYXNTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWluc0hhbmRsZXIgPSBX
VEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3Ry
aW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IFdURjo6RnVuY3Rpb248dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spPjsKICAgICB1
c2luZyBVcGRhdGVTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWluc0hhbmRsZXIgPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5n
JiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJv
b2wgdmFsdWUsIFdURjo6RnVuY3Rpb248dm9pZChib29sIHdhc0dyYW50ZWQpPiYmIGNhbGxiYWNr
KT47CiAgICAgdXNpbmcgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXIgPSBXVEY6OkZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik+OwotICAgIHN0YXRpYyBSZWY8V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4mJiB0
ZXN0aW5nQ2FsbGJhY2ssIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tD
b29raWVzSGFuZGxlciYmIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tD
b29raWVzSGFuZGxlciA9IFtdKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0
cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFNob3VsZENsZWFyRmlyc3QpIHsgfSwgVXBk
YXRlU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYgdXBkYXRlU3RvcmFn
ZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnNIYW5kbGVyID0gW10oY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCBib29sLCBXVEY6OkZ1bmN0aW9uPHZvaWQo
Ym9vbCk+JiYpIHsgfSwgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXImJiByZW1vdmVEb21h
aW5zSGFuZGxlciA9IFtdIChjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsgfSkKKyAgICBzdGF0aWMg
UmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgRnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRp
b25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRp
b25PckJsb2NrQ29va2llc0hhbmRsZXIgPSBbXShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBTaG91bGRDbGVhckZpcnN0
KSB7IH0sIEhhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIGhhc1N0
b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxlciA9IFtdKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90LCB1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJv
b2wpPiYmKSB7IH0sIFVwZGF0ZVN0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxl
ciYmIHVwZGF0ZVN0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxlciA9IFtdKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90LCB1aW50NjRfdCwgYm9vbCwgV1RG
OjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSB7IH0sIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5k
bGVyJiYgcmVtb3ZlRG9tYWluc0hhbmRsZXIgPSBbXSAoY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7
IH0pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZSh0
ZXN0aW5nQ2FsbGJhY2spLCBXVEZNb3ZlKHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlv
bk9yQmxvY2tDb29raWVzSGFuZGxlciksIFdURk1vdmUodXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclBy
ZXZhbGVudERvbWFpbnNIYW5kbGVyKSwgV1RGTW92ZShyZW1vdmVEb21haW5zSGFuZGxlcikpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFdURk1vdmUodGVzdGluZ0NhbGxi
YWNrKSwgV1RGTW92ZSh1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29v
a2llc0hhbmRsZXIpLCBXVEZNb3ZlKGhhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5z
SGFuZGxlciksIFdURk1vdmUodXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnNI
YW5kbGVyKSwgV1RGTW92ZShyZW1vdmVEb21haW5zSGFuZGxlcikpKTsKICAgICB9CiAKICAgICB+
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCk7CkBAIC04MSw3ICs4Miw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNv
cmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYgb3JpZ2lucyk7CiAKLSAgICB2b2lkIGhhc1N0
b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3Qs
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spOworICAgIHZv
aWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZy
YW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3ND
YWxsYmFjayhib29sIHdhc0dyYW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCk7CiAKQEAgLTE0MSw3
ICsxNDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2dUZXN0aW5nRXZlbnQoY29uc3QgU3RyaW5n
Jik7CiAKIHByaXZhdGU6Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKGNvbnN0
IFN0cmluZyYsIEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNr
LCBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIm
JiwgVXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYsIFJlbW92
ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYpOworICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZShjb25zdCBTdHJpbmcmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHRl
c3RpbmdDYWxsYmFjaywgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nv
b2tpZXNIYW5kbGVyJiYsIEhhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxl
ciYmLCBVcGRhdGVTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWluc0hhbmRsZXImJiwgUmVt
b3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXImJik7CiAKICAgICB2b2lkIHJlbW92ZURhdGFSZWNv
cmRzKCk7CiAKQEAgLTE5NCw2ICsxOTUsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxPcGVyYXRp
bmdEYXRlPiBtX29wZXJhdGluZ0RhdGVzOwogCiAgICAgVXBkYXRlUHJldmFsZW50RG9tYWluc1Rv
UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyIG1fdXBkYXRlUHJldmFsZW50RG9tYWluc1Rv
UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyOworICAgIEhhc1N0b3JhZ2VBY2Nlc3NGb3JQ
cmV2YWxlbnREb21haW5zSGFuZGxlciBtX2hhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21h
aW5zSGFuZGxlcjsKICAgICBVcGRhdGVTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWluc0hh
bmRsZXIgbV91cGRhdGVTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWluc0hhbmRsZXI7CiAg
ICAgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXIgbV9yZW1vdmVEb21haW5zSGFuZGxlcjsK
IApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyMjU5MzQpCisrKyBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MDgsNiArNDA4LDE0IEBAIHN0YXRpYyB1aW50NjRfdCBuZXh0UmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MKICAgICByZXR1cm4gKytuZXh0Q29udGV4dElkOwogfQogCit2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5n
JiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyAgICBhdXRv
IGNvbnRleHRJZCA9IG5leHRSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbnRleHRJZCgpOworICAgIGF1
dG8gYWRkUmVzdWx0ID0gbV9zdG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcC5hZGQoY29u
dGV4dElkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgQVNTRVJUX1VOVVNFRChhZGRSZXN1bHQs
IGFkZFJlc3VsdC5pc05ld0VudHJ5KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6SGFzU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnMoc2Vzc2lvbklELCByZXNvdXJj
ZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBjb250ZXh0SWQpLCAw
KTsKK30KKwogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1cGRhdGVTdG9yYWdlQWNjZXNzRm9y
UHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
cmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHZhbHVlLCBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCiB7CiAgICAgYXV0byBjb250ZXh0SWQgPSBuZXh0
UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb250ZXh0SWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCShyZXZpc2lv
biAyMjU5MzQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQorICAgIHZvaWQg
aGFzU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwg
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spOwogICAgIHZvaWQgdXBkYXRlU3RvcmFnZUFjY2Vzc0Zv
clByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VE
b21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBib29sIHZhbHVlLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY2FsbGJhY2spOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCShyZXZp
c2lvbiAyMjU5MzQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0MSw2ICsxMTQxLDEyIEBAIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6dXBkYXRlUHJldmFsZW50RG8KICAgICAgICAgcHJvY2Vzc1Bv
b2wtPnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6VXBk
YXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMobV9zZXNzaW9uSUQs
IGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQYXJ0
aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCA9PSBTaG91bGRDbGVhckZpcnN0OjpZZXMp
KTsKIH0KIAordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzRm9yUHJldmFs
ZW50RG9tYWluc0hhbmRsZXIoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3Ry
aW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2sp
Cit7CisgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQorICAgICAg
ICBwcm9jZXNzUG9vbC0+bmV0d29ya1Byb2Nlc3MoKS0+aGFzU3RvcmFnZUFjY2Vzc0ZvclByZXZh
bGVudERvbWFpbnMobV9zZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWlu
LCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwogdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjp1cGRhdGVTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWluc0hhbmRsZXIo
Y29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9t
YWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdmFsdWUsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPiYmIGNhbGxiYWNrKQogewog
ICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMoKSkKQEAgLTEzNDIsNyAr
MTM0OCw5IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6ZW5hYmxlUmVzb3VyY2VMb2EKICNpZiBI
QVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKICAgICBtX3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShtX2NvbmZp
Z3VyYXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZShjYWxsYmFj
ayksIFt0aGlzXSAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0IHNob3Vs
ZENsZWFyRmlyc3QpIHsKICAgICAgICAgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9u
T3JCbG9ja0Nvb2tpZXMoZG9tYWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWlu
c1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBzaG91bGRDbGVhckZpcnN0KTsKLSAgICB9LCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdmFsdWUsIFdURjo6RnVuY3Rpb248dm9pZChib29s
IHdhc0dyYW50ZWQpPiYmIGNhbGxiYWNrKSB7CisgICAgfSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKV0gKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0
cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNhbGxiYWNr
KSB7CisgICAgICAgIGhhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxlcihy
ZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CisgICAgfSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KV0gKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0
eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHZhbHVlLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4mJiBjYWxsYmFjaykg
ewogICAgICAgICB1cGRhdGVTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWluc0hhbmRsZXIo
cmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgdmFsdWUs
IFdURk1vdmUoY2FsbGJhY2spKTsKICAgICB9LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpXSAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1JlbW92ZSkgewogICAg
ICAgICByZW1vdmVQcmV2YWxlbnREb21haW5zKGRvbWFpbnNUb1JlbW92ZSk7CkBAIC0xNDAxLDE0
ICsxNDA5LDE0IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVtb3ZlUGVuZGluZ0Nvb2sKICAg
ICBtX3BlbmRpbmdDb29raWVzLnJlbW92ZShjb29raWUpOwogfQogCi12b2lkIFdlYnNpdGVEYXRh
U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0
b3BGcmFtZUhvc3QsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJh
Y2spCit2b2lkIFdlYnNpdGVEYXRhU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3Vi
RnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFj
aykKIHsKICAgICBpZiAoIXJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKCkpIHsKICAgICAg
ICAgY2FsbGJhY2soZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aGFzU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1l
SG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+aGFzU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1l
SG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CiB9CiAgICAgCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZCAoYm9vbCk+JiYgY2FsbGJhY2spCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyMjU5MzQp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsxMTYsNyBAQCBwdWJsaWM6CiAKICNpZiBIQVZF
KENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKICAgICB2b2lkIHVwZGF0ZVByZXZhbGVu
dERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywg
U2hvdWxkQ2xlYXJGaXJzdCk7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50
RG9tYWluc0hhbmRsZXIoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5n
JiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spOwog
ICAgIHZvaWQgdXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnNIYW5kbGVyKGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFp
biwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHZhbHVlLCBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNHcmFudGVkKT4mJiBjYWxsYmFjayk7CiAgICAg
dm9pZCByZW1vdmVQcmV2YWxlbnREb21haW5zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
KTsKICNlbmRpZgpAQCAtMTQ0LDcgKzE0NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZW5hYmxl
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0FuZFNldFRlc3RpbmdDYWxsYmFjayhGdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmKT4mJiBjYWxsYmFjayk7CiAKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nl
c3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgaGFzU3Rv
cmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwg
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9v
bCk+JiYgY2FsbGJhY2spOwogICAgIAogICAgIHZvaWQgc2V0Qm91bmRJbnRlcmZhY2VJZGVudGlm
aWVyKFN0cmluZyYmIGlkZW50aWZpZXIpIHsgbV9ib3VuZEludGVyZmFjZUlkZW50aWZpZXIgPSBX
VEZNb3ZlKGlkZW50aWZpZXIpOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkocmV2aXNp
b24gMjI1OTM0KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNTYsOSArMTI1Niw5IEBAIHZv
aWQgV2ViQ2hyb21lQ2xpZW50OjpkaWRJbnZhbGlkYXRlRG9jdW0KICAgICBtX3BhZ2UuZmluZENv
bnRyb2xsZXIoKS5kaWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJrZXJSZWN0cygpOwogfQogCi12b2lk
IFdlYkNocm9tZUNsaWVudDo6aGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3Qs
IFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29s
KT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpoYXNTdG9yYWdlQWNjZXNzKFN0
cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+
JiYgY2FsbGJhY2spCiB7Ci0gICAgbV9wYWdlLmhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJG
cmFtZUhvc3QpLCBXVEZNb3ZlKHRvcEZyYW1lSG9zdCksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAg
ICBtX3BhZ2UuaGFzU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lSG9zdCksIFdURk1vdmUo
dG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAK
IHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJG
cmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNr
KQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjI1OTM0KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNDksNyArMzQ5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkSW52YWxp
ZGF0ZURvY3VtZW50TWFya2VyUmVjdHMoKSBmaW5hbDsKIAotICAgIHZvaWQgaGFzU3RvcmFnZUFj
Y2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgV1RGOjpD
b21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJikgZmluYWw7CisgICAgdm9pZCBoYXNTdG9y
YWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCAoYm9vbCk+JiYpIGZpbmFsOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3Ry
aW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4m
JikgZmluYWw7CiAKICAgICBTdHJpbmcgbV9jYWNoZWRUb29sVGlwOwpJbmRleDogU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDIyNTkzNCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Nzc4LDEzICs1Nzc4LDEzIEBAIHN0YXRpYyB1aW50NjRfdCBuZXh0UmVxdWVz
dFN0b3JhZ2VBY2Nlc3MKICAgICByZXR1cm4gKytuZXh0Q29udGV4dElkOwogfQogCi12b2lkIFdl
YlBhZ2U6Omhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0
b3BGcmFtZUhvc3QsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJh
Y2spCit2b2lkIFdlYlBhZ2U6Omhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0
LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjaykKIHsKICAg
ICBhdXRvIGNvbnRleHRJZCA9IG5leHRSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbnRleHRJZCgpOwog
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9zdG9yYWdlQWNjZXNzUmVzcG9uc2VDYWxsYmFja01hcC5h
ZGQoY29udGV4dElkLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgQVNTRVJUKGFkZFJlc3VsdC5p
c05ld0VudHJ5KTsKICAgICBpZiAoYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSkKLSAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3Vi
RnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBjb250ZXh0SWQpKTsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3Vi
RnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBmcmFtZUlELCBwYWdlSUQsIGNvbnRl
eHRJZCkpOwogICAgIGVsc2UKICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogfQpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjI1OTM0
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDI0LDcgKzEwMjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZW5kUGFydGlh
bEVkaXRvclN0YXRlQW5kU2NoZWR1bGVQb3N0TGF5b3V0VXBkYXRlKCk7CiAgICAgdm9pZCBmbHVz
aFBlbmRpbmdFZGl0b3JTdGF0ZVVwZGF0ZSgpOwogCi0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNz
KFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGhhc1N0b3Jh
Z2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkIChib29sKT4mJiBjYWxsYmFjayk7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhT
dHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wp
PiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIHN0b3JhZ2VBY2Nlc3NSZXNwb25zZShib29sIHdhc0dy
YW50ZWQsIHVpbnQ2NF90IGNvbnRleHRJZCk7CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTkzNCkK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE3LTEyLTE1ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAg
ICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTogU3RvcmUgZnJhbWUtc3BlY2lmaWMgYWNjZXNzIGluLW1l
bW9yeSBmb3IgZG9jdW1lbnQuaGFzU3RvcmFnZUFjY2VzcygpIHJldHJpZXZhbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNjgxCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8zNTk4MjE2MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBtYWtlcyBhbiBhc3luY2hyb25vdXMgcmVxdWVz
dCB0byB0aGUgbmV0d29yayBwcm9jZXNzCisgICAgICAgIHRvIHNlZSBpZiBzdG9yYWdlIGFjY2Vz
cyBoYXMgYmVlbiBncmFudGVkIGZvciB0aGlzIGZyYW1lLCBvbiB0aGlzCisgICAgICAgIHBhZ2Us
IGZvciB0aGlzIGRvbWFpbi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9o
YXMtc3RvcmFnZS1hY2Nlc3MtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgtbm9uLXJlY2VudC11
c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9tLXByZXZhbGVudC1kb21haW4t
d2l0aC1ub24tcmVjZW50LXVzZXItaW50ZXJhY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9tLXByZXZhbGVu
dC1kb21haW4td2l0aC1yZWNlbnQtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3Mt
ZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgtcmVjZW50LXVzZXItaW50ZXJhY3Rpb24uaHRtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9oYXMt
c3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL3dr
Mi9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAgICAgTmV3IHRlc3RzIG1hcmtlZCBhcyBbIFBh
c3MgXS4KKwogMjAxNy0xMi0xNCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBTdG9yYWdlIEFjY2VzcyBBUEk6IEltcGxlbWVudCBmcmFtZS1zcGVjaWZpYyBh
Y2Nlc3MgaW4gdGhlIGRvY3VtZW50LmNvb2tpZSBsYXllcgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9tLXByZXZhbGVudC1k
b21haW4td2l0aC1ub24tcmVjZW50LXVzZXItaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFn
ZS1hY2Nlc3MtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgtbm9uLXJlY2VudC11c2VyLWludGVy
YWN0aW9uLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLWZyb20tcHJldmFsZW50LWRvbWFp
bi13aXRoLW5vbi1yZWNlbnQtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgdGhhdCBhIGNyb3NzLW9yaWdpbiBpZnJhbWUg
ZnJvbSBhIHByZXZhbGVudCBkb21haW4gd2l0aCBub24tcmVjZW50IHVzZXIgaW50ZXJhY3Rpb24g
ZG9lcyBub3QgaGF2ZSBzdG9yYWdlIGFjY2Vzcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgorCisKK1BBU1MgTm8gc3RvcmFnZSBhY2Nlc3MuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9tLXByZXZhbGVudC1kb21haW4td2l0
aC1ub24tcmVjZW50LXVzZXItaW50ZXJhY3Rpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLWZyb20tcHJl
dmFsZW50LWRvbWFpbi13aXRoLW5vbi1yZWNlbnQtdXNlci1pbnRlcmFjdGlvbi5odG1sCShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3Rv
cmFnZS1hY2Nlc3MtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgtbm9uLXJlY2VudC11c2VyLWlu
dGVyYWN0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291
cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2Ny
aXB0aW9uKCJUZXN0cyB0aGF0IGEgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBmcm9tIGEgcHJldmFsZW50
IGRvbWFpbiB3aXRoIG5vbi1yZWNlbnQgdXNlciBpbnRlcmFjdGlvbiBkb2VzIG5vdCBoYXZlIHN0
b3JhZ2UgYWNjZXNzLiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAg
ICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVNZXNzYWdlLCBmYWxz
ZSk7CisKKyAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQpIHsKKyAgICAgICAg
ICAgIGlmIChldmVudC5vcmlnaW4gPT09ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiKSB7CisgICAg
ICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigiUEFTUyIpICE9PSAtMSkKKyAgICAg
ICAgICAgICAgICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnJlcGxhY2UoIlBBU1MgIiwgIiIp
KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ZXZlbnQuZGF0YSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFp
bGVkKCJSZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSBhbiB1bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2
ZW50Lm9yaWdpbik7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAibG9jYWxob3N0OjgwMDAiOworICAgICAgICBj
b25zdCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9zdFVuZGVyVGVzdCArICIvdGVtcCI7
CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRp
c3RpY3NVcmwsIHRydWUpOworICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJl
dmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJI
b3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIHRl
c3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hhZE5vblJlY2VudFVzZXJJbnRlcmFjdGlvbihzdGF0
aXN0aWNzVXJsLCB0cnVlKTsKKyAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hh
c0hhZFVzZXJJbnRlcmFjdGlvbihzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRlc3RGYWls
ZWQoIkhvc3QgZGlkIG5vdCBnZXQgbG9nZ2VkIGZvciB1c2VyIGludGVyYWN0aW9uLiIpOworICAg
IDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lIHNhbmRib3g9ImFsbG93LXN0b3Jh
Z2UtYWNjZXNzLWJ5LXVzZXItYWN0aXZhdGlvbiBhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3Jp
Z2luIGFsbG93LW1vZGFscyIgaWQ9InRoZUlmcmFtZSIgc3JjPSJodHRwOi8vbG9jYWxob3N0Ojgw
MDAvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvaGFzLXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS5odG1s
I3BvbGljeVNob3VsZE5vdEdyYW50QWNjZXNzIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLWZyb20tcHJldmFsZW50LWRvbWFpbi13
aXRoLXJlY2VudC11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLWZy
b20tcHJldmFsZW50LWRvbWFpbi13aXRoLXJlY2VudC11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVk
LnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvaGFzLXN0b3JhZ2UtYWNjZXNzLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRoLXJlY2VudC11
c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEw
IEBACitUZXN0cyB0aGF0IGEgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBmcm9tIGEgcHJldmFsZW50IGRv
bWFpbiB3aXRoIHJlY2VudCB1c2VyIGludGVyYWN0aW9uIGRvZXMgaGF2ZSBzdG9yYWdlIGFjY2Vz
cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgSGFzIHN0b3JhZ2UgYWNj
ZXNzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisK
SW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1h
Y2Nlc3MtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgtcmVjZW50LXVzZXItaW50ZXJhY3Rpb24u
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3Mv
aGFzLXN0b3JhZ2UtYWNjZXNzLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRoLXJlY2VudC11c2Vy
LWludGVyYWN0aW9uLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9tLXByZXZhbGVudC1kb21haW4t
d2l0aC1yZWNlbnQtdXNlci1pbnRlcmFjdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNy
Yz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2Ny
aXB0PgorICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBhIGNyb3NzLW9yaWdpbiBpZnJh
bWUgZnJvbSBhIHByZXZhbGVudCBkb21haW4gd2l0aCByZWNlbnQgdXNlciBpbnRlcmFjdGlvbiBk
b2VzIGhhdmUgc3RvcmFnZSBhY2Nlc3MuIik7CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVl
OworCisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1l
c3NhZ2UsIGZhbHNlKTsKKworICAgICAgICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShldmVudCkg
eworICAgICAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MCIpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5pbmRleE9mKCJQQVNTIikgIT09
IC0xKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKGV2ZW50LmRhdGEucmVwbGFjZSgi
UEFTUyAiLCAiIikpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZChldmVudC5kYXRhKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3Jp
Z2luOiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAg
ICAgICB9CisKKyAgICAgICAgY29uc3QgaG9zdFVuZGVyVGVzdCA9ICJsb2NhbGhvc3Q6ODAwMCI7
CisgICAgICAgIGNvbnN0IHN0YXRpc3RpY3NVcmwgPSAiaHR0cDovLyIgKyBob3N0VW5kZXJUZXN0
ICsgIi90ZW1wIjsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVz
b3VyY2Uoc3RhdGlzdGljc1VybCwgdHJ1ZSk7CisgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRl
c3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsK
KyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHN0
YXRpc3RpY3NVcmwsIHRydWUpOworICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNz
SGFzSGFkVXNlckludGVyYWN0aW9uKHN0YXRpc3RpY3NVcmwpKQorICAgICAgICAgICAgdGVzdEZh
aWxlZCgiSG9zdCBkaWQgbm90IGdldCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7Cisg
ICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc3Rv
cmFnZS1hY2Nlc3MtYnktdXNlci1hY3RpdmF0aW9uIGFsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1v
cmlnaW4gYWxsb3ctbW9kYWxzIiBpZD0idGhlSWZyYW1lIiBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6
ODAwMC9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9oYXMtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0
bWwjcG9saWN5U2hvdWxkR3JhbnRBY2Nlc3MiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
c3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvaGFzLXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJj
ZXMvaGFzLXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS5odG1sCShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvaGFzLXN0b3JhZ2UtYWNj
ZXNzLWlmcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAgQEAKKzxodG1sPgor
PGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgY29uc3QgcG9saWN5U2hvdWxkR3JhbnRBY2Nl
c3MgPSBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiI3BvbGljeVNob3VsZEdyYW50QWNjZXNz
IjsKKworICAgICAgICBmdW5jdGlvbiBjaGVja0hhc1N0b3JhZ2VBY2Nlc3MoKSB7CisgICAgICAg
ICAgICB2YXIgcHJvbWlzZSA9IGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3MoKTsKKyAgICAgICAg
ICAgIHByb21pc2UudGhlbigKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoaGFzQWNjZXNzKSB7
CisgICAgICAgICAgICAgICAgICAgIGlmIChoYXNBY2Nlc3MgJiYgcG9saWN5U2hvdWxkR3JhbnRB
Y2Nlc3MpCisgICAgICAgICAgICAgICAgICAgICAgICB0b3AucG9zdE1lc3NhZ2UoIlBBU1MgSGFz
IHN0b3JhZ2UgYWNjZXNzLiIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiKTsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAoIWhhc0FjY2VzcyAmJiAhcG9saWN5U2hvdWxkR3JhbnRBY2Nlc3Mp
CisgICAgICAgICAgICAgICAgICAgICAgICB0b3AucG9zdE1lc3NhZ2UoIlBBU1MgTm8gc3RvcmFn
ZSBhY2Nlc3MuIiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIpOworICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB0b3AucG9zdE1lc3NhZ2UoIkZBSUwgIiAr
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhc0FjY2VzcyA/ICJTdG9yYWdlICIgOiAi
Tm8gc3RvcmFnZSAiKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyB3aGVu
IHRoZXJlIHNob3VsZCAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9saWN5U2hv
dWxkR3JhbnRBY2Nlc3MgPyAiIiA6ICJub3QgIikgKworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJoYXZlIGJlZW4gYWNjZXNzLiIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiKTsKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICAg
ICAgICAgICAgICAgICAgdG9wLnBvc3RNZXNzYWdlKCJGQUlMIGRvY3VtZW50Lmhhc1N0b3JhZ2VB
Y2Nlc3MoKSB3YXMgcmVqZWN0ZWQuIFJlYXNvbjogIiArIHJlYXNvbiwgImh0dHA6Ly8xMjcuMC4w
LjE6ODAwMCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7CisgICAgICAgIH0K
KyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iY2hlY2tIYXNTdG9yYWdlQWNj
ZXNzKCkiPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCShyZXZpc2lvbiAy
MjU5MzQpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwkod29y
a2luZyBjb3B5KQpAQCAtNjg5LDYgKzY4OSw4IEBAIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy9ncmFuZGYKIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90ZWxlbWV0
cnktZ2VuZXJhdGlvbi5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvcHJ1bmUtc3RhdGlzdGljcy5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3N0b3JhZ2VB
Y2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy10b3AtZnJhbWUuaHRtbCBbIFBhc3MgXQoraHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9tLXByZXZhbGVudC1k
b21haW4td2l0aC1ub24tcmVjZW50LXVzZXItaW50ZXJhY3Rpb24uaHRtbCBbIFBhc3MgXQoraHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9tLXByZXZhbGVudC1k
b21haW4td2l0aC1yZWNlbnQtdXNlci1pbnRlcmFjdGlvbi5odG1sIFsgUGFzcyBdCiBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgWyBQYXNzIF0KICMgQ29va2llIHBhcnRpdGlvbmlu
ZyBpcyBvbmx5IHN1cHBvcnRlZCBpbiBtYWNPUyBIaWdoIFNpZXJyYSBhbmQgaU9TIDExLgogaHR0
cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2FkZC1wYXJ0aXRpb25pbmctdG8tcmVkaXJl
Y3QuaHRtbCBbIFNraXAgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329536</attachid>
            <date>2017-12-15 16:17:08 -0800</date>
            <delta_ts>2017-12-17 19:11:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-180681-20171215161707.patch</filename>
            <type>text/plain</type>
            <size>47297</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTkzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE3LTEyLTE1ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQ
STogU3RvcmUgZnJhbWUtc3BlY2lmaWMgYWNjZXNzIGluLW1lbW9yeSBmb3IgZG9jdW1lbnQuaGFz
U3RvcmFnZUFjY2VzcygpIHJldHJpZXZhbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgwNjgxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNTk4MjE2
MT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
czogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9tLXByZXZh
bGVudC1kb21haW4td2l0aC1ub24tcmVjZW50LXVzZXItaW50ZXJhY3Rpb24uaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9t
LXByZXZhbGVudC1kb21haW4td2l0aC1yZWNlbnQtdXNlci1pbnRlcmFjdGlvbi5odG1sCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgbWFrZXMgYW4gYXN5bmNocm9ub3VzIHJlcXVlc3QgdG8gdGhlIG5l
dHdvcmsgcHJvY2VzcworICAgICAgICB0byBzZWUgaWYgc3RvcmFnZSBhY2Nlc3MgaGFzIGJlZW4g
Z3JhbnRlZCBmb3IgdGhpcyBmcmFtZSwgb24gdGhpcworICAgICAgICBwYWdlLCBmb3IgdGhpcyBk
b21haW4uCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6Omhhc1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50
Lmg6CisKIDIwMTctMTItMTQgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgU3RvcmFnZSBBY2Nlc3MgQVBJOiBJbXBsZW1lbnQgZnJhbWUtc3BlY2lmaWMgYWNj
ZXNzIGluIHRoZSBkb2N1bWVudC5jb29raWUgbGF5ZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkocmV2aXNpb24gMjI1OTM0KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzQyNywxMSArNzQyNywxMyBAQCB2b2lkIERvY3VtZW50Ojpo
YXNTdG9yYWdlQWNjZXNzKFJlZjxEZWZlCiB7CiAgICAgQVNTRVJUKHNldHRpbmdzKCkuc3RvcmFn
ZUFjY2Vzc0FQSUVuYWJsZWQoKSk7CiAKLSAgICBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiBwcm9t
aXNlKFdURk1vdmUocGFzc2VkUHJvbWlzZSkpOworICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZShXVEZNb3ZlKHBhc3NlZFByb21pc2UpKTsKIAotICAgIGlmIChtX2hhc0ZyYW1l
U3BlY2lmaWNTdG9yYWdlQWNjZXNzKQorICAgIGlmIChtX2hhc0ZyYW1lU3BlY2lmaWNTdG9yYWdl
QWNjZXNzKSB7CiAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4odHJ1ZSk7Ci0g
ICAgCisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoIW1fZnJhbWUgfHwgc2VjdXJp
dHlPcmlnaW4oKS5pc1VuaXF1ZSgpKSB7CiAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9v
bGVhbj4oZmFsc2UpOwogICAgICAgICByZXR1cm47CkBAIC03NDQ5LDEwICs3NDUxLDE4IEBAIHZv
aWQgRG9jdW1lbnQ6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVmPERlZmUKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAorICAgIEFTU0VSVChtX2ZyYW1lKTsKKyAgICBhdXRvIGZyYW1lSUQgPSBtX2ZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSBtX2ZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKKyAgICBpZiAoIWZyYW1lSUQgfHwgIXBhZ2VJ
RCkgeworICAgICAgICBwcm9taXNlLT5yZWplY3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KwogICAgIGlmIChQYWdlKiBwYWdlID0gdGhpcy0+cGFnZSgpKSB7CiAgICAgICAgIGF1dG8gaWZy
YW1lSG9zdCA9IHNlY3VyaXR5T3JpZ2luLmhvc3QoKTsKICAgICAgICAgYXV0byB0b3BIb3N0ID0g
dG9wU2VjdXJpdHlPcmlnaW4uaG9zdCgpOwotICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQo
KS5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoaWZyYW1lSG9zdCksIFdURk1vdmUodG9wSG9zdCks
IFtkb2N1bWVudFJlZmVyZW5jZSA9IG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyks
IHByb21pc2VdIChib29sIGhhc0FjY2VzcykgeworICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGll
bnQoKS5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoaWZyYW1lSG9zdCksIFdURk1vdmUodG9wSG9z
dCksIGZyYW1lSUQudmFsdWUoKSwgcGFnZUlELnZhbHVlKCksIFtkb2N1bWVudFJlZmVyZW5jZSA9
IG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyksIHByb21pc2VdIChib29sIGhhc0Fj
Y2VzcykgewogICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG9jdW1lbnRSZWZlcmVu
Y2UuZ2V0KCk7CiAgICAgICAgICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gMjI1OTM0
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDY3LDcgKzQ2Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UHJvY2Vz
c0NQVVRpbWUoU2Vjb25kcywgQWN0aXZpdHlTdGF0ZUZvckNQVVNhbXBsaW5nKSB7IH0KICAgICB2
aXJ0dWFsIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIC8qIGZpbGVuYW1lcyAqLykgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIGhhc1N0b3JhZ2VB
Y2Nlc3MoU3RyaW5nJiYgLypzdWJGcmFtZUhvc3QqLywgU3RyaW5nJiYgLyp0b3BGcmFtZUhvc3Qq
LywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjaykgeyBjYWxs
YmFjayhmYWxzZSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcm
JiAvKnN1YkZyYW1lSG9zdCovLCBTdHJpbmcmJiAvKnRvcEZyYW1lSG9zdCovLCB1aW50NjRfdCAv
KmZyYW1lSUQqLywgdWludDY0X3QgLypwYWdlSUQqLywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkIChib29sKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjayhmYWxzZSk7IH0KICAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgLypzdWJGcmFtZUhvc3QqLywgU3Ry
aW5nJiYgLyp0b3BGcmFtZUhvc3QqLywgdWludDY0X3QgLypmcmFtZUlEKi8sIHVpbnQ2NF90IC8q
cGFnZUlEKi8sIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2sp
IHsgY2FsbGJhY2soZmFsc2UpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkSW5zZXJ0TWVudUVs
ZW1lbnQoSFRNTE1lbnVFbGVtZW50JikgeyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjI1OTg3
KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0
MyBAQAorMjAxNy0xMi0xNSAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTdG9yYWdlIEFjY2VzcyBBUEk6IFN0b3JlIGZyYW1lLXNwZWNpZmljIGFjY2VzcyBp
bi1tZW1vcnkgZm9yIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3MoKSByZXRyaWV2YWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDY4MQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzU5ODIxNjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgbWFrZXMgYW4gYXN5bmNocm9ub3VzIHJl
cXVlc3QgdG8gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICB0byBzZWUgaWYgc3RvcmFnZSBh
Y2Nlc3MgaGFzIGJlZW4gZ3JhbnRlZCBmb3IgdGhpcyBmcmFtZSwgb24gdGhpcworICAgICAgICBw
YWdlLCBmb3IgdGhpcyBkb21haW4uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpoYXNTdG9yYWdl
QWNjZXNzRm9yUHJldmFsZW50RG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzOjp1cGRhdGVTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWlucyk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6aGFzU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpo
YXNTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6
Omhhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxlcik6CisgICAgICAgIChX
ZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NBbmRT
ZXRUZXN0aW5nQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpo
YXNTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpoYXNTdG9y
YWdlQWNjZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwogMjAxNy0xMi0xNSAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBHVEsgYnVpbGQuCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAkocmV2aXNpb24gMjI1OTM0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw2ICszMzUsMTQgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6dXBkYXRlUHJldmFsZW50RG9tYQogICAgICAgICBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24tPnNldFByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKGRv
bWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRp
b25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCk7CiB9CiAKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
Omhhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBh
cnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNv
bnRleHRJZCkKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAgICAgICBwYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpTdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdChuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmlzU3Rv
cmFnZUFjY2Vzc0dyYW50ZWQocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1l
SUQsIHBhZ2VJRCksIGNvbnRleHRJZCksIDApOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnVwZGF0ZVN0b3JhZ2VBY2Nl
c3NGb3JQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgc2hvdWxkR3JhbnRTdG9yYWdlLCB1
aW50NjRfdCBjb250ZXh0SWQpCiB7CiAgICAgYm9vbCBpc1N0b3JhZ2VHcmFudGVkID0gZmFsc2U7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CShyZXZpc2lvbiAyMjU5MzQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsNyBAQCBwdWJsaWM6CiAK
ICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKICAgICB2b2lkIHVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9O
ZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCk7CisgICAgdm9p
ZCBoYXNTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25JRCwgY29u
c3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWlu
LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNvbnRleHRJZCk7
CiAgICAgdm9pZCB1cGRhdGVTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWlucyhQQUw6OlNl
c3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJz
dFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdmFs
dWUsIHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCByZW1vdmVQcmV2YWxlbnREb21haW5z
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjI1OTM0KQorKysgU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpA
QCAtODMsNiArODMsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZl
CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKICAgICBVcGRhdGVQ
cmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb1BhcnRpdGlvbiwgVmVjdG9yPFN0cmlu
Zz4gZG9tYWluc1RvQmxvY2ssIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb05laXRoZXJQYXJ0aXRp
b25Ob3JCbG9jaywgYm9vbCBzaG91bGRDbGVhckZpcnN0KQorICAgIEhhc1N0b3JhZ2VBY2Nlc3NG
b3JQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIHJlc291
cmNlRG9tYWluLCBTdHJpbmcgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgVXBkYXRlU3RvcmFnZUFjY2Vz
c0ZvclByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgcmVz
b3VyY2VEb21haW4sIFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIGJvb2wgc2hvdWxkR3JhbnRBY2Nlc3MsIHVpbnQ2NF90IGNvbnRleHRJ
ZCkKICAgICBSZW1vdmVQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
VmVjdG9yPFN0cmluZz4gZG9tYWluc1dpdGhJbnRlcmFjdGlvbik7CiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjI1OTM0KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzE2MSw5ICs3MTYxLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BVUkxTY2hlbWVU
YXNrKHVpbgogICAgIGl0ZXJhdG9yLT52YWx1ZS0+c3RvcFRhc2soKnRoaXMsIHRhc2tJZGVudGlm
aWVyKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYg
c3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IHdlYlByb2Nlc3ND
b250ZXh0SWQpCit2b2lkIFdlYlBhZ2VQcm94eTo6aGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBz
dWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCB3ZWJQcm9jZXNzQ29udGV4dElkKQogewotICAgIG1fd2Vi
c2l0ZURhdGFTdG9yZS0+aGFzU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lSG9zdCksIFdU
Rk1vdmUodG9wRnJhbWVIb3N0KSwgW3RoaXMsIHdlYlByb2Nlc3NDb250ZXh0SWRdIChib29sIGhh
c0FjY2VzcykgeworICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+aGFzU3RvcmFnZUFjY2VzcyhXVEZN
b3ZlKHN1YkZyYW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJRCwgcGFnZUlE
LCBbdGhpcywgd2ViUHJvY2Vzc0NvbnRleHRJZF0gKGJvb2wgaGFzQWNjZXNzKSB7CiAgICAgICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcmFnZUFjY2Vzc1Jlc3BvbnNl
KGhhc0FjY2Vzcywgd2ViUHJvY2Vzc0NvbnRleHRJZCksIG1fcGFnZUlEKTsKICAgICB9KTsKIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMjU5
MzQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBj
b3B5KQpAQCAtMTIzOSw3ICsxMjM5LDcgQEAgcHVibGljOgogICAgIHZvaWQgdG91Y2hCYXJNZW51
SXRlbURhdGFSZW1vdmVkKGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJik7CiAjZW5kaWYKIAot
ICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYm
IHRvcEZyYW1lSG9zdCwgdWludDY0X3Qgd2ViUHJvY2Vzc0NvbnRleHRJZCk7CisgICAgdm9pZCBo
YXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVI
b3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHdlYlByb2Nl
c3NDb250ZXh0SWQpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3Vi
RnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3Qgd2ViUHJvY2Vzc0NvbnRleHRJZCk7CiAKICNpZiBFTkFCTEUo
QVRUQUNITUVOVF9FTEVNRU5UKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjI1OTM0KQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBA
IC01MDgsNyArNTA4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBTdGFydFVS
TFNjaGVtZVRhc2soc3RydWN0IFdlYktpdDo6VVJMU2NoZW1lVGFza1BhcmFtZXRlcnMgcGFyYW1l
dGVycykKICAgICBTdG9wVVJMU2NoZW1lVGFzayh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwg
dWludDY0X3QgdGFza0lkZW50aWZpZXIpCiAKLSAgICBIYXNTdG9yYWdlQWNjZXNzKFN0cmluZyBz
dWJGcmFtZUhvc3QsIFN0cmluZyB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGNvbnRleHRJRCkKKyAg
ICBIYXNTdG9yYWdlQWNjZXNzKFN0cmluZyBzdWJGcmFtZUhvc3QsIFN0cmluZyB0b3BGcmFtZUhv
c3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY29udGV4dElE
KQogICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyBzdWJGcmFtZUhvc3QsIFN0cmluZyB0
b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
Y29udGV4dElEKQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcAkocmV2aXNpb24gMjI1OTM0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQ1LDEwICsxNDUsMTEgQEAgc3RhdGljIFZlY3RvcjxPcGVyYXRpbmdEYXRlPiBtZXJnZU9wZXJh
dAogICAgIHJldHVybiBtZXJnZWREYXRlczsKIH0KIAotV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYp
PiYmIHRlc3RpbmdDYWxsYmFjaywgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JC
bG9ja0Nvb2tpZXNIYW5kbGVyJiYgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JC
bG9ja0Nvb2tpZXNIYW5kbGVyLCBVcGRhdGVTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWlu
c0hhbmRsZXImJiB1cGRhdGVTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWluc0hhbmRsZXIs
IFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYgcmVtb3ZlRG9tYWluc0hhbmRsZXIpCitX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBVcGRhdGVQcmV2YWxl
bnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1cGRhdGVQcmV2YWxl
bnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIsIEhhc1N0b3JhZ2VBY2Nl
c3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIGhhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxl
bnREb21haW5zSGFuZGxlciwgVXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnNI
YW5kbGVyJiYgdXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnNIYW5kbGVyLCBS
ZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFpbnNIYW5kbGVyKQogICAg
IDogbV9zdGF0aXN0aWNzUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSBQcm9jZXNzIERhdGEgUXVldWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlh
bCwgV29ya1F1ZXVlOjpRT1M6OlV0aWxpdHkpKQogICAgICwgbV9wZXJzaXN0ZW50U3RvcmFnZSgq
dGhpcywgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkKICAgICAsIG1fdXBkYXRlUHJl
dmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyKFdURk1vdmUodXBk
YXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyKSkKKyAg
ICAsIG1faGFzU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnNIYW5kbGVyKFdURk1vdmUo
aGFzU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnNIYW5kbGVyKSkKICAgICAsIG1fdXBk
YXRlU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnNIYW5kbGVyKFdURk1vdmUodXBkYXRl
U3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnNIYW5kbGVyKSkKICAgICAsIG1fcmVtb3Zl
RG9tYWluc0hhbmRsZXIoV1RGTW92ZShyZW1vdmVEb21haW5zSGFuZGxlcikpCiAgICAgLCBtX2Rh
aWx5VGFza3NUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnBlcmZvcm1EYWlseVRhc2tzKQpAQCAtMjQ1LDI2ICsyNDYsMjUgQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcwogICAgIHByb2Nlc3NTdGF0aXN0
aWNzQW5kRGF0YVJlY29yZHMoKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0
b3BGcmFtZUhvc3QsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJh
Y2spCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vz
cyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJv
b2wpPiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChzdWJGcmFtZUhvc3QgIT0gdG9wRnJhbWVI
b3N0KTsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIAotICAgIG1fc3RhdGlz
dGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBzdWJGcmFtZVByaW1hcnlEb21haW4gPSBpc29sYXRlZFByaW1hcnlEb21haW4oc3ViRnJhbWVI
b3N0KSwgdG9wRnJhbWVQcmltYXJ5RG9tYWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWluKHRvcEZy
YW1lSG9zdCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFibGUgewotICAg
ICAgICAKLSAgICAgICAgYXV0byYgdG9wRnJhbWVTdGF0aXN0aWMgPSBlbnN1cmVSZXNvdXJjZVN0
YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHRvcEZyYW1lUHJpbWFyeURvbWFpbik7Ci0gICAgICAg
IGlmICh0b3BGcmFtZVN0YXRpc3RpYy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZU9yaWdpbnMu
Y29udGFpbnMoc3ViRnJhbWVQcmltYXJ5RG9tYWluKSkgewotICAgICAgICAgICAgY2FsbGJhY2so
dHJ1ZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKworICAgIG1fc3RhdGlzdGlj
c1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBz
dWJGcmFtZVByaW1hcnlEb21haW4gPSBpc29sYXRlZFByaW1hcnlEb21haW4oc3ViRnJhbWVIb3N0
KSwgdG9wRnJhbWVQcmltYXJ5RG9tYWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWluKHRvcEZyYW1l
SG9zdCksIGZyYW1lSUQsIHBhZ2VJRCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKCkg
bXV0YWJsZSB7CiAgICAgICAgIAogICAgICAgICBhdXRvJiBzdWJGcmFtZVN0YXRpc3RpYyA9IGVu
c3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oc3ViRnJhbWVQcmltYXJ5RG9t
YWluKTsKICAgICAgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcyhzdWJGcmFtZVN0YXRpc3RpYykp
IHsKICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQotICAgICAgICAKLSAgICAgICAgY2FsbGJhY2soIXNob3VsZFBhcnRpdGlvbkNvb2tp
ZXMoc3ViRnJhbWVTdGF0aXN0aWMpKTsKKworICAgICAgICBpZiAoIXNob3VsZFBhcnRpdGlvbkNv
b2tpZXMoc3ViRnJhbWVTdGF0aXN0aWMpKSB7CisgICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1faGFzU3RvcmFnZUFj
Y2Vzc0ZvclByZXZhbGVudERvbWFpbnNIYW5kbGVyKHN1YkZyYW1lUHJpbWFyeURvbWFpbiwgdG9w
RnJhbWVQcmltYXJ5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsK
ICAgICB9KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHJldmlzaW9uIDIyNTkzNCkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC02MSwxMSArNjEsMTIgQEAgZW51bSBjbGFzcyBTaG91bGRDbGVh
ckZpcnN0OwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGZpbmFsIDogcHVi
bGljIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoK
ICAgICB1c2luZyBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2ll
c0hhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFp
bnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91
bGRDbGVhckZpcnN0KT47CisgICAgdXNpbmcgSGFzU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERv
bWFpbnNIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VE
b21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNh
bGxiYWNrKT47CiAgICAgdXNpbmcgVXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFp
bnNIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21h
aW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBib29sIHZhbHVlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCB3YXNHcmFu
dGVkKT4mJiBjYWxsYmFjayk+OwogICAgIHVzaW5nIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5k
bGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPjsKLSAgICBz
dGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgRnVuY3Rpb248dm9pZCAoY29u
c3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9Q
YXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9Q
YXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIgPSBbXShjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBTaG91bGRDbGVh
ckZpcnN0KSB7IH0sIFVwZGF0ZVN0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxl
ciYmIHVwZGF0ZVN0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxlciA9IFtdKGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90LCB1aW50NjRfdCwgYm9vbCwgV1RG
OjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSB7IH0sIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5k
bGVyJiYgcmVtb3ZlRG9tYWluc0hhbmRsZXIgPSBbXSAoY29uc3QgVmVjdG9yPFN0cmluZz4mKSB7
IH0pCisgICAgc3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9u
PHZvaWQgKGNvbnN0IFN0cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgVXBkYXRlUHJldmFsZW50
RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYgdXBkYXRlUHJldmFsZW50
RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyID0gW10oY29uc3QgVmVjdG9y
PFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+Jiwg
U2hvdWxkQ2xlYXJGaXJzdCkgeyB9LCBIYXNTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWlu
c0hhbmRsZXImJiBoYXNTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWluc0hhbmRsZXIgPSBb
XShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdURjo6
RnVuY3Rpb248dm9pZChib29sKT4mJikgeyB9LCBVcGRhdGVTdG9yYWdlQWNjZXNzRm9yUHJldmFs
ZW50RG9tYWluc0hhbmRsZXImJiB1cGRhdGVTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWlu
c0hhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWlu
dDY0X3QsIGJvb2wsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJikgeyB9LCBSZW1vdmVQcmV2
YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFpbnNIYW5kbGVyID0gW10gKGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JikgeyB9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnksIFdURk1vdmUodGVzdGluZ0NhbGxiYWNrKSwgV1RGTW92ZSh1cGRhdGVQcmV2YWxlbnRE
b21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIpLCBXVEZNb3ZlKHVwZGF0ZVN0
b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxlciksIFdURk1vdmUocmVtb3ZlRG9t
YWluc0hhbmRsZXIpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZN
b3ZlKHRlc3RpbmdDYWxsYmFjayksIFdURk1vdmUodXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFy
dGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyKSwgV1RGTW92ZShoYXNTdG9yYWdlQWNjZXNzRm9y
UHJldmFsZW50RG9tYWluc0hhbmRsZXIpLCBXVEZNb3ZlKHVwZGF0ZVN0b3JhZ2VBY2Nlc3NGb3JQ
cmV2YWxlbnREb21haW5zSGFuZGxlciksIFdURk1vdmUocmVtb3ZlRG9tYWluc0hhbmRsZXIpKSk7
CiAgICAgfQogCiAgICAgfldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpOwpAQCAtODEs
NyArODIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRh
dGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmIG9yaWdpbnMpOwog
Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5n
JiYgdG9wRnJhbWVIb3N0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNh
bGxiYWNrKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0
LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjayk7CiAgICAg
dm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYm
IHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNv
bXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzQ2FsbGJhY2soYm9vbCB3YXNHcmFudGVkLCB1aW50NjRfdCBjb250ZXh0
SWQpOwogCkBAIC0xNDEsNyArMTQyLDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9nVGVzdGluZ0V2
ZW50KGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZShjb25zdCBTdHJpbmcmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYm
IHRlc3RpbmdDYWxsYmFjaywgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9j
a0Nvb2tpZXNIYW5kbGVyJiYsIFVwZGF0ZVN0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5z
SGFuZGxlciYmLCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmKTsKKyAgICBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJiwgRnVuY3Rpb248dm9pZChjb25z
dCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ssIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1Bh
cnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciYmLCBIYXNTdG9yYWdlQWNjZXNzRm9yUHJldmFs
ZW50RG9tYWluc0hhbmRsZXImJiwgVXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFp
bnNIYW5kbGVyJiYsIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYpOwogCiAgICAgdm9p
ZCByZW1vdmVEYXRhUmVjb3JkcygpOwogCkBAIC0xOTQsNiArMTk1LDcgQEAgcHJpdmF0ZToKICAg
ICBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4gbV9vcGVyYXRpbmdEYXRlczsKIAogICAgIFVwZGF0ZVBy
ZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciBtX3VwZGF0ZVBy
ZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlcjsKKyAgICBIYXNT
dG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWluc0hhbmRsZXIgbV9oYXNTdG9yYWdlQWNjZXNz
Rm9yUHJldmFsZW50RG9tYWluc0hhbmRsZXI7CiAgICAgVXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclBy
ZXZhbGVudERvbWFpbnNIYW5kbGVyIG1fdXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERv
bWFpbnNIYW5kbGVyOwogICAgIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyIG1fcmVtb3Zl
RG9tYWluc0hhbmRsZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjI1OTM0KQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDA4LDYgKzQwOCwxNCBAQCBzdGF0aWMgdWludDY0X3QgbmV4
dFJlcXVlc3RTdG9yYWdlQWNjZXNzCiAgICAgcmV0dXJuICsrbmV4dENvbnRleHRJZDsKIH0KIAor
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9t
YWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21h
aW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJh
Y2spCit7CisgICAgYXV0byBjb250ZXh0SWQgPSBuZXh0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb250
ZXh0SWQoKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlQ2Fs
bGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIEFTU0VSVF9V
TlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgc2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6Okhhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zKHNl
c3Npb25JRCwgcmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJ
RCwgY29udGV4dElkKSwgMCk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dXBkYXRl
U3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB2YWx1ZSwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIGF1dG8g
Y29udGV4dElkID0gbmV4dFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29udGV4dElkKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAkocmV2aXNpb24gMjI1OTM0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDgg
QEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElP
TklORykKLSAgICB2b2lkIHVwZGF0ZVN0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcm
IGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9v
bCB2YWx1ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKTsK
KyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFy
dHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCB1cGRhdGVTdG9yYWdlQWNj
ZXNzRm9yUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY2FsbGJhY2spOwogI2VuZGlmCiAKICAgICB2b2lkIHByb2Nlc3NSZWFkeVRvU3Vz
cGVuZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDIyNTkzNCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTQxLDYgKzExNDEsMTIgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjp1
cGRhdGVQcmV2YWxlbnREbwogICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvTmV0d29ya2luZ1By
b2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpVcGRhdGVQcmV2YWxlbnREb21haW5zVG9Q
YXJ0aXRpb25PckJsb2NrQ29va2llcyhtX3Nlc3Npb25JRCwgZG9tYWluc1RvUGFydGl0aW9uLCBk
b21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBzaG91bGRD
bGVhckZpcnN0ID09IFNob3VsZENsZWFyRmlyc3Q6OlllcykpOwogfQogCit2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxlcihjb25z
dCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4s
IHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjaykKK3sKKyAgICBmb3IgKGF1dG8mIHBy
b2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCisgICAgICAgIHByb2Nlc3NQb29sLT5uZXR3b3Jr
UHJvY2VzcygpLT5oYXNTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWlucyhtX3Nlc3Npb25J
RCwgcmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCwgV1RG
TW92ZShjYWxsYmFjaykpOworfQorCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnVwZGF0ZVN0b3Jh
Z2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxlcihjb25zdCBTdHJpbmcmIHJlc291cmNl
RG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB2YWx1ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wgd2FzR3JhbnRlZCk+JiYgY2FsbGJhY2spCiB7CiAgICAgZm9yIChhdXRvJiBwcm9jZXNz
UG9vbCA6IHByb2Nlc3NQb29scygpKQpAQCAtMTM0Miw3ICsxMzQ4LDkgQEAgdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjplbmFibGVSZXNvdXJjZUxvYQogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0Vf
UEFSVElUSU9OSU5HKQogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKG1fY29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKGNhbGxiYWNrKSwgW3RoaXNdIChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9t
YWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0
aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCkgewogICAgICAg
ICB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhkb21haW5z
VG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9y
QmxvY2ssIHNob3VsZENsZWFyRmlyc3QpOwotICAgIH0sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyldIChjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJp
bmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
Ym9vbCB2YWx1ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wgd2FzR3JhbnRlZCk+JiYgY2FsbGJh
Y2spIHsKKyAgICB9LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoY29u
c3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWlu
LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spIHsKKyAgICAgICAgaGFzU3RvcmFn
ZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnNIYW5kbGVyKHJlc291cmNlRG9tYWluLCBmaXJzdFBh
cnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICB9LCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoY29uc3QgU3RyaW5nJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdmFsdWUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sIHdhc0dyYW50ZWQpPiYmIGNhbGxiYWNrKSB7CiAgICAgICAgIHVwZGF0ZVN0b3Jh
Z2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxlcihyZXNvdXJjZURvbWFpbiwgZmlyc3RQ
YXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCB2YWx1ZSwgV1RGTW92ZShjYWxsYmFjaykpOwog
ICAgIH0sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlKSB7CiAgICAgICAgIHJlbW92ZVByZXZhbGVudERv
bWFpbnMoZG9tYWluc1RvUmVtb3ZlKTsKQEAgLTE0MDEsMTQgKzE0MDksMTQgQEAgdm9pZCBXZWJz
aXRlRGF0YVN0b3JlOjpyZW1vdmVQZW5kaW5nQ29vawogICAgIG1fcGVuZGluZ0Nvb2tpZXMucmVt
b3ZlKGNvb2tpZSk7CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aGFzU3RvcmFnZUFjY2Vz
cyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2Vic2l0ZURhdGFT
dG9yZTo6aGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRv
cEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIGlmICghcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSkgewogICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LT5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BGcmFt
ZUhvc3QpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LT5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BGcmFt
ZUhvc3QpLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KICAgICAKIHZv
aWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJh
bWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjaykK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDIyNTkzNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTE2LDYgKzExNiw3IEBAIHB1YmxpYzoKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFS
VElUSU9OSU5HKQogICAgIHZvaWQgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JC
bG9ja0Nvb2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZpcnN0KTsKKyAg
ICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxlcihjb25zdCBT
dHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjayk7CiAgICAgdm9pZCB1cGRhdGVTdG9yYWdl
QWNjZXNzRm9yUHJldmFsZW50RG9tYWluc0hhbmRsZXIoY29uc3QgU3RyaW5nJiByZXNvdXJjZURv
bWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIGJvb2wgdmFsdWUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sIHdhc0dyYW50ZWQpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIHJlbW92ZVByZXZhbGVudERv
bWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwogI2VuZGlmCkBAIC0xNDQsNyAr
MTQ1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
QW5kU2V0VGVzdGluZ0NhbGxiYWNrKEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYpPiYmIGNh
bGxiYWNrKTsKIAotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhv
c3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChi
b29sKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1
YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJh
Y2spOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0
LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjayk7CiAgICAg
CiAgICAgdm9pZCBzZXRCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoU3RyaW5nJiYgaWRlbnRpZmll
cikgeyBtX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcik7IH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAyMjU5MzQpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTI1Niw5ICsxMjU2LDkgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRp
ZEludmFsaWRhdGVEb2N1bQogICAgIG1fcGFnZS5maW5kQ29udHJvbGxlcigpLmRpZEludmFsaWRh
dGVEb2N1bWVudE1hcmtlclJlY3RzKCk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpoYXNT
dG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKQordm9pZCBX
ZWJDaHJvbWVDbGllbnQ6Omhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBT
dHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjaykKIHsKLSAgICBt
X3BhZ2UuaGFzU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lSG9zdCksIFdURk1vdmUodG9w
RnJhbWVIb3N0KSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIG1fcGFnZS5oYXNTdG9yYWdlQWNj
ZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3QpLCBmcmFtZUlE
LCBwYWdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9w
RnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5oCShyZXZpc2lvbiAyMjU5MzQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0OSw3ICszNDks
NyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJrZXJSZWN0
cygpIGZpbmFsOwogCi0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1l
SG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQg
KGJvb2wpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3Vi
RnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJikgZmluYWw7
CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0
cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmKSBmaW5hbDsKIAogICAgIFN0cmlu
ZyBtX2NhY2hlZFRvb2xUaXA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjI1OTM0KQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3NzgsMTMgKzU3
NzgsMTMgQEAgc3RhdGljIHVpbnQ2NF90IG5leHRSZXF1ZXN0U3RvcmFnZUFjY2VzcwogICAgIHJl
dHVybiArK25leHRDb250ZXh0SWQ7CiB9CiAKLXZvaWQgV2ViUGFnZTo6aGFzU3RvcmFnZUFjY2Vz
cyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUGFnZTo6aGFz
U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9z
dCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIGF1dG8gY29udGV4dElkID0gbmV4
dFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29udGV4dElkKCk7CiAgICAgYXV0byBhZGRSZXN1bHQgPSBt
X3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwLmFkZChjb250ZXh0SWQsIFdURk1vdmUo
Y2FsbGJhY2spKTsKICAgICBBU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOwogICAgIGlmIChh
ZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKQotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Okhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZUhvc3QpLCBXVEZNb3ZlKHRv
cEZyYW1lSG9zdCksIGNvbnRleHRJZCkpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Okhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZUhvc3QpLCBXVEZNb3ZlKHRv
cEZyYW1lSG9zdCksIGZyYW1lSUQsIHBhZ2VJRCwgY29udGV4dElkKSk7CiAgICAgZWxzZQogICAg
ICAgICBjYWxsYmFjayhmYWxzZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMjU5MzQpCisrKyBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMjQsNyArMTAy
NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmRQYXJ0aWFsRWRpdG9yU3RhdGVBbmRTY2hlZHVs
ZVBvc3RMYXlvdXRVcGRhdGUoKTsKICAgICB2b2lkIGZsdXNoUGVuZGluZ0VkaXRvclN0YXRlVXBk
YXRlKCk7CiAKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0
LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9v
bCk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJG
cmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNr
KTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwg
U3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spOwogICAgIHZv
aWQgc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3JhbnRlZCwgdWludDY0X3QgY29udGV4
dElkKTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1OTM0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTctMTItMTUgIEpvaG4gV2ls
YW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcmFnZSBBY2Nlc3MgQVBJ
OiBTdG9yZSBmcmFtZS1zcGVjaWZpYyBhY2Nlc3MgaW4tbWVtb3J5IGZvciBkb2N1bWVudC5oYXNT
dG9yYWdlQWNjZXNzKCkgcmV0cmlldmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODA2ODEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1OTgyMTYx
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
Y2hhbmdlIG1ha2VzIGFuIGFzeW5jaHJvbm91cyByZXF1ZXN0IHRvIHRoZSBuZXR3b3JrIHByb2Nl
c3MKKyAgICAgICAgdG8gc2VlIGlmIHN0b3JhZ2UgYWNjZXNzIGhhcyBiZWVuIGdyYW50ZWQgZm9y
IHRoaXMgZnJhbWUsIG9uIHRoaXMKKyAgICAgICAgcGFnZSwgZm9yIHRoaXMgZG9tYWluLgorCisg
ICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9t
LXByZXZhbGVudC1kb21haW4td2l0aC1ub24tcmVjZW50LXVzZXItaW50ZXJhY3Rpb24tZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvaGFzLXN0
b3JhZ2UtYWNjZXNzLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRoLW5vbi1yZWNlbnQtdXNlci1p
bnRlcmFjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvaGFzLXN0b3JhZ2UtYWNjZXNzLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRoLXJlY2VudC11
c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9tLXByZXZhbGVudC1kb21haW4t
d2l0aC1yZWNlbnQtdXNlci1pbnRlcmFjdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL2hhcy1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUu
aHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICAgICAgTmV3IHRlc3RzIG1hcmtlZCBhcyBbIFBhc3MgXS4KKyAgICAgICAgICAg
IEFsbCBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvIHRlc3RzIG1hcmtlZCBbIEhpZ2hTaWVycmEr
IF0gc2luY2UKKyAgICAgICAgICAgIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3MoKSBub3cgcmVx
dWlyZXMgY29kZSB0aGF0IHJlbGllcyBvbiBjb29raWUKKyAgICAgICAgICAgIHBhcnRpdGlvbmlu
Zy4KKwogMjAxNy0xMi0xNCAgSm9obiBXaWxhbmRlciAgPHdpbGFuZGVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTdG9yYWdlIEFjY2VzcyBBUEk6IEltcGxlbWVudCBmcmFtZS1zcGVjaWZpYyBhY2Nl
c3MgaW4gdGhlIGRvY3VtZW50LmNvb2tpZSBsYXllcgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9tLXByZXZhbGVudC1kb21h
aW4td2l0aC1ub24tcmVjZW50LXVzZXItaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1h
Y2Nlc3MtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgtbm9uLXJlY2VudC11c2VyLWludGVyYWN0
aW9uLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLWZyb20tcHJldmFsZW50LWRvbWFpbi13
aXRoLW5vbi1yZWNlbnQtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMgdGhhdCBhIGNyb3NzLW9yaWdpbiBpZnJhbWUgZnJv
bSBhIHByZXZhbGVudCBkb21haW4gd2l0aCBub24tcmVjZW50IHVzZXIgaW50ZXJhY3Rpb24gZG9l
cyBub3QgaGF2ZSBzdG9yYWdlIGFjY2Vzcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgTm8gc3RvcmFnZSBhY2Nlc3MuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9y
YWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9tLXByZXZhbGVudC1kb21haW4td2l0aC1u
b24tcmVjZW50LXVzZXItaW50ZXJhY3Rpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLWZyb20tcHJldmFs
ZW50LWRvbWFpbi13aXRoLW5vbi1yZWNlbnQtdXNlci1pbnRlcmFjdGlvbi5odG1sCShub25leGlz
dGVudCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFn
ZS1hY2Nlc3MtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgtbm9uLXJlY2VudC11c2VyLWludGVy
YWN0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNl
cy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQ+CisgICAgICAgIGRlc2NyaXB0
aW9uKCJUZXN0cyB0aGF0IGEgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBmcm9tIGEgcHJldmFsZW50IGRv
bWFpbiB3aXRoIG5vbi1yZWNlbnQgdXNlciBpbnRlcmFjdGlvbiBkb2VzIG5vdCBoYXZlIHN0b3Jh
Z2UgYWNjZXNzLiIpOworICAgICAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworICAgICAgICB3
aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY2VpdmVNZXNzYWdlLCBmYWxzZSk7
CisKKyAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZU1lc3NhZ2UoZXZlbnQpIHsKKyAgICAgICAgICAg
IGlmIChldmVudC5vcmlnaW4gPT09ICJodHRwOi8vbG9jYWxob3N0OjgwMDAiKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigiUEFTUyIpICE9PSAtMSkKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRhLnJlcGxhY2UoIlBBU1MgIiwgIiIpKTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoZXZl
bnQuZGF0YSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0RmFpbGVk
KCJSZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSBhbiB1bmV4cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50
Lm9yaWdpbik7CisgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAibG9jYWxob3N0OjgwMDAiOworICAgICAgICBjb25z
dCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9zdFVuZGVyVGVzdCArICIvdGVtcCI7Cisg
ICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3Rp
Y3NVcmwsIHRydWUpOworICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFs
ZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0
IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7CisgICAgICAgIHRlc3RS
dW5uZXIuc2V0U3RhdGlzdGljc0hhc0hhZE5vblJlY2VudFVzZXJJbnRlcmFjdGlvbihzdGF0aXN0
aWNzVXJsLCB0cnVlKTsKKyAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc0hhc0hh
ZFVzZXJJbnRlcmFjdGlvbihzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRlc3RGYWlsZWQo
Ikhvc3QgZGlkIG5vdCBnZXQgbG9nZ2VkIGZvciB1c2VyIGludGVyYWN0aW9uLiIpOworICAgIDwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lIHNhbmRib3g9ImFsbG93LXN0b3JhZ2Ut
YWNjZXNzLWJ5LXVzZXItYWN0aXZhdGlvbiBhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2lu
IGFsbG93LW1vZGFscyIgaWQ9InRoZUlmcmFtZSIgc3JjPSJodHRwOi8vbG9jYWxob3N0OjgwMDAv
c3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvaGFzLXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS5odG1sI3Bv
bGljeVNob3VsZE5vdEdyYW50QWNjZXNzIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0
b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRo
LXJlY2VudC11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLWZyb20t
cHJldmFsZW50LWRvbWFpbi13aXRoLXJlY2VudC11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVkLnR4
dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3Mv
aGFzLXN0b3JhZ2UtYWNjZXNzLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRoLXJlY2VudC11c2Vy
LWludGVyYWN0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBA
CitUZXN0cyB0aGF0IGEgY3Jvc3Mtb3JpZ2luIGlmcmFtZSBmcm9tIGEgcHJldmFsZW50IGRvbWFp
biB3aXRoIHJlY2VudCB1c2VyIGludGVyYWN0aW9uIGRvZXMgaGF2ZSBzdG9yYWdlIGFjY2Vzcy4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgSGFzIHN0b3JhZ2UgYWNjZXNz
LgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nl
c3MtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgtcmVjZW50LXVzZXItaW50ZXJhY3Rpb24uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvaGFz
LXN0b3JhZ2UtYWNjZXNzLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRoLXJlY2VudC11c2VyLWlu
dGVyYWN0aW9uLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9tLXByZXZhbGVudC1kb21haW4td2l0
aC1yZWNlbnQtdXNlci1pbnRlcmFjdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MzYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0i
L2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSIvanMtdGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0
PgorICAgICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBhIGNyb3NzLW9yaWdpbiBpZnJhbWUg
ZnJvbSBhIHByZXZhbGVudCBkb21haW4gd2l0aCByZWNlbnQgdXNlciBpbnRlcmFjdGlvbiBkb2Vz
IGhhdmUgc3RvcmFnZSBhY2Nlc3MuIik7CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwor
CisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjZWl2ZU1lc3Nh
Z2UsIGZhbHNlKTsKKworICAgICAgICBmdW5jdGlvbiByZWNlaXZlTWVzc2FnZShldmVudCkgewor
ICAgICAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0gImh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIp
IHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5pbmRleE9mKCJQQVNTIikgIT09IC0x
KQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKGV2ZW50LmRhdGEucmVwbGFjZSgiUEFT
UyAiLCAiIikpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZChldmVudC5kYXRhKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAg
IHRlc3RGYWlsZWQoIlJlY2VpdmVkIGEgbWVzc2FnZSBmcm9tIGFuIHVuZXhwZWN0ZWQgb3JpZ2lu
OiAiICsgZXZlbnQub3JpZ2luKTsKKyAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAg
ICB9CisKKyAgICAgICAgY29uc3QgaG9zdFVuZGVyVGVzdCA9ICJsb2NhbGhvc3Q6ODAwMCI7Cisg
ICAgICAgIGNvbnN0IHN0YXRpc3RpY3NVcmwgPSAiaHR0cDovLyIgKyBob3N0VW5kZXJUZXN0ICsg
Ii90ZW1wIjsKKyAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3Vy
Y2Uoc3RhdGlzdGljc1VybCwgdHJ1ZSk7CisgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0YXRp
c3RpY3NQcmV2YWxlbnRSZXNvdXJjZShzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAgICAgIHRlc3RG
YWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgc2V0IGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKKyAg
ICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHN0YXRp
c3RpY3NVcmwsIHRydWUpOworICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzSGFz
SGFkVXNlckludGVyYWN0aW9uKHN0YXRpc3RpY3NVcmwpKQorICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiSG9zdCBkaWQgbm90IGdldCBsb2dnZWQgZm9yIHVzZXIgaW50ZXJhY3Rpb24uIik7CisgICAg
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc3RvcmFn
ZS1hY2Nlc3MtYnktdXNlci1hY3RpdmF0aW9uIGFsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmln
aW4gYWxsb3ctbW9kYWxzIiBpZD0idGhlSWZyYW1lIiBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAw
MC9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9oYXMtc3RvcmFnZS1hY2Nlc3MtaWZyYW1lLmh0bWwj
cG9saWN5U2hvdWxkR3JhbnRBY2Nlc3MiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3Rv
cmFnZUFjY2Vzcy9yZXNvdXJjZXMvaGFzLXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMv
aGFzLXN0b3JhZ2UtYWNjZXNzLWlmcmFtZS5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvaGFzLXN0b3JhZ2UtYWNjZXNz
LWlmcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAgQEAKKzxodG1sPgorPGhl
YWQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAgY29uc3QgcG9saWN5U2hvdWxkR3JhbnRBY2Nlc3Mg
PSBkb2N1bWVudC5sb2NhdGlvbi5oYXNoID09PSAiI3BvbGljeVNob3VsZEdyYW50QWNjZXNzIjsK
KworICAgICAgICBmdW5jdGlvbiBjaGVja0hhc1N0b3JhZ2VBY2Nlc3MoKSB7CisgICAgICAgICAg
ICB2YXIgcHJvbWlzZSA9IGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3MoKTsKKyAgICAgICAgICAg
IHByb21pc2UudGhlbigKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAoaGFzQWNjZXNzKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChoYXNBY2Nlc3MgJiYgcG9saWN5U2hvdWxkR3JhbnRBY2Nl
c3MpCisgICAgICAgICAgICAgICAgICAgICAgICB0b3AucG9zdE1lc3NhZ2UoIlBBU1MgSGFzIHN0
b3JhZ2UgYWNjZXNzLiIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiKTsKKyAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoIWhhc0FjY2VzcyAmJiAhcG9saWN5U2hvdWxkR3JhbnRBY2Nlc3MpCisg
ICAgICAgICAgICAgICAgICAgICAgICB0b3AucG9zdE1lc3NhZ2UoIlBBU1MgTm8gc3RvcmFnZSBh
Y2Nlc3MuIiwgImh0dHA6Ly8xMjcuMC4wLjE6ODAwMCIpOworICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICB0b3AucG9zdE1lc3NhZ2UoIkZBSUwgIiArCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhhc0FjY2VzcyA/ICJTdG9yYWdlICIgOiAiTm8g
c3RvcmFnZSAiKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFjY2VzcyB3aGVuIHRo
ZXJlIHNob3VsZCAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9saWN5U2hvdWxk
R3JhbnRBY2Nlc3MgPyAiIiA6ICJub3QgIikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJoYXZlIGJlZW4gYWNjZXNzLiIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiKTsKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChyZWFzb24pIHsKKyAgICAgICAg
ICAgICAgICAgICAgdG9wLnBvc3RNZXNzYWdlKCJGQUlMIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nl
c3MoKSB3YXMgcmVqZWN0ZWQuIFJlYXNvbjogIiArIHJlYXNvbiwgImh0dHA6Ly8xMjcuMC4wLjE6
ODAwMCIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICk7CisgICAgICAgIH0KKyAg
ICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0iY2hlY2tIYXNTdG9yYWdlQWNjZXNz
KCkiPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlvbnMJKHJldmlz
aW9uIDIyNTkzNCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvVGVzdEV4cGVjdGF0
aW9ucwkod29ya2luZyBjb3B5KQpAQCAtNzUxLDIyICs3NTEsMjQgQEAgd2Via2l0Lm9yZy9iLzE3
MjM5NyBbIERlYnVnIF0gYW5pbWF0aW9ucwogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0
aWNzL3VzZXItaW50ZXJhY3Rpb24taW4tY3Jvc3Mtb3JpZ2luLXN1Yi1mcmFtZS5odG1sIFsgUGFz
cyBdCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdXNlci1pbnRlcmFjdGlvbi1v
bmx5LXJlcG9ydGVkLW9uY2Utd2l0aGluLXNob3J0LXBlcmlvZC1vZi10aW1lLmh0bWwgWyBQYXNz
IF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy91c2VyLWludGVyYWN0aW9uLXJl
cG9ydGVkLWFmdGVyLXdlYnNpdGUtZGF0YS1yZW1vdmFsLmh0bWwgWyBQYXNzIF0KLWh0dHAvdGVz
dHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9y
aWdpbi1pZnJhbWUuaHRtbCBbIFBhc3MgXQotaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVl
c3QtYW5kLWRlbnktc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUu
aHRtbCBbIFBhc3MgXQotaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50
LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1ub24tc2FuZGJveGVkLWlmcmFtZS5odG1sIFsg
UGFzcyBdCi1odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFn
ZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbCBbIFBhc3MgXQotaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2lu
LXNhbmRib3hlZC1pZnJhbWUtd2l0aC11bmlxdWUtb3JpZ2luLmh0bWwgWyBQYXNzIF0KLWh0dHAv
dGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1z
YW5kYm94ZWQtaWZyYW1lLXdpdGhvdXQtYWxsb3ctdG9rZW4uaHRtbCBbIFBhc3MgXQotaHR0cC90
ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1vcmlnaW4taWZy
YW1lLmh0bWwgWyBQYXNzIF0KLWh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3Jh
Z2UtYWNjZXNzLXNhbWUtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0aG91dC1hbGxvdy10b2tl
bi5odG1sIFsgUGFzcyBdCi1odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdl
LWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwgWyBQYXNzIF0KLWh0dHAv
dGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9z
cy1vcmlnaW4tc2FuZGJveGVkLW5lc3RlZC1pZnJhbWUuaHRtbCBbIFBhc3MgXQotaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9y
aWdpbi1zYW5kYm94ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRoLXJlY2VudC11
c2VyLWludGVyYWN0aW9uLmh0bWwgWyBQYXNzIF0KK1sgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZGVueS1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmln
aW4taWZyYW1lLmh0bWwgWyBQYXNzIF0KK1sgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvcmVxdWVzdC1hbmQtZGVueS1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2Fu
ZGJveGVkLWlmcmFtZS5odG1sIFsgUGFzcyBdCitbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdp
bi1ub24tc2FuZGJveGVkLWlmcmFtZS5odG1sIFsgUGFzcyBdCitbIEhpZ2hTaWVycmErIF0gaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNy
b3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwgWyBQYXNzIF0KK1sgSGlnaFNpZXJyYSsg
XSBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1v
cmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRoLXVuaXF1ZS1vcmlnaW4uaHRtbCBbIFBhc3MgXQor
WyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2Ut
YWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhvdXQtYWxsb3ctdG9rZW4u
aHRtbCBbIFBhc3MgXQorWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9y
ZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLWlmcmFtZS5odG1sIFsgUGFzcyBdCitb
IEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1h
Y2Nlc3Mtc2FtZS1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLmh0
bWwgWyBQYXNzIF0KK1sgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVx
dWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwgWyBQ
YXNzIF0KK1sgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1h
bmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1uZXN0ZWQtaWZy
YW1lLmh0bWwgWyBQYXNzIF0KK1sgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hl
ZC1pZnJhbWUtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgtcmVjZW50LXVzZXItaW50ZXJhY3Rp
b24uaHRtbCBbIFBhc3MgXQogWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vz
cy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVk
LWlmcmFtZS1mcm9tLXByZXZhbGVudC1kb21haW4td2l0aC1ub24tcmVjZW50LXVzZXItaW50ZXJh
Y3Rpb24tYnV0LXRyeS1hY2Nlc3MtZnJvbS13cm9uZy1mcmFtZS5odG1sIFsgUGFzcyBdCiBbIEhp
Z2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0
b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50
LWRvbWFpbi13aXRoLW5vbi1yZWNlbnQtdXNlci1pbnRlcmFjdGlvbi1hbmQtdHJ5LWFjY2Vzcy1m
cm9tLXJpZ2h0LWZyYW1lLmh0bWwgWyBQYXNzIF0KLWh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9y
ZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlm
cmFtZS1mcm9tLXByZXZhbGVudC1kb21haW4td2l0aG91dC11c2VyLWludGVyYWN0aW9uLmh0bWwg
WyBQYXNzIF0KLWh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNz
LXRvcC1mcmFtZS5odG1sIFsgUGFzcyBdCi1odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVz
dC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRob3V0LXVz
ZXItZ2VzdHVyZS5odG1sIFsgUGFzcyBdCitbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9y
YWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1z
YW5kYm94ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRob3V0LXVzZXItaW50ZXJh
Y3Rpb24uaHRtbCBbIFBhc3MgXQorWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3RvcmFnZUFj
Y2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXRvcC1mcmFtZS5odG1sIFsgUGFzcyBdCitbIEhp
Z2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nl
c3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0aG91dC11c2VyLWdlc3R1cmUuaHRt
bCBbIFBhc3MgXQorWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMt
c3RvcmFnZS1hY2Nlc3MtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgtbm9uLXJlY2VudC11c2Vy
LWludGVyYWN0aW9uLmh0bWwgWyBQYXNzIF0KK1sgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3N0
b3JhZ2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRo
LXJlY2VudC11c2VyLWludGVyYWN0aW9uLmh0bWwgWyBQYXNzIF0KIAogd2Via2l0Lm9yZy9iLzE3
Mzg2MSBbIFJlbGVhc2UgXSBodHRwL3Rlc3RzL3dlYnJ0Yy9maWx0ZXJpbmctaWNlLWNhbmRpZGF0
ZS1zYW1lLW9yaWdpbi1mcmFtZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0KIHdlYmtpdC5vcmcvYi8x
NzM4NjEgWyBSZWxlYXNlIF0gaHR0cC90ZXN0cy93ZWJydGMvZmlsdGVyaW5nLWljZS1jYW5kaWRh
dGUtY3Jvc3Mtb3JpZ2luLWZyYW1lLmh0bWwgWyBQYXNzIFRpbWVvdXQgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>329630</attachid>
            <date>2017-12-17 19:11:45 -0800</date>
            <delta_ts>2017-12-17 19:44:58 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-180681-20171217191144.patch</filename>
            <type>text/plain</type>
            <size>48678</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNTkzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE3LTEyLTE3ICBKb2huIFdp
bGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQ
STogTWFrZSBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzKCkgcmV0cmlldmUgY3VycmVudCBzdGF0
dXMgZnJvbSB0aGUgbmV0d29yayBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODA2ODEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1OTgy
MTYxPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAg
VGVzdHM6IGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtZnJvbS1w
cmV2YWxlbnQtZG9tYWluLXdpdGgtbm9uLXJlY2VudC11c2VyLWludGVyYWN0aW9uLmh0bWwKKyAg
ICAgICAgICAgICAgIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3Mt
ZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgtcmVjZW50LXVzZXItaW50ZXJhY3Rpb24uaHRtbAor
CisgICAgICAgIFRoaXMgY2hhbmdlIG1ha2VzIGFuIGFzeW5jaHJvbm91cyByZXF1ZXN0IHRvIHRo
ZSBuZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgdG8gc2VlIGlmIHN0b3JhZ2UgYWNjZXNzIGhhcyBi
ZWVuIGdyYW50ZWQgZm9yIHRoaXMgZnJhbWUsIG9uIHRoaXMKKyAgICAgICAgcGFnZSwgZm9yIHRo
aXMgZG9tYWluLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpoYXNTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBwYWdlL0Nocm9tZUNs
aWVudC5oOgorCiAyMDE3LTEyLTE0ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTogSW1wbGVtZW50IGZyYW1lLXNwZWNpZmlj
IGFjY2VzcyBpbiB0aGUgZG9jdW1lbnQuY29va2llIGxheWVyCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHJldmlzaW9uIDIyNTkzNCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0MjMsMTUgKzc0MjMsMTUgQEAgTG9nZ2VyJiBEb2N1
bWVudDo6bG9nZ2VyKCkKICAgICByZXR1cm4gKm1fbG9nZ2VyOwogfQogCi12b2lkIERvY3VtZW50
OjpoYXNTdG9yYWdlQWNjZXNzKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcGFzc2VkUHJvbWlzZSkK
K3ZvaWQgRG9jdW1lbnQ6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQogewogICAgIEFTU0VSVChzZXR0aW5ncygpLnN0b3JhZ2VBY2Nlc3NBUElFbmFibGVk
KCkpOwogCi0gICAgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4gcHJvbWlzZShXVEZNb3ZlKHBhc3Nl
ZFByb21pc2UpKTsKLQotICAgIGlmIChtX2hhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKQor
ICAgIGlmIChtX2hhc0ZyYW1lU3BlY2lmaWNTdG9yYWdlQWNjZXNzKSB7CiAgICAgICAgIHByb21p
c2UtPnJlc29sdmU8SURMQm9vbGVhbj4odHJ1ZSk7Ci0gICAgCisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBpZiAoIW1fZnJhbWUgfHwgc2VjdXJpdHlPcmlnaW4oKS5pc1VuaXF1ZSgpKSB7
CiAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4oZmFsc2UpOwogICAgICAgICBy
ZXR1cm47CkBAIC03NDQ5LDEwICs3NDQ5LDE4IEBAIHZvaWQgRG9jdW1lbnQ6Omhhc1N0b3JhZ2VB
Y2Nlc3MoUmVmPERlZmUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIEFTU0VSVChtX2Zy
YW1lKTsKKyAgICBhdXRvIGZyYW1lSUQgPSBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFt
ZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdl
SUQoKTsKKyAgICBpZiAoIWZyYW1lSUQgfHwgIXBhZ2VJRCkgeworICAgICAgICBwcm9taXNlLT5y
ZWplY3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChQYWdlKiBwYWdlID0g
dGhpcy0+cGFnZSgpKSB7CiAgICAgICAgIGF1dG8gaWZyYW1lSG9zdCA9IHNlY3VyaXR5T3JpZ2lu
Lmhvc3QoKTsKICAgICAgICAgYXV0byB0b3BIb3N0ID0gdG9wU2VjdXJpdHlPcmlnaW4uaG9zdCgp
OwotICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5oYXNTdG9yYWdlQWNjZXNzKFdURk1v
dmUoaWZyYW1lSG9zdCksIFdURk1vdmUodG9wSG9zdCksIFtkb2N1bWVudFJlZmVyZW5jZSA9IG1f
d2Vha0ZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyksIHByb21pc2VdIChib29sIGhhc0FjY2Vz
cykgeworICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQoKS5oYXNTdG9yYWdlQWNjZXNzKFdU
Rk1vdmUoaWZyYW1lSG9zdCksIFdURk1vdmUodG9wSG9zdCksIGZyYW1lSUQudmFsdWUoKSwgcGFn
ZUlELnZhbHVlKCksIFtkb2N1bWVudFJlZmVyZW5jZSA9IG1fd2Vha0ZhY3RvcnkuY3JlYXRlV2Vh
a1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCBoYXNBY2Nlc3Mp
IHsKICAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlLmdl
dCgpOwogICAgICAgICAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgICAgICAgICByZXR1cm47
CkBAIC03NDY1LDEyICs3NDczLDEwIEBAIHZvaWQgRG9jdW1lbnQ6Omhhc1N0b3JhZ2VBY2Nlc3Mo
UmVmPERlZmUKICAgICBwcm9taXNlLT5yZWplY3QoKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwYXNzZWRQcm9taXNlKQor
dm9pZCBEb2N1bWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlKQogewogICAgIEFTU0VSVChzZXR0aW5ncygpLnN0b3JhZ2VBY2Nlc3NBUElFbmFi
bGVkKCkpOwogICAgIAotICAgIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+IHByb21pc2UoV1RGTW92
ZShwYXNzZWRQcm9taXNlKSk7Ci0gICAgCiAgICAgaWYgKG1faGFzRnJhbWVTcGVjaWZpY1N0b3Jh
Z2VBY2Nlc3MpCiAgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAgICAKQEAgLTc1MjksNyAr
NzUzNSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZjwKIAogICAg
IC8vIEZJWE1FOiBEb24ndCB1c2UgcnVuSmF2YVNjcmlwdENvbmZpcm0gYmVjYXVzZSBpdCByZXNw
b25kcyBzeW5jaHJvbm91c2x5LgogICAgIGlmICgocGFnZSAmJiBwYWdlLT5jaHJvbWUoKS5ydW5K
YXZhU2NyaXB0Q29uZmlybSgqbV9mcmFtZSwgYnVpbGRlci50b1N0cmluZygpKSkgfHwgbV9ncmFu
dFN0b3JhZ2VBY2Nlc3NPdmVycmlkZSkgewotICAgICAgICBwYWdlLT5jaHJvbWUoKS5jbGllbnQo
KS5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKGlmcmFtZUhvc3QpLCBXVEZNb3ZlKHRvcEhv
c3QpLCBmcmFtZUlELnZhbHVlKCksIHBhZ2VJRC52YWx1ZSgpLCBbZG9jdW1lbnRSZWZlcmVuY2Ug
PSBtX3dlYWtGYWN0b3J5LmNyZWF0ZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlXSAoYm9vbCB3YXNH
cmFudGVkKSB7CisgICAgICAgIHBhZ2UtPmNocm9tZSgpLmNsaWVudCgpLnJlcXVlc3RTdG9yYWdl
QWNjZXNzKFdURk1vdmUoaWZyYW1lSG9zdCksIFdURk1vdmUodG9wSG9zdCksIGZyYW1lSUQudmFs
dWUoKSwgcGFnZUlELnZhbHVlKCksIFtkb2N1bWVudFJlZmVyZW5jZSA9IG1fd2Vha0ZhY3Rvcnku
Y3JlYXRlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCB3
YXNHcmFudGVkKSB7CiAgICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBkb2N1bWVudFJl
ZmVyZW5jZS5nZXQoKTsKICAgICAgICAgICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiAy
MjU5MzQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NjcsNyArNDY3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQ
cm9jZXNzQ1BVVGltZShTZWNvbmRzLCBBY3Rpdml0eVN0YXRlRm9yQ1BVU2FtcGxpbmcpIHsgfQog
ICAgIHZpcnR1YWwgUmVmUHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgLyogZmlsZW5hbWVzICovKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGFzU3Rv
cmFnZUFjY2VzcyhTdHJpbmcmJiAvKnN1YkZyYW1lSG9zdCovLCBTdHJpbmcmJiAvKnRvcEZyYW1l
SG9zdCovLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKSB7
IGNhbGxiYWNrKGZhbHNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFN0
cmluZyYmIC8qc3ViRnJhbWVIb3N0Ki8sIFN0cmluZyYmIC8qdG9wRnJhbWVIb3N0Ki8sIHVpbnQ2
NF90IC8qZnJhbWVJRCovLCB1aW50NjRfdCAvKnBhZ2VJRCovLCBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNrKGZhbHNlKTsgfQogICAgIHZp
cnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiAvKnN1YkZyYW1lSG9zdCov
LCBTdHJpbmcmJiAvKnRvcEZyYW1lSG9zdCovLCB1aW50NjRfdCAvKmZyYW1lSUQqLywgdWludDY0
X3QgLypwYWdlSUQqLywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxs
YmFjaykgeyBjYWxsYmFjayhmYWxzZSk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRJbnNlcnRN
ZW51RWxlbWVudChIVE1MTWVudUVsZW1lbnQmKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MjU5ODcpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQzIEBACisyMDE3LTEyLTE3ICBKb2huIFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTogTWFrZSBkb2N1bWVudC5oYXNTdG9yYWdl
QWNjZXNzKCkgcmV0cmlldmUgY3VycmVudCBzdGF0dXMgZnJvbSB0aGUgbmV0d29yayBwcm9jZXNz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODA2ODEK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM1OTgyMTYxPgorCisgICAgICAgIFJldmlld2VkIGJ5
IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgbWFrZXMgYW4gYXN5bmNo
cm9ub3VzIHJlcXVlc3QgdG8gdGhlIG5ldHdvcmsgcHJvY2VzcworICAgICAgICB0byBzZWUgaWYg
c3RvcmFnZSBhY2Nlc3MgaGFzIGJlZW4gZ3JhbnRlZCBmb3IgdGhpcyBmcmFtZSwgb24gdGhpcwor
ICAgICAgICBwYWdlLCBmb3IgdGhpcyBkb21haW4uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpo
YXNTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWlucyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjp1cGRhdGVTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWlucyk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6aGFzU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnMpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpoYXNTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVE
YXRhU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxlcik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYnNpdGVEYXRhU3RvcmU6OmVuYWJsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NBbmRTZXRUZXN0aW5nQ2FsbGJhY2spOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0
YVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50
OjpoYXNTdG9yYWdlQWNjZXNzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzU3RvcmFnZUFjY2Vzcyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKwogMjAxNy0xMi0xNSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBHVEsg
YnVpbGQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmNwcAkocmV2aXNpb24gMjI1OTM0KQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw2ICszMzUsMTQg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6dXBkYXRlUHJldmFsZW50RG9tYQogICAgICAgICBuZXR3
b3JrU3RvcmFnZVNlc3Npb24tPnNldFByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tD
b29raWVzKGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRvbWFpbnNUb05laXRo
ZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCk7CiB9CiAKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5n
JiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGNvbnRleHRJZCkKK3sKKyAgICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9u
ID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQorICAg
ICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpTdG9yYWdlQWNjZXNzUmVxdWVzdFJlc3VsdChuZXR3b3JrU3RvcmFnZVNlc3Np
b24tPmlzU3RvcmFnZUFjY2Vzc0dyYW50ZWQocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21h
aW4sIGZyYW1lSUQsIHBhZ2VJRCksIGNvbnRleHRJZCksIDApOworICAgIGVsc2UKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnVwZGF0ZVN0
b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9t
YWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgc2hvdWxkR3JhbnRT
dG9yYWdlLCB1aW50NjRfdCBjb250ZXh0SWQpCiB7CiAgICAgYm9vbCBpc1N0b3JhZ2VHcmFudGVk
ID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCShyZXZpc2lvbiAyMjU5MzQpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsNyBAQCBw
dWJsaWM6CiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKICAgICB2
b2lkIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBk
b21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ssIGJvb2wgc2hvdWxkQ2xlYXJGaXJzdCk7
CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Np
b25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBh
cnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGNv
bnRleHRJZCk7CiAgICAgdm9pZCB1cGRhdGVTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWlu
cyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3Ry
aW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IGJvb2wgdmFsdWUsIHVpbnQ2NF90IGNvbnRleHRJZCk7CiAgICAgdm9pZCByZW1vdmVQcmV2YWxl
bnREb21haW5zKFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWlucyk7
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjI1OTM0KQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtODMsNiArODMsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlCiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKICAg
ICBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb1BhcnRpdGlvbiwgVmVj
dG9yPFN0cmluZz4gZG9tYWluc1RvQmxvY2ssIFZlY3RvcjxTdHJpbmc+IGRvbWFpbnNUb05laXRo
ZXJQYXJ0aXRpb25Ob3JCbG9jaywgYm9vbCBzaG91bGRDbGVhckZpcnN0KQorICAgIEhhc1N0b3Jh
Z2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3Ry
aW5nIHJlc291cmNlRG9tYWluLCBTdHJpbmcgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgVXBkYXRlU3Rv
cmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBT
dHJpbmcgcmVzb3VyY2VEb21haW4sIFN0cmluZyBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgc2hvdWxkR3JhbnRBY2Nlc3MsIHVpbnQ2NF90
IGNvbnRleHRJZCkKICAgICBSZW1vdmVQcmV2YWxlbnREb21haW5zKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgVmVjdG9yPFN0cmluZz4gZG9tYWluc1dpdGhJbnRlcmFjdGlvbik7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24g
MjI1OTM0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzE2MSw5ICs3MTYxLDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BV
UkxTY2hlbWVUYXNrKHVpbgogICAgIGl0ZXJhdG9yLT52YWx1ZS0+c3RvcFRhc2soKnRoaXMsIHRh
c2tJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6Omhhc1N0b3JhZ2VBY2Nlc3Mo
U3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IHdl
YlByb2Nlc3NDb250ZXh0SWQpCit2b2lkIFdlYlBhZ2VQcm94eTo6aGFzU3RvcmFnZUFjY2VzcyhT
dHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCB3ZWJQcm9jZXNzQ29udGV4dElkKQogewot
ICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+aGFzU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1l
SG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgW3RoaXMsIHdlYlByb2Nlc3NDb250ZXh0SWRd
IChib29sIGhhc0FjY2VzcykgeworICAgIG1fd2Vic2l0ZURhdGFTdG9yZS0+aGFzU3RvcmFnZUFj
Y2VzcyhXVEZNb3ZlKHN1YkZyYW1lSG9zdCksIFdURk1vdmUodG9wRnJhbWVIb3N0KSwgZnJhbWVJ
RCwgcGFnZUlELCBbdGhpcywgd2ViUHJvY2Vzc0NvbnRleHRJZF0gKGJvb2wgaGFzQWNjZXNzKSB7
CiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcmFnZUFjY2Vz
c1Jlc3BvbnNlKGhhc0FjY2Vzcywgd2ViUHJvY2Vzc0NvbnRleHRJZCksIG1fcGFnZUlEKTsKICAg
ICB9KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZp
c2lvbiAyMjU5MzQpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtMTIzOSw3ICsxMjM5LDcgQEAgcHVibGljOgogICAgIHZvaWQgdG91
Y2hCYXJNZW51SXRlbURhdGFSZW1vdmVkKGNvbnN0IFRvdWNoQmFyTWVudUl0ZW1EYXRhJik7CiAj
ZW5kaWYKIAotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3Qs
IFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3Qgd2ViUHJvY2Vzc0NvbnRleHRJZCk7Cisg
ICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYg
dG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IHdlYlByb2Nlc3NDb250ZXh0SWQpOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3Ry
aW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qgd2ViUHJvY2Vzc0NvbnRleHRJZCk7CiAKICNp
ZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjI1OTM0KQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC01MDgsNyArNTA4LDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAg
ICBTdGFydFVSTFNjaGVtZVRhc2soc3RydWN0IFdlYktpdDo6VVJMU2NoZW1lVGFza1BhcmFtZXRl
cnMgcGFyYW1ldGVycykKICAgICBTdG9wVVJMU2NoZW1lVGFzayh1aW50NjRfdCBoYW5kbGVySWRl
bnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIpCiAKLSAgICBIYXNTdG9yYWdlQWNjZXNz
KFN0cmluZyBzdWJGcmFtZUhvc3QsIFN0cmluZyB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGNvbnRl
eHRJRCkKKyAgICBIYXNTdG9yYWdlQWNjZXNzKFN0cmluZyBzdWJGcmFtZUhvc3QsIFN0cmluZyB0
b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
Y29udGV4dElEKQogICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyBzdWJGcmFtZUhvc3Qs
IFN0cmluZyB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgY29udGV4dElEKQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMjI1OTM0KQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQ1LDEwICsxNDUsMTEgQEAgc3RhdGljIFZlY3RvcjxPcGVyYXRpbmdEYXRlPiBt
ZXJnZU9wZXJhdAogICAgIHJldHVybiBtZXJnZWREYXRlczsKIH0KIAotV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3Ry
aW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFy
dGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFy
dGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyLCBVcGRhdGVTdG9yYWdlQWNjZXNzRm9yUHJldmFs
ZW50RG9tYWluc0hhbmRsZXImJiB1cGRhdGVTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWlu
c0hhbmRsZXIsIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYgcmVtb3ZlRG9tYWluc0hh
bmRsZXIpCitXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnksIEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBVcGRh
dGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1cGRh
dGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIsIEhhc1N0
b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIGhhc1N0b3JhZ2VBY2Nlc3NG
b3JQcmV2YWxlbnREb21haW5zSGFuZGxlciwgVXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVu
dERvbWFpbnNIYW5kbGVyJiYgdXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnNI
YW5kbGVyLCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFpbnNIYW5k
bGVyKQogICAgIDogbV9zdGF0aXN0aWNzUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBQcm9jZXNzIERhdGEgUXVldWUiLCBXb3JrUXVldWU6OlR5
cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OlV0aWxpdHkpKQogICAgICwgbV9wZXJzaXN0ZW50
U3RvcmFnZSgqdGhpcywgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkKICAgICAsIG1f
dXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyKFdU
Rk1vdmUodXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5k
bGVyKSkKKyAgICAsIG1faGFzU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnNIYW5kbGVy
KFdURk1vdmUoaGFzU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnNIYW5kbGVyKSkKICAg
ICAsIG1fdXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnNIYW5kbGVyKFdURk1v
dmUodXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnNIYW5kbGVyKSkKICAgICAs
IG1fcmVtb3ZlRG9tYWluc0hhbmRsZXIoV1RGTW92ZShyZW1vdmVEb21haW5zSGFuZGxlcikpCiAg
ICAgLCBtX2RhaWx5VGFza3NUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBlcmZvcm1EYWlseVRhc2tzKQpAQCAtMjQ1LDI2ICsyNDYs
MjUgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcwogICAgIHByb2Nl
c3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJhbWVIb3N0LCBT
dHJpbmcmJiB0b3BGcmFtZUhvc3QsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+
JiYgY2FsbGJhY2spCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3Rv
cmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwg
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChzdWJGcmFtZUhvc3QgIT0g
dG9wRnJhbWVIb3N0KTsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIAotICAg
IG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBzdWJGcmFtZVByaW1hcnlEb21haW4gPSBpc29sYXRlZFByaW1hcnlEb21haW4o
c3ViRnJhbWVIb3N0KSwgdG9wRnJhbWVQcmltYXJ5RG9tYWluID0gaXNvbGF0ZWRQcmltYXJ5RG9t
YWluKHRvcEZyYW1lSG9zdCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldICgpIG11dGFi
bGUgewotICAgICAgICAKLSAgICAgICAgYXV0byYgdG9wRnJhbWVTdGF0aXN0aWMgPSBlbnN1cmVS
ZXNvdXJjZVN0YXRpc3RpY3NGb3JQcmltYXJ5RG9tYWluKHRvcEZyYW1lUHJpbWFyeURvbWFpbik7
Ci0gICAgICAgIGlmICh0b3BGcmFtZVN0YXRpc3RpYy5zdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFt
ZU9yaWdpbnMuY29udGFpbnMoc3ViRnJhbWVQcmltYXJ5RG9tYWluKSkgewotICAgICAgICAgICAg
Y2FsbGJhY2sodHJ1ZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKworICAgIG1f
c3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBzdWJGcmFtZVByaW1hcnlEb21haW4gPSBpc29sYXRlZFByaW1hcnlEb21haW4oc3Vi
RnJhbWVIb3N0KSwgdG9wRnJhbWVQcmltYXJ5RG9tYWluID0gaXNvbGF0ZWRQcmltYXJ5RG9tYWlu
KHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIHBhZ2VJRCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIAogICAgICAgICBhdXRvJiBzdWJGcmFtZVN0YXRp
c3RpYyA9IGVuc3VyZVJlc291cmNlU3RhdGlzdGljc0ZvclByaW1hcnlEb21haW4oc3ViRnJhbWVQ
cmltYXJ5RG9tYWluKTsKICAgICAgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcyhzdWJGcmFtZVN0
YXRpc3RpYykpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgY2FsbGJhY2soIXNob3VsZFBhcnRp
dGlvbkNvb2tpZXMoc3ViRnJhbWVTdGF0aXN0aWMpKTsKKworICAgICAgICBpZiAoIXNob3VsZFBh
cnRpdGlvbkNvb2tpZXMoc3ViRnJhbWVTdGF0aXN0aWMpKSB7CisgICAgICAgICAgICBjYWxsYmFj
ayh0cnVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1faGFz
U3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnNIYW5kbGVyKHN1YkZyYW1lUHJpbWFyeURv
bWFpbiwgdG9wRnJhbWVQcmltYXJ5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY2Fs
bGJhY2spKTsKICAgICB9KTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgJKHJldmlzaW9uIDIy
NTkzNCkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSwxMSArNjEsMTIgQEAgZW51bSBjbGFzcyBT
aG91bGRDbGVhckZpcnN0OwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIGZp
bmFsIDogcHVibGljIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyIHsK
IHB1YmxpYzoKICAgICB1c2luZyBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJs
b2NrQ29va2llc0hhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Js
b2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJs
b2NrLCBTaG91bGRDbGVhckZpcnN0KT47CisgICAgdXNpbmcgSGFzU3RvcmFnZUFjY2Vzc0ZvclBy
ZXZhbGVudERvbWFpbnNIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYg
cmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCBoYXNBY2Nl
c3MpPiYmIGNhbGxiYWNrKT47CiAgICAgdXNpbmcgVXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclByZXZh
bGVudERvbWFpbnNIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYgcmVz
b3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlELCBib29sIHZhbHVlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9v
bCB3YXNHcmFudGVkKT4mJiBjYWxsYmFjayk+OwogICAgIHVzaW5nIFJlbW92ZVByZXZhbGVudERv
bWFpbnNIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYp
PjsKLSAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRl
KGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgRnVuY3Rpb248
dm9pZCAoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBVcGRhdGVQcmV2YWxlbnRE
b21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1cGRhdGVQcmV2YWxlbnRE
b21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIgPSBbXShjb25zdCBWZWN0b3I8
U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBT
aG91bGRDbGVhckZpcnN0KSB7IH0sIFVwZGF0ZVN0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21h
aW5zSGFuZGxlciYmIHVwZGF0ZVN0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxl
ciA9IFtdKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90LCB1aW50NjRfdCwg
Ym9vbCwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSB7IH0sIFJlbW92ZVByZXZhbGVudERv
bWFpbnNIYW5kbGVyJiYgcmVtb3ZlRG9tYWluc0hhbmRsZXIgPSBbXSAoY29uc3QgVmVjdG9yPFN0
cmluZz4mKSB7IH0pCisgICAgc3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnks
IEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgVXBkYXRl
UHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYgdXBkYXRl
UHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyID0gW10oY29u
c3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgU2hvdWxkQ2xlYXJGaXJzdCkgeyB9LCBIYXNTdG9yYWdlQWNjZXNzRm9yUHJldmFs
ZW50RG9tYWluc0hhbmRsZXImJiBoYXNTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWluc0hh
bmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0
X3QsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJikgeyB9LCBVcGRhdGVTdG9yYWdlQWNjZXNz
Rm9yUHJldmFsZW50RG9tYWluc0hhbmRsZXImJiB1cGRhdGVTdG9yYWdlQWNjZXNzRm9yUHJldmFs
ZW50RG9tYWluc0hhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50
NjRfdCwgdWludDY0X3QsIGJvb2wsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJikgeyB9LCBS
ZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFpbnNIYW5kbGVyID0gW10g
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyB9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnksIFdURk1vdmUodGVzdGluZ0NhbGxiYWNrKSwgV1RGTW92ZSh1cGRhdGVQ
cmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIpLCBXVEZNb3Zl
KHVwZGF0ZVN0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxlciksIFdURk1vdmUo
cmVtb3ZlRG9tYWluc0hhbmRsZXIpKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5LCBXVEZNb3ZlKHRlc3RpbmdDYWxsYmFjayksIFdURk1vdmUodXBkYXRlUHJldmFsZW50RG9t
YWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyKSwgV1RGTW92ZShoYXNTdG9yYWdl
QWNjZXNzRm9yUHJldmFsZW50RG9tYWluc0hhbmRsZXIpLCBXVEZNb3ZlKHVwZGF0ZVN0b3JhZ2VB
Y2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxlciksIFdURk1vdmUocmVtb3ZlRG9tYWluc0hh
bmRsZXIpKSk7CiAgICAgfQogCiAgICAgfldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgp
OwpAQCAtODEsNyArODIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmIG9y
aWdpbnMpOwogCi0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9z
dCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJv
b2wpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3Vi
RnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFj
ayk7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3Qs
IFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKTsKICAgICB2
b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ2FsbGJhY2soYm9vbCB3YXNHcmFudGVkLCB1aW50NjRf
dCBjb250ZXh0SWQpOwogCkBAIC0xNDEsNyArMTQyLDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9n
VGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0
aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYsIFVwZGF0ZVN0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxl
bnREb21haW5zSGFuZGxlciYmLCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmKTsKKyAg
ICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJiwgRnVuY3Rpb248
dm9pZChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ssIFVwZGF0ZVByZXZhbGVudERv
bWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciYmLCBIYXNTdG9yYWdlQWNjZXNz
Rm9yUHJldmFsZW50RG9tYWluc0hhbmRsZXImJiwgVXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclByZXZh
bGVudERvbWFpbnNIYW5kbGVyJiYsIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYpOwog
CiAgICAgdm9pZCByZW1vdmVEYXRhUmVjb3JkcygpOwogCkBAIC0xOTQsNiArMTk1LDcgQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4gbV9vcGVyYXRpbmdEYXRlczsKIAogICAg
IFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciBt
X3VwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlcjsK
KyAgICBIYXNTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWluc0hhbmRsZXIgbV9oYXNTdG9y
YWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWluc0hhbmRsZXI7CiAgICAgVXBkYXRlU3RvcmFnZUFj
Y2Vzc0ZvclByZXZhbGVudERvbWFpbnNIYW5kbGVyIG1fdXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclBy
ZXZhbGVudERvbWFpbnNIYW5kbGVyOwogICAgIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVy
IG1fcmVtb3ZlRG9tYWluc0hhbmRsZXI7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24g
MjI1OTM0KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA4LDYgKzQwOCwxNCBAQCBzdGF0aWMgdWlu
dDY0X3QgbmV4dFJlcXVlc3RTdG9yYWdlQWNjZXNzCiAgICAgcmV0dXJuICsrbmV4dENvbnRleHRJ
ZDsKIH0KIAordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpoYXNTdG9yYWdlQWNjZXNzRm9yUHJl
dmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgcmVz
b3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY2FsbGJhY2spCit7CisgICAgYXV0byBjb250ZXh0SWQgPSBuZXh0UmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NDb250ZXh0SWQoKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9IG1fc3RvcmFnZUFjY2Vzc1Jl
c3BvbnNlQ2FsbGJhY2tNYXAuYWRkKGNvbnRleHRJZCwgV1RGTW92ZShjYWxsYmFjaykpOworICAg
IEFTU0VSVF9VTlVTRUQoYWRkUmVzdWx0LCBhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CisgICAgc2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okhhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnRE
b21haW5zKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1l
SUQsIHBhZ2VJRCwgY29udGV4dElkKSwgMCk7Cit9CisKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6dXBkYXRlU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnMoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZp
cnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB2
YWx1ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogewog
ICAgIGF1dG8gY29udGV4dElkID0gbmV4dFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29udGV4dElkKCk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjI1OTM0KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4
LDcgKzc4LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdF
X1BBUlRJVElPTklORykKLSAgICB2b2lkIHVwZGF0ZVN0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnRE
b21haW5zKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25z
dCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgYm9vbCB2YWx1ZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNh
bGxiYWNrKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcm
IGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCB1cGRhdGVT
dG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWlucyhQQUw6OlNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spOwogI2VuZGlmCiAKICAgICB2b2lkIHByb2Nlc3NS
ZWFkeVRvU3VzcGVuZCgpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJldmlzaW9uIDIyNTkzNCkK
KysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQxLDYgKzExNDEsMTIgQEAgdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjp1cGRhdGVQcmV2YWxlbnREbwogICAgICAgICBwcm9jZXNzUG9vbC0+c2VuZFRvTmV0
d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpVcGRhdGVQcmV2YWxlbnRE
b21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcyhtX3Nlc3Npb25JRCwgZG9tYWluc1RvUGFy
dGl0aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2Nr
LCBzaG91bGRDbGVhckZpcnN0ID09IFNob3VsZENsZWFyRmlyc3Q6OlllcykpOwogfQogCit2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFu
ZGxlcihjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFy
dHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjaykKK3sKKyAgICBmb3Ig
KGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCisgICAgICAgIHByb2Nlc3NQb29s
LT5uZXR3b3JrUHJvY2VzcygpLT5oYXNTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWlucyht
X3Nlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBh
Z2VJRCwgV1RGTW92ZShjYWxsYmFjaykpOworfQorCiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnVw
ZGF0ZVN0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxlcihjb25zdCBTdHJpbmcm
IHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCB2YWx1ZSwgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wgd2FzR3JhbnRlZCk+JiYgY2FsbGJhY2spCiB7CiAgICAgZm9yIChhdXRv
JiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scygpKQpAQCAtMTM0Miw3ICsxMzQ4LDkgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjplbmFibGVSZXNvdXJjZUxvYQogI2lmIEhBVkUoQ0ZORVRXT1JL
X1NUT1JBR0VfUEFSVElUSU9OSU5HKQogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKG1fY29uZmlndXJhdGlvbi5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKGNhbGxiYWNrKSwgW3RoaXNdIChj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvQmxvY2ssIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0
aGVyUGFydGl0aW9uTm9yQmxvY2ssIFNob3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCkg
ewogICAgICAgICB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2ll
cyhkb21haW5zVG9QYXJ0aXRpb24sIGRvbWFpbnNUb0Jsb2NrLCBkb21haW5zVG9OZWl0aGVyUGFy
dGl0aW9uTm9yQmxvY2ssIHNob3VsZENsZWFyRmlyc3QpOwotICAgIH0sIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBj
b25zdCBTdHJpbmcmIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgYm9vbCB2YWx1ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKGJvb2wgd2FzR3JhbnRlZCk+
JiYgY2FsbGJhY2spIHsKKyAgICB9LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpXSAoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBh
cnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spIHsKKyAgICAgICAg
aGFzU3RvcmFnZUFjY2Vzc0ZvclByZXZhbGVudERvbWFpbnNIYW5kbGVyKHJlc291cmNlRG9tYWlu
LCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsK
KyAgICB9LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoY29uc3QgU3Ry
aW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdmFsdWUsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPiYmIGNhbGxiYWNrKSB7CiAgICAgICAgIHVw
ZGF0ZVN0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxlcihyZXNvdXJjZURvbWFp
biwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCB2YWx1ZSwgV1RGTW92ZShjYWxs
YmFjaykpOwogICAgIH0sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlKSB7CiAgICAgICAgIHJlbW92ZVBy
ZXZhbGVudERvbWFpbnMoZG9tYWluc1RvUmVtb3ZlKTsKQEAgLTE0MDEsMTQgKzE0MDksMTQgQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVQZW5kaW5nQ29vawogICAgIG1fcGVuZGluZ0Nv
b2tpZXMucmVtb3ZlKGNvb2tpZSk7CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6aGFzU3Rv
cmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6aGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0
cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIGlm
ICghcmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSkgewogICAgICAgICBjYWxsYmFjayhm
YWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RGTW92
ZSh0b3BGcmFtZUhvc3QpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgbV9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzLT5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RGTW92
ZSh0b3BGcmFtZUhvc3QpLCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0K
ICAgICAKIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5n
JiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBj
YWxsYmFjaykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHJldmlzaW9uIDIyNTkzNCkKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTE2LDYgKzExNiw3IEBAIHB1YmxpYzoKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NU
T1JBR0VfUEFSVElUSU9OSU5HKQogICAgIHZvaWQgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFy
dGl0aW9uT3JCbG9ja0Nvb2tpZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRp
dGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZp
cnN0KTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3NGb3JQcmV2YWxlbnREb21haW5zSGFuZGxl
cihjb25zdCBTdHJpbmcmIHJlc291cmNlRG9tYWluLCBjb25zdCBTdHJpbmcmIGZpcnN0UGFydHlE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjayk7CiAgICAgdm9pZCB1cGRh
dGVTdG9yYWdlQWNjZXNzRm9yUHJldmFsZW50RG9tYWluc0hhbmRsZXIoY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIGJvb2wgdmFsdWUsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sIHdhc0dyYW50ZWQpPiYmIGNhbGxiYWNrKTsKICAgICB2b2lkIHJlbW92ZVBy
ZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnMpOwogI2VuZGlmCkBA
IC0xNDQsNyArMTQ1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBlbmFibGVSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzQW5kU2V0VGVzdGluZ0NhbGxiYWNrKEZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmlu
ZyYpPiYmIGNhbGxiYWNrKTsKIAotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBz
dWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkIChib29sKT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFN0
cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+
JiYgY2FsbGJhY2spOwogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3Vi
RnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFj
ayk7CiAgICAgCiAgICAgdm9pZCBzZXRCb3VuZEludGVyZmFjZUlkZW50aWZpZXIoU3RyaW5nJiYg
aWRlbnRpZmllcikgeyBtX2JvdW5kSW50ZXJmYWNlSWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRp
Zmllcik7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCShyZXZpc2lvbiAyMjU5MzQpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1Niw5ICsxMjU2LDkgQEAgdm9pZCBXZWJDaHJvbWVD
bGllbnQ6OmRpZEludmFsaWRhdGVEb2N1bQogICAgIG1fcGFnZS5maW5kQ29udHJvbGxlcigpLmRp
ZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJlY3RzKCk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9w
RnJhbWVIb3N0LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNr
KQordm9pZCBXZWJDaHJvbWVDbGllbnQ6Omhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3ViRnJh
bWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjaykK
IHsKLSAgICBtX3BhZ2UuaGFzU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lSG9zdCksIFdU
Rk1vdmUodG9wRnJhbWVIb3N0KSwgV1RGTW92ZShjYWxsYmFjaykpOworICAgIG1fcGFnZS5oYXNT
dG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVIb3N0KSwgV1RGTW92ZSh0b3BGcmFtZUhvc3Qp
LCBmcmFtZUlELCBwYWdlSUQsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJDaHJv
bWVDbGllbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3Ry
aW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5oCShyZXZpc2lvbiAyMjU5MzQpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
OSw3ICszNDksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRJbnZhbGlkYXRlRG9jdW1lbnRN
YXJrZXJSZWN0cygpIGZpbmFsOwogCi0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYm
IHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCBXVEY6OkNvbXBsZXRpb25IYW5k
bGVyPHZvaWQgKGJvb2wpPiYmKSBmaW5hbDsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3Ry
aW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4m
JikgZmluYWw7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFt
ZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmKSBmaW5hbDsKIAog
ICAgIFN0cmluZyBtX2NhY2hlZFRvb2xUaXA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNpb24gMjI1OTM0KQorKysgU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3
NzgsMTMgKzU3NzgsMTMgQEAgc3RhdGljIHVpbnQ2NF90IG5leHRSZXF1ZXN0U3RvcmFnZUFjY2Vz
cwogICAgIHJldHVybiArK25leHRDb250ZXh0SWQ7CiB9CiAKLXZvaWQgV2ViUGFnZTo6aGFzU3Rv
cmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkIChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2Vi
UGFnZTo6aGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRv
cEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYmIGNhbGxiYWNrKQogewogICAgIGF1dG8gY29udGV4
dElkID0gbmV4dFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29udGV4dElkKCk7CiAgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX3N0b3JhZ2VBY2Nlc3NSZXNwb25zZUNhbGxiYWNrTWFwLmFkZChjb250ZXh0SWQs
IFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBBU1NFUlQoYWRkUmVzdWx0LmlzTmV3RW50cnkpOwog
ICAgIGlmIChhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKQotICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6Okhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZUhvc3QpLCBX
VEZNb3ZlKHRvcEZyYW1lSG9zdCksIGNvbnRleHRJZCkpOworICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6Okhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZUhvc3QpLCBX
VEZNb3ZlKHRvcEZyYW1lSG9zdCksIGZyYW1lSUQsIHBhZ2VJRCwgY29udGV4dElkKSk7CiAgICAg
ZWxzZQogICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMjU5MzQpCisrKyBTb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
MjQsNyArMTAyNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmRQYXJ0aWFsRWRpdG9yU3RhdGVB
bmRTY2hlZHVsZVBvc3RMYXlvdXRVcGRhdGUoKTsKICAgICB2b2lkIGZsdXNoUGVuZGluZ0VkaXRv
clN0YXRlVXBkYXRlKCk7CiAKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nJiYgc3Vi
RnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2spOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhTdHJp
bmcmJiBzdWJGcmFtZUhvc3QsIFN0cmluZyYmIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQgKGJvb2wpPiYm
IGNhbGxiYWNrKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN0cmluZyYmIHN1YkZy
YW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCAoYm9vbCk+JiYgY2FsbGJhY2sp
OwogICAgIHZvaWQgc3RvcmFnZUFjY2Vzc1Jlc3BvbnNlKGJvb2wgd2FzR3JhbnRlZCwgdWludDY0
X3QgY29udGV4dElkKTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjI1OTM0KQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTctMTItMTcg
IEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBhcHBsZS5jb20+CisKKyAgICAgICAgU3RvcmFnZSBB
Y2Nlc3MgQVBJOiBNYWtlIGRvY3VtZW50Lmhhc1N0b3JhZ2VBY2Nlc3MoKSByZXRyaWV2ZSBjdXJy
ZW50IHN0YXR1cyBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MDY4MQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMzU5ODIxNjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKwor
ICAgICAgICBUaGlzIGNoYW5nZSBtYWtlcyBhbiBhc3luY2hyb25vdXMgcmVxdWVzdCB0byB0aGUg
bmV0d29yayBwcm9jZXNzCisgICAgICAgIHRvIHNlZSBpZiBzdG9yYWdlIGFjY2VzcyBoYXMgYmVl
biBncmFudGVkIGZvciB0aGlzIGZyYW1lLCBvbiB0aGlzCisgICAgICAgIHBhZ2UsIGZvciB0aGlz
IGRvbWFpbi4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFn
ZS1hY2Nlc3MtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgtbm9uLXJlY2VudC11c2VyLWludGVy
YWN0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdl
QWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9tLXByZXZhbGVudC1kb21haW4td2l0aC1ub24t
cmVjZW50LXVzZXItaW50ZXJhY3Rpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9tLXByZXZhbGVudC1kb21haW4t
d2l0aC1yZWNlbnQtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtZnJvbS1wcmV2
YWxlbnQtZG9tYWluLXdpdGgtcmVjZW50LXVzZXItaW50ZXJhY3Rpb24uaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jlc291cmNlcy9oYXMtc3RvcmFnZS1h
Y2Nlc3MtaWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvVGVz
dEV4cGVjdGF0aW9uczoKKyAgICAgICAgICAgIE5ldyB0ZXN0cyBtYXJrZWQgYXMgWyBQYXNzIF0u
CisgICAgICAgICAgICBBbGwgaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzLyB0ZXN0cyBtYXJrZWQg
WyBIaWdoU2llcnJhKyBdIHNpbmNlCisgICAgICAgICAgICBkb2N1bWVudC5oYXNTdG9yYWdlQWNj
ZXNzKCkgbm93IHJlcXVpcmVzIGNvZGUgdGhhdCByZWxpZXMgb24gY29va2llCisgICAgICAgICAg
ICBwYXJ0aXRpb25pbmcuCisKIDIwMTctMTItMTQgIEpvaG4gV2lsYW5kZXIgIDx3aWxhbmRlckBh
cHBsZS5jb20+CiAKICAgICAgICAgU3RvcmFnZSBBY2Nlc3MgQVBJOiBJbXBsZW1lbnQgZnJhbWUt
c3BlY2lmaWMgYWNjZXNzIGluIHRoZSBkb2N1bWVudC5jb29raWUgbGF5ZXIKSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtZnJvbS1w
cmV2YWxlbnQtZG9tYWluLXdpdGgtbm9uLXJlY2VudC11c2VyLWludGVyYWN0aW9uLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3Mv
aGFzLXN0b3JhZ2UtYWNjZXNzLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRoLW5vbi1yZWNlbnQt
dXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9tLXByZXZh
bGVudC1kb21haW4td2l0aC1ub24tcmVjZW50LXVzZXItaW50ZXJhY3Rpb24tZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRoYXQgYSBjcm9zcy1vcmln
aW4gaWZyYW1lIGZyb20gYSBwcmV2YWxlbnQgZG9tYWluIHdpdGggbm9uLXJlY2VudCB1c2VyIGlu
dGVyYWN0aW9uIGRvZXMgbm90IGhhdmUgc3RvcmFnZSBhY2Nlc3MuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIE5vIHN0b3JhZ2UgYWNjZXNzLgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtZnJvbS1wcmV2YWxlbnQt
ZG9tYWluLXdpdGgtbm9uLXJlY2VudC11c2VyLWludGVyYWN0aW9uLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vz
cy1mcm9tLXByZXZhbGVudC1kb21haW4td2l0aC1ub24tcmVjZW50LXVzZXItaW50ZXJhY3Rpb24u
aHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvaGFzLXN0b3JhZ2UtYWNjZXNzLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRoLW5vbi1yZWNl
bnQtdXNlci1pbnRlcmFjdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzYgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iL2pzLXRl
c3QtcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvanMt
dGVzdC1yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAg
ICAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCBhIGNyb3NzLW9yaWdpbiBpZnJhbWUgZnJvbSBh
IHByZXZhbGVudCBkb21haW4gd2l0aCBub24tcmVjZW50IHVzZXIgaW50ZXJhY3Rpb24gZG9lcyBu
b3QgaGF2ZSBzdG9yYWdlIGFjY2Vzcy4iKTsKKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7
CisKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWNlaXZlTWVz
c2FnZSwgZmFsc2UpOworCisgICAgICAgIGZ1bmN0aW9uIHJlY2VpdmVNZXNzYWdlKGV2ZW50KSB7
CisgICAgICAgICAgICBpZiAoZXZlbnQub3JpZ2luID09PSAiaHR0cDovL2xvY2FsaG9zdDo4MDAw
IikgeworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmluZGV4T2YoIlBBU1MiKSAhPT0g
LTEpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoZXZlbnQuZGF0YS5yZXBsYWNlKCJQ
QVNTICIsICIiKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB0
ZXN0RmFpbGVkKGV2ZW50LmRhdGEpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiUmVjZWl2ZWQgYSBtZXNzYWdlIGZyb20gYW4gdW5leHBlY3RlZCBvcmln
aW46ICIgKyBldmVudC5vcmlnaW4pOworICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAg
ICAgIH0KKworICAgICAgICBjb25zdCBob3N0VW5kZXJUZXN0ID0gImxvY2FsaG9zdDo4MDAwIjsK
KyAgICAgICAgY29uc3Qgc3RhdGlzdGljc1VybCA9ICJodHRwOi8vIiArIGhvc3RVbmRlclRlc3Qg
KyAiL3RlbXAiOworICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZShzdGF0aXN0aWNzVXJsLCB0cnVlKTsKKyAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3Rh
dGlzdGljc1ByZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwpKQorICAgICAgICAgICAgdGVz
dEZhaWxlZCgiSG9zdCBkaWQgbm90IGdldCBzZXQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOwor
ICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNIYWROb25SZWNlbnRVc2VySW50ZXJh
Y3Rpb24oc3RhdGlzdGljc1VybCwgdHJ1ZSk7CisgICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0
YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24oc3RhdGlzdGljc1VybCkpCisgICAgICAgICAg
ICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IGxvZ2dlZCBmb3IgdXNlciBpbnRlcmFjdGlv
bi4iKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBzYW5kYm94PSJh
bGxvdy1zdG9yYWdlLWFjY2Vzcy1ieS11c2VyLWFjdGl2YXRpb24gYWxsb3ctc2NyaXB0cyBhbGxv
dy1zYW1lLW9yaWdpbiBhbGxvdy1tb2RhbHMiIGlkPSJ0aGVJZnJhbWUiIHNyYz0iaHR0cDovL2xv
Y2FsaG9zdDo4MDAwL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL2hhcy1zdG9yYWdlLWFjY2Vzcy1p
ZnJhbWUuaHRtbCNwb2xpY3lTaG91bGROb3RHcmFudEFjY2VzcyI+PC9pZnJhbWU+Cis8L2JvZHk+
Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9tLXByZXZhbGVu
dC1kb21haW4td2l0aC1yZWNlbnQtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdl
LWFjY2Vzcy1mcm9tLXByZXZhbGVudC1kb21haW4td2l0aC1yZWNlbnQtdXNlci1pbnRlcmFjdGlv
bi1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
dG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9tLXByZXZhbGVudC1kb21haW4td2l0
aC1yZWNlbnQtdXNlci1pbnRlcmFjdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMCBAQAorVGVzdHMgdGhhdCBhIGNyb3NzLW9yaWdpbiBpZnJhbWUgZnJvbSBhIHBy
ZXZhbGVudCBkb21haW4gd2l0aCByZWNlbnQgdXNlciBpbnRlcmFjdGlvbiBkb2VzIGhhdmUgc3Rv
cmFnZSBhY2Nlc3MuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIEhhcyBz
dG9yYWdlIGFjY2Vzcy4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBD
T01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvaGFz
LXN0b3JhZ2UtYWNjZXNzLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRoLXJlY2VudC11c2VyLWlu
dGVyYWN0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zdG9y
YWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9tLXByZXZhbGVudC1kb21haW4td2l0aC1y
ZWNlbnQtdXNlci1pbnRlcmFjdGlvbi5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9oYXMtc3RvcmFnZS1hY2Nlc3MtZnJvbS1wcmV2YWxl
bnQtZG9tYWluLXdpdGgtcmVjZW50LXVzZXItaW50ZXJhY3Rpb24uaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAg
PHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL3VpLWhlbHBlci5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdD4KKyAgICAgICAgZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgYSBjcm9zcy1v
cmlnaW4gaWZyYW1lIGZyb20gYSBwcmV2YWxlbnQgZG9tYWluIHdpdGggcmVjZW50IHVzZXIgaW50
ZXJhY3Rpb24gZG9lcyBoYXZlIHN0b3JhZ2UgYWNjZXNzLiIpOworICAgICAgICBqc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKKworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIs
IHJlY2VpdmVNZXNzYWdlLCBmYWxzZSk7CisKKyAgICAgICAgZnVuY3Rpb24gcmVjZWl2ZU1lc3Nh
Z2UoZXZlbnQpIHsKKyAgICAgICAgICAgIGlmIChldmVudC5vcmlnaW4gPT09ICJodHRwOi8vbG9j
YWxob3N0OjgwMDAiKSB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuaW5kZXhPZigi
UEFTUyIpICE9PSAtMSkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChldmVudC5kYXRh
LnJlcGxhY2UoIlBBU1MgIiwgIiIpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoZXZlbnQuZGF0YSk7CisgICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgICAgICB0ZXN0RmFpbGVkKCJSZWNlaXZlZCBhIG1lc3NhZ2UgZnJvbSBhbiB1bmV4
cGVjdGVkIG9yaWdpbjogIiArIGV2ZW50Lm9yaWdpbik7CisgICAgICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbnN0IGhvc3RVbmRlclRlc3QgPSAibG9jYWxo
b3N0OjgwMDAiOworICAgICAgICBjb25zdCBzdGF0aXN0aWNzVXJsID0gImh0dHA6Ly8iICsgaG9z
dFVuZGVyVGVzdCArICIvdGVtcCI7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1By
ZXZhbGVudFJlc291cmNlKHN0YXRpc3RpY3NVcmwsIHRydWUpOworICAgICAgICBpZiAoIXRlc3RS
dW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uoc3RhdGlzdGljc1VybCkpCisgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IGRpZCBub3QgZ2V0IHNldCBhcyBwcmV2YWxlbnQgcmVz
b3VyY2UuIik7CisgICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRl
cmFjdGlvbihzdGF0aXN0aWNzVXJsLCB0cnVlKTsKKyAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlz
U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbihzdGF0aXN0aWNzVXJsKSkKKyAgICAgICAg
ICAgIHRlc3RGYWlsZWQoIkhvc3QgZGlkIG5vdCBnZXQgbG9nZ2VkIGZvciB1c2VyIGludGVyYWN0
aW9uLiIpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lIHNhbmRib3g9
ImFsbG93LXN0b3JhZ2UtYWNjZXNzLWJ5LXVzZXItYWN0aXZhdGlvbiBhbGxvdy1zY3JpcHRzIGFs
bG93LXNhbWUtb3JpZ2luIGFsbG93LW1vZGFscyIgaWQ9InRoZUlmcmFtZSIgc3JjPSJodHRwOi8v
bG9jYWxob3N0OjgwMDAvc3RvcmFnZUFjY2Vzcy9yZXNvdXJjZXMvaGFzLXN0b3JhZ2UtYWNjZXNz
LWlmcmFtZS5odG1sI3BvbGljeVNob3VsZEdyYW50QWNjZXNzIj48L2lmcmFtZT4KKzwvYm9keT4K
KzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL2hhcy1zdG9yYWdlLWFjY2Vzcy1pZnJh
bWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nl
c3MvcmVzb3VyY2VzL2hhcy1zdG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVzb3VyY2VzL2hhcy1z
dG9yYWdlLWFjY2Vzcy1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMwIEBA
Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGNvbnN0IHBvbGljeVNob3Vs
ZEdyYW50QWNjZXNzID0gZG9jdW1lbnQubG9jYXRpb24uaGFzaCA9PT0gIiNwb2xpY3lTaG91bGRH
cmFudEFjY2VzcyI7CisKKyAgICAgICAgZnVuY3Rpb24gY2hlY2tIYXNTdG9yYWdlQWNjZXNzKCkg
eworICAgICAgICAgICAgdmFyIHByb21pc2UgPSBkb2N1bWVudC5oYXNTdG9yYWdlQWNjZXNzKCk7
CisgICAgICAgICAgICBwcm9taXNlLnRoZW4oCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gKGhh
c0FjY2VzcykgeworICAgICAgICAgICAgICAgICAgICBpZiAoaGFzQWNjZXNzICYmIHBvbGljeVNo
b3VsZEdyYW50QWNjZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgdG9wLnBvc3RNZXNzYWdl
KCJQQVNTIEhhcyBzdG9yYWdlIGFjY2Vzcy4iLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAwIik7Cisg
ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFoYXNBY2Nlc3MgJiYgIXBvbGljeVNob3VsZEdy
YW50QWNjZXNzKQorICAgICAgICAgICAgICAgICAgICAgICAgdG9wLnBvc3RNZXNzYWdlKCJQQVNT
IE5vIHN0b3JhZ2UgYWNjZXNzLiIsICJodHRwOi8vMTI3LjAuMC4xOjgwMDAiKTsKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgdG9wLnBvc3RNZXNzYWdl
KCJGQUlMICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoYXNBY2Nlc3MgPyAiU3Rv
cmFnZSAiIDogIk5vIHN0b3JhZ2UgIikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJh
Y2Nlc3Mgd2hlbiB0aGVyZSBzaG91bGQgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KHBvbGljeVNob3VsZEdyYW50QWNjZXNzID8gIiIgOiAibm90ICIpICsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaGF2ZSBiZWVuIGFjY2Vzcy4iLCAiaHR0cDovLzEyNy4wLjAuMTo4MDAw
Iik7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiAocmVhc29u
KSB7CisgICAgICAgICAgICAgICAgICAgIHRvcC5wb3N0TWVzc2FnZSgiRkFJTCBkb2N1bWVudC5o
YXNTdG9yYWdlQWNjZXNzKCkgd2FzIHJlamVjdGVkLiBSZWFzb246ICIgKyByZWFzb24sICJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICApOwor
ICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9ImNoZWNrSGFz
U3RvcmFnZUFjY2VzcygpIj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL1Rlc3RFeHBlY3RhdGlv
bnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9UZXN0RXhwZWN0
YXRpb25zCShyZXZpc2lvbiAyMjU5MzQpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTc1MSwyMiArNzUxLDI0IEBAIHdl
YmtpdC5vcmcvYi8xNzIzOTcgWyBEZWJ1ZyBdIGFuaW1hdGlvbnMKIGh0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy91c2VyLWludGVyYWN0aW9uLWluLWNyb3NzLW9yaWdpbi1zdWItZnJh
bWUuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3VzZXIt
aW50ZXJhY3Rpb24tb25seS1yZXBvcnRlZC1vbmNlLXdpdGhpbi1zaG9ydC1wZXJpb2Qtb2YtdGlt
ZS5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdXNlci1p
bnRlcmFjdGlvbi1yZXBvcnRlZC1hZnRlci13ZWJzaXRlLWRhdGEtcmVtb3ZhbC5odG1sIFsgUGFz
cyBdCi1odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZGVueS1zdG9yYWdlLWFj
Y2Vzcy1jcm9zcy1vcmlnaW4taWZyYW1lLmh0bWwgWyBQYXNzIF0KLWh0dHAvdGVzdHMvc3RvcmFn
ZUFjY2Vzcy9yZXF1ZXN0LWFuZC1kZW55LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5k
Ym94ZWQtaWZyYW1lLmh0bWwgWyBQYXNzIF0KLWh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1
ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tbm9uLXNhbmRib3hlZC1p
ZnJhbWUuaHRtbCBbIFBhc3MgXQotaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5k
LWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLmh0bWwg
WyBQYXNzIF0KLWh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNz
LWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGgtdW5pcXVlLW9yaWdpbi5odG1sIFsg
UGFzcyBdCi1odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1j
cm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRob3V0LWFsbG93LXRva2VuLmh0bWwgWyBQ
YXNzIF0KLWh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LXN0b3JhZ2UtYWNjZXNzLXNh
bWUtb3JpZ2luLWlmcmFtZS5odG1sIFsgUGFzcyBdCi1odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3Mv
cmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhv
dXQtYWxsb3ctdG9rZW4uaHRtbCBbIFBhc3MgXQotaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3Jl
cXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS5odG1sIFsg
UGFzcyBdCi1odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFn
ZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1uZXN0ZWQtaWZyYW1lLmh0bWwgWyBQYXNz
IF0KLWh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFj
Y2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1mcm9tLXByZXZhbGVudC1kb21haW4t
d2l0aC1yZWNlbnQtdXNlci1pbnRlcmFjdGlvbi5odG1sIFsgUGFzcyBdCitbIEhpZ2hTaWVycmEr
IF0gaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWRlbnktc3RvcmFnZS1hY2Nl
c3MtY3Jvc3Mtb3JpZ2luLWlmcmFtZS5odG1sIFsgUGFzcyBdCitbIEhpZ2hTaWVycmErIF0gaHR0
cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWRlbnktc3RvcmFnZS1hY2Nlc3MtY3Jv
c3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUuaHRtbCBbIFBhc3MgXQorWyBIaWdoU2llcnJhKyBd
IGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vz
cy1jcm9zcy1vcmlnaW4tbm9uLXNhbmRib3hlZC1pZnJhbWUuaHRtbCBbIFBhc3MgXQorWyBIaWdo
U2llcnJhKyBdIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9y
YWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS5odG1sIFsgUGFzcyBdCitb
IEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1h
Y2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0aC11bmlxdWUtb3JpZ2luLmh0
bWwgWyBQYXNzIF0KK1sgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVx
dWVzdC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS13aXRob3V0
LWFsbG93LXRva2VuLmh0bWwgWyBQYXNzIF0KK1sgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3N0
b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy1zYW1lLW9yaWdpbi1pZnJhbWUuaHRt
bCBbIFBhc3MgXQorWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1
ZXN0LXN0b3JhZ2UtYWNjZXNzLXNhbWUtb3JpZ2luLXNhbmRib3hlZC1pZnJhbWUtd2l0aG91dC1h
bGxvdy10b2tlbi5odG1sIFsgUGFzcyBdCitbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9y
YWdlQWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3Mtc2FtZS1vcmlnaW4tc2FuZGJveGVkLWlm
cmFtZS5odG1sIFsgUGFzcyBdCitbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0cy9zdG9yYWdlQWNj
ZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94
ZWQtbmVzdGVkLWlmcmFtZS5odG1sIFsgUGFzcyBdCitbIEhpZ2hTaWVycmErIF0gaHR0cC90ZXN0
cy9zdG9yYWdlQWNjZXNzL3JlcXVlc3QtYW5kLWdyYW50LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9y
aWdpbi1zYW5kYm94ZWQtaWZyYW1lLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRoLXJlY2VudC11
c2VyLWludGVyYWN0aW9uLmh0bWwgWyBQYXNzIF0KIFsgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3Rz
L3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3Jp
Z2luLXNhbmRib3hlZC1pZnJhbWUtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGgtbm9uLXJlY2Vu
dC11c2VyLWludGVyYWN0aW9uLWJ1dC10cnktYWNjZXNzLWZyb20td3JvbmctZnJhbWUuaHRtbCBb
IFBhc3MgXQogWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0
LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1jcm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1m
cm9tLXByZXZhbGVudC1kb21haW4td2l0aC1ub24tcmVjZW50LXVzZXItaW50ZXJhY3Rpb24tYW5k
LXRyeS1hY2Nlc3MtZnJvbS1yaWdodC1mcmFtZS5odG1sIFsgUGFzcyBdCi1odHRwL3Rlc3RzL3N0
b3JhZ2VBY2Nlc3MvcmVxdWVzdC1hbmQtZ3JhbnQtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2lu
LXNhbmRib3hlZC1pZnJhbWUtZnJvbS1wcmV2YWxlbnQtZG9tYWluLXdpdGhvdXQtdXNlci1pbnRl
cmFjdGlvbi5odG1sIFsgUGFzcyBdCi1odHRwL3Rlc3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1z
dG9yYWdlLWFjY2Vzcy10b3AtZnJhbWUuaHRtbCBbIFBhc3MgXQotaHR0cC90ZXN0cy9zdG9yYWdl
QWNjZXNzL3JlcXVlc3Qtc3RvcmFnZS1hY2Nlc3MtY3Jvc3Mtb3JpZ2luLXNhbmRib3hlZC1pZnJh
bWUtd2l0aG91dC11c2VyLWdlc3R1cmUuaHRtbCBbIFBhc3MgXQorWyBIaWdoU2llcnJhKyBdIGh0
dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0LWFuZC1ncmFudC1zdG9yYWdlLWFjY2Vzcy1j
cm9zcy1vcmlnaW4tc2FuZGJveGVkLWlmcmFtZS1mcm9tLXByZXZhbGVudC1kb21haW4td2l0aG91
dC11c2VyLWludGVyYWN0aW9uLmh0bWwgWyBQYXNzIF0KK1sgSGlnaFNpZXJyYSsgXSBodHRwL3Rl
c3RzL3N0b3JhZ2VBY2Nlc3MvcmVxdWVzdC1zdG9yYWdlLWFjY2Vzcy10b3AtZnJhbWUuaHRtbCBb
IFBhc3MgXQorWyBIaWdoU2llcnJhKyBdIGh0dHAvdGVzdHMvc3RvcmFnZUFjY2Vzcy9yZXF1ZXN0
LXN0b3JhZ2UtYWNjZXNzLWNyb3NzLW9yaWdpbi1zYW5kYm94ZWQtaWZyYW1lLXdpdGhvdXQtdXNl
ci1nZXN0dXJlLmh0bWwgWyBQYXNzIF0KK1sgSGlnaFNpZXJyYSsgXSBodHRwL3Rlc3RzL3N0b3Jh
Z2VBY2Nlc3MvaGFzLXN0b3JhZ2UtYWNjZXNzLWZyb20tcHJldmFsZW50LWRvbWFpbi13aXRoLW5v
bi1yZWNlbnQtdXNlci1pbnRlcmFjdGlvbi5odG1sIFsgUGFzcyBdCitbIEhpZ2hTaWVycmErIF0g
aHR0cC90ZXN0cy9zdG9yYWdlQWNjZXNzL2hhcy1zdG9yYWdlLWFjY2Vzcy1mcm9tLXByZXZhbGVu
dC1kb21haW4td2l0aC1yZWNlbnQtdXNlci1pbnRlcmFjdGlvbi5odG1sIFsgUGFzcyBdCiAKIHdl
YmtpdC5vcmcvYi8xNzM4NjEgWyBSZWxlYXNlIF0gaHR0cC90ZXN0cy93ZWJydGMvZmlsdGVyaW5n
LWljZS1jYW5kaWRhdGUtc2FtZS1vcmlnaW4tZnJhbWUuaHRtbCBbIFBhc3MgVGltZW91dCBdCiB3
ZWJraXQub3JnL2IvMTczODYxIFsgUmVsZWFzZSBdIGh0dHAvdGVzdHMvd2VicnRjL2ZpbHRlcmlu
Zy1pY2UtY2FuZGlkYXRlLWNyb3NzLW9yaWdpbi1mcmFtZS5odG1sIFsgUGFzcyBUaW1lb3V0IF0K
</data>

          </attachment>
      

    </bug>

</bugzilla>